回溯 Rust 2020:正在成为最受欢迎的编程语言
【CSDN 编者按】在 2020 年,Rust 的 Github Star 数达到了 51K,Reddit Fans 则涨至 125 K,全年合并 PR 有 8114 个。这些数据无不在说明,Rust 正成为最受欢迎的编程语言。
当今世界科技发展日新月异,2015 年 5 月 15 日,Rust 1.0 版本正式面世,在这五年多的时间中,Rust 改变了许多,凭借自身的优势,Rust 也连续四年成为开发者最受欢迎的编程语言。目前,也有越来越多的项目及企业开始选择使用 Rust 作为其应用及工具开发语言。
发布的版本
2020 年,Rust 官方团队一共发布了 9 个主要版本,以及若干修订版。主要版本分别如下:
1.41.0 2020.1.30 发布
1.42.0 2020.3.12 发布
1.43.0 2020.4.23 发布
1.44.0 2020.6.4 发布
1.45.0 2020.7.16 发布
1.46.0 2020.8.27 发布
1.47.0 2020.10.8 发布
1.48.0 2020.11.19 发布
1.49.0 2020.12.31 发布
可以看到,官方团队采用的是 6 周的发布周期,并严格执行。
一些重大特性
今年的 Rust 版本更新中,有以下值得注意的功能升级。
v1.41 中的,孤儿规则适当放宽。也就是现在支持以下写法了:
impl<T> ForeignTrait<LocalType> for ForeignType<T> {
// ...
}
详情可参考:https://blog.rust-lang.org/2020/01/30/Rust-1.41.0.html#relaxed-restrictions-when-implementing-traits
v1.42 中的 Subslice patterns 和 matches!
Subslice patterns 指的是模式匹配里面,可以这样用了:
fn foo(words: &[&str]) {
match words {
["Hello", "World", "!", ..] => println!("Hello World!"),
["Foo", "Bar", ..] => println!("Baz"),
rest => println!("{:?}", rest),
}
}
fn foo(words: &[&str]) {
match words {
// Ignore everything but the last element, which must be "!".
[.., "!"] => println!("!!!"),
// `start` is a slice of everything except the last element, which must be "z".
[start @ .., "z"] => println!("starts with: {:?}", start),
// `end` is a slice of everything but the first element, which must be "a".
["a", end @ ..] => println!("ends with: {:?}", end),
rest => println!("{:?}", rest),
}
}
新增 matches! 宏。
// Using a match expression:
match self.partial_cmp(other) {
Some(Less) => true,
_ => false,
}
// Using the `matches!` macro:
matches!(self.partial_cmp(other), Some(Less))
let foo = 'f';
assert!(matches!(foo, 'A'..='Z' | 'a'..='z'));
let bar = Some(4);
assert!(matches!(bar, Some(x) if x > 2));
v1.44 主要有:
cargo tree 集成进 cargo 本身
no_std 支持 async/await 了
v1.46 主要有:
const fn 改进。它允许你在编译期做很多计算工作。比如, const-sha1 crate 可以让你在编译期计算 SHA-1 哈希。这导致在微软的 WinRT Rust 绑定的实现上,有 40 倍的提速。
v1.47 Traits on larger arrays。大数组上的 Trait。现在可以这样的:
fn main() {
let xs = [0; 34];
println!("{:?}", xs);
}
其它:
docs.rs 文档现在允许选择 build target 了。
rustdoc 中可更方便地作相对引用 link。
Mozilla 裁员事件
由于疫情波及,Mozilla 收支平衡产生了问题,Mozilla 在本年度共进行了两轮裁员。年初时,Mozilla 就已裁掉了 70 名雇员,总员工人数减少至 1000 名左右。而在 8月,又进行了 2 次裁员,本次再裁 250 人,占比高达 25%。裁员涉及到 Servo 团队和 Rust 团队中的一些成员。
Rust 基金会正式成立
此前 Rust 就准备成立单独的基金会,从而从 Mozilla 中脱离出来,进入更广阔的发展空间。而就在2月9日,Rust 基金会终于正式成立了(https://foundation.rust-lang.org/)!
Rust 基金会董事成员包括:亚马逊、Google、华为、微软和 Mozilla。另外,值得一提的是华为对 Rust 如此重视,应是看好国内 Rust 的应用和发展。
总体来说,成立该基金会的目的是为了 Rust 维护人员可以快乐地把工作做到最好,并且基金会的主要目标是启动 Rust 贡献者(特别是那些自愿提供且不受雇主支持的贡献者)。
整个软件行业似乎都在向着 Rust 迈进。AWS 使用 Rust 来部署 Lambda无服务器运行时,以及 EC2 的某些部分。Facebook 已开始使用 Rust,此外还有苹果、Google、Dropbox和Cloudflare也在使用。
Rust 语言中文社区 RustCC 的成长
在 2020 年,Rust 的 Github Star 数达到了 51K,Reddit Fans 则涨至 125 K,全年合并 PR 有 8114 个。这些数据无不在说明,Rust 正成为最受欢迎的编程语言。
回头来看国内社区。2020 年,Rust 语言中文社区公众账号的粉丝数量:截止2020年12月,已超过1w,以下是粉丝数增长曲线图。
城市分布:
性别分布:
社区内容建设
2020 年,社区小团队坚持创作。到年末,已经完成的创作内容有:
Rust FFI 编程 已完成 22 期。
Rust 每周一库 已完成 33 期。
Rust 每周一知 已完成 13 期。
Rust 日报 已完成超过 1000 期。
Rust 唠嗑室 已完成 18 期 。
2020 年停止了很多线下的活动,但是线上活动开启了。Rust 唠嗑室,定期在线举办线上 Meetup。并且一些出版社也引入了新的优秀 Rust 外文书籍,比如 Rust in action,将由社区的小伙伴们翻译。并且出版社也开始策划挖掘更多的 Rust 原创书籍。
展望 2021
Const generic 有希望稳定并发布
Rust 基金会会推动整个 Rust 社区快速发展
Bigtechs 带头大规模使用 Rust
Rust 在区块链研发领域继续拓展,逐渐占领头部份额
Rust 在云原生领域、Serverless 领域有突破性进展,在嵌入式、IoT 领域开始发挥作用
Rust 异步生态继续丰富完善
国内 Rust 语言影响力快速提升
相信,Rust 在未来 2~5 年内,会迎来一个爆发,并在主流程序员群体中广泛传播。
相关阅读:
Rust 2020 调查报告出炉
RUST CHINA CONF 2020/首届中国 Rust 开发者大会:https://live.csdn.net/room/u012067469/3VT3jORs
RUST CHINA CONF 2020/首届中国RUST开发者大会:https://live.csdn.net/room/u012067469/51UUkkjG