[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Scheme-to-C Compiler -- More features, New license
The Western Research Laboratory of Digital Equipment Corporation is
pleased to announce the general availability of its experimental
Scheme compiler. While we still require a signed license and a distribution
fee of $100, the new license is much in the spirit of the conditions under
which MIT releases CScheme. For example, the software is no longer
restricted to Digital manufactured systems.
The compiler compiles Revised**3 Scheme to C that is then compiled by
the native C compiler for the target machine. This design results in
a portable system that allows either stand-alone Scheme programs or
programs written in both compiled and interpreted Scheme and other
languages. An experiment run on a microVAX II suggests that this
approach does not adversely effect performance. There, the system
was able to execute the Gabriel benchmarks with performance similar
to that of a native Common LISP implementation.
The Scheme->C system supports the essentials of Revised**3 and many of the
optionals. Extensions include "expansion passing style" macros, a
foreign function call capability, and interfaces to X11's Xlib. The system
does provide call-with-current-continuation. Numbers are represented
internally as 29-bit integers, or 64-bit floating point values.
The system is oriented towards block compilation to generate code
which can run in standalone programs which may include code from
other languages. While debugging is typically done using the
interpreter, it will never be considered a "Scheme environment".
The one "wart" in the system is that the compiler cannot compile all
tail calls correctly. This follows from some of the design tradeoffs
made when mapping Scheme to C. For more details on this, see the technical
report is available from WRL (send the message "help" to the server at
The compiler is written in Scheme. Most of the runtime system
(including an interpreter) is written in Scheme. The generational garbage
collector and a few other things are written in C. There is a small
(< 100) amount of assembly code.
If you are interested in this software, please send me your postal address
and I will send you the licensing information.
Joel Bartlett firstname.lastname@example.org