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

Опубликован выпуск эмулятора терминала Ghostty 1.0.0, использующего 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 была примерно на том же уровне, но Alacritty отстаёт по функциональности от Ghostty.

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

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

Источник: http://www.opennet.ru/opennews/art.shtml?num=62471