Sunday, May 13, 2012

FYI: No JIT on Windows 8 for ARM

Since the media will be all over that Windows 8/ARM vs. Mozilla thing this weekend, I wanted to chime in with an actual technical analysis:

Windows 8/ARM only allows sandboxed apps from independent developers. These only have access to the WinRT API, but not the full WIN32 API. Yes, the WIN32 API _does_ exist on W8ARM, but only Internet Explorer and system processes get access to it.

The WinRT API does not offer the equivalent of VirtualAlloc() or VirtualProtect() with the ability to make code executable at runtime. But JIT compilers absolutely require this functionality, which means there'll be NO INDEPENDENT JIT COMPILERS for W8ARM!

The Internet Explorer process on W8ARM has special privileges and is the only one allowed to run a JIT compiler to speed up JavaScript.
No other browser will be able to compete on performance with IE on W8ARM. That sure simplifies keeping up with the competition ... ;-)

Actually, fully-functional browsers need access to a couple more APIs that is denied to them, too. But the inability to run a JIT compiler has consequences for a much wider range of software:

!*!*!
For W8ARM there'll be no LuaJIT (in JIT mode), no PyPy, no Java, no v8, just to name a few. Ditto for any software that relies on them (Scala, Clojure, JRuby) or embeds them.
!*!*!

Read more: FreeList
QR: Inline image 1

Posted via email from Jasper-Net