本周在伦敦举行的Rust Nation UK会议上,谷歌负责Android平台工具库的工程总监Lars Bergstrom介绍了将Go或C++迁移到Rust的经验。
Go vs Rust
在Chocolate Factory,将Go代码(被认为是内存安全但性能不高)转换为Rust已经显示出了显著的好处。
当我们从Go切换到 Rust重写系统时,我们发现构建它需要大约相同规模的团队大约相同的时间。
也就是说,从Go迁移到Rust时,生产力没有损失。有趣的是,我们确实从中看到了一些好处。
- 从Go迁移到Rust的内存使用量减少了
- 随着时间的推移,在那些用Rust重写的服务中,Bug缺陷率有所下降,因此正确性有所提高。
C++ vs. Rust
更重要的是将C++代码重写到Rust中的比较:
- 在每一种情况下,我们都看到在Rust中构建服务以及维护和更新Rust中编写的服务所需的工作量减少了2倍以上
谷歌正在进行类似的迁移,将开发人员从Java迁移到kolin。
总体结果:
- 在两个月内,大约三分之一的开发者认为他们在新语言中的生产力与旧语言一样。
- 超过一半的开发人员表示Rust更容易代码评审
- 85%的人认为他们的Rust代码比系统中的其他代码更有可能是正确的。