GNU Smalltalk User's Guide
1.1 Command line arguments
GNU Smalltalk may be invoked via the following command:
gst [ flags ... ] [ file ... ]
When you first invoke GNU Smalltalk, it will attempt to see if any of the
kernel method definition files are newer than the last saved binary
image in the current directory (if there is one). If there is a newer
kernel method definition file, or if the binary image file (called
`gst.im') does not exist, a new binary image will be built by
loading in all the kernel method definition files, performing a full
garbage collection in order to compact the space in use, and then saving
the resulting data in a position independent format. Your first
invocation should look something like this:
"Major scavenging... done, used space = 51%"
GNU Smalltalk Ready
If you specify file, that file will be read and executed and
Smalltalk will exit when end of file is reached. If you specify more
than one file, each will be read and processed in turn. If you don't
specify file, standard input is read, and if the standard input is
a terminal, a prompt is issued. You may specify `-' for the name
of a file to invoke an explicit read from standard input; furthermore,
specifying `--' stops the interpretation of options so that every
argument that follows is considered a file name even if it begins with a
You can specify both short and long flags; for example, `--version'
is exactly the same as `-v', but is easier to remember. Short
flags may be specified one at a time, or in a group. A short flag or a
group of short flags always starts off with a single dash to indicate
that what follows is a flag or set of flags instead of a file name; a
long flag starts off with two consecutive dashes, without spaces between
In the current implementation the flags can be intermixed with file
names, but their effect is as if they were all specified first. The
various flags are interpreted as follows:
- `-a --smalltalk'
- Used to make arguments available to Smalltalk code. The C option parser
discards everything after the parameter including -a, while Smalltalk
code can get it sending the
arguments message to the
|| Options seen by GNU Smalltalk
|`-Via foo bar'
|`--verbose -aq -c '
|| `--verbose -q'
That should be clear.
- `-c --core-dump'
- When this flag is set and a fatal signal occurs, a core dump is produced
after an error message is printed. Normally, the backtrace is produced
and the system terminates without dumping core.
- `-d --user-declaration-trace'
- Declaration tracing prints the class name, the method name, and the byte
codes that the compiler is generating as it compiles methods. Only for
files that are named explicitly on the command line; kernel files that
are loaded automatically as part of rebuilding the image file do not
have their declarations traced.
- `-D --kernel-declaration-trace'
- Like the -d flag, but also includes declarations processed for the
- `-e --user-execution-trace'
- Prints the byte codes being executed as the interpreter operates. Only
works for those executions that occur after the kernel files have been
loaded and the image file dumped.
- `-E --kernel-declaration-trace'
- Like the -e flag, but includes all byte codes executed, whether they
occur during the loading of the kernel method definition files, or
during the loading and execution of user files.
- `-g --no-gc-messages'
- Suppress garbage collection messages.
- `-h --help'
- Prints out a brief summary of the command line syntax of GNU Smalltalk,
including the definitions of all of the option flags, and then exits.
- `-i --rebuild-image'
- Ignore the saved image file; always load from the kernel method
definition files. Setting this flag bypasses the normal checks for
kernel files newer than the image file, or the image file's version
stamp out of date with respect to the Smalltalk version. After the
kernel definitions have been loaded, a new image file will be saved.
- `-I file --image-file file'
- Use the image file named file as the image file to load.
Completely bypasses checking the file dates on the kernel files and
standard image file.
- `-l --log-changes'
- Produce a log of the compiled Smalltalk code to st-changes.st, in the
current working directory.
- `-L file --log-file file'
- Produce a log of the compiled Smalltalk code to the file named
- `-q --quiet --silent'
- Suppress the printing of execution information while GNU Smalltalk runs.
Messages about the beginning of execution or how many byte codes were
executed are completely suppressed when this flag is set.
- `-Q --no-messages'
- Suppress the printing of execution information and any other informative
message while GNU Smalltalk runs. Useful, for example, for stand-alone shell
programs such as CGI scripts.
- `-r --regression-test'
- Disables certain informative I/O; this is used by the regression testing
system and is probably not of interest to the general user.
- `-s --store-no-source'
- Usually, GNU Smalltalk stores the methods' source code as FileSegments for
files in the kernel directory, and as Strings for files outside it.
This behavior minimizes problems on recompile, because FileSegments
cannot be relied upon if the source file changes. However, storing
source code for big libraries is not useful, since the file-in source is
unlikely to change. There are two ways to override this behavior and
make GNU Smalltalk store everything loaded in a particular session as
FileSegments: one is to specify a directory relative to the kernel
directory, such as `/usr/local/smalltalk/kernel/../blox/Blox.st';
the other is to specify this option on the command line.
- `-S --snapshot'
- Save a snapshot after loading files from the command line. Of course
the snapshot is not saved if you include - (stdin) on the command line
and exit by typing Ctrl-C.
- `-v --version'
- Prints out the Smalltalk version number, then exits.
- `-V --verbose'
- Enables verbose mode. When verbose mode is on, various diagnostic
messages are printed (currently, only the name of each file as it's
- `-y --yacc-debug'
- Turns on parser debugging. Not typically used.