22:18
<rbuckton>
i guarantee you adding a check to Array.prototype object lookups will regress speedometer
Is this done by analyzing the creation of, or transition to, a new map that has an JS_ARRAY_TYPE type, or are you talking about patching actual assignments (i.e., to catch code that may not have moved to the optimizing compiler)?
22:22
<shu>
well, i elided a few thoughts
22:23
<shu>
i don't think it's sufficient to just check if e.g. someone added a new property named group to Array.prototype, because we know unconditional assignment is unproblematic
22:24
<shu>

so to add a more nuanced check that's a better measure of whether there's a problematic assignment to a particular Array.prototype name:

  1. i don't know how to write that use counter
  2. it's probably spread through enough parts of the code that adding that many branches is slow?
22:25
<shu>
we could probably add a check just to see if someone added a new property named group to Array.prototype but i'd need to audit for all the places where we do that
22:32
<bakkot>
the actual problem with group was triggered by someone relying on the absence of a property named group on array objects, IIRC
22:32
<bakkot>
so you'd need a use counter for lookup, not just assignment
22:32
<shu>
right, that's what i obliquely referred to as "lookup"
22:32
<shu>
i can imagine a use counter "through time" like, if i looked up 'group' then assigned to 'group', then maybe we bump the counter
22:33
<shu>
but there is just no way i can add a branch to every lookup
22:34
<rbuckton>
the actual problem with group was triggered by someone relying on the absence of a property named group on array objects, IIRC
But did they then still assign to it, or just test for its presence and that's it?
22:34
<bakkot>
just test for presence
22:34
<shu>
oh they didn't even assign to it?
22:34
<bakkot>
they were using it as a type discriminant
22:34
<shu>
word
22:34
<shu>
ain't nothing i can do
22:36
<bakkot>
https://github.com/webcompat/web-bugs/issues/112552#issuecomment-1291374679
22:36
<bakkot>
specifically that case ^
22:36
<bakkot>
there were others
22:36
<bakkot>
that is, there were other cases which were doing other more normal things, which a use counter might have been able to detect
22:36
<bakkot>
but this specific one was doing the type discriminant thing
22:38
<shu>
do you wonder what life would be like if you worked on a language that had just a little bit less baggage
22:38
<shu>
not a lot, maybe just like 10% less
22:39
<rbuckton>
do you wonder what life would be like if you worked on a language that had just a little bit less baggage
Like, one where the version can change but it doesn't break your code because your code is compiled and linked to a version-specific standard library?
22:42
<shu>
like chris lattner has it figured out man
22:42
<bakkot>
occasionally I stare forlornly across the bay in the direction of rust
22:42
<shu>
make a language, go somewhere else, make another language
22:44
<Andreu Botella>
https://github.com/webcompat/web-bugs/issues/112552#issuecomment-1291374679
Wait, so the issue is the method must exist, but old code is relying on it being falsy. This kinda rings a bell. Haven't we solved this problem once before...?
22:46
<bakkot>
whenever I suggest document.all as the solution to all our problems people start screaming in horror and also ominous chanting starts up and blood starts leaking from the walls
22:46
<bakkot>
so I've stopped suggesting it
22:46
<Andreu Botella>
The chanting and blood leaks are a bug in our piping infrastructure, there's an issue open years ago
22:47
<shu>
we can simply extend the MOP to include emulates: val
23:25
<Rob Palmer>

Hey all, a reminder that the Interest Survey for the July plenary in Norway will close in 24 hours time.

It takes 30 seconds to add yourself. Even if you plan to dial in, that information is useful.

Thank you to the 25 people who have already provided their intentions.

https://github.com/tc39/Reflector/issues/471