diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000000..4631656c7a --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,177 @@ +# Contributing + +This project welcomes contributions for bug fixes, documentation updates, new +features, or whatever you might like. Development is done through GitHub pull +requests. Feel free to reach out on the [Bytecode Alliance +Zulip](https://bytecodealliance.zulipchat.com/) as well if you'd like assistance +in contributing or would just like to say hi. + +### Building From Source + +To create a debug build of this project from source, execute this command at the +root of the repository: + +``` +$ cargo build +``` + +And the resulting binary is located at `./target/debug/wasm-tools` for the +current platform. + +An optimized build can be produced with: + +``` +$ cargo build --release +``` + +### Testing + +Many crates in this repository (located in `crates/*`) both have unit tests +(`#[test]` functions throughout the source) and integration tests +(`crates/*/tests/*.rs`). Testing an individual crate can be done with: + +``` +$ cargo test -p wasmparser +``` + +Running all tests can be done by fist ensuring that the spec test suite is +checked out: + +``` +$ git submodule update --init +``` + +and then using Cargo to execute all tests: + +``` +$ cargo test --workspace +``` + +Running the spec test suite can be done with: + +``` +$ cargo test --test roundtrip +``` + +and running a single spec test can be done with an argument to this command as a +string filter on the filename. + +``` +$ cargo test --test roundtrip binary-leb128.wast +``` + +Many tests are also located in the top-level `tests/*` folder. This is organized +into a few suites: + +* `tests/cli/*` - these files are run by the `tests/cli.rs` test file and are + intended to be tests for the CLI itself. They start with `;; RUN: ...` headers + to indicate what commands should run and adjacent files indicate the expected + output. + +* `tests/local/*` - these are handwritten `*.wat` and `*.wast` tests. The + `*.wat` files must all validate as valid modules and `*.wast` files run their + directives in the same manner as the spec test suite. This folder additional + subfolders for specific classes of tests, for example `missing-features` has + all optional wasm features disabled to test what happens when a feature is + implemented but disabled at runtime. The `component-model` folder contains all + tests related to enabling the component model feature. + +* `tests/testsuite` - this is a git submodule pointing to the [upstream test + suite repository](https://github.com/WebAssembly/testsuite/) and is where spec + tests come from. + +* `tests/roundtrip.rs` - this is the main driver for the `local` and `testsuite` + folders. This will crawl over all files in those folders and execute what + tests it can. This means running `*.wast` directives such as `assert_invalid`. + Additionally all valid wasm modules are printed with `wasmprinter` and then + parsed again with `wat` to ensure that they can be round-tripped through the + crates. + +* `tests/snapshots` - this contains golden output files which correspond to the + `wasmprinter`-printed version of binaries of all tests. These files are used + to view the impact of changes to `wasmprinter`. + +Many tests throughout the repository have automatically generated files +associated with them which reflect the expected output of an operation. This is +done to view, during code review, the impact of changes made. It's not expected +that these files need to be edited by hand, but instead setting the environment +variable `BLESS=1` when running tests will update all of these test +expectations. + +### Continuous Integration + +All changes to `wasm-tools` are required to pass the CI suite powered by GitHub +Actions. Pull requests will automatically have checks performed and can only be +merged once all tests are passing. CI checks currently include: + +* Code is all formatted correctly (use `cargo fmt` locally to pass this) +* Tests pass on Rust stable, beta, and Nightly. +* Tests pass on Linux, macOS, and Windows. +* This tool can be compiled to WebAssembly using the `wasm32-wasi` target. +* Fuzzers can be built. +* Various miscellaneous checks such as building the tool with various + combinations of Cargo features. + +### Fuzzing + +This repository uses LLVM's libFuzzer through the [`cargo +fuzz`](https://github.com/rust-fuzz/cargo-fuzz) tool. Building fuzzers requires +a Nightly Rust toolchain which can be acquired with Rustup-based installations +of Rust by executing: + +``` +$ rustup update nightly +``` + +Next the `cargo-fuzz` runner should be installed: + +``` +$ cargo install cargo-fuzz +``` + +Fuzzers are then built with: + +``` +$ cargo +nightly fuzz build +``` + +Useful options to this can include: + +* `--dev` - build fuzzers in debug mode instead of release mode (default is + release) +* `--sanitizer none` - Rust doesn't benefit much from AddressSanitizer for + example so disabling sanitizers can improve fuzzing performance and build more + quickly too. + +The fuzzing binary for this project is located at +`target/$host_target/release/run`. Due to limitations on OSS-Fuzz all fuzzers +are combined into a single binary at this time. This binary can be run with: + +``` +$ cargo +nightly fuzz run run +``` + +The main driver for fuzzing is located at `fuzz/fuzz_targets/run.rs`. This +driver dispatches, based on the input, to a number of other fuzzers. Each +individual fuzzer lives in `fuzz/src/*.rs`. + +Running a single fuzzer can be done by configuring the `FUZZER` environment +variable: + +``` +$ FUZZER=roundtrip cargo +nightly fuzz run run +``` + +More documentation of `cargo fuzz` can [be found +online](https://rust-fuzz.github.io/book/cargo-fuzz.html). + +# License + +This project is licensed under the Apache 2.0 license with the LLVM exception. +See [LICENSE](LICENSE) for more details. + +### Contribution + +Unless you explicitly state otherwise, any contribution intentionally submitted +for inclusion in this project by you, as defined in the Apache-2.0 license, +shall be licensed as above, without any additional terms or conditions. diff --git a/Cargo.lock b/Cargo.lock index 3bd93e86e4..f5a952ac81 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -19,9 +19,9 @@ checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" dependencies = [ "cpp_demangle 0.4.3", "fallible-iterator 0.3.0", - "gimli 0.28.0", + "gimli 0.28.1", "memmap2", - "object 0.32.1", + "object 0.32.2", "rustc-demangle", "smallvec", ] @@ -34,9 +34,9 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "ahash" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" +checksum = "77c3a9648d43b9cd48db467b3f87fdd6e146bcc88ab0180006cef2179fe11d01" dependencies = [ "cfg-if", "once_cell", @@ -55,9 +55,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.4" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44" +checksum = "6e2e1ebcb11de5c03c67de28a7df593d32191b44939c482e97702baaaa6ab6a5" dependencies = [ "anstyle", "anstyle-parse", @@ -75,37 +75,37 @@ checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" [[package]] name = "anstyle-parse" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317b9a89c1868f5ea6ff1d9539a69f45dffc21ce321ac1fd1160dfa48c8e2140" +checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" dependencies = [ - "windows-sys", + "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.1" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628" +checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" dependencies = [ "anstyle", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] name = "anyhow" -version = "1.0.75" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" +checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" [[package]] name = "arbitrary" @@ -162,9 +162,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.1" +version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" [[package]] name = "bitmaps" @@ -235,9 +235,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.4.8" +version = "4.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2275f18819641850fa26c89acc84d465c1bf91ce57bc2748b28c420473352f64" +checksum = "1e578d6ec4194633722ccf9544794b71b1385c3c027efe0c55db226fc880865c" dependencies = [ "clap_builder", "clap_derive", @@ -245,9 +245,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.4.8" +version = "4.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07cdf1b148b25c1e1f7a42225e30a0d99a615cd4637eae7365548dd4529b95bc" +checksum = "4df4df40ec50c46000231c914968278b1eb05098cf8f1b3a518a95030e71d1c7" dependencies = [ "anstream", "anstyle", @@ -257,11 +257,11 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.4.7" +version = "4.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfb0d4825b75ff281318c393e8e1b80c4da9fb75a6b1d98547d389d6fe1f48d2" +checksum = "df631ae429f6613fcd3a7c1adbdb65f637271e561b03680adaa6573015dfb106" dependencies = [ - "clap 4.4.8", + "clap 4.4.18", ] [[package]] @@ -273,7 +273,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -467,36 +467,28 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" dependencies = [ - "cfg-if", "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" -version = "0.9.15" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ - "autocfg", - "cfg-if", "crossbeam-utils", - "memoffset", - "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.16" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" -dependencies = [ - "cfg-if", -] +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" [[package]] name = "csv" @@ -536,7 +528,18 @@ checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", +] + +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] @@ -595,12 +598,12 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c18ee0ed65a5f1f81cac6b1d213b69c35fa47d4252ad41f1486dbd8226fe36e" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" dependencies = [ "libc", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -648,9 +651,9 @@ dependencies = [ [[package]] name = "form_urlencoded" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ "percent-encoding", ] @@ -682,7 +685,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "27d12c0aed7f1e24276a241aadc4cb8ea9f83000f34bc062b7cc2d51e3b0fabd" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "debugid", "fxhash", "serde", @@ -691,9 +694,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" +checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" dependencies = [ "cfg-if", "libc", @@ -713,9 +716,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.0" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" dependencies = [ "fallible-iterator 0.3.0", "indexmap 2.1.0", @@ -751,9 +754,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.2" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" [[package]] name = "heck" @@ -772,9 +775,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" +checksum = "5d3d0e0f38255e7fa3cf31335b3a56f05febd18025f4db5ef7a0cfb4f8da651f" [[package]] name = "humantime" @@ -790,9 +793,9 @@ checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005" [[package]] name = "idna" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ "unicode-bidi", "unicode-normalization", @@ -829,7 +832,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" dependencies = [ "equivalent", - "hashbrown 0.14.2", + "hashbrown 0.14.3", "serde", ] @@ -862,9 +865,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "jobserver" @@ -877,9 +880,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.65" +version = "0.3.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54c0c35952f67de54bb584e9fd912b3023117cbafc0a77d8f3dee1fb5f572fe8" +checksum = "9a1d36f1235bc969acba30b7f5990b864423a6068a10f7c90ae8f0112e3a59d1" dependencies = [ "wasm-bindgen", ] @@ -898,9 +901,9 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "libc" -version = "0.2.150" +version = "0.2.152" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" +checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" [[package]] name = "libfuzzer-sys" @@ -915,9 +918,9 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.4.11" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "969488b55f8ac402214f3f5fd243ebb7206cf82de60d3172994707a4bcc2b829" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" [[package]] name = "log" @@ -936,9 +939,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.6.4" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" [[package]] name = "memfd" @@ -991,7 +994,7 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.3.3", + "hermit-abi 0.3.4", "libc", ] @@ -1009,9 +1012,9 @@ dependencies = [ [[package]] name = "object" -version = "0.32.1" +version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" dependencies = [ "flate2", "memchr", @@ -1020,9 +1023,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "oorandom" @@ -1038,9 +1041,9 @@ checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" [[package]] name = "percent-encoding" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "petgraph" @@ -1098,9 +1101,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.69" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" dependencies = [ "unicode-ident", ] @@ -1116,20 +1119,20 @@ dependencies = [ [[package]] name = "pulldown-cmark" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a1a2f1f0a7ecff9c31abbe177637be0e97a0aef46cf8738ece09327985d998" +checksum = "b16a41fe73d9f20da4dae1440a2c4f23db602db9b4699b9b694f007c0a84f67d" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.2", "memchr", "unicase", ] [[package]] name = "quote" -version = "1.0.33" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] @@ -1175,9 +1178,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" +checksum = "fa7237101a77a10773db45d62004a272517633fbcc3df19d96455ede1122e051" dependencies = [ "either", "rayon-core", @@ -1185,9 +1188,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" dependencies = [ "crossbeam-deque", "crossbeam-utils", @@ -1217,9 +1220,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.2" +version = "1.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" dependencies = [ "aho-corasick", "memchr", @@ -1229,9 +1232,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd" dependencies = [ "aho-corasick", "memchr", @@ -1258,33 +1261,33 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustix" -version = "0.38.24" +version = "0.38.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ad981d6c340a49cdc40a1028d9c6084ec7e9fa33fcb839cab656a267071e234" +checksum = "322394588aaf33c24007e8bb3238ee3e4c5c09c084ab32bc73890b99ff326bca" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "errno", "libc", "linux-raw-sys", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] name = "ruzstd" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3ffab8f9715a0d455df4bbb9d21e91135aab3cd3ca187af0cd0c3c3f868fdc" +checksum = "58c4eb8a81997cf040a091d1f7e1938aeab6749d3a0dfa73af43cdc32393483d" dependencies = [ "byteorder", - "thiserror-core", + "derive_more", "twox-hash", ] [[package]] name = "ryu" -version = "1.0.15" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" +checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" [[package]] name = "same-file" @@ -1295,23 +1298,17 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - [[package]] name = "semver" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" +checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0" [[package]] name = "serde" -version = "1.0.192" +version = "1.0.196" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bca2a08484b285dcb282d0f67b26cadc0df8b19f8c12502c13d966bf9482f001" +checksum = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32" dependencies = [ "serde_derive", ] @@ -1328,20 +1325,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.192" +version = "1.0.196" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6c7207fbec9faa48073f3e3074cbe553af6ea512d7c21ba46e434e70ea9fbc1" +checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] name = "serde_json" -version = "1.0.108" +version = "1.0.112" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" +checksum = "4d1bd37ce2324cf3bf85e5a25f96eb4baf0d5aa6eba43e7ae8958870c4ec48ed" dependencies = [ "itoa", "ryu", @@ -1350,9 +1347,9 @@ dependencies = [ [[package]] name = "serde_yaml" -version = "0.9.27" +version = "0.9.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cc7a1570e38322cfe4154732e5110f887ea57e22b76f4bfd32b5bdd3368666c" +checksum = "b1bf28c79a99f70ee1f1d83d10c875d2e70618417fda01ad1785e027579d9d38" dependencies = [ "indexmap 2.1.0", "itoa", @@ -1379,15 +1376,15 @@ checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7" [[package]] name = "smallvec" -version = "1.11.2" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" [[package]] name = "spdx" -version = "0.10.2" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b19b32ed6d899ab23174302ff105c1577e45a06b08d4fe0a9dd13ce804bbbf71" +checksum = "62bde1398b09b9f93fc2fc9b9da86e362693e999d3a54a8ac47a99a5a73f638b" dependencies = [ "smallvec", ] @@ -1435,9 +1432,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.39" +version = "2.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" dependencies = [ "proc-macro2", "quote", @@ -1446,28 +1443,28 @@ dependencies = [ [[package]] name = "target-lexicon" -version = "0.12.12" +version = "0.12.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c39fd04924ca3a864207c66fc2cd7d22d7c016007f9ce846cbb9326331930a" +checksum = "69758bda2e78f098e4ccb393021a0963bb3442eac05f135c30f61b7370bbafae" [[package]] name = "tempfile" -version = "3.8.1" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" +checksum = "01ce4141aa927a6d1bd34a041795abd0db1cccba5d5f24b009f694bdf3a1f3fa" dependencies = [ "cfg-if", "fastrand", "redox_syscall", "rustix", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] name = "termcolor" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" dependencies = [ "winapi-util", ] @@ -1483,42 +1480,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.50" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" +checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" dependencies = [ "thiserror-impl", ] -[[package]] -name = "thiserror-core" -version = "1.0.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d97345f6437bb2004cd58819d8a9ef8e36cdd7661c2abc4bbde0a7c40d9f497" -dependencies = [ - "thiserror-core-impl", -] - -[[package]] -name = "thiserror-core-impl" -version = "1.0.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10ac1c5050e43014d16b2f94d0d2ce79e65ffdd8b38d8048f9c8f6a8a6da62ac" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "thiserror-impl" -version = "1.0.50" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" +checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -1573,9 +1550,9 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.13" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" @@ -1606,15 +1583,15 @@ checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" [[package]] name = "unsafe-libyaml" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28467d3e1d3c6586d8f25fa243f544f5800fec42d97032474e17222c2b75cfa" +checksum = "ab4c90930b95a82d00dc9e9ac071b4991924390d46cbd0dfe566148667605e4b" [[package]] name = "url" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" dependencies = [ "form_urlencoded", "idna", @@ -1629,9 +1606,9 @@ checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" [[package]] name = "uuid" -version = "1.5.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ad59a7560b41a70d191093a945f0b87bc1deeda46fb237479708a1d6b6cdfc" +checksum = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a" [[package]] name = "version_check" @@ -1657,9 +1634,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.88" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7daec296f25a1bae309c0cd5c29c4b260e510e6d813c286b19eaadf409d40fce" +checksum = "b1223296a201415c7fad14792dbefaace9bd52b62d33453ade1c5b5f07555406" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -1667,24 +1644,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.88" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e397f4664c0e4e428e8313a469aaa58310d302159845980fd23b0f22a847f217" +checksum = "fcdc935b63408d58a32f8cc9738a0bffd8f05cc7c002086c6ef20b7312ad9dcd" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.88" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5961017b3b08ad5f3fe39f1e79877f8ee7c23c5e5fd5eb80de95abc41f1f16b2" +checksum = "3e4c238561b2d428924c49815533a8b9121c664599558a5d9ec51f8a1740a999" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1692,26 +1669,26 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.88" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5353b8dab669f5e10f5bd76df26a9360c748f054f862ff5f3f8aae0c7fb3907" +checksum = "bae1abb6806dc1ad9e560ed242107c0f6c84335f1749dd4e8ddb012ebd5e25a7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.88" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d046c5d029ba91a1ed14da14dca44b68bf2f124cfbaf741c54151fdb3e0750b" +checksum = "4d91413b1c31d7539ba5ef2451af3f0b833a005eb27a631cec32bc0635a8602b" [[package]] name = "wasm-compose" -version = "0.5.1" +version = "0.5.2" dependencies = [ "anyhow", "glob", @@ -1725,9 +1702,9 @@ dependencies = [ "serde_derive", "serde_yaml", "smallvec", - "wasm-encoder 0.40.0", - "wasmparser 0.120.0", - "wasmprinter 0.2.77", + "wasm-encoder 0.41.0", + "wasmparser 0.121.0", + "wasmprinter 0.2.78", "wat", "wit-component", ] @@ -1743,44 +1720,44 @@ dependencies = [ [[package]] name = "wasm-encoder" -version = "0.40.0" +version = "0.41.0" dependencies = [ "anyhow", "leb128", "tempfile", - "wasmparser 0.120.0", + "wasmparser 0.121.0", ] [[package]] name = "wasm-metadata" -version = "0.10.16" +version = "0.10.17" dependencies = [ "anyhow", - "clap 4.4.8", + "clap 4.4.18", "indexmap 2.1.0", "serde", "serde_derive", "serde_json", "spdx", - "wasm-encoder 0.40.0", - "wasmparser 0.120.0", + "wasm-encoder 0.41.0", + "wasmparser 0.121.0", "wat", ] [[package]] name = "wasm-mutate" -version = "0.2.45" +version = "0.2.46" dependencies = [ "anyhow", - "clap 4.4.8", + "clap 4.4.18", "egg", "env_logger", "log", "rand", "thiserror", - "wasm-encoder 0.40.0", - "wasmparser 0.120.0", - "wasmprinter 0.2.77", + "wasm-encoder 0.41.0", + "wasmparser 0.121.0", + "wasmprinter 0.2.78", "wat", ] @@ -1790,41 +1767,41 @@ version = "0.1.0" dependencies = [ "anyhow", "arbitrary", - "clap 4.4.8", + "clap 4.4.18", "env_logger", "itertools", "log", "num_cpus", "rand", "wasm-mutate", - "wasmparser 0.120.0", - "wasmprinter 0.2.77", + "wasmparser 0.121.0", + "wasmprinter 0.2.78", "wasmtime", ] [[package]] name = "wasm-shrink" -version = "0.1.46" +version = "0.1.47" dependencies = [ "anyhow", "blake3", - "clap 4.4.8", + "clap 4.4.18", "env_logger", "log", "rand", "wasm-mutate", - "wasmparser 0.120.0", - "wasmprinter 0.2.77", + "wasmparser 0.121.0", + "wasmprinter 0.2.78", "wat", ] [[package]] name = "wasm-smith" -version = "0.15.0" +version = "0.15.1" dependencies = [ "anyhow", "arbitrary", - "clap 4.4.8", + "clap 4.4.18", "criterion", "flagset", "indexmap 2.1.0", @@ -1833,25 +1810,25 @@ dependencies = [ "rand", "serde", "serde_derive", - "wasm-encoder 0.40.0", - "wasmparser 0.120.0", - "wasmprinter 0.2.77", + "wasm-encoder 0.41.0", + "wasmparser 0.121.0", + "wasmprinter 0.2.78", "wat", ] [[package]] name = "wasm-tools" -version = "1.0.56" +version = "1.0.57" dependencies = [ "addr2line 0.21.0", "anyhow", "arbitrary", - "clap 4.4.8", + "clap 4.4.18", "clap_complete", "cpp_demangle 0.4.3", "diff", "env_logger", - "gimli 0.28.0", + "gimli 0.28.1", "is_executable", "log", "pretty_assertions", @@ -1864,13 +1841,13 @@ dependencies = [ "tempfile", "termcolor", "wasm-compose", - "wasm-encoder 0.40.0", + "wasm-encoder 0.41.0", "wasm-metadata", "wasm-mutate", "wasm-shrink", "wasm-smith", - "wasmparser 0.120.0", - "wasmprinter 0.2.77", + "wasmparser 0.121.0", + "wasmprinter 0.2.78", "wast", "wat", "wit-component", @@ -1886,8 +1863,8 @@ dependencies = [ "wasm-mutate", "wasm-shrink", "wasm-smith", - "wasmparser 0.120.0", - "wasmprinter 0.2.77", + "wasmparser 0.121.0", + "wasmprinter 0.2.78", "wast", "wat", ] @@ -1902,11 +1879,11 @@ dependencies = [ "libfuzzer-sys", "log", "tempfile", - "wasm-encoder 0.40.0", + "wasm-encoder 0.41.0", "wasm-mutate", "wasm-smith", - "wasmparser 0.120.0", - "wasmprinter 0.2.77", + "wasmparser 0.121.0", + "wasmprinter 0.2.78", "wasmtime", "wast", "wat", @@ -1927,20 +1904,21 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.116.1" +version = "0.120.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a58e28b80dd8340cb07b8242ae654756161f6fc8d0038123d679b7b99964fa50" +checksum = "e9148127f39cbffe43efee8d5442b16ecdba21567785268daa1ec9e134389705" dependencies = [ + "bitflags 2.4.2", "indexmap 2.1.0", "semver", ] [[package]] name = "wasmparser" -version = "0.120.0" +version = "0.121.0" dependencies = [ "anyhow", - "bitflags 2.4.1", + "bitflags 2.4.2", "criterion", "env_logger", "indexmap 2.1.0", @@ -1948,30 +1926,30 @@ dependencies = [ "once_cell", "rayon", "semver", - "wasm-encoder 0.40.0", + "wasm-encoder 0.41.0", "wast", "wat", ] [[package]] name = "wasmprinter" -version = "0.2.72" +version = "0.2.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aff4df0cdf1906ec040e97d78c3fc8fd26d3f8d70adaac81f07f80957b63b54" +checksum = "d8389a95eb0b3165fea0537a6988960cc23a33d9be650e63fc3d63065fe20dcb" dependencies = [ "anyhow", - "wasmparser 0.116.1", + "wasmparser 0.120.0", ] [[package]] name = "wasmprinter" -version = "0.2.77" +version = "0.2.78" dependencies = [ "anyhow", "diff", "rayon", "tempfile", - "wasmparser 0.120.0", + "wasmparser 0.121.0", "wast", "wat", ] @@ -2007,7 +1985,7 @@ dependencies = [ "wasmtime-jit", "wasmtime-runtime", "wasmtime-winch", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -2028,7 +2006,7 @@ dependencies = [ "anyhow", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", "wasmtime-component-util", "wasmtime-wit-bindgen", "wit-parser 0.9.2", @@ -2097,7 +2075,7 @@ dependencies = [ "thiserror", "wasm-encoder 0.31.1", "wasmparser 0.110.0", - "wasmprinter 0.2.72", + "wasmprinter 0.2.77", "wasmtime-component-util", "wasmtime-types", ] @@ -2123,7 +2101,7 @@ dependencies = [ "wasmtime-environ", "wasmtime-jit-icache-coherence", "wasmtime-runtime", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -2144,7 +2122,7 @@ checksum = "b59f94b0409221873565419168e20b5aedf18c4bd64de5c38acf8f0634efeee3" dependencies = [ "cfg-if", "libc", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -2172,7 +2150,7 @@ dependencies = [ "wasmtime-environ", "wasmtime-jit-debug", "wasmtime-versioned-export-macros", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -2195,7 +2173,7 @@ checksum = "ca7af9bb3ee875c4907835e607a275d10b04d15623d3aebe01afe8fbd3f85050" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -2229,30 +2207,31 @@ dependencies = [ [[package]] name = "wast" -version = "70.0.1" +version = "70.0.2" dependencies = [ "anyhow", + "bumpalo", "leb128", "memchr", "rayon", "unicode-width", - "wasm-encoder 0.40.0", - "wasmparser 0.120.0", + "wasm-encoder 0.41.0", + "wasmparser 0.121.0", "wat", ] [[package]] name = "wat" -version = "1.0.84" +version = "1.0.85" dependencies = [ "wast", ] [[package]] name = "web-sys" -version = "0.3.65" +version = "0.3.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5db499c5f66323272151db0e666cd34f78617522fb0c1604d31a27c50c206a85" +checksum = "58cd2333b6e0be7a39605f0e255892fd7418a682d8da8fe042fe25128794d2ed" dependencies = [ "js-sys", "wasm-bindgen", @@ -2311,7 +2290,16 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets", + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.0", ] [[package]] @@ -2320,13 +2308,28 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +dependencies = [ + "windows_aarch64_gnullvm 0.52.0", + "windows_aarch64_msvc 0.52.0", + "windows_i686_gnu 0.52.0", + "windows_i686_msvc 0.52.0", + "windows_x86_64_gnu 0.52.0", + "windows_x86_64_gnullvm 0.52.0", + "windows_x86_64_msvc 0.52.0", ] [[package]] @@ -2335,48 +2338,90 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" + [[package]] name = "windows_i686_gnu" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +[[package]] +name = "windows_i686_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" + [[package]] name = "windows_i686_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +[[package]] +name = "windows_i686_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" + [[package]] name = "wit-component" -version = "0.20.0" +version = "0.20.1" dependencies = [ "anyhow", - "bitflags 2.4.1", + "bitflags 2.4.2", "env_logger", "glob", "indexmap 2.1.0", @@ -2385,10 +2430,10 @@ dependencies = [ "serde", "serde_derive", "serde_json", - "wasm-encoder 0.40.0", + "wasm-encoder 0.41.0", "wasm-metadata", - "wasmparser 0.120.0", - "wasmprinter 0.2.77", + "wasmparser 0.121.0", + "wasmprinter 0.2.78", "wasmtime", "wast", "wat", @@ -2437,16 +2482,16 @@ dependencies = [ "env_logger", "libfuzzer-sys", "log", - "wasmprinter 0.2.77", + "wasmprinter 0.2.78", "wit-parser 0.13.1", ] [[package]] name = "wit-smith" -version = "0.1.26" +version = "0.1.27" dependencies = [ "arbitrary", - "clap 4.4.8", + "clap 4.4.18", "indexmap 2.1.0", "log", "semver", @@ -2462,20 +2507,20 @@ checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" [[package]] name = "zerocopy" -version = "0.7.26" +version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e97e415490559a91254a2979b4829267a57d2fcd741a98eee8b722fb57289aa0" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.26" +version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd7e48ccf166952882ca8bd778a43502c64f33bf94c12ebe2a7f08e5a0f6689f" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] diff --git a/Cargo.toml b/Cargo.toml index c96827a0bd..bcf64b2933 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-tools" -version = "1.0.56" +version = "1.0.57" authors = ["The Wasmtime Project Developers"] edition.workspace = true description = "CLI tools for interoperating with WebAssembly files" @@ -12,6 +12,9 @@ repository = "https://github.com/bytecodealliance/wasm-tools" readme = "README.md" exclude = ['tests/wabt', 'tests/testsuite', 'tests/snapshots', 'ci'] +[lints] +workspace = true + [workspace] members = [ 'crates/c-api', @@ -21,6 +24,12 @@ members = [ 'crates/wit-parser/fuzz', ] +[workspace.lints.rust] +unsafe_code = "deny" + +[workspace.lints.clippy] +all = "allow" + [workspace.package] edition = '2021' @@ -47,19 +56,19 @@ pretty_assertions = "1.3.0" semver = "1.0.0" smallvec = "1.11.1" -wasm-compose = { version = "0.5.1", path = "crates/wasm-compose" } -wasm-encoder = { version = "0.40.0", path = "crates/wasm-encoder" } -wasm-metadata = { version = "0.10.16", path = "crates/wasm-metadata" } -wasm-mutate = { version = "0.2.45", path = "crates/wasm-mutate" } -wasm-shrink = { version = "0.1.46", path = "crates/wasm-shrink" } -wasm-smith = { version = "0.15.0", path = "crates/wasm-smith" } -wasmparser = { version = "0.120.0", path = "crates/wasmparser" } -wasmprinter = { version = "0.2.77", path = "crates/wasmprinter" } -wast = { version = "70.0.1", path = "crates/wast" } -wat = { version = "1.0.84", path = "crates/wat" } -wit-component = { version = "0.20.0", path = "crates/wit-component" } +wasm-compose = { version = "0.5.2", path = "crates/wasm-compose" } +wasm-encoder = { version = "0.41.0", path = "crates/wasm-encoder" } +wasm-metadata = { version = "0.10.17", path = "crates/wasm-metadata" } +wasm-mutate = { version = "0.2.46", path = "crates/wasm-mutate" } +wasm-shrink = { version = "0.1.47", path = "crates/wasm-shrink" } +wasm-smith = { version = "0.15.1", path = "crates/wasm-smith" } +wasmparser = { version = "0.121.0", path = "crates/wasmparser" } +wasmprinter = { version = "0.2.78", path = "crates/wasmprinter" } +wast = { version = "70.0.2", path = "crates/wast" } +wat = { version = "1.0.85", path = "crates/wat" } +wit-component = { version = "0.20.1", path = "crates/wit-component" } wit-parser = { version = "0.13.1", path = "crates/wit-parser" } -wit-smith = { version = "0.1.26", path = "crates/wit-smith" } +wit-smith = { version = "0.1.27", path = "crates/wit-smith" } [dependencies] anyhow = { workspace = true } diff --git a/README.md b/README.md index 06ae5a7456..8c2269e5ef 100644 --- a/README.md +++ b/README.md @@ -4,21 +4,23 @@ A Bytecode Alliance project

- Rust tooling for low-level manipulation of WebAssembly modules + CLI and Rust libraries for low-level manipulation of WebAssembly modules

# Installation -This project can be installed and compiled from source with this Cargo command: +[Precompiled artifacts built on CI][artifacts] are available for download for +each release. + +If you'd prefer to build from source then first [install Rust for your +platform](https://www.rust-lang.org/tools/install) and then use the included +Cargo package manager to install: ``` $ cargo install wasm-tools ``` -Additionally there are [precompiled artifacts built on CI][artifacts] which are -available for download as well. - [artifacts]: https://github.com/bytecodealliance/wasm-tools/releases Installation can be confirmed with: @@ -33,18 +35,99 @@ Subcommands can be explored with: $ wasm-tools help ``` +# Examples + +Basic validation/printing: + +```sh +# Validate a WebAssembly file +$ wasm-tools validate foo.wasm + +# Validate a WebAssembly module in the text format, automatically converting to +# binary. +$ wasm-tools validate foo.wat + +# Validate a WebAssembly file enabling an off-by-default feature +$ wasm-tools validate foo.wasm --features=exception-handling + +# Validate a WebAssembly file with a default-enabled feature disabled +$ wasm-tools validate foo.wasm --features=-simd + +# Print the text format of a module to stdout +$ wasm-tools print foo.wasm + +# Convert a binary module to text +$ wasm-tools print foo.wasm -o foo.wat +``` + +Simple mutation as well as piping commands together: + +```sh +# Mutate a WebAssembly module and print its text representation to stdout +$ wasm-tools mutate foo.wasm -t + +# Mutate a WebAssembly module with a non-default seed and validate that the +# output is a valid module. +$ wasm-tools mutate foo.wasm --seed 192 | wasm-tools validate + +# Demangle Rust/C++ symbol names in the `name` section, strip all other custom +# sections, and then print out what binary sections remain. +$ wasm-tools demangle foo.wasm | wasm-tools strip | wasm-tools objdump +``` + +Working with components: + +```sh +# Print the WIT interface of a component +$ wasm-tools component wit component.wasm + +# Convert WIT text files to a binary-encoded WIT package, printing the result to +# stdout +$ wasm-tools component wit ./wit -t + +# Convert a WIT document to JSON +$ wasm-tools component wit ./wit --json + +# Round trip WIT through the binary-encoded format to stdout. +$ wasm-tools component wit ./wit --wasm | wasm-tools component wit + +# Convert a core WebAssembly binary into a component. Note that this requires +# WIT metadata having previously been embedded in the core wasm module. +$ wasm-tools component new my-core.wasm -o my-component.wasm + +# Convert a core WebAssembly binary which uses WASI to a component. +$ wasm-tools component new my-core.wasm -o my-component.wasm --adapt wasi_snapshot_preview1.reactor.wasm +``` + +### CLI Conventions + +There are a few conventions that all CLI commands adhere to: + +* All subcommands print "short help" with `-h` and "long help" with `--help`. +* Input is by default read from stdin if no file input is specified (when + applicable). +* Output is by default sent to stdout if a `-o` or `--output` flag is not + provided. Binary WebAssembly is not printed to a tty by default, however. +* Commands which output WebAssembly binaries all support a `-t` or `--wat` flag + to generate the WebAssembly text format instead. +* A `-v` or `--verbose` flag can be passed to enable log messages throughout the + tooling. Verbosity can be turned up by passing the flag multiple times such as + `-vvv`. +* Color in error messages and console output is enabled by default for TTY based + outputs and can be configured with a `--color` argument. + # Tools included The `wasm-tools` binary internally contains a number of subcommands for working -with wasm modules. Many subcommands also come with Rust crates that can be use -programmatically as well: +with wasm modules and component. Many subcommands also come with Rust crates +that can be use programmatically as well: -| Tool | Crate | Description | +| CLI | Rust Crate | Description | |------|------|------------| | `wasm-tools validate` | [wasmparser] | Validate a WebAssembly file | | `wasm-tools parse` | [wat] and [wast] | Translate the WebAssembly text format to binary | | `wasm-tools print` | [wasmprinter] | Translate the WebAssembly binary format to text | -| `wasm-tools smith` | [wasm-smith] | Generate a "random" valid WebAssembly module | +| `wasm-tools smith` | [wasm-smith] | Generate a valid WebAssembly module from an input seed | | `wasm-tools mutate` | [wasm-mutate] | Mutate an input wasm file into a new valid wasm file | | `wasm-tools shrink` | [wasm-shrink] | Shrink a wasm file while preserving a predicate | | `wasm-tools dump` | | Print debugging information about the binary format | @@ -58,6 +141,7 @@ programmatically as well: | `wasm-tools metadata show` | [wasm-metadata] | Show name and producer metadata in a component or module | | `wasm-tools metadata add` | | Add name or producer metadata to a component or module | | `wasm-tools addr2line` | | Translate wasm offsets to filename/line numbers with DWARF | +| `wasm-tools completion` | | Generate shell completion scripts for `wasm-tools` | [wasmparser]: https://crates.io/crates/wasmparser [wat]: https://crates.io/crates/wat @@ -70,9 +154,9 @@ programmatically as well: [wasm-compose]: https://crates.io/crates/wasm-compose [wasm-metadata]: https://crates.io/crates/wasm-metadata -The `wasm-tools` CLI is primarily intended to be a debugging aid. The various -subcommands all have `--help` explainer texts to describe more about their -functionality as well. +The `wasm-tools` CLI contains useful tools for debugging WebAssembly modules and +components. The various subcommands all have `--help` explainer texts to +describe more about their functionality as well. # Libraries @@ -101,7 +185,16 @@ embedding into a separate project. # C/C++ bindings -Using the `CMakeLists.txt` in `crates/c-api`, `wasm-tools` can be used from the [`wasm-tools.h` header](crates/c-api/include/wasm-tools.h). +Using the `CMakeLists.txt` in `crates/c-api`, `wasm-tools` can be used from the +[`wasm-tools.h` header](crates/c-api/include/wasm-tools.h). Note that these +bindings do not comprehensively cover all the functionality of this repository +at this time, but please feel free to contribute more if you find functions +useful! + +# Contributing + +See [CONTRIBUTING.md](./CONTRIBUTING.md) for more information about contributing +to this repository. # License diff --git a/crates/c-api/Cargo.toml b/crates/c-api/Cargo.toml index c588816568..594bd92985 100644 --- a/crates/c-api/Cargo.toml +++ b/crates/c-api/Cargo.toml @@ -17,6 +17,9 @@ doc = false test = false doctest = false +[lints] +workspace = true + [dependencies] arbitrary = { workspace = true, features = ["derive"] } wasm-mutate = { workspace = true } diff --git a/crates/c-api/src/lib.rs b/crates/c-api/src/lib.rs index 7b3c5d01bc..6db5e7ee25 100644 --- a/crates/c-api/src/lib.rs +++ b/crates/c-api/src/lib.rs @@ -5,6 +5,9 @@ //! files of the `include` directory for this crate. #![allow(non_snake_case, non_camel_case_types, non_upper_case_globals)] +// This crate fundamentally is doing a lot of unsafe FFI and stuff like that, so +// it doesn't make sense to allow each individual unsafe block. +#![allow(unsafe_code)] use arbitrary::{Error, Unstructured}; use wasm_smith::{Config, Module}; diff --git a/crates/fuzz-stats/Cargo.toml b/crates/fuzz-stats/Cargo.toml index 1789e13cda..c5c1a6ee09 100644 --- a/crates/fuzz-stats/Cargo.toml +++ b/crates/fuzz-stats/Cargo.toml @@ -12,6 +12,9 @@ rand = { workspace = true } wasm-smith = { workspace = true } wasmtime = { workspace = true } +[lints] +workspace = true + [lib] doctest = false test = false diff --git a/crates/wasm-compose/Cargo.toml b/crates/wasm-compose/Cargo.toml index cdbdc9d203..1b160d0c65 100644 --- a/crates/wasm-compose/Cargo.toml +++ b/crates/wasm-compose/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-compose" -version = "0.5.1" +version = "0.5.2" edition.workspace = true authors = ["Peter Huene "] license = "Apache-2.0 WITH LLVM-exception" @@ -10,6 +10,9 @@ homepage = "https://github.com/bytecodealliance/wasm-tools/tree/main/crates/wasm documentation = "https://docs.rs/wasm-compose" description = "A library for composing WebAssembly components." +[lints] +workspace = true + [dependencies] wat = { workspace = true } wasm-encoder = { workspace = true, features = ['wasmparser'] } diff --git a/crates/wasm-compose/tests/compositions/not-instance-import/composed.wat b/crates/wasm-compose/tests/compositions/not-instance-import/composed.wat index 02e8a2b16f..da7a2bbce5 100644 --- a/crates/wasm-compose/tests/compositions/not-instance-import/composed.wat +++ b/crates/wasm-compose/tests/compositions/not-instance-import/composed.wat @@ -18,4 +18,4 @@ (with "a" (func 0)) ) ) -) \ No newline at end of file +) diff --git a/crates/wasm-encoder/Cargo.toml b/crates/wasm-encoder/Cargo.toml index e85dcd095e..189453ba79 100644 --- a/crates/wasm-encoder/Cargo.toml +++ b/crates/wasm-encoder/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-encoder" -version = "0.40.0" +version = "0.41.0" authors = ["Nick Fitzgerald "] edition.workspace = true license = "Apache-2.0 WITH LLVM-exception" @@ -12,6 +12,9 @@ description = """ A low-level WebAssembly encoder. """ +[lints] +workspace = true + [dependencies] leb128 = { workspace = true } diff --git a/crates/wasm-metadata/Cargo.toml b/crates/wasm-metadata/Cargo.toml index d24d16c221..0520ac863d 100644 --- a/crates/wasm-metadata/Cargo.toml +++ b/crates/wasm-metadata/Cargo.toml @@ -1,11 +1,14 @@ [package] name = "wasm-metadata" -version = "0.10.16" +version = "0.10.17" edition.workspace = true license = "Apache-2.0 WITH LLVM-exception" repository = "https://github.com/bytecodealliance/wasm-tools/tree/main/crates/wasm-metadata" description = "Read and manipulate WebAssembly metadata" +[lints] +workspace = true + [dependencies] clap = { workspace = true, optional = true } anyhow = { workspace = true } diff --git a/crates/wasm-mutate-stats/Cargo.toml b/crates/wasm-mutate-stats/Cargo.toml index 41e4e2731c..eb04025043 100644 --- a/crates/wasm-mutate-stats/Cargo.toml +++ b/crates/wasm-mutate-stats/Cargo.toml @@ -4,6 +4,9 @@ version = "0.1.0" edition.workspace = true publish = false +[lints] +workspace = true + [dependencies] anyhow = { workspace = true } arbitrary = { workspace = true } diff --git a/crates/wasm-mutate/Cargo.toml b/crates/wasm-mutate/Cargo.toml index 658b35decb..f90820891a 100644 --- a/crates/wasm-mutate/Cargo.toml +++ b/crates/wasm-mutate/Cargo.toml @@ -1,11 +1,14 @@ [package] name = "wasm-mutate" -version = "0.2.45" +version = "0.2.46" edition.workspace = true license = "Apache-2.0 WITH LLVM-exception" repository = "https://github.com/bytecodealliance/wasm-tools/tree/main/crates/wasm-mutate" description = "A WebAssembly test case mutator" +[lints] +workspace = true + [dependencies] clap = { workspace = true, optional = true } thiserror = "1.0.28" diff --git a/crates/wasm-shrink/Cargo.toml b/crates/wasm-shrink/Cargo.toml index 207211a7e7..8d87e90b4e 100644 --- a/crates/wasm-shrink/Cargo.toml +++ b/crates/wasm-shrink/Cargo.toml @@ -8,7 +8,10 @@ license = "Apache-2.0 WITH LLVM-exception" readme = "./README.md" repository = "https://github.com/bytecodealliance/wasm-tools/tree/main/crates/wasm-shrink" name = "wasm-shrink" -version = "0.1.46" +version = "0.1.47" + +[lints] +workspace = true [dependencies] anyhow = { workspace = true } diff --git a/crates/wasm-smith/Cargo.toml b/crates/wasm-smith/Cargo.toml index 23004eb718..e400df5cea 100644 --- a/crates/wasm-smith/Cargo.toml +++ b/crates/wasm-smith/Cargo.toml @@ -8,13 +8,16 @@ license = "Apache-2.0 WITH LLVM-exception" name = "wasm-smith" readme = "./README.md" repository = "https://github.com/bytecodealliance/wasm-tools/tree/main/crates/wasm-smith" -version = "0.15.0" +version = "0.15.1" exclude = ["/benches/corpus"] [[bench]] name = "corpus" harness = false +[lints] +workspace = true + [dependencies] anyhow = { workspace = true, optional = true } arbitrary = { workspace = true, features = ["derive"] } diff --git a/crates/wasm-smith/src/lib.rs b/crates/wasm-smith/src/lib.rs index 8d17290473..132ccaf2ca 100644 --- a/crates/wasm-smith/src/lib.rs +++ b/crates/wasm-smith/src/lib.rs @@ -108,10 +108,7 @@ pub(crate) fn limited_str<'a>(max_size: usize, u: &mut Unstructured<'a>) -> Resu Err(e) => { let i = e.valid_up_to(); let valid = u.bytes(i).unwrap(); - let s = unsafe { - debug_assert!(str::from_utf8(valid).is_ok()); - str::from_utf8_unchecked(valid) - }; + let s = str::from_utf8(valid).unwrap(); Ok(s) } } diff --git a/crates/wasmparser/Cargo.toml b/crates/wasmparser/Cargo.toml index c9fa9b5e39..0bf23eef9a 100644 --- a/crates/wasmparser/Cargo.toml +++ b/crates/wasmparser/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmparser" -version = "0.120.0" +version = "0.121.0" authors = ["Yury Delendik "] license = "Apache-2.0 WITH LLVM-exception" repository = "https://github.com/bytecodealliance/wasm-tools/tree/main/crates/wasmparser" @@ -12,6 +12,9 @@ A simple event-driven library for parsing WebAssembly binary files. edition.workspace = true exclude = ["benches/*.wasm"] +[lints] +workspace = true + [dependencies] bitflags = "2.4.1" indexmap = { workspace = true } diff --git a/crates/wasmparser/src/limits.rs b/crates/wasmparser/src/limits.rs index 84f9cf86d9..985a289098 100644 --- a/crates/wasmparser/src/limits.rs +++ b/crates/wasmparser/src/limits.rs @@ -58,3 +58,8 @@ pub const MAX_WASM_MODULES: usize = 1_000; pub const MAX_WASM_COMPONENTS: usize = 1_000; pub const MAX_WASM_INSTANCES: usize = 1_000; pub const MAX_WASM_VALUES: usize = 1_000; + +/// Core items in components such as globals/memories/tables don't actually +/// create new definitions but are instead just aliases to preexisting items. +/// This means they have a different limit than the core wasm based limits. +pub const MAX_CORE_INDEX_SPACE_ITEMS: usize = 1_000_000; diff --git a/crates/wasmparser/src/validator.rs b/crates/wasmparser/src/validator.rs index b5be9866a8..bfa174f23f 100644 --- a/crates/wasmparser/src/validator.rs +++ b/crates/wasmparser/src/validator.rs @@ -385,7 +385,6 @@ impl Default for WasmFeatures { exceptions: false, memory64: false, extended_const: false, - component_model: false, function_references: false, typed_continuations: false, memory_control: false, @@ -406,6 +405,7 @@ impl Default for WasmFeatures { relaxed_simd: true, threads: true, multi_memory: true, + component_model: true, } } } diff --git a/crates/wasmparser/src/validator/component.rs b/crates/wasmparser/src/validator/component.rs index 83e08f85a2..77ab9f1fb9 100644 --- a/crates/wasmparser/src/validator/component.rs +++ b/crates/wasmparser/src/validator/component.rs @@ -2303,14 +2303,20 @@ impl ComponentState { push_module_export!(EntityType::Func, core_funcs, "function") } ExternalKind::Table => { - check_max(self.core_tables.len(), 1, MAX_WASM_TABLES, "tables", offset)?; + check_max( + self.core_tables.len(), + 1, + MAX_CORE_INDEX_SPACE_ITEMS, + "tables", + offset, + )?; push_module_export!(EntityType::Table, core_tables, "table") } ExternalKind::Memory => { check_max( self.core_memories.len(), 1, - MAX_WASM_MEMORIES, + MAX_CORE_INDEX_SPACE_ITEMS, "memories", offset, )?; @@ -2320,14 +2326,20 @@ impl ComponentState { check_max( self.core_globals.len(), 1, - MAX_WASM_GLOBALS, + MAX_CORE_INDEX_SPACE_ITEMS, "globals", offset, )?; push_module_export!(EntityType::Global, core_globals, "global") } ExternalKind::Tag => { - check_max(self.core_tags.len(), 1, MAX_WASM_TAGS, "tags", offset)?; + check_max( + self.core_tags.len(), + 1, + MAX_CORE_INDEX_SPACE_ITEMS, + "tags", + offset, + )?; push_module_export!(EntityType::Tag, core_tags, "tag") } } diff --git a/crates/wasmparser/src/validator/names.rs b/crates/wasmparser/src/validator/names.rs index 796272304b..ee9c71a43e 100644 --- a/crates/wasmparser/src/validator/names.rs +++ b/crates/wasmparser/src/validator/names.rs @@ -36,7 +36,10 @@ impl KebabStr { pub(crate) fn new_unchecked<'a>(s: impl AsRef + 'a) -> &'a Self { // Safety: `KebabStr` is a transparent wrapper around `str` // Therefore transmuting `&str` to `&KebabStr` is safe. - unsafe { std::mem::transmute::<_, &Self>(s.as_ref()) } + #[allow(unsafe_code)] + unsafe { + std::mem::transmute::<_, &Self>(s.as_ref()) + } } /// Gets the underlying string slice. diff --git a/crates/wasmprinter/Cargo.toml b/crates/wasmprinter/Cargo.toml index 42368e1493..fd2781acf8 100644 --- a/crates/wasmprinter/Cargo.toml +++ b/crates/wasmprinter/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmprinter" -version = "0.2.77" +version = "0.2.78" authors = ["Alex Crichton "] edition.workspace = true license = "Apache-2.0 WITH LLVM-exception" @@ -12,6 +12,9 @@ description = """ Rust converter from the WebAssembly binary format to the text format. """ +[lints] +workspace = true + [dependencies] anyhow = { workspace = true } wasmparser = { workspace = true } diff --git a/crates/wast/Cargo.toml b/crates/wast/Cargo.toml index 96077129c3..24b887ee07 100644 --- a/crates/wast/Cargo.toml +++ b/crates/wast/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wast" -version = "70.0.1" +version = "70.0.2" authors = ["Alex Crichton "] edition.workspace = true license = "Apache-2.0 WITH LLVM-exception" @@ -12,11 +12,15 @@ description = """ Customizable Rust parsers for the WebAssembly Text formats WAT and WAST """ +[lints] +workspace = true + [dependencies] leb128 = { workspace = true } unicode-width = "0.1.9" memchr = "2.4.1" wasm-encoder = { workspace = true } +bumpalo = "3.14.0" [dev-dependencies] anyhow = { workspace = true } diff --git a/crates/wast/src/parser.rs b/crates/wast/src/parser.rs index 0c85923f83..7a20ebe255 100644 --- a/crates/wast/src/parser.rs +++ b/crates/wast/src/parser.rs @@ -65,6 +65,7 @@ use crate::lexer::{Float, Integer, Lexer, Token, TokenKind}; use crate::token::Span; use crate::Error; +use bumpalo::Bump; use std::borrow::Cow; use std::cell::{Cell, RefCell}; use std::collections::HashMap; @@ -303,7 +304,7 @@ pub struct ParseBuffer<'a> { cur: Cell, known_annotations: RefCell>, depth: Cell, - strings: RefCell>>, + strings: Bump, } /// The current position within a `Lexer` that we're at. This simultaneously @@ -396,14 +397,7 @@ impl ParseBuffer<'_> { /// This will return a reference to `s`, but one that's safely rooted in the /// `Parser`. fn push_str(&self, s: Vec) -> &[u8] { - let s = Box::from(s); - let ret = &*s as *const [u8]; - self.strings.borrow_mut().push(s); - // This should be safe in that the address of `ret` isn't changing as - // it's on the heap itself. Additionally the lifetime of this return - // value is tied to the lifetime of `self` (nothing is deallocated - // early), so it should be safe to say the two have the same lifetime. - unsafe { &*ret } + self.strings.alloc_slice_copy(&s) } /// Lexes the next "significant" token from the `pos` specified. diff --git a/crates/wat/Cargo.toml b/crates/wat/Cargo.toml index 89a7490f07..2090a076e2 100644 --- a/crates/wat/Cargo.toml +++ b/crates/wat/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wat" -version = "1.0.84" +version = "1.0.85" authors = ["Alex Crichton "] edition.workspace = true license = "Apache-2.0 WITH LLVM-exception" @@ -12,5 +12,8 @@ description = """ Rust parser for the WebAssembly Text format, WAT """ +[lints] +workspace = true + [dependencies] wast = { workspace = true } diff --git a/crates/wit-component/Cargo.toml b/crates/wit-component/Cargo.toml index 80bfd0df2a..3df204c2d4 100644 --- a/crates/wit-component/Cargo.toml +++ b/crates/wit-component/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "wit-component" authors = ["Peter Huene "] -version = "0.20.0" +version = "0.20.1" edition.workspace = true license = "Apache-2.0 WITH LLVM-exception" readme = "README.md" @@ -12,6 +12,9 @@ description = """ Tooling for working with `*.wit` and component files together. """ +[lints] +workspace = true + [dependencies] wasmparser = { workspace = true } wasm-encoder = { workspace = true } diff --git a/crates/wit-component/src/gc.rs b/crates/wit-component/src/gc.rs index 44307b0e41..363dceeba8 100644 --- a/crates/wit-component/src/gc.rs +++ b/crates/wit-component/src/gc.rs @@ -1158,7 +1158,6 @@ impl Encoder { macro_rules! define_encode { ($(@$p:ident $op:ident $({ $($arg:ident: $argty:ty),* })? => $visit:ident)*) => { $( - #[allow(clippy::drop_copy)] fn $visit(&mut self $(, $($arg: $argty),*)?) { #[allow(unused_imports)] use wasm_encoder::Instruction::*; diff --git a/crates/wit-parser/Cargo.toml b/crates/wit-parser/Cargo.toml index a9b3b6f6e6..11cd688b45 100644 --- a/crates/wit-parser/Cargo.toml +++ b/crates/wit-parser/Cargo.toml @@ -12,6 +12,9 @@ description = """ Tooling for parsing `*.wit` files and working with their contents. """ +[lints] +workspace = true + [dependencies] id-arena = "2" anyhow = { workspace = true } diff --git a/crates/wit-smith/Cargo.toml b/crates/wit-smith/Cargo.toml index 08bc043aa4..76b56d753e 100644 --- a/crates/wit-smith/Cargo.toml +++ b/crates/wit-smith/Cargo.toml @@ -5,7 +5,10 @@ edition.workspace = true license = "Apache-2.0 WITH LLVM-exception" name = "wit-smith" repository = "https://github.com/bytecodealliance/wasm-tools/tree/main/crates/wit-smith" -version = "0.1.26" +version = "0.1.27" + +[lints] +workspace = true [dependencies] arbitrary = { workspace = true, features = ["derive"] } diff --git a/tests/local/component-model/lots-of-aliases.wast b/tests/local/component-model/lots-of-aliases.wast new file mode 100644 index 0000000000..9e32d105c6 --- /dev/null +++ b/tests/local/component-model/lots-of-aliases.wast @@ -0,0 +1,177 @@ +(component + (core module $m + (memory (export "m") 1) + (table (export "t") 1 funcref) + (global (export "g") i32 i32.const 0) + (func (export "f")) + ) + (core instance $i (instantiate $m)) + + ;; 160 memories (4 per row 40 rows) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) (alias core export $i "m" (core memory)) + + ;; 160 tables (4 per row 40 rows) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) (alias core export $i "t" (core table)) + + ;; 160 globals (4 per row 40 rows) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) (alias core export $i "g" (core global)) + + ;; 160 functions (4 per row 40 rows) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) + (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) (alias core export $i "f" (core func)) +) diff --git a/tests/roundtrip.rs b/tests/roundtrip.rs index dba4e55c40..0b6089bbbb 100644 --- a/tests/roundtrip.rs +++ b/tests/roundtrip.rs @@ -582,6 +582,7 @@ impl TestState { match part { "testsuite" => { features = WasmFeatures::default(); + features.component_model = false; // NB: when these proposals are merged upstream in the spec // repo then this should be removed. Currently this hasn't @@ -601,6 +602,7 @@ impl TestState { features.bulk_memory = false; features.function_references = false; features.gc = false; + features.component_model = false; features.component_model_values = false; } "floats-disabled.wast" => features.floats = false, diff --git a/tests/snapshots/local/component-model/lots-of-aliases.wast/0.print b/tests/snapshots/local/component-model/lots-of-aliases.wast/0.print new file mode 100644 index 0000000000..28e0ac5824 --- /dev/null +++ b/tests/snapshots/local/component-model/lots-of-aliases.wast/0.print @@ -0,0 +1,654 @@ +(component + (core module $m (;0;) + (type (;0;) (func)) + (func (;0;) (type 0)) + (table (;0;) 1 funcref) + (memory (;0;) 1) + (global (;0;) i32 i32.const 0) + (export "m" (memory 0)) + (export "t" (table 0)) + (export "g" (global 0)) + (export "f" (func 0)) + ) + (core instance $i (;0;) (instantiate $m)) + (alias core export $i "m" (core memory (;0;))) + (alias core export $i "m" (core memory (;1;))) + (alias core export $i "m" (core memory (;2;))) + (alias core export $i "m" (core memory (;3;))) + (alias core export $i "m" (core memory (;4;))) + (alias core export $i "m" (core memory (;5;))) + (alias core export $i "m" (core memory (;6;))) + (alias core export $i "m" (core memory (;7;))) + (alias core export $i "m" (core memory (;8;))) + (alias core export $i "m" (core memory (;9;))) + (alias core export $i "m" (core memory (;10;))) + (alias core export $i "m" (core memory (;11;))) + (alias core export $i "m" (core memory (;12;))) + (alias core export $i "m" (core memory (;13;))) + (alias core export $i "m" (core memory (;14;))) + (alias core export $i "m" (core memory (;15;))) + (alias core export $i "m" (core memory (;16;))) + (alias core export $i "m" (core memory (;17;))) + (alias core export $i "m" (core memory (;18;))) + (alias core export $i "m" (core memory (;19;))) + (alias core export $i "m" (core memory (;20;))) + (alias core export $i "m" (core memory (;21;))) + (alias core export $i "m" (core memory (;22;))) + (alias core export $i "m" (core memory (;23;))) + (alias core export $i "m" (core memory (;24;))) + (alias core export $i "m" (core memory (;25;))) + (alias core export $i "m" (core memory (;26;))) + (alias core export $i "m" (core memory (;27;))) + (alias core export $i "m" (core memory (;28;))) + (alias core export $i "m" (core memory (;29;))) + (alias core export $i "m" (core memory (;30;))) + (alias core export $i "m" (core memory (;31;))) + (alias core export $i "m" (core memory (;32;))) + (alias core export $i "m" (core memory (;33;))) + (alias core export $i "m" (core memory (;34;))) + (alias core export $i "m" (core memory (;35;))) + (alias core export $i "m" (core memory (;36;))) + (alias core export $i "m" (core memory (;37;))) + (alias core export $i "m" (core memory (;38;))) + (alias core export $i "m" (core memory (;39;))) + (alias core export $i "m" (core memory (;40;))) + (alias core export $i "m" (core memory (;41;))) + (alias core export $i "m" (core memory (;42;))) + (alias core export $i "m" (core memory (;43;))) + (alias core export $i "m" (core memory (;44;))) + (alias core export $i "m" (core memory (;45;))) + (alias core export $i "m" (core memory (;46;))) + (alias core export $i "m" (core memory (;47;))) + (alias core export $i "m" (core memory (;48;))) + (alias core export $i "m" (core memory (;49;))) + (alias core export $i "m" (core memory (;50;))) + (alias core export $i "m" (core memory (;51;))) + (alias core export $i "m" (core memory (;52;))) + (alias core export $i "m" (core memory (;53;))) + (alias core export $i "m" (core memory (;54;))) + (alias core export $i "m" (core memory (;55;))) + (alias core export $i "m" (core memory (;56;))) + (alias core export $i "m" (core memory (;57;))) + (alias core export $i "m" (core memory (;58;))) + (alias core export $i "m" (core memory (;59;))) + (alias core export $i "m" (core memory (;60;))) + (alias core export $i "m" (core memory (;61;))) + (alias core export $i "m" (core memory (;62;))) + (alias core export $i "m" (core memory (;63;))) + (alias core export $i "m" (core memory (;64;))) + (alias core export $i "m" (core memory (;65;))) + (alias core export $i "m" (core memory (;66;))) + (alias core export $i "m" (core memory (;67;))) + (alias core export $i "m" (core memory (;68;))) + (alias core export $i "m" (core memory (;69;))) + (alias core export $i "m" (core memory (;70;))) + (alias core export $i "m" (core memory (;71;))) + (alias core export $i "m" (core memory (;72;))) + (alias core export $i "m" (core memory (;73;))) + (alias core export $i "m" (core memory (;74;))) + (alias core export $i "m" (core memory (;75;))) + (alias core export $i "m" (core memory (;76;))) + (alias core export $i "m" (core memory (;77;))) + (alias core export $i "m" (core memory (;78;))) + (alias core export $i "m" (core memory (;79;))) + (alias core export $i "m" (core memory (;80;))) + (alias core export $i "m" (core memory (;81;))) + (alias core export $i "m" (core memory (;82;))) + (alias core export $i "m" (core memory (;83;))) + (alias core export $i "m" (core memory (;84;))) + (alias core export $i "m" (core memory (;85;))) + (alias core export $i "m" (core memory (;86;))) + (alias core export $i "m" (core memory (;87;))) + (alias core export $i "m" (core memory (;88;))) + (alias core export $i "m" (core memory (;89;))) + (alias core export $i "m" (core memory (;90;))) + (alias core export $i "m" (core memory (;91;))) + (alias core export $i "m" (core memory (;92;))) + (alias core export $i "m" (core memory (;93;))) + (alias core export $i "m" (core memory (;94;))) + (alias core export $i "m" (core memory (;95;))) + (alias core export $i "m" (core memory (;96;))) + (alias core export $i "m" (core memory (;97;))) + (alias core export $i "m" (core memory (;98;))) + (alias core export $i "m" (core memory (;99;))) + (alias core export $i "m" (core memory (;100;))) + (alias core export $i "m" (core memory (;101;))) + (alias core export $i "m" (core memory (;102;))) + (alias core export $i "m" (core memory (;103;))) + (alias core export $i "m" (core memory (;104;))) + (alias core export $i "m" (core memory (;105;))) + (alias core export $i "m" (core memory (;106;))) + (alias core export $i "m" (core memory (;107;))) + (alias core export $i "m" (core memory (;108;))) + (alias core export $i "m" (core memory (;109;))) + (alias core export $i "m" (core memory (;110;))) + (alias core export $i "m" (core memory (;111;))) + (alias core export $i "m" (core memory (;112;))) + (alias core export $i "m" (core memory (;113;))) + (alias core export $i "m" (core memory (;114;))) + (alias core export $i "m" (core memory (;115;))) + (alias core export $i "m" (core memory (;116;))) + (alias core export $i "m" (core memory (;117;))) + (alias core export $i "m" (core memory (;118;))) + (alias core export $i "m" (core memory (;119;))) + (alias core export $i "m" (core memory (;120;))) + (alias core export $i "m" (core memory (;121;))) + (alias core export $i "m" (core memory (;122;))) + (alias core export $i "m" (core memory (;123;))) + (alias core export $i "m" (core memory (;124;))) + (alias core export $i "m" (core memory (;125;))) + (alias core export $i "m" (core memory (;126;))) + (alias core export $i "m" (core memory (;127;))) + (alias core export $i "m" (core memory (;128;))) + (alias core export $i "m" (core memory (;129;))) + (alias core export $i "m" (core memory (;130;))) + (alias core export $i "m" (core memory (;131;))) + (alias core export $i "m" (core memory (;132;))) + (alias core export $i "m" (core memory (;133;))) + (alias core export $i "m" (core memory (;134;))) + (alias core export $i "m" (core memory (;135;))) + (alias core export $i "m" (core memory (;136;))) + (alias core export $i "m" (core memory (;137;))) + (alias core export $i "m" (core memory (;138;))) + (alias core export $i "m" (core memory (;139;))) + (alias core export $i "m" (core memory (;140;))) + (alias core export $i "m" (core memory (;141;))) + (alias core export $i "m" (core memory (;142;))) + (alias core export $i "m" (core memory (;143;))) + (alias core export $i "m" (core memory (;144;))) + (alias core export $i "m" (core memory (;145;))) + (alias core export $i "m" (core memory (;146;))) + (alias core export $i "m" (core memory (;147;))) + (alias core export $i "m" (core memory (;148;))) + (alias core export $i "m" (core memory (;149;))) + (alias core export $i "m" (core memory (;150;))) + (alias core export $i "m" (core memory (;151;))) + (alias core export $i "m" (core memory (;152;))) + (alias core export $i "m" (core memory (;153;))) + (alias core export $i "m" (core memory (;154;))) + (alias core export $i "m" (core memory (;155;))) + (alias core export $i "m" (core memory (;156;))) + (alias core export $i "m" (core memory (;157;))) + (alias core export $i "m" (core memory (;158;))) + (alias core export $i "m" (core memory (;159;))) + (alias core export $i "t" (core table (;0;))) + (alias core export $i "t" (core table (;1;))) + (alias core export $i "t" (core table (;2;))) + (alias core export $i "t" (core table (;3;))) + (alias core export $i "t" (core table (;4;))) + (alias core export $i "t" (core table (;5;))) + (alias core export $i "t" (core table (;6;))) + (alias core export $i "t" (core table (;7;))) + (alias core export $i "t" (core table (;8;))) + (alias core export $i "t" (core table (;9;))) + (alias core export $i "t" (core table (;10;))) + (alias core export $i "t" (core table (;11;))) + (alias core export $i "t" (core table (;12;))) + (alias core export $i "t" (core table (;13;))) + (alias core export $i "t" (core table (;14;))) + (alias core export $i "t" (core table (;15;))) + (alias core export $i "t" (core table (;16;))) + (alias core export $i "t" (core table (;17;))) + (alias core export $i "t" (core table (;18;))) + (alias core export $i "t" (core table (;19;))) + (alias core export $i "t" (core table (;20;))) + (alias core export $i "t" (core table (;21;))) + (alias core export $i "t" (core table (;22;))) + (alias core export $i "t" (core table (;23;))) + (alias core export $i "t" (core table (;24;))) + (alias core export $i "t" (core table (;25;))) + (alias core export $i "t" (core table (;26;))) + (alias core export $i "t" (core table (;27;))) + (alias core export $i "t" (core table (;28;))) + (alias core export $i "t" (core table (;29;))) + (alias core export $i "t" (core table (;30;))) + (alias core export $i "t" (core table (;31;))) + (alias core export $i "t" (core table (;32;))) + (alias core export $i "t" (core table (;33;))) + (alias core export $i "t" (core table (;34;))) + (alias core export $i "t" (core table (;35;))) + (alias core export $i "t" (core table (;36;))) + (alias core export $i "t" (core table (;37;))) + (alias core export $i "t" (core table (;38;))) + (alias core export $i "t" (core table (;39;))) + (alias core export $i "t" (core table (;40;))) + (alias core export $i "t" (core table (;41;))) + (alias core export $i "t" (core table (;42;))) + (alias core export $i "t" (core table (;43;))) + (alias core export $i "t" (core table (;44;))) + (alias core export $i "t" (core table (;45;))) + (alias core export $i "t" (core table (;46;))) + (alias core export $i "t" (core table (;47;))) + (alias core export $i "t" (core table (;48;))) + (alias core export $i "t" (core table (;49;))) + (alias core export $i "t" (core table (;50;))) + (alias core export $i "t" (core table (;51;))) + (alias core export $i "t" (core table (;52;))) + (alias core export $i "t" (core table (;53;))) + (alias core export $i "t" (core table (;54;))) + (alias core export $i "t" (core table (;55;))) + (alias core export $i "t" (core table (;56;))) + (alias core export $i "t" (core table (;57;))) + (alias core export $i "t" (core table (;58;))) + (alias core export $i "t" (core table (;59;))) + (alias core export $i "t" (core table (;60;))) + (alias core export $i "t" (core table (;61;))) + (alias core export $i "t" (core table (;62;))) + (alias core export $i "t" (core table (;63;))) + (alias core export $i "t" (core table (;64;))) + (alias core export $i "t" (core table (;65;))) + (alias core export $i "t" (core table (;66;))) + (alias core export $i "t" (core table (;67;))) + (alias core export $i "t" (core table (;68;))) + (alias core export $i "t" (core table (;69;))) + (alias core export $i "t" (core table (;70;))) + (alias core export $i "t" (core table (;71;))) + (alias core export $i "t" (core table (;72;))) + (alias core export $i "t" (core table (;73;))) + (alias core export $i "t" (core table (;74;))) + (alias core export $i "t" (core table (;75;))) + (alias core export $i "t" (core table (;76;))) + (alias core export $i "t" (core table (;77;))) + (alias core export $i "t" (core table (;78;))) + (alias core export $i "t" (core table (;79;))) + (alias core export $i "t" (core table (;80;))) + (alias core export $i "t" (core table (;81;))) + (alias core export $i "t" (core table (;82;))) + (alias core export $i "t" (core table (;83;))) + (alias core export $i "t" (core table (;84;))) + (alias core export $i "t" (core table (;85;))) + (alias core export $i "t" (core table (;86;))) + (alias core export $i "t" (core table (;87;))) + (alias core export $i "t" (core table (;88;))) + (alias core export $i "t" (core table (;89;))) + (alias core export $i "t" (core table (;90;))) + (alias core export $i "t" (core table (;91;))) + (alias core export $i "t" (core table (;92;))) + (alias core export $i "t" (core table (;93;))) + (alias core export $i "t" (core table (;94;))) + (alias core export $i "t" (core table (;95;))) + (alias core export $i "t" (core table (;96;))) + (alias core export $i "t" (core table (;97;))) + (alias core export $i "t" (core table (;98;))) + (alias core export $i "t" (core table (;99;))) + (alias core export $i "t" (core table (;100;))) + (alias core export $i "t" (core table (;101;))) + (alias core export $i "t" (core table (;102;))) + (alias core export $i "t" (core table (;103;))) + (alias core export $i "t" (core table (;104;))) + (alias core export $i "t" (core table (;105;))) + (alias core export $i "t" (core table (;106;))) + (alias core export $i "t" (core table (;107;))) + (alias core export $i "t" (core table (;108;))) + (alias core export $i "t" (core table (;109;))) + (alias core export $i "t" (core table (;110;))) + (alias core export $i "t" (core table (;111;))) + (alias core export $i "t" (core table (;112;))) + (alias core export $i "t" (core table (;113;))) + (alias core export $i "t" (core table (;114;))) + (alias core export $i "t" (core table (;115;))) + (alias core export $i "t" (core table (;116;))) + (alias core export $i "t" (core table (;117;))) + (alias core export $i "t" (core table (;118;))) + (alias core export $i "t" (core table (;119;))) + (alias core export $i "t" (core table (;120;))) + (alias core export $i "t" (core table (;121;))) + (alias core export $i "t" (core table (;122;))) + (alias core export $i "t" (core table (;123;))) + (alias core export $i "t" (core table (;124;))) + (alias core export $i "t" (core table (;125;))) + (alias core export $i "t" (core table (;126;))) + (alias core export $i "t" (core table (;127;))) + (alias core export $i "t" (core table (;128;))) + (alias core export $i "t" (core table (;129;))) + (alias core export $i "t" (core table (;130;))) + (alias core export $i "t" (core table (;131;))) + (alias core export $i "t" (core table (;132;))) + (alias core export $i "t" (core table (;133;))) + (alias core export $i "t" (core table (;134;))) + (alias core export $i "t" (core table (;135;))) + (alias core export $i "t" (core table (;136;))) + (alias core export $i "t" (core table (;137;))) + (alias core export $i "t" (core table (;138;))) + (alias core export $i "t" (core table (;139;))) + (alias core export $i "t" (core table (;140;))) + (alias core export $i "t" (core table (;141;))) + (alias core export $i "t" (core table (;142;))) + (alias core export $i "t" (core table (;143;))) + (alias core export $i "t" (core table (;144;))) + (alias core export $i "t" (core table (;145;))) + (alias core export $i "t" (core table (;146;))) + (alias core export $i "t" (core table (;147;))) + (alias core export $i "t" (core table (;148;))) + (alias core export $i "t" (core table (;149;))) + (alias core export $i "t" (core table (;150;))) + (alias core export $i "t" (core table (;151;))) + (alias core export $i "t" (core table (;152;))) + (alias core export $i "t" (core table (;153;))) + (alias core export $i "t" (core table (;154;))) + (alias core export $i "t" (core table (;155;))) + (alias core export $i "t" (core table (;156;))) + (alias core export $i "t" (core table (;157;))) + (alias core export $i "t" (core table (;158;))) + (alias core export $i "t" (core table (;159;))) + (alias core export $i "g" (core global (;0;))) + (alias core export $i "g" (core global (;1;))) + (alias core export $i "g" (core global (;2;))) + (alias core export $i "g" (core global (;3;))) + (alias core export $i "g" (core global (;4;))) + (alias core export $i "g" (core global (;5;))) + (alias core export $i "g" (core global (;6;))) + (alias core export $i "g" (core global (;7;))) + (alias core export $i "g" (core global (;8;))) + (alias core export $i "g" (core global (;9;))) + (alias core export $i "g" (core global (;10;))) + (alias core export $i "g" (core global (;11;))) + (alias core export $i "g" (core global (;12;))) + (alias core export $i "g" (core global (;13;))) + (alias core export $i "g" (core global (;14;))) + (alias core export $i "g" (core global (;15;))) + (alias core export $i "g" (core global (;16;))) + (alias core export $i "g" (core global (;17;))) + (alias core export $i "g" (core global (;18;))) + (alias core export $i "g" (core global (;19;))) + (alias core export $i "g" (core global (;20;))) + (alias core export $i "g" (core global (;21;))) + (alias core export $i "g" (core global (;22;))) + (alias core export $i "g" (core global (;23;))) + (alias core export $i "g" (core global (;24;))) + (alias core export $i "g" (core global (;25;))) + (alias core export $i "g" (core global (;26;))) + (alias core export $i "g" (core global (;27;))) + (alias core export $i "g" (core global (;28;))) + (alias core export $i "g" (core global (;29;))) + (alias core export $i "g" (core global (;30;))) + (alias core export $i "g" (core global (;31;))) + (alias core export $i "g" (core global (;32;))) + (alias core export $i "g" (core global (;33;))) + (alias core export $i "g" (core global (;34;))) + (alias core export $i "g" (core global (;35;))) + (alias core export $i "g" (core global (;36;))) + (alias core export $i "g" (core global (;37;))) + (alias core export $i "g" (core global (;38;))) + (alias core export $i "g" (core global (;39;))) + (alias core export $i "g" (core global (;40;))) + (alias core export $i "g" (core global (;41;))) + (alias core export $i "g" (core global (;42;))) + (alias core export $i "g" (core global (;43;))) + (alias core export $i "g" (core global (;44;))) + (alias core export $i "g" (core global (;45;))) + (alias core export $i "g" (core global (;46;))) + (alias core export $i "g" (core global (;47;))) + (alias core export $i "g" (core global (;48;))) + (alias core export $i "g" (core global (;49;))) + (alias core export $i "g" (core global (;50;))) + (alias core export $i "g" (core global (;51;))) + (alias core export $i "g" (core global (;52;))) + (alias core export $i "g" (core global (;53;))) + (alias core export $i "g" (core global (;54;))) + (alias core export $i "g" (core global (;55;))) + (alias core export $i "g" (core global (;56;))) + (alias core export $i "g" (core global (;57;))) + (alias core export $i "g" (core global (;58;))) + (alias core export $i "g" (core global (;59;))) + (alias core export $i "g" (core global (;60;))) + (alias core export $i "g" (core global (;61;))) + (alias core export $i "g" (core global (;62;))) + (alias core export $i "g" (core global (;63;))) + (alias core export $i "g" (core global (;64;))) + (alias core export $i "g" (core global (;65;))) + (alias core export $i "g" (core global (;66;))) + (alias core export $i "g" (core global (;67;))) + (alias core export $i "g" (core global (;68;))) + (alias core export $i "g" (core global (;69;))) + (alias core export $i "g" (core global (;70;))) + (alias core export $i "g" (core global (;71;))) + (alias core export $i "g" (core global (;72;))) + (alias core export $i "g" (core global (;73;))) + (alias core export $i "g" (core global (;74;))) + (alias core export $i "g" (core global (;75;))) + (alias core export $i "g" (core global (;76;))) + (alias core export $i "g" (core global (;77;))) + (alias core export $i "g" (core global (;78;))) + (alias core export $i "g" (core global (;79;))) + (alias core export $i "g" (core global (;80;))) + (alias core export $i "g" (core global (;81;))) + (alias core export $i "g" (core global (;82;))) + (alias core export $i "g" (core global (;83;))) + (alias core export $i "g" (core global (;84;))) + (alias core export $i "g" (core global (;85;))) + (alias core export $i "g" (core global (;86;))) + (alias core export $i "g" (core global (;87;))) + (alias core export $i "g" (core global (;88;))) + (alias core export $i "g" (core global (;89;))) + (alias core export $i "g" (core global (;90;))) + (alias core export $i "g" (core global (;91;))) + (alias core export $i "g" (core global (;92;))) + (alias core export $i "g" (core global (;93;))) + (alias core export $i "g" (core global (;94;))) + (alias core export $i "g" (core global (;95;))) + (alias core export $i "g" (core global (;96;))) + (alias core export $i "g" (core global (;97;))) + (alias core export $i "g" (core global (;98;))) + (alias core export $i "g" (core global (;99;))) + (alias core export $i "g" (core global (;100;))) + (alias core export $i "g" (core global (;101;))) + (alias core export $i "g" (core global (;102;))) + (alias core export $i "g" (core global (;103;))) + (alias core export $i "g" (core global (;104;))) + (alias core export $i "g" (core global (;105;))) + (alias core export $i "g" (core global (;106;))) + (alias core export $i "g" (core global (;107;))) + (alias core export $i "g" (core global (;108;))) + (alias core export $i "g" (core global (;109;))) + (alias core export $i "g" (core global (;110;))) + (alias core export $i "g" (core global (;111;))) + (alias core export $i "g" (core global (;112;))) + (alias core export $i "g" (core global (;113;))) + (alias core export $i "g" (core global (;114;))) + (alias core export $i "g" (core global (;115;))) + (alias core export $i "g" (core global (;116;))) + (alias core export $i "g" (core global (;117;))) + (alias core export $i "g" (core global (;118;))) + (alias core export $i "g" (core global (;119;))) + (alias core export $i "g" (core global (;120;))) + (alias core export $i "g" (core global (;121;))) + (alias core export $i "g" (core global (;122;))) + (alias core export $i "g" (core global (;123;))) + (alias core export $i "g" (core global (;124;))) + (alias core export $i "g" (core global (;125;))) + (alias core export $i "g" (core global (;126;))) + (alias core export $i "g" (core global (;127;))) + (alias core export $i "g" (core global (;128;))) + (alias core export $i "g" (core global (;129;))) + (alias core export $i "g" (core global (;130;))) + (alias core export $i "g" (core global (;131;))) + (alias core export $i "g" (core global (;132;))) + (alias core export $i "g" (core global (;133;))) + (alias core export $i "g" (core global (;134;))) + (alias core export $i "g" (core global (;135;))) + (alias core export $i "g" (core global (;136;))) + (alias core export $i "g" (core global (;137;))) + (alias core export $i "g" (core global (;138;))) + (alias core export $i "g" (core global (;139;))) + (alias core export $i "g" (core global (;140;))) + (alias core export $i "g" (core global (;141;))) + (alias core export $i "g" (core global (;142;))) + (alias core export $i "g" (core global (;143;))) + (alias core export $i "g" (core global (;144;))) + (alias core export $i "g" (core global (;145;))) + (alias core export $i "g" (core global (;146;))) + (alias core export $i "g" (core global (;147;))) + (alias core export $i "g" (core global (;148;))) + (alias core export $i "g" (core global (;149;))) + (alias core export $i "g" (core global (;150;))) + (alias core export $i "g" (core global (;151;))) + (alias core export $i "g" (core global (;152;))) + (alias core export $i "g" (core global (;153;))) + (alias core export $i "g" (core global (;154;))) + (alias core export $i "g" (core global (;155;))) + (alias core export $i "g" (core global (;156;))) + (alias core export $i "g" (core global (;157;))) + (alias core export $i "g" (core global (;158;))) + (alias core export $i "g" (core global (;159;))) + (alias core export $i "f" (core func (;0;))) + (alias core export $i "f" (core func (;1;))) + (alias core export $i "f" (core func (;2;))) + (alias core export $i "f" (core func (;3;))) + (alias core export $i "f" (core func (;4;))) + (alias core export $i "f" (core func (;5;))) + (alias core export $i "f" (core func (;6;))) + (alias core export $i "f" (core func (;7;))) + (alias core export $i "f" (core func (;8;))) + (alias core export $i "f" (core func (;9;))) + (alias core export $i "f" (core func (;10;))) + (alias core export $i "f" (core func (;11;))) + (alias core export $i "f" (core func (;12;))) + (alias core export $i "f" (core func (;13;))) + (alias core export $i "f" (core func (;14;))) + (alias core export $i "f" (core func (;15;))) + (alias core export $i "f" (core func (;16;))) + (alias core export $i "f" (core func (;17;))) + (alias core export $i "f" (core func (;18;))) + (alias core export $i "f" (core func (;19;))) + (alias core export $i "f" (core func (;20;))) + (alias core export $i "f" (core func (;21;))) + (alias core export $i "f" (core func (;22;))) + (alias core export $i "f" (core func (;23;))) + (alias core export $i "f" (core func (;24;))) + (alias core export $i "f" (core func (;25;))) + (alias core export $i "f" (core func (;26;))) + (alias core export $i "f" (core func (;27;))) + (alias core export $i "f" (core func (;28;))) + (alias core export $i "f" (core func (;29;))) + (alias core export $i "f" (core func (;30;))) + (alias core export $i "f" (core func (;31;))) + (alias core export $i "f" (core func (;32;))) + (alias core export $i "f" (core func (;33;))) + (alias core export $i "f" (core func (;34;))) + (alias core export $i "f" (core func (;35;))) + (alias core export $i "f" (core func (;36;))) + (alias core export $i "f" (core func (;37;))) + (alias core export $i "f" (core func (;38;))) + (alias core export $i "f" (core func (;39;))) + (alias core export $i "f" (core func (;40;))) + (alias core export $i "f" (core func (;41;))) + (alias core export $i "f" (core func (;42;))) + (alias core export $i "f" (core func (;43;))) + (alias core export $i "f" (core func (;44;))) + (alias core export $i "f" (core func (;45;))) + (alias core export $i "f" (core func (;46;))) + (alias core export $i "f" (core func (;47;))) + (alias core export $i "f" (core func (;48;))) + (alias core export $i "f" (core func (;49;))) + (alias core export $i "f" (core func (;50;))) + (alias core export $i "f" (core func (;51;))) + (alias core export $i "f" (core func (;52;))) + (alias core export $i "f" (core func (;53;))) + (alias core export $i "f" (core func (;54;))) + (alias core export $i "f" (core func (;55;))) + (alias core export $i "f" (core func (;56;))) + (alias core export $i "f" (core func (;57;))) + (alias core export $i "f" (core func (;58;))) + (alias core export $i "f" (core func (;59;))) + (alias core export $i "f" (core func (;60;))) + (alias core export $i "f" (core func (;61;))) + (alias core export $i "f" (core func (;62;))) + (alias core export $i "f" (core func (;63;))) + (alias core export $i "f" (core func (;64;))) + (alias core export $i "f" (core func (;65;))) + (alias core export $i "f" (core func (;66;))) + (alias core export $i "f" (core func (;67;))) + (alias core export $i "f" (core func (;68;))) + (alias core export $i "f" (core func (;69;))) + (alias core export $i "f" (core func (;70;))) + (alias core export $i "f" (core func (;71;))) + (alias core export $i "f" (core func (;72;))) + (alias core export $i "f" (core func (;73;))) + (alias core export $i "f" (core func (;74;))) + (alias core export $i "f" (core func (;75;))) + (alias core export $i "f" (core func (;76;))) + (alias core export $i "f" (core func (;77;))) + (alias core export $i "f" (core func (;78;))) + (alias core export $i "f" (core func (;79;))) + (alias core export $i "f" (core func (;80;))) + (alias core export $i "f" (core func (;81;))) + (alias core export $i "f" (core func (;82;))) + (alias core export $i "f" (core func (;83;))) + (alias core export $i "f" (core func (;84;))) + (alias core export $i "f" (core func (;85;))) + (alias core export $i "f" (core func (;86;))) + (alias core export $i "f" (core func (;87;))) + (alias core export $i "f" (core func (;88;))) + (alias core export $i "f" (core func (;89;))) + (alias core export $i "f" (core func (;90;))) + (alias core export $i "f" (core func (;91;))) + (alias core export $i "f" (core func (;92;))) + (alias core export $i "f" (core func (;93;))) + (alias core export $i "f" (core func (;94;))) + (alias core export $i "f" (core func (;95;))) + (alias core export $i "f" (core func (;96;))) + (alias core export $i "f" (core func (;97;))) + (alias core export $i "f" (core func (;98;))) + (alias core export $i "f" (core func (;99;))) + (alias core export $i "f" (core func (;100;))) + (alias core export $i "f" (core func (;101;))) + (alias core export $i "f" (core func (;102;))) + (alias core export $i "f" (core func (;103;))) + (alias core export $i "f" (core func (;104;))) + (alias core export $i "f" (core func (;105;))) + (alias core export $i "f" (core func (;106;))) + (alias core export $i "f" (core func (;107;))) + (alias core export $i "f" (core func (;108;))) + (alias core export $i "f" (core func (;109;))) + (alias core export $i "f" (core func (;110;))) + (alias core export $i "f" (core func (;111;))) + (alias core export $i "f" (core func (;112;))) + (alias core export $i "f" (core func (;113;))) + (alias core export $i "f" (core func (;114;))) + (alias core export $i "f" (core func (;115;))) + (alias core export $i "f" (core func (;116;))) + (alias core export $i "f" (core func (;117;))) + (alias core export $i "f" (core func (;118;))) + (alias core export $i "f" (core func (;119;))) + (alias core export $i "f" (core func (;120;))) + (alias core export $i "f" (core func (;121;))) + (alias core export $i "f" (core func (;122;))) + (alias core export $i "f" (core func (;123;))) + (alias core export $i "f" (core func (;124;))) + (alias core export $i "f" (core func (;125;))) + (alias core export $i "f" (core func (;126;))) + (alias core export $i "f" (core func (;127;))) + (alias core export $i "f" (core func (;128;))) + (alias core export $i "f" (core func (;129;))) + (alias core export $i "f" (core func (;130;))) + (alias core export $i "f" (core func (;131;))) + (alias core export $i "f" (core func (;132;))) + (alias core export $i "f" (core func (;133;))) + (alias core export $i "f" (core func (;134;))) + (alias core export $i "f" (core func (;135;))) + (alias core export $i "f" (core func (;136;))) + (alias core export $i "f" (core func (;137;))) + (alias core export $i "f" (core func (;138;))) + (alias core export $i "f" (core func (;139;))) + (alias core export $i "f" (core func (;140;))) + (alias core export $i "f" (core func (;141;))) + (alias core export $i "f" (core func (;142;))) + (alias core export $i "f" (core func (;143;))) + (alias core export $i "f" (core func (;144;))) + (alias core export $i "f" (core func (;145;))) + (alias core export $i "f" (core func (;146;))) + (alias core export $i "f" (core func (;147;))) + (alias core export $i "f" (core func (;148;))) + (alias core export $i "f" (core func (;149;))) + (alias core export $i "f" (core func (;150;))) + (alias core export $i "f" (core func (;151;))) + (alias core export $i "f" (core func (;152;))) + (alias core export $i "f" (core func (;153;))) + (alias core export $i "f" (core func (;154;))) + (alias core export $i "f" (core func (;155;))) + (alias core export $i "f" (core func (;156;))) + (alias core export $i "f" (core func (;157;))) + (alias core export $i "f" (core func (;158;))) + (alias core export $i "f" (core func (;159;))) +) \ No newline at end of file