* eval.c, eval.h (scm_m_expand_body, m_expand_body): Deprecated
[bpt/guile.git] / libguile / ChangeLog
CommitLineData
328dc9a3
DH
12003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
2
3 * eval.c, eval.h (scm_m_expand_body, m_expand_body): Deprecated
4 public use of scm_m_expand_body in eval.h. In eval.c, renamed
5 scm_m_expand_body to m_expand_body and made it static. Added
6 deprecated wrapper scm_m_expand_body.
7
8 (scm_eval_body, SCM_CEVAL, SCM_APPLY): Use m_expand_body instead
9 of scm_m_expand_body.
10
c2337a61
KR
112003-11-09 Kevin Ryde <user42@zip.com.au>
12
13 * dynl.c (scm_dynamic_unlink): Need scm_list_1 on error message
14 argument. Reported by Mike Gran.
15
ced8edb0
DH
162003-11-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
17
18 * eval.c (s_missing_body_expression): New static identifier.
19
20 (s_body): Removed.
21
22 (scm_m_expand_body): Fixed core dump when passing a body with
23 defines, but without expressions (see additions to syntax.test).
24 Use ASSERT_SYNTAX to signal syntax errors.
25
0f572ba7
DH
262003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
27
28 * eval.c (canonicalize_define): New static helper function.
29
30 (memoize_define, canonicalize_define): Extract handling of
31 function currying to canonicalize_define.
32
2510c810
DH
332003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
34
35 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
36 Make sure that error checking in debug mode is not worse than in
37 standard mode.
38
34adf7ea
DH
392003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
40
41 * eval.c (scm_m_body, scm_m_lambda): Documentation strings are not
42 handled in scm_m_body any more, but rather in scm_m_lambda.
43
44 (scm_m_body, memoize_named_let, scm_m_let, scm_m_letstar,
45 scm_m_letrec, scm_m_expand_body): Check for validity is done by
46 calling functions of scm_m_body.
47
48 (scm_m_lambda): Avoid unnecessary consing when creating the
49 memoized code.
50
89bff2fc
DH
512003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
52
53 * eval.c (s_expression): Added comment.
54
55 (s_empty_combination, error_unbound_variable): New static
56 identifiers.
57
58 (SCM_VALIDATE_NON_EMPTY_COMBINATION, SCM_EVALIM2, scm_lookupcar1):
59 Use ASSERT_SYNTAX, syntax_error or error_unbound_variable to
60 signal syntax errors.
61
62 (SCM_CEVAL): Separated handling of evaluator bytecodes and other
63 scheme objects.
64
60a49842
DH
652003-10-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
66
67 * eval.c (unmemocar, sym_three_question_marks, scm_unmemocar):
68 Grouped together with unmemocopy, without modifications.
69
70 (build_binding_list, unmemocopy): Renamed names of list arguments
71 and variables to reflect the actual order of the list elements.
72
70c1c108
DH
732003-10-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
74
75 * eval.c (s_defun): New static identifier.
76
77 (scm_m_nil_cond, scm_m_atfop, scm_m_undefine): Add comments. Use
78 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
79 when creating the memoized code.
80
0ee39677
KR
812003-10-19 Kevin Ryde <user42@zip.com.au>
82
83 * numbers.c (scm_ash): Revise docstring as per recent update to manual.
84
85 * numbers.c (scm_i_big2dbl): Rewrite, carefully rounding to "closest"
86 in accordance with R5RS, which just mpz_get_d doesn't really give.
87
9a848baf
DH
882003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
89
90 * eval.c (s_bad_slot_number): New static identifier.
91
92 (scm_m_atslot_ref, scm_m_atslot_set_x): Use ASSERT_SYNTAX to
93 signal syntax errors. Avoid unnecessary consing when creating the
94 memoized code.
95
da48db62
DH
962003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
97
98 * eval.c (scm_m_cont, scm_m_at_call_with_values,
99 scm_m_generalized_set_x): Use ASSERT_SYNTAX to signal syntax
100 errors. Avoid unnecessary consing when creating the memoized
101 code.
102
103 (scm_m_generalized_set_x): Let scm_m_set_x handle the R5RS
104 standard case. Make sure line and file information are copied to
105 every created expression.
106
82b3e2c6
DH
1072003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
108
109 * eval.c (scm_m_set_x, scm_m_apply, scm_m_atbind): Use
110 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
111 when creating the memoized code.
112
113 (scm_m_atbind): Reversed the order, in which the init expressions
114 are stored and executed. The order of execution is now equal to
115 the order in which the initializers of the let-forms are executed.
116 Use check_bindings and transform_bindings.
117
118 (SCM_CEVAL): Eliminated SCM_NIMP in favor of more appropriate
119 !SCM_NULLP. Added some comments.
120
21628685
DH
1212003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
122
123 * eval.c: Sorted include files alphabetically.
124
125 (scm_m_begin): Added comment.
126
127 (scm_m_or): Use ASSERT_SYNTAX to signal syntax errors. Avoid
128 unnecessary consing when creating the memoized code.
129
130 (iqq, scm_m_quasiquote, scm_m_quote): Use ASSERT_SYNTAX to signal
131 syntax errors. Be more specific about the kind of error that was
132 detected.
133
134 (scm_m_quote, unmemocopy): As an optimization, vector constants
135 are now inserted unquoted into the memoized code. During
136 unmemoization the quotes are added again to provide syntactically
137 correct code.
138
d6754c23
DH
1392003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
140
141 * eval.c (scm_m_let, scm_m_letstar, scm_m_letrec,
142 scm_m_expand_body, check_bindings): Extracted syntax checking of
143 bindings to new static function check_bindings.
144
145 (scm_m_let, memoize_named_let): Extracted handling of named let to
146 new static function memoize_named_let.
147
148 (transform_bindings, scm_m_let, scm_m_letstar, scm_m_letrec): Use
149 ASSERT_SYNTAX to signal syntax errors. Be more specific about the
150 kind of error that was detected. Avoid use of SCM_CDRLOC. Avoid
151 unnecessary consing when creating the memoized code.
152
03a3e941
DH
1532003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
154
155 * eval.c (s_bad_formals, s_bad_formal, s_duplicate_formal): New
156 static identifiers.
157
158 (s_clauses, s_formals, s_duplicate_formals): Removed.
159
160 (scm_m_lambda): Use ASSERT_SYNTAX to signal syntax errors. Be more
161 specific about the kind of error that was detected. Prepare for
162 easier integration of changes for separated memoization.
163
da48db62 1642003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
4610b011
DH
165
166 * eval.c (s_duplicate_binding): New static identifier.
167
168 (scm_m_case): Call scm_c_memq instead of implementing it inline.
169
170 (scm_m_define): Added comment about how we check for duplicate
171 formals.
172
173 (scm_m_do): Added check for duplicate bindings.
174
175 (scm_m_if): Use ASSERT_SYNTAX to signal syntax errors. Avoid
176 unnecessary consing when creating the memoized code.
177
178 (scm_c_improper_memq, c_improper_memq, scm_m_lambda): Renamed
179 scm_c_improper_memq to c_improper_memq, since it is not exported.
180
181 (transform_bindings): Call scm_c_memq rather than
182 scm_c_improper_memq.
183
184 (SCM_CEVAL): Simplified handling of SCM_IM_IF forms.
185
da48db62 1862003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
a954ce1d
DH
187
188 * eval.c (s_bad_bindings, s_bad_binding, s_bad_exit_clause): New
189 static identifiers.
190
191 (scm_m_do): Use ASSERT_SYNTAX to signal syntax errors. Be more
192 specific about the kind of error that was detected. Avoid use of
193 SCM_CDRLOC. Avoid unnecessary consing when creating the memoized
194 code, this way also making sure that file name, line number
195 information etc. remain available.
196
da48db62 1972003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
8ae95199
DH
198
199 * eval.c (memoize_as_thunk_prototype): New static function.
200
201 (scm_m_delay, scm_m_future): Use memoize_as_thunk_prototype.
202 Avoid unnecessary consing when creating the memoized code.
203
9b9a35b6
KR
2042003-10-12 Kevin Ryde <user42@zip.com.au>
205
206 * list.c (scm_append): Track argument number and use in error.
207
cc56ba80
DH
2082003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
209
210 * eval.c (s_missing_expression, s_bad_variable): New static
211 identifiers.
212
213 (scm_m_define): Use ASSERT_SYNTAX to signal syntax errors. Prefer
214 R5RS terminology for the naming of variables. Be more specific
215 about the kind of error that was detected. Make sure file name,
216 line number etc. are added to all freshly created expressions.
217 Avoid unnecessary consing when creating the memoized code.
218
609a8b86
DH
2192003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
220
221 * eval.c (s_extra_expression, s_misplaced_else_clause,
222 s_bad_cond_clause, s_missing_recipient): New static identifiers.
223
224 (s_extra_case_clause): Removed.
225
226 (scm_m_case, scm_m_cond): If a clause appears after an else
227 clause, report a misplaced else clause.
228
229 (scm_m_cond): Use ASSERT_SYNTAX to signal syntax errors. Be more
230 specific about the kind of error that was detected. Handle bound
231 'else and '=>. Avoid unnecessary consing when creating the
232 memoized code.
233
234 (scm_m_cond, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
235 the syntactic keyword 'else and SCM_IM_ARROW to memoize the
236 syntactic keyword '=>.
237
58a2510b
DH
2382003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
239
240 * eval.c (scm_m_case): Allow empty lists of case labels.
241
2a6f7afe
DH
2422003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
243
244 * tags.h (SCM_IM_ELSE, SCM_IM_ARROW): New memoizer codes.
245
246 * print.c (scm_isymnames): Add names for the new memoizer codes.
247
248 * eval.c (s_missing_clauses, s_bad_case_clause,
249 s_extra_case_clause, s_bad_case_labels, s_duplicate_case_label,
250 literal_p): New static identifiers.
251
252 (scm_m_case): Use ASSERT_SYNTAX to signal syntax errors. Be more
253 specific about the kind of error that was detected. Check for
254 duplicate case labels. Handle bound 'else. Avoid unnecessary
255 consing when creating the memoized code.
256
257 (scm_m_case, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
258 the syntactic keyword 'else.
259
e6729603
DH
2602003-10-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
261
262 * eval.c (s_bad_expression, syntax_error_key, syntax_error,
263 ASSERT_SYNTAX, ASSERT_SYNTAX_2): New static identifiers.
264
265 (scm_m_and): Use ASSERT_SYNTAX to signal syntax errors. Avoid
266 unnecessary consing when creating the memoized code.
267
9ddeb776
KR
2682003-10-09 Kevin Ryde <user42@zip.com.au>
269
270 * numbers.c (scm_inexact_to_exact): Don't depend on what double->long
271 cast gives for values bigger than a long, or for nan or inf.
272
df5af69a
DH
2732003-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
274
275 * smob.h (scm_make_smob_type): Made the declaration match the
276 definition.
277
da0e6c2b
MV
2782003-10-07 Marius Vollmer <mvo@zagadka.de>
279
280 * goops.c, objects.h, smob.c, smob.h: Make type names char
281 const * instead of char *. Thanks to Paul Jarc!
282
591924eb
KR
2832003-10-02 Kevin Ryde <user42@zip.com.au>
284
ff6ea7b9 285 * strports.c (scm_call_with_output_string): scm_get_output_string
591924eb
KR
286 rather than scm_strport_to_string, so as to guard against the port
287 having been closed by the called procedure. Reported by Nic Ferrier.
288
f03314f9
DH
2892003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
290
291 * numbers.h (SCM_INEXACTP): Removed uses of SCM_TYP16S.
292
293 * tags.h, deprecated.h (SCM_TYP16S): Deprecated and moved from
294 tags.h to deprecated.h.
295
534c55a9
DH
2962003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
297
298 This set of patches introduces a new tc7 code scm_tc7_number for
299 numbers. Bignums, reals and complex numbers are turned from smobs
300 into subtypes of scm_tc7_number.
301
302 * tags.h (scm_tc7_number): New.
303
304 * eq.c (scm_equal_p), eval.c (SCM_CEVAL), evalext.c
305 (scm_self_evaluating_p), gc-card.c (scm_i_sweep_card), gc-mark.c
306 (scm_gc_mark_dependencies), goops.c (create_smob_classes), hash.c
307 (scm_hasher), numbers.c, numbers.h (SCM_NUMP), objects.c
308 (scm_class_of), print.c (scm_iprin1), smob.c
309 (scm_smob_prehistory): Don't handle bignums, reals and complex
310 numbers as subtypes of scm_tc7_smob any more.
311
312 * numbers.h, tags.h (scm_tc16_big, scm_tc16_real,
313 scm_tc16_complex): Moved definitions from tags.h to numbers.h.
314
29c4382a
DH
3152003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
316
317 * numbers.c (scm_make_complex), gc-card.c (scm_i_sweep_card): Use
318 sizeof (scm_t_complex) to determine the memory size of the
319 malloc'd area for complex numbers.
320
47ae1f0e
DH
3212003-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
322
323 * numbers.c (scm_bigequal): Fixed.
324
859b6b2f
MV
3252003-09-16 Marius Vollmer <mvo@zagadka.de>
326
327 * stime.c (scm_current_time): 'time' does not set errno so don't
328 use SCM_SYSERROR for reporting errors.
329
e17d318f
DH
3302003-09-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
331
332 This set of patches eliminates the dependency between the
333 implementation of evaluator specific memoization codes and special
334 constants like #f, '() etc. ('flags'), which are not evaluator
335 specific. The goal is to remove definitions of evaluator
336 memoization codes completely from the public interface. This will
337 make it possible to experiment more freely with optimizations of
338 guile's internal representation of memoized code.
339
340 * objects.c (scm_class_of): Eliminate dependency on SCM_ISYMNUM.
341
342 * print.c (iflagnames): New array, holding the printed names of
343 guile's special constants ('flags').
344
345 (scm_isymnames): Now holds only the printed names of the
346 memoization codes.
347
348 (scm_iprin1): Separate the handling of memoization codes and
349 guile's special constants.
350
351 * tags.h (scm_tc9_flag, SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA,
352 SCM_IFLAGNUM): new
353
354 (scm_tc8_char, scm_tc8_iloc, SCM_BOOL_F, SCM_BOOL_T,
355 SCM_UNDEFINED, SCM_EOF_VAL, SCM_EOL, SCM_UNSPECIFIED, SCM_UNBOUND,
356 SCM_ELISP_NIL, SCM_IM_DISPATCH, SCM_IM_SLOT_REF,
357 SCM_IM_SLOT_SET_X, SCM_IM_DELAY, SCM_IM_FUTURE,
358 SCM_IM_CALL_WITH_VALUES, SCM_IM_NIL_COND, SCM_IM_BIND): Changed
359 values.
360
361 (SCM_IFLAGP): SCM_IFLAGP now only tests for flags.
362
363 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Generalized to use the
364 tc9 macros and scm_tc9_flag.
365
eecac806
MV
3662003-09-15 Marius Vollmer <mvo@zagadka.de>
367
368 * posix.c (scm_setgroups): Check that the gid list is not too
369 long. Thanks to Paul Jarc!
370
22f2cf2d
DH
3712003-09-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
372
373 * tags.h: Reduced the number of short instructions from 14 to 13.
374 The typecode of the former 14th short instruction is now used to
375 represent long instructions. Changed some comments to reflect
376 this fact.
377
378 (SCM_MAKISYM): ISYMs get a new tc7 code, namely the one that was
379 previously used by SCM_IM_DEFINE.
380
381 (SCM_IM_DEFINE): Turned into a long instruction.
382
383 * eval.c (unmemocopy, SCM_CEVAL): Treat SCM_IM_DEFINE as a long
384 instruction.
385
386 * eval.c (SCM_CEVAL): Since characters and iflags have now a tc7
387 code that is separate from all instructions, one level of dispatch
388 for long instructions can be eliminated.
389
390 * print.c (scm_isymnames): Removed some commented code.
391
62f548e1
MV
3922003-09-12 Marius Vollmer <mvo@zagadka.de>
393
97a61c5f
MV
394 * __scm.h (SCM_FENCE): Use __memory_barrier with the Intel
395 compiler on IA64.
396
50e0ba57
MV
397 * hashtab.h (scm_tc16_hashtable): Added "extern" declaration.
398
399 * modules.c (scm_module_reverse_lookup): Check that the obarray
400 really is a hashtable and do nothing if not.
401
62f548e1
MV
402 * inline.h: Use "extern inline" only with GCC. Use "static
403 inline" else.
404
0d5e3480
DH
4052003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
406
407 * numbers.h (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Removed uses
408 of SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
409
410 * numbers.h, deprecated.h (SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP,
411 SCM_SLOPPY_COMPLEXP): Deprecated and moved from numbers.h to
412 deprecated.h.
413
6b412e91
DH
4142003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
415
416 * eq.c (scm_eqv_p, scm_equal_p): Removed uses of
417 SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
418
419 * eq.c (scm_eqv_p, scm_equal_p): Reordered comparisons from
420 0.0==some_expression to some_expression==0.0. The latter is
421 better readable. The former is preferred by some people, since it
422 leads to a compiler error when confusing == with =. However, when
423 using gcc, a warning will be issued if in an if-statement an
424 assigment appears. Since many Guile developers are using gcc,
425 such errors will not remain unnoticed anyway. We can therefore
426 focus on better readability.
427
7e3b25bf
DH
4282003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
429
430 * tags.h: Added description of Guile's type system. Removed some
431 old and misleading comments.
432
3ea39242
DH
4332003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
434
435 * unit.c (scm_cvref): Eliminate unnecessary uses of SCM_NIMP,
436 SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
437
5d7d39ff
DH
4382003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
439
440 * numbers.h (SCM_MAKINUM): Define in terms of scm_tc2_int.
441
442 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Define in terms of the
443 respective SLOPPY macro.
444
baa84a20
DH
4452003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
446
447 * eq.c (scm_equal_p): Use SCM_TYP7 to check if an object is of
448 type string, not SCM_TYP7S.
449
ba15f500
KR
4502003-09-03 Kevin Ryde <user42@zip.com.au>
451
452 * numbers.c (scm_lognot): Correction to docstring, ones-complement not
453 2s-complement.
454
53bb8782
KR
455 * stime.c (scm_strptime): Add comment about glibc strptime %s and
456 current timezone requiring SCM_DEFER_INTS.
457
defdc4b4
NJ
4582003-08-30 Neil Jerram <neil@ossau.uklinux.net>
459
460 * script.c (scm_compile_shell_switches): Make -s switch optional
461 if file to be loaded does not begin with a `-'. (Thanks to Aaron
462 VanDevender for the patch!)
463
0f008a15
KR
4642003-08-30 Kevin Ryde <user42@zip.com.au>
465
466 * numbers.c (scm_lognot): Rewrite using ~ and mpz_com, for directness
467 and to have non-integer types rejected as per other logical funcs.
468
438a3ba1
KR
4692003-08-28 Kevin Ryde <user42@zip.com.au>
470
471 * gc.h (scm_remember_upto_here_1): Revise comments on the asm form.
472
98dceb37
KR
4732003-08-23 Kevin Ryde <user42@zip.com.au>
474
475 * simpos.c (scm_system): Remove SCM_DEFER_INTS, system() should be
476 thread safe, and could take a long time too.
477
1fa79a38
KR
4782003-08-22 Kevin Ryde <user42@zip.com.au>
479
480 * numbers.c (scm_difference): Correction to bignum - negative inum.
481
d97f9b42
KR
4822003-08-14 Kevin Ryde <user42@zip.com.au>
483
484 * gc.h (scm_remember_upto_here_1, scm_remember_upto_here_2)
485 [__GNUC__]: Use volatile asm macros rather than a function call.
486 * gc.c (scm_remember_upto_here_1, scm_remember_upto_here_2): Undefine
487 macros while defining functions.
488
489 * simpos.c (getenv): Use <stdlib.h> for prototype.
490 (scm_system): In docstring, refer to status:exit-val rather than
491 "functions above".
492
b9052fcc
KR
4932003-08-09 Kevin Ryde <user42@zip.com.au>
494
495 * srcprop.c (scm_source_properties): Return plist from hash if it's a
496 list set by source-properties! rather than an SRCPROPS object,
497
8e5b4b9e
KR
4982003-07-29 Kevin Ryde <user42@zip.com.au>
499
500 * properties.c (scm_primitive_property_ref): In docstring, note
501 parameters to not-found-proc, use hyphens rather than underscores for
502 that parameter name.
503 (scm_primitive_property_set_x): In docstring, VAL is the value
504 parameter not CODE.
505
20703ac4
MV
5062003-07-27 Marius Vollmer <mvo@zagadka.de>
507
c6ccee34
MV
508 * print.c (scm_print_symbol_name): handle more weird characters by
509 escaping the symbol name properly. Thanks to Paul Jarc!
510
2f4931bf
MV
511 * posix.h (scm_setgroups): New prototype.
512 * posix.c (scm_setgroups): New. Thanks to Paul Jarc!
513 (scm_getgroups): Handle groups ids that don't fit into a fixnum.
514 Don't use SCM_WRITABLE_VELTS.
515
265c456f
MV
516 * gc.h (SCM_GC_SET_CELL_BVEC): New.
517 * gc-card.c (scm_i_init_card_freelist): Use it. Thanks to
518 Matthias Koeppe!
519
20703ac4
MV
520 * __scm.h (SCM_C_INLINE_KEYWORD): New.
521 * numbers.c: Use it in place of SCM_C_INLINE so that the code
522 compiles when SCM_C_INLINE is undefined.
523
59c4bb82
DH
5242003-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
525
526 * __scm.h: Reformulated the architecture and compiler properties
527 in terms of properties of scm_t_bits and SCM variables rather than
528 in terms of c standard types. This is since it is not known which
529 of the standard types scm_t_bits and SCM variables will be defined
530 to.
531
d7850c8d
KR
5322003-07-24 Kevin Ryde <user42@zip.com.au>
533
534 * numbers.c (scm_angle): Use scm_flo0 for non-negative inum, bignum
535 and real.
536
8a0c514f
KR
5372003-07-18 Kevin Ryde <user42@zip.com.au>
538
539 * numbers.c (scm_product): In complex * bignum, correction to
540 REAL/IMAG fetch, x is the complex, not y.
541
0aacf84e
MD
5422003-07-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
543
544 * numbers.c (scm_odd_p, scm_even_p): Bugfix: Treat result of
545 scm_inf_p test as Scheme values.
546 (scm_sum): Bugfix: Normalize bignum created from a negative bignum
547 and a positive inum.
548 Use GNU indentation style.
549
192de9a4
DH
5502003-07-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
551
552 * values.c (scm_values): Build lists of length 1 by using
553 scm_list_1 instead of using scm_cons.
554
bbb4438a
KR
5552003-07-10 Kevin Ryde <user42@zip.com.au>
556
b58c85ce
KR
557 * deprecation.c (scm_c_issue_deprecation_warning_fmt): Add va_end.
558 * list.c (scm_list_n): Ditto.
559
bbb4438a
KR
560 * gc-malloc.c (scm_gc_realloc): Define "ptr" at start of function.
561
287f8ad1
KR
5622003-07-08 Matthias Koeppe <mkoeppe@merkur.math.uni-magdeburg.de>
563
564 * tags.h (scm_t_bits, scm_t_signed_bits, etc): Avoid solaris empty
565 defines of INTPTR_MAX and UINTPTR_MAX, combine conditionals for
566 scm_t_bits and scm_t_signed_bits to avoid any chance of one and not
567 the other using intptr_t.
568
005d2366
KR
5692003-07-08 Kevin Ryde <user42@zip.com.au>
570
0aacf84e 571 * numbers.c (scm_make_polar): Use sincos, when available.
005d2366
KR
572 (scm_magnitude): Use hypot.
573
574 * ports.c (scm_char_ready_p, scm_peek_char): In docstrings, don't use
575 @footnote since it doesn't go through to guile-procedures.txt.
576
577 * threads.c (scm_call_with_new_thread): In docstring, use "( )"
578 outside @var to quieten makeinfo, and use @code.
579
cbfe8e62
HWN
5802003-07-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
581
582 * gc-malloc.c (decrease_mtrigger): new function
583 (increase_mtrigger): new function, separate debug registering and
584 mtrigger administration.
585 (scm_gc_realloc): bugfix: do mtrigger administration before the
586 actual realloc, for the realloc might invalidate a GC-d segment of
587 memory. Thanks to Sam Hocevar for pointing this out.
588 (scm_gc_realloc): use scm_malloc_reregister instead of
589 unregistering and registering in sequence.
590
aeb4c2e1
HWN
5912003-07-03 Han-Wen Nienhuys <hanwen@cs.uu.nl>
592
593 * __scm.h (SCM_ASSERT): change "else" expansion to "do { } while (0)"
594
4c27f8d2
HWN
5952003-07-02 Han-Wen Nienhuys <hanwen@cs.uu.nl>
596
597 * __scm.h (SCM_ASRTGO): add "else" to macro expansions with if
598 clauses.
599
983e697d
MV
6002003-06-29 Marius Vollmer <mvo@zagadka.de>
601
602 * deprecated.h (SCM_OPDIRP, scm_fport, scm_option, scm_srcprops,
603 scm_srcprops_chunk, scm_info_frame, scm_stack, scm_array,
604 scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_FUNC_NAME, SCM_WTA,
605 RETURN_SCM_WTA, SCM_VALIDATE_NUMBER_COPY,
606 SCM_VALIDATE_NUMBER_DEF_COPY, SCM_VALIDATE_OPDIR): Re-added from
607 the release_1_6 branch.
608
78b6566e
SJ
6092003-06-25 Stefan Jahn <stefan@lkcc.org>
610
611 * continuations.c: Redeclaration of getcontext() via the
612 __asm__ ("getcontext") directive.
613
614 * continuations.h: Include <ucontext.h> instead of
615 <sys/ucontext.h>.
616
1ebb8497
KR
6172003-06-21 Kevin Ryde <user42@zip.com.au>
618
619 * numbers.c (_GNU_SOURCE): #define, to get C99 things.
620 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, $asinh, $acosh,
621 $atanh, truncate): Use C library asinh, acosh, atanh and trunc, when
622 available.
623 (scm_inexact_to_exact): Expand isfinite to its definition !xisinf.
624 (isfinite): Remove, conflicts with C99 isfinite().
625
fbf85ba4
MV
6262003-06-19 Marius Vollmer <mvo@zagadka.de>
627
628 * deprecated.h, deprecated.c (scm_strhash, scm_sym2ovcell_soft,
629 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
630 scm_symbol_value0, scm_string_to_obarray_symbol scm_intern_symbol,
631 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
632 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp): Re-added from
633 the release_1_6 branch.
634
fcc5d734
SJ
6352003-06-14 Stefan Jahn <stefan@lkcc.org>
636
637 * threads.h: Redefined scm_getspecific() and scm_setspecific()
638 to be functions instead of macros.
639
640 * threads.c: Conditionalized inclusion of <sys/time.h> and
641 <unistd.h>.
642 (scm_getspecific, scm_setspecific): Made these two function
643 real part of the API.
644
645 * posix.c (s_scm_putenv): Added some code to make a
646 (putenv "FOO="), i.e. setting an empty string, work also on
647 Win32 systems. Thanks to Kevin Ryde for the proposal.
648
c3ae8e07
KR
6492003-06-12 Kevin Ryde <user42@zip.com.au>
650
75b14838
KR
651 * posix.c (scm_putenv): Free temporary ptr in mingw unset. Add
652 freebsd to comment about need to use unsetenv.
c3ae8e07 653
9d9fa092
MV
6542003-06-02 Marius Vollmer <mvo@zagadka.de>
655
656 * ports.c (scm_peek_char): Safe the column of the port around the
657 getc/ungetc calls. Thanks to Dr. Peter Ivanyi!
658
f2478375
KR
6592003-06-07 Kevin Ryde <user42@zip.com.au>
660
661 * tags.h: Use inttypes.h and stdint.h when available, for INTPTR_MAX
662 and friends required by scm_t_bits setups.
663
6375e040
DH
6642003-06-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
665
666 * tags.h (scm_tc2_int): Added.
667
668 * tags.h (scm_tc3_int_1, scm_tc3_int_2): Expressed in terms of
669 scm_tc2_int.
670
671 * tags.h (scm_tcs_cons_imcar, scm_tcs_cons_nimcar, scm_tcs_struct,
672 scm_tcs_closures): Hard coded values replaced by symbolic ones.
673
f5c6ec2f
DH
6742003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
675
676 * eval.c: Partially undid my patch from 2003-05-31. This patch
677 caused the segfault referenced in the previous changelog entry.
678
47dbd81e
DH
6792003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
680
681 * tags.h: Fixed comment about the immediate type code layout.
682
683 * eval.c: Fixed handling of non-special instructions. Without
684 this patch, guile will segfault on (#\0) and similar instructions.
685
3ec52c51
KR
6862003-06-05 Kevin Ryde <user42@zip.com.au>
687
688 * numbers.c (scm_max, scm_min): For inum, bignum and real, if other
689 operand is NaN, then return NaN. Also avoid passing NaN to mpz_cmp_d.
690
e418bd7c
KR
691 * read.c (scm_input_error): Pass arg list parameter to scm_error_scm,
692 rather than SCM_EOL. Needed by "Unknown # object" case in scm_lreadr.
693
d0624e39
DH
6942003-06-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
695
696 * __scm.h, gc-card.c (SCM_DEBUG_DEBUGGER_SUPPORT,
697 SCM_DEBUG_DEBUGGING_SUPPORT): Renamed macro
698 SCM_DEBUG_DEBUGGER_SUPPORT to SCM_DEBUG_DEBUGGING_SUPPORT and
699 generalized it to apply not only to C level functions but also to
700 scheme level functions.
701
702 * debug.c, debug.h, eval.c (make-iloc, scm_make_iloc, iloc?,
703 scm_iloc_p, dbg-make-iloc, scm_dbg_make_iloc, dbg-iloc?,
704 scm_dbg_iloc_p): Moved functions scm_make_iloc, scm_iloc_p to
705 eval.c, made them available under SCM_DEBUG_DEBUGGING_SUPPORT == 1
706 only and renamed them to scm_dbg_make_iloc, scm_dbg_iloc_p,
707 respectively.
708
709 * deprecated.h, eval.c, eval.h (SCM_ILOC00, SCM_IDINC,
710 SCM_IDSTMSK): Deprecated. The macro definitions are moved from
711 eval.h into eval.c and a copy is placed into deprecated.h.
712
713 * eval.c, eval.h (SCM_MAKE_ILOC): Removed from eval.h and placed
714 into eval.c. This definition was not part of the API in any
715 officially released version of guile and thus does not need to go
716 through a phase of deprecation.
717
e90c3a89
DH
7182003-06-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
719
d0624e39
DH
720 * deprecated.c, deprecated.h, eval.c, eval.h (scm_s_expression,
721 scm_s_test, scm_s_body, scm_s_bindings, scm_s_variable,
722 scm_s_clauses, scm_s_formals): Deprecated. In eval.c the
e90c3a89
DH
723 definitions are make static and renamed from scm_s_xxx to s_xxx.
724 In deprecated.c the original definitions are copied.
725
d0624e39
DH
726 * deprecated.h, eval.c, eval (SCM_EVALIM2, SCM_EVALIM, SCM_XEVAL,
727 SCM_XEVALCAR): Deprecated. The macro definitions are moved from
e90c3a89
DH
728 eval.h into eval.c and a copy (slightly modified to work in user
729 code) is placed into deprecated.h.
730
731 * eval.c: Use the local static s_xxx definitions instead of the
732 scm_s_xxx definitions throughout.
733
14b18ed6
DH
7342003-06-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
735
736 This set of patches separates the representation of the cxr family
737 of functions (car, cdr etc.) from the dsubr family of functions
738 (i. e. functions that take a double precision floating point
739 argument). Further, the algorithm for handling the cxr function
740 is improved.
741
742 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_1), numbers.c
743 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, scm_round, floor,
744 ceil, sqrt, fabs, exp, log, sin, cos, tan, asin, acos, atan, sinh,
745 cosh, tanh), objects.c (scm_class_of), procprop.c
746 (scm_i_procedure_arity), ramap.c (scm_array_map_x), tags.h
747 (scm_tc7_dsubr, scm_tcs_subrs): Introduce scm_tc7_dsubr as new
748 typecode for the dsubr family of functions.
749
750 * ramap.c (ramap_cxr, ramap_dsubr): Renamed ramap_cxr to
751 ramap_dsubr.
752
753 * eval.c (SCM_CEVAL, SCM_APPLY, call_cxr_1), pairs.c
754 (scm_init_pairs): Make use of the (now usable) second cell element
755 of a scm_tc7_cxr function to implement the cxr family of functions
756 more efficiently.
757
2ca0d207
DH
7582003-05-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
759
760 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_0,
761 scm_trampoline_1, scm_trampoline_2): Postpone error cases to the
762 end of an if-else-if-sequence of checks.
763
9a069bdd
DH
7642003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
765
766 * eval.c (SCM_CEVAL): Improved readability of call-with-values
767 execution. Generalize apply_closure to apply_proc and use that
768 for call-with-values.
769
e910e9d2
DH
7702003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
771
772 * eval.c (SCM_CEVAL): Avoid one level of indirection when applying
773 a non closure.
774
1e498fbd
SJ
7752003-05-30 Stefan Jahn <stefan@lkcc.org>
776
777 * posix.c (s_scm_putenv): Use the new HAVE_UNSETENV
778 appropriately for mingw32 hosts.
779
780 * numbers.h: Defining copysign(), isnan() and finite() to
781 be prefixed by a single '_' for mingw32 hosts.
782
c47e2599
KR
7832003-05-30 Kevin Ryde <user42@zip.com.au>
784
785 * numbers.c (z_negative_one): New variable.
786 (scm_init_numbers): Initialize it.
787 (scm_logcount): Use it and mpz_hamdist to count zeros for negatives.
788
2e945bcc
SJ
7892003-05-29 Stefan Jahn <stefan@lkcc.org>
790
791 * win32-dirent.c: Use malloc() instead of scm_malloc().
792
793 * stime.c (s_scm_strftime): Add a type cast to avoid compiler
794 warning.
795
796 * posix.c (s_scm_putenv): Disable use of unsetenv() for the
797 mingw32 build.
798
799 * modules.c (s_scm_module_import_interface): Renamed local
800 variable interface to _interface. Seems like 'interface'
801 is a special compiler directive for the mingw32 compiler.
802
803 * mkstemp.c: Provide prototype to avoid compiler warning.
804
805 * load.c (s_scm_search_path): Fixed absolute and relative
806 path detections for native Windows platforms.
807
808 * gc.h, threads.h: Export some more symbols using SCM_API (necessary
809 to build on mingw32).
810
811 * gc-freelist.c ("s_scm_map_free_list",
812 "s_scm_gc_set_debug_check_freelist_x"): Fixed use of FUNC_NAME.
813
814 * fports.c (fport_fill_input): Disable use of
815 fport_wait_for_input() on Win32 platforms.
816
817 * filesys.c (s_scm_basename): Fixed __MINGW32__ code.
818
819 * Makefile.am: Modified some rules for cross compiling.
820
ddd8f927
DH
8212003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
822
823 * eval.c (SCM_CEVAL): In case of an application, all checks for a
824 proper function object and the correct number of arguments are now
825 performed in the application part of SCM_CEVAL.
826
827 (scm_badformalsp): Removed.
828
f8ba2197
DH
8292003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
830
831 * deprecated.c (scm_read_and_eval_x): Fixed C99-ism.
832
79f55b7c
MD
8332003-05-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
834
a502595f
MD
835 * num2integral.i.c (NUM2INTEGRAL): Avoid warning about conditional
836 always being false by inserting preprocessor conditional. (Thanks
837 to Bruce Korb.)
838
79f55b7c
MD
839 * __scm.h (SCM_STACK_PTR): New macro. (Cast argument through
840 (void *) in order to avoid an aliasing warning; thanks to Bruce
841 Korb.)
842
843 * stackchk.h (SCM_STACK_OVERFLOW_P): Use SCM_STACK_PTR.
844
845 * threads.c (suspend, launch_thread, scm_threads_mark_stacks): Use
846 SCM_STACK_PTR.
847
848 * threads.c (scm_threads_mark_stacks): Bugfix: Changed
849 thread->base --> t->base.
850
851 * eval.c (SCM_CEVAL): Don't cast argument of SCM_STACK_OVERFLOW_P.
852
47dee228
MV
8532003-05-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
854
855 * deprecated.h, deprecated.c (scm_makstr, scm_makfromstr,
856 scm_variable_set_name_hint, scm_builtin_variable,
857 scm_internal_with_fluids, scm_make_gsubr,
858 scm_make_gsubr_with_generic, scm_create_hook, SCM_LIST0,
859 SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5, SCM_LIST6,
860 SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify, scm_sloppy_memq,
85494587
MV
861 scm_sloppy_memv, scm_sloppy_member, scm_read_and_eval_x,
862 scm_subr_entry, SCM_SUBR_DOC, scm_make_subr,
863 scm_make_subr_with_generic, scm_make_subr_opt,
864 scm_call_catching_errors, scm_make_smob_type_mfpe,
865 scm_set_smob_mfpe, scm_strprint_obj, scm_read_0str, scm_eval_0str,
866 SCM_CHARS, SCM_UCHARS, SCM_LENGTH): Re-added from the release_1_6
867 branch. Some have been slightly rewritten.
868 (scm_i_object_chars, scm_i_object_length): New, to support
869 SCM_CHARS, SCM_UCHARS, and SCM_LENTH.
870
e681d187
DH
8712003-05-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
872
873 * eval.c (scm_m_do, unmemocopy, SCM_CEVAL): Reversed order of
874 names and inits in the memoized code of do.
875
7e59d9d4
MD
8762003-05-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
877
878 * c-tokenize.lex (yyget_lineno, yyget_in, yyget_out, yyget_leng,
879 yyget_text, yyset_lineno, yyset_in, yyset_out, yyget_debug,
880 yyset_debug, yylex_destroy): Added prototypes (otherwise we'll get
881 a compilation error if error-on-warning is enabled).
882
9950a42c
MV
8832003-05-17 Marius Vollmer <mvo@zagadka.de>
884
885 * c-tokenize.lex: Gobble up complete lines after a '#'. This
886 removes preprocessor directives from the snarfage that might
887 otherwise confuse us. These directives appear when compiling with
888 "-g3", for example.
889
0068984b
HWN
8902003-05-16 Han-Wen Nienhuys <hanwen@cs.uu.nl>
891
26e68795
HWN
892 * ChangeLog: add my surname
893
0068984b
HWN
894 * srcprop.c (scm_finish_srcprop): use
895 scm_gc_register_collectable_memory()
896 (scm_make_srcprops): idem.
897
131805f0
HWN
8982003-05-14 Han-Wen Nienhuys <hanwen@cs.uu.nl>
899
900 * gc-malloc.c (scm_gc_register_collectable_memory): avoid
901 wrap-around for scm_mtrigger
902 (scm_gc_register_collectable_memory): abort on overflowing
903 scm_mallocated().
904
d4611024
KR
9052003-05-13 Kevin Ryde <user42@zip.com.au>
906
907 * numbers.c (xmpz_cmp_d): New macro, handling infs if gmp doesn't.
908 (scm_num_eq_p, scm_less_p, scm_max, scm_min): Use it.
909
7aaf8dc9
MD
9102003-05-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
911
dfd03fb9
MD
912 * backtrace.c (scm_display_error_message): Introduced fancy
913 printing with max level 7 and length 10. (Purpose: avoid printing
914 gigantic objects in error messages.)
915
916 * print.c, print.h (scm_i_port_with_print_state): New function.
917
918 * print.c (scm_iprin1, scm_printer_apply,
919 scm_port_with_print_state): Use scm_i_port_with_print_state.
920 (scm_simple_format): Modified not to destroy print states.
921 (print_state_mutex): New mutex.
922 (scm_make_print_state, scm_free_print_state, scm_prin1):
923 Lock/unlock print_state_mutex.
924
7aaf8dc9
MD
925 * deprecated.h (SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK):
926 Use current names in definitions.
927
a4d9ffa1
KR
9282003-05-10 Kevin Ryde <user42@zip.com.au>
929
930 * numbers.c (scm_num_eq_p, scm_less_p): Don't pass NaN to mpz_cmp_d.
931
d25e96a4
KR
932 * numbers.c (scm_integer_length): On negative bignums, adjust
933 mpz_sizeinbase to account for it looking at absolute value where we
934 want ones-complement.
935
936 * numbers.c (scm_gcd): In bignum/inum, don't pass yy==0 to mpz_gcd_ui
937 since we're only using the ulong return value, and x might not fit.
938
5bf6a6f0
DH
9392003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
940
941 * eval.c, eval.h, read.c, read.h (scm_sym_dot): Moved from eval to
942 read. This will allow to make the definition in read.c static.
943
f58c472a
DH
9442003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
945
946 * eval.c, eval.h, evalext.c, evalext.h (scm_m_undefine): Moved
947 from evalext to eval. This will allow to make some of the
948 definitions in eval.c static.
949
90382aeb
KR
9502003-05-06 Kevin Ryde <user42@zip.com.au>
951
952 * numbers.c (scm_difference): In inum - bignum, handle negative inum.
953 (scm_logcount): Use mpz_com, not mpz_neg.
954
3b88ed2a
DH
9552003-05-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
956
957 The purpose of this patch is to make guile's internal memoizers
958 distinguishable from memoizing macros created on the scheme level
959 or from user provided primitive memoizing macros. The reason is,
960 that the internal memoizers are the only ones that are allowed to
961 transform their scheme input into memoizer byte code, while all
962 other memoizing macros may only transform scheme code into new
963 scheme code.
964
965 To achieve this, a new macro type 'builtin-macro!' is introduced.
966 Currently, 'builtin-macro!'s are handled as memoizing macros, but
967 this will change when the memoizer and executor are separated.
968
969 * macros.[ch] (scm_i_makbimacro): New.
970
971 * macros.h (SCM_BUILTIN_MACRO_P): New.
972
973 * macros.c (macro_print, scm_macro_type): Support builtin-macro!s.
974
975 * eval.c, goops.c: All of guile's primitive memoizing macros are
976 primitive builtin-macros now.
977
978 * eval.c (scm_macroexp, SCM_CEVAL): Make sure the primitive
979 builtin-macros are handled equally to memoizing macros.
980
b0780eb1
MV
9812003-05-04 Marius Vollmer <mvo@zagadka.de>
982
983 * throw.c (scm_ithrow): Remove "asm volatile" hack. It used to
984 work around a bug in GCC 2.95.2 but is now a bug in itself.
985
1cbf4fe9
MV
9862003-05-02 Marius Vollmer <mvo@zagadka.de>
987
988 * deprecated.h (scm_rstate, scm_rng, SCM_SLOPPY_CONSP,
989 SCM_SLOPPY_NCONSP, scm_tc7_ssymbol, scm_tc7_msymbol,
990 scm_tcs_symbols): New.
991
1a61d41b
MV
9922003-04-30 Marius Vollmer <marius.vollmer@uni-dortmund.de>
993
096ecbaf
MV
994 * deprecated.h, deprecated.c (scm_protect_object,
995 scm_unprotect_object, SCM_SETAND_CAR, SCM_SETOR_CAR,
996 SCM_SET_AND_CDR, SCM_SET_OR_CDR, SCM_FREEP, SCM_NFREEP,
997 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
998 SCM_GCCDR, scm_remember, scm_the_root_module, scm_make_module,
999 scm_ensure_user_module, scm_load_scheme_module, scm_port,
1000 scm_ptob_descriptor, scm_port_rw_active,
1001 scm_close_all_ports_except): New.
1002
1a61d41b
MV
1003 * ports.c (scm_c_port_for_each): New function, mostly copied from
1004 scm_port_for_each.
1005 (scm_port_for_each): Reimplemented using scm_c_port_for_each.
1006 * ports.h (scm_c_port_for_each): New prototype.
1007
c8e1d354
MD
10082003-04-28 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1009
1010 * eval.c (scm_m_atdispatch): Removed until actually needed. (This
1011 macro was introduced in anticipation of GOOPS method compilation
1012 code.)
1013
1014 * goops.c: Removed binding of @dispatch.
1015
a4aa2134
DH
10162003-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
1017
1018 * eval.c, goops.c (@dispatch, @slot-ref, @slot-set!): Move the
1019 instructions that bind the macros on the scheme level back to
1020 goops.c in order to make sure again that the bindings go into the
1021 (oop goops) module and are not visible from the outside.
1022
9fbee57e
DH
10232003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
1024
1025 * eval.c: Non functional change: Separated R5RS and non-R5RS
1026 macros into different sections of the file and ordered the
1027 memoizers alphabetically.
1028
12841895
DH
10292003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
1030
1031 * eval.c (scm_ilookup): Rewritten to improve readability.
1032
6a3f13f0
DH
10332003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
1034
1035 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
1036 Partially reverted patch from 2003-04-23 in oder to find a better
1037 compromise between readability and debuggability.
1038
b0c5d67b
DH
10392003-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
1040
1041 * eval.c, eval.h, goops.c, goops.h (scm_m_atslot_ref,
1042 scm_m_atslot_set_x, scm_m_atdispatch): Move the declarations and
1043 definitions of the special goops memoizers from goops.[ch] to
1044 eval.[ch]. Hmm... it seems that scm_m_atdispatch is not used
1045 throughout guile.
1046
b9ad392e
MD
10472003-04-24 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1048
1049 * ports.c, ports.h (scm_i_port_table_mutex): New mutex.
1050
1051 * fports.c (scm_evict_ports): Lock/unlock scm_i_port_table_mutex.
1052
1053 * ports.c (scm_close_port, scm_flush_all_ports): Ditto.
1054
1055 * ioext.c (scm_fdes_to_ports): Ditto.
1056
1057 * vports.c (scm_make_soft_port): Changed SCM_DEFER/ALLOW_INTS into
1058 lock/unlock scm_i_port_table_mutex.
1059
1060 * strports.c (scm_mkstrport): Ditto.
1061
1062 * ports.c (scm_void_port, scm_port_for_each): Ditto.
1063
1064 * fports.c (scm_fdes_to_port): Ditto.
1065
d0b07b5d
DH
10662003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
1067
1068 This set of patches contains no functional changes, only debatable
1069 minor stylistic ones. Still, in order to prepare a patch between
1070 my local copy and the CVS version, I decided to submit the changes
1071 below. Then, the patch will hopefully only contain relevant
1072 modifications :-)
1073
1074 * eval.c (iqq): Added const specifier.
1075
1076 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
1077 Use NULL instead of 0 to indicate that a pointer is returned.
1078 Removed some misleading 'fall through' comments.
1079
1080 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
1081 Split up long expressions into smaller ones to be more debugging
1082 friendly.
1083
a98e8e98
DH
10842003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
1085
1086 * eval.h (SCM_ENTER_FRAME_HDLR, SCM_APPLY_FRAME_HDLR,
1087 SCM_EXIT_FRAME_HDLR): Use SCM_PACK to convert data to a SCM value
1088 rather than casting to SCM.
1089
c178c3a6
DH
10902003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
1091
1092 * sort.c, pairs.h: Removed unnecessary includes.
1093
d339981a
DH
10942003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
1095
1096 * sort.c: Replaced hand-made trampline code by the new official
1097 mechanism from eval.c. This fixes a segfault in the new test file
1098 sort.test.
1099
1100 (quicksort, compare_function, scm_restricted_vector_sort_x,
1101 scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
1102 scm_merge_list_step, scm_sort_x, scm_sort, scm_merge_vector_x,
1103 scm_merge_vector_step, scm_stable_sort_x, scm_stable_sort,
1104 scm_sort_list_x, scm_sort_list): Use trampoline mechanism from
1105 eval.c.
1106
1107 (subr2less, lsubrless, closureless, applyless, scm_cmp_function,
1108 cmp_fun_t): Removed.
1109
1110 (compare_function): Added.
1111
1112 * sort.c (quicksort, SWAP, stack_node): Replaced pointer
1113 arithmetics with index arithmetics. Changed quicksort to work on
1114 an array of SCM values instead of an array of characters. Avoid
1115 bytewise copying of SCM elements. Avoid allocating memory on the
1116 stack with alloca. Fixed some comments.
1117
821f18a4
DH
11182003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
1119
1120 * eval.c (EXTEND_ENV): Eliminated.
1121
1122 (unmemocopy, SCM_CEVAL, SCM_APPLY): Use SCM_EXTEND_ENV instead of
1123 EXTEND_ENV.
1124
94fb5a6e
DH
11252003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
1126
1127 * __scm.h (SCM_DEBUG_DEBUGGER_SUPPORT): New compile-time option.
1128
1129 * gc.card.c (scm_gc_marked_p): Fixed compiler warning when
1130 compiling with SCM_DEBUG==1 by moving definition behind prototype.
1131
1132 * gc.card.c (scm_dbg_t_list_cell, scm_dbg_t_double_cell,
1133 scm_dbg_gc_marked_p, scm_dbg_gc_get_card, scm_dbg_gc_get_bvec,
1134 scm_t_list_cell_struct, scm_t_list_cell, scm_t_double_cell,
1135 scm_gc_marked_p, scm_gc_get_card, scm_gc_get_bvec): Fixed
1136 functions such that they check if the object is a non-immediate.
1137 Further, renamed identifiers to use the scm_dbg_ prefix and made
1138 their inclusion into the lib dependent of the
1139 SCM_DEBUG_DEBUGGER_SUPPORT compile time option.
1140
fce0b22d
DH
11412003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
1142
1143 * __scm.h: Fixed comment about the SCM_DEBUG_TYPING_STRICTNESS
1144 debug option.
1145
1685446c
DH
11462003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
1147
821f18a4 1148 * list.c (scm_ilength, scm_last_pair), unif.c (l2ra): Prefer
1685446c
DH
1149 !SCM_CONSP over SCM_NCONSP. Now, guile itself does not include
1150 any calls to SCM_NCONSP any more.
1151
1152 * unif.c (l2ra): Eliminate redundant check.
1153
9ff1720f
DH
11542003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
1155
1156 * list.c (scm_cons_star), ramap.c (scm_ra_sum, scm_ra_product,
1157 scm_array_map_x), unif.c (l2ra): Prefer !SCM_NULLP over
1158 SCM_NNULLP. Now, guile itself does not include any calls to
1159 SCM_NNULLP any more.
1160
05b15362
DH
11612003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
1162
1163 * eval.c (unmemocopy, SCM_APPLY, scm_map, scm_for_each,
1164 scm_copy_tree): Place assignment expressions which are part of
1165 other expressions into an expression of their own.
1166
0c88d7df
DH
11672003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
1168
1169 * goops.c (TEST_CHANGE_CLASS, scm_sys_initialize_object): Don't
1170 compare SCM values with !=.
1171
5cb22e96
DH
11722003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
1173
1174 * eval.c, eval.h, evalext.c, evalext.h (scm_sym_setter,
1175 scm_m_generalized_set_x, scm_init_evalext): Move the declaration
1176 and definition of the memoizer for the generalized set! macro from
1177 evalext.[ch] to eval.[ch]. Use the SCM_SYNTAX snarfer macro to
1178 define the macro object.
1179
1180 * eval.c, eval.h (s_set_x, scm_s_set_x, scm_m_set_x,
1181 scm_m_generalized_set_x): Since now scm_s_set_x is only used in
1182 eval.c, it is made static and renamed to s_set_x.
1183
1184 * evalext.c (scm_defined_p, scm_m_undefine): Prefer !SCM_<foo>
1185 over SCM_N<foo>.
1186
a44a9715
DH
11872003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
1188
1189 * eval.c, root.h (scm_undefineds, SCM_NUM_PROTECTS, undefineds,
1190 scm_init_eval): Made scm_undefineds static in eval.c, renamed it
1191 to undefineds and registered the object as a permanent object.
1192
1193 * eval.c, eval.h (scm_f_apply, scm_init_eval): Made scm_f_apply
1194 static in eval.c, renamed it to f_apply and registered the object
1195 as a permanent object.
1196
1b43d24c
DH
11972003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
1198
5cb22e96 1199 * eval.c (SCM_BIT7, SCM_BIT8, unmemocopy, SCM_CEVAL): Renamed
1b43d24c
DH
1200 file-local macro SCM_BIT8 to SCM_BIT7, which is more appropriate.
1201
aec16f99
DH
12022003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
1203
1204 * numbers.c (scm_logtest): Fixed argument bug in the call to
1205 mpz_and, which showed up when compiling with SCM_DEBUG defined.
1206
f96460ce
DH
12072003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
1208
1209 * gc-card.c (scm_i_sweep_card, scm_i_init_card_freelist): Fixed
1210 type errors that showed up when compiling with SCM_DEBUG defined.
1211
d0f6ceb8
DH
12122003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
1213
1214 * continuations.c, continuations.h, eval.c, eval.h, extensions.c,
1215 gsubr.c, guile.c, init.c, read.c, root.c, root.h, stackchk.h,
1216 throw.c: Removed uses of DEBUG_EXTENSIONS and DYNAMIC_LINKING to
1217 fix compile errors with --disable-deprecated.
1218
19a7a089
RB
12192003-04-17 Rob Browning <rlb@defaultvalue.org>
1220
1221 * numbers.c (scm_integer_expt): fix case where we were declaring
1222 vars in the middle of a statement block. Thanks to Thamer
1223 Al-Harbash.
1224
47cd67db
MD
12252003-04-17 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1226
0fd7dcd3
MD
1227 * goops.c (TEST_CHANGE_CLASS): Update variable class after class
1228 change.
1229
47cd67db
MD
1230 * eq.c (scm_eqv_p): Turned into a primitive generic.
1231
3b8b889c
RB
12322003-04-16 Rob Browning <rlb@defaultvalue.org>
1233
312006bb
RB
1234 * gc_os_dep.c: Added patch for UnixWare and OpenUNIX support.
1235 Thanks to Boyd Gerber.
1236 Added check for __arm__ in addition to arm for LINUX and copied
1237 __s390__ defines from upstream libgc. Thanks to James Treacy for
1238 reporting the problems.
c7ef2ea1 1239
3b8b889c
RB
1240 * numbers.c (PTRDIFF_MIN): use SCM_CHAR_BIT.
1241
1242 * socket.c: use SCM_CHAR_BIT.
1243
1244 * random.c (scm_c_random_bignum): use SCM_CHAR_BIT.
1245
1246 * num2integral.i.c (NUM2INTEGRAL): use SCM_CHAR_BIT.
1247
43261b39
MD
12482003-04-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1249
1250 * feature.c (scm_init_feature): Always add threads feature.
1251
58241edc
MD
12522003-04-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1253
1254 * goops.c (scm_sys_fast_slot_ref): Use SCM_SLOT instead of
1255 scm_at_assert_bound_ref. (We don't want the unbound check. See
1256 oop/goops/active-slot.scm.)
1257
94e91275
RB
12582003-04-14 Rob Browning <rlb@defaultvalue.org>
1259
1260 * tags.h: scm_t_intptr should have been intptr_t.
1261
3071ea27
RB
12622003-04-13 Rob Browning <rlb@defaultvalue.org>
1263
1264 * __scm.h (SCM_FLUSH_REGISTER_WINDOWS): don't just rely on "sparc"
1265 test. Instead use
1266 #if defined (sparc) || defined (__sparc__) || defined (__sparc)
1267 as gc_os_dep.c suggests is appropriate.
1268
1269 * goops.c (prep_hashsets): make static to match prototype.
1270 (scm_sym_args): SCM_SYMBOL -> SCM_GLOBAL_SYMBOL. Thanks to Albert
1271 Chin.
1272
1273 * c-tokenize.lex: remove trailing comma from enum. Thanks to
1274 Albert Chin.
1275
1276 * gc_os_dep.c: add NetBSD powerpc config info. Thanks to Thomas
1277 Klausner.
1278
21ab2aeb
MD
12792003-04-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1280
1281 * goops.c (scm_sys_prep_layout_x): Instance allocation is now
1282 indicated through extra fields in getters-n-setters.
1283 (scm_add_slot): Adapted to new format of getters_n_setters slot.
1284 (Thanks to Andy Wingo.)
1285
dff96e95
HWN
12862003-02-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1287
1288 * gc-segment.c: add comment
1289
07921c76
RB
12902003-04-07 Rob Browning <rlb@defaultvalue.org>
1291
b5331f10
RB
1292 * debug.h: change "id" arg name to "info_id" to avoid objective-c
1293 clash.
1294
07921c76
RB
1295 * num2integral.i.c (NUM2INTEGRAL): fix bug pointed out by Mikael
1296 and add regression test to standalone/.
1297
12982003-04-06 Rob Browning <rlb@defaultvalue.org>
1299
1300 * strings.c (scm_mem2string): use memcpy rather than by-hand loop.
1301 Thanks to Dale P. Smith.
1302
1303 * random.c: #include gmp.h.
1304 (scm_c_random_bignum): normalize result on return.
1305
1306 * init.c: #include gmp.h.
1307
1308 * numbers.h: remove the gmp.h #include (not needed now).
1309
1310 * posix.h: change occurences of "id" to something else so we don't
1311 cause trouble when included via objective-c (can't hurt, might
1312 help). Still have usage in debug.h, though.
1313
938f6b7c
MD
13142003-04-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1315
372691d8
MD
1316 * random.c (scm_c_random_bignum): Don't generate a random number
1317 equal to m (the second argument of scm_c_random_bignum); only
1318 generate numbers in the range 0 <= r < m.
c5f268f8
MD
1319 (scm_c_default_rstate): Use SCM_VARIABLE_REF to access
1320 scm_var_random_state.
372691d8 1321
938f6b7c
MD
1322 * num2integral.i.c (INTEGRAL2BIG): Put negation of n inside then
1323 clause.
1324
6cdb8c3f
RB
13252003-04-05 Rob Browning <rlb@defaultvalue.org>
1326
938f6b7c 1327 * modules.c (scm_module_import_interface): move declaration of
6cdb8c3f
RB
1328 uses before any code.
1329
15635be5
MD
13302003-04-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1331
1ecfd013
MD
1332 * Makefile.am (scmconfig.h): Look for config.h in top_builddir,
1333 not top_srcdir.
1334
15635be5
MD
1335 * hashtab.c (rehash_after_gc): Clear to_rehash list before
1336 processing it in order to avoid an infinite loop.
1337
1338 * print.c (scm_prin1): Remember old state of pstate->writingp.
1339
73be1d9e
MV
13402003-04-05 Marius Vollmer <mvo@zagadka.de>
1341
1342 * Changed license terms to the plain LGPL thru-out.
1343
ad815c06
RB
13442003-04-04 Rob Browning <rlb@defaultvalue.org>
1345
1346 * socket.c (FLIPCPY_NET_HOST_128): new macro.
1347 (ipv6_net_to_num, ipv6_num_to_net, bignum_in_ipv6_range_p):
1348 rewrite to handle GMP bignums.
1349
1350
1351 * random.c (scm_c_random_bignum): rewrite to handle GMP bignums.
1352
1353 * ports.c (scm_getc): minor tweak.
1354
1355 * numbers.h: remove SCM_BIGDIG conditionals, reorganize, and
1356 rewrite to handle GMP bignums.
1357
1358 * numbers.c: rewrite *many* functions to handle GMP bignums.
1359
1360 * num2integral.i.c (NUM2INTEGRAL, INTEGRAL2NUM, INTEGRAL2BIG):
1361 handle GMP bignums.
1362
1363 * num2float.i.c (NUM2FLOAT): handle GMP bignums.
1364
1365 * init.c (check_config): remove SCM_BIGDIG conditionals.
1366 (scm_init_guile_1): test to make sure mpz_t fits in a double_cell.
1367
1368 * gc-card.c ("sweep_card"): handle new mpz_t bignums.
1369
1370 * eval.c: remove SCM_BIGDIG conditionals.
1371
1372 * eq.c (s_scm_eqv_p): scm_i_bigcomp -> scm_i_bigcmp.
1373
6cdb8c3f
RB
13742003-03-31 Rob Browning <rlb@defaultvalue.org>
1375
1376 * Makefile.am (scmconfig.h): change srcdir to builddir. (Thanks
1377 to Kevin Ryde.)
1378
13792003-03-27 Rob Browning <rlb@defaultvalue.org>
1380
1381 * threads.h: fix various preprocessor usages of new public
1382 symbols to expect 0 or 1 values rather than 1 or undefined.
1383 i.e. change #ifdef to #if, etc.
1384
1385 * threads.c: fix various preprocessor usages of new public
1386 symbols to expect 0 or 1 values rather than 1 or undefined.
1387 i.e. change #ifdef to #if, etc.
1388
1389 * tags.h: fix various preprocessor usages of new public
1390 symbols to expect 0 or 1 values rather than 1 or undefined.
1391 i.e. change #ifdef to #if, etc.
1392
1393 * stacks.c: fix various preprocessor usages of new public
1394 symbols to expect 0 or 1 values rather than 1 or undefined.
1395 i.e. change #ifdef to #if, etc.
1396
1397 * stackchk.h: fix various preprocessor usages of new public
1398 symbols to expect 0 or 1 values rather than 1 or undefined.
1399 i.e. change #ifdef to #if, etc.
1400
1401 * stackchk.c: fix various preprocessor usages of new public
1402 symbols to expect 0 or 1 values rather than 1 or undefined.
1403 i.e. change #ifdef to #if, etc.
1404
1405 * sort.c: fix various preprocessor usages of new public
1406 symbols to expect 0 or 1 values rather than 1 or undefined.
1407 i.e. change #ifdef to #if, etc.
1408
1409 * read.c: fix various preprocessor usages of new public
1410 symbols to expect 0 or 1 values rather than 1 or undefined.
1411 i.e. change #ifdef to #if, etc.
1412
1413 * random.c: fix various preprocessor usages of new public
1414 symbols to expect 0 or 1 values rather than 1 or undefined.
1415 i.e. change #ifdef to #if, etc.
1416
1417 * print.c: fix various preprocessor usages of new public
1418 symbols to expect 0 or 1 values rather than 1 or undefined.
1419 i.e. change #ifdef to #if, etc.
1420
1421 * objects.c: fix various preprocessor usages of new public
1422 symbols to expect 0 or 1 values rather than 1 or undefined.
1423 i.e. change #ifdef to #if, etc.
1424
1425 * numbers.h: fix various preprocessor usages of new public
1426 symbols to expect 0 or 1 values rather than 1 or undefined.
1427 i.e. change #ifdef to #if, etc.
1428
1429 * null-threads.c: fix various preprocessor usages of new public
1430 symbols to expect 0 or 1 values rather than 1 or undefined.
1431 i.e. change #ifdef to #if, etc.
1432
1433 * lang.c: fix various preprocessor usages of new public
1434 symbols to expect 0 or 1 values rather than 1 or undefined.
1435 i.e. change #ifdef to #if, etc.
1436
1437 * lang.h: fix various preprocessor usages of new public
1438 symbols to expect 0 or 1 values rather than 1 or undefined.
1439 i.e. change #ifdef to #if, etc.
1440
1441 * iselect.h: fix various preprocessor usages of new public
1442 symbols to expect 0 or 1 values rather than 1 or undefined.
1443 i.e. change #ifdef to #if, etc.
1444
1445 * init.c: fix various preprocessor usages of new public
1446 symbols to expect 0 or 1 values rather than 1 or undefined.
1447 i.e. change #ifdef to #if, etc.
1448
1449 * gh_data.c: fix various preprocessor usages of new public
1450 symbols to expect 0 or 1 values rather than 1 or undefined.
1451 i.e. change #ifdef to #if, etc.
1452
1453 * gh.h: fix various preprocessor usages of new public
1454 symbols to expect 0 or 1 values rather than 1 or undefined.
1455 i.e. change #ifdef to #if, etc.
1456
1457 * gen-scmconfig.c: change most new public symbols to be defined to
1458 0 or 1 rather than being either 1 or undefined.
1459
1460 * gc_os_dep.c: fix various preprocessor usages of new public
1461 symbols to expect 0 or 1 values rather than 1 or undefined.
1462 i.e. change #ifdef to #if, etc.
1463 (STACK_GROWS_DOWN): define to 0 or 1 rather than 1 or undef.
1464
1465 * gc.h: fix various preprocessor usages of new public
1466 symbols to expect 0 or 1 values rather than 1 or undefined.
1467 i.e. change #ifdef to #if, etc.
1468
1469 * gc-card.c: fix various preprocessor usages of new public
1470 symbols to expect 0 or 1 values rather than 1 or undefined.
1471 i.e. change #ifdef to #if, etc.
1472
1473 * gc-mark.c: fix various preprocessor usages of new public
1474 symbols to expect 0 or 1 values rather than 1 or undefined.
1475 i.e. change #ifdef to #if, etc.
1476
1477 * feature.c: fix various preprocessor usages of new public
1478 symbols to expect 0 or 1 values rather than 1 or undefined.
1479 i.e. change #ifdef to #if, etc.
1480
1481 * evalext.c: fix various preprocessor usages of new public
1482 symbols to expect 0 or 1 values rather than 1 or undefined.
1483 i.e. change #ifdef to #if, etc.
1484
1485 * eval.h: fix various preprocessor usages of new public
1486 symbols to expect 0 or 1 values rather than 1 or undefined.
1487 i.e. change #ifdef to #if, etc.
1488
1489 * eval.c: fix various preprocessor usages of new public
1490 symbols to expect 0 or 1 values rather than 1 or undefined.
1491 i.e. change #ifdef to #if, etc.
1492
1493 * eq.c: fix various preprocessor usages of new public
1494 symbols to expect 0 or 1 values rather than 1 or undefined.
1495 i.e. change #ifdef to #if, etc.
1496
1497 * coop.c: fix various preprocessor usages of new public
1498 symbols to expect 0 or 1 values rather than 1 or undefined.
1499 i.e. change #ifdef to #if, etc.
1500
1501 * coop-threads.c: fix various preprocessor usages of new public
1502 symbols to expect 0 or 1 values rather than 1 or undefined.
1503 i.e. change #ifdef to #if, etc.
1504
1505 * coop-pthreads.c: fix various preprocessor usages of new public
1506 symbols to expect 0 or 1 values rather than 1 or undefined.
1507 i.e. change #ifdef to #if, etc.
1508
1509 * coop-defs.h: fix various preprocessor usages of new public
1510 symbols to expect 0 or 1 values rather than 1 or undefined.
1511 i.e. change #ifdef to #if, etc.
1512
1513 * convert.i.c: fix various preprocessor usages of new public
1514 symbols to expect 0 or 1 values rather than 1 or undefined.
1515 i.e. change #ifdef to #if, etc.
1516
1517 * continuations.c: fix various preprocessor usages of new public
1518 symbols to expect 0 or 1 values rather than 1 or undefined.
1519 i.e. change #ifdef to #if, etc.
1520
1521 * _scm.h: fix various preprocessor usages of new public symbols to
1522 expect 0 or 1 values rather than 1 or undefined. i.e. change
1523 #ifdef to #if, etc.
1524
d11d697a
MV
15252003-03-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1526
9686f86d
MV
1527 * init.c (scm_init_guile_1): Call scm_i_init_deprecated.
1528
1529 * deprecated.c, deprecated.h: New files, to collect deprecated
1530 things in one place.
1531 * Makefile.am: Added them in all the right places.
1532
d11d697a
MV
1533 * Makefile.am (EXTRA_DIST): Added "scmconfig.h.top".
1534 (scmconfig.h): Get "scmconfig.h.top" from $(srcdir) so that VPATH
1535 builds work.
9686f86d
MV
1536 (DOT_X_FILES): Removed "iselect.x".
1537 (DOT_DOC_FILES): Removed "iselect.doc".
d11d697a 1538
e3c0c3b9
RB
15392003-03-25 Rob Browning <rlb@defaultvalue.org>
1540
1541 * win32-socket.h: #include "libguile/__scm.h". Replace usage of
1542 HAVE_WINSOCK2_H with SCM_HAVE_WINSOCK2_H.
1543
1544 * win32-socket.c: #include <config.h> if HAVE_CONFIG_H.
1545
1546 * vports.c: #include <config.h> if HAVE_CONFIG_H.
1547
1548 * unif.c: #include <config.h> if HAVE_CONFIG_H. Replace usage of
1549 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
1550
1551 * threads.h: replace usage of struct timespect with
1552 scm_t_timespec. Replace usage of USE_PTHREAD_THREADS with
1553 SCM_USE_PTHREAD_THREADS. Remove typedef for struct timespec in
1554 favor of scm_t_timespec from scmconfig.h.
1555
1556 * threads.c: move libguile/_scm.h include to the top so we pick up
1557 any critical defines like _GNU_SOURCE early. Replace usage of
1558 struct timespect with scm_t_timespec. Replace usage of
1559 STACK_GROWS_UP with SCM_STACK_GROWS_UP. Replace usage of
1560 USE_PTHREAD_THREADS with SCM_USE_PTHREAD_THREADS.
1561
1562 * threads-plugin.h: replace usage of struct timespect with
1563 scm_t_timespec.
1564
1565 * threads-plugin.c: #include <config.h> if HAVE_CONFIG_H. Replace
1566 usage of struct timespect with scm_t_timespec.
1567
1568 * tags.h: move HAVE_STDINT_H handling to scmconfig.h. Move
1569 HAVE_INTTYPES_H handling to scmconfig.h. #include
1570 "libguile/__scm.h". Rework handling for scm_t_bits,
1571 scm_t_signed_bits, SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
1572 SCM_T_SIGNED_BITS_MIN, and SIZEOF_SCM_T_BITS to use scm_t_intptr,
1573 scm_t_uintptr, SCM_SIZEOF_INTPTR_T, and SCM_SIZEOF_UINTPTR_T, and
1574 SCM_SIZEOF_UNSIGNED_LONG. Rename usage of HAVE_ARRAYS to
1575 SCM_HAVE_ARRAYS.
1576
1577 * symbols.c: #include <config.h> if HAVE_CONFIG_H.
1578
1579 * struct.c: #include <config.h> if HAVE_CONFIG_H.
1580
1581 * strports.c: #include <config.h> if HAVE_CONFIG_H.
1582
1583 * strop.c: #include <config.h> if HAVE_CONFIG_H.
1584
1585 * stime.h: move handling of time related headers to scmconfig.h.
1586
1587 * stime.c: #include <config.h> if HAVE_CONFIG_H.
1588
1589 * stacks.c: replace usage of STACK_GROWS_UP with
1590 SCM_STACK_GROWS_UP.
1591
1592 * sort.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
1593 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1594
1595 * socket.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
1596 of uint32 and HAVE_UINT_32 with scm_t_int32.
1597
1598 * smob.c: #include <config.h> if HAVE_CONFIG_H.
1599
1600 * simpos.c: #include <config.h> if HAVE_CONFIG_H.
1601
1602 * script.c: #include <config.h> if HAVE_CONFIG_H.
1603
1604 * scmsigs.c: #include <config.h> if HAVE_CONFIG_H.
1605
1606 * scmconfig.h.top: new file -- preamble for scmconfig.h.
1607
1608 * rw.c: #include <config.h> if HAVE_CONFIG_H.
1609
1610 * regex-posix.c: #include <config.h> if HAVE_CONFIG_H.
1611
1612 * read.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1613
1614 * rdelim.c: #include <config.h> if HAVE_CONFIG_H.
1615
1616 * random.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
1617 of LONG32, LONG64, SIZEOF_LONG, and HAVE_LONG_LONGS with
1618 scm_t_int32, scm_t_int64, and SCM_HAVE_T_INT64. Rename usage of
1619 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1620
1621 * ramap.c: replace usage of HAVE_LONG_LONGS with
1622 "SCM_SIZEOF_LONG_LONG != 0".
1623
1624 * putenv.c: #include <config.h> if HAVE_CONFIG_H. #include
1625 "libguile/scmconfig.h".
1626
1627 * pthread-threads.c: #include <config.h> if HAVE_CONFIG_H.
1628
1629 * print.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1630 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
1631
1632 * posix.c: #include <config.h> if HAVE_CONFIG_H.
1633
1634 * ports.c: #include <config.h> if HAVE_CONFIG_H.
1635
1636 * objects.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1637
1638 * numbers.h: replace usage of HAVE_FLOATINGPOINT_H with
1639 SCM_HAVE_FLOATINGPOINT_H. Replace usage of HAVE_IEEEFP_H with
1640 SCM_HAVE_IEEEFP_H. Replace usage of HAVE_NAN_H with
1641 SCM_HAVE_NAN_H. Replace usage of STDC_HEADERS with
1642 SCM_HAVE_STDC_HEADERS. Replace usage of ptrdiff_t with
1643 scm_t_ptrdiff. Replace usage of HAVE_LONG_LONGS with
1644 "SCM_SIZEOF_LONG_LONG != 0".
1645
1646 * numbers.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
1647 of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0". Replace
1648 usage of ptrdiff_t with scm_t_ptrdiff. Replace usage of
1649 SIZEOF_PTRDIFF_T with SCM_SIZEOF_SCM_T_PTRDIFF.
1650
1651 * num2integral.i.c: #include <config.h> if HAVE_CONFIG_H.
1652
1653 * null-threads.h: replace usage of struct timespect with
1654 scm_t_timespec.
1655
1656 * net_db.c: #include <config.h> if HAVE_CONFIG_H.
1657
1658 * mkstemp.c: #include <config.h> if HAVE_CONFIG_H. #include
1659 "libguile/__scm.h". Remove definition of gcc_uint64_t in favor of
1660 scm_t_uint64 and rename usages.
1661
1662 * mallocs.c: #include <config.h> if HAVE_CONFIG_H.
1663
1664 * load.c: #include <config.h> if HAVE_CONFIG_H.
1665
1666 * iselect.h: move handling of time related headers to scmconfig.h.
1667 Rename usage of HAVE_SYS_SELECT_H to SCM_HAVE_SYS_SELECT_H.
1668 Rename usage of HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Rename
1669 usage of USE_COOP_THREADS to SCM_USE_COOP_THREADS.
1670
1671 * iselect.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
1672 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
1673 USE_NULL_THREADS to SCM_USE_NULL_THREADS.
1674
1675 * ioext.c: #include <config.h> if HAVE_CONFIG_H.
1676
1677 * inline.h: #include "libguile/__scm.h" at the top. Change code
1678 to use SCM_C_INLINE and SCM_INLINE_C_INCLUDINT_INLINE_H to decide
1679 what to do instead of creating a new public #define. Rename usage
1680 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
1681 USE_NULL_THREADS to SCM_USE_NULL_THREADS. Rename usage of
1682 USE_COPT_THREADS to SCM_USE_COPT_THREADS.
1683
1684 * inline.c: rearrange handling -- now we just #define
1685 SCM_INLINE_C_INCLUDING_INLINE_H to 1 and #include
1686 "libguile/inline.h". scmconfig.h will define SCM_C_INLINE as
1687 appropriate, and we use that in inline.h along with the above
1688 define to determine how to respond.
1689
1690 * init.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
1691 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1692
1693 * guile.c: #include <config.h> if HAVE_CONFIG_H.
1694
1695 * gh_data.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
1696 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1697
1698 * gh.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1699
1700 * gen-scmconfig.h.in: new file -- see gen-scmconfig.c for details.
1701
1702 * gen-scmconfig.c: new file -- see comments in file for details.
1703
1704 * gdbinit.c: #include <config.h> if HAVE_CONFIG_H.
1705
1706 * gc_os_dep.c: #include <config.h> if HAVE_CONFIG_H. Replace
1707 usage of STACK_GROWS_UP with SCM_STACK_GROWS_UP.
1708
1709 * gc.h: replace usage of SIZEOF_LONG with
1710 SCM_SIZEOF_UNSIGNED_LONG. Replace usage of USE_PTHREAD_THREADS
1711 with SCM_USE_PTHREAD_THREADS. Remove SCM_SIZEOF_LONG definition
1712 since we handle that in scmconfig.h now.
1713
1714 * gc.c: #include <config.h> if HAVE_CONFIG_H.
1715
1716 * gc-mark.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
1717 of HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of
1718 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
1719
1720 * gc-malloc.c: #include <config.h> if HAVE_CONFIG_H.
1721
1722 * gc-card.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1723 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
1724
1725 * fports.c: #include <config.h> if HAVE_CONFIG_H.
1726
1727 * filesys.c: #include <config.h> if HAVE_CONFIG_H.
1728
1729 * feature.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
1730 of USE_NULL_THREADS to SCM_USE_NULL_THREADS.
1731
1732 * extensions.c: #include <config.h> if HAVE_CONFIG_H.
1733
1734 * evalext.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1735 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
1736
1737 * eval.c: #include <config.h> if HAVE_CONFIG_H. #include
1738 "libguile/__scm.h" rather than scmconfig.h. Rename usage of
1739 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
1740 with "SCM_SIZEOF_LONG_LONG != 0".
1741
1742 * error.c: #include <config.h> if HAVE_CONFIG_H.
1743
1744 * eq.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
1745 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
1746 with "SCM_SIZEOF_LONG_LONG != 0".
1747
1748 * deprecation.c: #include <config.h> if HAVE_CONFIG_H.
1749
1750 * coop.c: replace usage of struct timespect with scm_t_timespec.
1751 #include <config.h> if HAVE_CONFIG_H.
1752
1753 * coop-threads.c: #include "libguile/_scm.h" early. Replace
1754 usage of struct timespect with scm_t_timespec. Replace usage of
1755 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
1756
1757 * coop-pthreads.c: #include "libguile/_scm.h" early. Replace
1758 usage of struct timespect with scm_t_timespec. Replace usage of
1759 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
1760
1761 * coop-defs.h: move handling of time related headers to
1762 scmconfig.h. Add #include "libguile/__scm.h". Rename usage of
1763 HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Replace usage of struct
1764 timespect with scm_t_timespec.
1765
1766 * convert.i.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1767
1768 * convert.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1769
1770 * convert.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
1771 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1772
1773 * continuations.c: move libguile/_scm.h include to the top so we
1774 pick up any critical defines like _GNU_SOURCE early.
1775
1776 * backtrace.c: #include <config.h> if HAVE_CONFIG_H.
1777
1778 * async.c: #include <config.h> if HAVE_CONFIG_H.
1779
1780 * alloca.c: #include <config.h> if HAVE_CONFIG_H.
1781
1782 * _scm.h: #include <config.h> if HAVE_CONFIG_H.
1783 Rename usage of USE_PTHREAD_THREADS to SCM_USE_PTHREAD_THREADS.
1784
1785 * __scm.h: move libguile/scmconfig.h include up to the top, so
1786 we're sure to pick up any critical defines like _GNU_SOURCE early.
1787 #include <limits.h> removed in favor of scmconfig.h inclusion when
1788 appropriate. STDC_HEADERS based inclusion of stdlib.h,
1789 sys/types.h, stddef.h, and sys/stdtypes.h removed in favor of
1790 scmconfig.h inclusion when appropriate. Various Win32 related
1791 definitions removed in favor of scmconfig.h inclusion when
1792 appropriate.
1793 (HAVE_UINTPTR_T): definition removed (see NEWS).
1794 (SIZEOF_PTRDIFF_T): definition removed (see NEWS).
1795 (HAVE_LONG_LONGS): definition removed (see NEWS).
1796 (HAVE_LONG_LONG): definition removed (see NEWS).
1797 (HAVE_PTRDIFF_T): definition removed (see NEWS).
1798
1799 * Makefile.am: scmconfig.h is now generated by building and
1800 running gen-scmconfig.h and capturing its output. gen-scmconfig
1801 uses config.h and the configure.in generated gen-scmconfig.h to
1802 decide what to output. See gen-scmconfig.c for details.
1803 (noinst_PROGRAMS): add gen-scmconfig.
1804 (gen_scmconfig_SOURCES): new variable.
1805 (gen-scmconfig.$(OBJEXT)): new target - be careful to handle
1806 cross-compiling right.
1807 (scmconfig.h): build scmconfig.h from gen-scmconfig's output.
1808 (BUILT_SOURCES): add scmconfig.h.
1809
25e0bf97
MV
18102003-03-19 Marius Vollmer <mvo@zagadka.de>
1811
1812 * gc_os_dep.c: Added defines for sparc-unknown-netbsdelf1.5 from
1813 Adrian Bunk. Thanks!
1814
74b6d6e4
MD
18152003-03-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1816
1817 * goops.c (make_class_from_template): New fourth arg:
1818 applicablep.
1819 (scm_class_extended_generic_with_setter, scm_class_self): Fixed
1820 cpls.
1821
1822 * smob.c (scm_set_smob_apply): Call scm_i_inherit_applicable.
1823
1824 * goops.c, objects.c, objects.h (scm_make_extended_class): New
1825 second arg: applicablep.
1826 (scm_i_inherit_applicable): New function.
1827
1828 * goops.c, goops.h (scm_class_applicable,
1829 scm_class_extended_accessor): New classes.
1830
5c9e7dad
DH
18312003-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
1832
1833 * procs.c (scm_procedure_documentation): Removed redundant
1834 SCM_NIMP test and replaced other calls to SCM_IMP by more explicit
1835 predicates.
1836
f8af5c6d
MD
18372003-03-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1838
c614a00b
MD
1839 * list.c, list.h (scm_filter, scm_filter_x): New functions.
1840
109c2c9f
MD
1841 * modules.c (scm_module_import_interface): New function.
1842
f8af5c6d
MD
1843 * goops.c, goops.h (scm_class_accessor_method): Renamed from
1844 scm_class_accessor.
1845 (scm_class_accessor): New class.
1846
a48d60b1
MD
18472003-03-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1848
1849 * goops.c (scm_primitive_generic_generic): Enable primitive
1850 generic if not enabled.
1851 (scm_sys_goops_loaded): Setup unextended primitive generics.
1852
1853 * goops.c, goops.h (scm_c_extend_primitive_generic): New function.
1854
1855 * snarf.h (SCM_PRIMITIVE_GENERIC, SCM_PRIMITIVE_GENERIC_1): New
1856 snarf macros.
1857
1858 * numbers.c (scm_abs): Use SCM_PRIMITIVE_GENERIC. (This is only a
1859 testing example. All uses of SCM_GPROC should be converted.)
1860
1861 * procprop.c (scm_stand_in_scm_proc): Use scm_assq instead of
1862 scm_assoc.
1863
1864 * eq.c (scm_equal_p): Turned into a primitive generic.
1865
84edc049
RB
18662003-02-27 Rob Browning <rlb@defaultvalue.org>
1867
1868 * Makefile.am (scmconfig.h): new target -- generate file from
1869 ../config.h.
1870 (modinclude_HEADERS): remove version.h.
1871 (nodist_modinclude_HEADERS): add version.h.
1872
ea5c9285
MD
18732003-02-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1874
b4a1358c
MD
1875 This fixes a serious GC bug, introduced during the latest
1876 reorganization of the GC, which disabled freeing of structs and
1877 GOOPS objects:
1878
1879 * struct.c (scm_struct_prehistory): Init scm_i_structs_to_free to
1880 SCM_EOL.
53af8255
MD
1881 (scm_struct_prehistory): Move scm_free_structs to
1882 scm_before_mark_c_hook.
ea5c9285 1883
b4a1358c
MD
1884 * gc-card.c (sweep_card): Check that we haven't swept structs on
1885 this card before. That can happen if scm_i_sweep_all_segments has
1886 been called from some other place than scm_igc.
1887
c35738c1
MD
18882003-02-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1889
231a4ea8
MD
1890 * environments.c (DEFAULT_OBARRAY_SIZE): Changed from 137 to 31
1891 (since hash tables now adapt their size).
1892
1893 * modules.c (scm_modules_prehistory): Changed from 2001 to 1533
1894 (current number of prehistory bindings; hashtable code will select
1895 a prime which is greater than this value).
1896
1897 * symbols.c (scm_symbols_prehistory): Changed from 1009 to 2139
1898 (current number of initial symbols).
1899
1900 * properties.c (scm_init_properties): Don't specify size of
1901 scm_properties_whash.
1902
1903 * objprop.c (scm_init_objprop): Don't specify size of
1904 scm_object_whash.
1905
1906 * keywords.c (scm_init_keywords): Don't specify a hash table size.
1907
c35738c1
MD
1908 * hooks.c (scm_c_hook_add): Fixed bug in append mode.
1909
1910 The following changes introduce the use of resizable hash tables
1911 throughout Guile. It also renames the old *-hash-table* functions
1912 to *-alist-vector* and places them, together with the rest of the
1913 weak vector support, in the module (ice-9 weak-vector). We should
1914 probably introduce a new, better, API for weak references, for
1915 example "weak pairs" a la MIT-Scheme. (In Chez scheme, they even
1916 look like and are used like ordinary pairs.)
1917
1918 * environments.c (obarray_enter, obarray_retrieve, obarray_remove,
1919 leaf_environment_fold, obarray_remove_all): Use hashtable
1920 accessors.
1921
1922 * gc.c (scm_init_storage): Moved hook initialization to
1923 scm_storage_prehistory.
1924 (scm_storage_prehistory): New function.
1925 (scm_igc): Added commentary about placement of
1926 scm_after_sweep_c_hook.
1927
1928 * gc-mark.c (scm_mark_all): Use hashtable accessors.
1929 (scm_gc_mark_dependencies): Use SCM_WVECT_WEAK_KEY_P and
1930 SCM_WVECT_WEAK_VALUE_P.
1931
1932 * hashtab.c, hashtab.h (scm_hash_for_each, scm_hash_map): New
1933 functions.
1934 (scm_vector_to_hash_table, scm_c_make_resizing_hash_table):
1935 Removed.
1936 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table,
1937 scm_make_doubly_weak_hash_table): Moved here from weaks.c.
1938
1939 * init.c (scm_init_guile_1): Removed call to scm_init_weaks; Added
1940 calls to scm_storage_prehistory and scm_hashtab_prehistory.
1941
1942 * modules.c (module-reverse-lookup): Use hashtable accessors.
1943
1944 * symbols.c, symbols.h (scm_i_hash_symbol): New function.
1945
1946 * weaks.c, weaks.h (scm_make_weak_key_alist_vector,
1947 scm_make_weak_value_alist_vector,
1948 scm_make_doubly_weak_alist_vector): New functions.
1949
1950 * weaks.c (scm_init_weaks_builtins): New function.
1951
1952 * weaks.h (SCM_WVECTF_WEAK_KEY, SCM_WVECTF_WEAK_VALUE,
1953 SCM_WVECTF_NOSCAN, SCM_WVECT_WEAK_KEY_P, SCM_WVECT_WEAK_VALUE_P,
1954 SCM_WVECT_NOSCAN_P): New macros.
1955
1956 * weaks.c (scm_scan_weak_vectors): Use SCM_WVECT_WEAK_KEY_P
1957 and SCM_WVECT_WEAK_VALUE_P.
1958
1959 * weaks.c, weaks.h (scm_i_allocate_weak_vector): Renamed from
1960 allocate_weak_vector and exported.
1961
0a4c1355
MD
19622003-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1963
1964 * hashtab.c: Undid thread safety. (We decided that it's better to
1965 let the user explicitly protect the tables (or not) according what
1966 is suitable for the application.)
1967
87ca11ff
MD
19682003-02-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1969
1970 * hashtab.c (scm_hash_fn_remove_x, scm_internal_hash_fold): Made
1971 thread safe and handle resizing tables.
1972 (scm_ihashx, scm_sloppy_assx, scm_delx_x): Removed
1973 SCM_DEFER/ALLOW_INTS.
1974
f59a096e
MD
19752003-02-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1976
1977 * hashtab.c (scm_vector_to_hash_table,
1978 scm_c_make_resizing_hash_table, scm_make_hash_table): New
1979 functions.
1980 (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x): Made thread
1981 safe and handle resizing tables.
1982
1983 * weaks.c (scm_make_weak_key_hash_table,
1984 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
1985 Size argument made optional. Return resizable table if not
1986 specified.
1987
4b612c5b
MD
19882003-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1989
1990 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
1991 Fixed formals tests for closures. (Thanks to Kevin Ryde.)
1992
b3d7f6df
MD
19932003-02-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1994
1995 * debug.c (scm_procedure_source): Handle all objects for which
1996 procedure? is #t. (Thanks to Bill Schottstaedt.)
1997
756414cf
MD
19982003-01-23 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1999
361d631f
MD
2000 * futures.c (mark_futures): Don't need to mark data of recycled
2001 futures.
2002 (scan_futures, cleanup_undead): Be smarter about marking
2003 futures---avoid unnecessary passes through future lists.
2004
756414cf
MD
2005 * futures.h, futures.c: New files; Introduced recycling of
2006 futures. For fine-grained threading this lifts performance to
2007 another level. We can now use parallelization in inner loops of
2008 Guile programs without impossible overhead.
2009
2010 * threads.h, threads.c: Moved futures to their own file.
2011
2012 * Makefile.am (libguile_la_SOURCES): Added futures.c.
2013 (DOT_X_FILES): Added futures.x.
2014 (DOT_DOC_FILES): Added futures.doc.
2015 (modinclude_HEADERS): Added futures.h.
2016
2017 * threads.c, threads.h (scm_i_create_thread): Renamed from
2018 create_thread and made global.
2019
2020 * futures.c (scm_make_future): New procedure.
2021
2022 * eval.c: #include "libguile/futures.h".
2023
2024 * init.c: #include "futures.h"
2025 (scm_init_guile_1): Call scm_init_futures.
2026
2027 * stime.c (SCM_TIME_UNITS_PER_SECOND): Renamed from CLKTCK.
2028
2029 * stime.h (SCM_TIME_UNITS_PER_SECOND): Definition moved here.
2030
2031 * eval.c, eval.h (scm_trampoline_0, scm_i_call_closure_0): New
2032 functions.
2033
2034 * eval.c (scm_trampoline_1): Fixed arguments test for closures.
2035
b4debead
MD
20362003-01-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2037
2038 * threads.c (create_thread): Don't unwind dynwind chain of parent
2039 thread before creation. Just start the new thread with an empty
2040 dynwind chain.
2041
93f26b7b
MD
20422003-01-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2043
2044 * evalext.c, evalext.h (scm_self_evaluating_p): New function.
2045
38d8927c
MD
20462003-01-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2047
41c96c32
MD
2048 * threads.c (scm_timed_wait_condition_variable): Support timed
2049 waiting also for simple condition variables.
2050
38d8927c
MD
2051 * goops.c (TEST_CHANGE_CLASS): Use scm_change_object_class instead
2052 of calling the procedure change-object-class.
2053
9cf5d9b7
MD
20542003-01-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2055
2056 * ramap.c (scm_ramapc): Typo in error message.
2057
bbf8d523
MD
20582003-01-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2059
b46fae00
MD
2060 * goops.c (scm_sys_prep_layout_x): Bugfix: Only create layout for
2061 slots with instance allocation.
2062
bbf8d523
MD
2063 * goops.c, goops.h (scm_class_extended_generic_with_setter): New
2064 class.
2065 (scm_compute_applicable_methods): Use scm_generic_function_methods.
2066
2067 * goops.c (scm_generic_function_methods): Support extended
2068 generic functions.
2069
ebf9b47c
MD
20702002-12-29 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2071
2072 * eval.c (unmemocopy): Bugfix: scm_sym_delay --> scm_sym_future.
2e37d6a2 2073 Thanks to Neil for pointing this out!
ebf9b47c 2074
14a9ba3f
NJ
20752002-12-29 Neil Jerram <neil@ossau.uklinux.net>
2076
2077 * lang.h: Remove declarations matching definitions removed from
2078 lang.c (just below).
2079
c6a040a8
NJ
20802002-12-28 Neil Jerram <neil@ossau.uklinux.net>
2081
6054d805
NJ
2082 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
2083 scm_m_while, scm_nil_eq): Remove definitions that were superfluous
2084 and already commented out.
2085
c6a040a8
NJ
2086 * read.h (scm_lreadparen), read.c (scm_lreadr, scm_read_token,
2087 scm_lreadparen): Support reading vectors with Elisp syntax if
2088 SCM_ELISP_READ_EXTENSIONS is defined. (SCM_ELISP_READ_EXTENSIONS
2089 is not currently defined, and there isn't even a configure switch
2090 to enable it yet.)
2091
3742c12f
MV
20922002-12-26 Marius Vollmer <mvo@zagadka.ping.de>
2093
2094 * Makefile.am (c-tokenize.o): Refer to source via $< so that vpath
2095 builds work.
2096 (EXTRA_DIST): Added version.h.in.
2097
fb50ef08
MD
20982002-12-21 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2099
2100 This change makes it possible for one thread to do lazy sweeping
2101 while other threads are running. Now only the mark phase need to
2102 have all threads asleep. We should look further into this issue.
2103 Presently, I've put the locking of scm_i_sweep_mutex at
2104 "conservative" places due to my current lack of knowledge about
2105 the garbage collector. Please feel free to restrict these regions
2106 further to allow for maximal parallelism!
2107
2108 * gc.c, gc.h (scm_i_sweep_mutex): New mutex.
2109
2110 * gc.c (scm_gc_for_newcell), gc-malloc.c (scm_realloc,
2111 scm_gc_register_collectable_memory): Substitute locking of
2112 scm_i_sweep_mutex for calls to scm_i_thread_put_to_sleep.
2113 (scm_igc): Lock sweep mutex here instead of in callers; Calls to
2114 scm_i_thread_put_to_sleep/scm_i_thread_wake_up used to demarkate
2115 the single-thread section (which now only contains the mark
2116 phase).
2117 (scm_gc): Don't lock sweeo mutex here since scm_igc locks it;
2118 Removed SCM_DEFER/ALLOW_INTS. Simply call scm_igc directly.
2119
2120 * threads.c (gc_section_mutex): Removed.
2121
9ed24633
MD
21222002-12-19 Mikael Djurfeldt <mdj@kvast.blakulla.net>
2123
0d48aca5
MD
2124 * threads.c (create_thread): Clear parent field in root state in
2125 order not to unnecessarily remember dead threads.
2126
9ed24633
MD
2127 * eval.c (call_subr2o_1, call_lsubr2_2): New functions.
2128 (scm_trampoline_1, scm_trampoline_2): Use them.
2129
29717c89
MD
21302002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
2131
2132 Partial introduction of real plugin interface.
2133
2134 * Makefile.am (modinclude_HEADERS): Added threads-plugin.h.
2135 (EXTRA_DIST): Added threads-plugin.c.
2136
2137 * threads-plugin.h, threads-plugin.c: New files.
2138
2139 * threads.h: #include "libguile/threads-plugin.h".
2140
2141 * threads.c: #include "libguile/threads-plugin.c".
2142
2143 * pthread-threads.c: Temporarily remove debugging functions.
2144
2145 * threads.c, threads.h (scm_yield): Added back.
2146
e29e0b09
MD
21472002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
2148
2149 * threads.c (really_launch): Detach before unlocking
2150 thread_admin_mutex in order not to risk being joined.
2151 (scm_i_thread_put_to_sleep, scm_i_thread_wake_up): Keep
2152 thread_admin_mutex locked during GC.
2153
2154 * pthread-threads.c, pthread-threads.h: Improvements to debugging
2155 functions.
2156
0b6843b1 21572002-12-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
93cd4dcd 2158
6da2dfc4
MD
2159 * pthread-threads.c, pthread-threads.h (SCM_DEBUG_THREADS): Added
2160 support for debugging mutex operations.
2161
1b92fb6b
MD
2162 * threads.c (scm_thread): Removed filed joining_threads.
2163 (thread_print): Print thread number as well as address of thread
2164 structure.
0b6843b1
MD
2165 (scm_join_thread): Bugfix.
2166 (scm_lock_mutex, scm_try_mutex, scm_unlock_mutex,
2167 scm_timed_wait_condition_variable, scm_signal_condition_variable,
2168 scm_broadcast_condition_variable): Use the low-level API.
2169 (scm_all_threads): Return copy of thread list (to prevent
2170 unintended destruction).
2171 (scm_threads_prehistory): Initialize heap_mutex of fake thread.
1b92fb6b 2172
93cd4dcd
MD
2173 * pthread-threads.c, pthread-threads.h, threads.c: Fixes to
2174 pthread "native" recursive mutex support.
2175
2ff4f181
MD
21762002-12-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2177
28d52ebb
MD
2178 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): New definitions.
2179 Simply lock a thread C API recursive mutex.
2180 (SCM_NONREC_CRITICAL_SECTION_START,
2181 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
2182 SCM_REC_CRITICAL_SECTION_END): Removed.
2183
2184 * eval.c: Replaced SOURCE_SECTION_START / SOURCE_SECTION_END with
2185 direct calls to scm_rec_mutex_lock / unlock around the three calls
2186 to scm_m_expand_body.
2187
2188 * eval.c, eval.h (promise_free): New function.
2189 (scm_force): Rewritten; Now thread-safe; Removed
2190 SCM_DEFER/ALLOW_INTS.
2191
2192 * pthread-threads.h: Added partially implemented plugin interface
2193 for recursive mutexes. These are, for now, only intended to be
2194 used internally within the Guile implementation.
2195
2196 * pthread-threads.c: New file.
2197
2198 * threads.c: Conditionally #include "pthread-threads.c".
2199
2200 * eval.c, eval.h (scm_makprom, scm_force): Rewritten to be
2201 thread-safe;
2202
2203 * snarf.h (SCM_MUTEX, SCM_GLOBAL_MUTEX, SCM_REC_MUTEX,
2204 SCM_GLOBAL_REC_MUTEX): New macros.
2205
2206 * eval.c, threads.c, threads.h, snarf.h: Rewrote critical section
2207 macros---use mutexes instead.
2208
2209 * tags.h (SCM_IM_FUTURE): New tag.
2210
2211 * eval.c (scm_m_future): New primitive macro.
2212 (SCM_CEVAL): Support futures.
2213 (unmemocopy): Support unmemoization of futures.
2214
2215 * print.c (scm_isymnames): Name of future isym.
2216
2ff4f181
MD
2217 * version.c: Unmade some changes to my private copy that got
2218 committed by mistake.
2219
392d2833
MD
22202002-12-11 Mikael Djurfeldt <mdj@kvast.blakulla.net>
2221
e200ddee
MD
2222 * gc-malloc.c, gc.h, init.c: Reverted gc-malloc change of
2223 2002-12-10.
2224
392d2833
MD
2225 * gc.c (scm_igc): Don't call scm_i_thread_invalidate_freelists.
2226
2227 * gc.c (scm_gc_sweep): Call it here instead, which is a more
2228 logical place.
2229
2230 * threads.c (create_thread): Remember root object until the handle
2231 of the new thread is on all_threads list.
2232
2233 * root.c (scm_make_root): Moved copying of fluids until after
2234 creation of root handle so that the fluids are GC protected. Also
2235 removed the critical section.
2236
c4c52ebe
MD
22372002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
2238
960c408c
MD
2239 * gc-malloc.c, gc.h (scm_gc_malloc_prehistory): New function.
2240
3cdde9d6 2241 * gc-malloc.c (malloc_mutex): New mutex.
960c408c 2242 (scm_gc_malloc_prehistory): Initialize it.
3cdde9d6
MD
2243 (scm_realloc): Serialize call to realloc
2244 (scm_calloc): Same for calloc.
2245 Thanks to Wolfgang Jaehrling!
2246 (Now we have to make sure all calls to malloc/realloc are made
2247 through scm_malloc.)
2248
960c408c
MD
2249 * init.c (scm_init_guile_1): Call scm_gc_malloc_prehistory.
2250
c4c52ebe
MD
2251 * threads.c (really_launch): Release heap (to prevent deadlock).
2252 (create_thread): Release heap before locking thread admin mutex.
2253
b0dc3d71
MD
22542002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
2255
2256 * threads.c (scm_i_thread_invalidate_freelists): New
2257 function.
2258
2259 * gc.c (scm_igc): Call scm_i_thread_invalidate_freelists.
2260
2261 * modules.c (scm_export): Inserted a return statement.
2262
06e80f59
HWN
22632002-12-10 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2264
2265 * modules.c (scm_export): new function
2266
2267 * gc-card.c: add a note about malloc()/free() overhead.
2268
a12611c3
MD
22692002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
2270
2271 * Makefile.am (c-tokenize.$(OBJEXT)): Don't look for c-tokenize.c
2272 in srcdir.
2273
c7fabadf
MD
22742002-12-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2275
2276 These changes remove scm_ints_disabled (which hasn't has any
2277 effect in Guile for quite some time).
2278
2279 * async.c, error.h (scm_ints_disabled): Removed.
2280
2281 * gc.c (scm_gc_for_newcell), init.c (scm_init_guile_1),
2282 root.c (scm_internal_cwdr), gdbint.c (SCM_BEGIN_FOREIGN_BLOCK,
2283 SCM_END_FOREIGN_BLOCK): Don't touch scm_ints_disabled.
2284 (old_ints): Removed.
2285
2286 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Define as a recursive
2287 critical section.
2288 (SCM_REDEFER_INTS, SCM_ALLOW_INTS): Define as SCM_DEFER_INTS and
2289 SCM_ALLOW_INTS.
2290
9bc4701c
MD
22912002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2292
52340b65
MD
2293 * threads.c (scm_mutex_lock, scm_cond_wait, scm_cond_timedwait):
2294 Removed accidental #if 0 around these functions.
2295
9bc4701c
MD
2296 These changes are the start of support for preemptive
2297 multithreading. Marius and I have agreed that I commit this code
2298 into the repository although it isn't thoroughly tested and surely
2299 introduces many bugs. The bugs should only be exposed when using
2300 threads, though. Signalling and error handling for threads is
2301 very likely broken. Work on making the implementation cleaner and
2302 more efficient is needed.
2303
2304 * __scm.h (SCM_ALLOW_INTS_ONLY): Removed.
2305 (SCM_NONREC_CRITICAL_SECTION_START,
2306 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
2307 SCM_REC_CRITICAL_SECTION_END): New macros.
2308 (SCM_CRITICAL_SECTION_START/END): Defined here.
2309
2310 * eval.c: Insert SOURCE_SECTION_START / SOURCE_SECTION_END around
2311 the three calls to scm_m_expand_body.
2312
2313 * gc.h: #include "libguile/pthread-threads.h";
2314 (SCM_FREELIST_CREATE, SCM_FREELIST_LOC): New macros.
2315
2316 * gc.c (scm_i_freelist, scm_i_freelist2): Defined to be of type
2317 scm_t_key;
2318
2319 * gc.c, gc-freelist.c, inline.h: Use SCM_FREELIST_LOC for freelist
2320 access.
2321
2322 * gc-freelist.c (scm_gc_init_freelist): Create freelist keys.
2323
2324 * gc-freelist.c, threads.c (really_launch): Use
2325 SCM_FREELIST_CREATE.
2326
2327 * gc-malloc.c (scm_realloc, scm_gc_register_collectable_memory):
2328
2329 * gc.c (scm_i_expensive_validation_check, scm_gc,
2330 scm_gc_for_newcell): Put threads to sleep before doing GC-related
2331 heap administration so that those pieces of code are executed
2332 single-threaded. We might consider rewriting these code sections
2333 in terms of a "call_gc_code_singly_threaded" construct instead of
2334 calling the pair of scm_i_thread_put_to_sleep () and
2335 scm_i_thread_wake_up (). Also, we would want to have as many of
2336 these sections eleminated.
2337
2338 * init.c (scm_init_guile_1): Call scm_threads_prehistory.
2339
2340 * inline.h: #include "libguile/threads.h"
2341
2342 * pthread-threads.h: Macros now conform more closely to the
2343 pthreads interface. Some of them now take a second argument.
2344
2345 * threads.c, threads.h: Many changes.
2346
23472002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2348
2349 * Makefile.am (version.h): Changed $^ --> $< in rule for
2350 version.h.
2351
b2cbe8d8
RB
23522002-12-08 Rob Browning <rlb@defaultvalue.org>
2353
2354 * version.h.in (SCM_MICRO_VERSION): use @--@ substitution now.
2355 (SCM_MINOR_VERSION): use @--@ substitution now.
2356 (SCM_MICRO_VERSION): use @--@ substitution now.
2357 (scm_effective_version): new function prototype.
2358
2359 * version.c (scm_effective_version): new function, also add
2360 effective-version.
2361
2362 * Makefile.am (schemelibdir): VERSION -> GUILE_EFFECTIVE_VERSION.
2363 (libpath.h): use GUILE_EFFECTIVE_VERSION to compute
2364 SCM_LIBRARY_DIR.
2365 (version.h): generate this here rather than configure.in. This
2366 approach tracks source edits better (i.e. more immediately).
2367 Might be worth considering for other .in files too.
2368
5441c65c
MV
23692002-12-02 Marius Vollmer <mvo@zagadka.ping.de>
2370
2371 Reorganized thread package selection. A thread package now only
2372 implements a small set of pthread like functions and Guile
2373 implements the rest on top of that. Guile's implementation is
2374 what the "coop-pthreads" package has been previously. Support for
2375 "coop" threads has been removed until I get time to add it again.
2376
2377 * Makefile.am (libguile_la_SOURCES): Removed iselect.c.
2378 (noinst_HEADERS): Removed coop-threads.c, coop-threads.h, coop.c,
2379 null-threads.c, coop-pthreads.c.
2380 (modinclude_HEADERS): Removed coop-defs.h, coop-pthreads.h. Added
2381 pthread-threads.h.
2382
2383 * validate.h (SCM_VALIDATE_THREAD): Moved to threads.h.
2384
2385 * threads.h: Do not include "libguile/coop-defs.h". Include
2386 "libguile/pthread-threads.h" for USE_COPT_THREADS. Removed
2387 (previously deprecated) C level thread API prototypes. They are
2388 now in the thread package specific headers, "null-threads.h" and
2389 "pthread-threads.h".
2390 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
2391 New.
2392 (scm_threads_init): Removed.
2393 (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END,
2394 SCM_THREAD_SWITCHING_CODE, scm_i_switch_counter,
2395 SCM_I_THREAD_SWITCH_COUNT): Define here.
2396 (scm_single_thread_p): Removed.
2397 (scm_call_with_new_thread): Take two args directly instead of list
2398 of two args.
2399 (scm_i_thread_data, scm_i_set_thread_data, SCM_THREAD_LOCAL_DATA,
2400 SCM_SET_THREAD_LOCAL_DATA): Define here.
2401
2402 * threads.c: Merged with "coop-pthreads.c".
2403
2404 * null-threads.h: Implement pthread-like API as a set of macros.
2405
2406 * pthread-threads.h: New, implement pthread-like API by deferring
2407 to pthread itself.
2408
2409 * init.c (scm_init_guile_1): Do not call scm_init_iselect, which
2410 has been lost in the reorganization.
2411
504d99c5
MD
24122002-12-01 Mikael Djurfeldt <mdj@linnaeus>
2413
2414 The following change makes it possible to move procedure
2415 application dispatch outside inner loops. The motivation was
2416 clean implementation of efficient replacements of R5RS primitives
2417 in SRFI-1.
2418
2419 The semantics is clear: scm_trampoline_N returns an optimized
2420 version of scm_call_N (or NULL if the procedure isn't applicable
2421 on N args).
2422
2423 Applying the optimization to map and for-each increases efficiency
2424 noticeably. For example, (map abs ls) is 8 times faster than
2425 before.
2426
2427 * eval.h (scm_t_trampoline_1, scm_t_trampoline_2): New types.
2428
2429 * eval.c, eval.h (scm_trampoline_1, scm_trampoline_2): New functions.
2430
2431 * eval.c (call_subr2_2, call_lsubr_2, call_closure_2): New functions;
2432 (map, for-each): Handle also application on two args as a special
2433 case; Use trampolines.
2434
2435 Other changes:
2436
2437 * sort.c (scm_cmp_function): Choose subr2less for scm_tc7_subr_2o;
2438 (subr2oless): Removed.
2439 (scm_restricted_vector_sort_x): Use scm_return_first to keep the
2440 vector GC protected.
2441
2442 * eval.c (check_map_args): Use scm_out_of_range_pos instead of
2443 scm_out_of_range.
2444
63dd3413
DH
24452002-11-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
2446
2447 * evalext.[ch] (scm_m_undefine, undefine): Deprecated.
2448
4ba5f279
MD
24492002-11-17 Mikael Djurfeldt <mdj@linnaeus>
2450
2451 * debug.c (scm_make_iloc): Added missing "return".
2452
56ae231f
MV
24532002-11-17 Marius Vollmer <mvo@zagadka.ping.de>
2454
2455 * strports.c (scm_eval_string_in_module): Validate second arg to
2456 be a module. Thanks to Arno Peters!
2457
80b28865
DH
24582002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
2459
2460 * .cvsignore: remove goops.c
2461
c88b1456
DH
24622002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
2463
2464 * modules.c (scm_env_top_level, scm_lookup_closure_module,
2465 module_variable, scm_module_lookup_closure,
2466 scm_module_transformer, scm_sym2var, scm_module_reverse_lookup,
2467 scm_system_module_env_p): Don't compare SCM values with C
2468 operators == or !=. Avoid SCM_IMP predicates. Prefer !SCM_FALSEP
2469 over SCM_NFALSEP.
2470
a8a19efc
DH
24712002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
2472
2473 * eval.h (SCM_MAKE_ILOC): New macro.
2474
2475 * debug.c (scm_make_iloc): Use SCM_MAKE_ILOC instead of computing
2476 the iloc bitpattern here.
2477
76734914
MD
24782002-11-14 Mikael Djurfeldt <mdj@linnaeus>
2479
2480 * coop-pthreads.c, coop-pthreads.h: scm_internal_select should be
2481 part of the API, otherwise it's difficult to write Guile
2482 extensions using non-blocking I/O => moved #include
2483 "libguile/iselect.h" from coop-pthreads.c --> coop-pthreads.h.
2484
2485 * coop-pthreads.c (scm_unlock_mutex): Changed s_lock_mutex -->
2486 s_unlock_mutex.
2487
8b5b4a75
MV
24882002-11-10 Marius Vollmer <mvo@zagadka.ping.de>
2489
2490 * __scm.h (USE_THREADS, GUILE_ISELECT): Do not define here. They
2491 are defined in configure.in.
2492
2493 * threads.c: Removed SCM_API from function definitions. SCM_API
2494 is only for declarations.
2495
e5a83084
MD
24962002-11-07 Mikael Djurfeldt <mdj@linnaeus>
2497
9be8bb45
MD
2498 * coop-pthreads.h: Added support for thread specific data to the
2499 generic C API for the coop-pthreads case.
2500
e5a83084
MD
2501 * threads.c, threads.h (scm_cond_init): Undo unintentional API
2502 change.
6c214b62 2503 (scm_cond_broadcast): Added missing function.
e5a83084 2504
7edf178e
MV
25052002-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2506
2507 * coop.c (coop_next_runnable_thread): Removed, wich should have
2508 happened when GUILE_ISELECT was hard-wired.
2509
7f5b1b77
MV
25102002-11-03 Marius Vollmer <mvo@zagadka.ping.de>
2511
7caa1b07
MV
2512 * Makefile.am (libguile_la_SOURCES): Added threads.c
2513 (DOT_DOC_FILES): Added threads.doc.
2514 (DOT_X_FILES): Added threads.x.
2515 (EXTRA_libguile_la_SOURCES): Removed threads.c.
2516 (noinst_HEADERS): Added coop-pthreads.c.
2517 (modinclude_HEADERS): Added coop-pthreads.h.
2518
2519 * __scm.h (USE_THREADS, GUILE_ISELECT): Define when
2520 SCM_DEBUG_DEPRECATED. Removed their use thru-out Guile.
2521
bb11cbf4
MV
2522 * iselect.c: Include "_scm.h" before testing HAVE_UNISTD_H.
2523 Thanks to Bill Schottstaedt!
2524
1d4cbbed
MV
2525 * numbers.c (scm_integer_expt): Make 0^z == 0 for z != 0.
2526
7f5b1b77
MV
2527 * _scm.h (HAVE_RESTARTABLE_SYSCALLS): Do define even when
2528 SCM_COPT_THREADS is defined.
2529 (SCM_SYSCALL): Use EINTR-expection version when SCM_COPT_THREADS
2530 is defined.
2531
2532 * coop-pthreads.c: Some harmless renamings of internal stuff.
2533 (create_thread): New, generalized version of
2534 scm_call_with_new_thread.
2535 (scm_call_with_new_thread): Use it.
2536 (scm_spawn_thread): New, use create_thread.
2537
d52f53b1
MV
25382002-11-02 Marius Vollmer <mvo@zagadka.ping.de>
2539
2540 * coop-pthreads.c, coop-pthreads.h: Redone completely, you might
2541 start testing it now.
2542
2543 * _scm.h: Include <errno.h< so that SCM_SYSCALL is correctly
2544 defined when HAVE_RESTARTABLE_SYSCALLS is not defined.
2545 (HAVE_RESTARTABLE_SYSCALLS): Do not define when USE_COPT_THREADS
2546 is defined.
2547
30f920c3
MV
25482002-10-27 Marius Vollmer <mvo@zagadka.ping.de>
2549
2550 * scmsigs.c (signal_cell_handlers, install_handler_data,
2551 scm_delq_spine_x, really_install_handler, install_handler): New
2552 scheme for triggering signal handlers, to simplify take_signal.
2553 (take_signal): Simplified, to avoid race conditions.
2554 (scm_sigaction_for_thread): Use new Scheme. Validate that thread
2555 hasn't exited yet.
2556
2557 * async.c (scm_async_click): Reset pending_asyncs, handle
2558 signal_asyncs. Don't set cdr of a non-signal async to #f.
2559 (scm_i_queue_async_cell): Do not check cdr of cell for #f, queue
2560 always. Set pending_asyncs.
2561 (scm_system_async_mark_for_thread): Check that thread has not
2562 exited.
2563 (scm_unmask_signals, decrease_block): Call scm_async_click after
2564 block_asyncs becomes zero.
2565
2566 * __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of
2567 active_asyncs.
2568
2569 * root.h (scm_root_state): Added pending_asyncs and signal_asyncs
2570 fields.
2571 * root.c (root_mark): Mark them.
2572 (make_root): Initialize them.
2573
2574 * iselect.c, iselect.h: Replaced GUILE_ISELECT with
2575 USE_COOP_THREADS.
2576 (scm_internal_select): Define one version for USE_COOP_THREADS and
2577 one for USE_NULL_THREADS.
2578 (scm_init_iselect): Likewise.
2579
2580 * inline.h (scm_cell, scm_double_cell): Also allow
2581 USE_COPT_THREADS to not protect the slot initializers.
2582
2583 * init.c (scm_init_guile_1): Call scm_init_thread_procs. This is
2584 because threads need to be initialized before the stack, but
2585 gsubrs such as scm_timed_condition_variable_wait can only be
2586 created later.
2587
2588 * threads.h: Include "coop-pthreads.h" when requested.
2589 (scm_threads_make_mutex, scm_threads_lock_mutex,
2590 scm_threads_unlock_mutex, scm_threads_monitor): Removed, they were
2591 not implemented anyway.
2592 (scm_init_thread_procs, scm_try_mutex,
2593 scm_timed_condition_variable_wait,
2594 scm_broadcast_condition_variable, scm_c_thread_exited_p,
2595 scm_thread_exited_p): New prototypes.
2596 (struct timespec): Define if not already defined.
2597 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
2598 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
2599 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
2600 scm_cond_broadcast, scm_cond_destroy): Declarations moved here and
2601 deprecated.
2602
2603 * threads.c: Include <errno.h>. Include "coop-pthreads.c" when
2604 requested.
2605 (scm_thread_exited_p): New.
2606 (scm_try_mutex, scm_broadcast_condition_variable): Newly
2607 registered procedures.
2608 (scm_wait_condition_variable, scm_timed_wait_condition_variable):
2609 Use the latter as the procedure for "wait-condition-variable",
2610 thus offering a optional timeout parameter to Scheme.
2611 (scm_wait_condition_variable): Implement in terms of
2612 scm_timed_wait_condition_variable.
2613 (scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
2614 scm_mutex_unlock, scm_mutex_destroy, scm_cond_init,
2615 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
2616 scm_cond_broadcast, scm_cond_destroy): Implement in terms of
2617 scm_make_mutex, etc, and deprecate.
2618 (scm_init_threads): Do not create smobs, leave this to
2619 scm_threads_init. Do not include "threads.x" file.
2620 (scm_init_thread_procs): New, include "threads.x" here.
2621
2622 * null-threads.h (scm_null_mutex, scm_null_mutex_init,
2623 scm_null_mutex_lock, scm_null_mutex_unlock,
2624 scm_null_mutex_destroy, scm_null_condvar, scm_null_condvar_init,
2625 scm_null_condvar_wait, scm_null_condvar_signal,
2626 scm_null_condvar_destroy): Removed.
2627 (scm_mutex_init, scm_mutex_lock, scm_mutex_unlock, scm_cond_init,
2628 scm_cond_wait, scm_cond_signal, scm_cond_broadcast,
2629 scm_cond_destory): Do not define, they are now deprecated and
2630 handled by threads.{h,c}.
2631
2632 * null-threads.c (scm_null_mutex, scm_null_cond): Define here.
2633 (scm_threads_init): Create smobs here, using the appropriate
2634 sizes.
2635 (block): Removed, now unused.
2636 (scm_c_thread_exited_p): New.
2637 (scm_null_mutex_init, scm_null_mutex_lock, scm_null_mutex_unlock,
2638 scm_null_mutex_destroy, scm_null_condvar_init,
2639 scm_null_condvar_wait, scm_null_condvar_signal,
2640 scm_null_condvar_destroy): Removed and updated users to do their
2641 task directly.
2642 (scm_try_mutex, timeval_subtract,
2643 scm_timed_wait_condition_variable,
2644 scm_broadcast_condition_variable): New.
2645 (scm_wait_condition_variable): Removed.
2646
2647 * coop-defs.h (coop_m): Added 'level' field.
2648 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
2649 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
2650 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
2651 scm_cond_broadcast, scm_cond_destroy, struct timespec): Do not
2652 define.
2653 (coop_condition_variable_broadcast): New.
2654
2655 * coop-threads.c (scm_threads_init): Create smobs here, using the
2656 appropriate sizes.
2657 (scm_c_thread_exited_p, scm_try_mutex,
2658 scm_timed_wait_condition_variable,
2659 scm_broadcast_condition_variable): New.
2660 (scm_wait_condition_variable): Removed.
2661
2662 * coop.c (coop_new_mutex_init): Initialize level.
2663 (coop_mutex_trylock, coop_mutex_lock, coop_mutex_unlock): maintain
2664 level.
2665 (coop_condition_variable_signal): Renamed to
2666 coop_condition_variable_broadcast and reimplemented in terms of
2667 that. Thus...
2668 (coop_condition_variable_broadcast): New.
2669
2670 * goops.c (hell_mutex): Reimplemented using scm_make_mutex, etc.
2671
2672 * coop-pthreads.h, coop-pthreads.c: New, but unfinished.
2673
087ed40d
MV
26742002-10-21 Marius Vollmer <mvo@zagadka.ping.de>
2675
65a23095
MV
2676 * null-threads.c: Include <time.h>. Also, use <...> for inclusion
2677 of system headers.
2678
087ed40d
MV
2679 * async.c, goops.h, modules.h, validate.h (SCM_MAKE_VALIDATE_MSG):
2680 New. Use it instead of SCM_MAKE_VALIDATE in lots of places to
30f920c3 2681 give better error messages. Thanks to Bill Schottstaedt!
087ed40d 2682
5ec1d2c8
DH
26832002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
2684
2685 * evalext.h, evalext.c (scm_definedp, scm_defined_p): Renamed
2686 scm_definedp to scm_defined_p and deprecated scm_definedp.
2687
100ae50d
DH
26882002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
2689
2690 * async.h, async.c (scm_system_async): Fixed deprecation to work
2691 correctly when deprecated features are excluded.
2692
2794cb50
MV
26932002-10-16 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2694
2695 * async.c (scm_system_async_mark_for_thread): Validate thread
2696 argument.
2697
2698 * coop-threads.c (scm_i_thread_root): Do not validate argument.
2699
2700 * feature.c (scm_init_feature): Don't add 'threads' for
2701 USE_NULL_THREADS.
2702
2703 * inline.h (scm_cell, scm_double_cell): Also allow
2704 USE_NULL_THREADS to not protect the slot initializers.
2705
2706 * scmsigs.c (scm_sigaction_for_thread): It's "USE_THREADS" not
2707 "USE_THREAD".
2708
2709 * Makefile.am (noinst_HEADERS): Added null-threads.c.
2710 (modinclude_HEADERS): Added null-threads.h.
2711
2712 * threads.h: Include null-threads.h when !USE_COOP_THREADS.
2713 * threads.c: Include null-threads.c when !USE_COOP_THREADS.
2714 (scm_init_threads): Use generic type names scm_t_mutex and
2715 scm_t_cond instead of coop_m and coop_c.
2716
2717 * null-threads.c, null-threads.h: New files.
2718
ff810d7a
MV
27192002-10-15 Marius Vollmer <mvo@zagadka.ping.de>
2720
2721 * Makefile.am: Replaced "$<" in non-pattern rules with its value.
2722 This is to support makes that know about "$<" only in pattern
2723 rules, like Sun's make.
2724
a90bdb73
MV
27252002-10-13 Marius Vollmer <mvo@zagadka.ping.de>
2726
2727 * Makefile.am (libpath.h): Fixed typo in top_srcdir_absolute
2728 substitution. Thanks to David Allouche!
2729
e71a8bf2
DH
27302002-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
2731
2732 * evalext.h: Replaced SCM_DEBUG_DEPRECATED with
2733 !SCM_ENABLE_DEPRECATED.
2734
41f77ff5
MV
27352002-10-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2736
504d99c5 2737 * async.c (scm_system_async_mark_for_thread): Only call
41f77ff5
MV
2738 scm_i_thread_root when USE_THREADS is defined. Use scm_root
2739 otherwise.
2740
2741 * scmsigs.c (take_signal): Only call scm_i_thread_root when
2742 USE_THREADS is defined. Use scm_root otherwise.
2743 (scm_sigaction_for_thread): Ignore THREAD argument when
2744 USE_THREADS is not defined. Also, move THREAD argument defaulting
2745 out of HAVE_SIGACTION section, which was a bug.
2746
6d16b125
MV
27472002-10-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2748
2749 * scmsigs.c (scm_sigaction_for_thread): Store original handler in
2750 signal_handlers, not the closure that is used as the async.
2751 The closure is stored in signal_handler_cells, as previously.
2752
acfa1f52
MV
27532002-10-10 Marius Vollmer <mvo@zagadka.ping.de>
2754
2755 * root.h (scm_root_state): Added 'block_async' slot.
2756 (scm_active_asyncs): Removed abbrev.
2757 * root.c (scm_make_root): Initialize 'block_asyncs' slot.
2758
2759 * __scm.h (SCM_ASYNC_TICK): Do without the scm_active_asyncs
2760 abbrev.
2761
2762 * async.h (scm_call_with_blocked_asyncs,
2763 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
2764 scm_c_call_with_unblocked_asyncs): New prototypes.
2765 (scm_mask_signals, scm_unmask_signals): Deprecated.
2766 (scm_mask_ints): Turned into a macro.
2767 * async.c (scm_mask_ints): Removed.
2768 (scm_run_asyncs): Do not set scm_mask_ints while running an async.
2769 this should not be necessary.
2770 (scm_async_click): Test block_asyncs instead of scm_mask_ints.
2771 (scm_mask_signals, scm_unmask_signals): Deprecated. Emit
2772 deprecation warning and check for errornous use. Set block_asyncs
2773 instead of scm_mask_ints.
2774 (increase_block, decrease_block, scm_call_with_blocked_asyncs,
2775 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
2776 scm_c_call_with_unblocked_asyncs): New.
2777
2778 * script.c (scm_compile_shell_switches): Do not set scm_mask_ints.
2779 Asyncs are enabled by default.
2780
34010f56
NJ
27812002-10-09 Neil Jerram <neil@ossau.uklinux.net>
2782
2783 * vports.c (scm_make_soft_port): Allow vector argument to carry a
2784 6th element: an input waiting thunk.
2785 (sf_input_waiting): New.
2786
9310d6f2
MV
27872002-10-05 Marius Vollmer <mvo@zagadka.ping.de>
2788
2789 * root.c (root_mark): Mark active_asyncs slot.
2790
2791 * async.c (scm_async_click): Set the cdr of a executed handler
2792 cell to SCM_BOOL_F, not SCM_EOL.
2793 (scm_i_queue_async_cell): Queue the cell at the end of the list,
2794 and only if the handler procedure is not already present.
2795 (scm_system_async_mark_for_thread): Initialize cdr of handler cell
2796 with SCM_BOOL_F.
2797 * scmsigs.c (scm_sigaction_for_thread): Likewise.
2798
ac48c719
RB
27992002-10-04 Rob Browning <rlb@defaultvalue.org>
2800
1360a142
RB
2801 * guile.c (main): switch to scm_lt_dlset_preloaded_symbols;
2802
2803 * dynl.c (sysdep_dynl_link): switch to scm_lt_dlhandle,
2804 scm_lt_dlopenext, and scm_lt_dlerror.
2805 (sysdep_dynl_unlink): switch to scm_lt_dlhandle, scm_lt_dlclose,
2806 and scm_lt_dlerror.
2807 (sysdep_dynl_func): switch to scm_lt_dlhandle, scm_lt_dlsym,
2808 and scm_lt_dlerror.
2809 (sysdep_dynl_init): switch to scm_lt_dlinit();
2810
2811 * Makefile.am (libguile_la_LIBADD): switch to use
2812 libguile-ltdl.la.
2813
504d99c5 2814 * numbers.c (scm_integer_expt): (expt 0 1) should be 1.
ac48c719 2815
497092c9
MV
28162002-10-04 Marius Vollmer <mvo@zagadka.ping.de>
2817
2818 * scmsigs.h (scm_sigaction_for_thread): New prototype.
2819 * scmsigs.c (got_signal): Removed.
2820 (signal_handler_cells, signal_handler_threads): New.
2821 (take_signal): Queue the cell of the signal for the specified
2822 thread. Reset the signal handler on systems that don't have
2823 sigaction.
2824 (sys_deliver_signals): Removed.
2825 (close_1): New.
2826 (scm_sigaction_for_thread): Renamed from scm_sigaction and
2827 extended to also set the thread of a signal and allocate a cell
2828 for it. Keep the Scheme name "sigaction". Check that signum is
2829 within range. Also, use SCM_VECTOR_REF instead of SCM_VELTS.
2830 (scm_sigaction): Implement in terms of scm_sigaction_for_thread.
2831 (scm_init_scmsigs): Allocate signal_handler_cells and
2832 signal_handler_threads vectors.
2833
2834 * async.c: Removed GUILE_OLD_ASYNC_CLICK code. Reorganized so
2835 that system asnycs and user asyncs are separated. Reimplemented
2836 system asyncs to work per-thread.
2837
2838 * gc.c (scm_init_gc): Do not use scm_system_async.
2839
2840 * async.h (scm_asyncs_pending, scm_set_tick_rate,
2841 scm_set_switch_rate, scm_system_async_mark_from_signal_handler):
2842 Removed prototypes.
2843 (scm_i_queue_async_cell): New.
2844
2845 * __scm.h (scm_asyncs_pending_p): Removed.
2846 (SCM_ASYNC_CLICK): Check scm_active_asyncs instead of
2847 scm_asyncs_pending_p.
2848
2849 * async.h (scm_system_async_mark_for_thread): New prototype.
2850
2851 * __scm.h: Removed GUILE_OLD_ASYNC_CLICK code.
2852
2853 * root.h (scm_root_state): Added new "active_asyncs" slot.
2854 * root.c (scm_make_root): Initialize it to SCM_EOL.
2855
2856 * coop-defs.h (coop_t): Added new "handle" slot.
2857 * coop-threads.c (all_threads, scm_current_thread,
2858 scm_all_threads, scm_i_thread_root): New.
2859 (scm_threads_init): Add main thread to all_threads.
2860 (scheme_launch_thread): Remove thread from all_threads when it
2861 terminates.
2862 (scm_call_with_new_thread): Initialize handle slot of coop_t
2863 structure and add new thread to all_threads.
2864 (scm_spawn_thread): Likewise.
2865
2866 * threads.h (scm_current_thread, scm_all_threads): New prototypes.
2867 * threads.c (scm_current_thread, scm_all_threads): Register as
2868 primitives.
2869
2870 * dynl.c: Use scm_lt_ prefix for libltdl functions.
2871
480fa28d
NJ
28722002-09-29 Neil Jerram <neil@ossau.uklinux.net>
2873
2874 * script.c (scm_compile_shell_switches): Fix bad spelling of
2875 `explicitly' in comment.
2876
28772002-09-28 Neil Jerram <neil@ossau.uklinux.net>
2878
2879 * posix.c (scm_geteuid, scm_getegid, scm_seteuid, scm_setegid):
2880 Refer to provided? in doc string rather than deprecated feature?.
2881
3553e1d1
GH
28822002-09-24 Gary Houston <ghouston@arglist.com>
2883
2884 * inline.h (scm_double_cell): prevent reordering of statements
2885 with any following code (for GCC 3 strict-aliasing).
2886 * numbers.c (scm_make_real), num2float.i.c (FLOAT2NUM): removed
2887 the earlier version of the reordering prevention.
2888
4ad0814a
HWN
28892002-09-19 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2890
2891 * inline.h (scm_double_cell): move SET_GCMARK set out of if body.
2892
e88e4f2e
HWN
28932002-09-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2894
2895 * gc-malloc.c (scm_gc_register_collectable_memory): more overflow
2896 protection.
2897
1e71eafb
HWN
28982002-09-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2899
2900 * inline.h: include stdio.h
2901
2902 * smob.c (free_print): abort if scm_debug_cell_accesses_p is set
2903
61ef9c1f
HWN
29042002-09-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2905
dac04e9f
HWN
2906 * gc-segment.c (scm_i_make_initial_segment): check user settings
2907 for sanity.
2908
2909 * gc-malloc.c (scm_gc_init_malloc): check user settings for
2910 sanity.
dac04e9f
HWN
2911
2912 * gc-freelist.c (scm_init_freelist): check user settings for sanity.
2913
ffd72400
HWN
2914 * struct.h: change scm_structs_to_free to scm_i_structs_to_free
2915
2916 * gc-malloc.c (scm_gc_register_collectable_memory): use floats;
1e71eafb
HWN
2917 these won't ever wrap around with high memory usage. Thanks to
2918 Sven Hartrumpf for finding this.
ffd72400 2919
5bd4a949
HWN
2920 * gc-freelist.c: include <stdio.h>
2921
61ef9c1f
HWN
2922 * gc-malloc.c: add DEBUGINFO for mtrigger GCs.
2923
ffd0ef3b
MV
29242002-09-01 Marius Vollmer <mvo@zagadka.ping.de>
2925
a27e3d14
MV
2926 * vectors.h (SCM_VECTOR_REF): New.
2927
ffd0ef3b
MV
2928 * snarf.h (SCM_DEFINE_PUBLIC): New.
2929
f8a1712b
MV
29302002-08-30 Marius Vollmer <mvo@zagadka.ping.de>
2931
2932 * socket.c (scm_addr_vector): Added size of address to arguments.
2933 Use it to avoid accessing a non-existent path in a sockaddr_un.
2934 Changed all callers.
2935
7200a36b
HWN
29362002-08-29 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2937
1383773b
HWN
2938 * gc.h: remove DOUBLECELL card flags.
2939
2940 * gc-malloc.c (scm_calloc): try to use calloc() before calling
2941 scm_realloc().
2942
2943 * gc-segment.c (scm_i_initialize_heap_segment_data): remove card
2944 init loop; handle this from scm_init_card_freelist()
2945
2946 * gc-card.c (scm_init_card_freelist): init bit vector here.
2947
7200a36b 2948 * numbers.c (scm_make_real): prevent reordering of statements
8fa5786d 2949 num2float.i.c (FLOAT2NUM): idem
7200a36b 2950
9981de3a
HWN
29512002-08-27 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2952
2953 * eval.h: prepend libguile/ to include path
2954
19647556
MV
29552002-08-26 Marius Vollmer <mvo@zagadka.ping.de>
2956
2957 * script.c (scm_compile_shell_switches): Added "2002" to Copyright
2958