ILP32-A64
AArch64 ILP32 for embedded Linux: up to 30% less memory at nearly the same speed.
AArch64 ILP32 runs 64-bit Arm code with 32-bit int, long and pointers.
It keeps the full AArch64 instruction set and runs on cores that no longer support 32-bit Arm,
while pointers and data structures take less memory.
Measured
On a Cortex-A35 board, CPython built for ILP32 uses up to 30% less memory than the same build for LP64, and runs a few percent slower. On OpenWrt One hardware, with a 150,000-domain adblock list, LuCI and Python, the ILP32 user space uses 25% less memory, leaving 8.6 MB more free.
Projects
| linux-ilp32 | Linux 6.12 stable with the ILP32 ABI |
| glibc-ilp32 | glibc 2.41 port, 64-bit time_t |
| musl-ilp32 | musl 1.2.5 port |
| llvm-ilp32 | clang 22 patches, interoperable with GCC |
| openwrt-ilp32 | OpenWrt 25.12 with an ILP32 user land |
| debian-ilp32 | ILP32 packages for Debian 13 (unofficial) |
| test-ilp32 | Toolchains, tests and a QEMU harness |
Get involved
Questions, ideas and test results from your own boards are welcome in Discussions. Source and issues: github.com/ilp32-a64.