Три кита: Скорость, Функции, Нативность
Ghostty — это терминальный эмулятор, который заявляет о решении вечной дилеммы разработчиков: выбора между производительностью, набором функций и качеством пользовательского интерфейса. Проект написан на языке Zig и использует C для совместимости, предлагая архитектуру, где каждый терминал имеет выделенные потоки для чтения, записи и рендеринга.
Для рендеринга используется OpenGL на Linux и Metal на macOS. Разработчики утверждают, что Ghostty находится в той же категории производительности, что и Alacritty (в пределах нескольких процентов), но при этом значительно превосходит их по функционалу и ощущению «нативности» приложения. По сравнению с Terminal.app и iTerm2, Ghostty работает примерно в 100 раз быстрее.
libghostty: Терминал как библиотека
Ключевым нововведением стала публикация libghostty — кроссплатформенной библиотеки без зависимостей для C и Zig. Она позволяет встраивать функционал терминала или парсинг стилей в любые сторонние проекты. Первым компонентом стал libghostty-vt, отвечающий за парсинг последовательностей и состояние терминала. Библиотека уже доступна для macOS, Linux, Windows и WebAssembly, хотя API все еще находится в стадии разработки.
Нативность на каждой платформе
Ghostty не стремится к усредненному опыту, а адаптируется под каждую ОС:
- macOS: Полноценное приложение на SwiftUI с поддержкой меню, настроек, CoreText для шрифтов, Metal, AppleScript и Apple Shortcuts (AppIntents).
- Linux: Приложение на GTK с глубокой интеграцией в systemd (изоляция cgroup, управление экземплярами, режим «всегда включен»).
Поддержка стандартов и современные протоколы
Проект проводит аудит соответствия xterm и реализует как legacy-последовательности, так и современные протоколы, такие как Kitty graphics protocol, Kitty image protocol, синхронизированный рендеринг и уведомления о смене светлой/темной темы. Ghostty использует иерархию: стандарты (ECMA-48) → поведение xterm → поведение других популярных терминалов.
Сравнение производительности и архитектуры
| Характеристика | Ghostty | Alacritty | Terminal.app / iTerm2 |
|---|---|---|---|
| Ядро | Zig / C | Rust | Swift / Objective-C |
| Metal | OpenGL | Core Graphics | |
| Относительная скорость | Высокая (100x быстрее старых) | Высокая (аналогична Ghostty) | Низкая |
| Нативный UI | Полная адаптация (SwiftUI/GTK) | Минималистичный | Нативный |
Безопасность и отчеты об ошибках
Ghostty имеет встроенный механизм сбора отчетов о крашах. Они сохраняются локально в директории $XDG_STATE_HOME/ghostty/crash (или ~/.local/state) в формате Sentry envelope. Данные не отправляются автоматически на серверы разработчиков, что обеспечивает приватность. Для просмотра доступных отчетов используется команда ghostty +crash-report.
Источник: Github ↗
