[swift-evolution] [Concurrency] A slightly different perspective

Jonathan Hull jhull at gbis.com
Sun Sep 3 19:01:03 CDT 2017


> On Sep 3, 2017, at 9:04 AM, Chris Lattner via swift-evolution <swift-evolution at swift.org> wrote:
>> On Sep 3, 2017, at 4:00 AM, David Hart <david at hartbit.com <mailto:david at hartbit.com>> wrote:
>>> Please don’t read too much into the beginAsync API.  It is merely a strawman, and intended to be a low-level API that higher level abstractions (like a decent futures API) can be built on top of.  I think it is important to have some sort of primitive low-level API that is independent of higher level abstractions like Futures.
>>> 
>>> This is all a way of saying “yes, having something like you propose makes sense” but that it should be part of the Futures API, which is outside the scope of the async/await proposal.
>> 
>> But it would be nice for all high-level APIs that conform to a Awaitable protocol to be used with await without having to reach for a get property or something similar everytime.
> 
> The futures API that is outlined in the proposal is just an example, it isn’t a concrete pitch for a specific API.  There are a bunch of improvements that can (and should) be made to it, it is just that a futures API should be the subject of a follow-on proposal to the basic async/await mechanics.

Would it be possible to have the manifesto be a series of proposals then?  I really think it is important for us to look at how all of these things fit together.  I agree that async/await should come first, but looking at how concrete things like Futures would work may help to inform the design of async/await.  We should do the back-propigation in our design before anything is locked in...

The thing I would most like to see as a quick follow-on to async/await is the ability to use the ‘async’ keyword to defer ‘await’. This feels very natural, is highly optimizable by the compiler, and it allows for a lot of very common use-cases which are not covered well by pure async/await.  I think it would have a large impact on the eventual design/implementation of futures (and at least some impact on the design of async/await).

Thanks,
Jon
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170903/a14b14b0/attachment.html>


More information about the swift-evolution mailing list