00:42
<rkirsling>
say, wrt function impl hiding
00:42
<rkirsling>
was adding a field to property descriptors ever suggested?
00:44
<bradleymeck>
rkirsling: for what
00:44
<rkirsling>
I can only remember like "yeah directives are awful and should be a thing we did once ever but it's better than mucking further with function syntax"
00:45
<bradleymeck>
rkirsling: you mean like `define(o, 'methodName', {..., makeItHidden = true}`?
00:45
<bradleymeck>
no i don't believe it was since it wouldn't handle a simple fn.toString()
00:45
<rkirsling>
but it seems like `hidden` as a souped-up version of `configurable: false` would be reasonable in theory
00:45
<rkirsling>
ah
00:47
<rkirsling>
or like `Object.hide()` I guess would be a similar idea
00:47
<bradleymeck>
i don't believe that exact api was mentioned but an accessor was talked about at some point
00:47
<rkirsling>
hm sure
00:48
<rkirsling>
how did you mean "wouldn't handle"? I'm sure I'm overlooking an important bit
00:49
<shu>
rkirsling: perhaps bradleymeck meant for local bindings
00:49
<shu>
rkirsling: how do you defineProperty a binding?
00:49
<rkirsling>
ah right yeah
00:49
<bradleymeck>
yea, if you have a reference to the fn already somehow
00:50
<shu>
i have some vague recollections of discussions around the function author being the decider of whether it should be hidden or not
00:50
<shu>
so APIs that mutate the visibility of functions after the fact may be unsatisfactory
00:50
<rkirsling>
I mean I guess you could argue that if you need a function to be hidden then perhaps it's acceptable to be required to declare it in this way and not that
00:50
<rkirsling>
(i.e. not as a local binding)
00:51
<rkirsling>
yeah I can see concern about after-the-fact
00:52
<shu>
a big implementation problem with visibility as a state of a *reference* instead of the function value is you'd have to then track that state on a per-reference basis
00:53
<shu>
that seems pretty gnarly
00:53
<rkirsling>
oh hmm right
00:53
<rkirsling>
I wasn't thinking of it in that way
00:53
<shu>
also the stack hiding directive no longer makes sense
01:07
<rkirsling>
right. for some reason I hadn't thought of prop descriptors as describing the means of access and not the thing in itself, even though that sounds ridiculously obvious when I say it out loud
01:10
<bradleymeck>
out of a sampling of 2500 sites that I am now fairly confident about the coreJS detection happening for @@species, 100% of all traps are from coreJS
01:11
<bradleymeck>
thats nutty
01:11
<shu>
corejs!!!
01:11
<bradleymeck>
but it also means we likely need to instrument into coreJS itself since it replaces things
01:11
<rkirsling>
that's some good data
01:11
<shu>
is that meme too dated now? have young'uns nowadays watched wrath of khan?
01:11
<rkirsling>
I'm excited about this project
01:12
<shu>
bradleymeck: any insight into the vintage of corejs? i feel like it must all be pretty old
01:12
<bradleymeck>
i worry about some of the corejs stuff since userland would still be using it as if it were a @@species impl and we don't have numbers on users of corejs actually using things
01:12
<rkirsling>
wait was the similarity to khaaaan there supposed to be obvious? 😅
01:12
<bradleymeck>
shu: i haven't tried to get that data
01:13
<bradleymeck>
i do know hatenablog is 2% of all usages of @@species pages and it uses an older one
01:14
<rkirsling>
maybe we can dogeza them into updating
01:14
<bradleymeck>
idk, updating would still be emulating via a new polyfill
01:14
<bradleymeck>
i don't think updating actually fixes anything
01:15
<rkirsling>
oh I meant "updating" in a general sense, but also I was half-joking
01:16
<bradleymeck>
i think the big thing would be getting babel to stop bundling it
01:16
<bradleymeck>
since that looks like what most of it is coming from
01:16
<bradleymeck>
most? all
01:17
<bradleymeck>
well likely not all but scraping is showing it to be used even if it isn't really needed so some build tool is doing it
01:19
<rkirsling>
mhm
02:02
<Bakkot>
I guess completion values for `break` are also pretty weird: https://github.com/tc39/ecma262/issues/1085#issuecomment-570464401
02:16
<devsnek>
we should make a thing that generates random valid syntax and then asks whether the completion from it is reasonable or not
02:18
<rkirsling>
you can call it YouCompleteMe
02:18
<Bakkot>
"asks whether the completion from it is reasonable" requires knowing what "reasonable" means
02:18
<Bakkot>
but it's easy to ask if engines are consistent, sure
02:19
<Bakkot>
I did this when I implemented try-finally in my compiler
02:19
<Bakkot>
found a lot of bugs
02:20
<Bakkot>
https://github.com/shapesecurity/shift-codegen-js + a dozen lines of code for producing interesting ASTs will get you there
02:21
<devsnek>
Bakkot: I mean asks us
02:21
<devsnek>
that's pretty cool
02:21
<Bakkot>
ahh
02:22
<Bakkot>
I love fuzzers
02:25
<devsnek>
here's one for all the js values https://github.com/devsnek/fuzzy
02:25
<devsnek>
or most of them anyway
02:26
<devsnek>
Def needs some work though
02:26
<Bakkot>
https://github.com/shapesecurity/shift-fuzzer-js does ~ all javascript programs
02:26
<Bakkot>
bit out of date though
02:26
<Bakkot>
also tends to generate duplicate bindings, which I need to fix
02:27
<Bakkot>
ah, yours is the actual values, not programs
02:27
<Bakkot>
neat
02:29
<devsnek>
yeah not as fun as generating code
02:29
<devsnek>
but it helped me write an etf library
02:30
<Bakkot>
... exchange-traded fund?
02:32
<devsnek>
erlang term format
02:32
<devsnek>
data serialisation
02:47
<shu>
are we writing prospectus for a new fund
02:52
<Bakkot>
I was reminded recently that schwab's bond aggregate bond fund trades as SWAGX
02:53
<Bakkot>
we should make a fund that tries to track JS companies, and then short it, and then intentionally stabotage the language
02:53
<Bakkot>
I wonder if the ECMA member agreement anticipates that possibility
02:54
<shu>
well now, if you count ecma member companies as JS companies
03:02
<devsnek>
I'm not sure we can make anything worse than ==
03:06
<Bakkot>
rebindable syntax + sync XHR
03:06
<Bakkot>
so that every `===` can be a main-thread-blocking network request
03:10
<devsnek>
innovative
03:11
<devsnek>
Bakkot: did you know that comparing two url objects in java by default does a synchronous dns resolution
03:31
<Bakkot>
yeah
03:31
<Bakkot>
also map lookups IIRC
04:09
<shu>
i mean, problems demand solutions
04:09
<shu>
i don't know what to tell ya
04:13
<Bakkot>
problem: you want your URLs to compare as equal if they resolve to the same IP
04:13
<Bakkot>
solution: stop wanting that
04:16
<Bakkot>
when I was in grad school I had this comic hung on my wall: https://i.imgur.com/7LbRv4V.png
04:23
<rkirsling>
lol
04:34
<devsnek>
i love it
04:44
<ljharb>
bradleymeck: corejs is not going to be possible to get any changes into, its maintainer is indisposed for 18 months
04:44
<ljharb>
bradleymeck: if that's what you meant by "instrument"
13:15
<bradleymeck>
ljharb: nah, i was just going to use the debugger to step into his code and muck around. since the sites are deployed we can't really change their code
14:14
<littledan>
chairs, I'm not sure if the meeting agenda is getting a little overpacked; I'm fine to wait on the operator overloading discussion until next meeting if we are running out of slots
14:59
<bradleymeck>
littledan: i'd rather we drop from...import
14:59
<littledan>
why not both?
14:59
<bradleymeck>
i have some prelim feedback that people aren't too keen oon the idea for now
14:59
<littledan>
huh really?
14:59
<littledan>
I always want to type `from...import`
14:59
<bradleymeck>
and i think there are better uses of time for now like op overloading
14:59
<littledan>
well my topic is towards the end, so we can decide dynamically
15:00
<littledan>
we can deprioritize from...import and see at the end which we have time for, or both
17:42
<ljharb>
seems better not to prematurely optimize the agenda :-)
17:45
<devsnek>
we can just skip everything before the needs consensus items
17:50
<Bakkot>
editor's update is actually going to have some content which is not just routine updates this time
19:20
<leobalter>
@bterlson @bradleymeck can I get admin access to the https://github.com/tc39/proposal-compartments repo? I'd like to transfer 4-5 issues recently opened for Realms that I believe they apply to the compartments proposal. @erights is aware.
19:23
<bradleymeck>
leobalter: delegates are upgraded perms now
19:23
<rkirsling>
does anybody have a concrete example of a function impl hiding use-case which involves "security-sensitive" code and not just library/polyfill code? I'm still unclear on how any reasonable sort of "confidentiality" is achieved if you can just open the resource directly as usual (or hell, even grep the specific places that would now be marked `"sensitive"`)?
19:24
<ljharb>
rkirsling: runtime fraud detection scripts that are dynamically updated over time, that runtime malicious scripts would thus be unable to dynamically adapt to
19:24
<ljharb>
rkirsling: iow yes, the malicious authors could download the code, but that drastically increases the window between "improved defense" and "improved attack"
19:24
<ljharb>
whereas if they can view the impl, they could try to write code to shorten that window
19:25
<ljharb>
(that's the understanding i have of one of those use cases, at any rate)
19:25
<rkirsling>
ah okay, that's helpful
19:27
<leobalter>
bradleymeck: thanks!
19:28
<bradleymeck>
rkirsling: yea, its the diff of being able to exfiltrate source to find exploits vs not. fn impl hiding would lean towards people needing debugger access to get that kind of exfiltration
19:35
<rkirsling>
thanks!
20:34
<leobalter>
bradleymeck: can you copy the link here, please?
20:34
<bradleymeck>
https://godaddy.zoom.us/j/92149833952
20:43
<shu>
welp, V8 got its first bug report for "why isn't my finalizer running"
20:48
<jridgewell>
Link?
20:50
<rkirsling>
heh
20:52
<Bakkot>
:D
20:53
<shu>
https://bugs.chromium.org/p/v8/issues/detail?id=10569
20:54
<devsnek>
i'm waiting for the ones that involve `delete`
21:12
<drousso>
tell them to try forcing a GC using Web Inspector and then see if it invokes
21:13
<devsnek>
will that mark or just sweep
21:31
<devsnek>
ystartsev: is avandolder actually implementing the iterator proposal rn?
21:41
<devsnek>
ah i found https://bugzilla.mozilla.org/show_bug.cgi?id=1568906
21:41
<devsnek>
very cool