2018年のRust
以前にもRustの未来について書きましたが、どうやら誰も、もう一度書くのを止めてはくれないようです! それどころか、今回はRustコアチームから書いてほしいと頼まれまでしました。少し出遅れてしまいましたが、2018年のRustにおける優先事項について、私なりの意見を述べたいと思います。
この人はいったい何者?
残念なことに、まだ一度もお会いしたことがないという可能性はかなり高いでしょう。本当に残念な話です。少し背景を説明すると、私はPythonやPHPのような動的型付け言語の出身です。Rustは、用心棒と口論しているような気分にならずに、本物の低レベルコードを書かせてくれた最初の言語でした。
私にとってRustはファイアフラワーではなく、個人用のメガゾード1です。Rustには勝ってほしい。そのためには、リストの項目をいくつか片づける必要があります。
貢献しやすくするためのコンパイラドキュメント

Rust Belt Rustのためにオハイオ州コロンバスを訪れたとき、Niko Matsakis、Ariel Ben-Yehuda、Santiago Pastorinoに会いました。この素晴らしい皆さんは、impl期間中に非字句的ライフタイムに熱心に取り組んでいました。彼らがコンパイラをいじり続ける姿を見て、私は深く感銘を受け、自分も貢献できないかと考え始めました。言うまでもなく、コンパイラの開発に参加するための敷居はかなり高いものです。私はまだ何も貢献できていません。
私がやってみたいのは、30〜60分ほどの短い時間を使って、コンパイラの小さな問題をあちこち修正することです。変数名の変更や、テストの作成、ドキュメントの追加といった簡単な作業でも構いません。そこで、私の最初の願いは、言語への貢献をもっと簡単にすることです。そのためには、手厚いメンタリング、初心者向けのissue、そしてよりよいコンパイラドキュメントを提供すればよいでしょう。これらはすべて、すでにNikoが提案しています。
中級プログラマー向けのリソースをもっと
関連する話として、Rustの中級プログラマーを対象にした講演やガイド、書籍がもっと増えてほしいと思っています。そこには、Rustで大規模なプロジェクトをどう構成するかについての議論や、Rust固有のデザインパターンも含まれます。プロフェッショナルなRustの利用例をもっと読みたいですし、さまざまな業界の事例も見てみたいです。たとえば、snips.aiというスタートアップは、Rustを使ってデバイス上で動作する音声アシスタントを構築していました。CやC++のライブラリと統合しており、その道のりについてもっと聞きたいと思っています。
RFCプロセスを改善する
私はRFCプロセスをできるだけ注意深く追うようにしていますが、使える時間には限りがあります。どのRFCを開いても、すぐにその状態がわかるようになってほしいです。
- 議論の要約と、主な賛成意見・反対意見。
- 冒頭に簡単な利用例。
- 安定化に向けた次のステップ。
たとえば、このissue(それほどランダムでもありません)を見ると、どこから手をつければいいのかさえわかりません。今の最大の障害は何でしょうか? 誰が積極的に推進しているのでしょうか? どうすれば手助けできるのでしょうか?
GitHubはコードを扱うには素晴らしいのですが、新機能についての議論は定期的に収拾がつかなくなります。これはRustに限った問題でもありません。DockerやKubernetes、Nodeのようなほかの大規模プロジェクトを見てみてください。もしかすると、そのための新しいツールが必要なのかもしれません。
いつもの候補
2018年に安定版へ入れてほしい機能を2つ挙げるなら、mainでの?の利用と非字句的ライフタイムです。
もちろん、ほかにも挙げられるものはあります。しかし、コンパイル時間の短縮やimpl trait、ジェネレーターなどで退屈させるつもりはありません。こちらは順調に進んでいます。代わりにNick Cameronの記事をご覧ください。
ドキュメントとメンタリングを改善すれば、貢献者の数を大幅に増やし、今年、多くの待望されている機能を安定化できると確信しています。
1. 注意書き:私は『パワーレンジャー』を1話たりとも見たことがありません。↩
記事をランダムに読む