2021-07-01 2021-07-02 2021-07-03 2021-07-04 2021-07-05 2021-07-06 2021-07-07 2021-07-08 [18:09:04.0013] ljharb: the github pages deploy seems to be broken [18:09:25.0852] seems to be hitting https://github.com/tc39/ecma262/blob/f4694412639e19acab2c0dd5baac247aa7d7a889/scripts/auto-deploy.sh#L6-L7 [07:45:15.0204] is dan clark one matrix? 2021-07-09 [20:02:59.0496] yulia: https://matrix.to/#/@dandclark:matrix.org 2021-07-10 2021-07-11 [12:08:34.0233] Richard Gibson leobalter who's doing the 402 update? [12:10:27.0457] is anyone giving a test262 update? [12:10:59.0122] cc sffc 2021-07-12 [18:26:55.0897] In case anyone wants to figure out when the plenary meeting is in their own time zone (accurately adjusting for DST, of course!), I heard there's a cool ECMAScript API you can use for that. πŸ˜€ Just go to https://tc39.es/proposal-temporal/docs/ and open the devtools console in the browser. Just substitute your own time zone and optionally how long after the start of the meeting. ``` Temporal.ZonedDateTime.from('2021-07-13T10:00[Asia/Tokyo]') .withTimeZone('America/Los_Angeles') .add({minutes: 160}) // => 2021-07-12T20:40:00-07:00[America/Los_Angeles] ``` [18:29:30.0256] justingrant can you use `Temporal.now.timeZone()` instead? [18:29:52.0546] Oh, good point! I'll edit. [18:29:58.0101] πŸ˜‡ [18:31:02.0529] * In case anyone wants to figure out when the plenary meeting is in their own time zone (accurately adjusting for DST, of course!), I heard there's a cool ECMAScript API you can use for that. πŸ˜€ Just go to https://tc39.es/proposal-temporal/docs/ and open the devtools console in the browser. Optionally, you can add some time after the start of the meeting. ``` Temporal.ZonedDateTime.from('2021-07-13T10:00[Asia/Tokyo]') .withTimeZone(Temporal.now.timeZone()) // your system time zone .add({minutes: 160}) // => 2021-07-12T20:40:00-07:00[America/Los_Angeles] ``` [08:44:45.0069] ryzokuken is giving the 402 update [11:09:17.0525] iain: hello, [11:09:25.0217] Hello! 2021-07-13 [18:06:26.0560] tcq is back! πŸ₯³ [18:10:05.0201] Yes sorry about TCQ friends. Freak accident combined with paternity leave was a bad combo :-P [18:12:14.0011] Can an admin update the Reflector link in the room description? [18:12:14.0620] https://github.com/tc39/Reflector/issues/380 [18:12:49.0901] bterlson: Congrats on paternity! [18:20:47.0713] Does anyone know what the current status of archival is, in terms of whether we're managing to archive everything in our GitHub org, and how to access the archives? [18:34:31.0785] why are there multiple JSON standards? I thought ECMA-404 was the "canonical" JSON standard but apparently IETF has its own JSON? [18:35:24.0592] everyone considers their own standard canonical! [18:35:59.0357] well, let me rephrase, I thought JSON was TC39's domain... [18:36:04.0855] https://datatracker.ietf.org/doc/html/rfc8259 btw [18:36:15.0574] a musical canon of standards / a round of JSON? [18:36:42.0852] * a musical canon of standards / a round of JSON? [18:37:29.0282] I see them as complimentary standards. ECMA402 is very conservative, describes syntax mechanically, doesn't add much editorial fluff or advisory information [18:37:33.0036] wonder if there's any difference between the two standards: if the IETF standard is a subset/profile then I guess that's not _that_ unexpected. [18:37:57.0016] I use 8259 when I need to show people why it's a bad idea to use the complete grammar in ECMA-404 [18:38:06.0137] * I see them as complimentary standards. ECMA404 is very conservative, describes syntax mechanically, doesn't add much editorial fluff or advisory information [18:38:16.0203] JSON is cross language/platform :) [18:38:53.0763] e.g. if you expect precision greater than IEEE754 doubles, , you're going to have a bad time, and RFC8259 helpfully calls that out [18:39:49.0187] thanks for pointing out the differences. Is something on that published somewhere? (maybe you should write something, it'll be useful πŸ™ˆ) [18:40:33.0034] but I generally expected the IETF standard to be more... concise. This is definitely a fun data point! [18:43:37.0212] the next IETF meeting (november 2021) is supposed to be in-person... [18:43:44.0653] You can ctrl+f rfc8259 for the phrase "interoperable in the sense that" to see the places where IETF suggested you avoid some corner of JSON [18:43:46.0187] https://datatracker.ietf.org/doc/html/rfc8259#section-1.2 includes explicit reconciliation: > The reference to ECMA-404 in the previous sentence is normative, not with the usual meaning that implementors need to consult it in order to understand this document, but to emphasize that there are no inconsistencies in the definition of the term "JSON text" in any of its specifications... If there is a difference found between them, ECMA and the IETF will work together to update both documents. [18:43:52.0802] Yeah, JSON itself do not support specific type, there is always confusion/complain about int64 [18:44:39.0796] > <@bterlson:matrix.org> You can ctrl+f rfc8259 for the phrase "interoperable in the sense that" to see the places where IETF suggested you avoid some corner of JSON neat, thanks! [18:44:52.0424] We also have the trouble of serialization of BigInt/Date/etc. [18:45:26.0113] HE Shi-Jun: what's wrong with ISO8601/RFC3339 for Date serialization? [18:45:49.0443] One problem we run in to is you need to know schema to know whether to treat a string value as a date value [18:46:09.0198] The problem is you don't know whether it's a date value or string :playful: [18:46:18.0339] implementations which detect date-like strings and convert to date types have been highly problematic in the past [18:47:24.0772] int64 has similar problems - there is no good option. You encode as a number literal and lose precision as the json document traverses a JS runtime. Or you encode as a string and you either need schema or users have to deal with converting to int64 themselves. [18:47:37.0041] * int64 has similar problems - there is no good option. You encode as a number literal and lose precision as the json document traverses a JS runtime. Or you encode as a string and you either need schema or users have to deal with converting to int64 themselves. [18:47:41.0042] Previously I wrote a JSON hint proposal ( https://gist.github.com/hax/5691ca8acdf9179e63043857cdc3616b ) to solve the problem in general , does anyone interest in that? [18:47:57.0683] > <@haxjs:matrix.org> Previously I wrote a JSON hint proposal ( https://gist.github.com/hax/5691ca8acdf9179e63043857cdc3616b ) to solve the problem in general , does anyone interest in that? that does sound cool, thanks [18:48:33.0167] well I dunno what's so wrong assuming valid ISO8601 strings were dates? but I might be missing something here [18:48:57.0690] There are many problems 😁 [18:49:12.0895] For example, performance - you are now attempting to parse every string field. [18:49:44.0397] well, I'm running a regex over every field [18:49:47.0258] also, it can become unpredictable what the type of a field actually is - if I so happen to have data that matches the ISO8601 grammar, all of a sudden things are dates, but if not, its strings. [18:49:54.0956] and parsing if it matches the regex [18:50:29.0066] hm, that's fair. I guess you can assume strings and let users deal with things as they want [18:50:43.0951] I think when you know schema, the practice is fine (we do it all the time in Azure), but it gets messy when dealing with schemaless json [18:51:31.0398] sounds fair [18:51:40.0621] You should be able to know _where_ the dates are. Any combing through should be done explicitly by the user if needed... [18:52:35.0642] yeah I think that's right [19:08:17.0093] Leo says he is stepping away and has no update [19:08:33.0711] (for test262) [19:08:58.0113] * Leo says he is stepping away for dinner and has no update [19:16:56.0910] Thank you! I'm back now! [19:20:13.0353] we're going to be hearing from someone from the LF on this topic too, right? [19:20:23.0582] I think so [19:20:33.0195] Rob asked them to present to us and they gladly agreed [19:21:39.0349] Yeah but I don't think we ever got confirmation [19:22:02.0001] hmm, are they not in the call? [19:22:12.0087] Do you know who was going to give the update, so we can try to ping them? [19:22:29.0113] I'm afraid this presentation isn't explaining things very clearly [19:22:29.0970] I think I recall Mike Dolan... [19:23:21.0328] OK, Mike Dolan doesn't seem to be here [19:23:37.0977] does anyone know what acryonym he keeps saying [19:23:42.0694] "GDF"? "TGF"? [19:23:48.0354] JDF [19:23:48.0661] JDF [19:23:59.0567] yeah I don't think anyone from LF ended up making it... maybe we can end this one early and come back to it later? [19:24:00.0199] but I also want to ask what is JDF [19:24:16.0256] JDF https://duckduckgo.com/?q=jdf+foundation [19:24:27.0331] uvenile Diabetes Research Foundation [19:24:28.0699] sorry i didn't mean to drop a ddg link [19:24:30.0484] * Juvenile Diabetes Research Foundation [19:24:33.0426] https://www.jointdevelopment.org/ ? [19:24:34.0380] that was a mistake [19:24:44.0253] yes that ljharb [19:24:55.0346] i just didn't remember their domain [19:26:10.0649] OK, could the chairs figure out who from the LF we can invite to clarify all of these things? [19:26:27.0663] I think Rob was leading this previously, and tried to set up that someone could attend to explain [19:26:59.0097] I think the LF proposal is good, and I'm really confused about why Istvan is casting all this doubt on it. [19:27:05.0782] I'll see if i can get ahold of Mike [19:27:11.0031] yeah [19:27:12.0885] about that [19:27:39.0118] anyway fwiw this will be a GA vote, tc39 has very little sway in whether it happens or not [19:27:48.0890] this is too much inside baseball for SDO politics, can we get a champion for either side to explain implications for TC39's working mode? [19:28:04.0673] changes to IPR stuff makes me wary [19:28:41.0140] shu: my understanding is that they do not want to change the IPR, on the contrary, they want to be able to veto changes to the IPR policy [19:28:55.0059] that is a change to the process [19:29:07.0252] (because they value the status quo) [19:29:09.0486] that veto power is a special power given to LF over other members [19:29:11.0329] the idea is just to make sure that we keep the IPR policy open [19:29:14.0680] i do not understand that change [19:29:48.0594] I think the LF partnership would be very valuable, and we should discuss it further with them. I am not sure if Istvan is the best person to explain this to TC39. [19:29:51.0672] > <@shuyuguo:matrix.org> that veto power is a special power given to LF over other members It is. I proposed allowing all members to be able to veto that, since it's so central to how we work... [19:29:53.0550] TC39 is a special snowflake in SDO world, because we work so openly [19:29:58.0624] that is what LF is interested in [19:30:02.0580] our open standards work [19:30:51.0592] > <@dehrenberg:igalia.com> the idea is just to make sure that we keep the IPR policy open that's precisely it [19:31:19.0941] i am not so much concerned with the intentions that are expressed but with the material implications [19:31:38.0835] they want the power to veto future changes that ecma may want to make? [19:31:43.0679] that's my reading [19:32:24.0365] I'll just give my comments here in Matrix [19:32:54.0629] in the exact words, "for decisions that require a supermajority" so mostly just changes to the IPR policy and the bylaws IIUC [19:33:09.0297] this isn't public, as far as I understand - could a mod redact the discussion about it in TDZ? [19:33:34.0260] I really strongly support this partnership. The Linux Foundation can help bring lots of extra interesting work to Ecma, and they can bring technical and administrative support to TC39. We've lacked all of those from Ecma so far. [19:34:05.0113] > <@pchimento:igalia.com> this isn't public, as far as I understand - could a mod redact the discussion about it in TDZ? This channel is all publicly readable [19:34:20.0536] also the logs are public [19:34:26.0198] also I think the agenda is public? [19:35:19.0769] istvan disclosed the topic and his slides on github at least [19:35:28.0596] oh, ok [19:35:48.0298] yeah i don't think it's a secret. there's a difference between "not public" and "private" i guess [19:38:53.0367] I'm not sure that what Waldemar is saying is correct. [19:39:21.0845] anyway the GA doesn't play any role in our actual working mode going towards Stage 4 [19:40:19.0217] under what circumstances would the GA not rubberstamp our standard every year anyways? [19:40:25.0769] yeah, exactly [19:40:53.0102] i still do not understand why they want a veto [19:40:57.0037] I think we should just expect to see a better level of support once the LF is involved, without any real upsets or surprises [19:41:12.0812] they don't want us to turn into every other SDO [19:41:18.0072] shu: my reading is that they want to prevent the ecma GA from making disruptive changes in some scary possible future [19:41:26.0977] shu: The idea was to bring LF people here for this topic. I guess we had some kind of coordination error. Hopefully we can ask them these questions tomorrow. [19:41:31.0664] so join as a voting member, and vote? [19:41:46.0893] like what is the manifest problem in the current process that requires a veto to safeguard? [19:42:09.0269] Isabelle says that about literally every document btw (that they are not final and they are incomplete) [19:42:34.0538] > <@shuyuguo:matrix.org> like what is the manifest problem in the current process that requires a veto to safeguard? I agree with that assessment fwiw. I think a better approach can be worked out. [19:42:53.0570] well, let's hear from LF before drawing a conclusion, they must have had a reason [19:43:05.0091] but that has nothing to do with the engagement in general. These implementation details can be ironed out. [19:45:30.0540] I think Istvan's analysis is unfair and not well-informed. [19:46:39.0535] FYI I did a side-by-side of the video call and the notes document, and it makes jumping in and out of note-taking SO much easier [19:46:54.0270] I highly recommend it for anyone who is note-taking-curious [19:47:24.0021] (it's possible everyone already does this and I am just late to the party) [19:47:31.0181] can someone advance tcq? [19:47:34.0644] littledan's criticism is not helpful here. Istvan is one of the most informed here. [19:47:58.0883] working on it [19:48:25.0697] tcq does not match presentation [19:49:17.0259] yes it does [19:49:38.0838] I'm a bit baffled about how Istvan said he didn't understand the motivation for the partnership, when this was very clearly explained in the GA slides. [19:51:01.0354] This discussion is not very fruitful without someone from LF or Jochen here to correct our misunderstandings. Let's try to get them to attend on a later slot and then return to this? [19:51:04.0774] littledan: No it wasn't. In fact, I've heard a lot of false claims made about the motivation. [19:51:30.0666] Blatantly false. [19:52:01.0762] littledan: to me, the issue is there is a jarring divide between what's said, e.g. "we'll give you more resources, tooling, support, and it'll be great" and what's formally proposed (by-law changes, veto powers), and i'd rather go by what is formally proposed [19:52:33.0867] For Ecma, the LF can bring more work items and technical/organizational services. For the LF, Ecma can give it this additional service (standardization) for its various projects. [19:52:51.0848] (that's the motivation, not the bylaws details, which we'll just have to have LF people here to explain) [19:53:13.0752] I imagine that the LF wants to make sure that Ecma doesn't become closed, that it retains its current openness [19:54:20.0104] maybe missing something obvious: why keep the note about the extends clause? Without designing to extend via subclassing, the fact that an identifier can appear in extends doesn't seem very interesting? [19:56:05.0578] bterlson: i think the "it won't throw" part seems reasonable to call out [19:56:06.0590] What the LF said during the GA is that they're doing this because they wanted an office in Switzerland. [19:56:13.0062] coming from other OO languages, one might think some built-ins are final [19:56:38.0360] Actually nothing is final in ES? [19:56:45.0559] I suppose [19:57:06.0550] if its a living spec that means it can die [19:58:47.0877] As allen explained, this term is used to denote that if you extend it, it keep some invariant. If we remove that, should we add some other text to keep such information? [19:59:22.0633] HE Shi-Jun: we are, we're replacing it in the PR with just "it works with the extends clause" or something to that effect, too lazy to copy out the exact language right now [19:59:38.0895] Great! Thank you! [20:35:57.0532] I don't even see value in that... isn't it true of *every* constructor that it works with `extends`? [20:36:20.0400] no, some specifically don't. [20:37:48.0295] Symbol doesn't, IIUC [20:39:16.0833] hm, I might be wrong, it's not triggering an error but IIRC it's not designed to be subclassable, right? [20:41:57.0083] Richard Gibson: yes, and we will have that text on every constructor [20:42:01.0273] we have a fair bit of boilerplate [20:42:03.0590] seems fine [20:42:24.0565] (to be clear we _currently_ have that text on every constructor, and are not proposing to remove it) [20:45:03.0468] > <@usharma:igalia.com> hm, I might be wrong, it's not triggering an error but IIRC it's not designed to be subclassable, right? `new class extends Symbol {}` does throw tho. [20:46:04.0523] ah, I was just doing `class MySymbol extends Symbol { }` [20:46:12.0717] trying to construct it does fail [20:46:19.0352] `Uncaught TypeError: Symbol is not a constructor` [20:46:50.0494] Does Symbol have the note since it can appear in an extends clause without throwing? 😁 [20:47:23.0899] > may be used as the value of an extends clause of a class definition but a super call to it will cause an exception. [20:47:51.0403] we are nothing if not thorough [20:50:49.0974] I'm just saying I would also support further removal of the "may be used as the value of an `extends` clause of a class definition" text as well. It's not misleading in the same way as the "designed to be subclassable text", it's just of dubious value. [20:51:02.0658] * I'm just saying I would also support further removal of the "may be used as the value of an `extends` clause of a class definition" text as well. It's not misleading in the same way as the "designed to be subclassable" text, it's just of dubious value. [20:56:21.0696] i think it's of value in the places where it makes sense, but the primitive constructors are not those places [21:05:44.0263] how fascinating [21:06:26.0695] non-contiguous weekends, fun [21:06:34.0276] something to add to "falsehoods programmers believe about time" [21:07:49.0035] indeed [21:09:38.0585] can someone put the conclusion in the notes [21:09:43.0150] I couldn't actually follow what the ask was [21:11:01.0809] bakkot: consensus on excluding "search" and "standard" from collations getter [21:11:12.0758] please put in notes [21:18:18.0752] > <@bakkot:matrix.org> please put in notes done [21:46:08.0344] > <@bakkot:matrix.org> something to add to "falsehoods programmers believe about time" https://yourcalendricalfallacyis.com/ [21:52:42.0287] not clear to me that the thing Shane mentions would address Yulia's concern at all [21:53:57.0176] i have trouble understanding the specificity of Yulia's concern [21:55:30.0116] oh i see, iain is explaining, this is helpful [21:56:17.0923] seems to me like the hazard already exists tho, if any browser actually did the thing they're worried about? [21:57:35.0349] yeah, we need a normative PR to ECMA-402 to address the root cause [21:59:53.0875] what's needed is a centralized source-of-truth for these supported values that the different constructors draw from/check against [22:01:31.0165] hello, yes, I'm around to chat about HTML integration if needed. You can find the PR at https://github.com/whatwg/html/pull/5339 [22:05:41.0373] Did I understand correctly that the set of names to be made available in new realms is supposed to be resolved during stage 3? [22:05:52.0849] because that really does not seem like something which is appropriate to stage 3 to me [22:06:17.0175] the set of things that HTML will expose. Each environment can choose its own. [22:07:07.0688] the JS builtins are all available (unless an environment goes and deletes them) [22:07:54.0640] MM has this answer always ready [22:07:58.0900] I love to hear this again [22:08:25.0312] arguably, the HTML folks could be the ones to propose the exact list. We've done some research into possible dividing lines and how they would work out, but we haven't driven to the point of consensus on any particular one yet. [22:09:07.0755] I cannot imagine WHATWG coming up with any answer other than "literally all of them", from my experience with WHATWG [22:09:35.0274] well, that's not where the conversation is with WHATWG right now. I think everyone agrees that, like workers, it is a place where only some of the things should be exposed [22:09:57.0438] so the idea is that WebIDL would have notation like [Exposed=Realm] to opt in to interfaces showing up in realms [22:10:00.0223] i have the opposite intuition, especially with prior art with restricted global scopes like workers as dan says [22:10:10.0218] bakkot I can answer that if you bring it to the queue, but it's hard for me to multitask right now [22:10:16.0044] * bakkot: I can answer that if you bring it to the queue, but it's hard for me to multitask right now [22:10:24.0194] ugh sorry I've been trying to take notes [22:10:27.0988] The specification on the JS side imposes restrictions on the capabilities that globals in realms can expose [22:10:32.0827] POO: more note takers [22:10:38.0430] can someone TCQ that [22:12:27.0032] > <@shuyuguo:matrix.org> i have the opposite intuition, especially with prior art with restricted global scopes like workers as dan says that's reasonable. so I guess not all of them, but rather "all but an explicitly omitted subset" [22:15:34.0995] what's the phrase jack is saying? [22:15:40.0537] i heard "hyper graph membrane"? [22:16:00.0607] bakkot: one thing from the ES draft: the realms API require the globalThis to be an ordinary object and all the properties must be configurable [22:16:14.0693] i'm still really salty about not even having opt in object sharing [22:17:22.0194] i... cannot follow this conversation [22:19:09.0336] it's a very complicated realm (sorry sorry sorry) [22:20:17.0512] i don't know where the queue is [22:20:33.0352] the queue is up-to-date [22:20:37.0550] tcq link is in the reflector (https://github.com/tc39/Reflector/issues/380) [22:20:44.0681] * it's in the reflector (https://github.com/tc39/Reflector/issues/380) [22:20:47.0208] i mean on tcq [22:20:52.0970] * tcq link is in the reflector (https://github.com/tc39/Reflector/issues/380) [22:20:55.0322] jack works is speaking rn? [22:21:39.0416] yea sorry for the confusion, i already had tcq open [22:21:42.0915] yeah but they skipped their own item πŸ˜… [22:21:47.0405] was just trying to figure out who was speaking [22:23:59.0755] > <@shuyuguo:matrix.org> i heard "hyper graph membrane"? yes [22:25:43.0101] thanks [22:26:34.0682] > <@ljharb:matrix.org> it's a very complicated realm (sorry sorry sorry) πŸ˜‚ yeah, a complicated kind of membrane, but it is useful when doing permission controls [22:27:00.0191] it's a bit like what Firefox implemented in web extension (X-Ray vision to C++ objects) [22:27:22.0792] Jack Works: apologies, i was making a pun about the topic of membranes/realms being complicated :-) should have done it in TDZ [22:27:38.0072] * Jack Works: apologies, i was making a pun about the overarching topic of membranes/realms being complicated :-) should have done it in TDZ [22:35:07.0382] As Mark said, "The callable boundary meets the use cases that most of us have in mind"--This is what I was trying to get at. It's iterating to meet the previously articulated goals. [22:35:34.0929] "most of us" may apply to the champion group, but does not necessarily apply to the entire committee, nor to the users who have been hoping for Realms for half a decade [22:35:43.0422] * "most of us" may apply to the champion group, but does not necessarily apply to the entire committee, nor to the users who have been hoping for (object-sharing) Realms for half a decade [22:35:50.0832] (sorry for interrupting; Leo is making a good point) [22:38:38.0193] it looks like different targets are conflicting [22:39:18.0322] virtualization wants clean realm, security wants absolute boundary [22:39:44.0895] I don't see a conflict, they're just different feature requests [22:39:55.0073] and other cases want direct object sharing and vendor-modified realm [22:40:20.0408] This Realms proposal does not make the Node.js vm module obsolete. That doesn't make it unmotivated. [22:40:53.0569] yeah but vm module only available on Node [22:41:19.0766] using iframe is awkward cause there are unremovable things like location [22:43:04.0704] agree with dan here, the shape of the counterargument from jordan and gus seems to be, "the old proposal solved what i wanted to do as well, and this new proposal reduced the scope, so i'd rather this not move forward because it'd preclude what i want with direct object access" [22:43:14.0098] i cannot understand how someone could block having an option [22:43:29.0000] but this proposal moving forward doesn't remove the objection with direct object access [22:43:35.0359] like what concern drives that [22:43:38.0925] devsnek: mark explained it [22:44:02.0328] mark explained why `unsafeObjectSharing` option is bad? i must've missed it [22:44:46.0176] +1, I've proposed to give developers choices but not accepted by the champion [22:44:49.0623] that the value for building in an isolation into the platform as a safeguard against a footgun is that it's not escapable [22:45:06.0789] escapable by who [22:45:11.0226] if you make it escapable, we shouldn't really take the time and effort to build the isolation into the platform [22:45:13.0358] by the developer [22:45:17.0963] Making a new Realm is just a very bad way to get a fresh copy of built-in functions. It's not going to be very easy to optimize to make way too many Realms, and it will create things in the wrong Realm. [22:45:19.0282] is the developer gpt3? [22:45:26.0512] what? [22:45:29.0647] We can made isolation _by default_ but leave a escape path [22:45:32.0962] who is accidentally typing out `allowUnsafeObjects: true` in their code [22:45:38.0921] not accidentally [22:45:51.0484] consciously choosing it without understanding the consequences [22:46:02.0298] or being overconfident in their userland isolation library [22:46:06.0562] Sorry, is arguing points in writing not sufficiently open? Didn't we have a big thread about this all? [22:46:32.0497] that seems pretty condescending :/ [22:46:42.0113] littledan it may have been [22:46:45.0093] sorry, something i said is condescending? [22:46:59.0374] > <@dehrenberg:igalia.com> Sorry, is arguing points in writing not sufficiently open? Didn't we have a big thread about this all? actually I think all things we discussed here is discussed in the thread, there isn't really new things πŸ˜‚ [22:47:07.0503] As Greg is next in the queue: `Greg Whitworth (GCW)` (cc bakkot ) [22:47:19.0876] assuming that developers can't make informed decisions and tc39 needs to hold their hand through using realms "safely" [22:47:54.0968] * assuming that developers can't make informed decisions and tc39 needs to hold their hand through using realms "safely" [22:47:59.0807] what about malicious developers running scripts on a secure platform though? [22:48:01.0655] it's not pure assumption, this was informed by enthusiasm from some Google internal folks as well as others on Twitter who were excited to use the previous Realm proposal to run untrusted code [22:48:06.0557] or running untrusted scripts? [22:48:10.0962] thinking it was a lightweight sandbox [22:48:49.0982] if you leave the "thisBreaksTheSandboxAllowObjects" option unspecified it apparently is a lightweight sandbox [22:49:07.0210] i would be fine with the option being called that [22:49:47.0108] anyone I'm natural on the isolated version, the things I worried about is how to pass ArrayBuffer [22:49:59.0746] > <@usharma:igalia.com> what about malicious developers running scripts on a secure platform though? if the malicious person is outside the realm what does any of this matter anyway [22:53:10.0918] (A random footgun.png) [22:53:16.0695] the malicious code is inside but direct object access allows them to access globals from the outside [22:53:40.0158] don't enable the option for malicious code [22:56:02.0339] bakkot: ping [22:56:28.0951] sorry, another 500 [22:56:32.0752] restarted [22:56:46.0302] it's back!! [22:56:47.0725] thanks! [22:56:55.0852] I didn't have TCQ open, sorry I jumped right in [22:57:00.0764] given the really short schedule, maybe we can have an overflow item (of an hour or two?) [22:57:13.0555] > <@joshbdev:matrix.org> I didn't have TCQ open, sorry I jumped right in that's OK, notetakers have priority [22:57:30.0700] (it's actually the google docs API which is 500'ing, not as I previously claimed the google speech API) [22:58:02.0404] > <@dehrenberg:igalia.com> given the really short schedule, maybe we can have an overflow item (of an hour or two?) I'll ask at the end if folks are okay with that [22:59:22.0229] Because this is a very complicated topic, could we have a summary about the argument if we decide to continute the topic tommorow? [23:05:58.0729] HE Shi-Jun: this is related to the slide 6 https://docs.google.com/presentation/d/1MgrUnQH25gDVosKnH10n9n9msvrLkdaHI0taQgOWRcs/edit#slide=id.ge435a9058a_0_563 but I'd leave the summarization open [23:11:31.0173] Thank you. [06:06:29.0156] It looks like the sign-in form on the meeting logistics issue is pointing to the May meeting https://github.com/tc39/Reflector/issues/380 [06:07:08.0455] Does anyone have the actual link to join the meeting? [06:42:01.0454] It's the same as the one that form gives you 2021-07-14 [17:47:18.0551] I am having more trouble than I expected being awake for TC39, so I will skip the first half of the day, and be present in the second half. Thanks for understanding. [17:59:59.0077] ljharb: my computer started freezing as soon as you started addressing me so I have absolutely no idea what you said [18:00:21.0085] bakkot: ah np, was just casually mentioning that https://github.com/tc39/ecma262/pull/2125 is ready to go once you and/or shu have signed off on it :-) [18:00:29.0224] gotcha, thanks [18:02:01.0048] my presentation: https://github.com/tc39/proposal-private-fields-in-in/issues/7 [18:02:19.0598] imagine, `__proto__` outside of annex b [18:02:43.0697] haha dang, jmdyck said he wants to stop thinking about this [18:02:57.0684] he is usually indefatigable [18:12:34.0127] for the notes, who is speaking? [18:12:42.0846] Dan Clark? [18:12:52.0981] bakkot: DDC [18:13:50.0629] ryzokuken: I just want to confirm - and inform - the Realms champions will be available tomorrow for the overflow time, but some people won't be available tonight [18:14:30.0715] oh that's helpful info [18:14:40.0794] leobalter: i was just about to attempt to squeeze it in later today [18:15:15.0080] Thanks, Aki ! By the end of the meeting yesterday we said Wednesday and Caridy won't be able to attend today/tonight [18:15:17.0130] leobalter: thanks for letting us know! [18:15:39.0243] and by Wednesday we mean the 3rd day of the meetings [18:15:46.0843] w/th [18:16:10.0699] leobalter: after lunch, right? [18:17:13.0168] Let me confirm with Caridy, because I'm guessing the first time available would be doable [18:17:47.0149] okay. i just had y'all's scheduling constraints [18:19:50.0415] Aki: Caridy is available after 11PM East Time (3rd day)... this should be the lunch time [18:31:43.0329] FWIW I agree with @shu [18:31:54.0860] damn it [18:31:55.0686] I'm still not used to the autocomplete [18:32:07.0479] what is the host hook on this slide for? [18:32:08.0099] I think allowing some JavaScript assertion is important [18:33:34.0424] I got this book at a thrift store when I was a kid [18:33:42.0255] this was in like 2009 or something [18:33:51.0208] JScript always stuck in my head after that [18:34:17.0590] ohno [18:36:18.0082] decorators? in *my* javascript? [18:37:22.0185] πŸ’© queue advance? [18:38:55.0163] queue advanced, thanks and sorry [18:53:28.0011] the example code is leaking privates... [18:53:57.0633] intentionally, sure [18:54:28.0516] no, i mean it's only want to leak to test, but actually someone can get it [18:55:10.0502] i think he means, now everything that is not the test can use it too [18:55:28.0110] but that's because they stored it on metadata [18:55:36.0672] true, because symbols are public [18:55:43.0054] if you stored it somewhere else, like in the test library, it wouldn't be leaked [18:55:48.0849] So it's a bat example... [18:55:52.0308] bad example [18:55:58.0400] πŸ€·β€β™€οΈ [18:59:28.0552] devsnek: So we should fix the example to store it in somewhere else, or people may just copy the example code in the proposal repo :) [19:02:00.0809] I remember rbuckton have a similar proposal (but different syntax) for auto accessor? [19:04:32.0025] We are a bit faster compared to the initial schedule, I believe it's good if we want to extend time to clear out questions about Decorators [19:04:58.0025] as in, saving from time when it's eventually presented for Stage 3 [19:05:39.0249] ljharb: you can just have a different private field that you check, surely? [19:05:55.0061] objects can be partially populated with fields. [19:06:00.0002] meh [19:06:03.0995] technically true, not super relevant [19:06:04.0379] lol [19:06:14.0467] just put the field next to the accessor, now both must exist or neither do [19:06:18.0228] there's also value in being able to be explicit instead of dancing around what i'm trying to check [19:06:28.0868] sorry, for the notes, who just talked? [19:06:48.0748] bakkot: seems not a good code style :) [19:07:06.0730] eh, checking in general seems like not good code style [19:07:12.0780] sounds like a good ESLint contribution :P [19:07:19.0499] just do the thing and if people misuse your class they get an error, it's fine [19:07:44.0132] static methods should check [19:07:46.0334] but not `this` [19:07:51.0771] lol that is a subjective debate that probably isn't productive to have, but suffice to say that is not a universal api design principle in userland [19:07:52.0472] so if auto accessor i think we should use class brand check (class.hasInstance proposal) [19:08:19.0828] **for the notes, who just talked**? [19:08:27.0790] ah, rgn, thanks whoever put that in [19:08:34.0674] richard gibson, I was looking [19:11:57.0971] -2 points for not using .js.org [19:12:30.0932] it would be nice if that was in a more neutral home [19:12:37.0880] (js.org) [19:14:50.0488] shu: when you take the questions back, please make sure to ask about interleaved vs. at-the-end initializers [19:15:20.0338] Richard Gibson: specifically, if we would have concerns with making `addInitializer` unconditionally available if they were all at the end? [19:15:34.0842] correct [19:15:43.0740] roger [19:15:50.0255] that feels okay to me [19:16:15.0243] it may not fly for other reasons, but I am still interested in the answer [19:16:23.0243] i can't speak to if the use cases `@init` is supposed to solve still work fine with all-at-the-end [19:16:29.0295] but impl wise seems fine [19:16:40.0394] right, exactly [19:16:54.0303] my `@bound` use cases do require it be interleaved [19:16:57.0185] initializers at the end feels weird in the case of multiple decorators [19:17:08.0086] so that number 2 can store a bound reference to number 1, eg [19:18:51.0616] Justin Ridgewell: this actually identical to the find/findLast precedent [19:21:33.0860] @ljhar [19:21:47.0623] * @ljharb: how would that break down with at-the-end evaluation? [19:21:55.0635] bterlson: Aki could you give the delegate role to dcrousso ? [19:22:14.0982] or rather, at-the-beginning so it can be accessed _in_ the constructor [19:24:08.0726] someone needs to be muted [19:24:10.0670] Richard Gibson: `class C { @init:bound x() {} foo = this.x; }` - now, on a `const i = new C()`, `i.foo` is an unbound `x` if not interleaved [19:25:08.0112] ack, thanks [19:25:18.0681] "any objections?" _almost silence but background noise that sounds like hammering_ [19:25:35.0168] ok to interrupt and ask if the mic gain can be turned down? [19:25:37.0073] * "any objections?" _almost silence but background noise that sounds like hammering_ [19:25:38.0861] ow my ears [19:25:54.0436] is philip making popcorn [19:26:32.0253] so much better, thanks [19:26:54.0813] `setTimeout` with a capital T [19:27:10.0443] oh just namespaces [19:28:40.0196] for anyone else who is curious https://gc.gy/93934712.png [19:33:07.0682] Sorry if I misunderstood, ljharb you were saying capital implied constructor? What about Math/Reflect/etc? [19:33:37.0335] Jamie Kyle: a nested one implies constructor to me. `Math.Foo` would imply the same to me. top-level is fine as a "namespace or constructor" [19:33:48.0257] leobalter: https://github.com/tc39/proposal-temporal/issues/1583 is the context [19:34:12.0643] Thank you! [19:34:22.0534] shu coming in with the good logic [19:34:27.0392] i can't argue with that [19:34:36.0648] although i prefer the aesthetics of lowercase [19:35:48.0865] I agree that `Temporal.now` feels like a method to me, especially with `Date.now()` [19:37:11.0384] If `Temporal.Now`, I think many would use `new Temporal.Now()` , is that allowed? [19:37:22.0667] that's my confusion argument; and no, that would throw too [19:37:28.0362] since this is just a normal object. [19:37:46.0102] so I will like to support `Temporal.now()` :) [19:38:15.0436] i don't think people will do that [19:39:39.0214] devsnek: Not sure, could we have research on such things? [19:39:57.0426] The only things I've seen in the JS community with regards to nested namespaces is capitalizing them. Such as in https://www.typescriptlang.org/docs/handbook/namespaces.html ``` namespace Shapes { export namespace Polygons { export class Triangle {} export class Square {} } } ``` [19:40:09.0600] i don't think people will do either `Temporal.now()` or `new Temporal.Now()` - and if they do, they'd only do it once. so i don't think that's an important point either way. [19:40:26.0444] e.g. ``` const NodeTypes = { element: 1, text: 3, } ``` or whatever [19:40:31.0465] anyway typescript will stop me when I call API in a wrong way, but yes Temporal.now looks like Date.now [19:40:39.0885] > <@jamiebuilds:matrix.org> The only things I've seen in the JS community with regards to nested namespaces is capitalizing them. Such as in https://www.typescriptlang.org/docs/handbook/namespaces.html > > ``` > namespace Shapes { > export namespace Polygons { > export class Triangle {} > export class Square {} > } > } > ``` that's typescript syntax, not JS syntax tho [19:41:09.0288] i think we should just ask if anyone would block the current naming since its current [19:41:32.0273] Its just a clear place where I can see people naming things explicitly like this [19:41:52.0881] There are lots of other examples. i.e. `React.PropTypes` [19:41:54.0248] i've seen and written plenty of code naming these things with lowercase on nested things also. [19:42:16.0102] and a react component has `.propTypes`; react itself isn't even consistent there. [19:42:29.0664] Not a namespace! [19:43:40.0046] To me, Temporal.now is more like globalThis.parseInt , not React.PropTypes :) [19:44:04.0507] parseInt is a function though? [19:44:06.0174] > <@haxjs:matrix.org> To me, Temporal.now is more like globalThis.parseInt , not React.PropTypes :) Temporal.now isn't callable, though [19:46:19.0656] syg: can you fix up the last thing you said in the notes, bot mangled it and I missed it [19:46:29.0664] oh! I made mistake! So i slightly support Temporal.Now now :) [19:47:21.0402] i'm very sad about this topic, now i'll never be able to propose `array.forEach((v) => { if (c(v)) Array.forEach.break() })` [19:48:03.0011] twitter poll https://twitter.com/buildsghost/status/1415140845058023429 [19:48:23.0749] which is more effective at dooming your agenda item? "this is universal truth and should be completely uncontroversial" or "this should be quick"? [19:48:34.0373] `Array.forEach.break()` sounds interesting πŸ˜€ [19:49:32.0617] yeah strong block on both points [19:49:36.0965] :^) [19:50:06.0818] does `Intl` have nested namespace [19:50:19.0248] no [19:50:25.0221] iirc `Intl` has lots of uppercase in their API [19:50:41.0641] they are all constructors [19:50:44.0407] intl has only one level before a function [19:50:47.0609] what if `array.forEach((v) => { if (c(v)) SomeFunctionThatWillCallArrayForEachBreak() })`? [19:50:56.0517] they're either `Intl.Constructor` or `Intl.callable()` [19:51:21.0794] * they're either `Intl.Constructor` or `Intl.callable` [19:51:37.0694] tbh "nested namespace" is so rare a thing that i very much doubt this precedent will be needed in the future (altho setting one either way is obv good) [19:51:49.0803] legendecas: I guess break? though it seems very magical [19:52:13.0694] "until someone proposes call/cc" [19:52:16.0339] is this a challenge [19:52:18.0610] legendecas: that's not a break completion though [19:55:52.0885] iain: re Math, i do not believe so [19:56:14.0838] iirc Compartments has a very very short list of things to virtualize per compartment, and i suspect Temporal.now, Date, and Function are the main ones [19:56:44.0492] > <@michaelficarra:matrix.org> legendecas: that's not a break completion though then it will not be doomed by the proposed limitation? [19:56:45.0682] Sorry, maybe Date is a better example there [19:56:59.0240] that's a constructor tho [19:57:03.0348] legendecas: nope, you can implement that with normal completions [19:57:24.0335] Ah, good point [20:03:12.0468] for these aesthetic guidance things where people's intuition differ [20:03:17.0416] i'd like to see the temperature check [20:03:25.0204] ye [20:03:46.0305] agreed! the best temperature check I had previously, was the thread that I linked above, which is not a large sample size [20:06:19.0888] oh yeah I forgot we had that feature! [20:06:26.0140] this seems like a good use case for temperature check [20:15:13.0205] one meeting with tcq-in-spreadsheet and we're back in the dark ages πŸ˜‚ [20:18:26.0444] Just to share some results from searching in the community. Looking through all of the library/framework APIs which are documented by TypeScript in the DefinitelyTyped repository. You can find lots of examples of nested namespaces using both lowercase/capitalized naming: https://sourcegraph.com/search?q=context:global+repo:DefinitelyTyped/DefinitelyTyped+namespace+%5Ba-zA-Z0-9%5D%2B%5C.%5Ba-zA-Z0-9%5D%2B.*%5C%7B%24&patternType=regexp [20:19:02.0464] whoa [20:19:05.0636] code search [20:19:31.0613] the evidence says that the evidence is inconclusive [20:19:56.0224] what does copilot say i wonder [20:20:15.0905] I would say that the community not having consensus just means that it definitely should not block Temporal moving forward with .now [20:20:23.0974] I like shu's argument about, it probably shouldn't matter whether it's nested or not [20:20:42.0905] so if we'd capitalize it if it was `globalThis.Now`, we should capitalize it when it's `globalThis.Temporal.Now` [20:20:45.0295] https://gc.gy/93937845.png [20:21:05.0461] that's cheating [20:21:12.0792] they probably trained it on our code too [20:21:23.0050] if they had, it would not be `function() {` [20:21:34.0359] They are just on an outdated proposal [20:21:37.0993] lol [20:21:45.0739] lol exactly my point [20:21:50.0462] I wrote the old version [20:22:11.0470] `now` and `parse` were top level functions on `Temporal` [20:22:41.0033] > <@jamiebuilds:matrix.org> Just to share some results from searching in the community. Looking through all of the library/framework APIs which are documented by TypeScript in the DefinitelyTyped repository. You can find lots of examples of nested namespaces using both lowercase/capitalized naming: https://sourcegraph.com/search?q=context:global+repo:DefinitelyTyped/DefinitelyTyped+namespace+%5Ba-zA-Z0-9%5D%2B%5C.%5Ba-zA-Z0-9%5D%2B.*%5C%7B%24&patternType=regexp This actually looks pretty clear to me: if the _outer_ namespace is capitalized, so is the inner one, in almost all of these examples [20:22:55.0588] (and conversely) [20:23:13.0891] https://gc.gy/93937990.png [20:23:24.0228] I did say "almost" [20:23:31.0719] lol i like this one https://gc.gy/93938007.png [20:25:54.0354] 155 results for `Capital.lowercase` [20:26:41.0714] how many of them start with a character with no case mapping [20:26:58.0590] uhh, whats that regex [20:27:13.0695] `[^\p{Upper}\p{Lower}]` i think? [20:27:50.0657] :( [20:27:53.0637] lol [20:28:01.0002] I think I change my preference to `Temporal.𝒩ow` [20:28:15.0082] btw, as I mentioned before, I think `Now` is a better choice in this specific case because of the precedent set by `Date.now` and everything else in this space [20:28:18.0613] `Temporal.Γ‘ow` [20:28:47.0560] .now or Never [20:29:09.0073] `Temporal.LikeWhatEvenIsNowWhenYouThinkAboutIt` [20:29:11.0469] Temporal.Never [20:29:13.0707] `500+ results for Capital.Capital, 142 for Capital.lower` [20:29:27.0525] * 500+ results for `Upper.Upper`, 142 for `Upper.lower` [20:30:14.0970] > <@bakkot:matrix.org> 500+ results for `Upper.Upper`, 142 for `Upper.lower` Do you have case-sensitive enabled, I'm getting 194 for `Upper.Upper`? [20:30:20.0624] Jamie Kyle deep philosophy! Reminded me of George Carlin πŸ˜… [20:30:36.0838] > <@jamiebuilds:matrix.org> Do you have case-sensitive enabled, I'm getting 194 for `Upper.Upper`? oh lol I did not [20:30:41.0043] :O [20:30:46.0690] `Temporal.Current` [20:31:11.0848] `Temporal.πŸ†•` [20:31:20.0066] ok, that's the best one [20:31:23.0959] whoa i've never seen something render an emoji inverted before [20:31:24.0516] I change my preference to that [20:31:35.0101] unicode moment [20:31:42.0409] oh wait this is #delegates [20:31:52.0350] let's go to #tdz? [20:34:28.0772] Aside: I found sourcegraph really useful to find people who were doing stuff with my `Object.hasOwn` proposal, I'd highly recommend it when looking for community members doing stuff https://sourcegraph.com/search?q=context:global+Object%5C.hasOwn%5B%5EP%5D&patternType=regexp&case=yes [20:41:46.0009] tbh i'd be interested to see non-typescript results, since TS will be overly skewed by java/C# idioms [20:43:44.0105] I mean this repo is entirely dedicated to documenting APIs that are not written in TS [20:44:23.0816] lots of the types get names that never exist in the original JS [20:46:30.0429] If you click through the results, you can see most of them are documenting runtime constants/functions/classes that exist [20:46:55.0662] I'm not saying its perfect, but its a pretty good signal [20:47:07.0591] sure, but that's why i'd want to see the pure JS results - they'd contain all those without the skewed results from the TS-only names. [20:47:58.0291] can't you put `lang:javascript` [20:48:21.0931] Yeah but `namespace` doesn't exist so what would you search for [20:49:07.0628] I think the only conclusion thats ever going to be drawn here though is that the community has not clearly established a pattern one way or the other [20:49:48.0222] I think its a plus one to "not blocking on this" [20:50:02.0197] which imo kind of precludes using other langs/userland as an argument; also "confusion" since it can cut either way - so we're probably left with aesthetics, which is shaky ground to make precedent, or block a proposal, on [20:50:23.0561] * which imo kind of precludes using other langs/userland as an argument; also "confusion" since it can cut either way - so we're probably left with aesthetics, which is shaky ground to make precedent, or block a proposal, on [20:51:14.0830] lol but what will twitter think if JS isn't AESTHETIC? [20:51:55.0687] it'll always be aesthetic if you ask the right subset of people :-p [20:53:12.0643] we don't need to please everyone, just people who strongly believe in the JS aesthetic πŸ˜€ [20:54:17.0965] tell that to all the people who yelled at me for writing a blog post explaining the `#privateMember` syntax! [20:54:37.0836] just to reiterate, no proposal is being blocked on this [20:54:41.0226] the internet is... the internet [20:55:44.0227] i still don't like private fields [20:55:56.0299] and it's all your fault jamie [20:56:09.0181] :O [20:56:20.0124] (/s) [20:56:27.0218] private fields are extremely #aesthetic [20:56:33.0400] i do wish we did the symbol thing though [20:57:33.0831] I'm gonna not touch that [20:57:49.0150] lol [20:57:58.0920] because it's not reachable, or because you aren't going to reify your response [20:58:26.0614] booo [21:06:04.0053] I like "Concept Proposal" its very clear to me [21:07:22.0789] Is strawperson stage 0 or stage 1? [21:07:56.0469] stage 0 [21:08:17.0843] "proposal" is stage 1 [21:08:49.0506] idea, proposal, draft and well... stage 4 [21:08:55.0150] what about "prototype", that's not overloaded at all [21:08:56.0886] well, I guess I shared ljharb 's impression that, sure, you can refer to stages by these names, but they don't really have official names. Anyway, we throw around the term "strawperson" a lot and I like the idea of replacing it by "concept" [21:09:16.0698] the names are from https://tc39.es/process-document/ [21:09:24.0822] maybe just "idea"? [21:09:26.0822] prototype sounds like later stage to me [21:09:29.0298] "stub" as suggested in one of the screenshotted tweets might meet this concern from Chip? [21:09:32.0927] yeah, I like "idea" [21:09:49.0858] > <@devsnek:matrix.org> the names are from https://tc39.es/process-document/ Yeah, I know... I still didn't think of them as the names of the stages though, somehow... [21:09:53.0803] (never mind) [21:10:02.0564] yeah i don't think anyone really does [21:10:10.0333] we could just remove them [21:10:16.0288] yep lol [21:10:49.0404] Agree to remove it. [21:10:51.0594] Stage 0-4 seem decently well taught in the community already [21:10:51.0894] Actually chinese TC39 guys rarely use "strawperson" , we just use "stage X". [21:10:55.0914] I like the words, they are more understandable to people who aren't as active in the space [21:11:06.0684] I think we can just rapidly agree that renaming this term (which we do use a lot) to "concept" is good [21:11:07.0973] Stage 3 means nothing to a regular JS developer [21:11:13.0136] find me a person who uses "proposal" to refer to only stage 1 [21:11:49.0379] yes but i don't think that's nearly as true as it was a few years ago. but also the stage names mean little to them as well [21:12:31.0553] > <@usharma:igalia.com> Stage 3 means nothing to a regular JS developer * yes but i don't think that's nearly as true as it was a few years ago. but also the stage names mean little to them as well [21:12:50.0994] https://tc39.es/process-document/ [21:13:21.0420] Hmm, I do think we should adopt "concept" informally, even if we take out this column [21:13:41.0583] do we even use the term "strawperson" informally tho? [21:13:59.0217] I have heard others use it in plenary, yes [21:14:06.0210] well, I try to avoid it, since it's obscure, but in general yeah, it's a piece of jargon we throw around all the time [21:14:34.0888] https://github.com/tc39/notes/search?q=strawperson [21:14:48.0709] shane going for the nuclear option πŸ‘€ [21:14:50.0379] apparently not very often! [21:15:04.0954] "Stage 0-4" are used all over the place in tools [21:15:22.0791] counterpoint: https://github.com/tc39/notes/search?q=strawman [21:15:52.0691] https://tc39.es/process-document/ [21:18:58.0279] after shane we're at time [21:20:38.0518] number is much general than word. It's very hard for us to know what "proposal"/"draft" stage is much bigger :) personally i use the chinese translation of "proposal"/"draft" for any stage < 4 ... :P [21:21:01.0992] Referring to stage 0 stuff as "proposal" is already the norm in the community https://twitter.com/search?q=tc39%20stage%200%20proposal&src=typed_query [21:21:28.0131] I see a few of yalls names in there 🀐 [21:21:33.0090] Stage-0 can be Proposal? [21:21:40.0740] they're all proposals tho [21:21:55.0430] change the number in that search and there'll be results for all of them, i'd suspect [21:22:11.0315] > <@jamiebuilds:matrix.org> Referring to stage 0 stuff as "proposal" is already the norm in the community https://twitter.com/search?q=tc39%20stage%200%20proposal&src=typed_query lol touchΓ© [21:22:59.0426] what is a temp check? [21:23:00.0286] what the icon means? [21:23:39.0714] > <@jamiebuilds:matrix.org> what is a temp check? these buttons https://gc.gy/93941620.png [21:23:42.0178] I support remove names at all, not sure which emojo i should choose [21:23:56.0176] there are descriptions above each emoji button? [21:24:02.0207] btw i refreshed tcq and my temp check vanished (cc @bterlson) [21:24:41.0260] ljharb: just to note, I can see yours [21:24:50.0620] Can we please get a SYMMETRIC temperature check? [21:24:53.0058] thanks, i assumed so since i'd clicked it first [21:25:12.0857] Having several "yes" choices but only one "no" choice is too biased. [21:25:43.0026] And it leads to ambiguities like what we just encountered. [21:26:19.0995] > <@waldemarh:matrix.org> Having several "yes" choices but only one "no" choice is too biased. I agree. There should be a stronger "no" choice too IMO. [21:26:39.0805] > <@waldemarh:matrix.org> And it leads to ambiguities like what we just encountered. its ambiguity is why i don't want to use it. [21:26:56.0373] (in this case nobody would have picked that one, but in some cases I suppose they would) [21:27:07.0208] Other committees use SF, F, Neutral, A, SA [21:28:02.0171] Yeah, we kind of use it for different things sometimes [21:28:07.0923] for something like this it should definitely be symmetric [21:28:18.0173] i accidentally skipped shane in the queue, sorry [21:28:27.0517] I don't need to speak [21:28:47.0793] It seems most time we need a poll which could have more clear text for each choice. [21:30:03.0929] queue is on the wrong item [21:30:58.0648] no it's not [21:32:43.0008] +1 I want this a lot [21:37:29.0847] what's wrong with base64 as spec'd in https://datatracker.ietf.org/doc/html/rfc4648 ? [21:37:51.0798] oh wait, it specs both urlsafe and not [21:37:54.0442] my mic just crashed [21:38:02.0115] ryzokuken you just got played [21:38:06.0915] πŸ€¦πŸ»β€β™€οΈ [21:38:15.0515] but we can choose one, I'd prefer urlsafe [21:38:22.0578] ryzokuken: ☝️ [21:38:26.0397] a little help [21:38:27.0782] since JS is so strongly tied to the web [21:38:30.0232] Aki: got this [21:39:51.0509] not-takers: if you don't know someone's initialism, either write their full name or look it up in delegates.txt [21:39:56.0164] please don't just make a guess at it [21:40:11.0444] * note-takers: if you don't know someone's initialism, either write their full name or look it up in delegates.txt [21:41:32.0143] Aki: Can you advance the queue to devsnek's topic [21:41:55.0395] Justin Ridgewell: need to go for the clarifying questions first, otherwise we'd lose them [21:42:31.0514] uhh no but [21:42:34.0263] did i fix it? [21:42:40.0272] devsnek: There was a discussion about `TextEncoder`, but it was blocked because it's already standardized by HTML [21:42:58.0294] can we just move that into our spec then [21:43:02.0583] oh you did [21:43:04.0006] i'm tired of it being slow [21:43:13.0550] I just realized that we can move stuff up and down, sorry my bad [21:43:20.0902] The objector said that would be very rude of us to do. [21:44:00.0430] so whatwg is against moving textencoder to tc39? [21:44:19.0816] Β―\_(ツ)_/Β― [21:44:31.0305] This was several years ago at this point [21:49:23.0487] many time , u need buffer.tobase64Buffer() ... [21:49:57.0632] now people have to write new TextEncoder('utf8').encode(buffer.toBase64()) ... [21:51:00.0120] I hope engine at least could optimize that usage. [21:51:13.0642] FWIW, moving TextEncoder/TextDecoder to 262 would be quite helpful to all the software that embeds a JS engine, such as GNOME, or 0AD [21:51:36.0631] (or, at least, I can say that for GNOME it would, just assuming about the others) [21:51:37.0357] and Node [21:51:39.0242] both node.js/deno implemeneted TextEncoder/TextDecoder [21:51:44.0971] yeah [21:51:49.0690] its slower than it should be though [21:52:11.0121] GNOME is implementing it as well, but it would be nice to delete that code [21:53:13.0947] Actually it's hard to say the platforms implementation TextEncoder/TextDecoder are all same and correct :) [21:53:31.0286] I'm surprised to hear anyone say this doesn't meet the bar for usefulness [21:53:46.0958] another reason why `TextEncoder` should be in the engine [21:54:01.0228] Temporal has lots of complexity; I'm not sure where the line should be for complexity and the standard library. [21:54:12.0361] > <@haxjs:matrix.org> Actually it's hard to say the platforms implementation TextEncoder/TextDecoder are all same and correct :) IIUC that is what wpt is trying to achieve [21:54:35.0136] legendecas: but non-web hosts don't run WPT, right? [21:54:41.0860] wpt is useless because they refuse to write tests in a way that can be used by non-web hosts easily [21:54:43.0801] I think Node was planning to, atleast partially [21:54:43.0823] node.js do [21:54:48.0570] yeah [21:54:58.0379] node.js can barely run a very small subset of wpt tests [21:55:11.0411] using a very complex test harness that took a long time to implement [21:55:16.0067] we've used WPT in a non-web context with some success FWIW [21:55:55.0488] yeah I like the idea of implementing web APIs outside of the web, sharing tests, etc [21:55:56.0995] There are plenty of JS features I've needed to create my own versions of, but that doesn't detract from the usefulness of having a version of them in the language [21:56:28.0550] I might not be able to be in the call for the rest of day, but I register here that I'm in sync with littledan's presentation and I strongly support the Module Blocks/fragments proposal. It is an amazing opportunity to explore with Realms but also without it. There is much to config and many realms we use today at Salesforce. If we have module blocks, this will be a considerable removal of network requests. Think about configuration that needs to be loaded per realm and out application uses many many many realms. Bundling still requires code injection so Module Blocks allows a much smoother configuration for us. [21:56:39.0147] > <@jamiebuilds:matrix.org> There are plenty of JS features I've needed to create my own versions of, but that doesn't detract from the usefulness of having a version of them in the language this [21:57:12.0122] uuid was blocked from being in stdlib [21:57:52.0642] oh? is uuid blocked? ... what a pity [21:58:02.0497] indeed [21:58:06.0379] devsnek: it wasn't blocked, the champion felt it was faster to go through a different SDO [21:58:13.0740] oh, interesting [21:58:21.0683] well, I do believe that in this case it makes more sense to be in `WebCrypto` [21:58:26.0892] which is a bummer [21:58:29.0105] it was actually faster, it wasn't just they felt it was faster [21:59:14.0191] well, Intl was faster to do in TC39, when the web community shut it down initially [21:59:18.0694] there's no consistent pattern here [21:59:35.0735] there are lots of things that we manage to do pretty fast in TC39 [21:59:45.0229] I don't think we would've done crypto faster, though [21:59:55.0196] does WICG qualify as an SDO? I don't think you need to do any consensus-building there? [22:00:17.0992] WICG is only community group? [22:00:30.0714] i think we should make a "javascript but for real platforms" spec, sort of like wasi, where it has all the useful apis we don't allow into js because of its abstract target [22:00:49.0379] * well, Intl was faster to do in TC39, when the web standards community shut it down initially [22:01:25.0139] i thought the issue with uuid was that folks on TC39 actively blocked adding anything that's in WebCrypto to the language? [22:02:21.0215] I just want to reiterate my support for this proposal. I think its very useful, and I'd be happy for it to have options. I think in general we should support adding more Clearly Useful Things to JS [22:03:52.0686] I think we all agree adding useful things , the problem is how to define "useful" :) [22:04:21.0497] I dont think the pushback was that it was not useful [22:11:35.0461] i think that's still statically verifiable in the split form [22:12:17.0391] > <@haxjs:matrix.org> many time , u need buffer.tobase64Buffer() ... fwiw I don't think I've ever needed this personally [22:13:26.0939] a buffer where the bytes are numbers representing ascii characters of base64? [22:13:59.0223] ok i should say "some time" not "many time" :) [22:14:00.0823] > <@usharma:igalia.com> but we can choose one, I'd prefer urlsafe since this is mostly used for communicating with other applications, and other languages default to plain (not url) base64, I'm opposed [22:14:27.0935] oh, fair point [22:15:50.0750] the queue is behind [22:16:46.0755] devsnek: fixed [22:17:24.0248] Why my topic was removed? [22:17:33.0383] Adding it again [22:18:29.0997] oops. i accidentally nexted you [22:18:32.0639] my b [22:18:43.0644] now Mark's topic seems to be gone :) [22:18:50.0790] leobalter: you're on the queue twice [22:18:57.0127] I see all topics [22:19:07.0029] 2 by leo 2 by mark 1 by hax [22:19:14.0447] same ryzokuken [22:19:32.0820] one by snek one by daniel [22:19:43.0426] i screwed up. everyone refresh [22:19:44.0406] ...and counting [22:19:48.0021] sorry i broke it [22:20:19.0925] fwiw, it feels like cheating since I work with Dan, but strong +1 from me too πŸ˜€ [22:20:53.0713] can module variable be passed to other functions? [22:21:19.0988] yes, there was an example in the presentation passing it to `new Worker()` [22:21:43.0455] so u could also return a module variable from another function? [22:21:52.0634] its a value yes [22:23:47.0551] Michael Ficarra: tcq seemed broken, perhaps? The first topic I added was gone, same with Mark, I added it again after it disappeared for me. [22:24:05.0974] leobalter: try refreshing next time that happens [22:25:42.0591] well, I've never seen that issue before. I thought someone deleted it so I added again as I wanted to add it before the queue got crowded. [22:25:50.0260] I'll surely try a refresh next time [22:27:41.0376] ten minutes [22:28:40.0276] it seems I was skipped in the queue :) [22:29:51.0887] Anyway, my question is about could I write code like "function x() { return module {} }; const m = x(); import {} from m;" I suppose it should not allowed? [22:30:39.0669] that would not work, static imports happen before evaluation [22:30:55.0456] you could use dynamic import though [22:31:14.0786] * that would not work, static imports happen before evaluation [22:33:09.0322] yeah I guess it should not allowed , but it's a little weird that `module m{}; import x from m` works but `let m = module m{}; import x from m` not. [22:33:18.0132] "Strong support MICROPHONE EMOJI - he must really want to speak!" - Aki [22:33:42.0390] hahahaha [22:34:45.0629] Aki: can we do a temperature check? Assuming Daniel is ok with that [22:35:02.0878] > <@haxjs:matrix.org> yeah I guess it should not allowed , but it's a little weird that `module m{}; import x from m` works but `let m = module m{}; import x from m` not. if you never write imports below the top of the file its not a problem :P [22:35:04.0602] it's like to say, `let m = module {}` suddenly make `m` become dynamic :) [22:35:38.0766] devsnek: import/export could be everywhere... [22:35:46.0416] yeah but they're always hoisted [22:36:09.0806] fwiw, that does kind of already happen with functions: ``` f(); function f(){} // works ``` ``` f(); let f = function f(){} // fails ``` [22:36:15.0713] so there is at least a little precedent [22:36:16.0483] phoddie: I can see 2 entries from you on the queue, first is "Like this direction." [22:36:23.0129] is this the one missing for you? [22:36:34.0649] (I just learned that a refresh should bring it back) [22:37:09.0755] i feel like this proposal could be a cool opportunity to introduce nested import syntax [22:37:14.0811] I would really like to see some syntax like what exists in Rust to import from the enclosing "parent" module ```rs #[cfg(test)] mod tests { use super::*; } ``` [22:37:25.0745] `import { react: { useState } } from 'bundle'` [22:37:30.0844] @bakkot I think it's a differnt problem. we can remove the inner `f` or `m` [22:37:34.0811] * `import { react: { useState } } from 'bundle'` [22:38:07.0185] > <@jamiebuilds:matrix.org> I would really like to see some syntax like what exists in Rust to import from the enclosing "parent" module > ```rs > #[cfg(test)] > mod tests { > use super::*; > } > ``` this is mentioned in an issue on the repo iirc [22:38:35.0059] devsnek: Yeah I raised it :P [22:38:47.0450] @devsnek do we really need nested import? consider we have the url syntax which already have nested path for module... [22:38:51.0657] https://github.com/tc39/proposal-js-module-blocks/issues/34 [22:39:09.0286] oh on the other proposal repo [22:40:10.0281] phoddie: YES! [22:40:13.0224] dormant modules [22:40:27.0630] they are statically parsed, but runtime evaluated on demand [22:40:34.0874] > <@haxjs:matrix.org> @devsnek do we really need nested import? consider we have the url syntax which already have nested path for module... it gets rid of string syntax, i don't want to think about which slash to use [22:41:39.0085] littledan: thank you for pursuing this! [22:42:10.0854] I STILL THINK ABOUT THIS CONVERSATION ALL THE TIME [22:42:14.0921] `import {x: {y: {z}}} from 'module'` vs `import z from 'module/x/y'` , seems no much difference :P [22:42:19.0728] december 2019 [22:42:23.0000] salesforce [22:42:24.0624] fltering [22:42:37.0724] lol [22:42:58.0694] like literally last week i was thinking about this [22:43:09.0221] so glad we're finally going to be getting array filtering in js [22:43:16.0338] -_- [22:43:21.0372] oh this isn't tdz oops [22:44:25.0786] About the array empty slot issue previously mentioned, it seems `filterReject` should follow `filter`(which skip the empty slots) but not sure about the `groupBy`. [22:44:47.0070] /me remembers stating the coffee filter example πŸ˜… [22:45:04.0733] why `filterReject` instead of just `reject`? [22:45:51.0833] ljharb: I don't know. It's the naming bikeshed issue. Actually I don't like `reject` or `filterReject` because it make me confused with promise reject... [22:46:01.0544] I am used to the name reject cause of https://docs-lodash.com/v4/reject/ [22:46:11.0171] also ruby [22:47:05.0888] Personally I prefer `filterOut` or `filterNot`(which is used by kotlin) [22:47:14.0394] Should groupBy() return a Map? [22:47:29.0550] i'd prefer a null object over a map [22:47:32.0194] is "people who are like me" an unchangeable designation? personally I had the wrong intuition about "filter" the first time I encountered it (not in JS) but quickly got used to it [22:48:23.0063] ptomato: So it's a stage 1 issue, and i remember we already had 40 mins arguments in stage 1 meeting... [22:48:46.0323] > <@ljharb:matrix.org> i'd prefer a null object over a map I find it really weird to stringify the return value of `groupBy()` to get `{ true: [...], false: [...] }` [22:49:11.0452] i'd expect people do do `condition ? 'yes' : 'no'` or similar tho, rather than relying on that [22:49:35.0753] Why should it be limited to stringifiable objects though? [22:49:42.0762] * Why should it be limited to stringifiable values though? [22:50:37.0714] fair point, i'd expect returning a symbol to work too (for the object case) [22:51:03.0658] * fair point, i'd expect returning a symbol to work too (for the object case) [22:51:11.0654] objects can have symbol keys jordan [22:51:12.0914] in general tho maps/set aren't sufficiently useful due to their lack of tons of helper methods [22:51:22.0216] * in general tho maps/set aren't sufficiently useful due to their lack of tons of helper methods [22:51:49.0610] well we should definitely fix that! [22:52:11.0985] holes = undefined here [22:52:23.0112] /me got on to a tangent over array comprehensions [22:52:28.0578] groupby = runs? [22:52:42.0844] apparently it is in python [22:52:47.0106] I prefer objects because getting things from them is much more convenient [22:53:14.0960] in particular `let { a, b } = list.groupBy(whatever)` is nice with objects, does not work with Map [22:53:29.0717] skip the holes! [22:53:56.0536] Rust's [group_by](https://docs.rs/itertools/0.8.0/itertools/trait.Itertools.html#method.group_by) (in itertools) also does runs [22:54:07.0163] could bikeshed the name [22:54:53.0687] i believe it is what non-programmers call "sorting" [22:54:57.0817] so maybe sort2 [22:55:01.0904] lol [22:57:21.0239] for the notes, who is speaking? [22:57:29.0301] got it thanks [22:57:32.0625] `groupBy` is only useful for a subset of keys which seems like a problem. Cute for `partition` and works almost well with static type systems, but very inconsistent with broader use-cases that other languages implement for `groupBy` [22:59:55.0209] my tcq doesn't match what's on the screen [23:00:00.0204] reloading doesn't fix [23:00:21.0182] * `groupBy` returning an object is only useful for a subset of keys which seems like a problem. Cute for `partition` and works almost well with static type systems, but very inconsistent with broader use-cases that other languages implement for `groupBy` [23:00:31.0773] Mine matches [23:00:43.0001] mine too [23:00:52.0607] I resonate strongly with Michale [23:00:53.0155] * `groupBy` returning an object is only useful for object keys (obviously I guess) which seems like a problem. Cute for `partition` and works almost well with static type systems, but very inconsistent with broader use-cases that other languages implement for `groupBy` [23:01:37.0867] I agree that `select` would have been a better name for filter which would have made a `reject` method intuitive. But he combination of `filter+reject/out` feels like more mental overhead for me to sort out, it has a double negative feel to it to me that I'd second guess all the time [23:04:38.0161] I agree with that ^ but I also feel like there is a legitimate use-case for some sort of rejection filter. I think we've had to write a `not` helper function so we can write `.filter(not(someFunc))` [23:04:57.0017] * I resonate strongly with Michael [23:06:50.0317] what about `Map.groupBy(iterable, callback)` versus `Object.groupBy(iterableOrArraylike, callback)`? [23:07:09.0928] iain: Yeah... Based on some of discussions elsewhere though, I feel like we overestimate the problem of two methods on different objects doing different things as a serious source of confusion for users [23:07:24.0873] * iain: Yeah... Based on some of discussions elsewhere though, I feel like we overestimate the problem of two similarly named methods on different objects doing different things as a serious source of confusion for users [23:07:31.0659] or as Daniel mentioned, if we have a `not` function, we could says odd = not(isEven); and then filter on odd [23:07:55.0528] ljharb: can't do an iterable, only finite structures [23:07:57.0693] A `not` global sounds hard to add [23:08:39.0266] > <@michaelficarra:matrix.org> ljharb: can't do an iterable, only finite structures why? [23:08:50.0641] if it's infinite then it'd loop forever, which is what happens almost everywhere if you have an infinite iterator anyways [23:08:56.0630] I guess, they meant a local function in that example and not a global `not` [23:09:26.0275] * if it's infinite then it'd loop forever, which is what happens almost everywhere if you have an infinite iterator anyways\ [23:09:27.0730] * if it's infinite then it'd loop forever, which is what happens almost everywhere if you have an infinite iterator anyways [23:09:29.0672] ljharb: because groupBy on infinite structures is commonly understood to have the Python/Haskell semantics discussed earlier [23:10:33.0786] meh, ok [23:11:48.0391] filter(not(x)) not really solve the original motivation (though I don't strongly support that) [23:11:52.0692] aki++ [23:12:05.0855] `reject` conflicting with `Promise.reject` is a legit concern [23:12:14.0525] * `reject` conflicting with `Promise.reject` is a legit concern [23:13:15.0370] I don't think it's useful to be so particular about Stage 1 requirements [23:13:30.0576] Stage - 0 is an idea Stage - 1 defining the problem Stage - 2 defining the solution ^ sounds good? [23:13:44.0865] (contradicting myself, I do think an explainer is a requirement for a Stage 1 proposal) [23:13:51.0253] stage 1 also means that TC39 wants to keep discussing/solving the problem [23:14:06.0606] > <@hemanth.hm:matrix.org> Stage - 0 is an idea > Stage - 1 defining the problem > Stage - 2 defining the solution > > ^ sounds good? +1 [23:14:11.0483] When I was exploring the name `Object.has` vs `Object.hasOwn` I did an exploration into methods named the same thing on different objects in 262+web apis, there are a number of examples, and I could not find any confusion about them on github or stack overflow. I really don't think there's an issue with `Promise.reject` and `Array#reject` being named the same thing [23:15:34.0918] wasn't handling of non-property-keys an open question for groupBy? [23:15:56.0854] I agreed with Mark's point that R&T interaction is important [23:15:56.0885] Jamie Kyle: It may be a unnecessary burden for newbie, and especially for non-English speakers. [23:16:54.0996] 2019 December notes on array select-reject for stage-1 -> https://github.com/tc39/notes/blob/master/meetings/2019-12/december-4.md#array-selectreject-for-stage-1 [23:17:05.0754] Justin Ridgewell: once you name and make a repo for groupBy please hmu so i can update the proposals table [23:17:38.0640] +1 to Mark's and ptomato 's comment about being unenthused about filterReject [23:17:41.0111] Jamie Kyle: especially Object.has/keys would have a subtle semantic difference with Map/Set.has/keys (even it may not cause many problems in practice) [23:18:04.0275] To be clear I'm not proposing renaming hasOwn to has again [23:19:13.0669] Object.has implies it returns a list of `ha` that the object contains [23:19:17.0002] But there are examples of identically named methods that do distinct things already and I dont see confusion about it [23:20:31.0706] Yeah, I don't have a strong opinion on the name, but `Math.log` and `console.log` have different contextual meanings. `Promise.reject` doesn't really throw a wrench in anything here. [23:20:35.0433] module fragments might not be needed for tomorrow btw [23:20:48.0064] I guess I was asking for an extension because I misunderstood the state of the queue [23:20:58.0654] * I guess I was asking for an extension because I misunderstood the state of the queue [23:21:52.0603] I guess this is relevant again https://twitter.com/drosenwasser/status/1139665079324925952 [23:23:29.0582] danielrosenwasser: sometimes it's unavoidable... but if we can we should avoid such things I believe. And `console.log` is not TC39 specced :) [23:24:28.0887] Name a javascript developer that doesnt use console.log :P [23:25:54.0449] HE Shi-Jun: So you're saying my proposal to add `log10`, `log2` and `log1p` would be better in WHATWG? πŸ˜„ [23:26:06.0603] * HE Shi-Jun: So you're saying my proposal to add `log10`, `log2` and `log1p` to `console` would be better in WHATWG? πŸ˜„ [23:27:57.0294] Okay no more jokes, have a good night/day everyone! [23:55:12.0298] > <@jamiebuilds:matrix.org> Name a javascript developer that doesnt use console.log :P One interesting thing is when i use eshost/jshost I always feel the pain that there are no console.log at all :( it make me remember my IE6 days. [00:05:36.0639] I have been asked a question about proper tail call and I need some help. [00:05:50.0232] ProJS 4th edition 4 has a chapter introduce proper tail call which was added in ES6, and the book says that closure can't get PTC, but I can't find it in the spec (maybe I missed it) and it seems safari (the only engine implement PTC) also don't have such limitation. [00:06:51.0951] Is that the error of the book? [00:13:53.0799] The spec definitely doesn't make mention of such a restriction, so I think the book is wrong. [00:14:06.0851] I'm also having a hard time coming up with an example where it would even be observable. [00:14:39.0157] The comment in the example says that closures are not supported, but if you read the text above, it says "the tail call function is not a closure *that refers to variables in the outer function's scope*" [00:16:20.0018] apologies in advance, incoming noise. i've tested the API as far as i can on a test channel, now i need to do it on this channel oh god i hope i don't break it [00:18:04.0551] well that was an unexpected outcome [00:29:03.0065] > <@bakkot:matrix.org> I'm also having a hard time coming up with an example where it would even be observable. You can observe that by throwing an `new Error` and check the `error.stack` to see whether the caller is in the stack. Though `stack` is not specced so hard to say whether it reflect the truth. [00:31:21.0101] (BTW, this is also a reason that I prefer STC than PTC, because PTC may affect the error stack by accident and cause error collection and unification issue in real world.) [00:31:58.0761] > <@akirose:matrix.org> well that was an unexpected outcome wait, did it work or not? [00:32:11.0628] both? [00:32:16.0488] hah [00:32:20.0380] schrodingers room [00:33:07.0689] i was running a PUT to update perms on the room, apparently i can't reduce perms of someone equal to me, which makes sense i guess [08:22:08.0961] this was fun... turns out that JSC tokenizes non-ASCII non-Latin1 WhiteSpace characters after a regular expression literal as part of its flags, and XS doesn't recognize them as WhiteSpace at all * https://bugs.webkit.org/show_bug.cgi?id=227944 * https://github.com/Moddable-OpenSource/moddable/issues/665 [08:33:17.0969] fun [08:33:23.0322] sounds like a good test262 test [09:01:56.0928] scary [09:10:35.0643] Richard, thanks for the excellent report. Much appreciated. Must not have been caught by test262 (not in our list of known RegExp issues). [10:07:58.0447] yep. I opened a Test262 issue, and will try to fix it now [10:30:49.0919] leobalter: would you have any time to help me understand best practices for the above? [12:01:52.0481] shu: a passing thought: now that resizable buffers has exposed the notion of detaching buffers to non-threaded code, maybe buffer.toBase64 should have an option to detach the original buffer as well [13:23:40.0106] Richard Gibson: link? [13:23:46.0246] or let me find it... [13:29:57.0509] ok, I agree with phoddie , the report is great! We have tests in Test262 for whitespace and LT but most of them are actual characters instead of escapes or string evaluation. In this case, one test file with all the cases would blow without proper information, so I'd split into several files, each one for each character. [13:32:47.0124] right, I want to know where in the repo structure to do that and what the files should look like. I'm assuming this will be templated [13:34:12.0689] I sse some files just use the escaped character, which might help the generation [13:34:22.0210] like `var\u000Ax;` [13:35:52.0149] My first guess would be to use `test/language/literals/regexp` but I wonder if that's more related to ASI or something else. I need to re read the original issue [13:36:41.0617] it's related to properly recognizing _WhiteSpace_ and _LineTerminator_ as insignificant in the stream of input elements, specifically after a regular expression literal [13:38:35.0085] this folder should be fine... see `regexp-first-char-no-line-separator.js` in there [13:38:55.0053] it treats inside, so we can extend texts for outside [14:02:02.0947] Richard Gibson: I created a stub here but it's been too long I don't use the generation tool. Python is not happy about it. I'll send some code if I get it running [14:05:52.0414] basically, I want help so that I can contribute more meaningfully for this and other issues. Right now I don't understand best practices well enough to do so. [15:53:34.0087] bakkot: re: detaching original buffer, what's the use case there to detach? [15:54:54.0805] just so that you don't have to keep both in memory 2021-07-15 [17:59:25.0372] is 8x8 down? [18:00:14.0928] it's working for about 16 of us :) [18:02:04.0632] (I did it yesterday) [18:02:37.0098] had initially done just two days since we'd expected this one to run for just two days [18:02:53.0367] its working for me [18:13:02.0649] sffc: 262 has "extended mathematical values", in case you want to define "intl math values" as "extended with NaN and -0" [18:14:32.0941] * sffc: fwiw 262 has "extended mathematical values", in case you want to define "intl math values" as "extended with NaN and -0" https://tc39.es/ecma262/#sec-mathematical-operations [18:17:16.0905] +1 for Stage 3 [18:17:32.0176] I cannot unmute, sorry πŸ˜… [18:24:55.0610] can i take a quick moment to appreciate sffc 's boundless positivity when presenting to the committee [18:52:59.0776] Aki bterlson I'll let you know asap when Caridy is back. [18:53:57.0882] +1 for pattern matching from me - I would have come this last time, but was on vacation [18:54:18.0439] Michael Ficarra bakkot : 2360 or 545 first? [18:54:48.0536] * Michael Ficarra bakkot : 2360 or 1554 or 545 first? (since 545 is big and there may be conflicts) [18:54:55.0020] ljharb: they should be able to go in in any order [18:55:07.0507] ok cool, i'll do it oldest to newest then [18:55:12.0709] to be safe, land 545 I guess [18:56:03.0594] ah, 1554 adds a new AO though ljharb [18:56:19.0511] we may want to wait for bakkot to rebase that one on 545 first [18:56:26.0763] I'll remove the label [18:56:37.0183] alternatively, i could land 545 last [18:57:15.0133] ljharb: we should probably take this to #tc39-editors:matrix.org [18:57:26.0447] sure, i can't speak in there tho [18:57:59.0527] oh, that's not good [18:58:06.0894] is there an easy way to permit every delegate? [18:58:27.0591] ^ Aki or bterlson? [18:58:46.0943] I don't think so, without a bot of some kind :/ [18:58:59.0138] I think it's time we built a bot [18:59:15.0247] i've been elbow deep in the API docs for the past few days [18:59:16.0180] so [18:59:17.0123] uhh [18:59:18.0199] on it [18:59:29.0208] 😲 awesome! [19:00:28.0632] I'm interested in the pattern matching incubator [19:01:59.0677] i'm not actually building a bot, for the record. i'm writing a tiny CLI for the chairs to handle admin tasks, including matrix permissions [19:02:10.0608] @mich [19:02:13.0125] ugh [19:02:28.0718] Michael Ficarra, bakkot i think you two are admins on the editors channel [19:02:34.0269] you should make it a discord bot [19:02:35.0429] what _is_ a bot, maybe we're the bots... [19:03:50.0721] Could we have matrix rooms for the proposals which many may be interest in? I just found pattern match proposal have a room :) [19:04:14.0610] as long as your homeserver can handle it, you can make as many channels as you want [19:04:36.0168] > <@haxjs:matrix.org> Could we have matrix rooms for the proposals which many may be interest in? I just found pattern match proposal have a room :) temporal has one too [19:04:43.0901] can someone post here when we resume [19:04:46.0275] Aki: I think so too, but I can't figure out how to add someone or change their permissions [19:04:47.0615] question is, are those official TC39 rooms to be added in this space? [19:04:56.0218] devsnek: we are almost here [19:05:00.0169] we're resuming [19:05:10.0690] we are? [19:05:17.0690] yeah [19:05:25.0632] with the temporal discussion [19:05:37.0105] oh [19:06:13.0075] > <@usharma:igalia.com> temporal has one too Oh, temporal room does not have the prefix "tc39" so I missed it! [19:11:10.0742] Michael Ficarra: ftr no, it still says i can't post [19:14:15.0758] I think in the developer perspective, "namespace" means if you destructure the property/functions from the namespace, they still keep the same functionality [19:16:18.0775] probably also, that you could copy all the things from the original namespace to a new object, and it'd be indistinguishable except by identity? [19:17:30.0733] ryzokuken: Can I ask what's the room name for Temporal proposal? I can't find it by public room search. [19:17:50.0522] i can't find it either [19:20:18.0104] > <@ljharb:matrix.org> probably also, that you could copy all the things from the original namespace to a new object, and it'd be indistinguishable except by identity? Agree. And it also means namespace object would never be used as receiver (`this` argument) in their functions. [19:29:25.0934] Fwiw WebIDL namespaces can have pure accessors [19:31:29.0345] what is "pure accessors" ? [19:40:37.0252] In the sense of, they act like data properties basically [19:43:09.0770] > <@dehrenberg:igalia.com> In the sense of, they act like data properties basically but use namespace object as receiver? [19:43:54.0301] we are now discussing strictly internal words? [19:43:55.0912] Note, old libraries like YUI2 use namespaces like "YAHOO.util.*" which do not capitalized... I think they are affected by java language convention. [19:43:57.0626] I would like to stop discussing that [19:44:23.0112] These are both established terms. I don't think we have standing to rename them [19:49:55.0889] bterlson: advance queue? [19:50:13.0969] done [19:50:56.0179] so on the previous topic, we kind of went from discussing capitalization to discussing whether we should call "module namespace" something else, without getting formal consensus on the previous topic [19:50:59.0725] unless that happened and I missed it [19:51:49.0670] iirc consensus was presumed but never officially asked for [19:52:10.0739] i did ask for consensus for capitalization [19:52:16.0538] didn't i? [19:52:18.0874] my understanding was the main point was the narrow issue of .Now? [19:52:25.0193] **point of order**: more note takers [19:52:37.0719] yes, sorry, i asked for consensus for capitalization of .Now [19:52:59.0563] and that we will write down what a namespace object is in how-we-work, but i did not ask for consensus that we capitalize all future namespace objects [19:53:05.0534] the thing I wrote in the notes is Namespace objects will be capitalized, including when nested. This means `Temporal.now` is renamed to `Temporal.Now` Shu to write up a definition of "namespace object" [19:53:10.0047] is that not accurate? [19:53:14.0385] because I would really like it to be accurate [19:53:16.0060] so we can be done [19:53:33.0025] i'd like that to be true; if ljharb confirms he doesn't object to it let's go with that [19:53:43.0799] because i asked for a narrower thing, pedantically speaking? [19:53:52.0492] if membranes "solve" direct access, why does chrome not block them as the same security issue [19:54:05.0511] * if membranes are equiv to direct access, why does chrome not block them as the same security issue [19:54:39.0547] Once you have leaked the wrong-realm array constructor, it's game over for preventing the library user from monkey patching things [19:54:51.0928] that is true, that's a problem with the slide example [19:55:17.0537] but that's the point, the argument is a footgun argument [19:55:21.0998] altho `delete otherRealmGlobalThis.Array.prototype.constructor` would fix that [19:55:32.0646] it's easy to write code that is wrong in the way the slide example is wrong [19:55:52.0767] it's easy to write loops as infinite ones. that doesn't mean we ban loops. [19:56:02.0330] The example may be not the best, but I think I understand the point :) [19:56:19.0375] does anyone know? should i ask mark? [19:56:27.0204] ljharb: it's a question of line-drawing [19:56:42.0530] No membrane is not equiv to direct access... [19:56:48.0837] sure. which is arbitrary, and decides whose use cases get to happen and whose don't [19:56:52.0460] The average success rate at writing a terminating loop seems to be a lot higher than the average success rate at not leaking given direct object access [19:56:57.0795] membrane should not leak another realm [19:56:58.0461] i don't think it's a strong argument to say "another bad thing Y is possible, and we don't ban Y, therefore we shouldn't ban any bad thing" [19:58:11.0062] sure. but i don't think it's super strong either to say "X can be messed up, so rather than make X harder, let's make it impossible" [19:58:47.0794] * sure. but i don't think it's super strong either to say "X can be messed up, so rather than make X harder to mess up, let's make it impossible to do at all" [19:58:53.0091] Personally I don't think leaking another realm is the end of the world, but if we can avoid it in most cases I would be happy :) [19:59:14.0387] i agree, in the abstract. in this case this was informed by actual enthusiasm to use Realms as sandboxes that would've resulted in security issues, which pushed this over the line to "let's make it impossible instead" [19:59:40.0537] please note i use "security" there in a way i don't personally endorse as a browser vendor :) [19:59:50.0924] There's a lot more to defend against than just deleting the constructor property. You can find the Array constructor again through eval. Less obscurely, you could easily patch methods on the prototype, and it's easy to accidentally use them. It becomes a big problem to block everything [19:59:58.0729] +1 [20:01:02.0644] littledan if you're handed an other-realm array that has no constructor, and you don't have access to the other realm, how could you find it through eval? [20:01:16.0622] the prototype tho is fair, that'd defeat the purpose [20:01:48.0170] to fix caridy's example, i'd do `return [...slice.call(sequence, index)];` or similar [20:01:50.0232] Agree with shu , it seems very easy to write wrong code which will leak the sandbox. So if consider secure sandbox is the important use case, I have to support ban the direct object access. [20:01:55.0079] +1 to Caridy's point [20:02:44.0921] I think it is important that we make better mechanisms for resilient code. Shared-object Realms just don't seem like that solution. [20:03:13.0691] (maybe there are other important use cases of them though) [20:03:38.0691] wow, was not expected to get rick rolled [20:03:42.0058] Oh, good music ... [20:03:50.0523] but I approve [20:08:44.0405] can we have an api to zero-copy move arraybuffer data over the callable boundary [20:08:53.0425] does that already exist [20:09:03.0131] * can we have an api to zero-copy refer to arraybuffer data over the callable boundary [20:09:22.0042] I'm reading the scrollback and now am not sure if there is any residual doubt about whether we got consensus on the capitalization of namespace objects. can anyone confirm? [20:10:12.0891] if there was it should be in the notes [20:11:35.0034] I believe there was some discussion above about whether the notes correctly reflected what shu asked for? I'd like to sleep well tonight knowing the matter is put to rest [20:12:18.0630] ljharb: are you okay recording the namespace discussion conclusion as what bakkot has written, which is Namespace objects will be capitalized, including when nested. This means Temporal.now is renamed to Temporal.Now Shu to write up a definition of "namespace object" [20:14:15.0645] sorry for the delay; i've had kids out of bed in and out of my office for the last half hour [20:14:21.0689] i'm very unhappy with the renaming and think it's a bad decision, but i had my chance to object and didn't, so i guess go for it [20:15:38.0616] thanks, unhappiness noted [21:07:12.0259] oh man are hosts going to add postmessage [21:07:14.0650] probably, right? [21:07:27.0277] so you can structured clone your objects across the boundary [21:07:43.0487] indeed, that was the original suggestion, a structured-clone boundary [21:07:53.0470] but here you could just do it manually [21:07:55.0488] a callable boundary is not mutually exclusive with a structured clone boundary afaict [21:07:56.0170] by messaging yourself [21:08:32.0579] bakkot: most of a structured close boundary represents a membrane [21:08:46.0618] really? [21:08:57.0499] a structured clone boundary explicitly doesn't preserve identity [21:08:59.0725] you get new clones [21:09:07.0888] I don't have bandwidth to discuss here and listen to the meeting [21:10:12.0792] I'm afraid my answers here will be short, but I'd love to talk more with time allowing [21:11:11.0203] would anyone block a "transfer arraybuffer across realm boundary" proposal [21:12:08.0606] transfer meaning detach on one side? [21:12:09.0350] devsnek: can you explain transfer better? [21:12:17.0444] detach would be fine for my use case [21:12:31.0095] seems like it'd be subsumed by structured clone, which i'd like to think more about [21:12:41.0920] i'd be cool with a full structured clone [21:12:53.0269] no principled concerns from my POV for that [21:13:04.0976] what kind of timeline are you thinking about structured clone in [21:13:16.0596] no idea [21:13:21.0498] πŸ˜” [21:15:27.0146] in a js environment with MessageChannel is there a way to get a port across the boundary [21:15:35.0416] transfering arraybuffer across realms! I really want it! [21:15:49.0459] * in a js environment with MessageChannel is there a way to a port across the boundary [21:16:10.0075] ljharb: I would like to talk to you about your caching use case more, maybe. I thought I wanted realms to solve that but it turns out I didn't and I suspect you also might not. [21:16:35.0946] bakkot: i have to listen, so if you can type it one-sidedly i'll read as i have time [21:16:40.0823] yup [21:16:55.0768] * in a js environment with MessageChannel is there a way to get a port across the boundary [21:17:48.0045] HE Shi-Jun: I hear you! There are people in the SES group who wants it too. [21:19:10.0103] do we want to go back to the queue for discussing this? [21:19:39.0531] basically: in terms of how many objects you create, a new realm is significantly more heavy than just capturing every reachable thing. and you can just capture every reachable thing instead: basically just take a snapshot of the current realm, with a fairly small loop. and that's much lighter weight, and not even very much more code. [21:19:43.0675] Transferable seems web api, not in ES spec. Hope we could include it in JS directly. [21:19:56.0388] i can confirm that greedily taking all the primordials is expensive, it is one of the reasons nodejs moved to using v8 snapshots [21:20:03.0966] so optimizing for specifically that use case does not seem like something which needs language-level support [21:20:10.0999] ryzokuken: please check the queue because Greg is not used to the TC39 meetings yet [21:21:36.0510] i don't have this cache-originals problem space paged in very well, how does Realms solve this again? [21:21:46.0355] like even if you cache the Realm don't you still need to run before anything can run in the user Realm? [21:21:54.0232] yes, the assumption is that you are running first [21:22:08.0756] leobalter: sure. Did Greg remove his question? If not, could you please ask them to add it again? I saw their clarifying question for a second [21:22:13.0900] > <@shuyuguo:matrix.org> like even if you cache the Realm don't you still need to run before anything can run in the user Realm? yes, that isn't the problem being solved. but it makes it one thing instead of N things [21:22:14.0039] okay, and don't you still have to enumerate all reachable things from the Realm? [21:22:14.0054] ljharb wants to cache originals lazily [21:22:14.0086] the question is, do you take a snapshot by making a new realm, or by walking the current one and saving stuff off of it [21:22:15.0641] you can't just cache the Realm [21:22:15.0662] assuming you are run-first [21:22:30.0004] uhhhh why not? [21:22:39.0338] no one else should be able to reach it [21:22:39.0893] why can't i just cache the realm, if nobody else can get to my realm, and i avoid leaking access to its primordials? [21:22:49.0353] oh, you make an entirely new realm for the sole purpose of getting primordials off it [21:22:52.0691] yup [21:22:57.0076] not that you try to reuse a user realm that's already used for something else [21:22:58.0193] got it, thanks [21:23:00.0421] yup [21:23:20.0383] my response to that is that that is a Bad Idea for performance [21:23:24.0492] which people have said [21:24:15.0046] yeah, and it seems like the thing ljharb doesn't like about the current approach is also performance, so this would not solve this, though maybe I am not understanding [21:24:34.0439] it's not really perf, it's that it's actually hard to grab everything dynamically [21:24:35.0322] `Realm.prototype`? [21:24:39.0003] especially since not all the instrinsics are globals [21:25:20.0439] eh, there's only a small number of things which aren't reachable as paths off the global, so you just write those down and capture everything else with a loop [21:25:20.0464] getoriginals proposal lives again [21:26:10.0384] that specific proposal had the "get originals" function as nonconfigurable tho, which is a nonstarter. [21:26:29.0527] I am not sure I understand what ljharb want... but I guess it's a usecase of making polyfill? [21:26:49.0420] not just polyfills. all my npm modules are written robustly, so that later builtin modification doesn't break them. [21:27:25.0556] I don't see why this would be part of the Realm constructor. Presumably you would want to be able to access this from the main global object [21:27:34.0422] ^ agreed [21:27:47.0017] I feel like jordan + SES + me + salesforce + one or two other polyfill libs are the only people who would use this, though [21:27:56.0725] so I am not convinced it makes sense for the language to help us out [21:27:59.0127] we can just do it ourselves [21:27:59.0623] that's 10-20% of npm traffic right there tho [21:28:01.0798] Ok, it's like to reuse spec behavior (abstract operation or something like that) [21:28:42.0562] * I feel like jordan + SES + me + salesforce + one or two other polyfill libs are the only people who would use this, though [21:29:07.0139] there is a sharp upper bound on how many people can do this, because each person doing it assumes they are first-run [21:29:14.0502] and we can't all be correct [21:29:40.0176] I believe it's a valid use case, which is very important for polyfills or other cases which u want to keep align as close as spec. [21:29:55.0310] the implementation complexity for getoriginals seems high [21:30:00.0615] though i don't know the exact semantics proposed [21:30:17.0394] so, agree with bakkot's point on nicheness [21:30:20.0976] v8 already like half implements it [21:30:30.0265] for its own internal usage of primoridals [21:30:32.0722] I guess the semantics proposed are a bunch of Gets? [21:30:41.0678] It seems OK? [21:30:48.0324] pretty much, yup [21:31:01.0086] well, getOwnPropertyDescriptor, really [21:31:03.0526] if i modify `Object.prototype` [21:31:12.0270] and i getOriginal('%Object.prototype%'), what do i get? [21:31:19.0915] But I still not get how current realm proposal not satisfy this use case ... [21:31:21.0566] the original [21:31:24.0048] like i added a property to Object.prototype [21:31:26.0616] The post-modification value [21:31:29.0606] but the object is still the original object [21:31:30.0097] oh ok [21:31:31.0870] then i have no concerns [21:31:55.0709] The post-modification property of the original intrinsic [21:32:59.0376] no [21:33:07.0687] or wait [21:33:17.0873] ljharb does your use case match nodejs's primoridal api [21:33:21.0803] yes [21:33:27.0899] then it matches what littledan said [21:33:30.0755] yeah exactly [21:33:40.0694] if you replace, say, Array.prototype.slice A with Array.prototype.slice B, without replacing GetIntrinsic, and you try to get that intrinsic, you'd get A [21:33:59.0916] i don't understand that sentence [21:34:01.0048] iow if you want to deny access to A, you'd have to wrap/replace GetIntrinsic to do so [21:34:04.0386] "that intrinsic" is which intrinsic? [21:34:06.0522] I don't think I really care what it gives you for X after someone has patched X, as long as it's a coherent, because if I'm first-run I can patch getOriginals myself to pretend that I hadn't patched X [21:34:15.0168] shu ljharb is saying like, `getIntrinsic('%Array.prototype.slice%')` [21:34:22.0004] that sort of api [21:34:23.0407] thanks, that unconfuses me [21:34:24.0744] but the most convenient thing is if it just looks it up on the current objects [21:34:36.0968] OK, so it would be like a separate point that you would have to monkeypatch? [21:34:45.0992] yes [21:34:58.0872] So a little more "secure" than the current approach? [21:35:07.0262] Could you explain the rationale? [21:35:33.0895] it's not more secure, it's just more convenient [21:35:42.0235] This actually was an issue with getOriginals, that such an API might have real memory cost. [21:36:00.0911] if it's _just_ gets on the original objects, then that's fine [21:36:15.0048] if it's like "get me the original objects with its original shape at the start of Realm genesis", that is not fine [21:36:16.0233] it can't be just that, or it doesn't meet the goal [21:36:30.0999] i don't think it would have the memory cost until you actually try to use a specific intrinsic [21:36:34.0360] if nobody's touched the GetIntrinsic function, then that is what it would have to be, or it wouldn't be solving the problem [21:36:50.0998] let me just put it on the queue because i don't understand what you're proposing anymore [21:36:55.0263] > <@shuyuguo:matrix.org> if it's like "get me the original objects with its original shape at the start of Realm genesis", that is not fine * if nobody's touched the GetIntrinsic function, then that is what it would have to be, or it wouldn't be solving the problem [21:37:19.0227] i think most of the major engines have a concept of rehydrating these apis from RO space as needed? [21:37:35.0440] not sure [21:38:00.0235] i don't think so actually, RO space things are RO [21:38:26.0685] v8 definitely does this, at least for intrinsic functions [21:38:46.0237] Yeah the thing is that not all built-in methods are in that table [21:39:25.0653] would probably need more investigation but i don't think memory is a blocker off the bat [21:40:32.0490] I will also have to double-check in SM [21:40:36.0863] > <@dehrenberg:igalia.com> Yeah the thing is that not all built-in methods are in that table yes, they are now, with the `%a.b.c%` syntax. [21:40:44.0107] i don't know about sm, but iirc jsc does this too [21:40:49.0219] every single original thing, with no exceptions, is accessible in the spec via intrinsics % % syntax. [21:40:54.0205] * every single original thing, with no exceptions, is accessible in the spec via intrinsics % % syntax. [21:41:20.0740] i think shu's concern is that they are not *all* accessed that way currently, and he's unsure of the implications of allowing that [21:41:26.0284] * i think shu's concern is that they are not *all* accessed that way currently, and he's unsure of the implications of allowing that [21:42:39.0030] like in v8 there is a table on contexts with some of these, for example promise.prototype.then, but it's ad hoc for what actually gets used [21:42:47.0988] I think we will have to check with implementers out of band before we can guarantee that there won't be implementation issues. [21:42:55.0014] yes [21:43:08.0776] i think in the abstract it seems doable [21:43:18.0089] specific hurdles may arise and i can't promise anything [21:43:33.0989] firing from the hip is a key part of constructive language design [21:43:53.0762] i'm obviously not asking for nor could i possibly expect guarantees. [21:44:15.0876] i just want to minimize the chances that i invest lots of effort and get stonewall-blocked later [21:46:30.0106] fwiw I don't hate it [21:46:45.0994] not super useful to me, because I also need to modify things [21:46:50.0235] and I'll need to patch it [21:46:52.0967] but it's not that hard to do [21:48:54.0287] "Adventures in monkey-patching the anti-monkey-patching API" [21:49:10.0735] * "Adventures in monkey-patching the anti-monkey-patching API" πŸ˜› [21:49:19.0664] what happens if you do [21:49:24.0551] getOriginals('%getOriginals%') [21:49:33.0468] I was just about to say that [21:49:50.0432] if you monkey-patch `getOriginals`, would `getOriginals` return the original `getOriginals`? [21:50:03.0580] technically it would return whatever you patched it to return [21:50:05.0626] your monkey-patched one would decide that :-p [21:50:21.0650] but in twitter speak [21:50:24.0809] this is a good meme [21:51:14.0659] being able to not use eval is good [21:51:39.0874] shu: I really don't have a better name that would not cause conflict, but my last alternative to rename Realm (if really necessary) would be CallableBoundary [21:51:41.0157] ryzokuken: this is _surprisingly_ well-trod ground, it turns out [21:51:50.0062] at least in my little niche [21:52:11.0278] lot of people patching Function.prototype.toString to mask their functions and also making it mask their new Function.prototype.toString while they're at it, e.g. [21:52:16.0570] bakkot i'm honestly not sure what you do but everything i hear about the things you build sounds very cool [21:52:37.0759] and scary [21:52:50.0414] it's very... adversarial [21:53:12.0667] the actual thing I do is anti-automation [21:53:17.0873] every developer for themselves [21:53:20.0711] so like shoebots, I am the other side of that game [21:53:28.0342] if you are familiar with that niche [21:53:33.0522] you fight the gpu scalpers? [21:53:47.0053] can't speak to any particular retailer, but that is in the category of thing we do, yes [21:53:50.0000] leobalter: i'm fine with that, sure, i don't want to spend committee time bikeshedding now. i'd like for the vendors to agree to hold off shipping until we've actually bikeshed the name, which i want us to do async [21:53:50.0507] godspeed sir [21:53:57.0856] the way I usually put it is, we solve the same problem as captchas without needing a captcha [21:54:12.0829] I don't think marketing likes me to describe it that way though [21:54:15.0986] > <@leobalter:matrix.org> shu: I really don't have a better name that would not cause conflict, but my last alternative to rename Realm (if really necessary) would be CallableBoundary I would prefer to consider the name Realm settled (we are at Stage 3; we had years to debate names, etc) [21:54:28.0868] that just makes me think about google's creepy user behavior tracking non-captcha [21:54:29.0159] bakkot: let's move this to TDZ? πŸ˜€ [21:54:30.0880] i know, but we never did actually debate the name, did we? [21:54:39.0992] > <@usharma:igalia.com> bakkot: let's move this to TDZ? πŸ˜€ whoops sorry [21:54:50.0360] no worries, I'm equally interested hehe [21:54:57.0859] > <@shuyuguo:matrix.org> i know, but we never did actually debate the name, did we? Well, we said, "we are open to other names if you don't like this" [21:55:19.0718] the fact we are adding anything to hold on implementation gives me a very high amount of anxiety. My strong preference is to keep it as is, but I can't say no otherwise. [21:55:24.0715] I don't really like the name "CallableBoundary" but I don't have a better idea [21:55:30.0486] well, we don't really like this [21:55:35.0793] this == "Realm" as the user-exposed thing [21:55:44.0666] it's not a blocking concern, but i don't think we've actually bikeshed this [21:55:53.0419] Oh, I see. I thought you had made peace with ut [21:56:05.0254] leobalter: i'm not putting a hold on implementations [21:56:06.0401] Can we timebox the renaming debate to one more meeting? [21:56:14.0529] of course [21:56:32.0817] i'm only asking that other vendors don't ship until we've bikeshed the name, and if for whatever reason that never happens, we'll roll with Realm [21:56:49.0139] we could just spend all of tomorrow discussing it [21:57:00.0213] no, i'd rather we do this async as i originally said [21:59:34.0385] i feel like we've gone through like 15 different topics without noting consensus at the end of them [21:59:49.0627] we did get consensus for realms, explicitly [21:59:52.0377] it's in the notes even [21:59:58.0468] > <@bakkot:matrix.org> we did get consensus for realms, explicitly we did [22:00:00.0509] cool [22:00:02.0903] oh oops [22:00:09.0893] I misunderstood [22:00:42.0631] no tests though :( [22:00:52.0794] that's next stage [22:01:05.0215] yeah i know, but i still get my hopes up [22:01:08.0235] i like a rename; it's really not "realms" anymore [22:04:10.0733] I commit SM to not shipping [22:05:21.0851] * I commit SM to not shipping (before we've had a chance to bikeshed the name) [22:07:36.0994] About name, what about "Isolate" ? :) [22:08:52.0961] HE Shi-Jun: that's deceptive because this is different than a V8 `Isolate` [22:09:21.0800] my understanding is that this lies somewhere between a `Context` and `Isolate` in terms of V8... [22:10:58.0868] also i read "isolate" like a verb but a v8 isolate is a noun [22:11:38.0261] > <@usharma:igalia.com> my understanding is that this lies somewhere between a `Context` and `Isolate` in terms of V8... "IsolatedContext" :facepalm: [22:11:41.0795] this is a context in v8 [22:11:46.0514] an isolate is an agent [22:11:59.0482] context in the public api sense at least [22:12:24.0957] is "this looks interesting" a reason...? [22:12:40.0060] I like `Compartments` [22:12:47.0321] I like `Zones` too tbf [22:13:25.0935] I've been informed of objections for both Compartments and Zones already [22:13:40.0608] same for Context [22:13:54.0247] there is a much stronger objection for Context [22:14:09.0273] SM already has Realms, Zones, Compartments, and Contexts internally (this is not a blocker for any of those) [22:14:21.0562] what's wrong with "realm" exactly? I didn't find an issue about it, did I miss anything [22:14:35.0545] the meaning is not immediately clear [22:15:20.0237] "context" is an extremely overloaded term :-) [22:16:35.0110] RealmBoundary, it's ugly but heh [22:17:47.0067] legendecas: "Realm" already means a thing as a spec term in HTML that won't match up to user Realms [22:18:14.0426] so we can end up in a situation where we have to say "spec Realm" vs "user Realm" or something, which doesn't seem great [22:19:42.0603] shu: to confirm, you said you don't like `CallableBoundary`, right? [22:20:11.0598] i didn't say that, i said i'm fine with the name, probably something like "perfectly neutral" [22:20:21.0627] it's a weird name, but no weirder than Realm [22:20:22.0569] oh I see [22:20:47.0733] no weirder than Realm, but it distinguishes from the html Realms you mentioned [22:20:54.0126] yeah [22:21:18.0593] from this perspective Atomics could mean many things, specially to those who don't use shared buffers [22:21:33.0222] (I like Atomics, and this is not a criticism to it) [22:21:48.0645] Global Factory [22:21:52.0183] * GlobalFactory [22:22:19.0652] devsnek: that assumes a subset of usage [22:22:32.0385] does it? [22:23:07.0493] IIUC it can run codes, but not only construct a global [22:23:18.0879] running code uses the globals [22:23:22.0978] but i see your point :( [22:24:33.0865] x factories make x's [22:27:22.0283] can we maybe cut short debate about the efficacy of ecma's technology [22:27:27.0228] yeah [22:27:35.0340] do we need this in the notes? because I am getting tired of transcribing this [22:27:40.0765] no\ [22:27:48.0322] k I will kill it [22:27:50.0162] in fact absolutely not [22:27:56.0132] it's not time yet [22:27:57.0549] we probably shouldn't have it in the notes anyways if ecma wants it not public [22:28:18.0519] if we have time after this to have littledan talk about realms stuff, could you fire it back up? [22:28:28.0928] yup [22:28:38.0743] ty [22:28:53.0955] shu: I wonder if we should use the W3C-TAG review to get feedback on the name? [22:29:03.0893] we have it transcribed so far; if you don't want that published, delete it [22:29:23.0036] At least three people actively reviewed Realms there and they might come with some interesting ideas that is also web friendly [22:32:34.0795] leobalter: ehh, i don't think this is a good use of TAG's time [22:32:39.0230] they're overloaded as it is [22:33:07.0111] no problem, just verifying the next steps. [22:33:22.0409] i also did not hear this from what ujjwal said, thank you aki [22:33:26.0909] yes, I think Aki's answer brought a lot more explicit clarity [22:33:38.0487] πŸ˜… Thanks Aki! [22:33:52.0071] * Yes, I think Aki's answer was helpful and direct [22:34:04.0664] shu: I'll roll some internal work with my team so I hopefully bring you a few suggestions [22:34:21.0257] awesome, thanks [22:34:51.0863] Celebration tweet: https://twitter.com/leobalter/status/1415544635934396418 [22:35:38.0193] don't celebrate yet, it could end up with a name you hate :^) [22:35:55.0126] I really don't mind on the name [22:37:09.0025] You can call it DemiIsolatedRealmCommunicationChannel and if I have the feature working I'm happy [22:38:10.0333] i don't think the extra resources angle affects tc39, does it? it might affect other tcs [22:38:17.0753] we have our own copies of everything [22:38:50.0748] potentially tho it might mean we no longer *need* to invent our own solutions to every problem [22:38:58.0668] FALSE [22:39:04.0774] lol [22:39:05.0539] lol [22:39:09.0771] ljharb: very skeptical of that, yeah [22:39:14.0410] IT AFFECTS US. it affects the chairs. it affects me. [22:39:24.0489] lol i put the hedge word in there [22:39:27.0261] extra resources is a big sell for me [22:39:27.0861] oh, which part is false [22:39:32.0268] Aki: elaborate? [22:39:35.0584] * oh, which part is false? [22:39:38.0582] * oh wait, which part is false? [22:39:45.0557] what more resources would you like to get from LF for chairs? [22:39:49.0582] our disfunctional email address, to start [22:40:02.0780] we've been trying to get IT to fix that for like three years [22:40:10.0306] i... okay [22:40:14.0833] LF/openjs's devops is pretty good ime [22:40:31.0909] there is a mile-wide chasm to me between "working email aliases" and "let's change by-laws"? [22:40:33.0289] i want a matrix homeserver. i want a paid discourse host [22:40:53.0176] my point is there's a ton of infra stuff [22:40:58.0488] that does really matter [22:41:12.0011] okay [22:41:30.0660] was there a decision to stop taking note that I missed, or should I raise a point of order? [22:41:32.0558] shu it does sound like there is not consensus on the scary bylaw stuff [22:41:37.0063] including spending our dues in a more efficient way taking advantage of the LF's existing infra [22:41:39.0440] > <@bradfordcsmith:matrix.org> was there a decision to stop taking note that I missed, or should I raise a point of order? yes, this doesn't go in the notes [22:41:52.0564] * shu it does sound like there is not GA consensus on the scary bylaw stuff [22:50:11.0736] Istvan is aware we've abandoned the typesetting thing because of all the strings attached to the funding, right? [22:50:57.0117] I certainly wouldn't hold that up as an example of a successful funding request process [22:50:59.0391] Aki: your queue item is exactly what popped into my head, glad you're saying it [22:51:06.0654] We didn't abandon it, it's just that I didn't argue it out yet [22:51:10.0844] I am kinda the bottleneck [22:51:20.0670] The queue isn't working for me [22:51:31.0399] refresh? [22:51:38.0344] I have more requests to forward up [22:54:33.0904] +1000 to what Aki is saying; this is sort of my barrier [22:54:59.0296] +1 also, they should be aggressively figuring out how to spend money to help us; we shouldn't have to always ask [22:55:14.0247] littledan: I understand what you mean by "I'm the bottleneck" but I think it's highly unfair. [22:55:21.0395] I asked some people in committee to write more formal documents to describe funding requests, that didn't end up happening, and I didn't write them either [22:55:44.0233] why does it fall upon you (or anyone from us) to navigate a labyrinth in order to get the most basic stuff done? [22:55:53.0372] Well, I volunteered [22:56:03.0920] if you didn't, someone else would have to [22:56:13.0800] things like these should work by default, is what I mean [22:56:29.0242] I agree with Aki, we need a push model with actual people whose job it is to help us [22:56:38.0017] I guess that's close to what Aki's point was too, that there's just a lot of work to make things work [22:57:00.0121] We are collectively paying lots of money, it should partly go to solving our problems [22:57:18.0169] > <@dehrenberg:igalia.com> We are collectively paying lots of money, it should partly go to solving our problems this 100% [22:57:23.0415] on that note i wanna get to waldemar's queue item [22:57:24.0386] πŸ€” [22:57:25.0707] are dues changing? [22:57:44.0980] > <@dehrenberg:igalia.com> We are collectively paying lots of money, it should partly go to solving our problems I think the Linux Foundation will help us shift to this model [22:57:57.0553] > <@shuyuguo:matrix.org> are dues changing? This is a good thing to ask Isabelle [22:58:10.0941] yes, and waldemar is going to ask [22:58:13.0958] so let's advance the queue [22:58:19.0445] shu: for Google, yes. IIUC the plan is to reduce them somewhat for organizations that are members of both LF and ECMA [22:58:43.0094] littledan: can we skip you [23:00:41.0012] i have to run y'all, but one final thought: the plan was for the negotiations to be done (-ish, done for another round of discussion) but July 21, so please don't read "i don't know" as duplicitousness [23:01:14.0662] * i have to run y'all, but one final thought: the plan was for the negotiations to be done (-ish, done for another round of discussion) by July 21, so please don't read "i don't know" as duplicitousness (edit typo) [23:01:28.0534] ryzokuken: Do you have any information about changes to dues for organizations that are *not* members of LF? [23:01:45.0471] iain: "no change" last i heard [23:01:53.0580] iain: I would need to recheck but yeah "no change" [23:02:28.0810] A change in dues structure has long been under discussion in Ecma, so I am not surprised that it is part of an Ecma modernization package [23:02:32.0973] but this would incentivize all of us non-LF members to work with them (because the cost of joining now comes down). [23:04:01.0792] My understanding was that cross-participation comes with extra fees, so this isn't an Ecma-is-bankrupt scenario [23:05:41.0542] so do we have a meeting tomorrow still? [23:05:43.0860] oh I didn't realise this was the final topic of the meeting [23:05:44.0667] draft schedule's empty [23:05:48.0496] ironically jory's post on the reflector 18 days ago is pretty clear in comparison to the information we obtained during this meeting https://github.com/tc39/Reflector/issues/386#issue-930822046 [23:07:21.0542] Could we have a document with more details about the changes (include fees)? Some Chinese members are both Ecma and LF members but no delegate on the call, they would like to read the document. [23:07:35.0813] HE Shi-Jun: that's the deal [23:07:40.0934] we'd post the documents on the reflector [23:07:47.0947] HE Shi-Jun: once they're available, i'll make sure they're shared [23:07:51.0589] so you can review them and discuss them with other delegates [23:07:58.0292] the implication to me tho is that fees won't go up for anyone; they just might go down for members of both? [23:08:05.0698] Thank you! [23:14:23.0330] > <@ljharb:matrix.org> the implication to me tho is that fees won't go up for anyone; they just might go down for members of both? I think we will just have to wait a few days for Ecma to publish its proposed fee structure [13:19:48.0178] could someone with edit access to the TC39 calendar remove delete the Friday session? [16:22:47.0239] i couldn't, even though i have access to the calendar. probably that item isn't editable by others [16:22:48.0984] ljharb: ^ [16:28:53.0975] :eyes: [16:29:04.0057] * πŸ‘€ [16:29:23.0967] done 2021-07-16 [22:45:20.0941] thanks! 2021-07-17 2021-07-18 2021-07-19 [13:21:10.0518] i plan on taking PTO next week, so the earliest we'll have the next incubator call is the first week of august [13:21:20.0987] if there's a volunteer who's interested in facilitating and scheduling a call for next week, please let me know [13:30:10.0661] For current resources for the upcoming meeting on the Ecma/LF partnership, see https://github.com/tc39/Reflector/issues/386#issuecomment-882838561 [13:31:06.0503] The meeting will be held [15:00-17:00 CEST on Wednesday](https://www.timeanddate.com/worldclock/fixedtime.html?iso=20210721T1300) 2021-07-20 [22:00:41.0704] welp here goes nothing. everything. whatever. [22:03:19.0065] oh yay my TC39 admin CLI didn't break matrix. [22:03:30.0366] neat! [00:30:38.0483] CLI TCQ anyone? [00:30:44.0134] Actually I really like the current TCQ UI [00:49:45.0302] my cli is able to add, change, remove, or moderate across matrix, github, and discourse. [00:50:05.0574] i have many tests to finish writing before i start actually using it though [07:09:00.0308] lol who needs tests [10:51:46.0011] next incubator call reflector thread: https://github.com/tc39/Reflector/issues/389 (i can't pin it since we already have 3) [13:57:45.0351] my word why is the corejs guy such an asshole [14:04:40.0908] shu He might be a person that's really hard to work with, but even if he's not in this room we should try to be respectful towards community members πŸ˜… [14:06:39.0638] very well [14:06:58.0727] my word why is the corejs guy so consistently disrespectful in his communications [14:08:09.0061] Well yes, that's true πŸ™ƒ 2021-07-21 [19:32:59.0415] I'm interested in adding a new [[Frozen]] slot on all objects, it's stronger than Object.freeze (let's call it Magic.freeze for now), spec object can opt-in to support this stronger frozen. The result is we will have a generalized method to freeze a native object (if they support this operation). e.g. you can still setDate on a Object.freeze(date), but you cannot do it on a Magic.freeze(date) object. [19:33:53.0197] It can be a more powerful and generalized solution to cover the Freeze ArrayBuffer I presented before [19:35:06.0316] Host are encouraged to support freezing internal state when it's meaningful. (e.g. Web URL class can support this, but DOM object should not) [19:35:48.0547] Is this solution likely to be supported? If not I'll not spend time on preparing and presenting it [19:41:15.0993] > <@jackworks:matrix.org> I'm interested in adding a new [[Frozen]] slot on all objects, it's stronger than Object.freeze (let's call it Magic.freeze for now), spec object can opt-in to support this stronger frozen. The result is we will have a generalized method to freeze a native object (if they support this operation). > > e.g. you can still setDate on a Object.freeze(date), but you cannot do it on a Magic.freeze(date) object. Or add a new integrity level that stronger than sealed and frozen in SetIntegrityLevel and provide a new API for it [22:48:07.0364] I'm pretty skeptical that this can be made to work well (based on various goals raised by TC39 delegates) [22:49:32.0109] Well, I should think more about the opt-in part. Maybe that makes it OK [22:50:02.0445] Could you say more about the motivation? [22:52:00.0874] I guess the simplest way to do this would be a protocol defining a method (possibly a symbol). Can you explain why you framed this as Magic.freeze(date) and not date.freeze()? [22:57:20.0836] If the NEW freeze is an opt-in feature, how would the NEW freeze ended up being different with Object.freeze when new requirements apply? Broaden the scope of freeze is a breaking change. In that case adding new freeze support might still need a NEW NEW freeze. [23:03:07.0725] Well, there are lots of different constraints about such a feature beyond just web compatibility. For example, it should maybe be hookable for user-defined classes, and interaction with proxies and private fields should be defined [23:10:42.0246] Such an advanced freeze has been suggested as a replacement for records and tuples, which is probably a reason I am being too negative here, sorry. I think it would not make sense as a replacement because it wouldn't make the structural equality part of R&T work (since it would be weird for the identity of the value to change just because you Magic.freeze it). But it's OK for you to have that as a non-goal for this other feature (as long as it is not claimed to subsume R&T) [23:36:00.0611] I really think that immutability needs to be part of the design of the class, and not bolted on later through some external function called on an instance. Temporal is an immutable replacement for date, and includes methods for changing one component without mutation, which are idiomatically done on date through mutation. [23:37:07.0686] Another example is that Tuples are proposed with their array-by-copy methods, and they would seem somehow broken without them (or with the normal array mutation methods) [00:57:43.0434] > <@dehrenberg:igalia.com> I really think that immutability needs to be part of the design of the class, and not bolted on later through some external function called on an instance. Temporal is an immutable replacement for date, and includes methods for changing one component without mutation, which are idiomatically done on date through mutation. Yeah that make sense to me πŸ‘€ [09:03:22.0382] Is the SES meeting collect the attendee every time like incubator call? Otherwise it will be always too late for me [09:13:48.0218] i think the SES meetings are always at a fixed time because they usually have a fixed attendee list, whereas the incubator calls are re-scheduled each time because the attendee list is different each time [09:14:20.0684] > <@shuyuguo:matrix.org> i think the SES meetings are always at a fixed time because they usually have a fixed attendee list, whereas the incubator calls are re-scheduled each time because the attendee list is different each time Oh 😒 [09:16:25.0163] but i'm not part of that group, please reach out to someone there about how to accommodate APAC delegates [09:19:14.0090] Thanks [09:20:28.0621] yeah, we could definitely move that meeting; it was moved previously to be more Europe-friendly. Probably email Kris Kowal for next steps here. It'd be great to have you in the calls--I think everyone in the group really likes your perspective on these topics. [09:20:43.0232] (narrator: the time they chose was not very Europe-friendly) [09:24:59.0560] anyway I'll raise this at our meeting in half an hour [09:28:14.0700] > <@dehrenberg:igalia.com> anyway I'll raise this at our meeting in half an hour Thanks! [09:29:21.0210] And I have another question, how should we handle SES meeting and TG3 meeting, they looks like a duplicate in some part [09:30:04.0594] Jack Works: Do you mean in their contents, or scheduling? [09:31:21.0935] Scheduling maybe? But iirc tg3 don't have regular currently [09:32:30.0777] about scheduling, we were thinking of having them be in the same timeslot, but then canceling SES when TG3 overlaps [09:32:38.0142] so SES is weekly and TG3 is monthly [09:33:04.0909] about contents: We discussed this in the past--I think they have very different scopes. The SES meeting is about discussing various proposals from the point of view that object-capability security is meaningful, and in TG3, I think the first items of business include what security models to consider [09:35:32.0953] Oh sure, they're also covering spectrum (is that word) and things like that? [09:36:09.0267] Spectre? Well, I don't know, I've been a bit out of the loop on TG3 honestly [12:21:26.0572] where does the code for tc39.es live? just notice Myles' last name is misspelled [here](https://tc39.es/code-of-conduct/#code-of-conduct-committee) [12:21:46.0322] tc39.github.io? [12:22:03.0659] https://github.com/tc39/tc39.github.io/ [12:52:18.0338] No, the link provided lives at github.com/tc39/code-of-conduct [12:53:05.0912] (the list of CoC members has long been out of date. I hope the CoC committee fixes it soon.) [12:53:59.0247] ah, makes sense. Each `tc39.es/$something` is from a repo named `$something` 2021-07-22 [22:25:02.0176] Since we don't specify `console`, dunno if it qualifies as a "namespace", but it's certainly like one and it's expose to JavaScript so... [22:25:22.0809] (just an example of a popular "namespace" that isn't title-cased) [22:25:49.0546] * (just an example of a popular "namespace" that isn't `PascalCased`) [00:29:08.0870] > <@usharma:igalia.com> Since we don't specify `console`, dunno if it qualifies as a "namespace", but it's certainly like one and it's expose to JavaScript so... Personally I’ve thought of globalThis.console as a singleton instance with methods of the Console class https://nodejs.org/api/console.html#console_class_console [00:31:01.0780] > <@aclaymore:matrix.org> Personally I’ve thought of globalThis.console as a singleton instance with methods of the Console class > https://nodejs.org/api/console.html#console_class_console Interesting, I'd been referring to the whatwg console spec, didn't think about this class. Is this class also implemented in browsers or is it just a Node thing? [00:32:51.0178] ``` ❯ node -e "console.log(console.Console)" [Function: Console] ``` [00:32:58.0699] yep you can do console.constructor in browsers. But can't actually call it [00:33:05.0182] ``` ❯ eshost -e "console.Console" #### JavaScriptCore TypeError: undefined is not an object (evaluating 'console.Console') #### SpiderMonkey undefined #### V8 undefined ``` [00:33:08.0988] * yep you can do console.constructor in browsers. But can't actually use it [00:34:23.0590] `console.Console` is node. in browser's it's `console.constructor` [00:34:34.0649] ah, gotcha [00:35:45.0031] The constructor doesn't work, but is a hit that console is an instance [00:35:50.0416] you're right. The existence of `console.constructor` means it's an instance and not a namespace [00:35:51.0608] * The constructor doesn't work, but is a hint that console is an instance [00:35:52.0118] yeah [06:50:45.0494] it’s conceptually a namespace tho - β€œa singleton instance of a class whose constructor you can’t use” is just a misuse of a class :-p [06:51:28.0447] historically the receiver mattered, and you had to console.log.bind(console), but i don’t think you have to do that anywhere anymore [06:56:02.0869] Another instance like thing is that (in some hosts) it has state. With methods like groupStart and groupEnd [06:57:35.0891] I will admit that it is namespace like in a lot of ways [06:57:48.0527] * I will admit that it is 'namespace-like' in a lot of ways [07:08:54.0192] > <@ljharb:matrix.org> it’s conceptually a namespace tho - β€œa singleton instance of a class whose constructor you can’t use” is just a misuse of a class :-p Node allows more to be constructed, so more like a class there [07:11:32.0107] True enough [07:12:03.0626] it’s a weird one tho. the point about state in group and performance is a good one [07:18:00.0595] and the whatwg spec does say it's a namespace. So I could be convinced either way depending on the weighting of the different bits of 'evidence' πŸ™‚ [07:53:41.0730] I'd call it a historical oddity due to ad-hoc decision making, myself [09:56:07.0759] see #whatwg: https://matrixlogs.bakkot.com/WHATWG/2021-07-14#L13 2021-07-23 2021-07-24 2021-07-25 2021-07-26 2021-07-27 [14:09:50.0209] any chance someone could give me some examples of input to https://262.ecma-international.org/11.0/#sec-rawbytestonumber (under Float32, Float64. and "something else") and output? it's not immediately clear to me what that would be [16:07:35.0355] Are you looking for the raw bytes of a Float32? 2021-07-28 [14:56:28.0879] @phoddie maybe? [14:56:58.0232] i guess that makes sense - i input the raw bytes of, say, `8`, and i expect to get `8` out, assuming that `8` is valid in the "type" i selected? [15:29:59.0171] k i think i'm good now, thanks :-) 2021-07-29 2021-07-30 [05:34:04.0494] This proposal will be presented at W3C WebAssembly CG call on August 3 https://github.com/WebAssembly/design/issues/1425. It may make sense for delegates who are also wasm CG members to join the call 2021-07-31