为了解决软件在语言级别上无法充分利用计算机多核计算来提升性能的问题,于是, Mozilla 针对计算机多核体系开发了具有强安全性、高性能和高并发性的编程语言 Rust 。近日,Rust核心团队宣布Rust 1.0 Alpha版本如期 发布 ,该版本的发布是Rust和其社区的一个重大里程碑。Rust 1.0 Alpha版本实现了1.0系列版本全部的语言特性和核心库,且路径相关操作和IO模块正在趋于稳定,至此,Rust 1.0版本将不会出现重大的改变。在接下来的1.0相关版本中,Rust将会继续完善相关文档、改进相关功能以及修复Bug。
Rust 1.0 Alpha版本在语言、核心库和文档方面的主要改进如下:
新增了 大小为动态的类型(DSTs)特性 ,这就意味着Rust在运行时就能够确定类型(数组、对象等类型)的大小;新增了多分派Traits特性,并提供了 许多相关API ,Traits是编写多态代码的工具,Traits已经支持关联类型;新增 Where子句 能够指定Traits的边界;新增了使用Traits系统的新方式Unboxed closures;对macro_rules系统进行了 重大的重构 ;关于整数类型的一些长期争论已经得到了 解决 ,int 和uint确定称为isize和usize,已不建议使用默认整数的功能;Rust使用标记Traits能够将数据分类(分为可拷贝、线程安全等),从提高了安全性。
大量的约束RFC 已经获得批准,并记录在了 Rust指导方针 中 ;所有的原语类型和基本的构建模块(如字符、字符串等)已经稳定;实现了 一系列的RFC 并改进了集合相关API ; 改进了Rust的并发模块,并新增了 一个线程API ; 完全剔除 了Rust的运行时系统和绿色线程模块( Green threading ),这是因为它们会把字符串的静态二进制大小一分为二,并且还会暴露访问标准库的Hook。
将《Rust指南》整合到 《Rust编程指南》 一书中;Rust相关实例放到了官方文档中;改进了一些API文档。
官方已经公布了有可能发生改变的功能和API 详细列表 以及Alpha系列版本的改进内容。主要改进内容包括 关联类型 的改进、 取消闭包 的改进、泛型的改进、Path模块的改进、IO模块的改进、Sync/Send的改进、整数类型的审计、功能文档的完善、API文档的完善以及Bug修复和功能优化。有关Rust 1.0的相关版本发布计划,请读者参见InfoQ一篇 关于Rust 1.0发布路线的报道 。
此外,从InfoQ的一篇最新报道中得知,Rust标准库的 稳定性仪表板 显示:稳定代码占已占44%,不稳定代码占52%,2%的未进行标记,而上一次更新(2014年10月份)是稳定代码占2%,不稳定代码占12%,标记为实验特性代码占77%,其余代码是标记为废弃的,或者没标记的。Rust由Web语言的领军人物 Brendan Eich (JavaScript之父)、Dave Herman以及Mozilla公司的Graydon Hoare联合开发,并遵循着大家所熟悉的Chrome/Firefox发布流程,使用夜间构建版本、Beta构建版本和发布构建版本。
Rust 1.0 Beta版本发布的消息公布后,国内外各大社区和网站的用户展开了热烈讨论,并引起了读者对Go、Python、Ruby等语言的对比讨论。 Hacker News 上已有 数百条相关评论 ,其中用户 eslaught 评论 到:
Rust 团队重新评估以前的决定给自己留下了深刻的印象,对于所有的迭代版本而言,自己认为Rust 1.0版本为所有迭代打下了良好的开端,如新增了动态大小类型和其他一些迭代设计的功能,在此恭喜所有做出贡献的人。
Reddit 上也有了数百条 相关评论 ,多数用户表示正式研究、学习Rust的时间到了,并表达了对Rust支持生产环境使用的期待,但也有用户抱怨Rust缺少文档和教程。
用户 fedekun 评论到:
相对于Go来说,我比较喜欢Rust的语法,同大多数Web开发者一样,自己对系统级编程语言不太熟悉,但是认为Rust正朝着正确的方向发展。
感谢郭蕾对本文的审校。
给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。