Изданието на терминалния емулатор Ghostty 1.0.0 е публикувано, използващо GPU за ускоряване на визуализацията на съдържанието. Проектът е ръководен от Митчел Хашимото (Mitchell Hashimoto), съосновател на компанията HashiCorp и създател на проекти като Vagrant и Terraform. Авторът на Ghostty се опитва да внедри три характеристики в новия терминален емулатор — висока производителност, обширна функционалност и интерфейс, който изглежда роден за всяка поддържана платформа. Кодът на проекта е написан на езика Zig и е разпространен под MIT лиценз. Готовите сборки са създадени за Linux и macOS.
За изграждането на интерфейса в сборките за Linux е използвана библиотеката GTK, а за macOS — фреймворкът SwiftUI, което позволява използването на стандартни за всяка платформа диалози, менюта, интерфейс за промяна на настройки и стилизация на прозорците. За ускоряване на визуализацията в Linux се използва графичният API OpenGL, а в macOS — Metal. Производителността също е повишена благодарение на използването на отделен поток за вход/изход.
В проведените тестове Ghostty се оказа 4 пъти по-бърз от терминалните емулатори iTerm и Kitty и 2 пъти по-бърз от Terminal.app, когато се визуализира съдържанието на голям файл, например, с команда «cat big_file.txt». При сравнение с Alacritty производителността на Ghostty беше на приблизително същото ниво, но Alacritty изостава по функционалност от Ghostty.
В терминала могат да се показват emoji, хипервръзки, сложни графеми и лигатури (сливане на няколко символа в един, например, «æ»). За визуализиране на изображения директно в терминала може да се използва протоколът Kitty. За вграждане на функционалността на Ghostty в други приложения се разработва библиотеката libghostty, съвместима с проекти на C и позволяваща бърза интеграция на терминалния емулатор в собствените ни продукти.
Интерфейсът поддържа тъмни и светли теми, разделяне на прозорците за едновременно показване на няколко сесии, преминаване между сесиите чрез табове. Терминалът отговаря на изискванията на стандарта ECMA-4, но също така поддържа и разширения и escape последователности, които не са част от стандарта, например, предлаганите в xterm.
Източник: opennet.ru
