STKLOS(1)

NAME
stklos - An efficient Scheme System providing a powerful Object System

SYNOPSYS
stklos [OPTION ...] [ARGUMENT ... ]

DESCRIPTION
STklos is a free Scheme System (nearly) conforming to R7RS. The aim of this implementation is to be fast as well as light. The implementation is based on an ad-hoc Virtual Machine.

The salient points of STklos are:

    - an efficient and powerful object system based on CLOS providing:

    + Multiple Inheritance,

    + Generic Functions,

    + Multi-methods

    + an efficient MOP (Meta Object Protocol)

    - a simple to use module system

    - implementing the full tower of numbers defined in R7RS

    - an easy connection to the GTK+ toolkit

    - Perl compatible regular expressions thanks to the PCRE package

    - properly implemented tail recursive calls

OPTIONS
Here are the options available in the version @VERSION@ of stklos.

-l file, --load=file
    load 'file' before going interactive

-f file, --file=file
    use 'file' as program

-I dir
    prepend 'dir' to the directory path. This option can be used several times.

-A dir
    append 'dir' to the directory path. This option can be used several times.

-e sexpr, --execute=sexpr
    evaluate the given sexpr and exit

-b file, --boot-file=file
    use 'file' to boot the system instead of the default one

-D directory, --conf-dir=directory
    use the given directory to store the various configuration files. This directory is also used to store the packages installed with the stklos-pkg(1) command. Note that the shell variable STKLOS_CONFDIR can also be used to set this directory (see below).

-q, --no-init-file
    quiet: do not load the user init file.

-Q, --no-startup-message
    quiet: do not show the startup message.

-i, --interactive
    be interactive, even if the command finds it is not the case. This option is generally useful when used inside emacs since it permits to display the REPL prompts.

-n, --no-line-editor
    tell the REPL to not use the line editor even if GNU readline or BSD libedit libraries are found. This permit to use an external tool such as rlwrap(1) instead of the internal line editor support.

-d, --debug
    insert information to ease debugging (e.g, line numbers, signaling usage of undefined symbols, ...). Can be used multiple times to increase the debugging level;

-s, --stack-size=n
    use a stack of n cells.

--case-insensitive
    be case insensitive as in R5RS.

-c, --case-sensitive
    be case sensitive as in R7RS. This is the default value. This option (and the previous one) permits to change the default behavior.

-u yes|no, --utf8-encoding=yes|no
    At initialisation time, STklos infers the current locale from the LC_ALL variable. From the character encoding used in the selected locale, STklos determines if UTF-8 should be used for representing strings. The --utf8-encoding permits to force the encoding used. Note that if LC_ALL is unset and this option is not used, UTF-8 encoding will be used.

-F, --compiler-flags=list
    permits to set compiler flags to the to the values given in list. Boolean flags must begin by a '+' or a '-' character to indicate if the flag is set or unset. Valued flags, must be followed by a '=' and the value given to the flag. Flags are separated by the ',' character. For instance, the following list -F=+line-info,-time-display,unroll-iterations=5 sets the line-info option, unsets the time-display option and initializes the unroll-iteration to 5. The following flags can be used with this option:

    - line-info insert line numbers in the generated file. Setting this flag is equivalent to the -l option. This flag uses the parameter compiler:gen-line-number.

    - show-instructions can be used to insert the textual instructions into compiled files. This flag uses the parameter compiler:show-assembly-code.

    - time-display can be used to display or not the time used to compile a file. This flag uses the parameter compiler:time-display.

    - keep-formals can be used to control if formal arguments are stored in user procedures. This flag uses the parameter compiler:keep-formal.

    - keep-source can be used to control if the source code is stored in user procedures. This flag uses the parameter compiler:keep-source.

    - inline-usuals can be used to control if the usual functions are inlined in produced code. This flag uses the parameter compiler:inline-common-functions.

    - source-rewrite can be used to control if the compiler tries to rewrite/simplify source code before compiling it. This flag uses the parameter compiler:source-rewrite.

    - unroll-iterations can be used to set the number of iterations to be unrolled in loops. This flag uses the parameter compiler:unroll-iterations and its default value is 4.

    - peephole-optimizer can be used to activate or deactivate the peephole optimizer during compilation. The peephole optimizer is used to change a succession of instructions by another set of instructions that has better performance. This flag uses the parameter compiler:peehole-optimizer. By default, the peephole optimizer is activated.

-v, --version
    print program version and exit.

-V  print detailed program version and information in machine-readable format, as per SRFI-176, and exit.

-h, --help
    print this help and exit.

--  This special option signals the end of the stklos command. The arguments placed after this option are taken as program arguments, even if they start with a "-" character.

NOTES
Default case sensitivity depends on the way STklos is built.

ENVIRONMENT VARIABLES

STKLOS_LOAD_PATH
    This is a colon-separated list of directories in which stklos looks for loading files. It is used by functions such as load or try-load.

STKLOS_FRAMES
    This variable must contains an integer which indicates the number of frames printed on an error. Use the value 0 for an unlimited back-trace.

STKLOS_CONFDIR
    This variable can be used to designate the directory used by stklos to store its configuration or packages files. If not set, the default stklos configuration directory is by default ${XDG_CONFIG_HOME}/stklos (or ~/.config/stklos/ if XDG_CONFIG_HOME is unset).

FILES

<stklos-conf-dir>/stklosrc
    This file is the user init file which is loaded when stklos starts. Use the -q to avoid the loading of this file.

SEE ALSO
stklos-config(1), stklos-compile(1), stklos-pkg(1)

The full documentation for stklos is available at http://www.stklos.net/documentation.html