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