web-tree-sitter
0.27.1 · 8 Oct 2026MIT4.8M / weekRepositoryHomepagenpmAtom feed
73 stable releases, newest first, by release line. Notes are quoted as the maintainers published them.
- 0.27.x · latest line
0.27.1
8 Oct 2026- breaking
cli: fix query test capture range matching across lines
decode UTF-16 surrogate pairs with input endianness
rust: address new nightly lints
What's Changed
decode UTF-16 surrogate pairs with input endianness
- breaking
cli: fix query test capture range matching across lines
rust: address new nightly lints
generate: resolve token names in debug output
generate: keep GCC jump tables enabled for large lexers
generate: exclude external word tokens from keyword extraction
lib: check shifted stack versions during error recovery
generate: detect indirect recursion in flattened productions
preserve column dependency when balancing repeat nodes
lib: acquire capture lists from a free stack instead of scanning
build: don't compile the Wasm stdlib into Emscripten builds
various query issues
rust: ban
std::fs::canonicalizebindings: load Node bindings under Bun again
release v0.27.1
0.27.0
30 Aug 2026- breaking
rust: return
u32fromNode::child_count - breaking
highlight: utf16 support
- breaking
rust: change
ts_set_allocatorto accept one optionalAllocatorobject rather than 4 separate optional function pointers.
What's Changed
start working on v0.27
docs: remove conflicting --release cargo flag in contributing.md
cli: trailing whitespace after multiline text nodes in CST
cli: correct discrepancy with cst for
--no-rangesFix Playground Query
cli: cst printing improvements
cli: set language in cwd for all usages of
highlightcommandcli: concurrent builds of the same grammar on different locations on disk
cli: canonicalize build
--outputpathcli: make
test --updaterewrite all corpus filescli: increase verbosity of
tree-sitter init -uupdatescli: restore test summary output for
tree-sitter testwasm: add some common used defs to wasm stdlib
wasm: update wasm-stdlib.h
Fix python free-threading compatibility
build: define
_BSD_SOURCEdocs: appease clippy regarding spacing in README
wasm: regenerate stdlib with wasm-opt
Clarify lifetime parameters; Rust 2018 idioms
free memory automatically
cli: warn user when
nmcan't be run to verify the symbols inside the parser being builtci: ensure
wasm-stdlib.his regenerated when wasm stdlib source files are modifiedwasm: give binaryen the wasi-sdk treatment
loader: search correct cache directory for wasi-sdk clang
Fix tree-sitter-ruby crate failing to build to Wasm
wasm: add
iswpunctto stdliblib: address strict aliasing violations with
Arraytypemisc Windows fixes
wasm: correct several bugs in
reallocci: add wasm-stdlib.h to cache key
generate: error if a supertype is defined as a terminal
Action overflow
wasm: don't wasm-opt twice
loader: account for nm/ld fix on newer powerpc linux toolchains
wasm: fix
reallocoptimizationcli: use --edits value for fuzz tests
cli: add
--verboseflag tobuildcommandrust: bump language crate version
rust: place
std::env::set_varinsideunsafeblockslib: correct ts_parser_parse docstring
test: acquire lock before downloading wasm tools
cli: allow for both debug logs and graphs
lib: clean up strict aliasing fixes in array.h
cli: require tree-sitter CLI in CMake template
- breaking
rust: return
u32fromNode::child_count allow
-in grammar namesquery: prevent cross-branch capture contamination in alternations with quantifiers
web: add default export to CJS bundle
rust: edition 2024, MSRV 1.90, lint cleanup, and dep updates
- breaking
highlight: utf16 support
use provided by RedoxOS byte orders implementations
generate:
unsafe extern->externin rendered C parserlib: cast NULL in ts_subtree_children macro
cli(init): fix
Package.swiftscanner detection when used as a dependencywasm: update wasi-sdk and binaryen
loader: invalidate cached wasm toolchains on version mismatch
cli:
init -ufixescli(init): extract per-binding generators and named update functions
skip missing Makefile in version command
wasm: pass target triple to clang
generate: optimize TokenSet
Propose fix some typos
loader: link with libc on OpenBSD to compile parser
rust: remove unused dependencies from loader and lib
query: don't add copies for quantifier steps outside alternations
revert allowing dashes in parser name
loader: unconditionally import
Mutexgenerate: allow disabling
qjs-rtfeature from CLIlib: document invariants that must be upheld for
TSInputEditparser: use
LookaheadIteratorin error recovery's all-symbol scanmisc. clippy and typo fixes
parser: sort error recovery reductions for deterministic ordering
cli: misc. improvements
Fix wasm loading of languages w/ multiple reserved word sets
loader: don't discard CC wrapper command specified in
CCvariablegenerate: avoid panicking when a supertype only has hidden external token children
cli: replace regex with manual parsing in test file parser PLUS loader lock file rewrite
generate: don't require
tree-sitter.jsonfor ABI 15ci: include wasi-sdk and binaryen version files in fixture cache hash
generate: More optimizations
update broken link to Parser.Language in template
update parser template to zig 0.16
loader: allow filenames with dots
generate: pass default optimization level in
generate_parser_for_grammarPrevent a buffer over-read when parsing 4-byte UTF-16 characters.
Add Solaris support to the portable endian header
query: overflow in capture pool ids + some perf
wasm: add
Language.loadSyncfor synchronous loadingcli: account for process versions > 5 in the parse command's pretty debug output.
Validate Wasm language memory reads
generate: improve error message for nonterminals used in immediate token rule
generate: rewrite
parse_grammarwith forward DFStest: write fixture headers once
wasm: load supertype tables for ABI 15 grammars
test: restore corpus test header blank line and divider tie behavior
cli: place generate artifacts next to grammar file rather than cwd
lib: update doc comment for
ts_parser_parselib: use correct TREE_SITTER_HIDE_SYMBOLS macro name in alloc.h
generate: derive
DeserializeonGenerateErrorand all subtypescli: improve soundness of cst range calculation
rewrite
ts_subtree__write_to_stringiterativelyloader: skip --no-undefined for sanitizer grammar builds
cli: infinite loop in highlight test
lib: Consider subtree lookahead bytes when determining whether the parser can reuse a node.
bindings: defer importlib.resources import in python template
add DESCRIPTION to grammar Makefile template
cli: display warning to user if parser test corpus dir isn't found
cli: warn user for various malformed tests
docs: explicitly warn against aliasing supertypes
rust: more clippy fixes in generate
cli: highlight test did not properly check for spans on later rows
rust: use more accurate types for various
IoErrorstructsfeat(cli)
tree-sitter test --show-diff-symbolslib: address strict aliasing violations in
TreeCursortypedsl: forbid invalid field names
Clarify behavior of advance(..., skip) in external scanner docs
Update README.md
Fix issues with queries matching a parent node with anchored children (siblings)
Add
ts_query_copyfor cloning queriesgenerate: collect warnings as structured data
- breaking
rust: change
ts_set_allocatorto accept one optionalAllocatorobject rather than 4 separate optional function pointers. xtask: eliminate silent errors in zig fetch
query: short-circuit longest-match dedup for disjoint states
query: various anchor fixes
improve error message and docs for supertypes made invalid by hidden children
Fix C++ compilation errors in array macros.
rust: address new clippy lints
- breaking
cli: don't load all languages via config when lib path is passed
generate: strip non-ASCII case folds
templates: update setup.py & Package.swift
ci: re-set executable permission on release artifacts before zipping
web: expand
Language::loadto acceptURLfilepath- breaking
highlight: include underlying
LanguageErrorin highlight and tag crates' error enums Fix broken url
generate: only strip case-folded ſ/K when the /i flag is set
cli:
init --updateshould not updatesetup.pyafter replacing itquery: keep the trailing anchor when a zero-matched quantifier is anchored on both sides
init: don't lowercase repository url
- breaking
cli: make parents flags a hard requirements via clap
highlight: use
std::sync::OnceCellfor various loader fields- breaking
rust: require parser loggers to be
Send + 'static - breaking
cli: rework HTML output modes in highlight
parser: restart recovery for invalid tokens in the error state
Fix associativity resolution with mixed shift precedences
- breaking
rust: tie query iterators to options lifetime
Expose
OptLevelongenerate_parser_for_grammarparser: fix parsing bug repeat operator
generate: embrace data oriented design
query: correctly identify
MISSINGnodes in queriestest: allow corpus tests to use cst outputs
query: correctly set a state's
skipped_quantifierflag when arust: trim unused imports
lib: add state to missing nodes
generate: fold case-insensitive patterns at the AST leaves
- breaking
generate: error on invalid byte class patterns
- breaking
lib: rework
LookaheadIterator parser: avoid wide error nodes on unparseable input
- breaking
swift: drop Package.swift
lib: fast paths for ascii
Allow using Tree-sitter rust lib in multi-threaded web apps compiled to wasm32-unknown-unknown
generate: refactor
node_typesJSON generation logicci: run all workspace tests
Upgrade to latest wasmtime, improve robustness and perf of wasm-based parsing
- breaking
generate: error when nonexistent file path is passed to
generate_parser_in_directory. - breaking
add an eof function
rust: remove
must_useattribute fromTree::changed_rangesgenerate: further node-types.json cleanup
generate: use a single buffer for the string pool's backing store
cli: align GrammarSchema type with grammar() return value
playground: set LANGUAGE_BASE_URL to "." to fix subfolder hosting
web: map Node-only specifiers to false via browser field
cli: correct zero-based positions for --edits
various memory safety issues
Remove Dockerfile mention from flake.nix
- 0.26.x
0.26.13
23 Aug 2026query: correctly identify
MISSINGnodes in queriesquery: correctly set a state's
skipped_quantifierflag when agenerate: fold case-insensitive patterns at the AST leaves
What's Changed
query: correctly identify
MISSINGnodes in queriesquery: correctly set a state's
skipped_quantifierflag when agenerate: fold case-insensitive patterns at the AST leaves
parser: avoid wide error nodes on unparseable input
ci: run all workspace tests
rust: remove
must_useattribute fromTree::changed_rangesrelease v0.26.13
0.26.12
8 Aug 2026generate: fold case-insensitive patterns ourselves
query: keep the trailing anchor when a zero-matched quantifier is anchored on both sides
templates: add C source files to Python sdist
What's Changed
generate: fold case-insensitive patterns ourselves
query: keep the trailing anchor when a zero-matched quantifier is anchored on both sides
templates: add C source files to Python sdist
init: don't lowercase repository url
highlight: use
std::sync::OnceCellfor various loader fieldsparser: restart recovery for invalid tokens in the error state
Fix associativity resolution with mixed shift precedences
parser: fix parsing bug repeat operator
release v0.26.12
0.26.11
12 Jul 2026Reading the note…
0.26.10
28 Jun 2026Reading the note…
0.26.9
19 May 2026Reading the note…
0.26.8
31 Mar 2026Reading the note…
0.26.7
14 Mar 2026Reading the note…
0.26.6
25 Feb 2026Reading the note…
0.26.5
1 Feb 2026Reading the note…
0.26.4
1 Feb 2026Reading the note…
0.26.3
13 Dec 2025Reading the note…
0.26.0
19 Sep 2025Reading the note…
- 0.25.x
0.25.10
22 Sep 2025Reading the note…
0.25.9
6 Sep 2025Reading the note…
0.25.8
13 Jul 2025Reading the note…
0.25.7
12 Jul 2025Reading the note…
0.25.6
4 Jun 2025Reading the note…
0.25.5
28 May 2025Reading the note…
0.25.4
11 May 2025Reading the note…
0.25.3
5 Mar 2025Reading the note…
0.25.2
18 Feb 2025Reading the note…
0.25.1
2 Feb 2025Reading the note…
0.25.0
1 Feb 2025Reading the note…
- 0.24.x
0.24.7
12 Jan 2025Reading the note…
0.24.6
27 Dec 2024Reading the note…
0.24.5
11 Dec 2024Reading the note…
0.24.4
10 Nov 2024Reading the note…
0.24.3
9 Oct 2024Reading the note…
0.24.2
6 Oct 2024Reading the note…
0.24.1
4 Oct 2024Reading the note…
0.24.0
4 Oct 2024Reading the note…
- 0.23.x
0.23.2
1 Oct 2024Reading the note…
0.23.1
30 Sep 2024Reading the note…
0.23.0
26 Aug 2024Reading the note…
- 0.22.x
0.22.6
5 May 2024Reading the note…
0.22.5
14 Apr 2024Reading the note…
0.22.4
13 Apr 2024Reading the note…
0.22.3
12 Apr 2024Reading the note…
0.22.2
17 Mar 2024Reading the note…
0.22.1
10 Mar 2024Reading the note…
0.22.0
10 Mar 2024Reading the note…
- 0.21.x
0.21.0
21 Feb 2024Reading the note…
- 0.20.x
0.20.8
10 Apr 2023Reading the note…
0.20.7
2 Sep 2022Reading the note…
0.20.5
2 Mar 2022Reading the note…
0.20.3
22 Jan 2022Reading the note…
0.20.2
31 Dec 2021Reading the note…
- 0.19.x
0.19.4
20 May 2021Reading the note…