- libghostty ist als eingebettete Terminal-Emulator-Bibliothek in Entwicklung, die in jeder Anwendung genutzt werden kann
- Die erste Komponente, libghostty-vt, ist eine abhängigkeitsfreie API, optimiert für Parsing und Zustandsverwaltung
- Sie entstand, um die Komplexität der Terminal-Emulation und das Problem wiederholter Implementierungen zu lösen, und zielt auf Cross-Platform-Unterstützung sowie hohe Portabilität ab
- Künftig ist eine Erweiterung um zusätzliche Bibliotheken für Tastatureingabeverarbeitung, GPU-Rendering und die Anbindung an verschiedene Frameworks geplant
- Aktuell ist die Zig-API testbar, eine C-API soll bald veröffentlicht werden, und Nutzerfeedback ist ausdrücklich erwünscht
Einführung und Hintergrund der Entwicklung von libghostty
- libghostty ist ein Bibliotheksprojekt, das dafür entwickelt wurde, moderne, schnelle und vollständige Terminal-Emulator-Funktionalität in jede Anwendung einzubetten
- Derzeit implementieren zahlreiche Programme ihre eigenen Terminal-Emulatoren oder entwickeln nur stark eingeschränkte Terminal-Funktionen separat
- Solche individuell entwickelten Terminal-Emulations-Implementierungen sind oft ad hoc und einmalige Codebasen, die Ausnahmefälle und Komplexität nicht ausreichend abdecken, wodurch häufig Probleme mit Unvollständigkeit, Bugs und Leistungseinbußen auftreten
- Für die meisten Entwickler gehört die Implementierung von Terminal-Emulation nicht zum Kerngeschäft, daher besteht Bedarf an einer gemeinsamen, gut wiederverwendbaren Lösung
- libghostty bietet eine Cross-Platform-C-API mit minimalen Abhängigkeiten, sodass verschiedene Anwendungen stabile und schnelle Terminal-Emulationsfunktionen nutzen können
libghostty-vt: der Start der ersten Bibliothek
libghostty-vt ist eine vollständig abhängkeitsfreie Bibliothek (nicht einmal libc ist erforderlich), die eine API für das Parsen von Terminal-Sequenzen und die Verwaltung des Terminalzustands wie Cursorposition, Stil und Zeilenumbrüche bereitstellt
- Dieses Parsing von Terminal-Sequenzen ist nicht nur eine Kernfunktion von Terminal-Emulatoren, sondern auch für Websites mit einfacher Stil-Ausgabe unverzichtbar, etwa GitHub Actions oder Vercel-Build-Logs
- Das Parsen von Terminal-Protokollen wirkt oberflächlich einfach, ist in der Umsetzung jedoch sehr schwierig; tatsächlich zeigen mehrere Implementierungen wie Jediterm Probleme bei der Verarbeitung bestimmter Sequenzen
- Manche Entwickler begnügen sich damit, nur ANSI-Sequenzen grob zu parsen, doch wegen komplexer Stilbehandlung, etwa verschiedener RGB-Notation, und der Anforderung vollständiger Kompatibilität ist ein präziser Parser unerlässlich
- libghostty-vt wurde aus dem bewährten Kern von Ghostty herausgelöst und bietet SIMD-optimiertes Parsing, hervorragende Unicode-Unterstützung, eine fortgeschrittene Speicherstruktur und breite Protokollkompatibilität (Kitty Graphics, Tmux Control Mode usw.)
- Es wird als Zero-Dependency-C-API in einer einzelnen Datei bereitgestellt und lässt sich dadurch leicht in alle gängigen Sprachen und Umgebungen einbetten; zunächst werden macOS und Linux (
x86_64, aarch64) unterstützt, später sollen Windows, Embedded-Systeme und WASM folgen
- Damit lässt sich ein noch breiteres Zielspektrum als mit der Ghostty-GUI abdecken
libghostty mit langfristiger Erweiterung
- Auf libghostty-vt sollen weitere Bibliotheken für Eingabeverarbeitung, etwa Tastatur-Encoding, GPU-Rendering (OpenGL, Metal), GTK-Widgets und Swift-Frameworks folgen
- Diese funktionalen Erweiterungen werden modular aufgebaut, um Abhängigkeiten, Codegröße und Wartungskomplexität zu minimieren
Entwicklungsstand von libghostty-vt
- Kürzlich wurde ein PR (Pull Request) gemergt, der
libghostty-vt als Zig-Modul extern verfügbar macht; Zig-Entwickler können es sofort nutzen
- Die C-API befindet sich derzeit in der Definitionsphase und soll bald zu Testzwecken bereitgestellt werden (die Kernlogik ist bereits seit Jahren in Ghostty als verifizierte Quelle im Einsatz)
- Auch die Ghostty-App für macOS verwendet intern eine C-API, doch die aktuellen internen Header eignen sich nicht für die externe Veröffentlichung und allgemeine Nutzung, daher wird eine völlig neue C-API entworfen
- libghostty wird versionsseitig getrennt von der Ghostty-Anwendung verwaltet, befindet sich aktuell in der Alpha-Phase und hofft auf eine schnelle Einführung sowie die Beteiligung von Entwicklern für Sprach-Bindings
- Das erste getaggte Release wird innerhalb der nächsten 6 Monate angestrebt
Bitte um Nutzerfeedback
- Da sich das Projekt derzeit in der API-Designphase befindet, sind Meinungen und Feedback realer Nutzer besonders wichtig
- Neben Ghostty entwickeln bereits verschiedene Community-Mitglieder Projekte auf Basis von libghostty, und man hofft auf noch mehr Beteiligung
- Wer Ideen oder Anforderungen zur Nutzung des Projekts hat, kann direkt über den Ghostty-Discord oder per E-Mail mit den Entwicklern kommunizieren
- libghostty liegt aktuell als Alpha-Version vor, die API ist noch nicht stabil, aber die Kernlogik garantiert eine in der Praxis bewährte hohe Stabilität
Ausblick und Einfluss
- Auf Grundlage der erreichten Stabilität der Ghostty-Anwendung kann nun das größere Ziel libghostty angegangen werden
- Wenn libghostty in vielen verschiedenen Anwendungen breit eingesetzt wird, könnte es über die einzelne Ghostty-App hinaus eine deutlich größere ökosystemische Reichweite und Wirkung entfalten
- Mit zunehmender Nutzung von libghostty kann auch Ghostty selbst an Funktionsumfang und Stabilität gewinnen
- Ghostty und libghostty werden sich komplementär weiterentwickeln und voraussichtlich sowohl Entwicklern als auch Nutzern Vorteile bringen
3 Kommentare
Ich nutze es seit 1.0, und abgesehen davon, dass es kein Scrollen und keine Suche gibt, bin ich zufrieden, haha. Ich habe vorher iTerm benutzt, aber jetzt bin ich dabei geblieben.
Ghostty 1.0 veröffentlicht – schneller, plattformübergreifender Terminal-Emulator
Hacker-News-Kommentare
Es ist wirklich legendär, wie diese Person nach Unternehmensgründung, Börsengang und einem Verkauf in Milliardenhöhe wieder in die Welt des Codens zurückkehrt.
Ich finde, Hashimoto ist nicht nur ein Genie, sondern vor allem wegen seiner außergewöhnlichen Fähigkeit zur Abstraktion bewundernswert: Systeme und Interfaces extrem zu modularisieren und Verflechtungen auf ein Minimum zu reduzieren. Er wirkt wie jemand, der Rich Hickeys Philosophie von "Simple Made Easy" eins zu eins in die Praxis umsetzt. Seine Software fühlt sich so an, als wäre sie strukturell dazu bestimmt, korrekt zu funktionieren. Und ich habe Ghostty zum ersten Mal ausprobiert: In iTerm2 mit Zsh/Powerlevel10k hatte ich immer eine leichte Rendering-Verzögerung, aber in Ghostty reagiert alles nahezu sofort.
Einerseits bin ich wirklich neidisch, andererseits klingt das wie ein Traumleben. Nach dem Erreichen von Wohlstand weiter kreativ zu arbeiten, nur um des Projekts selbst willen, in einer Situation, in der man bei der Qualität keine Kompromisse für Geld machen muss. Das erinnert mich an ein altes Zitat von Knuth.
Tatsächlich werden Projekte, die mit Liebe gemacht sind, zunehmend erfolgreicher. Es zeigt, dass man bessere Ergebnisse erzielen kann, wenn man nicht am Geld hängt. Gleichzeitig bringt es einen dazu, über unsere Gesellschaftsstruktur und die Wirtschaft insgesamt nachzudenken, denn um so ein Leben zu führen, braucht es bis zu einem gewissen Grad zunächst Kapital. Wie Knuth sagt: Wenn uns nur etwas mehr Zeit gegeben wäre, könnten wir alle bessere Ergebnisse schaffen; wenn immer alles unter Zeitdruck geschieht, wird vieles geopfert. Und wie in seinem anderen berühmten Zitat:
An diesem Punkt stellt sich die Frage, ob wir Menschen, die Probleme wirklich gut lösen und das Leben einfacher machen, tatsächlich angemessen belohnen, oder ob wir nur bedeutungslose Spielstände erhöhen. Wie schafft man mehr Legenden? Wie schafft man eine Gesellschaft, in der Menschen wie Mitchell ihrer Leidenschaft folgen können, ohne dem Vorstand erst den Wert von Qualität erklären zu müssen?
Ich habe ihn tatsächlich einmal getroffen, und er war wirklich ein warmer, sympathischer Mensch. Vor der Gründung von HashiCorp habe ich bei Kiip auf einer Konferenz mit ihm zu Mittag gegessen, und Mitchell war ein echter Hacker. Man merkte, dass er alles rund um Computing aufrichtig liebte. Besonders auf einer Konferenz zu verteilten Systemen war er unglaublich vertieft. Ich war überzeugt, dass er bei allem, was er anfasst, Erfolg haben würde. Seit ich Ghostty entdeckt und ausprobiert habe, nutze ich es zufrieden weiter.
Und dazu vertieft sich diese Person sogar noch in die Entwicklung von tty-Software, also in einen Bereich des Unix-Technologie-Stacks, der wirklich voller Nerd-Leidenschaft steckt.
Ich benutze Ghostty jeden Tag und habe erst jetzt erfahren, dass es von Mitchell Hashimoto stammt. Wirklich eine großartige Erfahrung.
Ghostty ist wirklich großartig. Ich freue mich darauf, dass sich ein echter Omni-Platform-Terminal-Emulator sogar bis auf Mobilgeräte ausdehnen könnte. Spannend ist auch, dass Ghostty in Zig geschrieben ist. Es ist das erste Zig-basierte Programm, das ich regulär benutze, und ich finde es interessant, dass die Repository-Struktur genau wie im Golang-Stil wirkt. https://github.com/ghostty-org/ghostty
Ich würde Ghostty wirklich gern lieben, aber es gibt ein paar Enttäuschungen.
font-thicken-strengthangepasst, aber es ist nicht zu 100 % identisch. Wegen der Eigenheiten des Metal-Renderings scheint das entweder unmöglich oder sehr schwierig zu sein. Wenn man den ganzen Tag nur auf Text schaut, ist das ein enorm wichtiger Punkt.Mitchells Leidenschaft für die Developer Experience und seine Liebe zum Detail sind wirklich beeindruckend. Ich erinnere mich noch lebhaft daran, wie begeistert ich 2011 in Santa Monica war, als ich Vagrant zum ersten Mal benutzt habe. Ich hatte nie vor, iTerm2 zu ersetzen, aber als ich Ghostty ausprobierte, war ich sofort begeistert.
Ich benutze Ghostty in letzter Zeit jeden Tag und bin erst vor Kurzem umgestiegen. Unter macOS habe ich Caps Lock auf cmd gemappt, deshalb funktioniert auch cmd+c gut. Die Standardeinstellungen sind klug gewählt, und abgesehen davon, dass Customizing nicht ganz einfach ist, bin ich mit allem zufrieden. Das Gruvbox-Light-Theme sieht ebenfalls wirklich gut aus. Schon allein dass es in Zig geschrieben ist, ist extrem cool; wenn man sich fragt, ob Zig für den praktischen Einsatz schon bereit ist, könnte Ghostty die Antwort darauf sein. Ich glaube nicht, dass ich wieder zu einem anderen Terminal zurückkehren werde. Es ist wirklich eine sehr zufriedenstellende Erfahrung. Zur Info: Kombiniert man Ghostty noch mit Aerospace, hat man auf dem Mac mit nur der Tastatur nahezu eine perfekte Umgebung.
Ich benutze Ghostty auf meinem Air Mac, einem Mac, den mir mein älterer Bruder zum Coden vererbt hat. Ich bin Ghostty wirklich dankbar, weil es so gut ist. Vielleicht ist es nur ein kleines Detail, aber dass es keine libc-Abhängigkeit hat, fühlt sich aus irgendeinem Grund ziemlich wertvoll an.
Das Häufigkeitsanalyse-Histogramm von visidata wurde nicht korrekt gerendert: Ein Teil erschien als saubere Kästchen, der Rest als Diamant mit Fragezeichen. Wegen dieses Problems kann ich iTerm noch nicht verlassen. Ich wusste nicht einmal, nach welchen Stichwörtern ich suchen sollte, daher war das schwer zu lösen.
Ich beobachte Ghostty weiterhin in der Hoffnung, dass dessen Text-Reflow – besonders inklusive Scrollback – auch in Neovim-basierten Terminals gelöst werden kann. Es ist großartig, dass Ghostty neue Innovation in die Terminal-Welt bringt. https://github.com/neovim/neovim/issues/33155
Ich möchte Ghostty wirklich benutzen, aber ohne cmd+f-Support habe ich es noch nicht ausprobiert. Trotzdem freue ich mich sehr auf die Weiterentwicklung dieses Projekts.
https://ghostty.org/docs/install/release-notes/1-2-0#roadmap
https://github.com/ghostty-org/ghostty/issues/189