Starting Scheme48


Editor Interface

We recommend running Scheme 48 under Gnu Emacs using the cmuscheme48 command package. This is in the Scheme 48 distribution's emacs/ subdirectory. It is a variant of the "cmuscheme" library, which comes to us courtesy of Olin Shivers, formerly of CMU. You might want to put the following in your emacs init file (.emacs):

    (setq scheme-program-name "scheme48")
    (autoload 'run-scheme  "cmuscheme48" "Run an inferior Scheme process." t)

To make the autoload and (require ...) forms work, you will also need to put the directory containing cmuscheme and related files in your emacs load-path:

    (setq load-path (append load-path '("/emacs")))

For further documentation see emacs/cmuscheme48.el and emacs/comint.el.

Command line arguments

A few command line arguments are processed by the virtual machine as it starts up.

    scheme48 [-i image] [-h heapsize] [-o filename] [-s stacksize]
          [-a argument ...]

-i image
specifies a heap image file to resume. This defaults to a heap image that runs a Scheme command processor. Heap images are created by the ,dump and ,build commands, for which see below.

-h heapsize
specifies how much space should be reserved for allocation. Heapsize is in words (where one word = 4 bytes), and covers both semispaces, only one of which is in use at any given time (except during garbage collection). Cons cells are currently 3 words, so if you want to make sure you can allocate a million cons cells, you should specify -h 6000000 (actually somewhat more than this, to account for the initial heap image and breathing room).

-s stacksize
specifies how much space should be reserved for the continuation and environment stack. If this space is exhausted, continuations and environments are copied to the heap. stacksize is in words and defaults to 2500.

-o filename
This specifies an executable file in which foreign identifiers can be looked up for the foreign function interface. Filename should be the file that contains the scheme48vm executable image. See doc/external.txt.

-a argument ...
is only useful with images built using ,build. The arguments are passed as a list to the procedure specified in the ,build command. E.g.
        > ,build (lambda (a) (for-each display a) (newline) 0) foo.image
	> ,exit
	% scheme48vm -i foo.image -a mumble "foo x"
	mumblefoo x

The usual definition of the "s48" or "scheme48" command is actually a shell script that starts up the virtual machine with a -i argument specifying the development environment heap image, and a -o argument specifying the location of the virtual machine.


Ownership, Maintenance and Disclaimers

Scheme48 Manual Top Page

Envision Manual Top Page

Last modified