谷歌 Android 工程总监 Lars Bergstrom 在近期举行的 Rust Nation 大会上,介绍了该公司将 Go 或 C++ 编写的项目迁移到 Rust 语言的经验。
Bergstrom 称,虽然早在 2016 年的 Dropbox 和 2018 年的 Figma 就提供了用内存安全的 Rust 语言重写代码的案例,并且对生产率和这种语言的质疑已经消退,但对其可靠性和安全性的担忧却一直挥之不去。
不过随着一些组织以及美国政府机构频繁发出“建议从 C/C++ 切换到 Rust 等内存安全语言”的信号,Bergstrom 认为,整个软件开发生态系统的认知已经发生了转变。
就谷歌内部而言,在把被认为是内存安全但性能不佳的 Go 代码重写成 Rust 代码以后,已经呈现出了一些优势。Bergstrom 表示,采用 Go 和 Rust 构建系统所消耗的人力和时间是一样的;并且从 Go 转向 Rust 不会降低工作效率。
“有趣的是,我们确实从中看到了一些好处。我们在从 Go 迁移过来的服务中看到了内存使用率的降低......我们还看到,随着时间的推移,那些用 Rust 重写的服务的缺陷率也在降低,从而提高了正确性。”
值得一提的是将 C++ 代码重写成 Rust 代码后的比较。“在每种情况下,我们都发现,无论是用 Rust 构建服务,还是维护和更新这些用 Rust 编写的服务,所需的工作量都减少了 2 倍以上。”
Bergstrom 称,这一发现对谷歌团队来说意义重大。因为 C++ 代码维护成本高昂,需要庞大的团队投入大量精力,并且存在诸多风险。
且有 85% 的开发人员对 Rust 代码正确性的信心要高于其他语言。“这是一个庞大的数字......我一生中经历过不止一次语言调查,但从未见过这样的数字。”