Changelog
Unreleased
Changes v3.45.0...v3.45.1 (30 commits)
Fixed a conflict of native methods from Map upsert proposal with polyfilled methods in the pure version
Added bugs fields to package.json of all packages
Compat data improvements:
Map upsert proposal features marked as shipped from Bun 1.2.20
Added Samsung Internet 29 compat data mapping
Added Electron 39 compat data mapping
Changes v3.44.0...v3.45.0 (70 commits)
Uint8Array to / from base64 and hex proposal :
Built-ins:
Uint8Array.fromBase64
Uint8Array.fromHex
Uint8Array.prototype.setFromBase64
Uint8Array.prototype.setFromHex
Uint8Array.prototype.toBase64
Uint8Array.prototype.toHex
Moved to stable ES, July 2025 TC39 meeting
Added es. namespace modules, /es/ and /stable/ namespaces entries
Added detection of a Webkit bug: Uint8Array fromBase64 / setFromBase64 does not throw an error on incorrect length of base64 string
Math.sumPrecise proposal :
Built-ins:
Moved to stable ES, July 2025 TC39 meeting
Added es. namespace module, /es/ and /stable/ namespaces entries
Iterator sequencing proposal :
Built-ins:
Moved to stage 3, July 2025 TC39 meeting
Added /actual/ namespace entries, unconditional forced replacement changed to feature detection
Map upsert proposal :
Built-ins:
Map.prototype.getOrInsert
Map.prototype.getOrInsertComputed
WeakMap.prototype.getOrInsert
WeakMap.prototype.getOrInsertComputed
Moved to stage 3, July 2025 TC39 meeting
Added /actual/ namespace entries, unconditional forced replacement changed to feature detection
Added missing dependencies to some entries of static Iterator methods
Fixed Joint Iteration proposal in /stage/ entries
Compat data improvements:
Changes v3.42.0...v3.43.0 (139 commits)
Explicit Resource Management proposals :
Built-ins:
Symbol.dispose
Symbol.asyncDispose
SuppressedError
DisposableStack
DisposableStack.prototype.dispose
DisposableStack.prototype.use
DisposableStack.prototype.adopt
DisposableStack.prototype.defer
DisposableStack.prototype.move
DisposableStack.prototype[@@dispose]
AsyncDisposableStack
AsyncDisposableStack.prototype.disposeAsync
AsyncDisposableStack.prototype.use
AsyncDisposableStack.prototype.adopt
AsyncDisposableStack.prototype.defer
AsyncDisposableStack.prototype.move
AsyncDisposableStack.prototype[@@asyncDispose]
Iterator.prototype[@@dispose]
AsyncIterator.prototype[@@asyncDispose]
Moved to stable ES, May 2025 TC39 meeting
Added es. namespace module, /es/ and /stable/ namespaces entries
Array.fromAsync proposal :
Built-ins:
Moved to stable ES, May 2025 TC39 meeting
Added es. namespace module, /es/ and /stable/ namespaces entries
Error.isError proposal :
Built-ins:
Moved to stable ES, May 2025 TC39 meeting
Added es. namespace module, /es/ and /stable/ namespaces entries
Added Joint iteration stage 2.7 proposal :
Added built-ins:
Iterator.zip
Iterator.zipKeyed
Added Iterator chunking stage 2 proposal :
Added built-ins:
Iterator.prototype.chunks
Iterator.prototype.windows
Number.prototype.clamp proposal :
Always check regular expression flags by flags getter PR . Native methods are not fixed, only own implementation updated for:
RegExp.prototype[@@match]
RegExp.prototype[@@replace]
Improved handling of RegExp flags in polyfills of some methods in engines without proper support of RegExp.prototype.flags and without polyfill of this getter
Added feature detection for a WebKit bug that occurs when this is updated while Set.prototype.difference is being executed
Added feature detection for a WebKit bug that occurs when iterator record of a set-like object isn't called before cloning this in the following methods:
Set.prototype.symmetricDifference
Set.prototype.union
Added feature detection for a bug in V8 ~ Chromium < 126. Following methods should throw an error on invalid iterator:
Iterator.prototype.drop
Iterator.prototype.filter
Iterator.prototype.flatMap
Iterator.prototype.map
Added feature detection for a WebKit bug : incorrect exception thrown by Iterator.from when underlying iterator's return method is null
Added feature detection for a FF bug: incorrect exception thrown by Array.prototype.with when index coercion fails
Added feature detection for a WebKit bug: TypedArray.prototype.with should truncate negative fractional index to zero, but instead throws an error
Worked around a bug of many different tools (example ) with incorrect transforming and breaking JS syntax on getting a method from a number literal
Fixed deoptimization of the Promise polyfill in the pure version
Added some missed dependencies to /iterator/flat-map entries
Some other minor fixes and improvements
Compat data improvements:
Added Deno 2.3 and Deno 2.3.2 compat data mapping
Updated Electron 37 compat data mapping
Added Opera Android 90 compat data mapping
Error.isError marked not supported in Node because of a bug
Set.prototype.difference marked as not supported in Safari and supported only from Bun 1.2.5 because of a bug
Set.prototype.{ symmetricDifference, union } marked as not supported in Safari and supported only from Bun 1.2.5 because of a bug
Iterator.from marked as not supported in Safari and supported only from Bun 1.2.5 because of a bug
Iterators closing on early errors in Iterator helpers marked as implemented from FF141
Array.prototype.with marked as supported only from FF140 because it throws an incorrect exception when index coercion fails
TypedArray.prototype.with marked as unsupported in Bun and Safari because it should truncate negative fractional index to zero, but instead throws an error
DisposableStack and AsyncDisposableStack marked as shipped in FF141 (SuppressedError has a bug )
AsyncDisposableStack bugs marked as fixed in Deno 2.3.2
SuppressedError bugs (extra arguments support and arity ) marked as fixed in Bun 1.2.15
Changes v3.41.0...v3.42.0 (142 commits)
Map upsert proposal :
Moved to stage 2.7, April 2025 TC39 meeting
Validation order of WeakMap.prototype.getOrInsertComputed updated following tc39/proposal-upsert#79
Built-ins:
Map.prototype.getOrInsert
Map.prototype.getOrInsertComputed
WeakMap.prototype.getOrInsert
WeakMap.prototype.getOrInsertComputed
Don't call well-known Symbol methods for RegExp on primitive values following tc39/ecma262#3009 :
For avoid performance regression, temporarily, only in own core-js implementations
Built-ins:
String.prototype.matchAll
String.prototype.match
String.prototype.replaceAll
String.prototype.replace
String.prototype.search
String.prototype.split
Added workaround for the Uint8Array.prototype.setFromBase64 bug in some of Linux builds of WebKit
Implemented early-error iterator closing following tc39/ecma262#3467 , including fix of a WebKit bug , in the following methods:
Iterator.prototype.drop
Iterator.prototype.every
Iterator.prototype.filter
Iterator.prototype.find
Iterator.prototype.flatMap
Iterator.prototype.forEach
Iterator.prototype.map
Iterator.prototype.reduce
Iterator.prototype.some
Iterator.prototype.take
Fixed missing forced replacement of AsyncIterator helpers
Added closing of sync iterator when async wrapper yields a rejection following tc39/ecma262#2600 . Affected methods:
Added detection for throwing on undefined initial parameter in Iterator.prototype.reduce (see WebKit bug )
core-js-compat and core-js-builder API:
Added 'intersect' support for targets.esmodules (Babel 7 behavior)
Fixed handling of targets.esmodules: true (Babel 7 behavior)
Compat data improvements:
Changes v3.37.1...v3.38.0
RegExp.escape proposal :
Promise.try proposal :
Built-ins:
Moved to stage 3, June 2024 TC39 meeting
Added /actual/ namespace entries, unconditional forced replacement changed to feature detection
Uint8Array to / from base64 and hex stage 3 proposal :
Built-ins:
Uint8Array.fromBase64
Uint8Array.fromHex
Uint8Array.prototype.setFromBase64
Uint8Array.prototype.setFromHex
Uint8Array.prototype.toBase64
Uint8Array.prototype.toHex
Added Uint8Array.prototype.{ setFromBase64, setFromHex } methods
Added Uint8Array.fromBase64 and Uint8Array.prototype.setFromBase64 lastChunkHandling option, proposal-arraybuffer-base64/33
Added Uint8Array.prototype.toBase64 omitPadding option, proposal-arraybuffer-base64/60
Added throwing a TypeError on arrays backed by detached buffers
Unconditional forced replacement changed to feature detection
Fixed RegExp named capture groups polyfill in combination with non-capturing groups, #1352 , thanks @Ulop
Improved some cases of environment detection
Uses process.getBuiltinModule for getting built-in NodeJS modules where it's available
Uses https instead of http in URL constructor feature detection to avoid extra notifications from some overly vigilant security scanners, #1345
Some minor optimizations
Updated browserslist in core-js-compat dependencies that fixes an upstream issue with incorrect interpretation of some browserslist queries, #1344 , browserslist/829 , browserslist/836
Compat data improvements:
ArrayBuffer.prototype.transfer and friends proposal :
Built-ins:
ArrayBuffer.prototype.detached
ArrayBuffer.prototype.transfer
ArrayBuffer.prototype.transferToFixedLength
Moved to stable ES, Febrary 2024 TC39 meeting
Added es. namespace modules, /es/ and /stable/ namespaces entries
Uint8Array to / from base64 and hex proposal :
Methods:
Uint8Array.fromBase64
Uint8Array.fromHex
Uint8Array.prototype.toBase64
Uint8Array.prototype.toHex
Moved to stage 3, Febrary 2024 TC39 meeting
Added /actual/ namespace entries
Skipped adding new methods of writing to existing arrays to clarification some moments
Promise.try proposal has been resurrected and moved to stage 2, Febrary 2024 TC39 meeting
Added an entry point for the new TC39 proposals stage - core-js/stage/2.7 - still empty
Fixed regression in Set.prototype.intersection feature detection
Fixed a missed check in Array.prototype.{ indexOf, lastIndexOf, includes }, #1325 , thanks @minseok-choe
Fixed a missed check in Array.prototype.{ reduce, reduceRight }, #1327 , thanks @minseok-choe
Fixed Array.from and some other methods with proxy targets, #1322 , thanks @minseok-choe
Fixed dependencies loading for modules from ArrayBuffer.prototype.transfer and friends proposal in some specific cases in IE10-
Dropped context workaround from collection static methods entries since with current methods semantic it's no longer required
Added instance methods polyfills to entries of collections static methods that produce collection instances
Added missed Date.prototype.toJSON to JSON.stringify entries dependencies
Added debugging info in some missed cases
Compat data improvements:
Fixed internal ToLength operation with bigints, #1318
Removed significant redundant code from String.prototype.split polyfill
Fixed setting names of methods with symbol keys in some old engines
Minor fix of prototype methods export logic in the pure version
Compat data improvements:
{ Map, Set, WeakMap, WeakSet }.{ from, of } became non-generic, following this and some other notes. Now they can be invoked without this, but no longer return subclass instances
Fixed handling some cases of non-enumerable symbol keys from Symbol polyfill
Removed unneeded NodeJS domains-related logic from queueMicrotask polyfill
Fixed subclassing of wrapped ArrayBuffer
Refactoring, many different minor optimizations
Compat data improvements:
Fixed an issue getting the global object on Duktape, #1303
Avoid sharing internal [[DedentMap]] from String.dedent proposal between core-js instances before stabilization of the proposal
Some internal untangling
Compat data improvements:
Simplified structuredClone polyfill, avoided second tree pass in cases of transferring
Added support of SuppressedError to structuredClone polyfill
Removed unspecified unnecessary ArrayBuffer and DataView dependencies of structuredClone lack of which could cause errors in some entries in IE10-
Fixed handling of fractional number part in Number.fromString
Compat data improvements:
Added one more workaround of possible error with Symbol polyfill on global object, #1289
Directly specified type: commonjs in package.json of all packages to avoid potential breakage in future Node versions, see this issue
Prevented potential issue with lack of some dependencies after automatic optimization polyfills of some methods in the pure version
Some minor internal fixes and optimizations
Compat data improvements:
Fixed structuredClone feature detection core-js@3.32.1 bug, #1288
Added a workaround of old WebKit + eval bug, #1287
Compat data improvements:
Added Samsung Internet 23 compat data mapping
Added Quest Browser 29 compat data mapping
Fixed some cases of IEEE754 rounding, #1279 , thanks @petamoriken
Prevented injection process polyfill to core-js via some bundlers or esm.sh, #1277
Some minor fixes and stylistic changes
Compat data improvements:
Array grouping proposal , July 2023 TC39 meeting updates:
Moved back to stage 3
Added /actual/ namespaces entries, unconditional forced replacement changed to feature detection
Promise.withResolvers proposal , July 2023 TC39 meeting updates:
Moved to stage 3
Added /actual/ namespaces entries, unconditional forced replacement changed to feature detection
Set methods stage 3 proposal , July 2023 TC39 meeting updates:
Iterator Helpers stage 3 proposal :
Avoid creating observable String wrapper objects, July 2023 TC39 meeting update, proposal-iterator-helpers/281
Iterator is not constructible from the active function object (works as an abstract class)
Async explicit resource management:
Added some methods from Float16Array stage 3 proposal :
There are some reason why I don't want to add Float16Array right now, however, make sense to add some methods from this proposal.
Methods:
Math.f16round
DataView.prototype.getFloat16
DataView.prototype.setFloat16
Added DataView get / set Uint8Clamped methods stage 1 proposal :
Methods:
DataView.prototype.getUint8Clamped
DataView.prototype.setUint8Clamped
Used strict mode in some missed cases, #1269
Fixed a Chromium 117 bug in value argument of URLSearchParams.prototype.{ has, delete }
Fixed early WebKit ~ Safari 17.0 beta Set methods implementation by the actual spec
Fixed incorrect Symbol.{ dispose, asyncDispose } descriptors from NodeJS 20.4 / transpilers helpers / userland code
Fixed forced polyfilling of some iterator helpers that should return wrapped iterator in the pure version
Fixed and exposed AsyncIteratorPrototype core-js/configurator option , #1268
Compat data improvements:
Fixed a structuredClone bug with cloning views of transferred buffers, #1265
Fixed the order of arguments validation in DataView methods
Allowed cloning of Float16Array in structuredClone
Compat data improvements:
Well-formed unicode strings proposal :
Methods:
String.prototype.isWellFormed method
String.prototype.toWellFormed method
Moved to stable ES, May 2023 TC39 meeting
Added es. namespace modules, /es/ and /stable/ namespaces entries
Array grouping proposal , May 2023 TC39 meeting updates :
Decorator Metadata proposal , May 2023 TC39 meeting updates :
Moved to stage 3
Added Function.prototype[Symbol.metadata] (=== null)
Added /actual/ entries
Iterator Helpers stage 3 proposal :
Added Promise.withResolvers stage 2 proposal :
Promise.withResolvers method
Symbol predicates stage 2 proposal :
The methods renamed to end with Symbol, May 2023 TC39 meeting :
Symbol.isRegistered -> Symbol.isRegisteredSymbol method
Symbol.isWellKnown -> Symbol.isWellKnownSymbol method
Added value argument of URLSearchParams.prototype.{ has, delete }, url/735
Fixed some cases of increasing buffer size in ArrayBuffer.prototype.{ transfer, transferToFixedLength } polyfills
Fixed awaiting async AsyncDisposableStack.prototype.adopt callback, #1258
Fixed URLSearchParams#size in ES3 engines (IE8-)
Added a workaround in Object.{ entries, values } for some IE versions bug with invisible integer keys on null-prototype objects
Added TypeScript definitions to core-js-compat, #1235 , thanks @susnux
Compat data improvements:
Set.prototype.difference that was missed in Bun because of a bug added in 0.6.0
Array.prototype.{ group, groupToMap } marked as no longer supported in WebKit runtimes because of the mentioned above web compat issue. For example, it's disabled from Bun 0.6.2
Methods from the change Array by copy proposal marked as supported from FF115
Array.fromAsync marked as supported from FF115
URL.canParse marked as supported from FF115
value argument of URLSearchParams.prototype.{ has, delete } marked as supported from NodeJS 20.2.0 and FF115
Added Deno 1.34 compat data mapping
Added Electron 26 compat data mapping
Added Samsung Internet 22 compat data mapping
Added Opera Android 75 and 76 compat data mapping
Added Quest Browser 27 compat data mapping
Added a fix for a NodeJS 20.0.0 bug with cloning File via structuredClone
Added protection from Terser unsafe String optimization, #1242
Added a workaround for getting proper global object in Figma plugins, #1231
Compat data improvements:
Added a fix for a NodeJS 19.9.0 URL.canParse bug
Compat data improvements:
Added URLSearchParams.prototype.size getter, url/734
Allowed cloning resizable ArrayBuffers in the structuredClone polyfill
Fixed wrong export in /(stable|actual|full)/instance/unshift entries, #1207
Compat data improvements:
Set methods proposal marked as supported from Bun 0.5.7
String.prototype.toWellFormed marked as fixed from Bun 0.5.7
Added Deno 1.31 compat data mapping
Change Array by copy proposal :
Methods:
Array.prototype.toReversed
Array.prototype.toSorted
Array.prototype.toSpliced
Array.prototype.with
%TypedArray%.prototype.toReversed
%TypedArray%.prototype.toSorted
%TypedArray%.prototype.with
Moved to stable ES, January 2023 TC39 meeting
Added es. namespace modules, /es/ and /stable/ namespaces entries
Added JSON.parse source text access Stage 3 proposal
Methods:
JSON.parse patched for support source in reviver function arguments
JSON.rawJSON
JSON.isRawJSON
JSON.stringify patched for support JSON.rawJSON
Added ArrayBuffer.prototype.transfer and friends Stage 3 proposal :
Built-ins:
ArrayBuffer.prototype.detached
ArrayBuffer.prototype.transfer (only in runtimes with native structuredClone with ArrayBuffer transfer support)
ArrayBuffer.prototype.transferToFixedLength (only in runtimes with native structuredClone with ArrayBuffer transfer support)
In backwards, in runtimes with native ArrayBuffer.prototype.transfer, but without proper structuredClone, added ArrayBuffer transfer support to structuredClone polyfill
Iterator Helpers proposal:
Explicit Resource Management Stage 3 and Async Explicit Resource Management Stage 2 proposals:
Added Symbol predicates Stage 2 proposal
Methods:
Symbol.isRegistered
Symbol.isWellKnown
Number.range Stage 1 proposal and method renamed to Iterator.range
Function.prototype.unThis Stage 0 proposal and method renamed to Function.prototype.demethodize
Fixed Safari String.prototype.toWellFormed ToString conversion bug
Improved some cases handling of array-replacer in JSON.stringify symbols handling fix
Fixed many other old JSON.{ parse, stringify } bugs (numbers instead of strings as keys in replacer, handling negative zeroes, spaces, some more handling symbols cases, etc.)
Fixed configurability and ToString conversion of some accessors
Added throwing proper errors on an incorrect context in some ArrayBuffer and DataView methods
Some minor DataView and %TypedArray% polyfills optimizations
Added proper error on the excess number of trailing = in the atob polyfill
Fixed theoretically possible ReDoS vulnerabilities in String.prototype.{ trim, trimEnd, trimRight }, parse(Int|Float), Number, atob, and URL polyfills in some ancient engines
Compat data improvements:
RegExp.prototype.flags marked as fixed from V8 ~ Chrome 111
Added Opera Android 73 compat data mapping
Added TypeScript definitions to core-js-builder
Set methods proposal updates:
Added one more workaround of a webpack dev server bug on IE global methods, #1161
Fixed possible String.{ raw, cooked } error with empty template array
Used non-standard V8 Error.captureStackTrace instead of stack parsing in new error classes / wrappers where it's possible
Added detection correctness of iteration to Promise.{ allSettled, any } feature detection, Hermes issue
Compat data improvements:
Change Array by copy proposal marked as supported from V8 ~ Chrome 110
Added Samsung Internet 20 compat data mapping
Added Quest Browser 25 compat data mapping
Added React Native 0.71 Hermes compat data
Added Electron 23 and 24 compat data mapping
self marked as fixed in Deno 1.29.3, deno/17362
Minor tweaks of minification settings for core-js-bundle
Refactoring, some minor fixes, improvements, optimizations
Fixed a Chakra-based MS Edge (18-) bug that unfreeze (O_o) frozen arrays used as WeakMap keys
Fixing of the previous bug also fixes some cases of String.dedent in MS Edge
Fixed dependencies of some entries
Iterator Helpers proposal:
Built-ins:
Iterator
Iterator.from
Iterator.prototype.drop
Iterator.prototype.every
Iterator.prototype.filter
Iterator.prototype.find
Iterator.prototype.flatMap
Iterator.prototype.forEach
Iterator.prototype.map
Iterator.prototype.reduce
Iterator.prototype.some
Iterator.prototype.take
Iterator.prototype.toArray
Iterator.prototype.toAsync
Iterator.prototype[@@toStringTag]
AsyncIterator
AsyncIterator.from
AsyncIterator.prototype.drop
AsyncIterator.prototype.every
AsyncIterator.prototype.filter
AsyncIterator.prototype.find
AsyncIterator.prototype.flatMap
AsyncIterator.prototype.forEach
AsyncIterator.prototype.map
AsyncIterator.prototype.reduce
AsyncIterator.prototype.some
AsyncIterator.prototype.take
AsyncIterator.prototype.toArray
AsyncIterator.prototype[@@toStringTag]
Moved to Stage 3, November 2022 TC39 meeting
Added /actual/ entries, unconditional forced replacement disabled for features that survived to Stage 3
.from accept strings, .flatMap throws on strings returned from the callback, proposal-iterator-helpers/244 , proposal-iterator-helpers/250
.from and .flatMap throws on non-object iterators , proposal-iterator-helpers/253
Set methods proposal :
Built-ins:
Set.prototype.intersection
Set.prototype.union
Set.prototype.difference
Set.prototype.symmetricDifference
Set.prototype.isSubsetOf
Set.prototype.isSupersetOf
Set.prototype.isDisjointFrom
Moved to Stage 3, November 2022 TC39 meeting
Reimplemented with new semantics :
Optimized performance (iteration over lowest set)
Accepted only Set-like objects as an argument, not all iterables
Accepted only Sets as this, no @@species support, and other minor changes
Added /actual/ entries, unconditional forced replacement changed to feature detection
For avoiding breaking changes:
New versions of methods are implemented as new modules and available in new entries or entries where old versions of methods were not available before (like /actual/ namespace)
In entries where they were available before (like /full/ namespace), those methods are available with fallbacks to old semantics (in addition to Set-like, they accept iterable objects). This behavior will be removed from the next major release
Well-Formed Unicode Strings proposal:
Methods:
String.prototype.isWellFormed
String.prototype.toWellFormed
Moved to Stage 3, November 2022 TC39 meeting
Added /actual/ entries, disabled unconditional forced replacement
Explicit resource management Stage 3 and Async explicit resource management Stage 2 proposals:
Renamed from "using statement" and split into 2 (sync and async) proposals
In addition to already present well-known symbols, added new built-ins:
Symbol.dispose
Symbol.asyncDispose
SuppressedError
DisposableStack
DisposableStack.prototype.dispose
DisposableStack.prototype.use
DisposableStack.prototype.adopt
DisposableStack.prototype.defer
DisposableStack.prototype.move
DisposableStack.prototype[@@dispose]
AsyncDisposableStack
AsyncDisposableStack.prototype.disposeAsync
AsyncDisposableStack.prototype.use
AsyncDisposableStack.prototype.adopt
AsyncDisposableStack.prototype.defer
AsyncDisposableStack.prototype.move
AsyncDisposableStack.prototype[@@asyncDispose]
Iterator.prototype[@@dispose]
AsyncIterator.prototype[@@asyncDispose]
Sync version of this proposal moved to Stage 3, November 2022 TC39 meeting
Added /actual/ namespace entries for Stage 3 proposal
Added String.dedent stage 2 proposal
Method String.dedent
Throws an error on non-frozen raw templates for avoiding possible breaking changes in the future, proposal-string-dedent/75
Compat data targets improvements:
React Native from 0.70 shipped with Hermes as the default engine. However, bundled Hermes versions differ from standalone Hermes releases. So added react-native target for React Native with bundled Hermes.
According to the documentation , Oculus Browser was renamed to Meta Quest Browser, so oculus target was renamed to quest .
opera_mobile target name is confusing since it contains data for the Chromium-based Android version, but iOS Opera is Safari-based. So opera_mobile target was renamed to opera-android .
android target name is also confusing for someone - that means Android WebView, some think thinks that it's Chrome for Android, but they have some differences. For avoiding confusion, added chrome-android target.
For consistency with two previous cases, added firefox-android target.
For avoiding breaking changes, the oculus and opera_mobile fields are available in the compat data till the next major release.
Compat data improvements:
{ Map, WeakMap }.prototype.emplace became stricter by the spec draft
Smoothed behavior of some conflicting proposals
Removed some generic behavior (like @@species pattern) of some .prototype methods from the new collections methods proposal and the Array deduplication proposal that most likely will not be implemented since it contradicts the current TC39 policy
Added pure version of the Number constructor, #1154 , #1155 , thanks @trosos
Added set(Timeout|Interval|Immediate) extra arguments fix for Bun 0.3.0- (similarly to IE9-), bun/1633
Fixed handling of sparse arrays in structuredClone, #1156
Fixed a theoretically possible future conflict of polyfills definitions in the pure version
Some refactoring and optimization
Disabled forced replacing of Array.fromAsync since it's on Stage 3
Avoiding a check of the target in the internal function-uncurry-this helper where it's not required - minor optimization and preventing problems in some broken environments, a workaround of #1141
V8 will not ship Array.prototype.{ group, groupToMap } in V8 ~ Chromium 108, proposal-array-grouping/44
Fixed regression with an error on reuse of some built-in methods from another realm, #1133
Added a workaround of a Nashorn bug with Function.prototype.{ call, apply, bind } on string methods, #1128
Updated lists of [Serializable] and [Transferable] objects in the structuredClone polyfill. Mainly, for better error messages if polyfilling of cloning such types is impossible
Array.prototype.{ group, groupToMap } marked as supported from V8 ~ Chromium 108
Added Electron 22 compat data mapping
Forced polyfilling of Array.prototype.groupToMap in the pure version for returning wrapped Map instances
Fixed existence of Array.prototype.{ findLast, findLastIndex } in /stage/4 entry
Added Opera Android 71 compat data mapping
Some stylistic changes
Considering document.all as a callable in some missed cases
Added Safari 16.0 compat data
Added iOS Safari 16.0 compat data mapping
Fixed some ancient iOS Safari versions compat data mapping
Added some fixes and workarounds of FF30- typed arrays bug that does not properly convert objects to numbers
Added sideEffects field to core-js-pure package.json for better tree shaking, #1117
Dropped semver dependency from core-js-compat
semver package (ironically) added a breaking change and dropped NodeJS 8 support in the minor 7.1 version , after that semver in core-js-compat was pinned to 7.0 since for avoiding breaking changes it should support NodeJS 8. However, since core-js-compat is usually used with other packages that use semver dependency, it causes multiple duplication of semver in dependencies. So I decided to remove semver dependency and replace it with a couple of simple helpers.
Added Bun 0.1.6-0.1.11 compat data
Added Deno 1.25 compat data mapping
Updated Electron 21 compat data mapping
Some stylistic changes, minor fixes, and improvements
Added Object.prototype.__proto__ polyfill
It's optional, legacy, and in some cases (mainly because of developers' mistakes) can cause problems, but some libraries depend on it , and most code can't work without the proper libraries' ecosystem
Only for modern engines where this feature is missed (like Deno), it's not installed in IE10- since here we have no proper way setting of the prototype
Without fixes of early implementations where it's not an accessor since those fixes are impossible
Only for the global version
Considering document.all as an object in some missed cases, see ECMAScript Annex B 3.6
Avoiding unnecessary promise creation and validation result in %WrapForValid(Async)IteratorPrototype%.return, proposal-iterator-helpers/215
Fixed omitting the result of proxing .return in %IteratorHelperPrototype%.return, #1116
Fixed the order creation of properties of iteration result object of some iterators (value should be created before done)
Fixed some cases of Safari < 13 bug - silent on non-writable array .length setting
Fixed ArrayBuffer.length in V8 ~ Chrome 27-
Relaxed condition of re-usage native WeakMap for internal states with multiple core-js copies
Availability cloning of FileList in the structuredClone polyfill extended to some more old engines versions
Some stylistic changes and minor fixes
Throwing a TypeError in core-js-compat / core-js-builder in case of passing invalid module names / filters for avoiding unexpected result, related to #1115
Added missed NodeJS 13.2 to esmodules core-js-compat / core-js-builder target
Added Electron 21 compat data mapping
Added Oculus Browser 23.0 compat data mapping
NodeJS is ignored in IS_BROWSER detection to avoid a false positive with jsdom, #1110
Fixed detection of @@species support in Promise in some old engines
{ Array, %TypedArray% }.prototype.{ findLast, findLastIndex } marked as shipped in FF104
Added iOS Safari 15.6 compat data mapping
Fixed Opera 15 compat data mapping
Recent updates of the iterator helpers proposal , #1101 :
.asIndexedPairs renamed to .indexed, proposal-iterator-helpers/183 :
Iterator.prototype.asIndexedPairs -> Iterator.prototype.indexed
AsyncIterator.prototype.asIndexedPairs -> AsyncIterator.prototype.indexed
Avoid exposing spec fiction %AsyncFromSyncIteratorPrototype% in AsyncIterator.from and Iterator.prototype.toAsync, proposal-iterator-helpers/182 , proposal-iterator-helpers/202
Avoid unnecessary promise creation in %WrapForValidAsyncIteratorPrototype%.next, proposal-iterator-helpers/197
Do not validate value in %WrapForValid(Async)IteratorPrototype%.next, proposal-iterator-helpers/197 and proposal-iterator-helpers/205
Do not forward the parameter of .next / .return to an underlying iterator by the extended iterator protocol, a part of proposal-iterator-helpers/194
.throw methods removed from all wrappers / helpers prototypes, a part of proposal-iterator-helpers/194
Close inner iterators of { Iterator, AsyncIterator }.prototype.flatMap proxy iterators on .return, proposal-iterator-helpers/195
Throw RangeError on NaN in { Iterator, AsyncIterator }.prototype.{ drop, take }, proposal-iterator-helpers/181
Many other updates and fixes of this proposal
%TypedArray%.prototype.toSpliced method removed from the change array by copy proposal and marked as obsolete in core-js, proposal-change-array-by-copy/88
Polyfill Promise with unhandledrejection event support (browser style) in Deno < 1.24
Available new targets in core-js-compat / core-js-builder and added compat data for them:
Bun (bun), compat data for 0.1.1-0.1.5, #1103
Hermes (hermes), compat data for 0.1-0.11, #1099
Oculus Browser (oculus), compat data mapping for 3.0-22.0, #1098
Added Samsung Internet 18.0 compat data mapping
Fixed a typo in the structuredClone feature detection, #1106
Added Opera Android 70 compat data mapping
Added a workaround of the Bun ~ 0.1.1 bug that define some globals with incorrect property descriptors and that causes a crash of core-js
Added a fix of the FF103+ structuredClone bugs (1774866 (fixed in FF104) and 1777321 (still not fixed)) that now can clone errors, but .stack of the clone is an empty string
Fixed { Map, WeakMap }.prototype.emplace logic, #1102
Fixed order of errors throwing on iterator helpers
Avoided creation of extra properties for the handling of %TypedArray% constructors in new methods, #1092 (comment)
Added Deno 1.23 compat data mapping
Fixed possible error on multiple core-js copies, #1091
Added v flag to RegExp.prototype.flags implementation in case if current V8 bugs will not be fixed before this flag implementation
Array find from last moved to the stable ES, according to June 2022 TC39 meeting:
Array.prototype.findLast
Array.prototype.findLastIndex
%TypedArray%.prototype.findLast
%TypedArray%.prototype.findLastIndex
Methods from the Array grouping proposal renamed , according to June 2022 TC39 meeting:
Array.prototype.groupBy -> Array.prototype.group
Array.prototype.groupByToMap -> Array.prototype.groupToMap
Changed the order of operations in %TypedArray%.prototype.with following proposal-change-array-by-copy/86 , according to June 2022 TC39 meeting
Decorator Metadata proposal extracted from Decorators proposal as a separate stage 2 proposal, according to March 2022 TC39 meeting, Symbol.metadataKey replaces Symbol.metadata
Added Array.prototype.push polyfill with some fixes for modern engines
Added Array.prototype.unshift polyfill with some fixes for modern engines
Fixed a bug in the order of getting flags in RegExp.prototype.flags in the actual version of V8
Fixed property descriptors of some Math and Number constants
Added a workaround of V8 ArrayBufferDetaching protector cell invalidation and performance degradation on structuredClone feature detection, one more case of #679
Added detection of NodeJS bug in structuredClone that can not clone DOMException (just in case for future versions that will fix other issues)
Compat data:
Added NodeJS 18.3 compat data mapping
Added and fixed Deno 1.22 and 1.21 compat data mapping
Added Opera Android 69 compat data mapping
Updated Electron 20.0 compat data mapping
Fixed possible multiple call of ToBigInt / ToNumber conversion of the argument passed to %TypedArray%.prototype.fill in V8 ~ Chrome < 59, Safari < 14.1, FF < 55, Edge <=18
Fixed some cases of DeletePropertyOrThrow in IE9-
Fixed the kind of error (TypeError instead of Error) on incorrect exec result in RegExp.prototype.test polyfill
Fixed dependencies of { actual, full, features }/typed-array/at entries
Added Electron 20.0 compat data mapping
Added iOS Safari 15.5 compat data mapping
Refactoring
Added a workaround for V8 ~ Chrome 53 bug with non-writable prototype of some methods, #1083
Fixed possible double call of ToNumber conversion on arguments of Math.{ fround, trunc } polyfills
Array.prototype.includes marked as fixed in FF102
Ensured that polyfilled constructors .prototype is non-writable
Ensured that polyfilled methods .prototype is not defined
Added detection and fix of a V8 ~ Chrome <103 bug of struturedClone that returns null if cloned object contains multiple references to one error
Ensured proper .length of polyfilled functions even in compressed code (excepting some ancient engines)
Ensured proper .name of polyfilled accessors (excepting some ancient engines)
Ensured proper source / ToString conversion of polyfilled accessors
Actualized Rhino compat data
Refactoring
Added a fix for FF99+ Array.prototype.includes broken on sparse arrays
Fixed URLSearchParams in IE8- that was broken in the previous release
Fixed __lookupGetter__ entries
Improved some cases of RegExp flags handling
Prevented experimental warning in NodeJS ~ 18.0 on detection fetch API
Added NodeJS 18.0 compat data
Change Array by copy proposal :
Moved to Stage 3, March TC39 meeting
Disabled forced replacement and added /actual/ entry points for methods from this proposal
Array.prototype.toSpliced throws a TypeError instead of RangeError if the result length is more than MAX_SAFE_INTEGER, proposal-change-array-by-copy/70
Added some more atob / btoa fixes:
NodeJS <17.9 atob does not ignore spaces, node/42530
Actual NodeJS atob does not validate encoding, node/42646
FF26- implementation does not properly convert argument to string
IE / Edge <16 implementation have wrong arity
Added /full/ namespace as the replacement for /features/ since it's more descriptive in context of the rest namespaces (/es/ ⊆ /stable/ ⊆ /actual/ ⊆ /full/)
Avoided propagation of removed parts of proposals to upper stages. For example, %TypedArray%.prototype.groupBy was removed from the Array grouping proposal a long time ago. We can't completely remove this method since it's a breaking change. But this proposal has been promoted to stage 3 - so the proposal should be promoted without this method, this method should not be available in /actual/ entries - but it should be available in early-stage entries to avoid breakage.
Significant internal refactoring and splitting of modules (but without exposing to public API since it will be a breaking change - it will be exposed in the next major version)
Bug fixes:
Fixed work of non-standard V8 Error features with wrapped Error constructors, #1061
null and undefined allowed as the second argument of structuredClone, #1056
Tooling:
Stabilized proposals are filtered out from the core-js-compat -> core-js-builder -> core-js-bundle output. That mean that if the output contains, for example, es.object.has-own, the legacy reference to it, esnext.object.has-own, no longer added.
Aligned modules filters of core-js-builder and core-js-compat , now it's modules and exclude options
Added support of entry points, modules, regexes, and arrays of them to those filters
Missed targets option of core-js-compat means that the targets filter just will not be applied, so the result will contain modules required for all possible engines
Compat data:
.stack property on DOMException marked as supported from Deno 1.15
Added Deno 1.21 compat data mapping
Added Electron 19.0 and updated 18.0 compat data mapping
Added Samsung Internet 17.0 compat data mapping
Added Opera Android 68 compat data mapping
Added a bug fix for the WebKit Array.prototype.{ groupBy, groupByToMap } implementation
core-js-compat targets parser transforms engine names to lower case
atob / btoa marked as fixed in NodeJS 17.5
Added Electron 18.0 compat data mapping
Added Deno 1.20 compat data mapping
Added Base64 utility methods :
Added the proper validation of arguments to some methods from web standards
Forced replacement of all features from early-stage proposals for avoiding possible web compatibility issues in the future
Added Rhino 1.7.14 compat data
Added Deno 1.19 compat data mapping
Added Opera Android 66 and 67 compat data mapping
Added iOS Safari 15.3 and 15.4 compat data mapping
Detects and replaces broken third-party Function#bind polyfills, uses only native Function#bind in the internals
structuredClone should throw an error if no arguments passed
Changed the structure of notes in __core-js_shared__
Fixed the order of calling reactions of already fulfilled / rejected promises in Promise.prototype.then, #1026
Fixed possible memory leak in specific promise chains
Fixed some missed dependencies of entries
Added Deno 1.18 compat data mapping
Added structuredClone method from the HTML spec , see MDN
Includes all cases of cloning and transferring of required ECMAScript and platform types that can be polyfilled, for the details see the caveats
Uses native structured cloning algorithm implementations where it's possible
Includes the new semantic of errors cloning from html/5749
Added DOMException polyfill, the Web IDL spec , see MDN
Includes DOMException and its attributes polyfills with fixes of many different engines bugs
Includes DOMException#stack property polyfill in engines that should have it
Reuses native DOMException implementations where it's possible (for example, in old NodeJS where it's not exposed as global)
Added support of cause on all Error types
Added Error.prototype.toString method polyfill with fixes of many different bugs of JS engines
Added Number.prototype.toExponential method polyfill with fixes of many different bugs of JS engines
Array grouping proposal :
Moved to stage 3
Added Array.prototype.groupByToMap method
Removed @@species support
Added change Array by copy stage 2 proposal :
Array.prototype.toReversed
Array.prototype.toSorted
Array.prototype.toSpliced
Array.prototype.with
%TypedArray%.prototype.toReversed
%TypedArray%.prototype.toSorted
%TypedArray%.prototype.toSpliced
%TypedArray%.prototype.with
Added Iterator.prototype.toAsync method from the iterator helpers stage 2 proposal
Array.fromAsync proposal moved to stage 2
Added String.cooked stage 1 proposal
Added Function.prototype.unThis stage 0 proposal
Added Function.{ isCallable, isConstructor } stage 0 proposal :
Function.isCallable
Function.isConstructor
Added a workaround of most cases breakage modern String#at after loading obsolete String#at proposal module, #1019
Fixed Array.prototype.{ values, @@iterator }.name in V8 ~ Chrome 45-
Fixed validation of typed arrays in typed arrays iteration methods in V8 ~ Chrome 50-
Extension of the API, #1012
Added a new core-js/actual/** namespace
Added entry points for each finished post-ES6 proposal
Fixed internal slots check in methods of some built-in types, #1017
Fixed URLSearchParams iterator .next that should be enumerable by the spec
Refactored Subscription
Added NodeJS 17.2 compat data mapping
Added a workaround for a UC Browser specific version bug with unobservable RegExp#sticky flag, #1008 , #1015
Added handling of comments and specific spaces to Function#name polyfill, #1010 , thanks @ildar-shaimordanov
Prevented some theoretical cases of breaking / observing the internal state by patching Array.prototype[@@species]
Refactored URL and URLSearchParams
Added iOS Safari 15.2 compat data mapping
Added Electron 17.0 compat data mapping
Updated Deno compat data mapping
Added a workaround for FF26- bug where ArrayBuffers are non-extensible, but Object.isExtensible does not report it:
Fixed in Object.{ isExtensible, isSealed, isFrozen } and Reflect.isExtensible
Fixed handling of ArrayBuffers as collections keys
Fixed Object#toString on AggregateError in IE10-
Fixed possible lack of dependencies of WeakMap in IE8-
.findLast methods family marked as supported from Chrome 97
Fixed inheritance of Electron compat data web. modules
Fixed Safari 15.1 compat data (some features were not added)
Added iOS Safari 15.1 compat data mapping
Most built-ins are encapsulated in core-js for preventing possible cases of breaking / observing the internal state by patching / deleting of them
Avoid .call / .apply prototype methods that could be patched
Avoid instanceof operator - implicit .prototype / @@hasInstance access that could be patched
Avoid RegExp#test, String#match and some over methods - implicit .exec and RegExp well-known symbols access that could be patched
Clearing of Error stack from extra entries experimentally added to AggregateError, #996 , in case lack of problems it will be extended to other cases
In engines with native Symbol support, new well-known symbols created with usage Symbol.for for ensuring the same keys in different realms, #998
Added a workaround of a BrowserFS NodeJS process polyfill bug that incorrectly reports V8 version that's used in some cases of core-js feature detection
Fixed normalization of message AggregateError argument
Fixed order of arguments conversion in Math.scale, a spec draft bug
Fixed core-js-builder work in NodeJS 17, added a workaround of webpack + NodeJS 17 issue
Added NodeJS 17.0 compat data mapping
Added Opera Android 65 compat data mapping
Updated Electron 16.0 compat data mapping
Many other minor fixes and improvements
Fixed the prototype chain of AggregateError constructor that should contain Error constructor
Fixed incorrect AggregateError.prototype properties descriptors
Fixed InstallErrorCause internal operation
Added NodeJS 16.11 compat data mapping
Added Deno 1.16 compat data mapping
Object.hasOwn marked as supported from Safari 15.1
Early { Array, %TypedArray% }.fromAsync errors moved to the promise, per the latest changes of the spec draft
Internal ToInteger(OrInfinity) operation returns +0 for -0 argument, ES2020+ update
Fixed theoretical problems with handling bigint in Number constructor wrapper
Fixed String.raw with extra arguments
Fixed some missed dependencies in entry points
Some other minor fixes and improvements
Refactoring
Fixed String.prototype.substr feature detection and compat data
Removed mistakenly added .forEach from prototypes of some DOM collections where it shouldn't be, #988 , #987 , thanks @moorejs
Added cause to AggregateError constructor implementation (still without adding to the feature detection)
Families of .at and .findLast methods marked as supported in Safari TP
Added Electron 16.0 compat data mapping
Added Array.fromAsync stage 1 proposal :
Array.fromAsync
%TypedArray%.fromAsync
.name and .toString() on polyfilled functions improved in many different cases
Improved internal IsConstructor and IsCallable checks
Fixed some internal cases of GetMethod operation
Fixed a bug of MS Edge 18- parseInt / parseFloat with boxed symbols
Fixed es.array.{ index-of, last-index-of } compat data
Added Deno 1.15 compat data mapping
Some other minor fixes and optimizations
Fixed some possible problems related to possible extension of %IteratorPrototype% and %AsyncIteratorPrototype% in the future
Fixed DOMTokenList.prototype.{ forEach, @@iterator, keys, values, entries } in old WebKit versions where element.classList is not an instance of global DOMTokenList
Added NodeJS 16.9 compat data mapping
Added Samsung Internet 16.0 compat data mapping
Fixed missed cases of ES3 reserved words usage, related to #980
Fixed dependencies in one missed entry point
Some other minor fixes and optimizations
Fixed missed modules-by-versions data
AsyncFromSyncIterator made stricter, related mainly to AsyncIterator.from and AsyncIterator.prototype.flatMap
Handling of optional .next arguments in (Async)Iterator methods is aligned with the current spec draft (mainly - ignoring the first passed to .next argument in built-in generators)
Behavior of .next, .return, .throw methods on AsyncIterator helpers proxy iterators aligned with the current spec draft (built-in async generators) (mainly - some early errors moved to returned promises)
Fixed some cases of safe iteration closing
Fixed dependencies of some entry points
Fixed CreateAsyncFromSyncIterator semantic in AsyncIterator.from, related to #765
Added a workaround of a specific case of broken Object.prototype, #973
Added a workaround of a Closure Compiler unsafe optimization, #972
One more fix crashing of Object.create(null) on WSH, #970
Added Deno 1.14 compat data mapping
Fixed microtask implementation on iOS Pebble, #967
Fixed some entry points
Improved old Safari compat data
Array find from last proposal moved to the stage 3, July 2021 TC39 meeting
Array filtering stage 1 proposal :
Array.prototype.filterReject replaces Array.prototype.filterOut
%TypedArray%.prototype.filterReject replaces %TypedArray%.prototype.filterOut
Added Array grouping stage 1 proposal :
Array.prototype.groupBy
%TypedArray%.prototype.groupBy
Work with symbols made stricter: some missed before cases of methods that should throw an error on symbols now works as they should
Handling @@toPrimitive in some cases of ToPrimitive internal logic made stricter
Fixed work of Request with polyfilled URLSearchParams, #965
Fixed possible exposing of collections elements metadata in some cases, #427
Fixed crashing of Object.create(null) on WSH, #966
Fixed some cases of typed arrays subclassing logic
Fixed a minor bug related to string conversion in RegExp#exec
Fixed Date.prototype.getYear feature detection
Fixed content of some entry points
Some minor optimizations and refactoring
Deno:
Added Deno support (sure, after bundling since Deno does not support CommonJS)
Allowed deno target in core-js-compat / core-js-builder
A bundle for Deno published on deno.land/x/corejs
Added / updated compat data / mapping:
Deno 1.0-1.13
NodeJS up to 16.6
iOS Safari up to 15.0
Samsung Internet up to 15.0
Opera Android up to 64
Object.hasOwn marked as supported from V8 9.3 and FF92
Date.prototype.getYear marked as not supported in IE8-
Added summary option to core-js-builder, see more info in the README , #910
Worked around breakage related to zone.js loaded before core-js, #953
Added NodeJS 16.4 -> Chrome 91 compat data mapping
Fixed cloning of regex through RegExp constructor, #948
Added RegExp named capture groups polyfill, #521 , #944
Added RegExp dotAll flag polyfill, #792 , #944
Added missed polyfills of Annex B features (required mainly for some non-browser engines), #336 , #945 :
escape
unescape
String.prototype.substr
Date.prototype.getYear
Date.prototype.setYear
Date.prototype.toGMTString
Fixed detection of forbidden host code points in URL polyfill
Allowed rhino target in core-js-compat / core-js-builder, added compat data for rhino 1.7.13, #942 , thanks @gausie
.at marked as supported from FF90
Added polyfill of stable sort in { Array, %TypedArray% }.prototype.sort, #769 , #941
Fixed Safari 14.0- %TypedArray%.prototype.sort validation of arguments bug
.at marked as supported from V8 9.2
Overwrites get-own-property-symbols third-party Symbol polyfill if it's used since it causes a stack overflow, #774
Added a workaround of possible browser crash on Object.prototype accessors methods in WebKit ~ Android 4.0, #232
Fixed some cases of Function#toString with multiple core-js instances
Fixed some possible String#split polyfill problems in V8 5.1
Native promise-based APIs Promise#{ catch, finally } returns polyfilled Promise instances when it's required
Added a workaround of WebKit ~ iOS 10.3 Safari Promise bug, #932
Promise#then of incorrect native Promise implementations with correct subclassing no longer wrapped
Changed the order of Promise feature detection, removed unhandled rejection tracking check in non-browser non-node platforms
Made instanceof Promise and .constructor === Promise work with polyfilled Promise for all native promise-based APIs
Added a workaround for some buggy V8 versions ~4.5 related to fixing of %TypedArray% static methods, #564
URL and URLSearchParams marked as supported from Safari 14.0
Polyfilled built-in constructors protected from calling on instances
Prevented possible RegExp#split problems in old engines, #751 , #919
Detection of Safari 10 string padding bug extended to some Safari-based browsers
Array find from last proposal moved to the stage 2, March TC39 meeting
Prevented possible RegExp#exec problems in some old engines, #920
Updated compat data mapping:
NodeJS up to 16.0
Electron up to 13.0
Samsung Internet up to 14.0
Opera Android up to 62
The rest automatically
Added a workaround for Chrome 38-40 bug which does not allow to inherit symbols (incl. well-known) from DOM collections prototypes to instances, #37
Used NumericRangeIterator as toStringTag instead of RangeIterator in { Number, BigInt }.range iterator, per this PR
TypedArray constructors marked as supported from Safari 14.0
Updated compat data mapping for iOS Safari and Opera for Android
Added Array find from last stage 1 proposal
Array#findLast
Array#findLastIndex
%TypedArray%#findLast
%TypedArray%#findLastIndex
Added %TypedArray%#uniqueBy method for array deduplication stage 1 proposal
Dropped ToLength detection from array methods feature detection which could cause hanging FF11-21 and some versions of old WebKit, #764
Minified bundle from core-js-bundle uses terser instead of uglify-js
Fixed some more issues related to FF44- legacy Iterator, #906
Fixed handling of special replacements patterns in String#replaceAll, #900
Fixed iterators dependencies of Promise.any and Promise.allSettled entries
Fixed microtask implementation on WebOS, #898 , #901
Fixed work of new %TypedArray% methods on BigInt arrays
Added ESNext methods to ES3 workaround for Number constructor wrapper
Added relative indexing method stage 3 proposal
Added Number.range stage 1 proposal
Number.range
BigInt.range
Added array filtering stage 1 proposal
Array#filterOut
%TypedArray%#filterOut
Added array deduplication stage 1 proposal
Added code points / code units explicit feature detection in String#at for preventing breakage code which use obsolete String#at proposal polyfill
Added the missed (es|stable)/instance/replace-all entries
Updated compat data mapping for Opera - from Opera 69, the difference with Chrome versions increased to 14
Compat data mapping for modern Android WebView to Chrome moved from targets parser directly to compat data
Deprecate core-js-builder blacklist option in favor of exclude
Added code points / code units explicit feature detection in String#at for preventing breakage code which use obsolete String#at proposal polyfill
Added OPEN_SOURCE_CONTRIBUTOR detection in postinstall
Added Drone CI detection in postinstall
String#replaceAll moved to the stable ES, per June TC39 meeting
Promise.any and AggregateError moved to the stable ES, per July TC39 meeting
Added Reflect[@@toStringTag], per July TC39 meeting
Forced replacement of Array#{ reduce, reduceRight } in Chrome 80-82 because of a bug , #766
Following the changes in the upsert proposal , { Map, WeakMap }#emplace replace { Map, WeakMap }#upsert, these obsolete methods will be removed in the next major release
By the current spec , AggregateError#errors is own data property
Added correct iteration closing in the iteration helpers according to the current version of the proposal
process.nextTick have a less priority than Promise in the microtask implementation, #855
Fixed microtask implementation in engines with MutationObserver, but without document, #865 , #866
Fixed core-js-builder with an empty (after the targets engines or another filtration) modules list, #822
Fixed possible twice call of window.onunhandledrejection, #760
Fixed some possible problems related multiple global copies of core-js, #880
Added a workaround for 3rd party Reflect.set polyfill bug, #847
Updated compat data:
Chrome up to 86
FF up to 82
Safari up to 14
Updated compat data mapping:
iOS up to 14
NodeJS up to 15.0
Electron up to 11.0
Samsung Internet up to 13.0
Opera Android up to 60
The rest automatically
Updated all required dependencies
Updated Browserslist #755
Fixed setImmediate in Safari #770 , thanks @dtinth
Fixed some regexp, thanks @scottarc
Added OPEN_SOURCE_CONTRIBUTOR detection in postinstall, thanks @scottarc
Added Drone CI in postinstall CI detection #781
Prevented a possible almost infinite loop in non-standard implementations of some backward iteration array methods
Fixed replacement of substitutes of undefined capture groups in .replace in Safari 13.0-, #471 , #745 , thanks @mattclough1
Improved compat data for old engines
Fixed early implementations of Array#{ every, forEach, includes, indexOf, lastIndexOf, reduce, reduceRight, slice, some, splice } for the usage of ToLength
Added RegExp#exec dependency to methods which depends on the correctness of logic of this method (3.6.0-3.6.1 issue), #741
Refactored some internals
Fixed a bug related Symbol with multiple copies of core-js (for 3.4.2-3.6.0), #736
Refactored some tools
Added support of sticky (y) RegExp flag, #372 , #732 , #492 , thanks @cvle and @nicolo-ribaudo
Added RegExp#test delegation to RegExp#exec, #732 , thanks @cvle
Fixed some cases of Object.create(null) in IE8-, #727 , #728 , thanks @aleen42
Allowed object of minimum environment versions as core-js-compat and core-js-builder targets argument
Allowed corresponding to Babel targets.esmodules, targets.browsers, targets.node options in core-js-compat and core-js-builder
Engines in compat data and results of targets parsing sorted alphabetically
Fixed features/instance/match-all entry compat data
Fixed Array.prototype[@@unscopables] descriptor (was writable)
Added Samsung Internet 11 compat data mapping
Added one more workaround for broken in previous versions inspectSource helper, #719
Added Opera Mobile compat data
Updated Samsung Internet, iOS, old Node and Android compat data mapping
es.string.match-all marked as completely supported in FF73
Generate core-js-compat/modules since often we need just the list of core-js modules
Returned usage of node -e in the postinstall scripts for better cross-platform compatibility, #582
Improved CI detection in the postinstall script, #707
Fixed an NPM publishing issue
Improved iOS compat data - added missed mapping iOS 12.2 -> Safari 12.1, added bug fixes from patch releases
Added Safari 13.1 compat data
Added missed in core-js-compat helpers ie_mob normalization
Normalize the result of getModulesListForTargetVersion core-js-compat helper
Improved CI detection in the postinstall script, #707
Detect incorrect order of operations in Object.assign, MS Edge bug
Detect usage of ToLength in Array#{ filter, map }, FF48-49 and MS Edge 14- issues
Detect incorrect MS Edge 17-18 Reflect.set which allows setting the property to object with non-writable property on the prototype
Fixed inspectSource helper with multiple core-js copies and some related features like some edge cases of Promise feature detection
Added feature detection for Safari non-generic Promise#finally bug (critical for core-js-pure)
Fixed missed esnext.string.code-points in core-js/features/string entry point
Updated Iterator proposal feature detection for the case of non-standard Iterator in FF44-
Fixed missed es.json.stringify and some modules from iteration helpers proposal in some entry points (includes the root entry point)
Added a workaround of String#{ endsWith, startsWith } MDN polyfills bugs, #702
Fixed .size property descriptor of Map / Set in the pure version
Refactoring, some internal improvements
Don't use polyfilled symbols as internal uids, a workaround for some incorrect use cases
String#replaceAll is available only in nightly FF builds
Improved Promise feature detection for the case of V8 6.6 with multiple core-js copies
Some internals optimizations
Added Node 13.2 -> V8 7.9 compat data mapping
Returned usage of node -e in postinstall scripts
Don't detect Chakra-based Edge as Chrome in the userAgent parsing
Fixed inheritance in typed array constructors wrappers, #683
Added one more workaround for correct work of early fetch implementations with polyfilled URLSearchParams, #680
Added a workaround of V8 deoptimization which causes serious performance degradation (~4x in my tests) of Array#concat, #679
Added a workaround of V8 deoptimization which causes slightly performance degradation of Promise, #679
Added (Async)Iterator.prototype.constructor -> (Async)Iterator per this issue
Added compat data for Chromium-based Edge
Added a workaround of V8 deoptimization which causes serious performance degradation (~20x in my tests) of some RegExp-related methods like String#split, #306
Added a workaround of V8 deoptimization which causes serious performance degradation (up to 100x in my tests) of Array#splice and slightly Array#{ filter, map }, #677
Fixed work of fetch with polyfilled URLSearchParams, #674
Fixed an edge case of String#replaceAll with an empty search value
Added compat data for Chrome 80
package-lock.json no longer generated in libraries
gopher removed from URL special cases per this issue and this PR
Added compat data for iOS 13 and Node 13.0
Fixed compatibility of core-js-compat with Node 6 and Yarn, #669
Fixed an NPM publishing issue
String#{ matchAll, replaceAll } throws an error on non-global regex argument per the decision from TC39 meetings (+ this PR ). It's a breaking change, but since it's a breaking change in the ES spec, it's added at the minor release
globalThis moved to stable ES, per October TC39 meeting
Promise.any moved to stage 3, some minor internal changes, per October TC39 meeting
String#replaceAll moved to stage 3, per October TC39 meeting
Added iterator helpers stage 2 proposal :
Iterator
Iterator.from
Iterator#asIndexedPairs
Iterator#drop
Iterator#every
Iterator#filter
Iterator#find
Iterator#flatMap
Iterator#forEach
Iterator#map
Iterator#reduce
Iterator#some
Iterator#take
Iterator#toArray
Iterator#@@toStringTag
AsyncIterator
AsyncIterator.from
AsyncIterator#asIndexedPairs
AsyncIterator#drop
AsyncIterator#every
AsyncIterator#filter
AsyncIterator#find
AsyncIterator#flatMap
AsyncIterator#forEach
AsyncIterator#map
AsyncIterator#reduce
AsyncIterator#some
AsyncIterator#take
AsyncIterator#toArray
AsyncIterator#@@toStringTag
Updated Map#upsert (Map#updateOrInsert before) proposal
Moved to stage 2, per October TC39 meeting
Map#updateOrInsert renamed to Map#upsert
Added WeakMap#upsert
You can don't pass one of the callbacks
Added a workaround for iOS Safari MessageChannel + bfcache bug, #624
Added a workaround for Chrome 33 / Android 4.4.4 Promise bug, #640
Replaced broken URL constructor in Safari and URLSearchParams in Chrome 66-, #656
Added compat data for Node up to 12.11, FF 69, Samsung up to 10.2 and Phantom 1.9
Math.hypot marked as not supported in Chrome 77 since a bug in this method was not fixed before the stable Chrome 77 release
Fixed unnecessary exposing on Symbol.matchAll in esnext.string.match-all, #626
Fixed missed cases access the .next method once, at the beginning, of the iteration protocol
Show similar postinstall messages only once per npm i, #597 , thanks @remy
Show similar postinstall messages only once per npm i, #597
Added a workaround for possible recursion in microtasks caused by conflicts with other Promise polyfills, #615
Promise.allSettled moved to stable ES, per July TC39 meeting
Promise.any moved to stage 2, .errors property of AggregateError instances made non-enumerable, per July TC39 meeting
using statement proposal moved to stage 2, added Symbol.asyncDispose, per July TC39 meeting
Added Array.isTemplateObject stage 2 proposal , per June TC39 meeting
Added Map#updateOrInsert stage 1 proposal , per July TC39 meeting
Added a fix for Math.hypot V8 7.7 bug , since it's still not stable without adding results to core-js-compat
Added a workaround for APIs where not possible to replace broken native Promise, #579 - added .finally and patched .then to / on native Promise prototype
Fixed crashing of Opera Presto, #595
Fixed incorrect early breaking of { Map, Set, WeakMap, WeakSet }.deleteAll
Fixed some missed dependencies in entry points
Added compat data for Node 12.5, FF 67, Safari 13
Added support of DISABLE_OPENCOLLECTIVE env variable to postinstall script
Removed core-js-pure dependency from core-js-compat, #590
Fixed generation of core-js-compat on Windows, #606
Refactoring. Many minor internal improvements and fixes like:
Improved Symbol.keyFor complexity to O(1)
Fixed the order of arguments validation in String.prototype.{ endsWith, includes, startsWith }
Internal implementation of RegExp#flags helper now respect dotAll flag (mainly related to the pure version)
Performance optimizations related old V8
Etc.
Fixed core-js/features/reflect/delete-metadata entry point
Some fixes and improvements of the postinstall script like support npm color config (#556 ) or adding support of ADBLOCK env variable
Refactoring and some minor fixes
Some fixes and improvements of the postinstall script like support npm color config (#556 ) or adding support of ADBLOCK env variable
Added a workaround of a strange npx bug on postinstall, #551
Added a workaround of a strange npx bug on postinstall, #551
Added one more workaround of alternative not completely correct Symbol polyfills, #550 , #554
Reverted esnext.string.match-all in some entry points for fix autogeneration of core-js-compat/entries and backward @babel/preset-env compatibility
Added one more workaround of alternative not completely correct Symbol polyfills, #550 , #554
String#matchAll moved to stable ES, exposed Symbol.matchAll, #516
Promise.allSettled moved to stage 3, #515
String#replaceAll moved to stage 2, behavior updated by the spec draft, #524
Promise.any moved to stage 1, #517
Removed es.regexp.flags dependency from es.regexp.to-string, #536 , #537
Fixed IE8- non-enumerable properties support in Object.{ assign, entries, values }, #541
Fixed support of primitives in Object.getOwnPropertySymbols in Chrome 38 / 39, #539
window.postMessage-based task implementation uses location origin over '*', #542
Lookup PromiseConstructor.resolve only once in Promise combinators, tc39/ecma262#1506
Temporarily removed core-js dependency from core-js-compat since it's required for missed at this moment feature
Show a message on postinstall
Added compat data for Chrome 76, FF 67, Node 12
Fixed IE8- non-enumerable properties support in Object.{ assign, entries, values }, #541
Fixed support of primitives in Object.getOwnPropertySymbols in Chrome 38 / 39, #539
Show a message on postinstall
Fixed some cases of work with malformed URI sequences in URLSearchParams, #525
Added a workaround for a rollup issue, #513
Features
Add new features:
Object.fromEntries (ECMAScript 2019 )
Symbol#description (ECMAScript 2019 )
New Set methods (stage 2 proposal )
Set#difference
Set#intersection
Set#isDisjointFrom
Set#isSubsetOf
Set#isSupersetOf
Set#symmetricDifference
Set#union
Promise.allSettled (stage 2 proposal )
Getting last item from Array (stage 1 proposal )
Array#lastItem
Array#lastIndex
String#replaceAll (stage 1 proposal )
String#codePoints (stage 1 proposal )
New collections methods (stage 1 proposal )
Map.groupBy
Map.keyBy
Map#deleteAll
Map#every
Map#filter
Map#find
Map#findKey
Map#includes
Map#keyOf
Map#mapKeys
Map#mapValues
Map#merge
Map#reduce
Map#some
Map#update
Set#addAll
Set#deleteAll
Set#every
Set#filter
Set#find
Set#join
Set#map
Set#reduce
Set#some
WeakMap#deleteAll
WeakSet#addAll
WeakSet#deleteAll
compositeKey and compositeSymbol methods (stage 1 proposal )
Number.fromString (stage 1 proposal )
Math.seededPRNG (stage 1 proposal )
Symbol.patternMatch (for stage 1 pattern matching proposal )
Symbol.dispose (for stage 1 using statement proposal )
Promise.any (with AggregateError) (stage 0 proposal )
URL and URLSearchParam from URL standard , also stage 0 proposal to ECMAScript
URL
URL#href
URL#origin
URL#protocol
URL#username
URL#password
URL#host
URL#hostname
URL#port
URL#pathname
URL#search
URL#searchParams
URL#hash
URL#toString
URL#toJSON
URLSearchParams
URLSearchParams#append
URLSearchParams#delete
URLSearchParams#get
URLSearchParams#getAll
URLSearchParams#has
URLSearchParams#set
URLSearchParams#sort
URLSearchParams#toString
URLSearchParams#keys
URLSearchParams#values
URLSearchParams#entries
URLSearchParams#@@iterator
.forEach method on iterable DOM collections (#329 )
Improve existing features:
Add triggering unhandled Promise rejection events (instead of only global handlers), #205 .
Wrap fetch for correct with polyfilled Promise and preventing problems like #178 , #332 , #371 .
Add support of @@isConcatSpreadable to Array#concat.
Add support of @@species to Array#{concat, filter, map, slice, splice}.
Add direct .exec calling to RegExp#{@@replace, @@split, @@match, @@search}. Also, added fixes for RegExp#exec method. #411 , #434 , #453 , thanks @nicolo-ribaudo .
Correct iterators prototypes chain, related #261 .
Correct Typed Arrays prototypes chain, related #378 .
Make the internal state of polyfilled features completely unobservable, #146 .
Add validation of receiver's internal class to missed non-generic methods.
Fix descriptors of global properties.
In the version without global pollution, if Object#toString does not support @@toStringTag, add to wrapped prototypes own toString method with @@toStringTag logic, see #199 .
Update standard features and proposals:
Mark ES2016, ES2017, ES2018, ES2019 features as stable:
Array#{ flat, flatMap }
{ Array, %TypedArray% }#includes
Object.{ values, entries}
Object.getOwnPropertyDescriptors
String#{ padStart, padEnd }
String#{ trimStart, trimEnd, trimLeft, trimRight }
Promise#finally
Symbol.asyncIterator
Object#__(define|lookup)[GS]etter__
Remove obsolete features:
Error.isError (withdrawn)
System.global and global (replaced by globalThis)
Map#toJSON and Set#toJSON (rejected)
RegExp.escape (rejected)
Reflect.enumerate (removed from the spec)
Unnecessary iteration methods from CSSRuleList, MediaList, StyleSheetList
No more non-standard features , finally removed:
Dict
Object.{classof, isObject, define, make}
Function#part
Number#@@iterator
String#{escapeHTML, unescapeHTML}
delay
Add .sham flag to features which can't be properly polyfilled and / or not recommended for usage:
Symbol constructor - we can't add new primitives. Object.prototype accessors too expensive.
Object.{create, defineProperty, defineProperties, getOwnPropertyDescriptor, getOwnPropertyDescriptors}, Reflect.{defineProperty, getOwnPropertyDescriptor} can't be properly polyfilled without descriptors support.
Object.{freeze, seal, preventExtensions}, Reflect.preventExtensions can't be properly polyfilled in ES3 environment.
Object.getPrototypeOf can be deceived in ES3 environment.
Reflect.construct can't be polyfilled for a correct work with newTarget argument on built-ins.
Typed Array constructors polyfill is quite correct but too expensive.
URL constructor in engines without descriptors support.
Bug and compatibility fixes:
Fix deoptimisation of iterators in V8, #377 .
Fix import of property before constructor which should contain this property, #262 .
Fix some cases of IE11 WeakMap frozen keys fallback, #384 .
Fix non-enumerable integer keys issue because of Nashorn ~ JDK8 bug, #389 .
Fix Safari 12.0 Array#reverse bug .
One more fix for microtasks in iOS related #339 .
Added a fallback for Rhino bug , #440 .
Many other internal fixes and improvements.
Repository:
Change core-js repository structure to monorepo with packages in /packages/ directory.
Clean-up it, remove all possible duplicates, generated files, etc.
Packages:
Extract a version without global namespace pollution to a separate core-js-pure package (replacement for core-js/library).
Leave only one pair of bundles (global, with all polyfills) and move it to core-js-bundle package.
Remove bundling logic from core-js package, leave it only in core-js-builder package.
Clean-up packages.
Because of all approaches, reduce size of packages from ~2mb for core-js@2 to :
~500kb for core-js package
~440kb for core-js-pure package
Finally remove bower.json
CommonJS API, namespaces:
Add availability configuration of aggressiveness .
Move core-js/library to separate core-js-pure package.
Because of removing all non-standard features, we no longer need core-js/shim entry point, replace it just with core-js.
Move all features from ES5, ES2015, ES2016, ES2017, ES2018 and ES2019 to one namespace for stable ES - it's available as core-js/es, all those features in modules folder has es. prefix.
Change prefix for ES proposals from es7. to esnext., they no longer available in core-js/es7, use core-js/stage/* instead of that.
Rename core-js(/library)/fn to core-js(-pure)/features for improve readability.
Allow more granular inclusion of features from /es/ path (for example, core-js/es/array/from).
Add /stable/ entry points as an equal of /features/ for stable features, without proposals.
Add /proposals/ entry points for allow include all features from one proposal (for example, core-js/proposals/reflect-metadata).
Add /es|stable|features/instance/ entry points for getting polyfill of the related method for passed instance (could be used in cases like babel-runtime).
Split typed arrays polyfills. Now you can, for example, load only required method (for example, core-js/es/typed-array/from).
Extract well-known symbols definition from es.symbol module for loading only required features, for example, in MS Edge.
Rename web.dom namespace to web.dom-collections.
Rename es6.regexp.{match, replace, search, split} -> es.string.{match, replace, search, split} - mainly it's fixes / adding support of well-known symbols to string methods, only in second place adding related methods to regexp prototype.
Relax /modules/ directory by moving internal modules to /internals/ directory.
Remove deprecated array entry points: core-js(/library)/fn/array/{pop, push, reverse, shift, unshift}.
core object no longer available in the global version, entry points which previously returned it now returns globalThis object. Also, don't set global core property.
Add some missing entry points.
Tools, tests, code quality:
Added core-js-compat package with:
Data about the necessity of core-js modules and API for getting a list of required core-js modules by browserslist query, #466 .
Data which modules load by each entry point (mainly useful for tools like @babel/preset-env).
Data which modules added in minor versions (mainly useful for tools like @babel/preset-env).
core-js-builder package:
Added targets option with browserslist query.
Removed an option for generation bundle of a version without global namespace pollution - now it's an odd use case.
Removed UMD wrapper from a generated code of bundles - we don't need it for a global polyfill.
Getting rid of LiveScript , usage another language in JS standard library looks strange and impedes usage of tools like ESLint:
Tests are rewritten to JS.
Scripts are rewritten to JS.
Babel with minimalistic config (which should work anywhere) used on tests.
ESLint used on tests and tools.
Source code refactored for improving readability.
Fixed buggy String#padStart and String#padEnd mobile Safari implementations, #414 .
Added a workaround against crushing an old IE11.0.9600.16384 build, #485 .
Added a workaround for babel-minify bug, #479
Fixed handling of $ in String#replace, #471
Fixed an issue with minified version, #463 , #465
Add direct .exec calling to RegExp#{@@replace, @@split, @@match, @@search}. Also, added fixes for RegExp#exec method. #428 , #435 , #458 , thanks @nicolo-ribaudo .
Get rid of reserved variable name final, related #400
Forced replace native Promise in V8 6.6 (Node 10 and Chrome 66) because of a bug with resolving custom thenables
Added a workaround for usage buggy native LG WebOS 2 Promise in microtask implementation, #396
Added modern version internal debugging information about used versions
Fix some edge cases of Reflect.set, #392 and #393
Fixed one case of deoptimization built-in iterators in V8, related #377
Fixed some cases of iterators feature detection, #368
Fixed manually entered NodeJS domains issue in Promise, #367
Fixed Number.{parseInt, parseFloat} entry points
Fixed __(define|lookup)[GS]etter__ export in the library version
Fixed calling onunhandledrejectionhandler multiple times for one Promise chain, #318
Forced replacement of String#{padStart, padEnd} in Safari 10 because of a bug , #280
Fixed Array#@@iterator in a very rare version of WebKit, #236 and #237
One more #345 -related fix
MutationObserver no longer used for microtask implementation in iOS Safari because of bug with scrolling, #339
Fixed JSON.stringify(undefined, replacer) case in the wrapper from the Symbol polyfill, #345
Array() calls changed to new Array() for V8 optimisation
Updated Promise#finally per tc39/proposal-promise-finally#37
Optimized usage of some internal helpers for reducing size of shim version
Fixed some entry points for virtual methods
Added Promise#finally stage 3 proposal , #225
Added Promise.try stage 1 proposal
Added Array#flatten and Array#flatMap stage 1 proposal
Added .of and .from methods on collection constructors stage 1 proposal :
Map.of
Set.of
WeakSet.of
WeakMap.of
Map.from
Set.from
WeakSet.from
WeakMap.from
Added Math extensions stage 1 proposal , #226 :
Math.clamp
Math.DEG_PER_RAD
Math.degrees
Math.fscale
Math.RAD_PER_DEG
Math.radians
Math.scale
Added Math.signbit stage 1 proposal
Updated global stage 3 proposal - added global global object, System.global deprecated
Updated Object.getOwnPropertyDescriptors to the final version - it should not create properties if descriptors are undefined
Updated the list of iterable DOM collections, #249 , added:
CSSStyleDeclaration#@@iterator
CSSValueList#@@iterator
ClientRectList#@@iterator
DOMRectList#@@iterator
DOMStringList#@@iterator
DataTransferItemList#@@iterator
FileList#@@iterator
HTMLAllCollection#@@iterator
HTMLCollection#@@iterator
HTMLFormElement#@@iterator
HTMLSelectElement#@@iterator
MimeTypeArray#@@iterator
NamedNodeMap#@@iterator
PaintRequestList#@@iterator
Plugin#@@iterator
PluginArray#@@iterator
SVGLengthList#@@iterator
SVGNumberList#@@iterator
SVGPathSegList#@@iterator
SVGPointList#@@iterator
SVGStringList#@@iterator
SVGTransformList#@@iterator
SourceBufferList#@@iterator
TextTrackCueList#@@iterator
TextTrackList#@@iterator
TouchList#@@iterator
Updated stages of proposals:
Updated typed arrays to the modern (ES2016+) arguments validation,
#293
Fixed %TypedArray%.from Safari bug, #285
Fixed compatibility with old version of Prototype.js, #278 , #289
Function#name no longer cache the result for correct behaviour with inherited constructors, #296
Added errors on incorrect context of collection methods, #272
Fixed conversion typed array constructors to string, fix #300
Fixed Set#size with debugger ReactNative for Android, #297
Fixed an issue with Electron-based debugger, #230
Fixed compatibility with incomplete third-party WeakMap polyfills, #252
Added a fallback for Date#toJSON in engines without native Date#toISOString, #220
Added support for Sphere Dispatch API, #286
Seriously changed the coding style and the ESLint config
Updated many dev dependencies (webpack, uglify, etc)
Some other minor fixes and optimizations
Fixed script tag for some parsers, #204 , #216
Removed some unused variables, #217 , #218
Fixed MS Edge Reflect.construct and Reflect.apply - they should not allow primitive as argumentsList argument
Added Observable, stage 1 proposal
Fixed behavior Object.{getOwnPropertySymbols, getOwnPropertyDescriptor} and Object#propertyIsEnumerable on Object.prototype
Reflect.construct and Reflect.apply should throw an error if argumentsList argument is not an object, #194
Added conversion -0 to +0 to Array#{indexOf, lastIndexOf}, ES2016 fix
Added fixes for some Math methods in Tor Browser
Array.{from, of} no longer calls prototype setters
Added workaround over Chrome DevTools strange behavior, #186
Fixed Object.getOwnPropertyNames(window) 2.1+ versions bug, #181
Added String#matchAll, proposal
Added Object#__(define|lookup)[GS]etter__, annex B ES2017
Added @@toPrimitive methods to Date and Symbol
Fixed %TypedArray%#slice in Edge ~ 13 (throws with @@species and wrapped / inherited constructor)
Some other minor fixes
Improved support NodeJS domains in Promise#then, #180
Added fallback for Date#toJSON bug in Qt Script, #173
Added fallback for Symbol polyfill in Qt Script, #173
Added one more fallback for IE11 Script Access Denied error with iframes, #165
Some minor Promise fixes:
Browsers rejectionhandled event better HTML spec complaint
Errors in unhandled rejection handlers should not cause any problems
Fixed typo in feature detection
Some Promise improvements:
Feature detection:
Added detection unhandled rejection tracking support - now it's available everywhere , #140
Added detection @@species pattern support for completely correct subclassing
Removed usage Object.setPrototypeOf from feature detection and noisy console message about it in FF
Promise.all fixed for some very specific cases
API :
ES5 polyfills are split and logic, used in other polyfills, moved to internal modules
All entry point works in ES3 environment like IE8- without core-js/(library/)es5
Added all missed single entry points for ES5 polyfills
Separated ES5 polyfills moved to the ES6 namespace. Why?
Mainly, for prevent duplication features in different namespaces - logic of most required ES5 polyfills changed in ES6+:
Already added changes for: Object statics - should accept primitives, new whitespaces lists in String#trim, parse(Int|float), RegExp#toString logic, String#split, etc
Should be changed in the future: @@species and ToLength logic in Array methods, Date parsing, Function#bind, etc
Should not be changed only several features like Array.isArray and Date.now
Some ES5 polyfills required for modern engines
All old entry points should work fine, but in the next major release API can be changed
Object.getOwnPropertyDescriptors moved to the stage 3, January TC39 meeting
Added umd option for custom build process , #169
Returned entry points for Array statics, removed in 2.0, for compatibility with babel 6 and for future fixes
Deprecated :
New Features :
Added Reflect metadata API as a pre-strawman feature, #152 :
Reflect.defineMetadata
Reflect.deleteMetadata
Reflect.getMetadata
Reflect.getMetadataKeys
Reflect.getOwnMetadata
Reflect.getOwnMetadataKeys
Reflect.hasMetadata
Reflect.hasOwnMetadata
Reflect.metadata
Implementation / fixes Date#toJSON
Fixes for parseInt and Number.parseInt
Fixes for parseFloat and Number.parseFloat
Fixes for RegExp#toString
Fixes for Array#sort
Fixes for Number#toFixed
Fixes for Number#toPrecision
Additional fixes for String#split (RegExp#@@split)
Improvements :
Correct subclassing wrapped collections, Number and RegExp constructors with native class syntax
Correct support SharedArrayBuffer and buffers from other realms in typed arrays wrappers
Additional validations for Object.{defineProperty, getOwnPropertyDescriptor} and Reflect.defineProperty
Bug Fixes :
Fixed some cases Array#lastIndexOf with negative second argument
Added fallback for V8 ~ Chrome 49 Promise subclassing bug causes unhandled rejection on feature detection, #159
Added fix for very specific environments with global window === null
Temporarily removed length validation from Uint8Array constructor wrapper. Reason - bug in ws module (-> socket.io) which passes to Buffer constructor -> Uint8Array float and uses the V8 bug for conversion to int (by the spec should be thrown an error). It creates problems for many people. I hope, it will be returned after fixing this bug in V8.
Forced usage Promise.resolve polyfill in the library version for correct work with wrapper
Object.assign should be defined in the strict mode -> throw an error on extension non-extensible objects, #154
Added implementations and fixes Typed Arrays -related features
ArrayBuffer, ArrayBuffer.isView, ArrayBuffer#slice
DataView with all getter / setter methods
Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array and Float64Array constructors
%TypedArray%.{for, of}, %TypedArray%#{copyWithin, every, fill, filter, find, findIndex, forEach, indexOf, includes, join, lastIndexOf, map, reduce, reduceRight, reverse, set, slice, some, sort, subarray, values, keys, entries, @@iterator, ...}
Added System.global , proposal , November TC39 meeting
Added Error.isError , proposal , November TC39 meeting
Added Math.{iaddh, isubh, imulh, umulh} , proposal
RegExp.escape moved from the es7 to the non-standard core namespace, July TC39 meeting - too slow, but it's condition of stability, #116
Promise
Some improvements collections polyfills
O(1) and preventing possible leaks with frozen keys, #134
Correct observable state object keys
Renamed String#{padLeft, padRight} -> String#{padStart, padEnd} , proposal , November TC39 meeting (they want to rename it on each meeting?O_o), #132
Added String#{trimStart, trimEnd} as aliases for String#{trimLeft, trimRight} , proposal , November TC39 meeting
Added annex B HTML methods - ugly, but also the part of the spec
Added little fix for Date#toString - new Date(NaN).toString() should be 'Invalid Date'
Added {keys, values, entries, @@iterator} methods to DOM collections which should have iterable interface or should be inherited from Array - NodeList, DOMTokenList, MediaList, StyleSheetList, CSSRuleList.
Removed Mozilla Array generics - deprecated and will be removed from FF , looks like strawman is dead , available alternative shim
Removed core.log module
CommonJS API
Custom build from external scripts moved to the separate package for preventing problems with dependencies
Changed $ prefix for internal modules file names because Team Foundation Server does not support it, #129
Additional fix for SameValueZero in V8 ~ Chromium 39-42 collections
Additional fix for FF27 Array iterator
Removed usage shortcuts for arguments object - old WebKit bug, #150
{Map, Set}#forEach non-generic, #144
Many other improvements
Reject with TypeError on attempt resolve promise itself
Correct behavior with broken Promise subclass constructors / methods
Added Promise-based fallback for microtask
Fixed V8 and FF Array#{values, @@iterator}.name
Fixed IE7- [1, 2].join(undefined) -> '1,2'
Some other fixes / improvements / optimizations
Some more Number constructor fixes:
Fixed V8 ~ Node 0.8 bug: Number('+0x1') should be NaN
Fixed Number(' 0b1\n') case, should be 1
Fixed Number() case, should be 0
Fixed Number('0b12') -> NaN case in the shim
Fixed V8 ~ Chromium 40- bug - Weak(Map|Set)#{delete, get, has} should not throw errors #124
Some other fixes and optimizations
Fixed some problems related old V8 bug Object('a').propertyIsEnumerable(0) // => false, for example, Object.assign({}, 'qwe') from the last release
Fixed .name property and Function#toString conversion some polyfilled methods
Fixed Math.imul arity in Safari 8-
Improved optimisations for V8
Fixed build process from external packages, #120
One more Object.{assign, values, entries} fix for very specific case
Replaced fix JSON.stringify + Symbol behavior from .toJSON method to wrapping JSON.stringify - little more correct, compat-table/642
Fixed typo which broke tasks scheduler in WebWorkers in old FF, #114
Added toJSON method to Symbol polyfill and to MS Edge implementation for expected JSON.stringify result w/o patching this method
Replaced Reflect.construct implementations w/o correct support third argument
Fixed global detection with changed document.domain in ~IE8, #100
Added more correct microtask implementation for Promise
Some fixes for final MS Edge, replaced broken native Reflect.defineProperty
Some minor fixes and optimizations
Changed compression client/*.min.js options for safe Function#name and Function#length, should be fixed #92
Added logic for well-known symbols :
Symbol.match
Symbol.replace
Symbol.split
Symbol.search
Actualized and optimized work with iterables:
Uses enumerable properties in shimmed instances - collections, iterators, etc for optimize performance
Added support native constructors to Reflect.construct with 2 arguments
Added support native constructors to Function#bind shim with new
Removed obsolete .clear methods native Weak-collections
Maximum modularity, reduced minimal custom build size, separated into submodules:
Many other optimizations
Final cleaning non-standard features
Moved $for to separate library . This work for syntax - for-of loop and comprehensions
Moved Date#{format, formatUTC} to separate library . Standard way for this - ECMA-402
Removed Math methods from Number.prototype. Slight sugar for simple Math methods calling
Removed {Array#, Array, Dict}.turn
Removed core.global
Uses ToNumber instead of ToLength in Number Iterator , Array.from(2.5) will be [0, 1, 2] instead of [0, 1]
Fixed #85 - invalid Promise unhandled rejection message in nested setTimeout
Fixed #86 - support FF extensions
Fixed #89 - behavior Number constructor in strange case
Collections from library version return wrapped native instances
Fixed collections prototype methods in library version
Optimized Math.hypot
Different instances core-js should use / recognize the same symbols
Some fixes
Simplified custom build
Added custom build js api
Added grunt-cli to devDependencies for npm run grunt
Some fixes
Wrapped Function#toString for correct work wrapped methods / constructors with methods similar to the lodash isNative
Added proto versions of methods to export object in default version for consistency with library version
Added cap for Function#@@hasInstance
Some fixes and optimizations
Some fixes and optimizations
More correct Promise unhandled rejection tracking and resolving / rejection priority
Fixed __proto__-based Promise subclassing in some environments
Added correct symbols descriptors
Fixed behavior Object.{assign, create, defineProperty, defineProperties, getOwnPropertyDescriptor, getOwnPropertyDescriptors} with symbols
Added single entry points for Object.{create, defineProperty, defineProperties}
Added Map#toJSON
Removed non-standard methods Object#[_] and Function#only - they solves syntax problems, but now in compilers available arrows and in near future will be available available bind syntax
Removed non-standard undocumented methods Symbol.{pure, set}
Some fixes and internal changes
Uses webpack instead of browserify for browser builds - more compression-friendly result
Fixed Array statics with single entry points
Added support safe closing iteration - calling iterator.return on abort iteration, if it exists
Added basic support Promise unhandled rejection tracking in shim
Added Object.getOwnPropertyDescriptors
Removed console cap - creates too many problems
Restructuring namespaces
Some fixes
Systematization of modules
Split es6 module
Split console module: web.console - only cap for missing methods, core.log - bound methods & additional features
Added delay method
Some fixes
Added Function instances name property for IE9+
Object static methods accept primitives
RegExp constructor can alter flags (IE9+)
Added Array.prototype[Symbol.unscopables]
Added es6.reflect module:
Added Reflect.apply
Added Reflect.construct
Added Reflect.defineProperty
Added Reflect.deleteProperty
Added Reflect.enumerate
Added Reflect.get
Added Reflect.getOwnPropertyDescriptor
Added Reflect.getPrototypeOf
Added Reflect.has
Added Reflect.isExtensible
Added Reflect.preventExtensions
Added Reflect.set
Added Reflect.setPrototypeOf
core-js methods now can use external Symbol.iterator polyfill
Some fixes
Added cap for ES5 freeze-family methods
Fixed console bug
console no longer shortcut for console.log (compatibility problems)
Some fixes
Better compliance of ES6
Added Math.fround (IE10+)
Some fixes
Symbols :
Added option to disable addition setter to Object.prototype for Symbol polyfill:
Added Symbol.useSimple
Added Symbol.useSetter
Added cap for well-known Symbols:
Added Symbol.hasInstance
Added Symbol.isConcatSpreadable
Added Symbol.match
Added Symbol.replace
Added Symbol.search
Added Symbol.species
Added Symbol.split
Added Symbol.toPrimitive
Added Symbol.unscopables
Added es7.proposals and es7.abstract-refs modules
Added String#at
Added real String Iterator , older versions used Array Iterator
Added abstract references support:
Added Symbol.referenceGet
Added Symbol.referenceSet
Added Symbol.referenceDelete
Added Function#@@referenceGet
Added Map#@@referenceGet
Added Map#@@referenceSet
Added Map#@@referenceDelete
Added WeakMap#@@referenceGet
Added WeakMap#@@referenceSet
Added WeakMap#@@referenceDelete
Added Dict.{...methods}[@@referenceGet]
Removed deprecated .contains methods
Some fixes