<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hi Chris,<div class=""><br class=""></div><div class="">This is fantastic! &nbsp;Thanks for taking the time to write down your thoughts. &nbsp;It’s exciting to get a glimpse at the (possible) road ahead.</div><div class=""><br class=""></div><div class="">In the manifesto you talk about restrictions on passing functions across an actor message. &nbsp;You didn’t discuss pure functions, presumably because Swift doesn’t have them yet. &nbsp;I imagine that if (hopefully when) Swift has compiler support for verifying pure functions these would also be safe to pass across an actor message. &nbsp;Is that correct?</div><div class=""><br class=""></div><div class="">The async / await proposal looks very nice. &nbsp;One minor syntax question - did you consider `async func` instead of placing `async` in the same syntactic location as `throws`? &nbsp;I can see arguments for both locations and am curious if you and Joe had any discussion about this.</div><div class=""><br class=""></div><div class="">One related topic that isn’t discussed is type errors. &nbsp;Many third party libraries use a Result type with typed errors. &nbsp;Moving to an async / await model without also introducing typed errors into Swift would require giving up something that is highly valued by many Swift developers. &nbsp;Maybe Swift 5 is the right time to tackle typed errors as well. &nbsp;I would be happy to help with design and drafting a proposal but would need collaborators on the implementation side.</div><div class=""><br class=""></div><div class="">Matthew</div><div class=""><br class=""></div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Aug 17, 2017, at 5:25 PM, Chris Lattner via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div class=""><blockquote type="cite" class=""><div class="">On Aug 17, 2017, at 3:24 PM, Chris Lattner &lt;<a href="mailto:clattner@nondot.org" class="">clattner@nondot.org</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">Hi all,<br class=""><br class="">As Ted mentioned in his email, it is great to finally kick off discussions for what concurrency should look like in Swift. &nbsp;This will surely be an epic multi-year journey, but it is more important to find the right design than to get there fast.<br class=""><br class="">I’ve been advocating for a specific model involving async/await and actors for many years now. &nbsp;Handwaving only goes so far, so some folks asked me to write them down to make the discussion more helpful and concrete. &nbsp;While I hope these ideas help push the discussion on concurrency forward, this isn’t in any way meant to cut off other directions: in fact I hope it helps give proponents of other designs a model to follow: a discussion giving extensive rationale, combined with the long term story arc to show that the features fit together.<br class=""><br class="">Anyway, here is the document, I hope it is useful, and I’d love to hear comments and suggestions for improvement:<br class=""><a href="https://gist.github.com/lattner/31ed37682ef1576b16bca1432ea9f782" class="">https://gist.github.com/lattner/31ed37682ef1576b16bca1432ea9f782</a><br class=""></div></div></blockquote></div><br class=""><div class="">Oh, also, one relatively short term piece of this model is a proposal for adding an async/await model to Swift (in the form of general coroutine support). &nbsp;Joe Groff and I wrote up a proposal for this, here:</div><div class=""><div class=""><a href="https://gist.github.com/lattner/429b9070918248274f25b714dcfc7619" class="">https://gist.github.com/lattner/429b9070918248274f25b714dcfc7619</a></div><div class=""><br class=""></div><div class="">and I have a PR with the first half of the implementation here:</div><div class=""><a href="https://github.com/apple/swift/pull/11501" class="">https://github.com/apple/swift/pull/11501</a></div><div class=""><br class=""></div></div><div class="">The piece that is missing is code generation support.</div><div class=""><br class=""></div><div class="">-Chris</div><div class=""><br class=""></div></div>_______________________________________________<br class="">swift-evolution mailing list<br class=""><a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a><br class="">https://lists.swift.org/mailman/listinfo/swift-evolution<br class=""></div></blockquote></div><br class=""></div></body></html>