v0.43.0
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 totype_identifier— a targeted partial fix (qualified/pointer/parenthesized type args still differ from C; tracked).
Added
- Incremental-invariant correctness gate (default-on): asserts
ParseIncremental== freshParseacross 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