原文:One year of Rust
作者: Aaron Turon
译者:范长春,中科院自动化研究所毕业,在微软中国STC部门工作两年,后来加入了百纳武汉做android版海豚手机浏览器,目前在武汉的另外一家创业公司工作。从事过后台开发、Android开发等,比较熟悉C++、C#、Java等。
责编:钱曙光,CSDN Rust 学习交流群拥有多位Rust资深研究者、布道者,如果你想零距离接触大牛和贡献者,请加群主微信qshuguang2008申请入群,备注:实名+公司名+Rust。
Rust是这样一门语言:
Rust语言可以用于编写高可靠性的,高性能的软件 —— 请尽情享受使用它吧。
5月16日,Rust迎来了它的一岁生日。
关于Rust的数字
在过去的365天中它成长了许多:
在过去的一年中,Rust的社区 平均每周 都会合并两条RFCs,发布53个新开源库。每一天,Rust都会至少会有一个新的库更新到中心包管理工具中。
在StackOverflow的调查中,Rust获得了“最受热爱的编程语言”的称号。
提到数字,Rust社区也有一个调查,无论你是使用Rust的老用户,还是从来没有用过,都可以参与。
产品中的Rust
这一年来,我们看到更多的公司投入了Rust。每一家都有自己的故事,其中两家公司尤为显著。
第一家公司是Dropbox。过去的几年间,公司一直在偷偷进行一个秘密项目——将自己的服务从亚马逊的AWS迁移到自己的服务器上。
现在迁移已经完成了,包括开发定制的硬件和软件驱动。由于历史原因,他们的后端很多核心组件是用Go语言写的,一些关键模块的内存消耗以及缺乏控制力阻碍了他们充分利用硬件性能。
后来他们用Rust重写了这些组件。用项目的核心工程师Jamie Turner的话
说:“Rust的优点很多:强大的抽象,没有空指针,没有段错误,没有泄露,像C语言一样的性能,和内存控制力。”
第二家公司是Mozilla。Mozilla开发Servo很长时间了,这是一个用Rust写的研究用的浏览器,
但是他们在正式发布的产品中第一次使用Rust代码却是在Firefox上。在Firefox45中,他们使用Rust的代码来在OS X和64位Linux上解析mp4。
在Windows平台中,该功能将会在48版本中正式上线,目前处于测试状态,与遗留代码的C++库相比,在10亿次执行报告中正确性达100%。
这还只是冰山一角而已,在完成了一系列的Rust代码集成基础工作后,Firefox已经准备引入大量新的Rust代码,
其中包括许多Servo中的模块 —— 这可不是只在测试模式使用。
还有很多公司将Rust用在产品中,
Rust帮助他们超越极限,它有其他传统系统编程语言都有的优点,但是更加方便,更加安全,更加高产。
这只是Rust在生产环境应用的少数例子,我们还想听到您的故事!
Rust的改进
当然,Rust也在不断进步。第一年的主要关注点在发展生态系统和工具。
- 生态系统。标准库正在不断扩展,主要集中在文件系统,网络,时间和集合的APIs等,还有文档覆盖率引人注目的大幅改进。
还有通过libc winapi 和 gcc 对调用C库的良好支持。
还有新的底层异步io支持 轻松的并发
无锁数据结构 像Rails的对象关系映射ORM 正则表达式,还有一系列的
语法解析库。
包括 html5ever,一个特别的使用Rust的宏系统实现的尽可能符合标准的HTML5解析库。
以上还只是蜻蜓点水般的生态系统成长介绍,当然,生态系统的成长将会一直是接下来发展的重点(特别是异步IO和web开发方面)。 - 平台和目标。Rust的内存占用并不比C语言多很多,这使得它适合于在各种目标平台使用。在去年,Rust实现了直接在Windows平台的原生的MSVC工具链上工作,
还支持了musl目标(这意味着生成的程序不依赖任何Linux变种),还支持了Android目标平台和ARM设备,以及许多其它的平台。
全新的rustup工具可以轻松管理和编译代码到这些目标平台。
在Rust 1.6中,你可以在不包含完整的标准库(只需一个核心库即可)的情况下使用Rust。
核心库并不依赖任何操作系统服务,因此使得Rust也可以用于编写操作系统。
最后,越来越多的把Rust嵌入到其它环境中的库开始出现,比如node.js,Ruby和Go。 - 工具。Rust的外部表现就和C语言一样,这让它可以使用很多原有的工具,例如lldb,gdb,perf,valgrind,callgrind等。Rust社区致力于提供对Rust定制的工具,来提高对Rust的支持,优化工作流程。另一个亮点是提供对IDE的支持,通过编译器提供守护服务来实现;去年我们在这方面有不错的进展。
而且,多亏了Racer项目,大量的IDE 插件 以及可以提供许多Rust的语义支持。同时,rustfmt 代码格式化工具已经成熟,Rust社区已经准备发布一个官方代码风格。
最令人心动的是Cargo,去年增加了很多功能,尤其是安装子命令。 - 编译器。社区全面提高了编译的速度,现在还可以并行生成代码,以进一步提高。但是最大的进步,将来自于正在开发中的增式编译,可以减少编辑代码之后重新编译时候的工作量。其中的一个关键的步骤是,定制的内部表示,它同时还可以带来许多其它的好处。另外一个关注点是编译错误,包括
编译错误的详细解释,和正在进行中的改进错误的可读性。我们希望很快能看到它们的进展。 - 核心语言。社区在这一年中保持了一个简单的目标:核心语言持续成长。我们在生产线中有一些重要的特性,例如改进错误处理,更加灵活的借用规则和泛型特化等,大多数的用户都很满意,他们希望社区注重生态系统和工具。
关于Rust,还有许多许多发生了的,以及即将发生的事情值得讲。在接下来的几个月中,我们将会在这个博客中继续讲。
Rust的社区
大家喜欢聚到一起讨论Rust。我们去年八月举办了RustCamp,而且还有一些活动将会在2016年举办:
- 2016年9月9-10日,首届Rust会议RustConf,在美国波特兰举行 Portland, OR, USA;
- 2016年9月17日,欧洲社区会议RustFest,在德国柏林举行 Berlin, Germany;
- 2016年10月27-28,一个Rust会议Rust Belt Rust,在美国匹兹堡举行 Pittsburgh, PA, USA;
- 71个世界各地的Rust相关的聚会
没有意外。从我个人的视角来说,与Rust打交道的最好的部分就是,它的社区。很难解释作为这个社区的一员是什么样子的,我想谈两点感受。
首先,是它的十足的活力:每周都会发生那么多事情,任何人想跟进的话,This Week in Rust是不可或缺的资源。
其次,是它的热情的精神。Rust的核心寓意之一是,授权——你可以无所畏惧地写出安全、底层的系统代码——而且这个品质也在社区中体现出来了。
我们在这里学习怎么成为更好的程序员,而且也帮助其他人更好。
现在就是开始学习Rust的最好时机,无论是通过参加本地的聚会,在用户论坛users forum发言,观看演讲,或者读Rust入门书。
无论您通过哪种方式,我们非常高兴欢迎您!
生日快乐!Rust。
近期版本更新
编辑推荐本站Rust资源:
- 【专家极力推荐】Rust开发技术学习路线(你想要的都在这里!)
- 【专家极力推荐】Rust 1.0发布半年后社区涌现的项目集锦
- 【在线视频分享】以coroutine-rs为例深入浅出Rust协程库
- 【微信群分享】冯耀明:Java和Rust在实现多线程编程时的异同
- 【微信群分享】王川:Rust与异步并发的那些事儿
- 【微信群分享】唐刚:Rust是近15年最佳工程实践的集大成者
- 【技术文章】D语言架构师Andrei Alexandrescu谈D、Go、Rust取代C/C++
- 【技术文章】批判Rust语言,以及C/C++为什么永远不会死
- 【技术文章】为什么你需要近距离接触Rust 1.0
- 【技术文章】使用Nickel开发Web应用:从第一行代码到Heroku部署
- 【技术文章】我眼中的编程语言Rust和GO
- 【专访】专访冯耀明:Rust具有C的速度且不用担心内存泄露
- 【专访】专访Elton:浅谈C++、Go的挑战者Rust
- 【专访】专访Liigo:我为什么要选择Rust?
- 【Rust一周集锦】(一)、(二)、(三)