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