Chasm Changelog

Chasm is here! And with it, a Chasm changelog thread.

1 Like

Chasm 0.1.0 and Chassembly 0.1.0 are out!

After a fairly extensive rewrite of the Chasm-Lang interpreter, the changes are finally live on the Quilt snapshot Maven. Here’s a changelog:

  • Chasm-Lang was renamed to Chassembly. This reflects the fact that Chassembly is meant as a low-level compile target rather than a programming language.
  • The Chassembly interpreter now performs a lot fewer object allocations and copies. This means that the interpreter now operates without caching at similar performance, making the code much easier to understand.
  • The Chassembly AST is now exposed as API. This allows both parsing and generation of Chassembly code. Frontends and remappers should benefit greatly from this.
  • The Chassembly parser is now generated with JavaCC21 instead of Antlr4. This removes a runtime dependency, resulting in an effective size reduction of 75%.
  • Tests for Chassembly are now easier to write and execute. If you wanna play with the language, write a test! And maybe even contribute it?
    All these changes had to be adopted by Chasm itself. The following changes were made:
  • The Chasm tree was replaced with the Chassembly AST, reducing the size of the codebase and making the use of node conversions unnecessary.
  • NodeUtils was extended to make the code more readable and shorter.
  • The tests were updated to use new Chassembly features
    Finally, the Gradle build scripts were cleaned up a little for better code reuse.

You can find the jars at Quilt Maven
(JavaDocs aren’t published yet since I kinda forgot)

The language should be fairly stable now, so we should proceed to write extensive tests. Any help with that would be appreciated!
Additionally, we need to implement some intrinsic functions (like len, map, flatten). These would make for great first issues for new contributors!