Search code examples
androidiosv8javascriptcore

Feature comparison: V8 vs. iOS JavaScriptCore


Without using any non-deafult switches (i.e. no --harmony), are there language features, global properties, etc. that exist in V8 (at 69a0664) but not in JSC (at f27bfeb) and vice versa?

I'm doing Android/iOS work and want to make sure the same scripts will work on both.


Solution

  • In terms of ECMAScript 5 features, going by this table, both have attempted to implement everything.

    test262 failures for Mobile Safari (iOS 6.1.3):

    • 10.4.2_1.1 eval within global execution context
    • 10.4.2_1.2 eval within global execution context
    • 15.5.4.9_3 Tests that String.prototype.localeCompare treats a missing "that" argument, undefined and "undefined" as equivalent
    • 15.5.4.9_CE Tests that String.prototype.localeCompare returns 0 when comparing Strings that are considered canonically equivalent by the Unicode standard.
    • 15.9.3.1_5 multi-argument Date construction

    test262 failures for Chrome 28:

    • 11.2.3-3_3 Call arguments are not evaluated before the check is made to see if the object is actually callable (undefined member)
    • 15.5.4.9_6 Checking String.prototype.localeCompare.prototype
    • 15.5.4.9_7 Checking if creating the String.prototype.localeCompare object fails
    • 15.8.2.8_6 Checking if Math.exp is approximately equals to its mathematical values on the set of 64 argument values; all the sample values is calculated with LibC
    • 15.9.3.1_5 multi-argument Date construction

    Caveat: these aren't necessarily the corresponding versions, but are just what I have to hand.