Releases: zerodaycode/Zork
v0.11.2
v0.11.1
feat: v0.11.1
v0.11.0
feat: release v0.11.0 - clang's import std and import std.compat
v0.10.4
fix: Allowing the user to declare absolute file paths in the configur…
v0.10.3
fix: The "compile_commands" file of the generated compilation databas…
v0.10.2
fix: The driver-path cfg option wasn't being picked correctly
[Upstream CI Workflows Updates - No source code changes from v0.10.0]
v0.10.1 fix: Disabling manual set of clang-16 of the clang's compiler driver …
v0.10.0
[0.10.0] - 2024 - 08 - 07
Feature
-
Breaking - Targets:
Executable
andTests
toml entries are removed in favour of[targets.<target_identifier>]
entries.
Each targets allow the user to build N independent final products, being thesebinaries (executables)
for now, while static
and dynamic libs will be implemented in the upcoming releases -
NOTE: A target identifier is the string value after the
.
on any[targets.<target_identifier>]
-
Added a
--targets
CLI flag to manually specify what targets wants the user to be processed in the current invocation.
Ex:--targets target1,target2,tests1,tests2,tests3
Changes
-
Tests
:test
command now only runs those targets which they contain the stringtest
in its target identifier -
breaking -
project_root
property (under the[compiler]
attribute) is renamed tocode_root
Performance
- The codebase suffered a major reorganization and re-factorization. These are all internal changes that aren't
exposed through the public API. The most notorious points are:- The introduction of flyweights data-structures, that
allows to reduce the program's memory footprint dramatically, and also the size of the generated cache files, being only
created once and then only joined for being passed into iterable views that makes the full command line of every translation
unit. - The amount of required code lines that was basic doing the same job generating arguments for every different
kind of translation unit - All the generated commands are now stored in the cache as a separated entity, and they are only regenerated
if the translation unit was modified since the last program run - The project model is now cached, and only rebuilt if the configuration file changes between different program iterations
- All the translation units are now processed in only one unique procedure, since they are managed as trait objects
in the main functions of the commands generation, and then small helpers creates, depending on the kind of translation unit
processed the different arguments required for the source file
- The introduction of flyweights data-structures, that
Misc and or Internal
- Several internal APIs that uses helpers have received new unit tests, to ensure the robustness of their job
- There's a lot of legacy code removed, only maintained for backwards-compatibility reasons.
System headers (GCC and Clang)
that are importable translation units as modules are now translation units as well- We managed to satisfy the Rust borrow checker while we use the project model as read-only data, while the cache
is handled exclusively via&mut
(mutable references), allowing the codebase to be extremely fast and performant - Other minor optimizations has been applied to procedures. We remove a lot of allocation points thanks to the newly introduced
clone-on-write
idiom, to handle the data that comes borrowed since the configuration file up until the end of the process
v0.9.0
Now we fully support MSVC
to be able to use the modular standard libraries std
and std.compat
within the user's code
v0.8.8
fix: Updating broken dependencies