Audit: macOS build follow-up and the Qt removal
SDL3 bundling, the setuid fix, the libc++ std::regex test issues and the C-k modifier fix; the std::regex fallback's libc++ bugs listed as a known limitation; B10 notes the Qt removal. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -325,7 +325,7 @@ Updated as fixes land on `claude/funny-fermat-gj2vm5`.
|
|||||||
| B7 | fixed: spans are widened to whole UTF-8 characters before the GUIs draw them (`SanitizeSpans`) |
|
| B7 | fixed: spans are widened to whole UTF-8 characters before the GUIs draw them (`SanitizeSpans`) |
|
||||||
| B8 | fixed: a text-event suppression lasts only until the next key press |
|
| B8 | fixed: a text-event suppression lasts only until the next key press |
|
||||||
| B9 | fixed: C0 controls and DEL drawn and measured as two-cell caret notation (`TermWidth.h`) |
|
| B9 | fixed: C0 controls and DEL drawn and measured as two-cell caret notation (`TermWidth.h`) |
|
||||||
| B10 | fixed: one tab width (`kte::kTabWidth`); Qt draws by the command layer's display columns |
|
| B10 | fixed: one tab width (`kte::kTabWidth`); the Qt frontend has since been removed |
|
||||||
| B13 | open (highlighter edge cases) |
|
| B13 | open (highlighter edge cases) |
|
||||||
| B11 | fixed: SmartNewline with a prompt open delegates to Newline |
|
| B11 | fixed: SmartNewline with a prompt open delegates to Newline |
|
||||||
| B12 | fixed: merged appends invalidate the line index |
|
| B12 | fixed: merged appends invalidate the line index |
|
||||||
@@ -575,6 +575,11 @@ before the fix (unless noted).
|
|||||||
**Known limitations (not fixed)**
|
**Known limitations (not fixed)**
|
||||||
- Without PCRE2 (std::regex builds), catastrophic regex backtracking
|
- Without PCRE2 (std::regex builds), catastrophic regex backtracking
|
||||||
can still take very long; std::regex has no limit.
|
can still take very long; std::regex has no limit.
|
||||||
|
- Without PCRE2 on libc++ (macOS), '^' also matches where a search
|
||||||
|
resumes inside a line (libc++ ignores match_prev_avail, and
|
||||||
|
match_not_bol with it, for '^'), and '\b' never matches at the end of
|
||||||
|
a line. Search_NextPrevVisitReferenceMatches fails in that
|
||||||
|
configuration; the default macOS build uses PCRE2.
|
||||||
- Typing in a multi-megabyte single line costs O(line length) per
|
- Typing in a multi-megabyte single line costs O(line length) per
|
||||||
keystroke (cursor column computed by scanning the line).
|
keystroke (cursor column computed by scanning the line).
|
||||||
- Highlighter edge cases B13 are unchanged. (B7, B8 and B10 were fixed
|
- Highlighter edge cases B13 are unchanged. (B7, B8 and B10 were fixed
|
||||||
@@ -647,3 +652,27 @@ UTF-8, syntax colouring and search highlights.
|
|||||||
- A long run of backspaces grows its undo record by prepending (quadratic
|
- A long run of backspaces grows its undo record by prepending (quadratic
|
||||||
only in the length of one typed run).
|
only in the length of one typed run).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Follow-up: macOS build and Qt removal (2026-09-24)
|
||||||
|
|
||||||
|
The gate had only run on Linux (as root). On macOS it failed three
|
||||||
|
tests and the app bundle could not start.
|
||||||
|
|
||||||
|
- kge stopped at launch with "Failed loading SDL3 library": Homebrew's
|
||||||
|
sdl2 is sdl2-compat, which dlopen()s SDL3, and the bundle fixup copies
|
||||||
|
only linked libraries. SDL3 is now bundled when sdl2-compat is.
|
||||||
|
- Saving lost setuid/setgid when not running as root: writing the data
|
||||||
|
clears them, and the mode was applied before the write. Ownership and
|
||||||
|
mode now go on after the data; in-place writes restore the mode.
|
||||||
|
- Two tests used libc++'s std::regex as the reference, which misses
|
||||||
|
'\b' at the end of the subject and ignores match_prev_avail for '^'.
|
||||||
|
- After C-k, pressing Shift (for C-k C, C-k ^ or a shifted symbol) or
|
||||||
|
pressing Ctrl again (C-k C-d) ended the prefix as an unknown command
|
||||||
|
in kge; modifier keys alone are now ignored there (checked with
|
||||||
|
synthetic SDL key events against kge's objects).
|
||||||
|
- The Qt frontend was removed: unused, out of make-app-release since
|
||||||
|
March, not built by the gate, and its bundle could not start (no
|
||||||
|
platform plugin). Every renderer and input change had to be made in
|
||||||
|
it separately.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user