00:25:15  * cybaiquit (Remote host closed the connection)
00:28:50  * AtumTquit (Quit: AtumT)
00:36:55  * cybaijoined
00:40:14  * jwaldenquit (Quit: back tomorrow)
00:41:20  * cybaiquit (Ping timeout: 252 seconds)
01:10:44  * cybaijoined
02:03:38  * cybaiquit (Quit: Leaving...)
02:04:19  * jwaldenjoined
02:05:05  * keith_mi_quit (Ping timeout: 255 seconds)
02:18:26  * cybaijoined
02:56:47  * hellauerjoined
03:10:19  * hellauerquit (Ping timeout: 248 seconds)
03:11:14  * hellauerjoined
03:37:31  * hellauerquit (Ping timeout: 248 seconds)
03:38:27  * hellauerjoined
04:10:37  * howdoijoined
04:16:33  * jwaldenquit (Quit: ChatZilla 0.9.92-rdmsoft [XULRunner 35.0.1/20150122214805])
04:22:33  * gibson042quit (Quit: Leaving.)
05:05:39  * jmdyckquit (Remote host closed the connection)
07:03:55  * mgoljoined
07:06:54  * keith_mi_joined
07:29:54  * mgolquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
07:37:54  * kpattichaquit (Ping timeout: 258 seconds)
07:51:39  * kpattichajoined
07:57:43  * kpattich_joined
07:59:55  * kpattichaquit (Ping timeout: 248 seconds)
08:05:55  * mgoljoined
08:11:04  * kpattich_quit (Quit: Leaving)
08:11:47  * kpattichajoined
08:23:39  * mgolquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
09:03:45  * Jessidhiaquit (Disconnected by services)
09:06:30  * mgoljoined
09:44:06  * keith_mi_quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
10:35:31  * _Necjoined
10:41:33  * cybaiquit (Remote host closed the connection)
10:42:09  * cybaijoined
10:43:23  * cybaiquit (Remote host closed the connection)
10:43:53  * cybaijoined
10:48:10  * cybaiquit (Ping timeout: 252 seconds)
11:00:59  * kpattich_joined
11:03:34  * kpattichaquit (Ping timeout: 252 seconds)
11:30:15  * keith_mi_joined
11:31:33  * keith_mi_quit (Client Quit)
11:32:36  * keith_mi_joined
11:35:19  * keith_mi_quit (Client Quit)
11:36:04  * keith_mi_joined
11:37:24  * keith_mi_quit (Client Quit)
11:53:30  * jmdyckjoined
11:56:00  * keith_mi_joined
12:10:35  * kpattich_quit (Ping timeout: 248 seconds)
12:11:24  * cybaijoined
12:54:16  * kpattich_joined
12:55:20  * kpattich_quit (Client Quit)
13:31:44  * jorydotcomquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
14:13:46  * jorydotcomjoined
14:14:18  * mgolquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
14:24:57  * keith_mi_quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
14:27:15  <annevk>littledan: the other day we discussed the difference between after all microtasks and after a task, right?
14:27:34  <littledan>annevk: Yes?
14:28:19  <annevk>littledan: a weird edge case here is UI input events from the user, those are a single task, but multiple microtask checkpoints (one after each JS callback, since we have a checkpoint whenever the "JS engine stack" is 0)
14:28:38  <littledan>interesting, didn't know about that
14:28:44  <annevk>littledan: so it would in fact be quite observable which strategy you take here and I'm not sure why Domenic suggested otherwise (perhaps he forgot)
14:28:59  <littledan>it's very possible that I misunderstood Domenic
14:29:13  <annevk>littledan: do you remember the relevant issue? I forgot most of the context
14:29:19  <littledan>sounds like we should take some time in the June 2019 TC39 meeting to poll implementers to see what strategy they would really use
14:29:34  * keith_mi_joined
14:29:52  <littledan>IMO microtask checkpoint timing just makes more sense here, but I imagine others have opposing intuitions
14:30:30  <Domenic>I would urge you to coordinate with IndexedDB implementers, not just JS engine implementers, in this regard. Maybe a more broad web platform question too.
14:30:57  <Domenic>It's early for me, but on first glance I think annevk is right and there is an observable difference in that case which I forgot.
14:31:30  <Domenic>Although I guess you could sweep that all under "oh, the browser just didn't GC this microtask"
14:32:00  <annevk>only if they actually don't though
14:32:15  <littledan> I kind of doubt that browsers would actually queue a task to clear this list.
14:32:16  <annevk>because at least from till it sounded like our impl strategy was after microtasks
14:32:27  <annevk>right
14:32:52  <littledan>(at some point I quoted my memory of what Till had said; if you heard it from me, we should probably check back with him)
14:33:40  <littledan>at a high level, I think it'd be OK to tweak the exact semantics of the scope of holding these objects alive *after* Stage 3, as we get implementation feedback
14:34:03  <annevk>we're in the same office and discussed it at lunch recentish
14:34:13  <littledan>oh you're in Berlin these days?
14:34:23  <annevk>yeah
14:34:25  <littledan>I'm visiting right now
14:34:34  <littledan>(but for vacation)
14:34:37  <littledan>(sorry, off-topic)
14:34:56  * gibson042joined
14:35:32  <annevk>oh, enjoy, I think you're all here soonish for a meeting too
14:36:18  <littledan>that's right
14:36:43  <Domenic>annevk: will you at JSConf EU and/or TC39?
14:37:22  <annevk>Domenic: yes/maybe/attending training ystartsev is organizing
14:37:29  <Domenic>Nice
14:38:21  <littledan>Yeah, it'll be good to see everyone
14:38:45  <annevk>indeed
14:44:27  <annevk>commented on https://github.com/tc39/proposal-weakrefs/issues/39#issuecomment-490934435
14:49:13  * cloudshujoined
15:21:58  * AtumTjoined
15:26:50  * jorydotcomquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
15:33:58  * jorydotcomjoined
15:40:47  * keith_mi_quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:01:13  * cybaiquit (Remote host closed the connection)
16:01:44  * cybaijoined
16:06:04  * cybaiquit (Ping timeout: 252 seconds)
16:15:37  * AtumT_joined
16:18:06  * AtumTquit (Ping timeout: 246 seconds)
16:18:11  * srl295joined
16:18:21  * keith_mi_joined
16:22:34  * cybaijoined
16:27:07  * cybaiquit (Ping timeout: 248 seconds)
16:28:59  * AtumTjoined
16:29:15  * AtumT_quit (Ping timeout: 248 seconds)
16:46:08  * mgoljoined
16:55:41  * cybaijoined
16:58:43  * keith_mi_quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
17:00:25  * cybaiquit (Ping timeout: 276 seconds)
17:19:59  * keith_mi_joined
17:45:31  * Nimelrianjoined
17:52:46  <srl295>ecma402 reminder: CLDR bug tracker is readonly right now. moving to jira soon
18:27:35  * oliverdunkjoined
18:40:37  * jwaldenjoined
18:56:32  * cybaijoined
19:01:15  * cybaiquit (Ping timeout: 248 seconds)
19:55:04  <srl295>Unicode, where irony is served fresh daily. CLDR's bug database being converted, requires Node 8 due to unresolved native sqlite issues. So using a package instead of DurationFormat in progress metrics. https://github.com/unicode-org/icu-trac2jira/commit/003254474fc2e4c99fda2d7d4df05d2d81061b88#diff-b9cfc7f2cdf78a7f4b91a753d10865a2R16 … i guess i should have looked for the Intl duration polyfill
19:57:47  * Nimelrianquit (Ping timeout: 248 seconds)
20:19:40  <Domenic>Explain to me why Date.now() does not violate run to completion
20:24:33  <cloudshu>wat
20:26:35  * mgolquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
20:26:39  <cloudshu>Domenic: is there a deeper meaning to run-to-completion other than "uninterrupted"
20:27:28  <Domenic>I've heard it phrased as "cannot observe changes from other code"
20:27:52  <Domenic>Which is connected, i.e. no other code ran concurrently and modified state you can see
20:28:43  <Domenic>https://w3ctag.github.io/design-principles/#js-rtc is where I am coming from
20:28:45  <cloudshu>then we can never re-enable SABs?
20:28:48  <devsnek>Domenic: pretty sure Math.random and Date's ability to grab the current are both considered mistakes on that front
20:29:03  <Domenic>devsnek: no, that's separate, that's ocap stuff.
20:29:08  <Domenic>cloudshu: Well SABs are definitely RTC violations
20:29:48  <Domenic>I'm wondering if Date.now() is similar to them. It seems different, but I'm unsure of what definition would differentiate them.
20:29:59  <cloudshu>Domenic: hm, interesting
20:30:35  <devsnek>Date.now can preempt running code?
20:31:03  <cloudshu>if run-to-completion actually strictly means concurrently running code cannot affect your view of the world, then all timers violate RTC
20:31:49  <devsnek>like through a suspend point?
20:31:51  * mgoljoined
20:32:04  <devsnek>I'm confused what the angle is here
20:32:19  <cloudshu>well, no, i mean, time is always a side channel that you can use to infer the state of the world that you aren't supposed to be privy to
20:32:32  <cloudshu>like, how the browser chose to schedule you vs other code
20:32:35  <cloudshu>how the OS does that
20:32:37  <cloudshu>was the other code slow, etc
20:33:00  <devsnek>well that's sorta what I meant earlier
20:33:03  <cloudshu>Domenic: i feel like that's not the layman's understanding of the spirit of RTC anyways
20:33:14  <cloudshu>it must admit time as a side channel
20:33:38  <Domenic>Yeah, I guess a starting point would be to find a more authoritative/academic definition of RTC
20:34:10  <Domenic>So OK, the tricky question is, is isInputPending more like Date.now() or more like SABs. https://github.com/WICG/is-input-pending/issues/12
20:34:10  <devsnek>RTC allows yielding to a scheduler
20:34:19  <Domenic>devsnek: it does not
20:34:46  <Domenic>devsnek: well OK an OS-level scheduler. But not a scheduler in the browser that can run other JS that might affect you.
20:35:23  <devsnek>are you saying like
20:35:48  <devsnek>there should be no observable difference to your code if the VM decides to wait 10 minutes between two lines of code
20:37:50  <cloudshu>Domenic: interesting, at least one qualitative difference is the observable state programmatically mutable
20:38:35  <cloudshu>Domenic: like, if there were a Date.superUnsafeSetEpoch then Date.now would more straightforwardly violate RTC in my mind
20:38:38  <Domenic>cloudshu: I don't think it is; it's based on the user's finger movements
20:38:49  <cloudshu>oh boy
20:39:17  <cloudshu>this "input handling code" you refer to in the issue is... browser code?
20:39:38  <Domenic>Yeah
20:40:12  <cloudshu>i see, hrm, then i guess it comes down to having more rigorous understanding of what side channels HTML wants to admit and what HTML doesn't
20:41:07  <cloudshu>i don't think tdresser's argument is compelling though
20:41:43  <cloudshu>it doesn't follow from that we have a timing channel that we throw in the towel for more easily prohibited side channels
20:43:54  <devsnek>what's the context of all this
20:44:12  <cloudshu>> So OK, the tricky question is, is isInputPending more like Date.now() or more like SABs. https://github.com/WICG/is-input-pending/issues/12
20:47:51  <devsnek>hmmmm
20:48:35  <annevk>cloudshu: agreed, SAB existing does not mean we should necessarily add a bunch of higher-level APIs relying on it
20:49:32  <annevk>Domenic: time always seemed weird to me too, FWIW
20:49:38  <devsnek>what good things do we get from this rtc guarantee as written in the w3c document
20:50:12  <cloudshu>all of this v philosophical
20:50:19  <devsnek>yeah
20:50:23  <devsnek>I'm just curious like
20:50:31  <devsnek>isInputPending and SAB seem like good things in general
20:50:51  <cloudshu>devsnek: well, think about languages without strong-ish RTC requirements
20:51:08  <devsnek>well we can contain data races to SAB
20:51:14  <cloudshu>devsnek: c++ is pretty hard to reason about if your entire memory value might change
20:51:20  <devsnek>yeah I agree
20:51:42  <cloudshu>devsnek: right, having well-scoped escapes to RTC is valuable, but RTC as a strong default for the rest of the language execution is the good thing we get
20:51:44  * not-an-aardvarkjoined
20:56:08  <devsnek>are touch events visible to web workers
20:56:16  <devsnek>input events*
20:56:44  <devsnek>i'd probably benchmark this on "can it be implemented with a web worker and SAB"
20:57:26  * cybaijoined
20:59:25  <oliverdunk>What's SAB? I'm being nosy and it's the one keyword I couldn't follow.
21:00:17  <cloudshu>SharedArrayBuffers
21:01:40  * jorydotcomquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
21:02:01  <Bakkot>devsnek: from the (very short) thread: "If we don't implement this, I anticipate once off thread input is supported, folks will build this themselves this via off thread input and SAB"
21:02:11  * _Necquit (Ping timeout: 258 seconds)
21:02:11  <devsnek>yep
21:02:19  * _Necjoined
21:02:20  * cybaiquit (Ping timeout: 252 seconds)
21:02:34  * Domenicquit (Ping timeout: 258 seconds)
21:02:34  * musgravejwquit (Ping timeout: 258 seconds)
21:02:34  * joyeequit (Ping timeout: 258 seconds)
21:03:26  * musgravejwjoined
21:03:27  * joyeejoined
21:03:29  * Domenicjoined
21:04:18  <Domenic>devsnek: they are not yet but there are proposals to make them so
21:05:33  <devsnek>if such a thing happens, it seems like a fairly conclusive end point
21:13:31  <Bakkot>devsnek: disagree; constraining values which can change during your code's turn without you touching them to Date.now(), Math.random(), and SABs seems valuable
21:14:03  <devsnek>i just mean
21:14:10  <devsnek>if something can be done with the base language
21:14:12  <cloudshu>strong agree, small surface area = more analyzable
21:14:24  <cloudshu>even if a higher level thing is reducible to some lower level thing
21:14:36  <devsnek>🤷
21:15:07  <Bakkot>(for similar reasons, I am opposed to Temporal having access to the current time without a user explicitly passing it in)
21:17:02  <cloudshu>wait till i propose Atomics.rdtsc
21:17:40  <cloudshu>or perhaps... Date.rdtsc
21:24:59  <Bakkot>global.rdtsc
21:25:06  <Bakkot>as a non-configurable property :D
21:25:23  <Bakkot>s/property/getter/ even
21:27:08  <cloudshu>yeaaaah
21:27:10  <not-an-aardvark>at that point, maybe just add a "rdtsc" keyword
21:27:30  <cloudshu>statement contexts only
21:27:35  * mgolquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
21:31:46  * keith_mi_quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
21:36:36  <rkirsling>is this the beginning of a `std:x86` proposal
21:37:06  <cloudshu>wait wait i got one better
21:37:13  <cloudshu>Math.fldcw
21:37:39  <Bakkot>the threat model went out the window with spectre anyway, so, you know, why not
21:38:18  <Bakkot>also all of these: https://twitter.com/x86instructions
21:38:40  <cloudshu>that is one of my favorite twitters
21:39:27  <cloudshu>https://twitter.com/x86instructions/status/1103399520329596928 so good
21:40:57  <oliverdunk>Found in the replies: https://twitter.com/drathier/status/1103614895055081474
21:41:54  <Bakkot>(I am as we speak in the process of adding a rediculously specific instruction to the custom JS-in-JS vm I maintain for work, so this is all extra funny to me)
21:42:09  <Bakkot>s/rediculously/ridiculously/, argh
21:42:43  <devsnek>merge all the x86 instructions into wasm, merge wasm into js
21:43:17  <cloudshu>Bakkot: a big running joke back in the day for spidermonkey was JSOP_SUNSPIDER
21:43:26  <Bakkot>haa
21:46:38  <rkirsling>oliverdunk: it gets better if you dig into the repo too -- https://github.com/xoreaxeaxeax/movfuscator/tree/master/validation/doom
21:47:05  <oliverdunk>Oh no
21:47:08  <devsnek>god i love that repo
21:48:28  <cloudshu>there is no faster code than straightline code
21:48:35  <devsnek>x to doubt
21:51:19  <devsnek>the real question is if we can get turbofan to only emit mov instructions :P
21:56:06  <oliverdunk>We could then say that the number of instructions needed has reduced by ~99.92%! (1278/1279)
22:04:45  * keith_mi_joined
22:29:22  * oliverdunkquit (Quit: Bye!)
22:58:34  * cybaijoined
23:02:51  * cybaiquit (Ping timeout: 248 seconds)
23:39:33  * cybaijoined