Libghostty-vt erreicht 1.0 mit stabiler C-ABI, in der CI per libabigail geprüft
Mitchell Hashimoto hat am 6. November libghostty-vt 1.0 angekündigt. Libghostty ist eine portable C-Bibliothek für Terminalemulation, herausgelöst aus dem Kern des Terminals Ghostty; mit 1.0 gelten Bibliothek und C-ABI als stabil.
Vor gut einem Jahr, schreibt er, war das Zig-Modul gerade gemergt, eine C-API gab es nicht, und Ghostty war der einzige Nutzer. Der Beitrag nennt nun Anwender: Ghostel bringt die Bibliothek in Emacs, ghostty-web ist ein WebAssembly-Build mit Xterm.js-kompatibler API, OrbStack bettet sie kommerziell ein, und eine Reihe neuer Terminals und agentischer Coding-Werkzeuge baut darauf. Community-Bindings gibt es für Rust, Go, JavaScript, Swift, Python, .NET, Elixir, Dart und Java, die Liste awesome-libghostty führt mehr als hundert Projekte. Laut Hashimoto nutzen heute weit mehr Menschen ein Terminal auf Basis von libghostty als die Anwendung Ghostty selbst.
Der technische Kern von 1.0 ist die ABI-Richtlinie. Jedes Objekt ist ein opakes Handle; Werte werden über wenige Getter und Setter mit Enum-Schlüsseln gelesen und geschrieben, neue Werte brauchen also keine neuen Symbole. Programme mit neueren Headern, die gegen eine ältere Bibliothek gelinkt sind, erhalten GHOSTTY_UNSUPPORTED statt eines Absturzes. Nicht opake Structs tragen ihre Größe oder reservierte Bytes, Enums sind auf int festgelegt. Die CI prüft jede Änderung mit libabigail gegen eine eingecheckte Basis unter Linux und gegen Typmanifeste unter macOS und WebAssembly, auf ELF-Plattformen ist jedes exportierte Symbol versioniert. Dazu kommen Tarballs, Lizenzmanifeste und Build-Werkzeuge für Distributionen, mit einem eigenen Release-Zyklus getrennt von Ghostty.

Was das bedeutet
Kompatibilität versprechen viele Bibliotheken, prüfen tun sie wenige bei jedem Commit. Eine ABI-Basis in der CI macht das Versprechen von 1.0 zu einem Test, der fehlschlagen kann, und genau das brauchen Paketierer, bevor sie eine Shared Library ausliefern.