diff options
| author | Henry <mail@henrygressmann.de> | 2026-07-22 21:28:35 +0200 |
|---|---|---|
| committer | Henry <mail@henrygressmann.de> | 2026-07-22 21:28:35 +0200 |
| commit | b484f2bc074dab2419245ec2443f60efd33b80f0 (patch) | |
| tree | 04c5a7ee1391b3ccb7fa836acc9eb3bf774c1088 | |
| parent | 1d754813f178fc92afffe43e3ab638ddfc03cb66 (diff) | |
chore: update deps, fix clippy warnings, add wast ModuleDefinition
Signed-off-by: Henry <mail@henrygressmann.de>
| -rw-r--r-- | Cargo.lock | 123 | ||||
| -rw-r--r-- | Cargo.toml | 6 | ||||
| -rw-r--r-- | crates/cli/src/engine_flags.rs | 2 | ||||
| -rw-r--r-- | crates/cli/src/load.rs | 6 | ||||
| -rw-r--r-- | crates/cli/src/value_parse.rs | 4 | ||||
| -rw-r--r-- | crates/cli/src/wast_runner.rs | 41 | ||||
| -rw-r--r-- | crates/tinywasm/tests/generated/wasm-custom-page-sizes.csv | 2 | ||||
| -rw-r--r-- | crates/tinywasm/tests/test-wast.rs | 2 |
8 files changed, 111 insertions, 75 deletions
@@ -99,15 +99,15 @@ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "bitflags" -version = "2.13.0" +version = "2.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" +checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da" [[package]] name = "bstr" -version = "1.12.3" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cee35f73844aa3014bb606320a6c1f010249dbdf43342fe54b5a4f6a8ed4b79" +checksum = "1f7dc094d718f2e1c1559ad110e27eeaae14a5465d3d56dd6dbd793079fbd530" dependencies = [ "memchr", "regex-automata", @@ -128,9 +128,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.2.67" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e17dd265a7d0f31ef544e1b20e03add05d3b45b491b633b10d67145d2acc1a38" +checksum = "c89588d05638b5b4594a3348a2d6c20277e43a7f5c5202b05cc56888475a47b8" dependencies = [ "find-msvc-tools", "shlex", @@ -171,9 +171,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.6.1" +version = "4.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51" +checksum = "d91e0c145792ef73a6ad36d27c75ac09f1832222a3c209689d90f534685ee5b7" dependencies = [ "clap_builder", "clap_derive", @@ -181,9 +181,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.6.0" +version = "4.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" +checksum = "f09628afdcc538b57f3c6341e9c8e9970f18e4a481690a64974d7023bd33548b" dependencies = [ "anstream", "anstyle", @@ -202,14 +202,14 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.6.1" +version = "4.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9" +checksum = "d012d2b9d65aca7f18f4d9878a045bc17899bba951561ba5ec3c2ba1eed9a061" dependencies = [ "heck", "proc-macro2", "quote", - "syn", + "syn 3.0.3", ] [[package]] @@ -363,9 +363,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" +checksum = "da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223" [[package]] name = "find-msvc-tools" @@ -503,9 +503,9 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" [[package]] name = "libc" -version = "0.2.186" +version = "0.2.189" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" +checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" [[package]] name = "libm" @@ -634,18 +634,18 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.106" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.46" +version = "1.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" +checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001" dependencies = [ "proc-macro2", ] @@ -678,9 +678,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.13.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2" +checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d" dependencies = [ "aho-corasick", "memchr", @@ -690,9 +690,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.15" +version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" +checksum = "8fcfdb36bda0c880c5931cdc7a2bcdc8ba4556847b9d912bca70bc94708711ad" dependencies = [ "aho-corasick", "memchr", @@ -735,9 +735,9 @@ checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" [[package]] name = "serde" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba" dependencies = [ "serde_core", "serde_derive", @@ -745,29 +745,29 @@ dependencies = [ [[package]] name = "serde_core" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.3", ] [[package]] name = "serde_json" -version = "1.0.150" +version = "1.0.151" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" +checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14" dependencies = [ "itoa", "memchr", @@ -790,9 +790,20 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "syn" -version = "2.0.118" +version = "2.0.119" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" +checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3" dependencies = [ "proc-macro2", "quote", @@ -829,22 +840,22 @@ checksum = "8f50febec83f5ee1df3015341d8bd429f2d1cc62bcba7ea2076759d315084683" [[package]] name = "thiserror" -version = "2.0.18" +version = "2.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +checksum = "09a43598840e33d5b0331f38c5e30d13bb11c11210a4b58f0d9b18a5a5eefcd9" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "2.0.18" +version = "2.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +checksum = "43cbfe0cf76104d42a574802844187e84a305e531ed54455f11fbde0f10541cd" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.3", ] [[package]] @@ -961,9 +972,9 @@ dependencies = [ [[package]] name = "wasm-encoder" -version = "0.253.0" +version = "0.254.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59972d6cd272259de647b7c1f1912e45e289c75ffd4be04e10695507cd7e1b59" +checksum = "09480d646178e5fdd12bb06e812d0af9a3a191dbc9cd697fdc86687beade7393" dependencies = [ "leb128fmt", "wasmparser", @@ -971,9 +982,9 @@ dependencies = [ [[package]] name = "wasm-testsuite" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e6dc75ed48aabddafbb334a698e6d9105cef4d1d3d39e89c4e95561ee0b86ed" +checksum = "20b0505f4e3b470f17244fcf0459c1f82a63e5fe093bed5196351998ffe28091" dependencies = [ "include_dir", "wast", @@ -981,9 +992,9 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.253.0" +version = "0.254.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19db11f87d2486580e1e8b6f494c54df7e0566b87d0b599db843c24019667339" +checksum = "d5769a29f799fbab136aaf65b4fe5384cd7d93fe6fc9ba0dcb6c8382a1f16e27" dependencies = [ "bitflags", "indexmap", @@ -992,9 +1003,9 @@ dependencies = [ [[package]] name = "wast" -version = "253.0.0" +version = "254.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3264542f8965c5d84fb1085d924bfba9a6314bb228eff13a2de14d7627664d0" +checksum = "e7ed4dfc8f6b9fc38b231065e2cdfbf7359af5ab945990abf09658dcc63c3e32" dependencies = [ "bumpalo", "leb128fmt", @@ -1005,9 +1016,9 @@ dependencies = [ [[package]] name = "wat" -version = "1.253.0" +version = "1.254.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bfc5ce906144200c972ec617470aa35bd847472e170b26dde3e80541c674055" +checksum = "7127f7f9b8f127c879991cecd35f494e4628bae1b0874c681414d8d8831e952c" dependencies = [ "wast", ] @@ -1060,22 +1071,22 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.54" +version = "0.8.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" +checksum = "b5a105cd7b140f6eeec8acff2ea38135d3cab283ada58540f629fe51e46696eb" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.54" +version = "0.8.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" +checksum = "0fe976fb70c78cd64cccfe3a6fc142244e8a77b70959b30faf9d0ac37ee228eb" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -18,9 +18,9 @@ pretty_env_logger="0.5" serde_json={version="1.0"} serde={version="1.0", features=["derive"]} wasm-testsuite={version="0.7"} -wasmparser={version="0.253", default-features=false} -wast="253" -wat="1.253" +wasmparser={version="0.254", default-features=false} +wast="254" +wat="1.254" [workspace.package] version="0.9.1" diff --git a/crates/cli/src/engine_flags.rs b/crates/cli/src/engine_flags.rs index 2965a3e..c8df1fe 100644 --- a/crates/cli/src/engine_flags.rs +++ b/crates/cli/src/engine_flags.rs @@ -91,7 +91,7 @@ impl EngineFlags { MemoryBackendArg::Vec => tinywasm::MemoryBackend::vec(), MemoryBackendArg::Paged => { if self.memory_page_chunk_size == 0 { - bail!("--memory-page-chunk-size must be greater than zero") + bail!("--memory-page-chunk-size must be greater than zero"); } tinywasm::MemoryBackend::paged(self.memory_page_chunk_size) } diff --git a/crates/cli/src/load.rs b/crates/cli/src/load.rs index d16469b..7e6fc09 100644 --- a/crates/cli/src/load.rs +++ b/crates/cli/src/load.rs @@ -25,14 +25,14 @@ pub fn load_module(input: &str) -> Result<LoadedModule> { pub fn load_compilable_module(input: &str) -> Result<Module> { let loaded = load_module(input)?; if loaded.format == InputFormat::Twasm { - bail!("input is already a twasm archive; use `run`, `dump`, or `inspect` instead") + bail!("input is already a twasm archive; use `run`, `dump`, or `inspect` instead"); } Ok(loaded.module) } pub fn default_twasm_output_path(input: &str) -> Result<String> { if input == "-" { - bail!("--output is required when compiling from stdin") + bail!("--output is required when compiling from stdin"); } let path = Path::new(input); @@ -50,7 +50,7 @@ pub fn write_output_bytes(output: &str, bytes: &[u8], force: bool) -> Result<()> let path = Path::new(output); if path.exists() && !force { - bail!("output file already exists: {output}; pass --force to overwrite") + bail!("output file already exists: {output}; pass --force to overwrite"); } std::fs::write(path, bytes).with_context(|| format!("failed to write output file `{output}`"))?; diff --git a/crates/cli/src/value_parse.rs b/crates/cli/src/value_parse.rs index f9ffbbb..92c0363 100644 --- a/crates/cli/src/value_parse.rs +++ b/crates/cli/src/value_parse.rs @@ -5,7 +5,7 @@ use crate::output::format_wasm_type; pub fn parse_invocation_args(ty: &FuncType, args: &[String]) -> Result<Vec<WasmValue>> { if args.len() != ty.params().len() { - bail!("wrong number of arguments: expected {}, got {}", ty.params().len(), args.len()) + bail!("wrong number of arguments: expected {}, got {}", ty.params().len(), args.len()); } ty.params().iter().enumerate().map(|(idx, param_ty)| parse_arg(idx, *param_ty, &args[idx])).collect() @@ -26,7 +26,7 @@ fn parse_arg(index: usize, ty: WasmType, value: &str) -> Result<WasmValue> { "unsupported CLI argument type at position {}: {}; use the embedding API for reference values", index + 1, format_wasm_type(ty) - ) + ); } }; diff --git a/crates/cli/src/wast_runner.rs b/crates/cli/src/wast_runner.rs index 3c0a1cd..99f1efe 100644 --- a/crates/cli/src/wast_runner.rs +++ b/crates/cli/src/wast_runner.rs @@ -219,7 +219,7 @@ impl WastRunner { let span = directive.span(); use wast::WastDirective::{ AssertExhaustion, AssertInvalid, AssertMalformed, AssertReturn, AssertTrap, AssertUnlinkable, Invoke, - Module as Wat, Register, + Module as Wat, ModuleDefinition, Register, }; match directive { @@ -253,6 +253,17 @@ impl WastRunner { test_group.add_result(&format!("Wat({i})"), span.linecol_in(wast_raw), result.map(|_| ())); } + ModuleDefinition(module) => { + let result = catch_unwind_silent(|| { + let (_, bytes) = encode_quote_wat(module); + parse_module_bytes(&bytes) + }) + .map_err(|err| eyre!("failed to parse module definition: {}", try_downcast_panic(err))) + .and_then(|result| result) + .map(|_| ()); + + test_group.add_result(&format!("ModuleDefinition({i})"), span.linecol_in(wast_raw), result); + } AssertMalformed { span, mut module, message } => { let Ok(encoded) = module.encode() else { test_group.add_result(&format!("AssertMalformed({i})"), span.linecol_in(wast_raw), Ok(())); @@ -742,7 +753,9 @@ fn convert_wastret<'a>(args: impl Iterator<Item = wast::WastRet<'a>>) -> Result< } fn wastarg2tinywasmvalue(arg: wast::WastArg) -> Result<WasmValue> { - let wast::WastArg::Core(arg) = arg else { bail!("unsupported arg type: Component") }; + let wast::WastArg::Core(arg) = arg else { + bail!("unsupported arg type: Component"); + }; use wast::core::WastArgCore::*; Ok(match arg { F32(f) => WasmValue::F32(f32::from_bits(f.bits)), @@ -758,9 +771,13 @@ fn wastarg2tinywasmvalue(arg: wast::WastArg) -> Result<WasmValue> { wast::core::HeapType::Abstract { shared: false, ty: AbstractHeapType::Extern } => { WasmValue::RefExtern(ExternRef::null()) } - _ => bail!("unsupported arg type: refnull: {:?}", t), + _ => { + bail!("unsupported arg type: refnull: {:?}", t); + } }, - RefHost(_) => bail!("unsupported arg type: RefHost"), + RefHost(_) => { + bail!("unsupported arg type: RefHost"); + } }) } @@ -781,7 +798,9 @@ fn wast_v128_to_bytes(i: wast::core::V128Pattern) -> [u8; 16] { } fn wastret2tinywasmvalues(ret: wast::WastRet) -> Result<Vec<WasmValue>> { - let wast::WastRet::Core(ret) = ret else { bail!("unsupported arg type") }; + let wast::WastRet::Core(ret) = ret else { + bail!("unsupported arg type"); + }; match ret { wast::core::WastRetCore::Either(options) => { options.into_iter().map(wastretcore2tinywasmvalue).collect::<Result<Vec<_>>>() @@ -805,14 +824,20 @@ fn wastretcore2tinywasmvalue(ret: wast::core::WastRetCore) -> Result<WasmValue> Some(wast::core::HeapType::Abstract { shared: false, ty: AbstractHeapType::Extern }) => { WasmValue::RefExtern(ExternRef::null()) } - _ => bail!("unsupported arg type: refnull: {:?}", t), + _ => { + bail!("unsupported arg type: refnull: {:?}", t); + } }, RefExtern(v) => WasmValue::RefExtern(ExternRef::new(v)), RefFunc(v) => WasmValue::RefFunc(FuncRef::new(match v { Some(wast::token::Index::Num(n, _)) => Some(n), - _ => bail!("unsupported arg type: reffunc: {:?}", v), + _ => { + bail!("unsupported arg type: reffunc: {:?}", v); + } })), - a => bail!("unsupported arg type {:?}", a), + a => { + bail!("unsupported arg type {:?}", a); + } }) } diff --git a/crates/tinywasm/tests/generated/wasm-custom-page-sizes.csv b/crates/tinywasm/tests/generated/wasm-custom-page-sizes.csv index f8a62b1..fe02c72 100644 --- a/crates/tinywasm/tests/generated/wasm-custom-page-sizes.csv +++ b/crates/tinywasm/tests/generated/wasm-custom-page-sizes.csv @@ -1,3 +1,3 @@ 0.8.0,57,0,[{"name":"custom-page-sizes-invalid.wast","passed":22,"failed":0},{"name":"custom-page-sizes.wast","passed":35,"failed":0}] 0.9.0,211,0,[{"name":"binary.wast","passed":127,"failed":0},{"name":"custom-page-sizes-invalid.wast","passed":23,"failed":0},{"name":"custom-page-sizes.wast","passed":45,"failed":0},{"name":"memory_max.wast","passed":8,"failed":0},{"name":"memory_max_i64.wast","passed":8,"failed":0}] -0.9.1,211,0,[{"name":"binary.wast","passed":127,"failed":0},{"name":"custom-page-sizes-invalid.wast","passed":23,"failed":0},{"name":"custom-page-sizes.wast","passed":45,"failed":0},{"name":"memory_max.wast","passed":8,"failed":0},{"name":"memory_max_i64.wast","passed":8,"failed":0}] +0.9.1,207,0,[{"name":"binary.wast","passed":127,"failed":0},{"name":"custom-page-sizes-invalid.wast","passed":23,"failed":0},{"name":"custom-page-sizes.wast","passed":45,"failed":0},{"name":"memory_max.wast","passed":6,"failed":0},{"name":"memory_max_i64.wast","passed":6,"failed":0}] diff --git a/crates/tinywasm/tests/test-wast.rs b/crates/tinywasm/tests/test-wast.rs index 663a5fb..92fcbd2 100644 --- a/crates/tinywasm/tests/test-wast.rs +++ b/crates/tinywasm/tests/test-wast.rs @@ -6,7 +6,7 @@ use tinywasm_cli::wast_runner::WastRunner; fn main() -> Result<()> { let args = std::env::args().collect::<Vec<_>>(); if args.len() < 2 { - bail!("usage: cargo test-wast <wast-file>") + bail!("usage: cargo test-wast <wast-file>"); }; let mut cwd = std::env::current_dir()?; |
