3月12日,Rust官方博客正式发布了Rust’s 2018 roadmap。
该路线图是在广泛征求社区主流意见的基础上制定的,其内容充实且务实。它的发布令社区大多数人感到振奋。
据我个人总结,该路线图主要包含以下三点:
Edition系列大致类似于其它软件的“长期支持版”(LTS),但也有很大不同。Edition计划每3到5年发布一次,以发布时所在年份命名。今年将要发布的是Edition 2018,同时将此之前的Edition追授为Edition 2015(因为Rust 1.0在2015年发布)。
| 2015 edition | 2018 edition | 2022 edition
|--------------------|--------------------|--------------------
v1.0 v1.31 v1.65
如上图所示,Edition只是在1.x版本生长线上为某个区间打上标记/TAG。
我个人认为,推出Edition系列的目的就是为了方便引入“向后不兼容性”,同时将不兼容的危害控制在最小范围内。要怪只能怪1.0发布那时候把话说满了,官方不想也不能在1.x版本中破坏向后兼容性。可是,为了一些较小的破坏兼容性的特性(例如增补catch
关键字),就发布2.0、3.0吗?考虑到Python 3的教训,Rust决定铁了心一直用1.x版本,永不推出2.0、3.0,因为它给人的割裂感太强。
支撑Edition的核心措施是:一个编译器同时向后支持所有Edition。以编译器v1.31为例,它可以用2015 Edition的语义编译代码,也可以用2018 Edition的语义编译代码。升级编译器,并不会自动升级Edition;不升级Edition,就始终保持向后兼容。所以,即使用户为了代码兼容性不愿意升级Edition,也可以放心的升级编译器,享受新版编译器带来的性能提升、功能改进和BUG修复。库(crate),依赖库和被依赖库,都可以各自独立的选择Edition,互不影响,一个编译器就能把它们编译进同一个项目里。要想升级新Edition,需在Cargo.toml文件里增加一行edition = "2018"
;新创建的项目会自动加上这一行。未明确指定Edition的旧项目会被认为edition = "2015"
。
在语言方面,impl Trait
, Trait, Module, Macros 2.0, Generators/async/await
标准库方面,SIMD, custom allocators
编译器方面,incremental recompilation, non-lexical lifetimes, Performance
文档方面,2nd book, rustbyexample, api-guidelines
以官方开发人员为主导,集合社区活跃贡献者,组建多个工作组,在各自领域深入开展工作,力求在年底前形成较为完善的生态环境,成熟到可以应用于生产环境。
futures/promise, tokio, await/async, generators/corountins
arm/cortex-m, avr, risc-v, msp430,
Arduino, OpenWRT, Raspberry Pi
working-group
@japaric
embedded-hal
svd2rust
Tock-OS
working-group
https://hacks.mozilla.org/2018/03/making-webassembly-better-for-rust-for-all-languages/
https://hacks.mozilla.org/2018/01/oxidizing-source-maps-with-rust-and-webassembly/
stdweb
Rust makes writing crossplatform, tested, modern command line applications frictionless while incorporating industry best practices and providing great documentation.
working-group
clap
docopt
structopt
quicli
在该2018路线图发表前后,有两个相关事件值得关注:
3月13日,Rust获得Stack Overflow主办的2018年度最受群众欢迎奖,这是Rust连续3年获此殊荣,可见并非偶然。这个需要正确解读:Rust用户中有高达78.9%的比例喜爱这门语言;反过来说顶多有21%的用户痛恨这门语言或对之无感。爱的人多、恨的人少,说明Rust能很好地解决用户痛点,能真正地黏住用户。反观别的某些语言,虽然用户总量很大,但其中有很大比例是因为工作需要或生活所迫,真正喜爱该语言的比率却不高。不喜欢却又不得不用,是一件很无奈的事情。
2月15日,W3C发布WebAssembly首个公开工作草案,标志着WASM规范1.0已经基本成型。而WASM在实际工作中的应用其实早就开展了。在目前所有编程语言中,对WASM的支持而言,Rust依然属于国际领先水平。