Google工程总监揭秘:Rust为何让开发者效率翻倍

发表时间: 2024-04-27 18:13

Google Android平台工具的工程总监Lars Bergstrom在伦敦举行的RustNation英国峰会上分享了这一消息。

过去几年,业界对于Rust的安全性和可靠性一直存在疑虑。 Bergstrom指出,由于担心“unsafe”这个关键字,许多人认为使用C++更为稳妥。然而,随着人们逐渐意识到非记忆体安全语言带来的挑战,以及美国等国家政府将目光投向软体在关键基础设施扮演的角色,这种观念正悄然发生改变。

Bergstrom强调,如今美国等国家政府都愈发重视软体在关键基础设施中的作用,而绝大多数大型代码库的安全漏洞都源于记忆体安全问题。由于Rust代码在恰当的使用下能有效避免此类问题,记忆体安全俨然成为了国家安全议题之一。

微软:建议新专案使用Rust取代C / C++

微软Azure首席技术长Mark Russinovich 早在2022年9月就建议新专案使用Rust取代C / C++。如今,这种趋势正从全新项目扩展到老旧代码的重写。今年早些时候,微软号召开发人员协助将C#代码移植至Rust。网路安全研究小组(ISRG) 的Prossimo项目也正致力于用Rust重写关键库的核心开源部分(例如NTP、DNS、TLS),以提升记忆体安全性。

当然,并非所有人都认同这一趋势。 C++创始人Bjarne Stroustrup认为,通过适当的工具,C++也可以实现与Rust等记忆体安全语言相同的保障,且成本更低。美国国家网路总监办公室发布的软体安全报告也引来了一些评论,指出记忆体安全只是软体安全挑战的一部分,不应该被过分夸大。卡内基梅隆大学软体工程研究所强调,每种程式语言都各有优劣,选择应以适合项目为原则。

然而,Google等Rust拥护者的实践案例则反驳了Stroustrup关于成本优势的说法。 Bergstrom表示,将Go 代码(被认为是记忆体安全但性能较低) 转写成Rust的过程中,Google取得了显著的成效,“迁移过程所需团队规模和时间几乎与Go开发相当,并没有降低效率。更重要的是,记忆体使用率降低了,漏洞率也随之减少,代码正确性得到提升。”

C++代码迁移至Rust的效率提升明显

更令人惊讶的是,将C++代码迁移至Rust的效率提升更加明显。

“在所有案例中,用Rust建构和维护服务的所需工作量都减少了一倍以上,” Bergstrom指出,“这对我们来说意义重大,因为C++代码的维护成本很高,需要庞大的团队投入大量精力,并且存在诸多风险。”

Bergstrom还提到,Google正进行类似的Java 到Kotlin 的迁移项目。根据内部匿名调查,两种情况下开发者掌握新语言并达到原有开发效率所需的时间大致相同。大约三分之一的开发者在两个月后,以及一半的开发者在四个月后表示他们在新语言中的工作效率与旧语言相当。

此外,超过一半的开发者认为Rust代码更容易审查。 Bergstrom分享了一个调查中最令团队惊讶的问题:“人们对自己团队的Rust代码的正确性有多么自信?” 调查结果显示,有85% 的开发者给出了肯定的答复。 Bergstrom表示,这是一个非常高的数字。