Android and 64-bits / NDK revision 10

iOS has supported ARMv8/AArch64 — the 64-bit ARM instruction set — for closing on a year (exploiting the 64-bit A7 processor in the iPhone 5s), and with Android L coming closer to release, the same benefits will finally be coming to Android. Not only ARMv8, but also x86_64 and MIPS64.

Fun fact- MIPS hangs around via Imagination Technologies. Imagination Technologies are the ones who make the GPU in Apple’s CPUs (PowerVR), along with a number of other SoC graphics chipsets.

A big happy family.

ARMv8 provides significant architectural and instruction set improvements that far outweigh the addressable memory benefits. It’s worth noting that Cortex-A15 and later designs already support 36 to 40 bits of addressable memory (64GB – 1TB, albeit this is paged at the operating system level so any individual process is still bound to the 2-3GB limits), so the memory problem was not much of a problem at all.

The neat thing is that a new ARMv8 ART runtime will automatically bring those benefits to all existing managed code. New instructions will be used, register count and size utilized, etc, without any changes from app developers.

That leaves native code, for which the revision 10 NDK was recently quietly released. With full support for ARMv7 32-bit, ARMv8 64-bit, MIPS 32 and 64-bit, x86 32 and 64-bit.

The pieces are falling in place. Now we just wait for the actual hardware. The Nexus 6 (“Shamu”), perhaps?