当前位置: 首页 > news >正文

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。如果你想在相关项目中嵌入真正的终端,这是不错的选择,若基于它开发了东西,可分享。

http://www.jsqmd.com/news/1336002/

相关文章:

  • LaTeX表格自动换行难题:tabularx宏包原理与实战解决方案
  • 深圳网站建设微信商城开发怎么做才能既好看又好用,聊聊那些踩过坑才懂的真话
  • 2026年上海GEO服务商选型全指南及对比参考 - 筑云鲸
  • windowsC盘清理——CapabilityAccessManager文件清理
  • JMeter压力测试实战:从Vue应用到后端API的完整性能评估指南
  • TZ-LLM: Protecting On-Device Large Language Models with Arm TrustZone
  • ROW_NUMBER()
  • SJF调度算法:从操作系统原理到任务队列的工程实践
  • DS随心转整理国产AI长回答:标题层级、目录和Word归档
  • Flutter开发鸿蒙应用实战:加油站优惠查询系统
  • VC++即时通讯项目实战:从MFC界面到Socket网络编程全解析
  • 2、数据结构与算法(C++)
  • 从零搭建AI咨询业务线:技术专家亲授6步标准化交付流程(含SOP清单+合同范本)
  • 制造业AI Agent从单部门试点到全厂覆盖的路径:2026工业智能体规模化落地指南
  • GPU服务器安装MilvusDB手记
  • RAG只能做问答,但本体论为什么还是热不起来? - 北方的银狐
  • AI-Native应用落地:从Harness约束框架到双Loop进化的工程实践
  • AI公式粘贴后出现星号?AI导出鸭一键解决乱码难题
  • 建设银行官方网站登录指南,解决卡顿报错与安全保障深度解析
  • Vue+SpringBoot农贸市场智能管理系统开发实践
  • 校园企业评选不踩坑!人人微投票小程序测评,附大中型赛事搭建教程 - 投票评选制作软件系统
  • React中如何优雅地处理条件渲染
  • 小程序开发公司哪家好?SaaS模板与定制开发服务商对比参考
  • SonarQube 覆盖率报告工作原理详解:从 0% 到准确计算的完整指南
  • 从零基础到专家级指南,揭秘规则网站建设的核心逻辑与实战技巧
  • LangChain--01--概述
  • AI私域增长闭环构建全路径(从0到1万精准用户的真实数据推演)
  • 沈阳网站建设工作怎么做才能既省钱又出效果?资深运营人掏心窝子的避坑指南
  • 2026年北京GEO服务商选型指南:中小微企业高性价比方案对比 - 筑云鲸
  • md文件怎么转换成pdf?盘点7款实用工具覆盖在线、本地与小程序方案