He-Pin opened a new pull request, #3061: URL: https://github.com/apache/pekko/pull/3061
### Motivation Upgrade Pekko's Scala 3 version from 3.3.8 to 3.8.4 for forward compatibility with the upcoming Scala 3.9 LTS. Several patterns valid in 3.3.x produce errors or warnings in 3.8.4 that must be addressed while preserving cross-compilation with Scala 2.13. ### Modification **Scala version:** - Bump `scala3Version` from `3.3.8` to `3.8.4` **PersistencePlugin refactor:** - Merge `[T: ClassTag]` context bound and `(implicit ev: PluginProvider)` into a single `(implicit ct: ClassTag[T], ev: PluginProvider)` parameter list, enabling subclasses to pass both arguments without the `using` keyword (cross-compatible with Scala 2.13 and 3.3.x) **ClassTag context bound fixes:** - Replace explicit `ClassTag` passing `method(ClassTag(clazz))` with `implicit val ct = ClassTag(clazz); method` pattern throughout the codebase (context bounds become `using` clauses in Scala 3.8, making positional passing an error) - Affects: `Behavior`, `EventStream`, `Topic`, `ShardingProducerController`, `ShardedDaemonProcessImpl`, `StreamTestKit`, `EventSourcedBehaviorTestKit`, `ActorContextSpec` **SortedSet/TreeSet ordering fixes:** - Fix `SortedSet.empty(ordering)` / `TreeSet.empty(ordering)` across cluster, cluster-tools, cluster-sharding, distributed-data modules by binding the Ordering as an implicit val before calling `.empty[Member]` **JDK targeting:** - Use `-java-output-version` for Scala 3.8+ instead of deprecated `-release` / `-Xtarget` **Misc fixes:** - Add `@unchecked` to type-test patterns that cannot be checked at runtime (`Reachability.scala`, `AskPattern.scala`) - Fix `_` wildcard type argument to `?` in scala-3-only source files - Fix `LogSource` resolution in `MultiNodeSpec` (`classOf` instead of `this.getClass`) - Fix "pure expression does nothing" in `FixedBufferSpec` structural type calls - Remove discarded non-Unit value (unused `Success`) in `SnapshotStorage` - Add `-Wconf` suppression rules for Scala 3.8 deprecation and syntax warnings in `PekkoDisciplinePlugin` - Replace `= _` with `= null` / `= None` / `= false` (deprecated in Scala 3.4+) - Replace `private[this]` / `protected[this]` with `private` / `protected` (deprecated in Scala 3.4+) ### Result All modules compile successfully with both Scala 2.13.18 and Scala 3.8.4. Cross-compilation with Scala 2.13 is preserved. No `using` keyword is used in shared source files — all changes use cross-compatible patterns. ### Tests - `sbt "++3.8.4" "compile" "Test / compile"` — success - `sbt "compile" "Test / compile"` (Scala 2.13) — success (docs module has pre-existing unused warnings) - `sbt "persistence / mimaReportBinaryIssues"` — success - `scalafmt --mode diff-ref=origin/main` — success - `sbt headerCreateAll` — success ### References None - proactive Scala 3 forward compatibility -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
