You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: _overviews/tutorials/binary-compatibility-for-library-authors.md
+11-7Lines changed: 11 additions & 7 deletions
Original file line number
Diff line number
Diff line change
@@ -143,11 +143,11 @@ How can we, as library authors, spare our users of runtime errors and dependency
143
143
144
144
## MiMa - Checking binary compatibility against previous library versions
145
145
146
-
The [Migration Manager for Scala](https://github.com/lightbend/migration-manager) (MiMa) is a tool for diagnosing binary incompatibilities between different library versions.
146
+
[MiMa](https://github.com/lightbend/mima) is a tool for diagnosing binary incompatibilities between different library versions.
147
147
It works by comparing the class files of two provided JARs and report any binary incompatibilities found.
148
148
Both backwards and forwards binary incompatibility can be detected by swapping input order of the JARs.
149
149
150
-
By incorporating MiMa's [sbt plugin](https://github.com/lightbend/migration-manager/wiki/sbt-plugin) into your sbt build, you can easily check whether
150
+
By incorporating MiMa's [sbt plugin](https://github.com/lightbend/mima/wiki/sbt-plugin) into your sbt build, you can easily check whether
151
151
you have accidentally introduced binary incompatible changes. Detailed instruction on how to use the sbt plugin can be found in the link.
152
152
153
153
We strongly encourage every library author to incorporate MiMa into their continuous integration and release workflow.
@@ -175,20 +175,24 @@ Again, we recommend using MiMa to double check that you have not broken binary c
Library authors use versioning schemes to communicate compatibility guarantees between library releases to their users. Versioning schemes like [Semantic Versioning](http://semver.org/)(SemVer) allow
178
+
Library authors use versioning schemes to communicate compatibility guarantees between library releases to their users. Versioning schemes like [Semantic Versioning](http://semver.org/)(SemVer) allow
179
179
users to easily reason about the impact of updating a library, without needing to read the detailed release notes.
180
180
181
181
In the following section, we will outline a versioning scheme based on Semantic Versioning that we **strongly encourage** you to adopt for your libraries. The rules listed below are **in addition** to
182
182
Semantic Versioning v2.0.0.
183
183
184
184
### Recommended Versioning Scheme
185
185
186
-
* If backward **binary compatibility** is broken, **major version number** must be increased.
187
-
* If backward **source compatibility** is broken, **minor version number** must be increased.
188
-
* A change in **patch version number** signals **neither binary nor source incompatibility**.
186
+
Given a version number MAJOR.MINOR.PATCH, you MUST increment the:
187
+
188
+
1. MAJOR version if backward **binary compatibility** is broken,
189
+
2. MINOR version if backward **source compatibility** is broken, and
190
+
3. PATCH version to signal **neither binary nor source incompatibility**.
191
+
189
192
According to SemVer, patch versions should contain only bug fixes that fix incorrect behavior so major behavioral
190
193
change in method/classes should result in a minor version bump.
191
-
* When major version is `0`, a minor version bump **may contain both source and binary breakages**.
194
+
195
+
* When the major version is `0`, a minor version bump **may contain both source and binary breakages**.
0 commit comments