- libghostty es una biblioteca de emulador de terminal embebido en desarrollo que podrá usarse en cualquier aplicación
- Su primer componente, libghostty-vt, es una API sin dependencias optimizada para parsing y mantenimiento de estado
- Surge para resolver la complejidad de la emulación de terminal y el problema de las implementaciones repetidas, con enfoque multiplataforma y alta portabilidad
- A futuro planea expandirse con bibliotecas adicionales para manejo de entrada de teclado, renderizado con GPU e integración con diversos frameworks
- Actualmente la API de Zig ya puede probarse, y la API de C también se publicará pronto; el proyecto está escuchando activamente los comentarios de los usuarios
Introducción y contexto del desarrollo de libghostty
- libghostty es un proyecto de bibliotecas diseñado para permitir que cualquier aplicación embeba capacidades modernas, rápidas y completas de emulación de terminal
- Actualmente, muchos programas implementan por su cuenta su propio emulador de terminal o crean por separado funciones de terminal en formas muy limitadas
- Estas implementaciones de emulación de terminal desarrolladas de manera individual suelen ser codebases ad hoc y de un solo uso, y como no manejan adecuadamente los casos excepcionales y la complejidad, con frecuencia sufren problemas de incompletitud, bugs y degradación de rendimiento
- Para la mayoría de los desarrolladores, implementar emulación de terminal no es parte de su negocio principal, por lo que existe una necesidad de una solución común y altamente reutilizable
- libghostty ofrece una API de C multiplataforma diseñada con dependencias mínimas, lo que permite a distintas aplicaciones aprovechar funciones de emulación de terminal estables y rápidas
libghostty-vt: el inicio de la primera biblioteca
libghostty-vt es una biblioteca completamente libre de dependencias (ni siquiera requiere libc) que ofrece una API para parsing de secuencias de terminal y mantenimiento del estado del terminal, como posición del cursor, estilos y saltos de línea
- Este parsing de secuencias de terminal no solo es una función central de un emulador de terminal, sino también algo indispensable para sitios que solo necesitan salida con estilo, como GitHub Actions o logs de compilación de Vercel
- El parsing del protocolo de terminal parece simple en la superficie, pero su implementación es muy difícil; de hecho, existen casos en los que varias implementaciones, como Jediterm, presentan problemas al procesar ciertas secuencias
- Algunos desarrolladores se quedan en un parsing simple de secuencias ANSI, pero debido al manejo complejo de estilos (como distintas notaciones RGB) y a la necesidad de compatibilidad total, es indispensable un parser sofisticado
- libghostty-vt fue extraído del núcleo probado de Ghostty y cuenta con parsing optimizado con SIMD, excelente soporte de Unicode, estructuras de memoria avanzadas y amplia compatibilidad de protocolos (Kitty Graphics, Tmux Control Mode, etc.)
- Se ofrece como una API de C sin dependencias y de un solo archivo, por lo que puede embederse fácilmente en cualquier lenguaje o entorno de propósito general; inicialmente soporta macOS y Linux (
x86_64, aarch64) y planea expandirse gradualmente a Windows, sistemas embebidos, WASM y más
- Puede dar soporte a objetivos más amplios que la propia GUI de Ghostty
libghostty a largo plazo
- Después de libghostty-vt, se planea lanzar una serie de bibliotecas adicionales con funciones como manejo de entrada (por ejemplo, codificación de teclado), renderizado con GPU (OpenGL, Metal), widgets de GTK y frameworks de Swift
- Estas expansiones funcionales se organizarán por módulos, minimizando dependencias, tamaño del código y complejidad de mantenimiento
Estado actual del desarrollo de libghostty-vt
- Recientemente se hizo merge de un PR (pull request) que expone
libghostty-vt como módulo de Zig, por lo que los desarrolladores de Zig ya pueden usarlo
- La API de C sigue en proceso de definición y pronto estará disponible para pruebas (la lógica central ya es una fuente probada utilizada durante años en Ghostty)
- La app de Ghostty para macOS también usa una API de C interna, pero como los headers actuales no son adecuados para publicación externa ni uso general, se está diseñando una API de C completamente nueva
- libghostty se versiona por separado de la aplicación Ghostty y actualmente está en fase alfa, con la expectativa de una adopción temprana y de la participación de desarrolladores de bindings de lenguaje
- El objetivo es tener una primera release etiquetada dentro de los próximos 6 meses
Solicitud de comentarios de los usuarios
- Como el proyecto se encuentra actualmente en la etapa de diseño de API, este es un momento en el que la opinión y los comentarios de usuarios reales son especialmente importantes
- Además de Ghostty, miembros de distintas comunidades ya están desarrollando proyectos basados en libghostty, y se espera que más usuarios se sumen
- Si tienes ideas de uso del proyecto o requisitos específicos, puedes comunicarte directamente con los desarrolladores a través del Discord de Ghostty o por correo electrónico
- libghostty está actualmente en versión alfa, por lo que la API aún no es estable, pero la lógica central garantiza una alta estabilidad probada en producción
Perspectivas futuras e impacto
- Sobre la base de la estabilidad alcanzada por la aplicación Ghostty, ahora es posible avanzar hacia un objetivo mayor llamado libghostty
- Si libghostty llega a usarse ampliamente en distintas aplicaciones, podría generar un impacto e influencia en el ecosistema mucho mayores que los de una sola app como Ghostty
- A medida que aumente el uso de libghostty, el propio Ghostty también podrá fortalecerse con funciones más ricas y mayor estabilidad
- Ghostty y libghostty evolucionarán de forma complementaria, con beneficios tanto para desarrolladores como para usuarios
3 comentarios
La uso desde la 1.0 y, salvo que no tiene desplazamiento ni búsqueda, estoy satisfecho jaja. Estaba usando iTerm, pero ya me quedé con esta.
Se viene libghostty
Lanzamiento de Ghostty 1.0: un emulador de terminal rápido y multiplataforma
Comentarios de Hacker News
La forma en que esta persona, incluso después de fundar una empresa, sacarla a bolsa y venderla por miles de millones, vuelve otra vez al mundo de la programación, de verdad se siente legendaria
Hashimoto no solo es un genio; lo que más me impresiona es su extraordinaria capacidad de abstracción para modularizar al extremo sistemas e interfaces y minimizar el acoplamiento. Da la impresión de ser alguien que pone en práctica tal cual la filosofía de Rich Hickey de Simple Made Easy. Su software se siente diseñado con una estructura en la que casi no queda otra opción más que funcionar correctamente. Y probé Ghostty por primera vez, y donde siempre había un pequeño retraso de renderizado con iTerm2 y el tema de Zsh/Powerlevel10k, en ghostty responde casi al instante
La verdad da envidia, y al mismo tiempo parece una vida de ensueño. Haber conseguido riqueza y luego poder seguir creando solo por el proyecto en sí, en una situación donde no hace falta ceder calidad por dinero. Me recuerda una vieja cita de Knuth
Definitivamente, los proyectos hechos con amor están logrando éxitos cada vez mayores. Está mostrando que, si no te obsesionas con el dinero, puedes producir mejores resultados. Por otro lado, también hace reflexionar sobre la estructura de nuestra sociedad y la economía en general, porque para disfrutar una vida así hace falta cierto capital previo. Como decía Knuth, si todos tuviéramos un poco más de tiempo, podríamos producir mejores resultados, pero cuando todo se hace con prisa siempre se sacrifican muchas cosas. Y como en otra de sus citas
En este punto uno se pregunta si de verdad estamos recompensando como corresponde a las personas que resuelven bien los problemas y nos facilitan la vida, o si solo estamos subiendo puntuaciones en un juego sin sentido. ¿Cómo se crean más leyendas? Me hace pensar en cómo construir una sociedad en la que se pueda vivir siguiendo la pasión, como Mitchell, sin tener que cargar con la obligación de explicarle a una junta directiva el valor de la calidad
Lo vi en persona; de verdad era alguien cálido y muy buena onda. Antes de fundar Hashicorp, cuando estaba en Kiip, almorcé con él en una conferencia, y Mitchell era un hacker de verdad. Se notaba que amaba sinceramente todo lo relacionado con la computación. En particular, estaba profundamente metido en una conferencia sobre sistemas distribuidos. Me dio la total certeza de que, hiciera lo que hiciera, iba a triunfar. Desde que descubrí Ghostty y empecé a usarlo, sigo satisfecho y lo uso constantemente
Y además esta persona está metida hasta el fondo en el desarrollo de software tty, una de las áreas más de nicho y de culto de todo el stack técnico de Unix
Llevo usando ghostty todos los días y apenas ahora me entero de que su creador es Mitchell Hashimoto; la verdad es una experiencia muy genial
Ghostty está buenísimo, me emociona que un verdadero emulador de terminal omni-platform pueda expandirse incluso a móvil. También me parece curioso que Ghostty esté hecho en Zig. Es el primer programa basado en Zig que uso normalmente, y me dio risa que la estructura del repositorio sea igualita al estilo de Golang https://github.com/ghostty-org/ghostty
De verdad quiero amar Ghostty, pero hay cosas que me quedan debiendo
font-thicken-strength, pero no queda 100% igual. Parece que por las características del renderizado con Metal es imposible o muy difícil. Para quienes vemos texto todo el día, eso es algo importantísimoLa pasión y el nivel de detalle que Mitchell pone en la experiencia del desarrollador son realmente impresionantes. Todavía recuerdo claramente el impacto que me causó usar Vagrant por primera vez en Santa Monica en 2011. Nunca pensé reemplazar iTerm2, pero probé Ghostty y me enamoré al instante
Últimamente uso ghostty todos los días. Me cambié hace poco. En macOS, al mapear caps lock a cmd, cmd+c funciona perfectamente. La configuración por defecto está muy bien pensada y, salvo que no es tan fácil de personalizar, todo me ha dejado muy satisfecho. El tema Gruvbox light también se ve muy bien. El hecho de que esté escrito en Zig ya me parece increíble; si alguien se pregunta si Zig ya está listo para uso real, ghostty sería una buena respuesta. No parece que vaya a volver a otro terminal; en serio ha sido una experiencia muy satisfactoria. Nota: si además combinas ghostty con aerospace, en Mac se logra un entorno casi perfecto usando solo el teclado
Estoy usando ghostty en mi AirMac, una Mac que me dejó mi hermano mientras programaba. Estoy sinceramente agradecido porque ghostty es realmente bueno. Puede parecer algo menor, pero de alguna manera valoro bastante que no dependa de libc
El histograma de análisis de frecuencia de visidata no se renderiza correctamente; algunas partes sí salen como cuadrados, pero el resto aparece como rombos con signo de interrogación. Por ese problema todavía no puedo dejar iTerm. Ni siquiera sabía con qué palabras clave buscar, así que me costó mucho encontrar una solución
Sigo atento con la esperanza de que el reflow de texto de Ghostty (especialmente incluyendo scrollback) también pueda resolverse en terminales basadas en Neovim. Me alegra muchísimo que Ghostty esté trayendo nueva innovación al entorno de terminales https://github.com/neovim/neovim/issues/33155
De verdad quiero usar ghostty, pero como no tiene soporte para cmd+f todavía, ni siquiera me animo a probarlo; aun así, me emociona mucho el desarrollo de este proyecto
https://ghostty.org/docs/install/release-notes/1-2-0#roadmap
https://github.com/ghostty-org/ghostty/issues/189