source: project/wiki/chicken-hackers-guide @ 15382

Last change on this file since 15382 was 14260, checked in by felix winkelmann, 11 years ago

updates for chicken 4

  • Property svn:executable set to *
File size: 4.7 KB
2[[tags: internal]]
4== Chicken hackers guide
6This document is intended to provide some guidance for those who want
7to work on the chicken compiler and core libraries.
9=== Getting the sources
11The current trunk can be checked out with [[|subversion]]
12from [[]].
14  Username: anonymous
15  Password: <empty>
17=== Building
19To build chicken, change into the source directory and follow the directions
20in the [[|README]] file.
22Some notes:
24* every invocation of make must include the full set of parameters ("PLATFORM=..." etc.)
25* 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.
26* it is possible to compile chicken without a preinstalled chicken by invoking {{make bootstrap}}, which extracts a set of precompiled C sources from a tarball, but this should only been done once, or if you have broken your {{chicken}} executable and have no other installed. Passing {{CHICKEN=<path-to-chicken-executable>}} to {{make}} will use the Scheme compiler given instead of the one found in the PATH.
27* run {{make check}} occasionally.
28* 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.
30=== Versions
32There are several versions that identify a particular chicken installation:
34* the "major version" (i.e. {{3}} in {{3.0.0}}) - this version identifies which set of eggs is available via {{chicken-install}}.
35* the subversion revision number - it is calculated via a script ({{}} durng the build.
36* 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.
37* 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.
39=== Releases
41Currently we have several branches in the toplevel [[|chicken]] svn directory:
43; trunk : here is where daily development takes place
44; prerelease : a staging branch to hold a certain version shortly before a final release
45; release : the code here is tarred and pushed to [[]]
47It is recommended to use private branches for personal hacking and merge changes into trunk
48after informing the other core developers.
50Files added to the distribution tarball must be listed in the {{distribution/manifest}} file.
51You must add any files that are to distributed in that file.
53For information on the current Chicken release policy, please see [[release-policy]].
54=== Documentation
56The {{README}} should contain all required information to build the system, there is
57not separate INSTALL file. At the end platform-specific information is kept and
58should be reasonably up to date.
60All user-visible changes between releases should be noted down in the {{NEWS}}
61file, to make it easy to see things to look out for or new features to explore.
63The user's manual is kept in svnwiki format in {{manual/}}. The manual pages
64are a copy of the manual found at [[ User's Manual]]
65and should contain the complete documentation of everything implemented
66in this particular branch (or trunk) of the system you have checked out.
67Once a release is made, the changes from the {{manual/}} directory should
68be merged back into the wiki proper (the {{wiki/}} directory in the
69toplevel of the svn repository).
71Please add all contributors and bug reporters to the {{Acknowledgements}}
72file in the manual. We should make sure contributors get the respect they
73deserve, unless someone explicitly doesn't want to get mentioned there.
75=== Mailing lists
79mailing list is the place to discuss implementation issues and
80subjects of hacking the core system.
83should be reserved for questions about CHICKEN in general and its
88collects daily maintenance information. Here bug reports
89generated by {{chicken-bug(1)}} are mailed to and the automatic
90builds and post-commit egg uploads report problems or news to this list
91as well.
Note: See TracBrowser for help on using the repository browser.