| 03:03 | <rbuckton> | Apologies, I added a late-breaking constraint in https://github.com/tc39/agendas/blob/9f358facee2c51c8d2a17bae4edcb8b4837d70aa/2026/01.md but must have misclicked in the mobile web ui as it committed directly rather than creating a PR. |
| 14:52 | <Rob Palmer> | The sign-in form is now posted on the Reflector. Plenary begins in 6 mins! |
| 15:14 | <Aki> | šš» attendees: volunteering as a note-taker is relatively low effort, please do take a "shift" (as long or as little as you're comfortable). All that is required is to keep an eye on the transcription and make edits/fixes if errors come up. |
| 15:15 | <Aki> | also report back to #temporaldeadzone:matrix.org any funny homophones or otherwise amusing typos |
| 15:22 | <Rob Palmer> | reference material: ArkTS (is on the agenda for a link to the slides) |
| 15:23 | <Aki> | https://github.com/tc39/agendas/blob/main/2026/Basic%20ArkTS%201117%20-%20ext%20-%20simplified.pdf |
| 15:29 | <saminahusain> | my train arrives in Zurich at 17:41, so I will drop off, and join again after the lunch break. |
| 15:29 | <saminahusain> | was my audio OK? |
| 15:29 | <Aki> | downright impressive for train wifi |
| 15:30 | <Aki> | Congratulations bakkot ! (?) |
| 15:32 | <bakkot> | thanks, looking forward to having time off for a while |
| 15:32 | <bakkot> | honestly kind of expecting to do more not less committee work, but we'll see what happens |
| 15:43 | <nicolo-ribaudo> | I changed the notes template to be Conclusion/Summary/Title rather than Title/Conclusion/Summary, since that's most of the times what we need to copy&paste |
| 15:43 | <nicolo-ribaudo> | Please don't revert it! |
| 15:51 | <Michael Ficarra> | I'm pretty shocked that GraalJS has a Temporal implementation already |
| 15:51 | <Michael Ficarra> | while their implementation is generally very good, they often lag behind modern features by a year or more |
| 15:51 | <Michael Ficarra> | maybe in this case it's more that the browsers have been slow to implement than that Graal has been fast |
| 15:52 | <Aki> | people are hungry for temporal |
| 15:52 | <nicolo-ribaudo> | Everybody is just asking for more time |
| 16:42 | <ljharb> | (ļ¾āć®ā)ļ¾*:ć»ļ¾ā§ https://tc39.es/ecma404/ |
| 16:44 | <bakkot> | glorious |
| 16:47 | <Michael Ficarra> | I will mourn this proposal. It was a good proposal. I sometimes have a need for it myself. But I will not champion this proposal. |
| 16:48 | <bakkot> | same |
| 16:48 | <bakkot> | though I've been kind of trying to imagine a way to do it without new syntax |
| 16:48 | <bakkot> | I feel like it should be doable with a Generator.prototype method |
| 16:48 | <bakkot> | but haven't thought hard about it yet |
| 16:51 | <ljharb> | hax (HE Shi-Jun): any objection to withdrawing function.sent? if we're keeping it active, it'd be great to see it at the next plenary |
| 16:52 | <Caio Lima> | Regarding the option 3 on deferred re-exports, I'm worried by this behavior of throwing for optional re-exports when they are accessed if the module was not evaluated by other path. There are a couple of things I'm worried here:
|
| 17:03 | <Zb Tenerowicz (ZTZ/naugtur)> | It will end up creating race conditions. |
| 17:21 | <hax (HE Shi-Jun)> | ljharb: I recall mentioning my plans regarding function.sent in the previous Stage 2 proposals review, but for some reason, I can't find the record in tc39 notes repo now. However, the idea at the time was to explore whether decorators could serve as a alternative solution in this problem space once decorators land and the function decorator proposal advances. Given the current status of the decorator-related proposals, I have no immediate plans to update function.sent. |
| 17:21 | <ljharb> | ah ok gotcha, i'd missed that update. are you ok with withdrawing it for now, and it can be restored in the future if decorators doesn't work out? |
| 17:39 | <hax (HE Shi-Jun)> | ljharb: I found the record: https://github.com/tc39/notes/blob/59c6f56131851169e62051b7f292453e73cd0e92/meetings/2024-06/june-11.md?plain=1#L1037 . And I dont like to withdraw it, but perhaps downgrading to Stage 1 would be appropriate, as the specific form of the solution might no longer be a meta property, but rather another syntactic form or a decorator-based API. |
| 18:03 | <ptomato> | is there a link to the import sync slides? |
| 18:06 | <hax (HE Shi-Jun)> | ljharb: I checked the notes and saw that the topic of withdrawal has already been discussed. Unfortunately, I wasn't present because my home network has been very unstable this week, and Matrix has been intermittently disconnected as well. Iām afraid I wonāt be able to join the video conference for this afternoonās meeting eitherāIāll only be able to follow via the notes. However, if itās convenient, please help clarify during the meeting that this proposal was actually updated in 2022 (though the last presented time wasnāt updated on the tc39/proposals page), and it was also presented during the 2024 proposal review, so it isnāt a case of āno activity in over a decade.ā š |
| 18:13 | <bakkot> | import.sync feels a lot like the "synchronously unwrap a promise" proposals which occasionally come up and which many people strongly object to, just specialized to a specific kind of promise (i.e., those which are returned by dynamic import) |
| 18:13 | <bakkot> | it is not totally clear to me what rule justifies allowing one but not the other |
| 18:17 | <Michael Ficarra> | does import.meta work in scripts? |
| 18:17 | <ljharb> | no, they weren't imported |
| 18:17 | <Michael Ficarra> | what's it do? |
| 18:17 | <ljharb> | syntax error iirc |
| 18:18 | <ljharb> | my position isn't some arbitrary "all import.foo must work in Scripts" tbc, it's "we should bend over backwards to avoid adding something to the language that doesn't work in all supported parse goals" |
| 18:18 | <Michael Ficarra> | ah, you're right |
| 18:18 | <Zb Tenerowicz (ZTZ/naugtur)> | @bakkot:matrix.org: is not unwrapping a promise, it's synchronously executing a module that has its source text synchronously available for whatever reason |
| 18:19 | <nicolo-ribaudo> | import defer detects deadlocks and throws, this could reuse the same infrastructure |
| 18:30 | <nicolo-ribaudo> | The example I mentioned:
If |
| 18:31 | <nicolo-ribaudo> | While if tla.js still needs to be evaluated, it will only log asynchronously (after didRunPromiseQueue becomes true) |
| 18:40 | <Zb Tenerowicz (ZTZ/naugtur)> | Would import.sync cause regular import * from to also become sync? If import.sync was to bevome an equivalent of require(esm) in node.js it would be the current behavior |
| 18:42 | <ptomato> | I'd appreciate it if someone could tag me out as a notetaker after this item |
| 18:42 | <nicolo-ribaudo> | What does it mean for import * from to be sync? |
| 18:43 | <Zb Tenerowicz (ZTZ/naugtur)> | I'm not sure. Let's consider that part of the question |
| 18:47 | <Michael Ficarra> | nit: we clearly wouldn't want to ToIntegerOrInfinity the limit because that converts non-numbers using ToNumber, which goes against our normative convention |
| 18:48 | <Michael Ficarra> | also that's a completely unnecessary level of detail for a proposal going for stage 1 (and even 2) |
| 18:52 | <nicolo-ribaudo> | I recommend explicitly keeping defining what stack frames are outside of the proposal scope |
| 18:52 | <nicolo-ribaudo> | But what exact validation we do on the number yes no need to worry about that now |
| 18:54 | <Zb Tenerowicz (ZTZ/naugtur)> | Hermes (the engine behind React Native) is also emulating a subset of the non-standard Error stack mechanics from V8 |
| 18:56 | <Michael Ficarra> | I don't understand MM's comment. This proposal is going for Stage 1 before the next proposal is presented. If the comments apply to both, shouldn't we hear them now? |
| 18:59 | <nicolo-ribaudo> | Maybe the limit of 0 should not be allowed |
| 18:59 | <nicolo-ribaudo> | So you always have some idea of where to start looking |
| 19:17 | <Michael Ficarra> | another related proposal: https://github.com/tc39/proposal-function-implementation-hiding |
| 19:24 | <ljharb> | TIL that DOMException lacks a cause |
| 19:24 | <ljharb> | that should really be merged |
| 19:26 | <Chengzhong Wu> | https://github.com/whatwg/webidl/pull/1179 was blocked due to difference on the property on the error prototype or an error instance |
| 19:26 | <Lea Verou> | ljharb: it does not inherit from Error either⦠https://webidl.spec.whatwg.org/#idl-DOMException |
| 19:26 | <ljharb> | oof, i guess it has the slot but doesn't inherit from it |
| 19:27 | <Lea Verou> | The entire existence of DOMException is a wart in the platform :( |
| 19:27 | <Andreu Botella> | its prototype is Error.prototype: https://webidl.spec.whatwg.org/#js-exceptions |
| 19:27 | <Andreu Botella> | it just can't be represented in WebIDL |
| 19:28 | <ljharb> | new DOMException() instanceof Error checks out |
| 19:28 | <Lea Verou> | Andreu Botella: not in the browser implementation at least⦠Object.getPrototypeOf(DOMException) === Function.prototype⦠(edit: same in Node) |
| 19:28 | <ljharb> | that's still ES5-style inheritance tho, just not class-style |
| 19:28 | <ljharb> | (sounds like web idl is a wart too, if it can't represent the web's programming language properly) |
| 19:29 | <ljharb> | so i guess DOMExceptions inherit from Error.prototype, but the DOMException constructor doesn't inherit from Error |
| 19:29 | <ljharb> | would it break anything to make it do so? |
| 19:30 | <Lea Verou> | Oooh, that's true, Object.getPrototypeOf(DOMException.prototype) === Error.prototype. How weird. |
| 19:31 | <Lea Verou> | The question is not just whether it would actually break anything, but also whether people can be convinced to check⦠|
| 19:33 | <Lea Verou> | Turns out there is an issue already: https://github.com/whatwg/webidl/issues/1107 |
| 19:36 | <ljharb> | wait so Error.captureStackTrace(x) only exists so users didn't have to do x.stack = new Error().stack? |
| 19:40 | <Lea Verou> | Yeah that is pretty ...weird |
| 19:40 | <Lea Verou> | ljharb: Here's the background: https://github.com/tc39/proposal-error-capturestacktrace |
| 19:48 | <Steve Hicks> | ljharb: Specifically what needs to be updated w.r.t. GitHub teams? |
| 19:49 | <ljharb> | look over the list of members, and make sure everyone on the list is still employed at your company and still wants to participate; and that nobody who wants to participate is missing |
| 19:51 | <Steve Hicks> | Are you talking about https://github.com/orgs/tc39/people or https://github.com/tc39/notes/blob/main/delegates.txt or something else? |
| 19:51 | <Andreu Botella> | https://github.com/orgs/tc39/teams/delegates/teams i think |
| 19:52 | <Steve Hicks> | Gotcha, thanks! |
| 20:08 | <ljharb> | sorry yes, the link andreu provided :-) thank you! |
| 20:43 | <Chris de Almeida> | who was helping with notes during the second session aside from PFC ? |
| 21:02 | <Andreu Botella> | i helped at various times, but not continuously |
| 21:14 | <ljharb> | i'm confused, when did import.sync get stage 2? |
| 21:14 | <ljharb> | did i zone out and miss consensus on it? i'd made it pretty clear i had a potentially blocking concern; did that get resolved? |
| 21:26 | <ptomato> | Ben Allen, and Caio Lima took over from me when I rotated out |
| 22:25 | <Aki> | Thank you, everyone, for your summaries and conclusions so far. Right now, I am still looking for the following:
|