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