diff --git a/CHANGELOG.md b/CHANGELOG.md index 59554442ca..587f70532f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,29 @@ 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.26.0`] - 2023-02-11 + +### Added + +- `wasmi` CLI: Add WASI support. (https://github.com/paritytech/wasmi/pull/597) + - Big shoutout to [Onigbinde Oluwamuyiwa Elijah](https://github.com/OLUWAMUYIWA) for contributing this to `wasmi`! +- Add built-in support for fuel metering. (https://github.com/paritytech/wasmi/pull/653) + - This allows to control the runtime of Wasm executions in a deterministic fasion + effectively avoiding the halting problem by charging for executed instructions. + Not using the feature will not affect the execution efficiency of `wasmi` for users. +- Add `Pages::checked_sub` method. (https://github.com/paritytech/wasmi/pull/660) +- Add `Func::new` constructor. (https://github.com/paritytech/wasmi/pull/662) + - This allows to create `Func` instances from closures without statically known types. + +### Changed + +- Update to `wasmparser-nostd` version `0.100.1`. (https://github.com/paritytech/wasmi/pull/666) + +### Internal + +- Clean up and reorganization of the `wasmi_cli` crate. (https://github.com/paritytech/wasmi/pull/655) +- Refactoring of internal host call API. (https://github.com/paritytech/wasmi/pull/664) + ## [`0.25.0`] - 2023-02-04 ### Added diff --git a/README.md b/README.md index 71ea7aaef9..d5a36cda4f 100644 --- a/README.md +++ b/README.md @@ -36,14 +36,13 @@ such as Wasmtime it is also a decent option for initial prototyping. The following list states some of the distinct features of `wasmi`. -- Primarily concerned about - - correct and deterministic WebAssembly execution. - - WebAssembly specification compliance. -- Can itself be compiled to and executed via WebAssembly. +- Focus on simple, correct and deterministic WebAssembly execution. +- Can itself run inside of WebAssembly. - Low-overhead and cross-platform WebAssembly runtime. -- Loosely mirrors the [Wasmtime API](https://docs.rs/wasmtime/) - to act as a drop-in solution. -- Supports resumable function calls. +- Loosely mirrors the [Wasmtime API](https://docs.rs/wasmtime/). +- Resumable function calls. +- Built-in support for fuel metering. +- 100% official WebAssembly spec testsuite compliance. ## WebAssembly Proposals @@ -61,7 +60,7 @@ The new `wasmi` engine supports a variety of WebAssembly proposals and will supp | [`tail-calls`] | ⌛ | Support is planned. [(#363)] | | [`extended-const`] | ⌛ | Support is planned. [(#638)] | | | | -| [WASI] | 🟡 | Experimental support via the [`wasmi_wasi` crate]. | +| [WASI] | 🟡 | Experimental support via the [`wasmi_wasi` crate] or the `wasmi` CLI application. | [`mutable-global`]: https://github.com/WebAssembly/mutable-global [`saturating-float-to-int`]: https://github.com/WebAssembly/nontrapping-float-to-int-conversions @@ -95,7 +94,6 @@ Then run arbitrary `wasm32-unknown-unknown` Wasm blobs via: ```console wasmi_cli []* ``` -**Note:** As of version `v0.23.1` the `wasmi_cli` application does not yet support WASI out of the box. ### As Rust Library diff --git a/crates/cli/Cargo.toml b/crates/cli/Cargo.toml index 0c2971b233..8ada4517da 100644 --- a/crates/cli/Cargo.toml +++ b/crates/cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmi_cli" -version = "0.25.0" +version = "0.26.0" documentation = "https://docs.rs/wasmi/" description = "WebAssembly interpreter" publish = true @@ -14,7 +14,7 @@ categories.workspace = true [dependencies] clap = { version = "4", features = ["derive"] } -wasmi = { path = "../wasmi", version = "0.25.0" } +wasmi = { path = "../wasmi", version = "0.26.0" } wat = "1" anyhow = "1" wasmi_wasi = { path = "../wasi" } diff --git a/crates/core/Cargo.toml b/crates/core/Cargo.toml index 4c5037b33c..c93ce632a4 100644 --- a/crates/core/Cargo.toml +++ b/crates/core/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmi_core" -version = "0.10.0" +version = "0.11.0" documentation = "https://docs.rs/wasmi_core" description = "Core primitives for the wasmi WebAssembly interpreter" authors.workspace = true diff --git a/crates/wasi/Cargo.toml b/crates/wasi/Cargo.toml index 626a28e806..ff9ab0761b 100644 --- a/crates/wasi/Cargo.toml +++ b/crates/wasi/Cargo.toml @@ -10,7 +10,7 @@ edition = "2021" wasi-common = "2.0" wasi-cap-std-sync = "2.0" wiggle = { version = "2.0", default-features = false, features = ["wiggle_metadata"] } -wasmi = { version = "0.25.0", path = "../wasmi" } +wasmi = { version = "0.26.0", path = "../wasmi" } [dev-dependencies] wat = "1.0.50" diff --git a/crates/wasmi/Cargo.toml b/crates/wasmi/Cargo.toml index 9fac04d0ad..9f97151afd 100644 --- a/crates/wasmi/Cargo.toml +++ b/crates/wasmi/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmi" -version = "0.25.0" +version = "0.26.0" documentation = "https://docs.rs/wasmi/" description = "WebAssembly interpreter" exclude = ["tests/*", "benches/*"] @@ -14,7 +14,7 @@ categories.workspace = true [dependencies] wasmparser = { version = "0.100.1", package = "wasmparser-nostd", default-features = false } -wasmi_core = { version = "0.10", path = "../core", default-features = false } +wasmi_core = { version = "0.11", path = "../core", default-features = false } wasmi_arena = { version = "0.4", path = "../arena", default-features = false } spin = { version = "0.9", default-features = false, features = [ "mutex",