apple / swift-collections

Commonly used data structures for Swift
Apache License 2.0
3.55k stars 270 forks source link

Ship release 1.0.6 #344

Closed lorentey closed 4 months ago

lorentey commented 4 months ago

We should tag a new release that ships changes that recently landed on the release/1.0 branch.

The Sendable conformances from #317 are particularly important for clients.

lorentey commented 4 months ago

Candidate commit:

Diff: https://github.com/apple/swift-collections/compare/1.0.5...release/1.0

Given the sheer number of supported Swifts, I'll only be doing a tiny fraction of the full pre-release test matrix.

I'll skip Windows testing; I trust that the CMake build results on macOS & Linux indicate that Windows will pass too.

Testing progress:

macOS/AS

macOS/x86_64

Linux/Aarch64

Linux/x86_64

Windows 10/x86_64

(Note: I expect most of this matrix will remain untested in this tag.)

lorentey commented 4 months ago

The 1.0.5..release/1.0 diffs look alright. I just want to look at some older Swifts on Linux before going ahead with the tag.

lorentey commented 4 months ago

Swift 5.3 doesn't like @unchecked Sendable:

  [83/92] Compiling OrderedCollections _UnsafeBitset.swift
  /source/swift-collections/Sources/OrderedCollections/OrderedSet/OrderedSet+Sendable.swift:12:24: error: unknown attribute 'unchecked'
  extension OrderedSet: @unchecked Sendable where Element: Sendable {}
                         ^
  /source/swift-collections/Sources/OrderedCollections/OrderedSet/OrderedSet+Sendable.swift:12:58: error: cannot find type 'Sendable' in scope
  extension OrderedSet: @unchecked Sendable where Element: Sendable {}
                                                           ^~~~~~~~
  /source/swift-collections/Sources/OrderedCollections/OrderedSet/OrderedSet+Sendable.swift:12:34: error: cannot find type 'Sendable' in scope
  extension OrderedSet: @unchecked Sendable where Element: Sendable {}
                                   ^~~~~~~~
lorentey commented 4 months ago

Heh, that's because OrderedSet's conformance doesn't have the usual condition around it: 🤦‍♂️

extension OrderedSet: @unchecked Sendable where Element: Sendable {}
lorentey commented 4 months ago

Fix landed in #346. Resuming tests without retrying previously successful runs. (I'm assuming the new change will not break those.)

lorentey commented 4 months ago

The CMake config appears to be missing a source file, and it leads to errors on 5.5+:

[04 cmake.build-with-ninja] ninja -C /tmp/run-full-tests.sh.s3YVt/cmake
  Failed in 2s. See /tmp/run-full-tests.sh.s3YVt/04.cmake.build-with-ninja.log for full console output.
      internal var _base: OrderedDictionary
                   ^
  /source/swift-collections/Sources/OrderedCollections/OrderedDictionary/OrderedDictionary+Elements+SubSequence.swift:95:18: error: stored property '_base' of 'Sendable'-conforming struct 'Iterator' has non-sendable type 'OrderedDictionary<Key, Value>'
      internal var _base: OrderedDictionary
                   ^
  /source/swift-collections/Sources/OrderedCollections/OrderedDictionary/OrderedDictionary+Elements.swift:18:18: error: stored property '_base' of 'Sendable'-conforming struct 'Elements' has non-sendable type 'OrderedDictionary<Key, Value>'
      internal var _base: OrderedDictionary
                   ^
  [2/3] Linking Swift static library lib/libDequeModule.a
  ninja: build stopped: subcommand failed.

It's quite embarrassing that I haven't caught this on arm64 🤔

lorentey commented 4 months ago

Huh, curiously it did succeed there:

[03 cmake.generate] cmake -S . -B /tmp/run-full-tests.sh.8aG9s/cmake -G Ninja
  Completed in 4s
[04 cmake.build-with-ninja] ninja -C /tmp/run-full-tests.sh.8aG9s/cmake
  Completed in 6s
lorentey commented 4 months ago

Ah, this is only a problem on 5.5. Evidently the conformances are inferred in 5.6+? Weird.

lorentey commented 4 months ago

347 resolves this issue. Restarting full tests on x86_64/Ubuntu focal, incl. previously successful runs.

lorentey commented 4 months ago

OK, this is ready to go.

I think I'll forgo pre-announcing the new release; it seems unlikely we'd get any actual feedback even if something broke, and I don't want purely ceremonial delays.

lorentey commented 4 months ago

The release is out now: https://github.com/apple/swift-collections/releases/tag/1.0.6