diff --git a/CHANGELOG.md b/CHANGELOG.md index b160ef89b3..0ef9724369 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,7 @@ Additionally we have an `Internal` section for changes that are of interest to d Dates in this file are formattes as `YYYY-MM-DD`. -## [`0.32.0-beta.15`] - 2024-05-11 +## [`0.32.0-beta.16`] - 2024-05-13 **Note:** @@ -52,7 +52,13 @@ Dates in this file are formattes as `YYYY-MM-DD`. ``` - When `CompilationMode::Lazy` or `CompilationMode::LazyTranslation` and fuel metering is enabled the first function access that triggers compilation (and validation) will charge fuel respective - to the number of bytes of the Wasm function body. (https://github.com/wasmi-labs/wasmi/pull/876) + to the number of bytes of the Wasm function body. (https://github.com/wasmi-labs/wasmi/pull/876) +- Added non-streaming Wasm module compilation. (https://github.com/wasmi-labs/wasmi/pull/1035) + - So far Wasmi only offered a streaming Wasm module compilation API, however most users + probably never really needed that. So starting from this version both `Module::new` and + `Module::new_unchecked` are now non-streaming with insane performance improvements of up + to 80% in certain configurations. + - For streaming Wasm module users we added `Module::new_streaming` and `Module::new_streaming_unchecked` APIs. - Added `Module::validate` API. (https://github.com/wasmi-labs/wasmi/pull/840) - This allows to quickly check if a Wasm binary is valid according to a Wasmi `Engine` config. - Note that this does not translate the Wasm and thus `Module::new` or `Module::new_unchecked` @@ -85,25 +91,32 @@ Dates in this file are formattes as `YYYY-MM-DD`. random sources and thus are incapable to spawn hash maps that are resilient to malicious actors. - Note that Wasmi has always avoided using hash map based data structures prior to this change so not enabling this new crate feature kind of acts as an optimization. +- Added `Default` implementation for `Store where T: Default`. (https://github.com/wasmi-labs/wasmi/pull/1031) + - This mostly serves as a convenient way to create a minimal Wasmi setup. +- Added `WasmTy` implementations for `f32` and `f64` Rust primitives. (https://github.com/wasmi-labs/wasmi/pull/1031) + - This is convenience for `Linker::func_wrap` calls that take those primitives as arguments. + Before this change users had to use `F32` and `F64` instead which is a bit cumbersome. ### Changed - Minimum Rust version set to 1.77. (https://github.com/wasmi-labs/wasmi/pull/961) - CLI: Enabled Wasm `tail-calls` and `extend-const` proposals by default. (https://github.com/wasmi-labs/wasmi/pull/849) - We expect those Wasm proposals to be stabilized very soon so we feel safe to enable them by default already. -- Improve `Debug` and `Display` impls for NaNs of Wasm `f32` and `f64` values. +- Improved `Debug` and `Display` impls for NaNs of Wasm `f32` and `f64` values. - They now show `nan:0x{bytes}` where `{bytes}` is their respective raw bytes. - Implement `Sync` for `ResumableInvocation` and `TypedResumableInvocation`. (https://github.com/wasmi-labs/wasmi/pull/870) - Properly mirror Wasmtime's fuel API. (https://github.com/wasmi-labs/wasmi/pull/1002) - Renamed some Wasmi items to improve its Wasmtime mirroring. (https://github.com/wasmi-labs/wasmi/pull/1011) -- Improve Wasmtime API mirror for Store fuel. (https://github.com/wasmi-labs/wasmi/pull/1002) +- Improved Wasmtime API mirror for Store fuel. (https://github.com/wasmi-labs/wasmi/pull/1002) +- Enabled `Config::tail_call` and `Config::extended_const` by default. (https://github.com/wasmi-labs/wasmi/pull/1031) + - Those Wasm proposals have been moved to phase 4 for many months now. ### Removed - Removed the stack-machine bytecode based Wasmi `Engine` backend. (https://github.com/wasmi-labs/wasmi/pull/818) - The new register-machine bytecode based Wasmi `Engine` is more promising and the Wasmi team does not want to maintain two different engine backends. -- Remove `FuelConsumptionMode` from `Config`. (https://github.com/wasmi-labs/wasmi/pull/877) +- Removed `FuelConsumptionMode` from `Config`. (https://github.com/wasmi-labs/wasmi/pull/877) - `FuelConsumptionMode` was required to differentiate between lazy and eager fuel consumption. This was necessary due to how lazy fuel consumption was implemented in that it would pre-charge for instruction execution were the exact amount of required fuel was not possible to determine diff --git a/Cargo.toml b/Cargo.toml index 1fea633a12..f9fd5a6c65 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,7 +13,7 @@ resolver = "2" [workspace.package] authors = ["Robin Freyler "] repository = "https://github.com/wasmi-labs/wasmi" -version = "0.32.0-beta.15" +version = "0.32.0-beta.16" rust-version = "1.77" edition = "2021" readme = "README.md" @@ -23,10 +23,10 @@ categories = ["wasm", "no-std", "virtualization"] exclude = ["tests"] [workspace.dependencies] -wasmi = { version = "0.32.0-beta.15", path = "crates/wasmi", default-features = false } -wasmi_wasi = { version = "0.32.0-beta.15", path = "crates/wasi", default-features = false } -wasmi_core = { version = "0.32.0-beta.15", path = "crates/core", default-features = false } -wasmi_collections = { version = "0.32.0-beta.15", path = "crates/collections", default-features = false } +wasmi = { version = "0.32.0-beta.16", path = "crates/wasmi", default-features = false } +wasmi_wasi = { version = "0.32.0-beta.16", path = "crates/wasi", default-features = false } +wasmi_core = { version = "0.32.0-beta.16", path = "crates/core", default-features = false } +wasmi_collections = { version = "0.32.0-beta.16", path = "crates/collections", default-features = false } num-traits = { version = "0.2.8", default-features = false } [profile.bench]