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