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