行业资讯

Rio 0.5 版本大升级:终端引擎拆分,rio-vt 和 librio 性能大揭秘!

发布时间:2026/8/5 23:05:51
Rio 0.5 版本大升级:终端引擎拆分,rio-vt 和 librio 性能大揭秘! 【Rio 项目介绍】喜欢 Rio 吗可以赞助该项目让它持续发展。Rio 有相关文档包括安装、配置、特性、快捷键绑定等内容还有更新日志、博客、贡献指南。语言选择丰富有英语、韩语、葡萄牙语、西班牙语、波兰语、日语、简体中文、繁体中文等。还有近期文章涵盖 2026 年和 2025 年的相关内容。【rio-vt 和 librio 登场】一直以来Rio 终端的核心与渲染器、配置以及周边应用紧密交织复用完善部分困难。不过从 Rio 0.5 版本开始引擎拆分成了清晰、可嵌入的层次即 rio-vt 和 librio。【两层架构解析】大多数需要终端功能的项目需要的是引擎现在这个引擎以两层架构形式提供。rio-vt 是安全的 Rust 库包含 VT 状态机等诸多功能不涉及渲染等可看作 alacritty_terminal 的现代替代方案librio 是以 libghostty 为理念基于 C ABI 封装的相同核心以预构建的静态库形式提供无需 Rust 工具链。默认情况下两者都很轻量级构建 rio-vt 不启用特性时仅为终端核心。【rio-vt 的实际应用】这个核心工作方式与真实终端类似向它输入字节流可获取网格状态。以下是完整操作流程示例不涉及 PTY、渲染器和线程。由于 rio-vt 本身不进行绘制操作可自行决定如何处理网格数据。【免费的选中文本和搜索功能】有相关代码示例展示了如何实现选中文本和搜索功能。【图像支持】Sixel、Kitty 和 iTerm2 的图像传输功能由核心解码并通过事件暴露前端可像处理其他事件一样记录图像还有在无界面环境下捕获 Kitty 图形协议传输的示例。【librio跨语言使用相同的核心】librio 将引擎封装在小型的 C ABI 中可创建引擎、表面写入数据并获取渲染状态。这是原生 Swift 或 C 前端逐单元格处理的界面脏行渲染状态使 CPU 渲染可行且它是跨平台的能在 macOS、Linux 和 Windows 上构建和运行。【已投入生产使用】像 Lovable 这样的公司已在生产环境中使用 rio-vt为实际终端工作负载提供支持。将核心提取到独立库中不仅是为了代码清理更是为了让其他产品基于同一引擎开发。【性能表现】基准测试有局限性预计 libghostty 在某些方面可能优于 rio-vt但还未测试。维护了独立基准测试项目 rio-vt-benchmark将 rio-vt 与 vt100 和 alacritty_terminal 在相同工作负载下对比以下是在 Apple Silicon Mac 上使用 Criterion 测试得到的中位数数据。【将字节流解析到屏幕上】在混合、纯 ASCII、快速滚动、交替屏幕重绘等工作负载下rio-vt 表现较好在 SGR 频繁变化时vt100 胜出在宽 Unicode 字符方面alacritty 表现更好。【将填充后的屏幕数据序列化输出】在格式化内容和纯文本内容操作上rio-vt 速度远快于 vt100。【将屏幕从 80x24 调整到 100x40 再调回】在调整大小操作上rio-vt 速度最快。在大多数情况下rio-vt 解析速度更快序列化屏幕数据和调整屏幕大小速度也有优势但在某些测试中并非领先。【未来展望】rio-vt 已发布在 crates.io 上版本号与 Rio 保持一致任何 Rust 项目可依赖它。librio 无需安装GitHub 版本附带相关文件在 macOS 上使用 Swift 或 C 开发无需 Rust 工具链在 Linux 和 Windows 上可从源代码构建。还支持 WebAssembly。如果你想在相关项目中嵌入真正的终端这是不错的选择若基于它开发了东西可分享。