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 Startup Time Suggestion


>>>>> "Russ" == Russ McManus <mcmanr@eq.gs.com> writes:

    Russ> "Perry E. Metzger" <perry@piermont.com> writes:
    >> No one rational is going to use guile if they need to run the
    >> "guile daemon" at all times to get remotely good
    >> performance. We should just fix the performance. It is
    >> certainly doable.

    Russ> Along these lines, I have thought that a fruitful way of
    Russ> improving guile's startup performance would be to first
    Russ> build a basic guile, and then that guile could invoke the
    Russ> hobbit compiler to compile the guile init files.

Actually, the current guile-hobbit distribution (to be found at red-bean
in the contrib/misc directory) is still doing this. The only drawback
is that boot9.scm and friends do not really compile out of the box,
because these files are full of macros and non-R4RS stuff.

    Russ> Then the basic guile would be linked with these transformed
    Russ> (into '.o' files) init file to form the guile executable.
    Russ> This executable would not read any init files on startup, so
    Russ> it would be fast.

Currently, the init files compiled by hobbit are built as a shared
library, which is then dynamically loaded. 

    Russ> All of this would happen at build time out of the base guile
    Russ> package.  Of course this is just a simple matter of
    Russ> programming ;^)

    Russ> A similar architecture would work with unexec, but it would
    Russ> probably be less friendly when attempting to build a special
    Russ> application that includes all of guile, including the init
    Russ> files.

On several platforms, unexec and dynamic loading cannot live together.

--

B. Urban