Closed wdv4758h closed 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。
相關連結:
Supporting alternate backends
討論如何有彈性地整合不同的後端(LLVM、Cretonne、WebAssembly)。
在論壇上的討論中認為 Cretonne 可以是不錯地 debug-mode 後端,提供快速地編譯。
相關連結:
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
相關連結:
URL: http://smallcultfollowing.com/babysteps/blog/2017/02/12/compiler-design-sprint-summary/