09:07
<Bakkot>
btw the note taking bot has some autocorrects thanks to michaelficarra now
09:07
<Bakkot>
feel free to suggest more to me and I'll try to sneak them in during pauses in talking
09:08
<Bakkot>
I just added a few including "Jason -> JSON"
09:11
<rricard>
nice, I thought it learnt
09:11
<Bakkot>
there are actually other models which let you give it a list of vocab words, which is really cool
09:11
<Bakkot>
unfortunately they don't work as well for this sort of audio
09:12
<robpalme>
training it on the entire set of tc39 notes might help
09:13
<Bakkot>
not a feature they offer, alas
09:13
<ljharb>
… and that was the fateful day EcmaNet became self-aware, and began inserting semicolons into code worldwide
09:14
<Bakkot>
whoever is selecting large blocks of the notes, could you not do that?
09:20
<rricard>
someone did that with the whole text yesterday regularly
09:20
<rricard>
here agaun
09:20
<rricard>
anonymous moose
09:21
<michaelficarra>
now that the bot is getting tuned and we're getting better at live editing the notes, this meeting's notes are FANTASTIC IMO
09:24
<Bakkot>
it is fascinating to me that the bot wants to spell "JSON" as "Json"
09:24
<Bakkot>
I will maybe add an autocorrect for that
09:25
<rricard>
anonymous moose again
09:25
<michaelficarra>
someone is still highlighting large blocks of text…
09:25
<rricard>
should I point of order?
09:27
<ljharb>
ystartsev: "JSON.module" seems like a strange way to me to add the ability to unfreeze+copy a frozen object, especially the first non-syntactic way to import a module
09:27
<ljharb>
would JSON.module be sync or async? would it work in Scripts as well as in Modules?
09:27
<ystartsev>
i would imagine it being similar to `import` -- we haven't delved deep on what this should look like or strong opinions here
09:28
<ystartsev>
the idea is that this would allow people who are expecting json.parse like behavior would be able to get it this way
09:29
<ljharb>
that would mean there's no way to "synchronously" import a normal, idiomatic, mutable parsed JSON object?
09:30
<ystartsev>
there are of course, other options, but that would break from what we currently have with `import`
09:30
<ljharb>
right
09:30
<ystartsev>
does that mean that its impossible? no, but thats a trade off we have to decide on
09:30
<ystartsev>
from my perspective, there is a use case, and an expectation, from users to have this behave something like json.parse
09:30
<ljharb>
right, which is "mutable"
09:31
<ystartsev>
yes
09:31
<ljharb>
also, imo a VERY strong expectation that it works like `require(json)` does in node
09:31
<ljharb>
which is also mutable
09:31
<ystartsev>
but, this could be error prone, since its also a copy
09:31
<ystartsev>
but that isn't possible with modules
09:31
<ljharb>
in node, it's not a copy, the require cache is a singleton
09:31
<ystartsev>
that is why we ended up leaning towards immutibility
09:31
<ljharb>
in node, for a decade, every required json file has been shared and mutable as a singleton, and in practice it hasn't caused issues
09:31
<ystartsev>
but its "leaning" its not "it must be this way or else"
09:32
<rricard>
for the sake of note takers repeating questions is useful
09:32
<ystartsev>
maybe i wasn't clear that we are not enforcing an opinion here
09:33
<ljharb>
i understood that :-) just exploring the suggestion/leaning
09:33
<akirose>
rricard: i agree
09:33
<robpalme>
ljharb: it may not have caused problems, but I can tell you it's a missed opportunity. it's costing us a MB of overhead because the emoji json data needs to be loaded once per app. for our host environment, we will soon switch that to be frozen and shared to save memory.
09:34
<michaelficarra>
I like this argument from gibson042 of mutability still being a big win since more people can transition from eval hazards
09:35
<ljharb>
robpalme: i'm a bit confused by that; how would it being frozen allow it to be shared per app?
09:35
<robpalme>
we run multiple users app inside what node would consider to be one app. today we must duplicate the structures because JSON imports are mutable.
09:35
<ljharb>
robpalme: ok, but you could choose to freeze them and then share them, no?
09:36
<robpalme>
yes!
09:37
<ljharb>
so how is "mutable by default" getting in the way of that option?
09:37
<robpalme>
because if apps become dependent on that assumption, we can't give them immutable values
09:38
<robpalme>
and 99.9% of usage is not dependent on it being mutable. people use it as read-only data loading.
09:38
<ljharb>
why would they become dependent on that assumption if your initial json modules implementation in your in-house platform chose to freeze them, regardless of what the standard says?
09:38
<ystartsev>
so, i don't really consider json.parse and require(json) to be really similar. one is a copy and the other is not. the hazard for developers is very different
09:38
<ystartsev>
i don't think that because the hazard exists that it means we shouldd replicate that behavior
09:39
<ljharb>
it's very fair that `JSON.parse` makes a copy every time
09:39
<ystartsev>
also, clarification -- exists in node. for those working on web apps they may only have the intuition from json.parse
09:39
<Bakkot>
i wonder if anyone optimizes `JSON.parse(JSON.stringify(x))`
09:40
<ystartsev>
you know, its sad but i have seen that code
09:40
<ljharb>
re selecting text, i wonder if someone's trying to paste the content in translation software to translate it to their language?
09:40
<ljharb>
(cc akirose ^)
09:40
<ystartsev>
possibly...
09:41
<rricard>
that would make sense
09:41
<rricard>
should we have a live translation bot
09:41
<ljharb>
also, did we ever figure out how to make the google doc show people's names when they're logged in?
09:41
<michaelficarra>
I thought it was axolotl? I don't want to wrongly blame moose
09:41
<ljharb>
i see it as chipmunk rn
09:41
<rricard>
I think we get diffferent animals
09:42
<michaelficarra>
oohhh lol well then that's not helpful
09:42
<rricard>
thanks yulia!
09:42
<michaelficarra>
that's a great idea, ystartsev
09:42
<ljharb>
queue needs advancing
09:44
<robpalme>
@ljharb it's true that this efficiency can be gained by deviating from ecmascript, but it's better for the behaviour to be aligned. otherwise third-party code doesn't work. so if other users of ES can benefit from this (e.g. moddable putting JSON data in ROM, or using read-only shared pages) then it could be worth standardising
09:44
<akirose>
WE ALL SEE DIFFERENT ANIMALS?! WHAT'S THE POINT
09:44
<robpalme>
V8 makes use of shared memory across processes to increase efficiency
09:45
<ljharb>
robpalme: if third-party code doesn't work tho, wouldn't that be because it needs the mutability?
09:46
<ljharb>
ryzokuken ptomato: so does this mean that the temporal spec is, barring minor editorial issues and perhaps naming bikesheds, frozen, and thus ready for review?
09:48
<robpalme>
right - but we set the tone here for the whole ecosystem. and if users become accustomed to immutability, that increases the amount of code that will be compatible
09:48
<ystartsev>
info on how to copy is now in the doc, if it happens again you can move the note down to communicate async with people
09:49
<rricard>
yep will do thanks a lot again
09:52
<shu>
robpalme: RO spaces aren't used for general frozen stuff, but distinguished RO VM-internal things like some maps and constants like NaN
09:52
<shu>
robpalme: so i wouldn't extend the argument that if JSON modules were immutable, that'd enable some kind of cross-isolate sharing
09:53
<robpalme>
sure - I wasn't trying to imply this is used for user-data today
09:53
<ystartsev>
shu: just to verify -- v8's position is "rather mutable"?
09:54
<shu>
ystartsev: leaning mutable, yeah
09:54
<ystartsev>
and this is from a user ergonomics perspective or was there also a technical reason?
09:55
<shu>
no technical reason
09:55
<ystartsev>
ok, so we differ on how this might impact users, thanks for verifying
09:55
<shu>
i'm somewhat swayed by the user expectations argument
09:56
<ystartsev>
yeah, agreed, thats why we thought a complementary api might be a good idea
09:57
<shu>
i think the difference of opinion comes down to how deeply baked in to the mental model of ESMs the idea of live bindings is
09:57
<shu>
the hazard seems to generalize to well beyond JSON modules
09:57
<shu>
unclear why we should raw the line here
09:58
<shu>
draw*
09:58
<ystartsev>
it might also be coding style -- as rob mentioned above, they copy everything. When I was programming js, this was the pattern I used as well -- so it doesn't make sense for me, as a js dev, to have it be mutable. Having it be immutable would prevent mistakes
09:58
<ystartsev>
but this is coding style, and not objective
09:58
<ljharb>
i will say that if live bindings didn't exist, it'd be a lot more reasonable to claim users would expect an immutable import
09:58
<shu>
what does the "copy everything" style mean?
09:58
<ystartsev>
that is a good argument
09:58
<rricard>
note we copy everything in our infra
09:58
<rricard>
not end users
09:59
<rricard>
rpalmer: maybe worth clarifying
09:59
<ystartsev>
the whole "soft immutability" coding style: `newState = {...oldState}` or something to that effect. Depending on the data, we might have a library method called deepCopy
10:00
<shu>
i see
10:00
<shu>
my problem is after all these years i still don't program JS
10:01
<ljharb>
shallow copies are common; deep copies are something i consider a code smell, and there's a ton of caveats and assumptions baked into libraries that offer it (i maintain two of them)
10:02
<shu>
ystartsev: but anyway i won't really push back either way, immutable or not
10:02
<ystartsev>
usually you don't end up doing deep copies (or at least i have no memory from the last few years of doing that). But at some point I did cross a deep copy, though in tests
10:03
<robpalme>
@shu: Does that imply Chrome would accept either way?
10:03
<ljharb>
ystartsev: good point, i have often used it in test fixtures
10:03
<ystartsev>
i mean, similar case here: if its mutable or immutable we don't have a strong opinion. leaning to immutable, suggesting that an api exists to copy the object if it does
10:03
<ystartsev>
we had a discussion of json.copy before we came to the conclusion of something like `import` instead
10:04
<rricard>
we are only 2 note takers we can continue like this but a third one would be appreciated
10:04
<ljharb>
hmm - i suppose `JSON.parse(JSON.stringify(obj))` is an idiomatic way to deep copy a JSON object, frozen or not
10:04
<ljharb>
how fast/slow is that in engines? i've never measured
10:05
<ystartsev>
gunna jump on the notes, excuse me
10:05
<rricard>
np thanks
10:05
<akirose>
someone is a pumpkin
10:07
<rricard>
bakkot: add temple => temporal autoconvert
10:07
<shu>
robpalme: afaik yes
10:08
<robpalme>
woooooooo
10:08
<robpalme>
thank you
10:09
<robpalme>
(that woo is an individual delegate woo, not a chair group woo)
10:11
<Bakkot>
rricard done, though maybe too late now
10:11
<rricard>
people are going to talk about temples some more
10:15
<littledan>
Richard has clarified that he's not asking for the emoji thing. i think that should be taken down.
10:15
<sffc>
Where am I supposed to find the new temperature check emoji? I don't see them on tcq
10:15
<shu>
sffc: the chair group puts it up when a champion asks for it
10:15
<shu>
or when someone asks for it, i guess, dunno if it has to be champion
10:17
<ljharb>
gibson042: is there a specific part of the existing proposal that you're worried about right now? (that i missed)
10:17
<ljharb>
or is this a general philosophy question
10:19
<gibson042>
the latter... I'm not concerned with any given approach, but consider it important that TC39 not repeat the de facto squatting that came from Java
10:19
<ljharb>
gotcha
10:20
<gibson042>
and it would be bad if we followed e.g. an IETF draft for "[c=Japanese]" that *their* process transforms into "[cal=japanese]" before publication
10:22
<gibson042>
"The best laid schemes o' mice and men gang aft a-gley"
10:27
<michaelficarra>
ryzokuken: you are still presenting
10:27
<ryzokuken>
michaelficarra: sorry!
10:27
<ryzokuken>
stopped presenting now
10:29
<ystartsev>
am i the only one with weird screen?
10:29
<ryzokuken>
no
10:30
<ryzokuken>
it looks clipped for me
10:34
<littledan>
(I've seen issues with the emoji reacts not popping up on mobile sometimes)
10:38
<littledan>
OK, Surma confirmed with me that the 1 PM timeslot works for JS module blocks
10:38
<ljharb>
sad i'll miss it :-(
10:39
<rricard>
sorry had to walk away from the computer for a bit
10:39
<akirose>
do we have enough editors?
10:39
<rricard>
back
10:39
<akirose>
rricard: thank you ♥️
10:40
<rricard>
devin transcription is gooood
10:40
<drousso>
(☞゚ヮ゚)☞
10:40
<shu>
robpalme: akirose: surma says he'll be ready for 1pm slot
10:41
<robpalme>
ty
10:41
<shu>
oh i missed what littledan said above already
10:41
<ljharb>
drousso: a query API combined with a hardcoded list basically === an enumeration api
10:41
<ljharb>
drousso: just, less ergonomic for good actors.
10:41
<littledan>
yeah it seems like nobody had told him about the 11:30 scheduling for his topic
10:42
<littledan>
it's a bit hard to communicate this given how dynamic the schedule (necessarily) is
10:42
<littledan>
I can't believe the chairs manage to handle it with all the different things that come up
10:42
<akirose>
yeah but... that was specifically in that time slot to accomodate various scheduling constraints
10:42
<akirose>
including his
10:42
<littledan>
right, we just forgot to tell him the result
10:42
<littledan>
I think you did a good job
10:43
<littledan>
this was more on me
10:43
<akirose>
ooooh got it he wasn't looking at the reflector actively
10:43
akirose
curtseys
10:43
<littledan>
right, he's not a frequent TC39 attendee
10:48
<littledan>
gibson042: We all agree that it's important for us to not repeat the de facto squatting. I'd go further and say, it's a Stage 3 prerequisite that we get somewhat far along in the standards discussions. I think an IETF draft is a good checkpoint here; I don't know exactly what the Stage 4 prerequisite should be worded as
10:54
<littledan>
you can always monkey-patch on top of these APIs to add more data
10:54
<littledan>
also browsers and other JS environments often have strong timezone update mechanisms to get the freshest data directly in the host
10:55
<rricard>
bakkot: Intel to Intl
10:55
<rricard>
actually
10:55
<michaelficarra>
yeah our Intel delegates may not appreciate that
10:55
<rricard>
yulia did you mean intel, the company this time?
10:56
<ljharb>
i believe she said Intl
10:56
<Bakkot>
will do as soon as there's a gap in the audio
10:56
<rricard>
where did leo start?
10:57
<leobalter>
let me see the notes
10:58
<shu>
michaelficarra: when was the last time we had an Intel delegate?
10:58
<ljharb>
shu: we did for SIMD, and a number of meetings after
10:59
<ljharb>
but it's been awhile
10:59
<shu>
yeah i feel like at least 2 years
10:59
<littledan>
yeah, we had Peter for a while
11:00
<rricard>
bakkot can you stop
11:00
<Bakkot>
done
11:00
<rricard>
thanks
11:00
<ljharb>
Bakkot: does the transcription bot always insert at EOF, or can it be made to insert before a marker, so there's a scratch space at the bottom of the doc?
11:00
<Bakkot>
always EOF
11:00
<rricard>
as usual won't be able to be an editor this afternoon
11:01
<Bakkot>
gdocs API claim to support insertions anywhere but interacts very poorly with people editing the doc live
11:04
<gibson042>
littledan: agreed. If it looks like IETF will be the body to which TC39 defers, then I would say publication of a Standards Track RFC would be the ideal Stage 4 prerequisite
11:05
<littledan>
gibson042: That makes sense but I don't know what exactly constitutes a "standards track RFC" and how the calsify WG ends up working. I feel like this comes down to details that we'll learn as we work with them more.
11:06
<littledan>
as Ujjwal explained in his presentation, and as we've been discussing with you in the champion group meetings, this whole thing is already the plan
11:14
<littledan>
I feel like, even if the committee's temperature were flexible on requiring that we go through standards, we should still do it, to be safe
11:15
<gibson042>
https://tools.ietf.org/html/bcp9#section-4
11:15
<littledan>
(Someone who works in IETF told me the official documentation doesn't really match their practice)
11:16
<littledan>
so I think this is just something we have to figure out the details of as we go along with IETF Calsify WG, and judge based on what we learn there, which point would be "standard enough" for Stage 4
11:16
<littledan>
I agree that it should be pretty standard and stable and agreed-on as a Stage 4 prerequisite
11:43
<littledan>
and the idea will be to have a solid draft that is moving along in reviews with IETF as a Stage 3 prerequisite
11:48
<gibson042>
perfect
11:58
<robpalme>
we will restart in 2 mins!
11:58
<robpalme>
Surma is in pole position, ready to go
12:10
<michaelficarra>
metaproperties could be used to avoid the NLTH problem
12:10
<michaelficarra>
something like new.module { … }
12:11
<shu>
i guess you care about typing `module\n{`?
12:12
<michaelficarra>
who is the "you" here?
12:13
<michaelficarra>
only people who omit semis would care about that
12:13
<shu>
you, michael ficarra
12:14
<michaelficarra>
no, not at all
12:14
<michaelficarra>
but it was brought up in the slides that we would need a NLTH for the shown syntax
12:15
<michaelficarra>
and I was saying that there's an alternative: metaproperties
12:15
<rbuckton>
if the line break is important, we could also investigate a "keyphrase", like `inline module\n{`
12:16
<rbuckton>
where there's an NLT between `inline` and `module`, but not between `module` and `{`, similar to `async function`
12:20
<drousso>
isn't `module` a reserved keyword in strict mode?
12:20
<littledan>
haha what a confluence of conditions...
12:20
<littledan>
we have too many Daniel's!
12:21
<akirose>
are we at more-daniels-than-women today
12:21
<akirose>
i think we are
12:21
<littledan>
Shu's comment should precede mine
12:21
<littledan>
I guess scope = global object?
12:21
<shu>
yeah, it has to be global object
12:22
<littledan>
we hear some typing noise
12:22
<robpalme>
Realm!
12:22
<littledan>
I feel like... if tooling is responsible for configuring different files for different global environments, maybe there can be a solution on a tooling level for this. Magic comments?
12:23
<robpalme>
// @ts-realm:worker
12:23
<rbuckton>
I don't think `module` has ever been reserved? `package` is though.
12:25
<drousso>
oh hmmm
12:30
<littledan>
note that it's totally kosher in HTML to let something be postMessage'd but not IndexedDB-serialized
12:32
<littledan>
this is based on the forStorage argument of the serialization algorithm https://html.spec.whatwg.org/multipage/structured-data.html#serializable
12:33
<brad4d>
Daniel Rosenwasser - please add yourself with abbreviation to attendees in today's notes
12:33
<brad4d>
I've just updated your quotes in the notes doc to DRR (they were attributed to DRO by mistake)
12:33
<shu>
sffc: i had vision talk yesterday on your exact topic, IIUC
12:34
<akirose>
sffc: shu's slides for that were—and this is a bold statement—the best he's ever done
12:35
<robpalme>
that's not bold - it's fact
12:35
<shu>
sffc: https://docs.google.com/presentation/d/1kqtsJfLVC-Nmcm2sveMRdJPjurwKKiiCGilK2_ladpw/edit?usp=sharing
12:35
<shu>
can't claim credit for the theme, i found that theme
12:35
<sffc>
shu: cool! Yeah, I took a rain check for that part of the meeting. Thanks for flagging :)
12:36
<shu>
no worries, sorry if i implied any judgment about missing the meeting
12:37
<drousso>
i don't know if Surma is in IRC, but this is awesome and i'd love to help out if that's desired :)
12:40
<rbuckton>
I am also interested in this, especially in how shu wants to tie it in to concurrency as well as some of the ongoing discussions about typed objects.
12:44
<sffc>
"Vision for concurrent JS" looks really cool; I'm sorry I missed it! I'll read up on the notes
12:44
<littledan>
+100 for merging; this is a significant improving in clarifying and documenting our process
12:44
<michaelficarra>
oh boy, I did not know we were going to be agreeing to process doc changes today
12:45
<littledan>
the slides have been posted since before the deadline, indicating that they would ask for consensus
12:45
<robpalme>
this was raised in the previous meeting, michael
12:47
<littledan>
Yulia explained that there aren't substantial changes since last time
12:47
<michaelficarra>
I just thought it was another update
12:48
<littledan>
WeakRefs are a great example of why "rejected" is not a useful concept--I thought Waldemar was going to talk about this :)
12:49
<michaelficarra>
can't rejection just be a signal to the chairs to not allow something substantially similar to this be brought forward again?
12:49
<littledan>
I think "inactive proposals with documented objections" is a good way to represent this
12:49
<littledan>
I don't really understand what the role for chairs that you're proposing is
12:49
<robpalme>
notes from previous meeting:
12:49
<robpalme>
https://github.com/tc39/notes/blob/master/meetings/2020-09/sept-22.md#process-document-clarifications
12:50
<michaelficarra>
littledan: one of the primary responsibilities of the chairs is to decide what the committee does work on during plenary
12:59
<littledan>
+1 to improving documentation about the status of all the proposals, and doing post-mortem discussions as a committee, if this is what msaboff_ is proposing
13:00
<littledan>
I think this is a good thing to discuss in a future process discussion; I don't think it needs to be coupled to this one, which is focused on documenting our existing process
13:05
<chicoxyzzy>
+1
13:05
<chicoxyzzy>
also it would be nice to clarify https://github.com/tc39/process-document/issues/4#issuecomment-729657851
13:06
<shu>
msaboff_: interesting point, i think that depends on removal is wholesale removal or reworking the feature
13:07
<shu>
msaboff_: cf my removing subclassing proposal, which i'm taking through the staging process, but i don't really know what that means
13:10
<msaboff_>
littledan Documentation is part of what i was asking for, but I think we should acknowledge that some proposals will likely never advance.
13:10
<msaboff_>
shu I do agree with the point you just posted in TCQ
13:10
<shu>
cool
13:15
<michaelficarra>
mathiasbynens: do you know what Markus' preferred initials are?
13:15
<michaelficarra>
also please send a PR to delegates.txt or ask him to do so
13:18
<mathiasbynens>
it's already there; MWS
13:18
<mathiasbynens>
https://github.com/tc39/notes/pull/86
13:18
<michaelficarra>
oh I hadn't refreshed since the start of the meeting
13:18
<michaelficarra>
I see it now
13:18
<mathiasbynens>
👍🏻
13:20
<gibson042>
I love this capability, but resolving syntax seems like it's going to be difficult
13:21
<michaelficarra>
yeah, [a—b] already has a meaning
13:21
<mathiasbynens>
gibson042: depending on what syntax the committee would prefer, we could introduce a new flag
13:21
<gibson042>
:(
13:21
<Bakkot>
isn't this the unicode consortium has a recommendation for?
13:21
<mathiasbynens>
agreed we definitely don't wanna break back-compat
13:21
<msaboff_>
Yeah, I'm worrying about syntax as well.
13:21
<rbuckton>
Oniguruma uses `&&` for intersections in character classes
13:21
<Bakkot>
unicode consortium has so much stuff in their regexes
13:21
<rbuckton>
And `[]` for nested sets
13:22
<rbuckton>
https://github.com/kkos/oniguruma/blob/cd8357ff348a61084543afc87f7f685906c03d39/doc/RE#L205-L215
13:22
<mathiasbynens>
the syntax in the slides is what UTS18 + most implementations use, but UTS18 allows both `&&` and `&` iirc — I think whatever we choose we'd want to pick just one
13:23
<msaboff_>
I don't know is therre are any fully conforming implementations of the Unicode consortium suggested RegExp in UTS18 - https://unicode.org/reports/tr18/
13:23
<michaelficarra>
we only have ~1 person editing notes btw and they are getting a bit incomprehensible
13:23
<rbuckton>
`&` is problematic on its own, since `/a&b/` is already a valid RegExp. So is `&&` for that matter. If we used either we might need a flag to opt into the behavior
13:24
<mathiasbynens>
rbuckton: note that the problem is slightly smaller in scope, since only the syntax within [] would change
13:24
<mathiasbynens>
so not /a&b/ but /[a&b]/
13:24
<gibson042>
which also is already valid
13:24
<msaboff_>
rbuckton The syntax could be limited to inside character classes, which may make the syntax problem possibly easier.
13:25
<mathiasbynens>
gibson042: i know
13:25
<rbuckton>
Ah, yeah, that's true. And `[a&&b]` is less likely to exist due to the fact two `&` characters in a class is redundant.
13:25
<littledan>
I love that we keep working on making RegExps better in TC39
13:25
<mathiasbynens>
rbuckton: indeed. (but even the redundant form is valid so your point stands)
13:25
<wsdferdksl>
All of these are problematic. /[[0-9]]/ currently means a character class containing '[' or one of the ASCII digits, followed by a ']' character.
13:26
<msaboff_>
Wow, RexExp and readable in the same sentence!
13:26
<rbuckton>
littledan: I'm also considering bringing some RegExp features to TC39 in a future meeting
13:26
<wsdferdksl>
Also, /a--b/ means a range starting with 'a' and ending with a '-', or a 'b' character.
13:27
<littledan>
bterlson deserves a lot of the credit for kicking this off with his classic "RegExp buffet" presentation. There's still other things there that could be picked up! I wish I could find the slides. https://github.com/tc39/notes/blob/master/meetings/2015-11/nov-17.md#regexp-buffet
13:27
<wsdferdksl>
Sorry, meant /[a--b]/.
13:27
<gibson042>
unfortunately, the only reserved characters in a character class are `\` and `]` and `-`
13:27
<gibson042>
everything else just represents itself
13:27
<littledan>
one big thing that would be great in JS RegExps would be a template tag constructor form, so you could interpolate in literal strings or compose different RegExps
13:27
<mathiasbynens>
wsdferdksl: thanks for pointing out those examples. i think these show that we'd either need A) a flag or B) wildly different syntax that somehow doesn't have these problems
13:27
<rbuckton>
We may end up needing a flag, but I'd definitely use this.
13:28
<littledan>
if anyone is interested in championing that, I'd be happy to connect you to past discussions about it, do reviews, etc
13:28
<michaelficarra>
same, I am interested in a RegExp template tag
13:29
<littledan>
Can we invite `surma` here? He's in #tc39
13:29
<gibson042>
maybe ECMAScript can introduce a "U" flag for UTS18
13:29
<akirose>
Markus is looking for the mood of the committee, temperature check is open
13:29
<msaboff_>
Not another mode flag ;(
13:29
<gibson042>
I don't even know if I'm joking
13:29
<mathiasbynens>
`/./🇺`
13:30
<michaelficarra>
please no flags for this
13:30
<mathiasbynens>
michaelficarra: any ideas on how to avoid having to add a flag?
13:30
<mathiasbynens>
i can't think of syntax that would work off the top. would be great if there was a way
13:32
<michaelficarra>
yeah that's why I don't think this is good for syntax
13:32
<michaelficarra>
see my queue entry
13:33
<michaelficarra>
the pattern grammar doesn't have much room for extension without flags, and I really don't want to add a flag for every new (and infrequently used) regexp feature
13:34
<rbuckton>
we could theoretically come up with a "strict mode" flag for regexp and reserve a set of characters that give us room to expand the syntax inside of a regexp.
13:34
<michaelficarra>
who is this Mark that is speaking?
13:34
<msaboff_>
You could introduce new syntax using some existing \ escape (this makes the most sense for unicode flagged expressions where escapes as reserved).
13:34
<robpalme>
Markus Scherer is speaking
13:35
<gibson042>
possibly `/[\U…]/u`
13:35
<msaboff_>
I believe he represents Google in the Unicode Consortium
13:36
<msaboff_>
Sure or \U[...]
13:36
<gibson042>
yep
13:36
<gibson042>
I think this is possible
13:37
<robpalme>
I remain impressed with meeting attendance. We have 36 now.
13:40
<rbuckton>
I could see the `u` giving us this flexibility, with caveats. For example, intersection using `\I{A,B}`to intersect the character classes of A and B (i.e., `/[\I{\p{Letter},\p{Lowercase}}]/u`)
13:40
<rbuckton>
Not the prettiest, but its viable.
13:41
<sffc>
Mark is Mark E. Davis: https://en.wikipedia.org/wiki/Mark_Davis_(Unicode) -- I opened a PR to add his acronym MED: https://github.com/tc39/notes/pull/87
13:42
<shu>
i hope we didn't try to explain unicode to him
13:45
<littledan>
you have to be pretty good in a field to have a wikipedia page with a disambiguation naming that field
13:45
<msaboff_>
Isn't Mark E Davis the Unicode Editor or similar?
13:46
<msaboff_>
gibson042 Good on you to place syntax in TCQ!!!
13:47
<msaboff_>
RegExp pattern syntax at that.
13:47
<gibson042>
13:49
<mathiasbynens>
yeah that's Mark alright
13:49
<mathiasbynens>
he's only the President of the Unicode Consortium, nbd
13:50
<shu>
yeah but can he name every unpaired surrogate
13:51
<mathiasbynens>
U+D83D U+DE02
13:54
<mathiasbynens>
gibson042: or even `\U{{[A]--[B]}}` and `\U{{[A]&&[B]}}` etc.
13:55
<mathiasbynens>
heck we could even do `\UnicodeSet{…}`
13:56
<gibson042>
exactly
13:56
<mathiasbynens>
love it
14:00
<gibson042>
if Chrome can ship Scroll to Text Fragment as "#:~:text=prefix-,startText,endText,-suffix" and sleep at night, we can do this kind of damage
14:02
<mathiasbynens>
https://github.com/mathiasbynens/proposal-regexp-set-notation/issues/2
14:02
<Bakkot>
ok bedtime
14:02
<msaboff_>
Going to bed as well...
14:02
<Bakkot>
transcription worked noticibly better today than the last two days, I think!
14:04
<michaelficarra>
we officially hit 50 poages!
14:04
<michaelficarra>
*pages
14:05
<devsnek>
mathiasbynens but \U has to be the name of a unicode character
14:05
<devsnek>
\U{HEAVY BLACK CHECK MARK}
14:05
<mathiasbynens>
devsnek: this doesn't prevent us from doing that
14:06
<devsnek>
hmm I guess you're technically not wrong
14:06
<Bakkot>
Words 27759
14:06
<rbuckton>
we can use any unused escape in `u`-mode, so there's some flexibility here.
14:06
<devsnek>
my favourite part of the bible
14:08
<robpalme>
we use timestamps to track agenda items, e.g. mark 10:15-10:30.
14:09
<devsnek>
🙏
14:09
<devsnek>
thou shalt not share wet objects with dry realms
14:09
<robpalme>
one time i started using them to look up biblical references and freaked myles out by making up a super plausible psalm on consensus
14:10
<devsnek>
lol
14:14
<michaelficarra>
rbuckton: this is assuming you want this feature to only be usable in strict mode code
14:15
<rbuckton>
what feature? RegExp sets and intersections? I was talking about a strict-mode flag for RegExp, which apparently `u` satisfies.
15:29
<devsnek>
not strict enough
17:10
<ystartsev>
shu: regarding your question about intl enumeration, i got the following answer: "large API surface - we are entering the world of an API that will return 50-100 items depending on the "query" that are all fingerprintable and the very intention of the API is to let apps adjust their behavior depending on the returned values. Which means that changes to what we return may become web-compat issues."
17:54
<gibson042>
devsnek: in what sense is /u not strict enough? Tokenization is not affected by introduction of a new backslash sequence.
18:29
<devsnek>
gibson042: it allows annex b
18:43
<gibson042>
which doesn't affect tokenization AFAICT, and the relevant changes to the regular expression grammar are strictly applied to non-/u expressions (which is why `(/\U[\p{N}]/u)` is a SyntaxError while `(/\U[\p{N}]/)` is not)
18:44
<Bakkot>
yeah, to quote: "none of these [Annex B] extensions change the syntax of Unicode patterns recognized when parsing with the [U] parameter present on the goal symbol."
21:03
<shu>
ystartsev: thanks, is that... implementation difficulty?
21:03
<shu>
those sound like valid concerns, but not implementability concerns
21:06
<rkirsling>
true web compat in the presence of changing locale data is probably an impossible dream anyway
21:11
<rkirsling>
(which isn't to say it would stop users from submitting bugs based on naive assumptions of stability though)
21:22
<bradleymeck>
rkirsling: swapping locales generally requires restarting browsers already
21:23
<rkirsling>
oh, I didn't even mean default locale
21:24
<rkirsling>
like, so many of the intl402 tests in test262 are basically CLDR regression tests, even though ECMA-402 itself doesn't care what locale data you actually have available