<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">If our Windows clients are cool with it, I think we should remove support for fibers.<div class=""><br class=""></div><div class="">I don’t think our current implementation works super well with fibers. It is best not to include half-working code in the tree.<br class=""><div class=""><br class=""></div><div class="">Geoff<br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Dec 5, 2017, at 11:19 AM, Michael Saboff <<a href="mailto:msaboff@apple.com" class="">msaboff@apple.com</a>> 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; line-break: after-white-space;" class="">Here is the reply from iTunes for the WebKit-Dev list<div class=""><br class=""></div><div class="">- Michael</div><div class=""><br class=""></div><div class="">——</div><div class=""><br class=""></div><div class=""><div class="">From an iTunes perspective, WebKit can eliminate any remaining Windows Fiber API support.</div><div class=""><br class=""></div><div class="">iTunes still uses some cooperative threading, but implements its own mechanism on top of regular preemptive Windows threads. And we believe we've fixed all occurrences of calling WebKit/JSC from our non-main cooperative threads.</div><div class=""><br class=""></div><div class="">- John</div><div class=""><br class=""><blockquote type="cite" class=""><div class="">On Dec 5, 2017, at 10:26 AM, Michael Saboff <<a href="mailto:msaboff@apple.com" class="">msaboff@apple.com</a>> 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; line-break: after-white-space;" class=""><div class="">[Bringing John Lehner from the iTunes team into the discussion]</div><div class=""><br class=""></div>Last I knew, the iTunes team uses fibers.  IIRC, the thread they use to call into WebKit/JSC only has one fiber, other parts of the app use multiple fibers on one thread but don’t have JS objects active in those threads / fibers.<div class=""><br class=""></div><div class="">John, have things changed for iTunes on Windows such that we can eliminate support for fibers?</div><div class=""><br class=""></div><div class="">- Michael</div><div class=""><div class=""><div class=""><br class=""><blockquote type="cite" class=""><div class="">On Dec 5, 2017, at 10:16 AM, Ryosuke Niwa <<a href="mailto:rniwa@webkit.org" class="">rniwa@webkit.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">Yeah, I don't think there is much need to support fibers. With features like web workers, supporting fibers doesn't make much sense.</div><div class="gmail_extra"><br clear="all" class=""><div class=""><div class="gmail_signature" data-smartmail="gmail_signature">- R. Niwa</div></div>
<br class=""><div class="gmail_quote">On Tue, Dec 5, 2017 at 9:44 AM, Yusuke SUZUKI <span dir="ltr" class=""><<a href="mailto:utatane.tea@gmail.com" target="_blank" class="">utatane.tea@gmail.com</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="">Hi, Webkittens,
<div class=""><br class=""></div><div class="">I would like to make sure OR declare that WebKit does not support Windows fibers.</div><div class="">While fiber related functions are used in WTF, I believe that it is because fiber local storage (FLS) can have destructors. And it is not intended to support fibers explicitly.</div><div class=""><br class=""></div><div class="">Actually, I believe the current WebKit does not work well with Windows fibers right now.</div><div class="">For example, our JSC GC is conservative for stack and registers. It means that GC needs to scan stack and registers to gather conservative roots. But if your fiber is not executed at that time, JSC GC will miss to scan the stack and registers of those inactive fibers. As a result, managed objects will be collected if it is only referenced from the roots in the inactive fibers.</div><div class=""><br class=""></div><div class="">And I think we can potentially improve performance of our TLS by using thread_local implementation in VC++ instead of using FLS. FLS is slow and it causes some problems[1]. I'm not sure the performance characteristics and implementation details of thread_local in VC++, but it's worth checking.</div><div class=""><br class=""></div><div class="">So, I think we should not support Windows fibers. I would like to hear opinions about it.</div><div class=""><br class=""></div><div class="">[1]: <a href="https://bugs.webkit.org/show_bug.cgi?id=146448" target="_blank" class="">https://bugs.webkit.org/<wbr class="">show_bug.cgi?id=146448</a></div><div class=""><br class=""></div><div class="">Best regards,</div><div class="">Yusuke Suzuki</div></div>
<br class="">______________________________<wbr class="">_________________<br class="">
webkit-dev mailing list<br class="">
<a href="mailto:webkit-dev@lists.webkit.org" class="">webkit-dev@lists.webkit.org</a><br class="">
<a href="https://lists.webkit.org/mailman/listinfo/webkit-dev" rel="noreferrer" target="_blank" class="">https://lists.webkit.org/<wbr class="">mailman/listinfo/webkit-dev</a><br class="">
<br class=""></blockquote></div><br class=""></div>
_______________________________________________<br class="">webkit-dev mailing list<br class=""><a href="mailto:webkit-dev@lists.webkit.org" class="">webkit-dev@lists.webkit.org</a><br class=""><a href="https://lists.webkit.org/mailman/listinfo/webkit-dev" class="">https://lists.webkit.org/mailman/listinfo/webkit-dev</a><br class=""></div></blockquote></div><br class=""></div></div></div>_______________________________________________<br class="">webkit-dev mailing list<br class=""><a href="mailto:webkit-dev@lists.webkit.org" class="">webkit-dev@lists.webkit.org</a><br class=""><a href="https://lists.webkit.org/mailman/listinfo/webkit-dev" class="">https://lists.webkit.org/mailman/listinfo/webkit-dev</a><br class=""></div></blockquote></div><br class=""></div></div>_______________________________________________<br class="">webkit-dev mailing list<br class=""><a href="mailto:webkit-dev@lists.webkit.org" class="">webkit-dev@lists.webkit.org</a><br class="">https://lists.webkit.org/mailman/listinfo/webkit-dev<br class=""></div></blockquote></div><br class=""></div></div></body></html>