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