Skip to content

v2.1.4-alpha

Pre-release
Pre-release

Choose a tag to compare

@bpacholek bpacholek released this 13 Jun 07:50
· 62 commits to main since this release

Third quality review — fixes + mutation testing (no public API change)

Performance

  • Reflow no longer re-allocates the wrapped line's break list every scroll tick. It was a fresh []int32 local while the highlight passes already pool the identical scratch — ~895 KB of garbage per reflow on a 2 MB single wrapped line, on the Fyne UI goroutine. Now reuses a persistent r.reflowBreaks. Guarded by TestReflowReusesWrapBreaks.

Tests & tooling

  • make mutation — mutation testing via gremlins over the pure logic packages, gating on test efficacy. Empirically, internal/geometry, internal/model, and internal/parse all score 100% test efficacy (0 surviving mutants) — the tests detect behavioral changes, not just cover lines.
  • Gutter digit-width boundary-crossing guard (closes a teeth gap in the #77 memo).
  • Folds in the Windows CRLF golden CI fix (CI is green on Linux/macOS/Windows).

Review verdict

No high-severity findings; the hardening-era tests are genuinely teeth-bearing. The "used-only-by-tests" helpers (maxTextWidth/LineString/ProjectionBytes) are intentional memory-invariant instrumentation. Follow-up filed: #83 (drop the dead tabWidth param).

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

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