01:16:21  * gcommerquit (Read error: Connection reset by peer)
01:17:13  * gcommerjoined
01:18:00  * keith_mi_quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
01:28:21  * keith_mi_joined
01:29:26  * cybaijoined
01:34:41  * sendilkumarnquit (Remote host closed the connection)
02:02:13  <bradleymeck>the cookie 1 year challenge is always fun. Buy a box, wait a year buy a 2nd box and then try to guess which of the cookies are new vs old
02:03:04  * aki_joined
02:04:14  * akirosequit (Ping timeout: 255 seconds)
02:04:14  * aki_changed nick to akirose
02:04:42  * leobalterquit (Ping timeout: 264 seconds)
02:05:02  * leobalter_joined
02:12:12  <rkirsling>lol fascinating
02:46:36  * keith_mi_quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
02:50:05  * sendilkumarnjoined
02:54:33  * sendilkumarnquit (Ping timeout: 250 seconds)
03:36:09  * gibson042joined
03:50:57  <ljharb>bradleymeck: not even frozen?
03:51:00  <ljharb>interesting
03:51:24  <ljharb>i know that tagalong chocolate gets relatively stale after 4-6 months, so that one'd be easy
03:51:34  <ljharb>(when unfrozen)
04:09:19  * aki_joined
04:10:41  * akirosequit (Ping timeout: 255 seconds)
04:10:41  * aki_changed nick to akirose
04:18:02  * not-an-aardvarkjoined
04:38:17  * sendilkumarnjoined
04:40:35  * cloudshuquit (Quit: Connection closed for inactivity)
04:42:38  * sendilkumarnquit (Ping timeout: 258 seconds)
04:44:15  * howdoijoined
05:06:41  * jwaldenquit (Quit: ChatZilla 0.9.92-rdmsoft [XULRunner 35.0.1/20150122214805])
05:53:41  * jmdyckquit (Remote host closed the connection)
06:08:12  * ghmcadamsjoined
06:16:10  * aki_joined
06:17:02  * akirosequit (Ping timeout: 246 seconds)
06:17:03  * aki_changed nick to akirose
06:26:22  * sendilkumarnjoined
06:30:47  * sendilkumarnquit (Ping timeout: 250 seconds)
06:59:03  * Jessidhiaquit (Disconnected by services)
06:59:08  * Jessidhiajoined
07:16:26  * ghmcadamsquit (Quit: Textual IRC Client: www.textualapp.com)
07:50:45  * sendilkumarnjoined
07:54:28  * Jessidhiaquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
07:55:27  * sendilkumarnquit (Ping timeout: 258 seconds)
07:56:37  * Jessidhiajoined
08:17:25  * not-an-aardvarkquit (Quit: Connection closed for inactivity)
08:22:24  * aki_joined
08:23:35  * akirosequit (Ping timeout: 255 seconds)
08:23:35  * aki_changed nick to akirose
08:24:50  * sendilkumarnjoined
08:41:17  * gibson042quit (Quit: Leaving.)
09:14:11  * sendilkumarnquit (Remote host closed the connection)
09:14:23  * howdoiquit (Quit: Connection closed for inactivity)
09:35:57  * i_joined
09:46:15  * sendilkumarnjoined
10:03:11  * i_quit (Ping timeout: 256 seconds)
10:13:24  * cybaiquit (Remote host closed the connection)
10:29:25  * aki_joined
10:29:30  * sendilkumarnquit (Remote host closed the connection)
10:29:43  * sendilkumarnjoined
10:30:27  * akirosequit (Ping timeout: 246 seconds)
10:30:27  * aki_changed nick to akirose
10:31:36  * sendilkumarnquit (Remote host closed the connection)
10:37:56  * sendilkumarnjoined
10:54:30  * cybaijoined
10:58:55  * cybaiquit (Ping timeout: 246 seconds)
11:01:31  * sendilkumarnquit (Remote host closed the connection)
11:37:15  * sendilkumarnjoined
11:41:30  * sendilkumarnquit (Ping timeout: 246 seconds)
11:55:49  * sendilkumarnjoined
12:34:38  * aki_joined
12:35:28  * akirosequit (Ping timeout: 245 seconds)
12:35:29  * aki_changed nick to akirose
12:45:23  * jmdyckjoined
12:50:09  * AtumTjoined
13:04:11  * sendilkumarnquit (Remote host closed the connection)
13:18:02  * sendilkumarnjoined
13:28:51  * jorydotcomjoined
14:22:17  <bradleymeck>ljharb: in the refrigerator is my game
14:39:55  * aki_joined
14:41:07  * akirosequit (Ping timeout: 268 seconds)
14:41:08  * aki_changed nick to akirose
14:57:16  * sendilkumarnquit (Remote host closed the connection)
15:07:31  * jorydotcomquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
15:09:10  * Nimelrian__joined
15:28:47  * cloudshujoined
15:36:00  * jorydotcomjoined
16:13:48  * obensourcequit (Ping timeout: 244 seconds)
16:28:34  * obensourcejoined
16:38:14  * akirosequit (Quit: 👋🏻)
16:38:30  * akirosejoined
16:40:47  * jorydotcomquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:55:50  <devsnek>what are people's opinions on a js runtime that crashes when a promise rejects without a rejection handler
17:04:28  <Domenic>littledan: I don't understand why an explicit RunJobs is needed
17:04:51  <Domenic>After each job, the job queue will be emptied automatically, at least in HTML.
17:04:58  <Domenic>Are you running script without using a job?
17:05:05  <littledan>hey, thanks for the quick review, Domenic
17:05:22  <littledan>I guess I'm missing the part where HTML gets involved here, in InnerModuleEvaluation
17:05:42  <littledan>I thought that spun around in JS a bunch without HTML coming into play, once the module graph was all pulled down and executing
17:06:03  <Domenic>Step 13.g.i does PerformPromiseThen()
17:06:07  <Domenic>Which will enqueue a job
17:06:18  <Domenic>Which, when that job finishes, will perform a microtask checkpoint
17:06:39  <Domenic>It currently does do that. But with the changes in top-level await, evaluating a module now does promise things, so HTML gets back into the loop
17:06:53  <Domenic>s/13.g.i/13.g.iv/
17:08:05  <littledan>sorry, 13.g.iv of which algorithm?
17:08:15  <Domenic>https://tc39.github.io/proposal-top-level-await/#sec-innermoduleevaluation
17:08:50  <devsnek>how can queuing a job run the job queue
17:09:00  <littledan>so, yeah, when all the microtask queue items are done, there's a checkpoint. But I don't see why we'd get to a checkpoint if we have a big glob of modules running
17:09:18  <littledan>I mean, a bunch of things will get queued, due to stuff happening in launching the evaluation of different modules
17:09:41  <littledan>the insertion of a microtask queue checkpoint (via the willful violation by HTML noted in FlushJobs) would sort these out
17:10:04  <Domenic>Hmm
17:10:09  <littledan>there's a standing disagreement between HTML and JS on layering; I'm not trying to say things are resolved in one way or the other, just explain it with both mechanisms at once
17:10:28  <Domenic>So the problem is that you are queuing A, B, C, D, E but you want to run things in... what order?
17:10:45  <Domenic>Let me do better letters
17:11:20  <Domenic>Given https://github.com/tc39/proposal-top-level-await/issues/47#issuecomment-464488593
17:11:23  <Domenic>Are you not queuing jobs in order a1-1, a-2, a, b, main?
17:11:28  <Domenic>What order are you queuing the jobs in?
17:11:48  <littledan>the microtask queue congestion issue comes up because of the Promise.all at the beginning of modules that import things
17:12:05  <littledan>the "right" tree might end up being run before the "left" tree if it's less deep
17:12:39  <littledan>so, that's why a ends up running after b
17:12:46  <Domenic>Right, I got that. But I'm trying to root cause. Is the issue you are queuing jobs in a different order than a-1, a-2, a, b, main?
17:13:06  <littledan>well, we're telling the modules to start in the right order
17:13:25  <littledan>it's just, when we tell a to start, it has to work through a bunch of Promise reactions first
17:14:04  <Domenic>It seems like you could add an a-1.then(a-2) chain to do this
17:14:18  <Domenic>Like, add a-1 to a-2's promise.all
17:15:54  <Domenic>I'm just leery of essentially inserting a "rearrange the job queue here" step.
17:16:13  <Domenic>Instead of ensuring the evaluation jobs get queued in the right order in the first place.
17:16:35  <littledan>isn't that going back to "variant A"?
17:16:45  <littledan>I think that would be adding more synchronous behavior than what I'm doing here
17:16:49  <Domenic>Hmm
17:17:02  <littledan>flushing the microtask queue is only about the parts that run synchronously, so it's a lot lighter weight
17:17:14  <Domenic>Yeah, that would be variant A, bad.
17:17:22  <Domenic>I'm just having a fundamental confusion:
17:17:34  <Domenic>HTML ensures that whenever the stack is empty, the job queue is drained
17:17:35  <littledan>but, a lot of people have had this kind of reaction, that it doesn't smell right to flush the microtask queue
17:17:50  <Domenic>If you have to manually flush the job queue, then that means you are doing so when the stack is not empty
17:17:56  <Domenic>I don't understand why that would be necessary.
17:18:16  <littledan>when you say stack, do you mean that there's no JS running?
17:18:23  <Domenic>Right.
17:18:33  <Domenic>E.g. when we're waiting on a promise reaction
17:18:45  <littledan>well, this algorithm is being driven by something that's not JS; there's no JS running
17:19:08  <littledan>maybe we can do something at the JS level that explains that, duh, the job queue is clearly drained, no need for FlushJobs
17:19:11  <Domenic>Hmm
17:19:23  <Domenic>Maybe that is what I'm missing
17:20:45  <Domenic>We are using jobs and promises, but there is no JS execution context stack, where emptying it triggers the microtask checkpoint... hmmm...
17:21:12  <littledan>yeah, when you say HTML ensures this, do you mean in https://html.spec.whatwg.org/#event-loop-processing-model ?
17:21:28  <littledan>I guess the issue is (again) that JS doesn't really have a "processing model"
17:21:49  <littledan>and this algorithm is one of the few that runs when there's no JS active
17:22:06  <Domenic>No, I mean in https://html.spec.whatwg.org/#clean-up-after-running-script
17:23:52  <littledan>hmm, so an interesting thing about this algorithm is that we might not actually invoke JavaScript, we might just work our way through some Then reactions and find ourselves still blocked
17:24:55  <littledan>oh, I guess that will still run the "clean up after running script" algorithnm
17:25:21  <littledan>right, since that algorithm is run after each microtask
17:25:24  <Domenic>Wait a minute
17:25:34  <Domenic>Are all calls to InnerModuleEvaluation() synchronous?
17:25:38  <littledan>yes
17:25:47  <Domenic>Oh then it seems this is already aligned with HTML
17:25:55  <Domenic>HTML already calls "clean up after running script" after it calls Evalaute()
17:26:10  <littledan>that's not the right time, since Evaluate() is only called once, and we need it called after loading each module
17:26:18  <Domenic>No, nevermind, yeah
17:26:50  <Domenic>Right because you are using the job queue for things that could be synchronous, hmm
17:27:01  <Domenic>OK I have to run to a meeting but I am coming around to draining the job queue
17:27:16  <Domenic>I am hopeful my resolution will be to draft a lengthy non-normative note explaining why it makes sense
17:27:40  <littledan>why FlushJobs makes sense, or why it's not necessary?
17:27:44  <Domenic>Why it makes sense
17:27:51  <littledan>OK, great
17:28:24  <Domenic>We may want to tweak things a bit so we can do host setup, not just host teardown, before/after each chunk of graph work
17:32:39  <littledan>that makes sense; I imagine that there could be other kinds of settings to put in place. The big question to answer at this point is whether we're doing a microtask checkpoint or going for all-synchronous execution.
17:33:05  <littledan>and, if this seems reasonable to you, I'm leaning microtask checkpoint as well
17:33:46  * jorydotcomjoined
17:35:04  * keith_mi_joined
17:35:21  <Domenic>(turns out my meeting was a half-hour later, but now I need to get lunch in 25 minutes, whee)
17:36:11  <Domenic>On the other hand it's a bit weird to anticipate every host adding very similar hooks just so that ES can use the job queue to do sync work
18:19:29  * jorydotcomquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
18:32:06  * jorydotcomjoined
18:41:00  <Domenic>https://github.com/whatwg/html/issues/4175#issuecomment-466047231 about a no-credentials mode instead of CORS is so weird to me.
18:41:22  <Domenic>If we thought intranets didn't matter, we would've just made no-credentials a requirement for outgoing requests long ago and never had to do the CORS business.
18:41:33  <Domenic>Oops, wrong channel
18:42:02  * jorydotcomquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
18:45:20  * aki_joined
18:45:29  * akirosequit (Ping timeout: 255 seconds)
18:45:47  * ghmcadamsjoined
18:46:09  * aki_changed nick to akirose
18:51:21  * keith_millerquit (Ping timeout: 250 seconds)
18:53:46  * keith_millerjoined
19:19:03  <rkirsling>I just learned that `new Date(undefined)` is not the same thing as `new Date()` and I totally want to flip a table right now 🤯
19:19:22  <rkirsling>...especially given that `new Date(null)` is treated as `new Date(0)`
19:19:27  <TabAtkins>:shakes fist at legacy apis:
19:19:36  <ljharb>┬Temporal┬ノ( º _ ºノ)
19:19:46  <rkirsling>ljharb: good answer lol
19:31:09  <rkirsling>in other news... mathiasbynens: that "shapes get orphaned on field type change after preventExtensions" bug the React folks discovered is really fascinating
19:31:35  <rkirsling>I was trying to poke at exactly why the bug doesn't apply to JSC
19:31:45  <ljharb>what bug?
19:32:20  <rkirsling>read from here: https://slidr.io/bmeurer/javascript-engine-fundamentals-the-good-the-bad-and-the-ugly#151
19:34:04  <rkirsling>seems like JSC structures don't have the same "new shape that extends from the existing one" pattern that V8 maps have, maybe that's the crux
19:34:17  <ljharb>not sure if i get it without narration
19:38:53  * keith_millerquit (Ping timeout: 268 seconds)
19:40:24  * leobalter_changed nick to leobalter
19:40:53  * keith_mi_quit (Ping timeout: 245 seconds)
19:42:20  * keith_millerjoined
19:42:57  <rkirsling>ljharb: so JSObjects have shapes (on-the-fly interfaces kept by the runtime, called "maps" in V8 and "structures" in JSC), and when you add a new property, a new shape gets extended from the old one (in V8 at least, as I understand it), and preventExtensions (or seal or freeze) makes sort of a final extension on top of that. The bug is that if you initialize a field to a small integer, prevent extensions, and then set it to a
19:42:57  <rkirsling>double, you'd end up with a new orphaned shape for *every such object*: https://bugs.chromium.org/p/v8/issues/detail?id=8538
19:44:23  <rkirsling>so they realized that to work around you could initialize the field with NaN or Number.MIN_VALUE (so that it's a double to start with) and then set it to whatever value you wanted (like 0, say) -- https://github.com/facebook/react/pull/14383
19:44:33  <rkirsling>really comical and interesting situation
19:45:42  <rkirsling>(note that "smi" is evidently the V8ism for "small int")
19:51:41  * keith_mi_joined
20:23:34  * ghmcadamsquit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client)