Skip to content

Renaissance 0.14.0

Compare
Choose a tag to compare
@lbulej lbulej released this 31 Jan 12:30
· 290 commits to master since this release

This release contains internal cleanups and benchmark dependency updates to improve compatibility and to support execution of benchmarks using a single classloader, which makes the runtime less convoluted when using the benchmark in ahead-of-time compilation scenarios.

The source code of the benchmarks remains unchanged, but several dependencies were updated, potentially affecting the code executed by the benchmarks at runtime. The most significant change is the update of Apache Spark to version 3.2.0 and the associated migration of the apache-spark benchmarks from Scala 2.12 to Scala 2.13.

See also the release announcement.

The actual changes are spread roughly over 15 pull requests, with the most important categorized below.

Workload changes

  • Update apache-spark benchmarks to use Spark 3.2.0 and Scala 2.13 (#327)
  • Update Scala 2.13 benchmarks to use Scala 2.13.8 (#344)
  • Update akka-uct benchmark to use Akka Actors 2.6.18 (#344)
  • Update twitter-finagle benchmarks to use Finagle 21.12.0 (#344)
  • Update neo4j-analytics benchmark to use Neo4j 4.4.2 (#344)
  • Update future-genetic benchmark to use Jenetics 5.2.0 (#342)
  • Update rx-scrabble benchmark to use RX Java 1.3.8 (#342)
  • Update dotty benchmark to use Scala3 compiler 3.0.2 (#342)
  • Update and commonize various dependencies (#342, #344)
    • Use common JNA version (5.10.0) to support more architectures and fix architecture mapping on SAP JVM, resolving issues with db-shootout on non-Intel architectures.
    • Use common Netty version (4.1.72) to avoid bundling several different versions and avoid component version mismatch in standalone (single classloader) benchmark execution.
    • Use common versions of several other components (see PR for details).

Workload fixes

  • Expand 'Add-Opens' to prevent use of 'NilJvm' interface in Finagle (#330)

Harness changes

  • Add --benchmark-metadata CLI option to override the location benchmark metadata (#341)
  • Add --standalone CLI option to disable module loading (#341)
  • Add Renaissance-Use-Modules manifest attribute to disable module loading (#341)
  • Add plugin for collecting basic memory information (#335)
  • Tolerate missing implementation of JMX system info methods (#302)

Build system and CI changes

  • Update SBT to version 1.6.1 and JMH to version 1.34 (#344)
  • Generate metadata-only jars that allow running benchmarks with a single class loader (#341)
    • Include renaissance-harness package for both Scala 2.12 and Scala 2.13.
  • Refactor SBT project definition to speed up compilation and packaging (#336)
    • Compile benchmarks in parallel, avoid bundling duplicated jars, avoid extra filesystem copies.
    • Use JMH directly when generating benchmark JMH wrappers.
  • Split testing into multiple workflows, keeping the important platforms in the main workflow (#325)