Publish which bug fixes actually land in the version of Swift bundled with any given Xcode release

I often come across bug tickets like this one, and anxiously await the release of their fixes. But there isn't anywhere that I can find where there's a comprehensive list of all the Swift bug fixes that actually ship with the version of Swift that gets bundled with any given Xcode release. It's my understanding that the open-source releases of "Swift v.N" don't necessarily correspond, commit-for-commit, with the "Swift v.N" as announced in the release notes for new Xcode releases.

I understand that Swift isn't intended solely for use with Xcode. But in practice, Xcode is the de facto official IDE for many Swift developers. So much so that, for example, the claim that "we're using Swift 5 now" is very often equivalent to saying "we're using Xcode 10.2 with the Swift compiler version bumped to 5."

Given how central Xcode is to real-world use of Swift, and how tightly integrated Xcode releases are with Swift compiler releases, there should be a way -- a web page, a README, a tag on the bug tracker site, etc. -- a way to see which specific tasks, referenced by an SR-NNNN ticket number or a link to said ticket, actually ship with the Swift version bundled with Xcode.

1 Like

That information can often be found in the Xcode release notes. In your case the Swift 5 Release Notes for Xcode 10.2:

  • Extension binding now supports extensions of nested types which themselves are defined inside extensions. Previously this could fail with some declaration orders, producing spurious “undeclared type” errors. (SR-631) (20337822)

I doesn't work the other way, though. If I have an SR number I can't find out for sure which Xcode release it got bundled with.

2 Likes

Fair point. In practice, the Apple Swift vN releases are almost always supersets of the public Swift vN tags (for example, including support for the experimental "arm64e" slice), but that's not a contract. Still, since not every SR is fixed by someone at Apple, I'm not quite sure how we Apple folks would do this.

Note that those release notes don't even specify what version of Swift is included in Xcode 10.2.

I had been under the impression that the released version of 10.2 was Swift 5.1 and couldn't understand why Self wasn't working for me. It was surprisingly hard to determine what the minor version was supposed to be. In the end, I had to write test code with #if swift(>=5.1).

You can always check that with xcrun swiftc -version.

EDIT: …though I guess Apple has set a bad precedent by using its own version numbers for Clang that don't match up with the LLVM project releases. Swift's are currently in sync.

3 Likes