Microsoft에서 Rust가 티어 1 언어가 된 배경과 Windows용 통합 코드 생성 플랫폼인 rustc_codegen_utc를 소개합니다.
이제 Rust가 Microsoft에 전략적으로 중요하다는 사실은 놀랄 일이 아닙니다. Azure CTO Mark Russinovich가 네이티브 코드의 미래 전략을 설명하며 대담한 사명 선언을 한 것부터, 이후 여러 해에 걸쳐 Microsoft가 Rust Project 지원에 수백만 달러를 투자한 것까지 그 중요성은 분명합니다. Rust로 구동되는 핵심 프로젝트 일부를 살펴보려면 지난해 RustConf에서 진행된 Mark의 기조연설을 시청하세요.
오늘날 Rust는 Microsoft 내부 개발에서 가장 잘 지원되는 언어 중 하나로서 C++, C#, TypeScript와 나란히 자리하고 있습니다. Rust의 이러한 “티어 1 언어” 엔지니어링 지위는 내부 팀에 로컬 개발부터 프로덕션까지 이어지는 정비된 경로를 제공한다는 뜻입니다. 여기에는 안전한 도구 체인 빌드, 생산적인 개발자 도구, 품질 워크플로, 심층적인 플랫폼 통합, 그리고 Microsoft 소프트웨어가 충족해야 하는 SDL 요구 사항 준수가 포함됩니다.
C와 C++가 개발 플랫폼의 구성 요소였기에 Windows 플랫폼과 MSVC는 수십 년간 함께 발전해 왔습니다. MSVC와 Windows가 혁신을 발전시키는 과정에서, 이러한 기능과 역량을 C++와 Rust 모두에서 사용할 수 있도록 보장하고 두 언어 간 _원활한 상호 운용성_을 갖춰야 합니다.
MSVC는 Windows용 네이티브 플랫폼 컴파일러이며, Microsoft 전반에서 Rust 사용이 늘어남에 따라 Rust는 이 생태계에 완전히 참여해야 합니다. 펌웨어와 드라이버, 커널과 하이퍼바이저부터 마이크로서비스와 앱까지 모두 해당합니다. 이는 Rust/C++ 혼합 프로젝트에서 특히 중요합니다. 이 목표를 향한 가장 중요한 투자 중 하나가 rustc_codegen_utc입니다.
rustc_codegen_utc 소개rustc_codegen_utc는 rustc_codegen_llvm, rustc_codegen_gcc, rustc_codegen_cranelift와 같은 아키텍처 계열에 속하는 rustc용 대체 코드 생성 백엔드입니다. 동일한 백엔드 인터페이스에 연결되며, rustc의 공유 컴파일러 체계를 MSVC 백엔드(일명 “UTC“)에 연결합니다.
이는 다음을 지원하기 위한 더 폭넓은 플랫폼 생태계 전략에 참여합니다.
이러한 역량과 워크플로는 MSVC 기술 스택을 기반으로 수년에 걸쳐 구축되었습니다. rustc를 해당 백엔드에 연결하면 Windows 전용 역량마다 병렬 구현을 요구하는 대신, 기본 제공되는 _완벽한 호환성_과 함께 Rust가 동일한 플랫폼 투자 기반 위에서 구축될 수 있습니다.
그 결과 Windows에서 Rust와 C++를 위한 통합된 코드 생성 플랫폼이 마련됩니다.
Microsoft의 프로덕션 소프트웨어는 광범위한 보안 및 품질 워크플로를 거칩니다. Rust는 Microsoft에서 티어 1 언어가 되었지만, 수십 년간의 개발로 인해 C++는 여전히 지배적인 위치에 있습니다. 통합된 코드 생성 플랫폼을 사용하면 유지 관리와 발전에 드는 비용을 모두 최소화할 수 있습니다. MSVC와 Windows는 계속 혁신하고 있으며, 새로운 코드 생성 역량, 보안 기능, 진단 및 서비스 처리 기술이 지속적으로 추가됩니다.
rustc_codegen_utc를 사용하면 이러한 투자가 C++와 Rust 모두를 위한 공통 기반에 적용됩니다. 이는 중복 엔지니어링을 줄이므로 운영 측면에서 중요할 뿐 아니라, Rust가 Microsoft의 Windows 네이티브 엔지니어링 생태계에 직접 참여한다는 점에서 전략적으로도 중요합니다.
이는 Rust/C++ 혼합 프로젝트에 특히 가치가 있으며, 많은 시스템은 앞으로도 수년간 두 언어를 함께 사용할 것입니다. 공유 백엔드는 이러한 시스템의 양쪽이 모든 개발 워크플로에 동등하게 참여할 수 있는 _기반_을 만듭니다.
이러한 정렬은 rustc_codegen_utc가 존재하는 주요 이유 중 하나입니다. 이를 통해 Rust는 Microsoft 팀이 이미 Windows 소프트웨어를 빌드, 검증, 진단 및 서비스 처리하는 환경의 엔지니어링 기대치를 충족할 수 있습니다.
다른 플랫폼에서 Rust/C++ 혼합 프로젝트가 C++ 코드를 Clang으로 빌드하는 경우, 두 언어는 이미 동일한 LLVM 코드 생성 플랫폼에 도달할 수 있습니다. rustc_codegen_utc는 MSVC가 네이티브 플랫폼 컴파일러인 Windows 네이티브 C++ 프로젝트를 위해 동일한 공유 백엔드 기회를 만듭니다.
코드 생성, 플랫폼 특성, ABI, EH 및 링크 후 도구는 상호 운용 과제의 _절반_에 불과합니다. 높은 충실도의 언어 수준 상호 운용, FFI 계약, 바인딩, 언어 의미 차이, 빌드 시스템은 우리가 내부적으로 그리고 업계 전반에서 해결하기 위해 노력하는 문제 중 _일부_일 뿐입니다. 문제 영역과 진행 중인 커뮤니티 노력을 빠르게 살펴보려면 Rust Foundation의 상호 운용성 이니셔티브를 참조하세요.
https://rustfoundation.org/interop-initiative/
rustc_codegen_utc는 Microsoft DevDiv의 전담 팀이 진행한 대규모 투자이며, 2026년 초부터 프로덕션 준비 완료 상태입니다. Rust 1.90부터 _자체 호스팅_되었으며, rustc의 안전한 공급망 빌드, 표준 라이브러리, 관련 도구, 로컬 개발과의 통합, 프로덕션 파이프라인, 그리고 엔지니어링 시스템 내 공통 품질 및 규정 준수 워크플로를 포함하는 더 광범위한 내부 Rust 플랫폼의 일부입니다.
현재 100개 이상의 Microsoft 프로젝트 리포지터리가 이를 사용해 빌드됩니다. 더 많은 리포지터리가 이를 채택함에 따라 이 배포는 매주 계속되고 있습니다.
이는 Microsoft에서 Rust의 전체 엔지니어링 수명 주기, 즉 도입, 도구, 품질, 보안, 플랫폼 통합, 프로덕션 배포 및 장기 지원을 위한 지속적인 투자의 일부입니다.
rustc_codegen_utc는 이 여정의 핵심 부분입니다. 차별점은 간단합니다. rustc를 Microsoft가 수십 년에 걸쳐 Windows 중심으로 구축한 네이티브 백엔드 및 플랫폼 생태계에 연결합니다.
이를 통해 Rust와 C++를 위한 통합 기반, Windows 플랫폼 투자가 두 언어 모두에 도달할 수 있는 경로, 그리고 Microsoft가 계속 구축할 혼합 네이티브 시스템을 위한 더 강력한 토대를 확보할 수 있습니다.
질문이 있거나 피드백을 공유하고 싶다면 Rust Project의 Zulip에서 이 전용 토론 주제에 참여하세요.