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.
!*!*!

[
Note that Windows 8 for x86/x64 has similar restrictions for
applications distributed via their Windows Store. But you can
still install independent software directly. And Windows 8 is of
course backwards compatible to Windows 7 software on x86/x64.
But you can see where this is heading ...
]

--Mike

Other related posts: