00:13:40  * bradleymeckjoined
00:34:35  * Fishrock123quit (Remote host closed the connection)
00:35:15  * Fishrock123joined
00:35:21  * Fishrock123quit (Remote host closed the connection)
00:52:23  * bradleymeckquit (Quit: bradleymeck)
00:52:42  * Fishrock123joined
00:53:20  * Fishrock123quit (Remote host closed the connection)
00:54:30  * Fishrock123joined
00:58:35  * Fishrock123quit (Ping timeout: 240 seconds)
01:02:06  * Fishrock123joined
01:17:45  * Fishrock123quit (Remote host closed the connection)
01:37:10  * AtumTquit (Remote host closed the connection)
01:56:35  * bradleymeckjoined
02:16:55  * bradleymeckquit (Quit: bradleymeck)
02:23:08  <wycats>I basically know the issues but I am skeptical
02:23:15  <wycats>Sorry for being cryptic on Twitter
02:23:23  <wycats>I was back channelling with some ppl
03:01:34  * not-an-aardvarkjoined
04:07:19  * caridyquit (Read error: Connection reset by peer)
04:07:51  * caridyjoined
04:34:10  * howdoijoined
04:36:09  * jmdyckquit (Quit: Leaving.)
05:39:13  * gibson042quit (Ping timeout: 248 seconds)
05:46:07  * gskachkovquit (Quit: gskachkov)
08:23:54  * gskachkovjoined
09:08:39  * caridy_joined
09:10:10  * caridyquit (Ping timeout: 240 seconds)
10:25:11  * mylesborinsquit (Quit: farewell for now)
10:25:42  * mylesborinsjoined
10:37:06  * abernixjoined
11:11:03  * jmdyckjoined
11:11:17  * not-an-aardvarkquit (Quit: Connection closed for inactivity)
11:28:00  <littledan>I could imagine some ugly overloadings to make this sort of thing possible. For example, if a class decorator is a function, add that as a finisher, otherwise if it's an object with a "decorator" property, take that as the new-style decorator
12:14:32  * bradleymeckjoined
13:26:25  * bradleymeckquit (Quit: bradleymeck)
13:41:52  * d_runquit (Excess Flood)
13:42:09  * d_runjoined
13:43:36  * bradleymeckjoined
13:50:41  * AtumTjoined
14:04:20  * Fishrock123joined
14:14:34  <bradleymeck>are BOMs valid source text?
14:18:10  <bradleymeck>nm found it
14:27:42  * Fishrock123quit (Remote host closed the connection)
14:35:48  * Fishrock123joined
14:46:20  <wycats>littledan: the key thing for me is that the kind of decorators they want are allowed to completely hide the class elements
14:46:21  * gskachkovquit (Read error: Connection reset by peer)
14:46:40  <wycats>They don't want constructor replacement *and* assigning the statics and proto to it
14:46:54  <wycats>Which is the thing that's the most crazy
14:46:54  <littledan>what do they want to do, make an instance of the class and hold that as a private field?
14:47:11  <littledan>do you have a link to an example?
14:47:31  <wycats>They have a "higher order" pattern where they construct a new class that instantiates the inner with some kind of dependency
14:47:42  <wycats>And then implements the component protocol to delegate to it
14:47:51  <wycats>I can try to see if I can find the best example
14:47:55  <wycats>Adam Rackis gave me some
14:48:22  <wycats>They could in theory just use a function but ironically React people have come to really like decorator syntax
14:48:46  <wycats>Mostly I feel like championing this because I feel bad that I didn't catch this consequence of the earlier change
15:08:12  * howdoiquit (Quit: Connection closed for inactivity)
15:22:08  * gibson042joined
15:30:19  * Fishrock123quit (Remote host closed the connection)
15:37:13  * gibson042quit (Quit: Leaving.)
15:39:07  * bradleymeckquit (Ping timeout: 260 seconds)
15:40:42  * Fishrock123joined
15:41:57  * bradleymeckjoined
15:59:16  * gskachkovjoined
16:01:53  <Domenic>bradleymeck: I assume they are whitespace? What's the answer?
16:02:13  <bradleymeck>Domenic: they are whitespace but with HTML and node the story is more complex it seems
16:02:23  <bradleymeck>and the darn shebang ghost comes to haunt me again as well
16:02:33  <Domenic>Makes sense
16:02:38  <Domenic>Yeah I mean for HTML depends on the input encoding
16:02:56  <Domenic>If UTF-8 the BOM will be stripped I think but if you do windows-1252 then wheeee garbage characters at the beginning of your file
16:04:19  <bradleymeck>stripping is observable in char indexes of stack traces so we might need to update things to state preprocessing concerns are in play
16:04:32  <Domenic>Update what things?
16:05:04  <bradleymeck>https://datatracker.ietf.org/submit/status/88872/
16:07:22  <bradleymeck>annevk was stating this might be best addressed as scripting environment concerns and I am starting to lean towards that but Matthew A. Miller (@linuxwolf) might be wanting that as a separate thing
16:07:54  <Domenic>I guess I don't understand why the RFC would care about stack trace char indices
16:10:22  <bradleymeck>it doesn't really but it shows that the behaviors of the environments are observably changing things. so MIME charset parameter isn't the only thing in play. https://github.com/bmeck/I-D/issues/2#issuecomment-322794472 older RFC has invalid mechanics as well for how things are detected
16:11:23  <bradleymeck>I think moving it to environment is a way to remove the bad mechanics and not cause people to have to standardize minor diffs between environments
16:17:02  * Mole[m]joined
16:17:07  * Mole[m]part ("User left")
16:18:06  * gskachkovquit (Quit: gskachkov)
16:21:25  * gskachkovjoined
16:30:34  * gskachkovquit (Quit: gskachkov)
16:34:02  * gskachkovjoined
16:41:51  * gskachkovquit (Quit: gskachkov)
16:43:24  <annevk>Domenic: no BOM always wins
16:43:32  <Domenic>Ah right
16:43:32  <annevk>Domenic: no garbage
16:43:51  <Domenic>bradleymeck: oh, yeah, MIME charset is not very influential.
16:43:57  <Domenic>There are like 5 ways to override that
16:44:05  <annevk>No, just BOM
16:44:11  <Domenic>charset=""
16:44:19  <annevk>Doesn't override MIME charset
16:44:20  <Domenic>use as a worker -> always UTF-8
16:44:28  <annevk>That's true
16:44:28  * gskachkovjoined
16:44:37  <Domenic>(and as a module, these days)
16:44:53  <annevk>We should write a test to make sure that a UTF-16 BOM doesn't override that
16:45:16  <annevk>That's true, the RFC would be wrong if it suggested you could use anything but UTF-8 for module scripts
16:45:17  <Domenic>I think we have some
16:45:40  <annevk>Whoever said an RFC would be simple was wrong
16:46:00  <annevk>That attitude is why we keep having to fix RFCs
16:46:17  <Domenic>that plus the fact that they're dead standards
16:46:54  <bradleymeck>not really dead if I get resistance w/o updating them
16:47:08  <Domenic>Didn't quite parse that sentence
16:47:21  <Domenic>What I mean is that updating them requires this whole process of an entirely new RFC
16:48:19  <bradleymeck>i mean that seems sane for their workflows
16:48:29  <bradleymeck>if we move more stuff to environment specific we can avoid this a bit
16:48:44  <bradleymeck>have no clue what embedded does w/ all this though
16:51:26  <annevk>bradleymeck: I think Node should copy HTML literally except for charset="" and document inheritance, though it might be even better if Node just always did UTF-8
16:52:19  <bradleymeck>annevk: i can double check but I think it is always UTF-8
16:52:22  <annevk>bradleymeck: if Node is interested in having compatibility to that extent I'm sure we could refactor things such that there would be a more neutral-looking algorithm that's not intertwined with <script> and Worker
16:52:46  <annevk>bradleymeck: okay, if that's the case I wouldn't change it (other than perhaps stripping the initial BOM if that's not done)
16:53:28  <annevk>bradleymeck: but that also argues that the charset parameter stuff is bullshit since we have environments that just want to ignore that
16:53:32  <bradleymeck>always UTF-8 https://github.com/nodejs/node/blob/master/lib/module.js#L583 , always stripped https://github.com/nodejs/node/blob/master/lib/internal/module.js#L38
16:53:53  <annevk>kudos to whoever made that happen
16:54:02  <annevk>that's like the best possible way to deal with text formats
16:54:11  <bradleymeck>node isn't working w/ MIME currently but some are interested in URL.createObjectURL which would introduce MIME
16:54:30  <annevk>oh, that API is a mess
16:54:39  <bradleymeck>annevk: does the charset parameter in MIME ever get used?
16:54:43  <bradleymeck>not in script tag
16:55:02  <bradleymeck>if someone wants a diff API so we can make it completely ignored in MIME update that seems fine
16:55:31  <annevk>bradleymeck: for JavaScript MIME types it gets used by (classic) <script src>
16:55:56  <annevk>bradleymeck: I suspect though that <script src> also would take it from text/html;charset=windows-1252
16:55:58  <bradleymeck>but not for `type="text/javascript; charset...` when I was testing?
16:56:09  <annevk>bradleymeck: euh, that's not a MIME type
16:56:22  <bradleymeck>reading bad docs on my side then?
16:56:23  <annevk>bradleymeck: and yeah, that would never work
16:56:31  <annevk>bradleymeck: I guess
16:57:10  <annevk>bradleymeck: <script type=> only accepts a JavaScript MIME type without any parameters and it's only used to establish it's classic JavaScript
16:57:20  <annevk>bradleymeck: (as opposed to module JavaScript)
16:57:37  <annevk>bradleymeck: you need Content-Type: ... on the resource to test charset parameter handling
16:58:00  <bradleymeck>annevk: any recommendations on our looking into new File / URL.createObjectURL since that does have MIME info
16:58:51  <annevk>bradleymeck: not sure I have enough context to give advice
16:59:11  <annevk>bradleymeck: also don't really have the time to dive into that now, work is over 😃
16:59:15  <bradleymeck>kk
17:01:30  * bradleymeckquit (Quit: bradleymeck)
17:04:25  * gskachkovquit (Quit: gskachkov)
17:10:16  * IgnoredAmbiencequit (Ping timeout: 255 seconds)
17:11:49  * gskachkovjoined
17:22:50  * gskachkovquit (Quit: gskachkov)
17:26:54  * Fishrock123quit (Remote host closed the connection)
17:30:09  * bradleymeckjoined
17:30:59  * Fishrock123joined
17:31:01  * Fishrock123quit (Remote host closed the connection)
17:36:09  * Fishrock123joined
17:49:29  * gskachkovjoined
18:29:32  * gibson042joined
18:29:34  * gibson042quit (Client Quit)
18:30:19  * gibson042joined
18:33:51  * gibson042quit (Client Quit)
19:10:21  * gskachkovquit (Quit: gskachkov)
19:29:25  * gskachkovjoined
20:16:34  * ephemera_quit (Quit: No Ping reply in 180 seconds.)
20:18:04  * ephemera_joined
20:31:21  * bradleymeckquit (Quit: )
21:07:44  <Bakkot>thing I just learned: if you `import()` a module which exports a function named `then`, the promise you get from `import()` resolves to the result of that function, rather than the module namespace object
21:09:05  <TabAtkins>Oh god.
21:09:23  <TabAtkins>Yeah, having an opt-out for the unboxing (a "I'm not a Promise, I promise!" flag) would be a useful escape hatch.
21:11:02  <Bakkot>Yeah, I was thinking about a well-known symbol which would prevent flattening.
21:11:27  <Bakkot>(Also, I very much want to avoid the flattening behavior in all of my code, because I want promises to be monadic, so I'd love such a symbol anyway.)
21:11:43  <Bakkot>It wouldn't necessary prevent `await`ing, just the auto-flattening.
21:11:46  <bterlson>Wasn't there some monadic operator proposed for this
21:11:49  <bterlson>at one point
21:11:57  <bterlson>.chain() or something?
21:12:08  <TabAtkins>bterlson: Yeah, but that doesn't help all the places in the platform that uses Promises implicitly.
21:12:17  <bterlson>agree
21:12:53  <TabAtkins>But yeah, a .chain() for the proper monadic operation would be A+. I should put together a proper proposal for that stuff, culled from the JS Fantasyland stuff.
21:13:27  <Bakkot>(The well-known symbol I refer to above would presumably be defined on all module namespace objects, so this is probably something we should resolve sooner rather than later.)
21:14:46  <bterlson>TabAtkins: I know a certain googler who would love you for doing that work :)
21:15:06  <TabAtkins>Is that Googler me?
21:15:18  <TabAtkins>Bakkot: Write up a proposal! Well-known symbols are free! Yay!
21:15:28  <bterlson>IIRC Andreas argued very very strongly for .chain over .then
21:15:51  <TabAtkins>Ah, they might have. My memory of that time is fuzzy; I was also a strong proponent for monadic promises.
21:16:11  <TabAtkins>And as a compromise, a .then() that just unwrapped *one* level (acting as a .map() or .chain() depending on what you returned).
21:16:15  <TabAtkins>I lost both. :(
21:28:08  <littledan>I dunno, I wouldn't've minded if we went for chain instead of then, but having both seems weird
21:28:35  <littledan>if await is based on then, and that's that, then that's that
21:29:05  <ljharb>indeed
21:29:25  <littledan>also, it'd be a bit invasive to spec chain at this point, given how the logic for chaining is in the resolving function, rather than in .then() itself (where I would've expected it)
21:29:44  <bterlson>even if that's that, if that that is not that which we wanted that could be changed?
21:50:58  <dilijev>Does anybody have a build of jsc on Windows newer than 2017-02?
22:02:49  <bterlson>any apple engineers in here?
22:06:52  * Fishrock123quit (Remote host closed the connection)
22:09:26  * Fishrock123joined
22:11:11  <Bakkot>I don't think I have the bandwidth to write up a proposal for a symbol to opt out of promise flattening before the next meeting (and also wasn't planning to attend it); is anyone else willing to volunteer? :)
22:11:39  <Bakkot>this is something which I think must be handled before import() gets to stage 4.
22:22:39  * Fishrock123quit (Remote host closed the connection)
22:32:53  <caiolima>hey guys, is there any max number of arguments that a function should handle in the spec?
22:39:02  <ljharb>i don't know if it's in the spec, but isn't it like 2^32?
22:46:22  * IgnoredAmbiencejoined
23:22:34  <dilijev>the problem with that of course being you need enough memory to store the values of all the arguments, which assuming a minimum of 4 bytes per argument, 2^32 arguments would take up 16 GB
23:24:00  <dilijev>most arguments would be pointers, which on a 64 bit system is 8 bytes each, leading to 32 GB. At that point we're reaching the end of even 99%th percentile consumer hardware
23:24:11  * Fishrock123joined
23:26:58  <caiolima>I couldn't find anything in the spec. It is just a question.
23:27:49  <caiolima>One possible problem is that we can call f.apply(this, {length, UINT32_MAX})
23:28:21  * Fishrock123quit (Ping timeout: 240 seconds)
23:28:37  <caiolima>This sample doesn't take 16/32GB of memory, but I'm not sure what should be the behavior according specc
23:29:12  <caiolima>This test in ChakraCore for example: https://github.com/Microsoft/ChakraCore/blob/master/test/Function/apply3.js#L82
23:30:07  <caiolima>the test spect that an Range Error is thrown https://github.com/Microsoft/ChakraCore/blob/master/test/Function/apply3.baseline#L22
23:32:09  * AtumT_joined
23:33:00  <bterlson>caiolima: I don't think there is any spec mandated maximum. What is outOfRange in that baseline, anyway?
23:33:53  * AtumTquit (Read error: Connection reset by peer)
23:33:58  <bterlson>I think this is another case of ECMAScript mandating implementations have infinite computational resources at their disposal
23:34:08  <caiolima>bterlson: in that case it is the out of "Exception: RangeError : Argument list too large to apply"
23:34:54  <caiolima>bterlson: in terms of code it is the https://github.com/Microsoft/ChakraCore/blob/master/test/Function/apply3.js#L82
23:35:01  * Fishrock123joined
23:35:04  <bterlson>Ahh I see
23:35:10  <bterlson>I think that's just an implementation-defined limit
23:35:17  <caiolima>cool
23:35:23  <bterlson>my recollection is that v8 allows substantially fewer arguments
23:35:26  <bterlson>2^16 or so?
23:35:32  <caiolima>I have this question because I'm fixing this problem into JSC
23:36:11  <TabAtkins>When's next meeting?
23:36:18  <caiolima>in JSC it is 0x10000
23:36:32  <bterlson>TabAtkins: September in Boston. Bring your swimsuit!
23:36:43  <caiolima>It's just 2^5
23:36:45  <dilijev>Right, I guess the question is, what is the max value for number of arguments required? In our case, it's implementation-defined. We basically made the assumption that memory would never be sufficient for that number of args to be meaningful, and we handle many things like this as an integer with max value (2^31 - 1)
23:37:06  <dilijev>which allows us to do some math operations on those numbers in 32 bits without worrying about overflow
23:37:09  <bterlson>caiolima: are people finding issues with that low of a limit?
23:37:24  <TabAtkins>I'm not gonna attend the meeting; I'm done with travel this year. But I can at least get some stuff together; I missed the last one for my "integer-valued-property get/set interception" proposal.
23:37:55  <caiolima>bterlson: No, it's just to check if My fix will be spec compliant. The problem I've found is C++ type cast related
23:38:30  * Fishrock123quit (Remote host closed the connection)
23:39:20  * Fishrock123joined
23:39:54  <bterlson>caiolima: Roger that, spec says you are clear to maintain course at 0x10000, over.
23:40:30  <caiolima>cool
23:40:33  <caiolima>thx!
23:48:49  * Fishrock123quit (Quit: Leaving...)
23:50:36  <jmdyck>what's the current tc39 thinking re incorporating annex B into the spec body?
23:51:21  <bterlson>jmdyck: split, last I polled
23:51:38  <jmdyck>tx
23:51:49  <bterlson>jmdyck: consensus is 'someone' should add tooling so people can see either as a preference
23:51:57  <jmdyck>ah
23:53:18  <bterlson>jmdyck: my thinking is that explicit diff clauses (I think Michael Ficarra had ideas here) would make tooling at least possible.
23:53:46  <jmdyck>it might not be difficult to suppress annexb mtl from the body at option, but to move it all to an annex with the appropriate surrounding verbiage, that'd be tough