This is the mail archive of the guile@cygnus.com mailing list for the guile project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

try-using-libtool-name


I'm having a go at making a cut down guile with only the
really essential parts. I know that everyone has a different
idea of what is essential but I'm cutting it down to what I
see as essential. Slipping into philosophy mode here,
if guile really is supposed to be universal then the true
core of guile has to be as small as possible.
The idea of strings, bells and whistles in all directions
is nice sometimes but on many other occasions it's just
too much pain and possibly a good reason not to bother.

The whole idea of having a module system is to avoid this
clutter but that will only work if it is possible to bring up
a really simple system that depends on no (or few) modules
and that can be said to actually function. From that point
it's up to the user to see how many modules they want to stack
in, knowing that they have the choice.

For example, for packages such as `gimp', are timer-based
signals likely to be useful? Is it likely that the program
is going to be changing the ownership of files or checking
the password database? Is it likely to do a mknod for crying
in a bucket? Now mknod is very important in it's place but
it's not the sort of thing that most packages need.

My question is why all of these are part of the guile-core
distribution and why they are all integrated into libguile...
surely this is exactly the sort of thing we want dynamic
libraries for (or even static for that matter, anyhow not
part of libguile).

A specific example of the way this sort of cross-dependency
gets woven into the mesh... the function (try-using-libtool-name)
is defined in ice-9/boot-9.scm and it makes use of regexp
functions from the regexp module but ooops! it gets called
itself when searching for a module so if the regexp module
is not there then you get an infinite loop and a stack overflow.

Try renaming the 1.3a/ice-9/regex.scm file then running
a guile shell and trying (use-modules (not here)).

This problem doesn't happen in 1.2 because there is no
try-using-libtool-name function.

Anyhow, I'm thinking of all the programs out there that are basically
wanting some scripting support and a few key definitions --
there should be a simple option available that just supports
the evaluator, some primitives and the facility to load
additional modules if required.

	- Tel