Return-Path: Delivered-To: apmail-new-httpd-archive@apache.org Received: (qmail 77722 invoked by uid 500); 7 Mar 2000 20:23:37 -0000 Mailing-List: contact new-httpd-help@apache.org; run by ezmlm Precedence: bulk X-No-Archive: yes Reply-To: new-httpd@apache.org list-help: list-unsubscribe: list-post: Delivered-To: mailing list new-httpd@apache.org Received: (qmail 77687 invoked from network); 7 Mar 2000 20:23:35 -0000 Date: Tue, 7 Mar 2000 21:23:11 +0100 From: "Ralf S. Engelschall" To: new-httpd@apache.org Subject: Re: mod_so in Apache 2.0 Message-ID: <20000307212311.A27341@engelschall.com> Reply-To: rse@engelschall.com Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Mailer: Mutt 1.0.1i Organization: Engelschall, Germany. X-Web-Homepage: http://www.engelschall.com/ X-PGP-Public-Key: https://www.engelschall.com/ho/rse/pgprse.asc X-PGP-Fingerprint: 00 C9 21 8E D1 AB 70 37 DD 67 A2 3A 0A 6F 8D A5 X-Spam-Rating: locus.apache.org 1.6.2 0/1000/N In article <20000307192747.A24791@schumann.cx> you wrote: > [...] > We should probably teach mod_so to use libltdl, so we can get rid of this > platform-dependent dynamic loading crap. > > What do you guys think? > > [FYI: libltdl supports various interfaces (Solaris, Linux, *BSD, HP-UX, > Win16/32, BeOS, GNU DLD, AIX?), and can be included under the Apache license > due to an extremly cool licensing scheme.] Although I'm a fan of GNU libtool and use it myself in all my library packages, I want to vote -0 for both the old stuff and libltdl in Apache. Why? Because the old stuff is IMHO not clean enough to survive the future and libltdl is tight to libtool and libtool is for (don't say "haha")... DSO _libraries_ and not DSO modules. What? Yes, you read correctly: I distinguish between those two DSO-types. - RSE def. of "DSO Library": A DSO library is a _passive_ piece of code which is _implicitly_ linked into the address space of a program by the Unix run-time linker. - RSE def. of "DSO Module": A DSO module is an _active_ piece of code which is _explicitly_ linked into the address space of a program by the program itself. So what? The point is that libtool does a great job making the horribly unportable way of dealing with DSO libraries visually portable. That starts by finding PIC compiler flags, goes over fiddling around with version symlinks (.so.1.2.3 -> .so, etc.) and ends by the abstraction library libltdl for loading those DSO libraries manually. And its obvious that a DSO library can be treated also as a DSO module, of course. So its clear that one _could_ use libtool/libltdl also for Apache modules. But that would be like using Emacs for writing text or buying a car to listen to the radio. For dealing with DSO modules one usually need just approx. 20% of libtool's functionality. Additionally libtool doesn't provide some features which would be nice for an application which heaviliy counts on DSO modules and has lots of them (for instance it is nasty to slowly execute a large 110KB shell script on _every_ module-related compile command in a source tree; it's nasty that the installed modules have additional meta files which clutter the installation tree [sorry, I'm also a optical perfectionist]; etc.). For these reasons I currently write a new DSO package for a forthcoming DSO-based package, which is very very similar to GNU libtool, but focuses exclusively on dealing with DSO _modules_. Unfortunately it has to be a reinvention of the mentioned 20% of libtool's wheel, but IMHO will provide a better DSO solution for applications which _heavily_ count on DSO modules. For instance the command line tool ("dsotool") is intentionally written in C instead of Bourne Shell to reduce the processing cost on every compile command and also to reduce portability problems (which are even more nasty in bootstrap tools like a DSO tool). It also hasn't to implement all the library-related overhead libtool has to cover and this way is a smaller package. So what do I suggest? I suggest you should perhaps wait a little bit longer before moving on with using libtool/libltdl for dealing with Apache modules and instead first evaluate my package in a few weeks when it is publically released. Then you can still use libtool/libltdl for Apache 2.0 if you will find my DSO package too boring or if it doesn't fit very well into Apache 2.0. But if you move to libtool too early and investigate too much time you perhaps will be frustrated later... Yours, Ralf S. Engelschall rse@engelschall.com www.engelschall.com