Skip to content

chore(deps): update dependency apple/swift-collections to from: "1.7.6" - #11

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/apple-swift-collections-1.x
Open

renovate[bot] wants to merge 1 commit into
mainfrom
renovate/apple-swift-collections-1.x

Conversation

@renovate

@renovate renovate Bot commented Mar 8, 2026 •

Copy link
Copy Markdown

Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Update Change
apple/swift-collections minor from: "1.0.0" → from: "1.7.6"

Release Notes

apple/swift-collections

v1.7.6: Swift Collections 1.7.6

Compare Source

What's Changed

New Contributors

Full Changelog: apple/swift-collections@1.7.5...1.7.6

v1.7.5: Swift Collections 1.7.5

Compare Source

What's Changed

  • [OrderedCollections] Resolve filename ambiguity with InternalCollectionsUtilities/UnsafeBitSet/_UnsafeBitSet.swift by @​lorentey in #​805
  • Bump swiftlang/github-workflows from 0.0.16 to 0.0.17 by @​dependabot[bot] in #​802
  • Bump swiftlang/github-workflows/.github/workflows/swift_package_test.yml from 0.0.16 to 0.0.17 by @​dependabot[bot] in #​803
  • Bump swiftlang/github-workflows/.github/workflows/soundness.yml from 0.0.16 to 0.0.17 by @​dependabot[bot] in #​804
  • Document standalone macOS backdeployment requirements by @​0xSixtos in #​800
  • [DequeModule] Fix RigidDeque prepend example capacity and direction-word slips by @​aashish254 in #​801
  • Fix prepend(copying:) dropping items from multi-span sources by @​awaisdev5765 in #​796
  • Review RigidDeque/UniqueDeque tests; add better tests for prepends by @​lorentey in #​806

New Contributors

Full Changelog: apple/swift-collections@1.7.4...1.7.5

v1.7.4: Swift Collections 1.7.4

Compare Source

This is a patch release shipping a number of bug fixes.

What's Changed

New Contributors

Full Changelog: apple/swift-collections@1.7.3...1.7.4

v1.7.3: Swift Collections 1.7.3

Compare Source

This is a patch release resolving a correctness issue with BitSet.Counted.isEqualSet(to:), improving test coverage throughout the library, and continuing the development of unstable interfaces.

What's Changed

New Contributors

Full Changelog: apple/swift-collections@1.7.2...1.7.3

v1.7.2: Swift Collections 1.7.2

Compare Source

This is a patch release shipping a few internal cleanups.

  • On Swift 6.4, the package is now built with strict memory safety enabled. (I don't expect to ever get rid of all unsafe keywords: safe data structures have to be built on top of unsafe allocator primitives, after all. But I do expect we will gradually move to using memory-safe constructs whenever it's possible to do so, and the keywords will serve as a helpful incentive for that.)
  • The package has now fully migrated its testing to rely on package access modifiers rather than @testable import or @_spi trickery.

What's Changed

Full Changelog: apple/swift-collections@1.7.1...1.7.2

v1.7.1: Swift Collections 1.7.1

Compare Source

This is a patch release that ships a workaround for a Swift 6.4 defect that prevents code that uses the package from deploying before macOS/iOS 27 (#​733), alongside fixes for a handful of other bugs uncovered since 1.7.0.

What's Changed

New Contributors

Full Changelog: apple/swift-collections@1.7.0...1.7.1

v1.7.0: Swift Collections 1.7.0

Compare Source

This is a feature release raising the minimum required toolchain to Swift 6.2. It formalizes Equatable/Hashable conformances on the ownership-aware container types, adds a new stable OrderedSet operation, and continues to develop the experimental ownership-aware container model behind the UnstableContainersPreview trait. It also includes a number of performance improvements and bug fixes.

New stable APIs

OrderedCollections
  • OrderedSet.replace(at:with:) replaces the member at a given index with a new element, returning the element that was removed. Replacing a member with an element that already exists elsewhere in the set is a runtime error. Expected amortized O(1) complexity. (#​669)
BasicContainers, DequeModule
  • On a Swift 6.4 or later toolchain, RigidArray, UniqueArray, RigidDeque, UniqueDeque, RigidSet, UniqueSet, RigidDictionary, and UniqueDictionary now formally conform to Equatable and Hashable. (The underlying == and hash(into:) members were already available in 1.6.0; what is new is the conformances themselves.) Building with Swift 6.2 or 6.3 still gets you the ==/hash(into:) members, but no conformances.

  • RigidDeque.isTriviallyIdentical(to:) and UniqueDeque.isTriviallyIdentical(to:) are now available for every element type, including noncopyable ones. Previously these required Element: Equatable.

  • New spelling for the capacity, cloning, and range-replacement operations; see Renamed APIs below. The new names are the stable spelling going forward; the old ones remain as deprecated shims.

Collections umbrella module

The Collections module is back to re-exporting its constituent modules with @_exported import, instead of restating each type as a public typealias (#​716). A single
import Collections therefore now brings in the entire contents of BitCollections, DequeModule, HashTreeCollections, HeapModule, and OrderedCollections — including types that previously were not exposed in the Collections module, such as RigidDeque and UniqueDeque. This allows import Collections to work even for clients that have MemberImportVisibility enabled.

Renamed APIs

BasicContainers and DequeModule are stable modules, so every rename below ships with a deprecated shim carrying @available(*, deprecated, renamed:). Existing code keeps compiling, and Xcode/swift build will offer fix-its.

Old name New name
reallocate(capacity:) setCapacity(_:)
copy() clone()
copy(capacity:) clone(capacity:)
UniqueDeque.init(capacity:) init(minimumCapacity:)
replace(_:with:) and friends replaceSubrange(_:copying:) / (_:moving:) / (_:consuming:)
replace(_:count:initializingWith:) replaceSubrange(_:addingCount:initializingWith:)
append(count:initializingWith:) append(addingCount:initializingWith:)
insert(count:at:initializingWith:) insert(addingCount:at:initializingWith:)
nextSpan(after:maximumCount:) nextSpan(after:maxCount:)
nextMutableSpan(after:maximumCount:) nextMutableSpan(after:maxCount:)
previousSpan(before:maximumCount:) previousSpan(before:maxCount:)
RigidSet.insert(count:initializingWith:) insert(addingCount:initializingWith:)
RigidSet.insert(count:from:) insert(addingCount:from:)

Most of the new names sync this package with the API names recently adopted in the Standard Library in Iterable and UniqueArray.

Performance improvements

  • BitSet.count is roughly 3× faster. (#​702)
  • _Word.allBits is now @inlinable, which unblocks specialization in several
    bit-twiddling paths. (#​704)
  • OrderedSet.reverse() now reverses the hash table in place instead of
    rebuilding it from scratch. (#​668)
  • UniqueArray no longer performs duplicate bounds checks on subscript and
    mutation paths. (#​699)
  • RigidArray's internal representation was split from a (buffer pointer, count) pair into separate pointer, capacity, and count fields. This exposes an unused bit pattern for the compiler to use for representing nil values in optional wrapped arrays, avoiding having to add an out-of-line discriminator. The representation of RigidDictionary was
    adjusted in a similar way. (#​692, #​717)
  • Deque and the TreeSet/TreeDictionary types are no longer using a malloc_size to make use of any "extra" storage allocated. (#​700)
  • OrderedDictionary.replaceElement now uses exchange(_:with:) on its equal-key path to avoid copying the outgoing value. (#​688, #​703)
  • RigidDictionary now stores a sentinel value rather than nil for its values pointer, removing a branch from value access.

Notable bug fixes

  • BitCollections: BitSet.isEqualSet(to:) returned the wrong result when given an empty Range<Int>. A non-empty bit set incorrectly compared equal to an empty range. (#​718)
  • SortedCollections (UnstableSortedCollections trait): SortedDictionary.Keys, .Values, and .SubSequence had inverted == implementations, so equal instances compared unequal and vice versa. SubSequence equality also now uses tuple comparison rather than an element-by-element loop with the wrong short-circuit. (#​697)
  • Embedded Swift: the _UniqueCollection fast paths in BitSet.isEqualSet(to:), OrderedSet.isEqualSet(to:), TreeSet.isEqualSet(to:), and TreeSet.symmetricDifference(_:) rely on dynamic conformance checks, which are unavailable in embedded Swift. They are now compiled out with #if !$Embedded. (#​715)

Experimental container protocols (UnstableContainersPreview trait)

This is the first swift-collections release that ships a fully operational container protocol hierarchy, including some massive updates. However, things are still subject to change, and we expect to need to make breaking changes as we gain experience using the new constructs. Nothing under this trait is stable API, and source-breaking changes land without deprecations.

New: Documentation/Container-design.md is a work-in-progress document describing the container design implemented in the ContainersPreview module. As of the 1.7.0 release, it explains some of the design decisions behind the container protocols, up to and including MutableContainer. (The Producer hierarchy and the range-replaceable container protocol family is not yet fully covered; we expect those parts to be fleshed out later.)

New SpanPreview module

InputSpan has moved out of ContainersPreview into a new SpanPreview module. SpanPreview holds span-adjacent primitives that are expected to graduate to the standard library, and it is entirely empty unless the UnstableContainersPreview trait is enabled. It also ships basic MutableSpan/OutputSpan helpers for producing and consuming InputSpans.

Some core APIs on the container types require the use of InputSpan, and this change lets these APIs continue to live in their defining module.

SpanPreview is explicitly not part of the package's stable public API, as we expect to soon replace it with the Standard Library's own InputSpan definition.

Dependency inversion

ContainersPreview and the concrete container modules have swapped places in the dependency graph. BasicContainers and DequeModule no longer depend on ContainersPreview; instead ContainersPreview depends on them, and all
container conformances for the concrete types now live there, under Sources/ContainersPreview/Conformances/. (842f125c)

Source-breaking for trait adopters: getting Container (etc.) conformances for RigidArray, UniqueArray, RigidDeque, UniqueDeque, RigidSet, or UniqueSet now requires import ContainersPreview. Importing just BasicContainers or DequeModule gets you the types and their intrinsic operations, but not the protocol conformances.

Standard library adoption
  • The locally-defined BorrowingSequence_/BorrowingIteratorProtocol_ protocols have been replaced by the standard library's Iterable and BorrowingIteratorProtocol. The package's own definitions have been removed. (#​657)
  • Similarly, Ref and MutableRef now ship in the Standard Library rather than being declared in ContainersPreview. (UniqueBox is part of the package's stable API, so its definition continues to remain available. We expect to deprecate it in a future package release.)
New protocols
  • Removal and consumption operations were spun off from RangeReplaceableContainer into the new parent protocol DrainableContainer. This protocol models containers supporting partial in-place consumption (and removal) of their contents. Range-replacement operations now all return indices to the subranges they affected, so that we can perform insertions/removals without losing our place in the container. (This is particularly important for linked lists and similar linked data structures capable of performing O(1) insertions/removals.) (#​723)
  • CountedProducer refines Producer adding a precise count of remaining elements. Drain now refines CountedProducer.
  • ContainerDrain refines Drain to allow retrieving a valid index after the items have been drained.
  • RangeExpression2 now refines the standard RangeExpression, so that we can use the standard range expression notation over container types. (The name (as well as the protocol itself) is a placeholder, so that we have something that works while we are looking for a better solution.) (#​22a94a97)
Reworked core requirements
  • Container's core primitive is now nextSpan(after:maxCount:limitedBy:), with optional delimiter arguments; the
    bidirectional counterpart is spanBoundary(before:maxDistance:limitedBy:).
  • Container gained makeBorrowingIterator(from:), makeBorrowingIterator(from:to:), and currentIndex(of:) requirements.
  • Container now expects its indices to be Comparable again, as we have found a way to provide them in conforming linked list types. (#​727)
  • [Mutable]Container gained subscript requirements expressed with borrow and mutate accessors.
  • Producer.generate(into:) switched to saturating semantics — it now fills the destination when possible, unless it reaches its end or throws. (#​728)
New algorithms
  • MutableContainer gained bulk update operations (updateSubrange and friends), in both mutating and copying forms, plus a default swapAt implementation for copyable elements. (#​724)
  • PermutableContainer gained reverse(), shuffle(), moveSubrange(_:to:), and a heap sort.
  • Producer gained UnfoldProducer (an unfold-style generator), and
  • BorrowingIteratorProtocol gained mapError, and map was fixed; _map2 and _map3 were added alongside it to demonstrate different throwing behaviors. Error handling across the producer/drain algorithms was reviewed.
  • New Container conformances for Span, MutableSpan, OutputSpan, and InputSpan.

Experimental hashed containers (UnstableHashedContainers trait)

These types are functional, but they still have known usability gaps in their API surface that prevents us from declaring them API stable.

  • The trait no longer needs UnstableContainersPreview to be enabled alongside it. 70dc2389)
  • RigidSet and UniqueSet now conform to Container. (#​713)
  • RigidDictionary and UniqueDictionary gained a keys property and mutableValue(forKey:), which yields in-place mutable access to a stored value. (#​698,

Testing and infrastructure

  • checkSetAlgebra, a new law checker in _CollectionsTestSupport, verifies set-like types against the SetAlgebra laws — and additionally checks each mutating operation against its non-mutating twin. (#​719, #​730)
  • A Container conformance validator has been added, along the lines of the existing Sequence/Collection conformance checkers, and is now applied to RigidSet, UniqueSet, RigidDeque, and UniqueDeque. (#​713, #​720)
  • New tests cover Deque's storage allocation behavior and MutableContainer's requirements (the latter uncovered and fixed several issues). (#​722)
  • We added a first draft of a swift-format configuration for this package.
  • CI workflows were updated (swiftlang/github-workflows 0.0.11 → 0.0.15, actions/checkout 6 → 7), and the matrix was simplified now that 6.0/6.1 are out of support.
  • The unstable Xcode project had its groups converted to folders.

Detailed List of Changes

[!IMPORTANT]
✂ PR body was truncated to here.


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 changed the title chore(deps): update dependency apple/swift-collections to from: "1.4.0" chore(deps): update dependency apple/swift-collections to from: "1.4.1" Mar 31, 2026
@renovate
renovate Bot force-pushed the renovate/apple-swift-collections-1.x branch from 61eeb9f to a37e8e0 Compare March 31, 2026 16:33
@renovate
renovate Bot force-pushed the renovate/apple-swift-collections-1.x branch from a37e8e0 to e9f854d Compare April 15, 2026 15:44
@renovate
renovate Bot force-pushed the renovate/apple-swift-collections-1.x branch from e9f854d to 7616dbc Compare May 8, 2026 02:57
@renovate renovate Bot changed the title chore(deps): update dependency apple/swift-collections to from: "1.4.1" chore(deps): update dependency apple/swift-collections to from: "1.5.0" May 8, 2026
@renovate
renovate Bot force-pushed the renovate/apple-swift-collections-1.x branch from 7616dbc to d9c360e Compare May 16, 2026 07:38
@renovate renovate Bot changed the title chore(deps): update dependency apple/swift-collections to from: "1.5.0" chore(deps): update dependency apple/swift-collections to from: "1.5.1" May 16, 2026
@renovate
renovate Bot force-pushed the renovate/apple-swift-collections-1.x branch from d9c360e to 68a21b3 Compare May 19, 2026 10:49
@renovate
renovate Bot force-pushed the renovate/apple-swift-collections-1.x branch from 68a21b3 to ae207a4 Compare June 14, 2026 16:16
@renovate renovate Bot changed the title chore(deps): update dependency apple/swift-collections to from: "1.5.1" chore(deps): update dependency apple/swift-collections to from: "1.6.0" Jun 14, 2026
@renovate
renovate Bot force-pushed the renovate/apple-swift-collections-1.x branch from ae207a4 to aab3233 Compare September 27, 2026 00:19
@renovate renovate Bot changed the title chore(deps): update dependency apple/swift-collections to from: "1.6.0" chore(deps): update dependency apple/swift-collections to from: "1.7.1" Sep 27, 2026
@renovate
renovate Bot force-pushed the renovate/apple-swift-collections-1.x branch from aab3233 to 2285b93 Compare October 8, 2026 03:36
@renovate renovate Bot changed the title chore(deps): update dependency apple/swift-collections to from: "1.7.1" chore(deps): update dependency apple/swift-collections to from: "1.7.2" Oct 8, 2026
@renovate renovate Bot changed the title chore(deps): update dependency apple/swift-collections to from: "1.7.2" chore(deps): update dependency apple/swift-collections to from: "1.7.3" Oct 14, 2026
@renovate
renovate Bot force-pushed the renovate/apple-swift-collections-1.x branch from 2285b93 to adc97df Compare October 14, 2026 07:49
@renovate
renovate Bot force-pushed the renovate/apple-swift-collections-1.x branch from adc97df to 36b1377 Compare October 24, 2026 07:32
@renovate renovate Bot changed the title chore(deps): update dependency apple/swift-collections to from: "1.7.3" chore(deps): update dependency apple/swift-collections to from: "1.7.4" Oct 24, 2026
@renovate renovate Bot changed the title chore(deps): update dependency apple/swift-collections to from: "1.7.4" chore(deps): update dependency apple/swift-collections to from: "1.7.5" Oct 30, 2026
@renovate
renovate Bot force-pushed the renovate/apple-swift-collections-1.x branch from 36b1377 to b40e0d5 Compare October 30, 2026 23:37
@renovate
renovate Bot force-pushed the renovate/apple-swift-collections-1.x branch from b40e0d5 to 2f30753 Compare November 11, 2026 04:07
@renovate renovate Bot changed the title chore(deps): update dependency apple/swift-collections to from: "1.7.5" chore(deps): update dependency apple/swift-collections to from: "1.7.6" Nov 11, 2026
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.

0 participants