LinuxやmacOSで日常的に使っている ls、cat、wc などのコマンドは「Coreutils」と呼ばれるパッケージに含まれており、従来はC言語で書かれたGNU Coreutilsが標準でした。
しかし今、RustでゼロからCore toolsを書き直した「uutils」プロジェクトが大きな転換点を迎えています。2025年1月にリリースされたuutils 0.1では、ついにGNU Coreutilsに匹敵、場合によってはそれを上回る性能を実現しました。さらに、Ubuntu 25.10でuutilsをデフォルトで採用する計画が発表され、大手ディストリビューションにおけるRustの採用が現実味を帯びてきています。
uutilsとは何か?
uutilsは、GNU Coreutilsの完全なRust実装です。2013年にJordi Boggianoによって始められたこのプロジェクトは、UNIXライクシステムで必要不可欠なコマンドラインツールをRustで再実装することを目標としています。
GNU Coreutilsには以下のようなコマンドが含まれています:
- ファイル操作:
ls、cp、mv、rm、mkdirなど - テキスト処理:
cat、wc、sort、grepなど - システム情報:
date、whoami、unameなど
uutilsプロジェクトでは、これらすべてのコマンドをRustで再実装し、完全な互換性を保ちながら、Rustのメモリ安全性と性能の恩恵を受けることを目指しています。
uutils 0.1の成果
性能の大幅向上
uutils 0.1の最も注目すべき成果は、多くのコマンドでGNU Coreutilsと同等以上の性能を実現したことです。具体的には以下のコマンドで顕著な改善が見られます:
-
cat:ファイル内容の表示 -
ls:ディレクトリ一覧の表示 -
wc:行数・文字数・バイト数の計算 -
tail:ファイル末尾の表示 -
seq:数値シーケンスの生成
これらの性能向上は、Rustの効率的なメモリ管理と並行処理能力によるものです。特に大きなファイルを扱う場面や、スクリプトで同じコマンドを大量に実行する場面では、その差が顕著に現れます。
SELinuxサポートの追加
セキュリティ面でも大きな進歩がありました。uutils 0.1では、以下のコマンドでSELinux統合が実現されています:
-
cp、ls、mkdir、mknod、mkfifo、install、stat
この改善により、企業環境やセキュリティが重視される環境でもuutilsを安心して採用できるようになりました。
GNU互換性の向上
uutils 0.1では、GNU Test Suiteの522のテストに合格しており、前バージョンの507テストから改善されています。完全な互換性にはまだ距離がありますが、実用的なレベルでの互換性は十分に確保されています。
興味深いことに、失敗しているテストの多くは、非常に特殊な使用ケースや、GNU固有の動作に関するものです。日常的な使用において問題になることはほとんどありません。
Ubuntuの「酸化」戦略
uutilsの採用を後押ししているのが、Ubuntuの新しい戦略です。Ubuntu開発チームは「Carefully But Purposefully Oxidising Ubuntu(慎重かつ意図的なUbuntuの酸化)」というテーマの下、システムの重要なコンポーネントをRustで書き直す取り組みを進めています。
この戦略では、以下の理由からRustの採用を推進しています:
- メモリ安全性:バッファオーバーフローなどの脆弱性を根本的に防止
- 保守性:現代的な言語設計により、長期的な保守が容易
- 性能:C言語と同等以上の性能を実現
Ubuntu 25.10でのuutils採用は、この戦略の重要な一歩となります。
開発体制の活発化
uutils 0.1のリリースでは、もう一つ注目すべき点があります。それは開発体制の大幅な強化です:
- 843のコミットが含まれる
- 60人以上の貢献者が参加
- そのうち40人が新規参加者
この活発な開発体制は、Ubuntuでの採用発表の影響もあると考えられます。プロジェクトの将来性と実用性が認知されることで、より多くの開発者が参加するようになっています。
技術的な課題と今後の展望
残る課題
uutilsが完全にGNU Coreutilsを置き換えるためには、まだいくつかの課題があります:
- 互換性の完全達成:残る100以上のテストケースへの対応
- ロケールサポート:国際化対応の強化
- プラットフォームサポート:より幅広いプラットフォームでの動作確認
まとめ
uutils 0.1のリリースは、Rustエコシステムにとって重要なマイルストーンです。性能面でGNU Coreutilsに匹敵する成果を上げ、Ubuntuでの採用が計画されています。
まだ完全な置き換えには時間がかかりますが、メモリ安全性、性能、保守性の観点から、uutilsの将来性は非常に明るいと言えるでしょう。特に、新しいプロジェクトや個人の開発環境では、積極的に試してみる価値があります。