00:27:09  * akirosejoined
00:31:01  * akirosequit (Client Quit)
01:33:19  * akirosejoined
01:34:20  * akirosequit (Client Quit)
03:59:36  * not-an-aardvarkjoined
04:04:48  * jmdyckquit (Remote host closed the connection)
04:37:15  * akirosejoined
05:06:38  * akirosequit (Quit: 👋🏻)
06:04:45  * bttfquit (Ping timeout: 256 seconds)
06:06:48  * bttfjoined
06:09:15  * not-an-aardvarkquit (Quit: Connection closed for inactivity)
06:23:55  * vikash-afkquit (Remote host closed the connection)
06:38:49  * vikash-afkjoined
06:45:03  * akirosejoined
06:46:40  * akirosequit (Client Quit)
06:52:10  * akirosejoined
06:54:09  * akirosequit (Client Quit)
06:58:39  * akoserwa|wfhjoined
10:25:09  * mylesborinsquit (Quit: farewell for now)
10:25:18  * mylesborinsjoined
11:05:11  * jmdyckjoined
12:26:42  * akoserwa|wfhquit (Remote host closed the connection)
12:27:11  * akoserwa|wfhjoined
13:59:16  * AtumTjoined
15:59:51  * arkainquit (Ping timeout: 252 seconds)
16:10:37  * akoserwa|wfhquit (Quit: Leaving)
16:13:12  <devsnek>does the spec ever have optimisations in it
16:13:35  <devsnek>like how an engine might have JavaScriptSymbol.IsGlobal() instead of searching the global symbol registry each time
16:14:33  <bradleymeck>devsnek: generally not since it is intended to be about behavior
16:14:42  <bradleymeck>it does sometimes call out when an optimization is expected though
16:14:46  <IgnoredAmbience>It has shorthand optimisations
16:15:11  <IgnoredAmbience>Which is optimising for size of spectext rather than complexity
16:15:41  <devsnek>if a change duplicates spec text should it be abstracted into an abstract op
16:16:01  <bradleymeck>if the intent is the same and reused, ideally
16:16:37  <bradleymeck>duplication when the intent is not a common operation and is algorithm specific probably should not be abstracted
16:17:18  <devsnek>we iterate through the global symbol registry three times in the spec
16:17:53  <IgnoredAmbience>Running through my interpreter, the number of times that to/from property descriptor is called is rather staggering
16:18:20  <devsnek>each one is different like "if e.[[Symbol]] is argument then return true" and "if e.[[Symbol] is argument then return e.[[Symbol]]"
16:18:24  <IgnoredAmbience>Especially painful when my debugger didn't support stepping over functions
16:18:37  <devsnek>heh
16:19:19  <devsnek>what do we call a symbol that is in the global registry
16:19:25  <devsnek>a global symbol?
16:20:10  <ljharb>devsnek: i don't think there's a single terminology for it, but "global symbol" is one i've used before
16:20:35  <devsnek>i'm gonna call this IsGlobalSymbol
16:20:40  <ljharb>and yeah i agree that iterating through the global symbol registry is a good abstract op
16:20:57  <ljharb>maybe `IsGlobalRegistrySymbol`, to be verbose
16:24:18  <bradleymeck>IgnoredAmbience: is your debugger public (i've not touched your stuff)
16:25:01  <IgnoredAmbience>Yes, but somewhat broken
16:25:23  <IgnoredAmbience>https://jscert.github.io/jsexplain/branch/es2016-proxies/driver.html
16:26:17  <devsnek>is there ever a case where the global symbol registry's [[Key]] is different from a symbol's [[Description]]
16:26:31  <IgnoredAmbience>That passes test262 for Proxy support, upto the implemented subset of the language. The interpreter is a fresh rewrite of new spectext bolted to an older ES5 implementation.
16:28:46  <devsnek>could we just make GlobalSymbolRegistry hold a list of symbols instead of these records
16:35:21  <devsnek>just getting rid of the weird record makes this a lot simpler https://gc.gy/673504009.png
16:46:16  <TimothyGu>devsnek: I don't think there are cases right now where [[Key]] differs from [[Description]]
16:46:28  <TimothyGu>but having a separate [[Key]] is clearer to the implementor
16:46:36  <TimothyGu>i.e., "use a hash table here"
16:46:39  <devsnek>it just seems like a weird abstraction to me
16:46:48  <devsnek>hmm that could be true
16:46:58  <devsnek>we should probably change from using a List in the spec then
16:47:02  <devsnek>right now its in limbo
16:47:38  <TimothyGu>nah List is the only spec type the spec has right now
16:47:46  <TimothyGu>and it's the easiest way to abstract it
16:51:54  <devsnek>isn't Record the map equiv to List
16:53:25  <TimothyGu>nah, Record has fixed keys
16:54:21  <TimothyGu>but a List of Records with "key, value" as fields sounds like a hash table to me
17:50:10  * jwaldenjoined
18:06:29  * AtumT_joined
18:08:04  * AtumTquit (Ping timeout: 256 seconds)
18:09:01  <Domenic>Solution: 262 should use https://infra.spec.whatwg.org/#data-structures
18:10:37  <devsnek>i'm all for it
18:18:01  * AtumTjoined
18:18:12  <rkirsling>so clean and purty 😍
18:19:30  * AtumT_quit (Ping timeout: 244 seconds)
19:36:31  <TabAtkins>I <3 Infra
19:36:54  <TabAtkins>(But yeah, Record is Infra's "tuple".)
20:58:43  <jmdyck>Record is more like Infra's "struct".
20:59:38  <jmdyck>since a Record's fields don't have a defined order.
21:22:45  <devsnek>so how do we steal the abstract maps from infra
21:32:09  <TabAtkins>Ah, you're right.
21:32:23  <TabAtkins>devsnek: Just rebase all the algorithms onto a new abstract type system, easy peasy.
21:32:57  * akirosejoined
21:39:49  <jmdyck>I'm willing to do the edits, if the TC wants it to happen.
21:40:24  <devsnek>i've started trying to ink it in
21:40:37  <devsnek>inventing a new literal syntax is the hard part so far
21:40:56  <devsnek>https://gc.gy/691851363.png
21:41:12  <ljharb>let's not be too hasty with massive changes :-p
21:41:15  <TabAtkins>All the Infra types have a literal syntax already
21:41:56  <devsnek>their literal syntax does stuff we don't
21:42:06  <TabAtkins>Ah, sorry, structs don't have literal syntax.
21:42:41  <devsnek>ljharb: not like i can commit this directly into 262 :P
21:44:47  <rkirsling>you can make a proof of concept called the snekspec
21:45:00  <devsnek>heh
21:45:03  <jmdyck>(To clarify, I wasn't talking about just abstract maps, but all (or most, or whatever is wanted) of Infra.)
21:51:57  * cloudshujoined
21:55:20  <devsnek>hmm using key/value pairs for the global symbol registry still feels awkward
23:40:17  * akirosequit (Ping timeout: 248 seconds)
23:41:48  * akirosejoined
23:48:20  * gkatsevquit (Remote host closed the connection)