
Libghostty 1.0 makes portable terminal emulation library's C ABI stable
Mitchell Hashimoto announced libghostty 1.0 on November 6, 2026: a portable C library for terminal emulation extracted from Ghostty, now with a stable library and C ABI, broad adoption, and packaging support.
Mitchell Hashimoto announced libghostty 1.0 on November 6, 2026, a portable, high-performance C library for terminal emulation extracted from the core of Ghostty. The release makes both the library and its C ABI stable. A little over a year ago, the Zig module had just been merged, the C API did not exist, and nobody but Ghostty was a consumer.
Adoption and ecosystem
JetBrains IDE terminals now run on libghostty, reaching over 12.5 million active users according to a JetBrains report. Neovim has an approved pull request to replace libvterm with libghostty-vt, which would close a 10-year-old issue about reflowing scrollback on resize; maintainers are waiting on a tagged release before merging. KDE developers are experimenting with a Konsole replacement built on it, Vercel's Turborepo uses it to render task output in its TUI, devenv uses it to drive shells, and Antithesis used it to fuzz TUI programs and found real bugs in btop and others. Ghostel brings it to Emacs, ghostty-web provides a WASM build with an Xterm.js-compatible API, and OrbStack embeds it. New terminals and agentic coding tools such as herdr and cmux have been built on it, and community bindings cover Rust, Go, JavaScript, Swift, Python, .NET, Elixir, Dart, Java, and more. The awesome-libghostty list tracks well over a hundred projects. The project says more people today use a terminal powered by libghostty than use Ghostty the application, by a very large multiple.
ABI stability and packaging
libghostty-vt follows semantic versioning with strict ABI compatibility promises and has a real, enforced ABI stability policy. Objects are opaque handles, values go through enum-keyed getters and setters, non-opaque structs carry their size or reserved padding, and enums are pinned to int on every compiler as much as the C standard allows. Newer headers linked against an older library return GHOSTTY_UNSUPPORTED instead of crashing. CI enforces the policy with libabigail on Linux and golden type manifests on macOS and WebAssembly, and ELF exported symbols are versioned. The 1.0 release also adds build tooling, signed source and dependency tarballs, documentation, and packaging support, including proper SONAME, headers, pkg-config files, and a CMake package config. The library is MIT licensed, needs nothing beyond libc at runtime, and can be built freestanding. Its dependencies are permissively licensed and include simdutf, Google Highway, a compact Unicode table, and Wuffs; there is no copyleft code in the dependency tree.
Portability and resource use
Tested platforms include Linux with glibc or musl on x86_64 and aarch64, macOS 13 and later on x86_64 and aarch64, iOS 13 and later on aarch64, FreeBSD on x86_64 and aarch64, Windows on x86_64, Android on aarch64, x86_64, and arm, and WebAssembly wasm32 freestanding. Additional build-only targets include bare metal riscv32 and thumb, WebAssembly WASI wasm32, Windows arm64, illumos x86_64, and 32-bit x86. The library creates no threads, allocates only through a customizable allocator, and uses minimal compute and memory; the author reports running 10,000 active terminals with live shells on a Linux server with 4 cores and 8 GB of RAM, using dash because bash used more RAM.
What comes next
The project says a terminal can now be created in about 1,500 lines of C with more features and better performance than just about any terminal that existed in 2025, and most today in 2026. libghostty-vt will focus on stability while implementing as many terminal protocols as exist, with options to enable or disable them. Docs, examples, and downloads are at lib.ghostty.org.
Sources: Mitchell Hashimoto
SiTech — AI-powered web development
We build fast, modern websites and bring AI into real business workflows. Have a project or a question? We'd love to help.