Skip to content

Commit 0e4ca42

Browse files
committed
Update wasmer to 6.0
1 parent d9f14f8 commit 0e4ca42

File tree

9 files changed

+199
-713
lines changed

9 files changed

+199
-713
lines changed

Cargo.lock

+73-314
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

contracts/crypto-verify/Cargo.lock

+73-367
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/std/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ base64 = "0.22.0"
5858
bnum = "0.11.0"
5959
cosmwasm-core = { version = "2.2.0-rc.1", path = "../core" }
6060
cosmwasm-derive = { version = "2.2.0-rc.1", path = "../derive" }
61-
derive_more = { version = "=1.0.0-beta.6", default-features = false, features = [
61+
derive_more = { version = "1.0.0", default-features = false, features = [
6262
"debug",
6363
] }
6464
hex = "0.4"

packages/vm/Cargo.toml

+4-4
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ cosmwasm-std = { version = "2.2.0-rc.1", path = "../std", default-features = fal
5050
] }
5151
cosmwasm-crypto = { version = "2.2.0-rc.1", path = "../crypto" }
5252
cosmwasm-vm-derive = { version = "2.2.0-rc.1", path = "../vm-derive" }
53-
derive_more = { version = "=1.0.0-beta.6", default-features = false, features = [
53+
derive_more = { version = "1.0.0", default-features = false, features = [
5454
"debug",
5555
] }
5656
hex = "0.4"
@@ -60,11 +60,11 @@ serde_json = "1.0.140"
6060
sha2 = "0.10.3"
6161
thiserror = "1.0.26"
6262
# We pin wasmer to a specific version because the layout of cached modules can change between patch versions.
63-
wasmer = { version = "=5.0.4", default-features = false, features = [
63+
wasmer = { version = "=6.0.0-beta.1", default-features = false, features = [
6464
"singlepass",
6565
] }
66-
wasmer-middlewares = "=5.0.4"
67-
wasmer-types = "=5.0.4"
66+
wasmer-middlewares = "=6.0.0-beta.1"
67+
wasmer-types = "=6.0.0-beta.1"
6868
strum = { version = "0.26.2", default-features = false, features = ["derive"] }
6969
# For heap profiling. Only used in the "heap_profiling" example. This has to be a non-dev dependency
7070
# because cargo currently does not support optional dev-dependencies.

packages/vm/src/modules/file_system_cache.rs

+9-9
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use std::path::{Path, PathBuf};
77
use std::sync::OnceLock;
88
use thiserror::Error;
99

10-
use wasmer::{DeserializeError, Module, Target};
10+
use wasmer::{sys::Target, DeserializeError, Module};
1111

1212
use cosmwasm_std::Checksum;
1313

@@ -79,7 +79,7 @@ fn raw_module_version_discriminator() -> String {
7979
let mut hasher = Blake2b::<U5>::new();
8080

8181
hasher.update(MODULE_SERIALIZATION_VERSION.as_bytes());
82-
hasher.update(wasmer::VERSION.as_bytes());
82+
hasher.update(wasmer_types::VERSION.as_bytes());
8383

8484
for hash in hashes {
8585
hasher.update(hash);
@@ -414,18 +414,18 @@ mod tests {
414414

415415
#[test]
416416
fn target_id_works() {
417-
let triple = wasmer::Triple {
418-
architecture: wasmer::Architecture::X86_64,
417+
let triple = wasmer::sys::Triple {
418+
architecture: wasmer::sys::Architecture::X86_64,
419419
vendor: target_lexicon::Vendor::Nintendo,
420420
operating_system: target_lexicon::OperatingSystem::Fuchsia,
421421
environment: target_lexicon::Environment::Gnu,
422422
binary_format: target_lexicon::BinaryFormat::Coff,
423423
};
424-
let target = Target::new(triple.clone(), wasmer::CpuFeature::POPCNT.into());
424+
let target = Target::new(triple.clone(), wasmer::sys::CpuFeature::POPCNT.into());
425425
let id = target_id(&target);
426426
assert_eq!(id, "x86_64-nintendo-fuchsia-gnu-coff-719EEF18");
427427
// Changing CPU features changes the hash part
428-
let target = Target::new(triple, wasmer::CpuFeature::AVX512DQ.into());
428+
let target = Target::new(triple, wasmer::sys::CpuFeature::AVX512DQ.into());
429429
let id = target_id(&target);
430430
assert_eq!(id, "x86_64-nintendo-fuchsia-gnu-coff-E3770FA3");
431431

@@ -439,14 +439,14 @@ mod tests {
439439
#[test]
440440
fn modules_path_works() {
441441
let base = PathBuf::from("modules");
442-
let triple = wasmer::Triple {
443-
architecture: wasmer::Architecture::X86_64,
442+
let triple = wasmer::sys::Triple {
443+
architecture: wasmer::sys::Architecture::X86_64,
444444
vendor: target_lexicon::Vendor::Nintendo,
445445
operating_system: target_lexicon::OperatingSystem::Fuchsia,
446446
environment: target_lexicon::Environment::Gnu,
447447
binary_format: target_lexicon::BinaryFormat::Coff,
448448
};
449-
let target = Target::new(triple, wasmer::CpuFeature::POPCNT.into());
449+
let target = Target::new(triple, wasmer::sys::CpuFeature::POPCNT.into());
450450
let p = modules_path(&base, 17, &target);
451451
let discriminator = raw_module_version_discriminator();
452452

packages/vm/src/parsed_wasm.rs

+6-3
Original file line numberDiff line numberDiff line change
@@ -126,9 +126,12 @@ impl<'a> ParsedWasm<'a> {
126126
this.max_func_results =
127127
core::cmp::max(ft.results().len(), this.max_func_results);
128128
}
129-
CompositeInnerType::Array(_) | CompositeInnerType::Struct(_) => {
130-
// ignoring these for now, as they are only available with the GC
131-
// proposal and we explicitly disabled that above
129+
CompositeInnerType::Array(_)
130+
| CompositeInnerType::Struct(_)
131+
| CompositeInnerType::Cont(_) => {
132+
// ignoring these for now, as they are only available with the
133+
// GC / stack switching proposal and we explicitly disabled
134+
// that above
132135
}
133136
}
134137
}

packages/vm/src/wasm_backend/engine.rs

+3-5
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
use cosmwasm_vm_derive::hash_function;
22
use std::sync::Arc;
3-
use wasmer::NativeEngineExt;
4-
use wasmer::{
5-
sys::BaseTunables, wasmparser::Operator, CompilerConfig, Engine, Pages, Target, WASM_PAGE_SIZE,
6-
};
3+
use wasmer::sys::{engine::NativeEngineExt, BaseTunables, CompilerConfig, Target};
4+
use wasmer::{wasmparser::Operator, Engine, Pages, WASM_PAGE_SIZE};
75
use wasmer_middlewares::metering::{is_accounting, Metering};
86

97
use crate::size::Size;
@@ -47,7 +45,7 @@ fn cost(operator: &Operator) -> u64 {
4745

4846
/// Creates a compiler config using Singlepass
4947
pub fn make_compiler_config() -> impl CompilerConfig + Into<Engine> {
50-
wasmer::Singlepass::new()
48+
wasmer::sys::Singlepass::new()
5149
}
5250

5351
/// Creates an engine without a compiler.

packages/vm/src/wasm_backend/gatekeeper.rs

+22-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use wasmer::wasmparser::Operator;
22
use wasmer::{
3-
FunctionMiddleware, LocalFunctionIndex, MiddlewareError, MiddlewareReaderState,
4-
ModuleMiddleware,
3+
sys::{FunctionMiddleware, MiddlewareError, MiddlewareReaderState, ModuleMiddleware},
4+
LocalFunctionIndex,
55
};
66

77
#[derive(Debug, Clone, Copy)]
@@ -112,7 +112,7 @@ impl FunctionMiddleware for FunctionGatekeeper {
112112
}
113113
/// Matches on the given operator and calls the corresponding handler function.
114114
macro_rules! gatekeep {
115-
($( @$proposal:ident $op:ident $({ $($payload:tt)* })? => $visit:ident)*) => {{
115+
($( @$proposal:ident $op:ident $({ $($payload:tt)* })? => $visit:ident ($($ann:tt)*))*) => {{
116116
use wasmer::wasmparser::Operator::*;
117117

118118
let mut proposal_validator = ProposalValidator {
@@ -126,7 +126,8 @@ impl FunctionMiddleware for FunctionGatekeeper {
126126
match_op!($op $({ $($payload)* })?) => {
127127
proposal_validator.$proposal(operator)
128128
}
129-
)*
129+
)*,
130+
_ => unreachable!(), // required because `Operator` enum is non-exhaustive
130131
}
131132
}}
132133
}
@@ -366,14 +367,30 @@ impl<'a, 'b> ProposalValidator<'a, 'b> {
366367
);
367368
Err(MiddlewareError::new(MIDDLEWARE_NAME, msg))
368369
}
370+
371+
#[inline]
372+
fn stack_switching(&'b mut self, operator: Operator<'a>) -> Result<(), MiddlewareError> {
373+
let msg = format!(
374+
"Stack switching operation detected: {operator:?}. Stack switching is not supported."
375+
);
376+
Err(MiddlewareError::new(MIDDLEWARE_NAME, msg))
377+
}
378+
379+
#[inline]
380+
fn wide_arithmetic(&'b mut self, operator: Operator<'a>) -> Result<(), MiddlewareError> {
381+
let msg = format!(
382+
"Stack switching operation detected: {operator:?}. Stack switching is not supported."
383+
);
384+
Err(MiddlewareError::new(MIDDLEWARE_NAME, msg))
385+
}
369386
}
370387

371388
#[cfg(test)]
372389
mod tests {
373390
use super::*;
374391
use crate::wasm_backend::make_compiler_config;
375392
use std::sync::Arc;
376-
use wasmer::{CompilerConfig, Module, Store};
393+
use wasmer::{sys::CompilerConfig, Module, Store};
377394

378395
#[test]
379396
fn valid_wasm_instance_sanity() {

packages/vm/src/wasm_backend/limiting_tunables.rs

+8-5
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
use std::ptr::NonNull;
22

33
use wasmer::{
4-
vm::{
5-
MemoryError, MemoryStyle, TableStyle, VMMemory, VMMemoryDefinition, VMTable,
6-
VMTableDefinition,
4+
sys::{
5+
vm::{
6+
MemoryError, MemoryStyle, TableStyle, VMMemory, VMMemoryDefinition, VMTable,
7+
VMTableDefinition,
8+
},
9+
Tunables,
710
},
8-
MemoryType, Pages, TableType, Tunables,
11+
MemoryType, Pages, TableType,
912
};
1013

1114
/// A custom tunables that allows you to set a memory limit.
@@ -128,7 +131,7 @@ impl<T: Tunables> Tunables for LimitingTunables<T> {
128131
#[cfg(test)]
129132
mod tests {
130133
use super::*;
131-
use wasmer::{sys::BaseTunables, Target};
134+
use wasmer::sys::{BaseTunables, Target};
132135

133136
#[test]
134137
fn adjust_memory_works() {

0 commit comments

Comments
 (0)