PackageTrack
Sign in Get early access

github.com/odvcencio/gotreesitter

v0.51.0 #2371 most downloaded on Go modules odvcencio/gotreesitter

What this package is like to depend on

Last release today

24 Aug 2026

Ships on a steady schedule

a new release about every 9 days

Nearly every release is documented

notes for 93 of 100 stable releases

Nothing withdrawn

no release was ever pulled

6 months old

606 releases · first in 2026

606 releases in the last 12 months

see the full history below

Release timeline

606 releases · Feb 2026 to Aug 2026
Release Pre-release

Releases

latest 60 of 606
  1. v0.51.1-0.20260824051428-83e0cfbc30ad 24 Aug 2026 pre-release

    Nothing published for this version

  2. v0.51.1-0.20260824043016-51d66e799661 24 Aug 2026 pre-release

    Nothing published for this version

  3. v0.51.1-0.20260824032150-74543caa8bb8 24 Aug 2026 pre-release

    Nothing published for this version

  4. v0.51.1-0.20260823211856-af9ded2b77b7 23 Aug 2026 pre-release

    Nothing published for this version

  5. v0.51.1-0.20260823205212-d134ed5f963c 23 Aug 2026 pre-release

    Nothing published for this version

  6. v0.51.1-0.20260823194336-cf58fba517ed 23 Aug 2026 pre-release

    Nothing published for this version

  7. v0.51.1-0.20260823183814-e19acacba352 23 Aug 2026 pre-release

    Nothing published for this version

  8. v0.51.1-0.20260823170951-e24ccf5a87bb 23 Aug 2026 pre-release

    Nothing published for this version

  9. v0.51.1-0.20260823161116-055051a24a11 23 Aug 2026 pre-release

    Nothing published for this version

  10. v0.51.1-0.20260823145757-5eaa38e536e5 23 Aug 2026 pre-release

    Nothing published for this version

  11. v0.51.1-0.20260823134914-a62b9db306bc 23 Aug 2026 pre-release

    Nothing published for this version

  12. v0.51.1-0.20260823124251-af8a9a5bdb5b 23 Aug 2026 pre-release

    Nothing published for this version

  13. v0.51.1-0.20260823112018-2c533f5c19f5 23 Aug 2026 pre-release

    Nothing published for this version

  14. v0.51.1-0.20260823101816-929609ccde78 23 Aug 2026 pre-release

    Nothing published for this version

  15. v0.51.1-0.20260823085000-7b6f40fe0892 23 Aug 2026 pre-release

    Nothing published for this version

  16. v0.51.1-0.20260823073032-54c7f521505e 23 Aug 2026 pre-release

    Nothing published for this version

  17. v0.51.1-0.20260823062812-5e307cb2509f 23 Aug 2026 pre-release

    Nothing published for this version

  18. v0.51.1-0.20260823050448-14f6692fac65 23 Aug 2026 pre-release

    Nothing published for this version

  19. v0.51.1-0.20260823005807-7498a678c520 23 Aug 2026 pre-release

    Nothing published for this version

  20. v0.51.1-0.20260823000946-613a0775a329 23 Aug 2026 pre-release

    Nothing published for this version

  21. v0.51.1-0.20260822225820-30f470f5c2bf 22 Aug 2026 pre-release

    Nothing published for this version

  22. v0.51.1-0.20260822220743-78e8e1396235 22 Aug 2026 pre-release

    Nothing published for this version

  23. v0.51.1-0.20260822195713-0c34a681db29 22 Aug 2026 pre-release

    Nothing published for this version

  24. v0.51.1-0.20260822174209-a01f8037319c 22 Aug 2026 pre-release

    Nothing published for this version

  25. v0.51.1-0.20260822165844-6c94426b69f5 22 Aug 2026 pre-release

    Nothing published for this version

  26. v0.51.1-0.20260822160803-d530d9694295 22 Aug 2026 pre-release

    Nothing published for this version

  27. v0.51.1-0.20260822152955-1098c5d881bf 22 Aug 2026 pre-release

    Nothing published for this version

  28. v0.51.1-0.20260822140615-3c4ea8790111 22 Aug 2026 pre-release

    Nothing published for this version

  29. v0.51.1-0.20260822125632-c1a07ed176b4 22 Aug 2026 pre-release

    Nothing published for this version

  30. v0.51.1-0.20260822104751-44ad279ecfc2 22 Aug 2026 pre-release

    Nothing published for this version

  31. v0.51.1-0.20260822081031-9ff47f2cb942 22 Aug 2026 pre-release

    Nothing published for this version

  32. v0.51.1-0.20260822045814-69d5ccaf1c2e 22 Aug 2026 pre-release

    Nothing published for this version

  33. v0.51.1-0.20260822020723-9ed8c9d09117 22 Aug 2026 pre-release

    Nothing published for this version

  34. v0.51.1-0.20260822005918-6cd2f66ade8a 22 Aug 2026 pre-release

    Nothing published for this version

  35. v0.51.1-0.20260821235247-0b9a90d8ad8e 21 Aug 2026 pre-release

    Nothing published for this version

  36. v0.51.1-0.20260821212513-bb1e43c9c921 21 Aug 2026 pre-release

    Nothing published for this version

  37. v0.51.1-0.20260821200110-de4fe455d3a9 21 Aug 2026 pre-release

    Nothing published for this version

  38. v0.51.1-0.20260821103651-34bdc837d558 21 Aug 2026 pre-release

    Nothing published for this version

  39. v0.51.1-0.20260821070615-bb09ff6978cb 21 Aug 2026 pre-release

    Nothing published for this version

  40. v0.51.1-0.20260821042937-f60aee0ae93c 21 Aug 2026 pre-release

    Nothing published for this version

  41. v0.51.1-0.20260821015636-9531af46a1aa 21 Aug 2026 pre-release

    Nothing published for this version

  42. v0.51.1-0.20260820232946-c625069e49ca 20 Aug 2026 pre-release

    Nothing published for this version

  43. v0.51.1-0.20260820173226-3a7e24286560 20 Aug 2026 pre-release

    Nothing published for this version

  44. v0.51.1-0.20260817211736-efe5b71c6fb8 17 Aug 2026 pre-release

    Nothing published for this version

  45. v0.51.1-0.20260816201804-19460490008a 16 Aug 2026 pre-release

    Nothing published for this version

  46. v0.51.1-0.20260816180824-6d4a50d28e8b 16 Aug 2026 pre-release

    Nothing published for this version

  47. v0.51.1-0.20260816173710-3484b1b35983 16 Aug 2026 pre-release

    Nothing published for this version

  48. v0.51.0 16 Aug 2026
    Release notes

    Added

    • Add grammars.ParseFilePooledStrict. It rejects a partial tree and returns
      the parser stop error.

    • Add Tagger.TagStrict. It returns tags only after a complete parse and
      preserves parser errors.

    Changed

    • Bound pending fork-stack retention. Keep a bounded reserve during parsing,
      and drop oversized storage at parse and parser-pool boundaries.

    • Separate C-runtime recovery walk, convergence, and fallback state. Reset
      these states across parse, retry, snippet, pool, and iteration boundaries.

    • Provision dense reach marks when generalized LR (GLR) slabs grow. Owned nodes
      no longer use the pointer-map fallback.

    Fixed

    • Clear stale C-runtime recovery state after a clean condense. A clean suffix
      no longer inherits an active recovery-cost gate.

    Tests

    • Align the Application Binary Interface version 14 (ABI-14) lexer-mode probe
      with generated end-of-file behavior. The probe now checks the emitted layout
      without injecting an end-of-file state.

    Continuous integration (CI)

    • The project merged pull request (PR) #732.
      Its CI-only change separates query-fleet smoke tests from regular shards and
      is not part of this release.

    Open work

    The following items remain open:

    Open source →
    Release notes

    Added

    • Add grammars.ParseFilePooledStrict. It rejects a partial tree and returns the parser stop error.

    • Add Tagger.TagStrict. It returns tags only after a complete parse and preserves parser errors.

    Changed

    • Bound pending fork-stack retention. Keep a bounded reserve during parsing, and drop oversized storage at parse and parser-pool boundaries.

    • Separate C-runtime recovery walk, convergence, and fallback state. Reset these states across parse, retry, snippet, pool, and iteration boundaries.

    • Provision dense reach marks when generalized LR (GLR) slabs grow. Owned nodes no longer use the pointer-map fallback.

    Fixed

    • Clear stale C-runtime recovery state after a clean condense. A clean suffix no longer inherits an active recovery-cost gate.

    Tests

    • Align the Application Binary Interface version 14 (ABI-14) lexer-mode probe with generated end-of-file behavior. The probe now checks the emitted layout without injecting an end-of-file state.

    Continuous integration (CI)

    • The project merged pull request (PR) #732. Its CI-only change separates query-fleet smoke tests from regular shards and is not part of this release.

    Open work

    The following items remain open:

    Open source →
    Release notes

    Added

    • Add grammars.ParseFilePooledStrict. It rejects a partial tree and returns the parser stop error.

    • Add Tagger.TagStrict. It returns tags only after a complete parse and preserves parser errors.

    Changed

    • Bound pending fork-stack retention. Keep a bounded reserve during parsing, and drop oversized storage at parse and parser-pool boundaries.

    • Separate C-runtime recovery walk, convergence, and fallback state. Reset these states across parse, retry, snippet, pool, and iteration boundaries.

    • Provision dense reach marks when generalized LR (GLR) slabs grow. Owned nodes no longer use the pointer-map fallback.

    Fixed

    • Clear stale C-runtime recovery state after a clean condense. A clean suffix no longer inherits an active recovery-cost gate.

    Tests

    • Align the Application Binary Interface version 14 (ABI-14) lexer-mode probe with generated end-of-file behavior. The probe now checks the emitted layout without injecting an end-of-file state.

    Continuous integration (CI)

    • The project merged pull request (PR) #732. Its CI-only change separates query-fleet smoke tests from regular shards and is not part of this release.

    Open work

    The following items remain open:

    Open source →
  49. v0.50.2-0.20260816132621-8c17e0e942e0 16 Aug 2026 pre-release

    Nothing published for this version

  50. v0.50.2-0.20260816120041-298fa0500017 16 Aug 2026 pre-release

    Nothing published for this version

  51. v0.50.2-0.20260816072012-556ba43b2ada 16 Aug 2026 pre-release

    Nothing published for this version

  52. v0.50.2-0.20260816051803-ed5dd9cdd5e4 16 Aug 2026 pre-release

    Nothing published for this version

  53. v0.50.2-0.20260816033615-899783970a93 16 Aug 2026 pre-release

    Nothing published for this version

  54. v0.50.2-0.20260815010114-bd1fa3cc8ded 15 Aug 2026 pre-release

    Nothing published for this version

  55. v0.50.1 14 Aug 2026
    Release notes

    Fixed

    • Restore single-language grammar_subset builds. Shared lexer helpers and
      Python-derived scanner state now compile with each grammar that uses them.
      Derivative-only builds do not register Python scanner metadata.

    • Add a blocking subset build sweep. Continuous integration now builds all
      206 registered grammars with their individual grammar_subset tags.

    Open source →
    Release notes

    Fixed

    • Restore single-language grammar_subset builds. Shared lexer helpers and Python-derived scanner state now compile with each grammar that uses them. Derivative-only builds do not register Python scanner metadata.

    • Add a blocking subset build sweep. Continuous integration now builds all 206 registered grammars with their individual grammar_subset tags.

    Open source →
  56. v0.50.1-0.20260814213657-4e586e92e376 14 Aug 2026 pre-release

    Nothing published for this version

  57. v0.50.0 14 Aug 2026
    Release notes

    Added

    • TestOutlineOracleDifferential (cgo_harness/outline_differential_test.go)
      runs each language's resolved tags query through both the pure-Go query
      engine and the official C tree-sitter runtime, then diffs the two capture
      streams. It hard-asserts capture parity for the core nine outline
      languages (go, python, javascript, typescript, tsx, rust,
      java, c, cpp) and logs a census for every other language with a
      resolvable tags query.

    • TestOutlineCoverageWitnesses (grammars/outline_coverage_witness_test.go)
      pins 30 languages against the real Outliner pipeline. Each case names an
      exact symbol its resolved tags query must produce, so a pattern that
      compiles but never fires now fails the test instead of hiding behind a
      non-empty query string.

    • File-outline tags-query coverage rose from a 30-language floor to 84 of
      206 registered languages: 83 with a real-corpus fixture and 1 with a
      smoke-sample fixture (grammars/testdata/outline_census/baseline.json).
      TestInferredTagsQueryCoverage (grammars/registry_test.go) now enforces
      84 as the floor. See docs/outline.md for the full coverage tiers and the
      file outline API.

    • OutlineSymbol.Owner now resolves on every OutlineTree call. A rule
      attached through WithOutlineOwnerRules matches a symbol by NodeType,
      reads its OwnerField, and descends through the rule's Unwrap node
      types until it reaches exactly one NameTypes terminal. Any other
      outcome — an absent field, or a walk that reaches zero or more than one
      terminal — leaves Owner empty and counts one
      OutlineReport.OwnerRuleMisses; a NodeType no attached rule names
      touches neither field.

    • grammars.OutlineOwnerRules(entry) gates the shipped owner-rule table by
      symbol and field presence in each language's own compiled grammar, the
      same way ResolveTagsQuery's inference table is gated, and composes
      directly with gotreesitter.WithOutlineOwnerRules. The shipped Go rule
      resolves all four receiver shapes — value, pointer, generic value, and
      generic pointer — to the receiver's base type name. See docs/outline.md
      for the full resolution contract and a worked example.

    Removed

    • Native root-extra folding and reduction now own Elixir comment placement
      and map entry grouping. Parsing drops the hidden
      _newline_before_comment scanner token without a post-parse pass.
      Reduction groups map keyword pairs and wraps update and arrow entries in
      the map grammar's binary_operator node. This removes the Elixir
      result-compatibility dispatcher arm.

    Removed

    • Native scheduling and reduction now own the Enforce const int formal
      parameter shape. Parsing classifies const as a
      formal_parameter_modifier and int as type_int directly. It keeps
      the parameter's own name and default value instead of losing them to a
      misread type/name pair. This removes the Enforce result-compatibility
      dispatcher arm.

    Fixed

    • TypeScript and TSX no longer split a signed right-shift operator into two
      generic closers. splitCompactCloseAngleToken narrows a >> token to a
      single > so nested closers such as Array<Array<string>> parse. Java
      gated that split behind an "unclosed < precedes this run" check, because
      >> is also a shift operator there; TypeScript and TSX carried no such
      gate. Any >> whose next byte was one of ( ) [ ] { } , . ; : ? was torn
      apart, so x = a >> (b) failed to parse while x = a >> b succeeded. The
      angle-depth gate now covers TypeScript and TSX, and runs only when a >>
      symbol is actually active in the state: with no shift alternative to
      protect, narrowing to > remains the only way to make progress. Found
      while migrating the GoSX browser runtime to TypeScript, on
      indices[i] = (src[i >> 3] >> (i & 7)) & 1;.
      on, off, yes, no) at lex time. The grammar's word token pattern can
      absorb leading whitespace before a keyword, and the keyword re-lex
      previously required its match to start at byte zero, so it missed that
      case and left the value as a generic string token. DFA keyword promotion
      now skips the leading run first, the same way tree-sitter's own generated
      keyword lexer does. This retires the Hyprlang dispatcher arm and fixes a
      related bug: a trailing space after the keyword no longer produces an
      incorrect boolean node.

    • Seven of the file outline's core nine languages carried tags-query rows
      that reference a child node type the grammar never produces at that
      position: javascript, typescript, tsx, java, c, cpp, and
      rust. The C query compiler rejects such a row as an "Impossible
      pattern" and drops the entire multi-pattern query with it. The pure-Go
      query engine has no matching check, so it compiled the same row and
      silently matched nothing. The dead rows are now removed or corrected.
      TestOutlineOracleDifferential's core-nine tier reports capture-stream
      parity for all nine languages, and the fix changed no Go outline output —
      confirmed by unchanged golden fixtures.

    Removed

    • The Bash assignment-wrapper and if-condition-field repairs. Native
      reduction already builds the C-shaped variable_assignments wrapper for
      two or more consecutive assignments. It already sets the condition
      field on an if-statement's condition tokens too. The Bash compatibility
      pass no longer splices that wrapper's children into the enclosing node or
      rebuilds the field afterward.
      tree-sitter-bash's own corpus (test/corpus/literals.txt) pins the same
      wrapper for two top-level assignments.
      Production, compact, forest, and incremental routes match the raw parse
      exactly, and the isolated C-oracle comparison matches for every case.
      One unrelated Bash subpass remains live.
    • The FIDL result-compatibility dispatcher arm is retired. Native recovery
      already builds the C-equivalent error shape for a versioned-layout-modifier
      declaration whose modifier keyword carries a stray (name=value) argument
      list. Production, compact, forest, and incremental routes produce the same
      tree, and an isolated C-oracle parity check confirms the shape.
    • The HLSL subscript-assignment declarator member of the result-compatibility
      dispatcher arm is retired. structured_binding_declarator carries a
      negative dynamic precedence in the grammar. Native parsing already elects
      the C-equivalent subscript-assignment expression for Name[index] = value;
      without a post-parse pass. Production, compact, forest, and incremental
      routes stay exact. The negative-number cast and unorm-buffer members of the
      HLSL arm remain live.
    Open source →
    Release notes

    Added

    • TestOutlineOracleDifferential (cgo_harness/outline_differential_test.go) runs each language's resolved tags query through both the pure-Go query engine and the official C tree-sitter runtime, then diffs the two capture streams. It hard-asserts capture parity for the core nine outline languages (go, python, javascript, typescript, tsx, rust, java, c, cpp) and logs a census for every other language with a resolvable tags query.

    • TestOutlineCoverageWitnesses (grammars/outline_coverage_witness_test.go) pins 30 languages against the real Outliner pipeline. Each case names an exact symbol its resolved tags query must produce, so a pattern that compiles but never fires now fails the test instead of hiding behind a non-empty query string.

    • File-outline tags-query coverage rose from a 30-language floor to 84 of 206 registered languages: 83 with a real-corpus fixture and 1 with a smoke-sample fixture (grammars/testdata/outline_census/baseline.json). TestInferredTagsQueryCoverage (grammars/registry_test.go) now enforces 84 as the floor. See docs/outline.md for the full coverage tiers and the file outline API.

    • OutlineSymbol.Owner now resolves on every OutlineTree call. A rule attached through WithOutlineOwnerRules matches a symbol by NodeType, reads its OwnerField, and descends through the rule's Unwrap node types until it reaches exactly one NameTypes terminal. Any other outcome — an absent field, or a walk that reaches zero or more than one terminal — leaves Owner empty and counts one OutlineReport.OwnerRuleMisses; a NodeType no attached rule names touches neither field.

    • grammars.OutlineOwnerRules(entry) gates the shipped owner-rule table by symbol and field presence in each language's own compiled grammar, the same way ResolveTagsQuery's inference table is gated, and composes directly with gotreesitter.WithOutlineOwnerRules. The shipped Go rule resolves all four receiver shapes — value, pointer, generic value, and generic pointer — to the receiver's base type name. See docs/outline.md for the full resolution contract and a worked example.

    Removed

    • Native root-extra folding and reduction now own Elixir comment placement and map entry grouping. Parsing drops the hidden _newline_before_comment scanner token without a post-parse pass. Reduction groups map keyword pairs and wraps update and arrow entries in the map grammar's binary_operator node. This removes the Elixir result-compatibility dispatcher arm.

    Removed

    • Native scheduling and reduction now own the Enforce const int formal parameter shape. Parsing classifies const as a formal_parameter_modifier and int as type_int directly. It keeps the parameter's own name and default value instead of losing them to a misread type/name pair. This removes the Enforce result-compatibility dispatcher arm.

    Fixed

    • TypeScript and TSX no longer split a signed right-shift operator into two generic closers. splitCompactCloseAngleToken narrows a >> token to a single > so nested closers such as Array<Array<string>> parse. Java gated that split behind an "unclosed < precedes this run" check, because >> is also a shift operator there; TypeScript and TSX carried no such gate. Any >> whose next byte was one of ( ) [ ] { } , . ; : ? was torn apart, so x = a >> (b) failed to parse while x = a >> b succeeded. The angle-depth gate now covers TypeScript and TSX, and runs only when a >> symbol is actually active in the state: with no shift alternative to protect, narrowing to > remains the only way to make progress. Found while migrating the GoSX browser runtime to TypeScript, on indices[i] = (src[i >> 3] >> (i & 7)) & 1;. on, off, yes, no) at lex time. The grammar's word token pattern can absorb leading whitespace before a keyword, and the keyword re-lex previously required its match to start at byte zero, so it missed that case and left the value as a generic string token. DFA keyword promotion now skips the leading run first, the same way tree-sitter's own generated keyword lexer does. This retires the Hyprlang dispatcher arm and fixes a related bug: a trailing space after the keyword no longer produces an incorrect boolean node.

    • Seven of the file outline's core nine languages carried tags-query rows that reference a child node type the grammar never produces at that position: javascript, typescript, tsx, java, c, cpp, and rust. The C query compiler rejects such a row as an "Impossible pattern" and drops the entire multi-pattern query with it. The pure-Go query engine has no matching check, so it compiled the same row and silently matched nothing. The dead rows are now removed or corrected. TestOutlineOracleDifferential's core-nine tier reports capture-stream parity for all nine languages, and the fix changed no Go outline output — confirmed by unchanged golden fixtures.

    Removed

    • The Bash assignment-wrapper and if-condition-field repairs. Native reduction already builds the C-shaped variable_assignments wrapper for two or more consecutive assignments. It already sets the condition field on an if-statement's condition tokens too. The Bash compatibility pass no longer splices that wrapper's children into the enclosing node or rebuilds the field afterward. tree-sitter-bash's own corpus (test/corpus/literals.txt) pins the same wrapper for two top-level assignments. Production, compact, forest, and incremental routes match the raw parse exactly, and the isolated C-oracle comparison matches for every case. One unrelated Bash subpass remains live.
    • The FIDL result-compatibility dispatcher arm is retired. Native recovery already builds the C-equivalent error shape for a versioned-layout-modifier declaration whose modifier keyword carries a stray (name=value) argument list. Production, compact, forest, and incremental routes produce the same tree, and an isolated C-oracle parity check confirms the shape.
    • The HLSL subscript-assignment declarator member of the result-compatibility dispatcher arm is retired. structured_binding_declarator carries a negative dynamic precedence in the grammar. Native parsing already elects the C-equivalent subscript-assignment expression for Name[index] = value; without a post-parse pass. Production, compact, forest, and incremental routes stay exact. The negative-number cast and unorm-buffer members of the HLSL arm remain live.
    Open source →
  58. v0.49.1-0.20260814193439-9fd59953f9f3 14 Aug 2026 pre-release

    Nothing published for this version

  59. v0.49.1-0.20260814164056-e79ea7a15ea3 14 Aug 2026 pre-release

    Nothing published for this version

  60. v0.49.1-0.20260814124753-25a50aaafd86 14 Aug 2026 pre-release

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive