Questions tagged [migration-manager]

The Migration Manager for Scala (MiMa in short) is a tool for diagnosing binary incompatibilities for Scala libraries.

The Migration Manager (MiMa in short) is a tool for Scala that can report binary modifications that may lead the JVM throwing a java.lang.LinkageError (or one of its subtypes, like AbstractMethodError) at runtime. Linkage errors are usually the consequence of modifications in classes/members signature.

MiMa compares all classfiles of two released libraries and reports all source of incompatibilities that may lead to a linkage error. MiMa provides library maintainers with a tool that can greatly automate and simplify the process of ensuring the release-to-release binary compatibility of libraries.

4 questions
13
votes
1 answer

Is adding a trait method with implementation breaking backward compatibility?

I am confused regarding backward compatibility when adding a method with default implementation to a trait. Like: Previous Version trait Foo New Version trait Foo { def verifyConsistency: Option[String] = ??? // provide default…
0__
  • 66,707
  • 21
  • 171
  • 266
8
votes
3 answers

Moving a package-private class—should I consider that binary incompatible?

Because of an issue with package name aux under Windows, I am moving a helper class within the package hierarchy of my library from de.sciss.scalainterpreter.aux to de.sciss.scalainterpreter The class is private to the library, i.e.…
0__
  • 66,707
  • 21
  • 171
  • 266
1
vote
1 answer

Migration-Manager / binary compatibility: overriding hash-code with reference to private[this]

Why is overriding hashCode a binary incompatible change: Before: trait Foo extends Product After: trait Foo extends Product { private[this] lazy val _hashCode = ScalaRunTime._hashCode(this) override def hashCode: Int =…
0__
  • 66,707
  • 21
  • 171
  • 266
0
votes
1 answer

MiMa complains about loss of a synthetic method, even though I put the original line back in place

I'm trying to understand the following message from Migration Manager: Found 1 binary incompatibilities ================================ * synthetic method de$sciss$lucre$synth$impl$NodeGraphImpl$$ugenGraphs()scala.concurrent.stm.Ref in class…
0__
  • 66,707
  • 21
  • 171
  • 266