00:33 | <rbuckton> | |
00:40 | <Chris de Almeida> | rbuckton: Understood. I'm sorry, your constraint didn't mention source phase imports, and thus wasn't considered in the scheduling of the continuation. The time slot for the continuation was the only possible time/day for this item. I'll defer to guybedford and Luca Casonato for how they wish to proceed. |
06:31 | <ljharb> | littledan: it'd be great if we could ask the stenographer tomorrow to bump up their line length to as close to infinity as possible, and also to autocorrect any multiple spaces down into one, including after a period |
06:43 | <Ashley Claymore> | I've been running a regex on the notes post meeting to fix up the added line breaks and multiple spaces, we can keep doing this if they can't adjust their setting. (Just as an FYI) |
08:10 | <Luca Casonato> | Chris de Almeida: any chance we can proceed on thu (in the afternoon overflow)? |
11:19 | <littledan> | littledan: it'd be great if we could ask the stenographer tomorrow to bump up their line length to as close to infinity as possible, and also to autocorrect any multiple spaces down into one, including after a period |
12:22 | <Chris de Almeida> | conflicts with KKL's constraint (unavailable Thursday) and JGT's constraint (although it appears JGT constraint is satisfied if it's the 13:00-13:30 slot) |
14:54 | <Rob Palmer> | Plenary begins in 5 mins!!! |
14:54 | <bakkot> | chairs: I don't know why I put 45 minutes for float16array, 15 is probably plenty |
14:54 | <bakkot> | if we end up having 15 minutes somewhere I am happy to do it wheenever |
15:05 | <Michael Ficarra> | I think stage 4 is always "pending final integration tweaks" |
15:05 | <Chris de Almeida> | thanks -- I've updated it in the schedule at hackmd |
15:06 | <Michael Ficarra> | the PR is open, I've reviewed it, and only had minor editorial feedback, nothing that would prevent it from advancing |
15:07 | <littledan> | Sorry I need to drop due to a medical issue for my partner |
15:07 | <littledan> | if others could take notes that would be great |
15:10 | <rbuckton> | conflicts with KKL's constraint (unavailable Thursday) and JGT's constraint (although it appears JGT constraint is satisfied if it's the 13:00-13:30 slot) |
15:11 | <littledan> | OK, back |
15:13 | <Kris Kowal> | I'm reaching out to others on my team to see if someone can be present for the overflow topic this afternoon. Unfortunately, I'm giving a talk in the afternoon that couldn't be rescheduled. |
15:14 | <Chris de Almeida> | Luca Casonato: guybedford --- it appears the Thursday slot at 13:00 will work, per KKL's blessing there. sound good? |
15:15 | Justin Ridgewell | merges https://github.com/tc39/proposal-array-grouping/pull/52 adding a warning to the README |
15:17 | <Francisco Tolmasky> | Is the best (only?) way to observer IsConstructor in client code to do IsConstructor = X => { try { class extends X { } } catch (e) { return e instanceof TypeError } return true } ? |
15:18 | <rbuckton> | I'll also state that https://github.com/tc39/proposal-import-reflection/pull/45 addresses my concern. While it is unfortunate that the import.<phase>() format doesn't use a verb for the method name, doing so would break symmetry with the import <phase> static syntax, so I'm not quite so concerned (for example, import instance mod from "url" could have a dynamic version named import.instantiate(url) , but that would break the symmetry that ljharb prefers). |
15:19 | <ljharb> | you have to use Reflect.construct i believe if you support pre-class syntax engines |
15:20 | <Francisco Tolmasky> | But that has side-effects, or can have side effects, right |
15:21 | <ryzokuken> | https://github.com/tc39/ecma402/wiki/Proposal-and-PR-Progress-Tracking#stage-3 |
15:30 | <Michael Ficarra> | Francisco Tolmasky: yeah, there's no way to just test for [[Construct]] |
15:31 | <Francisco Tolmasky> | Michael Ficarra: Is that because class X extends Tested_Value { } also has side-effects (perhaps by having the prototype key be a getter or something) |
15:34 | <Michael Ficarra> | yeah, I think just the prototype getter |
15:37 | <Kris Kowal> | Luca Casonato: guybedford --- it appears the Thursday slot at 13:00 will work, per KKL's blessing there. sound good? |
15:39 | <littledan> | if we have a check mark, we might as well make that check link to the anchor where the urgent info is discussed |
15:40 | <Chris de Almeida> | prefer not to have a new col on the proposals table that is usually empty, but not a big deal if col is narrow |
15:43 | <bakkot> | I mildly prefer not to have this in the proposals table just so that there are not multiple sources of truth |
15:44 | <bakkot> | proposals table links to the readme and readme documents seems like the right balance |
15:44 | <bakkot> | but I also don't care very much |
15:44 | <Chris de Almeida> | Kris Kowal: we may be able to move it to Wednesday though. please hold. apologies for the disarray -- tough shuffling with constraints 🙂 |
15:44 | <nicolo-ribaudo> | I mildly prefer not to have this in the proposals table just so that there are not multiple sources of truth |
15:44 | <Chris de Almeida> | no |
15:45 | <ryzokuken> | no |
15:45 | <Chris de Almeida> | no, and it's missing things as such |
15:45 | <ryzokuken> | oh, I think to some extent, yeah |
15:45 | <littledan> | for example the "last presentation" column is pretty outdated |
15:45 | <ryzokuken> | the website picks up the dataset from the dataset repo |
15:47 | <littledan> | The summary is for major points raised; people keep dictating the conclusion and calling it the summary. It's OK if we don't have summaries, if people don't want to capture this information. |
15:48 | <littledan> | the idea of the summary is to make a shorter version of the lengthy discussion above, so we capture more than just the conclusion |
15:48 | <littledan> | of course dictating the conclusion is a really good practice and we should keep doing it! |
15:48 | <Michael Ficarra> | Francisco Tolmasky: I did it, but you're not gonna like it |
15:49 | <Michael Ficarra> | const isConstructor = (a) => { if (Object(a) !== a) { return false; } try { Promise.prototype.finally.call({ constructor: { [Symbol.species]: a }, then(){} }); } catch { return false; } return true; }; |
15:49 | <ljharb> | interesting |
15:49 | <Francisco Tolmasky> | Why wouldn't I like it? I love it! |
15:49 | <ljharb> | i assume that only works with a native finally tho? |
15:50 | <Kris Kowal> | Kris Kowal: we may be able to move it to Wednesday though. please hold. apologies for the disarray -- tough shuffling with constraints 🙂 |
15:51 | <Chris de Almeida> | thanks Kris! I think the Weds option may work better for all involved, but waiting on Luca + Guy to proceed |
15:53 | <Luca Casonato> | Luca Casonato: guybedford --- it appears the Thursday slot at 13:00 will work, per KKL's blessing there. sound good? |
15:53 | <Luca Casonato> | sorry, responded to wrong message |
15:54 | <Luca Casonato> | yes to wed |
15:54 | <Chris de Almeida> | ok, perfect! thank you! |
15:57 | <Chris de Almeida> | this has the added benefit of offering double the available time (40 mins now instead of 20m) |
15:59 | <Chris de Almeida> | Source Phase Imports for Stage 3 (cont'd from Day 1) will be Weds afternoon |
16:02 | <nicolo-ribaudo> | waldemar I just tested this code with the current proposal, and it alerts
|
16:03 | <nicolo-ribaudo> | ( https://babeljs.io/repl#?browsers=ie%2010&build=&builtIns=false&corejs=3.21&spec=false&loose=true&code_lz=GYVwdgxgLglg9mABAWxmEBnAKgdzgCgG9EMBTKAGkQHNzEBfASkUIChFEAnckTpNjhzJR8AN2YDBQ8gDoIAQwA2i_FAAWMDFVGIAtIgBMjdoPoUTHWiIkXB3KLyRW5Sles3MA1IYDct-ib0AJCsAaygkLAIiLDIpBgAYnC8RCTkVFYMNhz2jiy2wmLZUmlQLsqqGlqIOgBUiAAsxlJmtlb4xVK5fDSyChXuGMwA9I1-LYEhYRCK8hgYiElw-RwAAqjo2HiIq7HxSbyI8hAQ8RhwnIgARvKXALyIAKx-0wgYUIjAcMsPYKQ4i2-HT84W-Mhu9yePhCSlInBEAAMAMpwmBKGAALzQ1COYAAJog8aRdGROGjFJjsU9EABPGCkRR4hYAEkIXzg4Nu9ARjCAA&debug=false&forceAllTransforms=false&modules=commonjs&shippedProposals=false&circleciRepo=&evaluate=true&fileSize=false&timeTravel=false&sourceType=module&lineWrap=true&presets=env%2Cstage-2&prettier=false&targets=&version=7.21.8&externalPlugins=&assumptions=%7B%7D ) |
16:07 | <littledan> | ljharb: Outermost to innermost feels counterintuitive but if you think about the setters as successively wrapping each other, this is the natural order to fall out |
16:07 | <littledan> | so the wrapping is what happens inner to outer |
16:09 | <Justin Ridgewell> | ljharb: it'd need a queue, which is a very different design |
16:10 | <shu> | yeah |
16:10 | <ljharb> | a different design for who? spec/implementations, decorator authors, or decorator users? |
16:10 | <shu> | for the proposal itself |
16:10 | <Justin Ridgewell> | I think the order of setters is correct, because this would be how it'd behave if you manually wrapped a class method |
16:10 | <shu> | for all stakeholders you list |
16:10 | <Justin Ridgewell> | Also, the order of getters is correct (as discussed earlier) |
16:11 | <HE Shi-Jun> | This issue is complex... I'm not sure I fully understand the issue and the consequences of each solution... |
16:11 | <shu> | like, i don't think of any use case for multiple decorators, legacy or standard, is "accumulate into a list, which is evaluated (setters, getters, initializers) in order later" |
16:11 | <shu> | if that is the model you think it ought to be, that's a redesign |
16:13 | <ljharb> | const timesTwo = x => x * 2; const minusFour = x => x - 4; const wrapped = x => minusFour(timesTwo(x)); is what i'd expect |
16:13 | <shu> | IOW, mental model of decorators is replacement, so if you want multiple decorators to apply, you need to make a new wrapper that calls the old one |
16:13 | <rbuckton> | Similar to what @littldan said, decorators are like layers. You pass a value down through the layers when setting, and bring it back up through the layers when getting. So for @A @B x , setting traverses -> A -> B -> x , and getting traverses <- A <- B <- x . |
16:13 | <shu> | it sounds like your mental model of decorators is linear list of hooks |
16:13 | <shu> | which is not what it is |
16:14 | <nicolo-ribaudo> | Note that the order of operations is different from order of function calls. Setters change the value before passing it to the next setter, while getters replace it after that it has been received by the next getter (so same order of function calls implies opposite order of transforms) |
16:14 | <rbuckton> | eemeli: yes, there are a lot of use cases for multiple decorators on an item. far too many to introduce that limitation, imo. |
16:15 | <nicolo-ribaudo> | Also chairs I'm travelling and I don't have a good connection, if when it's my turn in TCQ I don't reply please let other people go ahead |
16:16 | <Justin Ridgewell> | nicolo-ribaudo: Would an init() change the order of the calls? |
16:17 | <Justin Ridgewell> | Like, it seem the same as if we just inits.reverse() in the spec? |
16:18 | <nicolo-ribaudo> | nicolo-ribaudo: Would an Having
would allow having the same order of function calls as |
16:18 | <Justin Ridgewell> | We'd still have a queue of decorator inits that need to run in some order. |
16:18 | <nicolo-ribaudo> | Because it transforms the input parameter rather than the return value |
16:19 | <Justin Ridgewell> | I don't think that's the case? |
16:20 | <Justin Ridgewell> | The reason set order happens is because there's a defined starting point (the thing that's exposed to the user of the class) |
16:20 | <rbuckton> |
nextInit with this , or you'd end up with an error. |
16:20 | <nicolo-ribaudo> | Well you already have that requirement with set and get |
16:21 | <rbuckton> | Yes, but you don't with init currently. |
16:21 | <Justin Ridgewell> | The init isn't exposed to the user, so there's not a defined order |
16:22 | <rbuckton> | As I understand it, engines didn't want to thunkify the initializer. |
16:23 | <shu> | i don't quite remember the exact pushback |
16:24 | <shu> | oh, like, per-field, we don't want a per-field initializer function |
16:24 | <nicolo-ribaudo> | oh, like, per-field, we don't want a per-field initializer function |
16:24 | <nicolo-ribaudo> | Every decorated field would need to have its own initializer function with my proposal |
16:27 | <Bradford Smith> | Suggestion for fuller explanation: Decompose what happens into individual Object.defineProperty() calls in the order they would execute. |
16:30 | <rbuckton> | Suggestion for fuller explanation: Decompose what happens into individual |
16:40 | <rbuckton> | ljharb: only assigning due to dynamic evaluation seems the opposite of what implementers want. IIRC, for the class to have a stable shape resulting from its declaration, then [Symbol.metadata] must be defined due to syntax, not dynamic evaluation. |
16:40 | <bakkot> | shu:
|
16:40 | <shu> | yes, okay, |
16:41 | <ljharb> | ljharb: only assigning due to dynamic evaluation seems the opposite of what implementers want. IIRC, for the class to have a stable shape resulting from its declaration, then |
16:41 | <shu> | thanks |
16:44 | <rbuckton> | Are there any shipping implementations of native decorators where that would be a problem? TS and Babel have downlevel implementations, but since this is only recently shipping I have less of a concern for this being a problem for our (TS) users. |
16:46 | <nicolo-ribaudo> | Babel's implementation requires users to explicitly specify the date of the TC39 meeting (YYYY-MM) that they want Babel to comply with (there were too many changes to do otherwise 😬), so I'm not concerned of this type of breaking changes |
17:55 | <littledan> | I think the error rate was particularly high in the second hour of the morning, and ljharb noted similarly. I contacted Duane, the owner of the captioning service, and the person who was on during that time block won’t end up repeating for the rest of this meeting; it will be shared by the same two people so they should be able to learn and improve over time. Please be like ljharb and send me any feedback about the notes so I can collect it and ensure it reaches the transcription service. |
17:58 | <littledan> | true, but that means that decorated classes now will suddenly start getting a metadata object |
17:59 | <Rob Palmer> | Plenary is restarting... now |
18:03 | <littledan> | About this presentation, I'd sort of like to discuss both topics together before drawing a conclusion |
18:04 | <littledan> | fine to discuss one first in between of course, just for concluding |
18:07 | <HE Shi-Jun> | It seems option 1 is more consistent to current iterator behavior? |
18:09 | <littledan> | I believe the transcription quality is higher this time than last time |
18:16 | <bakkot> | littledan: "with fallback only on undefined" - do you mean and not null? Symbol.iterator uses undefined or null |
18:16 | <bakkot> | (because it goes via GetMethod) |
18:18 | <Bradford Smith> | Aren't iterators always supposed to meet the requirement that myIterator[Symbol.iterator]() === myIterator ? Doing this fallback at all seems weird to me. |
18:20 | <bakkot> | Bradford Smith: nothing in the language expresses that requirement today, and user-implemented iterators IME usually don't |
18:21 | <bakkot> | and the main place this fallback comes up is in Iterator.from , which is specifically for taking a userland iterator and getting something which inherits from Iterator.prototype; we want to accept the user iterators people are writing today |
18:21 | <littledan> | littledan: "with fallback only on undefined" - do you mean and not null? Symbol.iterator uses undefined or null |
18:22 | <Bradford Smith> | Interesting. I'm pretty sure closure-compiler's transpilatoin of for-of and similar things relies on myIterator[Symbol.iterator]() === myIterator |
18:22 | <Bradford Smith> | I don't think we check for a next() method |
18:22 | <littledan> | Aren't iterators always supposed to meet the requirement that |
18:22 | <bakkot> | Bradford Smith: for-of takes iterables, not iterators, so I don't think it comes up? |
18:23 | <bakkot> | like the way you work with iterators is always "call the Symbol.iterator method, and then call next on the result" |
18:23 | <Bradford Smith> | I thought it was a requirement that all iterators are also iterables |
18:23 | <bakkot> | nothing depends on or expresses that requirement |
18:25 | <HE Shi-Jun> | Michael Ficarra: Not sure I explained myself clear, I expect we can define a protocol which only have accessors which returns normal value, for example obj[ProtocolA.x] // normal value . |
18:25 | <Bradford Smith> | So then Iterator.from(x) first tries to treatx as an iterable, then falls back to treating it as an iterator, which doesn't happen to have a Symbol.iterator |
18:29 | <bakkot> | correct |
18:29 | <bakkot> | all the iterators in the language (and the web platform / node, and those produced by generators) have the property that myIterator[Symbol.iterator]() === myIterator , so that should work for everything |
18:30 | <bakkot> | unless you go out of your way to make an iterator which does have a Symbol.iterator which is not just this , in which case, that's on you |
18:33 | <HE Shi-Jun> | I will support failing early if we can "fix" let [] = {[Symbol.iterator](){return {}} } case... |
18:39 | <bakkot> | I think option 2 not closing is actually pretty bad |
18:39 | <bakkot> | well |
18:39 | <bakkot> | a little bad anyway |
18:43 | <Michael Ficarra> | bakkot: but it never "opens" either |
18:43 | <bakkot> | fair |
18:44 | <bakkot> | at least in the case that you're passing a multiple-shot iterable |
18:45 | <bakkot> | but not in the case that you're passing an iterator:
|
18:45 | <bakkot> | it is weird for the "close gen" thing to happen if you have [x] = it but not [] = it |
18:46 | <ljharb> | why? if it hasn't touched it why would it need to close it |
18:46 | <rbuckton> | why? if it hasn't touched it why would it need to close it |
18:47 | <rbuckton> | A match pattern like [] is exhaustive, thus will close the iterator. |
18:47 | <ljharb> | pattern matching is still stage 1 and i would assume it would just follow whatever is decided here |
18:47 | <ljharb> | ah, hmm |
18:47 | <rbuckton> | pattern matching is still stage 1 and i would assume it would just follow whatever is decided here |
18:48 | <littledan> | My main feeling is, it doesn't seem worth it to change existing things, and 3 and 4 both seem reasonable to me |
18:48 | <ljharb> | yeah that kind of falls out of the weirdness of having destructuring not be exhaustive by default, and pattern matching be by default |
18:48 | <rbuckton> | That said, a match pattern of [] will call next() at least once |
18:48 | <ljharb> | ah yes, that's true |
18:49 | <rbuckton> | Actually, I honestly don't know if pattern matching informs whether empty array destructuring patterns should close. There's enough of a difference that we could go either way. |
18:54 | <HE Shi-Jun> | Sorry, could anyone write a simple example to explain the observable diff between option 2 and 3? |
18:54 | <ljharb> | (fwiw i don't think the animal names are necessarily consistent across users, but i haven't tested thoroughly) |
18:54 | <shu> | principle: always be vibin' |
19:05 | <Michael Ficarra> | can someone who maintains TCQ make it so the reply / new topic / clarifying question / PoO buttons take effect immediately when pressed and then you can enter the topic later? |
19:05 | <Michael Ficarra> | I'm tired of writing out a topic in the reply just for us to move on :-( |
19:06 | <ljharb> | bakkot: https://github.com/search?q=language%3Ajavascript+grouptoobject&type=code |
19:06 | <bakkot> | sorry I meant as a property name specifically |
19:06 | <bakkot> | but yes |
19:06 | <bakkot> | I see one or two there which are properties |
19:07 | <Michael Ficarra> | someone claimed "group" was sufficiently obscure? what? |
19:07 | <HE Shi-Jun> | bakkot: https://github.com/search?q=language%3Ajavascript+grouptoobject&type=code |
19:07 | <ljharb> | in there i see Group.prototype.toObject but no prototype.groupToObject ? |
19:08 | <ljharb> | either way only 64 results on github is astonishingly rare |
19:08 | <shu> | yo i have an idea |
19:09 | <HE Shi-Jun> | What about the static methods? No need to worry the web compat issue. |
19:09 | <bakkot> | in this particular case I'm fine with static methods |
19:09 | <bakkot> | but I can imagine having other methods in the future |
19:09 | <bakkot> | e.g. I would really like a "sortBy" |
19:09 | <bakkot> | even though it unfortunately cannot be called that probably |
19:09 | <bakkot> | and it would be a huge shame for that to be static |
19:10 | <shu> | what if we change the |
19:11 | <Willian Martins> | Would it be possible to add it inside iterable helpers? |
19:12 | <HE Shi-Jun> | Would it be possible to add it inside iterable helpers? |
19:12 | <Bradford Smith> | Wouldn't it be Object.groupBy() since it returns an object? |
19:12 | <ljharb> | yeah i actually was thinking that too |
19:13 | <Michael Ficarra> | Willian Martins: no, we cannot fit a possibly infinite structure into a finite structure |
19:13 | <bakkot> | https://github.com/tc39/proposal-array-grouping/issues/51#issuecomment-1372786948 |
19:13 | <Willian Martins> | That makes sense. Thanks! |
19:13 | <bakkot> | Wouldn't it be |
19:13 | <bakkot> | was something else proposed? I missed it if so |
19:16 | <ljharb> | i think a few of us just misspoke and said "Array.groupBy" |
19:17 | <bakkot> | ah cool |
19:17 | <HE Shi-Jun> | There are already some stage 1 proposals of Array.prototype methods. For example Array.prototype.unique |
19:18 | <Michael Ficarra> | the stage 3 proposal list isn't huge, it shouldn't take long to go through them |
19:19 | <Michael Ficarra> | https://github.com/tc39/proposals#stage-3 |
19:22 | <littledan> | hey saminahusain ! |
19:22 | <littledan> | Could someone with admin rights give Samina the Custom(10) rights to post here? |
19:24 | <saminahusain> | Ok, thanks |
19:25 | <ljharb> | fwiw the group PR has been rebased: https://github.com/tc39/proposal-array-grouping/pull/47 spec is here: https://raw.githack.com/tc39/proposal-array-grouping/static-method/index.html |
19:26 | <Justin Ridgewell> | i think a few of us just misspoke and said "Array.groupBy" Object.groupBy |
19:59 | <pzuraq> | does anyone know how to say "if a List has at least one element" in spec? |
19:59 | <pzuraq> | does that statement work? |
20:00 | <ljharb> | "if a List is not empty"? |
20:01 | <ljharb> | we're at time so i need to hop off |
20:02 | <Michael Ficarra> | yeah you want "is not empty" |
20:02 | <Michael Ficarra> | pzuraq: might want to ask these questions in #tc39-editors:matrix.org next time |
20:03 | <shu> | what is happening |
20:04 | <shu> | are we, as tc39 delegates, able to confer IPR protection by forming a TG? |
20:04 | <bakkot> | I had to step away and did not capture speakers for the last few minutes |
20:04 | <shu> | like that's cool if we are |
20:04 | <bakkot> | please could people edit that into the notes |
20:04 | <bakkot> | if you remember who said what |
20:05 | <msaboff> | littledan: Since you fit this into a shorter time slot, you could bring this back as overflow later in this meeting for TG4 creation consensus. |
20:05 | <Michael Ficarra> | littledan: we will also have to assign chairs and (when we get approval for a new document) assign an editor group |
20:06 | <msaboff> | are we, as tc39 delegates, able to confer IPR protection by forming a TG? |
20:06 | <shu> | msaboff: how does the transfer of the existing source maps document work? |
20:07 | <shu> | or is the idea that we start with safeguarding newly produced IP by forming a new TG within which to produce new IP, then do the transfer and merge later with the existing doc? |
20:07 | <msaboff> | Not totally sure, but if all the participants are Ecma members it should be straightforward . |
20:08 | <littledan> | yeah the doc was written by Mozilla + Google so it should be fine |
20:08 | <shu> | huh, interesting |
20:08 | <shu> | that's cool |
20:09 | <littledan> | I'm vaguely sympathetic with the idea that we shouldn't jump straight into making a TG prematurely, but at the same time, adopting liberal IPR policy isn't the "too fast" part--it's really the only option for a modern open standard IMO. |
20:09 | <littledan> | littledan: Since you fit this into a shorter time slot, you could bring this back as overflow later in this meeting for TG4 creation consensus. |
20:10 | <littledan> | littledan: we will also have to assign chairs and (when we get approval for a new document) assign an editor group |
20:11 | <littledan> | If we create the TG, I think we can. |
20:13 | <msaboff> | littledan: I think just as long as those that participated in the current draft release any claim on IP. If it is only Google and Mozilla, that shouldn't be an issue. |
20:15 | <littledan> | I think it should be fine for us to collaborate on a draft with all the same legal theories that we use to participate in drafting the ECMA-262 spec |
21:11 | <littledan> | also note that the current source map spec is CC-licensed |
21:31 | <Ashley Claymore> | are Proxies allowed?
|
21:43 | <pzuraq> | bakkot spec has been updated: https://github.com/pzuraq/ecma262/pull/10/files |
21:47 | <littledan> | bakkot spec has been updated: https://github.com/pzuraq/ecma262/pull/10/files |
21:48 | <ljharb> |
|
21:48 | <pzuraq> | I love how small this specification is. It makes me feel like we got it right. |
21:48 | <pzuraq> | but we got there eventually |
21:49 | <littledan> | the final design is simpler than what I initially proposed |
21:49 | <littledan> | a lot simpler |
22:05 | <Kris Kowal> | I’m wondering whether decorators for derived classes are likely to continue to function if the Symbol.metadata of the base class is frozen. But more importantly, hoping there’s somewhere I can putter to find out. |
22:20 | <Ashley Claymore> | bakkot spec has been updated: https://github.com/pzuraq/ecma262/pull/10/files Function prototype @@metadata is null . Good hole to plug. |
22:21 | <Ashley Claymore> | (And non configurable) |
22:24 | <Ashley Claymore> | I’m wondering whether decorators for derived classes are likely to continue to function if the |
22:25 | <Kris Kowal> | Maybe we fix the overrride mistake but only for metadata objects? 😎 |
22:29 | <ljharb> | yes |
22:30 | <ljharb> | indeed i think it applies the same way here |
22:38 | <Kris Kowal> | That seems okay to me. |
22:38 | <Kris Kowal> | It’s the devil we know, any any case, and I imagine there will emerging convergent behaviors to promote composition of unrelated decorators, favoring disjoint gensyms on metadata when possible. |