红帽白皮书新鲜出炉!点击获取,让你的云战略更胜一筹! 了解详情
写点什么

Facebook 是如何引入并使用 Rust 的?

  • 2021-07-05
  • 本文字数:2181 字

    阅读完需:约 7 分钟

Facebook是如何引入并使用Rust的?

Facebook 正在拥抱当今最受欢迎 、发展最快的一门编程语言——Rust。当前,Facebook 除了为公司内部的 Rust 团队引进人才,还正式加入了 Rust 基金会,与 Mozilla(Rust 的创造者)、AWS、微软和谷歌等其他成员一起,致力于维持和发展 Rust 的开源生态系统。


Rust 为开发者提供了类似 C++ 之类的老编程语言的性能,并更注重代码的安全性。如今,在 Facebook 有数百名开发者在编写数百万行 Rust 代码。很明显, Facebook 未来在这门语言上的投入会越来越大。在分享未来的具体投入举措之前,有必要先了解下 Facebook 早期是如何引入并使用 Rust 的。

2016~2017 年:早期用于源代码控制

 

我们最古老的 Rust 代码库可以追溯到 2016 年。当时,Facebook 单体仓库中的源代码变化率开始“侵占” Mercurial 源代码控制管理工具所能跟上的最大提交率。对此,Facebook 的源代码控制团队发起了一项名为 Mononoke 的重写项目,旨在将 Mercurial 的提交率再提高一些数量级,从而满足 Facebook 成千上万的开发者和自动化流程。

 

起初,使用 C++ 开发 Mononoke 显然是个选择。在那时,Facebook 的后端代码库对 C++ 非常重视,这意味着 Mononoke 默认会使用 C++ 实现。但是,源代码控制团队需要考虑源代码控制管理后端的可靠性需求,如果服务因停机或损坏而造成停顿时,那么可靠性就成了首要的考虑因素。因此,团队选择使用 Rust 代替了 C++。


Mononoke 是一款优秀的测试平台,因为它和其他 Facebook 系统有着天然的隔阂。如果 Mononoke 能够使用 Mercurial 协议与客户端服务进行对话,并使用 Thrift 协议与某些存储系统进行通信,那么选择 Rust 不会影响源代码控制团队工作之外的任何事情。


源代码控制团队愿意采用并且能够支持他们自己使用任何 Rust 特定的工具和基础设施。从 2019 年开始,Mononoke 就已经成为我们单体仓库的生产后端,并在过去几年里成功地扩大了规模。

2017~2019 年:采用曲线


Mononoke 足以证明采用 Rust 是可行的,随着时间的推移,其他项目也开始考虑和采用 Rust。一开始,这些项目通常是开发者的工具项目,它们不需要与更广泛的服务基础设施进行集成,也不需要小型服务 / 守护进程,只需围绕一些 C++ 客户端库使用几个手写的包装器就能完成工作。

 

在 Facebook 的 Rust 工程师中,有许多人具有 Python 和 JavaScript 的背景,他们很欣赏 Rust 结合了高性能与编译时错误检测这一特性。随着越来越多的成功案例(例如性能提升了 2 到 4 个数量级等)在公司内部流传,人们对使用 Rust 实现后端服务代码,以及探索其在移动应用程序中的应用的兴趣越来越浓。

2019~2020 年:Rust 得到了一些专门支持

 

2017 年到 2019 年,源代码控制团队成为 Facebook 内的非官方 Rust 支持团队。到了 2019 年,Facebook 的 Rust 开发者数量成倍增长,达到 100 多人。


增长背后的原因之一是,Rust 是开发 Diem(原 Libra)区块链的主要语言,由独立的 Diem 协会监督,而 Facebook 的数字钱包 Novi 就是 Diem 协会的成员。Diem 区块链主要是由 Rust 编写的,并涵盖了 94% 的开源代码库

 

考虑到需求的增加,源代码控制团队的兼职协助并不足以支持受益的团队数量。因此,我们创建了一个小型的 Rust 开发者体验团队,该团队致力于解决工具和集成方面的挑战,比如在生产非 cargo 构建中使用语言的开源包注册表生态系统的机制。该团队为整个公司的 Rust 开发者建立了一个中央连接点以解锁用例,优先考虑短期的开发者体验问题,改进核心库,并在刚刚起步的 Rust 代码库通过百万行大关时为其成功奠定基础。

未来(2021 年及以后)

 

2020 年底,我们在编程语言组织中成立了一个 Rust 团队,以重申我们的承诺,该团队还负责 Facebook 的 C++ 标准工作和工具链。

 

从近期来看,这个新团队主要关注四个方面:

 

  • 从语言和工具链的角度支持内部用户:这包括工具链的推出、横切迁移、代码审查 / 审计、最佳实践,以及作为语言和工具链问题的连接点。

  • 在 Facebook 以外的社区作出积极的贡献:该团队对标准库和编译器进行代码审查,并为 Rust 社区的优先事项提供开发者资源。

  • Rust 与 C++ 的轻松、安全的互操作性:我们拥有大量的 C++ 代码,用于与服务所建立的后端系统的通信。在不牺牲 Rust 的优点的情况下,我们需要开发者能够安全、轻松地使用这些库。相反,如果我们希望看到 Rust 组件与更大的 C++ 二进制文件集成,我们就需要智能运行时的异步代码互操作性。Facebook 的服务器是高度分布式的,并且有大量线程。Rust 任务需要在 C++ 的线程池中良好运行,并且能够安全地共享同步原语和 I/O 资源。为了提高异步性,支持并迅速采用了 C++20 的协程,我们在 C++ 方面做了很多工作。把 Rust 带到游戏中就是它的扩展,它将建立在 Rust 在异步库栈中已经完成的出色工作的基础上。

  • 积极支持并参与 Rust 基金会的工作:自 2016 年以来,Facebook 一直致力于 Rust 社区并扩大其与 Rust 的发展。通过加入 Rust 基金会,我们成为白金会员,进一步履行这一承诺,并希望以一种积极和有影响力的方式帮助 Rust 继续取得进展并得到应用。

 

Facebook 的 Rust 之旅远没有结束。这支团队虽小,但随着支持需求的增加,会不断壮大。Rust 在 Facebook 和整个行业的发展轨迹让我们感到兴奋和乐观,Facebook 内部的工作日程安排、开源贡献和更多面向社区的工作都将在 2021 年展开。

 

原文链接:

 

https://engineering.fb.com/2021/04/29/developer-tools/rust/

2021-07-05 10:573822

评论 1 条评论

发布
用户头像
julia对标python,rust对标c++,新一代编程语言来势汹汹。
2021-07-26 11:23
回复
没有更多了
发现更多内容

Secureworks 威胁评分迎来网络安全 AI 新时代

财见

pd虚拟机专用windows系统镜像(m1/intel)

iMac小白

flinkcdc 3.0 架构设计学习

Antgeek

flink 数据同步 flinkcdc

WorkPlus构建安全高效的内网通讯平台,助力企业内部协作

WorkPlus

软件测试学习笔记丨控件交互识别

测试人

软件测试 自动化测试 测试开发

dBpoweramp Music Converter for Mac(音频格式转换器)R2024.02.01直装版

iMac小白

Wall Clock与Monotonic Clock

fliter

CubeFS源码分析系列(一) 创建Volume

总想做点什么

6个.NET开源且强大的快速开发框架(帮助你提高生产效率)

EquatorCoco

.net 开源 开发 框架

商品信息全景图:API接口在聚合商品数据中的应用

Noah

使用草料的状态面板功能,扫码即可查看设备状态

草料二维码

二维码 草料二维码

Parallels Desktop 19 虚拟机 完美激活版 附pd19激活教程

iMac小白

WorkPlus助力企业构建高效沟通与协作的即时通讯平台

WorkPlus

WorkPlus Meet视频会议系统,支持局域网部署

WorkPlus

Office 365 Mac破解版

iMac小白

【节选】Go语言的100个错误使用场景|数据类型

不在线第一只蜗牛

Go 算法 前端 开发语言

WorkPlus提供全方位的即时通讯解决方案,助力团队高效沟通与协作

WorkPlus

WIFI 6E/IPQ5018 WITH QCN9074 Deliver new data experiences

wallysSK

SD-WAN的安全性体现在哪里?

Ogcloud

SD-WAN SD-WAN组网 SD-WAN服务商

远程桌面时连接不上远程计算机是什么问题

德迅云安全杨德俊

聚道云软件连接器:连接薪人薪事与携程商旅的桥梁,出差管理效率的新篇章

聚道云软件连接器

案例分享

flinkcdc 3.0 尝鲜

Antgeek

flink 数据同步 flinkcdc

开发技巧:Flask 项目如何自动生成 API 文档

Liam

Python flask 程序员 后端 API 文档

Aiseesoft Mac Screen Recorder for Mac(屏幕录像截图工具)v2.2.22激活版

iMac小白

商品管理系统:服装品牌提升工作效率的利器

第七在线

LigaAI 的 8 个年度关键词 | 2023 年度盘点

LigaAI

研发管理 研发效能度量 2023年终总结

萨曼莎AI结合MoE技术创新应用: 引领AI Agents落地新格局

Geek_2d6073

一键部署Palworld幻兽帕鲁服务器最佳实践

天翼云开发者社区

云计算 云服务器

【LLM】提示工程技术提炼精华分享

EquatorCoco

架构 AI 前端开发 LLM

WorkPlus助力企业构建高效沟通与协作的即时通讯平台

WorkPlus

AnyMP4 Audio Converter for Mac(多格式音频转换工具)v8.2.20激活版

iMac小白

Facebook是如何引入并使用Rust的?_语言 & 开发_Facebook工程_InfoQ精选文章