ecma262を読んでいく
学習目的で https://tc39.es/ecma262/ を読んでいき、気になった点などを雑多にまとめていく。2024がもうすぐリリースされそうに見えるので https://ecma-international.org/publications-and-standards/standards/ecma-262/ ではなくこちらを読む。
2024がリリースされたら https://ecma-international.org/publications-and-standards/standards/ecma-262/ を読む。
読み始めた時点のバージョンは ft ECMA-262 / December 6, 2023
。
*まとめ途中です
Introduction
1st
That Ecma Standard was submitted to ISO/IEC JTC 1 for adoption under the fast-track procedure, and approved as international standard ISO/IEC 16262, in April 1998.
Ecam StandardがISOに届け出られていたことを知らなかった。今でも言語仕様はISOに届け出るんだろうか?それともある特定の分野で使われるような言語のみ?
最初期の定義では言語仕様として何を提供していたのか気になってきた。(Rustが何を1stリリースに乗せるか色々話があったのを知り、それもあって気になっている)
3rd
The third edition of the Standard introduced powerful regular expressions, better string handling, new control statements, try/catch exception handling, tighter definition of errors, formatting for numeric output and minor changes in anticipation of future language growth.
The third editionで正規表現やtry catchなどが盛り込まれたらしい。
4th
After publication of the third edition, ECMAScript achieved massive adoption in conjunction with the World Wide Web where it has become the programming language that is supported by essentially all web browsers.
4thがリリースされていないのは知っているが、その背景としてはWWWの発展と共にJSが広まったその急激な変化や混乱があるように思える...その部分は知らなかった
5th
Such features include accessor properties, reflective creation and inspection of objects, program control of property attributes, additional array manipulation functions, support for the JSON object encoding format, and a strict mode that provides enhanced error checking and program security.
当たり前に使っているproperty accessorが追加されたのはこの頃。2009年の12月にEcma General Assemblyで採択された。
2009年なのでまだNode.jsは生まれてない。https://ja.wikipedia.org/wiki/Node.js
6th
6thのリリースは2015年。
5thが公開準備中の中で、6thの開発は2009年に集中して始まったが、6th自体は3rdから及ぶ15年間の集大成のようなものらしい。
実際挙げられている機能を見ていると
Some of its major enhancements included modules, class declarations, lexical block scoping, iterators and generators, promises for asynchronous programming, destructuring patterns, and proper tail calls.
ということで、どれも今では普通に使っている/お世話になっているもの。
2016
1年単位でのリリースになり、定義もGitHubで公開されるようになった。Array
のinclues
が追加された。
2017
async
が追加されたのはここ。Shared Memory
とAtomics
も追加されたとのことだがわからなかったので調べてみる。
-
Shared Memory
はShraredArrayBufferのように、Web Workerなど異なるスレッド間でのメモリ共有と同期を実現するための仕組み- 機能そのものを指すのではなく概念として一旦理解した
-
Atomics
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Atomics- いわゆるACID特性のAっぽい
-
SharedArrayBuffer
やArrayBuffer
に対して使用される
並行処理なんもわからん...
2018
が導入された。
JSの進化やランタイムとの歴史はこの資料が温度感あって良いかもしれない(感謝)