0.4.2
This is a new release with several breaking changes, with 38 commits in total.
Engine Additions
- The engine now has support for multiple instances of a type that are created via the constructor syntax.
- Alongside this, a new way to define a function for a type's prototype has been added via
definePrototypeFn.
- Implemented some of the
Stringprototype functions
String.prototype.toLowerCaseString.prototype.toUpperCaseString.prototype.indexOfString.prototype.trimLeftString.prototype.trimRight
consoleis a standalone type now, instead of a name-mangling hack. This means that all engine components now use the new type interface.- Calls are parsed as field accesses whenever necessary. This means that the bytecode interface
consoledotlogis now justlog, which takes in theconsoletype as an argument alongside the rest of the arguments.
Bug Fixes
- String trim implementation was wrongly written, resulting in right-facing whitespace not being trimmed (#58)
- Scope hashing would result in an infinite recursion if two scopes were linked
- The runner would incorrectly output unrelated errors to stderr, which'd result in expected errors being treated as unexpected, giving us a lower score on test262.fyi
REPL Changes
- Added the
.expresscommand. You must provide an integer argument to it and it will pretty-print the atom at the address, if it exists.
Dependencies
- Bumped Mirage from 1.0.42 to 1.0.43
- Added Kaleidoscope: a library providing SIMD accelerated routines for strings (as you might have guessed, it is related to the above additions :^) )
Breaking Changes
- The command for running a file with Balde is just
balde <file>now. - Old, cached compressed-bytecode is incompatible with this new release. There's unfortunately no invalidation mechanism for different bytecode versions right now, so you're advised to remove the
~/.cache/miragedirectory entirely in order to prevent weird bugs.