diff --git a/.github/workflows/nix.yml b/.github/workflows/nix.yml new file mode 100644 index 00000000..2670e7b9 --- /dev/null +++ b/.github/workflows/nix.yml @@ -0,0 +1,43 @@ +name: 📦 Nix Build + +on: + push: + branches: [ main ] + + pull_request: + branches: [ '**' ] + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + run-checks: + runs-on: ubuntu-latest + strategy: + fail-fast: false + steps: + - name: Install Protoc + uses: arduino/setup-protoc@v1 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + + - name: Checkout Repository + uses: actions/checkout@v3 + + - name: Install Nix + uses: DeterminateSystems/nix-installer-action@v4 + + - name: Cache Magic + uses: DeterminateSystems/magic-nix-cache-action@v2 + + - name: Check Nix flake inputs + uses: DeterminateSystems/flake-checker-action@v5 + with: + ignore-missing-flake-lock: false + fail-mode: true + + - name: Nix Build + run: | + nix develop --show-trace -c irust --version + nix develop --show-trace -c rustc --version diff --git a/.ignore b/.ignore index ce6103f8..b5fe04d4 100644 --- a/.ignore +++ b/.ignore @@ -5,6 +5,7 @@ flake.lock release-please-config.json deny.toml diesel.toml +codecov.yml LICENSE *.nix *.md diff --git a/Cargo.lock b/Cargo.lock index b517bbb8..b1d24613 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -11,6 +11,15 @@ dependencies = [ "gimli", ] +[[package]] +name = "addr2line" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3" +dependencies = [ + "gimli", +] + [[package]] name = "adler" version = "1.0.2" @@ -71,9 +80,9 @@ dependencies = [ [[package]] name = "aes" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "433cfd6710c9986c576a25ca913c39d66a6474107b406f34f91d4a8923395241" +checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2" dependencies = [ "cfg-if", "cipher 0.4.4", @@ -96,12 +105,12 @@ dependencies = [ [[package]] name = "aes-gcm" -version = "0.10.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82e1366e0c69c9f927b1fa5ce2c7bf9eafc8f9268c0b9800729e8b267612447c" +checksum = "209b47e8954a928e1d72e86eca7000ebb6655fe1436d33eefc2201cad027e237" dependencies = [ "aead 0.5.2", - "aes 0.8.2", + "aes 0.8.3", "cipher 0.4.4", "ctr 0.9.2", "ghash 0.5.0", @@ -134,7 +143,7 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.10", "once_cell", "version_check", ] @@ -152,9 +161,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67fc08ce920c31afb70f013dcce1bfc3a3195de6a228474e45e1f145b36f8d04" +checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" dependencies = [ "memchr", ] @@ -212,15 +221,15 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41ed9a86bf92ae6580e0a31281f65a1b1d867c0cc68d5346e2ae128dddfa6a7d" +checksum = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd" [[package]] name = "anstyle-parse" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e765fd216e48e067936442276d1d57399e37bce53c264d6fefbe298080cb57ee" +checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333" dependencies = [ "utf8parse", ] @@ -231,7 +240,7 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" dependencies = [ - "windows-sys 0.48.0", + "windows-sys", ] [[package]] @@ -241,7 +250,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188" dependencies = [ "anstyle", - "windows-sys 0.48.0", + "windows-sys", ] [[package]] @@ -253,6 +262,12 @@ dependencies = [ "backtrace", ] +[[package]] +name = "arbitrary" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2d098ff73c1ca148721f37baad5ea6a465a13f9573aba8641fbbbae8164a54e" + [[package]] name = "arc-swap" version = "1.6.0" @@ -267,9 +282,9 @@ checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" [[package]] name = "arrayvec" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "asn1-rs" @@ -358,9 +373,9 @@ dependencies = [ "log", "parking", "polling", - "rustix 0.37.19", + "rustix 0.37.23", "slab", - "socket2", + "socket2 0.4.9", "waker-fn", ] @@ -405,7 +420,7 @@ dependencies = [ "futures-sink", "futures-util", "memchr", - "pin-project-lite 0.2.9", + "pin-project-lite 0.2.10", ] [[package]] @@ -434,7 +449,7 @@ checksum = "f8175979259124331c1d7bf6586ee7e0da434155e4b2d48ec2c8386281d8df39" dependencies = [ "async-trait", "axum-core", - "base64 0.21.0", + "base64 0.21.2", "bitflags 1.3.2", "bytes", "futures-util", @@ -447,7 +462,7 @@ dependencies = [ "memchr", "mime", "percent-encoding", - "pin-project-lite 0.2.9", + "pin-project-lite 0.2.10", "rustversion", "serde", "serde_json", @@ -481,16 +496,16 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.67" +version = "0.3.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca" +checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12" dependencies = [ - "addr2line", + "addr2line 0.20.0", "cc", "cfg-if", "libc", - "miniz_oxide 0.6.2", - "object", + "miniz_oxide", + "object 0.31.1", "rustc-demangle", ] @@ -520,9 +535,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.0" +version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" +checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" [[package]] name = "base64ct" @@ -568,9 +583,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.3.1" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6776fc96284a0bb647b615056fc496d1fe1644a7ab01829818a6d91cae888b84" +checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" [[package]] name = "bitvec" @@ -601,7 +616,7 @@ checksum = "3c2f0dc9a68c6317d884f97cc36cf5a3d20ba14ce404227df55e1af708ab04bc" dependencies = [ "arrayref", "arrayvec", - "constant_time_eq", + "constant_time_eq 0.2.6", ] [[package]] @@ -612,20 +627,20 @@ checksum = "6637f448b9e61dfadbdcbae9a885fadee1f3eaffb1f8d3c1965d3ade8bdfd44f" dependencies = [ "arrayref", "arrayvec", - "constant_time_eq", + "constant_time_eq 0.2.6", ] [[package]] name = "blake3" -version = "1.3.3" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ae2468a89544a466886840aa467a25b766499f4f04bf7d9fcd10ecee9fccef" +checksum = "199c42ab6972d92c9f8995f086273d25c42fc0f7b2a1fcefba465c1352d25ba5" dependencies = [ "arrayref", "arrayvec", "cc", "cfg-if", - "constant_time_eq", + "constant_time_eq 0.3.0", ] [[package]] @@ -724,9 +739,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.12.2" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c6ed94e98ecff0c12dd1b04c15ec0d7d9458ca8fe806cea6f12954efe74c63b" +checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" [[package]] name = "byte-unit" @@ -777,6 +792,18 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" +[[package]] +name = "cap-fs-ext" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58bc48200a1a0fa6fba138b1802ad7def18ec1cdd92f7b2a04e21f1bd887f7b9" +dependencies = [ + "cap-primitives", + "cap-std", + "io-lifetimes 1.0.11", + "windows-sys", +] + [[package]] name = "cap-primitives" version = "1.0.15" @@ -786,12 +813,12 @@ dependencies = [ "ambient-authority", "fs-set-times", "io-extras", - "io-lifetimes", + "io-lifetimes 1.0.11", "ipnet", "maybe-owned", - "rustix 0.37.19", - "windows-sys 0.48.0", - "winx", + "rustix 0.37.23", + "windows-sys", + "winx 0.35.1", ] [[package]] @@ -812,8 +839,20 @@ checksum = "3373a62accd150b4fcba056d4c5f3b552127f0ec86d3c8c102d60b978174a012" dependencies = [ "cap-primitives", "io-extras", - "io-lifetimes", - "rustix 0.37.19", + "io-lifetimes 1.0.11", + "rustix 0.37.23", +] + +[[package]] +name = "cap-time-ext" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e95002993b7baee6b66c8950470e59e5226a23b3af39fc59c47fe416dd39821a" +dependencies = [ + "cap-primitives", + "once_cell", + "rustix 0.37.23", + "winx 0.35.1", ] [[package]] @@ -1120,15 +1159,21 @@ dependencies = [ [[package]] name = "const-oid" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520fbf3c07483f94e3e3ca9d0cfd913d7718ef2483d2cfd91c0d9e91474ab913" +checksum = "6340df57935414636969091153f35f68d9f00bbc8fb4a9c6054706c213e6c6bc" [[package]] name = "constant_time_eq" -version = "0.2.5" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21a53c0a4d288377e7415b53dcfc3c04da5cdc2cc95c8d5ac178b58f0b861ad6" + +[[package]] +name = "constant_time_eq" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13418e745008f7349ec7e449155f419a61b92b58a99cc3616942b926825ec76b" +checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" [[package]] name = "core-foundation" @@ -1166,33 +1211,34 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.7" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e4c1eaa2012c47becbbad2ab175484c2a84d1185b566fb2cc5b8707343dfe58" +checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" dependencies = [ "libc", ] [[package]] name = "cranelift-bforest" -version = "0.95.1" +version = "0.97.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1277fbfa94bc82c8ec4af2ded3e639d49ca5f7f3c7eeab2c66accd135ece4e70" +checksum = "5c289b8eac3a97329a524e953b5fd68a8416ca629e1a37287f12d9e0760aadbc" dependencies = [ - "cranelift-entity 0.95.1", + "cranelift-entity", ] [[package]] name = "cranelift-codegen" -version = "0.95.1" +version = "0.97.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6e8c31ad3b2270e9aeec38723888fe1b0ace3bea2b06b3f749ccf46661d3220" +checksum = "7bf07ba80f53fa7f7dc97b11087ea867f7ae4621cfca21a909eca92c0b96c7d9" dependencies = [ "bumpalo", "cranelift-bforest", "cranelift-codegen-meta", "cranelift-codegen-shared", - "cranelift-entity 0.95.1", + "cranelift-control", + "cranelift-entity", "cranelift-isle", "gimli", "hashbrown 0.13.2", @@ -1204,26 +1250,26 @@ dependencies = [ [[package]] name = "cranelift-codegen-meta" -version = "0.95.1" +version = "0.97.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8ac5ac30d62b2d66f12651f6b606dbdfd9c2cfd0908de6b387560a277c5c9da" +checksum = "40a7ca088173130c5c033e944756e3e441fbf3f637f32b4f6eb70252580c6dd4" dependencies = [ "cranelift-codegen-shared", ] [[package]] name = "cranelift-codegen-shared" -version = "0.95.1" +version = "0.97.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd82b8b376247834b59ed9bdc0ddeb50f517452827d4a11bccf5937b213748b8" +checksum = "0114095ec7d2fbd658ed100bd007006360bc2530f57c6eee3d3838869140dbf9" [[package]] -name = "cranelift-entity" -version = "0.95.1" +name = "cranelift-control" +version = "0.97.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40099d38061b37e505e63f89bab52199037a72b931ad4868d9089ff7268660b0" +checksum = "1d56031683a55a949977e756d21826eb17a1f346143a1badc0e120a15615cd38" dependencies = [ - "serde", + "arbitrary", ] [[package]] @@ -1237,9 +1283,9 @@ dependencies = [ [[package]] name = "cranelift-frontend" -version = "0.95.1" +version = "0.97.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a25d9d0a0ae3079c463c34115ec59507b4707175454f0eee0891e83e30e82d" +checksum = "25f28cc44847c8b98cb921e6bfc0f7b228f4d27519376fea724d181da91709a6" dependencies = [ "cranelift-codegen", "log", @@ -1249,15 +1295,15 @@ dependencies = [ [[package]] name = "cranelift-isle" -version = "0.95.1" +version = "0.97.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80de6a7d0486e4acbd5f9f87ec49912bf4c8fb6aea00087b989685460d4469ba" +checksum = "80b658177e72178c438f7de5d6645c56d97af38e17fcb0b500459007b4e05cc5" [[package]] name = "cranelift-native" -version = "0.95.1" +version = "0.97.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb6b03e0e03801c4b3fd8ce0758a94750c07a44e7944cc0ffbf0d3f2e7c79b00" +checksum = "bf1c7de7221e6afcc5e13ced3b218faab3bc65b47eac67400046a05418aecd6a" dependencies = [ "cranelift-codegen", "libc", @@ -1266,18 +1312,18 @@ dependencies = [ [[package]] name = "cranelift-wasm" -version = "0.95.1" +version = "0.97.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff3220489a3d928ad91e59dd7aeaa8b3de18afb554a6211213673a71c90737ac" +checksum = "76b0d28ebe8edb6b503630c489aa4669f1e2d13b97bec7271a0fcb0e159be3ad" dependencies = [ "cranelift-codegen", - "cranelift-entity 0.95.1", + "cranelift-entity", "cranelift-frontend", "itertools 0.10.5", "log", "smallvec", - "wasmparser 0.102.0", - "wasmtime-types 8.0.1", + "wasmparser", + "wasmtime-types", ] [[package]] @@ -1377,14 +1423,14 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.14" +version = "0.9.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695" +checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" dependencies = [ "autocfg", "cfg-if", "crossbeam-utils", - "memoffset 0.8.0", + "memoffset 0.9.0", "scopeguard", ] @@ -1400,9 +1446,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.15" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" dependencies = [ "cfg-if", ] @@ -1593,20 +1639,20 @@ dependencies = [ "hashbrown 0.12.3", "lock_api", "once_cell", - "parking_lot_core 0.9.7", + "parking_lot_core 0.9.8", ] [[package]] name = "data-encoding" -version = "2.3.3" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d8666cb01533c39dde32bcbab8e227b4ed6679b2c925eba05feabea39508fb" +checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" [[package]] name = "data-encoding-macro" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86927b7cd2fe88fa698b87404b287ab98d1a0063a34071d92e575b72d3029aca" +checksum = "c904b33cc60130e1aeea4956ab803d08a3f4a0ca82d64ed757afac3891f2bb99" dependencies = [ "data-encoding", "data-encoding-macro-internal", @@ -1614,9 +1660,9 @@ dependencies = [ [[package]] name = "data-encoding-macro-internal" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5bbed42daaa95e780b60a50546aa345b8413a1e46f9a40a12907d3598f038db" +checksum = "8fdf3fce3ce863539ec1d7fd1b6dcc3c645663376b43ed376bbf887733e4f772" dependencies = [ "data-encoding", "syn 1.0.109", @@ -1854,9 +1900,9 @@ checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" [[package]] name = "dtoa" -version = "1.0.6" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65d09067bfacaa79114679b279d7f5885b53295b1e2cfb4e79c8e4bd3d633169" +checksum = "519b83cd10f5f6e969625a409f735182bea5558cd8b64c655806ceaae36f1999" [[package]] name = "ecdsa" @@ -1992,7 +2038,7 @@ checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" dependencies = [ "errno-dragonfly", "libc", - "windows-sys 0.48.0", + "windows-sys", ] [[package]] @@ -2024,15 +2070,15 @@ dependencies = [ [[package]] name = "exr" -version = "1.6.3" +version = "1.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdd2162b720141a91a054640662d3edce3d50a944a50ffca5313cd951abb35b4" +checksum = "85a7b44a196573e272e0cf0bcf130281c71e9a0c67062954b3323fd364bfdac9" dependencies = [ "bit_field", "flume", "half 2.2.1", "lebe", - "miniz_oxide 0.6.2", + "miniz_oxide", "rayon-core", "smallvec", "zune-inflate", @@ -2053,6 +2099,17 @@ dependencies = [ "instant", ] +[[package]] +name = "fd-lock" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b0377f1edc77dbd1118507bc7a66e4ab64d2b90c66f90726dc801e73a8c68f9" +dependencies = [ + "cfg-if", + "rustix 0.38.3", + "windows-sys", +] + [[package]] name = "fdeflate" version = "0.3.0" @@ -2080,9 +2137,9 @@ checksum = "e825f6987101665dea6ec934c09ec6d721de7bc1bf92248e1d5810c8cd636b77" [[package]] name = "file-per-thread-logger" -version = "0.1.6" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84f2e425d9790201ba4af4630191feac6dcc98765b118d4d18e91d23c2353866" +checksum = "8a3cc21c33af89af0930c8cae4ade5e6fdc17b5d2c97b3d2e2edb67a1cf683f3" dependencies = [ "env_logger", "log", @@ -2096,7 +2153,7 @@ checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" dependencies = [ "crc32fast", "libz-sys", - "miniz_oxide 0.7.1", + "miniz_oxide", ] [[package]] @@ -2144,13 +2201,13 @@ dependencies = [ [[package]] name = "fs-set-times" -version = "0.19.1" +version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7833d0f115a013d51c55950a3b09d30e4b057be9961b709acb9b5b17a1108861" +checksum = "6d167b646a876ba8fda6b50ac645cfd96242553cbaf0ca4fccaa39afcbf0801f" dependencies = [ - "io-lifetimes", - "rustix 0.37.19", - "windows-sys 0.48.0", + "io-lifetimes 1.0.11", + "rustix 0.38.3", + "windows-sys", ] [[package]] @@ -2219,7 +2276,7 @@ dependencies = [ "futures-io", "memchr", "parking", - "pin-project-lite 0.2.9", + "pin-project-lite 0.2.10", "waker-fn", ] @@ -2276,7 +2333,7 @@ dependencies = [ "futures-sink", "futures-task", "memchr", - "pin-project-lite 0.2.9", + "pin-project-lite 0.2.10", "pin-utils", "slab", ] @@ -2296,7 +2353,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "27d12c0aed7f1e24276a241aadc4cb8ea9f83000f34bc062b7cc2d51e3b0fabd" dependencies = [ - "bitflags 2.3.1", + "bitflags 2.3.3", "debugid", "fxhash", "serde", @@ -2327,9 +2384,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if", "js-sys", @@ -2355,7 +2412,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d930750de5717d2dd0b8c0d42c076c0e884c81a73e6cab859bbd2339c71e3e40" dependencies = [ "opaque-debug", - "polyval 0.6.0", + "polyval 0.6.1", ] [[package]] @@ -2370,9 +2427,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.27.2" +version = "0.27.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4" +checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" dependencies = [ "fallible-iterator", "indexmap 1.9.3", @@ -2392,9 +2449,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.19" +version = "0.3.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d357c7ae988e7d2182f7d7871d0b963962420b0678b0997ce7de72001aeab782" +checksum = "97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049" dependencies = [ "bytes", "fnv", @@ -2503,18 +2560,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" -dependencies = [ - "libc", -] - -[[package]] -name = "hermit-abi" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" +checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" [[package]] name = "hex" @@ -2605,7 +2653,7 @@ dependencies = [ ] [[package]] -name = "homestar-guest-wasm" +name = "homestar-functions" version = "0.1.0" dependencies = [ "image", @@ -2690,9 +2738,10 @@ dependencies = [ "tokio", "tracing", "wasi-common", - "wasmparser 0.104.0", - "wasmtime 8.0.1", - "wasmtime-component-util 10.0.1", + "wasmparser", + "wasmtime", + "wasmtime-component-util", + "wasmtime-wasi", "wat", "wit-component", ] @@ -2727,7 +2776,7 @@ checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" dependencies = [ "bytes", "http", - "pin-project-lite 0.2.9", + "pin-project-lite 0.2.10", ] [[package]] @@ -2760,9 +2809,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.26" +version = "0.14.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab302d72a6f11a3b910431ff93aae7e773078c769f0a3ef15fb9ec692ed147d4" +checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" dependencies = [ "bytes", "futures-channel", @@ -2774,8 +2823,8 @@ dependencies = [ "httparse", "httpdate", "itoa", - "pin-project-lite 0.2.9", - "socket2", + "pin-project-lite 0.2.10", + "socket2 0.4.9", "tokio", "tower-service", "tracing", @@ -2802,7 +2851,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" dependencies = [ "hyper", - "pin-project-lite 0.2.9", + "pin-project-lite 0.2.10", "tokio", "tokio-io-timeout", ] @@ -2991,31 +3040,37 @@ version = "0.17.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fde93d48f0d9277f977a333eca8313695ddd5301dc96f7e02aeddcb0dd99096f" dependencies = [ - "io-lifetimes", - "windows-sys 0.48.0", + "io-lifetimes 1.0.11", + "windows-sys", ] [[package]] name = "io-lifetimes" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220" +checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ - "hermit-abi 0.3.1", + "hermit-abi", "libc", - "windows-sys 0.48.0", + "windows-sys", ] +[[package]] +name = "io-lifetimes" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bffb4def18c48926ccac55c1223e02865ce1a821751a95920448662696e7472c" + [[package]] name = "ipconfig" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd302af1b90f2463a98fa5ad469fc212c8e3175a41c3068601bfa2727591c5be" +checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" dependencies = [ - "socket2", + "socket2 0.5.3", "widestring", - "winapi", - "winreg 0.10.1", + "windows-sys", + "winreg 0.50.0", ] [[package]] @@ -3072,20 +3127,19 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.7.2" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12b6ee2129af8d4fb011108c73d99a1b83a85977f23b82460c0ae2e25bb4b57f" +checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" [[package]] name = "is-terminal" -version = "0.4.7" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f" +checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" dependencies = [ - "hermit-abi 0.3.1", - "io-lifetimes", - "rustix 0.37.19", - "windows-sys 0.48.0", + "hermit-abi", + "rustix 0.38.3", + "windows-sys", ] [[package]] @@ -3108,9 +3162,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.6" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" +checksum = "62b02a5381cc465bd3041d84623d0fa3b66738b52b8e2fc3bab8ad63ab032f4a" [[package]] name = "ittapi" @@ -3152,9 +3206,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.63" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f37a4a5928311ac501dee68b3c7613a1037d0edb30c8e5427bd832d55d1b790" +checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" dependencies = [ "wasm-bindgen", ] @@ -3320,7 +3374,7 @@ dependencies = [ "bytes", "futures", "futures-timer", - "getrandom 0.2.9", + "getrandom 0.2.10", "instant", "libp2p-allow-block-list", "libp2p-connection-limits", @@ -3418,7 +3472,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70b34b6da8165c0bde35c82db8efda39b824776537e73973549e76cadb3a77c5" dependencies = [ "asynchronous-codec", - "base64 0.21.0", + "base64 0.21.2", "byteorder", "bytes", "either", @@ -3528,7 +3582,7 @@ dependencies = [ "log", "rand 0.8.5", "smallvec", - "socket2", + "socket2 0.4.9", "tokio", "trust-dns-proto", "void", @@ -3671,7 +3725,7 @@ dependencies = [ "libc", "libp2p-core", "log", - "socket2", + "socket2 0.4.9", "tokio", ] @@ -3835,21 +3889,21 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "linux-raw-sys" -version = "0.1.4" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" +checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "linux-raw-sys" -version = "0.3.7" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ece97ea872ece730aed82664c424eb4c8291e1ff2480247ccf7409044bc6479f" +checksum = "09fc20d2ca12cb9f044c93e3bd6d32d523e6e2ec3db4f7b2939cd99026ecd3f0" [[package]] name = "lock_api" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" dependencies = [ "autocfg", "scopeguard", @@ -3857,15 +3911,15 @@ dependencies = [ [[package]] name = "log" -version = "0.4.18" +version = "0.4.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "518ef76f2f87365916b142844c16d8fefd85039bc5699050210a7778ee1cd1de" +checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" [[package]] name = "lru" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03f1160296536f10c833a82dca22267d5486734230d47bf00bf435885814ba1e" +checksum = "718e8fae447df0c7e1ba7f5189829e63fd536945c8988d61444c19039f16b670" dependencies = [ "hashbrown 0.13.2", ] @@ -3900,7 +3954,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" dependencies = [ - "regex-automata", + "regex-automata 0.1.10", ] [[package]] @@ -3948,7 +4002,7 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ffc89ccdc6e10d6907450f753537ebc5c5d3460d2e4e62ea74bd571db62c0f9e" dependencies = [ - "rustix 0.37.19", + "rustix 0.37.23", ] [[package]] @@ -3978,6 +4032,15 @@ dependencies = [ "autocfg", ] +[[package]] +name = "memoffset" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +dependencies = [ + "autocfg", +] + [[package]] name = "migrations_internals" version = "2.1.0" @@ -3985,7 +4048,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f23f71580015254b020e856feac3df5878c2c7a8812297edd6c0a485ac9dada" dependencies = [ "serde", - "toml 0.7.4", + "toml 0.7.6", ] [[package]] @@ -4021,15 +4084,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" -[[package]] -name = "miniz_oxide" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" -dependencies = [ - "adler", -] - [[package]] name = "miniz_oxide" version = "0.7.1" @@ -4042,14 +4096,13 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.6" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" +checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" dependencies = [ "libc", - "log", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.45.0", + "windows-sys", ] [[package]] @@ -4161,7 +4214,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.10", ] [[package]] @@ -4344,19 +4397,19 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.2.6", + "hermit-abi", "libc", ] [[package]] name = "object" -version = "0.30.3" +version = "0.30.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea86265d3d3dcb6a27fc51bd29a4bf387fae9d2986b823079d4986af253eb439" +checksum = "03b4680b86d9cfafba8fc491dc9b6df26b68cf40e9e6cd73909194759a63c385" dependencies = [ "crc32fast", "hashbrown 0.13.2", @@ -4364,6 +4417,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "object" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1" +dependencies = [ + "memchr", +] + [[package]] name = "oid-registry" version = "0.4.0" @@ -4384,9 +4446,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.17.1" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "oorandom" @@ -4526,7 +4588,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", - "parking_lot_core 0.9.7", + "parking_lot_core 0.9.8", ] [[package]] @@ -4545,22 +4607,22 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.7" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" +checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.2.16", + "redox_syscall 0.3.5", "smallvec", - "windows-sys 0.45.0", + "windows-targets", ] [[package]] name = "paste" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f746c4065a8fa3fe23974dd82f15431cc8d40779821001404d10d2e79ca7d79" +checksum = "b4b27ab7be369122c218afc2079489cdcb4b517c0a3fc386ff11e1fedfcc2b35" [[package]] name = "pathdiff" @@ -4603,9 +4665,9 @@ checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" [[package]] name = "pest" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e68e84bfb01f0507134eac1e9b410a12ba379d064eab48c50ba4ce329a527b70" +checksum = "f73935e4d55e2abf7f130186537b19e7a4abc886a0252380b59248af473a3fc9" dependencies = [ "thiserror", "ucd-trie", @@ -4613,9 +4675,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b79d4c71c865a25a4322296122e3924d30bc8ee0834c8bfc8b95f7f054afbfb" +checksum = "aef623c9bbfa0eedf5a0efba11a5ee83209c326653ca31ff019bec3a95bfff2b" dependencies = [ "pest", "pest_generator", @@ -4623,9 +4685,9 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c435bf1076437b851ebc8edc3a18442796b30f1728ffea6262d59bbe28b077e" +checksum = "b3e8cba4ec22bada7fc55ffe51e2deb6a0e0db2d0b7ab0b103acc80d2510c190" dependencies = [ "pest", "pest_meta", @@ -4636,9 +4698,9 @@ dependencies = [ [[package]] name = "pest_meta" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "745a452f8eb71e39ffd8ee32b3c5f51d03845f99786fa9b68db6ff509c505411" +checksum = "a01f71cb40bd8bb94232df14b946909e14660e33fc05db3e50ae2a82d7ea0ca0" dependencies = [ "once_cell", "pest", @@ -4647,18 +4709,18 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.0" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c95a7476719eab1e366eaf73d0260af3021184f18177925b07f54b30089ceead" +checksum = "030ad2bc4db10a8944cb0d837f158bdfec4d4a4873ab701a95046770d11f8842" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.0" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39407670928234ebc5e6e580247dd567ad73a3578460c5990f9503df207e8f07" +checksum = "ec2e072ecce94ec471b13398d5402c188e76ac03cf74dd1a975161b23a3f6d9c" dependencies = [ "proc-macro2", "quote", @@ -4673,9 +4735,9 @@ checksum = "257b64915a082f7811703966789728173279bdebb956b143dbcd23f6f970a777" [[package]] name = "pin-project-lite" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" +checksum = "4c40d25201921e5ff0c862a505c6557ea88568a4e3ace775ab55e93f2f4f9d57" [[package]] name = "pin-utils" @@ -4717,9 +4779,9 @@ checksum = "e3d7ddaed09e0eb771a79ab0fd64609ba0afb0a8366421957936ad14cbd13630" [[package]] name = "plotters" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97" +checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45" dependencies = [ "num-traits", "plotters-backend", @@ -4730,30 +4792,30 @@ dependencies = [ [[package]] name = "plotters-backend" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142" +checksum = "9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609" [[package]] name = "plotters-svg" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f" +checksum = "38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab" dependencies = [ "plotters-backend", ] [[package]] name = "png" -version = "0.17.8" +version = "0.17.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aaeebc51f9e7d2c150d3f3bfeb667f2aa985db5ef1e3d212847bdedb488beeaa" +checksum = "59871cc5b6cce7eaccca5a802b4173377a1c2ba90654246789a8fa2334426d11" dependencies = [ "bitflags 1.3.2", "crc32fast", "fdeflate", "flate2", - "miniz_oxide 0.7.1", + "miniz_oxide", ] [[package]] @@ -4768,8 +4830,8 @@ dependencies = [ "concurrent-queue", "libc", "log", - "pin-project-lite 0.2.9", - "windows-sys 0.48.0", + "pin-project-lite 0.2.10", + "windows-sys", ] [[package]] @@ -4797,14 +4859,14 @@ dependencies = [ [[package]] name = "polyval" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef234e08c11dfcb2e56f79fd70f6f2eb7f025c0ce2333e82f4f0518ecad30c6" +checksum = "d52cff9d1d4dee5fe6d03729099f4a310a41179e0a10dbf542039873f2e826fb" dependencies = [ "cfg-if", "cpufeatures", "opaque-debug", - "universal-hash 0.5.0", + "universal-hash 0.5.1", ] [[package]] @@ -5131,7 +5193,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.10", ] [[package]] @@ -5223,32 +5285,34 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.10", "redox_syscall 0.2.16", "thiserror", ] [[package]] name = "regalloc2" -version = "0.6.1" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80535183cae11b149d618fbd3c37e38d7cda589d82d7769e196ca9a9042d7621" +checksum = "12513beb38dd35aab3ac5f5b89fd0330159a0dc21d5309d75073011bbc8032b0" dependencies = [ - "fxhash", + "hashbrown 0.13.2", "log", + "rustc-hash", "slice-group-by", "smallvec", ] [[package]] name = "regex" -version = "1.8.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af83e617f331cc6ae2da5443c602dfa5af81e517212d9d611a5b3ba1777b5370" +checksum = "89089e897c013b3deb627116ae56a6955a72b8bed395c9526af31c9fe528b484" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.7.1", + "regex-automata 0.3.0", + "regex-syntax 0.7.3", ] [[package]] @@ -5260,6 +5324,17 @@ dependencies = [ "regex-syntax 0.6.29", ] +[[package]] +name = "regex-automata" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa250384981ea14565685dea16a9ccc4d1c541a13f82b9c168572264d1df8c56" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.7.3", +] + [[package]] name = "regex-syntax" version = "0.6.29" @@ -5268,9 +5343,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.7.1" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5996294f19bd3aae0453a862ad728f60e6600695733dd5df01da90c54363a3c" +checksum = "2ab07dc67230e4a4718e70fd5c20055a4334b121f1f9db8fe63ef39ce9b8c846" [[package]] name = "rend" @@ -5287,7 +5362,7 @@ version = "0.11.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cde824a14b7c14f85caff81225f411faacc04a2013f41670f41443742b1c1c55" dependencies = [ - "base64 0.21.0", + "base64 0.21.2", "bytes", "encoding_rs", "futures-core", @@ -5304,7 +5379,7 @@ dependencies = [ "native-tls", "once_cell", "percent-encoding", - "pin-project-lite 0.2.9", + "pin-project-lite 0.2.10", "serde", "serde_json", "serde_urlencoded", @@ -5493,32 +5568,31 @@ dependencies = [ [[package]] name = "rustix" -version = "0.36.13" +version = "0.37.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a38f9520be93aba504e8ca974197f46158de5dcaa9fa04b57c57cd6a679d658" +checksum = "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06" dependencies = [ "bitflags 1.3.2", "errno", - "io-lifetimes", + "io-lifetimes 1.0.11", + "itoa", "libc", - "linux-raw-sys 0.1.4", - "windows-sys 0.45.0", + "linux-raw-sys 0.3.8", + "once_cell", + "windows-sys", ] [[package]] name = "rustix" -version = "0.37.19" +version = "0.38.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acf8729d8542766f1b2cf77eb034d52f40d375bb8b615d0b147089946e16613d" +checksum = "ac5ffa1efe7548069688cd7028f32591853cd7b5b756d41bcffd2353e4fc75b4" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.3.3", "errno", - "io-lifetimes", - "itoa", "libc", - "linux-raw-sys 0.3.7", - "once_cell", - "windows-sys 0.48.0", + "linux-raw-sys 0.4.3", + "windows-sys", ] [[package]] @@ -5548,9 +5622,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06" +checksum = "dc31bd9b61a32c31f9650d18add92aa83a49ba979c143eefd27fe7177b05bd5f" [[package]] name = "rusty-fork" @@ -5577,9 +5651,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" +checksum = "fe232bdf6be8c8de797b22184ee71118d63780ea42ac85b61d1baa6d3b782ae9" [[package]] name = "same-file" @@ -5592,11 +5666,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.21" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3" +checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" dependencies = [ - "windows-sys 0.42.0", + "windows-sys", ] [[package]] @@ -5710,9 +5784,9 @@ checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" [[package]] name = "serde" -version = "1.0.164" +version = "1.0.167" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" +checksum = "7daf513456463b42aa1d94cff7e0c24d682b429f020b9afa4f5ba5c40a22b237" dependencies = [ "serde_derive", ] @@ -5728,18 +5802,18 @@ dependencies = [ [[package]] name = "serde_bytes" -version = "0.11.9" +version = "0.11.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294" +checksum = "5a16be4fe5320ade08736447e3198294a5ea9a6d44dde6f35f0a5e06859c427a" dependencies = [ "serde", ] [[package]] name = "serde_derive" -version = "1.0.164" +version = "1.0.167" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" +checksum = "b69b106b68bc8054f0e974e70d19984040f8a5cf9215ca82626ea4853f82c4b9" dependencies = [ "proc-macro2", "quote", @@ -5760,9 +5834,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.96" +version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1" +checksum = "0f1e14e89be7aa4c4b78bdbdc9eb5bf8517829a600ae8eaa39a6e1d960b5185c" dependencies = [ "itoa", "ryu", @@ -5771,18 +5845,19 @@ dependencies = [ [[package]] name = "serde_path_to_error" -version = "0.1.11" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7f05c1d5476066defcdfacce1f52fc3cae3af1d3089727100c02ae92e5abbe0" +checksum = "8acc4422959dd87a76cb117c191dcbffc20467f06c9100b76721dab370f24d3a" dependencies = [ + "itoa", "serde", ] [[package]] name = "serde_spanned" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93107647184f6027e3b7dcb2e11034cf95ffa1e3a682c67951963ac69c1c007d" +checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186" dependencies = [ "serde", ] @@ -5805,7 +5880,7 @@ version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f02d8aa6e3c385bf084924f660ce2a3a6bd333ba55b35e8590b321f35d88513" dependencies = [ - "base64 0.21.0", + "base64 0.21.2", "chrono", "hex", "indexmap 1.9.3", @@ -5957,9 +6032,9 @@ checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7" [[package]] name = "smallvec" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" +checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" [[package]] name = "snafu" @@ -6010,6 +6085,16 @@ dependencies = [ "winapi", ] +[[package]] +name = "socket2" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877" +dependencies = [ + "libc", + "windows-sys", +] + [[package]] name = "soketto" version = "0.7.1" @@ -6225,6 +6310,22 @@ dependencies = [ "libc", ] +[[package]] +name = "system-interface" +version = "0.25.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10081a99cbecbc363d381b9503563785f0b02735fccbb0d4c1a2cb3d39f7e7fe" +dependencies = [ + "bitflags 2.3.3", + "cap-fs-ext", + "cap-std", + "fd-lock", + "io-lifetimes 2.0.2", + "rustix 0.38.3", + "windows-sys", + "winx 0.36.1", +] + [[package]] name = "tap" version = "1.0.1" @@ -6233,21 +6334,22 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "target-lexicon" -version = "0.12.7" +version = "0.12.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd1ba337640d60c3e96bc6f0638a939b9c9a7f2c316a1598c279828b3d1dc8c5" +checksum = "1b1c7f239eb94671427157bd93b3694320f3668d4e1eff08c7285366fd777fac" [[package]] name = "tempfile" -version = "3.5.0" +version = "3.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9fbec84f381d5795b08656e4912bec604d162bff9291d6189a78f4c8ab87998" +checksum = "31c0432476357e58790aaa47a8efb0c5138f137343f3b5f23bd36a27e3b0a6d6" dependencies = [ + "autocfg", "cfg-if", "fastrand", "redox_syscall 0.3.5", - "rustix 0.37.19", - "windows-sys 0.45.0", + "rustix 0.37.23", + "windows-sys", ] [[package]] @@ -6261,18 +6363,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.40" +version = "1.0.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" +checksum = "a35fc5b8971143ca348fa6df4f024d4d55264f3468c71ad1c2f365b0a4d58c42" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.40" +version = "1.0.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" +checksum = "463fe12d7993d3b327787537ce8dd4dfa058de32fc2b195ef3cde03dc4771e8f" dependencies = [ "proc-macro2", "quote", @@ -6302,9 +6404,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.21" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f3403384eaacbca9923fa06940178ac13e4edb725486d70e8e15881d0c836cc" +checksum = "ea9e1b3cf1243ae005d9e74085d4d542f3125458f3a81af210d901dcd7411efd" dependencies = [ "itoa", "serde", @@ -6365,12 +6467,12 @@ dependencies = [ "mio", "num_cpus", "parking_lot 0.12.1", - "pin-project-lite 0.2.9", + "pin-project-lite 0.2.10", "signal-hook-registry", - "socket2", + "socket2 0.4.9", "tokio-macros", "tracing", - "windows-sys 0.48.0", + "windows-sys", ] [[package]] @@ -6379,7 +6481,7 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" dependencies = [ - "pin-project-lite 0.2.9", + "pin-project-lite 0.2.10", "tokio", ] @@ -6411,7 +6513,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" dependencies = [ "futures-core", - "pin-project-lite 0.2.9", + "pin-project-lite 0.2.10", "tokio", ] @@ -6449,7 +6551,7 @@ dependencies = [ "futures-core", "futures-io", "futures-sink", - "pin-project-lite 0.2.9", + "pin-project-lite 0.2.10", "tokio", "tracing", ] @@ -6465,9 +6567,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6135d499e69981f9ff0ef2167955a5333c35e36f6937d382974566b3d5b94ec" +checksum = "c17e963a819c331dcacd7ab957d80bc2b9a9c1e71c804826d2f283dd65306542" dependencies = [ "serde", "serde_spanned", @@ -6477,20 +6579,20 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a76a9312f5ba4c2dec6b9161fdf25d87ad8a09256ccea5a556fef03c706a10f" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.19.10" +version = "0.19.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380d56e8670370eee6566b0bfd4265f65b3f432e8c6d85623f728d4fa31f739" +checksum = "c500344a19072298cd05a7224b3c0c629348b78692bf48466c5238656e315a78" dependencies = [ - "indexmap 1.9.3", + "indexmap 2.0.0", "serde", "serde_spanned", "toml_datetime", @@ -6505,7 +6607,7 @@ checksum = "3082666a3a6433f7f511c7192923fa1fe07c69332d3c6a2e6bb040b569199d5a" dependencies = [ "async-trait", "axum", - "base64 0.21.0", + "base64 0.21.2", "bytes", "futures-core", "futures-util", @@ -6535,7 +6637,7 @@ dependencies = [ "futures-util", "indexmap 1.9.3", "pin-project", - "pin-project-lite 0.2.9", + "pin-project-lite 0.2.10", "rand 0.8.5", "slab", "tokio", @@ -6565,7 +6667,7 @@ checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" dependencies = [ "cfg-if", "log", - "pin-project-lite 0.2.9", + "pin-project-lite 0.2.10", "tracing-attributes", "tracing-core", ] @@ -6583,9 +6685,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f57e3ca2a01450b1a921183a9c9cbfda207fd822cef4ccb00a65402cbba7a74" +checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" dependencies = [ "proc-macro2", "quote", @@ -6662,7 +6764,7 @@ dependencies = [ "lazy_static", "rand 0.8.5", "smallvec", - "socket2", + "socket2 0.4.9", "thiserror", "tinyvec", "tokio", @@ -6703,7 +6805,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a30c54ab5d67a3aee4be0ffb0cc035426a06ffc3ef1ba979b3c658168688691" dependencies = [ "futures", - "pin-project-lite 0.2.9", + "pin-project-lite 0.2.10", "tokio", ] @@ -6790,11 +6892,11 @@ dependencies = [ "anyhow", "async-recursion", "async-trait", - "base64 0.21.0", + "base64 0.21.2", "bs58 0.5.0", "cid 0.10.1", "futures", - "getrandom 0.2.9", + "getrandom 0.2.10", "instant", "libipld-core", "libipld-json", @@ -6849,9 +6951,9 @@ checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" -version = "1.0.8" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" +checksum = "22049a19f4a68748a168c0fc439f9516686aa045927ff767eca0a85101fb6e73" [[package]] name = "unicode-normalization" @@ -6892,9 +6994,9 @@ dependencies = [ [[package]] name = "universal-hash" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d3160b73c9a19f7e2939a2fdad446c57c1bbbbf4d919d3213ff1267a580d8b5" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" dependencies = [ "crypto-common", "subtle", @@ -6952,7 +7054,7 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d023da39d1fde5a8a3fe1f3e01ca9632ada0a63e9797de55a879d6e2236277be" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.10", "rand 0.8.5", ] @@ -7016,11 +7118,10 @@ dependencies = [ [[package]] name = "want" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" dependencies = [ - "log", "try-lock", ] @@ -7036,6 +7137,30 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi-cap-std-sync" +version = "10.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291862f1014dd7e674f93b263d57399de4dd1907ea37e74cf7d36454536ba2f0" +dependencies = [ + "anyhow", + "async-trait", + "cap-fs-ext", + "cap-rand", + "cap-std", + "cap-time-ext", + "fs-set-times", + "io-extras", + "io-lifetimes 1.0.11", + "is-terminal", + "once_cell", + "rustix 0.37.23", + "system-interface", + "tracing", + "wasi-common", + "windows-sys", +] + [[package]] name = "wasi-common" version = "10.0.1" @@ -7048,19 +7173,36 @@ dependencies = [ "cap-std", "io-extras", "log", - "rustix 0.37.19", + "rustix 0.37.23", "thiserror", "tracing", - "wasmtime 10.0.1", + "wasmtime", + "wiggle", + "windows-sys", +] + +[[package]] +name = "wasi-tokio" +version = "10.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92108a97e839351fb6aa7462f9d8757a123fa90e84769cb9d72d1eac57e41ea7" +dependencies = [ + "anyhow", + "cap-std", + "io-extras", + "io-lifetimes 1.0.11", + "rustix 0.37.23", + "tokio", + "wasi-cap-std-sync", + "wasi-common", "wiggle", - "windows-sys 0.48.0", ] [[package]] name = "wasm-bindgen" -version = "0.2.86" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bba0e8cb82ba49ff4e229459ff22a191bbe9a1cb3a341610c9c33efc27ddf73" +checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -7068,9 +7210,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.86" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b04bc93f9d6bdee709f6bd2118f57dd6679cf1176a1af464fca3ab0d66d8fb" +checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" dependencies = [ "bumpalo", "log", @@ -7083,9 +7225,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.36" +version = "0.4.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d1985d03709c53167ce907ff394f5316aa22cb4e12761295c5dc57dacb6297e" +checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" dependencies = [ "cfg-if", "js-sys", @@ -7095,9 +7237,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.86" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14d6b024f1a526bb0234f52840389927257beb670610081360e5a03c5df9c258" +checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -7105,9 +7247,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.86" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e128beba882dd1eb6200e1dc92ae6c5dbaa4311aa7bb211ca035779e5efc39f8" +checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", @@ -7118,48 +7260,30 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.86" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed9d5b4305409d1fc9482fee2d7f9bcbf24b3972bf59817ef757e23982242a93" +checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" [[package]] name = "wasm-encoder" -version = "0.25.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eff853c4f09eec94d76af527eddad4e9de13b11d6286a1ef7134bc30135a2b7" +checksum = "18c41dbd92eaebf3612a39be316540b8377c871cb9bde6b064af962984912881" dependencies = [ "leb128", ] [[package]] -name = "wasm-encoder" -version = "0.26.0" +name = "wasm-metadata" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d05d0b6fcd0aeb98adf16e7975331b3c17222aa815148f5b976370ce589d80ef" -dependencies = [ - "leb128", -] - -[[package]] -name = "wasm-encoder" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e77053dc709db790691d3732cfc458adc5acc881dec524965c608effdcd9c581" -dependencies = [ - "leb128", -] - -[[package]] -name = "wasm-metadata" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbdef99fafff010c57fabb7bc703f0903ec16fcee49207a22dcc4f78ea44562f" +checksum = "36e5156581ff4a302405c44ca7c85347563ca431d15f1a773f12c9c7b9a6cdc9" dependencies = [ "anyhow", "indexmap 1.9.3", "serde", - "wasm-encoder 0.26.0", - "wasmparser 0.104.0", + "wasm-encoder", + "wasmparser", ] [[package]] @@ -7177,36 +7301,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "wasmparser" -version = "0.102.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48134de3d7598219ab9eaf6b91b15d8e50d31da76b8519fe4ecfcec2cf35104b" -dependencies = [ - "indexmap 1.9.3", - "url", -] - -[[package]] -name = "wasmparser" -version = "0.104.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a396af81a7c56ad976131d6a35e4b693b78a1ea0357843bd436b4577e254a7d" -dependencies = [ - "indexmap 1.9.3", - "url", -] - -[[package]] -name = "wasmparser" -version = "0.105.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83be9e0b3f9570dc1979a33ae7b89d032c73211564232b99976553e5c155ec32" -dependencies = [ - "indexmap 1.9.3", - "url", -] - [[package]] name = "wasmparser" version = "0.107.0" @@ -7219,83 +7313,50 @@ dependencies = [ [[package]] name = "wasmprinter" -version = "0.2.57" +version = "0.2.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50b0e5ed7a74a065637f0d7798ce5f29cadb064980d24b0c82af5200122fa0d8" +checksum = "cc960b30b84abca377768f3c62cff3a1c74db8c0f6759ed581827da0bd3a3fed" dependencies = [ "anyhow", - "wasmparser 0.105.0", + "wasmparser", ] [[package]] name = "wasmtime" -version = "8.0.1" +version = "10.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f907fdead3153cb9bfb7a93bbd5b62629472dc06dee83605358c64c52ed3dda9" +checksum = "cd02b992d828b91efaf2a7499b21205fe4ab3002e401e3fe0f227aaeb4001d93" dependencies = [ "anyhow", "async-trait", "bincode", + "bumpalo", "cfg-if", "encoding_rs", + "fxprof-processed-profile", "indexmap 1.9.3", "libc", "log", - "object", + "object 0.30.4", "once_cell", "paste", "psm", "rayon", "serde", + "serde_json", "target-lexicon", - "wasmparser 0.102.0", + "wasmparser", "wasmtime-cache", "wasmtime-component-macro", - "wasmtime-component-util 8.0.1", + "wasmtime-component-util", "wasmtime-cranelift", - "wasmtime-environ 8.0.1", + "wasmtime-environ", "wasmtime-fiber", - "wasmtime-jit 8.0.1", - "wasmtime-runtime 8.0.1", + "wasmtime-jit", + "wasmtime-runtime", + "wasmtime-winch", "wat", - "windows-sys 0.45.0", -] - -[[package]] -name = "wasmtime" -version = "10.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd02b992d828b91efaf2a7499b21205fe4ab3002e401e3fe0f227aaeb4001d93" -dependencies = [ - "anyhow", - "bincode", - "bumpalo", - "cfg-if", - "fxprof-processed-profile", - "indexmap 1.9.3", - "libc", - "log", - "object", - "once_cell", - "paste", - "psm", - "serde", - "serde_json", - "target-lexicon", - "wasmparser 0.107.0", - "wasmtime-environ 10.0.1", - "wasmtime-jit 10.0.1", - "wasmtime-runtime 10.0.1", - "windows-sys 0.48.0", -] - -[[package]] -name = "wasmtime-asm-macros" -version = "8.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3b9daa7c14cd4fa3edbf69de994408d5f4b7b0959ac13fa69d465f6597f810d" -dependencies = [ - "cfg-if", + "windows-sys", ] [[package]] @@ -7309,45 +7370,39 @@ dependencies = [ [[package]] name = "wasmtime-cache" -version = "8.0.1" +version = "10.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c86437fa68626fe896e5afc69234bb2b5894949083586535f200385adfd71213" +checksum = "efc78cfe1a758d1336f447a47af6ec05e0df2c03c93440d70faf80e17fbb001e" dependencies = [ "anyhow", - "base64 0.21.0", + "base64 0.21.2", "bincode", "directories-next", "file-per-thread-logger", "log", - "rustix 0.36.13", + "rustix 0.37.23", "serde", "sha2 0.10.7", "toml 0.5.11", - "windows-sys 0.45.0", + "windows-sys", "zstd", ] [[package]] name = "wasmtime-component-macro" -version = "8.0.1" +version = "10.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "267096ed7cc93b4ab15d3daa4f195e04dbb7e71c7e5c6457ae7d52e9dd9c3607" +checksum = "b8e916103436a6d84faa4c2083e2e98612a323c2cc6147ec419124f67c764c9c" dependencies = [ "anyhow", "proc-macro2", "quote", "syn 1.0.109", - "wasmtime-component-util 8.0.1", + "wasmtime-component-util", "wasmtime-wit-bindgen", - "wit-parser 0.6.4", + "wit-parser", ] -[[package]] -name = "wasmtime-component-util" -version = "8.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74e02ca7a4a3c69d72b88f26f0192e333958df6892415ac9ab84dcc42c9000c2" - [[package]] name = "wasmtime-component-util" version = "10.0.1" @@ -7356,61 +7411,41 @@ checksum = "f20a5135ec5ef01080e674979b02d6fa5eebaa2b0c2d6660513ee9956a1bf624" [[package]] name = "wasmtime-cranelift" -version = "8.0.1" +version = "10.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1cefde0cce8cb700b1b21b6298a3837dba46521affd7b8c38a9ee2c869eee04" +checksum = "8e1aa99cbf3f8edb5ad8408ba380f5ab481528ecd8a5053acf758e006d6727fd" dependencies = [ "anyhow", "cranelift-codegen", - "cranelift-entity 0.95.1", + "cranelift-control", + "cranelift-entity", "cranelift-frontend", "cranelift-native", "cranelift-wasm", "gimli", "log", - "object", + "object 0.30.4", "target-lexicon", "thiserror", - "wasmparser 0.102.0", + "wasmparser", "wasmtime-cranelift-shared", - "wasmtime-environ 8.0.1", + "wasmtime-environ", ] [[package]] name = "wasmtime-cranelift-shared" -version = "8.0.1" +version = "10.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd041e382ef5aea1b9fc78442394f1a4f6d676ce457e7076ca4cb3f397882f8b" +checksum = "cce31fd55978601acc103acbb8a26f81c89a6eae12d3a1c59f34151dfa609484" dependencies = [ "anyhow", "cranelift-codegen", + "cranelift-control", "cranelift-native", "gimli", - "object", - "target-lexicon", - "wasmtime-environ 8.0.1", -] - -[[package]] -name = "wasmtime-environ" -version = "8.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a990198cee4197423045235bf89d3359e69bd2ea031005f4c2d901125955c949" -dependencies = [ - "anyhow", - "cranelift-entity 0.95.1", - "gimli", - "indexmap 1.9.3", - "log", - "object", - "serde", + "object 0.30.4", "target-lexicon", - "thiserror", - "wasm-encoder 0.25.0", - "wasmparser 0.102.0", - "wasmprinter", - "wasmtime-component-util 8.0.1", - "wasmtime-types 8.0.1", + "wasmtime-environ", ] [[package]] @@ -7420,54 +7455,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41f9e58e0ee7d43ff13e75375c726b16bce022db798d3a099a65eeaa7d7a544b" dependencies = [ "anyhow", - "cranelift-entity 0.97.1", + "cranelift-entity", "gimli", "indexmap 1.9.3", "log", - "object", + "object 0.30.4", "serde", "target-lexicon", "thiserror", - "wasmparser 0.107.0", - "wasmtime-types 10.0.1", + "wasm-encoder", + "wasmparser", + "wasmprinter", + "wasmtime-component-util", + "wasmtime-types", ] [[package]] name = "wasmtime-fiber" -version = "8.0.1" +version = "10.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ab182d5ab6273a133ab88db94d8ca86dc3e57e43d70baaa4d98f94ddbd7d10a" +checksum = "14309cbdf2c395258b124a24757c727403070c0465a28bcc780c4f82f4bca5ff" dependencies = [ "cc", "cfg-if", - "rustix 0.36.13", - "wasmtime-asm-macros 8.0.1", - "windows-sys 0.45.0", -] - -[[package]] -name = "wasmtime-jit" -version = "8.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de48df552cfca1c9b750002d3e07b45772dd033b0b206d5c0968496abf31244" -dependencies = [ - "addr2line", - "anyhow", - "bincode", - "cfg-if", - "cpp_demangle", - "gimli", - "ittapi", - "log", - "object", - "rustc-demangle", - "serde", - "target-lexicon", - "wasmtime-environ 8.0.1", - "wasmtime-jit-debug 8.0.1", - "wasmtime-jit-icache-coherence 8.0.1", - "wasmtime-runtime 8.0.1", - "windows-sys 0.45.0", + "rustix 0.37.23", + "wasmtime-asm-macros", + "windows-sys", ] [[package]] @@ -7476,33 +7489,24 @@ version = "10.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f0f2eaeb01bb67266416507829bd8e0bb60278444e4cbd048e280833ebeaa02" dependencies = [ - "addr2line", + "addr2line 0.19.0", "anyhow", "bincode", "cfg-if", "cpp_demangle", "gimli", + "ittapi", "log", - "object", + "object 0.30.4", "rustc-demangle", - "rustix 0.37.19", + "rustix 0.37.23", "serde", "target-lexicon", - "wasmtime-environ 10.0.1", - "wasmtime-jit-icache-coherence 10.0.1", - "wasmtime-runtime 10.0.1", - "windows-sys 0.48.0", -] - -[[package]] -name = "wasmtime-jit-debug" -version = "8.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e0554b84c15a27d76281d06838aed94e13a77d7bf604bbbaf548aa20eb93846" -dependencies = [ - "object", - "once_cell", - "rustix 0.36.13", + "wasmtime-environ", + "wasmtime-jit-debug", + "wasmtime-jit-icache-coherence", + "wasmtime-runtime", + "windows-sys", ] [[package]] @@ -7511,18 +7515,9 @@ version = "10.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f42e59d62542bfb73ce30672db7eaf4084a60b434b688ac4f05b287d497de082" dependencies = [ + "object 0.30.4", "once_cell", -] - -[[package]] -name = "wasmtime-jit-icache-coherence" -version = "8.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aecae978b13f7f67efb23bd827373ace4578f2137ec110bbf6a4a7cde4121bbd" -dependencies = [ - "cfg-if", - "libc", - "windows-sys 0.45.0", + "rustix 0.37.23", ] [[package]] @@ -7533,14 +7528,14 @@ checksum = "2b49ceb7e2105a8ebe5614d7bbab6f6ef137a284e371633af60b34925493081f" dependencies = [ "cfg-if", "libc", - "windows-sys 0.48.0", + "windows-sys", ] [[package]] name = "wasmtime-runtime" -version = "8.0.1" +version = "10.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658cf6f325232b6760e202e5255d823da5e348fdea827eff0a2a22319000b441" +checksum = "3a5de4762421b0b2b19e02111ca403632852b53e506e03b4b227ffb0fbfa63c2" dependencies = [ "anyhow", "cc", @@ -7554,72 +7549,81 @@ dependencies = [ "memoffset 0.8.0", "paste", "rand 0.8.5", - "rustix 0.36.13", - "wasmtime-asm-macros 8.0.1", - "wasmtime-environ 8.0.1", + "rustix 0.37.23", + "sptr", + "wasmtime-asm-macros", + "wasmtime-environ", "wasmtime-fiber", - "wasmtime-jit-debug 8.0.1", - "windows-sys 0.45.0", + "wasmtime-jit-debug", + "windows-sys", ] [[package]] -name = "wasmtime-runtime" +name = "wasmtime-types" version = "10.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a5de4762421b0b2b19e02111ca403632852b53e506e03b4b227ffb0fbfa63c2" +checksum = "dcbb7c138f797192f46afdd3ec16f85ef007c3bb45fa8e5174031f17b0be4c4a" dependencies = [ - "anyhow", - "cc", - "cfg-if", - "indexmap 1.9.3", - "libc", - "log", - "mach", - "memfd", - "memoffset 0.8.0", - "paste", - "rand 0.8.5", - "rustix 0.37.19", - "sptr", - "wasmtime-asm-macros 10.0.1", - "wasmtime-environ 10.0.1", - "wasmtime-jit-debug 10.0.1", - "windows-sys 0.48.0", + "cranelift-entity", + "serde", + "thiserror", + "wasmparser", ] [[package]] -name = "wasmtime-types" -version = "8.0.1" +name = "wasmtime-wasi" +version = "10.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4f6fffd2a1011887d57f07654dd112791e872e3ff4a2e626aee8059ee17f06f" +checksum = "01686e859249d4dffe3d7ce9957ae35bcf4161709dfafd165ee136bd54d179f1" dependencies = [ - "cranelift-entity 0.95.1", - "serde", + "anyhow", + "async-trait", + "bitflags 1.3.2", + "cap-fs-ext", + "cap-rand", + "cap-std", + "cap-time-ext", + "fs-set-times", + "io-extras", + "libc", + "rustix 0.37.23", + "system-interface", "thiserror", - "wasmparser 0.102.0", + "tracing", + "wasi-cap-std-sync", + "wasi-common", + "wasi-tokio", + "wasmtime", + "wiggle", + "windows-sys", ] [[package]] -name = "wasmtime-types" +name = "wasmtime-winch" version = "10.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcbb7c138f797192f46afdd3ec16f85ef007c3bb45fa8e5174031f17b0be4c4a" +checksum = "60160d8f7d2b301790730dac8ff25156c61d4fed79481e7074c21dd1283cfe2f" dependencies = [ - "cranelift-entity 0.97.1", - "serde", - "thiserror", - "wasmparser 0.107.0", + "anyhow", + "cranelift-codegen", + "gimli", + "object 0.30.4", + "target-lexicon", + "wasmparser", + "wasmtime-cranelift-shared", + "wasmtime-environ", + "winch-codegen", ] [[package]] name = "wasmtime-wit-bindgen" -version = "8.0.1" +version = "10.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "983db9cc294d1adaa892a53ff6a0dc6605fc0ab1a4da5d8a2d2d4bde871ff7dd" +checksum = "d3334b0466a4d340de345cda83474d1d2c429770c3d667877971407672bc618a" dependencies = [ "anyhow", "heck", - "wit-parser 0.6.4", + "wit-parser", ] [[package]] @@ -7633,30 +7637,30 @@ dependencies = [ [[package]] name = "wast" -version = "58.0.0" +version = "60.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "372eecae2d10a5091c2005b32377d7ecd6feecdf2c05838056d02d8b4f07c429" +checksum = "bd06cc744b536e30387e72a48fdd492105b9c938bb4f415c39c616a7a0a697ad" dependencies = [ "leb128", "memchr", "unicode-width", - "wasm-encoder 0.27.0", + "wasm-encoder", ] [[package]] name = "wat" -version = "1.0.64" +version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d47446190e112ab1579ab40b3ad7e319d859d74e5134683f04e9f0747bf4173" +checksum = "5abe520f0ab205366e9ac7d3e6b2fc71de44e32a2b58f2ec871b6b575bdcea3b" dependencies = [ - "wast 58.0.0", + "wast 60.0.0", ] [[package]] name = "web-sys" -version = "0.3.63" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bdd9ef4e984da1187bf8110c5cf5b845fbc87a23602cdf912386a76fcd3a7c2" +checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" dependencies = [ "js-sys", "wasm-bindgen", @@ -7754,7 +7758,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "942be5bd85f072c3128396f6e5a9bfb93ca8c1939ded735d177b7bcba9a13d05" dependencies = [ "aes 0.6.0", - "aes-gcm 0.10.1", + "aes-gcm 0.10.2", "async-trait", "bincode", "block-modes", @@ -7819,7 +7823,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f08dfd7a6e3987e255c4dbe710dde5d94d0f0574f8a21afa95d171376c143106" dependencies = [ "log", - "socket2", + "socket2 0.4.9", "thiserror", "tokio", "webrtc-util", @@ -7908,9 +7912,9 @@ checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" [[package]] name = "widestring" -version = "0.5.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983" +checksum = "653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8" [[package]] name = "wiggle" @@ -7923,7 +7927,7 @@ dependencies = [ "bitflags 1.3.2", "thiserror", "tracing", - "wasmtime 10.0.1", + "wasmtime", "wiggle-macro", ] @@ -7985,6 +7989,22 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "winch-codegen" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "525fdd0d4e82d1bd3083bd87e8ca8014abfbdc5bf290d1d5371dac440d351e89" +dependencies = [ + "anyhow", + "cranelift-codegen", + "gimli", + "regalloc2", + "smallvec", + "target-lexicon", + "wasmparser", + "wasmtime-environ", +] + [[package]] name = "windows" version = "0.34.0" @@ -8004,31 +8024,7 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" dependencies = [ - "windows-targets 0.48.0", -] - -[[package]] -name = "windows-sys" -version = "0.42.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", + "windows-targets", ] [[package]] @@ -8037,45 +8033,24 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets 0.48.0", + "windows-targets", ] [[package]] name = "windows-targets" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - -[[package]] -name = "windows-targets" -version = "0.48.0" +version = "0.48.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" dependencies = [ - "windows_aarch64_gnullvm 0.48.0", + "windows_aarch64_gnullvm", "windows_aarch64_msvc 0.48.0", "windows_i686_gnu 0.48.0", "windows_i686_msvc 0.48.0", "windows_x86_64_gnu 0.48.0", - "windows_x86_64_gnullvm 0.48.0", + "windows_x86_64_gnullvm", "windows_x86_64_msvc 0.48.0", ] -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - [[package]] name = "windows_aarch64_gnullvm" version = "0.48.0" @@ -8088,12 +8063,6 @@ version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17cffbe740121affb56fad0fc0e421804adf0ae00891205213b5cecd30db881d" -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - [[package]] name = "windows_aarch64_msvc" version = "0.48.0" @@ -8106,12 +8075,6 @@ version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2564fde759adb79129d9b4f54be42b32c89970c18ebf93124ca8870a498688ed" -[[package]] -name = "windows_i686_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - [[package]] name = "windows_i686_gnu" version = "0.48.0" @@ -8124,12 +8087,6 @@ version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9cd9d32ba70453522332c14d38814bceeb747d80b3958676007acadd7e166956" -[[package]] -name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - [[package]] name = "windows_i686_msvc" version = "0.48.0" @@ -8142,24 +8099,12 @@ version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfce6deae227ee8d356d19effc141a509cc503dfd1f850622ec4b0f84428e1f4" -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" - [[package]] name = "windows_x86_64_gnu" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - [[package]] name = "windows_x86_64_gnullvm" version = "0.48.0" @@ -8172,12 +8117,6 @@ version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d19538ccc21819d01deaf88d6a17eae6596a12e9aafdbb97916fb49896d89de9" -[[package]] -name = "windows_x86_64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - [[package]] name = "windows_x86_64_msvc" version = "0.48.0" @@ -8186,9 +8125,9 @@ checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" [[package]] name = "winnow" -version = "0.4.6" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61de7bac303dc551fe038e2b3cef0f571087a47571ea6e79a87692ac99b99699" +checksum = "a9482fe6ceabdf32f3966bfdd350ba69256a97c30253dc616fe0005af24f164e" dependencies = [ "memchr", ] @@ -8211,6 +8150,16 @@ dependencies = [ "winapi", ] +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys", +] + [[package]] name = "winx" version = "0.35.1" @@ -8218,36 +8167,46 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c52a121f0fbf9320d5f2a9a5d82f6cb7557eda5e8b47fc3e7f359ec866ae960" dependencies = [ "bitflags 1.3.2", - "io-lifetimes", - "windows-sys 0.48.0", + "io-lifetimes 1.0.11", + "windows-sys", +] + +[[package]] +name = "winx" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4857cedf8371f690bb6782a3e2b065c54d1b6661be068aaf3eac8b45e813fdf8" +dependencies = [ + "bitflags 2.3.3", + "windows-sys", ] [[package]] name = "wit-bindgen" -version = "0.6.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad22d93d3f55847ac4b3df31607a26f35231754ef472382319de032770d8b5bf" +checksum = "392d16e9e46cc7ca98125bc288dd5e4db469efe8323d3e0dac815ca7f2398522" dependencies = [ - "bitflags 2.3.1", + "bitflags 2.3.3", "wit-bindgen-rust-macro", ] [[package]] name = "wit-bindgen-core" -version = "0.6.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bc1b5a6e87f16491f2297f75312dc0fb354f8c88c8bece53ea0d3167fc98867" +checksum = "d422d36cbd78caa0e18c3371628447807c66ee72466b69865ea7e33682598158" dependencies = [ "anyhow", "wit-component", - "wit-parser 0.7.1", + "wit-parser", ] [[package]] name = "wit-bindgen-rust" -version = "0.6.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7946a66f1132d3322c29de9d28097bd263f67e1e0909054f91253aa103cdf8be" +checksum = "9b76db68264f5d2089dc4652581236d8e75c5b89338de6187716215fd0e68ba3" dependencies = [ "heck", "wasm-metadata", @@ -8258,9 +8217,9 @@ dependencies = [ [[package]] name = "wit-bindgen-rust-lib" -version = "0.6.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0baf7325748c5d363ab6ed3ddbd155c241cfe385410c61f2505ec978a61a2d2c" +checksum = "1c50f334bc08b0903a43387f6eea6ef6aa9eb2a085729f1677b29992ecef20ba" dependencies = [ "heck", "wit-bindgen-core", @@ -8268,9 +8227,9 @@ dependencies = [ [[package]] name = "wit-bindgen-rust-macro" -version = "0.6.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42c131da5d2ba7746908e1401d474640371c31ad05281528c2a9e945a87d19be" +checksum = "ced38a5e174940c6a41ae587babeadfd2e2c2dc32f3b6488bcdca0e8922cf3f3" dependencies = [ "anyhow", "proc-macro2", @@ -8282,47 +8241,32 @@ dependencies = [ [[package]] name = "wit-component" -version = "0.8.2" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e291ff83cb9c8e59963cc6922bdda77ed8f5517d6835f0c98070c4e7f1ae4996" +checksum = "7cbd4c7f8f400327c482c88571f373844b7889e61460650d650fc5881bb3575c" dependencies = [ "anyhow", "bitflags 1.3.2", "indexmap 1.9.3", "log", - "url", - "wasm-encoder 0.26.0", + "wasm-encoder", "wasm-metadata", - "wasmparser 0.104.0", - "wit-parser 0.7.1", + "wasmparser", + "wit-parser", ] [[package]] name = "wit-parser" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f887c3da527a51b321076ebe6a7513026a4757b6d4d144259946552d6fc728b3" -dependencies = [ - "anyhow", - "id-arena", - "indexmap 1.9.3", - "log", - "pulldown-cmark", - "unicode-xid", - "url", -] - -[[package]] -name = "wit-parser" -version = "0.7.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca2581061573ef6d1754983d7a9b3ed5871ef859d52708ea9a0f5af32919172" +checksum = "6daec9f093dbaea0e94043eeb92ece327bbbe70c86b1f41aca9bbfefd7f050f0" dependencies = [ "anyhow", "id-arena", "indexmap 1.9.3", "log", "pulldown-cmark", + "semver", "unicode-xid", "url", ] diff --git a/Cargo.toml b/Cargo.toml index 499b9bbb..a3f7821a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [workspace] members = [ "homestar-core", - "homestar-guest-wasm", + "homestar-functions", "homestar-runtime", "homestar-wasm" ] @@ -52,7 +52,7 @@ debug-assertions = false opt-level = 0 debug-assertions = false -[profile.release.package.homestar-guest-wasm] +[profile.release.package.homestar-functions] codegen-units = 1 # Tell `rustc` to optimize for small code size. opt-level = "z" # 'z' to optimize "aggressively" for size diff --git a/README.md b/README.md index 816893e5..e9fb10a8 100644 --- a/README.md +++ b/README.md @@ -88,11 +88,13 @@ represents the `homestar` runtime. ### Non-published, Helper Crates -- [homestar-guest-wasm](./homestar-guest-wasm) +- [homestar-functions](./homestar-functions) - This is a helper and example crate for writing and compiling + Currently, this is a helper and example crate for writing and compiling [Wasm components][wasm-component] using [wit-bindgen][wit-bindgen]. + **It will be expanded upon as a default set of Wasm mods and functions.** + ## Testing the Project - Running the tests: @@ -185,7 +187,7 @@ hooks. Please run this before every commit and/or push. * **`ci`**, which runs a sequence of commands to check formatting, lints, release builds, and tests * **`db`** and **`db-reset`** for running `diesel` setup and migrations - * **`compile-wasm`** for compiling [homestar-guest-wasm](./homestar-guest-wasm), + * **`compile-wasm`** for compiling [homestar-functions](./homestar-functions), a [wit-bindgen][wit-bindgen]-driven example, to the `wasm32-unknown-unknown` target * **`docker-`** for running docker builds * **`nx-test`**, which translates to `cargo nextest run && cargo test --doc` diff --git a/codecov.yml b/codecov.yml index 06a753ec..4199477e 100644 --- a/codecov.yml +++ b/codecov.yml @@ -1,8 +1,6 @@ ignore: - "*/tests/*" - - "homestar/src/test_utils" - - "homestar-guest-wasm" - - "homestar-wasm/src/test_utils" + - "*/src/test_utils/*" comment: layout: "reach, diff, flags, files" diff --git a/docker/Dockerfile b/docker/Dockerfile index 2081e55c..bda5558c 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -15,7 +15,7 @@ RUN cargo init RUN rm -Rf src RUN cargo init --lib homestar-core && \ - cargo init --lib homestar-guest-wasm && \ + cargo init --lib homestar-functions && \ cargo init --lib homestar-wasm && \ cargo init --lib homestar-runtime @@ -24,7 +24,7 @@ RUN echo "fn main() {}" > ./homestar-runtime/src/main.rs # copy cargo.* COPY Cargo.lock Cargo.toml .env diesel.toml ./ COPY ../homestar-core/Cargo.toml ./homestar-core/ -COPY ../homestar-guest-wasm/Cargo.toml ./homestar-guest-wasm/ +COPY ../homestar-functions/Cargo.toml ./homestar-functions/ COPY ../homestar-wasm/Cargo.toml ./homestar-wasm/ COPY ../homestar-runtime/Cargo.toml ../homestar-runtime/migrations ./homestar-runtime/ diff --git a/flake.lock b/flake.lock index 0dd70562..9c04b48d 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,21 @@ { "nodes": { + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, "flake-utils": { "inputs": { "systems": "systems" @@ -20,21 +36,23 @@ }, "nixpkgs": { "locked": { - "lastModified": 1688389917, - "narHash": "sha256-RKiK1QeommEsjQ8fLgxt4831x9O6n2gD7wAhVZTrr8M=", + "lastModified": 1688523306, + "narHash": "sha256-xcJHmwlw0w05D/c8oPX6COxVLYNbu6lXF2mIV7dFGkc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "aed4b19d312525ae7ca9bceb4e1efe3357d0e2eb", + "rev": "023b1df882979a413a3f7e2009424db30d51a0fe", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-23.05", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" } }, "root": { "inputs": { + "flake-compat": "flake-compat", "flake-utils": "flake-utils", "nixpkgs": "nixpkgs", "rust-overlay": "rust-overlay" @@ -50,11 +68,11 @@ ] }, "locked": { - "lastModified": 1688438033, - "narHash": "sha256-wOmpZis06pVKTR+5meGwhrW10/buf98lnA26uQLaqek=", + "lastModified": 1688524421, + "narHash": "sha256-EFauqXKKjbJKPWv3kbzl1lm1GnXl0+DBK4RcLuFndZQ=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "c3e43223dece545cfe06ddd92fd782adc73d56c3", + "rev": "ab050286f18ea354bfe7a49ca8ddcbd633cae1ca", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 35bc4f6d..5083851e 100644 --- a/flake.nix +++ b/flake.nix @@ -2,8 +2,15 @@ description = "homestar"; inputs = { - nixpkgs.url = "nixpkgs/nixos-23.05"; + # we leverage unstable due to wasm-tools/wasm updates + nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; flake-utils.url = "github:numtide/flake-utils"; + + flake-compat = { + url = "github:edolstra/flake-compat"; + flake = false; + }; + rust-overlay = { url = "github:oxalica/rust-overlay"; inputs.nixpkgs.follows = "nixpkgs"; @@ -14,6 +21,7 @@ outputs = { self, nixpkgs, + flake-compat, flake-utils, rust-overlay, } @ inputs: @@ -43,6 +51,7 @@ cargo-udeps cargo-watch twiggy + wasm-tools ]; ci = pkgs.writeScriptBin "ci" '' @@ -65,7 +74,7 @@ ''; compileWasm = pkgs.writeScriptBin "compile-wasm" '' - cargo build -p homestar-guest-wasm --target wasm32-unknown-unknown --release + cargo build -p homestar-functions --target wasm32-unknown-unknown --release ''; dockerBuild = arch: @@ -128,6 +137,20 @@ cargo test --doc --no-default-features ''; + wasmTest = pkgs.writeScriptBin "wasm-ex-test" '' + cargo build -p homestar-functions --features example-test --target wasm32-unknown-unknown --release + cp target/wasm32-unknown-unknown/release/homestar_functions.wasm homestar-wasm/fixtures/example_test.wasm + wasm-tools component new homestar-wasm/fixtures/example_test.wasm -o homestar-wasm/fixtures/example_test_component.wasm + ''; + + wasmAdd = pkgs.writeScriptBin "wasm-ex-add" '' + cargo build -p homestar-functions --features example-add --target wasm32-unknown-unknown --release + cp target/wasm32-unknown-unknown/release/homestar_functions.wasm homestar-wasm/fixtures/example_add.wasm + wasm-tools component new homestar-wasm/fixtures/example_add.wasm -o homestar-wasm/fixtures/example_add_component.wasm + wasm-tools print homestar-wasm/fixtures/example_add.wasm -o homestar-wasm/fixtures/example_add.wat + wasm-tools print homestar-wasm/fixtures/example_add_component.wasm -o homestar-wasm/fixtures/example_add_component.wat + ''; + scripts = [ ci db @@ -147,6 +170,8 @@ nxTest nxTestAll nxTestNoDefault + wasmTest + wasmAdd ]; in rec { @@ -175,6 +200,7 @@ darwin.apple_sdk.frameworks.CoreFoundation darwin.apple_sdk.frameworks.Foundation ]; + NIX_PATH = "nixpkgs=" + pkgs.path; RUST_BACKTRACE = 1; shellHook = '' diff --git a/homestar-guest-wasm/Cargo.toml b/homestar-functions/Cargo.toml similarity index 74% rename from homestar-guest-wasm/Cargo.toml rename to homestar-functions/Cargo.toml index 9da78d2f..335eaf35 100644 --- a/homestar-guest-wasm/Cargo.toml +++ b/homestar-functions/Cargo.toml @@ -1,13 +1,13 @@ [package] -name = "homestar-guest-wasm" +name = "homestar-functions" publish = false version = "0.1.0" edition = { workspace = true } rust-version = { workspace = true } [dependencies] -image = { version = "0.24", default-features = false, features = ["png"] } -wit-bindgen = "0.6" +image = { version = "0.24", default-features = false, features = ["png"], optional = true } +wit-bindgen = "0.8" [dev-dependencies] image = "0.24" @@ -20,3 +20,5 @@ crate-type = ["cdylib", "rlib"] [features] default = [] run_image_tests = [] +example-add = [] +example-test = ["image"] diff --git a/homestar-guest-wasm/README.md b/homestar-functions/README.md similarity index 88% rename from homestar-guest-wasm/README.md rename to homestar-functions/README.md index 8b0205eb..64b01c90 100644 --- a/homestar-guest-wasm/README.md +++ b/homestar-functions/README.md @@ -3,7 +3,7 @@ homestar Logo -

homestar-guest-wasm

+

homestar-functions

@@ -42,18 +42,19 @@ We then implement these functions in [lib.rs](./src/lib.rs) using ## Build Once functions are implemented, we can build the component in release-mode, -targetting [`wasm32-unknown-unknown`][wasm32]: +targetting [`wasm32-unknown-unknown`][wasm32], using feature-flags for different +module output(s): ```console # from this directory: -cargo build -p homestar-guest-wasm --target wasm32-unknown-unknown --release +cargo build --features example-add --target wasm32-unknown-unknown --release # or from the top-level workspace: -cargo build -p homestar-guest-wasm --target wasm32-unknown-unknown --release +cargo build -p homestar-functions --features example-add --target wasm32-unknown-unknown --release ``` The guest Wasm module will be generated at -`../target/wasm32-unknown-unknown/release/homestar_guest_wasm.wasm`. +`../target/wasm32-unknown-unknown/release/homestar_functions.wasm`. Sadly, this module is **not yet** an actual `component`. But, we can leverage the [wasm-tools][wasm-tools] tooling ([wit-component][wit-component] in @@ -62,7 +63,7 @@ it in a different directory: ```console wasm-tools component new / -../target/wasm32-unknown-unknown/release/homestar_guest_wasm.wasm -o ../homestar-wasm/fixtures/ +../target/wasm32-unknown-unknown/release/homestar_functions.wasm -o ../homestar-wasm/fixtures/ ``` *Of note*, [homestar-wasm's](../homestar-wasm) execution model will do diff --git a/homestar-guest-wasm/fixtures/synthcat.jpg b/homestar-functions/fixtures/synthcat.jpg similarity index 100% rename from homestar-guest-wasm/fixtures/synthcat.jpg rename to homestar-functions/fixtures/synthcat.jpg diff --git a/homestar-guest-wasm/out/.gitkeep b/homestar-functions/out/.gitkeep similarity index 100% rename from homestar-guest-wasm/out/.gitkeep rename to homestar-functions/out/.gitkeep diff --git a/homestar-functions/src/example/add.rs b/homestar-functions/src/example/add.rs new file mode 100644 index 00000000..e24727ae --- /dev/null +++ b/homestar-functions/src/example/add.rs @@ -0,0 +1,14 @@ +wit_bindgen::generate!({ + path: "wit/add.wit", + world: "add", +}); + +pub struct Component; + +impl Add for Component { + fn add_two(input: i32) -> i32 { + input + 2 + } +} + +export_add!(Component); diff --git a/homestar-functions/src/example/mod.rs b/homestar-functions/src/example/mod.rs new file mode 100644 index 00000000..6354367a --- /dev/null +++ b/homestar-functions/src/example/mod.rs @@ -0,0 +1,4 @@ +#[cfg(feature = "example-add")] +pub mod add; +#[cfg(feature = "example-test")] +pub mod test; diff --git a/homestar-guest-wasm/src/lib.rs b/homestar-functions/src/example/test.rs similarity index 97% rename from homestar-guest-wasm/src/lib.rs rename to homestar-functions/src/example/test.rs index cb628894..858b6dd5 100644 --- a/homestar-guest-wasm/src/lib.rs +++ b/homestar-functions/src/example/test.rs @@ -1,13 +1,15 @@ -#![allow(clippy::too_many_arguments)] - use std::io::Cursor; -wit_bindgen::generate!("test" in "./wits"); -struct Component; +wit_bindgen::generate!({ + path: "wit/test.wit", + world: "test", +}); + +pub struct Component; type Matrix = Vec>; -impl Homestar for Component { +impl Test for Component { fn add_one(a: i32) -> i32 { a + 1 } @@ -81,10 +83,10 @@ impl Homestar for Component { } } -export_homestar!(Component); +export_test!(Component); #[cfg(test)] -mod test { +mod test_mod { use super::*; #[cfg(feature = "run_image_tests")] use std::path::Path; @@ -110,8 +112,8 @@ mod test { assert_eq!(Component::transpose(transposed), matrix); } - #[test] #[cfg(feature = "run_image_tests")] + #[test] fn blur() { let img = image::open(Path::new("./fixtures/synthcat.jpg")).unwrap(); let mut buffer: Vec = Vec::new(); @@ -132,8 +134,8 @@ mod test { .expect("Failed to write blurred.png to filesystem"); } - #[test] #[cfg(feature = "run_image_tests")] + #[test] fn crop() { let img = image::open(Path::new("./fixtures/synthcat.jpg")).unwrap(); let mut buffer: Vec = Vec::new(); @@ -154,8 +156,8 @@ mod test { .expect("Failed to write cropped.png to filesystem"); } - #[test] #[cfg(feature = "run_image_tests")] + #[test] fn grayscale() { let img = image::open(Path::new("./fixtures/synthcat.jpg")).unwrap(); let mut buffer: Vec = Vec::new(); @@ -176,8 +178,8 @@ mod test { .expect("Failed to write graycat.jpg to filesystem"); } - #[test] #[cfg(feature = "run_image_tests")] + #[test] fn rotate() { let img = image::open(Path::new("./fixtures/synthcat.jpg")).unwrap(); let mut buffer: Vec = Vec::new(); @@ -198,8 +200,8 @@ mod test { .expect("Failed to write graycat.jpg to filesystem"); } - #[test] #[cfg(feature = "run_image_tests")] + #[test] fn mixed() { let img = image::open(Path::new("./fixtures/synthcat.jpg")).unwrap(); let mut buffer: Vec = Vec::new(); diff --git a/homestar-functions/src/lib.rs b/homestar-functions/src/lib.rs new file mode 100644 index 00000000..97bcb9f5 --- /dev/null +++ b/homestar-functions/src/lib.rs @@ -0,0 +1,7 @@ +mod example; + +#[cfg(feature = "example-add")] +pub use example::add::Component as AddComponent; + +#[cfg(feature = "example-test")] +pub use example::test::Component as TestComponent; diff --git a/homestar-functions/wit/add.wit b/homestar-functions/wit/add.wit new file mode 100644 index 00000000..ebc89d71 --- /dev/null +++ b/homestar-functions/wit/add.wit @@ -0,0 +1,5 @@ +package example:add + +world add { + export add-two: func(input: s32) -> s32 +} diff --git a/homestar-guest-wasm/wits/test.wit b/homestar-functions/wit/test.wit similarity index 93% rename from homestar-guest-wasm/wits/test.wit rename to homestar-functions/wit/test.wit index d12296a9..e89b03f0 100644 --- a/homestar-guest-wasm/wits/test.wit +++ b/homestar-functions/wit/test.wit @@ -1,4 +1,6 @@ -default world homestar { +package example:test + +world test { export add-one: func(a: s32) -> s32 export append-string: func(a: string) -> string export join-strings: func(a: string, b: string) -> string diff --git a/homestar-runtime/src/network/ipfs.rs b/homestar-runtime/src/network/ipfs.rs index 9f75b598..ff6aae79 100644 --- a/homestar-runtime/src/network/ipfs.rs +++ b/homestar-runtime/src/network/ipfs.rs @@ -57,7 +57,7 @@ impl IpfsCli { #[cfg(test)] pub(crate) async fn get_cid(&self, _cid: Cid) -> Result> { let path = PathBuf::from(format!( - "{}/../homestar-wasm/fixtures/homestar_guest_wasm.wasm", + "{}/../homestar-wasm/fixtures/example_test.wasm", env!("CARGO_MANIFEST_DIR") )); WasmContext::load(path).await diff --git a/homestar-runtime/src/tasks/wasm.rs b/homestar-runtime/src/tasks/wasm.rs index 657ed507..b55f3a37 100644 --- a/homestar-runtime/src/tasks/wasm.rs +++ b/homestar-runtime/src/tasks/wasm.rs @@ -50,7 +50,7 @@ mod test { #[tokio::test] async fn load_wasm_file_as_bytes() { - let wat = WasmContext::load(fixtures("add_one_component.wat")) + let wat = WasmContext::load(fixtures("example_add_component.wat")) .await .unwrap(); diff --git a/homestar-wasm/Cargo.toml b/homestar-wasm/Cargo.toml index 76290671..9f48ccf7 100644 --- a/homestar-wasm/Cargo.toml +++ b/homestar-wasm/Cargo.toml @@ -34,11 +34,13 @@ stacker = "0.1" thiserror = { workspace = true } tracing = { workspace = true } wasi-common = "10.0" -wasmparser = "0.104" -wasmtime = { version = "8.0", features = ["async", "component-model", "default"] } +wasmparser = "0.107" +#wasmtime = { version = "10.0", features = ["async", "component-model", "default"] } +wasmtime = { version = "10.0", features = ["async", "component-model", "default"] } wasmtime-component-util = "10.0" +wasmtime-wasi = { version = "10.0", features = ["tokio"] } wat = "1.0" -wit-component = "0.8" +wit-component = "0.11" [dev-dependencies] criterion = "0.5" diff --git a/homestar-wasm/fixtures/add_one_component.wasm b/homestar-wasm/fixtures/add_one_component.wasm deleted file mode 100644 index 61e0d08f..00000000 Binary files a/homestar-wasm/fixtures/add_one_component.wasm and /dev/null differ diff --git a/homestar-wasm/fixtures/example_add.wasm b/homestar-wasm/fixtures/example_add.wasm new file mode 100755 index 00000000..df2fdd00 Binary files /dev/null and b/homestar-wasm/fixtures/example_add.wasm differ diff --git a/homestar-wasm/fixtures/add_one.wat b/homestar-wasm/fixtures/example_add.wat similarity index 69% rename from homestar-wasm/fixtures/add_one.wat rename to homestar-wasm/fixtures/example_add.wat index c084b466..d0f7df3c 100644 --- a/homestar-wasm/fixtures/add_one.wat +++ b/homestar-wasm/fixtures/example_add.wat @@ -1,6 +1,6 @@ (module - (type (;0;) (func (param i32) (result i32))) - (type (;1;) (func)) + (type (;0;) (func)) + (type (;1;) (func (param i32) (result i32))) (type (;2;) (func (param i32 i32) (result i32))) (type (;3;) (func (param i32 i32 i32 i32) (result i32))) (type (;4;) (func (param i32 i32))) @@ -9,33 +9,77 @@ (type (;7;) (func (param i32 i32 i32))) (type (;8;) (func (param i32 i32 i32 i32 i32) (result i32))) (type (;9;) (func (param i32 i32 i32) (result i32))) - (func (;0;) (type 0) (param i32) (result i32) + (func (;0;) (type 0)) + (func (;1;) (type 0)) + (func (;2;) (type 1) (param i32) (result i32) + call 5 local.get 0 - i32.const 1 + i32.const 2 i32.add ) - (func (;1;) (type 1)) - (func (;2;) (type 2) (param i32 i32) (result i32) + (func (;3;) (type 2) (param i32 i32) (result i32) (local i32) local.get 0 local.get 1 - call 12 + call 15 local.set 2 local.get 2 return ) - (func (;3;) (type 3) (param i32 i32 i32 i32) (result i32) + (func (;4;) (type 3) (param i32 i32 i32 i32) (result i32) (local i32) local.get 0 local.get 1 local.get 2 local.get 3 - call 13 + call 16 local.set 4 local.get 4 return ) - (func (;4;) (type 2) (param i32 i32) (result i32) + (func (;5;) (type 0) + block ;; label = @1 + i32.const 0 + i32.load8_u offset=1048580 + br_if 0 (;@1;) + call 0 + i32.const 0 + i32.const 1 + i32.store8 offset=1048580 + end + ) + (func (;6;) (type 3) (param i32 i32 i32 i32) (result i32) + block ;; label = @1 + block ;; label = @2 + block ;; label = @3 + local.get 1 + br_if 0 (;@3;) + local.get 3 + i32.eqz + br_if 1 (;@2;) + local.get 3 + local.get 2 + call 3 + local.tee 2 + br_if 1 (;@2;) + br 2 (;@1;) + end + local.get 0 + local.get 1 + local.get 2 + local.get 3 + call 4 + local.tee 2 + i32.eqz + br_if 1 (;@1;) + end + local.get 2 + return + end + unreachable + unreachable + ) + (func (;7;) (type 2) (param i32 i32) (result i32) (local i32 i32 i32 i32 i32 i32) block ;; label = @1 block ;; label = @2 @@ -48,41 +92,41 @@ br_if 0 (;@5;) i32.const 16 i32.const 8 - call 14 + call 17 local.get 1 i32.gt_u br_if 1 (;@4;) br 2 (;@3;) end local.get 0 - call 5 + call 8 local.set 2 br 2 (;@2;) end i32.const 16 i32.const 8 - call 14 + call 17 local.set 1 end - call 33 + call 36 local.tee 3 i32.const 8 - call 14 + call 17 local.set 4 i32.const 20 i32.const 8 - call 14 + call 17 local.set 5 i32.const 16 i32.const 8 - call 14 + call 17 local.set 6 i32.const 0 local.set 2 i32.const 0 i32.const 16 i32.const 8 - call 14 + call 17 i32.const 2 i32.shl i32.sub @@ -117,28 +161,28 @@ i32.add i32.const 16 i32.const 8 - call 14 + call 17 i32.const -5 i32.add local.get 0 i32.gt_u select i32.const 8 - call 14 + call 17 local.tee 4 i32.add i32.const 16 i32.const 8 - call 14 + call 17 i32.add i32.const -4 i32.add - call 5 + call 8 local.tee 3 i32.eqz br_if 0 (;@2;) local.get 3 - call 34 + call 37 local.set 0 block ;; label = @3 block ;; label = @4 @@ -160,14 +204,14 @@ local.get 1 i32.sub i32.and - call 34 + call 37 local.set 2 i32.const 16 i32.const 8 - call 14 + call 17 local.set 3 local.get 0 - call 19 + call 22 local.get 2 i32.const 0 local.get 1 @@ -186,17 +230,17 @@ local.set 3 block ;; label = @4 local.get 0 - call 24 + call 27 br_if 0 (;@4;) local.get 1 local.get 3 - call 25 + call 28 local.get 0 local.get 2 - call 25 + call 28 local.get 0 local.get 2 - call 6 + call 9 br 1 (;@3;) end local.get 0 @@ -212,48 +256,48 @@ i32.store end local.get 1 - call 24 + call 27 br_if 1 (;@1;) local.get 1 - call 19 + call 22 local.tee 0 i32.const 16 i32.const 8 - call 14 + call 17 local.get 4 i32.add i32.le_u br_if 1 (;@1;) local.get 1 local.get 4 - call 30 + call 33 local.set 2 local.get 1 local.get 4 - call 25 + call 28 local.get 2 local.get 0 local.get 4 i32.sub local.tee 0 - call 25 + call 28 local.get 2 local.get 0 - call 6 + call 9 br 1 (;@1;) end local.get 2 return end local.get 1 - call 32 + call 35 local.set 0 local.get 1 - call 24 + call 27 drop local.get 0 ) - (func (;5;) (type 0) (param i32) (result i32) + (func (;8;) (type 1) (param i32) (result i32) (local i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i64) global.get 0 i32.const 16 @@ -263,860 +307,864 @@ block ;; label = @1 block ;; label = @2 block ;; label = @3 - local.get 0 - i32.const 245 - i32.lt_u - br_if 0 (;@3;) - call 33 - local.tee 2 - i32.const 8 - call 14 - local.set 3 - i32.const 20 - i32.const 8 - call 14 - local.set 4 - i32.const 16 - i32.const 8 - call 14 - local.set 5 - i32.const 0 - local.set 6 - i32.const 0 - i32.const 16 - i32.const 8 - call 14 - i32.const 2 - i32.shl - i32.sub - local.tee 7 - local.get 2 - local.get 5 - local.get 3 - local.get 4 - i32.add - i32.add - i32.sub - i32.const -65544 - i32.add - i32.const -9 - i32.and - i32.const -3 - i32.add - local.tee 2 - local.get 7 - local.get 2 - i32.lt_u - select - local.get 0 - i32.le_u - br_if 2 (;@1;) - local.get 0 - i32.const 4 - i32.add - i32.const 8 - call 14 - local.set 2 - i32.const 0 - i32.load offset=1048584 - i32.eqz - br_if 1 (;@2;) - i32.const 0 - local.set 8 - block ;; label = @4 - local.get 2 - i32.const 256 - i32.lt_u - br_if 0 (;@4;) - i32.const 31 - local.set 8 - local.get 2 - i32.const 16777215 - i32.gt_u - br_if 0 (;@4;) - local.get 2 - i32.const 6 - local.get 2 - i32.const 8 - i32.shr_u - i32.clz - local.tee 0 - i32.sub - i32.shr_u - i32.const 1 - i32.and - local.get 0 - i32.const 1 - i32.shl - i32.sub - i32.const 62 - i32.add - local.set 8 - end - i32.const 0 - local.get 2 - i32.sub - local.set 6 block ;; label = @4 block ;; label = @5 block ;; label = @6 - local.get 8 - i32.const 2 - i32.shl - i32.const 1048852 - i32.add - i32.load - local.tee 0 - i32.eqz - br_if 0 (;@6;) - local.get 2 - local.get 8 - call 17 - i32.shl - local.set 5 - i32.const 0 - local.set 4 - i32.const 0 - local.set 3 - loop ;; label = @7 - block ;; label = @8 - local.get 0 - call 36 - call 19 - local.tee 7 - local.get 2 - i32.lt_u - br_if 0 (;@8;) - local.get 7 - local.get 2 - i32.sub - local.tee 7 - local.get 6 - i32.ge_u - br_if 0 (;@8;) - local.get 7 - local.set 6 - local.get 0 - local.set 3 - local.get 7 - br_if 0 (;@8;) - i32.const 0 - local.set 6 - local.get 0 - local.set 3 - br 3 (;@5;) - end + block ;; label = @7 local.get 0 + i32.const 245 + i32.lt_u + br_if 0 (;@7;) + call 36 + local.tee 2 + i32.const 8 + call 17 + local.set 3 i32.const 20 - i32.add - i32.load + i32.const 8 + call 17 + local.set 4 + i32.const 16 + i32.const 8 + call 17 + local.set 5 + i32.const 0 + local.set 6 + i32.const 0 + i32.const 16 + i32.const 8 + call 17 + i32.const 2 + i32.shl + i32.sub local.tee 7 - local.get 4 - local.get 7 - local.get 0 + local.get 2 local.get 5 - i32.const 29 - i32.shr_u - i32.const 4 - i32.and + local.get 3 + local.get 4 i32.add - i32.const 16 i32.add - i32.load - local.tee 0 - i32.ne - select - local.get 4 + i32.sub + i32.const -65544 + i32.add + i32.const -9 + i32.and + i32.const -3 + i32.add + local.tee 2 local.get 7 + local.get 2 + i32.lt_u select - local.set 4 - local.get 5 - i32.const 1 - i32.shl - local.set 5 local.get 0 - br_if 0 (;@7;) - end - block ;; label = @7 - local.get 4 + i32.le_u + br_if 6 (;@1;) + local.get 0 + i32.const 4 + i32.add + i32.const 8 + call 17 + local.set 2 + i32.const 0 + i32.load offset=1048996 i32.eqz - br_if 0 (;@7;) - local.get 4 + br_if 5 (;@2;) + i32.const 0 + local.set 8 + block ;; label = @8 + local.get 2 + i32.const 256 + i32.lt_u + br_if 0 (;@8;) + i32.const 31 + local.set 8 + local.get 2 + i32.const 16777215 + i32.gt_u + br_if 0 (;@8;) + local.get 2 + i32.const 6 + local.get 2 + i32.const 8 + i32.shr_u + i32.clz + local.tee 0 + i32.sub + i32.shr_u + i32.const 1 + i32.and + local.get 0 + i32.const 1 + i32.shl + i32.sub + i32.const 62 + i32.add + local.set 8 + end + i32.const 0 + local.get 2 + i32.sub + local.set 6 + local.get 8 + i32.const 2 + i32.shl + i32.const 1048584 + i32.add + i32.load + local.tee 3 + br_if 1 (;@6;) + i32.const 0 local.set 0 + i32.const 0 + local.set 4 br 2 (;@5;) end - local.get 3 - br_if 2 (;@4;) - end + i32.const 16 + local.get 0 + i32.const 4 + i32.add + i32.const 16 + i32.const 8 + call 17 + i32.const -5 + i32.add + local.get 0 + i32.gt_u + select + i32.const 8 + call 17 + local.set 2 + block ;; label = @7 + block ;; label = @8 + block ;; label = @9 + block ;; label = @10 + block ;; label = @11 + block ;; label = @12 + block ;; label = @13 + i32.const 0 + i32.load offset=1048992 + local.tee 4 + local.get 2 + i32.const 3 + i32.shr_u + local.tee 6 + i32.shr_u + local.tee 0 + i32.const 3 + i32.and + br_if 0 (;@13;) + local.get 2 + i32.const 0 + i32.load offset=1049000 + i32.le_u + br_if 11 (;@2;) + local.get 0 + br_if 1 (;@12;) + i32.const 0 + i32.load offset=1048996 + local.tee 0 + i32.eqz + br_if 11 (;@2;) + local.get 0 + call 19 + i32.ctz + i32.const 2 + i32.shl + i32.const 1048584 + i32.add + i32.load + local.tee 3 + call 39 + call 22 + local.get 2 + i32.sub + local.set 6 + block ;; label = @14 + local.get 3 + call 38 + local.tee 0 + i32.eqz + br_if 0 (;@14;) + loop ;; label = @15 + local.get 0 + call 39 + call 22 + local.get 2 + i32.sub + local.tee 4 + local.get 6 + local.get 4 + local.get 6 + i32.lt_u + local.tee 4 + select + local.set 6 + local.get 0 + local.get 3 + local.get 4 + select + local.set 3 + local.get 0 + call 38 + local.tee 0 + br_if 0 (;@15;) + end + end + local.get 3 + call 39 + local.tee 0 + local.get 2 + call 33 + local.set 4 + local.get 3 + call 10 + local.get 6 + i32.const 16 + i32.const 8 + call 17 + i32.lt_u + br_if 5 (;@8;) + local.get 4 + call 39 + local.set 4 + local.get 0 + local.get 2 + call 30 + local.get 4 + local.get 6 + call 31 + i32.const 0 + i32.load offset=1049000 + local.tee 7 + i32.eqz + br_if 4 (;@9;) + local.get 7 + i32.const -8 + i32.and + i32.const 1048728 + i32.add + local.set 5 + i32.const 0 + i32.load offset=1049008 + local.set 3 + i32.const 0 + i32.load offset=1048992 + local.tee 8 + i32.const 1 + local.get 7 + i32.const 3 + i32.shr_u + i32.shl + local.tee 7 + i32.and + i32.eqz + br_if 2 (;@11;) + local.get 5 + i32.load offset=8 + local.set 7 + br 3 (;@10;) + end + block ;; label = @13 + block ;; label = @14 + local.get 0 + i32.const -1 + i32.xor + i32.const 1 + i32.and + local.get 6 + i32.add + local.tee 2 + i32.const 3 + i32.shl + local.tee 3 + i32.const 1048736 + i32.add + i32.load + local.tee 0 + i32.const 8 + i32.add + i32.load + local.tee 6 + local.get 3 + i32.const 1048728 + i32.add + local.tee 3 + i32.eq + br_if 0 (;@14;) + local.get 6 + local.get 3 + i32.store offset=12 + local.get 3 + local.get 6 + i32.store offset=8 + br 1 (;@13;) + end + i32.const 0 + local.get 4 + i32.const -2 + local.get 2 + i32.rotl + i32.and + i32.store offset=1048992 + end + local.get 0 + local.get 2 + i32.const 3 + i32.shl + call 29 + local.get 0 + call 35 + local.set 6 + br 11 (;@1;) + end + block ;; label = @12 + block ;; label = @13 + i32.const 1 + local.get 6 + i32.const 31 + i32.and + local.tee 6 + i32.shl + call 18 + local.get 0 + local.get 6 + i32.shl + i32.and + call 19 + i32.ctz + local.tee 6 + i32.const 3 + i32.shl + local.tee 4 + i32.const 1048736 + i32.add + i32.load + local.tee 0 + i32.const 8 + i32.add + i32.load + local.tee 3 + local.get 4 + i32.const 1048728 + i32.add + local.tee 4 + i32.eq + br_if 0 (;@13;) + local.get 3 + local.get 4 + i32.store offset=12 + local.get 4 + local.get 3 + i32.store offset=8 + br 1 (;@12;) + end + i32.const 0 + i32.const 0 + i32.load offset=1048992 + i32.const -2 + local.get 6 + i32.rotl + i32.and + i32.store offset=1048992 + end + local.get 0 + local.get 2 + call 30 + local.get 0 + local.get 2 + call 33 + local.tee 4 + local.get 6 + i32.const 3 + i32.shl + local.get 2 + i32.sub + local.tee 5 + call 31 + block ;; label = @12 + i32.const 0 + i32.load offset=1049000 + local.tee 3 + i32.eqz + br_if 0 (;@12;) + local.get 3 + i32.const -8 + i32.and + i32.const 1048728 + i32.add + local.set 6 + i32.const 0 + i32.load offset=1049008 + local.set 2 + block ;; label = @13 + block ;; label = @14 + i32.const 0 + i32.load offset=1048992 + local.tee 7 + i32.const 1 + local.get 3 + i32.const 3 + i32.shr_u + i32.shl + local.tee 3 + i32.and + i32.eqz + br_if 0 (;@14;) + local.get 6 + i32.load offset=8 + local.set 3 + br 1 (;@13;) + end + i32.const 0 + local.get 7 + local.get 3 + i32.or + i32.store offset=1048992 + local.get 6 + local.set 3 + end + local.get 6 + local.get 2 + i32.store offset=8 + local.get 3 + local.get 2 + i32.store offset=12 + local.get 2 + local.get 6 + i32.store offset=12 + local.get 2 + local.get 3 + i32.store offset=8 + end + i32.const 0 + local.get 4 + i32.store offset=1049008 + i32.const 0 + local.get 5 + i32.store offset=1049000 + local.get 0 + call 35 + local.set 6 + br 10 (;@1;) + end + i32.const 0 + local.get 8 + local.get 7 + i32.or + i32.store offset=1048992 + local.get 5 + local.set 7 + end + local.get 5 + local.get 3 + i32.store offset=8 + local.get 7 + local.get 3 + i32.store offset=12 + local.get 3 + local.get 5 + i32.store offset=12 + local.get 3 + local.get 7 + i32.store offset=8 + end + i32.const 0 + local.get 4 + i32.store offset=1049008 + i32.const 0 + local.get 6 + i32.store offset=1049000 + br 1 (;@7;) + end + local.get 0 + local.get 6 + local.get 2 + i32.add + call 29 + end + local.get 0 + call 35 + local.tee 6 + br_if 5 (;@1;) + br 4 (;@2;) + end + local.get 2 + local.get 8 + call 20 + i32.shl + local.set 5 + i32.const 0 + local.set 0 + i32.const 0 + local.set 4 + loop ;; label = @6 + block ;; label = @7 + local.get 3 + call 39 + call 22 + local.tee 7 + local.get 2 + i32.lt_u + br_if 0 (;@7;) + local.get 7 + local.get 2 + i32.sub + local.tee 7 + local.get 6 + i32.ge_u + br_if 0 (;@7;) + local.get 7 + local.set 6 + local.get 3 + local.set 4 + local.get 7 + br_if 0 (;@7;) + i32.const 0 + local.set 6 + local.get 3 + local.set 4 + local.get 3 + local.set 0 + br 3 (;@4;) + end + local.get 3 + i32.const 20 + i32.add + i32.load + local.tee 7 + local.get 0 + local.get 7 + local.get 3 + local.get 5 + i32.const 29 + i32.shr_u + i32.const 4 + i32.and + i32.add + i32.const 16 + i32.add + i32.load + local.tee 3 + i32.ne + select + local.get 0 + local.get 7 + select + local.set 0 + local.get 5 + i32.const 1 + i32.shl + local.set 5 + local.get 3 + br_if 0 (;@6;) + end + end + block ;; label = @5 + local.get 0 + local.get 4 + i32.or + br_if 0 (;@5;) i32.const 0 - local.set 3 + local.set 4 i32.const 1 local.get 8 i32.shl - call 15 + call 18 i32.const 0 - i32.load offset=1048584 + i32.load offset=1048996 i32.and local.tee 0 i32.eqz br_if 3 (;@2;) local.get 0 - call 16 + call 19 i32.ctz i32.const 2 i32.shl - i32.const 1048852 + i32.const 1048584 i32.add i32.load - local.tee 0 - i32.eqz - br_if 3 (;@2;) - end - loop ;; label = @5 - local.get 0 - local.get 3 - local.get 0 - call 36 - call 19 - local.tee 4 - local.get 2 - i32.ge_u - local.get 4 - local.get 2 - i32.sub - local.tee 4 - local.get 6 - i32.lt_u - i32.and - local.tee 5 - select - local.set 3 - local.get 4 - local.get 6 - local.get 5 - select - local.set 6 - local.get 0 - call 35 - local.tee 0 - br_if 0 (;@5;) + local.set 0 end - local.get 3 + local.get 0 i32.eqz - br_if 2 (;@2;) + br_if 1 (;@3;) end - block ;; label = @4 - i32.const 0 - i32.load offset=1048980 - local.tee 0 + loop ;; label = @4 + local.get 0 + local.get 4 + local.get 0 + call 39 + call 22 + local.tee 3 + local.get 2 + i32.ge_u + local.get 3 local.get 2 + i32.sub + local.tee 3 + local.get 6 i32.lt_u - br_if 0 (;@4;) + i32.and + local.tee 5 + select + local.set 4 + local.get 3 local.get 6 + local.get 5 + select + local.set 6 local.get 0 - local.get 2 - i32.sub - i32.ge_u - br_if 2 (;@2;) + call 38 + local.tee 0 + br_if 0 (;@4;) end - local.get 3 - call 36 + end + local.get 4 + i32.eqz + br_if 0 (;@2;) + block ;; label = @3 + i32.const 0 + i32.load offset=1049000 local.tee 0 local.get 2 - call 30 - local.set 4 - local.get 3 - call 7 + i32.lt_u + br_if 0 (;@3;) + local.get 6 + local.get 0 + local.get 2 + i32.sub + i32.ge_u + br_if 1 (;@2;) + end + local.get 4 + call 39 + local.tee 0 + local.get 2 + call 33 + local.set 3 + local.get 4 + call 10 + block ;; label = @3 block ;; label = @4 + local.get 6 + i32.const 16 + i32.const 8 + call 17 + i32.lt_u + br_if 0 (;@4;) + local.get 0 + local.get 2 + call 30 + local.get 3 + local.get 6 + call 31 block ;; label = @5 local.get 6 - i32.const 16 - i32.const 8 - call 14 + i32.const 256 i32.lt_u br_if 0 (;@5;) - local.get 0 - local.get 2 - call 27 - local.get 4 + local.get 3 local.get 6 - call 28 + call 11 + br 2 (;@3;) + end + local.get 6 + i32.const -8 + i32.and + i32.const 1048728 + i32.add + local.set 4 + block ;; label = @5 block ;; label = @6 + i32.const 0 + i32.load offset=1048992 + local.tee 5 + i32.const 1 local.get 6 - i32.const 256 - i32.lt_u - br_if 0 (;@6;) + i32.const 3 + i32.shr_u + i32.shl + local.tee 6 + i32.and + i32.eqz + br_if 0 (;@6;) local.get 4 - local.get 6 - call 8 - br 2 (;@4;) - end - local.get 6 - i32.const -8 - i32.and - i32.const 1048588 - i32.add - local.set 3 - block ;; label = @6 - block ;; label = @7 - i32.const 0 - i32.load offset=1048580 - local.tee 5 - i32.const 1 - local.get 6 - i32.const 3 - i32.shr_u - i32.shl - local.tee 6 - i32.and - i32.eqz - br_if 0 (;@7;) - local.get 3 - i32.load offset=8 - local.set 6 - br 1 (;@6;) - end - i32.const 0 - local.get 5 - local.get 6 - i32.or - i32.store offset=1048580 - local.get 3 + i32.load offset=8 local.set 6 + br 1 (;@5;) end - local.get 3 - local.get 4 - i32.store offset=8 + i32.const 0 + local.get 5 local.get 6 + i32.or + i32.store offset=1048992 local.get 4 - i32.store offset=12 - local.get 4 - local.get 3 - i32.store offset=12 - local.get 4 - local.get 6 - i32.store offset=8 - br 1 (;@4;) + local.set 6 end - local.get 0 + local.get 4 + local.get 3 + i32.store offset=8 local.get 6 - local.get 2 - i32.add - call 26 - end - local.get 0 - call 32 - local.tee 6 - i32.eqz - br_if 1 (;@2;) - br 2 (;@1;) - end - i32.const 16 - local.get 0 - i32.const 4 - i32.add - i32.const 16 - i32.const 8 - call 14 - i32.const -5 - i32.add - local.get 0 - i32.gt_u - select - i32.const 8 - call 14 - local.set 2 - block ;; label = @3 - block ;; label = @4 - block ;; label = @5 - block ;; label = @6 - block ;; label = @7 - block ;; label = @8 - block ;; label = @9 - i32.const 0 - i32.load offset=1048580 - local.tee 4 - local.get 2 - i32.const 3 - i32.shr_u - local.tee 6 - i32.shr_u - local.tee 0 - i32.const 3 - i32.and - br_if 0 (;@9;) - local.get 2 - i32.const 0 - i32.load offset=1048980 - i32.le_u - br_if 7 (;@2;) - local.get 0 - br_if 1 (;@8;) - i32.const 0 - i32.load offset=1048584 - local.tee 0 - i32.eqz - br_if 7 (;@2;) - local.get 0 - call 16 - i32.ctz - i32.const 2 - i32.shl - i32.const 1048852 - i32.add - i32.load - local.tee 3 - call 36 - call 19 - local.get 2 - i32.sub - local.set 6 - block ;; label = @10 - local.get 3 - call 35 - local.tee 0 - i32.eqz - br_if 0 (;@10;) - loop ;; label = @11 - local.get 0 - call 36 - call 19 - local.get 2 - i32.sub - local.tee 4 - local.get 6 - local.get 4 - local.get 6 - i32.lt_u - local.tee 4 - select - local.set 6 - local.get 0 - local.get 3 - local.get 4 - select - local.set 3 - local.get 0 - call 35 - local.tee 0 - br_if 0 (;@11;) - end - end - local.get 3 - call 36 - local.tee 0 - local.get 2 - call 30 - local.set 4 - local.get 3 - call 7 - local.get 6 - i32.const 16 - i32.const 8 - call 14 - i32.lt_u - br_if 5 (;@4;) - local.get 4 - call 36 - local.set 4 - local.get 0 - local.get 2 - call 27 - local.get 4 - local.get 6 - call 28 - i32.const 0 - i32.load offset=1048980 - local.tee 7 - i32.eqz - br_if 4 (;@5;) - local.get 7 - i32.const -8 - i32.and - i32.const 1048588 - i32.add - local.set 5 - i32.const 0 - i32.load offset=1048988 - local.set 3 - i32.const 0 - i32.load offset=1048580 - local.tee 8 - i32.const 1 - local.get 7 - i32.const 3 - i32.shr_u - i32.shl - local.tee 7 - i32.and - i32.eqz - br_if 2 (;@7;) - local.get 5 - i32.load offset=8 - local.set 7 - br 3 (;@6;) - end - block ;; label = @9 - block ;; label = @10 - local.get 0 - i32.const -1 - i32.xor - i32.const 1 - i32.and - local.get 6 - i32.add - local.tee 2 - i32.const 3 - i32.shl - local.tee 3 - i32.const 1048596 - i32.add - i32.load - local.tee 0 - i32.const 8 - i32.add - i32.load - local.tee 6 - local.get 3 - i32.const 1048588 - i32.add - local.tee 3 - i32.eq - br_if 0 (;@10;) - local.get 6 - local.get 3 - i32.store offset=12 - local.get 3 - local.get 6 - i32.store offset=8 - br 1 (;@9;) - end - i32.const 0 - local.get 4 - i32.const -2 - local.get 2 - i32.rotl - i32.and - i32.store offset=1048580 - end - local.get 0 - local.get 2 - i32.const 3 - i32.shl - call 26 - local.get 0 - call 32 - local.set 6 - br 7 (;@1;) - end - block ;; label = @8 - block ;; label = @9 - i32.const 1 - local.get 6 - i32.const 31 - i32.and - local.tee 6 - i32.shl - call 15 - local.get 0 - local.get 6 - i32.shl - i32.and - call 16 - i32.ctz - local.tee 6 - i32.const 3 - i32.shl - local.tee 4 - i32.const 1048596 - i32.add - i32.load - local.tee 0 - i32.const 8 - i32.add - i32.load - local.tee 3 - local.get 4 - i32.const 1048588 - i32.add - local.tee 4 - i32.eq - br_if 0 (;@9;) - local.get 3 - local.get 4 - i32.store offset=12 - local.get 4 - local.get 3 - i32.store offset=8 - br 1 (;@8;) - end - i32.const 0 - i32.const 0 - i32.load offset=1048580 - i32.const -2 - local.get 6 - i32.rotl - i32.and - i32.store offset=1048580 - end - local.get 0 - local.get 2 - call 27 - local.get 0 - local.get 2 - call 30 - local.tee 4 - local.get 6 - i32.const 3 - i32.shl - local.get 2 - i32.sub - local.tee 5 - call 28 - block ;; label = @8 - i32.const 0 - i32.load offset=1048980 - local.tee 3 - i32.eqz - br_if 0 (;@8;) - local.get 3 - i32.const -8 - i32.and - i32.const 1048588 - i32.add - local.set 6 - i32.const 0 - i32.load offset=1048988 - local.set 2 - block ;; label = @9 - block ;; label = @10 - i32.const 0 - i32.load offset=1048580 - local.tee 7 - i32.const 1 - local.get 3 - i32.const 3 - i32.shr_u - i32.shl - local.tee 3 - i32.and - i32.eqz - br_if 0 (;@10;) - local.get 6 - i32.load offset=8 - local.set 3 - br 1 (;@9;) - end - i32.const 0 - local.get 7 - local.get 3 - i32.or - i32.store offset=1048580 - local.get 6 - local.set 3 - end - local.get 6 - local.get 2 - i32.store offset=8 - local.get 3 - local.get 2 - i32.store offset=12 - local.get 2 - local.get 6 - i32.store offset=12 - local.get 2 - local.get 3 - i32.store offset=8 - end - i32.const 0 - local.get 4 - i32.store offset=1048988 - i32.const 0 - local.get 5 - i32.store offset=1048980 - local.get 0 - call 32 - local.set 6 - br 6 (;@1;) - end - i32.const 0 - local.get 8 - local.get 7 - i32.or - i32.store offset=1048580 - local.get 5 - local.set 7 - end - local.get 5 - local.get 3 - i32.store offset=8 - local.get 7 - local.get 3 - i32.store offset=12 - local.get 3 - local.get 5 - i32.store offset=12 - local.get 3 - local.get 7 - i32.store offset=8 - end - i32.const 0 + local.get 3 + i32.store offset=12 + local.get 3 local.get 4 - i32.store offset=1048988 - i32.const 0 + i32.store offset=12 + local.get 3 local.get 6 - i32.store offset=1048980 + i32.store offset=8 br 1 (;@3;) end local.get 0 local.get 6 local.get 2 i32.add - call 26 + call 29 end local.get 0 - call 32 + call 35 local.tee 6 br_if 1 (;@1;) - end - block ;; label = @2 - block ;; label = @3 - block ;; label = @4 - block ;; label = @5 - block ;; label = @6 - block ;; label = @7 - block ;; label = @8 - block ;; label = @9 - block ;; label = @10 - i32.const 0 - i32.load offset=1048980 - local.tee 6 - local.get 2 - i32.ge_u - br_if 0 (;@10;) - i32.const 0 - i32.load offset=1048984 - local.tee 0 - local.get 2 - i32.gt_u - br_if 2 (;@8;) - local.get 1 - i32.const 1048580 - local.get 2 - call 33 - local.tee 0 - i32.sub - local.get 0 - i32.const 8 - call 14 - i32.add - i32.const 20 - i32.const 8 - call 14 - i32.add - i32.const 16 - i32.const 8 - call 14 - i32.add - i32.const 8 - i32.add - i32.const 65536 - call 14 - call 43 - local.get 1 - i32.load - local.tee 6 - br_if 1 (;@9;) - i32.const 0 - local.set 6 - br 9 (;@1;) - end - i32.const 0 - i32.load offset=1048988 - local.set 0 - block ;; label = @10 - local.get 6 - local.get 2 - i32.sub - local.tee 6 - i32.const 16 - i32.const 8 - call 14 - i32.ge_u - br_if 0 (;@10;) - i32.const 0 - i32.const 0 - i32.store offset=1048988 - i32.const 0 - i32.load offset=1048980 - local.set 2 - i32.const 0 - i32.const 0 - i32.store offset=1048980 - local.get 0 - local.get 2 - call 26 - local.get 0 - call 32 - local.set 6 - br 9 (;@1;) - end - local.get 0 + end + block ;; label = @2 + block ;; label = @3 + block ;; label = @4 + block ;; label = @5 + block ;; label = @6 + block ;; label = @7 + block ;; label = @8 + block ;; label = @9 + i32.const 0 + i32.load offset=1049000 + local.tee 6 local.get 2 - call 30 - local.set 3 + i32.ge_u + br_if 0 (;@9;) i32.const 0 - local.get 6 - i32.store offset=1048980 + i32.load offset=1049004 + local.tee 0 + local.get 2 + i32.gt_u + br_if 2 (;@7;) + local.get 1 + i32.const 1048584 + local.get 2 + call 36 + local.tee 0 + i32.sub + local.get 0 + i32.const 8 + call 17 + i32.add + i32.const 20 + i32.const 8 + call 17 + i32.add + i32.const 16 + i32.const 8 + call 17 + i32.add + i32.const 8 + i32.add + i32.const 65536 + call 17 + call 46 + local.get 1 + i32.load + local.tee 6 + br_if 1 (;@8;) i32.const 0 - local.get 3 - i32.store offset=1048988 - local.get 3 + local.set 6 + br 8 (;@1;) + end + i32.const 0 + i32.load offset=1049008 + local.set 0 + block ;; label = @9 local.get 6 - call 28 + local.get 2 + i32.sub + local.tee 6 + i32.const 16 + i32.const 8 + call 17 + i32.ge_u + br_if 0 (;@9;) + i32.const 0 + i32.const 0 + i32.store offset=1049008 + i32.const 0 + i32.load offset=1049000 + local.set 2 + i32.const 0 + i32.const 0 + i32.store offset=1049000 local.get 0 local.get 2 - call 27 + call 29 local.get 0 - call 32 + call 35 local.set 6 br 8 (;@1;) end - local.get 1 - i32.load offset=8 - local.set 8 - i32.const 0 - i32.const 0 - i32.load offset=1048996 - local.get 1 - i32.load offset=4 - local.tee 5 - i32.add - local.tee 0 - i32.store offset=1048996 + local.get 0 + local.get 2 + call 33 + local.set 3 i32.const 0 + local.get 6 + i32.store offset=1049000 i32.const 0 - i32.load offset=1049000 - local.tee 3 - local.get 0 local.get 3 + i32.store offset=1049008 + local.get 3 + local.get 6 + call 31 local.get 0 - i32.gt_u - select - i32.store offset=1049000 + local.get 2 + call 30 + local.get 0 + call 35 + local.set 6 + br 7 (;@1;) + end + local.get 1 + i32.load offset=8 + local.set 8 + i32.const 0 + i32.const 0 + i32.load offset=1049016 + local.get 1 + i32.load offset=4 + local.tee 5 + i32.add + local.tee 0 + i32.store offset=1049016 + i32.const 0 + i32.const 0 + i32.load offset=1049020 + local.tee 3 + local.get 0 + local.get 3 + local.get 0 + i32.gt_u + select + i32.store offset=1049020 + block ;; label = @8 block ;; label = @9 block ;; label = @10 block ;; label = @11 i32.const 0 - i32.load offset=1048992 + i32.load offset=1049012 i32.eqz br_if 0 (;@11;) - i32.const 1049004 + i32.const 1048712 local.set 0 loop ;; label = @12 local.get 6 local.get 0 - call 42 + call 45 i32.eq br_if 2 (;@10;) local.get 0 @@ -1127,45 +1175,45 @@ end end i32.const 0 - i32.load offset=1049024 + i32.load offset=1049028 local.tee 0 i32.eqz - br_if 3 (;@7;) + br_if 5 (;@5;) local.get 6 local.get 0 i32.lt_u - br_if 3 (;@7;) + br_if 5 (;@5;) br 7 (;@3;) end local.get 0 - call 39 + call 42 br_if 0 (;@9;) local.get 0 - call 40 + call 43 local.get 8 i32.ne br_if 0 (;@9;) local.get 0 i32.const 0 - i32.load offset=1048992 - call 41 - br_if 3 (;@6;) + i32.load offset=1049012 + call 44 + br_if 1 (;@8;) end i32.const 0 i32.const 0 - i32.load offset=1049024 + i32.load offset=1049028 local.tee 0 local.get 6 local.get 6 local.get 0 i32.gt_u select - i32.store offset=1049024 + i32.store offset=1049028 local.get 6 local.get 5 i32.add local.set 3 - i32.const 1049004 + i32.const 1048712 local.set 0 block ;; label = @9 block ;; label = @10 @@ -1184,18 +1232,18 @@ end end local.get 0 - call 39 + call 42 br_if 0 (;@10;) local.get 0 - call 40 + call 43 local.get 8 i32.eq br_if 1 (;@9;) end i32.const 0 - i32.load offset=1048992 + i32.load offset=1049012 local.set 3 - i32.const 1049004 + i32.const 1048712 local.set 0 block ;; label = @10 loop ;; label = @11 @@ -1206,7 +1254,7 @@ i32.gt_u br_if 0 (;@12;) local.get 0 - call 42 + call 45 local.get 3 i32.gt_u br_if 2 (;@10;) @@ -1220,11 +1268,11 @@ local.set 0 end local.get 0 - call 42 + call 45 local.tee 4 i32.const 20 i32.const 8 - call 14 + call 17 local.tee 9 i32.sub i32.const -23 @@ -1233,10 +1281,10 @@ local.get 3 local.get 0 local.get 0 - call 32 + call 35 local.tee 7 i32.const 8 - call 14 + call 17 local.get 7 i32.sub i32.add @@ -1245,43 +1293,43 @@ local.get 3 i32.const 16 i32.const 8 - call 14 + call 17 i32.add i32.lt_u select local.tee 7 - call 32 + call 35 local.set 10 local.get 7 local.get 9 - call 30 - local.set 0 call 33 + local.set 0 + call 36 local.tee 11 i32.const 8 - call 14 + call 17 local.set 12 i32.const 20 i32.const 8 - call 14 + call 17 local.set 13 i32.const 16 i32.const 8 - call 14 + call 17 local.set 14 i32.const 0 local.get 6 local.get 6 - call 32 + call 35 local.tee 15 i32.const 8 - call 14 + call 17 local.get 15 i32.sub local.tee 16 - call 30 + call 33 local.tee 15 - i32.store offset=1048992 + i32.store offset=1049012 i32.const 0 local.get 11 local.get 5 @@ -1295,28 +1343,28 @@ i32.add i32.sub local.tee 11 - i32.store offset=1048984 + i32.store offset=1049004 local.get 15 local.get 11 i32.const 1 i32.or i32.store offset=4 - call 33 + call 36 local.tee 12 i32.const 8 - call 14 + call 17 local.set 13 i32.const 20 i32.const 8 - call 14 + call 17 local.set 14 i32.const 16 i32.const 8 - call 14 + call 17 local.set 16 local.get 15 local.get 11 - call 30 + call 33 local.get 16 local.get 14 local.get 13 @@ -1327,41 +1375,41 @@ i32.store offset=4 i32.const 0 i32.const 2097152 - i32.store offset=1049020 + i32.store offset=1049024 local.get 7 local.get 9 - call 27 + call 30 i32.const 0 - i64.load offset=1049004 align=4 + i64.load offset=1048712 align=4 local.set 17 local.get 10 i32.const 8 i32.add i32.const 0 - i64.load offset=1049012 align=4 + i64.load offset=1048720 align=4 i64.store align=4 local.get 10 local.get 17 i64.store align=4 i32.const 0 local.get 8 - i32.store offset=1049016 + i32.store offset=1048724 i32.const 0 local.get 5 - i32.store offset=1049008 + i32.store offset=1048716 i32.const 0 local.get 6 - i32.store offset=1049004 + i32.store offset=1048712 i32.const 0 local.get 10 - i32.store offset=1049012 + i32.store offset=1048720 loop ;; label = @10 local.get 0 i32.const 4 - call 30 + call 33 local.set 6 local.get 0 - call 18 + call 21 i32.store offset=4 local.get 6 local.set 0 @@ -1384,8 +1432,8 @@ local.get 0 local.get 3 local.get 0 - call 30 - call 29 + call 33 + call 32 block ;; label = @10 local.get 0 i32.const 256 @@ -1393,19 +1441,19 @@ br_if 0 (;@10;) local.get 3 local.get 0 - call 8 + call 11 br 8 (;@2;) end local.get 0 i32.const -8 i32.and - i32.const 1048588 + i32.const 1048728 i32.add local.set 6 block ;; label = @10 block ;; label = @11 i32.const 0 - i32.load offset=1048580 + i32.load offset=1048992 local.tee 4 i32.const 1 local.get 0 @@ -1425,7 +1473,7 @@ local.get 4 local.get 0 i32.or - i32.store offset=1048580 + i32.store offset=1048992 local.get 6 local.set 0 end @@ -1456,16 +1504,16 @@ i32.add i32.store offset=4 local.get 6 - call 32 + call 35 local.tee 0 i32.const 8 - call 14 + call 17 local.set 3 local.get 4 - call 32 + call 35 local.tee 5 i32.const 8 - call 14 + call 17 local.set 7 local.get 6 local.get 3 @@ -1474,11 +1522,11 @@ i32.add local.tee 6 local.get 2 - call 30 + call 33 local.set 3 local.get 6 local.get 2 - call 27 + call 30 local.get 4 local.get 7 local.get 5 @@ -1493,27 +1541,27 @@ block ;; label = @9 local.get 0 i32.const 0 - i32.load offset=1048992 + i32.load offset=1049012 i32.eq br_if 0 (;@9;) local.get 0 i32.const 0 - i32.load offset=1048988 + i32.load offset=1049008 i32.eq - br_if 4 (;@5;) + br_if 3 (;@6;) local.get 0 - call 23 + call 26 br_if 5 (;@4;) block ;; label = @10 block ;; label = @11 local.get 0 - call 19 + call 22 local.tee 4 i32.const 256 i32.lt_u br_if 0 (;@11;) local.get 0 - call 7 + call 10 br 1 (;@10;) end block ;; label = @11 @@ -1539,14 +1587,14 @@ end i32.const 0 i32.const 0 - i32.load offset=1048580 + i32.load offset=1048992 i32.const -2 local.get 4 i32.const 3 i32.shr_u i32.rotl i32.and - i32.store offset=1048580 + i32.store offset=1048992 end local.get 4 local.get 2 @@ -1554,99 +1602,99 @@ local.set 2 local.get 0 local.get 4 - call 30 + call 33 local.set 0 br 5 (;@4;) end i32.const 0 local.get 3 - i32.store offset=1048992 + i32.store offset=1049012 i32.const 0 i32.const 0 - i32.load offset=1048984 + i32.load offset=1049004 local.get 2 i32.add local.tee 0 - i32.store offset=1048984 + i32.store offset=1049004 local.get 3 local.get 0 i32.const 1 i32.or i32.store offset=4 local.get 6 - call 32 + call 35 local.set 6 br 7 (;@1;) end - i32.const 0 local.get 0 - local.get 2 - i32.sub - local.tee 6 - i32.store offset=1048984 + local.get 0 + i32.load offset=4 + local.get 5 + i32.add + i32.store offset=4 i32.const 0 + i32.load offset=1049012 i32.const 0 - i32.load offset=1048992 - local.tee 0 - local.get 2 - call 30 - local.tee 3 - i32.store offset=1048992 - local.get 3 - local.get 6 - i32.const 1 - i32.or - i32.store offset=4 - local.get 0 - local.get 2 - call 27 - local.get 0 - call 32 - local.set 6 - br 6 (;@1;) + i32.load offset=1049004 + local.get 5 + i32.add + call 14 + br 5 (;@2;) end i32.const 0 + local.get 0 + local.get 2 + i32.sub + local.tee 6 + i32.store offset=1049004 + i32.const 0 + i32.const 0 + i32.load offset=1049012 + local.tee 0 + local.get 2 + call 33 + local.tee 3 + i32.store offset=1049012 + local.get 3 local.get 6 - i32.store offset=1049024 - br 3 (;@3;) + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + local.get 2 + call 30 + local.get 0 + call 35 + local.set 6 + br 5 (;@1;) end - local.get 0 - local.get 0 - i32.load offset=4 - local.get 5 - i32.add - i32.store offset=4 i32.const 0 - i32.load offset=1048992 + local.get 3 + i32.store offset=1049008 i32.const 0 - i32.load offset=1048984 - local.get 5 + i32.const 0 + i32.load offset=1049000 + local.get 2 i32.add - call 11 - br 3 (;@2;) + local.tee 0 + i32.store offset=1049000 + local.get 3 + local.get 0 + call 31 + local.get 6 + call 35 + local.set 6 + br 4 (;@1;) end i32.const 0 - local.get 3 - i32.store offset=1048988 - i32.const 0 - i32.const 0 - i32.load offset=1048980 - local.get 2 - i32.add - local.tee 0 - i32.store offset=1048980 - local.get 3 - local.get 0 - call 28 local.get 6 - call 32 - local.set 6 - br 3 (;@1;) + i32.store offset=1049028 + br 1 (;@3;) end local.get 3 local.get 2 local.get 0 - call 29 + call 32 block ;; label = @4 local.get 2 i32.const 256 @@ -1654,22 +1702,22 @@ br_if 0 (;@4;) local.get 3 local.get 2 - call 8 + call 11 local.get 6 - call 32 + call 35 local.set 6 br 3 (;@1;) end local.get 2 i32.const -8 i32.and - i32.const 1048588 + i32.const 1048728 i32.add local.set 0 block ;; label = @4 block ;; label = @5 i32.const 0 - i32.load offset=1048580 + i32.load offset=1048992 local.tee 4 i32.const 1 local.get 2 @@ -1689,7 +1737,7 @@ local.get 4 local.get 2 i32.or - i32.store offset=1048580 + i32.store offset=1048992 local.get 0 local.set 2 end @@ -1706,240 +1754,240 @@ local.get 2 i32.store offset=8 local.get 6 - call 32 + call 35 local.set 6 br 2 (;@1;) end i32.const 0 i32.const 4095 - i32.store offset=1049028 + i32.store offset=1049032 i32.const 0 local.get 8 - i32.store offset=1049016 + i32.store offset=1048724 i32.const 0 local.get 5 - i32.store offset=1049008 + i32.store offset=1048716 i32.const 0 local.get 6 - i32.store offset=1049004 + i32.store offset=1048712 i32.const 0 - i32.const 1048588 - i32.store offset=1048600 + i32.const 1048728 + i32.store offset=1048740 i32.const 0 - i32.const 1048596 - i32.store offset=1048608 + i32.const 1048736 + i32.store offset=1048748 i32.const 0 - i32.const 1048588 - i32.store offset=1048596 + i32.const 1048728 + i32.store offset=1048736 i32.const 0 - i32.const 1048604 - i32.store offset=1048616 + i32.const 1048744 + i32.store offset=1048756 i32.const 0 - i32.const 1048596 - i32.store offset=1048604 + i32.const 1048736 + i32.store offset=1048744 i32.const 0 - i32.const 1048612 - i32.store offset=1048624 + i32.const 1048752 + i32.store offset=1048764 i32.const 0 - i32.const 1048604 - i32.store offset=1048612 + i32.const 1048744 + i32.store offset=1048752 i32.const 0 - i32.const 1048620 - i32.store offset=1048632 + i32.const 1048760 + i32.store offset=1048772 i32.const 0 - i32.const 1048612 - i32.store offset=1048620 + i32.const 1048752 + i32.store offset=1048760 i32.const 0 - i32.const 1048628 - i32.store offset=1048640 + i32.const 1048768 + i32.store offset=1048780 i32.const 0 - i32.const 1048620 - i32.store offset=1048628 + i32.const 1048760 + i32.store offset=1048768 i32.const 0 - i32.const 1048636 - i32.store offset=1048648 + i32.const 1048776 + i32.store offset=1048788 i32.const 0 - i32.const 1048628 - i32.store offset=1048636 + i32.const 1048768 + i32.store offset=1048776 i32.const 0 - i32.const 1048644 - i32.store offset=1048656 + i32.const 1048784 + i32.store offset=1048796 i32.const 0 - i32.const 1048636 - i32.store offset=1048644 + i32.const 1048776 + i32.store offset=1048784 i32.const 0 - i32.const 1048652 - i32.store offset=1048664 + i32.const 1048792 + i32.store offset=1048804 i32.const 0 - i32.const 1048644 - i32.store offset=1048652 + i32.const 1048784 + i32.store offset=1048792 i32.const 0 - i32.const 1048652 - i32.store offset=1048660 + i32.const 1048792 + i32.store offset=1048800 i32.const 0 - i32.const 1048660 - i32.store offset=1048672 + i32.const 1048800 + i32.store offset=1048812 i32.const 0 - i32.const 1048660 - i32.store offset=1048668 + i32.const 1048800 + i32.store offset=1048808 i32.const 0 - i32.const 1048668 - i32.store offset=1048680 + i32.const 1048808 + i32.store offset=1048820 i32.const 0 - i32.const 1048668 - i32.store offset=1048676 + i32.const 1048808 + i32.store offset=1048816 i32.const 0 - i32.const 1048676 - i32.store offset=1048688 + i32.const 1048816 + i32.store offset=1048828 i32.const 0 - i32.const 1048676 - i32.store offset=1048684 + i32.const 1048816 + i32.store offset=1048824 i32.const 0 - i32.const 1048684 - i32.store offset=1048696 + i32.const 1048824 + i32.store offset=1048836 i32.const 0 - i32.const 1048684 - i32.store offset=1048692 + i32.const 1048824 + i32.store offset=1048832 i32.const 0 - i32.const 1048692 - i32.store offset=1048704 + i32.const 1048832 + i32.store offset=1048844 i32.const 0 - i32.const 1048692 - i32.store offset=1048700 + i32.const 1048832 + i32.store offset=1048840 i32.const 0 - i32.const 1048700 - i32.store offset=1048712 + i32.const 1048840 + i32.store offset=1048852 i32.const 0 - i32.const 1048700 - i32.store offset=1048708 + i32.const 1048840 + i32.store offset=1048848 i32.const 0 - i32.const 1048708 - i32.store offset=1048720 + i32.const 1048848 + i32.store offset=1048860 i32.const 0 - i32.const 1048708 - i32.store offset=1048716 + i32.const 1048848 + i32.store offset=1048856 i32.const 0 - i32.const 1048716 - i32.store offset=1048728 + i32.const 1048856 + i32.store offset=1048868 i32.const 0 - i32.const 1048724 - i32.store offset=1048736 + i32.const 1048864 + i32.store offset=1048876 i32.const 0 - i32.const 1048716 - i32.store offset=1048724 + i32.const 1048856 + i32.store offset=1048864 i32.const 0 - i32.const 1048732 - i32.store offset=1048744 + i32.const 1048872 + i32.store offset=1048884 i32.const 0 - i32.const 1048724 - i32.store offset=1048732 + i32.const 1048864 + i32.store offset=1048872 i32.const 0 - i32.const 1048740 - i32.store offset=1048752 + i32.const 1048880 + i32.store offset=1048892 i32.const 0 - i32.const 1048732 - i32.store offset=1048740 + i32.const 1048872 + i32.store offset=1048880 i32.const 0 - i32.const 1048748 - i32.store offset=1048760 + i32.const 1048888 + i32.store offset=1048900 i32.const 0 - i32.const 1048740 - i32.store offset=1048748 + i32.const 1048880 + i32.store offset=1048888 i32.const 0 - i32.const 1048756 - i32.store offset=1048768 + i32.const 1048896 + i32.store offset=1048908 i32.const 0 - i32.const 1048748 - i32.store offset=1048756 + i32.const 1048888 + i32.store offset=1048896 i32.const 0 - i32.const 1048764 - i32.store offset=1048776 + i32.const 1048904 + i32.store offset=1048916 i32.const 0 - i32.const 1048756 - i32.store offset=1048764 + i32.const 1048896 + i32.store offset=1048904 i32.const 0 - i32.const 1048772 - i32.store offset=1048784 + i32.const 1048912 + i32.store offset=1048924 i32.const 0 - i32.const 1048764 - i32.store offset=1048772 + i32.const 1048904 + i32.store offset=1048912 i32.const 0 - i32.const 1048780 - i32.store offset=1048792 + i32.const 1048920 + i32.store offset=1048932 i32.const 0 - i32.const 1048772 - i32.store offset=1048780 + i32.const 1048912 + i32.store offset=1048920 i32.const 0 - i32.const 1048788 - i32.store offset=1048800 + i32.const 1048928 + i32.store offset=1048940 i32.const 0 - i32.const 1048780 - i32.store offset=1048788 + i32.const 1048920 + i32.store offset=1048928 i32.const 0 - i32.const 1048796 - i32.store offset=1048808 + i32.const 1048936 + i32.store offset=1048948 i32.const 0 - i32.const 1048788 - i32.store offset=1048796 + i32.const 1048928 + i32.store offset=1048936 i32.const 0 - i32.const 1048804 - i32.store offset=1048816 + i32.const 1048944 + i32.store offset=1048956 i32.const 0 - i32.const 1048796 - i32.store offset=1048804 + i32.const 1048936 + i32.store offset=1048944 i32.const 0 - i32.const 1048812 - i32.store offset=1048824 + i32.const 1048952 + i32.store offset=1048964 i32.const 0 - i32.const 1048804 - i32.store offset=1048812 + i32.const 1048944 + i32.store offset=1048952 i32.const 0 - i32.const 1048820 - i32.store offset=1048832 + i32.const 1048960 + i32.store offset=1048972 i32.const 0 - i32.const 1048812 - i32.store offset=1048820 + i32.const 1048952 + i32.store offset=1048960 i32.const 0 - i32.const 1048828 - i32.store offset=1048840 + i32.const 1048968 + i32.store offset=1048980 i32.const 0 - i32.const 1048820 - i32.store offset=1048828 + i32.const 1048960 + i32.store offset=1048968 i32.const 0 - i32.const 1048836 - i32.store offset=1048848 + i32.const 1048976 + i32.store offset=1048988 i32.const 0 - i32.const 1048828 - i32.store offset=1048836 + i32.const 1048968 + i32.store offset=1048976 i32.const 0 - i32.const 1048836 - i32.store offset=1048844 - call 33 + i32.const 1048976 + i32.store offset=1048984 + call 36 local.tee 3 i32.const 8 - call 14 + call 17 local.set 4 i32.const 20 i32.const 8 - call 14 + call 17 local.set 7 i32.const 16 i32.const 8 - call 14 + call 17 local.set 8 i32.const 0 local.get 6 local.get 6 - call 32 + call 35 local.tee 0 i32.const 8 - call 14 + call 17 local.get 0 i32.sub local.tee 10 - call 30 + call 33 local.tee 0 - i32.store offset=1048992 + i32.store offset=1049012 i32.const 0 local.get 3 local.get 5 @@ -1953,28 +2001,28 @@ i32.add i32.sub local.tee 6 - i32.store offset=1048984 + i32.store offset=1049004 local.get 0 local.get 6 i32.const 1 i32.or i32.store offset=4 - call 33 + call 36 local.tee 3 i32.const 8 - call 14 + call 17 local.set 4 i32.const 20 i32.const 8 - call 14 + call 17 local.set 5 i32.const 16 i32.const 8 - call 14 + call 17 local.set 7 local.get 0 local.get 6 - call 30 + call 33 local.get 7 local.get 5 local.get 4 @@ -1985,12 +2033,12 @@ i32.store offset=4 i32.const 0 i32.const 2097152 - i32.store offset=1049020 + i32.store offset=1049024 end i32.const 0 local.set 6 i32.const 0 - i32.load offset=1048984 + i32.load offset=1049004 local.tee 0 local.get 2 i32.le_u @@ -2000,15 +2048,15 @@ local.get 2 i32.sub local.tee 6 - i32.store offset=1048984 + i32.store offset=1049004 i32.const 0 i32.const 0 - i32.load offset=1048992 + i32.load offset=1049012 local.tee 0 local.get 2 - call 30 + call 33 local.tee 3 - i32.store offset=1048992 + i32.store offset=1049012 local.get 3 local.get 6 i32.const 1 @@ -2016,9 +2064,9 @@ i32.store offset=4 local.get 0 local.get 2 - call 27 + call 30 local.get 0 - call 32 + call 35 local.set 6 end local.get 1 @@ -2027,17 +2075,17 @@ global.set 0 local.get 6 ) - (func (;6;) (type 4) (param i32 i32) + (func (;9;) (type 4) (param i32 i32) (local i32 i32 i32 i32) local.get 0 local.get 1 - call 30 + call 33 local.set 2 block ;; label = @1 block ;; label = @2 block ;; label = @3 local.get 0 - call 21 + call 24 br_if 0 (;@3;) local.get 0 i32.load @@ -2045,7 +2093,7 @@ block ;; label = @4 block ;; label = @5 local.get 0 - call 24 + call 27 br_if 0 (;@5;) local.get 3 local.get 1 @@ -2053,10 +2101,10 @@ local.set 1 local.get 0 local.get 3 - call 31 + call 34 local.tee 0 i32.const 0 - i32.load offset=1048988 + i32.load offset=1049008 i32.ne br_if 1 (;@4;) local.get 2 @@ -2068,14 +2116,14 @@ br_if 2 (;@3;) i32.const 0 local.get 1 - i32.store offset=1048980 + i32.store offset=1049000 local.get 0 local.get 1 local.get 2 - call 29 + call 32 return end - i32.const 1048580 + i32.const 1048584 local.get 0 local.get 3 i32.sub @@ -2085,15 +2133,15 @@ i32.const 16 i32.add local.tee 0 - call 46 + call 49 i32.eqz br_if 2 (;@2;) i32.const 0 i32.const 0 - i32.load offset=1048996 + i32.load offset=1049016 local.get 0 i32.sub - i32.store offset=1048996 + i32.store offset=1049016 return end block ;; label = @4 @@ -2102,7 +2150,7 @@ i32.lt_u br_if 0 (;@4;) local.get 0 - call 7 + call 10 br 1 (;@3;) end block ;; label = @4 @@ -2128,63 +2176,63 @@ end i32.const 0 i32.const 0 - i32.load offset=1048580 + i32.load offset=1048992 i32.const -2 local.get 3 i32.const 3 i32.shr_u i32.rotl i32.and - i32.store offset=1048580 + i32.store offset=1048992 end block ;; label = @3 local.get 2 - call 20 + call 23 i32.eqz br_if 0 (;@3;) local.get 0 local.get 1 local.get 2 - call 29 + call 32 br 2 (;@1;) end block ;; label = @3 block ;; label = @4 local.get 2 i32.const 0 - i32.load offset=1048992 + i32.load offset=1049012 i32.eq br_if 0 (;@4;) local.get 2 i32.const 0 - i32.load offset=1048988 + i32.load offset=1049008 i32.ne br_if 1 (;@3;) i32.const 0 local.get 0 - i32.store offset=1048988 + i32.store offset=1049008 i32.const 0 i32.const 0 - i32.load offset=1048980 + i32.load offset=1049000 local.get 1 i32.add local.tee 1 - i32.store offset=1048980 + i32.store offset=1049000 local.get 0 local.get 1 - call 28 + call 31 return end i32.const 0 local.get 0 - i32.store offset=1048992 + i32.store offset=1049012 i32.const 0 i32.const 0 - i32.load offset=1048984 + i32.load offset=1049004 local.get 1 i32.add local.tee 1 - i32.store offset=1048984 + i32.store offset=1049004 local.get 0 local.get 1 i32.const 1 @@ -2192,19 +2240,19 @@ i32.store offset=4 local.get 0 i32.const 0 - i32.load offset=1048988 + i32.load offset=1049008 i32.ne br_if 1 (;@2;) i32.const 0 i32.const 0 - i32.store offset=1048980 + i32.store offset=1049000 i32.const 0 i32.const 0 - i32.store offset=1048988 + i32.store offset=1049008 return end local.get 2 - call 19 + call 22 local.tee 3 local.get 1 i32.add @@ -2216,7 +2264,7 @@ i32.lt_u br_if 0 (;@4;) local.get 2 - call 7 + call 10 br 1 (;@3;) end block ;; label = @4 @@ -2242,26 +2290,26 @@ end i32.const 0 i32.const 0 - i32.load offset=1048580 + i32.load offset=1048992 i32.const -2 local.get 3 i32.const 3 i32.shr_u i32.rotl i32.and - i32.store offset=1048580 + i32.store offset=1048992 end local.get 0 local.get 1 - call 28 + call 31 local.get 0 i32.const 0 - i32.load offset=1048988 + i32.load offset=1049008 i32.ne br_if 1 (;@1;) i32.const 0 local.get 1 - i32.store offset=1048980 + i32.store offset=1049000 end return end @@ -2272,19 +2320,19 @@ br_if 0 (;@1;) local.get 0 local.get 1 - call 8 + call 11 return end local.get 1 i32.const -8 i32.and - i32.const 1048588 + i32.const 1048728 i32.add local.set 2 block ;; label = @1 block ;; label = @2 i32.const 0 - i32.load offset=1048580 + i32.load offset=1048992 local.tee 3 i32.const 1 local.get 1 @@ -2304,7 +2352,7 @@ local.get 3 local.get 1 i32.or - i32.store offset=1048580 + i32.store offset=1048992 local.get 2 local.set 1 end @@ -2321,7 +2369,7 @@ local.get 1 i32.store offset=8 ) - (func (;7;) (type 5) (param i32) + (func (;10;) (type 5) (param i32) (local i32 i32 i32 i32 i32) local.get 0 i32.load offset=24 @@ -2330,7 +2378,7 @@ block ;; label = @2 block ;; label = @3 local.get 0 - call 37 + call 40 local.get 0 i32.ne br_if 0 (;@3;) @@ -2349,20 +2397,20 @@ local.tee 4 br_if 1 (;@2;) i32.const 0 - local.set 3 + local.set 2 br 2 (;@1;) end local.get 0 - call 38 + call 41 local.tee 4 local.get 0 - call 37 - local.tee 3 - call 36 + call 40 + local.tee 2 + call 39 i32.store offset=12 - local.get 3 + local.get 2 local.get 4 - call 36 + call 39 i32.store offset=8 br 1 (;@1;) end @@ -2372,28 +2420,31 @@ i32.add local.get 3 select - local.set 2 + local.set 3 loop ;; label = @2 - local.get 2 + local.get 3 local.set 5 - block ;; label = @3 - local.get 4 - local.tee 3 - i32.const 20 - i32.add - local.tee 2 - i32.load - local.tee 4 - br_if 0 (;@3;) - local.get 3 - i32.const 16 - i32.add - local.set 2 - local.get 3 - i32.load offset=16 - local.set 4 - end local.get 4 + local.tee 2 + i32.const 20 + i32.add + local.tee 4 + local.get 2 + i32.const 16 + i32.add + local.get 4 + i32.load + local.tee 4 + select + local.set 3 + local.get 2 + i32.const 20 + i32.const 16 + local.get 4 + select + i32.add + i32.load + local.tee 4 br_if 0 (;@2;) end local.get 5 @@ -2410,7 +2461,7 @@ i32.load offset=28 i32.const 2 i32.shl - i32.const 1048852 + i32.const 1048584 i32.add local.tee 4 i32.load @@ -2426,29 +2477,30 @@ i32.eq select i32.add - local.get 3 + local.get 2 i32.store - local.get 3 - br_if 1 (;@2;) - br 2 (;@1;) + local.get 2 + i32.eqz + br_if 2 (;@1;) + br 1 (;@2;) end local.get 4 - local.get 3 + local.get 2 i32.store - local.get 3 + local.get 2 br_if 0 (;@2;) i32.const 0 i32.const 0 - i32.load offset=1048584 + i32.load offset=1048996 i32.const -2 local.get 0 i32.load offset=28 i32.rotl i32.and - i32.store offset=1048584 + i32.store offset=1048996 return end - local.get 3 + local.get 2 local.get 1 i32.store offset=24 block ;; label = @2 @@ -2457,11 +2509,11 @@ local.tee 4 i32.eqz br_if 0 (;@2;) - local.get 3 + local.get 2 local.get 4 i32.store offset=16 local.get 4 - local.get 3 + local.get 2 i32.store offset=24 end local.get 0 @@ -2471,18 +2523,18 @@ local.tee 4 i32.eqz br_if 0 (;@1;) - local.get 3 + local.get 2 i32.const 20 i32.add local.get 4 i32.store local.get 4 - local.get 3 + local.get 2 i32.store offset=24 return end ) - (func (;8;) (type 4) (param i32 i32) + (func (;11;) (type 4) (param i32 i32) (local i32 i32 i32 i32 i32) i32.const 0 local.set 2 @@ -2525,11 +2577,11 @@ local.get 2 i32.const 2 i32.shl - i32.const 1048852 + i32.const 1048584 i32.add local.set 3 local.get 0 - call 36 + call 39 local.set 4 block ;; label = @1 block ;; label = @2 @@ -2537,7 +2589,7 @@ block ;; label = @4 block ;; label = @5 i32.const 0 - i32.load offset=1048584 + i32.load offset=1048996 local.tee 5 i32.const 1 local.get 2 @@ -2550,11 +2602,11 @@ i32.load local.set 5 local.get 2 - call 17 + call 20 local.set 2 local.get 5 - call 36 - call 19 + call 39 + call 22 local.get 1 i32.ne br_if 1 (;@4;) @@ -2566,7 +2618,7 @@ local.get 5 local.get 6 i32.or - i32.store offset=1048584 + i32.store offset=1048996 local.get 3 local.get 0 i32.store @@ -2601,15 +2653,15 @@ local.get 2 local.set 5 local.get 2 - call 36 - call 19 + call 39 + call 22 local.get 1 i32.ne br_if 0 (;@4;) end end local.get 2 - call 36 + call 39 local.tee 2 i32.load offset=8 local.tee 3 @@ -2643,7 +2695,7 @@ local.get 4 i32.store offset=12 ) - (func (;9;) (type 6) (result i32) + (func (;12;) (type 6) (result i32) (local i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32) i32.const 0 local.set 0 @@ -2651,11 +2703,11 @@ local.set 1 block ;; label = @1 i32.const 0 - i32.load offset=1049012 + i32.load offset=1048720 local.tee 2 i32.eqz br_if 0 (;@1;) - i32.const 1049004 + i32.const 1048712 local.set 3 i32.const 0 local.set 1 @@ -2674,46 +2726,46 @@ local.set 6 block ;; label = @3 block ;; label = @4 - i32.const 1048580 + i32.const 1048584 local.get 4 i32.const 12 i32.add i32.load i32.const 1 i32.shr_u - call 47 + call 50 i32.eqz br_if 0 (;@4;) local.get 4 - call 39 + call 42 br_if 0 (;@4;) local.get 6 local.get 6 - call 32 + call 35 local.tee 7 i32.const 8 - call 14 + call 17 local.get 7 i32.sub i32.add local.tee 7 - call 19 + call 22 local.set 8 - call 33 + call 36 local.tee 9 i32.const 8 - call 14 + call 17 local.set 10 i32.const 20 i32.const 8 - call 14 + call 17 local.set 11 i32.const 16 i32.const 8 - call 14 + call 17 local.set 12 local.get 7 - call 23 + call 26 br_if 0 (;@4;) local.get 7 local.get 8 @@ -2735,37 +2787,37 @@ block ;; label = @6 local.get 7 i32.const 0 - i32.load offset=1048988 + i32.load offset=1049008 i32.eq br_if 0 (;@6;) local.get 7 - call 7 + call 10 br 1 (;@5;) end i32.const 0 i32.const 0 - i32.store offset=1048980 + i32.store offset=1049000 i32.const 0 i32.const 0 - i32.store offset=1048988 + i32.store offset=1049008 end block ;; label = @5 - i32.const 1048580 + i32.const 1048584 local.get 6 local.get 5 - call 46 + call 49 br_if 0 (;@5;) local.get 7 local.get 8 - call 8 + call 11 br 1 (;@4;) end i32.const 0 i32.const 0 - i32.load offset=1048996 + i32.load offset=1049016 local.get 5 i32.sub - i32.store offset=1048996 + i32.store offset=1049016 local.get 3 local.get 2 i32.store offset=8 @@ -2793,25 +2845,25 @@ i32.const 4095 i32.gt_u select - i32.store offset=1049028 + i32.store offset=1049032 local.get 1 ) - (func (;10;) (type 5) (param i32) + (func (;13;) (type 5) (param i32) (local i32 i32 i32 i32 i32 i32) local.get 0 - call 34 + call 37 local.set 0 local.get 0 local.get 0 - call 19 + call 22 local.tee 1 - call 30 + call 33 local.set 2 block ;; label = @1 block ;; label = @2 block ;; label = @3 local.get 0 - call 21 + call 24 br_if 0 (;@3;) local.get 0 i32.load @@ -2819,7 +2871,7 @@ block ;; label = @4 block ;; label = @5 local.get 0 - call 24 + call 27 br_if 0 (;@5;) local.get 3 local.get 1 @@ -2827,10 +2879,10 @@ local.set 1 local.get 0 local.get 3 - call 31 + call 34 local.tee 0 i32.const 0 - i32.load offset=1048988 + i32.load offset=1049008 i32.ne br_if 1 (;@4;) local.get 2 @@ -2842,14 +2894,14 @@ br_if 2 (;@3;) i32.const 0 local.get 1 - i32.store offset=1048980 + i32.store offset=1049000 local.get 0 local.get 1 local.get 2 - call 29 + call 32 return end - i32.const 1048580 + i32.const 1048584 local.get 0 local.get 3 i32.sub @@ -2859,15 +2911,15 @@ i32.const 16 i32.add local.tee 0 - call 46 + call 49 i32.eqz br_if 2 (;@2;) i32.const 0 i32.const 0 - i32.load offset=1048996 + i32.load offset=1049016 local.get 0 i32.sub - i32.store offset=1048996 + i32.store offset=1049016 return end block ;; label = @4 @@ -2876,7 +2928,7 @@ i32.lt_u br_if 0 (;@4;) local.get 0 - call 7 + call 10 br 1 (;@3;) end block ;; label = @4 @@ -2902,25 +2954,25 @@ end i32.const 0 i32.const 0 - i32.load offset=1048580 + i32.load offset=1048992 i32.const -2 local.get 3 i32.const 3 i32.shr_u i32.rotl i32.and - i32.store offset=1048580 + i32.store offset=1048992 end block ;; label = @3 block ;; label = @4 local.get 2 - call 20 + call 23 i32.eqz br_if 0 (;@4;) local.get 0 local.get 1 local.get 2 - call 29 + call 32 br 1 (;@3;) end block ;; label = @4 @@ -2929,39 +2981,39 @@ block ;; label = @7 local.get 2 i32.const 0 - i32.load offset=1048992 + i32.load offset=1049012 i32.eq br_if 0 (;@7;) local.get 2 i32.const 0 - i32.load offset=1048988 + i32.load offset=1049008 i32.ne br_if 1 (;@6;) i32.const 0 local.get 0 - i32.store offset=1048988 + i32.store offset=1049008 i32.const 0 i32.const 0 - i32.load offset=1048980 + i32.load offset=1049000 local.get 1 i32.add local.tee 1 - i32.store offset=1048980 + i32.store offset=1049000 local.get 0 local.get 1 - call 28 + call 31 return end i32.const 0 local.get 0 - i32.store offset=1048992 + i32.store offset=1049012 i32.const 0 i32.const 0 - i32.load offset=1048984 + i32.load offset=1049004 local.get 1 i32.add local.tee 1 - i32.store offset=1048984 + i32.store offset=1049004 local.get 0 local.get 1 i32.const 1 @@ -2969,13 +3021,13 @@ i32.store offset=4 local.get 0 i32.const 0 - i32.load offset=1048988 + i32.load offset=1049008 i32.eq br_if 1 (;@5;) br 2 (;@4;) end local.get 2 - call 19 + call 22 local.tee 3 local.get 1 i32.add @@ -2987,7 +3039,7 @@ i32.lt_u br_if 0 (;@7;) local.get 2 - call 7 + call 10 br 1 (;@6;) end block ;; label = @7 @@ -3013,57 +3065,57 @@ end i32.const 0 i32.const 0 - i32.load offset=1048580 + i32.load offset=1048992 i32.const -2 local.get 3 i32.const 3 i32.shr_u i32.rotl i32.and - i32.store offset=1048580 + i32.store offset=1048992 end local.get 0 local.get 1 - call 28 + call 31 local.get 0 i32.const 0 - i32.load offset=1048988 + i32.load offset=1049008 i32.ne br_if 2 (;@3;) i32.const 0 local.get 1 - i32.store offset=1048980 + i32.store offset=1049000 br 3 (;@2;) end i32.const 0 i32.const 0 - i32.store offset=1048980 + i32.store offset=1049000 i32.const 0 i32.const 0 - i32.store offset=1048988 + i32.store offset=1049008 end i32.const 0 - i32.load offset=1049020 + i32.load offset=1049024 local.get 1 i32.ge_u br_if 1 (;@2;) - call 33 + call 36 local.tee 0 i32.const 8 - call 14 + call 17 local.set 1 i32.const 20 i32.const 8 - call 14 + call 17 local.set 2 i32.const 16 i32.const 8 - call 14 + call 17 local.set 3 i32.const 0 i32.const 16 i32.const 8 - call 14 + call 17 i32.const 2 i32.shl i32.sub @@ -3089,27 +3141,27 @@ i32.eqz br_if 1 (;@2;) i32.const 0 - i32.load offset=1048992 + i32.load offset=1049012 i32.eqz br_if 1 (;@2;) - call 33 + call 36 local.tee 0 i32.const 8 - call 14 + call 17 local.set 1 i32.const 20 i32.const 8 - call 14 + call 17 local.set 3 i32.const 16 i32.const 8 - call 14 + call 17 local.set 4 i32.const 0 local.set 2 block ;; label = @4 i32.const 0 - i32.load offset=1048984 + i32.load offset=1049004 local.tee 5 local.get 4 local.get 3 @@ -3123,16 +3175,19 @@ br_if 0 (;@4;) local.get 5 local.get 0 - i32.const -1 - i32.xor + i32.sub + i32.const 65535 i32.add i32.const -65536 i32.and + local.tee 4 + i32.const -65536 + i32.add local.set 3 i32.const 0 - i32.load offset=1048992 + i32.load offset=1049012 local.set 1 - i32.const 1049004 + i32.const 1048712 local.set 0 block ;; label = @5 loop ;; label = @6 @@ -3143,7 +3198,7 @@ i32.gt_u br_if 0 (;@7;) local.get 0 - call 42 + call 45 local.get 1 i32.gt_u br_if 2 (;@5;) @@ -3159,16 +3214,16 @@ i32.const 0 local.set 2 local.get 0 - call 39 + call 42 br_if 0 (;@4;) - i32.const 1048580 + i32.const 1048584 local.get 0 i32.const 12 i32.add i32.load i32.const 1 i32.shr_u - call 47 + call 50 i32.eqz br_if 0 (;@4;) local.get 0 @@ -3176,19 +3231,19 @@ local.get 3 i32.lt_u br_if 0 (;@4;) - i32.const 1049004 + i32.const 1048712 local.set 1 loop ;; label = @5 local.get 0 local.get 1 - call 41 + call 44 br_if 1 (;@4;) local.get 1 i32.load offset=8 local.tee 1 br_if 0 (;@5;) end - i32.const 1048580 + i32.const 1048584 local.get 0 i32.load local.get 0 @@ -3197,7 +3252,7 @@ local.get 1 local.get 3 i32.sub - call 45 + call 48 i32.eqz br_if 0 (;@4;) local.get 3 @@ -3211,58 +3266,60 @@ i32.store offset=4 i32.const 0 i32.const 0 - i32.load offset=1048996 + i32.load offset=1049016 local.get 3 i32.sub - i32.store offset=1048996 + i32.store offset=1049016 i32.const 0 - i32.load offset=1048984 + i32.load offset=1049004 local.set 1 i32.const 0 - i32.load offset=1048992 + i32.load offset=1049012 local.set 0 i32.const 0 local.get 0 local.get 0 - call 32 + call 35 local.tee 2 i32.const 8 - call 14 + call 17 local.get 2 i32.sub local.tee 2 - call 30 + call 33 local.tee 0 - i32.store offset=1048992 + i32.store offset=1049012 i32.const 0 local.get 1 - local.get 3 + local.get 4 local.get 2 i32.add i32.sub + i32.const 65536 + i32.add local.tee 1 - i32.store offset=1048984 + i32.store offset=1049004 local.get 0 local.get 1 i32.const 1 i32.or i32.store offset=4 - call 33 + call 36 local.tee 2 i32.const 8 - call 14 + call 17 local.set 4 i32.const 20 i32.const 8 - call 14 + call 17 local.set 5 i32.const 16 i32.const 8 - call 14 + call 17 local.set 6 local.get 0 local.get 1 - call 30 + call 33 local.get 6 local.get 5 local.get 4 @@ -3273,25 +3330,25 @@ i32.store offset=4 i32.const 0 i32.const 2097152 - i32.store offset=1049020 + i32.store offset=1049024 local.get 3 local.set 2 end - local.get 2 + call 12 i32.const 0 - call 9 + local.get 2 i32.sub i32.ne br_if 1 (;@2;) i32.const 0 - i32.load offset=1048984 + i32.load offset=1049004 i32.const 0 - i32.load offset=1049020 + i32.load offset=1049024 i32.le_u br_if 1 (;@2;) i32.const 0 i32.const -1 - i32.store offset=1049020 + i32.store offset=1049024 return end local.get 1 @@ -3300,17 +3357,17 @@ br_if 1 (;@1;) local.get 0 local.get 1 - call 8 + call 11 i32.const 0 i32.const 0 - i32.load offset=1049028 + i32.load offset=1049032 i32.const -1 i32.add local.tee 0 - i32.store offset=1049028 + i32.store offset=1049032 local.get 0 br_if 0 (;@2;) - call 9 + call 12 drop return end @@ -3319,13 +3376,13 @@ local.get 1 i32.const -8 i32.and - i32.const 1048588 + i32.const 1048728 i32.add local.set 2 block ;; label = @1 block ;; label = @2 i32.const 0 - i32.load offset=1048580 + i32.load offset=1048992 local.tee 3 i32.const 1 local.get 1 @@ -3345,7 +3402,7 @@ local.get 3 local.get 1 i32.or - i32.store offset=1048580 + i32.store offset=1048992 local.get 2 local.set 1 end @@ -3362,49 +3419,49 @@ local.get 1 i32.store offset=8 ) - (func (;11;) (type 4) (param i32 i32) + (func (;14;) (type 4) (param i32 i32) (local i32 i32 i32 i32) local.get 0 local.get 0 - call 32 + call 35 local.tee 2 i32.const 8 - call 14 + call 17 local.get 2 i32.sub local.tee 2 - call 30 + call 33 local.set 0 i32.const 0 local.get 1 local.get 2 i32.sub local.tee 1 - i32.store offset=1048984 + i32.store offset=1049004 i32.const 0 local.get 0 - i32.store offset=1048992 + i32.store offset=1049012 local.get 0 local.get 1 i32.const 1 i32.or i32.store offset=4 - call 33 + call 36 local.tee 2 i32.const 8 - call 14 + call 17 local.set 3 i32.const 20 i32.const 8 - call 14 + call 17 local.set 4 i32.const 16 i32.const 8 - call 14 + call 17 local.set 5 local.get 0 local.get 1 - call 30 + call 33 local.get 5 local.get 4 local.get 3 @@ -3415,14 +3472,14 @@ i32.store offset=4 i32.const 0 i32.const 2097152 - i32.store offset=1049020 + i32.store offset=1049024 ) - (func (;12;) (type 2) (param i32 i32) (result i32) + (func (;15;) (type 2) (param i32 i32) (result i32) local.get 0 local.get 1 - call 4 + call 7 ) - (func (;13;) (type 3) (param i32 i32 i32 i32) (result i32) + (func (;16;) (type 3) (param i32 i32 i32 i32) (result i32) (local i32 i32 i32 i32 i32 i32) block ;; label = @1 block ;; label = @2 @@ -3434,31 +3491,31 @@ br_if 0 (;@4;) local.get 3 local.get 2 - call 4 + call 7 local.tee 2 br_if 1 (;@3;) i32.const 0 return end - call 33 + call 36 local.tee 1 i32.const 8 - call 14 + call 17 local.set 4 i32.const 20 i32.const 8 - call 14 + call 17 local.set 5 i32.const 16 i32.const 8 - call 14 + call 17 local.set 6 i32.const 0 local.set 2 i32.const 0 i32.const 16 i32.const 8 - call 14 + call 17 i32.const 2 i32.shl i32.sub @@ -3490,23 +3547,23 @@ i32.add i32.const 16 i32.const 8 - call 14 + call 17 i32.const -5 i32.add local.get 3 i32.gt_u select i32.const 8 - call 14 + call 17 local.set 4 local.get 0 - call 34 + call 37 local.set 1 local.get 1 local.get 1 - call 19 + call 22 local.tee 5 - call 30 + call 33 local.set 6 block ;; label = @4 block ;; label = @5 @@ -3517,7 +3574,7 @@ block ;; label = @10 block ;; label = @11 local.get 1 - call 24 + call 27 br_if 0 (;@11;) local.get 5 local.get 4 @@ -3525,19 +3582,19 @@ br_if 1 (;@10;) local.get 6 i32.const 0 - i32.load offset=1048992 + i32.load offset=1049012 i32.eq br_if 2 (;@9;) local.get 6 i32.const 0 - i32.load offset=1048988 + i32.load offset=1049008 i32.eq br_if 3 (;@8;) local.get 6 - call 20 + call 23 br_if 7 (;@4;) local.get 6 - call 19 + call 22 local.tee 7 local.get 5 i32.add @@ -3554,11 +3611,11 @@ i32.lt_u br_if 4 (;@7;) local.get 6 - call 7 + call 10 br 5 (;@6;) end local.get 1 - call 19 + call 22 local.set 5 local.get 4 i32.const 256 @@ -3578,7 +3635,7 @@ i32.lt_u br_if 6 (;@5;) end - i32.const 1048580 + i32.const 1048584 local.get 1 local.get 1 i32.load @@ -3593,12 +3650,12 @@ local.get 4 i32.const 31 i32.add - i32.const 1048580 - call 48 - call 14 + i32.const 1048584 + call 51 + call 17 local.tee 5 i32.const 1 - call 44 + call 47 local.tee 4 i32.eqz br_if 6 (;@4;) @@ -3614,49 +3671,49 @@ i32.add local.tee 2 i32.store offset=4 - call 18 + call 21 local.set 0 local.get 1 local.get 2 - call 30 + call 33 local.get 0 i32.store offset=4 local.get 1 local.get 3 i32.const -12 i32.add - call 30 + call 33 i32.const 0 i32.store offset=4 i32.const 0 i32.const 0 - i32.load offset=1048996 + i32.load offset=1049016 local.get 5 local.get 7 i32.sub i32.add local.tee 3 - i32.store offset=1048996 + i32.store offset=1049016 i32.const 0 i32.const 0 - i32.load offset=1049024 + i32.load offset=1049028 local.tee 2 local.get 4 local.get 4 local.get 2 i32.gt_u select - i32.store offset=1049024 + i32.store offset=1049028 i32.const 0 i32.const 0 - i32.load offset=1049000 + i32.load offset=1049020 local.tee 2 local.get 3 local.get 2 local.get 3 i32.gt_u select - i32.store offset=1049000 + i32.store offset=1049020 br 9 (;@1;) end local.get 5 @@ -3665,26 +3722,26 @@ local.tee 5 i32.const 16 i32.const 8 - call 14 + call 17 i32.lt_u br_if 4 (;@5;) local.get 1 local.get 4 - call 30 + call 33 local.set 6 local.get 1 local.get 4 - call 25 + call 28 local.get 6 local.get 5 - call 25 + call 28 local.get 6 local.get 5 - call 6 + call 9 br 4 (;@5;) end i32.const 0 - i32.load offset=1048984 + i32.load offset=1049004 local.get 5 i32.add local.tee 5 @@ -3693,11 +3750,11 @@ br_if 4 (;@4;) local.get 1 local.get 4 - call 30 + call 33 local.set 6 local.get 1 local.get 4 - call 25 + call 28 local.get 6 local.get 5 local.get 4 @@ -3708,14 +3765,14 @@ i32.store offset=4 i32.const 0 local.get 4 - i32.store offset=1048984 + i32.store offset=1049004 i32.const 0 local.get 6 - i32.store offset=1048992 + i32.store offset=1049012 br 3 (;@5;) end i32.const 0 - i32.load offset=1048980 + i32.load offset=1049000 local.get 5 i32.add local.tee 5 @@ -3730,12 +3787,12 @@ local.tee 6 i32.const 16 i32.const 8 - call 14 + call 17 i32.ge_u br_if 0 (;@9;) local.get 1 local.get 5 - call 25 + call 28 i32.const 0 local.set 6 i32.const 0 @@ -3744,26 +3801,26 @@ end local.get 1 local.get 4 - call 30 + call 33 local.tee 5 local.get 6 - call 30 + call 33 local.set 7 local.get 1 local.get 4 - call 25 + call 28 local.get 5 local.get 6 - call 28 + call 31 local.get 7 - call 22 + call 25 end i32.const 0 local.get 5 - i32.store offset=1048988 + i32.store offset=1049008 i32.const 0 local.get 6 - i32.store offset=1048980 + i32.store offset=1049000 br 2 (;@5;) end block ;; label = @7 @@ -3789,57 +3846,57 @@ end i32.const 0 i32.const 0 - i32.load offset=1048580 + i32.load offset=1048992 i32.const -2 local.get 7 i32.const 3 i32.shr_u i32.rotl i32.and - i32.store offset=1048580 + i32.store offset=1048992 end block ;; label = @6 local.get 8 i32.const 16 i32.const 8 - call 14 + call 17 i32.lt_u br_if 0 (;@6;) local.get 1 local.get 4 - call 30 + call 33 local.set 5 local.get 1 local.get 4 - call 25 + call 28 local.get 5 local.get 8 - call 25 + call 28 local.get 5 local.get 8 - call 6 + call 9 br 1 (;@5;) end local.get 1 local.get 5 - call 25 + call 28 end local.get 1 br_if 3 (;@1;) end local.get 3 - call 5 + call 8 local.tee 4 i32.eqz br_if 1 (;@2;) local.get 4 local.get 0 local.get 1 - call 19 + call 22 i32.const -8 i32.const -4 local.get 1 - call 24 + call 27 select i32.add local.tee 2 @@ -3848,10 +3905,10 @@ local.get 3 i32.lt_u select - call 49 + call 52 local.set 3 local.get 0 - call 10 + call 13 local.get 3 return end @@ -3863,21 +3920,21 @@ local.get 3 i32.lt_u select - call 49 + call 52 drop local.get 0 - call 10 + call 13 end local.get 2 return end local.get 1 - call 24 + call 27 drop local.get 1 - call 32 + call 35 ) - (func (;14;) (type 2) (param i32 i32) (result i32) + (func (;17;) (type 2) (param i32 i32) (result i32) local.get 0 local.get 1 i32.add @@ -3888,7 +3945,7 @@ i32.sub i32.and ) - (func (;15;) (type 0) (param i32) (result i32) + (func (;18;) (type 1) (param i32) (result i32) local.get 0 i32.const 1 i32.shl @@ -3898,14 +3955,14 @@ i32.sub i32.or ) - (func (;16;) (type 0) (param i32) (result i32) + (func (;19;) (type 1) (param i32) (result i32) i32.const 0 local.get 0 i32.sub local.get 0 i32.and ) - (func (;17;) (type 0) (param i32) (result i32) + (func (;20;) (type 1) (param i32) (result i32) i32.const 0 i32.const 25 local.get 0 @@ -3917,16 +3974,16 @@ i32.eq select ) - (func (;18;) (type 6) (result i32) + (func (;21;) (type 6) (result i32) i32.const 7 ) - (func (;19;) (type 0) (param i32) (result i32) + (func (;22;) (type 1) (param i32) (result i32) local.get 0 i32.load offset=4 i32.const -8 i32.and ) - (func (;20;) (type 0) (param i32) (result i32) + (func (;23;) (type 1) (param i32) (result i32) local.get 0 i32.load8_u offset=4 i32.const 2 @@ -3934,13 +3991,13 @@ i32.const 1 i32.shr_u ) - (func (;21;) (type 0) (param i32) (result i32) + (func (;24;) (type 1) (param i32) (result i32) local.get 0 i32.load offset=4 i32.const 1 i32.and ) - (func (;22;) (type 5) (param i32) + (func (;25;) (type 5) (param i32) local.get 0 local.get 0 i32.load offset=4 @@ -3948,7 +4005,7 @@ i32.and i32.store offset=4 ) - (func (;23;) (type 0) (param i32) (result i32) + (func (;26;) (type 1) (param i32) (result i32) local.get 0 i32.load offset=4 i32.const 3 @@ -3956,14 +4013,14 @@ i32.const 1 i32.ne ) - (func (;24;) (type 0) (param i32) (result i32) + (func (;27;) (type 1) (param i32) (result i32) local.get 0 i32.load8_u offset=4 i32.const 3 i32.and i32.eqz ) - (func (;25;) (type 4) (param i32 i32) + (func (;28;) (type 4) (param i32 i32) local.get 0 local.get 0 i32.load offset=4 @@ -3984,7 +4041,7 @@ i32.or i32.store offset=4 ) - (func (;26;) (type 4) (param i32 i32) + (func (;29;) (type 4) (param i32 i32) local.get 0 local.get 1 i32.const 3 @@ -4000,14 +4057,14 @@ i32.or i32.store offset=4 ) - (func (;27;) (type 4) (param i32 i32) + (func (;30;) (type 4) (param i32 i32) local.get 0 local.get 1 i32.const 3 i32.or i32.store offset=4 ) - (func (;28;) (type 4) (param i32 i32) + (func (;31;) (type 4) (param i32 i32) local.get 0 local.get 1 i32.const 1 @@ -4019,7 +4076,7 @@ local.get 1 i32.store ) - (func (;29;) (type 7) (param i32 i32 i32) + (func (;32;) (type 7) (param i32 i32 i32) local.get 2 local.get 2 i32.load offset=4 @@ -4037,30 +4094,30 @@ local.get 1 i32.store ) - (func (;30;) (type 2) (param i32 i32) (result i32) + (func (;33;) (type 2) (param i32 i32) (result i32) local.get 0 local.get 1 i32.add ) - (func (;31;) (type 2) (param i32 i32) (result i32) + (func (;34;) (type 2) (param i32 i32) (result i32) local.get 0 local.get 1 i32.sub ) - (func (;32;) (type 0) (param i32) (result i32) + (func (;35;) (type 1) (param i32) (result i32) local.get 0 i32.const 8 i32.add ) - (func (;33;) (type 6) (result i32) + (func (;36;) (type 6) (result i32) i32.const 8 ) - (func (;34;) (type 0) (param i32) (result i32) + (func (;37;) (type 1) (param i32) (result i32) local.get 0 i32.const -8 i32.add ) - (func (;35;) (type 0) (param i32) (result i32) + (func (;38;) (type 1) (param i32) (result i32) (local i32) block ;; label = @1 local.get 0 @@ -4075,30 +4132,30 @@ end local.get 1 ) - (func (;36;) (type 0) (param i32) (result i32) + (func (;39;) (type 1) (param i32) (result i32) local.get 0 ) - (func (;37;) (type 0) (param i32) (result i32) + (func (;40;) (type 1) (param i32) (result i32) local.get 0 i32.load offset=12 ) - (func (;38;) (type 0) (param i32) (result i32) + (func (;41;) (type 1) (param i32) (result i32) local.get 0 i32.load offset=8 ) - (func (;39;) (type 0) (param i32) (result i32) + (func (;42;) (type 1) (param i32) (result i32) local.get 0 i32.load offset=12 i32.const 1 i32.and ) - (func (;40;) (type 0) (param i32) (result i32) + (func (;43;) (type 1) (param i32) (result i32) local.get 0 i32.load offset=12 i32.const 1 i32.shr_u ) - (func (;41;) (type 2) (param i32 i32) (result i32) + (func (;44;) (type 2) (param i32 i32) (result i32) (local i32 i32) i32.const 0 local.set 2 @@ -4119,14 +4176,14 @@ end local.get 2 ) - (func (;42;) (type 0) (param i32) (result i32) + (func (;45;) (type 1) (param i32) (result i32) local.get 0 i32.load local.get 0 i32.load offset=4 i32.add ) - (func (;43;) (type 7) (param i32 i32 i32) + (func (;46;) (type 7) (param i32 i32 i32) (local i32) local.get 2 i32.const 16 @@ -4156,28 +4213,28 @@ select i32.store ) - (func (;44;) (type 8) (param i32 i32 i32 i32 i32) (result i32) + (func (;47;) (type 8) (param i32 i32 i32 i32 i32) (result i32) i32.const 0 ) - (func (;45;) (type 3) (param i32 i32 i32 i32) (result i32) + (func (;48;) (type 3) (param i32 i32 i32 i32) (result i32) i32.const 0 ) - (func (;46;) (type 9) (param i32 i32 i32) (result i32) + (func (;49;) (type 9) (param i32 i32 i32) (result i32) i32.const 0 ) - (func (;47;) (type 2) (param i32 i32) (result i32) + (func (;50;) (type 2) (param i32 i32) (result i32) i32.const 0 ) - (func (;48;) (type 0) (param i32) (result i32) + (func (;51;) (type 1) (param i32) (result i32) i32.const 65536 ) - (func (;49;) (type 9) (param i32 i32 i32) (result i32) + (func (;52;) (type 9) (param i32 i32 i32) (result i32) local.get 0 local.get 1 local.get 2 - call 50 + call 53 ) - (func (;50;) (type 9) (param i32 i32 i32) (result i32) + (func (;53;) (type 9) (param i32 i32 i32) (result i32) (local i32 i32 i32 i32 i32 i32 i32 i32) block ;; label = @1 block ;; label = @2 @@ -4355,43 +4412,14 @@ end local.get 0 ) - (func (;51;) (type 3) (param i32 i32 i32 i32) (result i32) - block ;; label = @1 - block ;; label = @2 - block ;; label = @3 - local.get 1 - br_if 0 (;@3;) - local.get 3 - i32.eqz - br_if 2 (;@1;) - local.get 3 - local.get 2 - call 2 - local.set 2 - br 1 (;@2;) - end - local.get 0 - local.get 1 - local.get 2 - local.get 3 - call 3 - local.set 2 - end - local.get 2 - br_if 0 (;@1;) - unreachable - unreachable - end - local.get 2 - ) (table (;0;) 2 2 funcref) (memory (;0;) 17) (global (;0;) (mut i32) i32.const 1048576) - (global (;1;) i32 i32.const 1049032) + (global (;1;) i32 i32.const 1049036) (global (;2;) i32 i32.const 1049040) (export "memory" (memory 0)) - (export "add-one" (func 0)) - (export "cabi_realloc" (func 51)) + (export "add-two" (func 2)) + (export "cabi_realloc" (func 6)) (export "__data_end" (global 1)) (export "__heap_base" (global 2)) (elem (;0;) (i32.const 1) func 1) diff --git a/homestar-wasm/fixtures/example_add_component.wasm b/homestar-wasm/fixtures/example_add_component.wasm new file mode 100644 index 00000000..adfc4ebb Binary files /dev/null and b/homestar-wasm/fixtures/example_add_component.wasm differ diff --git a/homestar-wasm/fixtures/add_one_component.wat b/homestar-wasm/fixtures/example_add_component.wat similarity index 69% rename from homestar-wasm/fixtures/add_one_component.wat rename to homestar-wasm/fixtures/example_add_component.wat index 6f17cb00..fef7a5b9 100644 --- a/homestar-wasm/fixtures/add_one_component.wat +++ b/homestar-wasm/fixtures/example_add_component.wat @@ -1,7 +1,7 @@ (component (core module (;0;) - (type (;0;) (func (param i32) (result i32))) - (type (;1;) (func)) + (type (;0;) (func)) + (type (;1;) (func (param i32) (result i32))) (type (;2;) (func (param i32 i32) (result i32))) (type (;3;) (func (param i32 i32 i32 i32) (result i32))) (type (;4;) (func (param i32 i32))) @@ -10,33 +10,77 @@ (type (;7;) (func (param i32 i32 i32))) (type (;8;) (func (param i32 i32 i32 i32 i32) (result i32))) (type (;9;) (func (param i32 i32 i32) (result i32))) - (func (;0;) (type 0) (param i32) (result i32) + (func (;0;) (type 0)) + (func (;1;) (type 0)) + (func (;2;) (type 1) (param i32) (result i32) + call 5 local.get 0 - i32.const 1 + i32.const 2 i32.add ) - (func (;1;) (type 1)) - (func (;2;) (type 2) (param i32 i32) (result i32) + (func (;3;) (type 2) (param i32 i32) (result i32) (local i32) local.get 0 local.get 1 - call 12 + call 15 local.set 2 local.get 2 return ) - (func (;3;) (type 3) (param i32 i32 i32 i32) (result i32) + (func (;4;) (type 3) (param i32 i32 i32 i32) (result i32) (local i32) local.get 0 local.get 1 local.get 2 local.get 3 - call 13 + call 16 local.set 4 local.get 4 return ) - (func (;4;) (type 2) (param i32 i32) (result i32) + (func (;5;) (type 0) + block ;; label = @1 + i32.const 0 + i32.load8_u offset=1048580 + br_if 0 (;@1;) + call 0 + i32.const 0 + i32.const 1 + i32.store8 offset=1048580 + end + ) + (func (;6;) (type 3) (param i32 i32 i32 i32) (result i32) + block ;; label = @1 + block ;; label = @2 + block ;; label = @3 + local.get 1 + br_if 0 (;@3;) + local.get 3 + i32.eqz + br_if 1 (;@2;) + local.get 3 + local.get 2 + call 3 + local.tee 2 + br_if 1 (;@2;) + br 2 (;@1;) + end + local.get 0 + local.get 1 + local.get 2 + local.get 3 + call 4 + local.tee 2 + i32.eqz + br_if 1 (;@1;) + end + local.get 2 + return + end + unreachable + unreachable + ) + (func (;7;) (type 2) (param i32 i32) (result i32) (local i32 i32 i32 i32 i32 i32) block ;; label = @1 block ;; label = @2 @@ -49,41 +93,41 @@ br_if 0 (;@5;) i32.const 16 i32.const 8 - call 14 + call 17 local.get 1 i32.gt_u br_if 1 (;@4;) br 2 (;@3;) end local.get 0 - call 5 + call 8 local.set 2 br 2 (;@2;) end i32.const 16 i32.const 8 - call 14 + call 17 local.set 1 end - call 33 + call 36 local.tee 3 i32.const 8 - call 14 + call 17 local.set 4 i32.const 20 i32.const 8 - call 14 + call 17 local.set 5 i32.const 16 i32.const 8 - call 14 + call 17 local.set 6 i32.const 0 local.set 2 i32.const 0 i32.const 16 i32.const 8 - call 14 + call 17 i32.const 2 i32.shl i32.sub @@ -118,28 +162,28 @@ i32.add i32.const 16 i32.const 8 - call 14 + call 17 i32.const -5 i32.add local.get 0 i32.gt_u select i32.const 8 - call 14 + call 17 local.tee 4 i32.add i32.const 16 i32.const 8 - call 14 + call 17 i32.add i32.const -4 i32.add - call 5 + call 8 local.tee 3 i32.eqz br_if 0 (;@2;) local.get 3 - call 34 + call 37 local.set 0 block ;; label = @3 block ;; label = @4 @@ -161,14 +205,14 @@ local.get 1 i32.sub i32.and - call 34 + call 37 local.set 2 i32.const 16 i32.const 8 - call 14 + call 17 local.set 3 local.get 0 - call 19 + call 22 local.get 2 i32.const 0 local.get 1 @@ -187,17 +231,17 @@ local.set 3 block ;; label = @4 local.get 0 - call 24 + call 27 br_if 0 (;@4;) local.get 1 local.get 3 - call 25 + call 28 local.get 0 local.get 2 - call 25 + call 28 local.get 0 local.get 2 - call 6 + call 9 br 1 (;@3;) end local.get 0 @@ -213,48 +257,48 @@ i32.store end local.get 1 - call 24 + call 27 br_if 1 (;@1;) local.get 1 - call 19 + call 22 local.tee 0 i32.const 16 i32.const 8 - call 14 + call 17 local.get 4 i32.add i32.le_u br_if 1 (;@1;) local.get 1 local.get 4 - call 30 + call 33 local.set 2 local.get 1 local.get 4 - call 25 + call 28 local.get 2 local.get 0 local.get 4 i32.sub local.tee 0 - call 25 + call 28 local.get 2 local.get 0 - call 6 + call 9 br 1 (;@1;) end local.get 2 return end local.get 1 - call 32 + call 35 local.set 0 local.get 1 - call 24 + call 27 drop local.get 0 ) - (func (;5;) (type 0) (param i32) (result i32) + (func (;8;) (type 1) (param i32) (result i32) (local i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i64) global.get 0 i32.const 16 @@ -264,860 +308,864 @@ block ;; label = @1 block ;; label = @2 block ;; label = @3 - local.get 0 - i32.const 245 - i32.lt_u - br_if 0 (;@3;) - call 33 - local.tee 2 - i32.const 8 - call 14 - local.set 3 - i32.const 20 - i32.const 8 - call 14 - local.set 4 - i32.const 16 - i32.const 8 - call 14 - local.set 5 - i32.const 0 - local.set 6 - i32.const 0 - i32.const 16 - i32.const 8 - call 14 - i32.const 2 - i32.shl - i32.sub - local.tee 7 - local.get 2 - local.get 5 - local.get 3 - local.get 4 - i32.add - i32.add - i32.sub - i32.const -65544 - i32.add - i32.const -9 - i32.and - i32.const -3 - i32.add - local.tee 2 - local.get 7 - local.get 2 - i32.lt_u - select - local.get 0 - i32.le_u - br_if 2 (;@1;) - local.get 0 - i32.const 4 - i32.add - i32.const 8 - call 14 - local.set 2 - i32.const 0 - i32.load offset=1048584 - i32.eqz - br_if 1 (;@2;) - i32.const 0 - local.set 8 - block ;; label = @4 - local.get 2 - i32.const 256 - i32.lt_u - br_if 0 (;@4;) - i32.const 31 - local.set 8 - local.get 2 - i32.const 16777215 - i32.gt_u - br_if 0 (;@4;) - local.get 2 - i32.const 6 - local.get 2 - i32.const 8 - i32.shr_u - i32.clz - local.tee 0 - i32.sub - i32.shr_u - i32.const 1 - i32.and - local.get 0 - i32.const 1 - i32.shl - i32.sub - i32.const 62 - i32.add - local.set 8 - end - i32.const 0 - local.get 2 - i32.sub - local.set 6 block ;; label = @4 block ;; label = @5 block ;; label = @6 - local.get 8 - i32.const 2 - i32.shl - i32.const 1048852 - i32.add - i32.load - local.tee 0 - i32.eqz - br_if 0 (;@6;) - local.get 2 - local.get 8 - call 17 - i32.shl - local.set 5 - i32.const 0 - local.set 4 - i32.const 0 - local.set 3 - loop ;; label = @7 - block ;; label = @8 - local.get 0 - call 36 - call 19 - local.tee 7 - local.get 2 - i32.lt_u - br_if 0 (;@8;) - local.get 7 - local.get 2 - i32.sub - local.tee 7 - local.get 6 - i32.ge_u - br_if 0 (;@8;) - local.get 7 - local.set 6 - local.get 0 - local.set 3 - local.get 7 - br_if 0 (;@8;) - i32.const 0 - local.set 6 - local.get 0 - local.set 3 - br 3 (;@5;) - end + block ;; label = @7 local.get 0 + i32.const 245 + i32.lt_u + br_if 0 (;@7;) + call 36 + local.tee 2 + i32.const 8 + call 17 + local.set 3 i32.const 20 - i32.add - i32.load + i32.const 8 + call 17 + local.set 4 + i32.const 16 + i32.const 8 + call 17 + local.set 5 + i32.const 0 + local.set 6 + i32.const 0 + i32.const 16 + i32.const 8 + call 17 + i32.const 2 + i32.shl + i32.sub local.tee 7 - local.get 4 - local.get 7 - local.get 0 + local.get 2 local.get 5 - i32.const 29 - i32.shr_u - i32.const 4 - i32.and + local.get 3 + local.get 4 i32.add - i32.const 16 i32.add - i32.load - local.tee 0 - i32.ne - select - local.get 4 + i32.sub + i32.const -65544 + i32.add + i32.const -9 + i32.and + i32.const -3 + i32.add + local.tee 2 local.get 7 + local.get 2 + i32.lt_u select - local.set 4 - local.get 5 - i32.const 1 - i32.shl - local.set 5 local.get 0 - br_if 0 (;@7;) - end - block ;; label = @7 - local.get 4 + i32.le_u + br_if 6 (;@1;) + local.get 0 + i32.const 4 + i32.add + i32.const 8 + call 17 + local.set 2 + i32.const 0 + i32.load offset=1048996 i32.eqz - br_if 0 (;@7;) - local.get 4 + br_if 5 (;@2;) + i32.const 0 + local.set 8 + block ;; label = @8 + local.get 2 + i32.const 256 + i32.lt_u + br_if 0 (;@8;) + i32.const 31 + local.set 8 + local.get 2 + i32.const 16777215 + i32.gt_u + br_if 0 (;@8;) + local.get 2 + i32.const 6 + local.get 2 + i32.const 8 + i32.shr_u + i32.clz + local.tee 0 + i32.sub + i32.shr_u + i32.const 1 + i32.and + local.get 0 + i32.const 1 + i32.shl + i32.sub + i32.const 62 + i32.add + local.set 8 + end + i32.const 0 + local.get 2 + i32.sub + local.set 6 + local.get 8 + i32.const 2 + i32.shl + i32.const 1048584 + i32.add + i32.load + local.tee 3 + br_if 1 (;@6;) + i32.const 0 local.set 0 + i32.const 0 + local.set 4 br 2 (;@5;) end - local.get 3 - br_if 2 (;@4;) - end + i32.const 16 + local.get 0 + i32.const 4 + i32.add + i32.const 16 + i32.const 8 + call 17 + i32.const -5 + i32.add + local.get 0 + i32.gt_u + select + i32.const 8 + call 17 + local.set 2 + block ;; label = @7 + block ;; label = @8 + block ;; label = @9 + block ;; label = @10 + block ;; label = @11 + block ;; label = @12 + block ;; label = @13 + i32.const 0 + i32.load offset=1048992 + local.tee 4 + local.get 2 + i32.const 3 + i32.shr_u + local.tee 6 + i32.shr_u + local.tee 0 + i32.const 3 + i32.and + br_if 0 (;@13;) + local.get 2 + i32.const 0 + i32.load offset=1049000 + i32.le_u + br_if 11 (;@2;) + local.get 0 + br_if 1 (;@12;) + i32.const 0 + i32.load offset=1048996 + local.tee 0 + i32.eqz + br_if 11 (;@2;) + local.get 0 + call 19 + i32.ctz + i32.const 2 + i32.shl + i32.const 1048584 + i32.add + i32.load + local.tee 3 + call 39 + call 22 + local.get 2 + i32.sub + local.set 6 + block ;; label = @14 + local.get 3 + call 38 + local.tee 0 + i32.eqz + br_if 0 (;@14;) + loop ;; label = @15 + local.get 0 + call 39 + call 22 + local.get 2 + i32.sub + local.tee 4 + local.get 6 + local.get 4 + local.get 6 + i32.lt_u + local.tee 4 + select + local.set 6 + local.get 0 + local.get 3 + local.get 4 + select + local.set 3 + local.get 0 + call 38 + local.tee 0 + br_if 0 (;@15;) + end + end + local.get 3 + call 39 + local.tee 0 + local.get 2 + call 33 + local.set 4 + local.get 3 + call 10 + local.get 6 + i32.const 16 + i32.const 8 + call 17 + i32.lt_u + br_if 5 (;@8;) + local.get 4 + call 39 + local.set 4 + local.get 0 + local.get 2 + call 30 + local.get 4 + local.get 6 + call 31 + i32.const 0 + i32.load offset=1049000 + local.tee 7 + i32.eqz + br_if 4 (;@9;) + local.get 7 + i32.const -8 + i32.and + i32.const 1048728 + i32.add + local.set 5 + i32.const 0 + i32.load offset=1049008 + local.set 3 + i32.const 0 + i32.load offset=1048992 + local.tee 8 + i32.const 1 + local.get 7 + i32.const 3 + i32.shr_u + i32.shl + local.tee 7 + i32.and + i32.eqz + br_if 2 (;@11;) + local.get 5 + i32.load offset=8 + local.set 7 + br 3 (;@10;) + end + block ;; label = @13 + block ;; label = @14 + local.get 0 + i32.const -1 + i32.xor + i32.const 1 + i32.and + local.get 6 + i32.add + local.tee 2 + i32.const 3 + i32.shl + local.tee 3 + i32.const 1048736 + i32.add + i32.load + local.tee 0 + i32.const 8 + i32.add + i32.load + local.tee 6 + local.get 3 + i32.const 1048728 + i32.add + local.tee 3 + i32.eq + br_if 0 (;@14;) + local.get 6 + local.get 3 + i32.store offset=12 + local.get 3 + local.get 6 + i32.store offset=8 + br 1 (;@13;) + end + i32.const 0 + local.get 4 + i32.const -2 + local.get 2 + i32.rotl + i32.and + i32.store offset=1048992 + end + local.get 0 + local.get 2 + i32.const 3 + i32.shl + call 29 + local.get 0 + call 35 + local.set 6 + br 11 (;@1;) + end + block ;; label = @12 + block ;; label = @13 + i32.const 1 + local.get 6 + i32.const 31 + i32.and + local.tee 6 + i32.shl + call 18 + local.get 0 + local.get 6 + i32.shl + i32.and + call 19 + i32.ctz + local.tee 6 + i32.const 3 + i32.shl + local.tee 4 + i32.const 1048736 + i32.add + i32.load + local.tee 0 + i32.const 8 + i32.add + i32.load + local.tee 3 + local.get 4 + i32.const 1048728 + i32.add + local.tee 4 + i32.eq + br_if 0 (;@13;) + local.get 3 + local.get 4 + i32.store offset=12 + local.get 4 + local.get 3 + i32.store offset=8 + br 1 (;@12;) + end + i32.const 0 + i32.const 0 + i32.load offset=1048992 + i32.const -2 + local.get 6 + i32.rotl + i32.and + i32.store offset=1048992 + end + local.get 0 + local.get 2 + call 30 + local.get 0 + local.get 2 + call 33 + local.tee 4 + local.get 6 + i32.const 3 + i32.shl + local.get 2 + i32.sub + local.tee 5 + call 31 + block ;; label = @12 + i32.const 0 + i32.load offset=1049000 + local.tee 3 + i32.eqz + br_if 0 (;@12;) + local.get 3 + i32.const -8 + i32.and + i32.const 1048728 + i32.add + local.set 6 + i32.const 0 + i32.load offset=1049008 + local.set 2 + block ;; label = @13 + block ;; label = @14 + i32.const 0 + i32.load offset=1048992 + local.tee 7 + i32.const 1 + local.get 3 + i32.const 3 + i32.shr_u + i32.shl + local.tee 3 + i32.and + i32.eqz + br_if 0 (;@14;) + local.get 6 + i32.load offset=8 + local.set 3 + br 1 (;@13;) + end + i32.const 0 + local.get 7 + local.get 3 + i32.or + i32.store offset=1048992 + local.get 6 + local.set 3 + end + local.get 6 + local.get 2 + i32.store offset=8 + local.get 3 + local.get 2 + i32.store offset=12 + local.get 2 + local.get 6 + i32.store offset=12 + local.get 2 + local.get 3 + i32.store offset=8 + end + i32.const 0 + local.get 4 + i32.store offset=1049008 + i32.const 0 + local.get 5 + i32.store offset=1049000 + local.get 0 + call 35 + local.set 6 + br 10 (;@1;) + end + i32.const 0 + local.get 8 + local.get 7 + i32.or + i32.store offset=1048992 + local.get 5 + local.set 7 + end + local.get 5 + local.get 3 + i32.store offset=8 + local.get 7 + local.get 3 + i32.store offset=12 + local.get 3 + local.get 5 + i32.store offset=12 + local.get 3 + local.get 7 + i32.store offset=8 + end + i32.const 0 + local.get 4 + i32.store offset=1049008 + i32.const 0 + local.get 6 + i32.store offset=1049000 + br 1 (;@7;) + end + local.get 0 + local.get 6 + local.get 2 + i32.add + call 29 + end + local.get 0 + call 35 + local.tee 6 + br_if 5 (;@1;) + br 4 (;@2;) + end + local.get 2 + local.get 8 + call 20 + i32.shl + local.set 5 + i32.const 0 + local.set 0 + i32.const 0 + local.set 4 + loop ;; label = @6 + block ;; label = @7 + local.get 3 + call 39 + call 22 + local.tee 7 + local.get 2 + i32.lt_u + br_if 0 (;@7;) + local.get 7 + local.get 2 + i32.sub + local.tee 7 + local.get 6 + i32.ge_u + br_if 0 (;@7;) + local.get 7 + local.set 6 + local.get 3 + local.set 4 + local.get 7 + br_if 0 (;@7;) + i32.const 0 + local.set 6 + local.get 3 + local.set 4 + local.get 3 + local.set 0 + br 3 (;@4;) + end + local.get 3 + i32.const 20 + i32.add + i32.load + local.tee 7 + local.get 0 + local.get 7 + local.get 3 + local.get 5 + i32.const 29 + i32.shr_u + i32.const 4 + i32.and + i32.add + i32.const 16 + i32.add + i32.load + local.tee 3 + i32.ne + select + local.get 0 + local.get 7 + select + local.set 0 + local.get 5 + i32.const 1 + i32.shl + local.set 5 + local.get 3 + br_if 0 (;@6;) + end + end + block ;; label = @5 + local.get 0 + local.get 4 + i32.or + br_if 0 (;@5;) i32.const 0 - local.set 3 + local.set 4 i32.const 1 local.get 8 i32.shl - call 15 + call 18 i32.const 0 - i32.load offset=1048584 + i32.load offset=1048996 i32.and local.tee 0 i32.eqz br_if 3 (;@2;) local.get 0 - call 16 + call 19 i32.ctz i32.const 2 i32.shl - i32.const 1048852 + i32.const 1048584 i32.add i32.load - local.tee 0 - i32.eqz - br_if 3 (;@2;) - end - loop ;; label = @5 - local.get 0 - local.get 3 - local.get 0 - call 36 - call 19 - local.tee 4 - local.get 2 - i32.ge_u - local.get 4 - local.get 2 - i32.sub - local.tee 4 - local.get 6 - i32.lt_u - i32.and - local.tee 5 - select - local.set 3 - local.get 4 - local.get 6 - local.get 5 - select - local.set 6 - local.get 0 - call 35 - local.tee 0 - br_if 0 (;@5;) + local.set 0 end - local.get 3 + local.get 0 i32.eqz - br_if 2 (;@2;) + br_if 1 (;@3;) end - block ;; label = @4 - i32.const 0 - i32.load offset=1048980 - local.tee 0 + loop ;; label = @4 + local.get 0 + local.get 4 + local.get 0 + call 39 + call 22 + local.tee 3 + local.get 2 + i32.ge_u + local.get 3 local.get 2 + i32.sub + local.tee 3 + local.get 6 i32.lt_u - br_if 0 (;@4;) + i32.and + local.tee 5 + select + local.set 4 + local.get 3 local.get 6 + local.get 5 + select + local.set 6 local.get 0 - local.get 2 - i32.sub - i32.ge_u - br_if 2 (;@2;) + call 38 + local.tee 0 + br_if 0 (;@4;) end - local.get 3 - call 36 + end + local.get 4 + i32.eqz + br_if 0 (;@2;) + block ;; label = @3 + i32.const 0 + i32.load offset=1049000 local.tee 0 local.get 2 - call 30 - local.set 4 - local.get 3 - call 7 + i32.lt_u + br_if 0 (;@3;) + local.get 6 + local.get 0 + local.get 2 + i32.sub + i32.ge_u + br_if 1 (;@2;) + end + local.get 4 + call 39 + local.tee 0 + local.get 2 + call 33 + local.set 3 + local.get 4 + call 10 + block ;; label = @3 block ;; label = @4 + local.get 6 + i32.const 16 + i32.const 8 + call 17 + i32.lt_u + br_if 0 (;@4;) + local.get 0 + local.get 2 + call 30 + local.get 3 + local.get 6 + call 31 block ;; label = @5 local.get 6 - i32.const 16 - i32.const 8 - call 14 + i32.const 256 i32.lt_u br_if 0 (;@5;) - local.get 0 - local.get 2 - call 27 - local.get 4 + local.get 3 local.get 6 - call 28 + call 11 + br 2 (;@3;) + end + local.get 6 + i32.const -8 + i32.and + i32.const 1048728 + i32.add + local.set 4 + block ;; label = @5 block ;; label = @6 + i32.const 0 + i32.load offset=1048992 + local.tee 5 + i32.const 1 local.get 6 - i32.const 256 - i32.lt_u - br_if 0 (;@6;) + i32.const 3 + i32.shr_u + i32.shl + local.tee 6 + i32.and + i32.eqz + br_if 0 (;@6;) local.get 4 - local.get 6 - call 8 - br 2 (;@4;) - end - local.get 6 - i32.const -8 - i32.and - i32.const 1048588 - i32.add - local.set 3 - block ;; label = @6 - block ;; label = @7 - i32.const 0 - i32.load offset=1048580 - local.tee 5 - i32.const 1 - local.get 6 - i32.const 3 - i32.shr_u - i32.shl - local.tee 6 - i32.and - i32.eqz - br_if 0 (;@7;) - local.get 3 - i32.load offset=8 - local.set 6 - br 1 (;@6;) - end - i32.const 0 - local.get 5 - local.get 6 - i32.or - i32.store offset=1048580 - local.get 3 + i32.load offset=8 local.set 6 + br 1 (;@5;) end - local.get 3 - local.get 4 - i32.store offset=8 + i32.const 0 + local.get 5 local.get 6 + i32.or + i32.store offset=1048992 local.get 4 - i32.store offset=12 - local.get 4 - local.get 3 - i32.store offset=12 - local.get 4 - local.get 6 - i32.store offset=8 - br 1 (;@4;) + local.set 6 end - local.get 0 + local.get 4 + local.get 3 + i32.store offset=8 local.get 6 - local.get 2 - i32.add - call 26 - end - local.get 0 - call 32 - local.tee 6 - i32.eqz - br_if 1 (;@2;) - br 2 (;@1;) - end - i32.const 16 - local.get 0 - i32.const 4 - i32.add - i32.const 16 - i32.const 8 - call 14 - i32.const -5 - i32.add - local.get 0 - i32.gt_u - select - i32.const 8 - call 14 - local.set 2 - block ;; label = @3 - block ;; label = @4 - block ;; label = @5 - block ;; label = @6 - block ;; label = @7 - block ;; label = @8 - block ;; label = @9 - i32.const 0 - i32.load offset=1048580 - local.tee 4 - local.get 2 - i32.const 3 - i32.shr_u - local.tee 6 - i32.shr_u - local.tee 0 - i32.const 3 - i32.and - br_if 0 (;@9;) - local.get 2 - i32.const 0 - i32.load offset=1048980 - i32.le_u - br_if 7 (;@2;) - local.get 0 - br_if 1 (;@8;) - i32.const 0 - i32.load offset=1048584 - local.tee 0 - i32.eqz - br_if 7 (;@2;) - local.get 0 - call 16 - i32.ctz - i32.const 2 - i32.shl - i32.const 1048852 - i32.add - i32.load - local.tee 3 - call 36 - call 19 - local.get 2 - i32.sub - local.set 6 - block ;; label = @10 - local.get 3 - call 35 - local.tee 0 - i32.eqz - br_if 0 (;@10;) - loop ;; label = @11 - local.get 0 - call 36 - call 19 - local.get 2 - i32.sub - local.tee 4 - local.get 6 - local.get 4 - local.get 6 - i32.lt_u - local.tee 4 - select - local.set 6 - local.get 0 - local.get 3 - local.get 4 - select - local.set 3 - local.get 0 - call 35 - local.tee 0 - br_if 0 (;@11;) - end - end - local.get 3 - call 36 - local.tee 0 - local.get 2 - call 30 - local.set 4 - local.get 3 - call 7 - local.get 6 - i32.const 16 - i32.const 8 - call 14 - i32.lt_u - br_if 5 (;@4;) - local.get 4 - call 36 - local.set 4 - local.get 0 - local.get 2 - call 27 - local.get 4 - local.get 6 - call 28 - i32.const 0 - i32.load offset=1048980 - local.tee 7 - i32.eqz - br_if 4 (;@5;) - local.get 7 - i32.const -8 - i32.and - i32.const 1048588 - i32.add - local.set 5 - i32.const 0 - i32.load offset=1048988 - local.set 3 - i32.const 0 - i32.load offset=1048580 - local.tee 8 - i32.const 1 - local.get 7 - i32.const 3 - i32.shr_u - i32.shl - local.tee 7 - i32.and - i32.eqz - br_if 2 (;@7;) - local.get 5 - i32.load offset=8 - local.set 7 - br 3 (;@6;) - end - block ;; label = @9 - block ;; label = @10 - local.get 0 - i32.const -1 - i32.xor - i32.const 1 - i32.and - local.get 6 - i32.add - local.tee 2 - i32.const 3 - i32.shl - local.tee 3 - i32.const 1048596 - i32.add - i32.load - local.tee 0 - i32.const 8 - i32.add - i32.load - local.tee 6 - local.get 3 - i32.const 1048588 - i32.add - local.tee 3 - i32.eq - br_if 0 (;@10;) - local.get 6 - local.get 3 - i32.store offset=12 - local.get 3 - local.get 6 - i32.store offset=8 - br 1 (;@9;) - end - i32.const 0 - local.get 4 - i32.const -2 - local.get 2 - i32.rotl - i32.and - i32.store offset=1048580 - end - local.get 0 - local.get 2 - i32.const 3 - i32.shl - call 26 - local.get 0 - call 32 - local.set 6 - br 7 (;@1;) - end - block ;; label = @8 - block ;; label = @9 - i32.const 1 - local.get 6 - i32.const 31 - i32.and - local.tee 6 - i32.shl - call 15 - local.get 0 - local.get 6 - i32.shl - i32.and - call 16 - i32.ctz - local.tee 6 - i32.const 3 - i32.shl - local.tee 4 - i32.const 1048596 - i32.add - i32.load - local.tee 0 - i32.const 8 - i32.add - i32.load - local.tee 3 - local.get 4 - i32.const 1048588 - i32.add - local.tee 4 - i32.eq - br_if 0 (;@9;) - local.get 3 - local.get 4 - i32.store offset=12 - local.get 4 - local.get 3 - i32.store offset=8 - br 1 (;@8;) - end - i32.const 0 - i32.const 0 - i32.load offset=1048580 - i32.const -2 - local.get 6 - i32.rotl - i32.and - i32.store offset=1048580 - end - local.get 0 - local.get 2 - call 27 - local.get 0 - local.get 2 - call 30 - local.tee 4 - local.get 6 - i32.const 3 - i32.shl - local.get 2 - i32.sub - local.tee 5 - call 28 - block ;; label = @8 - i32.const 0 - i32.load offset=1048980 - local.tee 3 - i32.eqz - br_if 0 (;@8;) - local.get 3 - i32.const -8 - i32.and - i32.const 1048588 - i32.add - local.set 6 - i32.const 0 - i32.load offset=1048988 - local.set 2 - block ;; label = @9 - block ;; label = @10 - i32.const 0 - i32.load offset=1048580 - local.tee 7 - i32.const 1 - local.get 3 - i32.const 3 - i32.shr_u - i32.shl - local.tee 3 - i32.and - i32.eqz - br_if 0 (;@10;) - local.get 6 - i32.load offset=8 - local.set 3 - br 1 (;@9;) - end - i32.const 0 - local.get 7 - local.get 3 - i32.or - i32.store offset=1048580 - local.get 6 - local.set 3 - end - local.get 6 - local.get 2 - i32.store offset=8 - local.get 3 - local.get 2 - i32.store offset=12 - local.get 2 - local.get 6 - i32.store offset=12 - local.get 2 - local.get 3 - i32.store offset=8 - end - i32.const 0 - local.get 4 - i32.store offset=1048988 - i32.const 0 - local.get 5 - i32.store offset=1048980 - local.get 0 - call 32 - local.set 6 - br 6 (;@1;) - end - i32.const 0 - local.get 8 - local.get 7 - i32.or - i32.store offset=1048580 - local.get 5 - local.set 7 - end - local.get 5 - local.get 3 - i32.store offset=8 - local.get 7 - local.get 3 - i32.store offset=12 - local.get 3 - local.get 5 - i32.store offset=12 - local.get 3 - local.get 7 - i32.store offset=8 - end - i32.const 0 + local.get 3 + i32.store offset=12 + local.get 3 local.get 4 - i32.store offset=1048988 - i32.const 0 + i32.store offset=12 + local.get 3 local.get 6 - i32.store offset=1048980 + i32.store offset=8 br 1 (;@3;) end local.get 0 local.get 6 local.get 2 i32.add - call 26 + call 29 end local.get 0 - call 32 + call 35 local.tee 6 br_if 1 (;@1;) end block ;; label = @2 - block ;; label = @3 - block ;; label = @4 - block ;; label = @5 - block ;; label = @6 - block ;; label = @7 - block ;; label = @8 - block ;; label = @9 - block ;; label = @10 - i32.const 0 - i32.load offset=1048980 - local.tee 6 - local.get 2 - i32.ge_u - br_if 0 (;@10;) - i32.const 0 - i32.load offset=1048984 - local.tee 0 - local.get 2 - i32.gt_u - br_if 2 (;@8;) - local.get 1 - i32.const 1048580 - local.get 2 - call 33 - local.tee 0 - i32.sub - local.get 0 - i32.const 8 - call 14 - i32.add - i32.const 20 - i32.const 8 - call 14 - i32.add - i32.const 16 - i32.const 8 - call 14 - i32.add - i32.const 8 - i32.add - i32.const 65536 - call 14 - call 43 - local.get 1 - i32.load - local.tee 6 - br_if 1 (;@9;) - i32.const 0 - local.set 6 - br 9 (;@1;) - end - i32.const 0 - i32.load offset=1048988 - local.set 0 - block ;; label = @10 - local.get 6 - local.get 2 - i32.sub - local.tee 6 - i32.const 16 - i32.const 8 - call 14 - i32.ge_u - br_if 0 (;@10;) - i32.const 0 - i32.const 0 - i32.store offset=1048988 - i32.const 0 - i32.load offset=1048980 - local.set 2 - i32.const 0 - i32.const 0 - i32.store offset=1048980 - local.get 0 - local.get 2 - call 26 - local.get 0 - call 32 - local.set 6 - br 9 (;@1;) - end - local.get 0 + block ;; label = @3 + block ;; label = @4 + block ;; label = @5 + block ;; label = @6 + block ;; label = @7 + block ;; label = @8 + block ;; label = @9 + i32.const 0 + i32.load offset=1049000 + local.tee 6 local.get 2 - call 30 - local.set 3 + i32.ge_u + br_if 0 (;@9;) i32.const 0 - local.get 6 - i32.store offset=1048980 + i32.load offset=1049004 + local.tee 0 + local.get 2 + i32.gt_u + br_if 2 (;@7;) + local.get 1 + i32.const 1048584 + local.get 2 + call 36 + local.tee 0 + i32.sub + local.get 0 + i32.const 8 + call 17 + i32.add + i32.const 20 + i32.const 8 + call 17 + i32.add + i32.const 16 + i32.const 8 + call 17 + i32.add + i32.const 8 + i32.add + i32.const 65536 + call 17 + call 46 + local.get 1 + i32.load + local.tee 6 + br_if 1 (;@8;) i32.const 0 - local.get 3 - i32.store offset=1048988 - local.get 3 + local.set 6 + br 8 (;@1;) + end + i32.const 0 + i32.load offset=1049008 + local.set 0 + block ;; label = @9 local.get 6 - call 28 + local.get 2 + i32.sub + local.tee 6 + i32.const 16 + i32.const 8 + call 17 + i32.ge_u + br_if 0 (;@9;) + i32.const 0 + i32.const 0 + i32.store offset=1049008 + i32.const 0 + i32.load offset=1049000 + local.set 2 + i32.const 0 + i32.const 0 + i32.store offset=1049000 local.get 0 local.get 2 - call 27 + call 29 local.get 0 - call 32 + call 35 local.set 6 br 8 (;@1;) end - local.get 1 - i32.load offset=8 - local.set 8 - i32.const 0 - i32.const 0 - i32.load offset=1048996 - local.get 1 - i32.load offset=4 - local.tee 5 - i32.add - local.tee 0 - i32.store offset=1048996 + local.get 0 + local.get 2 + call 33 + local.set 3 i32.const 0 + local.get 6 + i32.store offset=1049000 i32.const 0 - i32.load offset=1049000 - local.tee 3 - local.get 0 local.get 3 + i32.store offset=1049008 + local.get 3 + local.get 6 + call 31 local.get 0 - i32.gt_u - select - i32.store offset=1049000 + local.get 2 + call 30 + local.get 0 + call 35 + local.set 6 + br 7 (;@1;) + end + local.get 1 + i32.load offset=8 + local.set 8 + i32.const 0 + i32.const 0 + i32.load offset=1049016 + local.get 1 + i32.load offset=4 + local.tee 5 + i32.add + local.tee 0 + i32.store offset=1049016 + i32.const 0 + i32.const 0 + i32.load offset=1049020 + local.tee 3 + local.get 0 + local.get 3 + local.get 0 + i32.gt_u + select + i32.store offset=1049020 + block ;; label = @8 block ;; label = @9 block ;; label = @10 block ;; label = @11 i32.const 0 - i32.load offset=1048992 + i32.load offset=1049012 i32.eqz br_if 0 (;@11;) - i32.const 1049004 + i32.const 1048712 local.set 0 loop ;; label = @12 local.get 6 local.get 0 - call 42 + call 45 i32.eq br_if 2 (;@10;) local.get 0 @@ -1128,45 +1176,45 @@ end end i32.const 0 - i32.load offset=1049024 + i32.load offset=1049028 local.tee 0 i32.eqz - br_if 3 (;@7;) + br_if 5 (;@5;) local.get 6 local.get 0 i32.lt_u - br_if 3 (;@7;) + br_if 5 (;@5;) br 7 (;@3;) end local.get 0 - call 39 + call 42 br_if 0 (;@9;) local.get 0 - call 40 + call 43 local.get 8 i32.ne br_if 0 (;@9;) local.get 0 i32.const 0 - i32.load offset=1048992 - call 41 - br_if 3 (;@6;) + i32.load offset=1049012 + call 44 + br_if 1 (;@8;) end i32.const 0 i32.const 0 - i32.load offset=1049024 + i32.load offset=1049028 local.tee 0 local.get 6 local.get 6 local.get 0 i32.gt_u select - i32.store offset=1049024 + i32.store offset=1049028 local.get 6 local.get 5 i32.add local.set 3 - i32.const 1049004 + i32.const 1048712 local.set 0 block ;; label = @9 block ;; label = @10 @@ -1185,18 +1233,18 @@ end end local.get 0 - call 39 + call 42 br_if 0 (;@10;) local.get 0 - call 40 + call 43 local.get 8 i32.eq br_if 1 (;@9;) end i32.const 0 - i32.load offset=1048992 + i32.load offset=1049012 local.set 3 - i32.const 1049004 + i32.const 1048712 local.set 0 block ;; label = @10 loop ;; label = @11 @@ -1207,7 +1255,7 @@ i32.gt_u br_if 0 (;@12;) local.get 0 - call 42 + call 45 local.get 3 i32.gt_u br_if 2 (;@10;) @@ -1221,11 +1269,11 @@ local.set 0 end local.get 0 - call 42 + call 45 local.tee 4 i32.const 20 i32.const 8 - call 14 + call 17 local.tee 9 i32.sub i32.const -23 @@ -1234,10 +1282,10 @@ local.get 3 local.get 0 local.get 0 - call 32 + call 35 local.tee 7 i32.const 8 - call 14 + call 17 local.get 7 i32.sub i32.add @@ -1246,43 +1294,43 @@ local.get 3 i32.const 16 i32.const 8 - call 14 + call 17 i32.add i32.lt_u select local.tee 7 - call 32 + call 35 local.set 10 local.get 7 local.get 9 - call 30 - local.set 0 call 33 + local.set 0 + call 36 local.tee 11 i32.const 8 - call 14 + call 17 local.set 12 i32.const 20 i32.const 8 - call 14 + call 17 local.set 13 i32.const 16 i32.const 8 - call 14 + call 17 local.set 14 i32.const 0 local.get 6 local.get 6 - call 32 + call 35 local.tee 15 i32.const 8 - call 14 + call 17 local.get 15 i32.sub local.tee 16 - call 30 + call 33 local.tee 15 - i32.store offset=1048992 + i32.store offset=1049012 i32.const 0 local.get 11 local.get 5 @@ -1296,28 +1344,28 @@ i32.add i32.sub local.tee 11 - i32.store offset=1048984 + i32.store offset=1049004 local.get 15 local.get 11 i32.const 1 i32.or i32.store offset=4 - call 33 + call 36 local.tee 12 i32.const 8 - call 14 + call 17 local.set 13 i32.const 20 i32.const 8 - call 14 + call 17 local.set 14 i32.const 16 i32.const 8 - call 14 + call 17 local.set 16 local.get 15 local.get 11 - call 30 + call 33 local.get 16 local.get 14 local.get 13 @@ -1328,41 +1376,41 @@ i32.store offset=4 i32.const 0 i32.const 2097152 - i32.store offset=1049020 + i32.store offset=1049024 local.get 7 local.get 9 - call 27 + call 30 i32.const 0 - i64.load offset=1049004 align=4 + i64.load offset=1048712 align=4 local.set 17 local.get 10 i32.const 8 i32.add i32.const 0 - i64.load offset=1049012 align=4 + i64.load offset=1048720 align=4 i64.store align=4 local.get 10 local.get 17 i64.store align=4 i32.const 0 local.get 8 - i32.store offset=1049016 + i32.store offset=1048724 i32.const 0 local.get 5 - i32.store offset=1049008 + i32.store offset=1048716 i32.const 0 local.get 6 - i32.store offset=1049004 + i32.store offset=1048712 i32.const 0 local.get 10 - i32.store offset=1049012 + i32.store offset=1048720 loop ;; label = @10 local.get 0 i32.const 4 - call 30 + call 33 local.set 6 local.get 0 - call 18 + call 21 i32.store offset=4 local.get 6 local.set 0 @@ -1385,8 +1433,8 @@ local.get 0 local.get 3 local.get 0 - call 30 - call 29 + call 33 + call 32 block ;; label = @10 local.get 0 i32.const 256 @@ -1394,19 +1442,19 @@ br_if 0 (;@10;) local.get 3 local.get 0 - call 8 + call 11 br 8 (;@2;) end local.get 0 i32.const -8 i32.and - i32.const 1048588 + i32.const 1048728 i32.add local.set 6 block ;; label = @10 block ;; label = @11 i32.const 0 - i32.load offset=1048580 + i32.load offset=1048992 local.tee 4 i32.const 1 local.get 0 @@ -1426,7 +1474,7 @@ local.get 4 local.get 0 i32.or - i32.store offset=1048580 + i32.store offset=1048992 local.get 6 local.set 0 end @@ -1457,16 +1505,16 @@ i32.add i32.store offset=4 local.get 6 - call 32 + call 35 local.tee 0 i32.const 8 - call 14 + call 17 local.set 3 local.get 4 - call 32 + call 35 local.tee 5 i32.const 8 - call 14 + call 17 local.set 7 local.get 6 local.get 3 @@ -1475,11 +1523,11 @@ i32.add local.tee 6 local.get 2 - call 30 + call 33 local.set 3 local.get 6 local.get 2 - call 27 + call 30 local.get 4 local.get 7 local.get 5 @@ -1494,27 +1542,27 @@ block ;; label = @9 local.get 0 i32.const 0 - i32.load offset=1048992 + i32.load offset=1049012 i32.eq br_if 0 (;@9;) local.get 0 i32.const 0 - i32.load offset=1048988 + i32.load offset=1049008 i32.eq - br_if 4 (;@5;) + br_if 3 (;@6;) local.get 0 - call 23 + call 26 br_if 5 (;@4;) block ;; label = @10 block ;; label = @11 local.get 0 - call 19 + call 22 local.tee 4 i32.const 256 i32.lt_u br_if 0 (;@11;) local.get 0 - call 7 + call 10 br 1 (;@10;) end block ;; label = @11 @@ -1540,14 +1588,14 @@ end i32.const 0 i32.const 0 - i32.load offset=1048580 + i32.load offset=1048992 i32.const -2 local.get 4 i32.const 3 i32.shr_u i32.rotl i32.and - i32.store offset=1048580 + i32.store offset=1048992 end local.get 4 local.get 2 @@ -1555,99 +1603,99 @@ local.set 2 local.get 0 local.get 4 - call 30 + call 33 local.set 0 br 5 (;@4;) end i32.const 0 local.get 3 - i32.store offset=1048992 + i32.store offset=1049012 i32.const 0 i32.const 0 - i32.load offset=1048984 + i32.load offset=1049004 local.get 2 i32.add local.tee 0 - i32.store offset=1048984 + i32.store offset=1049004 local.get 3 local.get 0 i32.const 1 i32.or i32.store offset=4 local.get 6 - call 32 + call 35 local.set 6 br 7 (;@1;) end - i32.const 0 local.get 0 - local.get 2 - i32.sub - local.tee 6 - i32.store offset=1048984 + local.get 0 + i32.load offset=4 + local.get 5 + i32.add + i32.store offset=4 i32.const 0 + i32.load offset=1049012 i32.const 0 - i32.load offset=1048992 - local.tee 0 - local.get 2 - call 30 - local.tee 3 - i32.store offset=1048992 - local.get 3 - local.get 6 - i32.const 1 - i32.or - i32.store offset=4 - local.get 0 - local.get 2 - call 27 - local.get 0 - call 32 - local.set 6 - br 6 (;@1;) + i32.load offset=1049004 + local.get 5 + i32.add + call 14 + br 5 (;@2;) end i32.const 0 + local.get 0 + local.get 2 + i32.sub + local.tee 6 + i32.store offset=1049004 + i32.const 0 + i32.const 0 + i32.load offset=1049012 + local.tee 0 + local.get 2 + call 33 + local.tee 3 + i32.store offset=1049012 + local.get 3 local.get 6 - i32.store offset=1049024 - br 3 (;@3;) + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + local.get 2 + call 30 + local.get 0 + call 35 + local.set 6 + br 5 (;@1;) end - local.get 0 - local.get 0 - i32.load offset=4 - local.get 5 - i32.add - i32.store offset=4 i32.const 0 - i32.load offset=1048992 + local.get 3 + i32.store offset=1049008 i32.const 0 - i32.load offset=1048984 - local.get 5 + i32.const 0 + i32.load offset=1049000 + local.get 2 i32.add - call 11 - br 3 (;@2;) + local.tee 0 + i32.store offset=1049000 + local.get 3 + local.get 0 + call 31 + local.get 6 + call 35 + local.set 6 + br 4 (;@1;) end i32.const 0 - local.get 3 - i32.store offset=1048988 - i32.const 0 - i32.const 0 - i32.load offset=1048980 - local.get 2 - i32.add - local.tee 0 - i32.store offset=1048980 - local.get 3 - local.get 0 - call 28 local.get 6 - call 32 - local.set 6 - br 3 (;@1;) + i32.store offset=1049028 + br 1 (;@3;) end local.get 3 local.get 2 local.get 0 - call 29 + call 32 block ;; label = @4 local.get 2 i32.const 256 @@ -1655,22 +1703,22 @@ br_if 0 (;@4;) local.get 3 local.get 2 - call 8 + call 11 local.get 6 - call 32 + call 35 local.set 6 br 3 (;@1;) end local.get 2 i32.const -8 i32.and - i32.const 1048588 + i32.const 1048728 i32.add local.set 0 block ;; label = @4 block ;; label = @5 i32.const 0 - i32.load offset=1048580 + i32.load offset=1048992 local.tee 4 i32.const 1 local.get 2 @@ -1690,7 +1738,7 @@ local.get 4 local.get 2 i32.or - i32.store offset=1048580 + i32.store offset=1048992 local.get 0 local.set 2 end @@ -1707,240 +1755,240 @@ local.get 2 i32.store offset=8 local.get 6 - call 32 + call 35 local.set 6 br 2 (;@1;) end i32.const 0 i32.const 4095 - i32.store offset=1049028 + i32.store offset=1049032 i32.const 0 local.get 8 - i32.store offset=1049016 + i32.store offset=1048724 i32.const 0 local.get 5 - i32.store offset=1049008 + i32.store offset=1048716 i32.const 0 local.get 6 - i32.store offset=1049004 + i32.store offset=1048712 i32.const 0 - i32.const 1048588 - i32.store offset=1048600 + i32.const 1048728 + i32.store offset=1048740 i32.const 0 - i32.const 1048596 - i32.store offset=1048608 + i32.const 1048736 + i32.store offset=1048748 i32.const 0 - i32.const 1048588 - i32.store offset=1048596 + i32.const 1048728 + i32.store offset=1048736 i32.const 0 - i32.const 1048604 - i32.store offset=1048616 + i32.const 1048744 + i32.store offset=1048756 i32.const 0 - i32.const 1048596 - i32.store offset=1048604 + i32.const 1048736 + i32.store offset=1048744 i32.const 0 - i32.const 1048612 - i32.store offset=1048624 + i32.const 1048752 + i32.store offset=1048764 i32.const 0 - i32.const 1048604 - i32.store offset=1048612 + i32.const 1048744 + i32.store offset=1048752 i32.const 0 - i32.const 1048620 - i32.store offset=1048632 + i32.const 1048760 + i32.store offset=1048772 i32.const 0 - i32.const 1048612 - i32.store offset=1048620 + i32.const 1048752 + i32.store offset=1048760 i32.const 0 - i32.const 1048628 - i32.store offset=1048640 + i32.const 1048768 + i32.store offset=1048780 i32.const 0 - i32.const 1048620 - i32.store offset=1048628 + i32.const 1048760 + i32.store offset=1048768 i32.const 0 - i32.const 1048636 - i32.store offset=1048648 + i32.const 1048776 + i32.store offset=1048788 i32.const 0 - i32.const 1048628 - i32.store offset=1048636 + i32.const 1048768 + i32.store offset=1048776 i32.const 0 - i32.const 1048644 - i32.store offset=1048656 + i32.const 1048784 + i32.store offset=1048796 i32.const 0 - i32.const 1048636 - i32.store offset=1048644 + i32.const 1048776 + i32.store offset=1048784 i32.const 0 - i32.const 1048652 - i32.store offset=1048664 + i32.const 1048792 + i32.store offset=1048804 i32.const 0 - i32.const 1048644 - i32.store offset=1048652 + i32.const 1048784 + i32.store offset=1048792 i32.const 0 - i32.const 1048652 - i32.store offset=1048660 + i32.const 1048792 + i32.store offset=1048800 i32.const 0 - i32.const 1048660 - i32.store offset=1048672 + i32.const 1048800 + i32.store offset=1048812 i32.const 0 - i32.const 1048660 - i32.store offset=1048668 + i32.const 1048800 + i32.store offset=1048808 i32.const 0 - i32.const 1048668 - i32.store offset=1048680 + i32.const 1048808 + i32.store offset=1048820 i32.const 0 - i32.const 1048668 - i32.store offset=1048676 + i32.const 1048808 + i32.store offset=1048816 i32.const 0 - i32.const 1048676 - i32.store offset=1048688 + i32.const 1048816 + i32.store offset=1048828 i32.const 0 - i32.const 1048676 - i32.store offset=1048684 + i32.const 1048816 + i32.store offset=1048824 i32.const 0 - i32.const 1048684 - i32.store offset=1048696 + i32.const 1048824 + i32.store offset=1048836 i32.const 0 - i32.const 1048684 - i32.store offset=1048692 + i32.const 1048824 + i32.store offset=1048832 i32.const 0 - i32.const 1048692 - i32.store offset=1048704 + i32.const 1048832 + i32.store offset=1048844 i32.const 0 - i32.const 1048692 - i32.store offset=1048700 + i32.const 1048832 + i32.store offset=1048840 i32.const 0 - i32.const 1048700 - i32.store offset=1048712 + i32.const 1048840 + i32.store offset=1048852 i32.const 0 - i32.const 1048700 - i32.store offset=1048708 + i32.const 1048840 + i32.store offset=1048848 i32.const 0 - i32.const 1048708 - i32.store offset=1048720 + i32.const 1048848 + i32.store offset=1048860 i32.const 0 - i32.const 1048708 - i32.store offset=1048716 + i32.const 1048848 + i32.store offset=1048856 i32.const 0 - i32.const 1048716 - i32.store offset=1048728 + i32.const 1048856 + i32.store offset=1048868 i32.const 0 - i32.const 1048724 - i32.store offset=1048736 + i32.const 1048864 + i32.store offset=1048876 i32.const 0 - i32.const 1048716 - i32.store offset=1048724 + i32.const 1048856 + i32.store offset=1048864 i32.const 0 - i32.const 1048732 - i32.store offset=1048744 + i32.const 1048872 + i32.store offset=1048884 i32.const 0 - i32.const 1048724 - i32.store offset=1048732 + i32.const 1048864 + i32.store offset=1048872 i32.const 0 - i32.const 1048740 - i32.store offset=1048752 + i32.const 1048880 + i32.store offset=1048892 i32.const 0 - i32.const 1048732 - i32.store offset=1048740 + i32.const 1048872 + i32.store offset=1048880 i32.const 0 - i32.const 1048748 - i32.store offset=1048760 + i32.const 1048888 + i32.store offset=1048900 i32.const 0 - i32.const 1048740 - i32.store offset=1048748 + i32.const 1048880 + i32.store offset=1048888 i32.const 0 - i32.const 1048756 - i32.store offset=1048768 + i32.const 1048896 + i32.store offset=1048908 i32.const 0 - i32.const 1048748 - i32.store offset=1048756 + i32.const 1048888 + i32.store offset=1048896 i32.const 0 - i32.const 1048764 - i32.store offset=1048776 + i32.const 1048904 + i32.store offset=1048916 i32.const 0 - i32.const 1048756 - i32.store offset=1048764 + i32.const 1048896 + i32.store offset=1048904 i32.const 0 - i32.const 1048772 - i32.store offset=1048784 + i32.const 1048912 + i32.store offset=1048924 i32.const 0 - i32.const 1048764 - i32.store offset=1048772 + i32.const 1048904 + i32.store offset=1048912 i32.const 0 - i32.const 1048780 - i32.store offset=1048792 + i32.const 1048920 + i32.store offset=1048932 i32.const 0 - i32.const 1048772 - i32.store offset=1048780 + i32.const 1048912 + i32.store offset=1048920 i32.const 0 - i32.const 1048788 - i32.store offset=1048800 + i32.const 1048928 + i32.store offset=1048940 i32.const 0 - i32.const 1048780 - i32.store offset=1048788 + i32.const 1048920 + i32.store offset=1048928 i32.const 0 - i32.const 1048796 - i32.store offset=1048808 + i32.const 1048936 + i32.store offset=1048948 i32.const 0 - i32.const 1048788 - i32.store offset=1048796 + i32.const 1048928 + i32.store offset=1048936 i32.const 0 - i32.const 1048804 - i32.store offset=1048816 + i32.const 1048944 + i32.store offset=1048956 i32.const 0 - i32.const 1048796 - i32.store offset=1048804 + i32.const 1048936 + i32.store offset=1048944 i32.const 0 - i32.const 1048812 - i32.store offset=1048824 + i32.const 1048952 + i32.store offset=1048964 i32.const 0 - i32.const 1048804 - i32.store offset=1048812 + i32.const 1048944 + i32.store offset=1048952 i32.const 0 - i32.const 1048820 - i32.store offset=1048832 + i32.const 1048960 + i32.store offset=1048972 i32.const 0 - i32.const 1048812 - i32.store offset=1048820 + i32.const 1048952 + i32.store offset=1048960 i32.const 0 - i32.const 1048828 - i32.store offset=1048840 + i32.const 1048968 + i32.store offset=1048980 i32.const 0 - i32.const 1048820 - i32.store offset=1048828 + i32.const 1048960 + i32.store offset=1048968 i32.const 0 - i32.const 1048836 - i32.store offset=1048848 + i32.const 1048976 + i32.store offset=1048988 i32.const 0 - i32.const 1048828 - i32.store offset=1048836 + i32.const 1048968 + i32.store offset=1048976 i32.const 0 - i32.const 1048836 - i32.store offset=1048844 - call 33 + i32.const 1048976 + i32.store offset=1048984 + call 36 local.tee 3 i32.const 8 - call 14 + call 17 local.set 4 i32.const 20 i32.const 8 - call 14 + call 17 local.set 7 i32.const 16 i32.const 8 - call 14 + call 17 local.set 8 i32.const 0 local.get 6 local.get 6 - call 32 + call 35 local.tee 0 i32.const 8 - call 14 + call 17 local.get 0 i32.sub local.tee 10 - call 30 + call 33 local.tee 0 - i32.store offset=1048992 + i32.store offset=1049012 i32.const 0 local.get 3 local.get 5 @@ -1954,28 +2002,28 @@ i32.add i32.sub local.tee 6 - i32.store offset=1048984 + i32.store offset=1049004 local.get 0 local.get 6 i32.const 1 i32.or i32.store offset=4 - call 33 + call 36 local.tee 3 i32.const 8 - call 14 + call 17 local.set 4 i32.const 20 i32.const 8 - call 14 + call 17 local.set 5 i32.const 16 i32.const 8 - call 14 + call 17 local.set 7 local.get 0 local.get 6 - call 30 + call 33 local.get 7 local.get 5 local.get 4 @@ -1986,12 +2034,12 @@ i32.store offset=4 i32.const 0 i32.const 2097152 - i32.store offset=1049020 + i32.store offset=1049024 end i32.const 0 local.set 6 i32.const 0 - i32.load offset=1048984 + i32.load offset=1049004 local.tee 0 local.get 2 i32.le_u @@ -2001,15 +2049,15 @@ local.get 2 i32.sub local.tee 6 - i32.store offset=1048984 + i32.store offset=1049004 i32.const 0 i32.const 0 - i32.load offset=1048992 + i32.load offset=1049012 local.tee 0 local.get 2 - call 30 + call 33 local.tee 3 - i32.store offset=1048992 + i32.store offset=1049012 local.get 3 local.get 6 i32.const 1 @@ -2017,9 +2065,9 @@ i32.store offset=4 local.get 0 local.get 2 - call 27 + call 30 local.get 0 - call 32 + call 35 local.set 6 end local.get 1 @@ -2028,17 +2076,17 @@ global.set 0 local.get 6 ) - (func (;6;) (type 4) (param i32 i32) + (func (;9;) (type 4) (param i32 i32) (local i32 i32 i32 i32) local.get 0 local.get 1 - call 30 + call 33 local.set 2 block ;; label = @1 block ;; label = @2 block ;; label = @3 local.get 0 - call 21 + call 24 br_if 0 (;@3;) local.get 0 i32.load @@ -2046,7 +2094,7 @@ block ;; label = @4 block ;; label = @5 local.get 0 - call 24 + call 27 br_if 0 (;@5;) local.get 3 local.get 1 @@ -2054,10 +2102,10 @@ local.set 1 local.get 0 local.get 3 - call 31 + call 34 local.tee 0 i32.const 0 - i32.load offset=1048988 + i32.load offset=1049008 i32.ne br_if 1 (;@4;) local.get 2 @@ -2069,14 +2117,14 @@ br_if 2 (;@3;) i32.const 0 local.get 1 - i32.store offset=1048980 + i32.store offset=1049000 local.get 0 local.get 1 local.get 2 - call 29 + call 32 return end - i32.const 1048580 + i32.const 1048584 local.get 0 local.get 3 i32.sub @@ -2086,15 +2134,15 @@ i32.const 16 i32.add local.tee 0 - call 46 + call 49 i32.eqz br_if 2 (;@2;) i32.const 0 i32.const 0 - i32.load offset=1048996 + i32.load offset=1049016 local.get 0 i32.sub - i32.store offset=1048996 + i32.store offset=1049016 return end block ;; label = @4 @@ -2103,7 +2151,7 @@ i32.lt_u br_if 0 (;@4;) local.get 0 - call 7 + call 10 br 1 (;@3;) end block ;; label = @4 @@ -2129,63 +2177,63 @@ end i32.const 0 i32.const 0 - i32.load offset=1048580 + i32.load offset=1048992 i32.const -2 local.get 3 i32.const 3 i32.shr_u i32.rotl i32.and - i32.store offset=1048580 + i32.store offset=1048992 end block ;; label = @3 local.get 2 - call 20 + call 23 i32.eqz br_if 0 (;@3;) local.get 0 local.get 1 local.get 2 - call 29 + call 32 br 2 (;@1;) end block ;; label = @3 block ;; label = @4 local.get 2 i32.const 0 - i32.load offset=1048992 + i32.load offset=1049012 i32.eq br_if 0 (;@4;) local.get 2 i32.const 0 - i32.load offset=1048988 + i32.load offset=1049008 i32.ne br_if 1 (;@3;) i32.const 0 local.get 0 - i32.store offset=1048988 + i32.store offset=1049008 i32.const 0 i32.const 0 - i32.load offset=1048980 + i32.load offset=1049000 local.get 1 i32.add local.tee 1 - i32.store offset=1048980 + i32.store offset=1049000 local.get 0 local.get 1 - call 28 + call 31 return end i32.const 0 local.get 0 - i32.store offset=1048992 + i32.store offset=1049012 i32.const 0 i32.const 0 - i32.load offset=1048984 + i32.load offset=1049004 local.get 1 i32.add local.tee 1 - i32.store offset=1048984 + i32.store offset=1049004 local.get 0 local.get 1 i32.const 1 @@ -2193,19 +2241,19 @@ i32.store offset=4 local.get 0 i32.const 0 - i32.load offset=1048988 + i32.load offset=1049008 i32.ne br_if 1 (;@2;) i32.const 0 i32.const 0 - i32.store offset=1048980 + i32.store offset=1049000 i32.const 0 i32.const 0 - i32.store offset=1048988 + i32.store offset=1049008 return end local.get 2 - call 19 + call 22 local.tee 3 local.get 1 i32.add @@ -2217,7 +2265,7 @@ i32.lt_u br_if 0 (;@4;) local.get 2 - call 7 + call 10 br 1 (;@3;) end block ;; label = @4 @@ -2243,26 +2291,26 @@ end i32.const 0 i32.const 0 - i32.load offset=1048580 + i32.load offset=1048992 i32.const -2 local.get 3 i32.const 3 i32.shr_u i32.rotl i32.and - i32.store offset=1048580 + i32.store offset=1048992 end local.get 0 local.get 1 - call 28 + call 31 local.get 0 i32.const 0 - i32.load offset=1048988 + i32.load offset=1049008 i32.ne br_if 1 (;@1;) i32.const 0 local.get 1 - i32.store offset=1048980 + i32.store offset=1049000 end return end @@ -2273,19 +2321,19 @@ br_if 0 (;@1;) local.get 0 local.get 1 - call 8 + call 11 return end local.get 1 i32.const -8 i32.and - i32.const 1048588 + i32.const 1048728 i32.add local.set 2 block ;; label = @1 block ;; label = @2 i32.const 0 - i32.load offset=1048580 + i32.load offset=1048992 local.tee 3 i32.const 1 local.get 1 @@ -2305,7 +2353,7 @@ local.get 3 local.get 1 i32.or - i32.store offset=1048580 + i32.store offset=1048992 local.get 2 local.set 1 end @@ -2322,7 +2370,7 @@ local.get 1 i32.store offset=8 ) - (func (;7;) (type 5) (param i32) + (func (;10;) (type 5) (param i32) (local i32 i32 i32 i32 i32) local.get 0 i32.load offset=24 @@ -2331,7 +2379,7 @@ block ;; label = @2 block ;; label = @3 local.get 0 - call 37 + call 40 local.get 0 i32.ne br_if 0 (;@3;) @@ -2350,20 +2398,20 @@ local.tee 4 br_if 1 (;@2;) i32.const 0 - local.set 3 + local.set 2 br 2 (;@1;) end local.get 0 - call 38 + call 41 local.tee 4 local.get 0 - call 37 - local.tee 3 - call 36 + call 40 + local.tee 2 + call 39 i32.store offset=12 - local.get 3 + local.get 2 local.get 4 - call 36 + call 39 i32.store offset=8 br 1 (;@1;) end @@ -2373,28 +2421,31 @@ i32.add local.get 3 select - local.set 2 + local.set 3 loop ;; label = @2 - local.get 2 + local.get 3 local.set 5 - block ;; label = @3 - local.get 4 - local.tee 3 - i32.const 20 - i32.add - local.tee 2 - i32.load - local.tee 4 - br_if 0 (;@3;) - local.get 3 - i32.const 16 - i32.add - local.set 2 - local.get 3 - i32.load offset=16 - local.set 4 - end local.get 4 + local.tee 2 + i32.const 20 + i32.add + local.tee 4 + local.get 2 + i32.const 16 + i32.add + local.get 4 + i32.load + local.tee 4 + select + local.set 3 + local.get 2 + i32.const 20 + i32.const 16 + local.get 4 + select + i32.add + i32.load + local.tee 4 br_if 0 (;@2;) end local.get 5 @@ -2411,7 +2462,7 @@ i32.load offset=28 i32.const 2 i32.shl - i32.const 1048852 + i32.const 1048584 i32.add local.tee 4 i32.load @@ -2427,29 +2478,30 @@ i32.eq select i32.add - local.get 3 + local.get 2 i32.store - local.get 3 - br_if 1 (;@2;) - br 2 (;@1;) + local.get 2 + i32.eqz + br_if 2 (;@1;) + br 1 (;@2;) end local.get 4 - local.get 3 + local.get 2 i32.store - local.get 3 + local.get 2 br_if 0 (;@2;) i32.const 0 i32.const 0 - i32.load offset=1048584 + i32.load offset=1048996 i32.const -2 local.get 0 i32.load offset=28 i32.rotl i32.and - i32.store offset=1048584 + i32.store offset=1048996 return end - local.get 3 + local.get 2 local.get 1 i32.store offset=24 block ;; label = @2 @@ -2458,11 +2510,11 @@ local.tee 4 i32.eqz br_if 0 (;@2;) - local.get 3 + local.get 2 local.get 4 i32.store offset=16 local.get 4 - local.get 3 + local.get 2 i32.store offset=24 end local.get 0 @@ -2472,18 +2524,18 @@ local.tee 4 i32.eqz br_if 0 (;@1;) - local.get 3 + local.get 2 i32.const 20 i32.add local.get 4 i32.store local.get 4 - local.get 3 + local.get 2 i32.store offset=24 return end ) - (func (;8;) (type 4) (param i32 i32) + (func (;11;) (type 4) (param i32 i32) (local i32 i32 i32 i32 i32) i32.const 0 local.set 2 @@ -2526,11 +2578,11 @@ local.get 2 i32.const 2 i32.shl - i32.const 1048852 + i32.const 1048584 i32.add local.set 3 local.get 0 - call 36 + call 39 local.set 4 block ;; label = @1 block ;; label = @2 @@ -2538,7 +2590,7 @@ block ;; label = @4 block ;; label = @5 i32.const 0 - i32.load offset=1048584 + i32.load offset=1048996 local.tee 5 i32.const 1 local.get 2 @@ -2551,11 +2603,11 @@ i32.load local.set 5 local.get 2 - call 17 + call 20 local.set 2 local.get 5 - call 36 - call 19 + call 39 + call 22 local.get 1 i32.ne br_if 1 (;@4;) @@ -2567,7 +2619,7 @@ local.get 5 local.get 6 i32.or - i32.store offset=1048584 + i32.store offset=1048996 local.get 3 local.get 0 i32.store @@ -2602,15 +2654,15 @@ local.get 2 local.set 5 local.get 2 - call 36 - call 19 + call 39 + call 22 local.get 1 i32.ne br_if 0 (;@4;) end end local.get 2 - call 36 + call 39 local.tee 2 i32.load offset=8 local.tee 3 @@ -2644,7 +2696,7 @@ local.get 4 i32.store offset=12 ) - (func (;9;) (type 6) (result i32) + (func (;12;) (type 6) (result i32) (local i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32) i32.const 0 local.set 0 @@ -2652,11 +2704,11 @@ local.set 1 block ;; label = @1 i32.const 0 - i32.load offset=1049012 + i32.load offset=1048720 local.tee 2 i32.eqz br_if 0 (;@1;) - i32.const 1049004 + i32.const 1048712 local.set 3 i32.const 0 local.set 1 @@ -2675,46 +2727,46 @@ local.set 6 block ;; label = @3 block ;; label = @4 - i32.const 1048580 + i32.const 1048584 local.get 4 i32.const 12 i32.add i32.load i32.const 1 i32.shr_u - call 47 + call 50 i32.eqz br_if 0 (;@4;) local.get 4 - call 39 + call 42 br_if 0 (;@4;) local.get 6 local.get 6 - call 32 + call 35 local.tee 7 i32.const 8 - call 14 + call 17 local.get 7 i32.sub i32.add local.tee 7 - call 19 + call 22 local.set 8 - call 33 + call 36 local.tee 9 i32.const 8 - call 14 + call 17 local.set 10 i32.const 20 i32.const 8 - call 14 + call 17 local.set 11 i32.const 16 i32.const 8 - call 14 + call 17 local.set 12 local.get 7 - call 23 + call 26 br_if 0 (;@4;) local.get 7 local.get 8 @@ -2736,37 +2788,37 @@ block ;; label = @6 local.get 7 i32.const 0 - i32.load offset=1048988 + i32.load offset=1049008 i32.eq br_if 0 (;@6;) local.get 7 - call 7 + call 10 br 1 (;@5;) end i32.const 0 i32.const 0 - i32.store offset=1048980 + i32.store offset=1049000 i32.const 0 i32.const 0 - i32.store offset=1048988 + i32.store offset=1049008 end block ;; label = @5 - i32.const 1048580 + i32.const 1048584 local.get 6 local.get 5 - call 46 + call 49 br_if 0 (;@5;) local.get 7 local.get 8 - call 8 + call 11 br 1 (;@4;) end i32.const 0 i32.const 0 - i32.load offset=1048996 + i32.load offset=1049016 local.get 5 i32.sub - i32.store offset=1048996 + i32.store offset=1049016 local.get 3 local.get 2 i32.store offset=8 @@ -2794,25 +2846,25 @@ i32.const 4095 i32.gt_u select - i32.store offset=1049028 + i32.store offset=1049032 local.get 1 ) - (func (;10;) (type 5) (param i32) + (func (;13;) (type 5) (param i32) (local i32 i32 i32 i32 i32 i32) local.get 0 - call 34 + call 37 local.set 0 local.get 0 local.get 0 - call 19 + call 22 local.tee 1 - call 30 + call 33 local.set 2 block ;; label = @1 block ;; label = @2 block ;; label = @3 local.get 0 - call 21 + call 24 br_if 0 (;@3;) local.get 0 i32.load @@ -2820,7 +2872,7 @@ block ;; label = @4 block ;; label = @5 local.get 0 - call 24 + call 27 br_if 0 (;@5;) local.get 3 local.get 1 @@ -2828,10 +2880,10 @@ local.set 1 local.get 0 local.get 3 - call 31 + call 34 local.tee 0 i32.const 0 - i32.load offset=1048988 + i32.load offset=1049008 i32.ne br_if 1 (;@4;) local.get 2 @@ -2843,14 +2895,14 @@ br_if 2 (;@3;) i32.const 0 local.get 1 - i32.store offset=1048980 + i32.store offset=1049000 local.get 0 local.get 1 local.get 2 - call 29 + call 32 return end - i32.const 1048580 + i32.const 1048584 local.get 0 local.get 3 i32.sub @@ -2860,15 +2912,15 @@ i32.const 16 i32.add local.tee 0 - call 46 + call 49 i32.eqz br_if 2 (;@2;) i32.const 0 i32.const 0 - i32.load offset=1048996 + i32.load offset=1049016 local.get 0 i32.sub - i32.store offset=1048996 + i32.store offset=1049016 return end block ;; label = @4 @@ -2877,7 +2929,7 @@ i32.lt_u br_if 0 (;@4;) local.get 0 - call 7 + call 10 br 1 (;@3;) end block ;; label = @4 @@ -2903,25 +2955,25 @@ end i32.const 0 i32.const 0 - i32.load offset=1048580 + i32.load offset=1048992 i32.const -2 local.get 3 i32.const 3 i32.shr_u i32.rotl i32.and - i32.store offset=1048580 + i32.store offset=1048992 end block ;; label = @3 block ;; label = @4 local.get 2 - call 20 + call 23 i32.eqz br_if 0 (;@4;) local.get 0 local.get 1 local.get 2 - call 29 + call 32 br 1 (;@3;) end block ;; label = @4 @@ -2930,39 +2982,39 @@ block ;; label = @7 local.get 2 i32.const 0 - i32.load offset=1048992 + i32.load offset=1049012 i32.eq br_if 0 (;@7;) local.get 2 i32.const 0 - i32.load offset=1048988 + i32.load offset=1049008 i32.ne br_if 1 (;@6;) i32.const 0 local.get 0 - i32.store offset=1048988 + i32.store offset=1049008 i32.const 0 i32.const 0 - i32.load offset=1048980 + i32.load offset=1049000 local.get 1 i32.add local.tee 1 - i32.store offset=1048980 + i32.store offset=1049000 local.get 0 local.get 1 - call 28 + call 31 return end i32.const 0 local.get 0 - i32.store offset=1048992 + i32.store offset=1049012 i32.const 0 i32.const 0 - i32.load offset=1048984 + i32.load offset=1049004 local.get 1 i32.add local.tee 1 - i32.store offset=1048984 + i32.store offset=1049004 local.get 0 local.get 1 i32.const 1 @@ -2970,13 +3022,13 @@ i32.store offset=4 local.get 0 i32.const 0 - i32.load offset=1048988 + i32.load offset=1049008 i32.eq br_if 1 (;@5;) br 2 (;@4;) end local.get 2 - call 19 + call 22 local.tee 3 local.get 1 i32.add @@ -2988,7 +3040,7 @@ i32.lt_u br_if 0 (;@7;) local.get 2 - call 7 + call 10 br 1 (;@6;) end block ;; label = @7 @@ -3014,57 +3066,57 @@ end i32.const 0 i32.const 0 - i32.load offset=1048580 + i32.load offset=1048992 i32.const -2 local.get 3 i32.const 3 i32.shr_u i32.rotl i32.and - i32.store offset=1048580 + i32.store offset=1048992 end local.get 0 local.get 1 - call 28 + call 31 local.get 0 i32.const 0 - i32.load offset=1048988 + i32.load offset=1049008 i32.ne br_if 2 (;@3;) i32.const 0 local.get 1 - i32.store offset=1048980 + i32.store offset=1049000 br 3 (;@2;) end i32.const 0 i32.const 0 - i32.store offset=1048980 + i32.store offset=1049000 i32.const 0 i32.const 0 - i32.store offset=1048988 + i32.store offset=1049008 end i32.const 0 - i32.load offset=1049020 + i32.load offset=1049024 local.get 1 i32.ge_u br_if 1 (;@2;) - call 33 + call 36 local.tee 0 i32.const 8 - call 14 + call 17 local.set 1 i32.const 20 i32.const 8 - call 14 + call 17 local.set 2 i32.const 16 i32.const 8 - call 14 + call 17 local.set 3 i32.const 0 i32.const 16 i32.const 8 - call 14 + call 17 i32.const 2 i32.shl i32.sub @@ -3090,27 +3142,27 @@ i32.eqz br_if 1 (;@2;) i32.const 0 - i32.load offset=1048992 + i32.load offset=1049012 i32.eqz br_if 1 (;@2;) - call 33 + call 36 local.tee 0 i32.const 8 - call 14 + call 17 local.set 1 i32.const 20 i32.const 8 - call 14 + call 17 local.set 3 i32.const 16 i32.const 8 - call 14 + call 17 local.set 4 i32.const 0 local.set 2 block ;; label = @4 i32.const 0 - i32.load offset=1048984 + i32.load offset=1049004 local.tee 5 local.get 4 local.get 3 @@ -3124,16 +3176,19 @@ br_if 0 (;@4;) local.get 5 local.get 0 - i32.const -1 - i32.xor + i32.sub + i32.const 65535 i32.add i32.const -65536 i32.and + local.tee 4 + i32.const -65536 + i32.add local.set 3 i32.const 0 - i32.load offset=1048992 + i32.load offset=1049012 local.set 1 - i32.const 1049004 + i32.const 1048712 local.set 0 block ;; label = @5 loop ;; label = @6 @@ -3144,7 +3199,7 @@ i32.gt_u br_if 0 (;@7;) local.get 0 - call 42 + call 45 local.get 1 i32.gt_u br_if 2 (;@5;) @@ -3160,16 +3215,16 @@ i32.const 0 local.set 2 local.get 0 - call 39 + call 42 br_if 0 (;@4;) - i32.const 1048580 + i32.const 1048584 local.get 0 i32.const 12 i32.add i32.load i32.const 1 i32.shr_u - call 47 + call 50 i32.eqz br_if 0 (;@4;) local.get 0 @@ -3177,19 +3232,19 @@ local.get 3 i32.lt_u br_if 0 (;@4;) - i32.const 1049004 + i32.const 1048712 local.set 1 loop ;; label = @5 local.get 0 local.get 1 - call 41 + call 44 br_if 1 (;@4;) local.get 1 i32.load offset=8 local.tee 1 br_if 0 (;@5;) end - i32.const 1048580 + i32.const 1048584 local.get 0 i32.load local.get 0 @@ -3198,7 +3253,7 @@ local.get 1 local.get 3 i32.sub - call 45 + call 48 i32.eqz br_if 0 (;@4;) local.get 3 @@ -3212,58 +3267,60 @@ i32.store offset=4 i32.const 0 i32.const 0 - i32.load offset=1048996 + i32.load offset=1049016 local.get 3 i32.sub - i32.store offset=1048996 + i32.store offset=1049016 i32.const 0 - i32.load offset=1048984 + i32.load offset=1049004 local.set 1 i32.const 0 - i32.load offset=1048992 + i32.load offset=1049012 local.set 0 i32.const 0 local.get 0 local.get 0 - call 32 + call 35 local.tee 2 i32.const 8 - call 14 + call 17 local.get 2 i32.sub local.tee 2 - call 30 + call 33 local.tee 0 - i32.store offset=1048992 + i32.store offset=1049012 i32.const 0 local.get 1 - local.get 3 + local.get 4 local.get 2 i32.add i32.sub + i32.const 65536 + i32.add local.tee 1 - i32.store offset=1048984 + i32.store offset=1049004 local.get 0 local.get 1 i32.const 1 i32.or i32.store offset=4 - call 33 + call 36 local.tee 2 i32.const 8 - call 14 + call 17 local.set 4 i32.const 20 i32.const 8 - call 14 + call 17 local.set 5 i32.const 16 i32.const 8 - call 14 + call 17 local.set 6 local.get 0 local.get 1 - call 30 + call 33 local.get 6 local.get 5 local.get 4 @@ -3274,25 +3331,25 @@ i32.store offset=4 i32.const 0 i32.const 2097152 - i32.store offset=1049020 + i32.store offset=1049024 local.get 3 local.set 2 end - local.get 2 + call 12 i32.const 0 - call 9 + local.get 2 i32.sub i32.ne br_if 1 (;@2;) i32.const 0 - i32.load offset=1048984 + i32.load offset=1049004 i32.const 0 - i32.load offset=1049020 + i32.load offset=1049024 i32.le_u br_if 1 (;@2;) i32.const 0 i32.const -1 - i32.store offset=1049020 + i32.store offset=1049024 return end local.get 1 @@ -3301,17 +3358,17 @@ br_if 1 (;@1;) local.get 0 local.get 1 - call 8 + call 11 i32.const 0 i32.const 0 - i32.load offset=1049028 + i32.load offset=1049032 i32.const -1 i32.add local.tee 0 - i32.store offset=1049028 + i32.store offset=1049032 local.get 0 br_if 0 (;@2;) - call 9 + call 12 drop return end @@ -3320,13 +3377,13 @@ local.get 1 i32.const -8 i32.and - i32.const 1048588 + i32.const 1048728 i32.add local.set 2 block ;; label = @1 block ;; label = @2 i32.const 0 - i32.load offset=1048580 + i32.load offset=1048992 local.tee 3 i32.const 1 local.get 1 @@ -3346,7 +3403,7 @@ local.get 3 local.get 1 i32.or - i32.store offset=1048580 + i32.store offset=1048992 local.get 2 local.set 1 end @@ -3363,49 +3420,49 @@ local.get 1 i32.store offset=8 ) - (func (;11;) (type 4) (param i32 i32) + (func (;14;) (type 4) (param i32 i32) (local i32 i32 i32 i32) local.get 0 local.get 0 - call 32 + call 35 local.tee 2 i32.const 8 - call 14 + call 17 local.get 2 i32.sub local.tee 2 - call 30 + call 33 local.set 0 i32.const 0 local.get 1 local.get 2 i32.sub local.tee 1 - i32.store offset=1048984 + i32.store offset=1049004 i32.const 0 local.get 0 - i32.store offset=1048992 + i32.store offset=1049012 local.get 0 local.get 1 i32.const 1 i32.or i32.store offset=4 - call 33 + call 36 local.tee 2 i32.const 8 - call 14 + call 17 local.set 3 i32.const 20 i32.const 8 - call 14 + call 17 local.set 4 i32.const 16 i32.const 8 - call 14 + call 17 local.set 5 local.get 0 local.get 1 - call 30 + call 33 local.get 5 local.get 4 local.get 3 @@ -3416,14 +3473,14 @@ i32.store offset=4 i32.const 0 i32.const 2097152 - i32.store offset=1049020 + i32.store offset=1049024 ) - (func (;12;) (type 2) (param i32 i32) (result i32) + (func (;15;) (type 2) (param i32 i32) (result i32) local.get 0 local.get 1 - call 4 + call 7 ) - (func (;13;) (type 3) (param i32 i32 i32 i32) (result i32) + (func (;16;) (type 3) (param i32 i32 i32 i32) (result i32) (local i32 i32 i32 i32 i32 i32) block ;; label = @1 block ;; label = @2 @@ -3435,31 +3492,31 @@ br_if 0 (;@4;) local.get 3 local.get 2 - call 4 + call 7 local.tee 2 br_if 1 (;@3;) i32.const 0 return end - call 33 + call 36 local.tee 1 i32.const 8 - call 14 + call 17 local.set 4 i32.const 20 i32.const 8 - call 14 + call 17 local.set 5 i32.const 16 i32.const 8 - call 14 + call 17 local.set 6 i32.const 0 local.set 2 i32.const 0 i32.const 16 i32.const 8 - call 14 + call 17 i32.const 2 i32.shl i32.sub @@ -3491,23 +3548,23 @@ i32.add i32.const 16 i32.const 8 - call 14 + call 17 i32.const -5 i32.add local.get 3 i32.gt_u select i32.const 8 - call 14 + call 17 local.set 4 local.get 0 - call 34 + call 37 local.set 1 local.get 1 local.get 1 - call 19 + call 22 local.tee 5 - call 30 + call 33 local.set 6 block ;; label = @4 block ;; label = @5 @@ -3518,7 +3575,7 @@ block ;; label = @10 block ;; label = @11 local.get 1 - call 24 + call 27 br_if 0 (;@11;) local.get 5 local.get 4 @@ -3526,19 +3583,19 @@ br_if 1 (;@10;) local.get 6 i32.const 0 - i32.load offset=1048992 + i32.load offset=1049012 i32.eq br_if 2 (;@9;) local.get 6 i32.const 0 - i32.load offset=1048988 + i32.load offset=1049008 i32.eq br_if 3 (;@8;) local.get 6 - call 20 + call 23 br_if 7 (;@4;) local.get 6 - call 19 + call 22 local.tee 7 local.get 5 i32.add @@ -3555,11 +3612,11 @@ i32.lt_u br_if 4 (;@7;) local.get 6 - call 7 + call 10 br 5 (;@6;) end local.get 1 - call 19 + call 22 local.set 5 local.get 4 i32.const 256 @@ -3579,7 +3636,7 @@ i32.lt_u br_if 6 (;@5;) end - i32.const 1048580 + i32.const 1048584 local.get 1 local.get 1 i32.load @@ -3594,12 +3651,12 @@ local.get 4 i32.const 31 i32.add - i32.const 1048580 - call 48 - call 14 + i32.const 1048584 + call 51 + call 17 local.tee 5 i32.const 1 - call 44 + call 47 local.tee 4 i32.eqz br_if 6 (;@4;) @@ -3615,49 +3672,49 @@ i32.add local.tee 2 i32.store offset=4 - call 18 + call 21 local.set 0 local.get 1 local.get 2 - call 30 + call 33 local.get 0 i32.store offset=4 local.get 1 local.get 3 i32.const -12 i32.add - call 30 + call 33 i32.const 0 i32.store offset=4 i32.const 0 i32.const 0 - i32.load offset=1048996 + i32.load offset=1049016 local.get 5 local.get 7 i32.sub i32.add local.tee 3 - i32.store offset=1048996 + i32.store offset=1049016 i32.const 0 i32.const 0 - i32.load offset=1049024 + i32.load offset=1049028 local.tee 2 local.get 4 local.get 4 local.get 2 i32.gt_u select - i32.store offset=1049024 + i32.store offset=1049028 i32.const 0 i32.const 0 - i32.load offset=1049000 + i32.load offset=1049020 local.tee 2 local.get 3 local.get 2 local.get 3 i32.gt_u select - i32.store offset=1049000 + i32.store offset=1049020 br 9 (;@1;) end local.get 5 @@ -3666,26 +3723,26 @@ local.tee 5 i32.const 16 i32.const 8 - call 14 + call 17 i32.lt_u br_if 4 (;@5;) local.get 1 local.get 4 - call 30 + call 33 local.set 6 local.get 1 local.get 4 - call 25 + call 28 local.get 6 local.get 5 - call 25 + call 28 local.get 6 local.get 5 - call 6 + call 9 br 4 (;@5;) end i32.const 0 - i32.load offset=1048984 + i32.load offset=1049004 local.get 5 i32.add local.tee 5 @@ -3694,11 +3751,11 @@ br_if 4 (;@4;) local.get 1 local.get 4 - call 30 + call 33 local.set 6 local.get 1 local.get 4 - call 25 + call 28 local.get 6 local.get 5 local.get 4 @@ -3709,14 +3766,14 @@ i32.store offset=4 i32.const 0 local.get 4 - i32.store offset=1048984 + i32.store offset=1049004 i32.const 0 local.get 6 - i32.store offset=1048992 + i32.store offset=1049012 br 3 (;@5;) end i32.const 0 - i32.load offset=1048980 + i32.load offset=1049000 local.get 5 i32.add local.tee 5 @@ -3731,12 +3788,12 @@ local.tee 6 i32.const 16 i32.const 8 - call 14 + call 17 i32.ge_u br_if 0 (;@9;) local.get 1 local.get 5 - call 25 + call 28 i32.const 0 local.set 6 i32.const 0 @@ -3745,26 +3802,26 @@ end local.get 1 local.get 4 - call 30 + call 33 local.tee 5 local.get 6 - call 30 + call 33 local.set 7 local.get 1 local.get 4 - call 25 + call 28 local.get 5 local.get 6 - call 28 + call 31 local.get 7 - call 22 + call 25 end i32.const 0 local.get 5 - i32.store offset=1048988 + i32.store offset=1049008 i32.const 0 local.get 6 - i32.store offset=1048980 + i32.store offset=1049000 br 2 (;@5;) end block ;; label = @7 @@ -3790,57 +3847,57 @@ end i32.const 0 i32.const 0 - i32.load offset=1048580 + i32.load offset=1048992 i32.const -2 local.get 7 i32.const 3 i32.shr_u i32.rotl i32.and - i32.store offset=1048580 + i32.store offset=1048992 end block ;; label = @6 local.get 8 i32.const 16 i32.const 8 - call 14 + call 17 i32.lt_u br_if 0 (;@6;) local.get 1 local.get 4 - call 30 + call 33 local.set 5 local.get 1 local.get 4 - call 25 + call 28 local.get 5 local.get 8 - call 25 + call 28 local.get 5 local.get 8 - call 6 + call 9 br 1 (;@5;) end local.get 1 local.get 5 - call 25 + call 28 end local.get 1 br_if 3 (;@1;) end local.get 3 - call 5 + call 8 local.tee 4 i32.eqz br_if 1 (;@2;) local.get 4 local.get 0 local.get 1 - call 19 + call 22 i32.const -8 i32.const -4 local.get 1 - call 24 + call 27 select i32.add local.tee 2 @@ -3849,10 +3906,10 @@ local.get 3 i32.lt_u select - call 49 + call 52 local.set 3 local.get 0 - call 10 + call 13 local.get 3 return end @@ -3864,21 +3921,21 @@ local.get 3 i32.lt_u select - call 49 + call 52 drop local.get 0 - call 10 + call 13 end local.get 2 return end local.get 1 - call 24 + call 27 drop local.get 1 - call 32 + call 35 ) - (func (;14;) (type 2) (param i32 i32) (result i32) + (func (;17;) (type 2) (param i32 i32) (result i32) local.get 0 local.get 1 i32.add @@ -3889,7 +3946,7 @@ i32.sub i32.and ) - (func (;15;) (type 0) (param i32) (result i32) + (func (;18;) (type 1) (param i32) (result i32) local.get 0 i32.const 1 i32.shl @@ -3899,14 +3956,14 @@ i32.sub i32.or ) - (func (;16;) (type 0) (param i32) (result i32) + (func (;19;) (type 1) (param i32) (result i32) i32.const 0 local.get 0 i32.sub local.get 0 i32.and ) - (func (;17;) (type 0) (param i32) (result i32) + (func (;20;) (type 1) (param i32) (result i32) i32.const 0 i32.const 25 local.get 0 @@ -3918,16 +3975,16 @@ i32.eq select ) - (func (;18;) (type 6) (result i32) + (func (;21;) (type 6) (result i32) i32.const 7 ) - (func (;19;) (type 0) (param i32) (result i32) + (func (;22;) (type 1) (param i32) (result i32) local.get 0 i32.load offset=4 i32.const -8 i32.and ) - (func (;20;) (type 0) (param i32) (result i32) + (func (;23;) (type 1) (param i32) (result i32) local.get 0 i32.load8_u offset=4 i32.const 2 @@ -3935,13 +3992,13 @@ i32.const 1 i32.shr_u ) - (func (;21;) (type 0) (param i32) (result i32) + (func (;24;) (type 1) (param i32) (result i32) local.get 0 i32.load offset=4 i32.const 1 i32.and ) - (func (;22;) (type 5) (param i32) + (func (;25;) (type 5) (param i32) local.get 0 local.get 0 i32.load offset=4 @@ -3949,7 +4006,7 @@ i32.and i32.store offset=4 ) - (func (;23;) (type 0) (param i32) (result i32) + (func (;26;) (type 1) (param i32) (result i32) local.get 0 i32.load offset=4 i32.const 3 @@ -3957,14 +4014,14 @@ i32.const 1 i32.ne ) - (func (;24;) (type 0) (param i32) (result i32) + (func (;27;) (type 1) (param i32) (result i32) local.get 0 i32.load8_u offset=4 i32.const 3 i32.and i32.eqz ) - (func (;25;) (type 4) (param i32 i32) + (func (;28;) (type 4) (param i32 i32) local.get 0 local.get 0 i32.load offset=4 @@ -3985,7 +4042,7 @@ i32.or i32.store offset=4 ) - (func (;26;) (type 4) (param i32 i32) + (func (;29;) (type 4) (param i32 i32) local.get 0 local.get 1 i32.const 3 @@ -4001,14 +4058,14 @@ i32.or i32.store offset=4 ) - (func (;27;) (type 4) (param i32 i32) + (func (;30;) (type 4) (param i32 i32) local.get 0 local.get 1 i32.const 3 i32.or i32.store offset=4 ) - (func (;28;) (type 4) (param i32 i32) + (func (;31;) (type 4) (param i32 i32) local.get 0 local.get 1 i32.const 1 @@ -4020,7 +4077,7 @@ local.get 1 i32.store ) - (func (;29;) (type 7) (param i32 i32 i32) + (func (;32;) (type 7) (param i32 i32 i32) local.get 2 local.get 2 i32.load offset=4 @@ -4038,30 +4095,30 @@ local.get 1 i32.store ) - (func (;30;) (type 2) (param i32 i32) (result i32) + (func (;33;) (type 2) (param i32 i32) (result i32) local.get 0 local.get 1 i32.add ) - (func (;31;) (type 2) (param i32 i32) (result i32) + (func (;34;) (type 2) (param i32 i32) (result i32) local.get 0 local.get 1 i32.sub ) - (func (;32;) (type 0) (param i32) (result i32) + (func (;35;) (type 1) (param i32) (result i32) local.get 0 i32.const 8 i32.add ) - (func (;33;) (type 6) (result i32) + (func (;36;) (type 6) (result i32) i32.const 8 ) - (func (;34;) (type 0) (param i32) (result i32) + (func (;37;) (type 1) (param i32) (result i32) local.get 0 i32.const -8 i32.add ) - (func (;35;) (type 0) (param i32) (result i32) + (func (;38;) (type 1) (param i32) (result i32) (local i32) block ;; label = @1 local.get 0 @@ -4076,30 +4133,30 @@ end local.get 1 ) - (func (;36;) (type 0) (param i32) (result i32) + (func (;39;) (type 1) (param i32) (result i32) local.get 0 ) - (func (;37;) (type 0) (param i32) (result i32) + (func (;40;) (type 1) (param i32) (result i32) local.get 0 i32.load offset=12 ) - (func (;38;) (type 0) (param i32) (result i32) + (func (;41;) (type 1) (param i32) (result i32) local.get 0 i32.load offset=8 ) - (func (;39;) (type 0) (param i32) (result i32) + (func (;42;) (type 1) (param i32) (result i32) local.get 0 i32.load offset=12 i32.const 1 i32.and ) - (func (;40;) (type 0) (param i32) (result i32) + (func (;43;) (type 1) (param i32) (result i32) local.get 0 i32.load offset=12 i32.const 1 i32.shr_u ) - (func (;41;) (type 2) (param i32 i32) (result i32) + (func (;44;) (type 2) (param i32 i32) (result i32) (local i32 i32) i32.const 0 local.set 2 @@ -4120,14 +4177,14 @@ end local.get 2 ) - (func (;42;) (type 0) (param i32) (result i32) + (func (;45;) (type 1) (param i32) (result i32) local.get 0 i32.load local.get 0 i32.load offset=4 i32.add ) - (func (;43;) (type 7) (param i32 i32 i32) + (func (;46;) (type 7) (param i32 i32 i32) (local i32) local.get 2 i32.const 16 @@ -4157,28 +4214,28 @@ select i32.store ) - (func (;44;) (type 8) (param i32 i32 i32 i32 i32) (result i32) + (func (;47;) (type 8) (param i32 i32 i32 i32 i32) (result i32) i32.const 0 ) - (func (;45;) (type 3) (param i32 i32 i32 i32) (result i32) + (func (;48;) (type 3) (param i32 i32 i32 i32) (result i32) i32.const 0 ) - (func (;46;) (type 9) (param i32 i32 i32) (result i32) + (func (;49;) (type 9) (param i32 i32 i32) (result i32) i32.const 0 ) - (func (;47;) (type 2) (param i32 i32) (result i32) + (func (;50;) (type 2) (param i32 i32) (result i32) i32.const 0 ) - (func (;48;) (type 0) (param i32) (result i32) + (func (;51;) (type 1) (param i32) (result i32) i32.const 65536 ) - (func (;49;) (type 9) (param i32 i32 i32) (result i32) + (func (;52;) (type 9) (param i32 i32 i32) (result i32) local.get 0 local.get 1 local.get 2 - call 50 + call 53 ) - (func (;50;) (type 9) (param i32 i32 i32) (result i32) + (func (;53;) (type 9) (param i32 i32 i32) (result i32) (local i32 i32 i32 i32 i32 i32 i32 i32) block ;; label = @1 block ;; label = @2 @@ -4356,53 +4413,31 @@ end local.get 0 ) - (func (;51;) (type 3) (param i32 i32 i32 i32) (result i32) - block ;; label = @1 - block ;; label = @2 - block ;; label = @3 - local.get 1 - br_if 0 (;@3;) - local.get 3 - i32.eqz - br_if 2 (;@1;) - local.get 3 - local.get 2 - call 2 - local.set 2 - br 1 (;@2;) - end - local.get 0 - local.get 1 - local.get 2 - local.get 3 - call 3 - local.set 2 - end - local.get 2 - br_if 0 (;@1;) - unreachable - unreachable - end - local.get 2 - ) (table (;0;) 2 2 funcref) (memory (;0;) 17) (global (;0;) (mut i32) i32.const 1048576) - (global (;1;) i32 i32.const 1049032) + (global (;1;) i32 i32.const 1049036) (global (;2;) i32 i32.const 1049040) (export "memory" (memory 0)) - (export "add-one" (func 0)) - (export "cabi_realloc" (func 51)) + (export "add-two" (func 2)) + (export "cabi_realloc" (func 6)) (export "__data_end" (global 1)) (export "__heap_base" (global 2)) (elem (;0;) (i32.const 1) func 1) (data (;0;) (i32.const 1048576) "\01\00\00\00") + (@producers + (processed-by "wit-component" "0.11.0") + (processed-by "wit-bindgen-rust" "0.8.0") + ) ) (core instance (;0;) (instantiate 0)) (alias core export 0 "memory" (core memory (;0;))) (alias core export 0 "cabi_realloc" (core func (;0;))) - (type (;0;) (func (param "a" s32) (result s32))) - (alias core export 0 "add-one" (core func (;1;))) + (type (;0;) (func (param "input" s32) (result s32))) + (alias core export 0 "add-two" (core func (;1;))) (func (;0;) (type 0) (canon lift (core func 1))) - (export (;1;) "add-one" (func 0)) + (@producers + (processed-by "wit-component" "0.11.0") + ) + (export (;1;) "add-two" (func 0)) ) diff --git a/homestar-wasm/fixtures/example_test.wasm b/homestar-wasm/fixtures/example_test.wasm new file mode 100755 index 00000000..8ac772fd Binary files /dev/null and b/homestar-wasm/fixtures/example_test.wasm differ diff --git a/homestar-wasm/fixtures/example_test_component.wasm b/homestar-wasm/fixtures/example_test_component.wasm new file mode 100644 index 00000000..baa365e7 Binary files /dev/null and b/homestar-wasm/fixtures/example_test_component.wasm differ diff --git a/homestar-wasm/fixtures/homestar-guest-wasm.wasm b/homestar-wasm/fixtures/homestar-guest-wasm.wasm deleted file mode 100755 index 1fa70084..00000000 Binary files a/homestar-wasm/fixtures/homestar-guest-wasm.wasm and /dev/null differ diff --git a/homestar-wasm/fixtures/homestar_guest_wasm.wasm b/homestar-wasm/fixtures/homestar_guest_wasm.wasm deleted file mode 100755 index 1fa70084..00000000 Binary files a/homestar-wasm/fixtures/homestar_guest_wasm.wasm and /dev/null differ diff --git a/homestar-wasm/fixtures/homestar_guest_wasm_component.wasm b/homestar-wasm/fixtures/homestar_guest_wasm_component.wasm deleted file mode 100644 index 2d800da0..00000000 Binary files a/homestar-wasm/fixtures/homestar_guest_wasm_component.wasm and /dev/null differ diff --git a/homestar-wasm/src/test_utils/component.rs b/homestar-wasm/src/test_utils/component.rs index 8aad6942..30d9545c 100644 --- a/homestar-wasm/src/test_utils/component.rs +++ b/homestar-wasm/src/test_utils/component.rs @@ -147,16 +147,27 @@ fn make_echo_component_with_params(type_definition: &str, params: &[Param]) -> S ) }; + let type_section = if type_definition.contains("(type ") { + type_definition.to_string() + } else { + format!("(type $Foo' {type_definition})") + }; + format!( r#" (component (core module $m {func} + (memory (export "memory") 1) {REALLOC_AND_FREE} ) + (core instance $i (instantiate $m)) - (type $Foo {type_definition}) + + {type_section} + (export $Foo "foo" (type $Foo')) + (func (export "echo") (param "a" $Foo) (result "b" $Foo) (canon lift (core func $i "echo") diff --git a/homestar-wasm/src/wasmtime/ipld.rs b/homestar-wasm/src/wasmtime/ipld.rs index 38d101b1..25ba6de8 100644 --- a/homestar-wasm/src/wasmtime/ipld.rs +++ b/homestar-wasm/src/wasmtime/ipld.rs @@ -3,6 +3,9 @@ //! //! tl;dr: [Ipld] <=> [wasmtime::component::Val] IR. //! +//! Export restrictions to be aware of!: +//! +//! //! [Ipld]: libipld::Ipld use crate::error::{InterpreterError, TagsError}; @@ -1038,74 +1041,104 @@ mod test { } #[test] - fn try_map_complex_roundtrip() { - let mut bytes_kind_a = Vec::new(); - KeyedUnion::A(false) - .encode(DagCborCodec, &mut bytes_kind_a) - .unwrap(); - let ipld_kind_a: Ipld = from_slice(&bytes_kind_a).unwrap(); - - let mut bytes_kind_b = Vec::new(); - KeyedUnion::B(2) - .encode(DagCborCodec, &mut bytes_kind_b) - .unwrap(); - let ipld_kind_b: Ipld = from_slice(&bytes_kind_b).unwrap(); - - let mut bytes_kind_c = Vec::new(); - KeyedUnion::C(22) - .encode(DagCborCodec, &mut bytes_kind_c) - .unwrap(); - let ipld_kind_c: Ipld = from_slice(&bytes_kind_c).unwrap(); + fn try_list_with_nested_map_roundtrip() { + let ipld_map1 = Ipld::Map(BTreeMap::from([ + ("test".into(), Ipld::String("Hello!".into())), + ("test1".into(), Ipld::String("Hello!".into())), + ])); - let ipld = Ipld::Map(BTreeMap::from([ - ("test".into(), ipld_kind_a), - ("test1".into(), ipld_kind_b), - ("test2".into(), ipld_kind_c), + let ipld_map2 = Ipld::Map(BTreeMap::from([ + ("test2".into(), Ipld::String("Hello!".into())), + ("test3".into(), Ipld::String("Hello!".into())), ])); + let ipld = Ipld::List(vec![ipld_map1.clone(), ipld_map2.clone()]); + let ty = test_utils::component::setup_component( - "(list (tuple string (union bool u16)))".to_string(), + "(list (list (tuple string string)))".to_string(), 8, ); - let unwrapped_list = ty.unwrap_list(); - let unwrapped = unwrapped_list.ty(); - let unwrapped_tuple = unwrapped.unwrap_tuple(); - let union = unwrapped_tuple.clone().types().nth(1).unwrap(); - let tuple1 = [ Val::String(Box::from("test")), - union.unwrap_union().new_val(0, Val::Bool(false)).unwrap(), + Val::String(Box::from("Hello!")), ]; let tuple2 = [ Val::String(Box::from("test1")), - union.unwrap_union().new_val(1, Val::U16(2)).unwrap(), + Val::String(Box::from("Hello!")), ]; let tuple3 = [ Val::String(Box::from("test2")), - union.unwrap_union().new_val(1, Val::U16(22)).unwrap(), + Val::String(Box::from("Hello!")), + ]; + + let tuple4 = [ + Val::String(Box::from("test3")), + Val::String(Box::from("Hello!")), ]; - let val_tuple1 = unwrapped_tuple.new_val(Box::new(tuple1)).unwrap(); - let val_tuple2 = unwrapped_tuple.new_val(Box::new(tuple2)).unwrap(); - let val_tuple3 = unwrapped_tuple.new_val(Box::new(tuple3)).unwrap(); + let unwrapped_outer_list = ty.unwrap_list(); - let val_map = unwrapped_list - .new_val(Box::new([val_tuple1, val_tuple2, val_tuple3])) + let first_inner_tuple = unwrapped_outer_list + .ty() + .unwrap_list() + .ty() + .unwrap_tuple() + .new_val(Box::new(tuple1)) .unwrap(); - let runtime = RuntimeVal::new_with_tags( - val_map, - Tags::new(vec!["A".into(), "b".into(), "C".into()].into()), - ); + let second_inner_tuple = unwrapped_outer_list + .ty() + .unwrap_list() + .ty() + .unwrap_tuple() + .new_val(Box::new(tuple2)) + .unwrap(); + + let third_inner_tuple = unwrapped_outer_list + .ty() + .unwrap_list() + .ty() + .unwrap_tuple() + .new_val(Box::new(tuple3)) + .unwrap(); + + let fourth_inner_tuple = unwrapped_outer_list + .ty() + .unwrap_list() + .ty() + .unwrap_tuple() + .new_val(Box::new(tuple4)) + .unwrap(); + + let first_inner_list = ty + .unwrap_list() + .ty() + .unwrap_list() + .new_val(Box::new([first_inner_tuple, second_inner_tuple])) + .unwrap(); + + let second_inner_list = ty + .unwrap_list() + .ty() + .unwrap_list() + .new_val(Box::new([third_inner_tuple, fourth_inner_tuple])) + .unwrap(); + + let val_outer_list = ty + .unwrap_list() + .new_val(Box::new([first_inner_list, second_inner_list])) + .unwrap(); + + let runtime = RuntimeVal::new(val_outer_list); assert_eq!( RuntimeVal::try_from(ipld.clone(), &InterfaceType::Type(ty)).unwrap(), runtime ); - assert_eq!(Ipld::try_from(runtime).unwrap(), ipld); + //assert_eq!(Ipld::try_from(runtime).unwrap(), ipld); } } diff --git a/homestar-wasm/src/wasmtime/limits.rs b/homestar-wasm/src/wasmtime/limits.rs index bb46d676..e2dc9da1 100644 --- a/homestar-wasm/src/wasmtime/limits.rs +++ b/homestar-wasm/src/wasmtime/limits.rs @@ -35,17 +35,31 @@ impl ResourceLimiterAsync for StoreLimitsAsync { current: usize, desired: usize, _maximum: Option, - ) -> bool { - let can_grow = !matches!(self.max_memory_size, Some(limit) if desired > limit); + ) -> anyhow::Result { + let can_grow = if let Some(limit) = self.max_memory_size { + desired <= limit + } else { + true + }; if can_grow { self.memory_consumed = (self.memory_consumed as i64 + (desired as i64 - current as i64)) as u64; } - can_grow + Ok(can_grow) } - async fn table_growing(&mut self, _current: u32, desired: u32, _maximum: Option) -> bool { - !matches!(self.max_table_elements, Some(limit) if desired > limit) + async fn table_growing( + &mut self, + _current: u32, + desired: u32, + _maximum: Option, + ) -> anyhow::Result { + let can_grow = if let Some(limit) = self.max_table_elements { + desired <= limit + } else { + true + }; + Ok(can_grow) } } diff --git a/homestar-wasm/tests/execute_wasm.rs b/homestar-wasm/tests/execute_wasm.rs index f6e2d547..d6ba1212 100644 --- a/homestar-wasm/tests/execute_wasm.rs +++ b/homestar-wasm/tests/execute_wasm.rs @@ -22,7 +22,7 @@ fn fixtures(file: &str) -> PathBuf { #[tokio::test] async fn test_wasm_exceeds_max_memory() { - let wasm = fs::read(fixtures("homestar_guest_wasm.wasm")).unwrap(); + let wasm = fs::read(fixtures("example_test.wasm")).unwrap(); let env = World::instantiate( wasm, "add_one", @@ -42,25 +42,25 @@ async fn test_wasm_exceeds_max_memory() { #[tokio::test] async fn test_execute_wat() { let ipld = Input::Ipld(Ipld::Map(BTreeMap::from([ - ("func".into(), Ipld::String("add_one".to_string())), + ("func".into(), Ipld::String("add_two".to_string())), ("args".into(), Ipld::List(vec![Ipld::Integer(1)])), ]))); // TODO: Replace this with updated versions and guest_wasm code. - let wat = fs::read(fixtures("add_one_component.wat")).unwrap(); - let mut env = World::instantiate(wat, "add-one", State::default()) + let wat = fs::read(fixtures("example_add_component.wat")).unwrap(); + let mut env = World::instantiate(wat, "add_two", State::default()) .await .unwrap(); let res = env .execute(ipld.parse().unwrap().try_into().unwrap()) .await .unwrap(); - assert_eq!(res, Output::Value(wasmtime::component::Val::S32(2))); + assert_eq!(res, Output::Value(wasmtime::component::Val::S32(3))); } #[tokio::test] async fn test_execute_wat_from_non_component() { - let wat = fs::read(fixtures("add_one.wat")).unwrap(); - let env = World::instantiate(wat, "add_one", State::default()).await; + let wat = fs::read(fixtures("example_add.wat")).unwrap(); + let env = World::instantiate(wat, "add_two", State::default()).await; assert!(env.is_err()); } @@ -71,7 +71,7 @@ async fn test_execute_wasm_underscore() { ("args".into(), Ipld::List(vec![Ipld::Integer(1)])), ]))); - let wasm = fs::read(fixtures("homestar_guest_wasm.wasm")).unwrap(); + let wasm = fs::read(fixtures("example_test.wasm")).unwrap(); let mut env = World::instantiate(wasm, "add_one", State::default()) .await .unwrap(); @@ -89,7 +89,7 @@ async fn test_execute_wasm_hyphen() { ("args".into(), Ipld::List(vec![Ipld::Integer(10)])), ]))); - let wasm = fs::read(fixtures("homestar-guest-wasm.wasm")).unwrap(); + let wasm = fs::read(fixtures("example_test.wasm")).unwrap(); let mut env = World::instantiate(wasm, "add-one", State::default()) .await .unwrap(); @@ -102,7 +102,7 @@ async fn test_execute_wasm_hyphen() { #[tokio::test] async fn test_wasm_wrong_fun() { - let wasm = fs::read(fixtures("homestar_guest_wasm.wasm")).unwrap(); + let wasm = fs::read(fixtures("example_test.wasm")).unwrap(); let env = World::instantiate(wasm, "add-onez", State::default()).await; assert!(env.is_err()); } @@ -117,7 +117,7 @@ async fn test_append_string() { ), ]))); - let wasm = fs::read(fixtures("homestar_guest_wasm.wasm")).unwrap(); + let wasm = fs::read(fixtures("example_test.wasm")).unwrap(); let mut env = World::instantiate(wasm, "append-string", State::default()) .await .unwrap(); @@ -147,7 +147,7 @@ async fn test_matrix_transpose() { ("args".into(), Ipld::List(vec![ipld_inner.clone()])), ]))); - let wasm = fs::read(fixtures("homestar_guest_wasm.wasm")).unwrap(); + let wasm = fs::read(fixtures("example_test.wasm")).unwrap(); let mut env = World::instantiate(wasm, "transpose", State::default()) .await .unwrap(); @@ -191,7 +191,7 @@ async fn test_execute_wasms_in_seq() { ), ]))); - let wasm = fs::read(fixtures("homestar_guest_wasm.wasm")).unwrap(); + let wasm = fs::read(fixtures("example_test.wasm")).unwrap(); let mut env = World::instantiate(wasm.clone(), "add_one", State::default()) .await @@ -223,7 +223,7 @@ async fn test_execute_wasms_in_seq() { #[tokio::test] async fn test_multiple_args() { - let wasm = fs::read(fixtures("homestar_guest_wasm.wasm")).unwrap(); + let wasm = fs::read(fixtures("example_test.wasm")).unwrap(); let ipld_str = Input::Ipld(Ipld::Map(BTreeMap::from([ ("func".into(), Ipld::String("join-strings".to_string())), @@ -282,9 +282,9 @@ async fn test_execute_wasms_in_seq_with_threaded_result() { ), ]))); - let wasm1 = fs::read(fixtures("homestar_guest_wasm.wasm")).unwrap(); + let wasm = fs::read(fixtures("example_test.wasm")).unwrap(); - let mut env = World::instantiate(wasm1.clone(), "join-strings", State::default()) + let mut env = World::instantiate(wasm.clone(), "join-strings", State::default()) .await .unwrap(); @@ -298,7 +298,7 @@ async fn test_execute_wasms_in_seq_with_threaded_result() { Output::Value(wasmtime::component::Val::String("Roundabout".into())) ); - let env2 = World::instantiate_with_current_env(wasm1, "join-strings", &mut env) + let env2 = World::instantiate_with_current_env(wasm, "join-strings", &mut env) .await .unwrap(); @@ -351,9 +351,9 @@ async fn test_execute_wasms_with_multiple_inits() { ), ]))); - let wasm1 = fs::read(fixtures("homestar_guest_wasm.wasm")).unwrap(); + let wasm = fs::read(fixtures("example_test.wasm")).unwrap(); - let mut env = World::instantiate(wasm1.clone(), "join-strings", State::default()) + let mut env = World::instantiate(wasm.clone(), "join-strings", State::default()) .await .unwrap(); @@ -367,7 +367,7 @@ async fn test_execute_wasms_with_multiple_inits() { Output::Value(wasmtime::component::Val::String("Roundabout".into())) ); - let mut env2 = World::instantiate(wasm1, "join-strings", State::default()) + let mut env2 = World::instantiate(wasm, "join-strings", State::default()) .await .unwrap();