Go to file
KtorZ 3a5f77da12 Invalidate cache using etag for deps by branch
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
  ```
2023-01-14 11:51:18 -05:00
.github Try fixing acceptance step in CI. 2023-01-06 14:23:46 +01:00
crates Invalidate cache using etag for deps by branch 2023-01-14 11:51:18 -05:00
examples chore: fmt acceptance test 40 2023-01-13 14:55:18 -05:00
.editorconfig rename examples/tests/{a,b,c,d,e,f} into examples/acceptance_tests/00{1,2,3,4,5,6} 2022-12-14 09:45:24 +01:00
.gitignore Define 'local' gitignore for examples' packages. 2023-01-06 13:30:56 +01:00
CHANGELOG.md feat(aiken-project): use rayon to run tests in parallel 2023-01-09 18:12:18 -05:00
CONTRIBUTING.md chore: clean some links up so they point to the new repo 2022-12-17 11:19:02 -05:00
Cargo.lock feat(aiken-project): use rayon to run tests in parallel 2023-01-09 18:12:18 -05:00
Cargo.toml fix: include return type in one function def 2022-10-04 16:32:32 -04:00
LICENSE Tweak LICENSE 2022-12-20 05:47:13 +01:00
README.md Align README's tagline with website. 2023-01-13 10:18:03 +01:00
bonnie.toml chore: retire mdbook 2022-12-15 14:17:36 -05:00

README.md

Aiken Aiken

A modern smart contract platform for Cardano

Licence Crates.io Rust Build


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.