Skip to content

v0.15.3

Choose a tag to compare

@odvcencio odvcencio released this 26 Apr 00:11

Parser stability and harness release.

Added

  • C/C++ lexer bridge now accepts #embed directive lines and
    __has_embed(...) conditional feature-test forms (including parameter
    variants) without parse errors.
  • Scoped Canopy harness runner under cgo_harness/docker/. The wrapper mounts
    the host Canopy binary into the Docker harness, applies memory/CPU/PID caps,
    uses a host-side timeout watchdog, and scopes analysis to one package with
    generated blobs/worktrees excluded by default.

Changed

  • ts2go batch execution is parallelized, reducing generated-grammar
    conversion wall time on multi-core machines.
  • External scanner adaptation now tolerates source/target external-symbol count
    mismatches. AdaptExternalScannerByExternalOrder can match shared symbols by
    name, leave unpaired target symbols disabled, and size the source-valid bitmap
    to the source scanner rather than assuming equal external lists.
  • Moved cgo harness sample/profile fixtures under testdata directories and
    updated the harness docs and scripts to use the new paths.
  • GLR stack culling now shares the keyed retention path across full and
    incremental parses while preserving the previous incremental tie-breaks.
  • Parser-result compatibility dispatch is now separated from core tree
    assembly, with mixed compatibility shims split into language-owned files and
    shared node helpers moved out of language-specific modules.
  • Parser tests are split by responsibility, public parser-result regression
    tests live under parser_result_test, and larger parser-result Python source
    fixtures now live under testdata/parser_result.

Removed

  • Dropped unused query matcher rollback compatibility wrappers now that
    predicate-aware matching is the only call path.
  • Removed unused internal parser, reduce, incremental, and parser-result helpers
    left behind by recent recovery and normalization rewrites.
  • Removed stale internal planning/spec docs from the OSS tree.
  • Removed unused private grammar and grammargen helper code found by the
    maintenance sweep.
  • Moved ad-hoc grammargen diagnostic tests behind an explicit build tag and
    removed the print-only disassembly lexer probe from the normal test suite.
  • Removed the duplicate legacy GLR stack-retention selector from parser
    internals.

Fixed

  • Re-landed the arena-retention and repo-cleanup fixes from the recovered
    main-line commits after the accidental reset.

Performance

  • JavaScript and TypeScript full parses cap merge survivors per key at 4. Large
    JS bundles can otherwise keep too many near-equivalent GLR branches alive and
    spend most parse time in merge-equivalence checks. Incremental parsing and TSX
    keep their existing budgets.
  • Markdown and markdown_inline full parses use tighter initial GLR stacks and a
    higher markdown-specific node budget. Dense inline-heavy markdown now prunes
    early without forcing repeated node-limit retries on normal documents.