写点什么

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

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

关注

评论

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

为什么Java程序员一定要会Netty?

了不起的程序猿

Java 架构师 java程序员 java面试 neety

制造业数字化转型要注重哪些方面?

万界星空科技

数字化转型 制造业 mes 万界星空科技mes

7thonline第七在线助力羽绒服巨头加拿大鹅实现智能化商品管理

第七在线

Golang插件系统实现

俞凡

golang

云起无垠入选中国信息通信研究院2024年度首期“磐安”优秀案例

云起无垠

央视聚焦!揭秘千行百业背后的“算力引擎”!

Geek_2d6073

Linux服务器检查以及常用运维shell命令

轶天下事

全链路解析如何构建数据资产管理框架及落地实践

袋鼠云数栈

智元开源百万真机数据集!具身智能领域的ImageNet时刻已到来!

Geek_2d6073

NFTScan | 12.23~12.29 NFT 市场热点汇总

NFT Research

NFT NFT\ NFTScan

部署个人博客管理系统Ghost

轶天下事

【YashanDB知识库】如何使用jdbc向YashanDB批量插入gis数据

YashanDB

数据库 yashandb

【YashanDB知识库】收集统计信息时报错YAS-00507 date/timestamp value overflow

YashanDB

数据库 yashandb

AppCrawler 自动遍历测试实践(三):动手实操与常见问题汇总

测试人

软件测试

腾讯 StereoCrafter:2D 视频转 3D 视频效果;支付宝推出新 AI 视觉搜索产品「探一下」丨 RTE 开发者日报

声网

JSON字符串反序列化 动态泛型

EquatorCoco

json

基于ArgoCD和Testkube打造GitOps驱动的Kubernetes测试环境

俞凡

gitops

性能媲美裸金属,边缘场景高性能虚拟机技术揭秘

火山引擎边缘云

边缘计算 虚拟机 火山引擎 裸金属

Comprehensive Analysis of IPQ9574, IPQ5312, and IPQ5322-Exploring Industrial WiFi 7 Project Motherboard Chip Options

wifi6-yiyi

WiFi7 10G IPQ9571

微店API接口深度探索:如何高效获取商品详情及简短代码示例

代码忍者

微店商品详情API接口 微店商品列表API

Flexus云服务器搭建云监控

轶天下事

基于Flexus云服务器X实例之安装长亭雷池waf教程

轶天下事

部署内容管理系统Joomla

轶天下事

【YashanDB知识库】如何在备机节点上做备份和恢复

YashanDB

数据库 yashandb

【YashanDB知识库】druid连接池查询空间数据报错read time out

YashanDB

数据库 yashandb

【YashanDB知识库】hive初始化崖山报错YAS-04209

YashanDB

数据库 yashandb

C++ vs Rust vs Go 性能比较

俞凡

c++ golang rust

轻松打造高效日志系统

俞凡

架构 最佳实践

Flexus云服务器搭建基础环境

轶天下事

华科附属同济医院携手和鲸科技,打造科研管理服务一体化平台,加快研究型医院建设

ModelWhale

人工智能 大数据 互联网

企业组网的作用及SD-WAN的优势

Ogcloud

SD-WAN 组网 企业组网 SD-WAN组网 SDWAN

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