diff --git a/.github/workflows/integration.yaml b/.github/workflows/integration.yaml
index 0c7578a1..8b974402 100644
--- a/.github/workflows/integration.yaml
+++ b/.github/workflows/integration.yaml
@@ -12,14 +12,14 @@ jobs:
boot:
- '3.1.12'
- '3.2.12'
- - '3.3.10'
- - '3.3.11-SNAPSHOT'
- - '3.4.5-SNAPSHOT'
+ - '3.3.11'
+ - '3.3.12-SNAPSHOT'
+ - '3.4.6-SNAPSHOT'
- '3.5.0-M3'
- '3.5.0-SNAPSHOT'
jmolecules:
- - '2023.2.1'
- - '2025.0.0-RC2'
+ - '2023.3.1'
+ - '2025.0.0-RC3'
name: Build against Boot ${{ matrix.boot }} / jMolecules ${{ matrix.jmolecules }}
runs-on: ubuntu-latest
diff --git a/pom.xml b/pom.xml
index 89375641..c580d1d0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
org.springframework.modulith
spring-modulith
- 1.3.4
+ 1.3.5
pom
@@ -40,11 +40,11 @@
4.16.1
7.0.0.202409031743-r
1.5.2
- 2023.2.1
+ 2023.2.2
UTF-8
UTF-8
- 3.4.4
- 6.2.5
+ 3.4.5
+ 6.2.6
3.1.1
1.17.6
@@ -131,8 +131,9 @@ limitations under the License.
- spring-modulith-integration-test
+ spring-modulith-benchmarks
spring-modulith-examples
+ spring-modulith-integration-test
@@ -164,6 +165,7 @@ limitations under the License.
prepare-release
+ spring-modulith-benchmarks
spring-modulith-distribution
spring-modulith-examples
spring-modulith-integration-test
@@ -526,6 +528,11 @@ limitations under the License.
maven-shade-plugin
3.6.0
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 3.5.0
+
@@ -639,7 +646,7 @@ limitations under the License.
https://github.com/spring-projects/spring-modulith
scm:git:https://github.com/spring-projects/spring-modulith
scm:git:ssh://git@github.com/spring-projects-experimental/spring-modulith
- 1.3.4
+ 1.3.5
diff --git a/spring-modulith-actuator/pom.xml b/spring-modulith-actuator/pom.xml
index c5a49703..de48e79e 100644
--- a/spring-modulith-actuator/pom.xml
+++ b/spring-modulith-actuator/pom.xml
@@ -4,7 +4,7 @@
org.springframework.modulith
spring-modulith
- 1.3.4
+ 1.3.5
Spring Modulith - Actuator
diff --git a/spring-modulith-api/pom.xml b/spring-modulith-api/pom.xml
index d0c859cc..4bc54788 100644
--- a/spring-modulith-api/pom.xml
+++ b/spring-modulith-api/pom.xml
@@ -4,7 +4,7 @@
org.springframework.modulith
spring-modulith
- 1.3.4
+ 1.3.5
../pom.xml
diff --git a/spring-modulith-apt/pom.xml b/spring-modulith-apt/pom.xml
index 94999838..0bb32026 100644
--- a/spring-modulith-apt/pom.xml
+++ b/spring-modulith-apt/pom.xml
@@ -4,7 +4,7 @@
org.springframework.modulith
spring-modulith
- 1.3.4
+ 1.3.5
Spring Modulith - APT
diff --git a/spring-modulith-benchmarks/pom.xml b/spring-modulith-benchmarks/pom.xml
new file mode 100644
index 00000000..ad67485b
--- /dev/null
+++ b/spring-modulith-benchmarks/pom.xml
@@ -0,0 +1,81 @@
+
+ 4.0.0
+
+
+ org.springframework.modulith
+ spring-modulith
+ 1.3.5
+ ../pom.xml
+
+
+ Spring Modulith - Benchmarks
+ spring-modulith-benchmarks
+
+
+
+ 1.37
+ true
+ org.springframework.modulith.benchmark
+
+
+
+
+
+ org.springframework.modulith
+ spring-modulith-events-core
+ ${project.version}
+ test
+
+
+
+ org.junit.jupiter
+ junit-jupiter
+ test
+
+
+
+ org.openjdk.jmh
+ jmh-generator-annprocess
+ ${jmh.version}
+ provided
+
+
+
+ com.github.mp911de.microbenchmark-runner
+ microbenchmark-runner-junit5
+ 0.4.0.RELEASE
+ test
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+
+ org.projectlombok
+ lombok
+
+
+ org.openjdk.jmh
+ jmh-generator-annprocess
+ ${jmh.version}
+
+
+
+
+
+
+
+
+
+ jitpack.io
+ https://jitpack.io
+
+
+
+
\ No newline at end of file
diff --git a/spring-modulith-benchmarks/src/test/java/org/springframework/modulith/events/core/PublicationsInProgressBenchmarks.java b/spring-modulith-benchmarks/src/test/java/org/springframework/modulith/events/core/PublicationsInProgressBenchmarks.java
new file mode 100644
index 00000000..5ab9fa12
--- /dev/null
+++ b/spring-modulith-benchmarks/src/test/java/org/springframework/modulith/events/core/PublicationsInProgressBenchmarks.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright 2025 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.springframework.modulith.events.core;
+
+import jmh.mbr.junit5.Microbenchmark;
+import lombok.Value;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Random;
+import java.util.UUID;
+
+import org.openjdk.jmh.annotations.Benchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.infra.Blackhole;
+import org.springframework.modulith.events.core.DefaultEventPublicationRegistry.PublicationsInProgress;
+
+/**
+ * @author Oliver Drotbohm
+ */
+@Warmup(iterations = 10, time = 2)
+@Measurement(iterations = 10, time = 2)
+@Microbenchmark
+public class PublicationsInProgressBenchmarks {
+
+ @State(Scope.Benchmark)
+ public static class Fixture implements Iterable {
+
+ private static final int NUMBER = 100;
+
+ private final List