BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Rust最新版本1.23揭秘

| 作者 Sergio De Simone 关注 12 他的粉丝 ,译者 张健欣 关注 1 他的粉丝 发布于 2018年1月16日. 估计阅读时间: 3 分钟 | GMTC大前端的下一站,PWA、Web框架、Node等最新最热的大前端话题邀你一起共同探讨。

看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料!

内存使用率的减少是Rust最新版本中最显著的优化,这通过避免不必要的拷贝来实现。此外,rustdoc目前使用一个兼容CommonMark的引擎来渲染文档。

据Rust团队称,通过避免为特定对象创建副本,rustc内存使用率降低了5-10%,尽管这个数据可能随着被编译的具体程序而变化。rustc目前强制本地变量和方法参数要完全相同。这可以在rustc将参数绑定给一个本地变量时不必再创建一份这个参数的拷贝。这个拷贝行为是原来就存在的因为本地变量和参数在MIR级别的不同而需要进行的遗留处理行为,并在某个时间点被移除。除了优化内存使用率,这种优化还可以通过避免同时显示本地变量和传入参数的信息而使得调试信息更加清楚。当本地变量绑定了一个可变的值时,调试信息会变得更加混乱,因为在参数没有改变的同时调试器可能会显示本地变量在变化。

另外一个有趣的变更是,rustc提供在LLVM中对TrapUnreachable的支持,这使得LLVM将unreachable指令翻译成硬件陷阱。以前,控制流可以绕过无法到达的指令,访问到内存中在这条指令之后执行的代码。现在,这个变更可以降低unreachable代码的未定义行为的影响。

在文档方面,rustdoc一直努力完全兼容CommonMark。在Rust 1.23版本中,文档用Rust语法渲染器——Hoedown和兼容CommonMark的渲染引擎进行渲染。这种行为会保持一段时间,在渲染过程中如果有差别被发现,rustdoc会给出警告,从而让文档维护人员修复这些差别。在将来的版本中,兼容CommonMark的引擎会成为默认引擎。

Rust 1.23版本还增强了一些库的稳定性,包括增加对原始类型的AsciiExt trait。这意味着,u8、char和str不用导入AsciiExt` trait就可以使用它的任何方法。

Rust的包管理器——Cargo,也进行了优化,包括支持一次性卸载多个包以及用cargo install --version来安装某个包的特定版本

Rust 1.23包含了许多变更和优化,可以通过运行rustup update stable来更新。

查看英文原文:Rust 1.23 Improves Memory Usage and More


感谢罗远航对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

深度内容

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT