Prep work for WAMR integration #652
Draft
+26,197
−25,553
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.
Not to be merged, just to track what I am doing.
In short, wasm3 is no longer maintained and very slow due to its interpreted nature.
I think it is best for txiki to move away from it and I would suggest to try https://github.com/bytecodealliance/wasm-micro-runtime.
It is advertised as highly configurable and embeddable. https://github.com/bytecodealliance/wasm-micro-runtime/blob/main/doc/embed_wamr.md
One can selectively decide which feature are wanted, limiting the final footprint. It is also possible to run wasm without allocations outside a preallocated region, making it suitable for real embedded applications.
Beyond that, it has a much wider support of standards compared to wasm3, and a AOT can be enabled for systems if they can afford its overhead.
Moving to WAMR would enable further developments in areas where txiki is currently stuck, like adding a fast transpiler to semi-natively run typescript and jsx code.