CHICKEN_INCLUDE_PATH
Contains one or more pathnames where the compiler should additionally look for include-files, separated by ‘;’ characters.
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:
-help
Display usage and exit.
-version
Display compiler version and exit.
-release
Print release number and exit.
-verbose
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.
-to-stdout
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:
-case-insensitive
Don't preserve case of read symbols.
-keyword-style STYLE
Allow alternative keyword syntax (prefix, suffix or none).
-no-parentheses-synonyms
Disables list delimiter synonyms.
-r7rs-syntax
Disables the CHICKEN extensions to R7RS syntax.
-compile-syntax
Macros are made available at run-time.
-emit-import-library MODULE
Write compile-time module information into separate file.
-emit-all-import-libraries
Emit import-libraries for all defined modules.
-no-compiler-syntax
Disable expansion of compiler-macros.
-module NAME
Wrap compiled code in module of the given name.
-module-registration
Always generate module registration code, even when import libraries are emitted.
-no-module-registration
Do not generate module registration code. Overrides -module-registration.
Translation options:
-explicit-use
Do not use units ‘library’ and ‘eval’ by default.
-static
Link extensions statically.
-check-syntax
Stop compilation after macro-expansion.
-analyze-only
Stop compilation after first analysis pass.
Debugging options:
-no-warnings
Disable warnings.
-debug-level NUMBER
Set level of available debugging information.
-no-trace
Disable tracing information.
-profile
Executable emits profiling information.
-profile-name FILENAME
Name of the generated profile information file.
-accumulate-profile
Executable emits profiling information in append mode.
-no-lambda-info
Omit additional procedure-information.
-types FILENAME
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.
-optimize-leaf-routines
Enable leaf routine optimization.
-no-usual-integrations
Standard procedures may be redefined.
-unsafe
Disable all safety checks.
-local
Assume globals are only modified in current file.
-block
Enable block-compilation.
-disable-interrupts
Disable interrupts in compiled code.
-fixnum-arithmetic
Assume all numbers are fixnums.
-disable-stack-overflow-checks
Disables detection of stack-overflows.
-inline
Enable inlining.
-inline-limit LIMIT
Set inlining threshold.
-inline-global
Enable cross-module inlining.
-specialize
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.
-no-argc-checks
Disable argument count checks.
-no-bound-checks
Disable bound variable checks.
-no-procedure-checks
Disable procedure call checks.
-no-procedure-checks-for-usual-bindings
Disable procedure call checks only for usual bindings.
-no-procedure-checks-for-toplevel-bindings
Disable procedure call checks for toplevel bindings.
-strict-types
Assume variable do not change their type.
-lfa2
Perform additional lightweight flow-analysis pass.
-unroll-limit LIMIT
Specifies inlining limit for self-recursive calls.
-merge-reusable-closures
Enables closure reuse.
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.
-prelude EXPRESSION
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.
-dynamic
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.
-raw
Do not generate implicit init- and exit code.
-emit-external-prototypes-first
Emit prototypes for callbacks before foreign declarations.
-regenerate-import-libraries
Always emit import libraries, even when their contents haven't changed. The default behaviour is to preserve existing import libraries.
-ignore-repository
Do not refer to repository for extensions.
-setup-mode
Prefer the current directory when locating extensions.
The following environment variables change the behaviour of chicken:
CHICKEN_INCLUDE_PATH
Contains one or more pathnames where the compiler should additionally look for include-files, separated by ‘;’ characters.
CHICKEN_OPTIONS
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.
13 releases since Debian 3.0 (Woody); the text changed 8 times.
-accumulate-profile since Debian 11 (Bullseye);
-analyze-only since Debian 11 (Bullseye);
-block since Debian 11 (Bullseye);
-case-insensitive since Debian 11 (Bullseye);
-check-syntax since Debian 11 (Bullseye);
-compile-syntax since Debian 11 (Bullseye);
-consult-inline-file since Debian 11 (Bullseye);
-debug since Debian 11 (Bullseye);
-debug-level since Debian 11 (Bullseye);
-disable-interrupts since Debian 11 (Bullseye);
-disable-stack-overflow-checks since Debian 11 (Bullseye);
-dynamic since Debian 11 (Bullseye);
-emit-all-import-libraries since Debian 11 (Bullseye);
-emit-external-prototypes-first since Debian 11 (Bullseye);
-emit-import-library since Debian 11 (Bullseye);
-emit-inline-file since Debian 11 (Bullseye);
-emit-link-file since Debian 11 (Bullseye);
-emit-types-file since Debian 11 (Bullseye);
-epilogue since Debian 11 (Bullseye);
-explicit-use since Debian 11 (Bullseye);
-extend since Debian 11 (Bullseye);
-feature since Debian 11 (Bullseye);
-fixnum-arithmetic since Debian 11 (Bullseye);
-heap-size since Debian 11 (Bullseye);
-help since Debian 11 (Bullseye);
-ignore-repository since Debian 11 (Bullseye);
-include-path since Debian 11 (Bullseye);
-inline since Debian 11 (Bullseye);
-inline-global since Debian 11 (Bullseye);
-inline-limit since Debian 11 (Bullseye);
-keyword-style since Debian 11 (Bullseye);
-lfa2 since Debian 11 (Bullseye);
-local since Debian 11 (Bullseye);
-merge-reusable-closures since Arch Linux 2026-11-01;
-merge-shareable-closures since Arch Linux 2026-11-01;
-module since Debian 11 (Bullseye);
-module-registration since Debian 11 (Bullseye);
-no-argc-checks since Debian 11 (Bullseye);
-no-bound-checks since Debian 11 (Bullseye);
-no-compiler-syntax since Debian 11 (Bullseye);
-no-feature since Debian 11 (Bullseye);
-no-lambda-info since Debian 11 (Bullseye);
-no-module-registration since Debian 11 (Bullseye);
-no-parentheses-synonyms since Debian 11 (Bullseye);
-no-procedure-checks since Debian 11 (Bullseye);
-no-procedure-checks-for-toplevel-bindings since Debian 11 (Bullseye);
-no-procedure-checks-for-usual-bindings since Debian 11 (Bullseye);
-no-trace since Debian 11 (Bullseye);
-no-usual-integrations since Debian 11 (Bullseye);
-no-warnings since Debian 11 (Bullseye);
-nursery since Debian 11 (Bullseye);
-optimize-leaf-routines since Debian 11 (Bullseye);
-optimize-level since Debian 11 (Bullseye);
-output-file since Debian 11 (Bullseye);
-postlude since Debian 11 (Bullseye);
-prelude since Debian 11 (Bullseye);
-profile since Debian 11 (Bullseye);
-profile-name since Debian 11 (Bullseye);
-prologue since Debian 11 (Bullseye);
-r7rs-syntax since Arch Linux 2026-11-01;
-raw since Debian 11 (Bullseye);
-regenerate-import-libraries since Debian 11 (Bullseye);
-release since Debian 11 (Bullseye);
-require-extension since Debian 11 (Bullseye);
-setup-mode since Debian 11 (Bullseye);
-specialize since Debian 11 (Bullseye);
-stack-size since Debian 11 (Bullseye);
-static since Debian 11 (Bullseye);
-strict-types since Debian 11 (Bullseye);
-to-stdout since Debian 11 (Bullseye);
-types since Debian 11 (Bullseye);
-unit since Debian 11 (Bullseye);
-unroll-limit since Debian 11 (Bullseye);
-unsafe since Debian 11 (Bullseye);
-uses since Debian 11 (Bullseye);
-verbose since Debian 11 (Bullseye);
-version since Debian 11 (Bullseye).
-benchmark-mode until Debian 3.0 (Woody);
-case-sensitive until Debian 3.0 (Woody);
-check-imports until Debian 6.0 (Squeeze);
-clustering until Debian 13 (Trixie);
-compress-literals until Debian 4.0 (Etch);
-debug-calls until Debian 3.0 (Woody);
-debug-loops until Debian 3.0 (Woody);
-disable-c-syntax-checks until Debian 6.0 (Squeeze);
-disable-compiler-macros until Debian 6.0 (Squeeze);
-disable-warning until Debian 5.0 (Lenny);
-emit-debug-info until Debian 6.0 (Squeeze);
-emit-exports until Debian 5.0 (Lenny);
-expand-only until Debian 3.0 (Woody);
-extension until Debian 6.0 (Squeeze);
-ffi until Debian 4.0 (Etch);
-ffi-define until Debian 4.0 (Etch);
-ffi-include-path until Debian 4.0 (Etch);
-ffi-no-include until Debian 4.0 (Etch);
-ffi-parse until Debian 4.0 (Etch);
-hygienic until Debian 3.1 (Sarge);
-hygienic-at-run-time until Debian 3.1 (Sarge);
-import until Debian 6.0 (Squeeze);
-keep-shadowed-macros until Debian 6.0 (Squeeze);
-lambda-lift until Debian 6.0 (Squeeze);
-no-fancy-ports until Debian 3.0 (Woody);
-no-symbol-escape until Debian 13 (Trixie);
-no-winding-callcc until Debian 3.0 (Woody);
-optimize until Debian 3.0 (Woody);
-quiet until Debian 5.0 (Lenny);
-r5rs until Debian 3.1 (Sarge);
-r5rs-syntax until Debian 13 (Trixie);
-run-time-macros until Debian 6.0 (Squeeze);
-split until Debian 4.0 (Etch);
-split-level until Debian 4.0 (Etch);
-srfi-7 until Debian 3.1 (Sarge);
-strict until Debian 3.1 (Sarge);
-strict-letrec until Debian 3.1 (Sarge);
-strict-reader until Debian 3.1 (Sarge);
-strict-srfi-0 until Debian 3.1 (Sarge);
-unsafe-libraries until Debian 6.0 (Squeeze);
-usual-integrations until Debian 6.0 (Squeeze);
-write-dependencies until Debian 3.0 (Woody).