上图右侧显示了并发性和内存安相关的问题,这些问题根源上不可能发生在常规(非unsafe)Rust代码中。所以,只需要换成Rust,他们就可以杜绝这段时间内一大半的Bug,因为它们会导致机密泄漏、拒绝服务和远程代码执行漏洞。
Linux 内核是由业内顶级的 5% 中的佼佼者编写的,然而每年仍然可以在CVE(CVE是国际著名的安全漏洞库)中发现50多个安全漏洞。当然,与数百万行代码相比,这 50 个错误微不足道。但是,生死问题,还记得吗? 当我们谈论关键系统时,即使是微小的错误也可能导致灾难性的后果。更不用说这 50 个是发现的错误,谁知道还有多少没有被发现的? 如果使用Rust,我们会在编译发现这些问题 。
现在编程语言中的 内存安全伴随着垃圾回收的成本 ,并发通常通过同步原子性锁定所受影响的数据结构和执行路径进行解决。对于Rust来说,并不会采用运行时GC这种方式保证内存安全,Rust在编译时就解决了这些问题。
在C++
中,只需要为使用的内存负责。例如,在Rust中,只有在绝对需要时才使用Mutex,而且Rust编译器会强制你使用它,所以你永远不会忘记添加它。而这一切基本上都是零成本的。由于大多数检查是在编译器执行的,因此编译后的程序与C
或C++
编译器生成的程序集没有太大区别。正因为如此,Rust现在在嵌入式电子、物联网,甚至操作系统开发领域都非常有前途 – 以前由于高控制要求和严格的资源和性能限制,这些领域由C
主导。
Rust最新版本甚至为用户空间带来了SIMD支持。之前,由于API稳定性限制,它仅在beta
版本中可用。现在,你可以通过直接使用向量指令或使用方便的lib库来释放硬件的潜力