This week brought us Xcode 7.3 beta2 — the first official Xcode release that bundles Swift 2.2 and includes contributions from the Swift.org open source community! I never thought I would see release notes like this. It really is incredible to see community-driven changes in the What’s New sections with links to GitHub. Clearly, the next big step for Apple should be open sourcing Xcode. 😉

Repositories

Did you notice the new swift-integration-tests repository on GitHub? According to the history it looks like this repo has been around since the initial open source announcement, but until now has been private. As you might guess, it includes tests. More specifically, “Automated tests for validating the generated Swift snapshots behave correctly”.

Slightly related, you may also have noticed that there’s a new CI bot in town. (Seems legit)

But wait, there’s more!

Another new repository appeared over the past week, swift-internals. It contains this site. According to the welcome page, the site “hosts internal documentation for the Swift compiler and standard library, as well as the development version of the Swift API Guidelines.”. 😦 Unfortunately, it only contains the API guidelines at the moment. Documentation for the Swift compiler sounds like it would be great for contributors. Also, does this mean Nate Cook can shutdown SwiftDoc.org? 😄

Commits and pull requests

Doug Gregor started and finished implementing proposal SE-0021, “Naming Functions with Argument Labels”.

Doug Gregor also implemented SE-0022, “Referencing the Objective-C selector of a method”. (Yes, it was accepted.) No more stringly-typed Objective-C selectors! I enjoyed the live tweeting experience. 😂 You can check out the commits here: dccf315, 7c0e087, 89834f8, f7407f6.

Greg Titus improved quality of diagnoses messages, and has generally been on a roll with pull requests. 👏

Brian Gesiak submitted a pull request that implements the asynchronous testing API in corelibs-xctest. It mirrors the Objective-C XCTest API, adding the familiar methods expectationWithDescription() and waitForExpectationsWithTimeout().

Nate Cook added an in-place merge sort to the standard library. From the description: “This sort algorithm is both stable and offers a significant speed increase (1.5x-10x or more) in many common sorting scenarios.” 😎

William Dillon added support for ARMv6 (original Raspberry Pi) and fixed some ARMv7 bugs.

@tinysun212 started a port to cygwin.

Brian Croom submitted a pull request to corelibs-xctest to discuss compatibility between Darwin XCTest and corelibs-xctest.

Proposals

Erica Sadun has proposed to “Eliminate Swift’s Screaming Snake Case Identifiers” and thus say goodbye to another vestige of C. (Proposal here)

This proposal aims to eliminate Swift’s screaming snake case like __FILE__ and __FUNCTION__ and replacing instances with a common octothorpe-prefixed lower camel case #sourceLocation representation.

The proposal SE-0013, “Remove Partial Application of Non-Final Super Methods”, has been rejected.

The following three proposals are now under review. These proposals are related and thus the reviews are running concurrently:

  • SE-0023, API Design Guidelines
  • SE-0006, Apply API Guidelines to the Standard Library
  • SE-0005, Better Translation of Objective-C APIs Into Swift

Mailing lists

Nicole Jacque notes that there is a new snapshot naming format. From now on, development version snapshots will begin with swift-DEVELOPMENT-SNAPSHOT to clearly distinguish between release snapshots.

Dmitri Gribenko investigated and greatly reduced StdlibUnittest build time. StdlibUnittest is an internal library that is used to write tests for the stdlib, parts of the runtime, and the compiler.

But there is an issue: today, StdlibUnittest takes a long time to build. […]

These time measurements show that the build time of the combined module is greater than the sum of the build times of the pieces, and much more so when the optimization is turned on. We can make a conjecture that the optimizer is not scaling well with the module size.

Finally

And finally — if you feel like Swift is changing too fast or if you are simply interested in trying something new, may I suggest TrumpScript? 😂 Let’s make programming great again.™