Skip to content

Releases: ferus-web/bali

0.4.13-alpha1

08 Dec 07:09
Compare
Choose a tag to compare
0.4.13-alpha1 Pre-release
Pre-release

This is an unstable release and is not suitable for production!
It brings major changes, some of which are breaking.
Bali is now at 4.6K LoC!

Additions

  • Added field-write helper for Nim primitives.
  • Began work on JavaScript Date API.
    • This is currently hidden by an experiment. To use it, pass --enable-experiment:date-routines to Balde.

Fixes

  • Fixed numerical tokenization algorithm. This breaks the REPL in some cases, it'll be fixed soon.
  • Fixed declaration parsing algorithm for more syntax flexibility.
  • Balde no longer enables REPL mode in script-runner mode.

Full Changelog: 0.4.1...0.4.13-alpha1

0.4.1

30 Nov 14:38
Compare
Choose a tag to compare

This release builds on top of Bali 0.4.0 and brings a REPL environment to test JavaScript in.

Changes

  • Bali no longer has a dependency on climate, it uses its own argument parser based off of std/parseopt, derived from the Lucem project.
  • Added the --dump-bytecode flag to dump the generated bytecode and exit.
  • Added a REPL to evaluate JavaScript inside of. It is powered by the noise library.

Breaking Changes

There are no breaking changes this release.

0.4.0

28 Nov 06:36
Compare
Choose a tag to compare

This is a new Bali release, and as usual, brings new features and improvements.

Bug Fixes

  • Fixed a bug where JavaScript code could call internal Bali APIs, which'd make fingerprinting the runtime very trivial.
  • Initializing a mutable array would result in the address index pointing to its last element instead of the container itself (#45)
  • Fixed decrement parsing, yet again
  • Improved loop elision algorithm (#46)
  • Value capture would result in invalid codegen (#44)
  • ToNumber now handles floats correctly instead of reaching the unreachable branch

Dependencies

  • Bali now uses Sanchar 2.0.2, which brings improvements to the URL parser

New Features

  • Added array indexing. You can now access elements of an array. If you do an out-of-bounds read, undefined will be returned.

Breaking Changes

There should be no breaking changes in this release. You can safely upgrade to it.

0.3.83

25 Nov 03:52
Compare
Choose a tag to compare

This release brings some improvements and loop elision optimizations.

Fixes

  • Fixes #43 (Loop generates unnecessary code)
  • Removed some dead code
  • Stray atoms are marked as "wasted" instead of raising syntax errors

Full Changelog: 0.3.82...0.3.83

0.3.82

19 Nov 06:05
Compare
Choose a tag to compare

This is another minor release. It brings support for arrays into Bali.

Improvements

  • Removed dead code from parser
  • We now use Mirage 1.0.41, bringing a single bugfix for sequence atoms.
  • The parser can now parse arrays, including nested ones.
  • Improved codegen for loading atoms
  • Removed Herobrine

Additions

  • Arrays are now implemented

0.3.81

17 Nov 10:46
Compare
Choose a tag to compare

This is a very minor release building on top of the 0.3.8 series. If you want to check the full changelog, it's here.

Fixes

  • Booleans are now treated as atoms, meaning this is valid syntax now:
while (true) { }

instead of

while (true == true) { }
  • Removed Herobrine

Additions

  • There is now a variant of ret that accepts all Nim primitives that can be converted into atoms by the wrap function.
  • Added support for typeof.

0.3.8

15 Nov 11:31
Compare
Choose a tag to compare

As always, this release brings tons of new things.

Fixes

  • Type fields are now initialized with their default values instead of undefined
  • The parser can now parse nested field accesses (eg. x.y.z)
  • Commas are now treated like semicolons when found outside of a known parsing context
  • Fixed deadlock in tokenizer when encountering decrements (--)
  • Numbers can now be part of identifiers (eg. player2)

Additions

  • Improved type member field resolution algorithm to account for nested field access
  • Add support for break keyword, allowing for proper control flow.
  • The Test262 runner has been given a makeover and is a lot more informative now.
  • The Math object now has all of the constant fields the spec expects (PI, E, SQRT1_2, SQRT2, etc.)

Breaking Changes

There are no breaking changes and this version of Bali is fully backwards compatible.

0.3.7

09 Nov 07:02
Compare
Choose a tag to compare

This release brings many new things, the biggest one being support for unicode codepoint escapes in strings and identifiers! Also, the parser now no longer abuses unreachable branch markers, meaning that most, if not all syntax errors result in graceful SyntaxError messages.

We now pass 35% of all Test262 tests, but I believe that it is a bug with our test runner, because there's no way we made a 33% gain over a few commits.

Breaking Changes

There should be none. Just ensure that if any of your code uses unicode codepoint escapes, they are valid and can be correctly interpreted. If something like V8 (Node/Deno) or SpiderMonkey or JavaScriptCore (Bun) can interpret it just fine, Bali probably can too. If it can't, open a regression bug report.

New Features

  • Unicode codepoint escapes now work in strings and identifiers

Fixes

  • No more ungraceful parser crashes! (Hopefully)

0.3.6

03 Nov 06:45
Compare
Choose a tag to compare

This release finally stabilizes the setProperty method for type definition fields.

Pardon me, I'm too lazy to write a proper changelog for this release. Nothing should break, hopefully.

0.3.52

01 Nov 08:52
Compare
Choose a tag to compare

This is yet another hotfix release.