Libghostty 1.0 trae una ABI de C estable para apps de terminal
Libghostty-vt 1.0 salió el 6 de noviembre con una ABI de C estable. Una prueba de compilación de Tech AI Wire halló 209 funciones versionadas y un número de versión que bajó.
Por Claire Whitmore
4 min de lectura
Traducido automáticamente del original en inglés, que Claire Whitmore verificó y editó. Prevalece la versión en inglés. Cómo trabajamos

En cifras
- funciones exportadas, todas con la etiqueta GHOSTTY_VT_1.0, en una compilación de Tech AI Wire
- 209
- para compilar desde los tarballs firmados en una prueba de Tech AI Wire en un contenedor Linux
- 117 s
- terminales activas en una máquina Linux de 4 núcleos y 8 GB en la prueba de un usuario, según la documentación
- 10.000
Mitchell Hashimoto publicó libghostty-vt 1.0 el 6 de noviembre de 2026. Es la primera versión estable del motor de terminal que hay dentro de su terminal Ghostty. La versión 1.0 congela la ABI de C de la biblioteca, la interfaz binaria con la que se enlazan los programas compilados. Una app compilada hoy sobre la 1.0 debería seguir funcionando cuando versiones 1.x posteriores sustituyan la biblioteca. Esto importa porque los IDE de JetBrains ya ejecutan su terminal integrada sobre ella. Neovim también espera esta versión para retirar su antiguo código de terminal.
Qué promete libghostty-vt 1.0
Un motor de terminal lee los bytes que imprime un programa, incluidos los códigos de escape para colores y movimientos del cursor. Después lleva la cuenta de la pantalla, el cursor y el historial de desplazamiento. No dibuja nada. El dibujo queda en manos de la app. Por eso una terminal de KDE, un IDE y una página web pueden compartirlo.
"La 1.0 significa que libghostty-vt sigue el versionado semántico y tiene promesas estrictas de compatibilidad de ABI", escribe Hashimoto en su publicación de anuncio. Describe cómo lo hace cumplir el proyecto:
- El código compilado con cabeceras más nuevas recibe de una biblioteca más antigua un error
GHOSTTY_UNSUPPORTED, en lugar de un fallo. - Cada función exportada lleva una etiqueta de versión en Linux y otros sistemas ELF. Así, el sistema rechaza por su nombre una biblioteca incompatible al arrancar un programa.
- La integración continua compara la ABI con una referencia guardada usando libabigail en Linux. En macOS y WebAssembly la compara con listas de tipos fijas.
La biblioteca tiene ahora su propio ciclo de lanzamientos, separado de la app Ghostty. Cada versión publica un tarball de código firmado y un segundo tarball con todas las dependencias de Zig. Así, las distribuciones Linux pueden compilar sin conexión. Las reglas están en PACKAGING-LIBGHOSTTY.md. El código tiene licencia MIT y solo necesita la biblioteca de C en tiempo de ejecución.
Quién ya la usa
JetBrains ya ejecuta la terminal de IntelliJ, PyCharm, GoLand y sus otros IDE sobre la biblioteca, según Hashimoto. Él cita la cifra de la propia JetBrains: 12,5 millones de usuarios recurrentes de esos IDE. La documentación del proyecto estima que decenas de millones de personas usan libghostty-vt a diario, y aclara que no hace ningún seguimiento.
Neovim tiene una solicitud de cambios aprobada, la #39773, que sustituye libvterm por libghostty-vt, según Hashimoto. Esperaba una versión etiquetada y seguía abierta el 7 de noviembre. Cerraría un error de hace 10 años por el que el texto de la terminal se corta al cambiar el tamaño de la ventana. Otros usuarios son Turborepo de Vercel, OrbStack, la terminal Ghostel para Emacs y la terminal Kwi, experimental, de KDE. Hay bindings de la comunidad para Rust, Go, Python, Swift, .NET y más.
Probado: compilar la 1.0 desde los tarballs firmados
En una prueba de Tech AI Wire el 7 de noviembre, en macOS 26.6.2 con Docker 28.4.0, un contenedor de Alpine Linux 3.22 (arm64) compiló la versión. Siguió los pasos que la guía de empaquetado da a las distribuciones:
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
| Comprobación | Resultado |
|---|---|
| Firmas del código, las dependencias y SHA256SUMS | Las tres verificadas con minisign |
| Compilador Zig | 0.17.0 (la versión exige 0.17.x) |
| Tiempo de compilación, ReleaseFast | 117 segundos |
| Biblioteca compartida | libghostty-vt.so.1.0.0, 11,5 MB, soname libghostty-vt.so.1 |
| Dependencias en ejecución | Solo la biblioteca de C (musl) |
| Funciones exportadas | 209, todas con la etiqueta GHOSTTY_VT_1.0 |
| Versión de pkg-config | 1.0.0 |
| El ejemplo en C de la documentación | Compiló con gcc e imprimió "Hello, world!" |
El primer intento falló. El runtime de C++ que trae Zig necesitaba la cabecera linux/futex.h, que falta en una imagen de Alpine mínima. Instalar el paquete linux-headers de Alpine lo resolvió.
El número de versión bajó
Antes de la 1.0, libghostty-vt tomaba su versión de la app Ghostty. En los archivos de compilación de Ghostty 1.4.0, la versión de la biblioteca es la de la app, 1.4.0. La versión estable informa 1.0.0. En la compilación de Tech AI Wire, pkg-config --atleast-version=1.4.0 libghostty-vt respondió que no.
Kwi, de KDE, tuvo que adaptarse. El 7 de noviembre, el commit "Deps: Bump to libghostty-vt 1.0" del desarrollador Eike Hein cambió el README de "libghostty-vt 1.4.0+" a "libghostty-vt 1.0+". El mismo commit muestra que la propia API de C cambió antes de congelarse. ghostty_formatter_terminal_new() perdió su argumento de opciones, que ahora se fija con ghostty_formatter_set(). Dos tipos de estilo de cursor se sustituyeron por uno, GhosttyCursorStyle.
Qué significa esto para los desarrolladores
- Baja las comprobaciones de versión antiguas a 1.0. Una comprobación de CMake o pkg-config que pida 1.4 o posterior rechazará la biblioteca estable. Kwi ahora pide
find_package(Ghostty 1.0 REQUIRED). - Recompila el código escrito para una compilación anterior a la 1.0. La promesa de ABI empieza en la 1.0. Cuenta con tipos renombrados y firmas de funciones cambiadas, como en la migración de Kwi.
- Los empaquetadores deben usar los tarballs de la versión, no un checkout de Git. La guía dice que un checkout o un archivo de GitHub compila en su lugar la app Ghostty, salvo que se añada
-Demit-lib-vt. Usa unZIG_GLOBAL_CACHE_DIRnuevo y vacío, y Zig 0.17.x. - Enlaza contra el soname, libghostty-vt.so.1. Las versiones 1.x posteriores mantienen ese nombre. Así, los programas compilados ahora reciben correcciones sin recompilar.
- Revisa tu plataforma. Hashimoto indica que Windows on Arm, illumos, x86 de 32 bits, WASI y bare metal se compilan en la CI, pero no se prueban. Tampoco afirma cubrir todos los protocolos de terminal.
- Los usuarios de Neovim pueden esperar. Nada cambia hasta que la solicitud de cambios #39773 se fusione y llegue en una versión.
Fuentes
- 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
Artículos relacionados

OpenSSH 10.6p2 corrige una omisión de contraseña en Alpine Linux
OpenSSH 10.6p2 y Alpine corrigieron el 5 de noviembre un acceso por SSH que no pide contraseña. Una prueba de Tech AI Wire con cinco imágenes de Alpine muestra quién está expuesto.

Kwi, la nueva terminal de KDE, promete de 3 a 35 veces la velocidad de Konsole
El desarrollador de KDE Eike Hein presentó Kwi el 1 de noviembre, una terminal renderizada en la GPU y construida sobre libghostty-vt de Ghostty, que según él es de 3 a 35 veces más rápida que Konsole.

GitLab CVE-2026-97229: Alpine informa de un intento de explotación
Alpine Linux dice que un atacante intentó explotar CVE-2026-97229 en su servidor GitLab los días 20 y 21 de octubre. Actualizar solo GitLab no lo corrigió: el parche está en Ruby.