FreeBSD considers Rust in the base system
Scope of Rust in FreeBSD
- Some read the proposal as “Rust in base userland, not kernel,” but the exact scope is seen as unclear.
- One side argues it’s about enabling new code in Rust alongside existing C/C++, not rewriting the system.
- Others suggest if people want a Rust-heavy OS, they should fork to “RustBSD” or similar and experiment there.
Toolchain and Self‑Hosting
- FreeBSD already ships a C++ compiler largely because LLVM/GCC are written in C++, and the system must be self-hosting.
- Critics note that most base userland isn’t C++; C++ is “along for the ride” because of compilers.
- Adding Rust implies another toolchain and possibly another LLVM, which some see as extra maintenance burden.
Rust vs C/C++: Complexity and Ergonomics
- Pro‑Rust comments: Rust is simpler than modern C++ in practice, with clearer idioms, safer ownership, strong enums/tagged unions, pattern matching, and a cohesive toolchain (cargo, tests, benches).
- Counterpoints: Rust’s lifetimes, borrow checker, async, and references introduce different complexity and ongoing ergonomic costs; idiomatic Rust is “differently complex,” not simply easier.
- Disagreement over productivity: some report becoming more effective in Rust than in C++ within months; others doubt this and emphasize Rust’s compile times and learning curve.
Security and Memory Safety
- Many see Rust’s main value as memory safety for kernels, servers, parsers, etc., aligning with broader “memory-safe language” recommendations.
- Others caution that unsafe FFI boundaries can become new vulnerability points, potentially reducing net security if handled poorly.
- Some argue alternatives (e.g., Zig or a funded new language) might offer a better C replacement without Rust’s ecosystem baggage.
Ecosystem, Package Management, and Build Integration
- Cargo is widely praised as superior to C++ build/dependency setups.
- Skeptics fear “language package manager dependency hell” (comparing to npm/pip/composer) and prefer OS-curated libraries.
- One suggested compromise: allow only std and in-tree Rust libraries for base system components; no arbitrary crates.
Forking vs Upstream Evolution
- One camp advocates forking (e.g., a RustBSD, like DragonFly BSD was from FreeBSD) to prove ideas, then upstreaming.
- Others argue heavy forking fragments effort, makes long-term rebasing painful, and that most work should happen within the main project.
Community Dynamics and Kernel Politics
- Several posts highlight toxic debates around Rust (both enthusiasm and hostility), including a Rust-for-Linux maintainer stepping down over “nontechnical nonsense.”
- Some kernel developers fear being obligated to understand Rust or maintain C semantics for Rust bindings; others insist no one is trying to force anyone to learn Rust.
- There’s concern that a perceived anti-Rust stance will quietly discourage Rust developers from contributing to C-based projects like FreeBSD.
Alternatives and Long‑Term Outlook
- Some worry FreeBSD “may lose out long-term” if it can’t host Rust in base, as upstream projects migrate from C to Rust.
- Others believe it’s acceptable for FreeBSD to remain C/C++-centric and that not every large system must adopt Rust.