Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Crater

Crater は、crates.io 上の すべての crate(および GitHub 上の一部)をコンパイルし、 テストを実行するためのツールです。 主に、互換性を破壊する可能性のある変更を実装する際に、破壊的影響の範囲を確認したり、 beta と stable のコンパイラバージョンを比較して破壊的影響がないことを確認したりするために使用されます。

Crater を実行するタイミング

PR がコンパイラに大きな変更を加える場合、または破壊的影響を引き起こす可能性がある場合は、 Crater の実行をリクエストする必要があります。 判断に迷う場合は、PR のレビュアーに遠慮なく尋ねてください。

Crater 実行のリクエスト

Rust チームは、PR によって導入された変更に対して Crater を実行するために使用できるマシンをいくつか保守しています。 PR に Crater の実行が必要な場合は、PR スレッドでトリアージチーム宛てにコメントを残してください。 “check-only” Crater 実行、“build only” Crater 実行、または “build-and-test” Crater 実行のどれが必要かをチームに知らせてください。 違いは主に所要時間です。 よくわからない場合は、build-and-test 実行を選択してください。 コンパイル時にのみ影響する変更を行う場合 (例: 新しいトレイトを実装する場合)は、check 実行だけで十分です。

PR はトリアージチームによってキューに追加され、結果が準備でき次第投稿されます。 check 実行にはおよそ 3〜4 日かかり、他の 2 つは平均して 5〜6 日かかります。

Crater は非常に有用ですが、いくつかの注意点を認識しておくことも重要です。

  • すべてのコードが crates.io にあるわけではありません! GitHub やその他の場所にあるリポジトリにも多くのコードがあります。 また、企業は自社のコードを公開したくない場合があります。 したがって、Crater の実行が成功したからといって、 破壊的影響がまったくないという意味にはなりません。引き続き注意が必要です。

  • Crater は x86_64 上の Linux ビルドのみを実行します。したがって、他のアーキテクチャやプラットフォームはテストされません。 重要な点として、これには Windows が含まれます。

  • 多くの crate はテストされません。 これには多くの理由が考えられます。たとえば、 その crate がすでにコンパイルできない(例: 古い nightly 機能を使用している)、テストが壊れている、または不安定である、 ネットワークアクセスを必要とする、その他の理由がある、といった場合です。

  • Crater を実行する前に、@bors try が成果物のビルドに成功している必要があります。 つまり、コードがコンパイルできない場合は Crater を実行できません。