Introducing Swift Distributed Actors

Announced today on the Swift.org blog:

We’re thrilled to announce a new open-source package for the Swift on Server ecosystem, Swift Distributed Actors, a complete server-oriented cluster library for the upcoming distributed actor language feature!

Please check out the blog post for details, or go right to the repository!

Questions on the blog post can be asked here!

CC @ktoso

44 Likes

This looks amazing. Great job to all involved!

3 Likes

Do we foresee this pattern used to wrap a typical REST API where the Distributed Actor Transport is via a REST call?

I really hope not, that sounds awful, and the industry already tried it and discarded it years ago.

1 Like

(Distributed) Actor systems are not really great at, or intended to, solve public facing APIs such as REST APIs, since they require more tight control of the formats and versioning etc.

We do have to solve versioning as well, but the nature of those systems is that they're stateful makes it more complicated. Usually they're good in environments "within" a service, where you have more control over when you can remove e.g. a deprecated function, once you know all peers using it have been decomisioned.

I'm aware of pains involved in rollouts in stateful systems, and yes this is a typical pain in such clusters, but it's managable when done carefully.

They're best in systems where you own both ends, and can control rollouts.
It's also fine for not everything to be distributed actors, that's just fine.

8 Likes

Would be cool if you could use swift distributed actors on Apple OS with XPC, built right in, and if you specify, have a single executor for your "remote XPC service" and flip the runtime in single threaded mode, and turn off atomic ARC for performance.

4 Likes