scalac options for the enlightened
TpolecatPlugin.autoImport.ScalacOptions
by @DavidGregory084 in https://github.com/typelevel/sbt-tpolecat/pull/166
Full Changelog: https://github.com/typelevel/sbt-tpolecat/compare/v0.5.0...v0.5.1
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
*.scala
files but not *.sbt
files.advancedOption
overload with support for multiple argument options was added.-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.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.
ScalacOptions
trait was made package-private. This is to ensure that new methods can be added to this trait without risking binary compatibility breakages.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.-Xasync
option was added to the ScalacOptions
DSL.-Ybackend-parallelism
option was added to the ScalacOptions
DSL. This option can be used to enable scalac to emit class files in parallel.-release
option was added to the ScalacOptions
DSL. This option can be used to compile for a specific version of the Java platform.ThisBuild / scalacOptions
, those appended options will no longer be inherited by other configurations, e.g. Test / scalacOptions
.Test / scalacOptions
as expected. This had the same underlying cause as #74.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.