Skip to content

Releases: typelevel/sbt-typelevel

v0.5.2

11 Sep 20:18
9f26c3d
Compare
Choose a tag to compare

This is the third release in the 0.5.x series. It silences the migration warnings raised by -Xsource:3 on Scala 2.13. These warnings are effectively "unfixable FYIs" that otherwise need to be @nowarned.

Fixes

Full Changelog: v0.5.1...v0.5.2

v0.5.1

11 Sep 03:38
16bbe6c
Compare
Choose a tag to compare

This is the second release in the 0.5.x series. It adds support for Scala v2.13.12.

Updates

  • Update sbt to 1.9.4 by @typelevel-steward in #627
  • Update sbt-scalafmt to 2.5.2 by @typelevel-steward in #631
  • Update to checkout v4 by @armanbilge in #633
  • Update sbt-scalafix to 0.11.1 by @typelevel-steward in #638

Full Changelog: v0.5.0...v0.5.1

v0.5.0

22 Aug 18:49
4c0aaaa
Compare
Choose a tag to compare

This is the first release in the sbt-typelevel v0.5.x series! It brings several enhancements, unfortunately some of which may break existing builds. However for many projects with standard builds I expect upgrading to be simple and straightforward.

Over the course of 12 RCs I have personally upgraded a handful of projects. In my experience the roughest bit was the scalacOptions changes: specifically the new warnings and also some subtle changes to type inference and implicit resolution. However while working through these warnings, I did identify and fix a couple of bugs ... YMMV ;)

Thank you to everyone who has contributed to this and previous releases! Special thanks to @satorg, @mzuehlke, @j-mie6, @etspaceman, @bpholt, @jenshalm for collaborations and contributions, early adoption and issue reporting, and keeping things fun on Discord :)

Major changes

sbt v1.9.0

sbt-typelevel now requires sbt v1.9.0+.

CI jobs identified by Scala binary version

Previously, CI jobs were identified by the full Scala version e.g. 2.13.11 or 3.2.2. Now, they are identified only by the binary version e.g. 2.13 or 3. This means that CI job names are now stable to Scala updates.

However, if you have customized your CI matrix with exclusions or conditions based on the Scala version you will need to update those to match only on the binary version. To restore the old behavior set githubWorkflowScalaVersions := scalaCrossVersions.value.

Other enhancements

Refreshed scalac options

Compiler options are now optimized for the following Scala versions. If possible, please upgrade to these versions first.

  • Scala 2.12.18+, Scala 2.13.11+, Scala 3.3.0+

Scala 2 is now tuned to behave like Scala 3, not the other way around

Previously, our compiler flags were tuned to make Scala 3 behave more like Scala 2 e.g. with -source:3.0-migration. Now, we have removed that flag and are instead tuning Scala 2 to behave more like Scala 3 e.g. with -Xsource:3.

One example of a common pattern where this makes a difference is a case class with a private constructor.

case class Foo private (bar: Bar, baz: Baz)

Under the old settings, this would still generate a public apply(bar, baz) method. For Scala 2.13 and 3, under the new settings the apply method will also be private, and you must explicitly add a public apply method if desired. This is Scala 3 behavior. Most projects should catch this change either at compile-time or with MiMa.

Unused warnings for all Scala versions

Unused warnings are now enabled on Scala 2.12 and Scala 3.3+, in addition to Scala 2.13.

  • Re-enable unused warnings for scala 2.12 by @satorg in #312
  • Add re-introduced unused/discard warnings for scala >3.3.0 by @amumurst in #515

Scala version-specific @nowarns

To help manage fatal warnings when cross-building for multiple Scala versions, @satorg has created the scalac-compat library which provides @nowarn2, @nowarn3, etc. This is now included by default as compile-only dependency.

Other enhancements

Target JDK 8 by default

We now set tlJdkRelease := Some(8) so that the compiler explicitly targets JDK 8. If you are using APIs from newer JDKs your code will fail to compile. To target a newer JDK you may set e.g. tlJdkRelease := Some(11). To restore the old behavior, set tlJdkRelease := None i.e. no explicit target.

Publish to s01.oss.sonatype.org by default

The original oss.sonatype.org is now designated "legacy" in favor of s01.oss.sonatype.org. Typelevel and several other orgs are already publishing to s01 as well as all group IDs registered since 2021. You can migrate your org by opening a ticket on the Sonatype Jira. To restore the old behavior set tlSonatypeUseLegacyHost := true.

Laika 0.19

Huge thanks to @jenshalm for releasing Laika v0.19.0 and upgrading the sbt-typelevel-site plugin. This includes several enhancements and overall improves the integration.

  • Site Plugin: Migrate to Laika 0.19.0-RC1 + separate generic defaults from Typelevel-specific ones by @jenshalm in #377

Projects not published under Typelevel will no longer automatically have Typelevel-themed websites. If you are a Typelevel-affiliated project you can opt-in to the theming by setting tlSiteIsTypelevelProject := Some(TypelevelProject.Affiliate).

  • Distinguish between org, affiliate projects in site plugin by @armanbilge in #540

The tlSiteRelatedProjects setting is now deprecated. You may either remove it or replicate the feature as done in the following PR.

New Typelevel site theme

@j-mie6 aka Dr Doc Warrior generously set aside his doctoral thesis writing to instead focus on making us a beautiful new theme for all Typelevel and affiliate sites. This has already been rolled out to the sbt-typelevel documentation and several others.

CI enhancements

JDKs and dependency caching

We now fully rely on the setup-java (and similar setup-graalvm) actions to manage JDKs and Maven dependency caching, instead of custom JDK index and caching steps.

Caching is now also more aggressive: if no cache is found, the CI job will create one by attempting to download all the dependencies used in the build. This cache is then shared by all CI jobs.

Dependency submission

Your project will now export its dependency graph to the GitHub API with the sbt-dependency-submission action. For example, this powers Dependabot vulnerability alerts. To opt-out, set tlCiDependencyGraphJob := false.

  • Add dependency submission job to CI by @armanbilge in #340
  • Move submit-dependencies condition to job-level, not step-level by @armanbilge in #341
  • Make dependency submission ignore non-compile scopes and no-publish projects by @armanbilge in #530

More aggressive cancelation of CI jobs

The build CI jobs now have a default 60-minute timeout that is configurable e.g. githubWorkflowBuildTimeoutMinutes := Some(30). CI is also now configured by default so that there is at most one concurrent job per PR or branch i.e. pushing another commit to a PR will cancel CI on the previous commit and merging another PR to main will cancel CI on the previous merge. Note that these concurrency limits will never affect the publishing of a tag.

  • Allow configuring timeout-minutes for a job and a step by @iRevive in #416
  • Allow configuring concurrency for a job by @iRevive in #417

Configurable job permissions

It is now possible to set granular permissions at both the workflow- and job-level. This is opt-in; otherwise CI defaults to the permissions granted in the repository settings.

Read more

v0.5.0-RC12

12 Aug 02:59
6c1ca23
Compare
Choose a tag to compare
v0.5.0-RC12 Pre-release
Pre-release

This is the twelfth release candidate of sbt-typelevel v0.5.0.

Fixes

Full Changelog: v0.5.0-RC11...v0.5.0-RC12

v0.5.0-RC11

09 Aug 16:33
6bc62e0
Compare
Choose a tag to compare
v0.5.0-RC11 Pre-release
Pre-release

This is the eleventh release candidate of sbt-typelevel v0.5.0.

Fixes

Full Changelog: v0.5.0-RC10...v0.5.0-RC11

v0.5.0-RC10

03 Aug 15:27
933c2fd
Compare
Choose a tag to compare
v0.5.0-RC10 Pre-release
Pre-release

This is the tenth release candidate of sbt-typelevel v0.5.0.

Fixes

Updates

  • Update sbt-mima-plugin to 1.1.3 by @typelevel-steward in #614
  • Update sbt to 1.9.3 by @typelevel-steward in #616

Full Changelog: v0.5.0-RC9...v0.5.0-RC10

v0.5.0-RC9

16 Jul 21:05
9309a65
Compare
Choose a tag to compare
v0.5.0-RC9 Pre-release
Pre-release

This is the 9th candidate release of SBT typelevel, removing an sbt update call for validate steward.

What's Changed

  • Remove sbt update from steward job by @etspaceman in #612
  • Update scalafmt-core to 3.7.10 by @typelevel-steward in #613

Full Changelog: v0.5.0-RC8...v0.5.0-RC9

v0.5.0-RC8

16 Jul 16:21
e974029
Compare
Choose a tag to compare
v0.5.0-RC8 Pre-release
Pre-release

This is the eighth release candidate of sbt-typelevel v0.5.0.

What's Changed

Features

Fixes

Docs

Full Changelog: v0.5.0-RC7...v0.5.0-RC8

v0.5.0-RC7

10 Jul 15:08
912cf0d
Compare
Choose a tag to compare
v0.5.0-RC7 Pre-release
Pre-release

This is the seventh release candidate of sbt-typelevel v0.5.0.

What's Changed

Fixes

Documentation

Updates

  • Update sbt to 1.9.2 by @typelevel-steward in #605

Full Changelog: v0.5.0-RC6...v0.5.0-RC7

v0.5.0-RC6

09 Jul 14:36
c5a520a
Compare
Choose a tag to compare
v0.5.0-RC6 Pre-release
Pre-release

This is the sixth release candidate of sbt-typelevel v0.5.0.

What's Changed

Enhancements

Fixes

Docs

Updates

  • Update laika-sbt to 0.19.3 by @typelevel-steward in #594
  • Update sbt-crossproject, ... to 1.3.2 by @typelevel-steward in #598
  • Update typelevel-scalafix to 0.1.6 by @typelevel-steward in #599

Full Changelog: v0.5.0-RC5...v0.5.0-RC6