Rust 是一种语言,它为您提供
它是一种用于编写高度可靠、极速软件的语言,而且编写起来很有趣。
昨天,Rust 迎来了一周年纪念。
Rust 的数字
在过去的 365 天里发生了很多事情
今年的平均每周,Rust 社区合并了两个 RFC,并发布了 53 个全新的 crate。每天至少有一个新的 Rust 库出现在中央包管理器中。在今年的 StackOverflow 调查中,Rust 荣登“最受欢迎的语言”榜首。
说到数字:我们最近发布了一份 调查,想听听您是 Rust 的老手,还是从未使用过它。
我们希望看到数字的地方之一是社区多样性。我们一直在进行本地推广工作,但 Rust 社区团队很快将启动一项协调的全球推广工作,遵循 Bridge 模型(例如 RailsBridge)。如果您想参与其中,或有其他推广想法,请告知 社区团队。
Rust 在生产环境中
今年,更多公司 押注 Rust。每个公司都有一个故事,但有两个故事特别引人注目。
首先是 Dropbox。在过去的几年里,该公司一直在秘密地进行一项 从 AWS 转移到自己的基础设施 的行动。这项行动现已完成,包括开发定制硬件和驱动它的软件。虽然 Dropbox 的大部分后端基础设施在历史上都是用 Go 编写的,但对于一些关键组件来说,内存占用和缺乏控制阻碍了他们努力实现的服务器利用率。他们用 Rust 重写了这些组件。用该项目的主要工程师 Jamie Turner 的 话说,“Rust 的优势很多:非常强大的抽象,没有空值,没有段错误,没有泄漏,同时具有 C 般的性能和对内存的控制。”
其次是 Mozilla。他们长期以来一直在用 Rust 开发 Servo 作为研究型浏览器引擎,但他们的第一个生产 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 crate,可以很好地支持与 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 今年获得了许多功能,最值得注意的是 install 子命令。
- 编译器。我们已经看到编译时间方面的一些全面改进,现在提供并行代码生成以进一步加速。但最大的收益将来自对增量编译的持续工作,这将最大限度地减少编辑代码后重新编译代码时所需的工作量。这里一个至关重要的步骤是转向自定义中间表示,它也具有许多其他优势。另一个重点是错误,包括大多数错误的详细解释,以及正在进行的工作,以改进错误的“一目了然”可读性。预计很快将在这两个方面听到更多消息。
- 核心语言。今年我们有意地将一个列表保持简短:核心语言的增长。虽然我们有一些重要的功能正在筹备中(例如改进的错误处理、更灵活的借用规则和专门化),但Rust 用户总体上对核心语言感到满意,并希望社区专注于生态系统和工具。
关于 Rust 世界中已经发生的事情和即将发生的事情,还有很多话要说——在接下来的几个月里,我们将使用此博客来表达这些想法。
Rust 社区
事实证明,人们喜欢聚在一起谈论 Rust。去年 8 月,我们举办了一场爆满的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 生日快乐!