wdv4758h / notes

let me know if my notes help you :D (it's a mess, I know)
https://wdv4758h.github.io/notes/
142 stars 17 forks source link

Compiler design sprint summary by Niko Matsakis #63

Closed wdv4758h closed 7 years ago

wdv4758h commented 7 years ago

URL: http://smallcultfollowing.com/babysteps/blog/2017/02/12/compiler-design-sprint-summary/

wdv4758h commented 7 years ago

On-demand processing and incremental compilation

Rust 編譯器正如大部分的編譯器一樣,是由一連串的 Passes 組起來的,一個階段一個階段地處理,但是目前已經有些部份是互相依賴的,例如 Name Resolution 和 Macro 展開,可能發生的狀況是需要先經過 Name Resolution 才知道要展開哪個 Macro,展開後內部才會有新的內容需要 Name Resolution。 因此提了 on-demand compilation,把處理過程用 Graph 表示,依照需求跑過特定的處理。

相關架構參考的是叫做 Adapton 的 Generic Incremental Compilation Library。

相關連結:

wdv4758h commented 7 years ago

Supporting alternate backends

討論如何有彈性地整合不同的後端(LLVM、Cretonne、WebAssembly)。

在論壇上的討論中認為 Cretonne 可以是不錯地 debug-mode 後端,提供快速地編譯。

相關連結:

wdv4758h commented 7 years ago

MIR Optimization

相關連結:


Unsafe code guidelines

提供撰寫 Unsafe 程式碼的方針和細節。 確保 LLVM 不會做超出 Rust 提供的規則的優化。

相關連結:


Macros 2.0, hygiene, spans

相關連結:


Diagnostic improvements

相關連結:


miri integration

整合 miri 直譯器

相關連結:


Variable length arrays and allocas

討論如何在 Rust 內加入 Stack 上的動態長度 Array

相關連結:


Non-lexical lifetimes

相關連結: