微软新团队计划:将 C# 代码重写为 Rust,C/C++ 已被淘汰

发表时间: 2024-02-02 18:16

整理 | 苏宓
出品 | CSDN(ID:CSDNnews)

不止外部正在想方设法地基于 Rust 开发微软产品的替代品,就连其内部,也在有意扩大 Rust 编程语言的采用率,以此替业务线上核心的 C# 代码。

微软云服务向 Rust 代码看齐

这一次最新加入 Rust 浪潮的是来自 Microsoft 365 团队。根据其最新发布的招聘启事显示,微软欲聘请全职的 Microsoft 365 首席软件架构师,以此组建一个全新的团队,专注于采用 Rust 编程语言作为现代化全球规模平台服务以及更多领域的基础。

来源:https://jobs.careers.microsoft.com/global/en/job/1633482/Principal-Software-Architect

在其介绍中,该职位隶属于 Substrate App Platform 组,这是 Microsoft 365 核心平台组织的重要部分,构成了微软云服务的支柱。

“成功的候选人将是具有深厚 Rust 编程语言技能的人,或者愿意在短期内成为 Rust 专家,同时作为倡议领导团队的成员,做出贡献。职责包括指导 Rust 组件库、SDK 的技术方向、设计和实现,以及将现有基于 C# 的全球规模服务重新实现为 Rust”,微软写道。

微软全系列采用 Rust

要知道,这并不是微软第一次拥抱 Rust 这门语言。早些时候,微软 Azure 首席技术官 Mark Russinovich 在推特上发文,呼吁业界淘汰 C / C++,应改用更加安全的 Rust 语言:

说到语言,现在是时候停止用 C/C++ 启动任何新项目了,在需要使用非 GC 语言的情况下使用 Rust。为了安全性和可靠性,业界应该宣布这些语言已被淘汰。

在去年微软举办的 BlueHat 安全大会上,微软宣布计划用 Rust 重写部分 Windows 内核,理由是它的现代性、易用性和整体清晰度。

随即微软加快了推进「Rust 重写一切」的步伐,后来也陆续有媒体爆料:微软已经用 3.6 万行 Rust 代码改写了 Windows 内核,放弃了 C/C++;同时其还在 Microsoft Career 网站上发布了多个招聘启事,急需 Rust 精兵强将加入新的团队。

除此之外,2023 年 9 月,微软在发布新的 Azure 量子开发套件(QDK)预览版时,也透露了这一版本主要是用 Rust 编写的,可以轻松地将本机二进制文件定位为 Rust 编译器支持的任何平台,并构建 WebAssembly(通过 wasm-bindgen)以在浏览器中运行,最终该套件速度提高了 100 倍,代码大小减少了 100 倍。

同时,微软还是 Rust 基金会的白金会员,进一步巩固了对该语言的承诺。

针对这一趋势,有外媒点评道,尽管微软最近裁了不少人,但近期其在持续的招聘上加大了对 Rust 技术的透露,也向科技行业的工程师和专业人士传递了一个明确的信息:即在竞争日益激烈的就业市场中,适应并获得新技能,如 Rust,变得至关重要。它还预示着行业中的一个重要趋势,即越来越多的公司趋向于更安全、更高效的编程语言,如 Rust,用于其关键服务。


Rust 为什么能成为香饽饽?

当然不止微软,Linux 之父 Linus Torvalds 也曾坚定地分享过:“Rust 还没有真正成为下一个伟大的事物。但我认为,在明年,我们将开始集成驱动程序,甚至一些主要的子系统也将开始积极使用 Rust。因此,要让它成为内核的重要组成部分,还需要数年时间。但它肯定会成为内核的一部分。

同时,亚马逊的云服务、Google 的 Android、Meta /Facebook 的高性能构建系统....无不没有 Rust 的身影。除去大厂之外,几个月前 Facebook 法国前端工程师、React Native 和 Prettier 的联合创始人 Vjeux 在 Twitter 发帖,寻求有能力的开发者来使用 Rust 重写前端代码格式化工具 Prettier,并悬赏 1 万美元。

从编程语言的关键特性上来看,Rust 受到这些公司青睐的原因主要有几个方面:

  • 内存安全性:Rust 被设计为一种系统级别的编程语言,具有强大的内存安全性。它通过所有权系统、借用检查器和生命周期系统等特性,防止了常见的内存错误,如空指针引用、数据竞争等。这使得 Rust 在开发中更容易编写出安全且可维护的代码,尤其在需要高性能和低级别控制的场景下。

  • 并发性能:Rust 的所有权和借用系统使其在并发编程方面表现优异。它允许开发者在不引入数据竞争的情况下编写高效的并发代码,通过借用检查器(Borrow Checker)在编译时检查并发问题,而不是在运行时发生。

  • 系统编程:Rust 在系统编程领域表现出色,因为它提供了对硬件的低级别控制,并且允许直接访问内存,而且不需要运行时系统。这使得 Rust 成为编写操作系统、嵌入式系统和其他需要高度控制的应用的理想选择。

  • 跨平台性:Rust 具有很好的跨平台支持,可以轻松地在不同的操作系统上进行开发和部署。这使得 Rust 成为构建可移植和高性能应用程序的有力工具。

  • 与 WebAssembly(Wasm)的整合:Rust 对 WebAssembly 有天然的支持,使得它成为构建客户端和服务端的 WebAssembly 应用的良好选择。这使得 Rust 在一些云计算和 Web 开发领域受到欢迎。

用 Rust 重写代码需要付出什么样的代价?

就微软而言,也有不少网友不解,难道仅仅是因为性能问题,微软难道就要大费周章地弃用 C# 代码?但是 C# 也不像 Python/Ruby 那样慢。

对此,微软官方并未做出任何进一步的技术分享,不过有位开发者的分析获得了高赞,其表示:

有趣的事,微软首先决定用 Rust 重写,然后再去聘请一位首席架构师。由于他们的目标是采用 Rust,我有一种感觉,这是对 Rust 进行非核心业务评估的举措。正如其他人所指出的,为什么要用 Rust 替换 C# 呢?他们可能认为在预算内并值得为了评估而重写成 Rust 代码。我怀疑微软没有在不太关键的服务上进行技术评估之前,他们不会在所有业务中大规模转向 Rust。而且这个项目不在美国,对我来说更加确认了这不是业务关键的项目。

总体而言,对于 Rust 社区而言,这是个好消息,因为尽管微软目前没有用 Rust 替换他们的核心技术,但他们已经愿意在重要的底层服务上尝试使用 Rust。

还有用户评论道:

性能、无 GC、安全性,是微软采用 Rust 的关键原因。
一旦你拥有一个完成任务出色且相对成熟的微服务,优化运行时特性而非实现速度是有道理的。此外,现在有更多的人在使用 Rust 构建项目,因此你有更多有经验的开发人员和一个更加成熟的软件包社区可以利用。

最后,也并不是所有公司都适合用 Rust 来重写业务代码,业务代码迁移也并非一朝一夕可以完成的事情,其中需要综合技术、成本和人力资源等多方面的因素来考虑。

你是否在项目尝试过 Rust 语言?体验如何?欢迎留言分享你的看法。

参考:

https://www.theregister.com/2024/01/31/microsoft_seeks_rust_developers/

https://jobs.careers.microsoft.com/global/en/job/1633482/Principal-Software-Architect