Commit | Line | Data |
---|---|---|
2732830a | 1 | This is a checklist for making Guile releases. |
251ca7ab JB |
2 | It's specific to the FSF's development environment; please don't put |
3 | it in the distribution. | |
2732830a | 4 | |
f8c9d497 JB |
5 | Maybe we should name Guile releases after entertaining poisons: |
6 | absinthe, etc. However, the first release containing the module | |
7 | system should be called Godot: "This is the one you've been waiting | |
8 | for." | |
f7677ff2 | 9 | |
0b2da99c | 10 | === Eventually: |
fbf0c8c7 | 11 | |
69b5f65a | 12 | * Deprecate `read-only-string?'. |
7e6b52f8 | 13 | |
04914986 DH |
14 | After signal handling and threading have been fixed: |
15 | - remove the code corresponding to GUILE_OLD_ASYNC_CLICK and the corresponding | |
16 | GUILE_OLD_ASYNC_CLICK macro. | |
17 | ||
0b2da99c RB |
18 | === In release 1.6.0: |
19 | ||
c83cf54e MV |
20 | - Make sure that the deprecation mechanism explained in INSTALL and |
21 | README is completed and works. | |
22 | ||
0b2da99c RB |
23 | === In release 1.8.0: |
24 | ||
2fc933fe MV |
25 | - remove deprecated subr and gsubr functions |
26 | in procs.h, procs.c: scm_make_subr, scm_make_subr_opt, | |
27 | scm_make_subr_with_generic, | |
28 | in gsubr.h, gsubr.c: scm_make_gsubr, scm_make_gsubr_with_generic. | |
29 | ||
30 | - remove deprecated C interface to modules | |
31 | in modules.h, modules.c: | |
32 | root_module_lookup_closure, scm_sym_app, scm_sym_modules, | |
33 | module_prefix, make_modules_in_var, beautify_user_module_x_var, | |
34 | scm_the_root_module, scm_make_module, scm_ensure_user_module, | |
35 | scm_load_scheme_module | |
36 | ||
f3f9dcbc MV |
37 | - remove vcell and obarray support. |
38 | Remove all code bracketed by `#if SCM_ENABLE_VCELLS'. | |
2fc933fe | 39 | Remove SCM_ENABLE_VCELLS itself. |
f3f9dcbc MV |
40 | Also remove `variable-set-name-hint' completely. |
41 | ||
0b2da99c RB |
42 | - remove compatability module (ice-9 and-let*). It |
43 | has been replaced by (ice-9 and-let-star) and/or (srfi srfi-2). | |
44 | ||
8c2c9967 MV |
45 | - remove support for autoloading compiled-code modules: |
46 | try-module-linked | |
47 | try-module-dynamic-link | |
48 | init-dynamic-module | |
49 | scm_register_module_xxx | |
50 | etc. | |
7e6b52f8 MD |
51 | - remove deprecated variables: |
52 | scm_top_level_lookup_closure_var | |
2fc933fe | 53 | scm_scm_system_transformer |
7e6b52f8 MD |
54 | - remove deprecated functions: |
55 | eval.c: scm_eval2, scm_eval_3 | |
56 | load.c: scm_read_and_eval_x | |
2f6fb7c5 | 57 | smob.c: scm_make_smob_type_mfpe, scm_set_smob_mfpe |
5d2b97cd | 58 | gc.c: scm_remember |
be54b15d | 59 | string.c: scm_makstr |
7e6b52f8 | 60 | - remove deprecated procedures: |
5cd06d5e DH |
61 | boot-9.scm: eval-in-module, id, -1+, return-it, string-character-length, |
62 | flags | |
b63a956d DH |
63 | - remove deprecated macros: SCM_OUTOFRANGE, SCM_NALLOC, SCM_HUP_SIGNAL, |
64 | SCM_INT_SIGNAL, SCM_FPE_SIGNAL, SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, | |
65 | SCM_ALRM_SIGNAL, SCM_GC_SIGNAL, SCM_TICK_SIGNAL, SCM_SIG_ORD, | |
d1ca2c64 | 66 | SCM_ORD_SIG, SCM_NUM_SIGS, SCM_SLOPPY_STRINGP, SCM_VALIDATE_STRINGORSUBSTR, |
a6d9e5ab DH |
67 | SCM_FREEP, SCM_NFREEP, SCM_CHARS, SCM_UCHARS, SCM_VALIDATE_ROSTRING, |
68 | SCM_VALIDATE_ROSTRING_COPY, SCM_VALIDATE_NULLORROSTRING_COPY, SCM_ROLENGTH, | |
69 | SCM_LENGTH, SCM_HUGE_LENGTH, SCM_SUBSTRP, SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, | |
34f0f2b8 | 70 | SCM_COERCE_SUBSTR, SCM_ROSTRINGP, SCM_RWSTRINGP, SCM_VALIDATE_RWSTRING, |
fd336365 | 71 | SCM_ROCHARS, SCM_ROUCHARS, SCM_SETLENGTH, SCM_SETCHARS, SCM_LENGTH_MAX, |
c9c01b11 | 72 | SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16, SCM_GCCDR, |
b3fcac34 DH |
73 | SCM_SUBR_DOC, SCM_OPDIRP, SCM_VALIDATE_OPDIR, SCM_WTA, RETURN_SCM_WTA, |
74 | SCM_WNA, SCM_FUNC_NAME, SCM_VALIDATE_NUMBER_COPY, | |
61045190 | 75 | SCM_VALIDATE_NUMBER_DEF_COPY, SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP, |
a9d861e3 MD |
76 | SCM_SETAND_CDR, SCM_SETOR_CDR, SCM_SETAND_CAR, SCM_SETOR_CAR, |
77 | SCM_ARRAY_CONTIGUOUS | |
1b9be268 | 78 | - remove scm_vector_set_length_x |
cc4feeca DH |
79 | - remove function scm_call_catching_errors |
80 | (replaced by catch functions from throw.[ch]) | |
db36bd50 | 81 | - remove support for "#&" reader syntax in (ice-9 optargs). |
69b5f65a MD |
82 | - remove scm_make_shared_substring |
83 | - remove scm_read_only_string_p | |
28b06554 DH |
84 | - remove scm_strhash |
85 | - remove scm_tc7_ssymbol | |
86 | - remove scm_tc7_msymbol | |
87 | - remove scm_tcs_symbols | |
daa6ba18 | 88 | - remove scm_sloppy_memq, scm_sloppy_memv, scm_sloppy_member |
0df43a35 GH |
89 | - consider removing the automatic loading of (ice-9 rdelim) when guile |
90 | starts up. This would be a brave move, since a lot of code will | |
91 | assume that read-line is available by default. However it would make | |
92 | it easier to use alternative implementations of this module, e.g., a | |
93 | strictly scsh-compatible version which uses multiple values. For | |
94 | interactive use it would be easy to load the module in ~/.guile. | |
95 | - remove scm_close_all_ports_except | |
1f3908c4 | 96 | - remove scm_strprint_obj |
8dea8611 | 97 | - remove SCM_CONST_LONG |
b3fcac34 | 98 | - remove scm_wta |
b63a956d | 99 | |
ed8c8636 MD |
100 | Modules sort.c and random.c should be factored out into separate |
101 | modules (but still be distributed with guile-core) when we get a new | |
102 | module system. | |
103 | ||
cc914709 JB |
104 | Platforms for test builds: |
105 | SunOS (gcc and pcc) --- galapas.ai.mit.edu | |
106 | Solaris (gcc and SUN cc) --- saturn.ai.mit.edu | |
107 | NetBSD (gcc) --- repo-man.ai.mit.edu (use /home/repo/jimb) | |
108 | HP/UX (gcc, HP cc) --- nutrimat.gnu.ai.mit.edu | |
109 | ||
422b92d2 | 110 | These gentlemen have kindly offered to do pre-release testing: |
99ac53b9 MD |
111 | |
112 | Tom Tromey <tromey@cygnus.com>: | |
113 | ||
114 | alphaev5-unknown-linux-gnu | |
115 | hppa1.1-hp-hpux10.20 | |
116 | hppa1.1-hp-hpux11.00 | |
117 | mips-sgi-irix5.3 | |
118 | powerpc-ibm-aix4.2.0.0 | |
119 | powerpc-unknown-linux-gnu | |
120 | sparc-sun-solaris2.6 | |
121 | i686-pc-linux-gnu | |
122 | mips-sgi-irix6.3 | |
123 | sparc-sun-sunos4.1.4 | |
124 | ||
125 | Ian Grant <I.A.N.Grant@damtp.cam.ac.uk>: | |
126 | ||
127 | alpha-dec-osf4.0e | |
128 | ||
129 | Julian Satchell <satchell@merry.dra.hmg.gb>: | |
130 | ||
131 | dec-mips-ultrix | |
cc914709 | 132 | |
d4c83f63 JB |
133 | Perry Metzger <perry@piermont.com> |
134 | ||
135 | NetBSD | |
136 | ||
3f686b10 JB |
137 | |
138 | Release Checklists =================================================== | |
139 | ||
140 | There are basically two phases to doing a release: | |
141 | ||
142 | * "SPIFFING": Updating NEWS, README, INSTALL. Running tests. Getting | |
143 | people to try builds on various machines. Getting everything | |
144 | straightened up. | |
145 | ||
146 | * "PUNTING": Updating the version numbers. Tagging the sources. Asking | |
147 | the FSF to put the disty on ftp.gnu.org. Posting announcements. | |
148 | ||
149 | The "Spiffing" phase you might go through several times as you | |
150 | discover problems. The "Punting" phase you do only once. | |
151 | ||
152 | ||
153 | Spiffing checklist: | |
154 | ||
155 | * Do a `cvs update -A', to get rid of any sticky tags in your working | |
156 | directory. | |
157 | * Check for files that have changed a lot, but do not have up-to-date | |
fba33ff1 | 158 | copyright notices. This can be as simple as doing: |
341f78c9 | 159 | grep 'Copyright' * | grep -v 1999 |
fba33ff1 | 160 | and looking for files you know you've worked on a lot. |
a5eebee7 | 161 | * Make sure NEWS, INSTALL, AUTHORS and THANKS and the docs are up to date: |
3f686b10 JB |
162 | + Scan the ChangeLogs for user-visible changes, marked with an asterisk |
163 | at the left margin. | |
164 | + Update NEWS and the Texinfo documentation as appropriate. | |
165 | + Remove the user-visible markers from the log entries once they're | |
166 | documented. | |
167 | + Check for any [[incomplete]] sections of NEWS. | |
168 | + Fact-check INSTALL. | |
a5eebee7 | 169 | + Make sure AUTHORS and THANKS are up-to-date. |
e4445210 | 170 | * Make sure the downloading addresses and filenames in README are |
340a8770 | 171 | current. (But don't bump the version number yet. We do that below.) |
3f686b10 | 172 | * Check that the versions of aclocal, automake, autoconf, and autoheader |
f43aac9a | 173 | in your PATH match those given in HACKING. Note that the `make |
3f686b10 JB |
174 | dist' process always invokes these tools, even when all the |
175 | generated files are up to date. | |
176 | * Rebuild all generated files in the source tree: | |
177 | + Install the .m4 files where aclocal will find them. | |
178 | + Run aclocal. | |
3f686b10 JB |
179 | + Run autoconf. |
180 | + Run autoheader. | |
14a7a25d | 181 | + Run automake. |
3f686b10 | 182 | * Verify that Guile builds and runs in your working directory. |
f43aac9a | 183 | * Run the test suite, in guile-core/test-suite. |
3f686b10 JB |
184 | * Commit all changes to the CVS repository. |
185 | * Build a test distribution. | |
186 | + BEFORE doing 'make dist', configure the source tree for build | |
9a8a1e8a MD |
187 | in the same tree with configuration options |
188 | --enable-maintainer-mode --enable-debug-malloc --with-threads. | |
24e720c8 JB |
189 | + Make sure that readline was enabled correctly. |
190 | + Build the tree. | |
191 | (If the above steps are not done, the dependencies won't be properly | |
192 | included in the generated Makefile.in files.) | |
3f686b10 | 193 | + Then do 'make dist'. |
b5074b23 MD |
194 | + Check that the dependencies in guile-readline/Makefile look OK. |
195 | (We currently use a kludge which edits the dependencies generated | |
196 | by automake so that Guile can be built in a directory separate | |
197 | from the source tree also with non-GNU make programs.) | |
3f686b10 JB |
198 | * Give the test disty to various people to try. Here's what you should do: |
199 | + Unset GUILE_LOAD_PATH. | |
200 | + Remove automake and autoconf from your path, or turn off their | |
201 | execute bits, or something. (Users must be able to build the | |
202 | disty without installing those tools.) | |
203 | + Configure, make, and install. | |
204 | + Make sure LD_LIBRARY_PATH doesn't include anything unnecessary. | |
205 | + Run the test suite on the installed version. | |
206 | + You might try the example code in the doc directory. | |
207 | ||
208 | Once you've got a disty that seems pretty solid: | |
209 | ||
210 | * Choose new interface numbers for shared libraries. | |
211 | * Update the version numbers in GUILE-VERSION and README. (There are | |
212 | many places in README that need updating!) The Guile version | |
213 | number should have one of the following forms: | |
214 | N.M - a major release | |
215 | N.M.L, where L is even - a minor release | |
216 | N.M.L, where L is odd - sources from CVS or nightly snapshot | |
217 | * Reformat the names in THANKS. | |
218 | * Do a `cvs update -A' of the whole tree, to look for any stray | |
219 | uncommitted or accidental changes. | |
220 | * Commit your changes. | |
221 | * Make one last test distribution. | |
222 | ||
223 | Punting checklist: | |
224 | ||
225 | * Add "Guile N.M released." entry to the top-level ChangeLog, and commit it. | |
226 | * Tag the entire source tree with a tag of the form "release_N_M" | |
227 | or "release_N_M_L". | |
bab4e1cc | 228 | * Do a 'make dist'. |
3f686b10 JB |
229 | * Put the distribution up for FTP somewhere, and send mail to |
230 | ftp-upload@gnu.org, asking them to put it on prep. | |
231 | * Send an announcement message to gnu-announce@gnu.org. Put a brief | |
232 | summary of the changes in this release first, then "Obtaining | |
233 | Guile", "Thanks", "About This Distribution," and "Nightly | |
234 | Snapshots." If I remember correctly, the moderator will delay it | |
235 | until the distribution appears on ftp.gnu.org. The announcement | |
236 | text should be mostly taken from Guile's README file. | |
237 | * Notify freshmeat.net, although they're probably watching anyway. | |
238 | (They got the 1.3 release just fine.) I have no idea if | |
239 | www.bowerbird.com.au will be something anyone refers to, but Guile | |
240 | does have an entry there. | |
241 | * Tweak the version numbers in GUILE-VERSION, and README to indicate | |
242 | that the sources are a snapshot again. Snapshots should have | |
243 | version numbers of the form "N.M.L", where L is odd. | |
244 | * Start a new section of the NEWS file. | |
245 | * Start a new THANKS file. |