> dynamic linking allows one to extend a program without inventing a > metalanguage. > i believe there is a paper on how inferno's shell uses this to nice effect.
shared libraries != dynamic loading of modules. both require a dynamic linking implementation but they are not at all the same. shared libraries are just a bad replacement for static libraries. they're used implicitly without a program having to ask for anything, and there is never an appropriate situation in which to use them. dynamic loading of modules can be a very powerful method of extension. i have been meaning for a long time to convert snoopy to make the protocol parsers dynamically loaded instead of having one huge binary. the inferno shell is another good example. the boundary is a bit blurred on inferno, because the explicitly module loading there is most commonly used to load what on other systems would be libraries. but the result, at least as implemented, has a very different feel from the shared library hell on unix and windows. russ
