diff --git a/CHANGELOG.md b/CHANGELOG.md index 658742c4bdb..4b5b8a80ad3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## **[Unreleased]** +- [#1029](https://github.com/wasmerio/wasmer/pull/1029) Add the “floating” `WasiVersion::Latest` version. - [#1006](https://github.com/wasmerio/wasmer/pull/1006) Fix minor panic issue when `wasmer::compile_with` called with llvm backend - [#1009](https://github.com/wasmerio/wasmer/pull/1009) Enable LLVM verifier for all tests, add new llvm-backend-tests crate. - [#1022](https://github.com/wasmerio/wasmer/pull/1022) Add caching support for Singlepass backend. diff --git a/lib/wasi/src/lib.rs b/lib/wasi/src/lib.rs index ca439bfdbfe..712bfa4c737 100644 --- a/lib/wasi/src/lib.rs +++ b/lib/wasi/src/lib.rs @@ -142,7 +142,9 @@ pub fn generate_import_object_for_version( WasiVersion::Snapshot0 => { generate_import_object_snapshot0(args, envs, preopened_files, mapped_dirs) } - WasiVersion::Snapshot1 => generate_import_object(args, envs, preopened_files, mapped_dirs), + WasiVersion::Snapshot1 | WasiVersion::Latest => { + generate_import_object(args, envs, preopened_files, mapped_dirs) + } } } diff --git a/lib/wasi/src/utils.rs b/lib/wasi/src/utils.rs index b19a404884b..d57510eb5f3 100644 --- a/lib/wasi/src/utils.rs +++ b/lib/wasi/src/utils.rs @@ -7,13 +7,26 @@ pub fn is_wasi_module(module: &Module) -> bool { get_wasi_version(module).is_some() } -/// The version of WASI. This is determined by the namespace string +/// The version of WASI. This is determined by the imports namespace +/// string. #[derive(Debug, Clone, Copy, PartialEq)] pub enum WasiVersion { - /// "wasi_unstable" + /// `wasi_unstable`. Snapshot0, - /// "wasi_snapshot_preview1" + /// `wasi_snapshot_preview1`. Snapshot1, + + /// Latest version. + /// + /// It's a “floating” version, i.e. it's an alias to the latest + /// version (for the moment, `Snapshot1`). Using this version is a + /// way to ensure that modules will run only if they come with the + /// latest WASI version (in case of security issues for instance), + /// by just updating the runtime. + /// + /// Note that this version is never returned by an API. It is + /// provided only by the user. + Latest, } /// Detect the version of WASI being used from the namespace