假设我们有一个初级开发人员在写 Rust,也在写 C,做的是同一个任务。我们会在其中一种语言中获得更快的代码吗?这控制了能力,但控制不了相同的代码。这是“相同”的吗?
2015年6月,Rust 1.0登陆的喧嚣一个月后,我写下了第一行Rust代码。我来自 C、Python 和 JavaScript,从此一发不可收拾。两家基于 Rust 的初创公司和 50 万行 Rust 代码之后,我在此对这一里程碑进行了一些反思。
Rust 中的非初始化缓冲区是一个由来已久的问题, John Nunley and Alex Saveau 想到了一种新方法,使用 Buffer Trait,现在已经出现在 rustix 1.0 中,我将在这篇文章中介绍。
Mozilla 在火狐浏览器中使用了 Rust;谷歌在 Android、Chrome OS 和 Fuchsia 中使用了 Rust;微软在其 Windows 核心库和 Azure Confidential Compute 中使用了 Rust。离我最近的是,Linux 内核现在也采用了 Rust。
在我看来,在 Rust 一侧做更简洁的版本反而更容易,一旦我们知道了它的样子,也许我们就会更新 C 语言版本以与之匹配–或者我们点燃一切,继续用 Rust 重写一切。
我们接受了挑战,做了自己的实验,尽管我们的工程师得到的时间和指令非常有限,但最终产生的 Rust 代码确实避免了与内存安全相关的漏洞。如果你愿意,甚至可以亲自尝试一下。
我学习 Rust 的方式并不常见:阅读教程、书籍或编写小项目。恰恰相反,我把学习 Rust 作为构建 Austral 的研究工作的一部分。我会阅读有关 Rust 的论文和规范,有时我还会去 Rust playground 写一个小程序,以了解借用检查器在特定边缘情况下是如何工作的
创建这个Rust新编程语言的目的是为了解决一个顽疾:软件的演进速度大大低于硬件的演进,软件在语言级别上无法真正利用多核计算带来的性能提升。