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> |
|
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? |
19:21 | <ljharb> | Has Map.prototype.extend() or equivalent ever been discussed? |