|
Опубликован первый релиз эмулятора терминала Shitty, позиционируемого автором как "серьёзный эмулятор терминала с глупым названием". Проект написан на C++23 (сbundled libstd, требующей -std=c++26) и распространяется под двойной лицензией MIT и GPL-3.0. Поддерживаются macOS и Linux. При разработке используется AI-ассистент.
Проект делает ставку на обеспечение низких задержек, быстрого запуска и предсказуемого потребления ресурсов: состояние терминала обрабатывается на CPU, а отрисовка выполняется через бэкенды на базе Vulkan в Linux и Metal в macOS, без использования стороннего графического тулкита. При тестировании производительности вывод 100 МБ ASCII через терминал Shitty показывает ~118 МиБ/с, обгоняя alacritty (0.81 с против 0.96 секунд), kitty и ghostty. На "случайных байтах" с некорректным UTF-8 отрыв от alacritty ещё заметнее (~51 МиБ/с против ~31 МиБ/с).
Корректность работы обеспечивается более чем 5000 тестами, собранными из десятка с лишним внешних наборов - kitty, esctest, vttests из xterm, vttest, tack, libvterm, libtsm, alacritty, ghostty, contour, konsole, mosh. Тесты выполняются с проверкой работы на реальном PTY.
Среди прочих особенностей - работа с графемными кластерами вместо codepoint-ов (emoji-последовательности), изменение размера без мерцания (кадры отрисовываются в той же транзакции, что и изменение границ), ленивая растеризация глифов с постоянным GPU-кешем. Имеется поддержка VT52–VT5xx, расширений xterm, протоколов клавиатуры и мыши Kitty/SGR/urxvt, отображения гиперссылок (OSC 8) и интеграции с командной оболочкой. Шрифты встраиваются в исполняемый файл st, что позволяет запускать приложение даже в системе без установленных шрифтов.
|