
* 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
25 lines
859 B
Erlang
25 lines
859 B
Erlang
{"1.1.0",
|
|
[{<<"aebytecode">>,
|
|
{git,"https://github.com/aeternity/aebytecode.git",
|
|
{ref,"2555868990ac2a08876e86b1b798b4750273591f"}},
|
|
0},
|
|
{<<"aeserialization">>,
|
|
{git,"https://github.com/aeternity/aeserialization.git",
|
|
{ref,"816bf994ffb5cee218c3f22dc5fea296c9e0882e"}},
|
|
1},
|
|
{<<"base58">>,
|
|
{git,"https://github.com/aeternity/erl-base58.git",
|
|
{ref,"60a335668a60328a29f9731b67c4a0e9e3d50ab6"}},
|
|
2},
|
|
{<<"eblake2">>,{pkg,<<"eblake2">>,<<"1.0.0">>},1},
|
|
{<<"getopt">>,{pkg,<<"getopt">>,<<"1.0.1">>},0},
|
|
{<<"jsx">>,
|
|
{git,"https://github.com/talentdeficit/jsx.git",
|
|
{ref,"3074d4865b3385a050badf7828ad31490d860df5"}},
|
|
0}]}.
|
|
[
|
|
{pkg_hash,[
|
|
{<<"eblake2">>, <<"EC8AD20E438AAB3F2E8D5D118C366A0754219195F8A0F536587440F8F9BCF2EF">>},
|
|
{<<"getopt">>, <<"C73A9FA687B217F2FF79F68A3B637711BB1936E712B521D8CE466B29CBF7808A">>}]}
|
|
].
|