*** empty log message ***
[bpt/guile.git] / libguile / ChangeLog
1 2004-11-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2
3 * read.c (scm_lreadr): Bugfix: include the last bit in the
4 bit vector.
5
6 2004-10-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7
8 * unif.h, unif.c (scm_array_creator): New.
9 (scm_i_get_old_prototype): New.
10 (scm_array_prototype): use it to return old-style prototype, never
11 return creators.
12 (scm_make_uve): Use scm_call_1 instead of scm_call_2 with a second
13 arg of SCM_UNDEFINED. The latter is wrong.
14
15 * unif.h, unif.c (scm_make_u1vector): New, but only temporary.
16 (make_uve): Removed.
17 (scm_i_proc_make_vector, scm_i_proc_make_string,
18 scm_i_proc_make_u1vector): New.
19 (scm_init_unif): Initialize them.
20 (scm_i_convert_old_prototype): New.
21 (scm_make_uve): Use it to get the creator procedure. Removed all
22 old code that created old-style uniform vectors.
23 (scm_array_p): Handle generic vectors.
24 (scm_dimensions_to_uniform_array): Do not fill new array with
25 prototype when that is a procedure.
26 (scm_list_to_uniform_array): Also accept a list of lower bounds as
27 the NDIM argument.
28 (scm_i_print_array): Print rank for shared or non-zero-origin
29 vectors.
30 (tag_proto_table, scm_i_tag_to_prototype, scm_i_read_array): New.
31 (scm_raprin1): Do not call scm_i_array_print for enclosed arrays,
32 which I do not understand yet.
33 (scm_array_prototype): Explicitely handle generic vectors.
34
35 * numbers.c, number.h (scm_i_print_complex, icmplx2str): New.
36 (iflo2str): Use icmplx2str for complex numbers.
37
38 * srfi-4.c, srfi-4.h (scm_i_read_homogenous_vector,
39 scm_i_uniform_vector_prototype): Removed.
40 (scm_i_uniform_vector_creator): New.
41 (SCM_UVEC_C32, scm_c32vector, scm_make_c32vector, etc,
42 SCM_UVEC_C64, scm_c64vector, scm_make_c64vector, etc): New.
43 Updated all tables and generic functions to support them.
44 (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector, etc): New.
45 (scm_init_srfi_4): Initialize them.
46
47 * srfi-4.i.c (scm_take_u8vector, etc): use uvec_sizes instead of
48 sizeof(CTYPE) as explained in the comment.
49
50 * read.c (scm_lreadr): Call scm_i_read_array for all characters
51 followinf '#' that can start an array. Explicitely disambiguate
52 'i' and 'e' between introducing numbers and uniform vectors. Do
53 not call scm_i_read_homogenous_vector, since that is also handled
54 by scm_i_read_array now.
55
56 2004-10-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
57
58 First cut at integrating uniform vectors from srfi-4 with the rest
59 of Guile. This change replaces scm_tc7_byvect with a s8 uniform
60 vector. The plan is to gradually replace one type after the other
61 until none is left and then to consider general cleanups and
62 optimizations.
63
64 * srfi-4.h, srfi-4.i.c (scm_u8vector_elements, etc): New.
65
66 * srfi-4.h, srfi-4.c (scm_uniform_vector_p,
67 scm_uniform_vector_ref, scm_uniform_vector_set_x,
68 scm_uniform_vector_to_list, scm_is_uniform_vector,
69 scm_c_uniform_vector_lengths, scm_c_uniform_vector_size,
70 scm_uniform_vector_elements, scm_uniform_vector_element_size,
71 scm_uniform_vector_release): New.
72 (scm_i_uniform_vector_prototype, scm_i_uniform_vector_tag): New.
73 (scm_uniform_element_size, scm_uniform_vector_length): Moved here
74 from unif.h, unif.c and extended to handle both the old and new
75 uniform vectors.
76
77 * tags.h (scm_tc7_byvect): Commented out.
78
79 * unif.h, unif.c (scm_uniform_vector_ref, scm_array_ref): Renamed
80 the former to the latter.
81 (scm_uniform_vector_length, scm_uniform_element_size): Moved to
82 srfi-4.h, srfi-4.c.
83 (scm_make_uve): Call scm_make_s8vector for #\nul prototype.
84 (scm_array_p, scm_array_rank, scm_array_dimensions,
85 scm_transpose_array, scm_enclose_array, scm_array_ref, scm_cvref,
86 scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
87 scm_array_to_list, scm_array_prototype): Handle srfi-4 uniform
88 vectors. Removed code for scm_tc7_byvect.
89 (scm_dimensions_to_uniform_array): Fill array with 0 when
90 prototype is #\nul.
91 (scm_i_print_array_dimension, scm_i_legacy_tag,
92 scm_i_print_array): New.
93 (scm_raprin1): Call scm_i_print_array for arrays. Removed code
94 for scm_tc7_byvect.
95
96 * ramap.c (scm_ra_matchp, scm_array_fill_int, racp,
97 scm_array_index_map_x, raeql_1, scm_array_equal_p): Handle srfi-4
98 uniform vectors. Removed code for scm_tc7_byvect
99
100 * print.c (iprin1): Removed code for scm_tc7_byvect.
101 * objects.c (scm_class_of): Likewise.
102 * gc-mark.c (scm_gc_mark_dependencies): Likewise.
103 * gc-card.c (scm_i_sweep_card): Likewise.
104 * evalext.c (scm_self_evaluating_p): Likewise.
105 * eq.c (scm_equal_p): Likewise.
106
107 * gh_data.c (gh_chars2byvect): Reimplemented with
108 scm_make_s8vector.
109 (gh_scm2chars): Handle s8vectors, removed code for scm_tc7_byvect.
110
111 * srfi-4.c (take_uvec): New.
112 (alloc_uvec): Use it.
113 * srfi-4.h, srfi-4.i.c (scm_take_u8vector, etc): New.
114
115 * random.c (vector_scale, vector_scale_x): Renamed former to the
116 latter, since it modifies its argument.
117 (vector_scale_x, vector_sum_squares, scm_random_normal_vector_x):
118 Do not use scm_universal_vector_length for non-uniform vectors.
119 Use scm_f64vector_elements to access innards of uniform vectors.
120
121 * convert.i.c: Convert srfi-4 style uniform vectors when
122 requested.
123 * convert.c (scm_c_scm2chars, scm_c_chars2scm,
124 scm_c_chars2byvect): Use a s8vector instead of a scm_tc7_byvect.
125
126 2004-10-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
127
128 * numbers.h, numbers.c (scm_i_print_double): New.
129
130 * srfi-4.c, srfi-4.h, srfi-4.i.c: New files, initially from
131 ../srfi/ but heavily modified.
132 * Makefile.am: Add them in all the right places.
133 * init.c (scm_init_guile_1): Call scm_init_srfi_4.
134 * read.c (scm_lreadr): Call scm_i_read_homogenous_vector for '#f',
135 '#u', and '#s'.
136
137 * read.h, read.c (scm_i_input_error): Renamed from scm_input_error
138 and made non-static. Changed all uses.
139
140 2004-10-22 Marius Vollmer <marius.vollmer@uni-dortmund.de>
141
142 * variable.c, threads.c, struct.c, stackchk.c, smob.c, root.c,
143 print.c, ports.c, mallocs.c, hooks.c, hashtab.c, fports.c,
144 guardians.c, filesys.c, coop-pthreads.c, continuations.c: Use
145 scm_uintprint to print unsigned integers, raw heap words, and
146 adresses, using a cast to scm_t_bits to turn pointers into
147 integers.
148
149 * unif.c: Include "libguile/print.h".
150
151 * numbers.h, numbers.c (SCM_T_INTBUFLEN): Increased to cover
152 scm_t_intmax values.
153 (scm_uint2str): New, for scm_t_uintmax.
154 (scm_iint2str): Argument type changed to scm_t_intmax,
155 reimplemented in terms of scm_uint2str.
156
157 * print.c, print.h (scm_uintprint): New, for printing
158 scm_t_uintmax values.
159 (scm_intprint): Argument type changed to scm_t_intmax.
160
161 * sort.c (quicksort, scm_merge, scm_merge_list_x,
162 scm_merge_list_step, scm_merge_vector_step): Inserted SCM_TICKs at
163 strategic places so that the loops can be interrupted.
164
165 * Makefile.am (INCLUDES): Use @LTDLINC@ instead of
166 "-I$(top_srcdir)/libguile-ltdl".
167 (libguile_la_LIBADD): Use @LIBLTDL@ instead of
168 "../libguile-ltdl/libguile-ltdl.a".
169
170 * guile.c, dynl.c: Switched to using libltdl directly. Replaced
171 all references to scm_lt_* with just lt_*. Include <ltdl.h>
172 instead of <libguile-ltdl.h>.
173
174 2004-10-20 Marius Vollmer <mvo@zagadka.de>
175
176 * sort.c (quicksort): Copy pivot out of the array while
177 constructing the partitions; it could get overwritten otherwise.
178 Because of the ultimate insertion sort, this bug did not cause
179 quicksort to fail, it just put all the burdon on the insertion
180 sort and was thus very slow. Thanks to Rolan Orre for reporting
181 the slowness!
182
183 2004-10-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
184
185 * numbers.c (scm_i_range_error): New.
186 * conv-integer.i.c, conv-uinteger.i.c: Use it instead of
187 scm_out_of_range.
188
189 * sort.c (scm_restricted_vector_sort_x): Validate startpos <=
190 endpos. State inclusiveness/exclusiveness of bounds in docstring.
191
192 * unif.c (scm_array_p): When no prototype is given, explicitely
193 test for allowable types, do not simply return true. Thanks to
194 Roland Orre for reporting this!
195
196 * private-gc.h (SCM_DEFAULT_MAX_SEGMENT_SIZE): Increase to 20 Mib.
197
198 * gc-segment.c (scm_i_get_new_heap_segment): Limit size of new
199 segment to scm_max_segment_size.
200
201 2004-10-08 Han-Wen Nienhuys <hanwen@xs4all.nl>
202
203 * inline.h (scm_double_cell): abort if GC running.
204 (scm_cell): idem.
205
206 2004-10-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
207
208 * error.c (scm_wrong_type_arg): Do not talk about "argument" for
209 pos == 0.
210
211 Keywords no longer store a 'dash symbol'. Instead, they store a
212 symbol with their real name.
213
214 * keywords.h, keywords.c, deprecated.h, deprecated.c
215 (SCM_KEYWORDP, SCM_KEYWORDSYM): Deprecated and implemented in
216 terms of scm_is_keyword and scm_keyword_dash_symbol.
217
218 * keywords.h, keywords.c, discouraged.h, discouraged.c
219 (scm_make_keyword_from_dash_symbol, scm_keyword_dash_symbol,
220 scm_c_make_keyword): Discouraged.
221
222 * keywords.h, keywords.c (scm_symbol_to_keyword,
223 scm_keyword_to_symbol): Implemented in C.
224 (scm_is_keyword, scm_from_locale_keyword,
225 scm_from_locale_keywordn): New.
226
227 * goops.c: Replaced SCM_KEYWORDP with scm_is_keyword.
228
229 * snarf.h (SCM_KEYWORD, SCM_GLOBAL_KEYWORD): Use
230 scm_from_locale_keyword instead of scm_c_make_keyword.
231
232 * keywords.c (scm_symbol_to_keyword): Use SCM_ASSERT_TYPE for a
233 better error message.
234
235 * deprecated.c: Include discouraged.h and keywords.h.
236
237 * read.c (scm_lreadr): Simply do (symbol->keyword (read)) after
238 reading '#:' or ':'. See NEWS for consequences.
239
240 2004-09-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
241
242 * read.c (scm_lreadr): Revert change from 2004-09-22: string
243 literals are now read-write again (until SCM_STRING_CHARS is
244 removed).
245
246 * strings.c (SCM_STRING_CHARS): Explicitely reject read-only
247 strings with an error message that blames SCM_STRING_CHARS.
248
249 * options.c (change_option_setting): Use scm_car instead of
250 explicit type check plus SCM_CAR.
251
252 * print.h, print.c (SCM_PRINT_HIGHLIGHT_PREFIX,
253 SCM_PRINT_HIGHLIGHT_SUFFIX): New printer options.
254 (scm_iprin1): Use them instead of the previoulsy hardcoded
255 strings.
256 (scm_init_print): Initialize them.
257
258 * backtrace.c (display_frame_expr): Do not remove control
259 characters from the final string. Print it directly using
260 scm_display.
261
262 * ramap.c (scm_array_equal_p): Include scm_tc7_svect in switch.
263 Thanks to Roland Orre!
264
265 2004-09-29 Kevin Ryde <user42@zip.com.au>
266
267 * regex-posix.c (scm_regexp_exec): Correction to last change, should
268 be whole original string in match struct, not offsetted substring.
269
270 2004-09-24 Han-Wen Nienhuys <hanwen@xs4all.nl>
271
272 * gc.c (scm_gc_unprotect_object): abort if called during GC.
273
274 2004-09-24 Marius Vollmer <mvo@zagadka.de>
275
276 * Makefile.am (EXTRA_DIST): Added gettext.h.
277
278 * smob.c, smob.h (scm_assert_smob_type): New.
279
280 * Makefile.am (guile_CFLAGS, guile_LDFLAGS, libguile_la_CFLAGS):
281 Include GUILE_CFLAGS.
282 (libguile_la_LIBADD): Removed THREAD_LIBS_LOCAL, which is unused
283 now.
284 (libpath.h): Put GUILE_CFLAGS in the build-info.
285
286 2004-09-23 Marius Vollmer <mvo@zagadka.de>
287
288 * print.h (scm_print_state): Added highlight_objects.
289 * print.c (make_print_state, scm_free_print_state): Initialize it
290 to SCM_EOL.
291 (scm_iprin1): Wrap output in '{...}' when object is contained in
292 highlight_objects.
293
294 * backtrace.h, backtrace.c (scm_display_backtrace_with_highlights,
295 scm_backtrace_with_highlights): New. Set highlight_objects of
296 printstate.
297
298 * error.c (scm_error_scm): Document new meaning of data/rest
299 argument for out-of-range and wrong-type-arg errors.
300 (scm_out_of_range, scm_out_of_range_pos, scm_wrong_type_arg,
301 scm_wrong_type_arg_msg): Pass bad_value in rest argument of
302 exception so that it gets highlighted in the backtrace.
303 Don't talk about "argument" when not giving a position.
304
305 * throw.c (handler_message): The rest argument is the fourth
306 argument, not everything after the third. Call
307 scm_display_backtrace_with_highlights, passing the rest argument
308 when appropriate.
309
310 2004-09-22 Marius Vollmer <mvo@zagadka.de>
311
312 From Jan Nieuwenhuizen <janneke@gnu.org> and Bruno Haible
313 <bruno@clisp.org>:
314
315 * i18n.c: Handle --disable-nls (thanks Bruno).
316
317 * posix.c (scm_init_posix): Add LC_PAPER, LC_NAME, LC_ADDRESS,
318 LC_TELEPHONE, LC_MEASUREMENT, LC_IDENTIFICATION.
319
320 * i18n.c (scm_i_to_lc_category): New name and export. Support all
321 LC categories.
322 * posix.c (scm_setlocale): Use it.
323
324 * i18n.h, i18n.c (scm_textdomain, scm_bindtextdomain,
325 scm_bind_textdomain_codeset): Make wrappers similar to C function
326 they wrap.
327
328 * i18n.h: New file.
329 * i18n.c: New file.
330 * gettext.h: New file, taken from GNU gettext.
331 * init.c: Include libguile/i18n.h.
332 (scm_init_guile_1): Add call to scm_init_i18n().
333 * Makefile.am (libguile_la_SOURCES): Add i18n.c.
334 (DOT_X_FILES): Add i18n.x.
335 (DOT_DOC_FILES): Add i18n.doc.
336 (libguile_la_LDFLAGS): Add @LTLIBINTL@.
337 (modinclude_HEADERS): Add i18n.h.
338
339 2004-09-22 Marius Vollmer <mvo@zagadka.de>
340
341 * gh_list.c: Replaced SCM_CAR, etc with scm_car, etc.
342
343 * discouraged.h, tags.h (SCM_CONSP, SCM_NCONSP): Moved to
344 discouraged.h. Replaced all uses with scm_is_pair.
345 (SCM_I_CONSP): New name for SCM_CONSP.
346
347 * pairs.h, pairs.c (scm_is_pair, scm_is_null, scm_car, scm_cdr,
348 scm_i_chase_pairs, SCM_I_A_PAT, SCM_I_D_PAT, etc, scm_caar,
349 scm_cadr, etc): New.
350 (SCM_NULLP, SCM_NNULLP): Moved to discouraged.h. Replaced all
351 uses with scm_is_null.
352
353 * eval.c (scm_eval, scm_apply, call_cxr_1): Use scm_i_chase_pairs
354 instead of explicit code.
355
356 2004-09-22 Marius Vollmer <mvo@zagadka.de>
357
358 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
359 Reworded logic a bit so that #f is returned immediately when s1 is
360 too short to contain s2.
361
362 * regex-posix.c (scm_regexp_exec): Convert string to
363 zero-terminated locale string before matching against it.
364
365 * strings.h, strings.c (scm_substring_read_only,
366 scm_c_substring_read_only, scm_i_substring_read_only): New.
367 (RO_STRING_TAG, IS_RO_STRING): New.
368 (scm_i_string_writable_chars): Bail on read-only strings.
369
370 * read.c (scm_lreadr): use scm_c_substring_read_only for string
371 literals, thus making them read-only as specified by R5RS.
372
373 2004-09-22 Marius Vollmer <mvo@zagadka.de>
374
375 * eq.c (scm_equal_p): Allow smobs with different flags to be equal
376 by testing for smobs before insisting on equal SCM_CELL_TYPES.
377
378 2004-09-21 Marius Vollmer <mvo@zagadka.de>
379
380 * numbers.h, numbers.c: Include <gmp.h> in numbers.h, not in
381 numbers.c.
382 (scm_to_mpz, scm_from_mpz): New.
383 Thanks to Andreas Vögele!
384
385 * read.c (skip_scsh_block_comment): Recognize "!#" everywhere, not
386 just on a line of its own.
387
388 * srfi-13.c (scm_string_any, scm_string_every,
389 scm_string_tabulate, string_upcase_x, string_down_case_x,
390 string_titlecase_x, string_reverse_x, scm_string_tokenize): Use
391 size_t instead of int for indices into strings. Make sure that no
392 over- or underflow occurs. Thanks to Andreas Vögele!
393 (scm_xsubstring, scm_string_xcopy_x): Use ints for 'extended'
394 indices, which can also be negative.
395
396 2004-09-20 Marius Vollmer <mvo@zagadka.de>
397
398 * gc-mark.c (SCM_MARK_BACKING_STORE): Removed, it was unused.
399
400 * threads.c (scm_threads_mark_stacks): Call
401 SCM_MARK_BACKING_STORE. Also, do not use stack_len local, it was
402 only used once.
403
404 2004-09-13 Jan Nieuwenhuizen <janneke@gnu.org>
405
406 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
407 Bugfix: when subtracting unsigned values, make sure that result
408 does not wrap.
409
410 2004-09-09 Kevin Ryde <user42@zip.com.au>
411
412 * filesys.c, stime.c (_POSIX_C_SOURCE): Use this only on hpux, it
413 causes too many problems elsewhere (glibc, freebsd, mingw). Reported
414 by Andreas Vögele.
415
416 2004-09-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
417
418 * Makefile.am (EXTRA_libguile_la_SOURCES): Removed "alloca.c".
419
420 * eq.c (real_eqv): Pretend that all NaNs are equal.
421
422 * numbers.c (scm_integer_expt): Do not accept inexact integers.
423
424 2004-09-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
425
426 * srfi-13.c (scm_string_trim_right, scm_string_xcopy_x): Correctly
427 use size_t for some locals instead of int.
428
429 * read.c (scm_flush_ws): Detect "#!"-style comments here.
430 (scm_lreadr): Abort on seeing "#!", which should no longer happen.
431 (skip_scsh_block_comment): Use scm_input_error instead of
432 scm_misc_error in case of EOF.
433
434 2004-09-07 Kevin Ryde <user42@zip.com.au>
435
436 * numbers.c (scm_integer_expt): Reject exponent +/-inf.
437 Bug report by Bill Schottstaedt.
438
439 * ports.c (scm_getc, scm_lfwrite): Recognise \a \b and \r for port
440 column.
441 * ports.h (SCM_ZEROCOL, SCM_DECCOL): New macros.
442
443 * posix.c (scm_access): Update docstring per manual.
444
445 * posix.c (scm_nice): Correction to error detection. Reported by
446 Matthias Koeppe.
447
448 * stime.c (scm_current_time, scm_gettimeofday, scm_strptime): Don't
449 throw error before unlocking mutex with SCM_ALLOW_INTS.
450
451 2004-09-06 Kevin Ryde <user42@zip.com.au>
452
453 * stime.h (SCM_TIME_UNITS_PER_SECOND): Use sysconf(_SC_CLK_TCK) when
454 available. This also gets around CLK_TCK being absent when
455 _GNU_SOURCE and _POSIX_C_SOURCE are defined in stime.c.
456
457 2004-09-03 Stefan Jahn <stefan@lkcc.org>
458
459 * threads.c (scm_threads_mark_stacks): Fixed local variable
460 definitions.
461
462 * strings.c (scm_i_substring_copy, scm_string_append): Fixed
463 local variable definitions.
464
465 * stime.c (_POSIX_C_SOURCE): Do not define this item on
466 MinGW32 because it conflicts with its pthread headers.
467 (scm_mktime): Consider the HAVE_STRUCT_TM_TM_ZONE define.
468 (scm_strftime): Using scm_from_locale_string() instead of
469 scm_makfrom0str().
470
471 * posix.c (scm_putenv): Fixed typo in the !HAVE_UNSETENV
472 part.
473
474 * numbers.c (scm_init_numbers): Removed check_sanity() call
475 inside GUILE_DEBUG. The function has been removed somewhen...
476
477 * filesys.c (_POSIX_C_SOURCE): Do not define this item on
478 MinGW32 because it conflicts with its pthread headers.
479
480 2004-08-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
481
482 * strings.c (SCM_STRINGP): Accept all strings.
483 (SCM_STRING_CHARS): Reject shared substrings here.
484
485 * script.c (scm_compile_shell_switches): Added 2003 and 2004 to
486 the Copyright years.
487
488 2004-08-27 Kevin Ryde <user42@zip.com.au>
489
490 * socket.c (scm_fill_sockaddr): Use HAVE_STRUCT_SOCKADDR_SIN_LEN and
491 HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN for sockaddr fields, SIN_LEN and
492 SIN_LEN6 are not defined on all systems. Reported by Michael Tuexen.
493
494 2004-08-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
495
496 * strings.h, strings.c (scm_i_make_symbol): Added FLAGS parameter.
497 * symbols.h, symbols.c (SCM_I_F_SYMBOL_UNINTERNED,
498 scm_i_symbol_is_interned, scm_i_mem2symbol,
499 scm_i_mem2uninternedsymbol): Use it to store uninternedness flag.
500
501 2004-08-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
502
503 * srfi-13.c: First cut at thread-safeness and proper use of
504 scm_i_string_chars et al. Copious scm_remember_upto_heres have
505 been inserted. Made sure that no internal string pointer is used
506 across a SCM_TICK or a possible GC.
507
508 * script.c (scm_compile_shell_switches): Use
509 scm_from_locale_string instead of scm_makfrom0str.
510
511 * srfi-13.c (scm_string_rindex): Export to Scheme, as it has
512 always been.
513
514 2004-08-25 Marius Vollmer <mvo@zagadka.de>
515
516 Moved SRFI-13 and SRFI-14 into the core, taking over the role of
517 strop.c.
518
519 * srfi-13.c, srfi-13.h, srfi-14.c, srfi-14.h: New files.
520 * strop.h, strop.c: Removed, they are now empty.
521 * Makefile.am: Updated for new and removed files.
522
523 * symbols.h, symbols.c (scm_string_ci_to_symbol): Moved here, next
524 to scm_string_to_symbol.
525
526 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
527 scm_char_whitespace_p, scm_upper_case_p, scm_lower_case_p,
528 scm_char_is_both_p): Use scm_char_set_contains_p with the proper
529 charset instead of libc functions.
530
531 * strorder.c (scm_string_equal_p, scm_string_ci_equal_p,
532 scm_string_less_p, scm_string_leq_p, scm_string_gr_p,
533 scm_string_geq_p, scm_string_ci_less_p, scm_string_ci_leq_p,
534 scm_string_ci_gr_p, scm_string_ci_geq_p): Use scm_string_eq, etc
535 instead of explicit code.
536
537 * deprecated.c, load.c, posix.c, unif.c, symbols.c: Include
538 "srfi-13.h" instead of "strop.h".
539
540 * init.c (scm_init_guile_1): Call scm_init_srfi_13 and
541 scm_init_srfi_14. Do not call scm_init_strop.
542
543 2004-08-24 Marius Vollmer <marius.vollmer@uni-dortmund.de>
544
545 * numbers.c (scm_inf_p): Synced docstring back from manual.
546
547 2004-08-22 Marius Vollmer <mvo@zagadka.de>
548
549 * strings.c (get_str_buf_start): New helper function.
550 (scm_i_substring, scm_i_substring_copy, scm_i_substring_shared,
551 scm_i_string_char, scm_i_string_writable_chars): Use it.
552 (scm_i_substring_copy): Make START argument optional for C
553 callers, for upcoming SRFI-13 integration.
554
555 2004-08-21 Marius Vollmer <mvo@zagadka.de>
556
557 From Richard Todd, Thanks!
558
559 * script.c (scm_compile_shell_switches): added '-L' switch to add
560 to the %load-path.
561
562 2004-08-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
563
564 * eval.c (unmemoize_exprs): When dropping internal body markers
565 from the output during unmemoization, also drop those that are not
566 immediately at the beginning of a body.
567
568 2004-08-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
569
570 * eval.c (scm_lookupcar1): Report "Variable used before given a
571 value" insetad of an "Unbound" one for variables that are found
572 but still contain SCM_UNDEFINED.
573
574 * posix.c (scm_mkstemp): Correction to the correction, mkstemp
575 expects a null-terminated string in the locale encoding, but
576 scm_i_string_writable_chars doesn't give that. Fixed by letting
577 mkstemp modify a locale version of the tmpl argument and copying
578 the result back into tmpl.
579
580 * strop.c (scm_substring_move_x): Store into str2, not str1.
581
582 2004-08-20 Kevin Ryde <user42@zip.com.au>
583
584 * posix.c (scm_mkstemp): Correction to new locale_string stuff, need
585 to modify the input string.
586
587 2004-08-19 Marius Vollmer <mvo@zagadka.de>
588
589 * deprecated.c (SCM_SYMBOL_CHARS): Cast away const in return.
590 (SCM_SYMBOL_LENGTH): It's scm_i_symbol_length, not
591 scm_c_symbol_length.
592
593 2004-08-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
594
595 New string implementation, with copy-on-write strings and
596 mutation-sharing substrings, and a new internal string API.
597 Symbols can now share memory with strings.
598
599 * tags.h (scm_tc7_stringbuf): New tag.
600
601 * strings.h, strings.c: (scm_i_string_chars, scm_i_string_length,
602 scm_i_string_writable_chars, scm_i_string_stop_writing): New, to
603 replace SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH. Updated all
604 uses.
605 (scm_i_make_string, scm_c_make_string): New, to replace
606 scm_allocate_string. Updated all uses.
607 (SCM_STRINGP, SCM_STRING_CHARS, SCM_STRING_UCHARS,
608 SCM_STRING_LENGTH): Deprecated.
609 (scm_allocate_string, scm_take_str, scm_take0str, scm_mem2string,
610 scm_str2string, scm_makfrom0str, scm_makfrom0str_opt):
611 Discouraged. Replaced all uses with scm_from_locale_string or
612 similar, as appropriate.
613 (scm_c_string_length, scm_c_string_ref, scm_c_string_set_x,
614 scm_c_substring, scm_c_substring_shared, scm_c_substring_copy,
615 scm_substring_shared, scm_substring_copy): New.
616
617 * symbols.c, symbols.h (SCM_SYMBOLP, SCM_SYMBOL_FUNC,
618 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS,
619 SCM_SYMBOL_HASH, SCM_SYMBOL_INTERNED_P, scm_mem2symbol,
620 scm_str2symbol, scm_mem2uninterned_symbol): Discouraged.
621 (SCM_SYMBOL_LENGTH, SCM_SYMBOL_CHARS, scm_c_symbol2str):
622 Deprecated.
623 (SCM_MAKE_SYMBOL_TAG, SCM_SET_SYMBOL_LENGTH, SCM_SET_SYMBOL_CHARS,
624 SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS): Removed.
625 (scm_is_symbol, scm_from_locale_symbol, scm_from_locale_symboln):
626 New, to replace scm_str2symbol and scm_mem2symbol, respectively.
627 Updated all uses.
628 (scm_gensym): Generate only the number suffix in the buffer, just
629 string-append the prefix.
630
631 * error.c (scm_memory_error): Do not try to throw, just abort.
632 Throwing will not work anyway.
633
634 * gh.h, gh-data.c (gh_set_substr): Made src const.
635
636 * ports.c (scm_i_mode_bits_n): New, for counted strings.
637 (scm_mode_bits): Use it.
638 (scm_c_port_for_each): Blocking GC does not seem to work, allocate
639 a vector normally and fill that instead of consing a list with a
640 blocked GC.
641
642 * read.c (scm_i_casei_streq): New, for counted strings.
643
644 * threads.c (gc_section_count): Removed, thread-sleeping can not
645 be nested.
646 (scm_i_thread_put_to_sleep): Call scm_i_leave_guile before locking
647 admin mutex so that we can be put to sleep by other threads while
648 blocking on that mutex. Lock all the heap mutex of all threads,
649 including ourselves.
650 (scm_i_thread_wake_up): Unlock all threads, including ourselves,
651 call scm_i_enter_guile.
652 (scm_thread_mark_stacks): Expect all threads to be suspended.
653
654 * gc.h, gc.c (scm_i_gc_admin_mutex): New, to protect
655 scm_gc_mallocated, for now.
656 (scm_init_storage): Initialize it.
657 * gc-malloc.c (descrease_mtrigger, increase_mtrigger): Use it.
658
659 * gc-mark.c (scm_gc_mark_dependencies): Call scm_i_string_mark,
660 scm_i_stringbuf_mark and scm_i_symbol_mark, as appropriate.
661 * gc-card.c (scm_i_sweep_card): Call scm_i_string_free,
662 scm_i_stringbuf_free and scm_i_symbol_free, as appropriate.
663
664 * strop.c (scm_string_copy): Use scm_c_substring to get a
665 copy-on-write string.
666
667 2004-08-18 Kevin Ryde <user42@zip.com.au>
668
669 * arbiters.c (FETCH_STORE): New macro.
670 (SCM_LOCK_VAL, SCM_UNLOCK_VAL): New constants.
671 (SCM_LOCK_ARB, SCM_UNLOCK_ARB): Remove, effectively absorbed into
672 scm_try_arbiter and scm_release_arbiter.
673 (scm_try_arbiter, scm_release_arbiter): Use FETCH_STORE to get xchg
674 for speed on i386, otherwise using mutex.
675
676 * eq.c (scm_equal_p): Remove real==fraction and fraction==real, they
677 must be #f according to R5RS. (equal? follows eqv?, and for eqv? an
678 exact and inexact is #f.)
679
680 * fports.c (fport_print): Use scm_ttyname instead of ttyname directly,
681 to get thread safety of scm_ttyname.
682
683 * ports.c (ttyname): Remove prototype, unused.
684
685 * socket.c (scm_init_socket): Add SOCK_SEQPACKET and SOCK_RDM.
686 Reported by Michael Tuexen.
687
688 2004-08-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
689
690 * load.c (scm_init_load_path): Do not pass NULL to
691 scm_to_locale_string, which would happen when GUILE_LOAD_PATH is
692 not set. Thanks to Bill Schottstaedt.
693
694 2004-08-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
695
696 * socket.c (scm_inet_aton, scm_inet_pton): Convert SCM strings to
697 locale strings instead of accessing their internals.
698 (scm_recv, scm_send, scm_recvfrom, scm_sendto): Use
699 SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH instead of
700 SCM_STRING_CHARS and SCM_STRING_LENGTH.
701
702 * simpos.c (scm_system): Convert SCM strings to locale strings
703 instead of accessing their internals.
704
705 * script.c (scm_compile_shell_switches): Convert version to locale
706 string before printing it.
707
708 * rdelim.c (scm_read_delimited_x): Avoid
709 SCM_VALIDATE_SUBSTRING_SPEC_COPY and use scm_from_size_t instead
710 of scm_from_long for the returned number of read characters.
711
712 * ioext.c (scm_fdopen): Use scm_i_fdes_to_port together with
713 scm_i_mode_bits to avoid accessing internals of SCM string from C.
714
715 * filesys.c (STRING_SYSCALL, STRING2_SYSCALL): New helper macros.
716 Use them instead of SCM_SYSCALL when one or two strings need to be
717 converted into locale strings.
718 (my_rename): New, gathers platform dependent code for renaming.
719 (scm_rename): Use it.
720 (scm_readlink, scm_copy_file): Convert SCM strings to locale
721 strings instead of accessing their internals.
722 (scm_basename, scm_dirname): Use SCM_I_STRING_CHARS and
723 SCM_I_STRING_LENGTH instead of SCM_STRING_CHARS and
724 SCM_STRING_LENGTH.
725
726 * extensions.c (load_extension): Convert lib and init to locale
727 strings instead of accessing the internals directly.
728 (scm_c_load_extension): Use scm_from_locale_string instead of
729 scm_makfrom0str.
730
731 * fports.h, fports.c (scm_i_fdes_to_port): New, like
732 scm_fdes_to_port, but take mode bits directly instead of as a C
733 string.
734 (scm_i_fdes_to_port): Implement using above.
735 (scm_open_file): Use scm_i_fdes_to_port together with
736 scm_i_mode_bits to avoid accessing internals of SCM string from C.
737 * vports.c (scm_make_soft_port): Use scm_i_fdes_to_port together
738 with scm_i_mode_bits to avoid accessing internals of SCM string
739 from C.
740
741 * ports.h (scm_i_mode_bits): New, same as scm_mode_bits but with a
742 SCM string as argument.
743
744 * ports.c (scm_i_void_port): New, like scm_void_port but take mode
745 bits directly instead of C string.
746 (scm_void_port): Implement using above.
747 (scm_sys_make_void_port): Use scm_i_void_port together with
748 scm_i_mode_bits to avoid accessing internals of SCM string.
749
750 * strings.h, strings.c (scm_i_get_substring_spec): New.
751
752 * socket.c, rw.c, deprecated.h, validate.h
753 (SCM_VALIDATE_STRING_COPY): Deprecated. Replaced all uses with
754 SCM_VALIDATE_STRING plus SCM_I_STRING_CHARS or
755 scm_to_locale_string, etc.
756 (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Deprecated. Replaced as
757 above, plus scm_i_get_substring_spec.
758
759 * regex-posix.c, read.c, random.c, ramap.c, print.c, numbers.c,
760 hash.c, gc.c, gc-card.c, convert.i.c, backtrace.c, strop.c,
761 strorder.c, strports.c, struct.c, symbols.c, unif.c, ports.c: Use
762 SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_STRING_LENGTH
763 instead of SCM_STRING_CHARS, SCM_STRING_UCHARS, and
764 SCM_STRING_LENGTH, respectively. Also, replaced scm_return_first
765 with more explicit scm_remember_upto_here_1, etc, or introduced
766 them in the first place.
767
768 * posix.c (WITH_STRING): New helper macro. Use it where one
769 locale string is needed for a short piece of code.
770 (STRING_SYSCALL): New helper macro. Use it instead of SCM_SYSCALL
771 when one locale string is needed.
772 (scm_mkstemp): Convert tmpl to a locale string.
773 (scm_putenv): Rewritten to use only C strings.
774 (scm_setlocale, scm_crpt): Convert argument strings to locale
775 strings.
776
777 2004-08-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
778
779 * load.c (scm_primitive_load_path): Do not check for absolute
780 filenames when scm_sys_search_load_path returns false, which will
781 return absolute filenames unchanged.
782
783 2004-08-11 Marius Vollmer <mvo@zagadka.de>
784
785 * gc.c, procprop.c (scm_init_storage, scm_stand_in_procs,
786 scm_stand_in_proc): Use a hastable for scm_stand_in_procs instead
787 of an alist. Thanks to Matthias Koeppe!
788
789 2004-08-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
790
791 * strings.h, deprecated.h (SCM_STRING_COERCE_0TERMINATION_X):
792 Moved from string.h to deprecated.h.
793
794 * deprecated.c, deprecated.h (SCM_CHARS, SCM_LENGTH): Removed.
795
796 * strings.h, strings.c (SCM_MAKE_STRING_TAG): Renamed to
797 SCM_I_MAKE_STRING_TAG, changed all uses.
798 (SCM_STRING_CHARS, SCM_STRING_UCHARS, SCM_STRING_LENGTH): Renamed
799 to SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_LENGTH
800 respectively. For a short time, the old names are still there as
801 aliases. Not all uses have been changed yet, but the ones in
802 strings.c have.
803 (SCM_STRING_MAX_LEN): Do not hardcode to 24 bits, compute from
804 SCM_T_BITS_MAX.
805 (scm_is_string, scm_from_locale_string, scm_from_locale_stringn,
806 scm_take_locale_string, scm_take_locale_stringn,
807 scm_to_locale_string, scm_to_locale_stringn,
808 scm_to_locale_stringbuf): New.
809 (scm_c_string2str, scm_c_substring2str): Deprecated by moving to
810 deprecated.[hc]. Implemented in terms of the new functions above.
811 (scm_take_str, scm_take0str, scm_mem2string, scm_str2string,
812 scm_makfrom0str): Reimplemented in terms of the new functions from
813 above. They will be discouraged shortly.
814 (scm_substring): Do not use scm_mem2string.
815 (scm_i_allocate_string_pointers, scm_i_free_string_pointers): New,
816 to replace similar code from posix.c, simpos.c, and dynl.c.
817 (scm_string_append): Use memcpy instead of explicit loop. Do not
818 use register keyword. Use plain 'char' instead of 'unsigned
819 char'.
820
821 * strports.c (scm_mkstrport): Use SCM_I_STRING_UCHARS instead of
822 SCM_STRING_UCHARS. Use SCM_I_STRINGP instead of SCM_STRINGP.
823
824 * strop.c (scm_i_index): Replaced SCM_STRINGP, SCM_STRING_CHARS,
825 and SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
826 SCM_I_STRING_LENGTH, respectively. Pass string object directly,
827 not as a pointer. Use scm_remember_upto_here_1 to protect it.
828
829 * read.c (scm_input_error): Use a SCM value for 'fn', not a C
830 string. This avoids a conversion round-trip.
831
832 * gh_data.c: Replaced SCM_STRINGP, SCM_STRING_CHARS, and
833 SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
834 SCM_I_STRING_LENGTH, respectively.
835 (gh_scm2newstr): Implement in terms of scm_to_locale_string.
836
837 * environments.c: Instead calling scm_puts on the SCM_STRING_CHARS
838 of a string, call scm_display on the string itself.
839
840 * dynwind.c, dynwind.h (scm_frame_free): New.
841
842 * stime.c, socket.c, simpos.c, procs.c, posix.c, ports.c,
843 net_db.c, fports.c, filesys.c, eval.c, deprecation.c, dynl.c:
844 Replaced uses of SCM_STRING_CHARS with proper uses of
845 scm_to_locale_string. Replaced SCM_STRINGP with scm_is_string.
846 Replaced scm_mem2string with scm_from_locale_string.
847
848 * simpos.c, posix.c (allocate_string_pointers, environ_list_to_c):
849 Removed, replaced all uses with scm_i_allocate_string_pointers.
850
851 * load.h, load.c (scm_internal_parse_path): Removed.
852 (scm_parse_path): Use scm_string_split to do the work.
853 (scm_init_load_path): Use scm_parse_path instead of
854 scm_internal_parse_path.
855 (scm_search_path): Rewritten string handling part of the code in
856 terms of scm_to_locale_stringbuf and so that it is thread safe.
857
858 * error.c (scm_error_scm): Throw directly instead of calling
859 scm_error, this avoids the back and forth conversion of SUBR and
860 MESSAGE and also plugs a memory leak.
861 (scm_error): Call scm_error_scm.
862
863 * backtrace.c: Replaced SCM_STRINGP with scm_is_string.
864 (display_header): Print FNAME when it is true, not
865 merely when it is a string.
866
867 * strings.h (SCM_SET_STRING_LENGTH, SCM_SET_STRING_CHARS): Removed
868 unceremoniously. They were unused by Guile itself, and external
869 use should stop immediately.
870
871
872 2004-08-10 Marius Vollmer <mvo@zagadka.de>
873
874 * numbers.h, number.c, deprecated.h, deprecated.c (scm_round,
875 scm_truncate): Renamed to scm_c_round and scm_c_truncate;
876 deprecated versions installed in deprecated.h and deprecated.c.
877 Changed all uses.
878
879 2004-08-06 Rob Browning <rlb@defaultvalue.org>
880
881 * net_db.c (scm_resolv_error): don't cause an exception while
882 trying to throw an exception -- call scm_misc_error with correct
883 arguments. The previous arguments needed a format escape that
884 wasn't in any of the format strings.
885
886 2004-08-06 Kevin Ryde <user42@zip.com.au>
887
888 * ramap.c (scm_array_fill_x): For byvect char fill, force signed char
889 so as not to depend on signedness of plain char. For byvect range
890 check, throw out-of-range rather than wrong-type-arg.
891
892 * unif.c (scm_uniform_vector_ref, scm_array_set_x): For byvect, force
893 signed byte range checks by using scm_to_schar and scm_from_schar,
894 don't want to depend on signedness of C char.
895
896 2004-08-05 Kevin Ryde <user42@zip.com.au>
897
898 * arbiters.c (scm_try_arbiter): Use scm_i_misc_mutex instead of
899 SCM_DEFER_INTS.
900 (scm_release_arbiter): Use scm_i_misc_mutex so return value can be
901 guaranteed if multiple threads compete to unlock.
902 Update docstrings per doc/ref/api-scheduling.texi.
903
904 * filesys.c (scm_copy_file): Use fstat on the input fd rather than
905 stat on the filename, to be certain a file rename can't mean we get
906 info on one filesystem object but open another. This fstat usage is
907 similar to Emacs copy-file.
908
909 * posix.c (scm_setgroups): Enhance docstring, per doc/ref/posix.texi.
910
911 * simpos.c (scm_system_star): Change scm_from_long to scm_from_int on
912 SIGINT and SIGQUIT, since those values are ints.
913
914 2004-08-03 Marius Vollmer <marius.vollmer@uni-dortmund.de>
915
916 * num2integral.i.c, num2float.i.c: Removed.
917 * Makefile.am (noinst_HEADERS): Updated.
918
919 * numbers.h. numbers.c (scm_make_ratio): Renamed to
920 scm_i_make_ratio and made static, replaced uses with scm_divide.
921 (scm_complex_p): New, export as "complex?" to Scheme.
922 (scm_number_p): Export as "number?" to Scheme.
923 (scm_is_complex, scm_is_number): New.
924 (scm_c_make_rectangular, scm_c_make_polar): New.
925 (scm_make_rectangular, scm_make_polar): Use above.
926 (scm_c_real_part, scm_c_imag_part, scm_c_magnitude, scm_c_angle):
927 New.
928 (scm_make_complex): Discouraged by moving to discouraged.h and
929 discouraged.c. Replaced all uses with scm_c_make_rectangular.
930
931 * discouraged.h, discouraged.c, numbers.c, numbers.h
932 (scm_is_rational): New.
933 (scm_i_short2big, scm_i_int2big, scm_i_uint2big, scm_i_size2big,
934 scm_i_ptrdiff2big, scm_i_long_long2big, scm_i_ulong_long2big):
935 Removed prototypes.
936 (scm_make_real, scm_num2dbl, scm_float2num, scm_double2num):
937 Discouraged by moving to discouraged.h and discouraged.c.
938 Replaced all uses with scm_from_double.
939 (scm_num2float, scm_num2double): Discouraged by moving prototype
940 to discouraged.h and rewriting in terms of scm_to_double.
941 Replaced all uses with scm_to_double.
942 (scm_to_double): Do not implement in terms of scm_num2dbl, use
943 explicit code.
944 (scm_from_double): Do not implement in terms of scm_make_real, use
945 explicit code.
946
947 2004-08-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
948
949 * init.c (scm_init_guile_1): Call scm_i_init_discouraged.
950
951 * gen-scmconfig.h.in (SCM_I_GSC_ENABLE_DISCOURAGED): New.
952 * gen-scmconfig.c (SCM_ENABLE_DISCOURAGED): Emit based on above.
953
954 * eval.c (SCM_EVALIM, SCM_EVALIM2, SCM_XEVAL, SCM_XEVALCAR):
955 Renamed to SCM_I_* in order to avoid collisions with the versions
956 defined in deprecated.h.
957
958 * discouraged.h, discouraged.c: New files.
959
960 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_EQ_P,
961 SCM_NEGATE_BOOL, SCM_BOOL, SCM_BOOT_NOT): Promoted from being
962 deprecated to being discouraged by moving to discouraged.h.
963
964 * numbers.h, numbers.c, discouraged.h, discouraged.c
965 (scm_short2num, scm_ushort2num, scm_int2num, scm_uint2num,
966 scm_long2num, scm_ulong2num, scm_size2num, scm_ptrdiff2num,
967 scm_num2short, scm_num2ushort, scm_num2int, scm_num2uint,
968 scm_num2long, scm_num2ulong, scm_num2size, scm_num2ptrdiff,
969 scm_long_long2num, scm_ulong_long2num, scm_num2long_long,
970 scm_num2ulong_long): Discouraged by moving to discouraged.h and
971 discouraged.c and reimplementing in terms of scm_from_* and
972 scm_to_*. Changed all uses to the new scm_from_* and scm_to_*
973 functions.
974
975 * numbers.h, numbers.c: Removed GUILE_DEBUG code.
976 (scm_i_short2big, scm_i_ushort2big, scm_i_int2big, scm_i_uint2big,
977 scm_i_size2big, scm_i_ptrdiff2big): Removed.
978 (scm_i_long2big, scm_i_ulong2big): New, explicit definitions.
979 * conv-integer.i.c, conv-uinteger.i.c: Use them instead of
980 explicit code.
981
982 2004-08-02 Kevin Ryde <user42@zip.com.au>
983
984 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Add comments about past
985 and current usage and migration.
986
987 2004-07-31 Kevin Ryde <user42@zip.com.au>
988
989 * error.c (scm_strerror): Use scm_i_misc_mutex around strerror since
990 it's not thread safe.
991 (scm_syserror): Use scm_strerror rather than SCM_I_STRERROR, to take
992 advantage of this.
993 * fports.c (scm_open_file): Use scm_strerror likewise.
994 * filesys.c (scm_stat, scm_lstat): Ditto.
995
996 * filesys.c (scm_copy_file): Avoid fd leak when destination file
997 cannot be opened.
998
999 * symbols.c (scm_gensym): Use scm_i_misc_mutex around gensym_counter
1000 update, for thread safety.
1001 (gensym_counter): Move into scm_gensym which is its only user.
1002 (scm_init_symbols): No need to explicitly initialize gensym_counter.
1003
1004 2004-07-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1005
1006 * numbers.h (scm_to_schar, scm_to_uchar, scm_to_char,
1007 scm_to_short, scm_to_ushort, scm_to_int, scm_to_uint, scm_to_long,
1008 scm_to_ulong, scm_to_long_long, scm_to_ulong_long, scm_to_intmax,
1009 scm_to_uintmax, scm_to_size_t, scm_to_ssize_t scm_from_schar,
1010 scm_from_uchar, scm_from_char, scm_from_short, scm_from_ushort,
1011 scm_from_int, scm_from_uint, scm_from_long, scm_from_ulong,
1012 scm_from_long_long, scm_from_ulong_long, scm_from_intmax,
1013 scm_from_uintmax, scm_from_size_t, scm_from_ssize_t): No longer
1014 defined in terms of scm_to_signed_integer, etc, but in terms of
1015 scm_to_int8, etc.
1016
1017 * gen-scmconfig.c (SCM_SIZEOF_INTMAX, SCM_SIZEOF_SIZE_T): New.
1018
1019 * gen-scmconfig.h.in: Removed SCM_I_GSC_*_LIMITS macros, they are
1020 no longer used.
1021
1022 * __scm.h (SCM_I_UTYPE_MAX, SCM_I_TYPE_MAX, SCM_I_TYPE_MIN,
1023 SCM_I_SIZE_MAX, SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX): New.
1024
1025 * __scm.h, gen-scmconfig.c (SCM_I_LLONG_MAX, SCM_I_LLONG_MIN,
1026 SCM_I_ULLONG_MAX, SCM_T_INT8_MIN, SCM_T_INT8_MAX, SCM_T_UINT8_MAX,
1027 SCM_T_INT16_MIN, SCM_T_INT16_MAX, SCM_T_UINT16_MAX,
1028 SCM_T_INT32_MIN, SCM_T_INT32_MAX, SCM_T_UINT32_MAX,
1029 SCM_T_INT64_MIN, SCM_T_INT64_MAX, SCM_T_UINT64_MAX,
1030 SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, SCM_T_UINTMAX_MAX): Moved
1031 definition into __scm.h, using new SCM_I_TYPE_MIN, etc.
1032
1033 * conv-integer.i.c, conv-uinteger.i.c: New files, used to generate
1034 the functions below.
1035
1036 * Makefile.am (noinst_HEADERS): Added conv-integer.i.c and
1037 conv-uinteger.i.c.
1038
1039 * numbers.c, numbers.h (scm_to_int8, scm_to_uint8, scm_to_int16,
1040 scm_to_uint16, scm_to_int32, scm_to_uint32, scm_to_int64,
1041 scm_to_uint64, scm_from_int8, scm_from_uint8, scm_from_int16,
1042 scm_from_uint16, scm_from_int32, scm_from_uint32, scm_from_int64,
1043 scm_from_uint64): Turned from macros into proper functions.
1044 (scm_to_signed_integer, scm_to_unsigned_integer,
1045 scm_from_signed_integer, scm_from_unsigned_integer): Generate via
1046 conv-integer.i.c and conv-uinteger.i.c, as well.
1047
1048 * number.h (scm_to_ssize_t, scm_to_size_t): Use the new
1049 SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX, and SCM_I_SIZE_MAX macros for
1050 the limits. Those are always defined.
1051
1052 2004-07-29 Kevin Ryde <user42@zip.com.au>
1053
1054 * posix.c (scm_ttyname): Use scm_i_misc_mutex for thread safety.
1055
1056 2004-07-28 Kevin Ryde <user42@zip.com.au>
1057
1058 * posix.c (scm_ctermid): Use an L_ctermid buf on the stack, for thread
1059 safety.
1060
1061 * unif.c (scm_array_set_x): For svect, use scm_num2short for
1062 consistency with other vector types and to get arg and func name into
1063 error message.
1064
1065 2004-07-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1066
1067 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_BOOL):
1068 Reimplement using scm_is_false, scm_is_true, scm_is_bool, and
1069 scm_from_bool, respectively.
1070 (SCM_NINUMP): Added.
1071
1072 * tags.h, deprecated.h (SCM_EQ_P): Deprecated by moving it into
1073 deprecated.h. Replaced all uses with scm_is_eq.
1074
1075 2004-07-24 Kevin Ryde <user42@zip.com.au>
1076
1077 * threads.c, threads.h (scm_i_misc_mutex): New SCM_GLOBAL_MUTEX.
1078 * posix.c (scm_crypt): Use it to protect static data in crypt().
1079
1080 2004-07-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1081
1082 * deprecated.h, deprecated.c, numbers.h (SCM_INUMP, SCM_NINUMP,
1083 SCM_INUM): Deprecated by renaming them to SCM_I_INUMP,
1084 SCM_I_NINUMP and SCM_I_INUM, respectively and adding deprecated
1085 versions to deprecated.h and deprecated.c. Changed all uses to
1086 either use the SCM_I_ variants or scm_is_*, scm_to_*, or
1087 scm_from_*, as appropriate.
1088
1089 * dynwind.c (scm_i_dowinds): Removed unused code that would call
1090 the unexisting scm_cross_dynwind_binding_scope for inums on the
1091 windlist.
1092
1093 2004-07-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1094
1095 * socket.c (ipv6_net_to_num, scm_from_ipv6): Renamed
1096 ipv6_net_to_num to scm_from_ipv6, for converting from an IPv6
1097 byte-wise address to a SCM integer. Changed all uses.
1098 (ipv6_num_to_net, scm_to_ipv6): Renamed ipv6_num_to_net to
1099 scm_to_ipv6 and added type and range checking, for converting from
1100 an IPv& byte-wise address to a SCM integer. Changed all uses.
1101 (bignum_in_ipv6_range_p, VALIDATE_INET6): Removed, their function
1102 is now done by scm_to_ipv6.
1103
1104 * numbers.c (scm_to_signed_integer, scm_to_unsigned_integer): dot
1105 not accept inexact integers.
1106
1107 * validate.h, deprecated.h (SCM_VALIDATE_INUM,
1108 SCM_VALIDATE_INUM_COPY, SCM_VALIDATE_BIGINT,
1109 SCM_VALIDATE_INUM_MIN, SCM_VALIDATE_INUM_MIN_COPY,
1110 SCM_VALIDATE_INUM_MIN_DEF_COPY,SCM_VALIDATE_INUM_DEF,
1111 SCM_VALIDATE_INUM_DEF_COPY, SCM_VALIDATE_INUM_RANGE,
1112 SCM_VALIDATE_INUM_RANGE_COPY): Deprecated because they make the
1113 fixnum/bignum distinction visible. Changed all uses to
1114 scm_to_size_t or similar.
1115
1116 2004-07-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1117
1118 * cpp_cnvt.awk: Use scm_from_int instead of SCM_MAKINUM.
1119
1120 2004-07-10 Kevin Ryde <user42@zip.com.au>
1121
1122 * hash.c (scm_hashq, scm_hashv, scm_hash): Restrict to size>=1 rather
1123 than size>=0, since 0<=hash<size cannot be satisfied for size==0, and
1124 such a size causes divide-by-zeros in scm_hasher.
1125
1126 * regex-posix.c (scm_make_regexp): Free rx on error, to avoid memory
1127 leak.
1128
1129 2004-07-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1130
1131 * numbers.c (scm_is_signed_integer, scm_is_unsigned_integer):
1132 Rewritten using the same logic as scm_to_signed_integer and
1133 scm_to_unsigned_integer, respectively, which is better(tm). Also,
1134 use CHAR_BIT instead of hardcoding 8.
1135 (LLONG_MIN, LLONG_MAX, ULLONG_MAX): Removed and used
1136 SCM_I_LLONG_MIN etc. instead.
1137
1138 * numbers.h (SCM_MAKINUM, SCM_I_MAKINUM): Renamed SCM_MAKINUM to
1139 SCM_I_MAKINUM and changed all uses.
1140 * deprecated.h, deprecated.c (SCM_MAKINUM): Newly deprecated.
1141
1142 * gen-scmconfig.c (SCM_I_LLONG_MIN, SCM_I_LLONG_MAX,
1143 SCM_I_ULLONG_MAX): Instead of hard-coding the numbers, compute
1144 them by assuming twos-complement.
1145
1146 2004-07-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1147
1148 * gen-scmconfig.h.in: Added all the new SCM_I_GSC_*_LIMITS that
1149 configure now produces.
1150 * gen-scmconfig.c: Use them to output SCM_T_INT8_MIN, etc
1151 definitions, giving the limits of the integer types defined by
1152 Guile. Also, output a hard coded SCM_I_LLONG_MIN, etc since
1153 LLONG_MIN or LONG_LONG_MIN is hard to get at.
1154
1155 * numbers.h (scm_to_short, scm_to_ushort): It's SHRT_MIN, etc, not
1156 SHORT_MIN.
1157 (scm_to_size_t): Use SIZE_MAX instead of cooking our own.
1158 (scm_to_long_long, scm_to_ulong_long, scm_to_int8, scm_to_uint8,
1159 scm_to_int16, scm_to_uint16, scm_to_int32, scm_to_uint32,
1160 scm_to_int64, scm_to_uint64, scm_to_intmax, scm_to_uintmax,
1161 scm_from_long_long, scm_from_ulong_long, scm_from_int8,
1162 scm_from_uint8, scm_from_int16, scm_from_uint16, scm_from_int32,
1163 scm_from_uint32, scm_from_int64, scm_from_uint64, scm_from_intmax,
1164 scm_from_uintmax): New.
1165
1166 2004-07-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1167
1168 * tags.h (scm_is_eq): New.
1169
1170 * deprecated.h, boolean.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOL,
1171 SCM_NEGATE_BOOL, SCM_BOOLP): Deprecated by moving into
1172 "deprecated.h". Replaced all uses with scm_is_false, scm_is_true,
1173 scm_from_bool, and scm_is_bool, respectively.
1174
1175 * boolean.h (scm_is_bool): Fix bug in prototype.
1176 (scm_from_bool): The argument is "x" not "f", stupid.
1177
1178 * boolean.c (scm_is_bool): Fix typo.
1179
1180 * numbers.h, numbers.c (scm_is_integer, scm_is_signed_integer,
1181 scm_is_unsigned_integer, scm_to_signed_integer,
1182 scm_to_unsigned_integer, scm_to_schar, scm_to_uchar, scm_to_char,
1183 scm_to_short, scm_to_ushort, scm_to_long, scm_to_ulong,
1184 scm_to_size_t, scm_to_ssize_t, scm_from_schar, scm_from_uchar,
1185 scm_from_char, scm_from_short, scm_from_ushort, scm_from_int,
1186 scm_from_uint, scm_from_long, scm_from_ulong, scm_from_size_t,
1187 scm_from_ssize_t, scm_is_real, scm_to_double, scm_from_double):
1188 New.
1189
1190 2004-07-05 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1191
1192 * boolean.h, boolean.c (scm_is_true, scm_is_false, scm_from_bool,
1193 scm_to_bool): New.
1194
1195 2004-06-27 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
1196
1197 * backtrace.c (display_expression, display_frame): Call
1198 scm_i_unmemoize_expr for unmemoizing a memoized object holding a
1199 single memoized expression.
1200
1201 * debug.c (memoized_print): Don't try to unmemoize the memoized
1202 object, since we can't know whether it holds a single expression
1203 or a body.
1204
1205 (scm_mem_to_proc): Removed check for lambda expression, since it
1206 was moot anyway. Whoever uses these functions for debugging
1207 purposes should know what they do: Creating invalid memoized code
1208 will cause crashes, independent of whether this check is present
1209 or not.
1210
1211 (scm_proc_to_mem): Take the closure's code as it is and don't
1212 append a SCM_IM_LAMBDA isym. To allow easier debugging, the
1213 memoized code should not be modified.
1214
1215 * debug.[ch] (scm_unmemoize, scm_i_unmemoize_expr): Removed
1216 scm_unmemoize from public use, but made scm_i_unmemoize_expr
1217 available as a guile internal function instead. However,
1218 scm_i_unmemoize_expr will only work on memoized objects that hold
1219 a single memoized expression. It won't work with bodies.
1220
1221 * debug.c (scm_procedure_source), macros.c (macro_print), print.c
1222 (scm_iprin1): Call scm_i_unmemocopy_body for unmemoizing a body,
1223 i. e. a list of expressions.
1224
1225 * eval.c (unmemoize_exprs): Drop internal body markers from the
1226 output during unmemoization.
1227
1228 * eval.[ch] (scm_unmemocopy, scm_i_unmemocopy_expr,
1229 scm_i_unmemocopy_body): Removed scm_unmemocopy from public use,
1230 but made scm_i_unmemocopy_expr and scm_i_unmemocopy_body available
1231 as guile internal functions instead. scm_i_unmemoize_expr will
1232 only work on a single memoized expression, while
1233 scm_i_unmemocopy_body will only work on bodies.
1234
1235 2004-06-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
1236
1237 * eval.c (unmemoize_exprs): Handle semi-memoized code.
1238
1239 (scm_cons_source, scm_primitive_eval): Prefer higher level
1240 predicate SCM_FALSEP over SCM_IMP.
1241
1242 2004-06-15 Rob Browning <rlb@defaultvalue.org>
1243
1244 * script.c (scm_shell_usage): minor phrasing change.
1245
1246 * gc_os_dep.c: update ifdefery for macosx.
1247 (scm_get_stack_base): separate result initialization from
1248 declaration to slience warnings with macosx and hp-ux using gcc
1249 3.3. Thanks to Andreas Vögele.
1250
1251 2004-06-13 Han-Wen Nienhuys <hanwen@xs4all.nl>
1252
1253 * eval.c (unmemoize_exprs): use SCM_CONSP for the loop condition.
1254
1255 2004-06-06 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
1256
1257 * list.[ch] (scm_i_finite_list_copy): New internal function to
1258 copy lists that are known to be finite (though not necessarily
1259 proper).
1260
1261 * debug.c (scm_procedure_source): Don't have scm_unmemocopy treat
1262 a closure's argument list like an expression of a body.
1263
1264 * eval.c (unmemoize_expression, unmemoize_exprs, unmemoize_and,
1265 unmemoize_begin, unmemoize_case, unmemoize_cond, unmemoize_delay,
1266 unmemoize_do, unmemoize_if, unmemoize_lambda, unmemoize_let,
1267 unmemoize_letrec, unmemoize_letstar, unmemoize_or,
1268 unmemoize_set_x, unmemoize_apply, unmemoize_atcall_cc,
1269 unmemoize_at_call_with_values, unmemoize_future, sym_atslot_ref,
1270 unmemoize_atslot_ref, sym_atslot_set_x, unmemoize_atslot_set_x,
1271 unmemoize_builtin_macro): New static functions and symbols.
1272
1273 (scm_unmemocopy): Rewritten in terms of the above. scm_unmemocopy
1274 now has a slightly different meaning: The memoized form that is
1275 receives as its argument is now interpreted as a sequence of
1276 expressions from a body.
1277
1278 (unmemocar, scm_unmemocar): Since the whole functionality of
1279 unmemocar and scm_unmemocar is not needed any more, scm_unmemocar
1280 has its old content back and is deprecated, while unmemocar has
1281 been removed.
1282
1283 (SCM_BIT7): Removed.
1284
1285 (CEVAL): For unmemoizing a single expression, call
1286 unmemoize_expression instead of scm_unmemocopy, which now expects
1287 a sequence of body expressions. Eliminated unnecessary empty
1288 environment frame when executing let* forms. Eliminated
1289 unmemoization step from evaluator.
1290
1291 2004-06-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1292
1293 * eval.c (scm_macroexp, macroexp): Renamed scm_macroexp to
1294 macroexp and made static. Added new version of scm_macroexp that
1295 emits a deprecation warning and then calls macroexp.
1296 (scm_m_undefine): Issue deprecation warning.
1297
1298 2004-05-30 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
1299
1300 * eval.c (lookup_global_symbol, literal_p, try_macro_lookup):
1301 Modified to make set! work on symbols that represent syntactic
1302 keywords.
1303
1304 2004-05-26 Han-Wen Nienhuys <hanwen@xs4all.nl>
1305
1306 * gc.h (SCM_CELL_OBJECT_LOC): use SCM_GC_CELL_OBJECT to prevent
1307 compound expression as lvalue errors.
1308
1309 2004-05-24 Marius Vollmer <mvo@zagadka.de>
1310
1311 * dynwind.c (winder_mark): Use SCM_PACK to correctly convert the
1312 WINDER_DATA to a SCM.
1313
1314 2004-05-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
1315
1316 * goops.c (compute_getters_n_setters, create_standard_classes,
1317 scm_add_slot): Compute closures by calling scm_i_eval_x on a
1318 lambda expression rather than creating them with scm_closure.
1319
1320 2004-05-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
1321
1322 * eval.c (s_macro_keyword, scm_m_set_x): Remove checking for
1323 misplaced syntactic keywords. This will not work unless guile's
1324 defmacro feature is deprecated.
1325
1326 (scm_m_case): Fixed a bug that caused the list of labels to grow
1327 with every case form.
1328
1329 2004-05-19 Kevin Ryde <user42@zip.com.au>
1330
1331 * numbers.c (scm_round_number): For inum and big, just return x. For
1332 real, use scm_round for 2^54-1 etc problems covered there.
1333
1334 * numbers.c (trunc): Remove #define to scm_truncate when the C library
1335 doesn't provide trunc. This was for when `truncate' was done as a
1336 scm_tc7_dsubr, no longer required.
1337
1338 * threads.c (scm_threads_mark_stacks) [SCM_STACK_GROWS_UP]: Correction
1339 to stack marking call, two parameters and no cast on t->base.
1340
1341 2004-05-18 Marius Vollmer <mvo@zagadka.de>
1342
1343 * hashtab.c (rehash_after_gc): Bug fix: properly link the
1344 processed hashtables back into the weak_hashtables list. Thanks
1345 to Bill Schottstaedt!
1346
1347 2004-05-16 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
1348
1349 * eval.c (unmemoize_quote): New static function.
1350
1351 (scm_m_quote, scm_m_atslot_ref, SCM_CEVAL): Changed the byte code
1352 representation of 'quote' and '@slot-ref' to an improper list.
1353 This reduces execution time, the number of cells used to hold the
1354 memoized code, and thus also reduces garbage collection time.
1355
1356 (scm_unmemocopy): Use unmemoize_quote for quote expressions.
1357
1358 (SCM_CEVAL): Changed macro handling to also work with macros that
1359 return improper lists. Added an assertion, that the code returned
1360 by a macro transformer will not lead to cycles in the memoized
1361 code.
1362
1363 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
1364
1365 No functional change, just rearrangements of functions within the
1366 file.
1367
1368 * eval.c (scm_ilookup, scm_unbound_variable_key,
1369 error_unbound_variable, scm_lookupcar1, scm_lookupcar): Moved to
1370 the definitions used for execution, since that's where they will
1371 belong to later.
1372
1373 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
1374
1375 * numbers.h (SCM_SLOPPY_FRACTIONP): Removed. It was not used
1376 throughout guile, has not been part of an official release yet,
1377 and the concept of sloppy predicates has never been a good idea.
1378
1379 (SCM_FRACTION_NUMERATOR, SCM_FRACTION_DENOMINATOR,
1380 SCM_FRACTION_SET_NUMERATOR, SCM_FRACTION_SET_DENOMINATOR):
1381 Simplified.
1382
1383 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
1384
1385 * throw.c (SETJBJMPBUF, SCM_SETJBDFRAME): Add cast to scm_t_bits
1386 to make explicit what happens.
1387
1388 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
1389
1390 * dynl.c (SET_DYNL_HANDLE): Add cast to scm_t_bits to make
1391 explicit what happens.
1392
1393 * guardians.c (TCONC_IN): Use SCM_SET_CELL_OBJECT_x rather than
1394 SCM_SET_CELL_WORD_x when writing scheme objets to cell elements.
1395
1396 2004-05-11 Marius Vollmer <mvo@zagadka.de>
1397
1398 * scmsigs.c (scm_sigaction_for_thread): Validate that the handler
1399 is indeed a procedure when it isn't a number.
1400
1401 2004-05-10 Marius Vollmer <mvo@zagadka.de>
1402
1403 Convert floating point numbers into strings with an arbitrary
1404 radix. Thanks to Richard Todd!
1405
1406 * numbers.c (FLOBUFLEN): Increase so that radix 2 strings will
1407 fit.
1408 (fx): Removed.
1409 (scm_dblprec, fx_per_radix, init_dblprec, init_fx_radix,
1410 number_chars): New, to support variable radices.
1411 (idbl2str): Use above instead of the old base-10 only tables.
1412 (iflo2str): Pass on new RADIX argument to idbl2str.
1413 (scm_number_to_string): Pass radix to iflo2str.
1414 (scm_print_real, scm_print_complex): Explicitly pass radix 10 to
1415 iflo2str.
1416 (scm_init_numbers): Call init_dblprec and init_fx_radix for all
1417 possible radices.
1418
1419 2004-05-10 Kevin Ryde <user42@zip.com.au>
1420
1421 * numbers.c (scm_logbit_p): Correction to test above the end of an
1422 inum. Reported by Jan Konecny.
1423
1424 2004-05-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1425
1426 * gc.h (scm_t_cell): Fields are now of type SCM instead of
1427 scm_t_bits. Updated all users.
1428 (SCM_GC_CARD_SIZE_MASK): Use SCM_GC_SIZEOF_CARD instead of
1429 duplicating the code.
1430 (SCM_CELL_OBJECT_LOC): New.
1431 (SCM_CARLOC, SCM_CDRLOC): Use it instead of SCM_CELL_WORD_LOC.
1432 (SCM_CELL_WORD_LOC): Moved to "deprecated.h".
1433
1434 * smob.h (SCM_SMOB_DATA_2, SCM_SMOB_DATA_3, SCM_SMOB_FLAGS,
1435 SCM_SET_SMOB_DATA_2, SCM_SET_SMOB_DATA_3, SCM_SET_SMOB_FLAGS,
1436 SCM_SMOB_OBJECT, SCM_SMOB_OBJECT_2, SCM_SMOB_OBJECT_3,
1437 SCM_SET_SMOB_OBJECT, SCM_SET_SMOB_OBJECT_2, SCM_SET_SMOB_OBJECT_3,
1438 SCM_SMOB_OBJECT_LOC, SCM_SMOB_OBJECT_2_LOC,
1439 SCM_SMOB_OBJECT_3_LOC): New.
1440 * smob.c (scm_i_set_smob_flags): New function.
1441
1442 * dynl.c, dynwind.c, eval.h, fluids.h, futures.h, hashtab.h,
1443 hooks.h, keywords.h, macros.h, macros.c, mallocs.c, mallocs.h,
1444 random.h, regex-posix.h, root.h, srcprop.h, srcprop.c, threads.h:
1445 Use SCM_SMOB_* instead of SCM_CELL_* as appropriate. Use
1446 SCM_SMOB_FLAGS and SCM_SET_SMOB_FLAGS instead of accessing the
1447 zeroth word directly. Use SCM_SMOB_PREDICATE as appropriate.
1448
1449 * numbers.h (SCM_I_BIG_MPZ): Use SCM_CELL_OBJECT_LOC instead of
1450 taking the address of SCM_CELL_WORD_1, the latter being no longer
1451 an lvalue.
1452
1453 * variable.h (SCM_VARIABLE_LOC): Use SCM_CELL_OBJECT_LOC instead
1454 of casting SCM_CELL_WORD_LOC.
1455
1456 2004-05-02 Kevin Ryde <user42@zip.com.au>
1457
1458 * eval.c (scm_macroexp): Add prototype, since it's not in eval.h under
1459 --disable-deprecated. Reported by Andreas Vögele.
1460
1461 * filesys.c (_POSIX_C_SOURCE): Define to 199506L to get readdir_r (in
1462 particular on HP-UX). Reported by Andreas Vögele.
1463
1464 * list.c (varargs.h): Remove, leave just stdarg.h which is all the
1465 code has support for. Fixes building with AIX cc, which is ansi but
1466 doesn't define __STDC__. Reported by Keith Crane.
1467 (var_start): Remove macro, this variation no longer required.
1468 (scm_list_n): Use va_start directly.
1469
1470 2004-05-01 Kevin Ryde <user42@zip.com.au>
1471
1472 * continuations.c (scm_dynthrow): Use >= instead of SCM_PTR_GE which
1473 is now gone. Reported by Andreas Vögele.
1474
1475 2004-04-28 Kevin Ryde <user42@zip.com.au>
1476
1477 * backtrace.c (display_frame_expr), numbers.c (XDIGIT2UINT,
1478 mem2uinteger, mem2decimal_from_point, mem2ureal): Cast char to int for
1479 ctype.h tests, to avoid warnings from gcc on HP-UX about char as array
1480 subscript. Reported by Andreas Vögele.
1481 Also cast through unsigned char to avoid passing negatives to those
1482 macros if input contains 8-bit values.
1483
1484 * num2integral.i.c (NUM2INTEGRAL): Under non-BIGMPZ_FITSP case,
1485 corrections to range check for signed numbers. Remove
1486 scm_remember_upto_here_1(num) from these checks, since num is used
1487 subsequently anyway.
1488
1489 * num2integral.i.c (NUM2INTEGRAL): Test BIGMPZ_FITSP with "!= 0" to
1490 avoid warning from gcc 3.4. Reported by Hyperdivision.
1491
1492 * numbers.c (scm_bit_extract): Use min instead of MIN.
1493 (MIN): Remove, this conflicts with similar macro defined by limits.h
1494 on HP-UX. Reported by Andreas Vögele.
1495
1496 * stime.c (_POSIX_C_SOURCE): Define to 199506L to get gmtime_r (in
1497 particular on HP-UX). Reported by Andreas Vögele.
1498
1499 * threads.c (scm_threads_mark_stacks): Correction sizet -> size_t.
1500 Reported by Andreas Vögele.
1501
1502 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 25*sizeof(long),
1503 for the benefit of hpux11 where pthread_mutex_t is 88 bytes. Reported
1504 by Andreas Vögele.
1505
1506 2004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
1507
1508 * eval.c (s_macro_keyword): New static identifier.
1509
1510 (scm_m_define): Change order to first create binding and
1511 evaluating the expression afterwards.
1512
1513 (scm_m_set_x): Memoize complete set! expression. Only leave
1514 symbols if no binding exists at memoization time. Throw error if
1515 assigning to a syntactic keyword.
1516
1517 (lazy_memoize_variable): New function.
1518
1519 (CEVAL): When execution set!, perform lazy memoization if
1520 unmemoized symbol is detected.
1521
1522 * modules.c (module_variable): Return variables with unbound
1523 value.
1524
1525 * tags.h: Fix comment.
1526
1527 2004-04-25 Kevin Ryde <user42@zip.com.au>
1528
1529 * chars.c (scm_char_upcase, scm_char_downcase, scm_c_upcase,
1530 scm_c_downcase): Use ctype.h toupper and tolower. This will be useful
1531 in 8-bit locales, and ensures consistency with char-upper-case? and
1532 char-lower-case? which already use ctype.h.
1533 (scm_c_upcase_table, scm_c_downcase_table, scm_lowers, scm_uppers):
1534 Remove.
1535 * chars.c, chars.h, init.c (scm_tables_prehistory): Remove.
1536
1537 * socket.c (VALIDATE_INET6): Correction to bignum_in_ipv6_range_p
1538 call. Reported by Hyperdivision.
1539
1540 * threads.c (scm_yield): Correction, actually call scm_thread_yield.
1541 Reported by Hyperdivision.
1542
1543 * unif.c (s_scm_make_uve): Remove unused local variable. Reported by
1544 Hyperdivision.
1545
1546 2004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
1547
1548 Hide the implementation of ilocs and isyms in eval.c.
1549
1550 * deprecated.h (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
1551 SCM_ICDRP), eval.c (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
1552 SCM_ICDRP), eval.h (SCM_ICDR, SCM_IFRINC, SCM_IFRAME, SCM_IDIST,
1553 SCM_ICDRP): Deprecated and added to deprecated.h. Moved from
1554 eval.h to eval.c.
1555
1556 * deprecated.c (scm_isymnames), deprecated.h (scm_isymnames,
1557 SCM_ISYMNUM, SCM_ISYMCHARS), eval.c (SCM_ISYMNUM, isymnames,
1558 scm_unmemocopy, CEVAL), print.c (scm_isymnames), tags.h
1559 (SCM_ISYMNUM, scm_isymnames, SCM_ISYMCHARS): Deprecated
1560 scm_isymnames, SCM_ISYMNUM and SCM_ISYMCHARS and added to
1561 deprecated.[hc]. Moved scm_isymnames from print.c to eval.c and
1562 renamed to isymnames. Moved SCM_ISYMNUM from tags.h to eval.c and
1563 renamed to ISYMNUM.
1564
1565 * eval.c (scm_i_print_iloc, scm_i_print_isym), eval.h
1566 (scm_i_print_iloc, scm_i_print_isym), print.c (scm_iprin1):
1567 Extracted printing of ilocs and isyms to guile internal functions
1568 scm_i_print_iloc, scm_i_print_isym of eval.c.
1569
1570 2004-04-22 Kevin Ryde <user42@zip.com.au>
1571
1572 * numbers.c (scm_bit_extract): Use SCM_SRS for signed right shift.
1573
1574 * numbers.c (scm_round): Test for x already an integer, to avoid bad
1575 rounding in x+0.5 when x is a big value already an integer. In
1576 certain hardware rounding cases x+0.5 can give an adjacent integer,
1577 leading to that as the result, when we really just wanted x itself.
1578
1579 2004-04-19 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
1580
1581 * eval.c (scm_unmemocopy): Fixed unmemoization of let*.
1582
1583 (deval_args, CEVAL): Minor improvements: Reduced variable scopes,
1584 added const qualifiers, cast intentionally unused expressions to
1585 void for emphasis, improved comment.
1586
1587 2004-04-18 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
1588
1589 * tags.h (scm_tags, scm_tc8_tags, scm_tc9_flag, scm_tc8_flag,
1590 scm_tc8_isym): Renamed scm_tags to scm_tc8_tags. Renamed
1591 scm_tc9_flag to scm_tc8_flag. Introduced new identifier
1592 scm_tc8_isym. Defined tc8-tags relative to scm_tc3_imm24.
1593 Defined the tc8-tag for flags to be 0x04, which will mean that
1594 SCM_BOOL_F will also have the value 0x04 instead of 0x013c. Due
1595 to the reduced number of bits and the simpler bit pattern for
1596 SCM_BOOL_F, certain machines may be able to use more efficient
1597 processor instructions to deal with SCM_BOOL_F.
1598
1599 (SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA): Removed. These have
1600 never been defined in a released version, thus no need to
1601 deprecate them.
1602
1603 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Flags now use tc8
1604 instead of tc9 tags.
1605
1606 (SCM_ISYMP, SCM_MAKISYM, SCM_ISYMNUM): Isyms now use tc8 instead
1607 of tc9 tags.
1608
1609 (SCM_MAKSPCSYM): Removed. It is almost impossible that user code
1610 could have used this definition.
1611
1612 (SCM_IM_AND, SCM_IM_BEGIN, SCM_IM_CASE, SCM_IM_COND, SCM_IM_DO,
1613 SCM_IM_IF, SCM_IM_LAMBDA, SCM_IM_LET, SCM_IM_LETSTAR,
1614 SCM_IM_LETREC, SCM_IM_OR, SCM_IM_QUOTE, SCM_IM_SET_X): Now encoded
1615 as isyms, as special isyms don't exist any more.
1616
1617 2004-04-18 Kevin Ryde <user42@zip.com.au>
1618
1619 * filesys.c (scm_readdir): Use readdir_r when available, for thread
1620 safety.
1621
1622 * numbers.c (scm_max, scm_min): For big/real, use SCM_SWAP rather than
1623 explicit swapping code.
1624
1625 2004-04-15 Kevin Ryde <user42@zip.com.au>
1626
1627 * cpp_sig_symbols.in: Add SIGSYS.
1628
1629 * list.c (scm_append_x): Use iterative style, to avoid non-tail
1630 recursion.
1631
1632 * numbers.c (scm_max, scm_min): For inum/frac, frac/inum, big/frac,
1633 frac/big and frac/frac, use scm_less_p for exact comparison.
1634
1635 * numbers.c (scm_gcd): For inum/big, use mpz_gcd_ui by sharing code
1636 with big/inum.
1637
1638 * numbers.c (xisinf): Add a comment about solaris 7 lacking isinf.
1639
1640 2004-04-06 Han-Wen Nienhuys <hanwen@xs4all.nl>
1641
1642 * inline.h (scm_cell): use SCM_GC_CELL_WORD for checking tag.
1643
1644 * chars.h (scm_init_chars): change scm_{upcase,downcase} to
1645 scm_c_{up,down}case.
1646 (SCM_MAKE_CHAR): add (unsigned char) cast. This prevents havoc
1647 when hi-bit ASCII is subjected to SCM_MAKE_CHAR().
1648
1649 2004-04-06 Kevin Ryde <user42@zip.com.au>
1650
1651 * numbers.c (scm_ash): Remove stray "}" in docstring.
1652
1653 * numbers.c (scm_make_ratio): For inum/bignum integer detection, use
1654 x==SCM_MOST_NEGATIVE_FIXNUM explicitly, for clarity and to avoid
1655 calling mpz_cmp_ui in most cases.
1656
1657 * numbers.c (scm_quotient, scm_remainder): In inum/big, use mpz_cmp_ui
1658 for big == abs(most-negative-fixnum) special case.
1659 (abs_most_negative_fixnum): Remove, no longer used.
1660
1661 * scmsigs.c (scm_sigaction_for_thread): Correction to signum range
1662 test, avoids SCM_VECTOR_REF outside bounds of signal_handlers on
1663 calling (sigaction NSIG).
1664
1665 * simpos.c (scm_system_star): Fix execargv memory leak, merge parent
1666 and fork error cases to do this.
1667
1668 2004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
1669
1670 * eval.c (CEVAL): Don't distinguish between short and long
1671 instructions when dispatching - just always dispatch on the
1672 instruction code, which is common for short and long instructions.
1673 Further, removed unnecessary goto statements and added comment.
1674
1675 2004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
1676
1677 * eval.c (scm_unmemocopy): Don't distinguish between short and
1678 long instructions when dispatching - just always dispatch on the
1679 instruction code, which is common for short and long instructions.
1680 Further, removed unnecessary goto statements, fixed indentation
1681 and replaced SCM_IMP predicates by SCM_NULLP.
1682
1683 2004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
1684
1685 * eval.c (scm_lookupcar1, CEVAL): Use SCM_ILOCP instead of
1686 comparison with SCM_ILOC00. In CEVAL, eliminate goto-label
1687 'checkmacro'.
1688
1689 2004-03-31 Kevin Ryde <user42@zip.com.au>
1690
1691 * simpos.c: Include <signal.h> for SIG_IGN and friends.
1692
1693 2004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
1694
1695 Introduce scm_debug_mode_p as a replacement for scm_debug_mode and
1696 SCM_DEBUGGINGP:
1697
1698 * debug.h (scm_debug_mode_p, scm_debug_mode, SCM_DEBUGGINGP),
1699 eval.c (scm_debug_mode_p): Deprecated scm_debug_mode and
1700 SCM_DEBUGGINGP. Provided scm_debug_mode_p instead, to have one
1701 single interface that also matches the naming conventions.
1702 Probably scm_debug_mode_p should be part of the private interface
1703 anyway.
1704
1705 * debug.h (scm_debug_mode_p), backtrace.c (display_error_body),
1706 eval.c (SCM_APPLY, scm_trampoline_0, scm_trampoline_1,
1707 scm_trampoline_2): Change uses of scm_debug_mode or SCM_DEBUGGINGP
1708 to scm_debug_mode_p.
1709
1710
1711 Deprecate direct access to scm_ceval, scm_deval and scm_ceval_ptr:
1712
1713 * eval.h (scm_ceval, scm_deval, scm_ceval_ptr), debug.h
1714 (scm_ceval_ptr): Deprecated. Moved declaration of scm_ceval_ptr
1715 from debug.h to eval.h.
1716
1717 * debug.h (SCM_RESET_DEBUG_MODE): Don't access scm_ceval_ptr any
1718 more, just leave it with setting scm_debug_mode_p, which is
1719 equivalent for practical purposes.
1720
1721 * deprecated.h (SCM_XEVAL, SCM_XEVALCAR): Call scm_i_eval_x
1722 instead of *scm_ceval_ptr. Leave all evaluating to scm_i_eval_x.
1723
1724 * gdbint.c (gdb_eval): Call scm_i_eval_x instead of scm_ceval.
1725
1726 * eval.c (ceval, deval, scm_ceval, scm_deval): Made scm_ceval
1727 static and renamed it to ceval throughout. Provide a new exported
1728 but deprecated function scm_ceval as a wrapper for backwards
1729 compatibility. The same is done for the deval/scm_deval pair of
1730 functions.
1731
1732 * eval.c (CEVAL, SCM_CEVAL): Renamed SCM_CEVAL to CEVAL
1733 throughout. Defined CEVAL to ceval or deval, based on compilation
1734 phase.
1735
1736 * eval.c (SCM_XEVAL, SCM_XEVALCAR): Dispatch on scm_debug_mode_p
1737 to ceval and deval instead of calling *scm_ceval_ptr.
1738
1739 * eval.c (dispatching_eval): New deprecated static function.
1740
1741 * eval.c (scm_ceval_ptr): Initialized to dispatching_eval in order
1742 to emulate its old behaviour as closely as possible.
1743
1744
1745 Change the evaluator such that only expressions for which pair? is
1746 true are passed to CEVAL, and such that all other expressions are
1747 evaluated outside of CEVAL:
1748
1749 * eval.c (EVAL): New, provided in analogy to EVALCAR. Evaluate an
1750 expression that is assumed to be memoized already. All but
1751 expressions of the form '(<form> <form> ...)' are evaluated inline
1752 without calling an evaluator.
1753
1754 * eval.c (SCM_XEVAL, SCM_XEVALCAR, EVALCAR): Evaluate all but
1755 expressions of the form '(<form> <form> ...)' inline without
1756 calling an evaluator.
1757
1758 * eval.c (scm_i_eval_x, scm_i_eval, scm_ceval, scm_deval): Handle
1759 the special case of unmemoized symbols passed on the top level.
1760
1761 * eval.c (CEVAL): Change calls to CEVAL to EVAL, except where it
1762 is known that the expression passed to CEVAL is of the form
1763 '(<form> <form> ...)'. Remove handling of the tc7-objects, since
1764 now it is known that the input expression of CEVAL is a pair.
1765
1766 2004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
1767
1768 * eval.c (is_self_quoting_p): New static function.
1769
1770 (scm_m_quote): Use is_self_quoting_p.
1771
1772 (copy_tree): Corrected typo in comment.
1773
1774 2004-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
1775
1776 * eval.c (s_scm_copy_tree): idem.
1777
1778 * list.c (s_scm_filter): remove "pointer" from doc string.
1779
1780 * gc.h (SCM_GC_CELL_TYPE): SCM_GC_CELL_TYPE uses SCM_GC_CELL_OBJECT.
1781
1782 * goops.h (SCM_NUMBER_OF_SLOTS): don't SCM_UNPACK the result.
1783
1784 * backtrace.c ("display_backtrace_body"): SCM_PACK before SCM_EQ_P
1785 (display_frame): idem.
1786 (display_backtrace_file_and_line): idem.
1787
1788 * tags.h (SCM_UNPACK): stricter typechecking on SCM_UNPACK
1789 arguments.
1790
1791 2004-03-26 Kevin Ryde <user42@zip.com.au>
1792
1793 * filesys.c (scm_getcwd, scm_readlink): Avoid memory leak on errors.
1794
1795 * numbers.c (scm_modulo): For inum/big and big/big, remove test of
1796 big==0 since that never occurs.
1797
1798 * numbers.c, numbers.h (scm_modulo_expt): Renamed from
1799 scm_modular_expt, matching scheme level name `modulo-expt'.
1800
1801 * numbers.c (scm_modular_expt): Return a negative remainder for a
1802 negative divisor, the same as `modulo' does.
1803
1804 2004-03-26 Eric Hanchrow <offby1@blarg.net>
1805
1806 * numbers.c, numbers.h (scm_modular_expt): New function.
1807
1808 2004-03-25 Kevin Ryde <user42@zip.com.au>
1809
1810 * numbers.c (scm_min, scm_max): Correction to big/real and real/big,
1811 return inexact as required by r5rs.
1812
1813 2004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
1814
1815 * eval.c: Separated some definitions relevant for execution from
1816 the memoization part of the file.
1817
1818 (copy_tree): New static function
1819
1820 (scm_copy_tree): Rewritten to fix two kinds or bugs: First, cyclic
1821 structures are detected now and will lead to an exception instead
1822 of forcing guile to run in an endless loop, using up all the
1823 system's memory. Second, arrays in the cdr of an improper list
1824 are now copied. See the new test cases in eval.test.
1825
1826 2004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
1827
1828 * posix.c (scm_gethostname): Make sure len is initialised before
1829 it is used. Restructured to (hopefully) represent possible
1830 configurations more clearly in the code. Added unwind handler.
1831
1832 2004-03-23 Kevin Ryde <user42@zip.com.au>
1833
1834 * posix.c (scm_gethostname): Use sysconf(_SC_HOST_NAME_MAX) and/or
1835 MAXHOSTNAMELEN when available.
1836
1837 2004-03-21 Marius Vollmer <mvo@zagadka.de>
1838
1839 * read.c (skip_scsh_block_comment): Also recognize '\r' as a line
1840 terminator. Rewritten the logic as a state machine, I must have
1841 been doing too much VHDL lately...
1842
1843 * eval.c (scm_ceval, scm_deval): Explicitely evaluate ports to
1844 themselves. Thanks to Han-Wen Nienhuys!
1845
1846 * list.c: Changed docstrings so that they no longer talk about
1847 returning 'pointers' to something.
1848
1849 2004-03-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
1850
1851 * gc.c: remove set_debug_cell_accesses! when
1852 SCM_DEBUG_CELL_ACCESSES is not defined. Scheme source code should
1853 use (if (defined? 'set-debug-cell-accesses!) .. ) to switch on
1854 debugging conditionally.
1855
1856 2004-03-21 Kevin Ryde <user42@zip.com.au>
1857
1858 * stime.c (scm_gmtime): Use gmtime_r when available, for thread safety.
1859
1860 2004-03-20 Kevin Ryde <user42@zip.com.au>
1861
1862 * posix.c (scm_gethostname): Preserve errno across free() call.
1863
1864 2004-03-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
1865
1866 * gc-card.c (sweep_card): use SCM_GC_SET_CELL_WORD for setting
1867 free cells.
1868
1869 2004-03-14 Kevin Ryde <user42@zip.com.au>
1870
1871 * stime.c: Define _GNU_SOURCE for strptime prototype from glibc.
1872 (strptime): Use HAVE_DECL_STRPTIME for when to give own prototype.
1873
1874 2004-03-07 Kevin Ryde <user42@zip.com.au>
1875
1876 * stime.c (scm_gmtime): Return bd_time->tm_zone when available, rather
1877 than "GMT" always.
1878 (filltime): Make zname parameter "const".
1879
1880 2004-03-03 Mikael Djurfeldt <mdj@chunk.mit.edu>
1881
1882 * threads.c, threads.h (scm_c_scm2thread): New function.
1883
1884 2004-02-29 Kevin Ryde <user42@zip.com.au>
1885
1886 * numbers.c (guile_ieee_init): Use C99 INFINITY and NAN when
1887 available. Test HAVE_DINFINITY and HAVE_DQNAN for those globals, in
1888 particular don't assume "defined (__alpha__) && ! defined (linux)"
1889 means OSF. Remove "SCO" code, which was not really SCO specific and
1890 which John W. Eaton advises should be long past being needed.
1891
1892 * posix.c (scm_execl, scm_execlp, scm_execle): Avoid memory leak under
1893 error throw.
1894
1895 2004-02-24 Kevin Ryde <user42@zip.com.au>
1896
1897 * posix.c (scm_cuserid): Use a private result buffer, for thread safe.
1898
1899 2004-02-22 Kevin Ryde <user42@zip.com.au>
1900
1901 * numbers.c (scm_max, scm_min): For one arg, dispatch to generic for
1902 complex, same as for two args. (Handle only inum, big, real, frac).
1903
1904 2004-02-21 Kevin Ryde <user42@zip.com.au>
1905
1906 * posix.c (scm_crypt): Use new HAVE_CRYPT.
1907 (<crypt.h>): Remove HAVE_LIBCRYPT condition.
1908 Reported by Andreas Voegele.
1909
1910 2004-02-20 Neil Jerram <neil@ossau.uklinux.net>
1911
1912 * list.c (scm_list_n): Add #if SCM_DEBUG_CELL_ACCESSES_P around
1913 validation.
1914
1915 * read.c (scm_lreadparen): Removed.
1916 (scm_lreadparen1): Renamed scm_i_lreadparen.
1917
1918 2004-02-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
1919
1920 * list.c (scm_list_n): validate non-immediate arguments;
1921 this will catch forgotten a SCM_UNDEFINED.
1922
1923 2004-02-18 Marius Vollmer <mvo@zagadka.de>
1924
1925 * gc.h (scm_gc_cells_collected): Removed duplicated declaration.
1926 Thanks to Bill Schottstaedt!
1927
1928 * socket.h (scm_gethost): Removed prototype it is already in
1929 "net_db.h". Thanks to Bill Schottstaedt!
1930
1931 2004-02-18 Kevin Ryde <user42@zip.com.au>
1932
1933 * num2integral.i.c (INTEGRAL2BIG): WORDS_BIGENDIAN not right for word
1934 order parameter to mpz_import, in fact with just one word there's no
1935 order to worry about at all.
1936
1937 * numbers.c (scm_num_eq_p): For real==frac, complex==frac, frac==real
1938 and frac==complex, make an exact comparison rather than converting
1939 with fraction2double.
1940
1941 * posix.c, putenv.c, stime.c (environ): Use _NSGetEnviron in Darwin
1942 shared library, since environ is not directly available there.
1943
1944 * script.c (scm_shell_usage): Print to stdout for --help, per GNU
1945 standard.
1946
1947 * stime.c (scm_localtime, scm_gmtime, scm_mktime): Provide a default
1948 errno EINVAL in case localtime and gmtime don't set it.
1949 (scm_mktime, scm_strptime): Forcibly use errno EINVAL for our
1950 SCM_SYSERROR, since mktime and strptime generally don't set errno.
1951
1952 2004-02-16 Kevin Ryde <kevin@swox.se>
1953
1954 * gc-malloc.c (scm_done_malloc, scm_done_free): Allow negative sizes,
1955 which were permitted in the past for these.
1956
1957 * num2float.i.c (NUM2FLOAT): Expand isfinite to !xisinf, as per
1958 previous change to numbers.c.
1959
1960 * script.c (scm_shell_usage): Print bug-guile email address, as per
1961 GNU standard. Reported by Han-Wen Nienhuys.
1962
1963 2004-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1964
1965 * unif.c (scm_make_uve): Removed local variable and simplified
1966 code in order to avoid compiler used uninitialized warnings.
1967
1968 * hashtab.c, hashtab.h (scm_hash_map_to_list): Renamed from
1969 scm_hash_map.
1970 (scm_hash_fold): Use scm_call_3 directly in the call to
1971 scm_internal_hash_fold instead of going via fold_proc (which is
1972 now removed).
1973 (scm_hash_for_each): Use a trampoline +
1974 scm_internal_hash_for_each_handle.
1975 (scm_internal_hash_for_each_handle, scm_hash_for_each_handle): New
1976 functions.
1977
1978 2004-02-12 Kevin Ryde <user42@zip.com.au>
1979
1980 * ports.c (scm_port_line): In docstring, note first line is 0.
1981 (scm_set_port_line_x): In docstring, note first line is 0.
1982 (scm_port_column): In docstring, there's no default to current input
1983 port, and remove shared port-line @defun.
1984 (scm_set_port_column_x): In docstring, there's no default to current
1985 input port, note first column is 0, remove shared set-port-line!
1986 @defun.
1987
1988 * ramap.c (scm_array_fill_x): For fvect and dvect, use scm_num2dbl to
1989 convert args the same way that array-set! does.
1990
1991 * unif.c (scm_make_uve, scm_array_p): Allow fraction 1/3 as prototype
1992 for dvect.
1993 (scm_array_p): Add missing "break"s in switch, fix llvect test look
1994 for "l" not "s", fix dvect to be false for singp(prot) since such a
1995 value is for fvect.
1996 (scm_array_prototype): Return 1/3 for dvect, rather than 0.33..33.
1997 (exactly_one_third): New variable.
1998 (scm_init_unif): Initialize it.
1999
2000 2004-02-10 Neil Jerram <neil@ossau.uklinux.net>
2001
2002 * read.c (scm_read_opts): Change `escaped-parens' to
2003 `elisp-strings'.
2004
2005 2004-02-08 Neil Jerram <neil@ossau.uklinux.net>
2006
2007 * read.c (scm_read_opts): New opts `elisp-vectors' and
2008 `escaped-parens'.
2009 (s_vector): New.
2010 (scm_lreadr): Use scm_lreadparen1 instead of scm_lreadparen. Make
2011 handling of elisp vector syntax dependent on SCM_ENABLE_ELISP and
2012 `elisp-vectors' option instead of SCM_ELISP_READ_EXTENSIONS.
2013 Allow "\(" and "\)" in strings when SCM_ENABLE_ELISP defined and
2014 `escaped-parens' option set.
2015 (scm_read_token): If elisp vector syntax active, disallow [ and ]
2016 in tokens.
2017 (scm_lreadparen): Rewrite as interface to scm_lreadparen1.
2018 (scm_lreadparen1): New.
2019
2020 * read.h: Remove conditionally compiled last arg to
2021 scm_lreadparen.
2022 (SCM_ELISP_VECTORS_P, SCM_ESCAPED_PARENS_P): New.
2023
2024 2004-01-23 Han-Wen Nienhuys <hanwen@xs4all.nl>
2025
2026 * eval.c (m_expand_body): remove stray variable new_body.
2027
2028 2004-01-22 Marius Vollmer <mvo@zagadka.de>
2029
2030 * eval.c (m_expand_body): Rewrite the expression in place (by
2031 overwriting FORMS) also when a letrec is constructed, not only
2032 when no definitions are found. Do not return rewritten expression
2033 to emphasize the in-place rewriting. Changed all users.
2034
2035 2004-01-19 Han-Wen Nienhuys <hanwen@xs4all.nl>
2036
2037 * gc.c: add protected_object_count, a number that is dumped from
2038 gc_stats()
2039
2040 2004-01-11 Marius Vollmer <mvo@zagadka.de>
2041
2042 * dynwind.h, dynwind.c (scm_frame_unwind,
2043 scm_frame_unwind_handler): Renamed and changed all uses.
2044 (scm_frame_rewind, scm_frame_rewind_handler): Likewise.
2045
2046 2004-01-11 Kevin Ryde <user42@zip.com.au>
2047
2048 * unif.c (scm_bit_count, scm_bit_position, s_scm_bit_set_star_x,
2049 s_scm_bit_count_star, s_scm_bit_invert_x): Clarify docstrings, as per
2050 changes made to scheme-compound.texi.
2051
2052 2004-01-10 Marius Vollmer <mvo@zagadka.de>
2053
2054 * print.c (scm_print_symbol_name): Handle #{`foo}#, #{,foo}#,
2055 #{.}#, and all numeric strings specially. Thanks to Paul Jarc!
2056
2057 * guile-snarf.in: Use mkdir to create a unique temporary directory
2058 that we can safely use. Thanks to Stefan Nordhausen!
2059
2060 2004-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2061
2062 * dynwind.h, dynwind.c (scm_i_dowinds): Removed 'explicit'
2063 argument since it is always zero now. Changed all callers.
2064 Removed code for handling fluids.
2065
2066 * fluids.c (scm_c_with_fluids): Use frames instead of adding to
2067 the wind chain explicitely. Use scm_c_with_fluid for the common
2068 case of only one fluid.
2069 (scm_with_fluid): New.
2070 (scm_c_with_fluid): Use frames instead of scm_c_with_fluids.
2071
2072 * fluids.h, fluids.c (scm_frame_fluid): New.
2073 (scm_with_fluid): New.
2074 (scm_i_swap_fluids, scm_i_swap_fluids_reverse): Removed.
2075
2076 * dynwind.c (scm_frame_end): Do not use scm_i_dowinds. Instead,
2077 do the unwinding directly. It is simple enough.
2078
2079 * dynwind.h, dynwind.c: Did the following renamings:
2080 scm_begin_frame -> scm_frame_begin,
2081 scm_end_frame -> scm_frame_end,
2082 scm_on_unwind -> scm_frame_unwind,
2083 scm_on_rewind -> scm_frame_rewind,
2084 scm_on_unwind_with_scm -> scm_frame_unwind_with_scm,
2085 scm_on_rewind_with_scm -> scm_frame_rewind_with_scm.
2086 Changed all uses.
2087
2088 * aync.h, async.c: Did the follwing renamings:
2089 scm_with_blocked_asyncs -> scm_frame_block_asyncs,
2090 scm_with_unblocked_asyncs -> scm_frame_unblock_asyncs.
2091 Changed all uses.
2092
2093 * ports.h, ports.c: Did the follwing renamings:
2094 scm_with_current_input_port -> scm_frame_current_input_port,
2095 scm_with_current_output_port -> scm_frame_current_output_port,
2096 scm_with_current_error_port -> scm_frame_current_error_port.
2097 Changed all uses.
2098
2099 2004-01-07 Kevin Ryde <user42@zip.com.au>
2100
2101 * numbers.c (s_bignum): Remove, not used since gmp bignums.
2102 Reported by Richard Todd.
2103
2104 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 12*sizeof(long),
2105 for the benefit of powerpc-apple-darwin5.5. Reported by Richard Todd.
2106
2107 * unif.c (scm_aind): Test SCM_CONSP rather than !SCM_NULLP while
2108 traversing the args list, fixes segv if an improper list is given.
2109 Reported by Rouben Rostamian.
2110
2111 2004-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2112
2113 * ports.c (swap_ports, scm_with_current_foo_port): Do not allocate
2114 swap_data on stack, use a 'malloc obj'.
2115
2116 * fluids.h, fluids.c (scm_make_initial_fluids, scm_copy_fluids,
2117 scm_swap_fluids, scm_swap_fluids_reverse): Renamed to
2118 scm_i_... since they are internal. Changed all uses.
2119
2120 * dynwind.c (frame_print): Removed, use the default printer.
2121 (WINDER_F_MARK, WINDER_MARK_P, winder_mark): New.
2122 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New. Use above
2123 to protect SCM values.
2124
2125 * dynwind.h (SCM_F_WIND_EXPLICITELY,
2126 SCM_F_WIND_EXPLICITLY): It's "explicitly" not "explicitely", damn.
2127 Changed all uses.
2128 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New.
2129
2130 2004-01-05 Marius Vollmer <mvo@zagadka.de>
2131
2132 * ports.h, ports.c (scm_with_current_input_port,
2133 scm_with_current_output_port, scm_with_current_error_port): New.
2134
2135 * async.h, async.c (scm_with_blocked_asyncs,
2136 scm_with_unblocked_asyncs): New.
2137
2138 2004-01-03 Marius Vollmer <mvo@zagadka.de>
2139
2140 * dynwind.h, scm_dynwind.c (scm_t_frame_flags, scm_t_wind_flags,
2141 scm_begin_frame, scm_end_frame, scm_on_unwind, scm_on_rewind):
2142 New.
2143 (scm_dowinds, scm_i_dowinds): scm_dowinds has been renamed to
2144 scm_i_dowinds and extended to handle frames and to invoke a 'turn'
2145 function when the outermost wind point has been reached. The
2146 latter is used to copy a continuation stack at the right time.
2147 scm_dowinds remains available.
2148 (SCM_GUARDSP, SCM_BEFORE_GUARD, SCM_AFTER_GUARD, SCM_GUARD_DATA,
2149 tc16_guard, guards_print): Removed.
2150 (scm_internal_dynamic_wind): Reimplemented using frames.
2151
2152 * continuations.c (copy_stack): New, do only the stack copying
2153 part of copy_stack_and_call.
2154 (copy_stack_and_call): Copy the stack after unwinding and before
2155 rewinding.
2156 (scm_dynthrow): Do not call scm_dowinds, this is now done by
2157 copy_stack_and_call.
2158
2159 2004-01-04 Kevin Ryde <user42@zip.com.au>
2160
2161 * numbers.c (scm_less_p): Don't convert frac to float for compares,
2162 can give bad results due to rounding.
2163
2164 * stime.c (scm_current_time, scm_gettimeofday): Add a comment about
2165 setzone/restorezone protection for DOS.
2166
2167 2003-12-26 Marius Vollmer <mvo@zagadka.de>
2168
2169 * gen-scmconfig.h.in, gen-scmconfig.c: Arrange for scm_t_intmax
2170 and scm_t_uintmax to be defined in scmconfig.h
2171
2172 2003-12-03 Kevin Ryde <user42@zip.com.au>
2173
2174 * numbers.c (scm_less_p): Remove spurious xisnan from frac+big case.
2175
2176 * numbers.c (scm_make_ratio): Check for numerator equal to
2177 SCM_MOST_NEGATIVE_FIXNUM and bignum denominator the negative of that,
2178 giving integer -1.
2179
2180 * numbers.c (scm_real_part): Return fraction unchanged rather than
2181 converting to flonum.
2182
2183 2003-11-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
2184
2185 * modules.c (module_variable): Fixed (and thus simplified) the
2186 definition of SCM_BOUND_THING_P to reflect the fact that since
2187 after the 1.4 series of guile, obarrays only hold variable
2188 objects.
2189
2190 2003-11-30 Marius Vollmer <mvo@zagadka.de>
2191
2192 * numbers.c (scm_logand): It's "#b...", not "#\b...".
2193
2194 From Paul Jarc:
2195
2196 * read.c (scm_lreadr): Signal an error for invalid escape
2197 sequences in strings. Code cleanups too.
2198
2199 * print.c (scm_iprin1): use \xNN hexadecimal sequences when
2200 writing control characters in strings.
2201
2202 2003-11-21 Marius Vollmer <mvo@zagadka.de>
2203
2204 * ports.c (scm_drain_input): Bug fix: only access the port after
2205 checking that it indeed is one.
2206
2207 2003-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
2208
2209 * eval.c (s_bad_define): New static identifier.
2210
2211 (m_body): Fixed comment.
2212
2213 (scm_m_define): Don't generate memoized code for definitions that
2214 are not on the top level. As a consequence, no memoized code at
2215 all is generated for definitions any more: Top level definitions
2216 are executed immediately during memoization and internal
2217 definitions are handled separately in m_expand_body.
2218
2219 (scm_unmemocopy, unmemocopy): Removed code for unmemoizing
2220 definitions. Consequently, there is no unmemoizing code any more
2221 that might modify the environment. Thus, the old scm_unmemocopy
2222 is removed and the old unmemocopy is renamed to scm_unmemocopy.
2223
2224 (SCM_CEVAL): The SCM_IM_DEFINE keyword can no longer occur in
2225 memoized code. Call EVALCAR for continuations. Prefer !SCM_NULLP
2226 over SCM_NIMP in places, where the argument is known to be part of
2227 a proper list.
2228
2229 2003-11-21 Kevin Ryde <user42@zip.com.au>
2230
2231 * numbers.c (scm_abs): Allocate a new real only for negatives, as done
2232 for bignums.
2233
2234 * numbers.c (scm_bit_extract): Use mpz functions, rearrange inum case
2235 to share some shifting.
2236
2237 * numbers.c (scm_integer_expt): Don't mpz_init after scm_i_clonebig or
2238 scm_i_mkbig, since they do so already. Don't mpz_clear a bignum SCM,
2239 since gc does this.
2240
2241 2003-11-19 Marius Vollmer <mvo@zagadka.de>
2242
2243 * numbers.c (scm_make_ratio): Rewritten to have a simpler
2244 structure. Previously, not all cases with a negative denominator
2245 were covered.
2246
2247 * numbers.c (mem2decimal_from_point): use scm_divide instead of
2248 scm_divide2real when forming the fractional part. This allows
2249 "#e1.2" to yield 6/5.
2250
2251 * numbers.c (scm_i_fraction_equalp): Do not treat the return value
2252 of scm_equal_p as a C boolean, use SCM_FALSEP. Previously, all
2253 fractions were equal to each other regardless of value. Ooops.
2254
2255 * numbers.c (scm_rationalize): Return an inexact result when given
2256 inexact arguments.
2257
2258 * numbers.c (scm_exact_p, scm_inexact_p): Throw error for
2259 non-numbers.
2260
2261 2003-11-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2262
2263 Support for exact fractions from Bill Schottstaedt! Thanks!
2264
2265 * print.c (scm_iprin1): Handle fractions.
2266
2267 * objects.h (scm_class_fraction): New.
2268 * objects.c (scm_class_fraction): New.
2269 (scm_class_of): Handle fractions.
2270
2271 * hash.c (scm_hasher): Handle fractions.
2272
2273 * numbers.c: New code for handling fraction all over the place.
2274 (scm_odd_p, scm_even_p): Handle inexact integers.
2275 (scm_rational_p): New function, same as scm_real_p.
2276 (scm_round_number, scm_truncate_number, scm_ceiling, scm_floor):
2277 New exact functions that replace the inexact 'dsubr'
2278 implementations.
2279 (scm_numerator, scm_denominator): New.
2280
2281 * numbers.h (SCM_NUMP): Recognize fractions.
2282 (SCM_FRACTIONP, SCM_SLOPPY_FRACTIONP, SCM_FRACTION_NUMERATOR,
2283 SCM_FRACTION_DENOMINATOR, SCM_FRACTION_SET_NUMERATOR,
2284 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
2285 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
2286 SCM_FRACTION_REDUCED): New.
2287 (scm_floor, scm_ceiling, scm_truncate_number, scm_round_number):
2288 New prototypes.
2289 (scm_make_ratio, scm_rationalize, scm_numerator, scm_denominator,
2290 scm_rational_p): New prototypes.
2291 (scm_i_dbl2num, scm_i_fraction2double, scm_i_fraction_equalp,
2292 scm_i_print_fraction): New prototypes.
2293
2294 * goops.c (create_standard_classes): Create "<fraction>" class.
2295
2296 * gc-mark.c (scm_gc_mark_dependencies): Handle fractions.
2297
2298 * gc-card.c (scm_i_sweep_card): Include scm_tc16_fraction as a
2299 case in the switch, but do nothing for now.
2300
2301 * eval.c (SCM_CEVAL, SCM_APPLY, call_dsubr_1): Convert fractions
2302 to doubles when calling 'dsubr' functions.
2303
2304 * eq.c (scm_eqv_p, scm_equal_p): Handle fractions.
2305
2306 2003-11-18 Rob Browning <rlb@defaultvalue.org>
2307
2308 * gen-scmconfig.c (main): remove public definition of
2309 SCM_SIZEOF___INT64 and SCM_SIZEOF_UNSIGNED___INT64 and add
2310 direct typedef of long_long and ulong_long inside deprecated block
2311 when appropriate.
2312
2313 * deprecated.h: move long_long and ulong_long definitions to
2314 gen-scmconfig.c so that we don't need to add SCM_SIZEOF___INT64
2315 and SCM_SIZEOF_UNSIGNED___INT64 to the public namespace.
2316
2317 2003-11-17 Marius Vollmer <mvo@zagadka.de>
2318
2319 * hash.c (scm_string_hash): New hashing algorithm that takes the
2320 complete string into account.
2321
2322 * eval.c (scm_m_generalized_set_x): Macroexpand the target when it
2323 is a list. This allows (@ ...) to work with set!.
2324 (scm_m_generalized_set_x): Use ASSERT_SYNTAX_2 instead of
2325 SCM_ASSYNT.
2326
2327 * script.c (scm_compile_shell_switches): Use scm_c_read_string for
2328 the "-e" option instead of scm_str2symbol. This allows things
2329 like (@ ...) to be specified for the entry point.
2330
2331 2003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
2332
2333 * eval.c (scm_m_letstar): Create memoized code in place to
2334 minimize consing.
2335
2336 2003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
2337
2338 * eval.c (s_splicing): Commented and reformulated.
2339
2340 (lookup_global_symbol, lookup_symbol): New static functions.
2341
2342 (s_test, s_bindings, s_duplicate_bindings, s_variable): Removed.
2343
2344 (try_macro_lookup, literal_p): Use lookup_symbol instead of
2345 creating a temporary pair for scm_lookupcar.
2346
2347 (scm_unmemocar, unmemocar): Renamed scm_unmemocar to unmemocar,
2348 created deprecated wrapper function scm_unmemocar.
2349
2350 (SCM_VALIDATE_NON_EMPTY_COMBINATION, scm_sym_else,
2351 scm_sym_unquote, scm_sym_uq_splicing, scm_sym_enter_frame,
2352 scm_sym_apply_frame, scm_sym_exit_frame, scm_sym_trace, f_apply,
2353 undefineds, sym_three_question_marks): Moved around without
2354 modifications.
2355
2356 * eval.c, eval.h (scm_macroexp, scm_unmemocar): Deprecated.
2357
2358 2003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
2359
2360 * eval.c (try_macro_lookup, expand_user_macros, is_system_macro_p,
2361 m_expand_body, scm_m_expand_body): Grouped together with m_body.
2362 No further modifications.
2363
2364 2003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
2365
2366 * eval.c (s_mixed_body_forms): New static identifier.
2367
2368 (canonicalize_define, scm_m_define): The check for a bad
2369 expression is performed in canonicalize_define now.
2370
2371 (try_macro_lookup, expand_user_macros, is_system_macro_p): New
2372 static helper functions for m_expand_body.
2373
2374 (m_expand_body): Use ASSERT_SYNTAX to signal syntax errors. Only
2375 expand user defined macros. Fixed handling of the definition/
2376 expression boundary. Fixed handling of definitions grouped with
2377 'begin. Use canonicalize_define to expand definitions.
2378
2379 2003-11-13 Marius Vollmer <mvo@zagadka.de>
2380
2381 * read.c (scm_lreadr): detect EOF after backslash, and interpret
2382 \xNN hexadecimal sequences. From Paul Jarc, thanks!
2383
2384 * snarf.h (SCM_SMOB, SCM_GLOBAL_SMOB, SCM_SMOB_MARK,
2385 SCM_GLOBAL_SMOB_MARK, SCM_SMOB_FREE, SCM_GLOBAL_SMOB_FREE,
2386 SCM_SMOB_PRINT, SCM_GLOBAL_SMOB_PRINT, SCM_SMOB_EQUALP,
2387 SCM_GLOBAL_SMOB_EQUALP, SCM_SMOB_APPLY, SCM_GLOBAL_SMOB_APPLY):
2388 New macros from Paul Jarc. Thanks!
2389
2390 * gc_os_dep.c (scm_get_stack_base): Provide a definition that
2391 return NULL when the machine type is unknown. Previously,
2392 gc_os_dep.c would refuse to compile.
2393
2394 2003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
2395
2396 * eval.c (scm_m_body, m_body, scm_m_lambda, memoize_named_let,
2397 scm_m_let, scm_m_letrec, m_expand_body): Renamed static function
2398 scm_m_body to m_body.
2399
2400 2003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
2401
2402 * eval.c, eval.h (scm_m_expand_body, m_expand_body): Deprecated
2403 public use of scm_m_expand_body in eval.h. In eval.c, renamed
2404 scm_m_expand_body to m_expand_body and made it static. Added
2405 deprecated wrapper scm_m_expand_body.
2406
2407 (scm_eval_body, SCM_CEVAL, SCM_APPLY): Use m_expand_body instead
2408 of scm_m_expand_body.
2409
2410 2003-11-09 Kevin Ryde <user42@zip.com.au>
2411
2412 * dynl.c (scm_dynamic_unlink): Need scm_list_1 on error message
2413 argument. Reported by Mike Gran.
2414
2415 2003-11-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
2416
2417 * eval.c (s_missing_body_expression): New static identifier.
2418
2419 (s_body): Removed.
2420
2421 (scm_m_expand_body): Fixed core dump when passing a body with
2422 defines, but without expressions (see additions to syntax.test).
2423 Use ASSERT_SYNTAX to signal syntax errors.
2424
2425 2003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
2426
2427 * eval.c (canonicalize_define): New static helper function.
2428
2429 (memoize_define, canonicalize_define): Extract handling of
2430 function currying to canonicalize_define.
2431
2432 2003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
2433
2434 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
2435 Make sure that error checking in debug mode is not worse than in
2436 standard mode.
2437
2438 2003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
2439
2440 * eval.c (scm_m_body, scm_m_lambda): Documentation strings are not
2441 handled in scm_m_body any more, but rather in scm_m_lambda.
2442
2443 (scm_m_body, memoize_named_let, scm_m_let, scm_m_letstar,
2444 scm_m_letrec, scm_m_expand_body): Check for validity is done by
2445 calling functions of scm_m_body.
2446
2447 (scm_m_lambda): Avoid unnecessary consing when creating the
2448 memoized code.
2449
2450 2003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
2451
2452 * eval.c (s_expression): Added comment.
2453
2454 (s_empty_combination, error_unbound_variable): New static
2455 identifiers.
2456
2457 (SCM_VALIDATE_NON_EMPTY_COMBINATION, SCM_EVALIM2, scm_lookupcar1):
2458 Use ASSERT_SYNTAX, syntax_error or error_unbound_variable to
2459 signal syntax errors.
2460
2461 (SCM_CEVAL): Separated handling of evaluator bytecodes and other
2462 scheme objects.
2463
2464 2003-10-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
2465
2466 * eval.c (unmemocar, sym_three_question_marks, scm_unmemocar):
2467 Grouped together with unmemocopy, without modifications.
2468
2469 (build_binding_list, unmemocopy): Renamed names of list arguments
2470 and variables to reflect the actual order of the list elements.
2471
2472 2003-10-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
2473
2474 * eval.c (s_defun): New static identifier.
2475
2476 (scm_m_nil_cond, scm_m_atfop, scm_m_undefine): Add comments. Use
2477 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
2478 when creating the memoized code.
2479
2480 2003-10-19 Kevin Ryde <user42@zip.com.au>
2481
2482 * numbers.c (scm_ash): Revise docstring as per recent update to manual.
2483
2484 * numbers.c (scm_i_big2dbl): Rewrite, carefully rounding to "closest"
2485 in accordance with R5RS, which just mpz_get_d doesn't really give.
2486
2487 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
2488
2489 * eval.c (s_bad_slot_number): New static identifier.
2490
2491 (scm_m_atslot_ref, scm_m_atslot_set_x): Use ASSERT_SYNTAX to
2492 signal syntax errors. Avoid unnecessary consing when creating the
2493 memoized code.
2494
2495 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
2496
2497 * eval.c (scm_m_cont, scm_m_at_call_with_values,
2498 scm_m_generalized_set_x): Use ASSERT_SYNTAX to signal syntax
2499 errors. Avoid unnecessary consing when creating the memoized
2500 code.
2501
2502 (scm_m_generalized_set_x): Let scm_m_set_x handle the R5RS
2503 standard case. Make sure line and file information are copied to
2504 every created expression.
2505
2506 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
2507
2508 * eval.c (scm_m_set_x, scm_m_apply, scm_m_atbind): Use
2509 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
2510 when creating the memoized code.
2511
2512 (scm_m_atbind): Reversed the order, in which the init expressions
2513 are stored and executed. The order of execution is now equal to
2514 the order in which the initializers of the let-forms are executed.
2515 Use check_bindings and transform_bindings.
2516
2517 (SCM_CEVAL): Eliminated SCM_NIMP in favor of more appropriate
2518 !SCM_NULLP. Added some comments.
2519
2520 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
2521
2522 * eval.c: Sorted include files alphabetically.
2523
2524 (scm_m_begin): Added comment.
2525
2526 (scm_m_or): Use ASSERT_SYNTAX to signal syntax errors. Avoid
2527 unnecessary consing when creating the memoized code.
2528
2529 (iqq, scm_m_quasiquote, scm_m_quote): Use ASSERT_SYNTAX to signal
2530 syntax errors. Be more specific about the kind of error that was
2531 detected.
2532
2533 (scm_m_quote, unmemocopy): As an optimization, vector constants
2534 are now inserted unquoted into the memoized code. During
2535 unmemoization the quotes are added again to provide syntactically
2536 correct code.
2537
2538 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
2539
2540 * eval.c (scm_m_let, scm_m_letstar, scm_m_letrec,
2541 scm_m_expand_body, check_bindings): Extracted syntax checking of
2542 bindings to new static function check_bindings.
2543
2544 (scm_m_let, memoize_named_let): Extracted handling of named let to
2545 new static function memoize_named_let.
2546
2547 (transform_bindings, scm_m_let, scm_m_letstar, scm_m_letrec): Use
2548 ASSERT_SYNTAX to signal syntax errors. Be more specific about the
2549 kind of error that was detected. Avoid use of SCM_CDRLOC. Avoid
2550 unnecessary consing when creating the memoized code.
2551
2552 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
2553
2554 * eval.c (s_bad_formals, s_bad_formal, s_duplicate_formal): New
2555 static identifiers.
2556
2557 (s_clauses, s_formals, s_duplicate_formals): Removed.
2558
2559 (scm_m_lambda): Use ASSERT_SYNTAX to signal syntax errors. Be more
2560 specific about the kind of error that was detected. Prepare for
2561 easier integration of changes for separated memoization.
2562
2563 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
2564
2565 * eval.c (s_duplicate_binding): New static identifier.
2566
2567 (scm_m_case): Call scm_c_memq instead of implementing it inline.
2568
2569 (scm_m_define): Added comment about how we check for duplicate
2570 formals.
2571
2572 (scm_m_do): Added check for duplicate bindings.
2573
2574 (scm_m_if): Use ASSERT_SYNTAX to signal syntax errors. Avoid
2575 unnecessary consing when creating the memoized code.
2576
2577 (scm_c_improper_memq, c_improper_memq, scm_m_lambda): Renamed
2578 scm_c_improper_memq to c_improper_memq, since it is not exported.
2579
2580 (transform_bindings): Call scm_c_memq rather than
2581 scm_c_improper_memq.
2582
2583 (SCM_CEVAL): Simplified handling of SCM_IM_IF forms.
2584
2585 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
2586
2587 * eval.c (s_bad_bindings, s_bad_binding, s_bad_exit_clause): New
2588 static identifiers.
2589
2590 (scm_m_do): Use ASSERT_SYNTAX to signal syntax errors. Be more
2591 specific about the kind of error that was detected. Avoid use of
2592 SCM_CDRLOC. Avoid unnecessary consing when creating the memoized
2593 code, this way also making sure that file name, line number
2594 information etc. remain available.
2595
2596 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
2597
2598 * eval.c (memoize_as_thunk_prototype): New static function.
2599
2600 (scm_m_delay, scm_m_future): Use memoize_as_thunk_prototype.
2601 Avoid unnecessary consing when creating the memoized code.
2602
2603 2003-10-12 Kevin Ryde <user42@zip.com.au>
2604
2605 * list.c (scm_append): Track argument number and use in error.
2606
2607 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
2608
2609 * eval.c (s_missing_expression, s_bad_variable): New static
2610 identifiers.
2611
2612 (scm_m_define): Use ASSERT_SYNTAX to signal syntax errors. Prefer
2613 R5RS terminology for the naming of variables. Be more specific
2614 about the kind of error that was detected. Make sure file name,
2615 line number etc. are added to all freshly created expressions.
2616 Avoid unnecessary consing when creating the memoized code.
2617
2618 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
2619
2620 * eval.c (s_extra_expression, s_misplaced_else_clause,
2621 s_bad_cond_clause, s_missing_recipient): New static identifiers.
2622
2623 (s_extra_case_clause): Removed.
2624
2625 (scm_m_case, scm_m_cond): If a clause appears after an else
2626 clause, report a misplaced else clause.
2627
2628 (scm_m_cond): Use ASSERT_SYNTAX to signal syntax errors. Be more
2629 specific about the kind of error that was detected. Handle bound
2630 'else and '=>. Avoid unnecessary consing when creating the
2631 memoized code.
2632
2633 (scm_m_cond, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
2634 the syntactic keyword 'else and SCM_IM_ARROW to memoize the
2635 syntactic keyword '=>.
2636
2637 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
2638
2639 * eval.c (scm_m_case): Allow empty lists of case labels.
2640
2641 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
2642
2643 * tags.h (SCM_IM_ELSE, SCM_IM_ARROW): New memoizer codes.
2644
2645 * print.c (scm_isymnames): Add names for the new memoizer codes.
2646
2647 * eval.c (s_missing_clauses, s_bad_case_clause,
2648 s_extra_case_clause, s_bad_case_labels, s_duplicate_case_label,
2649 literal_p): New static identifiers.
2650
2651 (scm_m_case): Use ASSERT_SYNTAX to signal syntax errors. Be more
2652 specific about the kind of error that was detected. Check for
2653 duplicate case labels. Handle bound 'else. Avoid unnecessary
2654 consing when creating the memoized code.
2655
2656 (scm_m_case, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
2657 the syntactic keyword 'else.
2658
2659 2003-10-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
2660
2661 * eval.c (s_bad_expression, syntax_error_key, syntax_error,
2662 ASSERT_SYNTAX, ASSERT_SYNTAX_2): New static identifiers.
2663
2664 (scm_m_and): Use ASSERT_SYNTAX to signal syntax errors. Avoid
2665 unnecessary consing when creating the memoized code.
2666
2667 2003-10-09 Kevin Ryde <user42@zip.com.au>
2668
2669 * numbers.c (scm_inexact_to_exact): Don't depend on what double->long
2670 cast gives for values bigger than a long, or for nan or inf.
2671
2672 2003-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
2673
2674 * smob.h (scm_make_smob_type): Made the declaration match the
2675 definition.
2676
2677 2003-10-07 Marius Vollmer <mvo@zagadka.de>
2678
2679 * goops.c, objects.h, smob.c, smob.h: Make type names char
2680 const * instead of char *. Thanks to Paul Jarc!
2681
2682 2003-10-02 Kevin Ryde <user42@zip.com.au>
2683
2684 * strports.c (scm_call_with_output_string): scm_get_output_string
2685 rather than scm_strport_to_string, so as to guard against the port
2686 having been closed by the called procedure. Reported by Nic Ferrier.
2687
2688 2003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
2689
2690 * numbers.h (SCM_INEXACTP): Removed uses of SCM_TYP16S.
2691
2692 * tags.h, deprecated.h (SCM_TYP16S): Deprecated and moved from
2693 tags.h to deprecated.h.
2694
2695 2003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
2696
2697 This set of patches introduces a new tc7 code scm_tc7_number for
2698 numbers. Bignums, reals and complex numbers are turned from smobs
2699 into subtypes of scm_tc7_number.
2700
2701 * tags.h (scm_tc7_number): New.
2702
2703 * eq.c (scm_equal_p), eval.c (SCM_CEVAL), evalext.c
2704 (scm_self_evaluating_p), gc-card.c (scm_i_sweep_card), gc-mark.c
2705 (scm_gc_mark_dependencies), goops.c (create_smob_classes), hash.c
2706 (scm_hasher), numbers.c, numbers.h (SCM_NUMP), objects.c
2707 (scm_class_of), print.c (scm_iprin1), smob.c
2708 (scm_smob_prehistory): Don't handle bignums, reals and complex
2709 numbers as subtypes of scm_tc7_smob any more.
2710
2711 * numbers.h, tags.h (scm_tc16_big, scm_tc16_real,
2712 scm_tc16_complex): Moved definitions from tags.h to numbers.h.
2713
2714 2003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
2715
2716 * numbers.c (scm_make_complex), gc-card.c (scm_i_sweep_card): Use
2717 sizeof (scm_t_complex) to determine the memory size of the
2718 malloc'd area for complex numbers.
2719
2720 2003-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
2721
2722 * numbers.c (scm_bigequal): Fixed.
2723
2724 2003-09-16 Marius Vollmer <mvo@zagadka.de>
2725
2726 * stime.c (scm_current_time): 'time' does not set errno so don't
2727 use SCM_SYSERROR for reporting errors.
2728
2729 2003-09-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
2730
2731 This set of patches eliminates the dependency between the
2732 implementation of evaluator specific memoization codes and special
2733 constants like #f, '() etc. ('flags'), which are not evaluator
2734 specific. The goal is to remove definitions of evaluator
2735 memoization codes completely from the public interface. This will
2736 make it possible to experiment more freely with optimizations of
2737 guile's internal representation of memoized code.
2738
2739 * objects.c (scm_class_of): Eliminate dependency on SCM_ISYMNUM.
2740
2741 * print.c (iflagnames): New array, holding the printed names of
2742 guile's special constants ('flags').
2743
2744 (scm_isymnames): Now holds only the printed names of the
2745 memoization codes.
2746
2747 (scm_iprin1): Separate the handling of memoization codes and
2748 guile's special constants.
2749
2750 * tags.h (scm_tc9_flag, SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA,
2751 SCM_IFLAGNUM): new
2752
2753 (scm_tc8_char, scm_tc8_iloc, SCM_BOOL_F, SCM_BOOL_T,
2754 SCM_UNDEFINED, SCM_EOF_VAL, SCM_EOL, SCM_UNSPECIFIED, SCM_UNBOUND,
2755 SCM_ELISP_NIL, SCM_IM_DISPATCH, SCM_IM_SLOT_REF,
2756 SCM_IM_SLOT_SET_X, SCM_IM_DELAY, SCM_IM_FUTURE,
2757 SCM_IM_CALL_WITH_VALUES, SCM_IM_NIL_COND, SCM_IM_BIND): Changed
2758 values.
2759
2760 (SCM_IFLAGP): SCM_IFLAGP now only tests for flags.
2761
2762 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Generalized to use the
2763 tc9 macros and scm_tc9_flag.
2764
2765 2003-09-15 Marius Vollmer <mvo@zagadka.de>
2766
2767 * posix.c (scm_setgroups): Check that the gid list is not too
2768 long. Thanks to Paul Jarc!
2769
2770 2003-09-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
2771
2772 * tags.h: Reduced the number of short instructions from 14 to 13.
2773 The typecode of the former 14th short instruction is now used to
2774 represent long instructions. Changed some comments to reflect
2775 this fact.
2776
2777 (SCM_MAKISYM): ISYMs get a new tc7 code, namely the one that was
2778 previously used by SCM_IM_DEFINE.
2779
2780 (SCM_IM_DEFINE): Turned into a long instruction.
2781
2782 * eval.c (unmemocopy, SCM_CEVAL): Treat SCM_IM_DEFINE as a long
2783 instruction.
2784
2785 * eval.c (SCM_CEVAL): Since characters and iflags have now a tc7
2786 code that is separate from all instructions, one level of dispatch
2787 for long instructions can be eliminated.
2788
2789 * print.c (scm_isymnames): Removed some commented code.
2790
2791 2003-09-12 Marius Vollmer <mvo@zagadka.de>
2792
2793 * __scm.h (SCM_FENCE): Use __memory_barrier with the Intel
2794 compiler on IA64.
2795
2796 * hashtab.h (scm_tc16_hashtable): Added "extern" declaration.
2797
2798 * modules.c (scm_module_reverse_lookup): Check that the obarray
2799 really is a hashtable and do nothing if not.
2800
2801 * inline.h: Use "extern inline" only with GCC. Use "static
2802 inline" else.
2803
2804 2003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
2805
2806 * numbers.h (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Removed uses
2807 of SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
2808
2809 * numbers.h, deprecated.h (SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP,
2810 SCM_SLOPPY_COMPLEXP): Deprecated and moved from numbers.h to
2811 deprecated.h.
2812
2813 2003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
2814
2815 * eq.c (scm_eqv_p, scm_equal_p): Removed uses of
2816 SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
2817
2818 * eq.c (scm_eqv_p, scm_equal_p): Reordered comparisons from
2819 0.0==some_expression to some_expression==0.0. The latter is
2820 better readable. The former is preferred by some people, since it
2821 leads to a compiler error when confusing == with =. However, when
2822 using gcc, a warning will be issued if in an if-statement an
2823 assigment appears. Since many Guile developers are using gcc,
2824 such errors will not remain unnoticed anyway. We can therefore
2825 focus on better readability.
2826
2827 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
2828
2829 * tags.h: Added description of Guile's type system. Removed some
2830 old and misleading comments.
2831
2832 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
2833
2834 * unit.c (scm_cvref): Eliminate unnecessary uses of SCM_NIMP,
2835 SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
2836
2837 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
2838
2839 * numbers.h (SCM_MAKINUM): Define in terms of scm_tc2_int.
2840
2841 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Define in terms of the
2842 respective SLOPPY macro.
2843
2844 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
2845
2846 * eq.c (scm_equal_p): Use SCM_TYP7 to check if an object is of
2847 type string, not SCM_TYP7S.
2848
2849 2003-09-03 Kevin Ryde <user42@zip.com.au>
2850
2851 * numbers.c (scm_lognot): Correction to docstring, ones-complement not
2852 2s-complement.
2853
2854 * stime.c (scm_strptime): Add comment about glibc strptime %s and
2855 current timezone requiring SCM_DEFER_INTS.
2856
2857 2003-08-30 Neil Jerram <neil@ossau.uklinux.net>
2858
2859 * script.c (scm_compile_shell_switches): Make -s switch optional
2860 if file to be loaded does not begin with a `-'. (Thanks to Aaron
2861 VanDevender for the patch!)
2862
2863 2003-08-30 Kevin Ryde <user42@zip.com.au>
2864
2865 * numbers.c (scm_lognot): Rewrite using ~ and mpz_com, for directness
2866 and to have non-integer types rejected as per other logical funcs.
2867
2868 2003-08-28 Kevin Ryde <user42@zip.com.au>
2869
2870 * gc.h (scm_remember_upto_here_1): Revise comments on the asm form.
2871
2872 2003-08-23 Kevin Ryde <user42@zip.com.au>
2873
2874 * simpos.c (scm_system): Remove SCM_DEFER_INTS, system() should be
2875 thread safe, and could take a long time too.
2876
2877 2003-08-22 Kevin Ryde <user42@zip.com.au>
2878
2879 * numbers.c (scm_difference): Correction to bignum - negative inum.
2880
2881 2003-08-14 Kevin Ryde <user42@zip.com.au>
2882
2883 * gc.h (scm_remember_upto_here_1, scm_remember_upto_here_2)
2884 [__GNUC__]: Use volatile asm macros rather than a function call.
2885 * gc.c (scm_remember_upto_here_1, scm_remember_upto_here_2): Undefine
2886 macros while defining functions.
2887
2888 * simpos.c (getenv): Use <stdlib.h> for prototype.
2889 (scm_system): In docstring, refer to status:exit-val rather than
2890 "functions above".
2891
2892 2003-08-09 Kevin Ryde <user42@zip.com.au>
2893
2894 * srcprop.c (scm_source_properties): Return plist from hash if it's a
2895 list set by source-properties! rather than an SRCPROPS object,
2896
2897 2003-07-29 Kevin Ryde <user42@zip.com.au>
2898
2899 * properties.c (scm_primitive_property_ref): In docstring, note
2900 parameters to not-found-proc, use hyphens rather than underscores for
2901 that parameter name.
2902 (scm_primitive_property_set_x): In docstring, VAL is the value
2903 parameter not CODE.
2904
2905 2003-07-27 Marius Vollmer <mvo@zagadka.de>
2906
2907 * print.c (scm_print_symbol_name): handle more weird characters by
2908 escaping the symbol name properly. Thanks to Paul Jarc!
2909
2910 * posix.h (scm_setgroups): New prototype.
2911 * posix.c (scm_setgroups): New. Thanks to Paul Jarc!
2912 (scm_getgroups): Handle groups ids that don't fit into a fixnum.
2913 Don't use SCM_WRITABLE_VELTS.
2914
2915 * gc.h (SCM_GC_SET_CELL_BVEC): New.
2916 * gc-card.c (scm_i_init_card_freelist): Use it. Thanks to
2917 Matthias Koeppe!
2918
2919 * __scm.h (SCM_C_INLINE_KEYWORD): New.
2920 * numbers.c: Use it in place of SCM_C_INLINE so that the code
2921 compiles when SCM_C_INLINE is undefined.
2922
2923 2003-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
2924
2925 * __scm.h: Reformulated the architecture and compiler properties
2926 in terms of properties of scm_t_bits and SCM variables rather than
2927 in terms of c standard types. This is since it is not known which
2928 of the standard types scm_t_bits and SCM variables will be defined
2929 to.
2930
2931 2003-07-24 Kevin Ryde <user42@zip.com.au>
2932
2933 * numbers.c (scm_angle): Use scm_flo0 for non-negative inum, bignum
2934 and real.
2935
2936 2003-07-18 Kevin Ryde <user42@zip.com.au>
2937
2938 * numbers.c (scm_product): In complex * bignum, correction to
2939 REAL/IMAG fetch, x is the complex, not y.
2940
2941 2003-07-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2942
2943 * numbers.c (scm_odd_p, scm_even_p): Bugfix: Treat result of
2944 scm_inf_p test as Scheme values.
2945 (scm_sum): Bugfix: Normalize bignum created from a negative bignum
2946 and a positive inum.
2947 Use GNU indentation style.
2948
2949 2003-07-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
2950
2951 * values.c (scm_values): Build lists of length 1 by using
2952 scm_list_1 instead of using scm_cons.
2953
2954 2003-07-10 Kevin Ryde <user42@zip.com.au>
2955
2956 * deprecation.c (scm_c_issue_deprecation_warning_fmt): Add va_end.
2957 * list.c (scm_list_n): Ditto.
2958
2959 * gc-malloc.c (scm_gc_realloc): Define "ptr" at start of function.
2960
2961 2003-07-08 Matthias Koeppe <mkoeppe@merkur.math.uni-magdeburg.de>
2962
2963 * tags.h (scm_t_bits, scm_t_signed_bits, etc): Avoid solaris empty
2964 defines of INTPTR_MAX and UINTPTR_MAX, combine conditionals for
2965 scm_t_bits and scm_t_signed_bits to avoid any chance of one and not
2966 the other using intptr_t.
2967
2968 2003-07-08 Kevin Ryde <user42@zip.com.au>
2969
2970 * numbers.c (scm_make_polar): Use sincos, when available.
2971 (scm_magnitude): Use hypot.
2972
2973 * ports.c (scm_char_ready_p, scm_peek_char): In docstrings, don't use
2974 @footnote since it doesn't go through to guile-procedures.txt.
2975
2976 * threads.c (scm_call_with_new_thread): In docstring, use "( )"
2977 outside @var to quieten makeinfo, and use @code.
2978
2979 2003-07-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2980
2981 * gc-malloc.c (decrease_mtrigger): new function
2982 (increase_mtrigger): new function, separate debug registering and
2983 mtrigger administration.
2984 (scm_gc_realloc): bugfix: do mtrigger administration before the
2985 actual realloc, for the realloc might invalidate a GC-d segment of
2986 memory. Thanks to Sam Hocevar for pointing this out.
2987 (scm_gc_realloc): use scm_malloc_reregister instead of
2988 unregistering and registering in sequence.
2989
2990 2003-07-03 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2991
2992 * __scm.h (SCM_ASSERT): change "else" expansion to "do { } while (0)"
2993
2994 2003-07-02 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2995
2996 * __scm.h (SCM_ASRTGO): add "else" to macro expansions with if
2997 clauses.
2998
2999 2003-06-29 Marius Vollmer <mvo@zagadka.de>
3000
3001 * deprecated.h (SCM_OPDIRP, scm_fport, scm_option, scm_srcprops,
3002 scm_srcprops_chunk, scm_info_frame, scm_stack, scm_array,
3003 scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_FUNC_NAME, SCM_WTA,
3004 RETURN_SCM_WTA, SCM_VALIDATE_NUMBER_COPY,
3005 SCM_VALIDATE_NUMBER_DEF_COPY, SCM_VALIDATE_OPDIR): Re-added from
3006 the release_1_6 branch.
3007
3008 2003-06-25 Stefan Jahn <stefan@lkcc.org>
3009
3010 * continuations.c: Redeclaration of getcontext() via the
3011 __asm__ ("getcontext") directive.
3012
3013 * continuations.h: Include <ucontext.h> instead of
3014 <sys/ucontext.h>.
3015
3016 2003-06-21 Kevin Ryde <user42@zip.com.au>
3017
3018 * numbers.c (_GNU_SOURCE): #define, to get C99 things.
3019 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, $asinh, $acosh,
3020 $atanh, truncate): Use C library asinh, acosh, atanh and trunc, when
3021 available.
3022 (scm_inexact_to_exact): Expand isfinite to its definition !xisinf.
3023 (isfinite): Remove, conflicts with C99 isfinite().
3024
3025 2003-06-19 Marius Vollmer <mvo@zagadka.de>
3026
3027 * deprecated.h, deprecated.c (scm_strhash, scm_sym2ovcell_soft,
3028 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
3029 scm_symbol_value0, scm_string_to_obarray_symbol scm_intern_symbol,
3030 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
3031 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp): Re-added from
3032 the release_1_6 branch.
3033
3034 2003-06-14 Stefan Jahn <stefan@lkcc.org>
3035
3036 * threads.h: Redefined scm_getspecific() and scm_setspecific()
3037 to be functions instead of macros.
3038
3039 * threads.c: Conditionalized inclusion of <sys/time.h> and
3040 <unistd.h>.
3041 (scm_getspecific, scm_setspecific): Made these two function
3042 real part of the API.
3043
3044 * posix.c (s_scm_putenv): Added some code to make a
3045 (putenv "FOO="), i.e. setting an empty string, work also on
3046 Win32 systems. Thanks to Kevin Ryde for the proposal.
3047
3048 2003-06-12 Kevin Ryde <user42@zip.com.au>
3049
3050 * posix.c (scm_putenv): Free temporary ptr in mingw unset. Add
3051 freebsd to comment about need to use unsetenv.
3052
3053 2003-06-02 Marius Vollmer <mvo@zagadka.de>
3054
3055 * ports.c (scm_peek_char): Safe the column of the port around the
3056 getc/ungetc calls. Thanks to Dr. Peter Ivanyi!
3057
3058 2003-06-07 Kevin Ryde <user42@zip.com.au>
3059
3060 * tags.h: Use inttypes.h and stdint.h when available, for INTPTR_MAX
3061 and friends required by scm_t_bits setups.
3062
3063 2003-06-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
3064
3065 * tags.h (scm_tc2_int): Added.
3066
3067 * tags.h (scm_tc3_int_1, scm_tc3_int_2): Expressed in terms of
3068 scm_tc2_int.
3069
3070 * tags.h (scm_tcs_cons_imcar, scm_tcs_cons_nimcar, scm_tcs_struct,
3071 scm_tcs_closures): Hard coded values replaced by symbolic ones.
3072
3073 2003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
3074
3075 * eval.c: Partially undid my patch from 2003-05-31. This patch
3076 caused the segfault referenced in the previous changelog entry.
3077
3078 2003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
3079
3080 * tags.h: Fixed comment about the immediate type code layout.
3081
3082 * eval.c: Fixed handling of non-special instructions. Without
3083 this patch, guile will segfault on (#\0) and similar instructions.
3084
3085 2003-06-05 Kevin Ryde <user42@zip.com.au>
3086
3087 * numbers.c (scm_max, scm_min): For inum, bignum and real, if other
3088 operand is NaN, then return NaN. Also avoid passing NaN to mpz_cmp_d.
3089
3090 * read.c (scm_input_error): Pass arg list parameter to scm_error_scm,
3091 rather than SCM_EOL. Needed by "Unknown # object" case in scm_lreadr.
3092
3093 2003-06-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
3094
3095 * __scm.h, gc-card.c (SCM_DEBUG_DEBUGGER_SUPPORT,
3096 SCM_DEBUG_DEBUGGING_SUPPORT): Renamed macro
3097 SCM_DEBUG_DEBUGGER_SUPPORT to SCM_DEBUG_DEBUGGING_SUPPORT and
3098 generalized it to apply not only to C level functions but also to
3099 scheme level functions.
3100
3101 * debug.c, debug.h, eval.c (make-iloc, scm_make_iloc, iloc?,
3102 scm_iloc_p, dbg-make-iloc, scm_dbg_make_iloc, dbg-iloc?,
3103 scm_dbg_iloc_p): Moved functions scm_make_iloc, scm_iloc_p to
3104 eval.c, made them available under SCM_DEBUG_DEBUGGING_SUPPORT == 1
3105 only and renamed them to scm_dbg_make_iloc, scm_dbg_iloc_p,
3106 respectively.
3107
3108 * deprecated.h, eval.c, eval.h (SCM_ILOC00, SCM_IDINC,
3109 SCM_IDSTMSK): Deprecated. The macro definitions are moved from
3110 eval.h into eval.c and a copy is placed into deprecated.h.
3111
3112 * eval.c, eval.h (SCM_MAKE_ILOC): Removed from eval.h and placed
3113 into eval.c. This definition was not part of the API in any
3114 officially released version of guile and thus does not need to go
3115 through a phase of deprecation.
3116
3117 2003-06-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
3118
3119 * deprecated.c, deprecated.h, eval.c, eval.h (scm_s_expression,
3120 scm_s_test, scm_s_body, scm_s_bindings, scm_s_variable,
3121 scm_s_clauses, scm_s_formals): Deprecated. In eval.c the
3122 definitions are make static and renamed from scm_s_xxx to s_xxx.
3123 In deprecated.c the original definitions are copied.
3124
3125 * deprecated.h, eval.c, eval (SCM_EVALIM2, SCM_EVALIM, SCM_XEVAL,
3126 SCM_XEVALCAR): Deprecated. The macro definitions are moved from
3127 eval.h into eval.c and a copy (slightly modified to work in user
3128 code) is placed into deprecated.h.
3129
3130 * eval.c: Use the local static s_xxx definitions instead of the
3131 scm_s_xxx definitions throughout.
3132
3133 2003-06-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
3134
3135 This set of patches separates the representation of the cxr family
3136 of functions (car, cdr etc.) from the dsubr family of functions
3137 (i. e. functions that take a double precision floating point
3138 argument). Further, the algorithm for handling the cxr function
3139 is improved.
3140
3141 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_1), numbers.c
3142 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, scm_round, floor,
3143 ceil, sqrt, fabs, exp, log, sin, cos, tan, asin, acos, atan, sinh,
3144 cosh, tanh), objects.c (scm_class_of), procprop.c
3145 (scm_i_procedure_arity), ramap.c (scm_array_map_x), tags.h
3146 (scm_tc7_dsubr, scm_tcs_subrs): Introduce scm_tc7_dsubr as new
3147 typecode for the dsubr family of functions.
3148
3149 * ramap.c (ramap_cxr, ramap_dsubr): Renamed ramap_cxr to
3150 ramap_dsubr.
3151
3152 * eval.c (SCM_CEVAL, SCM_APPLY, call_cxr_1), pairs.c
3153 (scm_init_pairs): Make use of the (now usable) second cell element
3154 of a scm_tc7_cxr function to implement the cxr family of functions
3155 more efficiently.
3156
3157 2003-05-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
3158
3159 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_0,
3160 scm_trampoline_1, scm_trampoline_2): Postpone error cases to the
3161 end of an if-else-if-sequence of checks.
3162
3163 2003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
3164
3165 * eval.c (SCM_CEVAL): Improved readability of call-with-values
3166 execution. Generalize apply_closure to apply_proc and use that
3167 for call-with-values.
3168
3169 2003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
3170
3171 * eval.c (SCM_CEVAL): Avoid one level of indirection when applying
3172 a non closure.
3173
3174 2003-05-30 Stefan Jahn <stefan@lkcc.org>
3175
3176 * posix.c (s_scm_putenv): Use the new HAVE_UNSETENV
3177 appropriately for mingw32 hosts.
3178
3179 * numbers.h: Defining copysign(), isnan() and finite() to
3180 be prefixed by a single '_' for mingw32 hosts.
3181
3182 2003-05-30 Kevin Ryde <user42@zip.com.au>
3183
3184 * numbers.c (z_negative_one): New variable.
3185 (scm_init_numbers): Initialize it.
3186 (scm_logcount): Use it and mpz_hamdist to count zeros for negatives.
3187
3188 2003-05-29 Stefan Jahn <stefan@lkcc.org>
3189
3190 * win32-dirent.c: Use malloc() instead of scm_malloc().
3191
3192 * stime.c (s_scm_strftime): Add a type cast to avoid compiler
3193 warning.
3194
3195 * posix.c (s_scm_putenv): Disable use of unsetenv() for the
3196 mingw32 build.
3197
3198 * modules.c (s_scm_module_import_interface): Renamed local
3199 variable interface to _interface. Seems like 'interface'
3200 is a special compiler directive for the mingw32 compiler.
3201
3202 * mkstemp.c: Provide prototype to avoid compiler warning.
3203
3204 * load.c (s_scm_search_path): Fixed absolute and relative
3205 path detections for native Windows platforms.
3206
3207 * gc.h, threads.h: Export some more symbols using SCM_API (necessary
3208 to build on mingw32).
3209
3210 * gc-freelist.c ("s_scm_map_free_list",
3211 "s_scm_gc_set_debug_check_freelist_x"): Fixed use of FUNC_NAME.
3212
3213 * fports.c (fport_fill_input): Disable use of
3214 fport_wait_for_input() on Win32 platforms.
3215
3216 * filesys.c (s_scm_basename): Fixed __MINGW32__ code.
3217
3218 * Makefile.am: Modified some rules for cross compiling.
3219
3220 2003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
3221
3222 * eval.c (SCM_CEVAL): In case of an application, all checks for a
3223 proper function object and the correct number of arguments are now
3224 performed in the application part of SCM_CEVAL.
3225
3226 (scm_badformalsp): Removed.
3227
3228 2003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
3229
3230 * deprecated.c (scm_read_and_eval_x): Fixed C99-ism.
3231
3232 2003-05-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
3233
3234 * num2integral.i.c (NUM2INTEGRAL): Avoid warning about conditional
3235 always being false by inserting preprocessor conditional. (Thanks
3236 to Bruce Korb.)
3237
3238 * __scm.h (SCM_STACK_PTR): New macro. (Cast argument through
3239 (void *) in order to avoid an aliasing warning; thanks to Bruce
3240 Korb.)
3241
3242 * stackchk.h (SCM_STACK_OVERFLOW_P): Use SCM_STACK_PTR.
3243
3244 * threads.c (suspend, launch_thread, scm_threads_mark_stacks): Use
3245 SCM_STACK_PTR.
3246
3247 * threads.c (scm_threads_mark_stacks): Bugfix: Changed
3248 thread->base --> t->base.
3249
3250 * eval.c (SCM_CEVAL): Don't cast argument of SCM_STACK_OVERFLOW_P.
3251
3252 2003-05-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3253
3254 * deprecated.h, deprecated.c (scm_makstr, scm_makfromstr,
3255 scm_variable_set_name_hint, scm_builtin_variable,
3256 scm_internal_with_fluids, scm_make_gsubr,
3257 scm_make_gsubr_with_generic, scm_create_hook, SCM_LIST0,
3258 SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5, SCM_LIST6,
3259 SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify, scm_sloppy_memq,
3260 scm_sloppy_memv, scm_sloppy_member, scm_read_and_eval_x,
3261 scm_subr_entry, SCM_SUBR_DOC, scm_make_subr,
3262 scm_make_subr_with_generic, scm_make_subr_opt,
3263 scm_call_catching_errors, scm_make_smob_type_mfpe,
3264 scm_set_smob_mfpe, scm_strprint_obj, scm_read_0str, scm_eval_0str,
3265 SCM_CHARS, SCM_UCHARS, SCM_LENGTH): Re-added from the release_1_6
3266 branch. Some have been slightly rewritten.
3267 (scm_i_object_chars, scm_i_object_length): New, to support
3268 SCM_CHARS, SCM_UCHARS, and SCM_LENTH.
3269
3270 2003-05-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
3271
3272 * eval.c (scm_m_do, unmemocopy, SCM_CEVAL): Reversed order of
3273 names and inits in the memoized code of do.
3274
3275 2003-05-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
3276
3277 * c-tokenize.lex (yyget_lineno, yyget_in, yyget_out, yyget_leng,
3278 yyget_text, yyset_lineno, yyset_in, yyset_out, yyget_debug,
3279 yyset_debug, yylex_destroy): Added prototypes (otherwise we'll get
3280 a compilation error if error-on-warning is enabled).
3281
3282 2003-05-17 Marius Vollmer <mvo@zagadka.de>
3283
3284 * c-tokenize.lex: Gobble up complete lines after a '#'. This
3285 removes preprocessor directives from the snarfage that might
3286 otherwise confuse us. These directives appear when compiling with
3287 "-g3", for example.
3288
3289 2003-05-16 Han-Wen Nienhuys <hanwen@cs.uu.nl>
3290
3291 * ChangeLog: add my surname
3292
3293 * srcprop.c (scm_finish_srcprop): use
3294 scm_gc_register_collectable_memory()
3295 (scm_make_srcprops): idem.
3296
3297 2003-05-14 Han-Wen Nienhuys <hanwen@cs.uu.nl>
3298
3299 * gc-malloc.c (scm_gc_register_collectable_memory): avoid
3300 wrap-around for scm_mtrigger
3301 (scm_gc_register_collectable_memory): abort on overflowing
3302 scm_mallocated().
3303
3304 2003-05-13 Kevin Ryde <user42@zip.com.au>
3305
3306 * numbers.c (xmpz_cmp_d): New macro, handling infs if gmp doesn't.
3307 (scm_num_eq_p, scm_less_p, scm_max, scm_min): Use it.
3308
3309 2003-05-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
3310
3311 * backtrace.c (scm_display_error_message): Introduced fancy
3312 printing with max level 7 and length 10. (Purpose: avoid printing
3313 gigantic objects in error messages.)
3314
3315 * print.c, print.h (scm_i_port_with_print_state): New function.
3316
3317 * print.c (scm_iprin1, scm_printer_apply,
3318 scm_port_with_print_state): Use scm_i_port_with_print_state.
3319 (scm_simple_format): Modified not to destroy print states.
3320 (print_state_mutex): New mutex.
3321 (scm_make_print_state, scm_free_print_state, scm_prin1):
3322 Lock/unlock print_state_mutex.
3323
3324 * deprecated.h (SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK):
3325 Use current names in definitions.
3326
3327 2003-05-10 Kevin Ryde <user42@zip.com.au>
3328
3329 * numbers.c (scm_num_eq_p, scm_less_p): Don't pass NaN to mpz_cmp_d.
3330
3331 * numbers.c (scm_integer_length): On negative bignums, adjust
3332 mpz_sizeinbase to account for it looking at absolute value where we
3333 want ones-complement.
3334
3335 * numbers.c (scm_gcd): In bignum/inum, don't pass yy==0 to mpz_gcd_ui
3336 since we're only using the ulong return value, and x might not fit.
3337
3338 2003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
3339
3340 * eval.c, eval.h, read.c, read.h (scm_sym_dot): Moved from eval to
3341 read. This will allow to make the definition in read.c static.
3342
3343 2003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
3344
3345 * eval.c, eval.h, evalext.c, evalext.h (scm_m_undefine): Moved
3346 from evalext to eval. This will allow to make some of the
3347 definitions in eval.c static.
3348
3349 2003-05-06 Kevin Ryde <user42@zip.com.au>
3350
3351 * numbers.c (scm_difference): In inum - bignum, handle negative inum.
3352 (scm_logcount): Use mpz_com, not mpz_neg.
3353
3354 2003-05-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
3355
3356 The purpose of this patch is to make guile's internal memoizers
3357 distinguishable from memoizing macros created on the scheme level
3358 or from user provided primitive memoizing macros. The reason is,
3359 that the internal memoizers are the only ones that are allowed to
3360 transform their scheme input into memoizer byte code, while all
3361 other memoizing macros may only transform scheme code into new
3362 scheme code.
3363
3364 To achieve this, a new macro type 'builtin-macro!' is introduced.
3365 Currently, 'builtin-macro!'s are handled as memoizing macros, but
3366 this will change when the memoizer and executor are separated.
3367
3368 * macros.[ch] (scm_i_makbimacro): New.
3369
3370 * macros.h (SCM_BUILTIN_MACRO_P): New.
3371
3372 * macros.c (macro_print, scm_macro_type): Support builtin-macro!s.
3373
3374 * eval.c, goops.c: All of guile's primitive memoizing macros are
3375 primitive builtin-macros now.
3376
3377 * eval.c (scm_macroexp, SCM_CEVAL): Make sure the primitive
3378 builtin-macros are handled equally to memoizing macros.
3379
3380 2003-05-04 Marius Vollmer <mvo@zagadka.de>
3381
3382 * throw.c (scm_ithrow): Remove "asm volatile" hack. It used to
3383 work around a bug in GCC 2.95.2 but is now a bug in itself.
3384
3385 2003-05-02 Marius Vollmer <mvo@zagadka.de>
3386
3387 * deprecated.h (scm_rstate, scm_rng, SCM_SLOPPY_CONSP,
3388 SCM_SLOPPY_NCONSP, scm_tc7_ssymbol, scm_tc7_msymbol,
3389 scm_tcs_symbols): New.
3390
3391 2003-04-30 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3392
3393 * deprecated.h, deprecated.c (scm_protect_object,
3394 scm_unprotect_object, SCM_SETAND_CAR, SCM_SETOR_CAR,
3395 SCM_SET_AND_CDR, SCM_SET_OR_CDR, SCM_FREEP, SCM_NFREEP,
3396 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
3397 SCM_GCCDR, scm_remember, scm_the_root_module, scm_make_module,
3398 scm_ensure_user_module, scm_load_scheme_module, scm_port,
3399 scm_ptob_descriptor, scm_port_rw_active,
3400 scm_close_all_ports_except): New.
3401
3402 * ports.c (scm_c_port_for_each): New function, mostly copied from
3403 scm_port_for_each.
3404 (scm_port_for_each): Reimplemented using scm_c_port_for_each.
3405 * ports.h (scm_c_port_for_each): New prototype.
3406
3407 2003-04-28 Mikael Djurfeldt <djurfeldt@nada.kth.se>
3408
3409 * eval.c (scm_m_atdispatch): Removed until actually needed. (This
3410 macro was introduced in anticipation of GOOPS method compilation
3411 code.)
3412
3413 * goops.c: Removed binding of @dispatch.
3414
3415 2003-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
3416
3417 * eval.c, goops.c (@dispatch, @slot-ref, @slot-set!): Move the
3418 instructions that bind the macros on the scheme level back to
3419 goops.c in order to make sure again that the bindings go into the
3420 (oop goops) module and are not visible from the outside.
3421
3422 2003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
3423
3424 * eval.c: Non functional change: Separated R5RS and non-R5RS
3425 macros into different sections of the file and ordered the
3426 memoizers alphabetically.
3427
3428 2003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
3429
3430 * eval.c (scm_ilookup): Rewritten to improve readability.
3431
3432 2003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
3433
3434 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
3435 Partially reverted patch from 2003-04-23 in oder to find a better
3436 compromise between readability and debuggability.
3437
3438 2003-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
3439
3440 * eval.c, eval.h, goops.c, goops.h (scm_m_atslot_ref,
3441 scm_m_atslot_set_x, scm_m_atdispatch): Move the declarations and
3442 definitions of the special goops memoizers from goops.[ch] to
3443 eval.[ch]. Hmm... it seems that scm_m_atdispatch is not used
3444 throughout guile.
3445
3446 2003-04-24 Mikael Djurfeldt <mdj@kvast.blakulla.net>
3447
3448 * ports.c, ports.h (scm_i_port_table_mutex): New mutex.
3449
3450 * fports.c (scm_evict_ports): Lock/unlock scm_i_port_table_mutex.
3451
3452 * ports.c (scm_close_port, scm_flush_all_ports): Ditto.
3453
3454 * ioext.c (scm_fdes_to_ports): Ditto.
3455
3456 * vports.c (scm_make_soft_port): Changed SCM_DEFER/ALLOW_INTS into
3457 lock/unlock scm_i_port_table_mutex.
3458
3459 * strports.c (scm_mkstrport): Ditto.
3460
3461 * ports.c (scm_void_port, scm_port_for_each): Ditto.
3462
3463 * fports.c (scm_fdes_to_port): Ditto.
3464
3465 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
3466
3467 This set of patches contains no functional changes, only debatable
3468 minor stylistic ones. Still, in order to prepare a patch between
3469 my local copy and the CVS version, I decided to submit the changes
3470 below. Then, the patch will hopefully only contain relevant
3471 modifications :-)
3472
3473 * eval.c (iqq): Added const specifier.
3474
3475 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
3476 Use NULL instead of 0 to indicate that a pointer is returned.
3477 Removed some misleading 'fall through' comments.
3478
3479 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
3480 Split up long expressions into smaller ones to be more debugging
3481 friendly.
3482
3483 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
3484
3485 * eval.h (SCM_ENTER_FRAME_HDLR, SCM_APPLY_FRAME_HDLR,
3486 SCM_EXIT_FRAME_HDLR): Use SCM_PACK to convert data to a SCM value
3487 rather than casting to SCM.
3488
3489 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
3490
3491 * sort.c, pairs.h: Removed unnecessary includes.
3492
3493 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
3494
3495 * sort.c: Replaced hand-made trampline code by the new official
3496 mechanism from eval.c. This fixes a segfault in the new test file
3497 sort.test.
3498
3499 (quicksort, compare_function, scm_restricted_vector_sort_x,
3500 scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
3501 scm_merge_list_step, scm_sort_x, scm_sort, scm_merge_vector_x,
3502 scm_merge_vector_step, scm_stable_sort_x, scm_stable_sort,
3503 scm_sort_list_x, scm_sort_list): Use trampoline mechanism from
3504 eval.c.
3505
3506 (subr2less, lsubrless, closureless, applyless, scm_cmp_function,
3507 cmp_fun_t): Removed.
3508
3509 (compare_function): Added.
3510
3511 * sort.c (quicksort, SWAP, stack_node): Replaced pointer
3512 arithmetics with index arithmetics. Changed quicksort to work on
3513 an array of SCM values instead of an array of characters. Avoid
3514 bytewise copying of SCM elements. Avoid allocating memory on the
3515 stack with alloca. Fixed some comments.
3516
3517 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
3518
3519 * eval.c (EXTEND_ENV): Eliminated.
3520
3521 (unmemocopy, SCM_CEVAL, SCM_APPLY): Use SCM_EXTEND_ENV instead of
3522 EXTEND_ENV.
3523
3524 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
3525
3526 * __scm.h (SCM_DEBUG_DEBUGGER_SUPPORT): New compile-time option.
3527
3528 * gc.card.c (scm_gc_marked_p): Fixed compiler warning when
3529 compiling with SCM_DEBUG==1 by moving definition behind prototype.
3530
3531 * gc.card.c (scm_dbg_t_list_cell, scm_dbg_t_double_cell,
3532 scm_dbg_gc_marked_p, scm_dbg_gc_get_card, scm_dbg_gc_get_bvec,
3533 scm_t_list_cell_struct, scm_t_list_cell, scm_t_double_cell,
3534 scm_gc_marked_p, scm_gc_get_card, scm_gc_get_bvec): Fixed
3535 functions such that they check if the object is a non-immediate.
3536 Further, renamed identifiers to use the scm_dbg_ prefix and made
3537 their inclusion into the lib dependent of the
3538 SCM_DEBUG_DEBUGGER_SUPPORT compile time option.
3539
3540 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
3541
3542 * __scm.h: Fixed comment about the SCM_DEBUG_TYPING_STRICTNESS
3543 debug option.
3544
3545 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
3546
3547 * list.c (scm_ilength, scm_last_pair), unif.c (l2ra): Prefer
3548 !SCM_CONSP over SCM_NCONSP. Now, guile itself does not include
3549 any calls to SCM_NCONSP any more.
3550
3551 * unif.c (l2ra): Eliminate redundant check.
3552
3553 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
3554
3555 * list.c (scm_cons_star), ramap.c (scm_ra_sum, scm_ra_product,
3556 scm_array_map_x), unif.c (l2ra): Prefer !SCM_NULLP over
3557 SCM_NNULLP. Now, guile itself does not include any calls to
3558 SCM_NNULLP any more.
3559
3560 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
3561
3562 * eval.c (unmemocopy, SCM_APPLY, scm_map, scm_for_each,
3563 scm_copy_tree): Place assignment expressions which are part of
3564 other expressions into an expression of their own.
3565
3566 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
3567
3568 * goops.c (TEST_CHANGE_CLASS, scm_sys_initialize_object): Don't
3569 compare SCM values with !=.
3570
3571 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
3572
3573 * eval.c, eval.h, evalext.c, evalext.h (scm_sym_setter,
3574 scm_m_generalized_set_x, scm_init_evalext): Move the declaration
3575 and definition of the memoizer for the generalized set! macro from
3576 evalext.[ch] to eval.[ch]. Use the SCM_SYNTAX snarfer macro to
3577 define the macro object.
3578
3579 * eval.c, eval.h (s_set_x, scm_s_set_x, scm_m_set_x,
3580 scm_m_generalized_set_x): Since now scm_s_set_x is only used in
3581 eval.c, it is made static and renamed to s_set_x.
3582
3583 * evalext.c (scm_defined_p, scm_m_undefine): Prefer !SCM_<foo>
3584 over SCM_N<foo>.
3585
3586 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
3587
3588 * eval.c, root.h (scm_undefineds, SCM_NUM_PROTECTS, undefineds,
3589 scm_init_eval): Made scm_undefineds static in eval.c, renamed it
3590 to undefineds and registered the object as a permanent object.
3591
3592 * eval.c, eval.h (scm_f_apply, scm_init_eval): Made scm_f_apply
3593 static in eval.c, renamed it to f_apply and registered the object
3594 as a permanent object.
3595
3596 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
3597
3598 * eval.c (SCM_BIT7, SCM_BIT8, unmemocopy, SCM_CEVAL): Renamed
3599 file-local macro SCM_BIT8 to SCM_BIT7, which is more appropriate.
3600
3601 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
3602
3603 * numbers.c (scm_logtest): Fixed argument bug in the call to
3604 mpz_and, which showed up when compiling with SCM_DEBUG defined.
3605
3606 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
3607
3608 * gc-card.c (scm_i_sweep_card, scm_i_init_card_freelist): Fixed
3609 type errors that showed up when compiling with SCM_DEBUG defined.
3610
3611 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
3612
3613 * continuations.c, continuations.h, eval.c, eval.h, extensions.c,
3614 gsubr.c, guile.c, init.c, read.c, root.c, root.h, stackchk.h,
3615 throw.c: Removed uses of DEBUG_EXTENSIONS and DYNAMIC_LINKING to
3616 fix compile errors with --disable-deprecated.
3617
3618 2003-04-17 Rob Browning <rlb@defaultvalue.org>
3619
3620 * numbers.c (scm_integer_expt): fix case where we were declaring
3621 vars in the middle of a statement block. Thanks to Thamer
3622 Al-Harbash.
3623
3624 2003-04-17 Mikael Djurfeldt <djurfeldt@nada.kth.se>
3625
3626 * goops.c (TEST_CHANGE_CLASS): Update variable class after class
3627 change.
3628
3629 * eq.c (scm_eqv_p): Turned into a primitive generic.
3630
3631 2003-04-16 Rob Browning <rlb@defaultvalue.org>
3632
3633 * gc_os_dep.c: Added patch for UnixWare and OpenUNIX support.
3634 Thanks to Boyd Gerber.
3635 Added check for __arm__ in addition to arm for LINUX and copied
3636 __s390__ defines from upstream libgc. Thanks to James Treacy for
3637 reporting the problems.
3638
3639 * numbers.c (PTRDIFF_MIN): use SCM_CHAR_BIT.
3640
3641 * socket.c: use SCM_CHAR_BIT.
3642
3643 * random.c (scm_c_random_bignum): use SCM_CHAR_BIT.
3644
3645 * num2integral.i.c (NUM2INTEGRAL): use SCM_CHAR_BIT.
3646
3647 2003-04-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
3648
3649 * feature.c (scm_init_feature): Always add threads feature.
3650
3651 2003-04-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
3652
3653 * goops.c (scm_sys_fast_slot_ref): Use SCM_SLOT instead of
3654 scm_at_assert_bound_ref. (We don't want the unbound check. See
3655 oop/goops/active-slot.scm.)
3656
3657 2003-04-14 Rob Browning <rlb@defaultvalue.org>
3658
3659 * tags.h: scm_t_intptr should have been intptr_t.
3660
3661 2003-04-13 Rob Browning <rlb@defaultvalue.org>
3662
3663 * __scm.h (SCM_FLUSH_REGISTER_WINDOWS): don't just rely on "sparc"
3664 test. Instead use
3665 #if defined (sparc) || defined (__sparc__) || defined (__sparc)
3666 as gc_os_dep.c suggests is appropriate.
3667
3668 * goops.c (prep_hashsets): make static to match prototype.
3669 (scm_sym_args): SCM_SYMBOL -> SCM_GLOBAL_SYMBOL. Thanks to Albert
3670 Chin.
3671
3672 * c-tokenize.lex: remove trailing comma from enum. Thanks to
3673 Albert Chin.
3674
3675 * gc_os_dep.c: add NetBSD powerpc config info. Thanks to Thomas
3676 Klausner.
3677
3678 2003-04-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
3679
3680 * goops.c (scm_sys_prep_layout_x): Instance allocation is now
3681 indicated through extra fields in getters-n-setters.
3682 (scm_add_slot): Adapted to new format of getters_n_setters slot.
3683 (Thanks to Andy Wingo.)
3684
3685 2003-02-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
3686
3687 * gc-segment.c: add comment
3688
3689 2003-04-07 Rob Browning <rlb@defaultvalue.org>
3690
3691 * debug.h: change "id" arg name to "info_id" to avoid objective-c
3692 clash.
3693
3694 * num2integral.i.c (NUM2INTEGRAL): fix bug pointed out by Mikael
3695 and add regression test to standalone/.
3696
3697 2003-04-06 Rob Browning <rlb@defaultvalue.org>
3698
3699 * strings.c (scm_mem2string): use memcpy rather than by-hand loop.
3700 Thanks to Dale P. Smith.
3701
3702 * random.c: #include gmp.h.
3703 (scm_c_random_bignum): normalize result on return.
3704
3705 * init.c: #include gmp.h.
3706
3707 * numbers.h: remove the gmp.h #include (not needed now).
3708
3709 * posix.h: change occurences of "id" to something else so we don't
3710 cause trouble when included via objective-c (can't hurt, might
3711 help). Still have usage in debug.h, though.
3712
3713 2003-04-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
3714
3715 * random.c (scm_c_random_bignum): Don't generate a random number
3716 equal to m (the second argument of scm_c_random_bignum); only
3717 generate numbers in the range 0 <= r < m.
3718 (scm_c_default_rstate): Use SCM_VARIABLE_REF to access
3719 scm_var_random_state.
3720
3721 * num2integral.i.c (INTEGRAL2BIG): Put negation of n inside then
3722 clause.
3723
3724 2003-04-05 Rob Browning <rlb@defaultvalue.org>
3725
3726 * modules.c (scm_module_import_interface): move declaration of
3727 uses before any code.
3728
3729 2003-04-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
3730
3731 * Makefile.am (scmconfig.h): Look for config.h in top_builddir,
3732 not top_srcdir.
3733
3734 * hashtab.c (rehash_after_gc): Clear to_rehash list before
3735 processing it in order to avoid an infinite loop.
3736
3737 * print.c (scm_prin1): Remember old state of pstate->writingp.
3738
3739 2003-04-05 Marius Vollmer <mvo@zagadka.de>
3740
3741 * Changed license terms to the plain LGPL thru-out.
3742
3743 2003-04-04 Rob Browning <rlb@defaultvalue.org>
3744
3745 * socket.c (FLIPCPY_NET_HOST_128): new macro.
3746 (ipv6_net_to_num, ipv6_num_to_net, bignum_in_ipv6_range_p):
3747 rewrite to handle GMP bignums.
3748
3749
3750 * random.c (scm_c_random_bignum): rewrite to handle GMP bignums.
3751
3752 * ports.c (scm_getc): minor tweak.
3753
3754 * numbers.h: remove SCM_BIGDIG conditionals, reorganize, and
3755 rewrite to handle GMP bignums.
3756
3757 * numbers.c: rewrite *many* functions to handle GMP bignums.
3758
3759 * num2integral.i.c (NUM2INTEGRAL, INTEGRAL2NUM, INTEGRAL2BIG):
3760 handle GMP bignums.
3761
3762 * num2float.i.c (NUM2FLOAT): handle GMP bignums.
3763
3764 * init.c (check_config): remove SCM_BIGDIG conditionals.
3765 (scm_init_guile_1): test to make sure mpz_t fits in a double_cell.
3766
3767 * gc-card.c ("sweep_card"): handle new mpz_t bignums.
3768
3769 * eval.c: remove SCM_BIGDIG conditionals.
3770
3771 * eq.c (s_scm_eqv_p): scm_i_bigcomp -> scm_i_bigcmp.
3772
3773 2003-03-31 Rob Browning <rlb@defaultvalue.org>
3774
3775 * Makefile.am (scmconfig.h): change srcdir to builddir. (Thanks
3776 to Kevin Ryde.)
3777
3778 2003-03-27 Rob Browning <rlb@defaultvalue.org>
3779
3780 * threads.h: fix various preprocessor usages of new public
3781 symbols to expect 0 or 1 values rather than 1 or undefined.
3782 i.e. change #ifdef to #if, etc.
3783
3784 * threads.c: fix various preprocessor usages of new public
3785 symbols to expect 0 or 1 values rather than 1 or undefined.
3786 i.e. change #ifdef to #if, etc.
3787
3788 * tags.h: fix various preprocessor usages of new public
3789 symbols to expect 0 or 1 values rather than 1 or undefined.
3790 i.e. change #ifdef to #if, etc.
3791
3792 * stacks.c: fix various preprocessor usages of new public
3793 symbols to expect 0 or 1 values rather than 1 or undefined.
3794 i.e. change #ifdef to #if, etc.
3795
3796 * stackchk.h: fix various preprocessor usages of new public
3797 symbols to expect 0 or 1 values rather than 1 or undefined.
3798 i.e. change #ifdef to #if, etc.
3799
3800 * stackchk.c: fix various preprocessor usages of new public
3801 symbols to expect 0 or 1 values rather than 1 or undefined.
3802 i.e. change #ifdef to #if, etc.
3803
3804 * sort.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
3808 * read.c: fix various preprocessor usages of new public
3809 symbols to expect 0 or 1 values rather than 1 or undefined.
3810 i.e. change #ifdef to #if, etc.
3811
3812 * random.c: fix various preprocessor usages of new public
3813 symbols to expect 0 or 1 values rather than 1 or undefined.
3814 i.e. change #ifdef to #if, etc.
3815
3816 * print.c: fix various preprocessor usages of new public
3817 symbols to expect 0 or 1 values rather than 1 or undefined.
3818 i.e. change #ifdef to #if, etc.
3819
3820 * objects.c: fix various preprocessor usages of new public
3821 symbols to expect 0 or 1 values rather than 1 or undefined.
3822 i.e. change #ifdef to #if, etc.
3823
3824 * numbers.h: fix various preprocessor usages of new public
3825 symbols to expect 0 or 1 values rather than 1 or undefined.
3826 i.e. change #ifdef to #if, etc.
3827
3828 * null-threads.c: fix various preprocessor usages of new public
3829 symbols to expect 0 or 1 values rather than 1 or undefined.
3830 i.e. change #ifdef to #if, etc.
3831
3832 * lang.c: fix various preprocessor usages of new public
3833 symbols to expect 0 or 1 values rather than 1 or undefined.
3834 i.e. change #ifdef to #if, etc.
3835
3836 * lang.h: fix various preprocessor usages of new public
3837 symbols to expect 0 or 1 values rather than 1 or undefined.
3838 i.e. change #ifdef to #if, etc.
3839
3840 * iselect.h: fix various preprocessor usages of new public
3841 symbols to expect 0 or 1 values rather than 1 or undefined.
3842 i.e. change #ifdef to #if, etc.
3843
3844 * init.c: fix various preprocessor usages of new public
3845 symbols to expect 0 or 1 values rather than 1 or undefined.
3846 i.e. change #ifdef to #if, etc.
3847
3848 * gh_data.c: fix various preprocessor usages of new public
3849 symbols to expect 0 or 1 values rather than 1 or undefined.
3850 i.e. change #ifdef to #if, etc.
3851
3852 * gh.h: fix various preprocessor usages of new public
3853 symbols to expect 0 or 1 values rather than 1 or undefined.
3854 i.e. change #ifdef to #if, etc.
3855
3856 * gen-scmconfig.c: change most new public symbols to be defined to
3857 0 or 1 rather than being either 1 or undefined.
3858
3859 * gc_os_dep.c: fix various preprocessor usages of new public
3860 symbols to expect 0 or 1 values rather than 1 or undefined.
3861 i.e. change #ifdef to #if, etc.
3862 (STACK_GROWS_DOWN): define to 0 or 1 rather than 1 or undef.
3863
3864 * gc.h: fix various preprocessor usages of new public
3865 symbols to expect 0 or 1 values rather than 1 or undefined.
3866 i.e. change #ifdef to #if, etc.
3867
3868 * gc-card.c: fix various preprocessor usages of new public
3869 symbols to expect 0 or 1 values rather than 1 or undefined.
3870 i.e. change #ifdef to #if, etc.
3871
3872 * gc-mark.c: fix various preprocessor usages of new public
3873 symbols to expect 0 or 1 values rather than 1 or undefined.
3874 i.e. change #ifdef to #if, etc.
3875
3876 * feature.c: fix various preprocessor usages of new public
3877 symbols to expect 0 or 1 values rather than 1 or undefined.
3878 i.e. change #ifdef to #if, etc.
3879
3880 * evalext.c: fix various preprocessor usages of new public
3881 symbols to expect 0 or 1 values rather than 1 or undefined.
3882 i.e. change #ifdef to #if, etc.
3883
3884 * eval.h: fix various preprocessor usages of new public
3885 symbols to expect 0 or 1 values rather than 1 or undefined.
3886 i.e. change #ifdef to #if, etc.
3887
3888 * eval.c: fix various preprocessor usages of new public
3889 symbols to expect 0 or 1 values rather than 1 or undefined.
3890 i.e. change #ifdef to #if, etc.
3891
3892 * eq.c: fix various preprocessor usages of new public
3893 symbols to expect 0 or 1 values rather than 1 or undefined.
3894 i.e. change #ifdef to #if, etc.
3895
3896 * coop.c: fix various preprocessor usages of new public
3897 symbols to expect 0 or 1 values rather than 1 or undefined.
3898 i.e. change #ifdef to #if, etc.
3899
3900 * coop-threads.c: fix various preprocessor usages of new public
3901 symbols to expect 0 or 1 values rather than 1 or undefined.
3902 i.e. change #ifdef to #if, etc.
3903
3904 * coop-pthreads.c: fix various preprocessor usages of new public
3905 symbols to expect 0 or 1 values rather than 1 or undefined.
3906 i.e. change #ifdef to #if, etc.
3907
3908 * coop-defs.h: fix various preprocessor usages of new public
3909 symbols to expect 0 or 1 values rather than 1 or undefined.
3910 i.e. change #ifdef to #if, etc.
3911
3912 * convert.i.c: fix various preprocessor usages of new public
3913 symbols to expect 0 or 1 values rather than 1 or undefined.
3914 i.e. change #ifdef to #if, etc.
3915
3916 * continuations.c: fix various preprocessor usages of new public
3917 symbols to expect 0 or 1 values rather than 1 or undefined.
3918 i.e. change #ifdef to #if, etc.
3919
3920 * _scm.h: fix various preprocessor usages of new public symbols to
3921 expect 0 or 1 values rather than 1 or undefined. i.e. change
3922 #ifdef to #if, etc.
3923
3924 2003-03-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3925
3926 * init.c (scm_init_guile_1): Call scm_i_init_deprecated.
3927
3928 * deprecated.c, deprecated.h: New files, to collect deprecated
3929 things in one place.
3930 * Makefile.am: Added them in all the right places.
3931
3932 * Makefile.am (EXTRA_DIST): Added "scmconfig.h.top".
3933 (scmconfig.h): Get "scmconfig.h.top" from $(srcdir) so that VPATH
3934 builds work.
3935 (DOT_X_FILES): Removed "iselect.x".
3936 (DOT_DOC_FILES): Removed "iselect.doc".
3937
3938 2003-03-25 Rob Browning <rlb@defaultvalue.org>
3939
3940 * win32-socket.h: #include "libguile/__scm.h". Replace usage of
3941 HAVE_WINSOCK2_H with SCM_HAVE_WINSOCK2_H.
3942
3943 * win32-socket.c: #include <config.h> if HAVE_CONFIG_H.
3944
3945 * vports.c: #include <config.h> if HAVE_CONFIG_H.
3946
3947 * unif.c: #include <config.h> if HAVE_CONFIG_H. Replace usage of
3948 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
3949
3950 * threads.h: replace usage of struct timespect with
3951 scm_t_timespec. Replace usage of USE_PTHREAD_THREADS with
3952 SCM_USE_PTHREAD_THREADS. Remove typedef for struct timespec in
3953 favor of scm_t_timespec from scmconfig.h.
3954
3955 * threads.c: move libguile/_scm.h include to the top so we pick up
3956 any critical defines like _GNU_SOURCE early. Replace usage of
3957 struct timespect with scm_t_timespec. Replace usage of
3958 STACK_GROWS_UP with SCM_STACK_GROWS_UP. Replace usage of
3959 USE_PTHREAD_THREADS with SCM_USE_PTHREAD_THREADS.
3960
3961 * threads-plugin.h: replace usage of struct timespect with
3962 scm_t_timespec.
3963
3964 * threads-plugin.c: #include <config.h> if HAVE_CONFIG_H. Replace
3965 usage of struct timespect with scm_t_timespec.
3966
3967 * tags.h: move HAVE_STDINT_H handling to scmconfig.h. Move
3968 HAVE_INTTYPES_H handling to scmconfig.h. #include
3969 "libguile/__scm.h". Rework handling for scm_t_bits,
3970 scm_t_signed_bits, SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
3971 SCM_T_SIGNED_BITS_MIN, and SIZEOF_SCM_T_BITS to use scm_t_intptr,
3972 scm_t_uintptr, SCM_SIZEOF_INTPTR_T, and SCM_SIZEOF_UINTPTR_T, and
3973 SCM_SIZEOF_UNSIGNED_LONG. Rename usage of HAVE_ARRAYS to
3974 SCM_HAVE_ARRAYS.
3975
3976 * symbols.c: #include <config.h> if HAVE_CONFIG_H.
3977
3978 * struct.c: #include <config.h> if HAVE_CONFIG_H.
3979
3980 * strports.c: #include <config.h> if HAVE_CONFIG_H.
3981
3982 * strop.c: #include <config.h> if HAVE_CONFIG_H.
3983
3984 * stime.h: move handling of time related headers to scmconfig.h.
3985
3986 * stime.c: #include <config.h> if HAVE_CONFIG_H.
3987
3988 * stacks.c: replace usage of STACK_GROWS_UP with
3989 SCM_STACK_GROWS_UP.
3990
3991 * sort.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
3992 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
3993
3994 * socket.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
3995 of uint32 and HAVE_UINT_32 with scm_t_int32.
3996
3997 * smob.c: #include <config.h> if HAVE_CONFIG_H.
3998
3999 * simpos.c: #include <config.h> if HAVE_CONFIG_H.
4000
4001 * script.c: #include <config.h> if HAVE_CONFIG_H.
4002
4003 * scmsigs.c: #include <config.h> if HAVE_CONFIG_H.
4004
4005 * scmconfig.h.top: new file -- preamble for scmconfig.h.
4006
4007 * rw.c: #include <config.h> if HAVE_CONFIG_H.
4008
4009 * regex-posix.c: #include <config.h> if HAVE_CONFIG_H.
4010
4011 * read.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
4012
4013 * rdelim.c: #include <config.h> if HAVE_CONFIG_H.
4014
4015 * random.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
4016 of LONG32, LONG64, SIZEOF_LONG, and HAVE_LONG_LONGS with
4017 scm_t_int32, scm_t_int64, and SCM_HAVE_T_INT64. Rename usage of
4018 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
4019
4020 * ramap.c: replace usage of HAVE_LONG_LONGS with
4021 "SCM_SIZEOF_LONG_LONG != 0".
4022
4023 * putenv.c: #include <config.h> if HAVE_CONFIG_H. #include
4024 "libguile/scmconfig.h".
4025
4026 * pthread-threads.c: #include <config.h> if HAVE_CONFIG_H.
4027
4028 * print.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
4029 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
4030
4031 * posix.c: #include <config.h> if HAVE_CONFIG_H.
4032
4033 * ports.c: #include <config.h> if HAVE_CONFIG_H.
4034
4035 * objects.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
4036
4037 * numbers.h: replace usage of HAVE_FLOATINGPOINT_H with
4038 SCM_HAVE_FLOATINGPOINT_H. Replace usage of HAVE_IEEEFP_H with
4039 SCM_HAVE_IEEEFP_H. Replace usage of HAVE_NAN_H with
4040 SCM_HAVE_NAN_H. Replace usage of STDC_HEADERS with
4041 SCM_HAVE_STDC_HEADERS. Replace usage of ptrdiff_t with
4042 scm_t_ptrdiff. Replace usage of HAVE_LONG_LONGS with
4043 "SCM_SIZEOF_LONG_LONG != 0".
4044
4045 * numbers.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
4046 of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0". Replace
4047 usage of ptrdiff_t with scm_t_ptrdiff. Replace usage of
4048 SIZEOF_PTRDIFF_T with SCM_SIZEOF_SCM_T_PTRDIFF.
4049
4050 * num2integral.i.c: #include <config.h> if HAVE_CONFIG_H.
4051
4052 * null-threads.h: replace usage of struct timespect with
4053 scm_t_timespec.
4054
4055 * net_db.c: #include <config.h> if HAVE_CONFIG_H.
4056
4057 * mkstemp.c: #include <config.h> if HAVE_CONFIG_H. #include
4058 "libguile/__scm.h". Remove definition of gcc_uint64_t in favor of
4059 scm_t_uint64 and rename usages.
4060
4061 * mallocs.c: #include <config.h> if HAVE_CONFIG_H.
4062
4063 * load.c: #include <config.h> if HAVE_CONFIG_H.
4064
4065 * iselect.h: move handling of time related headers to scmconfig.h.
4066 Rename usage of HAVE_SYS_SELECT_H to SCM_HAVE_SYS_SELECT_H.
4067 Rename usage of HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Rename
4068 usage of USE_COOP_THREADS to SCM_USE_COOP_THREADS.
4069
4070 * iselect.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
4071 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
4072 USE_NULL_THREADS to SCM_USE_NULL_THREADS.
4073
4074 * ioext.c: #include <config.h> if HAVE_CONFIG_H.
4075
4076 * inline.h: #include "libguile/__scm.h" at the top. Change code
4077 to use SCM_C_INLINE and SCM_INLINE_C_INCLUDINT_INLINE_H to decide
4078 what to do instead of creating a new public #define. Rename usage
4079 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
4080 USE_NULL_THREADS to SCM_USE_NULL_THREADS. Rename usage of
4081 USE_COPT_THREADS to SCM_USE_COPT_THREADS.
4082
4083 * inline.c: rearrange handling -- now we just #define
4084 SCM_INLINE_C_INCLUDING_INLINE_H to 1 and #include
4085 "libguile/inline.h". scmconfig.h will define SCM_C_INLINE as
4086 appropriate, and we use that in inline.h along with the above
4087 define to determine how to respond.
4088
4089 * init.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
4090 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
4091
4092 * guile.c: #include <config.h> if HAVE_CONFIG_H.
4093
4094 * gh_data.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
4095 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
4096
4097 * gh.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
4098
4099 * gen-scmconfig.h.in: new file -- see gen-scmconfig.c for details.
4100
4101 * gen-scmconfig.c: new file -- see comments in file for details.
4102
4103 * gdbinit.c: #include <config.h> if HAVE_CONFIG_H.
4104
4105 * gc_os_dep.c: #include <config.h> if HAVE_CONFIG_H. Replace
4106 usage of STACK_GROWS_UP with SCM_STACK_GROWS_UP.
4107
4108 * gc.h: replace usage of SIZEOF_LONG with
4109 SCM_SIZEOF_UNSIGNED_LONG. Replace usage of USE_PTHREAD_THREADS
4110 with SCM_USE_PTHREAD_THREADS. Remove SCM_SIZEOF_LONG definition
4111 since we handle that in scmconfig.h now.
4112
4113 * gc.c: #include <config.h> if HAVE_CONFIG_H.
4114
4115 * gc-mark.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
4116 of HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of
4117 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
4118
4119 * gc-malloc.c: #include <config.h> if HAVE_CONFIG_H.
4120
4121 * gc-card.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
4122 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
4123
4124 * fports.c: #include <config.h> if HAVE_CONFIG_H.
4125
4126 * filesys.c: #include <config.h> if HAVE_CONFIG_H.
4127
4128 * feature.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
4129 of USE_NULL_THREADS to SCM_USE_NULL_THREADS.
4130
4131 * extensions.c: #include <config.h> if HAVE_CONFIG_H.
4132
4133 * evalext.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
4134 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
4135
4136 * eval.c: #include <config.h> if HAVE_CONFIG_H. #include
4137 "libguile/__scm.h" rather than scmconfig.h. Rename usage of
4138 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
4139 with "SCM_SIZEOF_LONG_LONG != 0".
4140
4141 * error.c: #include <config.h> if HAVE_CONFIG_H.
4142
4143 * eq.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
4144 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
4145 with "SCM_SIZEOF_LONG_LONG != 0".
4146
4147 * deprecation.c: #include <config.h> if HAVE_CONFIG_H.
4148
4149 * coop.c: replace usage of struct timespect with scm_t_timespec.
4150 #include <config.h> if HAVE_CONFIG_H.
4151
4152 * coop-threads.c: #include "libguile/_scm.h" early. Replace
4153 usage of struct timespect with scm_t_timespec. Replace usage of
4154 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
4155
4156 * coop-pthreads.c: #include "libguile/_scm.h" early. Replace
4157 usage of struct timespect with scm_t_timespec. Replace usage of
4158 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
4159
4160 * coop-defs.h: move handling of time related headers to
4161 scmconfig.h. Add #include "libguile/__scm.h". Rename usage of
4162 HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Replace usage of struct
4163 timespect with scm_t_timespec.
4164
4165 * convert.i.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
4166
4167 * convert.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
4168
4169 * convert.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
4170 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
4171
4172 * continuations.c: move libguile/_scm.h include to the top so we
4173 pick up any critical defines like _GNU_SOURCE early.
4174
4175 * backtrace.c: #include <config.h> if HAVE_CONFIG_H.
4176
4177 * async.c: #include <config.h> if HAVE_CONFIG_H.
4178
4179 * alloca.c: #include <config.h> if HAVE_CONFIG_H.
4180
4181 * _scm.h: #include <config.h> if HAVE_CONFIG_H.
4182 Rename usage of USE_PTHREAD_THREADS to SCM_USE_PTHREAD_THREADS.
4183
4184 * __scm.h: move libguile/scmconfig.h include up to the top, so
4185 we're sure to pick up any critical defines like _GNU_SOURCE early.
4186 #include <limits.h> removed in favor of scmconfig.h inclusion when
4187 appropriate. STDC_HEADERS based inclusion of stdlib.h,
4188 sys/types.h, stddef.h, and sys/stdtypes.h removed in favor of
4189 scmconfig.h inclusion when appropriate. Various Win32 related
4190 definitions removed in favor of scmconfig.h inclusion when
4191 appropriate.
4192 (HAVE_UINTPTR_T): definition removed (see NEWS).
4193 (SIZEOF_PTRDIFF_T): definition removed (see NEWS).
4194 (HAVE_LONG_LONGS): definition removed (see NEWS).
4195 (HAVE_LONG_LONG): definition removed (see NEWS).
4196 (HAVE_PTRDIFF_T): definition removed (see NEWS).
4197
4198 * Makefile.am: scmconfig.h is now generated by building and
4199 running gen-scmconfig.h and capturing its output. gen-scmconfig
4200 uses config.h and the configure.in generated gen-scmconfig.h to
4201 decide what to output. See gen-scmconfig.c for details.
4202 (noinst_PROGRAMS): add gen-scmconfig.
4203 (gen_scmconfig_SOURCES): new variable.
4204 (gen-scmconfig.$(OBJEXT)): new target - be careful to handle
4205 cross-compiling right.
4206 (scmconfig.h): build scmconfig.h from gen-scmconfig's output.
4207 (BUILT_SOURCES): add scmconfig.h.
4208
4209 2003-03-19 Marius Vollmer <mvo@zagadka.de>
4210
4211 * gc_os_dep.c: Added defines for sparc-unknown-netbsdelf1.5 from
4212 Adrian Bunk. Thanks!
4213
4214 2003-03-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
4215
4216 * goops.c (make_class_from_template): New fourth arg:
4217 applicablep.
4218 (scm_class_extended_generic_with_setter, scm_class_self): Fixed
4219 cpls.
4220
4221 * smob.c (scm_set_smob_apply): Call scm_i_inherit_applicable.
4222
4223 * goops.c, objects.c, objects.h (scm_make_extended_class): New
4224 second arg: applicablep.
4225 (scm_i_inherit_applicable): New function.
4226
4227 * goops.c, goops.h (scm_class_applicable,
4228 scm_class_extended_accessor): New classes.
4229
4230 2003-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
4231
4232 * procs.c (scm_procedure_documentation): Removed redundant
4233 SCM_NIMP test and replaced other calls to SCM_IMP by more explicit
4234 predicates.
4235
4236 2003-03-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
4237
4238 * list.c, list.h (scm_filter, scm_filter_x): New functions.
4239
4240 * modules.c (scm_module_import_interface): New function.
4241
4242 * goops.c, goops.h (scm_class_accessor_method): Renamed from
4243 scm_class_accessor.
4244 (scm_class_accessor): New class.
4245
4246 2003-03-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
4247
4248 * goops.c (scm_primitive_generic_generic): Enable primitive
4249 generic if not enabled.
4250 (scm_sys_goops_loaded): Setup unextended primitive generics.
4251
4252 * goops.c, goops.h (scm_c_extend_primitive_generic): New function.
4253
4254 * snarf.h (SCM_PRIMITIVE_GENERIC, SCM_PRIMITIVE_GENERIC_1): New
4255 snarf macros.
4256
4257 * numbers.c (scm_abs): Use SCM_PRIMITIVE_GENERIC. (This is only a
4258 testing example. All uses of SCM_GPROC should be converted.)
4259
4260 * procprop.c (scm_stand_in_scm_proc): Use scm_assq instead of
4261 scm_assoc.
4262
4263 * eq.c (scm_equal_p): Turned into a primitive generic.
4264
4265 2003-02-27 Rob Browning <rlb@defaultvalue.org>
4266
4267 * Makefile.am (scmconfig.h): new target -- generate file from
4268 ../config.h.
4269 (modinclude_HEADERS): remove version.h.
4270 (nodist_modinclude_HEADERS): add version.h.
4271
4272 2003-02-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
4273
4274 This fixes a serious GC bug, introduced during the latest
4275 reorganization of the GC, which disabled freeing of structs and
4276 GOOPS objects:
4277
4278 * struct.c (scm_struct_prehistory): Init scm_i_structs_to_free to
4279 SCM_EOL.
4280 (scm_struct_prehistory): Move scm_free_structs to
4281 scm_before_mark_c_hook.
4282
4283 * gc-card.c (sweep_card): Check that we haven't swept structs on
4284 this card before. That can happen if scm_i_sweep_all_segments has
4285 been called from some other place than scm_igc.
4286
4287 2003-02-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
4288
4289 * environments.c (DEFAULT_OBARRAY_SIZE): Changed from 137 to 31
4290 (since hash tables now adapt their size).
4291
4292 * modules.c (scm_modules_prehistory): Changed from 2001 to 1533
4293 (current number of prehistory bindings; hashtable code will select
4294 a prime which is greater than this value).
4295
4296 * symbols.c (scm_symbols_prehistory): Changed from 1009 to 2139
4297 (current number of initial symbols).
4298
4299 * properties.c (scm_init_properties): Don't specify size of
4300 scm_properties_whash.
4301
4302 * objprop.c (scm_init_objprop): Don't specify size of
4303 scm_object_whash.
4304
4305 * keywords.c (scm_init_keywords): Don't specify a hash table size.
4306
4307 * hooks.c (scm_c_hook_add): Fixed bug in append mode.
4308
4309 The following changes introduce the use of resizable hash tables
4310 throughout Guile. It also renames the old *-hash-table* functions
4311 to *-alist-vector* and places them, together with the rest of the
4312 weak vector support, in the module (ice-9 weak-vector). We should
4313 probably introduce a new, better, API for weak references, for
4314 example "weak pairs" a la MIT-Scheme. (In Chez scheme, they even
4315 look like and are used like ordinary pairs.)
4316
4317 * environments.c (obarray_enter, obarray_retrieve, obarray_remove,
4318 leaf_environment_fold, obarray_remove_all): Use hashtable
4319 accessors.
4320
4321 * gc.c (scm_init_storage): Moved hook initialization to
4322 scm_storage_prehistory.
4323 (scm_storage_prehistory): New function.
4324 (scm_igc): Added commentary about placement of
4325 scm_after_sweep_c_hook.
4326
4327 * gc-mark.c (scm_mark_all): Use hashtable accessors.
4328 (scm_gc_mark_dependencies): Use SCM_WVECT_WEAK_KEY_P and
4329 SCM_WVECT_WEAK_VALUE_P.
4330
4331 * hashtab.c, hashtab.h (scm_hash_for_each, scm_hash_map): New
4332 functions.
4333 (scm_vector_to_hash_table, scm_c_make_resizing_hash_table):
4334 Removed.
4335 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table,
4336 scm_make_doubly_weak_hash_table): Moved here from weaks.c.
4337
4338 * init.c (scm_init_guile_1): Removed call to scm_init_weaks; Added
4339 calls to scm_storage_prehistory and scm_hashtab_prehistory.
4340
4341 * modules.c (module-reverse-lookup): Use hashtable accessors.
4342
4343 * symbols.c, symbols.h (scm_i_hash_symbol): New function.
4344
4345 * weaks.c, weaks.h (scm_make_weak_key_alist_vector,
4346 scm_make_weak_value_alist_vector,
4347 scm_make_doubly_weak_alist_vector): New functions.
4348
4349 * weaks.c (scm_init_weaks_builtins): New function.
4350
4351 * weaks.h (SCM_WVECTF_WEAK_KEY, SCM_WVECTF_WEAK_VALUE,
4352 SCM_WVECTF_NOSCAN, SCM_WVECT_WEAK_KEY_P, SCM_WVECT_WEAK_VALUE_P,
4353 SCM_WVECT_NOSCAN_P): New macros.
4354
4355 * weaks.c (scm_scan_weak_vectors): Use SCM_WVECT_WEAK_KEY_P
4356 and SCM_WVECT_WEAK_VALUE_P.
4357
4358 * weaks.c, weaks.h (scm_i_allocate_weak_vector): Renamed from
4359 allocate_weak_vector and exported.
4360
4361 2003-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
4362
4363 * hashtab.c: Undid thread safety. (We decided that it's better to
4364 let the user explicitly protect the tables (or not) according what
4365 is suitable for the application.)
4366
4367 2003-02-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
4368
4369 * hashtab.c (scm_hash_fn_remove_x, scm_internal_hash_fold): Made
4370 thread safe and handle resizing tables.
4371 (scm_ihashx, scm_sloppy_assx, scm_delx_x): Removed
4372 SCM_DEFER/ALLOW_INTS.
4373
4374 2003-02-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
4375
4376 * hashtab.c (scm_vector_to_hash_table,
4377 scm_c_make_resizing_hash_table, scm_make_hash_table): New
4378 functions.
4379 (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x): Made thread
4380 safe and handle resizing tables.
4381
4382 * weaks.c (scm_make_weak_key_hash_table,
4383 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
4384 Size argument made optional. Return resizable table if not
4385 specified.
4386
4387 2003-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
4388
4389 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
4390 Fixed formals tests for closures. (Thanks to Kevin Ryde.)
4391
4392 2003-02-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
4393
4394 * debug.c (scm_procedure_source): Handle all objects for which
4395 procedure? is #t. (Thanks to Bill Schottstaedt.)
4396
4397 2003-01-23 Mikael Djurfeldt <djurfeldt@nada.kth.se>
4398
4399 * futures.c (mark_futures): Don't need to mark data of recycled
4400 futures.
4401 (scan_futures, cleanup_undead): Be smarter about marking
4402 futures---avoid unnecessary passes through future lists.
4403
4404 * futures.h, futures.c: New files; Introduced recycling of
4405 futures. For fine-grained threading this lifts performance to
4406 another level. We can now use parallelization in inner loops of
4407 Guile programs without impossible overhead.
4408
4409 * threads.h, threads.c: Moved futures to their own file.
4410
4411 * Makefile.am (libguile_la_SOURCES): Added futures.c.
4412 (DOT_X_FILES): Added futures.x.
4413 (DOT_DOC_FILES): Added futures.doc.
4414 (modinclude_HEADERS): Added futures.h.
4415
4416 * threads.c, threads.h (scm_i_create_thread): Renamed from
4417 create_thread and made global.
4418
4419 * futures.c (scm_make_future): New procedure.
4420
4421 * eval.c: #include "libguile/futures.h".
4422
4423 * init.c: #include "futures.h"
4424 (scm_init_guile_1): Call scm_init_futures.
4425
4426 * stime.c (SCM_TIME_UNITS_PER_SECOND): Renamed from CLKTCK.
4427
4428 * stime.h (SCM_TIME_UNITS_PER_SECOND): Definition moved here.
4429
4430 * eval.c, eval.h (scm_trampoline_0, scm_i_call_closure_0): New
4431 functions.
4432
4433 * eval.c (scm_trampoline_1): Fixed arguments test for closures.
4434
4435 2003-01-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
4436
4437 * threads.c (create_thread): Don't unwind dynwind chain of parent
4438 thread before creation. Just start the new thread with an empty
4439 dynwind chain.
4440
4441 2003-01-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
4442
4443 * evalext.c, evalext.h (scm_self_evaluating_p): New function.
4444
4445 2003-01-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
4446
4447 * threads.c (scm_timed_wait_condition_variable): Support timed
4448 waiting also for simple condition variables.
4449
4450 * goops.c (TEST_CHANGE_CLASS): Use scm_change_object_class instead
4451 of calling the procedure change-object-class.
4452
4453 2003-01-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
4454
4455 * ramap.c (scm_ramapc): Typo in error message.
4456
4457 2003-01-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
4458
4459 * goops.c (scm_sys_prep_layout_x): Bugfix: Only create layout for
4460 slots with instance allocation.
4461
4462 * goops.c, goops.h (scm_class_extended_generic_with_setter): New
4463 class.
4464 (scm_compute_applicable_methods): Use scm_generic_function_methods.
4465
4466 * goops.c (scm_generic_function_methods): Support extended
4467 generic functions.
4468
4469 2002-12-29 Mikael Djurfeldt <djurfeldt@nada.kth.se>
4470
4471 * eval.c (unmemocopy): Bugfix: scm_sym_delay --> scm_sym_future.
4472 Thanks to Neil for pointing this out!
4473
4474 2002-12-29 Neil Jerram <neil@ossau.uklinux.net>
4475
4476 * lang.h: Remove declarations matching definitions removed from
4477 lang.c (just below).
4478
4479 2002-12-28 Neil Jerram <neil@ossau.uklinux.net>
4480
4481 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
4482 scm_m_while, scm_nil_eq): Remove definitions that were superfluous
4483 and already commented out.
4484
4485 * read.h (scm_lreadparen), read.c (scm_lreadr, scm_read_token,
4486 scm_lreadparen): Support reading vectors with Elisp syntax if
4487 SCM_ELISP_READ_EXTENSIONS is defined. (SCM_ELISP_READ_EXTENSIONS
4488 is not currently defined, and there isn't even a configure switch
4489 to enable it yet.)
4490
4491 2002-12-26 Marius Vollmer <mvo@zagadka.ping.de>
4492
4493 * Makefile.am (c-tokenize.o): Refer to source via $< so that vpath
4494 builds work.
4495 (EXTRA_DIST): Added version.h.in.
4496
4497 2002-12-21 Mikael Djurfeldt <djurfeldt@nada.kth.se>
4498
4499 This change makes it possible for one thread to do lazy sweeping
4500 while other threads are running. Now only the mark phase need to
4501 have all threads asleep. We should look further into this issue.
4502 Presently, I've put the locking of scm_i_sweep_mutex at
4503 "conservative" places due to my current lack of knowledge about
4504 the garbage collector. Please feel free to restrict these regions
4505 further to allow for maximal parallelism!
4506
4507 * gc.c, gc.h (scm_i_sweep_mutex): New mutex.
4508
4509 * gc.c (scm_gc_for_newcell), gc-malloc.c (scm_realloc,
4510 scm_gc_register_collectable_memory): Substitute locking of
4511 scm_i_sweep_mutex for calls to scm_i_thread_put_to_sleep.
4512 (scm_igc): Lock sweep mutex here instead of in callers; Calls to
4513 scm_i_thread_put_to_sleep/scm_i_thread_wake_up used to demarkate
4514 the single-thread section (which now only contains the mark
4515 phase).
4516 (scm_gc): Don't lock sweeo mutex here since scm_igc locks it;
4517 Removed SCM_DEFER/ALLOW_INTS. Simply call scm_igc directly.
4518
4519 * threads.c (gc_section_mutex): Removed.
4520
4521 2002-12-19 Mikael Djurfeldt <mdj@kvast.blakulla.net>
4522
4523 * threads.c (create_thread): Clear parent field in root state in
4524 order not to unnecessarily remember dead threads.
4525
4526 * eval.c (call_subr2o_1, call_lsubr2_2): New functions.
4527 (scm_trampoline_1, scm_trampoline_2): Use them.
4528
4529 2002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
4530
4531 Partial introduction of real plugin interface.
4532
4533 * Makefile.am (modinclude_HEADERS): Added threads-plugin.h.
4534 (EXTRA_DIST): Added threads-plugin.c.
4535
4536 * threads-plugin.h, threads-plugin.c: New files.
4537
4538 * threads.h: #include "libguile/threads-plugin.h".
4539
4540 * threads.c: #include "libguile/threads-plugin.c".
4541
4542 * pthread-threads.c: Temporarily remove debugging functions.
4543
4544 * threads.c, threads.h (scm_yield): Added back.
4545
4546 2002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
4547
4548 * threads.c (really_launch): Detach before unlocking
4549 thread_admin_mutex in order not to risk being joined.
4550 (scm_i_thread_put_to_sleep, scm_i_thread_wake_up): Keep
4551 thread_admin_mutex locked during GC.
4552
4553 * pthread-threads.c, pthread-threads.h: Improvements to debugging
4554 functions.
4555
4556 2002-12-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
4557
4558 * pthread-threads.c, pthread-threads.h (SCM_DEBUG_THREADS): Added
4559 support for debugging mutex operations.
4560
4561 * threads.c (scm_thread): Removed filed joining_threads.
4562 (thread_print): Print thread number as well as address of thread
4563 structure.
4564 (scm_join_thread): Bugfix.
4565 (scm_lock_mutex, scm_try_mutex, scm_unlock_mutex,
4566 scm_timed_wait_condition_variable, scm_signal_condition_variable,
4567 scm_broadcast_condition_variable): Use the low-level API.
4568 (scm_all_threads): Return copy of thread list (to prevent
4569 unintended destruction).
4570 (scm_threads_prehistory): Initialize heap_mutex of fake thread.
4571
4572 * pthread-threads.c, pthread-threads.h, threads.c: Fixes to
4573 pthread "native" recursive mutex support.
4574
4575 2002-12-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
4576
4577 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): New definitions.
4578 Simply lock a thread C API recursive mutex.
4579 (SCM_NONREC_CRITICAL_SECTION_START,
4580 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
4581 SCM_REC_CRITICAL_SECTION_END): Removed.
4582
4583 * eval.c: Replaced SOURCE_SECTION_START / SOURCE_SECTION_END with
4584 direct calls to scm_rec_mutex_lock / unlock around the three calls
4585 to scm_m_expand_body.
4586
4587 * eval.c, eval.h (promise_free): New function.
4588 (scm_force): Rewritten; Now thread-safe; Removed
4589 SCM_DEFER/ALLOW_INTS.
4590
4591 * pthread-threads.h: Added partially implemented plugin interface
4592 for recursive mutexes. These are, for now, only intended to be
4593 used internally within the Guile implementation.
4594
4595 * pthread-threads.c: New file.
4596
4597 * threads.c: Conditionally #include "pthread-threads.c".
4598
4599 * eval.c, eval.h (scm_makprom, scm_force): Rewritten to be
4600 thread-safe;
4601
4602 * snarf.h (SCM_MUTEX, SCM_GLOBAL_MUTEX, SCM_REC_MUTEX,
4603 SCM_GLOBAL_REC_MUTEX): New macros.
4604
4605 * eval.c, threads.c, threads.h, snarf.h: Rewrote critical section
4606 macros---use mutexes instead.
4607
4608 * tags.h (SCM_IM_FUTURE): New tag.
4609
4610 * eval.c (scm_m_future): New primitive macro.
4611 (SCM_CEVAL): Support futures.
4612 (unmemocopy): Support unmemoization of futures.
4613
4614 * print.c (scm_isymnames): Name of future isym.
4615
4616 * version.c: Unmade some changes to my private copy that got
4617 committed by mistake.
4618
4619 2002-12-11 Mikael Djurfeldt <mdj@kvast.blakulla.net>
4620
4621 * gc-malloc.c, gc.h, init.c: Reverted gc-malloc change of
4622 2002-12-10.
4623
4624 * gc.c (scm_igc): Don't call scm_i_thread_invalidate_freelists.
4625
4626 * gc.c (scm_gc_sweep): Call it here instead, which is a more
4627 logical place.
4628
4629 * threads.c (create_thread): Remember root object until the handle
4630 of the new thread is on all_threads list.
4631
4632 * root.c (scm_make_root): Moved copying of fluids until after
4633 creation of root handle so that the fluids are GC protected. Also
4634 removed the critical section.
4635
4636 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
4637
4638 * gc-malloc.c, gc.h (scm_gc_malloc_prehistory): New function.
4639
4640 * gc-malloc.c (malloc_mutex): New mutex.
4641 (scm_gc_malloc_prehistory): Initialize it.
4642 (scm_realloc): Serialize call to realloc
4643 (scm_calloc): Same for calloc.
4644 Thanks to Wolfgang Jaehrling!
4645 (Now we have to make sure all calls to malloc/realloc are made
4646 through scm_malloc.)
4647
4648 * init.c (scm_init_guile_1): Call scm_gc_malloc_prehistory.
4649
4650 * threads.c (really_launch): Release heap (to prevent deadlock).
4651 (create_thread): Release heap before locking thread admin mutex.
4652
4653 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
4654
4655 * threads.c (scm_i_thread_invalidate_freelists): New
4656 function.
4657
4658 * gc.c (scm_igc): Call scm_i_thread_invalidate_freelists.
4659
4660 * modules.c (scm_export): Inserted a return statement.
4661
4662 2002-12-10 Han-Wen Nienhuys <hanwen@cs.uu.nl>
4663
4664 * modules.c (scm_export): new function
4665
4666 * gc-card.c: add a note about malloc()/free() overhead.
4667
4668 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
4669
4670 * Makefile.am (c-tokenize.$(OBJEXT)): Don't look for c-tokenize.c
4671 in srcdir.
4672
4673 2002-12-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
4674
4675 These changes remove scm_ints_disabled (which hasn't has any
4676 effect in Guile for quite some time).
4677
4678 * async.c, error.h (scm_ints_disabled): Removed.
4679
4680 * gc.c (scm_gc_for_newcell), init.c (scm_init_guile_1),
4681 root.c (scm_internal_cwdr), gdbint.c (SCM_BEGIN_FOREIGN_BLOCK,
4682 SCM_END_FOREIGN_BLOCK): Don't touch scm_ints_disabled.
4683 (old_ints): Removed.
4684
4685 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Define as a recursive
4686 critical section.
4687 (SCM_REDEFER_INTS, SCM_ALLOW_INTS): Define as SCM_DEFER_INTS and
4688 SCM_ALLOW_INTS.
4689
4690 2002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
4691
4692 * threads.c (scm_mutex_lock, scm_cond_wait, scm_cond_timedwait):
4693 Removed accidental #if 0 around these functions.
4694
4695 These changes are the start of support for preemptive
4696 multithreading. Marius and I have agreed that I commit this code
4697 into the repository although it isn't thoroughly tested and surely
4698 introduces many bugs. The bugs should only be exposed when using
4699 threads, though. Signalling and error handling for threads is
4700 very likely broken. Work on making the implementation cleaner and
4701 more efficient is needed.
4702
4703 * __scm.h (SCM_ALLOW_INTS_ONLY): Removed.
4704 (SCM_NONREC_CRITICAL_SECTION_START,
4705 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
4706 SCM_REC_CRITICAL_SECTION_END): New macros.
4707 (SCM_CRITICAL_SECTION_START/END): Defined here.
4708
4709 * eval.c: Insert SOURCE_SECTION_START / SOURCE_SECTION_END around
4710 the three calls to scm_m_expand_body.
4711
4712 * gc.h: #include "libguile/pthread-threads.h";
4713 (SCM_FREELIST_CREATE, SCM_FREELIST_LOC): New macros.
4714
4715 * gc.c (scm_i_freelist, scm_i_freelist2): Defined to be of type
4716 scm_t_key;
4717
4718 * gc.c, gc-freelist.c, inline.h: Use SCM_FREELIST_LOC for freelist
4719 access.
4720
4721 * gc-freelist.c (scm_gc_init_freelist): Create freelist keys.
4722
4723 * gc-freelist.c, threads.c (really_launch): Use
4724 SCM_FREELIST_CREATE.
4725
4726 * gc-malloc.c (scm_realloc, scm_gc_register_collectable_memory):
4727
4728 * gc.c (scm_i_expensive_validation_check, scm_gc,
4729 scm_gc_for_newcell): Put threads to sleep before doing GC-related
4730 heap administration so that those pieces of code are executed
4731 single-threaded. We might consider rewriting these code sections
4732 in terms of a "call_gc_code_singly_threaded" construct instead of
4733 calling the pair of scm_i_thread_put_to_sleep () and
4734 scm_i_thread_wake_up (). Also, we would want to have as many of
4735 these sections eleminated.
4736
4737 * init.c (scm_init_guile_1): Call scm_threads_prehistory.
4738
4739 * inline.h: #include "libguile/threads.h"
4740
4741 * pthread-threads.h: Macros now conform more closely to the
4742 pthreads interface. Some of them now take a second argument.
4743
4744 * threads.c, threads.h: Many changes.
4745
4746 2002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
4747
4748 * Makefile.am (version.h): Changed $^ --> $< in rule for
4749 version.h.
4750
4751 2002-12-08 Rob Browning <rlb@defaultvalue.org>
4752
4753 * version.h.in (SCM_MICRO_VERSION): use @--@ substitution now.
4754 (SCM_MINOR_VERSION): use @--@ substitution now.
4755 (SCM_MICRO_VERSION): use @--@ substitution now.
4756 (scm_effective_version): new function prototype.
4757
4758 * version.c (scm_effective_version): new function, also add
4759 effective-version.
4760
4761 * Makefile.am (schemelibdir): VERSION -> GUILE_EFFECTIVE_VERSION.
4762 (libpath.h): use GUILE_EFFECTIVE_VERSION to compute
4763 SCM_LIBRARY_DIR.
4764 (version.h): generate this here rather than configure.in. This
4765 approach tracks source edits better (i.e. more immediately).
4766 Might be worth considering for other .in files too.
4767
4768 2002-12-02 Marius Vollmer <mvo@zagadka.ping.de>
4769
4770 Reorganized thread package selection. A thread package now only
4771 implements a small set of pthread like functions and Guile
4772 implements the rest on top of that. Guile's implementation is
4773 what the "coop-pthreads" package has been previously. Support for
4774 "coop" threads has been removed until I get time to add it again.
4775
4776 * Makefile.am (libguile_la_SOURCES): Removed iselect.c.
4777 (noinst_HEADERS): Removed coop-threads.c, coop-threads.h, coop.c,
4778 null-threads.c, coop-pthreads.c.
4779 (modinclude_HEADERS): Removed coop-defs.h, coop-pthreads.h. Added
4780 pthread-threads.h.
4781
4782 * validate.h (SCM_VALIDATE_THREAD): Moved to threads.h.
4783
4784 * threads.h: Do not include "libguile/coop-defs.h". Include
4785 "libguile/pthread-threads.h" for USE_COPT_THREADS. Removed
4786 (previously deprecated) C level thread API prototypes. They are
4787 now in the thread package specific headers, "null-threads.h" and
4788 "pthread-threads.h".
4789 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
4790 New.
4791 (scm_threads_init): Removed.
4792 (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END,
4793 SCM_THREAD_SWITCHING_CODE, scm_i_switch_counter,
4794 SCM_I_THREAD_SWITCH_COUNT): Define here.
4795 (scm_single_thread_p): Removed.
4796 (scm_call_with_new_thread): Take two args directly instead of list
4797 of two args.
4798 (scm_i_thread_data, scm_i_set_thread_data, SCM_THREAD_LOCAL_DATA,
4799 SCM_SET_THREAD_LOCAL_DATA): Define here.
4800
4801 * threads.c: Merged with "coop-pthreads.c".
4802
4803 * null-threads.h: Implement pthread-like API as a set of macros.
4804
4805 * pthread-threads.h: New, implement pthread-like API by deferring
4806 to pthread itself.
4807
4808 * init.c (scm_init_guile_1): Do not call scm_init_iselect, which
4809 has been lost in the reorganization.
4810
4811 2002-12-01 Mikael Djurfeldt <mdj@linnaeus>
4812
4813 The following change makes it possible to move procedure
4814 application dispatch outside inner loops. The motivation was
4815 clean implementation of efficient replacements of R5RS primitives
4816 in SRFI-1.
4817
4818 The semantics is clear: scm_trampoline_N returns an optimized
4819 version of scm_call_N (or NULL if the procedure isn't applicable
4820 on N args).
4821
4822 Applying the optimization to map and for-each increases efficiency
4823 noticeably. For example, (map abs ls) is 8 times faster than
4824 before.
4825
4826 * eval.h (scm_t_trampoline_1, scm_t_trampoline_2): New types.
4827
4828 * eval.c, eval.h (scm_trampoline_1, scm_trampoline_2): New functions.
4829
4830 * eval.c (call_subr2_2, call_lsubr_2, call_closure_2): New functions;
4831 (map, for-each): Handle also application on two args as a special
4832 case; Use trampolines.
4833
4834 Other changes:
4835
4836 * sort.c (scm_cmp_function): Choose subr2less for scm_tc7_subr_2o;
4837 (subr2oless): Removed.
4838 (scm_restricted_vector_sort_x): Use scm_return_first to keep the
4839 vector GC protected.
4840
4841 * eval.c (check_map_args): Use scm_out_of_range_pos instead of
4842 scm_out_of_range.
4843
4844 2002-11-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
4845
4846 * evalext.[ch] (scm_m_undefine, undefine): Deprecated.
4847
4848 2002-11-17 Mikael Djurfeldt <mdj@linnaeus>
4849
4850 * debug.c (scm_make_iloc): Added missing "return".
4851
4852 2002-11-17 Marius Vollmer <mvo@zagadka.ping.de>
4853
4854 * strports.c (scm_eval_string_in_module): Validate second arg to
4855 be a module. Thanks to Arno Peters!
4856
4857 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
4858
4859 * .cvsignore: remove goops.c
4860
4861 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
4862
4863 * modules.c (scm_env_top_level, scm_lookup_closure_module,
4864 module_variable, scm_module_lookup_closure,
4865 scm_module_transformer, scm_sym2var, scm_module_reverse_lookup,
4866 scm_system_module_env_p): Don't compare SCM values with C
4867 operators == or !=. Avoid SCM_IMP predicates. Prefer !SCM_FALSEP
4868 over SCM_NFALSEP.
4869
4870 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
4871
4872 * eval.h (SCM_MAKE_ILOC): New macro.
4873
4874 * debug.c (scm_make_iloc): Use SCM_MAKE_ILOC instead of computing
4875 the iloc bitpattern here.
4876
4877 2002-11-14 Mikael Djurfeldt <mdj@linnaeus>
4878
4879 * coop-pthreads.c, coop-pthreads.h: scm_internal_select should be
4880 part of the API, otherwise it's difficult to write Guile
4881 extensions using non-blocking I/O => moved #include
4882 "libguile/iselect.h" from coop-pthreads.c --> coop-pthreads.h.
4883
4884 * coop-pthreads.c (scm_unlock_mutex): Changed s_lock_mutex -->
4885 s_unlock_mutex.
4886
4887 2002-11-10 Marius Vollmer <mvo@zagadka.ping.de>
4888
4889 * __scm.h (USE_THREADS, GUILE_ISELECT): Do not define here. They
4890 are defined in configure.in.
4891
4892 * threads.c: Removed SCM_API from function definitions. SCM_API
4893 is only for declarations.
4894
4895 2002-11-07 Mikael Djurfeldt <mdj@linnaeus>
4896
4897 * coop-pthreads.h: Added support for thread specific data to the
4898 generic C API for the coop-pthreads case.
4899
4900 * threads.c, threads.h (scm_cond_init): Undo unintentional API
4901 change.
4902 (scm_cond_broadcast): Added missing function.
4903
4904 2002-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4905
4906 * coop.c (coop_next_runnable_thread): Removed, wich should have
4907 happened when GUILE_ISELECT was hard-wired.
4908
4909 2002-11-03 Marius Vollmer <mvo@zagadka.ping.de>
4910
4911 * Makefile.am (libguile_la_SOURCES): Added threads.c
4912 (DOT_DOC_FILES): Added threads.doc.
4913 (DOT_X_FILES): Added threads.x.
4914 (EXTRA_libguile_la_SOURCES): Removed threads.c.
4915 (noinst_HEADERS): Added coop-pthreads.c.
4916 (modinclude_HEADERS): Added coop-pthreads.h.
4917
4918 * __scm.h (USE_THREADS, GUILE_ISELECT): Define when
4919 SCM_DEBUG_DEPRECATED. Removed their use thru-out Guile.
4920
4921 * iselect.c: Include "_scm.h" before testing HAVE_UNISTD_H.
4922 Thanks to Bill Schottstaedt!
4923
4924 * numbers.c (scm_integer_expt): Make 0^z == 0 for z != 0.
4925
4926 * _scm.h (HAVE_RESTARTABLE_SYSCALLS): Do define even when
4927 SCM_COPT_THREADS is defined.
4928 (SCM_SYSCALL): Use EINTR-expection version when SCM_COPT_THREADS
4929 is defined.
4930
4931 * coop-pthreads.c: Some harmless renamings of internal stuff.
4932 (create_thread): New, generalized version of
4933 scm_call_with_new_thread.
4934 (scm_call_with_new_thread): Use it.
4935 (scm_spawn_thread): New, use create_thread.
4936
4937 2002-11-02 Marius Vollmer <mvo@zagadka.ping.de>
4938
4939 * coop-pthreads.c, coop-pthreads.h: Redone completely, you might
4940 start testing it now.
4941
4942 * _scm.h: Include <errno.h< so that SCM_SYSCALL is correctly
4943 defined when HAVE_RESTARTABLE_SYSCALLS is not defined.
4944 (HAVE_RESTARTABLE_SYSCALLS): Do not define when USE_COPT_THREADS
4945 is defined.
4946
4947 2002-10-27 Marius Vollmer <mvo@zagadka.ping.de>
4948
4949 * scmsigs.c (signal_cell_handlers, install_handler_data,
4950 scm_delq_spine_x, really_install_handler, install_handler): New
4951 scheme for triggering signal handlers, to simplify take_signal.
4952 (take_signal): Simplified, to avoid race conditions.
4953 (scm_sigaction_for_thread): Use new Scheme. Validate that thread
4954 hasn't exited yet.
4955
4956 * async.c (scm_async_click): Reset pending_asyncs, handle
4957 signal_asyncs. Don't set cdr of a non-signal async to #f.
4958 (scm_i_queue_async_cell): Do not check cdr of cell for #f, queue
4959 always. Set pending_asyncs.
4960 (scm_system_async_mark_for_thread): Check that thread has not
4961 exited.
4962 (scm_unmask_signals, decrease_block): Call scm_async_click after
4963 block_asyncs becomes zero.
4964
4965 * __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of
4966 active_asyncs.
4967
4968 * root.h (scm_root_state): Added pending_asyncs and signal_asyncs
4969 fields.
4970 * root.c (root_mark): Mark them.
4971 (make_root): Initialize them.
4972
4973 * iselect.c, iselect.h: Replaced GUILE_ISELECT with
4974 USE_COOP_THREADS.
4975 (scm_internal_select): Define one version for USE_COOP_THREADS and
4976 one for USE_NULL_THREADS.
4977 (scm_init_iselect): Likewise.
4978
4979 * inline.h (scm_cell, scm_double_cell): Also allow
4980 USE_COPT_THREADS to not protect the slot initializers.
4981
4982 * init.c (scm_init_guile_1): Call scm_init_thread_procs. This is
4983 because threads need to be initialized before the stack, but
4984 gsubrs such as scm_timed_condition_variable_wait can only be
4985 created later.
4986
4987 * threads.h: Include "coop-pthreads.h" when requested.
4988 (scm_threads_make_mutex, scm_threads_lock_mutex,
4989 scm_threads_unlock_mutex, scm_threads_monitor): Removed, they were
4990 not implemented anyway.
4991 (scm_init_thread_procs, scm_try_mutex,
4992 scm_timed_condition_variable_wait,
4993 scm_broadcast_condition_variable, scm_c_thread_exited_p,
4994 scm_thread_exited_p): New prototypes.
4995 (struct timespec): Define if not already defined.
4996 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
4997 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
4998 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
4999 scm_cond_broadcast, scm_cond_destroy): Declarations moved here and
5000 deprecated.
5001
5002 * threads.c: Include <errno.h>. Include "coop-pthreads.c" when
5003 requested.
5004 (scm_thread_exited_p): New.
5005 (scm_try_mutex, scm_broadcast_condition_variable): Newly
5006 registered procedures.
5007 (scm_wait_condition_variable, scm_timed_wait_condition_variable):
5008 Use the latter as the procedure for "wait-condition-variable",
5009 thus offering a optional timeout parameter to Scheme.
5010 (scm_wait_condition_variable): Implement in terms of
5011 scm_timed_wait_condition_variable.
5012 (scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
5013 scm_mutex_unlock, scm_mutex_destroy, scm_cond_init,
5014 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
5015 scm_cond_broadcast, scm_cond_destroy): Implement in terms of
5016 scm_make_mutex, etc, and deprecate.
5017 (scm_init_threads): Do not create smobs, leave this to
5018 scm_threads_init. Do not include "threads.x" file.
5019 (scm_init_thread_procs): New, include "threads.x" here.
5020
5021 * null-threads.h (scm_null_mutex, scm_null_mutex_init,
5022 scm_null_mutex_lock, scm_null_mutex_unlock,
5023 scm_null_mutex_destroy, scm_null_condvar, scm_null_condvar_init,
5024 scm_null_condvar_wait, scm_null_condvar_signal,
5025 scm_null_condvar_destroy): Removed.
5026 (scm_mutex_init, scm_mutex_lock, scm_mutex_unlock, scm_cond_init,
5027 scm_cond_wait, scm_cond_signal, scm_cond_broadcast,
5028 scm_cond_destory): Do not define, they are now deprecated and
5029 handled by threads.{h,c}.
5030
5031 * null-threads.c (scm_null_mutex, scm_null_cond): Define here.
5032 (scm_threads_init): Create smobs here, using the appropriate
5033 sizes.
5034 (block): Removed, now unused.
5035 (scm_c_thread_exited_p): New.
5036 (scm_null_mutex_init, scm_null_mutex_lock, scm_null_mutex_unlock,
5037 scm_null_mutex_destroy, scm_null_condvar_init,
5038 scm_null_condvar_wait, scm_null_condvar_signal,
5039 scm_null_condvar_destroy): Removed and updated users to do their
5040 task directly.
5041 (scm_try_mutex, timeval_subtract,
5042 scm_timed_wait_condition_variable,
5043 scm_broadcast_condition_variable): New.
5044 (scm_wait_condition_variable): Removed.
5045
5046 * coop-defs.h (coop_m): Added 'level' field.
5047 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
5048 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
5049 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
5050 scm_cond_broadcast, scm_cond_destroy, struct timespec): Do not
5051 define.
5052 (coop_condition_variable_broadcast): New.
5053
5054 * coop-threads.c (scm_threads_init): Create smobs here, using the
5055 appropriate sizes.
5056 (scm_c_thread_exited_p, scm_try_mutex,
5057 scm_timed_wait_condition_variable,
5058 scm_broadcast_condition_variable): New.
5059 (scm_wait_condition_variable): Removed.
5060
5061 * coop.c (coop_new_mutex_init): Initialize level.
5062 (coop_mutex_trylock, coop_mutex_lock, coop_mutex_unlock): maintain
5063 level.
5064 (coop_condition_variable_signal): Renamed to
5065 coop_condition_variable_broadcast and reimplemented in terms of
5066 that. Thus...
5067 (coop_condition_variable_broadcast): New.
5068
5069 * goops.c (hell_mutex): Reimplemented using scm_make_mutex, etc.
5070
5071 * coop-pthreads.h, coop-pthreads.c: New, but unfinished.
5072
5073 2002-10-21 Marius Vollmer <mvo@zagadka.ping.de>
5074
5075 * null-threads.c: Include <time.h>. Also, use <...> for inclusion
5076 of system headers.
5077
5078 * async.c, goops.h, modules.h, validate.h (SCM_MAKE_VALIDATE_MSG):
5079 New. Use it instead of SCM_MAKE_VALIDATE in lots of places to
5080 give better error messages. Thanks to Bill Schottstaedt!
5081
5082 2002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
5083
5084 * evalext.h, evalext.c (scm_definedp, scm_defined_p): Renamed
5085 scm_definedp to scm_defined_p and deprecated scm_definedp.
5086
5087 2002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
5088
5089 * async.h, async.c (scm_system_async): Fixed deprecation to work
5090 correctly when deprecated features are excluded.
5091
5092 2002-10-16 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5093
5094 * async.c (scm_system_async_mark_for_thread): Validate thread
5095 argument.
5096
5097 * coop-threads.c (scm_i_thread_root): Do not validate argument.
5098
5099 * feature.c (scm_init_feature): Don't add 'threads' for
5100 USE_NULL_THREADS.
5101
5102 * inline.h (scm_cell, scm_double_cell): Also allow
5103 USE_NULL_THREADS to not protect the slot initializers.
5104
5105 * scmsigs.c (scm_sigaction_for_thread): It's "USE_THREADS" not
5106 "USE_THREAD".
5107
5108 * Makefile.am (noinst_HEADERS): Added null-threads.c.
5109 (modinclude_HEADERS): Added null-threads.h.
5110
5111 * threads.h: Include null-threads.h when !USE_COOP_THREADS.
5112 * threads.c: Include null-threads.c when !USE_COOP_THREADS.
5113 (scm_init_threads): Use generic type names scm_t_mutex and
5114 scm_t_cond instead of coop_m and coop_c.
5115
5116 * null-threads.c, null-threads.h: New files.
5117
5118 2002-10-15 Marius Vollmer <mvo@zagadka.ping.de>
5119
5120 * Makefile.am: Replaced "$<" in non-pattern rules with its value.
5121 This is to support makes that know about "$<" only in pattern
5122 rules, like Sun's make.
5123
5124 2002-10-13 Marius Vollmer <mvo@zagadka.ping.de>
5125
5126 * Makefile.am (libpath.h): Fixed typo in top_srcdir_absolute
5127 substitution. Thanks to David Allouche!
5128
5129 2002-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
5130
5131 * evalext.h: Replaced SCM_DEBUG_DEPRECATED with
5132 !SCM_ENABLE_DEPRECATED.
5133
5134 2002-10-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5135
5136 * async.c (scm_system_async_mark_for_thread): Only call
5137 scm_i_thread_root when USE_THREADS is defined. Use scm_root
5138 otherwise.
5139
5140 * scmsigs.c (take_signal): Only call scm_i_thread_root when
5141 USE_THREADS is defined. Use scm_root otherwise.
5142 (scm_sigaction_for_thread): Ignore THREAD argument when
5143 USE_THREADS is not defined. Also, move THREAD argument defaulting
5144 out of HAVE_SIGACTION section, which was a bug.
5145
5146 2002-10-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5147
5148 * scmsigs.c (scm_sigaction_for_thread): Store original handler in
5149 signal_handlers, not the closure that is used as the async.
5150 The closure is stored in signal_handler_cells, as previously.
5151
5152 2002-10-10 Marius Vollmer <mvo@zagadka.ping.de>
5153
5154 * root.h (scm_root_state): Added 'block_async' slot.
5155 (scm_active_asyncs): Removed abbrev.
5156 * root.c (scm_make_root): Initialize 'block_asyncs' slot.
5157
5158 * __scm.h (SCM_ASYNC_TICK): Do without the scm_active_asyncs
5159 abbrev.
5160
5161 * async.h (scm_call_with_blocked_asyncs,
5162 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
5163 scm_c_call_with_unblocked_asyncs): New prototypes.
5164 (scm_mask_signals, scm_unmask_signals): Deprecated.
5165 (scm_mask_ints): Turned into a macro.
5166 * async.c (scm_mask_ints): Removed.
5167 (scm_run_asyncs): Do not set scm_mask_ints while running an async.
5168 this should not be necessary.
5169 (scm_async_click): Test block_asyncs instead of scm_mask_ints.
5170 (scm_mask_signals, scm_unmask_signals): Deprecated. Emit
5171 deprecation warning and check for errornous use. Set block_asyncs
5172 instead of scm_mask_ints.
5173 (increase_block, decrease_block, scm_call_with_blocked_asyncs,
5174 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
5175 scm_c_call_with_unblocked_asyncs): New.
5176
5177 * script.c (scm_compile_shell_switches): Do not set scm_mask_ints.
5178 Asyncs are enabled by default.
5179
5180 2002-10-09 Neil Jerram <neil@ossau.uklinux.net>
5181
5182 * vports.c (scm_make_soft_port): Allow vector argument to carry a
5183 6th element: an input waiting thunk.
5184 (sf_input_waiting): New.
5185
5186 2002-10-05 Marius Vollmer <mvo@zagadka.ping.de>
5187
5188 * root.c (root_mark): Mark active_asyncs slot.
5189
5190 * async.c (scm_async_click): Set the cdr of a executed handler
5191 cell to SCM_BOOL_F, not SCM_EOL.
5192 (scm_i_queue_async_cell): Queue the cell at the end of the list,
5193 and only if the handler procedure is not already present.
5194 (scm_system_async_mark_for_thread): Initialize cdr of handler cell
5195 with SCM_BOOL_F.
5196 * scmsigs.c (scm_sigaction_for_thread): Likewise.
5197
5198 2002-10-04 Rob Browning <rlb@defaultvalue.org>
5199
5200 * guile.c (main): switch to scm_lt_dlset_preloaded_symbols;
5201
5202 * dynl.c (sysdep_dynl_link): switch to scm_lt_dlhandle,
5203 scm_lt_dlopenext, and scm_lt_dlerror.
5204 (sysdep_dynl_unlink): switch to scm_lt_dlhandle, scm_lt_dlclose,
5205 and scm_lt_dlerror.
5206 (sysdep_dynl_func): switch to scm_lt_dlhandle, scm_lt_dlsym,
5207 and scm_lt_dlerror.
5208 (sysdep_dynl_init): switch to scm_lt_dlinit();
5209
5210 * Makefile.am (libguile_la_LIBADD): switch to use
5211 libguile-ltdl.la.
5212
5213 * numbers.c (scm_integer_expt): (expt 0 1) should be 1.
5214
5215 2002-10-04 Marius Vollmer <mvo@zagadka.ping.de>
5216
5217 * scmsigs.h (scm_sigaction_for_thread): New prototype.
5218 * scmsigs.c (got_signal): Removed.
5219 (signal_handler_cells, signal_handler_threads): New.
5220 (take_signal): Queue the cell of the signal for the specified
5221 thread. Reset the signal handler on systems that don't have
5222 sigaction.
5223 (sys_deliver_signals): Removed.
5224 (close_1): New.
5225 (scm_sigaction_for_thread): Renamed from scm_sigaction and
5226 extended to also set the thread of a signal and allocate a cell
5227 for it. Keep the Scheme name "sigaction". Check that signum is
5228 within range. Also, use SCM_VECTOR_REF instead of SCM_VELTS.
5229 (scm_sigaction): Implement in terms of scm_sigaction_for_thread.
5230 (scm_init_scmsigs): Allocate signal_handler_cells and
5231 signal_handler_threads vectors.
5232
5233 * async.c: Removed GUILE_OLD_ASYNC_CLICK code. Reorganized so
5234 that system asnycs and user asyncs are separated. Reimplemented
5235 system asyncs to work per-thread.
5236
5237 * gc.c (scm_init_gc): Do not use scm_system_async.
5238
5239 * async.h (scm_asyncs_pending, scm_set_tick_rate,
5240 scm_set_switch_rate, scm_system_async_mark_from_signal_handler):
5241 Removed prototypes.
5242 (scm_i_queue_async_cell): New.
5243
5244 * __scm.h (scm_asyncs_pending_p): Removed.
5245 (SCM_ASYNC_CLICK): Check scm_active_asyncs instead of
5246 scm_asyncs_pending_p.
5247
5248 * async.h (scm_system_async_mark_for_thread): New prototype.
5249
5250 * __scm.h: Removed GUILE_OLD_ASYNC_CLICK code.
5251
5252 * root.h (scm_root_state): Added new "active_asyncs" slot.
5253 * root.c (scm_make_root): Initialize it to SCM_EOL.
5254
5255 * coop-defs.h (coop_t): Added new "handle" slot.
5256 * coop-threads.c (all_threads, scm_current_thread,
5257 scm_all_threads, scm_i_thread_root): New.
5258 (scm_threads_init): Add main thread to all_threads.
5259 (scheme_launch_thread): Remove thread from all_threads when it
5260 terminates.
5261 (scm_call_with_new_thread): Initialize handle slot of coop_t
5262 structure and add new thread to all_threads.
5263 (scm_spawn_thread): Likewise.
5264
5265 * threads.h (scm_current_thread, scm_all_threads): New prototypes.
5266 * threads.c (scm_current_thread, scm_all_threads): Register as
5267 primitives.
5268
5269 * dynl.c: Use scm_lt_ prefix for libltdl functions.
5270
5271 2002-09-29 Neil Jerram <neil@ossau.uklinux.net>
5272
5273 * script.c (scm_compile_shell_switches): Fix bad spelling of
5274 `explicitly' in comment.
5275
5276 2002-09-28 Neil Jerram <neil@ossau.uklinux.net>
5277
5278 * posix.c (scm_geteuid, scm_getegid, scm_seteuid, scm_setegid):
5279 Refer to provided? in doc string rather than deprecated feature?.
5280
5281 2002-09-24 Gary Houston <ghouston@arglist.com>
5282
5283 * inline.h (scm_double_cell): prevent reordering of statements
5284 with any following code (for GCC 3 strict-aliasing).
5285 * numbers.c (scm_make_real), num2float.i.c (FLOAT2NUM): removed
5286 the earlier version of the reordering prevention.
5287
5288 2002-09-19 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5289
5290 * inline.h (scm_double_cell): move SET_GCMARK set out of if body.
5291
5292 2002-09-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5293
5294 * gc-malloc.c (scm_gc_register_collectable_memory): more overflow
5295 protection.
5296
5297 2002-09-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5298
5299 * inline.h: include stdio.h
5300
5301 * smob.c (free_print): abort if scm_debug_cell_accesses_p is set
5302
5303 2002-09-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5304
5305 * gc-segment.c (scm_i_make_initial_segment): check user settings
5306 for sanity.
5307
5308 * gc-malloc.c (scm_gc_init_malloc): check user settings for
5309 sanity.
5310
5311 * gc-freelist.c (scm_init_freelist): check user settings for sanity.
5312
5313 * struct.h: change scm_structs_to_free to scm_i_structs_to_free
5314
5315 * gc-malloc.c (scm_gc_register_collectable_memory): use floats;
5316 these won't ever wrap around with high memory usage. Thanks to
5317 Sven Hartrumpf for finding this.
5318
5319 * gc-freelist.c: include <stdio.h>
5320
5321 * gc-malloc.c: add DEBUGINFO for mtrigger GCs.
5322
5323 2002-09-01 Marius Vollmer <mvo@zagadka.ping.de>
5324
5325 * vectors.h (SCM_VECTOR_REF): New.
5326
5327 * snarf.h (SCM_DEFINE_PUBLIC): New.
5328
5329 2002-08-30 Marius Vollmer <mvo@zagadka.ping.de>
5330
5331 * socket.c (scm_addr_vector): Added size of address to arguments.
5332 Use it to avoid accessing a non-existent path in a sockaddr_un.
5333 Changed all callers.
5334
5335 2002-08-29 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5336
5337 * gc.h: remove DOUBLECELL card flags.
5338
5339 * gc-malloc.c (scm_calloc): try to use calloc() before calling
5340 scm_realloc().
5341
5342 * gc-segment.c (scm_i_initialize_heap_segment_data): remove card
5343 init loop; handle this from scm_init_card_freelist()
5344
5345 * gc-card.c (scm_init_card_freelist): init bit vector here.
5346
5347 * numbers.c (scm_make_real): prevent reordering of statements
5348 num2float.i.c (FLOAT2NUM): idem
5349
5350 2002-08-27 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5351
5352 * eval.h: prepend libguile/ to include path
5353
5354 2002-08-26 Marius Vollmer <mvo@zagadka.ping.de>
5355
5356 * script.c (scm_compile_shell_switches): Added "2002" to Copyright
5357 years. Thanks to Martin Grabmüller!
5358
5359 2002-08-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5360
5361 * gc-segment.c (scm_i_get_new_heap_segment): use float in stead of
5362 unsigned numbers for computing minimum heap increment. This
5363 prevents weird results when a a negative minimum increment is
5364 computed.
5365
5366 2002-08-24 Marius Vollmer <mvo@zagadka.ping.de>
5367
5368 * gc_os_dep.c: When we have __libc_stack_end, use that directly
5369 instead of the old tricks.
5370
5371 * guile-snarf.in: Do not expect the input file to be the first
5372 argument after the optional "-o" option, just pass everything to
5373 the pre-processor without extracting the input file name.
5374
5375 2002-08-23 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5376
5377 * gc-segment.c (scm_i_get_new_heap_segment): Oops. We want segment
5378 length *at* least SCM_MIN_HEAP_SEG_SIZE, not at most.
5379
5380 2002-08-22 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5381
5382 * gc.h, gc.c: make scm_cells_allocated unsigned again. Thanks to
5383 Bill Schottstaedt for the bug report
5384
5385 2002-08-20 Marius Vollmer <mvo@zagadka.ping.de>
5386
5387 * print.c (scm_iprin1): Print primitives generics always as
5388 "primitive-generic" even when they have no primitive methods yet.
5389
5390 2002-08-17 Gary Houston <ghouston@arglist.com>
5391
5392 * coop.c (coop_create): removed bogus 2nd argument in scm_malloc
5393 call.
5394
5395 2002-08-17 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5396
5397 * ports.c (scm_add_to_port_table): small bugfix.
5398
5399 * mallocs.c (scm_malloc_obj): use scm_gc_malloc in stead of
5400 malloc.
5401
5402 * gc-segment.c (scm_i_get_new_heap_segment): remove cluster cruft:
5403 only use SCM_MIN_HEAP_SEG_SIZE.
5404
5405 * ports.c (scm_add_to_port_table): add backwards compatibility
5406 function
5407
5408 * ports.h: use scm_i_ prefix for port table and port table size.
5409
5410 2002-08-15 Mikael Djurfeldt <mdj@linnaeus>
5411
5412 * vports.c (scm_make_soft_port): Initialize pt variable.
5413
5414 2002-08-13 Marius Vollmer <mvo@zagadka.ping.de>
5415
5416 * strports.h (scm_c_eval_string_in_module,
5417 scm_eval_string_in_module): New prototypes.
5418 * strports.c (scm_eval_string_in_module): New, but use
5419 "eval-string" as the Scheme name and make second parameter
5420 optional.
5421 (scm_eval_string): Implement using scm_eval_string_in_module.
5422 (scm_c_eval_string_in_module): New.
5423 Thanks to Ralf Mattes for the suggestion!
5424
5425 2002-08-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5426
5427 * gc-card.c ("sweep_card"): remove SCM_MISC_ERROR messages: print
5428 message and abort.
5429
5430 * gc-mark.c ("scm_gc_mark_dependencies"): idem.
5431
5432 * ports.c ("scm_new_port_table_entry"): return a boxed SCM in
5433 stead of scm_t_port*. The function now takes a tag argument.
5434
5435 2002-08-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5436
5437 * gc.h: add scm_debug_cells_gc_interval to public interface
5438
5439 * gc-card.c ("sweep_card"): set scm_gc_running while sweeping.
5440
5441 * gc.c (scm_i_expensive_validation_check): separate expensive
5442 validation checks from cheap ones.
5443
5444 2002-08-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5445
5446 * read.c (scm_input_error): new function: give meaningful error
5447 messages, and throw read-error
5448
5449 * gc-malloc.c (scm_calloc): add scm_calloc.
5450
5451 2002-08-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5452
5453 * tags.h: remove GC bits documentation from the tags table.
5454
5455 * read.c (INPUT_ERROR): Prepare for file:line:column error
5456 messages for errors in scm_lreadr() and friends.
5457
5458 2002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5459
5460 * gc-malloc.c (scm_malloc): use scm_realloc() (simplifies
5461 implementation).
5462 (scm_gc_calloc): new function
5463
5464 2002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5465
5466 * ports.c (scm_new_port_table_entry): init port entry to 0
5467 completely.
5468
5469 * ports.c (scm_new_port_table_entry): change function from
5470 scm_add_to_port_table. This prevents cells with null-pointers from
5471 being exposed to GC.
5472
5473 * vports.c (scm_make_soft_port) strports.c (scm_mkstrport),
5474 fports.c (scm_fdes_to_port): Use scm_new_port_table_entry().
5475
5476 * gc.c (scm_gc_stats): add cell-yield and malloc-yield statistic
5477 to gc-stats.
5478
5479 * numbers.c (big2str): return "0" for 0 iso. ""
5480
5481 * gc-segment.c, gc-malloc.c gc-mark.c, gc-freelist.c, gc-card.c,
5482 private-gc.h: new file
5483
5484 * gc.c: completely revised and cleaned up the GC. It now uses lazy
5485 sweeping. More documentation in workbook/newgc.text
5486
5487 2002-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5488
5489 * random.c (rstate_free): Return zero.
5490
5491 2002-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
5492
5493 * environments.c (remove_key_from_alist): Removed.
5494
5495 (obarray_remove): Simplified.
5496
5497 2002-07-24 Stefan Jahn <stefan@lkcc.org>
5498
5499 * continuations.h: ia64: Include <signal.h> before
5500 <sys/ucontext.h>.
5501
5502 2002-07-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
5503
5504 * modules.c (scm_sym2var): Don't compare SCM values with ==.
5505
5506 2002-07-21 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5507
5508 * goops.c (scm_compute_applicable_methods): use
5509 scm_remember_upto_here_1 iso scm_remember_upto_here
5510
5511 * macros.c: include deprecation.h
5512
5513 * vectors.c (scm_vector_move_right_x): remove side effect in
5514 macro arg.
5515 (scm_vector_move_left_x): idem.
5516
5517 * net_db.c, posix.c, socket.c: variable naming: change ans to
5518 result.
5519
5520 * sort.c (scm_merge_vector_x): accept vector as argument
5521 iso. SCM*. This is needed for full GC correctness.
5522
5523 * gc.h: undo previous undocumented changes related to #ifdef
5524 GENGC.
5525
5526 2002-07-20 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5527
5528 * *.c: add space after commas everywhere.
5529
5530 * *.c: use SCM_VECTOR_SET everywhere, where a vector is written.
5531 Document cases where SCM_WRITABLE_VELTS() is used.
5532
5533 * vectors.h (SCM_VELTS): prepare for write barrier, and let
5534 SCM_VELTS() return a const pointer
5535 (SCM_VECTOR_SET): add macro.
5536
5537 2002-07-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
5538
5539 * eval.c (SCM_CEVAL), macros.c (macro_print, scm_makmacro,
5540 scm_sym_macro, scm_macro_type), macros.h (scm_makmacro):
5541 Deprecated the special kind of built-in dynamic syntax transformer
5542 that was inaccurately named "macro". Note: The built-in syntax
5543 transformers that are named "mmacro" or "memoizing-macro" still
5544 exist, and it is these which come much closer to what one would
5545 call a macro.
5546
5547 2002-07-13 Neil Jerram <neil@ossau.uklinux.net>
5548
5549 * eval.c (unmemocopy): Fix for
5550 1001-local-eval-error-backtrace-segfaults (unmemoization crash
5551 with internal definitions and local-eval).
5552
5553 2002-07-12 Gary Houston <ghouston@arglist.com>
5554
5555 * dynl.c: Don't define stub procedures if DYNAMIC_LINKING is not
5556 defined. They don't do anything useful, especially since the
5557 only case where DYNAMIC_LINKING is undefined seems to be
5558 when --with-modules=no is given to configure, which is basically
5559 requesting that the "dynamic linking module" be omitted.
5560
5561 * Makefile.am (libguile_la_SOURCES): move dynl.c from
5562 libguile_la_SOURCES to EXTRA_libguile_la_SOURCES.
5563
5564 * extensions.c (load_extension): check DYNAMIC_LINKING for
5565 scm_dynamic_call.
5566 * init.c (scm_init_guile_1): check DYNAMIC_LINKING for
5567 scm_init_dynamic_linking.
5568
5569 2002-07-10 Marius Vollmer <mvo@zagadka.ping.de>
5570
5571 * guile.c, iselect.h, net_db.c, posix.c, socket.c: No need to
5572 check for Cygwin when including <winsock2.h>, this is already
5573 check for by configure. Thus, revert change from 2002-07-07.
5574
5575 2002-07-10 Gary Houston <ghouston@arglist.com>
5576
5577 * eq.c: include <string.h>
5578 * dynl.c: docstring editing.
5579
5580 2002-07-09 Gary Houston <ghouston@arglist.com>
5581
5582 * dynl.c (scm_dynamic_call): docstring editing.
5583
5584 2002-07-08 Rob Browning <rlb@defaultvalue.org>
5585
5586 * gc_os_dep.c: HURD fixes.
5587
5588 2002-07-07 Marius Vollmer <mvo@zagadka.ping.de>
5589
5590 Crosscompiling and Cygwin fixes by Jan Nieuwenhuizen. Thanks!
5591
5592 * Makefile.am: Override default rule for c-tokenize.$(OBJECT);
5593 this should be compiled for BUILD host.
5594 Override default rule for
5595 guile_filter_doc_snarfage$(EEXECT); this should run on BUILD host.
5596 Add missing $(EXEEXT) to guile_filter_doc_snarfage invocation.
5597 (snarf2checkedtexi): Use GUILE_FOR_BUILD instead of preinstguile.
5598
5599 * guile.c, iselect.h, net_db.c, posix.c, socket.c: Do not include
5600 <winsock2.h> on Cygwin even when we have it.
5601
5602 2002-07-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5603
5604 * __scm.h (SCM_CAUTIOUS), eval.c (scm_eval_args, deval_args,
5605 SCM_CEVAL): Removed compile time option SCM_CAUTIOUS to clean up
5606 the code. Full number of arguments checking of closures is
5607 mandatory now. However, the option to disable the checking has
5608 most probably not been used anyway.
5609
5610 2002-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
5611
5612 * __scm.h (SCM_RECKLESS), backtrace.c (SCM_ASSERT), debug.c
5613 (scm_debug_options), eval.c (scm_lookupcar, scm_lookupcar1,
5614 scm_badargsp, SCM_CEVAL, SCM_APPLY, scm_map, scm_for_each),
5615 feature.c (scm_init_feature), gsubr.c (scm_gsubr_apply), numbers.c
5616 (scm_logand, scm_logior, scm_logxor, scm_i_dbl2big), srcprop.c
5617 (scm_source_properties, scm_set_source_properties_x,
5618 scm_source_property): Removed compile time option SCM_RECKLESS to
5619 clean up the code. Full number of arguments checking of closures
5620 is mandatory now. However, the option to disable the checking has
5621 most probably not been used anyway.
5622
5623 * srcprop.c (scm_source_properties, scm_set_source_properties_x,
5624 scm_source_property): Use !SCM_CONSP instead of SCM_NCONSP.
5625
5626 2002-06-30 Gary Houston <ghouston@arglist.com>
5627
5628 * dynl.c: Removed all SCM_DEFER_INTS/SCM_ALLOW_INTS, which won't
5629 do anything useful. Added a comment about need for a mutex if
5630 pre-emptive threading is supported.
5631
5632 * posix.c (scm_convert_exec_args), dynl.c
5633 (scm_make_argv_from_stringlist): static procs: 1) renamed both to
5634 allocate_string_pointers. 2) simplified: don't reallocate the
5635 strings, just make an array of pointers 3) avoid memory leaks on
5636 error 4) let the procedure report errors in its own name.
5637 Consequences: 1) the procedures now assume that SCM strings are
5638 nul-terminated, which should always be the case. 2) Since strings
5639 are not reallocated, it's now possible for strings passed to
5640 dynamic-args-call to be mutated.
5641
5642 2002-06-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
5643
5644 * __scm.h, eval.c, eval.h: Removed compile time option
5645 MEMOIZE_LOCALS to clean up the code. Now, caching of local
5646 variable positions during memoization is mandatory. However, the
5647 option to disable the caching has most probably not been used
5648 anyway.
5649
5650 2002-06-18 Marius Vollmer <mvo@zagadka.ping.de>
5651
5652 * print.c (scm_simple_format): Print missing part of format before
5653 ~% control. Thanks to Daniel Skarda!
5654
5655 2002-06-01 Marius Vollmer <mvo@zagadka.ping.de>
5656
5657 * mkstemp.c: Added exception notice to license statement.
5658
5659 2002-05-22 Marius Vollmer <mvo@zagadka.ping.de>
5660
5661 * numbers.c (mem2ureal): When returning an inexact zero, make sure
5662 it is represented as a floating point value so that we can change
5663 its sign.
5664
5665 From John W. Eaton <jwe@bevo.che.wisc.edu>
5666
5667 * numbers.c (idbl2str): Don't omit sign when printing negative zero.
5668
5669 2002-05-14 Thien-Thi Nguyen <ttn@giblet.glug.org>
5670
5671 * gc_os_dep.c: For I386/OPENBSD, allow for `__i386__'
5672 in addition to `i386'. Thanks to Dale P. Smith.
5673
5674 2002-05-08 Marius Vollmer <mvo@zagadka.ping.de>
5675
5676 * eq.c (real_eqv): New.
5677 (scm_eqv_p): Use it when comparing reals and complexes.
5678
5679 * numbers.c: Include <string.h>, for strncmp.
5680 (mem2complex): Do not create negative NaNs.
5681 (scm_leq_p, scm_geq_p): Explicitely return #f when comparing a
5682 NaN.
5683 (scm_inexact_to_exact): Signal error when converting a NaN.
5684
5685 2002-05-06 Marius Vollmer <mvo@zagadka.ping.de>
5686
5687 * posix.c (scm_putenv): Handle removing variables explicitely by
5688 calling unsetenv.
5689
5690 From John W. Eaton.
5691
5692 * numbers.h: Conditionally include floatingpoint.h, ieeefp.h, and
5693 nan.h. Provide declarations for scm_inf_p, scm_nan_p, scn_inf,
5694 and scm_nan.
5695 * numbers.c: [SCO && ! HAVE_ISNAN] (isnan): New function.
5696 [SCO && ! HAVE_ISINF] (isinf): New function.
5697 (xisinf, xisnan): New functions.
5698 (IS_INF): Delete.
5699 (isfinite): Define in terms of xisinf.
5700 (scm_inf_p, scm_nan_p): New functions.
5701 (guile_Inf, guile_NaN): New file-scope vars.
5702 (guile_ieee_init): New function.
5703 (scm_inf, scm_nan): New functions.
5704 (idbl2str): Handle Inf and NaN. Remove funny label and
5705 corresponding gotos.
5706 (ALLOW_DIVIDE_BY_ZERO): New macro.
5707 (scm_divide): Allow division by zero to occur if
5708 ALLOW_DIVIDE_BY_ZERO is defined.
5709 Handle bignums and ints as special cases.
5710
5711 Additional stuff by me:
5712
5713 numbers.c (mem2ureal): Recognize "inf.0" and "nan.xxx".
5714 (scm_even_p, scm_odd_p): Treat infinity as even and odd.
5715 (iflo2str): Don't output a '+' for negative numbers or for Inf and
5716 NaN. They will provide their own sign.
5717 (scm_divide): Only allow divides by inexact zeros. Dividing by
5718 exact zeros still signals an errors.
5719
5720 2002-04-22 Thien-Thi Nguyen <ttn@giblet.glug.org>
5721
5722 * goops.h (scm_slot_exists_p): Rename from scm_slots_exists_p.
5723 * goops.c (scm_slot_exists_p): Rename from scm_slots_exists_p.
5724 (scm_slot_exists_p): Rename from scm_slots_exists_p.
5725 Thanks to Andreas Rottmann.
5726
5727 2002-04-20 Gary Houston <ghouston@arglist.com>
5728
5729 * removal of unused fields in root state (thanks to Christopher
5730 Cramer for pointing out the disuse.)
5731 * root.h (scm_root_state): removed def_inp, def_outp, def_errp.
5732 (scm_def_inp, scm_def_outp, scm_def_errp): removed.
5733
5734 * root.c (root_mark): don't mark them.
5735 (scm_make_root): don't set them to #f.
5736 * init.c (scm_init_standard_ports): don't initialise with the
5737 default ports.
5738
5739 2002-04-17 Marius Vollmer <mvo@zagadka.ping.de>
5740
5741 * Makefile.am (EXTRA_DIST): Added cpp_err_symbols.c and
5742 cpp_sig_symbols.c.
5743
5744 2002-04-16 Marius Vollmer <mvo@zagadka.ping.de>
5745
5746 * guile-snarf.in: Do not clean input file. This would write to
5747 the $(srcdir) during a VPATH build, which is not allowed. It also
5748 isn't needed since it only works when an output filename has been
5749 specified and in that case we don't need to clean the input file
5750 because the output file will already exist.
5751
5752 2002-03-31 Marius Vollmer <mvo@zagadka.ping.de>
5753
5754 * guile-snarf: Install the trap for removing $cleanfile only when
5755 the value of $cleanfile is actually known.
5756
5757 2002-04-10 Rob Browning <rlb@defaultvalue.org>
5758
5759 * .cvsignore: add versiondat.h and *.c.clean.c.
5760
5761 2002-03-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
5762
5763 * srcprop.[ch] (scm_c_source_property_breakpoint_p): New
5764 function, replaces macro SRCBRKP.
5765
5766 (SRCBRKP): Deprecated.
5767
5768 * eval.c (SCM_CEVAL): Replaced use of SRCBRKP by call to
5769 scm_c_source_property_breakpoint_p. Removed some use of arg1 as
5770 temporary variable.
5771
5772 2002-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5773
5774 * debug.h, eval.c: Deprecated CHECK_ENTRY, CHECK_APPLY and
5775 CHECK_EXIT and removed all references to them.
5776
5777 2002-03-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
5778
5779 * debug.h (scm_ready_p, debug_print): Removed declarations.
5780
5781 * eval.c (EVALCELLCAR): Removed.
5782
5783 (SCM_CEVAL): Eliminated label loopnoap. Removed side-effecting
5784 operation from condition.
5785
5786 2002-03-24 Marius Vollmer <mvo@zagadka.ping.de>
5787
5788 * guile-snarf.in: When the output filename is "-", write to
5789 stdout. When no "-o" option is given, use "-" as the output
5790 filename (i.e., stdout). Only 'clean' the inputfile or remove the
5791 output file on error when the output file name is not "-". Define
5792 the preprocessor macro SCM_MAGIC_SNARFER while snarfing.
5793
5794 * Makefile.am (.c.x): Pass "-o $@" to guile-snarf.
5795
5796 2002-03-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
5797
5798 * eval.c (SCM_CEVAL, SCM_APPLY): Eliminated labels wrongnumargs
5799 and the corresponding goto statements. Removed redundant code.
5800
5801 2002-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
5802
5803 * eval.c (SCM_CEVAL): Minimized scope of variable arg2.
5804 Eliminated redundant SCM_IMP check. Exlined call to EVALCAR.
5805 Re-enabled handing of rpsubrs and asubrs.
5806
5807 2002-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
5808
5809 * eval.c (SIDEVAL): Removed.
5810
5811 (SCM_CEVAL): Minimized scope of variable orig_sym. Eliminated
5812 goto-labels cdrxnoap, cdrxbegin and nontoplevel_cdrxnoap. Changed
5813 argument checking order for set! to locals, variables and symbols.
5814 Improvements to control structure. Removed some uses of arg1 and
5815 arg2 as temporary variables.
5816
5817 2002-03-15 Thien-Thi Nguyen <ttn@giblet.glug.org>
5818
5819 * guile-snarf.in: Remove "--compat=1.4" support.
5820 Add "-d" and "-D" support.
5821
5822 (deprecated_list): New var.
5823 (compat_mode_clean_xxx): Delete.
5824 (grep_deprecated): New func.
5825 ("main"): If "-d" or "-D", call `grep_deprecated'.
5826
5827 2002-03-15 Neil Jerram <neil@ossau.uklinux.net>
5828
5829 * hooks.h: Change scm_t_c_hookype_t everywhere to
5830 scm_t_c_hook_type.
5831
5832 Docstring fixes:
5833
5834 * strings.c (scm_string_p): Change unnecessary `iff' to `if'.
5835
5836 * ports.c (scm_sys_make_void_port): Use `@file'.
5837
5838 * numbers.c (scm_number_p, scm_real_p): Use `otherwise' rather
5839 than `else'.
5840
5841 * macros.c (scm_makmacro): Don't say that the form replaces its
5842 source, because it doesn't.
5843 (scm_makmmacro): Clarify difference between this and scm_makmacro.
5844
5845 * backtrace.c (scm_display_error), filesys.c (scm_umask,
5846 scm_select, scm_basename), goops.c (scm_method_generic_function),
5847 numbers.c (scm_integer_length), posix.c (scm_getgroups, scm_execl,
5848 scm_setlocale, scm_flock), socket.c (scm_shutdown): Correct
5849 spelling mistakes.
5850
5851 * debug.c (scm_debug_options), eval.c
5852 (scm_eval_options_interface), read.c (scm_read_options): Change
5853 incorrect @var in docstring to @code.
5854
5855 2002-03-14 Marius Vollmer <mvo@zagadka.ping.de>
5856
5857 * unif.c (singp): Use SCM_REALP instead of SCM_SLOPPY_REALP.
5858
5859 * snarf.h (SCM_SNARF_INIT): Add "^:^" after code so that
5860 guile-snarf can remove trailing non-init code.
5861
5862 * guile-snarf.in (modern_snarf): Remove everything following and
5863 including "^:^" from the output.
5864
5865 2002-03-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
5866
5867 * eval.c (SCM_CEVAL), srcprop.h (SRCBRKP): Eliminated union 't'.
5868
5869 * eval.c (SCM_CEVAL): Exlined call to EVALCAR.
5870
5871 2002-03-13 Thien-Thi Nguyen <ttn@giblet.glug.org>
5872
5873 * guile-snarf.in: Update copyright.
5874 Rewrite to internalize error handling.
5875 Add "--compat=1.4" handling.
5876 Add commentary.
5877
5878 * Makefile.am (libpath.h): Use @top_srcdir_absolute@.
5879 (snarfcppopts): New var.
5880 (.c.x): Use $(snarfcppopts). Rework guile-snarf usage.
5881 (.c.doc): Use $(snarfcppopts).
5882
5883 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
5884 continuations.c, debug-malloc.c, debug.c, deprecation.c, dynl.c,
5885 dynwind.c, environments.c, eq.c, error.c, eval.c, evalext.c,
5886 extensions.c, feature.c, filesys.c, fluids.c, fports.c, gc.c,
5887 goops.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
5888 ioext.c, iselect.c, keywords.c, lang.c, list.c, load.c, macros.c,
5889 modules.c, net_db.c, numbers.c, objects.c, objprop.c, options.c,
5890 pairs.c, ports.c, posix.c, print.c, procprop.c, procs.c,
5891 properties.c, ramap.c, random.c, rdelim.c, read.c, regex-posix.c,
5892 root.c, rw.c, scmsigs.c, script.c, simpos.c, socket.c, sort.c,
5893 srcprop.c, stackchk.c, stacks.c, stime.c, strings.c, strop.c,
5894 strorder.c, strports.c, struct.c, symbols.c, threads.c, throw.c,
5895 unif.c, values.c, variable.c, vectors.c, version.c, vports.c,
5896 weaks.c: Retire inclusion guard macro SCM_MAGIC_SNARFER.
5897
5898 2002-03-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
5899
5900 * eval.c (SCM_CEVAL): Got rid of the last reference to t.lloc.
5901 The next step will be to remove the union 't' and simplify the
5902 code of SCM_CEVAL that way.
5903
5904 2002-03-12 Neil Jerram <neil@ossau.uklinux.net>
5905
5906 * iselect.c (collisionp, gnfds, greadfds, gwritefds, gexceptfds,
5907 rreadfds, rwritefds, rexceptfds): Made static.
5908
5909 * gc.c (terminating), fports.c (terminating): Renamed
5910 scm_i_terminating.
5911
5912 2002-03-11 Marius Vollmer <mvo@zagadka.ping.de>
5913
5914 * numbers.c (scm_divide): Adapt code from libstdc++/f2c to void
5915 potential overflow problems. Thanks to John W Eaton!
5916
5917 * strop.c (string_capitalize_x): Treat characters as unsigned so
5918 that 8-bit chars work. Thanks to David Pirotte!
5919
5920 2002-03-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
5921
5922 * eval.c (SCM_CEVAL): Cleaned up the handling of 'slot-ref',
5923 'slot-set!' and 'nil-cond'. Removed some uses of t.arg1, arg2 and
5924 proc as temporary variables. Introduced temporary variables with
5925 hopefully descriptive names for clarification. Replaced SCM_N?IMP
5926 by a more explicit predicate in some places.
5927
5928 2002-03-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
5929
5930 * eval.c (SCM_CEVAL): Cleaned up the handling of #@dispatch.
5931 Added lots of comments regarding the implementation of #@dispatch.
5932 Changed intra-procedure communication to use t.arg1 instead of
5933 arg2. Removed some uses of t.arg1, t.lloc and proc as temporary
5934 variables. Introduced temporary variables with hopefully
5935 descriptive names for clarification. Replaced SCM_N?IMP by a more
5936 explicit predicate in some places. Use SCM_INSTANCE_HASH instead
5937 of computing the expression explicitly. Eliminate now unused
5938 label nontoplevel_cdrxbegin.
5939
5940 * goops.h (SCM_INSTANCE_HASH): New macro.
5941
5942 * objects.h (SCM_CMETHOD_FORMALS, SCM_CMETHOD_BODY): New macros.
5943
5944 2002-03-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
5945
5946 * Makefile.am (bin_SCRIPTS): Revive this decl, w/ initial element
5947 "guile-snarf" moved back from `noinst_SCRIPTS'.
5948
5949 2002-03-08 Neil Jerram <neil@ossau.uklinux.net>
5950
5951 * srcprop.c (scm_set_source_property_x): If SRCPROPS obj already
5952 exists when adding a source property other than those that are
5953 handled explicitly, add the new property to the SRCPROPS obj's
5954 plist.
5955
5956 * debug.h (SCM_MAX_FRAME_SIZE): Remove incorrect comment about use
5957 of SCM_MAX_FRAME_SIZE as a bit mask; it isn't used like this.
5958
5959 * eval.c (SCM_CEVAL): Don't store scm_debug_eframe_size in
5960 debug.status. It isn't needed, and it can overflow the bits
5961 reserved for it (which may lead to a segv or a GC abort).
5962
5963 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5964
5965 * eval.c (SCM_CEVAL): Cleaned up the handling of 'apply'. Removed
5966 side-effecting operations from conditions and macro calls.
5967 Replaced SCM_N?IMP by a more explicit predicate in some places.
5968 Minimized the scope of some variables.
5969
5970 2002-03-02 Stefan Jahn <stefan@lkcc.org>
5971
5972 * convert.i.c: Fixed int <-> long conversions which would have
5973 failed if their sizes were different.
5974
5975 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5976
5977 * eval.c (SCM_CEVAL): Cleaned up the handling of 'if', 'let',
5978 'letrec' and 'set*': Removed some uses of t.arg1, t.lloc and proc
5979 as temporary variables. Removed side-effecting operations from
5980 conditions and macro calls. Introduced temporary variables with
5981 hopefully descriptive names for clarification. Replaced SCM_N?IMP
5982 by a more explicit predicate in some places. Removed code that
5983 was conditionally compiled if SICP was defined - which it never
5984 is.
5985
5986 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5987
5988 * eval.c (SCM_CEVAL): Cleaned up the handling of 'cons' and 'do':
5989 Removed some uses of t.arg1 and proc as temporary variables.
5990 Removed side-effecting operations from conditions and macro calls.
5991 Introduced temporary variables with hopefully descriptive names
5992 for clarification. Replaced SCM_N?IMP by a more explicit
5993 predicate in some places.
5994
5995 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5996
5997 * eval.c (scm_badargsp, SCM_CEVAL): Replaced SCM_N?IMP by a more
5998 explicit predicate in some places.
5999
6000 (CHECK_EQVISH): Removed.
6001
6002 (SCM_CEVAL): Removed some uses of t.arg1 and proc as temporary
6003 variables. Removed side-effecting operations from conditions and
6004 macro calls. Introduced temporary variables for clarification.
6005 Sorted if-else-if check for the type of the last form in a list by
6006 frequency. Avoided some unnecessary tail-recursion calls.
6007
6008 2002-03-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
6009
6010 * gc.c (SCM_HEAP_SEG_SIZE, CELL_UP, CELL_DN, NEXT_DATA_CELL,
6011 init_heap_seg, alloc_some_heap), gc.h (struct scm_cell, struct
6012 scm_t_cell, SCM_CELLPTR, SCM_GC_CARD_SIZE,
6013 SCM_GC_IN_CARD_HEADERP), tags.h (SCM_CELLP): Renamed the struct
6014 scm_cell and all its uses to scm_t_cell in accordance to Guile's
6015 naming scheme for types.
6016
6017 * alist.c (scm_acons), convert.i.c (CTYPES2UVECT,
6018 CTYPES2UVECT_OPTIONAL), coop-threads.c (scm_call_with_new_thread,
6019 scm_spawn_thread), debug.c (scm_make_debugobj), environments.c
6020 (scm_make_environment), eval.c (scm_closure), fports.c
6021 (scm_fdes_to_port), gc.c (scm_deprecated_newcell,
6022 scm_deprecated_newcell2), inline.h (scm_alloc_cell, scm_cell),
6023 list.c (SCM_I_CONS), numbers.c (scm_i_mkbig), pairs.c (scm_cons),
6024 ports.c (scm_void_port), procs.c (scm_c_make_subr, scm_makcclo),
6025 smob.c (scm_make_smob), smob.h (SCM_NEWSMOB), strings.c
6026 (scm_take_str, scm_allocate_string), strports.c (scm_mkstrport),
6027 unif.c (scm_make_uve), variable.c (make_variable), vectors.c
6028 (scm_c_make_vector), vports.c (scm_make_soft_port): Renamed
6029 scm_alloc_cell to scm_cell.
6030
6031 * environments.c (core_environments_observe), gc.c
6032 (scm_deprecated_newcell2), goops.c (wrap_init, scm_wrap_object),
6033 inline.h (scm_alloc_double_cell, scm_double_cell), num2float.i.c
6034 (FLOAT2NUM), numbers.c (scm_make_real), procs.c
6035 (scm_make_procedure_with_setter), smob.h (SCM_NEWSMOB2,
6036 SCM_NEWSMOB3), struct.c (scm_make_struct, scm_make_vtable_vtable),
6037 symbols.c (scm_mem2symbol, scm_mem2uninterned_symbol), weaks.c
6038 (allocate_weak_vector): Renamed scm_alloc_double_cell to
6039 scm_double_cell.
6040
6041 2002-02-27 Stefan Jahn <stefan@lkcc.org>
6042
6043 * convert.i.c, convert.c: Better range checking.
6044
6045 * inet_aton.c, fports.c: Commented the inclusion of <winsock2.h>.
6046
6047 * deprecation.c (vsnprintf): Define to `_vsnprintf' for
6048 Windows (MinGW).
6049
6050 2002-02-26 Thien-Thi Nguyen <ttn@giblet.glug.org>
6051
6052 * Makefile.am: Update path to pre-inst-guile automake frag.
6053
6054 2002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6055
6056 * gc.c (scm_gc_sweep): Make it compile even when deprecated
6057 features are excluded.
6058
6059 2002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6060
6061 * num2integral.i.c (NUM2INTEGRAL): Fixed signedness problem.
6062
6063 2002-02-25 Gary Houston <ghouston@arglist.com>
6064
6065 * convert.c: include <string.h> for convert_i.c.
6066
6067 2002-02-24 Rob Browning <rlb@defaultvalue.org>
6068
6069 * .cvsignore: add stamp-h1.
6070
6071 2002-02-21 Neil Jerram <neil@ossau.uklinux.net>
6072
6073 * unif.c (scm_array_to_list): Correct name, which had been
6074 accidentally changed to scm_t_arrayo_list!
6075
6076 2002-02-20 Mikael Djurfeldt <mdj@linnaeus>
6077
6078 * gc.c (scm_gc_sweep): Print an error message when aborting due to
6079 underflowing scm_mallocated.
6080
6081 2002-02-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6082
6083 * gc.h, gc.c (scm_must_malloc, scm_must_realloc, scm_must_strdup,
6084 scm_must_strndup, scm_done_malloc, scm_done_free, scm_must_free):
6085 Reimplemented using the new scm_gc_malloc, etc., functions and
6086 deprecated.
6087
6088 2002-02-11 Thien-Thi Nguyen <ttn@giblet.glug.org>
6089
6090 * Makefile.am (bin_PROGRAMS): Move `guile_filter_doc_snarfage'
6091 to `noinst_PROGRAMS'.
6092 (bin_SCRIPTS): Move all values to `noinst_SCRIPTS'; delete.
6093 (noinst_PROGRAMS, noinst_SCRIPTS): New.
6094
6095 2002-02-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6096
6097 * gc.h, gc.c (scm_gc_sweep): Issue deprecation warning when
6098 non-zero is returned from a port or smob free function.
6099 (scm_malloc, scm_realloc, scm_strndup, scm_strdup,
6100 scm_gc_register_collectable_memory,
6101 scm_gc_unregister_collectable_memory, scm_gc_malloc,
6102 scm_gc_realloc, scm_gc_free, scm_gc_strndup, scm_gc_strdup): New.
6103
6104 * backtrace.c, continuations.c, convert.i.c, coop-threads.c,
6105 debug-malloc.c, dynl.c, environments.c, environments.h,
6106 extensions.c, filesys.c, fports.c, gc.c, gc.h, gh_data.c, goops.c,
6107 guardians.c, hooks.c, init.c, keywords.c, load.c, numbers.c,
6108 ports.c, posix.c, procs.c, rdelim.c, regex-posix.c, root.c,
6109 smob.c, stime.c, strings.c, struct.c, struct.h, symbols.c, unif.c,
6110 vectors.c, weaks.c: Use scm_gc_malloc/scm_malloc and
6111 scm_gc_free/free instead of scm_must_malloc and scm_must_free, as
6112 appropriate. Return zero from smob and port free functions.
6113
6114 * debug-malloc.c (scm_malloc_reregister): Handle "old == NULL".
6115
6116 * deprecation.h, deprecation.c: Reimplemented to allow deprecation
6117 messages while the GC is running.
6118 (scm_c_issue_deprecation_warning_fmt): New.
6119
6120 * fports.c (scm_setvbuf): Reset read buffer to saved values when
6121 it is pointing to the putback buffer.
6122
6123 2002-02-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
6124
6125 * gsubr.c (create_gsubr): On "too many args" error,
6126 also display arg count and name. Thanks to Bill Schottstaedt.
6127
6128 2002-02-05 Thien-Thi Nguyen <ttn@giblet.glug.org>
6129
6130 * Makefile.am: Include $(top_srcdir)/pre-inst-guile.am.
6131
6132 (bin_SCRIPTS): Remove guile-snarf-docs-texi.
6133 (alldotdocfiles, snarf2checkedtexi, dotdoc2texi): New vars.
6134 (guile.texi, guile-procedures.texi): Use $(dotdoc2texi).
6135
6136 * guile-snarf-docs-texi.in: Bye bye.
6137
6138 2002-02-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6139
6140 * symbols.c (scm_make_symbol): Fix typo in docstring.
6141
6142 * symbols.h (scm_mem2uninterned_symbol, scm_symbol_interned_p,
6143 scm_make_symbol): New prototypes.
6144
6145 2002-02-03 Marius Vollmer <mvo@zagadka.ping.de>
6146
6147 * symbols.h (SCM_SET_SYMBOL_HASH): Removed.
6148 (SCM_SYMBOL_INTERNED_P): New.
6149 * symbols.c (scm_symbol_hash): Use scm_ulong2num instead of
6150 SCM_MAKINUM since hash values can well be bignums.
6151 (scm_mem2symbol): Only use hash values below SCM_T_BITS_MAX/2.
6152 This signals a interned symbol.
6153 (scm_mem2uninterned_symbol, scm_symbol_interned_p,
6154 scm_make_symbol): New.
6155
6156 * print.c (scm_iprin1): Print uninterned symbols unreadably.
6157
6158 2002-02-02 Thien-Thi Nguyen <ttn@giblet.glug.org>
6159
6160 * __scm.h (HAVE_UINTPTR_T): Only define if UINTPTR_T attributes
6161 are defined: UINTPTR_MAX, INTPTR_MAX, INTPTR_MIN.
6162 Thanks to Dave Love.
6163
6164 2002-01-31 Marius Vollmer <mvo@zagadka.ping.de>
6165
6166 * symbols.c (scm_gensym): Use " g" as default prefix, not "g".
6167 This might help to make unintended clashes less likely.
6168 (scm_string_to_symbol): Protect the string until the symbols is
6169 created.
6170
6171 2002-01-31 Stefan Jahn <stefan@lkcc.org>
6172
6173 * convert.c, convert.h, convert.i.c: New files containing C
6174 array to Scheme conversion helpers meant to be replacement
6175 functions for the deprecated gh interface.
6176
6177 * Makefile.am: Setup rules for new `convert.*' files.
6178
6179 2002-01-28 Stefan Jahn <stefan@lkcc.org>
6180
6181 * symbols.c (scm_c_symbol2str): New function, replacement for
6182 `gh_scm2newsymbol()'.
6183
6184 * strings.c (scm_c_substring2str): New function. Proper
6185 replacement for `gh_get_substr()'.
6186
6187 * socket.c: Include `stdint.h' if available for the `uint32_t'
6188 declaration.
6189
6190 * scmsigs.c (scm_sigaction): Initialize `chandler' (inhibits
6191 compiler warning).
6192
6193 * backtrace.c: Include `lang.h' for GUILE_DEBUG conditional.
6194
6195 2002-01-22 Neil Jerram <neil@ossau.uklinux.net>
6196
6197 Other changes unrelated to Elisp...
6198
6199 * eval.c (scm_m_if): Use s_if rather than repeating string literal
6200 "if".
6201 (comments): Fix a few typos.
6202 (scm_for_each): Add parentheses around oddly unparenthesized
6203 if/while conditions.
6204
6205 * read.c (scm_read_opts): Add full stop at end of doc for
6206 `keywords' option.
6207
6208 * script.c (scm_compile_shell_switches): Use scm_str2symbol
6209 instead of gh_symbol2scm.
6210
6211 * srcprop.h (SRCPROPBRK): Return C type rather than SCM.
6212 (SRCBRKP): Use SRCPROPBRK rather than duplicating its logic.
6213
6214 * srcprop.c (scm_srcprops_to_plist, scm_source_property): Change
6215 SRCPROPBRK (x) to SCM_BOOL (SRCPROPBRK (x)).
6216
6217 First batch of changes for Elisp support...
6218
6219 * alist.c, async.c, boolean.c, dynl.c, eval.c, filesys.c,
6220 fluids.c, list.c, load.c, options.c, posix.c, print.c, sort.c,
6221 throw.c, vectors.c, weaks.c: Add #include for lang.h.
6222
6223 * eval.c, eval.h, init.c, lang.c, lang.h: Use SCM_ENABLE_ELISP to
6224 conditionalize compilation and initialization of Elisp support
6225 function.
6226
6227 * alist.c (scm_assq, scm_assv, scm_assoc), async.c
6228 (scm_asyncs_pending, scm_run_asyncs, noop), backtrace.c
6229 (scm_set_print_params_x), dynl.c (scm_make_argv_from_stringlist),
6230 filesys.c (fill_select_type, retrieve_select_type), fluids.c
6231 (scm_swap_fluids, scm_swap_fluids_reverse), list.c (scm_null_p,
6232 scm_ilength, scm_append_x, scm_last_pair, scm_reverse,
6233 scm_reverse_x, scm_list_ref, scm_list_set_x, scm_list_cdr_set_x,
6234 scm_c_memq, scm_memv, scm_member), load.c (scm_search_path),
6235 options.c (change_option_setting, scm_options), posix.c
6236 (environ_list_to_c), print.c (scm_iprlist), throw.c
6237 (scm_exit_status), vectors.c (scm_vector), weaks.c
6238 (scm_weak_vector): Use SCM_NULL_OR_NIL_P instead of SCM_NULLP.
6239
6240 * boolean.c (scm_not): Use `SCM_FALSEP || SCM_NILP' instead of
6241 just SCM_FALSEP.
6242
6243 * boolean.c (scm_boolean_p): Use `SCM_BOOLP || SCM_NILP' instead
6244 of just SCM_BOOLP.
6245
6246 * eval.c (scm_lisp_nil, scm_lisp_t, s_nil_ify, scm_m_nil_ify,
6247 s_t_ify, scm_m_t_ify, s_0_cond, scm_m_0_cond, s_0_ify,
6248 scm_m_0_ify, s_1_ify, scm_m_1_ify): Removed.
6249 (scm_m_atfop): Support function aliasing. Support both function
6250 args, which need transformation, and macro args, which do not.
6251 Add explanatory comments.
6252 (SCM_CEVAL): In switch cases for SCM_IM_AND, SCM_IM_COND,
6253 SCM_IM_DO, SCM_IM_IF and SCM_IM_OR, add `|| SCM_NILP' to existing
6254 checks for SCM_FALSEP. In switch case for SCM_IM_NIL_COND, use
6255 SCM_NULLP || SCM_NILP instead of checks against (removed)
6256 scm_lisp_nil. Removed switch cases for SCM_IM_NIL_IFY,
6257 SCM_IM_T_IFY, SCM_IM_0_COND, SCM_IM_0_IFY, SCM_IM_1_IFY.
6258
6259 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
6260 scm_m_while, scm_nil_eq): Commented out; I don't think we need
6261 these, but I don't want to remove them yet, just in case.
6262 (scm_init_lang): Define `%nil' variable on Scheme level to hold
6263 Elisp nil value.
6264
6265 * lang.h (SCM_NILP): Test against Elisp nil value instead of
6266 against (removed) scm_lisp_nil.
6267 (SCM_NILNULLP, SCM_NIL2EOL, SCM_EOL2NIL): Commented out.
6268 (SCM_NULL_OR_NIL_P): New.
6269
6270 * list.c (scm_append): Use SCM_VALIDATE_NULL_OR_NIL instead of
6271 SCM_VALIDATE_NULL.
6272
6273 * print.c (scm_isymnames): Fix comment. Remove #@nil-ify,
6274 #@t-ify, #@0-cond, #@0-ify, #@1-ify. Add #nil (for SCM_ELISP_NIL
6275 value).
6276
6277 * sort.c (scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
6278 scm_sort_x, scm_sort, scm_stable_sort_x, scm_stable_sort): Use
6279 SCM_NULL_OR_NIL_P instead of SCM_NULLP. In constructions like `if
6280 (SCM_NULLP (x)) return SCM_EOL;', return x rather than SCM_EOL.
6281
6282 * tags.h (SCM_IM_NIL_IFY, SCM_IM_T_IFY, SCM_IM_0_COND,
6283 SCM_IM_0_IFY, SCM_IM_1_IFY): Removed.
6284 (SCM_IM_BIND, SCM_IM_DELAY, SCM_IM_CALL_WITH_VALUES, SCM_UNBOUND):
6285 Numbering shifted down accordingly.
6286 (SCM_ELISP_NIL): New IFLAG.
6287
6288 * validate.h (SCM_VALIDATE_NULL_OR_NIL): New.
6289
6290 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
6291
6292 * eval.c: Removed outdated references to "everr". Improved some
6293 comments.
6294
6295 (scm_deval_args, deval_args): Renamed scm_deval_args to
6296 deval_args, since it is not part of the interface.
6297
6298 (SCM_CEVAL): Added (maybe somewhat verbose) comment. Avoid to
6299 use references to debug.vect[0] before it exists. Add parentheses
6300 to switch statement.
6301
6302 * goops.h: Added local emacs variables.
6303
6304 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
6305
6306 * eval.[ch] (scm_deval_args): Made static.
6307
6308 * srcprop.c (scm_source_property): Remove redundant SCM_IMP
6309 test.
6310
6311 * strings.c (scm_c_string2str): Clarified comment. Replaced
6312 THINKME by FIXME for uniformness. Removed question about whether
6313 arguments need to be protected from garbage collection: Arguments
6314 must be protected as any other variable.
6315
6316 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
6317
6318 * procs.h (SCM_CLOSURE_BODY): New Macro.
6319
6320 * debug.c (scm_procedure_name, scm_procedure_source), eval.c
6321 (SCM_CEVAL, SCM_APPLY), goops.c (scm_sys_initialize_object,
6322 get_slot_value, set_slot_value), procs.c
6323 (scm_procedure_documentation), sort.c (closureless), stacks.c
6324 (get_applybody): Replace SCM_CDR (SCM_CODE (...)) by
6325 SCM_CLOSURE_BODY.
6326
6327 * sort.c (closureless): Prefer !SCM_FOOP over SCM_NFOOP.
6328
6329 2001-12-26 Marius Vollmer <mvo@zagadka.ping.de>
6330
6331 * Makefile.am (guile-procedures.txt): When we don't have makeinfo,
6332 use "cp" instead.
6333
6334 2001-12-16 Marius Vollmer <mvo@zagadka.ping.de>
6335
6336 * stacks.c, stacks.h (scm_t_stackype): Renamed to scm_stack_type
6337 everywhere.
6338
6339 * continuations.c (scm_make_continuation): Do not retain the
6340 throw_value when the continuation is invoked.
6341
6342 2001-12-08 Stefan Jahn <stefan@lkcc.org>
6343
6344 * strings.c (scm_c_string2str): New function. Converts a
6345 given Scheme string into a C string. Also put in two
6346 THINKME's regarding the malloc policy for the missing converter
6347 routines.
6348
6349 2001-12-01 Neil Jerram <neil@ossau.uklinux.net>
6350
6351 * gh_data.c (gh_module_lookup): Use scm_str2symbol rather than
6352 gh_symbol2scm.
6353
6354 2001-11-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
6355
6356 * gc.h (SCM_GC_CELL_WORD, SCM_GC_CELL_OBJECT,
6357 SCM_GC_SET_CELL_WORD, SCM_GC_SET_CELL_OBJECT): New macros.
6358
6359 (SCM_GC_CELL_TYPE, SCM_CELL_WORD, SCM_CELL_OBJECT,
6360 SCM_SET_CELL_WORD, SCM_SET_CELL_OBJECT, SCM_FREE_CELL_CDR,
6361 SCM_GC_SET_CELL_OBJECT): Express in terms of SCM_GC_CELL_*
6362 macros.
6363
6364 (SCM_FREE_CELL_P): Express in terms of SCM_GC_CELL_TYPE.
6365
6366 * inline.h (scm_alloc_cell, scm_alloc_double_cell): Use
6367 SCM_GC_CELL_* macros when accessing free cells.
6368
6369 2001-11-25 Marius Vollmer <mvo@zagadka.ping.de>
6370
6371 * vectors.h (SCM_MAKE_VECTOR_TAG): New.
6372 * unif.h (SCM_MAKE_BITVECTOR_TAG, SCM_MAKE_UVECTOR_TAG): New.
6373 * symbols.h (SCM_MAKE_SYMBOL_TAG): New.
6374 * strings.h (SCM_MAKE_STRING_TAG): New.
6375 * procs.h (SCM_MAKE_CCLO_TAG): New.
6376 * numbers.h (SCM_MAKE_BIGNUM_TAG): New.
6377
6378 * goops.h: Replaced SCM_DEBUG_DEPRECATED with
6379 !SCM_ENABLE_DEPRECATED.
6380
6381 * async.c, async.h (scm_system_async_mark_from_signal_handler):
6382 New.
6383
6384 * scmsigs.c (scm_take_signal): Removed all code that assumes that
6385 signal handlers are allowed to divert the flow of control. Call
6386 scm_system_async_mark_from_signal_handler instead of
6387 scm_system_async_mark.
6388
6389
6390 Deprecated SCM_NEWCELL and SCM_NEWCELL2. Added scm_alloc_cell and
6391 scm_alloc_double_cell in their place.
6392
6393 * gc.h (SCM_GC_SET_ALLOCATED, scm_debug_newcell,
6394 scm_debug_newcell2, scm_tc16_allocated): Removed from header.
6395 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
6396 (SCM_NEWCELL, SCM_NEWCELL2): Implement in terms of
6397 scm_deprecated_newcell and scm_deprecated_newcell2.
6398
6399 gc.c (scm_tc16_allocated): Only define when including deprecated
6400 features.
6401 (scm_debug_newcell, scm_debug_newcell2): Removed.
6402 (scm_init_storage): Do not initialize scm_tc16_allocated.
6403 (scm_init_gc): Do it here.
6404 (allocated_mark): New, from old code.
6405 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
6406
6407 * inline.c, inline.h: New files.
6408 * Makefile.am: Added them in all the right places.
6409
6410 * _scm.h: Include "libguile/inline.h".
6411
6412 * alist.c, coop-threads.c, debug.c, environments.c, eval.c,
6413 fports.c, gh_data.c, goops.c, guardians.c, lang.c, list.c,
6414 num2float.i.c, numbers.c, pairs.c, ports.c, print.c, procs.c,
6415 smob.c, smob.h, strings.c, strports.c, struct.c, symbols.c,
6416 unif.c, variable.c, vectors.c, vports.c, weaks.c: Replaced
6417 SCM_NEWCELL and SCM_NEWCELL2 with scm_alloc_cell and
6418 scm_alloc_double_cell, respectively.
6419
6420 2001-11-23 Marius Vollmer <mvo@zagadka.ping.de>
6421
6422 * modules.c (scm_c_use_module): Adapt to changes to
6423 `process-use-modules'.
6424
6425 2001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
6426
6427 * numbers.c (scm_divide): Fix more division by zero errors.
6428
6429 2001-11-21 Gary Houston <ghouston@arglist.com>
6430
6431 * Makefile.am (OMIT_DEPENDENCIES): removed, since it seems to be
6432 obsolete. autogen.sh says:
6433 invalid unused variable name: `OMIT_DEPENDENCIES'
6434
6435 2001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
6436
6437 * numbers.c (scm_divide): Fix (/ 0). Thanks to Keith Wright for
6438 reporting the bug.
6439
6440 2001-11-21 Marius Vollmer <mvo@zagadka.ping.de>
6441
6442 * Makefile.am (install-exec-hook): Prepend $(DESTDIR) to filename.
6443 Thanks to Eric Gillespie, Jr!
6444
6445 2001-11-21 Stefan Jahn <stefan@lkcc.org>
6446
6447 * win32-socket.c (getservent, setservent, endservent,
6448 getprotoent, setprotoent, endprotoent): New functions.
6449 Appropriate replacements for M$-Windows.
6450
6451 * numbers.c (SIZE_MAX, PTRDIFF_MAX, PTRDIFF_MIN): Reintroduced
6452 these definitions for GUILE_DEBUG.
6453
6454 * net_db.c: Include "win32-socket.h" if compiling with a native
6455 M$-Windows compiler. Include some pieces of code (protoent and
6456 servent interface) protected by HAVE_* macros when using a
6457 native M$-Windows compiler.
6458
6459 2001-11-20 Marius Vollmer <mvo@zagadka.ping.de>
6460
6461 * modules.c (scm_c_export): Do nothing when the first argument is
6462 already the terminating NULL. Thanks to Han-Wen Nienhuys!
6463
6464 2001-11-20 Thien-Thi Nguyen <ttn@glug.org>
6465
6466 * Makefile.am (libpath.h): In SCM_BUILD_INFO,
6467 also include `buildstamp'.
6468
6469 2001-11-18 Rob Browning <rlb@defaultvalue.org>
6470
6471 * version.c
6472 (s_scm_major_version): use SCM_MAJOR_VERSION.
6473 (s_scm_minor_version): use SCM_MINOR_VERSION.
6474 (s_scm_micro_version): use SCM_MICRO_VERSION.
6475 (s_scm_version): use SCM_MAJOR_VERSION, SCM_MINOR_VERSION, and
6476 SCM_MICRO_VERSION.
6477
6478 * version.h.in
6479 (SCM_MAJOR_VERSION): renamed from SCM_GUILE_MAJOR_VERSION.
6480 (SCM_MINOR_VERSION): renamed from SCM_GUILE_MINOR_VERSION.
6481 (SCM_MICRO_VERSION): renamed from SCM_GUILE_MICRO_VERSION.
6482
6483 2001-11-18 Neil Jerram <neil@ossau.uklinux.net>
6484
6485 * vectors.c (scm_vector_move_left_x, scm_vector_move_right_x):
6486 Rewrite docstrings without reference to substring-move-left/right,
6487 since the latter no longer exist.
6488
6489 2001-11-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
6490
6491 * eval.c: Removed bogus comment about acros.
6492
6493 (scm_unmemocar): Use !SCM_CONSP instead of SCM_IMP.
6494 Minimize scope of local variable. Eliminate dependency on
6495 macro DEBUG_EXTENSIONS.
6496
6497 (s_splicing): New error message string.
6498
6499 (scm_m_body): Issue 'bad body' message rather than 'missing
6500 expression' message.
6501
6502 (scm_m_quote): Eliminate unnecessary copying.
6503
6504 (scm_m_lambda, scm_m_letstar, scm_m_letrec, scm_m_let): Leave the
6505 checking of the body to scm_m_body.
6506
6507 (scm_m_do): Move comment to function header. Rename arg1 to
6508 binding. Made the code a bit easier to read.
6509
6510 (evalcar): Removed.
6511
6512 (iqq): Added a comment. Changed the depth parameter to
6513 unsigned. Use size_t for vector lengths. Make sure vector object
6514 is gc protected as long as its contents are read. Add some syntax
6515 checks. Get rid of unnecessary SCM_IMP test. Clean up the
6516 control structure a bit.
6517
6518 (scm_m_delay): Added comment about the implementation of
6519 scm_m_delay.
6520
6521 (scm_m_define): Add comment about guile's currying define
6522 syntax. Renamed 'proc' to 'name'. Eliminate dependency on macro
6523 DEBUG_EXTENSIONS. Simplified code a bit. Eliminate SICP code.
6524
6525 (scm_m_letrec1): Removed. Part of the functionality is taken
6526 over by the new function 'transform_bindings'.
6527
6528 (transform_bindings): New function. Takes over some of the
6529 functionality of removed function 'scm_m_letrec1', namely to split
6530 a list of bindings into a reversed list of variables and a list of
6531 initializers.
6532
6533 (scm_m_letrec): Call 'transform_bindings'.
6534
6535 (scm_m_let): Minimized scope of local variables. Renamed 'proc'
6536 to 'temp' and 'arg1' to 'binding'. Eliminated redundant SCM_NIMP
6537 test. Use 'transform_bindings'. Fixed scoping error with named
6538 let (Thanks to Aubrey Jaffer for reporting the bug and to Neil
6539 Jerram for suggesting the fix). Cleaned up the control structure
6540 a bit.
6541
6542 (scm_m_expand_body): Use 'transform_bindings'. Eliminated
6543 unnecessary consing. Eliminated unnecessary
6544 SCM_DEFER/ALLOW_INTS.
6545
6546 (SCM_CEVAL): Un-obfuscated some loops.
6547
6548 2001-11-16 Neil Jerram <neil@ossau.uklinux.net>
6549
6550 * gc.h (scm_unhash_name): Old declaration removed.
6551
6552 * eval.c (s_scm_eval): Change @var{primitive-eval} to
6553 @code{primitive-eval}.
6554
6555 * feature.c, vectors.c, net_db.c, unif.c, weaks.c, struct.c,
6556 version.c, alist.c, ports.c, ramap.c, unif.c, strings.c, list.c:
6557 Change @deffnx lines in docstrings to say {Scheme Procedure}
6558 rather than primitive or procedure.
6559
6560 * posix.c (scm_execl), filesys.c (scm_close), unif.c
6561 (scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
6562 scm_bit_set_star_x, scm_bit_invert_x), ramap.c (scm_array_fill_x,
6563 scm_array_for_each, scm_array_index_map_x), vectors.c (scm_vector,
6564 scm_make_vector, scm_vector_to_list, scm_vector_fill_x), strop.c
6565 (scm_string_split, scm_string_ci_to_symbol), strings.c
6566 (scm_string_p), sort.c (scm_merge), print.c (scm_newline),
6567 macros.c (scm_macro_type), alist.c (scm_acons, scm_assq):
6568 Docstring fixes and improvements reflecting edits that have been
6569 made in the reference manual source.
6570
6571 * objprop.c (scm_object_properties, scm_set_object_properties_x,
6572 scm_object_property, scm_set_object_property_x): Remove invalid
6573 @deffnx lines for corresponding procedure property primitives.
6574
6575 These changes add a @deffnx C function declaration and function
6576 index entries for each Guile primitive to the copy of the doc
6577 snarf output that is used for reference manual synchronization.
6578 Online help is unchanged.
6579
6580 * snarf.h (SCM_SNARF_DOCS): Output primitive's C function name.
6581 (SCM_DEFINE, SCM_DEFINE1, SCM_REGISTER_PROC): Supply to C function
6582 name to SCM_SNARF_DOCS.
6583
6584 * guile-snarf-docs-texi.in: Pass the shell script's arguments into
6585 snarf-check-and-output-texi.
6586
6587 * Makefile.am (guile-procedures.texi): New rule.
6588 (BUILT_SOURCES, guile.texi, guile-procedures.txt, CLEANFILES):
6589 Changed so that the last stage of doc snarfing is now performed
6590 twice, once to produce guile-procedures.txt for online help, and
6591 once to produce guile.texi for reference manual synchronization.
6592
6593 2001-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
6594
6595 * eval.c (RETURN): Wrap in do{}while(0) in order to make it
6596 safely usable as a single statement followed by a ';', for example
6597 in an if statement.
6598
6599 (SCM_CEVAL, SCM_APPLY): Clean up code using 'RETURN'.
6600
6601 2001-11-13 Neil Jerram <neil@ossau.uklinux.net>
6602
6603 * random.c (scm_random_solid_sphere_x,
6604 scm_random_hollow_sphere_x): Correct "shere" typos.
6605
6606 * hashtab.c (scm_hash_fold): Add missing apostrophe to docstring.
6607
6608 * version.c (scm_version): Update docstring to include
6609 `micro-version'.
6610
6611 2001-11-13 Marius Vollmer <mvo@zagadka.ping.de>
6612
6613 * modules.c (scm_c_export): Call va_end after collecting the
6614 symbols.
6615
6616 * strop.h, strop.c (scm_substring_move_left_x,
6617 scm_substring_move_right_x): Removed.
6618
6619 * __scm.h (HAVE_UINTPTR_T, HAVE_PTRDIFF_T, HAVE_LONG_LONG,
6620 HAVE_LONG_LONGS): Define to "1" when defining them, to mirror what
6621 configure does.
6622
6623 2001-11-12 Marius Vollmer <mvo@zagadka.ping.de>
6624
6625 * numbers.c: Document macros to define when including
6626 num2integral.i.c. MAX_VALUE and MIN_VALU are no longer used, we
6627 now rely on SIZEOF_ macros that have been figured out at
6628 configure time.
6629
6630 * num2integral.i.c: Adapt to new interface.
6631 (NUM2INTEGRAL): Test whether a fixnum can be represented in the
6632 target type by casting it and checking whether it is still the
6633 same. Do not try to handle bignums for integral types that are
6634 smaller than fixnums. When handling bignums, collect the
6635 magnituse first into a unsigned type, and correctly check for
6636 overflow.
6637 (INTEGRAL2BIG): Do not use MIN_VALUE explicitely by observing that
6638 only -MIN_VALUE can still be negative of all negative numbers (in
6639 twos-complement).
6640
6641 * tags.h (SIZEOF_SCM_T_BITS): Define it appropriately.
6642
6643 * __scm.h: Define HAVE_UINTPTR_T, HAVE_PTRDIFF_T and
6644 HAVE_LONG_LONG depending on whether their size is non-zero.
6645
6646 2001-11-11 Thien-Thi Nguyen <ttn@glug.org>
6647
6648 * strop.c (scm_string_null_p): Docfix; nfc.
6649 Thanks to Scott Lenser.
6650
6651 2001-11-07 Neil Jerram <neil@ossau.uklinux.net>
6652
6653 * extensions.c (scm_load_extension): Canonicalize docstring
6654 whitespace.
6655
6656 * unif.c (scm_uniform_array_write), ports.c
6657 (scm_current_output_port, scm_force_output), dynwind.c
6658 (scm_dynamic_wind), scmsigs.c (scm_setitimer, scm_getitimer),
6659 filesys.c (scm_open, scm_lstat), struct.c
6660 (scm_make_struct_layout), random.c (scm_random,
6661 scm_random_solid_sphere_x, scm_random_hollow_sphere_x, strop.c
6662 (scm_i_index): Remove superfluous whitespace from end of docstring
6663 lines.
6664
6665 * filesys.c (scm_select), guardians.c (scm_guardian_greedy_p),
6666 strings.c (scm_make_string), variable.c (scm_make_variable,
6667 scm_make_undefined_variable, scm_variable_p, scm_variable_set_x,
6668 scm_variable_bound_p), scmsigs.c (scm_setitimer, scm_getitimer),
6669 posix.c (scm_crypt), struct.c (scm_make_vtable_vtable), hashtab.c
6670 (scm_hash_fold), ports.c (scm_port_for_each): Remove superfluous
6671 newline at end of docstrings.
6672
6673 * modules.c (scm_set_current_module): Add missing newline to
6674 docstring.
6675
6676 2001-11-07 Stefan Jahn <stefan@lkcc.org>
6677
6678 * win32-socket.[ch]: New files. Defines Winsock-API error codes
6679 and makes them available through Guile. That is because the
6680 Winsock-API does not store its errors in `errno' and thus cannot
6681 return error messages via `strerror (errno)'.
6682
6683 * socket.c (scm_init_socket): Initialize `win32-socket' part
6684 here under M$-Windows.
6685
6686 * numbers.h: Added missing declaration of
6687 `scm_sys_check_number_conversions()'.
6688
6689 * error.c: Local definition of SCM_I_STRERROR and SCM_I_ERRNO
6690 and use in `(strerror)' and `(system-error)'.
6691
6692 * Makefile.am (EXTRA_libguile_la_SOURCES): Added
6693 `win32-socket.[ch]' to extra source and header files.
6694
6695 2001-11-06 Marius Vollmer <mvo@zagadka.ping.de>
6696
6697 * script.c (scm_shell_usage, scm_compile_shell_switches): Prepend
6698 a call to turn-on-debugging when --debug has been given instead of
6699 turning it on directly. Also, handle new `--no-debug' option,
6700 which might suppress the call to turn-on-debugging.
6701
6702 2001-11-05 Stefan Jahn <stefan@lkcc.org>
6703
6704 * struct.c (s_scm_struct_vtable_p): Corrected docstring.
6705
6706 2001-11-04 Stefan Jahn <stefan@lkcc.org>
6707
6708 * Makefile.am (libguile_la_LIBADD): Added $(THREAD_LIBS_LOCAL)
6709 here (was at guile_LDADD) which describes the dependency
6710 correctly and allows a clean build on Win32.
6711
6712 * __scm.h (SCM_API): Follow-up patch. Renamed __FOO__ macros
6713 into FOO.
6714
6715 * __scm.h: USE_DLL_IMPORT indicates the usage of the DLL
6716 import macros for external libraries (libcrypt, libqthreads,
6717 libreadline and libregex).
6718
6719 * coop-defs.h: Include <winsock2.h> for `struct timeval'.
6720
6721 * posix.c (flock): Added support for flock() in M$-Windows.
6722
6723 * guile.c (SCM_IMPORT): Follow-up patch. Use SCM_IMPORT instead
6724 of __SCM_IMPORT__.
6725
6726 * fports.c (getflags): Differentiate reading and writing pipes
6727 descriptors.
6728
6729 * filesys.c (S_IS*): Redefine all of the S_IS*() macros for
6730 M$-Windows.
6731
6732 * coop.c (coop_condition_variable_timed_wait_mutex): Use
6733 conditionalized error code if `ETIMEDOUT' is not available.
6734 (scm_thread_usleep): Remove bogus declaration of `struct timeval
6735 timeout'.
6736
6737 * numbers.c (PTRDIFF_MIN): Moved this definition where it actually
6738 belongs. That is because NO_PREPRO_MAGIC gets undefined after
6739 each inclusion of `num2integral.i.c'.
6740 (SIZE_MAX): Define NO_PREPRO_MAGIC if SIZE_MAX is undefined.
6741
6742 2001-11-03 Marius Vollmer <mvo@zagadka.ping.de>
6743
6744 * eval.c (scm_m_begin): Allow `(begin)`, with no subforms.
6745 (SCM_CEVAL): Evaluate an empty `begin' to SCM_UNSPECIFIED.
6746
6747 2001-11-02 Mikael Djurfeldt <mdj@linnaeus>
6748
6749 * print.c (scm_iprin1): Mark print state as revealed when
6750 dispatching to generic write or display.
6751
6752 * unif.c (scm_ra2contig): Fixed memory overwrite bug.
6753
6754 2001-11-02 Marius Vollmer <mvo@zagadka.ping.de>
6755
6756 Support for native Win32. Thanks to Stefan Jahn!
6757
6758 * Makefile.am: Add win32-uname.c, win32-uname.h, win32-dirent.c
6759 and win32-dirent.h to extra source and header files. These
6760 include the uname() and the POSIX dirent interface implementation
6761 for M$-Windows. Put `-no-undefined' into LDFLAGS to support
6762 linkers which do not allow unresolved symbols inside shared
6763 libraries. Corrected `guile_filter_doc_snarfage$(EXEEXT)'
6764 dependency.
6765
6766 * __scm.h: Defined SCM_API. This macro gets prepended to all
6767 function and data definitions which should be exported or imported
6768 in the resulting dynamic link library in the Win32 port.
6769
6770 * __scm.h, alist.h, arbiters.h, async.h, backtrace.h, boolean.h,
6771 chars.h, continuations.h, coop-defs.h, coop-threads.h,
6772 debug-malloc.h, debug.h, deprecation.h, dynl.h, dynwind.h,
6773 environments.h, eq.h, error.h, eval.h, evalext.h, extensions.h,
6774 feature.h, filesys.h, fluids.h, fports.h, gc.h, gdb_interface.h,
6775 gdbint.h, gh.h, goops.h, gsubr.h, guardians.h, hash.h, hashtab.h,
6776 hooks.h, init.h, ioext.h, iselect.h, keywords.h, lang.h, list.h,
6777 load.h, macros.h, mallocs.h, modules.h, net_db.h, numbers.h,
6778 objects.h, objprop.h, options.h, pairs.h, ports.h, posix.h, print.h,
6779 procprop.h, procs.h, properties.h, ramap.h, random.h, rdelim.h,
6780 read.h, regex-posix.h, root.h, rw.h, scmsigs.h, script.h, simpos.h,
6781 smob.h, socket.h, sort.h, srcprop.h, stackchk.h, stacks.h, stime.h,
6782 strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h,
6783 tags.h, threads.h, throw.h, unif.h, values.h, variable.h, vectors.h,
6784 vports.h, weaks.h:
6785 Prefixed each each exported symbol with SCM_API.
6786
6787 * continuations.c: Added comment about the use of the extern
6788 declarations of {get,set}context() functions used in the ia64 port.
6789
6790 * continuations.h, gc.c: `__libc_ia64_register_backing_store_base'
6791 is meant to be a `unsigned long *'.
6792
6793 * filesys.c: Include `direct.h' if possible. Use local
6794 `win32-dirent.h' for the native M$-Windows port. Define S_IS*()
6795 macros for M$-Windows. Implementation of `fstat_Win32()' which is
6796 able to differentiate between sockets and other file descriptors.
6797 Use this function as wrapper in `scm_fstat()'. Fixed typo in
6798 `scm_dirname()'.
6799
6800 * fports.c: Include `io.h' is possible. Put `*fp' into referring
6801 statement block in `scm_fport_buffer_add()'.
6802 Some corrections in `getflags()'.
6803
6804 * gdb_interface.h (GDB_INTERFACE): Also support __CYGWIN__.
6805
6806 * guile.c: Make sure to define __SCM_IMPORT__ for shared library
6807 build on Win32. Disable preloaded symbols on Win2 platforms.
6808
6809 * ioext.c, ports.c: Include `io.h' is possible.
6810
6811 * mkstemp.c: Include `process.h' is possible.
6812
6813 * net_db.c: Disable extern declaration of `h_errno' for __CYGWIN__,
6814 too.
6815 Put `scm_return_entry()' into HAVE_GETSERVENT conditional.
6816
6817 * posix.c: Remove unnecessary dirent includes and defines. Include
6818 local `win32-uname.h' for MinGW. Extern declaration of
6819 `mkstemp()' for systems where it does not exists. Make
6820 `getlogin()' available on M$-Windows.
6821
6822 * scmsigs.c: Made `usleep()' avalable on MinGW.
6823
6824 * stime.c: On M$-Windows `tzname[]' is known to be `_tzname[]'.
6825
6826 * win32-dirent.c: Include "win32-dirent.h", not "dirent.h".
6827
6828 * win32-uname.c: Include "win32-uname.h", not "uname.h".
6829
6830 2001-10-28 Mikael Djurfeldt <mdj@linnaeus>
6831
6832 * unif.c (scm_uniform_array_read_x, scm_uniform_array_write):
6833 Don't apply scm_uniform_vector_length on arrays.
6834
6835 2001-10-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
6836
6837 * eval.c (scm_lookupcar, scm_m_letstar, scm_m_do, iqq,
6838 scm_m_define, scm_m_letrec1, scm_m_let, scm_m_expand_body,
6839 scm_macroexp, unmemocopy, scm_eval_args, scm_deval_args,
6840 SCM_CEVAL, scm_map, scm_init_eval): When building lists, prefer
6841 scm_list_<n> over scm_cons[2]?.
6842
6843 (scm_unmemocar, scm_m_cond, scm_m_letstar, scm_m_letrec1,
6844 scm_m_let, scm_m_atbind, unmemocopy, SCM_CEVAL, SCM_APPLY): Use
6845 SCM_C[AD][AD]R instead of explicit form.
6846
6847 (scm_m_set_x, scm_m_cond, scm_m_letstar, scm_m_do): Reordered
6848 comparison parameters.
6849
6850 (scm_m_case, scm_m_cond, scm_m_letstar, scm_m_do, SCM_CEVAL): Use
6851 !SCM_NULLP instead of SCM_NIMP.
6852
6853 (scm_m_case): Don't copy the form. Renamed proc to clause and
6854 minimized its scope. Renamed x to clauses. Removed side
6855 effecting operation from macro call.
6856
6857 (scm_m_cond): Don't copy the form. Renamed arg1 to clause and
6858 minimized its scope. Renamed x to clauses. Minimized the scope
6859 of variable 'len'. Make sure the else clause is treated specially
6860 even in case of '=>' occurences. Don't change the else to #t in
6861 order to be able to distinguish this case in the evaluator. Leave
6862 type checking of the recipient to the evaluator.
6863
6864 (scm_c_improper_memq): Made the comment somewhat clearer.
6865
6866 (scm_m_lambda): Renamed proc to formals. Removed unnecessary
6867 test for SCM_IM_LET at the place of the formal parameters.
6868 Simplified the formal parameter checking.
6869
6870 (scm_m_letstar): Added Comment. Renamed proc to bindings.
6871 Renamed arg1 to binding and minimized its scope. Eliminated
6872 unnecessary consing.
6873
6874 (scm_m_do): Renamed proc to bindings. Minimized the scope of
6875 variable 'len'.
6876
6877 (build_binding_list): New static function.
6878
6879 (unmemocopy): Don't use SCM_TYP7 on pairs (it's unclean).
6880 Further, split up the 'letrec' unmemoizing code to the
6881 corresponding parts for 'do', 'let' and 'letrec', adding comments
6882 to each form. Cleanup the handling of the do form (This removes
6883 some *real* code :-).
6884
6885 (SCM_CEVAL): Removed side effecting operation from macro call.
6886 Handle the 'else clause of the 'cond form specially - the symbol
6887 'else is not replaced with #t any more.
6888
6889 2001-10-14 Gary Houston <ghouston@arglist.com>
6890
6891 * version.c (scm_version): use sprintf instead of snprintf,
6892 for portability. thanks to Bill Schottstaedt.
6893
6894 2001-10-14 Mikael Djurfeldt <mdj@linnaeus>
6895
6896 * read.c (scm_lreadr): When user-defined hash procedure returns
6897 SCM_UNSPECIFIED: Fall back to standard handling instead of raising
6898 an exception. (This prevents parsing of uniform vectors from
6899 interfering with parsing of numbers.)
6900
6901 2001-10-13 Marius Vollmer <mvo@zagadka.ping.de>
6902
6903 * numbers.c: Set NO_PREPRO_MAGIC when defining our version of
6904 PTRDIFF_MIN. Thanks to Ken Raeburn.
6905
6906 2001-10-07 Marius Vollmer <mvo@zagadka.ping.de>
6907
6908 * Makefile.am (EXTRA_libguile_la_SOURCES): Added "mkstemp.c".
6909
6910 * eval.c (scm_m_atbind): First try to find the variable without
6911 defining it locally; when it has not been found, define it
6912 locally.
6913
6914 * modules.c (module_variable): Pass over variables that exist but
6915 are unbound.
6916
6917 2001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
6918
6919 * backtrace.c (display_backtrace_file_and_line): Only use
6920 scm_basename when POSIX support is compiled in. Thanks to Chris
6921 Cramer.
6922
6923 2001-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
6924
6925 * numbers.c (mem2uinteger): Return number read so far when coming
6926 across a hexdigit after having read a # or if not reading a hex
6927 value. This will enable the calling code to correctly handle
6928 forms like 1e2. (The background is, that the exponent markers d,
6929 e and f are also hexdigits.) Thanks to Mikael Djurfeldt for
6930 providing this patch.
6931
6932 (mem2complex): Fix erroneous double-negation. Now, numbers like
6933 1-i will be read correctly.
6934
6935 2001-10-12 Mikael Djurfeldt <mdj@linnaeus>
6936
6937 * debug.c (scm_mem_to_proc): Fixed typo in previous change.
6938
6939 * validate.h (SCM_VALIDATE_DOUBLE_DEF_COPY): New macro.
6940
6941 2001-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
6942
6943 * print.c (scm_print_state_vtable, print_state_pool):
6944 Initialize. These variables are now registered as gc roots.
6945
6946 (scm_current_pstate): Update documentation.
6947
6948 (scm_current_pstate, scm_make_print_state, scm_free_print_state,
6949 scm_prin1, scm_init_print): print_state_pool is registered as a
6950 gc root and thus does not need to be protected by a surrounding
6951 pair any more.
6952
6953 (make_print_state): The car of print_state_pool no longer holds
6954 the scm_print_state_vtable.
6955
6956 (scm_current_pstate, scm_make_print_state, print_circref,
6957 scm_iprin1, scm_prin1, scm_iprlist): Prefer !SCM_<foo> over
6958 SCM_N<foo>.
6959
6960 (scm_prin1): When building lists, prefer scm_list_<n> over
6961 scm_cons[2]?.
6962
6963 (scm_iprlist): Removed a redundant SCM_IMP test.
6964
6965 (scm_simple_format): Use SCM_EQ_P to compare SCM values.
6966
6967 2001-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
6968
6969 * debug.c (scm_make_iloc): Prefer !SCM_<foo> over SCM_N<foo>.
6970
6971 (scm_memcons, scm_mem_to_proc): When building lists, prefer
6972 scm_list_<n> over scm_cons[2]?.
6973
6974 (scm_mem_to_proc): Prefer SCM_CONSP over SCM_NIMP.
6975
6976 (scm_procedure_name): Use SCM_CADR instead of explicit form.
6977
6978 (debugobj_print): Coerce scm_intprint arg 1 to long, not int.
6979 Thanks to Rob Browning for the patch (see log entry 2001-09-21) -
6980 for some reason his patch didn't make it into the cvs.
6981
6982 2001-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
6983
6984 * numbers.c (mem2decimal_from_point): Cleaned up the parsing a
6985 little bit - should even be somewhat more accurate now.
6986
6987 2001-10-08 Rob Browning <rlb@defaultvalue.org>
6988
6989 * gc.c: support ia64 register backing store.
6990 (SCM_MARK_BACKING_STORE): new macro.
6991
6992 * continuations.h: support ia64 register backing store.
6993 (struct scm_t_contregs): add ia64 register backing store.
6994
6995 * continuations.c: support ia64 register backing store.
6996 (continuation_mark): mark ia64 register backing store.
6997 (continuation_free): free ia64 register backing store.
6998 (scm_make_continuation): capture ia64 register backing store.
6999 (copy_stack_and_call): copy ia64 register backing store.
7000
7001 2001-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
7002
7003 * hashtab.c (scm_hash_fn_create_handle_x): The result of assoc_fn
7004 is known to be #f if no entry is found. Thus, use !SCM_FALSEP
7005 instead of SCM_NIMP to test for that case.
7006
7007 * strings.h (SCM_SET_STRING_LENGTH): Cast the length to
7008 scm_t_bits instead of long.
7009
7010 2001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
7011
7012 * tags.h (SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
7013 SCM_T_SIGNED_BITS_MIN): New.
7014 * numbers.h (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM):
7015 Use them to make these macros computable by the preprocessor.
7016
7017 * num2integral.i.c (INTEGRAL2NUM): Let the preprocessor test
7018 whether the integral type fits in a fixnum, not the compiler.
7019 This removes a spurious compiler warning. Also, honor the
7020 NO_PREPRO_MAGIC flag to suppress any preprocessor tests. This is
7021 needed for `long long's.
7022
7023 * numbers.c: Define NO_PREPRO_MAGOC when including
7024 num2integral.c.i for `long long' and `signed long long'.
7025
7026 2001-10-06 Mikael Djurfeldt <mdj@linnaeus>
7027
7028 These changes fixes a race condition in the Guile coop - pthread
7029 compatibility code.
7030
7031 * coop.c (mother_awake_p): New variable.
7032 (coop_create): Set mother_awake_p before creating or signalling
7033 mother; wait until mother is going to sleep before returning.
7034 (mother): Reset mother_awake_p before going to sleep.
7035
7036 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
7037
7038 * options.c (protected_objects, scm_init_options): The content of
7039 protected_objects is now protected from garbage collection using
7040 scm_gc_register_root instead of scm_permanent_object.
7041
7042 (get_option_setting): New static function that computes an option
7043 setting as it was formerly done in the function scm_options.
7044
7045 (get_documented_option_setting): New static function that
7046 returns option documentation as it was formerly done in the
7047 function scm_options. Note that documentation C strings are no
7048 longer precomputed into SCM objects. Instead, they are converted
7049 into SCM strings every time get_documented_option_setting is
7050 called.
7051
7052 (change_option_setting): New static functions that modifies the
7053 option setting as it was formerly done in the function
7054 scm_options. The function is now exception safe, i. e. won't
7055 cause a memory leak when interrupted. Further, only non-immediate
7056 option values are added to the protection list.
7057
7058 (scm_options): This function now has only the purpose to dispatch
7059 to to get_option_setting, get_documented_option_setting or
7060 change_option_setting, depending on the arguments given to
7061 scm_options.
7062
7063 (scm_init_opts): Don't convert documentation C strings into SCM
7064 strings. Further, don't protect any object values: They _must_
7065 be immediate values, otherwise there is no guarantee that they
7066 have not been collected before anyway.
7067
7068 * options.[ch] (scm_t_option): Made type unsigned, name into a
7069 constant char* and val into a scm_t_bits type.
7070
7071 (scm_options, scm_init_opts): The number of options is guaranteed
7072 to be larger or equal to zero. Thus, the type is changed to
7073 unsigned.
7074
7075 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
7076
7077 * num2integral.i.c (NUM2INTEGRAL): Eliminated some warnings about
7078 testing an unsigned value for being >= 0.
7079
7080 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
7081
7082 * numbers.h: Removed old comment about using SCM_CAR to access
7083 non-pair cells.
7084
7085 (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM): Make sure
7086 the return value is signed. Thanks to Brian Crowder for the bug
7087 report.
7088
7089 (SCM_SRS): Avoid unnecessary casting and don't unpack input
7090 values. With this patch, SCM_SRS can be safely used for other
7091 types than scm_t_signed_bits. However, it should still better be
7092 an internal macro and thus be renamed to SCM_I_SRS.
7093
7094 (SCM_MAKINUM, SCM_INUM): Use proper casting.
7095
7096 2001-10-03 Gary Houston <ghouston@arglist.com>
7097
7098 * continuations.h, unif.h: in the descriptions of the bit patterns
7099 of the heap cells, make bit 0 the least significant.
7100
7101 2001-09-25 Thien-Thi Nguyen <ttn@glug.org>
7102
7103 * chars.h (SCM_MAKE_CHAR): Use `scm_t_bits' instead of `intptr_t'.
7104 Thanks to Golubev I. N.
7105
7106 2001-09-25 Gary Houston <ghouston@arglist.com>
7107
7108 * ports.c (scm_drain_input): extended the docstring. thanks to
7109 Alex Schroeder and Thien-Thi Nguyen.
7110
7111 2001-09-23 Mikael Djurfeldt <mdj@linnaeus>
7112
7113 * validate.h (SCM_NUM2FLOAT, SCM_NUM2DOUBLE,
7114 SCM_VALIDATE_FLOAT_COPY, SCM_VALIDATE_DOUBLE_COPY): New
7115 macros. (The NUM names might soon change.)
7116
7117 * numbers.h: Added missing declarations.
7118
7119 2001-09-22 Mikael Djurfeldt <mdj@linnaeus>
7120
7121 * Makefile.am: Distribute num2float.i.c.
7122
7123 * num2float.i.c: New file, multiply included by numbers.c, used
7124 to "templatize" the float <-> num conversion routines.
7125
7126 * numbers.c: New functions: scm_num2float, scm_float2num,
7127 scm_num2double, scm_double2num.
7128
7129 2001-09-21 Rob Browning <rlb@defaultvalue.org>
7130
7131 * .cvsignore: really add version.h
7132
7133 * strings.h (SCM_SET_STRING_LENGTH): coerce "l" to a long.
7134 Otherwise it fails on the alpha. However, we might rather choose
7135 this size conditionally.
7136
7137 * numbers.c (scm_gcd): change "k" to a long from an int.
7138 Otherwise it fails on the alpha. However, we might rather choose
7139 this size conditionally.
7140
7141 * error.c (scm_wta): coerce char* to intptr_t before int
7142 assignment.
7143
7144 * debug.c (debugobj_print): coerce scm_intprint arg 1 to long, not
7145 int.
7146
7147 * chars.h (SCM_MAKE_CHAR): coerce value to intptr_t.
7148
7149 2001-09-20 Mikael Djurfeldt <mdj@linnaeus>
7150
7151 * numbers.c (scm_integer_expt): Accept inexact integer in second
7152 argument. (Thanks to Bill Schottstaedt.)
7153
7154 2001-09-20 Rob Browning <rlb@defaultvalue.org>
7155
7156 * .cvsignore: add version.h
7157
7158 * versiondat.h.in: removed (obsolete).
7159
7160 * version.h.in: renamed from version.h.
7161 (SCM_GUILE_MAJOR_VERSION): new public macro.
7162 (SCM_GUILE_MINOR_VERSION): new public macro.
7163 (SCM_GUILE_MICRO_VERSION): new public macro.
7164
7165 * version.h: renamed to version.h.in.
7166
7167 * version.c
7168 (scm_major_version): support integer *_VERSION macros.
7169 (scm_minor_version): support integer *_VERSION macros.
7170 (scm_micro_version): support integer *_VERSION macros.
7171 (scm_version): support integer *_VERSION macros.
7172
7173 2001-09-20 Mikael Djurfeldt <mdj@linnaeus>
7174
7175 * error.c, error.h: Made error keys globally accessible.
7176 Applications might want to test for these or use them in a direct
7177 call to scm_error.
7178
7179 * num2integral.i.c (NUM2INTEGRAL): Report an error when these
7180 routines are passed an inexact. This change in behavior is
7181 motivated by concordance with R5RS: It is more common that a
7182 primitive doesn't want to accept an inexact for an exact.
7183
7184 2001-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
7185
7186 The following patch partially undoes my patch from 2001-06-30,
7187 where I added the function scm_gc_mark_cell_conservatively. The
7188 function is buggy, since it breaks guile during conservative
7189 marking if a pointer on the stack points directly into the list of
7190 free cells on the heap: With conservative cell marking this will
7191 cause the whole free list to be scanned and marked - boom!
7192
7193 * gc.c (allocated_mark, MARK, heap_segment,
7194 scm_gc_mark_cell_conservatively, scm_init_storage), gc.h
7195 (scm_gc_mark_cell_conservatively): Remove function
7196 scm_gc_mark_cell_conservatively and update the corresponding
7197 comments and uses accordingly. Thanks to Christopher Cramer for
7198 the patch. (Minor corrections by me.)
7199
7200 2001-09-15 Gary Houston <ghouston@arglist.com>
7201
7202 * root.h (scm_root_state): removed the continuation_stack and
7203 continuation_stack_ptr members, which have no apparent purpose.
7204 (scm_continuation_stack, scm_continuation_stack_ptr): #defines
7205 removed.
7206
7207 * root.c (root_mark), init.c (restart_stack, start_stack), gc
7208 (scm_igc): remove all references to contination_stack and
7209 continuation_stack_ptr, avoiding allocation of a vector and
7210 useless processing during gc.
7211
7212 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
7213
7214 * guardians.c (tconc_t, t_tconc): Renamed tconc_t to t_tconc.
7215
7216 (TCONC_IN): Make sure that the cell word 0 is initialized last.
7217
7218 (guardians_t, t_guardians): Renamed guardians_t to t_guardians.
7219
7220 (GUARDIAN, GUARDIAN_DATA): Renamed GUARDIAN to GUARDIAN_DATA.
7221
7222 (guardian_apply, scm_get_one_zombie, scm_make_guardian,
7223 mark_and_zombify): Prefer !SCM_<foo> over SCM_N<foo>.
7224
7225 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
7226
7227 * guardians.c (mark_dependencies_in_tconc,
7228 whine_about_self_centered_zombies, scm_init_guardians): Register
7229 the static global variable `self_centered_zombies' via
7230 scm_gc_register_root, to make some cdr-ing unnecessary.
7231
7232 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
7233
7234 * backtrace.c (display_backtrace_file,
7235 display_backtrace_file_and_line): Use SCM_EQ_P when comparing SCM
7236 values, use SCM_FALSEP when comparing SCM values against #f.
7237 Thanks to Rob Browning for the bug report.
7238
7239 2001-09-12 Martin Baulig <martin@home-of-linux.org>
7240
7241 * strings.[ch] (scm_str2string): New function.
7242
7243 2001-09-06 Marius Vollmer <mvo@zagadka.ping.de>
7244
7245 * gc.c (scm_done_free): Always subtract size from scm_mallocated
7246 when computing nm, even if it's negative.
7247 (scm_must_malloc): Abort on overflow of scm_mtrigger.
7248 (scm_must_realloc): Likewise.
7249
7250 2001-09-01 Michael Livshin <mlivshin@bigfoot.com>
7251
7252 * numbers.c (scm_sys_check_number_conversions): new function,
7253 defined if Guile is compiled in debugging mode. currently checks
7254 `scm_num2ulong', should check much much more.
7255
7256 * num2integral.i.c (NUM2INTEGRAL): when converting a bignum to
7257 unsigned, ensure that it's positive. thanks to Martin Baulig!
7258
7259 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
7260
7261 * __scm.h: Added new section about compile time selectable
7262 features.
7263
7264 (long_long, ulong_long, scm_sizet, SCM_WNA, SCM_OUTOFRANGE,
7265 SCM_NALLOC, SCM_HUP_SIGNAL, SCM_INT_SIGNAL, SCM_FPE_SIGNAL,
7266 SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL, SCM_GC_SIGNAL,
7267 SCM_TICK_SIGNAL, SCM_SIG_ORD, SCM_ORD_SIG, SCM_NUM_SIGS):
7268 Removed.
7269
7270 * deprecation.c (scm_include_deprecated_features): Simplified.
7271
7272 * eval.c (EVALCAR, unmemocopy), eval.h (SCM_XEVALCAR): Use
7273 `SCM_IMP´ instead of `!SCM_CELLP´.
7274
7275 * eval.c (unmemocopy): Eliminate redundant SCM_CELLP tests.
7276 Extract side-effecting operations from macros.
7277
7278 (scm_init_eval): Don't initialize *top-level-lookup-closure*,
7279 scm_top_level_lookup_closure_var and scm_system_transformer.
7280
7281 * gc.c (CELL_P): New local definition to replace SCM_CELLP.
7282
7283 (heap_segment): Use CELL_P instead of SCM_CELLP.
7284
7285 * init.c (start_stack): Don't initialize
7286 scm_top_level_lookup_closure_var and scm_system_transformer.
7287
7288 * modules.c (scm_set_current_module): Don't access
7289 scm_top_level_lookup_closure_var and scm_system_transformer.
7290
7291 (scm_sym2var): Don't call scm_variable_set_name_hint.
7292
7293 (scm_post_boot_init_modules): Removed deprecated initializations.
7294
7295 * print.c (scm_ipruk): Don't access cell contents of non cells.
7296
7297 * strings.c (scm_string_set_x): All strings are writable.
7298
7299 * strings.h (SCM_STRINGP): Use SCM_TYP7 to determine the string
7300 type. There is only one string type now.
7301
7302 (SCM_STRING_COERCE_0TERMINATION_X): Deprecated.
7303
7304 * tags.h: Remove comments about two different string types.
7305
7306 (SCM_CELLP, SCM_NCELLP): Deprecated.
7307
7308 * variable.c (make_variable): Remove code variant for vcells.
7309
7310 * variable.h (SCM_VARIABLE_REF, SCM_VARIABLE_SET,
7311 SCM_VARIABLE_LOC): Remove code variant for vcells.
7312
7313 * __scm.h, deprecation.[ch]: Renamed SCM_DEBUG_DEPRECATED to
7314 SCM_ENABLE_DEPRECATED with the logic reversed.
7315
7316 * dynl.c (moddata, registered_mods), dynl.[ch]
7317 (scm_register_module_xxx, scm_registered_modules,
7318 scm_clear_registered_modules), error.[ch] (scm_wta), eval.c
7319 (*top-level-lookup-closure*), eval.[ch]
7320 (scm_top_level_lookup_closure_var, scm_system_transformer,
7321 scm_eval_3, scm_eval2), gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR,
7322 SCM_SETAND_CDR, SCM_SETOR_CDR, SCM_FREEP, SCM_NFREEP,
7323 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
7324 SCM_GCCDR), gc.[ch] (scm_remember, scm_protect_object,
7325 scm_unprotect_object), modules.c (root_module_lookup_closure,
7326 scm_sym_app, scm_sym_modules, module_prefix, make_modules_in_var,
7327 beautify_user_module_x_var, try_module_autoload_var,
7328 scm_module_full_name), modules.[ch] (scm_the_root_module,
7329 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
7330 ports.h (scm_port, scm_ptob_descriptor, scm_port_rw_active),
7331 ports.[ch] (scm_close_all_ports_except), random.h (scm_rstate,
7332 scm_rng, scm_i_rstate), strings.h (SCM_SLOPPY_STRINGP,
7333 SCM_RWSTRINGP, SCM_STRING_UCHARS, SCM_STRING_CHARS), strings.[ch]
7334 (scm_read_only_string_p, scm_makstr, scm_makfromstr,
7335 scm_make_shared_substring), tags.h (scm_tc7_substring,
7336 SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP, scm_tc7_ssymbol,
7337 scm_tc7_msymbol, scm_tcs_symbols), variable.c (sym_huh),
7338 variable.[ch] (scm_variable_set_name_hint, scm_builtin_variable),
7339 variable.h (SCM_VARVCELL, SCM_UDVARIABLEP, SCM_DEFVARIABLEP):
7340 Removed.
7341
7342 * dynl.c (scm_dynamic_link, scm_dynamic_func), error.c
7343 (scm_error_scm), filesys.c (scm_chown, scm_chmod, scm_open_fdes,
7344 scm_stat, scm_link, scm_rename, scm_delete_file, scm_mkdir,
7345 scm_rmdir, scm_opendir, scm_chdir, scm_symlink, scm_readlink,
7346 scm_lstat, scm_copy_file), fports.c (scm_open_file), ioext.c
7347 (scm_fdopen), net_db.c (scm_gethost, scm_getnet, scm_getproto,
7348 scm_getserv), ports.c (scm_truncate_file, scm_sys_make_void_port),
7349 posix.c (scm_getpwuid, scm_getgrgid, scm_execl, scm_execlp,
7350 scm_execle, scm_mkstemp, scm_utime, scm_access, scm_setlocale,
7351 scm_mknod, scm_crypt, scm_chroot, scm_getpass, scm_sethostname),
7352 regex-posix.c (scm_make_regexp, scm_regexp_exec), simpos.c
7353 (scm_system, scm_getenv), socket.c (scm_inet_aton), stime.c
7354 (setzone, scm_strftime, scm_strptime), vports.c
7355 (scm_make_soft_port): Remove calls to
7356 SCM_STRING_COERCE_0TERMINATION_X. Since the substring type is
7357 gone, all strings are 0-terminated anyway.
7358
7359 * dynl.h (LIBGUILE_DYNL_H, SCM_DYNL_H), random.h (RANDOMH,
7360 SCM_RANDOM_H): Renamed the macros that are defined to inhibit
7361 double inclusion of the same headers to the SCM_<filename>_H
7362 format.
7363
7364 * eval.c (SCM_CEVAL), gc.c (MARK, scm_gc_sweep), gh_data.c
7365 (gh_scm2chars), hash.c (scm_hasher), objects.c (scm_class_of),
7366 print.c (scm_iprin1): The type scm_tc7_substring does not exist
7367 any more.
7368
7369 * ports.h (SCM_PORTP, SCM_OPPORTP, SCM_OPINPORTP, SCM_OPOUTPORTP,
7370 SCM_INPUT_PORT_P, SCM_OUTPUT_PORT_P, SCM_OPENP), tags.h
7371 (SCM_TYP16_PREDICATE), variable.h (SCM_VARIABLEP): Prefer
7372 !SCM_<foo> over SCM_N<foo>.
7373
7374 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
7375
7376 * Makefile.am: Remove references to symbols-deprecated.c.
7377
7378 * symbols.c (scm_init_symbols): Don't initialize deprecated
7379 symbol functions.
7380
7381 * symbols-deprecated.c: Removed.
7382
7383 * fluids.[ch] (scm_internal_with_fluids), gsubr.[ch]
7384 (scm_make_gsubr, scm_make_gsubr_with_generic), hooks.[ch]
7385 (scm_create_hook), list.c (list*), list.h (SCM_LIST[0-9],
7386 scm_listify), list.[ch] (scm_sloppy_memq, scm_sloppy_memv,
7387 scm_sloppy_member), load.c (scm_end_of_file_key), load.[ch]
7388 (scm_read_and_eval_x), numbers.[ch] (scm_mkbig, scm_big2inum,
7389 scm_adjbig, scm_normbig, scm_copybig, scm_2ulong2big, scm_dbl2big,
7390 scm_big2dbl), numbers.h (SCM_FIXNUM_BIT), procs.h
7391 (scm_subr_entry, SCM_SUBR_DOC), procs.[ch] (scm_make_subr_opt,
7392 scm_make_subr, scm_make_subr_with_generic), root.c (setjmp_type,
7393 setjmp_type), root.[ch] (scm_call_catching_errors), smob.[ch]
7394 (scm_make_smob_type_mfpe, scm_set_smob_mfpe), strports.[ch]
7395 (scm_strprint_obj, scm_read_0str, scm_eval_0str), symbols.h
7396 (SCM_CHARS, SCM_UCHARS, SCM_SETCHARS, SCM_SLOPPY_SUBSTRP,
7397 SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_LENGTH_MAX, SCM_LENGTH,
7398 SCM_SETLENGTH, SCM_ROSTRINGP, SCM_ROLENGTH, SCM_ROCHARS,
7399 SCM_ROUCHARS, SCM_SUBSTRP, SCM_COERCE_SUBSTR, scm_strhash,
7400 scm_sym2vcell, scm_sym2ovcell_soft, scm_sym2ovcell,
7401 scm_intern_obarray_soft, scm_intern_obarray, scm_intern,
7402 scm_intern0, scm_sysintern, scm_sysintern0,
7403 scm_sysintern0_no_module_lookup, scm_symbol_value0,
7404 scm_string_to_obarray_symbol, scm_intern_symbol,
7405 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
7406 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp,
7407 scm_init_symbols_deprecated), vectors.c (s_vector_set_length_x),
7408 vectors.[ch] (scm_vector_set_length_x): Removed.
7409
7410 * fluids.h (FLUIDSH, SCM_FLUIDS_H), gsubr.c (GSUBRH, SCM_GSUBR_H),
7411 list.h (LISTH, SCM_LIST_H), load.h (LOADH, SCM_LOAD_H), root.h
7412 (ROOTH, SCM_ROOT_H), strports.h (STRPORTSH, SCM_STRPORTS_H):
7413 Renamed the macros that are defined to inhibit double inclusion of
7414 the same headers to the SCM_<filename>_H format.
7415
7416 * procs.h (SCM_CLOSUREP, SCM_PROCEDURE_WITH_SETTER_P), symbols.h
7417 (SCM_SYMBOLP), vectors.h (SCM_VECTORP): Prefer !SCM_<foo> over
7418 SCM_N<foo>.
7419
7420 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
7421
7422 * continuations.h (scm_contregs), debug.h (scm_debug_info,
7423 scm_debug_frame, SCM_DSIDEVAL), filesys.h (SCM_OPDIRP), fports.h
7424 (scm_fport), options.h (scm_option), snarf.h (SCM_CONST_LONG,
7425 SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
7426 SCM_GLOBAL_VCELL_INIT), srcprop.h (scm_srcprops,
7427 scm_srcprops_chunk), stacks.h (scm_info_frame, scm_stack), unif.h
7428 (scm_array, scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_HUGE_LENGTH),
7429 validate.h (SCM_FUNC_NAME, SCM_WTA, RETURN_SCM_WTA,
7430 SCM_VALIDATE_NUMBER_COPY, SCM_VALIDATE_NUMBER_DEF_COPY,
7431 SCM_VALIDATE_STRINGORSUBSTR, SCM_VALIDATE_ROSTRING,
7432 SCM_VALIDATE_ROSTRING_COPY, SCM_VALIDATE_NULLORROSTRING_COPY,
7433 SCM_VALIDATE_RWSTRING, SCM_VALIDATE_OPDIR): Removed.
7434
7435 * continuations.h (CONTINUATIONSH, SCM_CONTINUATIONS_H), filesys.h
7436 (FILESYSH, SCM_FILESYS_H), fports.h (FPORTSH, SCM_FPORTS_H),
7437 options.h (OPTIONSH, SCM_OPTIONS_H), regex-posix.h (REGEXPOSIXH,
7438 SCM_REGEX_POSIX_H), snarf.h (LIBGUILE_SNARF_H, SCM_SNARF_H),
7439 srcprop.h (SCM_SOURCE_PROPERTIES_H, SCM_SRCPROP_H), unif.h
7440 (SCM_UNIFORM_VECTORS_H, SCM_UNIF_H), validate.h (SCM_VALIDATE_H__,
7441 SCM_VALIDATE_H): Renamed the macros that are defined to inhibit
7442 double inclusion of the same headers to the SCM_<filename>_H
7443 format.
7444
7445 * debug.h (SCM_RESET_DEBUG_MODE), regex-posix.h (SCM_RGXP),
7446 srcprop.h (SRCBRKP, PROCTRACEP), struct.h (SCM_STRUCTP),
7447 validate.h (SCM_VALIDATE_THUNK, SCM_VALIDATE_ARRAY,
7448 SCM_VALIDATE_VECTOR_OR_DVECTOR, SCM_VALIDATE_VTABLE): Prefer
7449 !SCM_<foo> over SCM_N<foo>.
7450
7451 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
7452
7453 * _scm.h (_SCMH, SCM__SCM_H), alist.h (ALISTH, SCM_ALIST_H),
7454 arbiters.h (ARBITERSH, SCM_ARBITERS_H), backtrace.h (BACKTRACEH,
7455 SCM_BACKTRACE_H), boolean.h (BOOLEANH, SCM_BOOLEAN_H), chars.h
7456 (SCM_CHARSH, SCM_CHARS_H), coop-defs.h (COOP_DEFSH,
7457 SCM_COOP_DEFS_H), coop-threads.h (COOP_THREADSH,
7458 SCM_COOP_THREADS_H), debug-malloc.h (DEBUGMALLOCH,
7459 SCM_DEBUG_MALLOC_H), dynwind.h (DYNWINDH, SCM_DYNWIND_H),
7460 environments.h (ENVIRONMENTS_H, SCM_ENVIRONMENTS_H), eq.h (EQH,
7461 SCM_EQ_H), evalext.h (EVALEXTH, SCM_EVALEXT_H), extensions.h
7462 (LIBGUILE_EXTENSIONS_H, SCM_EXTENSIONS_H), feature.h (FEATUREH,
7463 SCM_FEATURE_H), gdbint.h (GDBINTH, SCM_GDBINT_H), guardians.h
7464 (SCM_GUARDIANH, SCM_GUARDIANS_H), hash.h (HASHH, SCM_HASH_H),
7465 hashtab.h (HASHTABH, SCM_HASHTAB_H), init.h (INITH, SCM_INIT_H),
7466 ioext.h (IOEXTH, SCM_IOEXT_H), iselect.h (ISELECTH,
7467 SCM_ISELECT_H), keywords.h (KEYWORDSH, SCM_KEYWORDS_H), lang.h
7468 (LANGH, SCM_LANG_H), mallocs.h (MALLOCSH, SCM_MALLOCS_H), net_db.h
7469 (SCM_NETDBH, SCM_NET_DB_H), objprop.h (OBJPROPH, SCM_OBJPROP_H),
7470 posix.h (POSIXH, SCM_POSIX_H), procprop.h (PROCPROPH,
7471 SCM_PROCPROP_H), properties.h (PROPERTIES_H, SCM_PROPERTIES_H),
7472 ramap.h (RAMAPH, SCM_RAMAP_H), rdelim.h (SCM_RDELIM,
7473 SCM_RDELIM_H), read.h (READH, SCM_READ_H), rw.h (SCM_RW,
7474 SCM_RW_H), scmsigs.h (SCMSIGSH, SCM_SCMSIGS_H), script.h (SCRIPTH,
7475 SCM_SCRIPT_H), simpos.h (SIMPOSH, SCM_SIMPOS_H), socket.h
7476 (SCM_SOCKETH, SCM_SOCKET_H), sort.h (SORTH, SCM_SORT_H),
7477 stackchk.h (STACKCHKH, SCM_STACKCHK_H), stime.h (STIMEH,
7478 SCM_STIME_H), strop.h (STROPH, SCM_STROP_H), strorder.h
7479 (STRORDERH, SCM_STRORDER_H), threads.h (THREADSH, SCM_THREADS_H),
7480 throw.h (THROWH, SCM_THROW_H), version.h (VERSIONH,
7481 SCM_VERSION_H), vports.h (VPORTSH, SCM_VPORTS_H): Renamed
7482 the macros that are defined to inhibit double inclusion of the
7483 same headers to the SCM_<filename>_H format.
7484
7485 2001-08-27 Marius Vollmer <mvo@zagadka.ping.de>
7486
7487 * ports.c, ports.h, fprots.c, gc.c, ioext.c: Replaced
7488 "scm_t_portable" with "scm_port_table" which was an artifact from
7489 the great "scm_*_t -> scm_t_" renaming.
7490
7491 2001-08-25 Thien-Thi Nguyen <ttn@revel.glug.org>
7492
7493 * gc_os_dep.c (GC_noop1): Move before `GC_find_limit' where it is
7494 used; nfc. Thanks to Bill Schottstaedt.
7495
7496 * validate.h (SCM_VALIDATE_USHORT_COPY, SCM_VALIDATE_SHORT_COPY,
7497 SCM_VALIDATE_UINT_COPY, SCM_VALIDATE_INT_COPY): New macros.
7498 Thanks to Chris Cramer.
7499
7500 2001-08-25 Marius Vollmer <mvo@zagadka.ping.de>
7501
7502 * Makefile.am (AUTOMAKE_OPTIONS): Change "foreign" to "gnu".
7503
7504 * eval.c (scm_m_atbind): Redesigned to behvae like `let', but with
7505 dynamic scope.
7506 * dynwind.h (scm_swap_bindings): Declare.
7507 * dynwind.c (scm_swap_bindings): Make non-static.
7508
7509 2001-08-25 Michael Livshin <mlivshin@bigfoot.com>
7510
7511 * gc.c (scm_gc_sweep): now can sweep unreachable variables (by
7512 doing exactly nothing about them). thanks Neil!
7513
7514 2001-08-18 Neil Jerram <neil@ossau.uklinux.net>
7515
7516 * __scm.h (SCM_ENABLE_VCELLS): Fix spelling mistake in comment.
7517
7518 2001-08-17 Thien-Thi Nguyen <ttn@revel.glug.org>
7519
7520 * gc.c: Fix omission bug: Add `heap_segment' forward decl
7521 (proto) in the case when either `GUILE_DEBUG' or
7522 `GUILE_DEBUG_FREELIST' preprocessor symbols are defined.
7523
7524 (map_free_list): Fix typo: Ref `f' correctly.
7525
7526 Thanks to Chris Cramer.
7527
7528 2001-08-15 Rob Browning <rlb@defaultvalue.org>
7529
7530 * Makefile.am (libguile_la_LDFLAGS): use libtool interface version
7531 variables.
7532 (libpath.h): change libguileversion to libguileinterface.
7533
7534 2001-08-07 Marius Vollmer <mvo@zagadka.ping.de>
7535
7536 * Makefile.am (EXTRA_DIST): Distribute ChangeLog-1996-1999 and
7537 ChangeLog-2000. Thanks to Daniel Skarda!
7538
7539 2001-08-07 Michael Livshin <mlivshin@bigfoot.com>
7540
7541 * guile-snarf-docs-texi.in: don't call the tokenizer here, we now
7542 do it from the Makefile.
7543
7544 * Makefile.am: rearrange the snarfing slightly, so that .doc files
7545 are of a reasonable size.
7546
7547 2001-08-02 Neil Jerram <neil@ossau.uklinux.net>
7548
7549 * stacks.c (scm_make_stack): Improve docstring by explaining use
7550 of cutting args.
7551
7552 2001-08-01 Marius Vollmer <mvo@zagadka.ping.de>
7553
7554 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
7555 scm_char_whitespace_p, scm_char_upper_case_p,
7556 scm_char_lower_case_p, scm_char_is_both_p): Do not require
7557 characters to fulfill isascii in addition to the primary
7558 predicate.
7559
7560 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
7561
7562 * numbers.c (DIGITS, scm_small_istr2int, scm_istr2int,
7563 scm_istr2flo, scm_istring2number): Removed.
7564
7565 (iflo2str, scm_real_p, scm_integer_p): Use SCM_<foo> instead of
7566 SCM_SLOPPY_<foo>.
7567
7568 (t_exactness, t_radix, DIGIT2UINT, XDIGIT2UINT, mem2uinteger,
7569 mem2decimal_from_point, mem2ureal, mem2complex, scm_i_mem2number):
7570 Added.
7571
7572 (scm_string_to_number): Use new number parser.
7573
7574 (scm_exact_to_inexact): Replace dummy by a GPROC, which also
7575 handles complex numbers.
7576
7577 * numbers.h (NUMBERSH, SCM_NUMBERS_H): Rename <foo>H to
7578 SCM_<foo>_H.
7579
7580 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Prefer !SCM_<pred> over
7581 SCM_N<pred>.
7582
7583 (scm_istr2int, scm_istr2flo, scm_istring2number): Removed.
7584
7585 (scm_i_mem2number): Added.
7586
7587 (scm_exact_to_inexact): Changed signature.
7588
7589 * read.c (scm_lreadr): Perform the shortcut test for '+ and '-
7590 here instead of within scm_i_mem2number. Call scm_i_mem2number
7591 instead of scm_istr2int and scm_istring2number.
7592
7593 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
7594
7595 * eval.c (scm_lookupcar, scm_m_body, scm_m_lambda, unmemocopy,
7596 scm_unmemocopy, scm_badargsp, scm_eval_body, CHECK_EQVISH,
7597 SCM_CEVAL, scm_nconc2last, SCM_APPLY, scm_copy_tree): Prefer
7598 !SCM_<pred> over SCM_N<pred>.
7599
7600 (scm_eval_body): Remove side effecting code from macro call.
7601
7602 (SCM_CEVAL, SCM_APPLY): Remove goto statement and redundant
7603 SCM_NIMP test.
7604
7605 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
7606
7607 * pairs.h (SCM_VALIDATE_PAIR): Use SCM_CONSP, not SCM_ECONSP.
7608
7609 2001-07-29 Marius Vollmer <mvo@zagadka.ping.de>
7610
7611 Removed vcell slot from structs.
7612
7613 * struct.h (scm_vtable_index_vcell): Removed. Renumbered
7614 subsequent indices.
7615
7616 * struct.c (scm_struct_vtable_p): Do not check vcell slot for
7617 zero. Use scm_vtable_index_layout instead of "0" when accessing
7618 said slot.
7619 (scm_init_struct): Remove vcell slot layout code from
7620 required_vtable_fields.
7621
7622 * objects.h (scm_si_redefined, scm_si_hashsets): Renumbered.
7623
7624 * goops.c (build_class_class_slots): Removed vcell slot
7625 definition.
7626
7627 * goops.h: Renumbered slot indices. (SCM_CLASS_CLASS_LAYOUT):
7628 Removed vcell slot layout code.
7629 (scm_si_vcell): Removed.
7630
7631 2001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
7632
7633 "Glocs" have been removed.
7634
7635 * tags.h: Update tag system docs.
7636 (scm_tc3_cons_gloc): Renamed to scm_tc3_struct. Changed all uses.
7637 (scm_tcs_cons_gloc): Renamed to scm_tcs_struct. Changed all uses.
7638 (SCM_ECONSP, SCM_NECONSP): Removed. Changed all uses to SCM_CONSP
7639 or SCM_NCONSP, respectively.
7640
7641 * struct.c, struct.h, srcprop.c, procs.c, procprop.c, print.c,
7642 objects.c. modules.c, goops.c, eval.c, debug.c: Changed all uses
7643 of scm_tc3_cond_gloc and scm_tcs_cons_gloc. See above.
7644
7645 * print.c (scm_iprin1): Remove printing of glocs. Do not try to
7646 tell glocs from structs.
7647
7648 * gc.c (scm_gc_mark, scm_gc_sweep): Remove handling of glocs.
7649
7650 * eval.c (scm_m_atbind): Make a list of variables, not glocs.
7651 (scm_ceval, scm_deval): For SCM_IM_BIND, fiddle with variables
7652 instead of with glocs.
7653 (EVALCAR): Do not test for glocs.
7654 (scm_lookupcar, scm_lookupcar1): Do not handle glocs in race
7655 condition.
7656 (scm_unmemocar): Do not handle glocs.
7657 (scm_m_atfop): Memoize as a variable, not as a gloc.
7658 (scm_eval_args, scm_deval_args): Do not handle glocs.
7659 (scm_ceval, scm_deval): Likewise.
7660
7661 * eval.h (SCM_XEVALCAR): Do not test for glocs.
7662 (SCM_GLOC_VAR, SCM_GLOC_VAL, SCM_GLOC_SET_VAL, SCM_GLOC_VAL_LOC):
7663 Removed.
7664
7665 * debug.h, debug.c (scm_make_gloc, scm_gloc_p): Removed.
7666
7667 * dynwind.c (scm_swap_bindings): Likewise.
7668 (scm_dowinds): Updated to recognize lists of variables instead of
7669 lists of glocs.
7670
7671 * __scm.h (SCM_CAUTIOS, SCM_RECKLESS): Update comments.
7672
7673
7674 * gc_os_dep.c (GC_noop1): Moved into the same #if/#endif context
7675 where it is needed.
7676
7677 2001-07-25 Gary Houston <ghouston@arglist.com>
7678
7679 * numbers.c (scm_logand, scm_logior, scm_logxor): adjusted the
7680 docstrings to reflect the n-ary implementation.
7681
7682 2001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
7683
7684 * eval.c (scm_ceval, scm_deval): Use "RETURN" macro when returning
7685 value of a variable, not the plain "return" statement.
7686
7687 2001-07-25 Marius Vollmer <mvo@zagadka.ping.de>
7688
7689 * eval.c: Allow variables in memoized code (in addition to glocs).
7690 (scm_lookupcar): Handle variables in lost races. Replace symbol
7691 with variable directly, do not make a gloc.
7692 (scm_unmemocar): Rewrite variables using a reverse lookup, just
7693 like glocs.
7694 (scm_ceval, scm_deval): Deal with variables in SCM_IM_SET and in
7695 the main switch.
7696
7697 2001-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7698
7699 * variable.c (scm_i_variable_print): Use "value" instead of
7700 "binding" since a binding is the mapping between symbols and
7701 variables, not between variables and their values.
7702
7703 * tags.h (scm_tc7_variable): New.
7704 * gc.c (scm_gc_mark): Handle scm_tc7_variable objects.
7705 * print.c (scm_iprin1): Likewise.
7706
7707 * variable.h (scm_tc16_variable): Removed.
7708 (SCM_VARIABLEP): Test for new tc7 code.
7709 (scm_i_variable_print): New.
7710 * variable.c (scm_tc16_variable): Removed.
7711 (variable_print): Renamed to scm_i_variable_print and made
7712 non-static.
7713 (variable_equal_p): Removed.
7714 (make_variable): Construct a tc7 object instead of a smob.
7715 (scm_init_variable): Do not register smob.
7716
7717 2001-07-22 Marius Vollmer <mvo@zagadka.ping.de>
7718
7719 * tags.h: Include inttypes.h when we have it.
7720
7721 2001-07-13 Marius Vollmer <mvo@zagadka.ping.de>
7722
7723 * tags.h (SCM_UNBOUND): Make it the 34th isym/iflag, the 33th slot
7724 is taken by the new SCM_IM_CALL_WITH_VALUES.
7725 * print.c (scm_isymnames): Update table accordingly.
7726
7727 2001-07-22 Gary Houston <ghouston@arglist.com>
7728
7729 * regex-posix.c (s_scm_regexp_exec): use scm_long2num not
7730 SCM_MAKINUM to convert regoff_t value to SCM.
7731
7732 2001-07-21 Gary Houston <ghouston@arglist.com>
7733
7734 * scmsigs.c: include sys/time.h for itimer stuff.
7735
7736 2001-07-19 Rob Browning <rlb@defaultvalue.org>
7737
7738 * gc_os_dep.c (GC_noop1): ifdef out (unused) to quiet warning.
7739
7740 * c-tokenize.lex: add option %nounput to quiet warning.
7741 Add prototype for yylex to quiet warning.
7742
7743 * scmconfig.h.in: add flags for setitimer and getitimer.
7744
7745 * scmsigs.h (scm_init_scmsigs): new prototype.
7746 (scm_init_scmsigs): new prototype.
7747
7748 * scmsigs.c (s_scm_setitimer): new function.
7749 (s_scm_setitimer): new function.
7750
7751 2001-07-18 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
7752
7753 * alist.c, arbiters.c, async.h, backtrace.h, boolean.c, chars.c,
7754 chars.h, continuations.h, debug-malloc.h, dynl.c, feature.c,
7755 feature.h, filesys.h, fluids.h, fports.h, gc_os_dep.c,
7756 gdb_interface.h, gh_eval.c, gh_funcs.c, gh_io.c, gh_list.c,
7757 gh_predicates.c, gsubr.c, gsubr.h, guardians.h,
7758 guile-func-name-check.in, guile-snarf-docs-texi.in,
7759 guile-snarf-docs.in, guile-snarf.awk.in, guile-snarf.in,
7760 hashtab.h, iselect.h, keywords.h, lang.c, list.h, load.h,
7761 objprop.c, objprop.h, options.c, options.h, random.h,
7762 regex-posix.h, root.c, root.h, script.c, snarf.h, stackchk.c,
7763 strerror.c, strop.h, strports.h, threads.h, values.c, values.h,
7764 version.c, version.h: Updated copyright notice.
7765
7766 2001-07-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
7767
7768 * goops.c (sym_layout, sym_vcell, sym_vtable, sym_print,
7769 sym_procedure, sym_setter, sym_redefined, sym_h0, sym_h1, sym_h2,
7770 sym_h3, sym_h4, sym_h5, sym_h6, sym_h7, sym_name,
7771 sym_direct_supers, sym_direct_slots, sym_direct_subclasses,
7772 sym_direct_methods, sym_cpl, sym_default_slot_definition_class,
7773 sym_slots, sym_getters_n_setters, sym_keyword_access, sym_nfields,
7774 sym_environment, scm_sym_change_class): New static variables to
7775 hold predefined symbols.
7776
7777 (build_class_class_slots): Build the list using scm_list_n
7778 instead of cons. Also, slots are already created as lists, thus
7779 making a call to maplist unnecessary.
7780
7781 (scm_class_name, scm_class_direct_supers, scm_class_direct_slots,
7782 scm_class_direct_subclasses, scm_class_direct_methods,
7783 scm_class_precedence_list, scm_class_slots, scm_class_environment,
7784 scm_method_procedure, create_standard_classes, purgatory): Use
7785 predefined symbols.
7786
7787 (build_slots_list, compute_getters_n_setters,
7788 scm_sys_initialize_object, scm_sys_inherit_magic_x,
7789 get_slot_value_using_name, set_slot_value_using_name,
7790 scm_sys_invalidate_method_cache_x, scm_generic_capability_p,
7791 scm_compute_applicable_methods, scm_sys_method_more_specific_p,
7792 make_struct_class): Prefer !SCM_<pred> over SCM_N<pred>.
7793
7794 (scm_sys_prep_layout_x): Minimize variable scopes.
7795
7796 (scm_sys_prep_layout_x, scm_sys_fast_slot_ref,
7797 scm_sys_fast_slot_set_x): Fix signedness.
7798
7799 (go_to_hell, go_to_heaven, purgatory, scm_change_object_class,
7800 lock_cache_mutex, unlock_cache_mutex, call_memoize_method,
7801 scm_memoize_method, scm_wrap_object): Use packing and unpacking
7802 when converting to and from SCM values.
7803
7804 (scm_enable_primitive_generic_x): Add rest argument checking.
7805
7806 (map, filter_cpl, maplist, scm_sys_initialize_object,
7807 scm_sys_prep_layout_x, slot_definition_using_name,
7808 scm_enable_primitive_generic_x, scm_compute_applicable_methods,
7809 call_memoize_method, scm_make, scm_make_class): Prefer explicit
7810 predicates over SCM_N?IMP tests.
7811
7812 (scm_sys_prep_layout_x): Fix typo in error message. Fix type
7813 checking.
7814
7815 (burnin, go_to_hell): Use SCM_STRUCT_DATA instead of the SCM_INST
7816 alias.
7817
7818 2001-07-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7819
7820 * fports.c (fport_print): Don't use SCM_C[AD]R for non pairs.
7821
7822 * num2integral.i.c (INTEGRAL2NUM, INTEGRAL2BIG): Fix signedness.
7823
7824 * symbols-deprecated.c (scm_gentemp): Simplify vector test.
7825
7826 * vectors.c (scm_vector_p): Eliminate redundant IMP test.
7827
7828 2001-07-12 Michael Livshin <mlivshin@bigfoot.com>
7829
7830 * strings.c (s_scm_string): fix arg position in assert.
7831
7832 2001-07-11 Gary Houston <ghouston@arglist.com>
7833
7834 * strports.c (st_write): use memcpy, not strncpy. thanks to
7835 Dale P. Smith.
7836
7837 2001-07-09 Thien-Thi Nguyen <ttn@revel.glug.org>
7838
7839 * alist.c, alloca.c, arbiters.c, async.c, async.h, backtrace.c,
7840 boolean.c, chars.c, continuations.c, coop-defs.h, coop-threads.c,
7841 debug-malloc.h, debug.c, debug.h, dynl.c, dynwind.c, eq.c,
7842 error.c, eval.c, evalext.c, feature.c, feature.h, filesys.c,
7843 filesys.h, fluids.c, fluids.h, fports.c, fports.h, gc.c, gc.h,
7844 gdbint.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
7845 hooks.h, inet_aton.c, init.c, ioext.c, keywords.c, keywords.h,
7846 lang.c, list.c, load.c, macros.c, mallocs.c, memmove.c, modules.c,
7847 net_db.c, numbers.c, numbers.h, objects.c, objprop.c, options.c,
7848 pairs.c, pairs.h, ports.c, ports.h, posix.c, print.c, print.h,
7849 procprop.c, procs.c, procs.h, properties.c, putenv.c, ramap.c,
7850 random.c, random.h, read.c, regex-posix.c, regex-posix.h, root.c,
7851 root.h, scmsigs.c, script.c, simpos.c, smob.c, snarf.h, socket.c,
7852 sort.c, srcprop.c, srcprop.h, stackchk.c, stacks.c, stacks.h,
7853 stime.c, strerror.c, strings.c, strings.h, strop.c, strorder.c,
7854 strports.c, struct.c, struct.h, symbols-deprecated.c, symbols.c,
7855 symbols.h, tags.h, threads.c, threads.h, throw.c, unif.c, unif.h,
7856 variable.c, variable.h, vectors.c, vectors.h, version.c, vports.c,
7857 weaks.c, weaks.h: Remove "face-lift" comment.
7858
7859 2001-07-08 Rob Browning <rlb@defaultvalue.org>
7860
7861 * .cvsignore: add stamp-h.in.
7862
7863 2001-07-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
7864
7865 * hooks.c (scm_make_hook, scm_add_hook_x),
7866 (scm_remove_hook_x, scm_reset_hook_x, scm_run_hook): Added return
7867 value info to the docstrings.
7868
7869 2001-07-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
7870
7871 Some more compatibility patches for Windows.
7872
7873 * posix.c (getlogin): getlogin() implementation for Windows.
7874
7875 * backtrace.c, ioext.c: Include <stdio.h>.
7876
7877 * unif.c, script.c, rw.c, error.c: Include <io.h>, if it does
7878 exist.
7879
7880 * cpp_sig_symbols.in: Added SIGBREAK.
7881
7882 2001-07-01 Marius Vollmer <mvo@zagadka.ping.de>
7883
7884 * strports.c (scm_read_0str, scm_eval_0str): Call
7885 scm_c_read_string and scm_c_eval_string respectively, not
7886 themselves. Thanks to Dale P. Smith!
7887
7888 2001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
7889
7890 * unif.c (scm_array_set_x): The variable args does not
7891 necessarily have to be a list. Further, got rid of a redundant
7892 SCM_NIMP test.
7893
7894 2001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
7895
7896 * list.c (SCM_I_CONS): Make sure the cell type is initialized
7897 last.
7898
7899 * gc.c (s_scm_map_free_list, scm_igc, scm_gc_sweep,
7900 init_heap_seg): Fixed signedness.
7901
7902 (init_heap_seg): Replaced strange for-loop with a while loop.
7903
7904 * weaks.h (WEAKSH, SCM_WEAKS_H): Rename <foo>H to SCM_<foo>_H.
7905
7906 (SCM_WVECTP): Prefer !SCM_<pred> over SCM_N<pred>.
7907
7908 The following patch adds conservative marking for the elements of
7909 free or allocated cells.
7910
7911 * gc.c (allocated_mark, heap_segment): New static functions.
7912
7913 (which_seg): Deleted, since the functionality is now provided by
7914 function heap_segment.
7915
7916 (map_free_list): Use heap_segment instead of which_seg.
7917
7918 (MARK): If cell debugging is disabled, mark free cells
7919 conservatively.
7920
7921 (scm_mark_locations, scm_cellp): Extracted the search for the
7922 heap segment of a SCM value into function heap_segment.
7923
7924 (scm_init_storage): Allocated cells must be marked
7925 conservatively.
7926
7927 * gc.[ch] (scm_gc_mark_cell_conservatively): New function.
7928
7929 The following patch changes the representation of weak vectors to
7930 double cells instead of using an extension of the vector's
7931 allocated memory.
7932
7933 * gc.c (MARK): Use SCM_SET_WVECT_GC_CHAIN instead of assigning to
7934 the result of SCM_WVECT_GC_CHAIN.
7935
7936 (scm_gc_sweep): Weak vectors don't have extra fields any more.
7937
7938 * weaks.c (allocate_weak_vector): New static function. It does
7939 not patch any previously created vector object during the
7940 construction of a weak vector, and thus doesn't need to switch
7941 off interrupts during vector creation.
7942
7943 (scm_make_weak_vector, scm_make_weak_key_hash_table,
7944 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
7945 Use allocate_weak_vector to provide the new weak vector object.
7946
7947 * weaks.h (SCM_WVECT_TYPE, SCM_SET_WVECT_TYPE,
7948 SCM_SET_WVECT_GC_CHAIN): New macros. The weak vector subtype is
7949 now stored in the double cell.
7950
7951 (SCM_IS_WHVEC, SCM_IS_WHVEC_V, SCM_IS_WHVEC_B, SCM_IS_WHVEC_ANY):
7952 Use SCM_WVECT_TYPE.
7953
7954 (SCM_WVECT_GC_CHAIN): The weak objects are now chained together
7955 using an entry of the double cell.
7956
7957 2001-06-30 Thien-Thi Nguyen <ttn@revel.glug.org>
7958
7959 * stamp-h.in: bye bye
7960
7961 2001-06-30 Marius Vollmer <mvo@zagadka.ping.de>
7962
7963 * gh_eval.c (gh_eval_str): Use scm_c_eval_string instead of
7964 scm_eval_0str.
7965
7966 * load.c, load.h (scm_c_primitive_load,
7967 scm_c_primitive_load_path): New.
7968
7969 * strports.c, strports.h (scm_c_read_string): Renamed from
7970 scm_read_0str. Also, added "const" qualifier to argument.
7971 (scm_c_eval_string): Renamed from scm_eval_0str.
7972 (scm_read_0str, scm_eval_0str): Deprecated.
7973
7974 2001-06-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
7975
7976 * fluids.c (scm_c_with_fluid): Use scm_list_1() instead of
7977 SCM_LIST1.
7978
7979 2001-06-28 Keisuke Nishida <kxn30@po.cwru.edu>
7980
7981 * list.h (scm_list_1, scm_list_2, scm_list_3, scm_list_4, scm_list_5,
7982 scm_list_n): New functions.
7983 (SCM_LIST0, SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5,
7984 SCM_LIST6, SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify): Deprecated.
7985 (lots of files): Use the new functions.
7986
7987 * goops.c (CALL_GF1, CALL_GF2, CALL_GF3, CALL_GF4): Use scm_call_N.
7988
7989 * strings.c: #include "libguile/deprecation.h".
7990
7991 2001-06-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
7992
7993 * read.c (scm_lreadr): When reading a hash token, check for a
7994 user-defined hash procedure first, so that overriding the builtin
7995 hash characters is possible (this was needed for implementing
7996 SRFI-4's read synax `f32(...)').
7997
7998 * num2integral.i.c: Use scm_t_signed_bits instead of scm_t_bits,
7999 because the latter is unsigned now and breaks comparisons like
8000 (n < (scm_t_signed_bits)MIN_VALUE).
8001
8002 2001-06-26 Neil Jerram <neil@ossau.uklinux.net>
8003
8004 * eval.h, eval.c (scm_call_4): New function.
8005
8006 * eval.c (SCM_APPLY, SCM_CEVAL, ENTER_APPLY): Call trap handlers
8007 directly rather than dispatching to them via scm_ithrow and a lazy
8008 catch.
8009
8010 * eval.c (scm_evaluator_trap_table), eval.h (SCM_ENTER_FRAME_HDLR,
8011 SCM_APPLY_FRAME_HDLR, SCM_EXIT_FRAME_HDLR): Add three new options
8012 for trap handler procedures.
8013
8014 * debug.h (SCM_RESET_DEBUG_MODE): Add checks for trap handler
8015 procedures not being #f.
8016
8017 2001-06-27 Michael Livshin <mlivshin@bigfoot.com>
8018
8019 * Makefile.am (c-tokenize.c): add rule to generate it.
8020 (EXTRA_DIST): add c-tokenize.lex, so it gets distributed.
8021
8022 filter-doc-snarfage.c: remove.
8023
8024 2001-06-26 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
8025
8026 * ports.c (scm_output_port_p): Use result of SCM_COERCE_OUTPORT.
8027
8028 The following set of changes makes compiling Guile under various
8029 Windows compilers easier. Compilation under GNU systems should
8030 not be affected at all.
8031
8032 Thanks to Stefan Jahn for all necessary information, patches and
8033 testing.
8034
8035 * posix.c: Conditialize getpwent, getgrent, kill, getppid, getuid,
8036 getpgrp, ttyname, primitive-fork and some header inclusion for
8037 Windows.
8038
8039 * random.c: Define M_PI, if not predefined and use __int64 for
8040 LONG64 under Windows.
8041
8042 * scmsigs.c: Emulate some functions (alarm, sleep, kill) under
8043 Windows and conditionalize some signal names.
8044
8045 * socket.c (scm_getsockopt): Added missing comma.
8046 Include socket library header under Windows.
8047
8048 * stime.c (CLKTCK): Add cast to int, to make it compile under
8049 Windows.
8050
8051 * ports.c (truncate): New function, compiled only under Windows.
8052
8053 * net_db.c: Do not declare errno under Windows.
8054
8055 * iselect.h, inet_aton.c: Include socket library headers under
8056 Windows.
8057
8058 * guile.c (inner_main): Under Windows, initialize socket library
8059 and initialize gdb_interface data structures.
8060
8061 * gdb_interface.h: Under Windows, gdb_interface cannot be
8062 initialized statically. Initialize at runtime instead.
8063
8064 * fports.c (write_all): ssize_t -> size_t.
8065 (fport_print): Conditionalize call to ttyname().
8066 (getflags): New function, compiled only under Windows.
8067
8068 * filesys.c: Conditionalize inclusion of <pwd.h>. Conditionalize
8069 primitives chown, link, fcntl.
8070 (scm_basename, scm_dirname): Under Windows, handle \ as well as /
8071 as path seperator.
8072
8073 * backtrace.c: Include <io.h> under Windows.
8074
8075 * async.h (ASYNCH, SCM_ASYNC_H): Rename <foo>H to SCM_<foo>_H.
8076
8077 * _scm.h: Added preprocessor conditional for __MINGW32__ for errno
8078 declaration.
8079
8080 2001-06-27 Keisuke Nishida <kxn30@po.cwru.edu>
8081
8082 * eval.c (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
8083 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): New functions.
8084 * eval.h (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
8085 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): Declared.
8086 * async.c (scm_run_asyncs), coop-threads.c (scheme_body_bootstrip,
8087 scheme_handler_bootstrip), debug.c (with_traps_inner), dynwind.c
8088 (scm_dynamic_wind, scm_dowinds), environments.c
8089 (import_environment_conflict), eval.c (scm_macroexp, scm_force,
8090 scm_primitive_eval_x, scm_primitive_eval), fluids.c (apply_thunk),
8091 goops.c (GETVAR, purgatory, make_class_from_template,
8092 scm_ensure_accessor), hashtab.c (scm_ihashx, scm_sloppy_assx,
8093 scm_delx_x, fold_proc), hooks.c (scm_c_run_hook), load.c
8094 (scm_primitive_load), modules.c (scm_resolve_module,
8095 scm_c_define_module, scm_c_use_module, scm_c_export,
8096 module_variable, scm_eval_closure_lookup, scm_sym2var,
8097 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
8098 ports.c (scm_port_for_each), print.c (scm_printer_apply),
8099 properties.c (scm_primitive_property_ref), ramap.c (ramap,
8100 ramap_cxr, rafe, scm_array_index_map_x, read.c (scm_lreadr),
8101 scmsigs.c (sys_deliver_signals), sort.c (applyless), strports.c
8102 (scm_object_to_string, scm_call_with_output_string,
8103 scm_call_with_input_string), throw.c (scm_body_thunk,
8104 scm_handle_by_proc, hbpca_body), unif.c (scm_make_shared_array,
8105 scm_make_shared_array), vports.c (sf_flush, sf_write,
8106 sf_fill_input, sf_close): Use one of the above functions.
8107 * goops.c, hashtab.c, scmsigs.c, sort.c: #include "libguile/root.h".
8108
8109 2001-06-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
8110
8111 * filesys.c (scm_close), ports.c (scm_close_port,
8112 scm_port_closed_p), strop.c (scm_string_null_p): Use SCM_BOOL
8113 instead of SCM_NEGATE_BOOL.
8114
8115 * filesys.c (scm_stat): Clean up type dispatch.
8116
8117 * filesys.c (scm_stat), ports.c (scm_input_port_p,
8118 scm_output_port_p): Get rid of redundant IM type check.
8119
8120 * filesys.c (scm_readdir, scm_getcwd, scm_readlink), gh_data.c
8121 (gh_str2scm), load.c (scm_primitive_load, scm_internal_parse_path,
8122 scm_search_path), net_db.c (scm_gethost, scm_getnet, scm_getproto,
8123 scm_return_entry), numbers.c (scm_number_to_string), objects.c
8124 (scm_make_subclass_object), ports.c (scm_port_mode), read.c
8125 (scm_lreadr), simpos.c (scm_getenv), socket.c (scm_inet_ntoa,
8126 scm_addr_vector), stime.c (scm_strftime), strings.c
8127 (scm_makfromstrs, scm_makfrom0str, scm_substring), strings.h
8128 (SCM_STRING_COERCE_0TERMINATION_X), strop.c (string_copy,
8129 scm_string_split), strports.c (scm_strport_to_string), symbols.c
8130 (scm_symbol_to_string), vports.c (sf_write): Use scm_mem2string
8131 instead of scm_makfromstr.
8132
8133 * net_db.c (scm_sethost, scm_setnet, scm_setproto, scm_setserv),
8134 ports.c (scm_close_all_ports_except), read.c (scm_lreadr,
8135 scm_read_hash_extend), stime.c (scm_strftime), strings.c
8136 (scm_string_append, scm_string), strings.h (SCM_STRINGP,
8137 SCM_STRING_COERCE_0TERMINATION_X, SCM_RWSTRINGP), strop.c
8138 (string_capitalize_x): Prefer explicit type check over SCM_N?IMP,
8139 !SCM_<pred> over SCM_N<pred>.
8140
8141 * strings.[ch] (scm_makfromstr): Deprecated.
8142
8143 (scm_mem2string): New function, replaces scm_makfromstr.
8144
8145 * strings.c (scm_substring), strop.c (string_copy,
8146 scm_string_split), strports.c (scm_strport_to_string), symbols.c
8147 (scm_symbol_to_string): Fix gc problem.
8148
8149 * strings.h (STRINGSH, SCM_STRINGS_H): Rename <foo>H to
8150 SCM_<foo>_H.
8151
8152 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Eliminate
8153 warning about comparing signed and unsigned values. This fix is
8154 not optimal, since it won't work reliably if sizeof (c_start) >
8155 sizeof (size_t) or sizeof (c_end) > sizeof (size_t). A better
8156 solution is to define this macro as an inline function, thus
8157 allowing to specifiy the types of c_start and c_end.
8158
8159 2001-06-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
8160
8161 * debug.h (SCM_DEBUGOBJ_FRAME): Deliver result as a
8162 scm_t_debug_frame*.
8163
8164 * debug.h (DEBUGH, SCM_DEBUG_H), stacks.h (STACKSH, SCM_STACKSH):
8165 Rename <foo>H to SCM_<foo>_H.
8166
8167 * stacks.c (NEXT_FRAME, narrow_stack): Prefer explicit type check
8168 over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
8169
8170 (narrow_stack): Make i unsigned. Don't use side-effecting
8171 operations in conditions.
8172
8173 (narrow_stack, scm_make_stack, scm_stack_id,
8174 scm_last_stack_frame): Get rid of redundant SCM_N?IMP checks.
8175
8176 (scm_make_stack, scm_stack_id, scm_last_stack_frame): Clean up
8177 type dispatch. No need to cast result of SCM_DEBUGOBJ_FRAME any
8178 more.
8179
8180 (scm_stack_ref, scm_frame_previous, scm_frame_next): Fix
8181 signedness.
8182
8183 (scm_last_stack_frame): Remove bogus `;´.
8184
8185 * stacks.h (SCM_FRAMEP): Fix type check.
8186
8187 2001-06-25 Michael Livshin <mlivshin@bigfoot.com>
8188
8189 * Makefile.am (MAINTAINERCLEANFILES): be sure to remove
8190 c-tokenize.c when doing maintainer-clean.
8191
8192 * snarf.h (SCM_SNARF_DOCS): change the "grammar" slightly.
8193
8194 * guile-snarf-docs.in, guile-snarf-docs-texi.in: rewrite &
8195 simplify.
8196
8197 * eval.c: all hash signs are in column 0.
8198
8199 * Makefile.am (guile_filter_doc_snarfage): build using
8200 c-tokenize.c, not filter-doc-snarfage.c.
8201 rearrange snarfing dependencies a bit.
8202
8203 * c-tokenize.lex: new file.
8204
8205 2001-06-25 Marius Vollmer <mvo@zagadka.ping.de>
8206
8207 * srcprop.h, srcprop.c (scm_srcprops_to_plist): Renamed from
8208 scm_t_srcpropso_plist. See the big type renaming.
8209 * coop-defs.h (scm_mutex_trylock, scm_cond_timedwait): Likewise.
8210 Thanks to Seth Alves!
8211
8212 * numbers.c (SIZE_MAX, PTRDIFF_MIN, PTRDIFF_MAX): Only define when
8213 they aren't defined already.
8214
8215 2001-06-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
8216
8217 * backtrace.c (display_backtrace_body): Use SCM_VALIDATE_STACK
8218 and SCM_VALIDATE_OPOUTPORT instead of SCM_ASSERT. Fix signedness
8219 problem.
8220
8221 * backtrace.c (display_expression, scm_set_print_params_x,
8222 display_application, display_frame, scm_backtrace), numbers.c
8223 (scm_istring2number), objects.c (scm_class_of,
8224 scm_mcache_lookup_cmethod, scm_mcache_compute_cmethod): Prefer
8225 explicit type check over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
8226
8227 * fluids.c (scm_fluid_ref, scm_fluid_set_x): Fluid numbers are
8228 always positive.
8229
8230 * numbers.c (scm_i_mkbig): Remove unnecessary casts, remove
8231 unnecessary SCM_DEFER_INTS, SCM_ALLOW_INTS.
8232
8233 * objects.c (scm_class_of): Type fix.
8234
8235 (scm_mcache_lookup_cmethod): Improved comment, simplified,
8236 eliminated goto.
8237
8238 * pairs.h (scm_error_pair_access): The function can return if
8239 called recursively.
8240
8241 2001-06-20 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
8242
8243 * init.c (scm_init_guile_1): Removed initialization of tag.c.
8244
8245 * gdbint.c, init.c: Removed inclusion of tag.h.
8246
8247 * tag.h, tag.c: Removed files.
8248
8249 * Makefile.am: Removed tag.{h,c,doc,x} in various places.
8250
8251 2001-06-20 Gary Houston <ghouston@arglist.com>
8252
8253 * deprecation.c, extensions.c, rw.c: include string.h.
8254
8255 2001-06-19 Gary Houston <ghouston@arglist.com>
8256
8257 * filter-doc-snarfage.c (process): added ungetc in
8258 MULTILINE_COOKIE case since otherwise it fails when there's no
8259 space between the '(' and the quote of the following string
8260 (gcc 3.0).
8261
8262 2001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
8263
8264 Throughout: replace "scm_*_t" with "scm_t_*", except "scm_lisp_t".
8265
8266 2001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
8267
8268 * unif.h (SCM_ARRAY_NDIM): Shift then cast so that no sign
8269 extension takes place.
8270 * strings.h (SCM_STRING_LENGTH): Likewise.
8271 (SCM_STRING_MAX_LENGTH): Use unsigned numbers.
8272
8273 * __scm.h (ptrdiff_t): Typedef to long when configure didn't find
8274 it.
8275
8276 * tags.h: Include <stdint.h> when we have it.
8277 (scm_bits_t): Changed to be a unsigned type. Use uintptr_t when
8278 available. Else use "unsigned long".
8279 (scm_signed_bits_t): New.
8280
8281 * numbers.h (SCM_SRS): Cast shiftee to scm_signed_bits_t.
8282 (SCM_INUM): Cast result to scm_signed_bits_t.
8283
8284 2001-06-13 Thien-Thi Nguyen <ttn@revel.glug.org>
8285
8286 * mkstemp.c: Update path to #include file scmconfig.h.
8287 Thanks to Golubev I. N.
8288
8289 2001-06-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
8290
8291 * struct.h (SCM_STRUCT_VTABLE_FLAGS): New macro.
8292
8293 * goops.h (SCM_NUMBER_OF_SLOTS): Removed bogus `\´ at the end of
8294 the macro definition.
8295
8296 (SCM_CLASSP, SCM_INSTANCEP, SCM_PUREGENERICP, SCM_ACCESSORP,
8297 SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Use SCM_STRUCT_VTABLE_FLAGS
8298 instead of SCM_INST_TYPE.
8299
8300 (SCM_ACCESSORP, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Make sure
8301 the object is a struct before accessing its struct flags.
8302
8303 (SCM_INST_TYPE, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Deprecated.
8304
8305 2001-06-10 Gary Houston <ghouston@arglist.com>
8306
8307 * rdelim.c (scm_init_rdelim_builtins): don't try to activate the
8308 (ice-9 rdelim) module in (guile) and (guile-user). it didn't
8309 work reliably anymore. try it from boot-9.scm instead.
8310
8311 2001-06-09 Marius Vollmer <mvo@zagadka.ping.de>
8312
8313 * ports.c (scm_lfwrite): Maintain columnd and row count in port.
8314 Thanks to Matthias Köppe!
8315
8316 2001-06-08 Michael Livshin <mlivshin@bigfoot.com>
8317
8318 * snarf.h, filter-doc-snarfage.c: more changes to cope with
8319 space-happy C preprocessors.
8320
8321 * filter-doc-snarfage.c, guile-snarf.in: try to cope with spaces
8322 inside cookies. thanks to Matthias Köppe!
8323
8324 2001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
8325
8326 * keywords.c (keyword_print): Don't use SCM_C[AD]R to access
8327 keywords. Fix gc protection.
8328
8329 * objects.c (scm_mcache_lookup_cmethod): Don't use side effecting
8330 operations in macro calls.
8331
8332 * pairs.c (scm_error_pair_access): Avoid recursion.
8333
8334 Thanks to Matthias Koeppe for reporting the bugs that correspond
8335 to the following set of patches.
8336
8337 * unif.c (scm_bit_set_star_x, scm_bit_invert_x), vectors.h
8338 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Obtain the
8339 bitvector base address using SCM_BITVECTOR_BASE.
8340
8341 * unif.h (SCM_BITVECTOR_BASE): Return the base address as an
8342 unsigned long*.
8343
8344 2001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
8345
8346 * goops.c (SCM_CLASS_REDEF): Removed.
8347
8348 * vectors.h (VECTORSH, SCM_VECTORS_H): Renamed <foo>H to
8349 SCM_<foo>_H.
8350
8351 Thanks to Matthias Koeppe for reporting the bugs that correspond
8352 to the following set of patches.
8353
8354 * goops.c (scm_sys_prep_layout_x, scm_basic_basic_make_class,
8355 create_basic_classes, scm_sys_fast_slot_set_x, set_slot_value,
8356 scm_sys_allocate_instance, clear_method_cache,
8357 scm_sys_invalidate_method_cache_x, scm_make,
8358 create_standard_classes, scm_make_port_classes, scm_make_class,
8359 scm_add_slot): Use SCM_SET_SLOT to set slot values.
8360
8361 (prep_hashsets): Use SCM_SET_HASHSET to set class hash values.
8362
8363 * goops.h (SCM_SET_SLOT, SCM_SET_HASHSET): New macros.
8364
8365 * ramap.c (BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
8366 UNARY_ELTS_CODE): Remove bogus break statement.
8367
8368 * vectors.h (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR):
8369 Don't access bit vectors elements as SCM objects.
8370
8371 * weaks.c (scm_make_weak_vector, scm_make_weak_key_hash_table,
8372 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
8373 Don't assign to an unpacked value.
8374
8375 2001-06-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
8376
8377 * __scm.h (SCM_NORETURN): Moved here from error.h.
8378
8379 (SCM_UNUSED): New macro.
8380
8381 (SCM_DEBUG_PAIR_ACCESSES): New macro.
8382
8383 * backtrace.c (display_error_handler), continuations.c
8384 (continuation_print), debug.c (debugobj_print), dynwind.c
8385 (guards_print), environments.c (observer_print,
8386 core_environments_finalize, leaf_environment_cell,
8387 leaf_environment_print, eval_environment_print,
8388 eval_environment_observer, import_environment_define,
8389 import_environment_undefine, import_environment_print,
8390 import_environment_observer, export_environment_define,
8391 export_environment_undefine, export_environment_print,
8392 export_environment_observer), eval.c (scm_m_quote, scm_m_begin,
8393 scm_m_if, scm_m_set_x, scm_m_and, scm_m_or, scm_m_case,
8394 scm_m_cond, scm_m_lambda, scm_m_letstar, scm_m_do, scm_m_delay,
8395 scm_m_letrec1, scm_m_apply, scm_m_cont, scm_m_nil_cond,
8396 scm_m_nil_ify, scm_m_t_ify, scm_m_0_cond, scm_m_0_ify,
8397 scm_m_1_ify, scm_m_atfop, scm_m_at_call_with_values), evalext.c
8398 (scm_m_generalized_set_x), fluids.c (fluid_print), fports.c
8399 (fport_print), gc.c (gc_start_stats, scm_remember_upto_here_1,
8400 scm_remember_upto_here_2, scm_remember_upto_here, mark_gc_async),
8401 gh_init.c (gh_standard_handler), goops.c (get_slot_value,
8402 set_slot_value, test_slot_existence, scm_change_object_class,
8403 scm_m_atslot_ref, scm_m_atslot_set_x, make_struct_class,
8404 default_setter), guardians.c (guardian_print, guardian_gc_init,
8405 guardian_zombify, whine_about_self_centered_zombies), guile.c
8406 (inner_main), init.c (stream_handler), keywords.c (keyword_print),
8407 mallocs.c (malloc_print), numbers.c (scm_print_real,
8408 scm_print_complex, scm_bigprint), ports.c (flush_port_default,
8409 end_input_default, scm_port_print, fill_input_void_port,
8410 write_void_port), root.c (root_print), smob.c (scm_mark0,
8411 scm_free0, scm_smob_print, scm_smob_apply_1_error,
8412 scm_smob_apply_2_error, scm_smob_apply_3_error, free_print),
8413 stime.c (restorezone), strings.c (scm_makfromstr), struct.c
8414 (scm_struct_free_0, scm_struct_free_standard,
8415 scm_struct_free_entity, scm_struct_gc_init, scm_free_structs),
8416 throw.c (jmpbuffer_print, lazy_catch_print, ss_handler,
8417 scm_handle_by_throw, scm_ithrow), weaks.c
8418 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
8419 scm_scan_weak_vectors), ramap.c (scm_array_fill_int), filesys.c
8420 (scm_dir_print): Mark unused parameters with SCM_UNUSED.
8421
8422 * error.h (SCM_NORETURN): Moved to __scm.h.
8423
8424 * error.h (ERRORH, SCM_ERROR_H), pairs.h (PAIRSH, SCM_PAIRS_H):
8425 Renamed <foo>H to SCM_<foo>_H.
8426
8427 * gc.c (debug_cells_gc_interval): New static variable.
8428
8429 (scm_assert_cell_valid): If selected by the user, perform
8430 additional garbage collections.
8431
8432 (scm_set_debug_cell_accesses_x): Extended to let the user specify
8433 if additional garbage collections are desired.
8434
8435 (mark_gc_async): If additional garbage collections are selected
8436 by the user, don't call the after-gc-hook. Instead require the
8437 user to run the hook manually.
8438
8439 * pairs.c (scm_error_pair_access): New function. Only compiled
8440 if SCM_DEBUG_PAIR_ACCESSES is set to 1.
8441
8442 * pairs.h (SCM_VALIDATE_PAIR): New macro.
8443
8444 (SCM_CAR, SCM_CDR, SCM_SETCAR, SCM_SETCDR): If
8445 SCM_DEBUG_PAIR_ACCESSES is set to 1, make sure that the argument
8446 is a real pair object. (Glocs are also accepted, but that may
8447 change.) If not, abort with an error message.
8448
8449 2001-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
8450
8451 * eval.c (SCM_VALIDATE_NON_EMPTY_COMBINATION): New macro.
8452
8453 (SCM_CEVAL, SCM_APPLY): Replace calls to SCM_EVALIM2 with calls
8454 to SCM_VALIDATE_NON_EMPTY_COMBINATION.
8455
8456 2001-06-05 Marius Vollmer <mvo@zagadka.ping.de>
8457
8458 * extensions.c (scm_c_register_extension): Allow NULL as library
8459 name.
8460 (load_extension): Ignore NULL library names when comparing.
8461
8462 * hash.c (scm_hasher): Use SCM_UNPACK in the case labels so that
8463 non-pointers are being compared. Thanks to Alexander Klimov!
8464
8465 2001-06-04 Gary Houston <ghouston@arglist.com>
8466
8467 * rw.c (scm_write_string_partial): new procedure implementing
8468 write-string/partial in (ice-9 rw).
8469 * rw.h: declare scm_write_string_partial.
8470
8471 2001-06-04 Marius Vollmer <mvo@zagadka.ping.de>
8472
8473 * keywords.c (keyword_print): Substract 1 from length of symbol
8474 name, accounting for the silly dash.
8475
8476 * dynl.c (scm_registered_modules, scm_clear_registered_modules):
8477 Do not emit deprecation warning.
8478
8479 Added exception notice to all files.
8480
8481 * dynl.c: Include "deprecation.h".
8482
8483 2001-06-03 Marius Vollmer <mvo@zagadka.ping.de>
8484
8485 * dynl.c (scm_register_module_xxx, scm_registered_modules,
8486 scm_clear_registered_modules): Deprecated.
8487
8488 2001-06-02 Rob Browning <rlb@cs.utexas.edu>
8489
8490 * .cvsignore: add guile_filter_doc_snarfage guile-snarf-docs
8491 guile-snarf-docs-texi.
8492
8493 * fports.c: HAVE_ST_BLKSIZE changed to
8494 HAVE_STRUCT_STAT_ST_BLKSIZE.
8495 (scm_fport_buffer_add): HAVE_ST_BLKSIZE changed to
8496 HAVE_STRUCT_STAT_ST_BLKSIZE.
8497
8498 * filesys.c (scm_stat2scm): HAVE_ST_RDEV changed to
8499 HAVE_STRUCT_STAT_ST_RDEV.
8500 (scm_stat2scm): HAVE_ST_BLKSIZE changed to
8501 HAVE_STRUCT_STAT_ST_BLKSIZE.
8502 (scm_stat2scm): HAVE_ST_BLOCKS changed to
8503 HAVE_STRUCT_STAT_ST_BLOCKS.
8504
8505 2001-06-02 Marius Vollmer <mvo@zagadka.ping.de>
8506
8507 * strports.c (scm_eval_string): Use scm_primitive_eval_x instead
8508 of scm_eval_x to allow module changes between the forms in the
8509 string. Set/restore module using scm_c_call_with_current_module.
8510
8511 * mkstemp.c: New file, slightly modified from libiberties
8512 mkstemps.c.
8513
8514 2001-05-31 Michael Livshin <mlivshin@bigfoot.com>
8515
8516 * guile-snarf-docs.in, guile-snarf-docs-texi.in,
8517 filter-doc-snarfage.c: new files.
8518
8519 * Makefile.am: add stuff to [build,] use and distribute
8520 guile-snarf-docs, guile-snarf-docs-texi, guile_filter_doc_snarfage.
8521
8522 * guile-snarf.in: grok the new snarf output.
8523
8524 * snarf.h: make the output both texttools- and `read'-friendly.
8525
8526 * guile-doc-snarf.in: reimplement in terms of guile-snarf and
8527 guile-snarf-docs. (should also deprecate, I guess. maybe not).
8528
8529 2001-05-31 Marius Vollmer <mvo@zagadka.ping.de>
8530
8531 * print.c (scm_simple_format): Support "~~" and "~%". Signal
8532 error for unsupported format controls and for superflous
8533 arguments. Thanks to Daniel Skarda!
8534
8535 * print.h, print.c (scm_print_symbol_name): Factored out of
8536 scm_iprin1.
8537 (scm_iprin1): Call it.
8538
8539 * keywords.c (keyword_print): Use scm_print_symbol_name so that
8540 weird names are printed correctly.
8541
8542 * print.c (scm_print_symbol_name): Symbols whose name starts with
8543 `#' or `:' or ends with `:' are considered weird.
8544
8545 2001-05-30 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
8546
8547 * numbers.c (scm_difference, scm_divide): Clarified comments for -
8548 and /.
8549
8550 2001-05-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
8551
8552 * debug.h: Removed prototype for scm_eval_string.
8553
8554 2001-05-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
8555
8556 * symbols.c (scm_gensym): Fix buffer overrun (try `(gensym
8557 (make-string 2000 #\!))' in an older version).
8558
8559 Change strncpy to memcpy to allow embedded NUL characters in
8560 symbol prefix.
8561
8562 2001-05-28 Michael Livshin <mlivshin@bigfoot.com>
8563
8564 * hooks.c (scm_create_hook): deprecated.
8565 (make_hook): deleted.
8566 (scm_make_hook): all the hook creation code is now here.
8567
8568 * gc.c (scm_init_gc): don't call `scm_create_hook'. instead make
8569 a hook, make it permanent, and do a `scm_c_define' on it.
8570
8571 * strop.c (s_scm_string_capitalize_x): fix docstring quoting.
8572
8573 * socket.c (s_scm_inet_pton): fix docstring quoting.
8574 (s_scm_inet_ntop): ditto.
8575
8576 * num2integral.i.c (INTEGRAL2NUM): cast to fix a warning.
8577
8578 * hashtab.c (scm_internal_hash_fold): fix argument position in
8579 SCM_ASSERT.
8580
8581 * environments.c (s_scm_import_environment_set_imports_x): fix
8582 argument position in SCM_ASSERT.
8583
8584 * debug.c (s_scm_make_gloc): fix SCM packing/unpacking.
8585 (s_scm_make_iloc): ditto.
8586
8587 2001-05-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
8588
8589 * __scm.h (SCM_DEBUG_TYPING_STRICTNESS): Make 1 the default.
8590
8591 * eval.c (promise_print): Read the promise's value as an object.
8592
8593 (SCM_CEVAL): Don't perform side-effecting operations in macro
8594 parameters.
8595
8596 * eval.h (SCM_EVALIM2): Fix the typing strictness of the
8597 conditional expression.
8598
8599 * gc.c (scm_master_freelist, scm_master_freelist2): Added missing
8600 initializer.
8601
8602 * gh_data.c (gh_set_substr): Removed redundant unsigned >= 0
8603 text, removed redundant computation of effective_length and fixed
8604 the overflow check.
8605
8606 * goops.c (test_slot_existence): Use SCM_EQ_P to compare SCM
8607 values.
8608
8609 (wrap_init): Don't use SCM_C[AD]R for non pairs.
8610
8611 (hell): Make it a scm_bits_t pointer rather than a SCM pointer.
8612
8613 * goops.c (scm_sys_modify_class), strports.c (st_resize_port),
8614 struct.h (SCM_SET_STRUCT_PRINTER): Store unpacked values.
8615
8616 * goops.h (SCM_ACCESSORS_OF, SCM_SLOT): Return a SCM value.
8617
8618 * goops.h (GOOPSH, SCM_GOOPS_H), modules.h (MODULESH,
8619 SCM_MODULES_H), objects.h (OBJECTSH, SCM_OBJECTS_H), struct.h
8620 (STRUCTH, SCM_STRUCT_H), symbols.h (SYMBOLSH, SCM_SYMBOLS_H),
8621 __scm.h (__SCMH, SCM___SCM_H): Change <foo>H to SCM_<foo>_H.
8622
8623 * modules.[ch] (scm_module_tag): Make it a scm_bits_t value.
8624
8625 * objects.h (SCM_SET_CLASS_INSTANCE_SIZE): Fixed typing.
8626
8627 * ramap.c (ramap_rp): Removed bogus `;´.
8628
8629 * sort.c (scm_restricted_vector_sort_x): Fixed signedness
8630 problem.
8631
8632 * symbols.h (SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS, SCM_SYMBOL_FUNC,
8633 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS):
8634 Read SCM objects rather than scm_bits_t values.
8635
8636 * tags.h (SCM_VOIDP_TEST): Removed.
8637
8638 (SCM_DEBUG_TYPING_STRICTNESS): Now takes values 0, 1, 2. The
8639 value of 2 now corresponds to the former 1, the current 1
8640 corresponds to the former situation that SCM_VOIDP_TEST was
8641 defined.
8642
8643 (SCM): Now defined as typedef struct scm_unused_struct * SCM;
8644 If this appears to be not ANSI compliant, we will change it to
8645 typedef struct scm_unused_struct { } * SCM;
8646 Thanks to Han-Wen Nienhuys for the suggestion.
8647
8648 * unif.c (scm_array_set_x): Fix typing problem, and use
8649 SCM_UVECTOR_BASE instead of SCM_VELTS or SCM_CELL_WORD_1 when
8650 dealing with uniform vectors.
8651
8652 2001-05-27 Michael Livshin <mlivshin@bigfoot.com>
8653
8654 * gc.c (scm_init_storage): init `scm_gc_registered_roots'.
8655 (scm_igc): mark from them, too (precisely, not conservatively!).
8656
8657 * root.h (scm_gc_registered_roots): new object in
8658 scm_sys_protects.
8659
8660 * hooks.c (scm_create_hook): call `scm_gc_protect_object' instead
8661 `scm_protect_object'. shouldn't call it at all, though, it seems.
8662
8663 * gc.c (scm_[un]protect_object): deprecated.
8664 (scm_gc_[un]protect_object): new names for scm_[un]protect_object.
8665 (scm_gc_[un]register_root[s]): new.
8666
8667 * gc.h: add prototypes for scm_gc_[un]protect_object,
8668 scm_gc_[un]register_root[s].
8669
8670 2001-05-26 Michael Livshin <mlivshin@bigfoot.com>
8671
8672 revert the controversial part of the 2001-05-24 changes.
8673
8674 2001-05-25 Marius Vollmer <mvo@zagadka.ping.de>
8675
8676 * modules.c (scm_env_module): Exported to Scheme.
8677
8678 * eval.c (scm_debug_opts): New option `show-file-name'.
8679
8680 * debug.h (SCM_SHOW_FILE_NAME): New.
8681
8682 * backtrace.c: Include "libguile/filesys.h".
8683 (sym_base, display_backtrace_get_file_line,
8684 display_backtrace_file, display_backtrace_file_and_line): New.
8685 (display_frame): Call display_backtrace_file_and_line if that is
8686 requested.
8687 (display_backtrace_body): Call scm_display_backtrace_file if
8688 requested.
8689
8690 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr):
8691 Prototypes removed since there's no definition for these
8692 functions.
8693
8694 2001-05-24 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
8695
8696 * unif.c (scm_make_ra, array_free), unif.h (SCM_ARRAY_DIMS):
8697 Changed use of scm_array->scm_array_t and
8698 scm_array_dim->scm_array_dim_t to enable build with
8699 --disable-deprecated.
8700
8701 2001-05-24 Michael Livshin <mlivshin@bigfoot.com>
8702
8703 The purpose of this set of changes is to regularize Guile's usage
8704 of ANSI C integral types, with the following ideas in mind:
8705
8706 - SCM does not nesessarily have to be long.
8707 - long is not nesessarily enough to store pointers.
8708 - long is not nesessarily the same size as int.
8709
8710 The changes are incomplete and possibly buggy. Please test on
8711 something exotic.
8712
8713 * validate.h
8714 (SCM_NUM2{SIZE,PTRDIFF,SHORT,USHORT,BITS,UBITS,INT,UINT}[_DEF]):
8715 new macros.
8716
8717 * unif.h: type renaming:
8718 scm_array -> scm_array_t
8719 scm_array_dim -> scm_array_dim_t
8720 the old names are deprecated, all in-Guile uses changed.
8721
8722 * tags.h (scm_ubits_t): new typedef, representing unsigned
8723 scm_bits_t.
8724
8725 * stacks.h: type renaming:
8726 scm_info_frame -> scm_info_frame_t
8727 scm_stack -> scm_stack_t
8728 the old names are deprecated, all in-Guile uses changed.
8729
8730 * srcprop.h: type renaming:
8731 scm_srcprops -> scm_srcprops_t
8732 scm_srcprops_chunk -> scm_srcprops_chunk_t
8733 the old names are deprecated, all in-Guile uses changed.
8734
8735 * gsubr.c, procs.c, print.c, ports.c, read.c, rdelim.c, ramap.c,
8736 rw.c, smob.c, sort.c, srcprop.c, stacks.c, strings.c, strop.c,
8737 strorder.c, strports.c, struct.c, symbols.c, unif.c, values.c,
8738 vectors.c, vports.c, weaks.c:
8739 various int/size_t -> size_t/scm_bits_t changes.
8740
8741 * random.h: type renaming:
8742 scm_rstate -> scm_rstate_t
8743 scm_rng -> scm_rng_t
8744 scm_i_rstate -> scm_i_rstate_t
8745 the old names are deprecated, all in-Guile uses changed.
8746
8747 * procs.h: type renaming:
8748 scm_subr_entry -> scm_subr_entry_t
8749 the old name is deprecated, all in-Guile uses changed.
8750
8751 * options.h (scm_option_t.val): unsigned long -> scm_bits_t.
8752 type renaming:
8753 scm_option -> scm_option_t
8754 the old name is deprecated, all in-Guile uses changed.
8755
8756 * objects.c: various long -> scm_bits_t changes.
8757 (scm_i_make_class_object): flags: unsigned long -> scm_ubits_t
8758
8759 * numbers.h (SCM_FIXNUM_BIT): deprecated, renamed to
8760 SCM_I_FIXNUM_BIT.
8761
8762 * num2integral.i.c: new file, multiply included by numbers.c, used
8763 to "templatize" the various integral <-> num conversion routines.
8764
8765 * numbers.c (scm_mkbig, scm_big2num, scm_adjbig, scm_normbig,
8766 scm_copybig, scm_2ulong2big, scm_dbl2big, scm_big2dbl):
8767 deprecated.
8768 (scm_i_mkbig, scm_i_big2inum, scm_i_adjbig, scm_i_normbig,
8769 scm_i_copybig, scm_i_short2big, scm_i_ushort2big, scm_i_int2big,
8770 scm_i_uint2big, scm_i_long2big, scm_i_ulong2big, scm_i_bits2big,
8771 scm_i_ubits2big, scm_i_size2big, scm_i_ptrdiff2big,
8772 scm_i_long_long2big, scm_i_ulong_long2big, scm_i_dbl2big,
8773 scm_i_big2dbl, scm_short2num, scm_ushort2num, scm_int2num,
8774 scm_uint2num, scm_bits2num, scm_ubits2num, scm_size2num,
8775 scm_ptrdiff2num, scm_num2short, scm_num2ushort, scm_num2int,
8776 scm_num2uint, scm_num2bits, scm_num2ubits, scm_num2ptrdiff,
8777 scm_num2size): new functions.
8778
8779 * modules.c (scm_module_reverse_lookup): i, n: int -> scm_bits_t.
8780
8781 * load.c: change int -> size_t in various places (where the
8782 variable is used to store a string length).
8783 (search-path): call scm_done_free, not scm_done_malloc.
8784
8785 * list.c (scm_ilength): return a scm_bits_t, not long.
8786 some other {int,long} -> scm_bits_t changes.
8787
8788 * hashtab.c: various [u]int -> scm_bits_t changes.
8789 scm_ihashx_closure -> scm_ihashx_closure_t (and made a typedef).
8790 (scm_ihashx): n: uint -> scm_bits_t
8791 use scm_bits2num instead of scm_ulong2num.
8792
8793 * gsubr.c: various int -> scm_bits_t changes.
8794
8795 * goops.[hc]: various {int,long} -> scm_bits_t changes.
8796
8797 * gh_data.c (gh_num2int): no loss of precision any more.
8798
8799 * gh.h (gh_str2scm): len: int -> size_t
8800 (gh_{get,set}_substr): start: int -> scm_bits_t,
8801 len: int -> size_t
8802 (gh_<num>2scm): n: int -> scm_bits_t
8803 (gh_*vector_length): return scm_[u]size_t, not unsigned long.
8804 (gh_length): return scm_bits_t, not unsigned long.
8805
8806 * gc.[hc]: various small changes relating to many things stopping
8807 being long and starting being scm_[u]bits_t instead.
8808 scm_mallocated should no longer wrap around.
8809
8810 * fports.h: type renaming:
8811 scm_fport -> scm_fport_t
8812 the old name is deprecated, all in-Guile uses changed.
8813
8814 * fports.c (fport_fill_input): count: int -> scm_bits_t
8815 (fport_flush): init_size, remaining, count: int -> scm_bits_t
8816
8817 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr): removed
8818 those prototypes, as the functions they prototype don't exist.
8819
8820 * fports.c (default_buffer_size): int -> size_t
8821 (scm_fport_buffer_add): read_size, write_size: int -> scm_bits_t
8822 default_size: int -> size_t
8823 (scm_setvbuf): csize: int -> scm_bits_t
8824
8825 * fluids.c (n_fluids): int -> scm_bits_t
8826 (grow_fluids): old_length, i: int -> scm_bits_t
8827 (next_fluid_num, scm_fluid_ref, scm_fluid_set_x): n: int ->
8828 scm_bits_t
8829 (scm_c_with_fluids): flen, vlen: int -> scm_bits_t
8830
8831 * filesys.c (s_scm_open_fdes): changed calls to SCM_NUM2LONG to
8832 the new and shiny SCM_NUM2INT.
8833
8834 * extensions.c: extension -> extension_t (and made a typedef).
8835
8836 * eval.h (SCM_IFRAME): cast to scm_bits_t, not int. just so
8837 there are no nasty surprises if/when the various deeply magic tag
8838 bits move somewhere else.
8839
8840 * eval.c: changed the locals used to store results of SCM_IFRAME,
8841 scm_ilength and such to be of type scm_bits_t (and not int/long).
8842 (iqq): depth, edepth: int -> scm_bits_t
8843 (scm_eval_stack): int -> scm_bits_t
8844 (SCM_CEVAL): various vars are not scm_bits_t instead of int.
8845 (check_map_args, scm_map, scm_for_each): len: long -> scm_bits_t
8846 i: int -> scm_bits_t
8847
8848 * environments.c: changed the many calls to scm_ulong2num to
8849 scm_ubits2num.
8850 (import_environment_fold): proc_as_ul: ulong -> scm_ubits_t
8851
8852 * dynwind.c (scm_dowinds): delta: long -> scm_bits_t
8853
8854 * debug.h: type renaming:
8855 scm_debug_info -> scm_debug_info_t
8856 scm_debug_frame -> scm_debug_frame_t
8857 the old names are deprecated, all in-Guile uses changed.
8858 (scm_debug_eframe_size): int -> scm_bits_t
8859
8860 * debug.c (scm_init_debug): use scm_c_define instead of the
8861 deprecated scm_define.
8862
8863 * continuations.h: type renaming:
8864 scm_contregs -> scm_contregs_t
8865 the old name is deprecated, all in-Guile uses changed.
8866 (scm_contregs_t.num_stack_items): size_t -> scm_bits_t
8867 (scm_contregs_t.num_stack_items): ulong -> scm_ubits_t
8868
8869 * continuations.c (scm_make_continuation): change the type of
8870 stack_size from long to scm_bits_t.
8871
8872 * ports.h: type renaming:
8873 scm_port_rw_active -> scm_port_rw_active_t (and made a typedef)
8874 scm_port -> scm_port_t
8875 scm_ptob_descriptor -> scm_ptob_descriptor_t
8876 the old names are deprecated, all in-Guile uses changed.
8877 (scm_port_t.entry): int -> scm_bits_t.
8878 (scm_port_t.line_number): int -> long.
8879 (scm_port_t.putback_buf_size): int -> size_t.
8880
8881 * __scm.h (long_long, ulong_long): deprecated (they pollute the
8882 global namespace and have little value beside that).
8883 (SCM_BITS_LENGTH): new, is the bit size of scm_bits_t (i.e. of an
8884 SCM handle).
8885 (ifdef spaghetti): include sys/types.h and sys/stdtypes.h, if they
8886 exist (for size_t & ptrdiff_t).
8887 (scm_sizet): deprecated.
8888
8889 * Makefile.am (noinst_HEADERS): add num2integral.i.c
8890
8891 2001-05-23 Marius Vollmer <mvo@zagadka.ping.de>
8892
8893 * snarf.h (SCM_CONST_LONG): Use SCM_VCELL_INIT instead of
8894 SCM_VARIABLE_INIT since that it what it used to be.
8895
8896 * deprecation.c (scm_include_deprecated_features): Make docstring
8897 ANSIsh. Thanks to Matthias Köppe!
8898
8899 2001-05-21 Marius Vollmer <mvo@zagadka.ping.de>
8900
8901 * symbols.c (scm_mem2symbol): Re-introduce indirect cell. It is
8902 needed for weak-key hashtables.
8903
8904 * procs.c (scm_make_subr_with_generic): Add missing last argument
8905 in call to scm_c_define_gsubr_with_generic. Thanks to Ariel Rios.
8906
8907 * eval.c: Use SCM_EQ_P instead of `==' or `!=' in certain
8908 places. (scm_c_improper_memq): Return 1 instead of SCM_BOOL_T.
8909
8910 * eval.h (SCM_EVALIM2): Use SCM_EQ_P instead of `=='.
8911
8912 2001-05-20 Marius Vollmer <mvo@zagadka.ping.de>
8913
8914 * symbols.c (scm_mem2symbol): Call `scm_must_strndup' instead of
8915 `duplicate_string'. Do not use an indirect cell, store symbol
8916 directly in collision list of hash table.
8917 (duplicate_string): Removed.
8918
8919 * init.c (scm_init_guile_1): Call scm_init_extensions.
8920
8921 * Makefile.am: Add "extensions.c" and related files in all the
8922 right places.
8923
8924 * extensions.h, extension.c: New files.
8925
8926 * gc.h, gc.c (scm_must_strdup, scm_must_strndup): New.
8927
8928 * modules.h (scm_system_module_env_p): Move out of deprecated
8929 section.
8930
8931 * rw.h (scm_init_rw): Added prototype.
8932
8933 * gsubr.h, gsubr.c (scm_c_make_gsubr, scm_c_define_gsubr,
8934 scm_c_make_gsubr_with_generic, scm_c_define_gsubr_with_generic):
8935 New functions. They replace scm_make_gsubr and
8936 scm_make_gsubr_with_generic. The `make' variants only create the
8937 gsubr object, while the `define' variants also put it into the
8938 current module. Changed all callers.
8939 (scm_make_gsubr, scm_make_gsubr_with_generic): Deprecated.
8940
8941 * procs.h, procs.c (scm_c_make_subr, scm_c_define_subr,
8942 scm_c_make_subr_with_generic, scm_c_define_subr_with_generic): New
8943 functions. They replace scm_make_subr, scm_make_subr_opt and
8944 scm_make_subr_with_generic. The `make' variants only create the
8945 subr object, while the `define' variants also put it into the
8946 current module. Changed all callers.
8947 (scm_make_subr, scm_make_subr_opt, scm_make_subr_with_generic):
8948 Deprecated.
8949
8950 * eval.c, gc.c, gh_funcs.c, goops.c, macros.c, pairs.c, ramap.c,
8951 rdelim.c, rw.c, scmsigs.c, snarf.h, values.c: Changed according to
8952 the comments above.
8953
8954 2001-05-19 Neil Jerram <neil@ossau.uklinux.net>
8955
8956 * throw.c (scm_lazy_catch): Slight docstring clarification.
8957
8958 2001-05-19 Marius Vollmer <mvo@zagadka.ping.de>
8959
8960 * throw.c: Lazy-catch handlers are no longer allowed to return.
8961 Fixed comments throughout.
8962 (scm_ithrow): Signal an error when a lazy-catch handler returns.
8963 Moved actual jump to jmpbuf into if-branch where the jmpbuf is
8964 recognized as such.
8965
8966 * version.c (s_scm_micro_version): Fix typo in FUNC_NAME, it
8967 refered to s_scm_minor_version previously.
8968
8969 * modules.h, modules.c: Moved around a lot of code so that
8970 deprecated features appear at the bottom.
8971 (root_module_lookup_closure, scm_sym_app, scm_sym_modules,
8972 module_prefix, make_modules_in_var, beautify_user_module_x_var,
8973 scm_the_root_module, scm_make_module, scm_ensure_user_module,
8974 scm_load_scheme_module): Deprecated.
8975 (scm_system_module_env_p): Return SCM_BOOL_T directly for
8976 environments corresponding to the root module.
8977 (convert_module_name, scm_c_resolve_module,
8978 scm_c_call_with_current_module, scm_c_define_module,
8979 scm_c_use_module, scm_c_export): New.
8980 (the_root_module): New static variant of scm_the_root_module. Use
8981 it everywhere instead of scm_the_root_module.
8982
8983 * fluids.h, fluids.c (scm_internal_with_fluids): Deprecated.
8984 (scm_c_with_fluids): Renamed from scm_internal_with_fluids.
8985 (scm_c_with_fluid): New.
8986 (scm_with_fluids): Use scm_c_with_fluids instead of
8987 scm_internal_with_fluids.
8988
8989 * goops.h, goops.c (scm_init_goops_builtins): Renamed from
8990 `scm_init_goops'. Do not explicitly create/switch modules.
8991 Return SCM_UNSPECIFIED.
8992 (scm_init_goops): Only register `%init-goops-builtins' procedure.
8993 (scm_load_goops): Use scm_c_resolve_module instead of
8994 scm_resolve_module.
8995
8996 * init.c (scm_init_guile_1): Call `scm_init_goops' instead of
8997 `scm_init_oop_goops_goopscore_module'. Call `scm_init_rdelim' and
8998 `scm_init_rw' prior to loading the startup files.
8999
9000 * rdelim.h, rdelim.c: (scm_init_rdelim_builtins): Renamed from
9001 scm_init_rdelim. Do not explicitly create/switch modules.
9002 Return SCM_UNSPECIFIED.
9003 (scm_init_rdelim): Only register `%init-rdelim-builtins'
9004 procedure.
9005
9006 * rw.c (scm_init_rw_builtins): Renamed from scm_init_rw. Do not
9007 explicitly create/switch modules. Return SCM_UNSPECIFIED.
9008 (scm_init_rw): Only register `%init-rw-builtins' procedure.
9009
9010 * script.c (scm_shell): Evaluate the compiled switches in the
9011 current module, not in the root module.
9012
9013 2001-05-18 Marius Vollmer <mvo@zagadka.ping.de>
9014
9015 * fluids.c (scm_c_with_fluids): Rename from
9016 scm_internal_with_fluids.
9017 (scm_internal_with_fluids): Deprecated.
9018 (scm_c_with_fluid): New.
9019
9020 2001-05-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
9021
9022 * print.h (PRINTH, SCM_PRINT_H): Renamed PRINTH to SCM_PRINT_H.
9023
9024 (SCM_PORT_WITH_PS_PORT, SCM_PORT_WITH_PS_PS): Only pairs may be
9025 accessed with SCM_C[AD]R.
9026
9027 (SCM_COERCE_OUTPORT): Removed redundant SCM_NIMP test.
9028
9029 2001-05-16 Rob Browning <rlb@cs.utexas.edu>
9030
9031 * version.c (s_scm_major_version): doc fixes.
9032 (s_scm_minor_version): doc fixes.
9033 (s_scm_minor_version): new function.
9034
9035 * version.h (scm_init_version): new function.
9036
9037 * versiondat.h.in: add GUILE_MICRO_VERSION.
9038
9039 2001-05-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
9040
9041 * deprecation.c (scm_init_deprecation): Renamed
9042 GUILE_WARN_DEPRECATED_DEFAULT to SCM_WARN_DEPRECATED_DEFAULT.
9043
9044 2001-05-16 Marius Vollmer <mvo@zagadka.ping.de>
9045
9046 * Makefile.am (cpp_sig_symbols.c, cpp_err_symbols.c): Make
9047 dependent on cpp_cnvt.awk
9048
9049 2001-05-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
9050
9051 * script.c (scm_compile_shell_switches): New command line option
9052 `--use-srfi' for loading a list of SRFIs on startup.
9053 (scm_shell_usage): Added `--use-srfi' to help message.
9054
9055 2001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
9056
9057 Merged from mvo-vcell-cleanup-1-branch.
9058
9059 The concept of vcells has been removed from Guile. With it,
9060 explicit obarrays and associated operations are gone. Use
9061 hashtables instead of obarrays.
9062
9063 Throughout: use scm_sym2var instead of scm_sym2vcell and treat
9064 result as variable instead of vcell. Glocs no longer point to a
9065 vcell but to a variable. Use scm_c_define instead of
9066 scm_sysintern and treat the result as a variable (which it is),
9067 not a vcell.
9068
9069 * variable.c, variable.h (SCM_VARVCELL, SCM_UDVARIABLEP,
9070 SCM_DEFVARIABLEP): Deprecated.
9071 (SCM_VARIABLE_REF, SCM_VARIABLE_SET, SCM_VARIABLE_LOC): New.
9072 (variable_print): Do not print name of variable.
9073 (variable_equalp): Compare values, not vcells.
9074 (anonymous_variable_sym): Removed.
9075 (make_vcell_variable): Removed.
9076 (make_variable): New, as replacement.
9077 (scm_make_variable, scm_make_undefined_variable): Do not take name
9078 hint parameter.
9079 (scm_variable_ref): Check for SCM_UNDEFINED and throw "unbound"
9080 error in that case.
9081 (scm_builtin_variable): Deprecated.
9082
9083 * symbols.c, symbols.h (scm_sym2vcell, scm_sym2ovcell_soft,
9084 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
9085 scm_intern, scm_intern0, scm_sysintern0_no_module_lookup,
9086 scm_sysintern, scm_sysintern0, scm_symbol_value0,
9087 scm_string_to_obarray_symbol, scm_intern_symbol,
9088 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned,
9089 scm_symbol_bound_p, scm_symbol_set_x, scm_gentmp, gentmp_counter):
9090 Deprecated and moved to "symbols-deprecated.c".
9091 (copy_and_prune_obarray, scm_builtin_bindings): Removed.
9092 (scm_init_symbols): Call scm_init_symbols_deprecated.
9093 * symbols-deprecated.c: New file.
9094 * Makefile.am: Added symbols-deprecated.c and related files in all
9095 the right places.
9096
9097 * snarf.h (SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
9098 SCM_GLOBAL_VCELL_INIT): Deprecated.
9099 (SCM_VARIABLE, SCM_GLOBAL_VARIABLE, SCM_VARIABLE_INIT,
9100 SCM_GLOBAL_VARIABLE_INIT): New, as replacement. Changed all uses.
9101
9102 * print.c (scm_iprin1): Use scm_module_reverse_lookup instead of
9103 SCM_GLOC_SYM.
9104
9105 * evalext.c, filesys.c, fports.c, gdbint.c, gh_data.c, gsubr.c,
9106 hooks.c, load.c, numbers.c, objects.c, ports.c, posix.c, procs.c,
9107 ramap.c, random.c, read.c, regex-posix.c, scmsigs.c, script.c,
9108 socket.c, srcprop.c, stacks.c, stime.c, struct.c, tag.c, throw.c:
9109 Changed according to the `throughout' comments.
9110
9111 * modules.h, modules.c (scm_module_system_booted_p): Changed type
9112 to `int'.
9113 (scm_module_type): Removed.
9114 (the_root_module): Renamed to the_root_module_var. Now points to
9115 a variable instead of a vcell. Updated all uses.
9116 (scm_the_root_module): Return SCM_BOOL_F when module systems
9117 hasn't been booted yet.
9118 (SCM_VALIDATE_STRUCT_TYPE): Removed.
9119 (scm_post_boot_init_modules): Made static.
9120 (scm_set_current_module): Call scm_post_boot_init_modules on first
9121 call.
9122 (make_modules_in, beautify_user_module_x, resolve_module,
9123 try_module_autoload, module_make_local_var_x): Tacked on "_var"
9124 suffix. Now point to variables instead of vcells. Updated all
9125 uses.
9126 (scm_module_lookup_closure): Deal with the module being SCM_BOOL_F
9127 and return SCM_BOOL_F in that case.
9128 (scm_module_transformer): Likewise.
9129 (sym_module, scm_lookup_closure_module, scm_env_module): New.
9130 (SCM_F_EVAL_CLOSURE_INTERFACE, SCM_EVAL_CLOSURE_INTERFACE_P): New.
9131 (scm_eval_closure_lookup): Do not allow new definitions when
9132 `interface' flag is set.
9133 (scm_standard_interface_eval_closure): New.
9134 (scm_pre_modules_obarray, scm_sym2var, scm_module_lookup,
9135 scm_lookup, scm_module_define, scm_define, scm_c_module_lookup,
9136 scm_c_lookup, scm_c_module_define, scm_c_define,
9137 scm_module_reverse_lookup, scm_get_pre_modules_obarray,
9138 scm_modules_prehistory): New.
9139 (scm_post_boot_init_modules): Use scm_c_define and scm_c_lookup
9140 instead of scm_intern0.
9141
9142 * macros.c (scm_make_synt): Return SCM_UNSPECIFIED instead of the
9143 symbol.
9144
9145 * keywords.c (s_scm_make_keyword_from_dash_symbol): Use a regular
9146 hashtable operations to maintain the keywords, not obarray ones.
9147
9148 * init.c (scm_load_startup_files): Do not call
9149 scm_post_boot_init_modules. This is done by
9150 scm_set_current_module now.
9151 (scm_init_guile_1): Call scm_modules_prehistory. Call
9152 scm_init_variable early on.
9153
9154 * goops.c (s_scm_sys_goops_loaded): Get
9155 var_compute_applicable_methods from scm_sym2var, not from a direct
9156 invocation of scm_goops_lookup_closure.
9157
9158 * gh_funcs.c (gh_define): Return SCM_UNSPECIFIED instead of vcell.
9159
9160 * gc.c: Added simple debugging hack to mark phase of GC: When
9161 activated, do not tail-call scm_gc_mark. This gives nice
9162 backtraces.
9163 (scm_unhash_name): Removed.
9164
9165 * feature.c (features): Renamed to features_var. Now points to a
9166 variable instead of a vcell. Updated all uses.
9167
9168 * eval.h (SCM_TOP_LEVEL_LOOKUP_CLOSURE): Use
9169 `scm_current_module_lookup_closure' which will do the right thing
9170 when the module system hasn't been booted yet.
9171 (SCM_GLOC_SYM): Removed.
9172 (SCM_GLOC_VAR, SCM_GLOC_SET_VAL): New.
9173 (SCM_GLOC_VAL, SCM_GLOC_LOC): Reimplemented in terms of variables.
9174
9175 * eval.c (scm_lookupcar, scm_lookupcar1): Deal with variables
9176 instead of with vcells. Do not overwrite `var' with the result of
9177 the lookup, use the new `real_var' instead. Remove `var2' in
9178 exchange (which was only used with threads).
9179 (sym_three_question_marks): New.
9180 (scm_unmemocar): Use `scm_module_reverse_lookup' instead of
9181 `SCM_GLOC_SYM'.
9182 (scm_lisp_nil, scm_lisp_t): Directly define as symbols.
9183 (scm_m_atfop): Expect the function definition to be a variable
9184 instead of a vcell.
9185 (scm_macroexp): Do not use `unmemocar', explicitely remember the
9186 symbol instead.
9187 (scm_unmemocopy): Removed thoughts about anti-macro interface.
9188 (scm_eval_args): Use more explicit code in the gloc branch of the
9189 atrocious struct ambiguity test. The optimizer will sort this
9190 out.
9191 (scm_deval_args): Likewise.
9192 (SCM_CEVAL): Likewise. Also, do not use unmemocar, explicitely
9193 remember the symbol instead. Added some comments where
9194 scm_tc3_cons_gloc really exclusively refers to structs.
9195 (scm_init_eval): Use scm_define to initialize "nil" and "t" to
9196 scm_lisp_nil and scm_lisp_t, respectively. Use scm_define instead
9197 of scm_sysintern in general.
9198
9199 * dynwind.c (scm_swap_bindings): Use SCM_GLOC_SET_VAL instead of
9200 explicit magic.
9201
9202 * debug.c (s_scm_make_gloc): Only allow proper variables, no
9203 pairs. Put the variable directly in the gloc.
9204 (s_scm_gloc_p): Use `scm_tc3_cons_gloc' instead of the magic `1'.
9205 (scm_init_debug): Use scm_c_define instead scm_sysintern.
9206
9207 * cpp_cnvt.awk: Emit "scm_c_define" instead of "scm_sysintern".
9208
9209 * backtrace.h, backtrace.c (scm_the_last_stack_fluid): Renamed to
9210 scm_the_last_stack_fluid_var. It now points to a variable instead
9211 of a vcell. Updated all uses.
9212 (scm_has_shown_backtrace_hint_p_var): Now points to a variable
9213 instead of a vcell. Updated all uses.
9214
9215 * _scm.h: Include "variables.h" and "modules.h" since almost
9216 everybody needs them now.
9217
9218 * root.h (scm_symhash, scm_symhash_vars): Removed.
9219 * gc.c (scm_init_storage): Do not initialize them.
9220
9221 2001-05-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
9222
9223 * eval.c (scm_init_eval): Initialize scm_undefineds and
9224 scm_listofnull.
9225
9226 * gc.c (scm_debug_newcell, scm_debug_newcell2): Fixed to behave
9227 like the SCM_NEWCELL macro counterparts.
9228
9229 (scm_init_storage, scm_init_gc): Moved initialization of
9230 scm_tc16_allocated from scm_init_gc to scm_init_storage.
9231
9232 (scm_init_storage): Moved initialization of scm_undefineds and
9233 scm_listofnull to eval.c, initializion of scm_nullstr to
9234 strings.c, initializion of scm_nullvect to vectors.c.
9235
9236 * gc.h (SCM_NEWCELL, SCM_NEWCELL2): Prefer SCM_NULLP over
9237 SCM_IMP, as in scm_debug_newcell and scm_debug_newcell2.
9238
9239 * init.c (scm_init_guile_1): Reordered some initializations and
9240 added dependcy information comments.
9241
9242 * load.c (scm_init_load): Use scm_nullstr.
9243
9244 * strings.c (scm_init_strings): Initialize scm_nullstr.
9245
9246 * vectors.c (scm_init_vectors): Initialize scm_nullvect.
9247
9248 2001-05-15 Marius Vollmer <mvo@zagadka.ping.de>
9249
9250 * values.c (print_values): Print as a unreadable object, not as
9251 multiple lines. Thanks to Matthias Köppe!
9252
9253 2001-05-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
9254
9255 * deprecation.c: Fixed copyright date.
9256
9257 * deprecation.h (DEPRECATION_H, SCM_DEPRECATION_H): Renamed
9258 DEPRECATION_H to SCM_DEPRECATION_H.
9259
9260 2001-05-10 Thien-Thi Nguyen <ttn@revel.glug.org>
9261
9262 * guile-doc-snarf.in: Update copyright.
9263 Fix relative path bug. Thanks to Sergey Poznyakoff.
9264
9265 2001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
9266
9267 * ports.c (scm_port_revealed, scm_set_port_revealed_x): Only
9268 accept open ports. Thanks to Quetzalcoatl Bradley!
9269
9270 2001-05-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
9271
9272 * procs.c: Increased `scm_subr_table_room' to 800 because Guile now
9273 has 779 primitives on startup.
9274
9275 2001-05-09 Marius Vollmer <mvo@zagadka.ping.de>
9276
9277 * eval.c (scm_i_eval): Copy expression before passing it to
9278 SCM_XEVAL. The copy operation was removed unintendedly during my
9279 change on 2001-03-25.
9280
9281 2001-05-09 Michael Livshin <mlivshin@bigfoot.com>
9282
9283 from Matthias Köppe (thanks!):
9284
9285 * ports.c (scm_c_read): pointer arithmetic on void pointers isn't
9286 portable.
9287
9288 * deprecation.c (s_scm_include_deprecated_features): ANSI'fied the
9289 docstring.
9290
9291 2001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
9292
9293 * gc.c (scm_init_gc): Added FIXME comment.
9294
9295 * hooks.c: Since hooks don't have a name any more, it is not
9296 necessary to include objprop.h.
9297
9298 (hook_print, scm_add_hook_x): Replace SCM_NFALSEP by !SCM_FALSEP.
9299
9300 (symbol_name, scm_make_hook_with_name): Removed.
9301
9302 (scm_create_hook): Don't set the hook's name property.
9303
9304 * hooks.h (HOOKSH, SCM_HOOKS_H): Renamed HOOKSH to SCM_HOOKS_H.
9305
9306 (SCM_HOOK_NAME, scm_make_hook_with_name): Removed.
9307
9308 * init.c (scm_init_guile_1): Hooks don't use objprops any more.
9309
9310 * numbers.c (SCM_FLOBUFLEN, FLOBUFLEN, scm_number_to_string,
9311 scm_print_real, scm_print_complex): Renamed SCM_FLOBUFLEN to
9312 FLOBUFLEN and define it unconditionally.
9313
9314 2001-05-07 Marius Vollmer <mvo@zagadka.ping.de>
9315
9316 * gh_data.c (gh_lookup): Call gh_module_lookup with
9317 `scm_current_module ()', not `#f'.
9318 (gh_module_lookup): Expect a module instead of an obarray as first
9319 argument and do lookup in that module.
9320
9321 * ramap.c (raeql_1): Do not call scm_uniform_vector_length on
9322 arrays. The length of array is already determined differently and
9323 scm_uniform_vector_length does not work on arrays.
9324
9325 2001-05-06 Marius Vollmer <mvo@zagadka.ping.de>
9326
9327 * snarf.h (SCM_FUNC_CAST_ARBITRARY_ARGS): Use "SCM (*)()" for C++
9328 as well. "SCM (*)(...)" does not work on RedHat 7.1.
9329
9330 * __scm.h (SCM_WTA_DISPATCH_0): Removed ARG and POS parameters,
9331 they are not used. Changed `wrong type' error into `wrong num
9332 args' error. Changed all callers.
9333
9334 * numbers.c (scm_difference): Call SCM_WTA_DISPATCH_0 when zero
9335 arguments are supplied.
9336
9337 2001-05-05 Thien-Thi Nguyen <ttn@revel.glug.org>
9338
9339 * regex-posix.c (scm_regexp_exec): Expand docstring to briefly
9340 describe `regexp/notbol' and `regexp/noteol' execution flags.
9341
9342 * strop.c (scm_substring_move_x): Doc fix; nfc.
9343
9344 2001-05-05 Marius Vollmer <mvo@zagadka.ping.de>
9345
9346 * objects.c, objects.h (scm_valid_object_procedure_p): New.
9347 (scm_set_object_procedure_x): Use it to check argument. Fix
9348 docstring.
9349
9350 * evalext.c (scm_definedp): Fix docstring.
9351
9352 2001-05-05 Gary Houston <ghouston@arglist.com>
9353
9354 * socket.c: use HAVE_IPV6 instead of AF_INET6 to enable IPv6
9355 support.
9356
9357 2001-05-04 Neil Jerram <neil@ossau.uklinux.net>
9358
9359 * eval.c (scm_promise_p), list.c (scm_append_x, scm_reverse_x),
9360 symbols.c (scm_symbol_to_string), vports.c (scm_make_soft_port):
9361 Change R4RS references to R5RS.
9362
9363 * guile-snarf.awk.in: Fixes so that (i) blank lines in the
9364 docstring source are correctly reproduced in the output (ii)
9365 we don't anymore get occasional trailing quotes. Also reorganized
9366 and commented the code a little.
9367
9368 * scmsigs.c (scm_raise), throw.c (scm_throw): Docstring format
9369 fixes.
9370
9371 2001-05-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
9372
9373 * strop.c (scm_string_split): New procedure.
9374
9375 * strop.h (scm_string_split): Added prototype.
9376
9377 2001-05-04 Gary Houston <ghouston@arglist.com>
9378
9379 * socket.c: define uint32_t if netdb.h doesn't. thanks to
9380 Dale P. Smith.
9381
9382 2001-05-02 Marius Vollmer <mvo@zagadka.ping.de>
9383
9384 * rw.c: Include "modules.h" and "strports.h".
9385
9386 * net_db.h (scm_gethost): Added prototype.
9387
9388 * deprecation.h, deprecation.c: New.
9389 * Makefile.am (libguile_la_SOURCES): Added "deprecation.c".
9390 (DOT_X_FILES): Added "deprecation.x".
9391 (modinclude_HEADERS): Added "deprecation.h".
9392
9393 * init.c: Include "deprecation.h".
9394 (scm_init_guile_1): Call scm_init_deprecation.
9395
9396 2001-05-01 Marius Vollmer <mvo@zagadka.ping.de>
9397
9398 * gh.h (gh_init_guile, gh_make_string, gh_string_length,
9399 gh_string_ref, gh_string_set_x, gh_substring, gh_string_append):
9400 New.
9401
9402 2001-04-29 Gary Houston <ghouston@arglist.com>
9403
9404 * rw.c: new file, implementing C part of module (ice-9 rw).
9405 (scm_read_string_x_partial): moved from ioext.c
9406 (scm_init_rw): new proc.
9407 * rw.h: new file.
9408 init.c: include rw.h and call scm_init_rw.
9409 Makefile.am: include rw.c and rw.h.
9410
9411 2001-04-28 Rob Browning <rlb@cs.utexas.edu>
9412
9413 * numbers.c: enabled local definition of SCM_FLOBUFLEN until we
9414 know what's supposed to happen to it.
9415
9416 * list.h (scm_list_star): deprecation expired - removed.
9417
9418 * numbers.h (scm_dblproc): deprecation expired - removed.
9419 (SCM_UNEGFIXABLE): deprecation expired - removed.
9420 (SCM_FLOBUFLEN): deprecation expired - removed.
9421 (SCM_INEXP): deprecation expired - removed.
9422 (SCM_CPLXP): deprecation expired - removed.
9423 (SCM_REAL): deprecation expired - removed.
9424 (SCM_IMAG): deprecation expired - removed.
9425 (SCM_REALPART): deprecation expired - removed.
9426 (scm_makdbl): deprecation expired - removed.
9427 (SCM_SINGP): deprecation expired - removed.
9428 (SCM_NUM2DBL): deprecation expired - removed.
9429 (SCM_NO_BIGDIG): deprecation expired - removed.
9430
9431 * tags.h (SCM_DOUBLE_CELLP): deprecation expired - removed.
9432 (scm_tc_dblr): deprecation expired - removed.
9433 (scm_tc_dblc): deprecation expired - removed.
9434 (scm_tc16_flo): deprecation expired - removed.
9435 (scm_tc_flo): deprecation expired - removed.
9436
9437 * tag.h (scm_tag): deprecation expired - removed.
9438
9439 * tag.c: (scm_tag): deprecation expired - removed.
9440
9441 * ioext.c: (scm_fseek): deprecation expired - removed.
9442
9443 * ioext.h (scm_fseek): deprecation expired - removed.
9444
9445 * gh_data.c (gh_int2scmb): deprecation expired - removed.
9446
9447 * gh.h (gh_int2scmb): deprecation expired - removed.
9448
9449 2001-04-28 Neil Jerram <neil@ossau.uklinux.net>
9450
9451 * stacks.c (scm_make_stack): Fix typo in docstring.
9452
9453 2001-04-27 Rob Browning <rlb@cs.utexas.edu>
9454
9455 * error.c (scm_sysmissing): deprecation expired - removed.
9456
9457 * error.h (scm_sysmissing): deprecation expired - removed.
9458
9459 * gc.c
9460 (scm_init_gc): gc-thunk deprecation expired - removed.
9461 (scm_gc_vcell): deprecation expired - removed.
9462 (gc_async_thunk): scm_gc_vcell related code removed.
9463
9464 * vectors.h (SCM_NVECTORP): deprecation expired - removed.
9465
9466 * strings.h
9467 (SCM_NSTRINGP): deprecation expired - removed.
9468 (SCM_NRWSTRINGP): deprecation expired - removed.
9469
9470 * continuations.h (SCM_SETJMPBUF): deprecation expired - removed.
9471
9472 * chars.h
9473 (SCM_ICHRP): deprecation expired - removed.
9474 (SCM_ICHR): deprecation expired - removed.
9475 (SCM_MAKICHR): deprecation expired - removed.
9476
9477 * ports.h
9478 (SCM_INPORTP): deprecation expired - removed.
9479 (SCM_OUTPORTP): deprecation expired - removed.
9480
9481 2001-04-25 Marius Vollmer <mvo@zagadka.ping.de>
9482
9483 * modules.c (scm_module_type): New.
9484 (scm_post_boot_init_modules): Initialize from Scheme value.
9485 (the_module, scm_current_module, scm_init_modules): the_module is
9486 now a C only fluid.
9487 (scm_current_module): Export to Scheme.
9488 (scm_set_current_module): Do not call out to Scheme, do all the
9489 work in C. Export procedure to Scheme. Only accept modules, `#f'
9490 is no longer valid as the current module. Only set
9491 scm_top_level_lookup_closure_var and scm_system_transformer when
9492 they are not deprecated.
9493 (scm_module_transformer, scm_current_module_transformer): New.
9494
9495 * modules.h (scm_module_index_transformer, SCM_MODULE_TRANSFORMER,
9496 scm_current_module_transformer, scm_module_transformer): New.
9497
9498 * gh_data.c: Removed FIXME comment about gh_lookup returning
9499 SCM_UNDEFINED. That's the right thing to do.
9500
9501 * eval.h, eval.c (scm_system_transformer): Deprecated by moving it
9502 into the conditionally compiled sections.
9503 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Use
9504 scm_current_module_transformer instead of scm_system_transformer.
9505 * init.c (start_stack): Move initialization of
9506 scm_system_transformer to the deprecated section.
9507
9508 2001-04-22 Neil Jerram <neil@ossau.uklinux.net>
9509
9510 * throw.c (scm_throw): Correct docstring.
9511
9512 2001-04-22 Gary Houston <ghouston@arglist.com>
9513
9514 * socket.c: attempted to improve the docstrings slightly.
9515
9516 * net_db.c: remove bogus "close" declaration.
9517 (inet_aton declaration, scm_inet_aton, scm_inet_ntoa,
9518 scm_inet_netof, scm_lnaof, scm_inet_makeaddr, INADDR_ANY etc.):
9519 moved to socket.c.
9520 * net_db.h: declarations moved too.
9521
9522 * socket.c (scm_htonl, scm_ntohl): use uint32_t instead of unsigned
9523 long.
9524 (ipv6_net_to_num, ipv6_num_to_net): new static procedures.
9525 (VALIDATE_INET6): new macro.
9526 (scm_inet_pton, scm_inet_ntop): new procedures, implementing
9527 inet-pton and inet-ntop.
9528 (scm_fill_sockaddr): use VALIDATE_INET6 and ipv6_num_to_net.
9529 (scm_addr_vector): use ipv6_net_to_num.
9530
9531 2001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
9532
9533 * eq.c (scm_equal_p), ramap.c (scm_init_ramap): Don't compute the
9534 smob number explicitly. Use SCM_TC2SMOBNUM instead.
9535
9536 * gc.c (MARK, scm_gc_sweep): Only check for illegal heap objects
9537 when compiled in debug mode.
9538
9539 (scm_gc_sweep): Only call smob's free function if it is defined.
9540
9541 * print.c (scm_iprin1): No need to check for validity of smob
9542 type or existence of print function.
9543
9544 * smob.[ch] (scm_smobs): Made into a fixed size global array.
9545 Resizing will not work well with preemptive threading.
9546
9547 * smob.c (scm_smob_print): Don't use SCM_CDR to access smob data.
9548
9549 (scm_make_smob_type): Extracted initialization of smob
9550 descriptors to scm_smob_prehistory. Don't use scm_numsmob outside
9551 of the critical section.
9552
9553 (scm_smob_prehistory): Initialize all smob descriptors. By
9554 default, don't assign a smob free function: Most smob types don't
9555 need one.
9556
9557 * smob.h (SMOBH, SCM_SMOB_H): Renamed SMOBH to SCM_SMOB_H.
9558
9559 2001-04-21 Gary Houston <ghouston@arglist.com>
9560
9561 * socket.c (FLIP_NET_HOST_128): new macro.
9562 (scm_fill_sockaddr): use new macro.
9563 (scm_addr_vector): completed IPv6 address support. added const
9564 to the address parameter.
9565
9566 2001-04-20 Gary Houston <ghouston@arglist.com>
9567
9568 * socket.c (scm_fill_sockaddr): call htons for sin6_port.
9569 Don't assign sin6_scope_id in structure unless HAVE_SIN6_SCOPE_ID
9570 is defined.
9571 (scm_addr_vector): use a switch instead of multiple if statements.
9572 Add support for IPv6 (incomplete) .
9573 MAX_ADDR_SIZE: increase to size of struct sockaddr_in6 if needed.
9574
9575 2001-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
9576
9577 * struct.c (scm_free_structs): Only pairs may be accessed with
9578 SCM_C[AD]R.
9579
9580 2001-04-19 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
9581
9582 * unif.h (SCM_ARRAY_CONTIGUOUS): Reintroduced as deprecated.
9583
9584 * __scm.h (SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
9585 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Inserted required
9586 parentheses in order to get the correct associativity.
9587
9588 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
9589
9590 * unif.c (scm_array_to_list): Added missing handling of arrays of
9591 bytes. Thanks to Masao Uebayashi for the bug report.
9592
9593 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
9594
9595 * debug.c (scm_procedure_source): Use SCM_CLOSURE_FORMALS more
9596 consistently.
9597
9598 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
9599
9600 * procs.h (SCM_CLOSURE_FORMALS): New macro.
9601
9602 * debug.c (scm_procedure_source), eval.c (scm_badformalsp,
9603 SCM_CEVAL, SCM_APPLY), goops.c (get_slot_value, set_slot_value),
9604 procprop.c (scm_i_procedure_arity), sort.c (closureless): Use
9605 SCM_CLOSURE_FORMALS.
9606
9607 * eval.c (scm_badformalsp, SCM_CEVAL), procprop.c
9608 (scm_i_procedure_arity): Prefer stronger predicates like
9609 SCM_NULLP or SCM_FALSEP over SCM_IMP.
9610
9611 * macros.c (macro_print): Extracted macro printing code from
9612 print.c and simplified it.
9613
9614 (scm_macro_type): Use SCM_MACRO_TYPE;
9615
9616 (scm_init_macros): Use macro_print for printing macros.
9617
9618 * print.c (scm_print_opts): Improved option documentation.
9619
9620 (scm_iprin1): Extracted printing of macros to macros.c.
9621 Simplified printing of ordinary closures.
9622
9623 * procs.c (scm_thunk_p): Fixed handling of closures. Thanks to
9624 Martin Grabmueller for the bug report.
9625
9626 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
9627
9628 This patch eliminates some further applications of SCM_C[AD]R to
9629 non pair cells.
9630
9631 * gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR): Deprecated. These have
9632 never been applied to real pairs.
9633
9634 * srcprop.h (SCM_SOURCE_PROPERTY_FLAG_BREAK): Added.
9635
9636 (SRCPROPBRK): Use SCM_SOURCE_PROPERTY_FLAG_BREAK.
9637
9638 * unif.h (SCM_ARRAY_CONTIGUOUS, SCM_ARRAY_FLAG_CONTIGUOUS,
9639 SCM_ARRAY_CONTP): Renamed SCM_ARRAY_CONTIGUOUS to
9640 SCM_ARRAY_FLAG_CONTIGUOUS and use it.
9641
9642 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
9643 Added.
9644
9645 * srcprop.h (SRCPROPH), unif.h (UNIFH): Renamed to
9646 SCM_SOURCE_PROPERTIES_H and SCM_UNIFORM_VECTORS_H, respectively.
9647
9648 * srcprop.h (SETSRCPROPBRK, CLEARSRCPROPBRK), unif.c
9649 (scm_dimensions_to_uniform_array, scm_ra_set_contp): Don't use
9650 SCM_SET{AND,OR}_CAR.
9651
9652 2001-04-17 Gary Houston <ghouston@arglist.com>
9653
9654 * some initial support for IPv6:
9655
9656 * socket.c (scm_fill_sockaddr): improve the argument validation.
9657 don't allocate memory until all args are checked. instead of
9658 unconditional memset of soka, try setting sin_len to 0 if
9659 SIN_LEN is defined. add support for AF_INET6. define FUNC_NAME.
9660 (scm_socket, scm_connect): extend docstrings for IPv6.
9661 (scm_init_socket): intern AF_INET6 and PF_INET6.
9662
9663 2001-04-17 Niibe Yutaka <gniibe@m17n.org>
9664
9665 * srcprop.c (scm_make_srcprops): Added SCM_ALLOW_INTS which
9666 matches SCM_DEFER_INTS at the beginning of the function.
9667
9668 * mallocs.c (scm_malloc_obj): Remove un-matched SCM_ALLOW_INTS.
9669
9670 * gc.c (scm_igc): Unconditionally call
9671 SCM_CRITICAL_SECTION_START/END.
9672
9673 * fluids.c (next_fluid_num): Unconditionally call
9674 SCM_CRITICAL_SECTION_START/END.
9675 (s_scm_make_fluid): Remove un-matched SCM_DEFER_INTS.
9676
9677 * coop-defs.h (SCM_THREAD_DEFER, SCM_THREAD_ALLOW,
9678 SCM_THREAD_REDEFER, SCM_THREAD_REALLOW_1, SCM_THREAD_REALLOW_2):
9679 Removed.
9680
9681 * __scm.h (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END):
9682 Defined as nothing for the case of !defined(USE_THREADS).
9683 (SCM_THREAD_DEFER, SCM_THREAD_ALLOW, SCM_THREAD_REDEFER):
9684 Removed.
9685 (<stdio.h>): Include when (SCM_DEBUG_INTERRUPTS == 1).
9686 (SCM_CHECK_NOT_DISABLED, SCM_CHECK_NOT_ENABLED): Print FILE and
9687 LINE.
9688 (SCM_DEFER_INTS, SCM_ALLOW_INTS_ONLY, SCM_ALLOW_INTS,
9689 SCM_REDEFER_INTS, SCM_REALLOW_INTS): Don't use
9690 SCM_THREAD_DEFER/SCM_THREAD_ALLOW. Instead, use
9691 SCM_CRITICAL_SECTION_START/END.
9692 (SCM_REALLOW_INTS: Bug fix. Don't call
9693 SCM_THREAD_SWITCHING_CODE.
9694 (SCM_TICK): Don't use SCM_DEFER_INTS/SCM_ALLOW_INTS. Instead, use
9695 SCM_THREAD_SWITCHING_CODE directly.
9696 (SCM_ENTER_A_SECTION): Unconditionally use
9697 SCM_CRITICAL_SECTION_START/END. (was:
9698 SCM_DEFER_INTS/SCM_ALLOW_INTS when SCM_POSIX_THREADS defined).
9699
9700 2001-04-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
9701
9702 * __scm.h (SCM_CAREFUL_INTS, SCM_DEBUG_INTERRUPTS): Replaced the
9703 macro SCM_CAREFUL_INTS by the macro SCM_DEBUG_INTERRUPTS and
9704 allowed to explicitly set this macro via the CFLAGS variable
9705 during make.
9706
9707 * fluids.c (next_fluid_num), gc.c (scm_igc), coop-defs.h
9708 (SCM_THREAD_CRITICAL_SECTION_START,
9709 SCM_THREAD_CRITICAL_SECTION_END): Renamed
9710 SCM_THREAD_CRITICAL_SECTION_START/END to
9711 SCM_CRITICAL_SECTION_START/END.
9712
9713 2001-04-11 Keisuke Nishida <kxn30@po.cwru.edu>
9714
9715 * debug-malloc.c (grow, scm_debug_malloc_prehistory): Use memset
9716 instead of bzero.
9717
9718 * coop.c, iselect.c (FD_ZERO_N): Unconditionally use memset.
9719 (MISSING_BZERO_DECL): Remove the declaration.
9720
9721 Thanks to NIIBE Yutaka.
9722
9723 2001-04-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
9724
9725 * init.c, goops.c, goops.h: Reverted change of 2001-03-29. (The
9726 goops module should be registered in order to work for an
9727 application which uses libguile statically linked.)
9728
9729 2001-04-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9730
9731 * numbers.[ch] (scm_num2long, scm_num2long_long,
9732 scm_num2ulong_long, scm_num2ulong): Argument position is an
9733 unsigned integer.
9734
9735 * environments.c (eval_environment_folder,
9736 import_environment_folder), gh_data.c (gh_scm2longs,
9737 gh_scm2floats, gh_scm2doubles): Distinguish between 0 and NULL
9738 for integers and pointers, respectively.
9739
9740 * gh_data.c (gh_scm2ulong, gh_scm2long, gh_scm2int), socket.c
9741 (scm_fill_sockaddr), unif.c (scm_array_set_x), validate.h
9742 (SCM_NUM2ULONG, SCM_NUM2LONG, SCM_NUM2LONG_DEF,
9743 SCM_NUM2LONG_LONG): Don't pass argument positions as pointers.
9744
9745 * filesys.c (scm_open_fdes, scm_open), net_db (scm_inet_ntoa,
9746 scm_inet_netof, scm_lnaof, scm_gethost, scm_getproto), posix.c
9747 (scm_utime), ramap.c (scm_array_fill_int), scmsigs.c
9748 (scm_sigaction), socket.c (scm_htonl, scm_ntohl, scm_sendto),
9749 stime.c (scm_localtime, scm_gmtime), struct.c (scm_struct_set_x),
9750 validate.h (SCM_VALIDATE_LONG_COPY): Whitespace fixes.
9751
9752 2001-04-09 Neil Jerram <neil@ossau.uklinux.net>
9753
9754 * strings.c (scm_read_only_string_p): Update docstring to reflect
9755 current (non-)usage of "read only" strings.
9756 (scm_make_shared_substring): Clarify docstring by changing
9757 "semantics" to "arguments".
9758
9759 2001-04-06 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
9760
9761 * hooks.c (scm_make_hook, scm_make_hook_with_name),
9762 (scm_hook_p, scm_hook_empty_p, scm_run_hook): Docstring
9763 improvements.
9764
9765 2001-04-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
9766
9767 The following changes make the documentation more consistent.
9768
9769 * rdelim.c (scm_write_line), posix.c (scm_utime), ports.c
9770 (scm_seek), net_db.c (scm_inet_aton, scm_inet_ntoa),
9771 (scm_inet_netof, scm_lnaof, scm_inet_makeaddr), ioext.c
9772 (scm_ftell): Changed @smalllisp ... @end smalllisp to @lisp
9773 ... @end lisp.
9774
9775 * vports.c (scm_make_soft_port), version.c (scm_version), unif.c
9776 (scm_array_dimensions, scm_make_shared_array),
9777 (scm_transpose_array, scm_enclose_array, scm_bit_count_star),
9778 throw.c (scm_catch), struct.c (scm_make_vtable_vtable), strop.c
9779 (scm_string_rindex, scm_string_index, scm_substring_fill_x),
9780 (scm_string_null_p), strings.c (scm_read_only_string_p), root.c
9781 (scm_call_with_dynamic_root), ramap.c (scm_array_index_map_x),
9782 posix.c (scm_mknod), numbers.c (scm_logtest, scm_logbit_p),
9783 macros.c (scm_makmmacro), list.c (scm_append), environments.c
9784 (scm_environment_fold), dynwind.c (s_scm_dynamic_wind): Changed
9785 @example ... @end example to @lisp ... @end lisp.
9786
9787 * weaks.c (scm_weak_vector): Corrected docstring.
9788
9789 * hashtab.c (scm_hashq_ref, scm_hashq_set_x, scm_hashq_remove_x),
9790 (scm_hashv_ref, scm_hashv_set_x, scm_hashv_remove_x),
9791 (scm_hash_ref, scm_hash_set_x, scm_hash_remove_x, scm_hashx_ref),
9792 (scm_hashx_set_x, scm_hashx_get_handle),
9793 (scm_hashx_create_handle_x), regex-posix.c (scm_make_regexp),
9794 (scm_regexp_exec, scm_regexp_p), numbers.c (scm_logtest),
9795 vectors.c (scm_vector_fill_x), strings.c
9796 (scm_make_shared_substring), symbols.c (scm_string_to_symbol),
9797 objprop.c (scm_set_object_properties_x):
9798 (scm_set_object_property_x), throw.c (scm_catch, scm_lazy_catch),
9799 strports.c (scm_call_with_input_string), ports.c
9800 (scm_truncate_file), ioext.c (scm_ftell), ports.c (scm_seek),
9801 list.c (scm_append_x), dynwind.c (scm_dynamic_wind), error.c
9802 (scm_error_scm), vports.c (scm_make_soft_port), weaks.c
9803 (scm_make_weak_vector,scm_weak_vector_p),
9804 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table),
9805 (scm_make_doubly_weak_hash_table, scm_weak_key_hash_table_p),
9806 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
9807 macros.c (scm_macro_type), dynl.c (scm_dynamic_link),
9808 (scm_dynamic_unlink, scm_dynamic_call, scm_dynamic_args_call):
9809 Made parameter names match documentation by renaming parameters
9810 and/or fixing docstrings.
9811
9812 * numbers.c (scm_ash): Corrected Texinfo markup.
9813
9814 * strop.c (scm_string_index, scm_string_rindex),
9815 (scm_substring_fill_x, scm_string_null_p): Removed `qdocs'.
9816
9817 * vports.c (scm_make_soft_port), unif.c
9818 (scm_uniform_vector_length, scm_array_p, scm_array_rank),
9819 (scm_dimensions_to_uniform_array, scm_transpose_array),
9820 (scm_array_in_bounds_p, scm_uniform_vector_ref),
9821 (scm_bit_count, scm_bit_position, scm_bit_count_star),
9822 (scm_array_to_list, scm_list_to_uniform_array),
9823 (scm_array_prototype, symbols.c (scm_string_to_symbol), strports.c
9824 (scm_open_input_string, scm_open_output_string),
9825 (scm_get_output_string), strop.c (scm_string_copy),
9826 (scm_string_fill_x), strings.c (scm_string_p, scm_string), stime.c
9827 (scm_get_internal_real_time, scm_times),
9828 (scm_get_internal_run_time, scm_current_time, scm_gettimeofday),
9829 (scm_localtime, scm_gmtime), socket.c (scm_htons, scm_ntohs),
9830 (scm_htonl, scm_ntohl, scm_socket, scm_socketpair),
9831 (scm_getsockopt, scm_getsockname, scm_getpeername, scm_recvfrom),
9832 simpos.c (scm_system), random.c (scm_random_uniform),
9833 (scm_random_normal, scm_random_exp), ramap.c
9834 (scm_array_equal_p), posix.c (scm_pipe, scm_getgroups),
9835 (scm_status_exit_val, scm_status_term_sig, scm_status_stop_sig),
9836 (scm_getppid, scm_getuid, scm_getgid, scm_geteuid, scm_getegid),
9837 (scm_getpgrp, scm_ttyname, scm_ctermid, scm_tcgetpgrp, scm_uname),
9838 (scm_environ, scm_tmpnam, scm_mkstemp, scm_access, scm_getpid),
9839 (scm_setlocale), ports.c (scm_char_ready_p, scm_drain_input),
9840 (scm_pt_size, scm_pt_member, scm_port_revealed, scm_port_mode),
9841 (scm_close_port, scm_input_port_p, scm_output_port_p, scm_port_p),
9842 (scm_port_closed_p, scm_eof_object_p, scm_read_char),
9843 (scm_peek_char), pairs.c (scm_pair_p, scm_cons), numbers.c
9844 (scm_logand, scm_logior, scm_logxor, scm_lognot),
9845 (scm_integer_expt, scm_bit_extract, scm_logcount),
9846 (scm_integer_length, scm_string_to_number, scm_inexact_to_exact),
9847 net_db.c (scm_inet_netof, scm_lnaof), modules.c
9848 (scm_interaction_environment), macros.c (scm_makacro),
9849 (scm_makmacro, scm_makmmacro), keywords.c (scm_keyword_p), ioext.c
9850 (scm_ftell, scm_dup_to_fdes, scm_fileno, scm_isatty_p),
9851 (scm_fdopen, scm_fdes_to_ports), gc.c (scm_gc_stats), fluids.c
9852 (scm_fluid_ref), filesys.c (scm_open_fdes),
9853 (scm_stat, scm_directory_stream_p, scm_getcwd, scm_readlink):
9854 Docstring correction: `Returns' -> `Return'
9855
9856 * gc.c (scm_set_debug_cell_accesses_x):
9857 (s_scm_gc_set_debug_check_freelist_x):
9858 * fluids.c (scm_fluid_p): Added texinfo markup.
9859
9860 * error.c (scm_strerror): Made docstring more precise.
9861
9862 * vectors.c (scm_vector_p, scm_vector, scm_make_vector),
9863 (scm_vector_to_list, _scm_vector_fill_x), symbols.c
9864 (scm_symbol_p, scm_symbol_to_string), strorder.c
9865 (scm_string_equal_p, scm_string_ci_equal_p, scm_string_less_p),
9866 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p),
9867 (scm_string_ci_less_p, scm_string_ci_leq_p, scm_string_ci_gr_p):
9868 (scm_string_ci_geq_p), strop.c (scm_string_copy),
9869 (scm_string_fill_x): Removed `(r5rs)' from docstrings.
9870
9871 2001-04-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
9872
9873 * gc.c (MARK): Re-introduce a cheap sanity test for non debug
9874 mode, as suggested by Michael Livshin.
9875
9876 2001-03-31 Michael Livshin <mlivshin@bigfoot.com>
9877
9878 * backtrace.c (display_backtrace_body): since the `print_state'
9879 variable is not used (instead its data field is used directly as
9880 `pstate'), protect it from the hungry compiler optimizations.
9881 thanks to Bill Schottstaedt for the report.
9882
9883 2001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
9884
9885 * gc.[ch] (scm_tc16_allocated): New type tag for allocated cells.
9886 It is only defined and used if guile is compiled with
9887 SCM_DEBUG_CELL_ACCESSES set to true. It's purpose is, to never
9888 let cells with a free_cell type tag be visible outside of the
9889 garbage collector when in debug mode.
9890
9891 * gc.c (scm_debug_cell_accesses_p): Set to true as default.
9892
9893 (scm_assert_cell_valid): Use a local static variable to avoid
9894 recursion.
9895
9896 (MARK): Only check for rogue cell pointers in debug mode. Use
9897 scm_cellp for this purpose and place all checks for rogue pointers
9898 into that function. Further, since due to conservative scanning
9899 we may encounter free cells during marking, don't use the standard
9900 cell type accessor macro to determine the cell type.
9901
9902 (scm_cellp): Check if the cell pointer actually points into a
9903 card header.
9904
9905 (scm_init_gc): Initalize scm_tc16_allocated.
9906
9907 * gc.h (GCH): Renamed to SCM_GC_H.
9908
9909 (SCM_VALIDATE_CELL): Enclose the expression in brackets. This
9910 might be unnecessary, but I feel better this way :-)
9911
9912 (SCM_GC_CELL_TYPE): New macro.
9913
9914 (SCM_SETAND_CDR, SCM_SETOR_CDR): Deprecated. These are not used
9915 in guile, and it is unlikely that they will be applied to real
9916 pairs anyway.
9917
9918 (SCM_SET_FREE_CELL_TYPE): Removed. It was not used.
9919
9920 (SCM_GC_SET_ALLOCATED): New macro. Only non-empty if guile is
9921 compiled with SCM_DEBUG_CELL_ACCESSES set to true.
9922
9923 (SCM_NEWCELL, SCM_NEWCELL2): Use of SCM_GC_SET_ALLOCATED will
9924 make sure that in debug mode no free cell will ever be visible
9925 outside of the garbage collector.
9926
9927 2001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
9928
9929 * async.c (scm_asyncs_pending): Don't use != to compare SCM
9930 values.
9931
9932 * async.c (scm_system_async), variable.c (scm_make_variable,
9933 scm_make_undefined_variable): Use scm_cons to create a pair.
9934
9935 * debug.c (scm_reverse_lookup): Perform proper type checking.
9936 Remove suspicious use of SCM_SLOPPY_CONSP.
9937
9938 * eq.c (scm_equal_p), tags.h (SCM_ECONSP): Use SCM_CONSP instead
9939 of SCM_SLOPPY_CONSP. A sane compiler should be able to perform
9940 the corresponding optimization.
9941
9942 * eval.c (iqq): Use proper type check.
9943
9944 (scm_m_expand_body): Remove redundant type checks.
9945
9946 (promise_print): Don't access promise cells as pairs.
9947
9948 * eval.c (EVALCAR, iqq, scm_m_expand_body, scm_eval_args,
9949 scm_deval_args SCM_CEVAL), guardians.c (scm_guard), hashtab.c
9950 (scm_internal_hash_fold), print.c (scm_iprlist): Use !SCM_CELLP
9951 for SCM_NCELLP, !SCM_CONSP for SCM_NCONSP, !SCM_IMP for SCM_NIMP,
9952 !SCM_FALSEP for SCM_NFALSEP, !SCM_NULLP for SCM_NNULLP
9953
9954 * eval.c (scm_m_define, scm_macroexp, SCM_CEVAL), print.c
9955 (scm_iprin1): Use new macro predicate and accessors.
9956
9957 * eval.h (scm_tc16_macro): Removed declaration. It is declared
9958 in macros.h.
9959
9960 * eval.h (EVALH), macros.h (MACROSH), ports.h (PORTSH), procs.h
9961 (PROCSH), tags.h (TAGSH), variable.h (VARIABLEH): Renamed to
9962 SCM_EVAL_H, SCM_MACROS_H, SCM_PORTS_H, SCM_PROCS_H, SCM_TAGS_H and
9963 SCM_VARIABLE_H. Even the macros that are used to inhibit
9964 including a header file twice should be in the SCM_ namespace.
9965
9966 * fluids.c (scm_swap_fluids, scm_swap_fluids_reverse),
9967 properties.c (scm_primitive_property_ref,
9968 scm_primitive_property_del_x): Prefer stronger predicates like
9969 SCM_NULLP or SCM_FALSEP over SCM_IMP.
9970
9971 * gc.c (MARK): Use proper macros to access procedure-with-setter
9972 cell elements and closure cell elements.
9973
9974 (gc_sweep_freelist_finish, scm_gc_sweep, init_heap_seg): Don't
9975 access free cells as pairs.
9976
9977 (scm_unprotect_object): scm_hashq_get_handle returns #f if
9978 no hashtab entry is found.
9979
9980 * gc.c (scm_gc_sweep), ports.c (scm_close_port): Use new macro
9981 SCM_CLR_PORT_OPEN_FLAG.
9982
9983 * guardians.c (TCONC_IN), print.c (scm_free_print_state): Don't
9984 use SCM_SET_C[AD]R for uninitialized cells.
9985
9986 * hashtab.c (scm_hash_fn_get_handle): Use SCM_VALIDATE_VECTOR.
9987 If the hashtable has no slots, return #f instead of '(). This
9988 unifies the return value with most assoc-functions.
9989
9990 (scm_hash_fn_ref): Use proper type check.
9991
9992 (scm_hashq_get_handle, scm_hashv_get_handle, scm_hash_get_handle):
9993 Removed references to non-existing functions from documentation.
9994
9995 * keywords.c (scm_keyword_dash_symbol): Use proper macros to
9996 access keyword cell elements.
9997
9998 * macros.h (SCM_MACROP, SCM_MACRO_TYPE, SCM_MACRO_CODE): New
9999 macros.
10000
10001 * ports.h (SCM_CLR_PORT_OPEN_FLAG): New macro.
10002
10003 * print.c (scm_iprlist): Added comment. Improved loop
10004 conditions.
10005
10006 * procs.h (SCM_ENV, SCM_SETENV): Don't access closure cells as
10007 pairs.
10008
10009 * smob.c (scm_markcdr): Don't access smob cells as pairs.
10010
10011 * tags.h (SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP): Deprecated.
10012
10013 * throw.c (ACTIVATEJB, DEACTIVATEJB): Don't access jump buffer
10014 cells as pairs.
10015
10016 * variable.c (variable_print, variable_equalp, scm_variable_ref,
10017 scm_variable_set_x): Use proper macros to access variable cell
10018 elements.
10019
10020 (scm_variable_bound_p): Don't use SCM_NEGATE_BOOL.
10021
10022 * variable.h (SCM_VARVCELL): Don't access variable cells as
10023 pairs.
10024
10025 * vectors.c (scm_vector), weaks.c (scm_weak_vector): Simplified,
10026 added FIXME comment, removed register specifier.
10027
10028 2001-03-29 Keisuke Nishida <kxn30@po.cwru.edu>
10029
10030 * goops.c, goops.h (scm_init_oop_goops_goopscore_module): Deprecated.
10031 * init.c (scm_init_guile_1): Don't init goopscore module.
10032
10033 2001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
10034
10035 * eval.c (SCM_APPLY): Check that arg1 is bound for scm_tc7_cxr.
10036
10037 2001-03-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10038
10039 * strop.c (scm_string_to_list): Fixed docstring markup.
10040 (scm_string_upcase_x, scm_string_upcase, scm_string_downcase_x),
10041 (scm_string_downcase, scm_string_capitalize_x),
10042 (scm_string_capitalize): Rewrote and corrected docstrings.
10043 (scm_string_ci_to_symbol): Made docstring more explicit.
10044
10045 2001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
10046
10047 * values.h (scm_values_vtable, SCM_VALUESP): Moved here so that
10048 eval.c can use it.
10049 (scm_call_with_values): Removed.
10050 * values.c (values_vtable, scm_values_vtable): Added "scm_" prefix
10051 so that it can be exported.
10052 (scm_call_with_values): Removed.
10053
10054 * tags.h (SCM_IM_CALL_WITH_VALUES): New isym.
10055 * eval.c: Include "libguile/values.h"
10056 (scm_m_at_call_with_values, scm_sym_at_call_with_values):
10057 New.
10058 (unmemocopy, scm_ceval, scm_deval): Handle new isym.
10059 * eval.h (scm_sym_at_call_with_values, scm_m_at_call_with_values):
10060 New delcarations to support above change.
10061
10062 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Fix syntax
10063 errors with last change.
10064
10065 2001-03-25 Marius Vollmer <mvo@zagadka.ping.de>
10066
10067 * eval.c (scm_primitive_eval_x, scm_primitive_eval, scm_i_eval_x,
10068 scm_i_eval): Moved the application of the system transformer from
10069 scm_i_eval to scm_primitive_eval.
10070
10071 2001-03-23 Neil Jerram <neil@ossau.uklinux.net>
10072
10073 * guile-snarf.awk.in: Substitute "\\" with "\" in .doc output.
10074
10075 * strop.c (scm_string_index): Fix docstring line break
10076 regression.
10077
10078 * list.c (scm_cons_star): Fix docstring typo.
10079
10080 2001-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
10081
10082 * gc.c (scm_init_storage), gdbint.c (scm_init_gdbint), numbers.c
10083 (big2str), ports.c (scm_drain_input), read.c (scm_read,
10084 scm_grow_tok_buf), strings.c (scm_string, scm_makfromstr,
10085 scm_make_string, scm_string_append), strports.c (st_resize_port,
10086 scm_object_to_string), unif.c (scm_make_uve): Replace calls to
10087 scm_makstr with calls to scm_allocate_string.
10088
10089 * strings.[ch] (scm_allocate_string): New function.
10090
10091 * strings.[ch] (scm_makstr): Deprecated.
10092
10093 2001-03-18 Gary Houston <ghouston@arglist.com>
10094
10095 * posix.c (scm_tmpnam): check that return value from tmpnam is not
10096 NULL. rewrote the docstring.
10097 (scm_mkstemp): new procedure implementing "mkstemp!".
10098 * posix.h: declare scm_mkstemp.
10099
10100 * net_db.c: declare h_errno if configure didn't define HAVE_H_ERRNO.
10101 normally it would be found in netdb.h.
10102
10103 2001-03-17 Gary Houston <ghouston@arglist.com>
10104
10105 * sort.c (scm_sort): move sortvec variable to avoid a compiler
10106 warning when HAVE_ARRAYS is not defined. move len too.
10107
10108 * Makefile.am (DOT_X_FILES): remove net_db.x, posix.x, socket.x.
10109 (EXTRA_DOT_X_FILES): let configure set the value.
10110 (DOT_DOC_FILES): remove net_db.doc, posix.doc, socket.doc.
10111
10112 * gc.c (scm_must_malloc): changed the comment explaining when
10113 scm_must variants of malloc/free etc., should be used, based on
10114 explanation from Dirk Herrmann.
10115 * fports.c (scm_fport_buffer_add): use FUNC_NAME instead of a local
10116 string with procedure name. use scm_must_malloc instead of malloc.
10117 (scm_setvbuf, scm_fdes_to_port, fport_close): use scm_must variants
10118 of malloc/free.
10119 * ports.c (scm_add_to_port_table, scm_remove_from_port_table,
10120 scm_ungetc): use scm_must variants of malloc/realloc/free.
10121 (scm_add_to_port_table, scm_ungetc): define FUNC_NAME.
10122
10123 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
10124
10125 * __scm.h (SCM_ASSERT, SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
10126 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Don't call scm_wta, call
10127 scm_wrong_type_arg instead.
10128
10129 (SCM_WNA): Deprecated.
10130
10131 * error.[ch] (scm_wta): Deprecated.
10132
10133 * numbers.c (s_i_log): Minor comment fix.
10134
10135 * read.c (scm_lreadr), unif.c (scm_aind, scm_shap2ra,
10136 scm_make_shared_array, scm_transpose_array, scm_enclose_array,
10137 scm_array_in_bounds_p): Don't use SCM_ASSERT to check for
10138 wrong-num-args or misc errors.
10139
10140 * unif.c (scm_make_shared_array, scm_transpose_array,
10141 scm_enclose_array, scm_array_in_bounds_p, scm_array_set_x):
10142 Validate the rest argument (note: this is only done when guile is
10143 built with SCM_DEBUG_REST_ARGUMENT=1)
10144
10145 (scm_array_in_bounds_p, scm_uniform_vector_ref, scm_array_set_x):
10146 Replace calls to scm_wrong_num_args by SCM_WRONG_NUM_ARGS.
10147
10148 * validate.h (SCM_FUNC_NAME, SCM_VALIDATE_NUMBER_COPY,
10149 SCM_VALIDATE_NUMBER_DEF_COPY): Deprecated.
10150
10151 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
10152
10153 * validate.h (SCM_WRONG_NUM_ARGS): Call scm_error_num_args_subr
10154 instead of scm_wrong_num_args.
10155
10156 * coop-threads.c: Don't include libguile/strings.h. (Was only
10157 needed for former implementation of SCM_WRONG_NUM_ARGS.)
10158
10159 * debug.c (scm_m_start_stack): Don't use SCM_ASSERT to check for
10160 wrong-num-args errors.
10161
10162 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
10163
10164 * error.[ch] (scm_error_num_args_subr): New function.
10165
10166 2001-03-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10167
10168 * list.c (scm_list, scm_cons_star, scm_null_p, scm_list_p),
10169 (scm_length, scm_append, scm_reverse, scm_list_ref),
10170 (scm_memq, scm_memv, scm_member, scm_delv_x, scm_delete_x),
10171 (scm_delq, scm_delv, scm_delete, scm_delq1_x, scm_delv1_x),
10172 (scm_delete1_x), gc.c (scm_map_free_list),
10173 (scm_free_list_length), hash.c (scm_hashq, scm_hashv),
10174 (scm_hash), hashtab.c (scm_hashq_ref, scm_hashq_set_x),
10175 (scm_hashq_remove_x, scm_hashv_ref, scm_hashv_set_x),
10176 (scm_hashv_remove_x, scm_hash_ref, scm_hash_set_x),
10177 (scm_hash_remove_x), ports.c (scm_pt_size, scm_pt_member), print.c
10178 (scm_current_pstate), scmsigs.c (scm_usleep), goops.c
10179 (scm_get_keyword, scm_sys_compute_slots): Added texinfo markup.
10180
10181 * weaks.c (scm_weak_vector_p, scm_weak_key_hash_table_p),
10182 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
10183 rdelim.c (scm_read_delimited_x), strop.c (scm_string_index),
10184 symbols.c (scm_symbol_interned_p), numbers.c
10185 (scm_string_to_number), ports.c (scm_port_p): Corrected texinfo
10186 markup.
10187
10188 2001-03-16 Keisuke Nishida <kxn30@po.cwru.edu>
10189
10190 * snarf.h (SCM_CONST_LONG): Deprecated.
10191 * tag.c (CONST_INUM): New macro. Use it to define scm_utag_*.
10192
10193 2001-03-15 Marius Vollmer <marius.vollmer@uni-dortmund.de>
10194
10195 * numbers.c (scm_num2ulong): Check that a bignum is positive
10196 before looking at the magnitude. Correctly check for overflow
10197 during conversion.
10198 (scm_num2long_long): Likewise.
10199 (scm_num2ulong_long): New.
10200 (ULONG_LONG_MAX): Define if not already defined.
10201 * numbers.h: (scm_num2ulong_long): New prototype.
10202
10203 2001-03-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10204
10205 * validate.h (SCM_VALIDATE_OPOUTSTRPORT): New macro.
10206
10207 * strports.h (SCM_STRPORTP, SCM_OPSTRPORTP, SCM_OPINSTRPORTP),
10208 (SCM_OPOUTSTRPORTP): New predicate macros.
10209 (scm_open_input_string, scm_open_output_string),
10210 (scm_get_output_string): New prototypes.
10211
10212 * strports.c (scm_open_input_string, scm_open_output_string),
10213 (scm_get_output_string): New procedures (SRFI-6 compliant).
10214 Made scm_tc16_strport non-static.
10215
10216 2001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
10217
10218 * macros.h (SCM_ASSYNT): Removed unused object argument from
10219 signature.
10220
10221 * eval.c (scm_m_body, scm_m_quote, scm_m_begin, scm_m_if,
10222 scm_m_set_x, scm_m_and, scm_m_or, scm_m_case, scm_m_cond,
10223 scm_m_letstar, scm_m_do, scm_m_quasiquote, scm_m_delay,
10224 scm_m_define, scm_m_letrec1, scm_m_letrec, scm_m_let, scm_m_apply,
10225 scm_m_cont, scm_m_nil_cond, scm_m_nil_ify, scm_m_t_ify,
10226 scm_m_0_cond, scm_m_0_ify, scm_m_1_ify, scm_m_atfop, scm_m_atbind,
10227 scm_m_expand_body), evalext.c (scm_m_generalized_set_x,
10228 scm_m_undefine), goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
10229 scm_m_atdispatch): Removed unused object argument from call to
10230 SCM_ASSYNT.
10231
10232 2001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
10233
10234 * gh.h/gh_data.c (gh_ints2scm): Changed the signature to use a
10235 const int* to reflect that the input array of integers remains
10236 unchanged. Thanks to Brett Viren for the hint.
10237
10238 2001-03-14 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10239
10240 * gh_data.c (gh_scm2chars, gh_scm2shorts, gh_scm2longs),
10241 (gh_scm2floats, gh_scm2doubles): Check for malloc() returning NULL
10242 in various places.
10243 (gh_scm2newstr, gh_symbol2newstr): Change call to
10244 scm_must_malloc() to malloc(), because user-free()able memory is
10245 allocated.
10246
10247 * gc.c: Added declaration of `scm_debug_check_freelist'.
10248
10249 2001-03-13 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10250
10251 * ports.c (scm_port_mode): Changed `mode' array size to 4.
10252
10253 2001-03-12 Keisuke Nishida <kxn30@po.cwru.edu>
10254
10255 * strports.c (scm_object_to_string): New procedure.
10256 (scm_strprint_obj): Deprecated.
10257 * strports.h: Reflect the changes.
10258
10259 2001-03-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
10260
10261 * goops.h (SCM_VALIDATE_PUREGENERIC): New macro.
10262
10263 * goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
10264 scm_m_atdispatch): Provide definitions for FUNC_NAME. Don't use
10265 SCM_ASSYNT to check for correct argument types. Either use some
10266 SCM_VALIDATE_* macro or an explicit test.
10267
10268 (scm_make_foreign_object): Don't use SCM_ASSERT to check for
10269 misc-errors.
10270
10271 * macros.h (SCM_ASSYNT): On assertion failure, issue a misc-error
10272 instead of calling scm_wta.
10273
10274 2001-03-12 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10275
10276 * load.c (scm_primitive_load, scm_primitive_load_path),
10277 (scm_sys_search_load_path): Corrected docstrings (file ->
10278 filename).
10279
10280 * eval.c (scm_force): Added texinfo markup to docstring.
10281 (scm_promise_p): Renamed parameter to `obj' to match docstring.
10282
10283 * debug-malloc.c: Reinserted #include <stdio.h>.
10284
10285 2001-03-11 Keisuke Nishida <kxn30@po.cwru.edu>
10286
10287 * list.c (s_scm_reverse_x): Use SCM_VALIDATE_LIST.
10288
10289 * environments.c, error.c, eval.c, filesys.c, hashtab.c, load.c,
10290 net_db.c, procprop.c, read.c, scmsigs.c, socket.c, struct.c:
10291 Use SCM_LISTn instead of scm_listify.
10292
10293 2001-03-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
10294
10295 * _scm.h: Removed #include <errno.h>.
10296
10297 * error.c, net_db.c, putenv.c, stime.c: Removed declaration of
10298 errno variable (can be a macro on some systems, for example when
10299 using linux libc with threads).
10300
10301 * error.c, filesys.c, gc.c, ioext.c, iselect.c, net_db.c, ports.c,
10302 posix.c, print.c, putenv.c, scmsigs.c, script.c, simpos.c, smob.c,
10303 socket.c, srcprop.c, stime.c, strop.c, unif.c, vports.c: Added
10304 #include <errno.h> in these 20 out of 100 files.
10305
10306 2001-03-10 Gary Houston <ghouston@arglist.com>
10307
10308 * socket.c: add a definition of SUN_LEN (from glibc) for when it's
10309 not already defined.
10310
10311 2001-03-09 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
10312
10313 * coop.c: Inserted #include <stdio.h>.
10314
10315 * iselect.c: Reinserted #include <stdio.h>.
10316
10317 2001-03-10 Marius Vollmer <mvo@zagadka.ping.de>
10318
10319 * posix.c: Replaced `#define' of __USE_XOPEN right before
10320 including unistd.h with a define of _GNU_SOURCE at the very top of
10321 the file.
10322
10323 2001-03-09 Keisuke Nishida <kxn30@po.cwru.edu>
10324
10325 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
10326 continuations.c, debug-malloc.c, debug.c, dynwind.c, eq.c, eval.c,
10327 feature.c, filesys.h, gc_os_dep.c, gh_data.c, gh_eval.c,
10328 gh_funcs.c, gh_io.c, gh_list.c, gh_predicates.c, hash.c,
10329 hashtab.c, iselect.c, keywords.c, list.c, load.c, mallocs.c,
10330 net_db.c, numbers.c, objprop.c, objprop.h, options.c, pairs.c,
10331 print.c, procprop.c, procs.c, properties.c, ramap.c,
10332 regex-posix.c, root.c, scmsigs.c, simpos.c, socket.c, srcprop.c,
10333 stackchk.c, stacks.c, strings.c, strop.c, strorder.c, struct.c,
10334 symbols.c, tag.c, threads.c, variable.c, vectors.c, weaks.c:
10335 Remove #include <stdio.h>
10336 * gc.c, gdbint.c, root.c, sort.c, unif.c: Add #include <string.h>.
10337
10338 * procs.c (scm_make_subr_opt): Init symcell to avoid warning.
10339
10340 2001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10341
10342 * posix.c (scm_gethostname): Set initial name length to 256 for
10343 Solaris.
10344
10345 2001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10346
10347 * posix.h (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
10348 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
10349 (scm_sethostname, scm_gethostname): New prototypes.
10350
10351 * posix.c: Added inclusion of <crypt.h>, <sys/resource.h> and
10352 <sys/file.h>, if present.
10353 (scm_init_posix): [PRIO_PROCESS, PRIO_PGRP, PRIO_USER, LOCK_SH,
10354 LOCK_EX, LOCK_UN, LOCK_NB]: New variables.
10355 (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
10356 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
10357 (scm_sethostname, scm_gethostname): New procedures.
10358
10359 2001-03-08 Neil Jerram <neil@ossau.uklinux.net>
10360
10361 * ports.c (scm_port_column): Docstring fixes: (i) port-line arg is
10362 not optional (ii) "recommend" spelling correction.
10363
10364 2001-03-08 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
10365
10366 * ramap.c (racp): Removed optimization which caused array copying
10367 to fail if the two arrays shared storage. Re-inserted the IVDEP
10368 macros removed in the change of 2000-03-09. (Don't really have a
10369 complete grasp of what they are for, but they seem to be necessary
10370 on Crays. This needs testing!) Thanks to Miroslav Silovic.
10371
10372 * hash.c (scm_string_hash): Don't downcase characters.
10373
10374 2001-03-07 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
10375
10376 * symbols.c (scm_symbols_prehistory): Changed symbol hash table
10377 size from 277 --> 1009.
10378
10379 * symbols.c, symbols.h (scm_sys_symbols): New function GUILE_DEBUG
10380 function.
10381
10382 * coop-threads.c: Fixed change of 2001-03-06.
10383
10384 * validate.h: Code formatting.
10385
10386 2001-03-07 Keisuke Nishida <kxn30@po.cwru.edu>
10387
10388 * Makefile.am (*.x): Add dependency on snarf.h and guile-doc-snarf.in.
10389 (*.doc): Add dependency on guile-snarf.awk.in.
10390
10391 * guile-snarf.awk.in: Neglect spaces at the end of
10392 SCM_SNARF_DOCSTRING_END. Skip lines "# NN ..." in the
10393 middle of docstrings. (To avoid the problem with gcc-2.96.)
10394
10395 2001-03-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
10396
10397 * coop-threads.c (scm_call_with_new_thread), load.c
10398 (scm_primitive_load, scm_sys_search_load_path), random.c
10399 (scm_c_default_rstate), struct.c (scm_make_struct_layout,
10400 scm_struct_ref, scm_struct_set_x): Don't use SCM_ASSERT to
10401 (potentially) issue a scm-misc-error or wrong-num-args error
10402 message.
10403
10404 * load.c (scm_search_path): Use SCM_ASSERT_TYPE to give details
10405 about the expected type with the wrong-type-arg error message.
10406
10407 * smob.c (scm_make_smob): Abort on misuse of smob - it indicates
10408 a C level bug that can't be fixed from scheme anyway.
10409
10410 2001-03-05 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
10411
10412 * eval.c (scm_m_letstar): Removed check for duplicate bindings.
10413 Duplicate bindings are OK in a let* since a let* is semantically
10414 equivalent to a nested set of let:s.
10415
10416 2001-03-05 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10417
10418 * print.c (scm_print_options): Fixed texinfo in docstring.
10419
10420 * net_db.c (scm_getserv, scm_getproto, scm_getnet): Return #f if
10421 the underlying functions getservent, getprotoent or getnetent
10422 return NULL instead of signalling an error.
10423
10424 2001-03-04 Gary Houston <ghouston@arglist.com>
10425
10426 * socket.c (scm_fill_sockaddr): don't allow buffer overflows when
10427 taking an unexpectedly large filename for an AF_UNIX socket from
10428 bind/connect/sendto (thanks to Martin Grabmueller).
10429
10430 * socket.c (scm_sock_fd_to_port, SCM_SOCK_FD_TO_PORT): removed the
10431 former and adjusted the latter.
10432 (scm_socket, scm_socketpair): cosmetic changes.
10433 (scm_getsockopt, scm_setsockopt): declare optlen as int, not
10434 size_t as socklen_t substitute. don't restrict args/return values
10435 to INUM: allow full range of int or size_t.
10436 (scm_fill_sockaddr): check arguments before allocating memory, to
10437 avoid leakage. use malloc, not scm_must_malloc.
10438 (scm_connect, scm_bind, scm_sendto): use int, not size_t as socklen_t
10439 substitute. free the sockaddr structure before throwing an error.
10440 (scm_init_add_buffer): procedure removed, together with its static
10441 buffer scm_addr_buffer, which wouldn't be thread safe. instead,
10442 define a macro MAX_ADDR_SIZE and declare the buffer where needed.
10443 (scm_accept, scm_getpeername, scm_getsockname, scm_recvfrom,
10444 scm_sendto): use a local buffer instead of scm_addr_buffer.
10445 adjust for new SCM_SOCK_FD_TO_PORT. use int for address size,
10446 not size_t.
10447 (scm_recvfrom): set addr->sa_family to AF_UNSPEC before the recvfrom
10448 call to detect whether recvfrom could be bothered to set the address.
10449 (scm_init_socket): don't call scm_init_addr_buffer.
10450
10451 2001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
10452
10453 * debug.c (scm_procedure_source, scm_procedure_environment),
10454 print.c (scm_get_print_state), ramap.c (scm_array_fill_int,
10455 scm_array_index_map_x), sort.c (scm_sort_x, scm_sort,
10456 scm_stable_sort_x, scm_stable_sort), stacks.c (scm_make_stack,
10457 scm_last_stack_frame), symbols.c (scm_sym2vcell, scm_sym2ovcell),
10458 unif.c (scm_list_to_uniform_array, scm_uniform_vector_length,
10459 scm_transpose_array, scm_enclose_array, scm_array_in_bounds_p,
10460 scm_uniform_vector_ref, scm_array_set_x, scm_uniform_array_read_x,
10461 scm_uniform_array_write, scm_bit_set_star_x, scm_bit_count_star,
10462 scm_array_to_list, scm_array_prototype), validate.h
10463 (SCM_VALIDATE_NUMBER_COPY): Don't call function scm_wta, call
10464 scm_misc_error or scm_wrong_type_arg instead.
10465
10466 * validate.h (SCM_WTA, RETURN_SCM_WTA): Deprecated.
10467
10468 2001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
10469
10470 * goops.c, goops.h (scm_sys_pre_expand_closure_x): Removed.
10471 (scm_sys_tag_body): Added.
10472
10473 2001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
10474
10475 * continuations.c (continuation_apply), eval.c (scm_m_lambda,
10476 scm_m_letstar, scm_m_letrec1, scm_m_let, SCM_APPLY), eval.h
10477 (SCM_EVALIM2), evalext.c (scm_m_generalized_set_x), gc.c
10478 (get_bvec, MARK), goops.c (scm_primitive_generic_generic),
10479 options.c (scm_options), ports.c (scm_remove_from_port_table),
10480 ramap.c (scm_ramapc), read.c (skip_scsh_block_comment, scm_lreadr,
10481 scm_lreadparen, scm_lreadrecparen), script.c (script_get_octal,
10482 script_get_backslash, script_read_arg), unif.c (scm_cvref): Don't
10483 call function scm_wta, call scm_misc_error or scm_wrong_type_arg
10484 instead.
10485
10486 2001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
10487
10488 * goops.c (scm_sys_pre_expand_closure_x): New procedure.
10489
10490 2001-03-04 Marius Vollmer <mvo@zagadka.ping.de>
10491
10492 * eval.c (scm_s_duplicate_bindings): New error message.
10493 (scm_m_letrec1, scm_m_letstar): Check for duplicate bindings.
10494
10495 2001-03-03 Marius Vollmer <mvo@zagadka.ping.de>
10496
10497 * eval.h (SCM_EVALIM2): New macro. Use it when a
10498 immediate, literal constant should be evaluated.
10499 * eval.c (scm_s_duplicate_formals): New error message string.
10500 (scm_c_improper_memq): New function.
10501 (scm_m_lambda): Check for duplicate arguments.
10502 (scm_ceval, scm_deval): When executing a body: only cons a new
10503 toplevel environment frame when it is different from the
10504 existing one; use EVALCAR instead of SIDEVAL so that we can properly
10505 check for empty combinations; use SCM_EVALIM2 for the same reason
10506 in the non-toplevel loop.
10507 (nontoplevel_cdrxnoap, nontoplevel_cdrxbegin, nontoplevel_begin):
10508 New labels with the meaning of their non-"nontoplevel" partners,
10509 but they are used when it is known that the body is not evaluated at
10510 top-level.
10511 (scm_apply, scm_dapply): use SCM_EVALIM2 to get proper error
10512 reporting for empty combinations.
10513
10514 2001-03-02 Keisuke Nishida <kxn30@po.cwru.edu>
10515
10516 * Remove dump facilities.
10517 * dump.c, dump.h: Removed.
10518 * Makefile.am: Remove dump.c, dump.h, dump.x, dump.doc.
10519 * init.c: Remove #include "libguile/dump.h".
10520 (scm_init_guile_1): Remove scm_init_dump.
10521 * smob.h (scm_smob_descriptor): Remove slots: dump, undump.
10522 (scm_set_smob_dump, scm_set_smob_undump): Remove declaration.
10523 * smob.c (scm_make_smob_type): Remove initialization: dump, undump.
10524 (scm_set_smob_dump, scm_set_smob_undump): Removed.
10525
10526 * keywords.c: Remove #include "libguile/dump.h".
10527 (keyword_dump, keyword_undump): Removed.
10528 (scm_init_keywords): Remove scm_set_smob_dump and scm_set_smob_undump.
10529
10530 2001-03-02 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10531
10532 * vectors.c (s_scm_vector_p, list->vector, scm_vector)
10533 (scm_vector_ref, scm_vector_set_x, scm_vector_to_list)
10534 (scm_vector_fill_x), strorder.c (scm_string_equal_p)
10535 (scm_string_ci_equal_p, scm_string_less_p, scm_string_leq_p)
10536 (scm_string_gr_p, scm_string_geq_p, scm_string_ci_less_p)
10537 (scm_string_ci_geq_p), symbols.c (scm_symbol_p)
10538 (scm_symbol_to_string, scm_string_to_symbol): Changed use of @t{}
10539 to @code{} as the texinfo manual recommends, converted the
10540 examples to use a @lisp{}-environment.
10541
10542 * strports.c (scm_eval_string): Cleaned up the docstring.
10543
10544 * struct.c (scm_struct_p, scm_struct_vtable_p): Added texinfo
10545 markup.
10546
10547 * numbers.c (scm_exact_p, scm_odd_p, scm_even_p)
10548 (scm_number_to_string, scm_string_to_number, scm_number_p)
10549 (scm_real_p, scm_integer_p, scm_inexact_p, scm_make_rectangular)
10550 (scm_make_polar, scm_inexact_to_exact): Added texinfo markup.
10551 (scm_ash): Added texinfo markup and removed obsolete @refill.
10552 (scm_gr_p): Corrected comment.
10553 (scm_gr_p, scm_leq_p, scm_geq_p): Added texinfo markup to (future
10554 docstring) comments.
10555 (scm_positive_p, scm_less_p, scm_num_eq_p, scm_real_p)
10556 (scm_number_p, scm_negative_p, scm_max, scm_min, scm_sum)
10557 (scm_difference, scm_product, scm_divide, scm_asinh, scm_acosh)
10558 (scm_atanh, scm_truncate, scm_round, scm_exact_to_inexact)
10559 (floor, ceiling, $sqrt, $abs, $exp, $log, $sin, $cos, $tan, $asin)
10560 ($acos, $atan, $sinh, $cosh, $tanh, scm_real_part, scm_imag_part)
10561 (scm_magnitude, scm_angle, scm_abs, scm_quotient, scm_remainder)
10562 (scm_modulo, scm_gcd, scm_lcm): Added (future docstring) comments.
10563
10564 2001-02-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
10565
10566 * __scm.h (SCM_ASSERT_TYPE): Add missing macro parameter.
10567 (Obviously nobody compiles with SCM_RECKLESS defined...)
10568
10569 * validate.h (SCM_ASSERT_RANGE): Use the argument number.
10570
10571 2001-02-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
10572
10573 * ports.c, ports.h (scm_c_read, scm_c_write): New functions.
10574
10575 * ports.h (SCM_READ_BUFFER_EMPTY_P): New macro.
10576
10577 2001-02-24 Neil Jerram <neil@ossau.uklinux.net>
10578
10579 * numbers.c (scm_two_doubles, scm_sys_expt, scm_sys_atan2,
10580 scm_make_polar): Rename arguments `z1' and `z2' to `x' and `y',
10581 since use of `z' suggests that the arguments may be complex.
10582
10583 * goops.c (scm_make), numbers.c (scm_sys_expt): Fix docstring
10584 typos.
10585
10586 2001-02-23 Neil Jerram <neil@ossau.uklinux.net>
10587
10588 * dump.c (scm_binary_write, scm_binary_read), eval.c
10589 (scm_primitive_eval), guardians.c (scm_guardian_destroyed_p,
10590 scm_guardian_greedy_p, scm_make_guardian), fports.c
10591 (scm_file_port_p): Minor docstring fixes.
10592
10593 2001-02-22 Marius Vollmer <mvo@zagadka.ping.de>
10594
10595 * load.c (load): Use scm_primitive_eval_x instead of scm_i_eval_x.
10596
10597 * goops.c (scm_add_method, DEFVAR): Use scm_eval instead of
10598 scm_i_eval.
10599 (make_class_from_template): Do not bother to set the current
10600 module around the call to DEFVAR, scm_eval takes care of that.
10601 (scm_init_goops): Make scm_module_goops and
10602 scm_goops_lookup_closure permanent objects.
10603
10604 * eval.c (scm_ceval, scm_deval): When evaluating expressions on
10605 top level, create a fresh top-level environment for each
10606 expression instead of mutating the exisint frame. This is
10607 important when that frame is closed over.
10608
10609 * numbers.c (s_scm_logior) [SCM_DIGSTOOBIG]: Also use
10610 SCM_DIGSPERLONG instead of DIGSPERLONG.
10611
10612 2001-02-21 Marius Vollmer <mvo@zagadka.ping.de>
10613
10614 * eval.c (scm_ceval, scm_deval): Check for wrong number of args
10615 before applying arrow procedure in `cond' and before applying
10616 receiver procedure in call-with-current-continuation.
10617 (scm_i_eval): Do not invoke scm_copy_tree in argument in SCM_XEVAL
10618 macro. The argument is expanded more than one time.
10619
10620 * numbers.c (scm_logior) [SCM_DIGSTOOBIG]: Correctly use
10621 SCM_BIGDIG instead of BIGDIG. Thanks to Steven G. Johnson!
10622
10623 2001-02-20 Marius Vollmer <mvo@zagadka.ping.de>
10624
10625 * guile-doc-snarf.in, guile-func-name-check.in: Added copyright
10626 notice and license.
10627
10628 2001-02-17 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10629
10630 * variable.c (scm_make_variable, scm_make_undefined_variable)
10631 (scm_variable_ref, scm_variable_set_x, scm_builtin_variable)
10632 (scm_variable_bound_p), values.c (scm_values)
10633 (scm_call_with_values), unif.c (scm_bit_count)
10634 (scm_bit_set_star_x), symbols.c (scm_gentemp)
10635 (scm_gensym), strings.c (scm_string_p, scm_make_string)
10636 (scm_read_only_string_p, scm_string_length, scm_string_ref)
10637 (scm_string_set_x, scm_substring, scm_string_append), stime.c
10638 (scm_strptime, scm_mktime), random.c (scm_seed_to_random_state)
10639 (scm_copy_random_state, scm_random), print.c (scm_newline)
10640 (scm_write_char, scm_simple_format), debug-malloc.c
10641 (scm_malloc_stats), environments.c (scm_environment_p)
10642 (scm_environment_bound_p, scm_environment_ref)
10643 (scm_environment_fold, scm_environment_define)
10644 (scm_environment_undefine, scm_environment_set_x)
10645 (scm_environment_cell, scm_environment_observe)
10646 (scm_environment_observe_weak, scm_environment_unobserve)
10647 (scm_make_eval_environment, scm_eval_environment_p)
10648 (scm_eval_environment_set_local_x, scm_eval_environment_local)
10649 (scm_eval_environment_imported)
10650 (scm_eval_environment_set_imported_x, scm_make_import_environment)
10651 (scm_import_environment_p, scm_import_environment_imports)
10652 (scm_import_environment_set_imports_x, scm_make_export_environment)
10653 (scm_export_environment_p, scm_export_environment_private)
10654 (scm_export_environment_set_private_x)
10655 (scm_export_environment_signature)
10656 (scm_export_environment_set_signature_x, scm_leaf_environment_p):
10657 Added texinfo markup.
10658
10659 * ports.c (scm_drain_input): Lowercased argument to @var.
10660 (scm_current_input_port, scm_current_output_port): Filled in
10661 missing explanation.
10662 (scm_current_load_port, scm_set_current_output_port)
10663 (scm_set_current_error_port, scm_port_line, scm_set_port_line_x):
10664 Added texinfo markup.
10665
10666 * arbiters.c (scm_make_arbiter, scm_try_arbiter)
10667 (scm_release_arbiter): Added texinfo markup to docstrings.
10668 Changed `Returns' to `Return'.
10669 (arbiter_print): Changed SCM_CDR to SCM_SMOB_DATA.
10670
10671 2001-02-16 Neil Jerram <neil@ossau.uklinux.net>
10672
10673 * guile-snarf.awk.in: Quote any `@'s that occur in Scheme names,
10674 by doubling them to `@@'.
10675
10676 2001-02-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10677
10678 * numbers.c (scm_lognot), random.c (scm_random,
10679 scm_random_normal, scm_random_solid_sphere_x,
10680 scm_random_hollow_sphere_x, scm_random_normal_vector_x,
10681 scm_random_exp), dynwind.c
10682 (scm_dynamic_wind): Removed unnecessary "" from docstrings.
10683
10684 * goops.c (scm_sys_initialize_object, scm_instance_p,
10685 scm_class_name, scm_class_precedence_list, scm_class_slots,
10686 scm_class_environment, scm_generic_function_name,
10687 scm_generic_function_methods, scm_method_generic_function,
10688 scm_method_specializers, scm_method_procedure, scm_make_unbound,
10689 scm_unbound_p, scm_assert_bound, scm_at_assert_bound_ref,
10690 scm_sys_fast_slot_ref, scm_sys_fast_slot_set_x, scm_slot_ref,
10691 scm_slot_set_x, _scm_slot_bound_p, scm_slots_exists_p,
10692 scm_sys_allocate_instance, scm_make, scm_pure_generic_p,
10693 scm_class_direct_supers, scm_class_direct_slots,
10694 scm_class_direct_subclasses, scm_class_direct_methods,
10695 scm_accessor_method_slot_definition, scm_sys_goops_loaded),
10696 debug.c (scm_with_traps, scm_memoized_p, scm_make_gloc,
10697 scm_gloc_p, scm_make_iloc, scm_iloc_p, scm_memcons,
10698 scm_mem_to_proc, scm_proc_to_mem, scm_unmemoize,
10699 scm_memoized_environment, scm_procedure_name,
10700 scm_procedure_source, scm_procedure_environment, scm_debug_hang),
10701 objects.c
10702 (scm_class_of, scm_entity_p, scm_operator_p,
10703 scm_set_object_procedure_x, scm_object_procedure,
10704 scm_make_class_object), hooks.c (scm_make_hook_with_name,
10705 scm_make_hook, scm_hook_p, scm_hook_empty_p, scm_add_hook_x,
10706 scm_remove_hook_x, scm_reset_hook_x, scm_run_hook,
10707 scm_hook_to_list), lang.c
10708 (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null, scm_nil_eq),
10709 numbers.c (scm_sys_expt, scm_sys_atan2), print.c
10710 (scm_print_options, scm_port_with_print_state,
10711 scm_get_print_state), procs.c (scm_make_cclo, scm_procedure_p,
10712 scm_closure_p, scm_thunk_p, scm_procedure_with_setter_p,
10713 scm_make_procedure_with_setter, scm_procedure), throw.c
10714 (scm_lazy_catch), modules.c (scm_standard_eval_closure), load.c
10715 (scm_parse_path, scm_search_path), stacks.c (scm_make_stack,
10716 scm_stack_ref, scm_stack_length, scm_frame_p,
10717 scm_last_stack_frame, scm_frame_number, scm_frame_source,
10718 scm_frame_procedure, scm_frame_arguments, scm_frame_previous,
10719 scm_frame_next, scm_frame_real_p, scm_frame_procedure_p,
10720 scm_frame_evaluating_args_p, scm_frame_overflow_p), filesys.c
10721 (scm_dirname, scm_basename), dynwind.c
10722 (scm_wind_chain), read.c (scm_read_options, scm_read,
10723 scm_read_hash_extend), gc.c
10724 (scm_unhash_name), eval.c (scm_eval_options_interface,
10725 scm_evaluator_traps, s_scm_nconc2last), backtrace.c
10726 (scm_display_error, scm_set_print_params_x,
10727 scm_display_application, scm_display_backtrace, scm_backtrace),
10728 async.c (scm_async, scm_system_async, scm_async_mark,
10729 scm_system_async_mark, scm_run_asyncs, scm_noop,
10730 scm_set_tick_rate, scm_set_switch_rate, scm_unmask_signals,
10731 scm_mask_signals): Added docstrings.
10732
10733 2001-02-15 Keisuke Nishida <kxn30@po.cwru.edu>
10734
10735 * dump.c (scm_undump): Use SCM_CARLOC/SCM_CDRLOC to obtain the
10736 address of car/cdr. (Thanks to Dirk Herrmann)
10737 Use scm_sizet to obtain the length of strings.
10738 (Thanks to Matthias Koeppe)
10739
10740 2001-02-15 Marius Vollmer <mvo@zagadka.ping.de>
10741
10742 * symbols.c (scm_mem2symbol): Put a empty statement after the
10743 next_symbol label. This is mandated by ANSI, appearantly.
10744
10745 2001-02-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
10746
10747 * gc_os_dep.c: Do not include <linux/version.h>. It makes no
10748 sense to compile for a specific kernel version. Do not include
10749 <asm/signal.h> while defining __KERNEL__. This hack should no
10750 longer be needed and caused problems.
10751
10752 2001-02-13 Marius Vollmer <mvo@zagadka.ping.de>
10753
10754 * eval.c (scm_ceval, scm_deval): use `SIDEVAL' instead of
10755 SCM_CEVAL when evaluating subforms of `begin' forms. SCM_CEVAL
10756 can not deal with immediates.
10757
10758 2001-02-12 Keisuke Nishida <kxn30@po.cwru.edu>
10759
10760 * list.c (scm_list_copy): Validate the first argument.
10761
10762 2001-02-11 Marius Vollmer <mvo@zagadka.ping.de>
10763
10764 Fix evaluator so that top-level expressions are correctly
10765 evaluated with respect to the module system.
10766
10767 * modules.h. modules.c (scm_current_module_lookup_closure): New
10768 function.
10769
10770 * eval.h (scm_primitive_eval, scm_primitive_eval_x): New
10771 prototypes.
10772 (scm_i_eval, scm_i_eval_x, scm_eval, scm_eval_x): Changed argument
10773 names to better reflect their meaning.
10774
10775 * eval.c (scm_ceval, scm_deval): Recognize when `begin' is being
10776 evaluated at top-level and synronize lookup closure before
10777 executing every subform.
10778 (scm_primitve_eval_x, scm_primitive_eval): New functions.
10779 (scm_eval_x, scm_eval): Reimplement in terms of
10780 scm_primitive_eval_x and scm_primitive_eval, respectively.
10781
10782 2001-02-09 Marius Vollmer <mvo@zagadka.ping.de>
10783
10784 * macros.c (scm_macro_name, scm_macro_transformer): Use
10785 SCM_SMOB_DATA instead of SCM_CDR. Provided by Martin Grabmueller.
10786 Thanks!
10787
10788 2001-02-10 Keisuke Nishida <kxn30@po.cwru.edu>
10789
10790 * dump.c (scm_store_bytes): Store data size before data.
10791 (scm_restore_bytes): Restore data size. Takes a pointer to size.
10792 * dump.h (scm_restore_bytes): Updated.
10793
10794 2001-02-09 Keisuke Nishida <kxn30@po.cwru.edu>
10795
10796 * dump.c: Use double cells for update schedule.
10797
10798 2001-02-08 Keisuke Nishida <kxn30@po.cwru.edu>
10799
10800 * ports.c (scm_unread_char): Take an optional argument.
10801
10802 2001-02-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
10803
10804 * modules.h (scm_selected_module, scm_current_module): Renamed
10805 scm_selected_module to scm_current_module to synchronize Scheme
10806 and C names.
10807 (scm_select_module, scm_set_current_module): Likewise. Changed
10808 all uses.
10809
10810 * ports.c (scm_port_for_each): Make a snapshot of the port table
10811 before iterating over it. The table might change while the user
10812 code is running. With the snapshot, the user can depend on the
10813 fact that each port that existed at the start of the iteration is
10814 encountered exactly once. (ice-9 popen) depends on this.
10815
10816 2001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
10817
10818 * strings.h (SCM_STRING_MAX_LENGTH): New macro.
10819
10820 * strings.c (scm_makstr, scm_take_str, scm_make_string): Added
10821 range checking for the size parameter. Thanks to Martin
10822 Grabmueller for the hint.
10823
10824 (scm_makstr): Reordered string initialization to make interrupt
10825 deferring unnecessary.
10826
10827 * vectors.c (scm_make_vector): Fixed range checking.
10828
10829 2001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
10830
10831 * vectors.h (SCM_VECTOR_MAX_LENGTH): New macro.
10832
10833 * vectors.c (scm_make_vector, scm_c_make_vector): Improved the
10834 checking of the size parameter for type correctness and valid
10835 range. Thanks to Rob Browning for reporting the problem. Instead
10836 of deferring interrupts, scm_remember_upto_here_1 is used.
10837
10838 2001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
10839
10840 * dump.c (scm_store_cell_object, scm_restore_cell_object): Removed.
10841 (scm_dump_cell_update): Removed.
10842 (scm_dump_update): Renamed from scm_dump_object_update.
10843 (scm_restore_string, scm_restore_bytes, scm_restore_word): Takes
10844 a pointer instead of returning a value.
10845 * keywords.c (keyword_undump): Updated.
10846
10847 2001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
10848
10849 * dump.c, dump.h: Modified a lot.
10850 (SCM_DUMP_COOKIE): Version 0.1
10851 (scm_dump_mark): Removed.
10852 (scm_restore_cell_object, scm_store_cell_object): New functions.
10853
10854 * smob.h (scm_smob_descriptor): Removed slots: dump_mark,
10855 dump_dealloc, dump_store, undump_alloc, undump_restore, undump_init.
10856 New slots: dump, undump.
10857 * smob.c (scm_make_smob_type, scm_set_smob_dump, scm_set_smob_undump):
10858 Updated.
10859
10860 * keywords.c (keyword_dump): Renamed from keyword_dealloc.
10861 (keyword_undump): Renamed from keyword_alloc.
10862 (scm_init_keywords): Set keyword_dump and keyword_undump.
10863
10864 2001-02-03 Michael Livshin <mlivshin@bigfoot.com>
10865
10866 * gc.c (DOUBLECELL_ALIGNED_P): new macro, a better-named analog of
10867 the deprecated SCM_DOUBLE_CELLP.
10868
10869 * tags.h (SCM_DOUBLE_CELLP): deprecated.
10870
10871 2001-02-02 Keisuke Nishida <kxn30@po.cwru.edu>
10872
10873 * dump.c, dump.h: New files.
10874 * Makefile.am: Added dump.c, dump.h, dump.x, dump.doc.
10875 * init.c: #include "libguile/dump.h".
10876 (scm_init_guile_1): Call scm_init_dump.
10877 * smob.h (scm_smob_descriptor): New slots: dump_mark,
10878 dump_dealloc, dump_store, undump_alloc, undump_restore,
10879 undump_init.
10880 * smob.c (scm_make_smob_type): Init the new slots.
10881 (scm_set_smob_dump, scm_set_smob_undump): New functions.
10882 * smob.h (scm_set_smob_dump, scm_set_smob_undump): Declared.
10883
10884 * keywords.c: #include "libguile/dump.h".
10885 (keyword_dealloc, keyword_alloc): New functions.
10886 (scm_init_keywords): Set smob_dump and smob_undump.
10887
10888 2001-02-01 Keisuke Nishida <kxn30@po.cwru.edu>
10889
10890 * vectors.c (scm_c_make_vector): New function.
10891 * vectors.h (scm_c_make_vector): Declared.
10892 * eval.c (scm_copy_tree), filesys.c (scm_stat2scm), fluids.c
10893 (scm_make_initial_fluids, grow_fluids), gc.c (scm_init_storage),
10894 gh_data.c (gh_ints2scm, gh_doubles2scm): goops.c
10895 (scm_make_method_cache, scm_i_vector2list,
10896 scm_compute_applicable_methods, scm_sys_method_more_specific_p),
10897 init.c (start_stack), net_db.c (scm_gethost, scm_getnet,
10898 scm_getproto, scm_return_entry), posix.c (scm_getgroups,
10899 scm_getpwuid, scm_getgrgid, scm_uname), print.c (make_print_state,
10900 grow_ref_stack), regex-posix.c (scm_regexp_exec), scmsigs.c
10901 (scm_init_scmsigs), socket.c (scm_addr_vector, scm_addr_vector),
10902 stime.c (scm_times, filltime), unif.c (scm_make_uve), vectors.c
10903 (scm_vector, scm_make_vector): Use scm_c_make_vector.
10904
10905 * hashtab.c (scm_c_make_hash_table): New function.
10906 * hashtab.h (scm_c_make_hash_table): Declared.
10907 * environments.c (scm_make_leaf_environment,
10908 scm_make_eval_environment), gc.c (scm_init_storage),
10909 keywords.c (scm_init_keywords), symbols.c (scm_builtin_bindings):
10910 Use scm_c_make_hash_table.
10911
10912 2001-01-31 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
10913
10914 * unif.c (rapr1): Don't apply scm_uniform_vector_length on arrays.
10915
10916 2001-01-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10917
10918 * struct.c (scm_make_vtable_vtable): Removed unnecessary "" from
10919 end of docstring.
10920
10921 * struct.c (scm_struct_set_x, scm_struct_vtable_tag,
10922 scm_struct_vtable_name, scm_set_struct_vtable_name_x), weaks.c
10923 (scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table,
10924 scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
10925 srcprop.c (scm_source_properties, scm_set_source_properties_x,
10926 scm_source_property, scm_set_source_property_x), sort.c
10927 (scm_sort_list_x, scm_restricted_vector_sort_x, scm_sorted_p,
10928 scm_merge, scm_merge_x, scm_sort_x, scm_sort, scm_stable_sort_x,
10929 scm_stable_sort, scm_sort_list_x, scm_sort_list): Added
10930 docstrings.
10931
10932 2001-01-29 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
10933
10934 * eval.c (SCM_APPLY): Check that primitives which take 1 arg
10935 really get that arg.
10936
10937 2001-01-26 Keisuke Nishida <kxn30@po.cwru.edu>
10938
10939 * goops.c (s_scm_get_keyword): Bug fix.
10940
10941 2001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
10942
10943 The following patch was sent by Martin Grabmueller. It makes sure
10944 that in case of parameter errors the correct function name is
10945 shown, and that parameter types are only checked once.
10946
10947 * strop.c (string_copy, string_upcase_x, string_downcase_x,
10948 string_capitalize_x): New functions. Each one performs the core
10949 functionality of the corresponding scm_* function.
10950
10951 (scm_string_copy, scm_string_upcase_x, scm_string_upcase,
10952 scm_string_downcase_x, scm_string_downcase,
10953 scm_string_capitalize_x, scm_string_capitalize): Reduced to
10954 parameter checking wrappers of the above functions.
10955
10956 2001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
10957
10958 * continuations.c, dynl.c, keywords.c, load.c: Include
10959 strings.h. Thanks to Bill Schottstaedt for the bug report.
10960
10961 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
10962
10963 * backtrace.c (display_header): Make sure that line and column
10964 information is shown independent of whether the port the code was
10965 read from had an associated filename. Thanks to Martin
10966 Grabmueller for providing this patch.
10967
10968 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
10969
10970 * fports.[ch] (scm_file_port_p): New primitive.
10971
10972 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
10973
10974 * tags.h (scm_tc16_fport, scm_tc16_strport, scm_tc16_sfport):
10975 These are now defined in fports.c, strports.c and vports.c.
10976
10977 * fports.[ch] (scm_tc16_fport), strports.c (scm_tc16_strport),
10978 vports.c (scm_tc16_sfport): Made variables (were macros defined in
10979 tags.h).
10980
10981 fports.c (scm_make_fptob), strports.c (scm_make_stptob), vports.c
10982 (scm_make_sfptob): Made static. These return a type code now.
10983
10984 fports.c (scm_init_fports), strports.c (scm_init_strports),
10985 vports.c (scm_init_vports): Create the corresponding port types.
10986
10987 * fports.h (SCM_FPORTP, SCM_OPFPORTP, SCM_OPINFPORTP,
10988 SCM_OPOUTFPORTP): Redefined in terms of scm_tc16_fport.
10989
10990 * init.c (scm_init_guile_1): Make sure strports are initialized
10991 before gdbint.
10992
10993 * ports.[ch] (scm_make_port_type): Changed the return type to
10994 scm_bits_t.
10995
10996 * ports.c (scm_ports_prehistory): Don't create any port types
10997 here.
10998
10999 * posix.c (scm_ttyname): Use SCM_FPORTP instead of comparing
11000 against scm_tc16_fport directly.
11001
11002 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
11003
11004 * srcprop.c (scm_set_source_property_x): Fix to handle
11005 (set-source-property! <obj> 'copy <datum>) correctly.
11006
11007 2001-01-24 Gary Houston <ghouston@arglist.com>
11008
11009 * filesys.c (scm_link): docstring fix.
11010 * fports.h (scm_setfileno): obsolete declaration removed.
11011 * posix.c: bogus popen declaration removed.
11012
11013 * rdelim.c: new file, split from ioext.c.
11014 * rdelim.h: new file, split from ioext.h
11015 * Makefile.am: add rdelim.c and related files.
11016 * init.c: call scm_init_rdelim. include rdelim.h.
11017
11018 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
11019
11020 This patch was sent by Martin Grabmueller and makes sure that
11021 parameter errors are reported correctly by the lexicographic
11022 ordering predicates.
11023
11024 * strorder.c (string_less_p, string_ci_less_p): New functions.
11025
11026 (scm_string_less_p, scm_string_ci_less_p): Extracted the core
11027 functionality into string_less_p, string_ci_less_p respectively.
11028 The remaining code is just a wrapper to do the parameter
11029 checking.
11030
11031 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p): Check the
11032 parameters and call string_less_p instead of scm_string_less_p.
11033
11034 (scm_string_ci_leq_p, scm_string_ci_gr_p, scm_string_ci_geq_p):
11035 Check the parameters and call string_less_ci_p instead of
11036 scm_string_ci_less_p.
11037
11038 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
11039
11040 This patch modifies scm_display_error to perform parameter
11041 checking. Thanks to Neil Jerram for the bug report.
11042
11043 * backtrace.[ch] (scm_i_display_error): New function.
11044
11045 * backtrace.c (scm_display_error): Added parameter check and
11046 extracted the core functionality into function
11047 scm_i_display_error.
11048
11049 * throw.c (handler_message): Call scm_i_display_error to display
11050 the error message.
11051
11052 2001-01-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
11053
11054 * eval.c (SCM_APPLY): Added # args check for application of
11055 procedures with arity 3. (Thanks to Anders Holst.)
11056
11057 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
11058
11059 * filesys.h (SCM_DIR_FLAG_OPEN, SCM_DIR_OPEN_P): Added.
11060
11061 (SCM_OPDIRP): Deprecated.
11062
11063 * filesys.c (scm_opendir): Use SCM_DIR_FLAG_OPEN instead of
11064 SCM_OPN.
11065
11066 (scm_readdir, scm_rewinddir): Don't use SCM_VALIDATE_OPDIR.
11067 Instead, give an explicit error message in case the directory is
11068 closed.
11069
11070 (scm_closedir, scm_dir_print): Rewritten to use SCM_DIR_OPEN_P
11071 instead of SCM_OPENP and SCM_CLOSEDP.
11072
11073 * validate.h (SCM_VALIDATE_OPDIR): Deprecated.
11074
11075 2001-01-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
11076
11077 * eval.c (inner_eval, scm_eval): Move all real functionality into
11078 inner_eval. Avoid to copy the expression twice by inlining some
11079 code from scm_i_eval.
11080
11081 2001-01-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
11082
11083 * eval.c (scm_m_case): The 'else' clause of a 'case' statement
11084 now has to be the last clause, as required by R5RS. Thanks to
11085 Martin Grabmueller for the patch.
11086
11087 2001-01-18 Gary Houston <ghouston@arglist.com>
11088
11089 * ioext.c: further simplify scm_read_string_x_partial by defining
11090 a macro SCM_EBLOCK.
11091
11092 2001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
11093
11094 * gh_data.c (gh_ints2scm): Simplified using SCM_FIXABLE.
11095
11096 2001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
11097
11098 * __scm.h: Added comment about architecture and compiler
11099 properties that are required by guile.
11100
11101 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
11102 SCM_MOST_NEGATIVE_FIXNUM): Moved to numbers.h.
11103
11104 (SCM_CHAR_BIT, SCM_LONG_BIT): Moved here from numbers.h.
11105
11106 * numbers.h (SCM_CHAR_BIT, SCM_LONG_BIT): Moved to __scm.h.
11107
11108 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
11109 SCM_MOST_NEGATIVE_FIXNUM): Moved here from __scm.h.
11110
11111 2001-01-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
11112
11113 * __scm.h (SCM_FIXNUM_BIT): Added. The name is chosen in analogy
11114 to the names in limits.h.
11115
11116 * numbers.c (abs_most_negative_fixnum): Added.
11117
11118 (scm_quotient, scm_remainder): Fixed the fixnum-min / (abs
11119 fixnum-min) special case.
11120
11121 (scm_big_and): Fix for negative first parameter.
11122
11123 (scm_bit_extract): Fix for fixnum paramters.
11124 Thanks to Rob Browning for the bug report.
11125
11126 (scm_init_numbers): Initialize abs_most_negative_fixnum.
11127
11128 2001-01-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
11129
11130 * symbols.c (scm_symbol_bound_p): Fixed comment.
11131 Thanks to Chris Cramer.
11132
11133 2001-01-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
11134
11135 * smob.[ch] (scm_make_smob_type): Return type is scm_bits_t now.
11136 Thanks to Bill Schottstaedt.
11137
11138 2001-01-11 Michael Livshin <mlivshin@bigfoot.com>
11139
11140 from Matthias Köppe:
11141
11142 * objects.h (SCM_SET_ENTITY_SETTER): new macro. SCM_ENTITY_SETTER
11143 casts its result, so doesn't yield an lvalue per ANSI C.
11144
11145 * goops.c (s_scm_sys_set_object_setter_x): use
11146 SCM_SET_ENTITY_SETTER.
11147 (clear_method_cache): use SCM_SET_ENTITY_PROCEDURE.
11148
11149 * gc.h (SCM_GC_SET_CARD_BVEC): new macro. SCM_GC_CARD_BVEC casts
11150 its result, so doesn't yield an lvalue per ANSI C.
11151 (SCM_GC_SET_CARD_FLAGS): ditto for SCM_GC_GET_CARD_FLAGS.
11152 (SCM_GC_CLR_CARD_FLAGS): redefined in terms of
11153 SCM_GC_SET_CARD_FLAGS.
11154 (SCM_GC_SET_CARD_FLAG, SCM_GC_CLR_CARD_FLAGS): ditto.
11155
11156 * gc.c (INIT_CARD): use the explicit setter macro to set the bvec.
11157
11158 2001-01-08 Gary Houston <ghouston@arglist.com>
11159
11160 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): new macro.
11161 * ioext.c (scm_read_string_x_partial, scm_read_delimited_x),
11162 socket.c (scm_recvfrom): use the new macro, plus minor docstring
11163 changes.
11164 * ioext.c (scm_read_string_x_partial): don't crash if -1 is supplied
11165 for fdes. if current input port is used, check that it's a file
11166 port.
11167
11168 2001-01-06 Gary Houston <ghouston@arglist.com>
11169
11170 * ioext.c (scm_read_string_x_partial): new procedure, implements
11171 read-string!/partial.
11172 * ports.c (scm_take_from_input_buffers): new procedure used by
11173 scm_read_string_x_partial.
11174 (scm_drain_input): use scm_take_from_input_buffers.
11175
11176 2001-01-06 Marius Vollmer <mvo@zagadka.ping.de>
11177
11178 * validate.h (SCM_VALIDATE_NUMBER): New.
11179
11180 2001-01-03 Michael Livshin <mlivshin@bigfoot.com>
11181
11182 * guardians.c (F_GREEDY, F_LISTED, F_DESTROYED, GREEDY_P,
11183 SET_GREEDY, LISTED_P, SET_LISTED, CLR_LISTED, DESTROYED_P,
11184 SET_DESTROYED): new defines/macros.
11185 (GUARDIAN_LIVE, GUARDIAN_ZOMBIES, GUARDIAN_NEXT): deleted.
11186 (add_to_live_list): takes a `guardian_t *' now, not SCM.
11187 (guardian_print): print more info.
11188 (guardian_apply): check if the guardian is destroyed, and throw an
11189 error if so. take one more optional argument `throw_p'.
11190 (scm_guard): depending on the value of `throw_p', return a boolean
11191 result.
11192 (scm_get_one_zombie): remove redundant property test.
11193 (guardian_t): represent the various (currently 3, I hope nothing
11194 more gets added) boolean fields as bit flags.
11195 (scm_guardian_destroyed_p, scm_guardian_greedy_p): new predicates.
11196 (scm_destroy_guardian_x): new procedure.
11197
11198 * guardians.h: added prototypes for `scm_guardian_greedy_p' and
11199 `scm_guardian_destroyed_p'. changed prototype for `scm_guard'.
11200
11201 2001-01-01 Gary Houston <ghouston@arglist.com>
11202
11203 * fports.c (fport_write): bugfix: handle short writes for
11204 unbuffered ports too. optimize the buffered case by minimizing
11205 the number of write/flush calls.
11206 (write_all): new helper procedure.
11207
11208 The ChangeLog continues in the file: "ChangeLog-2000"