In iOS 8, all browser apps will be created equal

iOS 8 Safari and WebKit Performance

iOS 8 will bring one under-the-hood change that many app developers, but also iPhone and iPad users, will appreciate: consistent performance no matter what browser app is chosen. 9to5Mac reports that browser apps and apps that incorporate web browsing features will offer the same kind of speed that was previously available only to Safari, the built-in iOS browser, because Apple is ready to share its Nitro JavaScript engine with other apps.

Starting with iOS 8, it appears that all apps will have access to the same improved JavaScript engine, allowing users to enjoy the same kind of performance on other browser apps, including Google’s Chrome browser for iOS.

Reddit user dqueso has further explained why Apple was reluctant to share these tools with developers in previous iOS releases, revealing that security concerns explain why Safari enjoyed special treatment in previous iOS versions.

“There’s also a security aspect of it. I believe Nitro uses JIT (just-in-time) compilation, which means it translates JavaScript code into native code that the processor can run directly, with none of the overhead of interpreting JavaScript. To do this, the engine needs the ability to allocate memory that it can both write to and execute,” dqueso wrote.

“In iOS, neither you (nor any malicious data that enters your app) are able to modify the executable parts of your code. This way, users/attackers (in theory) aren’t able to inject malicious code in your app by finding a way to modify your executable and gain an exploit.”

“I think the nitro engine runs in a separate process, and Safari uses cross-process communication to execute its JavaScript code quickly. Since Apple seems to have ‘finished’ it’s XPC enough to release the extension API’s (Widgets, custom keyboards, photo filters, etc…), it’s likely robust enough where Apple can trust third-party apps to use the nitro engine,” he added.

Via:
Reddit
Source:
9to5Mac
blog comments powered by Disqus