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