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