Issue #156 26 Mar 2020
Written by: Kristaps Grinbergs
A note from Bas on the #IndieSupportWeeks
While some of you might have heard about the #IndieSupportWeeks, many of you might not have.
It's an effort aimed at helping indie developers within the Apple Developer Community who have been financially impacted by the current global COVID-19 pandemic.
Curating this newsletter, it was an obvious decision to take part in this effort, and to highlight some indie apps in this issue. Do check them out, as well as all other awesome apps on the list.
If you decide to check out any of the apps — or to buy them — please also share it with the world using the #IndieSupportWeeks hashtag!
On behalf of all indie developers, thank you for the support!
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.
Indie Support Weeks #IndieSupportWeeks
Secrets — Your Friendly Password Manager
Just this year over 60M accounts have been exposed due to service breaches. Reusing passwords greatly increases your risk of getting hacked. Take some time during this lockdown to make sure you’re using strong and unique password on all the services you use, and securely store them in a password manager such as Secrets. Stay safe IRL and online!
outercorner.com/secrets or download directly on the App Store
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.
Indie Support Weeks #IndieSupportWeeks
Stay focused with Timeless
Timeless is a subtle clock replacement. It helps you feel less anxious about the time and more focused on how you should be spending it. Try Timeless today.
usetimeless.app or download directly on the App Store
Swift Forums
Maksim Kita pitched a proposal to introduce a Circular Buffer
.
Introduce the
CircularBuffer
collection type conforming to theRandomAccessCollection
,RangeReplaceableCollection
andMutableCollection
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"
=> 2There 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 staticmain()
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.
Indie Support Weeks #IndieSupportWeeks
Sundial - Solar & Lunar Times and Alerts
Sundial provides essential sun and moon data in a compact, beautiful display. Create alerts for 24 solar/lunar events. Want to be notified 30 minutes before sunset to take the dog out for a walk? Piece of cake. Need an alert the day before full/new moon to take rest for Ashtanga yoga? No problem. For iPhone, iPad, and Apple Watch.
sundialapp.com or download directly on the App Store
Finally
Here’s a great way to print a comma-separated list.