From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <775b8d190604190237o286e38cfjd281aa818ea8e0@mail.gmail.com> Date: Wed, 19 Apr 2006 19:37:20 +1000 From: "Bruce Ellis" To: "Fans of the OS Plan 9 from Bell Labs" <9fans@cse.psu.edu> Subject: Re: [9fans] dynamic module loading and versioning In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline References: Topicbox-Message-UUID: 3edcb0e6-ead1-11e9-9d60-3106f5b1d025 inferno is a bit more clever. only the used functions from a load of Sys are required. everything is a module, tho many modules are apps that can be run from whatever shell. the code, if it be jitted or not, is shared. the module data is copied. i like it. strong type checking rules. and it achieves the goal of making apps tiny. brucee On 4/19/06, Michael Baldwin wrote: > > 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. > > Aren't some of the same maintenance and versioning headaches > associated with shared libraries still there with dynamic loading of > modules? In Inferno, occasionally the Sys module changes (just to > pick a nasty one), and that can wreak similar havoc as incompatible > shared libraries unless you have a flag day. I've pondered playing > with the PATH string in a module header to make this less burdensome, > but I haven't seen anyone actually do it or even talk to the issue > (OK, there aren't that (m)any users of Inferno to have people to ask, > I know). > > It just seems that, if for some reason I go and change a function > signature in the String module, say, isn't it a similar headache as > shared libraries to keep all the programs that use the old and new > module running and happy at the same time? I know merely adding > functions is still compatible, but sometimes incompatible changes > must be made (int->big for file sizes and offsets comes to mind). > And to keep old and new programs not just running but compiling is a > bit of a bitch. Has anyone thought about or addressed these issues > in Inferno or another dynamic-loading system? Any lessons that can > be learned and brought back to the unwashed world of shared libraries? > >