Skip to content

CHANGELOG

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.