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

Last change on this file since 9202 was 9202, checked in by felix winkelmann, 12 years ago

added beginning of hackers guide

  • 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 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 inoking {{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 from [[]] via {{chicken-setup}}.
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 automatically 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.
53=== Documentation
55The {{README}} should contain all required information to build the system, there is
56not separate INSTALL file. At the end platform-specific information is kept and
57should be reasonably up to date.
59All user-visible changes between releases should be noted down in the {{NEWS}}
60file, to make it easy to see things to look out for or new features to explore.
62The user's manual is kept in svnwiki format in {{manual/}}. The manual pages
63are a copy of the manual found at [[ User's Manual]]
64and should contain the complete documentation of everything implemented
65in this particular branch (or trunk) of the system you have checked out.
66Once a release is made, the changes from the {{manual/}} directory should
67be merged back into the wiki proper (the {{wiki/}} directory in the
68toplevel of the svn repository).
70Please add all contributors and bug reporters to the {{Acknowledgements}}
71file in the manual. We should make sure contributors get the respect they
72deserve, unless someone explicitly doesn't want to get mentioned there.
74=== Mailing lists
78mailing list is the place to discuss implementation issues and
79subjects of hacking the core system.
82should be reserved for questions about CHICKEN in general and its
87collects daily maintenance information. Here bug reports
88generated by {{chicken-bug(1)}} are mailed to and the automatic
89builds and post-commit egg uploads report problems or news to this list
90as well.
Note: See TracBrowser for help on using the repository browser.