- From: David Bruant <bruant.d@gmail.com>
- Date: Sun, 13 Oct 2013 22:36:22 +0200
- To: Jonas Sicking <jonas@sicking.cc>
- CC: public-webapps <public-webapps@w3.org>, azakai@mozilla.com
Le 13/10/2013 21:39, Jonas Sicking a écrit : > Ok, this thread is clearly heading off the deep end. Let me clear up a > few points of confusion: > > * You can not wrap a truly synchronous library around an asynchronous > API. Spinning the event loop gets you close, but breaks > run-to-completion. Furthermore, spinning the event loop is irrelevant > as we don't have an API to do that, nor are we planning to introduce > one. > * yield only works within generators in JS. To be honest, I feel generators will be interoperably deployed cross-browser long before sync APIs in workers. V8 and SpiderMonkey already have generators. I'm not entirely sure it's 100% compliant in SpiderMonkey yet, but for sure it's being actively worked on and should be soon if not yet. > * You could solve the use case of compile-to-JS for code that uses > sync APIs using yield. However it requires changing all functions into > generators, and all function calls into yield* statements. all? as is "all function in the application"? that sounds like a too violent constraint, especially if a small proportion of the code uses sync functions. Maybe only the functions that may call a sync function need to be changed to generators... oh... hmm... I don't know. Taking the liberty to cc Alon Zakai to ask for his expert opinion on this topics. > That comes > at a performance overhead that is significant enough as to make it an > unacceptable solution (several times slower in current > implementations). I guess this point depends on the previous one. Given that compile-to-JS has wind behind these days, generators may benefits from optimizations. > * yield would not solve the use-case of allowing libraries that use > features from the main thread as it, again, would require a rewrite of > all code that directly or indirectly uses that library to change all > functions into generators and all function calls into yield*. I think this point is about interoperability between main thread and worker. I don't remember this point being discussed too much yet. What about exposing both async and sync APIs to workers? David
Received on Sunday, 13 October 2013 20:36:52 UTC