読者です 読者をやめる 読者になる 読者になる

ES2016の追加機能が決定、あるいはES7言うな問題

今年6月に公開予定の ECMAScript 2016 (ES7) で追加される機能が以下の2つに決定した。

今後は3月1日にスペックのスナップショットが切られ、6月の公開に向けた作業が始まる

あれ、ES7ってそれだけなの?と思った方は、ぜひ ECMAScript の新しい策定プロセスを確認されたし。

標準化には2つの実装が要求される

昨年公開されたES6以降、ECMAScript の仕様策定プロセスは機能ベースで毎年リリースするスタイルになった。

細かいプロセスは 『ECMAScriptの仕様策定に関するカンニングペーパー | Web Scratch』 を参照してもらうとして、重要なポイントは、提案機能が標準化される(Stage 4になる)ためには2つ以上の実装が必要ということ。

今回のES2016については、1月26-28日にSans Franciscoで開かれたTC39 Meetingをもって実装の締め切り宣言がなされた。

Exponentiation Operator の実装状況は、EdgeがPreview版にフラグ付きで実装済みSpiderMonkey (Firefox Nightly) では実装済み、という状況。これで実装が2つとカウントされたことから、少なくとも4大ブラウザに実装されればフラグ付きだったりStable版でなかったりしてもカウントされると考えて良さそう。V8には実装されたけどChromeには載ってない、とかだとどうなんだろう。

ちなみに Async/Await は Edge Preview にフラグ付きで実装されただけだったので、実装2つには足りず ES2017 に持ち越された。

ES7 言うな問題

ES2016 (ES7) が確定したので、改めて。

Firefox Dev Confのスライド にも書いたのだけど、ECMAScriptの新しい仕様策定プロセスの不理解や過去の経緯から "ES7 Decorator" や "ES7 Async/Await" という言葉が使われがちという問題があった。いよいよES7の機能セットが確定して明らかな誤用と言えるレベルになってきたので、さすがにもう使うべきでない。

Stage 3以下の提案中の仕様については、ES.nextとかES proposalsと言及するか、あるいは単にESと言う方がまだ誤解が少ない。

domenicも言っているようにECMAScript においてはもはやバージョン番号は重要ではないのだから。

追記

ときを同じくして Dr. Axel 先生も同じようなエントリを書いてた。

If you are disappointed that your favorite stage 3 feature did not make it into ES2016 – don’t worry: With the new release process, it’s more about the stage a proposal is in than what release it is a part of. As soon as a proposal reaches stage 4, it is done and safe to use.

The final feature set of ECMAScript 2016 (ES7)

書かれてる通り、ある機能が ES2016 に入るか入らないかはあまり重要ではない。その機能が Stage 4 に上がる(実装が2つ揃う)のがいつなのかが重要なのであって、その時点が含まれるのが ES2016 か ES2017 なのかは年度の切り替えがいつかという手続き上の問題に過ぎないので。

追追記

Jay Phelpsがほぼ同じ記事をポストしている。

彼はES.nextよりもさらに誤解の少なくなるよう、"stage-1 decorators" のように "stage-x" を付けて呼ぶか、または単に "proposed features" と呼ぶことを推奨している。