リリースポリシー¶
Crystalのリリースは、メジャー、マイナー、パッチ番号で示されるバージョンを持っています。
現在のメジャーブランチ番号は1
です。
新機能はマイナーリリース(1.x.0
)に追加され、3ヶ月ごとに定期的にスケジュールされています。
パッチリリースには重要なバグ修正のみが含まれ、必要に応じてリリースされます。通常、最新のマイナーブランチにのみ表示されます。
新しいリリースはcrystal-lang.org/releases (RSSフィード)で発表されます。
現在、新しいメジャーリリースの計画はありません。
下位互換性¶
マイナーリリースとパッチリリースは下位互換性があります。特定のバージョンで定義された動作とドキュメント化されたAPIは、同じメジャーブランチ内の将来のバージョンでも動作し続けます。
その結果、新しいマイナーリリースへの移行は通常シームレスです。
留保事項¶
時間の経過とともに、ほとんどのプログラムは互換性を維持すると予想していますが、将来の変更がどのプログラムも壊さないことを保証することは不可能です。まれな状況下では、既存のコードを壊す変更が導入される可能性があります。影響を最小限に抑えることに尽力していることをご安心ください。
-
セキュリティ:実装におけるセキュリティ上の問題が発生し、その解決に下位互換性のない変更が必要になる場合があります。そのようなセキュリティ問題に対処する権利を留保します。
-
バグ:APIに望ましくない動作がある場合、バグのある動作に依存するプログラムは、バグが修正されると壊れる可能性があります。そのようなバグを修正する権利を留保します。
-
コンパイラフロントエンド:コンパイラに改善が加えられ、曖昧なモードに対する新しい警告が導入され、より詳細なエラーメッセージが提供される場合があります。これにより、(
--error-on-warnings
でビルドする場合)コンパイルエラーが発生したり、特定のエラーメッセージをアサートする場合(ただし、そのようなことは避けるべきです)ツールエラーが発生する可能性があります。そのような改善を行う権利を留保します。 -
機能追加:言語またはコアライブラリに新しい機能を導入する場合、ユーザーコードで定義されている型、メソッドなどの名前と衝突する可能性があります。必要に応じて新しい名前を追加する権利を留保します。
変更ログとリリースノートでは、実験的な、文書化されていない、またはサポートされていない機能を使用している場合でも、既存のコードを破壊する可能性が高い変更が強調表示されています。
実験的機能¶
互換性の保証の唯一の例外は実験的な機能であり、@[Experimental]
アノテーションで明示的に指定されています。安定化するまで(その時点でアノテーションが削除されます)、互換性の保証はありません。