<div dir="ltr">One day I'm going to get used to the quirks of using this mailing list through gmail... Just changing the subject back....<br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jan 16, 2018 at 2:33 PM,  <span dir="ltr"><<a href="mailto:es-discuss-request@mozilla.org" target="_blank">es-discuss-request@mozilla.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Send es-discuss mailing list submissions to<br>
        <a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a><br>
<br>
To subscribe or unsubscribe via the World Wide Web, visit<br>
        <a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank">https://mail.mozilla.org/<wbr>listinfo/es-discuss</a><br>
or, via email, send a message with subject or body 'help' to<br>
        <a href="mailto:es-discuss-request@mozilla.org">es-discuss-request@mozilla.org</a><br>
<br>
You can reach the person managing the list at<br>
        <a href="mailto:es-discuss-owner@mozilla.org">es-discuss-owner@mozilla.org</a><br>
<br>
When replying, please edit your Subject line so it is more specific<br>
than "Re: Contents of es-discuss digest..."<br>
<br>Today's Topics:<br>
<br>
   1. Re: es-discuss Digest, Vol 131, Issue 29 (Ranando King)<br>
   2. Re: Proposal: Optional Static Typing (Part 3) (Isiah Meadows)<br>
<br><br>---------- Forwarded message ----------<br>From: Ranando King <<a href="mailto:kingmph@gmail.com">kingmph@gmail.com</a>><br>To: es-discuss <<a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a>><br>Cc: <br>Bcc: <br>Date: Tue, 16 Jan 2018 10:19:58 -0600<br>Subject: Re: es-discuss Digest, Vol 131, Issue 29<br><div dir="ltr">Your statements are no less true for the essential internal methods than they are for the traps of a [[ProxyHandler]]. That's my point. This work is already being done using the internal methods. I'm just asking that where calls to internal methods exist, if the object on which the call was made is a Proxy, then all calls to the internal methods need to be made via the [[ProxyHandler]] of that Proxy object. None of the storage requirements to validate the invariants will change.</div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jan 16, 2018 at 6:00 AM,  <span dir="ltr"><<a href="mailto:es-discuss-request@mozilla.org" target="_blank">es-discuss-request@mozilla.<wbr>org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Send es-discuss mailing list submissions to<br>
        <a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<br>
To subscribe or unsubscribe via the World Wide Web, visit<br>
        <a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank">https://mail.mozilla.org/listi<wbr>nfo/es-discuss</a><br>
or, via email, send a message with subject or body 'help' to<br>
        <a href="mailto:es-discuss-request@mozilla.org" target="_blank">es-discuss-request@mozilla.org</a><br>
<br>
You can reach the person managing the list at<br>
        <a href="mailto:es-discuss-owner@mozilla.org" target="_blank">es-discuss-owner@mozilla.org</a><br>
<br>
When replying, please edit your Subject line so it is more specific<br>
than "Re: Contents of es-discuss digest..."<br>
<br>Today's Topics:<br>
<br>
   1. Re: An idea to extend the functionality of Proxy objects.<br>
      (Oriol _)<br>
   2. Re: Proposal: Optional Static Typing (Part 3) (Brandon Andrews)<br>
   3. Re: Proposal: Optional Static Typing (Part 3) (Brandon Andrews)<br>
<br><br>---------- Forwarded message ----------<br>From: Oriol _ <<a href="mailto:oriol-bugzilla@hotmail.com" target="_blank">oriol-bugzilla@hotmail.com</a>><br>To: "<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a>" <<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a>><br>Cc: <br>Bcc: <br>Date: Mon, 15 Jan 2018 16:38:39 +0000<br>Subject: Re: An idea to extend the functionality of Proxy objects.<br>




<div dir="ltr">
<div id="m_-7026435146535129883m_3205288611950311294divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Helvetica,sans-serif" dir="ltr">
<div>The problem is enforcing the invariants. For example, if [[GetOwnProperty]] returns a non-configurable non-writable descriptor, then all future calls must also return a non-configurable non-writable descriptor with the same value. But you can't check this
 by just calling some traps. Instead, you need to store the property value value somewhere so that you can compare in all future calls. And the target object is the perfect place to store it.<br>
<br>
If the invariants prevent your traps from behaving like you want, just use an extensible object with no non-configurable property as the target.<br>
<br>
- Oriol</div>
<br>
</div>
</div>

<br><br>---------- Forwarded message ----------<br>From: Brandon Andrews <<a href="mailto:warcraftthreeft@sbcglobal.net" target="_blank">warcraftthreeft@sbcglobal.net</a><wbr>><br>To: "Michał Wadas" <<a href="mailto:michalwadas@gmail.com" target="_blank">michalwadas@gmail.com</a>><br>Cc: Es-discuss <<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a>><br>Bcc: <br>Date: Tue, 16 Jan 2018 00:46:06 +0000 (UTC)<br>Subject: Re: Proposal: Optional Static Typing (Part 3)<br>>> Part of this has had me considering if freezing classes (and all recursively referenced types) used in the type system is viable.<br>
<br>
<br>
```js<br>
function foo(bar: Array.<Set>)<br>
{<br>
// whatever<br>
}<br>
[Array, Set] = [Set, Array];<br>
foo(new Array([Set()]));<br>
```<br>
<br>
> You can't freeze all builtins for obvious reasons.<br>
<br>
<br>
I'm out of ideas. Do you or anyone here see a way to get around such an issue?<br>
<br>
> You totally omitted point that your type system can't use or describe this function:<br>
<br>
<br>
```js<br>
function issue(Ctor)<br>
{<br>
        assert(Reflect.isConstructor(C<wbr>tor)); // Type system don't provide way to disguintish object with [[Construct]] and [[Call]] methods.<br>
        assert(Foo.isPrototypeOf(Ctor)<wbr>); // Type system don't provide way to ensure prototypal inheritance<br>
<br>
        const retClass = class extends Ctor // Type system don't provide way to describe types being returned from function<br>
        {<br>
        };<br>
        Object.assign(retClass.prototy<wbr>pe, mixin); // Object.assign can be overridden to do anything, so actual code execution is required to prove it's valid<br>
        return retClass;<br>
}<br>
```<br>
<br>
Just to be clear. Is Ctor a type? Like "class Ctor extends Foo {}" or an instance? If it's a Type it might be better handled with generics later like:<br>
<br>
```js<br>
function issue<Ctor extends Foo>(mixin)<br>
{<br>
        const retClass = class extends Ctor<br>
        {<br>
        };<br>
        Object.assign(retClass.prototy<wbr>pe, mixin);<br>
        return retClass;<br>
}<br>
```<br>
<br>
I hope I understood the requirements. Is it necessary to allow the type system to handle passing types as arguments? Do other languages allow this?<br>
<br>
```js<br>
assert(Reflect.isConstructor(C<wbr>tor)); // Type system don't provide way to disguintish object with [[Construct]] and [[Call]] methods.<br>
```<br>
<br>
So you'd expect a language feature like an interface that mandates a constructor or something more general like "this object is a class"?<br>
<br>
```js<br>
assert(Foo.isPrototypeOf(Ctor)<wbr>); // Type system don't provide way to ensure prototypal inheritance<br>
```<br>
<br>
So I should explicitly state that derived classes can be passed to parameters typed with their super like most languages allow like:<br>
<br>
```js<br>
class A {}<br>
class B extends A {}<br>
function f(a:A) {}<br>
f(new B()); // Valid<br>
```<br>
<br>
In your example:<br>
<br>
```js<br>
function issue(Ctor:Foo):Foo<br>
{<br>
}<br>
class A {}<br>
// issue(new A()); // TypeError, A must be type Foo or extended from Foo<br>
```<br>
<br>
Is that sufficient?<br>
<br>
```js<br>
const retClass = class extends Ctor // Type system don't provide way to describe types being returned from function<br>
{<br>
};<br>
```<br>
<br>
Would this be asking for interfaces and structural matching like in TypeScript? I left it out originally to simplify the proposal with the expectation it would be added in later. Do you see this more as a mandatory feature? "any" can be used in the meantime unless I'm mistaken. (I should probably add a section in the proposal covering this).<br>
<br>
<br><br>---------- Forwarded message ----------<br>From: Brandon Andrews <<a href="mailto:warcraftthreeft@sbcglobal.net" target="_blank">warcraftthreeft@sbcglobal.net</a><wbr>><br>To: "Michał Wadas" <<a href="mailto:michalwadas@gmail.com" target="_blank">michalwadas@gmail.com</a>><br>Cc: Es-discuss <<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a>><br>Bcc: <br>Date: Tue, 16 Jan 2018 09:34:44 +0000 (UTC)<br>Subject: Re: Proposal: Optional Static Typing (Part 3)<br>Some follow-up as I think more about this.<br>
<br>
<br>
> You can't freeze all builtins for obvious reasons.<br>
<br>
<br>
I'm getting that the reason for not freezing them would be to define extensions? Could they not be defined and then frozen? I get that doesn't stop them from being dynamic still.<br>
<br>
<br>
The ability to change the built ins like Object causes a number of issues as it makes all classes dynamic and your destructuring swap shows that well. It seems like as long as Object can be modified everything has to use run-time checking.<br>
<br>
<br>
If Object could be made non-dynamic - froze it and made it const (or equivalent) - then one could write:<br>
<br>
<br>
```js<br>
const f = function(a:A)<br>
{<br>
        a.x = 0;<br>
}<br>
const A = new class<br>
{<br>
        x:uint8 = 5; // Object.defineProperty(A.protot<wbr>ype, 'x', { type: uint8, writable: true, value: 5 }); (I think, might have to think about this again, been a while).<br>
}<br>
f(new A()); // A is dynamic and the interpreter is forced to use a run-time check.<br>
<br>
Object.freeze(A); // A is both const and frozen making it no longer dynamic? If the dynamicness was removed then the engine could search the code/AST and optimize f doing essentially a compile-time check at that point<br>
<br>
f(new A()); // Compile-time verification for all instances of f where the argument is typed or the type can be inferred.<br>
```<br>
<br>
<br>
This usage of const works at global scope, but I feel like I'm missing something that would undermine this. Like without real namespace support this won't work well for some libraries. The syntax is also wordy and confusing. One could add const class A {} modifiers, but that's still confusing since codebases would be filled with it.<br>
<br>
<br>
Also expecting users to freeze their classes to allow the interpreter and JIT to function sanely is asking a lot.<br>
<br>
<br>
One problem that keeps bothering me is this delayed freezing doesn't help tooling. A class could be created, properties added in a complex operation, then the class frozen later. The tooling would be blind to all these changes.<br>
<br>
<br>
I'm probably just barely touching the surface of issues. Anything I'm overlooking?<br>
<br>
<br>______________________________<wbr>_________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank">https://mail.mozilla.org/listi<wbr>nfo/es-discuss</a><br>
<br></blockquote></div><br></div>
<br><br>---------- Forwarded message ----------<br>From: Isiah Meadows <<a href="mailto:isiahmeadows@gmail.com">isiahmeadows@gmail.com</a>><br>To: kai zhu <<a href="mailto:kaizhu256@gmail.com">kaizhu256@gmail.com</a>><br>Cc: Brandon Andrews <<a href="mailto:warcraftthreeft@sbcglobal.net">warcraftthreeft@sbcglobal.net</a>>, "<a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a>" <<a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a>><br>Bcc: <br>Date: Tue, 16 Jan 2018 15:32:36 -0500<br>Subject: Re: Proposal: Optional Static Typing (Part 3)<br>Inline.<br>
<br>
-----<br>
<br>
Isiah Meadows<br>
<a href="mailto:me@isiahmeadows.com">me@isiahmeadows.com</a><br>
<br>
Looking for web consulting? Or a new website?<br>
Send me an email and we can get started.<br>
<a href="http://www.isiahmeadows.com" rel="noreferrer" target="_blank">www.isiahmeadows.com</a><br>
<br>
On Tue, Jan 16, 2018 at 7:44 AM, kai zhu <<a href="mailto:kaizhu256@gmail.com">kaizhu256@gmail.com</a>> wrote:<br>
><br>
> more ranting.<br>
> tldr - javascript-programmers are more productive spending their limited-time documenting and writing validation-code for endpoint-level rest-apis instead of for code-level business-logic (swagger/openapi is more useful than OST/flow/typescript).<br>
><br>
> i'm generally a javascript-architecture skeptic.  from my experience in industry, there is zero-correlation between careful architecting (*cough* bikeshedding) and successfully getting over the javascript-integration hump to ship a product<br>
<br>
I only partially agree. For most smaller things, and even some<br>
mid-sized projects (e.g. simple DB servers with REST APIs), all you<br>
really need to architect is your API, and the rest will largely fall<br>
out naturally. The front and back end are probably equal in this.<br>
<br>
> the “best" architecture/design for any given web-project is whatever ad-hoc hacks/rewrites/fire-fighting it takes to get you past the integration-stage [...]<br>
<br>
If it doesn't include a lot of business logic in JS, then sure. I can<br>
tell you my blog, which includes mostly hand-written JS, is a big ball<br>
of mud on the front end. But it works.<br>
<br>
> [...] (and javascript-fatigue is partly the realization from naive newcomers that you almost always end up with spaghetti-code after integration, no matter how hard you fight it).<br>
<br>
Disagree here, particularly on the meaning of "JavaScript fatigue".<br>
That phrase came to be not because of anything about what frameworks<br>
do to your code, but from:<br>
<br>
1. The fact that build systems are/were getting unnecessarily complex.<br>
For some communities (React in particular was notorious), it may take<br>
setting up 10+ modules independently, each with non-trivial<br>
configuration, just to get started on the simple stuff.<br>
2. The ecosystem at large was, and still is, churning at such a fast<br>
rate that people were struggling to keep track of it all, and<br>
consequently had issues adjusting to it. React's community was also a<br>
notorious offender for iterating too quickly, but that is at least<br>
starting to settle down.<br>
<br>
Neither of these actually directly relate to the code quality<br>
underneath, and even those who enjoyed the frameworks/libraries<br>
themselves were getting tired and stressed over trying to keep up with<br>
everything.<br>
<br>
> it might be different at microsoft/facebook/google, but their abnormal tooling environments (and resulting skewed world-view of javascript) are hardly representative of the industry as a whole.<br>
<br>
First, could you please quit assuming that those companies are the<br>
primary users of things like TypeScript/etc.? I could understand Flow<br>
being very specific to Facebook (it's rarely used outside of Facebook<br>
and React apps), but TypeScript, not so much - it's the 9th most<br>
popular language according to Stack Overflow's most recent Developer<br>
Survey. [1] At this point, it's about as popular as Ruby, according to<br>
the survey's participants, and there's *no* way that the combination<br>
of the three could account for any more than a small minority of the<br>
participants:<br>
<br>
- Microsoft developed TypeScript, and has been using it for a while -<br>
this is probably a given.<br>
- Facebook almost exclusively uses Flow - you could've probably guessed this.<br>
- Google internally relies primarily on either GWT (Java to JS) or the<br>
Closure Compiler (uses JSDoc for types) for type checking, and only<br>
last year started allowing unrestricted development using TypeScript.<br>
[2]<br>
<br>
So the only corporation that could substantially contribute directly<br>
to TypeScript's dominance would be Microsoft, and Google's influence<br>
is more indirect (they use Angular, which bases its entire ecosystem<br>
on TypeScript, but they aren't one of Angular's primary users).<br>
<br>
Second, those three aren't even primary users of even Webpack. In<br>
fact, two of Webpack's biggest backers are Adobe and Capital One (yes,<br>
that financial company), each having given $12K to that OSS project.<br>
[3]<br>
<br>
[1]: <a href="https://insights.stackoverflow.com/survey/2017#most-popular-technologies" rel="noreferrer" target="_blank">https://insights.<wbr>stackoverflow.com/survey/2017#<wbr>most-popular-technologies</a><br>
[2]: <a href="https://news.dartlang.org/2017/04/dart-typescript-and-official-languages.html" rel="noreferrer" target="_blank">https://news.dartlang.org/<wbr>2017/04/dart-typescript-and-<wbr>official-languages.html</a><br>
[3]: <a href="https://webpack.js.org/" rel="noreferrer" target="_blank">https://webpack.js.org/</a><br>
<br>
><br>
> what does correlate with successfully shipping a product, is having well-documented endpoint rest-apis, so the frontend-folks aren’t completely clueless during integration when they try talking to the backend, and it doesn’t respond or timeout for some reason.  a web-project has a higher chance of shipping successfully if you spend your limited engineering-time doing integration-level documentation and validation-checking (using swagger as shown in following screenshots) instead of code-level OST which nobody talking to your server during integration cares about:<br>
<br>
Yes, if you're dealing mostly with clients as a freelancer or<br>
small-time developer. If you're rolling your own data-driven business<br>
or complex web app, types become invaluable. There's a key difference<br>
between doing things for clients with much smaller needs, and doing<br>
things for your own high-tech business. I have experience in both, and<br>
I can assure you, there's a whole world of difference between the two.<br>
For one, ugly hacks work in one-off projects, but not for anything you<br>
have to sustain and put substantial amounts of time to maintain.<br>
<br>
><br>
> (these screenshots are from real-world endpoint rest-apis that have been documented with integration-level type-checking using swagger - <a href="https://kaizhu256.github.io/node-swgg-google-maps/build..beta..travis-ci.org/app/" rel="noreferrer" target="_blank">https://kaizhu256.github.io/<wbr>node-swgg-google-maps/build..<wbr>beta..travis-ci.org/app/</a>)<br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
> On Jan 11, 2018, at 10:01 PM, Isiah Meadows <<a href="mailto:isiahmeadows@gmail.com">isiahmeadows@gmail.com</a>> wrote:<br>
><br>
> From a quick read, I'm more in favor of something that's a little more restricted to start, something like what Python has. Python has optional static type annotations, but the Python interpreter just ignores them. They are present purely for the purposes of tooling, and are silently ignored at runtime.<br>
><br>
> Conversely, PHP took a similar approach and initially also made it cosmetic to start, only later taking advantage of *some* type annotations by adding runtime behavior to some of the simpler ones (like primitives).<br>
><br>
> One of the reasons why I'd prefer a simpler approach to start is that TypeScript and Flow, the two main implementations that add syntax, have a *very* similar syntax, but have several nuances that would make a heavier proposal much harder to accomplish:<br>
><br>
> - Flow has `?Foo` for optional types, TypeScript just uses unions.<br>
> - TypeScript has mapped/index types, where Flow uses special named types.<br>
> - Flow allows omitted parameter names in function types, TypeScript only allows named parameters with implicit `any` types.<br>
> - Flow has exact types, TypeScript doesn't.<br>
> - Flow has `opaque type`, TypeScript only has `type`.<br>
> - Flow constrains with `T: Super`, TypeScript uses `T extends Super`.<br>
> - Flow has 3 different ways of importing bindings a module (depending on what's being imported), TypeScript only has one.<br>
> - Flow has existential types, TypeScript doesn't.<br>
><br>
> Also, both TypeScript and Flow are still working out how to properly type some of the more advanced JS (like variadic functions and auto-curried functions), so their syntax is *still* not exactly stable enough I'd feel comfortable encoding much into the spec. (They do have a stable core, though.)<br>
><br>
> One other thing is that multiple active proposals could end up requiring TS and/or Flow to substantially change parts of their syntax, including:<br>
><br>
> - Private [fields][1] and [methods][2] (stage 3 and 2 respectively, affects TS)<br>
> - [First class protocols][3] (stage 1, affects both TS and Flow)<br>
> - [Typed literals][4] (stage 1, affects TS mostly)<br>
><br>
> [1]: <a href="https://github.com/tc39/proposal-class-fields" rel="noreferrer" target="_blank">https://github.com/tc39/<wbr>proposal-class-fields</a><br>
> [2]: <a href="http://github.com/tc39/proposal-static-class-features/" rel="noreferrer" target="_blank">http://github.com/tc39/<wbr>proposal-static-class-<wbr>features/</a><br>
> [3]: <a href="https://github.com/michaelficarra/proposal-first-class-protocols" rel="noreferrer" target="_blank">https://github.com/<wbr>michaelficarra/proposal-first-<wbr>class-protocols</a><br>
> [4]: <a href="https://github.com/mikewest/tc39-proposal-literals" rel="noreferrer" target="_blank">https://github.com/mikewest/<wbr>tc39-proposal-literals</a><br>
><br>
> -----<br>
><br>
> Isiah Meadows<br>
> <a href="mailto:me@isiahmeadows.com">me@isiahmeadows.com</a><br>
><br>
> Looking for web consulting? Or a new website?<br>
> Send me an email and we can get started.<br>
> <a href="http://www.isiahmeadows.com" rel="noreferrer" target="_blank">www.isiahmeadows.com</a><br>
><br>
> On Thu, Jan 11, 2018 at 3:09 AM, Pranay Prakash <<a href="mailto:pranay.gp@gmail.com">pranay.gp@gmail.com</a>> wrote:<br>
>><br>
>> I'm still yet to read the entire proposal, but with a quick skim, it seems to me like this is essentially what Typescript or Flow offers you: i.e. an opt-in type system?<br>
>><br>
>> I'm wondering if you have any good reasons to want there to be a standardised static type annotation syntax within ECMAScript instead of a "Bring Your Own Type Checker" system.<br>
>> If you do have some thoughts on this, you might also want to include that as a preface on your Github's README.You have a "Rationale" bit that seems to ignore the existence of these existing systems.<br>
>><br>
>> Waiting to hear more thoughts on this :)<br>
>><br>
>> On Thu, 11 Jan 2018 at 11:56 Brandon Andrews <<a href="mailto:warcraftthreeft@sbcglobal.net">warcraftthreeft@sbcglobal.net</a><wbr>> wrote:<br>
>>><br>
>>> It's been a year and a half since my last post and I've made a number of small changes and corrections over 2.5 years. The proposal is still on my github at:<br>
>>><br>
>>><br>
>>> <a href="https://github.com/sirisian/ecmascript-types" rel="noreferrer" target="_blank">https://github.com/sirisian/<wbr>ecmascript-types</a><br>
>>><br>
>>> I've talked to a lot of people about it, but I haven't gotten much criticism or suggested improvements. I'm a bit in over my head in trying to flesh out all the details or all the nuanced syntax changes that a championed proposal would be expected to do. That said I've been making more changes lately to try to find edge cases and potential problems.<br>
>>><br>
>>><br>
>>> I've been jotting down issues here: <a href="https://github.com/sirisian/ecmascript-types/issues" rel="noreferrer" target="_blank">https://github.com/sirisian/<wbr>ecmascript-types/issues</a> I closed a number of them recently as I made changes.<br>
>>><br>
>>> If anyone has any comments on what I should expand, look into more, or change I'm open to discussing them here or on github.<br>
>>><br>
>>> One issue in particular is this: <a href="https://github.com/sirisian/ecmascript-types/issues/15" rel="noreferrer" target="_blank">https://github.com/sirisian/<wbr>ecmascript-types/issues/15</a> It covers whether I should introduce a new assignment operator to my proposal. Maybe there's another way to look at it or a different solution. I need fresh eyes on the whole proposal really to get a list of new issues to tackle this year.<br>
>>><br>
>>> I'm also not against having one or multiple people champion it and working on it without me. (I haven't been able to dedicate time to read the ECMAScript spec and really understanding the grammar fully so having someone qualified to take over would help the proposal a lot).<br>
>>><br>
>>><br>
>>> Thanks for reading the proposal for anyone that has the time.<br>
>>> ______________________________<wbr>_________________<br>
>>> es-discuss mailing list<br>
>>> <a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a><br>
>>> <a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank">https://mail.mozilla.org/<wbr>listinfo/es-discuss</a><br>
>><br>
>><br>
>> ______________________________<wbr>_________________<br>
>> es-discuss mailing list<br>
>> <a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a><br>
>> <a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank">https://mail.mozilla.org/<wbr>listinfo/es-discuss</a><br>
>><br>
><br>
> ______________________________<wbr>_________________<br>
> es-discuss mailing list<br>
> <a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a><br>
> <a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank">https://mail.mozilla.org/<wbr>listinfo/es-discuss</a><br>
><br>
><br>
<br>
<br>______________________________<wbr>_________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank">https://mail.mozilla.org/<wbr>listinfo/es-discuss</a><br>
<br></blockquote></div><br></div></div>