Dev News Daily ENDE

Libghostty-vt reaches 1.0 with a stable C ABI that CI checks with libabigail

Mitchell Hashimoto announced libghostty-vt 1.0 on 6 November. Libghostty is a portable C library for terminal emulation extracted from the core of the Ghostty terminal, and the 1.0 release declares both the library and its C ABI stable.

A little over a year ago, he writes, the Zig module had just been merged, there was no C API and Ghostty was the only consumer. The post now lists users: Ghostel brings it to Emacs, ghostty-web is a WebAssembly build with an Xterm.js-compatible API, OrbStack embeds it commercially, and a number of new terminals and agentic coding tools are built on it. Community bindings exist for Rust, Go, JavaScript, Swift, Python, .NET, Elixir, Dart and Java, and the awesome-libghostty list tracks more than a hundred projects. Hashimoto says more people now use a terminal powered by libghostty than use the Ghostty application, by a large multiple.

The technical substance of 1.0 is the ABI policy. Every object is an opaque handle; values are read and written through a small set of enum-keyed getters and setters, so new values need no new symbols. Programs built against newer headers but linked to an older library get GHOSTTY_UNSUPPORTED instead of crashes. Non-opaque structs carry their size or reserved padding, and enums are pinned to int. CI checks every change with libabigail against a committed baseline on Linux and against type manifests on macOS and WebAssembly, and on ELF platforms every exported symbol is versioned. The release also brings tarballs, licensing manifests and build tooling so distributions can package it, on a release cycle separate from Ghostty.

Libghostty-vt reaches 1.0 with a stable C ABI that CI checks with libabigail
Libghostty-vt reaches 1.0 with a stable C ABI that CI checks with libabigail — Dev News Daily

What it means

Most libraries promise compatibility; few test it on every commit. An ABI baseline in CI turns the 1.0 promise into a check that fails, which is what packagers need before they ship a shared library.

Primary source
Mitchell Hashimoto
https://mitchellh.com/writing/libghostty-1-0
Written by Victoria Shinder.