Chicken (stylized as CHICKEN) is a programming language, specifically a compiler and interpreter which implement a dialect of the programming language Scheme, and which compiles Scheme source code to standard C. It is mostly R5RS compliant and offers many extensions to the standard.
Chicken's focus is quickly clear from its slogan: "A practical and portable Scheme system".
Scheme is well known for its use in computer science curricula and programming language experimentation, but it has seen little use in business and industry.
By compiling to an intermediate representation, in this case portable C (as do Gambit and Bigloo), programs written in Chicken can be compiled for common popular operating systems such as Linux, macOS, other Unix-like systems, Windows, Haiku, and mobile platforms iOS and Android.
Further, Baker's solution guarantees asymptotic tail recursive behavior, as required by the Scheme language standard.
[2] The core system has basic support for UTF-8 characters, however the string indexing and manipulation procedures are not UTF-8 aware.
[12] Initially, these eggs were developed in one central svn repository,[13] in which creating a tag would automatically cause a new version of the extension to become available for download.
Currently, eggs can be developed anywhere and under any version control system, while still maintaining semi-automatic release management when using most of the popular code hosting sites.
For all released eggs, the latest version is tested automatically as part of a continuous integration process.
A canonical test server exists,[15] where the core system and all eggs are tested daily against the most recent development version (to catch regressive bugs), and the most recent stable version (to ensure that everything works for users of the stable system).
Its foreign function interface supports converting back and forth between most built-in C types and corresponding Scheme objects.
The performance cost occurs because implicit renaming requires the macro-expander to retraverse the expressions two more times.
This scrutinizer does not allow cross-module flow analysis, so it can only be used to optimize code that's part of one compiling unit (or module).
[1] He came up with the name "CHICKEN" arbitrarily as the "first thing that came to my mind that day" thinking of a plastic toy of Feathers McGraw on his desk.