00:09:03  <devsnek>toString revision made stage 4?
00:13:44  * brabquit (Remote host closed the connection)
00:18:28  * msaboffquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
00:34:06  * keith_millerjoined
00:34:59  * keith_millerquit (Client Quit)
00:35:52  * keith_millerjoined
00:47:54  * keith_millerquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
01:08:33  * natashenkajoined
01:15:12  * me1000joined
01:27:33  * me1000quit (Quit: Textual IRC Client: www.textualapp.com)
01:54:44  * natashenkaquit (Ping timeout: 268 seconds)
01:56:25  * keith_millerjoined
01:58:12  * keith_mi_joined
02:00:50  * keith_millerquit (Ping timeout: 246 seconds)
02:02:27  * keith_mi_quit (Ping timeout: 240 seconds)
02:04:16  * keith_millerjoined
02:10:38  * keith_millerquit (Remote host closed the connection)
02:11:16  * keith_millerjoined
02:12:34  * cloudshuquit (Quit: Connection closed for inactivity)
02:14:08  * natashenkajoined
02:22:54  * jridgewellquit (Quit: Connection closed for inactivity)
02:27:07  * keith_millerquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
02:38:26  * keith_millerjoined
02:54:44  * keith_millerquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
03:05:18  * natashenkaquit (Ping timeout: 252 seconds)
03:10:51  <rkirsling>devsnek: yup
03:11:15  <devsnek>woo
04:56:36  * jmdyckquit (Quit: Leaving.)
06:15:58  * jwaldenquit (Quit: ChatZilla 0.9.92-rdmsoft [XULRunner 35.0.1/20150122214805])
06:32:08  * dilijevjoined
06:35:07  <dilijev>https://freenode.logbot.info/tc39 says #tc39 is not logged
06:35:13  <dilijev>did something break?
06:36:27  <dilijev>Looks like http://logs.nodejs.org/tc39/latest still has them
06:36:36  <dilijev>Does the topic have the wrong link?
06:37:45  <dilijev>popped in to say thanks to @rwaldron for merging the eshost-cli stuff. I'm publishing the latest version tag to npm
07:29:15  * jwaldenjoined
09:11:54  * dilijevquit (Quit: Connection closed for inactivity)
10:48:48  * Bakkotquit (Ping timeout: 245 seconds)
10:52:18  * Bakkotjoined
11:21:12  * AtumTjoined
11:38:25  * jwaldenquit (Quit: ChatZilla 0.9.92-rdmsoft [XULRunner 35.0.1/20150122214805])
12:33:39  * Bakkotquit (Ping timeout: 246 seconds)
12:40:38  * DTGjoined
12:40:38  * douglasgordonjoined
12:41:03  * Bakkotjoined
12:44:54  * DTGquit (Ping timeout: 250 seconds)
12:44:55  * douglasgordonquit (Ping timeout: 250 seconds)
13:18:54  * AtumTquit (Quit: AtumT)
13:43:00  * jmdyckjoined
14:07:09  * gibson042joined
14:36:58  * DTGjoined
14:36:58  * douglasgordonjoined
14:42:26  * keith_millerjoined
14:45:18  * kverrierquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
14:51:12  * keith_millerquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
15:01:42  * gibson042quit (Quit: Leaving.)
15:05:25  * gibson042joined
16:15:39  * douglasgordonquit (Remote host closed the connection)
16:20:16  * DTGquit (Ping timeout: 250 seconds)
16:31:27  * gibson042quit (Ping timeout: 240 seconds)
16:42:00  * keith_millerjoined
16:46:32  * keith_millerquit (Remote host closed the connection)
16:47:03  * keith_millerjoined
16:49:37  * DTGjoined
16:49:43  * douglasgordonjoined
16:56:20  * keith_millerquit (Remote host closed the connection)
16:57:59  * keith_millerjoined
17:47:10  * kverrierjoined
17:47:22  * keith_millerquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
18:01:30  * keith_millerjoined
18:03:36  * ephemera_quit (Ping timeout: 268 seconds)
18:06:14  * kverrierquit (Quit: Textual IRC Client: www.textualapp.com)
18:22:45  * arkainjoined
18:28:11  * cloudshujoined
18:31:46  * arkaininvites all for opinions about 2 proposals: https://github.com/rdking/proposal-safe-prototype & https://github.com/rdking/proposal-known-keys
18:34:28  <devsnek>i've read through the safe prototype thing like three times and i still have no idea what it does
18:35:23  <devsnek>but `Any object attached to the prototype of a function is flagged as a prototype object.` this sounds like a bit of an issue
18:36:34  * keith_millerquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
18:43:38  * gibson042joined
18:53:14  <arkain>The basic idea is to treat object properties of flagged prototype objects as primitives when they are referenced from an inheriting object.
18:54:13  <arkain>If given this `var a = { alpha: 1, __proto__: { beta:2, gamma: { delta: 4}}}`
18:54:50  <arkain>you'd expect that after `a.beta = 3`, that there would be an own property `beta` on a, right?
18:55:37  <ljharb>and there will be
18:55:45  <arkain>What this does is make it so that if you do `a.gamma.delta=5`, there would now be an own property gamma, with an own property delta on a.
18:55:57  <arkain>but only under certain conditions.
18:58:00  <arkain>From T.J. Crowder's and ljharb's initial suggestions, I made changes so the trigger to the behavior modifications is a well-known Symbol, with another well-known Symbol to block the new behavior entirely.
18:59:04  <arkain>The example code in the README.md can be copied and pasted into Chrome debugger if you want to see how it's (more or less) supposed to work.
19:00:09  <ljharb>what happens when someone assigns to a property on that well-known symbol when the symbol is inherited
19:00:23  * keith_millerjoined
19:00:34  <ljharb>does the temporarily created object box get copied to be an own property on the object being [[Set]] on?
19:00:52  <ljharb>ie, they'd end up with `Object(Symbol.safeProto)` with their extra property added?
19:01:05  <ljharb>what about when they assign to a property of any primitive, really
19:01:48  <arkain>I may need to modify the example, but the well known symbol is supposed to be removed on [[Set]].
19:02:09  <devsnek>prototypes are just objects though
19:02:17  <ljharb>no i mean like, `const obj = { __proto__: { [Symbol.safeProto]: true } }; obj[Symbol.safeProto].a = 1;`
19:03:10  <ljharb>do i end up with the equivalent of `const obj = { [Symbol.safeProto]: Object.assign(Object(true), { a: 1 }), __proto__: { [Symbol.safeProto]: true } };`?
19:03:12  <arkain>Wouldn't that just throw since Obj[Symbol.safeProto] is not an object?
19:03:23  <ljharb>not in sloppy mode
19:03:41  <ljharb>it creates a temporary object by boxing the primitive, assigns to it, and then discards the object
19:03:58  <ljharb>so i'm asking if your copy-on-write semantics would copy that temporary object to be an own property
19:04:49  <rwaldron>Sorry for dropping this in the middle of the "safe proto" discussion, but I started with https://github.com/rdking/proposal-known-keys and have read through it twice. I don't see where the word "known" in the context of "known keys" is defined.
19:04:53  <arkain>Yes, the temporary object becomes the new permanent instance-specific copy, but without the Symbol.SafeProto property.
19:05:18  <devsnek>rwaldron: the intention seems to be accessible keys instead of own keys
19:06:05  <rwaldron>Sure, I figured as much, but no clearly stated definition of that concept exists in the proposal sketch ¯\_(ツ)_/¯
19:06:25  <arkain>rwaldron: I probably need to add that to the readme, but the idea is that if (prop in obj) then prop will appear in Object.knownKeys()
19:06:34  <devsnek>rwaldron: while you're here, hows the eshost addition going
19:06:56  <arkain>... if it's enumerable
19:07:39  <rwaldron>devsnek I'm actually writing something up right now
19:07:47  <devsnek>👌
19:07:50  <rwaldron>basically a "needs list"
19:08:11  <rwaldron>It's stuff that's probably easy for you to bang out, I just wanted to collect it in one spot :D
19:08:20  <devsnek>cool
19:08:43  <devsnek>80% chance "fix mop" is on the list :P
19:09:20  <rwaldron>lol, no (not yet anyway)
19:09:39  * ephemera_joined
19:13:08  <arkain>Just added removal of the Symbol.SafeProto property on copyback.
19:15:26  <rwaldron>devsnek https://github.com/devsnek/engine262/issues/23
19:15:39  <rwaldron>But, I have to leave now!
19:15:47  <rwaldron>Have a great day!
19:16:06  <devsnek>👋
19:24:03  * keith_millerquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
19:26:00  <arkain>rwaldron: care to check known-keys again. I just gave something of a definition for known.
19:26:16  * keith_millerjoined
19:26:53  <arkain>ljharb: did I manage to answer your question?
19:33:04  <ljharb>arkain: no, the safeProto symbol wasn't the question
19:33:09  <ljharb>let me try another code sample
19:33:10  <arkain>wait. now I think I understand what you were asking. Since in sloppy mode, the assignment is simply shrugged off, no operation is actually performed.
19:33:25  <arkain>so the copy never happens
19:33:30  <ljharb>i believe the operation is performed; a setter on the primitive prototype will be invoked
19:33:42  <ljharb>but i might be wrong
19:33:52  <arkain>I just tried it. The setter doesn't trigger
19:35:44  <ljharb>arkain: i ran `Object.defineProperty(Number.prototype, 'a', { configurable: true, set(v) { console.log('setter', v); } }); 1.2.a = 3;` in a browser console and it triggers for me
19:36:29  * michaelficarrajoined
19:37:18  <arkain>Try copying the example from the readme and adding your test case.
19:37:32  <arkain>When I tried it, the copy didn't happen.
19:37:43  <arkain>That would be correct behavior
19:38:32  <ljharb>and if i do `Number.prototype[Symbol.safeProto] = true` first?
19:39:01  <arkain>Btw, the difference between what you said before and this new example is that you created a new property for Number first. Then you accessed something that exists. In that case, it would trigger.
19:40:16  <ljharb>ok so what would happen with a prototype property that exists (an object) that had a primitive as a value where the primitive's prototype had safeProto, and then i assigned a property to that primitive
19:40:32  <ljharb>would the object end up copied to the instance, with the number value replaced by the boxed number?
19:40:39  <arkain>If you changed the value assigned to that SafeProto property, then it would trigger. If you tried to set a non-existent property on a non-object, it won't trigger
19:41:07  * michaelficarraquit (Ping timeout: 246 seconds)
19:41:12  <ljharb>i'm asking about what happens when it triggers
19:41:22  <arkain>.... but I think you pointed out something I need to fix in the example. The temp objects need SafeProto to be non-writable.
19:42:24  * dilijevjoined
19:42:46  <arkain>If the copy happens, then the value that was set at the time of copy would be the surviving value. Since setting the property caused the value to be boxed, then yes, the copy would contain the boxed value.
19:43:59  <arkain>Again, play with the example in the readme. It's fairly accurate to what I want to happen (when dealing with plain objects)
19:58:56  <arkain>ljharb: I just tried what you described in chrome debugger and ran into 2 issues
20:00:55  <arkain>1. If you don't add the needed property to the prototype of a primitive wrapper, you just get an error. Even in sloppy mode.
20:03:16  <arkain>2. Even if you did that, and this proposal were active, `1.2.a = 3` would box `2`, set `2.a = 3`, then try to set `2` on `1` which doesn't have the property `2` so it would fail. Even if you also add `2` as a property, `1` would get boxed, `1.2` would get set, then it would all be thrown away.
20:04:50  <arkain>I could probably give you a more satisfying response if you at least start with a variable holding an object with a prototype.
20:08:56  <ljharb>wait what? 2 on 1?
20:09:00  <ljharb>1.2 is the number 1.2
20:10:06  <arkain>ok... Thinking wrong... The 1st 2 parts still hold.
20:10:32  <arkain>1.2 gets boxed, a gets set on that box, but there's no object to copy that back to.
20:11:06  <arkain>You have to start with an object that has a flagged prototype
20:11:41  <arkain>Notice that, in the example, the new behavior is bypassed if you directly fetch the prototype object.
20:51:42  * keith_millerquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
20:53:34  * keith_millerjoined
21:05:12  * douglasgordonquit (Remote host closed the connection)
21:09:13  * DTGquit (Ping timeout: 268 seconds)
21:14:28  * jwaldenjoined
21:31:22  * gibson042quit (Quit: Leaving.)
21:38:47  * keith_mi_joined
21:46:07  * douglasgordonjoined
21:46:07  * DTGjoined
21:47:50  * cloudshuquit (Quit: Connection closed for inactivity)
21:50:27  * dilijevquit (Quit: Connection closed for inactivity)
22:08:49  <devsnek>rwaldron: is this good enough for what you need?
22:08:51  <devsnek>https://github.com/devsnek/engine262/blob/master/bin/engine262.js#L25
22:33:44  * douglasgordonquit (Remote host closed the connection)
22:37:16  * DTGquit (Ping timeout: 250 seconds)
22:44:03  <devsnek>am i going crazy https://gc.gy/11322805.png
22:54:27  * bpaytonjoined
23:55:12  * keith_millerquit (Quit: My MacBook has gone to sleep. ZZZzzz…)