3 puntos por GN⁺ 2025-09-24 | 3 comentarios | Compartir por WhatsApp
  • 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

 
yshrust 2025-09-24

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.

 
GN⁺ 2025-09-24
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

      Permitir que miles de científicos de la computación hagan libremente lo que quieren es lo que impulsa el progreso académico.

      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

      Si intentas optimizarlo todo, nunca podrás ser feliz.

      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

    • (No se parece al layout de Go) Más bien eso es algo bueno; la estructura de directorios de go como pkg/ y src/ no es precisamente muy buena
  • De verdad quiero amar Ghostty, pero hay cosas que me quedan debiendo

    • todavía no tiene soporte de búsqueda con ⌘F
    • no hay forma de seleccionar/copiar salida anterior o una cadena específica usando solo el teclado
    • ⌘. no envía CTRL-C (algo que los usuarios de Mac esperarían)
    • el renderizado de fuentes todavía no se siente tan suave como en Terminal.app; probé ajustarlo con 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ísimo
    • Sí se puede configurar para que ⌘. envíe CTRL-C
      keybind = "cmd+.=text:\x03"
      
      Discusión relacionada: https://news.ycombinator.com/item?id=42889411
    • Debería llegar pronto: https://ghostty.org/docs/install/release-notes/1-2-0#roadmap
    • La búsqueda en scrollback está planeada para la versión 1.3, pero parece que todavía faltan como 6 meses. Ghostty también ha estado evolucionando rápido últimamente, así que vale la pena revisar las notas de lanzamiento de la 1.2
    • Viendo cómo brincan los puntos, creo que lo que escribí se malinterpretó. En realidad, me parece increíblemente genial el concepto de implementar una GUI nativa por proveedor dentro de algo multiplataforma. Me da muchísimo gusto que este proyecto exista; simplemente, en lo personal, todavía no me parece perfecto. Aun así, lo sigo con expectativa
    • Mi segundo punto (seleccionar salida anterior con el teclado) es la razón principal por la que sigo usando WezTerm
  • La 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

    • ¿Podrías contar por qué debería usar ghostty? (Lo pregunto como alguien que usa Terminal.app como principal)
    • Clickhouse y Bun también son proyectos impresionantes
  • 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

    • Puede que esos codepoints no existan ni en la fuente principal ni en la fuente de respaldo. Si usas ghostty, te recomendaría revisar en iTerm2 con qué fuente se muestran esos glifos y luego ver si ghostty tiene una configuración adecuada para eso
  • 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

    • Me da curiosidad si eres un power user del terminal de neovim. Hace tiempo intenté cambiar mi flujo de trabajo para que neovim administrara directamente la terminal, en lugar del esquema donde tmux ejecutaba neovim. Parecía más cómodo poder abrir archivos en un solo buffer, ya que muchas veces, al abrir un archivo en algún pane, ya resultaba que estaba abierto en otra instancia de neovim. Mientras lo probaba, no sentí en particular problemas de reflow que parecieran resolverse cambiando a libghostty; más bien, me costó más adaptarme al paradigma. Como alguien muy metido con la terminal integrada de neovim, me interesaría escuchar experiencias sobre qué mejoraría concretamente aplicar libghostty
  • 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

    • Está en el roadmap
      https://ghostty.org/docs/install/release-notes/1-2-0#roadmap
    • Se puede usar algo como cmd+shift+f para abrir todo el buffer en el editor de texto por defecto y buscar ahí. Mucha gente ha sobrevivido con eso, y yo también; es una alternativa bastante práctica hasta que llegue la búsqueda nativa en scrollback
    • Me pregunto por qué no agregaron esa función al principio, si buscar en el historial es algo esencial en una terminal. ¿Había alguna razón compleja? De hecho, el propio Mitchell abrió el issue hace 2 años
      https://github.com/ghostty-org/ghostty/issues/189
    • Mucha gente se queja de la falta de búsqueda en historial tipo cmd+f, pero yo, aunque la función exista, nunca la uso. Si alguien pudiera explicar qué flujo de trabajo intenta hacer con eso, me interesaría saber si me estoy perdiendo de algo importante
    • También puedes correr tmux dentro y mapear cmd+f a copy-mode + /