Gastbijdrage: Rust is een Tier-1 taal bij Microsoft

Het is tegenwoordig geen verrassing meer dat Rust van strategisch belang is voor Microsoft. Dit blijkt uit gedurfde missieverklaringen, zoals wanneer Azure CTO Mark Russinovich de toekomstige strategie voor native code schetste, en uit de miljoenen dollars die Microsoft de afgelopen jaren heeft geïnvesteerd in de ondersteuning van het Rust Project.

Tegenwoordig staat Rust, samen met C++, C# en TypeScript, als een van de best ondersteunde talen voor interne ontwikkeling bij Microsoft. Deze status van "Tier-1 taal" voor Rust betekent dat interne teams een geplaveid pad krijgen van lokale ontwikkeling naar productie: veilige toolchain-builds, productieve tooling voor ontwikkelaars, kwaliteitsworkflows, diepe platformintegratie en naleving van de SDL-vereisten (Security Development Lifecycle) waaraan Microsoft-software moet voldoen.

Het Windows-platform en MSVC zijn decennialang samen geëvolueerd, aangezien C en C++ de bouwstenen van ons ontwikkelplatform zijn geweest. Naarmate MSVC en Windows innoveren, moeten we ervoor zorgen dat deze functies en functionaliteiten beschikbaar zijn in zowel C++ als Rust, en dat er een naadloze interoperabiliteit tussen beide bestaat.

MSVC is de native platformcompiler voor Windows. Naarmate het gebruik van Rust binnen Microsoft groeit — van firmware en drivers, kernel en hypervisors, tot microservices en apps — moet Rust volledig deelnemen aan dat ecosysteem. Dit is uiterst belangrijk in hybride Rust/C++ projecten. Een van onze belangrijkste investeringen om dit doel te bereiken is rustccodegenutc.

Introductie van rustccodegenutc

rustccodegenutc is een alternatieve backend voor codegeneratie voor rustc, in dezelfde architecturale familie als rustccodegenllvm, rustccodegengcc en rustccodegencranelift. Het sluit aan op dezelfde backend-interface en verbindt de gedeelde compiler-machinerie van rustc met de MSVC-backend (ook wel "UTC" genoemd).

Het maakt deel uit van een bredere platformecosysteemstrategie om het volgende te ondersteunen:

  • Hoge compatibiliteit met het Windows tooling-ecosysteem en ABI.
  • Binary hardening en beveiligingsfuncties voor code.
  • Post-link compliance, analyse en servicing (inclusief Hotpatch).
  • Naadloze Rust/C++ interop voor hybride projecten.
  • Cross-language inlining, optimalisatie en SPGO (Sample Profile Guided Optimization).
  • Debugging en crash-dump analyse.
  • Profiling, diagnostiek en coverage.

Deze mogelijkheden en workflows zijn over vele jaren opgebouwd met de MSVC-techstack. Door rustc te verbinden met die backend kan Rust voortbouwen op dezelfde platforminvesteringen, met perfecte compatibiliteit direct uit de doos, in plaats van een parallelle implementatie van elke Windows-specifieke functie te vereisen.

Het resultaat is een uniform platform voor codegeneratie voor zowel Rust als C++ op Windows.

Native platformevolutie voor Rust en C++

Productiesoftware bij Microsoft doorloopt uitgebreide security- en kwaliteitsworkflows. Hoewel Rust een Tier-1 taal is geworden, domineert C++ nog steeds na decennia van ontwikkeling. Het gebruik van een uniform platform voor codegeneratie zal zowel de onderhouds- als evolutiekosten voor ons minimaliseren. MSVC en Windows blijven innoveren; er worden voortdurend nieuwe mogelijkheden voor codegeneratie, beveiligingsfuncties, diagnostiek en servicing-technologieën toegevoegd.

Met rustccodegenutc landen deze investeringen op een gemeenschappelijke basis voor zowel C++ als Rust. Operationeel is dit van belang omdat het dubbel werk in engineering vermindert, maar strategisch is het nog belangrijker: Rust neemt direct deel aan het Windows-native engineering-ecosysteem van Microsoft.

Dit is vooral waardevol voor hybride Rust/C++ projecten, aangezien veel systemen de komende jaren beide talen zullen blijven gebruiken. Een gedeelde backend vormt de basis zodat beide zijden van deze systemen gelijkwaardig kunnen deelnemen aan alle ontwikkelingsworkflows.

Deze afstemming is een van de hoofdredenen waarom rustccodegenutc bestaat. Het stelt Rust in staat om te voldoen aan de technische verwachtingen van de omgeving waarin Microsoft-teams al Windows-software bouwen, valideren, diagnosticeren en onderhouden.

Een sterkere basis voor Rust en C++ interoperabiliteit

Op andere platforms kunnen hybride Rust/C++ projecten, indien de C++ code met Clang wordt gebouwd, beide talen al gebruikmaken van hetzelfde LLVM-platform voor codegeneratie. rustccodegenutc creëert dezelfde mogelijkheid voor een gedeelde backend voor Windows-native C++ projecten waar MSVC de native platformcompiler is.

Codegeneratie, platformeigenaardigheden, ABI, EH (Exception Handling) en post-link tooling vormen echter slechts de helft van de interop-uitdaging. High-fidelity interoperabiliteit op taalniveau, FFI-contracten, bindings, verschillen in taalsemantiek en build-systemen zijn slechts enkele van de problemen waar we intern en binnen de industrie aan werken. Voor een overzicht van dit probleemgebied en de lopende inspanningen van de community kan men terecht bij het Interoperability Initiative van de Rust Foundation: https://rustfoundation.org/interop-initiative/

Uitrol als onderdeel van het Microsoft Rust Paved Path

rustccodegenutc is het resultaat van een grote investering door een toegewijd team binnen Microsoft DevDiv en is sinds begin 2026 productieklaar. Sinds Rust 1.90 is het self-hosted en maakt het deel uit van een breder intern Rust-platform. Dit platform omvat veilige supply-chain builds van rustc, de standaardbibliotheek, bijbehorende tools, integratie met lokale ontwikkeling, productiepipelines en algemene kwaliteits- en compliance-workflows in onze engineering-systemen.

Momenteel bouwen meer dan 100 Microsoft-projectrepositories hiermee. Deze uitrol zet zich wekelijks voort naarmate meer repositories het overnemen.

Dit is onderdeel van een langdurige investering in de volledige engineering-lifecycle van Rust bij Microsoft: acquisitie, tooling, kwaliteit, beveiliging, platformintegratie, productie-implementatie en langetermijnondersteuning.

rustccodegenutc is een essentieel onderdeel van deze reis. Het onderscheidende vermogen is simpel: het verbindt rustc met de native backend en het platformecosysteem dat Microsoft decennialang rondom Windows heeft gebouwd. Dit biedt ons een uniforme basis voor Rust en C++, een route waardoor Windows-platforminvesteringen beide talen bereiken, en een sterkere basis voor de hybride native systemen die Microsoft zal blijven bouwen.

Wie vragen heeft of feedback wil delen, kan deelnemen aan het speciale discussieonderwerp op de Zulip van het Rust Project.