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