NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Maven Central · #2106 by repository stars
mima-core
Last release 19 days ago
19 Sep 2026
Release timing varies
gaps range from 1 weeks to 1.5 years
Nearly every release is documented
notes for 8 of 8 stable releases
Nothing withdrawn
no release was ever pulled
4 years old
10 releases · first in 2022
One column per quarter.
NOTE : If you're upgrading from 1.1.6, see also the release notes for 1.2.0 .
NOTE: If you're upgrading from 1.1.6, see also the release notes for 1.2.0.
A public definition that becomes private[foo], or a nested class that becomes private, is still public in bytecode, so nothing breaks yet. But from that version on MiMa no longer checks it, and removing it later was not reported, although code compiled against the old version still calls it. #976
def f: Int = 1 // 1.0
private[foo] def f: Int = 1 // 1.1, silent until now
// 1.2, f is gone: silent, callers breakMiMa now reports the version where that happens, with three new problems:
MethodNoLongerCheckedProblem: a public method or constructor becomes private[foo].ClassNoLongerCheckedProblem: a class is no longer public, and no public signature exposes it.HierarchyNoLongerCheckedProblem: a type becomes sealed with all its subtypes closed. MiMa stops reporting abstract methods added to it later, which would break clients that implement it today.The next section explains how to address these new reports.
mimaBinaryApiFiltering (silencing) one of the three reports above is not the correct action: once mimaPreviousArtifacts points to a new version, MiMa would no longer check the definition (it's private[foo] now). To keep it checked, add it to mimaBinaryApi:
mimaBinaryApi += BinaryApi.keep[MethodNoLongerCheckedProblem]("foo.C.f()Int")MiMa then checks f as if it were public, and removing it later is reported. Entries can also go in src/main/mima-filters/binary-api. The report suggests them ready to paste, and warns about an entry that has no effect. #984
On Scala 3.4+, @publicInBinary has the same effect.
See also Keeping a definition checked.
A filter can name a method with its signature, as the report prints it, so it applies to that overload only:
ProblemFilters.exclude[DirectMissingMethodProblem]("foo.C.f(Int)Int")A name without a signature still covers every overload, so existing filters keep working. Suggested filters and mimaBinaryApi entries now carry the signature. #985
MiMa 1.2.0 could run out of heap on multi-module builds, because its escape analysis walked the whole classpath and the JDK. It now stays within the compared artifact. #978 (by @mkurz)
trait T { self: U => }) were mistaken for private[foo] and not checked. #983@publicInBinary members are checked like public ones. #979protected[foo] members were ignored. They are now checked like protected ones, since a subclass anywhere can call them. #976object methods are no longer reported, since they are only for Java interop (MiMa does not protect Java clients elsewhere either). MiMa continues checking the object methods. #987, and #986 (by @kitbellew) before it.The README now says what MiMa checks: the API as Scala code sees it. It lists the changes that break only Java clients and go unreported, and says what mimaReportSignatureProblems compares and where that falls short. #987
Thank you to @kitbellew and @mkurz for your contributions!
The plugin now fails on a 2.11 project #962
The plugin now fails on a 2.11 project #962
private[foo] trait methods. #965Most of this release is removing false positive reports.
private[foo] classes and everything in them are skipped. They are public in bytecode, so MiMa was checking definitions no Scala client outside the package can reach. #935 (by @kitbellew)private[foo] trait method. #953default method covers is no longer reported. #968Signature.parentTypeArgs threw a StringIndexOutOfBoundsException on renamed type variables. #949
class Public extends Base[String] becoming Base[Integer] only changes generic signatures, not descriptors. With mimaReportSignatureProblems enabled, MiMa now checks the type arguments a class passes to parents. #943
Scala.js and Native projects picked the wrong previous artifact, because sbt 2.0.0 carries the platform in a platform setting the plugin never read. Fixed in sbt 2.0.7, which the plugin now relies on. #954, #964
Thank you to @kitbellew, @kubukoz and @SolalPirelli for your contributions!
ProblemReporting: support more non-wildcard digits by @nafg in #873
Full Changelog: v1.1.5...v1.1.6
Support sbt 2.x (2.0.0-RC9, requires Java 17+) by @eed3si9n in #878
Full Changelog: 1.1.4...v1.1.5
Nothing published for this version
Nothing published for this version
Ignore private constructors by @jeroentervoorde in #778
Full Changelog: 1.1.3...1.1.4
use the same base classpath for empty packages as is used for normal packages by @bpholt in #769
Full Changelog: 1.1.2...1.1.3
Handle POM-only modules by creating empty Definitions by @rossabaker in #743
Full Changelog: 1.1.1...1.1.2
Consider missing signature equivalent to non-generic one by @raboof in #696
mimaExcludeAnnotations by @SethTisue in #711Full Changelog: 1.1.0...1.1.1
Your coding agent can read these notes before it upgrades. Set up the MCP server →