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