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