Joe Marshall <email@example.com> wrote:
| Yes, but I haven't seen an embeddable scheme system that comes even
| close to doing all the things I need. How many of these embeddable
| scheme's support huge heaps, generational scavenging, multiple
| threads, CLOS, foreign functions, persistent objects, and network code?
Rice University PLT's DrScheme/MrEd/MzScheme <URL:http://www.cs.rice.edu/
CS/PLT/packages/drscheme/> comes awfully close [at least, for what I do]:
- Multiple threads (well-integrated with I/O, so threads can do
"blocking reads" that don't block other threads), semaphores,
and multiple global namespaces so that code compiled at runtime
(e.g., input from a user or the net) can be isolated from the rest
of the system.
- A reasonably decent class-based object system (C++/Java-like though,
so only single-inheritance).
- Easy access to foreign functions in C or C++, including runtime
linking of DSOs/DLLs (though no runtime-compilable FFI)
- An entirely-adequate TCP/IP network facility.
- A form of persistent objects through the "SrPersist" add-on package
(accesses relational databases with an ODBC driver).
Plus, it has a object-based GUI system (MrEd) which is portable across
Windows 95/98/NT/2000, MacOS, and Unix/X; a pedagogical teaching environment
(DrScheme) with some serious debugging tools (MrSpidey); and the "mzc"
compiler compiles Scheme to native code via C if you want (otherwise,
by default it compiles, with pretty heavy optimization, to an internal
One of the more blatant drawbacks, to my taste, is that it still relies
on the Boehm-Demers conservative garbage collector (for ease of interfacing
with C/C++, they say), which while on some platforms supports a form
of generational scavenging, isn't nearly as efficient as a full-blown
generational copying collector (with a fixed nursery, as per Ungar).
But other than that, it's stable, robust, well-supported, and generally
quite usable. While not tiny (~750KB text+data), MzScheme is certainly
one reasonable choice for "embedding". (And "scripting", but that's
Rob Warnock, 31-2-510 firstname.lastname@example.org
Network Engineering http://reality.sgi.com/rpw3/
Silicon Graphics, Inc. Phone: 650-933-1673
1600 Amphitheatre Pkwy. PP-ASEL-IA
Mountain View, CA 94043