feat: port GTK version fallbacks, helpgen, bench modes, CLI leftovers
- apprt-gtk: Ghostty's runtime+build-time version gating (at_least) with cargo features adw_1_3/adw_1_4/adw_1_5/gtk_4_16 (default on) and the fallbacks for older libraries: MessageDialog (adw < 1.5), clipboard dialog without SwitchRow, pre-Banner debug warning and child-exited widgets, the old about dialog, GTK 4.16 CSS error source bytes. The minimum stays GTK 4.14 / libadwaita 1.5 (Ghostty's floor). The root build links with -z lazy so version-gated symbols don't keep older libraries from loading. - ghostty-helpgen (port of helpgen.zig) generates CLI action help and keybinding action docs from doc comments at build time, replacing the checked-in help/*.txt; +help and +list-actions --docs stay byte-identical to Ghostty 1.3.1. - ghostty-bench: libc wcwidth mode and separate simd/table and uucode/table code paths like Zig. - ghostty-cli: Windows branches of edit-config, list-colors, list-keybinds and boo; ssh-cache DiskCache flock locking (no-op on Windows, as in Zig) with an exclusivity test. Test Plan: - cargo test --workspace - diff <(cargo run -q -- +list-actions --docs) \ <(ghostty +list-actions --docs)
This commit is contained in:
1 parent
020beb2d75
commit
4787565397
51 files changed
+2426
-1621
No files matched your search
@@ -62,6 +62,7 @@ ghostty-bench (benchmarks), ghostty-build-data (completions, man pages, syntax).
|
||||
| `ghostty-cli` | cli/* actions, build_config.zig (build info) | apprt, config, font, input, os, vt |
|
||||
| `ghostty-apprt-gtk` | apprt/gtk/* (+ ui/*.blp, css) | apprt, config, input, inspector, os, vt, datastruct |
|
||||
| `ghostty-bench` | benchmark/*, synthetic/* | terminal, unicode, vt |
|
||||
| `ghostty-helpgen` | helpgen.zig (build-time doc-comment extraction for CLI-action and keybind-action help; used from `build.rs` of ghostty-cli / ghostty-input) | – |
|
||||
| `ghostty-build-data` | main_build_data.zig, extra/*, build/mdgen | cli, config, input, os, termio |
|
||||
| root `ghostty-rs` (bin `ghostty`) | main_ghostty.zig | apprt, apprt-gtk, cli, config, core, os |
|
||||
|
||||
@@ -123,11 +124,19 @@ integration), `po/` (translations), crate-local `res/`/`shaders/`/`resources/`.
|
||||
|
||||
- 2026-10-12: Sentry crash handling and GTK<4.14/libadwaita<1.5 fallbacks,
|
||||
previously omitted, are ported in Phase 8 for full parity.
|
||||
- 2026-10-12 (GC): the GTK/libadwaita compatibility fallbacks are ported
|
||||
(MessageDialog, SwitchRow-less clipboard template, pre-Banner debug warning
|
||||
and child-exited, GtkAboutDialog, CSS error source bytes, all blueprint
|
||||
variants in the gresource). Minimum versions: **GTK 4.14, libadwaita 1.5** --
|
||||
Ghostty's own floor (its build compiles every blueprint, incl. the `1.5/`
|
||||
ones, and calls `gtk_css_provider_load_from_bytes` (4.12) and
|
||||
`gtk_im_context_activate_osk` (4.14) unconditionally); the `gnome_44`
|
||||
binding feature was dropped. Version gating mirrors Zig's `atLeast`
|
||||
(build level AND runtime): cargo features `adw_1_3|1_4|1_5` and `gtk_4_16`
|
||||
(all default) are the "header version"; building without them selects the
|
||||
Zig fallbacks at compile time. See `notes/compat-GC.md`.
|
||||
|
||||
## Intentional omissions (decided by the orchestrator)
|
||||
|
||||
- Sentry crash reporting (`crash/*`): optional and disabled by default in
|
||||
upstream Linux builds; `+crash-report` listing is ported.
|
||||
- GTK < 4.14 / libadwaita < 1.5 compatibility fallbacks (MessageDialog,
|
||||
pre-Banner widgets, old about dialog, 1.0–1.3 blueprint variants): the
|
||||
Rust port requires GTK ≥ 4.14 and libadwaita ≥ 1.5.
|
||||
Reference in new issue
Block a user