16:59
<ljharb>
is there any way we can get the captioner to hit enter less often?
17:00
<littledan>
we should ask them to do so
17:00
<littledan>
others in their team know how to do it
17:00
<littledan>
just interrupt and tell them, please copy the settings from your colleagues who do this right
17:00
<littledan>
as well as any other quality issues, we should just note it to them
17:06
<nicolo-ribaudo>
Fyi, Webex has a "zoom in button" which works quite well
17:10
<kriskowal>
I got a lead on a paper that purportedly discusses context joins but I’ve not yet found the bit I remember about deferring “baggage” merge to the point of consumption. Still, it’s pertinent to async context motivating use cases https://cs.brown.edu/~jcmace/mace_thesis.pdf
17:12
<kriskowal>
I got this from the proverbial horse’s mouth. I reached out to Yuri Shkuro in the Cloud Native Foundation’s Slack.
17:14
<kriskowal>
In any case, I think reverse context propagation is probably a non-starter just because it implies that parent contexts will have to at least weakly retain child contexts, or something that has a similar retention graph, regardless of any as-yet-unsought implications for security.
17:21
<shu>
Chris de Almeida: seems like there's a lot of free time this meeting. can i request a 30min continuation of Atomics.pause discussion if it doesn't spill to day 4?
17:27
<Chris de Almeida>
shu: do you want 30 mins today before lunch?
17:28
<shu>
i'd prefer to not bump anyone else already lined up and do it at the end
17:28
<shu>
but will defer to chairs' judgment for the best schedule
17:28
<Chris de Almeida>
it's not quite bumping folks
17:28
<Chris de Almeida>
we got back time from the last 2 topics going quickly
17:28
<shu>
i'd still prefer we try to move other already scheduled topics up first
17:28
<shu>
if no other takers i'll take it
17:28
<Chris de Almeida>
ok
17:40
<Justin Ridgewell>
Can we no longer reply to the active TCQ topic?
17:41
<Chris de Almeida>
you can
17:41
<ryzokuken>
you can't
17:41
<ryzokuken>
because its a clarifying question itself
17:41
<Chris de Almeida>
we are currently on a clarifying question item
17:42
<Chris de Almeida>
what?
17:42
<ryzokuken>
yeah it's not a full topic
17:42
<Chris de Almeida>
yes, you can't reply to a clarifying question, once we advance past clarifying questions, the button you want will return
17:43
<Chris de Almeida>
if you have a reply to this topic, use clarifying question I guess?
17:43
<ljharb>
(that's what i did)
17:45
<bakkot>
tcq feature request: convert the current item to a real topic
17:45
<bakkot>
or just allow replying to clarifying questions, I guess
17:49
<Aki>
Frank isn't on Matrix, right?
17:50
<ryzokuken>
apparently not
17:50
<Aki>
The notes lack a summary/conclusion for his topic, would someone please volunteer to either get him to write it (if you have a way of being in contact) or writing it up?
17:51
<Chris de Almeida>
ah, we forgot to ask I think
17:52
<Chris de Almeida>
and the earlier topic as well
17:53
<Aki>
yeah i already messaged Michael to take a look after this topic
17:54
<ryzokuken>
thanks for the reminder I'll ping Frank elsewhere
17:54
<Aki>
hat tip to saminahusain for reminding me. it's like an og phone tree ^_^
17:54
<Aki>
(i bet half of you are too young to remember phone trees. i'll :redirect: to tdz)
18:01
<saminahusain>
👍️
18:14
<Aki>
Don't forget summary/conclusions!
18:18
<littledan>
peetk: would you be up for doing the proposal scrub?
18:18
<peetk>
sure
18:19
<rbuckton>
would like to point out that I will not be available for the rest of TC39
18:20
<rbuckton>
I would have been available on Day 4, but will not be available after the lunch break today or the whole of tomorrow.
18:20
<littledan>
if we could do the proposal scrub some time today, that'd be really great, especially if we'll have tomorrow afternoon to cover other topics
18:22
<rbuckton>
So if we are not getting to the proposal scrub while I am present, I would ask that we postpone any decisions on proposals I am championing that are at stage 2. At the very least, any proposal at stage 2 that I am currently championing should be considered active, if lower on my current set of priorities.
18:23
<kriskowal>
https://en.wikipedia.org/wiki/Head-of-line_blocking
18:26
<Ashley Claymore>
So if we are not getting to the proposal scrub while I am present, I would ask that we postpone any decisions on proposals I am championing that are at stage 2. At the very least, any proposal at stage 2 that I am currently championing should be considered active, if lower on my current set of priorities.
When we've done scrubs in the past I think this is what we have tried to do. Skip past items if the champion is not present and no one else has up-to-date info on their behalf. I don't think we default to asking for consensus to withdraw.
18:27
<littledan>
yeah the scrub is not about making decisions, just bringing topics up to try to stimulate future discussion.
18:27
<littledan>
Any proposal to withdraw would have to be a separate agenda item
18:31
<littledan>
shu: I don't understand this characterization (which you've made before) about how TC39 just ships stuff and then sees what happens. This is what the stage process, and the various pre-Stage 3 polyfills and transpiler implementations (and sometimes engine implementations), are generally for. I think this has been working well. If you have concerns about this flow of prototyping and feedback, let's have some kind of discussion on it.
18:32
<littledan>
(I don't want to get this discussion into too much of a tangent though)
18:32
<littledan>
we made certain mistakes in the past but I feel like we can learn from those within our current process and improve
18:32
<shu>
it is not my experience that we get any signal from pre-stage 3 polyfills that affects design...?
18:33
<shu>
we don't really have a real incubation process
18:33
<shu>
i don't see how the staging process is one
18:33
<bakkot>
yeah we definitely don't actually get much feedback prior to engines
18:33
<bakkot>
emperically
18:33
<bakkot>
it would be nice if we did but it's hard to do
18:35
<littledan>
what kind of feedback should we be collecting that we're not?
18:35
<bakkot>
a bunch of people using the API and telling us how it went
18:35
<littledan>
are there other examples of more successful bodies who do manage to do this?
18:35
<shu>
WICG?
18:36
<bakkot>
java ships things as experimental for a very long time
18:36
<shu>
like, OTs exist for this reason
18:36
<kriskowal>
toSorted()!?
18:36
<shu>
though that's chrome-specific
18:37
<littledan>
many TC39 features don't really need OTs or shipping as experimental--we can encourage trials via polyfills and transpilers. I guess we haven't been good about making sure we collect feedback when those are out there?
18:38
<bakkot>
also C++ often just standardizes stuff from boost, which is a similar deal
18:39
<shu>
many TC39 features don't really need OTs or shipping as experimental--we can encourage trials via polyfills and transpilers. I guess we haven't been good about making sure we collect feedback when those are out there?
it is not the state of the world today that we have any "real world" feedback in the design cycle before shipping
18:39
<shu>
we rely on the makeup of delegates to be a good proxy
18:46
<dminor>
Could someone please point me to the html integration issue/PR for Error.isError?
18:46
<littledan>
+1 to non-piercing
18:46
<bakkot>
template literal array objects are frozen so there's not really any reason to proxy them
18:47
<bakkot>
the proxy can't behave any differently from the underlying thing, except for === and weakmaps and so on
18:47
<littledan>
also C++ often just standardizes stuff from boost, which is a similar deal
my understanding is that they worked through most of boost, and also their designs are significantly different so it's like saying that Temporal is based on Moment's real-world experience
18:47
<dminor>
Found it, https://github.com/whatwg/webidl/pull/1421
18:48
<bakkot>
that's fair, I haven't been following them closely for the last decade or so
18:48
<bakkot>
it used to be the case that they'd lift things wholesale, I think
18:49
<littledan>
yeah a decade ago was sort of the heyday of that, but then boost slowed down. it was related to the lack of movement in WG21 in the preceding decade, also.
18:50
<waldemar>
There are a bunch of places where one can find exact, correctly-rounded implementations of the trig and exponential functions on doubles. Here's one: https://core-math.gitlabpages.inria.fr/
18:50
<littledan>
I'm curious if there's a good example of a library-type web API where we can look back on their pre-shipping "real world" feedback and say it's a good model to follow. That could help us.
18:52
<Michael Ficarra>
There are a bunch of places where one can find exact, correctly-rounded implementations of the trig and exponential functions on doubles. Here's one: https://core-math.gitlabpages.inria.fr/
yes, that was one of the implementations mentioned by @sunfishcode in https://github.com/tc39/ecma262/issues/3347#issuecomment-2161705091
20:00
<Ben>
microphone problems again, I'll volunteer though
20:01
<saminahusain>
TC39 Hats available
20:02
<Ashley Claymore>
I can do the first 30 mins
20:02
<Ashley Claymore>
but my topic is up after that
20:14
<Chris de Almeida>
http://ptomato.name/talks/tc39-2024-07
20:14
<Chris de Almeida>
Temporal slides
20:26
<nicolo-ribaudo>
Thanks ptomato for teaching us all those trivia about weird date edge cases btw, they are good conversation topics :)
20:28
<snek>
classic icebreaker: what's your favorite calendar edge case
20:42
<bakkot>
previous discussion of the current topic is in https://github.com/tc39/notes/blob/main/meetings/2024-02/feb-6.md#joint-iteration-for-stage-2
20:53
<Chris de Almeida>
I could've sworn we talked about TZ canonicalization more recently than that?
20:54
<Michael Ficarra>
@peetk proposals repo doesn't have good last-presented dates, use https://github.com/tc39/dataset for that next time
20:57
<ptomato>
2023-07 https://github.com/tc39/notes/blob/main/meetings/2023-07/july-12.md#time-zone-canonicalization-for-stage-3
20:59
<ljharb>
proposals list is updated
21:02
<Michael Ficarra>
I think there's a big disconnect between how excited the community is for the pipeline operator and how excited the committee is
21:03
<ptomato>
I personally don't think the pipeline operator is worth it but that's a weakly held opinion and I'm not speaking on behalf of Igalia
21:03
<Michael Ficarra>
@ptomato same
21:04
<bakkot>
fwiw pipeline is also the proposal that I hear the most negative sentiment about, in its current iteration
21:05
<Richard Gibson>
I would use pipeline all the time in terminals and dev tools, and rarely in committed code
21:06
<Justin Ridgewell>
Is GoDaddy still a member?
21:06
<ljharb>
the community people who don't like pipeline are generally the ones who want F#, and they're a very vocal and small group
21:06
<Aki>
does anyone remember off the top of their head why upsert got renamed to emplace or do i have to go search some notes
21:07
<ptomato>
the community people who don't like pipeline are generally the ones who want F#, and they're a very vocal and small group
yes, how much of the negative sentiment comes from outside of that flamewar?
21:07
<ljharb>
i don't recall; "upsert" is a pretty typical term in databases
21:07
<Justin Ridgewell>
I remember somthing about typo being upskirt…
21:07
<ljharb>
i'm not sure anyone outside of that flamewar has voiced any opinion other than "i want pipeline" and "don't pick something ugly" (referring to the surface syntax)
21:07
<Michael Ficarra>
yeah everyone knows this function as upsert
21:07
<ljharb>
that would be bad but that seems like a reach (eg an unlikely typo)
21:07
<Aki>
oh god
21:08
<Richard Gibson>

https://github.com/tc39/proposal-upsert?tab=readme-ov-file#why-are-we-calling-this-emplace

upsert was seen as too unique a term and the ordering was problematic as there was a desire to focus on insertion.

21:09
<shu>
"ordering was problematic"?
21:09
<Mikhail Barash>
A clarification regarding emplace: indeed, a group of students from University of Bergen will be implementing this in several engines.
21:09
<Aki>
"unique"?
21:09
<Richard Gibson>
I believe that's referring to ordering of the method's parameters
21:09
<Michael Ficarra>
A clarification regarding emplace: indeed, a group of students from University of Bergen will be implementing this in several engines.
maybe go for Stage 2.7 first?
21:10
<Michael Ficarra>
"unique"?
yeah I've never heard of a name being "too unique"
21:10
<shu>
I believe that's referring to ordering of the method's parameters
how is that related to what the method is named?
21:11
<Richard Gibson>
how is that related to what the method is named?
🤷
21:11
<Aki>
i feel like we decided on the name for upsert at salesforce in december 2019 but i may be getting my topics mixed up
21:11
<shu>
i have no recollection of its being renamed emplace
21:13
<ljharb>
https://github.com/tc39/proposal-upsert/commit/62c046861480fabb877e78fe4a0403fa5e7f5d3c was in 2020
21:14
<Mikhail Barash>
The goal of the course is for the students to learn how the engines work. We selected this proposal as it seemed relatively straightforward to implement. In principle, we'd be interested in trying to bring the proposal to stage 2.7.
21:14
<bakkot>
I honestly have grown to like java's compute/computeIfAbsent/computeIfPresent
21:18
<eemeli>
The upsert/emplace name change happened here: https://github.com/tc39/notes/blob/main/meetings/2020-07/july-22.md#upsert-now-renamed-emplace-updates--for-stage-3
21:19
<littledan>
yeah the summary for this is really per-proposal and can only be written after. Thanks for writing that, peetk
21:19
<littledan>
I think this scrub was valuable, hopefully for unblocking things like collection normalization, destructuring private fields, and especially String.dedent
21:20
<ljharb>
stage 3 could probably use a scrub too tbh
21:20
<littledan>
we did that recently though. I think it might be time for Stage 1 next time
21:21
<littledan>
The feedback for pipeline was also IMO, for my coworker who wants to take this up
21:21
<ljharb>
oh, i didn't know we did a stage 3 scrub - must have been one of the europe meetings while i was remote
21:21
<littledan>
yeah we did it in Helsinki
21:21
<ljharb>
what was up with "legacy regex features"?
21:21
<littledan>
we had a pretty long discussion about that actually...
21:22
<ljharb>
i suppose i could dig into the notes if a tldr isn't forthcoming :-)
21:22
<littledan>
I wish I had a tldr; it was a bit ambiguous
21:22
<littledan>
I suggested putting a deadline on some movement happening. This didn't get consensus.
21:22
<littledan>
some browsers expressed that they would be happy to accept a PR, but that it was relatively low priority for them
21:23
<littledan>
JSC expressed that they weren't sure about this proposal, as it'd add extra legacy features that they don't have
21:24
<littledan>
I argued, we should really get moving on this since it's important for all of the JS engines that do Annex B to agree with each other (and we've been able to manage this for JS and the web in a bunch of other cases historically--ugly legacy doesn't mean it's not possible to unify)
21:30
<shu>
i do not understand what is being proposed
21:30
<littledan>
this is navigator.locales right?
21:33
<ptomato>
Intl.supportedValuesOf('locale')?
21:44
<shu>
how is revealing locales different from a fingerprinting perspective vs revealing languages?
21:44
<shu>
like navigator.languages
21:45
<ryzokuken>
we're not even restricting enumerating the locales
21:46
<ryzokuken>
we just want to restrict that to a deterministic set for a given browser
21:46
<ryzokuken>
instead of something more dynamic
21:46
<Justin Ridgewell>
How do you use a locale if it’s installed?
21:46
<ryzokuken>
how so? in terms of API it only affects the enumeration API from Locale info
21:47
<danielrosenwasser>

Heads up TC39 friends: I'll be providing an update from TypeScript on some potential upcoming work on our side. It's not a proposal for JavaScript/ECMAScript and doesn't need consensus - we just want to sync up with the committee and collect relevant feedback.

If we all feel like it's useful, we can do more updates like this in the future.

21:49
<ryzokuken>
How do you use a locale if it’s installed?
the whole idea of dynamically loading a locale is not something any host does at the moment
21:50
<Justin Ridgewell>
I understand, but how do you use a locale when it’s one of the default locales?
21:51
<Justin Ridgewell>
Like, do we need to redesign the entire make getting locale usage async?
21:51
<Justin Ridgewell>
Should you need a Locale instance to do anything with translating?
21:52
<ryzokuken>
they're optional at the moment, like you can use a constant locale id string instead
21:53
<Justin Ridgewell>
Do you have a code sample of how it’s used?
21:53
<ryzokuken>
sure, sec
21:56
<ryzokuken>
const japanese = new Intl.Locale('ja-Jpan-JP-u-ca-japanese-hc-h12')
console.log(japanese.hourCycle) 
21:56
<eemeli>

Many moons ago I wrote this for how locale loading could work: https://github.com/eemeli/proposal-intl-loadlocales

With that, once the promise resolves, the sync Intl formatter constructors know about the new locales.

21:57
<Justin Ridgewell>
So it’s immediately obvious whether the locale is installed or not.
21:57
<ryzokuken>
yes
21:57
<Justin Ridgewell>
The API itself means it’ll never be possible to async install a locale without revealing that it’s not currently installed.
21:57
<Justin Ridgewell>
So what’s the point of this presentation?
21:58
<ryzokuken>
Mozilla's position on Intl enumeration was that they're fine with an Intl API enumerating locale information as long as hosts don't dynamically change the set of installed locales
21:58
<ryzokuken>
my understanding is that the current PR aims to build on that original position
21:59
<Justin Ridgewell>
But it’s obvious whether it’s installed because you can just use the API?
21:59
<littledan>
Mozilla's position on Intl enumeration was that they're fine with an Intl API enumerating locale information as long as hosts don't dynamically change the set of installed locales
yep, that is currently met
21:59
<littledan>
But it’s obvious whether it’s installed because you can just use the API?
yes, and enumeration makes it easier to get
21:59
<littledan>
but it already wasn't hard at all
21:59
<ryzokuken>
it is currently met but there's nothing normative in the spec avoiding it from not being met in the future
21:59
<Chris de Almeida>
YAGNI invocation?
21:59
<ryzokuken>
was my understanding of the motivation
21:59
<Justin Ridgewell>
The API itself makes it impossible to meet.
22:00
<Justin Ridgewell>
It’s a sync API.
22:00
<ryzokuken>
so we're basically just avoiding further/easier fingerprinting
22:00
<Justin Ridgewell>
hourCycle either returns the correct result sync, or it doesn’t, and that can’t change without changing all the APIs
22:01
<Aki>
I was trying to get on to the queue but was having brain and technical problems
22:01
<Aki>
the financial motivation will p much always exist to track end users more
22:01
<Aki>
so i think we should add it