The static library just got a lot more portable.
Embedding libghostty meant dragging libc++ and its ABI along for the ride — a non-starter for projects with their own C++ runtime opinions (or none at all). #12291 surgically removes those dependencies, making the library link cleanly into Go, Rust, or plain C without symbol collisions. The downstream go-libghostty bindings updated the same week to match. One less reason to vendor a whole terminal instead of embedding one.
Viewport pins now survive reflow.
Resizing a terminal while scrolled back used to scramble your position — the viewport pin pointed at content that had reflowed elsewhere. #12300 tracks pins through the reflow process so your view stays anchored to the line you were actually reading. Small fix, large annoyance eliminated.
Key, mouse, and focus encoding arrive in the Go bindings.
A terminal emulator that can't encode input events is just a very complicated cat. #12 adds bindings for key, mouse, and focus encoding — the missing half of the VT conversation. Effect callbacks also got cleaner: #13 passes the terminal instance as the first parameter, so you're not closing over state like it's 2009. Combined with #11 dropping the libc++ dependency, the bindings are now genuinely usable for embedding.
Trust, but verify — and verify against the right file.
The overlay was checking signatures, just not against the index that actually mattered. #95 switches verification to the versioned index.json, closing a gap where a stale or tampered unversioned index could slip through. #96 then wires up new tagged releases from the main index, and #97 cleans up the aftermath. Eleven commits total — mostly the kind of plumbing that only matters until it doesn't work.
The event loop keeps pace with upstream.
Zig 0.16 landed with the usual breaking changes, and libxev needed surgery to match. #220 handles the migration — nothing dramatic, just the cost of living on a pre-1.0 compiler. Cross-platform event loops don't maintain themselves.
zig-objc updated for 0.16 compatibility.
Calling into the Objective-C runtime from Zig is already strange enough without compiler version drift. #34 brings the bindings forward to Zig 0.16, six commits of adaptation to keep the bridge standing. If you're writing macOS code in Zig, this is the week your builds start working again.
WebAssembly-to-JS bindings track upstream Zig.
Living on Zig dev builds means perpetual migration. #10 updates zig-js to 0.16.0-dev.3142+5ccfeb926 — a specific commit hash that will age like milk, but works today. The price of calling JavaScript from Zig-compiled Wasm.
Testing terminal performance against realistic workloads.
Benchmarking a terminal emulator against ASCII is like testing a race car on a parking lot. #12297 adds an AGENTS mode and improves synthetic UTF-8 generation — because the interesting bugs live in multi-byte sequences and agentic output patterns, not in how fast you can print 'hello world'.
| ghostty-org/ghostty | ★★★★★★★★★★ | 51,530 |
| vouch | ★☆☆☆☆☆☆☆☆☆ | 4,229 |
| libxev | ★☆☆☆☆☆☆☆☆☆ | 3,449 |
| simdutf/simdutf | ★☆☆☆☆☆☆☆☆☆ | 1,801 |
| zig-overlay | ★☆☆☆☆☆☆☆☆☆ | 493 |
| zig-objc | ★☆☆☆☆☆☆☆☆☆ | 331 |
| zig-js | ★☆☆☆☆☆☆☆☆☆ | 284 |
| go-libghostty | ★☆☆☆☆☆☆☆☆☆ | 113 |
The event loop keeps pace with upstream.
Zig 0.16 landed with the usual breaking changes, and libxev needed surgery to match. #220 handles the migration — nothing dramatic, just the cost of living on a pre-1.0 compiler. Cross-platform event loops don't maintain themselves.
zig-objc updated for 0.16 compatibility.
Calling into the Objective-C runtime from Zig is already strange enough without compiler version drift. #34 brings the bindings forward to Zig 0.16, six commits of adaptation to keep the bridge standing. If you're writing macOS code in Zig, this is the week your builds start working again.
WebAssembly-to-JS bindings track upstream Zig.
Living on Zig dev builds means perpetual migration. #10 updates zig-js to 0.16.0-dev.3142+5ccfeb926 — a specific commit hash that will age like milk, but works today. The price of calling JavaScript from Zig-compiled Wasm.
Testing terminal performance against realistic workloads.
Benchmarking a terminal emulator against ASCII is like testing a race car on a parking lot. #12297 adds an AGENTS mode and improves synthetic UTF-8 generation — because the interesting bugs live in multi-byte sequences and agentic output patterns, not in how fast you can print 'hello world'.
| ghostty-org/ghostty | ★★★★★★★★★★ | 51,530 |
| vouch | ★☆☆☆☆☆☆☆☆☆ | 4,229 |
| libxev | ★☆☆☆☆☆☆☆☆☆ | 3,449 |
| simdutf/simdutf | ★☆☆☆☆☆☆☆☆☆ | 1,801 |
| zig-overlay | ★☆☆☆☆☆☆☆☆☆ | 493 |
| zig-objc | ★☆☆☆☆☆☆☆☆☆ | 331 |
| zig-js | ★☆☆☆☆☆☆☆☆☆ | 284 |
| go-libghostty | ★☆☆☆☆☆☆☆☆☆ | 113 |
Your GitHub week, turned into something worth reading.
Generate your dispatch →