I Hope Rust Does Not Oxidize Everything
Role of Rust vs Other Languages
- Many see Rust as a major step up from C/C++ for safety while retaining low-level control, especially for security-critical / systems work.
- Others argue it’s only a big improvement for some domains; embedded and interop-heavy work still often favor C/C++.
- GC languages (OCaml, .NET, Java, Go, Elixir/BEAM) are viewed as fine for most apps, but unsuitable where predictable latency, small runtimes, or single-GC constraints matter.
- Several commenters lament that ML-style safety could have been mainstream earlier (e.g., OCaml) if not for GC and unfamiliar syntax.
Interop, Ecosystems, and “NIH”
- Some claim Rust is harder to reuse C libraries in without dropping into
unsafe, which they see as negating Rust’s benefits and encouraging “rewrite in Rust.” - Others counter that Rust was designed for C FFI, that most Rust code already relies on small
unsafeislands (including stdlib), and that mature safe wrappers exist for many C libraries.
Async, Executors, and Runtime Design
- Async Rust is a frequent pain point: multiple incompatible executors (Tokio, etc.), difficulty composing async and sync APIs, and “async infecting everything.”
- Some suggest adding a minimal executor or pollster-like tool to std; others point to ongoing work (e.g., keyword generics) to unify sync/async patterns.
- Comparisons are made to GC/runtime fragmentation and to other ecosystems where both sync and async APIs are common.
Syntax, Complexity, Readability
- Complaints focus on sigil-heavy, dense syntax (lifetimes, generics,
::, closures, “turbofish”) and complex function signatures. - Supporters argue this trades aesthetics for explicitness, C++ familiarity, and “grep-ability,” and that difficulty is more about concepts than symbols.
- Some see a “smaller, simpler, safer language” hiding inside Rust (often “Rust without async”); others point to alternative designs (Yao, Austral, Zig).
Compile Times and Developer Experience
- Slow compilation is widely acknowledged; large projects, macros, and monomorphization are blamed.
- Some prioritize fast edit-compile-run loops and consider Rust’s latency unacceptable compared to C, Zig, or Lisps with fast compilers/JITs.
- Others accept slower builds in exchange for stronger static checking and rely on
cargo checkand incremental builds.
Adoption, Monoculture, and Ecosystem
- Several argue Rust breaks an old C/C++ “monoculture” by inspiring new systems languages (Zig, Odin, Vale, etc.), making a Rust monoculture unlikely.
- Others see parallels to C++: growing complexity, long compile times, async/runtime issues, and predict C and C++ will remain widely used.
- Some worry about parts of the Rust community being defensive about bootstrapping, specs, or alternative compilers.