Unrreleased

May 28, 2026 ยท View on GitHub

Bug Fixes

  • Fixed SynchronizedMutableMap (and SynchronizedBiMap, SynchronizedSortedMap) so that computeIfAbsent, computeIfPresent, compute, replaceAll, and putIfAbsent hold the lock across the entire operation. The Java default implementations were not atomic because they invoked get() and put() as two separate synchronized calls. (#147, #500)

Performance Improvements

  • UnifiedMap and UnifiedMapWithHashingStrategy now provide single-lookup overrides for computeIfAbsent, computeIfPresent, and compute, reducing hash lookups from 2โ€“3 (Java default) to 1. (#147, #500)

Documentation Changes

  • Improved Javadoc for 'Sets' factory class (#782)

13.0.0

This is the 13.0.0 major release.

This release focused on migrating the development baseline from Java 11 to Java 17, and updating our builds for p2 site to publish directly to maven central.

The Eclipse Collections team gives a huge thank you to everyone who participated in this release.

Documentation Changes


  • Improved mutablePrimitivePrimitiveMap's remove() and removeKey() Javadoc.

Build Changes


  • Upgraded the minimum Java version to Java 17.
  • Build a maven p2 site from the reactor content. Fixes #1411, #288
  • Upgrade bnd plugin to 7.1.0.
  • Publish p2 artifacts to maven central. Fixes #294 . Example here

API Changes


  • Added injectIntoWithIndex to OrderedIterable.
  • Added NavigableSet API (lower, floor, ceiling, higher, descendingSet, descendingIterator, subSet(T, boolean, T, boolean), headSet(T, boolean), tailSet(T, boolean)) to SortedSetIterable hierarchy. MutableSortedSet now extends NavigableSet. ImmutableSortedSet exposes NavigableSet via castToNavigableSet(). Fixes #1851.

Bug Fixes


  • Fixed ConcurrentHashMap keySet(), values(), and entrySet() spliterators to ensure they are CONCURRENT and not SIZED. Fixes #1801.
  • Fixed ConcurrentHashMapUnsafe keySet(), values(), and entrySet() spliterators to ensure they are CONCURRENT and not SIZED.

Note


We have taken all the measures to ensure all features are captured in the release notes. However, release notes compilation is manual, so it is possible that a commit might be missed. For a comprehensive list of commits please go through the commit log.

Acquiring Eclipse Collections

Maven

<dependency>
    <groupId>org.eclipse.collections</groupId>
    <artifactId>eclipse-collections-api</artifactId>
    <version>13.0.0</version>
</dependency>

<dependency>
    <groupId>org.eclipse.collections</groupId>
    <artifactId>eclipse-collections</artifactId>
    <version>13.0.0</version>
</dependency>

<dependency>
    <groupId>org.eclipse.collections</groupId>
    <artifactId>eclipse-collections-testutils</artifactId>
    <version>13.0.0</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>org.eclipse.collections</groupId>
    <artifactId>p2-site</artifactId>
    <version>13.0.0</version>
</dependency>

<dependency>
    <groupId>org.eclipse.collections</groupId>
    <artifactId>eclipse-collections-forkjoin</artifactId>
    <version>13.0.0</version>
</dependency>

Gradle

implementation 'org.eclipse.collections:eclipse-collections-api:13.0.0'
implementation 'org.eclipse.collections:eclipse-collections:13.0.0'
testImplementation 'org.eclipse.collections:eclipse-collections-testutils:13.0.0'
implementation 'org.eclipse.collections:p2-site:13.0.0'
implementation 'org.eclipse.collections:eclipse-collections-forkjoin:13.0.0'

Ivy

<dependency org="org.eclipse.collections" name="eclipse-collections-api" rev="13.0.0" />
<dependency org="org.eclipse.collections" name="eclipse-collections" rev="13.0.0" />
<dependency org="org.eclipse.collections" name="eclipse-collections-testutils" rev="13.0.0" />
<dependency org="org.eclipse.collections" name="p2-site" rev="13.0.0" />
<dependency org="org.eclipse.collections" name="eclipse-collections-forkjoin" rev="13.0.0"/>