![]() This changes ensure that we only compile modules from dependencies that are used (or transitively used) in the project. This allows to discard entire compilation steps at a module level, for modules that we do not use. The main goal of this change isn't performances. It's about making dependencies management slightly easier in the time we decide whether and how we want to manage transitive dependencies in Aiken. A concrete case here is aiken-lang/stdlib, which will soon depend on aiken-lang/fuzz. However, we do not want to require every single project depending on stdlib to also require fuzz. So instead, we want to seggregate fuzz API from stdlib in separate module, and only compile those if they appear in the pruned dependency graph. While the goal isn't performances, here are some benchmarks analyzing the performances of deps pruning on a simple project depends on a few modules from stdlib: Benchmark 1: ./aiken-without-deps-pruning check scratchpad Time (mean ± σ): 190.3 ms ± 101.1 ms [User: 584.5 ms, System: 14.2 ms] Range (min … max): 153.0 ms … 477.7 ms 10 runs Benchmark 2: ./aiken-with-deps-pruning check scratchpad Time (mean ± σ): 162.3 ms ± 46.3 ms [User: 572.6 ms, System: 14.0 ms] Range (min … max): 142.8 ms … 293.7 ms 10 runs As we can see, this change seems to have an overall positive impact on the compilation time. |
||
---|---|---|
.github | ||
aikup | ||
crates | ||
examples | ||
.editorconfig | ||
.gitattributes | ||
.gitignore | ||
CHANGELOG.md | ||
CONTRIBUTING.md | ||
Cargo.lock | ||
Cargo.toml | ||
LICENSE | ||
README.md | ||
flake.lock | ||
flake.nix |
README.md
Installation
How to use
For more information please see the user manual.
Contributing
Want to contribute? See CONTRIBUTING.md to know how.
Note
The name comes from Howard Aiken, an American physicist and a pioneer in computing.