2018年3月12日·Rust Core团队
每年,Rust社区都会聚在一起制定路线图。今年,除了这项调查外,我们还在12月发出了征集博客帖子的呼吁,结果在几周内写了100篇博客帖子。最终结果是最近合并的2018年路线图RFC。
Rust:2018年版
今年,我们将交付Rust 2018,这是Rust自1.0版(又称Rust 2015)以来的第一个主要新版本。
我们将像往常一样每六个星期继续发布发行。但是,我们将在今年下半年(Rust 1.29-1.31)将发布指定为Rust 2018。Rust的这一新“版本”将是全年功能稳定的最高潮,并将附带与这些功能相关的优美文档,工具和库。
版本的想法是表示Rust的发展中的主要步骤,从整体上看,新功能或习惯用法的集合改变了使用Rust的体验。每隔几年,他们就有机会以六周为增量评估我们完成的工作。讲述有关Rust的发展的更大故事。并将整堆产品作为抛光产品运输。
我们希望每个版本都有一个核心主题或重点。将1.0视为“ Rust 2015”,我们有:
- Rust 2015:稳定性
- Rust 2018:生产力
Rust 2018将是什么?
该路线图并不确定要在Rust 2018中发布什么,但是我们有一个很好的主意,我们将在下面介绍主要的可疑对象。
文档改进
Rust 2018发行版的部分目标是为全套新功能和改进功能以及由此产生的惯用法提供高质量的文档。Rust编程语言书在过去的18个月中已被完全重写,并且随着功能到达稳定的编译器,将全年更新。今年,Rust By Example也将进行翻新。而且还有许多第三方书籍,例如Programming Rust,也可以印刷。
语言改善
正在筹备中的最杰出的语言工作源于2017年的人体工程学计划。该计划几乎所有已接受的RFC都在今天晚上提供,并将在接下来的几个月中完善和稳定。在这些生产力的提高中,有一些“头条新闻”将构成该版本的主干:
- 所有权系统的改进,包括通过“非词法生存期”使借贷更加灵活,改进的模式匹配集成等等。
- 特性系统改进,包括期待已久的
impl Trait
抽象处理类型的语法。 - 模块系统的改进,重点是提高清晰度和降低复杂性。
- Generators / async / await:一流的异步编程支持工作正在迅速进行。
此外,我们预计在Rust 2018发行之前还会稳定一些其他主要功能,包括SIMD,自定义分配器和宏2.0。
编译器改进
从Rust 1.24开始,在稳定的编译器上默认启用了增量重新编译。此功能已经使显著比新鲜建造更快重建,但在这一年的过程中,我们期待继续改进 既新鲜和重建。编译器性能不应成为Rust 2018中生产力的障碍。
工具改进
Rust 2018将看到高质量的1.0版本的Rust语言服务器(“ RLS”,它是我们IDE集成故事的基础)和rustfmt
(Rust代码的标准格式化工具)。我们将通过稳定自定义注册表,公共依存关系和修订的档案系统来继续改进货运。我们还期望在Cargo构建系统集成,Xargo集成和自定义测试框架方面做进一步的工作,尽管目前尚不清楚其中有多少将在Rust 2018之前完成。
图书馆改进
在去年的工作基础上,我们将发布Rust API准则书的1.0版本,继续将重要的库推向1.0状态,通过改进食谱来提高可发现性,并在特定领域对库进行大量投资。会在下面看到。
网站改进
作为Rust 2018的一部分,我们将彻底改革Rust网站,使其对CTO和工程师都非常有用。查找信息以帮助您针对用例评估Rust并与最新工具和生态系统改进保持同步应该容易得多。
四个目标领域
Rust 2018的部分目标是证明Rust在特定使用领域的生产力。我们已经选择了四个此类领域进行投资并在今年重点介绍:
- 网络服务。Rust的可靠性和低占用空间使其非常适合网络服务和基础设施,特别是在大规模生产中。
- 命令行应用程序(CLI)。Rust的可移植性,可靠性,人体工程学以及生成静态二进制文件的能力共同为编写CLI应用程序带来了巨大的影响。
- WebAssembly。“ wasm” Web标准允许将类似本机的二进制文件运送到所有主要的浏览器,但GC支持仍需数年。Rust非常适合针对此领域,并为来自JS的程序员提供了一个合理的入口。
- 嵌入式设备。Rust有潜力使对资源有限的设备进行编程的工作效率更高且更有趣!我们希望嵌入式编程在今年达到一流的地位。
这些领域中的每一个都有一个专门的工作组。这些工作组将以跨领域的方式工作,并与语言,工具,库和文档工作进行交互。
跨版本的兼容性
TL; DR:Rust将继续保持其稳定性,即无忧地更新新版本。
版本将对编译器有意义。您将能够编写:
edition = "2018"
在您的Cargo.toml中选择使用新版本的板条箱。这样做可能会引入新的关键字,否则可能需要对代码进行调整。然而:
- 您可以在新的编译器上无限期地使用旧版本。版本是可选的。
- 版本是按板条箱设置的,可以混合和匹配;您可以使用与依赖项不同的版本。
- 一个版本中的无警告代码必须在下一个版本中进行编译,并且具有相同的行为。
- 与版本相关的警告(例如,标识符将在下一版中成为关键字)必须通过自动迁移工具(rustfix)易于修复。只有一小部分的板条箱需要做任何 手工工作才能加入新版本,并且手工工作必须最少。
- 大多数新功能与版本无关,即使选择了旧版本,新功能也可以在新编译器上使用。
换句话说,新的编译器版本的进度与版本无关。您可以在闲暇时进行迁移,而不必担心生态系统的兼容性;版本迁移通常是微不足道的。
2018年的其他目标
尽管Rust 2018发行版是我们今年的重点,但我们还需要关注一些其他持续存在的问题。
更好地服务于中型rustaceans
我们从生产用户那里听到的最强烈的信息之一,即2017年的调查,是人们需要更多的资源来使他们从了解Rust的概念到了解如何有效地使用它们。该路线图并未确切规定这些资源的外观(可能应该有几种),但是使我们作为一个社区致力于在这一领域投入大量工作,并以一些可靠的新材料来结束这一年。
社区
连接并增强Rust的全球社区。我们将国际化作为头等大事,并积极努力在当前被语言,地理或文化分隔的Rust子社区之间建立联系。我们将在全球范围内加速并支持Rust事件,包括RustBridge计划的进一步发展。
培养Rust的团队和其中的新领导。我们将重构Rust团队结构,以支持更大的规模,敏捷性和领导力增长。我们将通过创建更多的入门资源和直接的指导关系来系统地投资于指导。
行动呼吁
像在Rust世界中一样,这里提出的目标最终将是整个社区努力的结果-也许包括您在内!以下是我们可以为您提供最大帮助的一些团队。请注意,所有IRC通道均参考irc.mozilla.org网络。
- WebAssembly工作组。将Rust编译为WebAssembly应该是Web上快速代码的最佳选择。查看rust-lang-nursery / rust-wasm了解更多并参与进来!
- CLI工作组。在Rust中编写CLI应用程序应该是不费吹灰之力-从找到合适的库和编写简洁的集成测试到跨平台分发。加入rust-lang-nursery / cli-wg,帮助我们实现这一目标!
- 嵌入式设备工作组。质量,生产力,可访问性:Rust可以更好地改变嵌入式行业。让我们从2018年开始这个过程!加入我们https://github.com/rust-lang-nursery/embedded-wg
- 生态系统工作组。我们将为整个生态系统中的重要箱子提供指导和支持。进入WG-ecosystem会议室,我们将指导您到需要帮助的地方!
- 开发工具团队。开发人员工具(IDE,Cargo,rustdoc,Clippy,Rustfmt,自定义测试框架等)总是需要解决很多有趣的事情。加入#rust-dev-tools并与团队聊天!
- Rustdoc团队。在您的帮助下,我们可以为每个人提供更好的文档。快来加入我们在IRC上的#rustdoc,我们可以帮助您入门!
- 发布团队。在IRC上通过#rust-release参与回归分类和发布生产!
- 社区团队。我们已经在社区团队中启动了几个新团队,并渴望添加新成员:活动,内容,总机,RustBridge,调查和本地化!查看我们的团队仓库或访问我们的IRC频道#rust-community,以了解更多信息并参与其中!