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