BT

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

Rust 1.12带来中级IR

| 作者 James Chesters 关注 1 他的粉丝 ,译者 大愚若智 关注 9 他的粉丝 发布于 2016年10月20日. 估计阅读时间: 2 分钟 | GMTC大前端的下一站,PWA、Web框架、Node等最新最热的大前端话题邀你一起共同探讨。

Rust核心团队最近发布了稳定版的Rust 1.12,这是自从1.0版发布后最重要的一次更新。此次发布的新版提供了用户翘首以待的中级IR(Mid-Level IR,MIR),为该编译器未来的进一步优化铺平了道路。

在博客文章MIR简介中,Mozilla公司的Niko Matsakis称:

MIR介于现有的HIR(“高级IR”,近似于一种抽象语法树)和LLVM(“低级IR”)之间。以前如果遇到某个相当大规模的操作步骤,编译器会在“翻译”过程中从业已成熟的Rust转换为类似于机器代码的LLVM,但现在这一工作可以通过两个阶段完成,而经过大幅简化后的Rust,即MIR恰好居于这两个阶段之间。

Rust的开发者Steve Klabnik简化后的翻译过程使得我们有机会直接对MIR执行各种新的优化。

尽管Rust团队认为MIR并未提供任何“用户可见”的内容,但Matsakis提到可以大幅改进编译速度,同时可支持增量编译,此外执行速度也更快,可支持更准确的类型检查。

最新的稳定版Rust也提供了大量用户可见的更新,包括全新格式的Rustc错误信息,如下所示:

该团队解释说:

[新的错误信息格式]可以向开发者呈现有关为什么出错的大量内部知识,该版本会以用户代码为中心,并会高亮显示与错误有关的代码内容,同时可以通过注解描述具体的错误。

在新的错误信息格式中,我们会在显示错误信息的同时显示与该错误关系最紧密的代码内容。

最初这种形式的错误信息是为了帮助用户理解借用检查(Borrow-checking)错误,但我们发现这种格式也可以更广泛地用于各种类型的错误。如果想详细了解这种设计,请参考之前针对这一话题发布的博客文章

Mozilla工程师Jonathan Turner在博客文章错误信息塑型时代即将到来中着重介绍了相关的改进,并称通过使用开发者编写的代码作为上下文,Rust可以帮助用户更轻松地概括了解问题的所在。

1.12版还有其他改进,例如Cargo的工作空间功能已经可以让一组Rust包共享同一个Cargo.lock文件,这样开发者便可以更容易地在一个版本中保持共享的依存性。

Rust 1.12办完整的发布说明已公布至GitHub,新版可从这里下载。

查看英文原文:Rust 1.12 Brings Mid-Level IR

评价本文

专业度
风格

您好,朋友!

您需要 注册一个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