Rust 十周年,与 vivo 蓝河团队聊聊他们与 Rust 的故事
前 言
蓝河操作系统(BlueOS)是vivo 面向通用人工智能时代,自主研发的智慧操作系统,它从内核到系统框架全栈使用Rust 语言编写,具有天生更智慧、天生更流畅、天生更安全的特性。从2023 年正式发布并率先搭载于智能手表,到2024 年实现全栈Rust 自研,再到今年7 月正式开源内核,蓝河操作系统已经在Rust的技术路线上深耕多年,在技术探索、产品落地与开源实践层面,都已走在行业前沿。
在 Rust 十周年之际,我们邀请了vivo蓝河操作系统的相关负责人和研发专家,通过访谈的方式,一起交流了蓝河操作系统与 Rust 的故事。
问:当初蓝河操作系统(以下简称 “蓝河”)是基于什么考虑选择 Rust语言开发?
前 言
蓝河操作系统(BlueOS)是vivo 面向通用人工智能时代,自主研发的智慧操作系统,它从内核到系统框架全栈使用Rust 语言编写,具有天生更智慧、天生更流畅、天生更安全的特性。从2023 年正式发布并率先搭载于智能手表,到2024 年实现全栈Rust 自研,再到今年7 月正式开源内核,蓝河操作系统已经在Rust的技术路线上深耕多年,在技术探索、产品落地与开源实践层面,都已走在行业前沿。
在 Rust 十周年之际,我们邀请了vivo蓝河操作系统的相关负责人和研发专家,通过访谈的方式,一起交流了蓝河操作系统与 Rust 的故事。
答:蓝河作为 vivo 的自研操作系统,设计之初就明确要具备更领先的技术优势。
我们也做了大量的前期调研工作,尤其是在编程语言选型方向上,我们需要同时考虑操作系统的安全性以及性能等维度。经过大量研究以及实际验证测试,Rust 这门编程语言能够兼顾内存安全,同时具有和 C 语言一样的性能表现。
也正是基于此,我们选择用 Rust 作为蓝河操作系统的技术底座,来构建整个蓝河操作系统。
问:行业都用C/C++, 蓝河在使用 Rust 的过程中有遇到什么阻力吗?
答:阻力还是非常大的。
因为 Rust 作为一门新兴的系统级编程语言,和早期的 C、C++ 相比,首先它的学习门槛非常高,里面有非常严格的语法检查以及编译时的各种安全检查等机制,这会导致我们整个开发过程的效率看起来没有 C/C++ 那么高,这是第一个方面。第二个方面,作为新兴编程语言,业界的实践、案例以及知识库文档相对 C/C++ 来说没有那么丰富。
基于这两点,我们在推进 Rust 编程语言的过程中,研发团队内部确实有比较大的阻力。因为大家以前都是 C/C++ 功底,而 Rust 的理念和 C/C++ 完全不一样,这个过程中大家确实有不少顾虑。比如,“我对 Rust 不熟,如果用它开发,效率下降了怎么办?影响工作进度、完不成目标怎么办?” 这类声音很多。
另外,从操作系统技术选型规划的角度来看,业界很少有用较新兴的编程语言去构建操作系统这样大型技术产品的案例和实践,所以我们也从技术选型规划的视角受到了比较大的挑战,被质疑最多的就是这门编程语言的成熟度:“它真的有那么好的效果吗?C/C++ 在行业里的工业应用已经几十年了,经久不衰,为什么要冒这么大的风险去尝试一门新的的编程语言?”Rust 是个新东西,而蓝河又是公司战略级的长期迭代研究方向。在这么重要的事项上引入新东西,决策上难免会有疑问。对此,我们需要充分说明Rust 的优劣势,尤其结合做操作系统的行业情况和技术趋势,来说明 Rust 是正确的选择。
做正确的事情,把事情做正确,是vivo做事的风格,大家都确定这是正确的事之后,于是就推行下去。大家也通过工具自主学习或互相协助,逐步摸索。后来从结果来看,还是非常不错的。等模块做出来后,对比就能发现Rust 的好处。比如,用 Rust 开发后,维护成本相比之前用 C/C++ 写的模块,bug 数量能减少 2/3,解决 bug 的时间和维护成本大幅降低超过 50%。这样就形成了正向反馈,大家会愿意用 Rust 开发模块,包括团队里的新同学,都会学习使用 Rust 来开发这些模块。
问:用Rust 开发,给蓝河带来最大的优势是什么?
答:用 Rust 开发蓝河,从实际验证结果来看,优势非常巨大。
首先,从操作系统各子系统及组件的可靠性、稳定性来看,只要编码、测试、验证能通过,稳定性就非常高,不会出现奇怪的崩溃、空指针、内存泄漏等稳定性问题。
其次,性能也超出预期。此前我们预测,在系统层面,Rust 的性能可能衰减到 C/C++ 的 0.8 倍,但实际验证下来,它和 C 语言的性能接近0.95 倍,这超出了预期。所以整体而言,在兼顾操作系统安全性的同时,性能基本能和 C/C++ 接近,且稳定性、可靠性也很突出,表现非常优异,超出预期。
另一方面,Rust 在编译器阶段就能消灭大部分错误,大幅降低了后期维护成本。我们统计发现,用 Rust 开发的模块,维护成本比用 C/C++ 开发的减少 50% 以上,甚至达到 2/3。这对我们内部来说,既提升了安全性,也提高了效率。
宏观上,蓝河操作系统是 vivo 的 “五大蓝科技” 之一,属于公司长期迭代研究的战略技术方向,技术实现上要有前瞻性和先进性,而 Rust语言因为性能和安全方面的独特优势被誉为“下一代的系统编程语言”,使用Rust语言实现蓝河操作系统,可以说是相得益彰。
问:你最开始学习 Rust,最大的困难是什么?是怎么克服的
答 1:我一开始学习 Rust 时,最大的困难是不习惯它的借用机制和生命周期管理。因为之前写 Java 代码比较多,几乎不需要考虑对象的释放问题,但在 Rust 里完全不一样,稍不注意就会被编译系统拦截。克服的办法也没什么特别的,就是强制自己在每次构建对象或变量时,提前考虑好它的生命周期,久而久之,这个问题就自然解决了。
答 2:最大困难是Rust 的所有权系统。Rust 的所有权、借用和生命周期概念是最大的障碍,最开始实现类似 C++ 的注入式初始化就很困难,加上基类、多态行为的设计,再遇到借用检查器的频繁报错,很容易让人挫败。很多时候感觉是与编译器 “斗争”,而不是合作。这个需要从心智模型上做转换,需要从 C/C++ 手动内存管理的思维转向所有权思维。克服的方法,主要是大量练习小项目,掌握所有权概念,另外是仔细看了《Rust 程序设计语言》,并充分使用 AI 工具辅助。
答 3:最困难的是语法习惯的迁移和宏的使用。Rust 是多范式编程语言,但更偏向过程式设计(比如用组合替代继承);成员对象的数据与方法分离,也天然契合ECS 架构。Rust 的声明式与过程式宏,本质是对抽象语法树的操作,对比 C 语言仅在预处理阶段的简单替换 / 展开,初期很难适应。应对这两个困难也没有什么捷径,都是花比较多的时间去了解和练习。
问:你是怎么知道 Rust 的,对 Rust 的第一印象/ 感觉是什么,在做 Rust 开发过程中有发生什么趣事?
答 1:我第一次接触Rust 就是 参与蓝河项目。第一印象是它有点像 “缝合怪”—— 明明是能开发底层软件的编程语言,却具备很多现代化语言的高级特性,甚至还支持像 Cargo 这样的在线构建系统,对依赖管理非常方便。印象比较深的是,Rust 的文档系统非常完善,基本能跟着编译器版本实时同步,我们开发过程中遇到的绝大部分问题都能通过 Rust 的文档解决。
答 2:我长期关注Stack Overflow、Medium 等技术社区和博客,在那里首次接触到 Rust 这门语言。第一印象是 “比 C++ 更安全,性能却不相上下”,当时觉得它恰好切中了平时开发的痛点。比较有趣的就是平时在开发的时候,与编译器斗智斗勇,其乐无穷。
问:熟悉使用Rust 开发之后,回过头来看,你怎么评价这门开发语言?
答 1:用一句话总结,Rust 是一门安全与性能完美平衡的现代化编程语言。
几个要点很关键:一是安全性,这是Rust 的核心特性,包括内存安全和并发安全,对操作系统编程非常重要 —— 操作系统 70% 的安全漏洞都与内存相关,Rust 的安全性能大幅减少这类漏洞。二是性能,经行业和学术界验证,Rust 的性能能媲美 C/C++,这对系统级开发很重要。三是现代化,C/C++ 已诞生数十年,而 Rust 1.0 版本 2015 年才发布,今年刚好是Rust的十周年,它更年轻,具备很多现代编程语言的特性,比如 map 语法和 Python 的map 类似,强大的 async 异步写法、闭包语法也与JavaScript 相近。这些现代化特性能大幅提升开发效率。这几点让我印象最深刻。
答 2:首先说优点:内存安全 ——在编译阶段就能拦截大部分内存漏洞,大幅提升代码稳定性。实际开发中,Rust代码引发的内存越界、泄漏等问题极少,多数情况下只要编译通过就能直接运行,节省了大量调试时间。而实际项目中发现,很多内存泄漏其实是由于调用了 unsafe 的其他代码导致的。
另外就是并发安全,编译器会强制检查数据竞争问题,在编译时就能发现并发相关的隐患,而非等到运行时才暴露数据竞争的问题。
从劣势来看,Rust 的学习曲线较为陡峭。初期需要投入较高的时间成本,即便是有丰富 C/C++ 语言经验的开发者,往往也需要几周时间才能逐步上手。还有就是生态系统,尽管Rust 的生态在快速发展,但在部分领域,第三方库的生态还不够成熟。
答 3:Rust 在保障性能的同时,通过所有权、借用、生命周期等语法特性,强制开发者思考内存安全问题。另外,Trait 设计与 Cargo 包管理也很先进。缺点的话,Cargo 对操作系统这类巨型项目的编译支持能力较为有限;代码体积相比 C++ 有所增长;生态上也有不足 —— 缺少庞大的 Rust 第三方库,有时需要转接C++ 库会带来额外的bindings开销和unsafe的引入,并且自动生成bindings这块做的比较繁琐,限制也较多。
答 4:Rust 确实是一门安全语言。首先,功能开发完成并验证通过后,基本无需担心内存崩溃问题,调用其他模块也更安心;另外一点,在我们团队实际开发中,对比此前 C/C++ 项目长期受内存泄漏、空指针困扰,Rust 开发的项目中这类稳定性问题大幅减少,整体提升了开发效率。
2025年,是 Rust 编程语言诞生十周年的里程碑时刻。在这个具有历史意义的节点,RustChinaConf 2025 携手 RustGlobal 首次登陆中国,联合 GOSIM HANGZHOU 2025,将在9月13-14日于杭州打造一场前所未有的技术盛会。我们诚挚邀请志同道合的企业伙伴和技术先锋,共同书写 Rust 在中国的下一个辉煌篇章。
vivo 积极支持和参与本次大会
查看>>RustChinaConf 2025 & Rust Global China 大会全日程
扫描下方二维码或打开链接
获取大会门票