Currently only lists things that can be shimmed or are experimentally implemented
Note that for any kind of decent ES6 support we need an ES6 transpiler. A few projects are attempting this Reference SO question
Currently only lists things that can be shimmed or are experimentally implemented
Note that for any kind of decent ES6 support we need an ES6 transpiler. A few projects are attempting this Reference SO question
The following are currently shimmed. Note a lot of these are not natively implemented anywhere yet.
By ES6-shim
String.prototype.repeat
String.prototype.startsWith
String.prototype.endsWith
String.prototype.contains
By ES6-shim]1
Array.from
Array.of
By ES6-shim
Number.isFinite
Number.isNaN
Number.toInteger
Number.isInteger
By ES6-shim
Object.getOwnPropertyDescriptors
Object.getPropertyDescriptor
Object.getPropertyNames
Object.is
Object.isnt
By ES6-shim
Math.sign
By fdlibm
Math.log10
Math.log1p
Math.expm1
Math.cosh
Math.sinh
Math.tanh
Math.acosh
Math.asinh
Math.atanh
Math.hypot
Math.trunc
Math.sign
By rwldrn
Math.cbrt
ES6-shim covers Map
and Set
. WeakMap shim. ES6 collections also has alternative shims with special note on Andrea's WeakMap implementation choice.
These cannot be shimmed currently.
Can not be shimmed. This includes
let
const
typeof null === "null"
I've not seen any implementation. It's nearly impossible to emulate without severe restrictions. Note it's possible to emulate the newer specification of proxies from the older specification (firefox/chrome have the older implementation lying around)
module syntax cannot be shimmed. Depending on what the programmatic module API is like it may be possible to shim but it's not finalized.
Needs to be added to unshimmable.md
:
I've kept the unshimmables inline with the experimental subset of es6 in ff/chrome.
for of
syntax just landed in FX13: https://bugzilla.mozilla.org/show_bug.cgi?id=699565#c26
Math extras via fdlibm - https://gist.github.com/2427837
Updates from last face to face TC39 meeting...
Remove:
String.prototype.toArray
is out and will be removed from the next draft. (same as split("")
)typeof null === "null";
is out (too much web breaking)Add:
Math.cbrt(x)
as defined by:
15.8.2.32 cbrt(x)
Returns an implementation-dependent approximation to the cube root of x.
1. If x is NaN, the result is NaN.
2. If x is +0, the result is +0.
3. If x is -0, the result is -0.
4. If x is +Infinity, the result is +Infinity.
5. If x is -Infinity, the result is -Infinity.
@rwldrn thanks updated.
My pleasure :)
Also rage at TC39 not breaking the web with null === "null"
the web should just break and die ¬_¬
Compare:
ES 6 draft:
15.8.2.19 log10 (x)
Returns an implementation-dependent approximation to the base 10 logarithm of x.
* If x is 1, the result is +0.
... other special cases ...
log10 implementation from fdlibm
http://www.netlib.org/fdlibm/e_log10.c
Special cases:
* log10(10**N) = N for N=0,1,...,22.
... other special cases ...
why ES6 implementation for log10 does not guarante results for some special cases?
this makes it less usefull
p.s.
https://github.com/paulmillr/es6-shim/blob/master/es6-shim.js#L205 - this implementation fails for such cases too, although if you not interested in such cases, log10 can be implemented as here, without any ES6
es6-shim now includes support for Promise and support for most uses of Iterator.
Hi there! The name of the String.prototype.contains
method must be changed ;-)
I've added more math extras to es6-shim: Math.log10, Math.log2, Math.log1p, Math.expm1, Math.cosh, Math.sinh, Math.tanh, Math.acosh, Math.asinh, Math.atanh, Math.hypot, Math.trunc.