Software Multiplexing - Share Your Libraries and Statically Link Them Too
summary
Software Multiplexing compiles programs and their shared libraries into a single static executable using bitcode and a multicall dispatch, implemented in the ALLVM tool allmux. It deduplicates library code and does IR-level static linking (Static Linking of Shared Libraries), so thousands of Linux packages build automatically, LLVM builds are 18.3% smaller and 30% faster, and multiplexing 74 packages yields a 39% geometric mean size reduction; combining many versions (e.g., 40 memcached) fits far more versions into one binary.
AI-written summary · about
chapters (14)
- 0:00Start
- 1:57Big Picture
- 3:12Shared vs Static Libraries
- 4:56Sources of Code Duplication
- 5:57Example: Code Deduplication with Allmux
- 7:02Performance Impact of Allmux
- 8:05Memory Usage with Shared Libraries
- 11:05allexe: Self-contained IR for Pgms
- 12:29Automatic Multicall
- 13:29LEMP Stack for Web Servers
- 16:20ALL 40 versions of memcached (Really!)
- 17:15Library Deduplication is important
- 17:52Limitations
- 19:02Summary: Software Multiplexing
related talks
19mMELF: Multivariant Executables for a Heterogeneous World
01h 16mPolymorphism, Cohesion, and Coupling in C++
26mDebloating Software through Piece-Wise Compilation and Loading
34m"Compiling Multi-Million Line C++ Code Bases Effortlessly with the Meson Build System"
48mCross-Domain Compilation: Exploiting Synergies Across the CS Community
16mIntroduction to Procedural Debugging through Binary Libification
01h 04mBuilding Modules
21mWorking Towards a Common C Library for Small RISC V Systems
