A list of all major changes between versions of the interpreter.
- replace all class preamble macros with templates
- vararg function definitions
- move to C++20 (modules, modern syntax) when libfmt makes it into llvm and gcc?
- integer move instruction in bytecode
- generators to prelude, generator for dict
- vs code syntax highlighting
- add local combinator definitions (
where) - add backtick
`fas a shorthand forquote "f" - dynamic dispatch
- cleanup internals regarding combinator declarations
- generate C++ from .eg file (module compilation)
- target MSVC
- '.md' files added as extension to appease github
- conditions are now 'rewrite on false' instead of 'rewrite on true'
- namespace rework
- lambda multiple matches
- module rework
- complex numbers
- docstrings and help
- exposed the tokenizer
- stratify float printing/lexing
- drop client/server for netcat
- blank slate mode
- rewrite assembler
- github actions
- default submodules to latest stable version
- printf
- static cmake build
- double register size (u32)
- hardcoded larger stack usage
- remove cascading free bug at expense of performance
- non-recursive print
- time and date
- print float with fmt
- ffi
- only reduce redexes
- simplified try/catch handling with combinators
- added egg files, support for literate programming
- added a GNU lightning back-end
- dict is now a builtin
- revert $ precedence since $ is bitwise or
- added a stall combinator
- drop par for async/await
- async tasks
- egel namespace in c++ source
- utilities to vm
- more macro removal
- egel remote procedure calls
- removed internal macros with c++ methods
- removed some utf32 bugs and code smell
- do syntax
- BADARGS should report the arguments
- reintroduction of monadic min
- dis and asm should work again
- introspection
- add a proper data segment to combinators
- internal cleaning
- get rid of spurious macros
- get rid of .clone() for class::create()
- dictionary
- tinydb
- small internal tweaks to array creation
- generators library
- map abstract datatype
- add
{X0,X1|XX}pretty list syntax - serialization primitives
- add a Python bridge
- refactor code to have most (external) calls work over machine
- static coding combinators (runtime inspection)
- swap ':' and '::', rename 'nop' to 'none'
- added multiline strings
- calculate and search theories
- readme/license changes
- compile on more Linux/MacOs/BSD architectures
- fixed critical regression LL(n) quadratic behavior
- MacOS (clang, arm64) and Linux (gcc, arm64)
- man page
- cmake
- added reference objects
- added monadic minus pass
- performance (abysmal) tweaks
- format
- added lazy ops
- added multiple commands to line parsing
- changed default behavior to throw exceptions on bad arguments
- processes
- asm and dis
- text based basic input/output and TCP transport
- 'eval' and 'blip'
- bugfix on '(1)' -length one array- results
- switch to '#' style comments
- regular expression support
- small performance tweaks
- got rid of the K combinator solution for statements
- check for overflow on simple math operators
- changed from dot to colon syntax to free up '.' as a combinator
- added semicolons as syntactic sugar to the language
- CHANGED TO STANDARD PATTERN MATCHING SYNTAX
- provisional fix to always print a dot in floats
- fixed a scope bug in let
- added hexadecimal numbers and binary operators
- fixed a bug with lexical scope and try/catch blocks
This is the version where a plethora of bugs were squashed, technically most things are in place, but there are still a large number of loose ends.
- symbolic rewriting
- REPL and batch mode support
- initial support for a prelude and basic libraries
- experiments with mutable state and OO
- concurrency
- dynamic libraries
- optional system-wide install
The initial commit. Expect lots and lots of bugs!