はじめに
ECMAScript 第2部 Conformance の概要と補足についてまとめます。
「Conformance」は直訳すると「準拠」です。
「ECMAScript準拠の実装における注意事項」が記載されています。
ECMAScript準拠の実装における注意事項
- ECMAScriptに記載されている以下のすべてを提供し、サポートする必要がある
- 型
- 値
- オブジェクト
- プロパティ
- 関数
- プログラム構文
- セマンティクス(コードの意味)
- 以下の国際標準の最新バージョンに準拠してソーステキスト入力を解釈する必要がある
- Unicode Standard
- ISO / IEC 10646
- APIを提供する場合は、最新の ECMA-402 仕様に準拠して実装する必要がある
※ ECMA-402 は、ECMAScript 言語仕様を定義した ECMA-262 を補完する、APIについて定義されたドキュメントです
- ECMAScriptに記載されていない、追加の以下の機能を提供する場合がある
- 型
- 値
- オブジェクト
- プロパティ
- 特に、記載のあるオブジェクトに対し、記載のないプロパティと値を提供する場合がある
- 関数
- ECMAScriptに記載されていない、追加の以下の機能をサポートする場合がある
- プログラム構文
- 特に、12.7.2 に記載されている「future reserved words」を利用するプログラム構文をサポートする場合がある
- 正規表現
- プログラム構文
- 17.1 で禁止された拡張機能を実装してはならない
- ECMAScriptで定義された機能を、定義されていない仕様で再定義することはできない
※ 訳の正確性に疑問1
- 「Normative Optional として定義されているもの」を実装するかどうかは選択できる。ただし、これを実装する場合は、Normative Optional に定義された動作すべてを実装する必要がある
- 「Legacy として定義されているもの」は非推奨の機能だが後方互換性のため実装しなくてはならない。「Normative Optional」としても定義されている場合は、その限りではない
NORMATIVE OPTIONAL / LEGACY について
こちらの記事が大変参考になりました。
Webブラウザ Webブラウザ以外の処理系 JavaScriptプログラマ NORMATIVE OPTIONAL 実装しなくてよい 実装しなくてよい LEGACY 実装する必要がある 実装する必要がある 使うべきではない Annex B 実装する必要がある 実装しなくてよい 使うべきではない NORMATIVE OPTIONAL, LEGACY 実装しなくてよい 実装しなくてよい 使うべきではない
NORMATIVE OPTIONAL の使用ケースについて
現在は WeakRef.prototype.constructor が唯一の利用例になっています。
とのことでした。
おわりに
文字コードやAPIについても言及されているのが面白かったです。
次は何を書こうかしら・・・
-
"A conforming implementation of ECMAScript must not redefine any facilities that are not implementation-defined, implementation-approximated, or host-defined." ↩