The release of Ghostty terminal emulator 1.0.0 has been published, utilizing GPU to accelerate content rendering. The project is developed by Mitchell Hashimoto, co-founder of HashiCorp and creator of projects like Vagrant and Terraform. The author of Ghostty aims to incorporate three qualities in the new terminal emulator: high performance, extensive functionality, and an appearance that feels native to each supported platform. The project's code is written in Zig and is distributed under the MIT license. Pre-built binaries are available for Linux and macOS.
For the interface development in the Linux builds, the GTK library is used, while for macOS, the SwiftUI framework allows for the incorporation of native dialogs, menus, settings adjustments, and window styling for each platform. Rendering acceleration in Linux utilizes the OpenGL graphics API, while on macOS, Metal is employed. Performance is also enhanced through the use of a separate thread for input/output.
In tests, Ghostty proved to be four times faster than the iTerm and Kitty terminal emulators, and twice as fast as Terminal.app when displaying the contents of a large file, such as with the command 'cat big_file.txt'. In comparison with Alacritty, Ghostty's performance was about the same, but Alacritty lags behind Ghostty in terms of functionality.
The terminal can display emoji, hyperlinks, complex graphemes, and ligatures (the merging of several symbols into one, such as 'æ'). The Kitty protocol can be used to display images directly in the terminal. For embedding Ghostty's functionality into other applications, the libghostty library is being developed, which is compatible with projects in C and allows for quick integration of the terminal emulator into products.
The interface supports both dark and light themes, window splitting for simultaneous display of multiple sessions, and session switching via tabs. The terminal complies with the ECMA-4 standard but also supports extensions and escape sequences not included in the standard, such as those offered in xterm.
Source: opennet.ru
