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