Первый стабильный выпуск эмулятора терминала Ghostty

Опубликован первый стабильный выпуск эмулятора терминала Ghostty, примечательный задействованием GPU для ускорения отрисовки содержимого. Автор Ghostty пытается воплотить в одном приложении три качества – высокую производительность, обширную функциональность и интерфейс, выглядящий родным для каждой поддерживаемой платформы. Код проекта написан на языке Zig и распространяется под лицензией MIT. Готовые сборки сформированы для Linux и macOS.

Для построения интерфейса в сборах для Linux задействована библиотека GTK, а для macOS – фреймворк SwiftUI, что позволило использовать штатные для каждой платформы диалоги, меню, стилизацию окон и интерфейс для изменения настроек. Для ускорения отрисовки в Linux используется графический API OpenGL, а в macOS – Metal. Производительность также повышается благодаря применения отдельного потока для ввода/вывода.

В проведённых тестах Ghostty оказался быстрее
эмуляторов терминала iTerm и Kitty в 4 раза, а Terminal.app – в 2 два раза, при выводе на экран содержимого большого файла, например, при помощи команды “cat big_file.txt”. По сравнению с Alacritty производительность Ghostty оказалась примерно на том же уровне, но при этом Ghostty предоставляет более богатую функциональность.

В терминале могут отображаться emoji, гиперссылки, сложные графемы и лигатуры (слияние нескольких символов в один, например, “æ”). Для вывода изображений непосредственно в терминале может использоваться протокол Kitty. Для встраивания функциональности Ghostty в другие приложения развивается библиотека libghostty, совместимая с проектами на языке Си и позволяющая быстро интегрировать эмулятор терминала в свои продукты.

Интерфейс поддерживает тёмные и светлые темы оформления, разделение окна для одновременного отображения нескольких сеансов, переключение между сеансами при помощи вкладок. Терминал соответствует требованию стандарта ECMA-4, но также поддерживает и не вошедшие в стандарт расширения и escape-последовательности, например, предлагаемые в xterm.

Release. Ссылка here.