That's actually a really good question!

I didn't have much luck working the DLL angle, though C++ and intentional ABI compatibility might play in there, so my next thought is to poke at ABI compatibility more specifically, maybe even C ABI on Windows.

What little Windows poking I did was .NET, so I more often saw global assembly cache (ack! GAC!) pain than DLL, and even that wasn't too bad - they learned some things from DLL hell.

Speaking of, using local DLLs (which also learned some things, finally) seems like it would let you distribute a freestanding binary that doesn't take a wild goose chase for DLLs on the part of the recipient…