From d755d29577dcc409ca7e067d0d8e03af57b09ced Mon Sep 17 00:00:00 2001 From: Marshall Bowers Date: Thu, 25 Jul 2024 13:56:40 -0400 Subject: [PATCH] extension: Upgrade `wasmtime` to v21 (#15210) This PR upgrades the version of `wasmtime` and `wasmtime-wasi` in use to v21.0.1. We have to skip v20 because Tree-sitter also skipped it. Here are the changes that had to be made: ### v19 -> v20 After upgrading the `wasmtime` packages to v20, I also had to run `cargo update -p mach2` to pull in [v0.4.2](https://github.com/JohnTitor/mach2/releases/tag/0.4.2) to fix some compile errors. There were a few minor API changes in `wasmtime-wasi` from https://github.com/bytecodealliance/wasmtime/pull/8228 that we needed to account for. ### v20 -> v21 Since there isn't a Tree-sitter version that depends on `wasmtime@v20`, we're jumping straight to v21. The published version of Tree-sitter (v0.22.6) still depends on `wasmtime@v19`, but there was a commit (https://github.com/tree-sitter/tree-sitter/commit/7f4a57817d58a2f134fe863674acad6bbf007228) later that month that upgrades the `wasmtime` dependency to v21. We're patching Tree-sitter to that commit so we can get the new `wasmtime` version. The main change in v21 is that imports generated by `bindgen!` are no longer automatically trapped (https://github.com/bytecodealliance/wasmtime/pull/8310), so we need to add `trappable_imports: true` to our `bindgen!` calls. Release Notes: - N/A --- Cargo.lock | 360 ++++++++++-------- Cargo.toml | 9 +- crates/extension/Cargo.toml | 1 - crates/extension/src/wasm_host.rs | 22 +- crates/extension/src/wasm_host/wit.rs | 2 +- .../src/wasm_host/wit/since_v0_0_1.rs | 1 + .../src/wasm_host/wit/since_v0_0_4.rs | 1 + .../src/wasm_host/wit/since_v0_0_6.rs | 1 + .../src/wasm_host/wit/since_v0_0_7.rs | 1 + 9 files changed, 214 insertions(+), 184 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2185377a2bc82..370fc7dff42f6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -59,9 +59,9 @@ dependencies = [ [[package]] name = "ahash" -version = "0.8.8" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42cd52102d3df161c77a887b608d7a4897d7cc112886a9537b738a887a03aaff" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", "const-random", @@ -1461,7 +1461,7 @@ dependencies = [ "cfg-if", "libc", "miniz_oxide", - "object", + "object 0.32.1", "rustc-demangle", ] @@ -2367,6 +2367,12 @@ dependencies = [ "smallvec", ] +[[package]] +name = "cobs" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15" + [[package]] name = "cocoa" version = "0.25.0" @@ -2890,18 +2896,18 @@ dependencies = [ [[package]] name = "cranelift-bforest" -version = "0.106.2" +version = "0.108.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b57d4f3ffc28bbd6ef1ca7b50b20126717232f97487efe027d135d9d87eb29c" +checksum = "29daf137addc15da6bab6eae2c4a11e274b1d270bf2759508e62f6145e863ef6" dependencies = [ "cranelift-entity", ] [[package]] name = "cranelift-codegen" -version = "0.106.2" +version = "0.108.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1f7d0ac7fd53f2c29db3ff9a063f6ff5a8be2abaa8f6942aceb6e1521e70df7" +checksum = "de619867d5de4c644b7fd9904d6e3295269c93d8a71013df796ab338681222d4" dependencies = [ "bumpalo", "cranelift-bforest", @@ -2914,39 +2920,40 @@ dependencies = [ "hashbrown 0.14.5", "log", "regalloc2", + "rustc-hash", "smallvec", "target-lexicon", ] [[package]] name = "cranelift-codegen-meta" -version = "0.106.2" +version = "0.108.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b40bf21460a600178956cb7fd900a7408c6587fbb988a8063f7215361801a1da" +checksum = "29f5cf277490037d8dae9513d35e0ee8134670ae4a964a5ed5b198d4249d7c10" dependencies = [ "cranelift-codegen-shared", ] [[package]] name = "cranelift-codegen-shared" -version = "0.106.2" +version = "0.108.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d792ecc1243b7ebec4a7f77d9ed428ef27456eeb1f8c780587a6f5c38841be19" +checksum = "8c3e22ecad1123343a3c09ac6ecc532bb5c184b6fcb7888df0ea953727f79924" [[package]] name = "cranelift-control" -version = "0.106.2" +version = "0.108.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea2808043df964b73ad7582e09afbbe06a31f3fb9db834d53e74b4e16facaeb" +checksum = "53ca3ec6d30bce84ccf59c81fead4d16381a3ef0ef75e8403bc1e7385980da09" dependencies = [ "arbitrary", ] [[package]] name = "cranelift-entity" -version = "0.106.2" +version = "0.108.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1930946836da6f514da87625cd1a0331f3908e0de454628c24a0b97b130c4d4" +checksum = "7eabb8d36b0ca8906bec93c78ea516741cac2d7e6b266fa7b0ffddcc09004990" dependencies = [ "serde", "serde_derive", @@ -2954,9 +2961,9 @@ dependencies = [ [[package]] name = "cranelift-frontend" -version = "0.106.2" +version = "0.108.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5482a5fcdf98f2f31b21093643bdcfe9030866b8be6481117022e7f52baa0f2b" +checksum = "44b42630229e49a8cfcae90bdc43c8c4c08f7a7aa4618b67f79265cd2f996dd2" dependencies = [ "cranelift-codegen", "log", @@ -2966,15 +2973,15 @@ dependencies = [ [[package]] name = "cranelift-isle" -version = "0.106.2" +version = "0.108.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f6e1869b6053383bdb356900e42e33555b4c9ebee05699469b7c53cdafc82ea" +checksum = "918d1e36361805dfe0b6cdfd5a5ffdb5d03fa796170c5717d2727cbe623b93a0" [[package]] name = "cranelift-native" -version = "0.106.2" +version = "0.108.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a91446e8045f1c4bc164b7bba68e2419c623904580d4b730877a663c6da38964" +checksum = "75aea85a0d7e1800b14ce9d3f53adf8ad4d1ee8a9e23b0269bdc50285e93b9b3" dependencies = [ "cranelift-codegen", "libc", @@ -2983,9 +2990,9 @@ dependencies = [ [[package]] name = "cranelift-wasm" -version = "0.106.2" +version = "0.108.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8b17979b862d3b0d52de6ae3294ffe4d86c36027b56ad0443a7c8c8f921d14f" +checksum = "dac491fd3473944781f0cf9528c90cc899d18ad438da21961a839a3a44d57dfb" dependencies = [ "cranelift-codegen", "cranelift-entity", @@ -2993,7 +3000,7 @@ dependencies = [ "itertools 0.12.1", "log", "smallvec", - "wasmparser", + "wasmparser 0.207.0", "wasmtime-types", ] @@ -3631,6 +3638,12 @@ dependencies = [ "winreg 0.52.0", ] +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + [[package]] name = "emojis" version = "0.6.1" @@ -3864,7 +3877,6 @@ dependencies = [ "async-compression", "async-tar", "async-trait", - "cap-std", "client", "collections", "ctor", @@ -3896,8 +3908,8 @@ dependencies = [ "ui", "url", "util", - "wasm-encoder", - "wasmparser", + "wasm-encoder 0.201.0", + "wasmparser 0.201.0", "wasmtime", "wasmtime-wasi", "wit-component", @@ -4952,7 +4964,7 @@ version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" dependencies = [ - "ahash 0.8.8", + "ahash 0.8.11", ] [[package]] @@ -4961,7 +4973,7 @@ version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ - "ahash 0.8.8", + "ahash 0.8.11", "allocator-api2", ] @@ -6355,20 +6367,11 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" -[[package]] -name = "mach" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa" -dependencies = [ - "libc", -] - [[package]] name = "mach2" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d0d1830bcd151a6fc4aea1369af235b36c1528fe976b8ff678683c9995eade8" +checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709" dependencies = [ "libc", ] @@ -7070,6 +7073,15 @@ name = "object" version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +dependencies = [ + "memchr", +] + +[[package]] +name = "object" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8dd6c0cdf9429bce006e1362bfce61fa1bfd8c898a643ed8d2b471934701d3d" dependencies = [ "crc32fast", "hashbrown 0.14.5", @@ -7824,6 +7836,17 @@ dependencies = [ "thiserror", ] +[[package]] +name = "postcard" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a55c51ee6c0db07e68448e336cf8ea4131a620edefebf9893e759b2d793420f8" +dependencies = [ + "cobs", + "embedded-io", + "serde", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -9852,6 +9875,9 @@ name = "smallvec" version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +dependencies = [ + "serde", +] [[package]] name = "smol" @@ -10030,7 +10056,7 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d6753e460c998bbd4cd8c6f0ed9a64346fcca0723d6e75e52fdc351c5d2169d" dependencies = [ - "ahash 0.8.8", + "ahash 0.8.11", "atoi", "bigdecimal", "byteorder", @@ -11430,11 +11456,11 @@ dependencies = [ [[package]] name = "tree-sitter" version = "0.22.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df7cc499ceadd4dcdf7ec6d4cbc34ece92c3fa07821e287aedecd4416c516dca" +source = "git+https://github.com/tree-sitter/tree-sitter?rev=7f4a57817d58a2f134fe863674acad6bbf007228#7f4a57817d58a2f134fe863674acad6bbf007228" dependencies = [ "cc", "regex", + "tree-sitter-language", "wasmtime-c-api-impl", ] @@ -11565,6 +11591,11 @@ dependencies = [ "tree-sitter", ] +[[package]] +name = "tree-sitter-language" +version = "0.1.0" +source = "git+https://github.com/tree-sitter/tree-sitter?rev=7f4a57817d58a2f134fe863674acad6bbf007228#7f4a57817d58a2f134fe863674acad6bbf007228" + [[package]] name = "tree-sitter-md" version = "0.2.3" @@ -12217,6 +12248,15 @@ dependencies = [ "leb128", ] +[[package]] +name = "wasm-encoder" +version = "0.207.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d996306fb3aeaee0d9157adbe2f670df0236caf19f6728b221e92d0f27b3fe17" +dependencies = [ + "leb128", +] + [[package]] name = "wasm-metadata" version = "0.201.0" @@ -12229,8 +12269,8 @@ dependencies = [ "serde_derive", "serde_json", "spdx", - "wasm-encoder", - "wasmparser", + "wasm-encoder 0.201.0", + "wasmparser 0.201.0", ] [[package]] @@ -12244,68 +12284,89 @@ dependencies = [ "semver", ] +[[package]] +name = "wasmparser" +version = "0.207.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e19bb9f8ab07616da582ef8adb24c54f1424c7ec876720b7da9db8ec0626c92c" +dependencies = [ + "ahash 0.8.11", + "bitflags 2.6.0", + "hashbrown 0.14.5", + "indexmap 2.2.6", + "semver", +] + [[package]] name = "wasmprinter" -version = "0.201.0" +version = "0.207.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a67e66da702706ba08729a78e3c0079085f6bfcb1a62e4799e97bbf728c2c265" +checksum = "9c2d8a7b4dabb460208e6b4334d9db5766e84505038b2529e69c3d07ac619115" dependencies = [ "anyhow", - "wasmparser", + "wasmparser 0.207.0", ] [[package]] name = "wasmtime" -version = "19.0.2" +version = "21.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e300c0e3f19dc9064e3b17ce661088646c70dbdde36aab46470ed68ba58db7d" +checksum = "f92a1370c66a0022e6d92dcc277e2c84f5dece19569670b8ce7db8162560d8b6" dependencies = [ "anyhow", "async-trait", - "bincode", "bumpalo", + "cc", "cfg-if", "encoding_rs", - "gimli", + "hashbrown 0.14.5", "indexmap 2.2.6", "libc", + "libm", "log", - "object", + "mach2", + "memfd", + "memoffset", + "object 0.33.0", "once_cell", "paste", + "postcard", + "psm", "rustix 0.38.32", "semver", "serde", "serde_derive", - "serde_json", + "smallvec", + "sptr", "target-lexicon", - "wasmparser", + "wasmparser 0.207.0", + "wasmtime-asm-macros", "wasmtime-component-macro", "wasmtime-component-util", "wasmtime-cranelift", "wasmtime-environ", "wasmtime-fiber", "wasmtime-jit-icache-coherence", - "wasmtime-runtime", "wasmtime-slab", + "wasmtime-versioned-export-macros", "wasmtime-winch", "windows-sys 0.52.0", ] [[package]] name = "wasmtime-asm-macros" -version = "19.0.2" +version = "21.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "110aa598e02a136fb095ca70fa96367fc16bab55256a131e66f9b58f16c73daf" +checksum = "6dee8679c974a7f258c03d60d3c747c426ed219945b6d08cbc77fd2eab15b2d1" dependencies = [ "cfg-if", ] [[package]] name = "wasmtime-c-api-impl" -version = "19.0.0" +version = "21.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67dea28073e105735210b9e932b5e654198d5e28ed31f1314037cd7664ceda2b" +checksum = "76af8b62c8d2814b7d5975c5dc140122e4c086150db6c15d25a4b76f11c929dd" dependencies = [ "anyhow", "log", @@ -12317,9 +12378,9 @@ dependencies = [ [[package]] name = "wasmtime-c-api-macros" -version = "19.0.0" +version = "21.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cfe12050fa28b17ab8434ab757fee281dd0d5c7715fa1bc5e4c0b29d1705415" +checksum = "d74b92f917c9ced9c6262a00e9cb982ebac183e6900b4d44e2480f936b9495eb" dependencies = [ "proc-macro2", "quote", @@ -12327,9 +12388,9 @@ dependencies = [ [[package]] name = "wasmtime-component-macro" -version = "19.0.2" +version = "21.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "091f32ce586251ac4d07019388fb665b010d9518ffe47be1ddbabb162eed6007" +checksum = "32cae30035f1cf97dcc6657c979cf39f99ce6be93583675eddf4aeaa5548509c" dependencies = [ "anyhow", "proc-macro2", @@ -12337,20 +12398,20 @@ dependencies = [ "syn 2.0.59", "wasmtime-component-util", "wasmtime-wit-bindgen", - "wit-parser", + "wit-parser 0.207.0", ] [[package]] name = "wasmtime-component-util" -version = "19.0.2" +version = "21.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd17dc1ebc0b28fd24b6b9d07638f55b82ae908918ff08fd221f8b0fefa9125" +checksum = "f7ae611f08cea620c67330925be28a96115bf01f8f393a6cbdf4856a86087134" [[package]] name = "wasmtime-cranelift" -version = "19.0.2" +version = "21.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e923262451a4b5b39fe02f69f1338d56356db470e289ea1887346b9c7f592738" +checksum = "b2909406a6007e28be964067167890bca4574bd48a9ff18f1fa9f4856d89ea40" dependencies = [ "anyhow", "cfg-if", @@ -12362,52 +12423,34 @@ dependencies = [ "cranelift-wasm", "gimli", "log", - "object", + "object 0.33.0", "target-lexicon", "thiserror", - "wasmparser", - "wasmtime-cranelift-shared", + "wasmparser 0.207.0", "wasmtime-environ", "wasmtime-versioned-export-macros", ] -[[package]] -name = "wasmtime-cranelift-shared" -version = "19.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "508898cbbea0df81a5d29cfc1c7c72431a1bc4c9e89fd9514b4c868474c05c7a" -dependencies = [ - "anyhow", - "cranelift-codegen", - "cranelift-control", - "cranelift-native", - "gimli", - "object", - "target-lexicon", - "wasmtime-environ", -] - [[package]] name = "wasmtime-environ" -version = "19.0.2" +version = "21.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7e3f2aa72dbb64c19708646e1ff97650f34e254598b82bad5578ea9c80edd30" +checksum = "40e227f9ed2f5421473723d6c0352b5986e6e6044fde5410a274a394d726108f" dependencies = [ "anyhow", - "bincode", "cpp_demangle", "cranelift-entity", "gimli", "indexmap 2.2.6", "log", - "object", + "object 0.33.0", + "postcard", "rustc-demangle", "serde", "serde_derive", "target-lexicon", - "thiserror", - "wasm-encoder", - "wasmparser", + "wasm-encoder 0.207.0", + "wasmparser 0.207.0", "wasmprinter", "wasmtime-component-util", "wasmtime-types", @@ -12415,9 +12458,9 @@ dependencies = [ [[package]] name = "wasmtime-fiber" -version = "19.0.2" +version = "21.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9235b643527bcbac808216ed342e1fba324c95f14a62762acfa6f2e6ca5edbd6" +checksum = "42edb392586d07038c1638e854382db916b6ca7845a2e6a7f8dc49e08907acdd" dependencies = [ "anyhow", "cc", @@ -12430,68 +12473,40 @@ dependencies = [ [[package]] name = "wasmtime-jit-icache-coherence" -version = "19.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c22ca2ef4d87b23d400660373453e274b2251bc2d674e3102497f690135e04b0" -dependencies = [ - "cfg-if", - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "wasmtime-runtime" -version = "19.0.2" +version = "21.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1806ee242ca4fd183309b7406e4e83ae7739b7569f395d56700de7c7ef9f5eb8" +checksum = "afe088f9b56bb353adaf837bf7e10f1c2e1676719dd5be4cac8e37f2ba1ee5bc" dependencies = [ "anyhow", - "cc", "cfg-if", - "encoding_rs", - "indexmap 2.2.6", "libc", - "log", - "mach", - "memfd", - "memoffset", - "paste", - "psm", - "rustix 0.38.32", - "sptr", - "wasm-encoder", - "wasmtime-asm-macros", - "wasmtime-environ", - "wasmtime-fiber", - "wasmtime-versioned-export-macros", - "wasmtime-wmemcheck", "windows-sys 0.52.0", ] [[package]] name = "wasmtime-slab" -version = "19.0.2" +version = "21.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20c58bef9ce877fd06acb58f08d003af17cb05cc51225b455e999fbad8e584c0" +checksum = "4ff75cafffe47b04b036385ce3710f209153525b0ed19d57b0cf44a22d446460" [[package]] name = "wasmtime-types" -version = "19.0.2" +version = "21.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cebe297aa063136d9d2e5b347c1528868aa43c2c8d0e1eb0eec144567e38fe0f" +checksum = "2f2fa462bfea3220711c84e2b549f147e4df89eeb49b8a2a3d89148f6cc4a8b1" dependencies = [ "cranelift-entity", "serde", "serde_derive", - "thiserror", - "wasmparser", + "smallvec", + "wasmparser 0.207.0", ] [[package]] name = "wasmtime-versioned-export-macros" -version = "19.0.2" +version = "21.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffaafa5c12355b1a9ee068e9295d50c4ca0a400c721950cdae4f5b54391a2da5" +checksum = "d4cedc5bfef3db2a85522ee38564b47ef3b7fc7c92e94cacbce99808e63cdd47" dependencies = [ "proc-macro2", "quote", @@ -12500,9 +12515,9 @@ dependencies = [ [[package]] name = "wasmtime-wasi" -version = "19.0.2" +version = "21.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b95961546319d4019625920756967a929879d1d46c4e5f89a74e9f4405655b0c" +checksum = "bdbbe94245904d4c96c7c5f7b55bad896cc27908644efd9442063c0748b631fc" dependencies = [ "anyhow", "async-trait", @@ -12531,39 +12546,33 @@ dependencies = [ [[package]] name = "wasmtime-winch" -version = "19.0.2" +version = "21.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d618b4e90d3f259b1b77411ce573c9f74aade561957102132e169918aabdc863" +checksum = "97b27054fed6be4f3800aba5766f7ef435d4220ce290788f021a08d4fa573108" dependencies = [ "anyhow", "cranelift-codegen", "gimli", - "object", + "object 0.33.0", "target-lexicon", - "wasmparser", - "wasmtime-cranelift-shared", + "wasmparser 0.207.0", + "wasmtime-cranelift", "wasmtime-environ", "winch-codegen", ] [[package]] name = "wasmtime-wit-bindgen" -version = "19.0.2" +version = "21.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c7a253c8505edd7493603e548bff3af937b0b7dbf2b498bd5ff2131b651af72" +checksum = "c936a52ce69c28de2aa3b5fb4f2dbbb2966df304f04cccb7aca4ba56d915fda0" dependencies = [ "anyhow", "heck 0.4.1", "indexmap 2.2.6", - "wit-parser", + "wit-parser 0.207.0", ] -[[package]] -name = "wasmtime-wmemcheck" -version = "19.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9a8c62e9df8322b2166d2a6f096fbec195ddb093748fd74170dcf25ef596769" - [[package]] name = "wast" version = "35.0.2" @@ -12745,9 +12754,9 @@ dependencies = [ [[package]] name = "wiggle" -version = "19.0.2" +version = "21.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899d3fe5fbacd02f114cacdaa1cca9040280c4153c71833a77b9609c60ccf72b" +checksum = "a89ea6f74ece6d1cfbd089783006b8eb69a0219ca83cad22068f0d9fa9df3f91" dependencies = [ "anyhow", "async-trait", @@ -12760,9 +12769,9 @@ dependencies = [ [[package]] name = "wiggle-generate" -version = "19.0.2" +version = "21.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2df5887f452cff44ffe1e1aba69b7fafe812deed38498446fa7a46b55e962cd5" +checksum = "36beda94813296ecaf0d91b7ada9da073fd41865ba339bdd3b7764e2e785b8e9" dependencies = [ "anyhow", "heck 0.4.1", @@ -12775,9 +12784,9 @@ dependencies = [ [[package]] name = "wiggle-macro" -version = "19.0.2" +version = "21.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acdb12de36507498abaa3a042f895a43ee00a2f6125b6901b9a27edf72bfdbe7" +checksum = "0b47d2b4442ce93106dba5d1a9c59d5f85b5732878bb3d0598d3c93c0d01b16b" dependencies = [ "proc-macro2", "quote", @@ -12818,9 +12827,9 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "winch-codegen" -version = "0.17.2" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d15869abc9e3bb29c017c003dbe007a08e9910e8ff9023a962aa13c1b2ee6af" +checksum = "1dc69899ccb2da7daa4df31426dcfd284b104d1a85e1dae35806df0c46187f87" dependencies = [ "anyhow", "cranelift-codegen", @@ -12828,7 +12837,8 @@ dependencies = [ "regalloc2", "smallvec", "target-lexicon", - "wasmparser", + "wasmparser 0.207.0", + "wasmtime-cranelift", "wasmtime-environ", ] @@ -13223,7 +13233,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e85e72719ffbccf279359ad071497e47eb0675fe22106dea4ed2d8a7fcb60ba4" dependencies = [ "anyhow", - "wit-parser", + "wit-parser 0.201.0", ] [[package]] @@ -13273,10 +13283,10 @@ dependencies = [ "serde", "serde_derive", "serde_json", - "wasm-encoder", + "wasm-encoder 0.201.0", "wasm-metadata", - "wasmparser", - "wit-parser", + "wasmparser 0.201.0", + "wit-parser 0.201.0", ] [[package]] @@ -13294,7 +13304,25 @@ dependencies = [ "serde_derive", "serde_json", "unicode-xid", - "wasmparser", + "wasmparser 0.201.0", +] + +[[package]] +name = "wit-parser" +version = "0.207.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c83dab33a9618d86cfe3563cc864deffd08c17efc5db31a3b7cd1edeffe6e1" +dependencies = [ + "anyhow", + "id-arena", + "indexmap 2.2.6", + "log", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser 0.207.0", ] [[package]] @@ -13453,7 +13481,7 @@ name = "xim" version = "0.4.0" source = "git+https://github.com/npmania/xim-rs?rev=27132caffc5b9bc9c432ca4afad184ab6e7c16af#27132caffc5b9bc9c432ca4afad184ab6e7c16af" dependencies = [ - "ahash 0.8.8", + "ahash 0.8.11", "hashbrown 0.14.5", "log", "x11rb", diff --git a/Cargo.toml b/Cargo.toml index 779160a6f4746..24e0b0d2cbad4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -304,7 +304,6 @@ bitflags = "2.6.0" blade-graphics = { git = "https://github.com/zed-industries/blade", rev = "7e497c534d5d4a30c18d9eb182cf39eaf0aaa25e" } blade-macros = { git = "https://github.com/zed-industries/blade", rev = "7e497c534d5d4a30c18d9eb182cf39eaf0aaa25e" } blade-util = { git = "https://github.com/zed-industries/blade", rev = "7e497c534d5d4a30c18d9eb182cf39eaf0aaa25e" } -cap-std = "3.0" cargo_toml = "0.20" chrono = { version = "0.4", features = ["serde"] } clap = { version = "4.4", features = ["derive"] } @@ -432,14 +431,14 @@ url = "2.2" uuid = { version = "1.1.2", features = ["v4", "v5", "serde"] } wasmparser = "0.201" wasm-encoder = "0.201" -wasmtime = { version = "19.0.2", default-features = false, features = [ +wasmtime = { version = "21.0.1", default-features = false, features = [ "async", "demangle", "runtime", "cranelift", "component-model", ] } -wasmtime-wasi = "19.0.2" +wasmtime-wasi = "21.0.1" which = "6.0.0" wit-component = "0.201" sys-locale = "0.3.1" @@ -483,6 +482,10 @@ features = [ "Win32_UI_WindowsAndMessaging", ] +[patch.crates-io] +# Patch Tree-sitter for updated wasmtime. +tree-sitter = { git = "https://github.com/tree-sitter/tree-sitter", rev = "7f4a57817d58a2f134fe863674acad6bbf007228" } + [profile.dev] split-debuginfo = "unpacked" debug = "limited" diff --git a/crates/extension/Cargo.toml b/crates/extension/Cargo.toml index 075292f450a64..0371b1866dfd9 100644 --- a/crates/extension/Cargo.toml +++ b/crates/extension/Cargo.toml @@ -21,7 +21,6 @@ assistant_slash_command.workspace = true async-compression.workspace = true async-tar.workspace = true async-trait.workspace = true -cap-std.workspace = true client.workspace = true collections.workspace = true fs.workspace = true diff --git a/crates/extension/src/wasm_host.rs b/crates/extension/src/wasm_host.rs index d8afe520a139f..d39b37da2386a 100644 --- a/crates/extension/src/wasm_host.rs +++ b/crates/extension/src/wasm_host.rs @@ -159,29 +159,25 @@ impl WasmHost { } async fn build_wasi_ctx(&self, manifest: &Arc) -> Result { - use cap_std::{ambient_authority, fs::Dir}; - let extension_work_dir = self.work_dir.join(manifest.id.as_ref()); self.fs .create_dir(&extension_work_dir) .await .context("failed to create extension work dir")?; - let work_dir_preopen = Dir::open_ambient_dir(&extension_work_dir, ambient_authority()) - .context("failed to preopen extension work directory")?; - let current_dir_preopen = work_dir_preopen - .try_clone() - .context("failed to preopen extension current directory")?; - let extension_work_dir = extension_work_dir.to_string_lossy(); - - let perms = wasi::FilePerms::all(); + let file_perms = wasi::FilePerms::all(); let dir_perms = wasi::DirPerms::all(); Ok(wasi::WasiCtxBuilder::new() .inherit_stdio() - .preopened_dir(current_dir_preopen, dir_perms, perms, ".") - .preopened_dir(work_dir_preopen, dir_perms, perms, &extension_work_dir) - .env("PWD", &extension_work_dir) + .preopened_dir(&extension_work_dir, ".", dir_perms, file_perms)? + .preopened_dir( + &extension_work_dir, + &extension_work_dir.to_string_lossy(), + dir_perms, + file_perms, + )? + .env("PWD", &extension_work_dir.to_string_lossy()) .env("RUST_BACKTRACE", "full") .build()) } diff --git a/crates/extension/src/wasm_host/wit.rs b/crates/extension/src/wasm_host/wit.rs index 8aeb3c49936c3..2d81986443537 100644 --- a/crates/extension/src/wasm_host/wit.rs +++ b/crates/extension/src/wasm_host/wit.rs @@ -29,7 +29,7 @@ pub fn new_linker( f: impl Fn(&mut Linker, fn(&mut WasmState) -> &mut WasmState) -> Result<()>, ) -> Linker { let mut linker = Linker::new(&wasm_engine()); - wasmtime_wasi::command::add_to_linker(&mut linker).unwrap(); + wasmtime_wasi::add_to_linker_async(&mut linker).unwrap(); f(&mut linker, wasi_view).unwrap(); linker } diff --git a/crates/extension/src/wasm_host/wit/since_v0_0_1.rs b/crates/extension/src/wasm_host/wit/since_v0_0_1.rs index 1dab4a6eaeab4..1e6b74f56d9fb 100644 --- a/crates/extension/src/wasm_host/wit/since_v0_0_1.rs +++ b/crates/extension/src/wasm_host/wit/since_v0_0_1.rs @@ -12,6 +12,7 @@ pub const MIN_VERSION: SemanticVersion = SemanticVersion::new(0, 0, 1); wasmtime::component::bindgen!({ async: true, + trappable_imports: true, path: "../extension_api/wit/since_v0.0.1", with: { "worktree": ExtensionWorktree, diff --git a/crates/extension/src/wasm_host/wit/since_v0_0_4.rs b/crates/extension/src/wasm_host/wit/since_v0_0_4.rs index 86b3a3986066a..eb52d64bf0b2f 100644 --- a/crates/extension/src/wasm_host/wit/since_v0_0_4.rs +++ b/crates/extension/src/wasm_host/wit/since_v0_0_4.rs @@ -11,6 +11,7 @@ pub const MIN_VERSION: SemanticVersion = SemanticVersion::new(0, 0, 4); wasmtime::component::bindgen!({ async: true, + trappable_imports: true, path: "../extension_api/wit/since_v0.0.4", with: { "worktree": ExtensionWorktree, diff --git a/crates/extension/src/wasm_host/wit/since_v0_0_6.rs b/crates/extension/src/wasm_host/wit/since_v0_0_6.rs index 364c925b0957a..37e7c18480485 100644 --- a/crates/extension/src/wasm_host/wit/since_v0_0_6.rs +++ b/crates/extension/src/wasm_host/wit/since_v0_0_6.rs @@ -12,6 +12,7 @@ pub const MAX_VERSION: SemanticVersion = SemanticVersion::new(0, 0, 6); wasmtime::component::bindgen!({ async: true, + trappable_imports: true, path: "../extension_api/wit/since_v0.0.6", with: { "worktree": ExtensionWorktree, diff --git a/crates/extension/src/wasm_host/wit/since_v0_0_7.rs b/crates/extension/src/wasm_host/wit/since_v0_0_7.rs index faf238b0fa6e7..fec8a0cc1aee8 100644 --- a/crates/extension/src/wasm_host/wit/since_v0_0_7.rs +++ b/crates/extension/src/wasm_host/wit/since_v0_0_7.rs @@ -26,6 +26,7 @@ pub const MAX_VERSION: SemanticVersion = SemanticVersion::new(0, 0, 7); wasmtime::component::bindgen!({ async: true, + trappable_imports: true, path: "../extension_api/wit/since_v0.0.7", with: { "worktree": ExtensionWorktree,