Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save matarillo/1c3d144a13088251cbc943d9a2d4db9d to your computer and use it in GitHub Desktop.
Save matarillo/1c3d144a13088251cbc943d9a2d4db9d to your computer and use it in GitHub Desktop.

https://www.youtube.com/watch?v=1VgptLwP588

Mark RussinovichによるRustの技術セッションです。Markがどういう話をしているのか、およそ10分区切りで要約して。

Mark RussinovichのマイクロソフトにおけるRust採用についての講演要約

最初の10分 (0:00-10:00)

Markは、マイクロソフトがRustを採用した理由から話し始めています。マイクロソフトでは、過去10年間のセキュリティ脆弱性の約70%がC/C++でのメモリ安全性の問題に起因していることが明らかになりました。Markは個人的にC言語をシンプルで美しいと考えていますが、C++は複雑すぎると感じています。Rustは正確性を強制するシンプルでエレガントな言語だと彼は確信しています。

2022年9月、Markは「新しいC/C++コードはRustで書くべき」というツイートを投稿し、これが彼の中で最も反響の大きいツイートとなりました。このツイート後、サティア・ナデラCEOから電話があり、MarkはマイクロソフトのRust採用を推進することになりました。このムーブメントはマイクロソフト全体からの草の根の取り組みの一部であり、後に米国国家安全保障局(NSA)もC/C++からの移行を推奨することになります。

10:00-20:00

Markはマイクロソフト製品でのRust採用例を紹介します。最初に挙げられたのは、Windowsの重要なセキュリティコンポーネントです:

  1. Project Moo: Rustで実装されたUEFIファームウェア。マイクロソフトのデータセンターとSurfaceラップトップに使用され、オープンソース化されています。

  2. DirectWrite: Windowsの文字レンダリングコンポーネント。2人の開発者が6ヶ月かけて15万行のC/C++コードをRustに移植しました。これにより5-15%のパフォーマンス向上が見られました。

  3. Win32k.sys: Windowsカーネルの中でも特に脆弱性の多かったコンポーネント。GDI Regionsというサブシステムが最初にRustに移植されました。

  4. 暗号化ライブラリ: Rustで書かれた「Russell」というTLSライブラリとSimCryptとの統合。

20:00-30:00

Markは続けてOfficeとAzureでのRust採用について説明します:

Office:

  • セマンティック検索アルゴリズム「DISKANN」をRustで実装。これにより、C++版と比較して大幅なパフォーマンス向上とメモリフットプリント削減を実現。

Azure:

  • Markは数年前から「Azureでの新しいシステムコードはC++ではなくRustで」という方針を打ち出しました。
  • Caliptra: クラウドサーバーのルート・オブ・トラスト。セキュリティ上重要なこのコードはRustで実装され、オープンソース化されています。
  • Azure Integrated HSM: すべてのAzureサーバーに実装されるハードウェアセキュリティモジュール。ファームウェアはRustで書かれています。
  • ハードウェアオフロード: ストレージとネットワーク処理のためのARMプロセッサを使ったハードウェアオフロードカードは、すべての新しいコンポーネントがRustで実装されています。

30:00-40:00

Markは更にAzureでのRust採用について続けています:

  • Hypervisor: Hyper-VはまだC/C++ベースですが、ARM64エミュレーションコードなどの一部をRustで書き始めています。
  • OpenVMM: Rustで書かれたパラ仮想化仮想マシンモニター。
  • Hyperlite: マイクロ秒単位で起動する超軽量なVMを実現するプロジェクト。WebAssemblyランタイムを安全に分離して実行するために使用されています。
  • Azure Data Explorer: ログ解析プラットフォームの350,000行のコードがRustで書かれており、C++版より優れたパフォーマンスを発揮しています。
  • DRY Platform: イベント駆動型のデータプラットフォーム。
  • Azure SDK for Rust: ベータ版が発表されたばかりの、Rustを使ったAzureアプリケーション開発用のSDK。

開発者からのフィードバックとして、Rustの利点(メモリ安全性、データ競合の削減、コンパイルが通れば動くという安心感)と課題(C++との相互運用、ツールチェーンの未熟さ、クレートエコシステムの課題、動的リンクの問題)が挙げられています。

40:00-45:00 (最後の部分)

最後に、Markは自動コード変換ツールについて紹介しています:

  1. 暗号コードのトランスパイラ: 検証済みのC言語暗号コードを安全なRustコードに自動変換するツール。

  2. Graph RAG (Retrieval Augmented Generation): LLMを使って効率的にコードを変換するためのアプローチ。コードを階層的に理解し、単なるフラット変換よりも正確な変換を可能にします。シンプルなPythonゲームをRustに自動変換するデモを見せています。

Markは、「新しい言語はRustより良いかもしれないが、言語とそのツールチェーンが成熟するには時間がかかる。Rustは既に実用段階に達しており、マイクロソフトは100%Rustの背後にいる」と締めくくっています。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment