<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/rio-vt-and-librio-rio-s-terminal-engine-now-embeddable-8sc8aoh90" -->

---
title: rio-vt and librio: Rio's terminal engine, now embeddable
description: Rio Terminal 0.5 splits its core engine into two embeddable layers: rio-vt, a safe Rust crate providing the VT state machine, ANSI parser, grid, scrollback,...
canonical: https://daily.dev/posts/rio-vt-and-librio-rio-s-terminal-engine-now-embeddable-8sc8aoh90
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: rio-vt and librio: Rio's terminal engine, now embeddable | daily.dev
og:description: Rio Terminal 0.5 splits its core engine into two embeddable layers: rio-vt, a safe Rust crate providing the VT state machine, ANSI parser, grid, scrollback,...
og:url: https://daily.dev/posts/rio-vt-and-librio-rio-s-terminal-engine-now-embeddable-8sc8aoh90
og:image: https://api.daily.dev/og/posts/8SC8aoH90.png
og:image:alt: rio-vt and librio: Rio's terminal engine, now embeddable
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# rio-vt and librio: Rio's terminal engine, now embeddable

**[Hacker News](https://daily.dev/sources/hn)** · 6 min read · 8 upvotes · 1 comments

## Summary

Rio Terminal 0.5 splits its core engine into two embeddable layers: rio-vt, a safe Rust crate providing the VT state machine, ANSI parser, grid, scrollback, selection, search, PTY driver, and image protocols (Sixel, Kitty, iTerm2) with no renderer or GPU dependencies; and librio, the same engine exposed via a C ABI as a prebuilt static library usable from Swift, C, Go, Python, or any language that speaks C. Benchmarks against vt100 and alacritty_terminal show rio-vt leads on most parsing workloads (up to 3× faster on plain ASCII, 2.1× on full-screen repaints), serializes screens 3–4× faster, and resizes far quicker while still reflowing wrapped lines. The crate is already used in production by Lovable. WebAssembly support is planned.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://rioterm.com/blog/2026/07/27/rio-vt-and-librio>

## Questions this post answers

### What is rio-vt and how is it different from alacritty_terminal?

rio-vt is a safe Rust crate containing Rio terminal's core engine: the VT state machine, ANSI/escape parser, grid with scrollback, selection, search, PTY driver, and sixel/Kitty/iTerm2 image protocol decoding, with no rendering or GPU dependencies. It is positioned as a modern alternative to alacritty_terminal and, in benchmarks, parses faster on most workloads, serializes screens several times faster, and resizes far more quickly while still reflowing wrapped lines.

_daily.dev surfaces embeddable terminal engine options like rio-vt for developers picking a Rust VT parser._

### How can I embed Rio's terminal engine in a Swift or C application?

Use librio, a C ABI wrapper around the rio-vt engine that ships as a prebuilt static library requiring no Rust toolchain. On macOS it distributes as a RioKit.xcframework for Swift plus librio.a and librio.h for C; on Linux and Windows it builds from source with 'cargo build -p librio'. It creates an engine, spawns a PTY-backed surface, and returns a dirty-row render state so a frontend only repaints changed cells.

_daily.dev helps developers evaluating cross-language terminal embedding stay on top of librio-style tooling._

### How does rio-vt's performance compare to vt100 and alacritty_terminal for parsing terminal output?

On Criterion benchmarks (rio-vt 0.5, vt100 0.15, alacritty_terminal 0.26) run on Apple Silicon, rio-vt parses ascii_plain workloads at 835 MiB/s versus vt100's 196 MiB/s and alacritty's 279 MiB/s, roughly a 3x lead. It also wins alt_screen_redraw and scroll_storm, but vt100 wins sgr_churn and alacritty wins unicode_wide, showing no single engine dominates every workload.

_daily.dev keeps performance-conscious Rust developers current on terminal-parser benchmarks like this one._

## Community discussion

Top comments from developers on daily.dev.

**@nerdalytics** · 1 upvotes

> Rio gets better and better. Warp/OpenWaep will have competition

## Similar posts on daily.dev

- [mcass19/ex\_ratatui: Elixir bindings for the Rust ratatui terminal UI library](https://daily.dev/posts/mcass19-ex-ratatui-elixir-bindings-for-the-rust-ratatui-terminal-ui-library-vhusrofht) · ElixirStatus · 0 upvotes · 0 comments
- [RatatuiRuby — Terminal UIs in Ruby](https://daily.dev/posts/ratatuiruby-terminal-uis-in-ruby-ihnfpbmrg) · Hacker News · 0 upvotes · 0 comments
- [This New Terminal is Absurd \(But Totally Fun\)](https://daily.dev/posts/this-new-terminal-is-absurd-but-totally-fun--cqshosfcd) · It's Foss · 187 upvotes · 26 comments

---

Tags: [#rust](https://daily.dev/tags/rust), [#cli](https://daily.dev/tags/cli)

[View this post on daily.dev](https://daily.dev/posts/rio-vt-and-librio-rio-s-terminal-engine-now-embeddable-8sc8aoh90)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"rio-vt and librio: Rio's terminal engine, now embeddable","url":"https://daily.dev/posts/rio-vt-and-librio-rio-s-terminal-engine-now-embeddable-8sc8aoh90","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/rio-vt-and-librio-rio-s-terminal-engine-now-embeddable-8sc8aoh90"},"datePublished":"2026-08-05T09:33:10.863Z","dateModified":"2026-09-14T06:53:00.706Z","description":"Rio Terminal 0.5 splits its core engine into two embeddable layers: rio-vt, a safe Rust crate providing the VT state machine, ANSI parser, grid, scrollback,...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/7d9885bc58482f394a090638e91c649d?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/7d9885bc58482f394a090638e91c649d?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Hacker News","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Hacker News","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn","url":"https://daily.dev/sources/hn"},"commentCount":1,"discussionUrl":"https://daily.dev/posts/rio-vt-and-librio-rio-s-terminal-engine-now-embeddable-8sc8aoh90","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":8},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":1}],"keywords":"rust,cli","timeRequired":"PT6M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Hacker News","item":"https://daily.dev/sources/hn"},{"@type":"ListItem","position":3,"name":"rio-vt and librio: Rio's terminal engine, now embeddable"}]}
{"@context":"https://schema.org","@type":"WebPage","@id":"https://daily.dev/posts/rio-vt-and-librio-rio-s-terminal-engine-now-embeddable-8sc8aoh90","comment":[{"@type":"Comment","text":"Rio gets better and better. Warp/OpenWaep will have competition","datePublished":"2026-08-09T21:59:51.906Z","url":"https://daily.dev/posts/8SC8aoH90#c-ybrlORK3F","author":{"@type":"Person","name":"nerdalytics","url":"https://daily.dev/nerdalytics","image":"https://avatars.githubusercontent.com/u/97166791?v=4"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":1}}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/rio-vt-and-librio-rio-s-terminal-engine-now-embeddable-8sc8aoh90#faq","mainEntity":[{"@type":"Question","name":"What is rio-vt and how is it different from alacritty_terminal?","acceptedAnswer":{"@type":"Answer","text":"rio-vt is a safe Rust crate containing Rio terminal's core engine: the VT state machine, ANSI/escape parser, grid with scrollback, selection, search, PTY driver, and sixel/Kitty/iTerm2 image protocol decoding, with no rendering or GPU dependencies. It is positioned as a modern alternative to alacritty_terminal and, in benchmarks, parses faster on most workloads, serializes screens several times faster, and resizes far more quickly while still reflowing wrapped lines. daily.dev surfaces embeddable terminal engine options like rio-vt for developers picking a Rust VT parser."}},{"@type":"Question","name":"How can I embed Rio's terminal engine in a Swift or C application?","acceptedAnswer":{"@type":"Answer","text":"Use librio, a C ABI wrapper around the rio-vt engine that ships as a prebuilt static library requiring no Rust toolchain. On macOS it distributes as a RioKit.xcframework for Swift plus librio.a and librio.h for C; on Linux and Windows it builds from source with 'cargo build -p librio'. It creates an engine, spawns a PTY-backed surface, and returns a dirty-row render state so a frontend only repaints changed cells. daily.dev helps developers evaluating cross-language terminal embedding stay on top of librio-style tooling."}},{"@type":"Question","name":"How does rio-vt's performance compare to vt100 and alacritty_terminal for parsing terminal output?","acceptedAnswer":{"@type":"Answer","text":"On Criterion benchmarks (rio-vt 0.5, vt100 0.15, alacritty_terminal 0.26) run on Apple Silicon, rio-vt parses ascii_plain workloads at 835 MiB/s versus vt100's 196 MiB/s and alacritty's 279 MiB/s, roughly a 3x lead. It also wins alt_screen_redraw and scroll_storm, but vt100 wins sgr_churn and alacritty wins unicode_wide, showing no single engine dominates every workload. daily.dev keeps performance-conscious Rust developers current on terminal-parser benchmarks like this one."}}]}
```

