RScheme Overview

What is RScheme?

RScheme is an implementation of the Scheme language, with it's object-orientation approach adapted from the Dylan language.

Implementation Features

Standards Compliance

RScheme implements all of R4RS except transcript-on and transcript-off, and all of R5RS except define-syntax (RScheme still employs it's own the hygienic syntactic extension facility with analagous but not compatible metasyntax to R5RS's define-syntax).

Compliance with the revised reports on Scheme is a priority for RScheme, and we continue to work on trying to support R5RS's define-syntax metasyntax while preserving the rich compile-time dispatch available in RScheme's native syntactic extension mechanism. And once R6RS is released, compliance in RScheme is expected to be straightforward.

We also work continually to monitor to status and progress of various SRFIs (Scheme Requests for Implementation). We keep a running chart of RScheme/SRFI compatibility. One focus area for the upcoming 0.7.3.4 release is on improving SRFI coverage breadth and integration with the base system.

Portability

RScheme was designed so that the core system could be built with any ANSI standard-C compiler. It has been known to run on systems as diverse as Linux, NeXTSTEP, MacOS 8, Windows, QNX, and VxWorks.

Of course, some of the extension modules play funky tricks with the operating system and are, relatively speaking, not as portable. For example, the persistent object store installs SEGV handlers to notice when the application is reading or writing memory pages, requiring more than the usual introspection into operating system signal handlers. Most of the extension modules do work on popular variants of Unix.

C Code

Code in RScheme can be compiled to C, and the C can then compiled with a normal C compiler to generate machine code. By default, however, RScheme compiles to bytecodes which are interpreted by a (runtime) virtual machine. This ensures that compilation is fast and keeps code size down. In general, we recommend using the (default) bytecode code generation system, and only compiling your time-critical code to machine code. This allows a nice adjustment of space/time tradeoffs.

On some systems, compiling to C can even be done on-the-fly, with the resulting object code dynamically loaded back into the image for execution.

Extensions

RScheme goes beyond the basic Scheme language as defined in R4RS, adding several powerful extensions including:

Licensing

RScheme is an open-source implementation, meaning that it's source code is readily available and represents contributions from members of a broad community (in reality, it's a broad but somwhat small community). RScheme is freely redistributable and may be used to build commercial applications without any licensing issues.

Post feedback about this page... Last modified 2005-06-08 07:43:31 CDT (2.58e+03 d ago)