The Spectrum Dispatch News

technology

Libghostty 1.0 Released With Stable C API and ABI

Mitchell Hashimoto announces libghostty-vt 1.0, a portable terminal emulation library extracted from Ghostty, now with stable ABI guarantees and adoption across major platforms.

Libghostty 1.0 Released With Stable C API and ABI

Libghostty-vt 1.0 has been released, marking the first stable version of a high-performance C library for terminal emulation originally extracted from the Ghostty terminal application. According to Mitchell Hashimoto, the release signifies that both the library itself and its C application binary interface (ABI) are now stable.

Libghostty 1.0 Released With Stable C API and ABI

The library has already achieved substantial industry adoption despite being relatively new. JetBrains IDEs now use libghostty for their terminal emulator, serving over 12.5 million active users across IntelliJ, PyCharm, GoLand, and related products. Neovim has an approved pull request to replace libvterm with libghostty-vt, resolving a 10-year-old issue about reflowing scrollback on resize. KDE developers are experimenting with a Konsole replacement using the library, while Vercel’s Turborepo uses it for rendering task output in its TUI.

Other adopters include devenv, which uses it to drive shells; Antithesis, which used it for fuzzing TUI programs; and commercial products like OrbStack. According to Hashimoto, more people use a terminal powered by libghostty than use Ghostty the application itself.

A defining feature of the 1.0 release is its ABI stability policy. The library uses opaque handles for objects, with hundreds of potential values accessed through a small set of enum-keyed getters and setters, allowing future additions without introducing new symbols. Non-opaque structs carry their size to allow field appending, and enums are pinned to int on every compiler. CI enforces these policies through libabigail checks on Linux and golden type manifests on macOS and WebAssembly. On ELF platforms, exported symbols are versioned so mismatched libraries are rejected at load time.

The 1.0 release includes proper build tooling, tarballs, dependency licensing manifests, and documentation to enable packaging across major operating systems and distributions. Libghostty has its own release cycle separate from Ghostty, with its own tarballs containing only necessary files and dependencies. Each release publishes a signed source tarball and a companion dependencies tarball containing every Zig package, enabling distributions to build completely offline.

The library is MIT licensed and has minimal runtime dependencies—only libc, and can be built fully freestanding without it. Compiled dependencies include simdutf and Google Highway for SIMD operations, a Unicode table for grapheme data, and Wuffs for image decoding. No copyleft code exists in the dependency tree.

Portability spans multiple platforms including Linux, macOS 13+, iOS 13+, FreeBSD, Windows, Android, and WebAssembly. The WebAssembly version ships in two flavors—speed-optimized and size-optimized, with the compact version under one megabyte. Additional platforms supported in CI without automated testing include bare metal, WASI, Windows ARM64, illumos, and 32-bit x86.

Key facts

  • Libghostty-vt 1.0 introduces stable ABI and semantic versioning for the C terminal emulation library
  • JetBrains IDEs now use libghostty, serving over 12.5 million active users
  • Neovim has an approved pull request to replace libvterm with libghostty-vt
  • More people use terminals powered by libghostty than use Ghostty the application
  • The library is MIT licensed with minimal runtime dependencies beyond libc
  • Supported platforms include Linux, macOS, iOS, FreeBSD, Windows, Android, and WebAssembly

Sources

← All posts