diff --git a/Changelog b/Changelog index 0ced995..944d96a 100644 --- a/Changelog +++ b/Changelog @@ -1,3 +1,22 @@ +2024-01-13: + +- top-level-await support in modules +- allow 'await' in the REPL +- added Array.prototype.{with,toReversed,toSpliced,toSorted} and +TypedArray.prototype.{with,toReversed,toSorted} +- added String.prototype.isWellFormed and String.prototype.toWellFormed +- added Object.groupBy and Map.groupBy +- added Promise.withResolvers +- class static block +- 'in' operator support for private fields +- optional chaining fixes +- added RegExp 'd' flag +- fixed RegExp zero length match logic +- fixed RegExp case insensitive flag +- added os.getpid() and os.now() +- added cosmopolitan build +- misc bug fixes + 2023-12-09: - added Object.hasOwn, {String|Array|TypedArray}.prototype.at, diff --git a/VERSION b/VERSION index 08d1222..e89de35 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2023-12-09 +2024-01-13 diff --git a/doc/quickjs.texi b/doc/quickjs.texi index b064e7d..898d46c 100644 --- a/doc/quickjs.texi +++ b/doc/quickjs.texi @@ -19,9 +19,9 @@ @chapter Introduction -QuickJS is a small and embeddable Javascript engine. It supports the -ES2020 specification -@footnote{@url{https://tc39.es/ecma262/}} +QuickJS is a small and embeddable Javascript engine. It supports most of the +ES2023 specification +@footnote{@url{https://tc39.es/ecma262/2023 }} including modules, asynchronous generators, proxies and BigInt. It supports mathematical extensions such as big decimal float float @@ -34,14 +34,14 @@ and operator overloading. @item Small and easily embeddable: just a few C files, no external dependency, 210 KiB of x86 code for a simple ``hello world'' program. -@item Fast interpreter with very low startup time: runs the 69000 tests of the ECMAScript Test Suite@footnote{@url{https://github.com/tc39/test262}} in about 95 seconds on a single core of a desktop PC. The complete life cycle of a runtime instance completes in less than 300 microseconds. +@item Fast interpreter with very low startup time: runs the 77000 tests of the ECMAScript Test Suite@footnote{@url{https://github.com/tc39/test262}} in less than 2 minutes on a single core of a desktop PC. The complete life cycle of a runtime instance completes in less than 300 microseconds. -@item Almost complete ES2020 support including modules, asynchronous -generators and full Annex B support (legacy web compatibility). Many -features from the upcoming ES2021 specification -@footnote{@url{https://tc39.github.io/ecma262/}} are also supported. +@item Almost complete ES2023 support including modules, asynchronous +generators and full Annex B support (legacy web compatibility). Some +features from the upcoming ES2024 specification +@footnote{@url{https://tc39.es/ecma262/}} are also supported. -@item Passes nearly 100% of the ECMAScript Test Suite tests when selecting the ES2020 features. +@item Passes nearly 100% of the ECMAScript Test Suite tests when selecting the ES2023 features. @item Compile Javascript sources to executables with no external dependency. @@ -270,9 +270,9 @@ about 100 seconds). @section Language support -@subsection ES2020 support +@subsection ES2023 support -The ES2020 specification is almost fully supported including the Annex +The ES2023 specification is almost fully supported including the Annex B (legacy web compatibility) and the Unicode related features. The following features are not supported yet: @@ -281,6 +281,10 @@ The following features are not supported yet: @item Tail calls@footnote{We believe the current specification of tails calls is too complicated and presents limited practical interests.} +@item WeakRef and FinalizationRegistry objects + +@item Symbols as WeakMap keys + @end itemize @subsection ECMA402 @@ -1075,7 +1079,7 @@ stack holds the Javascript parameters and local variables. @section RegExp A specific regular expression engine was developed. It is both small -and efficient and supports all the ES2020 features including the +and efficient and supports all the ES2023 features including the Unicode properties. As the Javascript compiler, it directly generates bytecode without a parse tree. @@ -1083,9 +1087,6 @@ Backtracking with an explicit stack is used so that there is no recursion on the system stack. Simple quantifiers are specifically optimized to avoid recursions. -Infinite recursions coming from quantifiers with empty terms are -avoided. - The full regexp library weights about 15 KiB (x86 code), excluding the Unicode library.