- Features
- Add new features:
Symbol#description
(ECMAScript 2019)Object.fromEntries
(stage 3 proposal)- New
Set
methods (stage 2 proposal)Set#difference
Set#intersection
Set#isDisjointFrom
Set#isSubsetOf
Set#isSupersetOf
Set#symmetricDifference
Set#union
- 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
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
andcompositeSymbol
methods (from richer keys 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 1using
statement proposal)Promise.allSettled
(stage 1 proposal)URL
andURLSearchParam
fromURL
standard, also stage 0 proposal to ECMAScriptURL
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. - Add support of
@@isConcatSpreadable
toArray#concat
. - Add support of
@@species
toArray#{concat, filter, map, slice, splice}
. - Add direct
.exec
calling toRegExp#{@@replace, @@split, @@match, @@search}
. Also, added fixes forRegExp#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 owntoString
method with@@toStringTag
logic, see #199.
- Add triggering unhandled
- Update standard features and proposals:
asap
(old stage 0 proposal) replaced byqueueMicrotask
(a part of HTML spec)- Update
Observable
(#257, #276, etc.) - Update
Array#flatten
->Array#flat
andArray#flatMap
and move to the stage 3 - Update
global
stage 3 proposal - renameglobal
toglobalThis
- Update
String#matchAll
(proposal-string-matchall#17, proposal-string-matchall#38, proposal-string-matchall#41, etc.) and move to the stage 3 - Update
.name
properties ofString#{trimStart, trimEnd , trimLeft, trimRight}
, move to the stage 3 - Remove mongolian vowel separator (U+180E) from the list of whitespaces for methods like
String#trim
(ES6 -> ES7)
- Mark ES2016, ES2017 and ES2018 features as stable:
Array#includes
and%TypedArray%#includes
Object.values
andObject.entries
Object.getOwnPropertyDescriptors
String#padStart
andString#padEnd
Promise#finally
Symbol.asyncIterator
Object#__(define|lookup)[GS]etter__
- Remove obsolete features:
Error.isError
(withdrawn)System.global
(replaced byglobalThis
)Map#toJSON
andSet#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 withnewTarget
argument on built-ins.- Typed Array constructors polyfill is quite correct but too expensive.
- Add new features:
- 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. - Fix buggy
String#padStart
andString#padEnd
mobile Safari implementations, #414. - One more fix for microtasks in iOS related #339.
- Added a fallback for Rhino bug, #440.
- Repository:
- Change
core-js
repository structure to monorepo with packages in/packages/
directory. - Clean-up it, remove all possible duplicates, generated files, etc.
- Change
- Packages:
- Extract a version without global namespace pollution to a separate
core-js-pure
package (replacement forcore-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 incore-js-builder
package. - Clean-up packages.
- Because of all approaches, reduce size of packages from ~2mb for
core-js@2
to:- ~480kb for
core-js
package - ~400kb for
core-js-pure
package
- ~480kb for
- Finally remove
bower.json
- Extract a version without global namespace pollution to a separate
- CommonJS API, namespaces:
- Add availability configuration of aggressiveness.
- Move
core-js/library
to separatecore-js-pure
package. - Because of removing all non-standard features, we no longer need
core-js/shim
entry point, replace it just withcore-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 inmodules
folder hases.
prefix. - Change prefix for ES proposals from
es7.
toesnext.
, they no longer available incore-js/es7
, usecore-js/stage/*
instead of that. - Rename
core-js(/library)/fn
tocore-js(-pure)/features
for improve readability. - Add
/proposals/
entry points for allow include all features from one proposal (for example,core-js/proposals/reflect-metadata
). - Allow more granular inclusion of features from
/es/
path (for example,core-js/es/array/from
). - 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 toweb.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 returnsglobalThis
object. Also, don't set globalcore
property.- Add some missing entry points.
- Tools, tests, code quality:
- Add
core-js-compat
package with data about the necessity ofcore-js
modules and API for getting a list of requiredcore-js
modules bybrowserslist
query, #466. - Add
targets
option withbrowserslist
query tocore-js-builder
. - Remove an option for generation bundle of a version without global namespace pollution from
core-js-builder
- now it's an odd use case. - Remove UMD wrapper from the code, generated by
core-js-builder
bundles - we don't need it for a global polyfill. - Refactor source code for improving readability.
- Get rid of LiveScript, usage another language in JS standard library looks strange and impedes usage of tools like ESLint:
- Rewrite tests to JS.
- Rewrite scripts to JS.
- Use for tests Babel with minimalistic config which should work anywhere.
- Use ESLint on the code of tests and tools.
- Add
- Fixed handling of
$
inString#replace
, #471
- Add direct
.exec
calling toRegExp#{@@replace, @@split, @@match, @@search}
. Also, added fixes forRegExp#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
- 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 thelibrary
version
- Fixed calling
onunhandledrejectionhandler
multiple times for onePromise
chain, #318 - Forced replacement of
String#{padStart, padEnd}
in Safari 10 because of a bug, #280 - Fixed
Array#@@iterator
in a very rare version ofWebKit
, #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 theSymbol
polyfill, #345 Array()
calls changed tonew 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
andArray#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 - addedglobal
global object,System.global
deprecated - Updated
Object.getOwnPropertyDescriptors
to the final version - it should not create properties if descriptors areundefined
- 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 nativeDate#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
andReflect.apply
- they should not allow primitive asargumentsList
argument
- Added
Observable
, stage 1 proposal - Fixed behavior
Object.{getOwnPropertySymbols, getOwnPropertyDescriptor}
andObject#propertyIsEnumerable
onObject.prototype
Reflect.construct
andReflect.apply
should throw an error ifargumentsList
argument is not an object, #194
- Added
asap
for enqueuing microtasks, stage 0 proposal - Added well-known symbol
Symbol.asyncIterator
for stage 2 async iteration proposal - Added well-known symbol
Symbol.observable
for stage 1 observables proposal String#{padStart, padEnd}
returns original string if filler is empty string, TC39 meeting notesObject.values
andObject.entries
moved to stage 4 from 3, TC39 meeting notesSystem.global
moved to stage 2 from 1, TC39 meeting notesMap#toJSON
andSet#toJSON
rejected and will be removed from the next major release, TC39 meeting notesError.isError
withdrawn and will be removed from the next major release, TC39 meeting notes- Added fallback for
Function#name
on non-extensible functions and functions with brokentoString
conversion, #193
- Added conversion
-0
to+0
toArray#{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 toDate
andSymbol
- 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
- Added fallback for
es6-promise
package bug, #176
- 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
- Browsers
- 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
- Feature detection:
- 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 inString#trim
,parse(Int|float)
,RegExp#toString
logic,String#split
, etc - Should be changed in the future:
@@species
andToLength
logic inArray
methods,Date
parsing,Function#bind
, etc - Should not be changed only several features like
Array.isArray
andDate.now
- Already added changes for:
- Some ES5 polyfills required for modern engines
- Mainly, for prevent duplication features in different namespaces - logic of most required ES5 polyfills changed in ES6+:
- All old entry points should work fine, but in the next major release API can be changed
- All entry point works in ES3 environment like IE8- without
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 in2.0
, for compatibility withbabel
6
and for future fixes
- ES5 polyfills are split and logic, used in other polyfills, moved to internal modules
- 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
andNumber.parseInt
- Fixes for
parseFloat
andNumber.parseFloat
- Fixes for
RegExp#toString
- Fixes for
Array#sort
- Fixes for
Number#toFixed
- Fixes for
Number#toPrecision
- Additional fixes for
String#split
(RegExp#@@split
)
- Added
- Improvements:
- Correct subclassing wrapped collections,
Number
andRegExp
constructors with native class syntax - Correct support
SharedArrayBuffer
and buffers from other realms in typed arrays wrappers - Additional validations for
Object.{defineProperty, getOwnPropertyDescriptor}
andReflect.defineProperty
- Correct subclassing wrapped collections,
- Bug Fixes:
- Fixed some cases
Array#lastIndexOf
with negative second argument
- Fixed some cases
- 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 fromUint8Array
constructor wrapper. Reason - bug inws
module (->socket.io
) which passes toBuffer
constructor ->Uint8Array
float and uses theV8
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 inV8
.
- Forced usage
Promise.resolve
polyfill in thelibrary
version for correct work with wrapper Object.assign
should be defined in the strict mode -> throw an error on extension non-extensible objects, #154
- Added implementations and fixes Typed Arrays-related features
ArrayBuffer
,ArrayBuffer.isView
,ArrayBuffer#slice
DataView
with all getter / setter methodsInt8Array
,Uint8Array
,Uint8ClampedArray
,Int16Array
,Uint16Array
,Int32Array
,Uint32Array
,Float32Array
andFloat64Array
constructors%TypedArray%.{for, of}
,%TypedArray%#{copyWithin, every, fill, filter, find, findIndex, forEach, indexOf, includes, join, lastIndexOf, map, reduce, reduceRight, reverse, set, slice, some, sort, subarray, values, keys, entries, @@iterator, ...}
- Added
System.global
, proposal, November TC39 meeting - Added
Error.isError
, proposal, November TC39 meeting - Added
Math.{iaddh, isubh, imulh, umulh}
, proposal RegExp.escape
moved from thees7
to the non-standardcore
namespace, July TC39 meeting - too slow, but it's condition of stability, #116Promise
- Some performance optimisations
- Added basic support
rejectionHandled
event /onrejectionhandled
handler to the polyfill - Removed usage
@@species
fromPromise.{all, race}
, November TC39 meeting
- Some improvements collections polyfills
O(1)
and preventing possible leaks with frozen keys, #134- Correct observable state object keys
- Renamed
String#{padLeft, padRight}
->String#{padStart, padEnd}
, proposal, November TC39 meeting (they want to rename it on each meeting?O_o), #132 - Added
String#{trimStart, trimEnd}
as aliases forString#{trimLeft, trimRight}
, proposal, November TC39 meeting - Added annex B HTML methods - ugly, but also the part of the spec
- Added little fix for
Date#toString
-new Date(NaN).toString()
should be'Invalid Date'
- Added
{keys, values, entries, @@iterator}
methods to DOM collections which should have iterable interface or should be inherited fromArray
-NodeList
,DOMTokenList
,MediaList
,StyleSheetList
,CSSRuleList
. - Removed Mozilla
Array
generics - deprecated and will be removed from FF, looks like strawman is dead, available alternative shim - Removed
core.log
module - CommonJS API
- Added entry points for virtual methods
- Added entry points for stages proposals
- Some other minor changes
- Custom build from external scripts moved to the separate package for preventing problems with dependencies
- Changed
$
prefix for internal modules file names because Team Foundation Server does not support it, #129 - Additional fix for
SameValueZero
in V8 ~ Chromium 39-42 collections - Additional fix for FF27
Array
iterator - Removed usage shortcuts for
arguments
object - old WebKit bug, #150 {Map, Set}#forEach
non-generic, #144- Many other improvements
- Reject with
TypeError
on attempt resolve promise itself - Correct behavior with broken
Promise
subclass constructors / methods - Added
Promise
-based fallback for microtask - Fixed V8 and FF
Array#{values, @@iterator}.name
- Fixed IE7-
[1, 2].join(undefined) -> '1,2'
- Some other fixes / improvements / optimizations
- Some more
Number
constructor fixes:- Fixed V8 ~ Node 0.8 bug:
Number('+0x1')
should beNaN
- Fixed
Number(' 0b1\n')
case, should be1
- Fixed
Number()
case, should be0
- Fixed V8 ~ Node 0.8 bug:
- 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 andFunction#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 wrappingJSON.stringify
- little more correct, compat-table/642 - Fixed typo which broke tasks scheduler in WebWorkers in old FF, #114
- Added browser
Promise
rejection hook, #106 - Added correct
IsRegExp
logic toString#{includes, startsWith, endsWith}
andRegExp
constructor,@@match
case, example - Updated
String#leftPad
with proposal: string filler truncated from the right side - Replaced V8
Object.assign
- its properties order not only incorrect, it is non-deterministic and it causes some problems - Fixed behavior with deleted in getters properties for
Object.{
assign
,
entries, values
}
, example - Fixed
Math.sinh
with very small numbers in V8 near Chromium 38 - Some other fixes and optimizations
- Fixed support symbols in FF34-35
Object.assign
- Fixed collections iterators in FF25-26
- Fixed non-generic WebKit
Array.of
- Some other fixes and optimizations
- Added
toJSON
method toSymbol
polyfill and to MS Edge implementation for expectedJSON.stringify
result w/o patching this method - Replaced
Reflect.construct
implementations w/o correct support third argument - Fixed
global
detection with changeddocument.domain
in ~IE8, #100
- Added more correct microtask implementation for
Promise
- Updated string padding to actual proposal - renamed, minor internal changes:
String#lpad
->String#padLeft
String#rpad
->String#padRight
- Added string trim functions - proposal, defacto standard - required only for IE11- and fixed for some old engines:
String#trimLeft
String#trimRight
String#trim
fixed for some engines by es6 spec and moved fromes5
to singlees6
module- Splitted
es6.object.statics-accept-primitives
- Caps for
freeze
-familyObject
methods moved fromes5
toes6
namespace and joined with es6 wrappers es5
namespace also includes modules, moved toes6
namespace - you can use it as before- Increased
MessageChannel
priority in$.task
, #95 - Does not get
global.Symbol
on each getting iterator, if you wanna use alternativeSymbol
shim - add it beforecore-js
Reflect.construct
optimized and fixed for some cases- Simplified
Reflect.enumerate
, see this question - Some corrections in
Math.acosh
- Fixed
Math.imul
for old WebKit - Some fixes in string / RegExp well-known symbols logic
- Some other fixes and optimizations
- Some fixes for final MS Edge, replaced broken native
Reflect.defineProperty
- Some minor fixes and optimizations
- Changed compression
client/*.min.js
options for safeFunction#name
andFunction#length
, should be fixed #92
- Added logic for well-known symbols:
Symbol.match
Symbol.replace
Symbol.split
Symbol.search
- Actualized and optimized work with iterables:
- Optimized
Map
,Set
,WeakMap
,WeakSet
constructors,Promise.all
,Promise.race
for defaultArray Iterator
- Optimized
Array.from
for defaultArray Iterator
- Added
core.getIteratorMethod
helper
- Optimized
- Uses enumerable properties in shimmed instances - collections, iterators, etc for optimize performance
- Added support native constructors to
Reflect.construct
with 2 arguments - Added support native constructors to
Function#bind
shim withnew
- Removed obsolete
.clear
methods nativeWeak
-collections - Maximum modularity, reduced minimal custom build size, separated into submodules:
es6.reflect
es6.regexp
es6.math
es6.number
es7.object.to-array
core.object
core.string
core.iter-helpers
- Internal modules (
$
,$.iter
, etc)
- Many other optimizations
- Final cleaning non-standard features
- Moved
$for
to separate library. This work for syntax -for-of
loop and comprehensions - Moved
Date#{format, formatUTC}
to separate library. Standard way for this -ECMA-402
- Removed
Math
methods fromNumber.prototype
. Slight sugar for simpleMath
methods calling - Removed
{Array#, Array, Dict}.turn
- Removed
core.global
- Moved
- Uses
ToNumber
instead ofToLength
inNumber Iterator
,Array.from(2.5)
will be[0, 1, 2]
instead of[0, 1]
- Fixed #85 - invalid
Promise
unhandled rejection message in nestedsetTimeout
- Fixed #86 - support FF extensions
- Fixed #89 - behavior
Number
constructor in strange case
- Removed
/
fromRegExp.escape
escaped characters
- Updated
RegExp.escape
to the latest proposal - Fixed conflict with webpack dev server + IE buggy behavior
- More correct order resolving thenable in
Promise
polyfill - Uses polyfill instead of buggy V8
Promise
- Collections from
library
version return wrapped native instances - Fixed collections prototype methods in
library
version - Optimized
Math.hypot
- Updated
Promise.resolve
behavior - Added fallback for IE11 buggy
Object.getOwnPropertyNames
+ iframe - Some other fixes
- Added fallback for
Symbol
polyfill for old Android - Some other fixes
- Different instances
core-js
should use / recognize the same symbols - Some fixes
- Simplified custom build
- Added custom build js api
- Added
grunt-cli
todevDependencies
fornpm run grunt
- Some fixes
- Wrapped
Function#toString
for correct work wrapped methods / constructors with methods similar to thelodash
isNative
- Added proto versions of methods to export object in
default
version for consistency withlibrary
version
- Wrapped
Object#propertyIsEnumerable
forSymbol
polyfill - Added proto versions of methods to
library
for ES7 bind syntax - Some other fixes
- Fixed
Math.hypot
with negative arguments - Added
Object#toString.toString
as fallback forlodash
isNative
- Added support DOM collections to IE8-
Array#slice
- Added
String#lpad
,String#rpad
- 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__
-basedPromise
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}
- Fixed behavior
- Added
Map#toJSON
- Removed non-standard methods
Object#[_]
andFunction#only
- they solves syntax problems, but now in compilers available arrows andin near future will be availableavailable bind syntax - Removed non-standard undocumented methods
Symbol.{pure, set}
- Some fixes and internal changes
- Uses
webpack
instead ofbrowserify
for browser builds - more compression-friendly result
- Fixed
Array
statics with single entry points
Math.fround
now also works in IE9-- Added
Set#toJSON
- Some optimizations and fixes
- Fixed
Symbol.keyFor
- Changed CommonJS API
- Splitted and renamed some modules
- Added support ES3 environment (ES5 polyfill) to all default versions - size increases slightly (+ ~4kb w/o gzip), many issues disappear, if you don't need it - simply include only required namespaces / features / modules
- Removed abstract references support - proposal has been superseded =\
$for.isIterable
->core.isIterable
,$for.getIterator
->core.getIterator
, temporary available in old namespace- Fixed iterators support in v8
Promise.all
andPromise.race
- Many other fixes
- Some fixes
- Some fixes
- Rewritten and splitted into CommonJS modules
- Fixed support
Object.defineProperty
with accessors on DOM elements on IE8
- 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
- Added support binary and octal literals to
Number
constructor - Added
Date#toISOString
- 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
Object.getOwnPropertySymbols
polyfill returns array of wrapped keys
- FF20-24 fix
- Some collections fixes
- Added support frozen objects as collections keys
- Added
Object.getOwnPropertySymbols
- Added
NodeList.prototype[@@iterator]
- Added basic
@@species
logic - getter in native constructors - Removed
Function#by
- Some fixes
- Some fixes
- Enabled CSP support
- Added
Function
instancesname
property for IE9+
Object
static methods accept primitivesRegExp
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
- Added
core-js
methods now can use externalSymbol.iterator
polyfill- Some fixes
- Console cap excluded from node.js default builds
- Added cap for ES5 freeze-family methods
- Fixed
console
bug
- Some fixes
- Optimize
Map
&Set
:- Use entries chain on hash table
- Fast & correct iteration
- Iterators moved to
es6
andes6.collections
modules
console
no longer shortcut forconsole.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
- 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
- Added option to disable addition setter to
- Added
RegExp#flags
(December 2014 Draft Rev 29) - Added
String.raw
- Repair converting -0 to +0 in native collections
- Added
es7.proposals
andes7.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]
- Added
- Removed deprecated
.contains
methods - Some fixes
- Added
Array#copyWithin
- Added
String#codePointAt
- Added
String.fromCodePoint
- Added
Dict.mapPairs
- TC39 November meeting:
.contains
->.includes
String#contains
->String#includes
Array#contains
->Array#includes
Dict.contains
->Dict.includes
- Removed
WeakMap#clear
- Removed
WeakSet#clear
Map
&Set
bug fix
- Public release