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