FatELF to bring Universal binaries to Linux
The FatELF project is hoping to to bring Mac OS X style Universal Binary files to Linux. Universal binaries allow Mac developers to create applications which contain the code for different processors in one file and FatELF aims to bring the same functionality to Linux and other free operating systems. On Mac OS X, Universal Binaries were used to make the transition from Power PC to Intel processors practically invisible to end users, and the FatELF project believes similar benefits could be brought to Linux, for example, when moving between 32 bit to 64 bit Linux systems.
The project is at an early stage at the moment, but could provide Linux application developers with the ability to provide one application with 32 bit and 64 bit Intel, Power PC, SPARC or MIPs binary code in one file. When a FatELF application is run, the system selects the correct code for the processor it is running on and executes that code. The downside of the approach is that binary files become larger, in FatELF's case approximately doubling per extra supported processor architecture, but for many applications, this would not be a major increase in overall size as common resources such as images and data files which make up a large part of many programs would not be duplicated.
The project has been created by Ryan Gordon, a professional game porter, who has created the required patches for the Linux kernel, bin-utils and gdb, and a proof-of-concept virtual machine to demonstrate FatELF. The FatELF code is licensed under the zlib license and a 1.8GB FatELF version of Ubuntu 9.04 as a VMWare virtual machine is available to download as a demonstration.