Files
ghostty/example/zig-vt-stream
Chris Marchesi e8525c0fd9 Update to Zig 0.16.0
This commit represents the majority of the work necessary to upgrade
Ghostty to use Zig 0.16.0.

Key parts:

* In addition to its previous responsibilities, the global state now
  houses state for global I/O implementations and the process
  environment. It is now also utilized in the main application along
  with the C library. Where necessary, global state is isolated from key
  parts of the implementation (e.g., in libghostty subsystems), and it's
  expected that this list will grow.

* We currently manage our own C translation layer where necessary. In
  these cases, cImport has been removed in favor of the new external
  translate-c package. Due to fixes that have needed be made to properly
  translate the dependencies that were swapped out, as mentioned, we
  have had to backport fixes from the current translate-c package (and
  the upstream Arocc dependency). We will host this ourselves until Zig
  0.17.0 is released with these fixes.

* Where necessary (only a small number of cases), some stdlib code from
  0.15.2 (and even from 0.17.0) has been taken, adopted, and vendored in
  lib/compat.

Co-authored-by: Leah Amelia Chen <hi@pluie.me>
2026-07-21 12:35:05 -07:00
..
2026-07-21 12:35:05 -07:00

Example: vtStream API for Parsing Terminal Streams

This example demonstrates how to use the vtStream API to parse and process VT sequences. The vtStream API is ideal for read-only terminal applications that need to parse terminal output without responding to queries, such as:

  • Replay tooling
  • CI log viewers
  • PaaS builder output
  • etc.

The stream processes VT escape sequences and updates terminal state, while ignoring sequences that require responses (like device status queries).

Requires the Zig version stated in the build.zig.zon file.

Usage

Run the program:

zig build run

The example will process various VT sequences including:

  • Plain text output
  • ANSI color codes
  • Cursor positioning
  • Line clearing
  • Multiple line handling

And display the final terminal state after processing all sequences.