From f3249e622a9349b2d70cd3d467e4f35439e95d41 Mon Sep 17 00:00:00 2001 From: Scala Steward Date: Tue, 22 Sep 2026 13:04:22 +0000 Subject: [PATCH 1/2] Update sbt-mima-plugin to 1.2.1 --- project/plugins.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/plugins.sbt b/project/plugins.sbt index 313f37984a..43d814eb95 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -15,7 +15,7 @@ addSbtPlugin("com.lightbend.sbt" % "sbt-bill-of-materials" % "1.1.1") addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.6.2") addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.14.8") addSbtPlugin("com.github.sbt" % "sbt-osgi" % "0.10.0") -addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "1.2.0") +addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "1.2.1") addSbtPlugin("com.github.sbt" % "sbt-unidoc" % "0.6.1") addSbtPlugin("com.thoughtworks.sbt-api-mappings" % "sbt-api-mappings" % "3.0.3") addSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.4.8") From a37d6c1812666758257e4bbade649b3d9f143fa8 Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Thu, 24 Sep 2026 10:18:22 +0100 Subject: [PATCH 2/2] Keep narrowed definitions checked for sbt-mima-plugin 1.2.1 Motivation: sbt-mima-plugin 1.2.1 reports definitions that were public in 1.0.0 but are now private[pekko] or sealed as ClassNoLongerCheckedProblem, MethodNoLongerCheckedProblem or HierarchyNoLongerCheckedProblem, because it stops watching them even though the bytecode stays public. The Check / Binary Compatibility job failed on actor, stream, remote, cluster-sharding and cluster-sharding-typed with 29 such reports. Modification: Add a src/main/mima-filters/binary-api file to each of the five modules with the BinaryApi.keep entries the report suggested. This keeps MiMa checking those definitions instead of silencing them with ProblemFilters, so a later removal is still reported against clients compiled against 1.0.x. Result: mimaReportBinaryIssues passes with sbt-mima-plugin 1.2.1 and the narrowed definitions remain under binary compatibility checking. Tests: - Not run locally; the 29 entries are the lines suggested by the failing Check / Binary Compatibility job, verified by diff. CI re-runs the check. References: None - follow-up for the sbt-mima-plugin 1.2.1 bump in this PR --- actor/src/main/mima-filters/binary-api | 33 ++++++++++++++++ .../src/main/mima-filters/binary-api | 22 +++++++++++ .../src/main/mima-filters/binary-api | 22 +++++++++++ remote/src/main/mima-filters/binary-api | 23 +++++++++++ stream/src/main/mima-filters/binary-api | 39 +++++++++++++++++++ 5 files changed, 139 insertions(+) create mode 100644 actor/src/main/mima-filters/binary-api create mode 100644 cluster-sharding-typed/src/main/mima-filters/binary-api create mode 100644 cluster-sharding/src/main/mima-filters/binary-api create mode 100644 remote/src/main/mima-filters/binary-api create mode 100644 stream/src/main/mima-filters/binary-api diff --git a/actor/src/main/mima-filters/binary-api b/actor/src/main/mima-filters/binary-api new file mode 100644 index 0000000000..64a8d9b6f1 --- /dev/null +++ b/actor/src/main/mima-filters/binary-api @@ -0,0 +1,33 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +# Definitions that were narrowed to private[pekko] or sealed in 2.0.x but are still public in +# bytecode. Kept checked so a later removal is still reported against clients compiled +# against 1.0.x. See https://github.com/scala-garden/mima#keeping-a-definition-checked + +# org.apache.pekko.dispatch.BalancingDispatcher escaped through org.apache.pekko.dispatch.BalancingDispatcherConfigurator.create +BinaryApi.keep[ClassNoLongerCheckedProblem]("org.apache.pekko.dispatch.BalancingDispatcher") +BinaryApi.keep[ClassNoLongerCheckedProblem]("org.apache.pekko.dispatch.BalancingDispatcherConfigurator") +BinaryApi.keep[HierarchyNoLongerCheckedProblem]("org.apache.pekko.io.Dns$Command") +# org.apache.pekko.pattern.BackoffReset escaped through org.apache.pekko.pattern.BackoffSupervisor.reset +BinaryApi.keep[ClassNoLongerCheckedProblem]("org.apache.pekko.pattern.BackoffReset") +# org.apache.pekko.pattern.HandleBackoff escaped as a parent of class org.apache.pekko.pattern.internal.BackoffOnStopSupervisor, class org.apache.pekko.pattern.BackoffSupervisor +BinaryApi.keep[ClassNoLongerCheckedProblem]("org.apache.pekko.pattern.HandleBackoff") +# org.apache.pekko.pattern.HandlingWhileStopped escaped through org.apache.pekko.pattern.internal.BackoffOnStopSupervisor.this, as a parent of class org.apache.pekko.pattern.BackoffSupervisor +BinaryApi.keep[ClassNoLongerCheckedProblem]("org.apache.pekko.pattern.HandlingWhileStopped") +# org.apache.pekko.pattern.internal.BackoffOnStopSupervisor escaped as a parent of class org.apache.pekko.pattern.BackoffSupervisor +BinaryApi.keep[ClassNoLongerCheckedProblem]("org.apache.pekko.pattern.internal.BackoffOnStopSupervisor") diff --git a/cluster-sharding-typed/src/main/mima-filters/binary-api b/cluster-sharding-typed/src/main/mima-filters/binary-api new file mode 100644 index 0000000000..bab4205e28 --- /dev/null +++ b/cluster-sharding-typed/src/main/mima-filters/binary-api @@ -0,0 +1,22 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +# Definitions that were narrowed to private[pekko] in 2.0.x but are still public in +# bytecode. Kept checked so a later removal is still reported against clients compiled +# against 1.0.x. See https://github.com/scala-garden/mima#keeping-a-definition-checked + +BinaryApi.keep[MethodNoLongerCheckedProblem]("org.apache.pekko.cluster.sharding.typed.ClusterShardingSettings#PassivationStrategySettings.this(scala.Option,scala.Option,scala.Option,scala.Option)Unit") diff --git a/cluster-sharding/src/main/mima-filters/binary-api b/cluster-sharding/src/main/mima-filters/binary-api new file mode 100644 index 0000000000..f8f6e52651 --- /dev/null +++ b/cluster-sharding/src/main/mima-filters/binary-api @@ -0,0 +1,22 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +# Definitions that were narrowed to private[pekko] in 2.0.x but are still public in +# bytecode. Kept checked so a later removal is still reported against clients compiled +# against 1.0.x. See https://github.com/scala-garden/mima#keeping-a-definition-checked + +BinaryApi.keep[ClassNoLongerCheckedProblem]("org.apache.pekko.cluster.sharding.PersistentShardCoordinator") diff --git a/remote/src/main/mima-filters/binary-api b/remote/src/main/mima-filters/binary-api new file mode 100644 index 0000000000..55659b6088 --- /dev/null +++ b/remote/src/main/mima-filters/binary-api @@ -0,0 +1,23 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +# Definitions that were narrowed to private[pekko] in 2.0.x but are still public in +# bytecode. Kept checked so a later removal is still reported against clients compiled +# against 1.0.x. See https://github.com/scala-garden/mima#keeping-a-definition-checked + +BinaryApi.keep[MethodNoLongerCheckedProblem]("org.apache.pekko.remote.transport.netty.NettyTransportSettings.PortSelector()Int") +BinaryApi.keep[MethodNoLongerCheckedProblem]("org.apache.pekko.remote.transport.netty.NettyTransportSettings.BindPortSelector()Int") diff --git a/stream/src/main/mima-filters/binary-api b/stream/src/main/mima-filters/binary-api new file mode 100644 index 0000000000..927817bb0e --- /dev/null +++ b/stream/src/main/mima-filters/binary-api @@ -0,0 +1,39 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +# Definitions that were narrowed to private[pekko] or sealed in 2.0.x but are still public in +# bytecode. Kept checked so a later removal is still reported against clients compiled +# against 1.0.x. See https://github.com/scala-garden/mima#keeping-a-definition-checked + +BinaryApi.keep[ClassNoLongerCheckedProblem]("org.apache.pekko.stream.ActorMaterializer") +BinaryApi.keep[ClassNoLongerCheckedProblem]("org.apache.pekko.stream.ActorMaterializer$") +BinaryApi.keep[MethodNoLongerCheckedProblem]("org.apache.pekko.stream.ActorMaterializerSettings.initialInputBufferSize()Int") +BinaryApi.keep[MethodNoLongerCheckedProblem]("org.apache.pekko.stream.ActorMaterializerSettings.maxInputBufferSize()Int") +BinaryApi.keep[MethodNoLongerCheckedProblem]("org.apache.pekko.stream.ActorMaterializerSettings.dispatcher()java.lang.String") +BinaryApi.keep[MethodNoLongerCheckedProblem]("org.apache.pekko.stream.ActorMaterializerSettings.supervisionDecider()scala.Function1") +BinaryApi.keep[MethodNoLongerCheckedProblem]("org.apache.pekko.stream.ActorMaterializerSettings.debugLogging()Boolean") +BinaryApi.keep[MethodNoLongerCheckedProblem]("org.apache.pekko.stream.ActorMaterializerSettings.outputBurstLimit()Int") +BinaryApi.keep[MethodNoLongerCheckedProblem]("org.apache.pekko.stream.ActorMaterializerSettings.fuzzingMode()Boolean") +BinaryApi.keep[MethodNoLongerCheckedProblem]("org.apache.pekko.stream.ActorMaterializerSettings.autoFusing()Boolean") +BinaryApi.keep[MethodNoLongerCheckedProblem]("org.apache.pekko.stream.ActorMaterializerSettings.maxFixedBufferSize()Int") +BinaryApi.keep[MethodNoLongerCheckedProblem]("org.apache.pekko.stream.ActorMaterializerSettings.syncProcessingLimit()Int") +BinaryApi.keep[MethodNoLongerCheckedProblem]("org.apache.pekko.stream.ActorMaterializerSettings.blockingIoDispatcher()java.lang.String") +BinaryApi.keep[MethodNoLongerCheckedProblem]("org.apache.pekko.stream.ActorMaterializerSettings.withDispatcher(java.lang.String)org.apache.pekko.stream.ActorMaterializerSettings") +BinaryApi.keep[ClassNoLongerCheckedProblem]("org.apache.pekko.stream.ActorMaterializerSettings$") +BinaryApi.keep[HierarchyNoLongerCheckedProblem]("org.apache.pekko.stream.Attributes$MandatoryAttribute") +BinaryApi.keep[MethodNoLongerCheckedProblem]("org.apache.pekko.stream.StreamSubscriptionTimeoutSettings.mode()org.apache.pekko.stream.StreamSubscriptionTimeoutTerminationMode") +BinaryApi.keep[MethodNoLongerCheckedProblem]("org.apache.pekko.stream.StreamSubscriptionTimeoutSettings.timeout()scala.concurrent.duration.FiniteDuration")