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