Renaissance 0.14.0
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).
- Use common JNA version (5.10.0) to support more architectures and fix architecture mapping on SAP JVM, resolving issues with
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.
- Include
- 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)