Update wasm-tools crates (#5631)

Nothing major pulled in here, but wanted to update to the latest
versions which enable tail calls by default. When used in Wasmtime,
however, the feature is disabled without the possibility of being
enabled since it's not implemented.
This commit is contained in:
Alex Crichton
2023-01-25 10:33:26 -06:00
committed by GitHub
parent b58a197d33
commit a7d0d00e57
7 changed files with 94 additions and 31 deletions

38
Cargo.lock generated
View File

@@ -3257,18 +3257,18 @@ checksum = "d554b7f530dee5964d9a9468d95c1f8b8acae4f282807e7d27d4b03099a46744"
[[package]]
name = "wasm-encoder"
version = "0.21.0"
version = "0.22.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "29ab2fe77b325731603297debb4573e002d06ae0aa1f4dc108585c81961e0609"
checksum = "ef126be0e14bdf355ac1a8b41afc89195289e5c7179f80118e3abddb472f0810"
dependencies = [
"leb128",
]
[[package]]
name = "wasm-mutate"
version = "0.2.14"
version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2f8b34ecab2aadb3a974fc96d38a37780793b1a44f9e681ed68f7e69757ca90"
checksum = "dd32bdc265dba5092bf434475b12b9e54dd405938a487bdd86aa41873fbd8532"
dependencies = [
"egg",
"log",
@@ -3280,9 +3280,9 @@ dependencies = [
[[package]]
name = "wasm-smith"
version = "0.11.11"
version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "00e76ca2ad5d10fdcd08d9af00ac02585a1e53a60020b0eda8874922f5d49bff"
checksum = "efa1d0e7cff965d746a1f559470bf4d9fbafd34fe11d4e34cfd0c382259bb986"
dependencies = [
"arbitrary",
"flagset",
@@ -3332,9 +3332,9 @@ dependencies = [
[[package]]
name = "wasmparser"
version = "0.97.0"
version = "0.99.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b98123a0d2bacf9286239231b116cbd66c65d9b89793f7c9bba3a3ae7f1b15f3"
checksum = "9ef3b717afc67f848f412d4f02c127dd3e35a0eecd58c684580414df4fde01d3"
dependencies = [
"indexmap",
"url",
@@ -3351,9 +3351,9 @@ dependencies = [
[[package]]
name = "wasmprinter"
version = "0.2.46"
version = "0.2.49"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "595cca929e47a7bec3c941b5a8e133f51b17e6d9dd8c82ab97902196f5a07b42"
checksum = "27c13dff901f9354fa9a6a877152d9c5642513645985635c9b83bcca99e40ea1"
dependencies = [
"anyhow",
"wasmparser",
@@ -3505,7 +3505,7 @@ dependencies = [
"wasmtime-wasi-crypto",
"wasmtime-wasi-nn",
"wasmtime-wast",
"wast 51.0.0",
"wast 52.0.2",
"wat",
"windows-sys",
]
@@ -3779,7 +3779,7 @@ dependencies = [
"anyhow",
"log",
"wasmtime",
"wast 51.0.0",
"wast 52.0.2",
]
[[package]]
@@ -3814,9 +3814,9 @@ dependencies = [
[[package]]
name = "wast"
version = "51.0.0"
version = "52.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1f621e6e9af96438d3e05f0699da5b1dae59f2df964a2982166aa9b03c5b599"
checksum = "707a9fd59b0144c530f0a31f21737036ffea6ece492918cae0843dd09b6f9bc9"
dependencies = [
"leb128",
"memchr",
@@ -3826,11 +3826,11 @@ dependencies = [
[[package]]
name = "wat"
version = "1.0.53"
version = "1.0.56"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5dd18c1168d7e8743d9b4f713c0203924f5dcc4a3983eb5e584de9614f9fccde"
checksum = "91d73cbaa81acc2f8a3303e2289205c971d99c89245c2f56ab8765c4daabc2be"
dependencies = [
"wast 51.0.0",
"wast 52.0.2",
]
[[package]]
@@ -4069,9 +4069,9 @@ dependencies = [
[[package]]
name = "wit-parser"
version = "0.4.0"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "02cfa79275011530f37e0e164183c606bae1cdc466ea90bcd364d50605486a4d"
checksum = "2e60c4242d4cf4394fac7587c0d96c39b3c0fb09e638815c3f244f6bb5356f04"
dependencies = [
"anyhow",
"id-arena",

View File

@@ -161,14 +161,14 @@ winch-test-macros = { path = "winch/test-macros" }
target-lexicon = { version = "0.12.3", default-features = false, features = ["std"] }
anyhow = "1.0.22"
wasmparser = "0.97.0"
wat = "1.0.53"
wast = "51.0.0"
wasmprinter = "0.2.46"
wasm-encoder = "0.21.0"
wasm-smith = "0.11.11"
wasm-mutate = "0.2.14"
wit-parser = "0.4"
wasmparser = "0.99.0"
wat = "1.0.56"
wast = "52.0.2"
wasmprinter = "0.2.49"
wasm-encoder = "0.22.0"
wasm-smith = "0.12.0"
wasm-mutate = "0.2.16"
wit-parser = "0.4.1"
windows-sys = "0.42.0"
env_logger = "0.9"
rustix = "0.36.7"

View File

@@ -2117,6 +2117,12 @@ pub fn translate_operator<FE: FuncEnvironment + ?Sized>(
Operator::ReturnCall { .. } | Operator::ReturnCallIndirect { .. } => {
return Err(wasm_unsupported!("proposed tail-call operator {:?}", op));
}
Operator::MemoryDiscard { .. } => {
return Err(wasm_unsupported!(
"proposed memory-control operator {:?}",
op
));
}
Operator::I8x16RelaxedSwizzle
| Operator::I32x4RelaxedTruncSatF32x4S
| Operator::I32x4RelaxedTruncSatF32x4U

View File

@@ -311,6 +311,10 @@ impl<'a> Arbitrary<'a> for Config {
module_config: u.arbitrary()?,
};
// This is pulled from `u` by default via `wasm-smith`, but Wasmtime
// doesn't implement this yet, so forcibly always disable it.
config.module_config.config.tail_call_enabled = false;
config
.wasmtime
.codegen

View File

@@ -198,6 +198,11 @@ impl Config {
ret.wasm_bulk_memory(true);
ret.wasm_simd(true);
ret.wasm_backtrace_details(WasmBacktraceDetails::Environment);
// This is on-by-default in `wasmparser` since it's a stage 4+ proposal
// but it's not implemented in Wasmtime yet so disable it.
ret.features.tail_call = false;
ret
}

View File

@@ -163,7 +163,6 @@ struct WasmFeatures {
component_model: bool,
simd: bool,
threads: bool,
tail_call: bool,
multi_memory: bool,
exceptions: bool,
memory64: bool,
@@ -187,6 +186,7 @@ impl Metadata {
memory64,
relaxed_simd,
extended_const,
memory_control,
// Always on; we don't currently have knobs for these.
mutable_global: _,
@@ -195,6 +195,9 @@ impl Metadata {
floats: _,
} = engine.config().features;
assert!(!memory_control);
assert!(!tail_call);
Metadata {
target: engine.compiler().triple().to_string(),
shared_flags: engine.compiler().flags(),
@@ -207,7 +210,6 @@ impl Metadata {
component_model,
simd,
threads,
tail_call,
multi_memory,
exceptions,
memory64,
@@ -372,7 +374,6 @@ impl Metadata {
component_model,
simd,
threads,
tail_call,
multi_memory,
exceptions,
memory64,
@@ -402,7 +403,6 @@ impl Metadata {
)?;
Self::check_bool(simd, other.simd, "WebAssembly SIMD support")?;
Self::check_bool(threads, other.threads, "WebAssembly threads support")?;
Self::check_bool(tail_call, other.tail_call, "WebAssembly tail-call support")?;
Self::check_bool(
multi_memory,
other.multi_memory,

View File

@@ -619,6 +619,12 @@ criteria = "safe-to-deploy"
version = "0.21.0"
notes = "The Bytecode Alliance is the author of this crate."
[[audits.wasm-encoder]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy"
version = "0.22.0"
notes = "The Bytecode Alliance is the author of this crate."
[[audits.wasm-encoder]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy"
@@ -685,6 +691,12 @@ criteria = "safe-to-run"
version = "0.2.14"
notes = "The Bytecode Alliance is the author of this crate."
[[audits.wasm-mutate]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-run"
version = "0.2.16"
notes = "The Bytecode Alliance is the author of this crate."
[[audits.wasm-smith]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy"
@@ -745,6 +757,12 @@ criteria = "safe-to-run"
version = "0.11.11"
notes = "The Bytecode Alliance is the author of this crate."
[[audits.wasm-smith]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-run"
version = "0.12.0"
notes = "The Bytecode Alliance is the author of this crate."
[[audits.wasmi]]
who = "Robin Freyler <robin.freyler@gmail.com>"
criteria = "safe-to-run"
@@ -853,6 +871,12 @@ criteria = "safe-to-deploy"
version = "0.97.0"
notes = "The Bytecode Alliance is the author of this crate."
[[audits.wasmparser]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy"
version = "0.99.0"
notes = "The Bytecode Alliance is the author of this crate."
[[audits.wasmparser-nostd]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-run"
@@ -924,6 +948,12 @@ criteria = "safe-to-deploy"
version = "0.2.46"
notes = "The Bytecode Alliance is the author of this crate."
[[audits.wasmprinter]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy"
version = "0.2.49"
notes = "The Bytecode Alliance is the author of this crate."
[[audits.wast]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy"
@@ -984,6 +1014,12 @@ criteria = "safe-to-deploy"
version = "51.0.0"
notes = "The Bytecode Alliance is the author of this crate."
[[audits.wast]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy"
version = "52.0.2"
notes = "The Bytecode Alliance is the author of this crate."
[[audits.wat]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy"
@@ -1026,6 +1062,12 @@ criteria = "safe-to-deploy"
version = "1.0.53"
notes = "The Bytecode Alliance is the author of this crate."
[[audits.wat]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy"
version = "1.0.56"
notes = "The Bytecode Alliance is the author of this crate."
[[audits.wat]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy"
@@ -1104,3 +1146,9 @@ criteria = "safe-to-deploy"
version = "0.4.0"
notes = "The Bytecode Alliance is the author of this crate."
[[audits.wit-parser]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy"
version = "0.4.1"
notes = "The Bytecode Alliance is the author of this crate."