Releases: aiken-lang/aiken
v1.1.7 - 2024-11-19
Release Notes
Changed
- aiken: Move JSON schema help for
check
under a new dedicated flag--show-json-schema
. @KtorZ - aiken-lang: Fix pattern-matching on list wildcard sometimes causing compiler crash following the new decision trees approach. @MicroProofs
- uplc, aiken, aiken-lang: Update internal dependencies to pallas-0.31.0. @KtorZ
Install aiken 1.1.7
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/aiken-lang/aiken/releases/download/v1.1.7/aiken-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy ByPass -c "irm https://github.com/aiken-lang/aiken/releases/download/v1.1.7/aiken-installer.ps1 | iex"
Install prebuilt binaries into your npm project
npm install @aiken-lang/aiken@1.1.7
Install prebuilt binaries via Homebrew
brew install aiken-lang/tap/aiken
Download aiken 1.1.7
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-musl.tar.gz | x64 MUSL Linux | checksum |
v1.1.6 - 2024-11-13
Release Notes
Added
- aiken: Optionally provide blueprint file location when using
blueprint apply
. @Riley-Kilgore - aiken: Output test results as structured JSON when the target output is not a TTY terminal. @Riley-Kilgore, @KtorZ
Changed
- aiken: Fix validator selection for
apply
,address
andpolicy
commands. Parameters are also now correctly applied to all handlers of a given validator, instead of needing to be manually targetted one-by-one. @KtorZ - aiken: Add more flexibility around the management of Plutus blueprint files for
build
,address
,policy
andapply
commands. See #1055. @KtorZ - aiken: Rename
--filter_traces
to--trace_filter
for more consistency with--trace_level
. An alias for--filter_traces
still exists for backward compatibility. @KtorZ - aiken-project: Fix
aiken docs
wrongly formatting list constants as tuples. See #1048. @KtorZ - aiken-project: Fix
aiken docs
source linking crashing when generating docs for config modules. See #1044. @KtorZ - aiken-project: Fix
aiken docs
generating very long lines for constants. @KtorZ - aiken-lang: Leverage Decision Trees for compiling pattern matches to UPLC. @MicroProofs
- aiken-lang: Rework optimization passes to safely reduce different kinds of patterns for each pass over the uplc. @MicroProofs
- aiken-lang: Implement a looping mechanism to reduce uplc with deletion optimizations until term count remains the same. @MicroProofs
Removed
- N/A
Install aiken 1.1.6
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/aiken-lang/aiken/releases/download/v1.1.6/aiken-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy ByPass -c "irm https://github.com/aiken-lang/aiken/releases/download/v1.1.6/aiken-installer.ps1 | iex"
Install prebuilt binaries into your npm project
npm install @aiken-lang/aiken@1.1.6
Install prebuilt binaries via Homebrew
brew install aiken-lang/tap/aiken
Download aiken 1.1.6
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-musl.tar.gz | x64 MUSL Linux | checksum |
v1.1.5 - 2024-10-19
Release Notes
Added
- N/A
Changed
- uplc: Fix costing of byteStringToInteger builtins. @MicroProofs
- aiken-lang: Fix data-type reification from
Void
; somehow missing from known definition 🤦. @KtorZ
Removed
- N/A
Install aiken 1.1.5
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/aiken-lang/aiken/releases/download/v1.1.5/aiken-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy ByPass -c "irm https://github.com/aiken-lang/aiken/releases/download/v1.1.5/aiken-installer.ps1 | iex"
Install prebuilt binaries into your npm project
npm install @aiken-lang/aiken@1.1.5
Install prebuilt binaries via Homebrew
brew install aiken-lang/tap/aiken
Download aiken 1.1.5
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-musl.tar.gz | x64 MUSL Linux | checksum |
v1.1.4 -2024-10-01
Release Notes
Added
- N/A
Changed
- aiken-project: Generate empty redeemer for
else
handler, to keep full compliance with the blueprint spec. @KtorZ - aiken-lang: Forbid constants evaluating to generic or unbound functions. Same restrictions as for validators or any exported UPLC programs apply here. @KtorZ & @MicroProofs
- aiken-lang: Fix compiler crash on trace + expect as last expression of a clause. See #1029. @KtorZ
- aiken-lang: Fix redundant warning on introduced identifiers when destructuring validator params. @KtorZ
- aiken-lsp: Compile project using verbose tracing, to avoid having the language server complain about unused imports. @KtorZ
- uplc: Fix (again 😬) cost-models for PlutusV1 & PlutusV2. @MicroProofs
Removed
- N/A
Install aiken 1.1.4
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/aiken-lang/aiken/releases/download/v1.1.4/aiken-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy ByPass -c "irm https://github.com/aiken-lang/aiken/releases/download/v1.1.4/aiken-installer.ps1 | iex"
Install prebuilt binaries into your npm project
npm install @aiken-lang/aiken@1.1.4
Install prebuilt binaries via Homebrew
brew install aiken-lang/tap/aiken
Download aiken 1.1.4
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-musl.tar.gz | x64 MUSL Linux | checksum |
v1.1.3 - 2024-09-20
Release Notes
Added
- N/A
Changed
- aiken-project: Fix documentation link-tree generation messing up with modules when re-inserting the same module. @KtorZ
- aiken-project: Provide intermediate feedback when looking for counterexamples during property tests. @KtorZ
- aiken-lang: Fix formatter adding extra unnecessary newlines after literal lists clause values or assignments. @KtorZ
- aiken-lang: Fix formatting of long multi-line if/is expressions. @KtorZ
- aiken-lang: Fix extraneous white-space added by the formatter after multiline alternative patterns. @KtorZ
- aiken-lang: Fix incorrect warning about unused variable when softcasting without explicit right-pattern. @KtorZ
- aiken-lang: Fix soft cast and hard cast on same type issues that lead to validator errors. @MicroProofs
- aiken-lang: Bls constants are automatically converted to a hoisted compressed form with uncompress builtin call. @MicroProofs
- uplc: Fix cost-models for PlutusV1 & PlutusV2. @MicroProofs
Removed
- N/A
Install aiken 1.1.3
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/aiken-lang/aiken/releases/download/v1.1.3/aiken-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -c "irm https://github.com/aiken-lang/aiken/releases/download/v1.1.3/aiken-installer.ps1 | iex"
Install prebuilt binaries into your npm project
npm install @aiken-lang/aiken@1.1.3
Install prebuilt binaries via Homebrew
brew install aiken-lang/tap/aiken
Download aiken 1.1.3
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 |
v1.1.2 - 2024-09-13
Release Notes
Added
- N/A
Changed
- aiken-lang: Fix issues with static recursive optimization. See #1009 @MicroProofs
- aiken-lang: Aiken IR now interns variables while building up to ensure uniqueness for local vars. @MicroProofs
- aiken-lang: Fix reification of
Data
(failing to reify) &PRNG
(missing variants' arguments). @KtorZ - aiken-lang: Adjust reification of
String
to be shown as plain UTF-8 text strings (instead of hex-encoded byte array). @KtorZ - aiken-lang: Fix formatting of long if-condition over multiline. @KtorZ & @MicroProofs
- aiken-lang: Fix formatting of standalone logical binary chains (
and
&or
) in functions. @KtorZ - uplc: Fix script context generation failure on missing datum when evaluating transactions. @solidsnakedev
Removed
- N/A
Install aiken 1.1.2
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/aiken-lang/aiken/releases/download/v1.1.2/aiken-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -c "irm https://github.com/aiken-lang/aiken/releases/download/v1.1.2/aiken-installer.ps1 | iex"
Install prebuilt binaries into your npm project
npm install @aiken-lang/aiken@1.1.2
Install prebuilt binaries via Homebrew
brew install aiken-lang/tap/aiken
Download aiken 1.1.2
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 |
v1.1.1 - 2024-09-10
Release Notes
Added
- N/A
Changed
- aiken-lang: Fix validator's else handler generation. See #1015 @KtorZ
- aiken-lang: Fix underflow in error message reported by the validator arity. See #1013 @KtorZ
- aiken-lang: Fix list-pattern needlessly formatting over multiple lines. @KtorZ
- aiken-lang: Fix formatter on long alternative patterns spanning over multiple lines. @KtorZ
- aiken-lang: Fix needed parentheses under trace-if-false operator for todo, fail, unop & pipelines; removed when formatting. @KtorZ
- aiken-lang: Fix formatter removing curly braces around multi-line constants. It's fine to not have curly braces, but it's the Aiken signature after all. @KtorZ
- aiken-lang: Improve LSP suggestion for module imports. @Riley-Kilgore
Removed
- N/A
Install aiken 1.1.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/aiken-lang/aiken/releases/download/v1.1.1/aiken-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -c "irm https://github.com/aiken-lang/aiken/releases/download/v1.1.1/aiken-installer.ps1 | iex"
Install prebuilt binaries into your npm project
npm install @aiken-lang/aiken@1.1.1
Install prebuilt binaries via Homebrew
brew install aiken-lang/tap/aiken
Download aiken 1.1.1
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 |
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.
v1.0.29-alpha - 2024-06-06
Release Notes
Added
- aiken-lang: new LSP quickfix for 'use let' warning. @KtorZ
Changed
- aiken-lang: the keyword
fail
on property-based test semantic has changed and now consider a test to succeed only if every execution of the test failed (instead of just one). The previous behavior can be recovered by adding the keywordonce
afterfail
. @KtorZ
Fixed
- aiken-lang: fixed the number of 'after x tests' number reported on property test failure, which was off by one. @KtorZ
- aiken-lang: fixed parsing of single hex digits. @KtorZ
Install aiken 1.0.29-alpha
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/aiken-lang/aiken/releases/download/v1.0.29-alpha/aiken-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -c "irm https://github.com/aiken-lang/aiken/releases/download/v1.0.29-alpha/aiken-installer.ps1 | iex"
Install prebuilt binaries into your npm project
npm install @aiken-lang/aiken@1.0.29-alpha
Install prebuilt binaries via Homebrew
brew install aiken-lang/tap/aiken
Download aiken 1.0.29-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 |
v1.0.28-alpha - 2024-05-23
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
andPairs
. @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 |