NativeScript | Desktop browsers | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Feature name | Current browser | NS 6.5 Android v8 |
NS 7.0 Android v8 |
NS 8.0 Android v8 |
NS 6.5 iOS JSC |
NS 7.0 iOS v8 |
NS 8.0 iOS v8 |
CH 89 | CH 90 | SF 14 Beta | SF TP | |
§SIMD (Single Instruction, Multiple Data) ![]() |
0/57 | 0/57 | 0/57 | 0/57 | 0/57 | 0/57 | 0/57 | 0/57 | 0/57 | 0/57 | ||
§basic support ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§Float32x4 ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§Int32x4 ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§Int16x8 ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§Int8x16 ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§Uint32x4 ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§Uint16x8 ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§Uint8x16 ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§Bool32x4 ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§Bool16x8 ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§Bool8x16 ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%floatType%.abs ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%type%.add ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%integerType%.addSaturate ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%type%.and ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%booleanType%.anyTrue ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%booleanType%.allTrue ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%type%.check ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%type%.equal ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%type%.extractLane ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%type%.greaterThan ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%type%.greaterThanOrEqual ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%type%.lessThan ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%type%.lessThanOrEqual ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%type%.mul ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%floatType%.div ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%type%.load ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%type%.load1 ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%type%.load2 ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%type%.load3 ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%floatType%.max ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%floatType%.maxNum ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%floatType%.min ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%floatType%.minNum ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%type%.neg ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%type%.not ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%type%.notEqual ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%type%.or ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%floatType%.reciprocalApproximation ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%floatType%.reciprocalSqrtApproximation ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%type%.replaceLane ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%type%.select ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%integerType%.shiftLeftByScalar ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%integerType%.shiftRightByScalar ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%type%.shuffle ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%type%.splat ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%floatType%.sqrt ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%type%.store ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%type%.store1 ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%type%.store2 ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%type%.store3 ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%type%.sub ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%integerType%.subSaturate ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%type%.swizzle ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%type%.xor ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%type%.fromTIMDBits ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§SIMD.%type%.fromTIMD ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§decompilation | 0/4 | 0/4 | 0/4 | 0/4 | 0/4 | 0/4 | 0/4 | 0/4 | 0/4 | 0/4 | ||
§uneval, existence ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§built-in "toSource" methods ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§"toSource" method as hook for uneval | No | No | No | No | No | No | No | No | ? | ? | ||
§eval(uneval(value)) is functionally equivalent to value | No | No | No | No | No | No | No | No | ? | ? | ||
§optional "scope" argument of "eval" | No | No | No | No | No | No | No | No | ? | ? | ||
§function "caller" property ![]() |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
§function "arity" property ![]() |
No | No | No | No | No | No | No | No | No | No | ||
§function "arguments" property ![]() |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
§Function.prototype.isGenerator ![]() |
No | No | No | No | No | No | No | No | No | No | ||
§class extends null | No | No | No | No | No | No | No | No | No | No | ||
§__count__ ![]() |
No | No | No | No | No | No | No | No | No | No | ||
§__parent__ ![]() |
No | No | No | No | No | No | No | No | No | No | ||
§__noSuchMethod__ ![]() |
No | No | No | No | No | No | No | No | No | No | ||
§Array generics | No | No | No | No | No | No | No | No | No | No | ||
§String generics | No | No | No | No | No | No | No | No | No | No | ||
§Array comprehensions (JS 1.8 style) ![]() |
No | No | No | No | No | No | No | No | No | No | ||
§Array comprehensions (ES draft style) ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§Expression closures ![]() |
No | No | No | No | No | No | No | No | No | No | ||
§ECMAScript for XML (E4X) ![]() |
No | No | No | No | No | No | No | No | No | No | ||
§"for each..in" loops ![]() |
No | No | No | No | No | No | No | No | No | No | ||
§Sharp variables ![]() |
No | No | No | No | No | No | No | No | No | No | ||
§Iterator ![]() |
No | No | No | No | No | No | No | No | No | No | ||
§__iterator__ | No | No | No | No | No | No | No | No | No | No | ||
§Generators (JS 1.8) | No | No | No | No | No | No | No | No | No | No | ||
§Generator comprehensions (JS 1.8 style) | No | No | No | No | No | No | No | No | No | No | ||
§Generator comprehensions (ES draft style) | No | No | No | No | No | No | No | No | ? | ? | ||
§RegExp "x" flag | No | No | No | No | No | No | No | No | No | No | ||
§Callable RegExp | No | No | No | No | No | No | No | No | No | No | ||
§RegExp named groups | No | No | No | No | No | No | No | No | No | No | ||
§String.prototype.quote ![]() |
No | No | No | No | No | No | No | No | No | No | ||
§String.prototype.replace flags ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§Date.prototype.toLocaleFormat ![]() |
No | No | No | No | No | No | No | No | No | No | ||
§Date.parse produces NaN for invalid dates | No | No | No | Yes | No | No | No | No | Yes | Yes | ||
§Object.prototype.watch ![]() |
No | No | No | No | No | No | No | No | No | No | ||
§Object.prototype.unwatch ![]() |
No | No | No | No | No | No | No | No | No | No | ||
§Object.prototype.eval ![]() |
No | No | No | No | No | No | No | No | No | No | ||
§Object.observe ![]() |
No | No | No | No | No | No | No | No | ? | ? | ||
§error "stack" ![]() |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
§error "lineNumber" ![]() |
No | No | No | No | No | No | No | No | No | No | ||
§error "columnNumber" ![]() |
No | No | No | No | No | No | No | No | No | No | ||
§error "fileName" ![]() |
No | No | No | No | No | No | No | No | No | No | ||
§error "description" | No | No | No | No | No | No | No | No | No | No | ||
§global | 1/2 | 1/2 | 1/2 | 1/2 | 1/2 | 1/2 | 0/2 | 0/2 | 0/2 | 0/2 | ||
§"global" global property is global object | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | ||
§"global" global property has correct property descriptor | No | No | No | No | No | No | No | No | No | No | ||
§Proxy "ownKeys" handler, duplicate keys for non-extensible targets (ES 2017 semantics)[1] | No | No | No | No | No | No | No | No | No | No |
[1] The behaviour of the Proxy “ownKeys” handler in presence of duplicate keys has been modified later.