At 02:47 PM 7/24/00 +0000, Simon Cozens wrote:
>Dan Sugalski (lists.bootstrap):
> >At 07:56 PM 7/19/00 -0700, Russ Allbery wrote:
> >>Benjamin Stuhl <sho_pi@hotmail.com> writes: >>
> >> > 2 more (neither of which the current parser satisfies):
> >> > * reentrant, as much as possible
> >>
> >>Thinking about threading and re-entrancy from the very beginning of the
> >>design is *vital*, IMO.
> >
> >Anyone got pointers to papers or publications on these subjects handy?
>
>I encourage you - nay, I encourage *EVERYONE* - to look at glib.
Are you speaking of glibc here? Assuming you are, there are a few problems:
1) Last time I checked, glibc's license isn't compatible with perl's, and
I'm really hesitant about using code we can't use as a reference. (It feels
like stealing, even if it might not be in direct violation of the licensing
agreement)
2) Another implementation is just that, an *implementation*. I'm not
looking for the final product--I'm looking for the theories. Final product
is nice in some ways, but its already made tradeoffs, and they may not be
the ones we need to make. They might be, and that's just fine, but I can't
make a good decision unless I know.
3) I, for one, work better from documentation and theory papers than from
code. It's a personal quirk
4) glibc seems pretty darned Unix-specific. That's OK for it, certainly, as
Unix is its target, but we're working with a different problem domain.
>It's got threading. It's got safe signals. It's got hashes. It's got
>arrays. It's got a main event loop with scheduling. It's got safe memory
>allocation. It's got hook functions. It's got IO disciplines. It's got
>platform independent type support. It's got automatic cache support. It's
>got dynamic module loading.
>
>How many of these wheels are we prepared to reinvent?
>
>And, more importantly, why?
If the wheel doesn't fit for one reason or another, then we need to
reinvent it. (And many of these wheels we've already got) Also some of the
wheels people have invented are... suboptimal.
>Perl has been so amazingly insular to date. CPAN teaches us that code
>reuse is good, and that if some piece of available code doesn't meet our
>needs, we refine it and send back the changes to the maintainer. If we
>base a Perl 6 on libunicode and glib and iconv and whatever, I believe
>we can fix their deficiencies and give the results back to their
>development communities so *everyone* can benefit.
In some ways perl's living in a very different world than most programs,
and the use of other folk's canned solutions may not be optimal. Perl's a
language interpreter, and it lives at the same level as glibc and friends,
and just a half-step up from the kernel.
Chip quoted someone in his Topaz talk (and I don't remember who) "It's not
that I mind giving up a factor of two in performance, but neither do nine
of my friends". There's nothing wrong with using library code, but we
*must* make sure it's as efficient as possible, and it *is* worth us
rewriting the bits that don't cut it. If libc's IO, for example, was fast
enough we wouldn't already be bypassing the interface and messing about in
the guts.
Dan
--------------------------------------"it's like this"-------------------
Dan Sugalski even samurai
dan@sidhe.org have teddy bears and even
teddy bears get drunk