chicken - A Scheme-to-C translator

CHICKEN(1) General Commands Manual CHICKEN(1)


chicken — A Scheme-to-C translator


chicken [OPTION ...] [FILENAME ...]


chicken is a compiler and interpreter for the programming language Scheme supporting most of the features as described in the Revisedˆ5 Report on the Algorithmic Language Scheme. The chicken program is the basic Scheme-to-C translator used in this system. For a more convenient interface, see csc(1).

FILENAME should be a complete source file name with extension, or “-” for standard input. OPTION may be one of the following:

General options:


Display usage and exit.


Display compiler version and exit.


Print release number and exit.


Display information on compilation progress.

File and pathname options:

−output-file FILENAME

Specifies output-filename, default is “out.c”.

−include-path PATHNAME

Specifies alternative path for included files.


Write compiled file to stdout instead of file.

Language options:

−feature SYMBOL

Register feature identifier.

−no-feature SYMBOL

Disable built-in feature identifier.

Syntax related options:


Don’t preserve case of read symbols.

−keyword-style STYLE

Allow alternative keyword syntax (

prefix, suffix or none ).


Disables list delimiter synonyms.


Disables support for escaped symbols.


Disables the CHICKEN extensions to R5RS syntax.


Macros are made available at run-time.

−emit-import-library MODULE

Write compile-time module information into separate file.


Emit import-libraries for all defined modules.


Disable expansion of compiler-macros.

−module NAME

Wrap compiled code in module of the given name.


Always generate module registration code, even when import libraries are emitted.


Do not generate module registration code. Overrides −module-registration.

Translation options:


Do not use units ‘library’ and ‘eval’ by default.


Link extensions statically.


Stop compilation after macro-expansion.


Stop compilation after first analysis pass.

Debugging options:


Disable warnings.

−debug-level NUMBER

Set level of available debugging information.


Disable tracing information.


Executable emits profiling information.

−profile-name FILENAME

Name of the generated profile information file.


Executable emits profiling information in append mode.


Omit additional procedure-information.


Load additional type database.

−emit-types-file FILENAME

Write type-declaration information into file.

Optimization options:

−optimize-level NUMBER

Enable certain sets of optimization options.


Enable leaf routine optimization.


Standard procedures may be redefined.


Disable all safety checks.


Assume globals are only modified in current file.


Enable block-compilation.


Disable interrupts in compiled code.


Assume all numbers are fixnums.


Disables detection of stack-overflows.


Enable inlining.

−inline-limit LIMIT

Set inlining threshold.


Enable cross-module inlining.


Perform type-based specialization of primitive calls.

−emit-inline-file FILENAME

Generate file with globally inlinable procedures (

implies −inline −local ).

−consult-inline-file FILENAME

Explicitly load inline file.


Disable argument count checks.


Disable bound variable checks.


Disable procedure call checks.


Disable procedure call checks only for usual bindings.


Disable procedure call checks for toplevel bindings.


Assume variable do not change their type.


Combine groups of local procedures into dispatch loop.


Perform additional lightweight flow-analysis pass.

−unroll-limit LIMIT

Specifies inlining limit for self-recursive calls.

Configuration options:

−unit NAME

Compile file as a library unit.

−uses NAME

Declare library unit as used.

−heap-size NUMBER

Specifies heap-size of compiled executable.

−nursery NUMBER −stack-size NUMBER

Specifies nursery size of compiled executable.

−extend FILENAME

Load file before compilation commences.


Add expression to front of source file.

−postlude EXPRESSION

Add expression to end of source file.

−prologue FILENAME

Include file before main source file.

−epilogue FILENAME

Include file after main source file.


Compile as dynamically loadable code.

−require-extension NAME

Require and import extension NAME.

−emit-link-file FILENAME

Write a list of statically linked extensions to FILENAME, used for identifying the static objects that need to be linked to an executable.

Obscure options:

−debug MODES

Display debugging output for the given modes.


Do not generate implicit init- and exit code.


Emit prototypes for callbacks before foreign declarations.


Always emit import libraries, even when their contents haven’t changed. The default behaviour is to preserve existing import libraries.


Do not refer to repository for extensions.


Prefer the current directory when locating extensions.


The following environment variables change the behaviour of chicken:


Contains one or more pathnames where the compiler should additionally look for include-files, separated by ‘;’ characters.


Holds a string of default compiler options that should apply to every invocation of chicken.


The chicken utility exits 0 on success, and >0 if an error occurs.


chicken(1), chicken-install(1), chicken-uninstall(1)

More information can be found in the CHICKEN User’s Manual:




Submit bug reports by e-mail to [email protected] GNU Apr 26, 2017 CHICKEN(1)

Updated 2024-01-29 - |