Scalafix 0.9.28 with support for Scala 3

We are happy to announce the release of Scalafix 0.9.28.Huge thanks to bjaglin and taisukeoe
for their great contributions (release notes: 1, 2).

This release brings many improvements, in particular it introduces support of Scala 3 for both users and rule authors.

Highlights of this last release:

  • Support Scala 3: it’s still experimental and some built-in rules may not work as expected. We started testing some community rules on Scala 3, one of them is the popular organize-imports rule. Most tests are passing except the ones relying on the Wunused scalacOption which is not yet supported by Scala 3 compiler. Some other rules will work out-of-the box with Scalafix 0.9.28, even if the source files use features or syntax introduced in Scala 3. We invite all rule authors to test their rules against Scala 3 and to adapt, if needed, the required scalacOptions (example of the on-going PR on scalafix-organize-imports)
  • Update Tthe Scalafix.g8 template: to make it simple to test rules against Scala 3 source files. To test it you can run sbt new scalacenter/scalafix.g8
  • Drop SemanticRuleSuite and SyntacticRuleSuite: those two classes were already deprecated since 0.9.18 and we have created a migration rule to make the migration automatic for most cases. This will unlock the upgrade of scalatest for next versions.
  • Caching is now enabled by default on sbt-scalafix: successive invocations of the scalafix task with the same arguments & configuration will be incremental. This was already the case when scalafixOnCompile was enabled, but we believe this can improve user experience also for users starting scalafix sporadically.
  • Support of Scala 2.13.6 & -Xsource:3
  • Support on-compile specific configuration: add triggered config description to docs by taisukeoe · Pull Request #1375 · scalacenter/scalafix · GitHub