00:51 | <bakkot> | it presumably only happens under certain optimization tiers or conditions |
00:52 | <bakkot> | also the commit which introduced the bug only landed two weeks ago so would not have gone into stable |
03:43 | <shu> | what i don't get is, since it's ILD, how do you decide what your mock does? |
06:34 | <ljharb> | for day 4: we forgot to get reviewers for export defer ; can someone ask for that first thing in the morning? thanks! |
06:50 | <nicolo-ribaudo> | Oh yes thank you 😅 |
10:32 | <nicolo-ribaudo> | Does the "Commit suggestion" button for reviews in the ECMA-262 repo also not work for y'all? |
10:33 | <naugtur> | they tend to work better in the files view than main discussion view. |
10:35 | <nicolo-ribaudo> | I'm getting the "This diff has recently been updated. Refresh and try again" error in both :/ |
10:36 | <naugtur> | umm.. so did you reload the page? |
10:36 | <nicolo-ribaudo> | yep |
10:36 | <nicolo-ribaudo> | Also, there have not been changes for weeks :P |
12:50 | <Michael Ficarra> | @nicolo-ribaudo:matrix.org: It's a known GitHub bug that's gone unfixed for years now. |
12:55 | <snek> | i'd love to see how github's ruby rendering works some day. i've seen it do weird things like render a notice bar on the wrong page when i load two at the same time. |
13:55 | <ryzokuken> | @room we're starting in 5 mins! |
13:58 | <Steve Hicks> | I reached out to Dominic Farolino and he's good to swap the first two topics today |
14:01 | <ryzokuken> | cc Chengzhong Wu |
14:04 | <Aki> | frfr let's build a culture of committing to contribute to notes any meeting where you have something on the agenda |
14:05 | <nicolo-ribaudo> | ryzokuken random.org and pick a name :) |
14:06 | <Aki> | https://takingnotes.rocks |
14:27 | <Michael Ficarra> | FYI to delegates: we no longer use the @@ notation for well-known symbols in the spec, and neither should you |
14:27 | <nicolo-ribaudo> | Try to stop me |
14:27 | <snek> | its so nice to write though |
14:28 | <shu> | and so too does the devil have a honeyed tongue and mellifluous voice |
14:28 | <rbuckton> | While I agree in principle, the main upside of @@ in slides is that it's succinct |
14:30 | <Chris de Almeida> | the forbidden notation |
14:31 | <Michael Ficarra> | @rbuckton concision is often at the cost of clarity, especially for anyone outside of the very small group of people who were ever familiar with that spec-internal notation |
14:33 | <ptomato> | in the example I linked, it hardcodes English unit names, for example |
14:34 | <Bradford Smith> | A slide to remind us how using actually works and what @@enter and @@dispose do (or whatever notation the presenter chooses) would have been helpful here. It's probably not reasonable to assume that everyone is deeply familiar with the workings of very new features like using . |
14:36 | <shu> | that still sounds to me like "programmatically generating goldens". what's the difference? |
14:36 | <ptomato> | I think "programmatically generating goldens" is a fair description |
14:37 | <shu> | great, thanks |
14:37 | <Michael Ficarra> | I try to include a "remember what we're talking about" slide with any proposal, even if we just talked about it last meeting, since we're a pretty large and diverse group |
14:41 | <shu> | did i freeze |
14:41 | <shu> | oh no luca froze |
14:41 | <nicolo-ribaudo> | Working on getting Luca back |
14:41 | <Michael Ficarra> | he's back |
14:47 | <rekmarks> | I refreshed tcq and now the agenda and queue are empty in my browser. Logging out and in doesn't do anything. Anyone have any ideas? |
14:48 | <Michael Ficarra> | press the magic fix anything button |
14:49 | <jschoi> | Have you tried rebooting the machine? |
14:49 | <shu> | what is the overhead per await for async functions? |
14:50 | <shu> | this seems much more expensive? |
14:50 | <bakkot> | I feel like this is relevant to littledan 's previous topic about things being either sugar or new capabilities |
14:50 | <bakkot> | this is adding a weird new capability into something which is otherwise pure sugar |
14:50 | <bakkot> | that feels wrong to me |
14:50 | <shu> | this feels deeply wrong, yes |
14:58 | <jschoi> | Speaking of which, I would love to see a follow-up presentation from littledan to that “Things should layer” presentation. Relatedly, someone should a presentation later this year about developer-convenience APIs, when we (especially engines) want to add them, and how we should triage them. I’ve seen multiple people talk about the general problem of developer-convenience APIs in core ES over the past months. |
15:00 | <rbuckton> | If the concern is that developers will inadvertently call v[Symbol.enter]() without later invoking v[Symbol.dispose]() , perhaps it makes sense to give Symbol.enter a more explicit name (i.e., Symbol.unsafeEnter or similar). If the concern is that developers will intentionally call v[Symbol.enter]() , then IMO that's on the developer. |
15:02 | <Michael Ficarra> | What else needs to be said? I think it was a fairly simple ask: we should be cognizant of whether a new proposal adds new fundamental capabilities and question whether that is appropriate. |
15:05 | <jschoi> | I saw that presentation as an entry in a thread starting from the JS0/JSSugar presentation. Basically I’m hoping for continued follow-up and iteration in that general “overall language structure” space. I guess not necessarily from Daniel. |
15:11 | <jkup> | Is someone able to relieve me from note taking for the remainder of this session? |
15:14 | <ryzokuken> | thanks again for volunteering! |
15:14 | <nicolo-ribaudo> | Wow we have too many note takers now and I cannot even see my cursor under the names |
15:14 | <ryzokuken> | lol what a great problem to have |
15:16 | <dminor> | What was the outcome for Object.propertyCount ? The notes from Day 2 have no conclusion / summary, just mention a continuation, which I don't think we scheduled. |
15:16 | <ryzokuken> | no advancement due to lack of clarity wrt the scope |
15:17 | <ryzokuken> | but the champions clarified things in the chat |
15:17 | <dminor> | I missed that, thank you |
15:17 | <ryzokuken> | if I remember, I think J-ordan can confirm |
15:18 | <Michael Ficarra> | my understanding was slightly different: we granted Stage 1 with a limited scope, then in further discussion the champions tried to expand the scope and a bunch of people got upset about that |
15:19 | <littledan> | we definitely didn't decide as a committee to refer it to be done outside of TC39, though some individuals in committee might've said that |
15:19 | <littledan> | personally, I objected to the lack of integration with the web platform, which has now been resolved |
15:20 | <ryzokuken> | https://github.com/tc39/proposal-object-property-count |
15:20 | <nicolo-ribaudo> | littledan are you talking about observables or propertyCount? |
15:20 | <ryzokuken> | the repo is in the org but still says stage 0 |
15:20 | <littledan> | oops observables |
15:20 | <littledan> | sorry |
15:20 | <snek> | i also thought that proposal had gotten stage 1 |
15:20 | <snek> | confusing times |
15:20 | <snek> | stage 0.5 |
15:21 | <ryzokuken> | /tdz schrodinger's stage |
15:21 | <Chris de Almeida> | it got stage 1 |
15:21 | <Chris de Almeida> | https://bsky.app/profile/tc39.es/post/3lmuqhrv6h32h |
15:21 | <Chris de Almeida> | notes need a summary+conclusion |
15:22 | <ryzokuken> | ugh sorry then please someone fix the notes so it's not confusing |
15:22 | <naugtur> | The timing of this is good. We could discuss how observables will interop with async context. |
15:23 | <Michael Ficarra> | we should be clear though that that was with the limited scope |
15:23 | <nicolo-ribaudo> | Given that it's sync, isn't it easy? For sync calls, you get the context from your caller |
15:23 | <nicolo-ribaudo> | So from the context around .next() |
15:25 | <naugtur> | Producers can be async AFAIR |
15:26 | <nicolo-ribaudo> | Yes, but when they call .next() then it synchronously calls the subscriber |
15:26 | <snek> | its within the activation of the async function, so the async context naturally propagates |
15:28 | <Chris de Almeida> | https://github.com/WICG/observable#standards-venue |
15:28 | <Chris de Almeida> | for context |
15:28 | <Michael Ficarra> | lack of a good cancellation solution keeps biting us 😠 |
15:29 | <snek> | ecmascript has nothing to cancel |
15:29 | <snek> | if we add io apis we could add cancellation :> |
15:30 | <Michael Ficarra> | runtimes have IO APIs |
15:30 | <nicolo-ribaudo> | We also have nothing to wait for, yet we have promises |
15:31 | <shu> | cough waitAsync cough |
15:31 | <nicolo-ribaudo> | I'm sometimes surprised by how much forward looking we have been in 2015! |
15:31 | <Michael Ficarra> | nobody even knows Atomics exists, @shu |
15:32 | <shu> | 🥺 |
15:32 | <snek> | alright lets add cancellation to waitAsync i'm fully on board |
15:35 | <snek> | there was a table somewhere showing the difference between iterable/observable/signal/etc right |
15:36 | <snek> | push/pull/singular/plural or whatever |
15:40 | <rbuckton> | IIRC, the two big contentions with cancellation were:
I still contend that |
15:40 | <snek> | what does transparent cancellation mean |
15:41 | <rbuckton> | You establish a cancellation source and somehow thread the cancellation token/signal through all async functions without explicitly passing it as an argument. |
15:41 | <snek> | oh i see |
15:41 | <snek> | yeah i think that should be left to userland |
15:42 | <rbuckton> | On the surface, it seems like a simple approach, but it means any user code could unexpectedly break during an await , and you have no control over async operations that must complete. |
15:43 | <snek> | oh yeah i would also definitely not want cancellation to connect to await/promises |
15:43 | <snek> | cancellation should affect the thing that resolves a promise, not the promise itself |
15:47 | <Michael Ficarra> | 30m was an over-ambitious timebox for this |
15:48 | <nicolo-ribaudo> | Chris de Almeida for my continuation topic, 5 minutes would probably be enough rather than 10 |
15:48 | <Chris de Almeida> | ok |
15:49 | <Michael Ficarra> | please advance the queue |
15:49 | <ryzokuken> | done |
15:50 | <bakkot> | speaking of web platform ergonomics I really want disposable AbortController |
15:50 | <snek> | just convince the whatwg editor and you can have it |
15:50 | <bakkot> | it seems like it is impossible to propose new features in WHATWG unless you work on Chrome |
15:51 | <bakkot> | there's not even a "convince them" step |
15:51 | <bakkot> | you will just get ignored mostly |
15:51 | <rbuckton> | AbortController/Signal have a number of issues:
|
15:52 | <snek> | yeah making the WebSocket constructor take relative urls was literally just the chrome network stack guy had to be convinced. i had opened implementation prs in all 3 browsers and written tests and spec text and that didn't matter :) |
15:53 | <snek> | we have a very special setup here at tc39 and i hope folks appreciate it |
15:53 | <bakkot> | maybe instead of the DOJ making Google sell Chrome they could just make it so Chrome is no longer allowed to propose new features or ship features which are not standardized elsewhere |
15:54 | <rbuckton> | IMO, poor separation of concerns is the worst offender:
|
15:54 | <rbuckton> | AbortSignal should never have been event based. |
15:54 | <nicolo-ribaudo> | I wish they could actually listen to you |
15:55 | <snek> | i still think a chrome foundation would be ideal. but then google wouldn't get money from selling it so 🤷 |
15:55 | <bakkot> | uhhh signals do not have a raiseEvent method, do they? |
15:55 | <littledan> | I'm not taking notes for the next topic either |
15:55 | <rbuckton> | they inherit from eventtarget |
15:55 | <littledan> | agreed, it is too hard to use as it is today |
15:56 | <rbuckton> | It inherits from EventTarget, so yes, though I meant dispatchEvent . Example updated. |
15:58 | <bakkot> | ah yeah |
15:59 | <rbuckton> | Signals should not be allowed to trigger an abort. They should only be able to observe. |
16:00 | <bakkot> | yeah, the event machinery conflating ability to listen for events and ability to dispatch events is very dumb |
16:01 | <rbuckton> | So much of AbortController breaks everything in https://github.com/tc39/proposal-cancellation?tab=readme-ov-file#architecture |
16:01 | <Michael Ficarra> | @ryzokuken colleagues can be reviewers! |
16:01 | <ryzokuken> | but I don't want to steal someone else's opportunity to do it 😄 |
16:02 | <naugtur> | What are the expectations from a reviewer? I'm new here 😅 |
16:03 | <Michael Ficarra> | Stage 2 reviewers review the spec text to make sure it does what we want the feature to do |
16:03 | <nicolo-ribaudo> | Go through the proposal spec, check that it's coherent and makes sense, check that the spec actually does what it's ment to do |
16:06 | <bakkot> | the "what it's meant to do" is the most important part |
16:06 | <bakkot> | sometimes there's unintended implications or edge cases in the spec text which no one really thought about previously |
16:08 | <sffc> | Just to confirm, the transcription quality was much much better in today's session than it was in yesterday's session. |
16:08 | <rbuckton> | My hot take: AbortController and AbortSignal were a mistake, and the continued adoption within the ecosystem is a long term harm to the language. ECMAScript needs native cancellation that does not depend on DOM and does not have these footguns.Native cancellation could tie into Atomics.waitAsync , new Promise , promise.then , import() , and the Mutex proposed in the shared structs proposal. |
16:08 | <ljharb> | ryzokuken: so did you want to also be an export defer reviewer? |
16:09 | <ryzokuken> | no, was just volunteering to help out anyone if they wanted to do it but felt unsure |
16:11 | <ryzokuken> | it pretty much comes down to the individual transcriptionist. The first hour each day was done by Julie who we have a longer history working with and she was the one who I believe does the best out of all of them. |