Skip to content

Latest commit

 

History

History
1604 lines (1404 loc) · 120 KB

CHANGELOG.md

File metadata and controls

1604 lines (1404 loc) · 120 KB

Changelog

Unreleased
  • Avoided creation of extra properties for the handling of %TypedArray% constructors in new methods, #1092 (comment)
  • 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 maked 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
  • Splitted es6 module
  • Splitted 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