Skip to content

Update dependency tree-sitter-language-pack to v1#34

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/tree-sitter-language-pack-1.x
Open

Update dependency tree-sitter-language-pack to v1#34
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/tree-sitter-language-pack-1.x

Conversation

@renovate

@renovate renovate Bot commented Jun 21, 2026

Copy link
Copy Markdown
Contributor

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence
tree-sitter-language-pack ==0.13.0==1.10.1 age confidence

Release Notes

kreuzberg-dev/tree-sitter-language-pack (tree-sitter-language-pack)

v1.10.1

Compare Source

Fixed
  • Java: fixed a JVM crash (EXCEPTION_ACCESS_VIOLATION) when traversing a parsed tree via opaque
    handles (#​146).
    Parser.parse, Tree.walk, Tree.rootNode, Node.parent/child, and
    TreeCursor.node freed the returned native handle in a finally block immediately after wrapping
    it, so the returned Tree/Node/TreeCursor referenced already-freed memory and the next native
    call dereferenced it and crashed. The wrapper now owns the handle and frees it once on close().
    Fixed in the alef Java backend and picked up by the 0.25.55 regen; value/DTO returns
    (byteRange/startPosition/process) still correctly free the FFI temporary after reading it.
Changed
  • chore(precommit,alef): standardize kotlin-android formatting on ktfmt --kotlinlang-style. Drop the conflicting prek ktlint hook, scope detekt/ktfmt to packages/kotlin-android, add --kotlinlang-style to ktfmt, switch alef.toml kotlin format/check from gradle-ktlintFormat to ktfmt so alef and prek agree, and exclude the vendored Gradle wrapper from shellcheck. detekt remains for static analysis. (.pre-commit-config.yaml, alef.toml)
Added
  • Host-native Language passthrough across the C-ABI binding family (#​143). get_language
    now returns each ecosystem's native tree-sitter Language instead of an opaque alef handle, so
    the result drops straight into the host runtime's parser: Go (*tree_sitter.Language via
    go-tree-sitter), Zig (?*const tree_sitter.Language via zig-tree-sitter), Java
    (jtreesitter.Language), C# (TreeSitter.Language), Kotlin Android (ktreesitter.Language),
    and Swift (SwiftTreeSitter.Language) — joining the existing Python and Node passthrough. Each
    binding gained a dependency on its host tree-sitter runtime, injected into the generated manifest.
    Configured via [crates.*.capsule_types.Language] in alef.toml; regenerated against alef 0.25.55.
Changed
  • Regenerated all bindings against alef 0.25.55. The C FFI crate now takes a direct
    tree-sitter dependency so the capsule shim can name tree_sitter::ffi::TSLanguage (the pointee
    it casts value.into_raw() to), and the zig build.zig.zon carries the resolved zig-tree-sitter
    content hash.

v1.9.1

Compare Source

Fixed
  • Swift: restored the public getLanguage(name:) function in the TreeSitterLanguagePack
    module. An alef 0.25.38 codegen regression added opaque types to the Swift forwarder
    exclusion set, dropping get_language (the only free function returning the opaque
    Language type) from the generated public API in v1.9.0. Regenerated against alef 0.25.43.

v1.9.0

Compare Source

Changed
  • Bumped alef pin 0.25.28 → 0.25.38 and regenerated all bindings. Picks up alef 0.25.29–0.25.38: enum associated (static factory) methods surfaced across backends, the swift opaque no-op shim so $_free is synthesised for handle types with no visible methods (e.g. Language), swift streaming-owner already_declared re-declaration, java marshal_optional_bytes template registration, and java @Nullable type-use placement on qualified types.
  • Upgraded all dependencies to their latest versions (cross-major). Ran task upgrade across every language workspace; lock files regenerated and committed.
  • Repo hygiene. Ignore the machine-local packages/kotlin-android/.gradle/ cache and the .basemind/ index (untracking the accidentally-committed Gradle cache files), and exclude the deterministic .ai-rulez/.generated-manifest.json from the oxfmt pre-commit hook so it no longer fights the ai-rulez-generate hook.
Fixed
  • Java: dropped throwing UnsupportedOperationException stubs for Self-returning DTO/enum methods. There is no JNI/FFM symbol for DTO methods yet, so the throwing stubs compiled but misled callers and broke any path that reached them. The Java backend now skips these methods until marshaling lands.
  • Java: restored the true default for boxed @Nullable Boolean #[serde(default)] record fields. A non-optional #[serde(default)] bool = true field is boxed to @Nullable Boolean, so JSON that omitted it deserialised to null and the accessor returned null instead of true.

v1.8.1

Compare Source

Added
  • Four new language bindings via alef 0.16.6, taking total binding count from 10 to 14:
    • Dart / Flutterdart pub add tree_sitter_language_pack. Built with flutter_rust_bridge for isolate-safe Future APIs.
    • Kotlin (Android)dev.kreuzberg.tslp:tslp-android AAR on Maven Central. JNI-based with per-ABI native libraries (arm64-v8a, armeabi-v7a, x86_64, x86). JVM Kotlin users continue to consume the canonical Java / Panama-FFM package.
    • SwiftTreeSitterLanguagePack via SwiftPM. swift-bridge for macOS, iOS, and Linux.
    • Zigzig fetch --save <tarball-url> from GitHub Releases. Direct C FFI via @cImport.
  • Two new Rust binding crates: tree-sitter-language-pack-dart (FRB bridge) and tree-sitter-language-pack-swift (swift-bridge).
  • Hand-written crates/ts-pack-core-jni Rust crate exporting Java_... JNI symbols for the Kotlin-Android binding (excluded from the default workspace build because it cross-compiles via cargo ndk).
  • Per-language CI workflows: ci-zig.yaml, ci-swift.yaml, ci-dart.yaml, plus a combined ci-mobile.yaml covering Android cross-compile + iOS cargo check.
  • Publish jobs for pub.dev (publish-pub), Swift Package Index (publish-swift), Zig (publish-zig → GitHub Release tarball), and Maven Central kotlin-android (publish-kotlin-android).
Fixed
  • Download cache is now safe under concurrent multi-process access. DOWNLOAD_CACHE_LOCK in crates/ts-pack-core/src/lib.rs was a Mutex<()> — intra-process only — so multi-worker servers (gunicorn / Puma / Node cluster), fan-out build pipelines (make -j8, parallel test runners), and the zig e2e suite (zig build test spawns eight test binaries in parallel) all raced on the same ~/.cache/tree-sitter-language-pack/v{version}/ directory. Partial entry.unpack writes were observable to other workers' libloading::open, producing intermittent LanguageNotFound / segfaults on first request for an uncached language; N processes could also each redundantly pull the 50MB platform bundle. Cache writes are now atomic (write to <dest_dir>/.<name>.tmp.<pid>.<seq> then fs::rename — readers see old, new, or nothing, never partial) and the bundle-fetch / extract / clean critical section is serialized across processes with an exclusive fd-lock on <version_cache_dir>/.download.lock. Double-checked locking preserves the lock-free hot path: steady-state is_cached lookups never pay the OS file-lock cost. New Error::CacheLock(String) variant surfaces lock-acquisition failures cleanly. Affects every binding (Python, Node.js, Ruby, PHP, Go, Java, C#, Elixir, WASM, Dart, Swift, Zig, Kotlin-Android) because the fix lives entirely in the shared ts-pack-core Rust crate. New fd-lock = "4" dependency (gated under the download feature). Cross-process safety relies on flock semantics, which are unreliable on NFS — users with XDG_CACHE_HOME on NFS should use a local-FS cache or serialize at the application layer. (crates/ts-pack-core/src/{download.rs,error.rs}, crates/ts-pack-core/Cargo.toml, Cargo.toml, new crates/ts-pack-core/tests/concurrent_download.rs)
  • Zig e2e auto-omits fixtures outside the static-compiled grammar set (regen on alef 65f1a129). Declared [crates.zig].languages = [<curated 18-grammar list>] mirroring the TSLP_LANGUAGES value in [crates.test.zig].before. Alef's new Zig codegen filter consults both input.language and input.config.language and drops fixtures whose target grammar is not in the list (mirroring the WASM f9e0ff50 pattern). Eliminates smoke_bibtex and every other non-static-set test that previously failed at parser-load time. Also reverts the per-fixture skip: { languages: ["zig"] } workaround on fixtures/smoke/actionscript.json since the auto-omit subsumes it. (alef.toml, fixtures/smoke/actionscript.json)
  • swift e2e: process contains assertions on Vec<DTO> fields aggregate every stringy accessor (regen on alef 857c55d1). testProcessPythonImportsDetail and testProcessRustStructureName previously failed because the codegen relied on result_field_accessor naming a single "primary" accessor per array field (imports → source, structure → kind), which misses values surfaced on sibling fields — "os" against ImportInfo.items, "MyConfig" against StructureItem.name rather than StructureKind. The regenerated tests now emit a contains(where: { item in … }) closure that gathers every text-bearing accessor (String, Option, Vec, serde-enum) into a [String] and substring-matches the expected value, mirroring python's _alef_e2e_item_texts. Swift e2e: 411 tests, 0 failures. (e2e/swift_e2e/Tests/TreeSitterLanguagePackE2ETests/ProcessTests.swift)
  • Maven JAR native layout collapses every classifier under natives/native/ (#​128). The re-stage loop in build-maven-package walked one dirname too far when extracting the classifier from each lib's path, so all six platform libs landed at natives/native/{lib} instead of natives/{classifier}/{lib}. The Maven Central JAR shipped in v1.8.1 contained only three files (one per .so/.dylib/.dll extension) and TreeSitterLanguagePack.getParser("…") failed with UnsatisfiedLinkError: Expected resource: /natives/windows-x86_64/ts_pack_core_ffi.dll. Fixed the path-walk depth, and hardened both build-side and deploy-side verification steps to require every linux-x86_64 / linux-arm64 / macos-arm64 / macos-x86_64 / windows-x86_64 / windows-arm64 classifier directory is present in the staged JAR so the regression cannot ship again. Additionally corrected the Windows-ARM classifier from windows-aarch64 to windows-arm64: the Java loader (NativeLib.resolveNativesRid) normalizes every ARM architecture to arm64 and resolves to natives/windows-arm64/, so a JAR staged under windows-aarch64 would still UnsatisfiedLinkError on Windows ARM64 — the publish matrix and both verification steps now use windows-arm64, consistent with the linux-arm64 / macos-arm64 classifiers and the loader. (.github/workflows/publish.yaml)
  • WASM e2e local-feasibility + auto-skip wiring. [crates.test.wasm].before previously ran wasm-pack build with no TSLP_LANGUAGES set, which triggered a full 305-grammar static build — the 97MB abl/parser.c alone hangs clang at -O2 for tens of minutes. Mirrored the publish-wasm CI environment locally: TSLP_LINK_MODE=static TSLP_LANGUAGES=<curated 31-grammar list> CARGO_PROFILE_RELEASE_LTO=false CARGO_PROFILE_RELEASE_CODEGEN_UNITS=16. Also declared [crates.wasm].languages = [<same list>] so alef's wasm e2e auto-skip path correctly elides 268 of the 302 smoke tests for grammars not in the bundle (with the matching alef f23ae5d3 / f9e0ff50 fixes that teach the wasm filter to look up both input.language and input.config.language). (alef.toml)
  • Regen on alef HEAD (csharp List, go os import, php deterministic accessor ordering, swift codegen trifecta). Pulls in upstream alef fixes: 4f6a9056 csharp List emission for mock_url_list; 06caa440 go os import include guard for mock_url_list; 1fde7aae PHP deterministic accessor extraction order (HashMap→BTreeMap; resolves the recurring $imports/$structure flip in e2e/php/tests/ProcessTest.php); 13717e24 swift e2e — trailing () on scalar accessors that bridge through opaque structs, drop spurious ?.map ... ?? [] on non-optional RustVec accessors, and camelCase swift-bridge method names (e.g. asStr() not as_str()); plus the wasm input.config.language filter follow-up cited above. (e2e/php/**, e2e/swift_e2e/**, e2e/wasm/**, e2e/zig/**)
  • npm darwin-x64 NAPI binary missing (#​127). crates/ts-pack-core-node/package.json#napi.targets already listed x86_64-apple-darwin, but the build-node-native matrix in .github/workflows/publish.yaml omitted the macos-15-intel runner — so v1.8.0 / v1.8.1 npm tarballs shipped without ts-pack-core-node.darwin-x64.node, breaking require('@&#8203;kreuzberg/tree-sitter-language-pack') on Intel Macs. Added a macos-15-intel / darwin-x64 / x86_64-apple-darwin row to the matrix, mirroring the parity already present in the Python/Ruby/Java/Go publish matrices. The next published version (≥1.8.2) will include the darwin-x64 binary. (.github/workflows/publish.yaml)
  • Regen on alef v0.17.13. Pulls in four upstream fixes since v0.17.11: fix(alef-e2e/rust): unwrap Option<scalar> leaf fields in numeric comparison assertions (the three greater_than / less_than / less_than_or_equal operators no longer fail to compile when the leaf field is Option<T>), fix(alef-e2e/rust): use serde_json::from_str instead of json! macro for fixture json_object args (sidesteps the macro recursion-limit on fixtures with large JSON payloads), fix(alef-backend-php): emit Box::default() instead of Box::new(Default::default()) for boxed fallback fields (resolves clippy::box-default -D warnings on the PHP umbrella crate), and feat(alef-core,alef-e2e/wasm,alef-e2e/typescript): auto-skip wasm fixtures outside the static-compiled language set (foundational for tslp's curated wasm32 builds; no-op for now since [crates.wasm].languages is empty, but unlocks the future curated-build flow). Side effects in this regen: a few Rust e2e fixture bodies re-formatted, e2e/c/main.c cosmetic update, and packages/swift/rust/Cargo.toml deps re-ordered. (alef.toml, e2e/{c,php,rust}/**, packages/swift/rust/Cargo.toml)
  • CI E2E (.NET) lib-path block uses grouped redirect. shellcheck SC2129 flagged four consecutive echo … >> "$GITHUB_ENV" lines in the Set library paths for .NET step; consolidated into a single grouped { … } >> "$GITHUB_ENV" block to keep actionlint clean on the workflow. (.github/workflows/ci-e2e.yaml)
  • Pin alef to v0.17.10. Bumps alef_version in alef.toml and the alef pre-commit-hook rev. Lands the Phase-5 leakage-sanitizer chain plus follow-up codegen fixes: v0.17.4 csharp/elixir/kotlin/swift codegen-consumer unblocks; v0.17.5 NAPI/PHP/Java docstring sanitizer wiring; v0.17.7 sanitizer recognises rustdoc test-attribute fences (```no_run, ```ignore, ```should_panic, ```compile_fail, ```edition*) as Rust code (so their bodies are dropped for foreign-language targets); v0.17.8/v0.17.9 csharp U1-bool P/Invoke call-site fix; v0.17.10 Swift free-function forwarder fixes — Option<String> returns now use ?.toString() and host DTO args flow through .intoRust() before the bridge call, so detectLanguageFromExtension/Path/Content, the *Query getters, and process(_:config:) compile and execute against the high-level Swift API. Downstream surface: 61 Rust-code-block leaks in crates/ts-pack-core-node/index.d.ts and 20+ in crates/ts-pack-core-php/src/lib.rs collapse to 0 after this regen.
  • Rust e2e chunks undefined. e2e/rust/tests/process_test.rs four test_*_chunking_* cases were emitting assert!(chunks.len() >= 2 as usize, ...) where chunks was undeclared (E0425). Same class of bug as the PHP $chunks fix; alef's Rust e2e codegen unconditionally fired the streaming-virtual-field assertion arm for chunks/imports/structure even for non-streaming fixtures. Fix pulled in via alef a32ca2a0 fix(rust-gen): bind fields_array accessor before len() assertion in e2e tests — non-streaming fixtures with a colliding fields_array field now emit a leading let {field} = &{result}.{field}; binding.
  • e2e/node tree-sitter dev-dep restored (recurring). alef generate strips tree-sitter@^0.25.0 from e2e/node/package.json on every regen, but tests/capsule_passthrough.test.ts imports it to verify FFI capsule type-tag pass-through between our Language object and the upstream tree-sitter Node native module. Hand-restored, alongside the corresponding pnpm-lock.yaml rows.
  • Subsequent regen on top of alef Swift API tightening. Pulls in alef 2eaa260a fix(swift): hide RustVec/RustString/intoRust from public API; convert at forwarder boundaries plus a handful of smaller adapter fixes (fix(alef-backend-pyo3), fix(alef-backend-napi,wasm), fix(alef-backend-ffi) clippy). Public Swift API surface no longer leaks RustVec/RustString/intoRust(); conversion happens at forwarder boundaries inside generated extensions.
  • CI green-up. Regenerated pnpm-lock.yaml to drop the stale e2e/node → tree-sitter@^0.25.0 devDependency that broke pnpm install --frozen-lockfile in CI Validate. Regenerated the docs/reference/api-*.md set so committed output matches alef docs (compact Markdown tables) and alef verify stays green on main.
  • Full alef regen on top of upstream codegen fixes. Pulls in three alef fixes: fix(swift): enum intoRust(), Ref→owned init, Vec<RustString> elem type (Swift CI was failing on CommentKind.intoRust(), RustStringRef.toString(), RustVec<String> not conforming to Vectorizable); fix(php-gen): bind fields_array accessor before count() assertion in e2e tests (PHP e2e test_*_chunking_* cases were referencing undefined $chunks); fix(alef-backend-go): null-check and box Option<String> returns instead of dereferencing (generated packages/go/binding.go was returning C.GoString(ptr) where the signature expected *string, breaking golangci-lint and govulncheck). Side-effect: API docstrings now elide Rust-style [Type]-link syntax (e.g. PHP Node.php doc comments now read A single syntax node within a 'Tree' instead of A single syntax node within a [Tree]).
  • WASM yuck grammar marked unsupported. tree-sitter-yuck produces RuntimeError: unreachable when parsing under wasm32 (same class of bug as zig/ziggy, which already skip on wasm). fixtures/smoke/yuck.json now carries skip: { languages: ["wasm"] }; alef e2e generate removed the corresponding test from e2e/wasm/tests/smoke.test.ts. Native bindings remain unaffected.
  • package.json pnpm-field cleanup. Removed the now-ignored pnpm.onlyBuiltDependencies block from the root package.json. pnpm 11 reads that setting from pnpm-workspace.yaml (which already declares the same allowlist); the duplicate field made pnpm emit a warning on every install.
  • Downloader now honours the host OS trust store by default (#​125). Manifest and bundle downloads from github.com/kreuzberg-dev/tree-sitter-language-pack/releases/... previously used ureq 3.x's default rustls agent, which trusts only the bundled Mozilla webpki roots and ignores the platform store. On Linux/WSL2 hosts where GitHub HTTPS traffic is presented with a chain rooted in a locally trusted (corp / private) CA — and where curl, pip, and git all succeed against the same URL via the OS trust store — first-use parser downloads failed with DownloadError: ... io: invalid peer certificate: UnknownIssuer. The downloader now constructs a configured ureq::Agent with RootCerts::PlatformVerifier by default (via rustls-platform-verifier), matching the behaviour of every other host-trust-aware HTTP client on the system. Set TREE_SITTER_LANGUAGE_PACK_TLS_ROOTS=webpki to opt back into ureq's bundled Mozilla roots; set TREE_SITTER_LANGUAGE_PACK_TLS_ROOTS=platform to make the default explicit. Affects every binding (Python, Node.js, Ruby, PHP, Go, Java, C#, Elixir, WASM, Dart, Swift, Zig, Kotlin-Android) because the fix lives entirely in the shared ts-pack-core Rust crate. (crates/ts-pack-core/src/{download.rs,pack_config.rs}, workspace Cargo.toml)
Removed
  • wolfram grammar dropped from the language pack. tree-sitter-wolfram produces glibc heap corruption (free(): invalid next size) when parsing trivial input under serial test execution on Linux; macOS allocator silently tolerated the corruption. The entire upstream ecosystem is unmaintained (canonical bostick/tree-sitter-wolfram last touched 2021-11-11 with 3 stars; every known fork — LumaKernel, LoganAMorrison, JuanG970, jakassebaum — ships the same LANGUAGE_VERSION 13 parser tables and is inactive). Rather than fork-and-maintain a Wolfram grammar in-house for marginal demand, the entry is removed from language_definitions.json, all CI TSLP_LANGUAGES lists, the smoke fixture, the e2e harness, the docs, and the README ecosystem listings. Total supported grammar count drops from 306 to 305, which matches the long-standing "305 languages" marketing copy (previously off-by-one due to the broken wolfram entry).
Changed
  • Split pub.dev publish into a dedicated publish-pubdev.yaml workflow triggered by push: tags: v*. pub.dev OIDC trusted publishing rejects tokens from release events; only push and workflow_dispatch events are accepted. The new workflow produces an accepted token. One-time setup required: configure pub.dev → tree_sitter_language_pack package → Admin → Automated publishing with workflow path .github/workflows/publish-pubdev.yaml. (.github/workflows/publish-pubdev.yaml, .github/workflows/publish.yaml)
  • Regenerated all alef-managed surfaces (per-binding READMEs, API reference docs, generated bindings, e2e tests) and the script-managed docs/languages.md + _supported_languages.py to reflect the 305-grammar count.
  • scripts/generate_grammar_table.py default output path corrected from docs/supported-languages.md to the canonical nav-referenced docs/languages.md; Taskfile docs:generate:languages generates: field updated to match.

v1.8.0

Added
  • Four new language bindings via alef 0.16.6, taking total binding count from 10 to 14:
    • Dart / Flutterdart pub add tree_sitter_language_pack. Built with flutter_rust_bridge for isolate-safe Future APIs.
    • Kotlin (Android)dev.kreuzberg.tslp:tslp-android AAR on Maven Central. JNI-based with per-ABI native libraries (arm64-v8a, armeabi-v7a, x86_64, x86). JVM Kotlin users continue to consume the canonical Java / Panama-FFM package.
    • SwiftTreeSitterLanguagePack via SwiftPM. swift-bridge for macOS, iOS, and Linux.
    • Zigzig fetch --save <tarball-url> from GitHub Releases. Direct C FFI via @cImport.
  • Two new Rust binding crates: tree-sitter-language-pack-dart (FRB bridge) and tree-sitter-language-pack-swift (swift-bridge).
  • Hand-written crates/ts-pack-core-jni Rust crate exporting Java_... JNI symbols for the Kotlin-Android binding (excluded from the default workspace build because it cross-compiles via cargo ndk).
  • Per-language CI workflows: ci-zig.yaml, ci-swift.yaml, ci-dart.yaml, plus a combined ci-mobile.yaml covering Android cross-compile + iOS cargo check.
  • Publish jobs for pub.dev (publish-pub), Swift Package Index (publish-swift), Zig (publish-zig → GitHub Release tarball), and Maven Central kotlin-android (publish-kotlin-android).
Fixed
  • Download cache is now safe under concurrent multi-process access. DOWNLOAD_CACHE_LOCK in crates/ts-pack-core/src/lib.rs was a Mutex<()> — intra-process only — so multi-worker servers (gunicorn / Puma / Node cluster), fan-out build pipelines (make -j8, parallel test runners), and the zig e2e suite (zig build test spawns eight test binaries in parallel) all raced on the same ~/.cache/tree-sitter-language-pack/v{version}/ directory. Partial entry.unpack writes were observable to other workers' libloading::open, producing intermittent LanguageNotFound / segfaults on first request for an uncached language; N processes could also each redundantly pull the 50MB platform bundle. Cache writes are now atomic (write to <dest_dir>/.<name>.tmp.<pid>.<seq> then fs::rename — readers see old, new, or nothing, never partial) and the bundle-fetch / extract / clean critical section is serialized across processes with an exclusive fd-lock on <version_cache_dir>/.download.lock. Double-checked locking preserves the lock-free hot path: steady-state is_cached lookups never pay the OS file-lock cost. New Error::CacheLock(String) variant surfaces lock-acquisition failures cleanly. Affects every binding (Python, Node.js, Ruby, PHP, Go, Java, C#, Elixir, WASM, Dart, Swift, Zig, Kotlin-Android) because the fix lives entirely in the shared ts-pack-core Rust crate. New fd-lock = "4" dependency (gated under the download feature). Cross-process safety relies on flock semantics, which are unreliable on NFS — users with XDG_CACHE_HOME on NFS should use a local-FS cache or serialize at the application layer. (crates/ts-pack-core/src/{download.rs,error.rs}, crates/ts-pack-core/Cargo.toml, Cargo.toml, new crates/ts-pack-core/tests/concurrent_download.rs)
  • Zig e2e auto-omits fixtures outside the static-compiled grammar set (regen on alef 65f1a129). Declared [crates.zig].languages = [<curated 18-grammar list>] mirroring the TSLP_LANGUAGES value in [crates.test.zig].before. Alef's new Zig codegen filter consults both input.language and input.config.language and drops fixtures whose target grammar is not in the list (mirroring the WASM f9e0ff50 pattern). Eliminates smoke_bibtex and every other non-static-set test that previously failed at parser-load time. Also reverts the per-fixture skip: { languages: ["zig"] } workaround on fixtures/smoke/actionscript.json since the auto-omit subsumes it. (alef.toml, fixtures/smoke/actionscript.json)
  • swift e2e: process contains assertions on Vec<DTO> fields aggregate every stringy accessor (regen on alef 857c55d1). testProcessPythonImportsDetail and testProcessRustStructureName previously failed because the codegen relied on result_field_accessor naming a single "primary" accessor per array field (imports → source, structure → kind), which misses values surfaced on sibling fields — "os" against ImportInfo.items, "MyConfig" against StructureItem.name rather than StructureKind. The regenerated tests now emit a contains(where: { item in … }) closure that gathers every text-bearing accessor (String, Option, Vec, serde-enum) into a [String] and substring-matches the expected value, mirroring python's _alef_e2e_item_texts. Swift e2e: 411 tests, 0 failures. (e2e/swift_e2e/Tests/TreeSitterLanguagePackE2ETests/ProcessTests.swift)
  • Maven JAR native layout collapses every classifier under natives/native/ (#​128). The re-stage loop in build-maven-package walked one dirname too far when extracting the classifier from each lib's path, so all six platform libs landed at natives/native/{lib} instead of natives/{classifier}/{lib}. The Maven Central JAR shipped in v1.8.1 contained only three files (one per .so/.dylib/.dll extension) and TreeSitterLanguagePack.getParser("…") failed with UnsatisfiedLinkError: Expected resource: /natives/windows-x86_64/ts_pack_core_ffi.dll. Fixed the path-walk depth, and hardened both build-side and deploy-side verification steps to require every linux-x86_64 / linux-arm64 / macos-arm64 / macos-x86_64 / windows-x86_64 / windows-arm64 classifier directory is present in the staged JAR so the regression cannot ship again. Additionally corrected the Windows-ARM classifier from windows-aarch64 to windows-arm64: the Java loader (NativeLib.resolveNativesRid) normalizes every ARM architecture to arm64 and resolves to natives/windows-arm64/, so a JAR staged under windows-aarch64 would still UnsatisfiedLinkError on Windows ARM64 — the publish matrix and both verification steps now use windows-arm64, consistent with the linux-arm64 / macos-arm64 classifiers and the loader. (.github/workflows/publish.yaml)
  • WASM e2e local-feasibility + auto-skip wiring. [crates.test.wasm].before previously ran wasm-pack build with no TSLP_LANGUAGES set, which triggered a full 305-grammar static build — the 97MB abl/parser.c alone hangs clang at -O2 for tens of minutes. Mirrored the publish-wasm CI environment locally: TSLP_LINK_MODE=static TSLP_LANGUAGES=<curated 31-grammar list> CARGO_PROFILE_RELEASE_LTO=false CARGO_PROFILE_RELEASE_CODEGEN_UNITS=16. Also declared [crates.wasm].languages = [<same list>] so alef's wasm e2e auto-skip path correctly elides 268 of the 302 smoke tests for grammars not in the bundle (with the matching alef f23ae5d3 / f9e0ff50 fixes that teach the wasm filter to look up both input.language and input.config.language). (alef.toml)
  • Regen on alef HEAD (csharp List, go os import, php deterministic accessor ordering, swift codegen trifecta). Pulls in upstream alef fixes: 4f6a9056 csharp List emission for mock_url_list; 06caa440 go os import include guard for mock_url_list; 1fde7aae PHP deterministic accessor extraction order (HashMap→BTreeMap; resolves the recurring $imports/$structure flip in e2e/php/tests/ProcessTest.php); 13717e24 swift e2e — trailing () on scalar accessors that bridge through opaque structs, drop spurious ?.map ... ?? [] on non-optional RustVec accessors, and camelCase swift-bridge method names (e.g. asStr() not as_str()); plus the wasm input.config.language filter follow-up cited above. (e2e/php/**, e2e/swift_e2e/**, e2e/wasm/**, e2e/zig/**)
  • npm darwin-x64 NAPI binary missing (#​127). crates/ts-pack-core-node/package.json#napi.targets already listed x86_64-apple-darwin, but the build-node-native matrix in .github/workflows/publish.yaml omitted the macos-15-intel runner — so v1.8.0 / v1.8.1 npm tarballs shipped without ts-pack-core-node.darwin-x64.node, breaking require('@&#8203;kreuzberg/tree-sitter-language-pack') on Intel Macs. Added a macos-15-intel / darwin-x64 / x86_64-apple-darwin row to the matrix, mirroring the parity already present in the Python/Ruby/Java/Go publish matrices. The next published version (≥1.8.2) will include the darwin-x64 binary. (.github/workflows/publish.yaml)
  • Regen on alef v0.17.13. Pulls in four upstream fixes since v0.17.11: fix(alef-e2e/rust): unwrap Option<scalar> leaf fields in numeric comparison assertions (the three greater_than / less_than / less_than_or_equal operators no longer fail to compile when the leaf field is Option<T>), fix(alef-e2e/rust): use serde_json::from_str instead of json! macro for fixture json_object args (sidesteps the macro recursion-limit on fixtures with large JSON payloads), fix(alef-backend-php): emit Box::default() instead of Box::new(Default::default()) for boxed fallback fields (resolves clippy::box-default -D warnings on the PHP umbrella crate), and feat(alef-core,alef-e2e/wasm,alef-e2e/typescript): auto-skip wasm fixtures outside the static-compiled language set (foundational for tslp's curated wasm32 builds; no-op for now since [crates.wasm].languages is empty, but unlocks the future curated-build flow). Side effects in this regen: a few Rust e2e fixture bodies re-formatted, e2e/c/main.c cosmetic update, and packages/swift/rust/Cargo.toml deps re-ordered. (alef.toml, e2e/{c,php,rust}/**, packages/swift/rust/Cargo.toml)
  • CI E2E (.NET) lib-path block uses grouped redirect. shellcheck SC2129 flagged four consecutive echo … >> "$GITHUB_ENV" lines in the Set library paths for .NET step; consolidated into a single grouped { … } >> "$GITHUB_ENV" block to keep actionlint clean on the workflow. (.github/workflows/ci-e2e.yaml)
  • Pin alef to v0.17.10. Bumps alef_version in alef.toml and the alef pre-commit-hook rev. Lands the Phase-5 leakage-sanitizer chain plus follow-up codegen fixes: v0.17.4 csharp/elixir/kotlin/swift codegen-consumer unblocks; v0.17.5 NAPI/PHP/Java docstring sanitizer wiring; v0.17.7 sanitizer recognises rustdoc test-attribute fences (```no_run, ```ignore, ```should_panic, ```compile_fail, ```edition*) as Rust code (so their bodies are dropped for foreign-language targets); v0.17.8/v0.17.9 csharp U1-bool P/Invoke call-site fix; v0.17.10 Swift free-function forwarder fixes — Option<String> returns now use ?.toString() and host DTO args flow through .intoRust() before the bridge call, so detectLanguageFromExtension/Path/Content, the *Query getters, and process(_:config:) compile and execute against the high-level Swift API. Downstream surface: 61 Rust-code-block leaks in crates/ts-pack-core-node/index.d.ts and 20+ in crates/ts-pack-core-php/src/lib.rs collapse to 0 after this regen.
  • Rust e2e chunks undefined. e2e/rust/tests/process_test.rs four test_*_chunking_* cases were emitting assert!(chunks.len() >= 2 as usize, ...) where chunks was undeclared (E0425). Same class of bug as the PHP $chunks fix; alef's Rust e2e codegen unconditionally fired the streaming-virtual-field assertion arm for chunks/imports/structure even for non-streaming fixtures. Fix pulled in via alef a32ca2a0 fix(rust-gen): bind fields_array accessor before len() assertion in e2e tests — non-streaming fixtures with a colliding fields_array field now emit a leading let {field} = &{result}.{field}; binding.
  • e2e/node tree-sitter dev-dep restored (recurring). alef generate strips tree-sitter@^0.25.0 from e2e/node/package.json on every regen, but tests/capsule_passthrough.test.ts imports it to verify FFI capsule type-tag pass-through between our Language object and the upstream tree-sitter Node native module. Hand-restored, alongside the corresponding pnpm-lock.yaml rows.
  • Subsequent regen on top of alef Swift API tightening. Pulls in alef 2eaa260a fix(swift): hide RustVec/RustString/intoRust from public API; convert at forwarder boundaries plus a handful of smaller adapter fixes (fix(alef-backend-pyo3), fix(alef-backend-napi,wasm), fix(alef-backend-ffi) clippy). Public Swift API surface no longer leaks RustVec/RustString/intoRust(); conversion happens at forwarder boundaries inside generated extensions.
  • CI green-up. Regenerated pnpm-lock.yaml to drop the stale e2e/node → tree-sitter@^0.25.0 devDependency that broke pnpm install --frozen-lockfile in CI Validate. Regenerated the docs/reference/api-*.md set so committed output matches alef docs (compact Markdown tables) and alef verify stays green on main.
  • Full alef regen on top of upstream codegen fixes. Pulls in three alef fixes: fix(swift): enum intoRust(), Ref→owned init, Vec<RustString> elem type (Swift CI was failing on CommentKind.intoRust(), RustStringRef.toString(), RustVec<String> not conforming to Vectorizable); fix(php-gen): bind fields_array accessor before count() assertion in e2e tests (PHP e2e test_*_chunking_* cases were referencing undefined $chunks); fix(alef-backend-go): null-check and box Option<String> returns instead of dereferencing (generated packages/go/binding.go was returning C.GoString(ptr) where the signature expected *string, breaking golangci-lint and govulncheck). Side-effect: API docstrings now elide Rust-style [Type]-link syntax (e.g. PHP Node.php doc comments now read A single syntax node within a 'Tree' instead of A single syntax node within a [Tree]).
  • WASM yuck grammar marked unsupported. tree-sitter-yuck produces RuntimeError: unreachable when parsing under wasm32 (same class of bug as zig/ziggy, which already skip on wasm). fixtures/smoke/yuck.json now carries skip: { languages: ["wasm"] }; alef e2e generate removed the corresponding test from e2e/wasm/tests/smoke.test.ts. Native bindings remain unaffected.
  • package.json pnpm-field cleanup. Removed the now-ignored pnpm.onlyBuiltDependencies block from the root package.json. pnpm 11 reads that setting from pnpm-workspace.yaml (which already declares the same allowlist); the duplicate field made pnpm emit a warning on every install.
  • Downloader now honours the host OS trust store by default (#​125). Manifest and bundle downloads from github.com/kreuzberg-dev/tree-sitter-language-pack/releases/... previously used ureq 3.x's default rustls agent, which trusts only the bundled Mozilla webpki roots and ignores the platform store. On Linux/WSL2 hosts where GitHub HTTPS traffic is presented with a chain rooted in a locally trusted (corp / private) CA — and where curl, pip, and git all succeed against the same URL via the OS trust store — first-use parser downloads failed with DownloadError: ... io: invalid peer certificate: UnknownIssuer. The downloader now constructs a configured ureq::Agent with RootCerts::PlatformVerifier by default (via rustls-platform-verifier), matching the behaviour of every other host-trust-aware HTTP client on the system. Set TREE_SITTER_LANGUAGE_PACK_TLS_ROOTS=webpki to opt back into ureq's bundled Mozilla roots; set TREE_SITTER_LANGUAGE_PACK_TLS_ROOTS=platform to make the default explicit. Affects every binding (Python, Node.js, Ruby, PHP, Go, Java, C#, Elixir, WASM, Dart, Swift, Zig, Kotlin-Android) because the fix lives entirely in the shared ts-pack-core Rust crate. (crates/ts-pack-core/src/{download.rs,pack_config.rs}, workspace Cargo.toml)
Removed
  • wolfram grammar dropped from the language pack. tree-sitter-wolfram produces glibc heap corruption (free(): invalid next size) when parsing trivial input under serial test execution on Linux; macOS allocator silently tolerated the corruption. The entire upstream ecosystem is unmaintained (canonical bostick/tree-sitter-wolfram last touched 2021-11-11 with 3 stars; every known fork — LumaKernel, LoganAMorrison, JuanG970, jakassebaum — ships the same LANGUAGE_VERSION 13 parser tables and is inactive). Rather than fork-and-maintain a Wolfram grammar in-house for marginal demand, the entry is removed from language_definitions.json, all CI TSLP_LANGUAGES lists, the smoke fixture, the e2e harness, the docs, and the README ecosystem listings. Total supported grammar count drops from 306 to 305, which matches the long-standing "305 languages" marketing copy (previously off-by-one due to the broken wolfram entry).
Changed
  • Split pub.dev publish into a dedicated publish-pubdev.yaml workflow triggered by push: tags: v*. pub.dev OIDC trusted publishing rejects tokens from release events; only push and workflow_dispatch events are accepted. The new workflow produces an accepted token. One-time setup required: configure pub.dev → tree_sitter_language_pack package → Admin → Automated publishing with workflow path .github/workflows/publish-pubdev.yaml. (.github/workflows/publish-pubdev.yaml, .github/workflows/publish.yaml)
  • Regenerated all alef-managed surfaces (per-binding READMEs, API reference docs, generated bindings, e2e tests) and the script-managed docs/languages.md + _supported_languages.py to reflect the 305-grammar count.
  • scripts/generate_grammar_table.py default output path corrected from docs/supported-languages.md to the canonical nav-referenced docs/languages.md; Taskfile docs:generate:languages generates: field updated to match.

v1.6.3

Fixed
  • Go: fix FFI build defaults — add TSLP_LINK_MODE and TSLP_LANGUAGES env vars to Go task (#​102)
  • Go: fix CGO LDFLAGS paths — point to workspace target/release/ instead of crate-local path (#​102)
  • Go: remove duplicate forward declarations from ffi.go (already in ts_pack.h) (#​102)
  • Go: fix README examples — proper error handling, correct API signatures (Init, Download) (#​102)
  • FFI: add extra libs dir from cache_dir() to registry on creation (#​102)
  • Docs: fix textlint pre-commit hook — add additional_dependencies for all textlint plugins (#​102)

v1.6.2

Compare Source

Fixed
  • Compile bundled grammars with -fno-strict-aliasing to prevent undefined behavior (#​100)
Changed
  • Update dependencies across lockfiles
  • Regenerate READMEs for 1.6.1 version bump (#​101)

v1.6.1

Compare Source

Fixed
  • Go: move package root from packages/go/v1/ to packages/go/ so the Go module proxy can resolve go.mod at the correct path — go get github.com/kreuzberg-dev/tree-sitter-language-pack/packages/go now works (#​97)
  • Go: fix CGO SRCDIR-relative include/lib paths (one fewer ../ after directory restructure)
  • Remove features = ["all"] from e2e Rust test Cargo.toml — use download feature for runtime parser fetching
  • Remove 305 lang-* features to unblock crates.io publish (300 feature limit)
  • Regenerate READMEs for v1.6.0, fix Windows query cache test flake
  • Bump rustls-webpki to patch RUSTSEC-2026-0098 and RUSTSEC-2026-0099 (#​99)
  • Fix MIME type inference in core build by embedding language_definitions.json in crate
Changed
  • Update dependencies across Python, Node.js, PHP, and Rust lockfiles
  • Replace feature group docs with download/TSLP_LANGUAGES documentation in READMEs

v1.6.0

Compare Source

Added
  • Thread-local parser cache in parse_string() — avoids re-creating parsers on repeated calls for the same language
  • Two-level compiled query cache (thread-local + global) in run_query() — avoids recompiling tree-sitter queries
  • parse_with_language() internal API for callers that already have a Language object
  • Pre-computed capture names in CompiledExtraction — avoids rebuilding on every extraction call
  • Go type_spec declarations extracted as symbols with correct SymbolKind (struct, interface, type)
  • Dedicated "Download Parsers" section in quickstart docs covering CLI, programmatic APIs, groups, Docker/CI, and config files
  • Tests for parser cache reuse, query cache sharing across threads, cursor byte-range isolation, and capture name correctness
Fixed
  • compiled_query() now propagates Error::LockPoisoned instead of silently ignoring poisoned RwLock
  • QueryCursor byte-range no longer leaks between patterns when reusing the cursor in extract_from_tree()
  • Replaced std::collections::HashMap with ahash::AHashMap in parser cache for consistency
  • Redundant get_language() call removed from parse_string() hot path — only called on cache miss
Changed
  • CompiledExtraction::extract() and intel::parse_source() now use the thread-local parser cache
  • QueryCursor reused across patterns within a single extract_from_tree() call
  • Unnecessary String allocation removed from node_types.contains() check in chunking
Removed
  • All 305 lang-* Cargo features and group features (all, web, systems, scripting, data, jvm, functional, wasm) — language selection is now via TSLP_LANGUAGES env var at build time; the download feature (default) fetches parsers at runtime

v1.5.0

Compare Source

Added
  • 57 new permissively-licensed grammars — 305 languages total
    • abl, c3, cel, cfml, chuck, cst, dhall, elvish, gap, gdshader, glimmer, gnuplot, gotmpl, gowork, gpg, hjson, hocon, hoon, htmldjango, jai, javadoc, json5, kcl, mlir, nasm, norg_meta, ocamllex, openscad, phpdoc, poe_filter, prql, rasi, razor, rbs, roc, rtf, slang, smalltalk, sml, snakemake, souffle, sourcepawn, sql_bigquery, stan, superhtml, sway, systemverilog, tact, tera, typespec, typoscript, vhs, vrl, wgsl_bevy, x86asm, ziggy, ziggy_schema
  • CI license validation job in ci-validate.yaml — blocks PRs that introduce non-permissive (GPL/AGPL/LGPL/MPL) grammars
Fixed
  • less grammar: regenerated parser from ABI 11 to ABI 14 (was incompatible with tree-sitter 0.26)
  • corn smoke fixture: replaced invalid "x" snippet with valid corn syntax

v1.4.2

Compare Source

Fixes

  • Publish ts-pack-cli to crates.iocargo install ts-pack-cli now works (#​87)
  • Fix installation docs — corrected package name in README, CLI README, and installation guide
  • Remove non-existent install.sh reference from documentation

Install the CLI

cargo install ts-pack-cli

or via Homebrew:

brew install kreuzberg-dev/tap/ts-pack

v1.4.1

Compare Source

Fixed
  • Include language_definitions.json in the published crate so build.rs can find extension mappings, ambiguity data, and C symbol overrides when installed from crates.io
Changed
  • Updated dependencies across all language ecosystems

v1.4.0

Compare Source

Fixed
  • Expose detect_language in Python public API (#​85)
  • PHP extension name corrected to ts-pack-php (hyphens)
Changed
  • All language snippet READMEs and documentation corrected
  • Removed automated grammar updates workflow

v1.3.3

Compare Source

Fixed
  • C_SYMBOL_OVERRIDES table now includes ALL languages from language_definitions.json, not just compiled ones — fixes download and loading of csharp, vb, embeddedtemplate, nushell from PyPI/npm/RubyGems packages
  • downloaded_languages() returns canonical names (csharp) instead of c_symbol names (c_sharp)
  • Elixir NIF publish: upload both hyphen and underscore artifact names so RustlerPrecompiled can find them
  • Elixir NIF 2.17 packaging: fix stale variable names from dual-name refactor
  • Ruby comprehensive test: remove JSON.parse on native Hash return from process()
  • Go comprehensive test: access flat ProcessResult fields directly (no metadata wrapper)
  • Homebrew bottle and PHP PIE packages now included in release artifacts
Changed
  • Dependency updates across all language ecosystems
  • rustler_precompiled updated to 0.9.0 (Elixir)

v1.3.2

Compare Source

Fixed
  • Dynamic parser loading for languages with c_symbol overrides (csharp, vb, embeddedtemplate, nushell) — build was naming libraries with the raw name but runtime loader expected the c_symbol name (#​80)
  • Go E2E generator: unused tspack import in non-process test files
  • Elixir: add missing extract/2 and validate_extraction/1 NIF declarations
  • PHP E2E generator: use double-quoted strings for source code so \n is interpreted correctly
  • Nim grammar: switch from abandoned paranim/tree-sitter-nim (ABI v11) to aMOPel/tree-sitter-nim (MIT, ABI v14)
Added
  • Smoke test fixtures for all c_symbol override languages (csharp, vb, embeddedtemplate, nushell)
  • Dynamic-linking CI step in ci-all-grammars.yaml to catch c_symbol naming mismatches

v1.3.1

Compare Source

Fixed
  • Ruby binding: process(), extract(), validate_extraction() now return native Ruby Hash instead of raw JSON string
  • WASM binding: output keys now use camelCase (matching Node.js binding convention), input config accepts both camelCase and snake_case
  • Go E2E generator: use typed *ProcessResult struct fields instead of invalid json.Unmarshal on non-string return
  • Elixir CI: stage NIF with both hyphenated and underscored filenames to satisfy Rustler force-build check and load_from loader

v1.3.0

Compare Source

Added
  • Extraction query API: run user-defined tree-sitter queries and get structured results
    • extract_patterns() / extract() across Python, Node.js, Rust, Ruby, Elixir, PHP, WASM, C FFI
    • validate_extraction() for config validation without execution
    • CompiledExtraction for pre-compiled query reuse (Rust)
    • ProcessConfig.extractions for combining custom queries with standard analysis
    • Types: ExtractionConfig, ExtractionPattern, CaptureOutput, CaptureResult, MatchResult, PatternResult, ExtractionResult
  • Criterion benchmarks: 9 groups, 23 benchmarks across Python, TypeScript, Rust, Go
  • Extraction queries guide and documentation across all API references
Fixed
  • E2E generator: process_imports_contains_source assertion uses contains instead of equality
  • WASM: language list matches actual compiled features (30 languages)
  • WASM: add missing detectLanguageFromPath and detectLanguageFromExtension exports
  • PHP generator: null array handling in process() result assertions
  • Elixir: RustlerPrecompiled crate field resolution with load_from override
  • Predicate evaluation: remove redundant re-evaluation (tree-sitter 0.26 handles internally)
  • Documentation: stale version numbers, incomplete API references, incorrect function signatures
  • Java version requirement standardized to JDK 25+

v1.2.1

Compare Source

Fixed
  • Nushell grammar c_symbol override — linker error undefined symbol: tree_sitter_nushell
  • E2E generator calling .as_deref() on String type (compile error on CI)
  • WASM build: gate c_symbol_for behind dynamic-loading/download features (dead code warning)
  • Elixir publish: align RustlerPrecompiled crate: field with Cargo [lib] name (underscores, not hyphens)
  • Elixir publish: add --cfg flag patch to publish workflow for Rustler 0.37.3 compatibility
  • Python without_gil(): add catch_unwind to ensure GIL is reacquired on panic
  • Text splitter: prevent zero-width chunks in pathological UTF-8 edge case
  • Comment kind detection: handle //!, /*!, and doc_comment node types
  • Import detection: restrict fallback to explicitly supported languages only
  • Export detection: use field-based AST matching instead of fragile text.contains()
Changed
  • Registry: Arc<Vec<PathBuf>> for extra lib dirs (avoids Vec clone per language lookup)
  • Registry: AHashSet<&str> in available_languages() (avoids 248+ String allocations)
  • NodeInfo.kind uses Cow::Borrowed (zero-copy from tree-sitter's &'static str)
  • Python: with_tree()/try_with_tree() helpers replace 9 duplicate lock patterns
  • Python: without_gil() helper replaces 5 duplicate GIL release patterns
  • Core: extension_ambiguity_json() helper replaces duplicated JSON serialization in 4 bindings
  • Chunking: MetadataCollector struct reduces function from 11 to 7 parameters
  • FFI: 25 SAFETY comments added to unsafe blocks
  • Docs: rewrite all 12 API references to match actual binding source code
  • Docs: add JSON-LD structured data and Open Graph metadata for crawlers

v1.2.0

Compare Source

Added
  • 49 new permissively-licensed grammars — 248 languages total
    • angular, bass, blade, brightscript, circom, cooklang, corn, crystal, cue, cylc, desktop, djot, earthfile, ebnf, editorconfig, eds, eex, elsa, enforce, facility, faust, fidl, foam, forth, git_config, git_rebase, godot_resource, http, hurl, just, ledger, less, liquid, mojo, move, nickel, nginx, norg, nushell, promql, pug, ql, robot, teal, templ, tmux, todotxt, turtle, vimdoc, wolfram
  • Grammar updat

Note

PR body was truncated to here.


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate Bot force-pushed the renovate/tree-sitter-language-pack-1.x branch from 3e8c5ea to aacb88b Compare June 21, 2026 10:26
@renovate renovate Bot force-pushed the renovate/tree-sitter-language-pack-1.x branch from aacb88b to cd72f93 Compare June 21, 2026 23:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants