2020-07-01 [16:09:22.0000] k https://github.com/tc39/ecma262/pull/2059 is ready for final review 2020-07-02 [10:38:17.0000] shu: left some comments on https://github.com/tc39/ecma262/pull/1951 [10:39:41.0000] I think there's a slight conceptual issue, which is that "host" is defined as a particular kind of implementation, which means not all implementations are hosts, which means that whenever it says "a host may do X" this, by a strict reading, does not allow all non-hosts to do X [10:40:51.0000] (does not allow non-host implementations to do X, that is) 2020-07-05 [20:28:26.0000] updated https://github.com/tc39/ecma262/pull/1228; PTAL [20:49:58.0000] also https://github.com/tc39/ecma262/pull/1402 [20:56:09.0000] shu: also rephrased https://github.com/tc39/ecma262/pull/1903 2020-07-07 [12:41:22.0000] bakkot_: ljharb: apologies, i have a last minute conflict tomorrow for the editor call [12:41:32.0000] can we move it to thurs same time? (2:30 pt) [12:42:11.0000] i can't make that; this is my first week at my new job so my schedule's pretty cramped [12:43:03.0000] my schedule is pretty open except for 3:30-4 W [12:43:36.0000] okay, let me try to reschedule my conflict [12:43:47.0000] ljharb: congrats! where at if you're comfortable sharing? [12:43:59.0000] thanks :-) Coinbase [12:44:53.0000] cool 2020-07-08 [14:32:25.0000] ljharb ping [14:32:38.0000] omw 2020-07-10 [17:03:54.0000] ljharb: do you happen to remember what the change is in https://github.com/tc39/ecma262/pull/1984#discussion_r448154331 [17:04:02.0000] my eyes go out of focus at that blob [17:05:12.0000] ah, for ability -> for the ability [17:05:32.0000] (discovered a trick: i copy the whole thing, paste it into ctrl-f, then backspace until it stops highlighting both) [18:19:08.0000] I usually copy both lines into an editor with word-wrap off and then scroll sideways until they stop matching [20:12:17.0000] yep that was it, sorry for the GitHub bug 2020-07-11 [19:18:27.0000] what are your thoughts on just pushing fixes (as their own commits) to https://github.com/tc39/ecma262/pull/2007 as we find them? [20:30:31.0000] seems fine to me [20:30:51.0000] maybe prefix them with `fixup:` and then i won't have to ask if it should be a separate commit later [08:28:42.0000] +1 on pushing fixes 2020-07-13 [14:00:22.0000] if yall have time after reviewing the stage 3/4 advancements, it'd be great to have all the needs consensus PRs reviewed too [14:51:36.0000] probably not by wednesday, but basically dedicating this whole week to reviews with all the free time [14:55:48.0000] oh sure, "before the PR gets consensus" is mainly what i'm hoping for [15:14:29.0000] but alas, google's 2 no-meeting weeks are now over [16:59:05.0000] i wonder if Yield() and Await() could be made to take an optional `iterator` argument, so it can do the "if abrupt close iterator" boilerplate? 2020-07-14 [17:25:48.0000] ehhh [17:25:57.0000] technically yes, not obvious to me it would be worth it [22:24:24.0000] my initial thought is that it would make it harder to mess up, and would obviate a ton of boilerplate, especially with iterator helpers coming [22:38:03.0000] ljharb: ping on https://github.com/tc39/ecma262/pull/1660 [22:45:40.0000] on it [14:00:17.0000] shu thoughts on including +/- infinity in the set of mathematical values? [14:00:33.0000] currently it's just reals, but jmdyck points out that this breaks ToInteger [14:02:06.0000] that sgtm, i think [14:02:15.0000] how do we use +/- infinity right now? aleph null or aleph 1? [14:03:17.0000] i'm googling to understand those aleph terms and am still having trouble [14:03:51.0000] but i'm delighted these series are named with hebrew letters [14:04:08.0000] aleph null is the size of the naturals, aleph 1 is the size of the reals. i don't think we distinguish them in our use of MVs since there's no reason to [14:04:15.0000] ahhh ok [14:04:36.0000] seems like it'd be aleph 1 then, if it matters? [14:04:37.0000] i guess my question is just if we expand our MV (which is the reals) to include an infinity, do we need to say which infinity [14:04:57.0000] in common use the infinity symbol is usually the lowest infinity i think [14:05:41.0000] ordinals, not cardinals [14:06:04.0000] oh, then sgtm [14:06:55.0000] how do you want to notationally represent it? [14:07:20.0000] a definition we certainly do not need to get into; we just say that the set of mathematical values includes two additional values, spelled ∞ and -∞, which have the property of being equal to themselves and greater than / less than every other mathematical value respectively [14:07:51.0000] and say that speaking of the "finite mathematical values" excludes those two values and no others [14:09:44.0000] I guess you also have to define arithmetic on these maybe, though [14:09:44.0000] when subscripting with _RR, is that going to exclude the infinities unless explicit? [14:09:45.0000] which sucks [14:10:14.0000] i guess not, since the point is to include it in the set of MVs, but then _R seems misleading [14:11:01.0000] we could spell it `\overline R` I guess [14:11:10.0000] that is the usual name for this set [14:11:17.0000] but, ehh [14:11:50.0000] i'm happy deferring on notation [14:12:26.0000] deferring to decision to you, that is [14:12:48.0000] as for defining arithmetic on it, how does it mess up ToInteger now? [14:12:50.0000] looking more, there's a bunch of places this will get awkward [14:12:55.0000] ok so [14:13:22.0000] currently ToInteger returns an integral Number, or the Numbers which are +/- Infinity [14:14:20.0000] and then there is lots of "Let len be the mathematical value of ? ToInteger(argument)" [14:14:40.0000] which is not defined, because "the mathematical value of" infinity is explicitly not defined [14:15:16.0000] by far the most common usages of the result is to compare to another number or clamp with min/max, in which case my above definition suffices [14:15:47.0000] right, i see [14:15:48.0000] hmm [14:15:49.0000] but there are places where we do arithmetic, e.g. in String.p.slice [14:16:02.0000] "Let intStart be the mathematical value of ? ToInteger(start). .. If intStart < 0, let from be max(len + intStart, 0); otherwise let from be min(intStart, len)." [14:16:12.0000] and, like, it is clear what is supposed to happen here [14:16:26.0000] but you do have to define arithmetic on infinities for this to work [14:16:30.0000] or reword these sections [14:16:46.0000] do we need to define arithmetic, or just + [14:16:55.0000] well, probably just + [14:16:57.0000] maybe - [14:17:04.0000] well, we can reword those as + [14:17:12.0000] that seems maybe not so bad? [14:17:16.0000] the bit that I'm worried about is that there will be other places that assume mathematical values are finite [14:17:32.0000] I am hesitant to break this assumption [14:18:05.0000] if ToInteger is the only place that needs the extended set [14:18:23.0000] do you have to define arithmetic to make < and > work? (that's what's in slice) [14:18:32.0000] oh `len + intStart`, nvm [14:19:06.0000] i do see there are a lot of uses, but how much work is it really? 30 minutes? if you define \overline R as a separate thing, you can localize how it propagates [14:19:38.0000] yeah, I think having an "extended mathematical value" distinct from the usual one would be nicest [14:19:40.0000] since it seems like all use cases of infinities is to immediately apply an operation that lowers it back to a finite thing [14:24:27.0000] ok with calling this "extended mathematical values"? [14:25:36.0000] yeah [14:25:43.0000] can't imagine much else we want to extend MVs with [14:29:09.0000] michael is strongly opposed to this [14:29:10.0000] ugh [14:29:13.0000] I will try to get him on IRC [14:29:56.0000] would you say he's infinity opposed to it [14:30:52.0000] no, finite but large [14:30:54.0000] "I really really really don't want to do that" [14:35:43.0000] why does he not want to do that [14:35:54.0000] especially since it's localized [14:38:51.0000] I have tried to get him to come on irc and talk about it but no luck [14:38:55.0000] we'll talk tomorrow if we have time I guess [14:39:26.0000] he wanna fight bout it [14:41:36.0000] (ง'̀-'́)ง ±∞ [15:28:21.0000] shu: thoughts on reducing duplication in https://github.com/tc39/ecma262/pull/2043 by adding a grammar flag? [15:32:16.0000] ah great idea [15:32:33.0000] those productions aren't flag-laden right now, so it wouldn't be hard to read 2020-07-15 [17:30:37.0000] god there is so much stuff to review [17:37:30.0000] yeah... [11:27:38.0000] is there any way in ecmarkup to artificially change the numbering of clauses and annexes? [11:52:38.0000] No. [11:52:44.0000] At least, not that I'm aware of. [12:02:30.0000] k, that'd be super helpful for proposals :-) right now i'm making placeholder clauses and using CSS and JS to hide them and their TOC entries. [12:31:00.0000] as in, a proposal adding a new annex? [12:39:21.0000] any proposal that adds or edits any section anywhere [12:39:31.0000] proposal renders start numbering at 1, even if i'm editing 14.9.2.1 [12:40:33.0000] (separately, i get the error "Error: expecting EOF, got parabreak" when i have `...` sitting between emu-clauses with a linebreak around it, but not when i don't; a) that maybe shouldn't be an error, and b) the error message doesn't tell me on which line it's broken) [12:41:09.0000] I am actively working on fixing the shitty error messages [12:41:18.0000] have some open PRs in ecmarkdown towards this already [12:41:45.0000] sweet [15:01:52.0000] i would very much like to land https://github.com/tc39/ecma262/pull/2059 asap tho, if shu and Bakkot have time to review it (ok if not) [15:02:10.0000] also https://github.com/tc39/ecma262/pull/2065 [15:21:36.0000] https://docs.google.com/presentation/d/1O8wGWehzMhqb_Jz2JfmyUxyUepxanc8sEVMlTRUVnfo/edit#slide=id.gc6f73a04f_0_0 2020-07-16 [09:56:14.0000] i am also itching to land https://github.com/tc39/ecma262/pull/1951, which i think should be before weakrefs are merged [10:04:26.0000] shu: if Bakkot or michael can review it i'll make sure that happens [10:05:31.0000] shu I will give it another pass today [10:07:01.0000] cool, thanks [14:05:13.0000] shu: because https://github.com/tc39/ecma262/pull/1951 defines the word "implementation" it needs a whole bunch of emu-not-refs [14:05:38.0000] "This community has reviewed numerous drafts, filed thousands of bug reports, performed implementation experiments" in the intro, "This draft document may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may" in the copyright notice [14:06:08.0000] big oof, ok [14:06:55.0000] "any specific implementation technique" [14:07:05.0000] "the implementation of Strings [14:07:06.0000] " [14:07:23.0000] "the implementation of an algorithm" [14:07:44.0000] lol we could pick a new word besides "implementation" /me runs away [14:07:49.0000] maybe we should not define implementation [14:07:54.0000] was just about to suggest that [14:08:00.0000] shu's, not ljharb's [14:08:09.0000] since it's usually not interesting to talk about implementation by itself [14:08:18.0000] and it's usually -defined -approximated or whatever [14:08:23.0000] yeah, and also it's not, like, an unusual word [14:08:28.0000] yeah [14:09:21.0000] seems reasonable [14:09:28.0000] we could always explicitly emu-xref the few "implementation"s we want linked [14:16:05.0000] "such as " should be "emu-xref href=" [14:16:55.0000] which will render as `such as Math.exp ( x ),` so you might want to omit the `title` and write `Math.exp` explicitly [14:17:09.0000] good call [14:39:06.0000] the section on "web scripting" says "Each Web browser and server that supports ECMAScript supplies its own host environment, completing the ECMAScript execution environment.", which isn't entirely consistent with the definition of "host" in this PR; maybe that should be "provides further host-defined objects and facilities"? [14:41:31.0000] actually the term "host environment" is kind of confusing now. [14:44:19.0000] i think maybe we should fix this by defining a "host environment" to be an instantiation of all the host-defined things, or something like that [14:45:02.0000] we already have "A host-defined facility is one that defers its definition to an external source without further qualification and is listed in Annex D. Implementations that are not hosts may also provide definitions for host-defined facilities.", so appending to that [14:47:00.0000] "A host environment is a particular choice of definition for all host-defined facilities." [14:47:03.0000] or something like that [14:51:15.0000] I think that is all the feedback I have [15:01:01.0000] i like that definition of host environment [15:01:21.0000] but is that confusing with an implementation? [15:01:48.0000] an implementation includes the additional instantiation of the the implementation-defined/approximated facilities [15:02:27.0000] the way the "web scripting" section defines host environment sounds closer to an implementation, since it uses "completing" [15:03:36.0000] but i think what it really means isn't that it fills out e.g. Math.random, but really about purely additive things, like IO [15:15:40.0000] I think this definition matches the use in web scripting: basically the host-defined things are holes to be filled, and the host environment is a set of things which is chosen to fill those holes [15:16:01.0000] so, yeah, not Math.random, just the AOs which are actually undefined [15:16:10.0000] and the global object, especially [15:17:07.0000] in particular the distinction from an implementation is that the implementation has all the parts, whereas the "host environment" refers specifically to the host-defined parts [15:17:35.0000] also that "implementation" is a source of definitions, whereas "host environment" is the definitions themselves, I guess [15:18:46.0000] Bakkot: ah, i like the framing of the global object as a host-defined hole to be filled in a lot [15:41:26.0000] is there a way to give a way for other hosts to link what an implementation is without using a dfn? [15:41:31.0000] i suppose just suffices [15:49:19.0000] yeah, that works [15:59:31.0000] shu was the decision to render as "Math.exp ( x )" rather than "Math.exp" intentional? [16:01:05.0000] is that due to the title? [16:01:11.0000] i forget why title was added, it was a review comment [16:02:35.0000] i suggested adding it [16:02:47.0000] i did not realize the excessive spacing in the

would actually render inline [16:02:58.0000] based on that, def remove the `title` and explicitly reference it [16:03:58.0000] k let me do that now [16:12:44.0000] I guess one last thing is that it is maybe worth calling out explicitly in the definition of "host environment" that this will usually include some IO facilities [16:13:59.0000] "A host environment typically includes objects or functions which allow obtaining input and providing output as host-defined properties of the global object." [16:16:56.0000] otherwise LGTM [16:19:04.0000] will add that in a bit [16:19:33.0000] i have been in slide deck-making hell for like 3 days [16:19:57.0000] tc39, show&tells for higher ups, i don't know why they interviewed me for coding [16:23:53.0000] same [16:24:00.0000] this is one of those weeks where I write zero code [16:24:17.0000] although one of the things I was writing was a design for a thing I will then implement, so there is some code in my future [16:36:34.0000] when i am ceo, i will make my company's interview question a direct test for anxiety and stress [16:37:02.0000] the candidate will be given a simulated email account with N unread emails [16:37:10.0000] they will have an hour to prioritize and respond [16:37:25.0000] no, probably 30 minutes [16:37:47.0000] during this time there will be message notifications and new emails 2020-07-17 [18:38:38.0000] if we land https://github.com/tc39/ecma262/pull/1951 before Monday, we should remember to put it on the slides [18:39:14.0000] the editor update slides, that is [00:24:02.0000] np, I’ll do that when i land it [09:57:09.0000] oops, forgot to add the extra host environment line yesterday. done now [15:07:18.0000] Bakkot: shu i could still use your reviewer signoff on https://github.com/tc39/proposal-private-fields-in-in/issues/7 before plenary if you have time :-) [16:10:40.0000] thanks for the reminder, looking now [16:17:37.0000] ljharb: the render at https://tc39.es/proposal-private-fields-in-in/ is up-to-date? [16:18:54.0000] yep [16:40:20.0000] ljharb: lgtm [16:40:26.0000] i have some editorial preferences but not important for stage 3 [16:44:51.0000] awesome! happy to take those now too [16:45:41.0000] ljharb: in https://tc39.es/proposal-private-fields-in-in/#sec-relational-operators-runtime-semantics-evaluation i prefer the returns to be inline with 9.a and 9.b instead of their own lines [16:46:14.0000] think that's it [16:47:01.0000] oh sure, np [16:47:02.0000] doing now [16:50:03.0000] k, all updated [16:51:15.0000] cool [16:51:54.0000] off for the weekend, see you all in committee [16:52:59.0000] cya 2020-07-19 [20:12:07.0000] shu: I had a couple comments on https://github.com/tc39/ecma262/pull/2089 which want your attention 2020-07-20 [10:11:09.0000] who wants to be the person who brings up the slides for the update? [10:13:33.0000] not me, this MBA cannot handle multitasking very well [10:13:38.0000] not looking forward to presenting my own slides later [10:16:07.0000] i'm on my ipad, so i'm happy to talk but can't easily present [10:16:17.0000] I will present then! [10:16:51.0000] woot [10:20:45.0000] my MBP can hardly do anything else while Teams is running [10:25:41.0000] turning off my camera helps a lot [10:41:54.0000] Bakkot: btw which were the comments on https://github.com/tc39/ecma262/pull/2089 that needed my attention? didn't look over the weekend and a bunch are resolved now [10:43:57.0000] shu https://github.com/tc39/ecma262/pull/2089#discussion_r456849986 [10:44:08.0000] and https://github.com/tc39/ecma262/pull/2089#discussion_r456850691 [10:44:27.0000] and maybe https://github.com/tc39/ecma262/pull/2089#discussion_r456850433 [11:14:19.0000] this one is just about a rubberstamp, right? [11:14:26.0000] not solving the underlying issue about "not 100% or 0% normative" [13:21:57.0000] shu: Bakkot: https://github.com/tc39/ecma262/pull/2057 if you have a moment [13:23:45.0000] not during plenary? [13:24:05.0000] it can wait, sure [16:45:25.0000] Bakkot: ljharb: so my main motivation for the job callback host hook thing isn't at all host expressivity or a value judgment, but really to cut down on one-way overrides/willful violations of ecma262 behavior from HTML [16:45:44.0000] it so happens the best signal we have for implementers to know there's more to implement here than just the ecma262 algo steps are host hooks [16:46:24.0000] if i cannot convince objectors to add host hooks, i'd still like to point out there are overrides or violations in HTML [16:46:30.0000] those one-way overrides have caused real bugs in the past [16:47:12.0000] my question to the editor group is, does documenting those feel appropriate for us to do, or does it need consensus? [16:59:22.0000] I am fine with us doing it ourselves [16:59:48.0000] i'm totally fine providing notes for known willful violations 2020-07-21 [17:00:32.0000] and i'm on board with bringing in hooks to remove willful violations, but i'm also sensitive to mark's concern about allowing other hosts to "legally" do things we don't want them doing [17:28:53.0000] this is a little subtle, i'm also happy to work with mark to restrict these hooks to browser hosts only [17:38:02.0000] we did that with document.all [17:38:25.0000] "here's a host hook, don't use it unless you're a browser in this specific circumstance" [17:38:30.0000] host field I guess, not hok [17:42:18.0000] oh cool [17:43:19.0000] true [17:43:30.0000] that’s a good example to use to convince him [17:44:23.0000] i exchanged a few emails, i think there was a fundamental misunderstanding, where he understood my saying "realm" to mean like, the realm of the execution context for user code [17:44:58.0000] whereas i really meant "some object squirreled away by html to determine some other thing for APIs like Location", and doesn't affect user code at all [17:45:14.0000] well it does, it just doesn't affect the scope of user code [12:12:49.0000] https://github.com/tc39/ecma262/pull/2107 just fixes an incorrect link from the Promise.any PR; i'm going to land it with just 1 approval [12:19:02.0000] ugh, gotta start linting those [12:42:47.0000] oh wait those are already caught they just don't fail the build [12:43:00.0000] and I already have a PR to ecmarkup which would let you opt in to having them fail the build [12:43:06.0000] it was so close [12:43:29.0000] sooooooo close 2020-07-22 [20:36:18.0000] lol, ouxford 2020-07-24 [15:03:08.0000] shu is https://github.com/tc39/ecma262/pull/2086 ready for review? [15:03:28.0000] though actually I'd find it easier to review if I could review the upstream one at the same time [15:03:47.0000] yes, i have pushed the compromises [15:04:00.0000] the compromises don't need changes in the upstream PR [15:04:35.0000] oh, does that PR already exist? [15:04:38.0000] https://github.com/whatwg/html/pull/5722 [15:04:52.0000] the reason it is DO NOT MERGE is because how the MDN compat data is determined is Deep Magic [15:04:53.0000] sweet [15:04:59.0000] noted [15:05:03.0000] it requires understanding Wattsi, the HTML spec compiler [15:05:27.0000] which is written in Free Pascal [15:05:46.0000] but the actual contents are all there [15:06:32.0000] (like, why? apparently because it was hixie's favorite language) [15:06:45.0000] so now, to compile html, you gotta get a docker image [15:14:33.0000] sounds like a good excuse to install the Free Pascal compiler on my work machine, personally [15:14:51.0000] I have thus far managed to avoid using docker and I don't intend to start now [15:15:03.0000] my solution to this is to not compile HTML [15:15:05.0000] we install things to `/usr/bin` as the gods intended [15:15:19.0000] also valid 2020-07-26 [09:31:50.0000] ljharb want to rubber-stamp https://github.com/tc39/ecmarkdown/pull/82? [09:32:56.0000] doneskies [09:43:19.0000] thanks [09:43:41.0000] finally got https://github.com/tc39/ecmarkup/pull/234 ready [09:44:22.0000] so that ecmarkup will provide actually useful information when the build fails [09:44:39.0000] like it's a real build tool [10:21:35.0000] hooray 2020-07-27 [14:35:14.0000] https://tc39.es/ecma262/#sec-createintrinsics appears to make normative use of the table of well-known intrinsics [14:36:56.0000] is that observable tho? [14:37:43.0000] the spec only seems to explicitly reference ThrowTypeError, Function.prototype, and Array out of that slot [14:46:30.0000] hmm, yeah [14:46:44.0000] I gather the intent is for use by hosts [14:47:44.0000] seems strange tho since so far they all just use % notation and not that slot 2020-07-30 [09:14:26.0000] Bakkot: o no, the reals vs doubles thing is leaking [09:14:46.0000] https://github.com/whatwg/infra/issues/87#issuecomment-665954047 [09:15:08.0000] Bakkot: domenic is under the misunderstanding specifying using the reals make specs not possible to implement, whereas it is the opposite [09:25:52.0000] I am pretty sure IEEE 754 is specified in terms of reals [09:26:03.0000] don't have it on hand at the moment though [09:48:16.0000] Bakkot: i am too [09:48:26.0000] Bakkot: but i think the point is that do we require each intermediate arithmetic step to round [09:48:30.0000] or only round at the observable boundaries [09:48:39.0000] ah, yeah [09:48:55.0000] for ecma262 we write out equations which look like math, which do not implicitly have an order of operations [09:49:31.0000] which means our hand is forced: unless we define the exact order to perform math-associative but not IEEE-associative operations in, those have to be math [09:50:25.0000] right 2020-07-31 [18:20:22.0000] https://github.com/tc39/ecma262/issues/2119 [18:20:24.0000] thoughts? [18:33:40.0000] Sgtm [19:27:20.0000] agreed