Node.js v20 から使える ECMAScript の新機能
Node.js v20 リリースされました。
V8 のバージョンが 11.3 まで上がったことで、いくつかの新しい ECMAScript の機能が使えるようになりました。v
フラグが好きなのでうれしいです。
どのバージョンからどの機能が使えるようになったかとか忘れてしまうのでメモしておきます。
String.prototype.isWellFormed
/ String.prototype.toWellFormed
文字列が Well Formed Code Unit Sequence かどうか判定する isWellFormed
と、それに変換する toWellFormed
が追加されます。WebIDL の文脈では USV 文字列とか言われますね。
これは WebAssembly みたいな USV 文字列前提の環境とやり取りするときに便利。Babel みたいな JavaScript を解釈するツールを JavaScript で書くときにも便利かも。
このあたりの話は過去に Cybozu フロントエンドエキスパートチームのブログに書いたのでよければそっちを参照してください。この記事自体は ES2022 の import/export 周りの解説ですが、合わせて USV 文字列とかについても解説しています。
Change Array by Copy
Array.prototype.sort
とか、Array.prototype.reverse
とか、レシーバの配列を変更するので面倒くさいですよね。破壊しないやつを用意しました、という提案です。
有名な提案ですよね。過去にブログも書きましたが当時とはだいぶ変わっています。
当時は今よりももっと多くのメソッドをサポートする予定だったみたいですが、最終的には次の4つ(+ それの TypedArray 版)だけになりました。
Array.prototype.toReversed()
Array.prototype.toSorted(compareFn)
Array.prototype.toSpliced(start, deleteCount, ...items)
Array.prototype.with(index, value)
Resizable ArrayBuffer
ArrayBuffer が可変になる提案です。ArrayBuffer を作るときに最大長を指定して、その長さの内なら resize
メソッドでサイズが変更できるようになります。
petamoriken さんの記事が詳しいので、そちらを参照してください。
v
フラグ
正規表現の v
フラグ大好き!一番好きなフラグです!
正規表現に v
フラグを追加する提案です。v
フラグ下では Set Notation と Properties of Strings が有効になります。僕はこのプロポーザルが大好きなので大変うれしいです。使い所はあんまり思いついていないですが。
このプロポーザルについても petamoriken さんの記事が詳しいので、そちらを参照してください。
あと、Unicode と正規表現のインテグレーションについては UTS#18 を参照してください。
Discussion