È stato pubblicato il rilascio dell'emulatore di terminale Ghostty 1.0.0, che utilizza la GPU per accelerare il rendering del contenuto. Il progetto è sviluppato da Mitchell Hashimoto, cofondatore di HashiCorp e creatore di progetti come Vagrant e Terraform. L'autore di Ghostty cerca di realizzare nella nuova emulatore di terminale tre qualità: alte prestazioni, funzionalità estese e un'interfaccia che appare nativa per ogni piattaforma supportata. Il codice del progetto è scritto in Zig e distribuito con licenza MIT. Le build pronte sono state create per Linux e macOS.
Per costruire l'interfaccia nelle build per Linux è stata utilizzata la libreria GTK, mentre per macOS è stato impiegato il framework SwiftUI, il che ha permesso di utilizzare dialoghi, menu, interfaccia per cambiare le impostazioni e stili di finestra nativi per ciascuna piattaforma. Per accelerare il rendering in Linux si utilizza l'API grafica OpenGL, mentre in macOS si utilizza Metal. Le prestazioni sono anche migliorate grazie all'uso di un thread separato per l'input/output.
Nei test condotti, Ghostty si è rivelato più veloce degli emulatori di terminale iTerm e Kitty di 4 volte, e di 2 volte rispetto a Terminal.app, durante la visualizzazione del contenuto di un grande file, ad esempio con il comando «cat big_file.txt». Rispetto ad Alacritty, le prestazioni di Ghostty erano circa sui medesimi livelli, ma Alacritty è indietro in termini di funzionalità rispetto a Ghostty.
Nel terminale possono essere visualizzati emoji, hyperlink, grafemi complessi e legature (fusione di più simboli in uno, ad esempio «æ»). Per visualizzare direttamente le immagini nel terminale può essere utilizzato il protocollo Kitty. Per integrare la funzionalità di Ghostty in altre applicazioni è in fase di sviluppo la libreria libghostty, compatibile con i progetti in C e che consente di integrare rapidamente l'emulatore di terminale nei propri prodotti.
L'interfaccia supporta temi scuri e chiari, la suddivisione della finestra per visualizzare simultaneamente più sessioni e il passaggio tra le sessioni tramite schede. Il terminale è conforme agli standard ECMA-4, ma supporta anche estensioni e sequenze di escape non incluse nello standard, ad esempio quelle proposte in xterm.
Fonte: opennet.ru
