On Wed, Feb 17, 2010 at 8:14 AM, Stuart Morrow <morrow.stuart@googlemail.com> wrote:
On 2/17/10, Steve Simon <steve@quintile.net> wrote:
>> And another important feature of shared libraries is, that when
>> some lib is updated, importing programs dont have to be recompiled.
>> What's the Plan9 solution here ?
>
> We recompile the relevant executables.

also, plan 9 uses filesystems for many things that other systems use dlls for.
if there's a bug fixed in a 9p server, existing programs can still
talk to it without a recompile.

stu

A lot of "plug in" functionality you'll find on other platforms that requires a shared library approach can be implemented via a file system service technique.  Instead of using the C runtime and calling conventions + a shared library loader to call on some routines that the program in question did not originate, it can use 9P via the file system to make what equates to RPC calls to another process that serves the file system itself.  

This actually buys one a lot in terms of the following:

1. Isolation of concerns
2. Isolation of faults
3. Composition/Debugging/Testing of solutions via a ubiquitous API/tools

How much more convenient can it get when almost all the tools you need are a shell, cat/cp/echo etc, and some namespaces in order to build a complex system from smaller, simpler parts.

I don't know why everyone doesn't want to build software this way.  This is the same philosophy Erlang and Haskell (and other functional programming languages) encourage just to write programs. 

Dave