v1.1.0 - 2024-09-03
Release Notes
Added
-
aiken-lang: also authorize (complete) patterns in function arguments list instead of only variable names. @KtorZ
-
aiken-lang: new syntax for soft casting otherwise known as
if/is
. See #959 or Control Flow - soft casting for more details. @rvcas -
aiken-lang: optimization: pre-evaluate constant arguments to lambdas when safe to do so. @MicroProofs
-
aiken-lang: infer type when immediately possible during a patterned type-cast. See #969. @KtorZ
-
aiken-lang: add support for
mk_cons
andmk_pair_data
builtins. See #964. @KtorZ -
aiken-lang: pattern-matching on bytearrays is now available. See #989. @KtorZ
-
aiken-project: conditional configuration and environment. See #937. @KtorZ
-
aiken-project: warning on compiler version mismatch. See de870e2. @rvcas
-
aiken-project: source links to generated documentation for types, constants and functions. @KtorZ
-
aiken-project: comments containing Markdown section headings (
#
,##
,###
etc.) will now be preserved and rendered in generated documentation. @KtorZ -
aiken-project: modules starting with
@hidden
in their docs will be skipped from docs generation. @KtorZ -
aiken-project: preserve type-aliases as titles in blueprint generated schemas. @KtorZ
-
uplc: support evaluation of Plutus V3 transactions, including new purposes introduced in Conway. @KtorZ
Changed
-
aiken-lang: zero-arg functions are no longer evaluated at compile-time. However, constants can now hold any expression and are fully evaluated at compile-time. Use
const
whenever a zero-arg function was used, unless you do want to defer execution. @KtorZ @MicroProofs. -
aiken-lang: fix zero-arg builtins
mk_nil_data
andmk_nil_pair_data
invokation. @KtorZ -
aiken-lang: rename some builtins. @KtorZ
old name new name mk_nil_data
new_list
mk_pair_data
new_pair
mk_nil_pair_data
new_pairs
-
aiken-lang: duplicate import lines are now automatically merged instead of raising a warning. However, imports can no longer appear anywhere in the file and must come as the first definitions. @KtorZ
-
aiken-lang: remove warning on discarded expect, allowing to keep 'side-effects' when necessary. See #967. @KtorZ
-
aiken-lang: allow expect as last (or only) expression in function body, when clauses and if branches. Such expressions unify with
Void
. See #1000. @KtorZ -
aiken-lang: allow tests to return
Void
. Tests that returnVoid
are treated the same as tests that returnTrue
. See #1000. @KtorZ -
aiken-lang: rework traces to be (1) variadic, (2) generic in its arguments and (3) structured. @KtorZ
In more details:
-
Enables the
trace
keyword to take one, two or any argument really separated by comma after the first. For example:trace @"a classic trace" // .. trace @"condition_1": @"foo" // ... trace @"condition_2": @"foo", @"bar"
-
Enables the
trace
keyword to not only take strings as arguments; but any
data-type that is serialisable (i.e. that can be cast to Data). It is fundamentally identical to calling thecbor.diagnostic
function from the standard lib; except that this is done and glued with the rest of the trace automatically.trace @"condition_1": [1, 2, 3] // ... let my_var = Some("foo") trace my_var
-
Changes the behavior of the
--trace-level compact
mode to now:
- remove trace-if-false (
?
operator) traces entirely in this mode; - only keep the label (first trace argument) and error when it isn't a string.
See also #978.
-
-
aiken-lang: rework formatter behaviour on long-lines, especially in the presence of binary operators. @KtorZ
-
aiken-lang: provide better errors for unknown types used in cyclic type definitions. @KtorZ
-
aiken-project: fix blueprint's apply truncating last character of outputs. See #987. @KtorZ
-
aiken-project: provide better error (include input ref) when inputs are missing during transaction evaluation. See #974. @KtorZ
-
aiken-project: module inhabitants are no longer alphabetically sorted when generating documentation. Instead, the order in which they are defined in the module is used. @KtorZ
-
aiken-project: the sidebar links to modules within a package is now fully hierarchical and (hopefully) better-looking. @KtorZ
Removed
Install aiken 1.1.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/aiken-lang/aiken/releases/download/v1.1.0/aiken-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -c "irm https://github.com/aiken-lang/aiken/releases/download/v1.1.0/aiken-installer.ps1 | iex"
Install prebuilt binaries into your npm project
npm install @aiken-lang/aiken@1.1.0
Install prebuilt binaries via Homebrew
brew install aiken-lang/tap/aiken
Download aiken 1.1.0
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 |
Additional acknowledgements
- @Riley-Kilgore for helping out with the LSP
- @jmhrpr, @rober-m, @hadelive for finding and/or fixing various small issues.