Issue #168 10 Sep 2020
Written by: Kristaps Grinbergs
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()
inModuleInterfacePrinting.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?