Swift Concurrency Manifesto

[)roi(]

Executive Member
Joined
Apr 15, 2005
Messages
6,282
Reaction score
405
Location
ッ
Swift has finally matured enough to tackle the subject of enhanced concurrency language features. In this regard the language author; Chris Lattner has drafted the 1st revision of what these enhanced features could be and how they would functional internally with Swift, interoperable with C and Objective-C API and Automatic Reference Counting (ARC).

Concurrency manifesto:
  • This document covers the broader topic of adding task based concurrency as a first class inclusion to the language; that being not only the implementation of these concurrency enhancements, but also to how they would syntactically integrate in the language, how they would work with ARC and the C / Objective-C interops.
  • Primary focus areas are; asynchronous control flow, message passing and data isolation & distributed data and compute -- the key exclusion for the moment being data paralleism (yet some ideas on that are discussed in part 5)
  • Two key implementations are envisaged;
    • Asynchronous control flow to follow the C# Async / Await approach with the exception that the return types are not wrapped up as Futures (C# calls its Future's implementation: Tasks) i.e. function returns type to remain unchanged. Whereas a Future type is seen to be a separate feature; but the discussion does extend to how this could be incorporated as a language feature; but it's not a priority as Swift already has many 3rd party / Opensource implementations of this and more.
    • The second relates message passing, data isolation and distributed data & compute. In that area it is envisaged to follow the Actor model which is not only a deeply researched area, but has many successful implementations from which ideas can be adapted / improved upon; for example: in Erlang, Scala & Pony. This will venture into both interprocess communication and distributed computing.
Async / Await Proposal:
  • In addition to the manifesto, a proposal has been drafted for task based async control flow: Async / Await -- which could imply implementation in the latter part of this year as part of the Swift 5 roadmap.
Btw the discussions / debates on these topics will as usual follow on Swift evolution mail list (soon to move to discourse) -- it's open forum where everyone can raise new proposals, ask questions, propose changes, syntactic alternatives, etc... You'll find all the details on https://swift.org

Note: click on the headings for links to the proposals
 
Last edited:
Top
Sign up to the MyBroadband newsletter
X