Release 0.13.0

This release was driver by three major features in mind.

  1. Refactor to run in the browser
  2. Coroutines
  3. Java 25

First is the (successful) attempt to create Java-to-WebAssembly compiler right in the browser. The work was done mostly outside TeaVM, but also required some refactorings in TeaVM core. You can see the result here: https://teavm.org/playground.html

Second is closing final gap between JS and Wasm GC backend, which is coroutine support. TeaVM emulates Java threads via coroutines, which are only supported by JS backend. Version 0.13 introduces support for coroutines in Wasm GC, so now it's possible to call methods like Thread.start or Thread.sleep, use simple synchronization primitives and so on.

Finally, recently released Java 25 is supported.

Also, few minor features can be highlighted:

  • Support for imported memory and SharedArrayBuffer. This allows, for example, to run a WebAssembly module in a worker and exchange data with it without the need to copy anything.
  • Support Node.js out-of-the-box

Special thanks for helping to test the new release to:

  • libGDX TeaVM project and personally to @xpenatan.
  • WebFX project and personally to @salmonb. This project allows to port JavaFX apps to the browser, using various compilers (GWT, j2cl), and now they added TeaVM support.
  • @zlataovce and his slicer, which is a collection of Java bytecode decompilers, ported to the browser. Now these decompilers work in WebAssembly.

Also, thanks to the contributors:

Finally, a big thank you to @reportmill and @shannah, for sponsoring the project as well as other sponsors (see full list). You can join these people and start supporting the project.