docs: close out the rewrite in README and STATUS

README now describes the full scope (Linux app, C APIs, WASM, crash
reporting, macOS/Windows compile-checked), the verification tooling
(difftest, visual-parity, check-all) and links DEVIANT_FIXES.md and
KNOWN_DIFFERENCES.md. STATUS records completion and the stopping
criterion.
This commit is contained in:
ddidderr committed 2026-10-12 16:53:55 +02:00
1 parent 325288b7ee
commit b828cab2e5
2 files changed
+24 -6

No files matched your search

+21 -4
View File
@@ -10,8 +10,13 @@ actions; the same `ghostty +action` CLI; the same terminal emulation
prompts, synchronized output, tmux control mode); the same shell prompts, synchronized output, tmux control mode); the same shell
integration, themes and terminfo. integration, themes and terminfo.
Out of scope: macOS, Windows, WASM, the embedded `libghostty` C API, and All of Ghostty's Zig code is ported: the Linux GTK app (verified at runtime
Sentry crash reporting (disabled by default on Linux upstream). and pixel-identical to Ghostty 1.3.1), the `libghostty` and `libghostty-vt`
C APIs (same headers/ABI), WASM, crash reporting, and the macOS
(Metal/CoreText) and Windows (ConPTY) code paths. macOS and Windows are
compile-checked on Linux (`just check-macos`, `just check-windows`) but have
not been run natively. The Swift macOS app is not part of the port; it is a
client of the libghostty C API.
## Building and running ## Building and running
@@ -26,8 +31,9 @@ cargo run -- +list-themes # CLI actions work like Ghostty's
cargo run --profile production # optimized build (LTO, no debug assertions) cargo run --profile production # optimized build (LTO, no debug assertions)
``` ```
Development builds find `resources/` (shell integration, themes, terminfo) Dev-profile builds (`cargo run`) find `resources/` (shell integration,
automatically. Your existing Ghostty config themes, terminfo) automatically; other profiles use the installed
resources or `GHOSTTY_RESOURCES_DIR`. Your existing Ghostty config
(`~/.config/ghostty/config[.ghostty]`) is used as-is. (`~/.config/ghostty/config[.ghostty]`) is used as-is.
## Installing ## Installing
@@ -51,11 +57,22 @@ terminal and a real pty through a fake app runtime. `ghostty-bench` mirrors
Ghostty's benchmark tool; terminal stream throughput is on par with the Zig Ghostty's benchmark tool; terminal stream throughput is on par with the Zig
build (see `docs/rewrite/notes/perf-P1.md`). build (see `docs/rewrite/notes/perf-P1.md`).
## Verification
- `just difftest` — differential fuzzing of the terminal core against
Ghostty's own Zig code (sets up Zig 0.15.2 under `target/`).
- `just visual-parity` — pixel comparison against the installed Ghostty in a
headless nested weston.
- `just check-all` — native gate plus macOS/Windows/WASM checks.
## Documentation ## Documentation
- `docs/rewrite/ARCHITECTURE.md` – top-down decomposition, crate map, key - `docs/rewrite/ARCHITECTURE.md` – top-down decomposition, crate map, key
design decisions, intentional omissions design decisions, intentional omissions
- `docs/rewrite/STATUS.md` – work package history - `docs/rewrite/STATUS.md` – work package history
- `docs/rewrite/DEVIANT_FIXES.md` – every intentional deviation from Ghostty
(upstream bugs fixed instead of replicated; commits titled `fix-deviant(...)`)
- `docs/rewrite/KNOWN_DIFFERENCES.md` – remaining minor differences
- `docs/rewrite/notes/` – per-crate porting notes, deviations from Zig, - `docs/rewrite/notes/` – per-crate porting notes, deviations from Zig,
audits and verification reports audits and verification reports
+3 -2
View File
@@ -1,6 +1,6 @@
# Status # Status
**Overall:** Linux/GTK port complete and verified (3038 tests). **Phase 8 in progress:** libghostty C API, libghostty-vt C API, WASM, macOS Zig paths, Windows, crash handling, GTK compat fallbacks, remaining verification + perf. **Overall: complete (2026-10-12).** Ghostty 1.3.1's Zig code is fully ported to Rust: Linux/GTK app (built, tested, verified at runtime, pixel-identical to the original), libghostty + libghostty-vt C APIs (ABI-checked), WASM (node-tested), macOS and Windows code paths (compile-checked with clippy -D warnings; not runnable here). 3584 tests; terminal core differentially fuzzed against Ghostty's Zig code (390k+ cases, 0 divergences); config/CLI output byte-identical to the installed Ghostty. Review rounds stopped after RV18 per the stopping criterion in PLAN.md. Intentional deviations: DEVIANT_FIXES.md; remaining minor differences: KNOWN_DIFFERENCES.md.
Legend: ⬜ todo · 🟨 in progress · ✅ done (gate passed, committed) · ⚠️ done with gaps Legend: ⬜ todo · 🟨 in progress · ✅ done (gate passed, committed) · ⚠️ done with gaps
@@ -97,7 +97,7 @@ Legend: ⬜ todo · 🟨 in progress · ✅ done (gate passed, committed) · ⚠
| RV17 | confirmation Codex verification (clean HEAD) | codex astra | ✅ | RV16 resolved; 6 P3 (Apple freetype, test defect, 3 inspector, Metal alloc register) → Z20 | | RV17 | confirmation Codex verification (clean HEAD) | codex astra | ✅ | RV16 resolved; 6 P3 (Apple freetype, test defect, 3 inspector, Metal alloc register) → Z20 |
| Z20 | RV17 P3 items | sonnet | ✅ | 3582 tests; fix-deviant(renderer) | | Z20 | RV17 P3 items | sonnet | ✅ | 3582 tests; fix-deviant(renderer) |
| RV18 | FINAL audit round (stopping criterion) | codex astra | ✅ | RV17 6/6 resolved; fix: input-reachable assert (P2), FreeBSD build (P2), 2 resource-dir issues, 3 register rows; P3 nits → KNOWN_DIFFERENCES | | RV18 | FINAL audit round (stopping criterion) | codex astra | ✅ | RV17 6/6 resolved; fix: input-reachable assert (P2), FreeBSD build (P2), 2 resource-dir issues, 3 register rows; P3 nits → KNOWN_DIFFERENCES |
| Z21 | final fix pass + KNOWN_DIFFERENCES.md | sonnet | 🟨 | last code change before close-out | | Z21 | final fix pass + KNOWN_DIFFERENCES.md | sonnet | ✅ | 3584 tests; fix-deviant(terminal) |
| DEV | DEVIANT_FIXES.md register of all intentional deviations (with commits) | sonnet | ✅ | 30 fixed bugs, 11 kept quirks, 18 other | | DEV | DEVIANT_FIXES.md register of all intentional deviations (with commits) | sonnet | ✅ | 30 fixed bugs, 11 kept quirks, 18 other |
| RV10 | final Codex verification (RV9 rows + full sweep) | codex astra | ✅ | all prior rows resolved; 8 gaps (1 P1 C buffer len regression) → Z13 | | RV10 | final Codex verification (RV9 rows + full sweep) | codex astra | ✅ | all prior rows resolved; 8 gaps (1 P1 C buffer len regression) → Z13 |
| Z13 | RV10 gaps incl. P1 C action len/alloc mismatch | sonnet | ✅ | | | Z13 | RV10 gaps incl. P1 C action len/alloc mismatch | sonnet | ✅ | |
@@ -151,3 +151,4 @@ Legend: ⬜ todo · 🟨 in progress · ✅ done (gate passed, committed) · ⚠
- 2026-10-12: RV17 (Codex needed defensive framing after a false-positive cyber flag) → Z20. - 2026-10-12: RV17 (Codex needed defensive framing after a false-positive cyber flag) → Z20.
- 2026-10-12: Z20 committed (parity + fix-deviant(renderer)). RV18 running. - 2026-10-12: Z20 committed (parity + fix-deviant(renderer)). RV18 running.
- 2026-10-12: User: avoid endless review loop → stopping criterion: RV18 is the final audit; Z21 final fixes; P3 nits recorded, not chased. - 2026-10-12: User: avoid endless review loop → stopping criterion: RV18 is the final audit; Z21 final fixes; P3 nits recorded, not chased.
- 2026-10-12: Z21 committed; project closed out per stopping criterion.