写点什么

Rust 1.12 带来中级 IR

2016 年 10 月 19 日

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

2016 年 10 月 19 日 19:001681
用户头像

发布了 283 篇内容, 共 86.9 次阅读, 收获喜欢 38 次。

关注

评论

发布
暂无评论
发现更多内容

世界上最狠的语言

十三

NameNode和SecondaryNameNode工作机制

古月木易

NameNode econdaryNameNode

保障服务稳定之服务限流

X先生

架构设计 服务设计 后端开发 限流算法

Java开发Spark ELT实践(一)

团子粑粑

大数据 Apache Spark

Django框架,Flask框架和Tornado框架各有什么优缺点

奈学教育

django flask tornado

NameNode和SecondaryNameNode工作机制

奈学教育

NameNode

你好,工作!

小天同学

工作 心态 自我思考

行为型模式:迭代器模式解析

七哥爱编程

Java 编程 程序员 设计模式 迭代器模式

Week 08 命题作业

Jeremy

架构师训练营第八章作业

itrickzhang

国家版权局发布《关于规范摄影作品版权秩序的通知》

CECBC区块链专委会

电子存证 作品版权 侵权盗版 剑网2019

天天用SpringBoot,它的自动装配你能说出来吗?

java金融

Java spring springboot 自动装配 EnableAutoConfiguration

Flink 1.11 SQL 使用攻略

Apache Flink

flink

第八周作业

andy

极客大学

第八周学习总结

赵龙

架构师训练营第八章总结

itrickzhang

央行数字货币或将成为经济“内循环”的未来加速器

CECBC区块链专委会

数字经济 全球经济下行 降息 惠普金融深化

一周信创舆情观察(7.20~7.26)

统小信uos

架构训练营第八周作业

张锐

架构师训练营 - 第八周 - 学习总结

stardust20

shell实现SSH自动登陆

阿呦,简笔话_Golden

JVM详解之:汇编角度理解本地变量的生命周期

程序那些事

Java JVM 汇编 生命周期

乘商用之风,破后疫情之浪:丁耘分享华为如何持续护航5G新价值

脑极体

第八周作业

赵龙

设计过度有时比设计不足更可怕

菜根老谭

架构思维 过度设计 演化思维 设计不足

Week 08 学习总结

Jeremy

什么样的信任才值得拥有?谈一谈极客邦的5K1S文档

霍太稳@极客邦科技

Django框架,Flask框架和Tornado框架各有什么优缺点

古月木易

django flask tornado

第八周总结

andy

极客大学

架构师训练营 -- 第八周作业

stardust20

面经手册 · 开篇《面试官都问我啥》

小傅哥

面试题 Java 面试 面试经验 面试官

Rust 1.12带来中级IR-InfoQ