2020-11-06 [09:49:33.0000] looks like we just have 14 hours or so of topics scheduled, so we should have a couple hours of time for breakouts at the end of the meeting, if people don't all fall asleep [09:53:09.0000] scheduling constraints are likely to be plentiful this time around [12:15:04.0000] What are people's thoughts on adding a YAML object analogous to JSON? [12:21:44.0000] keith_m__: no [12:21:54.0000] bradleymeck: porque? [12:22:10.0000] YAML is a fickle thing, 1.2 is generally not terrible but it has breaking changes over time [12:22:15.0000] 1.0 has the norway bug [12:22:50.0000] if YAML was more stable / didn't have as much surprise factor, sure [12:23:23.0000] gotcha, that's fair. I didn't know about the norway bug (amusing) [12:24:25.0000] bradleymeck: Do you know of a common configuration format that's both stable and easier to read than JSON? Would such a format be worth considering? [12:24:44.0000] keith_m__: thats the most famous one, but there are others [12:24:56.0000] right that's why I went with YAML [12:25:13.0000] I guess TOML is the new hotness [12:25:16.0000] no, i mean bugs/surprises in YAML [12:25:44.0000] keith_m__: what are you seeking over pretty printed JSON i guess is the question [12:25:51.0000] more value types? [12:25:58.0000] JSON is just annoying to modify [12:26:18.0000] because it's structure is very restrictive [12:26:21.0000] its* [12:27:04.0000] Also, you can't have comments IIRC [12:27:14.0000] i don't know of one that is significantly less restrictive and relatively non-surprising, (see YAML surprises) [12:27:25.0000] keith_m__: sure you can, just use the same key as the one that follows it [12:27:39.0000] lol [12:27:54.0000] JSON.parse(`{"main": "this is a comment?", "main": "why"}`) [12:28:16.0000] a masterpiece of design right there! :P [12:29:14.0000] but yea, if your config has comments the fear of using comments as data is real [12:30:23.0000] what was the reason for not adding comments to the JSON spec again? just that we really don't want the format to split into two separate version? [12:30:24.0000] s [12:33:25.0000] rkirsling: comment used as annotation originally, now spec updates would be breaking to *everywhere* [12:34:10.0000] hence the repeated statements in plenary about how it is luckily not facing any issues still so we don't need to update it [12:34:43.0000] how do you mean annotation? [12:34:57.0000] keith_m__: also yaml is terribad [12:35:36.0000] ljharb: I'm open to other suggestions lol [12:35:58.0000] I picked YAML because that's what happens to be all over WK (from before my time) [12:36:02.0000] rkirsling: json has many forms of comments :-p `{ "//": "this is a comment", "foo": "this is a comment about foo", "foo": "this is the real value of foo" }` [12:37:27.0000] yeah I mean bradleymeck covered that but I'm trying to understand/remember the reason [12:37:54.0000] rkirsling: I believe because it was people were putting parser annotations in them or something [12:38:02.0000] ohhh [12:38:06.0000] rkirsling: {/*@type {Person}*/name:'Bradley Farias'} or somesuch being used to auto conversion [12:38:11.0000] I don't think that's a great reason to exclude them but 🤷‍♂️ [12:38:14.0000] yuck [12:38:24.0000] i assume it's also a fear of ecosystem churn - all of a sudden an unimaginable amount of json parsers would need updating [12:38:49.0000] but yeah as soon as there's a DSL in there, all sorts of security holes are inevitable [12:38:51.0000] ljharb: I think rkirsling meant back in the day when it was first created [12:38:52.0000] yeah I mean there's a definite benefit to a data format staying the same [12:38:55.0000] ah [12:38:56.0000] keith_m__: it just means JSON wouldn't be cross system stable, not the worst thing honestly but it would mean you have to know what *kind* of JSON you are handling [12:39:21.0000] well yeah back in the day would be good to know too but maybe harder to answer [12:39:23.0000] Oh, sorry I meant when they were removed [12:39:48.0000] i have enough issues thanks to "__proto__", "constructor", etc. being allowed in our language [12:40:05.0000] lol [12:40:19.0000] keith_m__: the number of github issues is real [12:40:22.0000] and makes me sad [12:40:33.0000] On which repo? [12:40:38.0000] /me is curious [12:40:44.0000] prototype pollution issues are on many many repos [12:41:08.0000] they're not even attack vectors 99% of the time, but the 1% means everyone gets spammed with related CVEs :-/ [12:41:17.0000] just gotta ensure that the first character of the file is a fancy J, like 𝔍 [12:41:29.0000] ljharb: wouldn't that be true regardless of `__proto__`/`constructor`? [12:41:51.0000] keith_m__: of CVEs, yes, but `__proto__` is a particularly easy one for libraries to fall into [12:42:04.0000] Oh you mean using it at all? [12:42:32.0000] i mean having a magic string property that changes the observable characteristics of the object in a fundamental way [12:42:39.0000] I don't actually know too much about XSS/library CVEs [12:42:41.0000] constructor is more about reachability than breaking things [12:42:56.0000] gotcha gotcha [12:42:59.0000] I think TOML is... ok [12:43:05.0000] better than YAML at least [12:43:23.0000] agreed, but low bar [12:43:45.0000] wish it didn't have so many moving parts [12:43:59.0000] I wonder why there isn't a popular but also not terrible json replacement [12:44:12.0000] json5's pretty popular [12:44:15.0000] is it just that no one has written one? [12:44:20.0000] other than "people put it in .json files", how is json5 terrible? [12:44:34.0000] ah yeah I forget about json5 [12:44:36.0000] (i'm assuming it is and i just don't know the ways) [12:46:03.0000] at this point i bet if node natively supported parse/stringify for JSON5, the push for npm to support `package.json5` would be pretty strong, and then the push for browsers to add `JSON5.parse` would become stronger [12:46:12.0000] but there's a lot of heavy dominos in that chain [12:46:42.0000] probably would need to have it in more languages first [12:46:48.0000] don't think I've seen a python project touch it, e.g. [12:47:25.0000] right [12:47:53.0000] Yeah, I think it's mostly an other languages thing [12:48:11.0000] my big problem with json5 is that it has the same issue as json, in that it does not specify an interpretation of the values [12:48:46.0000] so you end up with the twitter snowflake bug [12:48:53.0000] That's probably true for most of the "nice" configuration formats no? [12:49:14.0000] I think TOML does not have this problem? [12:49:32.0000] Oh, I've never looked at TOML... [12:49:32.0000] well, it says "Floats should be implemented as IEEE 754 binary64 values.", at the very least [12:49:36.0000] /me looks [12:49:55.0000] Is that not expected in JSON? interesting... [12:50:10.0000] the JSON spec does not impose any semantics at all [12:50:13.0000] In JS that's obviously true [12:50:17.0000] cf https://github.com/qntm/fastjson [12:50:32.0000] keith_m__: my old tweet on the glory of constructor/__proto__ injection vector: https://twitter.com/bradleymeck/status/1204225330103422976 [12:51:53.0000] Bakkot: LGTM lol [12:54:17.0000] bradleymeck: >.>, yikes [15:23:39.0000] if we have to add something new can it be toml 2020-11-10 [09:03:21.0000] anyone going to be around in 1hr who is up for helping me / robpalme test some transcription software ahead of the next meeting? just need people to hang out and talk for a few minutes. [14:35:44.0000] is there a draft schedule yet? [14:39:39.0000] oh nvm i forgot this meeting is CET, no need to worry about schedule conflicts 😓 [14:40:46.0000] was it ever clarified whether it's 12am PST or 1am PST? [14:42:42.0000] if its 10 CET then its 1 PST [14:47:39.0000] drousso 1am [14:48:05.0000] as per https://github.com/tc39/agendas/pull/880 [15:06:31.0000] `Temporal.PlainDateTime.from('2020-11-16T10:00').toZonedDateTime('Europe/Budapest').withTimeZone('America/Los_Angeles')` [15:09:12.0000] awesome [15:09:15.0000] gotta love daylight savings time [15:09:27.0000] why should the world be simple? 🙃 2020-11-11 [18:48:10.0000] JSC changes for #2210 and #2221 are landed 2020-11-12 [15:15:48.0000] Bakkot: how did the transcription API fare with technical terms? 2020-11-13 [17:09:16.0000] not as bad as I'd expected [17:09:19.0000] it got JavaScript, e.g. [15:32:01.0000] akirose: any chance of moving the `item` item earlier on wednesday? (a few folks have mentioned adjusting/removing the lunch break as well, not sure if that's an option) [15:41:47.0000] ljharb: wait item is where it is for you! [15:42:53.0000] akirose: in that case i appreciate it being no later :-) but i'd currently planned to only stay up til 3 am, and that one starts at 4am. [15:43:47.0000] (my schedule constraint is basically that i'm only available 10am-noon budapest time) [15:43:53.0000] OH GOD DAMMIT [15:43:56.0000] i misread [15:44:06.0000] sorry for the confusion, timezones suck :-( [15:44:06.0000] i got your availability backwards [15:44:14.0000] don't worry about it, totally my bad [15:44:34.0000] lol it would have been so much easier if i'd read more clearly—most of those were already in the AM [15:44:39.0000] i appreciate anything you can do here, this is probably going to be one of the toughest scheduling ones so far [15:45:07.0000] lol i cannot believe i did that 2020-11-14 [16:02:05.0000] ljharb: schedule updated [16:06:36.0000] akirose: glorious, my seratonin and melatonin levels thank you [16:47:24.0000] akirose: yeah can we shorten the lunch breaks [16:47:33.0000] i am afraid that i will fall asleep and not wake back up [16:47:56.0000] well, not wake back up in time [16:48:00.0000] i hope to not [16:48:02.0000] die 2020-11-15 [06:50:40.0000] I realized that this meeting starts from monday itself [06:50:51.0000] when is a good time to do a tech check? [06:51:17.0000] would any of the chairs be available before the meeting, for instance? [06:51:46.0000] yes - I'll be there from 9am CET (an hour before start) [06:52:05.0000] that would be perfect, thanks so much Rob! Real lifesaver! 2020-11-16 [00:38:39.0000] robpalme: 👋 can I get a tech check please? [00:38:53.0000] of course - logging in now [00:39:04.0000] perfect, thanks. [00:42:50.0000] looks like we need to kickstart team - it's in lobby mode [00:43:01.0000] okay [00:43:04.0000] let me rejoin [00:47:58.0000] does it work yet? [00:48:08.0000] i have issues my end [00:48:20.0000] ah okay [00:48:32.0000] is anyone else in? [00:48:48.0000] I'll join in a minute as soon as my tea's up [00:48:51.0000] I'm in [00:49:47.0000] i am in! it's working [00:55:34.0000] are we gonna delete all these notes from before the meeting starts? [00:57:42.0000] yes [01:00:02.0000] we're almost ready to begin! [01:00:55.0000] Teams is go! TCQ (including all new temperature checking) is go! Automatic dictation is go! [01:01:46.0000] futuristic TC39 meeting [01:03:48.0000] i see aki talking but hear nothing [01:03:50.0000] bakkot: you can turn it off during like voting topics and such, yeah? [01:04:03.0000] can other people hear or is it just me? [01:04:06.0000] by killing and restarting the process on my other machine, yes [01:04:12.0000] I can't hear Aki either [01:04:16.0000] We have automatic dictation? [01:04:44.0000] rbuckton: yes! [01:05:26.0000] I was about to ask if any of the chairs or the host had considered using Teams' built-in transcription feature as a way to help with note taking. [01:06:45.0000] i believe the transcription mechanism we're using will work with any VC app, so we're not coupled to any of them [01:10:12.0000] congrats to whoever fixed the tcq bug that used to require me to manually enter the meeting code even when using the link including the code. Thanks! [01:10:39.0000] oh wow yeah [01:14:13.0000] whoever is typing needs to mute? [01:14:15.0000] brad42: please mute when typing [01:14:22.0000] *brad4d [01:15:30.0000] sorry, i thought I was muted [01:18:42.0000] this is an unfortunately low turnout :-( [01:21:07.0000] 32 people, yeah its low.. [01:22:31.0000] how ominous [01:22:34.0000] "chairs are always listening" [01:23:07.0000] plot twist: big brother is actually TC39 chair [01:23:13.0000] robpalme: will the table on the 2020/11 agenda be updated with that info? [01:24:10.0000] doing it now! [01:24:21.0000] ty [01:27:42.0000] 35 participants in Teams now [01:28:03.0000] would be interesting to graph teams count over the course of each day :-p [01:29:32.0000] does anyone have a 60-minute they would be able to move to today? I'm thinking shu & rbuckton are maybe the only option? [01:30:03.0000] akirose: when today? still working on slides [01:30:14.0000] we're not gonna have the transcription do the slides presentations? would like to have those notes when possible [01:30:23.0000] *I would [01:30:26.0000] shu: 14:00 CET, last item of the day [01:30:49.0000] [I'll try to kill the note-taker during slides, as a rule] [01:31:04.0000] I would prefer to have notes during slides, if possible [01:31:07.0000] Bakkot: why? notes during slides are useful [01:31:15.0000] there's often a lot of interesting stuff that people say during presentations [01:31:17.0000] hm, ok [01:31:27.0000] I felt like we killed the notes before mostly to give humans a break [01:31:30.0000] hm, we don't usually take notes during slides [01:31:31.0000] akirose: i should be ready by then if you need to move me [01:31:37.0000] HERO [01:31:38.0000] littledan: same [01:31:39.0000] humans still need a break, is the main thing [01:31:41.0000] seems fine to do so tho, ofc [01:31:49.0000] but, you can update it afterwards [01:32:02.0000] Bakkot: then just take a break, we stil have the transcription [01:32:12.0000] transcription is... not great without live correction [01:32:46.0000] seems like it depends on the accent and speaking style quiet a bit [01:32:53.0000] (though it varies by speaker; it does worse with non-American/British accents, unfortunately) [01:32:53.0000] +1 to michaelficarra, would totally like to have notes from slides too. [01:33:11.0000] it seems like speaking slower is better, too [01:33:20.0000] often the slides don't have speaker's notes and it's not easy to decipher what was said after the preso [01:33:23.0000] plus, you'll probably avoid umms and ahhs that way [01:33:38.0000] shu, akirose: ryzokuken and I have already written our Temporal slides and could go, if that's easier for you [01:33:42.0000] marja_: also, some people put very little detail on the slides themselves [01:33:45.0000] if it's in the afternoon [01:34:08.0000] The transcription is comically incoherent [01:34:22.0000] yeah, sometimes a slide is just a code snippet, and it's practically impossible to know what was said about that code snippet [01:34:30.0000] wsdferdksl for this particular speaker or previous ones? [01:34:45.0000] littledan: I'm all settled but it's v helpful to know y'all's slides are ready to go [01:34:56.0000] It depends on the speaker. About half of them… [01:34:59.0000] (this one, yes, it's very poor; I'm not fixing it live and it's also doing worse than with previous speakers) [01:35:33.0000] to be fair, I have a hard enough time understanding Istvan myself [01:35:43.0000] robpalme: what is the correct URL for 2021 schedule/logistics slides? [01:35:43.0000] I think if we get a block of incoherent notes and the speaker isn't available to correct it, it's fine to delete it [01:36:03.0000] https://docs.google.com/presentation/d/1vsOSn9alFLnmtYStNt71_KJU6uDW1nm-GsqRRIfajTw/edit [01:36:09.0000] thanks [01:36:53.0000] Istvan seems clear to me. I have a lot less trouble understanding his speech than some other speakers here. But the transcription doesn't like him. [01:36:58.0000] I have PR'd the dates to the agenda - they are already in the calendar [01:41:12.0000] Aki: you are echoing? [01:41:26.0000] maybe it's coming from someone else though, sorry [01:45:37.0000] lmk if you think it's me next time i talk [01:59:16.0000] It seems MM mention a issue of speccing iterator/generator ? Where is the issue we can follow ? [02:00:59.0000] haxjs: not an issue, just a question, which was answered [02:01:22.0000] haxjs: whether the Yield macro could also send/receive a value - which it can [02:05:27.0000] Aki responded to a question by asking for questions to be put on the queue and then ignored the queue. [02:05:36.0000] ljharb Thank u, hope it can also work with `function.sent` proposal (receive the first value) which may be affected by the changes. [02:06:23.0000] wsdferdksl: what's the lookahead bug? could you please file an issue if there isn't one already? [02:06:26.0000] haxjs: i would expect it either has no effect, or makes it slightly easier to specify [02:07:37.0000] wsdferdksl: I asked for questions to be directed to the Issues queue [02:08:03.0000] (updated "meeting info" link in topic) [02:08:21.0000] So we're not using tcq any more? [02:08:59.0000] of course we are [02:09:02.0000] those were status updates [02:09:06.0000] not discussion topics [02:09:53.0000] It's still not cool to just ignore questions. [02:10:59.0000] I don't want chairs silently doing that. [02:11:31.0000] i didn't ignore. I'm sorry you we seemed to miss each other there. [02:12:42.0000] Aki, you did. You moved on to the next item without draining the tcq. [02:14:59.0000] akirose: i can talk about gus's item if there's time after the other normatives are discussed [02:15:08.0000] ooh neat thanks [02:16:02.0000] Bakkot: funny enough, there is a big spec editorial inconsistency for using else, otherwise and using ; or . before inline else/otherwise. [02:18:43.0000] leobalter: still today? [02:18:49.0000] I thought we cleared that up recently [02:21:33.0000] brad4d and others: please make sure you've added yourself to the attendees list in the notes! [02:21:45.0000] @wsdferdksl I think Aki directed your item on lookaheads to the reflector? the status updates section of the meeting is not really meant for discussion - though we do not intentionally ignore tcq [02:21:52.0000] it helps note takers quickly grab initialisms [02:22:14.0000] (and I'm sure is also good for posterity purposes) [02:24:27.0000] +michaelficarra done, thx [02:24:38.0000] and I lost my connection [02:25:50.0000] we load DanielR from Teams [02:25:55.0000] we lost [02:28:20.0000] shu: So were talking about searching the web for "await x ** y" or internal google code? [02:28:48.0000] msaboff: brad4d said he searched internal google code [02:29:03.0000] msaboff: i was talking about searching https://httparchive.org/, which is public code [02:29:10.0000] Got it. [02:29:39.0000] it's too big to download and search locally, so you need to craft some bigtable query for it [02:30:04.0000] Yeah, that's why I was wondering. [02:31:52.0000] littledan wsdferdksl: the grammar limits is something I'd really enjoy to discuss but 2:30AM is not a time I can really do it with my brain properly in order [02:32:09.0000] yes, I didn't want to get into the discussion today either, but just register my disagreemeent [02:32:38.0000] the transcription really, really wants to transcribe "annex B" as "NXB" [02:33:25.0000] it's unfortunate my connection is dropping and the conclusion was to follow up with additions to Test262. I hope this comes as a discussion at Test262 [02:36:08.0000] Bakkot: sounds pretty similar [02:36:15.0000] and then I have a strong agreement with littledan in this different topic. [02:36:21.0000] :) [02:36:46.0000] littledan: (echo chamber) who benefits of the optionality? [02:41:00.0000] chairs: i think the queue has the wrong topic [02:41:10.0000] it does my b [02:41:21.0000] gibson042: can you re-add your piece in a sec? [02:41:22.0000] oh wait [02:41:24.0000] that's [02:42:06.0000] akirose: yeah, we're good [02:44:46.0000] ty [02:54:09.0000] ljharb: __proto__ getter/setter are bundled too, right? [02:54:26.0000] and separate from __proto__ syntax? [02:54:36.0000] michaelficarra: oh, yes, true. akirose can we have 15 seconds after this to confirm that? [02:54:47.0000] or wait [02:54:57.0000] michaelficarra: the getter is fine, it's only the setter that presents security issues, no? [02:55:36.0000] ystartsev: I think our current process provides much of the appropriate safeguards [02:55:44.0000] ok [02:56:42.0000] what we might do is require an implementation or two for normative PRs before landing [02:57:03.0000] though this particular thing wasn't done as a small change, it was part of a big feature [02:57:05.0000] That may be a good idea, we've started tracking normative prs more closely [02:57:37.0000] Bakkot: I heard a mention about Test262, does it need any update to match 2210? [02:58:10.0000] leobalter I'm not sure, but rkirsling has been pretty on top of those things [02:58:35.0000] I'd suggest to follow up with an issue there [02:58:55.0000] to avoid tests that would now become wrong [02:59:40.0000] brad4d: it's the same worry as something that has never thrown suddenly throws, even if it's often a logical error [02:59:59.0000] Bakkot: kill the bot until after lunch? [03:00:10.0000] michaelficarra done [03:00:50.0000] brad4d: historically we've also had issues with changing runtime errors to early errors, like with `f() = e` [03:00:52.0000] akirose: heads up that i can do the default constructor topic any other day, but i'm going to bed, unless someone else wants to handle it after the break [03:02:36.0000] @ljharb default constructors is first thing tomorrow [03:02:42.0000] great [03:04:45.0000] Hallway track is in Hubs (I won't post the URL here) [03:04:54.0000] akirose robpalme not a super constraint, but I'd like to "lock" the Realms presentation as currently set in the draft schedule or for the end of the day (same time slot) in another day [03:05:35.0000] leobalter: i'll make a note of it as a schedule constraint [03:07:07.0000] thanks! My constraint is more like a "please lock the time after its set in the draft" so I can get my coworkers to join. [03:07:22.0000] and I appreciate the draft schedule so much! [03:08:21.0000] the draft schedule is one of the most brilliant tools I've seen for the management of the meetings [03:08:38.0000] thanks, that means a lot to me. we put a ton of work into it, i'm so glad it's helpful ♥️ [03:09:23.0000] i was so nervous to share it when i first started doing it because I was afraid people would get mad when things inevitably moved around, but it looks like the actual upshot is people understand how hard it is to tetris that shit together 😄 [03:10:13.0000] akirose also it means those changes get telegraphed better, which is great [04:01:12.0000] we are starting the second session now [04:20:20.0000] do we have enough note-takers? [04:20:38.0000] seems so [04:21:23.0000] ty [04:40:24.0000] transferable sharedrealm is great! Hope we can have that soon! [04:44:25.0000] as someone who works for a company making a significant investment in JavaScript-on-MIPS, I appreciate the callout to "maybe MIPS" here [04:45:35.0000] FWIW here's a sketch I made for user-definable postMessage that I wrote https://github.com/littledan/serializable-objects/ (this is different from binary/JSON serialization) [04:51:34.0000] not taking is going REALLY well right now :-) [04:51:36.0000] *note [04:54:41.0000] I am enjoying this a lot more than usual note taking [05:03:06.0000] I think the results are mostly better, but I still find it draining and hard to simultaneously follow the actual content [05:04:22.0000] when there are a lot of errors its hard to focus, but when michael was talking , the transcription was so good that i caught more of it than usual [05:26:40.0000] I'd prefer a match-with-indices method or something [05:27:00.0000] whether you want indices is a property of the current match, not of the regexp itself [05:27:13.0000] putting it in the flags is inappropriate IMO [05:27:34.0000] could exec have new param ? [05:27:36.0000] A flag doesn't necessarily mean "instead of", but could be in addition to [05:27:45.0000] we've looked at all of these [05:29:19.0000] The problem with a param is `@@match` [05:30:56.0000] oh, forgot `@@match`... then i have to support new flag :P [05:34:17.0000] btw the sticky flag has already made this category error that we are talking about [05:34:27.0000] maybe we could use a uppercase for those flags affect the result :) [05:34:38.0000] all of the other flags affect what the regexp actually means [05:34:58.0000] sticky affects how it is used, and this flag would affect how the results are presented [05:35:24.0000] I don't think we should make this error again [05:45:27.0000] I realise there's difficulties with modifying the RegExp APIs to put this information in the appropriate place, but I think it's worth looking into it [05:45:47.0000] I'm open to another suggestion as well, but of the four options the flag has the least issues. Callbacks and option bags have subclassing concerns, new methods overcomplicate the api surface of RegExp and limit retrieving indices to those methods (i.e., they wouldn't be available from `String.prototype.match`, etc.) [05:50:37.0000] Other languages don't need a flag for this because they already provide access to both the strings and indices (usually by doing the opposite of what v8 and JSC are doing and only storing the indices and deriving the strings). Trying to change an engine to do the same ended up with hard-to-optimize internals due to the fact we represent a `RegExp` exec result as an `Array` with a few extra properties added on. [05:56:03.0000] gibson042: I've been considering proposing the `n` and `x` flags at a future meeting, along with a few other RegExp nice-to-haves. [06:02:25.0000] yep, I've considered the same from time to time. And it's also just generally important to me that JS does not define a RegExp flag used for a different purpose by other languages. [06:05:56.0000] that was amazing - we sustained 38 attendees to the end. [06:06:28.0000] 🥳 [06:06:42.0000] make sure you subtract one for the note taker bot [06:07:12.0000] 47 pages of notes for 4 hours of plenary, that's gotta be a new record [06:07:13.0000] are you kidding, they were definitely the workhorse of the group! [06:07:23.0000] oh yeah what was i supposed to clarify in the notes [06:07:29.0000] running on fumes i still got like 2 more mtgs [06:07:30.0000] gibson042: still not people [06:07:41.0000] but do they satisfy a legal definition of personhood [06:07:46.0000] shu: search for TODO [06:07:59.0000] i believe bladerunner covered this [06:08:42.0000] and maybe that film with will smith and the moving teddy bears [08:51:44.0000] littledan: is the decorators meeting still happening tomorrow, given it’s tc39 week? [09:59:56.0000] rbuckton re: callbacks have issues with subclassing, didn't we officially decide we no longer care? [10:00:04.0000] as long as it doesn't break existing code, anyway [10:29:45.0000] Bakkot: thanks again for presenting #2210 [10:39:00.0000] yup yup [10:39:03.0000] hope I did it justice [10:41:10.0000] I'm certain you did [10:41:12.0000] > (sighs) I do not object, but very reluctantly. [10:41:16.0000] is pretty funny though [10:47:50.0000] omg I can't decide which of Shu's decks is more amazing [10:49:12.0000] Bakkot: also re "all hands" -- I just meant that I'm in the midst of two weeks of basically being on-call during waking hours haha [10:50:54.0000] for PS5 launch (since we've yet to launch in Europe) [10:51:52.0000] also webkit contributors' meeting is today and tomorrow on pacific time [10:54:55.0000] ah, well, close enough [10:55:44.0000] :) [10:56:05.0000] reviewing the notes - man do we produce a lot of text [10:57:37.0000] mhm [10:58:17.0000] capturing everything that's said instead of just the things the note takers catch appears to have ~tripled the wordcount (25k words vs 8k words) [10:58:39.0000] a lot of that is just going to be that we have notes for the presentation too, I guess [10:59:02.0000] yeah I was surprised that the presentations got transcribed [10:59:22.0000] I was going to turn it off for those but a couple people said they'd prefer they be captured [10:59:42.0000] ahh alrighty [11:01:32.0000] i think it depends on the presentation (e.g. if the linked presentation has speaker notes or lots of in-slide content then it's not as needed) [11:24:59.0000] yeah. but in practice I think all or almost all the speakers say a lot of things that aren't precisely captured by the slides and speaker notes. [12:02:09.0000] There are soooo many notes this time [12:02:40.0000] We should continue doing this. 2020-11-17 [19:30:15.0000] rickbutton: is the records and Tuple monthly call still happening in 15.5 hours? [19:34:13.0000] rough if true [00:54:57.0000] can anyone contact Frank Tang - we want to see if Intl.Enum can be brought forwards to today [01:01:45.0000] It's a good day when the notes document starts with "Yes, sir. Take it off." [01:01:58.0000] (brought to you by autotranscribe) [01:04:54.0000] robpalme: the best person to contact Frank would be sffc, IMO [01:06:34.0000] typically, I would avoid normative changes with strictly editorial motivation, but I think this ends up with a nicer semantics [01:08:15.0000] oh I guess it was originally motivated by non-editorial reasons, which makes sense [01:09:47.0000] ystartsev: I also don't understand how iterator helpers are impacted [01:10:32.0000] littledan: it kind of sounds like your active mic is on your phone in your pocket [01:11:03.0000] michaelficarra: the comment I got from the people involved was "this simplification looks good, we had to jump through similar hoops when implementing iterator helpers" [01:11:04.0000] This is a very positive simplification [01:11:15.0000] I want to note that we did discuss this path in the past [01:11:35.0000] It created extra load for implentations and no one had a particular use for it [01:11:40.0000] michaelficarra: i wasn't directly involve in the implementation but i can get further details [01:11:57.0000] We decided to leave it in because engines thought it might be more intuitive for developers [01:12:02.0000] ystartsev: it's not a big deal, but I am curious [01:12:15.0000] I don't think this is a very strong intuition though. I like the change. [01:22:06.0000] is this supposed to say who voted for what [01:22:32.0000] ystartsev: ^ [01:22:45.0000] devsnek: as in, the list of names? [01:22:49.0000] yea [01:22:51.0000] yes, that was requested in the reflector [01:22:55.0000] cool [01:23:09.0000] is daniel R on irc? [01:23:12.0000] this appears to be contentious though, it would be good to have a direct conversation about it. i have no strong opinion [01:23:42.0000] i don't mind that much either [01:23:48.0000] just surprised me [01:24:09.0000] i'd be interested to hear an argument for anonymity on a non-binding temperature check; i like the names being shown tho [01:24:51.0000] the argument is that people may not feel safe voting as they really feel, due to social pressure and their name being present [01:25:18.0000] "voting" used here in a loose sense, "expressing their emotions through hieroglyphs" [01:25:42.0000] ah [01:25:57.0000] Again, I strongly feel we should roll back the stage ,because the plan of early stage said that if there is web comp issue, it will be withdrawn. [01:27:47.0000] ljharb: he says "idk how to use IRC" [01:29:25.0000] akirose: happy to walk him through it during our local tuesday if he's interested :-p [01:31:06.0000] haxjs: I agree, that's a fair point [01:32:00.0000] why is it important that that was the original plan, if it's not the plan now? [01:32:27.0000] haxjs: do you mean you think this isn't useful at all if it can't help ObservableArray compat? [01:32:32.0000] if we don't rollback the stage, it means the communtiy do not have the chance to invole about the name or other things. [01:33:12.0000] what other things? [01:33:48.0000] damn, that would have been such an improvement [01:33:51.0000] for example, new syntax or new method. [01:34:11.0000] shu: isn't "indifferent" the same as "abstain"? [01:34:28.0000] I feel new syntax could be a better choice in current situation. [01:34:35.0000] haxjs: as shu already commented, new syntax for this isn't something a number of us feel are warranted [01:34:45.0000] haxjs: the benefit here would have been the unification of the html datastructures [01:34:46.0000] ljharb: lack of support is similar to opposition in this committee [01:34:50.0000] its a huge pain point for devs [01:34:54.0000] michaelficarra: fair enough [01:35:09.0000] itemAt makes me wince [01:35:11.0000] adding new syntax to html won't help, because historical code still exists [01:35:22.0000] so it doesn't achieve the goal of unification [01:35:24.0000] real shame [01:35:32.0000] if we want to solve dev pain point, pls roll back the stage so devs can say their ideas. [01:36:03.0000] haxjs: the outcome here is that this specific goal is impossible [01:36:33.0000] we can certainly roll back the stage, but its irrelevant with regards to unification [01:37:15.0000] We at least should give a chance that community could revisit the proposal in current situation. Becuase normally naming issue is solved in stage 2 not stage 3. [01:37:46.0000] haxjs: sure, but that is a different topic [01:38:33.0000] What's different? Are we discussing naming issue now? [01:38:43.0000] no... [01:44:21.0000] ystartsev: not sure if you already got the feature req but it'd be really cool if presenters could self-request a temp check and provide a question, so that chairs both can "approve" it, and then also the question is displayed near the emojis [01:44:50.0000] ljharb: ill add it -- looks like we need labels for temp checks and multiple temp checks [01:44:57.0000] +1 [01:44:58.0000] I'm strongly positive about .at in Arrays and TypedArrays, but really indifferent about it in Strings [01:46:09.0000] we're running dangerously close to turning this temperature check into a voting system [01:46:10.0000] shu for the records, my indifference means I'm totally neutral about this feature in Strings [01:47:17.0000] +1 michaelficarra [01:48:48.0000] we should probably make heart and thumbs up be mutually exclusive, at least [01:49:08.0000] idk i mean rn shu is soliciting how the room feels about a thing, not whether or not we are permitting forward momentum [01:49:15.0000] my internet is bad [01:50:04.0000] it's like exit polling, totally unproblematic [01:50:06.0000] erm [01:50:52.0000] TC39 now has "no confidence" votes :D [01:51:49.0000] for the records: I'm opposed to explore syntax before the proposed built-in API for this feature [01:53:18.0000] I explicitly endorse staying at Stage 3 with these changes we discussed [01:53:48.0000] +1 [01:54:20.0000] was the syntax proposal actually serious? [01:54:41.0000] sounds like yes [01:54:47.0000] I am floored [01:55:05.0000] same [01:56:42.0000] I am not really sure if this syntax suggestion is in good faith. It seems like solving for "what will block this proposal from affirming Stage 3" rather than a serious proposal. [01:57:14.0000] it's clear, given everyone's comments, that it will not get consensus in committee [01:58:03.0000] I feel like we're getting off-topic from the proposal topic and instead considering changing what Stage 3 means. I do not agree to this change. [02:01:53.0000] The situation is significantly changed and the break the original motivation and the requirements in stage 1. So I don't understand how the proposal have the quality of stage 3 should have. [02:02:43.0000] brad4d: please mute [02:02:57.0000] I think we could use an extra hand with the notes [02:03:15.0000] sorry had to take a quick break [02:04:53.0000] haxjs: the motivation from the committee when it achieved stage 1 included its ergonomics/usefulness separate from ObservableArray: https://github.com/tc39/notes/blob/840c700dc7fa7b9f6d0a3c208bd66b333e304717/meetings/2020-06/june-4.md#item-for-stage-1 [02:05:12.0000] haxjs: so despite the only motivation prior to being presented being ObservableArray compat, since stage 1 it's had more motivations than that [02:05:55.0000] What i mean is, if the motivation is only ergonomics, it's possible to not advance to stage 1 in that time, or may have other solution in stage 2. [02:06:24.0000] I don't really understand the motivation for the `debugger.` proposal. It feels like overkill. [02:06:59.0000] ljharb: this is why i think it should be at least rollback to stage 2. [02:07:21.0000] haxjs: i'm not sure i'd ever put ergonomics after "only" [02:07:39.0000] haxjs: what other solution tho? as has been discussed, syntax for this is a nonstarter for some on the committee [02:07:49.0000] haxjs: (at least until after a method exists) [02:09:03.0000] in our process, we require consensus to change stages, not to maintain them [02:09:04.0000] I don't others, but if it did not have the benefit of unifying dom .item(), i will not agree it's worth to add new method for that. And yes, if there is a method ,then syntax may be not have enough benefit. [02:09:48.0000] littledan: this is the process issue we need to figure out [02:10:33.0000] haxjs: can you elaborate on why you don't think it's worth adding a new method without the unification goal? [02:10:54.0000] haxjs: Sure, if you have a process change you want to propose, feel free to ask the committee for consensus. I'm describing how we work today. [02:11:39.0000] +1 to Waldemar's comment about how it's good to specify intent [02:11:40.0000] littledan: sorry i can't because my english level can't discuss such complex thing. [02:13:49.0000] ljharb: just feel not worth enough. especially the possible syntax solution could have better ergonomics . So if the only motivation is ergonomics, we should first consider syntax solution. [02:14:18.0000] haxjs: why would you find syntax more ergonomic than a method? is that just in this case, or in general? [02:15:43.0000] in this case i think it's better because it match `a[idx]`, and the syntax could also apply to slice notation proposal. [02:16:45.0000] slice notation is viable because a slice method exists [02:17:18.0000] shu i had similar "concerns"/unease [02:18:24.0000] haxjs: I sympathize with the fact ESL makes it harder. The same happens to me. Although, it's hard for me to understand your objection about adding the method as not worth being added. When you say "just feel not worth enough" it seems to me also as not convincing to reject it, as the room is generally positive about the feature. [02:19:33.0000] haxjs: as ljharb has mentioned, the syntax version is a nonstarter. It is too much of a cost compared to a built in api [02:22:46.0000] syntax has the cost, but also have some benefit which method can't have: [02:22:46.0000] 1. never have compatibility issue (we don't know whether `at` really web compatible) [02:22:46.0000] 2. better ergonomic than method , especially in this case , it's not a "brand new syntax" but a new syntax which based on the well-known `a[idx]` [02:22:46.0000] 3. apply to other proposals like slice notation [02:24:00.0000] it would only make sense on indexables tho, not on map/set/etc, so to me syntax is much worse ergonomics for this [02:24:20.0000] i'm also skeptical that any syntax solution would be helpful for slice notation [02:24:23.0000] Bakkot: for the notes, console. what? [02:24:25.0000] ljharb: `a[idx]` also not apply to map/set [02:24:25.0000] tab? [02:24:29.0000] tap [02:24:41.0000] actually, just please edit the notes [02:24:42.0000] haxjs: right, that's normal object semantics. index `-1` isn't. [02:24:43.0000] note, console is a standard! You can contribute to it! https://github.com/whatwg/console [02:24:47.0000] that section was hard to follow [02:24:47.0000] console.tap = v => (console.log(v), v) [02:25:07.0000] haxjs: iow, "at" semantics are *not* the same at all as bracket semantics, it's a subset of them [02:25:24.0000] my proposed syntax like C# 8: `a[^1]` means `a[a.length - 1]`. And it also solve the slice notation issue, `a[0:^i]` means `a.slice(0, a.length - i)` , this solve the problem of `i` be `0`. [02:27:32.0000] ystartsev: you have background noise i think? [02:27:42.0000] shoot [02:27:47.0000] hard to tell in teams tho, could have been someone else [02:28:27.0000] i just looked and the noise levels look low [02:28:59.0000] I generally share ystartsev and shu 's concerns [02:32:17.0000] its very hard to sell things that aren't revolutionary to the committee [02:32:58.0000] when they're syntax, that's probably true, yeah [02:33:05.0000] high bar for syntax [02:33:21.0000] high bar for new global [02:34:40.0000] that too, yeah [02:40:27.0000] shu: please review your notes there [02:40:39.0000] am i the transcription loser [02:41:02.0000] lotta transcription losers [02:41:16.0000] wish this API worked just a little better... [02:41:41.0000] I might ask next time if I can record the audio privately just so that I can fix up the notes [02:42:46.0000] (also I've been doing the live note fixes up till now but I'm starting to fade, so I stepped back at the start of thiis presentation; sorry other note takers) [02:43:03.0000] it's fne [02:45:02.0000] do we have enough note takers? [02:45:20.0000] i think so [02:51:00.0000] Bakkot: it's actually really good for some people [02:51:00.0000] did the note taker die? [02:51:11.0000] ystartsev: yes [02:51:25.0000] restarting [02:52:08.0000] thanks [02:52:37.0000] apologies, that was me breaking it rather than a bug [02:52:59.0000] it held quite good until now so kudos [02:54:12.0000] i should tweak it so it doesn't put up partial words, I think [02:54:25.0000] might try to do that over lunchbreak [02:55:34.0000] do you know if it could generate newlines for every voice change? [02:55:49.0000] asking for a lot probably [02:56:14.0000] if the api exposes any kind of indicator on that [03:00:16.0000] the auto transcription really doesn't like shu [03:00:40.0000] is it because i talk in halting bursts [03:01:08.0000] Bakkot: double words are better than missing words for editing IMO [03:01:15.0000] shu: I don't think so [03:01:17.0000] it knows you are from google and it is scared [03:01:20.0000] ummm super weird, google docs just suggested that i "assign" one of the comments in the notes to my brother-in-law [03:02:09.0000] clippy by any other name would be as useless [03:04:56.0000] michaelficarra yeah, that's my thinking too [03:05:10.0000] Bakkot: please kill transcription [03:05:15.0000] dne [03:05:46.0000] should someone be checking off items on the github agenda [03:06:00.0000] I'm here, just wasn't looking at irc [03:06:20.0000] I do want to note that we already have established consensus on the weaker invariant where the assertion is not part of the cache key [03:06:42.0000] i kind of want an early error for `import 'x'; import 'x' assert { y }` [03:06:58.0000] ooof, really wish the realms proposal could be moved up 30 minutes; I want to go to that one but I would also love to go to bed half an hour earlier [03:07:51.0000] devsnek: `Promise.all([import('x'), import('x', { assert: 'y' })])` might work as a feature test :-p [03:08:23.0000] did you mean to ping mark [03:08:48.0000] import('x', {}) is syntax error? [03:09:04.0000] with the proposal it is not [03:09:26.0000] yeah, i mean if it's syntax error, it can't be used for feature test for old engines [03:09:49.0000] i think ljharb meant feature testing a specific assertion, not that assertions exist [03:10:00.0000] oh i c. [03:10:10.0000] Bakkot: presumably it'd be really nice to retrain the transcription model on the set of our voices [03:10:21.0000] the set of speakers is relatively stable from meeting to meeting [03:10:52.0000] yeah, don't think they offer that though [03:11:03.0000] and I don't think you get to download the model to train yourself [03:11:05.0000] I recommend against using dynamic import as a feature test; you're writing stuff into the module map that stays alive as long as the surrounding realm does [03:11:22.0000] devsnek: mark's not on irc so i settled for pinging you [03:11:48.0000] hah [03:11:49.0000] littledan: if it's a module i want anyways tho, or if it's a super teeny blob URL? [03:12:04.0000] yeah, so that keeps the blob in the module map [03:12:17.0000] sure [03:12:19.0000] you can do what you want, but I won't be really happy about these idioms getting popular [03:12:27.0000] `import(module {}, {})` [03:12:34.0000] it's pretty unlikely that will be any app's biggest memory leak :-p [03:12:51.0000] i wouldn't be surprised if json modules are a top leak [03:12:55.0000] after they are supported [03:13:54.0000] *** The next item will be Grouped Accessors by Ron Buckton *** (rescheduled to avoid a big gap in the session) [03:59:34.0000] We are starting in one minute! [04:02:14.0000] won't be able to take notes for much long [04:02:28.0000] if someone could take it from me [04:05:23.0000] will pick it back up [04:05:28.0000] I tweaked it some [04:05:33.0000] not sure if it's better [04:05:35.0000] yep seeing it [04:05:37.0000] ty ty [04:05:41.0000] is it an error if you have multiple getters with the same name? that's news to me, and I can't reproduce it [04:05:47.0000] it is different [04:05:50.0000] I thought they just acted like subsequent Object.defineProperty calls [04:06:11.0000] littledan: same [04:06:37.0000] I think this proposal is pretty orthogonal with how error-happy we want to be. It would make sense with the sloppy semantics just as much. [04:07:25.0000] our major in-house class system has a grouped accessor definition that atomically defines getter/setters via a single top-level named property. Ron's proposal does it in a more elegant way by making it first-class. [04:12:08.0000] Bakkot: transcription died [04:12:20.0000] it's back [04:19:31.0000] i'm concerned that using accessors in a decorator has to be leaked to the consumer of the decorator [04:24:20.0000] IMO, Ron has identified a developer problem, albeit minor. I don't think the particular solution presented is viable for stage 2. But I do weakly support stage 1, assuming Ron would be okay with a different solution (which I doubt). [04:25:40.0000] same [04:32:22.0000] I like the group accessors, I don't like the idea of `x { #get, #set }`, field seems to be public but it's all private [04:32:25.0000] I may be wrong about multiple accessors of the same name, but my goal was to error on mixed syntax. That's something I can revisit prior to stage 2, assuming we consider this feature. [04:33:38.0000] that assumes we could have `x { get, #get, set, #set }` [04:35:08.0000] littledan: maybe i'm misunderstanding, i thought you were saying that some decorators will want to change a property into an accessor, and that doing that has performance implications, and so the user of the decorator should have to explicitly allow that [04:35:42.0000] devsnek: We have to make a global decision about how all decorators desugar, to meet TS's goal that we don't use cross-file knowledge in transpiling decorators [04:36:18.0000] I mean, that goal combined with V8's goal that decorators desugar in a statically analyzable way, so they are fast to interpret, etc [04:36:46.0000] littledan: `class X { @y z }` -> `class X {} accessorLogic(X, y, 'z');` [04:37:17.0000] we have to decide at parse-time whether we're making a [[Define]] field or an accessor [04:37:28.0000] why [04:37:28.0000] (to meet V8's architecture goals) [04:37:31.0000] ah [04:37:51.0000] why v8 arch goals beat developer expectation? [04:38:06.0000] i don't understand v8's requirement there, it seems like this would be equiv to modifying X.prototype [04:38:09.0000] before using X [04:38:14.0000] we're combining all the goals together in the proposal, not choosing one over the other [04:38:17.0000] which is a common pattern that engines already support [04:39:23.0000] Note most recent programming languages all move to auto property and hiding field semantic. [04:40:12.0000] one reason we didn't select always-autoaccessor semantics for fields was the performance cost Shu described. Another reason is that it wouldn't work with Object spread {...obj} [04:40:57.0000] if we didn't have class fields we wouldn't have to worry about decorating them 😅 [04:41:19.0000] i guess technically we don't have class fields yet [04:42:26.0000] yes class fields have too many issues. [04:43:22.0000] I really against class fields because it invent too many issues than solving real problems. [04:44:57.0000] `{...object}` issue is a separate issue, anytime u refactor code to accessors, it will break. So no news in engineering view at all. [04:46:56.0000] there is no emoji for how i'm feeling [04:48:00.0000] i had technical difficulties at the beginning of this presentation [04:48:03.0000] sorry for the z-index fail yall [04:48:37.0000] what was the professed motivation for this proposal? was it mainly for decorator interaction or mainly for syntax ergonomics? [04:48:49.0000] both [04:48:59.0000] ok, thanks [04:49:13.0000] I bring it up now because of decorators, but I've been thinking about it for awhile in general. [04:49:46.0000] I like this proposal generally [04:50:14.0000] I also hope we can have willset / didset like Swift. [04:51:40.0000] The proposal have some small issues but IMO, most issues are coming from other proposals (like fields), not the issue of itself. [04:54:09.0000] And I totally agree that decorator magically make field become accessor is a bad idea. [04:56:22.0000] ^ +1 [05:06:56.0000] grouping for objects looks a bit syntactically noisy to me `const foo = { bar { get() {...}, set(...) {...}: { internalField: { ... } } } }` where `{ internalField: { ... } } }` is an initial value of `foo.bar` [05:07:24.0000] for classes looks fine [05:07:29.0000] object normally do not use getter/setter frequently [05:07:42.0000] I believe it's most for classes. [05:08:02.0000] syntax for objects was presented on slides [05:08:20.0000] yes ,for complement, it should support object [05:08:38.0000] but I'm ok if it not [05:09:59.0000] I'd like the question that we ask for consensus on to include a statement about the relationship with decorators, not just Stage 1, since that's ambiguous [05:10:12.0000] I presented with object for comparison. I also feel that it makes more sense in classes than in object literals, but did not feel that was a reason to not consider it. [05:10:20.0000] I'm confused with the discussion. This proposal is for the developer to have the controls while writing the code, while decorators are just giving up that control to another program. I see them as orthogonal. [05:10:22.0000] I don't necessarily object to Stage 1 for this prposal [05:10:53.0000] I don't believe this being stage 1 should block decorators, but I do think this being stage 1 gives decorators an option to consider as an alternative to auto-converting fields. [05:11:13.0000] I agree decorator and this proposal could be orthogonal. That means decorator should not have auto accessor semantic. [05:11:30.0000] I remain concerned about the upgrade path issue [05:11:57.0000] that I think people will be unhappy to have to write extra tokens in their existing decorator usage (but, the more tokens, the worse) [05:12:32.0000] decorator magically auto accessor change the semantic dramatically and will cause problem in many cases. [05:12:36.0000] I proposed `trap` as an orthogonal feature for this months ago, and got pushback from decorator users about this issue [05:12:59.0000] and I want to respect that, even as I see it as a possible alternative [05:13:36.0000] Current stage-1 field decorators don't *automatically* work with the updated decorators proposal, because they would work differently. Stage-1 field decorators that convert something to an accessor do it using `Object.defineProperty`. They would have to explicitly write code to handle both Stage-1 style invocations as well as the updated proposal's decorator invocations. [05:14:46.0000] right, the upgrade path I mean is around decorator users, not decorator authors [05:14:52.0000] and there are minor grammar changes as well [05:15:01.0000] Those decorators, as part of their upgrade path, could instead throw with a clear explanation as to what needs to be changed. Static type systems like TypeScript could use the type information of the decorator to provide a design-time error as to whether the decorated target is valid (which we already do for Stage-1 decorators). [05:15:03.0000] but the need to write `trap` or `{get; set;}` would be a significant additional barrier [05:15:47.0000] some decorators authors are a bit nervous about type interactions with decorators, given how TS doesn't model much right now. It'd be good to discuss what more we can do with standard decorators [05:15:48.0000] This is good because developer now understand it will become accessors and know that there will be different semantic. [05:16:07.0000] i see a popup in the Teams UI that says "transcription has started" [05:16:12.0000] well, "including a decorator" is also an explicit signal [05:16:13.0000] we're also testing Teams's transcription? [05:16:22.0000] (and how do i see that?) [05:17:02.0000] Without a syntactic opt-in of some kind, decorators change a field in ways a user may not expect. This can impact performance and runtime evaluation due to subclassing. I am still concerned about these issues. [05:17:20.0000] No, "including decorator" is just means I want decorate something, not changing semantic dramatically. Decorate something normally not breaking change. [05:18:25.0000] I feel like, if Stage 1 means, "the committee agrees with this concern", that's something we should say explicitly [05:18:37.0000] and record as a conclusion, so we can build on it in the decorators champion group [05:18:45.0000] To me, this is similar to the discussion around decorating function declarations from several years back. If function decorators forced `let`-like semantics for a function declaration and prevented hoisting, decorating a function could break code and require refactoring. [05:20:11.0000] Our solution was to just defer function decorators until after class decorators [05:20:18.0000] Agree! Maybe we should introduce non-hoisting function declaration like `const f() {}` so we can have function decorators. [05:24:03.0000] shu: https://usercontent.irccloud-cdn.com/file/lts3X43J/image.png [05:24:51.0000] rbuckton: i don't see that [05:25:01.0000] i only have Device settings, Meeting details, and Enter full screen [05:25:16.0000] It may not be available for guests :( [05:29:28.0000] (I guess for function decorators, I just think we should go ahead with let-style semantics, since there's really no other way to do it. I don't feel like const function declarations would be worth it.) [05:31:24.0000] +1 [05:32:11.0000] so overall I don't really agree with the claim that, it's absolutely necessary that the "identity decorator" do nothing. I think it would be a *nice* property, but makes sense to weigh against other things [05:36:09.0000] Of coz everything are tradeoff. But I really feel decorator should not change semantic like that. Especailly in some cases u only want to deocator to add some metadata, and never expect any semantic change. [05:53:19.0000] yeah, shu +1, no one is going to expect `atob` to be missing in the new realm [05:53:50.0000] So let's add `atob` to JS ?? :P [06:04:13.0000] people in TC39 have made security claims about all sorts of features, such as Promises, private fields, etc. Maybe a rebrand would be a way to discard "baggage" but I don't think it makes sense to hold off on a feature because of confusing claims [06:05:05.0000] I'm ok with a rebrand to Context [06:05:30.0000] if that will help to clear up the confusion [06:07:13.0000] What rebrand mean? [06:07:21.0000] haxjs: rename [06:07:37.0000] instead of Realm we would call it Context [06:07:59.0000] and I'm +1 for this renaming if it's useful [06:08:32.0000] forgot to mention: as shu said, this is super lightweight on the js engine side, we already can do this -- most of the real work would be gecko [06:08:58.0000] I think Context is the lowest value word in all of computer science. perhaps second only to Data [06:09:07.0000] Not sure why `Context` is better than `Realm` ... [06:09:09.0000] can we plz rename compartments? [06:09:30.0000] I like "realm" because it sounds like we are in a fantasy novel and i think thats hilarious [06:09:34.0000] ;) [06:09:52.0000] Yeah, it's hard for me to remember the spelling of `compartment` :) [06:09:52.0000] joking aside, the name is hard for new comers [06:10:04.0000] if someone says "let's talk about Realms" in a computer conversation I immediately know they are talking about JS stuff [06:10:20.0000] I have thoughts about Compartments but I'd love to address them after we go through the Realms API (or Context API) [06:10:34.0000] i love the fact that we can talk about "the primordials of a realm" and it _not_ be scifi/fantasy [06:10:37.0000] Compartments is good too because no one else uses that work [06:10:43.0000] except for US [06:10:57.0000] firefox uses compartments 😭 [06:11:02.0000] oh [06:11:11.0000] The only thing I love about the name Realms is the fact we can have Frozen Realms and this sounds like Warcraft [06:11:19.0000] https://searchfox.org/mozilla-central/source/js/src/NamespaceImports.h#142 [06:11:42.0000] also, Realms reminds me of the cartoon Dungeons & Dragons, which is possibly the greatest cartoon of all time [06:12:39.0000] robpalme: well I watched it on pt-br so I missed any references, it took me a long time to know the time is originally Dungeons & Dragons. [06:12:57.0000] The RPG goes without translation in Brazil, at least [06:13:11.0000] "zone" in spidermonkey is also good -- reminds of the book roadside picnic [06:13:28.0000] switching to tdz [08:42:14.0000] please we cannot call this contexts node already has this and it's called contexts and the overlap will be painful [08:48:28.0000] Nations, Borders, Worlds, Universes, so many options [08:53:04.0000] Globals [09:09:23.0000] Globe [09:09:38.0000] that contains globals at least in English implications? [11:02:12.0000] there's no conclusion listed on "realms" for day 2's notes - what was the result? [11:14:05.0000] it was just a status update, proposal champions are still talking to HTML / browser vendors (beyond just the JS engine people) [11:14:31.0000] people were positive about it in the temperature check though [11:25:05.0000] ah ok, thanks [11:25:09.0000] the title is "for stage 3" [11:25:18.0000] (is why i asked, i mean) [11:32:53.0000] so wait, `at` is back for Strings now too? [11:34:34.0000] always has been [11:35:29.0000] 🔫 👨‍🚀 [11:37:56.0000] lol. [11:38:04.0000] guess I'll revert my revert then [11:39:47.0000] we need to be careful tho, core-js apparently shipped the old stage 1 code-point-based String.prototype.at polyfill [11:39:58.0000] so depending on how it installs it, there might be web compat issues [11:41:00.0000] right, I just noticed that thread [11:41:15.0000] Why are they shipping `at`? It was renamed to `codePointAt`, right? [11:41:45.0000] jridgewell: no, that's different [11:41:56.0000] jridgewell: there's a stage 1 proposal by mathias for String.prototype.at that returns code points [11:42:24.0000] jridgewell: it's basically dead at this point, and nobody should have ever shipped a polyfill for it at that early a stage, but since core-js did, we have to pay attention to it [11:42:58.0000] jridgewell: codePointAt returns a number, not a string code point [11:43:13.0000] jridgewell: like `'💩'.at(0)` would return `'💩'` [11:43:43.0000] Ugh [11:46:42.0000] the existence of the old proposal is fine, but i'm ugh on enabling stage < 3 polyfills by default, yes :-( [14:14:36.0000] "< 3 polyfills" - horse_js [14:14:41.0000] (not actually) [14:15:23.0000] lol [14:15:47.0000] wait so the main thing I want to know is [14:16:06.0000] was commitment expressed by V8 or SM to ship String.prototype.at and see what breaks? [14:22:42.0000] historically, no [14:22:58.0000] String.prototype.at was a ES2015 proposal [14:23:09.0000] wait what [14:23:11.0000] rkirsling: the "item" proposal's string method tho, i think yes [14:23:31.0000] yeah I mean the new one [14:23:38.0000] ah gotcha [14:23:38.0000] I didn't realize the name had come up before [14:23:49.0000] rkirsling: mathias' old proposal is stage 0 [14:23:53.0000] that seems...complicated, but not necessarily in a way that affects web compat? [14:23:56.0000] ahh cool [14:23:56.0000] it should probably be moved to "inactive" actually [14:24:17.0000] rkirsling: the issue is that core-js has a polyfill for the old String `at` proposal. depending on the way it's installed, it may, or may not, cause web compat issues [14:24:20.0000] right [15:55:58.0000] let's start with this instead :) https://github.com/tc39/test262/pull/2905 2020-11-18 [01:07:42.0000] btw the note taking bot has some autocorrects thanks to michaelficarra now [01:07:57.0000] feel free to suggest more to me and I'll try to sneak them in during pauses in talking [01:08:05.0000] I just added a few including "Jason -> JSON" [01:11:09.0000] nice, I thought it learnt [01:11:43.0000] there are actually other models which let you give it a list of vocab words, which is really cool [01:11:57.0000] unfortunately they don't work as well for this sort of audio [01:12:24.0000] training it on the entire set of tc39 notes might help [01:13:08.0000] not a feature they offer, alas [01:13:29.0000] … and that was the fateful day EcmaNet became self-aware, and began inserting semicolons into code worldwide [01:14:24.0000] whoever is selecting large blocks of the notes, could you not do that? [01:20:04.0000] someone did that with the whole text yesterday regularly [01:20:42.0000] here agaun [01:20:54.0000] anonymous moose [01:21:31.0000] now that the bot is getting tuned and we're getting better at live editing the notes, this meeting's notes are FANTASTIC IMO [01:24:14.0000] it is fascinating to me that the bot wants to spell "JSON" as "Json" [01:24:19.0000] I will maybe add an autocorrect for that [01:25:31.0000] anonymous moose again [01:25:43.0000] someone is still highlighting large blocks of text… [01:25:47.0000] should I point of order? [01:27:00.0000] ystartsev: "JSON.module" seems like a strange way to me to add the ability to unfreeze+copy a frozen object, especially the first non-syntactic way to import a module [01:27:20.0000] would JSON.module be sync or async? would it work in Scripts as well as in Modules? [01:27:49.0000] i would imagine it being similar to `import` -- we haven't delved deep on what this should look like or strong opinions here [01:28:39.0000] the idea is that this would allow people who are expecting json.parse like behavior would be able to get it this way [01:29:00.0000] that would mean there's no way to "synchronously" import a normal, idiomatic, mutable parsed JSON object? [01:30:04.0000] there are of course, other options, but that would break from what we currently have with `import` [01:30:11.0000] right [01:30:21.0000] does that mean that its impossible? no, but thats a trade off we have to decide on [01:30:46.0000] from my perspective, there is a use case, and an expectation, from users to have this behave something like json.parse [01:30:58.0000] right, which is "mutable" [01:31:02.0000] yes [01:31:10.0000] also, imo a VERY strong expectation that it works like `require(json)` does in node [01:31:11.0000] which is also mutable [01:31:12.0000] but, this could be error prone, since its also a copy [01:31:20.0000] but that isn't possible with modules [01:31:29.0000] in node, it's not a copy, the require cache is a singleton [01:31:36.0000] that is why we ended up leaning towards immutibility [01:31:44.0000] in node, for a decade, every required json file has been shared and mutable as a singleton, and in practice it hasn't caused issues [01:31:46.0000] but its "leaning" its not "it must be this way or else" [01:32:12.0000] for the sake of note takers repeating questions is useful [01:32:40.0000] maybe i wasn't clear that we are not enforcing an opinion here [01:33:13.0000] i understood that :-) just exploring the suggestion/leaning [01:33:44.0000] rricard: i agree [01:33:52.0000] ljharb: it may not have caused problems, but I can tell you it's a missed opportunity. it's costing us a MB of overhead because the emoji json data needs to be loaded once per app. for our host environment, we will soon switch that to be frozen and shared to save memory. [01:34:30.0000] I like this argument from gibson042 of mutability still being a big win since more people can transition from eval hazards [01:35:10.0000] robpalme: i'm a bit confused by that; how would it being frozen allow it to be shared per app? [01:35:45.0000] we run multiple users app inside what node would consider to be one app. today we must duplicate the structures because JSON imports are mutable. [01:35:58.0000] robpalme: ok, but you could choose to freeze them and then share them, no? [01:36:03.0000] yes! [01:37:04.0000] so how is "mutable by default" getting in the way of that option? [01:37:28.0000] because if apps become dependent on that assumption, we can't give them immutable values [01:38:07.0000] and 99.9% of usage is not dependent on it being mutable. people use it as read-only data loading. [01:38:15.0000] why would they become dependent on that assumption if your initial json modules implementation in your in-house platform chose to freeze them, regardless of what the standard says? [01:38:20.0000] so, i don't really consider json.parse and require(json) to be really similar. one is a copy and the other is not. the hazard for developers is very different [01:38:54.0000] i don't think that because the hazard exists that it means we shouldd replicate that behavior [01:39:01.0000] it's very fair that `JSON.parse` makes a copy every time [01:39:37.0000] also, clarification -- exists in node. for those working on web apps they may only have the intuition from json.parse [01:39:52.0000] i wonder if anyone optimizes `JSON.parse(JSON.stringify(x))` [01:40:05.0000] you know, its sad but i have seen that code [01:40:38.0000] re selecting text, i wonder if someone's trying to paste the content in translation software to translate it to their language? [01:40:43.0000] (cc akirose ^) [01:40:55.0000] possibly... [01:41:03.0000] that would make sense [01:41:22.0000] should we have a live translation bot [01:41:28.0000] also, did we ever figure out how to make the google doc show people's names when they're logged in? [01:41:35.0000] I thought it was axolotl? I don't want to wrongly blame moose [01:41:49.0000] i see it as chipmunk rn [01:41:50.0000] I think we get diffferent animals [01:42:03.0000] oohhh lol well then that's not helpful [01:42:10.0000] thanks yulia! [01:42:19.0000] that's a great idea, ystartsev [01:42:40.0000] queue needs advancing [01:44:00.0000] @ljharb it's true that this efficiency can be gained by deviating from ecmascript, but it's better for the behaviour to be aligned. otherwise third-party code doesn't work. so if other users of ES can benefit from this (e.g. moddable putting JSON data in ROM, or using read-only shared pages) then it could be worth standardising [01:44:24.0000] WE ALL SEE DIFFERENT ANIMALS?! WHAT'S THE POINT [01:44:57.0000] V8 makes use of shared memory across processes to increase efficiency [01:45:33.0000] robpalme: if third-party code doesn't work tho, wouldn't that be because it needs the mutability? [01:46:13.0000] ryzokuken ptomato: so does this mean that the temporal spec is, barring minor editorial issues and perhaps naming bikesheds, frozen, and thus ready for review? [01:48:38.0000] right - but we set the tone here for the whole ecosystem. and if users become accustomed to immutability, that increases the amount of code that will be compatible [01:48:54.0000] info on how to copy is now in the doc, if it happens again you can move the note down to communicate async with people [01:49:59.0000] yep will do thanks a lot again [01:52:22.0000] robpalme: RO spaces aren't used for general frozen stuff, but distinguished RO VM-internal things like some maps and constants like NaN [01:52:45.0000] robpalme: so i wouldn't extend the argument that if JSON modules were immutable, that'd enable some kind of cross-isolate sharing [01:53:22.0000] sure - I wasn't trying to imply this is used for user-data today [01:53:57.0000] shu: just to verify -- v8's position is "rather mutable"? [01:54:23.0000] ystartsev: leaning mutable, yeah [01:54:52.0000] and this is from a user ergonomics perspective or was there also a technical reason? [01:55:04.0000] no technical reason [01:55:37.0000] ok, so we differ on how this might impact users, thanks for verifying [01:55:55.0000] i'm somewhat swayed by the user expectations argument [01:56:19.0000] yeah, agreed, thats why we thought a complementary api might be a good idea [01:57:02.0000] i think the difference of opinion comes down to how deeply baked in to the mental model of ESMs the idea of live bindings is [01:57:41.0000] the hazard seems to generalize to well beyond JSON modules [01:57:49.0000] unclear why we should raw the line here [01:58:06.0000] draw* [01:58:16.0000] it might also be coding style -- as rob mentioned above, they copy everything. When I was programming js, this was the pattern I used as well -- so it doesn't make sense for me, as a js dev, to have it be mutable. Having it be immutable would prevent mistakes [01:58:23.0000] but this is coding style, and not objective [01:58:34.0000] i will say that if live bindings didn't exist, it'd be a lot more reasonable to claim users would expect an immutable import [01:58:44.0000] what does the "copy everything" style mean? [01:58:48.0000] that is a good argument [01:58:51.0000] note we copy everything in our infra [01:58:58.0000] not end users [01:59:36.0000] rpalmer: maybe worth clarifying [01:59:38.0000] the whole "soft immutability" coding style: `newState = {...oldState}` or something to that effect. Depending on the data, we might have a library method called deepCopy [02:00:02.0000] i see [02:00:16.0000] my problem is after all these years i still don't program JS [02:01:27.0000] shallow copies are common; deep copies are something i consider a code smell, and there's a ton of caveats and assumptions baked into libraries that offer it (i maintain two of them) [02:02:12.0000] ystartsev: but anyway i won't really push back either way, immutable or not [02:02:51.0000] usually you don't end up doing deep copies (or at least i have no memory from the last few years of doing that). But at some point I did cross a deep copy, though in tests [02:03:07.0000] @shu: Does that imply Chrome would accept either way? [02:03:21.0000] ystartsev: good point, i have often used it in test fixtures [02:03:23.0000] i mean, similar case here: if its mutable or immutable we don't have a strong opinion. leaning to immutable, suggesting that an api exists to copy the object if it does [02:03:55.0000] we had a discussion of json.copy before we came to the conclusion of something like `import` instead [02:04:21.0000] we are only 2 note takers we can continue like this but a third one would be appreciated [02:04:23.0000] hmm - i suppose `JSON.parse(JSON.stringify(obj))` is an idiomatic way to deep copy a JSON object, frozen or not [02:04:45.0000] how fast/slow is that in engines? i've never measured [02:05:05.0000] gunna jump on the notes, excuse me [02:05:12.0000] np thanks [02:05:27.0000] someone is a pumpkin [02:07:04.0000] bakkot: add temple => temporal autoconvert [02:07:56.0000] robpalme: afaik yes [02:08:04.0000] woooooooo [02:08:15.0000] thank you [02:09:49.0000] (that woo is an individual delegate woo, not a chair group woo) [02:11:36.0000] rricard done, though maybe too late now [02:11:51.0000] people are going to talk about temples some more [02:15:01.0000] Richard has clarified that he's not asking for the emoji thing. i think that should be taken down. [02:15:03.0000] Where am I supposed to find the new temperature check emoji? I don't see them on tcq [02:15:23.0000] sffc: the chair group puts it up when a champion asks for it [02:15:35.0000] or when someone asks for it, i guess, dunno if it has to be champion [02:17:35.0000] gibson042: is there a specific part of the existing proposal that you're worried about right now? (that i missed) [02:17:46.0000] or is this a general philosophy question [02:19:25.0000] the latter... I'm not concerned with any given approach, but consider it important that TC39 not repeat the de facto squatting that came from Java [02:19:32.0000] gotcha [02:20:59.0000] and it would be bad if we followed e.g. an IETF draft for "[c=Japanese]" that *their* process transforms into "[cal=japanese]" before publication [02:22:22.0000] "The best laid schemes o' mice and men gang aft a-gley" [02:27:24.0000] ryzokuken: you are still presenting [02:27:47.0000] michaelficarra: sorry! [02:27:52.0000] stopped presenting now [02:29:51.0000] am i the only one with weird screen? [02:29:59.0000] no [02:30:04.0000] it looks clipped for me [02:34:41.0000] (I've seen issues with the emoji reacts not popping up on mobile sometimes) [02:38:10.0000] OK, Surma confirmed with me that the 1 PM timeslot works for JS module blocks [02:38:47.0000] sad i'll miss it :-( [02:39:41.0000] sorry had to walk away from the computer for a bit [02:39:41.0000] do we have enough editors? [02:39:44.0000] back [02:39:50.0000] rricard: thank you ♥️ [02:40:29.0000] devin transcription is gooood [02:40:35.0000] (☞゚ヮ゚)☞ [02:40:51.0000] robpalme: akirose: surma says he'll be ready for 1pm slot [02:41:00.0000] ty [02:41:04.0000] oh i missed what littledan said above already [02:41:07.0000] drousso: a query API combined with a hardcoded list basically === an enumeration api [02:41:15.0000] drousso: just, less ergonomic for good actors. [02:41:47.0000] yeah it seems like nobody had told him about the 11:30 scheduling for his topic [02:42:08.0000] it's a bit hard to communicate this given how dynamic the schedule (necessarily) is [02:42:27.0000] I can't believe the chairs manage to handle it with all the different things that come up [02:42:28.0000] yeah but... that was specifically in that time slot to accomodate various scheduling constraints [02:42:34.0000] including his [02:42:39.0000] right, we just forgot to tell him the result [02:42:43.0000] I think you did a good job [02:43:01.0000] this was more on me [02:43:17.0000] ooooh got it he wasn't looking at the reflector actively [02:43:26.0000] /me curtseys [02:43:27.0000] right, he's not a frequent TC39 attendee [02:48:19.0000] gibson042: We all agree that it's important for us to not repeat the de facto squatting. I'd go further and say, it's a Stage 3 prerequisite that we get somewhat far along in the standards discussions. I think an IETF draft is a good checkpoint here; I don't know exactly what the Stage 4 prerequisite should be worded as [02:54:10.0000] you can always monkey-patch on top of these APIs to add more data [02:54:41.0000] also browsers and other JS environments often have strong timezone update mechanisms to get the freshest data directly in the host [02:55:12.0000] bakkot: Intel to Intl [02:55:34.0000] actually [02:55:51.0000] yeah our Intel delegates may not appreciate that [02:55:54.0000] yulia did you mean intel, the company this time? [02:56:22.0000] i believe she said Intl [02:56:31.0000] will do as soon as there's a gap in the audio [02:56:47.0000] where did leo start? [02:57:05.0000] let me see the notes [02:58:29.0000] michaelficarra: when was the last time we had an Intel delegate? [02:58:59.0000] shu: we did for SIMD, and a number of meetings after [02:59:06.0000] but it's been awhile [02:59:11.0000] yeah i feel like at least 2 years [02:59:46.0000] yeah, we had Peter for a while [03:00:17.0000] bakkot can you stop [03:00:28.0000] done [03:00:32.0000] thanks [03:00:36.0000] Bakkot: does the transcription bot always insert at EOF, or can it be made to insert before a marker, so there's a scratch space at the bottom of the doc? [03:00:43.0000] always EOF [03:00:54.0000] as usual won't be able to be an editor this afternoon [03:01:12.0000] gdocs API claim to support insertions anywhere but interacts very poorly with people editing the doc live [03:04:16.0000] littledan: agreed. If it looks like IETF will be the body to which TC39 defers, then I would say publication of a Standards Track RFC would be the ideal Stage 4 prerequisite [03:05:56.0000] gibson042: That makes sense but I don't know what exactly constitutes a "standards track RFC" and how the calsify WG ends up working. I feel like this comes down to details that we'll learn as we work with them more. [03:06:18.0000] as Ujjwal explained in his presentation, and as we've been discussing with you in the champion group meetings, this whole thing is already the plan [03:14:49.0000] I feel like, even if the committee's temperature were flexible on requiring that we go through standards, we should still do it, to be safe [03:15:08.0000] https://tools.ietf.org/html/bcp9#section-4 [03:15:41.0000] (Someone who works in IETF told me the official documentation doesn't really match their practice) [03:16:29.0000] so I think this is just something we have to figure out the details of as we go along with IETF Calsify WG, and judge based on what we learn there, which point would be "standard enough" for Stage 4 [03:16:47.0000] I agree that it should be pretty standard and stable and agreed-on as a Stage 4 prerequisite [03:43:17.0000] and the idea will be to have a solid draft that is moving along in reviews with IETF as a Stage 3 prerequisite [03:48:35.0000] perfect [03:58:25.0000] we will restart in 2 mins! [03:58:40.0000] Surma is in pole position, ready to go [04:10:46.0000] metaproperties could be used to avoid the NLTH problem [04:10:53.0000] something like new.module { … } [04:11:51.0000] i guess you care about typing `module\n{`? [04:12:51.0000] who is the "you" here? [04:13:39.0000] only people who omit semis would care about that [04:13:53.0000] you, michael ficarra [04:14:39.0000] no, not at all [04:14:52.0000] but it was brought up in the slides that we would need a NLTH for the shown syntax [04:15:01.0000] and I was saying that there's an alternative: metaproperties [04:15:32.0000] if the line break is important, we could also investigate a "keyphrase", like `inline module\n{` [04:16:04.0000] where there's an NLT between `inline` and `module`, but not between `module` and `{`, similar to `async function` [04:20:16.0000] isn't `module` a reserved keyword in strict mode? [04:20:39.0000] haha what a confluence of conditions... [04:20:46.0000] we have too many Daniel's! [04:21:14.0000] are we at more-daniels-than-women today [04:21:16.0000] i think we are [04:21:35.0000] Shu's comment should precede mine [04:21:47.0000] I guess scope = global object? [04:21:58.0000] yeah, it has to be global object [04:22:15.0000] we hear some typing noise [04:22:49.0000] Realm! [04:22:56.0000] I feel like... if tooling is responsible for configuring different files for different global environments, maybe there can be a solution on a tooling level for this. Magic comments? [04:23:34.0000] // @ts-realm:worker [04:23:36.0000] I don't think `module` has ever been reserved? `package` is though. [04:25:38.0000] oh hmmm [04:30:54.0000] note that it's totally kosher in HTML to let something be postMessage'd but not IndexedDB-serialized [04:32:14.0000] this is based on the forStorage argument of the serialization algorithm https://html.spec.whatwg.org/multipage/structured-data.html#serializable [04:33:00.0000] Daniel Rosenwasser - please add yourself with abbreviation to attendees in today's notes [04:33:23.0000] I've just updated your quotes in the notes doc to DRR (they were attributed to DRO by mistake) [04:33:32.0000] sffc: i had vision talk yesterday on your exact topic, IIUC [04:34:56.0000] sffc: shu's slides for that were—and this is a bold statement—the best he's ever done [04:35:18.0000] that's not bold - it's fact [04:35:24.0000] sffc: https://docs.google.com/presentation/d/1kqtsJfLVC-Nmcm2sveMRdJPjurwKKiiCGilK2_ladpw/edit?usp=sharing [04:35:31.0000] can't claim credit for the theme, i found that theme [04:35:57.0000] shu: cool! Yeah, I took a rain check for that part of the meeting. Thanks for flagging :) [04:36:49.0000] no worries, sorry if i implied any judgment about missing the meeting [04:37:11.0000] i don't know if Surma is in IRC, but this is awesome and i'd love to help out if that's desired :) [04:40:37.0000] I am also interested in this, especially in how shu wants to tie it in to concurrency as well as some of the ongoing discussions about typed objects. [04:44:33.0000] "Vision for concurrent JS" looks really cool; I'm sorry I missed it! I'll read up on the notes [04:44:58.0000] +100 for merging; this is a significant improving in clarifying and documenting our process [04:44:59.0000] oh boy, I did not know we were going to be agreeing to process doc changes today [04:45:47.0000] the slides have been posted since before the deadline, indicating that they would ask for consensus [04:45:49.0000] this was raised in the previous meeting, michael [04:47:06.0000] Yulia explained that there aren't substantial changes since last time [04:47:08.0000] I just thought it was another update [04:48:45.0000] WeakRefs are a great example of why "rejected" is not a useful concept--I thought Waldemar was going to talk about this :) [04:49:02.0000] can't rejection just be a signal to the chairs to not allow something substantially similar to this be brought forward again? [04:49:17.0000] I think "inactive proposals with documented objections" is a good way to represent this [04:49:31.0000] I don't really understand what the role for chairs that you're proposing is [04:49:59.0000] notes from previous meeting: [04:49:59.0000] https://github.com/tc39/notes/blob/master/meetings/2020-09/sept-22.md#process-document-clarifications [04:50:00.0000] littledan: one of the primary responsibilities of the chairs is to decide what the committee does work on during plenary [04:59:40.0000] +1 to improving documentation about the status of all the proposals, and doing post-mortem discussions as a committee, if this is what msaboff_ is proposing [05:00:18.0000] I think this is a good thing to discuss in a future process discussion; I don't think it needs to be coupled to this one, which is focused on documenting our existing process [05:05:13.0000] +1 [05:05:42.0000] also it would be nice to clarify https://github.com/tc39/process-document/issues/4#issuecomment-729657851 [05:06:50.0000] msaboff_: interesting point, i think that depends on removal is wholesale removal or reworking the feature [05:07:34.0000] msaboff_: cf my removing subclassing proposal, which i'm taking through the staging process, but i don't really know what that means [05:10:17.0000] littledan Documentation is part of what i was asking for, but I think we should acknowledge that some proposals will likely never advance. [05:10:49.0000] shu I do agree with the point you just posted in TCQ [05:10:58.0000] cool [05:15:07.0000] mathiasbynens: do you know what Markus' preferred initials are? [05:15:22.0000] also please send a PR to delegates.txt or ask him to do so [05:18:18.0000] it's already there; MWS [05:18:26.0000] https://github.com/tc39/notes/pull/86 [05:18:35.0000] oh I hadn't refreshed since the start of the meeting [05:18:39.0000] I see it now [05:18:58.0000] 👍🏻 [05:20:49.0000] I love this capability, but resolving syntax seems like it's going to be difficult [05:21:05.0000] yeah, [a—b] already has a meaning [05:21:14.0000] gibson042: depending on what syntax the committee would prefer, we could introduce a new flag [05:21:26.0000] :( [05:21:29.0000] isn't this the unicode consortium has a recommendation for? [05:21:31.0000] agreed we definitely don't wanna break back-compat [05:21:32.0000] Yeah, I'm worrying about syntax as well. [05:21:38.0000] Oniguruma uses `&&` for intersections in character classes [05:21:46.0000] unicode consortium has so much stuff in their regexes [05:21:59.0000] And `[]` for nested sets [05:22:22.0000] https://github.com/kkos/oniguruma/blob/cd8357ff348a61084543afc87f7f685906c03d39/doc/RE#L205-L215 [05:22:23.0000] the syntax in the slides is what UTS18 + most implementations use, but UTS18 allows both `&&` and `&` iirc — I think whatever we choose we'd want to pick just one [05:23:21.0000] I don't know is therre are any fully conforming implementations of the Unicode consortium suggested RegExp in UTS18 - https://unicode.org/reports/tr18/ [05:23:30.0000] we only have ~1 person editing notes btw and they are getting a bit incomprehensible [05:23:42.0000] `&` is problematic on its own, since `/a&b/` is already a valid RegExp. So is `&&` for that matter. If we used either we might need a flag to opt into the behavior [05:24:16.0000] rbuckton: note that the problem is slightly smaller in scope, since only the syntax within [] would change [05:24:31.0000] so not /a&b/ but /[a&b]/ [05:24:46.0000] which also is already valid [05:24:47.0000] rbuckton The syntax could be limited to inside character classes, which may make the syntax problem possibly easier. [05:25:08.0000] gibson042: i know [05:25:26.0000] Ah, yeah, that's true. And `[a&&b]` is less likely to exist due to the fact two `&` characters in a class is redundant. [05:25:29.0000] I love that we keep working on making RegExps better in TC39 [05:25:51.0000] rbuckton: indeed. (but even the redundant form is valid so your point stands) [05:25:57.0000] All of these are problematic. /[[0-9]]/ currently means a character class containing '[' or one of the ASCII digits, followed by a ']' character. [05:26:01.0000] Wow, RexExp and readable in the same sentence! [05:26:37.0000] littledan: I'm also considering bringing some RegExp features to TC39 in a future meeting [05:26:45.0000] Also, /a--b/ means a range starting with 'a' and ending with a '-', or a 'b' character. [05:27:00.0000] bterlson deserves a lot of the credit for kicking this off with his classic "RegExp buffet" presentation. There's still other things there that could be picked up! I wish I could find the slides. https://github.com/tc39/notes/blob/master/meetings/2015-11/nov-17.md#regexp-buffet [05:27:07.0000] Sorry, meant /[a--b]/. [05:27:25.0000] unfortunately, the only reserved characters in a character class are `\` and `]` and `-` [05:27:35.0000] everything else just represents itself [05:27:40.0000] one big thing that would be great in JS RegExps would be a template tag constructor form, so you could interpolate in literal strings or compose different RegExps [05:27:43.0000] wsdferdksl: thanks for pointing out those examples. i think these show that we'd either need A) a flag or B) wildly different syntax that somehow doesn't have these problems [05:27:55.0000] We may end up needing a flag, but I'd definitely use this. [05:28:04.0000] if anyone is interested in championing that, I'd be happy to connect you to past discussions about it, do reviews, etc [05:28:37.0000] same, I am interested in a RegExp template tag [05:29:17.0000] Can we invite `surma` here? He's in #tc39 [05:29:18.0000] maybe ECMAScript can introduce a "U" flag for UTS18 [05:29:32.0000] Markus is looking for the mood of the committee, temperature check is open [05:29:37.0000] Not another mode flag ;( [05:29:38.0000] I don't even know if I'm joking [05:29:48.0000] `/./🇺` [05:30:00.0000] please no flags for this [05:30:16.0000] michaelficarra: any ideas on how to avoid having to add a flag? [05:30:53.0000] i can't think of syntax that would work off the top. would be great if there was a way [05:32:38.0000] yeah that's why I don't think this is good for syntax [05:32:43.0000] see my queue entry [05:33:33.0000] the pattern grammar doesn't have much room for extension without flags, and I really don't want to add a flag for every new (and infrequently used) regexp feature [05:34:26.0000] we could theoretically come up with a "strict mode" flag for regexp and reserve a set of characters that give us room to expand the syntax inside of a regexp. [05:34:28.0000] who is this Mark that is speaking? [05:34:41.0000] You could introduce new syntax using some existing \ escape (this makes the most sense for unicode flagged expressions where escapes as reserved). [05:34:56.0000] Markus Scherer is speaking [05:35:47.0000] possibly `/[\U…]/u` [05:35:49.0000] I believe he represents Google in the Unicode Consortium [05:36:07.0000] Sure or \U[...] [05:36:25.0000] yep [05:36:41.0000] I think this is possible [05:37:08.0000] I remain impressed with meeting attendance. We have 36 now. [05:40:32.0000] I could see the `u` giving us this flexibility, with caveats. For example, intersection using `\I{A,B}`to intersect the character classes of A and B (i.e., `/[\I{\p{Letter},\p{Lowercase}}]/u`) [05:40:54.0000] Not the prettiest, but its viable. [05:41:10.0000] Mark is Mark E. Davis: https://en.wikipedia.org/wiki/Mark_Davis_(Unicode) -- I opened a PR to add his acronym MED: https://github.com/tc39/notes/pull/87 [05:42:55.0000] i hope we didn't try to explain unicode to him [05:45:00.0000] you have to be pretty good in a field to have a wikipedia page with a disambiguation naming that field [05:45:56.0000] Isn't Mark E Davis the Unicode Editor or similar? [05:46:22.0000] gibson042 Good on you to place syntax in TCQ!!! [05:47:30.0000] RegExp pattern syntax at that. [05:47:38.0000] ✔ [05:49:31.0000] yeah that's Mark alright [05:49:54.0000] he's only the President of the Unicode Consortium, nbd [05:50:43.0000] yeah but can he name every unpaired surrogate [05:51:11.0000] U+D83D U+DE02 [05:54:37.0000] gibson042: or even `\U{{[A]--[B]}}` and `\U{{[A]&&[B]}}` etc. [05:55:53.0000] heck we could even do `\UnicodeSet{…}` [05:56:13.0000] exactly [05:56:49.0000] love it [06:00:41.0000] if Chrome can ship Scroll to Text Fragment as "#:~:text=prefix-,startText,endText,-suffix" and sleep at night, we can do this kind of damage [06:02:09.0000] https://github.com/mathiasbynens/proposal-regexp-set-notation/issues/2 [06:02:24.0000] ok bedtime [06:02:38.0000] Going to bed as well... [06:02:39.0000] transcription worked noticibly better today than the last two days, I think! [06:04:49.0000] we officially hit 50 poages! [06:04:52.0000] *pages [06:05:15.0000] mathiasbynens but \U has to be the name of a unicode character [06:05:34.0000] \U{HEAVY BLACK CHECK MARK} [06:05:56.0000] devsnek: this doesn't prevent us from doing that [06:06:13.0000] hmm I guess you're technically not wrong [06:06:27.0000] Words 27759 [06:06:35.0000] we can use any unused escape in `u`-mode, so there's some flexibility here. [06:06:39.0000] my favourite part of the bible [06:08:52.0000] we use timestamps to track agenda items, e.g. mark 10:15-10:30. [06:09:07.0000] 🙏 [06:09:37.0000] thou shalt not share wet objects with dry realms [06:09:45.0000] one time i started using them to look up biblical references and freaked myles out by making up a super plausible psalm on consensus [06:10:08.0000] lol [06:14:22.0000] rbuckton: this is assuming you want this feature to only be usable in strict mode code [06:15:26.0000] what feature? RegExp sets and intersections? I was talking about a strict-mode flag for RegExp, which apparently `u` satisfies. [07:29:11.0000] not strict enough [09:10:31.0000] shu: regarding your question about intl enumeration, i got the following answer: "large API surface - we are entering the world of an API that will return 50-100 items depending on the "query" that are all fingerprintable and the very intention of the API is to let apps adjust their behavior depending on the returned values. Which means that changes to what we return may become web-compat issues." [09:54:32.0000] devsnek: in what sense is /u not strict enough? Tokenization is not affected by introduction of a new backslash sequence. [10:29:50.0000] gibson042: it allows annex b [10:43:06.0000] which doesn't affect tokenization AFAICT, and the relevant changes to the regular expression grammar are strictly applied to non-/u expressions (which is why `(/\U[\p{N}]/u)` is a SyntaxError while `(/\U[\p{N}]/)` is not) [10:44:06.0000] yeah, to quote: "none of these [Annex B] extensions change the syntax of Unicode patterns recognized when parsing with the [U] parameter present on the goal symbol." [13:03:09.0000] ystartsev: thanks, is that... implementation difficulty? [13:03:17.0000] those sound like valid concerns, but not implementability concerns [13:06:59.0000] true web compat in the presence of changing locale data is probably an impossible dream anyway [13:11:42.0000] (which isn't to say it would stop users from submitting bugs based on naive assumptions of stability though) [13:22:24.0000] rkirsling: swapping locales generally requires restarting browsers already [13:23:32.0000] oh, I didn't even mean default locale [13:24:35.0000] like, so many of the intl402 tests in test262 are basically CLDR regression tests, even though ECMA-402 itself doesn't care what locale data you actually have available 2020-11-19 [20:40:44.0000] shu: would my item methods CL be good to continue with the new consensus? [20:41:15.0000] devsnek: yep, should be a simple rename [20:41:21.0000] cooleo [20:43:07.0000] shu: rename is `at` right? notes don't say [20:43:28.0000] yep, at [20:43:47.0000] if that is also not web compat, i floated itemAt and didn’t hear any opposition [20:44:30.0000] fyi https://trac.webkit.org/changeset/270005/webkit [20:45:16.0000] i'm gonna just call this flag `--harmony-indexing-methods` [20:46:36.0000] relative-indexing? [20:47:21.0000] `Genesis::InitializeGlobal_harmony_relative_indexing_methods` probably not the longest method name but its up there [20:48:18.0000] I mean "at method" is unlikely to clash with another feature proposal tbh [20:48:58.0000] i just don't want to rename the flag again, it causes v8 to fully rebuild 😫 [00:57:07.0000] Have we started? [00:58:39.0000] 2 mins until we start [01:02:58.0000] we have started hax with Extensions for Stage 1 [01:19:57.0000] I appreciate how well the history of this proposal was researched [01:23:16.0000] yeah same, ⭐️gold star⭐️ for haxjs the research is fantastic [01:23:24.0000] Why did the administrator disable video? [01:23:33.0000] ? [01:23:52.0000] On Teams. [01:24:01.0000] "Video sharing is disabled by the administrator." [01:24:11.0000] sounds like a bug or something. recommend restart client i guess? [01:25:38.0000] Restarting the client fixed it. [01:25:52.0000] Thanks! [01:33:56.0000] I wonder how feasible overriding `.` dispatch might be in JS if we used syntax similar to some of these other languages, especially if we're considering something like `with operators from M`, would `with extensions from M` allow implementations to optimize property lookup given what's known about the lexical scope and current running environment, or would this be just as bad as legacy `with (x) {}`? [01:36:23.0000] okay 1::px is a pretty cool use [01:37:25.0000] +1 michaelficarra's queue item [01:37:26.0000] At one point I proposed infix `'` for that kind of notation, which is something C++ considered (i.e., `1'px`) [01:39:57.0000] sorry i'm late, forgot to set an alarm :-/ [01:41:58.0000] I think this proposal is much too worked out for this early stage, but I'm pretty excited for how much mileage we can get out of a single feature [01:42:49.0000] i've taken the opposite gut reaction about readability than the intended one [01:43:01.0000] haxjs: is there a slides iink? [01:43:02.0000] We also could have gotten that from the prior `::` bind proposal, or the various `|>` proposal versions. [01:43:09.0000] it is in the notes [01:43:15.0000] rricard: thanks [01:43:21.0000] http://johnhax.net/2020/tc39-nov-ext/slide [01:43:29.0000] i.e., `1|>px` is just as terse. [01:44:33.0000] I mean pipeline is cool too [01:44:53.0000] rbuckton: i would be uncomfortable for this to coexist with pipeline proposals at stage 2+ [01:45:02.0000] this is already a different way to do dispatch [01:45:16.0000] shu: they are different precedence, which makes uage considerably different [01:45:16.0000] to add to the matrix a different way to do function composition as well only compounds my readability worries [01:46:19.0000] shu: you should state your concerns about the proposal overlap though, because I agree it should at least be researched and addressed [01:46:31.0000] sure [01:47:19.0000] shu: `::` and `|>` (F# style) are similar operators except that `::` calls the RHS with the LHS as `this`, and `|>` calls the RHS with the LHS as the first argument. They both serve a need, although I do see `|>` being more flexible (regardless of the version). [01:49:20.0000] the point is that it's easier to convert `this` to an argument than vice versa, right? [01:49:51.0000] `o::f()` to bind `this` is much shorter than the partial application approach of `o |> f.call(?)` [01:50:51.0000] and actually more powerful, since Function.prototype.call is deniable [01:52:58.0000] Very good point, gibson042. I am always very aware of that and saving my own copies of such built-ins for these purposes. Would love to not have to do that. [01:54:07.0000] Though I've had other thoughts on how the `::` token could be used in absence of bind/call. I've been thinking about native events and event subscription in a way that can work with either `EventTarget` and `EventEmitter`. Using `::` for events has some slight precedent due to JScript's old `function window::onload() {}` syntax (though what I'm considering is nothing along those lines). [01:56:14.0000] gibson042: is this not deniable? [01:56:23.0000] gibson042: i thought there was a hooking point via @@extension proposed but i was sleepy [01:56:55.0000] hmm, maybe I misunderstood [01:57:02.0000] maybe i did as well [01:57:23.0000] I think that's for the ternary variant. [01:57:39.0000] s/./? [01:57:46.0000] what is the ternary variant again? [01:57:58.0000] `a :: b : c ()` [01:58:05.0000] yeah that part that introduced a new protocol lost me as well [01:58:08.0000] okay i completely missed that, what does that do [01:58:13.0000] Looks up `c` via `b` somehow. [01:58:48.0000] did i also miss an explanation of why `const ::foo =` is needed? [01:58:57.0000] (ie, why a special identifier form) [01:59:28.0000] ljharb: yes [01:59:48.0000] michaelficarra: thanks, can someone tldr, or give me a few words to grep for in the notes? [01:59:55.0000] we may touch on it again with waldemar's topic [02:00:02.0000] kk [02:00:03.0000] ty [02:00:04.0000] I share shu's concern [02:00:24.0000] ljharb I've been trying to grok [02:00:34.0000] i entered the queue because of it [02:00:50.0000] I believe `|>` is far more flexible than `::`. Hopefully we can eventually sort out the `|>` variants. [02:01:28.0000] drousso: that slide also confuses me, i'll wait for your queue item [02:01:59.0000] littledan: to be clear, the committee discussion i recall was that *stage 2* for pipeline would constitute deciding that most of the bind operator did not proceed, it certainly wouldn't block stage 1 for this proposal [02:02:08.0000] s/block/obstruct [02:02:29.0000] That slide, with pipeline/papp would just be `o |> Ext.method(?, ...args)` [02:02:45.0000] The difference is precedence. [02:03:20.0000] ah right, I agree with this all, sorry for my misunderstanding [02:03:52.0000] mostly I wanted to clarify the status of pipeline; sorry for getting off on that tangent [02:04:21.0000] I do think it's a good idea to talk through these scenarios, and don't want to foreclose on that either! [02:04:48.0000] relevant notes: https://github.com/tc39/notes/blob/7b2de881081abd34b02bc87bcdb662fd97555795/meetings/2017-09/sept-26.md#11iia-pipeline-operator [02:04:58.0000] conclusion "Before Stage 2: investigate strawman for method extraction, which may simply be prefix form of ::" [02:05:03.0000] Clarifying regarding what dan just mentioned in case anyone is unclear on mozilla's position: at the moment -- we don't see enough use cases for pipeline operator at present. After careful review of the syntax benefit, and the examples in the propsals, it became clear that there are existing ways to address the ergonomics concerns that are solved by the pipeline operator. We already have an implementation of [02:05:03.0000] pipeline -- its not an implementation concern -- we are not convinced that this is worth its weight. [02:05:11.0000] At some point I'd like to bring pipeline back to plenary. [02:05:14.0000] iow, only the unary form of the bind operator was expected to proceed after/if pipeline hit stage 2 [02:06:17.0000] for me, the big thing that makes this not extension methods is that it can't dispatch on the receiver [02:06:49.0000] The pipeline form that's easily reproduced using `_` and `,` is less flexible than the one I am hoping for, and is a mess for static type systems since you are constantly having to evolve the type of the `_` topic. [02:06:56.0000] my go-to example for pipeline is "construct a map by filtering entries from another map": `map |> Array.from |> (entries => entries.filter(fn)) |> (filtered => new Map(filtered))`. It suffers a little from cumbersome concise functions, but I think bind is even worse for it: `(map::pipe(Array.from)).filter(fn)::(function(){ return new Map(this) })` (suffering from cumbersome full functions, _and_ also requires keyboard backtr [02:07:20.0000] +1 to waldemar's concern about rift [02:08:41.0000] +1 as well [02:09:52.0000] this (and pipeline, tbh) strikes as favoring writability over readability for those who are opinionated about they want composed code to look, but perhaps i'm missing something [02:09:59.0000] +1 also [02:10:00.0000] about how they* [02:10:03.0000] ``` [02:10:04.0000] let _; [02:10:04.0000] let a = ( [02:10:04.0000] _= map, [02:10:04.0000] _= Array.from(_), [02:10:04.0000] _= _.filter(fn), [02:10:05.0000] _= new Map(_), [02:10:05.0000] _); [02:10:06.0000] ``` [02:10:06.0000] Works but hard to correctly type `_`. The two other variants of pipeline have more power and flexibility. [02:10:18.0000] +1 to what shu said [02:10:36.0000] also, honestly this just feels like a fancy way of saying `Function.prototype.call` :/ [02:11:37.0000] drousso: that's actually a thing that we need [02:11:38.0000] tcq feature request: close the queue (except for points of order) [02:11:46.0000] drousso: since `.call` can be deleted/forged [02:11:55.0000] drousso: that's the "method extraction" part of the old bind operator [02:12:07.0000] IMO that's not something that should be solved by the language [02:12:27.0000] i also think that having something be unforgeable is a possibly bad thing [02:12:41.0000] drousso: the unary form actually provides an unforgeable `.bind`, which means you can use normal call approaches, to be more accurate [02:13:43.0000] i'd suggest a temp check for the separate namespace, but that's a stage 1 concern so we shouldn't discuss it now [02:13:56.0000] I would also but agreee with ljharb [02:14:04.0000] ljharb: I think it just needs more research at this point [02:14:05.0000] i also have similar concerns about the rift raised by wsdferdksl [02:14:08.0000] michaelficarra: agreed [02:14:37.0000] +1 to clarifying the relationship [02:14:48.0000] I think it's legitimate to see this as "taking over" that other proposal [02:14:54.0000] rbuckton: that is not even close to a stage 1 concern [02:15:07.0000] it's not a Stage 1 concern, we just have to clarify this as a committee [02:15:21.0000] I think we should decide, as a committee, that this subsumes that other proposal [02:15:33.0000] this follows the process in our process doc to take over a dropped proposal [02:15:40.0000] That's fine. I just wanted to make sure. We didn't fork `|>` into 3 proposals, and we've had other proposals that we've said need to be combined in the past. [02:20:51.0000] haxjs in the future, could you please make sure to include a link to your slides in the agenda before the first day of meeting begins? [02:21:31.0000] drousso: oh. sorry i forgot to add link! [02:21:56.0000] other than js module blocks, and extensions, has anything advanced a stage this meeting that i overlooked? [02:22:37.0000] ystartsev: other than links, do you have any examples of when the proposals repo has not been up to date or correct by the end of a given plenary? [02:23:16.0000] thank you [02:23:25.0000] JSCIG HEROES [02:24:08.0000] I think it's really important that subgroups of TC39 be formed openly, by informing the committee in the Reflector, so that everyone who wants to can participate. I was unaware of the JSCIG [02:25:17.0000] JSCIG formed independently [02:25:43.0000] sure, I'm suggesting that when things form, the committee is kept in the loop [02:26:54.0000] is data being out of date a problem? [02:27:18.0000] shu: yes [02:27:30.0000] not just out of date, but different data sources disagreeing with each other [02:27:57.0000] different data sources within tc39/ ? [02:28:00.0000] doesn't designating a single source of truth (which we've done) ensure eventual consistency? [02:28:10.0000] ljharb: chinese interest group, you can remove your queue item [02:28:14.0000] iow, the source of truth is plenary, which the notes document, and the proposals repo includes [02:28:20.0000] michaelficarra: was it in the notes? [02:28:31.0000] michaelficarra: i missed the explanation if so [02:28:41.0000] oh, not sure [02:28:43.0000] not sure if there was an explanation other than that's what it stands for [02:28:52.0000] we can add a parenthetical after its first use in the notes [02:29:53.0000] I don't think this is trying to change how we make decisions/what the "source of truth" is, but more ensure that the decisions are propagated to documentation sources properly, so we can avoid confusing people [02:30:01.0000] sgtm [02:30:28.0000] that's what i'm confused about, who is confused by what [02:30:29.0000] rbuckton: can i give you a teams ipad app complaint to take to the right people? :-) [02:30:42.0000] like a README for a particular proposal being out of date? [02:30:53.0000] the proposals repo, notes, proposal repos, and website, all owned by TC39, sometimes disagree with each other [02:31:01.0000] this is a current problem [02:31:04.0000] rbuckton: specifically, a VC call isn't a phone call, and tapping my airpods (which happens by accident) shouldn't hang up my meeting and cause me to leave it. [02:31:08.0000] people get confused in practice, frequently [02:31:18.0000] proposal repos sometimes lag, this is true [02:31:28.0000] yes, that i agree with for individual proposal repos lagging [02:31:34.0000] notes and the proposals repo, modulo links which change of their own accord, have remained in sync as far as i'm aware [02:31:57.0000] (and modulo minor human errors which occasionally occur, ofc) [02:32:12.0000] as Yulia is explaining, there's lots of important information. I've definitely seen human errors. The goal here is to address the errors. [02:32:38.0000] I'm a big fan of this proposal [02:32:53.0000] me toooooooo [02:36:36.0000] it's certainly true that we have disagreements between the proposals repo and test262 in terms of documenting status [02:36:54.0000] where the proposals repo makes it soundl ike there isn't test coverage [02:38:37.0000] littledan: ah, fair, "has tests" is something that also lags [02:39:10.0000] that's something that's been left to proposal champions (or the test PR author) and does get missed not infrequently [02:39:30.0000] ljharb: I have a list I've been maintaining. I'll add that to it. [02:39:49.0000] rbuckton: thanks [02:42:00.0000] right, I think that's an accurate explanation of what's happening, and I like Yulia's efforts to improve it [02:44:37.0000] the note takers aren't just rushed currently, they often just skip the conclusion entirely [02:44:41.0000] robpalme: akirose: could i get the usual 10-15 mins for incubator call chartering? [02:44:52.0000] didn't see it on the TCQ agenda [02:44:58.0000] it seems reasonable, after each item, to explicitly checklist that the notes have a conclusion [02:45:11.0000] my b. yes shu. [02:45:12.0000] notetakers already often ask to verify that sometimes [02:45:19.0000] thanks [02:46:10.0000] yeah and writing down the conclusion helps us solidify our own understanding as well, it's a win-win [02:46:18.0000] +1 [02:46:21.0000] I think the idea is just to formally ask the note takers "are you ready" before proceeding to the next topic. [02:46:46.0000] seems like a good idea anyway [02:46:56.0000] ljharb: i agree with your point about individual repos lagging and shouldn't be source of truth, my take on that is why even include stage info in the individual repos then [02:47:05.0000] Have we considered YAML frontmatter in markdown? I don't think github supports it currently, but we could ask. A lot of doc tools use YAML frontmatter with markdown, so its not a stretch to consider. [02:47:08.0000] make a little pill or something that just displays the proposals repo info [02:47:22.0000] shu: that sounds like an amazing countersuggestion, let's do that [02:47:44.0000] shu: altho it is useful for the individual proposal's ecmarkup build to contain the stage number [02:47:54.0000] that could be done via ecmarkup as well [02:47:59.0000] sold [02:48:00.0000] even easier, really, with ecmarkup [02:48:09.0000] than telling champions to copy/paste something into README.md [02:48:14.0000] But the README itself wouldn't contain it? [02:48:33.0000] rbuckton: it would, but it'd require copy/pasting some pill code like CI status pills, instead of actually saying "stage: N" [02:48:37.0000] rbuckton: unless frontmatter could be used to autogenerate the relevant prose, it'd be annoying to enter it twice. also since i'm usually the one updating the list, i hate yaml :-p [02:48:41.0000] That has the downside of having to look somewhere else to understand proposal status when looking at the proposal itself. [02:48:46.0000] shu: Ah, that's not a bad idea. [02:49:08.0000] ljharb: anyway please suggest that in my stead during your item, i don't wanna extend the queue [02:49:15.0000] shu: done [02:49:54.0000] There's one issue though. If stage consensus is reached pending changes (which has happened numerous times), it could be misleading if the README update for the changes lags behind the stage status in the main proposals repo. That could cause confusion. [02:50:38.0000] that's true [02:50:39.0000] There should be a single source of truth, but it might be better for that to be the proposal itself. [02:51:04.0000] proposal champions are in no way consistent enough about updating the proposal repo for that to be a good idea, unfortunately [02:51:05.0000] rbuckton: that's a good point, yes [02:51:05.0000] Otherwise you have to stage two changes, one for the repo AND one for the /proposals repo, which we have to do anyways. [02:51:22.0000] rbuckton: but no worse than status quo, i guess? [02:51:29.0000] ljharb: guilty, unfortunately. [02:51:34.0000] ystartsev: my queue item ran out of time, but for reference: "individual proposal repos are much slower to update than the main list; they should not become the source of truth" [02:51:59.0000] shu: The same idea about CI status pills applies, if the source of truth is the repo and the pill appears on `/proposals` instead. [02:54:05.0000] akirose: Were you going to drop a link in the chat here? [02:54:06.0000] ljharb: noted -- as mentioned in the slides, the "proposal" repo will read from "proposals" -- a given individual proposal repo would be the detailed information, and gather it's meta data from the "proposals" repository [02:54:15.0000] littledan: in the call [02:54:17.0000] but here https://snaps.akibraun.com/dbzqq.png [02:54:42.0000] ystartsev: ah ok, i thought the arrow on that case pointed in the opposite direction [02:55:08.0000] yeah thats the one case where the arrow points in the other direction, i should have done the diagram differently [02:56:23.0000] Two TCQ suggestions: 1. Let chairs scroll through the agenda history and reintroduce previous topics (i.e., drag/drop or cut/copy/paste). 2. When the mouse is over the button chairs use to advance the queue, "lock" the UI so that clicking a button doesn't accidentally advance the queue if the speaker clicks the "i'm done speaking" button causing the race condition we saw earlier. [02:57:08.0000] rbuckton: https://github.com/bterlson/tcq [02:57:29.0000] Yeah, I'll file them. [02:57:56.0000] rbuckton: file them? send PRs :-P [02:58:47.0000] oh snap it's on github 🤯 [03:02:18.0000] dandclark: did your queue item get skipped? [03:02:46.0000] yeah that's not even a microsoft-funded project. if i understand correctly it's an off-hours bterlson special [03:05:27.0000] I mean, they employ bterlson and they own GitHub, so… [03:06:52.0000] michaelficarra: Last time I talked to bterlson about it (about a month ago) he said TCQ needed some updates before features could be added. I was fairly surprised to see the room temp functionality, tbh. [03:07:08.0000] i think yulia contributed it [03:07:44.0000] And that was just to fix the issue with the login redirect losing the current meeting ID (which seems to have been fixed since) [03:08:01.0000] was rpamely pro-mutable or pro-immutable? [03:08:07.0000] Bakkot: pro-immutable [03:08:07.0000] yeah i think they fixed that after robpalme broke the database [03:08:08.0000] er, or whoever just talked [03:08:09.0000] thanks [03:08:12.0000] immuble [03:13:04.0000] bakkot: stop transcribe [03:13:38.0000] as always won't be able to work on notes during the second part [03:16:20.0000] isn't the immutable form achievable with an intermediate `import data from ...; export default Object.freeze(data)`? [03:16:37.0000] I snuck in a `Json` -> `JSON` auto-correct just before that section, if anyone was wondering why it suddenly stopped doing that [03:17:02.0000] I think we'll end up with a pretty extensive collection of such corrections over time, which hopefully will improve the experience [03:17:35.0000] gibson042 yeah, people mentioned that a few times. (though the deep freeze is a little more painful than just that) [03:18:09.0000] ah, right. Yep. [03:18:32.0000] the same is true of mutable, of course, just with `import data from ...; export default JSON.parse(JSON.stringify(data))` [03:18:40.0000] (which sounds ugly but is probably faster than a deep freeze) [03:21:27.0000] Let's continue the discussion about mutability in https://github.com/tc39/proposal-json-modules/issues/1#issuecomment-730305544 [03:22:24.0000] my position on mutability continues to be that there are very good arguments for both sides and hence I am ok with either outcome [03:22:40.0000] yeah I guess I feel that way too [03:24:34.0000] are we sure that `JSON.parse(JSON.stringify(data))` is guaranteed to return exactly the same data in this case? I'm wondering in particular about numerical precision [03:24:51.0000] I hope so!!! [03:24:52.0000] numerical precision is not an issue, I guarantee [03:26:52.0000] and, yeah, even if you have a `toJSON` property in your data it can't be a function [03:27:03.0000] so yes, I am confident it is guaranteed to return exactly the same data [03:27:18.0000] even property enumeration order is guaranteed to be the same now :D [03:29:42.0000] phew! [04:01:57.0000] we are starting now! [04:12:11.0000] PDF beautification seems like a most legit budget ask from ecma, they remain the main stakeholder for caring about PDFs anyhow [04:23:32.0000] FYI: Since there won't be time to address this during this meeting, if anyone would like to discuss mitigations for performance in RegExp Match Indices, I've filed https://github.com/tc39/proposal-regexp-match-indices/issues/47 as a place to discuss the possible alternatives. [04:24:23.0000] rbuckton: i was gonna propose an incubator call for it for personal reasons [04:24:41.0000] i want the engines and champions to just hash it out [04:24:57.0000] since it's been stage 3 for a while and now that we have 2 engines' experience i want us to zero in on a solution quickly [04:25:06.0000] That's fine with me as well. And I completely agree. [04:26:19.0000] though that's somewhat an abuse of the incubator call mechanism [04:26:28.0000] maybe i'll just schedule a one-off call [04:26:30.0000] let's do that instead [04:27:05.0000] That works for me as well. [04:40:42.0000] drousso or whoever's taking notes, please try to attribute using the assigned abbreviations, not just the initials of the speaker [04:40:55.0000] yeah im trying but i dont know them all 😅 [04:41:00.0000] i was gonna go back and fix it later [04:49:24.0000] michaelficarra is there a list somewhere of the mappings? [04:51:36.0000] drousso: https://github.com/tc39/notes/blob/master/delegates.txt [04:51:41.0000] it's linked at the top of the notes [04:51:44.0000] awesome ty\ [04:51:45.0000] ah [04:52:42.0000] PRs welcome but it's faster to just tell me them and I can try to hotswap it during a pause in audio [04:54:45.0000] i feel like hte thing to do would be to give error cause ten minutes and start batch preloading five minutes late [04:55:24.0000] Bakkot: I was thinking the same thing [04:55:43.0000] i strongly suspect error cause could get stage 2 in ten minutes [04:55:46.0000] it is not a large design space [04:55:47.0000] just because you've requested 60 minutes max doesn't mean you're entitled to 60 minutes min [04:59:19.0000] it's a reasonable expectation [04:59:47.0000] I've been wondering if we need something like ECMA-402 for RegExp. There are a lot of things that I and others have expressed interest in adding to RegExp and it might be worth having a regular discussion about all of these ideas, if not an actual separate group. [05:00:19.0000] i'd like to see more subgroups in general [05:00:41.0000] hard to see us scaling otherwise as many folks have pointed out in the past [05:01:24.0000] oh, cause is a string, not an optional error? [05:01:45.0000] wonder why [05:02:51.0000] shu https://github.com/tc39/proposal-error-cause#differences-with-aggregateerror [05:02:55.0000] no, cause is an optional error [05:03:00.0000] the default property does not make sense [05:03:03.0000] I commented on the issue [05:03:10.0000] it is not a string [05:04:22.0000] Bakkot: k [05:22:05.0000] I am a big fan of the idea of signed exchanges (no experience using/implementing them), and I'd love to know why Dan doesn't like them [05:25:55.0000] I don't understand the tracking concerns that Dan is talking about [05:26:22.0000] if a request for a module is authenticated (or otherwise identified), can't the actions of that script be similarly identified? [05:32:46.0000] oh okay, I think he means like HTTP-level tracking, accomplished by just associating the request with the identifier [05:41:59.0000] michaelficarra: To see examples of Dan's concerns about SXG: https://brave.com/webbundles-harmful-to-content-blocking-security-tools-and-the-open-web/ [05:45:04.0000] ystartsev: can you get Ted Campbell added to delegates.txt? [05:45:08.0000] yes [05:45:37.0000] michaelficarra: can we use TCL for now and i will adjust if its already in use? [05:45:45.0000] nice, TCL [05:47:35.0000] who's speaking? for the notes [05:47:50.0000] Yoav Weiss [05:47:57.0000] YWS i think is what i added to delegates, let me check [05:48:16.0000] yep, YWS [05:48:30.0000] (from Google) [05:51:54.0000] can someone copy the mentioned link to the notes? [05:51:57.0000] Copied from Yoav here: https://docs.google.com/document/d/11t4Ix2bvF1_ZCV9HKfafGfWu82zbOD7aUhZ_FyDAgmA/edit# [05:52:01.0000] Bakkot: ^ [05:52:12.0000] (sorry don't ahve notes open) [06:02:18.0000] later all [06:02:31.0000] hope that wasn't too little ceremony [06:02:44.0000] less ceremony more sleep wfm [06:03:42.0000] that was a lot of notes [06:18:37.0000] Brave's blog post is about WebBundles, not really about signed exchange [06:19:29.0000] This post is more aligned with my concerns https://trib.tv/2019/05/28/cake-or-death-amp-and-the-worrying-power-dynamics-of-the-web/ [06:19:42.0000] but really, I just wanted to underscore that this proposal does not enable signed exchange; it's just unrelated [06:19:43.0000] I still don't understand the extension proposal syntax [06:20:36.0000] littledan: "amp is for the carousel" is a good summary [06:22:56.0000] michelficarra: You can find Apple's tracking concern at https://github.com/WICG/webpackage/issues/422 2020-11-20 [10:50:42.0000] someone with permissions may want to delete this bizarre comment https://github.com/tc39/ecma262/issues/2229 [10:57:16.0000] pretty sure that is a person with a fairly severe mental health issue; those always make me sad [10:59:52.0000] cc akirose MylesBorins robpalme, this issue should be locked and the user blocked, probably on behalf of the tc39 org rather than a personal account [10:59:59.0000] not sure who else has locking perms [11:00:31.0000] can you email the code of conduct team [11:00:31.0000] ? [11:01:21.0000] I'm on it but we should follow the protocol here at least to document [11:01:37.0000] tc39-conduct-reports⊙gc [11:01:41.0000] I can send the email [11:04:23.0000] Locked. I don't think I can delete. [11:05:23.0000] we actually don't have delete turned on [11:05:31.0000] we should make a request to the COC team if we are going to enable that I thinks [11:05:36.0000] (checked org settigns) [11:05:41.0000] i reported it to github, at least [11:06:17.0000] we could transfer it to a private "holding" repo if there's concerns about deletion, fwiw. probably best for the coc team to discuss [11:07:57.0000] MylesBorins: they also posted https://github.com/tc39/ecma262/issues/2230; would you mind blocking them from the org ASAP to prevent further spam, pending CoC team discussion? [11:08:58.0000] recommend not locking from a personal account, incidentally [11:09:19.0000] since they can see you did it, which may make you personally a target for harassment [11:09:22.0000] blocked [11:09:30.0000] indeed that's true, but i don't think we have a non-personal account available for that purpose atm [11:09:36.0000] i don't mind putting my name on it in the interim] [11:09:39.0000] MylesBorins: ty [11:19:33.0000] side bar, I'm opening an internal issue with github trust+safety team about protecting privacy of moderators [11:27:31.0000] fwiw I believe the moderator-only actions - locking the thread, in particular - don't expose your username to people not in the org [12:32:39.0000] indeed 2020-11-24 [14:21:27.0000] Is this https://github.com/w3c/csswg-drafts/issues/5743 the same person that y'all moderated yesterday? [14:21:53.0000] Not yesterday, but whatever, earlier [14:22:25.0000] nope [14:23:35.0000] Ah hm. [14:23:41.0000] Well, closed and locked anyway. [14:24:18.0000] the tc39 one seemed more like an in-your-face internet troll as opposed to someone with delusions of grandeur [14:26:23.0000] the tc39 was almost certainly mentally ill, but in a different, much less coherent way than this person [14:39:29.0000] yes, the tc39 person was just stringing together profanities [15:25:45.0000] Kk, it had been removed before I could see it, just checking because these people crosspost across standards bodies sometimes and I needed to know if I should be more proactive about it or if a simple lock would be fine. Thanks! [15:36:27.0000] TabAtkins: hold of you to stand in the way of the grand unification of the web [15:36:34.0000] bold, even [15:36:57.0000] I'm nothing if not bold. [15:38:09.0000] but are you italic 2020-11-25 [18:43:09.0000] wow, this is quite a google doc