Rust实战
上QQ阅读APP看书,第一时间看更新

1.2 在工作中提倡使用Rust

在工作中提倡使用Rust的效果如何?克服了最初的障碍,之后的发展往往就会很顺利。下面转载的2017年的讨论提供了一个很好的轶事。谷歌Chrome OS团队的一名成员讨论了将该语言引入项目中的情况:[11]

2017年9月27日,因迪

Rust是谷歌官方认可的语言吗?

2017年9月27日,萨克斯塞伦

回复作者:Rust在谷歌并没有得到官方认可,但有一些人在使用它。想要在这个组件里使用Rust的技巧就是,让我的同事们相信没有其他语言更适合这项工作,在这个例子中,我相信情况就是如此。

也就是说,要使Rust在Chrome OS的构建环境中发挥出色作用,还有大量工作需要做。不过,使用Rust的同事们为我解答了很多问题,帮了我很大的忙。

2017年9月27日,埃基德

“在这个组件中使用Rust的技巧就是,让我的同事们相信没有其他语言更适合这项工作,在这个例子中,我相信情况就是如此。”

我在自己的一个项目中遇到了类似的情况——一个vobsub字幕解码器,它用于解析复杂的二进制数据,而且有一天我希望将其作为Web服务运行。所以,我当然想确保我的代码里没有漏洞。

我用Rust编写了代码,然后使用“cargo fuzz”模糊测试来尝试发现漏洞。运行了10亿次模糊测试迭代后,我发现了5个错误。

令人高兴的是,实际上,这些错误中没有一个可以真的升级为漏洞。在每种错误的情况下,Rust的各种运行时检查都成功地发现了问题并将其转变为可控的恐慌。(实际上,这将导致彻底重启Web服务器。)

因此,我的主要收获是,每当我想要一种没有GC的语言,同时还想要该语言在安全性至关重要的上下文环境中是可以信任的,这时Rust就是绝佳选择了。此外,实际操作时,我可以静态链接Linux二进制文件(与Go语言类似),这是一个很好的加分项。

2017年9月27日,马尼舍尔思

“令人高兴的是,实际上,这些错误没有一个会真的升级为漏洞。在每种错误的情况下,Rust的各种运行时检查都成功地发现了问题并将其转变为可控的恐慌。”

这或多或少也是我们在浏览器中给Rust代码做模糊测试的经验,仅供参考。模糊测试发现了很多恐慌(以及调试断言/“安全”溢出断言)。在其中的一个测试用例中,它实际上发现了一个在类似Gecko的代码中被忽视了大约10年的错误。

从上面的讨论内容中,我们可以看到,寻求克服技术挑战的工程师们已经“自下而上”地在一些相对较小的项目中采用了Rust语言。从这些成功中获得的经验随后会被用作证据,证明完全可以用于开展更加宏大的工作。

从2017年年底以来,Rust不断成熟和壮大,已成为谷歌技术领域认可的一部分,并且在安卓项目以及Fuchsia操作系统的项目中,现已是官方所认可的一种语言。