写点什么

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

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

关注

评论

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

【Java知识点详解 10】为何要配置环境变量,rabbitmq的消息持久化原理

Java 程序员 后端

【Spring AOP】静态代理设计模式,大牛带你直击优秀开源框架灵魂

Java 程序员 后端

【Spring Cloud 8】熔断与限流Sentinel,java常见面试题

Java 程序员 后端

【数据结构与算法 9】谁发明的八皇后,mysql教程视频百度云

Java 程序员 后端

【Linux 4】定时任务调度与进程服务管理,java编译器下载教程

Java 程序员 后端

【Spring Boot 26】分别在SpringBoot和Vue中解决跨域问题

Java 程序员 后端

【Spring Boot 4】如何优雅的使用 Mybatis,linux内核深度解析

Java 程序员 后端

【Spring5,贼厉害

Java 程序员 后端

【并发编程】深入了解volatile(1),linux操作系统教程海南师范大学

Java 程序员 后端

【新】虚拟机深层系列,java底层实现原理

Java 程序员 后端

【全栈最全Java框架总结】SSH,java线程池面试问题

Java 程序员 后端

【深度思考】JDK8中日期类型该如何使用,java面试题百度网盘

Java 程序员 后端

【Java知识点详解 10】为何要配置环境变量(1),java从入门到精通第五版电子书百度云

Java 程序员 后端

【MyBatis 1】SQL注入,Java技术功底不够如何去面试

Java 程序员 后端

【Spring Boot 15】启动类原理解析,mysql主从复制原理面试

Java 程序员 后端

【Spring Boot 16】常用注解介绍及使用,内含福利

Java 程序员 后端

【MyBatis 2】MyBatis-Plus,java多线程常见面试题

Java 程序员 后端

【并发编程】深入了解volatile,nginx负载均衡架构

Java 程序员 后端

【源码分析设计模式 10】SpringMVC中的建造者模式,mybatis技术原理pdf

Java 程序员 后端

【牛客】从青铜到王者01,java基础入门第二版第二章答案

Java 程序员 后端

【PyQt5】designer 页面点击按钮跳转页面,华为面试笔试题java

Java 程序员 后端

【Spring Boot 7】RabbitMQ基础知识总结,Java学习笔记在互联网上火了

Java 程序员 后端

【备战秋招】30道Spring IOC经典面试题,kafka消息中间件原理

Java 程序员 后端

【实习之T100开发】Genero FGL (TIPTOP4GL) 学习笔记,2021金九银十

Java 程序员 后端

50道Linux基础命令题目及其解答 | Linux命令

Regan Yue

Linux 10月月更

【数据结构与算法 12】二分查找,java大数据分析技术栈

Java 程序员 后端

【ShardingSphere 技术专题】,qt图形界面编程入门课后答案

Java 程序员 后端

【Spring Boot 7】RabbitMQ基础知识总结(1),java开发面试宝典

Java 程序员 后端

【Spring 工厂】反转控制与依赖注入,成功收获美团,小米offer

Java 程序员 后端

【Spring 持久层】Spring 事务开发,nginx原理及应用

Java 程序员 后端

【数据库实验】,springboot视频教程迅雷

Java 程序员 后端

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