Libghostty 1.0 apporte une ABI C stable aux applications de terminal
Libghostty-vt 1.0 est sortie le 6 novembre avec une ABI C stable. Un test de compilation de Tech AI Wire a trouvé 209 fonctions versionnées et un numéro de version qui a baissé.
Par Claire Whitmore
4 min de lecture
Traduit automatiquement de l'original anglais, vérifié et édité par Claire Whitmore. La version anglaise fait foi. Notre méthode

En chiffres
- fonctions exportées, toutes marquées GHOSTTY_VT_1.0, dans une compilation de Tech AI Wire
- 209
- pour compiler depuis les archives signées, dans un test en conteneur Linux de Tech AI Wire
- 117 s
- terminaux actifs sur une machine Linux à 4 cœurs et 8 Go dans le test d'un utilisateur, selon la documentation
- 10 000
Mitchell Hashimoto a publié libghostty-vt 1.0 le 6 novembre 2026. C'est la première version stable du moteur de terminal au cœur de son terminal Ghostty. La version 1.0 fige l'ABI C de la bibliothèque, l'interface binaire contre laquelle les programmes compilés se lient. Une application compilée sur la 1.0 aujourd'hui devrait continuer à fonctionner quand des versions 1.x ultérieures remplaceront la bibliothèque. C'est important, car les IDE de JetBrains font déjà tourner leur terminal intégré dessus. Neovim attend aussi cette version pour abandonner son ancien code de terminal.
Ce que promet libghostty-vt 1.0
Un moteur de terminal lit les octets qu'un programme affiche, y compris les codes d'échappement pour les couleurs et les déplacements du curseur. Il suit ensuite l'écran, le curseur et l'historique de défilement. Il ne dessine rien. Le dessin est laissé à l'application. C'est pourquoi un terminal KDE, un IDE et une page web peuvent tous le partager.
« La 1.0 signifie que libghostty-vt suit la gestion sémantique de version et offre des promesses strictes de compatibilité d'ABI », écrit Hashimoto dans son billet d'annonce. Il décrit comment le projet s'y tient :
- Du code compilé avec des en-têtes plus récents reçoit d'une bibliothèque plus ancienne une erreur
GHOSTTY_UNSUPPORTED, au lieu d'un plantage. - Chaque fonction exportée porte une étiquette de version sous Linux et les autres systèmes ELF. Le système refuse donc par son nom une bibliothèque incompatible au lancement d'un programme.
- L'intégration continue compare l'ABI à une référence enregistrée avec libabigail sous Linux. Sous macOS et WebAssembly, elle la compare à des listes de types figées.
La bibliothèque a désormais son propre cycle de publication, séparé de l'application Ghostty. Chaque version fournit une archive source signée et une seconde archive avec toutes les dépendances Zig. Les distributions Linux peuvent ainsi compiler hors ligne. Les règles figurent dans PACKAGING-LIBGHOSTTY.md. Le code est sous licence MIT et n'a besoin que de la bibliothèque C à l'exécution.
Qui l'utilise déjà
JetBrains fait désormais tourner le terminal d'IntelliJ, PyCharm, GoLand et de ses autres IDE sur la bibliothèque, selon Hashimoto. Il cite le chiffre de JetBrains : 12,5 millions d'utilisateurs réguliers de ces IDE. La documentation du projet estime que des dizaines de millions de personnes utilisent libghostty-vt chaque jour, et précise qu'aucun suivi n'est fait.
Neovim a une demande de fusion approuvée, la #39773, qui remplace libvterm par libghostty-vt, d'après Hashimoto. Elle attendait une version étiquetée, et elle était encore ouverte le 7 novembre. Elle corrigerait un bogue vieux de dix ans, où le texte du terminal est coupé après un redimensionnement de la fenêtre. D'autres utilisateurs incluent Turborepo de Vercel, OrbStack, le terminal Ghostel pour Emacs et le terminal Kwi, expérimental, de KDE. Des liaisons communautaires existent pour Rust, Go, Python, Swift, .NET et d'autres.
Testé : compiler la 1.0 depuis les archives signées
Lors d'un test de Tech AI Wire le 7 novembre, sous macOS 26.6.2 avec Docker 28.4.0, un conteneur Alpine Linux 3.22 (arm64) a compilé la version. Il a suivi les étapes que le guide d'empaquetage donne aux distributions :
minisign -V -P RWQlAjJC23149WL2sEpT/l0QKy7hMIFhYdQOFy0Z7z7PbneUgvlsnYcV -m libghostty-vt-1.0.0.tar.gz
ZIG_GLOBAL_CACHE_DIR=/tmp/build-cache zig build --prefix /usr \
--system ../libghostty-vt-1.0.0-deps -Doptimize=ReleaseFast -Dcpu=baseline
objdump -T /usr/lib/libghostty-vt.so | grep -c GHOSTTY_VT_1.0
| Vérification | Résultat |
|---|---|
| Signatures des sources, des dépendances et de SHA256SUMS | Les trois vérifiées avec minisign |
| Compilateur Zig | 0.17.0 (la version exige 0.17.x) |
| Durée de compilation, ReleaseFast | 117 secondes |
| Bibliothèque partagée | libghostty-vt.so.1.0.0, 11,5 Mo, soname libghostty-vt.so.1 |
| Dépendances à l'exécution | La bibliothèque C seulement (musl) |
| Fonctions exportées | 209, toutes marquées GHOSTTY_VT_1.0 |
| Version pkg-config | 1.0.0 |
| L'exemple C de la documentation | Compilé avec gcc, il a affiché « Hello, world! » |
La première tentative a échoué. Le runtime C++ fourni avec Zig avait besoin de l'en-tête linux/futex.h, absent d'une image Alpine nue. L'installation du paquet Alpine linux-headers a réglé le problème.
Le numéro de version a baissé
Avant la 1.0, libghostty-vt tirait sa version de l'application Ghostty. Dans les fichiers de compilation de Ghostty 1.4.0, la version de la bibliothèque est celle de l'application, 1.4.0. La version stable annonce 1.0.0. Dans la compilation de Tech AI Wire, pkg-config --atleast-version=1.4.0 libghostty-vt a répondu non.
Kwi, chez KDE, a dû s'adapter. Le 7 novembre, le commit « Deps: Bump to libghostty-vt 1.0 » du développeur Eike Hein a changé le README de « libghostty-vt 1.4.0+ » en « libghostty-vt 1.0+ ». Le même commit montre que l'API C elle-même a changé avant le gel. ghostty_formatter_terminal_new() a perdu son argument d'options, désormais réglé avec ghostty_formatter_set(). Deux types de style de curseur ont été remplacés par un seul, GhosttyCursorStyle.
Ce que cela signifie pour les développeurs
- Abaissez les anciennes vérifications de version à 1.0. Une vérification CMake ou pkg-config exigeant 1.4 ou plus rejettera la bibliothèque stable. Kwi demande désormais
find_package(Ghostty 1.0 REQUIRED). - Recompilez le code écrit pour une version antérieure à la 1.0. La promesse d'ABI commence à la 1.0. Attendez-vous à des types renommés et à des signatures de fonctions modifiées, comme dans le portage de Kwi.
- Les empaqueteurs doivent utiliser les archives de publication, pas un clone Git. Selon le guide, un clone ou une archive GitHub compile l'application Ghostty à la place, sauf si l'on ajoute
-Demit-lib-vt. Utilisez unZIG_GLOBAL_CACHE_DIRneuf et vide, et Zig 0.17.x. - Liez contre le soname, libghostty-vt.so.1. Les versions 1.x ultérieures gardent ce nom. Les programmes compilés maintenant reçoivent donc les correctifs sans recompilation.
- Vérifiez votre plateforme. Hashimoto indique que Windows on Arm, illumos, x86 32 bits, WASI et le bare metal sont compilés en CI, mais pas testés. Il ne prétend pas non plus couvrir tous les protocoles de terminal.
- Les utilisateurs de Neovim peuvent attendre. Rien ne change tant que la demande de fusion #39773 n'est pas fusionnée et publiée dans une version.
Sources
- Libghostty 1.0 - Mitchell Hashimoto
- Packaging libghostty-vt for Distribution - GitHub
- libghostty-vt documentation - Ghostty
- feat(terminal): replace libvterm with libghostty-vt - GitHub
- Deps: Bump to libghostty-vt 1.0 - KDE on GitHub
- Libghostty 1.0 gives developers a stable terminal engine to embed - RuntimeWire
Articles liés

OpenSSH 10.6p2 corrige un contournement de mot de passe sur Alpine Linux
OpenSSH 10.6p2 et Alpine ont corrigé le 5 novembre une connexion SSH sans mot de passe. Un test de Tech AI Wire sur cinq images Alpine montre qui est exposé.

Kwi, le nouveau terminal de KDE, revendique 3 à 35 fois la vitesse de Konsole
Le développeur KDE Eike Hein a dévoilé Kwi le 1er novembre, un terminal rendu par le GPU et bâti sur libghostty-vt de Ghostty, qu'il dit 3 à 35 fois plus rapide que Konsole.

GitLab CVE-2026-97229 : Alpine signale une tentative d'exploitation
Alpine Linux indique qu'un attaquant a tenté d'exploiter CVE-2026-97229 sur son serveur GitLab les 20 et 21 octobre. Mettre GitLab à jour n'a pas suffi : le correctif se trouve dans Ruby.