CHANGELOG¶
2.3.11 - July 8, 2023¶
- Scala 2.13.11 and 2.12.18 support
2.3.10 - April 4, 2023¶
- Retired the hydraStartTrial command.
2.3.9 - November 1, 2022¶
- Scala 2.13.10 support
2.3.8 - September 26, 2022¶
- Scala 2.12.17 and 2.13.9 support
2.3.7 - July 6, 2022¶
- Scala 2.12.16 support
2.3.6 - February 20, 2022¶
- Scala 2.13.8 support
- Updated hydra-bridge to be in sync with latest sbt/zinc compiler-bridge v1.6.1
2.3.5 - December 4, 2021¶
- Scala 2.12.15 and 2.13.7 support
2.3.4 - June 1, 2021¶
- Scala 2.12.14 and 2.13.6 support
2.3.3 - May 14, 2021¶
- Addressed behavior of
@nowarn
2.3.2 - February 28, 2021¶
- Scala 2.13.5 support
2.3.1 - January 20, 2020¶
- Correctly set concurrent restrictions for Hydra compilation (refer to the related documentation)
- Scala 2.12.13 support
2.3.0 - December 27, 2020¶
- sbt 1.4 support! (refer to the upgrade strategy)
2.2.5 - November 21, 2020¶
- Updated third-party dependencies
- Fix for "JDK 11 Class sun.reflect.CallerSensitive not found" error (scala/bug#11679)
- Workaround for Scaladoc range position bug (scala/bug#11865)
- Scala 2.13.4 support
2.2.4 - July 29, 2020¶
- 2.13.3 support
- 2.12.12 support
2.2.3 - April 30, 2020¶
- 2.13.2 support
- Better package object support in incremental compilation
2.2.2 - March 24, 2020¶
- Fix regression that may cause
illegal cyclic errors
2.2.1 - March 18, 2020¶
- Fix NPE when passing the
-verbose
flag - Support Scala 2.12.11
2.2.0 - December 17, 2019¶
- Included Hydra Scala compiler in
ScalaInstance.allJars
. - Fixed issue with compilation metrics not pushed to the Dashboard due to stale
~/.triplequote/metrics.runid
file. - Enhanced inlining support.
- Prevent
inferImplicitValue
from reporting false divergent implicits. - Improved support for
-explaintypes
. - Support for the silencer plugin (remove
-Yphase-disable-late:silencer
from your build if you had it set).
2.1.13 - September 23, 2019¶
- Support Scala 2.13.1
sbt:
- Request a build reload after a successful license activation
- Fixed a crash when a project has libraryDependencies forced to
Nil
- Set a 1 second timeout when checking for a new Hydra release at build load
Gradle (upgrade the Gradle Hydra plugin to version 1.1.1):
- Fixed issue preventing license activation with Gradle 5+
- Fixed issue preventing resolution of dashboard-client JAR
Maven (upgrade the Scala Maven plugin to version 3.2.2-hydra09):
- Fixed issue preventing resolution of dashboard-client JAR
2.1.12 - September 13, 2019¶
- Support Scala 2.12.10
2.1.11 - September 6, 2019¶
- New command:
hydraCompilationStats
do display statistics about compilation and time saved - Display a message on certain achievements, such as saving 30 min in a single day
- Improved error message when a license fails to activate.
2.1.10 - August 7, 2019¶
- Fix double-definition errors when using symbolic links for source directories
- Support Scala 2.12.9
2.1.9 - July 12, 2019¶
- Fix "class X comes from unknown origin" errors in sbt 1.x on Java 9 or newer
2.1.8 - July 4, 2019¶
- Support for Scala 2.13.
- Updated hydra-bridge to be in sync with latest sbt/zinc compiler-bridge v1.2.5 (including performance improvements)
2.1.7 - June 8, 2019¶
- Remove scala-logging dependency that may leak into the Scala macro class loader
- Use a rolling appender for hydra.log
- Fix a feww issues involving XML literals with code splices that could lead to compilation errors
2.1.6 - June 1st, 2019¶
- Fix a regression in the sbt plugin that may cause a crash when using aliased commands with cross compilation.
2.1.5 - May 30, 2019¶
- Added
hydraStartLocalDashboard
sbt task for starting a local Dashboard instance. - Automatically start a local Dashboard instance when starting a trial in sbt
- Faster check for activated license when running several compilations in the same process
- The sbt-hydra plugin automatically disables itself if the project Scala version is not supported.
2.1.4 - May 20, 2019¶
- Support sbt 1.3.0 (RC1 won't work, please use RC2 or later)
2.1.3 - April 18, 2019¶
- Fixed an issue where super accessors may be missing depending on the order of compilation.
- sbt-hydra smoothly falls-back to compile with vanilla Scala if the
hydra.license
file is not present. - Fixed
FileNotFoundException
when saving the output ofhydraBenchmark
on Windows. - The
hydraBenchmark
reports the files where measurements are stored.
2.1.2 - April 5, 2019¶
- Fixed source generation race-condition in sbt-hydra that could result in "duplicate source" compilation errors.
- Improved heuristic to support installation of sbt-hydra in the global plugins.
- Also use the sources count to set the
HydraTag
compilation's task weight (allows better parallel execution in sbt)
2.1.1 - March 7, 2019¶
- Support for installing sbt-hydra in the global plugins
- Increased sbt-hydra parallel execution factor to use all available cores.
- Check for Hydra updates at startup
- Added hydraStartTrial command to request trial license from inside sbt
- OpenJDK9 support for activating Hydra licenses
- Issue a warning in hydra.log when non-standard phases are detected
- Unbalanced workers warning was sometimes noisy. Now it is reported in hydra.log
- Improved treatment of nested imports that was leading to cyclic reference errors
- Made package objects that inherit from traits more robust
- Fixed an issue where Hydra could hang or take a very long time to invalidate long HList types
- Fixed a spurious cache invalidation issue that could lead to longer compilation times involving class tags
- Fixed a Hydra crash involving partial functions with inferred return type
- Fixed cache invalidation issue with local definitions.
Triplequote Hydra for IDEA (v1.0.1):
- Added license management to the Hydra settings panel
- Allow requesting a trial license from the Hydra settings panel
- Added cache invalidation button to Hydra settings panel
2.1.0 - Didn't happen¶
2.0.0 - December 6, 2018¶
- Fix error reported when certain classes are deleted
- Improve performance when compiling code with dependent types
2.0.0-RC03 - November 30, 2018¶
- Fix assertion failure "The startSource can be called only once per source file"
- Fix issues with spurious cache invalidations, leading to worker restarts
- hydraBenchmark saves complete benchmark results inside .hydra, including Hydra version, number of workers and Scala version
- Location of .hydra is configurable, see sbt plugin user guide
- Fixed a StackOverflowError in certain kinds of code
2.0.0-RC01 - November 22, 2018¶
- Smarter cache between builds, leading to up to 2x speedups compared to the previous version
- Fixed a bug when multiple routes files with the same name were used in Play projects
- Fixed a resolution bug in dashboard client when its dependencies might get replaced by the current project dependencies
- Clearly report failures that are due to a stack overflow or a out of memory error.
- Add a command to invalidate caches
- Report the amount of memory used by sbt on start
1.1.1 - September 3, 2018¶
- Performance improvements in compiling programs written in a pure FP style
1.1.0 - August 21, 2018¶
- Significant performance improvements in Slick-based projects, and generally type-level Scala programs
- New metrics client configuration, see Dashboard architecture
Maven:
- Released scala-maven-plugin 3.2.2-hydra08
that correctly launches the new metrics service.
1.0.3 - August 9, 2018¶
- Fix crash when launching the metrics service in 2.11 projects
1.0.2 - July 17, 2018¶
Important
See upgrade instructions for how to stop the metrics client
- Hardened assertion that sometimes could fail compilation if symbolic links are used for source directories
- Don't fail build if all floating licenses are in use, instead use a single worker.
- Limit metrics pushed to the server to only the slowest 20 source files
- Issue license check warnings at info, so
-Xfatal-warnings
doesn't fail the build - Issue warnings about common performance problems
- Fixed high cpu consumption occurring when the dashboard server is not reachable.
- Capped metrics service logging to 100MB.
- Metrics service is no longer started on build load.
- Metrics service shutdown after 1 hour inactivity (previously, it would never shutdown)
- Metrics client uses exponential backoff if the server does not respond.
1.0.1 - June 12, 2018¶
- Fixed regression in the sbt-hydra plugin that was breaking tasks aggregation of the automatically generated root project (the issue was caused by this sbt bug).
1.0.0 - June 6, 2018¶
- A new "Deck" dashboard that provides a quick glance at how your project is performing.
- Fixed an issue with the order of Hydra compiler arguments in sbt 0.13 when using
-sourcepath
- Fixed an issue where sources were type-checked even when newer classes files were available
- Fixed an issue where warnings about unused variables may crash when no position information was available
Gradle:
- First release of the Gradle Hydra plugin.
0.11.0 - May 30, 2018¶
- New tips for tracking down compile time inefficiencies.
- Renamed system property
hydra.metric.gcThresholdMs
tohydra.metrics.gcThresholdMs
. - Support for scalameta semanticdb.
- Better handling of clashing sources with same package/filename in classpath (relevant for Play projects).
- Better handling of empty package (relevant for Play projects).
- LoC metrics works with scalameta too.
- Various improvements to the charts displayed in the web Dashboard.
Maven:
- Released new version of Maven Hydra that supports the Dashboard: 3.2.2-hydra07.
0.10.0 - May 8th, 2018¶
- Compile time monitoring with a slick web-based dashboard. Go through the Quick start to set it up!
Maven:
- Released new version of Maven Hydra that supports the Dashboard: 3.2.2-hydra06.
0.9.12 - May 1st, 2018¶
- Support for Scala 2.12.6
- Consider a build to be a full build even if the output directory contains some non-class files
- Fixed a binary compatibility with some versions of semanticdb-enabled builds
- Support sources with the same name and package in different source roots
- Better support of the empty package (sometimes used by Play route files)
- Collect new metrics: lines of code (LoC), LoC/second, tree nodes (after parser, after typer) See Metrics
0.9.11 - April 4, 2018¶
Hydra:
- Enforce license checking, see docs
- Increased threshold for reporting the GC error to 5 seconds (it was previously 2 seconds).
- Threshold for GC error is now configurable via the system property
-Dhydra.metric.gcThresholdMs=<milliseconds>
. - Added a Reference page with all configuration options
- License activation can create the .triplequote/ directory if it doesn't exist
- Add the date to log messages in hydra.log
Maven:
- Released new version of Maven Hydra support: 3.2.2-hydra05
- Fixed issue with GC errors not being properly reported when using the Zinc server
0.9.10 - Didn't happen¶
0.9.9 - March 2, 2018¶
Hydra:
- Fixed issue with compilation of package object that could result in an error
not found: type <Foo>
. - Fixed a common cause for
knownDirectSubclasses
compilation error (you should no longer need this workaround). - Monitor GC during compilation and report an error if too much GC is observed (read here for details).
Maven:
- Released a new version of the Maven Hydra support: 3.2.2-hydra04.
- Released Zinc server for Hydra. See Maven guide
0.9.8 - November 9, 2017¶
Maven:
- All files generated by Hydra during compilation are now under
<project-root>/.hydra/maven
.
0.9.7 - November 9, 2017¶
Hydra:
- All Hydra artifacts are now published in a Maven repository
- Fixed XML literal patterns leading to
not found:
type errors - Better support for annotation macros like Simulacrum's
@typeclass
- Fixed a couple of crashes involving incremental compilation
- More robust handling of errors and logging during late phases of compilation
- Fixed an error leading to cyclic reference errors in calls involving default arguments that match symbols already in scope
- All files generated by Hydra during compilation are now under
<project-root>/.hydra/<build-tool>
sbt:
- hydra-bridge is now published in a Maven repository
hydraBenchmark
command works now also with sbt 1
Maven:
- The Maven Hydra plugin is now published in a different repository. Check the Maven user guide for correctly upgrading
- Released a new version of the Maven Hydra support: 3.2.2-hydra02
- Feature parity with the sbt support (minus the
hydraBenchmark
command)
CLI:
- Changed location where the zipped distribution is published (get the new link in the CLI - Download section)
0.9.6 - October 24, 2017¶
- Scala 2.12.4 support
- Correct logging of Scala version
0.9.5 - October 9, 2017¶
- Fixed a problem in the sbt plugin that caused some error messages to not be reported.
- Fixed a regression in handling classpath conflicts between source and class files.
- Compute compilation time metrics only on full builds.
0.9.4 - October 2, 2017¶
- Support for sbt 1.0 (the
hydraBenchmark
command is not yet available on sbt 1.0). - Fixed 'not found' compilation errors when a classfile (on the classpath) and a source file (in the project) had the same name and the same directory path.
- Fixed cast exception occurring when using scala-clippy.
- Fixed wrong warnings
"No classes or objects found ..."
that could be reported if mixed Java and Scala sources were placed under the same source directory. - Stop workers as soon as errors are reported by a worker (fixes occasional crashes).
- Fixed "unsupported Scala version" warning reported when adding sbt-hydra to the global plugins.
- Compilation unit timings are now sorted in decreasing order.
- Support for multiple output directories.
0.9.3 - August 3, 2017¶
- Performance improvements for code using macro annotations, such as Circe, Grafter, MacWire, etc.
- Support Scala 2.12.3
- Fixed a regression causing the auto-balancer to produce unbalanced workloads.
- Update compilation unit timings file only when there are no compilation errors.
0.9.2 - July 20, 2017¶
- Use weighted HydraTag for compilation. This allows easier interoperability with sbt parallel execution. See Parallel execution
- Fixed assertion failure occurring with the "auto" partition strategy.
- Fixed benign NullPointerException occurring when retrieving compilation metrics.
- Fixed printing of milliseconds in the times reported by the
hydraBenchmark
command. - Use relativized path in the unit-timings.csv file.
- Report time in milliseconds instead of nanoseconds in the unit-timings.csv file.
- Warn when a package object is not following the Scala convention.
0.9.1 - June 30, 2017¶
- A new
"auto"
source partition strategy that automatically balances workload based on compilation times of individual source files. This is now the default partition strategy assigned tohydraSourcePartitioner
. See Unbalanced workers. - Incremental compilation uses the compilation times of individual source files to automatically balance workload (this works with any source partition strategy).
- Documentation about tuning your Continuous Integration builds.
- Don't do a clean build after changing the number of workers or source partition strategy.
- Added a
hydraBenchmark
task for measuring performance of Hydra vs the vanilla Scala compiler. See Benchmark. - Hydra log and timings files are now placed inside a
.hydra
folder located in the project's root directory. - Documentation about how to pinpoint compile time inefficiencies.
0.9.0 - June 9, 2017¶
- Significant performance improvements in projects with large classpaths, such as Play projects.
- Fixed execution of publishLocal/publish.
- Tagged compilation task with
HydraTag
for better interaction withconcurrentRestrictions
andparallelExecution
. See Concurrent Restrictions.
0.8.3 - May 19, 2017¶
- Fixed spurious unused variable warnings.
- Fixed spurious warnings on methods marked scala.js.native.
- Fixed support for Scala 2.12.2 (resolves compiler crash).
- Added a Troubleshooting page to the documentation.
- Added documentation about Hydra Memory Requirements.
0.8.2 - May 12, 2017¶
- Generate a separate CSV file recording compilation times for each run. See Timings file.
- Sources in the explicit partition file are now relative to the project's root directory. See Explicit Source Partitioning.
0.8.1 - May 5, 2017¶
- More robust handling of malformed input during initialization, sometimes seen with XML in case patterns.
- Fixed scoping of
hydraSourcePartitioner
setting. See Explicit Source Partitioning. - Explicit partitioning file allows line comments starting with
#
.
0.8.0 - April 28, 2017¶
- Less noisy 'unbalanced workers' message.
- Vastly improved support for the explicit partitioner. See Tuning.
- Added Tuning guide
- Fixed Hydra logging configuration (avoid intercepting application's logging).
- Only issue unbalanced warning when compilation succeeded.
- Fixed message displaying the number of needed workers (it was off by one).
- Fixed performance regression introduced by the flat classpath in 2.11 (via Scala patch
-hydra12
)
0.7.3 - April 20, 2017¶
- Add support for 2.11.11 and 2.12.2.
- Allow to set log level via environemnt variable. Set
hydra.logLevel
to a valid log level. - Bump to use hydra10 and removed loader setting.
- Added Hydra license and third-party licensing information.