Subject: Re: HEADS UP: migration to fully dynamic linked "base" system
To: Jason R Thorpe <thorpej@wasabisystems.com>
From: Johnny Billquist <bqt@update.uu.se>
List: current-users
Date: 08/27/2002 03:19:47
On Mon, 26 Aug 2002, Jason R Thorpe wrote:
> On Tue, Aug 27, 2002 at 02:53:51AM +0200, Johnny Billquist wrote:
>
> > I won't go into the question wether it's a good or bad design. It has it's
> > merits, but it's still a hack.
>
> By your labeling it a "hack", you are discounting it as something that
> wasn't designed with some thought put into it.
Admittedly, the elf shared libraries are a big improvement on the a.out
shared libraries, which is where my hack-label really comes from.
By now, a lot of thinking have gone into it.
But hacks *can* be well thought out and implemented. While a little
disparaging, it don't neccesarily need to be interpreted *that*
negatively.
> Networking wasn't part of the original Unix design. Nor was the notion
> of having multiple kinds of file systems. Because they appear in Unix
> now, are they a "hack"?
They definitely were at the beginning. /dev/tcp was a hack. Neat in it's
way, but it proved to be not-so-good.
After a number of iterations, and design into the system as a whole, I'd
hardly say it's a hack now.
File systems are the same thing.
I seem to like to express things a little provocative sometimes. I
apologize. I think that NetBSD of today is a rather nice system (for a
Unix system :-) and it's what I always try to end up with no matter what I
do, or where I go. And my impressions is that you've somewhat responsible
for this, so I owe you, and the other NetBSD developers, a big thank you.
> I'll admit that the way SunOS (and our own a.out) did shared libraries was
> a hack; all the magic for starting the dynamic linker was done in crt0, and
> was prone to error. But when ELF came along, they defined an interface where
> the kernel provided assistance to the dynamic linker (the kernel maps the
> dynamic linker, and then provides additional info to it in the form of Aux
> vectors), which lives in userland.
Like I said, the main reason for my "hack"-label is the a.out solution,
and the fact that at the time, nothing better was possible.
> You might say it was specifically designed to put the complicated part into
> userland, rather than forcing it to live in the kernel. This keeps the
> kernel's exec code relatively simple.
True.
However, the fact that we actually have to have all these
almost-compatible ABIs is in itself a proof that Unix is sortof a hack. It
shouldn't be like this, but now it is, and I suspect we'll never be rid of
it. (But I could always dream... :-)
Johnny
Johnny Billquist || "I'm on a bus
|| on a psychedelic trip
email: bqt@update.uu.se || Reading murder books
pdp is alive! || tryin' to stay hip" - B. Idol