Rust 是一门为您提供
它是一门用来编写高度可靠、极速软件的语言——并且在编写过程中充满乐趣。
而昨天,正是 Rust 满一周年。

Rust 的数字表现
在过去的 365 天里发生了很多事情
在今年的 平均每周,Rust 社区会合并两个 RFC 并发布 53 个全新的crate。没有一天没有至少一个全新的 Rust 库发布到中央包管理器。在今年的 Stack Overflow 调查中,Rust 更是荣登“最受喜爱的语言”榜首。
说到数字:我们最近启动了一项自己的调查,无论您是 Rust 的老手,还是从未接触过 Rust,都希望听到您的声音。
有一个方面,我们的数字还没有达到预期:社区多样性。我们一直在进行本地的推广工作,但 Rust 社区团队很快将启动一项协调一致的全球性工作,效仿Bridge模式(例如 RailsBridge)。如果您想参与其中,或者对推广有其他想法,请告知社区团队。
Rust 的生产实践
今年有更多公司选择信赖 Rust。每个公司都有自己的故事,但有两个特别引人注目。
首先是 Dropbox。在过去的几年里,该公司一直在秘密地进行一项工作,从 AWS 迁移到自己的基础设施。这项工作现已完成,其中包括开发定制硬件以及驱动它的软件。虽然 Dropbox 的大部分后端基础设施历来都是用 Go 编写的,但对于某些关键组件而言,内存占用和缺乏控制阻碍了他们实现服务器利用率的目标。他们用 Rust 重写了这些组件。用该项目首席工程师 Jamie Turner 的话说,“Rust 的优势很多:真正强大的抽象,没有空指针,没有段错误,没有内存泄漏,同时拥有 C 语言般的性能和内存控制能力。”
其次是 Mozilla。他们长期以来一直在用 Rust 开发研究性浏览器引擎 Servo,但他们首个 生产环境 的 Rust 代码是通过另一种方式发布的:Firefox。在 Firefox 45 中,静悄悄地,Rust 代码的mp4 元数据解析功能推送给了 OSX 和 64 位 Linux 用户;它将在 48 版本中支持 Windows。这段代码目前正在测试模式下运行,其结果与旧的 C++ 库进行对比:在报告的 1 亿次执行中,正确率达到了 100%。但这只是冰山一角:在为Rust 集成打下大量基础后,Firefox 准备引入大量新的 Rust 代码,包括来自 Servo 的组件——而且不只是在测试模式下。
我们从许多其他将 Rust 应用于生产环境的公司那里听到了类似的故事:Rust 帮助一个团队发挥出超越其本身实力的能量。它提供了与传统系统语言相同的许多优势,同时更易于上手、更安全,并且通常更高效。
这只是 Rust 在生产实践中的几个故事,但我们非常乐意听到您的故事!
改进的 Rust
当然,Rust 本身也没有停下脚步。第一年的重点是发展和完善其生态系统和工具
- 生态系统。标准库稳步扩展,增长集中在文件系统访问、网络、时间和集合等 API,并且文档覆盖率显著提高。通过 libc、winapi 和 gcc 等 crate,对 C 库的支持良好。此外,还有用于底层异步 IO、简易并行、无锁数据结构、类 Rails 的对象关系映射、正则表达式以及包括 html5ever 在内的几种解析库,其中 html5ever 是一个独特的 HTML5 解析器,它利用 Rust 的宏系统使代码尽可能地接近规范。当然,这些只是冰山一角,生态系统的增长、维护和协调一致——特别是在异步 IO 和 Web 技术栈方面——将在未来一年继续成为主要的关注点。
- 平台和目标。Rust 的内存占用与 C 语言相差无几,这使得它非常适合在各种地方使用。在过去的一年里,Rust 获得了直接使用 Windows 上原生 MSVC 工具链的能力,可以针对 musl(从而创建可在任何 Linux 发行版上使用的、零依赖的二进制文件),可以针对 Android 和 ARM 设备,以及更多平台。新的 rustup 工具使得管理和编译到这些各种目标变得轻而易举。从 Rust 1.6 开始,您可以使用 Rust 而不使用其完整的标准库,仅限于一个不需要任何操作系统服务的核心库(因此适用于用 Rust 编写操作系统)。最后,有越来越多的库用于将 Rust 代码嵌入到其他环境中,例如 node.js、Ruby 和 Go。
- 工具。因为 Rust 在表面上看起来很像 C 语言,所以它可以立即与各种现有工具一起使用;它可以开箱即用地与 lldb、gdb、perf、valgrind、callgrind 等等许多工具一起工作。我们的重点是通过添加Rust 特定的钩子和工作流程来丰富这些工具的使用体验。另一个主要优先事项是提供完整的 IDE 支持,部分是通过编译器提供守护进程服务;今年在这方面我们取得了良好的进展,并且得益于 Racer 项目,许多 IDE 插件已经为 Rust 提供了一些语义支持。同时,rustfmt 代码格式化工具已经成熟到 Rust 社区准备制定官方风格指南的程度。而 Rust 工作流程的核心,Cargo,今年获得了许多功能,其中最值得注意的是install 子命令。
- 编译器。我们看到了编译时间的全面改进,现在提供并行代码生成以进一步提高速度。但最大的收益将来自于正在进行的增量编译工作,这将最大限度地减少编辑代码后重新编译所需的工作量。这里至关重要的一步是转向自定义中间表示,这也带来了许多其他好处。另一个关注点是错误信息,包括大多数错误的详细解释,以及正在进行的旨在提高错误信息“一目了然”可读性的工作。预计很快将在这两个方面听到更多消息。
- 核心语言。今年我们故意缩短了一个列表:核心语言的增长。虽然我们有一些重要的功能正在规划中(如改进的错误处理、更灵活的借用规则和特化),但总的来说,Rust 用户对核心语言感到满意,并且更希望社区专注于生态系统和工具。
关于 Rust 世界中已经发生和即将发生的事情,还有很多话要说——在接下来的几个月里,我们将利用这个博客来讲述它们。
Rust 社区
事实证明,人们喜欢聚在一起讨论 Rust。去年八月,我们举办了售罄的 RustCamp,并在 2016 年有几场即将举行的活动
- 2016 年 9 月 9-10 日:首届 RustConf,在美国俄勒冈州波特兰举行;
- 2016 年 9 月 17 日:RustFest,欧洲社区会议,在德国柏林举行;
- 2016 年 10 月 27-18 日:Rust Belt Rust,一场 Rust 会议,在美国宾夕法尼亚州匹兹堡举行;
- 全球 71 个 Rust 相关线下聚会小组。
这并不令人惊讶。从个人角度来看,与 Rust 一起工作最好的部分是它的社区。很难确切地解释成为这个群体一员的感觉,但有两件事很突出。第一,它纯粹的 活力:每周都发生如此多的事情,以至于 Rust 本周动态对于任何希望跟上进度的人来说都是一个至关重要的资源。第二,它 受欢迎的精神。Rust 的核心理念是赋能——你可以无畏地编写安全、低级别的系统代码——这也在社区中得到了体现。我们都在这里学习如何成为更好的程序员,并在此过程中互相支持。
现在是开始学习 Rust 的最佳时机,无论是参加本地的线下聚会、在用户论坛打招呼、观看讲座,还是阅读书籍。无论您以何种方式进入,我们都欢迎您。
Rust,生日快乐!