Repository navigation
fix(deps): update module github.com/odvcencio/gotreesitter to v0.57.0 - #365
Open
renovate[bot] wants to merge 1 commit into
Open
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
|
Important Review skippedBot user detected. To trigger a single review, invoke the
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #365 +/- ##
==========================================
- Coverage 88.17% 88.17% -0.01%
==========================================
Files 362 362
Lines 34743 34743
==========================================
- Hits 30636 30633 -3
- Misses 4102 4105 +3
Partials 5 5
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
renovate
Bot
force-pushed
the
renovate/github.com-odvcencio-gotreesitter-0.x
branch
from
September 25, 2026 04:54
4ce4bba to
30f5bcb
Compare
renovate
Bot
force-pushed
the
renovate/github.com-odvcencio-gotreesitter-0.x
branch
from
September 26, 2026 20:44
30f5bcb to
890b844
Compare
renovate
Bot
force-pushed
the
renovate/github.com-odvcencio-gotreesitter-0.x
branch
from
October 14, 2026 04:31
890b844 to
f48d111
Compare
renovate
Bot
force-pushed
the
renovate/github.com-odvcencio-gotreesitter-0.x
branch
from
November 8, 2026 04:45
f48d111 to
62a28ad
Compare
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



This PR contains the following updates:
v0.53.0→v0.57.0Release Notes
odvcencio/gotreesitter (github.com/odvcencio/gotreesitter)
v0.57.0: gotreesitter v0.57.0Compare Source
Highlights
a compact 1 MiB Go parse allocated 17.52% fewer bytes (#1486, #1504).
Upgrade notes
grammars.JSONTokenSource,NewJSONTokenSourceandNewJSONTokenSourceOrEOFare removed, and the registry no longer routes
jsonthrough a token source.To upgrade, call
parser.Parse(src)where you calledParseWithTokenSource(src, grammars.NewJSONTokenSourceOrEOF(src, lang)), andparser.ParseIncremental(src, old)for incremental parses. DropWithTokenSourceFactoryfrom highlighters and taggers for JSON. Code thatcalls
entry.TokenSourceFactory(...)without a nil check must check for niland fall back to
Parse. Trees differ from the old ones on 6 JSON files in thetest corpus, and in each of them only the DFA tree matched C.
Highlightand its incremental and UTF-16 variants no longer return a rangefor a
spell,nospell,conceal,none, underscore-prefixed orlocals-directive capture. Code that reads a
spell,noneor underscorecapture from
Highlightno longer receives it.Injected child layers keep their own pattern order on identical spans, as a
standalone file does. Before, a layer lost its pattern indexes and the order of
the matches decided. In a Markdown fence of starlark,
{changes frompunctuation.brackettopunctuation.special.On a span that an injected language and its host both capture, the injected
capture now wins. Before, the host's capture won unless it came from the first
pattern of the host's query.
Queries that set
(#set! priority N)now resolve overlaps by priority. Before,the directive had no effect and the narrower capture won. Sixteen shipped
queries set a priority. In the diff query, the
---,+++,-and+markers now take
diff.minusordiff.plusinstead ofpunctuation.special.In hare,
:outerinbreak :outer;is onelabelrange where it was apunctuation.delimiterrange and avariablerange, and in tablegen,!addisone
functionrange where it was apunctuation.specialrange and afunctionrange.ExternalVMscanner APIs are removed. Implement a Gogotreesitter.ExternalScannerinstead (#1536).The
grammarsfacade drops per-language scanner aliases and unused helpers,including
DecodeAndCertifyLanguageBlob. Importgrammars/runtimefor theequivalents exported there (#1536).
Replace
corpuscheck.RunLanguageLimitedwithRunLanguageWithOptionsandRunOptions{MaxCases: n}(#1536).The
tsquerycommand now requires-lang. Supply the registered grammarname so the query is compiled and validated before code generation
(#1537).
Use
gotreesitter testin place of the standalonecorpuscheckcommand.Corpus mismatches return exit status 1; an empty selection or a requested
language that cannot run returns status 2 (#1524).
Callers can no longer use a nil root to recognize an accepted parse with no
syntax nodes. Check the input itself for an empty byte slice and inspect
HasError()for parse errors (#1543).Curated and inherited highlight queries change some capture names. Check
themes that map built-in captures to colors (#1539).
Added
Add
cmd/scannercert, a report-only tool that replays external scanner callsfrom saved state and reports any difference from the live result. It grants no
incremental-reuse approval and changes no scanner capability flag
(#1518).
Add the pure-Go
gotreesittercommand for parsing, querying, highlighting,tags, outlines, code patterns and corpus tests. It accepts files or standard
input and supports JSON output (#1524).
Add
LangEntry.Parse,NewParserandNewHighlighterhelpers that use theentry's registered token source when one is available (#1537).
Changed
Make the highlighter return only captures that name a color. It no longer
returns private captures (a leading underscore),
@spell,@nospell,@conceal, or the directives of a locals query (@local.scope,@local.reference,@local.definition,@local.definition-valueand@local.definition.*); predicates and directives still read them.@noneclears the colors of its own priority beneath it, including the color of an
enclosing capture of that priority, and is not returned. It does not clear a
capture of a lower priority, so the reset that the Markdown query puts on a
fence leaves the injected language's own colors, such as zig's strings at
priority 95. This follows the convention nvim-treesitter documents for
@none; tree-sitter-highlight and Neovim's own highlighter keep the enclosingcolor under an inner
@nonenode.(#set! priority N)sets the priority of apattern's captures, with a default of 100. Injected child queries follow the
same rules, and at equal priority an injected capture wins over the host's
capture on the same span. A VHDL comment keeps its
@commentcolor, and aprivate capture such as
@_keyno longer hides the color of its node(#454).
Remove the BitBake, Corn, DTD, Templ, and Wolfram result-compatibility
arms. None of them rewrote a node on any registered witness, and the trees
on the production, compact, forest, and incremental routes are the same with
the arms removed.
ParseRuntime().NormalizationPassesand theGTS_DISPATCHER_CENSUSoutput no longer list adispatch.<language>passfor these five languages. The five languages are now eligible for
compact-tail elision. The Perl arm stays: it still regroups
push @a => ...arguments the way locked C does.
Reduce YAML parse time and allocation. The YAML scanner caches the current
rune within each request (#1486), prepares its scanner bindings once
(#1491) and keeps indentation type and width in one frame stack (#1514).
The cached-rune change cut legacy YAML parse time by 5.39% (p=.004, 20 pairs);
the prepared bindings cut ordinary YAML parse time by 2.60% (p=.028).
Reduce memory on the compact parse route. Allocated bytes for a fresh 1 MiB
Go parse fall 17.52% (453,602,488 to 374,143,160 B/op, p<.001) because public
subtrees now live in 64K-record blocks (#1504). Graph nodes shrink from 24
to 16 bytes (#1500) and no longer copy the whole arena when it grows
(#1502). Dependency and lexer-history allocations also shrink (#1480);
allocation for a 20 KB query compile falls from 140,563 to 10,512 B. Timing
differences were inconclusive. The compact route is not the default for every
language.
Parse JSON with the grammar's own DFA lexer, and delete its hand-written token
source (
grammars/runtime/json_lexer.go). Both paths were compared with thelocked C parser on 303 JSON files: the DFA path matched C on 303 files, and the
token source on 297. No file matched C only through the token source.
LangEntry.TokenSourceFactoryis now nil for JSON, soParseFile,ParseFilePooledand the other registry helpers useParser.Parse. The Javatoken source stays: it is the only implementation of the end-of-file comment
append proof, and without it typing at the end of a trailing comment in a
Java file runs a hidden fresh parse on every keystroke. C, C++ and authzed
also keep their token sources: C matched C on 4 corpus files where the DFA path
did not, and the C++ token source matches C on a malformed class body that the
DFA path parses without an error.
Compose highlight queries from first-line
; inherits:directives and addcurated query coverage, including Apex, Vue, V, Typst and HLSL. Imported
queries carry source and license attribution (#1539).
Scan YAML comment content in batches (#1567).
Reduce DFA, publication and read-history overhead in certified Go incremental
parsing. Unsupported or unproven reuse retains fresh verification
(#1570).
Publish compact parse results through owned node views and preserve recovery
and scanner-history checks (#1569).
Page compact compatibility snapshots and cap the scrubbed workspace retained
between calls. On the qualified roughly 2 KiB TypeScript fixture, allocated
bytes fell from 167.425 to 3.139 KiB per parse; the separate 1 MiB probe's peak
RSS fell from 294,732 to 165,056 KiB (#1577).
Fixed
Go: make compact recovery return
(source_file (ERROR))for,, as the Cparser does. Reuse completed Scala snippet roots, which removes about 17 MB of
allocation for malformed 24-30 byte Scala inputs (#1452).
TypeScript and TSX: parse an async generic arrow such as
async <T>(v: T): Promise<T> => vcorrectly instead of as abinary_expression(#1483).TypeScript and TSX: parse generic tagged template calls such as
tag<string[]>`text`instead of reading them as comparisons or failing(#1515). This regenerates
typescript.binandtsx.bin.Generated grammars: keep the span of a consumed hidden newline when a
newline-or-NUL terminator follows (#1513). None of the 206 shipped grammars
takes the changed branch.
32-bit builds: fix a panic when a parser state with the high bit set became a
negative
intin a bounds check (#1485).Compact projection: publish hidden-supertype ancestry and synthetic-root
metadata exactly. The Go supertype query failed before this fix (#1484).
Make: accept builtin names such as
$(file)and${dir}as variablereferences, including nested expressions, while preserving function calls
(#1561).
Kotlin: preserve queued reduction alternatives for the certified shipped
grammar, including the generic-call regression cases (#1568).
Accepted parses with no syntax nodes now return a zero-width
ERRORrootinstead of a nil root, matching locked C on the affected cases (#1543).
Generated C exports for pre-ABI-15 grammars compile against the pinned runtime
headers while retaining the older lexer-mode table layout (#1579).
PowerShell: update the pinned grammar and scanner so native arguments such
as comma lists, bare
--and-, attached option values and trailing&parse cleanly. The replay preserves the original contributor's work
(#1576, #1574).
Keep trailing comments outside recovered
ERRORnodes when an ancestorrecovery path contains a discontinuity (#1580).
Evidence
including the qualified Go incremental run,
#1569 and #1579. The release receipt binds the final commit and its full manual CI run.
v0.56.0: gotreesitter v0.56.0Compare Source
Added
Add opt-in Python, JavaScript, TypeScript and TSX declaration, signature and
call-argument facts through the existing grammar-owned options. Share symbol
sets, binding selectors and parameter extraction while preserving Go and
legacy outputs. Include Python unpacking and keyword arguments, JavaScript
named function bindings, TypeScript optional parameters and typed members,
and standalone constructor arguments in JavaScript, TypeScript and TSX.
Type shapes remain types-only; defaults and member modifiers are omitted
(#1435).
Complete opt-in Go declaration facts with embedded fields, interface embeddings
and dotted anonymous-struct containers. Add
FactSignaturesandFactCallArgumentsthrough parallel grammar-owned rule options, preservingexact parameter type text and argument order/ranges. Function literals and
function types have no signature facts; other languages remain out of scope
(#1435).
Add opt-in Go declaration facts through
NewFactProgramWithOptions,FactDeclarations, andWithDeclarationRules(grammars.DeclarationRules(entry)).FactSet.Declarationscontains separate package variable and constant names,named struct fields, explicit interface methods, aliases, type shapes, and
member containers.
NewFactProgram,DefinitionSpan,Definitions, andFactAllretain their existing contracts(#1435).
Changed
verification when scanner history, recovery, or ownership remains unproven
(#1402).
Python, Rust, C, and C++
(#1413).
FIRRTL; keep fresh parsing for unsupported edits
(#1412).
(#1410).
parse. Keep fresh verification for unproven histories and recovery results
(#1421).
completion for owned YAML document streams
(#1434).
owned-lexer metadata, and validate each checkpoint with one retained-record
lookup. Owned YAML parses allocate less and run faster
(#1446,
#1447,
#1448).
Fixed
after it, instead of reparsing the call as a binary expression
(#1443).
input
Foo[int](Foo[int](a))matches locked C again(#1434).
republished, and invalidate stale reused-lineage proofs
(#1447).
independently of diagnostic counters, so pruned parses never publish an
incremental-reuse certificate. Pruned large recovery edits now receive fresh
verification, and the GSS eight-link cap regression is fixed. Six large-edit
token-work cells carry exact exemptions that expire with certificate v2
(#1440).
interface methods in inferred Go tags and outlines
(#1438).
normalization (#1400).
ERRORroots and children inNode.SExpreven when recovery leavestheir named flag unset (#1400).
reductions without a false iteration-limit stop
(#1416).
(#1420).
TypeScript, Bash, C++, C#, Swift, Dart, and SQL
(#1414).
(#1408).
recovery results across edit sessions
(#1409).
the concrete lexer before trusting EOF reuse proofs
(#1426).
comments or single-quoted scalars
(#1424).
HasError()when hidden missing tokens are removed from thepublic tree, including malformed COBOL program names
(#1419).
Maintenance
(#1422,
#1424).
JavaScript/TypeScript edit sessions
(#1425).
Publication exception
On 2026-10-04, the owner authorized the v0.56.0-only tag-creation exception.
The exception permits publication without a workflow-only tag-creation actor rule.
All other gates remain mandatory under
the release process.
This standard minor release still requires full CI and performance evidence for
the exact candidate, a signed receipt, and protected release environment approval.
v0.55.1: gotreesitter v0.55.1Compare Source
Fixed
Keep eight stacks for possible unpacking and preserve explicit stack overrides
(#1290).
The report's inline generator builds 371,146 work nodes instead of 623,912.
Production fresh parsing fell from 267.331 to 161.811 ms; the tree retains 59,105 nodes.
The seven list-splat fixtures still match locked C. Django retains six differences across 2,932 files.
(#1291).
C now returns clean, complete trees for 4,091 functions and up to 65,536 string calls in one function.
Both lexers pass fresh, incremental, and locked C comparisons at the tested counts.
At 8,192 calls, TokenSource parsing fell from 2,445.8 to 115.7 ms.
The deterministic finite automaton (DFA) lexer fell from 2,425.1 to 123.7 ms.
(#1292).
Scala work nodes fell from 168,685 to 149,592 on both routes; the tree retains 57,281 nodes.
Production fresh parsing fell from 73.565 to 70.638 ms.
Work remains 4.5% above the old grammar's 143,197 nodes.
(#1292).
A Dart proxy fixture now retries fresh for expensive edits and retains profitable suffix reuse.
Production insertion fell from 240.990 to 123.209 ms; deletion fell from 718.243 to 123.759 ms.
Documentation
(#1329).
This patch adds no public API or admission-default change.
Measurement scope
The linked pull requests contain separate correctness and performance evidence.
Each completed the randomized Go benchmark trio with 20 shuffle seeds and 750 ms per case.
The runs used one process per seed and
GOMAXPROCS=1.No primary timing change was significant; primary allocations stayed at eight, five, and zero per operation.
These Linux measurements do not establish Windows performance.
Python uses the reporter's inline generator. Dart uses a 137 KiB proxy with 45.4% baseline reuse.
The reporter measured 41.8% Dart reuse; the exact fixture remains unverified.
Scala compact timing varied, with some medians increasing despite fewer work nodes.
The standard Scala grammar importer still rejects
_end_marker_named_tail; focused locked C checks pass.C corpus results remain 23/25 clean files and 20/25 deep matches.
Publication exception
On 2026-09-26, the owner authorized the v0.55.1-only tag-creation exception.
The exception permits publication without a workflow-only tag-creation actor rule.
All other gates remain mandatory under the release process.
This urgent patch addresses the Python regression and false C errors reported in #454.
Waiting prolongs Python keystroke delays and false errors in valid C documents.
Known gaps
Transient-error incremental trees,
ERRORroots with falseHasError(), and diff and LESS edit mismatches remain unresolved.@spellcaptures, blank HTTP comments, and compact sibling traversal remain unresolved.v0.55.0: gotreesitter v0.55.0Compare Source
Added
WithHighlighterAdmissionCandidateRouteto select the route for thedocument parser and injected parsers (#1281).
(#1285).
Locked C checks cover three fresh JSON trees and seven fresh CSV witnesses.
One incremental edit per language also matches with subtree reuse.
Changed
A parser override still has first priority. The allowlist now widens only
the implicit default. This behavior change requires a minor release.
Both
SetAdmissionCandidateRouteDefault(false)andGTS_ADMISSION_CANDIDATE=0keep production selected(#1281).
Fixed
Acceptwhen the compact reduction collector checks whether a source can shift(#1284).
Four strict Scala witnesses match locked C without compact fallback.
(#1286).
Preserve acceptance identity across grammar forks and closed error regions.
Decline unsupported paths without publishing a guessed tree. The PHP compact request still falls back before acceptance.
(#1287).
Apply the native symbol-zero trial only to the certified Scala grammar blob.
The Scala suffix suite records 50 exact matches and seven unchanged gaps across 57 cases.
The 104,681-byte Swift witness completes without truncation or a memory stop.
escape_sequencenodes when escaped backslashesprecede a newline. All 18 fixtures now match the locked C tree on both routes;
12 matched before the fix. Fixes #1275
(#1276).
list_splatbinding for attribute and subscript suffixesduring mixed flat and graph stack merges. Seven C fixtures match on both routes.
Exact C tree differences across 2,932 Django files fell from 101 to 6.
Fixes #1274
(#1277).
capture combinations. Preserve highlight capture order for identical spans
and prefer a highlight over
@spell. Report quantified roots as non-rootedin
IsPatternRooted(#1278).The production query on 755 Nushell comments fell from 16,577.358 to 0.360 ms.
Full highlighting of that 8 KB file took 20.132 ms after the change.
Bound graph reachability checks and reject impossible merges earlier
(#1279).
The reporter's C# fixture changed from quadratic growth to approximately linear growth.
Production parsing at 32 KB fell from 12,662 to 900 ms.
A separate 137 KB run measured a 3,008 ms median after the final merge precheck.
A reconstructed 3.5 KB fixture with an early error fell from 27,377.173 to
13.015 ms on production (#1282).
#comments under the certified grammar hash. Preserve deadlines andmemory budgets; disable incremental reuse for these direct trees
(#1282).
Production parsing at 32 KB fell from 2,160.112 to 1.657 ms.
The result now matches the complete C tree instead of returning one error node.
Maximum resident memory fell from 2,178,624 to 12,892 KiB.
The guard requires an early edit, a live graph fork, and at most four root children.
The guard applies across grammars (#1282).
Production insertion in the reconstructed 137 KB Dart fixture fell from
258.646 to 119.063 ms. Maximum resident memory fell from 220,912 to 123,796 KiB.
Measurement scope
These measurements come from the linked pull requests on Linux amd64.
They do not establish Windows performance. C# runs used the reporter's exact
fixture; Make, HTTP, and Dart used deterministic reconstructions.
Host load varied during the C# sweeps. The Nushell baseline used one repetition;
the result after the change used the median of three repetitions.
PR #1282 completed the standard Go trio with 20 shuffle seeds and 750 ms per benchmark.
It used one process per seed,
GOMAXPROCS=1, andGOWORK=off.The benchmark comparison found no significant time change:
The linked pull requests contain reproduction commands and separate correctness evidence.
PRs #1284–#1287 each record 20-seed randomized comparisons without significant changes in the three primary parse times.
PR #1285 shared its host with another workload; its timing evidence has that limit.
PR #1286 measured 111,092 KiB maximum resident memory for a 512 KiB Go parse.
PR #1287 measured warm Swift maximum resident memory of 257,440 KiB before and 257,332 KiB after the change.
Its primary allocation counts remained 8, 5, and 0.
Publication exception
On 2026-09-24, the owner approved a one-time tag-creation exception for v0.55.0.
The exception permits publication without a workflow-only tag-creation actor rule.
All other gates remain mandatory under the release process.
Known gaps
Transient-error incremental trees and the diff and LESS edit mismatches remain unresolved.
Its locked C gate still fails for malformed JavaScript, LESS, and TOML fixtures.
Graph stack merges remain under investigation; the sub-second target remains open.
74159ec1bas the fresh-parse regression trigger. Linux edits did not reproduce the
Windows slowdown. Preserve the new grammar's coverage while investigating its cost.
#comments retain the existing parser route and need a locked C regression.,anda,b,still differ from locked C on both parser routes.v0.54.0: gotreesitter v0.54.0Compare Source
Added
FactProgram.ExtractIntoto reuse caller-owned fact storage across trees.can graduate one language's compact route without flipping the global
default.
admission_route_performance_sanityCI gate, comparing the compactroute against the production route in-process, interleaved, on a fixed
9-language corpus.
Changed
tamarack harness measured it 1.1x to 2.2x slower than production on typical
files across Python, Rust, Markdown, Lua, CSS, Bash, and Go, and
TypeScript/YAML paid for both routes on every parse (compact declines, then
production reparses). Set
GTS_ADMISSION_CANDIDATE=1(ortrue/on/yes)to opt back in.
footprint on the first poll of a parse attempt, every 64th poll after it, or
whenever a cheap, O(1) capacity-based growth proxy shows growth covering
1/16th of the configured budget since the last exact check. This bounds
worst-case overshoot by construction, not just by dispatch count. Measured
peak-footprint overshoot: 1.25-2.16% over budget on an adversarial witness.
ExternalLexer's read-frontier tracking lazy: skip the frontierrecompute once the recorded values already provably cover the current
position. This benefits every route that uses an external scanner (YAML,
Python, Markdown, Bash, and others), not just the compact route.
Fixed
states. Regenerate CSV from its locked C source. Older blobs retain their
end-of-input fallback.
token.immediate()terminal with a string body thesame specificity bonus that an inline one gets. The lexer again accepts the
immediate terminal instead of a plain string literal with the same text.
Swift
var opt: Int?parsed with an ERROR after a table rebuild, because theanonymous
?won the same-span tie over_immediate_quest. Pattern-bodiednamed immediate terminals keep their authored precedence.
parser_result_yaml.gosilently clearingHasError()for a loneunmatched YAML flow-collection opener (for example a bare
[at end ofinput), which diverged from the C reference's
(ERROR ...)shape. Theproduction route now declines recovery for a bare
[/{and promotes anall-
ERRORreduction to theERRORroot itself. This bug predates thisrelease; the compact-route default flip is what exposed it.
instead of requiring every re-run to exceed budget, removing a transient
GC-timing false failure. The byte-budget assertion is skipped under the
race detector, where instrumentation noise swung a measured TotalAlloc delta
for the same input from about 66KB to about 29MB (more than 400x) and could
no longer separate noise from a real finding. The elapsed-time check and the
parser memory budget (
WithParserPoolMemoryBudgetBytes) remain the hardbounds under
-race.link 0, not on every successful merge. A fixed nesting depth that forks and
merges on every token used to rewalk the whole spine on the next head hash,
which turned the parse superlinear past depth 1600 (issue #454). An
extra-link-only merge now keeps its exact cached prefixes.
TokenSourcescanning from the still-valid queuedliteral-tail tokens, instead of resetting and relexing, when incremental
reuse resumes inside an already-queued string or character literal. The
reset path used to drop the queue and misread the remaining bytes, so the
incremental tree could differ from a fresh parse.
ParseIncremental, not only forParseIncrementalProfiled, so the reuse-budget stop arms on both entrypoints.
ParseIncrementalallocates no timing record, so a reuse-hostileedit taken through that entry point never armed the stop before this fix.
reuse proof. One unproven extra leaf used to disable incremental reuse for
the whole compact tree; an ordinary leaf still requires a proof.
ParseIncrementalreceives an oldtree with no recorded
Tree.Editcall and a new source of a differentlength. The incremental path used to trust stale byte positions against
the new source in that case, with no error or
ParseStoppedEarlysignal.Groovy grammar table derives a function-call juxtaposition only for a
block's first statement, so spliced incremental reuse could produce a tree
that a fresh parse of the same bytes never produces. Groovy's incremental
performance is unchanged; parity with a fresh parse is now guaranteed
instead of usually holding.
Known gaps
token after an earlier-line, non-crossing edit. This is fail-safe (extra
reparse work, not a wrong tree); COBOL does not support incremental reuse
today, so it has no current observable effect. Root cause is out of scope
for this release.
Breaking Changes
GTS_ADMISSION_CANDIDATEnow defaults off; its meaning is inverted from theprior release. Set it to
1,true,on, oryesto keep the compactroute on.
Performance evidence
Buildbox's tamarack harness measured the default route's in-process Go/C
ratio across three independent interleaved runs on a fixed 9-language
typical-file corpus, comparing this release's candidate code against the
prior default:
The lever-2 overshoot-bound refinement (dominant-capacity growth trigger) cost
nothing measurable; the ratio table is unchanged within run-to-run noise after
it landed. Source: #1264. A downstream #454 report attributes its resolved
regressions to the production route becoming the default.
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.