Rust 語言架構

Rust 語言概念層次結構

image.png

  • Rust 底層是安全內存管理層,蓋層主要是設計內存管理相關的概念
  • 類型系統層,是一個承上啓下的層級,類型系統承載了上層的全部全系統語義和混合編程範式,賦予了 Rust 語言高級的抽象表達能力和安全性。同時保留了對底層代碼執行、數據表示和內存分配等操做的控制能力。

對於通常開發者而言,只需掌握類型系統、全部權系統和混合式編程範式便可,不須要操心底層內存是否安全,由於有編譯器和類型系統幫忙處理。 人和編譯器共用同一套」心智模型「, 這樣能夠極大地保證系統的安全和健壯性。前端

Rust 代碼如何執行

Rust 做爲跨平臺語言,能夠一次編譯,導出運行,這得益於 LLVM。 Rust 的編譯器是一個 LLVM 編譯前端,他將代碼便覺得 LLVM IR,而後通過 LLVM 編譯爲相應的平臺目標。編程

  • Rust 通過分詞和解析,生成 AST (抽象語法樹)。
  • 而後把 AST 進一步簡化處理爲 HIR(Hight-level IR),目的是讓編譯器更方便的作類型檢查。
  • HIR 會進一步便覺得 MIR (Middle-level IR),這是一種中間表示,在 Rust 1.12 中被引入,主要用於
    • 縮短編譯時間。 MIR 能夠幫助實現增量編譯,當你修改完代碼從新編譯時,編譯器只計算更改過的部分,從而縮短編譯時間
    • 縮短執行時間。MIR 能夠在 LLVM 編譯以前實現更細粒度的優化,由於單純依賴 LLVM 的優化粒度太粗,並且 Rust 沒法控制,引入 MIR 能夠增長更多優化空間。
    • 更精確的類型檢查。 MIR 將幫助實現更加靈活的借用檢查,從而能夠提高 Rust 使用體驗。
  • 最終 MIR 會被翻譯爲 LLVM-IR, 而後被 LLVM 的處理便覺得能在各個平臺上運行的目標機器碼
相關文章
相關標籤/搜索