- Features
- Add new features:
Object.fromEntries(ECMAScript 2019)Symbol#description(ECMAScript 2019)- New
Setmethods (stage 2 proposal)Set#differenceSet#intersectionSet#isDisjointFromSet#isSubsetOfSet#isSupersetOfSet#symmetricDifferenceSet#union
Promise.allSettled(stage 2 proposal)- Getting last item from
Array(stage 1 proposal)Array#lastItemArray#lastIndex
String#replaceAll(stage 1 proposal)String#codePoints(stage 1 proposal)- New collections methods (stage 1 proposal)
Map.groupByMap.keyByMap#deleteAllMap#everyMap#filterMap#findMap#findKeyMap#includesMap#keyOfMap#mapKeysMap#mapValuesMap#mergeMap#reduceMap#someSet#addAllSet#deleteAllSet#everySet#filterSet#findSet#joinSet#mapSet#reduceSet#someWeakMap#deleteAllWeakSet#addAllWeakSet#deleteAll
compositeKeyandcompositeSymbolmethods (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 1usingstatement proposal)Promise.any(stage 0 proposal)URLandURLSearchParamfromURLstandard, also stage 0 proposal to ECMAScriptURLURL#hrefURL#originURL#protocolURL#usernameURL#passwordURL#hostURL#hostnameURL#portURL#pathnameURL#searchURL#searchParamsURL#hashURL#toStringURL#toJSON
URLSearchParamsURLSearchParams#appendURLSearchParams#deleteURLSearchParams#getURLSearchParams#getAllURLSearchParams#hasURLSearchParams#setURLSearchParams#sortURLSearchParams#toStringURLSearchParams#keysURLSearchParams#valuesURLSearchParams#entriesURLSearchParams#@@iterator
.forEachmethod on iterable DOM collections (#329)
- Improve existing features:
- Add triggering unhandled
Promiserejection events (instead of only global handlers), #205. - Wrap
fetchfor correct with polyfilledPromiseand preventing problems like #178, #332, #371. - Add support of
@@isConcatSpreadabletoArray#concat. - Add support of
@@speciestoArray#{concat, filter, map, slice, splice}. - Add direct
.execcalling toRegExp#{@@replace, @@split, @@match, @@search}. Also, added fixes forRegExp#execmethod. #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#toStringdoes not support@@toStringTag, add to wrapped prototypes owntoStringmethod with@@toStringTaglogic, 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#flatandArray#flatMap - Update
globalstage 3 proposal - renameglobaltoglobalThis - Update
String#matchAll(proposal-string-matchall#17, proposal-string-matchall#38, proposal-string-matchall#41, etc.) and move to the stage 3 - Update
.nameproperties 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, ES2018, ES2019 features as stable:
Array#{ flat, flatMap }{ Array, %TypedArray% }#includesObject.{ values, entries}Object.getOwnPropertyDescriptorsString#{ padStart, padEnd }String#{ trimStart, trimEnd, trimLeft, trimRight }Promise#finallySymbol.asyncIteratorObject#__(define|lookup)[GS]etter__
- Remove obsolete features:
Error.isError(withdrawn)System.global(replaced byglobalThis)Map#toJSONandSet#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:
DictObject.{classof, isObject, define, make}Function#partNumber#@@iteratorString#{escapeHTML, unescapeHTML}delay
- Add
.shamflag to features which can't be properly polyfilled and / or not recommended for usage:Symbolconstructor - we can't add new primitives.Object.prototypeaccessors too expensive.Object.{create, defineProperty, defineProperties, getOwnPropertyDescriptor, getOwnPropertyDescriptos},Reflect.{defineProperty, getOwnPropertyDescriptor}can't be properly polyfilled without descriptors support.Object.{freeze, seal, preventExtensions},Reflect.preventExtensionscan't be properly polyfilled in ES3 environment.Object.getPrototypeOfcan be deceived in ES3 environment.Reflect.constructcan't be polyfilled for a correct work withnewTargetargument 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
WeakMapfrozen keys fallback, #384. - Fix non-enumerable integer keys issue because of Nashorn ~ JDK8 bug, #389.
- Fix Safari 12.0
Array#reversebug. - Fix buggy
String#padStartandString#padEndmobile Safari implementations, #414. - 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-jsrepository 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-purepackage (replacement forcore-js/library). - Leave only one pair of bundles (global, with all polyfills) and move it to
core-js-bundlepackage. - Remove bundling logic from
core-jspackage, leave it only incore-js-builderpackage. - Clean-up packages.
- Because of all approaches, reduce size of packages from ~2mb for
core-js@2to:- ~480kb for
core-jspackage - ~400kb for
core-js-purepackage
- ~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/libraryto separatecore-js-purepackage. - Because of removing all non-standard features, we no longer need
core-js/shimentry 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 inmodulesfolder 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)/fntocore-js(-pure)/featuresfor 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.symbolmodule for loading only required features, for example, in MS Edge. - Rename
web.domnamespace 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}. coreobject no longer available in the global version, entry points which previously returned it now returnsglobalThisobject. Also, don't set globalcoreproperty.- Add some missing entry points.
- Tools, tests, code quality:
- Add
core-js-compatpackage with data about the necessity ofcore-jsmodules and API for getting a list of requiredcore-jsmodules bybrowserslistquery, #466. - Add
targetsoption withbrowserslistquery 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-builderbundles - 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
- Added a workaround for
babel-minifybug, #479
- Fixed handling of
$inString#replace, #471
- Add direct
.execcalling toRegExp#{@@replace, @@split, @@match, @@search}. Also, added fixes forRegExp#execmethod. #428, #435, #458, thanks @nicolo-ribaudo.
- Get rid of reserved variable name
final, related #400
- Forced replace native
Promisein 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
Promisein 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 thelibraryversion
- Fixed calling
onunhandledrejectionhandlermultiple times for onePromisechain, #318 - Forced replacement of
String#{padStart, padEnd}in Safari 10 because of a bug, #280 - Fixed
Array#@@iteratorin a very rare version ofWebKit, #236 and #237 - One more #345-related fix
MutationObserverno longer used for microtask implementation in iOS Safari because of bug with scrolling, #339- Fixed
JSON.stringify(undefined, replacer)case in the wrapper from theSymbolpolyfill, #345 Array()calls changed tonew Array()for V8 optimisation
- Updated
Promise#finallyper tc39/proposal-promise-finally#37 - Optimized usage of some internal helpers for reducing size of
shimversion - Fixed some entry points for virtual methods
- Added
Promise#finallystage 3 proposal, #225 - Added
Promise.trystage 1 proposal - Added
Array#flattenandArray#flatMapstage 1 proposal - Added
.ofand.frommethods on collection constructors stage 1 proposal:Map.ofSet.ofWeakSet.ofWeakMap.ofMap.fromSet.fromWeakSet.fromWeakMap.from
- Added
Mathextensions stage 1 proposal, #226:Math.clampMath.DEG_PER_RADMath.degreesMath.fscaleMath.RAD_PER_DEGMath.radiansMath.scale
- Added
Math.signbitstage 1 proposal - Updated
globalstage 3 proposal - addedglobalglobal object,System.globaldeprecated - Updated
Object.getOwnPropertyDescriptorsto the final version - it should not create properties if descriptors areundefined - Updated the list of iterable DOM collections, #249, added:
CSSStyleDeclaration#@@iteratorCSSValueList#@@iteratorClientRectList#@@iteratorDOMRectList#@@iteratorDOMStringList#@@iteratorDataTransferItemList#@@iteratorFileList#@@iteratorHTMLAllCollection#@@iteratorHTMLCollection#@@iteratorHTMLFormElement#@@iteratorHTMLSelectElement#@@iteratorMimeTypeArray#@@iteratorNamedNodeMap#@@iteratorPaintRequestList#@@iteratorPlugin#@@iteratorPluginArray#@@iteratorSVGLengthList#@@iteratorSVGNumberList#@@iteratorSVGPathSegList#@@iteratorSVGPointList#@@iteratorSVGStringList#@@iteratorSVGTransformList#@@iteratorSourceBufferList#@@iteratorTextTrackCueList#@@iteratorTextTrackList#@@iteratorTouchList#@@iterator
- Updated stages of proposals:
- Updated typed arrays to the modern (ES2016+) arguments validation, #293
- Fixed
%TypedArray%.fromSafari bug, #285 - Fixed compatibility with old version of Prototype.js, #278, #289
Function#nameno 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#sizewith debugger ReactNative for Android, #297 - Fixed an issue with Electron-based debugger, #230
- Fixed compatibility with incomplete third-party
WeakMappolyfills, #252 - Added a fallback for
Date#toJSONin 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
scripttag for some parsers, #204, #216 - Removed some unused variables, #217, #218
- Fixed MS Edge
Reflect.constructandReflect.apply- they should not allow primitive asargumentsListargument
- Added
Observable, stage 1 proposal - Fixed behavior
Object.{getOwnPropertySymbols, getOwnPropertyDescriptor}andObject#propertyIsEnumerableonObject.prototype Reflect.constructandReflect.applyshould throw an error ifargumentsListargument is not an object, #194
- Added
asapfor enqueuing microtasks, stage 0 proposal - Added well-known symbol
Symbol.asyncIteratorfor stage 2 async iteration proposal - Added well-known symbol
Symbol.observablefor stage 1 observables proposal String#{padStart, padEnd}returns original string if filler is empty string, TC39 meeting notesObject.valuesandObject.entriesmoved to stage 4 from 3, TC39 meeting notesSystem.globalmoved to stage 2 from 1, TC39 meeting notesMap#toJSONandSet#toJSONrejected and will be removed from the next major release, TC39 meeting notesError.isErrorwithdrawn and will be removed from the next major release, TC39 meeting notes- Added fallback for
Function#nameon non-extensible functions and functions with brokentoStringconversion, #193
- Added conversion
-0to+0toArray#{indexOf, lastIndexOf}, ES2016 fix - Added fixes for some
Mathmethods 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
@@toPrimitivemethods toDateandSymbol - Fixed
%TypedArray%#slicein Edge ~ 13 (throws with@@speciesand wrapped / inherited constructor) - Some other minor fixes
- Improved support NodeJS domains in
Promise#then, #180 - Added fallback for
Date#toJSONbug in Qt Script, #173
- Added fallback for
Symbolpolyfill in Qt Script, #173 - Added one more fallback for IE11
Script Access Deniederror with iframes, #165
- Added fallback for
es6-promisepackage bug, #176
- Some minor
Promisefixes:- Browsers
rejectionhandledevent better HTML spec complaint - Errors in unhandled rejection handlers should not cause any problems
- Fixed typo in feature detection
- Browsers
- Some
Promiseimprovements:- Feature detection:
- Added detection unhandled rejection tracking support - now it's available everywhere, #140
- Added detection
@@speciespattern support for completely correct subclassing - Removed usage
Object.setPrototypeOffrom feature detection and noisy console message about it in FF
Promise.allfixed 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:
Objectstatics - should accept primitives, new whitespaces lists inString#trim,parse(Int|float),RegExp#toStringlogic,String#split, etc - Should be changed in the future:
@@speciesandToLengthlogic inArraymethods,Dateparsing,Function#bind, etc - Should not be changed only several features like
Array.isArrayandDate.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.getOwnPropertyDescriptorsmoved to the stage 3, January TC39 meeting- Added
umdoption for custom build process, #169 - Returned entry points for
Arraystatics, removed in2.0, for compatibility withbabel6and for future fixes
- ES5 polyfills are split and logic, used in other polyfills, moved to internal modules
- Deprecated:
Reflect.enumeratedeprecated and will be removed from the next major release, January TC39 meeting
- New Features:
- Added
Reflectmetadata API as a pre-strawman feature, #152:Reflect.defineMetadataReflect.deleteMetadataReflect.getMetadataReflect.getMetadataKeysReflect.getOwnMetadataReflect.getOwnMetadataKeysReflect.hasMetadataReflect.hasOwnMetadataReflect.metadata
- Implementation / fixes
Date#toJSON - Fixes for
parseIntandNumber.parseInt - Fixes for
parseFloatandNumber.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,
NumberandRegExpconstructors with native class syntax - Correct support
SharedArrayBufferand 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#lastIndexOfwith negative second argument
- Fixed some cases
- Added fallback for V8 ~ Chrome 49
Promisesubclassing bug causes unhandled rejection on feature detection, #159 - Added fix for very specific environments with global
window === null
- Temporarily removed
lengthvalidation fromUint8Arrayconstructor wrapper. Reason - bug inwsmodule (->socket.io) which passes toBufferconstructor ->Uint8Arrayfloat and uses theV8bug 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.resolvepolyfill in thelibraryversion for correct work with wrapper Object.assignshould 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#sliceDataViewwith all getter / setter methodsInt8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32ArrayandFloat64Arrayconstructors%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.escapemoved from thees7to the non-standardcorenamespace, July TC39 meeting - too slow, but it's condition of stability, #116Promise- Some performance optimisations
- Added basic support
rejectionHandledevent /onrejectionhandledhandler to the polyfill - Removed usage
@@speciesfromPromise.{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
Arraygenerics - deprecated and will be removed from FF, looks like strawman is dead, available alternative shim - Removed
core.logmodule - 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
SameValueZeroin V8 ~ Chromium 39-42 collections - Additional fix for FF27
Arrayiterator - Removed usage shortcuts for
argumentsobject - old WebKit bug, #150 {Map, Set}#forEachnon-generic, #144- Many other improvements
- Reject with
TypeErroron attempt resolve promise itself - Correct behavior with broken
Promisesubclass 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
Numberconstructor 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') -> NaNcase 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
.nameproperty andFunction#toStringconversion some polyfilled methods - Fixed
Math.imularity 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+Symbolbehavior from.toJSONmethod to wrappingJSON.stringify- little more correct, compat-table/642 - Fixed typo which broke tasks scheduler in WebWorkers in old FF, #114
- Added browser
Promiserejection hook, #106 - Added correct
IsRegExplogic toString#{includes, startsWith, endsWith}andRegExpconstructor,@@matchcase, example - Updated
String#leftPadwith 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.sinhwith 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
toJSONmethod toSymbolpolyfill and to MS Edge implementation for expectedJSON.stringifyresult w/o patching this method - Replaced
Reflect.constructimplementations w/o correct support third argument - Fixed
globaldetection with changeddocument.domainin ~IE8, #100
- Added more correct microtask implementation for
Promise
- Updated string padding to actual proposal - renamed, minor internal changes:
String#lpad->String#padLeftString#rpad->String#padRight
- Added string trim functions - proposal, defacto standard - required only for IE11- and fixed for some old engines:
String#trimLeftString#trimRight
String#trimfixed for some engines by es6 spec and moved fromes5to singlees6module- Splitted
es6.object.statics-accept-primitives - Caps for
freeze-familyObjectmethods moved fromes5toes6namespace and joined with es6 wrappers es5namespace also includes modules, moved toes6namespace - you can use it as before- Increased
MessageChannelpriority in$.task, #95 - Does not get
global.Symbolon each getting iterator, if you wanna use alternativeSymbolshim - add it beforecore-js Reflect.constructoptimized and fixed for some cases- Simplified
Reflect.enumerate, see this question - Some corrections in
Math.acosh - Fixed
Math.imulfor 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.jsoptions for safeFunction#nameandFunction#length, should be fixed #92
- Added logic for well-known symbols:
Symbol.matchSymbol.replaceSymbol.splitSymbol.search
- Actualized and optimized work with iterables:
- Optimized
Map,Set,WeakMap,WeakSetconstructors,Promise.all,Promise.racefor defaultArray Iterator - Optimized
Array.fromfor defaultArray Iterator - Added
core.getIteratorMethodhelper
- Optimized
- Uses enumerable properties in shimmed instances - collections, iterators, etc for optimize performance
- Added support native constructors to
Reflect.constructwith 2 arguments - Added support native constructors to
Function#bindshim withnew - Removed obsolete
.clearmethods nativeWeak-collections - Maximum modularity, reduced minimal custom build size, separated into submodules:
es6.reflectes6.regexpes6.mathes6.numberes7.object.to-arraycore.objectcore.stringcore.iter-helpers- Internal modules (
$,$.iter, etc)
- Many other optimizations
- Final cleaning non-standard features
- Moved
$forto separate library. This work for syntax -for-ofloop and comprehensions - Moved
Date#{format, formatUTC}to separate library. Standard way for this -ECMA-402 - Removed
Mathmethods fromNumber.prototype. Slight sugar for simpleMathmethods calling - Removed
{Array#, Array, Dict}.turn - Removed
core.global
- Moved
- Uses
ToNumberinstead ofToLengthinNumber Iterator,Array.from(2.5)will be[0, 1, 2]instead of[0, 1] - Fixed #85 - invalid
Promiseunhandled rejection message in nestedsetTimeout - Fixed #86 - support FF extensions
- Fixed #89 - behavior
Numberconstructor in strange case
- Removed
/fromRegExp.escapeescaped characters
- Updated
RegExp.escapeto the latest proposal - Fixed conflict with webpack dev server + IE buggy behavior
- More correct order resolving thenable in
Promisepolyfill - Uses polyfill instead of buggy V8
Promise
- Collections from
libraryversion return wrapped native instances - Fixed collections prototype methods in
libraryversion - Optimized
Math.hypot
- Updated
Promise.resolvebehavior - Added fallback for IE11 buggy
Object.getOwnPropertyNames+ iframe - Some other fixes
- Added fallback for
Symbolpolyfill for old Android - Some other fixes
- Different instances
core-jsshould use / recognize the same symbols - Some fixes
- Simplified custom build
- Added custom build js api
- Added
grunt-clitodevDependenciesfornpm run grunt
- Some fixes
- Wrapped
Function#toStringfor correct work wrapped methods / constructors with methods similar to thelodashisNative - Added proto versions of methods to export object in
defaultversion for consistency withlibraryversion
- Wrapped
Object#propertyIsEnumerableforSymbolpolyfill - Added proto versions of methods to
libraryfor ES7 bind syntax - Some other fixes
- Fixed
Math.hypotwith negative arguments - Added
Object#toString.toStringas fallback forlodashisNative
- Added support DOM collections to IE8-
Array#slice
- Added
String#lpad,String#rpad
- Added cap for
Function#@@hasInstance - Some fixes and optimizations
- Fixed
RegExpconstructor
- Some fixes and optimizations
- More correct
Promiseunhandled rejection tracking and resolving / rejection priority
- Fixed
__proto__-basedPromisesubclassing 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
webpackinstead ofbrowserifyfor browser builds - more compression-friendly result
- Fixed
Arraystatics with single entry points
Math.froundnow 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.allandPromise.race - Many other fixes
- Some fixes
- Some fixes
- Rewritten and splitted into CommonJS modules
- Fixed support
Object.definePropertywith accessors on DOM elements on IE8
- Added support safe closing iteration - calling
iterator.returnon abort iteration, if it exists - Added basic support
Promiseunhandled rejection tracking in shim - Added
Object.getOwnPropertyDescriptors - Removed
consolecap - creates too many problems - Restructuring namespaces
- Some fixes
- Some fixes
- Added support binary and octal literals to
Numberconstructor - Added
Date#toISOString
- Some fixes
- Some fixes
- Systematization of modules
- Splitted
es6module - Splitted
consolemodule:web.console- only cap for missing methods,core.log- bound methods & additional features - Added
delaymethod - Some fixes
Object.getOwnPropertySymbolspolyfill 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
@@specieslogic - getter in native constructors - Removed
Function#by - Some fixes
- Some fixes
- Enabled CSP support
- Added
Functioninstancesnameproperty for IE9+
Objectstatic methods accept primitivesRegExpconstructor can alter flags (IE9+)- Added
Array.prototype[Symbol.unscopables]
- Some fixes
- Added
es6.reflectmodule:- 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-jsmethods now can use externalSymbol.iteratorpolyfill- Some fixes
- Console cap excluded from node.js default builds
- Added cap for ES5 freeze-family methods
- Fixed
consolebug
- Some fixes
- Optimize
Map&Set:- Use entries chain on hash table
- Fast & correct iteration
- Iterators moved to
es6andes6.collectionsmodules
consoleno 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.prototypefor 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.proposalsandes7.abstract-refsmodules - 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
.containsmethods - Some fixes
- Added
Array#copyWithin - Added
String#codePointAt - Added
String.fromCodePoint
- Added
Dict.mapPairs
- TC39 November meeting:
.contains->.includesString#contains->String#includesArray#contains->Array#includesDict.contains->Dict.includes
- Removed
WeakMap#clear - Removed
WeakSet#clear
Map&Setbug fix
- Public release