Skip to content

v2.1.3-alpha

Pre-release
Pre-release

Choose a tag to compare

@bpacholek bpacholek released this 12 Jun 21:46
· 66 commits to main since this release

Production hardening (P2) — no public API change

Robustness (#76)

  • keyExtend guards a nil renderer before reading r.firstRow (a pre-render call no longer panics).
  • scanString clamps on a trailing backslash so an unterminated "\ can't push a node span past EOF.
  • recomputeMetrics only locks the cell memo when it measured a non-degenerate cell — a transiently-unavailable font can't permanently render a 1px grid.
  • Documented that live parse validity isn't refreshed above the MaxEditBytes cap (the indicator freezes rather than going stale-wrong).

Performance (#77)

  • serializePretty presizes the spans slice; remapCaretOffset binary-searches (locked against the old linear logic over 3000 random cases).
  • applyGutter memoizes the digit count on the line count.
  • Regression benches added for big-document plain/worst-case-regex search and wrap reprojection.

Tests & deps

  • (#78) Three self-erasing t.Skips → t.Fatal; a deterministic guard that valid structured input never silently regresses to the raw fallback (surfaced #82: JSONC starting with a comment auto-detects as raw).
  • (#79) go.mod lowered from the patch-pinned go 1.26.4 to go 1.25 (the real floor, set by x/net/x/image) + toolchain go1.26.4; govulncheck unpinned to @latest; dependencies documented; a written deprecation policy added.

Follow-up filed: #82 (JSONC leading-comment auto-detect).

Full diff: v2.1.2-alpha...v2.1.3-alpha

Full Changelog: v2.1.2-alpha...v2.1.3-alpha