AIThis post was created with the assistance of artificial intelligence (AI).

TL;DR

Buying for a business?Offer from Amazon

Get business pricing on monitors, keyboards and dev gear

  • Business-only prices and quantity discounts
  • Tax-exempt purchasing
  • Multiple users, one account, clear invoices
As an affiliate, we earn on qualifying purchases.

Mitchell Hashimoto announced libghostty-vt 1.0, marking stable API and ABI commitments for the portable C terminal-emulation library extracted from Ghostty. He says it is already used across products including JetBrains IDEs and is preparing for broader adoption through distribution-ready packaging and documented licensing.

Mitchell Hashimoto has released libghostty-vt 1.0, a portable C library for terminal emulation extracted from Ghostty, with a stable API and enforced ABI compatibility policy. The release is intended to let software developers link against the library and let operating-system distributions package it with clearer expectations about compatibility across updates.

Hashimoto, Ghostty’s creator, says the C API has grown from an early project component into a complete terminal emulator used in production across hundreds of products. He reports that libghostty powers the terminals in JetBrains IDEs, including IntelliJ IDEA, PyCharm and GoLand, reaching more than 12.5 million active users, according to a report from JetBrains. That user figure is attributed to JetBrains; the source does not provide the report’s measurement period.

The 1.0 designation means the library follows semantic versioning and makes firm promises about ABI compatibility, Hashimoto says. The C interface uses opaque handles and a limited set of enum-based getters and setters. In his account, this design lets developers add values without repeatedly adding exported symbols. When a program built with newer headers encounters an older library that lacks a feature, the API can return a GHOSTTY_UNSUPPORTED result rather than causing a crash or undefined behavior.

The release also includes build and distribution materials: signed source tarballs, a separate archive of Zig dependencies for offline builds, headers, shared and static libraries, pkg-config files and a CMake package configuration. Hashimoto says the library installs with a SONAME and supports standard installation options including –prefix and DESTDIR. Documentation and a machine-readable dependency and licensing manifest ship with the release.

At a glance
announcementWhen: Announced with the libghostty-vt 1.0 re…
The developmentMitchell Hashimoto has released libghostty-vt 1.0, establishing stable ABI guarantees and packaging support for the terminal-emulation library.

A Stable Foundation for Terminal Software

The release addresses a practical obstacle to adopting a shared terminal-emulation engine: developers and distribution maintainers need confidence that updates will not unexpectedly break programs linked to the library. A stable ABI can make it easier for applications to depend on libghostty-vt without bundling a separate copy or tracking internal changes in Ghostty. Those are potential benefits of the policy, not evidence that every platform or package has already adopted the 1.0 release.

The reported use across IDEs, developer tools and terminal applications suggests the library is already serving beyond Ghostty itself. Hashimoto cites uses including Vercel’s Turborepo, the Emacs project Ghostel, a WebAssembly build with an Xterm.js-compatible API, and commercial software such as OrbStack. The release may make such integrations easier to maintain, while the source does not quantify each product’s usage or independently verify the full adoption list.

Packaging details also matter to Linux distributions and other operating-system communities. The release offers a documented route to build the library offline and inspect dependency licenses, which can help maintainers evaluate and distribute it. Hashimoto says libghostty-vt is MIT licensed and needs only libc at runtime, with an option to build freestanding; those statements describe the project’s stated licensing and runtime requirements.

Samsung 75-Inch The Frame Pro 4K Neo QLED Smart TV (QN75LS03FW)

Samsung 75-Inch The Frame Pro 4K Neo QLED Smart TV (QN75LS03FW)

As an affiliate, we earn on qualifying purchases.

From Ghostty Component to Shared Library

Hashimoto says he wrote about libghostty’s development a little over a year before this release. At that point, a Zig module had been merged, but the C API did not exist and Ghostty was the only consumer. The 1.0 release marks a substantial change in the project’s intended role: libghostty-vt now has its own release cycle, separate from the Ghostty terminal application, and a C ABI intended for independent use.

The source names several efforts already using or evaluating the library. Neovim has an approved pull request to replace libvterm with libghostty-vt, but its maintainers are waiting for a tagged release before merging so distributions can package the dependency separately. KDE developers are experimenting with a Konsole replacement. Hashimoto also lists community bindings for languages including Rust, Go, JavaScript, Swift, Python, .NET, Elixir, Dart and Java. These examples indicate interest, but they do not mean every listed integration is complete or shipped.

Hashimoto says continuous integration checks the ABI against a committed baseline on Linux and against type manifests on macOS and WebAssembly. On ELF platforms, exported symbols are versioned so a dynamic loader can reject a mismatched library. The dependency set includes permissively licensed components for SIMD processing, Unicode grapheme data and image decoding; the project says it contains no copyleft code.

““The 1.0 release means both the library itself and the C ABI are now stable.””

— Mitchell Hashimoto, Ghostty creator

Adoption and Platform Details Still Developing

The announcement does not provide an independently audited count of products, users or deployments. The 12.5 million active-user figure is attributed to a JetBrains report, but its time window and calculation method are not included in the supplied material. Hashimoto’s broader claims about adoption and industry impact are his account of the project’s reach.

Some integrations remain at different stages. Neovim’s change is an approved pull request awaiting a tagged release, while KDE developers are described as experimenting with a replacement. The announcement does not say when either effort will ship, which distributions will package 1.0 first, or whether all listed language bindings support the new stable ABI. It also does not set out release dates or support periods beyond the stability policy described for version 1.0.

Packaging and Integrations After 1.0

The tagged 1.0 release gives distribution maintainers and application developers a version they can evaluate and package under the project’s stated ABI policy. Neovim maintainers had identified that release as the point needed to proceed with their approved integration, according to Hashimoto. The project’s tarballs and packaging documentation are designed to support builds through standard tools, including offline builds from the accompanying dependency archive.

The next visible milestones are likely to be distribution packages and updates from projects considering or preparing integrations, but the source gives no timetable for either. Developers will also be able to test the library’s compatibility promises through subsequent releases; the announcement does not specify a schedule for those releases.

Key Questions

What is libghostty-vt 1.0?

It is the 1.0 release of a portable C terminal-emulation library extracted from Ghostty. Hashimoto says the release establishes a stable API and ABI for developers using it independently of the Ghostty application.

What does ABI stability mean for users of the library?

ABI stability concerns compatibility at the binary level, including whether applications linked to the library continue to work across compatible library updates. The project says it follows semantic versioning and checks ABI changes in continuous integration; individual packaging and compatibility outcomes still depend on how applications and distributions use the release.

Which products are reported to use libghostty?

Hashimoto names the terminals in JetBrains IDEs, Vercel’s Turborepo, Ghostel for Emacs, ghostty-web and OrbStack, among other projects. He attributes the figure of more than 12.5 million active users to JetBrains; the announcement does not give a measurement period.

Is libghostty-vt available for distribution packaging?

The 1.0 release includes source and dependency tarballs, headers, libraries, pkg-config files, a CMake package configuration and packaging documentation. These materials are intended to support distribution packaging, but the announcement does not list which distributions have published packages.

What happens with Neovim’s proposed integration?

Hashimoto says Neovim has an approved pull request to replace libvterm with libghostty-vt. The maintainers were waiting for a tagged release so distributions could package the dependency separately; the 1.0 release addresses that stated prerequisite, but no merge date is given.

Source: mitchellh.com

You May Also Like

Free Pascal Compiler Now Supports Dynamic Packages

A new Free Pascal and Lazarus release supports dynamic packages for IDE components and runtime plugins, with platform-specific restrictions.

Are Claude Code’s New Limits Affecting Reverse Engineering Work?

Anthropic reportedly confirmed Claude Code limits aimed at game cloning, while users say Opus 5.5 has blocked some reverse-engineering tasks.

What AI Could Mean For Coders Using Low-Resource Programming Languages

OpenAI has published an article titled “Advancing coding in low-resource programming languages,” but available details do not verify its methods or results.

The Forgetful CPU (Linux On M4)

A developer reports booting Linux to a shell on an M4 Mac mini after resolving early CPU, memory-mapping and interrupt-related crashes.