Changelog¶
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]¶
[1.0.0-rc.13] - 2026-03-19¶
Fixed¶
- Docs: mermaid diagrams now render (fixed broken code fence closings in architecture.md)
- Docs: Elixir icon renders in Supported Ecosystems table (
:simple-elixir:) - Docs: mkdocs.yaml aligned with kreuzberg (custom palette, toc.integrate, repo icons)
- Publish: Ruby platform-specific native gems (build-native-gem.rb)
- Publish: PHP extension binaries uploaded to GitHub release
- Publish: Elixir uses rustler_precompiled for binary NIF distribution
- Publish: workflow triggers on release event (not just workflow_dispatch)
- Publish: npm tag computed in prepare job (rc→next, stable→latest)
[1.0.0-rc.12] - 2026-03-19¶
Added¶
- Config files aligned with kreuzberg: biome.json, rust-toolchain.toml, deny.toml, .golangci.yml, .clang-format, .taplo.toml, .shellcheckrc, tsconfig.json, .npmrc, go.work
- CI CLI workflow (
ci-cli.yaml) with clone-vendors, build, smoke tests, grammar tests - Vendor scripts for PHP and Ruby (
scripts/ci/php/vendor-core.py,scripts/ci/ruby/vendor-core.py) - Docker + C FFI badges in all READMEs
composer.lockfor reproducible PHP buildstsconfig.jsonfor ts-pack-node, ts-pack-wasm, and tests/test_apps/node crates- 8 missing Elixir NIF stubs: init, configure, download, download_all, manifest_languages, downloaded_languages, clean_cache, cache_dir
Fixed¶
- CI:
rustfmtandclippyadded torust-toolchain.tomlcomponents (fixes 6 CI workflows) - CI: Go E2E tests — added
e2e/gotogo.workfor module resolution - CI: C# E2E tests —
setup-dotnet@v4→@v5, e2e-generator C# templatenet9.0→net10.0 - CI: WASM E2E tests — missing tsconfig.json files caused vitest ENOENT
- CI: CLI smoke tests — added clone-vendors job so parsers are available
- Publish: npm tag computed once in prepare job (kreuzberg pattern: rc/alpha/beta →
next, stable →latest) - README badges: reordered to match kreuzberg, license badge
.svg, docs link to kreuzberg.dev
Removed¶
- Dead code:
sources/language_extension.c,scripts/publish/go/tag-and-push-go-module.sh,tools/e2e-generator/src/generators/mod.rs.bak
[1.0.0-rc.11] - 2026-03-19¶
Added¶
- Multi-arch Docker build (linux/amd64 + linux/arm64)
- Full 19-test suite aligned across all 12 test apps (Python, Node, Ruby, Go, Java, C#, Elixir, PHP, WASM, C, Docker, Rust)
- Docker test app
Fixed¶
- Node test: remove redundant
init()call in download API tests - WASM serde fix
[1.0.0-rc.10] - 2026-03-19¶
Added¶
json_utilsmodule withsnake_to_camel/camel_to_snakeconversion- Node.js
process()accepts both camelCase and snake_case config keys - Expanded test suites: Ruby, Go, Elixir, Java, C#, PHP, WASM, C all at 19 tests
Fixed¶
- Homebrew publish: git credentials for tap push
json_utilsgated behindserdefeature flaginit()accepts optional config,process()registers cache for download featurecargo fmtformatting
[1.0.0-rc.9] - 2026-03-19¶
Added¶
- Full documentation site with MkDocs Material (29 pages), GitHub Pages deploy
- 173-language grammar test fixtures
- Docker image build/publish to GHCR, ci-docker workflow
snippet-runnertool with 33 code snippets for 11 languagesllms.txtfor AI assistant context- All-grammars test suite
Fixed¶
- Static linking symbol collisions: prefix scanner functions per language
- Enable grammar generation for batch/diff/pkl
- Homebrew upload checkout, RubyGems action, Docker clone_vendors
- Move Cargo profiles to workspace root
- Docker needs parsers from clone-vendors
- ci-docker needs tree-sitter-cli for grammar generation
- test_apps call
download()before testing
Removed¶
- Musl cross-compile from publish workflow
[1.0.0-rc.8] - 2026-03-18¶
Added¶
- Download/configure API across all bindings (Python, Node.js, Ruby, Go, Java, C#, Elixir, PHP, WASM, C FFI)
init(config)— configure + pre-download languagesdownload(languages)— download specific parsersdownload_all()— download all 170+ parsersconfigure(config)— set cache directorymanifest_languages()— list all available from remote manifestdownloaded_languages()— list locally cached parsersclean_cache()— remove cached parserscache_dir()— get effective cache directory
- Auto-download in
get_language()— parsers download on first use PackConfigstruct with TOML file loading and directory discovery- CLI redesign:
download,clean,list,parse,process,cache-dir,init,completions - Homebrew publishing pipeline (bottles, formula update via
kreuzberg-dev/homebrew-tap) - NAPI-RS multi-platform npm distribution (5 platform packages)
- Test apps for published package validation across 12 ecosystems
- E2E test fixtures for download API surface
Fixed¶
- Memory leaks in Go, Java, C# bindings (individual strings in FFI arrays not freed)
- Python GIL not released during download/network I/O operations
- Elixir NIFs not scheduled as DirtyIo for network operations
- Java
parseString/processpassingsource.length()instead of UTF-8 byte count - Rust core
AtomicBoolordering:Relaxed→Acquireinensure_cache_registered - C FFI
cache_dirreturn type*const c_char→*mut c_char - Elixir error atom:
parse_error→download_errorfor download failures - Platform detection: macOS aarch64 →
arm64inDownloadManager - Node.js npm publishing: multi-platform packages via
napi artifacts - Parser binary builds:
TSLP_LANGUAGESset, correct output path parsers.jsonmanifest generated and uploaded to GitHub releasesbuild.rsgraceful fallback for crates.io installs- Maven GPG signing enabled in publish profile
- Ruby trusted publishing (gem name with underscores)
Changed¶
- READMEs overhauled: correct badges (Homebrew, docs), download API docs, language-specific naming
- CLI binary name:
ts-pack - dotnet target: 9.0 → 10.0
- Ruby minimum: 3.2 → 3.4
- Go minimum: 1.22 → 1.26
- Smoke tests removed from publish workflow (replaced by test_apps)
[1.0.0-rc.7] - 2026-03-17¶
Fixed¶
- NAPI-RS multi-platform npm distribution (5 platform packages)
- Platform detection: macOS aarch64 →
arm64inDownloadManager - Language discovery:
available_languages()scans download cache directories - Python test_app uses
ProcessConfiginstead of raw dicts
[1.0.0-rc.6] - 2026-03-17¶
Fixed¶
- Platform detection: macOS aarch64 →
arm64for parser downloads - Language discovery in extra library directories
- Smoke tests removed from publish workflow
[1.0.0-rc.5] - 2026-03-16¶
Fixed¶
- Parser binary upload: newline-separated artifact patterns
- Upload artifacts script: empty array initialization, comma-separated pattern support
- Smoke test jobs: added checkout steps
[1.0.0-rc.4] - 2026-03-16¶
Fixed¶
- Windows parser build:
setup-pythonaction added - Maven Central: GPG signing enabled in publish profile (
gpg.skip=false) - Elixir Hex.pm: skip docs during publish for NIF packages
[1.0.0-rc.3] - 2026-03-16¶
Fixed¶
build.rsgraceful fallback whensources/language_definitions.jsonmissing- Parser binaries:
TSLP_LANGUAGESset, correct output path for.so/.dylib parsers.jsonmanifest generated and uploaded to GitHub releases- Elixir Hex.pm: added LICENSE, removed
nativefrom files list - Maven Central: profile renamed
release→publish - Python wheel:
.pyitype stubs andpy.typedmarker (PEP 561)
Added¶
- Test apps (
tests/test_apps/) for validating published packages across 12 ecosystems - Shared JSON test fixtures for cross-language test parity
- Version sync for test_app dependency manifests
[1.0.0-rc.2] - 2026-03-16¶
Fixed¶
build.rsno longer panics on crates.io installs withoutsources/language_definitions.json- PEP 440 version sync for Python
sync_versions.pygemspec single-quote regex
Added¶
- Test apps structure and shared fixtures
- Task definitions for test-apps:smoke and test-apps:comprehensive
[1.0.0-rc.1] - 2026-03-09¶
Complete rewrite from Python to Rust with polyglot language bindings.
Added¶
- Rust core library (
ts-pack-core) withLanguageRegistryfor thread-safe grammar access - C-FFI layer (
ts-pack-ffi) with cbindgen-generated headers and panic shields - Python bindings via PyO3/maturin (
ts-pack-python) with PyCapsule support - Node.js bindings via NAPI-RS (
ts-pack-node) with TypeScript definitions - Go bindings via cgo (
ts-pack-go) with platform-specific build directives - Java bindings via Panama FFM (
ts-pack-java) targeting JDK 22+ - Elixir bindings via Rustler NIF (
ts-pack-elixir) with ExUnit tests - CLI tool (
ts-pack-cli) for grammar management (init, list, add, remove, info, build) - E2E test generator with 7 language backends (Rust, Python, TypeScript, Go, Java, Elixir, C)
- 21 test fixtures across 4 categories (smoke, parsing, error handling, registry)
- Dynamic linking mode (
TSLP_LINK_MODE=dynamic) for per-parser shared libraries - Feature-gated language selection via
TSLP_LANGUAGESenv var or Cargo features - Language group features:
web,systems,scripting,data,jvm,functional - Tree-sitter 0.26 support with
Language::into_raw()/Language::from_raw() - Domain-split CI workflows (ci-validate, ci-rust, ci-python, ci-node, ci-go, ci-java, ci-elixir, ci-c)
- Multi-registry publish workflow (crates.io, PyPI, npm, GitHub Releases for Go FFI)
- 168 language grammars supported
Changed¶
- Architecture: Python-only package → Rust core with polyglot bindings
- Parser compilation: pure Python with tree-sitter CLI → Rust
build.rswithcccrate - Language registry: dictionary-based → typed
LanguageRegistrywith thread-safeLazyLockaccess - Error handling: Python exceptions → Rust
Result<T, E>with cross-language error conversion - Repository moved from
Goldziher/tree-sitter-language-packtokreuzberg-dev/tree-sitter-language-pack - Node.js package renamed to
@kreuzberg/tree-sitter-language-pack - Java groupId changed from
io.github.tree-sittertodev.kreuzberg - Go module path updated to
github.com/kreuzberg-dev/tree-sitter-language-pack/go - README branding updated with kreuzberg.dev banner and Discord community link
Removed¶
- Python-only implementation (setup.py, MANIFEST.in, tree_sitter_language_pack/)
- Direct tree-sitter Python dependency for parsing (now via native bindings)
- Cython-based build pipeline
Pre-1.0 Releases (Python-only)¶
[0.12.0]¶
Added¶
- tree-sitter-cobol grammar support
Fixed¶
- MSVC build compatibility for cobol grammar
- Alpine Linux (musl) wheel platform tag support (PEP 656)
- Wheel file discovery in CI test action
[0.11.0]¶
Added¶
- tree-sitter-bsl (1C:Enterprise) grammar support
Changed¶
- Updated all dependencies and relocked
[0.10.0]¶
Added¶
- tree-sitter 0.25 support
Changed¶
- Dropped Python 3.9 support
- Adopted prek pre-commit workflow
- CI: cancel superseded workflow runs
[0.9.1]¶
Added¶
- WASM (wast & wat) grammar support
- F# and F# signature grammar support
[0.9.0]¶
Added¶
- tree-sitter-nim grammar support
- tree-sitter-ini grammar support
- Swift grammar update (trailing comma support)
[0.8.0]¶
Fixed¶
- sdist build issues resolved
[0.7.4]¶
Added¶
- GraphQL grammar support
- Kotlin grammar support (SAM conversions)
- Netlinx grammar support
[0.7.3]¶
Changed¶
- Swift grammar update (macros + copyable)
[0.7.2]¶
Added¶
- Apex grammar support
Fixed¶
- MSYS2 GCC build issues
[0.7.1]¶
Added¶
- OCaml and OCaml Interface grammar support
- Markdown inline parser support
Fixed¶
- Pinned elm and rust grammar versions
- Pinned tree-sitter-tcl to known-good revision
[0.6.1]¶
Added¶
- ARM64 Linux CI builds
Fixed¶
- Build issue resolved
[0.6.0]¶
Fixed¶
- Windows DLL loading compatibility issues
[0.5.0]¶
Fixed¶
- Windows compatibility and encoding issues for non-English locales
[0.4.0]¶
Added¶
- PyCapsule-based language loading
- Protocol Buffers (proto) grammar support
- SPARQL grammar support
[0.3.0]¶
Changed¶
- Updated generation setup and build matrix
- Removed magik and swift grammars (temporarily)
[0.2.0]¶
Changed¶
- Version bump with dependency updates
[0.1.2]¶
Fixed¶
- Added MANIFEST.in for sdist packaging
[0.1.1]¶
Fixed¶
- Missing parsers in package data
[0.1.0]¶
Added¶
- Initial release with 100+ tree-sitter language grammars
- Python package with pre-compiled parsers
- Multi-platform wheel builds (Linux, macOS, Windows)