Skip to content

Commit

Permalink
Add page *Release Policy* (#756)
Browse files Browse the repository at this point in the history
Co-authored-by: Beta Ziliani <[email protected]>
  • Loading branch information
straight-shoota and beta-ziliani committed May 8, 2024
1 parent 68669b3 commit ed2b37e
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 3 deletions.
5 changes: 3 additions & 2 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,11 +114,12 @@ Instructions on how to use the compiler and tools.
</div>
<div class="card" markdown="1">

### Developer News
### Project and Releases Information

Announcements about the language development.

* [Release Notes](https://crystal-lang.org/blog/#release_notes)
* [Release Notes](https://crystal-lang.org/releases)
* [Release Policy](project/release-policy.md)
* [Crystal Blog](https://crystal-lang.org/blog)

</div>
Expand Down
3 changes: 2 additions & 1 deletion docs/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,6 @@
* [asm](syntax_and_semantics/asm.md)
* [Compile-time flags](syntax_and_semantics/compile_time_flags.md)
* [Cross-compilation](syntax_and_semantics/cross-compilation.md)
* [Platform Support](syntax_and_semantics/platform_support.md)
* [C bindings](syntax_and_semantics/c_bindings/README.md)
* [lib](syntax_and_semantics/c_bindings/lib.md)
* [fun](syntax_and_semantics/c_bindings/fun.md)
Expand Down Expand Up @@ -151,3 +150,5 @@
* [Using the Compiler](man/crystal/README.md)
* [The Shards Command](man/shards/README.md)
* [Required libraries](man/required_libraries.md)
* [Platform Support](syntax_and_semantics/platform_support.md)
* [Release Policy](project/release-policy.md)
43 changes: 43 additions & 0 deletions docs/project/release-policy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Release Policy

Crystal releases have a version indicated by a major, minor and patch number.

The current major branch number is `1`.

New features are added in minor releases (`1.x.0`) which are regularly scheduled every three months.

Patch releases contain only important bug fixes and are released when necessary.
They usually only appear for the latest minor branch.

New releases are announced at [crystal-lang.org/releases](https://crystal-lang.org/releases) ([RSS feed](https://crystal-lang.org/releases)).

There are currently no plans for a new major release.

## Backwards compatibility

Minor and patch releases are backwards compatible: Well-defined behaviours and documented APIs in a given version
will continue working on future versions within the same major branch.

As a result, migrating to a new minor release is usually seamless.

### Reservations

Although we expect the vast majority of programs to remain compatible over time,
it is impossible to guarantee that no future change will break any program.
Under some unlikely circumstances, we may introduce changes that break existing code.
Rest assured we are commited to keep the impact as minimal as possible.

* Security: a security issue in the implementation may arise whose resolution requires backwards incompatible changes. We reserve the right to address such security issues.

* Bugs: if an API has undesired behaviour, a program that depends on the buggy behaviour may break if the bug is fixed. We reserve the right to fix such bugs.

* Compiler front-end: improvements may be done to the compiler, introducing new warnings for ambiguous modes and providing more detailed error messages. Those can lead to compilation errors (when building with `--error-on-warnings`) or tooling failures when asserting on specific error messages (although one should avoid such). We reserve the right to do such improvements.

* Feature additions: When introducing new features into the language or core library, there can be collisions with the names of types, methods, etc. defined in user code. We reserve the right to add new names when necessary.

The changelog and release notes highlight any changes that have a considerable potential for breaking existing code, even if it uses experimental, undocumented or unsupported features.

### Experimental features

The only exception to the compatibility guarantees are experimental features, which are explicitly designated as such with the [`@[Experimental]`](https://crystal-lang.org/api/Experimental.html) annotation.
There is no compatibility guarantee until they are stabilized (at which point the annotation is dropped).

0 comments on commit ed2b37e

Please sign in to comment.