@@ -67,42 +67,6 @@ the terminal grid doesn't have to reserve space for the scrollbar with an
6767aesthetically unpleasing gap or gutter. The scrollbar is overlaid on top of
6868the terminal contents with minimal styling to prevent impacting selection.
6969
70- ### Unobtrusive Updates (macOS)
71-
72- PR: GH-9116
73-
74- Update notifications on macOS are now unobtrusive. If a terminal
75- window is open, update notifications appear as a small pill in the
76- titlebar or bottom corner of the window instead of a disruptive popup
77- window. The pill itself can be dismissed with a right click if you
78- want to further hide it.
79-
80- You can also trigger a full update and restart directly from
81- the command palette with "Update and Restart" (GH-9131 ), making the
82- entire update process able to be keyboard-driven.
83-
84- { /* TODO: Screenshot showing the unobtrusive update banner in the titlebar*/ }
85-
86- ### Performance Improvements
87-
88- PRs: GH-9662 GH-9645
89-
90- Thanks to [ asciinema] ( https://asciinema.org/ ) , we received ~ 4GB of
91- public terminal recording data to analyze and optimize Ghostty's performance.
92- This is exciting because its based on real-world terminal usage, not just
93- synthetic workloads.
94-
95- Using this data, we improved I/O processing considerably, lowering the
96- time it took Ghostty to replay everything in the dataset from minutes to
97- tens of seconds (with asciinema configured to ignore all pauses, of course).
98- These improvements were also visible in synthetic benchmarks such
99- as Alacritty's vtebench.
100-
101- In addition to I/O updates, the renderer was rearchitected, lowering the time
102- the renderer holds the terminal lock by ** 2x to 5x** . And in most frames, the
103- renderer doesn't hold the lock at all thanks to improved dirty/damage tracking.
104- This applies to both Metal and OpenGL.
105-
10670### Click to Move Cursor In Shell Prompts
10771
10872PR: GH-10455
@@ -165,6 +129,68 @@ the format to copy. In addition to mixed, plain, and HTML formats, the
165129binding also supports ` vt ` which copies text with terminal escape sequences
166130to preserve formatting when pasting into another terminal.
167131
132+ ### Performance Improvements
133+
134+ PRs: GH-9662 GH-9645
135+
136+ Thanks to [ asciinema] ( https://asciinema.org/ ) , we received ~ 4GB of
137+ public terminal recording data to analyze and optimize Ghostty's performance.
138+ This is exciting because its based on real-world terminal usage, not just
139+ synthetic workloads.
140+
141+ Using this data, we improved I/O processing considerably, lowering the
142+ time it took Ghostty to replay everything in the dataset from minutes to
143+ tens of seconds (with asciinema configured to ignore all pauses, of course).
144+ These improvements were also visible in synthetic benchmarks such
145+ as Alacritty's vtebench.
146+
147+ In addition to I/O updates, the renderer was rearchitected, lowering the time
148+ the renderer holds the terminal lock by ** 2x to 5x** . And in most frames, the
149+ renderer doesn't hold the lock at all thanks to improved dirty/damage tracking.
150+ This applies to both Metal and OpenGL.
151+
152+ ### Stability Improvements
153+
154+ PRs: GH-10337 GH-11089 GH-11109 GH-9594
155+
156+ Ghostty 1.3 includes a significant investment in stability and robustness.
157+
158+ This release fixes a major memory leak that Claude Code specifically
159+ regularly triggered in prior Ghostty releases. This leak has existed since
160+ Ghostty 1.0 but was difficult or rare to trigger until Claude Code began
161+ exhibiting the perfect conditions to trigger this at scale, especially
162+ with their large user base. Details of the leak and the fix can be found
163+ [ in this specific blog post about it] ( https://mitchellh.com/writing/ghostty-memory-leak-fix ) .
164+
165+ We also ran this release through extensive [ AFL++] ( https://aflplus.plus/ )
166+ fuzz testing for Ghostty's terminal escape sequence parser (GH-11089 ) and the
167+ full VT stream processor (GH-11109 ). We identified and fixed around 10
168+ crashes and potential memory safety issues through this process. None of
169+ these were known to cause any real-world issues, but they may have!
170+ As a longer-term goal, we'd like to spin up infrastructure to continuously
171+ fuzz Ghostty.
172+
173+ On the memory side, we've optimized memory in a handful of places.
174+ Alt screen memory is now allocated on demand, saving several megabytes per
175+ terminal for sessions that never use it (GH-9594 ). There are a variety of
176+ minor improvements in all subsystems, however.
177+
178+ ### Unobtrusive Updates (macOS)
179+
180+ PR: GH-9116
181+
182+ Update notifications on macOS are now unobtrusive. If a terminal
183+ window is open, update notifications appear as a small pill in the
184+ titlebar or bottom corner of the window instead of a disruptive popup
185+ window. The pill itself can be dismissed with a right click if you
186+ want to further hide it.
187+
188+ You can also trigger a full update and restart directly from
189+ the command palette with "Update and Restart" (GH-9131 ), making the
190+ entire update process able to be keyboard-driven.
191+
192+ { /* TODO: Screenshot showing the unobtrusive update banner in the titlebar*/ }
193+
168194## System Requirements
169195
170196There are no changes to the system requirements from Ghostty 1.2.
0 commit comments