Libghostty 1.0 traz uma ABI C estável para apps de terminal
A libghostty-vt 1.0 saiu em 6 de novembro com uma ABI C estável. Um teste de compilação da Tech AI Wire achou 209 funções versionadas e um número de versão que caiu.
Por Claire Whitmore
4 min de leitura
Traduzido automaticamente do original em inglês, que Claire Whitmore verificou e editou. Prevalece a versão em inglês. Como trabalhamos

Em números
- funções exportadas, todas com a etiqueta GHOSTTY_VT_1.0, em uma compilação da Tech AI Wire
- 209
- para compilar a partir dos tarballs assinados em um teste da Tech AI Wire em contêiner Linux
- 117 s
- terminais ativos em uma máquina Linux de 4 núcleos e 8 GB no teste de um usuário, segundo a documentação
- 10.000
Mitchell Hashimoto lançou a libghostty-vt 1.0 em 6 de novembro de 2026. É a primeira versão estável do motor de terminal que fica dentro do seu terminal Ghostty. A versão 1.0 congela a ABI C da biblioteca, a interface binária com a qual os programas compilados se ligam. Um app compilado hoje sobre a 1.0 deve continuar funcionando quando versões 1.x posteriores substituírem a biblioteca. Isso importa porque as IDEs da JetBrains já rodam seu terminal integrado sobre ela. O Neovim também espera esta versão para abandonar seu antigo código de terminal.
O que a libghostty-vt 1.0 promete
Um motor de terminal lê os bytes que um programa imprime, incluindo os códigos de escape para cores e movimentos do cursor. Depois, acompanha a tela, o cursor e o histórico de rolagem. Ele não desenha nada. O desenho fica a cargo do app. Por isso um terminal do KDE, uma IDE e uma página web podem compartilhá-lo.
"A 1.0 significa que a libghostty-vt segue o versionamento semântico e tem promessas estritas de compatibilidade de ABI", escreve Hashimoto em sua publicação de anúncio. Ele descreve como o projeto garante isso:
- Código compilado com cabeçalhos mais novos recebe de uma biblioteca mais antiga um erro
GHOSTTY_UNSUPPORTED, em vez de travar. - Cada função exportada leva uma etiqueta de versão no Linux e em outros sistemas ELF. Assim, o sistema recusa pelo nome uma biblioteca incompatível quando um programa inicia.
- A integração contínua compara a ABI com uma referência salva usando a libabigail no Linux. No macOS e no WebAssembly, compara com listas de tipos fixas.
A biblioteca agora tem seu próprio ciclo de lançamentos, separado do app Ghostty. Cada versão publica um tarball de código assinado e um segundo tarball com todas as dependências do Zig. Assim, as distribuições Linux podem compilar offline. As regras estão em PACKAGING-LIBGHOSTTY.md. O código tem licença MIT e precisa apenas da biblioteca C em tempo de execução.
Quem já usa
A JetBrains agora roda o terminal do IntelliJ, PyCharm, GoLand e de suas outras IDEs sobre a biblioteca, segundo Hashimoto. Ele cita o número da própria JetBrains: 12,5 milhões de usuários recorrentes dessas IDEs. A documentação do projeto estima que dezenas de milhões de pessoas usam a libghostty-vt todos os dias, e observa que não faz nenhum rastreamento.
O Neovim tem um pull request aprovado, o #39773, que substitui a libvterm pela libghostty-vt, segundo Hashimoto. Ele esperava uma versão com tag e ainda estava aberto em 7 de novembro. Ele fecharia um bug de 10 anos em que o texto do terminal é cortado depois que a janela muda de tamanho. Outros usuários incluem o Turborepo da Vercel, o OrbStack, o terminal Ghostel para Emacs e o terminal Kwi, experimental, do KDE. Há bindings da comunidade para Rust, Go, Python, Swift, .NET e outras.
Testado: compilando a 1.0 a partir dos tarballs assinados
Em um teste da Tech AI Wire em 7 de novembro, no macOS 26.6.2 com Docker 28.4.0, um contêiner Alpine Linux 3.22 (arm64) compilou a versão. Ele seguiu os passos que o guia de empacotamento dá às distribuições:
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
| Verificação | Resultado |
|---|---|
| Assinaturas do código, das dependências e do SHA256SUMS | As três verificadas com minisign |
| Compilador Zig | 0.17.0 (a versão exige 0.17.x) |
| Tempo de compilação, ReleaseFast | 117 segundos |
| Biblioteca compartilhada | libghostty-vt.so.1.0.0, 11,5 MB, soname libghostty-vt.so.1 |
| Dependências em execução | Apenas a biblioteca C (musl) |
| Funções exportadas | 209, todas com a etiqueta GHOSTTY_VT_1.0 |
| Versão no pkg-config | 1.0.0 |
| O exemplo em C da documentação | Compilou com gcc e imprimiu "Hello, world!" |
A primeira tentativa falhou. O runtime C++ que vem com o Zig precisava do cabeçalho linux/futex.h, que falta em uma imagem Alpine mínima. Instalar o pacote linux-headers do Alpine resolveu.
O número de versão caiu
Antes da 1.0, a libghostty-vt pegava sua versão do app Ghostty. Nos arquivos de compilação do Ghostty 1.4.0, a versão da biblioteca é a do app, 1.4.0. A versão estável informa 1.0.0. Na compilação da Tech AI Wire, pkg-config --atleast-version=1.4.0 libghostty-vt respondeu que não.
O Kwi, do KDE, teve de se ajustar. Em 7 de novembro, o commit "Deps: Bump to libghostty-vt 1.0" do desenvolvedor Eike Hein mudou o README de "libghostty-vt 1.4.0+" para "libghostty-vt 1.0+". O mesmo commit mostra que a própria API C mudou antes do congelamento. ghostty_formatter_terminal_new() perdeu seu argumento de opções, que agora é definido com ghostty_formatter_set(). Dois tipos de estilo de cursor foram substituídos por um, GhosttyCursorStyle.
O que isso significa para desenvolvedores
- Baixe as verificações de versão antigas para 1.0. Uma verificação do CMake ou do pkg-config que peça 1.4 ou superior vai rejeitar a biblioteca estável. O Kwi agora pede
find_package(Ghostty 1.0 REQUIRED). - Recompile o código escrito para uma compilação anterior à 1.0. A promessa de ABI começa na 1.0. Espere tipos renomeados e assinaturas de funções alteradas, como na migração do Kwi.
- Empacotadores devem usar os tarballs da versão, não um checkout do Git. O guia diz que um checkout ou um arquivo do GitHub compila o app Ghostty no lugar, a menos que se adicione
-Demit-lib-vt. Use umZIG_GLOBAL_CACHE_DIRnovo e vazio, e o Zig 0.17.x. - Ligue contra o soname, libghostty-vt.so.1. As versões 1.x posteriores mantêm esse nome. Assim, programas compilados agora recebem correções sem recompilar.
- Confira sua plataforma. Hashimoto lista Windows on Arm, illumos, x86 de 32 bits, WASI e bare metal como compilados na CI, mas não testados. Ele também não afirma cobrir todos os protocolos de terminal.
- Usuários do Neovim podem esperar. Nada muda até que o pull request #39773 seja mesclado e chegue a uma versão.
Fontes
- 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
Artigos relacionados

OpenSSH 10.6p2 corrige um desvio de senha no Alpine Linux
O OpenSSH 10.6p2 e o Alpine corrigiram em 5 de novembro um login por SSH que não pede senha. Um teste da Tech AI Wire com cinco imagens do Alpine mostra quem está exposto.

Kwi, o novo terminal do KDE, promete de 3 a 35 vezes a velocidade do Konsole
O desenvolvedor do KDE Eike Hein apresentou o Kwi em 1º de novembro, um terminal renderizado na GPU e construído sobre a libghostty-vt do Ghostty, que segundo ele roda de 3 a 35 vezes mais rápido que o Konsole.

GitLab CVE-2026-97229: Alpine relata tentativa de exploração
O Alpine Linux diz que um invasor tentou explorar a CVE-2026-97229 em seu servidor GitLab em 20 e 21 de outubro. Atualizar só o GitLab não resolveu: o patch está no Ruby.