forked from pool/eclipse-collections
* This is the 12.0.0 major release.
This release focused on migrating the development baseline from
Java 8 to Java 11, migrating to JUnit 5, enhancing performance,
adding new API methods, improving test coverage, and updating
dependencies. The team has also made significant efforts to
reduce technical debt and improve code quality.
* New Functionality
+ Added default toArray()/toImmutableList()/toSet()/toBag()
implementations to LazyIterable.
+ Implemented MapIterable.collectKeysUnique(). Fixes #409.
+ Implemented MutableOrderedMap.toImmutable()
+ Implemented ImmutableOrderedMapAdapter.
+ Implemented OrderedMapAdapter.flipUniqueValues().
+ Implemented Stack.getLast().
+ Implemented Stack.distinct().
+ Added feature to reverse Interval ranges.
+ Added withOccurrences() and withoutOccurrences() to
MutableBag.
+ Implemented RichIterable.reduceBy(). Fixes #134.
+ Added toStack() to OrderedPrimitiveIterable.
+ Implemented Comparators.fromPredicate(), to create a
Comparator from a Predicate2 that can answer isBefore().
+ Implemented boxing wrappers for primitive sets. Fixes #1408.
+ Implemented boxing wrappers for primitive lists. Fixes #1408.
+ Exposed trimToSize() in HashBag implementations.
+ Exposed trimToSize() in all primitive maps and sets.
+ Added removeIf() to PrimitiveObject maps.
+ Changed OrderedIterable.indexOf() to have a default
implementation.
+ Added SortedMaps.mutable.empty(comparator) and
SortedSets.mutable.empty(comparator) the missing empty with
comparator methods. Fixes #1328.
* Optimizations
+ Optimized forEach() method on Map views to not delegate to an
iterator.
+ Optimized Map.replaceAll() to not delegate to iterator.
+ Optimized putAll() method.
+ Optimized ImmutableArrayList.takeWhile() and
ImmutableArrayList.dropWhile() for small lists. Fixes #1640.
+ Optimized clear() method of sub-lists. Fixes #1625.
+ Optimized MutableList.subList().
+ Optimized equals() for primitive Bags using
allSatisfyKeyValue() on PrimitivePrimitiveMaps.
+ Added allSatisfyKeyValue() method to Object/Primitive Maps to
optimize HashBag.equals() method.
+ Overrode Map.merge() default method for correctness and
efficiency. Partially addresses #500.
+ Optimized withAll() on MutableSet Factories and Immutable
equivalent. Fixes #1374.
+ Overrode Java 8 default method Map.forEach().
+ Optimized any/all/noneSatisfy() on
UnifiedMapWithHashingStrategy. Fixes #1342.
+ Optimized withAll() for PrimitiveBag factories. Fixes #1372.
* Tech Debt Reduction
+ Added more files to .idea/.gitignore.
+ Used interfaces instead of implementations where possible
without breaking backward compatibility.
+ Formatted yaml files using Spotless.
+ Synced .idea/compiler.xml.
+ Fixed MapIterate.forEachKeyValue() to throw
NullPointerException on null Map.
+ Added missing @Override annotations.
+ Added suppress warnings to RichIterable for
ClassReferencesSubclass.
+ Fixed static analysis violations.
+ Synced IntelliJ project files.
+ Made UnifiedMapWithHashingStrategy more similar to UnifiedMap
by implementing removeIf() and the detect*() methods.
+ Added OSGi Opting in to Service Loader Mediator. Fixes #1568
+ Set .idea to linguist-generated=false in .gitattributes so
that it shows up in code review diffs.
+ Updated Checkstyle AvoidStaticImport to allow JUnit 5 static
imports.
+ Fixed IntelliJ code style settings.
+ Configured CheckStyle check IllegalInstantiation to match the
style of upstream configuration.
+ Configured CheckStyle check HiddenField to match the style of
upstream configuration.
+ Turned on CheckStyle check RightCurly for additional tokens.
+ Turned on CheckStyle check EmptyBlock for additional tokens.
+ Turned on CheckStyle check AnnotationLocation for additional
tokens.
+ Ran
rewrite.activeRecipes=org.openrewrite.java.RemoveUnusedImports.
+ Ran org.openrewrite.java.UseStaticImport: methodPattern:
org.junit.Assert *(..).
+ Extracted interface MapTestCase above
MutableMapIterableTestCase.
+ Replaced new Long() with Long.valueOf().
+ Updated JMH Benchmarks and library dependencies.
+ Simplified Iterate forEach() and sort() by calling Java 8
default methods.
+ Fixed overflow issues in LongInterval. Fixes #1717.
+ Fixed OrderedMapAdapter.groupByUniqueKey().
+ Fixed NullPointerException in
IterableTestCase.assertEquals().
+ Fixed generics in map factories.
+ Fixed return types of aggregateBy() overrides.
+ Added default overrides for getFirst() and getLast() in
MutableList and MutableSortedSet. Fixes #1460.
+ Fixed a type in mutation.yml. Fixes #1440.
+ Fixed a bug in addAllAtIndex() method. Fixes #1433.
+ Turned on additional IntelliJ inspections and fix violations
(trivial if, trivial else, commented out code, method is
identical to its super method). #1323.
+ Added missing overrides in multi-reader interfaces.
+ Refactored distinct() to use select().
+ Refactored FastList to use new InternalArrayIterate primitive
collect methods. Fixes #1350.
* Documentation Changes
+ Added "Eclipse Collections Categorically" book to "Learn
Eclipse Collections" section of README.
+ Improved structural search templates, mostly for collection
factories and assertions.
+ Clarified Java version compatibility in README.
+ Added method categories with emojis in RichIterable using
region/endregion comments.
+ Added method categories with emojis in RichIterable javadoc
summary.
+ Fixed incorrect Javadoc for SortedSetIterable.intersect() and
SetIterable.intersect().
+ Fixed typo in 3-Code_Blocks.adoc.
+ Fixed bold markup typos in the reference guide.
+ Fixed typo in Primitive set doc.
+ Fixed Java version in CONTRIBUTING.MD
+ Added NOTICE.md file.
+ Added Javadoc to ConcurrentMutableMap.merge().
+ Updated README.md compatibility table and add blog links.
+ Fixed some Javadoc errors.
+ Fixed all language links, their order, old website links and
http links.
+ Added missing Javadoc for Iterate.getOnly().
+ Removed prompt from code blocks in CONTRIBUTING.MD.
+ Removed a typo in ImmutableSet Javadoc.
+ Removed anonymous inner class examples from RichIterable and
Iterate JavaDoc.
+ Updated 2-Collection_Containers.adoc file for adding
IntInterval Documentation.
+ Updated 2-Collection_Containers.adoc file for Primitive sets
documentation.
+ Fixed dead links in CONTRIBUTING.MD
* Build Changes
+ Added job forbid-merge-commits to
.github/workflows/pull-request.yml.
+ Replaced mvn install with mvn verify in GitHub workflows.
+ Updated GitHub Actions builds to latest JDK versions.
+ Moved bnd-maven-plugin to a profile.
+ Added Spotless maven profiles.
+ Configured maven-surefire-plugin printSummary to false, to
stop logging successful tests.
+ Added maven profiles and caching to speed up builds.
+ Updated IntelliJ language level to 11.
+ Added consistent use of ./mvnw --color=always from GitHub
workflows.
+ Combined all the GitHub workflows for pull requests.
+ Upgraded maven from 3.6.3 to 3.9.6.
+ Added javadoc:jar step and Java 11 to Javadoc GitHub Action.
+ Upgraded Maven wrapper.
+ Removed sonar-maven-plugin. Fixes #1466.
* Build/Test Dependency Upgrades
+ Added dependency on junit-jupiter-api.
+ Upgraded versions of JUnit to JUnit 5.
+ Upgraded org.jacoco:jacoco-maven-plugin to 0.8.12.
+ Upgraded net.alchim31.maven:scala-maven-plugin to 4.9.2.
+ Upgraded org.apache.maven.plugins:maven-assembly-plugin to
3.7.1.
+ Upgraded org.apache.maven.plugins:maven-source-plugin to
3.3.0.
+ Upgraded org.apache.maven.plugins:maven-compiler-plugin to
3.13.0.
+ Upgraded org.scala-lang:scala-library to 2.13.15.
+ Upgraded ch.qos.logback:logback-classic to 1.5.8.
+ Upgraded slf4j.version to 2.0.16.
+ Upgraded jcstress-core to 0.16.
+ Upgraded com.puppycrawl.tools:checkstyle to 10.18.2.
+ Upgraded org.apache.maven:maven-core to 3.9.9.
+ Upgraded org.apache.maven.plugins:maven-gpg-plugin to 3.2.7.
+ Upgraded
org.apache.maven.plugin-tools:maven-plugin-annotations to
3.15.0.
+ Upgraded org.apache.maven:maven-plugin-api to 3.9.9.
+ Upgraded org.apache.maven.plugins:maven-release-plugin to
3.1.1.
+ Upgraded
org.apache.maven.plugins:maven-project-info-reports-plugin to
3.7.0.
+ Upgraded org.apache.maven.plugins:maven-checkstyle-plugin.
+ Upgraded org.apache.maven.plugins:maven-enforcer-plugin to
3.5.0.
+ Upgraded org.apache.maven.plugins:maven-install-plugin to
3.1.3.
+ Upgraded org.apache.maven.plugins:maven-plugin-plugin to
3.15.0.
+ Upgraded org.apache.maven.plugins:maven-surefire-plugin to
3.5.0.
+ Upgraded org.codehaus.mojo:versions-maven-plugin to 2.17.1.
+ Upgraded org.apache.maven.plugins:maven-deploy-plugin to
3.1.3.
+ Upgraded org.apache.maven.plugins:maven-resources-plugin to
3.3.1.
+ Upgraded actions/setup-java to 4.
+ Upgraded actions/upload-artifact to 4.
+ Upgraded actions/cache from to 4.0.0.
+ Upgraded actions/checkout to 4.
* Test Improvements
+ Added tests for equals() and forEach() on keySet() and
entrySet().
+ Added tests Map_entrySet_setValue() and
MutableMapIterable_entrySet_setValue().
+ Stopped throwing mangled exceptions in Verify.
+ Added test coverage for MutableBagIterable.
+ Removed redundant tests from unit-tests that live in
unit-tests-java8.
+ Changed IterableTestCase.assertIterablesEqual to assert that
the arguments are actually iterable.
+ Added missing @test annotations and fix broken assertion.
+ Added better test coverage of List.subList().
+ Added test coverage for Map.put() and Map.putAll().
+ Improved Verify assertions to not rely on iterators.
+ Deleted four flaky tests:
Collectors2AdditionalTest.sumBy*Parallel().
+ Added more assertions to
IterableTestCase.assertIterablesEqual().
+ Reduced duplication between tests for unmodifiable maps.
+ Improve test coverage for the optimization of
MutableList.subList().
+ Removed @test(expected) from tests and use assertThrows
instead.
+ Uplifted Junit syntax for UnmodifiableSortedBagTest.
+ Fixed test setup in SortedMapAdapterTest which was
accidentally setting up a MutableOrderedMap.
+ Replaced usages of impl.factory.(Bags|Lists|Sets|Maps) with
api.factory in unit-tests.
+ Combined tests in unit-tests-java8 that cover the same method
contract.
+ Removed check for Java 21 in
UnmodifiableMutableOrderedMapSerializationTest.
OBS-URL: https://build.opensuse.org/package/show/Java:packages/eclipse-collections?expand=0&rev=16
21 KiB
21 KiB