【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

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

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

关注

评论

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

思考-RBAC中对于权限编码部分的压缩处理

alexgaoyh

Java rbac 权限设计 压缩算法 权限编码

让uniapp小程序支持多色图标icon:iconfont-tools-cli

达摩

uni-app iconfont-tools-cli

软件开发化繁为简,这款工具很给力!

这我可不懂

软件开发 低代码 JNPF

图文共赏---人工智能时代的由文生图

fliter

C# 字符串操作指南:长度、连接、插值、特殊字符和实用方法

小万哥

C# 程序人生 编程语言 软件工程 后端开发

2024-01-20:用go语言,小扣在探索丛林的过程中,无意间发现了传说中“落寞的黄金之都“, 而在这片建筑废墟的地带中,小扣使用探测仪监测到了存在某种带有「祝福」效果的力场, 经过不断的勘测记录,

福大大架构师每日一题

福大大架构师每日一题

《Java并发实现原理:JDK源码剖析》PDF

程序员李木子

K8S学习指南(7)-k8s核心概念Annotation

俞兆鹏

【深度观点】资源数字化、数字资产化与资产数权化是分布式商业运行的核心要素

Geek_e4ef21

数字化转型 数字资产 数据要素 分布式商业

K8S学习指南(6)-k8s核心概念label和label selector

俞兆鹏

一步步教你如何搭建K8S集群

不在线第一只蜗牛

Kubernetes 云原生 容器化 K8s 多集群管理

微服务及其发展趋势

蝉翼2u

微服务 云原生 服务网格

代码之外:工程师的成长进阶秘籍

声网

解密最受欢迎的开源 Serverless 框架:流量篇

阿里巴巴云原生

阿里云 云原生

青否数字人源码的四个端口!

青否数字人

数字人

低代码技术杂谈

互联网工科生

软件开发 低代码 JNPF

K8S学习指南(5)-k8s核心对象namespace

俞兆鹏

Kubernetes

5分钟说清楚如何让代码更加整洁

伤感汤姆布利柏

程序员 代码 代码规范 代码阅读 前沿

1688商品列表API接口文档

tbapi

1688 1688API接口 1688商品列表数据接口

Java语言之float、double内存存储方式

百度搜索:蓝易云

Java Linux 云服务器 float double

什么是 Redis?它的特点是什么?Redis的数据类型有哪些?Redis的主要应用场景有哪些?

百度搜索:蓝易云

redis 云计算 Linux 运维 云服务器

Nginx【Nginx核心指令(rewrite指令、实战rewrite 、if指令、set和break指令】

百度搜索:蓝易云

nginx 云计算 运维 Web 云服务器

【深入浅出JVM原理及调优】「搭建理论知识框架」全方位带你认识和了解JMM并发模型的基本原理

洛神灬殇

Java JVM 计算机 Java虚拟机 2024年第十六篇文章

电商API接口的最佳实践与案例分析

Noah

中国首个车路云一体化研究中心成立,将如何改变自动驾驶?

自象限

自动驾驶

POKT Network (POKT) :进军百亿美元市场规模的人工智能推理市场

股市老人

《Java实战(第2版)》PDF

程序员李木子

AI数字人系统源码无限制作数字人模型!

青否数字人

数字人

5分钟教会你如何在生产环境debug代码

EquatorCoco

前端 bug 生产环境 review

青否互动式数字人的亮点!

青否数字人

数字人

【第七在线】利用大数据与AI,智能商品计划的未来已来

第七在线

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