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