![]() Aiken's build system uses an internal global cache system to avoid downloading the same packages over and over across projects. However, prior to this commit, the cache key would be based of the dependency version which can be either: - A commit hash - A branch or tag name However, in the latter case, it means that the very first time we end up fetching a dependency will lock its version forever (or until the cache is cleared). This was inconvenient. This commit changes that so that we use not only a branch name as cache key, but additionally, the etag returned by the GitHub API server. The etag is part of the HTTP headers, so it can be fetched quickly using a simple HEAD request. It changes whenever the content behind the endpoint changes -- which happens to be exactly what we want. With this, we can quickly check whether an upstream package has been updated and download the latest version should users have specified a branch name as a version number. For example, my current cache now looks as follow: ``` /Users/ktorz/Library/Caches/aiken/packages/ ├── aiken-lang-stdlib-1cedbe85b7c7e9c4036d63d45cad4ced27b0d50b.zip ├── aiken-lang-stdlib-6b482fa00ec37fe936c93155e8c670f32288a686.zip ├── aiken-lang-stdlib-7ca9e659688ea88e1cfdc439b6c20c4c7fae9985.zip └── aiken-lang-stdlib-main@04eb45df3c77f6611bbdff842a0e311be2c56390f0fa01f020d69c93ff567fe5.zip ``` |
||
---|---|---|
.github | ||
crates | ||
examples | ||
.editorconfig | ||
.gitignore | ||
CHANGELOG.md | ||
CONTRIBUTING.md | ||
Cargo.lock | ||
Cargo.toml | ||
LICENSE | ||
README.md | ||
bonnie.toml |
README.md
QuickStart
Prerequisites
For now you'll need rust installed, see rustup.
Getting started
In case you have fresh installation of rustup
you might need to do:
rustup install stable
$ cargo install --git https://github.com/aiken-lang/aiken.git
$ aiken --help
How to use
For more information please see the user manual.
Roadmap
Aiken defines its roadmap using Github Milestones. The roadmap isn't set in stone, but gives a high-level overview of where the project is headed for.
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.