From 97c72f1c837ad7429d6538f484af747fff42c26d Mon Sep 17 00:00:00 2001 From: alon gouldman Date: Sun, 19 Apr 2026 16:24:04 +0300 Subject: [PATCH 1/5] intern version matcher --- sls-versions/build.gradle | 2 +- .../java/com/palantir/sls/versions/SlsVersionMatcher.java | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/sls-versions/build.gradle b/sls-versions/build.gradle index 7203498b..ae24b3b9 100644 --- a/sls-versions/build.gradle +++ b/sls-versions/build.gradle @@ -6,6 +6,7 @@ dependencies { api 'com.fasterxml.jackson.core:jackson-annotations' api 'com.palantir.safe-logging:preconditions' api 'com.palantir.safe-logging:safe-logging' + implementation 'com.google.guava:guava' implementation 'com.palantir.safe-logging:logger' annotationProcessor 'org.immutables:value' @@ -15,7 +16,6 @@ dependencies { testImplementation 'com.fasterxml.jackson.core:jackson-databind' testImplementation 'org.assertj:assertj-core' testImplementation 'org.junit.jupiter:junit-jupiter' - testImplementation 'com.google.guava:guava' testImplementation 'net.jqwik:jqwik-api' testRuntimeOnly 'net.jqwik:jqwik' diff --git a/sls-versions/src/main/java/com/palantir/sls/versions/SlsVersionMatcher.java b/sls-versions/src/main/java/com/palantir/sls/versions/SlsVersionMatcher.java index bef24950..7e72ed72 100644 --- a/sls-versions/src/main/java/com/palantir/sls/versions/SlsVersionMatcher.java +++ b/sls-versions/src/main/java/com/palantir/sls/versions/SlsVersionMatcher.java @@ -21,6 +21,8 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; +import com.google.common.collect.Interner; +import com.google.common.collect.Interners; import com.palantir.logsafe.SafeArg; import com.palantir.logsafe.UnsafeArg; import com.palantir.logsafe.logger.SafeLogger; @@ -48,6 +50,8 @@ public abstract class SlsVersionMatcher { .thenComparing(SlsVersionMatcher::getMinorVersionNumber, EMPTY_IS_GREATER) .thenComparing(SlsVersionMatcher::getPatchVersionNumber, EMPTY_IS_GREATER); + private static final Interner interner = Interners.newWeakInterner(); + @Value.Auxiliary @Value.Parameter public abstract String getValue(); @@ -96,7 +100,7 @@ static Optional maybeCreate( SafeArg.of("matcher", maybeMatcher)); return Optional.empty(); } - return Optional.of(maybeMatcher); + return Optional.of(interner.intern(maybeMatcher)); } /** From cb067c40dd144ecaa8fa07f7f3b1de0997dbbf9f Mon Sep 17 00:00:00 2001 From: alon gouldman Date: Sun, 19 Apr 2026 16:28:01 +0300 Subject: [PATCH 2/5] intern --- versions.lock | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/versions.lock b/versions.lock index 4d6beb65..153640d9 100644 --- a/versions.lock +++ b/versions.lock @@ -6,6 +6,14 @@ com.google.code.findbugs:jsr305:3.0.2 (1 constraints: 0705fc35) com.google.errorprone:error_prone_annotations:2.47.0 (5 constraints: e148f59d) +com.google.guava:failureaccess:1.0.3 (1 constraints: 160ae3b4) + +com.google.guava:guava:33.6.0-jre (1 constraints: ac068753) + +com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava (1 constraints: bd17c918) + +com.google.j2objc:j2objc-annotations:3.1 (1 constraints: b809f1a0) + com.palantir.safe-logging:logger:3.14.0 (1 constraints: 3a05413b) com.palantir.safe-logging:logger-slf4j:3.14.0 (1 constraints: 330e9350) @@ -22,6 +30,8 @@ org.immutables:value:2.12.1 (1 constraints: 3805363b) org.jetbrains:annotations:26.1.0 (1 constraints: 351170d1) +org.jspecify:jspecify:1.0.0 (7 constraints: 5370d26f) + org.slf4j:slf4j-api:1.7.36 (2 constraints: 2321cfd3) @@ -32,14 +42,6 @@ com.fasterxml.jackson.core:jackson-core:2.21.1 (1 constraints: 86123421) com.fasterxml.jackson.core:jackson-databind:2.21.1 (1 constraints: 3805373b) -com.google.guava:failureaccess:1.0.3 (1 constraints: 160ae3b4) - -com.google.guava:guava:33.6.0-jre (1 constraints: ac068753) - -com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava (1 constraints: bd17c918) - -com.google.j2objc:j2objc-annotations:3.1 (1 constraints: b809f1a0) - net.bytebuddy:byte-buddy:1.18.3 (1 constraints: 530b55df) net.jqwik:jqwik:1.3.7 (1 constraints: 0d050036) @@ -62,8 +64,6 @@ org.apiguardian:apiguardian-api:1.1.2 (9 constraints: 1981f01e) org.assertj:assertj-core:3.27.7 (1 constraints: 4505553b) -org.jspecify:jspecify:1.0.0 (7 constraints: 5370d26f) - org.junit.jupiter:junit-jupiter:6.0.3 (1 constraints: 4a070d70) org.junit.jupiter:junit-jupiter-api:6.0.3 (3 constraints: 642ff3d9) From 528345769f91e901d9eaec26d3c6a771232969e4 Mon Sep 17 00:00:00 2001 From: alon gouldman Date: Thu, 23 Apr 2026 11:39:34 +0300 Subject: [PATCH 3/5] pr comment --- sls-versions/build.gradle | 2 +- .../sls/versions/ImmutablesStyle.java | 1 + .../sls/versions/SlsVersionMatcher.java | 8 ++------ versions.lock | 20 +++++++++---------- 4 files changed, 14 insertions(+), 17 deletions(-) diff --git a/sls-versions/build.gradle b/sls-versions/build.gradle index ae24b3b9..7203498b 100644 --- a/sls-versions/build.gradle +++ b/sls-versions/build.gradle @@ -6,7 +6,6 @@ dependencies { api 'com.fasterxml.jackson.core:jackson-annotations' api 'com.palantir.safe-logging:preconditions' api 'com.palantir.safe-logging:safe-logging' - implementation 'com.google.guava:guava' implementation 'com.palantir.safe-logging:logger' annotationProcessor 'org.immutables:value' @@ -16,6 +15,7 @@ dependencies { testImplementation 'com.fasterxml.jackson.core:jackson-databind' testImplementation 'org.assertj:assertj-core' testImplementation 'org.junit.jupiter:junit-jupiter' + testImplementation 'com.google.guava:guava' testImplementation 'net.jqwik:jqwik-api' testRuntimeOnly 'net.jqwik:jqwik' diff --git a/sls-versions/src/main/java/com/palantir/sls/versions/ImmutablesStyle.java b/sls-versions/src/main/java/com/palantir/sls/versions/ImmutablesStyle.java index e0fc16a1..af80bd6a 100644 --- a/sls-versions/src/main/java/com/palantir/sls/versions/ImmutablesStyle.java +++ b/sls-versions/src/main/java/com/palantir/sls/versions/ImmutablesStyle.java @@ -28,5 +28,6 @@ visibility = Value.Style.ImplementationVisibility.PACKAGE, overshadowImplementation = true, jdkOnly = true, + weakInterning = true, get = {"get*", "is*"}) public @interface ImmutablesStyle {} diff --git a/sls-versions/src/main/java/com/palantir/sls/versions/SlsVersionMatcher.java b/sls-versions/src/main/java/com/palantir/sls/versions/SlsVersionMatcher.java index 7e72ed72..847603ad 100644 --- a/sls-versions/src/main/java/com/palantir/sls/versions/SlsVersionMatcher.java +++ b/sls-versions/src/main/java/com/palantir/sls/versions/SlsVersionMatcher.java @@ -21,8 +21,6 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; -import com.google.common.collect.Interner; -import com.google.common.collect.Interners; import com.palantir.logsafe.SafeArg; import com.palantir.logsafe.UnsafeArg; import com.palantir.logsafe.logger.SafeLogger; @@ -36,7 +34,7 @@ * An SLS version matcher as defined by the [SLS * spec](https://github.com/palantir/sls-version-java#sls-product-version-specification). */ -@Value.Immutable +@Value.Immutable(intern = true) @ImmutablesStyle public abstract class SlsVersionMatcher { @@ -50,8 +48,6 @@ public abstract class SlsVersionMatcher { .thenComparing(SlsVersionMatcher::getMinorVersionNumber, EMPTY_IS_GREATER) .thenComparing(SlsVersionMatcher::getPatchVersionNumber, EMPTY_IS_GREATER); - private static final Interner interner = Interners.newWeakInterner(); - @Value.Auxiliary @Value.Parameter public abstract String getValue(); @@ -100,7 +96,7 @@ static Optional maybeCreate( SafeArg.of("matcher", maybeMatcher)); return Optional.empty(); } - return Optional.of(interner.intern(maybeMatcher)); + return Optional.of(maybeMatcher); } /** diff --git a/versions.lock b/versions.lock index 153640d9..4d6beb65 100644 --- a/versions.lock +++ b/versions.lock @@ -6,14 +6,6 @@ com.google.code.findbugs:jsr305:3.0.2 (1 constraints: 0705fc35) com.google.errorprone:error_prone_annotations:2.47.0 (5 constraints: e148f59d) -com.google.guava:failureaccess:1.0.3 (1 constraints: 160ae3b4) - -com.google.guava:guava:33.6.0-jre (1 constraints: ac068753) - -com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava (1 constraints: bd17c918) - -com.google.j2objc:j2objc-annotations:3.1 (1 constraints: b809f1a0) - com.palantir.safe-logging:logger:3.14.0 (1 constraints: 3a05413b) com.palantir.safe-logging:logger-slf4j:3.14.0 (1 constraints: 330e9350) @@ -30,8 +22,6 @@ org.immutables:value:2.12.1 (1 constraints: 3805363b) org.jetbrains:annotations:26.1.0 (1 constraints: 351170d1) -org.jspecify:jspecify:1.0.0 (7 constraints: 5370d26f) - org.slf4j:slf4j-api:1.7.36 (2 constraints: 2321cfd3) @@ -42,6 +32,14 @@ com.fasterxml.jackson.core:jackson-core:2.21.1 (1 constraints: 86123421) com.fasterxml.jackson.core:jackson-databind:2.21.1 (1 constraints: 3805373b) +com.google.guava:failureaccess:1.0.3 (1 constraints: 160ae3b4) + +com.google.guava:guava:33.6.0-jre (1 constraints: ac068753) + +com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava (1 constraints: bd17c918) + +com.google.j2objc:j2objc-annotations:3.1 (1 constraints: b809f1a0) + net.bytebuddy:byte-buddy:1.18.3 (1 constraints: 530b55df) net.jqwik:jqwik:1.3.7 (1 constraints: 0d050036) @@ -64,6 +62,8 @@ org.apiguardian:apiguardian-api:1.1.2 (9 constraints: 1981f01e) org.assertj:assertj-core:3.27.7 (1 constraints: 4505553b) +org.jspecify:jspecify:1.0.0 (7 constraints: 5370d26f) + org.junit.jupiter:junit-jupiter:6.0.3 (1 constraints: 4a070d70) org.junit.jupiter:junit-jupiter-api:6.0.3 (3 constraints: 642ff3d9) From 69ad7c39ada313462ca85f5ecbd562c014b95454 Mon Sep 17 00:00:00 2001 From: alon gouldman Date: Thu, 23 Apr 2026 11:48:27 +0300 Subject: [PATCH 4/5] intern --- .../com/palantir/sls/versions/SlsVersionMatcher.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/sls-versions/src/main/java/com/palantir/sls/versions/SlsVersionMatcher.java b/sls-versions/src/main/java/com/palantir/sls/versions/SlsVersionMatcher.java index 847603ad..116f32e8 100644 --- a/sls-versions/src/main/java/com/palantir/sls/versions/SlsVersionMatcher.java +++ b/sls-versions/src/main/java/com/palantir/sls/versions/SlsVersionMatcher.java @@ -16,19 +16,20 @@ package com.palantir.sls.versions; -import static com.palantir.logsafe.Preconditions.checkArgument; -import static com.palantir.logsafe.Preconditions.checkNotNull; - import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; import com.palantir.logsafe.SafeArg; import com.palantir.logsafe.UnsafeArg; import com.palantir.logsafe.logger.SafeLogger; import com.palantir.logsafe.logger.SafeLoggerFactory; +import org.immutables.value.Value; + import java.util.Comparator; import java.util.Optional; import java.util.OptionalInt; -import org.immutables.value.Value; + +import static com.palantir.logsafe.Preconditions.checkArgument; +import static com.palantir.logsafe.Preconditions.checkNotNull; /** * An SLS version matcher as defined by the [SLS From 8e2c0e1f258445ecaa5a8e296a0929d5839157c5 Mon Sep 17 00:00:00 2001 From: alon gouldman Date: Thu, 23 Apr 2026 11:49:03 +0300 Subject: [PATCH 5/5] spot --- .../com/palantir/sls/versions/SlsVersionMatcher.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/sls-versions/src/main/java/com/palantir/sls/versions/SlsVersionMatcher.java b/sls-versions/src/main/java/com/palantir/sls/versions/SlsVersionMatcher.java index 116f32e8..847603ad 100644 --- a/sls-versions/src/main/java/com/palantir/sls/versions/SlsVersionMatcher.java +++ b/sls-versions/src/main/java/com/palantir/sls/versions/SlsVersionMatcher.java @@ -16,20 +16,19 @@ package com.palantir.sls.versions; +import static com.palantir.logsafe.Preconditions.checkArgument; +import static com.palantir.logsafe.Preconditions.checkNotNull; + import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; import com.palantir.logsafe.SafeArg; import com.palantir.logsafe.UnsafeArg; import com.palantir.logsafe.logger.SafeLogger; import com.palantir.logsafe.logger.SafeLoggerFactory; -import org.immutables.value.Value; - import java.util.Comparator; import java.util.Optional; import java.util.OptionalInt; - -import static com.palantir.logsafe.Preconditions.checkArgument; -import static com.palantir.logsafe.Preconditions.checkNotNull; +import org.immutables.value.Value; /** * An SLS version matcher as defined by the [SLS