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] |
>>>>> "Mikael" == Mikael Djurfeldt <mdj@nada.kth.se> writes:
Mikael> We seem to be in a quite paradoxical situation: On one
Mikael> hand, the current Guile is a very good Scheme interpreter.
Mikael> It is stable and reasonably free of bugs. It has a lot of
Mikael> functionality and is easy to integrate in application
Mikael> programs.
Mikael> And my guess is that it is one of the very few fastest
Mikael> Scheme interpreters that currently exist. (My guess is
Mikael> still that it is the second fastest after SCM.)
Mikael> But we have two problems which make Guile look really
Mikael> lousy:
Mikael> 1. Documentation is not completed.
Mikael> Even though functionality and solutions to most problems
Mikael> exist, few know how to use it.
Mikael> 2. Guile startup time is ridiculously long.
Mikael> In the recent scripting benchmarks in comp.lang.scheme,
Mikael> Guile gets lousy figures, probably because of the startup
Mikael> time.
Mikael> I don't have time to work on this, but here are two
Mikael> suggested remedies:
Mikael> 1. Is it possible to give more people write access to the
Mikael> module guile-doc? I understand why it is important to
Mikael> restrict write access to the code sources, but I think it
Mikael> would be OK to let a wider range of people access the
Mikael> manual.
Mikael> 2. One quick fix which would have a large impact on
Mikael> loading time would be to implement the module-eval-closure
Mikael> (see boot-9.scm) as a primitive procedure which could be
Mikael> used in the "standard" case.
Mikael> If anyone is interested in improving Guile startup
Mikael> time, he can have a look in boot-9.scm how these work,
Mikael> simplify the algorithm (since the current one is too
Mikael> general), and implement it in C code (which should be put
Mikael> in modules.c).
Mikael> If this is done correctly, I promise to put it into the
Mikael> Guile sources immediately.
Mikael> BTW, is it possible to let Guile dump a boot image on
Mikael> systems which support that? I have a vague memory that it
Mikael> interfered with dynamic linking..., but it would really
Mikael> improve things a lot.
Yes, at least on several popular platforms (Solarix, Linux, HPPA...).
Should be extensible to evey platform supporting emacs, as the unexec
code used is borrowed from there.
How to do it:
1) get guile-hobbit-1.3.2 and install it. This will
install in BINDIR an executable tguile.
2) Now do (absolute path is important):
$BINDIR/tguile --dump fast-guile /dev/null
An executable fast-guile is created, which starts... fast !!!
Warning: you can dyn-load code in fast-guile, as in the normal guile.
You can also replace /dev/null with a real file containing Scheme
code (as done in guile-stklos), but this code must not dyn-load anything !
--
B. Urban