LINUX.ORG.RU

Ghostty 1.4.0

 , , ,


0

4

Команда разработчиков эмулятора терминала Ghostty представила версию 1.4.0. Новая версия стала итогом 7 месяцев активной разработки: над ней трудились 172 контрибьютора, сделавших 2 289 коммитов. В этой версии: серьёзное ускорение работы, снижение потребления памяти, полноценная поддержка протокола Kitty и множество других улучшений для всех поддерживаемых платформ.

Ghostty — это быстрый, многофункциональный и кроссплатформенный эмулятор терминала, использующий собственный пользовательский интерфейс и аппаратное ускорение графики. Ghostty построен на libghostty — переносимой встраиваемой библиотеке эмуляции терминала . libghostty лежит в основе всех встроенных терминалов в IDE от JetBrains, и сейчас ведутся работы по замене ядра терминала с libvterm на libghostty в Neovim.

Главные нововведения

1. 100% поддержка Kitty Graphics (с анимацией и относительным позиционированием)

Ghostty стал первым сторонним терминалом (помимо самого Kitty), реализовавшим полную спецификацию протокола графики Kitty.

  • Анимация: Теперь анимированные изображения (например, GIF через kitten icat) воспроизводятся прямо в терминале, а не замирают на первом кадре. Анимация автоматически ставится на паузу, когда окно терминала неактивно.
  • Относительное позиционирование: Позволяет программам привязывать дочерние изображения к родительским элементам, чтобы они перемещались вместе.
  • Производительность: Парсинг графических данных теперь переведен на SIMD, что ускорило передачу крупных изображений примерно в 16 раз (в тестах для 64 МБ данных).

2. Сжатие истории (Scrollback Compression) и снижение расхода памяти

  • Прозрачное сжатие: Невидимая часть истории строк теперь сжимается «на лету» в фоновом режиме во время простоя терминала, экономя от 70% до 90% физической памяти для текстовых логов. Распаковка происходит мгновенно при прокрутке или поиске.
  • Лимит истории по умолчанию: Благодаря компрессии стандартный лимит буфера прокрутки увеличен с 10 МБ до 50 МБ на один терминал.
  • Оптимизация вкладок: Новое пустое окно на macOS теперь потребляет всего около 16 КиБ (против 128 КиБ ранее). Неактивные вкладки теперь сбрасывают ресурсы GPU, что в тестах с 20 скрытыми вкладками снизило потребление памяти с 385 МБ до 18 МБ.

3. Резкий рост производительности и пропускной способности I/O

  • Обход ограничений macOS: Ядро macOS искусственно ограничивает размер каждого чтения из pty примерно до 1 КиБ. Ghostty теперь производит чтение в отдельном потоке, увеличивая общую сквозную пропускную способность I/O на 25–55%.
  • Парсер VT: Обработка простого ASCII-текста в бенчмарках выросла со 128 МБ/с до 725 МБ/с (в 5.7 раз), а работа с текстом на CJK — в 3.4 раза. Операция cat для 150-мегабайтного текстового файла на macOS теперь занимает всего 566 мс вместо 1.5 секунд.
  • Изменение размера: Изменение размеров окна с большими логами (например, 10 000 строк) теперь происходит примерно в 6 раз быстрее.

4. Новый OpenGL-рендерер для Linux и FreeBSD

Приложение для GTK получило полностью переработанный конвейер рендеринга без использования устаревшего GtkGLArea. Рендерер рисует кадры через EGL в отдельном потоке с тройной буферизацией (DMABUF).

  • Главный визуальный итог: исправлена размытость текста при дробном масштабировании (например, 125% или 150%) в Linux.

5. Полноценная интеграция с протоколом буфера обмена Kitty (OSC 5522)

Ghostty теперь поддерживает протокол обмена буфера обмена Kitty на macOS и GTK. Это позволяет терминальным приложениям передавать и принимать не только чистый текст, но и изображения, HTML и другие форматы, а также запрашивать доступ к конкретным типам данных в буфере обмена с удобным окном предпросмотра и запросом прав.

6. Улучшения для SSH и утилита ghostty +ssh

Представлен новый удобный CLI-инструмент ghostty +ssh, который автоматически подготавливает удаленный хост (устанавливает terminfo, пробрасывает переменные окружения COLORTERM, TERM_PROGRAM и др.) и запускает стандартный ssh. Теперь можно просто настроить алиас:

alias ssh='ghostty +ssh --'

7. Поддержка macOS 27 (Golden Gate)

Добавлена полная совместимость с macOS 27: исправлено отображение вкладок в стиле tabs (macos-titlebar-style = tabs), устранено появление серых плашек поверх тем при использовании кастомного стиля заголовков, а также сохранена полная обратная совместимость вплоть до macOS 13 (Ventura).

>>> Полный список изменений

★★★★★

Проверено: maxcom ()
Последнее исправление: hobbit (всего исправлений: 7)
Ответ на: комментарий от Lrrr

Вы прикалываетесь все? У вас в тесте глиф z, его отрендерить нужно ровно 1 (один) раз, куда у вас там что просаживается?

BruteForce ★★★★★
()
Ответ на: комментарий от shdown

altwazar, MoldAndLimeHoney, почему urxvt «убогий», «нихрена не умеет и выглядит как привет из «640Kb хватит всем»?

Не поддерживает truecolor, что создаёт проблемы с темами всяких вимов/хеликсов. Не поддерживает даже sixel, предпросмотр изображений в каком-нибудь fm типа yazi просто засирает весь терминал мусором. При этом, какой-нибудь foot тоже с cpu-рендерингом будет быстрее, как и новый ghostty, kitty, alacritty на машинах с нормальным видеодрайвером.

altwazar ★★★★★
()
Ответ на: комментарий от altwazar

По иронии, foot без учёта динамических библиотек как раз умещается в те самые 640 килобайт, с запасом даже))

Lrrr ★★★★★
()
Ответ на: комментарий от Lrrr

Среди простых терминалов, когда не нужны табы, сплиты и всякие доп. фичи, у него конкурентов особо и нет. Быстрый, не жрет, багов не замечал.

altwazar ★★★★★
()
Ответ на: комментарий от altwazar

При этом, какой-нибудь foot тоже с cpu-рендерингом будет быстрее, как и новый ghostty, kitty, alacritty на машинах с нормальным видеодрайвером.

В твиттере отметился автор velocitty, дескать, быстрее.

Как выяснилось чуть позже, он херит свой scrollback.

sarumeister ★
()

Для работы терминала теперь нужно ускорение на GPU? Инженерия, которую мы заслужили.

Xintrea ★★★★★
()
Ответ на: комментарий от Xintrea

Для работы терминала теперь нужно ускорение на GPU?

В разрешениях выше FullHD слишком много пикселей чтобы что-то выводить без 3D-ускорения.

Картинку на разрешениях до FullHD включительно можно выводить и с 2D-ускорением.

Без ускорения можно выводить текстовый режим на ЭЛТ монитор.

ЗЫ. Даже DEC VT100 не был просто «монитором с клавиатурой», у него была дополнительная начинка, включая CPU (Intel 8080) и 3 Кб RAM.

saahriktu ★★★★★
()
Ответ на: комментарий от Xintrea

ы терминала теперь нужно ускорение на GPU?

Много знаешь десктопов/лэптопов без ускорения на GPU?

Инженерия, которую мы заслужили.

Не использовать возможности железа – это инженерия, которую ты желаешь?

MoldAndLimeHoney ★★★
()
Ответ на: комментарий от MoldAndLimeHoney

ы терминала теперь нужно ускорение на GPU?
Много знаешь десктопов/лэптопов без ускорения на GPU?

Мой домашний десктоп на Core2Duo E8400, и в нем нет GPU.

Xintrea ★★★★★
()
Ответ на: комментарий от Xintrea

Для работы терминала теперь нужно ускорение на GPU? Инженерия, которую мы заслужили.

Да е-мое! У тебя текст скроллится снизу вверх. Куски надо вверх бит-блиттить!

sarumeister ★
()

Нечего тут бенчмарками измерять потому что в Ghostty есть более серьёзные проблемы.

Там кириллические шрифты сломаны. Накрепко. Давно.

https://github.com/ghostty-org/ghostty/discussions/12211

Для проверки: echo -e '\033[3mтпоср\033[0m'

Oreolek ★
()
Последнее исправление: Oreolek (всего исправлений: 1)
Ответ на: комментарий от Ja-Ja-Hey-Ho

Но кстати может это не то, о чём говорил автор. Очень не хватает скриншота проблемы с отрисовкой.

Ja-Ja-Hey-Ho ★★★★★
()
Ответ на: комментарий от Ja-Ja-Hey-Ho
info(font_shared_grid_set): font regular: Inconsolata LGC Nerd Font Mono
info(font_shared_grid_set): font bold: Inconsolata LGC Nerd Font Mono Bold
info(font_shared_grid_set): font italic: Inconsolata LGC Nerd Font Mono Italic
info(font_shared_grid_set): font bold_italic: Inconsolata LGC Nerd Font Mono Bold Italic

У меня всё работает. Нужный шрифт, италик. Правда в конфиге шрифты нормально указал:

font-family = "Inconsolata LGC Nerd Font Mono"
font-style-bold = "Bold"
font-style-italic = "Italic"
font-style-bold-italic = "Bold Italic"
altwazar ★★★★★
()
Последнее исправление: altwazar (всего исправлений: 1)
Ответ на: комментарий от altwazar

Похоже тут скорее вопрос к самому шрифту, чем к терминалу.

Сейчас настроил этот же шрифт в Alacritty - всё так же отрисовывает.

Или уже исправили в новом релизе.

Ja-Ja-Hey-Ho ★★★★★
()
Ответ на: комментарий от Ja-Ja-Hey-Ho

Что дефолтный JetBrains Mono, что Nerd из бага нормально показывают италик кириллицу. Единственное, что там наклонное «т», а не «m», в этом проблема? Хотя мне так даже больше нравится.

Скринов да, не хватает. Oreolek, покажешь?

Logopeft ★★★
()
Ответ на: комментарий от Dr64h

Ghostty 1.4.0 (комментарий)

Вы прикалываетесь все? У вас в тесте глиф z, его отрендерить нужно ровно 1 (один) раз, куда у вас там что просаживается?

BruteForce

kitten __benchmark__ --render

kitty 0.48.2
  Only ASCII chars                     : 4.14s      @ 48.3    MB/s
  Unicode chars                        : 3.59s      @ 50.4    MB/s
  Unique multi-codepoint Unicode cells : 47.25s     @ 3.7     MB/s
  CSI codes with few chars             : 4.32s      @ 23.1    MB/s
  Long escape codes                    : 2.97s      @ 264.3   MB/s
  Images                               : 2.23s      @ 239.7   MB/s

foot 1.28.0
  Only ASCII chars                     : 3.46s      @ 57.9    MB/s
  Unicode chars                        : 5.2s       @ 34.8    MB/s
  Unique multi-codepoint Unicode cells : 1m5.62s    @ 2.7     MB/s
  CSI codes with few chars             : 5.74s      @ 17.4    MB/s
  Long escape codes                    : 4.21s      @ 186.4   MB/s
  Images                               : 2.38s      @ 224.0   MB/s

alacritty 0.17.0
  Only ASCII chars                     : 5.13s      @ 39.0    MB/s
  Unicode chars                        : 3.28s      @ 55.2    MB/s
  Unique multi-codepoint Unicode cells : 8.34s      @ 21.0    MB/s
  CSI codes with few chars             : 4.3s       @ 23.3    MB/s
  Long escape codes                    : 15.22s     @ 51.5    MB/s
  Images                               : 2.92s      @ 182.5   MB/s

st-sx 0.9.3
  Only ASCII chars                     : 11.03s     @ 18.1    MB/s
  Unicode chars                        : 6.22s      @ 29.1    MB/s
  Unique multi-codepoint Unicode cells : 5.13s      @ 34.1    MB/s
  CSI codes with few chars             : 6.44s      @ 15.5    MB/s
  Long escape codes                    : 18.43s     @ 42.5    MB/s
  Images                               : 11.33s     @ 47.1    MB/s

ghostty 1.1.3
  Only ASCII chars                     : 6.82s      @ 29.3    MB/s
  Unicode chars                        : 5.7s       @ 31.7    MB/s
  Unique multi-codepoint Unicode cells : 11.79s     @ 14.8    MB/s
  CSI codes with few chars             : 6.8s       @ 14.7    MB/s
  Long escape codes                    : 49.36s     @ 15.9    MB/s
  Images                               : 29.22s     @ 18.3    MB/s

contour 0.4.3
  Only ASCII chars                     : 26.56s     @ 7.5     MB/s
  Unicode chars                        : 22.96s     @ 7.9     MB/s
  Unique multi-codepoint Unicode cells : 15.04s     @ 11.6    MB/s
  CSI codes with few chars             : 15.58s     @ 6.4     MB/s
  Long escape codes                    : 14.89s     @ 52.6    MB/s
  Images                               : 5.08s      @ 105.1   MB/s

wezterm 20240203-110809-5046fc22
  Only ASCII chars                     : 26.18s     @ 7.6     MB/s
  Unicode chars                        : 14.08s     @ 12.8    MB/s
  Unique multi-codepoint Unicode cells : 6m34.82s   @ 0.4     MB/s
  CSI codes with few chars             : 17.32s     @ 5.8     MB/s
  Long escape codes                    : 10.5s      @ 74.7    MB/s
  Images                               : 5.14s      @ 103.8   MB/s

konsole — завис на «Unique multi-codepoint Unicode cells»;

urxvt — завис на «CSI codes with few chars».

Есть ещё vtebench, но готового пакета нет и мне уже лень качать, и собирать растасофт.

Dr64h ★★★★
()
Ответ на: комментарий от Dr64h

kitten benchmark –render

Это не имеет отношения к тому, о чём я говрю. Я отвечал на это

Продолжаю пользоваться foot. И на низкие цифры в искусственных бенчмарках мне глубоко наплевать, т.к. foot во-первых рисует шрифты в HDR с корректным блендингом (из-за 16-битных цветов на пиксель цифры и просаживаются), во-вторых поддерживает очень полезные хоткеи типа «прыгнуть к началу вывода команды».

Терминалы использовали аппаратное ускорение на MDA, CGA, EGA, VGA в виде встроенного в видеокарту знакогенератора. Затем перешли на софтовый рендеринг глифов и стали медленнее. GPU позволяет рендерить глифы снова быстро.

Это какое-то бредовое объяснение необходимости юзать рендеринг на GPU для терминала и это ещё более бредовое «объяснение» почему новые терминалы тормозят.

P.S.:

RTX 4060M 580.178.04

__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia kitty 0.45.0
  Only ASCII chars         : 1.97s      @ 101.4   MB/s
  Unicode chars            : 2.14s      @ 84.7    MB/s
  CSI codes with few chars : 1.93s      @ 51.7    MB/s
  Long escape codes        : 2.89s      @ 271.5   MB/s
  Images                   : 2.64s      @ 202.3   MB/s

urxvt v9.31 - released: 2023-01-02
  Only ASCII chars         : 1.44s      @ 138.4   MB/s
  Unicode chars            : 1.89s      @ 95.5    MB/s
  CSI codes with few chars : 615.81ms   @ 162.4   MB/s
  Long escape codes        : 8.93s      @ 87.8    MB/s
  Images                   : 3.35s      @ 159.4   MB/s

UHD 770 Mesa

kitty
  Only ASCII chars         : 1.41s      @ 142.3   MB/s
  Unicode chars            : 1.61s      @ 112.2   MB/s
  CSI codes with few chars : 2.12s      @ 47.1    MB/s
  Long escape codes        : 2.36s      @ 331.7   MB/s
  Images                   : 1.8s       @ 295.6   MB/s

urxvt выдает разумеется те же числа
  Only ASCII chars         : 1.44s      @ 139.3   MB/s
  Unicode chars            : 1.9s       @ 95.4    MB/s
  CSI codes with few chars : 591.51ms   @ 169.1   MB/s
  Long escape codes        : 8.88s      @ 88.3    MB/s
  Images                   : 3.3s       @ 161.7   MB/s

BruteForce ★★★★★
()
Последнее исправление: BruteForce (всего исправлений: 1)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.