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
Why did we get a `NoSuchMethodError`? Remember that `A v1.0.0` is compiled with `C v1.0.0` and thus calls methods availble in `Cv1.0.0`. While `B` and
72
+
Why did we get a `NoSuchMethodError`? Remember that `A v1.0.0` is compiled with `C v1.0.0` and thus calls methods available in `Cv1.0.0`. While `B` and
73
73
our App has been recompiled with available classes/methods in `C v2.0.0`, `A v1.0.0`'s bytecode hasn't changed - it still calls the same method that is now missing in `C v2.0.0`!
74
74
75
75
This situation can only be resolved by ensuring that the chosen version of `C` is binary compatible with all other evicted versions of `C`. In this case, we need a new version of `A` that depends
@@ -98,14 +98,14 @@ to help spot binary incompatibility between library releases. (Follow the link f
We recommend using the following schemes to communicate binary and source compatibility to your users:
104
104
105
105
* Any release with the same major version are **Binary Backwards Compatible** with each other
106
106
* A minor version bump signals new features and **may contain minor source incompatibilities** that can be easily fixed by the end user
107
-
* Patch version for bugfixes and minor behavioural changes
108
-
* For **expreimental library versions** (where the major version is `0`, such as `v0.1.0`), a minor version bump **may contain both source and binary breakages**
107
+
* Patch version for bug fixes and minor behavioral changes
108
+
* For **experimental library versions** (where the major version is `0`, such as `v0.1.0`), a minor version bump **may contain both source and binary breakages**
109
109
* Some libraries may take a harder stance on maintaining source compatibility, bumping the major version number for ANY source incompatibility even if they are binary compatible
110
110
111
111
Some examples:
@@ -123,7 +123,7 @@ Many libraries in the Scala ecosystem has adopted this versioning scheme. A few
123
123
124
124
Why do we use the major version number to signal binary compatibility releases?
125
125
126
-
From our [example](#why-binary-compatibility-matters) above, we have learnt two important lessons:
126
+
From our [example](#why-binary-compatibility-matters) above, we have learned two important lessons:
127
127
128
128
* Binary incompatibility releases often leads to dependency hell, rendering your users unable to update any of their libraries without breaking their application
129
129
* If a new library version is binary compatible but source incompatible, the user can simply fix the compile errors in their application and everything will work
0 commit comments