Skip to content

Latest commit

 

History

History
182 lines (108 loc) · 10.5 KB

CHANGELOG.md

File metadata and controls

182 lines (108 loc) · 10.5 KB

Changelog

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.

Changed

  • 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's autoImport symbols. You will need to explicitly import 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.

Added

  • #127 - add a verbose mode, which enables verbose options such as -Vimplicits and -explain.

Added

  • #147 - added support for compiler warnings re-introduced in Scala 3.3.0.

Changed

  • #143 - set tpolecatOptionsMode in every scope when using the mode commands, rather than just ThisBuild scope. This enables users who set the mode differently in different subprojects to make use of mode commands.

Added

  • #115 - added the new -Wnonunit-statement option.

Fixed

  • #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.

Added

  • #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.

Changed

  • #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.

Changed

  • #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

Added

  • Support for the SIP-22 -Xasync option was added to the ScalacOptions DSL.
  • Support for the -Ybackend-parallelism option was added to the ScalacOptions DSL. This option can be used to enable scalac to emit class files in parallel.
  • Support for the -release option was added to the ScalacOptions DSL. This option can be used to compile for a specific version of the Java platform.

Fixed

  • #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.

0.3.2 - 2022-06-06 [YANKED]

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

Changed

  • 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

Added

  • A defaultConsoleExclude option set was added to the ScalacOptions DSL. This option set can be used for filtering out compiler options that trigger warnings in the Scala REPL.

Changed

  • tpolecatConsoleOptionsFilter was replaced by tpolecatExcludeOptions. The use of a function to filter out console options did not interact well with the new method of setting scalacOptions in sbt-tpolecat 0.2.3. Please append to tpolecatExcludeOptions in the console task you wish to configure instead, e.g.

    IntegrationTest / console / tpolecatExcludeOptions ++= ScalacOptions.defaultConsoleExclude

0.2.3 - 2022-04-14

Added

  • Begin keeping this changelog.
  • Added -Xsource (Scala 2.x) and -source (Scala 3.x) early migration settings to the ScalacOptions DSL.

Fixed

  • #60 - a bug in setting scalacOptions where it was set using := rather than appended to via ++=. This prevented scope delegation via ThisBuild / scalacOptions from working for some users.

0.2.2 - 2022-03-30

Fixed

  • Ensure that all keys with dependencies are derived settings, so that e.g. Test / tpolecatScalacOptions can be used to manipulate Test / scalacOptions.
  • Add a toString to ScalacOption.

0.2.1 - 2022-03-30

Added

  • Enable MiMa checks in GitHub Actions workflows.
  • Set versionScheme to clarify version compatibility claims.

Fixed

  • 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 from scalacOptions explicitly.

Changed

  • Expanded usage instructions to guide users toward the ScalacOptions DSL.

0.2.0 - 2022-03-30

Added

  • 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.

Changed

  • The signature of scalacOptionsFor exported via this plugin's autoImport - it now requires a Set of all selected ScalacOptions for the current mode in addition to the current Scala version.
  • The filterConsoleScalacOptions function exported via this plugin's autoImport was renamed to tpolecatConsoleOptionsFilter for consistency with other keys provided by the plugin.

Removed

  • The validFor function that was previously exported via this plugin's autoImport.