Bump wasmtime to 5.0.0 (and a few other deps) (#13160)

* Bump `wasmtime` to 4.0.0 (and a few other deps)

* Use `Error::msg` instead of `anyhow!`

* Bump `wasmtime` to 5.0.0

* Update `Cargo.lock`

* Add `wasmtime` feature to `sp-wasm-interface` dependency
This commit is contained in:
Koute
2023-02-07 00:40:50 +09:00
committed by GitHub
parent 8851bbb0f0
commit 44cbf303c4
10 changed files with 154 additions and 140 deletions
+74 -85
View File
@@ -813,15 +813,16 @@ dependencies = [
[[package]]
name = "cargo_metadata"
version = "0.14.2"
version = "0.15.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4acbb09d9ee8e23699b9634375c72795d095bf268439da88562cf9b501f181fa"
checksum = "982a0cf6a99c350d7246035613882e376d58cebe571785abc5da4f648d53ac0a"
dependencies = [
"camino",
"cargo-platform",
"semver 1.0.16",
"serde",
"serde_json",
"thiserror",
]
[[package]]
@@ -1178,18 +1179,18 @@ checksum = "dcb25d077389e53838a8158c8e99174c5a9d902dee4904320db714f3c653ffba"
[[package]]
name = "cranelift-bforest"
version = "0.88.2"
version = "0.92.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "52056f6d0584484b57fa6c1a65c1fcb15f3780d8b6a758426d9e3084169b2ddd"
checksum = "2f3d54eab028f5805ae3b26fd60eca3f3a9cfb76b989d9bab173be3f61356cc3"
dependencies = [
"cranelift-entity",
]
[[package]]
name = "cranelift-codegen"
version = "0.88.2"
version = "0.92.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "18fed94c8770dc25d01154c3ffa64ed0b3ba9d583736f305fed7beebe5d9cf74"
checksum = "2be1d5f2c3cca1efb691844bc1988b89c77291f13f778499a3f3c0cf49c0ed61"
dependencies = [
"arrayvec 0.7.2",
"bumpalo",
@@ -1199,6 +1200,7 @@ dependencies = [
"cranelift-entity",
"cranelift-isle",
"gimli 0.26.2",
"hashbrown 0.12.3",
"log",
"regalloc2",
"smallvec",
@@ -1207,33 +1209,33 @@ dependencies = [
[[package]]
name = "cranelift-codegen-meta"
version = "0.88.2"
version = "0.92.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1c451b81faf237d11c7e4f3165eeb6bac61112762c5cfe7b4c0fb7241474358f"
checksum = "3f9b1b1089750ce4005893af7ee00bb08a2cf1c9779999c0f7164cbc8ad2e0d2"
dependencies = [
"cranelift-codegen-shared",
]
[[package]]
name = "cranelift-codegen-shared"
version = "0.88.2"
version = "0.92.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e7c940133198426d26128f08be2b40b0bd117b84771fd36798969c4d712d81fc"
checksum = "cc5fbaec51de47297fd7304986fd53c8c0030abbe69728a60d72e1c63559318d"
[[package]]
name = "cranelift-entity"
version = "0.88.2"
version = "0.92.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "87a0f1b2fdc18776956370cf8d9b009ded3f855350c480c1c52142510961f352"
checksum = "dab984c94593f876090fae92e984bdcc74d9b1acf740ab5f79036001c65cba13"
dependencies = [
"serde",
]
[[package]]
name = "cranelift-frontend"
version = "0.88.2"
version = "0.92.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "34897538b36b216cc8dd324e73263596d51b8cf610da6498322838b2546baf8a"
checksum = "6e0cb3102d21a2fe5f3210af608748ddd0cd09825ac12d42dc56ed5ed8725fe0"
dependencies = [
"cranelift-codegen",
"log",
@@ -1243,15 +1245,15 @@ dependencies = [
[[package]]
name = "cranelift-isle"
version = "0.88.2"
version = "0.92.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1b2629a569fae540f16a76b70afcc87ad7decb38dc28fa6c648ac73b51e78470"
checksum = "72101dd1f441d629735143c41e00b3428f9267738176983ef588ff43382af0a0"
[[package]]
name = "cranelift-native"
version = "0.88.2"
version = "0.92.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "20937dab4e14d3e225c5adfc9c7106bafd4ac669bdb43027b911ff794c6fb318"
checksum = "c22b0d9fcbe3fc5a1af9e7021b44ce42b930bcefac446ce22e02e8f9a0d67120"
dependencies = [
"cranelift-codegen",
"libc",
@@ -1260,9 +1262,9 @@ dependencies = [
[[package]]
name = "cranelift-wasm"
version = "0.88.2"
version = "0.92.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "80fc2288957a94fd342a015811479de1837850924166d1f1856d8406e6f3609b"
checksum = "bddebe32fb14fbfd9efa5f130ffb8f4665795de019928dcd7247b136c46f9249"
dependencies = [
"cranelift-codegen",
"cranelift-entity",
@@ -3251,12 +3253,6 @@ dependencies = [
"webrtc-util",
]
[[package]]
name = "io-lifetimes"
version = "0.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "59ce5ef949d49ee85593fc4d3f3f95ad61657076395cbbce23e2121fc5542074"
[[package]]
name = "io-lifetimes"
version = "1.0.3"
@@ -3298,8 +3294,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "28dfb6c8100ccc63462345b67d1bbc3679177c75ee4bf59bf29c8b1d110b8189"
dependencies = [
"hermit-abi 0.2.6",
"io-lifetimes 1.0.3",
"rustix 0.36.6",
"io-lifetimes",
"rustix",
"windows-sys 0.42.0",
]
@@ -4193,12 +4189,6 @@ dependencies = [
"nalgebra",
]
[[package]]
name = "linux-raw-sys"
version = "0.0.46"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d4d2456c373231a208ad294c33dc5bff30051eafd954cd4caae83a712b12854d"
[[package]]
name = "linux-raw-sys"
version = "0.1.4"
@@ -4349,7 +4339,7 @@ version = "0.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b20a59d985586e4a5aef64564ac77299f8586d8be6cf9106a5a40207e8908efb"
dependencies = [
"rustix 0.36.6",
"rustix",
]
[[package]]
@@ -7550,9 +7540,9 @@ dependencies = [
[[package]]
name = "regalloc2"
version = "0.3.2"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d43a209257d978ef079f3d446331d0f1794f5e0fc19b306a199983857833a779"
checksum = "300d4fbfb40c1c66a78ba3ddd41c1110247cf52f97b87d0f2fc9209bd49b030c"
dependencies = [
"fxhash",
"log",
@@ -7747,20 +7737,6 @@ dependencies = [
"nom",
]
[[package]]
name = "rustix"
version = "0.35.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "727a1a6d65f786ec22df8a81ca3121107f235970dc1705ed681d3e6e8b9cd5f9"
dependencies = [
"bitflags",
"errno",
"io-lifetimes 0.7.5",
"libc",
"linux-raw-sys 0.0.46",
"windows-sys 0.42.0",
]
[[package]]
name = "rustix"
version = "0.36.6"
@@ -7769,9 +7745,9 @@ checksum = "4feacf7db682c6c329c4ede12649cd36ecab0f3be5b7d74e6a20304725db4549"
dependencies = [
"bitflags",
"errno",
"io-lifetimes 1.0.3",
"io-lifetimes",
"libc",
"linux-raw-sys 0.1.4",
"linux-raw-sys",
"windows-sys 0.42.0",
]
@@ -8389,13 +8365,15 @@ dependencies = [
name = "sc-executor-wasmtime"
version = "0.10.0-dev"
dependencies = [
"anyhow",
"cargo_metadata",
"cfg-if",
"libc",
"log",
"once_cell",
"parity-scale-codec",
"paste",
"rustix 0.35.13",
"rustix",
"sc-allocator",
"sc-executor-common",
"sc-runtime-test",
@@ -10418,6 +10396,7 @@ dependencies = [
name = "sp-wasm-interface"
version = "7.0.0"
dependencies = [
"anyhow",
"impl-trait-for-tuples",
"log",
"parity-scale-codec",
@@ -11918,11 +11897,12 @@ dependencies = [
[[package]]
name = "wasmparser"
version = "0.89.1"
version = "0.96.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ab5d3e08b13876f96dd55608d03cd4883a0545884932d5adf11925876c96daef"
checksum = "adde01ade41ab9a5d10ec8ed0bb954238cf8625b5cd5a13093d6de2ad9c2be1a"
dependencies = [
"indexmap",
"url",
]
[[package]]
@@ -11936,9 +11916,9 @@ dependencies = [
[[package]]
name = "wasmtime"
version = "1.0.2"
version = "5.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4ad5af6ba38311282f2a21670d96e78266e8c8e2f38cbcd52c254df6ccbc7731"
checksum = "4e5b183a159484980138cc05231419c536d395a7b25c1802091310ea2f74276a"
dependencies = [
"anyhow",
"bincode",
@@ -11959,23 +11939,23 @@ dependencies = [
"wasmtime-environ",
"wasmtime-jit",
"wasmtime-runtime",
"windows-sys 0.36.1",
"windows-sys 0.42.0",
]
[[package]]
name = "wasmtime-asm-macros"
version = "1.0.2"
version = "5.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "45de63ddfc8b9223d1adc8f7b2ee5f35d1f6d112833934ad7ea66e4f4339e597"
checksum = "c0aeb1cb256d76cf07b20264c808351c8b525ece56de1ef4d93f87a0aaf342db"
dependencies = [
"cfg-if",
]
[[package]]
name = "wasmtime-cache"
version = "1.0.2"
version = "5.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bcd849399d17d2270141cfe47fa0d91ee52d5f8ea9b98cf7ddde0d53e5f79882"
checksum = "830570847f905b8f6d2ca635c33cf42ce701dd8e4abd7d1806c631f8f06e9e4b"
dependencies = [
"anyhow",
"base64",
@@ -11983,19 +11963,19 @@ dependencies = [
"directories-next",
"file-per-thread-logger",
"log",
"rustix 0.35.13",
"rustix",
"serde",
"sha2 0.9.9",
"sha2 0.10.6",
"toml",
"windows-sys 0.36.1",
"windows-sys 0.42.0",
"zstd",
]
[[package]]
name = "wasmtime-cranelift"
version = "1.0.2"
version = "5.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4bd91339b742ff20bfed4532a27b73c86b5bcbfedd6bea2dcdf2d64471e1b5c6"
checksum = "2f7695d3814dcb508bf4d1c181a86ea6b97a209f6444478e95d86e2ffab8d1a3"
dependencies = [
"anyhow",
"cranelift-codegen",
@@ -12014,9 +11994,9 @@ dependencies = [
[[package]]
name = "wasmtime-environ"
version = "1.0.2"
version = "5.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ebb881c61f4f627b5d45c54e629724974f8a8890d455bcbe634330cc27309644"
checksum = "e5a2a5f0fb93aa837a727a48dd1076e8a9f882cc2fee20b433c04a18740ff63b"
dependencies = [
"anyhow",
"cranelift-entity",
@@ -12033,9 +12013,9 @@ dependencies = [
[[package]]
name = "wasmtime-jit"
version = "1.0.2"
version = "5.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1985c628011fe26adf5e23a5301bdc79b245e0e338f14bb58b39e4e25e4d8681"
checksum = "01c78f9fb2922dbb5a95f009539d4badb44866caeeb53d156bf2cf4d683c3afd"
dependencies = [
"addr2line 0.17.0",
"anyhow",
@@ -12046,32 +12026,42 @@ dependencies = [
"log",
"object 0.29.0",
"rustc-demangle",
"rustix 0.35.13",
"serde",
"target-lexicon",
"thiserror",
"wasmtime-environ",
"wasmtime-jit-debug",
"wasmtime-jit-icache-coherence",
"wasmtime-runtime",
"windows-sys 0.36.1",
"windows-sys 0.42.0",
]
[[package]]
name = "wasmtime-jit-debug"
version = "1.0.2"
version = "5.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f671b588486f5ccec8c5a3dba6b4c07eac2e66ab8c60e6f4e53717c77f709731"
checksum = "67cacdb52a77b8c8e744e510beeabf0bd698b1c94c59eed33c52b3fbd19639b0"
dependencies = [
"object 0.29.0",
"once_cell",
"rustix 0.35.13",
"rustix",
]
[[package]]
name = "wasmtime-jit-icache-coherence"
version = "5.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "08fcba5ebd96da2a9f0747ab6337fe9788adfb3f63fa2c180520d665562d257e"
dependencies = [
"cfg-if",
"libc",
"windows-sys 0.42.0",
]
[[package]]
name = "wasmtime-runtime"
version = "1.0.2"
version = "5.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ee8f92ad4b61736339c29361da85769ebc200f184361959d1792832e592a1afd"
checksum = "0793210acf50d4c69182c916abaee1d423dc5d172cdfde6acfea2f9446725940"
dependencies = [
"anyhow",
"cc",
@@ -12084,19 +12074,18 @@ dependencies = [
"memoffset 0.6.5",
"paste",
"rand 0.8.5",
"rustix 0.35.13",
"thiserror",
"rustix",
"wasmtime-asm-macros",
"wasmtime-environ",
"wasmtime-jit-debug",
"windows-sys 0.36.1",
"windows-sys 0.42.0",
]
[[package]]
name = "wasmtime-types"
version = "1.0.2"
version = "5.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d23d61cb4c46e837b431196dd06abb11731541021916d03476a178b54dc07aeb"
checksum = "50d015ba8b231248a811e323cf7a525cd3f982d4be0b9e62d27685102e5f12b1"
dependencies = [
"cranelift-entity",
"serde",
@@ -19,18 +19,18 @@ log = "0.4.17"
# When bumping wasmtime do not forget to also bump rustix
# to exactly the same version as used by wasmtime!
wasmtime = { version = "1.0.0", default-features = false, features = [
wasmtime = { version = "5.0.0", default-features = false, features = [
"cache",
"cranelift",
"jitdump",
"parallel-compilation",
"memory-init-cow",
"pooling-allocator",
"pooling-allocator"
] }
anyhow = "1.0.68"
sc-allocator = { version = "4.1.0-dev", path = "../../allocator" }
sc-executor-common = { version = "0.10.0-dev", path = "../common" }
sp-runtime-interface = { version = "7.0.0", path = "../../../primitives/runtime-interface" }
sp-wasm-interface = { version = "7.0.0", path = "../../../primitives/wasm-interface" }
sp-wasm-interface = { version = "7.0.0", path = "../../../primitives/wasm-interface", features = ["wasmtime"] }
# Here we include the rustix crate in the exactly same semver-compatible version as used by
# wasmtime and enable its 'use-libc' flag.
@@ -38,7 +38,7 @@ sp-wasm-interface = { version = "7.0.0", path = "../../../primitives/wasm-interf
# By default rustix directly calls the appropriate syscalls completely bypassing libc;
# this doesn't have any actual benefits for us besides making it harder to debug memory
# problems (since then `mmap` etc. cannot be easily hooked into).
rustix = { version = "0.35.9", default-features = false, features = ["std", "mm", "fs", "param", "use-libc"] }
rustix = { version = "0.36.0", default-features = false, features = ["std", "mm", "fs", "param", "use-libc"] }
once_cell = "1.12.0"
[dev-dependencies]
@@ -48,3 +48,4 @@ sp-io = { version = "7.0.0", path = "../../../primitives/io" }
tempfile = "3.3.0"
paste = "1.0"
codec = { package = "parity-scale-codec", version = "3.2.2" }
cargo_metadata = "0.15.2"
@@ -20,7 +20,7 @@ use crate::{host::HostContext, runtime::StoreData};
use sc_executor_common::error::WasmError;
use sp_wasm_interface::{FunctionContext, HostFunctions};
use std::collections::HashMap;
use wasmtime::{ExternType, FuncType, ImportType, Linker, Module, Trap};
use wasmtime::{ExternType, FuncType, ImportType, Linker, Module};
/// Goes over all imports of a module and prepares the given linker for instantiation of the module.
/// Returns an error if there are imports that cannot be satisfied.
@@ -67,7 +67,7 @@ where
log::debug!("Missing import: '{}' {:?}", name, func_ty);
linker
.func_new("env", &name, func_ty.clone(), move |_, _, _| {
Err(Trap::new(error.clone()))
Err(anyhow::Error::msg(error.clone()))
})
.expect("adding a missing import stub can only fail when the item already exists, and it is missing here; qed");
}
@@ -76,27 +76,17 @@ impl EntryPoint {
.as_mut()
.expect("host state cannot be empty while a function is being called; qed");
// The logic to print out a backtrace is somewhat complicated,
// so let's get wasmtime to print it out for us.
let mut backtrace_string = trap.to_string();
let suffix = "\nwasm backtrace:";
if let Some(index) = backtrace_string.find(suffix) {
// Get rid of the error message and just grab the backtrace,
// since we're storing the error message ourselves separately.
backtrace_string.replace_range(0..index + suffix.len(), "");
}
let backtrace = trap.downcast_ref::<wasmtime::WasmBacktrace>().map(|backtrace| {
// The logic to print out a backtrace is somewhat complicated,
// so let's get wasmtime to print it out for us.
Backtrace { backtrace_string: backtrace.to_string() }
});
let backtrace = Backtrace { backtrace_string };
if let Some(error) = host_state.take_panic_message() {
Error::AbortedDueToPanic(MessageWithBacktrace {
message: error,
backtrace: Some(backtrace),
})
if let Some(message) = host_state.take_panic_message() {
Error::AbortedDueToPanic(MessageWithBacktrace { message, backtrace })
} else {
Error::AbortedDueToTrap(MessageWithBacktrace {
message: trap.display_reason().to_string(),
backtrace: Some(backtrace),
})
let message = trap.root_cause().to_string();
Error::AbortedDueToTrap(MessageWithBacktrace { message, backtrace })
}
})
}
@@ -106,7 +96,7 @@ impl EntryPoint {
ctx: impl AsContext,
) -> std::result::Result<Self, &'static str> {
let entrypoint = func
.typed::<(u32, u32), u64, _>(ctx)
.typed::<(u32, u32), u64>(ctx)
.map_err(|_| "Invalid signature for direct entry point")?;
Ok(Self { call_type: EntryPointType::Direct { entrypoint } })
}
@@ -117,7 +107,7 @@ impl EntryPoint {
ctx: impl AsContext,
) -> std::result::Result<Self, &'static str> {
let dispatcher = dispatcher
.typed::<(u32, u32, u32), u64, _>(ctx)
.typed::<(u32, u32, u32), u64>(ctx)
.map_err(|_| "Invalid signature for wrapped entry point")?;
Ok(Self { call_type: EntryPointType::Wrapped { func, dispatcher } })
}
@@ -366,29 +366,27 @@ fn common_config(semantics: &Semantics) -> std::result::Result<wasmtime::Config,
MAX_WASM_PAGES
};
config.allocation_strategy(wasmtime::InstanceAllocationStrategy::Pooling {
strategy: wasmtime::PoolingAllocationStrategy::ReuseAffinity,
let mut pooling_config = wasmtime::PoolingAllocationConfig::default();
pooling_config
.strategy(wasmtime::PoolingAllocationStrategy::ReuseAffinity)
// Pooling needs a bunch of hard limits to be set; if we go over
// any of these then the instantiation will fail.
instance_limits: wasmtime::InstanceLimits {
// Current minimum values for kusama (as of 2022-04-14):
// size: 32384
// table_elements: 1249
// memory_pages: 2070
size: 128 * 1024,
table_elements: 8192,
memory_pages,
//
// Current minimum values for kusama (as of 2022-04-14):
// size: 32384
// table_elements: 1249
// memory_pages: 2070
.instance_size(128 * 1024)
.instance_table_elements(8192)
.instance_memory_pages(memory_pages)
// We can only have a single of those.
.instance_tables(1)
.instance_memories(1)
// This determines how many instances of the module can be
// instantiated in parallel from the same `Module`.
.instance_count(32);
// We can only have a single of those.
tables: 1,
memories: 1,
// This determines how many instances of the module can be
// instantiated in parallel from the same `Module`.
count: 32,
},
});
config.allocation_strategy(wasmtime::InstanceAllocationStrategy::Pooling(pooling_config));
}
Ok(config)
@@ -226,8 +226,8 @@ fn deep_call_stack_wat(depth: usize) -> String {
// We need two limits here since depending on whether the code is compiled in debug
// or in release mode the maximum call depth is slightly different.
const CALL_DEPTH_LOWER_LIMIT: usize = 65478;
const CALL_DEPTH_UPPER_LIMIT: usize = 65514;
const CALL_DEPTH_LOWER_LIMIT: usize = 65455;
const CALL_DEPTH_UPPER_LIMIT: usize = 65503;
test_wasm_execution!(test_consume_under_1mb_of_stack_does_not_trap);
fn test_consume_under_1mb_of_stack_does_not_trap(instantiation_strategy: InstantiationStrategy) {
@@ -555,3 +555,34 @@ fn test_instances_without_reuse_are_not_leaked() {
instance.call_export("test_empty_return", &[0]).unwrap();
}
}
#[test]
fn test_rustix_version_matches_with_wasmtime() {
let metadata = cargo_metadata::MetadataCommand::new()
.manifest_path("../../../Cargo.toml")
.exec()
.unwrap();
let wasmtime_rustix = metadata
.packages
.iter()
.find(|pkg| pkg.name == "wasmtime-runtime")
.unwrap()
.dependencies
.iter()
.find(|dep| dep.name == "rustix")
.unwrap();
let our_rustix = metadata
.packages
.iter()
.find(|pkg| pkg.name == "sc-executor-wasmtime")
.unwrap()
.dependencies
.iter()
.find(|dep| dep.name == "rustix")
.unwrap();
if wasmtime_rustix.req != our_rustix.req {
panic!("our version of rustix ({0}) doesn't match wasmtime's ({1}); bump the version in `sc-executor-wasmtime`'s `Cargo.toml' to '{1}' and try again", our_rustix.req, wasmtime_rustix.req);
}
}
@@ -371,14 +371,14 @@ fn generate_host_function_implementation(
registry.register_static(
#crate_::sp_wasm_interface::Function::name(&#struct_name),
|mut caller: #crate_::sp_wasm_interface::wasmtime::Caller<T::State>, #(#ffi_args_prototype),*|
-> std::result::Result<#ffi_return_ty, #crate_::sp_wasm_interface::wasmtime::Trap>
-> std::result::Result<#ffi_return_ty, #crate_::sp_wasm_interface::anyhow::Error>
{
T::with_function_context(caller, move |__function_context__| {
let result = std::panic::catch_unwind(std::panic::AssertUnwindSafe(|| {
#struct_name::call(
__function_context__,
#(#ffi_names,)*
).map_err(#crate_::sp_wasm_interface::wasmtime::Trap::new)
).map_err(#crate_::sp_wasm_interface::anyhow::Error::msg)
}));
match result {
Ok(result) => result,
@@ -391,7 +391,7 @@ fn generate_host_function_implementation(
} else {
"host code panicked while being called by the runtime".to_owned()
};
return Err(#crate_::sp_wasm_interface::wasmtime::Trap::new(message));
return Err(#crate_::sp_wasm_interface::anyhow::Error::msg(message));
}
}
})
@@ -18,9 +18,11 @@ codec = { package = "parity-scale-codec", version = "3.2.2", default-features =
impl-trait-for-tuples = "0.2.2"
log = { version = "0.4.17", optional = true }
wasmi = { version = "0.13", optional = true }
wasmtime = { version = "1.0.0", default-features = false, optional = true }
wasmtime = { version = "5.0.0", default-features = false, optional = true }
anyhow = { version = "1.0.68", optional = true }
sp-std = { version = "5.0.0", default-features = false, path = "../std" }
[features]
default = [ "std" ]
std = [ "codec/std", "log", "sp-std/std", "wasmi", "wasmtime" ]
wasmtime = [ "dep:wasmtime", "anyhow" ]
@@ -41,6 +41,9 @@ macro_rules! if_wasmtime_is_enabled {
if_wasmtime_is_enabled! {
// Reexport wasmtime so that its types are accessible from the procedural macro.
pub use wasmtime;
// Wasmtime uses anyhow types but doesn't reexport them.
pub use anyhow;
}
/// Result type used by traits in this crate.
+1 -1
View File
@@ -15,7 +15,7 @@ targets = ["x86_64-unknown-linux-gnu"]
[dependencies]
ansi_term = "0.12.1"
build-helper = "0.1.1"
cargo_metadata = "0.14.2"
cargo_metadata = "0.15.2"
strum = { version = "0.24.1", features = ["derive"] }
tempfile = "3.1.0"
toml = "0.5.4"