Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ The following is the complete list of benchmarks, separated into groups.

- `db-shootout` - Executes a shootout test using several in-memory databases.
\
Default repetitions: 16; APACHE2 license, MIT distribution; Supported JVM: 11 - 18
Default repetitions: 16; APACHE2 license, MIT distribution; Supported JVM: 11 - 22

- `neo4j-analytics` - Executes Neo4j graph queries against a movie database.
\
Expand Down
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
org.slf4j.simpleLogger.defaultLogLevel=warn
# Silence warnings related to CPU cores with different number of hardware threads.
org.slf4j.simpleLogger.log.net.openhft.affinity.impl.VanillaCpuLayout=error
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import org.renaissance.License
@Group("database")
@Summary("Executes a shootout test using several in-memory databases.")
@Licenses(Array(License.APACHE2))
@SupportsJvm("18")
@SupportsJvm("22") // Works on Java 24 in standalone mode.
@Repetitions(16)
@Parameter(name = "rw_entry_count", defaultValue = "500000")
@Configuration(name = "test", settings = Array("rw_entry_count = 10000"))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ final class Dotty extends Benchmark {
*
* find . -type f -name '*.tasty'|egrep -v '(Classfile|ByteCode)\.tasty' | LC_ALL=C sort|xargs cat|md5sum
*/
private val expectedTastyHash: String = "cda4bf9f729d30c97ec7b793c54039d1"
private val expectedTastyHash: String = "5c33664eacffb74f853dec92efd9d503"

private val excludedTastyFiles = Seq("Classfile.tasty", "ByteCode.tasty")

Expand Down
124 changes: 89 additions & 35 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,9 @@ ThisBuild / git.useGitDescribe := true
// Compilation settings
//
val javaRelease = "11"
val scalaVersion212 = "2.12.18"
val scalaVersion213 = "2.13.12"
val scalaVersion3 = "3.3.1"
val scalaVersion212 = "2.12.20"
val scalaVersion213 = "2.13.15"
val scalaVersion3 = "3.3.4"

// Explicitly target a specific JDK release.
ThisBuild / javacOptions ++= Seq("--release", javaRelease)
Expand Down Expand Up @@ -138,7 +138,10 @@ val generateManifestAttributesTask = Def.task {
"java.base/sun.nio.ch",
"java.management/sun.management",
"java.management/sun.management.counter",
"java.management/sun.management.counter.perf"
"java.management/sun.management.counter.perf",
// Required by Chronicle Map.
"java.base/jdk.internal.ref",
"jdk.compiler/com.sun.tools.javac.file"
)

Package.ManifestAttributes(
Expand All @@ -147,30 +150,40 @@ val generateManifestAttributesTask = Def.task {
("Git-Head-Commit", git.gitHeadCommit.value.getOrElse("unknown")),
("Git-Head-Commit-Date", git.gitHeadCommitDate.value.getOrElse("unknown")),
("Git-Uncommitted-Changes", git.gitUncommittedChanges.value.toString),
("Add-Opens", addOpensPackages.mkString(" "))
("Add-Opens", addOpensPackages.mkString(" ")),
// Required by "org.lz4" % "lz4-java".
("Enable-Native-Access", "ALL-UNNAMED")
)
}

//
// Subprojects
//

val asmVersion = "9.6"
val commonsCompressVersion = "1.24.0"
val commonsIoVersion = "2.14.0"
val commonsLang3Version = "3.13.0"
val arrowVersion = "18.0.0"
// ASM 9.7+ requires Java 11.
val asmVersion = "9.7.1"
// Caffeine 3.0+ requires Java 11.
val caffeineVersion = "3.1.8"
val commonsCompressVersion = "1.27.1"
val commonsIoVersion = "2.17.0"
val commonsLang3Version = "3.17.0"
val commonsMath3Version = "3.6.1"
val commonsTextVersion = "1.10.0"
val commonsTextVersion = "1.12.0"
val eclipseCollectionsVersion = "11.1.0"
val guavaVersion = "32.1.2-jre"
val jacksonVersion = "2.15.2"
val jerseyVersion = "2.40"
val jnaVersion = "5.13.0"
val nettyVersion = "4.1.99.Final"
val scalaCollectionCompatVersion = "2.11.0"
val guavaVersion = "33.3.1-jre"
val jacksonVersion = "2.18.1"
val jakartaXmlBindVersion = "2.3.3"
val jerseyVersion = "2.45"
val jnaVersion = "5.15.0"
val nettyTomcatNativeVersion = "2.0.69.Final"
val nettyVersion = "4.1.114.Final"
val parquetVersion = "1.14.3"
val scalaCollectionCompatVersion = "2.12.0"
val scalaParallelCollectionsVersion = "1.0.4"
val slf4jVersion = "2.0.9"
val zstdJniVersion = "1.5.5-6"
val scalaParserCombinatorsVersion = "2.4.0"
val slf4jVersion = "2.0.16"
val zstdJniVersion = "1.5.6-7"

lazy val renaissanceCore = (project in file("renaissance-core"))
.settings(
Expand Down Expand Up @@ -243,6 +256,10 @@ lazy val actorsAkkaBenchmarks = (project in file("benchmarks/actors-akka"))
// akka-actor 2.6.17+ supports Scala 2.12, 2.13, and 3 under Apache 2.0 license
// akka-actor 2.7.0+ supports Scala 2.12, 2.13, and 3 under Business Source 1.1 license
"com.typesafe.akka" %% "akka-actor" % "2.6.21"
),
excludeDependencies ++= Seq(
// Drop dependencies that are not needed for running on Java 11+.
ExclusionRule("org.scala-lang.modules", "scala-java8-compat_3")
)
)
.dependsOn(renaissanceCore % "provided")
Expand All @@ -258,7 +275,7 @@ lazy val actorsReactorsBenchmarks = (project in file("benchmarks/actors-reactors
ProjectRef(uri("benchmarks/actors-reactors/reactors"), "reactorsCoreJVM")
)

val sparkVersion = "3.5.0"
val sparkVersion = "3.5.3"

lazy val apacheSparkBenchmarks = (project in file("benchmarks/apache-spark"))
.settings(
Expand All @@ -283,6 +300,11 @@ lazy val apacheSparkBenchmarks = (project in file("benchmarks/apache-spark"))
// Force common (newer) version of Jackson packages.
"com.fasterxml.jackson.datatype" % "jackson-datatype-jsr310" % jacksonVersion,
"com.fasterxml.jackson.module" %% "jackson-module-scala" % jacksonVersion,
// Force common (newer) version of Arrow packages.
"org.apache.arrow" % "arrow-vector" % arrowVersion,
"org.apache.arrow" % "arrow-memory-netty" % arrowVersion,
// Force common (newer) version of Parquet packages.
"org.apache.parquet" % "parquet-hadoop" % parquetVersion,
// Force common (newer) version of Jersey packages.
"org.glassfish.jersey.containers" % "jersey-container-servlet" % jerseyVersion,
"org.glassfish.jersey.core" % "jersey-server" % jerseyVersion,
Expand All @@ -291,12 +313,14 @@ lazy val apacheSparkBenchmarks = (project in file("benchmarks/apache-spark"))
"com.github.luben" % "zstd-jni" % zstdJniVersion,
"com.google.guava" % "guava" % guavaVersion,
"commons-io" % "commons-io" % commonsIoVersion,
"jakarta.xml.bind" % "jakarta.xml.bind-api" % jakartaXmlBindVersion,
"org.apache.commons" % "commons-compress" % commonsCompressVersion,
"org.apache.commons" % "commons-lang3" % commonsLang3Version,
"org.apache.commons" % "commons-math3" % commonsMath3Version,
"org.apache.commons" % "commons-text" % commonsTextVersion,
"org.scala-lang.modules" %% "scala-collection-compat" % scalaCollectionCompatVersion,
"org.scala-lang.modules" %% "scala-parallel-collections" % scalaParallelCollectionsVersion,
"org.scala-lang.modules" %% "scala-parser-combinators" % scalaParserCombinatorsVersion,
"org.slf4j" % "slf4j-api" % slf4jVersion,
"org.slf4j" % "jcl-over-slf4j" % slf4jVersion,
"org.slf4j" % "jul-to-slf4j" % slf4jVersion
Expand All @@ -309,17 +333,24 @@ lazy val databaseBenchmarks = (project in file("benchmarks/database"))
name := "database",
commonSettingsScala3,
libraryDependencies ++= Seq(
"com.github.jnr" % "jnr-posix" % "3.1.18",
"com.github.jnr" % "jnr-posix" % "3.1.20",
"org.apache.commons" % "commons-math3" % commonsMath3Version,
"org.agrona" % "agrona" % "1.19.2",
// Agrona 1.23+ requires Java 17.
"org.agrona" % "agrona" % "1.22.0",
// Database libraries.
"org.mapdb" % "mapdb" % "3.0.10",
"com.h2database" % "h2-mvstore" % "2.2.224",
"net.openhft" % "chronicle-map" % "3.22.9",
"org.mapdb" % "mapdb" % "3.1.0",
"com.h2database" % "h2-mvstore" % "2.3.232",
// Chronicle Map 3.25+ supports Java 21.
"net.openhft" % "chronicle-map" % "3.26ea4",
// Add simple binding to silence SLF4J warnings.
"org.slf4j" % "slf4j-simple" % slf4jVersion
"org.slf4j" % "slf4j-simple" % slf4jVersion,
// Replacement for excluded "net.jpountz.lz4" % "lz4".
"org.lz4" % "lz4-java" % "1.8.0"
),
dependencyOverrides ++= Seq(
// Force newer version of Chronicle modules.
"net.openhft" % "chronicle-wire" % "2.26ea10",
"net.openhft" % "posix" % "2.26ea3",
// Force newer JNA to support more platforms/architectures.
"net.java.dev.jna" % "jna-platform" % jnaVersion,
// Force common (newer) version of ASM packages.
Expand All @@ -330,6 +361,10 @@ lazy val databaseBenchmarks = (project in file("benchmarks/database"))
// Force common versions of other dependencies.
"com.google.guava" % "guava" % guavaVersion,
"org.slf4j" % "slf4j-api" % slf4jVersion
),
excludeDependencies ++= Seq(
// Replaced by the "org.lz4" % "lz4-java".
ExclusionRule("net.jpountz.lz4", "lz4")
)
)
.dependsOn(renaissanceCore % "provided")
Expand All @@ -339,10 +374,10 @@ lazy val jdkConcurrentBenchmarks = (project in file("benchmarks/jdk-concurrent")
name := "jdk-concurrent",
commonSettingsScala3,
libraryDependencies ++= Seq(
// Jenetics 5.2.0 is the last to support Java 8.
// Jenetics 6.0.0 requires Java 11 and benchmark update.
// Jenetics 6.3.0 is the last to support Java 11.
// Jenetics 7.0.0 requires Java 17 and benchmark update.
"io.jenetics" % "jenetics" % "5.2.0"
// Jenetics 8.0.0 requires Java 21 and benchmark update.
"io.jenetics" % "jenetics" % "6.3.0"
)
)
.dependsOn(renaissanceCore % "provided")
Expand All @@ -354,16 +389,18 @@ lazy val jdkStreamsBenchmarks = (project in file("benchmarks/jdk-streams"))
)
.dependsOn(renaissanceCore % "provided")

val grpcVersion = "1.68.1"

lazy val neo4jBenchmarks = (project in file("benchmarks/neo4j"))
.settings(
name := "neo4j",
commonSettingsScala213,
libraryDependencies ++= Seq(
// neo4j 4.4 supports Scala 2.12 and requires JDK11.
// neo4j 5.x supports Scala 2.13 and requires JDK17.
"org.neo4j" % "neo4j" % "5.12.0",
"org.neo4j" % "neo4j" % "5.25.1",
// play-json 2.10.x requires SBT running on JDK11 to compile.
"com.typesafe.play" %% "play-json" % "2.10.1"
"com.typesafe.play" %% "play-json" % "2.10.6"
),
excludeDependencies ++= Seq(
// Drop dependencies that are not really used by the benchmark.
Expand All @@ -372,23 +409,36 @@ lazy val neo4jBenchmarks = (project in file("benchmarks/neo4j"))
dependencyOverrides ++= Seq(
// Force common (newer) version of Jackson packages.
"com.fasterxml.jackson.datatype" % "jackson-datatype-jsr310" % jacksonVersion,
"com.fasterxml.jackson.jaxrs" % "jackson-jaxrs-json-provider" % jacksonVersion,
// Force newer JNA to support more platforms/architectures.
"net.java.dev.jna" % "jna" % jnaVersion,
// Force newer version of gRPC packages.
"io.grpc" % "grpc-netty" % grpcVersion,
"io.grpc" % "grpc-protobuf" % grpcVersion,
"io.grpc" % "grpc-stub" % grpcVersion,
// Force common (newer) version of Netty packages.
"io.netty" % "netty-codec-http" % nettyVersion,
"io.netty" % "netty-codec-http2" % nettyVersion,
"io.netty" % "netty-handler-proxy" % nettyVersion,
"io.netty" % "netty-transport-native-epoll" % nettyVersion,
"io.netty" % "netty-transport-native-kqueue" % nettyVersion,
"io.netty" % "netty-tcnative-classes" % nettyTomcatNativeVersion,
// Force common (newer) version of Eclipse collection packages.
"org.eclipse.collections" % "eclipse-collections" % eclipseCollectionsVersion,
// Force common (newer) version of Arrow packages.
"org.apache.arrow" % "flight-core" % arrowVersion,
// Force common (newer) version of Parquet packages.
"org.apache.parquet" % "parquet-hadoop" % parquetVersion,
// Force common (newer) version of Jersey packages.
"org.glassfish.jersey.containers" % "jersey-container-servlet" % jerseyVersion,
"org.glassfish.jersey.core" % "jersey-server" % jerseyVersion,
"org.glassfish.jersey.inject" % "jersey-hk2" % jerseyVersion,
// Force common (newer) version of ASM packages.
"org.ow2.asm" % "asm-util" % asmVersion,
// Force common versions of other dependencies.
"com.github.ben-manes.caffeine" % "caffeine" % caffeineVersion,
"com.github.luben" % "zstd-jni" % zstdJniVersion,
"commons-io" % "commons-io" % commonsIoVersion,
"jakarta.xml.bind" % "jakarta.xml.bind-api" % jakartaXmlBindVersion,
"org.apache.commons" % "commons-lang3" % commonsLang3Version,
"org.apache.commons" % "commons-compress" % commonsCompressVersion,
"org.apache.commons" % "commons-text" % commonsTextVersion,
Expand All @@ -402,7 +452,7 @@ lazy val rxBenchmarks = (project in file("benchmarks/rx"))
name := "rx",
commonSettingsScala3,
libraryDependencies ++= Seq(
"io.reactivex.rxjava3" % "rxjava" % "3.1.8"
"io.reactivex.rxjava3" % "rxjava" % "3.1.9"
)
)
.dependsOn(renaissanceCore % "provided")
Expand All @@ -415,12 +465,13 @@ lazy val scalaDottyBenchmarks = (project in file("benchmarks/scala-dotty"))
// Version 3.1.2 was the last to compile with Scala 2.13.11. Version 3.1.3-RC2
// broke compilation due to "Unsupported Scala 3 union in parameter value".
// Compiling with Scala 3.1.0+ avoids compatibility issues.
"org.scala-lang" % "scala3-compiler_3" % "3.3.1",
"org.scala-lang" % "scala3-compiler_3" % "3.3.4",
// The following is required to compile the workload sources. Keep it last!
"org.scala-lang" % "scala-compiler" % scalaVersion213 % Runtime
),
excludeDependencies ++= Seq(
// Drop dependencies that are not really used by the benchmark.
ExclusionRule("net.java.dev.jna", "jna"),
ExclusionRule("org.jline", "jline"),
ExclusionRule("org.jline", "jline-reader"),
ExclusionRule("org.jline", "jline-terminal"),
Expand Down Expand Up @@ -465,7 +516,7 @@ lazy val scalaStmBenchmarks = (project in file("benchmarks/scala-stm"))
RootProject(uri("benchmarks/scala-stm/stmbench7"))
)

val finagleVersion = "22.12.0"
val finagleVersion = "24.2.0"

lazy val twitterFinagleBenchmarks = (project in file("benchmarks/twitter-finagle"))
.settings(
Expand All @@ -488,11 +539,14 @@ lazy val twitterFinagleBenchmarks = (project in file("benchmarks/twitter-finagle
"io.netty" % "netty-handler-proxy" % nettyVersion,
"io.netty" % "netty-resolver-dns" % nettyVersion,
"io.netty" % "netty-transport-native-epoll" % nettyVersion,
"io.netty" % "netty-tcnative-boringssl-static" % nettyTomcatNativeVersion,
// Force common (newer) version of Jackson packages.
"com.fasterxml.jackson.module" %% "jackson-module-scala" % jacksonVersion,
// Force common versions of other dependencies.
"com.github.ben-manes.caffeine" % "caffeine" % caffeineVersion,
"com.github.luben" % "zstd-jni" % zstdJniVersion,
"org.scala-lang.modules" %% "scala-collection-compat" % scalaCollectionCompatVersion
"org.scala-lang.modules" %% "scala-collection-compat" % scalaCollectionCompatVersion,
"org.scala-lang.modules" %% "scala-parser-combinators" % scalaParserCombinatorsVersion
)
)
.dependsOn(renaissanceCore % "provided")
Expand Down
2 changes: 2 additions & 0 deletions tools/ci/common.sh
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,9 @@ get_jvm_workaround_args() {
echo "--add-opens=java.base/java.lang.reflect=ALL-UNNAMED"
echo "--add-opens=java.base/java.util=ALL-UNNAMED"
echo "--add-opens=java.base/java.nio=ALL-UNNAMED"
echo "--add-opens=java.base/jdk.internal.ref=ALL-UNNAMED"
echo "--add-opens=java.base/sun.nio.ch=ALL-UNNAMED"
echo "--add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED"
;;
*)
;;
Expand Down