All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Early Semantic Versioning in addition to Semantic Versioning.
-
The plugin artifact is now published under the
org.typelevel
group ID. An artifact migration has been added to Scala Steward, so Scala Steward users should not have to update the artifact group ID manually. -
The project now makes use of the scalac-options library, so symbols relating to scalac options and their availability on differing Scala versions have been moved to the package
org.typelevel.scalacoptions
. -
All other symbols provided by this plugin have been moved to the
org.typelevel.sbt.tpolecat
package. -
The
ScalacOptions
object is no longer part of this plugin'sautoImport
symbols. You will need to explicitlyimport org.typelevel.scalacoptions.ScalacOptions
. -
A Scalafix migration is available, and can be applied using the
github:
scheme, e.g.
$ scalafix github:typelevel/sbt-tpolecat/v0_5?sha=4837a5bad7426c97be9bb3a5b792fd779f5c921a
- However, please note that there are severe limitations on running Scalafix migrations that require semantic information on sbt build files. Scalafix semantic migrations are able to update
*.scala
files but not*.sbt
files.
- #127 - add a verbose mode, which enables verbose options such as
-Vimplicits
and-explain
.
- #147 - added support for compiler warnings re-introduced in Scala 3.3.0.
- #143 - set
tpolecatOptionsMode
in every scope when using the mode commands, rather than justThisBuild
scope. This enables users who set the mode differently in different subprojects to make use of mode commands.
- #115 - added the new
-Wnonunit-statement
option.
- #102 - a bug which resulted in scalac options contributed by other plugins being overwritten, most notably the Scala.js plugin. Huge thanks to @sjrd for their work on #126 which resolves this issue.
- #84 - An
advancedOption
overload with support for multiple argument options was added. - #88 - A Scalafix migration rule to migrate package names for the upcoming 0.5.0 release was added.
- #85 -
-Xcheckinit
was removed from the default option set. After discussion on issues #10 and #83 it has become apparent that although-Xcheckinit
offers a lot of value for some users, it creates some very tricky problems for users that are writing async code. The initialization checking code this option produces introduces@volatile
variables that can disguise memory visibility issues. - #88 - The project was restructured into a multi-module sbt build.
0.4.0 - 2022-07-15
NOTE: This release series will be the final one released under the group ID io.github.davidgregory084
, and the final one using the package io.github.davidgregory084
.
As of the 0.5.x series, this project will be released under the group ID org.typelevel
and using the package org.typelevel.sbt
.
If you are using Scala Steward to upgrade your libraries, an artifact migration has been provided to update the sbt-tpolecat group ID.
A Scalafix migration will be provided upon the release of 0.5.0
to migrate any usages of the previous package in your projects.
- #75 The
ScalacOptions
trait was made package-private. This is to ensure that new methods can be added to this trait without risking binary compatibility breakages. - #75 The
ScalacOption
constructor was changed from(tokens: List[String], ...)
to(option: String, args: List[String], ...)
. This is to ensure that multi-argument options can be filtered out regardless of which arguments were provided to the option.
0.3.3 - 2022-06-06
- Support for the SIP-22
-Xasync
option was added to theScalacOptions
DSL. - Support for the
-Ybackend-parallelism
option was added to theScalacOptions
DSL. This option can be used to enable scalac to emit class files in parallel. - Support for the
-release
option was added to theScalacOptions
DSL. This option can be used to compile for a specific version of the Java platform.
- #74 - a bug in filtering of multiple-argument options. This filtering was broken in the attempt to fix #60. Unfortunately this means that if users append to
ThisBuild / scalacOptions
, those appended options will no longer be inherited by other configurations, e.g.Test / scalacOptions
. - #78 - a bug where options were not filtered out of
Test / scalacOptions
as expected. This had the same underlying cause as #74. - #77 - the JDK version was not being set as expected by the setup-scala action. Resolved by switching to setup-java instead.
Please do not use this release - GitHub accepted a tag push but not its corresponding commit data, so the release proceeded against a commit that is not on the main branch.
0.3.1 - 2022-04-25
- The dependency on the sbt-partial-unification plugin was dropped. This is because support for partial unification was backported to Scala 2.11.11, so all versions of Scala supported by this plugin either enable partial unification by default or provide a compiler option to enable it. This means that this plugin will no longer enable partial unification on 2.11.x patch releases older than 2.11.11.
0.3.0 - 2022-04-22
- A
defaultConsoleExclude
option set was added to theScalacOptions
DSL. This option set can be used for filtering out compiler options that trigger warnings in the Scala REPL.
-
tpolecatConsoleOptionsFilter
was replaced bytpolecatExcludeOptions
. The use of a function to filter out console options did not interact well with the new method of settingscalacOptions
in sbt-tpolecat 0.2.3. Please append totpolecatExcludeOptions
in theconsole
task you wish to configure instead, e.g.IntegrationTest / console / tpolecatExcludeOptions ++= ScalacOptions.defaultConsoleExclude
0.2.3 - 2022-04-14
- Begin keeping this changelog.
- Added
-Xsource
(Scala 2.x) and-source
(Scala 3.x) early migration settings to the ScalacOptions DSL.
- #60 - a bug in setting
scalacOptions
where it was set using:=
rather than appended to via++=
. This prevented scope delegation viaThisBuild / scalacOptions
from working for some users.
0.2.2 - 2022-03-30
- Ensure that all keys with dependencies are derived settings, so that e.g.
Test / tpolecatScalacOptions
can be used to manipulateTest / scalacOptions
. - Add a
toString
toScalacOption
.
0.2.1 - 2022-03-30
- Enable MiMa checks in GitHub Actions workflows.
- Set
versionScheme
to clarify version compatibility claims.
- Apply
-Xfatal-warnings
regardless of version once more. Applying-Werror
for Scala 2.13.x causes problems for users who currently filter out-Xfatal-warnings
fromscalacOptions
explicitly.
- Expanded usage instructions to guide users toward the
ScalacOptions
DSL.
0.2.0 - 2022-03-30
- Development, CI and release modes for setting options differently according to the context.
- Add a simple
ScalacOptions
DSL for setting options in each mode. - Add mode-setting commands
tpolecatDevMode
,tpolecatCiMode
,tpolecatReleaseMode
. - Environment variable checks in order to decide which mode to enable on startup.
- The signature of
scalacOptionsFor
exported via this plugin'sautoImport
- it now requires aSet
of all selectedScalacOptions
for the current mode in addition to the current Scala version. - The
filterConsoleScalacOptions
function exported via this plugin'sautoImport
was renamed totpolecatConsoleOptionsFilter
for consistency with other keys provided by the plugin.
- The
validFor
function that was previously exported via this plugin'sautoImport
.