Shitty: терминал с глупым именем и серьёзными амбициями

· Linux и open source
Автор pg83 представил Shitty — эмулятор терминала, который, судя по бенчмаркам, обгоняет alacritty, kitty и ghostty, но откровенно признаёт свою «небезопасность по памяти».

cover.svg

На Hacker News появился проект с намеренно провокационным названием — Shitty, «серьёзный эмулятор терминала с глупым именем». Слоган не менее вызывающий: «Молниеносно быстрый. Небезопасен по памяти и быстрее вашего». За шуткой скрывается вполне инженерная работа: это полная переработка терминала Zutty Тома Силадьи, от которого Shitty сохранил лишь родословную, заменив архитектуру, рендерер, интеграцию с платформой и стратегию тестирования.

Скорость

Автор приводит замеры на MacBook с процессором Apple: через каждый терминал прогонялось 100 МБ данных при одинаковых настройках шрифта, размера ячейки и сетки. На печатном ASCII Shitty показал ~118 МиБ/с, опередив alacritty (~99), kitty (~75) и ghostty (~64). На потоке случайных байтов — худшем случае для парсера с постоянно невалидным UTF-8 — отрыв ещё заметнее: ~51 МиБ/с против ~31 у alacritty и ~21 у ghostty. Kitty этот тест попросту «пропустил»: вместо отрисовки он реагировал на мусорные escape-последовательности сменой заголовка и звонками.

Что внутри

Состояние терминала держится на CPU, а ячейки рендерятся нативными вычислительными бэкендами: Vulkan на Linux и Metal на macOS. Разработчик упирает на надёжность: парсер представляет собой тотальный конечный автомат, а cat /dev/urandom здесь — не баг-репорт, а штатный бенчмарк. Тестовая база превышает 5000 проверок, собранных более чем из десятка чужих наборов — kitty, esctest, vttest, libvterm, konsole, mosh и других — и прогоняемых через настоящий PTY.

Отдельно отмечены корректная работа с Unicode (ячейка — это графемный кластер, а не кодовая точка), поддержка эмодзи, комбинирующих символов и двойной ширины, а также самодостаточность: шрифты вшиты в единственный небольшой бинарник, поэтому терминал запускается даже на машине вообще без установленных шрифтов. По умолчанию приложениям запрещено читать выделенный текст и управлять окном хоста — эти права нужно выдавать явно.

Лицензии и оговорки

Shitty написан на C++23 и собирается Clang. Проект переходит с унаследованной от Zutty лицензии GPL на MIT: новый код лицензируется двойным образом, но пока в дереве остаётся GPL-код, распространение сборки подчиняется GPL. Из ограничений автор честно называет отсутствие двунаправленного текста и графических протоколов вроде sixel.


Источник: Hacker News

Комментарии

Войдите, чтобы комментировать.

  • Пока нет комментариев.