diff --git a/Cargo.lock b/Cargo.lock index 9dbfa314..43ac5d26 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,22 +2,13 @@ # It is not intended for manual editing. version = 3 -[[package]] -name = "addr2line" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97" -dependencies = [ - "gimli 0.27.3", -] - [[package]] name = "addr2line" version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" dependencies = [ - "gimli 0.28.0", + "gimli", ] [[package]] @@ -237,12 +228,12 @@ version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" dependencies = [ - "addr2line 0.21.0", + "addr2line", "cc", "cfg-if 1.0.0", "libc", "miniz_oxide", - "object 0.32.1", + "object", "rustc-demangle", ] @@ -326,7 +317,7 @@ dependencies = [ "tracing-log", "tracing-opentelemetry", "tracing-subscriber", - "wit-component 0.12.0", + "wit-component", ] [[package]] @@ -393,6 +384,7 @@ dependencies = [ "async-trait", "bulwark-config", "bulwark-wasm-sdk", + "bytes 1.5.0", "chrono", "futures 0.3.29", "http", @@ -412,7 +404,7 @@ dependencies = [ "wasmtime-types", "wasmtime-wasi", "wat", - "wit-component 0.12.0", + "wit-component", ] [[package]] @@ -487,38 +479,50 @@ dependencies = [ [[package]] name = "cap-fs-ext" -version = "1.0.15" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58bc48200a1a0fa6fba138b1802ad7def18ec1cdd92f7b2a04e21f1bd887f7b9" +checksum = "b779b2d0a001c125b4584ad586268fb4b92d957bff8d26d7fe0dd78283faa814" dependencies = [ "cap-primitives", "cap-std", - "io-lifetimes 1.0.11", + "io-lifetimes", "windows-sys", ] +[[package]] +name = "cap-net-ext" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ffc30dee200c20b4dcb80572226f42658e1d9c4b668656d7cc59c33d50e396e" +dependencies = [ + "cap-primitives", + "cap-std", + "rustix", + "smallvec 1.11.2", +] + [[package]] name = "cap-primitives" -version = "1.0.15" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4b6df5b295dca8d56f35560be8c391d59f0420f72e546997154e24e765e6451" +checksum = "2bf30c373a3bee22c292b1b6a7a26736a38376840f1af3d2d806455edf8c3899" dependencies = [ "ambient-authority", "fs-set-times", "io-extras", - "io-lifetimes 1.0.11", + "io-lifetimes", "ipnet", "maybe-owned", - "rustix 0.37.27", + "rustix", "windows-sys", - "winx 0.35.1", + "winx", ] [[package]] name = "cap-rand" -version = "1.0.15" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d25555efacb0b5244cf1d35833d55d21abc916fff0eaad254b8e2453ea9b8ab" +checksum = "577de6cff7c2a47d6b13efe5dd28bf116bd7f8f7db164ea95b7cc2640711f522" dependencies = [ "ambient-authority", "rand", @@ -526,26 +530,26 @@ dependencies = [ [[package]] name = "cap-std" -version = "1.0.15" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3373a62accd150b4fcba056d4c5f3b552127f0ec86d3c8c102d60b978174a012" +checksum = "84bade423fa6403efeebeafe568fdb230e8c590a275fba2ba978dd112efcf6e9" dependencies = [ "cap-primitives", "io-extras", - "io-lifetimes 1.0.11", - "rustix 0.37.27", + "io-lifetimes", + "rustix", ] [[package]] name = "cap-time-ext" -version = "1.0.15" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e95002993b7baee6b66c8950470e59e5226a23b3af39fc59c47fe416dd39821a" +checksum = "f8f52b3c8f4abfe3252fd0a071f3004aaa3b18936ec97bdbd8763ce03aff6247" dependencies = [ "cap-primitives", "once_cell", - "rustix 0.37.27", - "winx 0.35.1", + "rustix", + "winx", ] [[package]] @@ -765,18 +769,18 @@ dependencies = [ [[package]] name = "cranelift-bforest" -version = "0.98.2" +version = "0.102.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ebf2f2c0abc3a31cda70b20bae56b9aeb6ad0de00c3620bfef1a7e26220edfb" +checksum = "76eb38f2af690b5a4411d9a8782b6d77dabff3ca939e0518453ab9f9a4392d41" dependencies = [ "cranelift-entity", ] [[package]] name = "cranelift-codegen" -version = "0.98.2" +version = "0.102.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46d414ddd870ebce9b55eed9e803ef063436bd4d64160dd8e811ccbeb2c914f0" +checksum = "39526c036b92912417e8931f52c1e235796688068d3efdbbd8b164f299d19156" dependencies = [ "bumpalo", "cranelift-bforest", @@ -785,8 +789,8 @@ dependencies = [ "cranelift-control", "cranelift-entity", "cranelift-isle", - "gimli 0.27.3", - "hashbrown 0.13.2", + "gimli", + "hashbrown 0.14.2", "log", "regalloc2", "smallvec 1.11.2", @@ -795,42 +799,43 @@ dependencies = [ [[package]] name = "cranelift-codegen-meta" -version = "0.98.2" +version = "0.102.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1b0065250c0c1fae99748aadc6003725e588542650886d76dd234eca8498598" +checksum = "fdb0deedc9fccf2db53a5a3c9c9d0163e44143b0d004dca9bf6ab6a0024cd79a" dependencies = [ "cranelift-codegen-shared", ] [[package]] name = "cranelift-codegen-shared" -version = "0.98.2" +version = "0.102.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27320b5159cfa5eadcbebceda66ac145c0aa5cb7a31948550b9636f77924081b" +checksum = "cea2d1b274e45aa8e61e9103efa1ba82d4b5a19d12bd1fd10744c3b7380ba3ff" [[package]] name = "cranelift-control" -version = "0.98.2" +version = "0.102.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26bb54d1e129d6d3cf0e2a191ec2ba91aec1c290a048bc7595490a275d729d7a" +checksum = "6ea5977559a71e63db79a263f0e81a89b996e8a38212c4281e37dd1dbaa8b65c" dependencies = [ "arbitrary", ] [[package]] name = "cranelift-entity" -version = "0.98.2" +version = "0.102.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d5656cb48246a511ab1bd22431122d8d23553b7c5f7f5ccff5569f47c0b708c" +checksum = "2f871ada808b58158d84dfc43a6a2e2d2756baaf4ed1c51fd969ca8330e6ca5c" dependencies = [ "serde", + "serde_derive", ] [[package]] name = "cranelift-frontend" -version = "0.98.2" +version = "0.102.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5321dc54f0f4e19f85d8e68543c63edfc255171cc5910c8b9a48e6210ffcdf2" +checksum = "e8e6890f587ef59824b3debe577e68fdf9b307b3808c54b8d93a18fd0b70941b" dependencies = [ "cranelift-codegen", "log", @@ -840,15 +845,15 @@ dependencies = [ [[package]] name = "cranelift-isle" -version = "0.98.2" +version = "0.102.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adff1f9152fd9970ad9cc14e0d4e1b0089a75d19f8538c4dc9e19aebbd53fe60" +checksum = "a8d5fc6d5d3b52d1917002b17a8ecce448c2621b5bf394bb4e77e2f676893537" [[package]] name = "cranelift-native" -version = "0.98.2" +version = "0.102.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809bfa1db0b982b1796bc8c0002ab6bab959664df16095c289e567bdd22ade6f" +checksum = "3e10c2e7faa65d4ae7de9a83b44f2c31aca7dc638e17d0a79572fdf8103d720b" dependencies = [ "cranelift-codegen", "libc", @@ -857,9 +862,9 @@ dependencies = [ [[package]] name = "cranelift-wasm" -version = "0.98.2" +version = "0.102.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "892f9273ee0c7709e839fcee769f9db1630789be5dbdfa429d84e0de8ec3dd41" +checksum = "2755807efc7ec80d1cc0b6815e70f10cedf968889f0469091dbff9c5c0741c48" dependencies = [ "cranelift-codegen", "cranelift-entity", @@ -867,7 +872,7 @@ dependencies = [ "itertools 0.10.5", "log", "smallvec 1.11.2", - "wasmparser 0.107.0", + "wasmparser 0.116.1", "wasmtime-types", ] @@ -1087,19 +1092,6 @@ dependencies = [ "cfg-if 1.0.0", ] -[[package]] -name = "env_logger" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95b3f3e67048839cb0d0781f445682a35113da7121f7c949db0e2be96a4fbece" -dependencies = [ - "humantime", - "is-terminal", - "log", - "regex", - "termcolor", -] - [[package]] name = "envoy-control-plane" version = "0.4.0" @@ -1155,9 +1147,9 @@ dependencies = [ [[package]] name = "fallible-iterator" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" +checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" [[package]] name = "fastrand" @@ -1172,20 +1164,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b0377f1edc77dbd1118507bc7a66e4ab64d2b90c66f90726dc801e73a8c68f9" dependencies = [ "cfg-if 1.0.0", - "rustix 0.38.24", + "rustix", "windows-sys", ] -[[package]] -name = "file-per-thread-logger" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a3cc21c33af89af0930c8cae4ade5e6fdc17b5d2c97b3d2e2edb67a1cf683f3" -dependencies = [ - "env_logger", - "log", -] - [[package]] name = "fixedbitset" version = "0.4.2" @@ -1234,12 +1216,12 @@ dependencies = [ [[package]] name = "fs-set-times" -version = "0.19.2" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d167b646a876ba8fda6b50ac645cfd96242553cbaf0ca4fccaa39afcbf0801f" +checksum = "dd738b84894214045e8414eaded76359b4a5773f0a0a56b16575110739cdcf39" dependencies = [ - "io-lifetimes 1.0.11", - "rustix 0.38.24", + "io-lifetimes", + "rustix", "windows-sys", ] @@ -1410,21 +1392,15 @@ dependencies = [ [[package]] name = "gimli" -version = "0.27.3" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" +checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" dependencies = [ "fallible-iterator", - "indexmap 1.9.3", + "indexmap 2.1.0", "stable_deref_trait", ] -[[package]] -name = "gimli" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" - [[package]] name = "glob" version = "0.3.1" @@ -1547,12 +1523,6 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" -[[package]] -name = "humantime" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" - [[package]] name = "hyper" version = "0.14.27" @@ -1675,7 +1645,6 @@ checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown 0.12.3", - "serde", ] [[package]] @@ -1701,22 +1670,11 @@ dependencies = [ [[package]] name = "io-extras" -version = "0.17.4" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fde93d48f0d9277f977a333eca8313695ddd5301dc96f7e02aeddcb0dd99096f" +checksum = "9d3c230ee517ee76b1cc593b52939ff68deda3fae9e41eca426c6b4993df51c4" dependencies = [ - "io-lifetimes 1.0.11", - "windows-sys", -] - -[[package]] -name = "io-lifetimes" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" -dependencies = [ - "hermit-abi", - "libc", + "io-lifetimes", "windows-sys", ] @@ -1741,17 +1699,6 @@ version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" -[[package]] -name = "is-terminal" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" -dependencies = [ - "hermit-abi", - "rustix 0.38.24", - "windows-sys", -] - [[package]] name = "itertools" version = "0.10.5" @@ -1778,9 +1725,9 @@ checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] name = "ittapi" -version = "0.3.5" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25a5c0b993601cad796222ea076565c5d9f337d35592f8622c753724f06d7271" +checksum = "6b996fe614c41395cdaedf3cf408a9534851090959d90d54a535f675550b64b1" dependencies = [ "anyhow", "ittapi-sys", @@ -1789,9 +1736,9 @@ dependencies = [ [[package]] name = "ittapi-sys" -version = "0.3.5" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7b5e473765060536a660eed127f758cf1a810c73e49063264959c60d1727d9" +checksum = "52f5385394064fa2c886205dba02598013ce83d3e92d33dbdc0c52fe0e7bf4fc" dependencies = [ "cc", ] @@ -1859,12 +1806,6 @@ dependencies = [ "redox_syscall 0.4.1", ] -[[package]] -name = "linux-raw-sys" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" - [[package]] name = "linux-raw-sys" version = "0.4.11" @@ -1953,7 +1894,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2cffa4ad52c6f791f4f8b15f0c05f9824b2ced1160e88cc393d64fff9a8ac64" dependencies = [ - "rustix 0.38.24", + "rustix", ] [[package]] @@ -1965,15 +1906,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "memoffset" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" -dependencies = [ - "autocfg", -] - [[package]] name = "memoffset" version = "0.9.0" @@ -2193,24 +2125,15 @@ dependencies = [ "libc", ] -[[package]] -name = "object" -version = "0.30.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03b4680b86d9cfafba8fc491dc9b6df26b68cf40e9e6cd73909194759a63c385" -dependencies = [ - "crc32fast", - "hashbrown 0.13.2", - "indexmap 1.9.3", - "memchr", -] - [[package]] name = "object" version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" dependencies = [ + "crc32fast", + "hashbrown 0.14.2", + "indexmap 2.1.0", "memchr", ] @@ -2653,28 +2576,6 @@ dependencies = [ "cc", ] -[[package]] -name = "pulldown-cmark" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffade02495f22453cd593159ea2f59827aae7f53fa8323f756799b670881dcf8" -dependencies = [ - "bitflags 1.3.2", - "memchr", - "unicase", -] - -[[package]] -name = "pulldown-cmark" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a1a2f1f0a7ecff9c31abbe177637be0e97a0aef46cf8738ece09327985d998" -dependencies = [ - "bitflags 1.3.2", - "memchr", - "unicase", -] - [[package]] name = "quanta" version = "0.11.1" @@ -2979,22 +2880,6 @@ dependencies = [ "semver 0.9.0", ] -[[package]] -name = "rustix" -version = "0.37.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2" -dependencies = [ - "bitflags 1.3.2", - "errno", - "io-lifetimes 1.0.11", - "itoa", - "libc", - "linux-raw-sys 0.3.8", - "once_cell", - "windows-sys", -] - [[package]] name = "rustix" version = "0.38.24" @@ -3003,8 +2888,10 @@ checksum = "9ad981d6c340a49cdc40a1028d9c6084ec7e9fa33fcb839cab656a267071e234" dependencies = [ "bitflags 2.4.1", "errno", + "itoa", "libc", - "linux-raw-sys 0.4.11", + "linux-raw-sys", + "once_cell", "windows-sys", ] @@ -3399,18 +3286,18 @@ dependencies = [ [[package]] name = "system-interface" -version = "0.25.9" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10081a99cbecbc363d381b9503563785f0b02735fccbb0d4c1a2cb3d39f7e7fe" +checksum = "27ce32341b2c0b70c144bbf35627fdc1ef18c76ced5e5e7b3ee8b5ba6b2ab6a0" dependencies = [ "bitflags 2.4.1", "cap-fs-ext", "cap-std", "fd-lock", - "io-lifetimes 2.0.2", - "rustix 0.38.24", + "io-lifetimes", + "rustix", "windows-sys", - "winx 0.36.2", + "winx", ] [[package]] @@ -3428,19 +3315,10 @@ dependencies = [ "cfg-if 1.0.0", "fastrand", "redox_syscall 0.4.1", - "rustix 0.38.24", + "rustix", "windows-sys", ] -[[package]] -name = "termcolor" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449" -dependencies = [ - "winapi-util", -] - [[package]] name = "thiserror" version = "1.0.50" @@ -4111,15 +3989,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "unicase" -version = "2.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" -dependencies = [ - "version_check", -] - [[package]] name = "unicode-bidi" version = "0.3.13" @@ -4275,9 +4144,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasi-cap-std-sync" -version = "11.0.2" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b22cf4595ee2af2c728a3ad5e90961556df7870e027bb054c59e0747f3533edb" +checksum = "3542b8d238a3de6c9986218af842f1e8f950ca7c4707aee9d0dd83002577a759" dependencies = [ "anyhow", "async-trait", @@ -4287,10 +4156,9 @@ dependencies = [ "cap-time-ext", "fs-set-times", "io-extras", - "io-lifetimes 1.0.11", - "is-terminal", + "io-lifetimes", "once_cell", - "rustix 0.37.27", + "rustix", "system-interface", "tracing", "wasi-common", @@ -4299,17 +4167,17 @@ dependencies = [ [[package]] name = "wasi-common" -version = "11.0.2" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe8dbf50f7f86c73af7eeb9a00d342fe20a6a2460bd7737d8db6b65e9a8216cd" +checksum = "a362c9dbdc5eb0809ce9db09e7b76805fea3ddaf2b8ff41a0e5c805935736205" dependencies = [ "anyhow", - "bitflags 1.3.2", + "bitflags 2.4.1", "cap-rand", "cap-std", "io-extras", "log", - "rustix 0.37.27", + "rustix", "thiserror", "tracing", "wasmtime", @@ -4385,86 +4253,65 @@ checksum = "0d046c5d029ba91a1ed14da14dca44b68bf2f124cfbaf741c54151fdb3e0750b" [[package]] name = "wasm-encoder" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18c41dbd92eaebf3612a39be316540b8377c871cb9bde6b064af962984912881" -dependencies = [ - "leb128", -] - -[[package]] -name = "wasm-encoder" -version = "0.30.0" +version = "0.36.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2f8e9778e04cbf44f58acc301372577375a666b966c50b03ef46144f80436a8" +checksum = "822b645bf4f2446b949776ffca47e2af60b167209ffb70814ef8779d299cd421" dependencies = [ "leb128", ] [[package]] name = "wasm-encoder" -version = "0.37.0" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d135e8940b69dbee0f5b0a0be9c1cd6fa8b71d774904c13a3fcfc5dc265e43d" +checksum = "7b09bc5df933a3dabbdb72ae4b6b71be8ae07f58774d5aa41bd20adcd41a235a" dependencies = [ "leb128", ] [[package]] name = "wasm-metadata" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36e5156581ff4a302405c44ca7c85347563ca431d15f1a773f12c9c7b9a6cdc9" -dependencies = [ - "anyhow", - "indexmap 1.9.3", - "serde", - "wasm-encoder 0.29.0", - "wasmparser 0.107.0", -] - -[[package]] -name = "wasm-metadata" -version = "0.9.0" +version = "0.10.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d51db59397fc650b5f2fc778e4a5c4456cd856bed7fc1ec15f8d3e28229dc463" +checksum = "3b4a14bbedb07737809c00843d1f2f88ba0b8950c114283e0387e30b1b6ee558" dependencies = [ "anyhow", "indexmap 2.1.0", "serde", + "serde_derive", "serde_json", "spdx", - "wasm-encoder 0.30.0", - "wasmparser 0.108.0", + "wasm-encoder 0.38.0", + "wasmparser 0.118.0", ] [[package]] name = "wasmparser" -version = "0.107.0" +version = "0.116.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29e3ac9b780c7dda0cac7a52a5d6d2d6707cc6e3451c9db209b6c758f40d7acb" +checksum = "a58e28b80dd8340cb07b8242ae654756161f6fc8d0038123d679b7b99964fa50" dependencies = [ - "indexmap 1.9.3", + "indexmap 2.1.0", "semver 1.0.20", ] [[package]] name = "wasmparser" -version = "0.108.0" +version = "0.117.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76c956109dcb41436a39391139d9b6e2d0a5e0b158e1293ef352ec977e5e36c5" +checksum = "9b206de0c992af9f0b51ef2fb9455623e0a19eb68f172cd8ba9cd0e46637f5ab" dependencies = [ + "hashbrown 0.14.2", "indexmap 2.1.0", "semver 1.0.20", ] [[package]] name = "wasmparser" -version = "0.117.0" +version = "0.118.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b206de0c992af9f0b51ef2fb9455623e0a19eb68f172cd8ba9cd0e46637f5ab" +checksum = "ebbb91574de0011ded32b14db12777e7dd5e9ea2f9d7317a1ab51a9495c75924" dependencies = [ - "hashbrown 0.14.2", "indexmap 2.1.0", "semver 1.0.20", ] @@ -4481,9 +4328,9 @@ dependencies = [ [[package]] name = "wasmtime" -version = "11.0.2" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "028253baf4df6e0823481845a380117de2b7f42166261551db7d097d60cfc685" +checksum = "ae4b1702ef55144d6f594085f4989dc71fb71a791be1c8354ecc8e489b81199b" dependencies = [ "anyhow", "async-trait", @@ -4492,18 +4339,20 @@ dependencies = [ "cfg-if 1.0.0", "encoding_rs", "fxprof-processed-profile", - "indexmap 1.9.3", + "indexmap 2.1.0", "libc", "log", - "object 0.30.4", + "object", "once_cell", "paste", "psm", "rayon", "serde", + "serde_derive", "serde_json", "target-lexicon", - "wasmparser 0.107.0", + "wasm-encoder 0.36.2", + "wasmparser 0.116.1", "wasmtime-cache", "wasmtime-component-macro", "wasmtime-component-util", @@ -4519,27 +4368,27 @@ dependencies = [ [[package]] name = "wasmtime-asm-macros" -version = "11.0.2" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e76c6e968fb3df273a8140bb9e02693b17da1f53a3bbafa0a5811e8ef1031cd8" +checksum = "c981d0e87bb3e98e08e76644e7ae5dfdef7f1d4105145853f3d677bb4535d65f" dependencies = [ "cfg-if 1.0.0", ] [[package]] name = "wasmtime-cache" -version = "11.0.2" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34308e5033adb530c18de06f6f2d1de2c0cb6dc19e9c13451acf97ec4e07b30a" +checksum = "3d7ba8adaa84fdb9dd659275edcf7fc5282c44b9c9f829986c71d44fd52ea80a" dependencies = [ "anyhow", "base64 0.21.5", "bincode", "directories-next", - "file-per-thread-logger", "log", - "rustix 0.37.27", + "rustix", "serde", + "serde_derive", "sha2", "toml 0.5.11", "windows-sys", @@ -4548,81 +4397,84 @@ dependencies = [ [[package]] name = "wasmtime-component-macro" -version = "11.0.2" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1631a5fed4e162edf7e0604845e6150903f17099970e1a0020f540831d0f8479" +checksum = "c91dcbbd0e1f094351d1ae0e53463c63ba53ec8f8e0e21d17567c1979a8c3758" dependencies = [ "anyhow", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.39", "wasmtime-component-util", "wasmtime-wit-bindgen", - "wit-parser 0.8.0", + "wit-parser", ] [[package]] name = "wasmtime-component-util" -version = "11.0.2" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31bd6b1c6d8ece2aa852bf5dad0ea91be63e81c7571d7bcf24238b05405adb70" +checksum = "3e85f1319a7ed36aa59446ab7e967d0c2fb0cd179bf56913633190b44572023e" [[package]] name = "wasmtime-cranelift" -version = "11.0.2" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "696333ffdbd9fabb486d8a5ee82c75fcd22d199446d3df04935a286fcbb40100" +checksum = "1453665878e16245b9a25405e550c4a36c6731c6e34ea804edc002a38c3e6741" dependencies = [ "anyhow", + "cfg-if 1.0.0", "cranelift-codegen", "cranelift-control", "cranelift-entity", "cranelift-frontend", "cranelift-native", "cranelift-wasm", - "gimli 0.27.3", + "gimli", "log", - "object 0.30.4", + "object", "target-lexicon", "thiserror", - "wasmparser 0.107.0", + "wasmparser 0.116.1", "wasmtime-cranelift-shared", "wasmtime-environ", + "wasmtime-versioned-export-macros", ] [[package]] name = "wasmtime-cranelift-shared" -version = "11.0.2" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "434899162f65339ae7710f6fba91083b86e707cb618a8f4e8b037b8d46223d56" +checksum = "d3dface3d9b72b4670781ff72675eabb291e2836b5dded6bb312b577d2bb561f" dependencies = [ "anyhow", "cranelift-codegen", "cranelift-control", "cranelift-native", - "gimli 0.27.3", - "object 0.30.4", + "gimli", + "object", "target-lexicon", "wasmtime-environ", ] [[package]] name = "wasmtime-environ" -version = "11.0.2" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1189b2fa0e7fbf71a06c7c909ae7f8f0085f8f4e4365926d6ff1052e024effe9" +checksum = "c0116108e7d231cce15fe7dd642c66c3abb14dbcf169b0130e11f223ce8d1ad7" dependencies = [ "anyhow", "cranelift-entity", - "gimli 0.27.3", - "indexmap 1.9.3", + "gimli", + "indexmap 2.1.0", "log", - "object 0.30.4", + "object", "serde", + "serde_derive", "target-lexicon", "thiserror", - "wasm-encoder 0.29.0", - "wasmparser 0.107.0", + "wasm-encoder 0.36.2", + "wasmparser 0.116.1", "wasmprinter", "wasmtime-component-util", "wasmtime-types", @@ -4630,35 +4482,38 @@ dependencies = [ [[package]] name = "wasmtime-fiber" -version = "11.0.2" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0e22d42113a1181fee3477f96639fd88c757b303f7083e866691f47a06065c5" +checksum = "b8a5896355c37bf0f9feb4f1299142ef4bed8c92576aa3a41d150fed0cafa056" dependencies = [ + "anyhow", "cc", "cfg-if 1.0.0", - "rustix 0.37.27", + "rustix", "wasmtime-asm-macros", + "wasmtime-versioned-export-macros", "windows-sys", ] [[package]] name = "wasmtime-jit" -version = "11.0.2" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3b904e4920c5725dae5d2445c5923092f1d0dead3a521bd7f4218d7a9496842" +checksum = "e32b210767452f6b20157bb7c7d98295b92cc47aaad2a8aa31652f4469813a5d" dependencies = [ - "addr2line 0.19.0", + "addr2line", "anyhow", "bincode", "cfg-if 1.0.0", "cpp_demangle", - "gimli 0.27.3", + "gimli", "ittapi", "log", - "object 0.30.4", + "object", "rustc-demangle", - "rustix 0.37.27", + "rustix", "serde", + "serde_derive", "target-lexicon", "wasmtime-environ", "wasmtime-jit-debug", @@ -4669,20 +4524,21 @@ dependencies = [ [[package]] name = "wasmtime-jit-debug" -version = "11.0.2" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7228ed7aaedec75d6bd298f857e42f4626cffdb7b577c018eb2075c65d44dcf" +checksum = "bffd2785a16c55ac77565613ebda625f5850d4014af0499df750e8de97c04547" dependencies = [ - "object 0.30.4", + "object", "once_cell", - "rustix 0.37.27", + "rustix", + "wasmtime-versioned-export-macros", ] [[package]] name = "wasmtime-jit-icache-coherence" -version = "11.0.2" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "517750d84b6ebdb2c32226cee412c7e6aa48e4cebbb259d9a227b4317426adc6" +checksum = "b73ad1395eda136baec5ece7e079e0536a82ef73488e345456cc9b89858ad0ec" dependencies = [ "cfg-if 1.0.0", "libc", @@ -4691,63 +4547,86 @@ dependencies = [ [[package]] name = "wasmtime-runtime" -version = "11.0.2" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c89ef7f9d70f30fc5dfea15b61b65b81363bf8b3881ab76de3a7b24905c4e83a" +checksum = "77b50f7f3c1a8dabb2607f32a81242917bd77cee75f3dec66e04b02ccbb8ba07" dependencies = [ "anyhow", "cc", "cfg-if 1.0.0", "encoding_rs", - "indexmap 1.9.3", + "indexmap 2.1.0", "libc", "log", "mach", "memfd", - "memoffset 0.8.0", + "memoffset 0.9.0", "paste", "rand", - "rustix 0.37.27", + "rustix", "sptr", + "wasm-encoder 0.36.2", "wasmtime-asm-macros", "wasmtime-environ", "wasmtime-fiber", "wasmtime-jit-debug", + "wasmtime-versioned-export-macros", + "wasmtime-wmemcheck", "windows-sys", ] [[package]] name = "wasmtime-types" -version = "11.0.2" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ac19aadf941ad333cbb0307121482700d925a99624d4110859d69b7f658b69d" +checksum = "447973db3dc5c24db14130ab0922795c58790aec296d198ad9d253b82ec67471" dependencies = [ "cranelift-entity", "serde", + "serde_derive", "thiserror", - "wasmparser 0.107.0", + "wasmparser 0.116.1", +] + +[[package]] +name = "wasmtime-versioned-export-macros" +version = "15.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a347bb8ecf12275fb180afb1b1c85c9e186553c43109737bffed4f54c2aa365" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.39", ] [[package]] name = "wasmtime-wasi" -version = "11.0.2" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2214bfed500d91f2cf020c085bbdac431b27ab5e683000a65ede93c9b1fd7c14" +checksum = "77f94342fc932695027cdfa0500a62a680879bdad495b36490887b1564124e53" dependencies = [ "anyhow", "async-trait", - "bitflags 1.3.2", + "bitflags 2.4.1", + "bytes 1.5.0", "cap-fs-ext", + "cap-net-ext", "cap-rand", "cap-std", "cap-time-ext", "fs-set-times", + "futures 0.3.29", "io-extras", + "io-lifetimes", "libc", - "rustix 0.37.27", + "log", + "once_cell", + "rustix", "system-interface", "thiserror", + "tokio 1.34.0", "tracing", + "url", "wasi-cap-std-sync", "wasi-common", "wasmtime", @@ -4757,16 +4636,16 @@ dependencies = [ [[package]] name = "wasmtime-winch" -version = "11.0.2" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa0f80e89ec9671a6efc1507c37a3748a63b2566033d7d0993fa711696c4b24" +checksum = "dc8c602f026526d754c33b750f67d754234c6ec29595865916693c3306ca6a3b" dependencies = [ "anyhow", "cranelift-codegen", - "gimli 0.27.3", - "object 0.30.4", + "gimli", + "object", "target-lexicon", - "wasmparser 0.107.0", + "wasmparser 0.116.1", "wasmtime-cranelift-shared", "wasmtime-environ", "winch-codegen", @@ -4774,15 +4653,22 @@ dependencies = [ [[package]] name = "wasmtime-wit-bindgen" -version = "11.0.2" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aed98de4b3e68b1abe60f0dc59ecd74b757d70a39459d500a727a8cab3311bbb" +checksum = "41786c7bbbf250c0e685b291323b50c6bb65f0505a2c0b4f0b598c740f13f185" dependencies = [ "anyhow", "heck 0.4.1", - "wit-parser 0.8.0", + "indexmap 2.1.0", + "wit-parser", ] +[[package]] +name = "wasmtime-wmemcheck" +version = "15.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47907bdd67500c66fa308acbce7387c7bfb63b5505ef81be7fc897709afcca60" + [[package]] name = "wast" version = "35.0.2" @@ -4794,23 +4680,23 @@ dependencies = [ [[package]] name = "wast" -version = "68.0.0" +version = "69.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bf3081ac6bcb3a5b72a401693b3566feb529dc2b7e7b62ea544c8a30d0f4d05" +checksum = "efa51b5ad1391943d1bfad537e50f28fe938199ee76b115be6bae83802cd5185" dependencies = [ "leb128", "memchr", "unicode-width", - "wasm-encoder 0.37.0", + "wasm-encoder 0.38.0", ] [[package]] name = "wat" -version = "1.0.80" +version = "1.0.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fabe07d22a837b3bd5662ba9e980d73de115c040923659a1801934c7ccebe49" +checksum = "74a4c2488d058326466e086a43f5d4ea448241a8d0975e3eb0642c0828be1eb3" dependencies = [ - "wast 68.0.0", + "wast 69.0.0", ] [[package]] @@ -4848,18 +4734,18 @@ dependencies = [ "either", "home", "once_cell", - "rustix 0.38.24", + "rustix", ] [[package]] name = "wiggle" -version = "11.0.2" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "947e89009051ddc4e58a2d653103165147e1aee5737603044160d9bc4847aab1" +checksum = "35b5a36af7e0a7d68fd6c080e78803b34c3105caa3f743dff2fc8db2fac4ab71" dependencies = [ "anyhow", "async-trait", - "bitflags 1.3.2", + "bitflags 2.4.1", "thiserror", "tracing", "wasmtime", @@ -4868,28 +4754,28 @@ dependencies = [ [[package]] name = "wiggle-generate" -version = "11.0.2" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7344729841849d8841ef22164fe848ed6fce8b5eb74ab8b3739296146e10af5" +checksum = "09f5a763e4801e83c438e7fa6abdd5c38d735194c2a94e2f2ccdcc66456cefee" dependencies = [ "anyhow", "heck 0.4.1", "proc-macro2", "quote", "shellexpand", - "syn 1.0.109", + "syn 2.0.39", "witx", ] [[package]] name = "wiggle-macro" -version = "11.0.2" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93acdd0b56b3e78a272fa937135d515ea9b690f94cb452b5165ac3ae614341ca" +checksum = "58262f5ac3a8ea686d4b940aa9f976f26c7e4e980aa8ac378f29274cb8638e33" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.39", "wiggle-generate", ] @@ -4921,15 +4807,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" -[[package]] -name = "winapi-util" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" -dependencies = [ - "winapi 0.3.9", -] - [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" @@ -4938,17 +4815,17 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "winch-codegen" -version = "0.9.2" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1a1a53444157fc27c3f3e98e5e19a1717efad8749959a3d493d0f6bbf0f0b3d" +checksum = "9057ea325cac1ec02b28418da975a9f3a3634611812dc6150401347f1774844e" dependencies = [ "anyhow", "cranelift-codegen", - "gimli 0.27.3", + "gimli", "regalloc2", "smallvec 1.11.2", "target-lexicon", - "wasmparser 0.107.0", + "wasmparser 0.116.1", "wasmtime-environ", ] @@ -5046,17 +4923,6 @@ dependencies = [ "windows-sys", ] -[[package]] -name = "winx" -version = "0.35.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c52a121f0fbf9320d5f2a9a5d82f6cb7557eda5e8b47fc3e7f359ec866ae960" -dependencies = [ - "bitflags 1.3.2", - "io-lifetimes 1.0.11", - "windows-sys", -] - [[package]] name = "winx" version = "0.36.2" @@ -5069,9 +4935,9 @@ dependencies = [ [[package]] name = "wit-bindgen" -version = "0.7.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a628591b3905328e886462f75de3b2af1e546b19af5f4c359086b26bec29c4bd" +checksum = "0205c6e67438f9d657318e0d7ee407a8017cd7bc5f1636cd4a280d4ccbc8d4a0" dependencies = [ "bitflags 2.4.1", "wit-bindgen-rust-macro", @@ -5079,114 +4945,77 @@ dependencies = [ [[package]] name = "wit-bindgen-core" -version = "0.7.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34a19aa69c4f33cb5ac10e55880a899f4d52ec85d4cde4d593b575e7a97e2b08" +checksum = "4dfc34e539edf78da2efed167549962a4d26000db04694408285f52d90703fee" dependencies = [ "anyhow", - "wit-component 0.11.0", - "wit-parser 0.8.0", + "wit-component", + "wit-parser", ] [[package]] name = "wit-bindgen-rust" -version = "0.7.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a50274c0cf2f8e33fc967825cef0114cdfe222d474c1d78aa77a6a801abaadf" -dependencies = [ - "heck 0.4.1", - "wasm-metadata 0.8.0", - "wit-bindgen-core", - "wit-bindgen-rust-lib", - "wit-component 0.11.0", -] - -[[package]] -name = "wit-bindgen-rust-lib" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d3d58b5ced269f1a1cdcecfe0317c059fe158da9b670fff9907903b244bb89a" +checksum = "e898ad170a2796e9ecc495ce52cc2518dc35364ec042a4e108dd3c454e2a24c6" dependencies = [ + "anyhow", "heck 0.4.1", + "wasm-metadata", "wit-bindgen-core", + "wit-component", ] [[package]] name = "wit-bindgen-rust-macro" -version = "0.7.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78cce32dd08007af45dbaa00e225eb73d05524096f93933d7ecba852d50d8af3" +checksum = "cde5bc98cd9ebc817e7a0325120b5cf047643c2cc4583b917e66914215f94cff" dependencies = [ "anyhow", "proc-macro2", + "quote", "syn 2.0.39", "wit-bindgen-core", "wit-bindgen-rust", - "wit-component 0.11.0", -] - -[[package]] -name = "wit-component" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cbd4c7f8f400327c482c88571f373844b7889e61460650d650fc5881bb3575c" -dependencies = [ - "anyhow", - "bitflags 1.3.2", - "indexmap 1.9.3", - "log", - "wasm-encoder 0.29.0", - "wasm-metadata 0.8.0", - "wasmparser 0.107.0", - "wit-parser 0.8.0", + "wit-component", ] [[package]] name = "wit-component" -version = "0.12.0" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "253bd426c532f1cae8c633c517c63719920535f3a7fada3589de40c5b734e393" +checksum = "5b8a35a2a9992898c9d27f1664001860595a4bc99d32dd3599d547412e17d7e2" dependencies = [ "anyhow", - "bitflags 1.3.2", + "bitflags 2.4.1", "indexmap 2.1.0", "log", - "wasm-encoder 0.30.0", - "wasm-metadata 0.9.0", - "wasmparser 0.108.0", - "wit-parser 0.9.2", -] - -[[package]] -name = "wit-parser" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6daec9f093dbaea0e94043eeb92ece327bbbe70c86b1f41aca9bbfefd7f050f0" -dependencies = [ - "anyhow", - "id-arena", - "indexmap 1.9.3", - "log", - "pulldown-cmark 0.8.0", - "semver 1.0.20", - "unicode-xid", - "url", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder 0.38.0", + "wasm-metadata", + "wasmparser 0.118.0", + "wit-parser", ] [[package]] name = "wit-parser" -version = "0.9.2" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "541efa2046e544de53a9da1e2f6299e63079840360c9e106f1f8275a97771318" +checksum = "15df6b7b28ce94b8be39d8df5cb21a08a4f3b9f33b631aedb4aa5776f785ead3" dependencies = [ "anyhow", "id-arena", "indexmap 2.1.0", "log", - "pulldown-cmark 0.9.3", "semver 1.0.20", + "serde", + "serde_derive", + "serde_json", "unicode-xid", - "url", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 6b1ef37f..4b94fc91 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,6 +16,9 @@ maintenance = { status = "experimental" } [dependencies] bulwark-config = { workspace = true } bulwark-ext-processor = { workspace = true } + +wit-component = { workspace = true } + chrono = { workspace = true } envoy-control-plane = { workspace = true } http = { workspace = true } @@ -27,7 +30,6 @@ tokio = { workspace = true } toml = { workspace = true } tonic = { workspace = true } tracing = { workspace = true } -wit-component = { workspace = true } axum = { version = "0.6.18", features = ["http2"] } cargo_metadata = "0.18.1" @@ -85,14 +87,14 @@ bulwark-wasm-sdk = { path = "crates/wasm-sdk", version = "=0.3.0" } bulwark-wasm-sdk-macros = { path = "crates/wasm-sdk-macros", version = "=0.3.0" } # WASM dependencies -wasi-cap-std-sync = { version = "11" } -wasi-common = { version = "11" } -wasmtime = { version = "11", features = ["component-model"] } -wasmtime-types = { version = "11" } -wasmtime-wasi = { version = "11" } -wat = "1.0.57" -wit-bindgen = "0.7.0" -wit-component = "0.12.0" +wasi-cap-std-sync = { version = "15" } +wasi-common = { version = "15" } +wasmtime = { version = "15", features = ["component-model"] } +wasmtime-types = { version = "15" } +wasmtime-wasi = { version = "15" } +wat = "1.0.81" +wit-bindgen = "0.14.0" +wit-component = "0.18.2" # Other shared external dependencies anyhow = "1" diff --git a/adapter/README.md b/adapter/README.md new file mode 100644 index 00000000..cfeb7bf9 --- /dev/null +++ b/adapter/README.md @@ -0,0 +1,14 @@ +# WASI Preview 1 Adapter + +Because the Rust compiler output is WASI Preview 1 and Bulwark currently +uses WASI Preview 2, we need an adapter to convert the compiler's output. +This adapter should be updated with each new `wasmtime` release. The +`git-sha` file is used to record the git commit SHA the adapter came from. + +This file is acquired from the `wasmtime` project's "CI" workflow: + + +The correct CI run is found by filtering for "branch:release-x.y.z", +locating the run that corresponds to the appropriate release tag, and then by +downloading the zip file for the "bins-wasi-preview1-component-adapter" +artifact. diff --git a/adapter/git-sha b/adapter/git-sha new file mode 100644 index 00000000..bab03936 --- /dev/null +++ b/adapter/git-sha @@ -0,0 +1 @@ +6f0da842311d6de7afbb2936db347b516a298517 diff --git a/adapter/wasi_snapshot_preview1.reactor.wasm b/adapter/wasi_snapshot_preview1.reactor.wasm index a1047a46..c8320e0b 100644 Binary files a/adapter/wasi_snapshot_preview1.reactor.wasm and b/adapter/wasi_snapshot_preview1.reactor.wasm differ diff --git a/crates/ext-processor/src/service.rs b/crates/ext-processor/src/service.rs index 78327ab3..dcfa85ba 100644 --- a/crates/ext-processor/src/service.rs +++ b/crates/ext-processor/src/service.rs @@ -1459,7 +1459,8 @@ impl BulwarkProcessor { // TODO: refactor to process one plugin at a time and try to avoid having handle_decision_feedback join_all for plugin_instance in plugin_instances { let plugin_instance = plugin_instance.lock().await; - let (_, stdout, stderr) = plugin_instance.stdio().into_inner(); + let stdout = plugin_instance.stdio().stdout_buffer(); + let stderr = plugin_instance.stdio().stderr_buffer(); if !stdout.is_empty() { let stdout = str::from_utf8(&stdout).unwrap(); for line in stdout.lines() { diff --git a/crates/wasm-host/Cargo.toml b/crates/wasm-host/Cargo.toml index 4f2bdbb2..f75e28b3 100644 --- a/crates/wasm-host/Cargo.toml +++ b/crates/wasm-host/Cargo.toml @@ -36,6 +36,7 @@ thiserror = { workspace = true } validator = { workspace = true } async-trait = "0.1.68" +bytes = "1.5.0" url = "2.3.1" [dev-dependencies] diff --git a/crates/wasm-host/src/plugin.rs b/crates/wasm-host/src/plugin.rs index dda25ead..fb8b6262 100644 --- a/crates/wasm-host/src/plugin.rs +++ b/crates/wasm-host/src/plugin.rs @@ -31,15 +31,15 @@ use { net::IpAddr, ops::DerefMut, path::Path, - sync::{Arc, Mutex, MutexGuard, RwLock}, + sync::{Arc, Mutex, MutexGuard}, }, url::Url, validator::Validate, wasmtime::component::{Component, Linker}, wasmtime::{AsContextMut, Config, Engine, Store}, wasmtime_wasi::preview2::{ - pipe::{ReadPipe, WritePipe}, - Table, WasiCtx, WasiCtxBuilder, WasiView, + pipe::MemoryOutputPipe, HostOutputStream, StdoutStream, Table, WasiCtx, WasiCtxBuilder, + WasiView, }, }; @@ -334,12 +334,10 @@ impl RequestContext { request: Arc, ) -> Result { let stdio = PluginStdio::default(); - let mut wasi_table = Table::new(); let wasi_ctx = WasiCtxBuilder::new() - .set_stdin(ReadPipe::from_shared(stdio.stdin.clone())) - .set_stdout(WritePipe::from_shared(stdio.stdout.clone())) - .set_stderr(WritePipe::from_shared(stdio.stderr.clone())) - .build(&mut wasi_table)?; + .stdout(stdio.stdout.clone()) + .stderr(stdio.stderr.clone()) + .build(); let client_ip = request .extensions() .get::() @@ -347,7 +345,7 @@ impl RequestContext { Ok(RequestContext { wasi_ctx, - wasi_table, + wasi_table: Table::new(), read_only_ctx: ReadOnlyContext { config: Arc::new(plugin.guest_config()?), permissions: plugin.permissions(), @@ -546,33 +544,50 @@ impl HostMutableContext { } } +/// Allows the host to capture plugin standard IO and record it to the log. +#[derive(Clone)] +struct BufStdoutStream(MemoryOutputPipe); + +impl BufStdoutStream { + pub fn contents(&self) -> bytes::Bytes { + self.0.contents() + } + + pub(crate) fn writer(&self) -> impl HostOutputStream { + self.0.clone() + } +} + +impl Default for BufStdoutStream { + fn default() -> Self { + Self(MemoryOutputPipe::new(usize::MAX)) + } +} + +impl StdoutStream for BufStdoutStream { + fn stream(&self) -> Box { + Box::new(self.writer()) + } + + fn isatty(&self) -> bool { + false + } +} + /// Wraps buffers to capture plugin stdio. #[derive(Clone, Default)] pub struct PluginStdio { - stdin: Arc>>>, - stdout: Arc>>>, - stderr: Arc>>>, + stdout: BufStdoutStream, + stderr: BufStdoutStream, } impl PluginStdio { - pub fn into_inner(&self) -> (Vec, Vec, Vec) { - ( - self.stdin - .read() - .expect("poisoned mutex") - .clone() - .into_inner(), - self.stdout - .read() - .expect("poisoned mutex") - .clone() - .into_inner(), - self.stderr - .read() - .expect("poisoned mutex") - .clone() - .into_inner(), - ) + pub fn stdout_buffer(&self) -> Vec { + self.stdout.contents().to_vec() + } + + pub fn stderr_buffer(&self) -> Vec { + self.stderr.contents().to_vec() } } @@ -616,7 +631,7 @@ impl PluginInstance { // convert from normal request struct to wasm request interface let mut linker: Linker = Linker::new(&plugin.engine); - wasmtime_wasi::preview2::wasi::command::add_to_linker(&mut linker)?; + wasmtime_wasi::preview2::command::add_to_linker(&mut linker)?; let mut store = Store::new(&plugin.engine, request_context); bulwark_host::HostApi::add_to_linker(&mut linker, |ctx: &mut RequestContext| ctx)?; diff --git a/crates/wasm-sdk-macros/src/lib.rs b/crates/wasm-sdk-macros/src/lib.rs index 09828a3c..edcfd4c3 100644 --- a/crates/wasm-sdk-macros/src/lib.rs +++ b/crates/wasm-sdk-macros/src/lib.rs @@ -81,7 +81,7 @@ pub fn bulwark_plugin(_: TokenStream, input: TokenStream) -> TokenStream { } else { return syn::Error::new( raw_impl.self_ty.span(), - "`bulwark_plugin` requires an impl for the `Handlers` trait", + "`bulwark_plugin` requires an impl for the `Guest` trait", ) .to_compile_error() .into(); @@ -173,55 +173,23 @@ pub fn bulwark_plugin(_: TokenStream, input: TokenStream) -> TokenStream { }; let output = quote! { - impl bulwark_wasm_sdk::handlers::Handlers for #struct_type { + mod handlers { + use super::#struct_type; + + wit_bindgen::generate!({ + world: "bulwark:plugin/handlers", + exports: { + world: #struct_type + } + }); + } + + use handlers::Guest as Handlers; + impl Handlers for #struct_type { #init_handler #(#new_items)* #(#noop_handlers)* } - const _: () = { - #[doc(hidden)] - #[export_name = "on-init"] - #[allow(non_snake_case)] - unsafe extern "C" fn __export_handlers_on_init() -> i32 { - handlers::call_on_init::<#struct_type>() - } - #[doc(hidden)] - #[export_name = "on-request"] - #[allow(non_snake_case)] - unsafe extern "C" fn __export_handlers_on_request() -> i32 { - handlers::call_on_request::<#struct_type>() - } - #[doc(hidden)] - #[export_name = "on-request-decision"] - #[allow(non_snake_case)] - unsafe extern "C" fn __export_handlers_on_request_decision() -> i32 { - handlers::call_on_request_decision::<#struct_type>() - } - #[doc(hidden)] - #[export_name = "on-response-decision"] - #[allow(non_snake_case)] - unsafe extern "C" fn __export_handlers_on_response_decision() -> i32 { - handlers::call_on_response_decision::<#struct_type>() - } - #[doc(hidden)] - #[export_name = "on-request-body-decision"] - #[allow(non_snake_case)] - unsafe extern "C" fn __export_handlers_on_request_body_decision() -> i32 { - handlers::call_on_request_body_decision::<#struct_type>() - } - #[doc(hidden)] - #[export_name = "on-response-body-decision"] - #[allow(non_snake_case)] - unsafe extern "C" fn __export_handlers_on_response_body_decision() -> i32 { - handlers::call_on_response_body_decision::<#struct_type>() - } - #[doc(hidden)] - #[export_name = "on-decision-feedback"] - #[allow(non_snake_case)] - unsafe extern "C" fn __export_handlers_on_decision_feedback() -> i32 { - handlers::call_on_decision_feedback::<#struct_type>() - } - }; }; output.into() diff --git a/crates/wasm-sdk/examples/blank-slate/Cargo.toml b/crates/wasm-sdk/examples/blank-slate/Cargo.toml index 8c57bf3f..cbf39486 100644 --- a/crates/wasm-sdk/examples/blank-slate/Cargo.toml +++ b/crates/wasm-sdk/examples/blank-slate/Cargo.toml @@ -14,6 +14,7 @@ maintenance = { status = "experimental" } [dependencies] bulwark-wasm-sdk = { path = "../..", version = "0.3.0" } +wit-bindgen = "0.14.0" [lib] crate-type = ["cdylib"] diff --git a/crates/wasm-sdk/examples/blank-slate/wit/plugin.wit b/crates/wasm-sdk/examples/blank-slate/wit/plugin.wit new file mode 120000 index 00000000..e9f71628 --- /dev/null +++ b/crates/wasm-sdk/examples/blank-slate/wit/plugin.wit @@ -0,0 +1 @@ +../../../../../wit/plugin.wit \ No newline at end of file diff --git a/crates/wasm-sdk/examples/evil-bit/Cargo.toml b/crates/wasm-sdk/examples/evil-bit/Cargo.toml index da2f99b6..531ba4ad 100644 --- a/crates/wasm-sdk/examples/evil-bit/Cargo.toml +++ b/crates/wasm-sdk/examples/evil-bit/Cargo.toml @@ -14,6 +14,7 @@ maintenance = { status = "experimental" } [dependencies] bulwark-wasm-sdk = { path = "../..", version = "0.3.0" } +wit-bindgen = "0.14.0" [lib] crate-type = ["cdylib"] diff --git a/crates/wasm-sdk/examples/evil-bit/wit/plugin.wit b/crates/wasm-sdk/examples/evil-bit/wit/plugin.wit new file mode 120000 index 00000000..e9f71628 --- /dev/null +++ b/crates/wasm-sdk/examples/evil-bit/wit/plugin.wit @@ -0,0 +1 @@ +../../../../../wit/plugin.wit \ No newline at end of file diff --git a/crates/wasm-sdk/src/host_api.rs b/crates/wasm-sdk/src/host_api.rs index fe52f35b..d1bb7b58 100644 --- a/crates/wasm-sdk/src/host_api.rs +++ b/crates/wasm-sdk/src/host_api.rs @@ -327,7 +327,6 @@ pub fn set_restricted(value: f64) { #[inline] pub fn set_tags, V: Into>(tags: I) { let tags: Vec = tags.into_iter().map(|s| s.into()).collect(); - let tags: Vec<&str> = tags.iter().map(|s| s.as_str()).collect(); crate::bulwark_host::set_tags(tags.as_slice()) } @@ -352,7 +351,6 @@ pub fn set_tags, V: Into>(tags: I) { #[inline] pub fn append_tags, V: Into>(tags: I) -> Vec { let tags: Vec = tags.into_iter().map(|s| s.into()).collect(); - let tags: Vec<&str> = tags.iter().map(|s| s.as_str()).collect(); crate::bulwark_host::append_tags(tags.as_slice()) } @@ -532,10 +530,10 @@ pub fn check_rate_limit(key: &str) -> Result { /// /// # Examples /// -/// ```no_run +/// ```ignore /// use bulwark_wasm_sdk::*; /// -/// pub struct CircuitBreaker; +/// struct CircuitBreaker; /// /// #[bulwark_plugin] /// impl Handlers for CircuitBreaker { diff --git a/crates/wasm-sdk/src/lib.rs b/crates/wasm-sdk/src/lib.rs index e5319d4f..ae0e1418 100644 --- a/crates/wasm-sdk/src/lib.rs +++ b/crates/wasm-sdk/src/lib.rs @@ -10,13 +10,9 @@ pub mod bulwark_host { world: "bulwark:plugin/host-api" }); } -#[allow(unused_macros)] -#[doc(hidden)] -pub mod handlers { - wit_bindgen::generate!({ - world: "bulwark:plugin/handlers" - }); -} + +// Due to https://github.com/bytecodealliance/wit-bindgen/issues/674 we don't call `generate!` for +// the handlers and instead define the trait manually and do the bindings through our own macro. mod errors; mod from; @@ -25,9 +21,4 @@ mod host_api; pub use bulwark_decision::*; pub use errors::*; pub use from::*; -/// The handler functions a plugin needs to expose to process requests and generate decisions. -/// -/// See the [`bulwark_plugin`](https://docs.rs/bulwark-wasm-sdk/latest/bulwark_wasm_sdk/attr.bulwark_plugin.html) -/// attribute for additional details on how to use this trait. -pub use handlers::Handlers; pub use host_api::*; diff --git a/src/build.rs b/src/build.rs index ff8abba4..4f16336b 100644 --- a/src/build.rs +++ b/src/build.rs @@ -68,6 +68,19 @@ fn install_wasm32_wasi_target() -> Result<(), BuildError> { Ok(()) } +/// Replace the plugin's vendored plugin.wit file with the one embedded in this binary. +/// This ensures that the plugin.wit file is always in sync with the version of the CLI that's +/// performing the build. +/// +/// Needed to make wit-bindgen work. +fn replace_plugin_wit_files(root_path: impl AsRef) -> Result<(), BuildError> { + let plugin_wit = include_bytes!("../wit/plugin.wit"); + let plugin_wit_dest_path = root_path.as_ref().join(Path::new("wit/plugin.wit")); + std::fs::create_dir_all(root_path.as_ref().join(Path::new("wit/")))?; + std::fs::write(plugin_wit_dest_path, plugin_wit)?; + Ok(()) +} + /// Builds a plugin. /// /// Compiles the plugin with the `wasm32-wasi` target, and installs it if it is missing. @@ -87,6 +100,8 @@ pub(crate) fn build_plugin( let output = output.as_ref(); let output_dir = output.parent().ok_or(BuildError::MissingParent)?; + replace_plugin_wit_files(path)?; + let installed_targets = installed_targets()?; let wasi_installed = installed_targets.get("wasm32-wasi"); if !wasi_installed.unwrap_or(&false) { diff --git a/wit/plugin.wit b/wit/plugin.wit index bd5ee28f..7abeb29a 100644 --- a/wit/plugin.wit +++ b/wit/plugin.wit @@ -1,11 +1,11 @@ -package bulwark:plugin +package bulwark:plugin; -// TODO: See https://github.com/WebAssembly/wasi-http for a more complete canonical http component interface -// TODO: request/response bodies might be better handled as resource types? -// see: https://github.com/WebAssembly/component-model/blob/main/design/mvp/WIT.md#item-resource +/* TODO: See https://github.com/WebAssembly/wasi-http for a more complete canonical http component interface */ +/* TODO: request/response bodies might be better handled as resource types? + see: https://github.com/WebAssembly/component-model/blob/main/design/mvp/WIT.md#item-resource */ world host-api { - // TODO: should these strings all be list? + /* TODO: should these strings all be list? */ record request-interface { method: string, uri: string, @@ -78,45 +78,45 @@ world host-api { content-too-large(string), } - // TODO: many of these should return the result type; historically this wasn't supported but this should be fixed? + /* TODO: many of these should return the result type; historically this wasn't supported but this should be fixed? */ - import get-config: func() -> list - import get-param-value: func(key: string) -> result, param-error> - import set-param-value: func(key: string, value: list) -> result<_, param-error> - import get-env-bytes: func(key: string) -> result, env-error> + import get-config: func() -> list; + import get-param-value: func(key: string) -> result, param-error>; + import set-param-value: func(key: string, value: list) -> result<_, param-error>; + import get-env-bytes: func(key: string) -> result, env-error>; - import get-request: func() -> request-interface - import get-response: func() -> option - import receive-request-body: func(body: bool) - import receive-response-body: func(body: bool) - import get-client-ip: func() -> option + import get-request: func() -> request-interface; + import get-response: func() -> option; + import receive-request-body: func(body: bool); + import receive-response-body: func(body: bool); + import get-client-ip: func() -> option; - import set-decision: func(decision: decision-interface) -> result<_, decision-error> - import set-tags: func(tags: list) - import append-tags: func(tags: list) -> list - import get-combined-decision: func() -> option - import get-combined-tags: func() -> option> - import get-outcome: func() -> option + import set-decision: func(decision: decision-interface) -> result<_, decision-error>; + import set-tags: func(tags: list); + import append-tags: func(tags: list) -> list; + import get-combined-decision: func() -> option; + import get-combined-tags: func() -> option>; + import get-outcome: func() -> option; - import get-remote-state: func(key: string) -> result, state-error> - import set-remote-state: func(key: string, value: list) -> result<_, state-error> - import increment-remote-state: func(key: string) -> result - import increment-remote-state-by: func(key: string, delta: s64) -> result - import set-remote-ttl: func(key: string, ttl: s64) -> result<_, state-error> + import get-remote-state: func(key: string) -> result, state-error>; + import set-remote-state: func(key: string, value: list) -> result<_, state-error>; + import increment-remote-state: func(key: string) -> result; + import increment-remote-state-by: func(key: string, delta: s64) -> result; + import set-remote-ttl: func(key: string, ttl: s64) -> result<_, state-error>; - import send-request: func(request: request-interface) -> result + import send-request: func(request: request-interface) -> result; - import increment-rate-limit: func(key: string, delta: s64, window: s64) -> result - import check-rate-limit: func(key: string) -> result - import increment-breaker: func(key: string, success-delta: s64, failure-delta: s64, window: s64) -> result - import check-breaker: func(key: string) -> result + import increment-rate-limit: func(key: string, delta: s64, window: s64) -> result; + import check-rate-limit: func(key: string) -> result; + import increment-breaker: func(key: string, success-delta: s64, failure-delta: s64, window: s64) -> result; + import check-breaker: func(key: string) -> result; } world handlers { - export on-init: func() -> result - export on-request: func() -> result - export on-request-decision: func() -> result - export on-response-decision: func() -> result - export on-request-body-decision: func() -> result - export on-response-body-decision: func() -> result - export on-decision-feedback: func() -> result + export on-init: func() -> result; + export on-request: func() -> result; + export on-request-decision: func() -> result; + export on-response-decision: func() -> result; + export on-request-body-decision: func() -> result; + export on-response-body-decision: func() -> result; + export on-decision-feedback: func() -> result; }