Chicory 1.4.0 – Compiler Graduates, Annotations Stabilize, and WasmGC Advances
We’re excited to announce Chicory 1.4.0, a release that marks a significant milestone in our journey. This version brings the Compiler(Runtime and Build time) and Annotations out of the experimental phase, and introduces foundational support for WebAssembly Garbage Collection (WasmGC) with reference types.
🎓 Compiler Graduates from Experimental
After extensive development and testing, the Compiler is now officially stable. It enables the compilation of WebAssembly modules into plain Java bytecode at build time or runtime, offering improved performance and seamless integration into Java applications.
Key Benefits:
- Performance: Faster execution by eliminating interpretation overhead.
- Integration: Generates standard Java bytecode, facilitating integration with existing Java tools and libraries.
- Stability: Extensively tested to ensure reliability across various use cases(with real-world modules like CPython, SQLite, etc.).
🏷️ Annotations are Now Stable
The annotation system has matured and is now considered stable too. It provides high level APIs to for exports and host function's declaration and usage, enhancing developer productivity and code clarity.
Highlights:
- Ease of Use: Simplifies configuration through familiar Java annotations.
- Flexibility: Allows fine-grained control over module behavior and integration.
🧪 Progress Towards WasmGC with Reference Types
Chicory 1.4.0 lays the groundwork for supporting WebAssembly's Garbage Collection(WasmGC) proposal, including reference types. This advancement moves us closer to full compliance with emerging WebAssembly proposals, enabling more modules to run efficiently.
🙌 Acknowledgments
We extend our heartfelt thanks to the community contributors whose efforts have been instrumental in this release. Your feedback, code contributions, and support continue to drive Chicory forward.
For a detailed list of changes and contributions, please refer to the commit history.
⚠️ Migration Guide
As we transition out of an experimental phase, the old experimental modules are not going to be supported anymore. In this guide you can find the notes on how to move to the stable release of the functionalities. If there is any missing detail, please, don't be afraid to open an issue asking for clarifications.
ArtifactId renames
The ArtifactId of the modules have changed in this way:
Old | New |
---|---|
aot-experimental | compiler |
aot-maven-plugin-experimental | chicory-compiler-maven-plugin |
aot-build-time-experimental | build-time-compiler |
aot-build-time-cli-experimental | build-time-compiler-cli-experimental |
host-module-annotations-experimental | annotations |
host-module-processor-experimental | annotations-processor |
Package names
The name of the Java packages changed
Old | New |
---|---|
com.dylibso.chicory.experimental.aot | com.dylibso.chicory.compiler |
com.dylibso.chicory.experimental.build.time.aot | com.dylibso.chicory.build.time.compiler |
com.dylibso.chicory.experimental.hostmodule.annotations | com.dylibso.chicory.annotations |
Maven plugin
Two main changes specific to the Maven plugin:
- The name of the goal of the compiler changed from
wasm-aot-gen
tocompile
- The
name
configuration corresponds to the name of the generated class, i.e. the "Module" suffix is not added anymore automatically