Go to file
KtorZ 451737237e Fix blueprint generation for recursive types.
This was a bit tricky and I ended up breaking things down a lot and
  trying different path. This commit is the result of the most
  satisfying one.

  It introduces a new 'concept' and types: Definitions and Reference.
  These elements are meant to reflect JSON pointers and JSON-schema
  definitions which we now use for pretty much all user-defined
  data-types.

  In fact, Schemas are no longer inlined, but are always referencing
  some schema under "definitions".

  This indirection is necessary in order to cope with recursive types.
  And while it's only truly necessary for recursive types, using it
  consistently makes it both easier to produce and easier to consume.

  ---

  The blueprint generation for recursive types here also works thanks to
  the 'Definitions' data-structure wrapper around a BTreeMap. This uses
  a strategy where:

  (1) schemas are only generated if they haven't been seen before
  (2) schemas are marked as seen BEFORE actually being generated (to
  effectively stop a recursive generation).

  This relies on one important aspect: the key must be uniquely
  identifying a given schema. Which means that we have to monomorphize
  data-types with generic parameters also here, and use keys that are
  specialized in one data-type.

  ---

  In this large overhaul we've also lost one thing which I didn't bother
  re-introducing yet to keep the work manageable: title for record
  fields. Before, we use to pull those from record constructor when
  available, yet now, every record constructor has been replaced by a
  `$ref`. We could theoritically attach a title to the reference. I'll
  try to quickly add that in a later commit.
2023-03-12 12:44:49 -04:00
.github fix: gh actions bump cargo2nix unstable 2023-03-09 09:48:38 +00:00
aikup chore: better curl 2023-02-28 01:08:48 -05:00
crates Fix blueprint generation for recursive types. 2023-03-12 12:44:49 -04:00
examples add another validator 2023-03-12 00:25:26 -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
.gitattributes Add support for Nix flakes. 2023-02-07 13:16:17 +01:00
.gitignore Define 'local' gitignore for examples' packages. 2023-01-06 13:30:56 +01:00
CHANGELOG.md fix(check): record field access properly restricted to single constr types 2023-03-08 23:50:16 -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: introduce miette into uplc 2023-03-08 10:19:35 +01:00
Cargo.nix merge 2023-03-09 09:41:33 +00:00
Cargo.toml chore: remove debug symbols in release 2023-02-01 18:53:11 -05:00
LICENSE Tweak LICENSE 2022-12-20 05:47:13 +01:00
README.md feat: new release job and some release notes 2023-02-23 18:52:56 -05:00
flake.lock merge 2023-03-09 09:41:33 +00:00
flake.nix merge 2023-03-09 09:41:33 +00:00

README.md

Aiken Aiken

A modern smart contract platform for Cardano

Licence Crates.io Tests


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

Alternatively nix builds are available via flakes.

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.