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