00:00:31
| * AtumT | quit (Quit: AtumT) |
00:12:02
| * gibson042 | joined |
00:49:34
| * annevk | quit (Remote host closed the connection) |
00:49:34
| * linclark | quit (Remote host closed the connection) |
00:49:34
| * zbraniecki | quit (Remote host closed the connection) |
01:17:48
| * aki_ | joined |
01:18:46
| * akirose | quit (Ping timeout: 272 seconds) |
01:18:47
| * aki_ | changed nick to akirose |
01:46:56
| <devsnek> | does it bother anyone else that there's this inconsistency in having "Own" in the names of object internal slots |
01:47:03
| <devsnek> | and that its inverted for the names exposed on Object |
02:38:28
| * zbraniecki | joined |
02:45:21
| * zbraniecki | quit (Remote host closed the connection) |
03:23:01
| * aki_ | joined |
03:24:22
| * akirose | quit (Ping timeout: 268 seconds) |
03:24:22
| * aki_ | changed nick to akirose |
03:32:07
| * annevk | joined |
03:49:04
| * zbraniecki | joined |
03:52:26
| * linclark | joined |
03:56:06
| * tschneidereit | joined |
04:36:08
| * jmdyck | quit (Remote host closed the connection) |
04:36:30
| * gibson042 | quit (Ping timeout: 264 seconds) |
04:39:21
| <ljharb> | devsnek: yes |
04:39:33
| <ljharb> | devsnek: i'm suggesting that it start out as an accessor descriptor with a getter of %ThrowTypeError% |
04:39:50
| <devsnek> | oh |
04:39:51
| <ljharb> | and then later it would change to a data property, once it was out of tdz |
04:39:57
| <devsnek> | that sounds hecky |
04:40:04
| <ljharb> | or, we could make a special kind of descriptor that's "everything but get/set/value" |
04:40:09
| <ljharb> | and *that* wouldn't be TDZ'd |
04:40:50
| <devsnek> | decisions like this remind me of the existence of double-equals |
04:41:14
| <devsnek> | although i'll be honest i was considering a new primitive "empty" type :P |
04:43:00
| <devsnek> | i think a better thing might be to take a look at the general property logic we have going on in the spec rn |
04:52:14
| <Bakkot> | the problem with that plan is that you can actually reify the accessor functions, which is :( |
04:52:17
| <Bakkot> | (cf https://github.com/tc39/ecma262/issues/1209#issuecomment-392910280 ) |
04:56:21
| <ljharb> | Bakkot: you can already reify ThrowTypeError tho |
04:56:27
| <ljharb> | so this would just be exposing it in yet another place |
04:56:49
| <ljharb> | Bakkot: note that i'm not saying it should be a getter/setter once out of the TDZ |
04:57:02
| <ljharb> | i'm saying it should be reconfigured from accessor to data as part of the module being evaluated |
05:00:07
| <Bakkot> | ah, hm |
05:01:42
| <Bakkot> | except they're non-configurable, and non-configurable things aren't supposed to switch from being accessors to data properties |
05:02:14
| <Bakkot> | that's one of the invariants for exotic objects: https://tc39.github.io/ecma262/#sec-invariants-of-the-essential-internal-methods |
05:02:31
| <Bakkot> | "If P's attributes other than [[Writable]] may change over time or if the property might disappear, then P's [[Configurable]] attribute must be true" |
05:02:55
| <Bakkot> | (of course, proxies can violate that _anyway_, but it still seems like maybe a bad thing) |
05:08:26
| <ljharb> | Bakkot: could we make propertyIsEnumerable work, even though a descriptor isn’t accessible? |
05:09:08
| <ljharb> | like provide a way to check enumerability without needing to get at the whole descriptor |
05:09:14
| <ljharb> | or would that be a major reworking |
05:09:25
| <Bakkot> | We'd have to special case module exotic objects, I think, which in principle is not something allowed by the MOP |
05:09:31
| <Bakkot> | (or extend the MOP, but that's even worse) |
05:10:01
| <Bakkot> | but I'd be ok with it personally; no one in the whole world knows about the MOP, and the intuition that for-in over a module object should work is reasonable |
05:10:10
| <ljharb> | yeah i agree |
05:10:55
| <Bakkot> | though, it might interfere weirdly with proxies for module namespace exotic objects |
05:11:24
| <Bakkot> | e.g. unless we also special case proxies for them, you'd be able to for-in over a namespace object but not a proxy for the namespace object |
05:20:19
| <devsnek> | what is the MOP lol |
05:24:20
| <Bakkot> | meta-object protocol |
05:25:00
| <Bakkot> | Basically all the [[GetOwnProperty]] stuff. |
05:25:04
| <devsnek> | ok |
05:25:50
| <devsnek> | well i think the MOP needs a mop-up |
05:29:39
| * aki_ | joined |
05:30:00
| * akirose | quit (Ping timeout: 252 seconds) |
05:30:00
| * aki_ | changed nick to akirose |
05:56:38
| <rkirsling> | incidentally I have a GH issue opened to add MOP to our nascent glossary |
05:59:47
| <rkirsling> | because it's thrown around as if it were common CS verbiage but it's really a CLOSism so kind of a "you gotta know what a crumpet is to understand cricket" kinda situation |
07:35:49
| * aki_ | joined |
07:37:30
| * akirose | quit (Ping timeout: 272 seconds) |
07:37:31
| * aki_ | changed nick to akirose |
07:52:17
| * pchan | joined |
07:55:22
| <pchan> | hi |
07:56:01
| <pchan> | got questions. Could anyone please reply? |
09:42:38
| * aki_ | joined |
09:42:54
| * akirose | quit (Ping timeout: 272 seconds) |
09:42:55
| * aki_ | changed nick to akirose |
09:43:42
| * pchan | quit (Ping timeout: 252 seconds) |
11:50:21
| * aki_ | joined |
11:50:39
| * akirose | quit (Ping timeout: 268 seconds) |
11:50:39
| * aki_ | changed nick to akirose |
11:54:45
| * jmdyck | joined |
12:54:34
| * AtumT | joined |
13:56:31
| * aki_ | joined |
13:57:06
| * akirose | quit (Ping timeout: 252 seconds) |
13:57:07
| * aki_ | changed nick to akirose |
15:40:20
| * A_D28 | joined |
15:41:33
| * A_D28 | quit (Killed (Sigyn (Spam is off topic on freenode.))) |
16:03:43
| * aki_ | joined |
16:04:09
| * akirose | quit (Ping timeout: 252 seconds) |
16:04:10
| * aki_ | changed nick to akirose |
16:14:12
| <devsnek> | what if there were a pr to rename stuff like [[DefineOwnProperty]] to [[DefineProperty]] |
16:32:26
| * Bakkot | quit (Ping timeout: 252 seconds) |
17:06:36
| <devsnek> | why is `The result List must contain the keys of all non-configurable own properties of the target object.` an invariant of the ownKeys trap |
17:06:53
| <devsnek> | whats the point of the ownKeys trap even existing in this case |
17:08:50
| <ljharb> | ordering? |
17:09:10
| <devsnek> | whats the point of the invariant |
18:09:58
| * aki_ | joined |
18:11:08
| * akirose | quit (Ping timeout: 268 seconds) |
18:11:08
| * aki_ | changed nick to akirose |
19:32:54
| * gibson042 | joined |
20:18:06
| * aki_ | joined |
20:18:10
| * akirose | quit (Ping timeout: 268 seconds) |
20:18:16
| * aki_ | changed nick to akirose |
22:25:18
| * akirose | quit (Ping timeout: 252 seconds) |
22:26:19
| * akirose | joined |
23:24:17
| * AtumT_ | joined |
23:25:30
| <TimothyGu> | devsnek: the keyword is non-configurable |
23:26:17
| <devsnek> | TimothyGu: yeah i saw that in there |
23:26:21
| <TimothyGu> | this is important for the web security model for example, specifically with the [Unforgeable] Web IDL annotation |
23:27:37
| <TimothyGu> | what's interesting IMO (and a bit annoying) is that Proxy's invariant enforcers are actually stricter than the spec invariants |
23:27:43
| <devsnek> | i was going to say "if i'm willing to use every trap to simulate a different object why can't i xxx" but then it occured to me |
23:27:50
| <devsnek> | at that point i can just not put the original object as the target |
23:28:08
| * AtumT | quit (Ping timeout: 272 seconds) |
23:28:30
| <TimothyGu> | sure but you still need to respect Object.defineProperty(proxy, …, { configurable: false }) |
23:28:44
| <TimothyGu> | i.e., either make it work or throw an exception |
23:29:58
| <devsnek> | just trying to figure out a nice way to inspect values in engine262 |
23:30:11
| <devsnek> | all the traps that mutate throw/return false so thats not a problem |
23:37:31
| * AtumT | joined |
23:39:12
| * AtumT_ | quit (Ping timeout: 268 seconds) |