程式語言

核心是用 C 程式語言編寫的 [c-language]。更確切地說,核心通常使用 gcc [gcc]-std=gnu11 [gcc-c-dialect-options] 下編譯:這是 ISO C11 的 GNU 方言。clang [clang] 也受支援,請參閱有關 使用 Clang/LLVM 構建 Linux 的文件。

這種方言包含許多語言擴充套件 [gnu-extensions],其中許多在核心中被自然地使用。

屬性

核心中常用的一種擴充套件是屬性 [gcc-attribute-syntax]。屬性允許在不對語言進行重大語法更改(例如,新增新關鍵字)的情況下,向語言實體(如變數、函式或型別)引入實現定義的語義 [n2049]

在某些情況下,屬性是可選的(即,不支援它們的編譯器仍應生成正確的程式碼,即使其速度較慢或不執行那麼多編譯時檢查/診斷)。

核心定義了偽關鍵字(例如,__pure),而不是直接使用 GNU 屬性語法(例如,__attribute__((__pure__))),以便特性檢測哪些可以使用和/或縮短程式碼。

請參閱 include/linux/compiler_attributes.h 以獲取更多資訊。

Rust

核心對 Rust 程式語言具有實驗性支援 [rust-language],由 CONFIG_RUST 控制。它使用 rustc [rustc]--edition=2021 [rust-editions] 下編譯。版本是一種引入對語言進行不向後相容的小改動的方式。

此外,核心中還使用了一些不穩定特性 [rust-unstable-features]。不穩定特性在未來可能會改變,因此達到只使用穩定特性的階段是一個重要目標。

請參閱 Rust 以獲取更多資訊。