Вышел Ghostty 1.4: полная поддержка Kitty graphics, меньше памяти, быстрее вывод

27 октября 2026 года вышел Ghostty 1.4.0, крупный релиз терминального эмулятора. По словам мейнтейнеров, за семь месяцев работы в него вошли изменения от 172 участников в 2 889 коммитах. Примечания к релизу, как подчёркивают авторы, написаны вручную людьми-мейнтейнерами.

Память. Ghostty теперь прозрачно сжимает невидимую часть истории прокрутки: физическая память, занимаемая этими страницами, сокращается на 70-90% для типичной текстовой истории. Сжатие работает только когда терминал простаивает, страницы распаковываются по требованию при прокрутке или поиске, поэтому, по утверждению авторов, влияния на скорость ввода-вывода не измеряется. Благодаря этому лимит истории по умолчанию поднят с 10 МБ до 50 МБ на терминал; там, где сжатие поддерживается (сейчас macOS и 64-битный Linux), полная история в среднем занимает меньше физической памяти, чем прежние 10 МБ. Сжатие снижает именно резидентную (физическую), а не виртуальную память. Новый пустой терминал на macOS занимает около 16 КиБ памяти страниц терминала против 128 КиБ в Ghostty 1.3.1; память, освобождённая при очистке или обрезке истории, возвращается ОС; скрытые вкладки освобождают GPU-ресурсы, на macOS с одной видимой и 20 скрытыми вкладками память GPU упала примерно с 385 МиБ до 18 МиБ.

Скорость. Главный выигрыш дало наблюдение: на macOS ядро ограничивает каждое чтение из pty примерно 1 КиБ независимо от размера буфера. Теперь Ghostty читает из pty в одном потоке, а разбирает данные в другом, что подняло сквозную пропускную способность ввода-вывода на 25-55% на macOS (M4 Max, обычный и юникодный текст) относительно Ghostty 1.3.x. Разбор VT в тестах ускорился: обычный ASCII-текст, со 128 до 725 МБ/с (в 5,7 раза), CJK-текст, в 3,4 раза, набор из реальных записей asciinema объёмом 2,6 ГБ обрабатывается примерно на 25% быстрее. В сумме вывод файла в 150 МБ командой cat на macOS сократился с 1,5 секунды до 566 миллисекунд. Изменение размера окна с большой историей (120x80, 10 000 строк) примерно в 6 раз быстрее; рендерер удерживает блокировку терминала на кадр в 2,7-11 раз меньше; форматирование содержимого в текст, HTML или VT (копирование, write_screen_file, поиск по истории) быстрее в 1,5-8 раз; запуск на macOS быстрее примерно на 15% до появления окна и на 27% до первого кадра; разбор OSC 52 ускорился примерно в 30 раз, короткие последовательности вроде смены заголовка, примерно в 6 раз.

Kitty graphics. Добавлены анимация и относительное размещение, последние крупные возможности протокола, которых не хватало. Анимированный GIF через kitten icat теперь анимируется, а не показывается одним кадром; анимация приостанавливается, когда терминал не виден. Относительное размещение позволяет привязать одно изображение к другому, и дочернее движется вместе с родительским. Кроме того, проведена полная проверка соответствия спецификации и самому Kitty с исправлением десятков расхождений (например, изображения прокручиваются вместе с текстом в областях прокрутки, повторная передача того же ID заменяет старое изображение, а неверные данные возвращают ошибку вместо тишины). Массовый разбор данных изображений через SIMD ускорил разбор больших передач примерно в 16 раз (64 МиБ данных, x86_64 Linux, замеры разработчиков). По утверждению мейнтейнеров, реализация покрывает 100% опубликованной спецификации, и Ghostty (с libghostty), первый терминал, сделавший это вне самого Kitty.

Безопасность. В примечаниях перечислено десять рекомендаций по безопасности (GHSA). Среди них: защита вставки не считала символ возврата каретки концом строки, и вставка могла выполнить команду без подтверждения в программах без bracketed paste; вредоносные команды Kitty graphics могли обрушить или подвесить Ghostty, вызвать огромные выделения памяти или в ограниченных случаях прочитать либо удалить файлы вне разрешённых временных каталогов, достаточно просто показать вредоносный вывод; вредоносный вывод мог через режим управления tmux закрыть все окна (затронуты версии 1.3.0 и 1.3.1, tmux устанавливать не обязательно), аналогично, через раскладку tmux с панелью нулевого или чрезмерного размера; очистка экрана в историю могла повредить память при малом scrollback-limit (например, 0), а на значении по умолчанию, как сказано, уязвимость не известна; специально названный каталог мог заставить интеграцию с zsh отправить произвольные escape-последовательности, например молча подменить буфер обмена через OSC 52 (bash затронут в меньшей степени). На macOS: Cmd-клик по специально созданной гиперссылке OSC 8 (в том числе обнаруженной по умолчанию) мог открыть небезопасные локальные файлы или собственные URL-схемы и привести к выполнению команд, теперь небезопасные цели отклоняются, а собственные URL-схемы требуют подтверждения; перетаскиваемый текст обходил защиту вставки; открытие файла с управляющими символами в имени могло выполнить не ту команду, что показана в диалоге. Автор примечаний пишет, что запросил CVE для этих рекомендаций несколько недель назад, но GitHub их пока не присвоил; после присвоения номера будут добавлены.

macOS 27 и GTK. Ghostty 1.4 поддерживает macOS 27 (Golden Gate): исправлена вёрстка вкладок в заголовке, нативная панель вкладок больше не рисуется сплошной серой полосой поверх темы, исправлены перекрытие верхних строк при включённом «Уменьшении прозрачности», рамка значка и двойное открытие окна из «Быстрых команд». Совместимость сохраняется до macOS 13 (Ventura); Ghostty 1.3.1 работает на macOS 27, но с визуальными проблемами вроде серой панели вкладок. В GTK-версии новый конвейер отрисовки: отказ от GtkGLArea, рендеринг через EGL в отдельном потоке, экспорт каждого кадра как DMABUF, тройная буферизация (должна заметно снизить разрывы) и чёткий текст при дробном масштабировании (125%, 150%). Нужна системная библиотека EGL; на драйверах GPU без экспорта DMABUF кадры копируются через CPU, медленнее, но работает.

Буфер обмена и разделители. Реализован протокол буфера обмена Kitty (OSC 5522) на macOS и GTK: в отличие от OSC 52, он позволяет программам читать и записывать не только текст, но и изображения, HTML и другие форматы, а также включать события вставки (режим 5522). По умолчанию чтение требует разрешения (с предпросмотром содержимого, включая изображения), запись разрешена; новая настройка clipboard-write-limit-bytes ограничивает одну запись (по умолчанию 64 МиБ), при превышении запись не выполняется и буфер не меняется. В GTK разделители (splits) теперь можно перестраивать перетаскиванием за ручку, в том числе на разделители в других вкладках и окнах; новая настройка drag-handle (auto по умолчанию, always, never) управляет показом ручек на macOS и GTK. В GTK разделитель можно бросить только на другой разделитель, а вынос в новую вкладку или окно доступен лишь на macOS. Раздел про эмуляцию терминала в доступном тексте обрывается на середине.

Ключевые факты

  • Ghostty 1.4.0 вышел 27 октября 2026 года: семь месяцев работы, 172 участника, 2 889 коммитов.
  • Сжатие невидимой истории прокрутки сокращает физическую память на 70-90% для типичного текста; лимит истории по умолчанию вырос с 10 до 50 МБ. Запись в 150 МБ через cat на macOS ускорилась с 1,5 секунды до 566 мс.
  • Kitty graphics: добавлены анимация и относительное размещение; по заявлению разработчиков, покрыто 100% спецификации и Ghostty, первый терминал, достигший этого вне самого Kitty. Разбор больших передач изображений быстрее примерно в 16 раз (замеры разработчиков).
  • Закрыты десять рекомендаций по безопасности (GHSA): от обхода защиты вставки и сбоев из-за вредоносного вывода до выполнения команд через ссылки в macOS; CVE-номера пока не присвоены.
  • Новое: поддержка macOS 27, новый конвейер отрисовки на GTK (EGL и DMABUF), протокол буфера обмена Kitty (OSC 5522), перетаскивание разделителей в GTK.

Почему это важно

Ghostty, терминал, которым пользуются ежедневно, и релиз 1.4 бьёт сразу по трём болевым точкам: расход памяти, скорость при большом выводе и безопасность. Самая заметная заявка, сжатие невидимой истории прокрутки, позволившее поднять лимит по умолчанию до 50 МБ без роста потребления физической памяти. Второй блок, закрытие десяти рекомендаций по безопасности, часть которых срабатывает при простом показе вредоносного вывода. Кроме того, мейнтейнеры заявляют полное покрытие протокола Kitty graphics, что важно для программ, выводящих изображения и анимацию прямо в терминал.

Кому это важно

Пользователям Ghostty на macOS и Linux, особенно тем, кто держит много вкладок и большую историю прокрутки или часто выводит большие объёмы текста. Владельцам macOS 27, релиз убирает визуальные проблемы (серая панель вкладок, перекрытие строк). Пользователям GTK, новый конвейер отрисовки с чётким текстом при дробном масштабировании и перетаскиваемыми разделителями. Авторам терминальных программ с изображениями и буфером обмена, Kitty graphics целиком и протокол OSC 5522. Упаковщикам, новая отрисовка GTK требует системной библиотеки EGL.

Как это применить

Обновиться стоит в первую очередь из-за исправлений безопасности: версии 1.3.0 и 1.3.1 затронуты сбоями через режим управления tmux. Лимит истории по умолчанию теперь 50 МБ; сжатие доступно на macOS и 64-битном Linux, а при замерах памяти нужно смотреть на резидентную память. Для управления буфером обмена остаются настройки clipboard-read и clipboard-write (по умолчанию чтение с запросом разрешения, запись разрешена), размер одной записи ограничивает clipboard-write-limit-bytes (64 МиБ по умолчанию). Если ручки перетаскивания разделителей мешают, настройка drag-handle со значением never скрывает их, но тогда разделители нельзя перестраивать мышью. Поддерживаются версии macOS начиная с 13 (Ventura). Цены и лицензия в доступном тексте не обсуждаются.

Можно ли доверять

Источник, официальные примечания к релизу на сайте Ghostty, написанные мейнтейнерами. Все цифры скорости и памяти, их собственные замеры, и аппаратная база названа лишь для части из них (M4 Max для ввода-вывода на macOS, x86_64 Linux для разбора Kitty-изображений). Утверждение «первый терминал с полным покрытием Kitty graphics вне самого Kitty», слова самих разработчиков, независимой проверки в тексте нет. Номера CVE для рекомендаций пока не присвоены, указаны только идентификаторы GHSA. О фактах эксплуатации уязвимостей на практике в тексте не сказано. Часть текста источника обрывается в разделе об эмуляции терминала, поэтому пересказ не охватывает остальной журнал изменений.

Риски и подводные камни

Часть уязвимостей требует лишь показа вредоносного вывода или перехода в каталог из недоверенного источника (например, клонированного репозитория), так что обновление откладывать не стоит. Сжатие памяти работает не на всех платформах. На GTK при драйверах GPU без экспорта DMABUF кадры идут через CPU, медленнее. Мелкая деталь: включённая по умолчанию запись в буфер обмена остаётся разрешённой, а чтение требует подтверждения. Разделитель в GTK нельзя вынести в отдельную вкладку или окно, это возможно только на macOS. Скорости в 5-16 раз получены в бенчмарках на конкретном железе, а реальный выигрыш зависит от нагрузки.

«Наша реализация Kitty graphics теперь покрывает 100% опубликованной спецификации, и Ghostty (и libghostty) становится первым терминалом, сделавшим это за пределами самого Kitty.»

— Примечания к релизу Ghostty 1.4.0