Skip to content

Renaissance 0.15.0

Latest
Compare
Choose a tag to compare
@lbulej lbulej released this 23 Oct 08:42
· 64 commits to master since this release

This release is primarily aimed at improving compatibility with Java 21 (LTS) and Java 22 (EA), but it also marks the departure from Java 8 by requiring at least Java 11 to build the suite and to run the benchmarks. Several benchmarks now use Scala 3 and a memory leak was plugged in one of the benchmarks.

To improve compatibility with Java 21, the Apache Spark framework used by the apache-spark benchmarks was updated to version 3.5.0 and the Neo4j framework used by the neo4j-analytics benchmark was updated to version 5.12.0 (the benchmark now requires Java 17 to run). The database libraries used in the db-shootout benchmark were updated to more recent versions, which makes the benchmark compatible with Java 18 (while still far from Java 21, it is an improvement over Java 11, where the benchmark was stuck for some time).

The Scala 2.12 and 2.13 versions used by various benchmarks were updated to versions 2.12.18 and 2.13.12, respectively. The akka-uct, dotty, and scala-kmeans are now using Scala 3.3.1, and the neo4j-analytics benchmark now uses Scala 2.13. This leaves only the philosophers, reactors and stala-stm-bench7 benchmarks in the Scala 2.12 camp.

Even though the source code of most benchmarks remains unchanged (apart from bug fixes and changes due to library APIs), the actual code executed at runtime may be affected by the dependency updates.

Other changes include a fix for a memory leak in the reactors benchmark, and two fixes that improve compatibility with JMH.

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

Dependency updates

  • Update apache-spark benchmarks to use Spark 3.5.0 (#399) and Hadoop 3.3.6 (#425)
    • Makes the apache-spark benchmarks compatible with Java 21 (up from Java 20)
    • The Hadoop update improves compatibility with the (open) IBM Semeru OpenJ9-based JVM builds
  • Update rx-scrabble benchmark to use RxJava 3.1.8 and migrate to rxjava3 API (#414)
  • Update db-shootout benchmark to use H2 MVStore version 2.2.224, MapDB version 3.0.10, and Chronicle Map version 3.22.9 (#419, #412)
    • Makes the benchmark compatible with Java 18 (up from Java 11)
  • Update dotty benchmark to use scala3-compiler 3.3.1 and migrate to Scala 3.3 (#407)
  • Update akka-uct benchmark to use Akka Actors 2.6.32 and migrate to Scala 3.3 (#406)
  • Migrate scala-stdlib to Scala 3.3 (#405)
  • Update twitter-finagle benchmarks to use Finagle 22.12.0 (#404)
  • Update neo4j-analytics benchmark to use Neo4j 5.12.0 and migrate to Scala 2.13 (#419, #422)
    • Makes the benchmark compatible with Java 21 (up from Java 15, but requires at least Java 17)
  • Update Scala 2 benchmarks to use Scala 2.12.8 and 2.13.12 (#411)
  • Update various shared dependencies (#409, #419, #423)
    • Most notably JNA 5.13.0, Netty 4.1.99, Guava 32.1.2-jre, ASM 9.6, Eclipse Collections 11.1.0, Jackson 2.15.2, and Jersey 2.40

Workload changes/fixes

  • Prevent memory leaks in reactors benchmark (#389)
  • Ensure that forked tasks get executed by threads from the fork-join pool in fj-kmeans (#420)
  • Ensure that JMH invokes benchmark methods with correct context class loader (#421)

Build system and CI changes

  • Target Java 11 as the default minimal JVM for benchmarks (#427)
  • Update SBT to version 1.9.6 and JMH to version 1.37 (#398)
  • Streamline CI to focus on Java LTS versions and the latest JDK only (#394, #426)