home *** CD-ROM | disk | FTP | other *** search
-
- -- see INSTALL for instructions on how to build VSCM
- -- see DESCRIPTION for a desription of the non-R4RS features and for a
- list of changes made since September 29, 1993
-
- ______________________________________________________________________________
-
-
- VSCM -- A portable Scheme implementation
-
- Author: Matthias Blume
- Princeton University
- Department of Computer Science
- 35 Olden Street
- Princeton, NJ 08544, U.S.A.
-
- e-mail: blume@cs.princeton.edu
-
- This is VSCM, a complete and portable implementation of Scheme
- according to R4RS (The ``Revised revised revised revised Report of the
- Algorithmic Language Scheme'').
-
- VSCM is based on a virtual machine written in ANSI C and on a
- bytecode-compiler written in Scheme itself.
-
- This version of VSCM is distinguished from its predecessor (VSCM I) by the
- following properties:
-
- * All essential and non-essential features mentioned in R4RS plus
- some important extras are provided.
- * VSCM is now based on a somewhat more flexible virtual machine
- which allows more compiler optimizations.
- * The compiler now uses a flat closure representation. (The previous
- implementation was restricted to linked closures.)
- * VSCM now offers the complete tower of numeric types as proposed in
- R4RS (integer, rational, real and complex). The numeric code
- has been completely redesigned.
- * Execution is 20-40% faster on average programs. For certain
- cases improvements of more than 50% could be observed.
- * The implementation is cleaned up in several ways.
-
- Non-standard features include:
-
- * (executable) protable memory images
- * error handling
- * interrupt handling
- * coroutines
- * timer interrupts
- * generic ports
- * continuations with multiple arguments (will be in R5RS)
- * interfaces to runtime system, garbage collector,
- operating system
-
- For a more complete list and description see file DESCRIPTION.
-
- This version of VSCM is based on its first implementation that has
- been developed in part while the author was working at the department
- of Computer Science, Humboldt-University of Berlin, Germany. The most
- recent version of the first implementation can be obtained via
- anonymous ftp from ``nexus.yorku.ca:/pub/scheme/imp/vscm93Feb10.tar.Z''.
-
- ______________
-
-
- Remarks:
-
- Even though VSCM implements integral, rational, real and complex
- numeric types and distinguishes between exact and inexact numbers you
- can find ``holes'' in the type system: there are no non-integral
- inexact fractions and no exact non-integral real or complex numbers.
- Inexact fractions are converted to real numbers. Usually there is no
- problem with this. However, the results of ``rationalize'' can be
- surprising.
- ``rationalize'' must return an inexact fraction if called with
- real numbers, because real numbers are always inexact. But since we
- don't have inexact fractions we get another real number instead. To
- get the expected result you will need to call:
-
- (rationalize (inexact->exact <x>) (inexact->exact <y>))
-
- I'm indebted to Alan Bawden for allowing me to use his version of
- ``rationalize''.
-
- VSCM still lacks a real implementation of ``char-ready?''. This is
- due to the fact that ANSI C does not allow to implement it in a
- portable machine- and operating system-independent way.
-
- ______________
-
-
- I also want to thank Henry Cejtin for numerous suggestions and Greg Wilson
- for pushing me to include the coroutine interface.
-
-
- Princeton, March 23, 1993
- September 29, 1993
- November 18, 1993
-