Ir al contenido
sábado, 7 de noviembre de 202618°Dólar Oficial $1.570Dólar Blue $1.555Dólar MEP $1.588Dólar Tarjeta $2.041
PicoTecno

Libghostty 1.0: la biblioteca de emulación de terminal de Ghostty llega a su versión estable

Libghostty-vt, la biblioteca en C para emular terminales extraída del núcleo de Ghostty, alcanzó la versión 1.0 con interfaz binaria estable. Según su creador, ya la usan productos con millones de usuarios, entre ellos las terminales de los IDE de JetBrains.

Redacción PicoTecno

Libghostty 1.0: la biblioteca de emulación de terminal de Ghostty llega a su versión estable

Según informó el blog mitchellh.com, ya está disponible libghostty-vt 1.0, una biblioteca portable y de alto rendimiento escrita en C para emular terminales. Fue extraída directamente del núcleo de Ghostty, el emulador de terminal que su autor empezó a desarrollar en 2022. Con esta versión, tanto la biblioteca como su ABI (interfaz binaria de aplicación, es decir, el contrato que permite que un programa ya compilado siga funcionando con nuevas versiones de la biblioteca) pasan a considerarse estables.

El autor recuerda que hace poco más de un año el proyecto apenas empezaba: el módulo en Zig acababa de integrarse, la API en C no existía y solo Ghostty la usaba. Hoy, afirma, la API en C es un emulador de terminal completo, funciona en producción para millones de personas en cientos de productos, gratuitos y comerciales, y cuenta con una política de estabilidad de ABI que se verifica de forma automática.

Quiénes ya la usan

El texto destaca varios casos de adopción:

  • La terminal de los IDE de JetBrains (IntelliJ, PyCharm, GoLand y otros) ahora funciona sobre libghostty. Según un reporte de JetBrains, son más de 12,5 millones de usuarios activos.
  • Neovim tiene aprobado un pull request que reemplaza libvterm por libghostty-vt. Entre otras cosas, resolvería un problema abierto hace diez años sobre el reacomodo del historial al cambiar el tamaño de la ventana. Los mantenedores esperan una versión etiquetada para que las distribuciones puedan empaquetar la dependencia por separado.
  • Desarrolladores de KDE experimentan con un reemplazo de Konsole basado en la biblioteca. También la usan Turborepo de Vercel, devenv, OrbStack y Ghostel (para Emacs), además de ghostty-web, una versión WASM con API compatible con Xterm.js.
  • Existen enlaces mantenidos por la comunidad para Rust, Go, JavaScript, Swift, Python, .NET, Elixir, Dart y Java, entre otros. La lista awesome-libghostty registra más de cien proyectos.

El autor sostiene que hoy mucha más gente usa una terminal basada en libghostty que la aplicación Ghostty en sí, aunque aclara que las cifras son aproximadas porque la mayoría de los consumidores no informa su uso.

Para sostener la estabilidad, la API se diseñó con objetos como manejadores opacos y con un conjunto reducido de funciones para leer y escribir valores, lo que permite sumar novedades sin crear símbolos nuevos. Si un programa con encabezados más nuevos se enlaza con una biblioteca más vieja, recibe un resultado GHOSTTY_UNSUPPORTED en lugar de fallar. La integración continua compara cada cambio con una base de referencia mediante libabigail en Linux, y en las plataformas ELF cada símbolo exportado lleva versión.

La versión 1.0 también incorpora herramientas para que las distribuciones la empaqueten: ciclo de lanzamientos propio, un tarball firmado del código fuente y otro con todas las dependencias de Zig para compilar sin conexión, manifiestos de licencias y archivos para pkg-config y CMake. La biblioteca usa licencia MIT, no incluye código copyleft y en tiempo de ejecución solo requiere libc; si se desactiva SIMD, puede compilarse de forma totalmente independiente del sistema (freestanding), algo que permite su uso en equipos de hardware sin sistema operativo, como objetivos RISC-V y ARM.

En cuanto a recursos, la biblioteca no crea hilos, asigna memoria solo mediante un asignador configurable y consume poco procesamiento. El autor cuenta que ejecutó 10.000 terminales activas, cada una con una shell generando salida, en un servidor Linux de 4 núcleos y 8 GB de RAM. Para esa prueba tuvo que usar dash, porque bash consumía mucha más memoria que libghostty-vt. Según el texto, el plan ahora es priorizar la estabilidad e implementar la mayor cantidad posible de protocolos de terminal, con opciones para activarlos o desactivarlos. La documentación, los ejemplos y las descargas están en el sitio lib.ghostty.org.

Compartí esta nota

Seguí leyendo