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
2.3 KiB
2.3 KiB
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 checkonly, 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.