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

MzScheme for Embedding



Hi,

I'm planning on embedding a Scheme interpreter in a web server
for use as the extension language.  My initial inclination was to
use the GNU projects Guile implementation, but since MzScheme is
also GPL'd (well, LGPL'd) it would make a fine choice as well.

I have some familiarity with MzScheme since I started packaging
it for the Debian distribution a few months ago.  However, many
projects seem to be using Guile for extensions and I wanted to
see your opinions on a few topics.

I like a few things about MzScheme:
1.  It compiles to an interpreted bytecode.  This means I can
cache the bytecodes in core for heavily used scripts, and save
some of the "compile" time for future invocations.
2.  It seems to be very fast for many benchmarks.
3.  It seems to be very actively supported.
4.  It is free software.
5.  It has manuals that document the interface API.
6.  It seems to have good threading support.

I do have a couple of concerns about MzScheme:
(A) The Guile-list has lots of complaints that the MzScheme
module system is very un-schemelike (whatever that means).  Can
anyone here shed light on what this means?
(B) MzScheme seems like it has a fairly large memory footprint.
(C) Focus on educational use might mean that its evolution will
be towards lots of functionality at the cost of large size.  By
this I mean it may not be possible to pare it down to just the
pieces I want at a given time.  Perhaps the module system provides
sufficient granularity that this is not a problem.

To be complete, I don't like the following things about Guile:
1)  Bad thread support
2)  Perhaps not as compliant with modern Scheme specifications.
3)  No byte-code compilation, which means scheme code must be
parsed each time it is run (less opportunity for smart compiler
optimizations if they are "expensive").

I'm leaning towards using MzScheme, but I wanted to run this
past you for your thoughts.  Can anyone give their opinion of
MzScheme's suitability as an extension language?

Thanks,

-Brent