白癜风换肤计 http://pf.39.net/bdfyy/bdfzd/141101/4508354.html年,连续四年成为开发者最受欢迎的编程语言的Rust,迎来了它在编程界驰骋的第五个年头。跟随Rust核心团队回顾过往,从Rust发展历程的点滴,其每个版本的更新迭代中,或许能发现Rust流行的真正原因。
Rust1.0版以来的主要变化
-增量式编译:在1.24之前,修改代码库后,rustc会编译全部代码。现在rustc变得非常聪明,会尽可能使用缓存来生成需要的东西。
-implTrait:新增的implTrait支持含义丰富的动态API,还能提供静态分发的好处和性能。
-全局分配器:之前你只能使用rust提供的分配器。有了全局分配器API,现在你可以使用自定义的分配器来实现自己的需求。这是实现alloc库的重要一步,alloc库是标注库的另一个子集,它仅包含需要分配器的部分,如Vec或String。现在我们可以更方便地在多种系统上使用更多标准库了。
版的发布是自1.0以来最大的一次版本发布,其中增加了许多语法的变化与改进,同时完全维持了Rust的向后兼容,可以让各种不同版本的库无缝协同工作。
非词法生命周期:这是对Rustborrowchecker的一个巨大改进,可以接受更多可验证的安全代码。模块系统改进:针对模块的定义和使用方式进行的巨大UX改进。常量函数:常量函数可以在编译时运行和计算Rust代码。Rustfmt1.0:专门为Rust打造的专用代码格式化工具。Clippy1.0:用于捕捉常见错误的Rustlinter。Clippy可以很轻松地确保代码的安全性和正确性。Rustfix:由于有许多语法改变,我们希望提供一个工具,可以很容易地进行代码转换。有了这个工具,只需要执行cargofix就可以解决语法改动的问题。
-自定义Crate仓库:随着Rust越来越多地在生产环境中应用,在非公共领域运行项目的需求也越来越大。尽管cargo允许依赖于异地的git代码仓库,但有了自定义Crate仓库,各个公司就可以很轻松地构建并共享自己的仓库,用于自己的项目中,就跟crates.io一样。
-Async/Await:async/await关键字可用于处理Future,这是Rust开始支持异步编程的一个重要里程碑。在Rust发布异步编程后仅仅六个月内就催生了各种各样高性能的生态系统。
-subslice模式:尽管不是最大的改动,但..(其余)模式的添加能够极大地提高代码在带有slice的模式匹配方面的表达性。
魅力点:不断改进的错误诊断
Rust的错误信息和诊断从1.0开始就在不断改进。现在看看最初的错误信息,就像是看着一个完全不同的语言一样。下面的例子展示了错误信息的改进,以及这些改进对于用户理解错误和修复错误的重要性。
例子(Traits)
1.2.0的错误信息
1.43.0的错误信息
魅力点:繁荣的技术生态社区
在过去的五年中,该语言发生了很多变化,同时社区也出现了很多改变。用Rust编写的优秀项目层出不穷,Rust在生产环境中的出镜率也呈指数级增长。我们想分享一些Rust成长的统计数据。
自Rust发布1.0版本后,已连续四年在StackOverflow开发者调查问卷上被评为“最受欢迎的编程语言”。仅今年一年,各个版本的编译器、工具和文档的下载流量加起来就超过了2.25PB(1PB=TB)!同时,crates.io上crates的下载量已有TB,下载次数18亿,与去年相比月流量比增长了一倍!Rust1.0发布的时候,使用Rust的公司屈指可数。如今,数百家科技公司在使用Rust,其中还包括一些世界顶级的大公司,比如苹果、亚马逊、Dropbox、Facebook、Google和微软,他们出于性能、可靠性和生产力的原因选择了Rust。
回顾五年间不断成长和改变的Rust及其社区,对于Rust未来十年的发展更是充满了期待。
原文链接: