写点什么

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

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

关注

评论

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

行业大咖秀,第二期开播!

云计算

公网对讲SDK| 快速搭建公网对讲应用

anyRTC开发者

音视频 监听 快对讲 AI降噪 录音

真机调试设备不够?荣耀云调试帮你忙

荣耀开发者服务平台

开发者 手机 云服务 荣耀 honor

故障复盘究竟怎么做?美图SRE结合10年经验做了三大总结(附模板)

TakinTalks稳定性社区

运维 SRE SRE实践

全息投影正在威胁LED显示屏在舞台的地位

Dylan

LED显示屏 led显示屏厂家

一条 SQL 语句是如何执行的

说故事的五公子

MySQL 数据库 sql

C# ref用法,实现引用传递(地址传递)

IC00

C# 学习 程序员 上位机 10月月更

2022互联网母婴行业用户洞察

易观分析

互联网 母婴

基于纯前端类Excel表格控件实现在线损益表应用

葡萄城技术团队

前端 Excel 报表

云原生时代的DevOps平台设计之道

北京好雨科技有限公司

中原银行:基于StarRocks构建OLAP全场景架构解决方案,迈入极速统一时代

StarRocks

数据库

大学毕业后转行软件测试我后悔了

测吧(北京)科技有限公司

测试

kubernetes为什么会火?为什么值得我们学习?

王中阳Go

Kubernetes k8s 容器编排 10月月更 动态扩缩

写个JS深拷贝,面试备用

helloworld1024fd

JavaScript

中软鸿联:集聚智能化能量势场,点燃小家电创新星火

中软国际AIoT开发者社区

智慧家电

【数据结构之红黑树】深入原理与实现

C++后台开发

数据结构 后端开发 红黑树 linux开发 C++开发

KMP算法的实现详解

lovevivi

c 数据结构 10月月更

从零开始实现一个Promise

helloworld1024fd

JavaScript

NFT 数据基础设施 NFTScan 的产品介绍【科普】

NFT Research

区块链 NFT 数据基础设施

直播预告|Apache APISIX x KubeSphere 在线 Meetup 来袭

API7.ai 技术团队

APISIX KubeSphere

开源云原生平台对比 KubeSphere vs Rainbond

北京好雨科技有限公司

中软鸿联:数字为运动蓄能,智能为健康充值

中软国际AIoT开发者社区

智能穿戴 运动健康

MySQL高级--性能优化之慢日志查询

Java学术趴

10月月更

数据结构学习,串篇(顺序串及算法)

IC00

学习 数据结构 算法 学习笔记 10月月更

手撕常见JS面试题

helloworld1024fd

JavaScript

喜迎华诞,openEuler 22.09 正式发布,与1265名开发者共建面向数字基础设施的开源操作系统

openEuler

开源 开源操作系统 open Euler

MASA Framework的异常处理

MASA技术团队

.net MASA Framewrok MASA

开奖啦!看看 9 月月更获奖名单有没有你?

InfoQ写作社区官方

热门活动

ctk流程

留白的艺术

Qt | 本地存储配置信息 QSettings

YOLO.

qt 10月月更 C++

Qt示例 | 模拟时钟示例 Analog Clock Example

YOLO.

qt 10月月更 C++

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