Reference

chicken(1)

A Scheme-to-C translator

NAME

chicken – A Scheme-to-C translator

SYNOPSIS

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

DESCRIPTION

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.

-merge-shareable-closures

Enables closure sharing.

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.

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.

ENVIRONMENT

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.

EXIT STATUS

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

SEE ALSO

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

More information can be found in the CHICKEN User's Manual: http://wiki.call-cc.org/manual/index.

AUTHORS

The CHICKEN Team

BUGS

Submit bug reports by e-mail to [email protected]

History

-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).