The last two weeks were pretty quiet, but I think it is about to change. I assume we will see a lot going on before the official Apple platform releases. Stay tuned!

Interested in sponsoring Swift Weekly Brief? Learn more here.

Starter tasks

  • SR-13490 [Compiler] compareImports() in ModuleInterfacePrinting.cpp looks buggy

News and community

Ted Kremenek announced the Swift Cluster Membership - a library that aims to help Swift grow in a new space of server applications: clustered multi-node distributed systems.

Google published SwiftLogFireCloud Firebase Extension - a library that can be used as an implementation of Apple’s SwiftLog interface that captures console logs from iOS and, in the future, macOS apps and pushes them to Firebase Cloud Storage as flat files for later review.

Peter Steinberger wrote an article explaining logging in Swift.

Apple posted an article about what’s new in CryptoKit. Great to see that they mention a talk from the community organized conference dotSwift.

Commits and pull requests

Varun Gandhi merged a pull request that adds first a pull request guide and getting started guide.

Saleem Abdulrasool merged a pull request that fixes SR-13449: Wrong method call when binary is built with optimizations.

Owen Voorhees merged a pull request that implements SE-0284: Allow Multiple Variadic Parameters in Functions, Subscripts, and Initializers.

Meghana Gupta merged a pull request that fixes KnownSafety optimization bugs in ARCSequenceOpts.

Proposals in review

SE-0289: Function builders is under review.

This proposal describes function builders, a new feature which allows certain functions (specially-annotated, often via context) to implicitly build up a value from a sequence of components.

Swift Forums

Hassan ElDesouky posted a recap of the Google Summer of Code (GSoC).

ArtemC gave an update on progress on Explicit Module Builds he, Xi_Ge, and Douglas_Gregor have been making.

SwiftPM can now self-host using Explicit Module Builds. The package manager itself is a reasonably complex Swift package, and building it exercises most of the new machinery across the involved components. This was an important milestone for getting the basics of the new compilation flow functional.

Bruno Rocha pitched a proposal about negative version checks.

Negative availability checks are important when an API is completely different across versions. In the case of iOS apps that support Scenes, you need a negative availability check in your AppDelegate to account for the fact that UIWindows should be loaded elsewhere in iOS 13+.

Ray Fix started a discussion about throwing on nil.

I find myself wanting to define an operation that converts failable initializers to throwing ones. When I have a throwing initializer contains multiple failing initializers, I think it improves the clarity and readability.

Ashley Garland asked for feedback on emitting a diagnostic when a public declaration does not have a documentation comment.

Greg Titus pitched a proposal that would make LazyMapCollections use the Sequence behavior for prefix calls, rather than the Collection behavior.

John McCall started a discussion on how to represent async/await in SIL.

Alessio Buratti asked a question of why @usableFromInline is preferred to private.

This is a great question! To answer it thoroughly we need to take a digression into the Swift optimiser and optimisation boundaries, but the TL;DR is that @usableFromInline is required to make substantial chunks of NIO perform better.

Danny Sung posted news about the Kitura migration to a GitHub organization.

Jordan Rose asked a question: Are non-homogeneous tuples guaranteed to use the in-order, rounding-up layout that frozen structs on Apple platforms use?

Finally

Swifty Good vibes.