Don't Repeat Yourself

Don't Repeat Yourself (DRY) is a principle of software development aimed at reducing repetition of all kinds. -- wikipedia

2020年の Rust

2020年、Rust をどうしていくかというロードマップが例年通り策定されているようです。まだ草案なようなので変わる可能性がありそうですが、現時点での情報をまとめておこうかなと思います。

github.com

まとめると

  • Rust 2021 Edition への準備の年。
  • 現在進行中の作業をやりきる。
  • プロジェクトのガバナンスや可視性を改善する。

Rust 2021 Edition への準備

Rust では3年単位で「Edition」を変えることにしています。2018年に行われた Rust 2018 Edition が記憶に新しいかもしれません。2020年はその前年に当たるため、10月くらいに 2021 Edition で何をやるかについては決めきっておきたいようです。

2021 Edition ではどういった機能の変更が想定されているのでしょうか?草案に書いてある限りでは、

  • エラーハンドリング: 実は、Rust のエラーハンドリングにはデファクトに近い存在はあるものの、ユーザーは何を使うべきかを決めかねている状態が続いています。標準ライブラリでおそらくよいエラーハンドリングを選定し、実装することになるはずです。
  • 詳細は未定ですが trait に関する修正も入れたいようです: 個人的には async trait を有効にしていただけると大変幅が広がります。
  • &raw をはじめとする unsafe 周りの機能の改善: &raw&mut <place> as *mut&<place> as *const の対極に位置する予定の文法で、これが導入されると生ポインタを直接生成することができるようになります。

現在進行中の作業をやりきる

Rust のチーム的には、「ほとんど終わっているけれど完了ではない」作業が長く放置されていることを問題視しており、それを今年は、1つ1つ確実に完了させていきたいと思っているようです。たしかに、何年か前にステータスが変わらなくなり放置されている Issue などをたまに見かける気がします…。今年で多く片付くと嬉しいですね。

プロジェクトのガバナンスや可視性を改善する

3つくらいやりたいことがあげられていました。

  • 設計作業の状態の可視性とイニシアチブの取り方を改善したい。
  • メンタリングやリーダーシップ、それらに対する組織的な手助けの幅を広げたい。
  • 設計に関するディスカッションをより生産的にし、その作業によって消耗することのないようにしたい。

現在進行中の作業について、「どれが自分は手伝えそうか」といった話や、「X という機能の現在の進捗状態を知りたい」というのがとても把握しにくいといった問題があるようです。これは新規参画者だけでなく、結構コントリビュートしている人にとっても難しいらしく、そのあたりをまずは改善していきたいと考えているようです。ステータスを文章化してまとめたり、あるいは更新をもっと投稿するように作業時間を増やしていこうと考えているようです。

あとは単純にプロジェクトをリードする人や、新規のコントリビュータをメンタリングする人が足りていないようで、そのあたりの補充をしたいと考えているようです。

Rust は、RFC がユーザーに開かれています。誰でも議論に参加可能です。この形式は他言語にもだんだん浸透していっています。すばらしいものです。ただ、たとえば大規模で議論の余地がたくさんある設計に関する議論の際には、この仕組みがうまく機能しなくなりはじめているのではないかと見ているようです。今年は、RFC の議論周りの仕組みを改善していけるように、重きをおいて取り組んでいくことにしたようです。

直近の例だと async/await 導入あたりでの RFC の議論は、結構カオスになっていたように見えました。Rust のオープンな RFC システムはすばらしいとは思いますが、たしかにこのあたりは改善が必要かもしれませんね。期待。

余談: 2020年での日本の Rust コミュニティ

今年も Rust.Tokyo をやります。準備がんばります。今年も多くの人にお越しいただけますと嬉しいです。

感想

2018 年は 2018 Edition で忙しく、2019 年は async/await の導入でとても忙しかったようで、たしかに大量の「やりかけ RFC」が残っているようにも思います (しかも終わったのかステータスがわかりにくいのはたしかにそう…)。今年はそのあたりの機能がいくつか消化されるたり、あるいは RFC 管理が直感的にステータスを把握できるように改善されると期待できそうですね!

もし、英語の解釈が間違っているようでしたら教えていただけますと幸いです🙏🏻