- name
- libghostty-vt
- description
- libghostty-vt
- version
- 1.0.0
# libghostty-vt
Zero-dependency VT sequence parser from Ghostty. Mitchell Hashimoto's embeddable terminal core.
## Status
**NOT YET RELEASED** (as of 2025-09) - Zig API available for testing, C API coming.
## What It Is
`libghostty-vt` extracts Ghostty's proven VT parsing into a standalone library:
- Parse ANSI/VT sequences
- Maintain terminal state
- Zero dependencies (no libc required!)
- SIMD-optimized (>100 MB/s plain text)
## Architecture
```
Raw Bytes → UTF8Decoder → Parser (DFA) → Stream → Actions
│
State Machine
(14 states)
```
### Parser States
| State | Purpose |
|-------|---------|
| `ground` | Normal text printing |
| `escape` | ESC detected (0x1B) |
| `csi_entry` | CSI sequence start |
| `csi_param` | Parsing CSI parameters |
| `osc_string` | OSC data collection |
| `dcs_passthrough` | DCS data collection |
### Action Types
```zig
const Action = union(enum) {
print: u21, // Unicode codepoint
execute: u8, // C0/C1 control
csi_dispatch: CSI, // Control Sequence Introducer
esc_dispatch: ESC, // Escape sequence
osc_dispatch: *osc.Parser,
dcs_hook: DCS,
dcs_put: u8,
dcs_unhook: void,
};
```
## Key Files (ghostty-org/ghostty)
```
src/terminal/Parser.zig # State machine
src/terminal/stream.zig # Stream wrapper + SIMD
src/terminal/osc.zig # OSC parser
src/terminal/parse_table.zig # Compile-time transition table
src/simd/vt.zig # SIMD acceleration
```
## Performance
| Optimization | Impact |
|--------------|--------|
| Pre-computed state table | O(1) transitions |
| SIMD text processing | 10-100x for plain text |
| Fast-path CSI parsing | Skips state machine |
| Fixed-size buffers | No allocation |
## Use Cases
- Terminal emulators (tmux, zellij, Ghostty)
- IDE terminals (VS Code, JetBrains)
- Cloud terminals (Vercel, Render)
- TUI frameworks
- Terminal recording/playback
## When Available
```bash
# Future installation (not yet available)
# Zig
zig fetch --save git+https://github.com/ghostty-org/libghostty-vt
# C (when released)
# pkg-config --cflags --libs libghostty-vt
```
## Example (Future API)
```zig
const vt = @import("libghostty-vt");
var parser = vt.Parser.init();
var stream = vt.Stream(MyHandler).init(&parser, &handler);
// Process bytes
for (input) |byte| {
if (stream.next(byte)) |action| {
switch (action) {
.print => |cp| handler.print(cp),
.csi_dispatch => |csi| handler.handleCSI(csi),
// ...
}
}
}
```
## Sources
- https://mitchellh.com/writing/libghostty-is-coming
- https://ghostty.org/docs/about
- https://github.com/ghostty-org/ghostty
- https://vt100.net/emu/dec_ansi_parser
## GF(3) Assignment
```
Trit: +1 (PLUS) - Generator/Parser
Hue: 180° (cyan - terminal green vibes)
```
Triads:
- `libghostty-vt (+1)` × `vterm (0)` × `terminfo (-1)` = 0 ✓
- `libghostty-vt (+1)` × `tmux (0)` × `escape-sequence-validator (-1)` = 0 ✓
Voir sur GitHub