Skip to content

Releases: zerodaycode/Zork

v0.11.2

11 Sep 18:59
Compare
Choose a tag to compare
fix: updated Cargo.lock

v0.11.1

25 Aug 12:56
Compare
Choose a tag to compare
feat: v0.11.1

v0.11.0

23 Aug 16:09
Compare
Choose a tag to compare
feat: release v0.11.0 - clang's import std and import std.compat

v0.10.4

18 Aug 09:07
Compare
Choose a tag to compare
fix: Allowing the user to declare absolute file paths in the configur…

v0.10.3

12 Aug 20:37
Compare
Choose a tag to compare
fix: The "compile_commands" file of the generated compilation databas…

v0.10.2

10 Aug 15:32
Compare
Choose a tag to compare
fix: The driver-path cfg option wasn't being picked correctly

[Upstream CI Workflows Updates - No source code changes from v0.10.0]

10 Aug 10:48
Compare
Choose a tag to compare
v0.10.1

fix: Disabling manual set of clang-16 of the clang's compiler driver …

v0.10.0

08 Aug 20:17
Compare
Choose a tag to compare

[0.10.0] - 2024 - 08 - 07

Feature

  • Breaking - Targets: Executable and Tests toml entries are removed in favour of [targets.<target_identifier>] entries.
    Each targets allow the user to build N independent final products, being these binaries (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 string test in its target identifier

  • breaking - project_root property (under the [compiler] attribute) is renamed to code_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

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

25 May 09:44
a097c75
Compare
Choose a tag to compare

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

13 Apr 17:21
Compare
Choose a tag to compare
fix: Updating broken dependencies