Apple announced that WWDC 2020 will be an online-only event, and many of us are learning how to work remotely from our homes while we cope with the on-going health crisis. I hope everyone is staying safe.

Meanwhile, Swift 5.2 has been officially released with Xcode 11.4. So take a break from the news and spend some time updating your projects!

Podcasts

In episode 69 of the Swift by Sundell podcast, Holly Borla and Grace Kendall, both software engineers at Apple, join John Sundell to take a deep dive into the Swift Playgrounds app and Swift 5.2’s new diagnostics engine.

News and community

Apple announced WWDC 2020 will be a completely online experience this year.

Apple released Swift 5.2 and announced Xcode 11.4.

Nicole Jacque wrote a blog post about Swift 5.3 release process.

Paul Hudson wrote an article explaining what’s new in Swift 5.2.

Federico Zanetello wrote two articles, one about the new ArgumentParser, and another about Swift Executables Progress State. He also created a presentation about new features in Swift 5.2.

A great talk was shared about Swift for TensorFlow which would normally have been given at TF Dev Summit.

The Ray Wenderlich folks wrote a great tutorial on how to get started with SwiftNIO.

Bruno Rocha wrote an article about useful global Swift functions.

Commits and pull requests

Slava Pestov merged a pull request that fixes unapplied references to protocol methods, which was one of the oldest and most highly duped bugs ever. 😱

Pavel Yaskevich merged a pull request created by Luciano Almeida that resolves SR-12382 and improves the diagnostic for type mismatches in pointer conversion to double optionals.

Doug Gregor merged a pull request that fixes handling of @autoclosure in init(wrappedValue:).

Luciano Almeida merged a pull request that fixes SR-11540 by just disfavoring overloads to closures with anonymous var that are function types with more than one argument that matches arguments of function types without arguments.

Swift Forums

Maksim Kita pitched a proposal to introduce a Circular Buffer.

Introduce the CircularBuffer collection type conforming to the RandomAccessCollection, RangeReplaceableCollection and MutableCollection protocols. With random element access and support for constant back and forth element insertion and deletion.

Swift currently does not have collection with both element random access and constant O(1) elements back and front insertion and deletion. A good usage examples for such collection are queue, deque, fixed length buffers. Such abstractions cannot effectively be build on Array because of O(n) first element deletion.

Aamir Nazir opened a discussion about counting occurrences of a substring in a string.

Given the fact that Swift String class doesn’t has any method for counting occurrences of a substring in a string. i.e Counting occurrences of "Swift" in "Hello Swift Swift" => 2

There are many alternatives available for counting occurrences of substring but I think it would be more intuitive if we add support of counting occurrences of a substring in a string.

Nate Cook pitched an idea to add a new attribute that you can use to designate a type that provides the entry point for a Swift program.

This is a generalization of the @UIApplicationMain and @NSApplicationMain attributes that have been in Swift from the beginning, making that specialized behavior available to any library or framework.

The Swift compiler will recognize a type annotated with the @main attribute as providing the entry point for a program. Types marked with @main have a single implicit requirement: declaring a static main() method.

Tom Doron shared meeting notes for the Swift on the Server Workgroup March 4th, 2020 meeting.

Karoy Lorentey pitched an idea about Low-Level Atomic Operations.

Here is a pitch for adding a limited set of low-level atomic operations to the Standard Library, including native spellings for C++-style acquire-release memory orderings. Our goal is to enable intrepid library authors to start building synchronization constructs directly in Swift.

This means we must start talking about how these things will work in Swift – in other words, we need to start working on a concurrency memory model. Given that Swift already interoperates with the C/C++ memory model, it seems like a good idea to use that as a starting point.

Saleem Abdulrasool shared an update on the new Swift Installer for Windows.

Cal Stephens started a discussion about how to add a new CodingKeyPath type that allows consumers to key into nested objects using dot notation.

Today, encoding and decoding Codable objects using the compiler’s synthesized implementation requires that your object graph has a one-to-one mapping to the object graph of the target payload. This decreases the control that authors have over their Codable models.

I propose that we add a new CodingKeyPath type that allows consumers to key into nested objects using dot notation.

Hassan ElDesouky started a discussion about creating a Swift contribution starter guide. Previously, he gathered materials of important talks and articles for first time contributors.

Tanner Nelson shared the news of the official release of Vapor 4.

Finally

Here’s a great way to print a comma-separated list.