はじめに
three.js で簡単な星空を描画するプログラムを作成して以降も、何かと javascript を使ってきましたが、ふと、javascript で実装される新機能などはどのようにして決定するのかという疑問を持ちました。
調べた結果、Ecma International による正式仕様となるまでの過程が公開されているようなので、備忘のために投稿しました。
実装する機能を決定する組織等について
Ecma International という情報通信システムの分野における国際的な標準化団体の元で、ECMAScript (エクマスクリプト) という javascript の標準仕様として、手続きが行われています。
ECMAScript は、ECMA-262 という規格番号で標準化されており、Edition 番号で更新が行われています。
2015年までは 単純に 1, 2, 3, ... 6 といったような形でしたが、2016年以降はその年を Edition 番号とするようになりました。
今年は 2020年なので、Edition は「ECMAScript 2020」となります。
新仕様が確認できるページ
- 仕様情報:Draft ECMA-262
- ステータスや策定プロセス、各種文書:emca262 の Github
正式仕様になるまでのプロセスとスケジュール
プロセスについては、The TC39 Process (https://tc39.es/process-document/) のページに記載されています。
0 から 4 のステージがあり、stage4 になってかつ EMCA 総会で承認されると、正式仕様となります。
スケジュールについてですが、The TC39 Process の「Spec revisions and scheduling」に記載されている以下のスケジュールを経て、毎年 7 月に承認されて正式仕様となります。
- ~ 1月:新仕様の候補が決定されます。
- 2月 ~ 3月:ロイヤリティーフリーで使用できます。
- 3月:TC39 によって、stage4 のものが新仕様として組み込まれます。
- 4月 ~ 6月:ECMA CC と ECMA GA によるレビューが行われます。
- 7月:ECMA 総会にて、正式仕様として承認されます。
新仕様の候補(本投稿公開時点:1/7)
新仕様の候補を確認したい場合は、emca262 の Github の README.md にある Finished Proposals で見ることができます。
具体的には、「Expected Publication Year」列が 2020 のものとなります。
ただ、stage4 になったけれども諸事情により stage3 になっている仕様 (例えば、「for-in mechanics」) があるため、実際に Finished Proposals の一覧から各 proposal の詳細を見た方がよいと思われます。
次の 8 つが新仕様の候補となっていました。
- [String.prototype.matchAll] (https://github.com/tc39/proposal-string-matchall)
- [import()] (https://github.com/tc39/proposal-dynamic-import)
- [BigInt] (https://github.com/tc39/proposal-bigint)
- [Promise.allSettled] (https://github.com/tc39/proposal-promise-allSettled)
- [globalThis] (https://github.com/tc39/proposal-global)
- [for-in mechanics] (https://github.com/tc39/proposal-for-in-order)
⇒現在は stage3 - [Optional Chaining] (https://github.com/tc39/proposal-optional-chaining)
- [Nullish coalescing Operator] (https://github.com/tc39/proposal-nullish-coalescing)
⇒現在は stage3
なお、各詳細ページに使用例が記載されていますので、非常に参考になります。
最後に
各新仕様の候補の具体的な使い方についてはこれから確認していくことになりますが、いったんは javascript の最新の仕様情報をどのように確認するのかを纏めてみました。
皆様の情報収集の一助になれば幸いです。
参考
- [JavaScriptの次の仕様ES2019で追加されることが決定した新機能まとめ] (https://qiita.com/tonkotsuboy_com/items/07f8ef98abf89250b90c)