米Google(グーグル)が2021年4月、AndroidやLinuxカーネルを開発するプログラミング言語に「Rust」を採用すると明らかにした。Rustの採用は米Microsoft(マイクロソフト)もWindows OS開発で進める。CやC++の独壇場だったOS開発に、2015年に「バージョン1」になったばかりの新世代言語であるRustが採用される背景には、サイバー戦争の深刻化がある。
グーグルは2021年4月6日(米国時間)に、Android OSの開発言語にRustを採用すると発表した。また同社は8日後の2021年4月14日(同)に、Linuxカーネルの開発にRustが適していると公式ブログで主張すると共に、Linuxカーネル開発へのRustの採用を目指す団体である「Rust for Linux」に参加したことを明らかにしている。
マイクロソフトはグーグルよりも早い2019年7月の時点でOS開発にはRustが適しているとのブログを発表しているほか、2019年11月にはWindows OSの一部のコンポーネントをRustによって実装し始めたことを明らかにしている。
カーネルなど下位レイヤーの開発に採用
1970年代初めにUNIXの開発にC言語が採用されて以来、OS開発はCやその後継であるC++の独壇場だった。グーグルはこれまでもAndroidの開発にJavaやKotlinを採用していたが、カーネルやデバイスドライバーなどOSの下位レイヤーの開発にはC/C++しか使ってこなかった。RustはC/C++と同様に下位レイヤーの開発に使用する。
グーグルは数千万行にも及ぶ既存のC/C++のコードを書き換えるのは不可能としており、新規のコードの開発にのみRustを適用する方針だ。それでもOS開発の常識が数十年ぶりに変わるのだけは間違いない。
RustはWebブラウザー「Firefox」を開発する米Mozilla Foundation(モジラ財団)が開発を主導するプログラミング言語だ。開発が始まったのは2006年で、安定版であるバージョン1がリリースされたのも2015年のことだ。まだ新しいプログラミング言語をグーグルやマイクロソフトがOS開発に採用する理由は、OSのセキュリティー強化にある。
Rustは、プログラムに必要なメモリーの確保や解放に関連するバグが生じない「メモリー安全」が保証されたプログラミング言語である。それに対してこれまでのOS開発に使われてきたC/C++は「大規模な開発においてメモリー安全なコードを記述することがほぼ不可能」(マイクロソフトのブログ「We need a safer systems programming language」より)なのだという。
脆弱性の70%がメモリー管理バグに起因
グーグルによればAndroidに存在した深刻なセキュリティー脆弱性の70%近くがメモリー安全に関するバグに起因するという。同様にマイクロソフトも、同社製品に存在したセキュリティー脆弱性の70%がメモリー安全に関するバグに起因すると述べている。C/C++を使う限りセキュリティー脆弱性を根絶するのは不可能と考えて、Rustを採用するに至ったというわけだ。