Skip to content

Latest commit

 

History

History
59 lines (50 loc) · 2.76 KB

VERSIONING.md

File metadata and controls

59 lines (50 loc) · 2.76 KB

Versions

Artifacts published under the org.scalameta Maven groupId must belong to one of the following categories:

  • "Releases", i.e. artifacts that have Maven versions that follow the x.y.z format, where x is called "major version", y is called "minor version" and z is called "patch version".
  • "Prereleases", i.e. artifacts that have Maven versions that follow the x.y.z-suffix format, where x, y and z are called the same as above, and suffix is an arbitrary suffix created by a human or generated by a tool.
  • All other Maven versions are prohibited.

Major releases

"Major releases" are artifacts published as x.0.0:

  • An artifact must be released as x.0.0 if and only if the difference between the current Scalameta code and the Scalameta code that has been published as {x-1}.0.0 contains changes that don't satisfy the compatibility policy.
  • Major releases require a milestone cycle:
    • At least one x.0.0-M1 prerelease must be published before it is allowed to publish an x.0.0 release.
    • At least 168 hours (7 calendar days) must pass after the last x.0.0-suffix prerelease before it is allowed to publish an x.0.0 release.

Minor releases

"Minor releases" are artifacts published as x.y.0:

  • An artifact must be released as x.y.0 if and only if the difference between the current Scalameta code and the Scalameta code that has been published as x.0.0 contains changes to the public API or the SemanticDB schema that don't require a major release.
  • Minor releases do not require a milestone cycle and can be published at any time.

Patch releases

"Patch releases" are artifacts published as x.y.z:

  • An artifact must be released as x.y.z if and only if the difference between the current Scalameta code and the Scalameta code that has been published as x.y.0 does not contain changes to the public API or the SemanticDB schema.
  • Patch releases do not require a milestone cycle and can be published at any time.

Preleases

"Prereleases" are artifacts published as x.y.z-suffix:

  • An artifact may be published as x.y.z-suffix if and only if:
    1. There exists an x.y.z release, and
    2. There exist neither {x+1}.0.0, nor x.{y+1}.0, nor x.y.{z+1} releases.
    3. suffix is in compliance with semantic versioning.
    4. suffix does not equal SNAPSHOT.
  • Prereleases do not have to satisfy any compatibility requirements.
  • Prereleases do not require a milestone cycle and can be published at any time.