Changelog (6231B)
1 2026-06-04: 2 3 - added custom malloc for small blocks (11% faster on bench-v8) 4 - micro optimizations (30% faster on bench-v8) 5 - added resizable array buffers 6 - added ArrayBuffer.prototype.transfer 7 - added the Iterator object and methods 8 - added set methods 9 - added Atomics.pause 10 - added added Map and WeakMap upsert methods 11 - added Math.sumPrecise() 12 - added regexp duplicate named groups 13 - added base64 and hexadecimal encodings for Uint8Array 14 - misc bug fixes 15 16 2025-09-13: 17 18 - added JSON modules and import attributes 19 - added JS_PrintValue() API 20 - qjs: pretty print objects in print() and console.log() 21 - qjs: better promise rejection tracker heuristics 22 - added RegExp v flag 23 - added RegExp modifiers 24 - added RegExp.escape 25 - added Float16Array 26 - added Promise.try 27 - improved JSON parser spec conformance 28 - qjs: improved compatibility of std.parseExtJSON() with JSON5 and 29 accept JSON5 modules 30 - added JS_FreePropertyEnum() and JS_AtomToCStringLen() API 31 - added Error.isError() 32 - misc bug fixes 33 34 2025-04-26: 35 36 - removed the bignum extensions and qjscalc 37 - new BigInt implementation optimized for small numbers 38 - added WeakRef, FinalizationRegistry and symbols as weakrefs 39 - added builtin float64 printing and parsing functions for more correctness 40 - faster repeated string concatenation 41 - qjs: promise unhandled rejections are fatal errors by default 42 - added column number in debug information 43 - removed the "use strip" extension 44 - qjs: added -s and --strip-source options 45 - qjsc: added -s and --keep-source options 46 - added JS_GetAnyOpaque() 47 - added more callbacks for exotic objects in JSClassExoticMethods 48 - misc bug fixes 49 50 2024-01-13: 51 52 - top-level-await support in modules 53 - allow 'await' in the REPL 54 - added Array.prototype.{with,toReversed,toSpliced,toSorted} and 55 TypedArray.prototype.{with,toReversed,toSorted} 56 - added String.prototype.isWellFormed and String.prototype.toWellFormed 57 - added Object.groupBy and Map.groupBy 58 - added Promise.withResolvers 59 - class static block 60 - 'in' operator support for private fields 61 - optional chaining fixes 62 - added RegExp 'd' flag 63 - fixed RegExp zero length match logic 64 - fixed RegExp case insensitive flag 65 - added os.sleepAsync(), os.getpid() and os.now() 66 - added cosmopolitan build 67 - misc bug fixes 68 69 2023-12-09: 70 71 - added Object.hasOwn, {String|Array|TypedArray}.prototype.at, 72 {Array|TypedArray}.prototype.findLast{Index} 73 - BigInt support is enabled even if CONFIG_BIGNUM disabled 74 - updated to Unicode 15.0.0 75 - misc bug fixes 76 77 2021-03-27: 78 79 - faster Array.prototype.push and Array.prototype.unshift 80 - added JS_UpdateStackTop() 81 - fixed Windows console 82 - misc bug fixes 83 84 2020-11-08: 85 86 - improved function parameter initializers 87 - added std.setenv(), std.unsetenv() and std.getenviron() 88 - added JS_EvalThis() 89 - misc bug fixes 90 91 2020-09-06: 92 93 - added logical assignment operators 94 - added IsHTMLDDA support 95 - faster for-of loops 96 - os.Worker now takes a module filename as parameter 97 - qjsc: added -D option to compile dynamically loaded modules or workers 98 - misc bug fixes 99 100 2020-07-05: 101 102 - modified JS_GetPrototype() to return a live value 103 - REPL: support unicode characters larger than 16 bits 104 - added os.Worker 105 - improved object serialization 106 - added std.parseExtJSON 107 - misc bug fixes 108 109 2020-04-12: 110 111 - added cross realm support 112 - added AggregateError and Promise.any 113 - added env, uid and gid options in os.exec() 114 - misc bug fixes 115 116 2020-03-16: 117 118 - reworked error handling in std and os libraries: suppressed I/O 119 exceptions in std FILE functions and return a positive errno value 120 when it is explicit 121 - output exception messages to stderr 122 - added std.loadFile(), std.strerror(), std.FILE.prototype.tello() 123 - added JS_GetRuntimeOpaque(), JS_SetRuntimeOpaque(), JS_NewUint32() 124 - updated to Unicode 13.0.0 125 - misc bug fixes 126 127 2020-01-19: 128 129 - keep CONFIG_BIGNUM in the makefile 130 - added os.chdir() 131 - qjs: added -I option 132 - more memory checks in the bignum operations 133 - modified operator overloading semantics to be closer to the TC39 134 proposal 135 - suppressed "use bigint" mode. Simplified "use math" mode 136 - BigDecimal: changed suffix from 'd' to 'm' 137 - misc bug fixes 138 139 2020-01-05: 140 141 - always compile the bignum code. Added '--bignum' option to qjs. 142 - added BigDecimal 143 - added String.prototype.replaceAll 144 - misc bug fixes 145 146 2019-12-21: 147 148 - added nullish coalescing operator (ES2020) 149 - added optional chaining (ES2020) 150 - removed recursions in garbage collector 151 - test stack overflow in the parser 152 - improved backtrace logic 153 - added JS_SetHostPromiseRejectionTracker() 154 - allow exotic constructors 155 - improved c++ compatibility 156 - misc bug fixes 157 158 2019-10-27: 159 160 - added example of C class in a module (examples/test_point.js) 161 - added JS_GetTypedArrayBuffer() 162 - misc bug fixes 163 164 2019-09-18: 165 166 - added os.exec and other system calls 167 - exported JS_ValueToAtom() 168 - qjsc: added 'qjsc_' prefix to the generated C identifiers 169 - added cross-compilation support 170 - misc bug fixes 171 172 2019-09-01: 173 174 - added globalThis 175 - documented JS_EVAL_FLAG_COMPILE_ONLY 176 - added import.meta.url and import.meta.main 177 - added 'debugger' statement 178 - misc bug fixes 179 180 2019-08-18: 181 182 - added os.realpath, os.getcwd, os.mkdir, os.stat, os.lstat, 183 os.readlink, os.readdir, os.utimes, std.popen 184 - module autodetection 185 - added import.meta 186 - misc bug fixes 187 188 2019-08-10: 189 190 - added public class fields and private class fields, methods and 191 accessors (TC39 proposal) 192 - changed JS_ToCStringLen() prototype 193 - qjsc: handle '-' in module names and modules with the same filename 194 - added std.urlGet 195 - exported JS_GetOwnPropertyNames() and JS_GetOwnProperty() 196 - exported some bigint C functions 197 - added support for eshost in run-test262 198 - misc bug fixes 199 200 2019-07-28: 201 202 - added dynamic import 203 - added Promise.allSettled 204 - added String.prototype.matchAll 205 - added Object.fromEntries 206 - reduced number of ticks in await 207 - added BigInt support in Atomics 208 - exported JS_NewPromiseCapability() 209 - misc async function and async generator fixes 210 - enabled hashbang support by default 211 212 2019-07-21: 213 214 - updated test262 tests 215 - updated to Unicode version 12.1.0 216 - fixed missing Date object in qjsc 217 - fixed multi-context creation 218 - misc ES2020 related fixes 219 - simplified power and division operators in bignum extension 220 - fixed several crash conditions 221 222 2019-07-09: 223 224 - first public release