Rustで書かれLinux互換を目指して開発が進められているOS、「Maestro」が公開され注目を集めています。
Maestroは、フランス在住のソフトウェアエンジニアLuc Lenôtre氏によって開発が進められているOSで、2018年12月22日に学校のプロジェクトとして始められました。当初はC言語を使って実装されたそうですが、コードベースをきれいに保つのが難しくなり、1年半後にRust言語での実装に切り替えられます。
Rustへ切り替えた理由として以下のような項目リストアップされています。
- 以前の失敗から学んだ教訓を生かし、プロジェクトを最初からやり直すことができる。
- C言語でLinuxライクなカーネルを書くよりも、もう少し革新的になる。
- Rust言語の安全性をカーネル・プログラミングの難点に活用する。Rustの型付けシステムを使うことで、メモリ安全性に関する責任をプログラマからコンパイラに移すことができる。
メモリセーフな言語を使用し、セーフガードを設定することで、カーネル開発で発生するデバッグの問題を、可能な限り回避できたと説明しています。
現状、Maestroはモノリシックカーネルで、今のところx86(32bit)アーキテクチャのみをサポートし、437のLinuxシステムコールのうち135(約31%)が実装されているそうです。
また、カーネル以外に以下のようなコンポーネントも存在します。
- Solfège: ブートシステムとデーモンマネージャー(systemdに似ているが、より軽量)。
- maestro-utils: システムユーティリティコマンド
- blimp: パッケージマネージャー
今後はコードベースの整理とパフォーマンスの最適化を行い、ネットワークや共有ライブラリのサポート行い、コンパイラ(gcc/g++、clang、rustcc)や、make、Git、Vimなどのプログラムをインストールし、テストしていく予定だとのこと。
GitHubを参考にしてプレビルド済みのISOファイルや、セルフビルドしたISOファイルを使って実際にテストすることができますが、まだ開発の初期段階であり、QEMUやVMware、VirtualBoxなどの仮想環境を使用することが推奨されています。
LinuxカーネルへのRustコードの導入や、GNU CoreutilsをRustで再実装するuutilsプロジェクトなどの動きなど、OS開発におけるRust言語の存在感が高まっているのかもしれません。Hacker Newsでもこのプロジェクトに関する議論が行われています。