Optional Configuration - MIT/GNU Scheme 7.7.90+
Description: MIT/GNU Scheme 7.7.90+

Previous: Windows Installation, Up: Installation

### 1.3 Optional Configuration

As distributed, Scheme contains several large files. You might not need all of them, so this section will tell you what each is for so that you can decide if you want to delete some of them. Also, we will discuss the two different Scheme executables, which are each useful in different situations; you should read this to decide which is right for you.

The Scheme runtime environment and associated tools are normally stored in bands, which are large memory images stored in files (see World Images). Scheme requires at least one band to work properly. The Scheme distribution includes two bands. These bands are stored in the `lib/mit-scheme` directory on unix systems, and the `lib` directory on PC systems.

`runtime.com`
  The is the basic world image, and the smallest. It contains just the runtime files. This is the band that is chosen when Scheme is invoked with no special command-line options.
`all.com`
  This contains the runtime files, the native-code compiler, and Edwin. This band is chosen when either the `--compiler` or `--edwin` command-line options are supplied.

Depending on your needs, you may not need both of these files. For example, if you always want the full development environment, you might keep `all.com` and delete `runtime.com`. Remember that you must keep at least one of these files to use Scheme.

In addition to bands, Scheme is distributed with two executable programs: `scheme` (called `scheme.exe` on PC systems), and `bchscheme` (called `bchschem.exe` on PC systems). Normally you will need only one of these files.

The only difference between these two programs is in how they handle garbage collection. `scheme` allocates two memory heaps, and copies objects between the heaps to preserve them. This means that most of the time the other heap is occupying valuable memory but doesn't hold any interesting data. `bchscheme` allocates only one memory heap, creates a disk file during garbage collection, copies objects into the file, then copies them back into memory.

These programs provide you with some important performance trade-offs. If you have plenty of memory and want the best performance, use `scheme`. If you don't have enough memory, or if you want to use less memory and will accept slower performance, use `bchscheme`. One way to tell that you don't have enough memory is to run `scheme` for a while and see if your machine is paging during garbage collection.

You might consider trying to use `scheme` and letting the operating system's paging handle the lack of RAM. But usually you will find that using `bchscheme` without paging is much faster than using `scheme` with paging. Of course, if you are using `bchscheme` and you're still paging, the best solution is to install more RAM.