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
(7f4a57817d)
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
This commit is contained in:
Marshall Bowers 2024-07-25 13:56:40 -04:00 committed by GitHub
parent ab3c9f0678
commit d755d29577
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 215 additions and 185 deletions

362
Cargo.lock generated
View file

@ -59,9 +59,9 @@ dependencies = [
[[package]] [[package]]
name = "ahash" name = "ahash"
version = "0.8.8" version = "0.8.11"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "42cd52102d3df161c77a887b608d7a4897d7cc112886a9537b738a887a03aaff" checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"const-random", "const-random",
@ -1461,7 +1461,7 @@ dependencies = [
"cfg-if", "cfg-if",
"libc", "libc",
"miniz_oxide", "miniz_oxide",
"object", "object 0.32.1",
"rustc-demangle", "rustc-demangle",
] ]
@ -2367,6 +2367,12 @@ dependencies = [
"smallvec", "smallvec",
] ]
[[package]]
name = "cobs"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15"
[[package]] [[package]]
name = "cocoa" name = "cocoa"
version = "0.25.0" version = "0.25.0"
@ -2890,18 +2896,18 @@ dependencies = [
[[package]] [[package]]
name = "cranelift-bforest" name = "cranelift-bforest"
version = "0.106.2" version = "0.108.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3b57d4f3ffc28bbd6ef1ca7b50b20126717232f97487efe027d135d9d87eb29c" checksum = "29daf137addc15da6bab6eae2c4a11e274b1d270bf2759508e62f6145e863ef6"
dependencies = [ dependencies = [
"cranelift-entity", "cranelift-entity",
] ]
[[package]] [[package]]
name = "cranelift-codegen" name = "cranelift-codegen"
version = "0.106.2" version = "0.108.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d1f7d0ac7fd53f2c29db3ff9a063f6ff5a8be2abaa8f6942aceb6e1521e70df7" checksum = "de619867d5de4c644b7fd9904d6e3295269c93d8a71013df796ab338681222d4"
dependencies = [ dependencies = [
"bumpalo", "bumpalo",
"cranelift-bforest", "cranelift-bforest",
@ -2914,39 +2920,40 @@ dependencies = [
"hashbrown 0.14.5", "hashbrown 0.14.5",
"log", "log",
"regalloc2", "regalloc2",
"rustc-hash",
"smallvec", "smallvec",
"target-lexicon", "target-lexicon",
] ]
[[package]] [[package]]
name = "cranelift-codegen-meta" name = "cranelift-codegen-meta"
version = "0.106.2" version = "0.108.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b40bf21460a600178956cb7fd900a7408c6587fbb988a8063f7215361801a1da" checksum = "29f5cf277490037d8dae9513d35e0ee8134670ae4a964a5ed5b198d4249d7c10"
dependencies = [ dependencies = [
"cranelift-codegen-shared", "cranelift-codegen-shared",
] ]
[[package]] [[package]]
name = "cranelift-codegen-shared" name = "cranelift-codegen-shared"
version = "0.106.2" version = "0.108.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d792ecc1243b7ebec4a7f77d9ed428ef27456eeb1f8c780587a6f5c38841be19" checksum = "8c3e22ecad1123343a3c09ac6ecc532bb5c184b6fcb7888df0ea953727f79924"
[[package]] [[package]]
name = "cranelift-control" name = "cranelift-control"
version = "0.106.2" version = "0.108.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cea2808043df964b73ad7582e09afbbe06a31f3fb9db834d53e74b4e16facaeb" checksum = "53ca3ec6d30bce84ccf59c81fead4d16381a3ef0ef75e8403bc1e7385980da09"
dependencies = [ dependencies = [
"arbitrary", "arbitrary",
] ]
[[package]] [[package]]
name = "cranelift-entity" name = "cranelift-entity"
version = "0.106.2" version = "0.108.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f1930946836da6f514da87625cd1a0331f3908e0de454628c24a0b97b130c4d4" checksum = "7eabb8d36b0ca8906bec93c78ea516741cac2d7e6b266fa7b0ffddcc09004990"
dependencies = [ dependencies = [
"serde", "serde",
"serde_derive", "serde_derive",
@ -2954,9 +2961,9 @@ dependencies = [
[[package]] [[package]]
name = "cranelift-frontend" name = "cranelift-frontend"
version = "0.106.2" version = "0.108.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5482a5fcdf98f2f31b21093643bdcfe9030866b8be6481117022e7f52baa0f2b" checksum = "44b42630229e49a8cfcae90bdc43c8c4c08f7a7aa4618b67f79265cd2f996dd2"
dependencies = [ dependencies = [
"cranelift-codegen", "cranelift-codegen",
"log", "log",
@ -2966,15 +2973,15 @@ dependencies = [
[[package]] [[package]]
name = "cranelift-isle" name = "cranelift-isle"
version = "0.106.2" version = "0.108.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6f6e1869b6053383bdb356900e42e33555b4c9ebee05699469b7c53cdafc82ea" checksum = "918d1e36361805dfe0b6cdfd5a5ffdb5d03fa796170c5717d2727cbe623b93a0"
[[package]] [[package]]
name = "cranelift-native" name = "cranelift-native"
version = "0.106.2" version = "0.108.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a91446e8045f1c4bc164b7bba68e2419c623904580d4b730877a663c6da38964" checksum = "75aea85a0d7e1800b14ce9d3f53adf8ad4d1ee8a9e23b0269bdc50285e93b9b3"
dependencies = [ dependencies = [
"cranelift-codegen", "cranelift-codegen",
"libc", "libc",
@ -2983,9 +2990,9 @@ dependencies = [
[[package]] [[package]]
name = "cranelift-wasm" name = "cranelift-wasm"
version = "0.106.2" version = "0.108.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8b17979b862d3b0d52de6ae3294ffe4d86c36027b56ad0443a7c8c8f921d14f" checksum = "dac491fd3473944781f0cf9528c90cc899d18ad438da21961a839a3a44d57dfb"
dependencies = [ dependencies = [
"cranelift-codegen", "cranelift-codegen",
"cranelift-entity", "cranelift-entity",
@ -2993,7 +3000,7 @@ dependencies = [
"itertools 0.12.1", "itertools 0.12.1",
"log", "log",
"smallvec", "smallvec",
"wasmparser", "wasmparser 0.207.0",
"wasmtime-types", "wasmtime-types",
] ]
@ -3631,6 +3638,12 @@ dependencies = [
"winreg 0.52.0", "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]] [[package]]
name = "emojis" name = "emojis"
version = "0.6.1" version = "0.6.1"
@ -3864,7 +3877,6 @@ dependencies = [
"async-compression", "async-compression",
"async-tar", "async-tar",
"async-trait", "async-trait",
"cap-std",
"client", "client",
"collections", "collections",
"ctor", "ctor",
@ -3896,8 +3908,8 @@ dependencies = [
"ui", "ui",
"url", "url",
"util", "util",
"wasm-encoder", "wasm-encoder 0.201.0",
"wasmparser", "wasmparser 0.201.0",
"wasmtime", "wasmtime",
"wasmtime-wasi", "wasmtime-wasi",
"wit-component", "wit-component",
@ -4952,7 +4964,7 @@ version = "0.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e"
dependencies = [ dependencies = [
"ahash 0.8.8", "ahash 0.8.11",
] ]
[[package]] [[package]]
@ -4961,7 +4973,7 @@ version = "0.14.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
dependencies = [ dependencies = [
"ahash 0.8.8", "ahash 0.8.11",
"allocator-api2", "allocator-api2",
] ]
@ -6355,20 +6367,11 @@ version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4"
[[package]]
name = "mach"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa"
dependencies = [
"libc",
]
[[package]] [[package]]
name = "mach2" name = "mach2"
version = "0.4.1" version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6d0d1830bcd151a6fc4aea1369af235b36c1528fe976b8ff678683c9995eade8" checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709"
dependencies = [ dependencies = [
"libc", "libc",
] ]
@ -7070,6 +7073,15 @@ name = "object"
version = "0.32.1" version = "0.32.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0"
dependencies = [
"memchr",
]
[[package]]
name = "object"
version = "0.33.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d8dd6c0cdf9429bce006e1362bfce61fa1bfd8c898a643ed8d2b471934701d3d"
dependencies = [ dependencies = [
"crc32fast", "crc32fast",
"hashbrown 0.14.5", "hashbrown 0.14.5",
@ -7824,6 +7836,17 @@ dependencies = [
"thiserror", "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]] [[package]]
name = "powerfmt" name = "powerfmt"
version = "0.2.0" version = "0.2.0"
@ -9852,6 +9875,9 @@ name = "smallvec"
version = "1.13.2" version = "1.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
dependencies = [
"serde",
]
[[package]] [[package]]
name = "smol" name = "smol"
@ -10030,7 +10056,7 @@ version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8d6753e460c998bbd4cd8c6f0ed9a64346fcca0723d6e75e52fdc351c5d2169d" checksum = "8d6753e460c998bbd4cd8c6f0ed9a64346fcca0723d6e75e52fdc351c5d2169d"
dependencies = [ dependencies = [
"ahash 0.8.8", "ahash 0.8.11",
"atoi", "atoi",
"bigdecimal", "bigdecimal",
"byteorder", "byteorder",
@ -11430,11 +11456,11 @@ dependencies = [
[[package]] [[package]]
name = "tree-sitter" name = "tree-sitter"
version = "0.22.6" version = "0.22.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "git+https://github.com/tree-sitter/tree-sitter?rev=7f4a57817d58a2f134fe863674acad6bbf007228#7f4a57817d58a2f134fe863674acad6bbf007228"
checksum = "df7cc499ceadd4dcdf7ec6d4cbc34ece92c3fa07821e287aedecd4416c516dca"
dependencies = [ dependencies = [
"cc", "cc",
"regex", "regex",
"tree-sitter-language",
"wasmtime-c-api-impl", "wasmtime-c-api-impl",
] ]
@ -11565,6 +11591,11 @@ dependencies = [
"tree-sitter", "tree-sitter",
] ]
[[package]]
name = "tree-sitter-language"
version = "0.1.0"
source = "git+https://github.com/tree-sitter/tree-sitter?rev=7f4a57817d58a2f134fe863674acad6bbf007228#7f4a57817d58a2f134fe863674acad6bbf007228"
[[package]] [[package]]
name = "tree-sitter-md" name = "tree-sitter-md"
version = "0.2.3" version = "0.2.3"
@ -12217,6 +12248,15 @@ dependencies = [
"leb128", "leb128",
] ]
[[package]]
name = "wasm-encoder"
version = "0.207.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d996306fb3aeaee0d9157adbe2f670df0236caf19f6728b221e92d0f27b3fe17"
dependencies = [
"leb128",
]
[[package]] [[package]]
name = "wasm-metadata" name = "wasm-metadata"
version = "0.201.0" version = "0.201.0"
@ -12229,8 +12269,8 @@ dependencies = [
"serde_derive", "serde_derive",
"serde_json", "serde_json",
"spdx", "spdx",
"wasm-encoder", "wasm-encoder 0.201.0",
"wasmparser", "wasmparser 0.201.0",
] ]
[[package]] [[package]]
@ -12245,67 +12285,88 @@ dependencies = [
] ]
[[package]] [[package]]
name = "wasmprinter" name = "wasmparser"
version = "0.201.0" version = "0.207.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a67e66da702706ba08729a78e3c0079085f6bfcb1a62e4799e97bbf728c2c265" 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.207.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c2d8a7b4dabb460208e6b4334d9db5766e84505038b2529e69c3d07ac619115"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"wasmparser", "wasmparser 0.207.0",
] ]
[[package]] [[package]]
name = "wasmtime" name = "wasmtime"
version = "19.0.2" version = "21.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4e300c0e3f19dc9064e3b17ce661088646c70dbdde36aab46470ed68ba58db7d" checksum = "f92a1370c66a0022e6d92dcc277e2c84f5dece19569670b8ce7db8162560d8b6"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"async-trait", "async-trait",
"bincode",
"bumpalo", "bumpalo",
"cc",
"cfg-if", "cfg-if",
"encoding_rs", "encoding_rs",
"gimli", "hashbrown 0.14.5",
"indexmap 2.2.6", "indexmap 2.2.6",
"libc", "libc",
"libm",
"log", "log",
"object", "mach2",
"memfd",
"memoffset",
"object 0.33.0",
"once_cell", "once_cell",
"paste", "paste",
"postcard",
"psm",
"rustix 0.38.32", "rustix 0.38.32",
"semver", "semver",
"serde", "serde",
"serde_derive", "serde_derive",
"serde_json", "smallvec",
"sptr",
"target-lexicon", "target-lexicon",
"wasmparser", "wasmparser 0.207.0",
"wasmtime-asm-macros",
"wasmtime-component-macro", "wasmtime-component-macro",
"wasmtime-component-util", "wasmtime-component-util",
"wasmtime-cranelift", "wasmtime-cranelift",
"wasmtime-environ", "wasmtime-environ",
"wasmtime-fiber", "wasmtime-fiber",
"wasmtime-jit-icache-coherence", "wasmtime-jit-icache-coherence",
"wasmtime-runtime",
"wasmtime-slab", "wasmtime-slab",
"wasmtime-versioned-export-macros",
"wasmtime-winch", "wasmtime-winch",
"windows-sys 0.52.0", "windows-sys 0.52.0",
] ]
[[package]] [[package]]
name = "wasmtime-asm-macros" name = "wasmtime-asm-macros"
version = "19.0.2" version = "21.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "110aa598e02a136fb095ca70fa96367fc16bab55256a131e66f9b58f16c73daf" checksum = "6dee8679c974a7f258c03d60d3c747c426ed219945b6d08cbc77fd2eab15b2d1"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
] ]
[[package]] [[package]]
name = "wasmtime-c-api-impl" name = "wasmtime-c-api-impl"
version = "19.0.0" version = "21.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "67dea28073e105735210b9e932b5e654198d5e28ed31f1314037cd7664ceda2b" checksum = "76af8b62c8d2814b7d5975c5dc140122e4c086150db6c15d25a4b76f11c929dd"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"log", "log",
@ -12317,9 +12378,9 @@ dependencies = [
[[package]] [[package]]
name = "wasmtime-c-api-macros" name = "wasmtime-c-api-macros"
version = "19.0.0" version = "21.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0cfe12050fa28b17ab8434ab757fee281dd0d5c7715fa1bc5e4c0b29d1705415" checksum = "d74b92f917c9ced9c6262a00e9cb982ebac183e6900b4d44e2480f936b9495eb"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -12327,9 +12388,9 @@ dependencies = [
[[package]] [[package]]
name = "wasmtime-component-macro" name = "wasmtime-component-macro"
version = "19.0.2" version = "21.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "091f32ce586251ac4d07019388fb665b010d9518ffe47be1ddbabb162eed6007" checksum = "32cae30035f1cf97dcc6657c979cf39f99ce6be93583675eddf4aeaa5548509c"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"proc-macro2", "proc-macro2",
@ -12337,20 +12398,20 @@ dependencies = [
"syn 2.0.59", "syn 2.0.59",
"wasmtime-component-util", "wasmtime-component-util",
"wasmtime-wit-bindgen", "wasmtime-wit-bindgen",
"wit-parser", "wit-parser 0.207.0",
] ]
[[package]] [[package]]
name = "wasmtime-component-util" name = "wasmtime-component-util"
version = "19.0.2" version = "21.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0dd17dc1ebc0b28fd24b6b9d07638f55b82ae908918ff08fd221f8b0fefa9125" checksum = "f7ae611f08cea620c67330925be28a96115bf01f8f393a6cbdf4856a86087134"
[[package]] [[package]]
name = "wasmtime-cranelift" name = "wasmtime-cranelift"
version = "19.0.2" version = "21.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e923262451a4b5b39fe02f69f1338d56356db470e289ea1887346b9c7f592738" checksum = "b2909406a6007e28be964067167890bca4574bd48a9ff18f1fa9f4856d89ea40"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"cfg-if", "cfg-if",
@ -12362,52 +12423,34 @@ dependencies = [
"cranelift-wasm", "cranelift-wasm",
"gimli", "gimli",
"log", "log",
"object", "object 0.33.0",
"target-lexicon", "target-lexicon",
"thiserror", "thiserror",
"wasmparser", "wasmparser 0.207.0",
"wasmtime-cranelift-shared",
"wasmtime-environ", "wasmtime-environ",
"wasmtime-versioned-export-macros", "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]] [[package]]
name = "wasmtime-environ" name = "wasmtime-environ"
version = "19.0.2" version = "21.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d7e3f2aa72dbb64c19708646e1ff97650f34e254598b82bad5578ea9c80edd30" checksum = "40e227f9ed2f5421473723d6c0352b5986e6e6044fde5410a274a394d726108f"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"bincode",
"cpp_demangle", "cpp_demangle",
"cranelift-entity", "cranelift-entity",
"gimli", "gimli",
"indexmap 2.2.6", "indexmap 2.2.6",
"log", "log",
"object", "object 0.33.0",
"postcard",
"rustc-demangle", "rustc-demangle",
"serde", "serde",
"serde_derive", "serde_derive",
"target-lexicon", "target-lexicon",
"thiserror", "wasm-encoder 0.207.0",
"wasm-encoder", "wasmparser 0.207.0",
"wasmparser",
"wasmprinter", "wasmprinter",
"wasmtime-component-util", "wasmtime-component-util",
"wasmtime-types", "wasmtime-types",
@ -12415,9 +12458,9 @@ dependencies = [
[[package]] [[package]]
name = "wasmtime-fiber" name = "wasmtime-fiber"
version = "19.0.2" version = "21.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9235b643527bcbac808216ed342e1fba324c95f14a62762acfa6f2e6ca5edbd6" checksum = "42edb392586d07038c1638e854382db916b6ca7845a2e6a7f8dc49e08907acdd"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"cc", "cc",
@ -12430,68 +12473,40 @@ dependencies = [
[[package]] [[package]]
name = "wasmtime-jit-icache-coherence" name = "wasmtime-jit-icache-coherence"
version = "19.0.2" version = "21.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c22ca2ef4d87b23d400660373453e274b2251bc2d674e3102497f690135e04b0" checksum = "afe088f9b56bb353adaf837bf7e10f1c2e1676719dd5be4cac8e37f2ba1ee5bc"
dependencies = [
"cfg-if",
"libc",
"windows-sys 0.52.0",
]
[[package]]
name = "wasmtime-runtime"
version = "19.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1806ee242ca4fd183309b7406e4e83ae7739b7569f395d56700de7c7ef9f5eb8"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"cc",
"cfg-if", "cfg-if",
"encoding_rs",
"indexmap 2.2.6",
"libc", "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", "windows-sys 0.52.0",
] ]
[[package]] [[package]]
name = "wasmtime-slab" name = "wasmtime-slab"
version = "19.0.2" version = "21.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "20c58bef9ce877fd06acb58f08d003af17cb05cc51225b455e999fbad8e584c0" checksum = "4ff75cafffe47b04b036385ce3710f209153525b0ed19d57b0cf44a22d446460"
[[package]] [[package]]
name = "wasmtime-types" name = "wasmtime-types"
version = "19.0.2" version = "21.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cebe297aa063136d9d2e5b347c1528868aa43c2c8d0e1eb0eec144567e38fe0f" checksum = "2f2fa462bfea3220711c84e2b549f147e4df89eeb49b8a2a3d89148f6cc4a8b1"
dependencies = [ dependencies = [
"cranelift-entity", "cranelift-entity",
"serde", "serde",
"serde_derive", "serde_derive",
"thiserror", "smallvec",
"wasmparser", "wasmparser 0.207.0",
] ]
[[package]] [[package]]
name = "wasmtime-versioned-export-macros" name = "wasmtime-versioned-export-macros"
version = "19.0.2" version = "21.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ffaafa5c12355b1a9ee068e9295d50c4ca0a400c721950cdae4f5b54391a2da5" checksum = "d4cedc5bfef3db2a85522ee38564b47ef3b7fc7c92e94cacbce99808e63cdd47"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -12500,9 +12515,9 @@ dependencies = [
[[package]] [[package]]
name = "wasmtime-wasi" name = "wasmtime-wasi"
version = "19.0.2" version = "21.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b95961546319d4019625920756967a929879d1d46c4e5f89a74e9f4405655b0c" checksum = "bdbbe94245904d4c96c7c5f7b55bad896cc27908644efd9442063c0748b631fc"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"async-trait", "async-trait",
@ -12531,39 +12546,33 @@ dependencies = [
[[package]] [[package]]
name = "wasmtime-winch" name = "wasmtime-winch"
version = "19.0.2" version = "21.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d618b4e90d3f259b1b77411ce573c9f74aade561957102132e169918aabdc863" checksum = "97b27054fed6be4f3800aba5766f7ef435d4220ce290788f021a08d4fa573108"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"cranelift-codegen", "cranelift-codegen",
"gimli", "gimli",
"object", "object 0.33.0",
"target-lexicon", "target-lexicon",
"wasmparser", "wasmparser 0.207.0",
"wasmtime-cranelift-shared", "wasmtime-cranelift",
"wasmtime-environ", "wasmtime-environ",
"winch-codegen", "winch-codegen",
] ]
[[package]] [[package]]
name = "wasmtime-wit-bindgen" name = "wasmtime-wit-bindgen"
version = "19.0.2" version = "21.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7c7a253c8505edd7493603e548bff3af937b0b7dbf2b498bd5ff2131b651af72" checksum = "c936a52ce69c28de2aa3b5fb4f2dbbb2966df304f04cccb7aca4ba56d915fda0"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"heck 0.4.1", "heck 0.4.1",
"indexmap 2.2.6", "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]] [[package]]
name = "wast" name = "wast"
version = "35.0.2" version = "35.0.2"
@ -12745,9 +12754,9 @@ dependencies = [
[[package]] [[package]]
name = "wiggle" name = "wiggle"
version = "19.0.2" version = "21.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "899d3fe5fbacd02f114cacdaa1cca9040280c4153c71833a77b9609c60ccf72b" checksum = "a89ea6f74ece6d1cfbd089783006b8eb69a0219ca83cad22068f0d9fa9df3f91"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"async-trait", "async-trait",
@ -12760,9 +12769,9 @@ dependencies = [
[[package]] [[package]]
name = "wiggle-generate" name = "wiggle-generate"
version = "19.0.2" version = "21.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2df5887f452cff44ffe1e1aba69b7fafe812deed38498446fa7a46b55e962cd5" checksum = "36beda94813296ecaf0d91b7ada9da073fd41865ba339bdd3b7764e2e785b8e9"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"heck 0.4.1", "heck 0.4.1",
@ -12775,9 +12784,9 @@ dependencies = [
[[package]] [[package]]
name = "wiggle-macro" name = "wiggle-macro"
version = "19.0.2" version = "21.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "acdb12de36507498abaa3a042f895a43ee00a2f6125b6901b9a27edf72bfdbe7" checksum = "0b47d2b4442ce93106dba5d1a9c59d5f85b5732878bb3d0598d3c93c0d01b16b"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -12818,9 +12827,9 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]] [[package]]
name = "winch-codegen" name = "winch-codegen"
version = "0.17.2" version = "0.19.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2d15869abc9e3bb29c017c003dbe007a08e9910e8ff9023a962aa13c1b2ee6af" checksum = "1dc69899ccb2da7daa4df31426dcfd284b104d1a85e1dae35806df0c46187f87"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"cranelift-codegen", "cranelift-codegen",
@ -12828,7 +12837,8 @@ dependencies = [
"regalloc2", "regalloc2",
"smallvec", "smallvec",
"target-lexicon", "target-lexicon",
"wasmparser", "wasmparser 0.207.0",
"wasmtime-cranelift",
"wasmtime-environ", "wasmtime-environ",
] ]
@ -13223,7 +13233,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e85e72719ffbccf279359ad071497e47eb0675fe22106dea4ed2d8a7fcb60ba4" checksum = "e85e72719ffbccf279359ad071497e47eb0675fe22106dea4ed2d8a7fcb60ba4"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"wit-parser", "wit-parser 0.201.0",
] ]
[[package]] [[package]]
@ -13273,10 +13283,10 @@ dependencies = [
"serde", "serde",
"serde_derive", "serde_derive",
"serde_json", "serde_json",
"wasm-encoder", "wasm-encoder 0.201.0",
"wasm-metadata", "wasm-metadata",
"wasmparser", "wasmparser 0.201.0",
"wit-parser", "wit-parser 0.201.0",
] ]
[[package]] [[package]]
@ -13294,7 +13304,25 @@ dependencies = [
"serde_derive", "serde_derive",
"serde_json", "serde_json",
"unicode-xid", "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]] [[package]]
@ -13453,7 +13481,7 @@ name = "xim"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/npmania/xim-rs?rev=27132caffc5b9bc9c432ca4afad184ab6e7c16af#27132caffc5b9bc9c432ca4afad184ab6e7c16af" source = "git+https://github.com/npmania/xim-rs?rev=27132caffc5b9bc9c432ca4afad184ab6e7c16af#27132caffc5b9bc9c432ca4afad184ab6e7c16af"
dependencies = [ dependencies = [
"ahash 0.8.8", "ahash 0.8.11",
"hashbrown 0.14.5", "hashbrown 0.14.5",
"log", "log",
"x11rb", "x11rb",

View file

@ -304,7 +304,6 @@ bitflags = "2.6.0"
blade-graphics = { git = "https://github.com/zed-industries/blade", rev = "7e497c534d5d4a30c18d9eb182cf39eaf0aaa25e" } blade-graphics = { git = "https://github.com/zed-industries/blade", rev = "7e497c534d5d4a30c18d9eb182cf39eaf0aaa25e" }
blade-macros = { 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" } blade-util = { git = "https://github.com/zed-industries/blade", rev = "7e497c534d5d4a30c18d9eb182cf39eaf0aaa25e" }
cap-std = "3.0"
cargo_toml = "0.20" cargo_toml = "0.20"
chrono = { version = "0.4", features = ["serde"] } chrono = { version = "0.4", features = ["serde"] }
clap = { version = "4.4", features = ["derive"] } clap = { version = "4.4", features = ["derive"] }
@ -432,14 +431,14 @@ url = "2.2"
uuid = { version = "1.1.2", features = ["v4", "v5", "serde"] } uuid = { version = "1.1.2", features = ["v4", "v5", "serde"] }
wasmparser = "0.201" wasmparser = "0.201"
wasm-encoder = "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", "async",
"demangle", "demangle",
"runtime", "runtime",
"cranelift", "cranelift",
"component-model", "component-model",
] } ] }
wasmtime-wasi = "19.0.2" wasmtime-wasi = "21.0.1"
which = "6.0.0" which = "6.0.0"
wit-component = "0.201" wit-component = "0.201"
sys-locale = "0.3.1" sys-locale = "0.3.1"
@ -483,6 +482,10 @@ features = [
"Win32_UI_WindowsAndMessaging", "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] [profile.dev]
split-debuginfo = "unpacked" split-debuginfo = "unpacked"
debug = "limited" debug = "limited"

View file

@ -21,7 +21,6 @@ assistant_slash_command.workspace = true
async-compression.workspace = true async-compression.workspace = true
async-tar.workspace = true async-tar.workspace = true
async-trait.workspace = true async-trait.workspace = true
cap-std.workspace = true
client.workspace = true client.workspace = true
collections.workspace = true collections.workspace = true
fs.workspace = true fs.workspace = true

View file

@ -159,29 +159,25 @@ impl WasmHost {
} }
async fn build_wasi_ctx(&self, manifest: &Arc<ExtensionManifest>) -> Result<wasi::WasiCtx> { async fn build_wasi_ctx(&self, manifest: &Arc<ExtensionManifest>) -> Result<wasi::WasiCtx> {
use cap_std::{ambient_authority, fs::Dir};
let extension_work_dir = self.work_dir.join(manifest.id.as_ref()); let extension_work_dir = self.work_dir.join(manifest.id.as_ref());
self.fs self.fs
.create_dir(&extension_work_dir) .create_dir(&extension_work_dir)
.await .await
.context("failed to create extension work dir")?; .context("failed to create extension work dir")?;
let work_dir_preopen = Dir::open_ambient_dir(&extension_work_dir, ambient_authority()) let file_perms = wasi::FilePerms::all();
.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 dir_perms = wasi::DirPerms::all(); let dir_perms = wasi::DirPerms::all();
Ok(wasi::WasiCtxBuilder::new() Ok(wasi::WasiCtxBuilder::new()
.inherit_stdio() .inherit_stdio()
.preopened_dir(current_dir_preopen, dir_perms, perms, ".") .preopened_dir(&extension_work_dir, ".", dir_perms, file_perms)?
.preopened_dir(work_dir_preopen, dir_perms, perms, &extension_work_dir) .preopened_dir(
.env("PWD", &extension_work_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") .env("RUST_BACKTRACE", "full")
.build()) .build())
} }

View file

@ -29,7 +29,7 @@ pub fn new_linker(
f: impl Fn(&mut Linker<WasmState>, fn(&mut WasmState) -> &mut WasmState) -> Result<()>, f: impl Fn(&mut Linker<WasmState>, fn(&mut WasmState) -> &mut WasmState) -> Result<()>,
) -> Linker<WasmState> { ) -> Linker<WasmState> {
let mut linker = Linker::new(&wasm_engine()); 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(); f(&mut linker, wasi_view).unwrap();
linker linker
} }

View file

@ -12,6 +12,7 @@ pub const MIN_VERSION: SemanticVersion = SemanticVersion::new(0, 0, 1);
wasmtime::component::bindgen!({ wasmtime::component::bindgen!({
async: true, async: true,
trappable_imports: true,
path: "../extension_api/wit/since_v0.0.1", path: "../extension_api/wit/since_v0.0.1",
with: { with: {
"worktree": ExtensionWorktree, "worktree": ExtensionWorktree,

View file

@ -11,6 +11,7 @@ pub const MIN_VERSION: SemanticVersion = SemanticVersion::new(0, 0, 4);
wasmtime::component::bindgen!({ wasmtime::component::bindgen!({
async: true, async: true,
trappable_imports: true,
path: "../extension_api/wit/since_v0.0.4", path: "../extension_api/wit/since_v0.0.4",
with: { with: {
"worktree": ExtensionWorktree, "worktree": ExtensionWorktree,

View file

@ -12,6 +12,7 @@ pub const MAX_VERSION: SemanticVersion = SemanticVersion::new(0, 0, 6);
wasmtime::component::bindgen!({ wasmtime::component::bindgen!({
async: true, async: true,
trappable_imports: true,
path: "../extension_api/wit/since_v0.0.6", path: "../extension_api/wit/since_v0.0.6",
with: { with: {
"worktree": ExtensionWorktree, "worktree": ExtensionWorktree,

View file

@ -26,6 +26,7 @@ pub const MAX_VERSION: SemanticVersion = SemanticVersion::new(0, 0, 7);
wasmtime::component::bindgen!({ wasmtime::component::bindgen!({
async: true, async: true,
trappable_imports: true,
path: "../extension_api/wit/since_v0.0.7", path: "../extension_api/wit/since_v0.0.7",
with: { with: {
"worktree": ExtensionWorktree, "worktree": ExtensionWorktree,