You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+24-31Lines changed: 24 additions & 31 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,47 +9,40 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
9
9
10
10
### Added
11
11
12
-
- Added support for the WebAssembly function-references proposal
13
-
- Added basic support for the WebAssembly garbage-collection proposal
14
-
- Added support for the WebAssembly exception-handling proposal, including tags, `try_table`, `throw`, and `throw_ref`
15
-
- Added support for the WebAssembly compact-imports proposal
16
-
- Added `WasmValue::ty` and `WasmValue::matches_type`
17
-
- Added `ValueLane` for mapping WebAssembly value types to their physical 32-bit, 64-bit, or 128-bit storage lane.
18
-
- Added a `validate` feature to `tinywasm` and `tinywasm-parser` (enabled by default) to optionally skip wasmparser validation for faster parsing of trusted modules.
19
-
- Added optional parse-time operand deduplication to reduce precompiled module and `.twasm` archive size.
20
-
- Added a `ResourceLimiter` trait, configurable through `engine::Config::with_resource_limiter`, to bound guest memory, table, and logical GC heap growth.
12
+
- Support for the typed function references, garbage collection, exception handling, and compact import section proposals.
13
+
-`ResourceLimiter` callbacks for memory and table allocation or growth
14
+
- A default `validate` Cargo feature & parser option to skip wasm validation
15
+
- Optional parse-time operand deduplication to reduce `.twasm` archive size
21
16
22
17
### Changed
23
18
24
-
-`HostFunction` is now a reusable definition, and module instantiation borrows `Imports` so host imports can be shared across stores.
25
-
- Host function callbacks now require `Send + Sync` so the same definition can be used safely with multiple stores.
26
-
- Typed function tuples now support up to 20 parameters or results. `WasmTupleChain` is deprecated. Use untyped functions for larger signatures.
27
-
- Module types now use one dense recursive type space, while function types are resolved through `Function::ty(&Store)`.
28
-
- Globals are stored in separate 32-bit, 64-bit, and 128-bit value lanes, avoiding tagged value conversion during guest execution.
29
-
- Linear memory now uses a single contiguous `Vec`-backed storage with const-generic fixed-width loads and stores.
30
-
- Increased the minimum supported Rust version from 1.95 to 1.98.
19
+
- Typed functions now support tuples up to arity 20 and `[u8; 16]` values for `v128`.
20
+
- Module types now use one recursive type space. Runtime function types are available through `Function::ty(&Store)`.
21
+
- Linear memory now uses contiguous `Vec`-backed storage.
22
+
- The minimum supported Rust version increased from 1.95 to 1.98.
23
+
- The internal instruction represetaions size was reduced from 16 to 8 bytes.
31
24
32
25
### Fixed
33
26
34
-
-Directly defined imports now reject handles from a different`Store`.
27
+
-Instantiation now rejects directly defined imports that contain handles from another`Store`.
35
28
- Tail calls to host functions now return directly to the caller frame.
36
-
-Fixed Memory64 bulk-memory operations and optimized stores using the wrong value-stack lane.
37
-
-Fixed `memory.init` bounds checks and operand lowering.
38
-
-Fixed Memory64 default limits and host-size handling, including 32-bit targets.
29
+
- Memory64 bulk-memory operations and optimized stores now use the correct value-stack lanes.
30
+
-`memory.init` now performs correct bounds checks and operand lowering.
31
+
- Memory64 now uses the correct default limits and host-size conversions, including on 32-bit targets.
39
32
40
33
### Breaking Changes
41
34
42
-
-`HostFunction::from` and `HostFunction::from_untyped` no longer take a `Store`and now return reusable `HostFunction` definitions
43
-
-`ModuleInstance::instantiate` and `instantiate_no_start`now borrow`Imports`.
44
-
-`Store::id` now returns `u32` instead of `usize`.
45
-
-`Parser::new` now takes `ParserOptions`, use `Parser::default()` for default settings. `Parser::with_options` was removed.
-Removed `HostFunction::ty` and `WasmFunction::ty`. Use `Function::ty(&Store)` for runtime function types.
48
-
-Changed `TableType::element_type` and `Element::ty` from `WasmType` to`RefType`, and replaced module `table_types` with`TableDefinition { ty, init }`.
49
-
-Removed the pluggable memory backend system (`LinearMemory`, `MemoryBackend`, `VecMemory`, `PagedMemory`, `LazyLinearMemory`, and `Config::with_memory_backend`). Linear memory is always `Vec`-backed. To limit initial memory allocation and growth, configure a `ResourceLimiter` with `Config::with_resource_limiter`.
50
-
-Removed the local-memory allocation analysis (`LocalMemoryAllocation`and `ParserOptions::optimize_local_memory_allocation`). Local memories are always allocated eagerly.
51
-
-Removed `Config::with_trap_on_oom`. A `ResourceLimiter` can return a trap when rejecting a memory or table allocation or growth request.
52
-
-`Table::grow` now returns `Result<Option<usize>>`, matching `Memory::grow`. Growth limits and allocation failures return `None`, while limiter-provided traps return an error.
35
+
-`Function::call` and `Function::call_resumable` now write to caller-provided result slices. Untyped host callbacks also receive a result slice and return `Result<()>`.
36
+
-Creating a `HostFunction` no longer requires a `Store`. Definitions require `Send + Sync` and can be reused across stores. Module instantiation now borrows`Imports` so the same imports can also be reused.
37
+
-`HostFunction::ty` and `WasmFunction::ty` were removed. Use `Function::ty(&Store)` for runtime types.
38
+
-Function and managed reference handles are tied to their originating `Store`. Managed references keep their referents live, so `WasmValue` is no longer `Copy`. Nullable typed references use `Option<T>`, while bare typed references are non-null.
39
+
-The `Memory`, `Table`, `Global`, and `Tag` constructors were renamed from `new`to `try_new`.
40
+
-`Store::id` now returns `u32`, and `ModuleInstanceAddr` was renamed to `ModuleInstanceId`.
41
+
- Element types now use`RefType`, and module definitions use`TableDefinition { ty, init }`. `Table::grow` now returns `Result<Option<usize>>`, matching `Memory::grow`.
42
+
-`Parser::new` now takes `ParserOptions`. Use `Parser::default()` for default settings. `Parser::with_options` was removed.
43
+
-Pluggable memory backends and `Config::with_trap_on_oom` were removed for performance reasons. Linear memory is always `Vec`-backed. Use `ResourceLimiter` to allow, reject, or trap memory allocation and growth requests.
44
+
-`WasmTupleChain` was removed. Use direct tuples up to arity 20 or untyped functions for larger signatures.
45
+
-The `.twasm` format changed. Regenerate archives created by earlier TinyWasm versions.
0 commit comments