Final fix pass per the stopping criterion (docs/rewrite/PLAN.md), resolving the remaining RV18 build/behaviour items (final-Z21.md): - termio errno access uses the per-target libc accessor (__error on FreeBSD/DragonFly/Apple, __errno on OpenBSD/NetBSD/Android) instead of __errno_location everywhere, unblocking non-Linux BSD builds. - FreeBSD resource discovery follows Zig (site-terminfo, local/share). - Zig's Debug-only resource precedence (and the dev workspace-resources fallback) key off a ghostty_debug_build cfg set from PROFILE=="debug" instead of debug_assertions, so release builds with assertions honor GHOSTTY_RESOURCES_DIR first like Zig ReleaseSafe. - KNOWN_DIFFERENCES.md lists the remaining P3 differences deliberately left unfixed (theme-preview editing details, a cleanup timeout edge case) and what cannot be verified on this machine. - DEVIANT_FIXES.md registers the PTY-hangup output drain (35), the canvas BGRA conversion (36) and the dev resources fallback. Test Plan: - cargo test --workspace --no-fail-fast (exit 0) - cargo check --target x86_64-unknown-freebsd -p ghostty-os
26 lines
2.3 KiB
Markdown
26 lines
2.3 KiB
Markdown
# Known differences (left by the stopping criterion)
|
|
|
|
These are known minor differences between the Rust port and Ghostty 1.3.1
|
|
found in the final audit (RV18, `notes/review-rv18-codex.md`). They were
|
|
recorded, not fixed, because the stopping criterion in `PLAN.md` does not
|
|
require chasing P3 items. All are severity P3. Each was verified from source
|
|
and, where noted, by PTY reproduction.
|
|
|
|
| # | Area | Rust | Zig | Observable effect | Sev |
|
|
|---|------|------|-----|-------------------|-----|
|
|
| 5 | Theme search: word navigation | `ghostty-cli/src/list_themes/preview.rs:113` has no word-navigation editing | upstream list-themes search has word navigation | Enter `blue red`, Alt+B, `X`: Zig gives `blue Xred`, Rust `blue redX` | P3 |
|
|
| 6 | Theme search: grapheme backspace | `preview.rs:100` deletes one Unicode scalar | deletes one grapheme | `e` + U+0301 then Backspace: Zig removes both, Rust leaves `e` | P3 |
|
|
| 7 | Theme search: non-ASCII case | `preview.rs:150` Unicode-lowercases theme names but ASCII-lowercases the query | ASCII-only on both sides | Query `Ä` does not match theme `Ä` in Rust, matches in Zig | P3 |
|
|
| 8 | Theme preview: initial colors | `preview.rs:385` consults `COLORFGBG` | starts light until terminal color reports arrive | Without terminal replies, changing `COLORFGBG` changes Rust's colors only | P3 |
|
|
| 9 | Theme preview: load errors | `preview.rs:440` ignores `load_file` errors and keeps filtering with the retained config | the error propagates and the preview exits | A config load error is silently swallowed in Rust | P3 |
|
|
| 10 | Subprocess cleanup cap | `ghostty-termio/src/exec.rs:1348` waits at most about 5 s for the child's new process group | keeps waiting | If the child is delayed before `setsid` for longer, Rust returns without sending SIGHUP | P3 |
|
|
|
|
## Not verifiable on this machine
|
|
|
|
- Native Apple execution: Metal, IOSurface, CoreText, Apple input APIs, Mach handling and Apple packaging (compile-checked only, `just check-macos`).
|
|
- Windows ConPTY and Win32 behavior (compile-checked only, `just check-windows`).
|
|
- Native FreeBSD execution (cross `cargo check` only, if the target could be added).
|
|
- Live portal / D-Bus integration.
|
|
- Real-browser rendering (wasm is checked with Node only).
|
|
- Native io_uring execution; Swift code was excluded.
|