Rust 1.0の公式リリースを間近に控え,Mozilla ResearchのNiko Matsakis氏は,同言語に今後追加を予定している新機能に関して,その優先順位を評価する作業に着手した。Rust言語が今後選択すべき方向性について,公開の場での議論を促すためだ。InfoQはMatsakis氏に話を聞いた。
Matsakis氏の評価では,時間による影響度 - 時間の経過によって機能追加が難しくなる度合い - や,Rustの開発者コミュニティ全般に与える影響,あるいは,解決可能な問題の範囲といったものを基準に,機能を3つの優先順位のレイヤにグループ分けしている。
最優先の機能に氏がリストアップしているのは,以下のようなものだ。
- ファイルシステムAPIやメモリ割り当てAPIなど,ライブラリAPIの標準化。
- WindowsおよびARMサポートの改善。結果としてこれは,RustのMinGWへの依存性を取り除き,ARM64をサポートするということになる。
- コンパイルの高速化。
- ツールサポートの改善。
- より詳細なメモリ割り当て管理を可能にする,アロケータとトレース機能。
- 特殊化。特定のタイプセットに対応する特定の性質を備えた,複数の実装を定義可能にする。
- ある種の複数構造体の継承を可能にする,仮想構造体。
その他にも,マクロの改善や構文拡張など,優先度が高いと思われる機能がある,と氏は言う。他の機能については,中程度あるいは低い優先度に分類されている。InfoQでは,Rustの状況と将来をより詳しく知るために,Niko Matsakis氏から話を聞くことにした。
Rust 1.0がまさに世に出ようとしていますが,今のお気持ちはいかがですか?言語として,十分に成熟したと言えるレベルに達していると思いますか?
自信を持って強く言えることのひとつは,今回の1.0リリースによって,Rustのコミュニティとエコシステムが急激に拡大するだろう,ということです。crates.ioリポジトリには現在,約2,000のクレートが存在しています。Rust自体も,非常に大きなプロジェクト(Rustコンパイラ自身,Servo,Skylightなど)で使用されるようになってきました。
現在のRustの設計は,数多くのイテレーションの結果です。その試行錯誤は十分に報われた,と私は思います。その一方で,1.0のリリースに感激はしますが,それはまだ,ほんの始まりに過ぎないとも思っています。改善のプランはたくさんあります。それらを実現していくのが,今から楽しみです。
プロジェクトがこれ程オープンで,公開性を保てたことについては,本当に満足しています。大規模なグループからの支援が,Rustの設計と実装の両面で,改善の大きな力になりました。これがより当てはまるのは,1.0以降をおいて他にはないでしょう。
Rustは,オプションタイプやジェネリクス,型推論といった,現代的なプログラム言語のアイデアをサポートすると同時に,比較的低レベルな言語であるということで,多くの注目を集めています。低レベルプログラミングでのこれらアイデアの重要について,詳しく説明して頂けますか?
パフォーマンスが本当に重要な場合には,マシンを低レベルでコントロールできることに,本当のメリットがあるかも知れません。ですが,今のところは,生産性の面で大きな代償を払うことになります。Rustはかねてから,C++プログラマにアピールしたいとは思っていましたが,高級言語を使ってきた人たちへのアピールについては,これまで意識していませんでした。
ここで重要なのは型システムです。Rustの型システムは,所有権(ownership)や借用(borrowing)など,安全なパターンを実現する手段として,クラッシュを回避し,低レベルプログラミングを短時間かつ容易なものにします。それにより,例えシステムプログラムの専門家でなくても,Rustアプリの製品展開やcrates.io用のライブラリ開発が可能になるのです。言語ギークの観点からは,現代的な言語の素晴らしいアイデアをたくさん取り入れて,それらをシステムプログラミングで実現した,ということになるのですが,本当の効果は,低レベルプログラミングを,クラッシュや苦痛のないものにするという点にあるのです。
優先順位の件とは別に,ご自身の観点から,Rustの方向性について話して頂けますか?将来のRustに対して,どのようなタイプの機能を期待できるのでしょう?
Rustの目標が,低レベル言語の制御性と高レベル言語の表現能力の(いずれも妥協しない)両立にある点は,これまでと変わっていません。言語自体に関しては,この2つの方向性の両立を続けていきたいと思っています。
具体的には,カスタムアロケータなどの低レベルな機能と,メタプログラミングのサポートなどの高レベルな表現を,さらに加えていきます。言語以外では,ツーリングやインフラストラクチャの拡充を視野に入れていきたいと思っています。
ですが最終的には,ユーザやコミュニティの大幅な流入による安定性の向上が,今後のRustを最も大きく変えるであろうことは間違いありません。このような新たなユーザが,これまでは想像もできなかったような,新たなアイデアをもたらしてくれることを,私は確信しています。