Release 1.0.0b14
Pre-release
Pre-release
This release has the following changes from b13:
- Reworked the AST to be a pure expression tree, removing the ugly special pleading done for
Topand also:- removing
Letand makingInlineLetthe onlylet(whereis just syntactic sugar) - making
Importintroduce names into a sub-expression the same aslet - ditching the
StoreGlobalstuff in favour of a newExportmechanism that is injected into the last leaf of the AST via a parser rule matching EOF - extracting pragmas at parse time and storing them directly on the
Programin the compiler
- removing
- Tighter restrictions on module imports – no more access to state – which allows module exports to be cached so that they are only run once (unless the source file changes)
- Addition of anonymous functions with new
func(x) x*xsyntax - Simpler for loops in the VM with the addition of tracking the number of bindings being done on each iteration in the
LoopSourcelist; this allows ditching a few instructions from loops and dropping unnecessary operands from the loop instructions - A fix for a bug in simplifying on static state (it would collect old keys)
Plus it adds a heap more tests for the language in the form of unit/regression tests of the simplifier and compiler, and a bunch of integration tests of the language that test the interaction of the parser, simplifier, compiler and VM. Excitingly, these new tests unearthed a few significant bugs in the semantics and also shone a light on corners of the simplifier that could benefit from more work.
This release touches a lot of dangerous code in the language, but thanks to that mass of new tests I'm feeling pretty confident about it.