Subject: Re: HEADS UP: migration to fully dynamic linked "base" system
To: NetBSD-current Discussion List <current-users@NetBSD.ORG>
From: Greg A. Woods <woods@weird.com>
List: current-users
Date: 08/28/2002 17:19:02
[ On Tuesday, August 27, 2002 at 21:54:24 (-0700), Jason R Thorpe wrote: ]
> Subject: Re: HEADS UP: migration to fully dynamic linked "base" system
>
> On Tue, Aug 27, 2002 at 11:32:10PM -0400, Greg A. Woods wrote:
> 
>  > > ld.elf_so does do some version # sanity checking.
>  > 
>  > But only on the file, not the objects it contains, right?
> 
> We have individual symbol versioning for that.

yeah, but that's a manual add-on feature, not a mandatory assertion
required by the development tools and runtime environment, though of
course it's hard to do any really significant level of sanity checking
without validating the entire ABI specification for a library, at least
at pre-bind time if not at run-time. :-)

Although it's harder to do really good API validation at compile time in
a language like C it's not so hard in languages designed with this
feature in mind -- i.e. to have the compiler prove that at least the
APIs between modules are used correctly (and with some languages a whole
lot more language use can be proven correct at compile time too --
eg. Cyclone, Concurrent Euclid, etc.).  The beauty of doing such checks
in the compiler (or some validator that runs just before, or in parallel
with the compiler proper), and combining them with static linking, is
that you get provably reliable and "safe" machine-runable programs as a
result and with no degradation of run-time performance.  I.e. you can
have your cake (safety) and have eaten it too (speed).  All you have to
give up on is this silly idea of run-time dynamic object level
extensibility.  IMNSHO real extensibilty of complex applications
requires a built-in interpreter for some decent programming language
anyway.  Maybe we should just put a Cyclone or Scheme interpreter right
into libc so that the likes of nsswitch can be optionally programmed to
make use of any network protocol or database and so that locale specific
code can be loaded and executed only when necessary. [0.75 :-)]

-- 
								Greg A. Woods

+1 416 218-0098;            <g.a.woods@ieee.org>;           <woods@robohack.ca>
Planix, Inc. <woods@planix.com>; VE3TCP; Secrets of the Weird <woods@weird.com>