CHICKEN hackers guide
This document is intended to provide some guidance for those who want to work on the chicken compiler and core libraries.
Getting the sources
See the http://code.call-cc.org page for instructions about how to get the development version of CHICKEN.
Building
To build chicken, change into the source directory and follow the directions in the README file.
Some notes:
- every invocation of make must include the full set of parameters ("PLATFORM=..." etc.)
- if you change anything to makefiles or support scripts, make sure to run make confclean, so that a new configuration (chicken-config.h) is generated.
- it is possible to compile chicken without a preinstalled chicken by building the system from an official release tarball first. These tarballs contain the precompiled C sources and don't need a chicken executable. Once you have built a chicken program, you can use it in subsequent build by passing CHICKEN=<path-to-chicken-executable> to make.
- run make check occasionally.
- it is no problem to install different chicken versions all over the filesystem, provided each installation uses a different setting for the PREFIX parameter variable passed to make. Once installed, the executables will pick up the correct libraries.
Versions
There are several versions that identify a particular chicken installation:
- the "major version" (i.e. 3 in 3.0.0) - this version identifies which set of eggs is available via chicken-install.
- the "binary compatibility version" - the egg-repository for an installation is specific to that (eggs are installed in PREFIX/lib/chicken/<binaryversion>/), changing this version means all eggs have to be re-installed and are not binary compatible to previous chicken versions.
- the official chicken version (3.0.0 for example) - it is used in several places, use scripts/setversion -set <version> to update the version string in all files that need it.
Releases
Files added to the distribution tarball must be listed in the distribution/manifest file. You must add any files that are to distributed in that file.
For information on the current CHICKEN release policy, please see release-policy.
Documentation
The README should contain all required information to build the system, there is not a separate INSTALL file. Platform-specific information is kept at the end and should be reasonably up-to-date.
All user-visible changes between releases should be noted down in the NEWS file, to make it easy to see things to look out for or new features to explore.
The user's manual is kept in svnwiki format in manual/. The manual pages are a copy of the manual found at The User's Manual and should contain the complete documentation of everything implemented in this particular branch (or trunk) of the system you have checked out. Once a release is made, the changes from the manual/ directory should be merged back into the wiki proper (the wiki/ directory in the toplevel of the svn repository).
Please add all contributors and bug reporters to the Acknowledgements file in the manual. We should make sure contributors get the respect they deserve, unless someone explicitly doesn't want to get mentioned there.
Mailing lists
The chicken-hackers mailing list is the place to discuss implementation issues and subjects of hacking the core system.
chicken-users should be reserved for questions about CHICKEN in general and its extensions.
Finally, chicken-janitors collects daily maintenance information. Here automatic builds and post-commit egg uploads report problems or news to this list as well.