近日,Rust核心团队发布了 Rust 1.3稳定版 ,该版本提升了Rust语言的性能及API的稳定性。
在Rust官方博客文章" Rust 1.3发布 "中,团队介绍说, 该版本的发布使得Rust语言的稳定性有了大幅提升, 这其中"包含了新的Duration API函数以及对Error和Hash/Hahser的改进", 未来对std::time模块的改进有望在1.5版本中实现。
负责Duration稳定性方面工作( commit 26818 )的Rust语言开发人员 Steven Fackler 说,std::time模块和Duration类型的稳定性都得到了加强。Fackler强调说,Duration::span仍然不稳定,Duration的Display实现方法被删除了,原因是"它还在反复修改中并且所有关于稳定类型的功能实现事实上还算是稳定的"。
Fackler指出,这个提交会影响到任何使用Duration的Display实现的开发者。
继今年五月Rust 1.0的发布,Rust迎来了一个 快速 编译时代以及对于DST( dynamically-sized types )的全面支持。1.3版本的发行说明重点强调说" 新对象的默认生命周期 开始 于在对 新对象生命周期 变化的一个警告周期之后"。这是一个有可能影响其他功能的变化,例如将 &'a Box<Trait>
从 &'a Box<Trait+'a>
解释为 &'a Box<Trait+'static>
。
关于这个变化,开发者 Aaron Turon 在 RFC1156文档中说道 :
“当我们开始着手建立默认的对象边界时,[RFC599](https://github.com/rust-lang/rfcs/blob/master/text/0599-default-object-bound.md)文档规定`&'x Box<Trait>`(和`&'x mut Box<Trait>`)应该扩展为`&'x Box<Trait+'x>`(和`&'x mut Box<Trait+'x>`)。相对于那种出现在引用之外的Box类型,这种类型默认使用`static (Box<Trait+'static>`。做出这个决定的原因是,这么做意味着按照此类格式书写的函数可以接收更多的对象。”
Rust 1.3稳定版同时还提供了一些性能方面的改进,包括使用双路算法(two way)提升子字符串的搜索速度并将此做成固定的API,性能远超之前的实现方法。
其他值得关注的改进还包括“对于提升Vec::resize和 Read::read to end 零字节填充 速度的改进。”
提到 bug 25483 (使用StrSearcher完成原始字符串搜索), Rust开发者 bluss 说"双路搜索算法的常量空间开销非常小,不需要动态分配空间。我们的实现方法速度很快,尤其是当算法需要使用额外的的字节空间时,通常这些空间用来为许多不匹配情况(no-match cases)提高搜索速度"
Rust 1.3同时还提供了 对Windows XP 和 lint capping的支持 。更多详细内容请参考 发行说明 。
查看英文原文: Rust 1.3 Brings Stabilisation for APIs
感谢张龙对本文的审校。
给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ,@丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入InfoQ读者交流群 )。