Chris, Susan, fwiw, this looks pretty similar to how we have Iterators as extension on our Swift compiler: http://docs.elementscompiler.com/Silver/LanguageExtensions/Iterators/. Looking forward to (something like) this becoming part of official Swift — the more custom extensions we can get rid of, the better ;).
—marc > On Dec 22, 2015, at 6:13 PM, Chris Lattner via swift-evolution > <[email protected]> wrote: > > Hi Susan, > > As I mentioned on your original pull request, coroutines are closely related > to async and other concurrency forms. That entire space is out of scope for > Swift 3, so we should wait until fall 2016 to pick up discussion on this and > related topics. > > -Chris > >> On Dec 22, 2015, at 12:16 PM, Andrew Bennett via swift-evolution >> <[email protected]> wrote: >> >> Hi Daniel, >> >> I've heard many great things about goroutines, and I definitively think >> their advantages should be considered in the design of Swift's concurrency. >> >> I haven't used goroutines much so I may be incorrect, but I don't think they >> can be used to efficiently represent a generator like the proposal suggests. >> >> The generator described in the proposal has the following properties: >> * it is basically just syntactic sugar >> * new elements are generated lazily >> * the length doesn't need to be known at initialisation >> * it uses existing function syntax in the caller >> * it can all run on one thread >> * concurrency considerations may be limited to safely updating the state >> variable from more than one thread >> >> Maybe goroutines can be equivalent if the compiler can optimise it down to a >> generator. This proposal is basically syntactic sugar to concisely define a >> generator. Goroutines probably aren't a concise replacement for that sugar. >> >> >> On Wednesday, 23 December 2015, Daniel Valls Estella <[email protected]> >> wrote: >> >> Ok, >> >> But I think goroutines are not really threads (are faster and cheaper >> enought to make a diference) and channels are more like filedescriptors than >> signals, you stream data throught these. >> >> Thanks for your answer! >> >> Daniel >> >> Daniel Valls Estella · tel. 659.910.830 · [email protected] >> >>> El 22 des 2015, a les 11:50, Susan Cheng <[email protected]> va >>> escriure: >>> >>> It's a little difference with goroutine. Go using threads and signal. >>> My implementation is following C# methods that MS staff tells me. >>> >>> Daniel Valls Estella <[email protected]> 於 2015年12月22日星期二 寫道: >>> I think it’s better to take as a reference the Go language and his >>> goroutines and channels. >>> >>> Not just to face these type of problems but also to take new architectural >>> aproches to build software solutions. >>> >>> >>> refs: >>> >>> https://tour.golang.org/concurrency/1 >>> https://tour.golang.org/concurrency/2 >>> https://tour.golang.org/concurrency/5 >>> https://youtu.be/f6kdp27TYZs >>> >>> >>> What you think? >>> >>> Daniel >>> >>> Daniel Valls Estella · tel. 659.910.830 · [email protected] >>> >>>> El 22 des 2015, a les 8:33, Andrew Bennett via swift-evolution >>>> <[email protected]> va escriure: >>>> >>>> Great proposal! I'm all for this, I think your proposed implementation is >>>> pretty good too. >>>> >>>> It would be interesting to expand the proposal to consider more cases in >>>> more detail: >>>> * Concurrency >>>> * SequenceType versus GeneratorType >>>> * Should a language feature depend on the Standard Library >>>> (GeneratorType)? Alternatives: >>>> + func myFunction -> () -> T? >>>> + func myFunction -> () -> (myFunction_State, myFunction_State -> T?) >>>> * What happens if you write: guard ... else { yield ... } >>>> * Use an enum for the state that encapsulates all possible variables in >>>> each state >>>> >>>> If you're not familiar with it, there's another thread that discussed >>>> similar here: >>>> https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20151207/001872.html >>>> >>>> In particular you may be interested in Chris Lattner's comment: >>>> I’m very interested in this, but it is clearly out of scope for Swift 3. >>>> It should also be considered alongside whatever async/concurrency approach >>>> we tackle (likely in swift 4). >>>> >>>> Either way it's worth discussing and working towards :) >>>> >>>> On Tue, Dec 22, 2015 at 6:03 PM, Félix Cloutier >>>> <[email protected]> wrote: >>>> There's probably some additional work to do on the proposal document, but >>>> I would like to see coroutines in Swift too. The feature has been very >>>> successful in other languages like Python and C#, and unless I'm mistaken, >>>> work is being done to standardize it in C++. >>>> >>>> Generators are one use case, but resumable functions in general can also >>>> be used to make async code look prettier. >>>> >>>> Félix >>>> >>>>> Le 22 déc. 2015 à 01:47:05, Susan Cheng via swift-evolution >>>>> <[email protected]> a écrit : >>>>> >>>>> here is my proposal for swift lang >>>>> >>>>> https://github.com/SusanDoggie/swift-evolution/blob/master/proposals/0018-coroutine-for-swift.md >>>>> _______________________________________________ >>>>> swift-evolution mailing list >>>>> [email protected] >>>>> https://lists.swift.org/mailman/listinfo/swift-evolution >>>> >>>> >>>> >>>> _______________________________________________ >>>> swift-evolution mailing list >>>> [email protected] >>>> https://lists.swift.org/mailman/listinfo/swift-evolution >>>> >>>> >>>> _______________________________________________ >>>> swift-evolution mailing list >>>> [email protected] >>>> https://lists.swift.org/mailman/listinfo/swift-evolution >>> >> >> _______________________________________________ >> swift-evolution mailing list >> [email protected] >> https://lists.swift.org/mailman/listinfo/swift-evolution > > > _______________________________________________ > swift-evolution mailing list > [email protected] > https://lists.swift.org/mailman/listinfo/swift-evolution _______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
