Skip to content

Releases: Kotlin/kotlinx.collections.immutable

v0.4.0

14 May 14:07
bd5ac10
Compare
Choose a tag to compare
  • Fixed the equality bug in PersistentMap β€” Added proper node promotion during mutable operations to ensure a consistent internal tree structure #217
  • Fixed the bug in PersistentMap equals implementation β€” Ensured proper node promotion during mutable key removal even when nodes share the same owner #218
  • Fixed the ghost element issue in PersistentHashSet β€” Corrected condition check order to ensure proper recursive element promotion after collision removal #219
  • Updated Kotlin to version 2.1.20 and core dependencies #213
  • Enabled '-Xjvm-default=disable' explicitly to prevent API dump changes #210

v0.3.8

05 Sep 14:59
fe7b163
Compare
Choose a tag to compare
v0.3.8 Pre-release
Pre-release

What's Changed

  • Add extension functions to convert Array to persistent collections #159
  • Don't allocate temporary buffer in SmallPersistentVector.removeAll #164
  • Avoid creating new PersistentList instance when adding empty collection #176
  • Fix memory leak in builders #193

v0.3.7

16 Dec 06:48
Compare
Choose a tag to compare
v0.3.7 Pre-release
Pre-release
  • Upgrade Kotlin version up to 1.9.21
  • Support wasmJs and wasmWasi targets

v0.3.6

06 Oct 18:34
Compare
Choose a tag to compare
v0.3.6 Pre-release
Pre-release
  • Upgrade Kotlin version up to 1.9.0
  • Support all targets currently supported by the K/N compiler
  • Drop support for the Legacy js target

v0.3.5

12 Jan 18:25
Compare
Choose a tag to compare
v0.3.5 Pre-release
Pre-release
  • Upgrade Kotlin version up to 1.6.0
  • Raise the JVM bytecode target to 1.8. Now the library cannot be used on JDK 1.6 and 1.7.
  • Add other Apple K/N targets
  • Implement faster equals function for sets and maps
  • Fix PersistentHashMapBuilder.putAll() #114

v0.3.4

29 Mar 23:48
Compare
Choose a tag to compare
v0.3.4 Pre-release
Pre-release
  • Upgrade Kotlin version up to 1.4.30
  • Publish the library to Maven Central instead of Bintray #96.
  • Add license information to published POMs #98.
  • Implement workaround for specialized MutableEntrySet.contains/remove KT-41278.
  • Bug in PersistentList - list is broken after removeAll call #92.
  • Faster bulk operations for non-ordered sets (removeAll, retainAll, containsAll) #91.
  • Faster addAll/putAll implementation for non-ordered sets/maps #83.
  • Add extension functions to convert Sequence to persistent collections 84.
  • Add missing CharSequence.toImmutableSet() extension function.

v0.3.3

22 Aug 03:09
Compare
Choose a tag to compare
v0.3.3 Pre-release
Pre-release
  • Support Kotlin 1.4.0
  • Weaken receiver type of toPersistentHashSet to Iterable #77
  • Throw ConcurrentModificationException if hashCode of ordered set element changes #76
  • Fix transition from PersistentVector to SmallPersistentVector #75

v0.3.2

10 Apr 08:05
Compare
Choose a tag to compare
v0.3.2 Pre-release
Pre-release
  • Introduce persistentHashSetOf, persistentMapOf and persistentHashMapOf methods that take no arguments and create an empty instance #67.
  • Fix map entries/keys/values iterators including #68.

v0.3.1

13 Mar 14:05
Compare
Choose a tag to compare
v0.3.1 Pre-release
Pre-release

Update Kotlin version up to 1.3.70

v0.3

18 Oct 15:02
Compare
Choose a tag to compare
v0.3 Pre-release
Pre-release
  • Turn the JVM-only project into a multiplatform library
    • JVM artifact id has changed from kotlinx-collections-immutable to kotlinx-collections-immutable-jvm
    • Builder iterators are fast-fail only on JVM. On the other platforms modifying the builder during iteration not through the corresponding iterator can invalidate the iterator state in an unspecified way.
    • In addition to JVM and JS platforms, macosX64, iosX64, iosArm64, iosArm32, linuxX64, and mingwX64 native platforms are supported.
  • Make conversion to persistent collections consistent
    • toPersistentMap/Set always returns an ordered persistent map/set
    • toPersistentHashMap/Set always returns an unordered persistent map/set
    • toImmutableMap/Set may return any kind of immutable map/set
  • Optimize persistent list [builder] batch update operations
    • addAll(elements) operation performs ~3 times faster πŸ“‰
    • addAll(index, elements) operation takes O(N + M), down from O(N * M), where N is the size of this collection and M - the size of the elements collection. πŸ“‰
    • removeAll(elements) operation takes O(N * K), down from O(N * M), where K is the time complexity of contains operation on the elements collection πŸ“‰
    • removeAll(predicate) operation takes O(N * P), down from O(N * (P + N)), where P is the time complexity of the predicate algorithm πŸ“‰
  • Implement set/map backing trie canonicalization
    • add operation after remove operations performs ~20% faster πŸ“‰
    • iteration after remove operations performs ~3 times faster πŸ“‰