The purpose of this patch is to make guile's internal memoizers
[bpt/guile.git] / libguile / ChangeLog
CommitLineData
3b88ed2a
DH
12003-05-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
2
3 The purpose of this patch is to make guile's internal memoizers
4 distinguishable from memoizing macros created on the scheme level
5 or from user provided primitive memoizing macros. The reason is,
6 that the internal memoizers are the only ones that are allowed to
7 transform their scheme input into memoizer byte code, while all
8 other memoizing macros may only transform scheme code into new
9 scheme code.
10
11 To achieve this, a new macro type 'builtin-macro!' is introduced.
12 Currently, 'builtin-macro!'s are handled as memoizing macros, but
13 this will change when the memoizer and executor are separated.
14
15 * macros.[ch] (scm_i_makbimacro): New.
16
17 * macros.h (SCM_BUILTIN_MACRO_P): New.
18
19 * macros.c (macro_print, scm_macro_type): Support builtin-macro!s.
20
21 * eval.c, goops.c: All of guile's primitive memoizing macros are
22 primitive builtin-macros now.
23
24 * eval.c (scm_macroexp, SCM_CEVAL): Make sure the primitive
25 builtin-macros are handled equally to memoizing macros.
26
b0780eb1
MV
272003-05-04 Marius Vollmer <mvo@zagadka.de>
28
29 * throw.c (scm_ithrow): Remove "asm volatile" hack. It used to
30 work around a bug in GCC 2.95.2 but is now a bug in itself.
31
1cbf4fe9
MV
322003-05-02 Marius Vollmer <mvo@zagadka.de>
33
34 * deprecated.h (scm_rstate, scm_rng, SCM_SLOPPY_CONSP,
35 SCM_SLOPPY_NCONSP, scm_tc7_ssymbol, scm_tc7_msymbol,
36 scm_tcs_symbols): New.
37
1a61d41b
MV
382003-04-30 Marius Vollmer <marius.vollmer@uni-dortmund.de>
39
096ecbaf
MV
40 * deprecated.h, deprecated.c (scm_protect_object,
41 scm_unprotect_object, SCM_SETAND_CAR, SCM_SETOR_CAR,
42 SCM_SET_AND_CDR, SCM_SET_OR_CDR, SCM_FREEP, SCM_NFREEP,
43 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
44 SCM_GCCDR, scm_remember, scm_the_root_module, scm_make_module,
45 scm_ensure_user_module, scm_load_scheme_module, scm_port,
46 scm_ptob_descriptor, scm_port_rw_active,
47 scm_close_all_ports_except): New.
48
1a61d41b
MV
49 * ports.c (scm_c_port_for_each): New function, mostly copied from
50 scm_port_for_each.
51 (scm_port_for_each): Reimplemented using scm_c_port_for_each.
52 * ports.h (scm_c_port_for_each): New prototype.
53
c8e1d354
MD
542003-04-28 Mikael Djurfeldt <djurfeldt@nada.kth.se>
55
56 * eval.c (scm_m_atdispatch): Removed until actually needed. (This
57 macro was introduced in anticipation of GOOPS method compilation
58 code.)
59
60 * goops.c: Removed binding of @dispatch.
61
a4aa2134
DH
622003-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
63
64 * eval.c, goops.c (@dispatch, @slot-ref, @slot-set!): Move the
65 instructions that bind the macros on the scheme level back to
66 goops.c in order to make sure again that the bindings go into the
67 (oop goops) module and are not visible from the outside.
68
9fbee57e
DH
692003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
70
71 * eval.c: Non functional change: Separated R5RS and non-R5RS
72 macros into different sections of the file and ordered the
73 memoizers alphabetically.
74
12841895
DH
752003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
76
77 * eval.c (scm_ilookup): Rewritten to improve readability.
78
6a3f13f0
DH
792003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
80
81 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
82 Partially reverted patch from 2003-04-23 in oder to find a better
83 compromise between readability and debuggability.
84
b0c5d67b
DH
852003-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
86
87 * eval.c, eval.h, goops.c, goops.h (scm_m_atslot_ref,
88 scm_m_atslot_set_x, scm_m_atdispatch): Move the declarations and
89 definitions of the special goops memoizers from goops.[ch] to
90 eval.[ch]. Hmm... it seems that scm_m_atdispatch is not used
91 throughout guile.
92
b9ad392e
MD
932003-04-24 Mikael Djurfeldt <mdj@kvast.blakulla.net>
94
95 * ports.c, ports.h (scm_i_port_table_mutex): New mutex.
96
97 * fports.c (scm_evict_ports): Lock/unlock scm_i_port_table_mutex.
98
99 * ports.c (scm_close_port, scm_flush_all_ports): Ditto.
100
101 * ioext.c (scm_fdes_to_ports): Ditto.
102
103 * vports.c (scm_make_soft_port): Changed SCM_DEFER/ALLOW_INTS into
104 lock/unlock scm_i_port_table_mutex.
105
106 * strports.c (scm_mkstrport): Ditto.
107
108 * ports.c (scm_void_port, scm_port_for_each): Ditto.
109
110 * fports.c (scm_fdes_to_port): Ditto.
111
d0b07b5d
DH
1122003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
113
114 This set of patches contains no functional changes, only debatable
115 minor stylistic ones. Still, in order to prepare a patch between
116 my local copy and the CVS version, I decided to submit the changes
117 below. Then, the patch will hopefully only contain relevant
118 modifications :-)
119
120 * eval.c (iqq): Added const specifier.
121
122 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
123 Use NULL instead of 0 to indicate that a pointer is returned.
124 Removed some misleading 'fall through' comments.
125
126 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
127 Split up long expressions into smaller ones to be more debugging
128 friendly.
129
a98e8e98
DH
1302003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
131
132 * eval.h (SCM_ENTER_FRAME_HDLR, SCM_APPLY_FRAME_HDLR,
133 SCM_EXIT_FRAME_HDLR): Use SCM_PACK to convert data to a SCM value
134 rather than casting to SCM.
135
c178c3a6
DH
1362003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
137
138 * sort.c, pairs.h: Removed unnecessary includes.
139
d339981a
DH
1402003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
141
142 * sort.c: Replaced hand-made trampline code by the new official
143 mechanism from eval.c. This fixes a segfault in the new test file
144 sort.test.
145
146 (quicksort, compare_function, scm_restricted_vector_sort_x,
147 scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
148 scm_merge_list_step, scm_sort_x, scm_sort, scm_merge_vector_x,
149 scm_merge_vector_step, scm_stable_sort_x, scm_stable_sort,
150 scm_sort_list_x, scm_sort_list): Use trampoline mechanism from
151 eval.c.
152
153 (subr2less, lsubrless, closureless, applyless, scm_cmp_function,
154 cmp_fun_t): Removed.
155
156 (compare_function): Added.
157
158 * sort.c (quicksort, SWAP, stack_node): Replaced pointer
159 arithmetics with index arithmetics. Changed quicksort to work on
160 an array of SCM values instead of an array of characters. Avoid
161 bytewise copying of SCM elements. Avoid allocating memory on the
162 stack with alloca. Fixed some comments.
163
821f18a4
DH
1642003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
165
166 * eval.c (EXTEND_ENV): Eliminated.
167
168 (unmemocopy, SCM_CEVAL, SCM_APPLY): Use SCM_EXTEND_ENV instead of
169 EXTEND_ENV.
170
94fb5a6e
DH
1712003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
172
173 * __scm.h (SCM_DEBUG_DEBUGGER_SUPPORT): New compile-time option.
174
175 * gc.card.c (scm_gc_marked_p): Fixed compiler warning when
176 compiling with SCM_DEBUG==1 by moving definition behind prototype.
177
178 * gc.card.c (scm_dbg_t_list_cell, scm_dbg_t_double_cell,
179 scm_dbg_gc_marked_p, scm_dbg_gc_get_card, scm_dbg_gc_get_bvec,
180 scm_t_list_cell_struct, scm_t_list_cell, scm_t_double_cell,
181 scm_gc_marked_p, scm_gc_get_card, scm_gc_get_bvec): Fixed
182 functions such that they check if the object is a non-immediate.
183 Further, renamed identifiers to use the scm_dbg_ prefix and made
184 their inclusion into the lib dependent of the
185 SCM_DEBUG_DEBUGGER_SUPPORT compile time option.
186
fce0b22d
DH
1872003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
188
189 * __scm.h: Fixed comment about the SCM_DEBUG_TYPING_STRICTNESS
190 debug option.
191
1685446c
DH
1922003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
193
821f18a4 194 * list.c (scm_ilength, scm_last_pair), unif.c (l2ra): Prefer
1685446c
DH
195 !SCM_CONSP over SCM_NCONSP. Now, guile itself does not include
196 any calls to SCM_NCONSP any more.
197
198 * unif.c (l2ra): Eliminate redundant check.
199
9ff1720f
DH
2002003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
201
202 * list.c (scm_cons_star), ramap.c (scm_ra_sum, scm_ra_product,
203 scm_array_map_x), unif.c (l2ra): Prefer !SCM_NULLP over
204 SCM_NNULLP. Now, guile itself does not include any calls to
205 SCM_NNULLP any more.
206
05b15362
DH
2072003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
208
209 * eval.c (unmemocopy, SCM_APPLY, scm_map, scm_for_each,
210 scm_copy_tree): Place assignment expressions which are part of
211 other expressions into an expression of their own.
212
0c88d7df
DH
2132003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
214
215 * goops.c (TEST_CHANGE_CLASS, scm_sys_initialize_object): Don't
216 compare SCM values with !=.
217
5cb22e96
DH
2182003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
219
220 * eval.c, eval.h, evalext.c, evalext.h (scm_sym_setter,
221 scm_m_generalized_set_x, scm_init_evalext): Move the declaration
222 and definition of the memoizer for the generalized set! macro from
223 evalext.[ch] to eval.[ch]. Use the SCM_SYNTAX snarfer macro to
224 define the macro object.
225
226 * eval.c, eval.h (s_set_x, scm_s_set_x, scm_m_set_x,
227 scm_m_generalized_set_x): Since now scm_s_set_x is only used in
228 eval.c, it is made static and renamed to s_set_x.
229
230 * evalext.c (scm_defined_p, scm_m_undefine): Prefer !SCM_<foo>
231 over SCM_N<foo>.
232
a44a9715
DH
2332003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
234
235 * eval.c, root.h (scm_undefineds, SCM_NUM_PROTECTS, undefineds,
236 scm_init_eval): Made scm_undefineds static in eval.c, renamed it
237 to undefineds and registered the object as a permanent object.
238
239 * eval.c, eval.h (scm_f_apply, scm_init_eval): Made scm_f_apply
240 static in eval.c, renamed it to f_apply and registered the object
241 as a permanent object.
242
1b43d24c
DH
2432003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
244
5cb22e96 245 * eval.c (SCM_BIT7, SCM_BIT8, unmemocopy, SCM_CEVAL): Renamed
1b43d24c
DH
246 file-local macro SCM_BIT8 to SCM_BIT7, which is more appropriate.
247
aec16f99
DH
2482003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
249
250 * numbers.c (scm_logtest): Fixed argument bug in the call to
251 mpz_and, which showed up when compiling with SCM_DEBUG defined.
252
f96460ce
DH
2532003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
254
255 * gc-card.c (scm_i_sweep_card, scm_i_init_card_freelist): Fixed
256 type errors that showed up when compiling with SCM_DEBUG defined.
257
d0f6ceb8
DH
2582003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
259
260 * continuations.c, continuations.h, eval.c, eval.h, extensions.c,
261 gsubr.c, guile.c, init.c, read.c, root.c, root.h, stackchk.h,
262 throw.c: Removed uses of DEBUG_EXTENSIONS and DYNAMIC_LINKING to
263 fix compile errors with --disable-deprecated.
264
19a7a089
RB
2652003-04-17 Rob Browning <rlb@defaultvalue.org>
266
267 * numbers.c (scm_integer_expt): fix case where we were declaring
268 vars in the middle of a statement block. Thanks to Thamer
269 Al-Harbash.
270
47cd67db
MD
2712003-04-17 Mikael Djurfeldt <djurfeldt@nada.kth.se>
272
0fd7dcd3
MD
273 * goops.c (TEST_CHANGE_CLASS): Update variable class after class
274 change.
275
47cd67db
MD
276 * eq.c (scm_eqv_p): Turned into a primitive generic.
277
3b8b889c
RB
2782003-04-16 Rob Browning <rlb@defaultvalue.org>
279
312006bb
RB
280 * gc_os_dep.c: Added patch for UnixWare and OpenUNIX support.
281 Thanks to Boyd Gerber.
282 Added check for __arm__ in addition to arm for LINUX and copied
283 __s390__ defines from upstream libgc. Thanks to James Treacy for
284 reporting the problems.
c7ef2ea1 285
3b8b889c
RB
286 * numbers.c (PTRDIFF_MIN): use SCM_CHAR_BIT.
287
288 * socket.c: use SCM_CHAR_BIT.
289
290 * random.c (scm_c_random_bignum): use SCM_CHAR_BIT.
291
292 * num2integral.i.c (NUM2INTEGRAL): use SCM_CHAR_BIT.
293
43261b39
MD
2942003-04-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
295
296 * feature.c (scm_init_feature): Always add threads feature.
297
58241edc
MD
2982003-04-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
299
300 * goops.c (scm_sys_fast_slot_ref): Use SCM_SLOT instead of
301 scm_at_assert_bound_ref. (We don't want the unbound check. See
302 oop/goops/active-slot.scm.)
303
94e91275
RB
3042003-04-14 Rob Browning <rlb@defaultvalue.org>
305
306 * tags.h: scm_t_intptr should have been intptr_t.
307
3071ea27
RB
3082003-04-13 Rob Browning <rlb@defaultvalue.org>
309
310 * __scm.h (SCM_FLUSH_REGISTER_WINDOWS): don't just rely on "sparc"
311 test. Instead use
312 #if defined (sparc) || defined (__sparc__) || defined (__sparc)
313 as gc_os_dep.c suggests is appropriate.
314
315 * goops.c (prep_hashsets): make static to match prototype.
316 (scm_sym_args): SCM_SYMBOL -> SCM_GLOBAL_SYMBOL. Thanks to Albert
317 Chin.
318
319 * c-tokenize.lex: remove trailing comma from enum. Thanks to
320 Albert Chin.
321
322 * gc_os_dep.c: add NetBSD powerpc config info. Thanks to Thomas
323 Klausner.
324
21ab2aeb
MD
3252003-04-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
326
327 * goops.c (scm_sys_prep_layout_x): Instance allocation is now
328 indicated through extra fields in getters-n-setters.
329 (scm_add_slot): Adapted to new format of getters_n_setters slot.
330 (Thanks to Andy Wingo.)
331
dff96e95
HWN
3322003-02-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
333
334 * gc-segment.c: add comment
335
07921c76
RB
3362003-04-07 Rob Browning <rlb@defaultvalue.org>
337
b5331f10
RB
338 * debug.h: change "id" arg name to "info_id" to avoid objective-c
339 clash.
340
07921c76
RB
341 * num2integral.i.c (NUM2INTEGRAL): fix bug pointed out by Mikael
342 and add regression test to standalone/.
343
3442003-04-06 Rob Browning <rlb@defaultvalue.org>
345
346 * strings.c (scm_mem2string): use memcpy rather than by-hand loop.
347 Thanks to Dale P. Smith.
348
349 * random.c: #include gmp.h.
350 (scm_c_random_bignum): normalize result on return.
351
352 * init.c: #include gmp.h.
353
354 * numbers.h: remove the gmp.h #include (not needed now).
355
356 * posix.h: change occurences of "id" to something else so we don't
357 cause trouble when included via objective-c (can't hurt, might
358 help). Still have usage in debug.h, though.
359
938f6b7c
MD
3602003-04-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
361
372691d8
MD
362 * random.c (scm_c_random_bignum): Don't generate a random number
363 equal to m (the second argument of scm_c_random_bignum); only
364 generate numbers in the range 0 <= r < m.
c5f268f8
MD
365 (scm_c_default_rstate): Use SCM_VARIABLE_REF to access
366 scm_var_random_state.
372691d8 367
938f6b7c
MD
368 * num2integral.i.c (INTEGRAL2BIG): Put negation of n inside then
369 clause.
370
6cdb8c3f
RB
3712003-04-05 Rob Browning <rlb@defaultvalue.org>
372
938f6b7c 373 * modules.c (scm_module_import_interface): move declaration of
6cdb8c3f
RB
374 uses before any code.
375
15635be5
MD
3762003-04-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
377
1ecfd013
MD
378 * Makefile.am (scmconfig.h): Look for config.h in top_builddir,
379 not top_srcdir.
380
15635be5
MD
381 * hashtab.c (rehash_after_gc): Clear to_rehash list before
382 processing it in order to avoid an infinite loop.
383
384 * print.c (scm_prin1): Remember old state of pstate->writingp.
385
73be1d9e
MV
3862003-04-05 Marius Vollmer <mvo@zagadka.de>
387
388 * Changed license terms to the plain LGPL thru-out.
389
ad815c06
RB
3902003-04-04 Rob Browning <rlb@defaultvalue.org>
391
392 * socket.c (FLIPCPY_NET_HOST_128): new macro.
393 (ipv6_net_to_num, ipv6_num_to_net, bignum_in_ipv6_range_p):
394 rewrite to handle GMP bignums.
395
396
397 * random.c (scm_c_random_bignum): rewrite to handle GMP bignums.
398
399 * ports.c (scm_getc): minor tweak.
400
401 * numbers.h: remove SCM_BIGDIG conditionals, reorganize, and
402 rewrite to handle GMP bignums.
403
404 * numbers.c: rewrite *many* functions to handle GMP bignums.
405
406 * num2integral.i.c (NUM2INTEGRAL, INTEGRAL2NUM, INTEGRAL2BIG):
407 handle GMP bignums.
408
409 * num2float.i.c (NUM2FLOAT): handle GMP bignums.
410
411 * init.c (check_config): remove SCM_BIGDIG conditionals.
412 (scm_init_guile_1): test to make sure mpz_t fits in a double_cell.
413
414 * gc-card.c ("sweep_card"): handle new mpz_t bignums.
415
416 * eval.c: remove SCM_BIGDIG conditionals.
417
418 * eq.c (s_scm_eqv_p): scm_i_bigcomp -> scm_i_bigcmp.
419
6cdb8c3f
RB
4202003-03-31 Rob Browning <rlb@defaultvalue.org>
421
422 * Makefile.am (scmconfig.h): change srcdir to builddir. (Thanks
423 to Kevin Ryde.)
424
4252003-03-27 Rob Browning <rlb@defaultvalue.org>
426
427 * threads.h: fix various preprocessor usages of new public
428 symbols to expect 0 or 1 values rather than 1 or undefined.
429 i.e. change #ifdef to #if, etc.
430
431 * threads.c: fix various preprocessor usages of new public
432 symbols to expect 0 or 1 values rather than 1 or undefined.
433 i.e. change #ifdef to #if, etc.
434
435 * tags.h: fix various preprocessor usages of new public
436 symbols to expect 0 or 1 values rather than 1 or undefined.
437 i.e. change #ifdef to #if, etc.
438
439 * stacks.c: fix various preprocessor usages of new public
440 symbols to expect 0 or 1 values rather than 1 or undefined.
441 i.e. change #ifdef to #if, etc.
442
443 * stackchk.h: fix various preprocessor usages of new public
444 symbols to expect 0 or 1 values rather than 1 or undefined.
445 i.e. change #ifdef to #if, etc.
446
447 * stackchk.c: fix various preprocessor usages of new public
448 symbols to expect 0 or 1 values rather than 1 or undefined.
449 i.e. change #ifdef to #if, etc.
450
451 * sort.c: fix various preprocessor usages of new public
452 symbols to expect 0 or 1 values rather than 1 or undefined.
453 i.e. change #ifdef to #if, etc.
454
455 * read.c: fix various preprocessor usages of new public
456 symbols to expect 0 or 1 values rather than 1 or undefined.
457 i.e. change #ifdef to #if, etc.
458
459 * random.c: fix various preprocessor usages of new public
460 symbols to expect 0 or 1 values rather than 1 or undefined.
461 i.e. change #ifdef to #if, etc.
462
463 * print.c: fix various preprocessor usages of new public
464 symbols to expect 0 or 1 values rather than 1 or undefined.
465 i.e. change #ifdef to #if, etc.
466
467 * objects.c: fix various preprocessor usages of new public
468 symbols to expect 0 or 1 values rather than 1 or undefined.
469 i.e. change #ifdef to #if, etc.
470
471 * numbers.h: fix various preprocessor usages of new public
472 symbols to expect 0 or 1 values rather than 1 or undefined.
473 i.e. change #ifdef to #if, etc.
474
475 * null-threads.c: fix various preprocessor usages of new public
476 symbols to expect 0 or 1 values rather than 1 or undefined.
477 i.e. change #ifdef to #if, etc.
478
479 * lang.c: fix various preprocessor usages of new public
480 symbols to expect 0 or 1 values rather than 1 or undefined.
481 i.e. change #ifdef to #if, etc.
482
483 * lang.h: fix various preprocessor usages of new public
484 symbols to expect 0 or 1 values rather than 1 or undefined.
485 i.e. change #ifdef to #if, etc.
486
487 * iselect.h: fix various preprocessor usages of new public
488 symbols to expect 0 or 1 values rather than 1 or undefined.
489 i.e. change #ifdef to #if, etc.
490
491 * init.c: fix various preprocessor usages of new public
492 symbols to expect 0 or 1 values rather than 1 or undefined.
493 i.e. change #ifdef to #if, etc.
494
495 * gh_data.c: fix various preprocessor usages of new public
496 symbols to expect 0 or 1 values rather than 1 or undefined.
497 i.e. change #ifdef to #if, etc.
498
499 * gh.h: fix various preprocessor usages of new public
500 symbols to expect 0 or 1 values rather than 1 or undefined.
501 i.e. change #ifdef to #if, etc.
502
503 * gen-scmconfig.c: change most new public symbols to be defined to
504 0 or 1 rather than being either 1 or undefined.
505
506 * gc_os_dep.c: fix various preprocessor usages of new public
507 symbols to expect 0 or 1 values rather than 1 or undefined.
508 i.e. change #ifdef to #if, etc.
509 (STACK_GROWS_DOWN): define to 0 or 1 rather than 1 or undef.
510
511 * gc.h: fix various preprocessor usages of new public
512 symbols to expect 0 or 1 values rather than 1 or undefined.
513 i.e. change #ifdef to #if, etc.
514
515 * gc-card.c: fix various preprocessor usages of new public
516 symbols to expect 0 or 1 values rather than 1 or undefined.
517 i.e. change #ifdef to #if, etc.
518
519 * gc-mark.c: fix various preprocessor usages of new public
520 symbols to expect 0 or 1 values rather than 1 or undefined.
521 i.e. change #ifdef to #if, etc.
522
523 * feature.c: fix various preprocessor usages of new public
524 symbols to expect 0 or 1 values rather than 1 or undefined.
525 i.e. change #ifdef to #if, etc.
526
527 * evalext.c: fix various preprocessor usages of new public
528 symbols to expect 0 or 1 values rather than 1 or undefined.
529 i.e. change #ifdef to #if, etc.
530
531 * eval.h: fix various preprocessor usages of new public
532 symbols to expect 0 or 1 values rather than 1 or undefined.
533 i.e. change #ifdef to #if, etc.
534
535 * eval.c: fix various preprocessor usages of new public
536 symbols to expect 0 or 1 values rather than 1 or undefined.
537 i.e. change #ifdef to #if, etc.
538
539 * eq.c: fix various preprocessor usages of new public
540 symbols to expect 0 or 1 values rather than 1 or undefined.
541 i.e. change #ifdef to #if, etc.
542
543 * coop.c: fix various preprocessor usages of new public
544 symbols to expect 0 or 1 values rather than 1 or undefined.
545 i.e. change #ifdef to #if, etc.
546
547 * coop-threads.c: fix various preprocessor usages of new public
548 symbols to expect 0 or 1 values rather than 1 or undefined.
549 i.e. change #ifdef to #if, etc.
550
551 * coop-pthreads.c: fix various preprocessor usages of new public
552 symbols to expect 0 or 1 values rather than 1 or undefined.
553 i.e. change #ifdef to #if, etc.
554
555 * coop-defs.h: fix various preprocessor usages of new public
556 symbols to expect 0 or 1 values rather than 1 or undefined.
557 i.e. change #ifdef to #if, etc.
558
559 * convert.i.c: fix various preprocessor usages of new public
560 symbols to expect 0 or 1 values rather than 1 or undefined.
561 i.e. change #ifdef to #if, etc.
562
563 * continuations.c: fix various preprocessor usages of new public
564 symbols to expect 0 or 1 values rather than 1 or undefined.
565 i.e. change #ifdef to #if, etc.
566
567 * _scm.h: fix various preprocessor usages of new public symbols to
568 expect 0 or 1 values rather than 1 or undefined. i.e. change
569 #ifdef to #if, etc.
570
d11d697a
MV
5712003-03-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
572
9686f86d
MV
573 * init.c (scm_init_guile_1): Call scm_i_init_deprecated.
574
575 * deprecated.c, deprecated.h: New files, to collect deprecated
576 things in one place.
577 * Makefile.am: Added them in all the right places.
578
d11d697a
MV
579 * Makefile.am (EXTRA_DIST): Added "scmconfig.h.top".
580 (scmconfig.h): Get "scmconfig.h.top" from $(srcdir) so that VPATH
581 builds work.
9686f86d
MV
582 (DOT_X_FILES): Removed "iselect.x".
583 (DOT_DOC_FILES): Removed "iselect.doc".
d11d697a 584
e3c0c3b9
RB
5852003-03-25 Rob Browning <rlb@defaultvalue.org>
586
587 * win32-socket.h: #include "libguile/__scm.h". Replace usage of
588 HAVE_WINSOCK2_H with SCM_HAVE_WINSOCK2_H.
589
590 * win32-socket.c: #include <config.h> if HAVE_CONFIG_H.
591
592 * vports.c: #include <config.h> if HAVE_CONFIG_H.
593
594 * unif.c: #include <config.h> if HAVE_CONFIG_H. Replace usage of
595 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
596
597 * threads.h: replace usage of struct timespect with
598 scm_t_timespec. Replace usage of USE_PTHREAD_THREADS with
599 SCM_USE_PTHREAD_THREADS. Remove typedef for struct timespec in
600 favor of scm_t_timespec from scmconfig.h.
601
602 * threads.c: move libguile/_scm.h include to the top so we pick up
603 any critical defines like _GNU_SOURCE early. Replace usage of
604 struct timespect with scm_t_timespec. Replace usage of
605 STACK_GROWS_UP with SCM_STACK_GROWS_UP. Replace usage of
606 USE_PTHREAD_THREADS with SCM_USE_PTHREAD_THREADS.
607
608 * threads-plugin.h: replace usage of struct timespect with
609 scm_t_timespec.
610
611 * threads-plugin.c: #include <config.h> if HAVE_CONFIG_H. Replace
612 usage of struct timespect with scm_t_timespec.
613
614 * tags.h: move HAVE_STDINT_H handling to scmconfig.h. Move
615 HAVE_INTTYPES_H handling to scmconfig.h. #include
616 "libguile/__scm.h". Rework handling for scm_t_bits,
617 scm_t_signed_bits, SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
618 SCM_T_SIGNED_BITS_MIN, and SIZEOF_SCM_T_BITS to use scm_t_intptr,
619 scm_t_uintptr, SCM_SIZEOF_INTPTR_T, and SCM_SIZEOF_UINTPTR_T, and
620 SCM_SIZEOF_UNSIGNED_LONG. Rename usage of HAVE_ARRAYS to
621 SCM_HAVE_ARRAYS.
622
623 * symbols.c: #include <config.h> if HAVE_CONFIG_H.
624
625 * struct.c: #include <config.h> if HAVE_CONFIG_H.
626
627 * strports.c: #include <config.h> if HAVE_CONFIG_H.
628
629 * strop.c: #include <config.h> if HAVE_CONFIG_H.
630
631 * stime.h: move handling of time related headers to scmconfig.h.
632
633 * stime.c: #include <config.h> if HAVE_CONFIG_H.
634
635 * stacks.c: replace usage of STACK_GROWS_UP with
636 SCM_STACK_GROWS_UP.
637
638 * sort.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
639 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
640
641 * socket.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
642 of uint32 and HAVE_UINT_32 with scm_t_int32.
643
644 * smob.c: #include <config.h> if HAVE_CONFIG_H.
645
646 * simpos.c: #include <config.h> if HAVE_CONFIG_H.
647
648 * script.c: #include <config.h> if HAVE_CONFIG_H.
649
650 * scmsigs.c: #include <config.h> if HAVE_CONFIG_H.
651
652 * scmconfig.h.top: new file -- preamble for scmconfig.h.
653
654 * rw.c: #include <config.h> if HAVE_CONFIG_H.
655
656 * regex-posix.c: #include <config.h> if HAVE_CONFIG_H.
657
658 * read.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
659
660 * rdelim.c: #include <config.h> if HAVE_CONFIG_H.
661
662 * random.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
663 of LONG32, LONG64, SIZEOF_LONG, and HAVE_LONG_LONGS with
664 scm_t_int32, scm_t_int64, and SCM_HAVE_T_INT64. Rename usage of
665 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
666
667 * ramap.c: replace usage of HAVE_LONG_LONGS with
668 "SCM_SIZEOF_LONG_LONG != 0".
669
670 * putenv.c: #include <config.h> if HAVE_CONFIG_H. #include
671 "libguile/scmconfig.h".
672
673 * pthread-threads.c: #include <config.h> if HAVE_CONFIG_H.
674
675 * print.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
676 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
677
678 * posix.c: #include <config.h> if HAVE_CONFIG_H.
679
680 * ports.c: #include <config.h> if HAVE_CONFIG_H.
681
682 * objects.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
683
684 * numbers.h: replace usage of HAVE_FLOATINGPOINT_H with
685 SCM_HAVE_FLOATINGPOINT_H. Replace usage of HAVE_IEEEFP_H with
686 SCM_HAVE_IEEEFP_H. Replace usage of HAVE_NAN_H with
687 SCM_HAVE_NAN_H. Replace usage of STDC_HEADERS with
688 SCM_HAVE_STDC_HEADERS. Replace usage of ptrdiff_t with
689 scm_t_ptrdiff. Replace usage of HAVE_LONG_LONGS with
690 "SCM_SIZEOF_LONG_LONG != 0".
691
692 * numbers.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
693 of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0". Replace
694 usage of ptrdiff_t with scm_t_ptrdiff. Replace usage of
695 SIZEOF_PTRDIFF_T with SCM_SIZEOF_SCM_T_PTRDIFF.
696
697 * num2integral.i.c: #include <config.h> if HAVE_CONFIG_H.
698
699 * null-threads.h: replace usage of struct timespect with
700 scm_t_timespec.
701
702 * net_db.c: #include <config.h> if HAVE_CONFIG_H.
703
704 * mkstemp.c: #include <config.h> if HAVE_CONFIG_H. #include
705 "libguile/__scm.h". Remove definition of gcc_uint64_t in favor of
706 scm_t_uint64 and rename usages.
707
708 * mallocs.c: #include <config.h> if HAVE_CONFIG_H.
709
710 * load.c: #include <config.h> if HAVE_CONFIG_H.
711
712 * iselect.h: move handling of time related headers to scmconfig.h.
713 Rename usage of HAVE_SYS_SELECT_H to SCM_HAVE_SYS_SELECT_H.
714 Rename usage of HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Rename
715 usage of USE_COOP_THREADS to SCM_USE_COOP_THREADS.
716
717 * iselect.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
718 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
719 USE_NULL_THREADS to SCM_USE_NULL_THREADS.
720
721 * ioext.c: #include <config.h> if HAVE_CONFIG_H.
722
723 * inline.h: #include "libguile/__scm.h" at the top. Change code
724 to use SCM_C_INLINE and SCM_INLINE_C_INCLUDINT_INLINE_H to decide
725 what to do instead of creating a new public #define. Rename usage
726 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
727 USE_NULL_THREADS to SCM_USE_NULL_THREADS. Rename usage of
728 USE_COPT_THREADS to SCM_USE_COPT_THREADS.
729
730 * inline.c: rearrange handling -- now we just #define
731 SCM_INLINE_C_INCLUDING_INLINE_H to 1 and #include
732 "libguile/inline.h". scmconfig.h will define SCM_C_INLINE as
733 appropriate, and we use that in inline.h along with the above
734 define to determine how to respond.
735
736 * init.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
737 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
738
739 * guile.c: #include <config.h> if HAVE_CONFIG_H.
740
741 * gh_data.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
742 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
743
744 * gh.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
745
746 * gen-scmconfig.h.in: new file -- see gen-scmconfig.c for details.
747
748 * gen-scmconfig.c: new file -- see comments in file for details.
749
750 * gdbinit.c: #include <config.h> if HAVE_CONFIG_H.
751
752 * gc_os_dep.c: #include <config.h> if HAVE_CONFIG_H. Replace
753 usage of STACK_GROWS_UP with SCM_STACK_GROWS_UP.
754
755 * gc.h: replace usage of SIZEOF_LONG with
756 SCM_SIZEOF_UNSIGNED_LONG. Replace usage of USE_PTHREAD_THREADS
757 with SCM_USE_PTHREAD_THREADS. Remove SCM_SIZEOF_LONG definition
758 since we handle that in scmconfig.h now.
759
760 * gc.c: #include <config.h> if HAVE_CONFIG_H.
761
762 * gc-mark.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
763 of HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of
764 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
765
766 * gc-malloc.c: #include <config.h> if HAVE_CONFIG_H.
767
768 * gc-card.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
769 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
770
771 * fports.c: #include <config.h> if HAVE_CONFIG_H.
772
773 * filesys.c: #include <config.h> if HAVE_CONFIG_H.
774
775 * feature.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
776 of USE_NULL_THREADS to SCM_USE_NULL_THREADS.
777
778 * extensions.c: #include <config.h> if HAVE_CONFIG_H.
779
780 * evalext.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
781 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
782
783 * eval.c: #include <config.h> if HAVE_CONFIG_H. #include
784 "libguile/__scm.h" rather than scmconfig.h. Rename usage of
785 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
786 with "SCM_SIZEOF_LONG_LONG != 0".
787
788 * error.c: #include <config.h> if HAVE_CONFIG_H.
789
790 * eq.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
791 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
792 with "SCM_SIZEOF_LONG_LONG != 0".
793
794 * deprecation.c: #include <config.h> if HAVE_CONFIG_H.
795
796 * coop.c: replace usage of struct timespect with scm_t_timespec.
797 #include <config.h> if HAVE_CONFIG_H.
798
799 * coop-threads.c: #include "libguile/_scm.h" early. Replace
800 usage of struct timespect with scm_t_timespec. Replace usage of
801 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
802
803 * coop-pthreads.c: #include "libguile/_scm.h" early. Replace
804 usage of struct timespect with scm_t_timespec. Replace usage of
805 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
806
807 * coop-defs.h: move handling of time related headers to
808 scmconfig.h. Add #include "libguile/__scm.h". Rename usage of
809 HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Replace usage of struct
810 timespect with scm_t_timespec.
811
812 * convert.i.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
813
814 * convert.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
815
816 * convert.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
817 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
818
819 * continuations.c: move libguile/_scm.h include to the top so we
820 pick up any critical defines like _GNU_SOURCE early.
821
822 * backtrace.c: #include <config.h> if HAVE_CONFIG_H.
823
824 * async.c: #include <config.h> if HAVE_CONFIG_H.
825
826 * alloca.c: #include <config.h> if HAVE_CONFIG_H.
827
828 * _scm.h: #include <config.h> if HAVE_CONFIG_H.
829 Rename usage of USE_PTHREAD_THREADS to SCM_USE_PTHREAD_THREADS.
830
831 * __scm.h: move libguile/scmconfig.h include up to the top, so
832 we're sure to pick up any critical defines like _GNU_SOURCE early.
833 #include <limits.h> removed in favor of scmconfig.h inclusion when
834 appropriate. STDC_HEADERS based inclusion of stdlib.h,
835 sys/types.h, stddef.h, and sys/stdtypes.h removed in favor of
836 scmconfig.h inclusion when appropriate. Various Win32 related
837 definitions removed in favor of scmconfig.h inclusion when
838 appropriate.
839 (HAVE_UINTPTR_T): definition removed (see NEWS).
840 (SIZEOF_PTRDIFF_T): definition removed (see NEWS).
841 (HAVE_LONG_LONGS): definition removed (see NEWS).
842 (HAVE_LONG_LONG): definition removed (see NEWS).
843 (HAVE_PTRDIFF_T): definition removed (see NEWS).
844
845 * Makefile.am: scmconfig.h is now generated by building and
846 running gen-scmconfig.h and capturing its output. gen-scmconfig
847 uses config.h and the configure.in generated gen-scmconfig.h to
848 decide what to output. See gen-scmconfig.c for details.
849 (noinst_PROGRAMS): add gen-scmconfig.
850 (gen_scmconfig_SOURCES): new variable.
851 (gen-scmconfig.$(OBJEXT)): new target - be careful to handle
852 cross-compiling right.
853 (scmconfig.h): build scmconfig.h from gen-scmconfig's output.
854 (BUILT_SOURCES): add scmconfig.h.
855
25e0bf97
MV
8562003-03-19 Marius Vollmer <mvo@zagadka.de>
857
858 * gc_os_dep.c: Added defines for sparc-unknown-netbsdelf1.5 from
859 Adrian Bunk. Thanks!
860
74b6d6e4
MD
8612003-03-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
862
863 * goops.c (make_class_from_template): New fourth arg:
864 applicablep.
865 (scm_class_extended_generic_with_setter, scm_class_self): Fixed
866 cpls.
867
868 * smob.c (scm_set_smob_apply): Call scm_i_inherit_applicable.
869
870 * goops.c, objects.c, objects.h (scm_make_extended_class): New
871 second arg: applicablep.
872 (scm_i_inherit_applicable): New function.
873
874 * goops.c, goops.h (scm_class_applicable,
875 scm_class_extended_accessor): New classes.
876
5c9e7dad
DH
8772003-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
878
879 * procs.c (scm_procedure_documentation): Removed redundant
880 SCM_NIMP test and replaced other calls to SCM_IMP by more explicit
881 predicates.
882
f8af5c6d
MD
8832003-03-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
884
c614a00b
MD
885 * list.c, list.h (scm_filter, scm_filter_x): New functions.
886
109c2c9f
MD
887 * modules.c (scm_module_import_interface): New function.
888
f8af5c6d
MD
889 * goops.c, goops.h (scm_class_accessor_method): Renamed from
890 scm_class_accessor.
891 (scm_class_accessor): New class.
892
a48d60b1
MD
8932003-03-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
894
895 * goops.c (scm_primitive_generic_generic): Enable primitive
896 generic if not enabled.
897 (scm_sys_goops_loaded): Setup unextended primitive generics.
898
899 * goops.c, goops.h (scm_c_extend_primitive_generic): New function.
900
901 * snarf.h (SCM_PRIMITIVE_GENERIC, SCM_PRIMITIVE_GENERIC_1): New
902 snarf macros.
903
904 * numbers.c (scm_abs): Use SCM_PRIMITIVE_GENERIC. (This is only a
905 testing example. All uses of SCM_GPROC should be converted.)
906
907 * procprop.c (scm_stand_in_scm_proc): Use scm_assq instead of
908 scm_assoc.
909
910 * eq.c (scm_equal_p): Turned into a primitive generic.
911
84edc049
RB
9122003-02-27 Rob Browning <rlb@defaultvalue.org>
913
914 * Makefile.am (scmconfig.h): new target -- generate file from
915 ../config.h.
916 (modinclude_HEADERS): remove version.h.
917 (nodist_modinclude_HEADERS): add version.h.
918
ea5c9285
MD
9192003-02-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
920
b4a1358c
MD
921 This fixes a serious GC bug, introduced during the latest
922 reorganization of the GC, which disabled freeing of structs and
923 GOOPS objects:
924
925 * struct.c (scm_struct_prehistory): Init scm_i_structs_to_free to
926 SCM_EOL.
53af8255
MD
927 (scm_struct_prehistory): Move scm_free_structs to
928 scm_before_mark_c_hook.
ea5c9285 929
b4a1358c
MD
930 * gc-card.c (sweep_card): Check that we haven't swept structs on
931 this card before. That can happen if scm_i_sweep_all_segments has
932 been called from some other place than scm_igc.
933
c35738c1
MD
9342003-02-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
935
231a4ea8
MD
936 * environments.c (DEFAULT_OBARRAY_SIZE): Changed from 137 to 31
937 (since hash tables now adapt their size).
938
939 * modules.c (scm_modules_prehistory): Changed from 2001 to 1533
940 (current number of prehistory bindings; hashtable code will select
941 a prime which is greater than this value).
942
943 * symbols.c (scm_symbols_prehistory): Changed from 1009 to 2139
944 (current number of initial symbols).
945
946 * properties.c (scm_init_properties): Don't specify size of
947 scm_properties_whash.
948
949 * objprop.c (scm_init_objprop): Don't specify size of
950 scm_object_whash.
951
952 * keywords.c (scm_init_keywords): Don't specify a hash table size.
953
c35738c1
MD
954 * hooks.c (scm_c_hook_add): Fixed bug in append mode.
955
956 The following changes introduce the use of resizable hash tables
957 throughout Guile. It also renames the old *-hash-table* functions
958 to *-alist-vector* and places them, together with the rest of the
959 weak vector support, in the module (ice-9 weak-vector). We should
960 probably introduce a new, better, API for weak references, for
961 example "weak pairs" a la MIT-Scheme. (In Chez scheme, they even
962 look like and are used like ordinary pairs.)
963
964 * environments.c (obarray_enter, obarray_retrieve, obarray_remove,
965 leaf_environment_fold, obarray_remove_all): Use hashtable
966 accessors.
967
968 * gc.c (scm_init_storage): Moved hook initialization to
969 scm_storage_prehistory.
970 (scm_storage_prehistory): New function.
971 (scm_igc): Added commentary about placement of
972 scm_after_sweep_c_hook.
973
974 * gc-mark.c (scm_mark_all): Use hashtable accessors.
975 (scm_gc_mark_dependencies): Use SCM_WVECT_WEAK_KEY_P and
976 SCM_WVECT_WEAK_VALUE_P.
977
978 * hashtab.c, hashtab.h (scm_hash_for_each, scm_hash_map): New
979 functions.
980 (scm_vector_to_hash_table, scm_c_make_resizing_hash_table):
981 Removed.
982 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table,
983 scm_make_doubly_weak_hash_table): Moved here from weaks.c.
984
985 * init.c (scm_init_guile_1): Removed call to scm_init_weaks; Added
986 calls to scm_storage_prehistory and scm_hashtab_prehistory.
987
988 * modules.c (module-reverse-lookup): Use hashtable accessors.
989
990 * symbols.c, symbols.h (scm_i_hash_symbol): New function.
991
992 * weaks.c, weaks.h (scm_make_weak_key_alist_vector,
993 scm_make_weak_value_alist_vector,
994 scm_make_doubly_weak_alist_vector): New functions.
995
996 * weaks.c (scm_init_weaks_builtins): New function.
997
998 * weaks.h (SCM_WVECTF_WEAK_KEY, SCM_WVECTF_WEAK_VALUE,
999 SCM_WVECTF_NOSCAN, SCM_WVECT_WEAK_KEY_P, SCM_WVECT_WEAK_VALUE_P,
1000 SCM_WVECT_NOSCAN_P): New macros.
1001
1002 * weaks.c (scm_scan_weak_vectors): Use SCM_WVECT_WEAK_KEY_P
1003 and SCM_WVECT_WEAK_VALUE_P.
1004
1005 * weaks.c, weaks.h (scm_i_allocate_weak_vector): Renamed from
1006 allocate_weak_vector and exported.
1007
0a4c1355
MD
10082003-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1009
1010 * hashtab.c: Undid thread safety. (We decided that it's better to
1011 let the user explicitly protect the tables (or not) according what
1012 is suitable for the application.)
1013
87ca11ff
MD
10142003-02-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1015
1016 * hashtab.c (scm_hash_fn_remove_x, scm_internal_hash_fold): Made
1017 thread safe and handle resizing tables.
1018 (scm_ihashx, scm_sloppy_assx, scm_delx_x): Removed
1019 SCM_DEFER/ALLOW_INTS.
1020
f59a096e
MD
10212003-02-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1022
1023 * hashtab.c (scm_vector_to_hash_table,
1024 scm_c_make_resizing_hash_table, scm_make_hash_table): New
1025 functions.
1026 (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x): Made thread
1027 safe and handle resizing tables.
1028
1029 * weaks.c (scm_make_weak_key_hash_table,
1030 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
1031 Size argument made optional. Return resizable table if not
1032 specified.
1033
4b612c5b
MD
10342003-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1035
1036 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
1037 Fixed formals tests for closures. (Thanks to Kevin Ryde.)
1038
b3d7f6df
MD
10392003-02-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1040
1041 * debug.c (scm_procedure_source): Handle all objects for which
1042 procedure? is #t. (Thanks to Bill Schottstaedt.)
1043
756414cf
MD
10442003-01-23 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1045
361d631f
MD
1046 * futures.c (mark_futures): Don't need to mark data of recycled
1047 futures.
1048 (scan_futures, cleanup_undead): Be smarter about marking
1049 futures---avoid unnecessary passes through future lists.
1050
756414cf
MD
1051 * futures.h, futures.c: New files; Introduced recycling of
1052 futures. For fine-grained threading this lifts performance to
1053 another level. We can now use parallelization in inner loops of
1054 Guile programs without impossible overhead.
1055
1056 * threads.h, threads.c: Moved futures to their own file.
1057
1058 * Makefile.am (libguile_la_SOURCES): Added futures.c.
1059 (DOT_X_FILES): Added futures.x.
1060 (DOT_DOC_FILES): Added futures.doc.
1061 (modinclude_HEADERS): Added futures.h.
1062
1063 * threads.c, threads.h (scm_i_create_thread): Renamed from
1064 create_thread and made global.
1065
1066 * futures.c (scm_make_future): New procedure.
1067
1068 * eval.c: #include "libguile/futures.h".
1069
1070 * init.c: #include "futures.h"
1071 (scm_init_guile_1): Call scm_init_futures.
1072
1073 * stime.c (SCM_TIME_UNITS_PER_SECOND): Renamed from CLKTCK.
1074
1075 * stime.h (SCM_TIME_UNITS_PER_SECOND): Definition moved here.
1076
1077 * eval.c, eval.h (scm_trampoline_0, scm_i_call_closure_0): New
1078 functions.
1079
1080 * eval.c (scm_trampoline_1): Fixed arguments test for closures.
1081
b4debead
MD
10822003-01-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1083
1084 * threads.c (create_thread): Don't unwind dynwind chain of parent
1085 thread before creation. Just start the new thread with an empty
1086 dynwind chain.
1087
93f26b7b
MD
10882003-01-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1089
1090 * evalext.c, evalext.h (scm_self_evaluating_p): New function.
1091
38d8927c
MD
10922003-01-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1093
41c96c32
MD
1094 * threads.c (scm_timed_wait_condition_variable): Support timed
1095 waiting also for simple condition variables.
1096
38d8927c
MD
1097 * goops.c (TEST_CHANGE_CLASS): Use scm_change_object_class instead
1098 of calling the procedure change-object-class.
1099
9cf5d9b7
MD
11002003-01-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1101
1102 * ramap.c (scm_ramapc): Typo in error message.
1103
bbf8d523
MD
11042003-01-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1105
b46fae00
MD
1106 * goops.c (scm_sys_prep_layout_x): Bugfix: Only create layout for
1107 slots with instance allocation.
1108
bbf8d523
MD
1109 * goops.c, goops.h (scm_class_extended_generic_with_setter): New
1110 class.
1111 (scm_compute_applicable_methods): Use scm_generic_function_methods.
1112
1113 * goops.c (scm_generic_function_methods): Support extended
1114 generic functions.
1115
ebf9b47c
MD
11162002-12-29 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1117
1118 * eval.c (unmemocopy): Bugfix: scm_sym_delay --> scm_sym_future.
2e37d6a2 1119 Thanks to Neil for pointing this out!
ebf9b47c 1120
14a9ba3f
NJ
11212002-12-29 Neil Jerram <neil@ossau.uklinux.net>
1122
1123 * lang.h: Remove declarations matching definitions removed from
1124 lang.c (just below).
1125
c6a040a8
NJ
11262002-12-28 Neil Jerram <neil@ossau.uklinux.net>
1127
6054d805
NJ
1128 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
1129 scm_m_while, scm_nil_eq): Remove definitions that were superfluous
1130 and already commented out.
1131
c6a040a8
NJ
1132 * read.h (scm_lreadparen), read.c (scm_lreadr, scm_read_token,
1133 scm_lreadparen): Support reading vectors with Elisp syntax if
1134 SCM_ELISP_READ_EXTENSIONS is defined. (SCM_ELISP_READ_EXTENSIONS
1135 is not currently defined, and there isn't even a configure switch
1136 to enable it yet.)
1137
3742c12f
MV
11382002-12-26 Marius Vollmer <mvo@zagadka.ping.de>
1139
1140 * Makefile.am (c-tokenize.o): Refer to source via $< so that vpath
1141 builds work.
1142 (EXTRA_DIST): Added version.h.in.
1143
fb50ef08
MD
11442002-12-21 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1145
1146 This change makes it possible for one thread to do lazy sweeping
1147 while other threads are running. Now only the mark phase need to
1148 have all threads asleep. We should look further into this issue.
1149 Presently, I've put the locking of scm_i_sweep_mutex at
1150 "conservative" places due to my current lack of knowledge about
1151 the garbage collector. Please feel free to restrict these regions
1152 further to allow for maximal parallelism!
1153
1154 * gc.c, gc.h (scm_i_sweep_mutex): New mutex.
1155
1156 * gc.c (scm_gc_for_newcell), gc-malloc.c (scm_realloc,
1157 scm_gc_register_collectable_memory): Substitute locking of
1158 scm_i_sweep_mutex for calls to scm_i_thread_put_to_sleep.
1159 (scm_igc): Lock sweep mutex here instead of in callers; Calls to
1160 scm_i_thread_put_to_sleep/scm_i_thread_wake_up used to demarkate
1161 the single-thread section (which now only contains the mark
1162 phase).
1163 (scm_gc): Don't lock sweeo mutex here since scm_igc locks it;
1164 Removed SCM_DEFER/ALLOW_INTS. Simply call scm_igc directly.
1165
1166 * threads.c (gc_section_mutex): Removed.
1167
9ed24633
MD
11682002-12-19 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1169
0d48aca5
MD
1170 * threads.c (create_thread): Clear parent field in root state in
1171 order not to unnecessarily remember dead threads.
1172
9ed24633
MD
1173 * eval.c (call_subr2o_1, call_lsubr2_2): New functions.
1174 (scm_trampoline_1, scm_trampoline_2): Use them.
1175
29717c89
MD
11762002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1177
1178 Partial introduction of real plugin interface.
1179
1180 * Makefile.am (modinclude_HEADERS): Added threads-plugin.h.
1181 (EXTRA_DIST): Added threads-plugin.c.
1182
1183 * threads-plugin.h, threads-plugin.c: New files.
1184
1185 * threads.h: #include "libguile/threads-plugin.h".
1186
1187 * threads.c: #include "libguile/threads-plugin.c".
1188
1189 * pthread-threads.c: Temporarily remove debugging functions.
1190
1191 * threads.c, threads.h (scm_yield): Added back.
1192
e29e0b09
MD
11932002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1194
1195 * threads.c (really_launch): Detach before unlocking
1196 thread_admin_mutex in order not to risk being joined.
1197 (scm_i_thread_put_to_sleep, scm_i_thread_wake_up): Keep
1198 thread_admin_mutex locked during GC.
1199
1200 * pthread-threads.c, pthread-threads.h: Improvements to debugging
1201 functions.
1202
0b6843b1 12032002-12-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
93cd4dcd 1204
6da2dfc4
MD
1205 * pthread-threads.c, pthread-threads.h (SCM_DEBUG_THREADS): Added
1206 support for debugging mutex operations.
1207
1b92fb6b
MD
1208 * threads.c (scm_thread): Removed filed joining_threads.
1209 (thread_print): Print thread number as well as address of thread
1210 structure.
0b6843b1
MD
1211 (scm_join_thread): Bugfix.
1212 (scm_lock_mutex, scm_try_mutex, scm_unlock_mutex,
1213 scm_timed_wait_condition_variable, scm_signal_condition_variable,
1214 scm_broadcast_condition_variable): Use the low-level API.
1215 (scm_all_threads): Return copy of thread list (to prevent
1216 unintended destruction).
1217 (scm_threads_prehistory): Initialize heap_mutex of fake thread.
1b92fb6b 1218
93cd4dcd
MD
1219 * pthread-threads.c, pthread-threads.h, threads.c: Fixes to
1220 pthread "native" recursive mutex support.
1221
2ff4f181
MD
12222002-12-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1223
28d52ebb
MD
1224 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): New definitions.
1225 Simply lock a thread C API recursive mutex.
1226 (SCM_NONREC_CRITICAL_SECTION_START,
1227 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
1228 SCM_REC_CRITICAL_SECTION_END): Removed.
1229
1230 * eval.c: Replaced SOURCE_SECTION_START / SOURCE_SECTION_END with
1231 direct calls to scm_rec_mutex_lock / unlock around the three calls
1232 to scm_m_expand_body.
1233
1234 * eval.c, eval.h (promise_free): New function.
1235 (scm_force): Rewritten; Now thread-safe; Removed
1236 SCM_DEFER/ALLOW_INTS.
1237
1238 * pthread-threads.h: Added partially implemented plugin interface
1239 for recursive mutexes. These are, for now, only intended to be
1240 used internally within the Guile implementation.
1241
1242 * pthread-threads.c: New file.
1243
1244 * threads.c: Conditionally #include "pthread-threads.c".
1245
1246 * eval.c, eval.h (scm_makprom, scm_force): Rewritten to be
1247 thread-safe;
1248
1249 * snarf.h (SCM_MUTEX, SCM_GLOBAL_MUTEX, SCM_REC_MUTEX,
1250 SCM_GLOBAL_REC_MUTEX): New macros.
1251
1252 * eval.c, threads.c, threads.h, snarf.h: Rewrote critical section
1253 macros---use mutexes instead.
1254
1255 * tags.h (SCM_IM_FUTURE): New tag.
1256
1257 * eval.c (scm_m_future): New primitive macro.
1258 (SCM_CEVAL): Support futures.
1259 (unmemocopy): Support unmemoization of futures.
1260
1261 * print.c (scm_isymnames): Name of future isym.
1262
2ff4f181
MD
1263 * version.c: Unmade some changes to my private copy that got
1264 committed by mistake.
1265
392d2833
MD
12662002-12-11 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1267
e200ddee
MD
1268 * gc-malloc.c, gc.h, init.c: Reverted gc-malloc change of
1269 2002-12-10.
1270
392d2833
MD
1271 * gc.c (scm_igc): Don't call scm_i_thread_invalidate_freelists.
1272
1273 * gc.c (scm_gc_sweep): Call it here instead, which is a more
1274 logical place.
1275
1276 * threads.c (create_thread): Remember root object until the handle
1277 of the new thread is on all_threads list.
1278
1279 * root.c (scm_make_root): Moved copying of fluids until after
1280 creation of root handle so that the fluids are GC protected. Also
1281 removed the critical section.
1282
c4c52ebe
MD
12832002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1284
960c408c
MD
1285 * gc-malloc.c, gc.h (scm_gc_malloc_prehistory): New function.
1286
3cdde9d6 1287 * gc-malloc.c (malloc_mutex): New mutex.
960c408c 1288 (scm_gc_malloc_prehistory): Initialize it.
3cdde9d6
MD
1289 (scm_realloc): Serialize call to realloc
1290 (scm_calloc): Same for calloc.
1291 Thanks to Wolfgang Jaehrling!
1292 (Now we have to make sure all calls to malloc/realloc are made
1293 through scm_malloc.)
1294
960c408c
MD
1295 * init.c (scm_init_guile_1): Call scm_gc_malloc_prehistory.
1296
c4c52ebe
MD
1297 * threads.c (really_launch): Release heap (to prevent deadlock).
1298 (create_thread): Release heap before locking thread admin mutex.
1299
b0dc3d71
MD
13002002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1301
1302 * threads.c (scm_i_thread_invalidate_freelists): New
1303 function.
1304
1305 * gc.c (scm_igc): Call scm_i_thread_invalidate_freelists.
1306
1307 * modules.c (scm_export): Inserted a return statement.
1308
06e80f59
HWN
13092002-12-10 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1310
1311 * modules.c (scm_export): new function
1312
1313 * gc-card.c: add a note about malloc()/free() overhead.
1314
a12611c3
MD
13152002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1316
1317 * Makefile.am (c-tokenize.$(OBJEXT)): Don't look for c-tokenize.c
1318 in srcdir.
1319
c7fabadf
MD
13202002-12-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1321
1322 These changes remove scm_ints_disabled (which hasn't has any
1323 effect in Guile for quite some time).
1324
1325 * async.c, error.h (scm_ints_disabled): Removed.
1326
1327 * gc.c (scm_gc_for_newcell), init.c (scm_init_guile_1),
1328 root.c (scm_internal_cwdr), gdbint.c (SCM_BEGIN_FOREIGN_BLOCK,
1329 SCM_END_FOREIGN_BLOCK): Don't touch scm_ints_disabled.
1330 (old_ints): Removed.
1331
1332 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Define as a recursive
1333 critical section.
1334 (SCM_REDEFER_INTS, SCM_ALLOW_INTS): Define as SCM_DEFER_INTS and
1335 SCM_ALLOW_INTS.
1336
9bc4701c
MD
13372002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1338
52340b65
MD
1339 * threads.c (scm_mutex_lock, scm_cond_wait, scm_cond_timedwait):
1340 Removed accidental #if 0 around these functions.
1341
9bc4701c
MD
1342 These changes are the start of support for preemptive
1343 multithreading. Marius and I have agreed that I commit this code
1344 into the repository although it isn't thoroughly tested and surely
1345 introduces many bugs. The bugs should only be exposed when using
1346 threads, though. Signalling and error handling for threads is
1347 very likely broken. Work on making the implementation cleaner and
1348 more efficient is needed.
1349
1350 * __scm.h (SCM_ALLOW_INTS_ONLY): Removed.
1351 (SCM_NONREC_CRITICAL_SECTION_START,
1352 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
1353 SCM_REC_CRITICAL_SECTION_END): New macros.
1354 (SCM_CRITICAL_SECTION_START/END): Defined here.
1355
1356 * eval.c: Insert SOURCE_SECTION_START / SOURCE_SECTION_END around
1357 the three calls to scm_m_expand_body.
1358
1359 * gc.h: #include "libguile/pthread-threads.h";
1360 (SCM_FREELIST_CREATE, SCM_FREELIST_LOC): New macros.
1361
1362 * gc.c (scm_i_freelist, scm_i_freelist2): Defined to be of type
1363 scm_t_key;
1364
1365 * gc.c, gc-freelist.c, inline.h: Use SCM_FREELIST_LOC for freelist
1366 access.
1367
1368 * gc-freelist.c (scm_gc_init_freelist): Create freelist keys.
1369
1370 * gc-freelist.c, threads.c (really_launch): Use
1371 SCM_FREELIST_CREATE.
1372
1373 * gc-malloc.c (scm_realloc, scm_gc_register_collectable_memory):
1374
1375 * gc.c (scm_i_expensive_validation_check, scm_gc,
1376 scm_gc_for_newcell): Put threads to sleep before doing GC-related
1377 heap administration so that those pieces of code are executed
1378 single-threaded. We might consider rewriting these code sections
1379 in terms of a "call_gc_code_singly_threaded" construct instead of
1380 calling the pair of scm_i_thread_put_to_sleep () and
1381 scm_i_thread_wake_up (). Also, we would want to have as many of
1382 these sections eleminated.
1383
1384 * init.c (scm_init_guile_1): Call scm_threads_prehistory.
1385
1386 * inline.h: #include "libguile/threads.h"
1387
1388 * pthread-threads.h: Macros now conform more closely to the
1389 pthreads interface. Some of them now take a second argument.
1390
1391 * threads.c, threads.h: Many changes.
1392
13932002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1394
1395 * Makefile.am (version.h): Changed $^ --> $< in rule for
1396 version.h.
1397
b2cbe8d8
RB
13982002-12-08 Rob Browning <rlb@defaultvalue.org>
1399
1400 * version.h.in (SCM_MICRO_VERSION): use @--@ substitution now.
1401 (SCM_MINOR_VERSION): use @--@ substitution now.
1402 (SCM_MICRO_VERSION): use @--@ substitution now.
1403 (scm_effective_version): new function prototype.
1404
1405 * version.c (scm_effective_version): new function, also add
1406 effective-version.
1407
1408 * Makefile.am (schemelibdir): VERSION -> GUILE_EFFECTIVE_VERSION.
1409 (libpath.h): use GUILE_EFFECTIVE_VERSION to compute
1410 SCM_LIBRARY_DIR.
1411 (version.h): generate this here rather than configure.in. This
1412 approach tracks source edits better (i.e. more immediately).
1413 Might be worth considering for other .in files too.
1414
5441c65c
MV
14152002-12-02 Marius Vollmer <mvo@zagadka.ping.de>
1416
1417 Reorganized thread package selection. A thread package now only
1418 implements a small set of pthread like functions and Guile
1419 implements the rest on top of that. Guile's implementation is
1420 what the "coop-pthreads" package has been previously. Support for
1421 "coop" threads has been removed until I get time to add it again.
1422
1423 * Makefile.am (libguile_la_SOURCES): Removed iselect.c.
1424 (noinst_HEADERS): Removed coop-threads.c, coop-threads.h, coop.c,
1425 null-threads.c, coop-pthreads.c.
1426 (modinclude_HEADERS): Removed coop-defs.h, coop-pthreads.h. Added
1427 pthread-threads.h.
1428
1429 * validate.h (SCM_VALIDATE_THREAD): Moved to threads.h.
1430
1431 * threads.h: Do not include "libguile/coop-defs.h". Include
1432 "libguile/pthread-threads.h" for USE_COPT_THREADS. Removed
1433 (previously deprecated) C level thread API prototypes. They are
1434 now in the thread package specific headers, "null-threads.h" and
1435 "pthread-threads.h".
1436 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
1437 New.
1438 (scm_threads_init): Removed.
1439 (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END,
1440 SCM_THREAD_SWITCHING_CODE, scm_i_switch_counter,
1441 SCM_I_THREAD_SWITCH_COUNT): Define here.
1442 (scm_single_thread_p): Removed.
1443 (scm_call_with_new_thread): Take two args directly instead of list
1444 of two args.
1445 (scm_i_thread_data, scm_i_set_thread_data, SCM_THREAD_LOCAL_DATA,
1446 SCM_SET_THREAD_LOCAL_DATA): Define here.
1447
1448 * threads.c: Merged with "coop-pthreads.c".
1449
1450 * null-threads.h: Implement pthread-like API as a set of macros.
1451
1452 * pthread-threads.h: New, implement pthread-like API by deferring
1453 to pthread itself.
1454
1455 * init.c (scm_init_guile_1): Do not call scm_init_iselect, which
1456 has been lost in the reorganization.
1457
504d99c5
MD
14582002-12-01 Mikael Djurfeldt <mdj@linnaeus>
1459
1460 The following change makes it possible to move procedure
1461 application dispatch outside inner loops. The motivation was
1462 clean implementation of efficient replacements of R5RS primitives
1463 in SRFI-1.
1464
1465 The semantics is clear: scm_trampoline_N returns an optimized
1466 version of scm_call_N (or NULL if the procedure isn't applicable
1467 on N args).
1468
1469 Applying the optimization to map and for-each increases efficiency
1470 noticeably. For example, (map abs ls) is 8 times faster than
1471 before.
1472
1473 * eval.h (scm_t_trampoline_1, scm_t_trampoline_2): New types.
1474
1475 * eval.c, eval.h (scm_trampoline_1, scm_trampoline_2): New functions.
1476
1477 * eval.c (call_subr2_2, call_lsubr_2, call_closure_2): New functions;
1478 (map, for-each): Handle also application on two args as a special
1479 case; Use trampolines.
1480
1481 Other changes:
1482
1483 * sort.c (scm_cmp_function): Choose subr2less for scm_tc7_subr_2o;
1484 (subr2oless): Removed.
1485 (scm_restricted_vector_sort_x): Use scm_return_first to keep the
1486 vector GC protected.
1487
1488 * eval.c (check_map_args): Use scm_out_of_range_pos instead of
1489 scm_out_of_range.
1490
63dd3413
DH
14912002-11-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
1492
1493 * evalext.[ch] (scm_m_undefine, undefine): Deprecated.
1494
4ba5f279
MD
14952002-11-17 Mikael Djurfeldt <mdj@linnaeus>
1496
1497 * debug.c (scm_make_iloc): Added missing "return".
1498
56ae231f
MV
14992002-11-17 Marius Vollmer <mvo@zagadka.ping.de>
1500
1501 * strports.c (scm_eval_string_in_module): Validate second arg to
1502 be a module. Thanks to Arno Peters!
1503
80b28865
DH
15042002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
1505
1506 * .cvsignore: remove goops.c
1507
c88b1456
DH
15082002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
1509
1510 * modules.c (scm_env_top_level, scm_lookup_closure_module,
1511 module_variable, scm_module_lookup_closure,
1512 scm_module_transformer, scm_sym2var, scm_module_reverse_lookup,
1513 scm_system_module_env_p): Don't compare SCM values with C
1514 operators == or !=. Avoid SCM_IMP predicates. Prefer !SCM_FALSEP
1515 over SCM_NFALSEP.
1516
a8a19efc
DH
15172002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
1518
1519 * eval.h (SCM_MAKE_ILOC): New macro.
1520
1521 * debug.c (scm_make_iloc): Use SCM_MAKE_ILOC instead of computing
1522 the iloc bitpattern here.
1523
76734914
MD
15242002-11-14 Mikael Djurfeldt <mdj@linnaeus>
1525
1526 * coop-pthreads.c, coop-pthreads.h: scm_internal_select should be
1527 part of the API, otherwise it's difficult to write Guile
1528 extensions using non-blocking I/O => moved #include
1529 "libguile/iselect.h" from coop-pthreads.c --> coop-pthreads.h.
1530
1531 * coop-pthreads.c (scm_unlock_mutex): Changed s_lock_mutex -->
1532 s_unlock_mutex.
1533
8b5b4a75
MV
15342002-11-10 Marius Vollmer <mvo@zagadka.ping.de>
1535
1536 * __scm.h (USE_THREADS, GUILE_ISELECT): Do not define here. They
1537 are defined in configure.in.
1538
1539 * threads.c: Removed SCM_API from function definitions. SCM_API
1540 is only for declarations.
1541
e5a83084
MD
15422002-11-07 Mikael Djurfeldt <mdj@linnaeus>
1543
9be8bb45
MD
1544 * coop-pthreads.h: Added support for thread specific data to the
1545 generic C API for the coop-pthreads case.
1546
e5a83084
MD
1547 * threads.c, threads.h (scm_cond_init): Undo unintentional API
1548 change.
6c214b62 1549 (scm_cond_broadcast): Added missing function.
e5a83084 1550
7edf178e
MV
15512002-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1552
1553 * coop.c (coop_next_runnable_thread): Removed, wich should have
1554 happened when GUILE_ISELECT was hard-wired.
1555
7f5b1b77
MV
15562002-11-03 Marius Vollmer <mvo@zagadka.ping.de>
1557
7caa1b07
MV
1558 * Makefile.am (libguile_la_SOURCES): Added threads.c
1559 (DOT_DOC_FILES): Added threads.doc.
1560 (DOT_X_FILES): Added threads.x.
1561 (EXTRA_libguile_la_SOURCES): Removed threads.c.
1562 (noinst_HEADERS): Added coop-pthreads.c.
1563 (modinclude_HEADERS): Added coop-pthreads.h.
1564
1565 * __scm.h (USE_THREADS, GUILE_ISELECT): Define when
1566 SCM_DEBUG_DEPRECATED. Removed their use thru-out Guile.
1567
bb11cbf4
MV
1568 * iselect.c: Include "_scm.h" before testing HAVE_UNISTD_H.
1569 Thanks to Bill Schottstaedt!
1570
1d4cbbed
MV
1571 * numbers.c (scm_integer_expt): Make 0^z == 0 for z != 0.
1572
7f5b1b77
MV
1573 * _scm.h (HAVE_RESTARTABLE_SYSCALLS): Do define even when
1574 SCM_COPT_THREADS is defined.
1575 (SCM_SYSCALL): Use EINTR-expection version when SCM_COPT_THREADS
1576 is defined.
1577
1578 * coop-pthreads.c: Some harmless renamings of internal stuff.
1579 (create_thread): New, generalized version of
1580 scm_call_with_new_thread.
1581 (scm_call_with_new_thread): Use it.
1582 (scm_spawn_thread): New, use create_thread.
1583
d52f53b1
MV
15842002-11-02 Marius Vollmer <mvo@zagadka.ping.de>
1585
1586 * coop-pthreads.c, coop-pthreads.h: Redone completely, you might
1587 start testing it now.
1588
1589 * _scm.h: Include <errno.h< so that SCM_SYSCALL is correctly
1590 defined when HAVE_RESTARTABLE_SYSCALLS is not defined.
1591 (HAVE_RESTARTABLE_SYSCALLS): Do not define when USE_COPT_THREADS
1592 is defined.
1593
30f920c3
MV
15942002-10-27 Marius Vollmer <mvo@zagadka.ping.de>
1595
1596 * scmsigs.c (signal_cell_handlers, install_handler_data,
1597 scm_delq_spine_x, really_install_handler, install_handler): New
1598 scheme for triggering signal handlers, to simplify take_signal.
1599 (take_signal): Simplified, to avoid race conditions.
1600 (scm_sigaction_for_thread): Use new Scheme. Validate that thread
1601 hasn't exited yet.
1602
1603 * async.c (scm_async_click): Reset pending_asyncs, handle
1604 signal_asyncs. Don't set cdr of a non-signal async to #f.
1605 (scm_i_queue_async_cell): Do not check cdr of cell for #f, queue
1606 always. Set pending_asyncs.
1607 (scm_system_async_mark_for_thread): Check that thread has not
1608 exited.
1609 (scm_unmask_signals, decrease_block): Call scm_async_click after
1610 block_asyncs becomes zero.
1611
1612 * __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of
1613 active_asyncs.
1614
1615 * root.h (scm_root_state): Added pending_asyncs and signal_asyncs
1616 fields.
1617 * root.c (root_mark): Mark them.
1618 (make_root): Initialize them.
1619
1620 * iselect.c, iselect.h: Replaced GUILE_ISELECT with
1621 USE_COOP_THREADS.
1622 (scm_internal_select): Define one version for USE_COOP_THREADS and
1623 one for USE_NULL_THREADS.
1624 (scm_init_iselect): Likewise.
1625
1626 * inline.h (scm_cell, scm_double_cell): Also allow
1627 USE_COPT_THREADS to not protect the slot initializers.
1628
1629 * init.c (scm_init_guile_1): Call scm_init_thread_procs. This is
1630 because threads need to be initialized before the stack, but
1631 gsubrs such as scm_timed_condition_variable_wait can only be
1632 created later.
1633
1634 * threads.h: Include "coop-pthreads.h" when requested.
1635 (scm_threads_make_mutex, scm_threads_lock_mutex,
1636 scm_threads_unlock_mutex, scm_threads_monitor): Removed, they were
1637 not implemented anyway.
1638 (scm_init_thread_procs, scm_try_mutex,
1639 scm_timed_condition_variable_wait,
1640 scm_broadcast_condition_variable, scm_c_thread_exited_p,
1641 scm_thread_exited_p): New prototypes.
1642 (struct timespec): Define if not already defined.
1643 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
1644 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
1645 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
1646 scm_cond_broadcast, scm_cond_destroy): Declarations moved here and
1647 deprecated.
1648
1649 * threads.c: Include <errno.h>. Include "coop-pthreads.c" when
1650 requested.
1651 (scm_thread_exited_p): New.
1652 (scm_try_mutex, scm_broadcast_condition_variable): Newly
1653 registered procedures.
1654 (scm_wait_condition_variable, scm_timed_wait_condition_variable):
1655 Use the latter as the procedure for "wait-condition-variable",
1656 thus offering a optional timeout parameter to Scheme.
1657 (scm_wait_condition_variable): Implement in terms of
1658 scm_timed_wait_condition_variable.
1659 (scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
1660 scm_mutex_unlock, scm_mutex_destroy, scm_cond_init,
1661 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
1662 scm_cond_broadcast, scm_cond_destroy): Implement in terms of
1663 scm_make_mutex, etc, and deprecate.
1664 (scm_init_threads): Do not create smobs, leave this to
1665 scm_threads_init. Do not include "threads.x" file.
1666 (scm_init_thread_procs): New, include "threads.x" here.
1667
1668 * null-threads.h (scm_null_mutex, scm_null_mutex_init,
1669 scm_null_mutex_lock, scm_null_mutex_unlock,
1670 scm_null_mutex_destroy, scm_null_condvar, scm_null_condvar_init,
1671 scm_null_condvar_wait, scm_null_condvar_signal,
1672 scm_null_condvar_destroy): Removed.
1673 (scm_mutex_init, scm_mutex_lock, scm_mutex_unlock, scm_cond_init,
1674 scm_cond_wait, scm_cond_signal, scm_cond_broadcast,
1675 scm_cond_destory): Do not define, they are now deprecated and
1676 handled by threads.{h,c}.
1677
1678 * null-threads.c (scm_null_mutex, scm_null_cond): Define here.
1679 (scm_threads_init): Create smobs here, using the appropriate
1680 sizes.
1681 (block): Removed, now unused.
1682 (scm_c_thread_exited_p): New.
1683 (scm_null_mutex_init, scm_null_mutex_lock, scm_null_mutex_unlock,
1684 scm_null_mutex_destroy, scm_null_condvar_init,
1685 scm_null_condvar_wait, scm_null_condvar_signal,
1686 scm_null_condvar_destroy): Removed and updated users to do their
1687 task directly.
1688 (scm_try_mutex, timeval_subtract,
1689 scm_timed_wait_condition_variable,
1690 scm_broadcast_condition_variable): New.
1691 (scm_wait_condition_variable): Removed.
1692
1693 * coop-defs.h (coop_m): Added 'level' field.
1694 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
1695 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
1696 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
1697 scm_cond_broadcast, scm_cond_destroy, struct timespec): Do not
1698 define.
1699 (coop_condition_variable_broadcast): New.
1700
1701 * coop-threads.c (scm_threads_init): Create smobs here, using the
1702 appropriate sizes.
1703 (scm_c_thread_exited_p, scm_try_mutex,
1704 scm_timed_wait_condition_variable,
1705 scm_broadcast_condition_variable): New.
1706 (scm_wait_condition_variable): Removed.
1707
1708 * coop.c (coop_new_mutex_init): Initialize level.
1709 (coop_mutex_trylock, coop_mutex_lock, coop_mutex_unlock): maintain
1710 level.
1711 (coop_condition_variable_signal): Renamed to
1712 coop_condition_variable_broadcast and reimplemented in terms of
1713 that. Thus...
1714 (coop_condition_variable_broadcast): New.
1715
1716 * goops.c (hell_mutex): Reimplemented using scm_make_mutex, etc.
1717
1718 * coop-pthreads.h, coop-pthreads.c: New, but unfinished.
1719
087ed40d
MV
17202002-10-21 Marius Vollmer <mvo@zagadka.ping.de>
1721
65a23095
MV
1722 * null-threads.c: Include <time.h>. Also, use <...> for inclusion
1723 of system headers.
1724
087ed40d
MV
1725 * async.c, goops.h, modules.h, validate.h (SCM_MAKE_VALIDATE_MSG):
1726 New. Use it instead of SCM_MAKE_VALIDATE in lots of places to
30f920c3 1727 give better error messages. Thanks to Bill Schottstaedt!
087ed40d 1728
5ec1d2c8
DH
17292002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
1730
1731 * evalext.h, evalext.c (scm_definedp, scm_defined_p): Renamed
1732 scm_definedp to scm_defined_p and deprecated scm_definedp.
1733
100ae50d
DH
17342002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
1735
1736 * async.h, async.c (scm_system_async): Fixed deprecation to work
1737 correctly when deprecated features are excluded.
1738
2794cb50
MV
17392002-10-16 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1740
1741 * async.c (scm_system_async_mark_for_thread): Validate thread
1742 argument.
1743
1744 * coop-threads.c (scm_i_thread_root): Do not validate argument.
1745
1746 * feature.c (scm_init_feature): Don't add 'threads' for
1747 USE_NULL_THREADS.
1748
1749 * inline.h (scm_cell, scm_double_cell): Also allow
1750 USE_NULL_THREADS to not protect the slot initializers.
1751
1752 * scmsigs.c (scm_sigaction_for_thread): It's "USE_THREADS" not
1753 "USE_THREAD".
1754
1755 * Makefile.am (noinst_HEADERS): Added null-threads.c.
1756 (modinclude_HEADERS): Added null-threads.h.
1757
1758 * threads.h: Include null-threads.h when !USE_COOP_THREADS.
1759 * threads.c: Include null-threads.c when !USE_COOP_THREADS.
1760 (scm_init_threads): Use generic type names scm_t_mutex and
1761 scm_t_cond instead of coop_m and coop_c.
1762
1763 * null-threads.c, null-threads.h: New files.
1764
ff810d7a
MV
17652002-10-15 Marius Vollmer <mvo@zagadka.ping.de>
1766
1767 * Makefile.am: Replaced "$<" in non-pattern rules with its value.
1768 This is to support makes that know about "$<" only in pattern
1769 rules, like Sun's make.
1770
a90bdb73
MV
17712002-10-13 Marius Vollmer <mvo@zagadka.ping.de>
1772
1773 * Makefile.am (libpath.h): Fixed typo in top_srcdir_absolute
1774 substitution. Thanks to David Allouche!
1775
e71a8bf2
DH
17762002-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
1777
1778 * evalext.h: Replaced SCM_DEBUG_DEPRECATED with
1779 !SCM_ENABLE_DEPRECATED.
1780
41f77ff5
MV
17812002-10-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1782
504d99c5 1783 * async.c (scm_system_async_mark_for_thread): Only call
41f77ff5
MV
1784 scm_i_thread_root when USE_THREADS is defined. Use scm_root
1785 otherwise.
1786
1787 * scmsigs.c (take_signal): Only call scm_i_thread_root when
1788 USE_THREADS is defined. Use scm_root otherwise.
1789 (scm_sigaction_for_thread): Ignore THREAD argument when
1790 USE_THREADS is not defined. Also, move THREAD argument defaulting
1791 out of HAVE_SIGACTION section, which was a bug.
1792
6d16b125
MV
17932002-10-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1794
1795 * scmsigs.c (scm_sigaction_for_thread): Store original handler in
1796 signal_handlers, not the closure that is used as the async.
1797 The closure is stored in signal_handler_cells, as previously.
1798
acfa1f52
MV
17992002-10-10 Marius Vollmer <mvo@zagadka.ping.de>
1800
1801 * root.h (scm_root_state): Added 'block_async' slot.
1802 (scm_active_asyncs): Removed abbrev.
1803 * root.c (scm_make_root): Initialize 'block_asyncs' slot.
1804
1805 * __scm.h (SCM_ASYNC_TICK): Do without the scm_active_asyncs
1806 abbrev.
1807
1808 * async.h (scm_call_with_blocked_asyncs,
1809 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
1810 scm_c_call_with_unblocked_asyncs): New prototypes.
1811 (scm_mask_signals, scm_unmask_signals): Deprecated.
1812 (scm_mask_ints): Turned into a macro.
1813 * async.c (scm_mask_ints): Removed.
1814 (scm_run_asyncs): Do not set scm_mask_ints while running an async.
1815 this should not be necessary.
1816 (scm_async_click): Test block_asyncs instead of scm_mask_ints.
1817 (scm_mask_signals, scm_unmask_signals): Deprecated. Emit
1818 deprecation warning and check for errornous use. Set block_asyncs
1819 instead of scm_mask_ints.
1820 (increase_block, decrease_block, scm_call_with_blocked_asyncs,
1821 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
1822 scm_c_call_with_unblocked_asyncs): New.
1823
1824 * script.c (scm_compile_shell_switches): Do not set scm_mask_ints.
1825 Asyncs are enabled by default.
1826
34010f56
NJ
18272002-10-09 Neil Jerram <neil@ossau.uklinux.net>
1828
1829 * vports.c (scm_make_soft_port): Allow vector argument to carry a
1830 6th element: an input waiting thunk.
1831 (sf_input_waiting): New.
1832
9310d6f2
MV
18332002-10-05 Marius Vollmer <mvo@zagadka.ping.de>
1834
1835 * root.c (root_mark): Mark active_asyncs slot.
1836
1837 * async.c (scm_async_click): Set the cdr of a executed handler
1838 cell to SCM_BOOL_F, not SCM_EOL.
1839 (scm_i_queue_async_cell): Queue the cell at the end of the list,
1840 and only if the handler procedure is not already present.
1841 (scm_system_async_mark_for_thread): Initialize cdr of handler cell
1842 with SCM_BOOL_F.
1843 * scmsigs.c (scm_sigaction_for_thread): Likewise.
1844
ac48c719
RB
18452002-10-04 Rob Browning <rlb@defaultvalue.org>
1846
1360a142
RB
1847 * guile.c (main): switch to scm_lt_dlset_preloaded_symbols;
1848
1849 * dynl.c (sysdep_dynl_link): switch to scm_lt_dlhandle,
1850 scm_lt_dlopenext, and scm_lt_dlerror.
1851 (sysdep_dynl_unlink): switch to scm_lt_dlhandle, scm_lt_dlclose,
1852 and scm_lt_dlerror.
1853 (sysdep_dynl_func): switch to scm_lt_dlhandle, scm_lt_dlsym,
1854 and scm_lt_dlerror.
1855 (sysdep_dynl_init): switch to scm_lt_dlinit();
1856
1857 * Makefile.am (libguile_la_LIBADD): switch to use
1858 libguile-ltdl.la.
1859
504d99c5 1860 * numbers.c (scm_integer_expt): (expt 0 1) should be 1.
ac48c719 1861
497092c9
MV
18622002-10-04 Marius Vollmer <mvo@zagadka.ping.de>
1863
1864 * scmsigs.h (scm_sigaction_for_thread): New prototype.
1865 * scmsigs.c (got_signal): Removed.
1866 (signal_handler_cells, signal_handler_threads): New.
1867 (take_signal): Queue the cell of the signal for the specified
1868 thread. Reset the signal handler on systems that don't have
1869 sigaction.
1870 (sys_deliver_signals): Removed.
1871 (close_1): New.
1872 (scm_sigaction_for_thread): Renamed from scm_sigaction and
1873 extended to also set the thread of a signal and allocate a cell
1874 for it. Keep the Scheme name "sigaction". Check that signum is
1875 within range. Also, use SCM_VECTOR_REF instead of SCM_VELTS.
1876 (scm_sigaction): Implement in terms of scm_sigaction_for_thread.
1877 (scm_init_scmsigs): Allocate signal_handler_cells and
1878 signal_handler_threads vectors.
1879
1880 * async.c: Removed GUILE_OLD_ASYNC_CLICK code. Reorganized so
1881 that system asnycs and user asyncs are separated. Reimplemented
1882 system asyncs to work per-thread.
1883
1884 * gc.c (scm_init_gc): Do not use scm_system_async.
1885
1886 * async.h (scm_asyncs_pending, scm_set_tick_rate,
1887 scm_set_switch_rate, scm_system_async_mark_from_signal_handler):
1888 Removed prototypes.
1889 (scm_i_queue_async_cell): New.
1890
1891 * __scm.h (scm_asyncs_pending_p): Removed.
1892 (SCM_ASYNC_CLICK): Check scm_active_asyncs instead of
1893 scm_asyncs_pending_p.
1894
1895 * async.h (scm_system_async_mark_for_thread): New prototype.
1896
1897 * __scm.h: Removed GUILE_OLD_ASYNC_CLICK code.
1898
1899 * root.h (scm_root_state): Added new "active_asyncs" slot.
1900 * root.c (scm_make_root): Initialize it to SCM_EOL.
1901
1902 * coop-defs.h (coop_t): Added new "handle" slot.
1903 * coop-threads.c (all_threads, scm_current_thread,
1904 scm_all_threads, scm_i_thread_root): New.
1905 (scm_threads_init): Add main thread to all_threads.
1906 (scheme_launch_thread): Remove thread from all_threads when it
1907 terminates.
1908 (scm_call_with_new_thread): Initialize handle slot of coop_t
1909 structure and add new thread to all_threads.
1910 (scm_spawn_thread): Likewise.
1911
1912 * threads.h (scm_current_thread, scm_all_threads): New prototypes.
1913 * threads.c (scm_current_thread, scm_all_threads): Register as
1914 primitives.
1915
1916 * dynl.c: Use scm_lt_ prefix for libltdl functions.
1917
480fa28d
NJ
19182002-09-29 Neil Jerram <neil@ossau.uklinux.net>
1919
1920 * script.c (scm_compile_shell_switches): Fix bad spelling of
1921 `explicitly' in comment.
1922
19232002-09-28 Neil Jerram <neil@ossau.uklinux.net>
1924
1925 * posix.c (scm_geteuid, scm_getegid, scm_seteuid, scm_setegid):
1926 Refer to provided? in doc string rather than deprecated feature?.
1927
3553e1d1
GH
19282002-09-24 Gary Houston <ghouston@arglist.com>
1929
1930 * inline.h (scm_double_cell): prevent reordering of statements
1931 with any following code (for GCC 3 strict-aliasing).
1932 * numbers.c (scm_make_real), num2float.i.c (FLOAT2NUM): removed
1933 the earlier version of the reordering prevention.
1934
4ad0814a
HWN
19352002-09-19 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1936
1937 * inline.h (scm_double_cell): move SET_GCMARK set out of if body.
1938
e88e4f2e
HWN
19392002-09-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1940
1941 * gc-malloc.c (scm_gc_register_collectable_memory): more overflow
1942 protection.
1943
1e71eafb
HWN
19442002-09-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1945
1946 * inline.h: include stdio.h
1947
1948 * smob.c (free_print): abort if scm_debug_cell_accesses_p is set
1949
61ef9c1f
HWN
19502002-09-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1951
dac04e9f
HWN
1952 * gc-segment.c (scm_i_make_initial_segment): check user settings
1953 for sanity.
1954
1955 * gc-malloc.c (scm_gc_init_malloc): check user settings for
1956 sanity.
dac04e9f
HWN
1957
1958 * gc-freelist.c (scm_init_freelist): check user settings for sanity.
1959
ffd72400
HWN
1960 * struct.h: change scm_structs_to_free to scm_i_structs_to_free
1961
1962 * gc-malloc.c (scm_gc_register_collectable_memory): use floats;
1e71eafb
HWN
1963 these won't ever wrap around with high memory usage. Thanks to
1964 Sven Hartrumpf for finding this.
ffd72400 1965
5bd4a949
HWN
1966 * gc-freelist.c: include <stdio.h>
1967
61ef9c1f
HWN
1968 * gc-malloc.c: add DEBUGINFO for mtrigger GCs.
1969
ffd0ef3b
MV
19702002-09-01 Marius Vollmer <mvo@zagadka.ping.de>
1971
a27e3d14
MV
1972 * vectors.h (SCM_VECTOR_REF): New.
1973
ffd0ef3b
MV
1974 * snarf.h (SCM_DEFINE_PUBLIC): New.
1975
f8a1712b
MV
19762002-08-30 Marius Vollmer <mvo@zagadka.ping.de>
1977
1978 * socket.c (scm_addr_vector): Added size of address to arguments.
1979 Use it to avoid accessing a non-existent path in a sockaddr_un.
1980 Changed all callers.
1981
7200a36b
HWN
19822002-08-29 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1983
1383773b
HWN
1984 * gc.h: remove DOUBLECELL card flags.
1985
1986 * gc-malloc.c (scm_calloc): try to use calloc() before calling
1987 scm_realloc().
1988
1989 * gc-segment.c (scm_i_initialize_heap_segment_data): remove card
1990 init loop; handle this from scm_init_card_freelist()
1991
1992 * gc-card.c (scm_init_card_freelist): init bit vector here.
1993
7200a36b 1994 * numbers.c (scm_make_real): prevent reordering of statements
8fa5786d 1995 num2float.i.c (FLOAT2NUM): idem
7200a36b 1996
9981de3a
HWN
19972002-08-27 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1998
1999 * eval.h: prepend libguile/ to include path
2000
19647556
MV
20012002-08-26 Marius Vollmer <mvo@zagadka.ping.de>
2002
2003 * script.c (scm_compile_shell_switches): Added "2002" to Copyright
2004