Shitty: a terminal with a dumb name and serious ambitions
Translated by a model; the original is in Russian.
A project with a deliberately provocative name has surfaced on Hacker News — Shitty, “a serious terminal emulator with a dumb name.” The tagline is no less brazen: “Blazing fast. Memory-unsafe and faster than yours.” Behind the joke lies genuine engineering work: it's a complete overhaul of Tom Szilagyi's Zutty terminal, from which Shitty has kept only the lineage, replacing the architecture, the renderer, the platform integration and the testing strategy.
Speed
The author offers measurements taken on a MacBook with an Apple processor: 100 MB of data was pushed through each terminal with identical font, cell-size and grid settings. On printable ASCII, Shitty clocked in at ~118 MiB/s, ahead of alacritty (~99), kitty (~75) and ghostty (~64). On a stream of random bytes — the worst case for a parser, with constantly invalid UTF-8 — the lead is even wider: ~51 MiB/s against alacritty's ~31 and ghostty's ~21. Kitty simply “skipped” this test: instead of rendering, it responded to the garbage escape sequences by changing its title and ringing the bell.
What's inside
The terminal state is held on the CPU, while the cells are rendered by native compute backends: Vulkan on Linux and Metal on macOS. The developer emphasizes reliability: the parser is a total finite-state machine, and cat /dev/urandom here is not a bug report but a routine benchmark. The test base exceeds 5,000 checks, gathered from more than a dozen other people's suites — kitty, esctest, vttest, libvterm, konsole, mosh and others — and run through a real PTY.
Special mention goes to correct Unicode handling (a cell is a grapheme cluster, not a code point), support for emoji, combining characters and double width, as well as self-sufficiency: the fonts are baked into a single small binary, so the terminal launches even on a machine with no fonts installed at all. By default, applications are forbidden from reading selected text or controlling the host window — these rights have to be granted explicitly.
Licenses and caveats
Shitty is written in C++23 and built with Clang. The project is moving from the GPL license inherited from Zutty to MIT: the new code is dual-licensed, but as long as GPL code remains in the tree, distributing a build is governed by the GPL. Among the limitations, the author honestly names the absence of bidirectional text and of graphics protocols such as sixel.
Source: Hacker News
Comments
Sign in, to comment.