A Lazy Sequence

Some initial thoughts about distributed actors in Swift 5.7

I'm slowly catching up on some of the videos from WWDC this year. The new distributed actors in swift, which extends the language native actor model implementation (introduced last year) to non-local actors distributed across an arbitrary network, look particularly interesting.

Distributed actors need to operate with a Distributed Actor System; this is essentially a plugable implementation that handles serialization, discovery, networking, etc for a collection of actors. Out of the box only a LocalTesting­Distributed­ActorSystem is provided as of the Swift 5.7 release. The video states that further implementations will be made available in future once they are tested and hardened.

On the one hand, it makes sense to not rush these actor systems, but on the other, I do worry that it’s an indication that perhaps these concepts, and specifically the implementation, have not been properly tested in real world applications before becoming baked into the language, similar to how Apple doesn’t seem to be particularly interested in dogfooding SwiftUI before pushing it out to developers and proclaiming it as the future.

Regardless, I’m excited to see this technology develop. First class distributed actors without having to reach for Erlang and all the complex compromises that choice brings is great.

While it seems that the Sample WebSocket Actor System presented in the video will become a production ready tool in the near future, I also hope we see other production ready Actor Systems made available. As an example, given Apple’s range of platforms, a Personal Area Network Actor System that operated over a combination of bluetooth and wifi covering devices such as Apple Watch, iPhone & iPad, and Mac would be an obvious and useful tool for allowing a developers apps across these device communicate easily and securely in ad hoc ways.

13 June 2022

Code

I’ve written various pieces of software over the years. They are cataloged here along, with their maintenance status.

Tabletop

Like any Tabletop RPG player I occasionally create aids and utilities to support the games in playing at my table. This page collects together various apps, one off pages, and notable blogposts for easy access.

Bookmarks archived

In a former iteration of this site the blog included small posts linking to interesting pages elsewhere on the web. While no longer updated, and the onset of link rot eating away at the links, I’ve kept it up primarily for my own use.