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