Googleは、「Androidオープンソースプロジェクト」でシステムプログラミング言語「Rust」によるOS構成要素の開発をサポートしていることを明らかにしたが、セキュリティ脆弱性を減らす目的で、Linuxカーネル開発での採用も支持している。
同社は4月に入り、Rustは、これまでCやC++で記述されてきた「Android」OSに、メモリー安全性の保証をもたらすと説明した。同社は、既存の何百万行ものコードをRustで記述し直すのではなく、Androidの新規コードの開発でRustを採用しようと考えている。
そして今度は、Androidの基盤となるLinuxカーネルに目を向けている。米ZDNetが3月に報じたように、Linuxカーネルの開発者らは主に、3000万行以上の大部分がC言語で書かれているカーネル全体を書き直すのではなく、新たなコードをRustで記述することを模索中だ。
AndroidチームのWedson Almeida Filho氏は、「カーネルを実装するための実用的な言語として、RustがC言語に加わる準備ができたと考えている。特権コードに潜む潜在的バグやセキュリティ脆弱性の数を減らす上で役立つほか、コアカーネルともうまく連携して、そのパフォーマンスの特性を維持できるだろう」と説明した。
Filho氏は、質の高いコードやコードレビューの標準があることで、Linuxカーネルにおけるメモリー安全性のバグの密度は低いと考えている。しかし、それでもメモリー安全性のバグはたびたび発生している。Androidセキュリティチームは通常、カーネルの脆弱性は深刻度が高いとみなしているという。
Googleは、RustがLinuxカーネル開発者にもたらすメリットを示すために、「semaphore」という実例用のドライバーを開発した。
「当社が強調したいのは、Rustが開発者にとってどのように役立つかだ。例えばコンパイル時には、新しいバグを導入する可能性を防いだり、大幅に減らしたりできるほか、柔軟性を維持して、オーバーヘッドを最小限に抑えることができる」(同氏)
Linuxカーネルの開発者であるMiguel Ojeda氏は米国時間4月14日に、LinuxのメーリングリストにRFCを公開し、カーネルの第2言語に関する提案と、Rustで記述されたLinuxカーネルのパッチなどについて書いている。
Ojeda氏が立ち上げた「Rust for Linux」グループには、GoogleのAndroidチームも参加している。
Ojeda氏は、「カーネルに新たな主要言語を取り入れるには、莫大なコストとリスクが伴うことは承知している。取り組みの労力が分散され、カーネルの一部に貢献する上で必要な知識が増える可能性がある」としている。
「最も重要なのは、新しい言語を導入すると、後になってサポートが打ち切られた場合、その言語で書かれたモジュールを置き換えるのが非常に困難になることだ。しかし、そういった事情を考慮しても、現時点でRustを使用するメリットは、コストを上回ると考えている」(同氏)
Linux関連のウェブサイトPhoronixによると、Linuxカーネルの生みの親であるLinus Torvalds氏は、Rustに対する懸念を表明しているが、「全体としては(そのアイデアが)嫌いではない」と述べた上で、「ランタイムエラーでパニックが発生するのは根本的に問題がある」としている。
Filho氏は、Rustはカーネルにとって新しいものだが、プロセスやドキュメンテーションを改善する機会があるとしている。
2015年にバージョン1.0に達したばかりのRustは、開発者の間で人気が上昇中だ。2月に発足したRust Foundationは、Amazon Web Services(AWS)、Google、Microsoft、Mozillaの支援を受けている。同財団の初代会長には、AWSのシニアエンジニアリングマネージャーShane Miller氏が選出された。
この記事は海外Red Ventures発の記事を朝日インタラクティブが日本向けに編集したものです。