02:21
<MikeSmith>
TabAtkins: so I experimented with replacing the urlib.urlopen calls in Bikeshed with requests.get — and updating the associated response-handling code — and it all worked fine... until I ran into the APIClient() calls, which it seems to run into the same problem that the urllib.urlopen do, if Python can’t find the certs
02:22
<MikeSmith>
I guess that’s probably do to the APIClient() code in the json_home_client library being built on urllib.urlopen
02:22
<MikeSmith>
*due to
02:24
<MikeSmith>
so I guess it’s not worth changing the code — since the only known environment it causes any real problem in is the XCode-installed Python one
07:23
<annevk>
Is there an article on why we're not really changing the HTML parser?
07:40
<MikeSmith>
if there were, I reckon hsivonen would know
09:17
<annevk>
self.SAB = new WebAssembly.Memory({ shared:true, initial:0, maximum:0 }).buffer.constructor;
09:17
<annevk>
(credit: Adam Rice)
15:32
<TabAtkins>
@MikeSmith: thanks for the effort. You still got the code around? I'm amenable to switching anyway, and can ping plinss about switching json_home_client
16:59
<MikeSmith>
TabAtkins: yeah I’ll make a patch and submit a PR ofr it
17:00
<TabAtkins>
danek
17:02
<MikeSmith>
hey by the way, I’m done futzing with https://github.com/tabatkins/bikeshed/pull/1564 (the MDN annotations PR) — so can be reviewed without worry about me changing anything out from underneath it during review
17:03
<shu>
annevk: oh cool
17:03
<shu>
(the workaround)
17:07
<TabAtkins>
MikeSmith: I'm reviewing it literally right now, so nice. ^_^
17:08
<MikeSmith>
heh :)
17:08
<MikeSmith>
cheers
17:24
<TimothyGu>
Something I never understood. Why do promise tasks have to run at a high priority than regular tasks (and hence be microtasks)?
17:50
<TabAtkins>
Chaining off a promise feels "almost synchronous", especially when `await` is used. Pumping the normal queue in between code split by a promise was seen as likely to result in bugs.
17:52
<annevk>
TimothyGu: initially we got mutation observers, which were a bit less sync than mutation events, but still sync enough to not let a lot of other code run in between
17:52
<annevk>
TimothyGu: and I think promises wanted similar timing as they used mutation observers and such as workarounds
17:53
<annevk>
TimothyGu: perhaps also because often a promise is resolved as the result of a task, if it would then take another task you'd get a lot of delay
17:57
<TimothyGu>
annevk: is mutation event totally sync?
17:58
<annevk>
TimothyGu: yeah, see also https://github.com/whatwg/dom/issues/305
18:01
<TimothyGu>
Okay, I see
18:17
<Domenic>
My point of view is that chaining off a resolved promise should be zero-cost. I.e. a 1000-deep resolved promise chain should be as fast as a `for (let i = 0; i < 1000; ++i) { /* do nothing */ }`, modulo extra GC pressure. Microtasks allow this in theory, while tasks do not. This gets you close to "zero-cost abstraction".
18:17
<Domenic>
However, implementations seem to be unable to achieve this, mostly because of JS/C++ transitions and difficulty inlining.
18:18
<Domenic>
And I suppose it doesn't help that I made promises unnecessarily complicated to support subclassing. Although implementations have done some heroic fast-paths to get around that, at least.
18:53
<annevk>
Subclassing had a lot of hype but little payoff thus far
22:26
<Domenic>
annevk: https://chromium-review.googlesource.com/c/chromium/src/+/2116833 (should show up on WPT side soon) would welcome your review, either on WPT or Chromium repos. I also added you as an owner for the directory. (dtapuska fixed the message vs. messageerror bug so I can write WPTs now!)