· via Hacker News – Front Page (hnrss.org)
Ghostty 1.4.0 ships complete Kitty graphics support with up to 55% faster macOS I/O
Ghostty 1.4.0 becomes the first terminal outside Kitty itself to fully implement the Kitty graphics protocol, alongside scrollback compression, large I/O speedups and a batch of security fixes.

The Ghostty terminal emulator has published version 1.4.0, a milestone update delivering large performance and memory improvements and a complete implementation of the Kitty graphics protocol — a first for any terminal other than Kitty itself, according to the project's release notes.
Seven months of work
The release represents seven months of development, spanning 2,889 commits from 172 contributors. Beyond the headline features, the notes describe hundreds of smaller fixes and improvements across every platform Ghostty supports, plus a batch of security patches.
First full Kitty graphics implementation outside Kitty
Ghostty now supports animation and relative placements, the last two major missing pieces of the Kitty graphics protocol. Animated images, such as a GIF shown with kitten icat, now play inside the terminal instead of displaying a single still frame, with frame transmission, composition and playback control all supported. Animations pause while the terminal window is not visible. Relative placements let a program position one image relative to another, so a child image moves along with its parent.
The maintainers also ran a conformance pass against the specification and against Kitty itself, fixing dozens of behavioral differences. Images now scroll with text inside scroll regions, retransmitting an image ID replaces the old image, and invalid image data now returns an error instead of silence, which could previously leave clients hanging.
Image handling is faster as well. Image payloads are parsed in bulk with SIMD rather than one byte at a time, making large image transfers about 16x faster to parse in the project's benchmarks, measured on 64 MiB of image data on x86_64 Linux.
With these additions, Ghostty and its library libghostty cover 100% of the published specification — the first terminal to do so outside Kitty.
Faster I/O and parsing
One of the biggest gains came from a surprising discovery: on macOS, the kernel caps every read from a pseudo-terminal at roughly 1 KiB no matter how large the read buffer is. Ghostty previously processed each read as it arrived, paying per-read overhead every kilobyte while the writing program sat blocked during parsing.
Ghostty 1.4 now reads the pty on one thread while parsing happens on another, raising end-to-end I/O throughput by 25% to 55% on macOS compared with 1.3.x, measured on an M4 Max with plain and Unicode text.
The VT parser is also quicker: benchmark throughput on plain ASCII text rose from 128 MB/s to 725 MB/s, a 5.7x improvement, CJK text processing got 3.4x faster, and a 2.6 GB dataset of real-world asciinema terminal recordings processes about 25% faster. Together these changes cut the time to cat a 150 MB text file on macOS from 1.5 seconds to 566 milliseconds.
Lower memory use
Ghostty now transparently compresses scrollback that is not visible, reducing the physical memory those pages use by 70% to 90% for typical text-heavy history. Compression only runs while the terminal is idle, and pages are decompressed on demand when scrolling back or searching, so the project reports no measurable impact on I/O throughput. The feature is available on macOS and 64-bit Linux, and thanks to it the default scrollback limit was raised from 10 MB to 50 MB per terminal, with a full scrollback generally using less physical memory than the old 10 MB limit did.
Elsewhere, a new empty terminal now uses about 16 KiB of terminal page memory on macOS, down from 128 KiB in 1.3.1; freed scrollback memory is returned to the OS instead of being held until the terminal closes; and hidden tabs release their GPU resources, dropping GPU memory from roughly 385 MiB to 18 MiB on macOS with one visible and 20 hidden tabs. Rebuilding a tab takes under a millisecond.
Security fixes
The release closes a string of advisories. Most notably, malicious Kitty graphics commands could previously crash or hang Ghostty, force huge allocations, or in limited cases read or delete files outside the allowed temporary directories, requiring only that malicious output be displayed. Other fixes address paste protection failing to treat carriage returns as line endings, crashes via tmux control mode layouts, scrollback memory corruption in small scrollback limits, zsh shell integration sending arbitrary escape sequences from crafted directory names, and on macOS, command-clicking crafted hyperlinks potentially leading to arbitrary command execution. The maintainers say CVEs have been requested but not yet assigned by GitHub.
macOS 27 support
Ghostty 1.4 supports macOS 27, code-named Golden Gate, largely through compatibility fixes covering tab layouts, the native tab bar's appearance, and other visual issues. The release remains fully compatible back to macOS 13 Ventura.
Why it matters
Ghostty is a fast-growing open-source terminal, and this release pushes three fronts at once: protocol completeness, throughput and memory footprint. Being the first non-Kitty terminal with a complete Kitty graphics implementation removes a compatibility barrier for image-heavy terminal applications such as viewers, file managers and charts. The security fixes — several exploitable simply by displaying malicious output or entering a directory from an untrusted clone — are reason enough for existing users to update. And the macOS pty discovery shows that even the oldest layers of terminal I/O still hide significant, fixable inefficiencies.
- #terminal
- #open-source
- #performance
- #ghostty
- #kitty-graphics