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