quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

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