Skip to content

v0.43.0

Choose a tag to compare

@odvcencio odvcencio released this 20 Jul 04:54
092a8a4

Incremental correctness hardening + a new default-on correctness gate, plus targeted parity fixes.

Fixed

  • Incremental length-changing edits now reuse the unchanged suffix instead of re-lexing the whole tail (issue #380, step 1); a clamped-node reuse guard closes a silent-corruption path on length-changing replace/insert edits. Interior/non-leaf reuse across such edits stays limited (tracked follow-up).
  • Python incremental parsing fails closed to a fresh parse on DEDENT/length-changing edits, eliminating a silent-corruption class (structurally-wrong tree with HasError()==false).
  • F# external-scanner checkpoints restored to the locked grammar's byte layout.
  • Go new(T)/make(T) sole bare-identifier argument retags to type_identifier — a targeted partial fix (qualified/pointer/parenthesized type args still differ from C; tracked).

Added

  • Incremental-invariant correctness gate (default-on): asserts ParseIncremental == fresh Parse across a curated corpus wherever the fresh parse is clean, turning silent incremental corruption into CI failures.
  • Gated one-pass selected-store builder (build-tagged, off by default; does not touch the production parse path).
  • Work-count board lexer/action hooks (diagnostic).

Full changelog: https://github.com/odvcencio/gotreesitter/blob/main/CHANGELOG.md