Warning

此文件的目的是爲讓中文讀者更容易閱讀和理解,而不是作爲一個分支。因此, 如果您對此文件有任何意見或改動,請先嘗試更新原始英文文件。如果要更改或 修正某處翻譯文件,請將意見或補丁發送給維護者(聯繫方式見下)。

Note

如果您發現本文檔與原始文件有任何不同或者有翻譯問題,請聯繫該文件的譯者, 或者發送電子郵件給胡皓文以獲取幫助:<2023002089@link.tyut.edu.cn>。

Original:

Documentation/process/programming-language.rst

Translator:

Alex Shi <alex.shi@linux.alibaba.com> Hu Haowen <2023002089@link.tyut.edu.cn> Chen-Yu Yeh <chenyou910331@gmail.com>

程式語言

Linux核心是用C程式語言 [zh_tw_c-language] 編寫的。更準確地說,核心通常使 用``gcc`` [zh_tw_gcc] 編譯,並且使用 -std=gnu11 [zh_tw_gcc-c-dialect-options]:這是 ISO C11 的 GNU 方言。clang [zh_tw_clang] 也得到了支援,詳見文件: 使用 Clang/LLVM 建置 Linux。

這種方言包含對C語言的許多擴展 [zh_tw_gnu-extensions],當然,它們許多都在核心 中使用。

屬性

在整個核心中使用的一個常見擴展是屬性(attributes) [zh_tw_gcc-attribute-syntax]。屬性允許將實作定義的語義引入語言實體(如變 數、函式或型別),而無需對語言進行重大的語法更改(例如添加新關鍵字) [zh_tw_n2049]。

在某些情況下,屬性是可選的(即不支援這些屬性的編譯器仍然應該產生正確的程式碼, 即使其速度較慢或執行的編譯時檢查/診斷次數不夠)。

核心定義了偽關鍵字(例如, __pure ),而不是直接使用GNU屬性語法(例如, __attribute__((__pure__)) ),以檢測可以使用哪些關鍵字和/或縮短程式碼, 具體請參閱 include/linux/compiler_attributes.h

Rust

核心支援 Rust 程式語言 [zh_tw_rust-language],並可以透過設定選項 CONFIG_RUST 來啟用。Rust 程式碼使用 rustc [zh_tw_rustc] 編譯器在 --edition=2021 [zh_tw_rust-editions] 選項下進行編譯。版本(Editions)是 一種在語言中引入非後向相容的小型變更的方式。

除此之外,核心中還使用了一些不穩定的特性 [zh_tw_rust-unstable-features]。 這些不穩定的特性將來可能會發生變化,因此,一個重要的目標是達到僅使用穩定特性 的程度。

具體請參閱 Rust