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]

Re: Guile & PR


>>>>> "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