Rust核心團(tuán)隊(duì)最近發(fā)布了穩(wěn)定版的Rust 1.12,這是自從1.0版發(fā)布后最重要的一次更新。此次發(fā)布的新版提供了用戶翹首以待的中級(jí)IR(Mid-Level IR,MIR),為該編譯器未來(lái)的進(jìn)一步優(yōu)化鋪平了道路。
在博客文章MIR簡(jiǎn)介中,Mozilla公司的Niko Matsakis稱:
MIR介于現(xiàn)有的HIR(“高級(jí)IR”,近似于一種抽象語(yǔ)法樹)和LLVM(“低級(jí)IR”)之間。以前如果遇到某個(gè)相當(dāng)大規(guī)模的操作步驟,編譯器會(huì)在“翻譯”過(guò)程中從業(yè)已成熟的Rust轉(zhuǎn)換為類似于機(jī)器代碼的LLVM,但現(xiàn)在這一工作可以通過(guò)兩個(gè)階段完成,而經(jīng)過(guò)大幅簡(jiǎn)化后的Rust,即MIR恰好居于這兩個(gè)階段之間。
Rust的開發(fā)者Steve Klabnik稱簡(jiǎn)化后的翻譯過(guò)程使得我們有機(jī)會(huì)直接對(duì)MIR執(zhí)行各種新的優(yōu)化。
盡管Rust團(tuán)隊(duì)認(rèn)為MIR并未提供任何“用戶可見”的內(nèi)容,但Matsakis提到可以大幅改進(jìn)編譯速度,同時(shí)可支持增量編譯,此外執(zhí)行速度也更快,可支持更準(zhǔn)確的類型檢查。
最新的穩(wěn)定版Rust也提供了大量用戶可見的更新,包括全新格式的Rustc錯(cuò)誤信息,如下所示:
該團(tuán)隊(duì)解釋說(shuō):
[新的錯(cuò)誤信息格式]可以向開發(fā)者呈現(xiàn)有關(guān)為什么出錯(cuò)的大量?jī)?nèi)部知識(shí),該版本會(huì)以用戶代碼為中心,并會(huì)高亮顯示與錯(cuò)誤有關(guān)的代碼內(nèi)容,同時(shí)可以通過(guò)注解描述具體的錯(cuò)誤。
在新的錯(cuò)誤信息格式中,我們會(huì)在顯示錯(cuò)誤信息的同時(shí)顯示與該錯(cuò)誤關(guān)系最緊密的代碼內(nèi)容。
最初這種形式的錯(cuò)誤信息是為了幫助用戶理解借用檢查(Borrow-checking)錯(cuò)誤,但我們發(fā)現(xiàn)這種格式也可以更廣泛地用于各種類型的錯(cuò)誤。如果想詳細(xì)了解這種設(shè)計(jì),請(qǐng)參考之前針對(duì)這一話題發(fā)布的博客文章。
Mozilla工程師Jonathan Turner在博客文章錯(cuò)誤信息塑型時(shí)代即將到來(lái)中著重介紹了相關(guān)的改進(jìn),并稱通過(guò)使用開發(fā)者編寫的代碼作為上下文,Rust可以幫助用戶更輕松地概括了解問(wèn)題的所在。
1.12版還有其他改進(jìn),例如Cargo的工作空間功能已經(jīng)可以讓一組Rust包共享同一個(gè)Cargo.lock文件,這樣開發(fā)者便可以更容易地在一個(gè)版本中保持共享的依存性。
Rust 1.12辦完整的發(fā)布說(shuō)明已公布至GitHub,新版可從這里下載。
查看英文原文:Rust 1.12 Brings Mid-Level IR