Releases: typelevel/sbt-typelevel
v0.5.0-RC2
This is the second release candidate of sbt-typelevel v0.5.0.
Fixes
- Move
noPublishProjectRefs
to always-triggered plugin by @armanbilge in #554
Updates
- Update scalac-compat-annotation to 0.1.1 by @typelevel-steward in #555
Full Changelog: v0.5.0-RC1...v0.5.0-RC2
v0.5.0-RC1
This is the first release candidate of sbt-typelevel v0.5.0. 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.
My goal is to update several Typelevel projects to the RC before designating a final release. If you have bandwidth to give it a try in your project, please do! I would be surprised if there aren't a few kinks to work out :)
Thank you to everyone who has contributed to this and previous releases!
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
.
- Use semantic version selector for
++
by @armanbilge in #400
Other enhancements
- Populate
releaseNotesURL
setting by @armanbilge in #532
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. 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.
- Remove
-source:3.0-migration
by @armanbilge in #531 - Add
-Xsource:3
to 2.12 (and future minor 2 releases) builds by @etspaceman in #493
Unused warnings for all Scala versions
Additionally, 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 @nowarn
s
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.
- Add
scalac-compat
dependency by default by @armanbilge in #518
Other enhancements
- Tune Scala compiler warnings by @satorg in #344
- Fix console/scalacOptions by @satorg in #349
tlFatalWarnings
now respectsCompile
/Test
scopes by @armanbilge in #531
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.
- Set default
tlJdkRelease := Some(8)
by @armanbilge in #218 -release
->-java-output-version
in Scala 3.2 by @armanbilge in #543
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
.
- Make
s01.oss.sonatype.org
the default host by @armanbilge in #539
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.
- Address
tlSiteRelatedProjects
deprecation by @armanbilge in #549
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.
- Setup java cache by @pjfanning in #300
- Use new setup-graalvm action by @armanbilge in #396
- Use vanilla setup-java action, update setup-graalvm action by @armanbilge in #538
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 (instead of only those specific to its position in the CI matrix). This greatly reduces the chance of cache misses in future CI jobs.
- Run
sbt update
on cache miss by @armanbilge in #423 - Cache hit outputs as a string by @armanbilge in #427
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
Refreshed prePR
The prePR
command now only runs "self-fixing" tasks such as scalafmt and scalafix. Furthermore, it respects your CI configuration e.g. if you have disabled formatting checks then they will not be included in prePR
.
- Better
prePR
command by @armanbilge in #542, #552
Configurable BSP
Cross-platform projects that are "pure" (i.e., 100% share sources for all platforms) now enable BSP only for the JVM platform by default. This should reduce the load on IDEs.
You may configure which platforms you want to enable BSP for any cross project (pure or otherwise) by setting e.g. tlBspCrossProjectPlatforms := Set(JVMPlatform, JSPlatform)
. This setting does not affect non-cross projects, including JS- or Native-only projects.
Enhanced support for Scala Native
It is now easier to cross-build for Scala Native out-of-the-box.
- Add
sbt-scala-native-crossproject
to core by @armanbilge in #517 - Add
TypelevelScalaNativeGitHubPlugin
by @armanbilge in #545
Other changes with compatibility concerns
- ...
v0.4.22
This is the twenty-third release in the 0.4.x series of sbt-typelevel. It is binary- and source-compatible with previous releases in this series.
This release includes dependency updates to support Scala 2.12.18 and 2.13.11. This will likely be the last regular release in the 0.4.x series and I hope to release sbt-typelevel v0.5.0 final in the next week or two.
Updates
New Contributors
Full Changelog: v0.4.21...v0.4.22
v0.4.21
This is the twenty-second release in the 0.4.x series of sbt-typelevel. It is binary- and source-compatible with previous releases in this series.
Features
Fixes
- Steward config validation job can use default Java by @armanbilge in #508
Docs
Thank you Brian! 😄
Full Changelog: v0.4.20...v0.4.21
v0.4.20
This is the twenty-first release in the 0.4.x series of sbt-typelevel. It is binary- and source-compatible with previous releases in this series.
Features
- Replace Twitter icon with Mastodon icon by @armanbilge in #494
- Add steward config validator CI job by @armanbilge in #496
Fixes
- Fix project id in "run test with ..." by @armanbilge in #479
Updates
- Update sbt-mima-plugin to 1.1.2 by @typelevel-steward in #485
- Update sbt-crossproject, ... to 1.3.1 by @typelevel-steward in #491
- Use new sbt-crossproject settings by @armanbilge in #495
Full Changelog: v0.4.19...v0.4.20
v0.5.0-M10
What's Changed
- Add helpful error for misplaced managed sources by @armanbilge in #448
- Update scalafmt-core to 3.7.0 by @typelevel-steward in #452
- Update coursier to 2.1.0-RC5 by @typelevel-steward in #453
- Fix Typo by @isomarcte in #455
- Update scalafmt-core to 3.7.1 by @typelevel-steward in #456
- Populating Job summary with tests results and publish report by @TonioGela in #451
- Use
-source:3.2-migration
on Scala 3.2 (when cross-compiling) by @armanbilge in #467 - Update scalafmt-core to 3.7.2 by @typelevel-steward in #469
- Update coursier to 2.1.0-RC6 by @typelevel-steward in #468
- Making
mergifyLabelPaths
overridable by @TonioGela in #466 - Removed default ligatures behaviour by @j-mie6 in #471
- Fixing section title sizing for code blocks by @TonioGela in #472
- Revert "Use
-source:3.2-migration
on Scala 3.2 (when cross-compiling)" by @armanbilge in #473 - Condense GHA step summaries by @armanbilge in #475
- 0.4 -> main by @armanbilge in #476
- Update sbt-sonatype to 3.9.17 by @typelevel-steward in #460
- Update mdoc, sbt-mdoc to 2.3.7 by @typelevel-steward in #461
New Contributors
- @isomarcte made their first contribution in #455
- @TonioGela made their first contribution in #451
- @j-mie6 made their first contribution in #471
Full Changelog: v0.5.0-M9...v0.5.0-M10
v0.4.19
This is the twentieth release in the 0.4.x series of sbt-typelevel. It is binary- and source-compatible with previous releases in this series.
Features
- Populating Job summary with tests results and publish report by @TonioGela in #451, #475
Fixes
- Add helpful error for misplaced managed sources by @armanbilge in #448
- Making
mergifyLabelPaths
overridable by @TonioGela in #466 - Removed default ligatures behaviour by @j-mie6 in #471
- Fixing section title sizing for code blocks by @TonioGela in #472
Docs
- Fix Typo by @isomarcte in #455
New Contributors
- @isomarcte made their first contribution in #455
- @TonioGela made their first contribution in #451
- @j-mie6 made their first contribution in #471
Thank you wonderful contributors!
Full Changelog: v0.4.18...v0.4.19
v0.5.0-M9
What's Changed
- Update to sbt-header 5.9.0 by @armanbilge in #428
- Update sbt-sonatype to 3.9.15 by @typelevel-steward in #429
- Use
hostedApiUrl
as fallback forapiURL
by @armanbilge in #431 - Add Inkuire for scaladoc by @zetashift in #437
- Update coursier to 2.1.0-RC4 by @typelevel-steward in #438
- Bump actions to Node 16 versions by @rossabaker in #440
- Only run fmt/header/mima etc. checks on primary os by @armanbilge in #441
- Set
startYear
to 2022 by @armanbilge in #444 - Merge 0.4 -> main by @armanbilge in #446
- Update sbt to 1.8.2 by @typelevel-steward in #445
New Contributors
- @zetashift made their first contribution in #437
Full Changelog: v0.5.0-M8...v0.5.0-M9
v0.4.18
This is the nineteenth release in the 0.4.x series of sbt-typelevel. It is binary- and source-compatible with previous releases in this series.
Features
- Add Inkuire for scaladoc by @zetashift in #437
Fixes
- Use
hostedApiUrl
as fallback forapiURL
by @armanbilge in #431 - Only run fmt/header/mima etc. checks on primary os by @armanbilge in #441
Updates
- Bump actions to Node 16 versions by @rossabaker in #440
New Contributors
- @zetashift made their first contribution in #437
Full Changelog: v0.4.17...v0.4.18
v0.5.0-M8
What's Changed
- Cache hit outputs as a string by @armanbilge in #427
Full Changelog: v0.5.0-M7...v0.5.0-M8