Skip to content

Update dependency apple/swift-collections to from: "1.5.0"#19

Merged
kishikawakatsumi merged 1 commit into
mainfrom
renovate/apple-swift-collections-1.x
May 10, 2026
Merged

Update dependency apple/swift-collections to from: "1.5.0"#19
kishikawakatsumi merged 1 commit into
mainfrom
renovate/apple-swift-collections-1.x

Conversation

@renovate
Copy link
Copy Markdown
Contributor

@renovate renovate Bot commented May 8, 2026

This PR contains the following updates:

Package Update Change
apple/swift-collections minor from: "1.4.1"from: "1.5.0"

Release Notes

apple/swift-collections (apple/swift-collections)

v1.5.0: Swift Collections 1.5.0

Compare Source

This feature release supports Swift toolchain versions 6.0, 6.1, 6.2, and 6.3. It includes the following new features and bug fixes:

Debugging enhancements

The package now defines LLDB data formatters for RigidArray. The formatters are emitted into the executable binary, and they are automatically loaded by LLDB. We expect to implement formatters for (many) more types in subsequent releases.

New stable APIs
  • RigidArray and UniqueArray now conform to Equatable when their element type is Equatable. This conformance requires a Swift 6.4 or later toolchain (it relies on SE-0499 generalizations of Equatable/Hashable to support noncopyable conforming types).
  • RigidArray and UniqueArray gained an isTriviallyIdentical(to:) operation, which reports whether two instances share their underlying storage allocation. This does not require the element type to be Equatable, and it works with noncopyable elements.
  • BitSet gained a makeIterator(from:) shortcut for starting iteration at (or after) a specific member, avoiding a linear scan from the start of the set.
  • OrderedDictionary gained a replaceElement(at:withKey:value:) operation that replaces the key-value pair at a given index. The new key is allowed to equal the existing key at that index (in which case only the value is updated).
Experimental hashed containers (UnstableHashedContainers trait)

The Robin-Hood-hashed UniqueSet, RigidSet, UniqueDictionary, and RigidDictionary types in the BasicContainers module continue to evolve behind the UnstableHashedContainers package trait. This release brings a number of correctness fixes and performance improvements:

  • Faster removals, with better maxProbeLength maintenance to avoid probe-length bloat.
  • Small tables are now scrambled to avoid degenerate patterns on common key distributions.
  • A fast-path shortcut for insertions into under-utilized tables.
  • Fixes to the insertion algorithm and to RigidDictionary.updateValue(forKey:with:) (the latter exhibited undefined behavior on removals).
  • RigidSet.insert(maximumCount:from:) no longer spuriously reports a capacity overflow due to incorrect accounting.
  • The UnstableHashedContainers trait can now be enabled independently of UnstableContainersPreview.

These types remain source-unstable for now.

Experimental sorted collections (UnstableSortedCollections trait)

The SortedCollections module's SortedSet has gained the following additions:

  • SortedSet now supports value-range subscripts for the full variety of standard range expression types, ClosedRange, PartialRangeFrom, PartialRangeThrough, and PartialRangeUpTo.
  • SortedSet.firstIndex(after:) and SortedSet.lastIndex(before:) return the index to the nearest member following or preceding a given value.

This release also fixes several underlying B-tree bugs that were surfaced by these additions.

These types remain source-unstable; they have known API deficiencies that will need to be addressed before they ship.

Experimental container protocols (UnstableContainersPreview trait)

The ContainersPreview module's protocol hierarchy and associated types continue to be developed. Several constructs have been renamed to follow Swift Evolution proposals in flight.

Old name New name
struct Box<T> struct UniqueBox<Value>
struct Borrow<Target> struct Ref<Target>
struct Inout<Target> struct MutableRef<Target>
Producer.ProducerError Producer.Failure
Producer.generateNext() Producer.next()
Producer.skip(upTo:) Producer.skip(by:)

For UniqueBox, Ref and MutableRef, there are deprecated typealiases for the old names, preserving source compatibility.

Other changes to the experimental container model:

  • Container.Index no longer needs to conform to Comparable. This allows linked lists to become containers.
  • RigidArray, UniqueArray, RigidDeque, and UniqueDeque now conform to the container protocols.
  • Added Producer.collect(into:) for collecting a producer's output into a RangeReplaceableContainer.
  • Added BorrowingIteratorProtocol.copy() for turning a borrowing iterator into a producer.
  • Added filter and map overloads for BorrowingIteratorProtocol, Producer, and Drain.
  • BorrowingSequence.first was removed.
  • BorrowingSequence, BorrowingIteratorProtocol and their requirements have temporarily gained trailing underscores to avoid naming conflicts with the (provisional) protocol definition in the Standard Library. We expect these definitions to be removed when these protocols officially become part of the stdlib.

The protocol-based APIs in ContainersPreview now require a Swift 6.4 or later toolchain. UniqueBox is source-stable, therefore it continues to require Swift 6.2.

Notable bug fixes
  • HashTreeCollections: Fixed an invariant violation that could be triggered by some operations on TreeSet/TreeDictionary.
  • _RopeModule: Fixed an infinite loop when hashing the UTF-8 view of a multi-chunk big substring.
  • BitCollections: Fixed a bogus precondition in BitArray.insert(repeating:count:at:); fixed BitSet.isSubset(of: Range<Int>) to correctly examine elements above the range's upper word.
  • HeapModule: Fixed Heap.insert(contentsOf:) to use a wrapping multiply in its Floyd-heuristic computation; added a missing bounds assertion in Heap._UnsafeHandle.swapAt(_:with:).
  • OrderedCollections: Fixed OrderedSet crash on negative capacity values; minor fixes in _HashTable.UnsafeHandle.
  • DequeModule: Fixed sizing issue in UniqueDeque.replace(removing:addingCount:initializingWith:); fixed a missing argument validation in RigidDeque.nextMutableSpan(after:maximumCount:); RigidDeque.consume(_:consumingWith:) now closes the resulting gap before returning; added zero-count fast-paths; replace/prepend operations taking a Collection now verify that the source's count matches its contents.
  • BasicContainers: Fixed an overallocation issue in UniqueArray.replace(removing:copying:); fixed a partial-initialization correctness issue in RigidArray.replace(removing:consumingWith:addingCount:initializingWith:).

What's Changed

New Contributors

Full Changelog: apple/swift-collections@1.4.1...1.5.0


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate Bot force-pushed the renovate/apple-swift-collections-1.x branch from 26583f7 to 2519a32 Compare May 10, 2026 06:30
@kishikawakatsumi kishikawakatsumi merged commit a5bd4df into main May 10, 2026
1 check passed
@kishikawakatsumi kishikawakatsumi deleted the renovate/apple-swift-collections-1.x branch May 10, 2026 06:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant