Rust 是一门能为你提供以下特性的语言:
它是一门用于编写高度可靠、速度惊人的软件,并且能从中获得乐趣的语言。
昨天,Rust 满一岁了。

Rust 数据
在过去的 365 天里,发生了很多事情
在今年的平均每周,Rust 社区合并了两个 RFC,并发布了 53 个全新的crates。没有哪一天没有至少一个 Rust 新库进入中央包管理器。在今年的 StackOverflow 调查中,Rust 荣登“最受欢迎的语言”榜首。
说到数据:我们最近发起了我们自己的调查,无论您是 Rust 的老手还是从未使用过它,我们都希望收到您的反馈。
我们有一项数据还没有达到我们的期望:社区多样性。我们一直在进行本地推广工作,但 Rust 社区团队很快将根据 Bridge 模型(例如 RailsBridge)发起一项协调的全球性工作。如果您想参与其中,或者有其他推广的想法,请告知社区团队。
Rust 在生产中
今年有更多公司选择 Rust。每家公司都有自己的故事,但有两个故事尤其令人印象深刻。
首先是 Dropbox。在过去的几年里,该公司一直在秘密地致力于从 AWS 迁移到其自己的基础设施。这项迁移(现已完成)包括开发定制硬件以及驱动它的软件。虽然 Dropbox 的大部分后端基础设施在历史上都是用 Go 编写的,但对于某些关键组件而言,内存占用和缺乏控制阻碍了他们实现他们所追求的服务器利用率。他们用 Rust 重写了这些组件。正如该项目的首席工程师 Jamie Turner 所说,“Rust 的优势很多:非常强大的抽象能力,没有 null,没有段错误,没有内存泄漏,同时还具有 C 语言般的性能和对内存的控制。”
其次是 Mozilla。他们长期以来一直在开发 Servo 作为 Rust 中的研究浏览器引擎,但他们的第一个生产 Rust 代码是通过另一种途径发布的:Firefox。在 Firefox 45 中,没有任何宣传,用于 mp4 元数据解析的 Rust 代码发布给了 OSX 和 64 位 Linux 用户;它将在 48 版本中面向 Windows 用户发布。该代码目前以测试模式运行,其结果与传统的 C++ 库进行比较:在 10 亿次报告的执行中,正确率达到 100%。但这只是冰山一角:在为 Rust 集成奠定了大量基础之后,Firefox 准备引入大量的新的 Rust 代码,包括来自 Servo 的组件,而不仅仅是在测试模式下。
我们从其他一系列正在将 Rust 投入生产的商店那里听到了类似的故事:Rust 帮助团队发挥出超乎其规模的作用。它提供了与传统系统语言相同的许多优势,同时更易于上手、更安全且通常更高效。
这些只是 Rust 在生产中的几个故事,但我们很乐意听到您的故事!
Rust 的改进
当然,Rust 本身也没有停滞不前。它第一年的重点是发展和完善其生态系统和工具
- 生态系统。标准库不断扩展,重点是文件系统访问、网络、时间和集合 API,以及大大改进的文档覆盖范围。通过 libc、winapi 和 gcc crates 可以很好地支持使用 C 库。以及用于 低级异步 IO、简易并行、无锁数据结构、类似于 Rails 的对象关系映射、正则表达式和多个解析库的新库,包括 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 今年获得了许多能力,最值得注意的是安装子命令。
- 编译器。我们已经看到编译时间全面改进,现在提供并行代码生成以进一步加速。但是最大的收获将来自正在进行的 增量编译工作,这将最大限度地减少在编辑代码后重新编译代码所需的工作量。这里的一个关键步骤是转移到自定义中间表示,它也有许多其他好处。另一个重点是错误,包括大多数错误的详细解释,以及正在进行的改进错误“一目了然”可读性的工作。期待很快听到更多关于这两个方面的信息。
- 核心语言。我们今年有意识地保持一个列表简短:核心语言的增长。虽然我们有一些重要的特性正在开发中(例如改进的错误处理、更灵活的借用规则和特化),Rust 用户总体上对核心语言感到满意,并且更希望社区关注生态系统和工具。
关于 Rust 世界中发生的事情和即将发生的事情,还有很多要说的 - 在接下来的几个月里,我们将使用此博客来说明它。
Rust 社区
事实证明,人们喜欢聚在一起讨论 Rust。我们在去年八月举办了一场门票售罄的 RustCamp,并在 2016 年举办了多场即将到来的活动
- 2016 年 9 月 9-10 日:美国俄勒冈州波特兰市首届 RustConf;
- 2016 年 9 月 17 日:在德国柏林举行的欧洲社区会议 RustFest;
- 2016 年 10 月 27-18 日:在美国宾夕法尼亚州匹兹堡举行的 Rust 会议 Rust Belt Rust;
- 全球 71 个与 Rust 相关的 聚会小组。
这并不奇怪。从个人角度来看,使用 Rust 最棒的地方在于它的社区。很难解释加入这个群体是什么感觉,但有两点特别突出。首先,是它强大的活力:每周都会发生很多事情,以至于Rust 本周动态对于任何希望跟上进度的人来说都是至关重要的资源。其次,是它热情好客的精神。Rust 的核心信息是赋能——你可以无畏地编写安全、底层的系统代码——这在社区中得到了体现。我们在这里都是为了学习如何成为更好的程序员,并在这样做时互相支持。
现在是开始使用 Rust 的最佳时机,无论是通过参加当地的聚会,在用户论坛上打招呼,观看一个演讲,还是阅读这本书。无论您以何种方式加入,我们都会很高兴有您。
Rust,生日快乐!