* Support for CREATE, CLONE and BYTECODE_HASH
* Add missing files
* Pushed the clone example through the typechecker
* CLONE compiles
* Fix dependent type in CLONE
* Bytecode hash fixes
* Refactor
* Refactor 2
* move some logic away
* Fixed some error messages. Type inference of child contract still does some random shit\n(mistakes arguments with result type)
* CREATE sometimes compiles and sometimes not
* Fix some scoping/constraint issues
* works, needs cleanup
* cleanup
* Fix some tests. Remove optimization of singleton tuples
* Fix default argument for clone
* Cleanup
* CHANGELOG
* Mention void type
* Address review, fix some dialyzer errors
* Please dialyzer
* Fix failing tests
* Write negative tests
* Docs
* TOC
* missing 'the'
* missing 'the'
* missing 'the'
* missing 'the'
* mention pre-fund
* format
* pre-fund clarification
* format
* Grammar in docs
* Updated tests, banned type decls and toplevel letvals
* Properly ban nested contracts
* Fix including by path
* Fix error message test
* Fix prettpr attr display. Make dialyzer happy
* More tests
* Fixed type printing
* Updated docs
* Allow block with separate type signature and definition of a function
For instance,
```
function
add : (int, int) => int
add(x, y) = x + y
```
cc #196
* Allow pattern matching in left-hand sides
* Changelog
* Fix type spec
* partial case-on-constructor
* Changelog for pattern-matching lets
* Added standard List library and list comprehensions
Added List library.
Flatmaps WIP
Fixed dependency in flat_map
fcode generation
Updated tests to use custom list lib
Added comprehension test
Added stdlib
sanity
Test
* Extended stdlib for lists. Added error message for redefinition of stdlibx
* Fixed type template
* Improved stdlib
* More functions
* Fixed cyclic includes
* Refixed imports and added few tests
* Added fail test
* Undelete removed type spec
* Remove typo
* Fix iter function
* Fixed typo
* Added if guards and let statements in list comp
* Added more fail tests
* Option stliv
* 2 and 3 tuple stdlib
* Updated stdlib to new syntax. Added recursor and changed all/any functions
* Fixed performance issues. Changed include management
* Fixed hash type
* Update to changes in icode format
* Start on new intermediate code for FATE
* Compile `let` to FATE
* Fix and improve broken bytecode optimisations
* Basic tuple patterns
* Compile shallow matching on tuples
* Liveness analysis for local variables
* Fix minor bug
* Use RETURNR when possible
* Nicer debug printing
* Refactor optimization rules
* Compile tuple construction
* Improve instruction analysis and generalize some optimizations
* Compile nested pattern matching to case trees
(Only tuple and variable patterns so far)
* Reannotate and repeat optimization pass once it done
Could try hard to keep annotations more precise, but would be more error prone
* Get rid of unnecessary STORE instructions
* Keep better track of liveness annotations when swapping instructions
* Limit the number of iterations for the optimization loop
Should finish in one iteration, but we shouldn't loop if there are bugs
or corner cases where it doesn't.
* Pattern matching on booleans
* wip: rewrite case tree compiler to handle catch-alls
still with debug printing, and can't compile it yet
* Add missing case in renaming
* Compile case trees all the way to Fate assembly
* Simplify variables bindings in environment
* Shortcut let x = y in ...
* compile list literals
* Fix various bugs in pattern match compilation
* Pretty printer for fcode
* Fix renaming bug
* Another renaming bug
* Handle switch_body in optimizations
* Remove optimization for if-then-else
* Tag instructions in annotated scode
* Remove 'if' from fcode
* Fix dialyzer things
* Remove unused argument
* Compile pattern matching on integer literals
* Compile list patterns
* Use op_view in more places
* allow leaving out fields from record patterns
* compile records (patterns and construction)
* Compile record update
* Use SETELEMENT instruction
* Compile variants
* Remove incorrect push for tuple switches
* Optimize matching on single constructors datatypes
* Use the fact that SWITCH and JUMPIF can use args and vars
* string literals and pattern matching on the same
* Compile character literals
* Minor refactoring of op instruction handling
* compile address literals
* Get rid of unit in AST
* Unary operators
* Compile function calls
(to fully saturated top-level functions only)
* fix breakage after unary operators
* variables are now lists of names in fcode
* pretty printing for function calls
* use STORE ?a instead of PUSH during optimizations
* no-op fcode optimization pass
* some constant propagation optimizations
* Case on constructor optimization
* fix minor bugs
* Compile all the operators
* Compile maps
* Simplify JUMPIF on true/false
* Fixed left-over reference to STR_EQ
* Add compile-time evaluation for more operators
* Distinguish local vars and top-level names already in fcode
* Compile builtins
* Compile bytes(N)
Compile to FATE strings for now
* Improve inlining of PUSH
* Fix name resolution bug
* Change map_get/set to operators in fcode
* Compile lambdas and higher-order functions
* Optimize single variable closure envs
* Handle unapplied builtins and top-level functions
* Missing case in fcode pretty printer
* Fix variable binding bug in fcode compiler
* Compiler side of state updates
No support in FATE yet though
* Compile statements
* Compile events
But no FATE support for events yet
* Compile remote calls
* Clearer distinction between applied and unapplied top-level things (def/builtin) in fcode
* Tag for literals in fcode to make code cleaner
* We now have block hash at height in FATE
* Update aebytecode commit
* Get rid of catchall todos
* Jump some hoops to please Dialyzer