RFR: 8366178: Implement JEP 526: Lazy Constants (Second Preview) [v25]
Maurizio Cimadamore
mcimadamore at openjdk.org
Fri Nov 14 09:55:14 UTC 2025
On Wed, 12 Nov 2025 10:07:39 GMT, Per Minborg <pminborg at openjdk.org> wrote:
>> Implement JEP 526: Lazy Constants (Second Preview)
>>
>> The lazy list/map implementations are broken out from `ImmutableCollections` to a separate class.
>>
>> The old benchmarks are not moved/renamed to allow comparison with previous releases.
>>
>> `java.util.Optional` is updated so that its field is annotated with `@Stable`. This is to allow `Optional` instances to be held in lazy constants and still provide constant folding.
>
> Per Minborg has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 112 commits:
>
> - Clarify toString spec
> - Merge branch 'master' into lazy-constants
> - Add @AOTSafeClassInitializer
> - Address comments in PR
> - Fix merge mistake
> - Merge master
> - Rework toString implementations
> - Update after doc comments
> - Merge branch 'master' into lazy-constants
> - Revert the AbstractMap.keySet @Stable annotation
> - ... and 102 more: https://git.openjdk.org/jdk/compare/76a1109d...1f439bec
Looks great -- just a couple more javadoc tweaks ;-)
src/java.base/share/classes/java/util/List.java line 1233:
> 1231: * The returned list's {@linkplain Object#equals(Object) equals()} and
> 1232: * {@linkplain Object#hashCode() hashCode()} methods may trigger initialization of one
> 1233: * or more lazy elements. The returned list's {@linkplain Object#toString() toString()}
I thought we have concluded that all Object methods should behave as those in any other list, to maximize migration opportunities.
-------------
PR Review: https://git.openjdk.org/jdk/pull/27605#pullrequestreview-3464050345
PR Review Comment: https://git.openjdk.org/jdk/pull/27605#discussion_r2526787780
More information about the core-libs-dev
mailing list