v2.1.4-alpha
Pre-release
Pre-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
[]int32local 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 persistentr.reflowBreaks. Guarded byTestReflowReusesWrapBreaks.
Tests & tooling
make mutation— mutation testing via gremlins over the pure logic packages, gating on test efficacy. Empirically,internal/geometry,internal/model, andinternal/parseall 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