object CompilerPluginWhitelist
- Alphabetic
- By Inheritance
- CompilerPluginWhitelist
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Value Members
-
def
enableCachingInScalacOptions(scalaVersion: String, scalacOptions: List[String], logger: Logger, tracer: BraveTracer, parallelUnits: Int): Task[List[String]]
Enable compiler plugin caching in scalac options if the feature is supported in the given scala version and all the compiler plugins in a project are marked as safe in Bloop's compiler plugin whitelist.
Enable compiler plugin caching in scalac options if the feature is supported in the given scala version and all the compiler plugins in a project are marked as safe in Bloop's compiler plugin whitelist.
This is a method that can be called concurrently by different compiler processes that share the same compiler option, so it needs to be thread-safe. To compute whether a compiler plugin is friendly to caching or not, we first try to acquire the scalac option represeting that compiler plugin and then process that in parallel. If we cannot acquire the processing of a given compiler plugin, it means another concurrent process is doing it, so before returning we wait on those background computations. Once all the compiler plugins have been populated, we check if all compiler plugins are cache friendly and, if that's the case, we add a scalac option to cache plugin classloaders.
-
val
scalaVersionBlacklist: List[String]
A sequence of versions that are known not to support compiler plugin classloading.
-
val
whitelistedPluginNames: List[String]
A list of compiler plugin names (as specified in their scalac-plugin.xml whose classloaders are safe to be cached.
A list of compiler plugin names (as specified in their scalac-plugin.xml whose classloaders are safe to be cached. The plugin sources of every plugin have been checked to ensure there is no global state and this is a requirement to adding new names in the list.