Microsoft seeks Rust developers to rewrite core C# code
Microsoft’s job ad for Rust developers to work on core Office 365 services has triggered debate over whether this signals a shift away from C# and .NET. Commenters largely conclude it does not: Microsoft will keep using C# extensively, while adopting Rust selectively for ultra‑performance‑sensitive and security‑critical components where GC pauses and resource usage at hyperscale become costly. The exchange broadens into a comparison of Rust and garbage-collected languages, touching on memory safety, concurrency, tooling, and the practical difficulties of hiring or retraining teams for Rust.
Scope of Microsoft’s Rust Adoption
- Discussion centers on a single job posting for Office 365 routing/core services, not a wholesale rewrite of .NET or abandoning C#.
- Multiple comments stress Microsoft uses many languages (C#, C++, Rust, JS/TS, Go, Python, Java, etc.) and is still heavily investing in .NET.
- Rust is framed as a replacement for performance‑critical or low‑level components that might previously have been written in C/C++, not for typical business logic.
Performance, GC, and Cost at Scale
- Many argue performance is the main driver: at cloud scale, even modest CPU/memory gains can translate into large cost savings.
- GC pauses and tuning are recurring pain points for high‑throughput/low‑latency services in GC languages (C#, Java, etc.), especially when chasing “extra 9s” of latency or minimizing resource spend.
- Some note .NET has improved greatly and can be “fast enough” for many large internal services, but “fast enough” becomes relative at O365 scale.
Safety, Ownership, and Lifetimes
- Several comments highlight Rust’s ownership/lifetime system as providing benefits beyond memory safety:
- Deterministic resource cleanup (RAII) for files, sockets, mutexes, temp dirs, etc.
- Clear, non‑shared ownership reducing subtle bugs and data races.
- Counterpoints:
- C# is already memory‑safe, with
IDisposableandusingfor deterministic cleanup, but these are opt‑in and easy to misuse or forget. - Rust’s borrow checker is described as powerful static analysis, but not magic; some clarify misconceptions about what it does at runtime.
- C# is already memory‑safe, with
Async, Parallelism, and Runtimes
- Debate over whether ARM and modern workloads increase the value of GC’d runtimes vs native code.
- .NET’s async/await, ThreadPool, and work‑stealing schedulers are defended as mature and scalable.
- Separate thread contrasts BEAM/Erlang’s concurrency and fault‑tolerance with .NET/JVM; no consensus, but BEAM is praised for “true” massive concurrency.
Rust Ecosystem, Tooling, and Jobs
- Rust tooling and ecosystem (cargo, crates) are widely praised.
- Complaints about Windows requiring large MSVC toolchains and sometimes admin rights; GCC/MinGW is a lighter but “janky” alternative.
- Rust job market is seen as smaller and skewed toward blockchain and infra/security; hiring experienced Rust devs is hard.
- Some advise introducing Rust incrementally into existing stacks; others warn about tech‑stack fragmentation and build complexity.
Overall Sentiment
- Broad agreement that:
- C#/.NET and Rust will coexist.
- Rust is a strong fit for select, ultra‑critical components.
- Rewrites must be justified by concrete performance, security, or operational wins, not hype alone.