Update dependency org.teavm:teavm-jso-apis to v0.12.3#70
Merged
Conversation
Project516
added a commit
that referenced
this pull request
Feb 23, 2026
…pis-0.x Update dependency org.teavm:teavm-jso-apis to v0.12.3
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
0.10.2->0.12.3Release Notes
konsoletyper/teavm (org.teavm:teavm-jso-apis)
v0.12.1Compare Source
This release contains hotfixes for release 0.12.0
v0.12.0Compare Source
The main driver for this release was making WebAssembly GC backend on par with JavaScript backend. Now, only one feature of the JavaScript backend is not supported in Wasm GC: threading. This will be addressed in future releases.
Here's the list of improvements to the backend:
Another big change worth mentioning is the refactoring of NIO buffers. It was also driven mostly by the need of JS interop in Wasm GC backend, but as a result, all other backends benefit from this improvement. While previously NIO buffers were backed by arrays, now each backend uses more appropriate implementation. This includes typed arrays in JavaScript BE and direct memory addresses in C and old WebAssembly backends. Also, direct buffers in C are now allocated using
mallocand using dedicated allocator in Wasm GC, that uses Wasm memory.The latter change allows overcoming one major limitation of WebAssembly GC proposal: the inability to represent WebAssebmly array type as a JavaScript typed array. WebAssembly memory can be represented directly as a JavaScript typed array. So the solution is to allocate direct buffers over WebAssembly memory and then pass NIO buffers directly to JavaScript without any copying. In this regard JSO now allows passing NIO buffers directly to JavaScript. In this case they will be seen as a type array or as an ArrayBufferView respectively.
When this is not an option, though, and JS interop needs to fall back to copying data between arrays, it's now done via WebAssembly memory. Although one extra copy needs to be performed, the overall performance is times better than copying through WebAssebmly/JS barrier.
To make code re-usable between JavaScript and WebAssembly while still benefiting from the ability to pass data without copying,
@JSByRefannotation getsoptionalparameter. "Optional by-ref" means that any backend that supports it (namely, JavaScript) passes data by reference, while others (WebAssembly GC) copies data.Special thanks to libGDX project and personally to @xpenatan for testing WebAssembly GC backend with their TeaVM backend, which gave the opportunity to find and fix some bugs. Also, thanks to 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.
v0.11.0New WebAssembly backend
This release is mostly driven by development of new WebAssembly backend. Old WebAssembly backend exists for many years and works well, however, did not see any adoption. The main reason is that it does not add significant advantages (like performance improvements), but makes development experience much worse, i.e. does not allow to easily interact with browser JS APIs and produces large binary files (times as large as JS).
With introduction of new WebAssembly GC proposal these problems were solved. However, this is not just small addition to original WebAssembly spec, but a game changer, it was impossible just to improve existing backend to support new proposal. So the decision was made to create a brand new WebAssembly backend, which would co-exist with the old one. Perhaps, at some point old WebAssembly backend will be deprecated and fully removed, but for now they will co-exist. However, WebAssembly GC will be advertised as primary WebAssembly target and the documentation will be maintained for WebAssembly GC, not for old WebAssembly.
New WebAssembly GC is a bit limited compared to JS backend, but mostly provides all features available in old WebAssembly backend. Moreover, WebAssembly GC fully supports JSO, as Java-to-JS interaction API. Hopefully, the next release will cover remaining features and WebAssembly GC backend will be on par with JS backend and the "experimental" tag will be removed from WebAssembly support.
Java class library emulation
BitSetimplementationceilDiv,ceilDivExact,ceilMod,floorDivExact,absExacttoMathclass.Support for JS APIs
<input type="file">, which includes classes likeFile,Blob,ReadableStreamand so on.HTMLElement.touchandHTMLElement.inputevents.Navigator.sendBeaconError.causeOther stuff
Sponsorship
Worth mentioning that TeaVM evolved with the support from its sponsors. If you like this project, you can start donating.
Special thanks to @reportmill and @shannah, our permanent sponsors!
Contributors
Special thanks to @Ihromant, @lax1dude and xpenatan, who were early adopters of WebAssembly GC backend and helped to find some bugs there. Also, I want to highlight @lax1dude, who not only enabled WebAssembly GC in his project, bug managed to identify, fix and successfully sent his PR to main repository.
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.