diff-lcs 2.x系への対応
RSpecは依存ライブラリ diff-lcs のバージョン制約を < 2.0 から < 3.0 に拡張しました。この変更により、RSpecは将来リリースされるdiff-lcs 2.x系をサポートできるようになります。
背景
#290 でdiff-lcs 2.0.0.beta.1のリリースが報告されました。RSpecはこれまで < 2.0 という制約により、beta版を含むdiff-lcs 2.x系を使用できない状態でした。
この制約により、diff-lcs 2.0のテスト環境でRSpecを使用できないという問題が生じていました。本PRはこの状況を解消するものです。
技術的な変更
rspec-expectations と rspec-mocks の両方で、diff-lcsの依存関係が更新されました。
変更前:
s.add_runtime_dependency "diff-lcs", ">= 1.6.0", "< 2.0"
変更後:
s.add_runtime_dependency "diff-lcs", ">= 1.6.0", "< 3.0"
同様の変更が rspec-mocks/rspec-mocks.gemspec にも適用されています。バージョン制約の上限を 2.0 から 3.0 に変更することで、1.6.0以降の1.x系と2.x系の両方をサポートします。
下限の >= 1.6.0 は維持されており、既存のRSpecユーザーが使用している1.x系のサポートは継続されます。
設計判断
上限のみを変更する方式 が採用されました。
この変更は、依存関係の上限を引き上げるのみで、下限は維持しています。これにより、既存の環境への影響を避けつつ、新しいバージョンのdiff-lcsを利用可能にしています。
既存のRSpecユーザーに影響を与えない最小限の変更となっています。1.x系を使い続けるユーザーと、2.x系に移行するユーザーの両方をサポートする判断です。
まとめ
本PRは、gemspecのバージョン制約を1行変更するだけで、将来のdiff-lcs 2.x系への移行経路を開いています。既存ユーザーへの影響なく新バージョンへの対応を可能にする、保守的なバージョン管理の実例といえます。