End the Apple Browser Ban
Other JavaScript engines will be disadvantaged because only Apple&#x27;s JavaScriptCore is permitted to just-in-time compile JavaScript into native code. Changing that policy, by allowing third party apps to allocate RWX pages, would fundamentally change the entire iOS security model.<p>(There are some security details of how JSC&#x27;s JIT is hardened in this talk by the head of Apple&#x27;s security engineering team: <a href="https:&#x2F;&#x2F;www.blackhat.com&#x2F;docs&#x2F;us-16&#x2F;materials&#x2F;us-16-Krstic.pdf" rel="nofollow">https:&#x2F;&#x2F;www.blackhat.com&#x2F;docs&#x2F;us-16&#x2F;materials&#x2F;us-16-Krstic.p...</a>)<p>WebKit on iOS also uses its tight OS integration to achieve high performance while using an out-of-process architecture for security. Every app that uses WebKit gets this security architecture for free, which is a major benefit to users. This architecture could theoretically be adopted by other browsers, but only with a lot of engineering effort from both sides.<p>A separate browser app for Chrome that uses Blink, perhaps modified to use JavaScriptCore, doesn&#x27;t seem that bad, if they could achieve the same level of isolation between tabs.<p>OP points out that other browsers such as Chrome can push software fixes faster than Apple. Well, not necessarily on iOS, where they will have to go through App Review.<p>And what about when 3rd party apps start bundling Chromium.framework (as we have with Electron apps on the desktop today) because they want to use &lt;new API&gt; now? Who is going to make sure all those app developers are keeping their embedded Chromium patched and up-to-date?<p>(Will you complain when your users can’t visit a site because the browser embedded in Facebook doesn’t support &lt;even newer API&gt; some day? Or will you tell every iOS visitor that “this site looks best in the standalone browser app”?)<p>The WebKit mandate on iOS almost entirely comes down to protecting users against web exploits, and on the other side the argument mostly boils down to &quot;Apple is slow at implementing &lt;feature&gt;.&quot;