Releases: explodingcamera/tinywasm
Releases · explodingcamera/tinywasm
v0.9.0
[0.9.0] - 2026-05-05
All Commits: v0.8.0...v0.9.0
This release is a major runtime and API rework. It adds support for several newer WebAssembly proposals, introduces the new Engine configuration API, rewrites large parts of execution and validation, and changes the internal twasm archive format. Benchmarks in the repository currently show roughly 30-90% improvement over 0.8.0 depending on workload and execution mode.
Added
- Support for the
custom_page_sizesproposal (#22 by @danielstuart14) - Support for the
tail_call,memory64,simd,relaxed_simd,wide_arithmetic, andextended_constproposals (#37, #38, #39) - New
EngineAPI (tinywasm::Engineandengine::Config) for runtime configuration - Resumable execution APIs:
call_resumable,resume_with_fuel,resume_with_time_budget, andExecProgress - Host-function fuel APIs:
FuncContext::charge_fuelandFuncContext::remaining_fuel engine::Configsupport for fuel policy, stack sizing, memory backend selection, and trap-on-OOM behavior- New feature flags:
canonicalize-nans,simd-x86,guest-debug,debug, andparallel-parser - Top-level parser re-exports behind the
parserfeature:parse_bytes,parse_file, andparse_stream - Completely new
tinywasmcli
Changed
Store::newnow takes anEngine, useStore::default()for default settings.ModuleInstance::funcnow validates exact Wasm signatures at lookup time and fails immediately on mismatches.- Stack and call-stack limits can now be defined with
engine::Config - Module-internal by-index inspection APIs are now gated behind
guest-debug Debugimplementations are now gated behinddebug.- MSRV increased to 1.95 and the crate now uses Rust 2024.
Error,Trap, andLinkingErrorare now#[non_exhaustive].HostFunction::new,HostFunction::func, andHostFunction::typednow require&mut Store, andImports::link_modulenow takes aModuleInstanceinstead of a raw module instance id.- Cargo features were renamed from
tinywasm-parsertoparserand fromloggingtolog. Error::ParseErrorwas renamed toError::Parser, andError::Twasmwas added.FuncHandleandFuncHandleTypedwere renamed toFunctionandFunctionTyped, and module export lookups moved fromexported_*tofunc_untyped,func, andmemory.- The
twasmarchive format is now based on postcard (backwards-incompatible with previous versions) (thanks @dragonnn). - The interpreter was refactored around more superinstruction fusion, lower-overhead dispatch, typed-stack locals, jump-oriented lowering, and optional parallel parsing.
Removed
- Cargo feature
simdwas removed. RefNullwas removed and replaced withFuncRefandExternRef.tinywasm::interpreteris no longer a public module.InterpreterRuntimeandTinyWasmValueare no longer public API.FuncHandle::namewas removed.- Mutable
ModuleInstanceexport lookup variantsmemory_mut,table_mut,global_mut, andextern_item_mutwere removed.
Fixed
- Fixed archive no_std support, which was broken in the previous release, and added tests to ensure it stays working.
ModuleInstance::memoryandFuncContext::memorynow take a non-mut reference to self (#41).- Untyped host functions now check return values correctly (#27) by @WhaleKit.
MemoryRefMut::copy_within(src, dst, len)now follows its documented argument order.- Imported tables created with
Extern::table(ty, init)now honor the provided init value. - Fixed unchecked memory offsets causing issues on 32-bit platforms.
Migration Notes
- Replace
Store::new()withStore::default()for default settings, orStore::new(Engine::new(config))for custom runtime configuration. - Rename the cargo features
tinywasm-parsertoparserandloggingtolog. - Rename
FuncHandletoFunctionandFuncHandleTypedtoFunctionTyped. - Rename module export lookups from
exported_*methods tofunc,func_untyped, andmemory. - Regenerate any pre-existing
twasmarchives, the format is not backwards compatible with earlier releases.
v0.9.0-alpha.1
See CHANGELOG.md
v0.9.0-alpha.0
See CHANGELOG.md
v0.8.0
[0.8.0] - 2024-08-29
All Commits: v0.7.0...v0.8.0
Changed
- Full support for Multi-Memory proposal
- Extern tables now correctly update their type after growing
- Increased MSRV to 1.80.0
- Improved support for WebAssembly 2.0 features
- Simplify and optimize the interpreter loop
- Use a seperate stack and locals for 32, 64 and 128 bit values and references (#21)
- Updated to latest
wasmparserversion - Removed benchmarks comparing TinyWasm to other WebAssembly runtimes to reduce build dependencies
- Memory and Data Instances are no longer reference counted
v0.7.0
[0.7.0] - 2024-05-15
All Commits: v0.6.0...v0.7.0
Changed
- Remove all unsafe code (This includes the public
TinyWasmModule::from_twasm_unchecked) - Refactor interpreter loop
- Optimize Call-frames
- Remove unnecessary reference counter data from store
v0.6.1
[0.6.1] - 2024-05-10
All Commits: v0.6.0...v0.6.1
Changed
- Switched back to the original
wasmparsercrate, which recently added support forno_std - Performance improvements
- Updated dependencies
v0.6.0
[0.6.0] - 2024-03-27
All Commits: v0.5.0...v0.6.0
Added
ImportsandModuleare now cloneable (#9)
Changed
- Improved documentation and added more tests
- Tests can now be run on more targets (#11)
- Nightly version has been updated to fix broken builds in some cases (#12)
- Add
aarch64-apple-darwinandarmv7-unknown-linux-gnueabihftargets to CI (#12)
Removed
- Removed the
EndFuncinstruction, as it was already covered by theReturninstruction
This also fixes a weird bug that only occurred on certain nightly versions of Rust
v0.5.0
[0.5.0] - 2024-03-01
All Commits: v0.4.0...v0.5.0
Added
- Added a
CHANGELOG.md - Added merged instructions for improved performance and reduced byte code size
Changed
- Now using a custom
wasmparserfork - Switched to a visitor pattern for parsing WebAssembly modules
- Reduced the overhead of control flow instructions
- Reduced the size of bytecode instructions
- Fixed issues on the latest nightly Rust compiler
- Simpliefied a lot of the internal macros
Removed
- Removed duplicate internal code
v0.4.0
v0.3.0 - Full WebAssembly 1.0 support
- Added benchmarks
- Performance improvements
- Added usage examples
- Pre-Processed Wasm (
.twasm) - Support Bulk-Memory proposal
Full Changelog: v0.3.0...v0.4.0
v0.3.0
v0.3.0 - Full WebAssembly 1.0 support
- Better trap handling
- Implement linker
- Element instantiation
- Table Operations
- FuncRefs
- Typesafe host functions
- Host function context
- Spec compliance improvements
- Wasm 2.0 testsuite
- Usage examples
- End-to-end tests
- Lots of bug fixes
- Full
no_stdsupport
Full Changelog: v0.2.0...v0.3.0