Originally posted by Draconx
View Post
You don't seem to be getting the whole picture of the goals of FatELF.
- Distributions no longer need to have separate downloads for various platforms. Given enough disc space, there's no reason you couldn't have one DVD .iso that installs an x86-64, x86, PowerPC, SPARC, and MIPS system, doing the right thing at boot time. You can remove all the confusing text from your website about "which installer is right for me?"
- You no longer need to have separate /lib, /lib32, and /lib64 trees.
- Third party packagers no longer have to publish multiple .deb/.rpm/etc for different architectures. Installers like MojoSetup benefit, too.
- A download that is largely data and not executable code, such as a large video game, doesn't need to use disproportionate amounts of disk space and bandwidth to supply builds for multiple architectures. Just supply one, with a slightly larger binary with the otherwise unchanged hundreds of megabytes of data.
- You no longer need to use shell scripts and flakey logic to pick the right binary and libraries to load. Just run it, the system chooses the best one to run.
- The ELF OSABI for your system changes someday? You can still support your legacy users.
- Ship a single shared library that provides bindings for a scripting language and not have to worry about whether the scripting language itself is built for the same architecture as your bindings.
- Ship web browser plugins that work out of the box with multiple platforms.
- Ship kernel drivers for multiple processors in one file.
- Transition to a new architecture in incremental steps.
- Support 64-bit and 32-bit compatibility binaries in one file.
- No more ia32 compatibility libraries! Even if your distro doesn't make a complete set of FatELF binaries available, they can still provide it for the handful of packages you need for 99% of 32-bit apps you want to run on a 64-bit system.
- Have a CPU that can handle different byte orders? Ship one binary that satisfies all configurations!
- Ship one file that works across Linux and FreeBSD (without a platform compatibility layer on either of them).
- One hard drive partition can be booted on different machines with different CPU architectures, for development and experimentation. Same root file system, different kernel and CPU architecture.
- Prepare your app on a USB stick for sneakernet, know it'll work on whatever Linux box you are likely to plug it into.
- Prepare your app on a network share, know it will work with all the workstations on your LAN.
Comment