- aiken: add ability to force warnings to cause a failing exit code on check, build, and docs
- aiken-lang: automatically resolve and fetch latest revision of a package on build when a branch is specified as version
- uplc: trim whitespace when loading files with hex strings to avoid confusing errors #720
- uplc: uplc
Constant::Data
formatting - aiken-lang: empty records properly parse as record sugar
- aiken-lang: escape sequences are now properly preserved after formatting
- aiken-lang: fixed parser ambiguity when using record constructor in if conditions followed by single-line var expressions #735
- aiken-project: when a module name has a hyphen we should behave like rust and force an underscore
- aiken:
aiken new
no longer accept an--empty
flag. Projects are generated empty by default.
- aiken: Parameters for
blueprint apply
can now be built interactively.
- aiken-lang: Opaque types are now properly handled in code gen (i.e. in code gen functions, in datums/redeemers, in from data casts).
- aiken:
blueprint apply
now expects only one OPTIONAL argument. When not provided, the parameter will be prompted interactively. - aiken-lang: New tests for code gen around opaque types.
- aiken-lang:
traverse_with_tree
now has a boolean parameter to determine whenwith
is called.
- aiken:
blueprint apply
no longer accept a target directory. The command has to be executed within the same directory as theaiken.toml
.
- aiken:
new
command now fetches latest stdlib version - aiken-lang: new
and
andor
chainingand { 1 == 1, or { 2 == 2, 3 != 2, True, }, }
- aiken-lang: significantly improved pattern matching exhuastiveness checking
- aiken-lang: Tx Simulate now returns a list of execution budgets for each redeemer instead of calculating the total units required to run all the scripts.
- aiken-lang: Now code gen uses a tree abstraction to build the Aiken Intermediary Representation. This now fixes quite a number of minor issues while making the code more maintainable. This is a large leap towards a stable version and future updates will be on further simplifying and stabilizing the tree abstraction.
- aiken-lang: Zero argument anonymous functions now are implemted as a delayed function body and calling them simply does force
- aiken-lang: Matching on int in expect and when cases is now implemented
- aiken-lang: Using assign in nested pattern matches is now implemented
- aiken-lang: Using List as a validator params only checks the type is a list and does not attempt to check each item
- aiken-lang: Recursion optimization to prevent static parameters from being passed through every recursion
- aiken-lang: aliased import of single type throws compiler error
- aiken-lsp: fix diagnostics and formatting on windows vscode
- aiken: decode should always print to textual
- uplc: pair type formatting
- aiken-lang:
expect foo == bar
desugars intoexpect True = foo == bar
- aiken-lang: fail, todo, and trace had issues with sequences and expressions
- aiken: added a
blueprint policy
command to compute the policy ID of a minting script - uplc: parsing and pretty printing for PlutusData
- aiken-lang: Prevent mutual recursion caused by conflicting function names for generic expect type
- aiken-lang: UPLC evaluation of large integers literals (> max u64)
- aiken-lang: Parsing of error / todo keywords in when cases
- aiken-lang: Parsing of negative integer patterns and constants
- aiken-lang: automatically infer unused validator args as
Data
- aiken-lang: test crashing when referencing validators
- aiken: mem and cpu values were not showing in white terminals, switched to cyan
- uplc: make list type and pair type parsing match the plutus core spec
- aiken-lang: rename
error
tofail
- aiken-lang: new failing test syntax
test name() fail {
-
aiken: enhance
aiken new
-
aiken-lang: Binary operator are now treated like first-class citizen in expressions. In particular, they can be used as function arguments directly:
compare_with(a, >=, b) == compare_with(a, fn(l, r) { l >= r }, b)
-
aiken-lang: Make traces produced by expect dependent on the value of the tracing flag.
- aiken-lang: Explain discards and expect a bit better in the unused var warning
- aiken-lang: Fix expect _ = ... not including the cast from data logic if the type is data and right hand has a type annotation
- aiken-lang: Fix for the final clause of a when expecting another clause afterwards in nested list cases.
- aiken-lang: Fix for all elements were being destructured in tuple clauses even if not used.
- aiken-lang: Fix for tuple clause not consuming the next case causing incomplete contracts. Now tuple clause will always consume the next case unless it is the final clause
- aiken-lang: Fix for builtins using the incorrect data to type conversion when used as a function param.
- aiken: added panic hook to present a link to make a bug report
- aiken-lang: fmt for
module.Constr { field: value }
- aiken-lang: Issue where using var pattern in a when was passing the constr index instead of the constr
- aiken-lang: Issue where expecting on a list had unexpected behaviors based on list length.
- aiken-lang: Issue where expecting on a list from data was using the wrong expect cast for the list tail.
N/A
- aiken-lang: numbers can now be written as hexadecimal digits (e.g.
0x42
) - aiken-lang: numbers can now be written using numeric underscores as
separator (e.g.
1_000_000
)
- aiken-lang: fixed operator precedences, in particular the pipe operator
(
|>
) which is now of the lowest precedence. - aiken-project: need to convert to Program before dumping to uplc
- aiken-lang: fmt crashing when comment at end of file with no newline
- aiken-lang: Fixed error when using nested boolean checks in when conditions
- aiken-lang: Had the wrong conversion for constant maps to plutus data. Fixed to check for right conversion
- aiken-lang: Zero arg functions were grabbing extra dependencies they didn't need to
- aiken-lang: Rearrange list clauses and fill in gaps now handles nested patterns in a uniform way
- aiken-lang: Fixed discards in records that were being sorted incorrectly leading to type issues
N/A
- aiken-lang: Add a way to express that tests can return an error
- uplc: Fix pair formatting
- aiken-lang: forced new line in formatter for assignments
- aiken-lang: Incorrect parsing of generic type annotation prefixed with module
- aiken-lang: Incorrect handling of comments at end of a file when newline not present
- aiken-lang: Record update in code gen is now flexible enough to support fields being passed in any order.
- aiken-lang: Record update now produces better uplc code then creating a record by the normal instantiation.
- aiken-lang: Issue with Constructors being passed as functions to other function arguments was fixed.
- aiken-lang: show module name when type mismatch names are the same
- aiken: make
uplc flat
anduplc unflat
subcommands more consistent and flexible
- aiken-lang: Fix for cases where identity function is used as a param to a function or assigned to a var.
- aiken-lang: Fix for free unique caused by code gen function having a missing dependency.
- aiken-lang: Add Record Module support for records with 0 fields
- aiken-lang: Added some optimization tests
- aiken-lang: Added an Aiken to uplc conversion tests on validators
- aiken-lang: Added some uplc builder functions for builtin creation
- aiken-lang: Added optimization where identity functions called on an arg are reduced to just the arg.
- aiken-lang: Fix for nested constructors where the type had a single constructor. The fields exposed were not being added to the Air.
- aiken-lang: ChooseUnit builtin uses a more efficient way of handling the first arg (unit) by just assigning to lambda
- aiken-lang: Negative numbers now show up as a constant instead of 0 - that number
- aiken-lang: Expect on constructors without field maps no longer panics
- aiken-lang: Expect on constructors with discard as assigned field names now no longer throws free unique
- aiken-lang: Refactor how builtins are processed to uplc in code gen
- aiken-lang: added optimization to help prevent unnecessary data wraps or unwraps
- aiken-lang: optimization to strip unnecessary lambdas
- aiken-lang: implement Clone for ParseError and tipo::Error for the playground
- aiken-project: added end to end tests on conversion from aiken lang to uplc
- aiken: fixed 'new' instructions to properly show project name and folder
- aiken-lang: Add name of var to the unused var warning
- aiken-lang: fix expect on an empty list
- aiken-lang: pattern match on boolean with simple clause bodies
- aiken-lang: fix for inline_direct_reduce to be applied to pattern match function instead of argument
- aiken-lang: code gen function dependencies won't be hoisted to the top, instead hoisted at the location depended on.
- aiken-lang: needed to assert_no_assignment in when and if blocks
- uplc: need to return deserialization error in some cases for the machine builtins
- aiken-lang: incorrect scoping for anonymous functions
- aiken-lang: duplicate arguments were allowed in anonymous functions
- aiken: new command
blueprint convert
-
aiken-project: tests filtering with
-m
during check now happens inProject::collect_tests
-
aiken-project: fixed generation of blueprints for recursive and mutually recursive data-types
-
aiken-project: perform validation of parameters on
blueprint apply
-
aiken-lang: block
Data
andString
from unifying when casting -
aiken-lang: remove ability for a type with many variants with matching field labels and types to support field access
-
aiken-lang: various uplc code gen fixes
-
aiken-lang: update todo warning to include type
-
aiken-lang:
|>
operator can now be formatted as a single (short) line or forced over multiline in a flexible manner -
aiken-lang: the compiler now provides better feedback for type holes (i.e.
_
) in type annotations -
aiken-lang: assignment and clause guard are now always formatted on a new line
-
aiken-lang: unused let-bindings are now fully removed from generated code and discarded unused let-binding now raise a warning
-
aiken-lang: support multi-clause patterns (only as a syntactic sugar)
-
aiken-lang: fix lexer panic when parsing too large (> u32) tuple-indexes
-
uplc: Greatly improved the Plutus virtual machine performances for script evaluation
- aiken-project: new dep rayon for parallel test execution
- aiken: new blueprint command
- aiken-lang: new syntax for defining validators
- aiken: new address command for deriving addresses out of
plutus.json
- aiken-lang: Add missing Plutus builtins to Aiken's lang.
- aiken: fancy nix stuff
- aiken-lsp: go to definition
- aiken-lsp: docs on hover
- aiken-lsp: enable compiler a project
- aiken-lang:
assert
renamed toexpect
- aiken-lang: new syntax for strings and byte array literals
- aiken-lang: lots of code gen improvements
- aiken-lang: validator checks now happen during infer instead of in project
- aiken-lang: fixed unicode parsing
- aiken-lang: update default costs models
- aiken-lang: Use variable-length threshold for levenshtein distance
- aiken-project: Move module name validation outside of type-checking
- aiken-project: Add 'plutusVersion' to blueprints
- aiken-project: remove assets folder in favor of
plutus.json
- aiken-lang: removed some unused constant related data types
N/A
- uplc: Reward accounts are now correctly turned into script credentials in ScriptContext.
- all: bump pallas version to
v0.16.0
N/A
-
aiken-lang: integrated unit tests
Aiken now supports writing unit tests directly in source files using the new
test
keyword. Tests are functions with no arguments that are implicitly typed tobool
. For example:test foo () { 1 + 1 == 2 }
-
aiken: new
--skip-tests
flag for thecheck
command
- aiken:
check
now also runs and reports on anytest
found in the project - aiken: fix Plutus V1
to_plutus_data()
for post-alonzo txout with no datum hash
N/A
- aiken-lsp: handle
DidSaveTextDocument
notification - aiken-lsp: convert errors into
lsp_types::Diagnostic
- aiken-lang: doc comment parsing
- aiken-lang: code generation for pattern matching expressions
- aiken-lang: extended script context
- aiken-lang: added Option to builtins
- aiken-lang: properly handle record parsing and sugar in patterns
- aiken: new
lsp
command - aiken: new
fmt
command - aiken:
build
command now works and outputs assets - aiken: validate project name on
aiken new
- aiken-lang: formatter for
UntypedExpr
- aiken-lang: uplc code gen
- aiken-lang: add
Data
to prelude - aiken-lang: allow
Data
to unify with anything that's not in the prelude - aiken-project: validate if validator function return bool
- aiken-project: validate if validator function has minimum number of arguments
- aiken-lsp: new crate that contains the aiken language server
- uplc:
Converter::get_index
now takes the full name to provide better error messages forError::FreeUnique
- uplc: Sorted remaining structured in the ScriptContext (Value, Wdrl, (Ref) Inputs, Mint, Required signers, Data, Redeemers)
- uplc: sort inputs for script context fixes an issue in lucid spacebudz/lucid#109
- aiken: Fancy errors using miette
- aiken: Typechecking
- aiken: Inject
aiken/builtin
module with some functions fromDefaultFunction
in UPLC directly exposed - aiken-lang: add
infer
method toUntypedModule
which returns aTypedModule
- uplc: Expose various Pallas primitives from UPLC to make constructing UPLC types possible for consumers
- aiken: Project structure is now a bit different. See examples/sample for more
- flat-rs: New errors for debugging flat decoding issues
- uplc: Fixed overflow issue by changing
i64
toi128
inBigInt::Int
instances - uplc: Added
apply_params_to_script
function (applies params to script and serializes the new script).
- aiken:
Project
module which is responsible loading modules and running the compilation steps - aiken:
UplcCommand::Flat
flip the cbor_hex if condition so that the correct logic runs when using the flag - uplc: use i128 for
Constant::Integer
- flat-rs: add support for i128 encode and decode
- flat-rs: add i128 zigzag function