84 lines
2.7 KiB
TeX
84 lines
2.7 KiB
TeX
|
\documentstyle[11pt]{article}
|
||
|
|
||
|
\pagestyle{empty}
|
||
|
\setlength{\textheight}{9in}
|
||
|
\setlength{\footheight}{0.0in}
|
||
|
\setlength{\topmargin}{0in}
|
||
|
|
||
|
%Defaults from art10.sty:
|
||
|
%\textwidth 345pt \columnsep 10pt \columnseprule 0pt
|
||
|
%\oddsidemargin 63pt
|
||
|
|
||
|
\advance\textwidth by 0.5in
|
||
|
\advance\oddsidemargin by -0.25in
|
||
|
|
||
|
|
||
|
\begin{document}
|
||
|
|
||
|
\vspace*{-0.3in}
|
||
|
|
||
|
\begin{center}
|
||
|
{\large\bf Scheme 48} \\
|
||
|
\vspace{1ex}
|
||
|
Richard Kelsey ({\tt kelsey@corwin.ccs.northeastern.edu}) \\
|
||
|
Jonathan Rees ({\tt jar@cs.cornell.edu}) \\
|
||
|
June 1992
|
||
|
\end{center}
|
||
|
|
||
|
\vspace{1ex}
|
||
|
|
||
|
Scheme 48 is an implementation of the Scheme programming language based
|
||
|
on a virtual machine architecture. The following is an overview of
|
||
|
the project.
|
||
|
|
||
|
\paragraph{Goals}
|
||
|
|
||
|
\begin{itemize}
|
||
|
\setlength{\itemsep}{0pt}
|
||
|
\item Straightforward, minimal implementation.
|
||
|
\item Flexible experimental apparatus for research in programming
|
||
|
language design and implementation.
|
||
|
\item Easy to make changes to internal data representations, memory
|
||
|
management, and compilation strategy.
|
||
|
\item High reliability.
|
||
|
\item Fast and complete enough to be a good
|
||
|
development environment for Scheme programs.
|
||
|
\end{itemize}
|
||
|
|
||
|
|
||
|
\paragraph{Virtual machine}
|
||
|
|
||
|
The virtual machine executes a simple byte-code instruction set
|
||
|
similar to the target of the Scheme 311 compiler [Clinger, LFP 1984].
|
||
|
The interpreter for the virtual instruction set is itself written in
|
||
|
PreScheme, a systems programming dialect of Scheme. A PreScheme
|
||
|
compiler applies intensive source-to-source rewrites to the
|
||
|
interpreter source code and emits low-level C code. When the output
|
||
|
is then compiled by an optimizing C compiler such as gcc, the result
|
||
|
is a very efficient and portable emulator.
|
||
|
|
||
|
\paragraph{Run-time system}
|
||
|
|
||
|
The virtual machine is initialized from a specified memory image
|
||
|
containing byte-compiled Scheme code and data. Images (including
|
||
|
small stand-alone applications) are built either by a linker or by
|
||
|
writing out the state of an executing program. A standard memory
|
||
|
image contains a Scheme run-time library ({\tt append}, {\tt read},
|
||
|
{\tt write}, etc.), a compiler from Scheme to the virtual instruction
|
||
|
set, and a command processor and debugger. In this way Scheme 48 can
|
||
|
be configured to look like a conventional Lisp interpreter.
|
||
|
|
||
|
In addition to the Scheme run-time library and development
|
||
|
environment, library software includes support for multitasking,
|
||
|
modules (packages), hygienic macros (as described in the Revised$^4$
|
||
|
Scheme report), records, and exception handling.
|
||
|
|
||
|
\paragraph{Applications}
|
||
|
|
||
|
The Scheme 48 system is being used at several sites for research in
|
||
|
memory management, embedded systems, multiprocessing, and computer
|
||
|
system verification. Scheme 48 was chosen as the platform for these
|
||
|
projects because of its internal tractability and flexibility.
|
||
|
|
||
|
\end{document}
|