Google Android 工程总监 Lars Bergstrom 在近期举行的 Rust Nation UK Conference 大会上,介绍了他负责 Android 平台工具和库的工作中,将 Go 或 C++ 开发的项目迁移到 Rust 语言的一些经验。
Bergstrom 称,虽然早在 2016 年的 Dropbox 和 2018 年的 Figma 就提供了用内存安全的 Rust 语言重写代码的案例,开发人员对这种语言的开发效率不再质疑,但对其编写软件的可靠性和安全性仍然存疑。
大多数大型代码库中的安全漏洞都可以追溯到内存安全问题,由于 Rust 代码在正确实现时可以很大程度上避免这类问题,因此内存安全问题可能上升到涉及国家安全。随着一些组织尤其是美国政府机构发出 "建议从 C/C++ 切换到 Rust 等内存安全语言" 的消息,Bergstrom 认为,在软件开发生态系统中,关于使用非内存安全语言的认知已经发生了转变。
在 2022 年 9 月,微软 Azure 首席技术官 Mark Russinovich 就建议,新的软件项目以及用非安全语言开发的软件项目要重写都不应该再使用 C/C++,而应该改用 Rust。
早些时候,微软也发出呼吁,希望开发者将自己的C# 代码移植到 Rust中,而互联网安全研究组织 (ISRG) 的 Prossimo 项目一直在使用 Rust 重新编写关键库的核心开源部分(例如,NTP、DNS、TLS),以确保内存安全。
众所周知,Go 代码是内存安全但性能不及 Rust,所以 Google 进行了一系列的实践, Bergstrom 表示,Google 在将 Go 代码重写成 Rust 代码的实践中呈现出了一些优势,比如采用 Go 和 Rust 构建系统所消耗的人力和时间是差不多的,从 Go 转向 Rust 并不会降低开发效率。
Google 在将 C++ 代码重写成 Rust 代码做作比较发现:无论是用 Rust 构建服务,还是维护和更新这些用 Rust 编写的服务,所需的工作量都减少了 2 倍以上。并且有 85% 的开发人员对 Rust 代码正确性的信心要高于其他语言。
Bergstrom 表示,Google 内部流行新旧语言迁移,比如 Java 到 Kotlin 和 C++ 到 Rust,培训学习2个月,约1/3的的人可以熟练使用新语言编写代码,4个月一半以上的人可以熟练驾驭。
注:不得不感叹下Google大神们的学习能力,2个月竟然有1/3的人能驾驭 Rust,4个月就达到一半以上,着实牛逼!再想想我们自己学习 Rust 的酸爽程度,恨不能"每年入门一次Rust",很多人是反复入门(失败)而放弃,话说你是第几次入门 Rust 了?
Rust 确实很难学,不过,人之为学有难易乎?学之,则难者亦易矣;不学,则易者亦难矣。Rust 虐我千百遍,我待 Rust 如初恋!共勉!
注:Google Rust 培训课程: github.com/google/comp...
Bergstrom 称,这一实践发现对谷歌团队来说意义重大。因为 C++ 代码维护成本高昂,需要庞大的团队投入大量精力,并且存在诸多风险。
资料
- 原文链接:www.theregister.com/2024/03/31/...
- Rust Nation UK Conference 大会视频:www.youtube.com/watch?v=6mZ...
- Google Rust (英文版):github.com/google/comp...
- Google Rust (中文版):google.github.io/comprehensi...