Sunday, October 09, 2011

[ipnybthv] No shared libraries

Consider a software distribution architecture (like Debian's dpkg and APT) but which does not use shared libraries.  All programs are monolithic static binaries with all necessary libraries compiled in.

The benefits are no library dependency hell, and perhaps performance benefits from whole program optimization by the compiler.

Let disk be cheap, bandwidth be cheap, memory be cheap, recompilation be cheap.

Whenever a library is updated, every program that depends on it gets updated, recompiled, and redistributed.  (If libc or ld-linux gets updated, you're pretty much downloading the entire distro.)

If bandwidth is not cheap, then distribute binary diffs.

If disk is not cheap, then let there be block-level (or byte-level) filesystem deduplication.  "Shared" libraries thus happen at a different level.

The operating system should be clever enough not to have to load the entirety of giant binary executables into memory before and during running them.  Perhaps even memory deduplication.

No comments :