Foi lançado o emulador de terminal Ghostty 1.0.0, que utiliza GPU para acelerar a renderização de conteúdo. O projeto é desenvolvido por Mitchell Hashimoto, cofundador da HashiCorp e criador de projetos como Vagrant e Terraform. O autor do Ghostty busca incorporar no novo emulador de terminal três qualidades: alto desempenho, ampla funcionalidade e uma interface que pareça nativa para cada plataforma suportada. O código do projeto é escrito em Zig e é distribuído sob a licença MIT. Compilações prontas estão disponíveis para Linux e macOS.
Para construir a interface nas compilações para Linux, foi utilizada a biblioteca GTK, enquanto para macOS foi empregado o framework SwiftUI, permitindo assim o uso de diálogos, menus, interface de configuração e estilização de janelas nativos de cada plataforma. Para acelerar a renderização em Linux, utiliza-se a API gráfica OpenGL, enquanto que em macOS é utilizado o Metal. O desempenho também é melhorado através da aplicação de um thread separado para entrada/saída.
Nos testes realizados, o Ghostty se mostrou quatro vezes mais rápido que emuladores de terminal como iTerm e Kitty, e duas vezes mais que o Terminal.app, ao exibir o conteúdo de um arquivo grande, por exemplo, usando o comando “cat big_file.txt”. Em comparação ao Alacritty, o desempenho do Ghostty foi aproximadamente no mesmo nível, mas o Alacritty fica atrás em funcionalidade em relação ao Ghostty.
O terminal pode exibir emojis, hyperlinks, grafemas complexos e ligaduras (a fusão de vários símbolos em um, como “æ”). Para exibir imagens diretamente no terminal, pode-se utilizar o protocolo Kitty. Para integrar a funcionalidade do Ghostty em outros aplicativos, uma biblioteca chamada libghostty está sendo desenvolvida, compatível com projetos em C e que permite uma rápida integração do emulador de terminal em seus produtos.
A interface suporta temas escuros e claros, divisão de janelas para exibir várias sessões simultaneamente e troca entre sessões usando abas. O terminal atende aos requisitos do padrão ECMA-4, mas também suporta extensões não padronizadas e sequências de escape, como aquelas propostas no xterm.
Fonte: opennet.ru
