09:18
<Andreu Botella>
Hey, I noticed that the spec says [[IsLockFree1]] and [[IsLockFree2]] must be set for an agent cluster and can't change, but it doesn't say anything about [[IsLockFree8]]
09:19
<Andreu Botella>
I thought this must have been intentional, but then I realized that BigInt64Array was of course added after the rest of TypedArrays
09:19
<Andreu Botella>
so was this an oversight? or is it intended for some reason?
09:20
<Andreu Botella>
also, there are two notes on the meaning of those slots that seem to contradict each other
09:21
<Andreu Botella>
9.7 says they're set "if atomic operations on 1/2/8-byte values are lock-free", "if an atomic operation is implemented with any type of lock the operation is not lock-free"
09:21
<Andreu Botella>
but the note in the definition of Atomics.isLockFree() says
09:22
<Andreu Botella>

if the atomic step of an atomic primitive [...] on a datum of size n bytes will be performed without the surrounding agent acquiring a lock outside the n bytes comprising the datum, then Atomics.isLockFree(n) will return true

09:22
<Andreu Botella>
those don't seem to be equivalent
09:24
<Andreu Botella>
I don't know too much about memory models, so I might very well be missing stuff, but if so, that could use more clarification
09:28
<annevk>
Andreu Botella: there are some (or maybe just one) open issues around the memory model, though I don't recall seeing this particular one being raised
09:29
<annevk>
In general the formality around agents also leaves a lot to be desired (also filed)
13:59
<annevk>
Has Map.prototype.extend() or equivalent ever been discussed?
16:03
<shu>
Andreu Botella: sounds like an oversight to me
16:36
<shu>
those are both in non-normative notes, but they also seem roughly equivalent to me for building intuition
16:37
<shu>
can you expand on what the confusion is?
16:37
<Andreu Botella>
one is "atomic operations of size n will be performed without acquiring a lock, at all", the other is "without acquiring a lock outside of those specific n bytes"
16:38
<shu>
agreed the second one is more confusing, don't recall why we called out "specific N bytes", that doesn't seem useful to call out
16:39
<shu>
our original intention of the meaning of "lock-free" is the formal one
16:40
<shu>
i.e. isLockFree(n) means n-byte atomics guarantees progress for at least 1 thread after bounded time when T threads are concurrently accessing the same memory via n-byte atomics
16:40
<shu>
and for notes we just want to say "don't actually worry about that formalism, just think of it as not using mutexes to implement"
17:02
<yulia>
What's needed to get an event on the TC39 calendar?
happy to give you access. i just need your email.
19:21
<ljharb>
Has Map.prototype.extend() or equivalent ever been discussed?
what would that do?