11 KiB
		
	
	
	
	
	
			
		
		
	
	Changelog
v1.0.11-alpha - unreleased
Added
- 
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) 
v1.0.10-alpha - 2023-06-13
Added
- aiken: added panic hook to present a link to make a bug report
 
Fixed
- 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.
 
Removed
N/A
v1.0.8-alpha - 2023-06-08
Added
- 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) 
Fixed
- 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
 
Removed
N/A
v1.0.7-alpha - 2023-06-02
Added
- aiken-lang: Add a way to express that tests can return an error
 
Fixed
- 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 flatanduplc unflatsubcommands more consistent and flexible 
v1.0.6-alpha - 2023-05-17
Fixed
- 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.
 
v1.0.5-alpha - 2023-05-14
Added
- 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.
 
Fixed
- aiken-lang: Fix for nested constructors where the type had a single constructor. The fields exposed were not being added to the Air.
 
v1.0.4-alpha - 2023-05-09
Added
- aiken-lang: ChooseUnit builtin uses a more efficient way of handling the first arg (unit) by just assigning to lambda
 
Fixed
- 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
 
Changed
- aiken-lang: Refactor how builtins are processed to uplc in code gen
 
v1.0.3-alpha - 2023-04-28
Added
- 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
 
Fixed
- 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.
 
v1.0.2-alpha - 2023-04-17
Fixed
- 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
 
v1.0.1-alpha - 2023-04-16
Fixed
- aiken-lang: incorrect scoping for anonymous functions
 - aiken-lang: duplicate arguments were allowed in anonymous functions
 
v1.0.0-alpha - 2023-04-13
Added
- aiken: new command 
blueprint convert 
Changed
- 
aiken-project: tests filtering with
-mduring 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
DataandStringfrom 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
 
v0.0.29 - 2023-02-23
Added
- 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
 
Changed
- aiken-lang: 
assertrenamed 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
 
Removed
- aiken-project: remove assets folder in favor of 
plutus.json - aiken-lang: removed some unused constant related data types
 
v0.0.28 - 2023-01-06
Added
N/A
Changed
- uplc: Reward accounts are now correctly turned into script credentials in ScriptContext.
 - all: bump pallas version to 
v0.16.0 
Removed
N/A
v0.0.27 - 2022-MM-DD
Added
- 
aiken-lang: integrated unit tests
Aiken now supports writing unit tests directly in source files using the new
testkeyword. Tests are functions with no arguments that are implicitly typed tobool. For example:test foo () { 1 + 1 == 2 } - 
aiken: new
--skip-testsflag for thecheckcommand 
Changed
- aiken: 
checknow also runs and reports on anytestfound in the project - aiken: fix Plutus V1 
to_plutus_data()for post-alonzo txout with no datum hash 
Removed
N/A
v0.0.26 - 2022-11-23
Added
- aiken-lsp: handle 
DidSaveTextDocumentnotification - 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
 
v0.0.25 - 2022-11-14
Added
- aiken: new 
lspcommand - aiken: new 
fmtcommand - aiken: 
buildcommand 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 
Datato prelude - aiken-lang: allow 
Datato 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
 
Changed
- uplc: 
Converter::get_indexnow takes the full name to provide better error messages forError::FreeUnique 
v0.0.24 - 2022-11-04
Changed
- uplc: Sorted remaining structured in the ScriptContext (Value, Wdrl, (Ref) Inputs, Mint, Required signers, Data, Redeemers)
 
v0.0.23 - 2022-11-03
Changed
- uplc: sort inputs for script context fixes an issue in lucid https://github.com/spacebudz/lucid/issues/109
 
v0.0.22 - 2022-10-31
Added
- aiken: Fancy errors using miette
 - aiken: Typechecking
 - aiken: Inject 
aiken/builtinmodule with some functions fromDefaultFunctionin UPLC directly exposed - aiken-lang: add 
infermethod toUntypedModulewhich returns aTypedModule - uplc: Expose various Pallas primitives from UPLC to make constructing UPLC types possible for consumers
 
Changed
- aiken: Project structure is now a bit different. See examples/sample for more
 
v0.0.21 - 2022-10-23
Added
- flat-rs: New errors for debugging flat decoding issues
 
Changed
- uplc: Fixed overflow issue by changing 
i64toi128inBigInt::Intinstances - uplc: Added 
apply_params_to_scriptfunction (applies params to script and serializes the new script). 
v0.0.20 - 2022-10-17
Added
- aiken: 
Projectmodule which is responsible loading modules and running the compilation steps - aiken: 
UplcCommand::Flatflip 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