@lsmn
2017-07-11T06:51:30.000000Z
字数 2568
阅读 2276
语言
Rust
近日,Rust核心团队成员Nicholas Matsakis在Rust官方博文上发表了一篇博文,介绍2017年Rust路线图上各项计划的进展情况。
近日,Rust核心团队成员Nicholas Matsakis在Rust官方博文上发表了一篇博文,介绍2017年Rust路线图上各项计划的进展情况。
学习曲线
Rust应该有一条较低的学习曲线。Matsakis指出,让Rust更容易学习的最简单方法是改进讲授Rust的方法。为此,他们致力于开发一个“Rust”官方图书的全新版本,目前已经完成草稿。该版本以Ownership为中心,然后扩展到Rust的其他方面,如错误处理、测试、匹配、模块,等等。此外,他们还致力于一些旨在提升语言工效学的语言改进,其中包括长期的提案,如非词汇生命期或impl Trait
,也包括一些新的想法,如最近获得通过的有关trait别名的RFC。
编辑-编译-调试
他们通过各种方法提升编译器性能。其中一个最简单的方法是Rust 1.16发布的cargo check
命令,该命令会跳过代码生成,只查找错误。由于代码生成通常占去了50%以上的编译时间,所以这在编写新代码的早期阶段非常有用。当然,你最终需要运行代码,为此你需要完整编译。为了加快编译速度,他们在努力改进编译器,实现增量编译,预计下个月可以完成。除此之外,他们还在做着其他优化编译时间的努力,其中最重要的要数perf.rust-lang.org
网站的上线运行。该网站将跟踪每个编译优化PR的效果。
IDE
Rust应该提供一个基本但可靠的IDE。自去年RustConf大会首次推出以来,Rust语言服务(RLS)增长迅速。现在,它可以支持大多数基本的IDE操作,如“转到定义”、“查找所有使用”以及代码补全。目前,他们的重点是简化RLS的安装(如通过rustup直接安装)以及修复Bug。如果想试用RLS,那么最简单的方法是使用VSCode插件。
Crates获取
随着crates.io生态系统规模的扩大,crates.io网站提供的查找和分类标准已经无法帮助用户找到他们需要的crates。为此,他们增加了分类和若干徽章,crate作者可以将它们添加到自己的crates上。这可以帮助人们查找特定用途的crates,并轻松判断它们的质量。此外,RFC 1824制定了一个改进crates.io默认分类的计划,并提供额外的信息帮助人们选择一个crate。下文会介绍到的“食谱”会提供一种以任务为中心发现crates的方法。
服务器开发
Rust应该具备编写健壮的服务器的能力。Futures crate和Tokio项目将继续研究异步I/O生态系统,这在Hyper和Linkerd-tcp中有大量的运用。此外,像Rocket这样的项目还在继续改善Rust-on-the-server工效学。目前,最大的障碍也许是async/await语法、更好的Tokio/futures文档及为生态系统提供一个可靠的HTTP基础。他们计划在年底的Rust每夜构建通道上提供async/await语法,并在2018年初提供稳定版本。
1级crates
Rust应该有用于基本任务的1级crates。Libz Blitz是一项系统性工作,其目的是为了找出Rust生态系统中使用最广泛的crates,确保它们的完备性和质量都达到同一个水平。
构建系统集成
Rust应该很容易集成到大型构建系统中。在这一方面,他们的主要工作是进一步明确面临的挑战,并有针对性地制定具体的提案,其中包括:
他们希望下半年可以加快推进这方面的工作。
社区指导
Rust应该在各个层面提供指导。RustBridge旨在向技术经验不足的人提供一个友好、有趣的学习环境,并向Rust新手提供优秀的课程。相关资料已经经过多次修订,将来还会继续完善。他们会在RustConf大会前一天举行RustBridge研讨会。他们还启动了Increasing Rust’s Reach,倾听技术经验不足人群的需求,让更多的人可以学习使用Rust。
此外,各种Rust团队也都采取了不同的措施,鼓励人们参与Rust项目:
嵌入式Rust
嵌入式Rust生态系统继续发展。近日,一个面向Cortex-M微控制器的裸机并发框架已经开发了出来。面向 Cortex-M微控制器的嵌入式操作系统Tock也在向着纯Rust用户态应用程序发展。
在编译器方面,经过社区的努力,MSP430架构支持得到了改善,而AVR架构支持工作也在进行之中。
另外,社区将创建一个硬件抽象层,作为构建嵌入式crate生态系统的基础。这项工作已经开始。
与其他语言的集成
bindgen
可以自动将C和C++集成进Rust代码库。bindgen
以头文件作为输入,并输出外部函数和类型声明,这样,就可以实现以最小的代码在Rust中使用C/C++程序库。bindgen
已经成为Stylo项目的关键基础设施。要想在项目里使用bindgen
,请查看bindgen
用户指南。总而言之,在过去的6个月中,Rust世界一片忙碌。感兴趣的读者可以跟踪问题列表,了解进展及做出贡献。