16:52
<mathiasbynens>
same meeting link as yesterday, right?
16:53
<rkirsling>
I don't think any of us have that link anymore though
16:53
<rkirsling>
it's going to need to be posted
16:53
<devsnek>
you can go through the form again
16:53
<rkirsling>
is that desired though?
16:53
<devsnek>
bterlson: ^
16:54
<ljharb>
rkirsling: they said yesterday you can fill the form out twice
16:54
<rkirsling>
oh
16:54
<rkirsling>
alright
16:54
<bterlson>
it doesn't hurt anything we can dedupe as needed
16:56
<devsnek>
so much stage 4 this meeting
16:56
<devsnek>
very exciting
16:57
<jridgewell>
Could we just post the link in the Reflector issue?
16:58
<ljharb>
jridgewell: the goal was that nobody saw the link who hadn't filled out the attendance form
16:58
<ljharb>
(from what i understand)
17:00
<rickbutton>
I filled it out a second time, and then bookmarked the final link.
17:00
<ljharb>
the "thanks for filling out the form" page is bookmarkable, ftr
17:01
<ljharb>
or at least, refreshing it loads it fine
17:01
<rkirsling>
I wish the Teams client could remember your previous meeting link
17:06
<devsnek>
🎉
17:06
<rickbutton>
that was fast
17:09
<rkirsling>
wow
17:10
<rickbutton>
nice work devsnek
17:10
<devsnek>
hehe
17:11
<ystartsev>
that x++ one is really something
17:20
<mathiasbynens>
ljharb: woohoo, thanks for merging https://github.com/tc39/ecma262/pull/2040 \o/
17:20
<rkirsling>
so fast
17:21
<ljharb>
☚(゚ヮ゚☚)
17:21
<devsnek>
now i gotta remove the flag in engine262
17:31
<devsnek>
ljharb: if i can't screenshare from linux can you share your screen, its just issue 1941 and pr 1948
17:31
<rkirsling>
huh, I didn't know there was a `"unit"` type
17:32
<ljharb>
devsnek: i'm on an ipad (-‸ლ) but i can try
17:32
<devsnek>
oh no
17:32
<devsnek>
we'll make it work
17:32
<devsnek>
someone's tea is going
17:32
<rkirsling>
I was just gonna say that hahaha
17:33
<rickbutton>
better make your cup before the water's gone
17:37
<rkirsling>
yeah that water is totally gonna be gone
17:39
<devsnek>
ears gone
18:04
<michaelficarra>
shu: you said you prefer not to have "function get name() { … }", right?
18:04
<shu>
michaelficarra: ideally i prefer `get name() { ... }`
18:07
<ljharb>
+1
18:21
<Bakkot>
littledan / ystartsev: can you point me to something which explains the motivation for the callback argument to cleanupSome?
18:21
<haxjs>
it's a little weird to have "function" before "get name" :-)
18:21
<devsnek>
https://github.com/tc39/ecma262/pull/1948/commits/e417f396a276953c8329ddb89d8e523cf9cbe642
18:21
<devsnek>
shu: michaelficarra: Bakkot: ^
18:23
<ystartsev>
Bakkot: do you mean the iterator or the per item callback?
18:26
<Bakkot>
ystartsev the per-item callback
18:26
<Bakkot>
that overrides the one the registry has
18:26
<Bakkot>
that bit is weird to me
18:35
<littledan>
Bakkot: These design discussions were mostly offline. I recommend you file an issue if you're skeptical of this design.
18:35
<littledan>
I think someone found it to be more natural when writing code samples using it
18:35
<Bakkot>
littledan mostly I just want to know what the motivation for it is
18:36
<Bakkot>
will file if I remember after taking notes
18:36
<littledan>
same motivation as using an iterator and returning a boolean
18:36
<Bakkot>
hmm
18:37
<Bakkot>
it's the "overriding the original callback" part which is the strangest to me
18:37
<devsnek>
"using an iterator and returning a boolean"?
18:37
<Bakkot>
the fact that the registry's original callback isn't used anymore
18:37
<ystartsev>
bakkot, we have some emails i can summarize
18:38
<Bakkot>
jridgewell I always appreciate your presentations
18:38
<Bakkot>
specifically I like the recaps
18:39
<michaelficarra>
recaps are important, everyone should take note
18:40
<jridgewell>
😀, thanks!
18:42
<robpalme>
can anyone contact the numeric separator folk (Sam Goto, Rick, Leo) to see if they can go next?
18:42
<Bakkot>
leobalter ^
18:42
<Bakkot>
rwaldron ^
18:45
<devsnek>
tc39 wg 3 js for build tools
18:46
<devsnek>
honestly wouldn't even be the most awful idea
18:46
<Bakkot>
there's a tooling outreach call I think?
18:46
<Bakkot>
which I keep meaning to attend and failing to for reasons
18:47
<devsnek>
i mean like, have a formal specification of js features for build tools
18:47
<devsnek>
like 402 is for internationalization
18:48
<devsnek>
actually i guess the embedded devices group is a better example
18:48
<littledan>
devsnek: Decorators standardized in tools would still run into these constraints; we'd still have to decide which one(s) to violate
18:49
<devsnek>
littledan: well you don't have to polyfill it if its defined to be part of build tools
18:50
<littledan>
I don't know whether all polyfill authors would agree with that. Anyway, we also heard from tools authors that they would prefer if transforms were per-file, without requiring cross-file knowledge
18:50
<devsnek>
its time for build tools to be cognizant of cross-file information
18:51
<devsnek>
tell me if my exported function isn't used anywhere else in the codebase
18:52
<Bakkot>
p sure https://github.com/benmosher/eslint-plugin-import does that
18:53
<devsnek>
i have not observed it being able to do that
18:53
<devsnek>
might have it configured wrong though 🤷🏻
18:54
<Bakkot>
"Report modules without exports, or exports without matching import in another module (no-unused-modules)"
18:54
<Bakkot>
claims to do that
18:55
<Bakkot>
"unusedExports: if true, exports without any static usage within other modules are reported (defaults to false)"
18:55
<Bakkot>
so you'd have to opt in
18:55
<ljharb>
if it doesn't do that, file me an issue
18:57
<haxjs>
It seems unusedExports is not well fit for library?? It's likely a library will not use all its exports?
18:57
<Bakkot>
yup
18:57
<Bakkot>
probably why it's off by default
18:57
<ljharb>
haxjs: which is why the rule allows you to explicitly configure your entry points
18:58
<ljharb>
for library usage, or for apps where the entry points are all bundler entry points
18:58
<ljharb>
(that are referenced in ERB templates, for example)
18:58
<haxjs>
Great, I will try it in my next project :)
19:03
<ljharb>
does anyone disagree with the claim that https://github.com/tc39/ecma262/pull/2106 already has consensus, based on yesterday's consensus on https://github.com/tc39/ecma262/pull/2057 ?
19:04
<Bakkot>
yes; import.meta does not seem liek the same kind of thing as the Math and Reflect namespaces
19:04
<ljharb>
ok
19:04
<littledan>
ljharb: I didn't realize we were talking about `import.meta`
19:04
<devsnek>
import.meta having a tostringtag seems wrong
19:04
<ljharb>
sounds good, i'll mark it as needs consensus
19:05
<ljharb>
littledan: https://github.com/tc39/ecma262/issues/1970#issuecomment-622248793
19:05
<devsnek>
technically a host could do something weird
19:06
<devsnek>
like set import.meta.[[Prototype]] to something that already has a tostringtag
19:06
<ljharb>
littledan: i misconstrued your comment as agreement that import.meta should have it
19:06
<littledan>
which comment?
19:07
<ljharb>
littledan: the one that says "+1 on new namespaces going forward", right after the one where i asked about import.meta
19:07
<ljharb>
import.meta being a namespace, since its properties matter but it itself doesn't
19:07
<bradleymeck>
why would we add it to import.meta
19:07
<bradleymeck>
it isn't a namespace like the others
19:07
<littledan>
oh, sorry, I was responding to the original post
19:07
<bradleymeck>
it isn't something TC39 is going to populate
19:07
<ljharb>
bradleymeck: it might add something to it one day ¯\_(ツ)_/¯
19:08
<ljharb>
but it's still a builtin object
19:08
<devsnek>
hallway track dead todya?
19:08
<bradleymeck>
ljharb: hosts can add any key
19:08
<bradleymeck>
ljharb: it isn't builtin, it is something a host supplies
19:08
<bradleymeck>
and there are many of them, so each having an own prop seems weird
19:08
<ljharb>
those are all reasonable concenrs
19:08
<ljharb>
*concerns
19:09
<bradleymeck>
hosts can supply their own toStringTag already it looks like (odd to allow setting symbols, but 🤷)
19:09
<ljharb>
if you could comment on the PR that'd be great; if it's not able to reach consensus we don't have to waste plenary time on it
19:13
<bradleymeck>
done
19:14
<ljharb>
thanks
20:01
<devsnek>
when is lunch over
20:01
<jridgewell>
Now
20:02
<devsnek>
someone made a good point in the rust server about allowing multiple underscores in a row for padding binary literals
20:02
<devsnek>
sad we didn't get that
20:02
<devsnek>
can always be added later though
20:05
<haxjs>
what padding bin literal mean?
20:05
<devsnek>
haxjs: right now you can only use one underscore at a time
20:05
<devsnek>
`1__0` is a syntax error
20:05
<Bakkot>
who is chewing
20:06
<haxjs>
I mean why 1__0 is useful?
20:06
<ljharb>
i have the same question
20:07
<haxjs>
though I don't think it's harmful :-) just don't get the use case.
20:07
<rkirsling>
woo slice
20:07
<devsnek>
`1111_1111_1111_1111_1111_1111_1111_1111`
20:07
<devsnek>
that's only 32 bits
20:07
<devsnek>
imagine 64 bits
20:07
<ljharb>
rwaldron: please assign https://github.com/tc39/ecma262/pull/2043 to me once you've made all the planned updates
20:08
<Bakkot>
devsnek that's only one _ at a time
20:08
<devsnek>
`1111_1111_1111_1111__1111_1111_1111_1111`
20:08
<devsnek>
two underscores helps
20:08
<Bakkot>
ahh
20:08
<rkirsling>
1_________________________________________1
20:08
<devsnek>
lol
20:08
<Bakkot>
yeah makes sense
20:09
<rwaldron>
ljharb sure will do. I think leobalter is actually going to tackle the fixes
20:09
<devsnek>
and at 64 you might have three in the middle
20:09
<devsnek>
two at each half way point
20:09
<devsnek>
one for each nibble
20:09
<devsnek>
not the end of the world obviously
20:12
<haxjs>
devsnek oh, sounds useful :)
20:13
<devsnek>
ljharb: strings do have @@slice
20:13
<devsnek>
in terms of this proposal
20:13
<ljharb>
devsnek: not according to the proposal's readme
20:13
<ljharb>
unless i missed it
20:13
<devsnek>
on twitter they did
20:13
<shu>
sathya explicitly said string is not included because it's unclear what slice means on strings
20:14
<ljharb>
devsnek: https://github.com/tc39/proposal-slice-notation#should-slice-notation-work-on-strings
20:14
<ljharb>
imo it's perfectly clear what it means on strings :-)
20:14
<devsnek>
oh that's unfortunate
20:14
<ljharb>
i'll get to that once the queue hits
20:14
<devsnek>
i'd rather argue about whether slicing strings should be utf16 or utf32 instead of whether strings should have slice
20:15
<ljharb>
strings already have slice, it's .slice.
20:16
<haxjs>
how we can make it slice on code point?
20:16
<ljharb>
make .slice work on code points
20:16
<michaelficarra>
ljharb: what
20:16
<ljharb>
i'm not saying that's possible nor proposing it
20:17
<haxjs>
that's an good idea, but it cause inconsitency between s[a:b] and s.slice(a,b)?
20:17
<ljharb>
but this is called "slice notation" so it should only do "what slice does"
20:17
<bterlson>
anyone regret making for-of a string iterate over code points?
20:17
<ljharb>
+1000
20:17
<ljharb>
strings shouldn't be iterable, there should be a normal method for that
20:17
<michaelficarra>
nooo, it's by far the most useful choice
20:17
<devsnek>
bterlson: no
20:17
<ljharb>
like .keys/.values/.entries
20:17
<haxjs>
I think iterate over code points is good.
20:17
<ljharb>
code points isn't actually what people want, grapheme clusters is.
20:17
<bterlson>
speaking personally, I supported it but have since gotten zero value and have made mistakes
20:17
<shu>
keith_mi_: i think the first tack for that would be to see if we can replace more HTML collections with ObservableArray (which is what's motivating adding .item() to Arrays)
20:17
<Bakkot>
code points is what people want
20:18
<bterlson>
code points are pretty much useless
20:18
<bterlson>
lol
20:18
<ljharb>
also, iterable strings interfered with flat/flatMap
20:18
<shu>
keith_mi_: if that's possible, then they should get @@slice for free, if this becomes a thing
20:18
<ljharb>
Bakkot: they want 💩 but they also want 🏳️‍🌈
20:18
<ljharb>
code points doesn't give you both
20:18
<keith_miller>
shu: is @@slice not the same as Array.prototype.slice?
20:18
<Bakkot>
but yeah doesn't TabAtkins have an essay about this?
20:18
<shu>
keith_miller: it is
20:18
<michaelficarra>
ljharb: people don't want locale-dependent string iteration
20:18
<keith_miller>
slice looks up .item?
20:18
<shu>
keith_miller: no no, i'm saying the tack to get HTML collections to have @@slice is to actually replace the bespoke HTML collections with ObservableArray, which inherits Array
20:18
<Bakkot>
https://www.xanthir.com/b4wJ1
20:18
<ljharb>
michaelficarra: i agree, but they *definitely* don't want to have to piece together grapheme clusters
20:19
<keith_miller>
ohh, gotcha
20:19
<keith_miller>
sounds good to me
20:19
<ljharb>
it should have just been String.prototype.codePoints to return an iterator
20:19
<keith_miller>
shu: I like the ObservableArray thing anyway
20:19
<shu>
+1
20:19
<keith_miller>
so sounds good to me
20:19
<michaelficarra>
ljharb: I agree there's no one-size-fits-all default, so no default would've been best
20:19
<michaelficarra>
but if we HAD to have a default… code points
20:20
<ljharb>
perhaps. but we definitely didn't have to have one
20:20
<ljharb>
obv the ship has long since sailed :-)
20:20
<bterlson>
if code points were used everywhere then yeah, obviously indexing by code points is better than utf-16 units
20:21
<bterlson>
but having both in hindsight feels like a wrong choice :/
20:21
<devsnek>
new string type
20:21
<devsnek>
like new bigint type
20:21
<haxjs>
yeah at least it will not split string at surrogate
20:22
<bterlson>
hypothesis: most uses of for-of string are bugged and assume a correspondence between iteration steps and string indexes
20:23
<haxjs>
devsnek yeah , i really hope we can have utf8 string which eliminate the need of many encoding/decoding
20:23
<haxjs>
most uses of for-of string are bugged --- how ? u can't get index in for-of, so how to make bug?
20:24
<rkirsling>
this can't do more than slice, definitionally
20:24
<rkirsling>
not sure how to argue for it beyond "I would use the crap out of it"
20:24
<drousso>
^ +1
20:25
<haxjs>
original proposal have step, but seems removed now
20:25
<ljharb>
i would also use the crap out of it
20:25
<michaelficarra>
wait, are we assuming this will support negative indices? because if so, I don't think we can implement it as an iterator helper :(
20:25
<ljharb>
also, substr vs substring vs slice would all become this nice pretty syntax
20:25
<ljharb>
michaelficarra: yes, it supports negatives
20:26
<keith_miller>
ystartsev: FWIW here's a list of languages with syntax: https://en.wikipedia.org/wiki/Comparison_of_programming_languages_(array)#Slicing
20:26
<michaelficarra>
ljharb: that's unfortunate
20:26
<devsnek>
michaelficarra: it would throw i guess
20:26
<devsnek>
or yeah just not support it
20:26
<ljharb>
it has to, it's slice.
20:26
<keith_miller>
That's probably not exhaustive though
20:26
<ystartsev>
keith_miller: im not sure that "its in other languages" is the bar we want to use
20:26
<devsnek>
if its *all* of them though...
20:26
<ljharb>
definitely not a bar, but a strong indication that the syntax weight may be worth it
20:27
<drousso>
what other bar is there then?
20:27
<keith_miller>
I think it's a signal at least
20:27
<drousso>
how do you determine if something is useful without it existing
20:27
<devsnek>
does elang have slice syntax
20:27
<ljharb>
drousso: we don't need any other languages to decide what's useful for JS. it's just massively helpful as a guide.
20:27
<drousso>
oh sure i'm not saying "it's in other languages" should instantly mean "yes we should do it too"
20:27
<ystartsev>
introducing new syntax means two things: syntax is more difficult for beginners to learn than names and it is more difficult to search. secondly -- this takes up syntax space which might be used for other thins
20:28
<ystartsev>
in the cases of logical assignment, this aligned ??, ||, && with other binary operators
20:28
<rkirsling>
I'm not sure this conflicts with any other syntactic space though, given that it's strictly within []
20:28
<ystartsev>
it made the language, in a way, more consistent
20:28
<drousso>
i would argue that using this syntax for something else is possibly worse than the complexity of learning that it means slice
20:28
<ljharb>
ystartsev: in the case of slice notation, what else could it do that wouldn't be confusing for users of "most every other language"?
20:28
<drousso>
^ +1
20:29
<ystartsev>
i don't see consistency in other languages
20:29
<ljharb>
it's definitely harder to google for syntax tho, i agree with that one for sure
20:29
<ystartsev>
they all have unique ways in which they slice
20:29
<ljharb>
ystartsev: sure but is there anything like this syntax in another language that doesn't slice in some form?
20:29
<ystartsev>
there is some organization aroudn `[a...b]`
20:29
<michaelficarra>
FYI PureScript strings don't have any default iterability; all String operations have code point and UTF-16 code unit variants
20:30
<rkirsling>
there's consistency in it being within [] though
20:30
<ystartsev>
which is used for slice
20:30
<robpalme>
is Philip Chimento in here? he's up to present next
20:30
<ystartsev>
i would be more open to this proposal, if it solved something
20:30
<shu>
i am confused by the random noises that start up, because presumably someone is manually unmuting
20:30
<shu>
but why, since there's a queue of speakers?
20:31
<devsnek>
can't jump the queue if you're muted
20:31
<rkirsling>
yeah the biggest concern around this proposal is conflict with .item(), I think
20:31
<ljharb>
it does solve *something* - it solves the lack of ergonomics around the slice methods, and the lack of anything beyond "magic word: slice" as a protocol for other objects to participate in
20:31
<rkirsling>
because negative indices are the selling point
20:31
<shu>
rkirsling: it doesn't conflict i don't think
20:31
<haxjs>
why it will conflict with item() ?
20:31
<rkirsling>
oh because element vs. range
20:31
<shu>
rkirsling: right
20:31
<ljharb>
if anything they're complementary
20:31
<rkirsling>
alright nevermind then
20:32
<jridgewell>
shu: It's Brian when he unmutes to moderate
20:32
<ystartsev>
ljharb: does `slice` have a lack of ergonomics?
20:32
<shu>
jridgewell: i see
20:32
<ystartsev>
because i think this is debatable
20:32
<ljharb>
ystartsev: it's very debatable, as is anything around ergonomics, and it's fine that we ascribe different weights to that :-)
20:32
<ystartsev>
i consider ergonomics to be quite important, but i am not convinced by the argument at the present moment
20:33
<rkirsling>
it would be good to identify how we could identify sufficient demand then
20:33
<rkirsling>
'cause I don't think we'll be able to identify a "need"
20:34
<ljharb>
this seems like something where status quo is "fine" but this proposal would _feel_ a lot better
20:35
<ljharb>
so it's not solving a burning trash fire, but it's salving an irritant
20:35
<shu>
gsathya: part of my point is that the analogy to "other languages have slice notation" may be not as strong an argument as it sounds, because their slice notations weren't retrofitted, and thus are more symmetrical with their existing indexing notations
20:35
<rkirsling>
yeah. that ended in kind of a sad way
20:35
<ystartsev>
also echoing shu there, i think this is another argument
20:36
<shu>
that said i'm not anti this notation, i'm maybe weakly against but would be just fine with it being in the language
20:36
<gsathya>
shu, i'm not sure about that
20:36
<haxjs>
I agree with shu, a[-1] and a[-1:5] inconsistency is bad
20:37
<gsathya>
i'm sure a bunch of languages didn't ship their initial version with slicing syntax
20:37
<haxjs>
I remeber rbuckton suggest use ^1 instead of -1 :)
20:37
<shu>
fair enough, the high-order bit is whether there're points of inconsistencies and does it affect DX
20:38
<gsathya>
shu, how do i answer that?
20:38
<devsnek>
every second we don't have temporal is a second of pain
20:38
<leobalter>
devsnek: on which TimeZone?
20:38
<devsnek>
leobalter: mars time
20:38
<haxjs>
we need more feedback for temporal , it's now a really big proposal
20:38
<shu>
gsathya: hmm, i suspect the answer is "existing languages don't have this point of inconsistency". but maybe pick 3 popular languages that have slice syntax, and check if `n` in `[n:m]` is interpreted sorta-kinda the same as `[n]`?
20:38
<shu>
gsathya: python, rust, and something else?
20:39
<gsathya>
what does `n` in `[n:m]` is same as `[n]` mean?
20:39
<haxjs>
it mean a[-1] should work (but can't)
20:40
<rkirsling>
yeah that seems to be the concrete barrier here
20:40
<shu>
given the domain of `n`, are all values in the domain interpreted the same in both notations wrt things like negatives, coercion
20:40
<haxjs>
so the only way to overcome it is introduce syntax like ^1
20:41
<gsathya>
yeah, I guess you could disallow negative indexing in slice notation but now its no longer consistent with array.prototype.slice
20:41
<ljharb>
imo without negative indexing it's not worth the syntax weight
20:41
<gsathya>
yeah
20:41
<rkirsling>
yeah that's kind of the key subfeature
20:41
<haxjs>
we could allow slice support ^1 if ^1 is sugar of new Index(1, {from:'end'})
20:42
<leobalter>
`arr[-1]` may be counter intuitive in JS but I don't see it as a blocker for a richer feature such as `arr[-n:m]`.
20:42
<gsathya>
well, i would very much like it to be consistent with existing slice methods
20:43
<shu>
gsathya: i wanna be clear that i don't consider this inconsistency fatal, but an extra gotcha
20:43
<haxjs>
gsathya I think maybe we'd better first consider a[^1] ?
20:44
<ljharb>
that seems weird to me
20:44
<ljharb>
`[^1]` means "not 1" in git, and regex
20:44
<rkirsling>
yeah I don't think I could support that
20:44
<ljharb>
sorry, in git it means "1 commit back"
20:45
<littledan>
so, people were cool with the Temporal timeline? ystartsev and ljharb expressed concerns with that in the past; I think this timeline leaves plenty of time for review
20:45
<haxjs>
`^1` come from c# , but we could also consider other syntax
20:45
<ystartsev>
littledan: they have given a timeframe within the realm of what i requested, so i am fine with it
20:46
<haxjs>
ljharb so ^1 seems ok as git usage?
20:47
<ljharb>
littledan: sorry, maybe i missed it; what timeline?
20:47
<gsathya>
shu, gotcha
20:47
<ljharb>
i'm pretty sure i'm going to need to see finalized spec text that has minimal further churn, for more than 2 months, to be able to properly review it
20:47
<ystartsev>
iiuc we have till november?
20:48
<ljharb>
is the spec text settled? i feel like i've seen lots of changes still, recently
20:48
<rkirsling>
yeah, I'm excited but it's basically a new spec
20:49
<haxjs>
what the diff of `if` vs `with`?
20:49
<rkirsling>
(new spec as in "it's the size of 402", not as in "it's changed completely")
20:49
<michaelficarra>
haxjs: nothing, new term
20:49
<michaelficarra>
I prefer "if" over "assert" FWIW
20:50
<haxjs>
michaelficarra the example is ... if {type:json} with {...}
20:50
<ljharb>
`if` does kind of imply that if the condition isn't met, the import doesn't happen, when in fact it throws
20:50
<ljharb>
which is the semantics `assert` has already
20:50
<ljharb>
there's been some comments with that mistaken assumption on the repo already
20:51
<haxjs>
so `with` do not throw, only provide metadata?
20:51
<ljharb>
`with` isn't in the current proposal
20:51
<ystartsev>
yeah the `with` also threw me when i readd this
20:51
<ljharb>
previously the proposal also allowed the possibility of "evaluators", ie, things that change what module you import
20:52
<ljharb>
but since it was restricted to conditions/assertions, changing `with` to `if` made more sense
20:55
<haxjs>
oh, `if` is a little bit strange, `assert` is a little bit clear.
20:56
<haxjs>
maybe `must {type:'json'}` :P
20:59
<benjamn>
thinking out loud: what about returning a Record/Tuple/primitive for JSON imports?
21:00
<bradleymeck>
would reduce __proto__ errors
21:01
<haxjs>
not bad. I like this idea!
21:01
<benjamn>
ah I see Mark M is on the queue with that point :)
21:01
<haxjs>
but it means we must first land record/tuple
21:02
<benjamn>
yep, that seems like the main objection, but maybe there's something strategic we can do, like saying record/tuple will be used only if available?
21:11
<ystartsev>
is philip on irc?
21:12
<ystartsev>
or i guess i can ping sffc: wdyt of contacting hebrew / arab communities? do we have contacts there?
21:12
<ystartsev>
re: temporal
21:13
<sffc>
ystartsev: I know some arab expats who are software engineers
21:21
<akirose>
can someone give me an example of valid properties without quotes
21:22
<akirose>
i'm confused and i went through the slides again and did not feel any less confused
21:22
<gibson042>
akirose: { type: "json" } vs. { "type": "json" }
21:24
<akirose>
ohhhhhh lolol right
21:24
<bradleymeck>
assert { "\0": "YOLO" }
21:28
<ljharb>
can someone record the consensus in the notes for import conditions?
21:29
<ljharb>
littledan ^
21:35
<ljharb>
rricard ^
21:38
<ystartsev>
anyone looking to get a stream of explainations or ask questions can join #tc39-beginners
21:39
<rricard>
sorry about that ljharb, I will let dan properly record it
21:40
<littledan>
ljharb: Draft conclusion at https://docs.google.com/document/d/1IHoLaRSH41oU4an4HwfngP8aASTM51HYzlWgEhjGyI0/edit#bookmark=id.3zje6vza7bnl please review
21:40
<ljharb>
thanks, sgtm - please lmk when there's a repo URL for json modules
21:41
<littledan>
will do
21:44
<TabAtkins>
Whoever's running the meeting, could you approve me joining via phone?
21:44
<TabAtkins>
Probably an (832) number.
21:45
<rkirsling>
ooh `item` has appeared
21:46
<TabAtkins>
I take no credit nor blame for Shu's slides
21:46
<TabAtkins>
good lord
21:47
<TabAtkins>
Note: not inherit, a Proxy around Array.
21:49
<rkirsling>
mmm negative indices
21:50
<ljharb>
should i add a queue item asking if `.item` should go on strings </troll>
21:50
<benjamn>
is there a good way we can express support for proposals without unmuting and taking the floor etc.?
21:51
<rkirsling>
benjamn: I too wish for that
21:52
<ljharb>
benjamn: you can put a queue item that's like "+1 <EOM" maybe
21:52
<littledan>
part of what I have recorded in the conclusion of the import conditions topic is, "Split JSON modules into a separate Stage 2 proposal". Does this match everyone's understanding of the conclusion, or would we need another committee proposal for consensus to really make JSON modules at Stage 2?
21:52
<ljharb>
i'm sure we could come up with a convention for things where it's "read the queue item, move along"
21:52
<ljharb>
littledan: that matches my understanding
21:54
<benjamn>
ljharb: READONLY?
21:54
<ljharb>
sgtm
21:55
<ljharb>
i'll save my bikeshed energy for actual proposals, pick any word you like :-p
21:55
<benjamn>
haha sure, I hear that
21:55
<shu>
oops i clicked the wrong button
21:55
<shu>
hung up on the call
21:55
<shu>
ljharb: what was the question?
21:55
<devsnek>
node 14.6.0 is OUT
21:55
<devsnek>
WEAK REFS ARE LIVE
21:56
<rkirsling>
* might be live
21:56
<ljharb>
shu: "what stuff is still open for stage 3?" and tab said basically only the clamping question
21:56
<devsnek>
lmao
21:56
<shu>
ljharb: yeah that sounds right
21:56
<ljharb>
cool
21:56
<ljharb>
getify raised some good points about "providing numbers larger than the length" and i think it's worth serious consideration
21:56
<shu>
ljharb: oh? link?
21:56
<ljharb>
shu: it's an issue on the repo, one sec
21:57
<shu>
ah
21:57
<ljharb>
shu: https://github.com/tc39/proposal-array-last/issues/21 might be it
21:58
<ljharb>
oh no wait, wrong proposal
21:58
<ljharb>
shu: https://github.com/tabatkins/proposal-item-method/issues/6
21:59
<ljharb>
shu: the discussions have wandered around a bunch
21:59
<TabAtkins>
Yeah I'm really confident in rejecting that, at least as an issue against this proposal. There is no way we can have the function throw or return a new truthy value for oob access.
21:59
<ljharb>
it seems reasonable to me for `.item` to accept any negatives but only to accept positives up to the length - 1
21:59
<ljharb>
that's the open question i had
21:59
<TabAtkins>
Hm, can you expand on that? I don't see the cases being at all distinct.
21:59
<ljharb>
(i'm very -1 on a sentinel value ofc, and also throwing)
21:59
<ljharb>
TabAtkins: yeah maybe issue 6 wasn't relevant, my bad if so
22:00
<shu>
ljharb: yeah undefined being conflated with "empty" is a ship that has sailed
22:00
<shu>
bbl, mtg
22:00
<ljharb>
agreed
22:00
<shu>
it's like a big ship that has sailed too, like a carrier
22:00
<ljharb>
hm, let me look harder for where the overflow question came up
22:00
<ljharb>
it's particularly relevant for empty arrays tho, i think?
22:01
<ljharb>
altho `[].item(n)` would just return undefined for any n, i guess
22:01
<rkirsling>
that's what I would expect though
22:03
<littledan>
ljharb: ystartsev The timeline for Temporal that I was talking about is in https://pipobscure.dev/slides/temporal-2020-07/#5 . This is designed to give everyone enough time to review and iterate, based on the concerns expressed last meeting. Do you have any thoughts on it?
22:05
<ljharb>
littledan: "now til november" is plenty of time iff the spec is largely finalized. has that happened? because i feel like i'm still seeing discussions bandying about major changes
22:06
<littledan>
did you see the bullet point, "Finalize specification and pass to reviewers by September" ?
22:06
<ljharb>
ahhh ok, missed that, sorry
22:06
<ljharb>
september to november feels like a very tight window to me
22:06
<ljharb>
temporal feels like one of the largest proposals ever to land
22:07
<ljharb>
but i will certainly try
22:07
<littledan>
IMO two months is a lot of review time. We usually use two weeks to ten days as the standard
22:07
<littledan>
it's true that it's a big proposal, so I think it's justified to increase from 10 days to two months
22:08
<ljharb>
there's also a ton of context and concepts to page in
22:08
<littledan>
maybe we can also recruit more than two reviewers and figure out good ways to split things up
22:08
<littledan>
yes, that's true. I'm really happy about the proposal's documentation, so I hope that helps the review.
22:08
<devsnek>
how easily can the docs be dumped into mdn
22:09
<littledan>
devsnek: That was a sorta-kinda design goal for these docs, but we'll see
22:09
<devsnek>
exciting
22:09
<littledan>
devsnek: The WeakRefs docs got dumped into MDN and that seems to have worked out well
22:09
<devsnek>
nice
22:41
<ljharb>
benjamn: would you assume that even if https://github.com/facebook/regenerator/blob/master/packages/regenerator-runtime/runtime.js#L389 is fixed, it will remain present on the web for a very long time? (https://bugzilla.mozilla.org/show_bug.cgi?id=1644581 for context)
22:48
<benjamn>
ljharb: I'm actually somewhat optimistic that people update regenerator-runtime fairly often
22:48
<benjamn>
it would be a different story if it was transpiled code, but it's just a runtime library
22:49
<ljharb>
how quickly do you think that kind of fix could get in, to conditionally define toStringTag values?
22:51
<benjamn>
ljharb: in my mind this is a backwards-compatible change, so any new patch version I release will be compatible with https://github.com/babel/babel/blob/2bf38fb9149eb514a13bb608e5a9a0c06ad5cacd/packages/babel-runtime/package.json#L17
22:51
<benjamn>
in other words, very quickly
22:51
<benjamn>
are you opposed to just using Object.defineProperty, to avoid the conditional? could do both obviously
22:51
<benjamn>
re: the last couple of comments in the bugzilla thread
22:51
<ljharb>
depends on your targets; if you use dP then it can't work in IE < 9, which might be a breaking change
22:52
<ljharb>
but also the define is unnecessary when there's already a toStringTag value
22:52
<ljharb>
so the conditional seemed simpler to me
22:52
<ljharb>
(the specific string isn't really important, just that there is one)
22:52
<benjamn>
ah yes, and Regenerator is increasingly only needed for older IE versions, so I guess that's still an essential audience
22:53
<ljharb>
realistically you could even do `if (!(toStringTag in whatever)) { whatever[toStringTag] = blah }` (don't have the code in front of me)
22:53
<ljharb>
that way it's only set where it's absent
22:53
<ljharb>
(probably tons of ways that could be worded ofc)
22:55
<benjamn>
ljharb: interestingly, when these toString tags were added, one of them was conditional and the other wasn't: https://github.com/facebook/regenerator/commit/28621286a46c95e2cde2970918b565545fcf5cdf
22:55
<ljharb>
1 out of 3 ain't bad
22:56
<ljharb>
do you want a PR, or is it easier for you to do it?
22:56
<benjamn>
I'm imagining they should all be conditional?
22:56
<ljharb>
yes
22:56
<benjamn>
a quick PR would be great, so I don't have to self-review
22:56
<ljharb>
sure
22:57
<benjamn>
ljharb: although there already appears to be one? https://github.com/facebook/regenerator/pull/399
22:58
<ljharb>
haha k, exe beat me to it
22:58
<ljharb>
i'll make the alternative
22:58
<ljharb>
that one uses defineProperty.
22:59
<benjamn>
++
23:00
<ljharb>
benjamn: https://github.com/facebook/regenerator/pull/400
23:00
<ljharb>
i did it on the web ui, so lmk if i need to clone it and flesh anything out
23:01
<benjamn>
no worries, I'll make any tweaks necessary
23:01
<ljharb>
word, thanks
23:02
<devsnek>
tfw the polyfill breaks the actual feature
23:02
<ljharb>
not the first time this author's polyfill code has done that :-(
23:02
<benjamn>
yep, definitely a sad moment for any polyfill
23:03
<ljharb>
i don't *think* any of mine have had this problem yet, but i'm sure the second i post this, it's gonna happen
23:04
<devsnek>
this is why instead of writing polyfills you should just use a separate js engine
23:05
<devsnek>
ironically transpiling engine252 would involve regenerator
23:06
<shu>
does that have 10 fewer features than what's in JS
23:06
<benjamn>
fascinatingly (to me), the Rust Babel clone actually went to the trouble of converting Regenerator to Rust: https://github.com/swc-project/swc
23:06
<shu>
i'm going to start telling people it's called ecma262 because there are 262 features
23:06
<benjamn>
https://github.com/swc-project/swc/pull/554
23:07
<devsnek>
I've never even heard of this
23:07
<devsnek>
I did at one point write my own regenerator though
23:08
<devsnek>
that might be when I first became interested in compilers
23:12
<devsnek>
wow this parser code is rough
23:27
<benjamn>
devsnek: yeah I can't vouch for swc from personal use, but it does seem to have users
23:30
<benjamn>
and it's ~fast~
23:36
<benjamn>
ljharb: ok theoretically new installs of regenerator-runtime (or babel-runtime) will now have this fix! (regenerator-runtime⊙0 has been published to npm)
23:53
<ljharb>
awesome, thanks - hopefully the affected sites upgrade quickly