毫无疑问,Rust 目前发展势头正劲。此前,微软安全响应中心探索采用 Rust
的消息引发大量关注,在连续四年蝉联“最受开发者喜爱的编程语言”后,Rust
可能已经从“想要学习的语言”逐渐转变为许多开发者“正在学习的语言”。自从四年前首次发布稳定版以来,它已经得到了广泛的采用,谷歌,微软和
Mozilla 等公司都在使用 Rust。现在,AWS 也向 Rust 伸出了橄榄枝。

澳门葡萄京官方网站 1

近日,AWS 在其开源博客上发文宣布赞助 Rust
语言。迄今为止,Rust
已在 AWS 中实现了许多增长,Lambda、EC2 和 S3
等服务都选择在性能敏感的组件中使用 Rust。AWS 开源的 Firecracker microVM
项目也正是采用 Rust 编写。

新智元推荐

澳门葡萄京官方网站 2

来源:InfoQ

AWS 从 Rust 维护者的视角解释了他们赞助该项目的原因:

作者:王文婧

  • 性能。Rust
    非常快且内存效率高:没有运行时或垃圾收集器,它可以为关键性能服务提供支持,可以在嵌入式设备上运行,并且可以轻松地与其他语言集成。
  • 可靠性。Rust
    的丰富类型系统和所有权模型保证了内存安全性和线程安全性,并能使开发者在编译时消除许多类的错误。
  • 生产率。Rust
    拥有出色的文档,友好的编译器以及有用的错误消息以及一流的工具——集成的软件包管理器和构建工具,具有自动完成和类型检查的智能多编辑器支持,自动格式化程序等。

微软近日提出,未来将使用 Rust 作为 C、C++
以及其他编程语言的替代方案,以改善应用程序的安全性的计划。

接着,AWS 还列举了几个优秀的 Rust
库,并称赞了它的包容性社区,最后表示“Rust 连续四年被评为 Stack Overflow
的最受欢迎语言不足为奇”。

近日,微软安全响应中心团队在官网更新文章,就近日提出的最新计划,即未来将使用
Rust 作为 C、C++
以及其他编程语言的替代方案以改善应用程序的安全性的计划,从空间内存安全、时间内存安全、数据竞争等方面进行了进一步的深入补充。

对于 Rust 来说,它可以使用 AWS 服务来执行以下操作:

首席安全技术经理 Gavin Thomas
表示,开发人员的核心工作不是担心安全性,而是做好功能开发,首先需要启用一种
“不会引入内存漏洞隐患” 的开发语言。显然,这一次的主角是 Rust。

  • 在 S3 上存储发行工件,例如编译器、库、工具和源代码。
  • 澳门葡萄京官方网站,在 EC2 上使用 Crater 运行整个生态系统范围的回归测试。
  • 操作 docs.rs,该网站托管发布到中央 crates.io
    软件包注册表的所有软件包的文档。

过去 12 年,约 70% 的微软补丁针对内存漏洞

曾在 Mozilla 工作,并且是 Rust 团队成员的 Alex Crichton 认为这项赞助使
Rust 能够在 AWS 上可持续地托管基础架构,他还指出“使 Rust
项目的赞助商多样化对于其长期成功也至关重要”。

如今,内存漏洞已成为黑客攻击的主要对象。据微软最新调查数据显示,在过去
12 年里,约 70% 的微软补丁都是针对内存漏洞的。

(文/开源中国)    

自 2004 年以来,微软安全响应中心
已经对每一个报告的微软安全漏洞进行了分类。从所有的分类中,人们得出了一个令人惊讶的事实:正如
Matt Miller 今年在 BlueHat IL
的演讲中所讨论的那样,大多数修复的漏洞和分配的 CVE
都是由开发人员无意中将内存损坏错误插入到其 C 和 C++
的代码中造成的。这两种存在内存漏洞风险的编程语言允许开发人员在代码被执行的地方对内存地址进行细粒度控制。开发人员内存管理代码中的一个错误可能导致大量内存漏洞,攻击者便可利用这些错误造成具有危险性和侵入性的后果,比如远程代码执行
和权限升级漏洞。

澳门葡萄京官方网站 3

数据来源:微软安全响应中心网站

近年来,随着微软增加其代码库并在代码中使用更多的开源软件,这一问题并没有得以解决,反而变得更糟,而微软也并不是唯一一个暴露出内存漏洞的企业。

在官网发布的最新文章中,微软安全响应中心团队就如何解决内存安全问题进行了如下分析,

为了解决内存安全问题,需要采取几种不同的方式。C++ 中的 “现代”
构造能够在一定程度上预防某些内存安全问题。此外,我们应尽可能使用其它现代
C++ 功能。

然而,现代 C++
仍然不具备全面的内存安全与数据争用机制。更重要的是,如果程序员不加以运用,这些功能本身将毫无意义;而且这些功能在规模较大,且较为模糊的代码库可能也无法奏效。再者,C++
缺乏能够在安全抽象当中打包不安全代码的良好工具,这意味着虽然能够在本地级别强制执行正确的编码实践,但开发人员仍很难在
C 或者 C++
当中构建出能够安全组合的软件组件。除此之外,我们应尽可能将软件最终迁移至具备全面内存安全特性的语言当中,例如,通过运行时检查以及垃圾回收机制,实现内存保护的
C# 或者
F#。毕竟,内存管理是一项极为复杂的功能,最好是确保必要时才与其打交道。

Rust 的优势

多年来,微软始终在寻找更安全的 C 和 C++ 的替代品。2016 年 6
月,微软曾开源 “Checked C”,这是 C
语言的一个扩展,它带来了一些解决安全问题的新特性,但依然没有彻底解决问题。由于自动内存管理,Microsoft
还有其他更安全的编程语言,C#和.NET 系列是一个,编译为 JavaScript 的
TypeScript 是另一个。这些语言被 Microsoft
及其客户广泛使用,但它们无法满足所有需求。对此,微软安全响应中心首席安全技术经理
Gavin Thomas 表示:“如果开发人员能够将确保内存安全的
.NET,C#等语言与高效的 C ++ 结合起来,那就太好了。也许我们可以。”
因此,Rust 成为了这项计划的主角。

据了解,Rust 创建于 2006 年,被创建者 Mozilla 称为 “C / C ++
的替代品”。最初,它只是 Mozilla
的一个研究项目,旨在开发更安全、快速的编程语言以重写 Firefox
浏览器,大多数开发人员认为它是一个理论项目,而如今 Rust
正在逐步证明自己的实力。2016 年 8 月发布的 Firefox 48 采用了以 Rust
构建的 mp4 轨道元数据解析器,该解析器首次在 Windows 和 32 位 Linux
桌面提供。最近,Brave 浏览器用 Rust 替换了最初用 C ++
编写的广告拦截组件。Cloudflare 和 Dropbox 目前也在生产系统中运行 Rust。

Rust 的显着特征包括:

零成本抽象

移动语义

保证内存安全

没有数据竞争的线程

基于特质的泛型

模式匹配

类型推断

最小运行时间

高效的 C 绑定

Rust
团队表示,它具有丰富的系统和所有权模型,可确保内存安全和线程安全。此外,它还提供文档,包含集成的包管理器和其他有助于提高开发人员工作效率的工具。更为重要的是,Rust
从一开始就设计了防止内存损坏的漏洞。它的语法也更为简单,由它编写的应用程序不会产生相同数量的错误,因此开发人员可以专注于扩展其应用程序,而非进行持续的维护工作。

根据 StackoverFlow2019 年开发者调查报告的数据显示,Rust
是如今最受欢迎的编程语言,因此更容易招募到相关开发人员。相比之下,在这项调查中,受访者将
C 列为第四个最讨厌的编程语言,C++ 则排名第九。

澳门葡萄京官方网站 4

澳门葡萄京官方网站 5

StackoverFlow2019 年开发者调查报告数据

据了解,目前,除 Mozilla 之外,全球有数百家公司正在使用 Rust,如
Amazon、Atlassian、Dropbox、Facebook、Google、Microsoft、Red Hat 和
Reddit 等。在国内,百度、字节跳动、 PingCAP、蚂蚁金服、知乎、SenseTime
等企业也都在使用 Rust。

Rust 存在的问题

然而,Rust 仍存在一些不足。据先前的一项调查显示,它需要改进的方面包括:

更好的人体工程学

更好的文档

更好的库支持

更简单的学习曲线

更多的 IDE 支持

一些用户在谈及为何不使用 Rust
的原因时表示,“尽管学习曲线和语言的复杂性仍是人们学习 Rust
的阻碍,但令许多人产生共鸣的一个方面是,只是还没有足够活跃的采用 Rust
的商业项目让人们参与其中……
对于一些人来说,只要有强烈的动机,他们就可以克服 Rust 的学习曲线。”
此外,受缺少 IDE 支持的影响,约 10% 的用户正在寻找更好的 IDE 支持,而 5%
的老用户因此停用 Rust。

对于这项或将构建新的语言生态的计划,微软安全响应中心首席安全技术经理
Gavin Thomas 表示,“我们是一个响应组织,但我们也发挥积极的作用
“,“我们应该从一开始就努力防止开发人员引入问题,而不是为解决问题提供指导和工具
“。目前,关于何时在其产品或云服务上使用 Rust,微软还没有具体透露。

(本文经授权转载自InfoQ)