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