\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}
