Skip to content

Latest commit

 

History

History
107 lines (54 loc) · 10.5 KB

2016-05.md

File metadata and controls

107 lines (54 loc) · 10.5 KB

TC39 Meeting on May 2016

The last TC39 Meeting was hosted by Google in Munich, Germany. The experience and the location relieved the jet lag present to most of the participants. At the same time, it might have been a relief to those from Europe, as the meetings usually happen on the pacific coast in the US, with a 9 hour time difference from Munich.

The agenda was not long - and not short - but a couple of items took more time than expected, so we couldn't run through all items. Some of them I would have really liked to see addressed in this meeting, but they will need to wait until the next meeting.

As this report is not the meeting notes, I'll run through the highlights in an order differently than they happened, prioritizing what I believe to be the more interesting, polemic or in need of more discussion. Remember that's subjective, and there's no irrelevant items.

Before I jump into the next section, I want to quote part of this impressive statement on how ECMAScript is increasing its popularity and relevance:

The ECMAScript standards currently contribute to about 2/3 of all ECMA downloads of standards. Constantly we have about 5000-7000 downloads of ECMA-262 per month. That is the record holder standard. The HTML version has about 100000 visits in 2016 so far.

ES2016 is technically ready

ES2016 (ES7) is ready to become the new ECMAScript international standard. No technical changes can be made, only minor editorial changes are allowed.

With that we can say all the new features and any changes observable in the language are now candidates for ES2017 or later.

You can find the last draft of ES2016 here: https://tc39.github.io/ecma262/2016/ and the general draft - potentially ES2017 - here: https://tc39.github.io/ecma262

Syntactic Tail Calls

ES2015 shipped Tail Call Positions in the form of Proper Tail Calls (PTC). In the last TC39 meeting in March/2016, Apple reported they implemented PTC according to the specs in their runtime JavaScriptCore (JSC). Mozilla presented some security concerns in implementing it and Microsoft had other concerns on the lack of compatibility. Since then, TC39 is discussing a lot on how to address these concerns.

Microsoft and Mozilla presented a Syntactic Tail Calls proposal, as a way to flag tail call positions through an explicit syntax. There's a thread about this and it's a good place to get introduced to these items and the initial discussions.

Agreement between all parties on this topic is proving hard to find, and that is leading to super long discussions. Not surprising, it took almost a whole day of three from this last meeting, without a conclusion or a resolution.

You can find the meeting notes here and I believe the feedback from the webdev communities is the most important now as they are a decision maker in this browsers war.

TC39 members are nominated to receive the ECMA Award

This got just a small note in the meeting notes. It's great to see their names nominated to receive the ECMA Award. Their contributions to TC39 are super important and each one of them deserve this award.

Brian Terlson is the current editor of ECMAScript, and he's doing an amazing job coordinating ecma262 since it moved to GitHub. He was also the lead maintainer of test262 until 2015.

Rick Waldron was previously an editor for ecma402 and he started documenting the meeting notes.

Caridy Patiño is the current editor for ecma402 and is doing an amazing job leading the internationalization specs.

I have to say I'm super glad to see Rick in this list, as we are coworkers at Bocoup and are representing the jQuery Foundation at TC39.

The index reform on TypedArrays, ArrayBuffer and DataView

This was my first change in the specs where I needed consensus from TC39, and I got it!

While writing the tests for TypedArrays, DataView and ArrayBuffer to test262, I found some inconsistencies for the way these constructors and some DataView methods handle the length and offset indexes. So I sent a PR to fix it.

This is interesting as the first specs were imperfect as intended, doing its best to follow the original API from the Khronos Specs, but that was found as not web compatible, and it was good to fix them all in a consistent way.

You can find some data to see the changes compared to the old specs and how they got implemented in the runtimes.

Advancing proposals

If you don't know yet, proposals have to move from stage 0 to 4 to become part of the standard specs. You can find the process document here and a list with the proposals (0+) here.

I'll list the proposals that found consensus to advance to a new stage in this last meeting.

Stage 4

Do you remember that day when left-pad got unpublished from npm? That lead to amazing work from npm on this problem and now the problem is no longer a concern as you can find the API for padStart and padEnd in the specs.

Object.getOwnPropertyDescriptors advanced to stage 4.

Both proposals were championed by Jordan Harband, he did a nice work on these features.

Stage 2

Tim Disney's proposal fixes some bad behaviour from template literals, introduced in ES2015. TC39 has nominated reviewers for the proposals and it's now going to be refined to move to stage 3, hopefully in the next meeting.

Stage 1

Class and Object evaluation order was one of the first items discussed and it provides a reasonable way to evaluate properties and values.

Cancelable promises have also advanced to Stage 1, in the notes you can find the slides with the whole initial proposal. Don't jump directly to the slides, notice in the notes the proposal will be refined. The proposal embraced basically all the ways to cover the feature, including syntax changes, but I'm positive that only a subset will make it's way to stage 2.

Other proposals

A few other proposals didn't advance due to technical issues, including unavailable time. This included my new proposal on Object.enumerable{Keys, Entries, Values} - co-authored with John-David Dalton - which needs to wait until the next meeting, in Redmond, WA, to advance in the stage process. The same happened to System.global, which I really wanted to see moving to stage 3.

No proposal got rejected in a way that would cause them to be dropped or removed. So there's no worries here.

There's an interesting proposal on Observables which is worth checking out. The notes are here.

Other notes

JSExplain

Alan Schmitt demo'ed JSExplain, which parses JS and generates pseudo code making cross references to the specs. The tool needs some progress to become compatible with the current specs "syntax", but it's a nice tool to check coverage within the specs. That would be amazingly useful on test262.

Removing the deprecated python test runner from test262

There's a test runner in test262 which uses deprecated python tools and was deprecated in 2014. There's a new and modern option called test262-harness but it's made in Node.js and because of it, it's not compatible with the development infrastructure of some runtime implementors, even if it's easy for a web developer and it allows running tests in parallel.

After 2 years, we finally achieved consensus to remove the deprecated python runner while implementers will help find a way to create a new test runner. Meanwhile, maintaining this deprecated runner is not a concern of test262 anymore, and that allows the project to advance into new features and formats.

Time boxing proposals

TC39 is planning to provide prioritized, opt-in, timeboxed items to the agenda, to avoid items that don't see the light of the day by other long discussions. This is a nice strategy and I hope it provides a nice result in the next meeting, allowing all items from the agenda to be presented.

Final notes

This was the second meeting I attended, and the first representing the jQuery Foundation. It felt special to me as the last day (May 25th) was my birthday and I couldn't have a better gift and celebration, even if I omitted this information to everyone at the meeting. I was super happy to be part of TC39 co-authoring the international standard specs for JavaScript, more happy to represent a voice for the web developers, because that's what I am.

I'm grateful to all the support I am receiving from Bocoup, allowing me to dedicate so much precious time for this. My commitment wouldn't be possible without the great everyday support from Tyler Kellen, Brian Brennan, Mike Pennisi, Jory Burson, Rick Waldron and all the inspirational people I work with in this unique opportunity.

I'm also grateful to the jQuery Foundation and especially Dave Methvin and the amazing Standards team for believing I'm a fit for this work, once again a unique opportunity. This is an efforts based work where dedication provides greatness for everyone in the webdev communities.