Meta 已开始用 Rust 重写其移动消息传递基础设施,逐步替换工程师称难以维护且工作起来令人沮丧的遗留 C 代码库。在The Metatech Podcast 的第 76 集中,Meta 消息传递基础设施团队成员概述了迁移的动机,将内存安全、开发者满意度和长期可维护性列为主要驱动因素。
该工作核心的库在每个 Facebook、Messenger、Instagram、Instagram Lite、VR 头显和可穿戴设备构建中都有,每天触及数十亿用户。
开发者将旧的 C 运行时描述为函数长达数百行且需手动管理内存:变量在文件顶部分配,上千行后才释放,即使是小的重构也感觉很危险。“意大利面条引发意大利面条”……Meta 软件工程师 Elaine 打趣道,捕捉到了一种破窗效应,即混乱的代码会引发更多混乱。内存管理错误偶尔会溜入生产环境并升级为难以调试的值班事件。
Rust 的编译时所有权检查消除了这类错误的整个类别,但团队强调日常的幸福感和安全性一样重要。更清晰的语义、使用rustfmt进行确定性格式化以及Rust-Analyzer的实时反馈,使得迭代更容易且反馈更快。性能仍然重要,但驱动指标已转向开发者速度和信心。
学习 Rust 的曲线通常被视为令人望而生畏。大多数处理重写的工程师几乎没有或没有 Rust 背景——Elaine 开玩笑说她只知道“螃蟹标志”,后来还梦到了move
关键字。为支持这一过渡,团队依靠一对一的演练和耐心的代码审查来加快入职速度。
Meta 的开源文化也有所帮助:向特定的 Rust 工作组提出问题会得到专家答案,将陡峭的学习曲线转变为共享的冒险,而不是单独的障碍。
工具改进已延续到运营中。如今,工程师可以在混合的 C/Rust 堆栈中设置断点,并观看调试器无缝跳转到 Rust 框架,同时有完全符号化的移动崩溃日志——这在几个月前是不存在的支持。
随着更快乐的工作流程、更快的反馈和更安全的重构的实施,工程师们表示对进行更改更有信心,工程师 Buping 表示 Rust 的编译时检查使识别和修复损坏的代码更容易。
Rust 工作组吸引了整个组织的工程师,他们有动力在移动设备上实现 Rust 的生产化。虽然长期路线图尚未明确,但内部兴趣的早期迹象表明采用的意愿在增长。
Meta 的团队认为现在量化迁移节省的时间还为时过早,但他们可以从其他走在这条路上的人那里获得鼓励。Cloudflare报告说开发更快、更可靠,代码更易于工程师理解。Google在从 C++转移时得出了类似的结论,指出贡献者在 Rust 中编写、审查和构建代码所需的努力更少。这些例子一起强调了开发者体验,而不仅仅是原始性能,正在成为语言和工具迁移中的决定性因素。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。