Rust in 2018

Matthias Endler

2018年のRust

原文は Matthias Endler により に公開されました。 このブログを購読する

以前にもRustの未来について書いたことがありますが、どうやら誰も私を止めようとはしないようです!それどころか、今回はRustコアチーム自らが呼びかけてくれました。少し出遅れてしまいましたが、2018年のRustで優先すべきことについて、私なりの意見を少し述べさせてください。

こいつは一体何者なんだ?

残念ながら、これまで私と会ったことがない可能性は悲しいくらい高いでしょう――本当に残念なことですが。少し背景を説明すると、私はPythonやPHPといった動的型付け言語の出身です。Rustは、用心棒と言い争っているような気分にならずに本物の低レベルなコードを書くことを可能にしてくれた、初めての言語でした。

私にとってRustはファイアフラワーではなく、自分だけのメガゾードです1。私はRustに勝ってほしいと思っています。そのためには、いくつかの課題をクリアしなければなりません。

コントリビューションを容易にするためのコンパイラドキュメント

RustBeltRustのImpl DaysでハッキングするRustプログラマーたち

オハイオ州コロンバスで開催されたRust Belt Rustで、私はNiko MatsakisAriel Ben-Yehuda、そしてSantiago Pastorinoに会いました。その紳士たちはimpl期間中にnon-lexical lifetimesに熱心に取り組んでいました。彼らがコンパイラをハックする姿を見るのはとても刺激的で、自分もコントリビュートできるのではないかと思い始めました。言うまでもなく、コンパイラの開発に参加するハードルはかなり高いものです。結局、私は何もコントリビュートできませんでした。

私がぜひやりたいと思っていることの一つは、30〜60分程度のちょっとした時間を使って、コンパイラの小さな修正をちょこちょこ行うことです。変数名の変更やテストの作成、ドキュメントの追加といったシンプルなことでも構いません。だから私の最初の願いは、言語へのコントリビューションがより簡単になることです。それは、手厚いメンターシップや、より多くの入門者向けチケット、そしてより良いコンパイラのドキュメントによって実現できるでしょう。これらはすべて、すでにNikoが提案していたことです。

中級者向けリソースの充実

関連して、中級のRustプログラマーを対象としたトークやガイドライン、書籍がもっと増えてほしいと思っています。これには、Rustで大規模プロジェクトをどう構成するかや、Rust特有のデザインパターンについての議論も含まれます。Rustのプロフェッショナルな活用事例についてもっと読みたいですし、さまざまな業界でのケーススタディも見てみたいです。例えば、snips.aiというスタートアップはRustを使ってオンデバイスの音声アシスタントを構築しました。彼らはCやC++のライブラリと統合しており、その道のりについてもっと聞きたいと思っています。

RFCプロセスの改善

私はRFCのプロセスをできるだけ密に追うようにしていますが、時間には限りがあります。私の願いは、どのRFCを開いてもすぐにそのステータスが分かるようになることです。

  • 議論の要約と主な長所・短所
  • 冒頭にあるシンプルな使用例
  • 安定化に向けた次のステップ

例えば、(決して)ランダムではないこのissueを見ても、どこから手をつければいいのかさえ分かりません。現時点で最大のブロッカーは何なのか。誰が積極的に推進しているのか。自分はどうやって協力できるのか。

GitHubはコードには最適ですが、新機能についての議論はすぐに収拾がつかなくなります。これはRustに限った問題でもありません。DockerやKubernetes、Nodeといった他の大規模プロジェクトを見れば分かります。もしかしたら、このための新しいツールが必要なのかもしれません。

おなじみの候補たち

もし2018年に安定化してほしい機能を2つ挙げるとすれば、? in mainnon-lexical lifetimesです。

もちろん他にも挙げたいことはありますが、コンパイル時間の高速化impl Traitgeneratorsなどで退屈させるつもりはありません。このあたりは順調に進んでいますので、代わりにNick Cameronの投稿をご覧ください。

ドキュメントとメンターシップを改善すれば、コントリビューターの数を大幅に増やし、今年中に多くの期待されている機能を安定化できると確信しています。

1. 余談ですが、私はパワーレンジャーを一話も観たことがありません。

この記事は「muse-spark-1.2-contributor」を使用して翻訳されました。

コメント