写点什么

Rust 1.12 带来中级 IR

  • 2016-10-19
  • 本文字数:862 字

    阅读完需:约 3 分钟

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:002339
用户头像

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

关注

评论

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

chrome调试工具之Elements

格斗家不爱在外太空沉思

浏览器 11月月更 elements

数据中台的最后一公里:数据服务

元年技术洞察

数据中台 中台 DaaS

React组件之间的通信方式总结(上)

beifeng1996

React

React源码解读之React Fiber

flyzz177

React

ReactDOM.render在react源码中执行之后发生了什么?

flyzz177

React

年前端react面试打怪升级之路

beifeng1996

React

chrome调试工具之Console

格斗家不爱在外太空沉思

浏览器 浏览器测试 11月月更

从零到一手写迷你版Vue

helloworld1024fd

JavaScript

chrome调试工具之Sources

格斗家不爱在外太空沉思

浏览器 浏览器测试 11月月更

高频js笔试题看这一篇就够了

helloworld1024fd

JavaScript

这样回答前端面试题才能拿到offer

loveX001

JavaScript

从纯函数讲起,一窥最深刻的函子 Monad

掘金安东尼

前端 11月月更

一大波vue面试题及答案精心整理

bb_xiaxia1998

Vue

百度前端react面试题总结

beifeng1996

React

说说前端经常考的手写题

helloworld1024fd

JavaScript

React源码分析2-深入理解fiber

goClient1992

React

计算机网络:数据链路层功能

timerring

计算机网络 11月月更 数据链路层

vue组件通信6种方式总结(常问知识点)

bb_xiaxia1998

Vue

一步步实现React-Hooks核心原理

helloworld1024fd

JavaScript

通俗易懂的React事件系统工作原理

夏天的味道123

React

promise执行顺序面试题令我头秃,你能作对几道

loveX001

JavaScript

js异步编程面试题你能答上来几道

loveX001

JavaScript

React源码分析3-render阶段(穿插scheduler和reconciler)

goClient1992

React

React组件之间的通信方式总结(下)

beifeng1996

React

ElasticSearch这些坑记得避开

Java 架构

vue组件通信方式有哪些?

bb_xiaxia1998

Vue

企业级业务架构设计:方法论与实践 学习笔记

程序员架构进阶

业务架构 TOGAF 11月日更 Zachman

React源码分析4-深度理解diff算法

goClient1992

React

决策树-泰坦尼克号幸存者预测

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

前端必会面试题总结

loveX001

JavaScript

React Context源码是怎么实现的呢

flyzz177

React

Rust 1.12带来中级IR_开源_James Chesters_InfoQ精选文章