I'm in charge of the development of an open source C++-based game
engine. One of its features is extreme modularity, most of it
(especially drivers) can be extended or replaced simply by adding a
package.
On Linux, this works well with almost no effort, as ld.so seems to
properly handle and cache dependencies and such of both dynamically
linked and dynamically loaded modules (even modules that are both).
On Darwin, however, because a module can't be both dynamically linked
and dynamically loaded, I don't see any simple solution that neither
greatly complicates the port process and/or the build process nor
wastes huge amounts of memory and disk space. Is there something
simple I'm missing?