安定性とバージョニング
big-code-analysis は 2.x 系列(現在は 2.0.0)です。完全な安定性契約は、リポジトリのルートにある STABILITY.md に記載されています。このファイルが唯一の正であり、各リリースでチェンジログとともに更新されます。
ライブラリ利用者向けの要点は次のとおりです。
- パッチ・マイナーバンプをまたぐ形状の安定性。 STABILITY.md § "What is stable in shape" に列挙されたすべての公開型と関数シグネチャは、
2.x系列を通じて維持されます。追加的変更(新しい項目、新しいLANGバリアント、新しいMetricsErrorバリアント、新しい言語フィーチャ)はマイナーバンプで許可されます。破壊的な形状変更は次のメジャーバンプまで保留され、チェンジログ の3.0.0セクションに (breaking) として記載されます。 2.x内での値の安定性は保証されません。 文法ピンのバンプやメトリクス定義のバグ修正は、パッチバンプであっても、任意のファイルの任意のメトリクス値を任意の方向に変動させ得ます。そのようなドリフトはいずれもチェンジログに明記されます。実行間でビット単位の再現性が必要な場合は、正確なバージョンにピン留めしてください(big-code-analysis = "= 2.0.0")。- MSRV は
1.94です。MSRV の引き上げはマイナーバンプ相当のイベントとして扱われ、チェンジログに(breaking) として明記されます — STABILITY.md § MSRV policy を参照してください。 - エスケープハッチ。
Nodeラッパーは.0を通じてtree_sitter::Nodeを公開し、tree_sitterクレートはbig_code_analysis::tree_sitterとして再エクスポートされています。これらの継ぎ目を通じて到達するものは、本プロジェクト自身の SemVer ではなく、ピン留めされたtree-sitterバージョンに従います。依存する前に STABILITY.md § Escape hatches を参照してください。
3.0 に向けて
かつて 2.0 向けに準備されていた破壊的変更は 2.0.0 で出荷済みです。開かれた公開列挙型への #[non_exhaustive] マーカー、シリアライズキーの正規化、整数メトリクスの u64 への移行、言語ディスパッチと文法のデフォルト変更、Python と REST の表面変更、そして 1.0 以降に蓄積したドリフトを織り込んだメトリクス値の一括再ベースライン化です。パス位置引数によるコールバックディスパッチ(action / Callback トレイト)、フリー関数の metrics / metrics_with_options / get_function_spaces / metrics_from_tree / get_ops、およびジェネリックな Parser<T> / ParserTrait の配管も同時に削除されました。現在は analyze と Ast が唯一の解析の継ぎ目であり、Parser と言語ごとのパーサー / タグ型は pub(crate) に降格されています。
積み残しが一つ、次のメジャーに先送りされています。メトリクスごとの Stats 構造体はまだ #[non_exhaustive] ではないため、フィールドの追加は厳密な SemVer の意味では形状の破壊になります。実際には、フィールド追加はマイナーバンプでの追加的変更として扱われ、チェンジログに明記されます。構造体への #[non_exhaustive] の付与は 3.0 ロードマップ に載っており、この例外扱いを廃止できるようにする予定です。
3.0 の予定はありません。2.0 で追加された #[non_exhaustive] マーカーにより、将来の追加(新しい列挙型バリアント、新しいフィールド)のほとんどは非破壊的になるため、依存すべき表面は 2.x です。