[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

further guile-vm integration

From: Andy Wingo
Subject: further guile-vm integration
Date: Wed, 20 Aug 2008 13:50:49 -0700
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.60 (gnu/linux)

Hello all,

The `vm' branch in the guile repo is coming along nicely. It fully
self-compiles, passes test suites, has a really useful repl, etc etc.
There are some problems with call/cc that will be fixed in the future,
but it's mostly correct.

So where to from here? I was making a long list, and ended up deciding
that the first priority is to integrate the VM code into libguile
itself, and thus into the standard `guile' binary. (Currently it builds
a guile-vm binary that links to libguile-vm, which links to libguile.)

The reasons for this, from Guile's perspective, are twofold:

  1. Make module compilation and load-compiled work out "of the box".

  This means that you should be able to make .go files for any module,
  normally as a part of package installation, and they should be
  loadable by guile without any problems or extra configuration.

  2. To improve the load time of Guile itself.

  Loading compiled modules is *much* faster than loading source modules
  -- it's a simple mmap-and-go approach. Compiling boot-9.scm is going
  to be great. Using psyntax is going to have no cost penalties. Having
  guile's modules be compiled will also lead to runtime speed
  improvements in Guile itself.

So I'm going to work on moving the source files over to the libguile/
directory, and to start thinking about the modules. I like that
guile-vm's modules are in a separate namespace (well two, actually --
(system ...) and (language ...)), but I do not intend to move ice-9
things into that hierarchy, to avoid breaking existing code.

User-level code should see no changes, other than speed improvements :)

Let me know if you have thoughts about this plan! My hope would be that
once there are no or very few and solvable regressions, we could merge
this to master and call it 1.10 or 2.0.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]