---
name: "chicken"
section: "1"
platform: "linux"
package: "chicken"
version: "6.0.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/chicken"
---

# 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)](/csc/1.md).

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

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

## 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/1.md), [chicken-install(1)](/chicken-install/1.md), [chicken-uninstall(1)](/chicken-uninstall/1.md)

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 *chicken-janitors@nongnu.org*
