Skip to content

v1.0.28-alpha - 2024-05-23

Compare
Choose a tag to compare
@github-actions github-actions released this 24 May 01:46
· 388 commits to main since this release
c9a1519

Release Notes

Added

  • aiken: install shell completions automatically. @freexploit
  • aiken: added export command that exports regular function definitons. @rvcas
  • aiken-project: compiler version field to aiken.toml @rvcas
  • aiken-project: plutus version field to aiken.toml @rvcas
  • aiken-lsp: hover and goto definition support on list tail. @rvcas
  • aiken-lsp: hover on prop test via expression. @rvcas
  • aiken-lang: new builtin types in the prelude Pair and Pairs. @KtorZ @MicroProofs
  • aiken-lang: Codegen now generates uplc version 1.1.0 scripts when running build with plutus v3.

Fixed

  • aiken-lang: formatter should not erase pub on validators. @rvcas
  • aiken-lang: error on using tuple index when a tuple is returned by a generic function. @rvcas
  • aiken-lang: backpassing with expect gives a warning on pattern matches. @rvcas
  • aiken-lang: fix a regression in the Type-checker introduced in v1.0.25-alpha regarding types comparison. See #917. @KtorZ
  • aiken-lang: fix incongruous generics after type-checking which caused [] to be treated as a list in cases where it needed to be an empty map primitive. See #922. @KtorZ
  • aiken-lang: fix for generic constrs being used as functions causing type mismatch errors. @MicroProofs
  • aiken-lang: fix for error occuring when a field holds Data that is not a constr type when compiler traces are on. @MicroProofs
  • aiken-lang: fix for curry optimization involving 2 constants #945. @MicroProofs
  • aiken-lang: fix compiler wrongly requiring MillerLoopResult to be 'serialisable' when manipulated as a top-level value. See #921. @KtorZ
  • aiken-lang: fix type-checker oversight regarding serialisation of generics. See #939. @KtorZ
  • aiken-lang: fix type-checker not raising error when comparing non-serialisable types. See #940. @KtorZ
  • aiken-project: show a warning when ignoring modules in lib/validator because they have an invalid name. See #916. @KtorZ

Changed

Warning

BREAKING-CHANGE

2-tuples (a, b) are now treated the same as 3+ tuples -- which directly impacts the way that Aiken now deserialise those, especially when nested inside a List.

To deserialize into a list of 2-tuple (List<(a, b)>), one is now expected to provide a CBOR array of arrays (of 2 elements). Previously, this would require to provide a CBOR map! The downside of the latter is that CBOR serialization libraries do not necessarily preserve the order of keys in a map which could cause issues down the line, in particular with Aiken's dictionnaries.

To recover the old behavior when desired, Aiken introduces a new type Pair<a, b> to the language. So any existing program can be migrated by switching any occurences of (a, b) to Pair<a, b>.

However, it is often preferable to use 2-tuples where possible. The main place you will see usage of Pair is in the script context because its form is imposed by the ledger.

  • aiken-lang: altered internal representation of 2-tuples to distinguish them from pairs. @KtorZ @MicroProofs
  • aiken-lang: some more code gen cleanup. @MicroProofs
  • aiken-lang: new optimization for wrapped builtins found in the stdlib. @MicroProofs
  • aiken-project: slightly restyle warnings to be less noisy. @KtorZ

Install aiken 1.0.28-alpha

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/aiken-lang/aiken/releases/download/v1.0.28-alpha/aiken-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -c "irm https://github.com/aiken-lang/aiken/releases/download/v1.0.28-alpha/aiken-installer.ps1 | iex"

Install prebuilt binaries into your npm project

npm install @aiken-lang/aiken@1.0.28-alpha

Install prebuilt binaries via Homebrew

brew install aiken-lang/tap/aiken

Download aiken 1.0.28-alpha

File Platform Checksum
aiken-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
aiken-x86_64-apple-darwin.tar.gz Intel macOS checksum
aiken-x86_64-pc-windows-msvc.tar.gz x64 Windows checksum
aiken-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum