(SCM_CELL_OBJECT_LOC): use SCM_GC_CELL_OBJECT to prevent
[bpt/guile.git] / libguile / ChangeLog
1 2004-05-26 Han-Wen Nienhuys <hanwen@xs4all.nl>
2
3 * gc.h (SCM_CELL_OBJECT_LOC): use SCM_GC_CELL_OBJECT to prevent
4 compound expression as lvalue errors.
5
6 2004-05-24 Marius Vollmer <mvo@zagadka.de>
7
8 * dynwind.c (winder_mark): Use SCM_PACK to correctly convert the
9 WINDER_DATA to a SCM.
10
11 2004-05-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
12
13 * goops.c (compute_getters_n_setters, create_standard_classes,
14 scm_add_slot): Compute closures by calling scm_i_eval_x on a
15 lambda expression rather than creating them with scm_closure.
16
17 2004-05-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
18
19 * eval.c (s_macro_keyword, scm_m_set_x): Remove checking for
20 misplaced syntactic keywords. This will not work unless guile's
21 defmacro feature is deprecated.
22
23 (scm_m_case): Fixed a bug that caused the list of labels to grow
24 with every case form.
25
26 2004-05-19 Kevin Ryde <user42@zip.com.au>
27
28 * numbers.c (scm_round_number): For inum and big, just return x. For
29 real, use scm_round for 2^54-1 etc problems covered there.
30
31 * numbers.c (trunc): Remove #define to scm_truncate when the C library
32 doesn't provide trunc. This was for when `truncate' was done as a
33 scm_tc7_dsubr, no longer required.
34
35 * threads.c (scm_threads_mark_stacks) [SCM_STACK_GROWS_UP]: Correction
36 to stack marking call, two parameters and no cast on t->base.
37
38 2004-05-18 Marius Vollmer <mvo@zagadka.de>
39
40 * hashtab.c (rehash_after_gc): Bug fix: properly link the
41 processed hashtables back into the weak_hashtables list. Thanks
42 to Bill Schottstaedt!
43
44 2004-05-16 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
45
46 * eval.c (unmemoize_quote): New static function.
47
48 (scm_m_quote, scm_m_atslot_ref, SCM_CEVAL): Changed the byte code
49 representation of 'quote' and '@slot-ref' to an improper list.
50 This reduces execution time, the number of cells used to hold the
51 memoized code, and thus also reduces garbage collection time.
52
53 (scm_unmemocopy): Use unmemoize_quote for quote expressions.
54
55 (SCM_CEVAL): Changed macro handling to also work with macros that
56 return improper lists. Added an assertion, that the code returned
57 by a macro transformer will not lead to cycles in the memoized
58 code.
59
60 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
61
62 No functional change, just rearrangements of functions within the
63 file.
64
65 * eval.c (scm_ilookup, scm_unbound_variable_key,
66 error_unbound_variable, scm_lookupcar1, scm_lookupcar): Moved to
67 the definitions used for execution, since that's where they will
68 belong to later.
69
70 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
71
72 * numbers.h (SCM_SLOPPY_FRACTIONP): Removed. It was not used
73 throughout guile, has not been part of an official release yet,
74 and the concept of sloppy predicates has never been a good idea.
75
76 (SCM_FRACTION_NUMERATOR, SCM_FRACTION_DENOMINATOR,
77 SCM_FRACTION_SET_NUMERATOR, SCM_FRACTION_SET_DENOMINATOR):
78 Simplified.
79
80 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
81
82 * throw.c (SETJBJMPBUF, SCM_SETJBDFRAME): Add cast to scm_t_bits
83 to make explicit what happens.
84
85 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
86
87 * dynl.c (SET_DYNL_HANDLE): Add cast to scm_t_bits to make
88 explicit what happens.
89
90 * guardians.c (TCONC_IN): Use SCM_SET_CELL_OBJECT_x rather than
91 SCM_SET_CELL_WORD_x when writing scheme objets to cell elements.
92
93 2004-05-11 Marius Vollmer <mvo@zagadka.de>
94
95 * scmsigs.c (scm_sigaction_for_thread): Validate that the handler
96 is indeed a procedure when it isn't a number.
97
98 2004-05-10 Marius Vollmer <mvo@zagadka.de>
99
100 Convert floating point numbers into strings with an arbitrary
101 radix. Thanks to Richard Todd!
102
103 * numbers.c (FLOBUFLEN): Increase so that radix 2 strings will
104 fit.
105 (fx): Removed.
106 (scm_dblprec, fx_per_radix, init_dblprec, init_fx_radix,
107 number_chars): New, to support variable radices.
108 (idbl2str): Use above instead of the old base-10 only tables.
109 (iflo2str): Pass on new RADIX argument to idbl2str.
110 (scm_number_to_string): Pass radix to iflo2str.
111 (scm_print_real, scm_print_complex): Explicitly pass radix 10 to
112 iflo2str.
113 (scm_init_numbers): Call init_dblprec and init_fx_radix for all
114 possible radices.
115
116 2004-05-10 Kevin Ryde <user42@zip.com.au>
117
118 * numbers.c (scm_logbit_p): Correction to test above the end of an
119 inum. Reported by Jan Konecny.
120
121 2004-05-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
122
123 * gc.h (scm_t_cell): Fields are now of type SCM instead of
124 scm_t_bits. Updated all users.
125 (SCM_GC_CARD_SIZE_MASK): Use SCM_GC_SIZEOF_CARD instead of
126 duplicating the code.
127 (SCM_CELL_OBJECT_LOC): New.
128 (SCM_CARLOC, SCM_CDRLOC): Use it instead of SCM_CELL_WORD_LOC.
129 (SCM_CELL_WORD_LOC): Moved to "deprecated.h".
130
131 * smob.h (SCM_SMOB_DATA_2, SCM_SMOB_DATA_3, SCM_SMOB_FLAGS,
132 SCM_SET_SMOB_DATA_2, SCM_SET_SMOB_DATA_3, SCM_SET_SMOB_FLAGS,
133 SCM_SMOB_OBJECT, SCM_SMOB_OBJECT_2, SCM_SMOB_OBJECT_3,
134 SCM_SET_SMOB_OBJECT, SCM_SET_SMOB_OBJECT_2, SCM_SET_SMOB_OBJECT_3,
135 SCM_SMOB_OBJECT_LOC, SCM_SMOB_OBJECT_2_LOC,
136 SCM_SMOB_OBJECT_3_LOC): New.
137 * smob.c (scm_i_set_smob_flags): New function.
138
139 * dynl.c, dynwind.c, eval.h, fluids.h, futures.h, hashtab.h,
140 hooks.h, keywords.h, macros.h, macros.c, mallocs.c, mallocs.h,
141 random.h, regex-posix.h, root.h, srcprop.h, srcprop.c, threads.h:
142 Use SCM_SMOB_* instead of SCM_CELL_* as appropriate. Use
143 SCM_SMOB_FLAGS and SCM_SET_SMOB_FLAGS instead of accessing the
144 zeroth word directly. Use SCM_SMOB_PREDICATE as appropriate.
145
146 * numbers.h (SCM_I_BIG_MPZ): Use SCM_CELL_OBJECT_LOC instead of
147 taking the address of SCM_CELL_WORD_1, the latter being no longer
148 an lvalue.
149
150 * variable.h (SCM_VARIABLE_LOC): Use SCM_CELL_OBJECT_LOC instead
151 of casting SCM_CELL_WORD_LOC.
152
153 2004-05-02 Kevin Ryde <user42@zip.com.au>
154
155 * eval.c (scm_macroexp): Add prototype, since it's not in eval.h under
156 --disable-deprecated. Reported by Andreas Vögele.
157
158 * filesys.c (_POSIX_C_SOURCE): Define to 199506L to get readdir_r (in
159 particular on HP-UX). Reported by Andreas Vögele.
160
161 * list.c (varargs.h): Remove, leave just stdarg.h which is all the
162 code has support for. Fixes building with AIX cc, which is ansi but
163 doesn't define __STDC__. Reported by Keith Crane.
164 (var_start): Remove macro, this variation no longer required.
165 (scm_list_n): Use va_start directly.
166
167 2004-05-01 Kevin Ryde <user42@zip.com.au>
168
169 * continuations.c (scm_dynthrow): Use >= instead of SCM_PTR_GE which
170 is now gone. Reported by Andreas Vögele.
171
172 2004-04-28 Kevin Ryde <user42@zip.com.au>
173
174 * backtrace.c (display_frame_expr), numbers.c (XDIGIT2UINT,
175 mem2uinteger, mem2decimal_from_point, mem2ureal): Cast char to int for
176 ctype.h tests, to avoid warnings from gcc on HP-UX about char as array
177 subscript. Reported by Andreas Vögele.
178 Also cast through unsigned char to avoid passing negatives to those
179 macros if input contains 8-bit values.
180
181 * num2integral.i.c (NUM2INTEGRAL): Under non-BIGMPZ_FITSP case,
182 corrections to range check for signed numbers. Remove
183 scm_remember_upto_here_1(num) from these checks, since num is used
184 subsequently anyway.
185
186 * num2integral.i.c (NUM2INTEGRAL): Test BIGMPZ_FITSP with "!= 0" to
187 avoid warning from gcc 3.4. Reported by Hyperdivision.
188
189 * numbers.c (scm_bit_extract): Use min instead of MIN.
190 (MIN): Remove, this conflicts with similar macro defined by limits.h
191 on HP-UX. Reported by Andreas Vögele.
192
193 * stime.c (_POSIX_C_SOURCE): Define to 199506L to get gmtime_r (in
194 particular on HP-UX). Reported by Andreas Vögele.
195
196 * threads.c (scm_threads_mark_stacks): Correction sizet -> size_t.
197 Reported by Andreas Vögele.
198
199 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 25*sizeof(long),
200 for the benefit of hpux11 where pthread_mutex_t is 88 bytes. Reported
201 by Andreas Vögele.
202
203 2004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
204
205 * eval.c (s_macro_keyword): New static identifier.
206
207 (scm_m_define): Change order to first create binding and
208 evaluating the expression afterwards.
209
210 (scm_m_set_x): Memoize complete set! expression. Only leave
211 symbols if no binding exists at memoization time. Throw error if
212 assigning to a syntactic keyword.
213
214 (lazy_memoize_variable): New function.
215
216 (CEVAL): When execution set!, perform lazy memoization if
217 unmemoized symbol is detected.
218
219 * modules.c (module_variable): Return variables with unbound
220 value.
221
222 * tags.h: Fix comment.
223
224 2004-04-25 Kevin Ryde <user42@zip.com.au>
225
226 * chars.c (scm_char_upcase, scm_char_downcase, scm_c_upcase,
227 scm_c_downcase): Use ctype.h toupper and tolower. This will be useful
228 in 8-bit locales, and ensures consistency with char-upper-case? and
229 char-lower-case? which already use ctype.h.
230 (scm_c_upcase_table, scm_c_downcase_table, scm_lowers, scm_uppers):
231 Remove.
232 * chars.c, chars.h, init.c (scm_tables_prehistory): Remove.
233
234 * socket.c (VALIDATE_INET6): Correction to bignum_in_ipv6_range_p
235 call. Reported by Hyperdivision.
236
237 * threads.c (scm_yield): Correction, actually call scm_thread_yield.
238 Reported by Hyperdivision.
239
240 * unif.c (s_scm_make_uve): Remove unused local variable. Reported by
241 Hyperdivision.
242
243 2004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
244
245 Hide the implementation of ilocs and isyms in eval.c.
246
247 * deprecated.h (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
248 SCM_ICDRP), eval.c (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
249 SCM_ICDRP), eval.h (SCM_ICDR, SCM_IFRINC, SCM_IFRAME, SCM_IDIST,
250 SCM_ICDRP): Deprecated and added to deprecated.h. Moved from
251 eval.h to eval.c.
252
253 * deprecated.c (scm_isymnames), deprecated.h (scm_isymnames,
254 SCM_ISYMNUM, SCM_ISYMCHARS), eval.c (SCM_ISYMNUM, isymnames,
255 scm_unmemocopy, CEVAL), print.c (scm_isymnames), tags.h
256 (SCM_ISYMNUM, scm_isymnames, SCM_ISYMCHARS): Deprecated
257 scm_isymnames, SCM_ISYMNUM and SCM_ISYMCHARS and added to
258 deprecated.[hc]. Moved scm_isymnames from print.c to eval.c and
259 renamed to isymnames. Moved SCM_ISYMNUM from tags.h to eval.c and
260 renamed to ISYMNUM.
261
262 * eval.c (scm_i_print_iloc, scm_i_print_isym), eval.h
263 (scm_i_print_iloc, scm_i_print_isym), print.c (scm_iprin1):
264 Extracted printing of ilocs and isyms to guile internal functions
265 scm_i_print_iloc, scm_i_print_isym of eval.c.
266
267 2004-04-22 Kevin Ryde <user42@zip.com.au>
268
269 * numbers.c (scm_bit_extract): Use SCM_SRS for signed right shift.
270
271 * numbers.c (scm_round): Test for x already an integer, to avoid bad
272 rounding in x+0.5 when x is a big value already an integer. In
273 certain hardware rounding cases x+0.5 can give an adjacent integer,
274 leading to that as the result, when we really just wanted x itself.
275
276 2004-04-19 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
277
278 * eval.c (scm_unmemocopy): Fixed unmemoization of let*.
279
280 (deval_args, CEVAL): Minor improvements: Reduced variable scopes,
281 added const qualifiers, cast intentionally unused expressions to
282 void for emphasis, improved comment.
283
284 2004-04-18 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
285
286 * tags.h (scm_tags, scm_tc8_tags, scm_tc9_flag, scm_tc8_flag,
287 scm_tc8_isym): Renamed scm_tags to scm_tc8_tags. Renamed
288 scm_tc9_flag to scm_tc8_flag. Introduced new identifier
289 scm_tc8_isym. Defined tc8-tags relative to scm_tc3_imm24.
290 Defined the tc8-tag for flags to be 0x04, which will mean that
291 SCM_BOOL_F will also have the value 0x04 instead of 0x013c. Due
292 to the reduced number of bits and the simpler bit pattern for
293 SCM_BOOL_F, certain machines may be able to use more efficient
294 processor instructions to deal with SCM_BOOL_F.
295
296 (SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA): Removed. These have
297 never been defined in a released version, thus no need to
298 deprecate them.
299
300 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Flags now use tc8
301 instead of tc9 tags.
302
303 (SCM_ISYMP, SCM_MAKISYM, SCM_ISYMNUM): Isyms now use tc8 instead
304 of tc9 tags.
305
306 (SCM_MAKSPCSYM): Removed. It is almost impossible that user code
307 could have used this definition.
308
309 (SCM_IM_AND, SCM_IM_BEGIN, SCM_IM_CASE, SCM_IM_COND, SCM_IM_DO,
310 SCM_IM_IF, SCM_IM_LAMBDA, SCM_IM_LET, SCM_IM_LETSTAR,
311 SCM_IM_LETREC, SCM_IM_OR, SCM_IM_QUOTE, SCM_IM_SET_X): Now encoded
312 as isyms, as special isyms don't exist any more.
313
314 2004-04-18 Kevin Ryde <user42@zip.com.au>
315
316 * filesys.c (scm_readdir): Use readdir_r when available, for thread
317 safety.
318
319 * numbers.c (scm_max, scm_min): For big/real, use SCM_SWAP rather than
320 explicit swapping code.
321
322 2004-04-15 Kevin Ryde <user42@zip.com.au>
323
324 * cpp_sig_symbols.in: Add SIGSYS.
325
326 * list.c (scm_append_x): Use iterative style, to avoid non-tail
327 recursion.
328
329 * numbers.c (scm_max, scm_min): For inum/frac, frac/inum, big/frac,
330 frac/big and frac/frac, use scm_less_p for exact comparison.
331
332 * numbers.c (scm_gcd): For inum/big, use mpz_gcd_ui by sharing code
333 with big/inum.
334
335 * numbers.c (xisinf): Add a comment about solaris 7 lacking isinf.
336
337 2004-04-06 Han-Wen Nienhuys <hanwen@xs4all.nl>
338
339 * inline.h (scm_cell): use SCM_GC_CELL_WORD for checking tag.
340
341 * chars.h (scm_init_chars): change scm_{upcase,downcase} to
342 scm_c_{up,down}case.
343 (SCM_MAKE_CHAR): add (unsigned char) cast. This prevents havoc
344 when hi-bit ASCII is subjected to SCM_MAKE_CHAR().
345
346 2004-04-06 Kevin Ryde <user42@zip.com.au>
347
348 * numbers.c (scm_ash): Remove stray "}" in docstring.
349
350 * numbers.c (scm_make_ratio): For inum/bignum integer detection, use
351 x==SCM_MOST_NEGATIVE_FIXNUM explicitly, for clarity and to avoid
352 calling mpz_cmp_ui in most cases.
353
354 * numbers.c (scm_quotient, scm_remainder): In inum/big, use mpz_cmp_ui
355 for big == abs(most-negative-fixnum) special case.
356 (abs_most_negative_fixnum): Remove, no longer used.
357
358 * scmsigs.c (scm_sigaction_for_thread): Correction to signum range
359 test, avoids SCM_VECTOR_REF outside bounds of signal_handlers on
360 calling (sigaction NSIG).
361
362 * simpos.c (scm_system_star): Fix execargv memory leak, merge parent
363 and fork error cases to do this.
364
365 2004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
366
367 * eval.c (CEVAL): Don't distinguish between short and long
368 instructions when dispatching - just always dispatch on the
369 instruction code, which is common for short and long instructions.
370 Further, removed unnecessary goto statements and added comment.
371
372 2004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
373
374 * eval.c (scm_unmemocopy): Don't distinguish between short and
375 long instructions when dispatching - just always dispatch on the
376 instruction code, which is common for short and long instructions.
377 Further, removed unnecessary goto statements, fixed indentation
378 and replaced SCM_IMP predicates by SCM_NULLP.
379
380 2004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
381
382 * eval.c (scm_lookupcar1, CEVAL): Use SCM_ILOCP instead of
383 comparison with SCM_ILOC00. In CEVAL, eliminate goto-label
384 'checkmacro'.
385
386 2004-03-31 Kevin Ryde <user42@zip.com.au>
387
388 * simpos.c: Include <signal.h> for SIG_IGN and friends.
389
390 2004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
391
392 Introduce scm_debug_mode_p as a replacement for scm_debug_mode and
393 SCM_DEBUGGINGP:
394
395 * debug.h (scm_debug_mode_p, scm_debug_mode, SCM_DEBUGGINGP),
396 eval.c (scm_debug_mode_p): Deprecated scm_debug_mode and
397 SCM_DEBUGGINGP. Provided scm_debug_mode_p instead, to have one
398 single interface that also matches the naming conventions.
399 Probably scm_debug_mode_p should be part of the private interface
400 anyway.
401
402 * debug.h (scm_debug_mode_p), backtrace.c (display_error_body),
403 eval.c (SCM_APPLY, scm_trampoline_0, scm_trampoline_1,
404 scm_trampoline_2): Change uses of scm_debug_mode or SCM_DEBUGGINGP
405 to scm_debug_mode_p.
406
407
408 Deprecate direct access to scm_ceval, scm_deval and scm_ceval_ptr:
409
410 * eval.h (scm_ceval, scm_deval, scm_ceval_ptr), debug.h
411 (scm_ceval_ptr): Deprecated. Moved declaration of scm_ceval_ptr
412 from debug.h to eval.h.
413
414 * debug.h (SCM_RESET_DEBUG_MODE): Don't access scm_ceval_ptr any
415 more, just leave it with setting scm_debug_mode_p, which is
416 equivalent for practical purposes.
417
418 * deprecated.h (SCM_XEVAL, SCM_XEVALCAR): Call scm_i_eval_x
419 instead of *scm_ceval_ptr. Leave all evaluating to scm_i_eval_x.
420
421 * gdbint.c (gdb_eval): Call scm_i_eval_x instead of scm_ceval.
422
423 * eval.c (ceval, deval, scm_ceval, scm_deval): Made scm_ceval
424 static and renamed it to ceval throughout. Provide a new exported
425 but deprecated function scm_ceval as a wrapper for backwards
426 compatibility. The same is done for the deval/scm_deval pair of
427 functions.
428
429 * eval.c (CEVAL, SCM_CEVAL): Renamed SCM_CEVAL to CEVAL
430 throughout. Defined CEVAL to ceval or deval, based on compilation
431 phase.
432
433 * eval.c (SCM_XEVAL, SCM_XEVALCAR): Dispatch on scm_debug_mode_p
434 to ceval and deval instead of calling *scm_ceval_ptr.
435
436 * eval.c (dispatching_eval): New deprecated static function.
437
438 * eval.c (scm_ceval_ptr): Initialized to dispatching_eval in order
439 to emulate its old behaviour as closely as possible.
440
441
442 Change the evaluator such that only expressions for which pair? is
443 true are passed to CEVAL, and such that all other expressions are
444 evaluated outside of CEVAL:
445
446 * eval.c (EVAL): New, provided in analogy to EVALCAR. Evaluate an
447 expression that is assumed to be memoized already. All but
448 expressions of the form '(<form> <form> ...)' are evaluated inline
449 without calling an evaluator.
450
451 * eval.c (SCM_XEVAL, SCM_XEVALCAR, EVALCAR): Evaluate all but
452 expressions of the form '(<form> <form> ...)' inline without
453 calling an evaluator.
454
455 * eval.c (scm_i_eval_x, scm_i_eval, scm_ceval, scm_deval): Handle
456 the special case of unmemoized symbols passed on the top level.
457
458 * eval.c (CEVAL): Change calls to CEVAL to EVAL, except where it
459 is known that the expression passed to CEVAL is of the form
460 '(<form> <form> ...)'. Remove handling of the tc7-objects, since
461 now it is known that the input expression of CEVAL is a pair.
462
463 2004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
464
465 * eval.c (is_self_quoting_p): New static function.
466
467 (scm_m_quote): Use is_self_quoting_p.
468
469 (copy_tree): Corrected typo in comment.
470
471 2004-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
472
473 * eval.c (s_scm_copy_tree): idem.
474
475 * list.c (s_scm_filter): remove "pointer" from doc string.
476
477 * gc.h (SCM_GC_CELL_TYPE): SCM_GC_CELL_TYPE uses SCM_GC_CELL_OBJECT.
478
479 * goops.h (SCM_NUMBER_OF_SLOTS): don't SCM_UNPACK the result.
480
481 * backtrace.c ("display_backtrace_body"): SCM_PACK before SCM_EQ_P
482 (display_frame): idem.
483 (display_backtrace_file_and_line): idem.
484
485 * tags.h (SCM_UNPACK): stricter typechecking on SCM_UNPACK
486 arguments.
487
488 2004-03-26 Kevin Ryde <user42@zip.com.au>
489
490 * filesys.c (scm_getcwd, scm_readlink): Avoid memory leak on errors.
491
492 * numbers.c (scm_modulo): For inum/big and big/big, remove test of
493 big==0 since that never occurs.
494
495 * numbers.c, numbers.h (scm_modulo_expt): Renamed from
496 scm_modular_expt, matching scheme level name `modulo-expt'.
497
498 * numbers.c (scm_modular_expt): Return a negative remainder for a
499 negative divisor, the same as `modulo' does.
500
501 2004-03-26 Eric Hanchrow <offby1@blarg.net>
502
503 * numbers.c, numbers.h (scm_modular_expt): New function.
504
505 2004-03-25 Kevin Ryde <user42@zip.com.au>
506
507 * numbers.c (scm_min, scm_max): Correction to big/real and real/big,
508 return inexact as required by r5rs.
509
510 2004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
511
512 * eval.c: Separated some definitions relevant for execution from
513 the memoization part of the file.
514
515 (copy_tree): New static function
516
517 (scm_copy_tree): Rewritten to fix two kinds or bugs: First, cyclic
518 structures are detected now and will lead to an exception instead
519 of forcing guile to run in an endless loop, using up all the
520 system's memory. Second, arrays in the cdr of an improper list
521 are now copied. See the new test cases in eval.test.
522
523 2004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
524
525 * posix.c (scm_gethostname): Make sure len is initialised before
526 it is used. Restructured to (hopefully) represent possible
527 configurations more clearly in the code. Added unwind handler.
528
529 2004-03-23 Kevin Ryde <user42@zip.com.au>
530
531 * posix.c (scm_gethostname): Use sysconf(_SC_HOST_NAME_MAX) and/or
532 MAXHOSTNAMELEN when available.
533
534 2004-03-21 Marius Vollmer <mvo@zagadka.de>
535
536 * read.c (skip_scsh_block_comment): Also recognize '\r' as a line
537 terminator. Rewritten the logic as a state machine, I must have
538 been doing too much VHDL lately...
539
540 * eval.c (scm_ceval, scm_deval): Explicitely evaluate ports to
541 themselves. Thanks to Han-Wen Nienhuys!
542
543 * list.c: Changed docstrings so that they no longer talk about
544 returning 'pointers' to something.
545
546 2004-03-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
547
548 * gc.c: remove set_debug_cell_accesses! when
549 SCM_DEBUG_CELL_ACCESSES is not defined. Scheme source code should
550 use (if (defined? 'set-debug-cell-accesses!) .. ) to switch on
551 debugging conditionally.
552
553 2004-03-21 Kevin Ryde <user42@zip.com.au>
554
555 * stime.c (scm_gmtime): Use gmtime_r when available, for thread safety.
556
557 2004-03-20 Kevin Ryde <user42@zip.com.au>
558
559 * posix.c (scm_gethostname): Preserve errno across free() call.
560
561 2004-03-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
562
563 * gc-card.c (sweep_card): use SCM_GC_SET_CELL_WORD for setting
564 free cells.
565
566 2004-03-14 Kevin Ryde <user42@zip.com.au>
567
568 * stime.c: Define _GNU_SOURCE for strptime prototype from glibc.
569 (strptime): Use HAVE_DECL_STRPTIME for when to give own prototype.
570
571 2004-03-07 Kevin Ryde <user42@zip.com.au>
572
573 * stime.c (scm_gmtime): Return bd_time->tm_zone when available, rather
574 than "GMT" always.
575 (filltime): Make zname parameter "const".
576
577 2004-03-03 Mikael Djurfeldt <mdj@chunk.mit.edu>
578
579 * threads.c, threads.h (scm_c_scm2thread): New function.
580
581 2004-02-29 Kevin Ryde <user42@zip.com.au>
582
583 * numbers.c (guile_ieee_init): Use C99 INFINITY and NAN when
584 available. Test HAVE_DINFINITY and HAVE_DQNAN for those globals, in
585 particular don't assume "defined (__alpha__) && ! defined (linux)"
586 means OSF. Remove "SCO" code, which was not really SCO specific and
587 which John W. Eaton advises should be long past being needed.
588
589 * posix.c (scm_execl, scm_execlp, scm_execle): Avoid memory leak under
590 error throw.
591
592 2004-02-24 Kevin Ryde <user42@zip.com.au>
593
594 * posix.c (scm_cuserid): Use a private result buffer, for thread safe.
595
596 2004-02-22 Kevin Ryde <user42@zip.com.au>
597
598 * numbers.c (scm_max, scm_min): For one arg, dispatch to generic for
599 complex, same as for two args. (Handle only inum, big, real, frac).
600
601 2004-02-21 Kevin Ryde <user42@zip.com.au>
602
603 * posix.c (scm_crypt): Use new HAVE_CRYPT.
604 (<crypt.h>): Remove HAVE_LIBCRYPT condition.
605 Reported by Andreas Voegele.
606
607 2004-02-20 Neil Jerram <neil@ossau.uklinux.net>
608
609 * list.c (scm_list_n): Add #if SCM_DEBUG_CELL_ACCESSES_P around
610 validation.
611
612 * read.c (scm_lreadparen): Removed.
613 (scm_lreadparen1): Renamed scm_i_lreadparen.
614
615 2004-02-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
616
617 * list.c (scm_list_n): validate non-immediate arguments;
618 this will catch forgotten a SCM_UNDEFINED.
619
620 2004-02-18 Marius Vollmer <mvo@zagadka.de>
621
622 * gc.h (scm_gc_cells_collected): Removed duplicated declaration.
623 Thanks to Bill Schottstaedt!
624
625 * socket.h (scm_gethost): Removed prototype it is already in
626 "net_db.h". Thanks to Bill Schottstaedt!
627
628 2004-02-18 Kevin Ryde <user42@zip.com.au>
629
630 * num2integral.i.c (INTEGRAL2BIG): WORDS_BIGENDIAN not right for word
631 order parameter to mpz_import, in fact with just one word there's no
632 order to worry about at all.
633
634 * numbers.c (scm_num_eq_p): For real==frac, complex==frac, frac==real
635 and frac==complex, make an exact comparison rather than converting
636 with fraction2double.
637
638 * posix.c, putenv.c, stime.c (environ): Use _NSGetEnviron in Darwin
639 shared library, since environ is not directly available there.
640
641 * script.c (scm_shell_usage): Print to stdout for --help, per GNU
642 standard.
643
644 * stime.c (scm_localtime, scm_gmtime, scm_mktime): Provide a default
645 errno EINVAL in case localtime and gmtime don't set it.
646 (scm_mktime, scm_strptime): Forcibly use errno EINVAL for our
647 SCM_SYSERROR, since mktime and strptime generally don't set errno.
648
649 2004-02-16 Kevin Ryde <kevin@swox.se>
650
651 * gc-malloc.c (scm_done_malloc, scm_done_free): Allow negative sizes,
652 which were permitted in the past for these.
653
654 * num2float.i.c (NUM2FLOAT): Expand isfinite to !xisinf, as per
655 previous change to numbers.c.
656
657 * script.c (scm_shell_usage): Print bug-guile email address, as per
658 GNU standard. Reported by Han-Wen Nienhuys.
659
660 2004-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
661
662 * unif.c (scm_make_uve): Removed local variable and simplified
663 code in order to avoid compiler used uninitialized warnings.
664
665 * hashtab.c, hashtab.h (scm_hash_map_to_list): Renamed from
666 scm_hash_map.
667 (scm_hash_fold): Use scm_call_3 directly in the call to
668 scm_internal_hash_fold instead of going via fold_proc (which is
669 now removed).
670 (scm_hash_for_each): Use a trampoline +
671 scm_internal_hash_for_each_handle.
672 (scm_internal_hash_for_each_handle, scm_hash_for_each_handle): New
673 functions.
674
675 2004-02-12 Kevin Ryde <user42@zip.com.au>
676
677 * ports.c (scm_port_line): In docstring, note first line is 0.
678 (scm_set_port_line_x): In docstring, note first line is 0.
679 (scm_port_column): In docstring, there's no default to current input
680 port, and remove shared port-line @defun.
681 (scm_set_port_column_x): In docstring, there's no default to current
682 input port, note first column is 0, remove shared set-port-line!
683 @defun.
684
685 * ramap.c (scm_array_fill_x): For fvect and dvect, use scm_num2dbl to
686 convert args the same way that array-set! does.
687
688 * unif.c (scm_make_uve, scm_array_p): Allow fraction 1/3 as prototype
689 for dvect.
690 (scm_array_p): Add missing "break"s in switch, fix llvect test look
691 for "l" not "s", fix dvect to be false for singp(prot) since such a
692 value is for fvect.
693 (scm_array_prototype): Return 1/3 for dvect, rather than 0.33..33.
694 (exactly_one_third): New variable.
695 (scm_init_unif): Initialize it.
696
697 2004-02-10 Neil Jerram <neil@ossau.uklinux.net>
698
699 * read.c (scm_read_opts): Change `escaped-parens' to
700 `elisp-strings'.
701
702 2004-02-08 Neil Jerram <neil@ossau.uklinux.net>
703
704 * read.c (scm_read_opts): New opts `elisp-vectors' and
705 `escaped-parens'.
706 (s_vector): New.
707 (scm_lreadr): Use scm_lreadparen1 instead of scm_lreadparen. Make
708 handling of elisp vector syntax dependent on SCM_ENABLE_ELISP and
709 `elisp-vectors' option instead of SCM_ELISP_READ_EXTENSIONS.
710 Allow "\(" and "\)" in strings when SCM_ENABLE_ELISP defined and
711 `escaped-parens' option set.
712 (scm_read_token): If elisp vector syntax active, disallow [ and ]
713 in tokens.
714 (scm_lreadparen): Rewrite as interface to scm_lreadparen1.
715 (scm_lreadparen1): New.
716
717 * read.h: Remove conditionally compiled last arg to
718 scm_lreadparen.
719 (SCM_ELISP_VECTORS_P, SCM_ESCAPED_PARENS_P): New.
720
721 2004-01-23 Han-Wen Nienhuys <hanwen@xs4all.nl>
722
723 * eval.c (m_expand_body): remove stray variable new_body.
724
725 2004-01-22 Marius Vollmer <mvo@zagadka.de>
726
727 * eval.c (m_expand_body): Rewrite the expression in place (by
728 overwriting FORMS) also when a letrec is constructed, not only
729 when no definitions are found. Do not return rewritten expression
730 to emphasize the in-place rewriting. Changed all users.
731
732 2004-01-19 Han-Wen Nienhuys <hanwen@xs4all.nl>
733
734 * gc.c: add protected_object_count, a number that is dumped from
735 gc_stats()
736
737 2004-01-11 Marius Vollmer <mvo@zagadka.de>
738
739 * dynwind.h, dynwind.c (scm_frame_unwind,
740 scm_frame_unwind_handler): Renamed and changed all uses.
741 (scm_frame_rewind, scm_frame_rewind_handler): Likewise.
742
743 2004-01-11 Kevin Ryde <user42@zip.com.au>
744
745 * unif.c (scm_bit_count, scm_bit_position, s_scm_bit_set_star_x,
746 s_scm_bit_count_star, s_scm_bit_invert_x): Clarify docstrings, as per
747 changes made to scheme-compound.texi.
748
749 2004-01-10 Marius Vollmer <mvo@zagadka.de>
750
751 * print.c (scm_print_symbol_name): Handle #{`foo}#, #{,foo}#,
752 #{.}#, and all numeric strings specially. Thanks to Paul Jarc!
753
754 * guile-snarf.in: Use mkdir to create a unique temporary directory
755 that we can safely use. Thanks to Stefan Nordhausen!
756
757 2004-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
758
759 * dynwind.h, dynwind.c (scm_i_dowinds): Removed 'explicit'
760 argument since it is always zero now. Changed all callers.
761 Removed code for handling fluids.
762
763 * fluids.c (scm_c_with_fluids): Use frames instead of adding to
764 the wind chain explicitely. Use scm_c_with_fluid for the common
765 case of only one fluid.
766 (scm_with_fluid): New.
767 (scm_c_with_fluid): Use frames instead of scm_c_with_fluids.
768
769 * fluids.h, fluids.c (scm_frame_fluid): New.
770 (scm_with_fluid): New.
771 (scm_i_swap_fluids, scm_i_swap_fluids_reverse): Removed.
772
773 * dynwind.c (scm_frame_end): Do not use scm_i_dowinds. Instead,
774 do the unwinding directly. It is simple enough.
775
776 * dynwind.h, dynwind.c: Did the following renamings:
777 scm_begin_frame -> scm_frame_begin,
778 scm_end_frame -> scm_frame_end,
779 scm_on_unwind -> scm_frame_unwind,
780 scm_on_rewind -> scm_frame_rewind,
781 scm_on_unwind_with_scm -> scm_frame_unwind_with_scm,
782 scm_on_rewind_with_scm -> scm_frame_rewind_with_scm.
783 Changed all uses.
784
785 * aync.h, async.c: Did the follwing renamings:
786 scm_with_blocked_asyncs -> scm_frame_block_asyncs,
787 scm_with_unblocked_asyncs -> scm_frame_unblock_asyncs.
788 Changed all uses.
789
790 * ports.h, ports.c: Did the follwing renamings:
791 scm_with_current_input_port -> scm_frame_current_input_port,
792 scm_with_current_output_port -> scm_frame_current_output_port,
793 scm_with_current_error_port -> scm_frame_current_error_port.
794 Changed all uses.
795
796 2004-01-07 Kevin Ryde <user42@zip.com.au>
797
798 * numbers.c (s_bignum): Remove, not used since gmp bignums.
799 Reported by Richard Todd.
800
801 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 12*sizeof(long),
802 for the benefit of powerpc-apple-darwin5.5. Reported by Richard Todd.
803
804 * unif.c (scm_aind): Test SCM_CONSP rather than !SCM_NULLP while
805 traversing the args list, fixes segv if an improper list is given.
806 Reported by Rouben Rostamian.
807
808 2004-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
809
810 * ports.c (swap_ports, scm_with_current_foo_port): Do not allocate
811 swap_data on stack, use a 'malloc obj'.
812
813 * fluids.h, fluids.c (scm_make_initial_fluids, scm_copy_fluids,
814 scm_swap_fluids, scm_swap_fluids_reverse): Renamed to
815 scm_i_... since they are internal. Changed all uses.
816
817 * dynwind.c (frame_print): Removed, use the default printer.
818 (WINDER_F_MARK, WINDER_MARK_P, winder_mark): New.
819 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New. Use above
820 to protect SCM values.
821
822 * dynwind.h (SCM_F_WIND_EXPLICITELY,
823 SCM_F_WIND_EXPLICITLY): It's "explicitly" not "explicitely", damn.
824 Changed all uses.
825 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New.
826
827 2004-01-05 Marius Vollmer <mvo@zagadka.de>
828
829 * ports.h, ports.c (scm_with_current_input_port,
830 scm_with_current_output_port, scm_with_current_error_port): New.
831
832 * async.h, async.c (scm_with_blocked_asyncs,
833 scm_with_unblocked_asyncs): New.
834
835 2004-01-03 Marius Vollmer <mvo@zagadka.de>
836
837 * dynwind.h, scm_dynwind.c (scm_t_frame_flags, scm_t_wind_flags,
838 scm_begin_frame, scm_end_frame, scm_on_unwind, scm_on_rewind):
839 New.
840 (scm_dowinds, scm_i_dowinds): scm_dowinds has been renamed to
841 scm_i_dowinds and extended to handle frames and to invoke a 'turn'
842 function when the outermost wind point has been reached. The
843 latter is used to copy a continuation stack at the right time.
844 scm_dowinds remains available.
845 (SCM_GUARDSP, SCM_BEFORE_GUARD, SCM_AFTER_GUARD, SCM_GUARD_DATA,
846 tc16_guard, guards_print): Removed.
847 (scm_internal_dynamic_wind): Reimplemented using frames.
848
849 * continuations.c (copy_stack): New, do only the stack copying
850 part of copy_stack_and_call.
851 (copy_stack_and_call): Copy the stack after unwinding and before
852 rewinding.
853 (scm_dynthrow): Do not call scm_dowinds, this is now done by
854 copy_stack_and_call.
855
856 2004-01-04 Kevin Ryde <user42@zip.com.au>
857
858 * numbers.c (scm_less_p): Don't convert frac to float for compares,
859 can give bad results due to rounding.
860
861 * stime.c (scm_current_time, scm_gettimeofday): Add a comment about
862 setzone/restorezone protection for DOS.
863
864 2003-12-26 Marius Vollmer <mvo@zagadka.de>
865
866 * gen-scmconfig.h.in, gen-scmconfig.c: Arrange for scm_t_intmax
867 and scm_t_uintmax to be defined in scmconfig.h
868
869 2003-12-03 Kevin Ryde <user42@zip.com.au>
870
871 * numbers.c (scm_less_p): Remove spurious xisnan from frac+big case.
872
873 * numbers.c (scm_make_ratio): Check for numerator equal to
874 SCM_MOST_NEGATIVE_FIXNUM and bignum denominator the negative of that,
875 giving integer -1.
876
877 * numbers.c (scm_real_part): Return fraction unchanged rather than
878 converting to flonum.
879
880 2003-11-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
881
882 * modules.c (module_variable): Fixed (and thus simplified) the
883 definition of SCM_BOUND_THING_P to reflect the fact that since
884 after the 1.4 series of guile, obarrays only hold variable
885 objects.
886
887 2003-11-30 Marius Vollmer <mvo@zagadka.de>
888
889 * numbers.c (scm_logand): It's "#b...", not "#\b...".
890
891 From Paul Jarc:
892
893 * read.c (scm_lreadr): Signal an error for invalid escape
894 sequences in strings. Code cleanups too.
895
896 * print.c (scm_iprin1): use \xNN hexadecimal sequences when
897 writing control characters in strings.
898
899 2003-11-21 Marius Vollmer <mvo@zagadka.de>
900
901 * ports.c (scm_drain_input): Bug fix: only access the port after
902 checking that it indeed is one.
903
904 2003-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
905
906 * eval.c (s_bad_define): New static identifier.
907
908 (m_body): Fixed comment.
909
910 (scm_m_define): Don't generate memoized code for definitions that
911 are not on the top level. As a consequence, no memoized code at
912 all is generated for definitions any more: Top level definitions
913 are executed immediately during memoization and internal
914 definitions are handled separately in m_expand_body.
915
916 (scm_unmemocopy, unmemocopy): Removed code for unmemoizing
917 definitions. Consequently, there is no unmemoizing code any more
918 that might modify the environment. Thus, the old scm_unmemocopy
919 is removed and the old unmemocopy is renamed to scm_unmemocopy.
920
921 (SCM_CEVAL): The SCM_IM_DEFINE keyword can no longer occur in
922 memoized code. Call EVALCAR for continuations. Prefer !SCM_NULLP
923 over SCM_NIMP in places, where the argument is known to be part of
924 a proper list.
925
926 2003-11-21 Kevin Ryde <user42@zip.com.au>
927
928 * numbers.c (scm_abs): Allocate a new real only for negatives, as done
929 for bignums.
930
931 * numbers.c (scm_bit_extract): Use mpz functions, rearrange inum case
932 to share some shifting.
933
934 * numbers.c (scm_integer_expt): Don't mpz_init after scm_i_clonebig or
935 scm_i_mkbig, since they do so already. Don't mpz_clear a bignum SCM,
936 since gc does this.
937
938 2003-11-19 Marius Vollmer <mvo@zagadka.de>
939
940 * numbers.c (scm_make_ratio): Rewritten to have a simpler
941 structure. Previously, not all cases with a negative denominator
942 were covered.
943
944 * numbers.c (mem2decimal_from_point): use scm_divide instead of
945 scm_divide2real when forming the fractional part. This allows
946 "#e1.2" to yield 6/5.
947
948 * numbers.c (scm_i_fraction_equalp): Do not treat the return value
949 of scm_equal_p as a C boolean, use SCM_FALSEP. Previously, all
950 fractions were equal to each other regardless of value. Ooops.
951
952 * numbers.c (scm_rationalize): Return an inexact result when given
953 inexact arguments.
954
955 * numbers.c (scm_exact_p, scm_inexact_p): Throw error for
956 non-numbers.
957
958 2003-11-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
959
960 Support for exact fractions from Bill Schottstaedt! Thanks!
961
962 * print.c (scm_iprin1): Handle fractions.
963
964 * objects.h (scm_class_fraction): New.
965 * objects.c (scm_class_fraction): New.
966 (scm_class_of): Handle fractions.
967
968 * hash.c (scm_hasher): Handle fractions.
969
970 * numbers.c: New code for handling fraction all over the place.
971 (scm_odd_p, scm_even_p): Handle inexact integers.
972 (scm_rational_p): New function, same as scm_real_p.
973 (scm_round_number, scm_truncate_number, scm_ceiling, scm_floor):
974 New exact functions that replace the inexact 'dsubr'
975 implementations.
976 (scm_numerator, scm_denominator): New.
977
978 * numbers.h (SCM_NUMP): Recognize fractions.
979 (SCM_FRACTIONP, SCM_SLOPPY_FRACTIONP, SCM_FRACTION_NUMERATOR,
980 SCM_FRACTION_DENOMINATOR, SCM_FRACTION_SET_NUMERATOR,
981 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
982 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
983 SCM_FRACTION_REDUCED): New.
984 (scm_floor, scm_ceiling, scm_truncate_number, scm_round_number):
985 New prototypes.
986 (scm_make_ratio, scm_rationalize, scm_numerator, scm_denominator,
987 scm_rational_p): New prototypes.
988 (scm_i_dbl2num, scm_i_fraction2double, scm_i_fraction_equalp,
989 scm_i_print_fraction): New prototypes.
990
991 * goops.c (create_standard_classes): Create "<fraction>" class.
992
993 * gc-mark.c (scm_gc_mark_dependencies): Handle fractions.
994
995 * gc-card.c (scm_i_sweep_card): Include scm_tc16_fraction as a
996 case in the switch, but do nothing for now.
997
998 * eval.c (SCM_CEVAL, SCM_APPLY, call_dsubr_1): Convert fractions
999 to doubles when calling 'dsubr' functions.
1000
1001 * eq.c (scm_eqv_p, scm_equal_p): Handle fractions.
1002
1003 2003-11-18 Rob Browning <rlb@defaultvalue.org>
1004
1005 * gen-scmconfig.c (main): remove public definition of
1006 SCM_SIZEOF___INT64 and SCM_SIZEOF_UNSIGNED___INT64 and add
1007 direct typedef of long_long and ulong_long inside deprecated block
1008 when appropriate.
1009
1010 * deprecated.h: move long_long and ulong_long definitions to
1011 gen-scmconfig.c so that we don't need to add SCM_SIZEOF___INT64
1012 and SCM_SIZEOF_UNSIGNED___INT64 to the public namespace.
1013
1014 2003-11-17 Marius Vollmer <mvo@zagadka.de>
1015
1016 * hash.c (scm_string_hash): New hashing algorithm that takes the
1017 complete string into account.
1018
1019 * eval.c (scm_m_generalized_set_x): Macroexpand the target when it
1020 is a list. This allows (@ ...) to work with set!.
1021 (scm_m_generalized_set_x): Use ASSERT_SYNTAX_2 instead of
1022 SCM_ASSYNT.
1023
1024 * script.c (scm_compile_shell_switches): Use scm_c_read_string for
1025 the "-e" option instead of scm_str2symbol. This allows things
1026 like (@ ...) to be specified for the entry point.
1027
1028 2003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
1029
1030 * eval.c (scm_m_letstar): Create memoized code in place to
1031 minimize consing.
1032
1033 2003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
1034
1035 * eval.c (s_splicing): Commented and reformulated.
1036
1037 (lookup_global_symbol, lookup_symbol): New static functions.
1038
1039 (s_test, s_bindings, s_duplicate_bindings, s_variable): Removed.
1040
1041 (try_macro_lookup, literal_p): Use lookup_symbol instead of
1042 creating a temporary pair for scm_lookupcar.
1043
1044 (scm_unmemocar, unmemocar): Renamed scm_unmemocar to unmemocar,
1045 created deprecated wrapper function scm_unmemocar.
1046
1047 (SCM_VALIDATE_NON_EMPTY_COMBINATION, scm_sym_else,
1048 scm_sym_unquote, scm_sym_uq_splicing, scm_sym_enter_frame,
1049 scm_sym_apply_frame, scm_sym_exit_frame, scm_sym_trace, f_apply,
1050 undefineds, sym_three_question_marks): Moved around without
1051 modifications.
1052
1053 * eval.c, eval.h (scm_macroexp, scm_unmemocar): Deprecated.
1054
1055 2003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
1056
1057 * eval.c (try_macro_lookup, expand_user_macros, is_system_macro_p,
1058 m_expand_body, scm_m_expand_body): Grouped together with m_body.
1059 No further modifications.
1060
1061 2003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
1062
1063 * eval.c (s_mixed_body_forms): New static identifier.
1064
1065 (canonicalize_define, scm_m_define): The check for a bad
1066 expression is performed in canonicalize_define now.
1067
1068 (try_macro_lookup, expand_user_macros, is_system_macro_p): New
1069 static helper functions for m_expand_body.
1070
1071 (m_expand_body): Use ASSERT_SYNTAX to signal syntax errors. Only
1072 expand user defined macros. Fixed handling of the definition/
1073 expression boundary. Fixed handling of definitions grouped with
1074 'begin. Use canonicalize_define to expand definitions.
1075
1076 2003-11-13 Marius Vollmer <mvo@zagadka.de>
1077
1078 * read.c (scm_lreadr): detect EOF after backslash, and interpret
1079 \xNN hexadecimal sequences. From Paul Jarc, thanks!
1080
1081 * snarf.h (SCM_SMOB, SCM_GLOBAL_SMOB, SCM_SMOB_MARK,
1082 SCM_GLOBAL_SMOB_MARK, SCM_SMOB_FREE, SCM_GLOBAL_SMOB_FREE,
1083 SCM_SMOB_PRINT, SCM_GLOBAL_SMOB_PRINT, SCM_SMOB_EQUALP,
1084 SCM_GLOBAL_SMOB_EQUALP, SCM_SMOB_APPLY, SCM_GLOBAL_SMOB_APPLY):
1085 New macros from Paul Jarc. Thanks!
1086
1087 * gc_os_dep.c (scm_get_stack_base): Provide a definition that
1088 return NULL when the machine type is unknown. Previously,
1089 gc_os_dep.c would refuse to compile.
1090
1091 2003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
1092
1093 * eval.c (scm_m_body, m_body, scm_m_lambda, memoize_named_let,
1094 scm_m_let, scm_m_letrec, m_expand_body): Renamed static function
1095 scm_m_body to m_body.
1096
1097 2003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
1098
1099 * eval.c, eval.h (scm_m_expand_body, m_expand_body): Deprecated
1100 public use of scm_m_expand_body in eval.h. In eval.c, renamed
1101 scm_m_expand_body to m_expand_body and made it static. Added
1102 deprecated wrapper scm_m_expand_body.
1103
1104 (scm_eval_body, SCM_CEVAL, SCM_APPLY): Use m_expand_body instead
1105 of scm_m_expand_body.
1106
1107 2003-11-09 Kevin Ryde <user42@zip.com.au>
1108
1109 * dynl.c (scm_dynamic_unlink): Need scm_list_1 on error message
1110 argument. Reported by Mike Gran.
1111
1112 2003-11-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
1113
1114 * eval.c (s_missing_body_expression): New static identifier.
1115
1116 (s_body): Removed.
1117
1118 (scm_m_expand_body): Fixed core dump when passing a body with
1119 defines, but without expressions (see additions to syntax.test).
1120 Use ASSERT_SYNTAX to signal syntax errors.
1121
1122 2003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
1123
1124 * eval.c (canonicalize_define): New static helper function.
1125
1126 (memoize_define, canonicalize_define): Extract handling of
1127 function currying to canonicalize_define.
1128
1129 2003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
1130
1131 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
1132 Make sure that error checking in debug mode is not worse than in
1133 standard mode.
1134
1135 2003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
1136
1137 * eval.c (scm_m_body, scm_m_lambda): Documentation strings are not
1138 handled in scm_m_body any more, but rather in scm_m_lambda.
1139
1140 (scm_m_body, memoize_named_let, scm_m_let, scm_m_letstar,
1141 scm_m_letrec, scm_m_expand_body): Check for validity is done by
1142 calling functions of scm_m_body.
1143
1144 (scm_m_lambda): Avoid unnecessary consing when creating the
1145 memoized code.
1146
1147 2003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
1148
1149 * eval.c (s_expression): Added comment.
1150
1151 (s_empty_combination, error_unbound_variable): New static
1152 identifiers.
1153
1154 (SCM_VALIDATE_NON_EMPTY_COMBINATION, SCM_EVALIM2, scm_lookupcar1):
1155 Use ASSERT_SYNTAX, syntax_error or error_unbound_variable to
1156 signal syntax errors.
1157
1158 (SCM_CEVAL): Separated handling of evaluator bytecodes and other
1159 scheme objects.
1160
1161 2003-10-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
1162
1163 * eval.c (unmemocar, sym_three_question_marks, scm_unmemocar):
1164 Grouped together with unmemocopy, without modifications.
1165
1166 (build_binding_list, unmemocopy): Renamed names of list arguments
1167 and variables to reflect the actual order of the list elements.
1168
1169 2003-10-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
1170
1171 * eval.c (s_defun): New static identifier.
1172
1173 (scm_m_nil_cond, scm_m_atfop, scm_m_undefine): Add comments. Use
1174 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
1175 when creating the memoized code.
1176
1177 2003-10-19 Kevin Ryde <user42@zip.com.au>
1178
1179 * numbers.c (scm_ash): Revise docstring as per recent update to manual.
1180
1181 * numbers.c (scm_i_big2dbl): Rewrite, carefully rounding to "closest"
1182 in accordance with R5RS, which just mpz_get_d doesn't really give.
1183
1184 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
1185
1186 * eval.c (s_bad_slot_number): New static identifier.
1187
1188 (scm_m_atslot_ref, scm_m_atslot_set_x): Use ASSERT_SYNTAX to
1189 signal syntax errors. Avoid unnecessary consing when creating the
1190 memoized code.
1191
1192 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
1193
1194 * eval.c (scm_m_cont, scm_m_at_call_with_values,
1195 scm_m_generalized_set_x): Use ASSERT_SYNTAX to signal syntax
1196 errors. Avoid unnecessary consing when creating the memoized
1197 code.
1198
1199 (scm_m_generalized_set_x): Let scm_m_set_x handle the R5RS
1200 standard case. Make sure line and file information are copied to
1201 every created expression.
1202
1203 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
1204
1205 * eval.c (scm_m_set_x, scm_m_apply, scm_m_atbind): Use
1206 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
1207 when creating the memoized code.
1208
1209 (scm_m_atbind): Reversed the order, in which the init expressions
1210 are stored and executed. The order of execution is now equal to
1211 the order in which the initializers of the let-forms are executed.
1212 Use check_bindings and transform_bindings.
1213
1214 (SCM_CEVAL): Eliminated SCM_NIMP in favor of more appropriate
1215 !SCM_NULLP. Added some comments.
1216
1217 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
1218
1219 * eval.c: Sorted include files alphabetically.
1220
1221 (scm_m_begin): Added comment.
1222
1223 (scm_m_or): Use ASSERT_SYNTAX to signal syntax errors. Avoid
1224 unnecessary consing when creating the memoized code.
1225
1226 (iqq, scm_m_quasiquote, scm_m_quote): Use ASSERT_SYNTAX to signal
1227 syntax errors. Be more specific about the kind of error that was
1228 detected.
1229
1230 (scm_m_quote, unmemocopy): As an optimization, vector constants
1231 are now inserted unquoted into the memoized code. During
1232 unmemoization the quotes are added again to provide syntactically
1233 correct code.
1234
1235 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
1236
1237 * eval.c (scm_m_let, scm_m_letstar, scm_m_letrec,
1238 scm_m_expand_body, check_bindings): Extracted syntax checking of
1239 bindings to new static function check_bindings.
1240
1241 (scm_m_let, memoize_named_let): Extracted handling of named let to
1242 new static function memoize_named_let.
1243
1244 (transform_bindings, scm_m_let, scm_m_letstar, scm_m_letrec): Use
1245 ASSERT_SYNTAX to signal syntax errors. Be more specific about the
1246 kind of error that was detected. Avoid use of SCM_CDRLOC. Avoid
1247 unnecessary consing when creating the memoized code.
1248
1249 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
1250
1251 * eval.c (s_bad_formals, s_bad_formal, s_duplicate_formal): New
1252 static identifiers.
1253
1254 (s_clauses, s_formals, s_duplicate_formals): Removed.
1255
1256 (scm_m_lambda): Use ASSERT_SYNTAX to signal syntax errors. Be more
1257 specific about the kind of error that was detected. Prepare for
1258 easier integration of changes for separated memoization.
1259
1260 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
1261
1262 * eval.c (s_duplicate_binding): New static identifier.
1263
1264 (scm_m_case): Call scm_c_memq instead of implementing it inline.
1265
1266 (scm_m_define): Added comment about how we check for duplicate
1267 formals.
1268
1269 (scm_m_do): Added check for duplicate bindings.
1270
1271 (scm_m_if): Use ASSERT_SYNTAX to signal syntax errors. Avoid
1272 unnecessary consing when creating the memoized code.
1273
1274 (scm_c_improper_memq, c_improper_memq, scm_m_lambda): Renamed
1275 scm_c_improper_memq to c_improper_memq, since it is not exported.
1276
1277 (transform_bindings): Call scm_c_memq rather than
1278 scm_c_improper_memq.
1279
1280 (SCM_CEVAL): Simplified handling of SCM_IM_IF forms.
1281
1282 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
1283
1284 * eval.c (s_bad_bindings, s_bad_binding, s_bad_exit_clause): New
1285 static identifiers.
1286
1287 (scm_m_do): Use ASSERT_SYNTAX to signal syntax errors. Be more
1288 specific about the kind of error that was detected. Avoid use of
1289 SCM_CDRLOC. Avoid unnecessary consing when creating the memoized
1290 code, this way also making sure that file name, line number
1291 information etc. remain available.
1292
1293 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
1294
1295 * eval.c (memoize_as_thunk_prototype): New static function.
1296
1297 (scm_m_delay, scm_m_future): Use memoize_as_thunk_prototype.
1298 Avoid unnecessary consing when creating the memoized code.
1299
1300 2003-10-12 Kevin Ryde <user42@zip.com.au>
1301
1302 * list.c (scm_append): Track argument number and use in error.
1303
1304 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
1305
1306 * eval.c (s_missing_expression, s_bad_variable): New static
1307 identifiers.
1308
1309 (scm_m_define): Use ASSERT_SYNTAX to signal syntax errors. Prefer
1310 R5RS terminology for the naming of variables. Be more specific
1311 about the kind of error that was detected. Make sure file name,
1312 line number etc. are added to all freshly created expressions.
1313 Avoid unnecessary consing when creating the memoized code.
1314
1315 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
1316
1317 * eval.c (s_extra_expression, s_misplaced_else_clause,
1318 s_bad_cond_clause, s_missing_recipient): New static identifiers.
1319
1320 (s_extra_case_clause): Removed.
1321
1322 (scm_m_case, scm_m_cond): If a clause appears after an else
1323 clause, report a misplaced else clause.
1324
1325 (scm_m_cond): Use ASSERT_SYNTAX to signal syntax errors. Be more
1326 specific about the kind of error that was detected. Handle bound
1327 'else and '=>. Avoid unnecessary consing when creating the
1328 memoized code.
1329
1330 (scm_m_cond, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
1331 the syntactic keyword 'else and SCM_IM_ARROW to memoize the
1332 syntactic keyword '=>.
1333
1334 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
1335
1336 * eval.c (scm_m_case): Allow empty lists of case labels.
1337
1338 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
1339
1340 * tags.h (SCM_IM_ELSE, SCM_IM_ARROW): New memoizer codes.
1341
1342 * print.c (scm_isymnames): Add names for the new memoizer codes.
1343
1344 * eval.c (s_missing_clauses, s_bad_case_clause,
1345 s_extra_case_clause, s_bad_case_labels, s_duplicate_case_label,
1346 literal_p): New static identifiers.
1347
1348 (scm_m_case): Use ASSERT_SYNTAX to signal syntax errors. Be more
1349 specific about the kind of error that was detected. Check for
1350 duplicate case labels. Handle bound 'else. Avoid unnecessary
1351 consing when creating the memoized code.
1352
1353 (scm_m_case, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
1354 the syntactic keyword 'else.
1355
1356 2003-10-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
1357
1358 * eval.c (s_bad_expression, syntax_error_key, syntax_error,
1359 ASSERT_SYNTAX, ASSERT_SYNTAX_2): New static identifiers.
1360
1361 (scm_m_and): Use ASSERT_SYNTAX to signal syntax errors. Avoid
1362 unnecessary consing when creating the memoized code.
1363
1364 2003-10-09 Kevin Ryde <user42@zip.com.au>
1365
1366 * numbers.c (scm_inexact_to_exact): Don't depend on what double->long
1367 cast gives for values bigger than a long, or for nan or inf.
1368
1369 2003-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
1370
1371 * smob.h (scm_make_smob_type): Made the declaration match the
1372 definition.
1373
1374 2003-10-07 Marius Vollmer <mvo@zagadka.de>
1375
1376 * goops.c, objects.h, smob.c, smob.h: Make type names char
1377 const * instead of char *. Thanks to Paul Jarc!
1378
1379 2003-10-02 Kevin Ryde <user42@zip.com.au>
1380
1381 * strports.c (scm_call_with_output_string): scm_get_output_string
1382 rather than scm_strport_to_string, so as to guard against the port
1383 having been closed by the called procedure. Reported by Nic Ferrier.
1384
1385 2003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
1386
1387 * numbers.h (SCM_INEXACTP): Removed uses of SCM_TYP16S.
1388
1389 * tags.h, deprecated.h (SCM_TYP16S): Deprecated and moved from
1390 tags.h to deprecated.h.
1391
1392 2003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
1393
1394 This set of patches introduces a new tc7 code scm_tc7_number for
1395 numbers. Bignums, reals and complex numbers are turned from smobs
1396 into subtypes of scm_tc7_number.
1397
1398 * tags.h (scm_tc7_number): New.
1399
1400 * eq.c (scm_equal_p), eval.c (SCM_CEVAL), evalext.c
1401 (scm_self_evaluating_p), gc-card.c (scm_i_sweep_card), gc-mark.c
1402 (scm_gc_mark_dependencies), goops.c (create_smob_classes), hash.c
1403 (scm_hasher), numbers.c, numbers.h (SCM_NUMP), objects.c
1404 (scm_class_of), print.c (scm_iprin1), smob.c
1405 (scm_smob_prehistory): Don't handle bignums, reals and complex
1406 numbers as subtypes of scm_tc7_smob any more.
1407
1408 * numbers.h, tags.h (scm_tc16_big, scm_tc16_real,
1409 scm_tc16_complex): Moved definitions from tags.h to numbers.h.
1410
1411 2003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
1412
1413 * numbers.c (scm_make_complex), gc-card.c (scm_i_sweep_card): Use
1414 sizeof (scm_t_complex) to determine the memory size of the
1415 malloc'd area for complex numbers.
1416
1417 2003-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
1418
1419 * numbers.c (scm_bigequal): Fixed.
1420
1421 2003-09-16 Marius Vollmer <mvo@zagadka.de>
1422
1423 * stime.c (scm_current_time): 'time' does not set errno so don't
1424 use SCM_SYSERROR for reporting errors.
1425
1426 2003-09-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
1427
1428 This set of patches eliminates the dependency between the
1429 implementation of evaluator specific memoization codes and special
1430 constants like #f, '() etc. ('flags'), which are not evaluator
1431 specific. The goal is to remove definitions of evaluator
1432 memoization codes completely from the public interface. This will
1433 make it possible to experiment more freely with optimizations of
1434 guile's internal representation of memoized code.
1435
1436 * objects.c (scm_class_of): Eliminate dependency on SCM_ISYMNUM.
1437
1438 * print.c (iflagnames): New array, holding the printed names of
1439 guile's special constants ('flags').
1440
1441 (scm_isymnames): Now holds only the printed names of the
1442 memoization codes.
1443
1444 (scm_iprin1): Separate the handling of memoization codes and
1445 guile's special constants.
1446
1447 * tags.h (scm_tc9_flag, SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA,
1448 SCM_IFLAGNUM): new
1449
1450 (scm_tc8_char, scm_tc8_iloc, SCM_BOOL_F, SCM_BOOL_T,
1451 SCM_UNDEFINED, SCM_EOF_VAL, SCM_EOL, SCM_UNSPECIFIED, SCM_UNBOUND,
1452 SCM_ELISP_NIL, SCM_IM_DISPATCH, SCM_IM_SLOT_REF,
1453 SCM_IM_SLOT_SET_X, SCM_IM_DELAY, SCM_IM_FUTURE,
1454 SCM_IM_CALL_WITH_VALUES, SCM_IM_NIL_COND, SCM_IM_BIND): Changed
1455 values.
1456
1457 (SCM_IFLAGP): SCM_IFLAGP now only tests for flags.
1458
1459 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Generalized to use the
1460 tc9 macros and scm_tc9_flag.
1461
1462 2003-09-15 Marius Vollmer <mvo@zagadka.de>
1463
1464 * posix.c (scm_setgroups): Check that the gid list is not too
1465 long. Thanks to Paul Jarc!
1466
1467 2003-09-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
1468
1469 * tags.h: Reduced the number of short instructions from 14 to 13.
1470 The typecode of the former 14th short instruction is now used to
1471 represent long instructions. Changed some comments to reflect
1472 this fact.
1473
1474 (SCM_MAKISYM): ISYMs get a new tc7 code, namely the one that was
1475 previously used by SCM_IM_DEFINE.
1476
1477 (SCM_IM_DEFINE): Turned into a long instruction.
1478
1479 * eval.c (unmemocopy, SCM_CEVAL): Treat SCM_IM_DEFINE as a long
1480 instruction.
1481
1482 * eval.c (SCM_CEVAL): Since characters and iflags have now a tc7
1483 code that is separate from all instructions, one level of dispatch
1484 for long instructions can be eliminated.
1485
1486 * print.c (scm_isymnames): Removed some commented code.
1487
1488 2003-09-12 Marius Vollmer <mvo@zagadka.de>
1489
1490 * __scm.h (SCM_FENCE): Use __memory_barrier with the Intel
1491 compiler on IA64.
1492
1493 * hashtab.h (scm_tc16_hashtable): Added "extern" declaration.
1494
1495 * modules.c (scm_module_reverse_lookup): Check that the obarray
1496 really is a hashtable and do nothing if not.
1497
1498 * inline.h: Use "extern inline" only with GCC. Use "static
1499 inline" else.
1500
1501 2003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
1502
1503 * numbers.h (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Removed uses
1504 of SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
1505
1506 * numbers.h, deprecated.h (SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP,
1507 SCM_SLOPPY_COMPLEXP): Deprecated and moved from numbers.h to
1508 deprecated.h.
1509
1510 2003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
1511
1512 * eq.c (scm_eqv_p, scm_equal_p): Removed uses of
1513 SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
1514
1515 * eq.c (scm_eqv_p, scm_equal_p): Reordered comparisons from
1516 0.0==some_expression to some_expression==0.0. The latter is
1517 better readable. The former is preferred by some people, since it
1518 leads to a compiler error when confusing == with =. However, when
1519 using gcc, a warning will be issued if in an if-statement an
1520 assigment appears. Since many Guile developers are using gcc,
1521 such errors will not remain unnoticed anyway. We can therefore
1522 focus on better readability.
1523
1524 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
1525
1526 * tags.h: Added description of Guile's type system. Removed some
1527 old and misleading comments.
1528
1529 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
1530
1531 * unit.c (scm_cvref): Eliminate unnecessary uses of SCM_NIMP,
1532 SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
1533
1534 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
1535
1536 * numbers.h (SCM_MAKINUM): Define in terms of scm_tc2_int.
1537
1538 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Define in terms of the
1539 respective SLOPPY macro.
1540
1541 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
1542
1543 * eq.c (scm_equal_p): Use SCM_TYP7 to check if an object is of
1544 type string, not SCM_TYP7S.
1545
1546 2003-09-03 Kevin Ryde <user42@zip.com.au>
1547
1548 * numbers.c (scm_lognot): Correction to docstring, ones-complement not
1549 2s-complement.
1550
1551 * stime.c (scm_strptime): Add comment about glibc strptime %s and
1552 current timezone requiring SCM_DEFER_INTS.
1553
1554 2003-08-30 Neil Jerram <neil@ossau.uklinux.net>
1555
1556 * script.c (scm_compile_shell_switches): Make -s switch optional
1557 if file to be loaded does not begin with a `-'. (Thanks to Aaron
1558 VanDevender for the patch!)
1559
1560 2003-08-30 Kevin Ryde <user42@zip.com.au>
1561
1562 * numbers.c (scm_lognot): Rewrite using ~ and mpz_com, for directness
1563 and to have non-integer types rejected as per other logical funcs.
1564
1565 2003-08-28 Kevin Ryde <user42@zip.com.au>
1566
1567 * gc.h (scm_remember_upto_here_1): Revise comments on the asm form.
1568
1569 2003-08-23 Kevin Ryde <user42@zip.com.au>
1570
1571 * simpos.c (scm_system): Remove SCM_DEFER_INTS, system() should be
1572 thread safe, and could take a long time too.
1573
1574 2003-08-22 Kevin Ryde <user42@zip.com.au>
1575
1576 * numbers.c (scm_difference): Correction to bignum - negative inum.
1577
1578 2003-08-14 Kevin Ryde <user42@zip.com.au>
1579
1580 * gc.h (scm_remember_upto_here_1, scm_remember_upto_here_2)
1581 [__GNUC__]: Use volatile asm macros rather than a function call.
1582 * gc.c (scm_remember_upto_here_1, scm_remember_upto_here_2): Undefine
1583 macros while defining functions.
1584
1585 * simpos.c (getenv): Use <stdlib.h> for prototype.
1586 (scm_system): In docstring, refer to status:exit-val rather than
1587 "functions above".
1588
1589 2003-08-09 Kevin Ryde <user42@zip.com.au>
1590
1591 * srcprop.c (scm_source_properties): Return plist from hash if it's a
1592 list set by source-properties! rather than an SRCPROPS object,
1593
1594 2003-07-29 Kevin Ryde <user42@zip.com.au>
1595
1596 * properties.c (scm_primitive_property_ref): In docstring, note
1597 parameters to not-found-proc, use hyphens rather than underscores for
1598 that parameter name.
1599 (scm_primitive_property_set_x): In docstring, VAL is the value
1600 parameter not CODE.
1601
1602 2003-07-27 Marius Vollmer <mvo@zagadka.de>
1603
1604 * print.c (scm_print_symbol_name): handle more weird characters by
1605 escaping the symbol name properly. Thanks to Paul Jarc!
1606
1607 * posix.h (scm_setgroups): New prototype.
1608 * posix.c (scm_setgroups): New. Thanks to Paul Jarc!
1609 (scm_getgroups): Handle groups ids that don't fit into a fixnum.
1610 Don't use SCM_WRITABLE_VELTS.
1611
1612 * gc.h (SCM_GC_SET_CELL_BVEC): New.
1613 * gc-card.c (scm_i_init_card_freelist): Use it. Thanks to
1614 Matthias Koeppe!
1615
1616 * __scm.h (SCM_C_INLINE_KEYWORD): New.
1617 * numbers.c: Use it in place of SCM_C_INLINE so that the code
1618 compiles when SCM_C_INLINE is undefined.
1619
1620 2003-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
1621
1622 * __scm.h: Reformulated the architecture and compiler properties
1623 in terms of properties of scm_t_bits and SCM variables rather than
1624 in terms of c standard types. This is since it is not known which
1625 of the standard types scm_t_bits and SCM variables will be defined
1626 to.
1627
1628 2003-07-24 Kevin Ryde <user42@zip.com.au>
1629
1630 * numbers.c (scm_angle): Use scm_flo0 for non-negative inum, bignum
1631 and real.
1632
1633 2003-07-18 Kevin Ryde <user42@zip.com.au>
1634
1635 * numbers.c (scm_product): In complex * bignum, correction to
1636 REAL/IMAG fetch, x is the complex, not y.
1637
1638 2003-07-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1639
1640 * numbers.c (scm_odd_p, scm_even_p): Bugfix: Treat result of
1641 scm_inf_p test as Scheme values.
1642 (scm_sum): Bugfix: Normalize bignum created from a negative bignum
1643 and a positive inum.
1644 Use GNU indentation style.
1645
1646 2003-07-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
1647
1648 * values.c (scm_values): Build lists of length 1 by using
1649 scm_list_1 instead of using scm_cons.
1650
1651 2003-07-10 Kevin Ryde <user42@zip.com.au>
1652
1653 * deprecation.c (scm_c_issue_deprecation_warning_fmt): Add va_end.
1654 * list.c (scm_list_n): Ditto.
1655
1656 * gc-malloc.c (scm_gc_realloc): Define "ptr" at start of function.
1657
1658 2003-07-08 Matthias Koeppe <mkoeppe@merkur.math.uni-magdeburg.de>
1659
1660 * tags.h (scm_t_bits, scm_t_signed_bits, etc): Avoid solaris empty
1661 defines of INTPTR_MAX and UINTPTR_MAX, combine conditionals for
1662 scm_t_bits and scm_t_signed_bits to avoid any chance of one and not
1663 the other using intptr_t.
1664
1665 2003-07-08 Kevin Ryde <user42@zip.com.au>
1666
1667 * numbers.c (scm_make_polar): Use sincos, when available.
1668 (scm_magnitude): Use hypot.
1669
1670 * ports.c (scm_char_ready_p, scm_peek_char): In docstrings, don't use
1671 @footnote since it doesn't go through to guile-procedures.txt.
1672
1673 * threads.c (scm_call_with_new_thread): In docstring, use "( )"
1674 outside @var to quieten makeinfo, and use @code.
1675
1676 2003-07-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1677
1678 * gc-malloc.c (decrease_mtrigger): new function
1679 (increase_mtrigger): new function, separate debug registering and
1680 mtrigger administration.
1681 (scm_gc_realloc): bugfix: do mtrigger administration before the
1682 actual realloc, for the realloc might invalidate a GC-d segment of
1683 memory. Thanks to Sam Hocevar for pointing this out.
1684 (scm_gc_realloc): use scm_malloc_reregister instead of
1685 unregistering and registering in sequence.
1686
1687 2003-07-03 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1688
1689 * __scm.h (SCM_ASSERT): change "else" expansion to "do { } while (0)"
1690
1691 2003-07-02 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1692
1693 * __scm.h (SCM_ASRTGO): add "else" to macro expansions with if
1694 clauses.
1695
1696 2003-06-29 Marius Vollmer <mvo@zagadka.de>
1697
1698 * deprecated.h (SCM_OPDIRP, scm_fport, scm_option, scm_srcprops,
1699 scm_srcprops_chunk, scm_info_frame, scm_stack, scm_array,
1700 scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_FUNC_NAME, SCM_WTA,
1701 RETURN_SCM_WTA, SCM_VALIDATE_NUMBER_COPY,
1702 SCM_VALIDATE_NUMBER_DEF_COPY, SCM_VALIDATE_OPDIR): Re-added from
1703 the release_1_6 branch.
1704
1705 2003-06-25 Stefan Jahn <stefan@lkcc.org>
1706
1707 * continuations.c: Redeclaration of getcontext() via the
1708 __asm__ ("getcontext") directive.
1709
1710 * continuations.h: Include <ucontext.h> instead of
1711 <sys/ucontext.h>.
1712
1713 2003-06-21 Kevin Ryde <user42@zip.com.au>
1714
1715 * numbers.c (_GNU_SOURCE): #define, to get C99 things.
1716 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, $asinh, $acosh,
1717 $atanh, truncate): Use C library asinh, acosh, atanh and trunc, when
1718 available.
1719 (scm_inexact_to_exact): Expand isfinite to its definition !xisinf.
1720 (isfinite): Remove, conflicts with C99 isfinite().
1721
1722 2003-06-19 Marius Vollmer <mvo@zagadka.de>
1723
1724 * deprecated.h, deprecated.c (scm_strhash, scm_sym2ovcell_soft,
1725 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
1726 scm_symbol_value0, scm_string_to_obarray_symbol scm_intern_symbol,
1727 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
1728 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp): Re-added from
1729 the release_1_6 branch.
1730
1731 2003-06-14 Stefan Jahn <stefan@lkcc.org>
1732
1733 * threads.h: Redefined scm_getspecific() and scm_setspecific()
1734 to be functions instead of macros.
1735
1736 * threads.c: Conditionalized inclusion of <sys/time.h> and
1737 <unistd.h>.
1738 (scm_getspecific, scm_setspecific): Made these two function
1739 real part of the API.
1740
1741 * posix.c (s_scm_putenv): Added some code to make a
1742 (putenv "FOO="), i.e. setting an empty string, work also on
1743 Win32 systems. Thanks to Kevin Ryde for the proposal.
1744
1745 2003-06-12 Kevin Ryde <user42@zip.com.au>
1746
1747 * posix.c (scm_putenv): Free temporary ptr in mingw unset. Add
1748 freebsd to comment about need to use unsetenv.
1749
1750 2003-06-02 Marius Vollmer <mvo@zagadka.de>
1751
1752 * ports.c (scm_peek_char): Safe the column of the port around the
1753 getc/ungetc calls. Thanks to Dr. Peter Ivanyi!
1754
1755 2003-06-07 Kevin Ryde <user42@zip.com.au>
1756
1757 * tags.h: Use inttypes.h and stdint.h when available, for INTPTR_MAX
1758 and friends required by scm_t_bits setups.
1759
1760 2003-06-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
1761
1762 * tags.h (scm_tc2_int): Added.
1763
1764 * tags.h (scm_tc3_int_1, scm_tc3_int_2): Expressed in terms of
1765 scm_tc2_int.
1766
1767 * tags.h (scm_tcs_cons_imcar, scm_tcs_cons_nimcar, scm_tcs_struct,
1768 scm_tcs_closures): Hard coded values replaced by symbolic ones.
1769
1770 2003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
1771
1772 * eval.c: Partially undid my patch from 2003-05-31. This patch
1773 caused the segfault referenced in the previous changelog entry.
1774
1775 2003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
1776
1777 * tags.h: Fixed comment about the immediate type code layout.
1778
1779 * eval.c: Fixed handling of non-special instructions. Without
1780 this patch, guile will segfault on (#\0) and similar instructions.
1781
1782 2003-06-05 Kevin Ryde <user42@zip.com.au>
1783
1784 * numbers.c (scm_max, scm_min): For inum, bignum and real, if other
1785 operand is NaN, then return NaN. Also avoid passing NaN to mpz_cmp_d.
1786
1787 * read.c (scm_input_error): Pass arg list parameter to scm_error_scm,
1788 rather than SCM_EOL. Needed by "Unknown # object" case in scm_lreadr.
1789
1790 2003-06-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
1791
1792 * __scm.h, gc-card.c (SCM_DEBUG_DEBUGGER_SUPPORT,
1793 SCM_DEBUG_DEBUGGING_SUPPORT): Renamed macro
1794 SCM_DEBUG_DEBUGGER_SUPPORT to SCM_DEBUG_DEBUGGING_SUPPORT and
1795 generalized it to apply not only to C level functions but also to
1796 scheme level functions.
1797
1798 * debug.c, debug.h, eval.c (make-iloc, scm_make_iloc, iloc?,
1799 scm_iloc_p, dbg-make-iloc, scm_dbg_make_iloc, dbg-iloc?,
1800 scm_dbg_iloc_p): Moved functions scm_make_iloc, scm_iloc_p to
1801 eval.c, made them available under SCM_DEBUG_DEBUGGING_SUPPORT == 1
1802 only and renamed them to scm_dbg_make_iloc, scm_dbg_iloc_p,
1803 respectively.
1804
1805 * deprecated.h, eval.c, eval.h (SCM_ILOC00, SCM_IDINC,
1806 SCM_IDSTMSK): Deprecated. The macro definitions are moved from
1807 eval.h into eval.c and a copy is placed into deprecated.h.
1808
1809 * eval.c, eval.h (SCM_MAKE_ILOC): Removed from eval.h and placed
1810 into eval.c. This definition was not part of the API in any
1811 officially released version of guile and thus does not need to go
1812 through a phase of deprecation.
1813
1814 2003-06-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
1815
1816 * deprecated.c, deprecated.h, eval.c, eval.h (scm_s_expression,
1817 scm_s_test, scm_s_body, scm_s_bindings, scm_s_variable,
1818 scm_s_clauses, scm_s_formals): Deprecated. In eval.c the
1819 definitions are make static and renamed from scm_s_xxx to s_xxx.
1820 In deprecated.c the original definitions are copied.
1821
1822 * deprecated.h, eval.c, eval (SCM_EVALIM2, SCM_EVALIM, SCM_XEVAL,
1823 SCM_XEVALCAR): Deprecated. The macro definitions are moved from
1824 eval.h into eval.c and a copy (slightly modified to work in user
1825 code) is placed into deprecated.h.
1826
1827 * eval.c: Use the local static s_xxx definitions instead of the
1828 scm_s_xxx definitions throughout.
1829
1830 2003-06-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
1831
1832 This set of patches separates the representation of the cxr family
1833 of functions (car, cdr etc.) from the dsubr family of functions
1834 (i. e. functions that take a double precision floating point
1835 argument). Further, the algorithm for handling the cxr function
1836 is improved.
1837
1838 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_1), numbers.c
1839 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, scm_round, floor,
1840 ceil, sqrt, fabs, exp, log, sin, cos, tan, asin, acos, atan, sinh,
1841 cosh, tanh), objects.c (scm_class_of), procprop.c
1842 (scm_i_procedure_arity), ramap.c (scm_array_map_x), tags.h
1843 (scm_tc7_dsubr, scm_tcs_subrs): Introduce scm_tc7_dsubr as new
1844 typecode for the dsubr family of functions.
1845
1846 * ramap.c (ramap_cxr, ramap_dsubr): Renamed ramap_cxr to
1847 ramap_dsubr.
1848
1849 * eval.c (SCM_CEVAL, SCM_APPLY, call_cxr_1), pairs.c
1850 (scm_init_pairs): Make use of the (now usable) second cell element
1851 of a scm_tc7_cxr function to implement the cxr family of functions
1852 more efficiently.
1853
1854 2003-05-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
1855
1856 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_0,
1857 scm_trampoline_1, scm_trampoline_2): Postpone error cases to the
1858 end of an if-else-if-sequence of checks.
1859
1860 2003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
1861
1862 * eval.c (SCM_CEVAL): Improved readability of call-with-values
1863 execution. Generalize apply_closure to apply_proc and use that
1864 for call-with-values.
1865
1866 2003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
1867
1868 * eval.c (SCM_CEVAL): Avoid one level of indirection when applying
1869 a non closure.
1870
1871 2003-05-30 Stefan Jahn <stefan@lkcc.org>
1872
1873 * posix.c (s_scm_putenv): Use the new HAVE_UNSETENV
1874 appropriately for mingw32 hosts.
1875
1876 * numbers.h: Defining copysign(), isnan() and finite() to
1877 be prefixed by a single '_' for mingw32 hosts.
1878
1879 2003-05-30 Kevin Ryde <user42@zip.com.au>
1880
1881 * numbers.c (z_negative_one): New variable.
1882 (scm_init_numbers): Initialize it.
1883 (scm_logcount): Use it and mpz_hamdist to count zeros for negatives.
1884
1885 2003-05-29 Stefan Jahn <stefan@lkcc.org>
1886
1887 * win32-dirent.c: Use malloc() instead of scm_malloc().
1888
1889 * stime.c (s_scm_strftime): Add a type cast to avoid compiler
1890 warning.
1891
1892 * posix.c (s_scm_putenv): Disable use of unsetenv() for the
1893 mingw32 build.
1894
1895 * modules.c (s_scm_module_import_interface): Renamed local
1896 variable interface to _interface. Seems like 'interface'
1897 is a special compiler directive for the mingw32 compiler.
1898
1899 * mkstemp.c: Provide prototype to avoid compiler warning.
1900
1901 * load.c (s_scm_search_path): Fixed absolute and relative
1902 path detections for native Windows platforms.
1903
1904 * gc.h, threads.h: Export some more symbols using SCM_API (necessary
1905 to build on mingw32).
1906
1907 * gc-freelist.c ("s_scm_map_free_list",
1908 "s_scm_gc_set_debug_check_freelist_x"): Fixed use of FUNC_NAME.
1909
1910 * fports.c (fport_fill_input): Disable use of
1911 fport_wait_for_input() on Win32 platforms.
1912
1913 * filesys.c (s_scm_basename): Fixed __MINGW32__ code.
1914
1915 * Makefile.am: Modified some rules for cross compiling.
1916
1917 2003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
1918
1919 * eval.c (SCM_CEVAL): In case of an application, all checks for a
1920 proper function object and the correct number of arguments are now
1921 performed in the application part of SCM_CEVAL.
1922
1923 (scm_badformalsp): Removed.
1924
1925 2003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
1926
1927 * deprecated.c (scm_read_and_eval_x): Fixed C99-ism.
1928
1929 2003-05-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1930
1931 * num2integral.i.c (NUM2INTEGRAL): Avoid warning about conditional
1932 always being false by inserting preprocessor conditional. (Thanks
1933 to Bruce Korb.)
1934
1935 * __scm.h (SCM_STACK_PTR): New macro. (Cast argument through
1936 (void *) in order to avoid an aliasing warning; thanks to Bruce
1937 Korb.)
1938
1939 * stackchk.h (SCM_STACK_OVERFLOW_P): Use SCM_STACK_PTR.
1940
1941 * threads.c (suspend, launch_thread, scm_threads_mark_stacks): Use
1942 SCM_STACK_PTR.
1943
1944 * threads.c (scm_threads_mark_stacks): Bugfix: Changed
1945 thread->base --> t->base.
1946
1947 * eval.c (SCM_CEVAL): Don't cast argument of SCM_STACK_OVERFLOW_P.
1948
1949 2003-05-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1950
1951 * deprecated.h, deprecated.c (scm_makstr, scm_makfromstr,
1952 scm_variable_set_name_hint, scm_builtin_variable,
1953 scm_internal_with_fluids, scm_make_gsubr,
1954 scm_make_gsubr_with_generic, scm_create_hook, SCM_LIST0,
1955 SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5, SCM_LIST6,
1956 SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify, scm_sloppy_memq,
1957 scm_sloppy_memv, scm_sloppy_member, scm_read_and_eval_x,
1958 scm_subr_entry, SCM_SUBR_DOC, scm_make_subr,
1959 scm_make_subr_with_generic, scm_make_subr_opt,
1960 scm_call_catching_errors, scm_make_smob_type_mfpe,
1961 scm_set_smob_mfpe, scm_strprint_obj, scm_read_0str, scm_eval_0str,
1962 SCM_CHARS, SCM_UCHARS, SCM_LENGTH): Re-added from the release_1_6
1963 branch. Some have been slightly rewritten.
1964 (scm_i_object_chars, scm_i_object_length): New, to support
1965 SCM_CHARS, SCM_UCHARS, and SCM_LENTH.
1966
1967 2003-05-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
1968
1969 * eval.c (scm_m_do, unmemocopy, SCM_CEVAL): Reversed order of
1970 names and inits in the memoized code of do.
1971
1972 2003-05-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1973
1974 * c-tokenize.lex (yyget_lineno, yyget_in, yyget_out, yyget_leng,
1975 yyget_text, yyset_lineno, yyset_in, yyset_out, yyget_debug,
1976 yyset_debug, yylex_destroy): Added prototypes (otherwise we'll get
1977 a compilation error if error-on-warning is enabled).
1978
1979 2003-05-17 Marius Vollmer <mvo@zagadka.de>
1980
1981 * c-tokenize.lex: Gobble up complete lines after a '#'. This
1982 removes preprocessor directives from the snarfage that might
1983 otherwise confuse us. These directives appear when compiling with
1984 "-g3", for example.
1985
1986 2003-05-16 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1987
1988 * ChangeLog: add my surname
1989
1990 * srcprop.c (scm_finish_srcprop): use
1991 scm_gc_register_collectable_memory()
1992 (scm_make_srcprops): idem.
1993
1994 2003-05-14 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1995
1996 * gc-malloc.c (scm_gc_register_collectable_memory): avoid
1997 wrap-around for scm_mtrigger
1998 (scm_gc_register_collectable_memory): abort on overflowing
1999 scm_mallocated().
2000
2001 2003-05-13 Kevin Ryde <user42@zip.com.au>
2002
2003 * numbers.c (xmpz_cmp_d): New macro, handling infs if gmp doesn't.
2004 (scm_num_eq_p, scm_less_p, scm_max, scm_min): Use it.
2005
2006 2003-05-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2007
2008 * backtrace.c (scm_display_error_message): Introduced fancy
2009 printing with max level 7 and length 10. (Purpose: avoid printing
2010 gigantic objects in error messages.)
2011
2012 * print.c, print.h (scm_i_port_with_print_state): New function.
2013
2014 * print.c (scm_iprin1, scm_printer_apply,
2015 scm_port_with_print_state): Use scm_i_port_with_print_state.
2016 (scm_simple_format): Modified not to destroy print states.
2017 (print_state_mutex): New mutex.
2018 (scm_make_print_state, scm_free_print_state, scm_prin1):
2019 Lock/unlock print_state_mutex.
2020
2021 * deprecated.h (SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK):
2022 Use current names in definitions.
2023
2024 2003-05-10 Kevin Ryde <user42@zip.com.au>
2025
2026 * numbers.c (scm_num_eq_p, scm_less_p): Don't pass NaN to mpz_cmp_d.
2027
2028 * numbers.c (scm_integer_length): On negative bignums, adjust
2029 mpz_sizeinbase to account for it looking at absolute value where we
2030 want ones-complement.
2031
2032 * numbers.c (scm_gcd): In bignum/inum, don't pass yy==0 to mpz_gcd_ui
2033 since we're only using the ulong return value, and x might not fit.
2034
2035 2003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
2036
2037 * eval.c, eval.h, read.c, read.h (scm_sym_dot): Moved from eval to
2038 read. This will allow to make the definition in read.c static.
2039
2040 2003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
2041
2042 * eval.c, eval.h, evalext.c, evalext.h (scm_m_undefine): Moved
2043 from evalext to eval. This will allow to make some of the
2044 definitions in eval.c static.
2045
2046 2003-05-06 Kevin Ryde <user42@zip.com.au>
2047
2048 * numbers.c (scm_difference): In inum - bignum, handle negative inum.
2049 (scm_logcount): Use mpz_com, not mpz_neg.
2050
2051 2003-05-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
2052
2053 The purpose of this patch is to make guile's internal memoizers
2054 distinguishable from memoizing macros created on the scheme level
2055 or from user provided primitive memoizing macros. The reason is,
2056 that the internal memoizers are the only ones that are allowed to
2057 transform their scheme input into memoizer byte code, while all
2058 other memoizing macros may only transform scheme code into new
2059 scheme code.
2060
2061 To achieve this, a new macro type 'builtin-macro!' is introduced.
2062 Currently, 'builtin-macro!'s are handled as memoizing macros, but
2063 this will change when the memoizer and executor are separated.
2064
2065 * macros.[ch] (scm_i_makbimacro): New.
2066
2067 * macros.h (SCM_BUILTIN_MACRO_P): New.
2068
2069 * macros.c (macro_print, scm_macro_type): Support builtin-macro!s.
2070
2071 * eval.c, goops.c: All of guile's primitive memoizing macros are
2072 primitive builtin-macros now.
2073
2074 * eval.c (scm_macroexp, SCM_CEVAL): Make sure the primitive
2075 builtin-macros are handled equally to memoizing macros.
2076
2077 2003-05-04 Marius Vollmer <mvo@zagadka.de>
2078
2079 * throw.c (scm_ithrow): Remove "asm volatile" hack. It used to
2080 work around a bug in GCC 2.95.2 but is now a bug in itself.
2081
2082 2003-05-02 Marius Vollmer <mvo@zagadka.de>
2083
2084 * deprecated.h (scm_rstate, scm_rng, SCM_SLOPPY_CONSP,
2085 SCM_SLOPPY_NCONSP, scm_tc7_ssymbol, scm_tc7_msymbol,
2086 scm_tcs_symbols): New.
2087
2088 2003-04-30 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2089
2090 * deprecated.h, deprecated.c (scm_protect_object,
2091 scm_unprotect_object, SCM_SETAND_CAR, SCM_SETOR_CAR,
2092 SCM_SET_AND_CDR, SCM_SET_OR_CDR, SCM_FREEP, SCM_NFREEP,
2093 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
2094 SCM_GCCDR, scm_remember, scm_the_root_module, scm_make_module,
2095 scm_ensure_user_module, scm_load_scheme_module, scm_port,
2096 scm_ptob_descriptor, scm_port_rw_active,
2097 scm_close_all_ports_except): New.
2098
2099 * ports.c (scm_c_port_for_each): New function, mostly copied from
2100 scm_port_for_each.
2101 (scm_port_for_each): Reimplemented using scm_c_port_for_each.
2102 * ports.h (scm_c_port_for_each): New prototype.
2103
2104 2003-04-28 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2105
2106 * eval.c (scm_m_atdispatch): Removed until actually needed. (This
2107 macro was introduced in anticipation of GOOPS method compilation
2108 code.)
2109
2110 * goops.c: Removed binding of @dispatch.
2111
2112 2003-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
2113
2114 * eval.c, goops.c (@dispatch, @slot-ref, @slot-set!): Move the
2115 instructions that bind the macros on the scheme level back to
2116 goops.c in order to make sure again that the bindings go into the
2117 (oop goops) module and are not visible from the outside.
2118
2119 2003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
2120
2121 * eval.c: Non functional change: Separated R5RS and non-R5RS
2122 macros into different sections of the file and ordered the
2123 memoizers alphabetically.
2124
2125 2003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
2126
2127 * eval.c (scm_ilookup): Rewritten to improve readability.
2128
2129 2003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
2130
2131 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
2132 Partially reverted patch from 2003-04-23 in oder to find a better
2133 compromise between readability and debuggability.
2134
2135 2003-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
2136
2137 * eval.c, eval.h, goops.c, goops.h (scm_m_atslot_ref,
2138 scm_m_atslot_set_x, scm_m_atdispatch): Move the declarations and
2139 definitions of the special goops memoizers from goops.[ch] to
2140 eval.[ch]. Hmm... it seems that scm_m_atdispatch is not used
2141 throughout guile.
2142
2143 2003-04-24 Mikael Djurfeldt <mdj@kvast.blakulla.net>
2144
2145 * ports.c, ports.h (scm_i_port_table_mutex): New mutex.
2146
2147 * fports.c (scm_evict_ports): Lock/unlock scm_i_port_table_mutex.
2148
2149 * ports.c (scm_close_port, scm_flush_all_ports): Ditto.
2150
2151 * ioext.c (scm_fdes_to_ports): Ditto.
2152
2153 * vports.c (scm_make_soft_port): Changed SCM_DEFER/ALLOW_INTS into
2154 lock/unlock scm_i_port_table_mutex.
2155
2156 * strports.c (scm_mkstrport): Ditto.
2157
2158 * ports.c (scm_void_port, scm_port_for_each): Ditto.
2159
2160 * fports.c (scm_fdes_to_port): Ditto.
2161
2162 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
2163
2164 This set of patches contains no functional changes, only debatable
2165 minor stylistic ones. Still, in order to prepare a patch between
2166 my local copy and the CVS version, I decided to submit the changes
2167 below. Then, the patch will hopefully only contain relevant
2168 modifications :-)
2169
2170 * eval.c (iqq): Added const specifier.
2171
2172 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
2173 Use NULL instead of 0 to indicate that a pointer is returned.
2174 Removed some misleading 'fall through' comments.
2175
2176 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
2177 Split up long expressions into smaller ones to be more debugging
2178 friendly.
2179
2180 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
2181
2182 * eval.h (SCM_ENTER_FRAME_HDLR, SCM_APPLY_FRAME_HDLR,
2183 SCM_EXIT_FRAME_HDLR): Use SCM_PACK to convert data to a SCM value
2184 rather than casting to SCM.
2185
2186 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
2187
2188 * sort.c, pairs.h: Removed unnecessary includes.
2189
2190 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
2191
2192 * sort.c: Replaced hand-made trampline code by the new official
2193 mechanism from eval.c. This fixes a segfault in the new test file
2194 sort.test.
2195
2196 (quicksort, compare_function, scm_restricted_vector_sort_x,
2197 scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
2198 scm_merge_list_step, scm_sort_x, scm_sort, scm_merge_vector_x,
2199 scm_merge_vector_step, scm_stable_sort_x, scm_stable_sort,
2200 scm_sort_list_x, scm_sort_list): Use trampoline mechanism from
2201 eval.c.
2202
2203 (subr2less, lsubrless, closureless, applyless, scm_cmp_function,
2204 cmp_fun_t): Removed.
2205
2206 (compare_function): Added.
2207
2208 * sort.c (quicksort, SWAP, stack_node): Replaced pointer
2209 arithmetics with index arithmetics. Changed quicksort to work on
2210 an array of SCM values instead of an array of characters. Avoid
2211 bytewise copying of SCM elements. Avoid allocating memory on the
2212 stack with alloca. Fixed some comments.
2213
2214 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
2215
2216 * eval.c (EXTEND_ENV): Eliminated.
2217
2218 (unmemocopy, SCM_CEVAL, SCM_APPLY): Use SCM_EXTEND_ENV instead of
2219 EXTEND_ENV.
2220
2221 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
2222
2223 * __scm.h (SCM_DEBUG_DEBUGGER_SUPPORT): New compile-time option.
2224
2225 * gc.card.c (scm_gc_marked_p): Fixed compiler warning when
2226 compiling with SCM_DEBUG==1 by moving definition behind prototype.
2227
2228 * gc.card.c (scm_dbg_t_list_cell, scm_dbg_t_double_cell,
2229 scm_dbg_gc_marked_p, scm_dbg_gc_get_card, scm_dbg_gc_get_bvec,
2230 scm_t_list_cell_struct, scm_t_list_cell, scm_t_double_cell,
2231 scm_gc_marked_p, scm_gc_get_card, scm_gc_get_bvec): Fixed
2232 functions such that they check if the object is a non-immediate.
2233 Further, renamed identifiers to use the scm_dbg_ prefix and made
2234 their inclusion into the lib dependent of the
2235 SCM_DEBUG_DEBUGGER_SUPPORT compile time option.
2236
2237 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
2238
2239 * __scm.h: Fixed comment about the SCM_DEBUG_TYPING_STRICTNESS
2240 debug option.
2241
2242 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
2243
2244 * list.c (scm_ilength, scm_last_pair), unif.c (l2ra): Prefer
2245 !SCM_CONSP over SCM_NCONSP. Now, guile itself does not include
2246 any calls to SCM_NCONSP any more.
2247
2248 * unif.c (l2ra): Eliminate redundant check.
2249
2250 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
2251
2252 * list.c (scm_cons_star), ramap.c (scm_ra_sum, scm_ra_product,
2253 scm_array_map_x), unif.c (l2ra): Prefer !SCM_NULLP over
2254 SCM_NNULLP. Now, guile itself does not include any calls to
2255 SCM_NNULLP any more.
2256
2257 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
2258
2259 * eval.c (unmemocopy, SCM_APPLY, scm_map, scm_for_each,
2260 scm_copy_tree): Place assignment expressions which are part of
2261 other expressions into an expression of their own.
2262
2263 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
2264
2265 * goops.c (TEST_CHANGE_CLASS, scm_sys_initialize_object): Don't
2266 compare SCM values with !=.
2267
2268 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
2269
2270 * eval.c, eval.h, evalext.c, evalext.h (scm_sym_setter,
2271 scm_m_generalized_set_x, scm_init_evalext): Move the declaration
2272 and definition of the memoizer for the generalized set! macro from
2273 evalext.[ch] to eval.[ch]. Use the SCM_SYNTAX snarfer macro to
2274 define the macro object.
2275
2276 * eval.c, eval.h (s_set_x, scm_s_set_x, scm_m_set_x,
2277 scm_m_generalized_set_x): Since now scm_s_set_x is only used in
2278 eval.c, it is made static and renamed to s_set_x.
2279
2280 * evalext.c (scm_defined_p, scm_m_undefine): Prefer !SCM_<foo>
2281 over SCM_N<foo>.
2282
2283 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
2284
2285 * eval.c, root.h (scm_undefineds, SCM_NUM_PROTECTS, undefineds,
2286 scm_init_eval): Made scm_undefineds static in eval.c, renamed it
2287 to undefineds and registered the object as a permanent object.
2288
2289 * eval.c, eval.h (scm_f_apply, scm_init_eval): Made scm_f_apply
2290 static in eval.c, renamed it to f_apply and registered the object
2291 as a permanent object.
2292
2293 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
2294
2295 * eval.c (SCM_BIT7, SCM_BIT8, unmemocopy, SCM_CEVAL): Renamed
2296 file-local macro SCM_BIT8 to SCM_BIT7, which is more appropriate.
2297
2298 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
2299
2300 * numbers.c (scm_logtest): Fixed argument bug in the call to
2301 mpz_and, which showed up when compiling with SCM_DEBUG defined.
2302
2303 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
2304
2305 * gc-card.c (scm_i_sweep_card, scm_i_init_card_freelist): Fixed
2306 type errors that showed up when compiling with SCM_DEBUG defined.
2307
2308 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
2309
2310 * continuations.c, continuations.h, eval.c, eval.h, extensions.c,
2311 gsubr.c, guile.c, init.c, read.c, root.c, root.h, stackchk.h,
2312 throw.c: Removed uses of DEBUG_EXTENSIONS and DYNAMIC_LINKING to
2313 fix compile errors with --disable-deprecated.
2314
2315 2003-04-17 Rob Browning <rlb@defaultvalue.org>
2316
2317 * numbers.c (scm_integer_expt): fix case where we were declaring
2318 vars in the middle of a statement block. Thanks to Thamer
2319 Al-Harbash.
2320
2321 2003-04-17 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2322
2323 * goops.c (TEST_CHANGE_CLASS): Update variable class after class
2324 change.
2325
2326 * eq.c (scm_eqv_p): Turned into a primitive generic.
2327
2328 2003-04-16 Rob Browning <rlb@defaultvalue.org>
2329
2330 * gc_os_dep.c: Added patch for UnixWare and OpenUNIX support.
2331 Thanks to Boyd Gerber.
2332 Added check for __arm__ in addition to arm for LINUX and copied
2333 __s390__ defines from upstream libgc. Thanks to James Treacy for
2334 reporting the problems.
2335
2336 * numbers.c (PTRDIFF_MIN): use SCM_CHAR_BIT.
2337
2338 * socket.c: use SCM_CHAR_BIT.
2339
2340 * random.c (scm_c_random_bignum): use SCM_CHAR_BIT.
2341
2342 * num2integral.i.c (NUM2INTEGRAL): use SCM_CHAR_BIT.
2343
2344 2003-04-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
2345
2346 * feature.c (scm_init_feature): Always add threads feature.
2347
2348 2003-04-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2349
2350 * goops.c (scm_sys_fast_slot_ref): Use SCM_SLOT instead of
2351 scm_at_assert_bound_ref. (We don't want the unbound check. See
2352 oop/goops/active-slot.scm.)
2353
2354 2003-04-14 Rob Browning <rlb@defaultvalue.org>
2355
2356 * tags.h: scm_t_intptr should have been intptr_t.
2357
2358 2003-04-13 Rob Browning <rlb@defaultvalue.org>
2359
2360 * __scm.h (SCM_FLUSH_REGISTER_WINDOWS): don't just rely on "sparc"
2361 test. Instead use
2362 #if defined (sparc) || defined (__sparc__) || defined (__sparc)
2363 as gc_os_dep.c suggests is appropriate.
2364
2365 * goops.c (prep_hashsets): make static to match prototype.
2366 (scm_sym_args): SCM_SYMBOL -> SCM_GLOBAL_SYMBOL. Thanks to Albert
2367 Chin.
2368
2369 * c-tokenize.lex: remove trailing comma from enum. Thanks to
2370 Albert Chin.
2371
2372 * gc_os_dep.c: add NetBSD powerpc config info. Thanks to Thomas
2373 Klausner.
2374
2375 2003-04-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2376
2377 * goops.c (scm_sys_prep_layout_x): Instance allocation is now
2378 indicated through extra fields in getters-n-setters.
2379 (scm_add_slot): Adapted to new format of getters_n_setters slot.
2380 (Thanks to Andy Wingo.)
2381
2382 2003-02-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2383
2384 * gc-segment.c: add comment
2385
2386 2003-04-07 Rob Browning <rlb@defaultvalue.org>
2387
2388 * debug.h: change "id" arg name to "info_id" to avoid objective-c
2389 clash.
2390
2391 * num2integral.i.c (NUM2INTEGRAL): fix bug pointed out by Mikael
2392 and add regression test to standalone/.
2393
2394 2003-04-06 Rob Browning <rlb@defaultvalue.org>
2395
2396 * strings.c (scm_mem2string): use memcpy rather than by-hand loop.
2397 Thanks to Dale P. Smith.
2398
2399 * random.c: #include gmp.h.
2400 (scm_c_random_bignum): normalize result on return.
2401
2402 * init.c: #include gmp.h.
2403
2404 * numbers.h: remove the gmp.h #include (not needed now).
2405
2406 * posix.h: change occurences of "id" to something else so we don't
2407 cause trouble when included via objective-c (can't hurt, might
2408 help). Still have usage in debug.h, though.
2409
2410 2003-04-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2411
2412 * random.c (scm_c_random_bignum): Don't generate a random number
2413 equal to m (the second argument of scm_c_random_bignum); only
2414 generate numbers in the range 0 <= r < m.
2415 (scm_c_default_rstate): Use SCM_VARIABLE_REF to access
2416 scm_var_random_state.
2417
2418 * num2integral.i.c (INTEGRAL2BIG): Put negation of n inside then
2419 clause.
2420
2421 2003-04-05 Rob Browning <rlb@defaultvalue.org>
2422
2423 * modules.c (scm_module_import_interface): move declaration of
2424 uses before any code.
2425
2426 2003-04-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2427
2428 * Makefile.am (scmconfig.h): Look for config.h in top_builddir,
2429 not top_srcdir.
2430
2431 * hashtab.c (rehash_after_gc): Clear to_rehash list before
2432 processing it in order to avoid an infinite loop.
2433
2434 * print.c (scm_prin1): Remember old state of pstate->writingp.
2435
2436 2003-04-05 Marius Vollmer <mvo@zagadka.de>
2437
2438 * Changed license terms to the plain LGPL thru-out.
2439
2440 2003-04-04 Rob Browning <rlb@defaultvalue.org>
2441
2442 * socket.c (FLIPCPY_NET_HOST_128): new macro.
2443 (ipv6_net_to_num, ipv6_num_to_net, bignum_in_ipv6_range_p):
2444 rewrite to handle GMP bignums.
2445
2446
2447 * random.c (scm_c_random_bignum): rewrite to handle GMP bignums.
2448
2449 * ports.c (scm_getc): minor tweak.
2450
2451 * numbers.h: remove SCM_BIGDIG conditionals, reorganize, and
2452 rewrite to handle GMP bignums.
2453
2454 * numbers.c: rewrite *many* functions to handle GMP bignums.
2455
2456 * num2integral.i.c (NUM2INTEGRAL, INTEGRAL2NUM, INTEGRAL2BIG):
2457 handle GMP bignums.
2458
2459 * num2float.i.c (NUM2FLOAT): handle GMP bignums.
2460
2461 * init.c (check_config): remove SCM_BIGDIG conditionals.
2462 (scm_init_guile_1): test to make sure mpz_t fits in a double_cell.
2463
2464 * gc-card.c ("sweep_card"): handle new mpz_t bignums.
2465
2466 * eval.c: remove SCM_BIGDIG conditionals.
2467
2468 * eq.c (s_scm_eqv_p): scm_i_bigcomp -> scm_i_bigcmp.
2469
2470 2003-03-31 Rob Browning <rlb@defaultvalue.org>
2471
2472 * Makefile.am (scmconfig.h): change srcdir to builddir. (Thanks
2473 to Kevin Ryde.)
2474
2475 2003-03-27 Rob Browning <rlb@defaultvalue.org>
2476
2477 * threads.h: fix various preprocessor usages of new public
2478 symbols to expect 0 or 1 values rather than 1 or undefined.
2479 i.e. change #ifdef to #if, etc.
2480
2481 * threads.c: fix various preprocessor usages of new public
2482 symbols to expect 0 or 1 values rather than 1 or undefined.
2483 i.e. change #ifdef to #if, etc.
2484
2485 * tags.h: fix various preprocessor usages of new public
2486 symbols to expect 0 or 1 values rather than 1 or undefined.
2487 i.e. change #ifdef to #if, etc.
2488
2489 * stacks.c: fix various preprocessor usages of new public
2490 symbols to expect 0 or 1 values rather than 1 or undefined.
2491 i.e. change #ifdef to #if, etc.
2492
2493 * stackchk.h: fix various preprocessor usages of new public
2494 symbols to expect 0 or 1 values rather than 1 or undefined.
2495 i.e. change #ifdef to #if, etc.
2496
2497 * stackchk.c: fix various preprocessor usages of new public
2498 symbols to expect 0 or 1 values rather than 1 or undefined.
2499 i.e. change #ifdef to #if, etc.
2500
2501 * sort.c: fix various preprocessor usages of new public
2502 symbols to expect 0 or 1 values rather than 1 or undefined.
2503 i.e. change #ifdef to #if, etc.
2504
2505 * read.c: fix various preprocessor usages of new public
2506 symbols to expect 0 or 1 values rather than 1 or undefined.
2507 i.e. change #ifdef to #if, etc.
2508
2509 * random.c: fix various preprocessor usages of new public
2510 symbols to expect 0 or 1 values rather than 1 or undefined.
2511 i.e. change #ifdef to #if, etc.
2512
2513 * print.c: fix various preprocessor usages of new public
2514 symbols to expect 0 or 1 values rather than 1 or undefined.
2515 i.e. change #ifdef to #if, etc.
2516
2517 * objects.c: fix various preprocessor usages of new public
2518 symbols to expect 0 or 1 values rather than 1 or undefined.
2519 i.e. change #ifdef to #if, etc.
2520
2521 * numbers.h: fix various preprocessor usages of new public
2522 symbols to expect 0 or 1 values rather than 1 or undefined.
2523 i.e. change #ifdef to #if, etc.
2524
2525 * null-threads.c: fix various preprocessor usages of new public
2526 symbols to expect 0 or 1 values rather than 1 or undefined.
2527 i.e. change #ifdef to #if, etc.
2528
2529 * lang.c: fix various preprocessor usages of new public
2530 symbols to expect 0 or 1 values rather than 1 or undefined.
2531 i.e. change #ifdef to #if, etc.
2532
2533 * lang.h: fix various preprocessor usages of new public
2534 symbols to expect 0 or 1 values rather than 1 or undefined.
2535 i.e. change #ifdef to #if, etc.
2536
2537 * iselect.h: fix various preprocessor usages of new public
2538 symbols to expect 0 or 1 values rather than 1 or undefined.
2539 i.e. change #ifdef to #if, etc.
2540
2541 * init.c: fix various preprocessor usages of new public
2542 symbols to expect 0 or 1 values rather than 1 or undefined.
2543 i.e. change #ifdef to #if, etc.
2544
2545 * gh_data.c: fix various preprocessor usages of new public
2546 symbols to expect 0 or 1 values rather than 1 or undefined.
2547 i.e. change #ifdef to #if, etc.
2548
2549 * gh.h: fix various preprocessor usages of new public
2550 symbols to expect 0 or 1 values rather than 1 or undefined.
2551 i.e. change #ifdef to #if, etc.
2552
2553 * gen-scmconfig.c: change most new public symbols to be defined to
2554 0 or 1 rather than being either 1 or undefined.
2555
2556 * gc_os_dep.c: fix various preprocessor usages of new public
2557 symbols to expect 0 or 1 values rather than 1 or undefined.
2558 i.e. change #ifdef to #if, etc.
2559 (STACK_GROWS_DOWN): define to 0 or 1 rather than 1 or undef.
2560
2561 * gc.h: fix various preprocessor usages of new public
2562 symbols to expect 0 or 1 values rather than 1 or undefined.
2563 i.e. change #ifdef to #if, etc.
2564
2565 * gc-card.c: fix various preprocessor usages of new public
2566 symbols to expect 0 or 1 values rather than 1 or undefined.
2567 i.e. change #ifdef to #if, etc.
2568
2569 * gc-mark.c: fix various preprocessor usages of new public
2570 symbols to expect 0 or 1 values rather than 1 or undefined.
2571 i.e. change #ifdef to #if, etc.
2572
2573 * feature.c: fix various preprocessor usages of new public
2574 symbols to expect 0 or 1 values rather than 1 or undefined.
2575 i.e. change #ifdef to #if, etc.
2576
2577 * evalext.c: fix various preprocessor usages of new public
2578 symbols to expect 0 or 1 values rather than 1 or undefined.
2579 i.e. change #ifdef to #if, etc.
2580
2581 * eval.h: fix various preprocessor usages of new public
2582 symbols to expect 0 or 1 values rather than 1 or undefined.
2583 i.e. change #ifdef to #if, etc.
2584
2585 * eval.c: fix various preprocessor usages of new public
2586 symbols to expect 0 or 1 values rather than 1 or undefined.
2587 i.e. change #ifdef to #if, etc.
2588
2589 * eq.c: fix various preprocessor usages of new public
2590 symbols to expect 0 or 1 values rather than 1 or undefined.
2591 i.e. change #ifdef to #if, etc.
2592
2593 * coop.c: fix various preprocessor usages of new public
2594 symbols to expect 0 or 1 values rather than 1 or undefined.
2595 i.e. change #ifdef to #if, etc.
2596
2597 * coop-threads.c: fix various preprocessor usages of new public
2598 symbols to expect 0 or 1 values rather than 1 or undefined.
2599 i.e. change #ifdef to #if, etc.
2600
2601 * coop-pthreads.c: fix various preprocessor usages of new public
2602 symbols to expect 0 or 1 values rather than 1 or undefined.
2603 i.e. change #ifdef to #if, etc.
2604
2605 * coop-defs.h: fix various preprocessor usages of new public
2606 symbols to expect 0 or 1 values rather than 1 or undefined.
2607 i.e. change #ifdef to #if, etc.
2608
2609 * convert.i.c: fix various preprocessor usages of new public
2610 symbols to expect 0 or 1 values rather than 1 or undefined.
2611 i.e. change #ifdef to #if, etc.
2612
2613 * continuations.c: fix various preprocessor usages of new public
2614 symbols to expect 0 or 1 values rather than 1 or undefined.
2615 i.e. change #ifdef to #if, etc.
2616
2617 * _scm.h: fix various preprocessor usages of new public symbols to
2618 expect 0 or 1 values rather than 1 or undefined. i.e. change
2619 #ifdef to #if, etc.
2620
2621 2003-03-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2622
2623 * init.c (scm_init_guile_1): Call scm_i_init_deprecated.
2624
2625 * deprecated.c, deprecated.h: New files, to collect deprecated
2626 things in one place.
2627 * Makefile.am: Added them in all the right places.
2628
2629 * Makefile.am (EXTRA_DIST): Added "scmconfig.h.top".
2630 (scmconfig.h): Get "scmconfig.h.top" from $(srcdir) so that VPATH
2631 builds work.
2632 (DOT_X_FILES): Removed "iselect.x".
2633 (DOT_DOC_FILES): Removed "iselect.doc".
2634
2635 2003-03-25 Rob Browning <rlb@defaultvalue.org>
2636
2637 * win32-socket.h: #include "libguile/__scm.h". Replace usage of
2638 HAVE_WINSOCK2_H with SCM_HAVE_WINSOCK2_H.
2639
2640 * win32-socket.c: #include <config.h> if HAVE_CONFIG_H.
2641
2642 * vports.c: #include <config.h> if HAVE_CONFIG_H.
2643
2644 * unif.c: #include <config.h> if HAVE_CONFIG_H. Replace usage of
2645 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
2646
2647 * threads.h: replace usage of struct timespect with
2648 scm_t_timespec. Replace usage of USE_PTHREAD_THREADS with
2649 SCM_USE_PTHREAD_THREADS. Remove typedef for struct timespec in
2650 favor of scm_t_timespec from scmconfig.h.
2651
2652 * threads.c: move libguile/_scm.h include to the top so we pick up
2653 any critical defines like _GNU_SOURCE early. Replace usage of
2654 struct timespect with scm_t_timespec. Replace usage of
2655 STACK_GROWS_UP with SCM_STACK_GROWS_UP. Replace usage of
2656 USE_PTHREAD_THREADS with SCM_USE_PTHREAD_THREADS.
2657
2658 * threads-plugin.h: replace usage of struct timespect with
2659 scm_t_timespec.
2660
2661 * threads-plugin.c: #include <config.h> if HAVE_CONFIG_H. Replace
2662 usage of struct timespect with scm_t_timespec.
2663
2664 * tags.h: move HAVE_STDINT_H handling to scmconfig.h. Move
2665 HAVE_INTTYPES_H handling to scmconfig.h. #include
2666 "libguile/__scm.h". Rework handling for scm_t_bits,
2667 scm_t_signed_bits, SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
2668 SCM_T_SIGNED_BITS_MIN, and SIZEOF_SCM_T_BITS to use scm_t_intptr,
2669 scm_t_uintptr, SCM_SIZEOF_INTPTR_T, and SCM_SIZEOF_UINTPTR_T, and
2670 SCM_SIZEOF_UNSIGNED_LONG. Rename usage of HAVE_ARRAYS to
2671 SCM_HAVE_ARRAYS.
2672
2673 * symbols.c: #include <config.h> if HAVE_CONFIG_H.
2674
2675 * struct.c: #include <config.h> if HAVE_CONFIG_H.
2676
2677 * strports.c: #include <config.h> if HAVE_CONFIG_H.
2678
2679 * strop.c: #include <config.h> if HAVE_CONFIG_H.
2680
2681 * stime.h: move handling of time related headers to scmconfig.h.
2682
2683 * stime.c: #include <config.h> if HAVE_CONFIG_H.
2684
2685 * stacks.c: replace usage of STACK_GROWS_UP with
2686 SCM_STACK_GROWS_UP.
2687
2688 * sort.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
2689 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
2690
2691 * socket.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
2692 of uint32 and HAVE_UINT_32 with scm_t_int32.
2693
2694 * smob.c: #include <config.h> if HAVE_CONFIG_H.
2695
2696 * simpos.c: #include <config.h> if HAVE_CONFIG_H.
2697
2698 * script.c: #include <config.h> if HAVE_CONFIG_H.
2699
2700 * scmsigs.c: #include <config.h> if HAVE_CONFIG_H.
2701
2702 * scmconfig.h.top: new file -- preamble for scmconfig.h.
2703
2704 * rw.c: #include <config.h> if HAVE_CONFIG_H.
2705
2706 * regex-posix.c: #include <config.h> if HAVE_CONFIG_H.
2707
2708 * read.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
2709
2710 * rdelim.c: #include <config.h> if HAVE_CONFIG_H.
2711
2712 * random.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
2713 of LONG32, LONG64, SIZEOF_LONG, and HAVE_LONG_LONGS with
2714 scm_t_int32, scm_t_int64, and SCM_HAVE_T_INT64. Rename usage of
2715 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
2716
2717 * ramap.c: replace usage of HAVE_LONG_LONGS with
2718 "SCM_SIZEOF_LONG_LONG != 0".
2719
2720 * putenv.c: #include <config.h> if HAVE_CONFIG_H. #include
2721 "libguile/scmconfig.h".
2722
2723 * pthread-threads.c: #include <config.h> if HAVE_CONFIG_H.
2724
2725 * print.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
2726 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
2727
2728 * posix.c: #include <config.h> if HAVE_CONFIG_H.
2729
2730 * ports.c: #include <config.h> if HAVE_CONFIG_H.
2731
2732 * objects.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
2733
2734 * numbers.h: replace usage of HAVE_FLOATINGPOINT_H with
2735 SCM_HAVE_FLOATINGPOINT_H. Replace usage of HAVE_IEEEFP_H with
2736 SCM_HAVE_IEEEFP_H. Replace usage of HAVE_NAN_H with
2737 SCM_HAVE_NAN_H. Replace usage of STDC_HEADERS with
2738 SCM_HAVE_STDC_HEADERS. Replace usage of ptrdiff_t with
2739 scm_t_ptrdiff. Replace usage of HAVE_LONG_LONGS with
2740 "SCM_SIZEOF_LONG_LONG != 0".
2741
2742 * numbers.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
2743 of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0". Replace
2744 usage of ptrdiff_t with scm_t_ptrdiff. Replace usage of
2745 SIZEOF_PTRDIFF_T with SCM_SIZEOF_SCM_T_PTRDIFF.
2746
2747 * num2integral.i.c: #include <config.h> if HAVE_CONFIG_H.
2748
2749 * null-threads.h: replace usage of struct timespect with
2750 scm_t_timespec.
2751
2752 * net_db.c: #include <config.h> if HAVE_CONFIG_H.
2753
2754 * mkstemp.c: #include <config.h> if HAVE_CONFIG_H. #include
2755 "libguile/__scm.h". Remove definition of gcc_uint64_t in favor of
2756 scm_t_uint64 and rename usages.
2757
2758 * mallocs.c: #include <config.h> if HAVE_CONFIG_H.
2759
2760 * load.c: #include <config.h> if HAVE_CONFIG_H.
2761
2762 * iselect.h: move handling of time related headers to scmconfig.h.
2763 Rename usage of HAVE_SYS_SELECT_H to SCM_HAVE_SYS_SELECT_H.
2764 Rename usage of HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Rename
2765 usage of USE_COOP_THREADS to SCM_USE_COOP_THREADS.
2766
2767 * iselect.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
2768 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
2769 USE_NULL_THREADS to SCM_USE_NULL_THREADS.
2770
2771 * ioext.c: #include <config.h> if HAVE_CONFIG_H.
2772
2773 * inline.h: #include "libguile/__scm.h" at the top. Change code
2774 to use SCM_C_INLINE and SCM_INLINE_C_INCLUDINT_INLINE_H to decide
2775 what to do instead of creating a new public #define. Rename usage
2776 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
2777 USE_NULL_THREADS to SCM_USE_NULL_THREADS. Rename usage of
2778 USE_COPT_THREADS to SCM_USE_COPT_THREADS.
2779
2780 * inline.c: rearrange handling -- now we just #define
2781 SCM_INLINE_C_INCLUDING_INLINE_H to 1 and #include
2782 "libguile/inline.h". scmconfig.h will define SCM_C_INLINE as
2783 appropriate, and we use that in inline.h along with the above
2784 define to determine how to respond.
2785
2786 * init.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
2787 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
2788
2789 * guile.c: #include <config.h> if HAVE_CONFIG_H.
2790
2791 * gh_data.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
2792 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
2793
2794 * gh.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
2795
2796 * gen-scmconfig.h.in: new file -- see gen-scmconfig.c for details.
2797
2798 * gen-scmconfig.c: new file -- see comments in file for details.
2799
2800 * gdbinit.c: #include <config.h> if HAVE_CONFIG_H.
2801
2802 * gc_os_dep.c: #include <config.h> if HAVE_CONFIG_H. Replace
2803 usage of STACK_GROWS_UP with SCM_STACK_GROWS_UP.
2804
2805 * gc.h: replace usage of SIZEOF_LONG with
2806 SCM_SIZEOF_UNSIGNED_LONG. Replace usage of USE_PTHREAD_THREADS
2807 with SCM_USE_PTHREAD_THREADS. Remove SCM_SIZEOF_LONG definition
2808 since we handle that in scmconfig.h now.
2809
2810 * gc.c: #include <config.h> if HAVE_CONFIG_H.
2811
2812 * gc-mark.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
2813 of HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of
2814 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
2815
2816 * gc-malloc.c: #include <config.h> if HAVE_CONFIG_H.
2817
2818 * gc-card.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
2819 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
2820
2821 * fports.c: #include <config.h> if HAVE_CONFIG_H.
2822
2823 * filesys.c: #include <config.h> if HAVE_CONFIG_H.
2824
2825 * feature.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
2826 of USE_NULL_THREADS to SCM_USE_NULL_THREADS.
2827
2828 * extensions.c: #include <config.h> if HAVE_CONFIG_H.
2829
2830 * evalext.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
2831 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
2832
2833 * eval.c: #include <config.h> if HAVE_CONFIG_H. #include
2834 "libguile/__scm.h" rather than scmconfig.h. Rename usage of
2835 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
2836 with "SCM_SIZEOF_LONG_LONG != 0".
2837
2838 * error.c: #include <config.h> if HAVE_CONFIG_H.
2839
2840 * eq.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
2841 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
2842 with "SCM_SIZEOF_LONG_LONG != 0".
2843
2844 * deprecation.c: #include <config.h> if HAVE_CONFIG_H.
2845
2846 * coop.c: replace usage of struct timespect with scm_t_timespec.
2847 #include <config.h> if HAVE_CONFIG_H.
2848
2849 * coop-threads.c: #include "libguile/_scm.h" early. Replace
2850 usage of struct timespect with scm_t_timespec. Replace usage of
2851 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
2852
2853 * coop-pthreads.c: #include "libguile/_scm.h" early. Replace
2854 usage of struct timespect with scm_t_timespec. Replace usage of
2855 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
2856
2857 * coop-defs.h: move handling of time related headers to
2858 scmconfig.h. Add #include "libguile/__scm.h". Rename usage of
2859 HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Replace usage of struct
2860 timespect with scm_t_timespec.
2861
2862 * convert.i.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
2863
2864 * convert.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
2865
2866 * convert.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
2867 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
2868
2869 * continuations.c: move libguile/_scm.h include to the top so we
2870 pick up any critical defines like _GNU_SOURCE early.
2871
2872 * backtrace.c: #include <config.h> if HAVE_CONFIG_H.
2873
2874 * async.c: #include <config.h> if HAVE_CONFIG_H.
2875
2876 * alloca.c: #include <config.h> if HAVE_CONFIG_H.
2877
2878 * _scm.h: #include <config.h> if HAVE_CONFIG_H.
2879 Rename usage of USE_PTHREAD_THREADS to SCM_USE_PTHREAD_THREADS.
2880
2881 * __scm.h: move libguile/scmconfig.h include up to the top, so
2882 we're sure to pick up any critical defines like _GNU_SOURCE early.
2883 #include <limits.h> removed in favor of scmconfig.h inclusion when
2884 appropriate. STDC_HEADERS based inclusion of stdlib.h,
2885 sys/types.h, stddef.h, and sys/stdtypes.h removed in favor of
2886 scmconfig.h inclusion when appropriate. Various Win32 related
2887 definitions removed in favor of scmconfig.h inclusion when
2888 appropriate.
2889 (HAVE_UINTPTR_T): definition removed (see NEWS).
2890 (SIZEOF_PTRDIFF_T): definition removed (see NEWS).
2891 (HAVE_LONG_LONGS): definition removed (see NEWS).
2892 (HAVE_LONG_LONG): definition removed (see NEWS).
2893 (HAVE_PTRDIFF_T): definition removed (see NEWS).
2894
2895 * Makefile.am: scmconfig.h is now generated by building and
2896 running gen-scmconfig.h and capturing its output. gen-scmconfig
2897 uses config.h and the configure.in generated gen-scmconfig.h to
2898 decide what to output. See gen-scmconfig.c for details.
2899 (noinst_PROGRAMS): add gen-scmconfig.
2900 (gen_scmconfig_SOURCES): new variable.
2901 (gen-scmconfig.$(OBJEXT)): new target - be careful to handle
2902 cross-compiling right.
2903 (scmconfig.h): build scmconfig.h from gen-scmconfig's output.
2904 (BUILT_SOURCES): add scmconfig.h.
2905
2906 2003-03-19 Marius Vollmer <mvo@zagadka.de>
2907
2908 * gc_os_dep.c: Added defines for sparc-unknown-netbsdelf1.5 from
2909 Adrian Bunk. Thanks!
2910
2911 2003-03-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2912
2913 * goops.c (make_class_from_template): New fourth arg:
2914 applicablep.
2915 (scm_class_extended_generic_with_setter, scm_class_self): Fixed
2916 cpls.
2917
2918 * smob.c (scm_set_smob_apply): Call scm_i_inherit_applicable.
2919
2920 * goops.c, objects.c, objects.h (scm_make_extended_class): New
2921 second arg: applicablep.
2922 (scm_i_inherit_applicable): New function.
2923
2924 * goops.c, goops.h (scm_class_applicable,
2925 scm_class_extended_accessor): New classes.
2926
2927 2003-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
2928
2929 * procs.c (scm_procedure_documentation): Removed redundant
2930 SCM_NIMP test and replaced other calls to SCM_IMP by more explicit
2931 predicates.
2932
2933 2003-03-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2934
2935 * list.c, list.h (scm_filter, scm_filter_x): New functions.
2936
2937 * modules.c (scm_module_import_interface): New function.
2938
2939 * goops.c, goops.h (scm_class_accessor_method): Renamed from
2940 scm_class_accessor.
2941 (scm_class_accessor): New class.
2942
2943 2003-03-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2944
2945 * goops.c (scm_primitive_generic_generic): Enable primitive
2946 generic if not enabled.
2947 (scm_sys_goops_loaded): Setup unextended primitive generics.
2948
2949 * goops.c, goops.h (scm_c_extend_primitive_generic): New function.
2950
2951 * snarf.h (SCM_PRIMITIVE_GENERIC, SCM_PRIMITIVE_GENERIC_1): New
2952 snarf macros.
2953
2954 * numbers.c (scm_abs): Use SCM_PRIMITIVE_GENERIC. (This is only a
2955 testing example. All uses of SCM_GPROC should be converted.)
2956
2957 * procprop.c (scm_stand_in_scm_proc): Use scm_assq instead of
2958 scm_assoc.
2959
2960 * eq.c (scm_equal_p): Turned into a primitive generic.
2961
2962 2003-02-27 Rob Browning <rlb@defaultvalue.org>
2963
2964 * Makefile.am (scmconfig.h): new target -- generate file from
2965 ../config.h.
2966 (modinclude_HEADERS): remove version.h.
2967 (nodist_modinclude_HEADERS): add version.h.
2968
2969 2003-02-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2970
2971 This fixes a serious GC bug, introduced during the latest
2972 reorganization of the GC, which disabled freeing of structs and
2973 GOOPS objects:
2974
2975 * struct.c (scm_struct_prehistory): Init scm_i_structs_to_free to
2976 SCM_EOL.
2977 (scm_struct_prehistory): Move scm_free_structs to
2978 scm_before_mark_c_hook.
2979
2980 * gc-card.c (sweep_card): Check that we haven't swept structs on
2981 this card before. That can happen if scm_i_sweep_all_segments has
2982 been called from some other place than scm_igc.
2983
2984 2003-02-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2985
2986 * environments.c (DEFAULT_OBARRAY_SIZE): Changed from 137 to 31
2987 (since hash tables now adapt their size).
2988
2989 * modules.c (scm_modules_prehistory): Changed from 2001 to 1533
2990 (current number of prehistory bindings; hashtable code will select
2991 a prime which is greater than this value).
2992
2993 * symbols.c (scm_symbols_prehistory): Changed from 1009 to 2139
2994 (current number of initial symbols).
2995
2996 * properties.c (scm_init_properties): Don't specify size of
2997 scm_properties_whash.
2998
2999 * objprop.c (scm_init_objprop): Don't specify size of
3000 scm_object_whash.
3001
3002 * keywords.c (scm_init_keywords): Don't specify a hash table size.
3003
3004 * hooks.c (scm_c_hook_add): Fixed bug in append mode.
3005
3006 The following changes introduce the use of resizable hash tables
3007 throughout Guile. It also renames the old *-hash-table* functions
3008 to *-alist-vector* and places them, together with the rest of the
3009 weak vector support, in the module (ice-9 weak-vector). We should
3010 probably introduce a new, better, API for weak references, for
3011 example "weak pairs" a la MIT-Scheme. (In Chez scheme, they even
3012 look like and are used like ordinary pairs.)
3013
3014 * environments.c (obarray_enter, obarray_retrieve, obarray_remove,
3015 leaf_environment_fold, obarray_remove_all): Use hashtable
3016 accessors.
3017
3018 * gc.c (scm_init_storage): Moved hook initialization to
3019 scm_storage_prehistory.
3020 (scm_storage_prehistory): New function.
3021 (scm_igc): Added commentary about placement of
3022 scm_after_sweep_c_hook.
3023
3024 * gc-mark.c (scm_mark_all): Use hashtable accessors.
3025 (scm_gc_mark_dependencies): Use SCM_WVECT_WEAK_KEY_P and
3026 SCM_WVECT_WEAK_VALUE_P.
3027
3028 * hashtab.c, hashtab.h (scm_hash_for_each, scm_hash_map): New
3029 functions.
3030 (scm_vector_to_hash_table, scm_c_make_resizing_hash_table):
3031 Removed.
3032 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table,
3033 scm_make_doubly_weak_hash_table): Moved here from weaks.c.
3034
3035 * init.c (scm_init_guile_1): Removed call to scm_init_weaks; Added
3036 calls to scm_storage_prehistory and scm_hashtab_prehistory.
3037
3038 * modules.c (module-reverse-lookup): Use hashtable accessors.
3039
3040 * symbols.c, symbols.h (scm_i_hash_symbol): New function.
3041
3042 * weaks.c, weaks.h (scm_make_weak_key_alist_vector,
3043 scm_make_weak_value_alist_vector,
3044 scm_make_doubly_weak_alist_vector): New functions.
3045
3046 * weaks.c (scm_init_weaks_builtins): New function.
3047
3048 * weaks.h (SCM_WVECTF_WEAK_KEY, SCM_WVECTF_WEAK_VALUE,
3049 SCM_WVECTF_NOSCAN, SCM_WVECT_WEAK_KEY_P, SCM_WVECT_WEAK_VALUE_P,
3050 SCM_WVECT_NOSCAN_P): New macros.
3051
3052 * weaks.c (scm_scan_weak_vectors): Use SCM_WVECT_WEAK_KEY_P
3053 and SCM_WVECT_WEAK_VALUE_P.
3054
3055 * weaks.c, weaks.h (scm_i_allocate_weak_vector): Renamed from
3056 allocate_weak_vector and exported.
3057
3058 2003-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
3059
3060 * hashtab.c: Undid thread safety. (We decided that it's better to
3061 let the user explicitly protect the tables (or not) according what
3062 is suitable for the application.)
3063
3064 2003-02-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
3065
3066 * hashtab.c (scm_hash_fn_remove_x, scm_internal_hash_fold): Made
3067 thread safe and handle resizing tables.
3068 (scm_ihashx, scm_sloppy_assx, scm_delx_x): Removed
3069 SCM_DEFER/ALLOW_INTS.
3070
3071 2003-02-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
3072
3073 * hashtab.c (scm_vector_to_hash_table,
3074 scm_c_make_resizing_hash_table, scm_make_hash_table): New
3075 functions.
3076 (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x): Made thread
3077 safe and handle resizing tables.
3078
3079 * weaks.c (scm_make_weak_key_hash_table,
3080 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
3081 Size argument made optional. Return resizable table if not
3082 specified.
3083
3084 2003-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
3085
3086 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
3087 Fixed formals tests for closures. (Thanks to Kevin Ryde.)
3088
3089 2003-02-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
3090
3091 * debug.c (scm_procedure_source): Handle all objects for which
3092 procedure? is #t. (Thanks to Bill Schottstaedt.)
3093
3094 2003-01-23 Mikael Djurfeldt <djurfeldt@nada.kth.se>
3095
3096 * futures.c (mark_futures): Don't need to mark data of recycled
3097 futures.
3098 (scan_futures, cleanup_undead): Be smarter about marking
3099 futures---avoid unnecessary passes through future lists.
3100
3101 * futures.h, futures.c: New files; Introduced recycling of
3102 futures. For fine-grained threading this lifts performance to
3103 another level. We can now use parallelization in inner loops of
3104 Guile programs without impossible overhead.
3105
3106 * threads.h, threads.c: Moved futures to their own file.
3107
3108 * Makefile.am (libguile_la_SOURCES): Added futures.c.
3109 (DOT_X_FILES): Added futures.x.
3110 (DOT_DOC_FILES): Added futures.doc.
3111 (modinclude_HEADERS): Added futures.h.
3112
3113 * threads.c, threads.h (scm_i_create_thread): Renamed from
3114 create_thread and made global.
3115
3116 * futures.c (scm_make_future): New procedure.
3117
3118 * eval.c: #include "libguile/futures.h".
3119
3120 * init.c: #include "futures.h"
3121 (scm_init_guile_1): Call scm_init_futures.
3122
3123 * stime.c (SCM_TIME_UNITS_PER_SECOND): Renamed from CLKTCK.
3124
3125 * stime.h (SCM_TIME_UNITS_PER_SECOND): Definition moved here.
3126
3127 * eval.c, eval.h (scm_trampoline_0, scm_i_call_closure_0): New
3128 functions.
3129
3130 * eval.c (scm_trampoline_1): Fixed arguments test for closures.
3131
3132 2003-01-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
3133
3134 * threads.c (create_thread): Don't unwind dynwind chain of parent
3135 thread before creation. Just start the new thread with an empty
3136 dynwind chain.
3137
3138 2003-01-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
3139
3140 * evalext.c, evalext.h (scm_self_evaluating_p): New function.
3141
3142 2003-01-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
3143
3144 * threads.c (scm_timed_wait_condition_variable): Support timed
3145 waiting also for simple condition variables.
3146
3147 * goops.c (TEST_CHANGE_CLASS): Use scm_change_object_class instead
3148 of calling the procedure change-object-class.
3149
3150 2003-01-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
3151
3152 * ramap.c (scm_ramapc): Typo in error message.
3153
3154 2003-01-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
3155
3156 * goops.c (scm_sys_prep_layout_x): Bugfix: Only create layout for
3157 slots with instance allocation.
3158
3159 * goops.c, goops.h (scm_class_extended_generic_with_setter): New
3160 class.
3161 (scm_compute_applicable_methods): Use scm_generic_function_methods.
3162
3163 * goops.c (scm_generic_function_methods): Support extended
3164 generic functions.
3165
3166 2002-12-29 Mikael Djurfeldt <djurfeldt@nada.kth.se>
3167
3168 * eval.c (unmemocopy): Bugfix: scm_sym_delay --> scm_sym_future.
3169 Thanks to Neil for pointing this out!
3170
3171 2002-12-29 Neil Jerram <neil@ossau.uklinux.net>
3172
3173 * lang.h: Remove declarations matching definitions removed from
3174 lang.c (just below).
3175
3176 2002-12-28 Neil Jerram <neil@ossau.uklinux.net>
3177
3178 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
3179 scm_m_while, scm_nil_eq): Remove definitions that were superfluous
3180 and already commented out.
3181
3182 * read.h (scm_lreadparen), read.c (scm_lreadr, scm_read_token,
3183 scm_lreadparen): Support reading vectors with Elisp syntax if
3184 SCM_ELISP_READ_EXTENSIONS is defined. (SCM_ELISP_READ_EXTENSIONS
3185 is not currently defined, and there isn't even a configure switch
3186 to enable it yet.)
3187
3188 2002-12-26 Marius Vollmer <mvo@zagadka.ping.de>
3189
3190 * Makefile.am (c-tokenize.o): Refer to source via $< so that vpath
3191 builds work.
3192 (EXTRA_DIST): Added version.h.in.
3193
3194 2002-12-21 Mikael Djurfeldt <djurfeldt@nada.kth.se>
3195
3196 This change makes it possible for one thread to do lazy sweeping
3197 while other threads are running. Now only the mark phase need to
3198 have all threads asleep. We should look further into this issue.
3199 Presently, I've put the locking of scm_i_sweep_mutex at
3200 "conservative" places due to my current lack of knowledge about
3201 the garbage collector. Please feel free to restrict these regions
3202 further to allow for maximal parallelism!
3203
3204 * gc.c, gc.h (scm_i_sweep_mutex): New mutex.
3205
3206 * gc.c (scm_gc_for_newcell), gc-malloc.c (scm_realloc,
3207 scm_gc_register_collectable_memory): Substitute locking of
3208 scm_i_sweep_mutex for calls to scm_i_thread_put_to_sleep.
3209 (scm_igc): Lock sweep mutex here instead of in callers; Calls to
3210 scm_i_thread_put_to_sleep/scm_i_thread_wake_up used to demarkate
3211 the single-thread section (which now only contains the mark
3212 phase).
3213 (scm_gc): Don't lock sweeo mutex here since scm_igc locks it;
3214 Removed SCM_DEFER/ALLOW_INTS. Simply call scm_igc directly.
3215
3216 * threads.c (gc_section_mutex): Removed.
3217
3218 2002-12-19 Mikael Djurfeldt <mdj@kvast.blakulla.net>
3219
3220 * threads.c (create_thread): Clear parent field in root state in
3221 order not to unnecessarily remember dead threads.
3222
3223 * eval.c (call_subr2o_1, call_lsubr2_2): New functions.
3224 (scm_trampoline_1, scm_trampoline_2): Use them.
3225
3226 2002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
3227
3228 Partial introduction of real plugin interface.
3229
3230 * Makefile.am (modinclude_HEADERS): Added threads-plugin.h.
3231 (EXTRA_DIST): Added threads-plugin.c.
3232
3233 * threads-plugin.h, threads-plugin.c: New files.
3234
3235 * threads.h: #include "libguile/threads-plugin.h".
3236
3237 * threads.c: #include "libguile/threads-plugin.c".
3238
3239 * pthread-threads.c: Temporarily remove debugging functions.
3240
3241 * threads.c, threads.h (scm_yield): Added back.
3242
3243 2002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
3244
3245 * threads.c (really_launch): Detach before unlocking
3246 thread_admin_mutex in order not to risk being joined.
3247 (scm_i_thread_put_to_sleep, scm_i_thread_wake_up): Keep
3248 thread_admin_mutex locked during GC.
3249
3250 * pthread-threads.c, pthread-threads.h: Improvements to debugging
3251 functions.
3252
3253 2002-12-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
3254
3255 * pthread-threads.c, pthread-threads.h (SCM_DEBUG_THREADS): Added
3256 support for debugging mutex operations.
3257
3258 * threads.c (scm_thread): Removed filed joining_threads.
3259 (thread_print): Print thread number as well as address of thread
3260 structure.
3261 (scm_join_thread): Bugfix.
3262 (scm_lock_mutex, scm_try_mutex, scm_unlock_mutex,
3263 scm_timed_wait_condition_variable, scm_signal_condition_variable,
3264 scm_broadcast_condition_variable): Use the low-level API.
3265 (scm_all_threads): Return copy of thread list (to prevent
3266 unintended destruction).
3267 (scm_threads_prehistory): Initialize heap_mutex of fake thread.
3268
3269 * pthread-threads.c, pthread-threads.h, threads.c: Fixes to
3270 pthread "native" recursive mutex support.
3271
3272 2002-12-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
3273
3274 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): New definitions.
3275 Simply lock a thread C API recursive mutex.
3276 (SCM_NONREC_CRITICAL_SECTION_START,
3277 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
3278 SCM_REC_CRITICAL_SECTION_END): Removed.
3279
3280 * eval.c: Replaced SOURCE_SECTION_START / SOURCE_SECTION_END with
3281 direct calls to scm_rec_mutex_lock / unlock around the three calls
3282 to scm_m_expand_body.
3283
3284 * eval.c, eval.h (promise_free): New function.
3285 (scm_force): Rewritten; Now thread-safe; Removed
3286 SCM_DEFER/ALLOW_INTS.
3287
3288 * pthread-threads.h: Added partially implemented plugin interface
3289 for recursive mutexes. These are, for now, only intended to be
3290 used internally within the Guile implementation.
3291
3292 * pthread-threads.c: New file.
3293
3294 * threads.c: Conditionally #include "pthread-threads.c".
3295
3296 * eval.c, eval.h (scm_makprom, scm_force): Rewritten to be
3297 thread-safe;
3298
3299 * snarf.h (SCM_MUTEX, SCM_GLOBAL_MUTEX, SCM_REC_MUTEX,
3300 SCM_GLOBAL_REC_MUTEX): New macros.
3301
3302 * eval.c, threads.c, threads.h, snarf.h: Rewrote critical section
3303 macros---use mutexes instead.
3304
3305 * tags.h (SCM_IM_FUTURE): New tag.
3306
3307 * eval.c (scm_m_future): New primitive macro.
3308 (SCM_CEVAL): Support futures.
3309 (unmemocopy): Support unmemoization of futures.
3310
3311 * print.c (scm_isymnames): Name of future isym.
3312
3313 * version.c: Unmade some changes to my private copy that got
3314 committed by mistake.
3315
3316 2002-12-11 Mikael Djurfeldt <mdj@kvast.blakulla.net>
3317
3318 * gc-malloc.c, gc.h, init.c: Reverted gc-malloc change of
3319 2002-12-10.
3320
3321 * gc.c (scm_igc): Don't call scm_i_thread_invalidate_freelists.
3322
3323 * gc.c (scm_gc_sweep): Call it here instead, which is a more
3324 logical place.
3325
3326 * threads.c (create_thread): Remember root object until the handle
3327 of the new thread is on all_threads list.
3328
3329 * root.c (scm_make_root): Moved copying of fluids until after
3330 creation of root handle so that the fluids are GC protected. Also
3331 removed the critical section.
3332
3333 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
3334
3335 * gc-malloc.c, gc.h (scm_gc_malloc_prehistory): New function.
3336
3337 * gc-malloc.c (malloc_mutex): New mutex.
3338 (scm_gc_malloc_prehistory): Initialize it.
3339 (scm_realloc): Serialize call to realloc
3340 (scm_calloc): Same for calloc.
3341 Thanks to Wolfgang Jaehrling!
3342 (Now we have to make sure all calls to malloc/realloc are made
3343 through scm_malloc.)
3344
3345 * init.c (scm_init_guile_1): Call scm_gc_malloc_prehistory.
3346
3347 * threads.c (really_launch): Release heap (to prevent deadlock).
3348 (create_thread): Release heap before locking thread admin mutex.
3349
3350 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
3351
3352 * threads.c (scm_i_thread_invalidate_freelists): New
3353 function.
3354
3355 * gc.c (scm_igc): Call scm_i_thread_invalidate_freelists.
3356
3357 * modules.c (scm_export): Inserted a return statement.
3358
3359 2002-12-10 Han-Wen Nienhuys <hanwen@cs.uu.nl>
3360
3361 * modules.c (scm_export): new function
3362
3363 * gc-card.c: add a note about malloc()/free() overhead.
3364
3365 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
3366
3367 * Makefile.am (c-tokenize.$(OBJEXT)): Don't look for c-tokenize.c
3368 in srcdir.
3369
3370 2002-12-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
3371
3372 These changes remove scm_ints_disabled (which hasn't has any
3373 effect in Guile for quite some time).
3374
3375 * async.c, error.h (scm_ints_disabled): Removed.
3376
3377 * gc.c (scm_gc_for_newcell), init.c (scm_init_guile_1),
3378 root.c (scm_internal_cwdr), gdbint.c (SCM_BEGIN_FOREIGN_BLOCK,
3379 SCM_END_FOREIGN_BLOCK): Don't touch scm_ints_disabled.
3380 (old_ints): Removed.
3381
3382 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Define as a recursive
3383 critical section.
3384 (SCM_REDEFER_INTS, SCM_ALLOW_INTS): Define as SCM_DEFER_INTS and
3385 SCM_ALLOW_INTS.
3386
3387 2002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
3388
3389 * threads.c (scm_mutex_lock, scm_cond_wait, scm_cond_timedwait):
3390 Removed accidental #if 0 around these functions.
3391
3392 These changes are the start of support for preemptive
3393 multithreading. Marius and I have agreed that I commit this code
3394 into the repository although it isn't thoroughly tested and surely
3395 introduces many bugs. The bugs should only be exposed when using
3396 threads, though. Signalling and error handling for threads is
3397 very likely broken. Work on making the implementation cleaner and
3398 more efficient is needed.
3399
3400 * __scm.h (SCM_ALLOW_INTS_ONLY): Removed.
3401 (SCM_NONREC_CRITICAL_SECTION_START,
3402 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
3403 SCM_REC_CRITICAL_SECTION_END): New macros.
3404 (SCM_CRITICAL_SECTION_START/END): Defined here.
3405
3406 * eval.c: Insert SOURCE_SECTION_START / SOURCE_SECTION_END around
3407 the three calls to scm_m_expand_body.
3408
3409 * gc.h: #include "libguile/pthread-threads.h";
3410 (SCM_FREELIST_CREATE, SCM_FREELIST_LOC): New macros.
3411
3412 * gc.c (scm_i_freelist, scm_i_freelist2): Defined to be of type
3413 scm_t_key;
3414
3415 * gc.c, gc-freelist.c, inline.h: Use SCM_FREELIST_LOC for freelist
3416 access.
3417
3418 * gc-freelist.c (scm_gc_init_freelist): Create freelist keys.
3419
3420 * gc-freelist.c, threads.c (really_launch): Use
3421 SCM_FREELIST_CREATE.
3422
3423 * gc-malloc.c (scm_realloc, scm_gc_register_collectable_memory):
3424
3425 * gc.c (scm_i_expensive_validation_check, scm_gc,
3426 scm_gc_for_newcell): Put threads to sleep before doing GC-related
3427 heap administration so that those pieces of code are executed
3428 single-threaded. We might consider rewriting these code sections
3429 in terms of a "call_gc_code_singly_threaded" construct instead of
3430 calling the pair of scm_i_thread_put_to_sleep () and
3431 scm_i_thread_wake_up (). Also, we would want to have as many of
3432 these sections eleminated.
3433
3434 * init.c (scm_init_guile_1): Call scm_threads_prehistory.
3435
3436 * inline.h: #include "libguile/threads.h"
3437
3438 * pthread-threads.h: Macros now conform more closely to the
3439 pthreads interface. Some of them now take a second argument.
3440
3441 * threads.c, threads.h: Many changes.
3442
3443 2002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
3444
3445 * Makefile.am (version.h): Changed $^ --> $< in rule for
3446 version.h.
3447
3448 2002-12-08 Rob Browning <rlb@defaultvalue.org>
3449
3450 * version.h.in (SCM_MICRO_VERSION): use @--@ substitution now.
3451 (SCM_MINOR_VERSION): use @--@ substitution now.
3452 (SCM_MICRO_VERSION): use @--@ substitution now.
3453 (scm_effective_version): new function prototype.
3454
3455 * version.c (scm_effective_version): new function, also add
3456 effective-version.
3457
3458 * Makefile.am (schemelibdir): VERSION -> GUILE_EFFECTIVE_VERSION.
3459 (libpath.h): use GUILE_EFFECTIVE_VERSION to compute
3460 SCM_LIBRARY_DIR.
3461 (version.h): generate this here rather than configure.in. This
3462 approach tracks source edits better (i.e. more immediately).
3463 Might be worth considering for other .in files too.
3464
3465 2002-12-02 Marius Vollmer <mvo@zagadka.ping.de>
3466
3467 Reorganized thread package selection. A thread package now only
3468 implements a small set of pthread like functions and Guile
3469 implements the rest on top of that. Guile's implementation is
3470 what the "coop-pthreads" package has been previously. Support for
3471 "coop" threads has been removed until I get time to add it again.
3472
3473 * Makefile.am (libguile_la_SOURCES): Removed iselect.c.
3474 (noinst_HEADERS): Removed coop-threads.c, coop-threads.h, coop.c,
3475 null-threads.c, coop-pthreads.c.
3476 (modinclude_HEADERS): Removed coop-defs.h, coop-pthreads.h. Added
3477 pthread-threads.h.
3478
3479 * validate.h (SCM_VALIDATE_THREAD): Moved to threads.h.
3480
3481 * threads.h: Do not include "libguile/coop-defs.h". Include
3482 "libguile/pthread-threads.h" for USE_COPT_THREADS. Removed
3483 (previously deprecated) C level thread API prototypes. They are
3484 now in the thread package specific headers, "null-threads.h" and
3485 "pthread-threads.h".
3486 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
3487 New.
3488 (scm_threads_init): Removed.
3489 (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END,
3490 SCM_THREAD_SWITCHING_CODE, scm_i_switch_counter,
3491 SCM_I_THREAD_SWITCH_COUNT): Define here.
3492 (scm_single_thread_p): Removed.
3493 (scm_call_with_new_thread): Take two args directly instead of list
3494 of two args.
3495 (scm_i_thread_data, scm_i_set_thread_data, SCM_THREAD_LOCAL_DATA,
3496 SCM_SET_THREAD_LOCAL_DATA): Define here.
3497
3498 * threads.c: Merged with "coop-pthreads.c".
3499
3500 * null-threads.h: Implement pthread-like API as a set of macros.
3501
3502 * pthread-threads.h: New, implement pthread-like API by deferring
3503 to pthread itself.
3504
3505 * init.c (scm_init_guile_1): Do not call scm_init_iselect, which
3506 has been lost in the reorganization.
3507
3508 2002-12-01 Mikael Djurfeldt <mdj@linnaeus>
3509
3510 The following change makes it possible to move procedure
3511 application dispatch outside inner loops. The motivation was
3512 clean implementation of efficient replacements of R5RS primitives
3513 in SRFI-1.
3514
3515 The semantics is clear: scm_trampoline_N returns an optimized
3516 version of scm_call_N (or NULL if the procedure isn't applicable
3517 on N args).
3518
3519 Applying the optimization to map and for-each increases efficiency
3520 noticeably. For example, (map abs ls) is 8 times faster than
3521 before.
3522
3523 * eval.h (scm_t_trampoline_1, scm_t_trampoline_2): New types.
3524
3525 * eval.c, eval.h (scm_trampoline_1, scm_trampoline_2): New functions.
3526
3527 * eval.c (call_subr2_2, call_lsubr_2, call_closure_2): New functions;
3528 (map, for-each): Handle also application on two args as a special
3529 case; Use trampolines.
3530
3531 Other changes:
3532
3533 * sort.c (scm_cmp_function): Choose subr2less for scm_tc7_subr_2o;
3534 (subr2oless): Removed.
3535 (scm_restricted_vector_sort_x): Use scm_return_first to keep the
3536 vector GC protected.
3537
3538 * eval.c (check_map_args): Use scm_out_of_range_pos instead of
3539 scm_out_of_range.
3540
3541 2002-11-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
3542
3543 * evalext.[ch] (scm_m_undefine, undefine): Deprecated.
3544
3545 2002-11-17 Mikael Djurfeldt <mdj@linnaeus>
3546
3547 * debug.c (scm_make_iloc): Added missing "return".
3548
3549 2002-11-17 Marius Vollmer <mvo@zagadka.ping.de>
3550
3551 * strports.c (scm_eval_string_in_module): Validate second arg to
3552 be a module. Thanks to Arno Peters!
3553
3554 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
3555
3556 * .cvsignore: remove goops.c
3557
3558 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
3559
3560 * modules.c (scm_env_top_level, scm_lookup_closure_module,
3561 module_variable, scm_module_lookup_closure,
3562 scm_module_transformer, scm_sym2var, scm_module_reverse_lookup,
3563 scm_system_module_env_p): Don't compare SCM values with C
3564 operators == or !=. Avoid SCM_IMP predicates. Prefer !SCM_FALSEP
3565 over SCM_NFALSEP.
3566
3567 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
3568
3569 * eval.h (SCM_MAKE_ILOC): New macro.
3570
3571 * debug.c (scm_make_iloc): Use SCM_MAKE_ILOC instead of computing
3572 the iloc bitpattern here.
3573
3574 2002-11-14 Mikael Djurfeldt <mdj@linnaeus>
3575
3576 * coop-pthreads.c, coop-pthreads.h: scm_internal_select should be
3577 part of the API, otherwise it's difficult to write Guile
3578 extensions using non-blocking I/O => moved #include
3579 "libguile/iselect.h" from coop-pthreads.c --> coop-pthreads.h.
3580
3581 * coop-pthreads.c (scm_unlock_mutex): Changed s_lock_mutex -->
3582 s_unlock_mutex.
3583
3584 2002-11-10 Marius Vollmer <mvo@zagadka.ping.de>
3585
3586 * __scm.h (USE_THREADS, GUILE_ISELECT): Do not define here. They
3587 are defined in configure.in.
3588
3589 * threads.c: Removed SCM_API from function definitions. SCM_API
3590 is only for declarations.
3591
3592 2002-11-07 Mikael Djurfeldt <mdj@linnaeus>
3593
3594 * coop-pthreads.h: Added support for thread specific data to the
3595 generic C API for the coop-pthreads case.
3596
3597 * threads.c, threads.h (scm_cond_init): Undo unintentional API
3598 change.
3599 (scm_cond_broadcast): Added missing function.
3600
3601 2002-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3602
3603 * coop.c (coop_next_runnable_thread): Removed, wich should have
3604 happened when GUILE_ISELECT was hard-wired.
3605
3606 2002-11-03 Marius Vollmer <mvo@zagadka.ping.de>
3607
3608 * Makefile.am (libguile_la_SOURCES): Added threads.c
3609 (DOT_DOC_FILES): Added threads.doc.
3610 (DOT_X_FILES): Added threads.x.
3611 (EXTRA_libguile_la_SOURCES): Removed threads.c.
3612 (noinst_HEADERS): Added coop-pthreads.c.
3613 (modinclude_HEADERS): Added coop-pthreads.h.
3614
3615 * __scm.h (USE_THREADS, GUILE_ISELECT): Define when
3616 SCM_DEBUG_DEPRECATED. Removed their use thru-out Guile.
3617
3618 * iselect.c: Include "_scm.h" before testing HAVE_UNISTD_H.
3619 Thanks to Bill Schottstaedt!
3620
3621 * numbers.c (scm_integer_expt): Make 0^z == 0 for z != 0.
3622
3623 * _scm.h (HAVE_RESTARTABLE_SYSCALLS): Do define even when
3624 SCM_COPT_THREADS is defined.
3625 (SCM_SYSCALL): Use EINTR-expection version when SCM_COPT_THREADS
3626 is defined.
3627
3628 * coop-pthreads.c: Some harmless renamings of internal stuff.
3629 (create_thread): New, generalized version of
3630 scm_call_with_new_thread.
3631 (scm_call_with_new_thread): Use it.
3632 (scm_spawn_thread): New, use create_thread.
3633
3634 2002-11-02 Marius Vollmer <mvo@zagadka.ping.de>
3635
3636 * coop-pthreads.c, coop-pthreads.h: Redone completely, you might
3637 start testing it now.
3638
3639 * _scm.h: Include <errno.h< so that SCM_SYSCALL is correctly
3640 defined when HAVE_RESTARTABLE_SYSCALLS is not defined.
3641 (HAVE_RESTARTABLE_SYSCALLS): Do not define when USE_COPT_THREADS
3642 is defined.
3643
3644 2002-10-27 Marius Vollmer <mvo@zagadka.ping.de>
3645
3646 * scmsigs.c (signal_cell_handlers, install_handler_data,
3647 scm_delq_spine_x, really_install_handler, install_handler): New
3648 scheme for triggering signal handlers, to simplify take_signal.
3649 (take_signal): Simplified, to avoid race conditions.
3650 (scm_sigaction_for_thread): Use new Scheme. Validate that thread
3651 hasn't exited yet.
3652
3653 * async.c (scm_async_click): Reset pending_asyncs, handle
3654 signal_asyncs. Don't set cdr of a non-signal async to #f.
3655 (scm_i_queue_async_cell): Do not check cdr of cell for #f, queue
3656 always. Set pending_asyncs.
3657 (scm_system_async_mark_for_thread): Check that thread has not
3658 exited.
3659 (scm_unmask_signals, decrease_block): Call scm_async_click after
3660 block_asyncs becomes zero.
3661
3662 * __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of
3663 active_asyncs.
3664
3665 * root.h (scm_root_state): Added pending_asyncs and signal_asyncs
3666 fields.
3667 * root.c (root_mark): Mark them.
3668 (make_root): Initialize them.
3669
3670 * iselect.c, iselect.h: Replaced GUILE_ISELECT with
3671 USE_COOP_THREADS.
3672 (scm_internal_select): Define one version for USE_COOP_THREADS and
3673 one for USE_NULL_THREADS.
3674 (scm_init_iselect): Likewise.
3675
3676 * inline.h (scm_cell, scm_double_cell): Also allow
3677 USE_COPT_THREADS to not protect the slot initializers.
3678
3679 * init.c (scm_init_guile_1): Call scm_init_thread_procs. This is
3680 because threads need to be initialized before the stack, but
3681 gsubrs such as scm_timed_condition_variable_wait can only be
3682 created later.
3683
3684 * threads.h: Include "coop-pthreads.h" when requested.
3685 (scm_threads_make_mutex, scm_threads_lock_mutex,
3686 scm_threads_unlock_mutex, scm_threads_monitor): Removed, they were
3687 not implemented anyway.
3688 (scm_init_thread_procs, scm_try_mutex,
3689 scm_timed_condition_variable_wait,
3690 scm_broadcast_condition_variable, scm_c_thread_exited_p,
3691 scm_thread_exited_p): New prototypes.
3692 (struct timespec): Define if not already defined.
3693 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
3694 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
3695 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
3696 scm_cond_broadcast, scm_cond_destroy): Declarations moved here and
3697 deprecated.
3698
3699 * threads.c: Include <errno.h>. Include "coop-pthreads.c" when
3700 requested.
3701 (scm_thread_exited_p): New.
3702 (scm_try_mutex, scm_broadcast_condition_variable): Newly
3703 registered procedures.
3704 (scm_wait_condition_variable, scm_timed_wait_condition_variable):
3705 Use the latter as the procedure for "wait-condition-variable",
3706 thus offering a optional timeout parameter to Scheme.
3707 (scm_wait_condition_variable): Implement in terms of
3708 scm_timed_wait_condition_variable.
3709 (scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
3710 scm_mutex_unlock, scm_mutex_destroy, scm_cond_init,
3711 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
3712 scm_cond_broadcast, scm_cond_destroy): Implement in terms of
3713 scm_make_mutex, etc, and deprecate.
3714 (scm_init_threads): Do not create smobs, leave this to
3715 scm_threads_init. Do not include "threads.x" file.
3716 (scm_init_thread_procs): New, include "threads.x" here.
3717
3718 * null-threads.h (scm_null_mutex, scm_null_mutex_init,
3719 scm_null_mutex_lock, scm_null_mutex_unlock,
3720 scm_null_mutex_destroy, scm_null_condvar, scm_null_condvar_init,
3721 scm_null_condvar_wait, scm_null_condvar_signal,
3722 scm_null_condvar_destroy): Removed.
3723 (scm_mutex_init, scm_mutex_lock, scm_mutex_unlock, scm_cond_init,
3724 scm_cond_wait, scm_cond_signal, scm_cond_broadcast,
3725 scm_cond_destory): Do not define, they are now deprecated and
3726 handled by threads.{h,c}.
3727
3728 * null-threads.c (scm_null_mutex, scm_null_cond): Define here.
3729 (scm_threads_init): Create smobs here, using the appropriate
3730 sizes.
3731 (block): Removed, now unused.
3732 (scm_c_thread_exited_p): New.
3733 (scm_null_mutex_init, scm_null_mutex_lock, scm_null_mutex_unlock,
3734 scm_null_mutex_destroy, scm_null_condvar_init,
3735 scm_null_condvar_wait, scm_null_condvar_signal,
3736 scm_null_condvar_destroy): Removed and updated users to do their
3737 task directly.
3738 (scm_try_mutex, timeval_subtract,
3739 scm_timed_wait_condition_variable,
3740 scm_broadcast_condition_variable): New.
3741 (scm_wait_condition_variable): Removed.
3742
3743 * coop-defs.h (coop_m): Added 'level' field.
3744 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
3745 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
3746 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
3747 scm_cond_broadcast, scm_cond_destroy, struct timespec): Do not
3748 define.
3749 (coop_condition_variable_broadcast): New.
3750
3751 * coop-threads.c (scm_threads_init): Create smobs here, using the
3752 appropriate sizes.
3753 (scm_c_thread_exited_p, scm_try_mutex,
3754 scm_timed_wait_condition_variable,
3755 scm_broadcast_condition_variable): New.
3756 (scm_wait_condition_variable): Removed.
3757
3758 * coop.c (coop_new_mutex_init): Initialize level.
3759 (coop_mutex_trylock, coop_mutex_lock, coop_mutex_unlock): maintain
3760 level.
3761 (coop_condition_variable_signal): Renamed to
3762 coop_condition_variable_broadcast and reimplemented in terms of
3763 that. Thus...
3764 (coop_condition_variable_broadcast): New.
3765
3766 * goops.c (hell_mutex): Reimplemented using scm_make_mutex, etc.
3767
3768 * coop-pthreads.h, coop-pthreads.c: New, but unfinished.
3769
3770 2002-10-21 Marius Vollmer <mvo@zagadka.ping.de>
3771
3772 * null-threads.c: Include <time.h>. Also, use <...> for inclusion
3773 of system headers.
3774
3775 * async.c, goops.h, modules.h, validate.h (SCM_MAKE_VALIDATE_MSG):
3776 New. Use it instead of SCM_MAKE_VALIDATE in lots of places to
3777 give better error messages. Thanks to Bill Schottstaedt!
3778
3779 2002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
3780
3781 * evalext.h, evalext.c (scm_definedp, scm_defined_p): Renamed
3782 scm_definedp to scm_defined_p and deprecated scm_definedp.
3783
3784 2002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
3785
3786 * async.h, async.c (scm_system_async): Fixed deprecation to work
3787 correctly when deprecated features are excluded.
3788
3789 2002-10-16 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3790
3791 * async.c (scm_system_async_mark_for_thread): Validate thread
3792 argument.
3793
3794 * coop-threads.c (scm_i_thread_root): Do not validate argument.
3795
3796 * feature.c (scm_init_feature): Don't add 'threads' for
3797 USE_NULL_THREADS.
3798
3799 * inline.h (scm_cell, scm_double_cell): Also allow
3800 USE_NULL_THREADS to not protect the slot initializers.
3801
3802 * scmsigs.c (scm_sigaction_for_thread): It's "USE_THREADS" not
3803 "USE_THREAD".
3804
3805 * Makefile.am (noinst_HEADERS): Added null-threads.c.
3806 (modinclude_HEADERS): Added null-threads.h.
3807
3808 * threads.h: Include null-threads.h when !USE_COOP_THREADS.
3809 * threads.c: Include null-threads.c when !USE_COOP_THREADS.
3810 (scm_init_threads): Use generic type names scm_t_mutex and
3811 scm_t_cond instead of coop_m and coop_c.
3812
3813 * null-threads.c, null-threads.h: New files.
3814
3815 2002-10-15 Marius Vollmer <mvo@zagadka.ping.de>
3816
3817 * Makefile.am: Replaced "$<" in non-pattern rules with its value.
3818 This is to support makes that know about "$<" only in pattern
3819 rules, like Sun's make.
3820
3821 2002-10-13 Marius Vollmer <mvo@zagadka.ping.de>
3822
3823 * Makefile.am (libpath.h): Fixed typo in top_srcdir_absolute
3824 substitution. Thanks to David Allouche!
3825
3826 2002-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
3827
3828 * evalext.h: Replaced SCM_DEBUG_DEPRECATED with
3829 !SCM_ENABLE_DEPRECATED.
3830
3831 2002-10-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3832
3833 * async.c (scm_system_async_mark_for_thread): Only call
3834 scm_i_thread_root when USE_THREADS is defined. Use scm_root
3835 otherwise.
3836
3837 * scmsigs.c (take_signal): Only call scm_i_thread_root when
3838 USE_THREADS is defined. Use scm_root otherwise.
3839 (scm_sigaction_for_thread): Ignore THREAD argument when
3840 USE_THREADS is not defined. Also, move THREAD argument defaulting
3841 out of HAVE_SIGACTION section, which was a bug.
3842
3843 2002-10-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3844
3845 * scmsigs.c (scm_sigaction_for_thread): Store original handler in
3846 signal_handlers, not the closure that is used as the async.
3847 The closure is stored in signal_handler_cells, as previously.
3848
3849 2002-10-10 Marius Vollmer <mvo@zagadka.ping.de>
3850
3851 * root.h (scm_root_state): Added 'block_async' slot.
3852 (scm_active_asyncs): Removed abbrev.
3853 * root.c (scm_make_root): Initialize 'block_asyncs' slot.
3854
3855 * __scm.h (SCM_ASYNC_TICK): Do without the scm_active_asyncs
3856 abbrev.
3857
3858 * async.h (scm_call_with_blocked_asyncs,
3859 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
3860 scm_c_call_with_unblocked_asyncs): New prototypes.
3861 (scm_mask_signals, scm_unmask_signals): Deprecated.
3862 (scm_mask_ints): Turned into a macro.
3863 * async.c (scm_mask_ints): Removed.
3864 (scm_run_asyncs): Do not set scm_mask_ints while running an async.
3865 this should not be necessary.
3866 (scm_async_click): Test block_asyncs instead of scm_mask_ints.
3867 (scm_mask_signals, scm_unmask_signals): Deprecated. Emit
3868 deprecation warning and check for errornous use. Set block_asyncs
3869 instead of scm_mask_ints.
3870 (increase_block, decrease_block, scm_call_with_blocked_asyncs,
3871 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
3872 scm_c_call_with_unblocked_asyncs): New.
3873
3874 * script.c (scm_compile_shell_switches): Do not set scm_mask_ints.
3875 Asyncs are enabled by default.
3876
3877 2002-10-09 Neil Jerram <neil@ossau.uklinux.net>
3878
3879 * vports.c (scm_make_soft_port): Allow vector argument to carry a
3880 6th element: an input waiting thunk.
3881 (sf_input_waiting): New.
3882
3883 2002-10-05 Marius Vollmer <mvo@zagadka.ping.de>
3884
3885 * root.c (root_mark): Mark active_asyncs slot.
3886
3887 * async.c (scm_async_click): Set the cdr of a executed handler
3888 cell to SCM_BOOL_F, not SCM_EOL.
3889 (scm_i_queue_async_cell): Queue the cell at the end of the list,
3890 and only if the handler procedure is not already present.
3891 (scm_system_async_mark_for_thread): Initialize cdr of handler cell
3892 with SCM_BOOL_F.
3893 * scmsigs.c (scm_sigaction_for_thread): Likewise.
3894
3895 2002-10-04 Rob Browning <rlb@defaultvalue.org>
3896
3897 * guile.c (main): switch to scm_lt_dlset_preloaded_symbols;
3898
3899 * dynl.c (sysdep_dynl_link): switch to scm_lt_dlhandle,
3900 scm_lt_dlopenext, and scm_lt_dlerror.
3901 (sysdep_dynl_unlink): switch to scm_lt_dlhandle, scm_lt_dlclose,
3902 and scm_lt_dlerror.
3903 (sysdep_dynl_func): switch to scm_lt_dlhandle, scm_lt_dlsym,
3904 and scm_lt_dlerror.
3905 (sysdep_dynl_init): switch to scm_lt_dlinit();
3906
3907 * Makefile.am (libguile_la_LIBADD): switch to use
3908 libguile-ltdl.la.
3909
3910 * numbers.c (scm_integer_expt): (expt 0 1) should be 1.
3911
3912 2002-10-04 Marius Vollmer <mvo@zagadka.ping.de>
3913
3914 * scmsigs.h (scm_sigaction_for_thread): New prototype.
3915 * scmsigs.c (got_signal): Removed.
3916 (signal_handler_cells, signal_handler_threads): New.
3917 (take_signal): Queue the cell of the signal for the specified
3918 thread. Reset the signal handler on systems that don't have
3919 sigaction.
3920 (sys_deliver_signals): Removed.
3921 (close_1): New.
3922 (scm_sigaction_for_thread): Renamed from scm_sigaction and
3923 extended to also set the thread of a signal and allocate a cell
3924 for it. Keep the Scheme name "sigaction". Check that signum is
3925 within range. Also, use SCM_VECTOR_REF instead of SCM_VELTS.
3926 (scm_sigaction): Implement in terms of scm_sigaction_for_thread.
3927 (scm_init_scmsigs): Allocate signal_handler_cells and
3928 signal_handler_threads vectors.
3929
3930 * async.c: Removed GUILE_OLD_ASYNC_CLICK code. Reorganized so
3931 that system asnycs and user asyncs are separated. Reimplemented
3932 system asyncs to work per-thread.
3933
3934 * gc.c (scm_init_gc): Do not use scm_system_async.
3935
3936 * async.h (scm_asyncs_pending, scm_set_tick_rate,
3937 scm_set_switch_rate, scm_system_async_mark_from_signal_handler):
3938 Removed prototypes.
3939 (scm_i_queue_async_cell): New.
3940
3941 * __scm.h (scm_asyncs_pending_p): Removed.
3942 (SCM_ASYNC_CLICK): Check scm_active_asyncs instead of
3943 scm_asyncs_pending_p.
3944
3945 * async.h (scm_system_async_mark_for_thread): New prototype.
3946
3947 * __scm.h: Removed GUILE_OLD_ASYNC_CLICK code.
3948
3949 * root.h (scm_root_state): Added new "active_asyncs" slot.
3950 * root.c (scm_make_root): Initialize it to SCM_EOL.
3951
3952 * coop-defs.h (coop_t): Added new "handle" slot.
3953 * coop-threads.c (all_threads, scm_current_thread,
3954 scm_all_threads, scm_i_thread_root): New.
3955 (scm_threads_init): Add main thread to all_threads.
3956 (scheme_launch_thread): Remove thread from all_threads when it
3957 terminates.
3958 (scm_call_with_new_thread): Initialize handle slot of coop_t
3959 structure and add new thread to all_threads.
3960 (scm_spawn_thread): Likewise.
3961
3962 * threads.h (scm_current_thread, scm_all_threads): New prototypes.
3963 * threads.c (scm_current_thread, scm_all_threads): Register as
3964 primitives.
3965
3966 * dynl.c: Use scm_lt_ prefix for libltdl functions.
3967
3968 2002-09-29 Neil Jerram <neil@ossau.uklinux.net>
3969
3970 * script.c (scm_compile_shell_switches): Fix bad spelling of
3971 `explicitly' in comment.
3972
3973 2002-09-28 Neil Jerram <neil@ossau.uklinux.net>
3974
3975 * posix.c (scm_geteuid, scm_getegid, scm_seteuid, scm_setegid):
3976 Refer to provided? in doc string rather than deprecated feature?.
3977
3978 2002-09-24 Gary Houston <ghouston@arglist.com>
3979
3980 * inline.h (scm_double_cell): prevent reordering of statements
3981 with any following code (for GCC 3 strict-aliasing).
3982 * numbers.c (scm_make_real), num2float.i.c (FLOAT2NUM): removed
3983 the earlier version of the reordering prevention.
3984
3985 2002-09-19 Han-Wen Nienhuys <hanwen@cs.uu.nl>
3986
3987 * inline.h (scm_double_cell): move SET_GCMARK set out of if body.
3988
3989 2002-09-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
3990
3991 * gc-malloc.c (scm_gc_register_collectable_memory): more overflow
3992 protection.
3993
3994 2002-09-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
3995
3996 * inline.h: include stdio.h
3997
3998 * smob.c (free_print): abort if scm_debug_cell_accesses_p is set
3999
4000 2002-09-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
4001
4002 * gc-segment.c (scm_i_make_initial_segment): check user settings
4003 for sanity.
4004
4005 * gc-malloc.c (scm_gc_init_malloc): check user settings for
4006 sanity.
4007
4008 * gc-freelist.c (scm_init_freelist): check user settings for sanity.
4009
4010 * struct.h: change scm_structs_to_free to scm_i_structs_to_free
4011
4012 * gc-malloc.c (scm_gc_register_collectable_memory): use floats;
4013 these won't ever wrap around with high memory usage. Thanks to
4014 Sven Hartrumpf for finding this.
4015
4016 * gc-freelist.c: include <stdio.h>
4017
4018 * gc-malloc.c: add DEBUGINFO for mtrigger GCs.
4019
4020 2002-09-01 Marius Vollmer <mvo@zagadka.ping.de>
4021
4022 * vectors.h (SCM_VECTOR_REF): New.
4023
4024 * snarf.h (SCM_DEFINE_PUBLIC): New.
4025
4026 2002-08-30 Marius Vollmer <mvo@zagadka.ping.de>
4027
4028 * socket.c (scm_addr_vector): Added size of address to arguments.
4029 Use it to avoid accessing a non-existent path in a sockaddr_un.
4030 Changed all callers.
4031
4032 2002-08-29 Han-Wen Nienhuys <hanwen@cs.uu.nl>
4033
4034 * gc.h: remove DOUBLECELL card flags.
4035
4036 * gc-malloc.c (scm_calloc): try to use calloc() before calling
4037 scm_realloc().
4038
4039 * gc-segment.c (scm_i_initialize_heap_segment_data): remove card
4040 init loop; handle this from scm_init_card_freelist()
4041
4042 * gc-card.c (scm_init_card_freelist): init bit vector here.
4043
4044 * numbers.c (scm_make_real): prevent reordering of statements
4045 num2float.i.c (FLOAT2NUM): idem
4046
4047 2002-08-27 Han-Wen Nienhuys <hanwen@cs.uu.nl>
4048
4049 * eval.h: prepend libguile/ to include path
4050
4051 2002-08-26 Marius Vollmer <mvo@zagadka.ping.de>
4052
4053 * script.c (scm_compile_shell_switches): Added "2002" to Copyright
4054 years. Thanks to Martin Grabmüller!
4055
4056 2002-08-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
4057
4058 * gc-segment.c (scm_i_get_new_heap_segment): use float in stead of
4059 unsigned numbers for computing minimum heap increment. This
4060 prevents weird results when a a negative minimum increment is
4061 computed.
4062
4063 2002-08-24 Marius Vollmer <mvo@zagadka.ping.de>
4064
4065 * gc_os_dep.c: When we have __libc_stack_end, use that directly
4066 instead of the old tricks.
4067
4068 * guile-snarf.in: Do not expect the input file to be the first
4069 argument after the optional "-o" option, just pass everything to
4070 the pre-processor without extracting the input file name.
4071
4072 2002-08-23 Han-Wen Nienhuys <hanwen@cs.uu.nl>
4073
4074 * gc-segment.c (scm_i_get_new_heap_segment): Oops. We want segment
4075 length *at* least SCM_MIN_HEAP_SEG_SIZE, not at most.
4076
4077 2002-08-22 Han-Wen Nienhuys <hanwen@cs.uu.nl>
4078
4079 * gc.h, gc.c: make scm_cells_allocated unsigned again. Thanks to
4080 Bill Schottstaedt for the bug report
4081
4082 2002-08-20 Marius Vollmer <mvo@zagadka.ping.de>
4083
4084 * print.c (scm_iprin1): Print primitives generics always as
4085 "primitive-generic" even when they have no primitive methods yet.
4086
4087 2002-08-17 Gary Houston <ghouston@arglist.com>
4088
4089 * coop.c (coop_create): removed bogus 2nd argument in scm_malloc
4090 call.
4091
4092 2002-08-17 Han-Wen Nienhuys <hanwen@cs.uu.nl>
4093
4094 * ports.c (scm_add_to_port_table): small bugfix.
4095
4096 * mallocs.c (scm_malloc_obj): use scm_gc_malloc in stead of
4097 malloc.
4098
4099 * gc-segment.c (scm_i_get_new_heap_segment): remove cluster cruft:
4100 only use SCM_MIN_HEAP_SEG_SIZE.
4101
4102 * ports.c (scm_add_to_port_table): add backwards compatibility
4103 function
4104
4105 * ports.h: use scm_i_ prefix for port table and port table size.
4106
4107 2002-08-15 Mikael Djurfeldt <mdj@linnaeus>
4108
4109 * vports.c (scm_make_soft_port): Initialize pt variable.
4110
4111 2002-08-13 Marius Vollmer <mvo@zagadka.ping.de>
4112
4113 * strports.h (scm_c_eval_string_in_module,
4114 scm_eval_string_in_module): New prototypes.
4115 * strports.c (scm_eval_string_in_module): New, but use
4116 "eval-string" as the Scheme name and make second parameter
4117 optional.
4118 (scm_eval_string): Implement using scm_eval_string_in_module.
4119 (scm_c_eval_string_in_module): New.
4120 Thanks to Ralf Mattes for the suggestion!
4121
4122 2002-08-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
4123
4124 * gc-card.c ("sweep_card"): remove SCM_MISC_ERROR messages: print
4125 message and abort.
4126
4127 * gc-mark.c ("scm_gc_mark_dependencies"): idem.
4128
4129 * ports.c ("scm_new_port_table_entry"): return a boxed SCM in
4130 stead of scm_t_port*. The function now takes a tag argument.
4131
4132 2002-08-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
4133
4134 * gc.h: add scm_debug_cells_gc_interval to public interface
4135
4136 * gc-card.c ("sweep_card"): set scm_gc_running while sweeping.
4137
4138 * gc.c (scm_i_expensive_validation_check): separate expensive
4139 validation checks from cheap ones.
4140
4141 2002-08-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
4142
4143 * read.c (scm_input_error): new function: give meaningful error
4144 messages, and throw read-error
4145
4146 * gc-malloc.c (scm_calloc): add scm_calloc.
4147
4148 2002-08-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
4149
4150 * tags.h: remove GC bits documentation from the tags table.
4151
4152 * read.c (INPUT_ERROR): Prepare for file:line:column error
4153 messages for errors in scm_lreadr() and friends.
4154
4155 2002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
4156
4157 * gc-malloc.c (scm_malloc): use scm_realloc() (simplifies
4158 implementation).
4159 (scm_gc_calloc): new function
4160
4161 2002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
4162
4163 * ports.c (scm_new_port_table_entry): init port entry to 0
4164 completely.
4165
4166 * ports.c (scm_new_port_table_entry): change function from
4167 scm_add_to_port_table. This prevents cells with null-pointers from
4168 being exposed to GC.
4169
4170 * vports.c (scm_make_soft_port) strports.c (scm_mkstrport),
4171 fports.c (scm_fdes_to_port): Use scm_new_port_table_entry().
4172
4173 * gc.c (scm_gc_stats): add cell-yield and malloc-yield statistic
4174 to gc-stats.
4175
4176 * numbers.c (big2str): return "0" for 0 iso. ""
4177
4178 * gc-segment.c, gc-malloc.c gc-mark.c, gc-freelist.c, gc-card.c,
4179 private-gc.h: new file
4180
4181 * gc.c: completely revised and cleaned up the GC. It now uses lazy
4182 sweeping. More documentation in workbook/newgc.text
4183
4184 2002-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4185
4186 * random.c (rstate_free): Return zero.
4187
4188 2002-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
4189
4190 * environments.c (remove_key_from_alist): Removed.
4191
4192 (obarray_remove): Simplified.
4193
4194 2002-07-24 Stefan Jahn <stefan@lkcc.org>
4195
4196 * continuations.h: ia64: Include <signal.h> before
4197 <sys/ucontext.h>.
4198
4199 2002-07-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
4200
4201 * modules.c (scm_sym2var): Don't compare SCM values with ==.
4202
4203 2002-07-21 Han-Wen Nienhuys <hanwen@cs.uu.nl>
4204
4205 * goops.c (scm_compute_applicable_methods): use
4206 scm_remember_upto_here_1 iso scm_remember_upto_here
4207
4208 * macros.c: include deprecation.h
4209
4210 * vectors.c (scm_vector_move_right_x): remove side effect in
4211 macro arg.
4212 (scm_vector_move_left_x): idem.
4213
4214 * net_db.c, posix.c, socket.c: variable naming: change ans to
4215 result.
4216
4217 * sort.c (scm_merge_vector_x): accept vector as argument
4218 iso. SCM*. This is needed for full GC correctness.
4219
4220 * gc.h: undo previous undocumented changes related to #ifdef
4221 GENGC.
4222
4223 2002-07-20 Han-Wen Nienhuys <hanwen@cs.uu.nl>
4224
4225 * *.c: add space after commas everywhere.
4226
4227 * *.c: use SCM_VECTOR_SET everywhere, where a vector is written.
4228 Document cases where SCM_WRITABLE_VELTS() is used.
4229
4230 * vectors.h (SCM_VELTS): prepare for write barrier, and let
4231 SCM_VELTS() return a const pointer
4232 (SCM_VECTOR_SET): add macro.
4233
4234 2002-07-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
4235
4236 * eval.c (SCM_CEVAL), macros.c (macro_print, scm_makmacro,
4237 scm_sym_macro, scm_macro_type), macros.h (scm_makmacro):
4238 Deprecated the special kind of built-in dynamic syntax transformer
4239 that was inaccurately named "macro". Note: The built-in syntax
4240 transformers that are named "mmacro" or "memoizing-macro" still
4241 exist, and it is these which come much closer to what one would
4242 call a macro.
4243
4244 2002-07-13 Neil Jerram <neil@ossau.uklinux.net>
4245
4246 * eval.c (unmemocopy): Fix for
4247 1001-local-eval-error-backtrace-segfaults (unmemoization crash
4248 with internal definitions and local-eval).
4249
4250 2002-07-12 Gary Houston <ghouston@arglist.com>
4251
4252 * dynl.c: Don't define stub procedures if DYNAMIC_LINKING is not
4253 defined. They don't do anything useful, especially since the
4254 only case where DYNAMIC_LINKING is undefined seems to be
4255 when --with-modules=no is given to configure, which is basically
4256 requesting that the "dynamic linking module" be omitted.
4257
4258 * Makefile.am (libguile_la_SOURCES): move dynl.c from
4259 libguile_la_SOURCES to EXTRA_libguile_la_SOURCES.
4260
4261 * extensions.c (load_extension): check DYNAMIC_LINKING for
4262 scm_dynamic_call.
4263 * init.c (scm_init_guile_1): check DYNAMIC_LINKING for
4264 scm_init_dynamic_linking.
4265
4266 2002-07-10 Marius Vollmer <mvo@zagadka.ping.de>
4267
4268 * guile.c, iselect.h, net_db.c, posix.c, socket.c: No need to
4269 check for Cygwin when including <winsock2.h>, this is already
4270 check for by configure. Thus, revert change from 2002-07-07.
4271
4272 2002-07-10 Gary Houston <ghouston@arglist.com>
4273
4274 * eq.c: include <string.h>
4275 * dynl.c: docstring editing.
4276
4277 2002-07-09 Gary Houston <ghouston@arglist.com>
4278
4279 * dynl.c (scm_dynamic_call): docstring editing.
4280
4281 2002-07-08 Rob Browning <rlb@defaultvalue.org>
4282
4283 * gc_os_dep.c: HURD fixes.
4284
4285 2002-07-07 Marius Vollmer <mvo@zagadka.ping.de>
4286
4287 Crosscompiling and Cygwin fixes by Jan Nieuwenhuizen. Thanks!
4288
4289 * Makefile.am: Override default rule for c-tokenize.$(OBJECT);
4290 this should be compiled for BUILD host.
4291 Override default rule for
4292 guile_filter_doc_snarfage$(EEXECT); this should run on BUILD host.
4293 Add missing $(EXEEXT) to guile_filter_doc_snarfage invocation.
4294 (snarf2checkedtexi): Use GUILE_FOR_BUILD instead of preinstguile.
4295
4296 * guile.c, iselect.h, net_db.c, posix.c, socket.c: Do not include
4297 <winsock2.h> on Cygwin even when we have it.
4298
4299 2002-07-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
4300
4301 * __scm.h (SCM_CAUTIOUS), eval.c (scm_eval_args, deval_args,
4302 SCM_CEVAL): Removed compile time option SCM_CAUTIOUS to clean up
4303 the code. Full number of arguments checking of closures is
4304 mandatory now. However, the option to disable the checking has
4305 most probably not been used anyway.
4306
4307 2002-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
4308
4309 * __scm.h (SCM_RECKLESS), backtrace.c (SCM_ASSERT), debug.c
4310 (scm_debug_options), eval.c (scm_lookupcar, scm_lookupcar1,
4311 scm_badargsp, SCM_CEVAL, SCM_APPLY, scm_map, scm_for_each),
4312 feature.c (scm_init_feature), gsubr.c (scm_gsubr_apply), numbers.c
4313 (scm_logand, scm_logior, scm_logxor, scm_i_dbl2big), srcprop.c
4314 (scm_source_properties, scm_set_source_properties_x,
4315 scm_source_property): Removed compile time option SCM_RECKLESS to
4316 clean up the code. Full number of arguments checking of closures
4317 is mandatory now. However, the option to disable the checking has
4318 most probably not been used anyway.
4319
4320 * srcprop.c (scm_source_properties, scm_set_source_properties_x,
4321 scm_source_property): Use !SCM_CONSP instead of SCM_NCONSP.
4322
4323 2002-06-30 Gary Houston <ghouston@arglist.com>
4324
4325 * dynl.c: Removed all SCM_DEFER_INTS/SCM_ALLOW_INTS, which won't
4326 do anything useful. Added a comment about need for a mutex if
4327 pre-emptive threading is supported.
4328
4329 * posix.c (scm_convert_exec_args), dynl.c
4330 (scm_make_argv_from_stringlist): static procs: 1) renamed both to
4331 allocate_string_pointers. 2) simplified: don't reallocate the
4332 strings, just make an array of pointers 3) avoid memory leaks on
4333 error 4) let the procedure report errors in its own name.
4334 Consequences: 1) the procedures now assume that SCM strings are
4335 nul-terminated, which should always be the case. 2) Since strings
4336 are not reallocated, it's now possible for strings passed to
4337 dynamic-args-call to be mutated.
4338
4339 2002-06-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
4340
4341 * __scm.h, eval.c, eval.h: Removed compile time option
4342 MEMOIZE_LOCALS to clean up the code. Now, caching of local
4343 variable positions during memoization is mandatory. However, the
4344 option to disable the caching has most probably not been used
4345 anyway.
4346
4347 2002-06-18 Marius Vollmer <mvo@zagadka.ping.de>
4348
4349 * print.c (scm_simple_format): Print missing part of format before
4350 ~% control. Thanks to Daniel Skarda!
4351
4352 2002-06-01 Marius Vollmer <mvo@zagadka.ping.de>
4353
4354 * mkstemp.c: Added exception notice to license statement.
4355
4356 2002-05-22 Marius Vollmer <mvo@zagadka.ping.de>
4357
4358 * numbers.c (mem2ureal): When returning an inexact zero, make sure
4359 it is represented as a floating point value so that we can change
4360 its sign.
4361
4362 From John W. Eaton <jwe@bevo.che.wisc.edu>
4363
4364 * numbers.c (idbl2str): Don't omit sign when printing negative zero.
4365
4366 2002-05-14 Thien-Thi Nguyen <ttn@giblet.glug.org>
4367
4368 * gc_os_dep.c: For I386/OPENBSD, allow for `__i386__'
4369 in addition to `i386'. Thanks to Dale P. Smith.
4370
4371 2002-05-08 Marius Vollmer <mvo@zagadka.ping.de>
4372
4373 * eq.c (real_eqv): New.
4374 (scm_eqv_p): Use it when comparing reals and complexes.
4375
4376 * numbers.c: Include <string.h>, for strncmp.
4377 (mem2complex): Do not create negative NaNs.
4378 (scm_leq_p, scm_geq_p): Explicitely return #f when comparing a
4379 NaN.
4380 (scm_inexact_to_exact): Signal error when converting a NaN.
4381
4382 2002-05-06 Marius Vollmer <mvo@zagadka.ping.de>
4383
4384 * posix.c (scm_putenv): Handle removing variables explicitely by
4385 calling unsetenv.
4386
4387 From John W. Eaton.
4388
4389 * numbers.h: Conditionally include floatingpoint.h, ieeefp.h, and
4390 nan.h. Provide declarations for scm_inf_p, scm_nan_p, scn_inf,
4391 and scm_nan.
4392 * numbers.c: [SCO && ! HAVE_ISNAN] (isnan): New function.
4393 [SCO && ! HAVE_ISINF] (isinf): New function.
4394 (xisinf, xisnan): New functions.
4395 (IS_INF): Delete.
4396 (isfinite): Define in terms of xisinf.
4397 (scm_inf_p, scm_nan_p): New functions.
4398 (guile_Inf, guile_NaN): New file-scope vars.
4399 (guile_ieee_init): New function.
4400 (scm_inf, scm_nan): New functions.
4401 (idbl2str): Handle Inf and NaN. Remove funny label and
4402 corresponding gotos.
4403 (ALLOW_DIVIDE_BY_ZERO): New macro.
4404 (scm_divide): Allow division by zero to occur if
4405 ALLOW_DIVIDE_BY_ZERO is defined.
4406 Handle bignums and ints as special cases.
4407
4408 Additional stuff by me:
4409
4410 numbers.c (mem2ureal): Recognize "inf.0" and "nan.xxx".
4411 (scm_even_p, scm_odd_p): Treat infinity as even and odd.
4412 (iflo2str): Don't output a '+' for negative numbers or for Inf and
4413 NaN. They will provide their own sign.
4414 (scm_divide): Only allow divides by inexact zeros. Dividing by
4415 exact zeros still signals an errors.
4416
4417 2002-04-22 Thien-Thi Nguyen <ttn@giblet.glug.org>
4418
4419 * goops.h (scm_slot_exists_p): Rename from scm_slots_exists_p.
4420 * goops.c (scm_slot_exists_p): Rename from scm_slots_exists_p.
4421 (scm_slot_exists_p): Rename from scm_slots_exists_p.
4422 Thanks to Andreas Rottmann.
4423
4424 2002-04-20 Gary Houston <ghouston@arglist.com>
4425
4426 * removal of unused fields in root state (thanks to Christopher
4427 Cramer for pointing out the disuse.)
4428 * root.h (scm_root_state): removed def_inp, def_outp, def_errp.
4429 (scm_def_inp, scm_def_outp, scm_def_errp): removed.
4430
4431 * root.c (root_mark): don't mark them.
4432 (scm_make_root): don't set them to #f.
4433 * init.c (scm_init_standard_ports): don't initialise with the
4434 default ports.
4435
4436 2002-04-17 Marius Vollmer <mvo@zagadka.ping.de>
4437
4438 * Makefile.am (EXTRA_DIST): Added cpp_err_symbols.c and
4439 cpp_sig_symbols.c.
4440
4441 2002-04-16 Marius Vollmer <mvo@zagadka.ping.de>
4442
4443 * guile-snarf.in: Do not clean input file. This would write to
4444 the $(srcdir) during a VPATH build, which is not allowed. It also
4445 isn't needed since it only works when an output filename has been
4446 specified and in that case we don't need to clean the input file
4447 because the output file will already exist.
4448
4449 2002-03-31 Marius Vollmer <mvo@zagadka.ping.de>
4450
4451 * guile-snarf: Install the trap for removing $cleanfile only when
4452 the value of $cleanfile is actually known.
4453
4454 2002-04-10 Rob Browning <rlb@defaultvalue.org>
4455
4456 * .cvsignore: add versiondat.h and *.c.clean.c.
4457
4458 2002-03-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
4459
4460 * srcprop.[ch] (scm_c_source_property_breakpoint_p): New
4461 function, replaces macro SRCBRKP.
4462
4463 (SRCBRKP): Deprecated.
4464
4465 * eval.c (SCM_CEVAL): Replaced use of SRCBRKP by call to
4466 scm_c_source_property_breakpoint_p. Removed some use of arg1 as
4467 temporary variable.
4468
4469 2002-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
4470
4471 * debug.h, eval.c: Deprecated CHECK_ENTRY, CHECK_APPLY and
4472 CHECK_EXIT and removed all references to them.
4473
4474 2002-03-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
4475
4476 * debug.h (scm_ready_p, debug_print): Removed declarations.
4477
4478 * eval.c (EVALCELLCAR): Removed.
4479
4480 (SCM_CEVAL): Eliminated label loopnoap. Removed side-effecting
4481 operation from condition.
4482
4483 2002-03-24 Marius Vollmer <mvo@zagadka.ping.de>
4484
4485 * guile-snarf.in: When the output filename is "-", write to
4486 stdout. When no "-o" option is given, use "-" as the output
4487 filename (i.e., stdout). Only 'clean' the inputfile or remove the
4488 output file on error when the output file name is not "-". Define
4489 the preprocessor macro SCM_MAGIC_SNARFER while snarfing.
4490
4491 * Makefile.am (.c.x): Pass "-o $@" to guile-snarf.
4492
4493 2002-03-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
4494
4495 * eval.c (SCM_CEVAL, SCM_APPLY): Eliminated labels wrongnumargs
4496 and the corresponding goto statements. Removed redundant code.
4497
4498 2002-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
4499
4500 * eval.c (SCM_CEVAL): Minimized scope of variable arg2.
4501 Eliminated redundant SCM_IMP check. Exlined call to EVALCAR.
4502 Re-enabled handing of rpsubrs and asubrs.
4503
4504 2002-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
4505
4506 * eval.c (SIDEVAL): Removed.
4507
4508 (SCM_CEVAL): Minimized scope of variable orig_sym. Eliminated
4509 goto-labels cdrxnoap, cdrxbegin and nontoplevel_cdrxnoap. Changed
4510 argument checking order for set! to locals, variables and symbols.
4511 Improvements to control structure. Removed some uses of arg1 and
4512 arg2 as temporary variables.
4513
4514 2002-03-15 Thien-Thi Nguyen <ttn@giblet.glug.org>
4515
4516 * guile-snarf.in: Remove "--compat=1.4" support.
4517 Add "-d" and "-D" support.
4518
4519 (deprecated_list): New var.
4520 (compat_mode_clean_xxx): Delete.
4521 (grep_deprecated): New func.
4522 ("main"): If "-d" or "-D", call `grep_deprecated'.
4523
4524 2002-03-15 Neil Jerram <neil@ossau.uklinux.net>
4525
4526 * hooks.h: Change scm_t_c_hookype_t everywhere to
4527 scm_t_c_hook_type.
4528
4529 Docstring fixes:
4530
4531 * strings.c (scm_string_p): Change unnecessary `iff' to `if'.
4532
4533 * ports.c (scm_sys_make_void_port): Use `@file'.
4534
4535 * numbers.c (scm_number_p, scm_real_p): Use `otherwise' rather
4536 than `else'.
4537
4538 * macros.c (scm_makmacro): Don't say that the form replaces its
4539 source, because it doesn't.
4540 (scm_makmmacro): Clarify difference between this and scm_makmacro.
4541
4542 * backtrace.c (scm_display_error), filesys.c (scm_umask,
4543 scm_select, scm_basename), goops.c (scm_method_generic_function),
4544 numbers.c (scm_integer_length), posix.c (scm_getgroups, scm_execl,
4545 scm_setlocale, scm_flock), socket.c (scm_shutdown): Correct
4546 spelling mistakes.
4547
4548 * debug.c (scm_debug_options), eval.c
4549 (scm_eval_options_interface), read.c (scm_read_options): Change
4550 incorrect @var in docstring to @code.
4551
4552 2002-03-14 Marius Vollmer <mvo@zagadka.ping.de>
4553
4554 * unif.c (singp): Use SCM_REALP instead of SCM_SLOPPY_REALP.
4555
4556 * snarf.h (SCM_SNARF_INIT): Add "^:^" after code so that
4557 guile-snarf can remove trailing non-init code.
4558
4559 * guile-snarf.in (modern_snarf): Remove everything following and
4560 including "^:^" from the output.
4561
4562 2002-03-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
4563
4564 * eval.c (SCM_CEVAL), srcprop.h (SRCBRKP): Eliminated union 't'.
4565
4566 * eval.c (SCM_CEVAL): Exlined call to EVALCAR.
4567
4568 2002-03-13 Thien-Thi Nguyen <ttn@giblet.glug.org>
4569
4570 * guile-snarf.in: Update copyright.
4571 Rewrite to internalize error handling.
4572 Add "--compat=1.4" handling.
4573 Add commentary.
4574
4575 * Makefile.am (libpath.h): Use @top_srcdir_absolute@.
4576 (snarfcppopts): New var.
4577 (.c.x): Use $(snarfcppopts). Rework guile-snarf usage.
4578 (.c.doc): Use $(snarfcppopts).
4579
4580 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
4581 continuations.c, debug-malloc.c, debug.c, deprecation.c, dynl.c,
4582 dynwind.c, environments.c, eq.c, error.c, eval.c, evalext.c,
4583 extensions.c, feature.c, filesys.c, fluids.c, fports.c, gc.c,
4584 goops.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
4585 ioext.c, iselect.c, keywords.c, lang.c, list.c, load.c, macros.c,
4586 modules.c, net_db.c, numbers.c, objects.c, objprop.c, options.c,
4587 pairs.c, ports.c, posix.c, print.c, procprop.c, procs.c,
4588 properties.c, ramap.c, random.c, rdelim.c, read.c, regex-posix.c,
4589 root.c, rw.c, scmsigs.c, script.c, simpos.c, socket.c, sort.c,
4590 srcprop.c, stackchk.c, stacks.c, stime.c, strings.c, strop.c,
4591 strorder.c, strports.c, struct.c, symbols.c, threads.c, throw.c,
4592 unif.c, values.c, variable.c, vectors.c, version.c, vports.c,
4593 weaks.c: Retire inclusion guard macro SCM_MAGIC_SNARFER.
4594
4595 2002-03-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
4596
4597 * eval.c (SCM_CEVAL): Got rid of the last reference to t.lloc.
4598 The next step will be to remove the union 't' and simplify the
4599 code of SCM_CEVAL that way.
4600
4601 2002-03-12 Neil Jerram <neil@ossau.uklinux.net>
4602
4603 * iselect.c (collisionp, gnfds, greadfds, gwritefds, gexceptfds,
4604 rreadfds, rwritefds, rexceptfds): Made static.
4605
4606 * gc.c (terminating), fports.c (terminating): Renamed
4607 scm_i_terminating.
4608
4609 2002-03-11 Marius Vollmer <mvo@zagadka.ping.de>
4610
4611 * numbers.c (scm_divide): Adapt code from libstdc++/f2c to void
4612 potential overflow problems. Thanks to John W Eaton!
4613
4614 * strop.c (string_capitalize_x): Treat characters as unsigned so
4615 that 8-bit chars work. Thanks to David Pirotte!
4616
4617 2002-03-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
4618
4619 * eval.c (SCM_CEVAL): Cleaned up the handling of 'slot-ref',
4620 'slot-set!' and 'nil-cond'. Removed some uses of t.arg1, arg2 and
4621 proc as temporary variables. Introduced temporary variables with
4622 hopefully descriptive names for clarification. Replaced SCM_N?IMP
4623 by a more explicit predicate in some places.
4624
4625 2002-03-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
4626
4627 * eval.c (SCM_CEVAL): Cleaned up the handling of #@dispatch.
4628 Added lots of comments regarding the implementation of #@dispatch.
4629 Changed intra-procedure communication to use t.arg1 instead of
4630 arg2. Removed some uses of t.arg1, t.lloc and proc as temporary
4631 variables. Introduced temporary variables with hopefully
4632 descriptive names for clarification. Replaced SCM_N?IMP by a more
4633 explicit predicate in some places. Use SCM_INSTANCE_HASH instead
4634 of computing the expression explicitly. Eliminate now unused
4635 label nontoplevel_cdrxbegin.
4636
4637 * goops.h (SCM_INSTANCE_HASH): New macro.
4638
4639 * objects.h (SCM_CMETHOD_FORMALS, SCM_CMETHOD_BODY): New macros.
4640
4641 2002-03-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
4642
4643 * Makefile.am (bin_SCRIPTS): Revive this decl, w/ initial element
4644 "guile-snarf" moved back from `noinst_SCRIPTS'.
4645
4646 2002-03-08 Neil Jerram <neil@ossau.uklinux.net>
4647
4648 * srcprop.c (scm_set_source_property_x): If SRCPROPS obj already
4649 exists when adding a source property other than those that are
4650 handled explicitly, add the new property to the SRCPROPS obj's
4651 plist.
4652
4653 * debug.h (SCM_MAX_FRAME_SIZE): Remove incorrect comment about use
4654 of SCM_MAX_FRAME_SIZE as a bit mask; it isn't used like this.
4655
4656 * eval.c (SCM_CEVAL): Don't store scm_debug_eframe_size in
4657 debug.status. It isn't needed, and it can overflow the bits
4658 reserved for it (which may lead to a segv or a GC abort).
4659
4660 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
4661
4662 * eval.c (SCM_CEVAL): Cleaned up the handling of 'apply'. Removed
4663 side-effecting operations from conditions and macro calls.
4664 Replaced SCM_N?IMP by a more explicit predicate in some places.
4665 Minimized the scope of some variables.
4666
4667 2002-03-02 Stefan Jahn <stefan@lkcc.org>
4668
4669 * convert.i.c: Fixed int <-> long conversions which would have
4670 failed if their sizes were different.
4671
4672 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
4673
4674 * eval.c (SCM_CEVAL): Cleaned up the handling of 'if', 'let',
4675 'letrec' and 'set*': Removed some uses of t.arg1, t.lloc and proc
4676 as temporary variables. Removed side-effecting operations from
4677 conditions and macro calls. Introduced temporary variables with
4678 hopefully descriptive names for clarification. Replaced SCM_N?IMP
4679 by a more explicit predicate in some places. Removed code that
4680 was conditionally compiled if SICP was defined - which it never
4681 is.
4682
4683 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
4684
4685 * eval.c (SCM_CEVAL): Cleaned up the handling of 'cons' and 'do':
4686 Removed some uses of t.arg1 and proc as temporary variables.
4687 Removed side-effecting operations from conditions and macro calls.
4688 Introduced temporary variables with hopefully descriptive names
4689 for clarification. Replaced SCM_N?IMP by a more explicit
4690 predicate in some places.
4691
4692 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
4693
4694 * eval.c (scm_badargsp, SCM_CEVAL): Replaced SCM_N?IMP by a more
4695 explicit predicate in some places.
4696
4697 (CHECK_EQVISH): Removed.
4698
4699 (SCM_CEVAL): Removed some uses of t.arg1 and proc as temporary
4700 variables. Removed side-effecting operations from conditions and
4701 macro calls. Introduced temporary variables for clarification.
4702 Sorted if-else-if check for the type of the last form in a list by
4703 frequency. Avoided some unnecessary tail-recursion calls.
4704
4705 2002-03-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
4706
4707 * gc.c (SCM_HEAP_SEG_SIZE, CELL_UP, CELL_DN, NEXT_DATA_CELL,
4708 init_heap_seg, alloc_some_heap), gc.h (struct scm_cell, struct
4709 scm_t_cell, SCM_CELLPTR, SCM_GC_CARD_SIZE,
4710 SCM_GC_IN_CARD_HEADERP), tags.h (SCM_CELLP): Renamed the struct
4711 scm_cell and all its uses to scm_t_cell in accordance to Guile's
4712 naming scheme for types.
4713
4714 * alist.c (scm_acons), convert.i.c (CTYPES2UVECT,
4715 CTYPES2UVECT_OPTIONAL), coop-threads.c (scm_call_with_new_thread,
4716 scm_spawn_thread), debug.c (scm_make_debugobj), environments.c
4717 (scm_make_environment), eval.c (scm_closure), fports.c
4718 (scm_fdes_to_port), gc.c (scm_deprecated_newcell,
4719 scm_deprecated_newcell2), inline.h (scm_alloc_cell, scm_cell),
4720 list.c (SCM_I_CONS), numbers.c (scm_i_mkbig), pairs.c (scm_cons),
4721 ports.c (scm_void_port), procs.c (scm_c_make_subr, scm_makcclo),
4722 smob.c (scm_make_smob), smob.h (SCM_NEWSMOB), strings.c
4723 (scm_take_str, scm_allocate_string), strports.c (scm_mkstrport),
4724 unif.c (scm_make_uve), variable.c (make_variable), vectors.c
4725 (scm_c_make_vector), vports.c (scm_make_soft_port): Renamed
4726 scm_alloc_cell to scm_cell.
4727
4728 * environments.c (core_environments_observe), gc.c
4729 (scm_deprecated_newcell2), goops.c (wrap_init, scm_wrap_object),
4730 inline.h (scm_alloc_double_cell, scm_double_cell), num2float.i.c
4731 (FLOAT2NUM), numbers.c (scm_make_real), procs.c
4732 (scm_make_procedure_with_setter), smob.h (SCM_NEWSMOB2,
4733 SCM_NEWSMOB3), struct.c (scm_make_struct, scm_make_vtable_vtable),
4734 symbols.c (scm_mem2symbol, scm_mem2uninterned_symbol), weaks.c
4735 (allocate_weak_vector): Renamed scm_alloc_double_cell to
4736 scm_double_cell.
4737
4738 2002-02-27 Stefan Jahn <stefan@lkcc.org>
4739
4740 * convert.i.c, convert.c: Better range checking.
4741
4742 * inet_aton.c, fports.c: Commented the inclusion of <winsock2.h>.
4743
4744 * deprecation.c (vsnprintf): Define to `_vsnprintf' for
4745 Windows (MinGW).
4746
4747 2002-02-26 Thien-Thi Nguyen <ttn@giblet.glug.org>
4748
4749 * Makefile.am: Update path to pre-inst-guile automake frag.
4750
4751 2002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
4752
4753 * gc.c (scm_gc_sweep): Make it compile even when deprecated
4754 features are excluded.
4755
4756 2002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
4757
4758 * num2integral.i.c (NUM2INTEGRAL): Fixed signedness problem.
4759
4760 2002-02-25 Gary Houston <ghouston@arglist.com>
4761
4762 * convert.c: include <string.h> for convert_i.c.
4763
4764 2002-02-24 Rob Browning <rlb@defaultvalue.org>
4765
4766 * .cvsignore: add stamp-h1.
4767
4768 2002-02-21 Neil Jerram <neil@ossau.uklinux.net>
4769
4770 * unif.c (scm_array_to_list): Correct name, which had been
4771 accidentally changed to scm_t_arrayo_list!
4772
4773 2002-02-20 Mikael Djurfeldt <mdj@linnaeus>
4774
4775 * gc.c (scm_gc_sweep): Print an error message when aborting due to
4776 underflowing scm_mallocated.
4777
4778 2002-02-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4779
4780 * gc.h, gc.c (scm_must_malloc, scm_must_realloc, scm_must_strdup,
4781 scm_must_strndup, scm_done_malloc, scm_done_free, scm_must_free):
4782 Reimplemented using the new scm_gc_malloc, etc., functions and
4783 deprecated.
4784
4785 2002-02-11 Thien-Thi Nguyen <ttn@giblet.glug.org>
4786
4787 * Makefile.am (bin_PROGRAMS): Move `guile_filter_doc_snarfage'
4788 to `noinst_PROGRAMS'.
4789 (bin_SCRIPTS): Move all values to `noinst_SCRIPTS'; delete.
4790 (noinst_PROGRAMS, noinst_SCRIPTS): New.
4791
4792 2002-02-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4793
4794 * gc.h, gc.c (scm_gc_sweep): Issue deprecation warning when
4795 non-zero is returned from a port or smob free function.
4796 (scm_malloc, scm_realloc, scm_strndup, scm_strdup,
4797 scm_gc_register_collectable_memory,
4798 scm_gc_unregister_collectable_memory, scm_gc_malloc,
4799 scm_gc_realloc, scm_gc_free, scm_gc_strndup, scm_gc_strdup): New.
4800
4801 * backtrace.c, continuations.c, convert.i.c, coop-threads.c,
4802 debug-malloc.c, dynl.c, environments.c, environments.h,
4803 extensions.c, filesys.c, fports.c, gc.c, gc.h, gh_data.c, goops.c,
4804 guardians.c, hooks.c, init.c, keywords.c, load.c, numbers.c,
4805 ports.c, posix.c, procs.c, rdelim.c, regex-posix.c, root.c,
4806 smob.c, stime.c, strings.c, struct.c, struct.h, symbols.c, unif.c,
4807 vectors.c, weaks.c: Use scm_gc_malloc/scm_malloc and
4808 scm_gc_free/free instead of scm_must_malloc and scm_must_free, as
4809 appropriate. Return zero from smob and port free functions.
4810
4811 * debug-malloc.c (scm_malloc_reregister): Handle "old == NULL".
4812
4813 * deprecation.h, deprecation.c: Reimplemented to allow deprecation
4814 messages while the GC is running.
4815 (scm_c_issue_deprecation_warning_fmt): New.
4816
4817 * fports.c (scm_setvbuf): Reset read buffer to saved values when
4818 it is pointing to the putback buffer.
4819
4820 2002-02-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
4821
4822 * gsubr.c (create_gsubr): On "too many args" error,
4823 also display arg count and name. Thanks to Bill Schottstaedt.
4824
4825 2002-02-05 Thien-Thi Nguyen <ttn@giblet.glug.org>
4826
4827 * Makefile.am: Include $(top_srcdir)/pre-inst-guile.am.
4828
4829 (bin_SCRIPTS): Remove guile-snarf-docs-texi.
4830 (alldotdocfiles, snarf2checkedtexi, dotdoc2texi): New vars.
4831 (guile.texi, guile-procedures.texi): Use $(dotdoc2texi).
4832
4833 * guile-snarf-docs-texi.in: Bye bye.
4834
4835 2002-02-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4836
4837 * symbols.c (scm_make_symbol): Fix typo in docstring.
4838
4839 * symbols.h (scm_mem2uninterned_symbol, scm_symbol_interned_p,
4840 scm_make_symbol): New prototypes.
4841
4842 2002-02-03 Marius Vollmer <mvo@zagadka.ping.de>
4843
4844 * symbols.h (SCM_SET_SYMBOL_HASH): Removed.
4845 (SCM_SYMBOL_INTERNED_P): New.
4846 * symbols.c (scm_symbol_hash): Use scm_ulong2num instead of
4847 SCM_MAKINUM since hash values can well be bignums.
4848 (scm_mem2symbol): Only use hash values below SCM_T_BITS_MAX/2.
4849 This signals a interned symbol.
4850 (scm_mem2uninterned_symbol, scm_symbol_interned_p,
4851 scm_make_symbol): New.
4852
4853 * print.c (scm_iprin1): Print uninterned symbols unreadably.
4854
4855 2002-02-02 Thien-Thi Nguyen <ttn@giblet.glug.org>
4856
4857 * __scm.h (HAVE_UINTPTR_T): Only define if UINTPTR_T attributes
4858 are defined: UINTPTR_MAX, INTPTR_MAX, INTPTR_MIN.
4859 Thanks to Dave Love.
4860
4861 2002-01-31 Marius Vollmer <mvo@zagadka.ping.de>
4862
4863 * symbols.c (scm_gensym): Use " g" as default prefix, not "g".
4864 This might help to make unintended clashes less likely.
4865 (scm_string_to_symbol): Protect the string until the symbols is
4866 created.
4867
4868 2002-01-31 Stefan Jahn <stefan@lkcc.org>
4869
4870 * convert.c, convert.h, convert.i.c: New files containing C
4871 array to Scheme conversion helpers meant to be replacement
4872 functions for the deprecated gh interface.
4873
4874 * Makefile.am: Setup rules for new `convert.*' files.
4875
4876 2002-01-28 Stefan Jahn <stefan@lkcc.org>
4877
4878 * symbols.c (scm_c_symbol2str): New function, replacement for
4879 `gh_scm2newsymbol()'.
4880
4881 * strings.c (scm_c_substring2str): New function. Proper
4882 replacement for `gh_get_substr()'.
4883
4884 * socket.c: Include `stdint.h' if available for the `uint32_t'
4885 declaration.
4886
4887 * scmsigs.c (scm_sigaction): Initialize `chandler' (inhibits
4888 compiler warning).
4889
4890 * backtrace.c: Include `lang.h' for GUILE_DEBUG conditional.
4891
4892 2002-01-22 Neil Jerram <neil@ossau.uklinux.net>
4893
4894 Other changes unrelated to Elisp...
4895
4896 * eval.c (scm_m_if): Use s_if rather than repeating string literal
4897 "if".
4898 (comments): Fix a few typos.
4899 (scm_for_each): Add parentheses around oddly unparenthesized
4900 if/while conditions.
4901
4902 * read.c (scm_read_opts): Add full stop at end of doc for
4903 `keywords' option.
4904
4905 * script.c (scm_compile_shell_switches): Use scm_str2symbol
4906 instead of gh_symbol2scm.
4907
4908 * srcprop.h (SRCPROPBRK): Return C type rather than SCM.
4909 (SRCBRKP): Use SRCPROPBRK rather than duplicating its logic.
4910
4911 * srcprop.c (scm_srcprops_to_plist, scm_source_property): Change
4912 SRCPROPBRK (x) to SCM_BOOL (SRCPROPBRK (x)).
4913
4914 First batch of changes for Elisp support...
4915
4916 * alist.c, async.c, boolean.c, dynl.c, eval.c, filesys.c,
4917 fluids.c, list.c, load.c, options.c, posix.c, print.c, sort.c,
4918 throw.c, vectors.c, weaks.c: Add #include for lang.h.
4919
4920 * eval.c, eval.h, init.c, lang.c, lang.h: Use SCM_ENABLE_ELISP to
4921 conditionalize compilation and initialization of Elisp support
4922 function.
4923
4924 * alist.c (scm_assq, scm_assv, scm_assoc), async.c
4925 (scm_asyncs_pending, scm_run_asyncs, noop), backtrace.c
4926 (scm_set_print_params_x), dynl.c (scm_make_argv_from_stringlist),
4927 filesys.c (fill_select_type, retrieve_select_type), fluids.c
4928 (scm_swap_fluids, scm_swap_fluids_reverse), list.c (scm_null_p,
4929 scm_ilength, scm_append_x, scm_last_pair, scm_reverse,
4930 scm_reverse_x, scm_list_ref, scm_list_set_x, scm_list_cdr_set_x,
4931 scm_c_memq, scm_memv, scm_member), load.c (scm_search_path),
4932 options.c (change_option_setting, scm_options), posix.c
4933 (environ_list_to_c), print.c (scm_iprlist), throw.c
4934 (scm_exit_status), vectors.c (scm_vector), weaks.c
4935 (scm_weak_vector): Use SCM_NULL_OR_NIL_P instead of SCM_NULLP.
4936
4937 * boolean.c (scm_not): Use `SCM_FALSEP || SCM_NILP' instead of
4938 just SCM_FALSEP.
4939
4940 * boolean.c (scm_boolean_p): Use `SCM_BOOLP || SCM_NILP' instead
4941 of just SCM_BOOLP.
4942
4943 * eval.c (scm_lisp_nil, scm_lisp_t, s_nil_ify, scm_m_nil_ify,
4944 s_t_ify, scm_m_t_ify, s_0_cond, scm_m_0_cond, s_0_ify,
4945 scm_m_0_ify, s_1_ify, scm_m_1_ify): Removed.
4946 (scm_m_atfop): Support function aliasing. Support both function
4947 args, which need transformation, and macro args, which do not.
4948 Add explanatory comments.
4949 (SCM_CEVAL): In switch cases for SCM_IM_AND, SCM_IM_COND,
4950 SCM_IM_DO, SCM_IM_IF and SCM_IM_OR, add `|| SCM_NILP' to existing
4951 checks for SCM_FALSEP. In switch case for SCM_IM_NIL_COND, use
4952 SCM_NULLP || SCM_NILP instead of checks against (removed)
4953 scm_lisp_nil. Removed switch cases for SCM_IM_NIL_IFY,
4954 SCM_IM_T_IFY, SCM_IM_0_COND, SCM_IM_0_IFY, SCM_IM_1_IFY.
4955
4956 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
4957 scm_m_while, scm_nil_eq): Commented out; I don't think we need
4958 these, but I don't want to remove them yet, just in case.
4959 (scm_init_lang): Define `%nil' variable on Scheme level to hold
4960 Elisp nil value.
4961
4962 * lang.h (SCM_NILP): Test against Elisp nil value instead of
4963 against (removed) scm_lisp_nil.
4964 (SCM_NILNULLP, SCM_NIL2EOL, SCM_EOL2NIL): Commented out.
4965 (SCM_NULL_OR_NIL_P): New.
4966
4967 * list.c (scm_append): Use SCM_VALIDATE_NULL_OR_NIL instead of
4968 SCM_VALIDATE_NULL.
4969
4970 * print.c (scm_isymnames): Fix comment. Remove #@nil-ify,
4971 #@t-ify, #@0-cond, #@0-ify, #@1-ify. Add #nil (for SCM_ELISP_NIL
4972 value).
4973
4974 * sort.c (scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
4975 scm_sort_x, scm_sort, scm_stable_sort_x, scm_stable_sort): Use
4976 SCM_NULL_OR_NIL_P instead of SCM_NULLP. In constructions like `if
4977 (SCM_NULLP (x)) return SCM_EOL;', return x rather than SCM_EOL.
4978
4979 * tags.h (SCM_IM_NIL_IFY, SCM_IM_T_IFY, SCM_IM_0_COND,
4980 SCM_IM_0_IFY, SCM_IM_1_IFY): Removed.
4981 (SCM_IM_BIND, SCM_IM_DELAY, SCM_IM_CALL_WITH_VALUES, SCM_UNBOUND):
4982 Numbering shifted down accordingly.
4983 (SCM_ELISP_NIL): New IFLAG.
4984
4985 * validate.h (SCM_VALIDATE_NULL_OR_NIL): New.
4986
4987 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
4988
4989 * eval.c: Removed outdated references to "everr". Improved some
4990 comments.
4991
4992 (scm_deval_args, deval_args): Renamed scm_deval_args to
4993 deval_args, since it is not part of the interface.
4994
4995 (SCM_CEVAL): Added (maybe somewhat verbose) comment. Avoid to
4996 use references to debug.vect[0] before it exists. Add parentheses
4997 to switch statement.
4998
4999 * goops.h: Added local emacs variables.
5000
5001 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
5002
5003 * eval.[ch] (scm_deval_args): Made static.
5004
5005 * srcprop.c (scm_source_property): Remove redundant SCM_IMP
5006 test.
5007
5008 * strings.c (scm_c_string2str): Clarified comment. Replaced
5009 THINKME by FIXME for uniformness. Removed question about whether
5010 arguments need to be protected from garbage collection: Arguments
5011 must be protected as any other variable.
5012
5013 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
5014
5015 * procs.h (SCM_CLOSURE_BODY): New Macro.
5016
5017 * debug.c (scm_procedure_name, scm_procedure_source), eval.c
5018 (SCM_CEVAL, SCM_APPLY), goops.c (scm_sys_initialize_object,
5019 get_slot_value, set_slot_value), procs.c
5020 (scm_procedure_documentation), sort.c (closureless), stacks.c
5021 (get_applybody): Replace SCM_CDR (SCM_CODE (...)) by
5022 SCM_CLOSURE_BODY.
5023
5024 * sort.c (closureless): Prefer !SCM_FOOP over SCM_NFOOP.
5025
5026 2001-12-26 Marius Vollmer <mvo@zagadka.ping.de>
5027
5028 * Makefile.am (guile-procedures.txt): When we don't have makeinfo,
5029 use "cp" instead.
5030
5031 2001-12-16 Marius Vollmer <mvo@zagadka.ping.de>
5032
5033 * stacks.c, stacks.h (scm_t_stackype): Renamed to scm_stack_type
5034 everywhere.
5035
5036 * continuations.c (scm_make_continuation): Do not retain the
5037 throw_value when the continuation is invoked.
5038
5039 2001-12-08 Stefan Jahn <stefan@lkcc.org>
5040
5041 * strings.c (scm_c_string2str): New function. Converts a
5042 given Scheme string into a C string. Also put in two
5043 THINKME's regarding the malloc policy for the missing converter
5044 routines.
5045
5046 2001-12-01 Neil Jerram <neil@ossau.uklinux.net>
5047
5048 * gh_data.c (gh_module_lookup): Use scm_str2symbol rather than
5049 gh_symbol2scm.
5050
5051 2001-11-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
5052
5053 * gc.h (SCM_GC_CELL_WORD, SCM_GC_CELL_OBJECT,
5054 SCM_GC_SET_CELL_WORD, SCM_GC_SET_CELL_OBJECT): New macros.
5055
5056 (SCM_GC_CELL_TYPE, SCM_CELL_WORD, SCM_CELL_OBJECT,
5057 SCM_SET_CELL_WORD, SCM_SET_CELL_OBJECT, SCM_FREE_CELL_CDR,
5058 SCM_GC_SET_CELL_OBJECT): Express in terms of SCM_GC_CELL_*
5059 macros.
5060
5061 (SCM_FREE_CELL_P): Express in terms of SCM_GC_CELL_TYPE.
5062
5063 * inline.h (scm_alloc_cell, scm_alloc_double_cell): Use
5064 SCM_GC_CELL_* macros when accessing free cells.
5065
5066 2001-11-25 Marius Vollmer <mvo@zagadka.ping.de>
5067
5068 * vectors.h (SCM_MAKE_VECTOR_TAG): New.
5069 * unif.h (SCM_MAKE_BITVECTOR_TAG, SCM_MAKE_UVECTOR_TAG): New.
5070 * symbols.h (SCM_MAKE_SYMBOL_TAG): New.
5071 * strings.h (SCM_MAKE_STRING_TAG): New.
5072 * procs.h (SCM_MAKE_CCLO_TAG): New.
5073 * numbers.h (SCM_MAKE_BIGNUM_TAG): New.
5074
5075 * goops.h: Replaced SCM_DEBUG_DEPRECATED with
5076 !SCM_ENABLE_DEPRECATED.
5077
5078 * async.c, async.h (scm_system_async_mark_from_signal_handler):
5079 New.
5080
5081 * scmsigs.c (scm_take_signal): Removed all code that assumes that
5082 signal handlers are allowed to divert the flow of control. Call
5083 scm_system_async_mark_from_signal_handler instead of
5084 scm_system_async_mark.
5085
5086
5087 Deprecated SCM_NEWCELL and SCM_NEWCELL2. Added scm_alloc_cell and
5088 scm_alloc_double_cell in their place.
5089
5090 * gc.h (SCM_GC_SET_ALLOCATED, scm_debug_newcell,
5091 scm_debug_newcell2, scm_tc16_allocated): Removed from header.
5092 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
5093 (SCM_NEWCELL, SCM_NEWCELL2): Implement in terms of
5094 scm_deprecated_newcell and scm_deprecated_newcell2.
5095
5096 gc.c (scm_tc16_allocated): Only define when including deprecated
5097 features.
5098 (scm_debug_newcell, scm_debug_newcell2): Removed.
5099 (scm_init_storage): Do not initialize scm_tc16_allocated.
5100 (scm_init_gc): Do it here.
5101 (allocated_mark): New, from old code.
5102 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
5103
5104 * inline.c, inline.h: New files.
5105 * Makefile.am: Added them in all the right places.
5106
5107 * _scm.h: Include "libguile/inline.h".
5108
5109 * alist.c, coop-threads.c, debug.c, environments.c, eval.c,
5110 fports.c, gh_data.c, goops.c, guardians.c, lang.c, list.c,
5111 num2float.i.c, numbers.c, pairs.c, ports.c, print.c, procs.c,
5112 smob.c, smob.h, strings.c, strports.c, struct.c, symbols.c,
5113 unif.c, variable.c, vectors.c, vports.c, weaks.c: Replaced
5114 SCM_NEWCELL and SCM_NEWCELL2 with scm_alloc_cell and
5115 scm_alloc_double_cell, respectively.
5116
5117 2001-11-23 Marius Vollmer <mvo@zagadka.ping.de>
5118
5119 * modules.c (scm_c_use_module): Adapt to changes to
5120 `process-use-modules'.
5121
5122 2001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
5123
5124 * numbers.c (scm_divide): Fix more division by zero errors.
5125
5126 2001-11-21 Gary Houston <ghouston@arglist.com>
5127
5128 * Makefile.am (OMIT_DEPENDENCIES): removed, since it seems to be
5129 obsolete. autogen.sh says:
5130 invalid unused variable name: `OMIT_DEPENDENCIES'
5131
5132 2001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
5133
5134 * numbers.c (scm_divide): Fix (/ 0). Thanks to Keith Wright for
5135 reporting the bug.
5136
5137 2001-11-21 Marius Vollmer <mvo@zagadka.ping.de>
5138
5139 * Makefile.am (install-exec-hook): Prepend $(DESTDIR) to filename.
5140 Thanks to Eric Gillespie, Jr!
5141
5142 2001-11-21 Stefan Jahn <stefan@lkcc.org>
5143
5144 * win32-socket.c (getservent, setservent, endservent,
5145 getprotoent, setprotoent, endprotoent): New functions.
5146 Appropriate replacements for M$-Windows.
5147
5148 * numbers.c (SIZE_MAX, PTRDIFF_MAX, PTRDIFF_MIN): Reintroduced
5149 these definitions for GUILE_DEBUG.
5150
5151 * net_db.c: Include "win32-socket.h" if compiling with a native
5152 M$-Windows compiler. Include some pieces of code (protoent and
5153 servent interface) protected by HAVE_* macros when using a
5154 native M$-Windows compiler.
5155
5156 2001-11-20 Marius Vollmer <mvo@zagadka.ping.de>
5157
5158 * modules.c (scm_c_export): Do nothing when the first argument is
5159 already the terminating NULL. Thanks to Han-Wen Nienhuys!
5160
5161 2001-11-20 Thien-Thi Nguyen <ttn@glug.org>
5162
5163 * Makefile.am (libpath.h): In SCM_BUILD_INFO,
5164 also include `buildstamp'.
5165
5166 2001-11-18 Rob Browning <rlb@defaultvalue.org>
5167
5168 * version.c
5169 (s_scm_major_version): use SCM_MAJOR_VERSION.
5170 (s_scm_minor_version): use SCM_MINOR_VERSION.
5171 (s_scm_micro_version): use SCM_MICRO_VERSION.
5172 (s_scm_version): use SCM_MAJOR_VERSION, SCM_MINOR_VERSION, and
5173 SCM_MICRO_VERSION.
5174
5175 * version.h.in
5176 (SCM_MAJOR_VERSION): renamed from SCM_GUILE_MAJOR_VERSION.
5177 (SCM_MINOR_VERSION): renamed from SCM_GUILE_MINOR_VERSION.
5178 (SCM_MICRO_VERSION): renamed from SCM_GUILE_MICRO_VERSION.
5179
5180 2001-11-18 Neil Jerram <neil@ossau.uklinux.net>
5181
5182 * vectors.c (scm_vector_move_left_x, scm_vector_move_right_x):
5183 Rewrite docstrings without reference to substring-move-left/right,
5184 since the latter no longer exist.
5185
5186 2001-11-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
5187
5188 * eval.c: Removed bogus comment about acros.
5189
5190 (scm_unmemocar): Use !SCM_CONSP instead of SCM_IMP.
5191 Minimize scope of local variable. Eliminate dependency on
5192 macro DEBUG_EXTENSIONS.
5193
5194 (s_splicing): New error message string.
5195
5196 (scm_m_body): Issue 'bad body' message rather than 'missing
5197 expression' message.
5198
5199 (scm_m_quote): Eliminate unnecessary copying.
5200
5201 (scm_m_lambda, scm_m_letstar, scm_m_letrec, scm_m_let): Leave the
5202 checking of the body to scm_m_body.
5203
5204 (scm_m_do): Move comment to function header. Rename arg1 to
5205 binding. Made the code a bit easier to read.
5206
5207 (evalcar): Removed.
5208
5209 (iqq): Added a comment. Changed the depth parameter to
5210 unsigned. Use size_t for vector lengths. Make sure vector object
5211 is gc protected as long as its contents are read. Add some syntax
5212 checks. Get rid of unnecessary SCM_IMP test. Clean up the
5213 control structure a bit.
5214
5215 (scm_m_delay): Added comment about the implementation of
5216 scm_m_delay.
5217
5218 (scm_m_define): Add comment about guile's currying define
5219 syntax. Renamed 'proc' to 'name'. Eliminate dependency on macro
5220 DEBUG_EXTENSIONS. Simplified code a bit. Eliminate SICP code.
5221
5222 (scm_m_letrec1): Removed. Part of the functionality is taken
5223 over by the new function 'transform_bindings'.
5224
5225 (transform_bindings): New function. Takes over some of the
5226 functionality of removed function 'scm_m_letrec1', namely to split
5227 a list of bindings into a reversed list of variables and a list of
5228 initializers.
5229
5230 (scm_m_letrec): Call 'transform_bindings'.
5231
5232 (scm_m_let): Minimized scope of local variables. Renamed 'proc'
5233 to 'temp' and 'arg1' to 'binding'. Eliminated redundant SCM_NIMP
5234 test. Use 'transform_bindings'. Fixed scoping error with named
5235 let (Thanks to Aubrey Jaffer for reporting the bug and to Neil
5236 Jerram for suggesting the fix). Cleaned up the control structure
5237 a bit.
5238
5239 (scm_m_expand_body): Use 'transform_bindings'. Eliminated
5240 unnecessary consing. Eliminated unnecessary
5241 SCM_DEFER/ALLOW_INTS.
5242
5243 (SCM_CEVAL): Un-obfuscated some loops.
5244
5245 2001-11-16 Neil Jerram <neil@ossau.uklinux.net>
5246
5247 * gc.h (scm_unhash_name): Old declaration removed.
5248
5249 * eval.c (s_scm_eval): Change @var{primitive-eval} to
5250 @code{primitive-eval}.
5251
5252 * feature.c, vectors.c, net_db.c, unif.c, weaks.c, struct.c,
5253 version.c, alist.c, ports.c, ramap.c, unif.c, strings.c, list.c:
5254 Change @deffnx lines in docstrings to say {Scheme Procedure}
5255 rather than primitive or procedure.
5256
5257 * posix.c (scm_execl), filesys.c (scm_close), unif.c
5258 (scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
5259 scm_bit_set_star_x, scm_bit_invert_x), ramap.c (scm_array_fill_x,
5260 scm_array_for_each, scm_array_index_map_x), vectors.c (scm_vector,
5261 scm_make_vector, scm_vector_to_list, scm_vector_fill_x), strop.c
5262 (scm_string_split, scm_string_ci_to_symbol), strings.c
5263 (scm_string_p), sort.c (scm_merge), print.c (scm_newline),
5264 macros.c (scm_macro_type), alist.c (scm_acons, scm_assq):
5265 Docstring fixes and improvements reflecting edits that have been
5266 made in the reference manual source.
5267
5268 * objprop.c (scm_object_properties, scm_set_object_properties_x,
5269 scm_object_property, scm_set_object_property_x): Remove invalid
5270 @deffnx lines for corresponding procedure property primitives.
5271
5272 These changes add a @deffnx C function declaration and function
5273 index entries for each Guile primitive to the copy of the doc
5274 snarf output that is used for reference manual synchronization.
5275 Online help is unchanged.
5276
5277 * snarf.h (SCM_SNARF_DOCS): Output primitive's C function name.
5278 (SCM_DEFINE, SCM_DEFINE1, SCM_REGISTER_PROC): Supply to C function
5279 name to SCM_SNARF_DOCS.
5280
5281 * guile-snarf-docs-texi.in: Pass the shell script's arguments into
5282 snarf-check-and-output-texi.
5283
5284 * Makefile.am (guile-procedures.texi): New rule.
5285 (BUILT_SOURCES, guile.texi, guile-procedures.txt, CLEANFILES):
5286 Changed so that the last stage of doc snarfing is now performed
5287 twice, once to produce guile-procedures.txt for online help, and
5288 once to produce guile.texi for reference manual synchronization.
5289
5290 2001-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
5291
5292 * eval.c (RETURN): Wrap in do{}while(0) in order to make it
5293 safely usable as a single statement followed by a ';', for example
5294 in an if statement.
5295
5296 (SCM_CEVAL, SCM_APPLY): Clean up code using 'RETURN'.
5297
5298 2001-11-13 Neil Jerram <neil@ossau.uklinux.net>
5299
5300 * random.c (scm_random_solid_sphere_x,
5301 scm_random_hollow_sphere_x): Correct "shere" typos.
5302
5303 * hashtab.c (scm_hash_fold): Add missing apostrophe to docstring.
5304
5305 * version.c (scm_version): Update docstring to include
5306 `micro-version'.
5307
5308 2001-11-13 Marius Vollmer <mvo@zagadka.ping.de>
5309
5310 * modules.c (scm_c_export): Call va_end after collecting the
5311 symbols.
5312
5313 * strop.h, strop.c (scm_substring_move_left_x,
5314 scm_substring_move_right_x): Removed.
5315
5316 * __scm.h (HAVE_UINTPTR_T, HAVE_PTRDIFF_T, HAVE_LONG_LONG,
5317 HAVE_LONG_LONGS): Define to "1" when defining them, to mirror what
5318 configure does.
5319
5320 2001-11-12 Marius Vollmer <mvo@zagadka.ping.de>
5321
5322 * numbers.c: Document macros to define when including
5323 num2integral.i.c. MAX_VALUE and MIN_VALU are no longer used, we
5324 now rely on SIZEOF_ macros that have been figured out at
5325 configure time.
5326
5327 * num2integral.i.c: Adapt to new interface.
5328 (NUM2INTEGRAL): Test whether a fixnum can be represented in the
5329 target type by casting it and checking whether it is still the
5330 same. Do not try to handle bignums for integral types that are
5331 smaller than fixnums. When handling bignums, collect the
5332 magnituse first into a unsigned type, and correctly check for
5333 overflow.
5334 (INTEGRAL2BIG): Do not use MIN_VALUE explicitely by observing that
5335 only -MIN_VALUE can still be negative of all negative numbers (in
5336 twos-complement).
5337
5338 * tags.h (SIZEOF_SCM_T_BITS): Define it appropriately.
5339
5340 * __scm.h: Define HAVE_UINTPTR_T, HAVE_PTRDIFF_T and
5341 HAVE_LONG_LONG depending on whether their size is non-zero.
5342
5343 2001-11-11 Thien-Thi Nguyen <ttn@glug.org>
5344
5345 * strop.c (scm_string_null_p): Docfix; nfc.
5346 Thanks to Scott Lenser.
5347
5348 2001-11-07 Neil Jerram <neil@ossau.uklinux.net>
5349
5350 * extensions.c (scm_load_extension): Canonicalize docstring
5351 whitespace.
5352
5353 * unif.c (scm_uniform_array_write), ports.c
5354 (scm_current_output_port, scm_force_output), dynwind.c
5355 (scm_dynamic_wind), scmsigs.c (scm_setitimer, scm_getitimer),
5356 filesys.c (scm_open, scm_lstat), struct.c
5357 (scm_make_struct_layout), random.c (scm_random,
5358 scm_random_solid_sphere_x, scm_random_hollow_sphere_x, strop.c
5359 (scm_i_index): Remove superfluous whitespace from end of docstring
5360 lines.
5361
5362 * filesys.c (scm_select), guardians.c (scm_guardian_greedy_p),
5363 strings.c (scm_make_string), variable.c (scm_make_variable,
5364 scm_make_undefined_variable, scm_variable_p, scm_variable_set_x,
5365 scm_variable_bound_p), scmsigs.c (scm_setitimer, scm_getitimer),
5366 posix.c (scm_crypt), struct.c (scm_make_vtable_vtable), hashtab.c
5367 (scm_hash_fold), ports.c (scm_port_for_each): Remove superfluous
5368 newline at end of docstrings.
5369
5370 * modules.c (scm_set_current_module): Add missing newline to
5371 docstring.
5372
5373 2001-11-07 Stefan Jahn <stefan@lkcc.org>
5374
5375 * win32-socket.[ch]: New files. Defines Winsock-API error codes
5376 and makes them available through Guile. That is because the
5377 Winsock-API does not store its errors in `errno' and thus cannot
5378 return error messages via `strerror (errno)'.
5379
5380 * socket.c (scm_init_socket): Initialize `win32-socket' part
5381 here under M$-Windows.
5382
5383 * numbers.h: Added missing declaration of
5384 `scm_sys_check_number_conversions()'.
5385
5386 * error.c: Local definition of SCM_I_STRERROR and SCM_I_ERRNO
5387 and use in `(strerror)' and `(system-error)'.
5388
5389 * Makefile.am (EXTRA_libguile_la_SOURCES): Added
5390 `win32-socket.[ch]' to extra source and header files.
5391
5392 2001-11-06 Marius Vollmer <mvo@zagadka.ping.de>
5393
5394 * script.c (scm_shell_usage, scm_compile_shell_switches): Prepend
5395 a call to turn-on-debugging when --debug has been given instead of
5396 turning it on directly. Also, handle new `--no-debug' option,
5397 which might suppress the call to turn-on-debugging.
5398
5399 2001-11-05 Stefan Jahn <stefan@lkcc.org>
5400
5401 * struct.c (s_scm_struct_vtable_p): Corrected docstring.
5402
5403 2001-11-04 Stefan Jahn <stefan@lkcc.org>
5404
5405 * Makefile.am (libguile_la_LIBADD): Added $(THREAD_LIBS_LOCAL)
5406 here (was at guile_LDADD) which describes the dependency
5407 correctly and allows a clean build on Win32.
5408
5409 * __scm.h (SCM_API): Follow-up patch. Renamed __FOO__ macros
5410 into FOO.
5411
5412 * __scm.h: USE_DLL_IMPORT indicates the usage of the DLL
5413 import macros for external libraries (libcrypt, libqthreads,
5414 libreadline and libregex).
5415
5416 * coop-defs.h: Include <winsock2.h> for `struct timeval'.
5417
5418 * posix.c (flock): Added support for flock() in M$-Windows.
5419
5420 * guile.c (SCM_IMPORT): Follow-up patch. Use SCM_IMPORT instead
5421 of __SCM_IMPORT__.
5422
5423 * fports.c (getflags): Differentiate reading and writing pipes
5424 descriptors.
5425
5426 * filesys.c (S_IS*): Redefine all of the S_IS*() macros for
5427 M$-Windows.
5428
5429 * coop.c (coop_condition_variable_timed_wait_mutex): Use
5430 conditionalized error code if `ETIMEDOUT' is not available.
5431 (scm_thread_usleep): Remove bogus declaration of `struct timeval
5432 timeout'.
5433
5434 * numbers.c (PTRDIFF_MIN): Moved this definition where it actually
5435 belongs. That is because NO_PREPRO_MAGIC gets undefined after
5436 each inclusion of `num2integral.i.c'.
5437 (SIZE_MAX): Define NO_PREPRO_MAGIC if SIZE_MAX is undefined.
5438
5439 2001-11-03 Marius Vollmer <mvo@zagadka.ping.de>
5440
5441 * eval.c (scm_m_begin): Allow `(begin)`, with no subforms.
5442 (SCM_CEVAL): Evaluate an empty `begin' to SCM_UNSPECIFIED.
5443
5444 2001-11-02 Mikael Djurfeldt <mdj@linnaeus>
5445
5446 * print.c (scm_iprin1): Mark print state as revealed when
5447 dispatching to generic write or display.
5448
5449 * unif.c (scm_ra2contig): Fixed memory overwrite bug.
5450
5451 2001-11-02 Marius Vollmer <mvo@zagadka.ping.de>
5452
5453 Support for native Win32. Thanks to Stefan Jahn!
5454
5455 * Makefile.am: Add win32-uname.c, win32-uname.h, win32-dirent.c
5456 and win32-dirent.h to extra source and header files. These
5457 include the uname() and the POSIX dirent interface implementation
5458 for M$-Windows. Put `-no-undefined' into LDFLAGS to support
5459 linkers which do not allow unresolved symbols inside shared
5460 libraries. Corrected `guile_filter_doc_snarfage$(EXEEXT)'
5461 dependency.
5462
5463 * __scm.h: Defined SCM_API. This macro gets prepended to all
5464 function and data definitions which should be exported or imported
5465 in the resulting dynamic link library in the Win32 port.
5466
5467 * __scm.h, alist.h, arbiters.h, async.h, backtrace.h, boolean.h,
5468 chars.h, continuations.h, coop-defs.h, coop-threads.h,
5469 debug-malloc.h, debug.h, deprecation.h, dynl.h, dynwind.h,
5470 environments.h, eq.h, error.h, eval.h, evalext.h, extensions.h,
5471 feature.h, filesys.h, fluids.h, fports.h, gc.h, gdb_interface.h,
5472 gdbint.h, gh.h, goops.h, gsubr.h, guardians.h, hash.h, hashtab.h,
5473 hooks.h, init.h, ioext.h, iselect.h, keywords.h, lang.h, list.h,
5474 load.h, macros.h, mallocs.h, modules.h, net_db.h, numbers.h,
5475 objects.h, objprop.h, options.h, pairs.h, ports.h, posix.h, print.h,
5476 procprop.h, procs.h, properties.h, ramap.h, random.h, rdelim.h,
5477 read.h, regex-posix.h, root.h, rw.h, scmsigs.h, script.h, simpos.h,
5478 smob.h, socket.h, sort.h, srcprop.h, stackchk.h, stacks.h, stime.h,
5479 strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h,
5480 tags.h, threads.h, throw.h, unif.h, values.h, variable.h, vectors.h,
5481 vports.h, weaks.h:
5482 Prefixed each each exported symbol with SCM_API.
5483
5484 * continuations.c: Added comment about the use of the extern
5485 declarations of {get,set}context() functions used in the ia64 port.
5486
5487 * continuations.h, gc.c: `__libc_ia64_register_backing_store_base'
5488 is meant to be a `unsigned long *'.
5489
5490 * filesys.c: Include `direct.h' if possible. Use local
5491 `win32-dirent.h' for the native M$-Windows port. Define S_IS*()
5492 macros for M$-Windows. Implementation of `fstat_Win32()' which is
5493 able to differentiate between sockets and other file descriptors.
5494 Use this function as wrapper in `scm_fstat()'. Fixed typo in
5495 `scm_dirname()'.
5496
5497 * fports.c: Include `io.h' is possible. Put `*fp' into referring
5498 statement block in `scm_fport_buffer_add()'.
5499 Some corrections in `getflags()'.
5500
5501 * gdb_interface.h (GDB_INTERFACE): Also support __CYGWIN__.
5502
5503 * guile.c: Make sure to define __SCM_IMPORT__ for shared library
5504 build on Win32. Disable preloaded symbols on Win2 platforms.
5505
5506 * ioext.c, ports.c: Include `io.h' is possible.
5507
5508 * mkstemp.c: Include `process.h' is possible.
5509
5510 * net_db.c: Disable extern declaration of `h_errno' for __CYGWIN__,
5511 too.
5512 Put `scm_return_entry()' into HAVE_GETSERVENT conditional.
5513
5514 * posix.c: Remove unnecessary dirent includes and defines. Include
5515 local `win32-uname.h' for MinGW. Extern declaration of
5516 `mkstemp()' for systems where it does not exists. Make
5517 `getlogin()' available on M$-Windows.
5518
5519 * scmsigs.c: Made `usleep()' avalable on MinGW.
5520
5521 * stime.c: On M$-Windows `tzname[]' is known to be `_tzname[]'.
5522
5523 * win32-dirent.c: Include "win32-dirent.h", not "dirent.h".
5524
5525 * win32-uname.c: Include "win32-uname.h", not "uname.h".
5526
5527 2001-10-28 Mikael Djurfeldt <mdj@linnaeus>
5528
5529 * unif.c (scm_uniform_array_read_x, scm_uniform_array_write):
5530 Don't apply scm_uniform_vector_length on arrays.
5531
5532 2001-10-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
5533
5534 * eval.c (scm_lookupcar, scm_m_letstar, scm_m_do, iqq,
5535 scm_m_define, scm_m_letrec1, scm_m_let, scm_m_expand_body,
5536 scm_macroexp, unmemocopy, scm_eval_args, scm_deval_args,
5537 SCM_CEVAL, scm_map, scm_init_eval): When building lists, prefer
5538 scm_list_<n> over scm_cons[2]?.
5539
5540 (scm_unmemocar, scm_m_cond, scm_m_letstar, scm_m_letrec1,
5541 scm_m_let, scm_m_atbind, unmemocopy, SCM_CEVAL, SCM_APPLY): Use
5542 SCM_C[AD][AD]R instead of explicit form.
5543
5544 (scm_m_set_x, scm_m_cond, scm_m_letstar, scm_m_do): Reordered
5545 comparison parameters.
5546
5547 (scm_m_case, scm_m_cond, scm_m_letstar, scm_m_do, SCM_CEVAL): Use
5548 !SCM_NULLP instead of SCM_NIMP.
5549
5550 (scm_m_case): Don't copy the form. Renamed proc to clause and
5551 minimized its scope. Renamed x to clauses. Removed side
5552 effecting operation from macro call.
5553
5554 (scm_m_cond): Don't copy the form. Renamed arg1 to clause and
5555 minimized its scope. Renamed x to clauses. Minimized the scope
5556 of variable 'len'. Make sure the else clause is treated specially
5557 even in case of '=>' occurences. Don't change the else to #t in
5558 order to be able to distinguish this case in the evaluator. Leave
5559 type checking of the recipient to the evaluator.
5560
5561 (scm_c_improper_memq): Made the comment somewhat clearer.
5562
5563 (scm_m_lambda): Renamed proc to formals. Removed unnecessary
5564 test for SCM_IM_LET at the place of the formal parameters.
5565 Simplified the formal parameter checking.
5566
5567 (scm_m_letstar): Added Comment. Renamed proc to bindings.
5568 Renamed arg1 to binding and minimized its scope. Eliminated
5569 unnecessary consing.
5570
5571 (scm_m_do): Renamed proc to bindings. Minimized the scope of
5572 variable 'len'.
5573
5574 (build_binding_list): New static function.
5575
5576 (unmemocopy): Don't use SCM_TYP7 on pairs (it's unclean).
5577 Further, split up the 'letrec' unmemoizing code to the
5578 corresponding parts for 'do', 'let' and 'letrec', adding comments
5579 to each form. Cleanup the handling of the do form (This removes
5580 some *real* code :-).
5581
5582 (SCM_CEVAL): Removed side effecting operation from macro call.
5583 Handle the 'else clause of the 'cond form specially - the symbol
5584 'else is not replaced with #t any more.
5585
5586 2001-10-14 Gary Houston <ghouston@arglist.com>
5587
5588 * version.c (scm_version): use sprintf instead of snprintf,
5589 for portability. thanks to Bill Schottstaedt.
5590
5591 2001-10-14 Mikael Djurfeldt <mdj@linnaeus>
5592
5593 * read.c (scm_lreadr): When user-defined hash procedure returns
5594 SCM_UNSPECIFIED: Fall back to standard handling instead of raising
5595 an exception. (This prevents parsing of uniform vectors from
5596 interfering with parsing of numbers.)
5597
5598 2001-10-13 Marius Vollmer <mvo@zagadka.ping.de>
5599
5600 * numbers.c: Set NO_PREPRO_MAGIC when defining our version of
5601 PTRDIFF_MIN. Thanks to Ken Raeburn.
5602
5603 2001-10-07 Marius Vollmer <mvo@zagadka.ping.de>
5604
5605 * Makefile.am (EXTRA_libguile_la_SOURCES): Added "mkstemp.c".
5606
5607 * eval.c (scm_m_atbind): First try to find the variable without
5608 defining it locally; when it has not been found, define it
5609 locally.
5610
5611 * modules.c (module_variable): Pass over variables that exist but
5612 are unbound.
5613
5614 2001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
5615
5616 * backtrace.c (display_backtrace_file_and_line): Only use
5617 scm_basename when POSIX support is compiled in. Thanks to Chris
5618 Cramer.
5619
5620 2001-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
5621
5622 * numbers.c (mem2uinteger): Return number read so far when coming
5623 across a hexdigit after having read a # or if not reading a hex
5624 value. This will enable the calling code to correctly handle
5625 forms like 1e2. (The background is, that the exponent markers d,
5626 e and f are also hexdigits.) Thanks to Mikael Djurfeldt for
5627 providing this patch.
5628
5629 (mem2complex): Fix erroneous double-negation. Now, numbers like
5630 1-i will be read correctly.
5631
5632 2001-10-12 Mikael Djurfeldt <mdj@linnaeus>
5633
5634 * debug.c (scm_mem_to_proc): Fixed typo in previous change.
5635
5636 * validate.h (SCM_VALIDATE_DOUBLE_DEF_COPY): New macro.
5637
5638 2001-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5639
5640 * print.c (scm_print_state_vtable, print_state_pool):
5641 Initialize. These variables are now registered as gc roots.
5642
5643 (scm_current_pstate): Update documentation.
5644
5645 (scm_current_pstate, scm_make_print_state, scm_free_print_state,
5646 scm_prin1, scm_init_print): print_state_pool is registered as a
5647 gc root and thus does not need to be protected by a surrounding
5648 pair any more.
5649
5650 (make_print_state): The car of print_state_pool no longer holds
5651 the scm_print_state_vtable.
5652
5653 (scm_current_pstate, scm_make_print_state, print_circref,
5654 scm_iprin1, scm_prin1, scm_iprlist): Prefer !SCM_<foo> over
5655 SCM_N<foo>.
5656
5657 (scm_prin1): When building lists, prefer scm_list_<n> over
5658 scm_cons[2]?.
5659
5660 (scm_iprlist): Removed a redundant SCM_IMP test.
5661
5662 (scm_simple_format): Use SCM_EQ_P to compare SCM values.
5663
5664 2001-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5665
5666 * debug.c (scm_make_iloc): Prefer !SCM_<foo> over SCM_N<foo>.
5667
5668 (scm_memcons, scm_mem_to_proc): When building lists, prefer
5669 scm_list_<n> over scm_cons[2]?.
5670
5671 (scm_mem_to_proc): Prefer SCM_CONSP over SCM_NIMP.
5672
5673 (scm_procedure_name): Use SCM_CADR instead of explicit form.
5674
5675 (debugobj_print): Coerce scm_intprint arg 1 to long, not int.
5676 Thanks to Rob Browning for the patch (see log entry 2001-09-21) -
5677 for some reason his patch didn't make it into the cvs.
5678
5679 2001-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
5680
5681 * numbers.c (mem2decimal_from_point): Cleaned up the parsing a
5682 little bit - should even be somewhat more accurate now.
5683
5684 2001-10-08 Rob Browning <rlb@defaultvalue.org>
5685
5686 * gc.c: support ia64 register backing store.
5687 (SCM_MARK_BACKING_STORE): new macro.
5688
5689 * continuations.h: support ia64 register backing store.
5690 (struct scm_t_contregs): add ia64 register backing store.
5691
5692 * continuations.c: support ia64 register backing store.
5693 (continuation_mark): mark ia64 register backing store.
5694 (continuation_free): free ia64 register backing store.
5695 (scm_make_continuation): capture ia64 register backing store.
5696 (copy_stack_and_call): copy ia64 register backing store.
5697
5698 2001-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
5699
5700 * hashtab.c (scm_hash_fn_create_handle_x): The result of assoc_fn
5701 is known to be #f if no entry is found. Thus, use !SCM_FALSEP
5702 instead of SCM_NIMP to test for that case.
5703
5704 * strings.h (SCM_SET_STRING_LENGTH): Cast the length to
5705 scm_t_bits instead of long.
5706
5707 2001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
5708
5709 * tags.h (SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
5710 SCM_T_SIGNED_BITS_MIN): New.
5711 * numbers.h (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM):
5712 Use them to make these macros computable by the preprocessor.
5713
5714 * num2integral.i.c (INTEGRAL2NUM): Let the preprocessor test
5715 whether the integral type fits in a fixnum, not the compiler.
5716 This removes a spurious compiler warning. Also, honor the
5717 NO_PREPRO_MAGIC flag to suppress any preprocessor tests. This is
5718 needed for `long long's.
5719
5720 * numbers.c: Define NO_PREPRO_MAGOC when including
5721 num2integral.c.i for `long long' and `signed long long'.
5722
5723 2001-10-06 Mikael Djurfeldt <mdj@linnaeus>
5724
5725 These changes fixes a race condition in the Guile coop - pthread
5726 compatibility code.
5727
5728 * coop.c (mother_awake_p): New variable.
5729 (coop_create): Set mother_awake_p before creating or signalling
5730 mother; wait until mother is going to sleep before returning.
5731 (mother): Reset mother_awake_p before going to sleep.
5732
5733 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
5734
5735 * options.c (protected_objects, scm_init_options): The content of
5736 protected_objects is now protected from garbage collection using
5737 scm_gc_register_root instead of scm_permanent_object.
5738
5739 (get_option_setting): New static function that computes an option
5740 setting as it was formerly done in the function scm_options.
5741
5742 (get_documented_option_setting): New static function that
5743 returns option documentation as it was formerly done in the
5744 function scm_options. Note that documentation C strings are no
5745 longer precomputed into SCM objects. Instead, they are converted
5746 into SCM strings every time get_documented_option_setting is
5747 called.
5748
5749 (change_option_setting): New static functions that modifies the
5750 option setting as it was formerly done in the function
5751 scm_options. The function is now exception safe, i. e. won't
5752 cause a memory leak when interrupted. Further, only non-immediate
5753 option values are added to the protection list.
5754
5755 (scm_options): This function now has only the purpose to dispatch
5756 to to get_option_setting, get_documented_option_setting or
5757 change_option_setting, depending on the arguments given to
5758 scm_options.
5759
5760 (scm_init_opts): Don't convert documentation C strings into SCM
5761 strings. Further, don't protect any object values: They _must_
5762 be immediate values, otherwise there is no guarantee that they
5763 have not been collected before anyway.
5764
5765 * options.[ch] (scm_t_option): Made type unsigned, name into a
5766 constant char* and val into a scm_t_bits type.
5767
5768 (scm_options, scm_init_opts): The number of options is guaranteed
5769 to be larger or equal to zero. Thus, the type is changed to
5770 unsigned.
5771
5772 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
5773
5774 * num2integral.i.c (NUM2INTEGRAL): Eliminated some warnings about
5775 testing an unsigned value for being >= 0.
5776
5777 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
5778
5779 * numbers.h: Removed old comment about using SCM_CAR to access
5780 non-pair cells.
5781
5782 (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM): Make sure
5783 the return value is signed. Thanks to Brian Crowder for the bug
5784 report.
5785
5786 (SCM_SRS): Avoid unnecessary casting and don't unpack input
5787 values. With this patch, SCM_SRS can be safely used for other
5788 types than scm_t_signed_bits. However, it should still better be
5789 an internal macro and thus be renamed to SCM_I_SRS.
5790
5791 (SCM_MAKINUM, SCM_INUM): Use proper casting.
5792
5793 2001-10-03 Gary Houston <ghouston@arglist.com>
5794
5795 * continuations.h, unif.h: in the descriptions of the bit patterns
5796 of the heap cells, make bit 0 the least significant.
5797
5798 2001-09-25 Thien-Thi Nguyen <ttn@glug.org>
5799
5800 * chars.h (SCM_MAKE_CHAR): Use `scm_t_bits' instead of `intptr_t'.
5801 Thanks to Golubev I. N.
5802
5803 2001-09-25 Gary Houston <ghouston@arglist.com>
5804
5805 * ports.c (scm_drain_input): extended the docstring. thanks to
5806 Alex Schroeder and Thien-Thi Nguyen.
5807
5808 2001-09-23 Mikael Djurfeldt <mdj@linnaeus>
5809
5810 * validate.h (SCM_NUM2FLOAT, SCM_NUM2DOUBLE,
5811 SCM_VALIDATE_FLOAT_COPY, SCM_VALIDATE_DOUBLE_COPY): New
5812 macros. (The NUM names might soon change.)
5813
5814 * numbers.h: Added missing declarations.
5815
5816 2001-09-22 Mikael Djurfeldt <mdj@linnaeus>
5817
5818 * Makefile.am: Distribute num2float.i.c.
5819
5820 * num2float.i.c: New file, multiply included by numbers.c, used
5821 to "templatize" the float <-> num conversion routines.
5822
5823 * numbers.c: New functions: scm_num2float, scm_float2num,
5824 scm_num2double, scm_double2num.
5825
5826 2001-09-21 Rob Browning <rlb@defaultvalue.org>
5827
5828 * .cvsignore: really add version.h
5829
5830 * strings.h (SCM_SET_STRING_LENGTH): coerce "l" to a long.
5831 Otherwise it fails on the alpha. However, we might rather choose
5832 this size conditionally.
5833
5834 * numbers.c (scm_gcd): change "k" to a long from an int.
5835 Otherwise it fails on the alpha. However, we might rather choose
5836 this size conditionally.
5837
5838 * error.c (scm_wta): coerce char* to intptr_t before int
5839 assignment.
5840
5841 * debug.c (debugobj_print): coerce scm_intprint arg 1 to long, not
5842 int.
5843
5844 * chars.h (SCM_MAKE_CHAR): coerce value to intptr_t.
5845
5846 2001-09-20 Mikael Djurfeldt <mdj@linnaeus>
5847
5848 * numbers.c (scm_integer_expt): Accept inexact integer in second
5849 argument. (Thanks to Bill Schottstaedt.)
5850
5851 2001-09-20 Rob Browning <rlb@defaultvalue.org>
5852
5853 * .cvsignore: add version.h
5854
5855 * versiondat.h.in: removed (obsolete).
5856
5857 * version.h.in: renamed from version.h.
5858 (SCM_GUILE_MAJOR_VERSION): new public macro.
5859 (SCM_GUILE_MINOR_VERSION): new public macro.
5860 (SCM_GUILE_MICRO_VERSION): new public macro.
5861
5862 * version.h: renamed to version.h.in.
5863
5864 * version.c
5865 (scm_major_version): support integer *_VERSION macros.
5866 (scm_minor_version): support integer *_VERSION macros.
5867 (scm_micro_version): support integer *_VERSION macros.
5868 (scm_version): support integer *_VERSION macros.
5869
5870 2001-09-20 Mikael Djurfeldt <mdj@linnaeus>
5871
5872 * error.c, error.h: Made error keys globally accessible.
5873 Applications might want to test for these or use them in a direct
5874 call to scm_error.
5875
5876 * num2integral.i.c (NUM2INTEGRAL): Report an error when these
5877 routines are passed an inexact. This change in behavior is
5878 motivated by concordance with R5RS: It is more common that a
5879 primitive doesn't want to accept an inexact for an exact.
5880
5881 2001-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
5882
5883 The following patch partially undoes my patch from 2001-06-30,
5884 where I added the function scm_gc_mark_cell_conservatively. The
5885 function is buggy, since it breaks guile during conservative
5886 marking if a pointer on the stack points directly into the list of
5887 free cells on the heap: With conservative cell marking this will
5888 cause the whole free list to be scanned and marked - boom!
5889
5890 * gc.c (allocated_mark, MARK, heap_segment,
5891 scm_gc_mark_cell_conservatively, scm_init_storage), gc.h
5892 (scm_gc_mark_cell_conservatively): Remove function
5893 scm_gc_mark_cell_conservatively and update the corresponding
5894 comments and uses accordingly. Thanks to Christopher Cramer for
5895 the patch. (Minor corrections by me.)
5896
5897 2001-09-15 Gary Houston <ghouston@arglist.com>
5898
5899 * root.h (scm_root_state): removed the continuation_stack and
5900 continuation_stack_ptr members, which have no apparent purpose.
5901 (scm_continuation_stack, scm_continuation_stack_ptr): #defines
5902 removed.
5903
5904 * root.c (root_mark), init.c (restart_stack, start_stack), gc
5905 (scm_igc): remove all references to contination_stack and
5906 continuation_stack_ptr, avoiding allocation of a vector and
5907 useless processing during gc.
5908
5909 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
5910
5911 * guardians.c (tconc_t, t_tconc): Renamed tconc_t to t_tconc.
5912
5913 (TCONC_IN): Make sure that the cell word 0 is initialized last.
5914
5915 (guardians_t, t_guardians): Renamed guardians_t to t_guardians.
5916
5917 (GUARDIAN, GUARDIAN_DATA): Renamed GUARDIAN to GUARDIAN_DATA.
5918
5919 (guardian_apply, scm_get_one_zombie, scm_make_guardian,
5920 mark_and_zombify): Prefer !SCM_<foo> over SCM_N<foo>.
5921
5922 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
5923
5924 * guardians.c (mark_dependencies_in_tconc,
5925 whine_about_self_centered_zombies, scm_init_guardians): Register
5926 the static global variable `self_centered_zombies' via
5927 scm_gc_register_root, to make some cdr-ing unnecessary.
5928
5929 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
5930
5931 * backtrace.c (display_backtrace_file,
5932 display_backtrace_file_and_line): Use SCM_EQ_P when comparing SCM
5933 values, use SCM_FALSEP when comparing SCM values against #f.
5934 Thanks to Rob Browning for the bug report.
5935
5936 2001-09-12 Martin Baulig <martin@home-of-linux.org>
5937
5938 * strings.[ch] (scm_str2string): New function.
5939
5940 2001-09-06 Marius Vollmer <mvo@zagadka.ping.de>
5941
5942 * gc.c (scm_done_free): Always subtract size from scm_mallocated
5943 when computing nm, even if it's negative.
5944 (scm_must_malloc): Abort on overflow of scm_mtrigger.
5945 (scm_must_realloc): Likewise.
5946
5947 2001-09-01 Michael Livshin <mlivshin@bigfoot.com>
5948
5949 * numbers.c (scm_sys_check_number_conversions): new function,
5950 defined if Guile is compiled in debugging mode. currently checks
5951 `scm_num2ulong', should check much much more.
5952
5953 * num2integral.i.c (NUM2INTEGRAL): when converting a bignum to
5954 unsigned, ensure that it's positive. thanks to Martin Baulig!
5955
5956 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
5957
5958 * __scm.h: Added new section about compile time selectable
5959 features.
5960
5961 (long_long, ulong_long, scm_sizet, SCM_WNA, SCM_OUTOFRANGE,
5962 SCM_NALLOC, SCM_HUP_SIGNAL, SCM_INT_SIGNAL, SCM_FPE_SIGNAL,
5963 SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL, SCM_GC_SIGNAL,
5964 SCM_TICK_SIGNAL, SCM_SIG_ORD, SCM_ORD_SIG, SCM_NUM_SIGS):
5965 Removed.
5966
5967 * deprecation.c (scm_include_deprecated_features): Simplified.
5968
5969 * eval.c (EVALCAR, unmemocopy), eval.h (SCM_XEVALCAR): Use
5970 `SCM_IMP´ instead of `!SCM_CELLP´.
5971
5972 * eval.c (unmemocopy): Eliminate redundant SCM_CELLP tests.
5973 Extract side-effecting operations from macros.
5974
5975 (scm_init_eval): Don't initialize *top-level-lookup-closure*,
5976 scm_top_level_lookup_closure_var and scm_system_transformer.
5977
5978 * gc.c (CELL_P): New local definition to replace SCM_CELLP.
5979
5980 (heap_segment): Use CELL_P instead of SCM_CELLP.
5981
5982 * init.c (start_stack): Don't initialize
5983 scm_top_level_lookup_closure_var and scm_system_transformer.
5984
5985 * modules.c (scm_set_current_module): Don't access
5986 scm_top_level_lookup_closure_var and scm_system_transformer.
5987
5988 (scm_sym2var): Don't call scm_variable_set_name_hint.
5989
5990 (scm_post_boot_init_modules): Removed deprecated initializations.
5991
5992 * print.c (scm_ipruk): Don't access cell contents of non cells.
5993
5994 * strings.c (scm_string_set_x): All strings are writable.
5995
5996 * strings.h (SCM_STRINGP): Use SCM_TYP7 to determine the string
5997 type. There is only one string type now.
5998
5999 (SCM_STRING_COERCE_0TERMINATION_X): Deprecated.
6000
6001 * tags.h: Remove comments about two different string types.
6002
6003 (SCM_CELLP, SCM_NCELLP): Deprecated.
6004
6005 * variable.c (make_variable): Remove code variant for vcells.
6006
6007 * variable.h (SCM_VARIABLE_REF, SCM_VARIABLE_SET,
6008 SCM_VARIABLE_LOC): Remove code variant for vcells.
6009
6010 * __scm.h, deprecation.[ch]: Renamed SCM_DEBUG_DEPRECATED to
6011 SCM_ENABLE_DEPRECATED with the logic reversed.
6012
6013 * dynl.c (moddata, registered_mods), dynl.[ch]
6014 (scm_register_module_xxx, scm_registered_modules,
6015 scm_clear_registered_modules), error.[ch] (scm_wta), eval.c
6016 (*top-level-lookup-closure*), eval.[ch]
6017 (scm_top_level_lookup_closure_var, scm_system_transformer,
6018 scm_eval_3, scm_eval2), gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR,
6019 SCM_SETAND_CDR, SCM_SETOR_CDR, SCM_FREEP, SCM_NFREEP,
6020 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
6021 SCM_GCCDR), gc.[ch] (scm_remember, scm_protect_object,
6022 scm_unprotect_object), modules.c (root_module_lookup_closure,
6023 scm_sym_app, scm_sym_modules, module_prefix, make_modules_in_var,
6024 beautify_user_module_x_var, try_module_autoload_var,
6025 scm_module_full_name), modules.[ch] (scm_the_root_module,
6026 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
6027 ports.h (scm_port, scm_ptob_descriptor, scm_port_rw_active),
6028 ports.[ch] (scm_close_all_ports_except), random.h (scm_rstate,
6029 scm_rng, scm_i_rstate), strings.h (SCM_SLOPPY_STRINGP,
6030 SCM_RWSTRINGP, SCM_STRING_UCHARS, SCM_STRING_CHARS), strings.[ch]
6031 (scm_read_only_string_p, scm_makstr, scm_makfromstr,
6032 scm_make_shared_substring), tags.h (scm_tc7_substring,
6033 SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP, scm_tc7_ssymbol,
6034 scm_tc7_msymbol, scm_tcs_symbols), variable.c (sym_huh),
6035 variable.[ch] (scm_variable_set_name_hint, scm_builtin_variable),
6036 variable.h (SCM_VARVCELL, SCM_UDVARIABLEP, SCM_DEFVARIABLEP):
6037 Removed.
6038
6039 * dynl.c (scm_dynamic_link, scm_dynamic_func), error.c
6040 (scm_error_scm), filesys.c (scm_chown, scm_chmod, scm_open_fdes,
6041 scm_stat, scm_link, scm_rename, scm_delete_file, scm_mkdir,
6042 scm_rmdir, scm_opendir, scm_chdir, scm_symlink, scm_readlink,
6043 scm_lstat, scm_copy_file), fports.c (scm_open_file), ioext.c
6044 (scm_fdopen), net_db.c (scm_gethost, scm_getnet, scm_getproto,
6045 scm_getserv), ports.c (scm_truncate_file, scm_sys_make_void_port),
6046 posix.c (scm_getpwuid, scm_getgrgid, scm_execl, scm_execlp,
6047 scm_execle, scm_mkstemp, scm_utime, scm_access, scm_setlocale,
6048 scm_mknod, scm_crypt, scm_chroot, scm_getpass, scm_sethostname),
6049 regex-posix.c (scm_make_regexp, scm_regexp_exec), simpos.c
6050 (scm_system, scm_getenv), socket.c (scm_inet_aton), stime.c
6051 (setzone, scm_strftime, scm_strptime), vports.c
6052 (scm_make_soft_port): Remove calls to
6053 SCM_STRING_COERCE_0TERMINATION_X. Since the substring type is
6054 gone, all strings are 0-terminated anyway.
6055
6056 * dynl.h (LIBGUILE_DYNL_H, SCM_DYNL_H), random.h (RANDOMH,
6057 SCM_RANDOM_H): Renamed the macros that are defined to inhibit
6058 double inclusion of the same headers to the SCM_<filename>_H
6059 format.
6060
6061 * eval.c (SCM_CEVAL), gc.c (MARK, scm_gc_sweep), gh_data.c
6062 (gh_scm2chars), hash.c (scm_hasher), objects.c (scm_class_of),
6063 print.c (scm_iprin1): The type scm_tc7_substring does not exist
6064 any more.
6065
6066 * ports.h (SCM_PORTP, SCM_OPPORTP, SCM_OPINPORTP, SCM_OPOUTPORTP,
6067 SCM_INPUT_PORT_P, SCM_OUTPUT_PORT_P, SCM_OPENP), tags.h
6068 (SCM_TYP16_PREDICATE), variable.h (SCM_VARIABLEP): Prefer
6069 !SCM_<foo> over SCM_N<foo>.
6070
6071 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
6072
6073 * Makefile.am: Remove references to symbols-deprecated.c.
6074
6075 * symbols.c (scm_init_symbols): Don't initialize deprecated
6076 symbol functions.
6077
6078 * symbols-deprecated.c: Removed.
6079
6080 * fluids.[ch] (scm_internal_with_fluids), gsubr.[ch]
6081 (scm_make_gsubr, scm_make_gsubr_with_generic), hooks.[ch]
6082 (scm_create_hook), list.c (list*), list.h (SCM_LIST[0-9],
6083 scm_listify), list.[ch] (scm_sloppy_memq, scm_sloppy_memv,
6084 scm_sloppy_member), load.c (scm_end_of_file_key), load.[ch]
6085 (scm_read_and_eval_x), numbers.[ch] (scm_mkbig, scm_big2inum,
6086 scm_adjbig, scm_normbig, scm_copybig, scm_2ulong2big, scm_dbl2big,
6087 scm_big2dbl), numbers.h (SCM_FIXNUM_BIT), procs.h
6088 (scm_subr_entry, SCM_SUBR_DOC), procs.[ch] (scm_make_subr_opt,
6089 scm_make_subr, scm_make_subr_with_generic), root.c (setjmp_type,
6090 setjmp_type), root.[ch] (scm_call_catching_errors), smob.[ch]
6091 (scm_make_smob_type_mfpe, scm_set_smob_mfpe), strports.[ch]
6092 (scm_strprint_obj, scm_read_0str, scm_eval_0str), symbols.h
6093 (SCM_CHARS, SCM_UCHARS, SCM_SETCHARS, SCM_SLOPPY_SUBSTRP,
6094 SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_LENGTH_MAX, SCM_LENGTH,
6095 SCM_SETLENGTH, SCM_ROSTRINGP, SCM_ROLENGTH, SCM_ROCHARS,
6096 SCM_ROUCHARS, SCM_SUBSTRP, SCM_COERCE_SUBSTR, scm_strhash,
6097 scm_sym2vcell, scm_sym2ovcell_soft, scm_sym2ovcell,
6098 scm_intern_obarray_soft, scm_intern_obarray, scm_intern,
6099 scm_intern0, scm_sysintern, scm_sysintern0,
6100 scm_sysintern0_no_module_lookup, scm_symbol_value0,
6101 scm_string_to_obarray_symbol, scm_intern_symbol,
6102 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
6103 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp,
6104 scm_init_symbols_deprecated), vectors.c (s_vector_set_length_x),
6105 vectors.[ch] (scm_vector_set_length_x): Removed.
6106
6107 * fluids.h (FLUIDSH, SCM_FLUIDS_H), gsubr.c (GSUBRH, SCM_GSUBR_H),
6108 list.h (LISTH, SCM_LIST_H), load.h (LOADH, SCM_LOAD_H), root.h
6109 (ROOTH, SCM_ROOT_H), strports.h (STRPORTSH, SCM_STRPORTS_H):
6110 Renamed the macros that are defined to inhibit double inclusion of
6111 the same headers to the SCM_<filename>_H format.
6112
6113 * procs.h (SCM_CLOSUREP, SCM_PROCEDURE_WITH_SETTER_P), symbols.h
6114 (SCM_SYMBOLP), vectors.h (SCM_VECTORP): Prefer !SCM_<foo> over
6115 SCM_N<foo>.
6116
6117 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
6118
6119 * continuations.h (scm_contregs), debug.h (scm_debug_info,
6120 scm_debug_frame, SCM_DSIDEVAL), filesys.h (SCM_OPDIRP), fports.h
6121 (scm_fport), options.h (scm_option), snarf.h (SCM_CONST_LONG,
6122 SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
6123 SCM_GLOBAL_VCELL_INIT), srcprop.h (scm_srcprops,
6124 scm_srcprops_chunk), stacks.h (scm_info_frame, scm_stack), unif.h
6125 (scm_array, scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_HUGE_LENGTH),
6126 validate.h (SCM_FUNC_NAME, SCM_WTA, RETURN_SCM_WTA,
6127 SCM_VALIDATE_NUMBER_COPY, SCM_VALIDATE_NUMBER_DEF_COPY,
6128 SCM_VALIDATE_STRINGORSUBSTR, SCM_VALIDATE_ROSTRING,
6129 SCM_VALIDATE_ROSTRING_COPY, SCM_VALIDATE_NULLORROSTRING_COPY,
6130 SCM_VALIDATE_RWSTRING, SCM_VALIDATE_OPDIR): Removed.
6131
6132 * continuations.h (CONTINUATIONSH, SCM_CONTINUATIONS_H), filesys.h
6133 (FILESYSH, SCM_FILESYS_H), fports.h (FPORTSH, SCM_FPORTS_H),
6134 options.h (OPTIONSH, SCM_OPTIONS_H), regex-posix.h (REGEXPOSIXH,
6135 SCM_REGEX_POSIX_H), snarf.h (LIBGUILE_SNARF_H, SCM_SNARF_H),
6136 srcprop.h (SCM_SOURCE_PROPERTIES_H, SCM_SRCPROP_H), unif.h
6137 (SCM_UNIFORM_VECTORS_H, SCM_UNIF_H), validate.h (SCM_VALIDATE_H__,
6138 SCM_VALIDATE_H): Renamed the macros that are defined to inhibit
6139 double inclusion of the same headers to the SCM_<filename>_H
6140 format.
6141
6142 * debug.h (SCM_RESET_DEBUG_MODE), regex-posix.h (SCM_RGXP),
6143 srcprop.h (SRCBRKP, PROCTRACEP), struct.h (SCM_STRUCTP),
6144 validate.h (SCM_VALIDATE_THUNK, SCM_VALIDATE_ARRAY,
6145 SCM_VALIDATE_VECTOR_OR_DVECTOR, SCM_VALIDATE_VTABLE): Prefer
6146 !SCM_<foo> over SCM_N<foo>.
6147
6148 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
6149
6150 * _scm.h (_SCMH, SCM__SCM_H), alist.h (ALISTH, SCM_ALIST_H),
6151 arbiters.h (ARBITERSH, SCM_ARBITERS_H), backtrace.h (BACKTRACEH,
6152 SCM_BACKTRACE_H), boolean.h (BOOLEANH, SCM_BOOLEAN_H), chars.h
6153 (SCM_CHARSH, SCM_CHARS_H), coop-defs.h (COOP_DEFSH,
6154 SCM_COOP_DEFS_H), coop-threads.h (COOP_THREADSH,
6155 SCM_COOP_THREADS_H), debug-malloc.h (DEBUGMALLOCH,
6156 SCM_DEBUG_MALLOC_H), dynwind.h (DYNWINDH, SCM_DYNWIND_H),
6157 environments.h (ENVIRONMENTS_H, SCM_ENVIRONMENTS_H), eq.h (EQH,
6158 SCM_EQ_H), evalext.h (EVALEXTH, SCM_EVALEXT_H), extensions.h
6159 (LIBGUILE_EXTENSIONS_H, SCM_EXTENSIONS_H), feature.h (FEATUREH,
6160 SCM_FEATURE_H), gdbint.h (GDBINTH, SCM_GDBINT_H), guardians.h
6161 (SCM_GUARDIANH, SCM_GUARDIANS_H), hash.h (HASHH, SCM_HASH_H),
6162 hashtab.h (HASHTABH, SCM_HASHTAB_H), init.h (INITH, SCM_INIT_H),
6163 ioext.h (IOEXTH, SCM_IOEXT_H), iselect.h (ISELECTH,
6164 SCM_ISELECT_H), keywords.h (KEYWORDSH, SCM_KEYWORDS_H), lang.h
6165 (LANGH, SCM_LANG_H), mallocs.h (MALLOCSH, SCM_MALLOCS_H), net_db.h
6166 (SCM_NETDBH, SCM_NET_DB_H), objprop.h (OBJPROPH, SCM_OBJPROP_H),
6167 posix.h (POSIXH, SCM_POSIX_H), procprop.h (PROCPROPH,
6168 SCM_PROCPROP_H), properties.h (PROPERTIES_H, SCM_PROPERTIES_H),
6169 ramap.h (RAMAPH, SCM_RAMAP_H), rdelim.h (SCM_RDELIM,
6170 SCM_RDELIM_H), read.h (READH, SCM_READ_H), rw.h (SCM_RW,
6171 SCM_RW_H), scmsigs.h (SCMSIGSH, SCM_SCMSIGS_H), script.h (SCRIPTH,
6172 SCM_SCRIPT_H), simpos.h (SIMPOSH, SCM_SIMPOS_H), socket.h
6173 (SCM_SOCKETH, SCM_SOCKET_H), sort.h (SORTH, SCM_SORT_H),
6174 stackchk.h (STACKCHKH, SCM_STACKCHK_H), stime.h (STIMEH,
6175 SCM_STIME_H), strop.h (STROPH, SCM_STROP_H), strorder.h
6176 (STRORDERH, SCM_STRORDER_H), threads.h (THREADSH, SCM_THREADS_H),
6177 throw.h (THROWH, SCM_THROW_H), version.h (VERSIONH,
6178 SCM_VERSION_H), vports.h (VPORTSH, SCM_VPORTS_H): Renamed
6179 the macros that are defined to inhibit double inclusion of the
6180 same headers to the SCM_<filename>_H format.
6181
6182 2001-08-27 Marius Vollmer <mvo@zagadka.ping.de>
6183
6184 * ports.c, ports.h, fprots.c, gc.c, ioext.c: Replaced
6185 "scm_t_portable" with "scm_port_table" which was an artifact from
6186 the great "scm_*_t -> scm_t_" renaming.
6187
6188 2001-08-25 Thien-Thi Nguyen <ttn@revel.glug.org>
6189
6190 * gc_os_dep.c (GC_noop1): Move before `GC_find_limit' where it is
6191 used; nfc. Thanks to Bill Schottstaedt.
6192
6193 * validate.h (SCM_VALIDATE_USHORT_COPY, SCM_VALIDATE_SHORT_COPY,
6194 SCM_VALIDATE_UINT_COPY, SCM_VALIDATE_INT_COPY): New macros.
6195 Thanks to Chris Cramer.
6196
6197 2001-08-25 Marius Vollmer <mvo@zagadka.ping.de>
6198
6199 * Makefile.am (AUTOMAKE_OPTIONS): Change "foreign" to "gnu".
6200
6201 * eval.c (scm_m_atbind): Redesigned to behvae like `let', but with
6202 dynamic scope.
6203 * dynwind.h (scm_swap_bindings): Declare.
6204 * dynwind.c (scm_swap_bindings): Make non-static.
6205
6206 2001-08-25 Michael Livshin <mlivshin@bigfoot.com>
6207
6208 * gc.c (scm_gc_sweep): now can sweep unreachable variables (by
6209 doing exactly nothing about them). thanks Neil!
6210
6211 2001-08-18 Neil Jerram <neil@ossau.uklinux.net>
6212
6213 * __scm.h (SCM_ENABLE_VCELLS): Fix spelling mistake in comment.
6214
6215 2001-08-17 Thien-Thi Nguyen <ttn@revel.glug.org>
6216
6217 * gc.c: Fix omission bug: Add `heap_segment' forward decl
6218 (proto) in the case when either `GUILE_DEBUG' or
6219 `GUILE_DEBUG_FREELIST' preprocessor symbols are defined.
6220
6221 (map_free_list): Fix typo: Ref `f' correctly.
6222
6223 Thanks to Chris Cramer.
6224
6225 2001-08-15 Rob Browning <rlb@defaultvalue.org>
6226
6227 * Makefile.am (libguile_la_LDFLAGS): use libtool interface version
6228 variables.
6229 (libpath.h): change libguileversion to libguileinterface.
6230
6231 2001-08-07 Marius Vollmer <mvo@zagadka.ping.de>
6232
6233 * Makefile.am (EXTRA_DIST): Distribute ChangeLog-1996-1999 and
6234 ChangeLog-2000. Thanks to Daniel Skarda!
6235
6236 2001-08-07 Michael Livshin <mlivshin@bigfoot.com>
6237
6238 * guile-snarf-docs-texi.in: don't call the tokenizer here, we now
6239 do it from the Makefile.
6240
6241 * Makefile.am: rearrange the snarfing slightly, so that .doc files
6242 are of a reasonable size.
6243
6244 2001-08-02 Neil Jerram <neil@ossau.uklinux.net>
6245
6246 * stacks.c (scm_make_stack): Improve docstring by explaining use
6247 of cutting args.
6248
6249 2001-08-01 Marius Vollmer <mvo@zagadka.ping.de>
6250
6251 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
6252 scm_char_whitespace_p, scm_char_upper_case_p,
6253 scm_char_lower_case_p, scm_char_is_both_p): Do not require
6254 characters to fulfill isascii in addition to the primary
6255 predicate.
6256
6257 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
6258
6259 * numbers.c (DIGITS, scm_small_istr2int, scm_istr2int,
6260 scm_istr2flo, scm_istring2number): Removed.
6261
6262 (iflo2str, scm_real_p, scm_integer_p): Use SCM_<foo> instead of
6263 SCM_SLOPPY_<foo>.
6264
6265 (t_exactness, t_radix, DIGIT2UINT, XDIGIT2UINT, mem2uinteger,
6266 mem2decimal_from_point, mem2ureal, mem2complex, scm_i_mem2number):
6267 Added.
6268
6269 (scm_string_to_number): Use new number parser.
6270
6271 (scm_exact_to_inexact): Replace dummy by a GPROC, which also
6272 handles complex numbers.
6273
6274 * numbers.h (NUMBERSH, SCM_NUMBERS_H): Rename <foo>H to
6275 SCM_<foo>_H.
6276
6277 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Prefer !SCM_<pred> over
6278 SCM_N<pred>.
6279
6280 (scm_istr2int, scm_istr2flo, scm_istring2number): Removed.
6281
6282 (scm_i_mem2number): Added.
6283
6284 (scm_exact_to_inexact): Changed signature.
6285
6286 * read.c (scm_lreadr): Perform the shortcut test for '+ and '-
6287 here instead of within scm_i_mem2number. Call scm_i_mem2number
6288 instead of scm_istr2int and scm_istring2number.
6289
6290 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
6291
6292 * eval.c (scm_lookupcar, scm_m_body, scm_m_lambda, unmemocopy,
6293 scm_unmemocopy, scm_badargsp, scm_eval_body, CHECK_EQVISH,
6294 SCM_CEVAL, scm_nconc2last, SCM_APPLY, scm_copy_tree): Prefer
6295 !SCM_<pred> over SCM_N<pred>.
6296
6297 (scm_eval_body): Remove side effecting code from macro call.
6298
6299 (SCM_CEVAL, SCM_APPLY): Remove goto statement and redundant
6300 SCM_NIMP test.
6301
6302 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
6303
6304 * pairs.h (SCM_VALIDATE_PAIR): Use SCM_CONSP, not SCM_ECONSP.
6305
6306 2001-07-29 Marius Vollmer <mvo@zagadka.ping.de>
6307
6308 Removed vcell slot from structs.
6309
6310 * struct.h (scm_vtable_index_vcell): Removed. Renumbered
6311 subsequent indices.
6312
6313 * struct.c (scm_struct_vtable_p): Do not check vcell slot for
6314 zero. Use scm_vtable_index_layout instead of "0" when accessing
6315 said slot.
6316 (scm_init_struct): Remove vcell slot layout code from
6317 required_vtable_fields.
6318
6319 * objects.h (scm_si_redefined, scm_si_hashsets): Renumbered.
6320
6321 * goops.c (build_class_class_slots): Removed vcell slot
6322 definition.
6323
6324 * goops.h: Renumbered slot indices. (SCM_CLASS_CLASS_LAYOUT):
6325 Removed vcell slot layout code.
6326 (scm_si_vcell): Removed.
6327
6328 2001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
6329
6330 "Glocs" have been removed.
6331
6332 * tags.h: Update tag system docs.
6333 (scm_tc3_cons_gloc): Renamed to scm_tc3_struct. Changed all uses.
6334 (scm_tcs_cons_gloc): Renamed to scm_tcs_struct. Changed all uses.
6335 (SCM_ECONSP, SCM_NECONSP): Removed. Changed all uses to SCM_CONSP
6336 or SCM_NCONSP, respectively.
6337
6338 * struct.c, struct.h, srcprop.c, procs.c, procprop.c, print.c,
6339 objects.c. modules.c, goops.c, eval.c, debug.c: Changed all uses
6340 of scm_tc3_cond_gloc and scm_tcs_cons_gloc. See above.
6341
6342 * print.c (scm_iprin1): Remove printing of glocs. Do not try to
6343 tell glocs from structs.
6344
6345 * gc.c (scm_gc_mark, scm_gc_sweep): Remove handling of glocs.
6346
6347 * eval.c (scm_m_atbind): Make a list of variables, not glocs.
6348 (scm_ceval, scm_deval): For SCM_IM_BIND, fiddle with variables
6349 instead of with glocs.
6350 (EVALCAR): Do not test for glocs.
6351 (scm_lookupcar, scm_lookupcar1): Do not handle glocs in race
6352 condition.
6353 (scm_unmemocar): Do not handle glocs.
6354 (scm_m_atfop): Memoize as a variable, not as a gloc.
6355 (scm_eval_args, scm_deval_args): Do not handle glocs.
6356 (scm_ceval, scm_deval): Likewise.
6357
6358 * eval.h (SCM_XEVALCAR): Do not test for glocs.
6359 (SCM_GLOC_VAR, SCM_GLOC_VAL, SCM_GLOC_SET_VAL, SCM_GLOC_VAL_LOC):
6360 Removed.
6361
6362 * debug.h, debug.c (scm_make_gloc, scm_gloc_p): Removed.
6363
6364 * dynwind.c (scm_swap_bindings): Likewise.
6365 (scm_dowinds): Updated to recognize lists of variables instead of
6366 lists of glocs.
6367
6368 * __scm.h (SCM_CAUTIOS, SCM_RECKLESS): Update comments.
6369
6370
6371 * gc_os_dep.c (GC_noop1): Moved into the same #if/#endif context
6372 where it is needed.
6373
6374 2001-07-25 Gary Houston <ghouston@arglist.com>
6375
6376 * numbers.c (scm_logand, scm_logior, scm_logxor): adjusted the
6377 docstrings to reflect the n-ary implementation.
6378
6379 2001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
6380
6381 * eval.c (scm_ceval, scm_deval): Use "RETURN" macro when returning
6382 value of a variable, not the plain "return" statement.
6383
6384 2001-07-25 Marius Vollmer <mvo@zagadka.ping.de>
6385
6386 * eval.c: Allow variables in memoized code (in addition to glocs).
6387 (scm_lookupcar): Handle variables in lost races. Replace symbol
6388 with variable directly, do not make a gloc.
6389 (scm_unmemocar): Rewrite variables using a reverse lookup, just
6390 like glocs.
6391 (scm_ceval, scm_deval): Deal with variables in SCM_IM_SET and in
6392 the main switch.
6393
6394 2001-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6395
6396 * variable.c (scm_i_variable_print): Use "value" instead of
6397 "binding" since a binding is the mapping between symbols and
6398 variables, not between variables and their values.
6399
6400 * tags.h (scm_tc7_variable): New.
6401 * gc.c (scm_gc_mark): Handle scm_tc7_variable objects.
6402 * print.c (scm_iprin1): Likewise.
6403
6404 * variable.h (scm_tc16_variable): Removed.
6405 (SCM_VARIABLEP): Test for new tc7 code.
6406 (scm_i_variable_print): New.
6407 * variable.c (scm_tc16_variable): Removed.
6408 (variable_print): Renamed to scm_i_variable_print and made
6409 non-static.
6410 (variable_equal_p): Removed.
6411 (make_variable): Construct a tc7 object instead of a smob.
6412 (scm_init_variable): Do not register smob.
6413
6414 2001-07-22 Marius Vollmer <mvo@zagadka.ping.de>
6415
6416 * tags.h: Include inttypes.h when we have it.
6417
6418 2001-07-13 Marius Vollmer <mvo@zagadka.ping.de>
6419
6420 * tags.h (SCM_UNBOUND): Make it the 34th isym/iflag, the 33th slot
6421 is taken by the new SCM_IM_CALL_WITH_VALUES.
6422 * print.c (scm_isymnames): Update table accordingly.
6423
6424 2001-07-22 Gary Houston <ghouston@arglist.com>
6425
6426 * regex-posix.c (s_scm_regexp_exec): use scm_long2num not
6427 SCM_MAKINUM to convert regoff_t value to SCM.
6428
6429 2001-07-21 Gary Houston <ghouston@arglist.com>
6430
6431 * scmsigs.c: include sys/time.h for itimer stuff.
6432
6433 2001-07-19 Rob Browning <rlb@defaultvalue.org>
6434
6435 * gc_os_dep.c (GC_noop1): ifdef out (unused) to quiet warning.
6436
6437 * c-tokenize.lex: add option %nounput to quiet warning.
6438 Add prototype for yylex to quiet warning.
6439
6440 * scmconfig.h.in: add flags for setitimer and getitimer.
6441
6442 * scmsigs.h (scm_init_scmsigs): new prototype.
6443 (scm_init_scmsigs): new prototype.
6444
6445 * scmsigs.c (s_scm_setitimer): new function.
6446 (s_scm_setitimer): new function.
6447
6448 2001-07-18 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
6449
6450 * alist.c, arbiters.c, async.h, backtrace.h, boolean.c, chars.c,
6451 chars.h, continuations.h, debug-malloc.h, dynl.c, feature.c,
6452 feature.h, filesys.h, fluids.h, fports.h, gc_os_dep.c,
6453 gdb_interface.h, gh_eval.c, gh_funcs.c, gh_io.c, gh_list.c,
6454 gh_predicates.c, gsubr.c, gsubr.h, guardians.h,
6455 guile-func-name-check.in, guile-snarf-docs-texi.in,
6456 guile-snarf-docs.in, guile-snarf.awk.in, guile-snarf.in,
6457 hashtab.h, iselect.h, keywords.h, lang.c, list.h, load.h,
6458 objprop.c, objprop.h, options.c, options.h, random.h,
6459 regex-posix.h, root.c, root.h, script.c, snarf.h, stackchk.c,
6460 strerror.c, strop.h, strports.h, threads.h, values.c, values.h,
6461 version.c, version.h: Updated copyright notice.
6462
6463 2001-07-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
6464
6465 * goops.c (sym_layout, sym_vcell, sym_vtable, sym_print,
6466 sym_procedure, sym_setter, sym_redefined, sym_h0, sym_h1, sym_h2,
6467 sym_h3, sym_h4, sym_h5, sym_h6, sym_h7, sym_name,
6468 sym_direct_supers, sym_direct_slots, sym_direct_subclasses,
6469 sym_direct_methods, sym_cpl, sym_default_slot_definition_class,
6470 sym_slots, sym_getters_n_setters, sym_keyword_access, sym_nfields,
6471 sym_environment, scm_sym_change_class): New static variables to
6472 hold predefined symbols.
6473
6474 (build_class_class_slots): Build the list using scm_list_n
6475 instead of cons. Also, slots are already created as lists, thus
6476 making a call to maplist unnecessary.
6477
6478 (scm_class_name, scm_class_direct_supers, scm_class_direct_slots,
6479 scm_class_direct_subclasses, scm_class_direct_methods,
6480 scm_class_precedence_list, scm_class_slots, scm_class_environment,
6481 scm_method_procedure, create_standard_classes, purgatory): Use
6482 predefined symbols.
6483
6484 (build_slots_list, compute_getters_n_setters,
6485 scm_sys_initialize_object, scm_sys_inherit_magic_x,
6486 get_slot_value_using_name, set_slot_value_using_name,
6487 scm_sys_invalidate_method_cache_x, scm_generic_capability_p,
6488 scm_compute_applicable_methods, scm_sys_method_more_specific_p,
6489 make_struct_class): Prefer !SCM_<pred> over SCM_N<pred>.
6490
6491 (scm_sys_prep_layout_x): Minimize variable scopes.
6492
6493 (scm_sys_prep_layout_x, scm_sys_fast_slot_ref,
6494 scm_sys_fast_slot_set_x): Fix signedness.
6495
6496 (go_to_hell, go_to_heaven, purgatory, scm_change_object_class,
6497 lock_cache_mutex, unlock_cache_mutex, call_memoize_method,
6498 scm_memoize_method, scm_wrap_object): Use packing and unpacking
6499 when converting to and from SCM values.
6500
6501 (scm_enable_primitive_generic_x): Add rest argument checking.
6502
6503 (map, filter_cpl, maplist, scm_sys_initialize_object,
6504 scm_sys_prep_layout_x, slot_definition_using_name,
6505 scm_enable_primitive_generic_x, scm_compute_applicable_methods,
6506 call_memoize_method, scm_make, scm_make_class): Prefer explicit
6507 predicates over SCM_N?IMP tests.
6508
6509 (scm_sys_prep_layout_x): Fix typo in error message. Fix type
6510 checking.
6511
6512 (burnin, go_to_hell): Use SCM_STRUCT_DATA instead of the SCM_INST
6513 alias.
6514
6515 2001-07-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
6516
6517 * fports.c (fport_print): Don't use SCM_C[AD]R for non pairs.
6518
6519 * num2integral.i.c (INTEGRAL2NUM, INTEGRAL2BIG): Fix signedness.
6520
6521 * symbols-deprecated.c (scm_gentemp): Simplify vector test.
6522
6523 * vectors.c (scm_vector_p): Eliminate redundant IMP test.
6524
6525 2001-07-12 Michael Livshin <mlivshin@bigfoot.com>
6526
6527 * strings.c (s_scm_string): fix arg position in assert.
6528
6529 2001-07-11 Gary Houston <ghouston@arglist.com>
6530
6531 * strports.c (st_write): use memcpy, not strncpy. thanks to
6532 Dale P. Smith.
6533
6534 2001-07-09 Thien-Thi Nguyen <ttn@revel.glug.org>
6535
6536 * alist.c, alloca.c, arbiters.c, async.c, async.h, backtrace.c,
6537 boolean.c, chars.c, continuations.c, coop-defs.h, coop-threads.c,
6538 debug-malloc.h, debug.c, debug.h, dynl.c, dynwind.c, eq.c,
6539 error.c, eval.c, evalext.c, feature.c, feature.h, filesys.c,
6540 filesys.h, fluids.c, fluids.h, fports.c, fports.h, gc.c, gc.h,
6541 gdbint.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
6542 hooks.h, inet_aton.c, init.c, ioext.c, keywords.c, keywords.h,
6543 lang.c, list.c, load.c, macros.c, mallocs.c, memmove.c, modules.c,
6544 net_db.c, numbers.c, numbers.h, objects.c, objprop.c, options.c,
6545 pairs.c, pairs.h, ports.c, ports.h, posix.c, print.c, print.h,
6546 procprop.c, procs.c, procs.h, properties.c, putenv.c, ramap.c,
6547 random.c, random.h, read.c, regex-posix.c, regex-posix.h, root.c,
6548 root.h, scmsigs.c, script.c, simpos.c, smob.c, snarf.h, socket.c,
6549 sort.c, srcprop.c, srcprop.h, stackchk.c, stacks.c, stacks.h,
6550 stime.c, strerror.c, strings.c, strings.h, strop.c, strorder.c,
6551 strports.c, struct.c, struct.h, symbols-deprecated.c, symbols.c,
6552 symbols.h, tags.h, threads.c, threads.h, throw.c, unif.c, unif.h,
6553 variable.c, variable.h, vectors.c, vectors.h, version.c, vports.c,
6554 weaks.c, weaks.h: Remove "face-lift" comment.
6555
6556 2001-07-08 Rob Browning <rlb@defaultvalue.org>
6557
6558 * .cvsignore: add stamp-h.in.
6559
6560 2001-07-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
6561
6562 * hooks.c (scm_make_hook, scm_add_hook_x),
6563 (scm_remove_hook_x, scm_reset_hook_x, scm_run_hook): Added return
6564 value info to the docstrings.
6565
6566 2001-07-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
6567
6568 Some more compatibility patches for Windows.
6569
6570 * posix.c (getlogin): getlogin() implementation for Windows.
6571
6572 * backtrace.c, ioext.c: Include <stdio.h>.
6573
6574 * unif.c, script.c, rw.c, error.c: Include <io.h>, if it does
6575 exist.
6576
6577 * cpp_sig_symbols.in: Added SIGBREAK.
6578
6579 2001-07-01 Marius Vollmer <mvo@zagadka.ping.de>
6580
6581 * strports.c (scm_read_0str, scm_eval_0str): Call
6582 scm_c_read_string and scm_c_eval_string respectively, not
6583 themselves. Thanks to Dale P. Smith!
6584
6585 2001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
6586
6587 * unif.c (scm_array_set_x): The variable args does not
6588 necessarily have to be a list. Further, got rid of a redundant
6589 SCM_NIMP test.
6590
6591 2001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
6592
6593 * list.c (SCM_I_CONS): Make sure the cell type is initialized
6594 last.
6595
6596 * gc.c (s_scm_map_free_list, scm_igc, scm_gc_sweep,
6597 init_heap_seg): Fixed signedness.
6598
6599 (init_heap_seg): Replaced strange for-loop with a while loop.
6600
6601 * weaks.h (WEAKSH, SCM_WEAKS_H): Rename <foo>H to SCM_<foo>_H.
6602
6603 (SCM_WVECTP): Prefer !SCM_<pred> over SCM_N<pred>.
6604
6605 The following patch adds conservative marking for the elements of
6606 free or allocated cells.
6607
6608 * gc.c (allocated_mark, heap_segment): New static functions.
6609
6610 (which_seg): Deleted, since the functionality is now provided by
6611 function heap_segment.
6612
6613 (map_free_list): Use heap_segment instead of which_seg.
6614
6615 (MARK): If cell debugging is disabled, mark free cells
6616 conservatively.
6617
6618 (scm_mark_locations, scm_cellp): Extracted the search for the
6619 heap segment of a SCM value into function heap_segment.
6620
6621 (scm_init_storage): Allocated cells must be marked
6622 conservatively.
6623
6624 * gc.[ch] (scm_gc_mark_cell_conservatively): New function.
6625
6626 The following patch changes the representation of weak vectors to
6627 double cells instead of using an extension of the vector's
6628 allocated memory.
6629
6630 * gc.c (MARK): Use SCM_SET_WVECT_GC_CHAIN instead of assigning to
6631 the result of SCM_WVECT_GC_CHAIN.
6632
6633 (scm_gc_sweep): Weak vectors don't have extra fields any more.
6634
6635 * weaks.c (allocate_weak_vector): New static function. It does
6636 not patch any previously created vector object during the
6637 construction of a weak vector, and thus doesn't need to switch
6638 off interrupts during vector creation.
6639
6640 (scm_make_weak_vector, scm_make_weak_key_hash_table,
6641 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
6642 Use allocate_weak_vector to provide the new weak vector object.
6643
6644 * weaks.h (SCM_WVECT_TYPE, SCM_SET_WVECT_TYPE,
6645 SCM_SET_WVECT_GC_CHAIN): New macros. The weak vector subtype is
6646 now stored in the double cell.
6647
6648 (SCM_IS_WHVEC, SCM_IS_WHVEC_V, SCM_IS_WHVEC_B, SCM_IS_WHVEC_ANY):
6649 Use SCM_WVECT_TYPE.
6650
6651 (SCM_WVECT_GC_CHAIN): The weak objects are now chained together
6652 using an entry of the double cell.
6653
6654 2001-06-30 Thien-Thi Nguyen <ttn@revel.glug.org>
6655
6656 * stamp-h.in: bye bye
6657
6658 2001-06-30 Marius Vollmer <mvo@zagadka.ping.de>
6659
6660 * gh_eval.c (gh_eval_str): Use scm_c_eval_string instead of
6661 scm_eval_0str.
6662
6663 * load.c, load.h (scm_c_primitive_load,
6664 scm_c_primitive_load_path): New.
6665
6666 * strports.c, strports.h (scm_c_read_string): Renamed from
6667 scm_read_0str. Also, added "const" qualifier to argument.
6668 (scm_c_eval_string): Renamed from scm_eval_0str.
6669 (scm_read_0str, scm_eval_0str): Deprecated.
6670
6671 2001-06-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
6672
6673 * fluids.c (scm_c_with_fluid): Use scm_list_1() instead of
6674 SCM_LIST1.
6675
6676 2001-06-28 Keisuke Nishida <kxn30@po.cwru.edu>
6677
6678 * list.h (scm_list_1, scm_list_2, scm_list_3, scm_list_4, scm_list_5,
6679 scm_list_n): New functions.
6680 (SCM_LIST0, SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5,
6681 SCM_LIST6, SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify): Deprecated.
6682 (lots of files): Use the new functions.
6683
6684 * goops.c (CALL_GF1, CALL_GF2, CALL_GF3, CALL_GF4): Use scm_call_N.
6685
6686 * strings.c: #include "libguile/deprecation.h".
6687
6688 2001-06-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
6689
6690 * read.c (scm_lreadr): When reading a hash token, check for a
6691 user-defined hash procedure first, so that overriding the builtin
6692 hash characters is possible (this was needed for implementing
6693 SRFI-4's read synax `f32(...)').
6694
6695 * num2integral.i.c: Use scm_t_signed_bits instead of scm_t_bits,
6696 because the latter is unsigned now and breaks comparisons like
6697 (n < (scm_t_signed_bits)MIN_VALUE).
6698
6699 2001-06-26 Neil Jerram <neil@ossau.uklinux.net>
6700
6701 * eval.h, eval.c (scm_call_4): New function.
6702
6703 * eval.c (SCM_APPLY, SCM_CEVAL, ENTER_APPLY): Call trap handlers
6704 directly rather than dispatching to them via scm_ithrow and a lazy
6705 catch.
6706
6707 * eval.c (scm_evaluator_trap_table), eval.h (SCM_ENTER_FRAME_HDLR,
6708 SCM_APPLY_FRAME_HDLR, SCM_EXIT_FRAME_HDLR): Add three new options
6709 for trap handler procedures.
6710
6711 * debug.h (SCM_RESET_DEBUG_MODE): Add checks for trap handler
6712 procedures not being #f.
6713
6714 2001-06-27 Michael Livshin <mlivshin@bigfoot.com>
6715
6716 * Makefile.am (c-tokenize.c): add rule to generate it.
6717 (EXTRA_DIST): add c-tokenize.lex, so it gets distributed.
6718
6719 filter-doc-snarfage.c: remove.
6720
6721 2001-06-26 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
6722
6723 * ports.c (scm_output_port_p): Use result of SCM_COERCE_OUTPORT.
6724
6725 The following set of changes makes compiling Guile under various
6726 Windows compilers easier. Compilation under GNU systems should
6727 not be affected at all.
6728
6729 Thanks to Stefan Jahn for all necessary information, patches and
6730 testing.
6731
6732 * posix.c: Conditialize getpwent, getgrent, kill, getppid, getuid,
6733 getpgrp, ttyname, primitive-fork and some header inclusion for
6734 Windows.
6735
6736 * random.c: Define M_PI, if not predefined and use __int64 for
6737 LONG64 under Windows.
6738
6739 * scmsigs.c: Emulate some functions (alarm, sleep, kill) under
6740 Windows and conditionalize some signal names.
6741
6742 * socket.c (scm_getsockopt): Added missing comma.
6743 Include socket library header under Windows.
6744
6745 * stime.c (CLKTCK): Add cast to int, to make it compile under
6746 Windows.
6747
6748 * ports.c (truncate): New function, compiled only under Windows.
6749
6750 * net_db.c: Do not declare errno under Windows.
6751
6752 * iselect.h, inet_aton.c: Include socket library headers under
6753 Windows.
6754
6755 * guile.c (inner_main): Under Windows, initialize socket library
6756 and initialize gdb_interface data structures.
6757
6758 * gdb_interface.h: Under Windows, gdb_interface cannot be
6759 initialized statically. Initialize at runtime instead.
6760
6761 * fports.c (write_all): ssize_t -> size_t.
6762 (fport_print): Conditionalize call to ttyname().
6763 (getflags): New function, compiled only under Windows.
6764
6765 * filesys.c: Conditionalize inclusion of <pwd.h>. Conditionalize
6766 primitives chown, link, fcntl.
6767 (scm_basename, scm_dirname): Under Windows, handle \ as well as /
6768 as path seperator.
6769
6770 * backtrace.c: Include <io.h> under Windows.
6771
6772 * async.h (ASYNCH, SCM_ASYNC_H): Rename <foo>H to SCM_<foo>_H.
6773
6774 * _scm.h: Added preprocessor conditional for __MINGW32__ for errno
6775 declaration.
6776
6777 2001-06-27 Keisuke Nishida <kxn30@po.cwru.edu>
6778
6779 * eval.c (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
6780 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): New functions.
6781 * eval.h (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
6782 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): Declared.
6783 * async.c (scm_run_asyncs), coop-threads.c (scheme_body_bootstrip,
6784 scheme_handler_bootstrip), debug.c (with_traps_inner), dynwind.c
6785 (scm_dynamic_wind, scm_dowinds), environments.c
6786 (import_environment_conflict), eval.c (scm_macroexp, scm_force,
6787 scm_primitive_eval_x, scm_primitive_eval), fluids.c (apply_thunk),
6788 goops.c (GETVAR, purgatory, make_class_from_template,
6789 scm_ensure_accessor), hashtab.c (scm_ihashx, scm_sloppy_assx,
6790 scm_delx_x, fold_proc), hooks.c (scm_c_run_hook), load.c
6791 (scm_primitive_load), modules.c (scm_resolve_module,
6792 scm_c_define_module, scm_c_use_module, scm_c_export,
6793 module_variable, scm_eval_closure_lookup, scm_sym2var,
6794 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
6795 ports.c (scm_port_for_each), print.c (scm_printer_apply),
6796 properties.c (scm_primitive_property_ref), ramap.c (ramap,
6797 ramap_cxr, rafe, scm_array_index_map_x, read.c (scm_lreadr),
6798 scmsigs.c (sys_deliver_signals), sort.c (applyless), strports.c
6799 (scm_object_to_string, scm_call_with_output_string,
6800 scm_call_with_input_string), throw.c (scm_body_thunk,
6801 scm_handle_by_proc, hbpca_body), unif.c (scm_make_shared_array,
6802 scm_make_shared_array), vports.c (sf_flush, sf_write,
6803 sf_fill_input, sf_close): Use one of the above functions.
6804 * goops.c, hashtab.c, scmsigs.c, sort.c: #include "libguile/root.h".
6805
6806 2001-06-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
6807
6808 * filesys.c (scm_close), ports.c (scm_close_port,
6809 scm_port_closed_p), strop.c (scm_string_null_p): Use SCM_BOOL
6810 instead of SCM_NEGATE_BOOL.
6811
6812 * filesys.c (scm_stat): Clean up type dispatch.
6813
6814 * filesys.c (scm_stat), ports.c (scm_input_port_p,
6815 scm_output_port_p): Get rid of redundant IM type check.
6816
6817 * filesys.c (scm_readdir, scm_getcwd, scm_readlink), gh_data.c
6818 (gh_str2scm), load.c (scm_primitive_load, scm_internal_parse_path,
6819 scm_search_path), net_db.c (scm_gethost, scm_getnet, scm_getproto,
6820 scm_return_entry), numbers.c (scm_number_to_string), objects.c
6821 (scm_make_subclass_object), ports.c (scm_port_mode), read.c
6822 (scm_lreadr), simpos.c (scm_getenv), socket.c (scm_inet_ntoa,
6823 scm_addr_vector), stime.c (scm_strftime), strings.c
6824 (scm_makfromstrs, scm_makfrom0str, scm_substring), strings.h
6825 (SCM_STRING_COERCE_0TERMINATION_X), strop.c (string_copy,
6826 scm_string_split), strports.c (scm_strport_to_string), symbols.c
6827 (scm_symbol_to_string), vports.c (sf_write): Use scm_mem2string
6828 instead of scm_makfromstr.
6829
6830 * net_db.c (scm_sethost, scm_setnet, scm_setproto, scm_setserv),
6831 ports.c (scm_close_all_ports_except), read.c (scm_lreadr,
6832 scm_read_hash_extend), stime.c (scm_strftime), strings.c
6833 (scm_string_append, scm_string), strings.h (SCM_STRINGP,
6834 SCM_STRING_COERCE_0TERMINATION_X, SCM_RWSTRINGP), strop.c
6835 (string_capitalize_x): Prefer explicit type check over SCM_N?IMP,
6836 !SCM_<pred> over SCM_N<pred>.
6837
6838 * strings.[ch] (scm_makfromstr): Deprecated.
6839
6840 (scm_mem2string): New function, replaces scm_makfromstr.
6841
6842 * strings.c (scm_substring), strop.c (string_copy,
6843 scm_string_split), strports.c (scm_strport_to_string), symbols.c
6844 (scm_symbol_to_string): Fix gc problem.
6845
6846 * strings.h (STRINGSH, SCM_STRINGS_H): Rename <foo>H to
6847 SCM_<foo>_H.
6848
6849 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Eliminate
6850 warning about comparing signed and unsigned values. This fix is
6851 not optimal, since it won't work reliably if sizeof (c_start) >
6852 sizeof (size_t) or sizeof (c_end) > sizeof (size_t). A better
6853 solution is to define this macro as an inline function, thus
6854 allowing to specifiy the types of c_start and c_end.
6855
6856 2001-06-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6857
6858 * debug.h (SCM_DEBUGOBJ_FRAME): Deliver result as a
6859 scm_t_debug_frame*.
6860
6861 * debug.h (DEBUGH, SCM_DEBUG_H), stacks.h (STACKSH, SCM_STACKSH):
6862 Rename <foo>H to SCM_<foo>_H.
6863
6864 * stacks.c (NEXT_FRAME, narrow_stack): Prefer explicit type check
6865 over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
6866
6867 (narrow_stack): Make i unsigned. Don't use side-effecting
6868 operations in conditions.
6869
6870 (narrow_stack, scm_make_stack, scm_stack_id,
6871 scm_last_stack_frame): Get rid of redundant SCM_N?IMP checks.
6872
6873 (scm_make_stack, scm_stack_id, scm_last_stack_frame): Clean up
6874 type dispatch. No need to cast result of SCM_DEBUGOBJ_FRAME any
6875 more.
6876
6877 (scm_stack_ref, scm_frame_previous, scm_frame_next): Fix
6878 signedness.
6879
6880 (scm_last_stack_frame): Remove bogus `;´.
6881
6882 * stacks.h (SCM_FRAMEP): Fix type check.
6883
6884 2001-06-25 Michael Livshin <mlivshin@bigfoot.com>
6885
6886 * Makefile.am (MAINTAINERCLEANFILES): be sure to remove
6887 c-tokenize.c when doing maintainer-clean.
6888
6889 * snarf.h (SCM_SNARF_DOCS): change the "grammar" slightly.
6890
6891 * guile-snarf-docs.in, guile-snarf-docs-texi.in: rewrite &
6892 simplify.
6893
6894 * eval.c: all hash signs are in column 0.
6895
6896 * Makefile.am (guile_filter_doc_snarfage): build using
6897 c-tokenize.c, not filter-doc-snarfage.c.
6898 rearrange snarfing dependencies a bit.
6899
6900 * c-tokenize.lex: new file.
6901
6902 2001-06-25 Marius Vollmer <mvo@zagadka.ping.de>
6903
6904 * srcprop.h, srcprop.c (scm_srcprops_to_plist): Renamed from
6905 scm_t_srcpropso_plist. See the big type renaming.
6906 * coop-defs.h (scm_mutex_trylock, scm_cond_timedwait): Likewise.
6907 Thanks to Seth Alves!
6908
6909 * numbers.c (SIZE_MAX, PTRDIFF_MIN, PTRDIFF_MAX): Only define when
6910 they aren't defined already.
6911
6912 2001-06-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6913
6914 * backtrace.c (display_backtrace_body): Use SCM_VALIDATE_STACK
6915 and SCM_VALIDATE_OPOUTPORT instead of SCM_ASSERT. Fix signedness
6916 problem.
6917
6918 * backtrace.c (display_expression, scm_set_print_params_x,
6919 display_application, display_frame, scm_backtrace), numbers.c
6920 (scm_istring2number), objects.c (scm_class_of,
6921 scm_mcache_lookup_cmethod, scm_mcache_compute_cmethod): Prefer
6922 explicit type check over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
6923
6924 * fluids.c (scm_fluid_ref, scm_fluid_set_x): Fluid numbers are
6925 always positive.
6926
6927 * numbers.c (scm_i_mkbig): Remove unnecessary casts, remove
6928 unnecessary SCM_DEFER_INTS, SCM_ALLOW_INTS.
6929
6930 * objects.c (scm_class_of): Type fix.
6931
6932 (scm_mcache_lookup_cmethod): Improved comment, simplified,
6933 eliminated goto.
6934
6935 * pairs.h (scm_error_pair_access): The function can return if
6936 called recursively.
6937
6938 2001-06-20 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
6939
6940 * init.c (scm_init_guile_1): Removed initialization of tag.c.
6941
6942 * gdbint.c, init.c: Removed inclusion of tag.h.
6943
6944 * tag.h, tag.c: Removed files.
6945
6946 * Makefile.am: Removed tag.{h,c,doc,x} in various places.
6947
6948 2001-06-20 Gary Houston <ghouston@arglist.com>
6949
6950 * deprecation.c, extensions.c, rw.c: include string.h.
6951
6952 2001-06-19 Gary Houston <ghouston@arglist.com>
6953
6954 * filter-doc-snarfage.c (process): added ungetc in
6955 MULTILINE_COOKIE case since otherwise it fails when there's no
6956 space between the '(' and the quote of the following string
6957 (gcc 3.0).
6958
6959 2001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
6960
6961 Throughout: replace "scm_*_t" with "scm_t_*", except "scm_lisp_t".
6962
6963 2001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
6964
6965 * unif.h (SCM_ARRAY_NDIM): Shift then cast so that no sign
6966 extension takes place.
6967 * strings.h (SCM_STRING_LENGTH): Likewise.
6968 (SCM_STRING_MAX_LENGTH): Use unsigned numbers.
6969
6970 * __scm.h (ptrdiff_t): Typedef to long when configure didn't find
6971 it.
6972
6973 * tags.h: Include <stdint.h> when we have it.
6974 (scm_bits_t): Changed to be a unsigned type. Use uintptr_t when
6975 available. Else use "unsigned long".
6976 (scm_signed_bits_t): New.
6977
6978 * numbers.h (SCM_SRS): Cast shiftee to scm_signed_bits_t.
6979 (SCM_INUM): Cast result to scm_signed_bits_t.
6980
6981 2001-06-13 Thien-Thi Nguyen <ttn@revel.glug.org>
6982
6983 * mkstemp.c: Update path to #include file scmconfig.h.
6984 Thanks to Golubev I. N.
6985
6986 2001-06-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
6987
6988 * struct.h (SCM_STRUCT_VTABLE_FLAGS): New macro.
6989
6990 * goops.h (SCM_NUMBER_OF_SLOTS): Removed bogus `\´ at the end of
6991 the macro definition.
6992
6993 (SCM_CLASSP, SCM_INSTANCEP, SCM_PUREGENERICP, SCM_ACCESSORP,
6994 SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Use SCM_STRUCT_VTABLE_FLAGS
6995 instead of SCM_INST_TYPE.
6996
6997 (SCM_ACCESSORP, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Make sure
6998 the object is a struct before accessing its struct flags.
6999
7000 (SCM_INST_TYPE, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Deprecated.
7001
7002 2001-06-10 Gary Houston <ghouston@arglist.com>
7003
7004 * rdelim.c (scm_init_rdelim_builtins): don't try to activate the
7005 (ice-9 rdelim) module in (guile) and (guile-user). it didn't
7006 work reliably anymore. try it from boot-9.scm instead.
7007
7008 2001-06-09 Marius Vollmer <mvo@zagadka.ping.de>
7009
7010 * ports.c (scm_lfwrite): Maintain columnd and row count in port.
7011 Thanks to Matthias Köppe!
7012
7013 2001-06-08 Michael Livshin <mlivshin@bigfoot.com>
7014
7015 * snarf.h, filter-doc-snarfage.c: more changes to cope with
7016 space-happy C preprocessors.
7017
7018 * filter-doc-snarfage.c, guile-snarf.in: try to cope with spaces
7019 inside cookies. thanks to Matthias Köppe!
7020
7021 2001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
7022
7023 * keywords.c (keyword_print): Don't use SCM_C[AD]R to access
7024 keywords. Fix gc protection.
7025
7026 * objects.c (scm_mcache_lookup_cmethod): Don't use side effecting
7027 operations in macro calls.
7028
7029 * pairs.c (scm_error_pair_access): Avoid recursion.
7030
7031 Thanks to Matthias Koeppe for reporting the bugs that correspond
7032 to the following set of patches.
7033
7034 * unif.c (scm_bit_set_star_x, scm_bit_invert_x), vectors.h
7035 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Obtain the
7036 bitvector base address using SCM_BITVECTOR_BASE.
7037
7038 * unif.h (SCM_BITVECTOR_BASE): Return the base address as an
7039 unsigned long*.
7040
7041 2001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
7042
7043 * goops.c (SCM_CLASS_REDEF): Removed.
7044
7045 * vectors.h (VECTORSH, SCM_VECTORS_H): Renamed <foo>H to
7046 SCM_<foo>_H.
7047
7048 Thanks to Matthias Koeppe for reporting the bugs that correspond
7049 to the following set of patches.
7050
7051 * goops.c (scm_sys_prep_layout_x, scm_basic_basic_make_class,
7052 create_basic_classes, scm_sys_fast_slot_set_x, set_slot_value,
7053 scm_sys_allocate_instance, clear_method_cache,
7054 scm_sys_invalidate_method_cache_x, scm_make,
7055 create_standard_classes, scm_make_port_classes, scm_make_class,
7056 scm_add_slot): Use SCM_SET_SLOT to set slot values.
7057
7058 (prep_hashsets): Use SCM_SET_HASHSET to set class hash values.
7059
7060 * goops.h (SCM_SET_SLOT, SCM_SET_HASHSET): New macros.
7061
7062 * ramap.c (BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
7063 UNARY_ELTS_CODE): Remove bogus break statement.
7064
7065 * vectors.h (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR):
7066 Don't access bit vectors elements as SCM objects.
7067
7068 * weaks.c (scm_make_weak_vector, scm_make_weak_key_hash_table,
7069 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
7070 Don't assign to an unpacked value.
7071
7072 2001-06-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
7073
7074 * __scm.h (SCM_NORETURN): Moved here from error.h.
7075
7076 (SCM_UNUSED): New macro.
7077
7078 (SCM_DEBUG_PAIR_ACCESSES): New macro.
7079
7080 * backtrace.c (display_error_handler), continuations.c
7081 (continuation_print), debug.c (debugobj_print), dynwind.c
7082 (guards_print), environments.c (observer_print,
7083 core_environments_finalize, leaf_environment_cell,
7084 leaf_environment_print, eval_environment_print,
7085 eval_environment_observer, import_environment_define,
7086 import_environment_undefine, import_environment_print,
7087 import_environment_observer, export_environment_define,
7088 export_environment_undefine, export_environment_print,
7089 export_environment_observer), eval.c (scm_m_quote, scm_m_begin,
7090 scm_m_if, scm_m_set_x, scm_m_and, scm_m_or, scm_m_case,
7091 scm_m_cond, scm_m_lambda, scm_m_letstar, scm_m_do, scm_m_delay,
7092 scm_m_letrec1, scm_m_apply, scm_m_cont, scm_m_nil_cond,
7093 scm_m_nil_ify, scm_m_t_ify, scm_m_0_cond, scm_m_0_ify,
7094 scm_m_1_ify, scm_m_atfop, scm_m_at_call_with_values), evalext.c
7095 (scm_m_generalized_set_x), fluids.c (fluid_print), fports.c
7096 (fport_print), gc.c (gc_start_stats, scm_remember_upto_here_1,
7097 scm_remember_upto_here_2, scm_remember_upto_here, mark_gc_async),
7098 gh_init.c (gh_standard_handler), goops.c (get_slot_value,
7099 set_slot_value, test_slot_existence, scm_change_object_class,
7100 scm_m_atslot_ref, scm_m_atslot_set_x, make_struct_class,
7101 default_setter), guardians.c (guardian_print, guardian_gc_init,
7102 guardian_zombify, whine_about_self_centered_zombies), guile.c
7103 (inner_main), init.c (stream_handler), keywords.c (keyword_print),
7104 mallocs.c (malloc_print), numbers.c (scm_print_real,
7105 scm_print_complex, scm_bigprint), ports.c (flush_port_default,
7106 end_input_default, scm_port_print, fill_input_void_port,
7107 write_void_port), root.c (root_print), smob.c (scm_mark0,
7108 scm_free0, scm_smob_print, scm_smob_apply_1_error,
7109 scm_smob_apply_2_error, scm_smob_apply_3_error, free_print),
7110 stime.c (restorezone), strings.c (scm_makfromstr), struct.c
7111 (scm_struct_free_0, scm_struct_free_standard,
7112 scm_struct_free_entity, scm_struct_gc_init, scm_free_structs),
7113 throw.c (jmpbuffer_print, lazy_catch_print, ss_handler,
7114 scm_handle_by_throw, scm_ithrow), weaks.c
7115 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
7116 scm_scan_weak_vectors), ramap.c (scm_array_fill_int), filesys.c
7117 (scm_dir_print): Mark unused parameters with SCM_UNUSED.
7118
7119 * error.h (SCM_NORETURN): Moved to __scm.h.
7120
7121 * error.h (ERRORH, SCM_ERROR_H), pairs.h (PAIRSH, SCM_PAIRS_H):
7122 Renamed <foo>H to SCM_<foo>_H.
7123
7124 * gc.c (debug_cells_gc_interval): New static variable.
7125
7126 (scm_assert_cell_valid): If selected by the user, perform
7127 additional garbage collections.
7128
7129 (scm_set_debug_cell_accesses_x): Extended to let the user specify
7130 if additional garbage collections are desired.
7131
7132 (mark_gc_async): If additional garbage collections are selected
7133 by the user, don't call the after-gc-hook. Instead require the
7134 user to run the hook manually.
7135
7136 * pairs.c (scm_error_pair_access): New function. Only compiled
7137 if SCM_DEBUG_PAIR_ACCESSES is set to 1.
7138
7139 * pairs.h (SCM_VALIDATE_PAIR): New macro.
7140
7141 (SCM_CAR, SCM_CDR, SCM_SETCAR, SCM_SETCDR): If
7142 SCM_DEBUG_PAIR_ACCESSES is set to 1, make sure that the argument
7143 is a real pair object. (Glocs are also accepted, but that may
7144 change.) If not, abort with an error message.
7145
7146 2001-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
7147
7148 * eval.c (SCM_VALIDATE_NON_EMPTY_COMBINATION): New macro.
7149
7150 (SCM_CEVAL, SCM_APPLY): Replace calls to SCM_EVALIM2 with calls
7151 to SCM_VALIDATE_NON_EMPTY_COMBINATION.
7152
7153 2001-06-05 Marius Vollmer <mvo@zagadka.ping.de>
7154
7155 * extensions.c (scm_c_register_extension): Allow NULL as library
7156 name.
7157 (load_extension): Ignore NULL library names when comparing.
7158
7159 * hash.c (scm_hasher): Use SCM_UNPACK in the case labels so that
7160 non-pointers are being compared. Thanks to Alexander Klimov!
7161
7162 2001-06-04 Gary Houston <ghouston@arglist.com>
7163
7164 * rw.c (scm_write_string_partial): new procedure implementing
7165 write-string/partial in (ice-9 rw).
7166 * rw.h: declare scm_write_string_partial.
7167
7168 2001-06-04 Marius Vollmer <mvo@zagadka.ping.de>
7169
7170 * keywords.c (keyword_print): Substract 1 from length of symbol
7171 name, accounting for the silly dash.
7172
7173 * dynl.c (scm_registered_modules, scm_clear_registered_modules):
7174 Do not emit deprecation warning.
7175
7176 Added exception notice to all files.
7177
7178 * dynl.c: Include "deprecation.h".
7179
7180 2001-06-03 Marius Vollmer <mvo@zagadka.ping.de>
7181
7182 * dynl.c (scm_register_module_xxx, scm_registered_modules,
7183 scm_clear_registered_modules): Deprecated.
7184
7185 2001-06-02 Rob Browning <rlb@cs.utexas.edu>
7186
7187 * .cvsignore: add guile_filter_doc_snarfage guile-snarf-docs
7188 guile-snarf-docs-texi.
7189
7190 * fports.c: HAVE_ST_BLKSIZE changed to
7191 HAVE_STRUCT_STAT_ST_BLKSIZE.
7192 (scm_fport_buffer_add): HAVE_ST_BLKSIZE changed to
7193 HAVE_STRUCT_STAT_ST_BLKSIZE.
7194
7195 * filesys.c (scm_stat2scm): HAVE_ST_RDEV changed to
7196 HAVE_STRUCT_STAT_ST_RDEV.
7197 (scm_stat2scm): HAVE_ST_BLKSIZE changed to
7198 HAVE_STRUCT_STAT_ST_BLKSIZE.
7199 (scm_stat2scm): HAVE_ST_BLOCKS changed to
7200 HAVE_STRUCT_STAT_ST_BLOCKS.
7201
7202 2001-06-02 Marius Vollmer <mvo@zagadka.ping.de>
7203
7204 * strports.c (scm_eval_string): Use scm_primitive_eval_x instead
7205 of scm_eval_x to allow module changes between the forms in the
7206 string. Set/restore module using scm_c_call_with_current_module.
7207
7208 * mkstemp.c: New file, slightly modified from libiberties
7209 mkstemps.c.
7210
7211 2001-05-31 Michael Livshin <mlivshin@bigfoot.com>
7212
7213 * guile-snarf-docs.in, guile-snarf-docs-texi.in,
7214 filter-doc-snarfage.c: new files.
7215
7216 * Makefile.am: add stuff to [build,] use and distribute
7217 guile-snarf-docs, guile-snarf-docs-texi, guile_filter_doc_snarfage.
7218
7219 * guile-snarf.in: grok the new snarf output.
7220
7221 * snarf.h: make the output both texttools- and `read'-friendly.
7222
7223 * guile-doc-snarf.in: reimplement in terms of guile-snarf and
7224 guile-snarf-docs. (should also deprecate, I guess. maybe not).
7225
7226 2001-05-31 Marius Vollmer <mvo@zagadka.ping.de>
7227
7228 * print.c (scm_simple_format): Support "~~" and "~%". Signal
7229 error for unsupported format controls and for superflous
7230 arguments. Thanks to Daniel Skarda!
7231
7232 * print.h, print.c (scm_print_symbol_name): Factored out of
7233 scm_iprin1.
7234 (scm_iprin1): Call it.
7235
7236 * keywords.c (keyword_print): Use scm_print_symbol_name so that
7237 weird names are printed correctly.
7238
7239 * print.c (scm_print_symbol_name): Symbols whose name starts with
7240 `#' or `:' or ends with `:' are considered weird.
7241
7242 2001-05-30 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
7243
7244 * numbers.c (scm_difference, scm_divide): Clarified comments for -
7245 and /.
7246
7247 2001-05-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
7248
7249 * debug.h: Removed prototype for scm_eval_string.
7250
7251 2001-05-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
7252
7253 * symbols.c (scm_gensym): Fix buffer overrun (try `(gensym
7254 (make-string 2000 #\!))' in an older version).
7255
7256 Change strncpy to memcpy to allow embedded NUL characters in
7257 symbol prefix.
7258
7259 2001-05-28 Michael Livshin <mlivshin@bigfoot.com>
7260
7261 * hooks.c (scm_create_hook): deprecated.
7262 (make_hook): deleted.
7263 (scm_make_hook): all the hook creation code is now here.
7264
7265 * gc.c (scm_init_gc): don't call `scm_create_hook'. instead make
7266 a hook, make it permanent, and do a `scm_c_define' on it.
7267
7268 * strop.c (s_scm_string_capitalize_x): fix docstring quoting.
7269
7270 * socket.c (s_scm_inet_pton): fix docstring quoting.
7271 (s_scm_inet_ntop): ditto.
7272
7273 * num2integral.i.c (INTEGRAL2NUM): cast to fix a warning.
7274
7275 * hashtab.c (scm_internal_hash_fold): fix argument position in
7276 SCM_ASSERT.
7277
7278 * environments.c (s_scm_import_environment_set_imports_x): fix
7279 argument position in SCM_ASSERT.
7280
7281 * debug.c (s_scm_make_gloc): fix SCM packing/unpacking.
7282 (s_scm_make_iloc): ditto.
7283
7284 2001-05-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
7285
7286 * __scm.h (SCM_DEBUG_TYPING_STRICTNESS): Make 1 the default.
7287
7288 * eval.c (promise_print): Read the promise's value as an object.
7289
7290 (SCM_CEVAL): Don't perform side-effecting operations in macro
7291 parameters.
7292
7293 * eval.h (SCM_EVALIM2): Fix the typing strictness of the
7294 conditional expression.
7295
7296 * gc.c (scm_master_freelist, scm_master_freelist2): Added missing
7297 initializer.
7298
7299 * gh_data.c (gh_set_substr): Removed redundant unsigned >= 0
7300 text, removed redundant computation of effective_length and fixed
7301 the overflow check.
7302
7303 * goops.c (test_slot_existence): Use SCM_EQ_P to compare SCM
7304 values.
7305
7306 (wrap_init): Don't use SCM_C[AD]R for non pairs.
7307
7308 (hell): Make it a scm_bits_t pointer rather than a SCM pointer.
7309
7310 * goops.c (scm_sys_modify_class), strports.c (st_resize_port),
7311 struct.h (SCM_SET_STRUCT_PRINTER): Store unpacked values.
7312
7313 * goops.h (SCM_ACCESSORS_OF, SCM_SLOT): Return a SCM value.
7314
7315 * goops.h (GOOPSH, SCM_GOOPS_H), modules.h (MODULESH,
7316 SCM_MODULES_H), objects.h (OBJECTSH, SCM_OBJECTS_H), struct.h
7317 (STRUCTH, SCM_STRUCT_H), symbols.h (SYMBOLSH, SCM_SYMBOLS_H),
7318 __scm.h (__SCMH, SCM___SCM_H): Change <foo>H to SCM_<foo>_H.
7319
7320 * modules.[ch] (scm_module_tag): Make it a scm_bits_t value.
7321
7322 * objects.h (SCM_SET_CLASS_INSTANCE_SIZE): Fixed typing.
7323
7324 * ramap.c (ramap_rp): Removed bogus `;´.
7325
7326 * sort.c (scm_restricted_vector_sort_x): Fixed signedness
7327 problem.
7328
7329 * symbols.h (SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS, SCM_SYMBOL_FUNC,
7330 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS):
7331 Read SCM objects rather than scm_bits_t values.
7332
7333 * tags.h (SCM_VOIDP_TEST): Removed.
7334
7335 (SCM_DEBUG_TYPING_STRICTNESS): Now takes values 0, 1, 2. The
7336 value of 2 now corresponds to the former 1, the current 1
7337 corresponds to the former situation that SCM_VOIDP_TEST was
7338 defined.
7339
7340 (SCM): Now defined as typedef struct scm_unused_struct * SCM;
7341 If this appears to be not ANSI compliant, we will change it to
7342 typedef struct scm_unused_struct { } * SCM;
7343 Thanks to Han-Wen Nienhuys for the suggestion.
7344
7345 * unif.c (scm_array_set_x): Fix typing problem, and use
7346 SCM_UVECTOR_BASE instead of SCM_VELTS or SCM_CELL_WORD_1 when
7347 dealing with uniform vectors.
7348
7349 2001-05-27 Michael Livshin <mlivshin@bigfoot.com>
7350
7351 * gc.c (scm_init_storage): init `scm_gc_registered_roots'.
7352 (scm_igc): mark from them, too (precisely, not conservatively!).
7353
7354 * root.h (scm_gc_registered_roots): new object in
7355 scm_sys_protects.
7356
7357 * hooks.c (scm_create_hook): call `scm_gc_protect_object' instead
7358 `scm_protect_object'. shouldn't call it at all, though, it seems.
7359
7360 * gc.c (scm_[un]protect_object): deprecated.
7361 (scm_gc_[un]protect_object): new names for scm_[un]protect_object.
7362 (scm_gc_[un]register_root[s]): new.
7363
7364 * gc.h: add prototypes for scm_gc_[un]protect_object,
7365 scm_gc_[un]register_root[s].
7366
7367 2001-05-26 Michael Livshin <mlivshin@bigfoot.com>
7368
7369 revert the controversial part of the 2001-05-24 changes.
7370
7371 2001-05-25 Marius Vollmer <mvo@zagadka.ping.de>
7372
7373 * modules.c (scm_env_module): Exported to Scheme.
7374
7375 * eval.c (scm_debug_opts): New option `show-file-name'.
7376
7377 * debug.h (SCM_SHOW_FILE_NAME): New.
7378
7379 * backtrace.c: Include "libguile/filesys.h".
7380 (sym_base, display_backtrace_get_file_line,
7381 display_backtrace_file, display_backtrace_file_and_line): New.
7382 (display_frame): Call display_backtrace_file_and_line if that is
7383 requested.
7384 (display_backtrace_body): Call scm_display_backtrace_file if
7385 requested.
7386
7387 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr):
7388 Prototypes removed since there's no definition for these
7389 functions.
7390
7391 2001-05-24 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
7392
7393 * unif.c (scm_make_ra, array_free), unif.h (SCM_ARRAY_DIMS):
7394 Changed use of scm_array->scm_array_t and
7395 scm_array_dim->scm_array_dim_t to enable build with
7396 --disable-deprecated.
7397
7398 2001-05-24 Michael Livshin <mlivshin@bigfoot.com>
7399
7400 The purpose of this set of changes is to regularize Guile's usage
7401 of ANSI C integral types, with the following ideas in mind:
7402
7403 - SCM does not nesessarily have to be long.
7404 - long is not nesessarily enough to store pointers.
7405 - long is not nesessarily the same size as int.
7406
7407 The changes are incomplete and possibly buggy. Please test on
7408 something exotic.
7409
7410 * validate.h
7411 (SCM_NUM2{SIZE,PTRDIFF,SHORT,USHORT,BITS,UBITS,INT,UINT}[_DEF]):
7412 new macros.
7413
7414 * unif.h: type renaming:
7415 scm_array -> scm_array_t
7416 scm_array_dim -> scm_array_dim_t
7417 the old names are deprecated, all in-Guile uses changed.
7418
7419 * tags.h (scm_ubits_t): new typedef, representing unsigned
7420 scm_bits_t.
7421
7422 * stacks.h: type renaming:
7423 scm_info_frame -> scm_info_frame_t
7424 scm_stack -> scm_stack_t
7425 the old names are deprecated, all in-Guile uses changed.
7426
7427 * srcprop.h: type renaming:
7428 scm_srcprops -> scm_srcprops_t
7429 scm_srcprops_chunk -> scm_srcprops_chunk_t
7430 the old names are deprecated, all in-Guile uses changed.
7431
7432 * gsubr.c, procs.c, print.c, ports.c, read.c, rdelim.c, ramap.c,
7433 rw.c, smob.c, sort.c, srcprop.c, stacks.c, strings.c, strop.c,
7434 strorder.c, strports.c, struct.c, symbols.c, unif.c, values.c,
7435 vectors.c, vports.c, weaks.c:
7436 various int/size_t -> size_t/scm_bits_t changes.
7437
7438 * random.h: type renaming:
7439 scm_rstate -> scm_rstate_t
7440 scm_rng -> scm_rng_t
7441 scm_i_rstate -> scm_i_rstate_t
7442 the old names are deprecated, all in-Guile uses changed.
7443
7444 * procs.h: type renaming:
7445 scm_subr_entry -> scm_subr_entry_t
7446 the old name is deprecated, all in-Guile uses changed.
7447
7448 * options.h (scm_option_t.val): unsigned long -> scm_bits_t.
7449 type renaming:
7450 scm_option -> scm_option_t
7451 the old name is deprecated, all in-Guile uses changed.
7452
7453 * objects.c: various long -> scm_bits_t changes.
7454 (scm_i_make_class_object): flags: unsigned long -> scm_ubits_t
7455
7456 * numbers.h (SCM_FIXNUM_BIT): deprecated, renamed to
7457 SCM_I_FIXNUM_BIT.
7458
7459 * num2integral.i.c: new file, multiply included by numbers.c, used
7460 to "templatize" the various integral <-> num conversion routines.
7461
7462 * numbers.c (scm_mkbig, scm_big2num, scm_adjbig, scm_normbig,
7463 scm_copybig, scm_2ulong2big, scm_dbl2big, scm_big2dbl):
7464 deprecated.
7465 (scm_i_mkbig, scm_i_big2inum, scm_i_adjbig, scm_i_normbig,
7466 scm_i_copybig, scm_i_short2big, scm_i_ushort2big, scm_i_int2big,
7467 scm_i_uint2big, scm_i_long2big, scm_i_ulong2big, scm_i_bits2big,
7468 scm_i_ubits2big, scm_i_size2big, scm_i_ptrdiff2big,
7469 scm_i_long_long2big, scm_i_ulong_long2big, scm_i_dbl2big,
7470 scm_i_big2dbl, scm_short2num, scm_ushort2num, scm_int2num,
7471 scm_uint2num, scm_bits2num, scm_ubits2num, scm_size2num,
7472 scm_ptrdiff2num, scm_num2short, scm_num2ushort, scm_num2int,
7473 scm_num2uint, scm_num2bits, scm_num2ubits, scm_num2ptrdiff,
7474 scm_num2size): new functions.
7475
7476 * modules.c (scm_module_reverse_lookup): i, n: int -> scm_bits_t.
7477
7478 * load.c: change int -> size_t in various places (where the
7479 variable is used to store a string length).
7480 (search-path): call scm_done_free, not scm_done_malloc.
7481
7482 * list.c (scm_ilength): return a scm_bits_t, not long.
7483 some other {int,long} -> scm_bits_t changes.
7484
7485 * hashtab.c: various [u]int -> scm_bits_t changes.
7486 scm_ihashx_closure -> scm_ihashx_closure_t (and made a typedef).
7487 (scm_ihashx): n: uint -> scm_bits_t
7488 use scm_bits2num instead of scm_ulong2num.
7489
7490 * gsubr.c: various int -> scm_bits_t changes.
7491
7492 * goops.[hc]: various {int,long} -> scm_bits_t changes.
7493
7494 * gh_data.c (gh_num2int): no loss of precision any more.
7495
7496 * gh.h (gh_str2scm): len: int -> size_t
7497 (gh_{get,set}_substr): start: int -> scm_bits_t,
7498 len: int -> size_t
7499 (gh_<num>2scm): n: int -> scm_bits_t
7500 (gh_*vector_length): return scm_[u]size_t, not unsigned long.
7501 (gh_length): return scm_bits_t, not unsigned long.
7502
7503 * gc.[hc]: various small changes relating to many things stopping
7504 being long and starting being scm_[u]bits_t instead.
7505 scm_mallocated should no longer wrap around.
7506
7507 * fports.h: type renaming:
7508 scm_fport -> scm_fport_t
7509 the old name is deprecated, all in-Guile uses changed.
7510
7511 * fports.c (fport_fill_input): count: int -> scm_bits_t
7512 (fport_flush): init_size, remaining, count: int -> scm_bits_t
7513
7514 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr): removed
7515 those prototypes, as the functions they prototype don't exist.
7516
7517 * fports.c (default_buffer_size): int -> size_t
7518 (scm_fport_buffer_add): read_size, write_size: int -> scm_bits_t
7519 default_size: int -> size_t
7520 (scm_setvbuf): csize: int -> scm_bits_t
7521
7522 * fluids.c (n_fluids): int -> scm_bits_t
7523 (grow_fluids): old_length, i: int -> scm_bits_t
7524 (next_fluid_num, scm_fluid_ref, scm_fluid_set_x): n: int ->
7525 scm_bits_t
7526 (scm_c_with_fluids): flen, vlen: int -> scm_bits_t
7527
7528 * filesys.c (s_scm_open_fdes): changed calls to SCM_NUM2LONG to
7529 the new and shiny SCM_NUM2INT.
7530
7531 * extensions.c: extension -> extension_t (and made a typedef).
7532
7533 * eval.h (SCM_IFRAME): cast to scm_bits_t, not int. just so
7534 there are no nasty surprises if/when the various deeply magic tag
7535 bits move somewhere else.
7536
7537 * eval.c: changed the locals used to store results of SCM_IFRAME,
7538 scm_ilength and such to be of type scm_bits_t (and not int/long).
7539 (iqq): depth, edepth: int -> scm_bits_t
7540 (scm_eval_stack): int -> scm_bits_t
7541 (SCM_CEVAL): various vars are not scm_bits_t instead of int.
7542 (check_map_args, scm_map, scm_for_each): len: long -> scm_bits_t
7543 i: int -> scm_bits_t
7544
7545 * environments.c: changed the many calls to scm_ulong2num to
7546 scm_ubits2num.
7547 (import_environment_fold): proc_as_ul: ulong -> scm_ubits_t
7548
7549 * dynwind.c (scm_dowinds): delta: long -> scm_bits_t
7550
7551 * debug.h: type renaming:
7552 scm_debug_info -> scm_debug_info_t
7553 scm_debug_frame -> scm_debug_frame_t
7554 the old names are deprecated, all in-Guile uses changed.
7555 (scm_debug_eframe_size): int -> scm_bits_t
7556
7557 * debug.c (scm_init_debug): use scm_c_define instead of the
7558 deprecated scm_define.
7559
7560 * continuations.h: type renaming:
7561 scm_contregs -> scm_contregs_t
7562 the old name is deprecated, all in-Guile uses changed.
7563 (scm_contregs_t.num_stack_items): size_t -> scm_bits_t
7564 (scm_contregs_t.num_stack_items): ulong -> scm_ubits_t
7565
7566 * continuations.c (scm_make_continuation): change the type of
7567 stack_size from long to scm_bits_t.
7568
7569 * ports.h: type renaming:
7570 scm_port_rw_active -> scm_port_rw_active_t (and made a typedef)
7571 scm_port -> scm_port_t
7572 scm_ptob_descriptor -> scm_ptob_descriptor_t
7573 the old names are deprecated, all in-Guile uses changed.
7574 (scm_port_t.entry): int -> scm_bits_t.
7575 (scm_port_t.line_number): int -> long.
7576 (scm_port_t.putback_buf_size): int -> size_t.
7577
7578 * __scm.h (long_long, ulong_long): deprecated (they pollute the
7579 global namespace and have little value beside that).
7580 (SCM_BITS_LENGTH): new, is the bit size of scm_bits_t (i.e. of an
7581 SCM handle).
7582 (ifdef spaghetti): include sys/types.h and sys/stdtypes.h, if they
7583 exist (for size_t & ptrdiff_t).
7584 (scm_sizet): deprecated.
7585
7586 * Makefile.am (noinst_HEADERS): add num2integral.i.c
7587
7588 2001-05-23 Marius Vollmer <mvo@zagadka.ping.de>
7589
7590 * snarf.h (SCM_CONST_LONG): Use SCM_VCELL_INIT instead of
7591 SCM_VARIABLE_INIT since that it what it used to be.
7592
7593 * deprecation.c (scm_include_deprecated_features): Make docstring
7594 ANSIsh. Thanks to Matthias Köppe!
7595
7596 2001-05-21 Marius Vollmer <mvo@zagadka.ping.de>
7597
7598 * symbols.c (scm_mem2symbol): Re-introduce indirect cell. It is
7599 needed for weak-key hashtables.
7600
7601 * procs.c (scm_make_subr_with_generic): Add missing last argument
7602 in call to scm_c_define_gsubr_with_generic. Thanks to Ariel Rios.
7603
7604 * eval.c: Use SCM_EQ_P instead of `==' or `!=' in certain
7605 places. (scm_c_improper_memq): Return 1 instead of SCM_BOOL_T.
7606
7607 * eval.h (SCM_EVALIM2): Use SCM_EQ_P instead of `=='.
7608
7609 2001-05-20 Marius Vollmer <mvo@zagadka.ping.de>
7610
7611 * symbols.c (scm_mem2symbol): Call `scm_must_strndup' instead of
7612 `duplicate_string'. Do not use an indirect cell, store symbol
7613 directly in collision list of hash table.
7614 (duplicate_string): Removed.
7615
7616 * init.c (scm_init_guile_1): Call scm_init_extensions.
7617
7618 * Makefile.am: Add "extensions.c" and related files in all the
7619 right places.
7620
7621 * extensions.h, extension.c: New files.
7622
7623 * gc.h, gc.c (scm_must_strdup, scm_must_strndup): New.
7624
7625 * modules.h (scm_system_module_env_p): Move out of deprecated
7626 section.
7627
7628 * rw.h (scm_init_rw): Added prototype.
7629
7630 * gsubr.h, gsubr.c (scm_c_make_gsubr, scm_c_define_gsubr,
7631 scm_c_make_gsubr_with_generic, scm_c_define_gsubr_with_generic):
7632 New functions. They replace scm_make_gsubr and
7633 scm_make_gsubr_with_generic. The `make' variants only create the
7634 gsubr object, while the `define' variants also put it into the
7635 current module. Changed all callers.
7636 (scm_make_gsubr, scm_make_gsubr_with_generic): Deprecated.
7637
7638 * procs.h, procs.c (scm_c_make_subr, scm_c_define_subr,
7639 scm_c_make_subr_with_generic, scm_c_define_subr_with_generic): New
7640 functions. They replace scm_make_subr, scm_make_subr_opt and
7641 scm_make_subr_with_generic. The `make' variants only create the
7642 subr object, while the `define' variants also put it into the
7643 current module. Changed all callers.
7644 (scm_make_subr, scm_make_subr_opt, scm_make_subr_with_generic):
7645 Deprecated.
7646
7647 * eval.c, gc.c, gh_funcs.c, goops.c, macros.c, pairs.c, ramap.c,
7648 rdelim.c, rw.c, scmsigs.c, snarf.h, values.c: Changed according to
7649 the comments above.
7650
7651 2001-05-19 Neil Jerram <neil@ossau.uklinux.net>
7652
7653 * throw.c (scm_lazy_catch): Slight docstring clarification.
7654
7655 2001-05-19 Marius Vollmer <mvo@zagadka.ping.de>
7656
7657 * throw.c: Lazy-catch handlers are no longer allowed to return.
7658 Fixed comments throughout.
7659 (scm_ithrow): Signal an error when a lazy-catch handler returns.
7660 Moved actual jump to jmpbuf into if-branch where the jmpbuf is
7661 recognized as such.
7662
7663 * version.c (s_scm_micro_version): Fix typo in FUNC_NAME, it
7664 refered to s_scm_minor_version previously.
7665
7666 * modules.h, modules.c: Moved around a lot of code so that
7667 deprecated features appear at the bottom.
7668 (root_module_lookup_closure, scm_sym_app, scm_sym_modules,
7669 module_prefix, make_modules_in_var, beautify_user_module_x_var,
7670 scm_the_root_module, scm_make_module, scm_ensure_user_module,
7671 scm_load_scheme_module): Deprecated.
7672 (scm_system_module_env_p): Return SCM_BOOL_T directly for
7673 environments corresponding to the root module.
7674 (convert_module_name, scm_c_resolve_module,
7675 scm_c_call_with_current_module, scm_c_define_module,
7676 scm_c_use_module, scm_c_export): New.
7677 (the_root_module): New static variant of scm_the_root_module. Use
7678 it everywhere instead of scm_the_root_module.
7679
7680 * fluids.h, fluids.c (scm_internal_with_fluids): Deprecated.
7681 (scm_c_with_fluids): Renamed from scm_internal_with_fluids.
7682 (scm_c_with_fluid): New.
7683 (scm_with_fluids): Use scm_c_with_fluids instead of
7684 scm_internal_with_fluids.
7685
7686 * goops.h, goops.c (scm_init_goops_builtins): Renamed from
7687 `scm_init_goops'. Do not explicitly create/switch modules.
7688 Return SCM_UNSPECIFIED.
7689 (scm_init_goops): Only register `%init-goops-builtins' procedure.
7690 (scm_load_goops): Use scm_c_resolve_module instead of
7691 scm_resolve_module.
7692
7693 * init.c (scm_init_guile_1): Call `scm_init_goops' instead of
7694 `scm_init_oop_goops_goopscore_module'. Call `scm_init_rdelim' and
7695 `scm_init_rw' prior to loading the startup files.
7696
7697 * rdelim.h, rdelim.c: (scm_init_rdelim_builtins): Renamed from
7698 scm_init_rdelim. Do not explicitly create/switch modules.
7699 Return SCM_UNSPECIFIED.
7700 (scm_init_rdelim): Only register `%init-rdelim-builtins'
7701 procedure.
7702
7703 * rw.c (scm_init_rw_builtins): Renamed from scm_init_rw. Do not
7704 explicitly create/switch modules. Return SCM_UNSPECIFIED.
7705 (scm_init_rw): Only register `%init-rw-builtins' procedure.
7706
7707 * script.c (scm_shell): Evaluate the compiled switches in the
7708 current module, not in the root module.
7709
7710 2001-05-18 Marius Vollmer <mvo@zagadka.ping.de>
7711
7712 * fluids.c (scm_c_with_fluids): Rename from
7713 scm_internal_with_fluids.
7714 (scm_internal_with_fluids): Deprecated.
7715 (scm_c_with_fluid): New.
7716
7717 2001-05-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
7718
7719 * print.h (PRINTH, SCM_PRINT_H): Renamed PRINTH to SCM_PRINT_H.
7720
7721 (SCM_PORT_WITH_PS_PORT, SCM_PORT_WITH_PS_PS): Only pairs may be
7722 accessed with SCM_C[AD]R.
7723
7724 (SCM_COERCE_OUTPORT): Removed redundant SCM_NIMP test.
7725
7726 2001-05-16 Rob Browning <rlb@cs.utexas.edu>
7727
7728 * version.c (s_scm_major_version): doc fixes.
7729 (s_scm_minor_version): doc fixes.
7730 (s_scm_minor_version): new function.
7731
7732 * version.h (scm_init_version): new function.
7733
7734 * versiondat.h.in: add GUILE_MICRO_VERSION.
7735
7736 2001-05-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7737
7738 * deprecation.c (scm_init_deprecation): Renamed
7739 GUILE_WARN_DEPRECATED_DEFAULT to SCM_WARN_DEPRECATED_DEFAULT.
7740
7741 2001-05-16 Marius Vollmer <mvo@zagadka.ping.de>
7742
7743 * Makefile.am (cpp_sig_symbols.c, cpp_err_symbols.c): Make
7744 dependent on cpp_cnvt.awk
7745
7746 2001-05-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
7747
7748 * script.c (scm_compile_shell_switches): New command line option
7749 `--use-srfi' for loading a list of SRFIs on startup.
7750 (scm_shell_usage): Added `--use-srfi' to help message.
7751
7752 2001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
7753
7754 Merged from mvo-vcell-cleanup-1-branch.
7755
7756 The concept of vcells has been removed from Guile. With it,
7757 explicit obarrays and associated operations are gone. Use
7758 hashtables instead of obarrays.
7759
7760 Throughout: use scm_sym2var instead of scm_sym2vcell and treat
7761 result as variable instead of vcell. Glocs no longer point to a
7762 vcell but to a variable. Use scm_c_define instead of
7763 scm_sysintern and treat the result as a variable (which it is),
7764 not a vcell.
7765
7766 * variable.c, variable.h (SCM_VARVCELL, SCM_UDVARIABLEP,
7767 SCM_DEFVARIABLEP): Deprecated.
7768 (SCM_VARIABLE_REF, SCM_VARIABLE_SET, SCM_VARIABLE_LOC): New.
7769 (variable_print): Do not print name of variable.
7770 (variable_equalp): Compare values, not vcells.
7771 (anonymous_variable_sym): Removed.
7772 (make_vcell_variable): Removed.
7773 (make_variable): New, as replacement.
7774 (scm_make_variable, scm_make_undefined_variable): Do not take name
7775 hint parameter.
7776 (scm_variable_ref): Check for SCM_UNDEFINED and throw "unbound"
7777 error in that case.
7778 (scm_builtin_variable): Deprecated.
7779
7780 * symbols.c, symbols.h (scm_sym2vcell, scm_sym2ovcell_soft,
7781 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
7782 scm_intern, scm_intern0, scm_sysintern0_no_module_lookup,
7783 scm_sysintern, scm_sysintern0, scm_symbol_value0,
7784 scm_string_to_obarray_symbol, scm_intern_symbol,
7785 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned,
7786 scm_symbol_bound_p, scm_symbol_set_x, scm_gentmp, gentmp_counter):
7787 Deprecated and moved to "symbols-deprecated.c".
7788 (copy_and_prune_obarray, scm_builtin_bindings): Removed.
7789 (scm_init_symbols): Call scm_init_symbols_deprecated.
7790 * symbols-deprecated.c: New file.
7791 * Makefile.am: Added symbols-deprecated.c and related files in all
7792 the right places.
7793
7794 * snarf.h (SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
7795 SCM_GLOBAL_VCELL_INIT): Deprecated.
7796 (SCM_VARIABLE, SCM_GLOBAL_VARIABLE, SCM_VARIABLE_INIT,
7797 SCM_GLOBAL_VARIABLE_INIT): New, as replacement. Changed all uses.
7798
7799 * print.c (scm_iprin1): Use scm_module_reverse_lookup instead of
7800 SCM_GLOC_SYM.
7801
7802 * evalext.c, filesys.c, fports.c, gdbint.c, gh_data.c, gsubr.c,
7803 hooks.c, load.c, numbers.c, objects.c, ports.c, posix.c, procs.c,
7804 ramap.c, random.c, read.c, regex-posix.c, scmsigs.c, script.c,
7805 socket.c, srcprop.c, stacks.c, stime.c, struct.c, tag.c, throw.c:
7806 Changed according to the `throughout' comments.
7807
7808 * modules.h, modules.c (scm_module_system_booted_p): Changed type
7809 to `int'.
7810 (scm_module_type): Removed.
7811 (the_root_module): Renamed to the_root_module_var. Now points to
7812 a variable instead of a vcell. Updated all uses.
7813 (scm_the_root_module): Return SCM_BOOL_F when module systems
7814 hasn't been booted yet.
7815 (SCM_VALIDATE_STRUCT_TYPE): Removed.
7816 (scm_post_boot_init_modules): Made static.
7817 (scm_set_current_module): Call scm_post_boot_init_modules on first
7818 call.
7819 (make_modules_in, beautify_user_module_x, resolve_module,
7820 try_module_autoload, module_make_local_var_x): Tacked on "_var"
7821 suffix. Now point to variables instead of vcells. Updated all
7822 uses.
7823 (scm_module_lookup_closure): Deal with the module being SCM_BOOL_F
7824 and return SCM_BOOL_F in that case.
7825 (scm_module_transformer): Likewise.
7826 (sym_module, scm_lookup_closure_module, scm_env_module): New.
7827 (SCM_F_EVAL_CLOSURE_INTERFACE, SCM_EVAL_CLOSURE_INTERFACE_P): New.
7828 (scm_eval_closure_lookup): Do not allow new definitions when
7829 `interface' flag is set.
7830 (scm_standard_interface_eval_closure): New.
7831 (scm_pre_modules_obarray, scm_sym2var, scm_module_lookup,
7832 scm_lookup, scm_module_define, scm_define, scm_c_module_lookup,
7833 scm_c_lookup, scm_c_module_define, scm_c_define,
7834 scm_module_reverse_lookup, scm_get_pre_modules_obarray,
7835 scm_modules_prehistory): New.
7836 (scm_post_boot_init_modules): Use scm_c_define and scm_c_lookup
7837 instead of scm_intern0.
7838
7839 * macros.c (scm_make_synt): Return SCM_UNSPECIFIED instead of the
7840 symbol.
7841
7842 * keywords.c (s_scm_make_keyword_from_dash_symbol): Use a regular
7843 hashtable operations to maintain the keywords, not obarray ones.
7844
7845 * init.c (scm_load_startup_files): Do not call
7846 scm_post_boot_init_modules. This is done by
7847 scm_set_current_module now.
7848 (scm_init_guile_1): Call scm_modules_prehistory. Call
7849 scm_init_variable early on.
7850
7851 * goops.c (s_scm_sys_goops_loaded): Get
7852 var_compute_applicable_methods from scm_sym2var, not from a direct
7853 invocation of scm_goops_lookup_closure.
7854
7855 * gh_funcs.c (gh_define): Return SCM_UNSPECIFIED instead of vcell.
7856
7857 * gc.c: Added simple debugging hack to mark phase of GC: When
7858 activated, do not tail-call scm_gc_mark. This gives nice
7859 backtraces.
7860 (scm_unhash_name): Removed.
7861
7862 * feature.c (features): Renamed to features_var. Now points to a
7863 variable instead of a vcell. Updated all uses.
7864
7865 * eval.h (SCM_TOP_LEVEL_LOOKUP_CLOSURE): Use
7866 `scm_current_module_lookup_closure' which will do the right thing
7867 when the module system hasn't been booted yet.
7868 (SCM_GLOC_SYM): Removed.
7869 (SCM_GLOC_VAR, SCM_GLOC_SET_VAL): New.
7870 (SCM_GLOC_VAL, SCM_GLOC_LOC): Reimplemented in terms of variables.
7871
7872 * eval.c (scm_lookupcar, scm_lookupcar1): Deal with variables
7873 instead of with vcells. Do not overwrite `var' with the result of
7874 the lookup, use the new `real_var' instead. Remove `var2' in
7875 exchange (which was only used with threads).
7876 (sym_three_question_marks): New.
7877 (scm_unmemocar): Use `scm_module_reverse_lookup' instead of
7878 `SCM_GLOC_SYM'.
7879 (scm_lisp_nil, scm_lisp_t): Directly define as symbols.
7880 (scm_m_atfop): Expect the function definition to be a variable
7881 instead of a vcell.
7882 (scm_macroexp): Do not use `unmemocar', explicitely remember the
7883 symbol instead.
7884 (scm_unmemocopy): Removed thoughts about anti-macro interface.
7885 (scm_eval_args): Use more explicit code in the gloc branch of the
7886 atrocious struct ambiguity test. The optimizer will sort this
7887 out.
7888 (scm_deval_args): Likewise.
7889 (SCM_CEVAL): Likewise. Also, do not use unmemocar, explicitely
7890 remember the symbol instead. Added some comments where
7891 scm_tc3_cons_gloc really exclusively refers to structs.
7892 (scm_init_eval): Use scm_define to initialize "nil" and "t" to
7893 scm_lisp_nil and scm_lisp_t, respectively. Use scm_define instead
7894 of scm_sysintern in general.
7895
7896 * dynwind.c (scm_swap_bindings): Use SCM_GLOC_SET_VAL instead of
7897 explicit magic.
7898
7899 * debug.c (s_scm_make_gloc): Only allow proper variables, no
7900 pairs. Put the variable directly in the gloc.
7901 (s_scm_gloc_p): Use `scm_tc3_cons_gloc' instead of the magic `1'.
7902 (scm_init_debug): Use scm_c_define instead scm_sysintern.
7903
7904 * cpp_cnvt.awk: Emit "scm_c_define" instead of "scm_sysintern".
7905
7906 * backtrace.h, backtrace.c (scm_the_last_stack_fluid): Renamed to
7907 scm_the_last_stack_fluid_var. It now points to a variable instead
7908 of a vcell. Updated all uses.
7909 (scm_has_shown_backtrace_hint_p_var): Now points to a variable
7910 instead of a vcell. Updated all uses.
7911
7912 * _scm.h: Include "variables.h" and "modules.h" since almost
7913 everybody needs them now.
7914
7915 * root.h (scm_symhash, scm_symhash_vars): Removed.
7916 * gc.c (scm_init_storage): Do not initialize them.
7917
7918 2001-05-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
7919
7920 * eval.c (scm_init_eval): Initialize scm_undefineds and
7921 scm_listofnull.
7922
7923 * gc.c (scm_debug_newcell, scm_debug_newcell2): Fixed to behave
7924 like the SCM_NEWCELL macro counterparts.
7925
7926 (scm_init_storage, scm_init_gc): Moved initialization of
7927 scm_tc16_allocated from scm_init_gc to scm_init_storage.
7928
7929 (scm_init_storage): Moved initialization of scm_undefineds and
7930 scm_listofnull to eval.c, initializion of scm_nullstr to
7931 strings.c, initializion of scm_nullvect to vectors.c.
7932
7933 * gc.h (SCM_NEWCELL, SCM_NEWCELL2): Prefer SCM_NULLP over
7934 SCM_IMP, as in scm_debug_newcell and scm_debug_newcell2.
7935
7936 * init.c (scm_init_guile_1): Reordered some initializations and
7937 added dependcy information comments.
7938
7939 * load.c (scm_init_load): Use scm_nullstr.
7940
7941 * strings.c (scm_init_strings): Initialize scm_nullstr.
7942
7943 * vectors.c (scm_init_vectors): Initialize scm_nullvect.
7944
7945 2001-05-15 Marius Vollmer <mvo@zagadka.ping.de>
7946
7947 * values.c (print_values): Print as a unreadable object, not as
7948 multiple lines. Thanks to Matthias Köppe!
7949
7950 2001-05-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
7951
7952 * deprecation.c: Fixed copyright date.
7953
7954 * deprecation.h (DEPRECATION_H, SCM_DEPRECATION_H): Renamed
7955 DEPRECATION_H to SCM_DEPRECATION_H.
7956
7957 2001-05-10 Thien-Thi Nguyen <ttn@revel.glug.org>
7958
7959 * guile-doc-snarf.in: Update copyright.
7960 Fix relative path bug. Thanks to Sergey Poznyakoff.
7961
7962 2001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
7963
7964 * ports.c (scm_port_revealed, scm_set_port_revealed_x): Only
7965 accept open ports. Thanks to Quetzalcoatl Bradley!
7966
7967 2001-05-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
7968
7969 * procs.c: Increased `scm_subr_table_room' to 800 because Guile now
7970 has 779 primitives on startup.
7971
7972 2001-05-09 Marius Vollmer <mvo@zagadka.ping.de>
7973
7974 * eval.c (scm_i_eval): Copy expression before passing it to
7975 SCM_XEVAL. The copy operation was removed unintendedly during my
7976 change on 2001-03-25.
7977
7978 2001-05-09 Michael Livshin <mlivshin@bigfoot.com>
7979
7980 from Matthias Köppe (thanks!):
7981
7982 * ports.c (scm_c_read): pointer arithmetic on void pointers isn't
7983 portable.
7984
7985 * deprecation.c (s_scm_include_deprecated_features): ANSI'fied the
7986 docstring.
7987
7988 2001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
7989
7990 * gc.c (scm_init_gc): Added FIXME comment.
7991
7992 * hooks.c: Since hooks don't have a name any more, it is not
7993 necessary to include objprop.h.
7994
7995 (hook_print, scm_add_hook_x): Replace SCM_NFALSEP by !SCM_FALSEP.
7996
7997 (symbol_name, scm_make_hook_with_name): Removed.
7998
7999 (scm_create_hook): Don't set the hook's name property.
8000
8001 * hooks.h (HOOKSH, SCM_HOOKS_H): Renamed HOOKSH to SCM_HOOKS_H.
8002
8003 (SCM_HOOK_NAME, scm_make_hook_with_name): Removed.
8004
8005 * init.c (scm_init_guile_1): Hooks don't use objprops any more.
8006
8007 * numbers.c (SCM_FLOBUFLEN, FLOBUFLEN, scm_number_to_string,
8008 scm_print_real, scm_print_complex): Renamed SCM_FLOBUFLEN to
8009 FLOBUFLEN and define it unconditionally.
8010
8011 2001-05-07 Marius Vollmer <mvo@zagadka.ping.de>
8012
8013 * gh_data.c (gh_lookup): Call gh_module_lookup with
8014 `scm_current_module ()', not `#f'.
8015 (gh_module_lookup): Expect a module instead of an obarray as first
8016 argument and do lookup in that module.
8017
8018 * ramap.c (raeql_1): Do not call scm_uniform_vector_length on
8019 arrays. The length of array is already determined differently and
8020 scm_uniform_vector_length does not work on arrays.
8021
8022 2001-05-06 Marius Vollmer <mvo@zagadka.ping.de>
8023
8024 * snarf.h (SCM_FUNC_CAST_ARBITRARY_ARGS): Use "SCM (*)()" for C++
8025 as well. "SCM (*)(...)" does not work on RedHat 7.1.
8026
8027 * __scm.h (SCM_WTA_DISPATCH_0): Removed ARG and POS parameters,
8028 they are not used. Changed `wrong type' error into `wrong num
8029 args' error. Changed all callers.
8030
8031 * numbers.c (scm_difference): Call SCM_WTA_DISPATCH_0 when zero
8032 arguments are supplied.
8033
8034 2001-05-05 Thien-Thi Nguyen <ttn@revel.glug.org>
8035
8036 * regex-posix.c (scm_regexp_exec): Expand docstring to briefly
8037 describe `regexp/notbol' and `regexp/noteol' execution flags.
8038
8039 * strop.c (scm_substring_move_x): Doc fix; nfc.
8040
8041 2001-05-05 Marius Vollmer <mvo@zagadka.ping.de>
8042
8043 * objects.c, objects.h (scm_valid_object_procedure_p): New.
8044 (scm_set_object_procedure_x): Use it to check argument. Fix
8045 docstring.
8046
8047 * evalext.c (scm_definedp): Fix docstring.
8048
8049 2001-05-05 Gary Houston <ghouston@arglist.com>
8050
8051 * socket.c: use HAVE_IPV6 instead of AF_INET6 to enable IPv6
8052 support.
8053
8054 2001-05-04 Neil Jerram <neil@ossau.uklinux.net>
8055
8056 * eval.c (scm_promise_p), list.c (scm_append_x, scm_reverse_x),
8057 symbols.c (scm_symbol_to_string), vports.c (scm_make_soft_port):
8058 Change R4RS references to R5RS.
8059
8060 * guile-snarf.awk.in: Fixes so that (i) blank lines in the
8061 docstring source are correctly reproduced in the output (ii)
8062 we don't anymore get occasional trailing quotes. Also reorganized
8063 and commented the code a little.
8064
8065 * scmsigs.c (scm_raise), throw.c (scm_throw): Docstring format
8066 fixes.
8067
8068 2001-05-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
8069
8070 * strop.c (scm_string_split): New procedure.
8071
8072 * strop.h (scm_string_split): Added prototype.
8073
8074 2001-05-04 Gary Houston <ghouston@arglist.com>
8075
8076 * socket.c: define uint32_t if netdb.h doesn't. thanks to
8077 Dale P. Smith.
8078
8079 2001-05-02 Marius Vollmer <mvo@zagadka.ping.de>
8080
8081 * rw.c: Include "modules.h" and "strports.h".
8082
8083 * net_db.h (scm_gethost): Added prototype.
8084
8085 * deprecation.h, deprecation.c: New.
8086 * Makefile.am (libguile_la_SOURCES): Added "deprecation.c".
8087 (DOT_X_FILES): Added "deprecation.x".
8088 (modinclude_HEADERS): Added "deprecation.h".
8089
8090 * init.c: Include "deprecation.h".
8091 (scm_init_guile_1): Call scm_init_deprecation.
8092
8093 2001-05-01 Marius Vollmer <mvo@zagadka.ping.de>
8094
8095 * gh.h (gh_init_guile, gh_make_string, gh_string_length,
8096 gh_string_ref, gh_string_set_x, gh_substring, gh_string_append):
8097 New.
8098
8099 2001-04-29 Gary Houston <ghouston@arglist.com>
8100
8101 * rw.c: new file, implementing C part of module (ice-9 rw).
8102 (scm_read_string_x_partial): moved from ioext.c
8103 (scm_init_rw): new proc.
8104 * rw.h: new file.
8105 init.c: include rw.h and call scm_init_rw.
8106 Makefile.am: include rw.c and rw.h.
8107
8108 2001-04-28 Rob Browning <rlb@cs.utexas.edu>
8109
8110 * numbers.c: enabled local definition of SCM_FLOBUFLEN until we
8111 know what's supposed to happen to it.
8112
8113 * list.h (scm_list_star): deprecation expired - removed.
8114
8115 * numbers.h (scm_dblproc): deprecation expired - removed.
8116 (SCM_UNEGFIXABLE): deprecation expired - removed.
8117 (SCM_FLOBUFLEN): deprecation expired - removed.
8118 (SCM_INEXP): deprecation expired - removed.
8119 (SCM_CPLXP): deprecation expired - removed.
8120 (SCM_REAL): deprecation expired - removed.
8121 (SCM_IMAG): deprecation expired - removed.
8122 (SCM_REALPART): deprecation expired - removed.
8123 (scm_makdbl): deprecation expired - removed.
8124 (SCM_SINGP): deprecation expired - removed.
8125 (SCM_NUM2DBL): deprecation expired - removed.
8126 (SCM_NO_BIGDIG): deprecation expired - removed.
8127
8128 * tags.h (SCM_DOUBLE_CELLP): deprecation expired - removed.
8129 (scm_tc_dblr): deprecation expired - removed.
8130 (scm_tc_dblc): deprecation expired - removed.
8131 (scm_tc16_flo): deprecation expired - removed.
8132 (scm_tc_flo): deprecation expired - removed.
8133
8134 * tag.h (scm_tag): deprecation expired - removed.
8135
8136 * tag.c: (scm_tag): deprecation expired - removed.
8137
8138 * ioext.c: (scm_fseek): deprecation expired - removed.
8139
8140 * ioext.h (scm_fseek): deprecation expired - removed.
8141
8142 * gh_data.c (gh_int2scmb): deprecation expired - removed.
8143
8144 * gh.h (gh_int2scmb): deprecation expired - removed.
8145
8146 2001-04-28 Neil Jerram <neil@ossau.uklinux.net>
8147
8148 * stacks.c (scm_make_stack): Fix typo in docstring.
8149
8150 2001-04-27 Rob Browning <rlb@cs.utexas.edu>
8151
8152 * error.c (scm_sysmissing): deprecation expired - removed.
8153
8154 * error.h (scm_sysmissing): deprecation expired - removed.
8155
8156 * gc.c
8157 (scm_init_gc): gc-thunk deprecation expired - removed.
8158 (scm_gc_vcell): deprecation expired - removed.
8159 (gc_async_thunk): scm_gc_vcell related code removed.
8160
8161 * vectors.h (SCM_NVECTORP): deprecation expired - removed.
8162
8163 * strings.h
8164 (SCM_NSTRINGP): deprecation expired - removed.
8165 (SCM_NRWSTRINGP): deprecation expired - removed.
8166
8167 * continuations.h (SCM_SETJMPBUF): deprecation expired - removed.
8168
8169 * chars.h
8170 (SCM_ICHRP): deprecation expired - removed.
8171 (SCM_ICHR): deprecation expired - removed.
8172 (SCM_MAKICHR): deprecation expired - removed.
8173
8174 * ports.h
8175 (SCM_INPORTP): deprecation expired - removed.
8176 (SCM_OUTPORTP): deprecation expired - removed.
8177
8178 2001-04-25 Marius Vollmer <mvo@zagadka.ping.de>
8179
8180 * modules.c (scm_module_type): New.
8181 (scm_post_boot_init_modules): Initialize from Scheme value.
8182 (the_module, scm_current_module, scm_init_modules): the_module is
8183 now a C only fluid.
8184 (scm_current_module): Export to Scheme.
8185 (scm_set_current_module): Do not call out to Scheme, do all the
8186 work in C. Export procedure to Scheme. Only accept modules, `#f'
8187 is no longer valid as the current module. Only set
8188 scm_top_level_lookup_closure_var and scm_system_transformer when
8189 they are not deprecated.
8190 (scm_module_transformer, scm_current_module_transformer): New.
8191
8192 * modules.h (scm_module_index_transformer, SCM_MODULE_TRANSFORMER,
8193 scm_current_module_transformer, scm_module_transformer): New.
8194
8195 * gh_data.c: Removed FIXME comment about gh_lookup returning
8196 SCM_UNDEFINED. That's the right thing to do.
8197
8198 * eval.h, eval.c (scm_system_transformer): Deprecated by moving it
8199 into the conditionally compiled sections.
8200 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Use
8201 scm_current_module_transformer instead of scm_system_transformer.
8202 * init.c (start_stack): Move initialization of
8203 scm_system_transformer to the deprecated section.
8204
8205 2001-04-22 Neil Jerram <neil@ossau.uklinux.net>
8206
8207 * throw.c (scm_throw): Correct docstring.
8208
8209 2001-04-22 Gary Houston <ghouston@arglist.com>
8210
8211 * socket.c: attempted to improve the docstrings slightly.
8212
8213 * net_db.c: remove bogus "close" declaration.
8214 (inet_aton declaration, scm_inet_aton, scm_inet_ntoa,
8215 scm_inet_netof, scm_lnaof, scm_inet_makeaddr, INADDR_ANY etc.):
8216 moved to socket.c.
8217 * net_db.h: declarations moved too.
8218
8219 * socket.c (scm_htonl, scm_ntohl): use uint32_t instead of unsigned
8220 long.
8221 (ipv6_net_to_num, ipv6_num_to_net): new static procedures.
8222 (VALIDATE_INET6): new macro.
8223 (scm_inet_pton, scm_inet_ntop): new procedures, implementing
8224 inet-pton and inet-ntop.
8225 (scm_fill_sockaddr): use VALIDATE_INET6 and ipv6_num_to_net.
8226 (scm_addr_vector): use ipv6_net_to_num.
8227
8228 2001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
8229
8230 * eq.c (scm_equal_p), ramap.c (scm_init_ramap): Don't compute the
8231 smob number explicitly. Use SCM_TC2SMOBNUM instead.
8232
8233 * gc.c (MARK, scm_gc_sweep): Only check for illegal heap objects
8234 when compiled in debug mode.
8235
8236 (scm_gc_sweep): Only call smob's free function if it is defined.
8237
8238 * print.c (scm_iprin1): No need to check for validity of smob
8239 type or existence of print function.
8240
8241 * smob.[ch] (scm_smobs): Made into a fixed size global array.
8242 Resizing will not work well with preemptive threading.
8243
8244 * smob.c (scm_smob_print): Don't use SCM_CDR to access smob data.
8245
8246 (scm_make_smob_type): Extracted initialization of smob
8247 descriptors to scm_smob_prehistory. Don't use scm_numsmob outside
8248 of the critical section.
8249
8250 (scm_smob_prehistory): Initialize all smob descriptors. By
8251 default, don't assign a smob free function: Most smob types don't
8252 need one.
8253
8254 * smob.h (SMOBH, SCM_SMOB_H): Renamed SMOBH to SCM_SMOB_H.
8255
8256 2001-04-21 Gary Houston <ghouston@arglist.com>
8257
8258 * socket.c (FLIP_NET_HOST_128): new macro.
8259 (scm_fill_sockaddr): use new macro.
8260 (scm_addr_vector): completed IPv6 address support. added const
8261 to the address parameter.
8262
8263 2001-04-20 Gary Houston <ghouston@arglist.com>
8264
8265 * socket.c (scm_fill_sockaddr): call htons for sin6_port.
8266 Don't assign sin6_scope_id in structure unless HAVE_SIN6_SCOPE_ID
8267 is defined.
8268 (scm_addr_vector): use a switch instead of multiple if statements.
8269 Add support for IPv6 (incomplete) .
8270 MAX_ADDR_SIZE: increase to size of struct sockaddr_in6 if needed.
8271
8272 2001-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
8273
8274 * struct.c (scm_free_structs): Only pairs may be accessed with
8275 SCM_C[AD]R.
8276
8277 2001-04-19 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
8278
8279 * unif.h (SCM_ARRAY_CONTIGUOUS): Reintroduced as deprecated.
8280
8281 * __scm.h (SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
8282 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Inserted required
8283 parentheses in order to get the correct associativity.
8284
8285 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
8286
8287 * unif.c (scm_array_to_list): Added missing handling of arrays of
8288 bytes. Thanks to Masao Uebayashi for the bug report.
8289
8290 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
8291
8292 * debug.c (scm_procedure_source): Use SCM_CLOSURE_FORMALS more
8293 consistently.
8294
8295 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
8296
8297 * procs.h (SCM_CLOSURE_FORMALS): New macro.
8298
8299 * debug.c (scm_procedure_source), eval.c (scm_badformalsp,
8300 SCM_CEVAL, SCM_APPLY), goops.c (get_slot_value, set_slot_value),
8301 procprop.c (scm_i_procedure_arity), sort.c (closureless): Use
8302 SCM_CLOSURE_FORMALS.
8303
8304 * eval.c (scm_badformalsp, SCM_CEVAL), procprop.c
8305 (scm_i_procedure_arity): Prefer stronger predicates like
8306 SCM_NULLP or SCM_FALSEP over SCM_IMP.
8307
8308 * macros.c (macro_print): Extracted macro printing code from
8309 print.c and simplified it.
8310
8311 (scm_macro_type): Use SCM_MACRO_TYPE;
8312
8313 (scm_init_macros): Use macro_print for printing macros.
8314
8315 * print.c (scm_print_opts): Improved option documentation.
8316
8317 (scm_iprin1): Extracted printing of macros to macros.c.
8318 Simplified printing of ordinary closures.
8319
8320 * procs.c (scm_thunk_p): Fixed handling of closures. Thanks to
8321 Martin Grabmueller for the bug report.
8322
8323 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
8324
8325 This patch eliminates some further applications of SCM_C[AD]R to
8326 non pair cells.
8327
8328 * gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR): Deprecated. These have
8329 never been applied to real pairs.
8330
8331 * srcprop.h (SCM_SOURCE_PROPERTY_FLAG_BREAK): Added.
8332
8333 (SRCPROPBRK): Use SCM_SOURCE_PROPERTY_FLAG_BREAK.
8334
8335 * unif.h (SCM_ARRAY_CONTIGUOUS, SCM_ARRAY_FLAG_CONTIGUOUS,
8336 SCM_ARRAY_CONTP): Renamed SCM_ARRAY_CONTIGUOUS to
8337 SCM_ARRAY_FLAG_CONTIGUOUS and use it.
8338
8339 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
8340 Added.
8341
8342 * srcprop.h (SRCPROPH), unif.h (UNIFH): Renamed to
8343 SCM_SOURCE_PROPERTIES_H and SCM_UNIFORM_VECTORS_H, respectively.
8344
8345 * srcprop.h (SETSRCPROPBRK, CLEARSRCPROPBRK), unif.c
8346 (scm_dimensions_to_uniform_array, scm_ra_set_contp): Don't use
8347 SCM_SET{AND,OR}_CAR.
8348
8349 2001-04-17 Gary Houston <ghouston@arglist.com>
8350
8351 * some initial support for IPv6:
8352
8353 * socket.c (scm_fill_sockaddr): improve the argument validation.
8354 don't allocate memory until all args are checked. instead of
8355 unconditional memset of soka, try setting sin_len to 0 if
8356 SIN_LEN is defined. add support for AF_INET6. define FUNC_NAME.
8357 (scm_socket, scm_connect): extend docstrings for IPv6.
8358 (scm_init_socket): intern AF_INET6 and PF_INET6.
8359
8360 2001-04-17 Niibe Yutaka <gniibe@m17n.org>
8361
8362 * srcprop.c (scm_make_srcprops): Added SCM_ALLOW_INTS which
8363 matches SCM_DEFER_INTS at the beginning of the function.
8364
8365 * mallocs.c (scm_malloc_obj): Remove un-matched SCM_ALLOW_INTS.
8366
8367 * gc.c (scm_igc): Unconditionally call
8368 SCM_CRITICAL_SECTION_START/END.
8369
8370 * fluids.c (next_fluid_num): Unconditionally call
8371 SCM_CRITICAL_SECTION_START/END.
8372 (s_scm_make_fluid): Remove un-matched SCM_DEFER_INTS.
8373
8374 * coop-defs.h (SCM_THREAD_DEFER, SCM_THREAD_ALLOW,
8375 SCM_THREAD_REDEFER, SCM_THREAD_REALLOW_1, SCM_THREAD_REALLOW_2):
8376 Removed.
8377
8378 * __scm.h (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END):
8379 Defined as nothing for the case of !defined(USE_THREADS).
8380 (SCM_THREAD_DEFER, SCM_THREAD_ALLOW, SCM_THREAD_REDEFER):
8381 Removed.
8382 (<stdio.h>): Include when (SCM_DEBUG_INTERRUPTS == 1).
8383 (SCM_CHECK_NOT_DISABLED, SCM_CHECK_NOT_ENABLED): Print FILE and
8384 LINE.
8385 (SCM_DEFER_INTS, SCM_ALLOW_INTS_ONLY, SCM_ALLOW_INTS,
8386 SCM_REDEFER_INTS, SCM_REALLOW_INTS): Don't use
8387 SCM_THREAD_DEFER/SCM_THREAD_ALLOW. Instead, use
8388 SCM_CRITICAL_SECTION_START/END.
8389 (SCM_REALLOW_INTS: Bug fix. Don't call
8390 SCM_THREAD_SWITCHING_CODE.
8391 (SCM_TICK): Don't use SCM_DEFER_INTS/SCM_ALLOW_INTS. Instead, use
8392 SCM_THREAD_SWITCHING_CODE directly.
8393 (SCM_ENTER_A_SECTION): Unconditionally use
8394 SCM_CRITICAL_SECTION_START/END. (was:
8395 SCM_DEFER_INTS/SCM_ALLOW_INTS when SCM_POSIX_THREADS defined).
8396
8397 2001-04-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
8398
8399 * __scm.h (SCM_CAREFUL_INTS, SCM_DEBUG_INTERRUPTS): Replaced the
8400 macro SCM_CAREFUL_INTS by the macro SCM_DEBUG_INTERRUPTS and
8401 allowed to explicitly set this macro via the CFLAGS variable
8402 during make.
8403
8404 * fluids.c (next_fluid_num), gc.c (scm_igc), coop-defs.h
8405 (SCM_THREAD_CRITICAL_SECTION_START,
8406 SCM_THREAD_CRITICAL_SECTION_END): Renamed
8407 SCM_THREAD_CRITICAL_SECTION_START/END to
8408 SCM_CRITICAL_SECTION_START/END.
8409
8410 2001-04-11 Keisuke Nishida <kxn30@po.cwru.edu>
8411
8412 * debug-malloc.c (grow, scm_debug_malloc_prehistory): Use memset
8413 instead of bzero.
8414
8415 * coop.c, iselect.c (FD_ZERO_N): Unconditionally use memset.
8416 (MISSING_BZERO_DECL): Remove the declaration.
8417
8418 Thanks to NIIBE Yutaka.
8419
8420 2001-04-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
8421
8422 * init.c, goops.c, goops.h: Reverted change of 2001-03-29. (The
8423 goops module should be registered in order to work for an
8424 application which uses libguile statically linked.)
8425
8426 2001-04-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
8427
8428 * numbers.[ch] (scm_num2long, scm_num2long_long,
8429 scm_num2ulong_long, scm_num2ulong): Argument position is an
8430 unsigned integer.
8431
8432 * environments.c (eval_environment_folder,
8433 import_environment_folder), gh_data.c (gh_scm2longs,
8434 gh_scm2floats, gh_scm2doubles): Distinguish between 0 and NULL
8435 for integers and pointers, respectively.
8436
8437 * gh_data.c (gh_scm2ulong, gh_scm2long, gh_scm2int), socket.c
8438 (scm_fill_sockaddr), unif.c (scm_array_set_x), validate.h
8439 (SCM_NUM2ULONG, SCM_NUM2LONG, SCM_NUM2LONG_DEF,
8440 SCM_NUM2LONG_LONG): Don't pass argument positions as pointers.
8441
8442 * filesys.c (scm_open_fdes, scm_open), net_db (scm_inet_ntoa,
8443 scm_inet_netof, scm_lnaof, scm_gethost, scm_getproto), posix.c
8444 (scm_utime), ramap.c (scm_array_fill_int), scmsigs.c
8445 (scm_sigaction), socket.c (scm_htonl, scm_ntohl, scm_sendto),
8446 stime.c (scm_localtime, scm_gmtime), struct.c (scm_struct_set_x),
8447 validate.h (SCM_VALIDATE_LONG_COPY): Whitespace fixes.
8448
8449 2001-04-09 Neil Jerram <neil@ossau.uklinux.net>
8450
8451 * strings.c (scm_read_only_string_p): Update docstring to reflect
8452 current (non-)usage of "read only" strings.
8453 (scm_make_shared_substring): Clarify docstring by changing
8454 "semantics" to "arguments".
8455
8456 2001-04-06 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
8457
8458 * hooks.c (scm_make_hook, scm_make_hook_with_name),
8459 (scm_hook_p, scm_hook_empty_p, scm_run_hook): Docstring
8460 improvements.
8461
8462 2001-04-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
8463
8464 The following changes make the documentation more consistent.
8465
8466 * rdelim.c (scm_write_line), posix.c (scm_utime), ports.c
8467 (scm_seek), net_db.c (scm_inet_aton, scm_inet_ntoa),
8468 (scm_inet_netof, scm_lnaof, scm_inet_makeaddr), ioext.c
8469 (scm_ftell): Changed @smalllisp ... @end smalllisp to @lisp
8470 ... @end lisp.
8471
8472 * vports.c (scm_make_soft_port), version.c (scm_version), unif.c
8473 (scm_array_dimensions, scm_make_shared_array),
8474 (scm_transpose_array, scm_enclose_array, scm_bit_count_star),
8475 throw.c (scm_catch), struct.c (scm_make_vtable_vtable), strop.c
8476 (scm_string_rindex, scm_string_index, scm_substring_fill_x),
8477 (scm_string_null_p), strings.c (scm_read_only_string_p), root.c
8478 (scm_call_with_dynamic_root), ramap.c (scm_array_index_map_x),
8479 posix.c (scm_mknod), numbers.c (scm_logtest, scm_logbit_p),
8480 macros.c (scm_makmmacro), list.c (scm_append), environments.c
8481 (scm_environment_fold), dynwind.c (s_scm_dynamic_wind): Changed
8482 @example ... @end example to @lisp ... @end lisp.
8483
8484 * weaks.c (scm_weak_vector): Corrected docstring.
8485
8486 * hashtab.c (scm_hashq_ref, scm_hashq_set_x, scm_hashq_remove_x),
8487 (scm_hashv_ref, scm_hashv_set_x, scm_hashv_remove_x),
8488 (scm_hash_ref, scm_hash_set_x, scm_hash_remove_x, scm_hashx_ref),
8489 (scm_hashx_set_x, scm_hashx_get_handle),
8490 (scm_hashx_create_handle_x), regex-posix.c (scm_make_regexp),
8491 (scm_regexp_exec, scm_regexp_p), numbers.c (scm_logtest),
8492 vectors.c (scm_vector_fill_x), strings.c
8493 (scm_make_shared_substring), symbols.c (scm_string_to_symbol),
8494 objprop.c (scm_set_object_properties_x):
8495 (scm_set_object_property_x), throw.c (scm_catch, scm_lazy_catch),
8496 strports.c (scm_call_with_input_string), ports.c
8497 (scm_truncate_file), ioext.c (scm_ftell), ports.c (scm_seek),
8498 list.c (scm_append_x), dynwind.c (scm_dynamic_wind), error.c
8499 (scm_error_scm), vports.c (scm_make_soft_port), weaks.c
8500 (scm_make_weak_vector,scm_weak_vector_p),
8501 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table),
8502 (scm_make_doubly_weak_hash_table, scm_weak_key_hash_table_p),
8503 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
8504 macros.c (scm_macro_type), dynl.c (scm_dynamic_link),
8505 (scm_dynamic_unlink, scm_dynamic_call, scm_dynamic_args_call):
8506 Made parameter names match documentation by renaming parameters
8507 and/or fixing docstrings.
8508
8509 * numbers.c (scm_ash): Corrected Texinfo markup.
8510
8511 * strop.c (scm_string_index, scm_string_rindex),
8512 (scm_substring_fill_x, scm_string_null_p): Removed `qdocs'.
8513
8514 * vports.c (scm_make_soft_port), unif.c
8515 (scm_uniform_vector_length, scm_array_p, scm_array_rank),
8516 (scm_dimensions_to_uniform_array, scm_transpose_array),
8517 (scm_array_in_bounds_p, scm_uniform_vector_ref),
8518 (scm_bit_count, scm_bit_position, scm_bit_count_star),
8519 (scm_array_to_list, scm_list_to_uniform_array),
8520 (scm_array_prototype, symbols.c (scm_string_to_symbol), strports.c
8521 (scm_open_input_string, scm_open_output_string),
8522 (scm_get_output_string), strop.c (scm_string_copy),
8523 (scm_string_fill_x), strings.c (scm_string_p, scm_string), stime.c
8524 (scm_get_internal_real_time, scm_times),
8525 (scm_get_internal_run_time, scm_current_time, scm_gettimeofday),
8526 (scm_localtime, scm_gmtime), socket.c (scm_htons, scm_ntohs),
8527 (scm_htonl, scm_ntohl, scm_socket, scm_socketpair),
8528 (scm_getsockopt, scm_getsockname, scm_getpeername, scm_recvfrom),
8529 simpos.c (scm_system), random.c (scm_random_uniform),
8530 (scm_random_normal, scm_random_exp), ramap.c
8531 (scm_array_equal_p), posix.c (scm_pipe, scm_getgroups),
8532 (scm_status_exit_val, scm_status_term_sig, scm_status_stop_sig),
8533 (scm_getppid, scm_getuid, scm_getgid, scm_geteuid, scm_getegid),
8534 (scm_getpgrp, scm_ttyname, scm_ctermid, scm_tcgetpgrp, scm_uname),
8535 (scm_environ, scm_tmpnam, scm_mkstemp, scm_access, scm_getpid),
8536 (scm_setlocale), ports.c (scm_char_ready_p, scm_drain_input),
8537 (scm_pt_size, scm_pt_member, scm_port_revealed, scm_port_mode),
8538 (scm_close_port, scm_input_port_p, scm_output_port_p, scm_port_p),
8539 (scm_port_closed_p, scm_eof_object_p, scm_read_char),
8540 (scm_peek_char), pairs.c (scm_pair_p, scm_cons), numbers.c
8541 (scm_logand, scm_logior, scm_logxor, scm_lognot),
8542 (scm_integer_expt, scm_bit_extract, scm_logcount),
8543 (scm_integer_length, scm_string_to_number, scm_inexact_to_exact),
8544 net_db.c (scm_inet_netof, scm_lnaof), modules.c
8545 (scm_interaction_environment), macros.c (scm_makacro),
8546 (scm_makmacro, scm_makmmacro), keywords.c (scm_keyword_p), ioext.c
8547 (scm_ftell, scm_dup_to_fdes, scm_fileno, scm_isatty_p),
8548 (scm_fdopen, scm_fdes_to_ports), gc.c (scm_gc_stats), fluids.c
8549 (scm_fluid_ref), filesys.c (scm_open_fdes),
8550 (scm_stat, scm_directory_stream_p, scm_getcwd, scm_readlink):
8551 Docstring correction: `Returns' -> `Return'
8552
8553 * gc.c (scm_set_debug_cell_accesses_x):
8554 (s_scm_gc_set_debug_check_freelist_x):
8555 * fluids.c (scm_fluid_p): Added texinfo markup.
8556
8557 * error.c (scm_strerror): Made docstring more precise.
8558
8559 * vectors.c (scm_vector_p, scm_vector, scm_make_vector),
8560 (scm_vector_to_list, _scm_vector_fill_x), symbols.c
8561 (scm_symbol_p, scm_symbol_to_string), strorder.c
8562 (scm_string_equal_p, scm_string_ci_equal_p, scm_string_less_p),
8563 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p),
8564 (scm_string_ci_less_p, scm_string_ci_leq_p, scm_string_ci_gr_p):
8565 (scm_string_ci_geq_p), strop.c (scm_string_copy),
8566 (scm_string_fill_x): Removed `(r5rs)' from docstrings.
8567
8568 2001-04-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
8569
8570 * gc.c (MARK): Re-introduce a cheap sanity test for non debug
8571 mode, as suggested by Michael Livshin.
8572
8573 2001-03-31 Michael Livshin <mlivshin@bigfoot.com>
8574
8575 * backtrace.c (display_backtrace_body): since the `print_state'
8576 variable is not used (instead its data field is used directly as
8577 `pstate'), protect it from the hungry compiler optimizations.
8578 thanks to Bill Schottstaedt for the report.
8579
8580 2001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
8581
8582 * gc.[ch] (scm_tc16_allocated): New type tag for allocated cells.
8583 It is only defined and used if guile is compiled with
8584 SCM_DEBUG_CELL_ACCESSES set to true. It's purpose is, to never
8585 let cells with a free_cell type tag be visible outside of the
8586 garbage collector when in debug mode.
8587
8588 * gc.c (scm_debug_cell_accesses_p): Set to true as default.
8589
8590 (scm_assert_cell_valid): Use a local static variable to avoid
8591 recursion.
8592
8593 (MARK): Only check for rogue cell pointers in debug mode. Use
8594 scm_cellp for this purpose and place all checks for rogue pointers
8595 into that function. Further, since due to conservative scanning
8596 we may encounter free cells during marking, don't use the standard
8597 cell type accessor macro to determine the cell type.
8598
8599 (scm_cellp): Check if the cell pointer actually points into a
8600 card header.
8601
8602 (scm_init_gc): Initalize scm_tc16_allocated.
8603
8604 * gc.h (GCH): Renamed to SCM_GC_H.
8605
8606 (SCM_VALIDATE_CELL): Enclose the expression in brackets. This
8607 might be unnecessary, but I feel better this way :-)
8608
8609 (SCM_GC_CELL_TYPE): New macro.
8610
8611 (SCM_SETAND_CDR, SCM_SETOR_CDR): Deprecated. These are not used
8612 in guile, and it is unlikely that they will be applied to real
8613 pairs anyway.
8614
8615 (SCM_SET_FREE_CELL_TYPE): Removed. It was not used.
8616
8617 (SCM_GC_SET_ALLOCATED): New macro. Only non-empty if guile is
8618 compiled with SCM_DEBUG_CELL_ACCESSES set to true.
8619
8620 (SCM_NEWCELL, SCM_NEWCELL2): Use of SCM_GC_SET_ALLOCATED will
8621 make sure that in debug mode no free cell will ever be visible
8622 outside of the garbage collector.
8623
8624 2001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
8625
8626 * async.c (scm_asyncs_pending): Don't use != to compare SCM
8627 values.
8628
8629 * async.c (scm_system_async), variable.c (scm_make_variable,
8630 scm_make_undefined_variable): Use scm_cons to create a pair.
8631
8632 * debug.c (scm_reverse_lookup): Perform proper type checking.
8633 Remove suspicious use of SCM_SLOPPY_CONSP.
8634
8635 * eq.c (scm_equal_p), tags.h (SCM_ECONSP): Use SCM_CONSP instead
8636 of SCM_SLOPPY_CONSP. A sane compiler should be able to perform
8637 the corresponding optimization.
8638
8639 * eval.c (iqq): Use proper type check.
8640
8641 (scm_m_expand_body): Remove redundant type checks.
8642
8643 (promise_print): Don't access promise cells as pairs.
8644
8645 * eval.c (EVALCAR, iqq, scm_m_expand_body, scm_eval_args,
8646 scm_deval_args SCM_CEVAL), guardians.c (scm_guard), hashtab.c
8647 (scm_internal_hash_fold), print.c (scm_iprlist): Use !SCM_CELLP
8648 for SCM_NCELLP, !SCM_CONSP for SCM_NCONSP, !SCM_IMP for SCM_NIMP,
8649 !SCM_FALSEP for SCM_NFALSEP, !SCM_NULLP for SCM_NNULLP
8650
8651 * eval.c (scm_m_define, scm_macroexp, SCM_CEVAL), print.c
8652 (scm_iprin1): Use new macro predicate and accessors.
8653
8654 * eval.h (scm_tc16_macro): Removed declaration. It is declared
8655 in macros.h.
8656
8657 * eval.h (EVALH), macros.h (MACROSH), ports.h (PORTSH), procs.h
8658 (PROCSH), tags.h (TAGSH), variable.h (VARIABLEH): Renamed to
8659 SCM_EVAL_H, SCM_MACROS_H, SCM_PORTS_H, SCM_PROCS_H, SCM_TAGS_H and
8660 SCM_VARIABLE_H. Even the macros that are used to inhibit
8661 including a header file twice should be in the SCM_ namespace.
8662
8663 * fluids.c (scm_swap_fluids, scm_swap_fluids_reverse),
8664 properties.c (scm_primitive_property_ref,
8665 scm_primitive_property_del_x): Prefer stronger predicates like
8666 SCM_NULLP or SCM_FALSEP over SCM_IMP.
8667
8668 * gc.c (MARK): Use proper macros to access procedure-with-setter
8669 cell elements and closure cell elements.
8670
8671 (gc_sweep_freelist_finish, scm_gc_sweep, init_heap_seg): Don't
8672 access free cells as pairs.
8673
8674 (scm_unprotect_object): scm_hashq_get_handle returns #f if
8675 no hashtab entry is found.
8676
8677 * gc.c (scm_gc_sweep), ports.c (scm_close_port): Use new macro
8678 SCM_CLR_PORT_OPEN_FLAG.
8679
8680 * guardians.c (TCONC_IN), print.c (scm_free_print_state): Don't
8681 use SCM_SET_C[AD]R for uninitialized cells.
8682
8683 * hashtab.c (scm_hash_fn_get_handle): Use SCM_VALIDATE_VECTOR.
8684 If the hashtable has no slots, return #f instead of '(). This
8685 unifies the return value with most assoc-functions.
8686
8687 (scm_hash_fn_ref): Use proper type check.
8688
8689 (scm_hashq_get_handle, scm_hashv_get_handle, scm_hash_get_handle):
8690 Removed references to non-existing functions from documentation.
8691
8692 * keywords.c (scm_keyword_dash_symbol): Use proper macros to
8693 access keyword cell elements.
8694
8695 * macros.h (SCM_MACROP, SCM_MACRO_TYPE, SCM_MACRO_CODE): New
8696 macros.
8697
8698 * ports.h (SCM_CLR_PORT_OPEN_FLAG): New macro.
8699
8700 * print.c (scm_iprlist): Added comment. Improved loop
8701 conditions.
8702
8703 * procs.h (SCM_ENV, SCM_SETENV): Don't access closure cells as
8704 pairs.
8705
8706 * smob.c (scm_markcdr): Don't access smob cells as pairs.
8707
8708 * tags.h (SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP): Deprecated.
8709
8710 * throw.c (ACTIVATEJB, DEACTIVATEJB): Don't access jump buffer
8711 cells as pairs.
8712
8713 * variable.c (variable_print, variable_equalp, scm_variable_ref,
8714 scm_variable_set_x): Use proper macros to access variable cell
8715 elements.
8716
8717 (scm_variable_bound_p): Don't use SCM_NEGATE_BOOL.
8718
8719 * variable.h (SCM_VARVCELL): Don't access variable cells as
8720 pairs.
8721
8722 * vectors.c (scm_vector), weaks.c (scm_weak_vector): Simplified,
8723 added FIXME comment, removed register specifier.
8724
8725 2001-03-29 Keisuke Nishida <kxn30@po.cwru.edu>
8726
8727 * goops.c, goops.h (scm_init_oop_goops_goopscore_module): Deprecated.
8728 * init.c (scm_init_guile_1): Don't init goopscore module.
8729
8730 2001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
8731
8732 * eval.c (SCM_APPLY): Check that arg1 is bound for scm_tc7_cxr.
8733
8734 2001-03-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
8735
8736 * strop.c (scm_string_to_list): Fixed docstring markup.
8737 (scm_string_upcase_x, scm_string_upcase, scm_string_downcase_x),
8738 (scm_string_downcase, scm_string_capitalize_x),
8739 (scm_string_capitalize): Rewrote and corrected docstrings.
8740 (scm_string_ci_to_symbol): Made docstring more explicit.
8741
8742 2001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
8743
8744 * values.h (scm_values_vtable, SCM_VALUESP): Moved here so that
8745 eval.c can use it.
8746 (scm_call_with_values): Removed.
8747 * values.c (values_vtable, scm_values_vtable): Added "scm_" prefix
8748 so that it can be exported.
8749 (scm_call_with_values): Removed.
8750
8751 * tags.h (SCM_IM_CALL_WITH_VALUES): New isym.
8752 * eval.c: Include "libguile/values.h"
8753 (scm_m_at_call_with_values, scm_sym_at_call_with_values):
8754 New.
8755 (unmemocopy, scm_ceval, scm_deval): Handle new isym.
8756 * eval.h (scm_sym_at_call_with_values, scm_m_at_call_with_values):
8757 New delcarations to support above change.
8758
8759 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Fix syntax
8760 errors with last change.
8761
8762 2001-03-25 Marius Vollmer <mvo@zagadka.ping.de>
8763
8764 * eval.c (scm_primitive_eval_x, scm_primitive_eval, scm_i_eval_x,
8765 scm_i_eval): Moved the application of the system transformer from
8766 scm_i_eval to scm_primitive_eval.
8767
8768 2001-03-23 Neil Jerram <neil@ossau.uklinux.net>
8769
8770 * guile-snarf.awk.in: Substitute "\\" with "\" in .doc output.
8771
8772 * strop.c (scm_string_index): Fix docstring line break
8773 regression.
8774
8775 * list.c (scm_cons_star): Fix docstring typo.
8776
8777 2001-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
8778
8779 * gc.c (scm_init_storage), gdbint.c (scm_init_gdbint), numbers.c
8780 (big2str), ports.c (scm_drain_input), read.c (scm_read,
8781 scm_grow_tok_buf), strings.c (scm_string, scm_makfromstr,
8782 scm_make_string, scm_string_append), strports.c (st_resize_port,
8783 scm_object_to_string), unif.c (scm_make_uve): Replace calls to
8784 scm_makstr with calls to scm_allocate_string.
8785
8786 * strings.[ch] (scm_allocate_string): New function.
8787
8788 * strings.[ch] (scm_makstr): Deprecated.
8789
8790 2001-03-18 Gary Houston <ghouston@arglist.com>
8791
8792 * posix.c (scm_tmpnam): check that return value from tmpnam is not
8793 NULL. rewrote the docstring.
8794 (scm_mkstemp): new procedure implementing "mkstemp!".
8795 * posix.h: declare scm_mkstemp.
8796
8797 * net_db.c: declare h_errno if configure didn't define HAVE_H_ERRNO.
8798 normally it would be found in netdb.h.
8799
8800 2001-03-17 Gary Houston <ghouston@arglist.com>
8801
8802 * sort.c (scm_sort): move sortvec variable to avoid a compiler
8803 warning when HAVE_ARRAYS is not defined. move len too.
8804
8805 * Makefile.am (DOT_X_FILES): remove net_db.x, posix.x, socket.x.
8806 (EXTRA_DOT_X_FILES): let configure set the value.
8807 (DOT_DOC_FILES): remove net_db.doc, posix.doc, socket.doc.
8808
8809 * gc.c (scm_must_malloc): changed the comment explaining when
8810 scm_must variants of malloc/free etc., should be used, based on
8811 explanation from Dirk Herrmann.
8812 * fports.c (scm_fport_buffer_add): use FUNC_NAME instead of a local
8813 string with procedure name. use scm_must_malloc instead of malloc.
8814 (scm_setvbuf, scm_fdes_to_port, fport_close): use scm_must variants
8815 of malloc/free.
8816 * ports.c (scm_add_to_port_table, scm_remove_from_port_table,
8817 scm_ungetc): use scm_must variants of malloc/realloc/free.
8818 (scm_add_to_port_table, scm_ungetc): define FUNC_NAME.
8819
8820 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
8821
8822 * __scm.h (SCM_ASSERT, SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
8823 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Don't call scm_wta, call
8824 scm_wrong_type_arg instead.
8825
8826 (SCM_WNA): Deprecated.
8827
8828 * error.[ch] (scm_wta): Deprecated.
8829
8830 * numbers.c (s_i_log): Minor comment fix.
8831
8832 * read.c (scm_lreadr), unif.c (scm_aind, scm_shap2ra,
8833 scm_make_shared_array, scm_transpose_array, scm_enclose_array,
8834 scm_array_in_bounds_p): Don't use SCM_ASSERT to check for
8835 wrong-num-args or misc errors.
8836
8837 * unif.c (scm_make_shared_array, scm_transpose_array,
8838 scm_enclose_array, scm_array_in_bounds_p, scm_array_set_x):
8839 Validate the rest argument (note: this is only done when guile is
8840 built with SCM_DEBUG_REST_ARGUMENT=1)
8841
8842 (scm_array_in_bounds_p, scm_uniform_vector_ref, scm_array_set_x):
8843 Replace calls to scm_wrong_num_args by SCM_WRONG_NUM_ARGS.
8844
8845 * validate.h (SCM_FUNC_NAME, SCM_VALIDATE_NUMBER_COPY,
8846 SCM_VALIDATE_NUMBER_DEF_COPY): Deprecated.
8847
8848 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
8849
8850 * validate.h (SCM_WRONG_NUM_ARGS): Call scm_error_num_args_subr
8851 instead of scm_wrong_num_args.
8852
8853 * coop-threads.c: Don't include libguile/strings.h. (Was only
8854 needed for former implementation of SCM_WRONG_NUM_ARGS.)
8855
8856 * debug.c (scm_m_start_stack): Don't use SCM_ASSERT to check for
8857 wrong-num-args errors.
8858
8859 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
8860
8861 * error.[ch] (scm_error_num_args_subr): New function.
8862
8863 2001-03-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
8864
8865 * list.c (scm_list, scm_cons_star, scm_null_p, scm_list_p),
8866 (scm_length, scm_append, scm_reverse, scm_list_ref),
8867 (scm_memq, scm_memv, scm_member, scm_delv_x, scm_delete_x),
8868 (scm_delq, scm_delv, scm_delete, scm_delq1_x, scm_delv1_x),
8869 (scm_delete1_x), gc.c (scm_map_free_list),
8870 (scm_free_list_length), hash.c (scm_hashq, scm_hashv),
8871 (scm_hash), hashtab.c (scm_hashq_ref, scm_hashq_set_x),
8872 (scm_hashq_remove_x, scm_hashv_ref, scm_hashv_set_x),
8873 (scm_hashv_remove_x, scm_hash_ref, scm_hash_set_x),
8874 (scm_hash_remove_x), ports.c (scm_pt_size, scm_pt_member), print.c
8875 (scm_current_pstate), scmsigs.c (scm_usleep), goops.c
8876 (scm_get_keyword, scm_sys_compute_slots): Added texinfo markup.
8877
8878 * weaks.c (scm_weak_vector_p, scm_weak_key_hash_table_p),
8879 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
8880 rdelim.c (scm_read_delimited_x), strop.c (scm_string_index),
8881 symbols.c (scm_symbol_interned_p), numbers.c
8882 (scm_string_to_number), ports.c (scm_port_p): Corrected texinfo
8883 markup.
8884
8885 2001-03-16 Keisuke Nishida <kxn30@po.cwru.edu>
8886
8887 * snarf.h (SCM_CONST_LONG): Deprecated.
8888 * tag.c (CONST_INUM): New macro. Use it to define scm_utag_*.
8889
8890 2001-03-15 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8891
8892 * numbers.c (scm_num2ulong): Check that a bignum is positive
8893 before looking at the magnitude. Correctly check for overflow
8894 during conversion.
8895 (scm_num2long_long): Likewise.
8896 (scm_num2ulong_long): New.
8897 (ULONG_LONG_MAX): Define if not already defined.
8898 * numbers.h: (scm_num2ulong_long): New prototype.
8899
8900 2001-03-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
8901
8902 * validate.h (SCM_VALIDATE_OPOUTSTRPORT): New macro.
8903
8904 * strports.h (SCM_STRPORTP, SCM_OPSTRPORTP, SCM_OPINSTRPORTP),
8905 (SCM_OPOUTSTRPORTP): New predicate macros.
8906 (scm_open_input_string, scm_open_output_string),
8907 (scm_get_output_string): New prototypes.
8908
8909 * strports.c (scm_open_input_string, scm_open_output_string),
8910 (scm_get_output_string): New procedures (SRFI-6 compliant).
8911 Made scm_tc16_strport non-static.
8912
8913 2001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
8914
8915 * macros.h (SCM_ASSYNT): Removed unused object argument from
8916 signature.
8917
8918 * eval.c (scm_m_body, scm_m_quote, scm_m_begin, scm_m_if,
8919 scm_m_set_x, scm_m_and, scm_m_or, scm_m_case, scm_m_cond,
8920 scm_m_letstar, scm_m_do, scm_m_quasiquote, scm_m_delay,
8921 scm_m_define, scm_m_letrec1, scm_m_letrec, scm_m_let, scm_m_apply,
8922 scm_m_cont, scm_m_nil_cond, scm_m_nil_ify, scm_m_t_ify,
8923 scm_m_0_cond, scm_m_0_ify, scm_m_1_ify, scm_m_atfop, scm_m_atbind,
8924 scm_m_expand_body), evalext.c (scm_m_generalized_set_x,
8925 scm_m_undefine), goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
8926 scm_m_atdispatch): Removed unused object argument from call to
8927 SCM_ASSYNT.
8928
8929 2001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
8930
8931 * gh.h/gh_data.c (gh_ints2scm): Changed the signature to use a
8932 const int* to reflect that the input array of integers remains
8933 unchanged. Thanks to Brett Viren for the hint.
8934
8935 2001-03-14 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
8936
8937 * gh_data.c (gh_scm2chars, gh_scm2shorts, gh_scm2longs),
8938 (gh_scm2floats, gh_scm2doubles): Check for malloc() returning NULL
8939 in various places.
8940 (gh_scm2newstr, gh_symbol2newstr): Change call to
8941 scm_must_malloc() to malloc(), because user-free()able memory is
8942 allocated.
8943
8944 * gc.c: Added declaration of `scm_debug_check_freelist'.
8945
8946 2001-03-13 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
8947
8948 * ports.c (scm_port_mode): Changed `mode' array size to 4.
8949
8950 2001-03-12 Keisuke Nishida <kxn30@po.cwru.edu>
8951
8952 * strports.c (scm_object_to_string): New procedure.
8953 (scm_strprint_obj): Deprecated.
8954 * strports.h: Reflect the changes.
8955
8956 2001-03-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
8957
8958 * goops.h (SCM_VALIDATE_PUREGENERIC): New macro.
8959
8960 * goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
8961 scm_m_atdispatch): Provide definitions for FUNC_NAME. Don't use
8962 SCM_ASSYNT to check for correct argument types. Either use some
8963 SCM_VALIDATE_* macro or an explicit test.
8964
8965 (scm_make_foreign_object): Don't use SCM_ASSERT to check for
8966 misc-errors.
8967
8968 * macros.h (SCM_ASSYNT): On assertion failure, issue a misc-error
8969 instead of calling scm_wta.
8970
8971 2001-03-12 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
8972
8973 * load.c (scm_primitive_load, scm_primitive_load_path),
8974 (scm_sys_search_load_path): Corrected docstrings (file ->
8975 filename).
8976
8977 * eval.c (scm_force): Added texinfo markup to docstring.
8978 (scm_promise_p): Renamed parameter to `obj' to match docstring.
8979
8980 * debug-malloc.c: Reinserted #include <stdio.h>.
8981
8982 2001-03-11 Keisuke Nishida <kxn30@po.cwru.edu>
8983
8984 * list.c (s_scm_reverse_x): Use SCM_VALIDATE_LIST.
8985
8986 * environments.c, error.c, eval.c, filesys.c, hashtab.c, load.c,
8987 net_db.c, procprop.c, read.c, scmsigs.c, socket.c, struct.c:
8988 Use SCM_LISTn instead of scm_listify.
8989
8990 2001-03-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
8991
8992 * _scm.h: Removed #include <errno.h>.
8993
8994 * error.c, net_db.c, putenv.c, stime.c: Removed declaration of
8995 errno variable (can be a macro on some systems, for example when
8996 using linux libc with threads).
8997
8998 * error.c, filesys.c, gc.c, ioext.c, iselect.c, net_db.c, ports.c,
8999 posix.c, print.c, putenv.c, scmsigs.c, script.c, simpos.c, smob.c,
9000 socket.c, srcprop.c, stime.c, strop.c, unif.c, vports.c: Added
9001 #include <errno.h> in these 20 out of 100 files.
9002
9003 2001-03-10 Gary Houston <ghouston@arglist.com>
9004
9005 * socket.c: add a definition of SUN_LEN (from glibc) for when it's
9006 not already defined.
9007
9008 2001-03-09 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
9009
9010 * coop.c: Inserted #include <stdio.h>.
9011
9012 * iselect.c: Reinserted #include <stdio.h>.
9013
9014 2001-03-10 Marius Vollmer <mvo@zagadka.ping.de>
9015
9016 * posix.c: Replaced `#define' of __USE_XOPEN right before
9017 including unistd.h with a define of _GNU_SOURCE at the very top of
9018 the file.
9019
9020 2001-03-09 Keisuke Nishida <kxn30@po.cwru.edu>
9021
9022 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
9023 continuations.c, debug-malloc.c, debug.c, dynwind.c, eq.c, eval.c,
9024 feature.c, filesys.h, gc_os_dep.c, gh_data.c, gh_eval.c,
9025 gh_funcs.c, gh_io.c, gh_list.c, gh_predicates.c, hash.c,
9026 hashtab.c, iselect.c, keywords.c, list.c, load.c, mallocs.c,
9027 net_db.c, numbers.c, objprop.c, objprop.h, options.c, pairs.c,
9028 print.c, procprop.c, procs.c, properties.c, ramap.c,
9029 regex-posix.c, root.c, scmsigs.c, simpos.c, socket.c, srcprop.c,
9030 stackchk.c, stacks.c, strings.c, strop.c, strorder.c, struct.c,
9031 symbols.c, tag.c, threads.c, variable.c, vectors.c, weaks.c:
9032 Remove #include <stdio.h>
9033 * gc.c, gdbint.c, root.c, sort.c, unif.c: Add #include <string.h>.
9034
9035 * procs.c (scm_make_subr_opt): Init symcell to avoid warning.
9036
9037 2001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
9038
9039 * posix.c (scm_gethostname): Set initial name length to 256 for
9040 Solaris.
9041
9042 2001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
9043
9044 * posix.h (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
9045 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
9046 (scm_sethostname, scm_gethostname): New prototypes.
9047
9048 * posix.c: Added inclusion of <crypt.h>, <sys/resource.h> and
9049 <sys/file.h>, if present.
9050 (scm_init_posix): [PRIO_PROCESS, PRIO_PGRP, PRIO_USER, LOCK_SH,
9051 LOCK_EX, LOCK_UN, LOCK_NB]: New variables.
9052 (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
9053 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
9054 (scm_sethostname, scm_gethostname): New procedures.
9055
9056 2001-03-08 Neil Jerram <neil@ossau.uklinux.net>
9057
9058 * ports.c (scm_port_column): Docstring fixes: (i) port-line arg is
9059 not optional (ii) "recommend" spelling correction.
9060
9061 2001-03-08 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
9062
9063 * ramap.c (racp): Removed optimization which caused array copying
9064 to fail if the two arrays shared storage. Re-inserted the IVDEP
9065 macros removed in the change of 2000-03-09. (Don't really have a
9066 complete grasp of what they are for, but they seem to be necessary
9067 on Crays. This needs testing!) Thanks to Miroslav Silovic.
9068
9069 * hash.c (scm_string_hash): Don't downcase characters.
9070
9071 2001-03-07 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
9072
9073 * symbols.c (scm_symbols_prehistory): Changed symbol hash table
9074 size from 277 --> 1009.
9075
9076 * symbols.c, symbols.h (scm_sys_symbols): New function GUILE_DEBUG
9077 function.
9078
9079 * coop-threads.c: Fixed change of 2001-03-06.
9080
9081 * validate.h: Code formatting.
9082
9083 2001-03-07 Keisuke Nishida <kxn30@po.cwru.edu>
9084
9085 * Makefile.am (*.x): Add dependency on snarf.h and guile-doc-snarf.in.
9086 (*.doc): Add dependency on guile-snarf.awk.in.
9087
9088 * guile-snarf.awk.in: Neglect spaces at the end of
9089 SCM_SNARF_DOCSTRING_END. Skip lines "# NN ..." in the
9090 middle of docstrings. (To avoid the problem with gcc-2.96.)
9091
9092 2001-03-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
9093
9094 * coop-threads.c (scm_call_with_new_thread), load.c
9095 (scm_primitive_load, scm_sys_search_load_path), random.c
9096 (scm_c_default_rstate), struct.c (scm_make_struct_layout,
9097 scm_struct_ref, scm_struct_set_x): Don't use SCM_ASSERT to
9098 (potentially) issue a scm-misc-error or wrong-num-args error
9099 message.
9100
9101 * load.c (scm_search_path): Use SCM_ASSERT_TYPE to give details
9102 about the expected type with the wrong-type-arg error message.
9103
9104 * smob.c (scm_make_smob): Abort on misuse of smob - it indicates
9105 a C level bug that can't be fixed from scheme anyway.
9106
9107 2001-03-05 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
9108
9109 * eval.c (scm_m_letstar): Removed check for duplicate bindings.
9110 Duplicate bindings are OK in a let* since a let* is semantically
9111 equivalent to a nested set of let:s.
9112
9113 2001-03-05 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
9114
9115 * print.c (scm_print_options): Fixed texinfo in docstring.
9116
9117 * net_db.c (scm_getserv, scm_getproto, scm_getnet): Return #f if
9118 the underlying functions getservent, getprotoent or getnetent
9119 return NULL instead of signalling an error.
9120
9121 2001-03-04 Gary Houston <ghouston@arglist.com>
9122
9123 * socket.c (scm_fill_sockaddr): don't allow buffer overflows when
9124 taking an unexpectedly large filename for an AF_UNIX socket from
9125 bind/connect/sendto (thanks to Martin Grabmueller).
9126
9127 * socket.c (scm_sock_fd_to_port, SCM_SOCK_FD_TO_PORT): removed the
9128 former and adjusted the latter.
9129 (scm_socket, scm_socketpair): cosmetic changes.
9130 (scm_getsockopt, scm_setsockopt): declare optlen as int, not
9131 size_t as socklen_t substitute. don't restrict args/return values
9132 to INUM: allow full range of int or size_t.
9133 (scm_fill_sockaddr): check arguments before allocating memory, to
9134 avoid leakage. use malloc, not scm_must_malloc.
9135 (scm_connect, scm_bind, scm_sendto): use int, not size_t as socklen_t
9136 substitute. free the sockaddr structure before throwing an error.
9137 (scm_init_add_buffer): procedure removed, together with its static
9138 buffer scm_addr_buffer, which wouldn't be thread safe. instead,
9139 define a macro MAX_ADDR_SIZE and declare the buffer where needed.
9140 (scm_accept, scm_getpeername, scm_getsockname, scm_recvfrom,
9141 scm_sendto): use a local buffer instead of scm_addr_buffer.
9142 adjust for new SCM_SOCK_FD_TO_PORT. use int for address size,
9143 not size_t.
9144 (scm_recvfrom): set addr->sa_family to AF_UNSPEC before the recvfrom
9145 call to detect whether recvfrom could be bothered to set the address.
9146 (scm_init_socket): don't call scm_init_addr_buffer.
9147
9148 2001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
9149
9150 * debug.c (scm_procedure_source, scm_procedure_environment),
9151 print.c (scm_get_print_state), ramap.c (scm_array_fill_int,
9152 scm_array_index_map_x), sort.c (scm_sort_x, scm_sort,
9153 scm_stable_sort_x, scm_stable_sort), stacks.c (scm_make_stack,
9154 scm_last_stack_frame), symbols.c (scm_sym2vcell, scm_sym2ovcell),
9155 unif.c (scm_list_to_uniform_array, scm_uniform_vector_length,
9156 scm_transpose_array, scm_enclose_array, scm_array_in_bounds_p,
9157 scm_uniform_vector_ref, scm_array_set_x, scm_uniform_array_read_x,
9158 scm_uniform_array_write, scm_bit_set_star_x, scm_bit_count_star,
9159 scm_array_to_list, scm_array_prototype), validate.h
9160 (SCM_VALIDATE_NUMBER_COPY): Don't call function scm_wta, call
9161 scm_misc_error or scm_wrong_type_arg instead.
9162
9163 * validate.h (SCM_WTA, RETURN_SCM_WTA): Deprecated.
9164
9165 2001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
9166
9167 * goops.c, goops.h (scm_sys_pre_expand_closure_x): Removed.
9168 (scm_sys_tag_body): Added.
9169
9170 2001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
9171
9172 * continuations.c (continuation_apply), eval.c (scm_m_lambda,
9173 scm_m_letstar, scm_m_letrec1, scm_m_let, SCM_APPLY), eval.h
9174 (SCM_EVALIM2), evalext.c (scm_m_generalized_set_x), gc.c
9175 (get_bvec, MARK), goops.c (scm_primitive_generic_generic),
9176 options.c (scm_options), ports.c (scm_remove_from_port_table),
9177 ramap.c (scm_ramapc), read.c (skip_scsh_block_comment, scm_lreadr,
9178 scm_lreadparen, scm_lreadrecparen), script.c (script_get_octal,
9179 script_get_backslash, script_read_arg), unif.c (scm_cvref): Don't
9180 call function scm_wta, call scm_misc_error or scm_wrong_type_arg
9181 instead.
9182
9183 2001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
9184
9185 * goops.c (scm_sys_pre_expand_closure_x): New procedure.
9186
9187 2001-03-04 Marius Vollmer <mvo@zagadka.ping.de>
9188
9189 * eval.c (scm_s_duplicate_bindings): New error message.
9190 (scm_m_letrec1, scm_m_letstar): Check for duplicate bindings.
9191
9192 2001-03-03 Marius Vollmer <mvo@zagadka.ping.de>
9193
9194 * eval.h (SCM_EVALIM2): New macro. Use it when a
9195 immediate, literal constant should be evaluated.
9196 * eval.c (scm_s_duplicate_formals): New error message string.
9197 (scm_c_improper_memq): New function.
9198 (scm_m_lambda): Check for duplicate arguments.
9199 (scm_ceval, scm_deval): When executing a body: only cons a new
9200 toplevel environment frame when it is different from the
9201 existing one; use EVALCAR instead of SIDEVAL so that we can properly
9202 check for empty combinations; use SCM_EVALIM2 for the same reason
9203 in the non-toplevel loop.
9204 (nontoplevel_cdrxnoap, nontoplevel_cdrxbegin, nontoplevel_begin):
9205 New labels with the meaning of their non-"nontoplevel" partners,
9206 but they are used when it is known that the body is not evaluated at
9207 top-level.
9208 (scm_apply, scm_dapply): use SCM_EVALIM2 to get proper error
9209 reporting for empty combinations.
9210
9211 2001-03-02 Keisuke Nishida <kxn30@po.cwru.edu>
9212
9213 * Remove dump facilities.
9214 * dump.c, dump.h: Removed.
9215 * Makefile.am: Remove dump.c, dump.h, dump.x, dump.doc.
9216 * init.c: Remove #include "libguile/dump.h".
9217 (scm_init_guile_1): Remove scm_init_dump.
9218 * smob.h (scm_smob_descriptor): Remove slots: dump, undump.
9219 (scm_set_smob_dump, scm_set_smob_undump): Remove declaration.
9220 * smob.c (scm_make_smob_type): Remove initialization: dump, undump.
9221 (scm_set_smob_dump, scm_set_smob_undump): Removed.
9222
9223 * keywords.c: Remove #include "libguile/dump.h".
9224 (keyword_dump, keyword_undump): Removed.
9225 (scm_init_keywords): Remove scm_set_smob_dump and scm_set_smob_undump.
9226
9227 2001-03-02 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
9228
9229 * vectors.c (s_scm_vector_p, list->vector, scm_vector)
9230 (scm_vector_ref, scm_vector_set_x, scm_vector_to_list)
9231 (scm_vector_fill_x), strorder.c (scm_string_equal_p)
9232 (scm_string_ci_equal_p, scm_string_less_p, scm_string_leq_p)
9233 (scm_string_gr_p, scm_string_geq_p, scm_string_ci_less_p)
9234 (scm_string_ci_geq_p), symbols.c (scm_symbol_p)
9235 (scm_symbol_to_string, scm_string_to_symbol): Changed use of @t{}
9236 to @code{} as the texinfo manual recommends, converted the
9237 examples to use a @lisp{}-environment.
9238
9239 * strports.c (scm_eval_string): Cleaned up the docstring.
9240
9241 * struct.c (scm_struct_p, scm_struct_vtable_p): Added texinfo
9242 markup.
9243
9244 * numbers.c (scm_exact_p, scm_odd_p, scm_even_p)
9245 (scm_number_to_string, scm_string_to_number, scm_number_p)
9246 (scm_real_p, scm_integer_p, scm_inexact_p, scm_make_rectangular)
9247 (scm_make_polar, scm_inexact_to_exact): Added texinfo markup.
9248 (scm_ash): Added texinfo markup and removed obsolete @refill.
9249 (scm_gr_p): Corrected comment.
9250 (scm_gr_p, scm_leq_p, scm_geq_p): Added texinfo markup to (future
9251 docstring) comments.
9252 (scm_positive_p, scm_less_p, scm_num_eq_p, scm_real_p)
9253 (scm_number_p, scm_negative_p, scm_max, scm_min, scm_sum)
9254 (scm_difference, scm_product, scm_divide, scm_asinh, scm_acosh)
9255 (scm_atanh, scm_truncate, scm_round, scm_exact_to_inexact)
9256 (floor, ceiling, $sqrt, $abs, $exp, $log, $sin, $cos, $tan, $asin)
9257 ($acos, $atan, $sinh, $cosh, $tanh, scm_real_part, scm_imag_part)
9258 (scm_magnitude, scm_angle, scm_abs, scm_quotient, scm_remainder)
9259 (scm_modulo, scm_gcd, scm_lcm): Added (future docstring) comments.
9260
9261 2001-02-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
9262
9263 * __scm.h (SCM_ASSERT_TYPE): Add missing macro parameter.
9264 (Obviously nobody compiles with SCM_RECKLESS defined...)
9265
9266 * validate.h (SCM_ASSERT_RANGE): Use the argument number.
9267
9268 2001-02-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
9269
9270 * ports.c, ports.h (scm_c_read, scm_c_write): New functions.
9271
9272 * ports.h (SCM_READ_BUFFER_EMPTY_P): New macro.
9273
9274 2001-02-24 Neil Jerram <neil@ossau.uklinux.net>
9275
9276 * numbers.c (scm_two_doubles, scm_sys_expt, scm_sys_atan2,
9277 scm_make_polar): Rename arguments `z1' and `z2' to `x' and `y',
9278 since use of `z' suggests that the arguments may be complex.
9279
9280 * goops.c (scm_make), numbers.c (scm_sys_expt): Fix docstring
9281 typos.
9282
9283 2001-02-23 Neil Jerram <neil@ossau.uklinux.net>
9284
9285 * dump.c (scm_binary_write, scm_binary_read), eval.c
9286 (scm_primitive_eval), guardians.c (scm_guardian_destroyed_p,
9287 scm_guardian_greedy_p, scm_make_guardian), fports.c
9288 (scm_file_port_p): Minor docstring fixes.
9289
9290 2001-02-22 Marius Vollmer <mvo@zagadka.ping.de>
9291
9292 * load.c (load): Use scm_primitive_eval_x instead of scm_i_eval_x.
9293
9294 * goops.c (scm_add_method, DEFVAR): Use scm_eval instead of
9295 scm_i_eval.
9296 (make_class_from_template): Do not bother to set the current
9297 module around the call to DEFVAR, scm_eval takes care of that.
9298 (scm_init_goops): Make scm_module_goops and
9299 scm_goops_lookup_closure permanent objects.
9300
9301 * eval.c (scm_ceval, scm_deval): When evaluating expressions on
9302 top level, create a fresh top-level environment for each
9303 expression instead of mutating the exisint frame. This is
9304 important when that frame is closed over.
9305
9306 * numbers.c (s_scm_logior) [SCM_DIGSTOOBIG]: Also use
9307 SCM_DIGSPERLONG instead of DIGSPERLONG.
9308
9309 2001-02-21 Marius Vollmer <mvo@zagadka.ping.de>
9310
9311 * eval.c (scm_ceval, scm_deval): Check for wrong number of args
9312 before applying arrow procedure in `cond' and before applying
9313 receiver procedure in call-with-current-continuation.
9314 (scm_i_eval): Do not invoke scm_copy_tree in argument in SCM_XEVAL
9315 macro. The argument is expanded more than one time.
9316
9317 * numbers.c (scm_logior) [SCM_DIGSTOOBIG]: Correctly use
9318 SCM_BIGDIG instead of BIGDIG. Thanks to Steven G. Johnson!
9319
9320 2001-02-20 Marius Vollmer <mvo@zagadka.ping.de>
9321
9322 * guile-doc-snarf.in, guile-func-name-check.in: Added copyright
9323 notice and license.
9324
9325 2001-02-17 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
9326
9327 * variable.c (scm_make_variable, scm_make_undefined_variable)
9328 (scm_variable_ref, scm_variable_set_x, scm_builtin_variable)
9329 (scm_variable_bound_p), values.c (scm_values)
9330 (scm_call_with_values), unif.c (scm_bit_count)
9331 (scm_bit_set_star_x), symbols.c (scm_gentemp)
9332 (scm_gensym), strings.c (scm_string_p, scm_make_string)
9333 (scm_read_only_string_p, scm_string_length, scm_string_ref)
9334 (scm_string_set_x, scm_substring, scm_string_append), stime.c
9335 (scm_strptime, scm_mktime), random.c (scm_seed_to_random_state)
9336 (scm_copy_random_state, scm_random), print.c (scm_newline)
9337 (scm_write_char, scm_simple_format), debug-malloc.c
9338 (scm_malloc_stats), environments.c (scm_environment_p)
9339 (scm_environment_bound_p, scm_environment_ref)
9340 (scm_environment_fold, scm_environment_define)
9341 (scm_environment_undefine, scm_environment_set_x)
9342 (scm_environment_cell, scm_environment_observe)
9343 (scm_environment_observe_weak, scm_environment_unobserve)
9344 (scm_make_eval_environment, scm_eval_environment_p)
9345 (scm_eval_environment_set_local_x, scm_eval_environment_local)
9346 (scm_eval_environment_imported)
9347 (scm_eval_environment_set_imported_x, scm_make_import_environment)
9348 (scm_import_environment_p, scm_import_environment_imports)
9349 (scm_import_environment_set_imports_x, scm_make_export_environment)
9350 (scm_export_environment_p, scm_export_environment_private)
9351 (scm_export_environment_set_private_x)
9352 (scm_export_environment_signature)
9353 (scm_export_environment_set_signature_x, scm_leaf_environment_p):
9354 Added texinfo markup.
9355
9356 * ports.c (scm_drain_input): Lowercased argument to @var.
9357 (scm_current_input_port, scm_current_output_port): Filled in
9358 missing explanation.
9359 (scm_current_load_port, scm_set_current_output_port)
9360 (scm_set_current_error_port, scm_port_line, scm_set_port_line_x):
9361 Added texinfo markup.
9362
9363 * arbiters.c (scm_make_arbiter, scm_try_arbiter)
9364 (scm_release_arbiter): Added texinfo markup to docstrings.
9365 Changed `Returns' to `Return'.
9366 (arbiter_print): Changed SCM_CDR to SCM_SMOB_DATA.
9367
9368 2001-02-16 Neil Jerram <neil@ossau.uklinux.net>
9369
9370 * guile-snarf.awk.in: Quote any `@'s that occur in Scheme names,
9371 by doubling them to `@@'.
9372
9373 2001-02-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
9374
9375 * numbers.c (scm_lognot), random.c (scm_random,
9376 scm_random_normal, scm_random_solid_sphere_x,
9377 scm_random_hollow_sphere_x, scm_random_normal_vector_x,
9378 scm_random_exp), dynwind.c
9379 (scm_dynamic_wind): Removed unnecessary "" from docstrings.
9380
9381 * goops.c (scm_sys_initialize_object, scm_instance_p,
9382 scm_class_name, scm_class_precedence_list, scm_class_slots,
9383 scm_class_environment, scm_generic_function_name,
9384 scm_generic_function_methods, scm_method_generic_function,
9385 scm_method_specializers, scm_method_procedure, scm_make_unbound,
9386 scm_unbound_p, scm_assert_bound, scm_at_assert_bound_ref,
9387 scm_sys_fast_slot_ref, scm_sys_fast_slot_set_x, scm_slot_ref,
9388 scm_slot_set_x, _scm_slot_bound_p, scm_slots_exists_p,
9389 scm_sys_allocate_instance, scm_make, scm_pure_generic_p,
9390 scm_class_direct_supers, scm_class_direct_slots,
9391 scm_class_direct_subclasses, scm_class_direct_methods,
9392 scm_accessor_method_slot_definition, scm_sys_goops_loaded),
9393 debug.c (scm_with_traps, scm_memoized_p, scm_make_gloc,
9394 scm_gloc_p, scm_make_iloc, scm_iloc_p, scm_memcons,
9395 scm_mem_to_proc, scm_proc_to_mem, scm_unmemoize,
9396 scm_memoized_environment, scm_procedure_name,
9397 scm_procedure_source, scm_procedure_environment, scm_debug_hang),
9398 objects.c
9399 (scm_class_of, scm_entity_p, scm_operator_p,
9400 scm_set_object_procedure_x, scm_object_procedure,
9401 scm_make_class_object), hooks.c (scm_make_hook_with_name,
9402 scm_make_hook, scm_hook_p, scm_hook_empty_p, scm_add_hook_x,
9403 scm_remove_hook_x, scm_reset_hook_x, scm_run_hook,
9404 scm_hook_to_list), lang.c
9405 (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null, scm_nil_eq),
9406 numbers.c (scm_sys_expt, scm_sys_atan2), print.c
9407 (scm_print_options, scm_port_with_print_state,
9408 scm_get_print_state), procs.c (scm_make_cclo, scm_procedure_p,
9409 scm_closure_p, scm_thunk_p, scm_procedure_with_setter_p,
9410 scm_make_procedure_with_setter, scm_procedure), throw.c
9411 (scm_lazy_catch), modules.c (scm_standard_eval_closure), load.c
9412 (scm_parse_path, scm_search_path), stacks.c (scm_make_stack,
9413 scm_stack_ref, scm_stack_length, scm_frame_p,
9414 scm_last_stack_frame, scm_frame_number, scm_frame_source,
9415 scm_frame_procedure, scm_frame_arguments, scm_frame_previous,
9416 scm_frame_next, scm_frame_real_p, scm_frame_procedure_p,
9417 scm_frame_evaluating_args_p, scm_frame_overflow_p), filesys.c
9418 (scm_dirname, scm_basename), dynwind.c
9419 (scm_wind_chain), read.c (scm_read_options, scm_read,
9420 scm_read_hash_extend), gc.c
9421 (scm_unhash_name), eval.c (scm_eval_options_interface,
9422 scm_evaluator_traps, s_scm_nconc2last), backtrace.c
9423 (scm_display_error, scm_set_print_params_x,
9424 scm_display_application, scm_display_backtrace, scm_backtrace),
9425 async.c (scm_async, scm_system_async, scm_async_mark,
9426 scm_system_async_mark, scm_run_asyncs, scm_noop,
9427 scm_set_tick_rate, scm_set_switch_rate, scm_unmask_signals,
9428 scm_mask_signals): Added docstrings.
9429
9430 2001-02-15 Keisuke Nishida <kxn30@po.cwru.edu>
9431
9432 * dump.c (scm_undump): Use SCM_CARLOC/SCM_CDRLOC to obtain the
9433 address of car/cdr. (Thanks to Dirk Herrmann)
9434 Use scm_sizet to obtain the length of strings.
9435 (Thanks to Matthias Koeppe)
9436
9437 2001-02-15 Marius Vollmer <mvo@zagadka.ping.de>
9438
9439 * symbols.c (scm_mem2symbol): Put a empty statement after the
9440 next_symbol label. This is mandated by ANSI, appearantly.
9441
9442 2001-02-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9443
9444 * gc_os_dep.c: Do not include <linux/version.h>. It makes no
9445 sense to compile for a specific kernel version. Do not include
9446 <asm/signal.h> while defining __KERNEL__. This hack should no
9447 longer be needed and caused problems.
9448
9449 2001-02-13 Marius Vollmer <mvo@zagadka.ping.de>
9450
9451 * eval.c (scm_ceval, scm_deval): use `SIDEVAL' instead of
9452 SCM_CEVAL when evaluating subforms of `begin' forms. SCM_CEVAL
9453 can not deal with immediates.
9454
9455 2001-02-12 Keisuke Nishida <kxn30@po.cwru.edu>
9456
9457 * list.c (scm_list_copy): Validate the first argument.
9458
9459 2001-02-11 Marius Vollmer <mvo@zagadka.ping.de>
9460
9461 Fix evaluator so that top-level expressions are correctly
9462 evaluated with respect to the module system.
9463
9464 * modules.h. modules.c (scm_current_module_lookup_closure): New
9465 function.
9466
9467 * eval.h (scm_primitive_eval, scm_primitive_eval_x): New
9468 prototypes.
9469 (scm_i_eval, scm_i_eval_x, scm_eval, scm_eval_x): Changed argument
9470 names to better reflect their meaning.
9471
9472 * eval.c (scm_ceval, scm_deval): Recognize when `begin' is being
9473 evaluated at top-level and synronize lookup closure before
9474 executing every subform.
9475 (scm_primitve_eval_x, scm_primitive_eval): New functions.
9476 (scm_eval_x, scm_eval): Reimplement in terms of
9477 scm_primitive_eval_x and scm_primitive_eval, respectively.
9478
9479 2001-02-09 Marius Vollmer <mvo@zagadka.ping.de>
9480
9481 * macros.c (scm_macro_name, scm_macro_transformer): Use
9482 SCM_SMOB_DATA instead of SCM_CDR. Provided by Martin Grabmueller.
9483 Thanks!
9484
9485 2001-02-10 Keisuke Nishida <kxn30@po.cwru.edu>
9486
9487 * dump.c (scm_store_bytes): Store data size before data.
9488 (scm_restore_bytes): Restore data size. Takes a pointer to size.
9489 * dump.h (scm_restore_bytes): Updated.
9490
9491 2001-02-09 Keisuke Nishida <kxn30@po.cwru.edu>
9492
9493 * dump.c: Use double cells for update schedule.
9494
9495 2001-02-08 Keisuke Nishida <kxn30@po.cwru.edu>
9496
9497 * ports.c (scm_unread_char): Take an optional argument.
9498
9499 2001-02-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9500
9501 * modules.h (scm_selected_module, scm_current_module): Renamed
9502 scm_selected_module to scm_current_module to synchronize Scheme
9503 and C names.
9504 (scm_select_module, scm_set_current_module): Likewise. Changed
9505 all uses.
9506
9507 * ports.c (scm_port_for_each): Make a snapshot of the port table
9508 before iterating over it. The table might change while the user
9509 code is running. With the snapshot, the user can depend on the
9510 fact that each port that existed at the start of the iteration is
9511 encountered exactly once. (ice-9 popen) depends on this.
9512
9513 2001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
9514
9515 * strings.h (SCM_STRING_MAX_LENGTH): New macro.
9516
9517 * strings.c (scm_makstr, scm_take_str, scm_make_string): Added
9518 range checking for the size parameter. Thanks to Martin
9519 Grabmueller for the hint.
9520
9521 (scm_makstr): Reordered string initialization to make interrupt
9522 deferring unnecessary.
9523
9524 * vectors.c (scm_make_vector): Fixed range checking.
9525
9526 2001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
9527
9528 * vectors.h (SCM_VECTOR_MAX_LENGTH): New macro.
9529
9530 * vectors.c (scm_make_vector, scm_c_make_vector): Improved the
9531 checking of the size parameter for type correctness and valid
9532 range. Thanks to Rob Browning for reporting the problem. Instead
9533 of deferring interrupts, scm_remember_upto_here_1 is used.
9534
9535 2001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
9536
9537 * dump.c (scm_store_cell_object, scm_restore_cell_object): Removed.
9538 (scm_dump_cell_update): Removed.
9539 (scm_dump_update): Renamed from scm_dump_object_update.
9540 (scm_restore_string, scm_restore_bytes, scm_restore_word): Takes
9541 a pointer instead of returning a value.
9542 * keywords.c (keyword_undump): Updated.
9543
9544 2001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
9545
9546 * dump.c, dump.h: Modified a lot.
9547 (SCM_DUMP_COOKIE): Version 0.1
9548 (scm_dump_mark): Removed.
9549 (scm_restore_cell_object, scm_store_cell_object): New functions.
9550
9551 * smob.h (scm_smob_descriptor): Removed slots: dump_mark,
9552 dump_dealloc, dump_store, undump_alloc, undump_restore, undump_init.
9553 New slots: dump, undump.
9554 * smob.c (scm_make_smob_type, scm_set_smob_dump, scm_set_smob_undump):
9555 Updated.
9556
9557 * keywords.c (keyword_dump): Renamed from keyword_dealloc.
9558 (keyword_undump): Renamed from keyword_alloc.
9559 (scm_init_keywords): Set keyword_dump and keyword_undump.
9560
9561 2001-02-03 Michael Livshin <mlivshin@bigfoot.com>
9562
9563 * gc.c (DOUBLECELL_ALIGNED_P): new macro, a better-named analog of
9564 the deprecated SCM_DOUBLE_CELLP.
9565
9566 * tags.h (SCM_DOUBLE_CELLP): deprecated.
9567
9568 2001-02-02 Keisuke Nishida <kxn30@po.cwru.edu>
9569
9570 * dump.c, dump.h: New files.
9571 * Makefile.am: Added dump.c, dump.h, dump.x, dump.doc.
9572 * init.c: #include "libguile/dump.h".
9573 (scm_init_guile_1): Call scm_init_dump.
9574 * smob.h (scm_smob_descriptor): New slots: dump_mark,
9575 dump_dealloc, dump_store, undump_alloc, undump_restore,
9576 undump_init.
9577 * smob.c (scm_make_smob_type): Init the new slots.
9578 (scm_set_smob_dump, scm_set_smob_undump): New functions.
9579 * smob.h (scm_set_smob_dump, scm_set_smob_undump): Declared.
9580
9581 * keywords.c: #include "libguile/dump.h".
9582 (keyword_dealloc, keyword_alloc): New functions.
9583 (scm_init_keywords): Set smob_dump and smob_undump.
9584
9585 2001-02-01 Keisuke Nishida <kxn30@po.cwru.edu>
9586
9587 * vectors.c (scm_c_make_vector): New function.
9588 * vectors.h (scm_c_make_vector): Declared.
9589 * eval.c (scm_copy_tree), filesys.c (scm_stat2scm), fluids.c
9590 (scm_make_initial_fluids, grow_fluids), gc.c (scm_init_storage),
9591 gh_data.c (gh_ints2scm, gh_doubles2scm): goops.c
9592 (scm_make_method_cache, scm_i_vector2list,
9593 scm_compute_applicable_methods, scm_sys_method_more_specific_p),
9594 init.c (start_stack), net_db.c (scm_gethost, scm_getnet,
9595 scm_getproto, scm_return_entry), posix.c (scm_getgroups,
9596 scm_getpwuid, scm_getgrgid, scm_uname), print.c (make_print_state,
9597 grow_ref_stack), regex-posix.c (scm_regexp_exec), scmsigs.c
9598 (scm_init_scmsigs), socket.c (scm_addr_vector, scm_addr_vector),
9599 stime.c (scm_times, filltime), unif.c (scm_make_uve), vectors.c
9600 (scm_vector, scm_make_vector): Use scm_c_make_vector.
9601
9602 * hashtab.c (scm_c_make_hash_table): New function.
9603 * hashtab.h (scm_c_make_hash_table): Declared.
9604 * environments.c (scm_make_leaf_environment,
9605 scm_make_eval_environment), gc.c (scm_init_storage),
9606 keywords.c (scm_init_keywords), symbols.c (scm_builtin_bindings):
9607 Use scm_c_make_hash_table.
9608
9609 2001-01-31 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
9610
9611 * unif.c (rapr1): Don't apply scm_uniform_vector_length on arrays.
9612
9613 2001-01-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
9614
9615 * struct.c (scm_make_vtable_vtable): Removed unnecessary "" from
9616 end of docstring.
9617
9618 * struct.c (scm_struct_set_x, scm_struct_vtable_tag,
9619 scm_struct_vtable_name, scm_set_struct_vtable_name_x), weaks.c
9620 (scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table,
9621 scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
9622 srcprop.c (scm_source_properties, scm_set_source_properties_x,
9623 scm_source_property, scm_set_source_property_x), sort.c
9624 (scm_sort_list_x, scm_restricted_vector_sort_x, scm_sorted_p,
9625 scm_merge, scm_merge_x, scm_sort_x, scm_sort, scm_stable_sort_x,
9626 scm_stable_sort, scm_sort_list_x, scm_sort_list): Added
9627 docstrings.
9628
9629 2001-01-29 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
9630
9631 * eval.c (SCM_APPLY): Check that primitives which take 1 arg
9632 really get that arg.
9633
9634 2001-01-26 Keisuke Nishida <kxn30@po.cwru.edu>
9635
9636 * goops.c (s_scm_get_keyword): Bug fix.
9637
9638 2001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
9639
9640 The following patch was sent by Martin Grabmueller. It makes sure
9641 that in case of parameter errors the correct function name is
9642 shown, and that parameter types are only checked once.
9643
9644 * strop.c (string_copy, string_upcase_x, string_downcase_x,
9645 string_capitalize_x): New functions. Each one performs the core
9646 functionality of the corresponding scm_* function.
9647
9648 (scm_string_copy, scm_string_upcase_x, scm_string_upcase,
9649 scm_string_downcase_x, scm_string_downcase,
9650 scm_string_capitalize_x, scm_string_capitalize): Reduced to
9651 parameter checking wrappers of the above functions.
9652
9653 2001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
9654
9655 * continuations.c, dynl.c, keywords.c, load.c: Include
9656 strings.h. Thanks to Bill Schottstaedt for the bug report.
9657
9658 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
9659
9660 * backtrace.c (display_header): Make sure that line and column
9661 information is shown independent of whether the port the code was
9662 read from had an associated filename. Thanks to Martin
9663 Grabmueller for providing this patch.
9664
9665 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
9666
9667 * fports.[ch] (scm_file_port_p): New primitive.
9668
9669 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
9670
9671 * tags.h (scm_tc16_fport, scm_tc16_strport, scm_tc16_sfport):
9672 These are now defined in fports.c, strports.c and vports.c.
9673
9674 * fports.[ch] (scm_tc16_fport), strports.c (scm_tc16_strport),
9675 vports.c (scm_tc16_sfport): Made variables (were macros defined in
9676 tags.h).
9677
9678 fports.c (scm_make_fptob), strports.c (scm_make_stptob), vports.c
9679 (scm_make_sfptob): Made static. These return a type code now.
9680
9681 fports.c (scm_init_fports), strports.c (scm_init_strports),
9682 vports.c (scm_init_vports): Create the corresponding port types.
9683
9684 * fports.h (SCM_FPORTP, SCM_OPFPORTP, SCM_OPINFPORTP,
9685 SCM_OPOUTFPORTP): Redefined in terms of scm_tc16_fport.
9686
9687 * init.c (scm_init_guile_1): Make sure strports are initialized
9688 before gdbint.
9689
9690 * ports.[ch] (scm_make_port_type): Changed the return type to
9691 scm_bits_t.
9692
9693 * ports.c (scm_ports_prehistory): Don't create any port types
9694 here.
9695
9696 * posix.c (scm_ttyname): Use SCM_FPORTP instead of comparing
9697 against scm_tc16_fport directly.
9698
9699 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
9700
9701 * srcprop.c (scm_set_source_property_x): Fix to handle
9702 (set-source-property! <obj> 'copy <datum>) correctly.
9703
9704 2001-01-24 Gary Houston <ghouston@arglist.com>
9705
9706 * filesys.c (scm_link): docstring fix.
9707 * fports.h (scm_setfileno): obsolete declaration removed.
9708 * posix.c: bogus popen declaration removed.
9709
9710 * rdelim.c: new file, split from ioext.c.
9711 * rdelim.h: new file, split from ioext.h
9712 * Makefile.am: add rdelim.c and related files.
9713 * init.c: call scm_init_rdelim. include rdelim.h.
9714
9715 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
9716
9717 This patch was sent by Martin Grabmueller and makes sure that
9718 parameter errors are reported correctly by the lexicographic
9719 ordering predicates.
9720
9721 * strorder.c (string_less_p, string_ci_less_p): New functions.
9722
9723 (scm_string_less_p, scm_string_ci_less_p): Extracted the core
9724 functionality into string_less_p, string_ci_less_p respectively.
9725 The remaining code is just a wrapper to do the parameter
9726 checking.
9727
9728 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p): Check the
9729 parameters and call string_less_p instead of scm_string_less_p.
9730
9731 (scm_string_ci_leq_p, scm_string_ci_gr_p, scm_string_ci_geq_p):
9732 Check the parameters and call string_less_ci_p instead of
9733 scm_string_ci_less_p.
9734
9735 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
9736
9737 This patch modifies scm_display_error to perform parameter
9738 checking. Thanks to Neil Jerram for the bug report.
9739
9740 * backtrace.[ch] (scm_i_display_error): New function.
9741
9742 * backtrace.c (scm_display_error): Added parameter check and
9743 extracted the core functionality into function
9744 scm_i_display_error.
9745
9746 * throw.c (handler_message): Call scm_i_display_error to display
9747 the error message.
9748
9749 2001-01-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
9750
9751 * eval.c (SCM_APPLY): Added # args check for application of
9752 procedures with arity 3. (Thanks to Anders Holst.)
9753
9754 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
9755
9756 * filesys.h (SCM_DIR_FLAG_OPEN, SCM_DIR_OPEN_P): Added.
9757
9758 (SCM_OPDIRP): Deprecated.
9759
9760 * filesys.c (scm_opendir): Use SCM_DIR_FLAG_OPEN instead of
9761 SCM_OPN.
9762
9763 (scm_readdir, scm_rewinddir): Don't use SCM_VALIDATE_OPDIR.
9764 Instead, give an explicit error message in case the directory is
9765 closed.
9766
9767 (scm_closedir, scm_dir_print): Rewritten to use SCM_DIR_OPEN_P
9768 instead of SCM_OPENP and SCM_CLOSEDP.
9769
9770 * validate.h (SCM_VALIDATE_OPDIR): Deprecated.
9771
9772 2001-01-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
9773
9774 * eval.c (inner_eval, scm_eval): Move all real functionality into
9775 inner_eval. Avoid to copy the expression twice by inlining some
9776 code from scm_i_eval.
9777
9778 2001-01-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
9779
9780 * eval.c (scm_m_case): The 'else' clause of a 'case' statement
9781 now has to be the last clause, as required by R5RS. Thanks to
9782 Martin Grabmueller for the patch.
9783
9784 2001-01-18 Gary Houston <ghouston@arglist.com>
9785
9786 * ioext.c: further simplify scm_read_string_x_partial by defining
9787 a macro SCM_EBLOCK.
9788
9789 2001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
9790
9791 * gh_data.c (gh_ints2scm): Simplified using SCM_FIXABLE.
9792
9793 2001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
9794
9795 * __scm.h: Added comment about architecture and compiler
9796 properties that are required by guile.
9797
9798 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
9799 SCM_MOST_NEGATIVE_FIXNUM): Moved to numbers.h.
9800
9801 (SCM_CHAR_BIT, SCM_LONG_BIT): Moved here from numbers.h.
9802
9803 * numbers.h (SCM_CHAR_BIT, SCM_LONG_BIT): Moved to __scm.h.
9804
9805 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
9806 SCM_MOST_NEGATIVE_FIXNUM): Moved here from __scm.h.
9807
9808 2001-01-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
9809
9810 * __scm.h (SCM_FIXNUM_BIT): Added. The name is chosen in analogy
9811 to the names in limits.h.
9812
9813 * numbers.c (abs_most_negative_fixnum): Added.
9814
9815 (scm_quotient, scm_remainder): Fixed the fixnum-min / (abs
9816 fixnum-min) special case.
9817
9818 (scm_big_and): Fix for negative first parameter.
9819
9820 (scm_bit_extract): Fix for fixnum paramters.
9821 Thanks to Rob Browning for the bug report.
9822
9823 (scm_init_numbers): Initialize abs_most_negative_fixnum.
9824
9825 2001-01-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
9826
9827 * symbols.c (scm_symbol_bound_p): Fixed comment.
9828 Thanks to Chris Cramer.
9829
9830 2001-01-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
9831
9832 * smob.[ch] (scm_make_smob_type): Return type is scm_bits_t now.
9833 Thanks to Bill Schottstaedt.
9834
9835 2001-01-11 Michael Livshin <mlivshin@bigfoot.com>
9836
9837 from Matthias Köppe:
9838
9839 * objects.h (SCM_SET_ENTITY_SETTER): new macro. SCM_ENTITY_SETTER
9840 casts its result, so doesn't yield an lvalue per ANSI C.
9841
9842 * goops.c (s_scm_sys_set_object_setter_x): use
9843 SCM_SET_ENTITY_SETTER.
9844 (clear_method_cache): use SCM_SET_ENTITY_PROCEDURE.
9845
9846 * gc.h (SCM_GC_SET_CARD_BVEC): new macro. SCM_GC_CARD_BVEC casts
9847 its result, so doesn't yield an lvalue per ANSI C.
9848 (SCM_GC_SET_CARD_FLAGS): ditto for SCM_GC_GET_CARD_FLAGS.
9849 (SCM_GC_CLR_CARD_FLAGS): redefined in terms of
9850 SCM_GC_SET_CARD_FLAGS.
9851 (SCM_GC_SET_CARD_FLAG, SCM_GC_CLR_CARD_FLAGS): ditto.
9852
9853 * gc.c (INIT_CARD): use the explicit setter macro to set the bvec.
9854
9855 2001-01-08 Gary Houston <ghouston@arglist.com>
9856
9857 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): new macro.
9858 * ioext.c (scm_read_string_x_partial, scm_read_delimited_x),
9859 socket.c (scm_recvfrom): use the new macro, plus minor docstring
9860 changes.
9861 * ioext.c (scm_read_string_x_partial): don't crash if -1 is supplied
9862 for fdes. if current input port is used, check that it's a file
9863 port.
9864
9865 2001-01-06 Gary Houston <ghouston@arglist.com>
9866
9867 * ioext.c (scm_read_string_x_partial): new procedure, implements
9868 read-string!/partial.
9869 * ports.c (scm_take_from_input_buffers): new procedure used by
9870 scm_read_string_x_partial.
9871 (scm_drain_input): use scm_take_from_input_buffers.
9872
9873 2001-01-06 Marius Vollmer <mvo@zagadka.ping.de>
9874
9875 * validate.h (SCM_VALIDATE_NUMBER): New.
9876
9877 2001-01-03 Michael Livshin <mlivshin@bigfoot.com>
9878
9879 * guardians.c (F_GREEDY, F_LISTED, F_DESTROYED, GREEDY_P,
9880 SET_GREEDY, LISTED_P, SET_LISTED, CLR_LISTED, DESTROYED_P,
9881 SET_DESTROYED): new defines/macros.
9882 (GUARDIAN_LIVE, GUARDIAN_ZOMBIES, GUARDIAN_NEXT): deleted.
9883 (add_to_live_list): takes a `guardian_t *' now, not SCM.
9884 (guardian_print): print more info.
9885 (guardian_apply): check if the guardian is destroyed, and throw an
9886 error if so. take one more optional argument `throw_p'.
9887 (scm_guard): depending on the value of `throw_p', return a boolean
9888 result.
9889 (scm_get_one_zombie): remove redundant property test.
9890 (guardian_t): represent the various (currently 3, I hope nothing
9891 more gets added) boolean fields as bit flags.
9892 (scm_guardian_destroyed_p, scm_guardian_greedy_p): new predicates.
9893 (scm_destroy_guardian_x): new procedure.
9894
9895 * guardians.h: added prototypes for `scm_guardian_greedy_p' and
9896 `scm_guardian_destroyed_p'. changed prototype for `scm_guard'.
9897
9898 2001-01-01 Gary Houston <ghouston@arglist.com>
9899
9900 * fports.c (fport_write): bugfix: handle short writes for
9901 unbuffered ports too. optimize the buffered case by minimizing
9902 the number of write/flush calls.
9903 (write_all): new helper procedure.
9904
9905 The ChangeLog continues in the file: "ChangeLog-2000"