HN Debrief

Show HN: Shitty – fast terminal. Memory-unsafe and faster than yours

  • Developer Tools
  • Open Source
  • Programming
  • AI
  • Infrastructure

The post introduced a new terminal emulator, “shitty,” positioned as a very fast text terminal with benchmark charts against terminals like Ghostty, Alacritty, Kitty, Foot, and GNOME Terminal. The author also leaned into two other hooks: it is written in C++ rather than Rust, and the direct code production was done entirely with an LLM under human review. That combination got attention, but the substance people focused on was narrower. The speed claims looked plausible as an engineering feat, especially around parsing and screen updates, yet most readers did not buy throughput as the deciding metric for choosing a terminal in 2026.

If you build developer tools, benchmark the thing users actually feel. Throughput headlines get attention, but adoption will hinge on startup, interaction latency, protocol support, packaging, and trust in maintenance and licensing.

Discussion mood

Mostly amused and mildly impressed, with a strong layer of skepticism. People respected the optimization work and enjoyed the audacity, but kept questioning whether throughput matters much for real users, whether the AI-generated code and licensing plan inspire trust, and whether the project has enough compatibility and polish to justify switching.

Key insights

  1. 01

    Ragel parser is the real technical novelty

    What stands out is not just that the terminal is fast, but that the parser is described in Ragel as one large generated finite-state machine. That is a serious implementation choice for terminal emulation, where correctness and edge-case handling usually turn into messy handwritten parser code. If the claim is right that this is a full terminal output parser expressed as an FSM, the project is valuable as a parsing artifact even for people who never use the terminal itself.

    If you care about parser-heavy infrastructure, inspect parser.rl before you look at the benchmark charts. The implementation approach may be more reusable than the app and could inform your own protocol parsers.

      Attribution:
    • quotemstr #1
    • pg83 #1
  2. 02

    Benchmark results are already stale

    The headline speed comparison is less settled than it looks because Ghostty's maintainer said the tested release is behind current performance work by a lot, with ASCII processing reportedly up by about 2.8x on one machine. The author agreed to wait for official binaries rather than self-build from Zig sources, and another commenter pointed out that nightly builds already exist. That means the benchmark table is a moving target, not a durable ranking.

    Treat terminal benchmark posts like snapshots, not league tables. If you are making a tooling decision, rerun on current builds and your own workload instead of relying on published release-to-release comparisons.

      Attribution:
    • mitchellh #1
    • pg83 #1 #2
    • lr1970 #1
  3. 03

    Startup time is a bigger switching trigger

    For many people the fastest terminal is the one that appears before they start typing. Several comments called out startup delay as the only performance issue they reliably feel, and pointed to old single-instance or factory models in Alacritty, Kitty, and urxvt as practical fixes. The author had no startup numbers, which left a hole in the pitch because users often judge terminals by launch feel long before they hit a throughput edge case.

    If you ship an interactive desktop tool, always publish cold-start and warm-start numbers. Raw throughput will not compensate for a first impression that feels laggy.

      Attribution:
    • marvinborner #1
    • christophilus #1
    • boltzmann64 #1
    • Evidlo #1
    • skydhash #1
    • porridgeraisin #1
    • pg83 #1
  4. 04

    Throughput matters when logs block the producer

    The practical case for very fast terminals is not human reading speed. It is preventing stdout-heavy programs, test suites, and builds from stalling because terminal rendering cannot keep up. Several anecdotes backed this up, including Java builds and Jenkins test runs that sped up noticeably once logging was reduced or screen updates were avoided. That reframes the benchmarks from a toy contest into a backpressure problem.

    When a build or test job feels mysteriously slow, measure logging volume before you blame the compiler or runtime. Redirecting, throttling, or batching terminal output can buy back surprising amounts of wall time.

      Attribution:
    • thayne #1
    • genxy #1
    • the_onion_hater #1
    • Bulat_Ziganshin #1
    • nine_k #1
    • tdeck #1
  5. 05

    Missing terminal protocols limit the comparison

    The speed story is cleaner than the product story because the project does not currently plan to support Sixel, Kitty graphics, or Kitty keyboard protocol. Those features carry real implementation and rendering costs, and many modern terminal users care about them. Comparing a lean text-first terminal against feature-rich terminals without that caveat makes the benchmark less decision-useful.

    When you compare developer tools on performance, line up feature scope first. A stripped-down implementation may be the right product, but it is not a like-for-like replacement for every workload.

      Attribution:
    • elitepleb #1
    • pg83 #1
    • d3Xt3r #1

Against the grain

  1. 01

    urxvt under X11 is still faster

    A commenter posted their own local benchmark showing urxvt at roughly 122 MiB/s on ASCII output, ahead of the new entrant and the newer GPU-forward terminals. That cuts against the idea that recent terminal architecture automatically wins on raw text throughput. Old, battle-tested designs can still dominate specific workloads.

    Do not assume newer rendering stacks beat older ones by default. Keep a few boring incumbents in your benchmark set, especially when the workload is simple text output.

      Attribution:
    • rdslw #1
  2. 02

    iTerm2 may not belong in the slow lane

    The omission of iTerm2 drew pushback from someone who claimed it outperforms Kitty and Ghostty, while another commenter posted a contrary benchmark where iTerm2 lagged badly behind Ghostty and WezTerm. The useful point is not that iTerm2 wins, but that terminal performance varies enough by workload and machine that excluding a major terminal based on prior impressions weakens the benchmark story.

    If you publish comparative benchmarks, include the obvious incumbents even when you expect them to lose. Otherwise readers will spend more time debating the test matrix than learning from the result.

      Attribution:
    • krackers #1
    • jitl #1
    • collinvandyck76 #1
    • pg83 #1
  3. 03

    Trust and maintenance beat benchmark wins

    Some people simply will not switch to a terminal that may lose maintainer interest quickly, especially when the code is openly described as 100% LLM-generated according to specification. Another commenter argued that this does not really distinguish it from projects that use AI more quietly, but the explicit branding still changes perception. For infrastructure tools, reputation and review discipline carry more weight than a one-time speed lead.

    If you want adoption for a core developer tool, expect readers to evaluate your maintenance posture as hard as your code. Publish roadmaps, release cadence, and review practices alongside benchmarks.

      Attribution:
    • scuppernong #1
    • bearead #1
    • throwatdem12311 #1
    • pg83 #1 #2
    • gertop #1

In plain english

ASCII
American Standard Code for Information Interchange, the basic text character set often used as shorthand for plain text output.
copyleft
A licensing approach that lets people use and modify software but requires redistributed derivatives to keep the same sharing obligations.
FSM
Finite state machine, a model for code that moves through defined states based on input and triggers actions on transitions.
fuzzing
An automated testing technique that feeds many random or malformed inputs to software to find crashes and bugs.
GPL
GNU General Public License, a copyleft software license that requires derivative works distributed to others to keep sharing source code under the same license terms.
GPU
Graphics processing unit, hardware specialized for drawing graphics and parallel computation.
Kitty keyboard protocol
A Kitty terminal extension that sends richer keyboard input information than traditional terminal key handling.
LLM
Large language model, a type of AI system trained to predict and generate text, including code.
macOS
Apple’s desktop operating system for Mac computers.
MIT
A very permissive open source software license that allows broad reuse with minimal restrictions.
Ragel
A tool for generating state-machine-based parsers and protocol handlers from a formal description.
Sixel
A bitmap graphics format and terminal protocol that lets terminals display images inline.
stdout
Standard output, the default stream where a program writes normal text output.
urxvt
rxvt-unicode, an older lightweight terminal emulator popular on X11 systems.
Wayland
A modern Linux display server protocol that applications use to draw windows on screen.
X11
The long-standing window system used on many Unix and Linux desktops before Wayland.
Zig
A systems programming language and its tooling ecosystem, used here because Ghostty is built with it.

Reference links

Benchmarks and terminal performance references

Terminal implementation and protocols

  • Ragel
    Cited as the parser generator used to encode the terminal state machine.
  • shitty parser.rl
    Direct link to the Ragel parser source called out as the project's most interesting technical piece.
  • monstar
    Mentioned as another fast Wayland terminal that leverages libghostty.

Licensing and Windows Terminal history

Other references mentioned in passing