Skip to content

Latest commit

 

History

History
2295 lines (2057 loc) · 182 KB

CHANGELOG.md

File metadata and controls

2295 lines (2057 loc) · 182 KB

Changelog

Unreleased
  • 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:
  • 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:
  • 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 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

I highly recommend reading this: So, what's next?

  • 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:
    • Closing of iterators of Set-like objects on early exit, proposal-set-methods/85
    • Some other minor internal changes
  • 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
  • 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 bugfix 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:
    • atob
    • btoa
  • 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
    • %TypedArray%#uniqueBy
  • 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
    • Array#at
    • %TypedArray%#at
  • 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
    • Array#uniqueBy
  • 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:
    • Reflect.enumerate deprecated and will be removed from the next major release, January TC39 meeting
  • 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
  • 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
  • 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
  • Fixed RegExp constructor
  • 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
  • Fixed Symbol.keyFor
  • Some fixes
  • Some fixes
  • 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
  • Some fixes
  • Some fixes
  • 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
  • FF20-24 fix
  • Some fixes
  • Enabled CSP support
  • Added Function instances name property for IE9+
  • Object static methods accept primitives
  • RegExp constructor can alter flags (IE9+)
  • Added Array.prototype[Symbol.unscopables]
  • Some fixes
  • 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
  • Some fixes
  • 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
  • Map & Set bug fix
  • Public release