Skip to content

Latest commit

 

History

History
1099 lines (962 loc) · 72.4 KB

CHANGELOG.md

File metadata and controls

1099 lines (962 loc) · 72.4 KB

Changelog

Unreleased
  • 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
  • Added Samsung Internet 11 compat data mapping
3.5.0 - 2019.12.12
3.4.8 - 2019.12.09
  • 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
2.6.11 [LEGACY] - 2019.12.09
  • Returned usage of node -e in the postinstall scripts for better cross-platform compatibility, #582
  • Improved CI detection in the postinstall script, #707
3.4.7 - 2019.12.03
  • Fixed an NPM publishing issue
3.4.6 - 2019.12.03
  • 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
3.4.5 - 2019.11.28
  • 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
3.4.4 - 2019.11.27
  • 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-
3.4.3 - 2019.11.26
  • 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
3.4.2 - 2019.11.22
  • 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
3.4.1 - 2019.11.12
3.4.0 - 2019.11.07
3.3.6 - 2019.11.01
  • 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
3.3.5 - 2019.10.29
  • 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
3.3.4 - 2019.10.25
  • 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
3.3.3 - 2019.10.22
  • gopher removed from URL special cases per this issue and this PR
  • Added compat data for iOS 13 and Node 13.0
3.3.2 - 2019.10.14
  • Fixed compatibility of core-js-compat with Node 6 and Yarn, #669
3.3.1 - 2019.10.13
  • Fixed an NPM publishing issue
3.3.0 - 2019.10.13
  • 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
2.6.10 [LEGACY] - 2019.10.13
  • Show similar postinstall messages only once per npm i, #597
3.2.1 - 2019.08.12
  • Added a workaround for possible recursion in microtasks caused by conflicts with other Promise polyfills, #615
3.2.0 - 2019.08.09
  • 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
3.1.4 - 2019.06.15
  • 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 ralated to the pure version)
    • Performace optimizations related old V8
    • Etc.
3.1.3 - 2019.05.27
  • 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
2.6.9 [LEGACY] - 2019.05.27
  • Some fixes and improvements of the postinstall script like support npm color config (#556) or adding support of ADBLOCK env variable
3.1.2 - 2019.05.22
  • Added a workaround of a strange npx bug on postinstall, #551
2.6.8 [LEGACY] - 2019.05.22
  • Added a workaround of a strange npx bug on postinstall, #551
3.1.1 - 2019.05.21
  • 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
2.6.7 [LEGACY] - 2019.05.21
  • Added one more workaround of alternative not completely correct Symbol polyfills, #550, #554
3.1.0 - 2019.05.20
  • 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
2.6.6 [LEGACY] - 2019.05.20
  • 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
3.0.1 - 2019.04.06
  • Fixed some cases of work with malformed URI sequences in URLSearchParams, #525
  • Added a workaround for a rollup issue, #513
3.0.0 - 2019.03.19
  • 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, getOwnPropertyDescriptos}, 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.
2.6.5 - 2019.02.15
  • Fixed buggy String#padStart and String#padEnd mobile Safari implementations, #414.
2.6.4 - 2019.02.07
  • Added a workaround against crushing an old IE11.0.9600.16384 build, #485.
2.6.3 - 2019.01.22
  • Added a workaround for babel-minify bug, #479
2.6.2 - 2019.01.10
  • Fixed handling of $ in String#replace, #471
2.6.1 - 2018.12.18
  • Fixed an issue with minified version, #463, #465
2.6.0 - 2018.12.05
  • Add direct .exec calling to RegExp#{@@replace, @@split, @@match, @@search}. Also, added fixes for RegExp#exec method. #428, #435, #458, thanks @nicolo-ribaudo.
2.5.7 - 2018.05.26
  • Get rid of reserved variable name final, related #400
2.5.6 - 2018.05.07
  • 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
2.5.5 - 2018.04.08
  • Fix some edge cases of Reflect.set, #392 and #393
2.5.4 - 2018.03.27
  • 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
2.5.3 - 2017.12.12
  • 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
2.5.2 - 2017.12.09
  • 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
2.5.1 - 2017.09.01
  • 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
2.5.0 - 2017.08.05
  • 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
2.4.1 - 2016.07.18
  • 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
1.2.7 [LEGACY] - 2016.07.18
2.4.0 - 2016.05.08
  • 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
2.3.0 - 2016.04.24
2.2.2 - 2016.04.06
  • 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
2.2.1 - 2016.03.19
  • Fixed Object.getOwnPropertyNames(window) 2.1+ versions bug, #181
2.2.0 - 2016.03.15
  • 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
2.1.5 - 2016.03.12
  • Improved support NodeJS domains in Promise#then, #180
  • Added fallback for Date#toJSON bug in Qt Script, #173
2.1.4 - 2016.03.08
  • Added fallback for Symbol polyfill in Qt Script, #173
  • Added one more fallback for IE11 Script Access Denied error with iframes, #165
2.1.3 - 2016.02.29
2.1.2 - 2016.02.29
  • 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
2.1.1 - 2016.02.22
  • 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
2.1.0 - 2016.02.09
  • 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
2.0.3 - 2016.01.11
  • 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
2.0.2 - 2016.01.04
  • 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.
2.0.1 - 2015.12.31
  • 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
2.0.0 - 2015.12.24
1.2.6 - 2015.11.09
  • 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
1.2.5 - 2015.11.02
  • 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
1.2.4 - 2015.11.01
  • 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
1.2.3 - 2015.10.23
  • 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-
1.2.2 - 2015.10.18
  • Improved optimisations for V8
  • Fixed build process from external packages, #120
  • One more Object.{assign, values, entries} fix for very specific case
1.2.1 - 2015.10.02
  • 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
1.2.0 - 2015.09.27
1.1.4 - 2015.09.05
1.1.3 - 2015.08.29
1.1.2 - 2015.08.28
  • 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
1.1.1 - 2015.08.20
  • Added more correct microtask implementation for Promise
1.1.0 - 2015.08.17
1.0.1 - 2015.07.31
  • 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
1.0.0 - 2015.07.22
0.9.18 - 2015.06.17
0.9.17 - 2015.06.14
0.9.16 - 2015.06.11
0.9.15 - 2015.06.09
  • Collections from library version return wrapped native instances
  • Fixed collections prototype methods in library version
  • Optimized Math.hypot
0.9.14 - 2015.06.04
0.9.13 - 2015.05.25
0.9.12 - 2015.05.24
  • Different instances core-js should use / recognize the same symbols
  • Some fixes
0.9.11 - 2015.05.18
  • Simplified custom build
    • Added custom build js api
    • Added grunt-cli to devDependencies for npm run grunt
  • Some fixes
0.9.10 - 2015.05.16
  • 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
0.9.9 - 2015.05.14
0.9.8 - 2015.05.12
0.9.7 - 2015.05.07
0.9.6 - 2015.05.01
0.9.5 - 2015.04.30
  • Added cap for Function#@@hasInstance
  • Some fixes and optimizations
0.9.4 - 2015.04.27
  • Fixed RegExp constructor
0.9.3 - 2015.04.26
  • Some fixes and optimizations
0.9.2 - 2015.04.25
  • More correct Promise unhandled rejection tracking and resolving / rejection priority
0.9.1 - 2015.04.25
  • Fixed __proto__-based Promise subclassing in some environments
0.9.0 - 2015.04.24
  • 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
0.8.4 - 2015.04.18
  • Uses webpack instead of browserify for browser builds - more compression-friendly result
0.8.3 - 2015.04.14
  • Fixed Array statics with single entry points
0.8.2 - 2015.04.13
0.8.1 - 2015.04.03
  • Fixed Symbol.keyFor
0.8.0 - 2015.04.02
0.7.2 - 2015.03.09
  • Some fixes
0.7.1 - 2015.03.07
  • Some fixes
0.7.0 - 2015.03.06
0.6.1 - 2015.02.24
0.6.0 - 2015.02.23
  • 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
0.5.4 - 2015.02.15
  • Some fixes
0.5.3 - 2015.02.14
0.5.2 - 2015.02.10
  • Some fixes
0.5.1 - 2015.02.09
  • Some fixes
0.5.0 - 2015.02.08
  • 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
0.4.10 - 2015.01.28
0.4.9 - 2015.01.27
  • FF20-24 fix
0.4.8 - 2015.01.25
0.4.7 - 2015.01.25
0.4.6 - 2015.01.21
0.4.5 - 2015.01.16
  • Some fixes
0.4.4 - 2015.01.11
  • Enabled CSP support
0.4.3 - 2015.01.10
  • Added Function instances name property for IE9+
0.4.2 - 2015.01.10
  • Object static methods accept primitives
  • RegExp constructor can alter flags (IE9+)
  • Added Array.prototype[Symbol.unscopables]
0.4.1 - 2015.01.05
  • Some fixes
0.4.0 - 2015.01.03
  • 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
0.3.3 - 2014.12.28
0.3.2 - 2014.12.25
  • Added cap for ES5 freeze-family methods
  • Fixed console bug
0.3.1 - 2014.12.23
  • Some fixes
0.3.0 - 2014.12.23
0.2.5 - 2014.12.20
  • console no longer shortcut for console.log (compatibility problems)
  • Some fixes
0.2.4 - 2014.12.17
  • Better compliance of ES6
  • Added Math.fround (IE10+)
  • Some fixes
0.2.3 - 2014.12.15
  • 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
0.2.2 - 2014.12.13
0.2.1 - 2014.12.12
0.2.0 - 2014.12.06
  • 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
0.1.5 - 2014.12.01
0.1.4 - 2014.11.27
0.1.3 - 2014.11.20
0.1.2 - 2014.11.19
  • Map & Set bug fix
0.1.1 - 2014.11.18
  • Public release