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