
Ghostty 1.4.0
Release notes for Ghostty 1.4.0, released on October 27, 2026.
以下正文同步自 Hacker News,版权归原站所有,已转换为易读排版。
Install
Release Notes
1.4.0
Ghostty 1.4.0
Release notes for Ghostty 1.4.0, released on October 27, 2026.
Ghostty 1.4.0 is a major release that includes large performance and memory improvements, a 100% complete Kitty graphics implementation including animation and relative placements (the first non-Kitty terminal to do so), SSH integration improvements, and hundreds more improvements and fixes across all platforms.
This release features 7 months of work with changes from 172 contributors over 2,889 commits. Thank you to all the contributors, maintainers, community moderators, translators, packagers, and users who each helped make this release possible.
These release notes are painstakingly and lovingly hand-crafted by human Ghostty maintainers, including the full changelog. They take a combined 16+ hours to write, so please enjoy. 🥰
Ghostty is non-profit! Please support development.Almost all donations go directly to paying contributors. Learn more about how you can help.
Learn more → Security
GHSA-4hwh-wx3w-3fqg. Paste protection didn't treat carriage returns as line endings, so a paste could run a command without confirmation in programs that don't use bracketed paste. This requires user interaction (copy-paste) to trigger.
GHSA-mhff-mv4q-fp63. Malicious Kitty graphics commands could crash or hang Ghostty, force huge allocations, or in limited cases read or delete files outside the allowed temporary directories. This only requires displaying malicious output.
GHSA-hcr9-7hcr-mjm8. Malicious terminal output could crash Ghostty, closing every window, via tmux control mode. tmux doesn't need to be installed. This affects Ghostty 1.3.0 and 1.3.1.
GHSA-hp9c-qp4q-cpw3. The same impact as above, via a tmux control mode layout with a zero-sized or oversized pane. This affects Ghostty 1.3.0 and 1.3.1.
GHSA-w9q4-5jvv-mcv4. Clearing the screen into scrollback could corrupt memory if it deleted the scrollback page holding a styled or hyperlinked cursor. This only requires displaying malicious output, but only with a small scrollback-limit such as 0. The default isn't known to be affected.
GHSA-2r63-vmw6-3m3c. A crafted directory name could make the zsh shell integration send arbitrary escape sequences, such as silently replacing the clipboard via OSC 52. bash was affected in a more limited way. This only requires cd-ing into a directory from untrusted content, such as a cloned repository.
macOS: GHSA-cw69-wm67-5pv8. Cmd-clicking a crafted OSC 8 hyperlink could open unsafe local files or custom URL schemes, leading to arbitrary command execution. Ghostty now blocks unsafe targets and confirms custom URL schemes. This requires user interaction (cmd-click) to trigger.
macOS: GHSA-mfw9-xcr3-7gfp. The same issue as above for links detected by the link configuration, including the default URL matcher. This requires user interaction (cmd-click) to trigger.
macOS: GHSA-v8cw-fg4j-jcc4. Drag-and-drop text skipped paste protection, with the same impact as above. This requires user interaction (drag-and-drop) to trigger.
macOS: GHSA-mxqx-236q-wrv7. Opening a file whose name contains control characters could run a different command than the one shown in the confirmation dialog. This requires a crafted file on your system and confirming the dialog.
Note: I requested CVEs for the above advisories weeks ago, but GitHub hasn't assigned them yet. If/when they're assigned, I will update the above with proper CVE numbers.
macOS 27 Support
PRs: #12999 #13069 #13393 #14413 #14414
Ghostty 1.4 supports macOS 27 (Golden Gate). Most of the work was compatibility fixes:
Ghostty 1.4 remains fully compatible with prior macOS versions back to and including macOS 13 (Ventura). See the system requirements for more details.
Ghostty 1.3.1 works on macOS 27, but it has some of the visual issues listed above, such as the gray tab bar.
PRs: #13943 #13939 #13935 #13934 #13893 #13933 #13389 #13270 #13281
Ghostty now supports Kitty graphics animation and relative placements. These were the last major features of the Kitty graphics protocol that Ghostty didn't support.
Programs that display animated images with the Kitty protocol, such as an animated GIF shown with kitten icat, now animate in Ghostty instead of showing a single still frame. Frame transmission, composition, and playback control are all supported, and animations pause while the terminal isn't visible. Relative placements let a program position one image relative to another image's placement, so the child image moves along with its parent.
We also did a full conformance pass against the specification and Kitty itself, fixing dozens of behavioral differences. For example, images now scroll with text inside scroll regions (#4323 ), retransmitting an image ID replaces the old image (#6711 ), and invalid image data now gets an error response instead of silence, which could leave clients hanging. The full list is in the terminal capabilities section.
Kitty graphics are faster, too. Image payloads are now parsed in bulk with SIMD instead of one byte at a time, making large image transfers about 16x faster to parse in our benchmarks (64 MiB of image data, x86_64 Linux), and drawing images costs much less per frame.
Our Kitty graphics implementation now covers 100% of the published specification, making Ghostty (and libghostty) the first terminal to do this outside of Kitty itself.
PRs: #13264 #13473 #13240 #13245 #14130 #14137 #14138 #14017
Ghostty now transparently compresses scrollback that isn't 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 you scroll back or search, so it has no measurable impact on I/O throughput.
Thanks to compression, the default scrollback limit has been raised from 10 MB to 50 MB per terminal. On platforms that support compression, a full scrollback still generally uses less physical memory than the old 10 MB limit did.
Compression lowers resident (physical) memory, not virtual memory, so look at resident memory when measuring it. It is currently available on macOS and 64-bit Linux.
Beyond scrollback, memory usage is lower in many places:
PRs: #13209 #13220 #13226 #13227 #13537 #13827 #13587 #14011 #13722 #14035 #12760
There are performance improvements across the board in Ghostty 1.4 that yield significant gains compared to prior Ghostty versions.
The biggest win came from a surprising discovery: on macOS, the kernel caps every read from a pty at about 1 KiB no matter how large the read buffer is. Previously, Ghostty processed each read as it arrived, so per-read overhead was paid every kilobyte, and the program writing output sat blocked while we parsed. Ghostty now drains the pty on one thread while parsing on another, raising end-to-end I/O throughput by 25% to 55% on macOS (M4 Max, plain and Unicode text) over Ghostty 1.3.x.
VT processing itself is also much faster. In parser benchmarks, plain ASCII text went from 128 MB/s to 725 MB/s (5.7x), CJK text got 3.4x faster, and a 2.6 GB dataset of real-world terminal recordings from asciinema is processed about 25% faster. Together, these changes took cat-ing a 150 MB text file on macOS from 1.5 seconds to 566 milliseconds.
The GTK app has a new rendering pipeline. It no longer uses GtkGLArea. Instead, the renderer draws with EGL on its own thread, exports each frame as a DMABUF, and hands it to GTK to display. Rendering is now triple-buffered, which should greatly reduce tearing, and no OpenGL calls run on the main thread anymore, which let us remove a number of workarounds.
The most visible result is crisp text under fractional scaling. Text and box-drawing characters are no longer blurry with fractional display scaling such as 125% or 150% (#1938 ). We fixed this once before, but it came back after upstream GTK changes. Ghostty now renders at the window's true fractional scale, so every rendered pixel maps to exactly one pixel on screen.
The new render surface needs a system EGL library (see Changes for Package Maintainers). On GPU drivers that can't export DMABUFs, Ghostty falls back to copying frames through the CPU, which is slower but works.
PRs: #13962 #13993 #13995 #13998 #14002 #14061
Ghostty now implements the Kitty clipboard protocol (OSC 5522) on both macOS and GTK. Ghostty 1.3 could parse the protocol but didn't implement it.
OSC 52 can only read and write plain text. The Kitty clipboard protocol lets programs running in the terminal read and write any kind of clipboard data, such as images or HTML, and lets them pick among the formats on the clipboard. Programs can also enable paste events (mode 5522), which tell the program what formats a paste contains so it can read the one it wants. This is how a terminal program can accept a pasted image, for example.
Clipboard access follows the existing clipboard-read and clipboard-write configurations. By default, reads prompt for permission and writes are allowed. The permission prompt shows a preview of the clipboard contents, including images. Programs that send a password can have your answer remembered for the rest of that terminal session. A new clipboard-write-limit-bytes configuration limits the size of a single write (default 64 MiB). A write over the limit fails and leaves the clipboard untouched.
You can now rearrange splits on GTK by dragging them, matching the macOS feature introduced in Ghostty 1.3. When a tab has two or more splits, each split shows a drag handle at the top. Grab the handle and drop the split onto any other split, including splits in other tabs and windows. An overlay shows which side of the target split it will land on. The terminal contents, working directory, and running processes all move with it.
A new drag-handle configuration controls when drag handles are shown on both macOS and GTK: auto (default), always, or never. With never, splits can't be rearranged with the mouse. Hiding the handles was a common request from users who found them in the way.
On GTK, splits can only be dropped onto other splits. Dragging a split out to create a new tab or window is macOS-only.
PRs: #14454 #13494 #14483 #14538 #14673 #14375 #14144
Ghostty 1.4 includes dozens of improvements to core terminal emulation. We now run esctest, Thomas Dickey's terminal conformance suite, against Ghostty's terminal core in CI. Alongside that, we fixed many differences from xterm in cursor movement within margins, tab stops, character sets, mode reports, and more. You can find the full list of related changes in the terminal capabilities section.
Ghostty also supports several new sequences, including soft terminal reset (DECSTR), extended cursor position reports (DECXCPR), backarrow key mode (DECBKM), and screen size reports in characters (CSI 19 t). Programs can also now ask whether the terminal is visible using visibility reports (mode 2033), so they can stop rendering while hidden.
Keyboard encoding also matches xterm more closely, with fixes for modifyOtherKeys mode 2 and legacy Alt-as-Escape encoding of non-ASCII keys.
Two new sequences are disabled by default because they can be abused by untrusted programs, including ones running on a remote machine:
Allow programs to resize the window (CSI 8 t)
vt-window-resize-allowed = true
Allow programs to request screen checksums (DECRQCRA)
vt-xt-checksum-report = true
SSH Integration with ghostty +ssh
PRs: #12582 #12814 #13533 #13844 #14472 #14854
Ghostty 1.2 introduced SSH shell integration features as a work in progress. In Ghostty 1.4, they're backed by a new ghostty +ssh CLI action: a drop-in ssh wrapper that prepares the remote session for Ghostty and then runs the real ssh with your arguments forwarded unchanged.
ghostty +ssh user@example.com
Or alias it so every ssh invocation goe
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。