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
- Makes the
- 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)