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