Xcode 8.2 beta was released. It is the final release to support Swift 2.3. Good Luck migrating if you haven’t yet! Other than this, Xcode 8.2 still bundles Swift 3.0.1 and the only other notable changes are SDK updates for the new MacBook Pro Touch Bar.

Starter tasks

  • SR-3115: [SPM] Document swift package edit
  • SR-2948: [Compiler] Discarding a closure from a @discardableResult function results in a compile error.
  • SR-2475: Warn about unlabeled parameters following a variadic parameter

Submit a task by sending a pull request or a tweet.

News and community

Ole Begemann wrote an article, How to Read the Swift Standard Library Source, where he explains how to checkout and build Swift, and gives tips for digging into the source. This is a great way to get started with Swift, especially if you’ve been confused by .gyb files.

Brian Gesiak wrote a post on swift-llvm and swift-clang, explaining why Apple released custom forks of LLVM and clang, and what they contain that the upstream repositories do not.

Brian Gesiak got Swift building on CentOS.

Scriptarian is a new Mac app that allows users to automate macOS and any AppleScript-enabled app with Swift.

Commits and pull requests

@practicalswift added a number of new compiler crashers, bringing to total number of unresolved crashers to 96. (5180 have been resolved.)

Thomas Catterall implemented CustomReflectable for Notification in corelibs-foundation.

@airspeedswift opened a pull request to resolve 3 ABI FIXME’s. This change collapses the two versions Array.append(contentsOf:), one that takes a sequence and one that takes a collection. There’s some interesting background in the description, too.

Proposals in review

Proposal SE-0145: Package Manager Version Pinning from Daniel Dunbar, Ankit Aggarwal & Graydon Hoare is under review.

This is a proposal for adding package manager features to “pin” or “lock” package dependencies to particular versions.

Mailing lists

David Goodine started a thread discussing the guard and unwrapping syntax, specifically how it can be verbose and redundant. Chris Lattner suggested a new keyword, unwrap, which would change guard let foo = foo else { } to guard unwrap foo else { }. Erica Sadun has drafted a proposal in this gist. There’s been a lot of feedback so far, and Erica is continuing to revise the proposal.

Finally

And finally — map, filter, reduce. 😂