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

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 of hydraBenchmark 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:

0.11.0 - May 30, 2018

  • New tips for tracking down compile time inefficiencies.
  • Renamed system property hydra.metric.gcThresholdMs to hydra.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 to hydraSourcePartitioner. 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 with concurrentRestrictions and parallelExecution. 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.