ENCA 1日目: Normative Changes とは
ECMAScript の策定プロセス
JavaScript の言語仕様である ECMAScript は Ecma TC39 によって策定されています。大体隔月で会議をしており、その議題、議事録が公開されています。
ECMAScript に入れたい提案(プロポーザル)については TC39 の誰かが担当者(champion)となり、ステージを進めていきます。最終的に、コア機能については ECMA-262 へ、Intl
については ECMA-402 へ取り込まれます。
Editorial Changes と Normative Changes
ECMAScript の振る舞いや意味が変わらない仕様変更のことを Editorial Changes と呼びます。一方で振る舞いや意味が変わる変更は Normative Changes です。
Editorial Changes
Editorial Changes は typo の修正であったり、仕様の中身をわかりやすい表現に改めたりといった、いわばリファクタリング的な変更です。編集者(editor)による承認をもって取り込まれます。
最近入った Editorial Changes を一つ挙げると、今まで Well-known Symbols は仕様で @@iterator
のように記述されていましたが、デコレーターの提案と見た目が紛らわしいということから %Symbol.iterator%
と記述するように改められました。
これは既存の提案仕様や HTML や Web IDL など Web 標準仕様の修正が必要で影響が大きかったため、取り込まれるのに6年ほどかかったようです。
Normative Changes
繰り返しになりますが Normative Changes は振る舞いや意味を変える変更です。JavaScript エンジンの実装に影響を与えることもあり、会議での合意が必要となっています。各提案が仕様に取り込まれる場合についてが目立ちますが、実は提案とは別に小さい修正などを入れたい場合についても会議で合意が得られれば取り込まれます。
一つ例を上げると、オブジェクトリテラルの __proto__
と Object.prototype.__proto__
の仕様が Annex B から移動されました。前者は通常の仕様として、後者は NORMATIVE OPTIONAL, LEGACY として降格扱いとなりエンジンが実装しなくてよいものとして扱われるようになりました。
Annex B については Masaki Hara さんの記事が詳しいです。
1人 ECMAScript Normative Changes Advent Calendar 2024
このアドベントカレンダーでは TC39 会議で話題に出た(もしくは今後出るであろう)小さい修正について紹介していこうと思います。少しでも ECMAScript について興味を持ってくれれば嬉しいです。
Discussion