Rustの書き直し
- Rustプログラミング言語は第一世代の製品のように感じられる
- Rustの初期の魅力: 代数的データ型、メモリ安全性、性能低下なし、モダンなパッケージマネージャ
- 4年間使った後でも、Rustは常に完璧というわけではない
- 言語の進化が非常に遅くなっている
- 多くの不安定機能が安定版Rustに取り込まれていない
素晴らしい言語
- Rustコンパイラをフォークして、新しい「seph」エディションを作りたい
- Rustの既存機能を維持しつつ、新機能を追加できる
関数トレイト(効果)
- Rustは構造体に対してトレイトを定義するが、関数に対してもトレイトを定義する必要がある
- 関数のさまざまな特性を表現できる
- 関数がパニックを起こすかどうか
- 固定スタックサイズを持つかどうか
- 関数が最後まで実行されるのか、それとも途中で待機するのか
- 関数が純粋かどうか
- 関数がunsafeなコードを実行するかどうか
- 関数が終了を保証するかどうか
コンパイル時機能
- 多くのRustプロジェクトは多数のサードパーティ製クレートを使っている
- これらのクレートはサプライチェーンリスクを高める
- セキュリティに敏感な関数呼び出しを明示的に許可するための機能追加を提案
fs_writeのような機能を呼び出すには明示的な許可が必要
Pin、Move、および構造体の借用
PinはRustの借用チェッカーの問題を解決するための複雑なハックである
Pinの代わりにMoveマーカートレイトを使う方が合理的
- 構造体フィールドを借用中としてマークできる構文の追加を提案
MoveマーカートレイトとMoverトレイトの導入を提案
コンパイル時
- Zigの
comptime機能を導入してRustのマクロ言語を置き換える
- コンパイル時にコードを実行できる小さなインタプリタを追加
- Rustのマクロ言語の代わりにRust自体を使う
小さな修正
impl<T: Copy> for Range<T>の修正
- 関連型を持つ
deriveの修正
if-let式で論理ANDをサポート
- 生ポインタの使い勝手を改善
- すべての組み込みコレクション型に
Allocator引数を追加
まとめの考え
- 非同期機能も改善が必要だが、別の投稿が必要
- 変更の大半は既存のRustと互換性がない
- 新しいRustエディションが必要になるかもしれない
- GitHubのRFCプロセスに疲れ果てる前に、直接コンパイラをフォークすることを検討中
GN⁺のまとめ
- Rustは初期の魅力にもかかわらず、完璧ではない
- 言語の進化は遅く、多くの不安定機能が安定版Rustに取り込まれていない
- 関数トレイト、コンパイル時機能、PinとMoveの改善など、さまざまな提案がある
- これらの提案はRustの使い勝手を大きく改善できる
- 似た機能を持つ他の言語としてZigがある
1件のコメント
Hacker Newsの意見
Rust RFCプロセスに関する意見
Rustの依存性問題
Rustの現在の状態
Rustの再記述に関する意見
Rustの意思決定プロセスへの不満
Josh Triplettのコメント
Rustの複雑性に関する意見
Rustの速度に関する意見
Mutex改善に関する意見
Rustの機能開発速度に関する意見
Rustの機能設計に関する意見
Rustの借用チェッカー問題
Rustのコンパイル時機能
Rustの不安定機能
Rustの進化速度に関する意見