Skip to content

Enable swift-collections' UnstableContainersPreview trait and pin it to 1.6.0 - #191

Merged
FranzBusch merged 1 commit into
apple:mainfrom
inductor:enable-unstable-containers-preview-trait
Sep 29, 2026
Merged

FranzBusch merged 1 commit into
apple:mainfrom
inductor:enable-unstable-containers-preview-trait

Conversation

@inductor

@inductor inductor commented Sep 29, 2026 •

Copy link
Copy Markdown
Member

Motivation

HTTPAPIs imports ContainersPreview and uses its container protocols, which need swift-collections' UnstableContainersPreview trait. This package doesn't enable the trait itself. It only builds because swift-async-algorithms enables it indirectly, and that has been failing for some consumers.

Also, swift-collections isn't pinned (from: "1.6.0"), so CI resolves 1.7.x, where swift-async-algorithms 1.1.5 fails to build (value of type 'UniqueDeque<Element>?' has no member 'borrow'). main has been failing for this reason since 1.7.0.

Modifications

Enable the UnstableContainersPreview trait on swift-collections and pin it with exact: "1.6.0". Like swift-async-algorithms and async-http-client, it now uses an unstable trait whose API can change in any release.

Result

The package declares the trait it relies on, and CI builds again.

Test Plan

Builds and tests pass on Linux with Swift 6.4.

@inductor
inductor force-pushed the enable-unstable-containers-preview-trait branch from 0f528ba to ab819a1 Compare September 29, 2026 06:57
@inductor inductor changed the title Enable swift-collections' UnstableContainersPreview trait Enable swift-collections' UnstableContainersPreview trait and pin it to 1.6.0 Sep 29, 2026
@czechboy0

Copy link
Copy Markdown
Contributor

Did you try with 1.7.1 or is the pinning still needed even with it?

https://github.com/apple/swift-collections/releases/tag/1.7.1

@guoye-zhang

Copy link
Copy Markdown
Collaborator

Let's bump the async-algos version since this was fixed: apple/swift-async-algorithms#456

@guoye-zhang guoye-zhang added the 🔨 semver/patch No public API change. label Sep 29, 2026

@FranzBusch FranzBusch left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks. That will keep this more stable for now

@FranzBusch

Copy link
Copy Markdown
Member

Merging over the failure since that is unrelated and because of something in swift-async-algos

@FranzBusch
FranzBusch merged commit 38efc31 into apple:main Sep 29, 2026
15 of 20 checks passed
@FranzBusch

Copy link
Copy Markdown
Member

Sorry I just saw your two comments @czechboy0 and @guoye-zhang. @inductor can you do those in a follow up.

@inductor

Copy link
Copy Markdown
Member Author

I’ll make a new PR!

@inductor
inductor deleted the enable-unstable-containers-preview-trait branch September 29, 2026 08:29
@inductor

Copy link
Copy Markdown
Member Author

@czechboy0 Yes, I tried 1.7.1 but didn't work as expected on this configuration.
I will try @guoye-zhang 's suggestion

@inductor

Copy link
Copy Markdown
Member Author

Let's try to update swift-collections to 1.7.x after apple/swift-async-algorithms#459

FranzBusch pushed a commit that referenced this pull request Oct 5, 2026
…#193)

### Motivation

Follow-up to #191. As suggested there, we should move
swift-async-algorithms past 1.1.5, which doesn't build against
swift-collections 1.7.x (apple/swift-async-algorithms#455).

swift-async-algorithms 1.1.6 and later require swift-collections `from:
"1.7.0"`, so swift-collections has to move too. In swift-collections
1.7.x the container protocols require 27.0 on Apple platforms
(`SwiftStdlib 6.4`). With swift-async-algorithms 1.1.6 that breaks the
AsyncStreaming build on Apple platforms, and 1.1.7
(apple/swift-async-algorithms#459) fixes it by raising AsyncStreaming's
availability to 27.0. Since `HTTPAPIs` is built on AsyncStreaming, its
availability has to be raised to 27.0 as well.

### Modifications

- Raised every `@available(anyAppleOS 26.0, *)` in Sources, Tests and
Examples to `@available(anyAppleOS 27.0, *)`.
- Updated swift-collections to `exact: "1.7.1"` and
swift-async-algorithms to `exact: "1.1.7"`. Both stay pinned with
`exact` since their unstable traits can change in any release.
- Re-exported `SpanPreview` from `HTTPAPIs` alongside
`ContainersPreview`, since swift-collections 1.7 moved `span` into
`SpanPreview`.
- Updated the swift-http-server submodule to include
swift-server/swift-http-server#143, which raises its availability to
27.0 in the same way.

### Result

The package builds against swift-collections 1.7.1 and
swift-async-algorithms 1.1.7. All APIs now require 27.0 on Apple
platforms.

### Test Plan

Builds and tests pass on macOS and on Linux.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🔨 semver/patch No public API change.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants