diff --git a/Cargo.lock b/Cargo.lock index 745703f8..c4967d49 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -92,9 +92,9 @@ checksum = "d92bec98840b8f03a5ff5413de5293bfcd8bf96467cf5452609f939ec6f5de16" [[package]] name = "bindgen" -version = "0.70.1" +version = "0.71.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" +checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3" dependencies = [ "bitflags", "cexpr", @@ -105,7 +105,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "rustc-hash 1.1.0", + "rustc-hash", "shlex", "syn", ] @@ -321,18 +321,18 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cranelift-bforest" -version = "0.113.1" +version = "0.114.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "540b193ff98b825a1f250a75b3118911af918a734154c69d80bcfcf91e7e9522" +checksum = "2ba4f80548f22dc9c43911907b5e322c5555544ee85f785115701e6a28c9abe1" dependencies = [ "cranelift-entity", ] [[package]] name = "cranelift-bitset" -version = "0.113.1" +version = "0.114.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7cb269598b9557ab942d687d3c1086d77c4b50dcf35813f3a65ba306fd42279" +checksum = "005884e3649c3e5ff2dc79e8a94b138f11569cc08a91244a292714d2a86e9156" dependencies = [ "serde", "serde_derive", @@ -340,9 +340,9 @@ dependencies = [ [[package]] name = "cranelift-codegen" -version = "0.113.1" +version = "0.114.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46566d7c83a8bff4150748d66020f4c7224091952aa4b4df1ec4959c39d937a1" +checksum = "fe4036255ec33ce9a37495dfbcfc4e1118fd34e693eff9a1e106336b7cd16a9b" dependencies = [ "bumpalo", "cranelift-bforest", @@ -356,40 +356,41 @@ dependencies = [ "hashbrown 0.14.5", "log", "regalloc2", - "rustc-hash 2.1.0", + "rustc-hash", + "serde", "smallvec", "target-lexicon", ] [[package]] name = "cranelift-codegen-meta" -version = "0.113.1" +version = "0.114.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2df8a86a34236cc75a8a6a271973da779c2aeb36c43b6e14da474cf931317082" +checksum = "f7ca74f4b68319da11d39e894437cb6e20ec7c2e11fbbda823c3bf207beedff7" dependencies = [ "cranelift-codegen-shared", ] [[package]] name = "cranelift-codegen-shared" -version = "0.113.1" +version = "0.114.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf75340b6a57b7c7c1b74f10d3d90883ee6d43a554be8131a4046c2ebcf5eb65" +checksum = "897e54f433a0269c4187871aa06d452214d5515d228d5bdc22219585e9eef895" [[package]] name = "cranelift-control" -version = "0.113.1" +version = "0.114.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e84495bc5d23d86aad8c86f8ade4af765b94882af60d60e271d3153942f1978" +checksum = "29cb4018f5bf59fb53f515fa9d80e6f8c5ce19f198dc538984ebd23ecf8965ec" dependencies = [ "arbitrary", ] [[package]] name = "cranelift-entity" -version = "0.113.1" +version = "0.114.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "963c17147b80df351965e57c04d20dbedc85bcaf44c3436780a59a3f1ff1b1c2" +checksum = "305399fd781a2953ac78c1396f02ff53144f39c33eb7fc7789cf4e8936d13a96" dependencies = [ "cranelift-bitset", "serde", @@ -398,9 +399,9 @@ dependencies = [ [[package]] name = "cranelift-frontend" -version = "0.113.1" +version = "0.114.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "727f02acbc4b4cb2ba38a6637101d579db50190df1dd05168c68e762851a3dd5" +checksum = "9230b460a128d53653456137751d27baf567947a3ab8c0c4d6e31fd08036d81e" dependencies = [ "cranelift-codegen", "log", @@ -410,15 +411,15 @@ dependencies = [ [[package]] name = "cranelift-isle" -version = "0.113.1" +version = "0.114.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32b00cc2e03c748f2531eea01c871f502b909d30295fdcad43aec7bf5c5b4667" +checksum = "b961e24ae3ec9813a24a15ae64bbd2a42e4de4d79a7f3225a412e3b94e78d1c8" [[package]] name = "cranelift-native" -version = "0.113.1" +version = "0.114.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbeaf978dc7c1a2de8bbb9162510ed218eb156697bc45590b8fbdd69bb08e8de" +checksum = "4d5bd76df6c9151188dfa428c863b33da5b34561b67f43c0cf3f24a794f9fa1f" dependencies = [ "cranelift-codegen", "libc", @@ -464,7 +465,7 @@ dependencies = [ "fuzzy-matcher", "shell-words", "tempfile", - "thiserror", + "thiserror 1.0.69", "zeroize", ] @@ -596,9 +597,9 @@ dependencies = [ [[package]] name = "fs4" -version = "0.9.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c6b3bd49c37d2aa3f3f2220233b29a7cd23f79d1fe70e5337d25fb390793de" +checksum = "c29c30684418547d476f0b48e84f4821639119c483b1eccd566c8cd0cd05f521" dependencies = [ "rustix", "windows-sys 0.52.0", @@ -673,6 +674,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" dependencies = [ "foldhash", + "serde", ] [[package]] @@ -908,7 +910,7 @@ dependencies = [ "combine", "jni-sys", "log", - "thiserror", + "thiserror 1.0.69", "walkdir", "windows-sys 0.45.0", ] @@ -1266,9 +1268,9 @@ dependencies = [ [[package]] name = "pulley-interpreter" -version = "26.0.1" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df33e7f8a43ccc7f93b330fef4baf271764674926f3f4d40f4a196d54de8af26" +checksum = "a3b8d81cf799e20564931e9867ca32de545188c6ee4c2e0f6e41d32f0c7dc6fb" dependencies = [ "cranelift-bitset", "log", @@ -1331,7 +1333,7 @@ checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom", "libredox", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -1342,7 +1344,7 @@ checksum = "12908dbeb234370af84d0579b9f68258a0f67e201412dd9a2814e6f45b2fc0f0" dependencies = [ "hashbrown 0.14.5", "log", - "rustc-hash 2.1.0", + "rustc-hash", "slice-group-by", "smallvec", ] @@ -1376,12 +1378,6 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" -[[package]] -name = "rustc-hash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - [[package]] name = "rustc-hash" version = "2.1.0" @@ -1586,7 +1582,16 @@ version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93605438cbd668185516ab499d589afb7ee1859ea3d5fc8f6b0755e1c7443767" +dependencies = [ + "thiserror-impl 2.0.7", ] [[package]] @@ -1600,6 +1605,17 @@ dependencies = [ "syn", ] +[[package]] +name = "thiserror-impl" +version = "2.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d8749b4531af2117677a5fcd12b1348a3fe2b81e36e61ffeac5c4aa3273e36" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "thread_local" version = "1.1.8" @@ -1705,6 +1721,7 @@ dependencies = [ "cc", "regex", "regex-syntax", + "serde_json", "streaming-iterator", "tree-sitter-language", "wasmtime-c-api-impl", @@ -1738,7 +1755,7 @@ dependencies = [ "rand", "regex", "regex-syntax", - "rustc-hash 2.1.0", + "rustc-hash", "semver", "serde", "serde_derive", @@ -1758,7 +1775,7 @@ dependencies = [ "unindent", "url", "walkdir", - "wasmparser", + "wasmparser 0.221.2", "webbrowser", "widestring", ] @@ -1785,7 +1802,7 @@ dependencies = [ "log", "regex", "regex-syntax", - "rustc-hash 2.1.0", + "rustc-hash", "semver", "serde", "serde_json", @@ -1801,7 +1818,7 @@ dependencies = [ "lazy_static", "regex", "streaming-iterator", - "thiserror", + "thiserror 2.0.7", "tree-sitter", ] @@ -1840,7 +1857,7 @@ dependencies = [ "memchr", "regex", "streaming-iterator", - "thiserror", + "thiserror 2.0.7", "tree-sitter", ] @@ -1998,18 +2015,19 @@ checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" [[package]] name = "wasm-encoder" -version = "0.218.0" +version = "0.219.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22b896fa8ceb71091ace9bcb81e853f54043183a1c9667cf93422c40252ffa0a" +checksum = "29cbbd772edcb8e7d524a82ee8cef8dd046fc14033796a754c3ad246d019fa54" dependencies = [ "leb128", + "wasmparser 0.219.1", ] [[package]] name = "wasmparser" -version = "0.218.0" +version = "0.219.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b09e46c7fceceaa72b2dd1a8a137ea7fd8f93dfaa69806010a709918e496c5dc" +checksum = "5c771866898879073c53b565a6c7b49953795159836714ac56a5befb581227c5" dependencies = [ "ahash", "bitflags", @@ -2020,21 +2038,34 @@ dependencies = [ ] [[package]] -name = "wasmprinter" -version = "0.218.0" +name = "wasmparser" +version = "0.221.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ace089155491837b75f474bf47c99073246d1b737393fe722d6dee311595ddc" +checksum = "9845c470a2e10b61dd42c385839cdd6496363ed63b5c9e420b5488b77bd22083" +dependencies = [ + "bitflags", + "hashbrown 0.15.2", + "indexmap", + "semver", + "serde", +] + +[[package]] +name = "wasmprinter" +version = "0.219.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "228cdc1f30c27816da225d239ce4231f28941147d34713dee8f1fff7cb330e54" dependencies = [ "anyhow", "termcolor", - "wasmparser", + "wasmparser 0.219.1", ] [[package]] name = "wasmtime" -version = "26.0.1" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51e762e163fd305770c6c341df3290f0cabb3c264e7952943018e9a1ced8d917" +checksum = "5b79302e3e084713249cc5622e8608e7410afdeeea8c8026d04f491d1fab0b4b" dependencies = [ "anyhow", "bitflags", @@ -2060,7 +2091,7 @@ dependencies = [ "smallvec", "sptr", "target-lexicon", - "wasmparser", + "wasmparser 0.219.1", "wasmtime-asm-macros", "wasmtime-component-macro", "wasmtime-cranelift", @@ -2073,22 +2104,21 @@ dependencies = [ [[package]] name = "wasmtime-asm-macros" -version = "26.0.1" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63caa7aebb546374e26257a1900fb93579171e7c02514cde26805b9ece3ef812" +checksum = "fe53a24e7016a5222875d8ca3ad6024b464465985693c42098cd0bb710002c28" dependencies = [ "cfg-if", ] [[package]] name = "wasmtime-c-api-impl" -version = "26.0.1" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "956075190611786d56f4a92573d1993c77e6a18926a84be6006ac70c2c6da93d" +checksum = "8c8daa4482847a8e09449404f8fed23f8142e405c18d5ff9bc0230841583f73a" dependencies = [ "anyhow", "log", - "once_cell", "tracing", "wasmtime", "wasmtime-c-api-macros", @@ -2096,9 +2126,9 @@ dependencies = [ [[package]] name = "wasmtime-c-api-macros" -version = "26.0.1" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3301b09a17a65280543a48e81e9ae5952f53c94e0f1c74aa92bbd80c044d318" +checksum = "1f9a2fa253a23a6a3821997869018fd3ec1919cc5b0a7315133526ebf4eeeab8" dependencies = [ "proc-macro2", "quote", @@ -2106,9 +2136,9 @@ dependencies = [ [[package]] name = "wasmtime-component-macro" -version = "26.0.1" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d61a4b5ce2ad9c15655e830f0eac0c38b8def30c74ecac71f452d3901e491b68" +checksum = "e118acbd2bc09b32ad8606bc7cef793bf5019c1b107772e64dc6c76b5055d40b" dependencies = [ "anyhow", "proc-macro2", @@ -2121,15 +2151,15 @@ dependencies = [ [[package]] name = "wasmtime-component-util" -version = "26.0.1" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35e87a1212270dbb84a49af13d82594e00a92769d6952b0ea7fc4366c949f6ad" +checksum = "4a6db4f3ee18c699629eabb9c64e77efe5a93a5137f098db7cab295037ba41c2" [[package]] name = "wasmtime-cranelift" -version = "26.0.1" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cb40dddf38c6a5eefd5ce7c1baf43b00fe44eada11a319fab22e993a960262f" +checksum = "8b87e6c78f562b50aff1afd87ff32a57e241424c846c1c8f3c5fd352d2d62906" dependencies = [ "anyhow", "cfg-if", @@ -2144,17 +2174,17 @@ dependencies = [ "object", "smallvec", "target-lexicon", - "thiserror", - "wasmparser", + "thiserror 1.0.69", + "wasmparser 0.219.1", "wasmtime-environ", "wasmtime-versioned-export-macros", ] [[package]] name = "wasmtime-environ" -version = "26.0.1" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8613075e89e94a48c05862243c2b718eef1b9c337f51493ebf951e149a10fa19" +checksum = "c25bfeaa16432d59a0706e2463d315ef4c9ebcfaf5605670b99d46373bdf9f27" dependencies = [ "anyhow", "cranelift-bitset", @@ -2169,15 +2199,15 @@ dependencies = [ "smallvec", "target-lexicon", "wasm-encoder", - "wasmparser", + "wasmparser 0.219.1", "wasmprinter", ] [[package]] name = "wasmtime-jit-icache-coherence" -version = "26.0.1" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da47fba49af72581bc0dc67c8faaf5ee550e6f106e285122a184a675193701a5" +checksum = "91b218a92866f74f35162f5d03a4e0f62cd0e1cc624285b1014275e5d4575fad" dependencies = [ "anyhow", "cfg-if", @@ -2187,15 +2217,15 @@ dependencies = [ [[package]] name = "wasmtime-slab" -version = "26.0.1" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "770e10cdefb15f2b6304152978e115bd062753c1ebe7221c0b6b104fa0419ff6" +checksum = "4d5f8acf677ee6b3b8ba400dd9753ea4769e56a95c4b30b045ac6d2d54b2f8ea" [[package]] name = "wasmtime-versioned-export-macros" -version = "26.0.1" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db8efb877c9e5e67239d4553bb44dd2a34ae5cfb728f3cf2c5e64439c6ca6ee7" +checksum = "df09be00c38f49172ca9936998938476e3f2df782673a39ae2ef9fb0838341b6" dependencies = [ "proc-macro2", "quote", @@ -2204,9 +2234,9 @@ dependencies = [ [[package]] name = "wasmtime-wit-bindgen" -version = "26.0.1" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bef2a726fd8d1ee9b0144655e16c492dc32eb4c7c9f7e3309fcffe637870933" +checksum = "bf3963c9c29df91564d8bd181eb00d0dbaeafa1b2a01e15952bb7391166b704e" dependencies = [ "anyhow", "heck", @@ -2482,9 +2512,9 @@ dependencies = [ [[package]] name = "wit-parser" -version = "0.218.0" +version = "0.219.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d3d1066ab761b115f97fef2b191090faabcb0f37b555b758d3caf42d4ed9e55" +checksum = "4a86f669283257e8e424b9a4fc3518e3ade0b95deb9fbc0f93a1876be3eda598" dependencies = [ "anyhow", "id-arena", @@ -2495,7 +2525,7 @@ dependencies = [ "serde_derive", "serde_json", "unicode-xid", - "wasmparser", + "wasmparser 0.219.1", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index d7a04800..a6611b48 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -93,11 +93,11 @@ incremental = true codegen-units = 256 [workspace.dependencies] -anstyle = "1.0.8" -anyhow = "1.0.89" -bstr = "1.11.0" -cc = "1.2.1" -clap = { version = "4.5.21", features = [ +anstyle = "1.0.10" +anyhow = "1.0.94" +bstr = "1.11.1" +cc = "1.2.4" +clap = { version = "4.5.23", features = [ "cargo", "derive", "env", @@ -111,40 +111,40 @@ ctrlc = { version = "3.4.5", features = ["termination"] } dialoguer = { version = "0.11.0", features = ["fuzzy-select"] } dirs = "5.0.1" filetime = "0.2.25" -fs4 = "0.9.1" +fs4 = "0.12.0" git2 = "0.19.0" glob = "0.3.1" heck = "0.5.0" html-escape = "0.2.13" -indexmap = "2.5.0" +indexmap = "2.7.0" indoc = "2.0.5" lazy_static = "1.5.0" -libloading = "0.8.5" +libloading = "0.8.6" log = { version = "0.4.22", features = ["std"] } memchr = "2.7.4" -once_cell = "1.19.0" +once_cell = "1.20.2" path-slash = "0.2.1" pretty_assertions = "1.4.1" rand = "0.8.5" -regex = "1.10.6" -regex-syntax = "0.8.4" -rustc-hash = "2.0.0" -semver = { version = "1.0.23", features = ["serde"] } -serde = { version = "1.0.215", features = ["derive"] } -serde_derive = "1.0.210" +regex = "1.11.1" +regex-syntax = "0.8.5" +rustc-hash = "2.1.0" +semver = { version = "1.0.24", features = ["serde"] } +serde = { version = "1.0.216", features = ["derive"] } +serde_derive = "1.0.216" serde_json = { version = "1.0.133", features = ["preserve_order"] } similar = "2.6.0" smallbitvec = "2.5.3" streaming-iterator = "0.1.9" tempfile = "3.14.0" -thiserror = "1.0.69" +thiserror = "2.0.7" tiny_http = "0.12.0" toml = "0.8.19" unindent = "0.2.3" -url = { version = "2.5.2", features = ["serde"] } +url = { version = "2.5.4", features = ["serde"] } walkdir = "2.5.0" -wasmparser = "0.218.0" -webbrowser = "1.0.2" +wasmparser = "0.221.2" +webbrowser = "1.0.3" tree-sitter = { version = "0.25.0", path = "./lib" } tree-sitter-generate = { version = "0.25.0", path = "./cli/generate" } diff --git a/cli/src/tests/proc_macro/Cargo.toml b/cli/src/tests/proc_macro/Cargo.toml index ef991956..81a05954 100644 --- a/cli/src/tests/proc_macro/Cargo.toml +++ b/cli/src/tests/proc_macro/Cargo.toml @@ -12,7 +12,7 @@ workspace = true proc-macro = true [dependencies] -proc-macro2 = "1.0.86" +proc-macro2 = "1.0.92" quote = "1.0.37" rand = "0.8.5" -syn = { version = "2.0.79", features = ["full"] } +syn = { version = "2.0.90", features = ["full"] } diff --git a/lib/Cargo.toml b/lib/Cargo.toml index 08455a91..8052b94e 100644 --- a/lib/Cargo.toml +++ b/lib/Cargo.toml @@ -45,21 +45,22 @@ std = ["regex/std", "regex/perf", "regex-syntax/unicode"] wasm = ["std", "wasmtime-c-api"] [dependencies] -regex = { version = "1.10.6", default-features = false, features = ["unicode"] } -regex-syntax = { version = "0.8.4", default-features = false } +regex = { version = "1.11.1", default-features = false, features = ["unicode"] } +regex-syntax = { version = "0.8.5", default-features = false } tree-sitter-language = { version = "0.1", path = "language" } streaming-iterator = "0.1.9" [dependencies.wasmtime-c-api] -version = "26.0.1" +version = "27.0.0" optional = true package = "wasmtime-c-api-impl" default-features = false -features = ["cranelift"] +features = ["cranelift", "gc-drc"] [build-dependencies] -bindgen = { version = "0.70.1", optional = true } +bindgen = { version = "0.71.1", optional = true } cc.workspace = true +serde_json.workspace = true [lib] path = "binding_rust/lib.rs" diff --git a/lib/binding_rust/bindings.rs b/lib/binding_rust/bindings.rs index 807bf019..19ad2b77 100644 --- a/lib/binding_rust/bindings.rs +++ b/lib/binding_rust/bindings.rs @@ -1,4 +1,4 @@ -/* automatically generated by rust-bindgen 0.70.1 */ +/* automatically generated by rust-bindgen 0.71.1 */ pub const TREE_SITTER_LANGUAGE_VERSION: u32 = 15; pub const TREE_SITTER_MIN_COMPATIBLE_LANGUAGE_VERSION: u32 = 13; diff --git a/lib/binding_rust/build.rs b/lib/binding_rust/build.rs index a9e553de..255740af 100644 --- a/lib/binding_rust/build.rs +++ b/lib/binding_rust/build.rs @@ -52,6 +52,33 @@ fn main() { #[cfg(feature = "bindgen")] fn generate_bindings(out_dir: &std::path::Path) { + use std::{process::Command, str::FromStr}; + + use bindgen::RustTarget; + + let output = Command::new("cargo") + .args(["metadata", "--format-version", "1"]) + .output() + .unwrap(); + + let metadata = serde_json::from_slice::(&output.stdout).unwrap(); + + let Some(rust_version) = metadata + .get("packages") + .and_then(|packages| packages.as_array()) + .and_then(|packages| { + packages.iter().find_map(|package| { + if package["name"] == "tree-sitter" { + package.get("rust_version").and_then(|v| v.as_str()) + } else { + None + } + }) + }) + else { + panic!("Failed to find tree-sitter package in cargo metadata"); + }; + const HEADER_PATH: &str = "include/tree_sitter/api.h"; println!("cargo:rerun-if-changed={HEADER_PATH}"); @@ -79,6 +106,8 @@ fn generate_bindings(out_dir: &std::path::Path) { .no_copy(no_copy.join("|")) .prepend_enum_name(false) .use_core() + .clang_arg("-D TREE_SITTER_FEATURE_WASM") + .rust_target(RustTarget::from_str(rust_version).unwrap()) .generate() .expect("Failed to generate bindings"); diff --git a/xtask/Cargo.toml b/xtask/Cargo.toml index 83bb3008..a5ccd681 100644 --- a/xtask/Cargo.toml +++ b/xtask/Cargo.toml @@ -17,7 +17,7 @@ workspace = true [dependencies] anstyle.workspace = true anyhow.workspace = true -bindgen = { version = "0.70.1" } +bindgen = { version = "0.71.1" } cc.workspace = true clap.workspace = true git2.workspace = true diff --git a/xtask/src/generate.rs b/xtask/src/generate.rs index 1af04275..d7fb8ba1 100644 --- a/xtask/src/generate.rs +++ b/xtask/src/generate.rs @@ -1,6 +1,7 @@ -use std::{collections::BTreeSet, ffi::OsStr, fs, path::Path, process::Command}; +use std::{collections::BTreeSet, ffi::OsStr, fs, path::Path, process::Command, str::FromStr}; use anyhow::{Context, Result}; +use bindgen::RustTarget; use crate::{bail_on_err, GenerateFixtures}; @@ -67,6 +68,29 @@ pub fn run_fixtures(args: &GenerateFixtures) -> Result<()> { } pub fn run_bindings() -> Result<()> { + let output = Command::new("cargo") + .args(["metadata", "--format-version", "1"]) + .output() + .unwrap(); + + let metadata = serde_json::from_slice::(&output.stdout).unwrap(); + + let Some(rust_version) = metadata + .get("packages") + .and_then(|packages| packages.as_array()) + .and_then(|packages| { + packages.iter().find_map(|package| { + if package["name"] == "tree-sitter" { + package.get("rust_version").and_then(|v| v.as_str()) + } else { + None + } + }) + }) + else { + panic!("Failed to find tree-sitter package in cargo metadata"); + }; + let no_copy = [ "TSInput", "TSLanguage", @@ -91,6 +115,7 @@ pub fn run_bindings() -> Result<()> { .prepend_enum_name(false) .use_core() .clang_arg("-D TREE_SITTER_FEATURE_WASM") + .rust_target(RustTarget::from_str(rust_version).unwrap()) .generate() .expect("Failed to generate bindings");