Linguagem de programação

O kernel Linux é escrito na linguagem de programação C [pt-c-language]. Mais precisamente, o kernel costuma ser compilado com gcc [pt-gcc] usando -std=gnu11 [pt-gcc-c-dialect-options], que seleciona o dialeto GNU do padrão ISO C11. clang [pt-clang] também é suportado; consulte a documentação sobre Compilando o Linux com Clang/LLVM.

Esse dialeto contém muitas extensões à linguagem [pt-gnu-extensions], muitas das quais são usadas rotineiramente no kernel.

Atributos

Os atributos [pt-gcc-attribute-syntax] estão entre as extensões mais comuns usadas em todo o kernel. Eles permitem introduzir semântica definida pela implementação em entidades da linguagem (como variáveis, funções ou tipos), sem exigir mudanças sintáticas significativas na linguagem (por exemplo, a adição de uma nova palavra-chave) [pt-n2049].

Em alguns casos, os atributos são opcionais (isto é, um compilador que não os suporte ainda deve gerar código correto, mesmo que o programa resultante seja mais lento ou o compilador realize menos verificações e diagnósticos em tempo de compilação).

O kernel define pseudopalavras-chave (por exemplo, __pure) em vez de usar diretamente a sintaxe de atributos do GNU (por exemplo, __attribute__((__pure__))), para detectar quais atributos são suportados e/ou encurtar o código.

Consulte include/linux/compiler_attributes.h para mais informações.

Rust

O kernel oferece suporte à linguagem de programação Rust [pt-rust-language] quando a opção CONFIG_RUST está habilitada. O código Rust é compilado com rustc [pt-rustc] usando --edition=2021 [pt-rust-editions]. As edições permitem introduzir pequenas mudanças na linguagem que não são compatíveis com versões anteriores.

Além disso, alguns recursos instáveis [pt-rust-unstable-features] são usados no kernel. Esses recursos podem mudar no futuro; portanto, é importante chegar a um ponto em que apenas recursos estáveis sejam usados.

Consulte Rust para mais informações.