Rust in the kernel is no longer experimental
Significance and headline debate
- Commenters generally treat “no longer experimental” as a big milestone: Rust is now a first‑class, “here to stay” language for the kernel, not a trial.
- The original LWN title (“end of the kernel Rust experiment”) confused many; some thought Rust was being removed. HN users argued about clickbait vs harmless irony, and the author later clarified it was an unintentional misphrasing.
What’s actually written in Rust
- So far Rust is used mainly for new drivers and auxiliary subsystems: e.g. DRM panic QR-code generator, in‑progress GPU drivers (Apple AGX, NVIDIA “Nova”, Arm Mali “Tyr”), binder on Android, etc.
- Core kernel remains C; Rust is additive, not a rewrite. Distros like Arch, NixOS, Fedora are already shipping kernels with Rust enabled.
Safety, unsafe, and practical benefit
- A recurring theme: most kernel Rust code is safe, with small, concentrated
unsafesections at hardware/FFI boundaries. - Some skeptics argue that because low‑level code “must” be
unsafe, Rust’s benefits are marginal; proponents reply that going from 100% unsafe (C) to ~3–10% unsafe is a major win, backed by data (e.g. Android’s big drop in memory safety bugs). - There’s discussion that Rust’s type system also clarifies undocumented kernel invariants (locking/order constraints), forcing better APIs.
C vs Rust vs other languages
- Pro‑C arguments: ubiquity, simpler toolchains, faster compiles, better coverage of obscure/embedded architectures, C as ABI lingua franca.
- Pro‑Rust arguments: memory and concurrency safety, stronger types, better ergonomics for complex code, fewer crash‑only‑in‑production bugs.
- Many expect a long coexistence: C remains for legacy and odd platforms, Rust for new drivers and security‑sensitive code. Comparisons also touch on Zig, Swift, Java, Go, but none are seen as as strong a kernel fit as Rust.
Platform, compiler, and stability concerns
- Worries: Rust doesn’t yet target all Linux architectures; some (alpha, parisc, sh, etc.) lack solid support. Microcontrollers and exotic platforms are often C‑only.
- Rust kernel code historically relied on nightly features, raising reproducibility and bootstrapping concerns, though recent kernels build with stable Rust.
- GCC‑based Rust backends and gccrs are viewed as important for long‑term portability and reducing dependency on LLVM.
Process and community dynamics
- Some note resistance and friction on LKML (high bar on code quality, brusque culture, specific flare‑ups over Rust VFS work and certain maintainers).
- Others see Rust’s acceptance as evidence the kernel is willing to modernize under strict technical scrutiny, not a “rewrite everything in Rust” crusade.