{"size": 1140, "ext": "scrbl", "max_stars_repo_path": "docs/scrbl/guide-versions.scrbl", "max_stars_repo_name": "wildework/reach-lang", "max_stars_repo_stars_event_min_datetime": null, "max_stars_repo_stars_event_max_datetime": null, "max_issues_repo_path": "docs/scrbl/guide-versions.scrbl", "max_issues_repo_name": "wildework/reach-lang", "max_issues_repo_issues_event_min_datetime": null, "max_issues_repo_issues_event_max_datetime": null, "max_forks_repo_path": "docs/scrbl/guide-versions.scrbl", "max_forks_repo_name": "wildework/reach-lang", "max_forks_repo_forks_event_min_datetime": null, "max_forks_repo_forks_event_max_datetime": null}
{"max_stars_count": null, "max_issues_count": null, "max_forks_count": null, "avg_line_length": 36.7741935484, "max_line_length": 326, "alphanum_fraction": 0.7631578947}
#lang scribble/manual
@(require "lib.rkt")

@title[#:version reach-vers #:tag "guide-versions"]{How does Reach use version numbers?}

Reach uses @link["https://semver.org/"]{semantic versioning}, which means that given Reach version number @litchar{MAJOR.MINOR.PATCH},

@itemize[

@item{@litchar{MAJOR} versions are incompatible.}

@item{@litchar{MINOR} versions are compatible, but have additional features relative to earlier versions.}

@item{@litchar{PATCH} versions are entirely compatible.}

]

However, the major version @litchar{0.y.z} is pre-stability and makes no promises about compatibility of any kind.

@(hrule)

Reach source code starts with

@reach{'reach @|reach-short-vers|';}

because this indicates that it relies on this major version and the features added in this minor version.

@(hrule)

Reach tools are specified by the entire version number with a @litchar{v} at the front, @litchar{vMAJOR.MINOR.PATCH}, but are also available at all prefixes (i.e., @litchar{vMAJOR.MINOR} and @litchar{vMAJOR}). Additionally, there is a version @litchar{stable} which resolves to the most recent stable @litchar{vMAJOR} version.
