微软如何用 Rust 做创新:与 Rust 基金会主席的对话

77 阅读8分钟

欢迎关注公众号 猩猩程序员

wechat_2025-08-14_125617_342.png

本文来自 filtra.io/rust/interv…

以下是我与 Nell Shamrell-Harrington 的访谈,她是微软的首席软件工程师,也是 Rust 基金会董事会主席。Nell 为我详细介绍了 Rust 在微软的应用,分享了一些关于大公司如何采用 Rust 的经验,并给出了在微软求职的建议。我们还谈到了如何参与 Rust 基金会和 Rust 项目的工作。Nell 为社区做了大量的公开和幕后工作,以促进和支持社区发展。希望你们能像我一样享受这个与社区支柱人物的对话!如果你想了解更多关于 Rust 工作机会,可以访问我们广泛的 Rust 招聘板。


Drew: 通常我会问被访者关于他们公司的一些问题,但对于微软来说,这个问题似乎不太适用。所以,我觉得问一下你的日常工作内容会很有趣。

Nell: 当然可以。在加入微软之前,我在创业公司工作了九年。现在,我很高兴告诉大家我在微软工作,大家都知道这是什么地方。日常工作中,我参与的内容非常广泛。我所在的组织叫做 Azure Core,负责的是 Azure 的核心功能,包括计算、存储、网络等。在 Azure Core 内,我所在的团队是 Azure Core Linux 工程团队。我们主要专注于 Azure 上的 Linux 体验。

Nell: 当我在值班时,我负责微软所有区域和云平台上的 Linux 虚拟机配置。这个工作量是可以管理的,但也很紧张。微软的区域和云平台非常多。在不值班时,我担任 Linux 社区工程团队的技术负责人,专注于为 Fedora 和 Debian 等社区发行版做上游 Linux 贡献。我们的目标不仅是确保 Azure 支持这些发行版,还要确保这些发行版在文档和工作流程中也支持 Azure。我们确保两者能够良好协作。去年,我有个很有趣的经历,是我第一次为 Linux 内核做出了两个贡献,这让我非常兴奋。我移除了几条已经不需要的导入语句,而且很快就被接受了。移除不必要的代码是一个很好的入门方式。

Drew: 哈哈,真有趣。我听过很多人说他们第一次为一个项目贡献的内容就是清理类似的东西。

Nell: 作为一个长期的开源维护者,我喜欢收到这样的拉取请求。

Drew: 我敢打赌,大家都知道这些事情必须做,但核心团队成员往往不太愿意做,所以能够有新人来帮忙保持代码清洁真是太好了。

Nell: 是的,除此之外,我还共同领导了 OpenSSF 中的 Memory Safety 特别兴趣小组(SIG)。这也是我在微软的一部分工作。当然,我还代表微软担任 Rust 基金会董事会主席。

Drew: 听起来你很忙。

Nell: 非常忙,但我很喜欢这些工作,都是我感兴趣的事情。

Drew: 我其实没意识到你参与了 Linux 方面的工作,真不错。

Nell: 是的,Azure 上的 Linux 工作非常庞大。需要大量的工程师来确保它提供最佳的体验。

Drew: 这很有道理。我们谈到微软的 Rust 采用情况时,你提到了一些不同的方面,我觉得能帮我和读者理解 Rust 在微软的应用。你能详细介绍一下 Rust 在微软的不同应用场景吗?

Nell: 当然。我们看到 Rust 在 Azure 上的采用最为广泛。因为 Azure 的代码库相对较新,这也可以理解。稍后我会详细谈一下 Azure。除此之外,还有几个亮点。在硬件层面,我们正在用 Rust 编写 UEFI 固件模块。UEFI 是 BIOS 的替代品,提供了一些 BIOS 无法提供的基本安全功能。正如你们读者所知道的,固件操作在设备的最基础层面,所以如果攻击者入侵了固件,他们可以获得系统的深度控制。因此,我们选择用 Rust 编写固件模块,以减少设备在这一基础层面的攻击面。

Nell: 当然,微软最知名的就是 Windows 操作系统。我们也在逐渐将 Rust 融入 Windows 中。Windows 是一个庞大的代码库,所以我们从将一些组件移植到 Rust 开始。比如 DirectWriteCore,它负责渲染字体——我们在 Windows 上使用的那些美丽的字体。这个组件已经从 C 语言移植到了 Rust,性能提高了大约 5% 到 15%。

Nell: 另外,微软知名的软件产品还有 Office。我们也在将 Rust 融入其中。到目前为止,已经有一个项目是用 Rust 重新实现了 Office 365 中的语义搜索算法。我相信一些读者是 Office 365 用户,所以当你在搜索 Word 文档、PowerPoint 演示文稿等内容时,驱动这个搜索功能的算法现在是用 Rust 写的,我知道这个项目带来了显著的性能提升。

Nell: 正如我之前提到的,Rust 在 Azure 上的应用最为广泛。这包括 Azure Boost,Azure 的新集成硬件安全模块,Hyper-V 部分(Azure 的虚拟化平台)以及 HyperLite,它是一个轻量级虚拟机管理器,能够创建微型虚拟机或沙盒,用于在安全、低延迟的环境中运行不受信任的代码。这些是我目前可以谈论的主要项目。在 Azure 中,还进行着各种实验,非常高兴看到 Rust 在各个方面的采用。

Drew: 真不错,看起来 Rust 在公司各个重要领域的应用都在扩大。我知道你主要涉及 Azure,那你有没有特别感兴趣的项目?

Nell: 是的,我最感兴趣的项目应该是 Azure Boost。Azure Boost 是一张物理卡,它附加在 Azure 的专用服务器上。所有管理该专用服务器的虚拟化软件都被从主机上转移到这张物理卡上。这样,Azure 客户可以利用整个主机运行更多的虚拟机,且能够提供比传统专用主机更高的隔离性。正如你想象的那样,当软件控制硬件的关键部分时,安全性至关重要。因此,这个专用卡上的软件和主机虚拟化软件就是用 Rust 编写的。

Drew: 这是一个非常有趣的趋势,Rust 在云计算领域的采用正在快速增长。你提到过自己是 Rust 基金会董事会主席,这让我想了解一下你在该角色中的一些感受和挑战。

Nell: 在加入微软之前,我曾在 Mozilla 工作。开始筹划 Rust 基金会的构思,旨在建立一个可以拥有银行账户的实体,允许像大科技公司这样的公司捐赠资金来支持 Rust 生态系统。当时,我已经是 Rust 社区的成员,且自 2020 年起一直是《This Week in Rust》的主编,所以我对 Rust 社区的基本运作很熟悉。但我没有意识到,不同大公司之间的文化差异是如此巨大。微软的文化与亚马逊、Meta、谷歌等公司完全不同。我们不仅要解决基金会如何与 Rust 项目合作的问题,还要考虑如何让这些文化差异巨大的公司与基金会及项目进行有效互动。刚开始时确实有很多困难,但现在我们已经取得了很大的进展。

Drew: 真是一个非常难以预见的挑战。我想了解一下 Rust 在这些大型组织中的采用。你有经验和感受吗?

Nell: 从大公司到小公司,一旦开发人员克服了初期的学习曲线并开始编写 Rust,他们会非常喜欢它,因为 Rust 提供了内存安全的保障,而且错误信息非常清晰,能够帮助开发人员编写更好的代码。当然,刚开始时会有一些犹豫。比如,微软已经用 C 和 C++ 写了很多年代码。所以在微软内部,也有很多人对 Rust 持有初步的怀疑态度。但一旦人们开始实际使用它,Rust 就成为了一种游戏改变者。

Drew: Rust 的学习曲线的确是个挑战。基金会是否有一些缓解学习曲线的计划或者活动呢?

Nell: 确实有在进行相关的培训计划,许多公司,尤其是美国以外的公司,提出希望能够有某种认证体系,他们希望开发人员通过特定的培训并获得证书,以证明他们掌握了 Rust 的基础知识。

欢迎关注公众号 猩猩程序员