Fixed a typo/bug in `make-doubly-weak-alist-vector'.
[bpt/guile.git] / libguile / ChangeLog
1 2006-09-20 Ludovic Courtès <ludovic.courtes@laas.fr>
2
3 * srfi-14.c: Include <config.h>. Define `_GNU_SOURCE'.
4 (make_predset, define_predset, make_strset, define_strset, false,
5 true): Removed.
6 (SCM_CHARSET_UNSET, CSET_BLANK_PRED, CSET_SYMBOL_PRED,
7 CSET_PUNCT_PRED, CSET_LOWER_PRED, CSET_UPPER_PRED,
8 CSET_LETTER_PRED, CSET_DIGIT_PRED, CSET_WHITESPACE_PRED,
9 CSET_CONTROL_PRED, CSET_HEX_DIGIT_PRED, CSET_ASCII_PRED,
10 CSET_LETTER_AND_DIGIT_PRED, CSET_GRAPHIC_PRED, CSET_PRINTING_PRED,
11 CSET_TRUE_PRED, CSET_FALSE_PRED, UPDATE_CSET): New macros.
12 (define_charset, scm_srfi_14_compute_char_sets): New functions.
13 (scm_init_srfi_14): Use `define_charset ()' instead of
14 `define_predset ()' and `define_strset ()'.
15
16 * srfi-14.h (scm_c_init_srfi_14): Removed.
17 (scm_srfi_14_compute_char_sets): New declaration.
18
19 * posix.h: Include "srfi-14.h".
20 (scm_setlocale): Invoke `scm_srfi_14_compute_char_sets ()' after a
21 successful `setlocale ()' call.
22
23 2006-08-31 Rob Browning <rlb@defaultvalue.org>
24
25 * ports.c (scm_c_port_for_each): Add a
26 scm_remember_upto_here_1(ports) at the end of the function to fix
27 a GC bug.
28
29 2006-08-28 Neil Jerram <neil@ossau.uklinux.net>
30
31 * backtrace.c (scm_display_backtrace_with_highlights): Minor
32 improvements to docstring.
33 (scm_backtrace_with_highlights): Analogous improvements.
34
35 2006-08-11 Neil Jerram <neil@ossau.uklinux.net>
36
37 * stacks.c (scm_last_stack_frame): Correct docstring (returns a
38 frame, not a stack).
39
40 2006-07-18 Rob Browning <rlb@defaultvalue.org>
41
42 * continuations.c: Add __attribute__ ((returns_twice)) to the
43 ia64_getcontext prototype so that gcc will make the right
44 arrangements and avoid an illegal instruction during
45 call-with-current-continuation.
46
47 2006-07-12 Ludovic Courtès <ludovic.courtes@laas.fr>
48
49 * numbers.c (guile_ieee_init): Use regular ANSI C casts rather
50 than C++-style `X_CAST ()'. Patch posted by by Mike Gran.
51
52 2006-06-13 Ludovic Courtès <ludovic.courtes@laas.fr>
53
54 * eq.c: Include "struct.h", "goops.h" and "objects.h".
55 (scm_equal_p): Invoke `scm_i_struct_equalp ()' on structures that
56 are not GOOPS instances.
57 * struct.c: Include "eq.h".
58 (scm_free_structs): Use `SCM_STRUCT_VTABLE_DATA ()' instead of
59 hand-written code.
60 (scm_i_struct_equalp): New.
61 * struct.h (scm_i_struct_equalp): New declaration.
62
63 2006-06-06 Kevin Ryde <user42@zip.com.au>
64
65 * Makefile.am (BUILT_SOURCES): Remove guile.texi, only used by
66 maintainers (with doc/maint/docstring.el). Fixes parallel "make -j2"
67 reported by Mattias Holm.
68
69 2006-06-03 Kevin Ryde <user42@zip.com.au>
70
71 * read.c (s_vector): Conditionalize on SCM_ENABLE_ELISP, to avoid
72 unused variable warning when elisp disabled. Reported by Ryan
73 VanderBijl.
74
75 * throw.c (scm_handle_by_message): Add dummy return value to avoid
76 compiler warning on cygwin. Reported by Ryan VanderBijl.
77
78 * Makefile.am (EXTRA_DOT_X_FILES): Typo in dependency rule, was a
79 duplicate of EXTRA_DOT_DOC_FILES.
80 (DOT_X_FILES, EXTRA_DOT_X_FILES, DOT_DOC_FILES, EXTRA_DOT_DOC_FILES):
81 Add scmconfig.h to dependencies, since these all run cpp. Helps a
82 parallel "make -j2". Reported by Mattias Holm.
83
84 2006-05-30 Kevin Ryde <user42@zip.com.au>
85
86 * ports.c, ports.h (scm_set_port_mark, scm_set_port_free,
87 scm_set_port_print, scm_set_port_equalp, scm_set_port_flush,
88 scm_set_port_end_input, scm_set_port_close, scm_set_port_seek,
89 scm_set_port_truncate, scm_set_port_input_waiting): Use scm_t_bits for
90 port type descriptor, same as scm_make_port_type return value.
91
92 2006-05-30 Marius Vollmer <mvo@zagadka.de>
93
94 * eq.c (scm_equal_p): Use scm_array_equal_p explicitely when one
95 of the arguments is a array. This allows vectors to be equal to
96 one-dimensional arrays.
97
98 2006-05-29 Marius Vollmer <mvo@zagadka.de>
99
100 * throw.c (scm_ithrow): When looking for the jmpbuf, first test
101 that we have a pair before accessing its cdr. Thanks to Bill
102 Schottstaedt!
103
104 2006-05-28 Kevin Ryde <user42@zip.com.au>
105
106 * eval.c, filesys.c: Add malloc.h to get alloca() on mingw. Reported
107 by "The Senator".
108
109 2006-05-27 Marius Vollmer <mvo@zagadka.de>
110
111 * srfi-4.c, strings.c: Replace SCM_C_INLINE with
112 SCM_C_INLINE_KEYWORD. Thanks to Mark Gran!
113
114 2006-05-26 Kevin Ryde <user42@zip.com.au>
115
116 * fports.c (fport_input_waiting): For ioctl, check HAVE_IOCTL as well
117 as defined(FIONREAD), since mingw has FIONREAD but not ioctl().
118 Reported by "The Senator".
119 For select and ioctl, move fdes into those conditionals, to avoid
120 unused variable warning when neither of those used.
121
122 2006-05-23 Kevin Ryde <user42@zip.com.au>
123
124 * fports.c: Remove "fwrite" declaration under "! HAVE_UNISTD_H".
125 It's unused and will be in stdio.h anyway (if it's anywhere).
126
127 2006-05-20 Kevin Ryde <user42@zip.com.au>
128
129 * filesys.c (scm_stat2scm): Test #ifdef S_ISLNK directly, rather than
130 HAVE_S_ISLNK from configure (it was only a #ifdef test anyway).
131
132 * posix.c (scm_mknod): Test #ifdef S_IFLNK before using that (for
133 symlink). Probably can't create symlinks with mknod anyway though.
134
135 * inline.h (scm_is_pair): Add a workaround for i386 gcc 2.95 bad code
136 generation.
137
138 2006-05-15 Kevin Ryde <user42@zip.com.au>
139
140 * simpos.c, simpos.h (scm_primitive__exit): New function.
141 (scm_primitive_exit): Update docstring, no longer the best exit after
142 a fork.
143
144 2006-05-09 Kevin Ryde <user42@zip.com.au>
145
146 * numbers.c (scm_i_divide): For big/big wanting inexact, use mpq_get_d
147 rather than converting to doubles, to avoid inf or nan when the inputs
148 are too big for a double but the quotient does fit. This affects
149 conversions exact->inexact of big fractions.
150
151 * filesys.c (scm_open_fdes): Use open64.
152 (scm_init_filesys): Add O_LARGEFILE.
153
154 * ports.c (scm_seek): Use lseek64.
155 (scm_truncate_file): Use ftruncate64.
156
157 2006-05-08 Marius Vollmer <mvo@zagadka.de>
158
159 * private-gc.h (CELL_P): Also check that the potential pointer is
160 correctly aligned for a cell. Thanks to Miroslav Lichvar!
161
162 2006-04-18 Rob Browning <rlb@defaultvalue.org>
163
164 * _scm.h: Add back error if the size of off_t is unknown. The bug
165 was actually in guile-readline's configuration.
166
167 2006-04-18 Kevin Ryde <user42@zip.com.au>
168
169 * posix.c (scm_mkstemp): Update docstring from the manual, in
170 particular file mode 0600 is not guaranteed.
171
172 2006-04-17 Kevin Ryde <user42@zip.com.au>
173
174 * _scm.h (scm_to_off_t, scm_from_off_t): No error if unknown off_t
175 size, to help the guile-readline build where off_t is unused.
176
177 2006-04-16 Kevin Ryde <user42@zip.com.au>
178
179 * filesys.c (scm_stat2scm, scm_stat, scm_lstat): Use stat or stat64.
180 (scm_readdir): Use readdir64.
181 (scm_copy_file): Use open64 and fstat64, to cope with >2Gb files.
182 * ports.c (scm_truncate_file): Use truncate64. Correction truncate
183 and ftruncate take off_t not size_t.
184 * _scm.h (stat_or_stat64 etc): Macros for selecting LFS64 when
185 available.
186
187 2006-04-06 Kevin Ryde <user42@zip.com.au>
188
189 * fports.c (scm_setvbuf): Fix for not _IOLBF, clear SCM_BUFLINE
190 instead of toggling it. Reported by Ludovic Courtès.
191
192 2006-03-26 Marius Vollmer <mvo@zagadka.de>
193
194 * threads.c (get_thread_stack_base): Use scm_get_stack_base
195 instead of accessing __libc_stack_end directly, and only do this
196 when pthread_attr_getstack is known not to work for the main
197 thread or when not using pthreads at all.
198
199 * gc_os_dep.c (scm_get_stack_base): Abort when the machine type is
200 unknown instead of returning NULL.
201
202 2006-03-21 Ludovic Courtès <ludovic.courtes@laas.fr>
203
204 * numbers.c (scm_i_mem2number): Renamed to
205 scm_c_locale_stringn_to_number.
206 * numbers.c, print.c, read.c: Updated callers.
207 * numbers.h: Update function declaration.
208
209 2006-03-11 Neil Jerram <neil@ossau.uklinux.net>
210
211 * unif.c (string_set): Don't return in a void function. (Reported
212 by Mike Gran.)
213
214 * srfi-4.c (scm_uniform_vector_read_x): Declare base as char*
215 rather than void*, so we can do pointer arithmetic on it.
216 (Reported by Mike Gran.)
217 (s_scm_uniform_vector_write): Ditto.
218
219 2006-03-10 Neil Jerram <neil@ossau.uklinux.net>
220
221 * unif.c (scm_make_shared_array): Don't use SCM_I_ARRAY_BASE when
222 oldra is not an array. (Reported by Steve Juranich.)
223
224 * threads.c (do_unlock): Renamed from "unlock", which is defined
225 in unistd.h on QNX. (Reported by Matt Kraai.)
226
227 2006-03-04 Kevin Ryde <user42@zip.com.au>
228
229 * deprecated.c (scm_i_defer_ints_etc): Show SCM_DEFER_INTS in message,
230 not SCM_CRITICAL_SECTION_START.
231
232 * eval.c, posix.c: Change comments from C++ to C style. Reported by
233 Mike Gran.
234
235 2006-02-28 Kevin Ryde <user42@zip.com.au>
236
237 * unif.c (bitvector_set): Use h->writable_elements not h->elements.
238
239 2006-02-26 Kevin Ryde <user42@zip.com.au>
240
241 * filesys.c (scm_readdir): Use fpathconf for the dirent size when
242 NAME_MAX is not available, which is so on Solaris 10. Report and help
243 by Bill Schottstaedt.
244
245 * srfi-13.c (MY_VALIDATE_SUBSTRING_SPEC_UCOPY): New macro.
246 (scm_string_compare, scm_string_compare_ci, scm_string_lt,
247 scm_string_gt, scm_string_le, scm_string_ge, scm_string_ci_lt,
248 scm_string_ci_gt, scm_string_ci_le, scm_string_ci_ge): In comparisons
249 use "unsigned char", not signed char. This ensures comparisons are
250 the same as `char<?' etc, and is also the same as guile 1.6 did.
251 Reported by Sven Hartrumpf.
252
253 2006-02-19 Mikael Djurfeldt <mdj@neurologic.cc>
254
255 * random.c: Test for SCM_HAVE_T_UINT64 instead of
256 SCM_HAVE_T_INT64.
257 (scm_i_uniform32, scm_i_uniform32, scm_i_init_rstate): Use
258 scm_t_uint64 and scm_t_uint32 instead of scm_t_int64 and
259 scm_t_int32.
260
261 2006-01-04 Ludovic Court<E8>s <ludovic.courtes@laas.fr>
262
263 * gc-segment.c (scm_i_sweep_some_cards): Take a SWEEP_STATS
264 argument. Don't refer to SCM_GC_CELLS_COLLECTED and
265 SCM_CELLS_ALLOCATED. If SEG->FIRST_TIME, let CELLS_COLLECTED as zero.
266 Take into account SEG->SPAN when computing CELLS_SWEPT.
267 (scm_i_sweep_segment): Take one more argument, similarly.
268 (scm_i_sweep_all_segments): Likewise.
269 (scm_i_sweep_some_segments): Likewise.
270 (scm_i_adjust_min_yield): Change the way MIN_CELLS is computed: do not
271 refer to SCM_GC_CELLS_COLLECTED.
272
273 * gc-freelist.c (scm_i_adjust_min_yield): Take one more
274 argument, an `scm_i_sweep_statistics' object.
275 Change the way DELTA is collected: don't take into account
276 SCM_GC_CELLS_COLLECTED_1, only SWEEP_STATS.COLLECTED.
277
278 * gc-malloc.c (scm_realloc): Pass an extra argument
279 to `scm_i_sweep_all_segments ()'.
280
281 * gc.c (gc_start_stats): Updated accordingly.
282 (gc_end_stats): Take an additional SWEEP_STATS argument.
283 Decrement SCM_CELLS_ALLOCATED after calls to `scm_i_sweep_* ()'.
284 (scm_gc_for_newcell): Updated callers of `scm_i_sweep_*'.
285 Decrement SCM_CELLS_ALLOCATED.
286 (scm_i_gc): Likewise.
287
288 * private-gc.h (scm_i_sweep_*): Updated function
289 prototypes accordingly.
290 (scm_t_sweep_statistics): New type.
291 (scm_i_sweep_statistics_init): New macro.
292 (scm_i_sweep_statistics_sum): New macro
293
294 2006-02-14 Ludovic Courtès <ludovic.courtes@laas.fr>
295
296 * strings.c (scm_i_take_stringbufn): Register LEN+1 bytes instead of
297 LEN. Without this, too much collectable memory gets unregistered,
298 which results in an underflow of SCM_MALLOCATED in
299 `decrease_mtrigger()'.
300
301 * gc-malloc.c (decrease_mtrigger): Make sure SIZE is lower than or
302 equal to SCM_MALLOCATED.
303
304 2006-02-13 Marius Vollmer <mvo@zagadka.de>
305
306 * eval.c (scm_eval_body): Use scm_i_dynwind_pthread_mutex_lock
307 oinstead of scm_dynwind_pthread_mutex_lock so that it works when
308 configured --without-threads.
309 (SCM_APPLY, CEVAL): Likewise. Thanks to Han-Wen Nienhuys!
310
311 2006-02-12 Marius Vollmer <mvo@zagadka.de>
312
313 * unif.c (scm_dimensions_to_uniform_array): Use the prototype for
314 filling when the fill parameter is omitted, as documented, but
315 turn #\nul into 0 since s8 arrays (signified by a #\nul prototype)
316 can not store characters.
317
318 2006-02-09 Neil Jerram <neil@ossau.uklinux.net>
319
320 * socket.c (scm_c_make_socket_address): Pass address_size pointer
321 on to scm_fill_sockaddr call.
322
323 2006-02-04 Neil Jerram <neil@ossau.uklinux.net>
324
325 * throw.h (scm_c_catch, scm_c_with_throw_handler,
326 scm_catch_with_pre_unwind_handler, scm_with_throw_handler): New.
327
328 * throw.c (SCM_JBPREUNWIND, SCM_SETJBPREUNWIND): New.
329 (struct pre_unwind_data): New, replaces struct lazy_catch.
330 (scm_c_catch): New, replaces scm_internal_catch as the primary
331 catch API for C code; adds pre-unwind handler support.
332 (scm_internal_catch): Now just a wrapper for scm_c_catch, for back
333 compatibility.
334 (tc16_pre_unwind_data, pre_unwind_data_print,
335 make_pre_unwind_data, SCM_PRE_UNWIND_DATA_P): Renamed from
336 "lazy_catch" equivalents.
337 (scm_c_with_throw_handler): New, replaces scm_internal_lazy_catch
338 as the primary C API for a "lazy" catch.
339 (scm_internal_lazy_catch): Now just a wrapper for
340 scm_c_with_throw_handler, for back compatibility.
341 (scm_catch_with_pre_unwind_handler): Renamed from scm_catch; adds
342 pre-unwind handler support.
343 (scm_catch): Now just a wrapper for
344 scm_catch_with_pre_unwind_handler, for back compatibility.
345 (scm_with_throw_handler): New.
346 (scm_lazy_catch): Update comment to say that the handler can
347 return, and what happens if it does.
348 (toggle_pre_unwind_running): New.
349 (scm_ithrow): When identifying the throw target, take running
350 flags into account. In general, change naming of things from
351 "lazy_catch" to "pre_unwind". When throwing to a throw handler,
352 don't unwind the dynamic context first. Add dynwind framing to
353 manage the running flag of a throw handler. If a lazy catch or
354 throw handler returns, rethrow the same exception again. Add
355 pre-unwind support to the normal catch case (SCM_JMPBUFP).
356
357 * root.c (scm_internal_cwdr): Add NULL args to
358 scm_i_with_continuation_barrier call.
359
360 * dynwind.c: Change comment mentioning lazy-catch to mention
361 pre-unwind data and throw handler also.
362
363 * continuations.h (scm_i_with_continuation_barrier): Add
364 pre-unwind handler args.
365
366 * continuations.c (scm_i_with_continuation_barrier): Add
367 pre-unwind handler args, and pass on to scm_c_catch (changed from
368 scm_internal_catch).
369 (c_handler): Remove scm_handle_by_message_noexit call.
370 (scm_c_with_continuation_barrier): Call
371 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
372 as the pre-unwind handler.
373 (scm_handler): Remove scm_handle_by_message_noexit call.
374 (s_scm_with_continuation_barrier): Call
375 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
376 as the pre-unwind handler.
377
378 2006-02-04 Kevin Ryde <user42@zip.com.au>
379
380 * gc-mark.c (scm_mark_all): Fix c99-isms "loops" and "again" variables.
381
382 2006-02-03 Kevin Ryde <user42@zip.com.au>
383
384 * list.c, list.h (scm_list): Restore this function for use from C.
385 It's a complete no-op but in theory might used by someone.
386
387 2006-01-30 Marius Vollmer <mvo@zagadka.de>
388
389 * eval.c (scm_eval_body): Lock source_mutex with a dynwind context
390 so that it gets unlocked in all cases.
391 (SCM_APPLY, CEVAL): Likewise.
392
393 2006-01-29 Marius Vollmer <mvo@zagadka.de>
394
395 * ramap.c: (scm_array_map_x): Don't use scm_array_p, use
396 scm_is_typed_array instead.
397
398 Renamed the "frames" that are related to dynamic-wind to "dynamic
399 contexts. Renamed all functions from scm_frame_ to scm_dynwind_.
400 Updated documentation.
401
402 Disabled "futures":
403
404 * futures.h, futures.c: Wrap whole contents in "#if 0"/"#endif".
405 * eval.c, init.c: Comment out all 'future' related things.
406
407 2006-01-28 Marius Vollmer <mvo@zagadka.de>
408
409 * inline.h, pairs.c (scm_is_pair): Moved scm_is_pair from pairs.c
410 to inline.h to make it inline.
411
412 2005-12-19 Ludovic Courtès <ludovic.courtes@laas.fr>
413
414 * strings.c (scm_i_take_stringbufn): New.
415 (scm_i_c_take_symbol): New.
416 (scm_take_locale_stringn): Use `scm_i_take_stringbufn ()'.
417
418 * strings.h (scm_i_c_take_symbol): New.
419 (scm_i_take_stringbufn): New.
420
421 * symbols.c (lookup_interned_symbol): New function.
422 (scm_i_c_mem2symbol): New function.
423 (scm_i_mem2symbol): Use `lookup_symbol ()'.
424 (scm_from_locale_symbol): Use `scm_i_c_mem2symbol ()'. This avoids
425 creating a new Scheme string.
426 (scm_from_locale_symboln): Likewise.
427 (scm_take_locale_symbol): New.
428 (scm_take_locale_symboln): New.
429
430 * symbols.h (scm_take_locale_symbol): New.
431 (scm_take_locale_symboln): New.
432
433 2006-01-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
434
435 * gc-card.c ("sweep_card"): don't count scm_tc_free_cell for
436 free_count.
437
438 2005-11-29 Han-Wen Nienhuys <hanwen@xs4all.nl>
439
440 * regex-posix.c (s_scm_regexp_exec): list the offending pattern
441 upon error
442
443 2005-12-29 Neil Jerram <neil@ossau.uklinux.net>
444
445 * fluids.c (next_fluid_num): [From Ludovic Courtès:] Don't trigger
446 the GC when allocated_fluids_len is zero.
447
448 2005-12-14 Neil Jerram <neil@ossau.uklinux.net>
449
450 * load.c (the_reader, the_reader_fluid_num): New.
451 (scm_primitive_load): Support custom reader.
452 (scm_init_load): Init the_reader and the_reader_fluid_num; export
453 the_reader as `current-reader'.
454
455 * scmsigs.c (do_read_without_guile): Use the "raw_data" passed in
456 (rather than an uninitialized pointer on the stack).
457
458 2005-12-07 Marius Vollmer <mvo@zagadka.de>
459
460 Reported by Bruce Korb:
461
462 * init.c (invoke_main_func): Don't call exit here. Throws that
463 are only caught by scm_with_guile will bypass us and would cause
464 scm_boot_guile to return erroneously.
465 (scm_boot_guile): Expect scm_with_guile to return and call exit
466 here, passing it an appropriate exit code.
467
468 From Andy Wingo:
469
470 * script.c (scm_find_executable): Compile fix -- fgetc returns an
471 unsigned char cast to an int, or -1 for EOS.
472
473 2005-12-06 Marius Vollmer <mvo@zagadka.de>
474
475 * srfi-4.h, srfi-4.c, srfi-4.i.c (take_uvec): Make BASE pointer
476 non-const.
477 (scm_take_u8vector, etc): Likewise. Thanks to Ludovic Courtès!
478
479 * threads.h, threads.c (scm_t_guile_ticket, scm_leave_guile,
480 scm_enter_guile): Removed from public API. See comment at
481 scm_without_guile for the rationale.
482
483 * scmsigs.c (read_without_guile): New.
484 (signal_delivery_thread): Use it instead of
485 scm_leave_guile/read/scm_enter_guile.
486
487 From Stephen Compall:
488
489 * eval.c (scm_m_cond): Recognize SRFI 61 cond syntax.
490 (CEVAL): Evaluate SRFI 61 cond clauses.
491
492 2005-12-06 Ludovic Courtès <ludovic.courtes@laas.fr>
493
494 * gc-card.c (scm_i_card_statistics): Return if BITVEC is NULL.
495 This was typically hit when running `gc-live-object-stats' right
496 after starting Guile.
497
498 2005-11-30 Kevin Ryde <user42@zip.com.au>
499
500 * srfi-13.c (scm_string_append_shared): No copying if just one
501 non-empty string in args.
502
503 2005-11-26 Kevin Ryde <user42@zip.com.au>
504
505 * gc-mark.c (scm_mark_all): Change C++ comment to C comment. Reported
506 by Ludovic Courtès.
507
508 * list.c (list): Should be "primitive" in SCM_SNARF_DOCS, not
509 "register".
510
511 * random.c (scm_i_copy_rstate, scm_c_make_rstate): Don't test for
512 scm_malloc returning NULL, it never does that.
513 * putenv.c (putenv): Likewise.
514
515 * socket.c (scm_fill_sockaddr): Remove SCM_C_INLINE_KEYWORD, this is
516 much too big to want to inline.
517
518 2005-11-17 Ludovic Courtès <ludovic.courtes@laas.fr>
519
520 * print.c (EXIT_NESTED_DATA): Before popping from the stack, reset
521 the value at its top. This fixes a reference leak.
522 (PUSH_REF): Perform `pstate->top++' after calling
523 `PSTATE_STACK_SET ()' in order to avoid undesired potential side
524 effects.
525
526 2005-11-12 Ludovic Courtès <ludovic.courtes@laas.fr>
527
528 * gc.c (scm_weak_vectors): Removed.
529
530 2005-11-12 Kevin Ryde <user42@zip.com.au>
531
532 * socket.c (scm_setsockopt): Missing @defvar in docstring. Reported
533 by Ludovic Courtès.
534
535 2005-11-07 Marius Vollmer <mvo@zagadka.de>
536
537 * stime.c (scm_mktime): Use scm_frame_critical_section instead of
538 SCM_CRITICAL_SECTION_START/END since the code inside the critical
539 section might exit non-locally.
540
541 2005-11-04 Neil Jerram <neil@ossau.uklinux.net>
542
543 * eval.c (sym_instead): New symbol.
544 (ENTER_APPLY): Remove optional use of a continuation when making
545 trap call.
546 (scm_debug_opts): Change doc for 'cheap option to make clear that
547 it is now obsolete.
548 (CEVAL, SCM_APPLY): Remove optional use of a continuation when
549 making trap calls, and implement substitution of eval expressions
550 and return values using the values that the trap call handlers
551 return.
552
553 * debug.h (SCM_CHEAPTRAPS_P): Removed.
554
555 2005-10-27 Ludovic Courtès <ludovic.courtes@laas.fr>
556
557 * socket.c (scm_fill_sockaddr): No need to check NULL from scm_malloc.
558 (scm_connect, scm_bind, scm_sendto): Accept sockaddr object.
559 (scm_addr_vector): Renamed to _scm_from_sockaddr, update usages.
560 (scm_from_sockaddr, scm_to_sockaddr, scm_make_socket_address,
561 scm_c_make_socket_address): New functions.
562 * socket.h: Add prototypes.
563
564 2005-10-24 Kevin Ryde <user42@zip.com.au>
565
566 * socket.c (scm_init_socket): Add IPPROTO_IP, IPPROTO_TCP,
567 IPPROTO_UDP. Remove SOL_IP, SOL_TCP, SOL_UDP. The former are in
568 POSIX spec examples, the latter are not available on for instance
569 NetBSD.
570
571 * socket.c (scm_getsockopt, scm_setsockopt): Update docstrings from
572 posix.texi.
573
574 * stime.c (scm_strftime): Update docstring from posix.texi.
575
576 2005-10-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
577
578 PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP is not portable enough.
579
580 * null-threads.h, pthread-threads.h
581 (SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER): Removed.
582 (scm_i_pthread_mutexattr_recursive): New.
583
584 * threads.c (scm_i_pthread_mutexattr_recursive): Declare.
585 (scm_i_critical_section_mutex): Do not initialize statically.
586 (scm_threads_prehistory): Initialize
587 scm_i_pthread_mutexattr_recursive and scm_i_critical_section_mutex
588 here.
589
590 * eval.c (source_mutex): Do not initialiaze statically.
591 (scm_init_eval): Do it here, using
592 scm_i_pthread_mutexattr_recursive.
593
594 2005-09-05 Marius Vollmer <mvo@zagadka.de>
595
596 * print.h (SCM_PRINT_KEYWORD_STYLE_I, SCM_PRINT_KEYWORD_STYLE):
597 New.
598 (sym_reader): New.
599 (scm_print_opts): Added "quote-keywordish-symbols" option.
600 (quote_keywordish_symbol): New, for evaluating the option.
601 (scm_print_symbol_name): Use it.
602 (scm_init_print): Initialize new option to sym_reader.
603
604 2005-08-15 Neil Jerram <neil@ossau.uklinux.net>
605
606 * eval.c (eval_letrec_inits): New.
607 (CEVAL): Eval letrec initializer forms using eval_letrec_inits.
608
609 2005-08-12 Marius Vollmer <mvo@zagadka.de>
610
611 * numbers.c: Use scm_from_bool instead of SCM_BOOL. Thanks to
612 Peter Gavin!
613
614 2005-08-12 Kevin Ryde <user42@zip.com.au>
615
616 * srfi-13.c (scm_string_for_each_index): Correction to docstring.
617
618 2005-08-06 Kevin Ryde <user42@zip.com.au>
619
620 * srfi-13.c (scm_string_any, scm_string_every, scm_string_tabulate,
621 scm_string_trim, scm_string_trim_right, scm_string_trim_both,
622 scm_string_index, scm_string_index_right, scm_string_skip,
623 scm_string_skip_right, scm_string_count, scm_string_map,
624 scm_string_map_x, scm_string_for_each, scm_string_for_each_index,
625 scm_string_filter, scm_string_delete): Use scm_t_trampoline_1 for
626 procedures called in loops.
627
628 2005-08-02 Kevin Ryde <user42@zip.com.au>
629
630 * strports.c (st_flush): Increase buffer by 1.5x when growing, to
631 avoid lots of copying where previoulsy growing by only 80 bytes at a
632 time.
633
634 2005-08-01 Marius Vollmer <mvo@zagadka.de>
635
636 * modules.h, modules.c (scm_eval_closure_module): Removed, we
637 already have scm_lookup_closure_module, which does the same thing.
638
639 2005-08-01 Marius Vollmer <mvo@zagadka.de>
640
641 New marking algorithm for weak hashtables that fixes the problem
642 that references from the non-weak value to the associated weak
643 key (for example) would prevent the entry from ever being dropped.
644
645 Guardians have been changed back to their original semantics and
646 are no longer greedy and no longer drop cycles.
647
648 * gc-mark.c (scm_mark_all): Do not rely on hooks to run the weak
649 hashtable and guardian machinery but call the relevant functions
650 directly.
651
652 * guardians.h, guardians.c, deprecated.h,
653 deprecated.c (scm_destroy_guardian_x, scm_guardian_greedy_p,
654 scm_guardian_destroyed_p, scm_guard, scm_get_one_zombie):
655 Deprecated and moved into deprecated.[ch].
656
657 * guardians.h, guardians.c: Mostly rewritten.
658 (scm_i_init_guardians_for_gc,
659 scm_i_identify_inaccessible_guardeds,
660 scm_i_mark_inaccessible_guardeds): New.
661 (scm_make_guardian): Removed greedy_p argument.
662
663 * weaks.h, weaks.c (SCM_I_WVECT_TYPE, SCM_I_SET_WVECT_TYPE): New.
664 (SCM_I_WVECT_N_ITEMS, SCM_I_SET_WVECT_N_ITEMS): New.
665 (SCM_WVECTF_NOSCAN, SCM_WVECT_NOSCAN_P): Removed.
666 (scm_weaks_prehistory): Removed.
667 (scm_i_init_weak_vectors_for_gc, scm_i_mark_weak_vector,
668 scm_i_mark_weak_vectors_non_weaks,
669 scm_i_remove_weaks_from_weak_vectors, scm_i_remove_weaks): New.
670 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
671 scm_scan_weak_vectors): Removed.
672
673 * hashtab.h (scm_i_scan_weak_hashtables): New.
674 * hashtab.c (make_hash_table, scm_i_rehash): Do not use
675 SCM_WVECTF_NOSCAN.
676 (hashtable_print): Use SCM_HASHTABLE_N_ITEMS instead of
677 t->n_items.
678 (scan_weak_hashtables, scm_i_scan_weak_hashtables): Renamed former
679 to latter. Do not scan the alists themselves, this is done by the
680 weak vector code now. Just update the element count.
681
682 * vectors.h (SCM_I_WVECT_TYPE, SCM_I_WVECT_EXTRA): Renamed former
683 to latter. The type is now only part of the cell word.
684 (SCM_I_SET_WVECT_TYPE, SCM_I_SET_WVECT_EXTRA): Likewise.
685
686 * init.c (scm_i_init_guile): Do not call scm_weaks_prehistory.
687
688 2005-07-18 Mikael Djurfeldt <mdj@d14n36.pdc.kth.se>
689
690 Some changes towards making it possible to run Guile on the EM64T
691 platform.
692
693 * gc.c (scm_gc_stats): Bugfix: Measure size of the type we are
694 mallocating for (unsigned long *bounds).
695
696 * hashtab.c (scm_i_rehash): Cast SCM_HASHTABLE_FLAGS (table) to
697 scm_t_bits before storing them in the type word.
698
699 * gc.c (tag_table_to_type_alist): Modified type of c_tag from
700 scm_t_bits to int.
701
702 2005-07-12 Kevin Ryde <user42@zip.com.au>
703
704 * eval.c (scm_dbg_make_iloc): Should be SCM_IFRAMEMAX and
705 SCM_IDISTMAX, and cast uints through scm_t_bits to make gcc happy.
706 * pairs.c (scm_error_pair_access): Use scm_from_locale_string rather
707 than scm_makfrom0str.
708 Reported by Ken Raeburn.
709
710 * gc-card.c (scm_dbg_gc_get_bvec): Change return from long* to
711 scm_t_c_bvec_long*, gcc 4 doesn't like different pointer targets when
712 returning SCM_GC_CARD_BVEC.
713
714 * pairs.c (scm_error_pair_access): Plain ascii ' in error message
715 rather than latin-1 acute accent, the latter may not print on all
716 terminals.
717
718 * srfi-13.c (scm_string_filter, scm_string_delete): Strip leading and
719 trailing deletions, so as to return a substring if those are the only
720 changes.
721
722 2005-07-10 Kevin Ryde <user42@zip.com.au>
723
724 * socket.c (scm_inet_pton, scm_inet_ntop): Pointer cast to scm_t_uint8
725 for scm ipv6 funcs, gcc 4 is picky about char* vs uchar*.
726 (scm_getsockopt, scm_accept, scm_getsockname, scm_getpeername,
727 scm_recvfrom) Use socklen_t, gcc 4 is picky about int* vs socklen_t*.
728
729 2005-07-01 Han-Wen Nienhuys <hanwen@xs4all.nl>
730
731 * gc-card.c (scm_i_card_statistics): init tag.
732
733 * gc.c (tag_table_to_type_alist): check type of tag. Should be integer.
734
735 2005-06-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
736
737 * fports.c (s_scm_open_file): add the b flag for binary to the doc
738 string.
739
740 2005-06-25 Kevin Ryde <user42@zip.com.au>
741
742 * srfi-13.c (scm_string_filter, scm_string_delete): Partial revert
743 last change, use plain copy-on-write substrings, the individual
744 descriptions in the srfi don't mention shared storage (only the
745 introduction does).
746
747 * strings.c (scm_take_locale_stringn): Use realloc to make room for
748 null-terminator, rather than mallocing a whole new block.
749 (scm_take_locale_string): Use scm_take_locale_stringn len==-1.
750
751 2005-06-12 Marius Vollmer <mvo@zagadka.de>
752
753 * ramap.c (scm_array_index_map_x): First test for real arrays,
754 then check for generalized vectors. This ensures that the
755 generalized vector case need only work with zero-origin ranges.
756 (scm_ra_eqp, scm_ra_compare): Use the new array handle functions
757 to access the target array, making these functions work with all
758 kinds of arrays, not just bit arrays.
759
760 * gh.h, gh_data.c, gh_eval.c, gh_funcs.c, gh_init.c, gh_io.c,
761 gh_list.c, gh_predicates.c: Deprecated everything.
762
763 * environments.c (environment_default_folder,
764 environment_default_observer): Do not use gh_call3, gh_call1.
765
766 2005-06-10 Han-Wen Nienhuys <hanwen@xs4all.nl>
767
768 * modules.c (s_scm_eval_closure_module): new function. Return the
769 module inside an eval-closure.
770
771 * gc.c (scm_init_storage): make scm_stand_in_procs a weak_key hash
772 table. This means that procedure properties are GC'd if the
773 procedure dies.
774
775 2005-06-11 Kevin Ryde <user42@zip.com.au>
776
777 * srfi-13.c (scm_string_filter, scm_string_delete): For char and
778 charset cases, count chars kept and build a string in a second pass,
779 rather than using a cons cell for every char kept. Use a shared
780 substring when nothing removed (such sharing is allowed by the srfi).
781
782 2005-06-09 Han-Wen Nienhuys <hanwen@xs4all.nl>
783
784 * gc.c (tag_table_to_type_alist): convert tag number to "tag %d"
785 string, so live object stats can be sorted with string<?.
786
787 2005-06-06 Marius Vollmer <mvo@zagadka.de>
788
789 * print.c (iprin1): When writing a string, collect all characters
790 that can be printed directly into one call to scm_lfwrite.
791 Previously, every character was output with its own call to
792 write(2) on unbuffered ports.
793
794 * eval.c (scm_eval_options_interface): Use
795 scm_frame_critical_section instead of SCM_CRITICAL_SECTION_START
796 and SCM_CRITICAL_SECTION_END.
797
798 * unif.c (scm_array_in_bounds_p): First test for real arrays, then
799 check for generalized vectors. This ensures that the generalized
800 vector case need only work with zero-origin ranges.
801
802 2005-06-06 Kevin Ryde <user42@zip.com.au>
803
804 * srfi-13.c (scm_string_split): Compare char/char in scan. Mixing an
805 unsigned int SCM_CHAR and a char string meant an 8-bit char was never
806 matched.
807
808 2005-06-05 Marius Vollmer <mvo@zagadka.de>
809
810 * eval.c: Added comment on how to make case 1.1 of
811 r5rs_pitfall.test succeed.
812
813 From Jan Nieuwenhuizen <janneke@gnu.org>. Thanks!
814
815 * hashtab.h: Bugfix: use SCM_API (WAS: extern).
816
817 * socket.c: Remove obsolete comment about socklen_t.
818 (s_scm_setsockopt)[!HAVE_IP_MREQ]: Do not use ip_mreq code.
819
820 * numbers.h (isnan)[__MINGW32__]: Remove.
821
822 * Makefile.am (gen_scmconfig_SOURCES): Bugfix: Add
823 DEFAULT_INCLUDES when cross compiling.
824
825 * threads.c (ETIMEDOUT, pipe)[__MINGW32__]: Add defines.
826
827 * stime.c (scm_strftime)[!HAVE_TM_ZONE]: Use
828 SCM_SIMPLE_VECTOR_REF instead of SCM_VELTS. (Changed slightly
829 from Jan's patch.)
830
831 2005-05-22 Marius Vollmer <mvo@zagadka.de>
832
833 * unif.c (scm_make_shared_array): Add old base to new base since
834 scm_array_handle_pos does not include the base.
835 (scm_aind): Likewise.
836
837 * ports.c (scm_putc, scm_puts): Assert that the port argument is a
838 output port.
839
840 2005-05-12 Neil Jerram <neil@ossau.uklinux.net>
841
842 Mac OS X compile warning fixes, reported by Richard Todd.
843
844 * unif.c (scm_i_read_array): Declare rank as ssize_t, to guarantee
845 that it is signed.
846
847 * strports.c (st_resize_port): Add unsigned char cast.
848 (scm_mkstrport): Make read/write_buf cast unsigned.
849
850 * srfi-13.c (string_titlecase_x): Add unsigned char cast.
851
852 * rdelim.c (scm_read_line): Initialize slen.
853
854 * load.c (scm_search_path): Remove weird >=1, and add
855 parentheses to clarify conditions.
856
857 * hash.c (scm_hasher): Add const unsigned char cast.
858
859 * gh_data.c (gh_chars2byvect): Add scm_t_int8 cast.
860
861 2005-05-11 Neil Jerram <neil@ossau.uklinux.net>
862
863 Fix C99isms reported by Ludovic Courtès:
864
865 * threads.c (s_scm_lock_mutex): Don't declare msg in middle of
866 code.
867
868 * gc.c (s_scm_gc_live_object_stats): Don't declare alist in middle
869 of code.
870
871 * gc-card.c (scm_i_card_statistics): Don't declare tag in middle
872 of code.
873 (scm_i_card_statistics): Add block for declarations of tag_as_scm
874 and current.
875
876 2005-05-10 Neil Jerram <neil@ossau.uklinux.net>
877
878 * scmsigs.c (signal_delivery_thread): Return a value, to avoid
879 compile warning reported by Werner Scheinast.
880
881 2005-04-30 Han-Wen Nienhuys <hanwen@xs4all.nl>
882
883 * list.h: remove scm_list()
884
885 * fluids.c (DYNAMIC_STATE_NEXT_LOC): new macro for use with
886 SCM_DEBUG_CELL_ACCESSES
887 (FLUID_NEXT_LOC): idem.
888
889 2005-04-30 Kevin Ryde <user42@zip.com.au>
890
891 * numbers.c (scm_divide): Correction to 1/complex and <any>/complex,
892 need to test abs(re)<abs(im) for choice of cases, otherwise divide by
893 zero when re==0 and im<0. Reported by Jean Crepeau.
894
895 2005-04-25 Kevin Ryde <user42@zip.com.au>
896
897 * ramap.c (scm_array_map_x): Allow no source args, add num args checks
898 to subr_1, subr_2, subr_2o and dsubr cases. No source args only has a
899 few sensible uses (like filling with a random number generator say),
900 but has been allowed in the past and so should be kept.
901
902 2005-04-23 Kevin Ryde <user42@zip.com.au>
903
904 * hashtab.c (scm_hashx_remove_x): Need to pass "closure" to
905 scm_hash_fn_remove_x.
906
907 * list.c (scm_cons_star): Don't modify the rest list, it belongs to
908 the caller when cons* is reached through apply.
909
910 * list.c (list): Use scm_list_copy, so as to produce a fresh list when
911 list is called using apply, under the debugging evaluator.
912 (scm_list): Remove.
913
914 * list.c, list.h (scm_make_list): New code, moving make-list from
915 boot-9.scm.
916
917 2005-04-14 Kevin Ryde <user42@zip.com.au>
918
919 * numbers.c, numbers.h (scm_oneplus, scm_oneminus): New functions,
920 converted from scheme code in boot-9.scm.
921
922 2005-04-11 Kevin Ryde <user42@zip.com.au>
923
924 * srfi-13.c (scm_string_concatenate, scm_string_concatenate_shared):
925 Validate list argument, scm_string_append and scm_string_append_shared
926 don't do that to their rest argument (in a normal build).
927
928 2005-04-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
929
930 * hashtab.h, hashtab.c (scm_t_hashtable): Removed 'closure' field. The
931 closure can not be stored since it is no longer valid at GC time.
932 (make_hash_table): Initialize 'hash_fn' field.
933 (scm_i_rehash): Only store hash_fn in hash table when closre is
934 NULL.
935 (rehash_after_gc): Only call scm_i_rehash when 'hash_fn' is
936 non-NULL. Always use a NULL closure.
937 (scm_hash_fn_create_handle_x): Also rehash when table contains too
938 few entries.
939
940 2005-03-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
941
942 * hashtab.h, hashtab.c (scm_hash_fx_remove_x): Removed delete_fn
943 argument; always use scm_delq_x. The delete_fn function works on
944 the handle, not the key, and it therefore makes no sense to make
945 it configurable. Changed all callers.
946 (scm_hashx_remove_x): Likewise. Also, exported to Scheme.
947 (scm_hash_clear): Accept plain vectors as hashtables.
948 (scm_delx_x): Removed.
949
950 2005-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
951
952 * inline.h (scm_double_cell): use __asm__ iso. asm, to maintain
953 compatibility with gcc -std=c99.
954
955 2005-03-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
956
957 * async.h (scm_mask_ints): Removed left over reference to
958 scm_root.
959
960 * threads.c: Removed fprintf debug statements.
961
962 2005-03-24 Neil Jerram <neil@ossau.uklinux.net>
963
964 * debug.c (scm_make_memoized): Restore use of SCM_UNPACK.
965
966 2005-03-23 Neil Jerram <neil@ossau.uklinux.net>
967
968 * debug.c (scm_make_memoized): Remove unnecessary critical
969 section, and simplify by using SCM_RETURN_NEWSMOB.
970
971 2005-03-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
972
973 * strings.h (SCM_STRING_UCHARS): Added missing argument.
974
975 2005-03-18 Kevin Ryde <user42@zip.com.au>
976
977 * arbiters.c (FETCH_STORE) [generic C]: Should be
978 scm_i_scm_pthread_mutex_lock/unlock now. Reported by Ludovic Courtès.
979
980 2005-03-13 Kevin Ryde <user42@zip.com.au>
981
982 * numbers.c, numbers.h (scm_i_clonebig): Remove static, so can use in
983 srfi-60.
984
985 * numbers.c (scm_logior): Must scm_i_normbig results as per scm_logand,
986 because OR-ing bits into a negative can reduce the value to an inum.
987
988 * numbers.c (scm_num_eq_p): On 64-bit systems, be careful about
989 casting inum to double since that can lose precision.
990
991 2005-03-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
992
993 * threads.h, threads.c (scm_i_thread): Added gc_running_p field.
994 (guilify_self_1): Initialize it.
995
996 * gc.h, gc.c (SCM_FREECELL_P): Removed for good.
997 (scm_block_gc, scm_gc_heap_lock): Removed. Removed all uses.
998 (scm_gc_running_p): Now a macro that refers to the scm_i_thread
999 field.
1000 (scm_i_sweep_mutex): Now a non-recursive mutex. GC can not happen
1001 recursively.
1002 (scm_igc, scm_i_gc): Renamed former to latter. Changed all uses.
1003 Do not lock scm_i_sweep_mutex, which is now non-recursive, or set
1004 scm_gc_running_p. Do not run the scm_after_gc_c_hook.
1005 (scm_gc): Lock scm_i_sweep_mutex, set scm_gc_running_p and run the
1006 scm_after_gc_c_hook here.
1007 (scm_gc_for_new_cell): Set scm_gc_running_p here and run the
1008 scm_after_gc_c_hook when a full GC has in fact been performed.
1009 (scm_i_expensive_validation_check): Call scm_gc, not scm_i_gc.
1010
1011 * gc-segment.c (scm_i_get_new_heap_segment): Do not check
1012 scm_gc_heap_lock.
1013
1014 * gc-malloc.c (scm_realloc, increase_mtrigger): Set
1015 scm_gc_running_p while the scm_i_sweep_mutex is locked.
1016
1017 * inline.h (scm_cell, scm_double_cell): Do not check
1018 scm_gc_running_p, allocation during sweeping is OK.
1019
1020 * gdbint.c (SCM_BEGIN_FOREIGN_BLOCK, SCM_END_FOREIGN_BLOCK): Do
1021 not set scm_block_gc.
1022
1023 * init.c (scm_i_init_guile): Do not set scm_block_gc.
1024
1025 * deprecation.c (scm_c_issue_deprecation_warning): Use malloc
1026 instead of scm_malloc. The latter can not be used during GC.
1027
1028 2005-03-09 Marius Vollmer <mvo@zagadka.de>
1029
1030 * script.c (scm_compile_shell_switches): Added 2005 to Copyright
1031 years.
1032
1033 2005-03-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1034
1035 * gc-card.c (scm_i_sweep_card): Do not increase/decrease
1036 scm_gc_running_p. Sweeping can happen in parallel with
1037 allocation.
1038
1039 * inline.h: Updated comments for current threading implementation.
1040
1041 * threads.h, threads.c (scm_i_frame_single_threaded): Removed.
1042 (scm_i_thread): Removed unused signal_asyncs field.
1043 (threads_mark): Do not mark it.
1044 (guilify_self_1): Do not initialize it. Do initialize
1045 continuation_root field.
1046 (do_thread_exit): Do not remove thread from all_threads list.
1047 (on_thread_exit): Do it here, after leaving guile mode.
1048 (sleep_level): Removed.
1049 (scm_i_thread_put_to_sleep): Leave thread_admin_mutex locked when
1050 returning. Do not support recursive sleeps.
1051 (scm_i_thread_wake_up): Expect thread_admin_mutex to be locked on
1052 entry. Do not support recursive sleeps.
1053
1054 * fluids.c (ensure_state_size, ensure_all_state_sizes,
1055 resize_all_states): Collapsed ensure_state_size and
1056 ensure_all_state_sizes into one function named resize_all_states.
1057 Allocate new vectors outside of single threaded region. Do only
1058 simple things inside that region.
1059 (scm_make_fluid, scm_make_dynamic_state): Lock fluid_admin_mutex
1060 while adding to the global lists.
1061
1062
1063 2005-03-08 Marius Vollmer <mvo@zagadka.de>
1064
1065 libltdl is no longer distributed. We expect it to be installed
1066 already.
1067
1068 * Makefile.am (INCLUDES): Removed @LTDLINCL@.
1069 (libguile_la_LIBADD): Removed @LIBLTDL@.
1070
1071 2005-03-07 Marius Vollmer <mvo@zagadka.de>
1072
1073 * threads.h, async.h, threads.c (SCM_CRITICAL_SECTION_START,
1074 SCM_CRITICAL_SECTION_END): Moved here from threads.h since now
1075 they also block/unblock execution of asyncs and call
1076 scm_async_click which is declared in async.h but threads.h can not
1077 include async.h since async.h already includes threads.h.
1078 (scm_i_critical_section_level): New, for checking mistakes in the
1079 use of the SCM_CRITICAL_SECTION_* macros.
1080 (scm_i_critical_section_mutex): Make it a recursive mutex so that
1081 critical sections can be nested.
1082
1083 * throw.c (scm_ithrow): Abort when scm_i_critical_section_level is
1084 not zero.
1085
1086 * threads.h, threads.c (scm_frame_lock_mutex): New.
1087 (scm_frame_critical_section): Take mutex as argument.
1088 (framed_critical_section_mutex): New, used as default for above.
1089 (scm_init_threads): Initialize it.
1090 (scm_threads_prehistory): Do not initialize thread_admin_mutex and
1091 scm_i_critical_section_mutex; both are initialized statically.
1092
1093 * continuation.c, deprecated.c, goops.c, guardians.c keywords.c,
1094 libguile_la-arrays.loT, objprop.c, ports.c, smob.c, sort.s,
1095 srcprop.c, stime.c, struct.c, throw.c, regex-posix.c: Include
1096 "libguile/async.h" for SCM_CRITICAL_SECTION_START/END.
1097
1098 * debug.c (scm_debug_options): Replace
1099 SCM_CRITICAL_SECTION_START/END with a frame and
1100 scm_frame_critical_section.
1101
1102 * continuations.c (scm_make_continuation): No longer a critical
1103 section.
1104 (scm_dynthrow): Abort when scm_i_critical_section_level is
1105 not zero.
1106
1107 2005-03-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1108
1109 * threads.c (scm_try_mutex): Renamed argument for consistency.
1110
1111 * root.c (scm_call_with_dynamic_root): New docstring.
1112
1113 * eval.c: Define _GNU_SOURCE.
1114
1115 2005-03-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1116
1117 Big merge from the mvo-thread-cleanup branch. The main changes
1118 are:
1119
1120 - The dynamic roots functionality has been split into dynamic
1121 states and continuations barriers. Fluids have been
1122 reimplemented and can now be garbage collected.
1123
1124 - Initialization of Guile now works in a multi-thread friendly
1125 manner. Threads can freely enter and leave guile mode.
1126
1127 - Blocking on mutexes or condition variables or while selecting
1128 can now be reliably interrupted via system asyncs.
1129
1130 - The low-level threading interface has been removed.
1131
1132 - Signals are delivered via a pipe to a dedicated 'signal delivery
1133 thread'.
1134
1135 - SCM_DEFER_INTS, SCM_ALLOW_INTS etc have been deprecated.
1136
1137 * throw.c (scm_handle_by_message): Exit only the current thread,
1138 not the whole process.
1139 (scm_handle_by_message_noexit): Exit when catching 'quit.
1140
1141 * scmsigs.c (take_signal, signal_delivery_thread,
1142 start_signal_delivery_thread, ensure_signal_delivery_thread,
1143 install_handler): Reimplemented signal delivery as explained in
1144 the comments.
1145
1146 * pthreads-threads.h (scm_i_pthread_t, scm_i_pthread_self,
1147 scm_i_pthread_create, scm_i_pthread_detach, scm_i_pthread_exit,
1148 scm_i_sched_yield, scm_i_pthread_sigmask,
1149 SCM_I_PTHREAD_MUTEX_INITIALIZER,
1150 SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER, scm_i_pthread_mutex_t ,
1151 scm_i_pthread_mutex_init, scm_i_pthread_mutex_destroy,
1152 scm_i_pthread_mutex_trylock, scm_i_pthread_mutex_lock,
1153 scm_i_pthread_mutex_unlock, SCM_I_PTHREAD_COND_INITIALIZER,
1154 scm_i_pthread_cond_t, scm_i_pthread_cond_init,
1155 scm_i_pthread_cond_destroy, scm_i_pthread_cond_signal,
1156 scm_i_pthread_cond_broadcast, scm_i_pthread_cond_wait,
1157 scm_i_pthread_cond_timedwait, scm_i_pthread_once_t,
1158 SCM_I_PTHREAD_ONCE_INIT, scm_i_pthread_once, scm_i_pthread_key_t ,
1159 scm_i_pthread_key_create, scm_i_pthread_setspecific,
1160 scm_i_pthread_getspecific, scm_i_scm_pthread_mutex_lock,
1161 scm_i_frame_pthread_mutex_lock, scm_i_scm_pthread_cond_wait,
1162 scm_i_scm_pthread_cond_timedwait): Provide the obvious mapping
1163 when using pthreads.
1164 * null-threads.c, null-threads.h: Provide dummy definitions for
1165 the above symbols when not using pthreads.
1166
1167 * modules.h, modules.c (scm_frame_current_module): New.
1168
1169 * load.c (scm_primitive_load): Use scm_i_frame_current_load_port
1170 instead of scm_internal_dynamic_wind.
1171
1172 * init.h, init.c (restart_stack, start_stack): Removed.
1173 (scm_boot_guile, invoke_main_func): Simply use scm_with_guile.
1174 (scm_boot_guile_1): Removed.
1175 (scm_i_init_mutex): New.
1176 (really_cleanup_for_exit, cleanup_for_exit): New.
1177 (scm_init_guile_1, scm_i_init_guile): Renamed former to latter.
1178 Moved around some init funcs. Call
1179 scm_init_threads_default_dynamic_state. Register cleanup_for_exit
1180 with atexit.
1181
1182 * hashtab.c (scm_hash_fn_create_handle_x, scm_hash_fn_remove_x):
1183 Use "!scm_is_eq" instead of "!=".
1184
1185 * ge-scmconfig.c, gen-scmconfig.h.in (SCM_I_GSC_USE_COOP_THREADS,
1186 SCM_USE_COOP_THREADS): Removed.
1187
1188 * gc.c (scm_igc): Take care that scm_gc_running_p is properly
1189 maintained. Unlock scm_i_sweep_mutex before running
1190 scm_after_gc_c_hook.
1191 (scm_permanent_object): Allocate outside of critical section.
1192 (cleanup): Removed.
1193
1194 * fluids.h, fluids.c: Reimplemented completely.
1195 (SCM_FLUID_NUM, SCM_FAST_FLUID_REF,
1196 SCM_FAST_FLUID_SET): Reimplemented as functions.
1197 (scm_is_fluid): New.
1198 (scm_i_make_initial_fluids, scm_i_copy_fluids): Removed.
1199 (scm_make_dynamic_state, scm_dynamic_state_p,
1200 scm_is_dynamic_state, scm_current_dynamic_state,
1201 scm_set_current_dynamic_state, scm_frame_current_dynamic_state,
1202 scm_c_with_dynamic_state, scm_with_dynamic_state,
1203 scm_i_make_initial_dynamic_state, scm_fluids_prehistory): New.
1204
1205 * feature.c (progargs_fluid): New.
1206 (scm_program_arguments, scm_set_program_arguments): Use it instead
1207 of scm_progargs.
1208 (scm_init_feature): Allocate it. Also, only add "threads" feature
1209 when SCM_USE_PTHREAD_THREADS is true.
1210
1211 * eval.c (scm_makprom): Use scm_make_recursive_mutex instead of
1212 scm_make_rec_mutex, with all the consequences.
1213 (scm_eval_x, scm_eval): Use scm_frame_begin etc instead of
1214 scm_internal_dynamic_wind. Handle dynamic states as second
1215 argument.
1216
1217 * threads.h, threads.c (scm_internal_select): Renamed to
1218 scm_std_select and discouraged old name.
1219 (scm_thread_sleep, scm_thread_usleep): Likewise, as scm_std_sleep
1220 and scm_std_usleep.
1221 (scm_tc16_fair_mutex, scm_tc16_fair_condvar, SCM_MUTEXP,
1222 SCM_FAIR_MUTEX_P, SCM_MUTEX_DATA, SCM_CONDVARP,
1223 SCM_FAIR_CONDVAR_P, SCM_CONDVAR_DATA, SCM_THREADP,
1224 SCM_THREAD_DATA): Removed.
1225 (SCM_I_IS_THREAD, SCM_I_THREAD_DATA): New.
1226 (scm_i_thread): New.
1227 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
1228 Use scm_assert_smob_type.
1229 (scm_c_scm2thread, scm_thread_join, scm_thread_detach,
1230 scm_thread_self, scm_thread_yield, scm_mutex_init,
1231 scm_mutex_destroy, scm_mutex_trylock, scm_mutex_unlock,
1232 scm_rec_mutex_init, scm_rec_mutex_destroy, scm_make_rec_mutex,
1233 scm_rec_mutex_free, scm_rec_mutex_lock, scm_rec_mutex_trylock,
1234 scm_cond_init, scm_cond_destroy, scm_cond_wait,
1235 scm_cond_timedwait, scm_cond_signal, scm_cond_broadcast,
1236 scm_key_create, scm_key_delete, scm_setspecific, scm_getspecific,
1237 scm_thread_select): Removed. Replaced with scm_i_pthread
1238 functions as appropriate.
1239 (scm_in_guile, scm_outside_guile): Removed.
1240 (scm_t_guile_ticket, scm_leave_guile, scm_enter_guile): Return and
1241 take a ticket.
1242 (scm_with_guile, scm_without_guile, scm_i_with_guile_and_parent):
1243 New.
1244 (scm_i_frame_single_threaded): New.
1245 (scm_init_threads_default_dynamic_state): New.
1246 (scm_i_create_thread): Removed.
1247 (scm_make_fair_mutex, scm_make_fair_condition_variable): Removed.
1248 (scm_make_recursive_mutex): New.
1249 (scm_frame_critical_section): New.
1250 (SCM_CURRENT_THREAD, SCM_I_CURRENT_THREAD): Renamed former to
1251 latter, changed all uses.
1252 (scm_i_dynwinds, scm_i_setdynwinds, scm_i_last_debug_frame,
1253 scm_i_set_last_debug_frame): New, use them instead of scm_root
1254 stuff.
1255 (SCM_THREAD_LOCAL_DATA, SCM_SET_THREAD_LOCAL_DATA,
1256 scm_i_root_state_key,m scm_i_set_thread_data): Removed.
1257 (scm_pthread_mutex_lock, scm_frame_pthread_mutex_lock,
1258 scm_pthread_cond_wait, scm_pthread_cond_timedwait).
1259 (remqueue): Allow the removal of already removed cells. Indicate
1260 whether a real removal has happened.
1261 (scm_thread): Removed, replaced with scm_i_thread.
1262 (make_thread, init_thread_creatant): Removed.
1263 (cur_thread): Removed.
1264 (block_self, unblock_from_queue): New.
1265 (block, timed_block, unblock): Removed.
1266 (guilify_self_1, guilify_self_2, do_thread_exit,
1267 init_thread_key_once, init_thread_key,
1268 scm_i_init_thread_for_guile, get_thread_stack_base,
1269 scm_init_guile): New initialisation method.
1270 (scm_call_with_new_thread, scm_spawn_thread): Use it to simplify
1271 thread creation.
1272 (fair_mutex, fat_mutex, etc, fair_condvar, fat_condvar): Renamed
1273 "fair" to fat and implemented new semantics, including reliable
1274 interruption.
1275 (all_threads): Now a pointer to a scm_i_thread, not a SCM.
1276 (scm_threads_mark_stacks): Explicitly mark handle.
1277 (scm_std_select): Allow interruption by also selecting on the
1278 sleep_pipe.
1279 (scm_i_thread_put_to_sleep): Handle recursive requests for
1280 single-threadedness.
1281 (scm_threads_prehistory, scm_init_threads): Put current thread
1282 into guile mode via guileify_self_1 and guileify_self_2,
1283 respectively.
1284
1285 * fluid.h (SCM_FLUIDP): Deprecated.
1286
1287 * coop-threads.c: Removed.
1288
1289 * continuations.h, continuations.c (scm_with_continuation_barrier,
1290 scm_c_with_continuation_barrier, scm_i_with_continuation_barrier):
1291 New.
1292
1293 * async.h, async.c (scm_i_setup_sleep, scm_i_reset_sleep): New.
1294 (async_mutex): New.
1295 (scm_async_click): Protected with async_mutex. Do not deal with
1296 signal_asyncs, which are gone. Set cdr of handled async cell to
1297 #f.
1298 (scm_i_queue_async_cell): Protected with async_mutex. Interrupt
1299 current sleep.
1300 (scm_system_async_mark_for_thread): Do not use scm_current_thread
1301 since that might not work during early initialization.
1302
1303 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS, SCM_REDEFER_INTS,
1304 SCM_REALLOW_INTS): Deprecated by moving into deprecated.h and
1305 deprecated.c. Replaced all uses with SCM_CRITICAL_SECTION_START
1306 and SCM_CRITICAL_SECTION_END.
1307 (SCM_ENTER_A_SECTION, SCM_EXIT_A_SECTION): Removed. Replaced with
1308 SCM_CRITICAL_SECTION_START/END.
1309
1310 * Makefile.am (modinclude_HEADER): Removed threads-plugin.h.
1311 (libguile_la_SOURCES): Added null-threads.c
1312 (EXTRA_libguile_la_SOURCES): Removed pthread-threads.c and
1313 threads-plugin.c.
1314 * pthread-threads.c, threads-plugin.c, threads-plugin.h: Removed.
1315
1316 * root.h, root.c (scm_tc16_root, SCM_ROOTP, SCM_ROOT_STATE,
1317 scm_root_state, scm_stack_base, scm_save_regs_gc_mark,
1318 scm_errjmp_bad, scm_rootcont, scm_dynwinds, scm_progargs,
1319 scm_last_debug_frame, scm_exitval, scm_cur_inp, scm_outp,
1320 scm_cur_err, scm_cur_loadp, scm_root, scm_set_root,
1321 scm_make_root): Removed or deprecated. Replaced with references
1322 to the current thread, dynamic state, continuation barrier, or
1323 some fluid, as appropriate.
1324 (root_mark, root_print): Removed.
1325 (scm_internal_cwdr): Reimplemented guts with
1326 scm_frame_current_dynamic_state and
1327 scm_i_with_continuation_barrier.
1328 (scm_dynamic_root): Return current continuation barrier.
1329
1330
1331 2005-02-28 Marius Vollmer <mvo@zagadka.de>
1332
1333 * socket.c (scm_setsockopt): Handle IP_ADD_MEMBERSHIP and
1334 IP_DROP_MEMBERSHIP options. Also, reorganized the code a bit for
1335 cleanliness.
1336 (scm_init_socket): Define IP_ADD_MEMBERSHIP and
1337 IP_DROP_MEMBERSHIP.
1338 Thanks to Greg Troxel!
1339
1340 2005-02-27 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1341
1342 * gh.h: Bugfix: Include <libguile.h> outside of the extern "C"
1343 block.
1344
1345 2005-02-25 Marius Vollmer <mvo@zagadka.de>
1346
1347 * hashtab.c (scm_i_rehash): Remove elements from old bucket vector
1348 so that no two weak alist vectors share a spine.
1349 (scm_hash_fn_create_handle_x): Deal with a possible rehashing
1350 during GC before inserting the new alist cell.
1351
1352 2005-02-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1353
1354 * hashtab.c (scm_i_rehash): Cope with the case that a GC modifies
1355 the hashtable.
1356 (scm_hash_fn_create_handle_x): Likewise.
1357 * vectors.h (SCM_I_SET_WVECT_TYPE): New, for use in scm_i_rehash.
1358
1359 2005-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1360
1361 * unif.c (prototype_to_type): Bugfix: Don't compare prototype to
1362 the prototypical examples mentioned in the old reference manual.
1363 Instead keep the old semantics of dispatching on type. (Yes, this
1364 is extremely ugly, but the whole point of keeping the deprecated
1365 interface is not to break old code.)
1366
1367 2005-02-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1368
1369 * deprecated.h (SCM_ARRAY_DIMS): Rename scm_i_attay_dims -->
1370 scm_i_array_dims.
1371
1372 2005-01-28 Kevin Ryde <user42@zip.com.au>
1373
1374 * numbers.c (scm_ash): Rewrite using shifts, much faster than
1375 integer-expt and multiply/divide. Inexacts and fractions no longer
1376 supported (they happened to work before for left shifts, but not
1377 right). Don't really need inexacts and fractions, since ash is
1378 documented as a "bitwise operation", and all the rest of those only
1379 take exact integers.
1380
1381 2005-01-27 Han-Wen Nienhuys <hanwen@xs4all.nl>
1382
1383 * gc-card.c (scm_i_card_statistics): map structs, closures and
1384 subrs to one tag.
1385
1386 * gc.c (s_scm_gc_live_object_stats): return alist, not hashtable.
1387 (tag_table_to_type_alist): ignore unknown types.
1388
1389 * gc-segment.c (scm_i_all_segments_statistics): new function.
1390 (scm_i_heap_segment_statistics): new function
1391
1392 * gc.c (s_scm_gc_live_object_stats): new GUILE callable: return
1393 statistics on the number of live objects of each type.
1394
1395 * gc-card.c (scm_i_tag_name): new function.
1396 (scm_i_card_statistics): new function.
1397
1398 2005-01-24 Kevin Ryde <user42@zip.com.au>
1399
1400 * posix.c (scm_setlocale): Force errno=EINVAL for an error, since
1401 POSIX and C99 don't document errno being set. Reported by Bruno
1402 Haible.
1403 (scm_flock): Update docstring from manual.
1404
1405 * random.c (scm_i_init_rstate): Compare w to -1 not 0xffffffffUL, now
1406 that it's an scm_t_int32. Otherwise gcc 3.4 says it's always false on
1407 a 64-bit system.
1408
1409 * scmsigs.c (scm_sigaction_for_thread): Use scm_to_long for
1410 sa_handler, needs to be a long on 64-bit systems where int is only 32
1411 bits.
1412
1413 2005-01-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1414
1415 * environments.c (obarray_enter, obarray_replace): Call
1416 SCM_HASHTABLE_INCREMENT when adding a new entry.
1417
1418 * objects.c: Include goops.h for the scm_class_of prototype.
1419
1420 * hashtab.c (hashtable_size, HASHTABLE_SIZE_N): Restrict hashtable
1421 sizes to be smaller than the maximum lengths of vectors.
1422
1423 2005-01-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1424
1425 * ports.c, smob.c: Include "libguile/goops.h".
1426
1427 * objects.h, objects.c, goops.c, goops.h (scm_class_boolean,
1428 scm_class_char, scm_class_pair, scm_class_procedure,
1429 scm_class_string, scm_class_symbol,
1430 scm_class_procedure_with_setter, scm_class_primitive_generic,
1431 scm_class_vector, scm_class_null, scm_class_real,
1432 scm_class_complex, scm_class_integer, scm_class_fraction,
1433 scm_class_unknown, scm_port_class, scm_smob_class,
1434 scm_no_applicable_method, scm_class_of): Moved from objects to
1435 goops since they are only useable once goops has been loaded.
1436 (scm_classes_initialized): Removed.
1437 (scm_class_of): Do not check it.
1438 (create_standard_classes): Do not set it.
1439
1440 2005-01-17 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1441
1442 * objects.h, objects.c (scm_classes_initialized): New.
1443 (scm_class_of): Signal error when scm_classes_initialized is zero.
1444 * goops.c (create_standard_classes): Set scm_classes_initialized
1445 to one.
1446
1447 * random.c (scm_random_solid_sphere_x): Use
1448 scm_c_generalized_vector_length instead of
1449 scm_uniform_vector_length.
1450
1451 2005-01-16 Marius Vollmer <mvo@zagadka.de>
1452
1453 * script.c (scm_compile_shell_switches): Removed debugging output.
1454
1455 2005-01-15 Kevin Ryde <user42@zip.com.au>
1456
1457 * numbers.c (scm_logtest, scm_logbit_p, scm_integer_expt): Update
1458 docstrings from manual.
1459 * random.c (scm_random_solid_sphere_x): Update docstring from manual.
1460
1461 2005-01-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1462
1463 * random.c: Don't check for definedness of SCM_HAVE_T_INT64, check
1464 its value.
1465
1466 Implement u64 and s64 uniform numeric vectors with bignums when
1467 scm_t_uint64 and scm_t_int64 are not available.
1468
1469 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_take_u64vector,
1470 scm_array_handle_u64_elements,
1471 scm_array_handle_u64_writable_elements, scm_u64vector_elements,
1472 scm_u64vector_writable_elements): Do not define when scm_t_uint64
1473 is not available.
1474 (scm_take_s64vector, scm_array_handle_s64_elements,
1475 scm_array_handle_s64_writable_elements, scm_s64vector_elements,
1476 scm_s64vector_writable_elements): Likewise for scm_t_int64.
1477 (uvec_sizes, uvec_print, uvec_equalp): Use SCM bignums when
1478 scm_t_int64/scm_t_uint64 are not available.
1479 (uvec_mark): New, to mark the bignums.
1480 (alloc_uvec): Initialize bignums.
1481 (uvec_fast_ref): Return bignums directly.
1482 (scm_uint64_min, scm_uint64_max, scm_int64_min, scm_int64_max,
1483 assert_exact_integer): New.
1484 (uvec_fast_set): Use them to validate the bignums.
1485 (scm_init_srfi_4): Set mark function of smob when needed.
1486 Initialize scm_uint64_min, scm_uint64_max, scm_int64_min,
1487 scm_int64_max.
1488
1489 Recognize 1.4 -e syntax.
1490
1491 * script.c (sym_at, sym_atat, sym_main, all_symbols): New.
1492 (scm_compile_shell_switches): Use them to recognize and convert
1493 1.4 "-e" syntax.
1494
1495 2005-01-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1496
1497 * deprecated.h, deprecated.c, strings.h, strings.c: Turn all
1498 deprecated features that once were macros but are now functions
1499 back into macros.
1500
1501 2005-01-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1502
1503 * eval.c, debug.h (SCM_WARN_DEPRECATED): New debug option.
1504 * deprecation.c (scm_issue_deprecation_warning,
1505 scm_c_issue_deprecation_warning_fmt): Use it.
1506 (mode): Removed.
1507 (print_summary): New.
1508 (scm_init_deprecation): Initialize SCM_WARN_DEPRECATED instead of
1509 mode.
1510
1511 Deprecated SCM_ARRAY* macros.
1512
1513 * unif.h, unif.c, ramap.c, vectors.c, srfi-4.c, srfi-4.i.c
1514 (SCM_ARRAYP, SCM_I_ARRAYP): Renamed former to latter internal
1515 version. Changed all uses.
1516 (scm_tc16_array, scm_i_tc16_array,
1517 scm_tc16_enclosed_array, scm_i_tc16_enclosed_array,
1518 SCM_ARRAY_FLAG_CONTIGUOUS, SCM_I_ARRAY_FLAG_CONTIGUOUS,
1519 SCM_ENCLOSE_ARRAYP, SCM_I_ENCLOSE_ARRAYP,
1520 SCM_ARRAY_NDIM, SCM_I_ARRAY_NDIM,
1521 SCM_ARRAY_CONTP, SCM_I_ARRAY_CONTP,
1522 SCM_ARRAY_MEM, SCM_I_ARRAY_MEM,
1523 SCM_ARRAY_V, SCM_I_ARRAY_V,
1524 SCM_ARRAY_BASE, SCM_I_ARRAY_BASE,
1525 SCM_ARRAY_DIMS, SCM_I_ARRAY_DIMS,
1526 scm_t_array, scm_i_t_array): Likewise.
1527 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
1528 Moved from unif.h to unif.c.
1529 (scm_c_array_rank): New.
1530 (scm_array_rank): Reimplement using it.
1531
1532 * deprecated.h, deprecated.c (SCM_ARRAYP, SCM_ARRAY_NDIM,
1533 SCM_ARRAY_CONTP, SCM_ARRAY_MEM, SCM_ARRAY_V, SCM_ARRAY_BASE,
1534 SCM_ARRAY_DIMS, scm_t_array): New deprecated versions.
1535
1536 2005-01-11 Marius Vollmer <mvo@zagadka.de>
1537
1538 * ramap.c: Replace uses of scm_make_ra with scm_i_make_ra.
1539 (GVREF, GVSET): New abbreviations. Use them everywhere instead of
1540 scm_c_generalized_vector_ref and scm_cvref, and
1541 scm_c_generalized_vector_set_x, respectively.
1542 (RVREF, IVDEP, BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
1543 UNARY_ELTS_CODE, UNARY_PAIR_ELTS_CODE): Removed since unused.
1544
1545 * unif.h, unif.c (indices_to_pos, scm_array_handle_pos): Renamed
1546 former to latter and made public. Changed all uses.
1547 (scm_i_make_ra): Made public, changed tag param to enclosed flag.
1548 (scm_make_ra): Deprecated, changed all uses to scm_i_make_ra.
1549 (scm_i_shap2ra): New internal version of scm_shap2ra.
1550 (scm_shap2ra): Deprecated, changed all uses to scm_i_shap2ra.
1551 (scm_i_ra_set_contp): New internal version of scm_ra_set_contp.
1552 (scm_ra_set_contp): Deprecated, changed all uses to
1553 scm_i_ra_set_contp.
1554 (scm_cvref, scm_aind, scm_raprin1): Deprecated.
1555
1556 2005-01-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1557
1558 * eval.c (scm_eval): Added example to docstring. Thanks to Issac
1559 Trotts!
1560
1561 * unif.c (scm_list_to_typed_array): Allow the specification of the
1562 upper bound as well. This is needed for empty arrays.
1563 (l2ra): Give needed number of elements in error message.
1564 (scm_i_print_array): Print length information for arrays that need
1565 it.
1566 (scm_i_read_array): Parse it.
1567
1568 * deprecated.h, deprecated.c (SCM_CHARS, SCM_UCHARS, SCM_LENGTH,
1569 scm_i_object_chars, scm_i_object_length): Brought back from the
1570 dead.
1571
1572 2005-01-10 Marius Vollmer <mvo@zagadka.de>
1573
1574 * ramap.c: Replaced single-index uses of scm_array_set_x with
1575 scm_c_generalized_vector_set_x.
1576
1577 * unif.c (scm_array_rank, scm_array_dimensions,
1578 scm_shared_array_offset, scm_shared_array_increments,
1579 scm_array_ref, scm_array_set_x): Use scm_t_array_handle operations
1580 to simplify code and make it more general.
1581 (scm_shared_array_root): Work with all kinds of arrays, including
1582 naked vectors.
1583 (indices_to_pos): New.
1584 (scm_make_shared_array): Use it instead of scm_aind; use handle
1585 for oldra.
1586
1587 2005-01-10 Kevin Ryde <user42@zip.com.au>
1588
1589 * posix.c (scm_mkstemp): Update docstring from manual.
1590
1591 * stime.c (scm_mktime): Missing default errno=EINVAL from prev change.
1592
1593 2005-01-09 Marius Vollmer <mvo@zagadka.de>
1594
1595 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_i_uniform_vector_ref_proc,
1596 scm_i_uniform_vector_set_proc): New.
1597 (u8ref, u8set, s8ref, s8set, etc): New.
1598 (uvec_reffers, uvec_setters): New.
1599 (uvec_to_list): Use generic scm_array_handle_ref instead of
1600 uvec_fast_ref since scm_array_handle_ref should be faster now.
1601 (coerce_to_uvec, scm_c_uniform_vector_ref,
1602 scm_c_uniform_vector_set_x): Likewise.
1603
1604 * unif.h, unif.c, inline.h (scm_i_t_array_ref, scm_i_t_array_set):
1605 New.
1606 (scm_t_array_handle): Added ref, set, elements and
1607 writable_elements for fast inline operation of
1608 scm_array_handle_ref and scm_array_handle_set.
1609 (scm_array_handle_ref, scm_array_handle_set): Moved to inline.h
1610 and replaced with inline code that simply calls the ref/set
1611 members of the handle.
1612 (enclosed_ref, vector_ref, string_ref, bitvector_ref, memoize_ref,
1613 enclosed_set, vector_set, string_set, bitvector_set, memoize_set):
1614 New.
1615 (scm_array_handle_get): Initialize ref/set fields to memoize_ref
1616 and memoize_set.
1617 (scm_bitvector_fill_x, scm_bitvector_to_list, scm_bit_count,
1618 scm_bit_position, scm_bit_set_star_x, scm_bit_count_star,
1619 scm_bit_invert_x): Correctly multiply index with increment in the
1620 general case.
1621
1622 * unif.c (scm_array_handle_set): Correctly execute only one
1623 alternative. D'Oh!
1624 (scm_list_to_typed_array, l2ra): Use scm_t_array_handle to fill
1625 the array; this covers all cases with much simpler code.
1626
1627 * srfi-4.c (scm_uniform_element_size): Deprecated implementation
1628 as well.
1629
1630 2005-01-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1631
1632 * srfi-4.c (uvec_type): New.
1633 (uvec_to_list, uvec_ref, uvec_set_x, scm_c_uniform_vector_ref,
1634 scm_c_uniform_vector_x): Use it to get concrete type.
1635
1636 * unif.h (scm_t_array_dim): Changed type of members to ssize_t, to
1637 fit the docs.
1638
1639 * unif.c (ra2l): Handle zero rank arrays.
1640 (scm_i_print_array): Print zero rank arrays specially.
1641 (tag_to_type): Return #t for an empty tag, not the empty symbol.
1642 (scm_i_read_array): Allow zero rank arrays.
1643
1644 2005-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1645
1646 * hashtab.h, hashtab.c (SCM_HASHTAB_BUCKET_LOC): Removed.
1647 (scan_weak_hashtables): Rewrote its use with SCM_HASHTAB_BUCKET
1648 and SCM_SET_HASHTAB_BUCKET.
1649
1650 * print.h, print.c (scm_print_state, SCM_PRINT_STATE_LAYOUT):
1651 Removed ref_stack field.
1652 (PSTATE_STACK_REF, PSTATE_STACK_SET): New, for accessing the stack
1653 of a print state. Use them everywhere instead of ref_stack.
1654
1655 * srfi-4.h (scm_uniform_element_size): Deprecated for real.
1656
1657 * srfi-4.c: Include deprecation.h.
1658
1659 * vectors.h, vectors.c, unif.h, unif.c, deprecated.h,
1660 deprecated.c, eq.c
1661 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Removed.
1662 (scm_vector_elements, scm_vector_writable_elements,
1663 scm_generalized_vector_get_handle): Moved to vectors.[hc] from
1664 unif.[hc].
1665 (SCM_SIMPLE_VECTOR_LOC): Removed.
1666 (SCM_VECTOR_MAX_LENGTH, SCM_VECTOR_LENGTH, SCM_VELTS,
1667 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET,
1668 scm_vector_equal_p): Moved from vectors.[hc] to deprecated.[hc].
1669 (scm_vector_equal_p, scm_i_vector_equal_p): Renamed former to
1670 latter. Changed use in eq.c.
1671
1672 2005-01-07 Marius Vollmer <mvo@zagadka.de>
1673
1674 Make the uniform vector routines also deal with one dimensional
1675 arrays.
1676
1677 * srfi-4.c (SCM_IS_UVEC): New, use it instead of
1678 SCM_SMOB_PREDICATE in this file.
1679 (is_uvec): Also recognize one-dimensional uniform numeric arrays
1680 of the right type.
1681 (scm_is_uniform_vector): Likewise.
1682 (uvec_fast_ref): Made BASE param const.
1683 (uvec_writable_elements, uvec_elements): New.
1684 (uvec_to_list, uvec_ref, uvec_set_x, uvec_length,
1685 scm_c_uniform_vector_length, scm_c_uniform_vector_ref,
1686 scm_c_uniform_set_x): Use them to also deal with one-dimensional
1687 arrays.
1688 (scm_uniform_vector_ref, scm_uniform_vector_set_x): Deprecate old
1689 argument convention.
1690 (scm_uniform_vector_to_list): Let uvec_to_list do all the
1691 checking.
1692 (scm_uniform_vector_length): Use uvec_length.
1693
1694 2005-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1695
1696 * srfi-4.h, srfi-4.c (scm_c_uniform_vector_element_size,
1697 scm_c_uniform_vector_size): Removed.
1698 (scm_array_handle_uniform_element_size): New.
1699
1700
1701 * unif.h (scm_array_handle_ref, scm_array_handle_set): Changed
1702 type of POS parameter to be signed, positions can be negative.
1703 (scm_array_handle_release): New, changed all uses of
1704 scm_t_array_handle to properly call it.
1705 (scm_vector_get_handle, scm_generalized_vector_get_handle):
1706 Renamed former to latter, changed all uses.
1707
1708 2005-01-05 Marius Vollmer <mvo@zagadka.de>
1709
1710 Updated bitvector routines to also use scm_t_array_handles.
1711
1712 * unif.h (scm_bitvector_elements,
1713 scm_bitvector_writable_elements): Use a scm_t_array_handle and
1714 deliver offset, length and increment to caller. Changed all uses.
1715 (scm_bitvector_release_elements,
1716 scm_frame_bitvector_release_elements,
1717 scm_bitvector_release_writable_elements,
1718 scm_frame_bitvector_release_writable_elements): Removed.
1719 (scm_array_handle_bit_elements,
1720 scm_array_handle_bit_writable_elements,
1721 scm_array_handle_bit_elements_offset): New.
1722 (scm_make_typed_array): The special value for non-initialized
1723 arrays is now SCM_UNSPECIFIED. The old special value SCM_BOOL_F
1724 was a valid value to fill bitvectors with, so it can't really be
1725 specialed out.
1726
1727 2005-01-04 Kevin Ryde <user42@zip.com.au>
1728
1729 * stime.c (scm_strftime): Free t.tm_zone produced by bdtime2c.
1730 Reported by Bill Schottstaedt.
1731
1732 2005-01-02 Marius Vollmer <mvo@zagadka.de>
1733
1734 * sort.c (quicksort): Added INC parameter for non-contigous
1735 vectors.
1736 (quicksort1): New, for contigous vectors. Both functions are
1737 generated from the same code by including "quicksort.i.c".
1738 (scm_restricted_vector_sort_x): Call one of quicksort and
1739 quicksort1, depending on increment of vector.
1740 (scm_sort): Simply call scm_sort_x on a copy of the list or
1741 vector.
1742 (scm_merge_vector_x, scm_merge_vector_step): Changed indices to
1743 size_t, added inc parameter.
1744 (scm_stable_sort_x): Allocate temporary storage as Scheme vector
1745 so that it doesn't leak.
1746 (scm_stable_sort): Simply call scm_stable_sort_x on a copy of the
1747 list or vector.
1748
1749 * ramap.c (scm_array_map_x): Do not try to convert fill value
1750 before filling, any necessary conversion is done while storing.
1751
1752 * gc-card.c (scm_i_sweep_card): Call scm_i_vector_free instead of
1753 doing it inline.
1754
1755 * hashtab.c, hashtab.h (SCM_HASHTABLE_BUCKETS): Removed.
1756 (SCM_HASHTABLE_BUCKET, SCM_HASHTABLE_BUCKET_LOC): New. Replaced
1757 all uses of SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
1758
1759 * tags.h, weaks.c, vports.c, hashtab.c, convert.c, sort.c,
1760 convert.c, convert.h, convert.i.c, deprecated.c, environments.c,
1761 eval.c, filesys.c, fluids.c, gc-mark.c, gh.h, gh_data.c, goops.c,
1762 hash.c, init.c, libguile_la-arrays.loT, modules.c, net_db.c,
1763 objects.c, ports.c, posix.c, print.c, random.c, read.c,
1764 regex-posix.c, scmsigs.c, socket.c, stime.c, symbols.c: Use new
1765 vector elements API or simple vector API, as appropriate. Removed
1766 SCM_HAVE_ARRAYS ifdefery. Replaced all uses of
1767 SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
1768
1769 * srfi-4.h, srfi-4.c,
1770 srfi-4.i.c (scm_array_handle_uniform_elements,
1771 scm_array_handle_uniform_writable_elements,
1772 scm_uniform_vector_elements,
1773 scm_uniform_vector_writable_elements):
1774 (scm_<foo>vector_elements, scm_<foo>vector_writable_elements): Use
1775 scm_t_array_handle, deliver length and increment.
1776 (scm_array_handle_<foo>_elements,
1777 scm_array_handle_<foo>_writable_elements): New.
1778
1779 * gen-scmconfig.h.in (SCM_I_GSC_HAVE_ARRAYS): Removed.
1780 * gen-scmconfig.c: Hard code SCM_HAVE_ARRAYS to "1".
1781
1782 * unif.h, unif.c (scm_t_array_handle, scm_array_get_handle,
1783 scm_array_handle_rank, scm_array_handle_dims, scm_array_handle_ref
1784 scm_array_handle_set, scm_array_handle_elements
1785 scm_array_handle_writable_elements, scm_vector_get_handle): New.
1786 (scm_make_uve, scm_array_prototype, scm_list_to_uniform_array,
1787 scm_dimensions_to_uniform_array): Deprecated for real.
1788 (scm_array_p, scm_i_array_p): Use latter for SCM_DEFINE since
1789 snarfing wont allow a mismatch between C and Scheme arglists.
1790 (scm_make_shared_array, scm_enclose_array): Correctly use
1791 scm_c_generalized_vector_length instead of
1792 scm_uniform_vector_length.
1793
1794 * validate.h (SCM_VALIDATE_VECTOR,
1795 SCM_VALIDATE_VECTOR_OR_DVECTOR): use scm_is_simple_vector instead
1796 of SCM_VECTORP.
1797
1798 * weaks.h, weaks.c: Use new internal weak vector API from
1799 vectors.h.
1800
1801 * Makefile.am (libguile_la_SOURCES, DOT_X_FILES, DOT_DOC_FILES,
1802 EXTRA_libguile_la_SOURCES): Changed ramap.c and unif.c from being
1803 'extra' to being regular sources.
1804 (noinst_HEADERS): Added quicksort.i.c.
1805 * quicksort.i.c: New file.
1806
1807 * vectors.h, vector.c (SCM_VECTORP, SCM_VECTOR_LENGTH, SCM_VELTS,
1808 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET): Deprecated
1809 and reimplemented. Replaced all uses with scm_vector_elements,
1810 scm_vector_writable_elements, or SCM_SIMPLE_VECTOR_*, as
1811 appropriate.
1812 (scm_is_simple_vector, SCM_SIMPLE_VECTOR_LENGTH,
1813 SCM_SIMPLE_VECTOR_REF, SCM_SIMPLE_VECTOR_SET,
1814 SCM_SIMPLE_VECTOR_LOC): New.
1815 (SCM_VECTOR_BASE, SCM_SET_VECTOR_BASE, SCM_VECTOR_MAX_LENGTH,
1816 SCM_MAKE_VECTOR_TAG, SCM_SET_VECTOR_LENGTH,
1817 SCM_VELTS_AS_STACKITEMS, SCM_SETVELTS, SCM_GC_WRITABLE_VELTS):
1818 Removed.
1819 (scm_vector_copy): New.
1820 (scm_vector_elements, scm_vector_writable_elements): Use
1821 scm_t_array_handle, deliver length and increment. Moved to
1822 unif.h. Changed all uses.
1823 (scm_vector_release_elements,
1824 scm_vector_release_writable_elements,
1825 (scm_frame_vector_release_elements,
1826 scm_frame_vector_release_writable_elements): Removed.
1827 (SCM_I_IS_VECTOR, SCM_I_VECTOR_ELTS, SCM_I_VECTOR_WELTS,
1828 SCM_I_VECTOR_LENGTH, scm_i_vector_free): New internal API.
1829 (SCM_I_WVECTP SCM_I_WVECT_LENGTH SCM_I_WVECT_VELTS
1830 SCM_I_WVECT_GC_WVELTS SCM_I_WVECT_TYPE SCM_I_WVECT_GC_CHAIN
1831 SCM_I_SET_WVECT_GC_CHAIN, scm_i_allocate_weak_vector): New, for
1832 weak vectors.
1833
1834 2004-12-29 Marius Vollmer <mvo@zagadka.de>
1835
1836 No longer use creators to specify the type of an array. Creators
1837 expose the fact that arrays are wrapped around vectors, but that
1838 might change.
1839
1840 * srfi-4.h (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector,
1841 scm_i_proc_make_u16vector, scm_i_proc_make_s16vector,
1842 scm_i_proc_make_u32vector, scm_i_proc_make_s32vector,
1843 scm_i_proc_make_u64vector, scm_i_proc_make_s64vector,
1844 scm_i_proc_make_f32vector, scm_i_proc_make_f64vector,
1845 scm_i_proc_make_c32vector, scm_i_proc_make_c64vector,
1846 uvec_proc_vars): Removed.
1847 (scm_i_generalized_vector_creator): Removed.
1848 (scm_i_generalized_vector_type): New.
1849
1850 * unif.h, unif.c (scm_typed_array_p, scm_make_array,
1851 scm_make_typed_array, scm_array_type, scm_list_to_array,
1852 scm_list_to_typed_array, scm_is_array, scm_is_typed_array): New.
1853 (scm_array_creator): Removed.
1854 (scm_array_p): Deprecated second PROT argument.
1855 (scm_dimensions_to_uniform_array, scm_list_to_uniform_array):
1856 Deprecated, reimplemented in terms of scm_make_typed_array and
1857 scm_list_to_typed_array.
1858 (scm_i_proc_make_vector, scm_i_proc_make_string,
1859 scm_i_proc_make_bitvector): Removed.
1860 (type_creator_table, init_type_creator_table, type_to_creator,
1861 make_typed_vector): New.
1862 (scm_i_convert_old_prototype): Removed.
1863 (prototype_to_type): New.
1864 (scm_make_uve): Deprecated, reimplemented using make_typed_vector.
1865 (scm_array_dimensions): Use scm_list_1 instead of scm_cons for
1866 minor added clarity.
1867 (scm_make_shared_array, scm_ra2contig): Use make_typed_vector
1868 instead of scm_make_uve.
1869 (tag_creator_table, scm_i_tag_to_creator): Removed.
1870 (tag_to_type): New.
1871 (scm_i_read_array): Use scm_list_to_typed_array instead of
1872 scm_list_to_uniform_array.
1873
1874 2004-12-27 Marius Vollmer <mvo@zagadka.de>
1875
1876 * unif.h, unif.c (scm_bitvector_elements): Made return value "const".
1877 (scm_bitvector_writable_elements): New.
1878 (scm_bitvector_release, scm_bitvector_release_elements):
1879 Renamed former to latter. Added explicit call to
1880 scm_remember_upto_here_1.
1881 (scm_frame_bitvector_release,
1882 scm_frame_bitvector_release_elements): Renamed former to latter.
1883 (scm_bitvector_release_writable_elements,
1884 scm_bitvector_release_writable_elements): New.
1885 Changed all uses as required by the changes above.
1886
1887 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_uniform_vector_elements,
1888 scm_u8vector_elements, etc): Made return value "const".
1889 (scm_uniform_vector_writable_elements,
1890 scm_u8vector_writable_elements, etc): New.
1891 (scm_uniform_vector_release, scm_uniform_vector_release_elements):
1892 Renamed former to latter. Added explicit call to
1893 scm_remember_upto_here_1.
1894 (scm_frame_uniform_vector_release,
1895 scm_frame_uniform_vector_release_elements): Renamed former to latter.
1896 (scm_uniform_vector_release_writable_elements,
1897 scm_frame_uniform_vector_release_writable_elements): New. Takes
1898 crown of longest identifier yet.
1899 Changed all uses as required by the changes above.
1900
1901 * vectors.h, vectors.c (scm_c_vector_set_x): Make return type
1902 void.
1903 (scm_is_vector, scm_vector_p, scm_vector_length,
1904 scm_c_vector_length, scm_vector_ref, scm_c_vector_ref,
1905 scm_vector_set_x, scm_c_vector_set_x, scm_vector_to_list,
1906 scm_vector_move_left_x, scm_vector_move_right_x,
1907 scm_vector_fill_x): handle one-dimensional arrays.
1908 (scm_vector_elements, scm_vector_release_elements,
1909 scm_vector_frame_release_elements, scm_vector_writable_elements,
1910 scm_vector_release_writable_elements,
1911 scm_vector_frame_release_writable_elements): New.
1912 (scm_list_to_vector, scm_vector_to_list, scm_vector_fill,
1913 scm_vector_move_left_x, scm_vector_move_right_x): Use them.
1914
1915 * ramap.c (scm_ramapc, scm_raeql): Use
1916 scm_c_generalized_vector_length instead of
1917 scm_uniform_vector_length.
1918 (scm_ramap, rafe): Use scm_c_vector_ref instead of SCM_VELTS. use
1919 scm_c_generalized_vector_ref instead of scm_uniform_vector_ref.
1920
1921 2004-12-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1922
1923 * continuations.h, continuations.c (scm_t_contregs): New 'offset'
1924 member for relocating debug frames.
1925 (scm_make_continuation): Set it.
1926
1927 * stacks.c (read_frame, read_frames, scm_make_stack,
1928 scm_last_stack_frame, scm_stack_id): Use the new 'offset' member
1929 of continuations instead of calculating the offset ourselves.
1930 Relocate 'vect' member of scm_t_debug_frame.
1931
1932 2004-12-16 Kevin Ryde <user42@zip.com.au>
1933
1934 * ramap.c (scm_array_map_x): Check for at least one source argument.
1935
1936 2004-12-14 Kevin Ryde <user42@zip.com.au>
1937
1938 * srfi-13.c (string-any, string-every): Use a scheme wrapper around
1939 the C code so for the final call to the predicate procedure is a tail
1940 call, per SRFI-13 spec.
1941
1942 2004-12-10 Kevin Ryde <user42@zip.com.au>
1943
1944 * eq.c (scm_eq_p, scm_eqv_p, scm_equal_p): Update docstrings from
1945 recent revision to the reference manual.
1946
1947 * numbers.c (scm_modulo): Amend fixme comment about negative divisor
1948 with "%", C99 says it's well-defined.
1949
1950 * socket.c (scm_from_ipv6): Just use mpz_import. Don't bother trying
1951 to fit scm_from_ulong_long, since that uses mpz_import anyway. Don't
1952 bother trying to fit scm_from_ulong, not really worth the trouble if
1953 addresses are more than 4 bytes usually.
1954
1955 2004-11-30 Kevin Ryde <user42@zip.com.au>
1956
1957 * gc_os_dep.c (NetBSD): Test __m68k__ and __arm__ as well as m68k and
1958 arm32. Reported by Greg Troxel.
1959
1960 2004-11-14 mvo <mvo@zagadka.de>
1961
1962 * unif.c, unif.h (scm_i_cvref): Made non-static for ramap.c.
1963
1964 * Makefile.am (INCLUDES): It is "@LTDLINCL@", not "@LTDLINC@".
1965
1966 2004-11-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1967
1968 Enclosed arrays are now their own smob. This has been done to
1969 make the code more explicit about them and to prepare for the time
1970 when generalized vectors include arbitrary one-dimensional
1971 arrays. (Uptonow, enclosed arrays have been recognized by their
1972 use of an array as their storage 'vector'. When all generalized
1973 vectors are allowed as storage, including one-dimensional arrays,
1974 this will no longer work.)
1975
1976 * unif.h, unif.c: (scm_tc16_enclosed_array, SCM_ENCLOSED_ARRAYP):
1977 New.
1978 (exactly_one_third, singp): Removed.
1979 (scm_array_p, scm_array_dimensions, scm_shared_array_root,
1980 scm_shared_array_offset, scm_shared_array_increments): Handle
1981 enclosed arrays explicitely.
1982 (scm_array_rank): Likewise. Also, do not return zero for
1983 non-arrays, signal an error instead since arrays with rank zero do
1984 exist.
1985 (scm_i_make_ra): New, for specifying the tag of the new array.
1986 (scm_make_enclosed_array): Use it.
1987 (scm_make_ra): Reimplemented in terms of scm_i_make_ra.
1988 (scm_make_shared_array): Use scm_c_generalized_vector_length
1989 instead of scm_uniform_vector_length.
1990 (scm_array_in_bounds_p): Rewritten to be much cleaner.
1991 (scm_i_cvref): New, doing the job of scm_cvref.
1992 (scm_cvref): Use scm_i_cvref.
1993 (scm_array_ref): Do not accept non-arrays when no indices are
1994 given. Use scm_i_cvref to do the actual access.
1995 ("uniform-array-set1"): Do not register.
1996 (scm_array_set_x, scm_uniform_array_read_x,
1997 scm_uniform_array_write): Handle enclosed arrays explicitly.
1998 (ra2l): Use scm_i_cvref instead of scm_uniform_vector_ref to also
1999 handle enclosed arrays.
2000 (scm_array_to_list): Handle enclosed arrays explicitly.
2001 (rapr1): Removed.
2002 (scm_i_print_array_dimension): Use scm_i_cvref to also handle
2003 enclosed arrays.
2004 (scm_i_print_enclosed_array): New.
2005 (tag_proto_table, tag_creator_table): Renamed former to latter.
2006 Added "a" and "b" for strings and bitvectors, resp.
2007 (scm_i_tag_to_prototype, scm_i_tag_to_creator): Renamed former to
2008 latter. Tag "a" is in the table now, no need to handle it as a
2009 legacy tag.
2010 (scm_raprin1): Just call scm_iprin1.
2011 (scm_array_creator, scm_array_prototype): Handle enclosed arrays
2012 explicitly.
2013 (scm_init_unif): Initialize scm_tc16_enclosed_array smob.
2014 Use scm_i_print_array as printer for scm_tc16_array.
2015
2016 2004-11-10 Marius Vollmer <mvo@zagadka.de>
2017
2018 * ramap.c (cind): Changed second arg to be pointer to long instead
2019 of uniform vector.
2020 (scm_ramapc): Allocate index vector with scm_malloc and not as
2021 uniform vector. Wrap it in a frame so that it gets properly freed.
2022 (scm_array_index_map_x): Likewise.
2023
2024 * unif.c: Changed all uses of scm_array_prototype to
2025 scm_array_creator. (scm_i_get_old_prototype): Signal error when no
2026 prototype is known.
2027 (scm_uniform_array_read_x, scm_uniform_array_write): Reimplemented
2028 in terms of scm_uniform_vector_read_x and
2029 scm_uniform_vector_write, respectively. Strings and
2030 bitvector support has been dropped.
2031
2032 * srfi-4.h, srfi-4.c: Do not include <libguile.h>, include the
2033 needed files directly. Include config.h, <unistd.h> and <io.h>
2034 when available.
2035 (scm_uniform_vector_read_x, scm_uniform_vector_write): New.
2036
2037 2004-11-09 Marius Vollmer <mvo@zagadka.de>
2038
2039 * gh_data.c (gh_uniform_vector_length): Properly use
2040 scm_c_uniform_vector_length instead of scm_uniform_vector_length.
2041
2042 2004-11-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2043
2044 * srfi-4.h (scm_c_uniform_vector_ref, scm_c_uniform_vector_set_x):
2045 New.
2046 (scm_i_uniform_vector_creator): Removed.
2047 (scm_i_generalized_vector_creator): New.
2048 (scm_uniform_vector_length, scm_uniform_element_size): Do not
2049 handle generalized vectors, only uniform numeric vectors.
2050 (alloc_uvec): Do length check here...
2051 (make_uvec): ...but not here.
2052 (coerce_to_uvec): Use new generalized vector functions to handle
2053 all kinds of vectors in one go.
2054
2055 * tags.h (scm_tc7_bvect): Renamed to scm_tc7_unused7, renaming the
2056 remaining scm_tc7_unused tags to get a neatly ordered list.
2057
2058 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c: Do no
2059 longer handle scm_tc7_bvect bitvectors.
2060
2061 * ramap.c: Use the new generalized vector functions to handle all
2062 vector like things.
2063
2064 * vectors.h, vectors.c (scm_is_vector, scm_c_vector_length,
2065 scm_c_vector_ref, scm_c_vector_set_x, scm_generalized_vector_p,
2066 scm_generalized_vector_length, scm_generalized_vector_ref,
2067 scm_generalized_vector_set_x, scm_generalized_vector_to_list,
2068 scm_is_generalized_vector, scm_c_generalized_vector_length,
2069 scm_c_generalized_vector_ref, scm_c_generalized_vector_set_x):
2070 New.
2071
2072 * unif.h, unif.c (scm_bitvector_p, scm_bitvector,
2073 scm_make_bitvector, scm_bitvector_length, scm_bitvector_ref,
2074 scm_bitvector_set_x, scm_list_to_bitvector, scm_bitvector_to_list,
2075 scm_bitvector_fill_x, scm_is_bitvector, scm_c_make_bitvector,
2076 scm_c_bitvector_length, scm_c_bitvector_ref,
2077 scm_c_bitvector_set_x, scm_bitvector_elements,
2078 scm_bitvector_release, scm_frame_bitvector_release,
2079 scm_tc16_bitvector, bitvector_free, bitvector_print,
2080 bitvector_equalp, count_ones, find_first_one): New.
2081 (scm_bit_count, scm_bit_position, scm_bit_set_star_x,
2082 scm_bit_count_star, scm_bit_invert_x, scm_istr2bve): Rewritten
2083 using the new C API for bitvectors and maybe count_ones or
2084 find_first_one, as appropriate.
2085 (SCM_I_MAX_LENGTH, SCM_BITVECTOR_P, SCM_BITVECTOR_BASE,
2086 SCM_SET_BITVECTOR_BASE, SCM_BITVECTOR_MAX_LENGTH,
2087 SCM_BITVECTOR_LENGTH, SCM_MAKE_BITVECTOR_TAG,
2088 SCM_SET_BITVECTOR_LENGTH): Removed. Replaced all uses with the
2089 new functions from above.
2090 (scm_i_proc_make_vector, scm_i_proc_make_string,
2091 scm_i_proc_make_bitvector): Made non-static for use in
2092 scm_i_generalized_vector_creator.
2093 (scm_make_u1vector): Removed, replaced by scm_make_bitvector.
2094 (scm_make_uve): Validate that the created object is a generalized
2095 vector.
2096 (scm_i_legacy_tag): Removed.
2097 (scm_i_print_array): Do it here.
2098 (scm_raprin1): Only print enclosed arrays.
2099
2100 * Makefile.am (DOT_DOC_FILES): Added srfi-4.doc.
2101
2102 2004-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2103
2104 * srfi-4.c (make_uvec): Use SCM_I_SIZE_MAX instead of SIZE_MAX for
2105 added portability.
2106
2107 * chars.c (scm_charnames, scm_charnums): Added "sp" as an alias
2108 for "space". Thanks to Bruce Korb!
2109
2110 * rw.c (scm_read_string_x_partial): Bugfix, apply offset to dest
2111 only after dest has been set. Thanks to Hyper Division!
2112
2113 * gh_data.c (gh_uniform_vector_length): Use
2114 scm_uniform_vector_length instead of SCM_UVECTOR_LENGTH.
2115
2116 2004-11-03 Marius Vollmer <mvo@zagadka.de>
2117
2118 * unif.h (SCM_UVECTOR_BASE, SCM_SET_UVECTOR_BASE,
2119 SCM_UVECTOR_MAXLENGTH, SCM_UVECTOR_LENGTH, SCM_MAKE_UVECTOR_TAG,
2120 SCM_SET_UVECTOR_LENGTH): Removed.
2121
2122 2004-11-02 Marius Vollmer <mvo@zagadka.de>
2123
2124 Mac OS X and OpenBSD compatibility patches from Andreas Vögele.
2125 Thanks!
2126
2127 * backtrace.c (scm_display_backtrace_with_highlights): Join the
2128 first and the second line of the SCM_DEFINE macro call, since old
2129 preprocessors cannot handle definitions that are split into two
2130 lines.
2131
2132 * inline.h (scm_cell, scm_double_cell): Don't use C99 variable
2133 declarations.
2134
2135 * pairs.c (scm_i_chase_pairs): Replace scm_t_bits with
2136 scm_t_uint32 to fix the mismatch between the function declaration
2137 and definition.
2138
2139 * sort.c (quicksort): Don't use C99 variable declarations.
2140
2141 * srfi-4.c (uvec_fast_ref): Avoid a compiler warning by returning
2142 SCM_BOOL_F if no type matches.
2143
2144 * threads.c (thread_print): Cast a pointer to size_t when printing
2145 with scm_uintprint.
2146
2147 * unif.c (scm_i_tag_to_prototype): Make sure that "instead" gets
2148 defined.
2149 (scm_array_prototype): Deprecated.
2150
2151 2004-11-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2152
2153 * srfi-4.h, srfi-4.c (scm_frame_uniform_vector_release): New.
2154 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use it to get
2155 more efficient access to the u32vector.
2156
2157 * tags.h (scm_tc7_llvect, scm_tc7_uvect, scm_tc7_fvect,
2158 scm_tc7_dvect, scm_tc7_cvect, scm_tc7_svect, scm_tc7_byvect,
2159 scm_tc7_ivect): Renamed to scm_tc7_unused_1 to scm_tc7_unused_8.
2160
2161 * validate.h (SCM_VALIDATE_VECTOR_OR_DVECTOR): Accept f64vectors
2162 instead of the old-style dvectors.
2163
2164 * gh_data.c: Use new-style uniform arrays in place of old-style
2165 ones.
2166
2167 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c,
2168 ramap.c, unif.c: Do no longer handle old-style uniform vectors.
2169
2170 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use u32vectors
2171 instead of old-sytle uvectors.
2172
2173 * convert.c, convert.i.c: Rewritten completely, using
2174 scm_any_to_u8vector, etc and other new-style uniform vector
2175 functions.
2176
2177 * random.c (scm_random_solid_sphere_x,
2178 scm_random_hollow_sphere_x): Do not validate vector argument, this
2179 is already done elsewhere.
2180
2181 * srfi-4.h, srfi-4.i.c, srfi-4.c (coerce_to_uvec,
2182 scm_any_to_u8vector, etc): New.
2183 (scm_uniform_element_size, scm_uniform_vector_length): Do no
2184 longer handle old-style uniform vectors.
2185
2186 * read.c (scm_lreadr): Bugfix: include the last bit in the
2187 bit vector.
2188
2189 2004-10-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2190
2191 * unif.h, unif.c (scm_array_creator): New.
2192 (scm_i_get_old_prototype): New.
2193 (scm_array_prototype): use it to return old-style prototype, never
2194 return creators.
2195 (scm_make_uve): Use scm_call_1 instead of scm_call_2 with a second
2196 arg of SCM_UNDEFINED. The latter is wrong.
2197
2198 * unif.h, unif.c (scm_make_u1vector): New, but only temporary.
2199 (make_uve): Removed.
2200 (scm_i_proc_make_vector, scm_i_proc_make_string,
2201 scm_i_proc_make_u1vector): New.
2202 (scm_init_unif): Initialize them.
2203 (scm_i_convert_old_prototype): New.
2204 (scm_make_uve): Use it to get the creator procedure. Removed all
2205 old code that created old-style uniform vectors.
2206 (scm_array_p): Handle generic vectors.
2207 (scm_dimensions_to_uniform_array): Do not fill new array with
2208 prototype when that is a procedure.
2209 (scm_list_to_uniform_array): Also accept a list of lower bounds as
2210 the NDIM argument.
2211 (scm_i_print_array): Print rank for shared or non-zero-origin
2212 vectors.
2213 (tag_proto_table, scm_i_tag_to_prototype, scm_i_read_array): New.
2214 (scm_raprin1): Do not call scm_i_array_print for enclosed arrays,
2215 which I do not understand yet.
2216 (scm_array_prototype): Explicitely handle generic vectors.
2217
2218 * numbers.c, number.h (scm_i_print_complex, icmplx2str): New.
2219 (iflo2str): Use icmplx2str for complex numbers.
2220
2221 * srfi-4.c, srfi-4.h (scm_i_read_homogenous_vector,
2222 scm_i_uniform_vector_prototype): Removed.
2223 (scm_i_uniform_vector_creator): New.
2224 (SCM_UVEC_C32, scm_c32vector, scm_make_c32vector, etc,
2225 SCM_UVEC_C64, scm_c64vector, scm_make_c64vector, etc): New.
2226 Updated all tables and generic functions to support them.
2227 (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector, etc): New.
2228 (scm_init_srfi_4): Initialize them.
2229
2230 * srfi-4.i.c (scm_take_u8vector, etc): use uvec_sizes instead of
2231 sizeof(CTYPE) as explained in the comment.
2232
2233 * read.c (scm_lreadr): Call scm_i_read_array for all characters
2234 following '#' that can start an array. Explicitely disambiguate
2235 'i' and 'e' between introducing numbers and uniform vectors. Do
2236 not call scm_i_read_homogenous_vector, since that is also handled
2237 by scm_i_read_array now.
2238
2239 2004-10-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2240
2241 First cut at integrating uniform vectors from srfi-4 with the rest
2242 of Guile. This change replaces scm_tc7_byvect with a s8 uniform
2243 vector. The plan is to gradually replace one type after the other
2244 until none is left and then to consider general cleanups and
2245 optimizations.
2246
2247 * srfi-4.h, srfi-4.i.c (scm_u8vector_elements, etc): New.
2248
2249 * srfi-4.h, srfi-4.c (scm_uniform_vector_p,
2250 scm_uniform_vector_ref, scm_uniform_vector_set_x,
2251 scm_uniform_vector_to_list, scm_is_uniform_vector,
2252 scm_c_uniform_vector_lengths, scm_c_uniform_vector_size,
2253 scm_uniform_vector_elements, scm_uniform_vector_element_size,
2254 scm_uniform_vector_release): New.
2255 (scm_i_uniform_vector_prototype, scm_i_uniform_vector_tag): New.
2256 (scm_uniform_element_size, scm_uniform_vector_length): Moved here
2257 from unif.h, unif.c and extended to handle both the old and new
2258 uniform vectors.
2259
2260 * tags.h (scm_tc7_byvect): Commented out.
2261
2262 * unif.h, unif.c (scm_uniform_vector_ref, scm_array_ref): Renamed
2263 the former to the latter.
2264 (scm_uniform_vector_length, scm_uniform_element_size): Moved to
2265 srfi-4.h, srfi-4.c.
2266 (scm_make_uve): Call scm_make_s8vector for #\nul prototype.
2267 (scm_array_p, scm_array_rank, scm_array_dimensions,
2268 scm_transpose_array, scm_enclose_array, scm_array_ref, scm_cvref,
2269 scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
2270 scm_array_to_list, scm_array_prototype): Handle srfi-4 uniform
2271 vectors. Removed code for scm_tc7_byvect.
2272 (scm_dimensions_to_uniform_array): Fill array with 0 when
2273 prototype is #\nul.
2274 (scm_i_print_array_dimension, scm_i_legacy_tag,
2275 scm_i_print_array): New.
2276 (scm_raprin1): Call scm_i_print_array for arrays. Removed code
2277 for scm_tc7_byvect.
2278
2279 * ramap.c (scm_ra_matchp, scm_array_fill_int, racp,
2280 scm_array_index_map_x, raeql_1, scm_array_equal_p): Handle srfi-4
2281 uniform vectors. Removed code for scm_tc7_byvect
2282
2283 * print.c (iprin1): Removed code for scm_tc7_byvect.
2284 * objects.c (scm_class_of): Likewise.
2285 * gc-mark.c (scm_gc_mark_dependencies): Likewise.
2286 * gc-card.c (scm_i_sweep_card): Likewise.
2287 * evalext.c (scm_self_evaluating_p): Likewise.
2288 * eq.c (scm_equal_p): Likewise.
2289
2290 * gh_data.c (gh_chars2byvect): Reimplemented with
2291 scm_make_s8vector.
2292 (gh_scm2chars): Handle s8vectors, removed code for scm_tc7_byvect.
2293
2294 * srfi-4.c (take_uvec): New.
2295 (alloc_uvec): Use it.
2296 * srfi-4.h, srfi-4.i.c (scm_take_u8vector, etc): New.
2297
2298 * random.c (vector_scale, vector_scale_x): Renamed former to the
2299 latter, since it modifies its argument.
2300 (vector_scale_x, vector_sum_squares, scm_random_normal_vector_x):
2301 Do not use scm_universal_vector_length for non-uniform vectors.
2302 Use scm_f64vector_elements to access innards of uniform vectors.
2303
2304 * convert.i.c: Convert srfi-4 style uniform vectors when
2305 requested.
2306 * convert.c (scm_c_scm2chars, scm_c_chars2scm,
2307 scm_c_chars2byvect): Use a s8vector instead of a scm_tc7_byvect.
2308
2309 2004-10-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2310
2311 * numbers.h, numbers.c (scm_i_print_double): New.
2312
2313 * srfi-4.c, srfi-4.h, srfi-4.i.c: New files, initially from
2314 ../srfi/ but heavily modified.
2315 * Makefile.am: Add them in all the right places.
2316 * init.c (scm_init_guile_1): Call scm_init_srfi_4.
2317 * read.c (scm_lreadr): Call scm_i_read_homogenous_vector for '#f',
2318 '#u', and '#s'.
2319
2320 * read.h, read.c (scm_i_input_error): Renamed from scm_input_error
2321 and made non-static. Changed all uses.
2322
2323 2004-10-22 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2324
2325 * variable.c, threads.c, struct.c, stackchk.c, smob.c, root.c,
2326 print.c, ports.c, mallocs.c, hooks.c, hashtab.c, fports.c,
2327 guardians.c, filesys.c, coop-pthreads.c, continuations.c: Use
2328 scm_uintprint to print unsigned integers, raw heap words, and
2329 adresses, using a cast to scm_t_bits to turn pointers into
2330 integers.
2331
2332 * unif.c: Include "libguile/print.h".
2333
2334 * numbers.h, numbers.c (SCM_T_INTBUFLEN): Increased to cover
2335 scm_t_intmax values.
2336 (scm_uint2str): New, for scm_t_uintmax.
2337 (scm_iint2str): Argument type changed to scm_t_intmax,
2338 reimplemented in terms of scm_uint2str.
2339
2340 * print.c, print.h (scm_uintprint): New, for printing
2341 scm_t_uintmax values.
2342 (scm_intprint): Argument type changed to scm_t_intmax.
2343
2344 * sort.c (quicksort, scm_merge, scm_merge_list_x,
2345 scm_merge_list_step, scm_merge_vector_step): Inserted SCM_TICKs at
2346 strategic places so that the loops can be interrupted.
2347
2348 * Makefile.am (INCLUDES): Use @LTDLINC@ instead of
2349 "-I$(top_srcdir)/libguile-ltdl".
2350 (libguile_la_LIBADD): Use @LIBLTDL@ instead of
2351 "../libguile-ltdl/libguile-ltdl.a".
2352
2353 * guile.c, dynl.c: Switched to using libltdl directly. Replaced
2354 all references to scm_lt_* with just lt_*. Include <ltdl.h>
2355 instead of <libguile-ltdl.h>.
2356
2357 2004-10-20 Marius Vollmer <mvo@zagadka.de>
2358
2359 * sort.c (quicksort): Copy pivot out of the array while
2360 constructing the partitions; it could get overwritten otherwise.
2361 Because of the ultimate insertion sort, this bug did not cause
2362 quicksort to fail, it just put all the burdon on the insertion
2363 sort and was thus very slow. Thanks to Rolan Orre for reporting
2364 the slowness!
2365
2366 2004-10-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2367
2368 * numbers.c (scm_i_range_error): New.
2369 * conv-integer.i.c, conv-uinteger.i.c: Use it instead of
2370 scm_out_of_range.
2371
2372 * sort.c (scm_restricted_vector_sort_x): Validate startpos <=
2373 endpos. State inclusiveness/exclusiveness of bounds in docstring.
2374
2375 * unif.c (scm_array_p): When no prototype is given, explicitely
2376 test for allowable types, do not simply return true. Thanks to
2377 Roland Orre for reporting this!
2378
2379 * private-gc.h (SCM_DEFAULT_MAX_SEGMENT_SIZE): Increase to 20 Mib.
2380
2381 * gc-segment.c (scm_i_get_new_heap_segment): Limit size of new
2382 segment to scm_max_segment_size.
2383
2384 2004-10-08 Han-Wen Nienhuys <hanwen@xs4all.nl>
2385
2386 * gc.c (scm_igc): put scm_gc_running-- before running hooks.
2387
2388 * inline.h (scm_double_cell): abort if GC running.
2389 (scm_cell): idem.
2390
2391 2004-10-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2392
2393 * error.c (scm_wrong_type_arg): Do not talk about "argument" for
2394 pos == 0.
2395
2396 Keywords no longer store a 'dash symbol'. Instead, they store a
2397 symbol with their real name.
2398
2399 * keywords.h, keywords.c, deprecated.h, deprecated.c
2400 (SCM_KEYWORDP, SCM_KEYWORDSYM): Deprecated and implemented in
2401 terms of scm_is_keyword and scm_keyword_dash_symbol.
2402
2403 * keywords.h, keywords.c, discouraged.h, discouraged.c
2404 (scm_make_keyword_from_dash_symbol, scm_keyword_dash_symbol,
2405 scm_c_make_keyword): Discouraged.
2406
2407 * keywords.h, keywords.c (scm_symbol_to_keyword,
2408 scm_keyword_to_symbol): Implemented in C.
2409 (scm_is_keyword, scm_from_locale_keyword,
2410 scm_from_locale_keywordn): New.
2411
2412 * goops.c: Replaced SCM_KEYWORDP with scm_is_keyword.
2413
2414 * snarf.h (SCM_KEYWORD, SCM_GLOBAL_KEYWORD): Use
2415 scm_from_locale_keyword instead of scm_c_make_keyword.
2416
2417 * keywords.c (scm_symbol_to_keyword): Use SCM_ASSERT_TYPE for a
2418 better error message.
2419
2420 * deprecated.c: Include discouraged.h and keywords.h.
2421
2422 * read.c (scm_lreadr): Simply do (symbol->keyword (read)) after
2423 reading '#:' or ':'. See NEWS for consequences.
2424
2425 2004-09-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2426
2427 * read.c (scm_lreadr): Revert change from 2004-09-22: string
2428 literals are now read-write again (until SCM_STRING_CHARS is
2429 removed).
2430
2431 * strings.c (SCM_STRING_CHARS): Explicitely reject read-only
2432 strings with an error message that blames SCM_STRING_CHARS.
2433
2434 * options.c (change_option_setting): Use scm_car instead of
2435 explicit type check plus SCM_CAR.
2436
2437 * print.h, print.c (SCM_PRINT_HIGHLIGHT_PREFIX,
2438 SCM_PRINT_HIGHLIGHT_SUFFIX): New printer options.
2439 (scm_iprin1): Use them instead of the previoulsy hardcoded
2440 strings.
2441 (scm_init_print): Initialize them.
2442
2443 * backtrace.c (display_frame_expr): Do not remove control
2444 characters from the final string. Print it directly using
2445 scm_display.
2446
2447 * ramap.c (scm_array_equal_p): Include scm_tc7_svect in switch.
2448 Thanks to Roland Orre!
2449
2450 2004-09-29 Kevin Ryde <user42@zip.com.au>
2451
2452 * regex-posix.c (scm_regexp_exec): Correction to last change, should
2453 be whole original string in match struct, not offsetted substring.
2454
2455 2004-09-24 Han-Wen Nienhuys <hanwen@xs4all.nl>
2456
2457 * gc.c (scm_gc_unprotect_object): abort if called during GC.
2458
2459 2004-09-24 Marius Vollmer <mvo@zagadka.de>
2460
2461 * Makefile.am (EXTRA_DIST): Added gettext.h.
2462
2463 * smob.c, smob.h (scm_assert_smob_type): New.
2464
2465 * Makefile.am (guile_CFLAGS, guile_LDFLAGS, libguile_la_CFLAGS):
2466 Include GUILE_CFLAGS.
2467 (libguile_la_LIBADD): Removed THREAD_LIBS_LOCAL, which is unused
2468 now.
2469 (libpath.h): Put GUILE_CFLAGS in the build-info.
2470
2471 2004-09-23 Marius Vollmer <mvo@zagadka.de>
2472
2473 * print.h (scm_print_state): Added highlight_objects.
2474 * print.c (make_print_state, scm_free_print_state): Initialize it
2475 to SCM_EOL.
2476 (scm_iprin1): Wrap output in '{...}' when object is contained in
2477 highlight_objects.
2478
2479 * backtrace.h, backtrace.c (scm_display_backtrace_with_highlights,
2480 scm_backtrace_with_highlights): New. Set highlight_objects of
2481 printstate.
2482
2483 * error.c (scm_error_scm): Document new meaning of data/rest
2484 argument for out-of-range and wrong-type-arg errors.
2485 (scm_out_of_range, scm_out_of_range_pos, scm_wrong_type_arg,
2486 scm_wrong_type_arg_msg): Pass bad_value in rest argument of
2487 exception so that it gets highlighted in the backtrace.
2488 Don't talk about "argument" when not giving a position.
2489
2490 * throw.c (handler_message): The rest argument is the fourth
2491 argument, not everything after the third. Call
2492 scm_display_backtrace_with_highlights, passing the rest argument
2493 when appropriate.
2494
2495 2004-09-22 Marius Vollmer <mvo@zagadka.de>
2496
2497 From Jan Nieuwenhuizen <janneke@gnu.org> and Bruno Haible
2498 <bruno@clisp.org>:
2499
2500 * i18n.c: Handle --disable-nls (thanks Bruno).
2501
2502 * posix.c (scm_init_posix): Add LC_PAPER, LC_NAME, LC_ADDRESS,
2503 LC_TELEPHONE, LC_MEASUREMENT, LC_IDENTIFICATION.
2504
2505 * i18n.c (scm_i_to_lc_category): New name and export. Support all
2506 LC categories.
2507 * posix.c (scm_setlocale): Use it.
2508
2509 * i18n.h, i18n.c (scm_textdomain, scm_bindtextdomain,
2510 scm_bind_textdomain_codeset): Make wrappers similar to C function
2511 they wrap.
2512
2513 * i18n.h: New file.
2514 * i18n.c: New file.
2515 * gettext.h: New file, taken from GNU gettext.
2516 * init.c: Include libguile/i18n.h.
2517 (scm_init_guile_1): Add call to scm_init_i18n().
2518 * Makefile.am (libguile_la_SOURCES): Add i18n.c.
2519 (DOT_X_FILES): Add i18n.x.
2520 (DOT_DOC_FILES): Add i18n.doc.
2521 (libguile_la_LDFLAGS): Add @LTLIBINTL@.
2522 (modinclude_HEADERS): Add i18n.h.
2523
2524 2004-09-22 Marius Vollmer <mvo@zagadka.de>
2525
2526 * gh_list.c: Replaced SCM_CAR, etc with scm_car, etc.
2527
2528 * discouraged.h, tags.h (SCM_CONSP, SCM_NCONSP): Moved to
2529 discouraged.h. Replaced all uses with scm_is_pair.
2530 (SCM_I_CONSP): New name for SCM_CONSP.
2531
2532 * pairs.h, pairs.c (scm_is_pair, scm_is_null, scm_car, scm_cdr,
2533 scm_i_chase_pairs, SCM_I_A_PAT, SCM_I_D_PAT, etc, scm_caar,
2534 scm_cadr, etc): New.
2535 (SCM_NULLP, SCM_NNULLP): Moved to discouraged.h. Replaced all
2536 uses with scm_is_null.
2537
2538 * eval.c (scm_eval, scm_apply, call_cxr_1): Use scm_i_chase_pairs
2539 instead of explicit code.
2540
2541 2004-09-22 Marius Vollmer <mvo@zagadka.de>
2542
2543 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
2544 Reworded logic a bit so that #f is returned immediately when s1 is
2545 too short to contain s2.
2546
2547 * regex-posix.c (scm_regexp_exec): Convert string to
2548 zero-terminated locale string before matching against it.
2549
2550 * strings.h, strings.c (scm_substring_read_only,
2551 scm_c_substring_read_only, scm_i_substring_read_only): New.
2552 (RO_STRING_TAG, IS_RO_STRING): New.
2553 (scm_i_string_writable_chars): Bail on read-only strings.
2554
2555 * read.c (scm_lreadr): use scm_c_substring_read_only for string
2556 literals, thus making them read-only as specified by R5RS.
2557
2558 2004-09-22 Marius Vollmer <mvo@zagadka.de>
2559
2560 * eq.c (scm_equal_p): Allow smobs with different flags to be equal
2561 by testing for smobs before insisting on equal SCM_CELL_TYPES.
2562
2563 2004-09-21 Marius Vollmer <mvo@zagadka.de>
2564
2565 * numbers.h, numbers.c: Include <gmp.h> in numbers.h, not in
2566 numbers.c.
2567 (scm_to_mpz, scm_from_mpz): New.
2568 Thanks to Andreas Vögele!
2569
2570 * read.c (skip_scsh_block_comment): Recognize "!#" everywhere, not
2571 just on a line of its own.
2572
2573 * srfi-13.c (scm_string_any, scm_string_every,
2574 scm_string_tabulate, string_upcase_x, string_down_case_x,
2575 string_titlecase_x, string_reverse_x, scm_string_tokenize): Use
2576 size_t instead of int for indices into strings. Make sure that no
2577 over- or underflow occurs. Thanks to Andreas Vögele!
2578 (scm_xsubstring, scm_string_xcopy_x): Use ints for 'extended'
2579 indices, which can also be negative.
2580
2581 2004-09-20 Marius Vollmer <mvo@zagadka.de>
2582
2583 * gc-mark.c (SCM_MARK_BACKING_STORE): Removed, it was unused.
2584
2585 * threads.c (scm_threads_mark_stacks): Call
2586 SCM_MARK_BACKING_STORE. Also, do not use stack_len local, it was
2587 only used once.
2588
2589 2004-09-13 Jan Nieuwenhuizen <janneke@gnu.org>
2590
2591 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
2592 Bugfix: when subtracting unsigned values, make sure that result
2593 does not wrap.
2594
2595 2004-09-09 Kevin Ryde <user42@zip.com.au>
2596
2597 * filesys.c, stime.c (_POSIX_C_SOURCE): Use this only on hpux, it
2598 causes too many problems elsewhere (glibc, freebsd, mingw). Reported
2599 by Andreas Vögele.
2600
2601 2004-09-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2602
2603 * Makefile.am (EXTRA_libguile_la_SOURCES): Removed "alloca.c".
2604
2605 * eq.c (real_eqv): Pretend that all NaNs are equal.
2606
2607 * numbers.c (scm_integer_expt): Do not accept inexact integers.
2608
2609 2004-09-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2610
2611 * srfi-13.c (scm_string_trim_right, scm_string_xcopy_x): Correctly
2612 use size_t for some locals instead of int.
2613
2614 * read.c (scm_flush_ws): Detect "#!"-style comments here.
2615 (scm_lreadr): Abort on seeing "#!", which should no longer happen.
2616 (skip_scsh_block_comment): Use scm_input_error instead of
2617 scm_misc_error in case of EOF.
2618
2619 2004-09-07 Kevin Ryde <user42@zip.com.au>
2620
2621 * numbers.c (scm_integer_expt): Reject exponent +/-inf.
2622 Bug report by Bill Schottstaedt.
2623
2624 * ports.c (scm_getc, scm_lfwrite): Recognise \a \b and \r for port
2625 column.
2626 * ports.h (SCM_ZEROCOL, SCM_DECCOL): New macros.
2627
2628 * posix.c (scm_access): Update docstring per manual.
2629
2630 * posix.c (scm_nice): Correction to error detection. Reported by
2631 Matthias Koeppe.
2632
2633 * stime.c (scm_current_time, scm_gettimeofday, scm_strptime): Don't
2634 throw error before unlocking mutex with SCM_ALLOW_INTS.
2635
2636 2004-09-06 Kevin Ryde <user42@zip.com.au>
2637
2638 * stime.h (SCM_TIME_UNITS_PER_SECOND): Use sysconf(_SC_CLK_TCK) when
2639 available. This also gets around CLK_TCK being absent when
2640 _GNU_SOURCE and _POSIX_C_SOURCE are defined in stime.c.
2641
2642 2004-09-03 Stefan Jahn <stefan@lkcc.org>
2643
2644 * threads.c (scm_threads_mark_stacks): Fixed local variable
2645 definitions.
2646
2647 * strings.c (scm_i_substring_copy, scm_string_append): Fixed
2648 local variable definitions.
2649
2650 * stime.c (_POSIX_C_SOURCE): Do not define this item on
2651 MinGW32 because it conflicts with its pthread headers.
2652 (scm_mktime): Consider the HAVE_STRUCT_TM_TM_ZONE define.
2653 (scm_strftime): Using scm_from_locale_string() instead of
2654 scm_makfrom0str().
2655
2656 * posix.c (scm_putenv): Fixed typo in the !HAVE_UNSETENV
2657 part.
2658
2659 * numbers.c (scm_init_numbers): Removed check_sanity() call
2660 inside GUILE_DEBUG. The function has been removed somewhen...
2661
2662 * filesys.c (_POSIX_C_SOURCE): Do not define this item on
2663 MinGW32 because it conflicts with its pthread headers.
2664
2665 2004-08-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2666
2667 * strings.c (SCM_STRINGP): Accept all strings.
2668 (SCM_STRING_CHARS): Reject shared substrings here.
2669
2670 * script.c (scm_compile_shell_switches): Added 2003 and 2004 to
2671 the Copyright years.
2672
2673 2004-08-27 Kevin Ryde <user42@zip.com.au>
2674
2675 * socket.c (scm_fill_sockaddr): Use HAVE_STRUCT_SOCKADDR_SIN_LEN and
2676 HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN for sockaddr fields, SIN_LEN and
2677 SIN_LEN6 are not defined on all systems. Reported by Michael Tuexen.
2678
2679 2004-08-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2680
2681 * strings.h, strings.c (scm_i_make_symbol): Added FLAGS parameter.
2682 * symbols.h, symbols.c (SCM_I_F_SYMBOL_UNINTERNED,
2683 scm_i_symbol_is_interned, scm_i_mem2symbol,
2684 scm_i_mem2uninternedsymbol): Use it to store uninternedness flag.
2685
2686 2004-08-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2687
2688 * srfi-13.c: First cut at thread-safeness and proper use of
2689 scm_i_string_chars et al. Copious scm_remember_upto_heres have
2690 been inserted. Made sure that no internal string pointer is used
2691 across a SCM_TICK or a possible GC.
2692
2693 * script.c (scm_compile_shell_switches): Use
2694 scm_from_locale_string instead of scm_makfrom0str.
2695
2696 * srfi-13.c (scm_string_rindex): Export to Scheme, as it has
2697 always been.
2698
2699 2004-08-25 Marius Vollmer <mvo@zagadka.de>
2700
2701 Moved SRFI-13 and SRFI-14 into the core, taking over the role of
2702 strop.c.
2703
2704 * srfi-13.c, srfi-13.h, srfi-14.c, srfi-14.h: New files.
2705 * strop.h, strop.c: Removed, they are now empty.
2706 * Makefile.am: Updated for new and removed files.
2707
2708 * symbols.h, symbols.c (scm_string_ci_to_symbol): Moved here, next
2709 to scm_string_to_symbol.
2710
2711 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
2712 scm_char_whitespace_p, scm_upper_case_p, scm_lower_case_p,
2713 scm_char_is_both_p): Use scm_char_set_contains_p with the proper
2714 charset instead of libc functions.
2715
2716 * strorder.c (scm_string_equal_p, scm_string_ci_equal_p,
2717 scm_string_less_p, scm_string_leq_p, scm_string_gr_p,
2718 scm_string_geq_p, scm_string_ci_less_p, scm_string_ci_leq_p,
2719 scm_string_ci_gr_p, scm_string_ci_geq_p): Use scm_string_eq, etc
2720 instead of explicit code.
2721
2722 * deprecated.c, load.c, posix.c, unif.c, symbols.c: Include
2723 "srfi-13.h" instead of "strop.h".
2724
2725 * init.c (scm_init_guile_1): Call scm_init_srfi_13 and
2726 scm_init_srfi_14. Do not call scm_init_strop.
2727
2728 2004-08-24 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2729
2730 * numbers.c (scm_inf_p): Synced docstring back from manual.
2731
2732 2004-08-22 Marius Vollmer <mvo@zagadka.de>
2733
2734 * strings.c (get_str_buf_start): New helper function.
2735 (scm_i_substring, scm_i_substring_copy, scm_i_substring_shared,
2736 scm_i_string_char, scm_i_string_writable_chars): Use it.
2737 (scm_i_substring_copy): Make START argument optional for C
2738 callers, for upcoming SRFI-13 integration.
2739
2740 2004-08-21 Marius Vollmer <mvo@zagadka.de>
2741
2742 From Richard Todd, Thanks!
2743
2744 * script.c (scm_compile_shell_switches): added '-L' switch to add
2745 to the %load-path.
2746
2747 2004-08-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
2748
2749 * eval.c (unmemoize_exprs): When dropping internal body markers
2750 from the output during unmemoization, also drop those that are not
2751 immediately at the beginning of a body.
2752
2753 2004-08-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2754
2755 * eval.c (scm_lookupcar1): Report "Variable used before given a
2756 value" insetad of an "Unbound" one for variables that are found
2757 but still contain SCM_UNDEFINED.
2758
2759 * posix.c (scm_mkstemp): Correction to the correction, mkstemp
2760 expects a null-terminated string in the locale encoding, but
2761 scm_i_string_writable_chars doesn't give that. Fixed by letting
2762 mkstemp modify a locale version of the tmpl argument and copying
2763 the result back into tmpl.
2764
2765 * strop.c (scm_substring_move_x): Store into str2, not str1.
2766
2767 2004-08-20 Kevin Ryde <user42@zip.com.au>
2768
2769 * posix.c (scm_mkstemp): Correction to new locale_string stuff, need
2770 to modify the input string.
2771
2772 2004-08-19 Marius Vollmer <mvo@zagadka.de>
2773
2774 * deprecated.c (SCM_SYMBOL_CHARS): Cast away const in return.
2775 (SCM_SYMBOL_LENGTH): It's scm_i_symbol_length, not
2776 scm_c_symbol_length.
2777
2778 2004-08-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2779
2780 New string implementation, with copy-on-write strings and
2781 mutation-sharing substrings, and a new internal string API.
2782 Symbols can now share memory with strings.
2783
2784 * tags.h (scm_tc7_stringbuf): New tag.
2785
2786 * strings.h, strings.c: (scm_i_string_chars, scm_i_string_length,
2787 scm_i_string_writable_chars, scm_i_string_stop_writing): New, to
2788 replace SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH. Updated all
2789 uses.
2790 (scm_i_make_string, scm_c_make_string): New, to replace
2791 scm_allocate_string. Updated all uses.
2792 (SCM_STRINGP, SCM_STRING_CHARS, SCM_STRING_UCHARS,
2793 SCM_STRING_LENGTH): Deprecated.
2794 (scm_allocate_string, scm_take_str, scm_take0str, scm_mem2string,
2795 scm_str2string, scm_makfrom0str, scm_makfrom0str_opt):
2796 Discouraged. Replaced all uses with scm_from_locale_string or
2797 similar, as appropriate.
2798 (scm_c_string_length, scm_c_string_ref, scm_c_string_set_x,
2799 scm_c_substring, scm_c_substring_shared, scm_c_substring_copy,
2800 scm_substring_shared, scm_substring_copy): New.
2801
2802 * symbols.c, symbols.h (SCM_SYMBOLP, SCM_SYMBOL_FUNC,
2803 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS,
2804 SCM_SYMBOL_HASH, SCM_SYMBOL_INTERNED_P, scm_mem2symbol,
2805 scm_str2symbol, scm_mem2uninterned_symbol): Discouraged.
2806 (SCM_SYMBOL_LENGTH, SCM_SYMBOL_CHARS, scm_c_symbol2str):
2807 Deprecated.
2808 (SCM_MAKE_SYMBOL_TAG, SCM_SET_SYMBOL_LENGTH, SCM_SET_SYMBOL_CHARS,
2809 SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS): Removed.
2810 (scm_is_symbol, scm_from_locale_symbol, scm_from_locale_symboln):
2811 New, to replace scm_str2symbol and scm_mem2symbol, respectively.
2812 Updated all uses.
2813 (scm_gensym): Generate only the number suffix in the buffer, just
2814 string-append the prefix.
2815
2816 * error.c (scm_memory_error): Do not try to throw, just abort.
2817 Throwing will not work anyway.
2818
2819 * gh.h, gh-data.c (gh_set_substr): Made src const.
2820
2821 * ports.c (scm_i_mode_bits_n): New, for counted strings.
2822 (scm_mode_bits): Use it.
2823 (scm_c_port_for_each): Blocking GC does not seem to work, allocate
2824 a vector normally and fill that instead of consing a list with a
2825 blocked GC.
2826
2827 * read.c (scm_i_casei_streq): New, for counted strings.
2828
2829 * threads.c (gc_section_count): Removed, thread-sleeping can not
2830 be nested.
2831 (scm_i_thread_put_to_sleep): Call scm_i_leave_guile before locking
2832 admin mutex so that we can be put to sleep by other threads while
2833 blocking on that mutex. Lock all the heap mutex of all threads,
2834 including ourselves.
2835 (scm_i_thread_wake_up): Unlock all threads, including ourselves,
2836 call scm_i_enter_guile.
2837 (scm_thread_mark_stacks): Expect all threads to be suspended.
2838
2839 * gc.h, gc.c (scm_i_gc_admin_mutex): New, to protect
2840 scm_gc_mallocated, for now.
2841 (scm_init_storage): Initialize it.
2842 * gc-malloc.c (descrease_mtrigger, increase_mtrigger): Use it.
2843
2844 * gc-mark.c (scm_gc_mark_dependencies): Call scm_i_string_mark,
2845 scm_i_stringbuf_mark and scm_i_symbol_mark, as appropriate.
2846 * gc-card.c (scm_i_sweep_card): Call scm_i_string_free,
2847 scm_i_stringbuf_free and scm_i_symbol_free, as appropriate.
2848
2849 * strop.c (scm_string_copy): Use scm_c_substring to get a
2850 copy-on-write string.
2851
2852 2004-08-18 Kevin Ryde <user42@zip.com.au>
2853
2854 * arbiters.c (FETCH_STORE): New macro.
2855 (SCM_LOCK_VAL, SCM_UNLOCK_VAL): New constants.
2856 (SCM_LOCK_ARB, SCM_UNLOCK_ARB): Remove, effectively absorbed into
2857 scm_try_arbiter and scm_release_arbiter.
2858 (scm_try_arbiter, scm_release_arbiter): Use FETCH_STORE to get xchg
2859 for speed on i386, otherwise using mutex.
2860
2861 * eq.c (scm_equal_p): Remove real==fraction and fraction==real, they
2862 must be #f according to R5RS. (equal? follows eqv?, and for eqv? an
2863 exact and inexact is #f.)
2864
2865 * fports.c (fport_print): Use scm_ttyname instead of ttyname directly,
2866 to get thread safety of scm_ttyname.
2867
2868 * ports.c (ttyname): Remove prototype, unused.
2869
2870 * socket.c (scm_init_socket): Add SOCK_SEQPACKET and SOCK_RDM.
2871 Reported by Michael Tuexen.
2872
2873 2004-08-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2874
2875 * load.c (scm_init_load_path): Do not pass NULL to
2876 scm_to_locale_string, which would happen when GUILE_LOAD_PATH is
2877 not set. Thanks to Bill Schottstaedt.
2878
2879 2004-08-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2880
2881 * socket.c (scm_inet_aton, scm_inet_pton): Convert SCM strings to
2882 locale strings instead of accessing their internals.
2883 (scm_recv, scm_send, scm_recvfrom, scm_sendto): Use
2884 SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH instead of
2885 SCM_STRING_CHARS and SCM_STRING_LENGTH.
2886
2887 * simpos.c (scm_system): Convert SCM strings to locale strings
2888 instead of accessing their internals.
2889
2890 * script.c (scm_compile_shell_switches): Convert version to locale
2891 string before printing it.
2892
2893 * rdelim.c (scm_read_delimited_x): Avoid
2894 SCM_VALIDATE_SUBSTRING_SPEC_COPY and use scm_from_size_t instead
2895 of scm_from_long for the returned number of read characters.
2896
2897 * ioext.c (scm_fdopen): Use scm_i_fdes_to_port together with
2898 scm_i_mode_bits to avoid accessing internals of SCM string from C.
2899
2900 * filesys.c (STRING_SYSCALL, STRING2_SYSCALL): New helper macros.
2901 Use them instead of SCM_SYSCALL when one or two strings need to be
2902 converted into locale strings.
2903 (my_rename): New, gathers platform dependent code for renaming.
2904 (scm_rename): Use it.
2905 (scm_readlink, scm_copy_file): Convert SCM strings to locale
2906 strings instead of accessing their internals.
2907 (scm_basename, scm_dirname): Use SCM_I_STRING_CHARS and
2908 SCM_I_STRING_LENGTH instead of SCM_STRING_CHARS and
2909 SCM_STRING_LENGTH.
2910
2911 * extensions.c (load_extension): Convert lib and init to locale
2912 strings instead of accessing the internals directly.
2913 (scm_c_load_extension): Use scm_from_locale_string instead of
2914 scm_makfrom0str.
2915
2916 * fports.h, fports.c (scm_i_fdes_to_port): New, like
2917 scm_fdes_to_port, but take mode bits directly instead of as a C
2918 string.
2919 (scm_i_fdes_to_port): Implement using above.
2920 (scm_open_file): Use scm_i_fdes_to_port together with
2921 scm_i_mode_bits to avoid accessing internals of SCM string from C.
2922 * vports.c (scm_make_soft_port): Use scm_i_fdes_to_port together
2923 with scm_i_mode_bits to avoid accessing internals of SCM string
2924 from C.
2925
2926 * ports.h (scm_i_mode_bits): New, same as scm_mode_bits but with a
2927 SCM string as argument.
2928
2929 * ports.c (scm_i_void_port): New, like scm_void_port but take mode
2930 bits directly instead of C string.
2931 (scm_void_port): Implement using above.
2932 (scm_sys_make_void_port): Use scm_i_void_port together with
2933 scm_i_mode_bits to avoid accessing internals of SCM string.
2934
2935 * strings.h, strings.c (scm_i_get_substring_spec): New.
2936
2937 * socket.c, rw.c, deprecated.h, validate.h
2938 (SCM_VALIDATE_STRING_COPY): Deprecated. Replaced all uses with
2939 SCM_VALIDATE_STRING plus SCM_I_STRING_CHARS or
2940 scm_to_locale_string, etc.
2941 (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Deprecated. Replaced as
2942 above, plus scm_i_get_substring_spec.
2943
2944 * regex-posix.c, read.c, random.c, ramap.c, print.c, numbers.c,
2945 hash.c, gc.c, gc-card.c, convert.i.c, backtrace.c, strop.c,
2946 strorder.c, strports.c, struct.c, symbols.c, unif.c, ports.c: Use
2947 SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_STRING_LENGTH
2948 instead of SCM_STRING_CHARS, SCM_STRING_UCHARS, and
2949 SCM_STRING_LENGTH, respectively. Also, replaced scm_return_first
2950 with more explicit scm_remember_upto_here_1, etc, or introduced
2951 them in the first place.
2952
2953 * posix.c (WITH_STRING): New helper macro. Use it where one
2954 locale string is needed for a short piece of code.
2955 (STRING_SYSCALL): New helper macro. Use it instead of SCM_SYSCALL
2956 when one locale string is needed.
2957 (scm_mkstemp): Convert tmpl to a locale string.
2958 (scm_putenv): Rewritten to use only C strings.
2959 (scm_setlocale, scm_crpt): Convert argument strings to locale
2960 strings.
2961
2962 2004-08-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2963
2964 * load.c (scm_primitive_load_path): Do not check for absolute
2965 filenames when scm_sys_search_load_path returns false, which will
2966 return absolute filenames unchanged.
2967
2968 2004-08-11 Marius Vollmer <mvo@zagadka.de>
2969
2970 * gc.c, procprop.c (scm_init_storage, scm_stand_in_procs,
2971 scm_stand_in_proc): Use a hastable for scm_stand_in_procs instead
2972 of an alist. Thanks to Matthias Koeppe!
2973
2974 2004-08-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2975
2976 * strings.h, deprecated.h (SCM_STRING_COERCE_0TERMINATION_X):
2977 Moved from string.h to deprecated.h.
2978
2979 * deprecated.c, deprecated.h (SCM_CHARS, SCM_LENGTH): Removed.
2980
2981 * strings.h, strings.c (SCM_MAKE_STRING_TAG): Renamed to
2982 SCM_I_MAKE_STRING_TAG, changed all uses.
2983 (SCM_STRING_CHARS, SCM_STRING_UCHARS, SCM_STRING_LENGTH): Renamed
2984 to SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_LENGTH
2985 respectively. For a short time, the old names are still there as
2986 aliases. Not all uses have been changed yet, but the ones in
2987 strings.c have.
2988 (SCM_STRING_MAX_LEN): Do not hardcode to 24 bits, compute from
2989 SCM_T_BITS_MAX.
2990 (scm_is_string, scm_from_locale_string, scm_from_locale_stringn,
2991 scm_take_locale_string, scm_take_locale_stringn,
2992 scm_to_locale_string, scm_to_locale_stringn,
2993 scm_to_locale_stringbuf): New.
2994 (scm_c_string2str, scm_c_substring2str): Deprecated by moving to
2995 deprecated.[hc]. Implemented in terms of the new functions above.
2996 (scm_take_str, scm_take0str, scm_mem2string, scm_str2string,
2997 scm_makfrom0str): Reimplemented in terms of the new functions from
2998 above. They will be discouraged shortly.
2999 (scm_substring): Do not use scm_mem2string.
3000 (scm_i_allocate_string_pointers, scm_i_free_string_pointers): New,
3001 to replace similar code from posix.c, simpos.c, and dynl.c.
3002 (scm_string_append): Use memcpy instead of explicit loop. Do not
3003 use register keyword. Use plain 'char' instead of 'unsigned
3004 char'.
3005
3006 * strports.c (scm_mkstrport): Use SCM_I_STRING_UCHARS instead of
3007 SCM_STRING_UCHARS. Use SCM_I_STRINGP instead of SCM_STRINGP.
3008
3009 * strop.c (scm_i_index): Replaced SCM_STRINGP, SCM_STRING_CHARS,
3010 and SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
3011 SCM_I_STRING_LENGTH, respectively. Pass string object directly,
3012 not as a pointer. Use scm_remember_upto_here_1 to protect it.
3013
3014 * read.c (scm_input_error): Use a SCM value for 'fn', not a C
3015 string. This avoids a conversion round-trip.
3016
3017 * gh_data.c: Replaced SCM_STRINGP, SCM_STRING_CHARS, and
3018 SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
3019 SCM_I_STRING_LENGTH, respectively.
3020 (gh_scm2newstr): Implement in terms of scm_to_locale_string.
3021
3022 * environments.c: Instead calling scm_puts on the SCM_STRING_CHARS
3023 of a string, call scm_display on the string itself.
3024
3025 * dynwind.c, dynwind.h (scm_frame_free): New.
3026
3027 * stime.c, socket.c, simpos.c, procs.c, posix.c, ports.c,
3028 net_db.c, fports.c, filesys.c, eval.c, deprecation.c, dynl.c:
3029 Replaced uses of SCM_STRING_CHARS with proper uses of
3030 scm_to_locale_string. Replaced SCM_STRINGP with scm_is_string.
3031 Replaced scm_mem2string with scm_from_locale_string.
3032
3033 * simpos.c, posix.c (allocate_string_pointers, environ_list_to_c):
3034 Removed, replaced all uses with scm_i_allocate_string_pointers.
3035
3036 * load.h, load.c (scm_internal_parse_path): Removed.
3037 (scm_parse_path): Use scm_string_split to do the work.
3038 (scm_init_load_path): Use scm_parse_path instead of
3039 scm_internal_parse_path.
3040 (scm_search_path): Rewritten string handling part of the code in
3041 terms of scm_to_locale_stringbuf and so that it is thread safe.
3042
3043 * error.c (scm_error_scm): Throw directly instead of calling
3044 scm_error, this avoids the back and forth conversion of SUBR and
3045 MESSAGE and also plugs a memory leak.
3046 (scm_error): Call scm_error_scm.
3047
3048 * backtrace.c: Replaced SCM_STRINGP with scm_is_string.
3049 (display_header): Print FNAME when it is true, not
3050 merely when it is a string.
3051
3052 * strings.h (SCM_SET_STRING_LENGTH, SCM_SET_STRING_CHARS): Removed
3053 unceremoniously. They were unused by Guile itself, and external
3054 use should stop immediately.
3055
3056
3057 2004-08-10 Marius Vollmer <mvo@zagadka.de>
3058
3059 * numbers.h, number.c, deprecated.h, deprecated.c (scm_round,
3060 scm_truncate): Renamed to scm_c_round and scm_c_truncate;
3061 deprecated versions installed in deprecated.h and deprecated.c.
3062 Changed all uses.
3063
3064 2004-08-06 Rob Browning <rlb@defaultvalue.org>
3065
3066 * net_db.c (scm_resolv_error): don't cause an exception while
3067 trying to throw an exception -- call scm_misc_error with correct
3068 arguments. The previous arguments needed a format escape that
3069 wasn't in any of the format strings.
3070
3071 2004-08-06 Kevin Ryde <user42@zip.com.au>
3072
3073 * ramap.c (scm_array_fill_x): For byvect char fill, force signed char
3074 so as not to depend on signedness of plain char. For byvect range
3075 check, throw out-of-range rather than wrong-type-arg.
3076
3077 * unif.c (scm_uniform_vector_ref, scm_array_set_x): For byvect, force
3078 signed byte range checks by using scm_to_schar and scm_from_schar,
3079 don't want to depend on signedness of C char.
3080
3081 2004-08-05 Kevin Ryde <user42@zip.com.au>
3082
3083 * arbiters.c (scm_try_arbiter): Use scm_i_misc_mutex instead of
3084 SCM_DEFER_INTS.
3085 (scm_release_arbiter): Use scm_i_misc_mutex so return value can be
3086 guaranteed if multiple threads compete to unlock.
3087 Update docstrings per doc/ref/api-scheduling.texi.
3088
3089 * filesys.c (scm_copy_file): Use fstat on the input fd rather than
3090 stat on the filename, to be certain a file rename can't mean we get
3091 info on one filesystem object but open another. This fstat usage is
3092 similar to Emacs copy-file.
3093
3094 * posix.c (scm_setgroups): Enhance docstring, per doc/ref/posix.texi.
3095
3096 * simpos.c (scm_system_star): Change scm_from_long to scm_from_int on
3097 SIGINT and SIGQUIT, since those values are ints.
3098
3099 2004-08-03 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3100
3101 * num2integral.i.c, num2float.i.c: Removed.
3102 * Makefile.am (noinst_HEADERS): Updated.
3103
3104 * numbers.h. numbers.c (scm_make_ratio): Renamed to
3105 scm_i_make_ratio and made static, replaced uses with scm_divide.
3106 (scm_complex_p): New, export as "complex?" to Scheme.
3107 (scm_number_p): Export as "number?" to Scheme.
3108 (scm_is_complex, scm_is_number): New.
3109 (scm_c_make_rectangular, scm_c_make_polar): New.
3110 (scm_make_rectangular, scm_make_polar): Use above.
3111 (scm_c_real_part, scm_c_imag_part, scm_c_magnitude, scm_c_angle):
3112 New.
3113 (scm_make_complex): Discouraged by moving to discouraged.h and
3114 discouraged.c. Replaced all uses with scm_c_make_rectangular.
3115
3116 * discouraged.h, discouraged.c, numbers.c, numbers.h
3117 (scm_is_rational): New.
3118 (scm_i_short2big, scm_i_int2big, scm_i_uint2big, scm_i_size2big,
3119 scm_i_ptrdiff2big, scm_i_long_long2big, scm_i_ulong_long2big):
3120 Removed prototypes.
3121 (scm_make_real, scm_num2dbl, scm_float2num, scm_double2num):
3122 Discouraged by moving to discouraged.h and discouraged.c.
3123 Replaced all uses with scm_from_double.
3124 (scm_num2float, scm_num2double): Discouraged by moving prototype
3125 to discouraged.h and rewriting in terms of scm_to_double.
3126 Replaced all uses with scm_to_double.
3127 (scm_to_double): Do not implement in terms of scm_num2dbl, use
3128 explicit code.
3129 (scm_from_double): Do not implement in terms of scm_make_real, use
3130 explicit code.
3131
3132 2004-08-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3133
3134 * init.c (scm_init_guile_1): Call scm_i_init_discouraged.
3135
3136 * gen-scmconfig.h.in (SCM_I_GSC_ENABLE_DISCOURAGED): New.
3137 * gen-scmconfig.c (SCM_ENABLE_DISCOURAGED): Emit based on above.
3138
3139 * eval.c (SCM_EVALIM, SCM_EVALIM2, SCM_XEVAL, SCM_XEVALCAR):
3140 Renamed to SCM_I_* in order to avoid collisions with the versions
3141 defined in deprecated.h.
3142
3143 * discouraged.h, discouraged.c: New files.
3144
3145 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_EQ_P,
3146 SCM_NEGATE_BOOL, SCM_BOOL, SCM_BOOT_NOT): Promoted from being
3147 deprecated to being discouraged by moving to discouraged.h.
3148
3149 * numbers.h, numbers.c, discouraged.h, discouraged.c
3150 (scm_short2num, scm_ushort2num, scm_int2num, scm_uint2num,
3151 scm_long2num, scm_ulong2num, scm_size2num, scm_ptrdiff2num,
3152 scm_num2short, scm_num2ushort, scm_num2int, scm_num2uint,
3153 scm_num2long, scm_num2ulong, scm_num2size, scm_num2ptrdiff,
3154 scm_long_long2num, scm_ulong_long2num, scm_num2long_long,
3155 scm_num2ulong_long): Discouraged by moving to discouraged.h and
3156 discouraged.c and reimplementing in terms of scm_from_* and
3157 scm_to_*. Changed all uses to the new scm_from_* and scm_to_*
3158 functions.
3159
3160 * numbers.h, numbers.c: Removed GUILE_DEBUG code.
3161 (scm_i_short2big, scm_i_ushort2big, scm_i_int2big, scm_i_uint2big,
3162 scm_i_size2big, scm_i_ptrdiff2big): Removed.
3163 (scm_i_long2big, scm_i_ulong2big): New, explicit definitions.
3164 * conv-integer.i.c, conv-uinteger.i.c: Use them instead of
3165 explicit code.
3166
3167 2004-08-02 Kevin Ryde <user42@zip.com.au>
3168
3169 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Add comments about past
3170 and current usage and migration.
3171
3172 2004-07-31 Kevin Ryde <user42@zip.com.au>
3173
3174 * error.c (scm_strerror): Use scm_i_misc_mutex around strerror since
3175 it's not thread safe.
3176 (scm_syserror): Use scm_strerror rather than SCM_I_STRERROR, to take
3177 advantage of this.
3178 * fports.c (scm_open_file): Use scm_strerror likewise.
3179 * filesys.c (scm_stat, scm_lstat): Ditto.
3180
3181 * filesys.c (scm_copy_file): Avoid fd leak when destination file
3182 cannot be opened.
3183
3184 * symbols.c (scm_gensym): Use scm_i_misc_mutex around gensym_counter
3185 update, for thread safety.
3186 (gensym_counter): Move into scm_gensym which is its only user.
3187 (scm_init_symbols): No need to explicitly initialize gensym_counter.
3188
3189 2004-07-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3190
3191 * numbers.h (scm_to_schar, scm_to_uchar, scm_to_char,
3192 scm_to_short, scm_to_ushort, scm_to_int, scm_to_uint, scm_to_long,
3193 scm_to_ulong, scm_to_long_long, scm_to_ulong_long, scm_to_intmax,
3194 scm_to_uintmax, scm_to_size_t, scm_to_ssize_t scm_from_schar,
3195 scm_from_uchar, scm_from_char, scm_from_short, scm_from_ushort,
3196 scm_from_int, scm_from_uint, scm_from_long, scm_from_ulong,
3197 scm_from_long_long, scm_from_ulong_long, scm_from_intmax,
3198 scm_from_uintmax, scm_from_size_t, scm_from_ssize_t): No longer
3199 defined in terms of scm_to_signed_integer, etc, but in terms of
3200 scm_to_int8, etc.
3201
3202 * gen-scmconfig.c (SCM_SIZEOF_INTMAX, SCM_SIZEOF_SIZE_T): New.
3203
3204 * gen-scmconfig.h.in: Removed SCM_I_GSC_*_LIMITS macros, they are
3205 no longer used.
3206
3207 * __scm.h (SCM_I_UTYPE_MAX, SCM_I_TYPE_MAX, SCM_I_TYPE_MIN,
3208 SCM_I_SIZE_MAX, SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX): New.
3209
3210 * __scm.h, gen-scmconfig.c (SCM_I_LLONG_MAX, SCM_I_LLONG_MIN,
3211 SCM_I_ULLONG_MAX, SCM_T_INT8_MIN, SCM_T_INT8_MAX, SCM_T_UINT8_MAX,
3212 SCM_T_INT16_MIN, SCM_T_INT16_MAX, SCM_T_UINT16_MAX,
3213 SCM_T_INT32_MIN, SCM_T_INT32_MAX, SCM_T_UINT32_MAX,
3214 SCM_T_INT64_MIN, SCM_T_INT64_MAX, SCM_T_UINT64_MAX,
3215 SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, SCM_T_UINTMAX_MAX): Moved
3216 definition into __scm.h, using new SCM_I_TYPE_MIN, etc.
3217
3218 * conv-integer.i.c, conv-uinteger.i.c: New files, used to generate
3219 the functions below.
3220
3221 * Makefile.am (noinst_HEADERS): Added conv-integer.i.c and
3222 conv-uinteger.i.c.
3223
3224 * numbers.c, numbers.h (scm_to_int8, scm_to_uint8, scm_to_int16,
3225 scm_to_uint16, scm_to_int32, scm_to_uint32, scm_to_int64,
3226 scm_to_uint64, scm_from_int8, scm_from_uint8, scm_from_int16,
3227 scm_from_uint16, scm_from_int32, scm_from_uint32, scm_from_int64,
3228 scm_from_uint64): Turned from macros into proper functions.
3229 (scm_to_signed_integer, scm_to_unsigned_integer,
3230 scm_from_signed_integer, scm_from_unsigned_integer): Generate via
3231 conv-integer.i.c and conv-uinteger.i.c, as well.
3232
3233 * number.h (scm_to_ssize_t, scm_to_size_t): Use the new
3234 SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX, and SCM_I_SIZE_MAX macros for
3235 the limits. Those are always defined.
3236
3237 2004-07-29 Kevin Ryde <user42@zip.com.au>
3238
3239 * posix.c (scm_ttyname): Use scm_i_misc_mutex for thread safety.
3240
3241 2004-07-28 Kevin Ryde <user42@zip.com.au>
3242
3243 * posix.c (scm_ctermid): Use an L_ctermid buf on the stack, for thread
3244 safety.
3245
3246 * unif.c (scm_array_set_x): For svect, use scm_num2short for
3247 consistency with other vector types and to get arg and func name into
3248 error message.
3249
3250 2004-07-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3251
3252 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_BOOL):
3253 Reimplement using scm_is_false, scm_is_true, scm_is_bool, and
3254 scm_from_bool, respectively.
3255 (SCM_NINUMP): Added.
3256
3257 * tags.h, deprecated.h (SCM_EQ_P): Deprecated by moving it into
3258 deprecated.h. Replaced all uses with scm_is_eq.
3259
3260 2004-07-24 Kevin Ryde <user42@zip.com.au>
3261
3262 * threads.c, threads.h (scm_i_misc_mutex): New SCM_GLOBAL_MUTEX.
3263 * posix.c (scm_crypt): Use it to protect static data in crypt().
3264
3265 2004-07-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3266
3267 * deprecated.h, deprecated.c, numbers.h (SCM_INUMP, SCM_NINUMP,
3268 SCM_INUM): Deprecated by renaming them to SCM_I_INUMP,
3269 SCM_I_NINUMP and SCM_I_INUM, respectively and adding deprecated
3270 versions to deprecated.h and deprecated.c. Changed all uses to
3271 either use the SCM_I_ variants or scm_is_*, scm_to_*, or
3272 scm_from_*, as appropriate.
3273
3274 * dynwind.c (scm_i_dowinds): Removed unused code that would call
3275 the unexisting scm_cross_dynwind_binding_scope for inums on the
3276 windlist.
3277
3278 2004-07-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3279
3280 * socket.c (ipv6_net_to_num, scm_from_ipv6): Renamed
3281 ipv6_net_to_num to scm_from_ipv6, for converting from an IPv6
3282 byte-wise address to a SCM integer. Changed all uses.
3283 (ipv6_num_to_net, scm_to_ipv6): Renamed ipv6_num_to_net to
3284 scm_to_ipv6 and added type and range checking, for converting from
3285 an IPv& byte-wise address to a SCM integer. Changed all uses.
3286 (bignum_in_ipv6_range_p, VALIDATE_INET6): Removed, their function
3287 is now done by scm_to_ipv6.
3288
3289 * numbers.c (scm_to_signed_integer, scm_to_unsigned_integer): dot
3290 not accept inexact integers.
3291
3292 * validate.h, deprecated.h (SCM_VALIDATE_INUM,
3293 SCM_VALIDATE_INUM_COPY, SCM_VALIDATE_BIGINT,
3294 SCM_VALIDATE_INUM_MIN, SCM_VALIDATE_INUM_MIN_COPY,
3295 SCM_VALIDATE_INUM_MIN_DEF_COPY,SCM_VALIDATE_INUM_DEF,
3296 SCM_VALIDATE_INUM_DEF_COPY, SCM_VALIDATE_INUM_RANGE,
3297 SCM_VALIDATE_INUM_RANGE_COPY): Deprecated because they make the
3298 fixnum/bignum distinction visible. Changed all uses to
3299 scm_to_size_t or similar.
3300
3301 2004-07-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3302
3303 * cpp_cnvt.awk: Use scm_from_int instead of SCM_MAKINUM.
3304
3305 2004-07-10 Kevin Ryde <user42@zip.com.au>
3306
3307 * hash.c (scm_hashq, scm_hashv, scm_hash): Restrict to size>=1 rather
3308 than size>=0, since 0<=hash<size cannot be satisfied for size==0, and
3309 such a size causes divide-by-zeros in scm_hasher.
3310
3311 * regex-posix.c (scm_make_regexp): Free rx on error, to avoid memory
3312 leak.
3313
3314 2004-07-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3315
3316 * numbers.c (scm_is_signed_integer, scm_is_unsigned_integer):
3317 Rewritten using the same logic as scm_to_signed_integer and
3318 scm_to_unsigned_integer, respectively, which is better(tm). Also,
3319 use CHAR_BIT instead of hardcoding 8.
3320 (LLONG_MIN, LLONG_MAX, ULLONG_MAX): Removed and used
3321 SCM_I_LLONG_MIN etc. instead.
3322
3323 * numbers.h (SCM_MAKINUM, SCM_I_MAKINUM): Renamed SCM_MAKINUM to
3324 SCM_I_MAKINUM and changed all uses.
3325 * deprecated.h, deprecated.c (SCM_MAKINUM): Newly deprecated.
3326
3327 * gen-scmconfig.c (SCM_I_LLONG_MIN, SCM_I_LLONG_MAX,
3328 SCM_I_ULLONG_MAX): Instead of hard-coding the numbers, compute
3329 them by assuming twos-complement.
3330
3331 2004-07-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3332
3333 * gen-scmconfig.h.in: Added all the new SCM_I_GSC_*_LIMITS that
3334 configure now produces.
3335 * gen-scmconfig.c: Use them to output SCM_T_INT8_MIN, etc
3336 definitions, giving the limits of the integer types defined by
3337 Guile. Also, output a hard coded SCM_I_LLONG_MIN, etc since
3338 LLONG_MIN or LONG_LONG_MIN is hard to get at.
3339
3340 * numbers.h (scm_to_short, scm_to_ushort): It's SHRT_MIN, etc, not
3341 SHORT_MIN.
3342 (scm_to_size_t): Use SIZE_MAX instead of cooking our own.
3343 (scm_to_long_long, scm_to_ulong_long, scm_to_int8, scm_to_uint8,
3344 scm_to_int16, scm_to_uint16, scm_to_int32, scm_to_uint32,
3345 scm_to_int64, scm_to_uint64, scm_to_intmax, scm_to_uintmax,
3346 scm_from_long_long, scm_from_ulong_long, scm_from_int8,
3347 scm_from_uint8, scm_from_int16, scm_from_uint16, scm_from_int32,
3348 scm_from_uint32, scm_from_int64, scm_from_uint64, scm_from_intmax,
3349 scm_from_uintmax): New.
3350
3351 2004-07-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3352
3353 * tags.h (scm_is_eq): New.
3354
3355 * deprecated.h, boolean.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOL,
3356 SCM_NEGATE_BOOL, SCM_BOOLP): Deprecated by moving into
3357 "deprecated.h". Replaced all uses with scm_is_false, scm_is_true,
3358 scm_from_bool, and scm_is_bool, respectively.
3359
3360 * boolean.h (scm_is_bool): Fix bug in prototype.
3361 (scm_from_bool): The argument is "x" not "f", stupid.
3362
3363 * boolean.c (scm_is_bool): Fix typo.
3364
3365 * numbers.h, numbers.c (scm_is_integer, scm_is_signed_integer,
3366 scm_is_unsigned_integer, scm_to_signed_integer,
3367 scm_to_unsigned_integer, scm_to_schar, scm_to_uchar, scm_to_char,
3368 scm_to_short, scm_to_ushort, scm_to_long, scm_to_ulong,
3369 scm_to_size_t, scm_to_ssize_t, scm_from_schar, scm_from_uchar,
3370 scm_from_char, scm_from_short, scm_from_ushort, scm_from_int,
3371 scm_from_uint, scm_from_long, scm_from_ulong, scm_from_size_t,
3372 scm_from_ssize_t, scm_is_real, scm_to_double, scm_from_double):
3373 New.
3374
3375 2004-07-05 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3376
3377 * boolean.h, boolean.c (scm_is_true, scm_is_false, scm_from_bool,
3378 scm_to_bool): New.
3379
3380 2004-06-27 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3381
3382 * backtrace.c (display_expression, display_frame): Call
3383 scm_i_unmemoize_expr for unmemoizing a memoized object holding a
3384 single memoized expression.
3385
3386 * debug.c (memoized_print): Don't try to unmemoize the memoized
3387 object, since we can't know whether it holds a single expression
3388 or a body.
3389
3390 (scm_mem_to_proc): Removed check for lambda expression, since it
3391 was moot anyway. Whoever uses these functions for debugging
3392 purposes should know what they do: Creating invalid memoized code
3393 will cause crashes, independent of whether this check is present
3394 or not.
3395
3396 (scm_proc_to_mem): Take the closure's code as it is and don't
3397 append a SCM_IM_LAMBDA isym. To allow easier debugging, the
3398 memoized code should not be modified.
3399
3400 * debug.[ch] (scm_unmemoize, scm_i_unmemoize_expr): Removed
3401 scm_unmemoize from public use, but made scm_i_unmemoize_expr
3402 available as a guile internal function instead. However,
3403 scm_i_unmemoize_expr will only work on memoized objects that hold
3404 a single memoized expression. It won't work with bodies.
3405
3406 * debug.c (scm_procedure_source), macros.c (macro_print), print.c
3407 (scm_iprin1): Call scm_i_unmemocopy_body for unmemoizing a body,
3408 i. e. a list of expressions.
3409
3410 * eval.c (unmemoize_exprs): Drop internal body markers from the
3411 output during unmemoization.
3412
3413 * eval.[ch] (scm_unmemocopy, scm_i_unmemocopy_expr,
3414 scm_i_unmemocopy_body): Removed scm_unmemocopy from public use,
3415 but made scm_i_unmemocopy_expr and scm_i_unmemocopy_body available
3416 as guile internal functions instead. scm_i_unmemoize_expr will
3417 only work on a single memoized expression, while
3418 scm_i_unmemocopy_body will only work on bodies.
3419
3420 2004-06-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3421
3422 * eval.c (unmemoize_exprs): Handle semi-memoized code.
3423
3424 (scm_cons_source, scm_primitive_eval): Prefer higher level
3425 predicate SCM_FALSEP over SCM_IMP.
3426
3427 2004-06-15 Rob Browning <rlb@defaultvalue.org>
3428
3429 * script.c (scm_shell_usage): minor phrasing change.
3430
3431 * gc_os_dep.c: update ifdefery for macosx.
3432 (scm_get_stack_base): separate result initialization from
3433 declaration to slience warnings with macosx and hp-ux using gcc
3434 3.3. Thanks to Andreas Vögele.
3435
3436 2004-06-13 Han-Wen Nienhuys <hanwen@xs4all.nl>
3437
3438 * eval.c (unmemoize_exprs): use SCM_CONSP for the loop condition.
3439
3440 2004-06-06 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3441
3442 * list.[ch] (scm_i_finite_list_copy): New internal function to
3443 copy lists that are known to be finite (though not necessarily
3444 proper).
3445
3446 * debug.c (scm_procedure_source): Don't have scm_unmemocopy treat
3447 a closure's argument list like an expression of a body.
3448
3449 * eval.c (unmemoize_expression, unmemoize_exprs, unmemoize_and,
3450 unmemoize_begin, unmemoize_case, unmemoize_cond, unmemoize_delay,
3451 unmemoize_do, unmemoize_if, unmemoize_lambda, unmemoize_let,
3452 unmemoize_letrec, unmemoize_letstar, unmemoize_or,
3453 unmemoize_set_x, unmemoize_apply, unmemoize_atcall_cc,
3454 unmemoize_at_call_with_values, unmemoize_future, sym_atslot_ref,
3455 unmemoize_atslot_ref, sym_atslot_set_x, unmemoize_atslot_set_x,
3456 unmemoize_builtin_macro): New static functions and symbols.
3457
3458 (scm_unmemocopy): Rewritten in terms of the above. scm_unmemocopy
3459 now has a slightly different meaning: The memoized form that is
3460 receives as its argument is now interpreted as a sequence of
3461 expressions from a body.
3462
3463 (unmemocar, scm_unmemocar): Since the whole functionality of
3464 unmemocar and scm_unmemocar is not needed any more, scm_unmemocar
3465 has its old content back and is deprecated, while unmemocar has
3466 been removed.
3467
3468 (SCM_BIT7): Removed.
3469
3470 (CEVAL): For unmemoizing a single expression, call
3471 unmemoize_expression instead of scm_unmemocopy, which now expects
3472 a sequence of body expressions. Eliminated unnecessary empty
3473 environment frame when executing let* forms. Eliminated
3474 unmemoization step from evaluator.
3475
3476 2004-06-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3477
3478 * eval.c (scm_macroexp, macroexp): Renamed scm_macroexp to
3479 macroexp and made static. Added new version of scm_macroexp that
3480 emits a deprecation warning and then calls macroexp.
3481 (scm_m_undefine): Issue deprecation warning.
3482
3483 2004-05-30 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3484
3485 * eval.c (lookup_global_symbol, literal_p, try_macro_lookup):
3486 Modified to make set! work on symbols that represent syntactic
3487 keywords.
3488
3489 2004-05-26 Han-Wen Nienhuys <hanwen@xs4all.nl>
3490
3491 * gc.h (SCM_CELL_OBJECT_LOC): use SCM_GC_CELL_OBJECT to prevent
3492 compound expression as lvalue errors.
3493
3494 2004-05-24 Marius Vollmer <mvo@zagadka.de>
3495
3496 * dynwind.c (winder_mark): Use SCM_PACK to correctly convert the
3497 WINDER_DATA to a SCM.
3498
3499 2004-05-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3500
3501 * goops.c (compute_getters_n_setters, create_standard_classes,
3502 scm_add_slot): Compute closures by calling scm_i_eval_x on a
3503 lambda expression rather than creating them with scm_closure.
3504
3505 2004-05-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3506
3507 * eval.c (s_macro_keyword, scm_m_set_x): Remove checking for
3508 misplaced syntactic keywords. This will not work unless guile's
3509 defmacro feature is deprecated.
3510
3511 (scm_m_case): Fixed a bug that caused the list of labels to grow
3512 with every case form.
3513
3514 2004-05-19 Kevin Ryde <user42@zip.com.au>
3515
3516 * numbers.c (scm_round_number): For inum and big, just return x. For
3517 real, use scm_round for 2^54-1 etc problems covered there.
3518
3519 * numbers.c (trunc): Remove #define to scm_truncate when the C library
3520 doesn't provide trunc. This was for when `truncate' was done as a
3521 scm_tc7_dsubr, no longer required.
3522
3523 * threads.c (scm_threads_mark_stacks) [SCM_STACK_GROWS_UP]: Correction
3524 to stack marking call, two parameters and no cast on t->base.
3525
3526 2004-05-18 Marius Vollmer <mvo@zagadka.de>
3527
3528 * hashtab.c (rehash_after_gc): Bug fix: properly link the
3529 processed hashtables back into the weak_hashtables list. Thanks
3530 to Bill Schottstaedt!
3531
3532 2004-05-16 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3533
3534 * eval.c (unmemoize_quote): New static function.
3535
3536 (scm_m_quote, scm_m_atslot_ref, SCM_CEVAL): Changed the byte code
3537 representation of 'quote' and '@slot-ref' to an improper list.
3538 This reduces execution time, the number of cells used to hold the
3539 memoized code, and thus also reduces garbage collection time.
3540
3541 (scm_unmemocopy): Use unmemoize_quote for quote expressions.
3542
3543 (SCM_CEVAL): Changed macro handling to also work with macros that
3544 return improper lists. Added an assertion, that the code returned
3545 by a macro transformer will not lead to cycles in the memoized
3546 code.
3547
3548 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3549
3550 No functional change, just rearrangements of functions within the
3551 file.
3552
3553 * eval.c (scm_ilookup, scm_unbound_variable_key,
3554 error_unbound_variable, scm_lookupcar1, scm_lookupcar): Moved to
3555 the definitions used for execution, since that's where they will
3556 belong to later.
3557
3558 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3559
3560 * numbers.h (SCM_SLOPPY_FRACTIONP): Removed. It was not used
3561 throughout guile, has not been part of an official release yet,
3562 and the concept of sloppy predicates has never been a good idea.
3563
3564 (SCM_FRACTION_NUMERATOR, SCM_FRACTION_DENOMINATOR,
3565 SCM_FRACTION_SET_NUMERATOR, SCM_FRACTION_SET_DENOMINATOR):
3566 Simplified.
3567
3568 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3569
3570 * throw.c (SETJBJMPBUF, SCM_SETJBDFRAME): Add cast to scm_t_bits
3571 to make explicit what happens.
3572
3573 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3574
3575 * dynl.c (SET_DYNL_HANDLE): Add cast to scm_t_bits to make
3576 explicit what happens.
3577
3578 * guardians.c (TCONC_IN): Use SCM_SET_CELL_OBJECT_x rather than
3579 SCM_SET_CELL_WORD_x when writing scheme objets to cell elements.
3580
3581 2004-05-11 Marius Vollmer <mvo@zagadka.de>
3582
3583 * scmsigs.c (scm_sigaction_for_thread): Validate that the handler
3584 is indeed a procedure when it isn't a number.
3585
3586 2004-05-10 Marius Vollmer <mvo@zagadka.de>
3587
3588 Convert floating point numbers into strings with an arbitrary
3589 radix. Thanks to Richard Todd!
3590
3591 * numbers.c (FLOBUFLEN): Increase so that radix 2 strings will
3592 fit.
3593 (fx): Removed.
3594 (scm_dblprec, fx_per_radix, init_dblprec, init_fx_radix,
3595 number_chars): New, to support variable radices.
3596 (idbl2str): Use above instead of the old base-10 only tables.
3597 (iflo2str): Pass on new RADIX argument to idbl2str.
3598 (scm_number_to_string): Pass radix to iflo2str.
3599 (scm_print_real, scm_print_complex): Explicitly pass radix 10 to
3600 iflo2str.
3601 (scm_init_numbers): Call init_dblprec and init_fx_radix for all
3602 possible radices.
3603
3604 2004-05-10 Kevin Ryde <user42@zip.com.au>
3605
3606 * numbers.c (scm_logbit_p): Correction to test above the end of an
3607 inum. Reported by Jan Konecny.
3608
3609 2004-05-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3610
3611 * gc.h (scm_t_cell): Fields are now of type SCM instead of
3612 scm_t_bits. Updated all users.
3613 (SCM_GC_CARD_SIZE_MASK): Use SCM_GC_SIZEOF_CARD instead of
3614 duplicating the code.
3615 (SCM_CELL_OBJECT_LOC): New.
3616 (SCM_CARLOC, SCM_CDRLOC): Use it instead of SCM_CELL_WORD_LOC.
3617 (SCM_CELL_WORD_LOC): Moved to "deprecated.h".
3618
3619 * smob.h (SCM_SMOB_DATA_2, SCM_SMOB_DATA_3, SCM_SMOB_FLAGS,
3620 SCM_SET_SMOB_DATA_2, SCM_SET_SMOB_DATA_3, SCM_SET_SMOB_FLAGS,
3621 SCM_SMOB_OBJECT, SCM_SMOB_OBJECT_2, SCM_SMOB_OBJECT_3,
3622 SCM_SET_SMOB_OBJECT, SCM_SET_SMOB_OBJECT_2, SCM_SET_SMOB_OBJECT_3,
3623 SCM_SMOB_OBJECT_LOC, SCM_SMOB_OBJECT_2_LOC,
3624 SCM_SMOB_OBJECT_3_LOC): New.
3625 * smob.c (scm_i_set_smob_flags): New function.
3626
3627 * dynl.c, dynwind.c, eval.h, fluids.h, futures.h, hashtab.h,
3628 hooks.h, keywords.h, macros.h, macros.c, mallocs.c, mallocs.h,
3629 random.h, regex-posix.h, root.h, srcprop.h, srcprop.c, threads.h:
3630 Use SCM_SMOB_* instead of SCM_CELL_* as appropriate. Use
3631 SCM_SMOB_FLAGS and SCM_SET_SMOB_FLAGS instead of accessing the
3632 zeroth word directly. Use SCM_SMOB_PREDICATE as appropriate.
3633
3634 * numbers.h (SCM_I_BIG_MPZ): Use SCM_CELL_OBJECT_LOC instead of
3635 taking the address of SCM_CELL_WORD_1, the latter being no longer
3636 an lvalue.
3637
3638 * variable.h (SCM_VARIABLE_LOC): Use SCM_CELL_OBJECT_LOC instead
3639 of casting SCM_CELL_WORD_LOC.
3640
3641 2004-05-02 Kevin Ryde <user42@zip.com.au>
3642
3643 * eval.c (scm_macroexp): Add prototype, since it's not in eval.h under
3644 --disable-deprecated. Reported by Andreas Vögele.
3645
3646 * filesys.c (_POSIX_C_SOURCE): Define to 199506L to get readdir_r (in
3647 particular on HP-UX). Reported by Andreas Vögele.
3648
3649 * list.c (varargs.h): Remove, leave just stdarg.h which is all the
3650 code has support for. Fixes building with AIX cc, which is ansi but
3651 doesn't define __STDC__. Reported by Keith Crane.
3652 (var_start): Remove macro, this variation no longer required.
3653 (scm_list_n): Use va_start directly.
3654
3655 2004-05-01 Kevin Ryde <user42@zip.com.au>
3656
3657 * continuations.c (scm_dynthrow): Use >= instead of SCM_PTR_GE which
3658 is now gone. Reported by Andreas Vögele.
3659
3660 2004-04-28 Kevin Ryde <user42@zip.com.au>
3661
3662 * backtrace.c (display_frame_expr), numbers.c (XDIGIT2UINT,
3663 mem2uinteger, mem2decimal_from_point, mem2ureal): Cast char to int for
3664 ctype.h tests, to avoid warnings from gcc on HP-UX about char as array
3665 subscript. Reported by Andreas Vögele.
3666 Also cast through unsigned char to avoid passing negatives to those
3667 macros if input contains 8-bit values.
3668
3669 * num2integral.i.c (NUM2INTEGRAL): Under non-BIGMPZ_FITSP case,
3670 corrections to range check for signed numbers. Remove
3671 scm_remember_upto_here_1(num) from these checks, since num is used
3672 subsequently anyway.
3673
3674 * num2integral.i.c (NUM2INTEGRAL): Test BIGMPZ_FITSP with "!= 0" to
3675 avoid warning from gcc 3.4. Reported by Hyperdivision.
3676
3677 * numbers.c (scm_bit_extract): Use min instead of MIN.
3678 (MIN): Remove, this conflicts with similar macro defined by limits.h
3679 on HP-UX. Reported by Andreas Vögele.
3680
3681 * stime.c (_POSIX_C_SOURCE): Define to 199506L to get gmtime_r (in
3682 particular on HP-UX). Reported by Andreas Vögele.
3683
3684 * threads.c (scm_threads_mark_stacks): Correction sizet -> size_t.
3685 Reported by Andreas Vögele.
3686
3687 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 25*sizeof(long),
3688 for the benefit of hpux11 where pthread_mutex_t is 88 bytes. Reported
3689 by Andreas Vögele.
3690
3691 2004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3692
3693 * eval.c (s_macro_keyword): New static identifier.
3694
3695 (scm_m_define): Change order to first create binding and
3696 evaluating the expression afterwards.
3697
3698 (scm_m_set_x): Memoize complete set! expression. Only leave
3699 symbols if no binding exists at memoization time. Throw error if
3700 assigning to a syntactic keyword.
3701
3702 (lazy_memoize_variable): New function.
3703
3704 (CEVAL): When execution set!, perform lazy memoization if
3705 unmemoized symbol is detected.
3706
3707 * modules.c (module_variable): Return variables with unbound
3708 value.
3709
3710 * tags.h: Fix comment.
3711
3712 2004-04-25 Kevin Ryde <user42@zip.com.au>
3713
3714 * chars.c (scm_char_upcase, scm_char_downcase, scm_c_upcase,
3715 scm_c_downcase): Use ctype.h toupper and tolower. This will be useful
3716 in 8-bit locales, and ensures consistency with char-upper-case? and
3717 char-lower-case? which already use ctype.h.
3718 (scm_c_upcase_table, scm_c_downcase_table, scm_lowers, scm_uppers):
3719 Remove.
3720 * chars.c, chars.h, init.c (scm_tables_prehistory): Remove.
3721
3722 * socket.c (VALIDATE_INET6): Correction to bignum_in_ipv6_range_p
3723 call. Reported by Hyperdivision.
3724
3725 * threads.c (scm_yield): Correction, actually call scm_thread_yield.
3726 Reported by Hyperdivision.
3727
3728 * unif.c (s_scm_make_uve): Remove unused local variable. Reported by
3729 Hyperdivision.
3730
3731 2004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3732
3733 Hide the implementation of ilocs and isyms in eval.c.
3734
3735 * deprecated.h (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
3736 SCM_ICDRP), eval.c (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
3737 SCM_ICDRP), eval.h (SCM_ICDR, SCM_IFRINC, SCM_IFRAME, SCM_IDIST,
3738 SCM_ICDRP): Deprecated and added to deprecated.h. Moved from
3739 eval.h to eval.c.
3740
3741 * deprecated.c (scm_isymnames), deprecated.h (scm_isymnames,
3742 SCM_ISYMNUM, SCM_ISYMCHARS), eval.c (SCM_ISYMNUM, isymnames,
3743 scm_unmemocopy, CEVAL), print.c (scm_isymnames), tags.h
3744 (SCM_ISYMNUM, scm_isymnames, SCM_ISYMCHARS): Deprecated
3745 scm_isymnames, SCM_ISYMNUM and SCM_ISYMCHARS and added to
3746 deprecated.[hc]. Moved scm_isymnames from print.c to eval.c and
3747 renamed to isymnames. Moved SCM_ISYMNUM from tags.h to eval.c and
3748 renamed to ISYMNUM.
3749
3750 * eval.c (scm_i_print_iloc, scm_i_print_isym), eval.h
3751 (scm_i_print_iloc, scm_i_print_isym), print.c (scm_iprin1):
3752 Extracted printing of ilocs and isyms to guile internal functions
3753 scm_i_print_iloc, scm_i_print_isym of eval.c.
3754
3755 2004-04-22 Kevin Ryde <user42@zip.com.au>
3756
3757 * numbers.c (scm_bit_extract): Use SCM_SRS for signed right shift.
3758
3759 * numbers.c (scm_round): Test for x already an integer, to avoid bad
3760 rounding in x+0.5 when x is a big value already an integer. In
3761 certain hardware rounding cases x+0.5 can give an adjacent integer,
3762 leading to that as the result, when we really just wanted x itself.
3763
3764 2004-04-19 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3765
3766 * eval.c (scm_unmemocopy): Fixed unmemoization of let*.
3767
3768 (deval_args, CEVAL): Minor improvements: Reduced variable scopes,
3769 added const qualifiers, cast intentionally unused expressions to
3770 void for emphasis, improved comment.
3771
3772 2004-04-18 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3773
3774 * tags.h (scm_tags, scm_tc8_tags, scm_tc9_flag, scm_tc8_flag,
3775 scm_tc8_isym): Renamed scm_tags to scm_tc8_tags. Renamed
3776 scm_tc9_flag to scm_tc8_flag. Introduced new identifier
3777 scm_tc8_isym. Defined tc8-tags relative to scm_tc3_imm24.
3778 Defined the tc8-tag for flags to be 0x04, which will mean that
3779 SCM_BOOL_F will also have the value 0x04 instead of 0x013c. Due
3780 to the reduced number of bits and the simpler bit pattern for
3781 SCM_BOOL_F, certain machines may be able to use more efficient
3782 processor instructions to deal with SCM_BOOL_F.
3783
3784 (SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA): Removed. These have
3785 never been defined in a released version, thus no need to
3786 deprecate them.
3787
3788 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Flags now use tc8
3789 instead of tc9 tags.
3790
3791 (SCM_ISYMP, SCM_MAKISYM, SCM_ISYMNUM): Isyms now use tc8 instead
3792 of tc9 tags.
3793
3794 (SCM_MAKSPCSYM): Removed. It is almost impossible that user code
3795 could have used this definition.
3796
3797 (SCM_IM_AND, SCM_IM_BEGIN, SCM_IM_CASE, SCM_IM_COND, SCM_IM_DO,
3798 SCM_IM_IF, SCM_IM_LAMBDA, SCM_IM_LET, SCM_IM_LETSTAR,
3799 SCM_IM_LETREC, SCM_IM_OR, SCM_IM_QUOTE, SCM_IM_SET_X): Now encoded
3800 as isyms, as special isyms don't exist any more.
3801
3802 2004-04-18 Kevin Ryde <user42@zip.com.au>
3803
3804 * filesys.c (scm_readdir): Use readdir_r when available, for thread
3805 safety.
3806
3807 * numbers.c (scm_max, scm_min): For big/real, use SCM_SWAP rather than
3808 explicit swapping code.
3809
3810 2004-04-15 Kevin Ryde <user42@zip.com.au>
3811
3812 * cpp_sig_symbols.in: Add SIGSYS.
3813
3814 * list.c (scm_append_x): Use iterative style, to avoid non-tail
3815 recursion.
3816
3817 * numbers.c (scm_max, scm_min): For inum/frac, frac/inum, big/frac,
3818 frac/big and frac/frac, use scm_less_p for exact comparison.
3819
3820 * numbers.c (scm_gcd): For inum/big, use mpz_gcd_ui by sharing code
3821 with big/inum.
3822
3823 * numbers.c (xisinf): Add a comment about solaris 7 lacking isinf.
3824
3825 2004-04-06 Han-Wen Nienhuys <hanwen@xs4all.nl>
3826
3827 * inline.h (scm_cell): use SCM_GC_CELL_WORD for checking tag.
3828
3829 * chars.h (scm_init_chars): change scm_{upcase,downcase} to
3830 scm_c_{up,down}case.
3831 (SCM_MAKE_CHAR): add (unsigned char) cast. This prevents havoc
3832 when hi-bit ASCII is subjected to SCM_MAKE_CHAR().
3833
3834 2004-04-06 Kevin Ryde <user42@zip.com.au>
3835
3836 * numbers.c (scm_ash): Remove stray "}" in docstring.
3837
3838 * numbers.c (scm_make_ratio): For inum/bignum integer detection, use
3839 x==SCM_MOST_NEGATIVE_FIXNUM explicitly, for clarity and to avoid
3840 calling mpz_cmp_ui in most cases.
3841
3842 * numbers.c (scm_quotient, scm_remainder): In inum/big, use mpz_cmp_ui
3843 for big == abs(most-negative-fixnum) special case.
3844 (abs_most_negative_fixnum): Remove, no longer used.
3845
3846 * scmsigs.c (scm_sigaction_for_thread): Correction to signum range
3847 test, avoids SCM_VECTOR_REF outside bounds of signal_handlers on
3848 calling (sigaction NSIG).
3849
3850 * simpos.c (scm_system_star): Fix execargv memory leak, merge parent
3851 and fork error cases to do this.
3852
3853 2004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3854
3855 * eval.c (CEVAL): Don't distinguish between short and long
3856 instructions when dispatching - just always dispatch on the
3857 instruction code, which is common for short and long instructions.
3858 Further, removed unnecessary goto statements and added comment.
3859
3860 2004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3861
3862 * eval.c (scm_unmemocopy): Don't distinguish between short and
3863 long instructions when dispatching - just always dispatch on the
3864 instruction code, which is common for short and long instructions.
3865 Further, removed unnecessary goto statements, fixed indentation
3866 and replaced SCM_IMP predicates by SCM_NULLP.
3867
3868 2004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3869
3870 * eval.c (scm_lookupcar1, CEVAL): Use SCM_ILOCP instead of
3871 comparison with SCM_ILOC00. In CEVAL, eliminate goto-label
3872 'checkmacro'.
3873
3874 2004-03-31 Kevin Ryde <user42@zip.com.au>
3875
3876 * simpos.c: Include <signal.h> for SIG_IGN and friends.
3877
3878 2004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3879
3880 Introduce scm_debug_mode_p as a replacement for scm_debug_mode and
3881 SCM_DEBUGGINGP:
3882
3883 * debug.h (scm_debug_mode_p, scm_debug_mode, SCM_DEBUGGINGP),
3884 eval.c (scm_debug_mode_p): Deprecated scm_debug_mode and
3885 SCM_DEBUGGINGP. Provided scm_debug_mode_p instead, to have one
3886 single interface that also matches the naming conventions.
3887 Probably scm_debug_mode_p should be part of the private interface
3888 anyway.
3889
3890 * debug.h (scm_debug_mode_p), backtrace.c (display_error_body),
3891 eval.c (SCM_APPLY, scm_trampoline_0, scm_trampoline_1,
3892 scm_trampoline_2): Change uses of scm_debug_mode or SCM_DEBUGGINGP
3893 to scm_debug_mode_p.
3894
3895
3896 Deprecate direct access to scm_ceval, scm_deval and scm_ceval_ptr:
3897
3898 * eval.h (scm_ceval, scm_deval, scm_ceval_ptr), debug.h
3899 (scm_ceval_ptr): Deprecated. Moved declaration of scm_ceval_ptr
3900 from debug.h to eval.h.
3901
3902 * debug.h (SCM_RESET_DEBUG_MODE): Don't access scm_ceval_ptr any
3903 more, just leave it with setting scm_debug_mode_p, which is
3904 equivalent for practical purposes.
3905
3906 * deprecated.h (SCM_XEVAL, SCM_XEVALCAR): Call scm_i_eval_x
3907 instead of *scm_ceval_ptr. Leave all evaluating to scm_i_eval_x.
3908
3909 * gdbint.c (gdb_eval): Call scm_i_eval_x instead of scm_ceval.
3910
3911 * eval.c (ceval, deval, scm_ceval, scm_deval): Made scm_ceval
3912 static and renamed it to ceval throughout. Provide a new exported
3913 but deprecated function scm_ceval as a wrapper for backwards
3914 compatibility. The same is done for the deval/scm_deval pair of
3915 functions.
3916
3917 * eval.c (CEVAL, SCM_CEVAL): Renamed SCM_CEVAL to CEVAL
3918 throughout. Defined CEVAL to ceval or deval, based on compilation
3919 phase.
3920
3921 * eval.c (SCM_XEVAL, SCM_XEVALCAR): Dispatch on scm_debug_mode_p
3922 to ceval and deval instead of calling *scm_ceval_ptr.
3923
3924 * eval.c (dispatching_eval): New deprecated static function.
3925
3926 * eval.c (scm_ceval_ptr): Initialized to dispatching_eval in order
3927 to emulate its old behaviour as closely as possible.
3928
3929
3930 Change the evaluator such that only expressions for which pair? is
3931 true are passed to CEVAL, and such that all other expressions are
3932 evaluated outside of CEVAL:
3933
3934 * eval.c (EVAL): New, provided in analogy to EVALCAR. Evaluate an
3935 expression that is assumed to be memoized already. All but
3936 expressions of the form '(<form> <form> ...)' are evaluated inline
3937 without calling an evaluator.
3938
3939 * eval.c (SCM_XEVAL, SCM_XEVALCAR, EVALCAR): Evaluate all but
3940 expressions of the form '(<form> <form> ...)' inline without
3941 calling an evaluator.
3942
3943 * eval.c (scm_i_eval_x, scm_i_eval, scm_ceval, scm_deval): Handle
3944 the special case of unmemoized symbols passed on the top level.
3945
3946 * eval.c (CEVAL): Change calls to CEVAL to EVAL, except where it
3947 is known that the expression passed to CEVAL is of the form
3948 '(<form> <form> ...)'. Remove handling of the tc7-objects, since
3949 now it is known that the input expression of CEVAL is a pair.
3950
3951 2004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3952
3953 * eval.c (is_self_quoting_p): New static function.
3954
3955 (scm_m_quote): Use is_self_quoting_p.
3956
3957 (copy_tree): Corrected typo in comment.
3958
3959 2004-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
3960
3961 * eval.c (s_scm_copy_tree): idem.
3962
3963 * list.c (s_scm_filter): remove "pointer" from doc string.
3964
3965 * gc.h (SCM_GC_CELL_TYPE): SCM_GC_CELL_TYPE uses SCM_GC_CELL_OBJECT.
3966
3967 * goops.h (SCM_NUMBER_OF_SLOTS): don't SCM_UNPACK the result.
3968
3969 * backtrace.c ("display_backtrace_body"): SCM_PACK before SCM_EQ_P
3970 (display_frame): idem.
3971 (display_backtrace_file_and_line): idem.
3972
3973 * tags.h (SCM_UNPACK): stricter typechecking on SCM_UNPACK
3974 arguments.
3975
3976 2004-03-26 Kevin Ryde <user42@zip.com.au>
3977
3978 * filesys.c (scm_getcwd, scm_readlink): Avoid memory leak on errors.
3979
3980 * numbers.c (scm_modulo): For inum/big and big/big, remove test of
3981 big==0 since that never occurs.
3982
3983 * numbers.c, numbers.h (scm_modulo_expt): Renamed from
3984 scm_modular_expt, matching scheme level name `modulo-expt'.
3985
3986 * numbers.c (scm_modular_expt): Return a negative remainder for a
3987 negative divisor, the same as `modulo' does.
3988
3989 2004-03-26 Eric Hanchrow <offby1@blarg.net>
3990
3991 * numbers.c, numbers.h (scm_modular_expt): New function.
3992
3993 2004-03-25 Kevin Ryde <user42@zip.com.au>
3994
3995 * numbers.c (scm_min, scm_max): Correction to big/real and real/big,
3996 return inexact as required by r5rs.
3997
3998 2004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3999
4000 * eval.c: Separated some definitions relevant for execution from
4001 the memoization part of the file.
4002
4003 (copy_tree): New static function
4004
4005 (scm_copy_tree): Rewritten to fix two kinds or bugs: First, cyclic
4006 structures are detected now and will lead to an exception instead
4007 of forcing guile to run in an endless loop, using up all the
4008 system's memory. Second, arrays in the cdr of an improper list
4009 are now copied. See the new test cases in eval.test.
4010
4011 2004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4012
4013 * posix.c (scm_gethostname): Make sure len is initialised before
4014 it is used. Restructured to (hopefully) represent possible
4015 configurations more clearly in the code. Added unwind handler.
4016
4017 2004-03-23 Kevin Ryde <user42@zip.com.au>
4018
4019 * posix.c (scm_gethostname): Use sysconf(_SC_HOST_NAME_MAX) and/or
4020 MAXHOSTNAMELEN when available.
4021
4022 2004-03-21 Marius Vollmer <mvo@zagadka.de>
4023
4024 * read.c (skip_scsh_block_comment): Also recognize '\r' as a line
4025 terminator. Rewritten the logic as a state machine, I must have
4026 been doing too much VHDL lately...
4027
4028 * eval.c (scm_ceval, scm_deval): Explicitely evaluate ports to
4029 themselves. Thanks to Han-Wen Nienhuys!
4030
4031 * list.c: Changed docstrings so that they no longer talk about
4032 returning 'pointers' to something.
4033
4034 2004-03-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
4035
4036 * gc.c: remove set_debug_cell_accesses! when
4037 SCM_DEBUG_CELL_ACCESSES is not defined. Scheme source code should
4038 use (if (defined? 'set-debug-cell-accesses!) .. ) to switch on
4039 debugging conditionally.
4040
4041 2004-03-21 Kevin Ryde <user42@zip.com.au>
4042
4043 * stime.c (scm_gmtime): Use gmtime_r when available, for thread safety.
4044
4045 2004-03-20 Kevin Ryde <user42@zip.com.au>
4046
4047 * posix.c (scm_gethostname): Preserve errno across free() call.
4048
4049 2004-03-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
4050
4051 * gc-card.c (sweep_card): use SCM_GC_SET_CELL_WORD for setting
4052 free cells.
4053
4054 2004-03-14 Kevin Ryde <user42@zip.com.au>
4055
4056 * stime.c: Define _GNU_SOURCE for strptime prototype from glibc.
4057 (strptime): Use HAVE_DECL_STRPTIME for when to give own prototype.
4058
4059 2004-03-07 Kevin Ryde <user42@zip.com.au>
4060
4061 * stime.c (scm_gmtime): Return bd_time->tm_zone when available, rather
4062 than "GMT" always.
4063 (filltime): Make zname parameter "const".
4064
4065 2004-03-03 Mikael Djurfeldt <mdj@chunk.mit.edu>
4066
4067 * threads.c, threads.h (scm_c_scm2thread): New function.
4068
4069 2004-02-29 Kevin Ryde <user42@zip.com.au>
4070
4071 * numbers.c (guile_ieee_init): Use C99 INFINITY and NAN when
4072 available. Test HAVE_DINFINITY and HAVE_DQNAN for those globals, in
4073 particular don't assume "defined (__alpha__) && ! defined (linux)"
4074 means OSF. Remove "SCO" code, which was not really SCO specific and
4075 which John W. Eaton advises should be long past being needed.
4076
4077 * posix.c (scm_execl, scm_execlp, scm_execle): Avoid memory leak under
4078 error throw.
4079
4080 2004-02-24 Kevin Ryde <user42@zip.com.au>
4081
4082 * posix.c (scm_cuserid): Use a private result buffer, for thread safe.
4083
4084 2004-02-22 Kevin Ryde <user42@zip.com.au>
4085
4086 * numbers.c (scm_max, scm_min): For one arg, dispatch to generic for
4087 complex, same as for two args. (Handle only inum, big, real, frac).
4088
4089 2004-02-21 Kevin Ryde <user42@zip.com.au>
4090
4091 * posix.c (scm_crypt): Use new HAVE_CRYPT.
4092 (<crypt.h>): Remove HAVE_LIBCRYPT condition.
4093 Reported by Andreas Voegele.
4094
4095 2004-02-20 Neil Jerram <neil@ossau.uklinux.net>
4096
4097 * list.c (scm_list_n): Add #if SCM_DEBUG_CELL_ACCESSES_P around
4098 validation.
4099
4100 * read.c (scm_lreadparen): Removed.
4101 (scm_lreadparen1): Renamed scm_i_lreadparen.
4102
4103 2004-02-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
4104
4105 * list.c (scm_list_n): validate non-immediate arguments;
4106 this will catch forgotten a SCM_UNDEFINED.
4107
4108 2004-02-18 Marius Vollmer <mvo@zagadka.de>
4109
4110 * gc.h (scm_gc_cells_collected): Removed duplicated declaration.
4111 Thanks to Bill Schottstaedt!
4112
4113 * socket.h (scm_gethost): Removed prototype it is already in
4114 "net_db.h". Thanks to Bill Schottstaedt!
4115
4116 2004-02-18 Kevin Ryde <user42@zip.com.au>
4117
4118 * num2integral.i.c (INTEGRAL2BIG): WORDS_BIGENDIAN not right for word
4119 order parameter to mpz_import, in fact with just one word there's no
4120 order to worry about at all.
4121
4122 * numbers.c (scm_num_eq_p): For real==frac, complex==frac, frac==real
4123 and frac==complex, make an exact comparison rather than converting
4124 with fraction2double.
4125
4126 * posix.c, putenv.c, stime.c (environ): Use _NSGetEnviron in Darwin
4127 shared library, since environ is not directly available there.
4128
4129 * script.c (scm_shell_usage): Print to stdout for --help, per GNU
4130 standard.
4131
4132 * stime.c (scm_localtime, scm_gmtime, scm_mktime): Provide a default
4133 errno EINVAL in case localtime and gmtime don't set it.
4134 (scm_mktime, scm_strptime): Forcibly use errno EINVAL for our
4135 SCM_SYSERROR, since mktime and strptime generally don't set errno.
4136
4137 2004-02-16 Kevin Ryde <kevin@swox.se>
4138
4139 * gc-malloc.c (scm_done_malloc, scm_done_free): Allow negative sizes,
4140 which were permitted in the past for these.
4141
4142 * num2float.i.c (NUM2FLOAT): Expand isfinite to !xisinf, as per
4143 previous change to numbers.c.
4144
4145 * script.c (scm_shell_usage): Print bug-guile email address, as per
4146 GNU standard. Reported by Han-Wen Nienhuys.
4147
4148 2004-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
4149
4150 * unif.c (scm_make_uve): Removed local variable and simplified
4151 code in order to avoid compiler used uninitialized warnings.
4152
4153 * hashtab.c, hashtab.h (scm_hash_map_to_list): Renamed from
4154 scm_hash_map.
4155 (scm_hash_fold): Use scm_call_3 directly in the call to
4156 scm_internal_hash_fold instead of going via fold_proc (which is
4157 now removed).
4158 (scm_hash_for_each): Use a trampoline +
4159 scm_internal_hash_for_each_handle.
4160 (scm_internal_hash_for_each_handle, scm_hash_for_each_handle): New
4161 functions.
4162
4163 2004-02-12 Kevin Ryde <user42@zip.com.au>
4164
4165 * ports.c (scm_port_line): In docstring, note first line is 0.
4166 (scm_set_port_line_x): In docstring, note first line is 0.
4167 (scm_port_column): In docstring, there's no default to current input
4168 port, and remove shared port-line @defun.
4169 (scm_set_port_column_x): In docstring, there's no default to current
4170 input port, note first column is 0, remove shared set-port-line!
4171 @defun.
4172
4173 * ramap.c (scm_array_fill_x): For fvect and dvect, use scm_num2dbl to
4174 convert args the same way that array-set! does.
4175
4176 * unif.c (scm_make_uve, scm_array_p): Allow fraction 1/3 as prototype
4177 for dvect.
4178 (scm_array_p): Add missing "break"s in switch, fix llvect test look
4179 for "l" not "s", fix dvect to be false for singp(prot) since such a
4180 value is for fvect.
4181 (scm_array_prototype): Return 1/3 for dvect, rather than 0.33..33.
4182 (exactly_one_third): New variable.
4183 (scm_init_unif): Initialize it.
4184
4185 2004-02-10 Neil Jerram <neil@ossau.uklinux.net>
4186
4187 * read.c (scm_read_opts): Change `escaped-parens' to
4188 `elisp-strings'.
4189
4190 2004-02-08 Neil Jerram <neil@ossau.uklinux.net>
4191
4192 * read.c (scm_read_opts): New opts `elisp-vectors' and
4193 `escaped-parens'.
4194 (s_vector): New.
4195 (scm_lreadr): Use scm_lreadparen1 instead of scm_lreadparen. Make
4196 handling of elisp vector syntax dependent on SCM_ENABLE_ELISP and
4197 `elisp-vectors' option instead of SCM_ELISP_READ_EXTENSIONS.
4198 Allow "\(" and "\)" in strings when SCM_ENABLE_ELISP defined and
4199 `escaped-parens' option set.
4200 (scm_read_token): If elisp vector syntax active, disallow [ and ]
4201 in tokens.
4202 (scm_lreadparen): Rewrite as interface to scm_lreadparen1.
4203 (scm_lreadparen1): New.
4204
4205 * read.h: Remove conditionally compiled last arg to
4206 scm_lreadparen.
4207 (SCM_ELISP_VECTORS_P, SCM_ESCAPED_PARENS_P): New.
4208
4209 2004-01-23 Han-Wen Nienhuys <hanwen@xs4all.nl>
4210
4211 * eval.c (m_expand_body): remove stray variable new_body.
4212
4213 2004-01-22 Marius Vollmer <mvo@zagadka.de>
4214
4215 * eval.c (m_expand_body): Rewrite the expression in place (by
4216 overwriting FORMS) also when a letrec is constructed, not only
4217 when no definitions are found. Do not return rewritten expression
4218 to emphasize the in-place rewriting. Changed all users.
4219
4220 2004-01-19 Han-Wen Nienhuys <hanwen@xs4all.nl>
4221
4222 * gc.c: add protected_object_count, a number that is dumped from
4223 gc_stats()
4224
4225 2004-01-11 Marius Vollmer <mvo@zagadka.de>
4226
4227 * dynwind.h, dynwind.c (scm_frame_unwind,
4228 scm_frame_unwind_handler): Renamed and changed all uses.
4229 (scm_frame_rewind, scm_frame_rewind_handler): Likewise.
4230
4231 2004-01-11 Kevin Ryde <user42@zip.com.au>
4232
4233 * unif.c (scm_bit_count, scm_bit_position, s_scm_bit_set_star_x,
4234 s_scm_bit_count_star, s_scm_bit_invert_x): Clarify docstrings, as per
4235 changes made to scheme-compound.texi.
4236
4237 2004-01-10 Marius Vollmer <mvo@zagadka.de>
4238
4239 * print.c (scm_print_symbol_name): Handle #{`foo}#, #{,foo}#,
4240 #{.}#, and all numeric strings specially. Thanks to Paul Jarc!
4241
4242 * guile-snarf.in: Use mkdir to create a unique temporary directory
4243 that we can safely use. Thanks to Stefan Nordhausen!
4244
4245 2004-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4246
4247 * dynwind.h, dynwind.c (scm_i_dowinds): Removed 'explicit'
4248 argument since it is always zero now. Changed all callers.
4249 Removed code for handling fluids.
4250
4251 * fluids.c (scm_c_with_fluids): Use frames instead of adding to
4252 the wind chain explicitely. Use scm_c_with_fluid for the common
4253 case of only one fluid.
4254 (scm_with_fluid): New.
4255 (scm_c_with_fluid): Use frames instead of scm_c_with_fluids.
4256
4257 * fluids.h, fluids.c (scm_frame_fluid): New.
4258 (scm_with_fluid): New.
4259 (scm_i_swap_fluids, scm_i_swap_fluids_reverse): Removed.
4260
4261 * dynwind.c (scm_frame_end): Do not use scm_i_dowinds. Instead,
4262 do the unwinding directly. It is simple enough.
4263
4264 * dynwind.h, dynwind.c: Did the following renamings:
4265 scm_begin_frame -> scm_frame_begin,
4266 scm_end_frame -> scm_frame_end,
4267 scm_on_unwind -> scm_frame_unwind,
4268 scm_on_rewind -> scm_frame_rewind,
4269 scm_on_unwind_with_scm -> scm_frame_unwind_with_scm,
4270 scm_on_rewind_with_scm -> scm_frame_rewind_with_scm.
4271 Changed all uses.
4272
4273 * aync.h, async.c: Did the follwing renamings:
4274 scm_with_blocked_asyncs -> scm_frame_block_asyncs,
4275 scm_with_unblocked_asyncs -> scm_frame_unblock_asyncs.
4276 Changed all uses.
4277
4278 * ports.h, ports.c: Did the follwing renamings:
4279 scm_with_current_input_port -> scm_frame_current_input_port,
4280 scm_with_current_output_port -> scm_frame_current_output_port,
4281 scm_with_current_error_port -> scm_frame_current_error_port.
4282 Changed all uses.
4283
4284 2004-01-07 Kevin Ryde <user42@zip.com.au>
4285
4286 * numbers.c (s_bignum): Remove, not used since gmp bignums.
4287 Reported by Richard Todd.
4288
4289 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 12*sizeof(long),
4290 for the benefit of powerpc-apple-darwin5.5. Reported by Richard Todd.
4291
4292 * unif.c (scm_aind): Test SCM_CONSP rather than !SCM_NULLP while
4293 traversing the args list, fixes segv if an improper list is given.
4294 Reported by Rouben Rostamian.
4295
4296 2004-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4297
4298 * ports.c (swap_ports, scm_with_current_foo_port): Do not allocate
4299 swap_data on stack, use a 'malloc obj'.
4300
4301 * fluids.h, fluids.c (scm_make_initial_fluids, scm_copy_fluids,
4302 scm_swap_fluids, scm_swap_fluids_reverse): Renamed to
4303 scm_i_... since they are internal. Changed all uses.
4304
4305 * dynwind.c (frame_print): Removed, use the default printer.
4306 (WINDER_F_MARK, WINDER_MARK_P, winder_mark): New.
4307 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New. Use above
4308 to protect SCM values.
4309
4310 * dynwind.h (SCM_F_WIND_EXPLICITELY,
4311 SCM_F_WIND_EXPLICITLY): It's "explicitly" not "explicitely", damn.
4312 Changed all uses.
4313 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New.
4314
4315 2004-01-05 Marius Vollmer <mvo@zagadka.de>
4316
4317 * ports.h, ports.c (scm_with_current_input_port,
4318 scm_with_current_output_port, scm_with_current_error_port): New.
4319
4320 * async.h, async.c (scm_with_blocked_asyncs,
4321 scm_with_unblocked_asyncs): New.
4322
4323 2004-01-03 Marius Vollmer <mvo@zagadka.de>
4324
4325 * dynwind.h, scm_dynwind.c (scm_t_frame_flags, scm_t_wind_flags,
4326 scm_begin_frame, scm_end_frame, scm_on_unwind, scm_on_rewind):
4327 New.
4328 (scm_dowinds, scm_i_dowinds): scm_dowinds has been renamed to
4329 scm_i_dowinds and extended to handle frames and to invoke a 'turn'
4330 function when the outermost wind point has been reached. The
4331 latter is used to copy a continuation stack at the right time.
4332 scm_dowinds remains available.
4333 (SCM_GUARDSP, SCM_BEFORE_GUARD, SCM_AFTER_GUARD, SCM_GUARD_DATA,
4334 tc16_guard, guards_print): Removed.
4335 (scm_internal_dynamic_wind): Reimplemented using frames.
4336
4337 * continuations.c (copy_stack): New, do only the stack copying
4338 part of copy_stack_and_call.
4339 (copy_stack_and_call): Copy the stack after unwinding and before
4340 rewinding.
4341 (scm_dynthrow): Do not call scm_dowinds, this is now done by
4342 copy_stack_and_call.
4343
4344 2004-01-04 Kevin Ryde <user42@zip.com.au>
4345
4346 * numbers.c (scm_less_p): Don't convert frac to float for compares,
4347 can give bad results due to rounding.
4348
4349 * stime.c (scm_current_time, scm_gettimeofday): Add a comment about
4350 setzone/restorezone protection for DOS.
4351
4352 2003-12-26 Marius Vollmer <mvo@zagadka.de>
4353
4354 * gen-scmconfig.h.in, gen-scmconfig.c: Arrange for scm_t_intmax
4355 and scm_t_uintmax to be defined in scmconfig.h
4356
4357 2003-12-03 Kevin Ryde <user42@zip.com.au>
4358
4359 * numbers.c (scm_less_p): Remove spurious xisnan from frac+big case.
4360
4361 * numbers.c (scm_make_ratio): Check for numerator equal to
4362 SCM_MOST_NEGATIVE_FIXNUM and bignum denominator the negative of that,
4363 giving integer -1.
4364
4365 * numbers.c (scm_real_part): Return fraction unchanged rather than
4366 converting to flonum.
4367
4368 2003-11-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
4369
4370 * modules.c (module_variable): Fixed (and thus simplified) the
4371 definition of SCM_BOUND_THING_P to reflect the fact that since
4372 after the 1.4 series of guile, obarrays only hold variable
4373 objects.
4374
4375 2003-11-30 Marius Vollmer <mvo@zagadka.de>
4376
4377 * numbers.c (scm_logand): It's "#b...", not "#\b...".
4378
4379 From Paul Jarc:
4380
4381 * read.c (scm_lreadr): Signal an error for invalid escape
4382 sequences in strings. Code cleanups too.
4383
4384 * print.c (scm_iprin1): use \xNN hexadecimal sequences when
4385 writing control characters in strings.
4386
4387 2003-11-21 Marius Vollmer <mvo@zagadka.de>
4388
4389 * ports.c (scm_drain_input): Bug fix: only access the port after
4390 checking that it indeed is one.
4391
4392 2003-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
4393
4394 * eval.c (s_bad_define): New static identifier.
4395
4396 (m_body): Fixed comment.
4397
4398 (scm_m_define): Don't generate memoized code for definitions that
4399 are not on the top level. As a consequence, no memoized code at
4400 all is generated for definitions any more: Top level definitions
4401 are executed immediately during memoization and internal
4402 definitions are handled separately in m_expand_body.
4403
4404 (scm_unmemocopy, unmemocopy): Removed code for unmemoizing
4405 definitions. Consequently, there is no unmemoizing code any more
4406 that might modify the environment. Thus, the old scm_unmemocopy
4407 is removed and the old unmemocopy is renamed to scm_unmemocopy.
4408
4409 (SCM_CEVAL): The SCM_IM_DEFINE keyword can no longer occur in
4410 memoized code. Call EVALCAR for continuations. Prefer !SCM_NULLP
4411 over SCM_NIMP in places, where the argument is known to be part of
4412 a proper list.
4413
4414 2003-11-21 Kevin Ryde <user42@zip.com.au>
4415
4416 * numbers.c (scm_abs): Allocate a new real only for negatives, as done
4417 for bignums.
4418
4419 * numbers.c (scm_bit_extract): Use mpz functions, rearrange inum case
4420 to share some shifting.
4421
4422 * numbers.c (scm_integer_expt): Don't mpz_init after scm_i_clonebig or
4423 scm_i_mkbig, since they do so already. Don't mpz_clear a bignum SCM,
4424 since gc does this.
4425
4426 2003-11-19 Marius Vollmer <mvo@zagadka.de>
4427
4428 * numbers.c (scm_make_ratio): Rewritten to have a simpler
4429 structure. Previously, not all cases with a negative denominator
4430 were covered.
4431
4432 * numbers.c (mem2decimal_from_point): use scm_divide instead of
4433 scm_divide2real when forming the fractional part. This allows
4434 "#e1.2" to yield 6/5.
4435
4436 * numbers.c (scm_i_fraction_equalp): Do not treat the return value
4437 of scm_equal_p as a C boolean, use SCM_FALSEP. Previously, all
4438 fractions were equal to each other regardless of value. Ooops.
4439
4440 * numbers.c (scm_rationalize): Return an inexact result when given
4441 inexact arguments.
4442
4443 * numbers.c (scm_exact_p, scm_inexact_p): Throw error for
4444 non-numbers.
4445
4446 2003-11-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4447
4448 Support for exact fractions from Bill Schottstaedt! Thanks!
4449
4450 * print.c (scm_iprin1): Handle fractions.
4451
4452 * objects.h (scm_class_fraction): New.
4453 * objects.c (scm_class_fraction): New.
4454 (scm_class_of): Handle fractions.
4455
4456 * hash.c (scm_hasher): Handle fractions.
4457
4458 * numbers.c: New code for handling fraction all over the place.
4459 (scm_odd_p, scm_even_p): Handle inexact integers.
4460 (scm_rational_p): New function, same as scm_real_p.
4461 (scm_round_number, scm_truncate_number, scm_ceiling, scm_floor):
4462 New exact functions that replace the inexact 'dsubr'
4463 implementations.
4464 (scm_numerator, scm_denominator): New.
4465
4466 * numbers.h (SCM_NUMP): Recognize fractions.
4467 (SCM_FRACTIONP, SCM_SLOPPY_FRACTIONP, SCM_FRACTION_NUMERATOR,
4468 SCM_FRACTION_DENOMINATOR, SCM_FRACTION_SET_NUMERATOR,
4469 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
4470 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
4471 SCM_FRACTION_REDUCED): New.
4472 (scm_floor, scm_ceiling, scm_truncate_number, scm_round_number):
4473 New prototypes.
4474 (scm_make_ratio, scm_rationalize, scm_numerator, scm_denominator,
4475 scm_rational_p): New prototypes.
4476 (scm_i_dbl2num, scm_i_fraction2double, scm_i_fraction_equalp,
4477 scm_i_print_fraction): New prototypes.
4478
4479 * goops.c (create_standard_classes): Create "<fraction>" class.
4480
4481 * gc-mark.c (scm_gc_mark_dependencies): Handle fractions.
4482
4483 * gc-card.c (scm_i_sweep_card): Include scm_tc16_fraction as a
4484 case in the switch, but do nothing for now.
4485
4486 * eval.c (SCM_CEVAL, SCM_APPLY, call_dsubr_1): Convert fractions
4487 to doubles when calling 'dsubr' functions.
4488
4489 * eq.c (scm_eqv_p, scm_equal_p): Handle fractions.
4490
4491 2003-11-18 Rob Browning <rlb@defaultvalue.org>
4492
4493 * gen-scmconfig.c (main): remove public definition of
4494 SCM_SIZEOF___INT64 and SCM_SIZEOF_UNSIGNED___INT64 and add
4495 direct typedef of long_long and ulong_long inside deprecated block
4496 when appropriate.
4497
4498 * deprecated.h: move long_long and ulong_long definitions to
4499 gen-scmconfig.c so that we don't need to add SCM_SIZEOF___INT64
4500 and SCM_SIZEOF_UNSIGNED___INT64 to the public namespace.
4501
4502 2003-11-17 Marius Vollmer <mvo@zagadka.de>
4503
4504 * hash.c (scm_string_hash): New hashing algorithm that takes the
4505 complete string into account.
4506
4507 * eval.c (scm_m_generalized_set_x): Macroexpand the target when it
4508 is a list. This allows (@ ...) to work with set!.
4509 (scm_m_generalized_set_x): Use ASSERT_SYNTAX_2 instead of
4510 SCM_ASSYNT.
4511
4512 * script.c (scm_compile_shell_switches): Use scm_c_read_string for
4513 the "-e" option instead of scm_str2symbol. This allows things
4514 like (@ ...) to be specified for the entry point.
4515
4516 2003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
4517
4518 * eval.c (scm_m_letstar): Create memoized code in place to
4519 minimize consing.
4520
4521 2003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
4522
4523 * eval.c (s_splicing): Commented and reformulated.
4524
4525 (lookup_global_symbol, lookup_symbol): New static functions.
4526
4527 (s_test, s_bindings, s_duplicate_bindings, s_variable): Removed.
4528
4529 (try_macro_lookup, literal_p): Use lookup_symbol instead of
4530 creating a temporary pair for scm_lookupcar.
4531
4532 (scm_unmemocar, unmemocar): Renamed scm_unmemocar to unmemocar,
4533 created deprecated wrapper function scm_unmemocar.
4534
4535 (SCM_VALIDATE_NON_EMPTY_COMBINATION, scm_sym_else,
4536 scm_sym_unquote, scm_sym_uq_splicing, scm_sym_enter_frame,
4537 scm_sym_apply_frame, scm_sym_exit_frame, scm_sym_trace, f_apply,
4538 undefineds, sym_three_question_marks): Moved around without
4539 modifications.
4540
4541 * eval.c, eval.h (scm_macroexp, scm_unmemocar): Deprecated.
4542
4543 2003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
4544
4545 * eval.c (try_macro_lookup, expand_user_macros, is_system_macro_p,
4546 m_expand_body, scm_m_expand_body): Grouped together with m_body.
4547 No further modifications.
4548
4549 2003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
4550
4551 * eval.c (s_mixed_body_forms): New static identifier.
4552
4553 (canonicalize_define, scm_m_define): The check for a bad
4554 expression is performed in canonicalize_define now.
4555
4556 (try_macro_lookup, expand_user_macros, is_system_macro_p): New
4557 static helper functions for m_expand_body.
4558
4559 (m_expand_body): Use ASSERT_SYNTAX to signal syntax errors. Only
4560 expand user defined macros. Fixed handling of the definition/
4561 expression boundary. Fixed handling of definitions grouped with
4562 'begin. Use canonicalize_define to expand definitions.
4563
4564 2003-11-13 Marius Vollmer <mvo@zagadka.de>
4565
4566 * read.c (scm_lreadr): detect EOF after backslash, and interpret
4567 \xNN hexadecimal sequences. From Paul Jarc, thanks!
4568
4569 * snarf.h (SCM_SMOB, SCM_GLOBAL_SMOB, SCM_SMOB_MARK,
4570 SCM_GLOBAL_SMOB_MARK, SCM_SMOB_FREE, SCM_GLOBAL_SMOB_FREE,
4571 SCM_SMOB_PRINT, SCM_GLOBAL_SMOB_PRINT, SCM_SMOB_EQUALP,
4572 SCM_GLOBAL_SMOB_EQUALP, SCM_SMOB_APPLY, SCM_GLOBAL_SMOB_APPLY):
4573 New macros from Paul Jarc. Thanks!
4574
4575 * gc_os_dep.c (scm_get_stack_base): Provide a definition that
4576 return NULL when the machine type is unknown. Previously,
4577 gc_os_dep.c would refuse to compile.
4578
4579 2003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
4580
4581 * eval.c (scm_m_body, m_body, scm_m_lambda, memoize_named_let,
4582 scm_m_let, scm_m_letrec, m_expand_body): Renamed static function
4583 scm_m_body to m_body.
4584
4585 2003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
4586
4587 * eval.c, eval.h (scm_m_expand_body, m_expand_body): Deprecated
4588 public use of scm_m_expand_body in eval.h. In eval.c, renamed
4589 scm_m_expand_body to m_expand_body and made it static. Added
4590 deprecated wrapper scm_m_expand_body.
4591
4592 (scm_eval_body, SCM_CEVAL, SCM_APPLY): Use m_expand_body instead
4593 of scm_m_expand_body.
4594
4595 2003-11-09 Kevin Ryde <user42@zip.com.au>
4596
4597 * dynl.c (scm_dynamic_unlink): Need scm_list_1 on error message
4598 argument. Reported by Mike Gran.
4599
4600 2003-11-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
4601
4602 * eval.c (s_missing_body_expression): New static identifier.
4603
4604 (s_body): Removed.
4605
4606 (scm_m_expand_body): Fixed core dump when passing a body with
4607 defines, but without expressions (see additions to syntax.test).
4608 Use ASSERT_SYNTAX to signal syntax errors.
4609
4610 2003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
4611
4612 * eval.c (canonicalize_define): New static helper function.
4613
4614 (memoize_define, canonicalize_define): Extract handling of
4615 function currying to canonicalize_define.
4616
4617 2003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
4618
4619 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
4620 Make sure that error checking in debug mode is not worse than in
4621 standard mode.
4622
4623 2003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
4624
4625 * eval.c (scm_m_body, scm_m_lambda): Documentation strings are not
4626 handled in scm_m_body any more, but rather in scm_m_lambda.
4627
4628 (scm_m_body, memoize_named_let, scm_m_let, scm_m_letstar,
4629 scm_m_letrec, scm_m_expand_body): Check for validity is done by
4630 calling functions of scm_m_body.
4631
4632 (scm_m_lambda): Avoid unnecessary consing when creating the
4633 memoized code.
4634
4635 2003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
4636
4637 * eval.c (s_expression): Added comment.
4638
4639 (s_empty_combination, error_unbound_variable): New static
4640 identifiers.
4641
4642 (SCM_VALIDATE_NON_EMPTY_COMBINATION, SCM_EVALIM2, scm_lookupcar1):
4643 Use ASSERT_SYNTAX, syntax_error or error_unbound_variable to
4644 signal syntax errors.
4645
4646 (SCM_CEVAL): Separated handling of evaluator bytecodes and other
4647 scheme objects.
4648
4649 2003-10-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
4650
4651 * eval.c (unmemocar, sym_three_question_marks, scm_unmemocar):
4652 Grouped together with unmemocopy, without modifications.
4653
4654 (build_binding_list, unmemocopy): Renamed names of list arguments
4655 and variables to reflect the actual order of the list elements.
4656
4657 2003-10-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
4658
4659 * eval.c (s_defun): New static identifier.
4660
4661 (scm_m_nil_cond, scm_m_atfop, scm_m_undefine): Add comments. Use
4662 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
4663 when creating the memoized code.
4664
4665 2003-10-19 Kevin Ryde <user42@zip.com.au>
4666
4667 * numbers.c (scm_ash): Revise docstring as per recent update to manual.
4668
4669 * numbers.c (scm_i_big2dbl): Rewrite, carefully rounding to "closest"
4670 in accordance with R5RS, which just mpz_get_d doesn't really give.
4671
4672 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
4673
4674 * eval.c (s_bad_slot_number): New static identifier.
4675
4676 (scm_m_atslot_ref, scm_m_atslot_set_x): Use ASSERT_SYNTAX to
4677 signal syntax errors. Avoid unnecessary consing when creating the
4678 memoized code.
4679
4680 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
4681
4682 * eval.c (scm_m_cont, scm_m_at_call_with_values,
4683 scm_m_generalized_set_x): Use ASSERT_SYNTAX to signal syntax
4684 errors. Avoid unnecessary consing when creating the memoized
4685 code.
4686
4687 (scm_m_generalized_set_x): Let scm_m_set_x handle the R5RS
4688 standard case. Make sure line and file information are copied to
4689 every created expression.
4690
4691 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
4692
4693 * eval.c (scm_m_set_x, scm_m_apply, scm_m_atbind): Use
4694 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
4695 when creating the memoized code.
4696
4697 (scm_m_atbind): Reversed the order, in which the init expressions
4698 are stored and executed. The order of execution is now equal to
4699 the order in which the initializers of the let-forms are executed.
4700 Use check_bindings and transform_bindings.
4701
4702 (SCM_CEVAL): Eliminated SCM_NIMP in favor of more appropriate
4703 !SCM_NULLP. Added some comments.
4704
4705 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
4706
4707 * eval.c: Sorted include files alphabetically.
4708
4709 (scm_m_begin): Added comment.
4710
4711 (scm_m_or): Use ASSERT_SYNTAX to signal syntax errors. Avoid
4712 unnecessary consing when creating the memoized code.
4713
4714 (iqq, scm_m_quasiquote, scm_m_quote): Use ASSERT_SYNTAX to signal
4715 syntax errors. Be more specific about the kind of error that was
4716 detected.
4717
4718 (scm_m_quote, unmemocopy): As an optimization, vector constants
4719 are now inserted unquoted into the memoized code. During
4720 unmemoization the quotes are added again to provide syntactically
4721 correct code.
4722
4723 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
4724
4725 * eval.c (scm_m_let, scm_m_letstar, scm_m_letrec,
4726 scm_m_expand_body, check_bindings): Extracted syntax checking of
4727 bindings to new static function check_bindings.
4728
4729 (scm_m_let, memoize_named_let): Extracted handling of named let to
4730 new static function memoize_named_let.
4731
4732 (transform_bindings, scm_m_let, scm_m_letstar, scm_m_letrec): Use
4733 ASSERT_SYNTAX to signal syntax errors. Be more specific about the
4734 kind of error that was detected. Avoid use of SCM_CDRLOC. Avoid
4735 unnecessary consing when creating the memoized code.
4736
4737 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
4738
4739 * eval.c (s_bad_formals, s_bad_formal, s_duplicate_formal): New
4740 static identifiers.
4741
4742 (s_clauses, s_formals, s_duplicate_formals): Removed.
4743
4744 (scm_m_lambda): Use ASSERT_SYNTAX to signal syntax errors. Be more
4745 specific about the kind of error that was detected. Prepare for
4746 easier integration of changes for separated memoization.
4747
4748 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
4749
4750 * eval.c (s_duplicate_binding): New static identifier.
4751
4752 (scm_m_case): Call scm_c_memq instead of implementing it inline.
4753
4754 (scm_m_define): Added comment about how we check for duplicate
4755 formals.
4756
4757 (scm_m_do): Added check for duplicate bindings.
4758
4759 (scm_m_if): Use ASSERT_SYNTAX to signal syntax errors. Avoid
4760 unnecessary consing when creating the memoized code.
4761
4762 (scm_c_improper_memq, c_improper_memq, scm_m_lambda): Renamed
4763 scm_c_improper_memq to c_improper_memq, since it is not exported.
4764
4765 (transform_bindings): Call scm_c_memq rather than
4766 scm_c_improper_memq.
4767
4768 (SCM_CEVAL): Simplified handling of SCM_IM_IF forms.
4769
4770 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
4771
4772 * eval.c (s_bad_bindings, s_bad_binding, s_bad_exit_clause): New
4773 static identifiers.
4774
4775 (scm_m_do): Use ASSERT_SYNTAX to signal syntax errors. Be more
4776 specific about the kind of error that was detected. Avoid use of
4777 SCM_CDRLOC. Avoid unnecessary consing when creating the memoized
4778 code, this way also making sure that file name, line number
4779 information etc. remain available.
4780
4781 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
4782
4783 * eval.c (memoize_as_thunk_prototype): New static function.
4784
4785 (scm_m_delay, scm_m_future): Use memoize_as_thunk_prototype.
4786 Avoid unnecessary consing when creating the memoized code.
4787
4788 2003-10-12 Kevin Ryde <user42@zip.com.au>
4789
4790 * list.c (scm_append): Track argument number and use in error.
4791
4792 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
4793
4794 * eval.c (s_missing_expression, s_bad_variable): New static
4795 identifiers.
4796
4797 (scm_m_define): Use ASSERT_SYNTAX to signal syntax errors. Prefer
4798 R5RS terminology for the naming of variables. Be more specific
4799 about the kind of error that was detected. Make sure file name,
4800 line number etc. are added to all freshly created expressions.
4801 Avoid unnecessary consing when creating the memoized code.
4802
4803 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
4804
4805 * eval.c (s_extra_expression, s_misplaced_else_clause,
4806 s_bad_cond_clause, s_missing_recipient): New static identifiers.
4807
4808 (s_extra_case_clause): Removed.
4809
4810 (scm_m_case, scm_m_cond): If a clause appears after an else
4811 clause, report a misplaced else clause.
4812
4813 (scm_m_cond): Use ASSERT_SYNTAX to signal syntax errors. Be more
4814 specific about the kind of error that was detected. Handle bound
4815 'else and '=>. Avoid unnecessary consing when creating the
4816 memoized code.
4817
4818 (scm_m_cond, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
4819 the syntactic keyword 'else and SCM_IM_ARROW to memoize the
4820 syntactic keyword '=>.
4821
4822 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
4823
4824 * eval.c (scm_m_case): Allow empty lists of case labels.
4825
4826 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
4827
4828 * tags.h (SCM_IM_ELSE, SCM_IM_ARROW): New memoizer codes.
4829
4830 * print.c (scm_isymnames): Add names for the new memoizer codes.
4831
4832 * eval.c (s_missing_clauses, s_bad_case_clause,
4833 s_extra_case_clause, s_bad_case_labels, s_duplicate_case_label,
4834 literal_p): New static identifiers.
4835
4836 (scm_m_case): Use ASSERT_SYNTAX to signal syntax errors. Be more
4837 specific about the kind of error that was detected. Check for
4838 duplicate case labels. Handle bound 'else. Avoid unnecessary
4839 consing when creating the memoized code.
4840
4841 (scm_m_case, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
4842 the syntactic keyword 'else.
4843
4844 2003-10-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
4845
4846 * eval.c (s_bad_expression, syntax_error_key, syntax_error,
4847 ASSERT_SYNTAX, ASSERT_SYNTAX_2): New static identifiers.
4848
4849 (scm_m_and): Use ASSERT_SYNTAX to signal syntax errors. Avoid
4850 unnecessary consing when creating the memoized code.
4851
4852 2003-10-09 Kevin Ryde <user42@zip.com.au>
4853
4854 * numbers.c (scm_inexact_to_exact): Don't depend on what double->long
4855 cast gives for values bigger than a long, or for nan or inf.
4856
4857 2003-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
4858
4859 * smob.h (scm_make_smob_type): Made the declaration match the
4860 definition.
4861
4862 2003-10-07 Marius Vollmer <mvo@zagadka.de>
4863
4864 * goops.c, objects.h, smob.c, smob.h: Make type names char
4865 const * instead of char *. Thanks to Paul Jarc!
4866
4867 2003-10-02 Kevin Ryde <user42@zip.com.au>
4868
4869 * strports.c (scm_call_with_output_string): scm_get_output_string
4870 rather than scm_strport_to_string, so as to guard against the port
4871 having been closed by the called procedure. Reported by Nic Ferrier.
4872
4873 2003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
4874
4875 * numbers.h (SCM_INEXACTP): Removed uses of SCM_TYP16S.
4876
4877 * tags.h, deprecated.h (SCM_TYP16S): Deprecated and moved from
4878 tags.h to deprecated.h.
4879
4880 2003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
4881
4882 This set of patches introduces a new tc7 code scm_tc7_number for
4883 numbers. Bignums, reals and complex numbers are turned from smobs
4884 into subtypes of scm_tc7_number.
4885
4886 * tags.h (scm_tc7_number): New.
4887
4888 * eq.c (scm_equal_p), eval.c (SCM_CEVAL), evalext.c
4889 (scm_self_evaluating_p), gc-card.c (scm_i_sweep_card), gc-mark.c
4890 (scm_gc_mark_dependencies), goops.c (create_smob_classes), hash.c
4891 (scm_hasher), numbers.c, numbers.h (SCM_NUMP), objects.c
4892 (scm_class_of), print.c (scm_iprin1), smob.c
4893 (scm_smob_prehistory): Don't handle bignums, reals and complex
4894 numbers as subtypes of scm_tc7_smob any more.
4895
4896 * numbers.h, tags.h (scm_tc16_big, scm_tc16_real,
4897 scm_tc16_complex): Moved definitions from tags.h to numbers.h.
4898
4899 2003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
4900
4901 * numbers.c (scm_make_complex), gc-card.c (scm_i_sweep_card): Use
4902 sizeof (scm_t_complex) to determine the memory size of the
4903 malloc'd area for complex numbers.
4904
4905 2003-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
4906
4907 * numbers.c (scm_bigequal): Fixed.
4908
4909 2003-09-16 Marius Vollmer <mvo@zagadka.de>
4910
4911 * stime.c (scm_current_time): 'time' does not set errno so don't
4912 use SCM_SYSERROR for reporting errors.
4913
4914 2003-09-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
4915
4916 This set of patches eliminates the dependency between the
4917 implementation of evaluator specific memoization codes and special
4918 constants like #f, '() etc. ('flags'), which are not evaluator
4919 specific. The goal is to remove definitions of evaluator
4920 memoization codes completely from the public interface. This will
4921 make it possible to experiment more freely with optimizations of
4922 guile's internal representation of memoized code.
4923
4924 * objects.c (scm_class_of): Eliminate dependency on SCM_ISYMNUM.
4925
4926 * print.c (iflagnames): New array, holding the printed names of
4927 guile's special constants ('flags').
4928
4929 (scm_isymnames): Now holds only the printed names of the
4930 memoization codes.
4931
4932 (scm_iprin1): Separate the handling of memoization codes and
4933 guile's special constants.
4934
4935 * tags.h (scm_tc9_flag, SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA,
4936 SCM_IFLAGNUM): new
4937
4938 (scm_tc8_char, scm_tc8_iloc, SCM_BOOL_F, SCM_BOOL_T,
4939 SCM_UNDEFINED, SCM_EOF_VAL, SCM_EOL, SCM_UNSPECIFIED, SCM_UNBOUND,
4940 SCM_ELISP_NIL, SCM_IM_DISPATCH, SCM_IM_SLOT_REF,
4941 SCM_IM_SLOT_SET_X, SCM_IM_DELAY, SCM_IM_FUTURE,
4942 SCM_IM_CALL_WITH_VALUES, SCM_IM_NIL_COND, SCM_IM_BIND): Changed
4943 values.
4944
4945 (SCM_IFLAGP): SCM_IFLAGP now only tests for flags.
4946
4947 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Generalized to use the
4948 tc9 macros and scm_tc9_flag.
4949
4950 2003-09-15 Marius Vollmer <mvo@zagadka.de>
4951
4952 * posix.c (scm_setgroups): Check that the gid list is not too
4953 long. Thanks to Paul Jarc!
4954
4955 2003-09-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
4956
4957 * tags.h: Reduced the number of short instructions from 14 to 13.
4958 The typecode of the former 14th short instruction is now used to
4959 represent long instructions. Changed some comments to reflect
4960 this fact.
4961
4962 (SCM_MAKISYM): ISYMs get a new tc7 code, namely the one that was
4963 previously used by SCM_IM_DEFINE.
4964
4965 (SCM_IM_DEFINE): Turned into a long instruction.
4966
4967 * eval.c (unmemocopy, SCM_CEVAL): Treat SCM_IM_DEFINE as a long
4968 instruction.
4969
4970 * eval.c (SCM_CEVAL): Since characters and iflags have now a tc7
4971 code that is separate from all instructions, one level of dispatch
4972 for long instructions can be eliminated.
4973
4974 * print.c (scm_isymnames): Removed some commented code.
4975
4976 2003-09-12 Marius Vollmer <mvo@zagadka.de>
4977
4978 * __scm.h (SCM_FENCE): Use __memory_barrier with the Intel
4979 compiler on IA64.
4980
4981 * hashtab.h (scm_tc16_hashtable): Added "extern" declaration.
4982
4983 * modules.c (scm_module_reverse_lookup): Check that the obarray
4984 really is a hashtable and do nothing if not.
4985
4986 * inline.h: Use "extern inline" only with GCC. Use "static
4987 inline" else.
4988
4989 2003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
4990
4991 * numbers.h (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Removed uses
4992 of SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
4993
4994 * numbers.h, deprecated.h (SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP,
4995 SCM_SLOPPY_COMPLEXP): Deprecated and moved from numbers.h to
4996 deprecated.h.
4997
4998 2003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
4999
5000 * eq.c (scm_eqv_p, scm_equal_p): Removed uses of
5001 SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
5002
5003 * eq.c (scm_eqv_p, scm_equal_p): Reordered comparisons from
5004 0.0==some_expression to some_expression==0.0. The latter is
5005 better readable. The former is preferred by some people, since it
5006 leads to a compiler error when confusing == with =. However, when
5007 using gcc, a warning will be issued if in an if-statement an
5008 assigment appears. Since many Guile developers are using gcc,
5009 such errors will not remain unnoticed anyway. We can therefore
5010 focus on better readability.
5011
5012 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5013
5014 * tags.h: Added description of Guile's type system. Removed some
5015 old and misleading comments.
5016
5017 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5018
5019 * unit.c (scm_cvref): Eliminate unnecessary uses of SCM_NIMP,
5020 SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
5021
5022 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5023
5024 * numbers.h (SCM_MAKINUM): Define in terms of scm_tc2_int.
5025
5026 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Define in terms of the
5027 respective SLOPPY macro.
5028
5029 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5030
5031 * eq.c (scm_equal_p): Use SCM_TYP7 to check if an object is of
5032 type string, not SCM_TYP7S.
5033
5034 2003-09-03 Kevin Ryde <user42@zip.com.au>
5035
5036 * numbers.c (scm_lognot): Correction to docstring, ones-complement not
5037 2s-complement.
5038
5039 * stime.c (scm_strptime): Add comment about glibc strptime %s and
5040 current timezone requiring SCM_DEFER_INTS.
5041
5042 2003-08-30 Neil Jerram <neil@ossau.uklinux.net>
5043
5044 * script.c (scm_compile_shell_switches): Make -s switch optional
5045 if file to be loaded does not begin with a `-'. (Thanks to Aaron
5046 VanDevender for the patch!)
5047
5048 2003-08-30 Kevin Ryde <user42@zip.com.au>
5049
5050 * numbers.c (scm_lognot): Rewrite using ~ and mpz_com, for directness
5051 and to have non-integer types rejected as per other logical funcs.
5052
5053 2003-08-28 Kevin Ryde <user42@zip.com.au>
5054
5055 * gc.h (scm_remember_upto_here_1): Revise comments on the asm form.
5056
5057 2003-08-23 Kevin Ryde <user42@zip.com.au>
5058
5059 * simpos.c (scm_system): Remove SCM_DEFER_INTS, system() should be
5060 thread safe, and could take a long time too.
5061
5062 2003-08-22 Kevin Ryde <user42@zip.com.au>
5063
5064 * numbers.c (scm_difference): Correction to bignum - negative inum.
5065
5066 2003-08-14 Kevin Ryde <user42@zip.com.au>
5067
5068 * gc.h (scm_remember_upto_here_1, scm_remember_upto_here_2)
5069 [__GNUC__]: Use volatile asm macros rather than a function call.
5070 * gc.c (scm_remember_upto_here_1, scm_remember_upto_here_2): Undefine
5071 macros while defining functions.
5072
5073 * simpos.c (getenv): Use <stdlib.h> for prototype.
5074 (scm_system): In docstring, refer to status:exit-val rather than
5075 "functions above".
5076
5077 2003-08-09 Kevin Ryde <user42@zip.com.au>
5078
5079 * srcprop.c (scm_source_properties): Return plist from hash if it's a
5080 list set by source-properties! rather than an SRCPROPS object,
5081
5082 2003-07-29 Kevin Ryde <user42@zip.com.au>
5083
5084 * properties.c (scm_primitive_property_ref): In docstring, note
5085 parameters to not-found-proc, use hyphens rather than underscores for
5086 that parameter name.
5087 (scm_primitive_property_set_x): In docstring, VAL is the value
5088 parameter not CODE.
5089
5090 2003-07-27 Marius Vollmer <mvo@zagadka.de>
5091
5092 * print.c (scm_print_symbol_name): handle more weird characters by
5093 escaping the symbol name properly. Thanks to Paul Jarc!
5094
5095 * posix.h (scm_setgroups): New prototype.
5096 * posix.c (scm_setgroups): New. Thanks to Paul Jarc!
5097 (scm_getgroups): Handle groups ids that don't fit into a fixnum.
5098 Don't use SCM_WRITABLE_VELTS.
5099
5100 * gc.h (SCM_GC_SET_CELL_BVEC): New.
5101 * gc-card.c (scm_i_init_card_freelist): Use it. Thanks to
5102 Matthias Koeppe!
5103
5104 * __scm.h (SCM_C_INLINE_KEYWORD): New.
5105 * numbers.c: Use it in place of SCM_C_INLINE so that the code
5106 compiles when SCM_C_INLINE is undefined.
5107
5108 2003-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
5109
5110 * __scm.h: Reformulated the architecture and compiler properties
5111 in terms of properties of scm_t_bits and SCM variables rather than
5112 in terms of c standard types. This is since it is not known which
5113 of the standard types scm_t_bits and SCM variables will be defined
5114 to.
5115
5116 2003-07-24 Kevin Ryde <user42@zip.com.au>
5117
5118 * numbers.c (scm_angle): Use scm_flo0 for non-negative inum, bignum
5119 and real.
5120
5121 2003-07-18 Kevin Ryde <user42@zip.com.au>
5122
5123 * numbers.c (scm_product): In complex * bignum, correction to
5124 REAL/IMAG fetch, x is the complex, not y.
5125
5126 2003-07-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5127
5128 * numbers.c (scm_odd_p, scm_even_p): Bugfix: Treat result of
5129 scm_inf_p test as Scheme values.
5130 (scm_sum): Bugfix: Normalize bignum created from a negative bignum
5131 and a positive inum.
5132 Use GNU indentation style.
5133
5134 2003-07-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5135
5136 * values.c (scm_values): Build lists of length 1 by using
5137 scm_list_1 instead of using scm_cons.
5138
5139 2003-07-10 Kevin Ryde <user42@zip.com.au>
5140
5141 * deprecation.c (scm_c_issue_deprecation_warning_fmt): Add va_end.
5142 * list.c (scm_list_n): Ditto.
5143
5144 * gc-malloc.c (scm_gc_realloc): Define "ptr" at start of function.
5145
5146 2003-07-08 Matthias Koeppe <mkoeppe@merkur.math.uni-magdeburg.de>
5147
5148 * tags.h (scm_t_bits, scm_t_signed_bits, etc): Avoid solaris empty
5149 defines of INTPTR_MAX and UINTPTR_MAX, combine conditionals for
5150 scm_t_bits and scm_t_signed_bits to avoid any chance of one and not
5151 the other using intptr_t.
5152
5153 2003-07-08 Kevin Ryde <user42@zip.com.au>
5154
5155 * numbers.c (scm_make_polar): Use sincos, when available.
5156 (scm_magnitude): Use hypot.
5157
5158 * ports.c (scm_char_ready_p, scm_peek_char): In docstrings, don't use
5159 @footnote since it doesn't go through to guile-procedures.txt.
5160
5161 * threads.c (scm_call_with_new_thread): In docstring, use "( )"
5162 outside @var to quieten makeinfo, and use @code.
5163
5164 2003-07-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5165
5166 * gc-malloc.c (decrease_mtrigger): new function
5167 (increase_mtrigger): new function, separate debug registering and
5168 mtrigger administration.
5169 (scm_gc_realloc): bugfix: do mtrigger administration before the
5170 actual realloc, for the realloc might invalidate a GC-d segment of
5171 memory. Thanks to Sam Hocevar for pointing this out.
5172 (scm_gc_realloc): use scm_malloc_reregister instead of
5173 unregistering and registering in sequence.
5174
5175 2003-07-03 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5176
5177 * __scm.h (SCM_ASSERT): change "else" expansion to "do { } while (0)"
5178
5179 2003-07-02 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5180
5181 * __scm.h (SCM_ASRTGO): add "else" to macro expansions with if
5182 clauses.
5183
5184 2003-06-29 Marius Vollmer <mvo@zagadka.de>
5185
5186 * deprecated.h (SCM_OPDIRP, scm_fport, scm_option, scm_srcprops,
5187 scm_srcprops_chunk, scm_info_frame, scm_stack, scm_array,
5188 scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_FUNC_NAME, SCM_WTA,
5189 RETURN_SCM_WTA, SCM_VALIDATE_NUMBER_COPY,
5190 SCM_VALIDATE_NUMBER_DEF_COPY, SCM_VALIDATE_OPDIR): Re-added from
5191 the release_1_6 branch.
5192
5193 2003-06-25 Stefan Jahn <stefan@lkcc.org>
5194
5195 * continuations.c: Redeclaration of getcontext() via the
5196 __asm__ ("getcontext") directive.
5197
5198 * continuations.h: Include <ucontext.h> instead of
5199 <sys/ucontext.h>.
5200
5201 2003-06-21 Kevin Ryde <user42@zip.com.au>
5202
5203 * numbers.c (_GNU_SOURCE): #define, to get C99 things.
5204 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, $asinh, $acosh,
5205 $atanh, truncate): Use C library asinh, acosh, atanh and trunc, when
5206 available.
5207 (scm_inexact_to_exact): Expand isfinite to its definition !xisinf.
5208 (isfinite): Remove, conflicts with C99 isfinite().
5209
5210 2003-06-19 Marius Vollmer <mvo@zagadka.de>
5211
5212 * deprecated.h, deprecated.c (scm_strhash, scm_sym2ovcell_soft,
5213 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
5214 scm_symbol_value0, scm_string_to_obarray_symbol scm_intern_symbol,
5215 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
5216 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp): Re-added from
5217 the release_1_6 branch.
5218
5219 2003-06-14 Stefan Jahn <stefan@lkcc.org>
5220
5221 * threads.h: Redefined scm_getspecific() and scm_setspecific()
5222 to be functions instead of macros.
5223
5224 * threads.c: Conditionalized inclusion of <sys/time.h> and
5225 <unistd.h>.
5226 (scm_getspecific, scm_setspecific): Made these two function
5227 real part of the API.
5228
5229 * posix.c (s_scm_putenv): Added some code to make a
5230 (putenv "FOO="), i.e. setting an empty string, work also on
5231 Win32 systems. Thanks to Kevin Ryde for the proposal.
5232
5233 2003-06-12 Kevin Ryde <user42@zip.com.au>
5234
5235 * posix.c (scm_putenv): Free temporary ptr in mingw unset. Add
5236 freebsd to comment about need to use unsetenv.
5237
5238 2003-06-02 Marius Vollmer <mvo@zagadka.de>
5239
5240 * ports.c (scm_peek_char): Safe the column of the port around the
5241 getc/ungetc calls. Thanks to Dr. Peter Ivanyi!
5242
5243 2003-06-07 Kevin Ryde <user42@zip.com.au>
5244
5245 * tags.h: Use inttypes.h and stdint.h when available, for INTPTR_MAX
5246 and friends required by scm_t_bits setups.
5247
5248 2003-06-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5249
5250 * tags.h (scm_tc2_int): Added.
5251
5252 * tags.h (scm_tc3_int_1, scm_tc3_int_2): Expressed in terms of
5253 scm_tc2_int.
5254
5255 * tags.h (scm_tcs_cons_imcar, scm_tcs_cons_nimcar, scm_tcs_struct,
5256 scm_tcs_closures): Hard coded values replaced by symbolic ones.
5257
5258 2003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
5259
5260 * eval.c: Partially undid my patch from 2003-05-31. This patch
5261 caused the segfault referenced in the previous changelog entry.
5262
5263 2003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
5264
5265 * tags.h: Fixed comment about the immediate type code layout.
5266
5267 * eval.c: Fixed handling of non-special instructions. Without
5268 this patch, guile will segfault on (#\0) and similar instructions.
5269
5270 2003-06-05 Kevin Ryde <user42@zip.com.au>
5271
5272 * numbers.c (scm_max, scm_min): For inum, bignum and real, if other
5273 operand is NaN, then return NaN. Also avoid passing NaN to mpz_cmp_d.
5274
5275 * read.c (scm_input_error): Pass arg list parameter to scm_error_scm,
5276 rather than SCM_EOL. Needed by "Unknown # object" case in scm_lreadr.
5277
5278 2003-06-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5279
5280 * __scm.h, gc-card.c (SCM_DEBUG_DEBUGGER_SUPPORT,
5281 SCM_DEBUG_DEBUGGING_SUPPORT): Renamed macro
5282 SCM_DEBUG_DEBUGGER_SUPPORT to SCM_DEBUG_DEBUGGING_SUPPORT and
5283 generalized it to apply not only to C level functions but also to
5284 scheme level functions.
5285
5286 * debug.c, debug.h, eval.c (make-iloc, scm_make_iloc, iloc?,
5287 scm_iloc_p, dbg-make-iloc, scm_dbg_make_iloc, dbg-iloc?,
5288 scm_dbg_iloc_p): Moved functions scm_make_iloc, scm_iloc_p to
5289 eval.c, made them available under SCM_DEBUG_DEBUGGING_SUPPORT == 1
5290 only and renamed them to scm_dbg_make_iloc, scm_dbg_iloc_p,
5291 respectively.
5292
5293 * deprecated.h, eval.c, eval.h (SCM_ILOC00, SCM_IDINC,
5294 SCM_IDSTMSK): Deprecated. The macro definitions are moved from
5295 eval.h into eval.c and a copy is placed into deprecated.h.
5296
5297 * eval.c, eval.h (SCM_MAKE_ILOC): Removed from eval.h and placed
5298 into eval.c. This definition was not part of the API in any
5299 officially released version of guile and thus does not need to go
5300 through a phase of deprecation.
5301
5302 2003-06-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5303
5304 * deprecated.c, deprecated.h, eval.c, eval.h (scm_s_expression,
5305 scm_s_test, scm_s_body, scm_s_bindings, scm_s_variable,
5306 scm_s_clauses, scm_s_formals): Deprecated. In eval.c the
5307 definitions are make static and renamed from scm_s_xxx to s_xxx.
5308 In deprecated.c the original definitions are copied.
5309
5310 * deprecated.h, eval.c, eval (SCM_EVALIM2, SCM_EVALIM, SCM_XEVAL,
5311 SCM_XEVALCAR): Deprecated. The macro definitions are moved from
5312 eval.h into eval.c and a copy (slightly modified to work in user
5313 code) is placed into deprecated.h.
5314
5315 * eval.c: Use the local static s_xxx definitions instead of the
5316 scm_s_xxx definitions throughout.
5317
5318 2003-06-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5319
5320 This set of patches separates the representation of the cxr family
5321 of functions (car, cdr etc.) from the dsubr family of functions
5322 (i. e. functions that take a double precision floating point
5323 argument). Further, the algorithm for handling the cxr function
5324 is improved.
5325
5326 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_1), numbers.c
5327 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, scm_round, floor,
5328 ceil, sqrt, fabs, exp, log, sin, cos, tan, asin, acos, atan, sinh,
5329 cosh, tanh), objects.c (scm_class_of), procprop.c
5330 (scm_i_procedure_arity), ramap.c (scm_array_map_x), tags.h
5331 (scm_tc7_dsubr, scm_tcs_subrs): Introduce scm_tc7_dsubr as new
5332 typecode for the dsubr family of functions.
5333
5334 * ramap.c (ramap_cxr, ramap_dsubr): Renamed ramap_cxr to
5335 ramap_dsubr.
5336
5337 * eval.c (SCM_CEVAL, SCM_APPLY, call_cxr_1), pairs.c
5338 (scm_init_pairs): Make use of the (now usable) second cell element
5339 of a scm_tc7_cxr function to implement the cxr family of functions
5340 more efficiently.
5341
5342 2003-05-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
5343
5344 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_0,
5345 scm_trampoline_1, scm_trampoline_2): Postpone error cases to the
5346 end of an if-else-if-sequence of checks.
5347
5348 2003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
5349
5350 * eval.c (SCM_CEVAL): Improved readability of call-with-values
5351 execution. Generalize apply_closure to apply_proc and use that
5352 for call-with-values.
5353
5354 2003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
5355
5356 * eval.c (SCM_CEVAL): Avoid one level of indirection when applying
5357 a non closure.
5358
5359 2003-05-30 Stefan Jahn <stefan@lkcc.org>
5360
5361 * posix.c (s_scm_putenv): Use the new HAVE_UNSETENV
5362 appropriately for mingw32 hosts.
5363
5364 * numbers.h: Defining copysign(), isnan() and finite() to
5365 be prefixed by a single '_' for mingw32 hosts.
5366
5367 2003-05-30 Kevin Ryde <user42@zip.com.au>
5368
5369 * numbers.c (z_negative_one): New variable.
5370 (scm_init_numbers): Initialize it.
5371 (scm_logcount): Use it and mpz_hamdist to count zeros for negatives.
5372
5373 2003-05-29 Stefan Jahn <stefan@lkcc.org>
5374
5375 * win32-dirent.c: Use malloc() instead of scm_malloc().
5376
5377 * stime.c (s_scm_strftime): Add a type cast to avoid compiler
5378 warning.
5379
5380 * posix.c (s_scm_putenv): Disable use of unsetenv() for the
5381 mingw32 build.
5382
5383 * modules.c (s_scm_module_import_interface): Renamed local
5384 variable interface to _interface. Seems like 'interface'
5385 is a special compiler directive for the mingw32 compiler.
5386
5387 * mkstemp.c: Provide prototype to avoid compiler warning.
5388
5389 * load.c (s_scm_search_path): Fixed absolute and relative
5390 path detections for native Windows platforms.
5391
5392 * gc.h, threads.h: Export some more symbols using SCM_API (necessary
5393 to build on mingw32).
5394
5395 * gc-freelist.c ("s_scm_map_free_list",
5396 "s_scm_gc_set_debug_check_freelist_x"): Fixed use of FUNC_NAME.
5397
5398 * fports.c (fport_fill_input): Disable use of
5399 fport_wait_for_input() on Win32 platforms.
5400
5401 * filesys.c (s_scm_basename): Fixed __MINGW32__ code.
5402
5403 * Makefile.am: Modified some rules for cross compiling.
5404
5405 2003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5406
5407 * eval.c (SCM_CEVAL): In case of an application, all checks for a
5408 proper function object and the correct number of arguments are now
5409 performed in the application part of SCM_CEVAL.
5410
5411 (scm_badformalsp): Removed.
5412
5413 2003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5414
5415 * deprecated.c (scm_read_and_eval_x): Fixed C99-ism.
5416
5417 2003-05-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5418
5419 * num2integral.i.c (NUM2INTEGRAL): Avoid warning about conditional
5420 always being false by inserting preprocessor conditional. (Thanks
5421 to Bruce Korb.)
5422
5423 * __scm.h (SCM_STACK_PTR): New macro. (Cast argument through
5424 (void *) in order to avoid an aliasing warning; thanks to Bruce
5425 Korb.)
5426
5427 * stackchk.h (SCM_STACK_OVERFLOW_P): Use SCM_STACK_PTR.
5428
5429 * threads.c (suspend, launch_thread, scm_threads_mark_stacks): Use
5430 SCM_STACK_PTR.
5431
5432 * threads.c (scm_threads_mark_stacks): Bugfix: Changed
5433 thread->base --> t->base.
5434
5435 * eval.c (SCM_CEVAL): Don't cast argument of SCM_STACK_OVERFLOW_P.
5436
5437 2003-05-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5438
5439 * deprecated.h, deprecated.c (scm_makstr, scm_makfromstr,
5440 scm_variable_set_name_hint, scm_builtin_variable,
5441 scm_internal_with_fluids, scm_make_gsubr,
5442 scm_make_gsubr_with_generic, scm_create_hook, SCM_LIST0,
5443 SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5, SCM_LIST6,
5444 SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify, scm_sloppy_memq,
5445 scm_sloppy_memv, scm_sloppy_member, scm_read_and_eval_x,
5446 scm_subr_entry, SCM_SUBR_DOC, scm_make_subr,
5447 scm_make_subr_with_generic, scm_make_subr_opt,
5448 scm_call_catching_errors, scm_make_smob_type_mfpe,
5449 scm_set_smob_mfpe, scm_strprint_obj, scm_read_0str, scm_eval_0str,
5450 SCM_CHARS, SCM_UCHARS, SCM_LENGTH): Re-added from the release_1_6
5451 branch. Some have been slightly rewritten.
5452 (scm_i_object_chars, scm_i_object_length): New, to support
5453 SCM_CHARS, SCM_UCHARS, and SCM_LENTH.
5454
5455 2003-05-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
5456
5457 * eval.c (scm_m_do, unmemocopy, SCM_CEVAL): Reversed order of
5458 names and inits in the memoized code of do.
5459
5460 2003-05-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5461
5462 * c-tokenize.lex (yyget_lineno, yyget_in, yyget_out, yyget_leng,
5463 yyget_text, yyset_lineno, yyset_in, yyset_out, yyget_debug,
5464 yyset_debug, yylex_destroy): Added prototypes (otherwise we'll get
5465 a compilation error if error-on-warning is enabled).
5466
5467 2003-05-17 Marius Vollmer <mvo@zagadka.de>
5468
5469 * c-tokenize.lex: Gobble up complete lines after a '#'. This
5470 removes preprocessor directives from the snarfage that might
5471 otherwise confuse us. These directives appear when compiling with
5472 "-g3", for example.
5473
5474 2003-05-16 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5475
5476 * ChangeLog: add my surname
5477
5478 * srcprop.c (scm_finish_srcprop): use
5479 scm_gc_register_collectable_memory()
5480 (scm_make_srcprops): idem.
5481
5482 2003-05-14 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5483
5484 * gc-malloc.c (scm_gc_register_collectable_memory): avoid
5485 wrap-around for scm_mtrigger
5486 (scm_gc_register_collectable_memory): abort on overflowing
5487 scm_mallocated().
5488
5489 2003-05-13 Kevin Ryde <user42@zip.com.au>
5490
5491 * numbers.c (xmpz_cmp_d): New macro, handling infs if gmp doesn't.
5492 (scm_num_eq_p, scm_less_p, scm_max, scm_min): Use it.
5493
5494 2003-05-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5495
5496 * backtrace.c (scm_display_error_message): Introduced fancy
5497 printing with max level 7 and length 10. (Purpose: avoid printing
5498 gigantic objects in error messages.)
5499
5500 * print.c, print.h (scm_i_port_with_print_state): New function.
5501
5502 * print.c (scm_iprin1, scm_printer_apply,
5503 scm_port_with_print_state): Use scm_i_port_with_print_state.
5504 (scm_simple_format): Modified not to destroy print states.
5505 (print_state_mutex): New mutex.
5506 (scm_make_print_state, scm_free_print_state, scm_prin1):
5507 Lock/unlock print_state_mutex.
5508
5509 * deprecated.h (SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK):
5510 Use current names in definitions.
5511
5512 2003-05-10 Kevin Ryde <user42@zip.com.au>
5513
5514 * numbers.c (scm_num_eq_p, scm_less_p): Don't pass NaN to mpz_cmp_d.
5515
5516 * numbers.c (scm_integer_length): On negative bignums, adjust
5517 mpz_sizeinbase to account for it looking at absolute value where we
5518 want ones-complement.
5519
5520 * numbers.c (scm_gcd): In bignum/inum, don't pass yy==0 to mpz_gcd_ui
5521 since we're only using the ulong return value, and x might not fit.
5522
5523 2003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5524
5525 * eval.c, eval.h, read.c, read.h (scm_sym_dot): Moved from eval to
5526 read. This will allow to make the definition in read.c static.
5527
5528 2003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5529
5530 * eval.c, eval.h, evalext.c, evalext.h (scm_m_undefine): Moved
5531 from evalext to eval. This will allow to make some of the
5532 definitions in eval.c static.
5533
5534 2003-05-06 Kevin Ryde <user42@zip.com.au>
5535
5536 * numbers.c (scm_difference): In inum - bignum, handle negative inum.
5537 (scm_logcount): Use mpz_com, not mpz_neg.
5538
5539 2003-05-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5540
5541 The purpose of this patch is to make guile's internal memoizers
5542 distinguishable from memoizing macros created on the scheme level
5543 or from user provided primitive memoizing macros. The reason is,
5544 that the internal memoizers are the only ones that are allowed to
5545 transform their scheme input into memoizer byte code, while all
5546 other memoizing macros may only transform scheme code into new
5547 scheme code.
5548
5549 To achieve this, a new macro type 'builtin-macro!' is introduced.
5550 Currently, 'builtin-macro!'s are handled as memoizing macros, but
5551 this will change when the memoizer and executor are separated.
5552
5553 * macros.[ch] (scm_i_makbimacro): New.
5554
5555 * macros.h (SCM_BUILTIN_MACRO_P): New.
5556
5557 * macros.c (macro_print, scm_macro_type): Support builtin-macro!s.
5558
5559 * eval.c, goops.c: All of guile's primitive memoizing macros are
5560 primitive builtin-macros now.
5561
5562 * eval.c (scm_macroexp, SCM_CEVAL): Make sure the primitive
5563 builtin-macros are handled equally to memoizing macros.
5564
5565 2003-05-04 Marius Vollmer <mvo@zagadka.de>
5566
5567 * throw.c (scm_ithrow): Remove "asm volatile" hack. It used to
5568 work around a bug in GCC 2.95.2 but is now a bug in itself.
5569
5570 2003-05-02 Marius Vollmer <mvo@zagadka.de>
5571
5572 * deprecated.h (scm_rstate, scm_rng, SCM_SLOPPY_CONSP,
5573 SCM_SLOPPY_NCONSP, scm_tc7_ssymbol, scm_tc7_msymbol,
5574 scm_tcs_symbols): New.
5575
5576 2003-04-30 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5577
5578 * deprecated.h, deprecated.c (scm_protect_object,
5579 scm_unprotect_object, SCM_SETAND_CAR, SCM_SETOR_CAR,
5580 SCM_SET_AND_CDR, SCM_SET_OR_CDR, SCM_FREEP, SCM_NFREEP,
5581 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
5582 SCM_GCCDR, scm_remember, scm_the_root_module, scm_make_module,
5583 scm_ensure_user_module, scm_load_scheme_module, scm_port,
5584 scm_ptob_descriptor, scm_port_rw_active,
5585 scm_close_all_ports_except): New.
5586
5587 * ports.c (scm_c_port_for_each): New function, mostly copied from
5588 scm_port_for_each.
5589 (scm_port_for_each): Reimplemented using scm_c_port_for_each.
5590 * ports.h (scm_c_port_for_each): New prototype.
5591
5592 2003-04-28 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5593
5594 * eval.c (scm_m_atdispatch): Removed until actually needed. (This
5595 macro was introduced in anticipation of GOOPS method compilation
5596 code.)
5597
5598 * goops.c: Removed binding of @dispatch.
5599
5600 2003-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
5601
5602 * eval.c, goops.c (@dispatch, @slot-ref, @slot-set!): Move the
5603 instructions that bind the macros on the scheme level back to
5604 goops.c in order to make sure again that the bindings go into the
5605 (oop goops) module and are not visible from the outside.
5606
5607 2003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
5608
5609 * eval.c: Non functional change: Separated R5RS and non-R5RS
5610 macros into different sections of the file and ordered the
5611 memoizers alphabetically.
5612
5613 2003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
5614
5615 * eval.c (scm_ilookup): Rewritten to improve readability.
5616
5617 2003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
5618
5619 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
5620 Partially reverted patch from 2003-04-23 in oder to find a better
5621 compromise between readability and debuggability.
5622
5623 2003-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5624
5625 * eval.c, eval.h, goops.c, goops.h (scm_m_atslot_ref,
5626 scm_m_atslot_set_x, scm_m_atdispatch): Move the declarations and
5627 definitions of the special goops memoizers from goops.[ch] to
5628 eval.[ch]. Hmm... it seems that scm_m_atdispatch is not used
5629 throughout guile.
5630
5631 2003-04-24 Mikael Djurfeldt <mdj@kvast.blakulla.net>
5632
5633 * ports.c, ports.h (scm_i_port_table_mutex): New mutex.
5634
5635 * fports.c (scm_evict_ports): Lock/unlock scm_i_port_table_mutex.
5636
5637 * ports.c (scm_close_port, scm_flush_all_ports): Ditto.
5638
5639 * ioext.c (scm_fdes_to_ports): Ditto.
5640
5641 * vports.c (scm_make_soft_port): Changed SCM_DEFER/ALLOW_INTS into
5642 lock/unlock scm_i_port_table_mutex.
5643
5644 * strports.c (scm_mkstrport): Ditto.
5645
5646 * ports.c (scm_void_port, scm_port_for_each): Ditto.
5647
5648 * fports.c (scm_fdes_to_port): Ditto.
5649
5650 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
5651
5652 This set of patches contains no functional changes, only debatable
5653 minor stylistic ones. Still, in order to prepare a patch between
5654 my local copy and the CVS version, I decided to submit the changes
5655 below. Then, the patch will hopefully only contain relevant
5656 modifications :-)
5657
5658 * eval.c (iqq): Added const specifier.
5659
5660 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
5661 Use NULL instead of 0 to indicate that a pointer is returned.
5662 Removed some misleading 'fall through' comments.
5663
5664 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
5665 Split up long expressions into smaller ones to be more debugging
5666 friendly.
5667
5668 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
5669
5670 * eval.h (SCM_ENTER_FRAME_HDLR, SCM_APPLY_FRAME_HDLR,
5671 SCM_EXIT_FRAME_HDLR): Use SCM_PACK to convert data to a SCM value
5672 rather than casting to SCM.
5673
5674 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
5675
5676 * sort.c, pairs.h: Removed unnecessary includes.
5677
5678 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
5679
5680 * sort.c: Replaced hand-made trampline code by the new official
5681 mechanism from eval.c. This fixes a segfault in the new test file
5682 sort.test.
5683
5684 (quicksort, compare_function, scm_restricted_vector_sort_x,
5685 scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
5686 scm_merge_list_step, scm_sort_x, scm_sort, scm_merge_vector_x,
5687 scm_merge_vector_step, scm_stable_sort_x, scm_stable_sort,
5688 scm_sort_list_x, scm_sort_list): Use trampoline mechanism from
5689 eval.c.
5690
5691 (subr2less, lsubrless, closureless, applyless, scm_cmp_function,
5692 cmp_fun_t): Removed.
5693
5694 (compare_function): Added.
5695
5696 * sort.c (quicksort, SWAP, stack_node): Replaced pointer
5697 arithmetics with index arithmetics. Changed quicksort to work on
5698 an array of SCM values instead of an array of characters. Avoid
5699 bytewise copying of SCM elements. Avoid allocating memory on the
5700 stack with alloca. Fixed some comments.
5701
5702 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
5703
5704 * eval.c (EXTEND_ENV): Eliminated.
5705
5706 (unmemocopy, SCM_CEVAL, SCM_APPLY): Use SCM_EXTEND_ENV instead of
5707 EXTEND_ENV.
5708
5709 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
5710
5711 * __scm.h (SCM_DEBUG_DEBUGGER_SUPPORT): New compile-time option.
5712
5713 * gc.card.c (scm_gc_marked_p): Fixed compiler warning when
5714 compiling with SCM_DEBUG==1 by moving definition behind prototype.
5715
5716 * gc.card.c (scm_dbg_t_list_cell, scm_dbg_t_double_cell,
5717 scm_dbg_gc_marked_p, scm_dbg_gc_get_card, scm_dbg_gc_get_bvec,
5718 scm_t_list_cell_struct, scm_t_list_cell, scm_t_double_cell,
5719 scm_gc_marked_p, scm_gc_get_card, scm_gc_get_bvec): Fixed
5720 functions such that they check if the object is a non-immediate.
5721 Further, renamed identifiers to use the scm_dbg_ prefix and made
5722 their inclusion into the lib dependent of the
5723 SCM_DEBUG_DEBUGGER_SUPPORT compile time option.
5724
5725 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
5726
5727 * __scm.h: Fixed comment about the SCM_DEBUG_TYPING_STRICTNESS
5728 debug option.
5729
5730 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
5731
5732 * list.c (scm_ilength, scm_last_pair), unif.c (l2ra): Prefer
5733 !SCM_CONSP over SCM_NCONSP. Now, guile itself does not include
5734 any calls to SCM_NCONSP any more.
5735
5736 * unif.c (l2ra): Eliminate redundant check.
5737
5738 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
5739
5740 * list.c (scm_cons_star), ramap.c (scm_ra_sum, scm_ra_product,
5741 scm_array_map_x), unif.c (l2ra): Prefer !SCM_NULLP over
5742 SCM_NNULLP. Now, guile itself does not include any calls to
5743 SCM_NNULLP any more.
5744
5745 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
5746
5747 * eval.c (unmemocopy, SCM_APPLY, scm_map, scm_for_each,
5748 scm_copy_tree): Place assignment expressions which are part of
5749 other expressions into an expression of their own.
5750
5751 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
5752
5753 * goops.c (TEST_CHANGE_CLASS, scm_sys_initialize_object): Don't
5754 compare SCM values with !=.
5755
5756 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
5757
5758 * eval.c, eval.h, evalext.c, evalext.h (scm_sym_setter,
5759 scm_m_generalized_set_x, scm_init_evalext): Move the declaration
5760 and definition of the memoizer for the generalized set! macro from
5761 evalext.[ch] to eval.[ch]. Use the SCM_SYNTAX snarfer macro to
5762 define the macro object.
5763
5764 * eval.c, eval.h (s_set_x, scm_s_set_x, scm_m_set_x,
5765 scm_m_generalized_set_x): Since now scm_s_set_x is only used in
5766 eval.c, it is made static and renamed to s_set_x.
5767
5768 * evalext.c (scm_defined_p, scm_m_undefine): Prefer !SCM_<foo>
5769 over SCM_N<foo>.
5770
5771 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
5772
5773 * eval.c, root.h (scm_undefineds, SCM_NUM_PROTECTS, undefineds,
5774 scm_init_eval): Made scm_undefineds static in eval.c, renamed it
5775 to undefineds and registered the object as a permanent object.
5776
5777 * eval.c, eval.h (scm_f_apply, scm_init_eval): Made scm_f_apply
5778 static in eval.c, renamed it to f_apply and registered the object
5779 as a permanent object.
5780
5781 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
5782
5783 * eval.c (SCM_BIT7, SCM_BIT8, unmemocopy, SCM_CEVAL): Renamed
5784 file-local macro SCM_BIT8 to SCM_BIT7, which is more appropriate.
5785
5786 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
5787
5788 * numbers.c (scm_logtest): Fixed argument bug in the call to
5789 mpz_and, which showed up when compiling with SCM_DEBUG defined.
5790
5791 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
5792
5793 * gc-card.c (scm_i_sweep_card, scm_i_init_card_freelist): Fixed
5794 type errors that showed up when compiling with SCM_DEBUG defined.
5795
5796 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
5797
5798 * continuations.c, continuations.h, eval.c, eval.h, extensions.c,
5799 gsubr.c, guile.c, init.c, read.c, root.c, root.h, stackchk.h,
5800 throw.c: Removed uses of DEBUG_EXTENSIONS and DYNAMIC_LINKING to
5801 fix compile errors with --disable-deprecated.
5802
5803 2003-04-17 Rob Browning <rlb@defaultvalue.org>
5804
5805 * numbers.c (scm_integer_expt): fix case where we were declaring
5806 vars in the middle of a statement block. Thanks to Thamer
5807 Al-Harbash.
5808
5809 2003-04-17 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5810
5811 * goops.c (TEST_CHANGE_CLASS): Update variable class after class
5812 change.
5813
5814 * eq.c (scm_eqv_p): Turned into a primitive generic.
5815
5816 2003-04-16 Rob Browning <rlb@defaultvalue.org>
5817
5818 * gc_os_dep.c: Added patch for UnixWare and OpenUNIX support.
5819 Thanks to Boyd Gerber.
5820 Added check for __arm__ in addition to arm for LINUX and copied
5821 __s390__ defines from upstream libgc. Thanks to James Treacy for
5822 reporting the problems.
5823
5824 * numbers.c (PTRDIFF_MIN): use SCM_CHAR_BIT.
5825
5826 * socket.c: use SCM_CHAR_BIT.
5827
5828 * random.c (scm_c_random_bignum): use SCM_CHAR_BIT.
5829
5830 * num2integral.i.c (NUM2INTEGRAL): use SCM_CHAR_BIT.
5831
5832 2003-04-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
5833
5834 * feature.c (scm_init_feature): Always add threads feature.
5835
5836 2003-04-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5837
5838 * goops.c (scm_sys_fast_slot_ref): Use SCM_SLOT instead of
5839 scm_at_assert_bound_ref. (We don't want the unbound check. See
5840 oop/goops/active-slot.scm.)
5841
5842 2003-04-14 Rob Browning <rlb@defaultvalue.org>
5843
5844 * tags.h: scm_t_intptr should have been intptr_t.
5845
5846 2003-04-13 Rob Browning <rlb@defaultvalue.org>
5847
5848 * __scm.h (SCM_FLUSH_REGISTER_WINDOWS): don't just rely on "sparc"
5849 test. Instead use
5850 #if defined (sparc) || defined (__sparc__) || defined (__sparc)
5851 as gc_os_dep.c suggests is appropriate.
5852
5853 * goops.c (prep_hashsets): make static to match prototype.
5854 (scm_sym_args): SCM_SYMBOL -> SCM_GLOBAL_SYMBOL. Thanks to Albert
5855 Chin.
5856
5857 * c-tokenize.lex: remove trailing comma from enum. Thanks to
5858 Albert Chin.
5859
5860 * gc_os_dep.c: add NetBSD powerpc config info. Thanks to Thomas
5861 Klausner.
5862
5863 2003-04-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5864
5865 * goops.c (scm_sys_prep_layout_x): Instance allocation is now
5866 indicated through extra fields in getters-n-setters.
5867 (scm_add_slot): Adapted to new format of getters_n_setters slot.
5868 (Thanks to Andy Wingo.)
5869
5870 2003-02-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5871
5872 * gc-segment.c: add comment
5873
5874 2003-04-07 Rob Browning <rlb@defaultvalue.org>
5875
5876 * debug.h: change "id" arg name to "info_id" to avoid objective-c
5877 clash.
5878
5879 * num2integral.i.c (NUM2INTEGRAL): fix bug pointed out by Mikael
5880 and add regression test to standalone/.
5881
5882 2003-04-06 Rob Browning <rlb@defaultvalue.org>
5883
5884 * strings.c (scm_mem2string): use memcpy rather than by-hand loop.
5885 Thanks to Dale P. Smith.
5886
5887 * random.c: #include gmp.h.
5888 (scm_c_random_bignum): normalize result on return.
5889
5890 * init.c: #include gmp.h.
5891
5892 * numbers.h: remove the gmp.h #include (not needed now).
5893
5894 * posix.h: change occurences of "id" to something else so we don't
5895 cause trouble when included via objective-c (can't hurt, might
5896 help). Still have usage in debug.h, though.
5897
5898 2003-04-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5899
5900 * random.c (scm_c_random_bignum): Don't generate a random number
5901 equal to m (the second argument of scm_c_random_bignum); only
5902 generate numbers in the range 0 <= r < m.
5903 (scm_c_default_rstate): Use SCM_VARIABLE_REF to access
5904 scm_var_random_state.
5905
5906 * num2integral.i.c (INTEGRAL2BIG): Put negation of n inside then
5907 clause.
5908
5909 2003-04-05 Rob Browning <rlb@defaultvalue.org>
5910
5911 * modules.c (scm_module_import_interface): move declaration of
5912 uses before any code.
5913
5914 2003-04-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5915
5916 * Makefile.am (scmconfig.h): Look for config.h in top_builddir,
5917 not top_srcdir.
5918
5919 * hashtab.c (rehash_after_gc): Clear to_rehash list before
5920 processing it in order to avoid an infinite loop.
5921
5922 * print.c (scm_prin1): Remember old state of pstate->writingp.
5923
5924 2003-04-05 Marius Vollmer <mvo@zagadka.de>
5925
5926 * Changed license terms to the plain LGPL thru-out.
5927
5928 2003-04-04 Rob Browning <rlb@defaultvalue.org>
5929
5930 * socket.c (FLIPCPY_NET_HOST_128): new macro.
5931 (ipv6_net_to_num, ipv6_num_to_net, bignum_in_ipv6_range_p):
5932 rewrite to handle GMP bignums.
5933
5934
5935 * random.c (scm_c_random_bignum): rewrite to handle GMP bignums.
5936
5937 * ports.c (scm_getc): minor tweak.
5938
5939 * numbers.h: remove SCM_BIGDIG conditionals, reorganize, and
5940 rewrite to handle GMP bignums.
5941
5942 * numbers.c: rewrite *many* functions to handle GMP bignums.
5943
5944 * num2integral.i.c (NUM2INTEGRAL, INTEGRAL2NUM, INTEGRAL2BIG):
5945 handle GMP bignums.
5946
5947 * num2float.i.c (NUM2FLOAT): handle GMP bignums.
5948
5949 * init.c (check_config): remove SCM_BIGDIG conditionals.
5950 (scm_init_guile_1): test to make sure mpz_t fits in a double_cell.
5951
5952 * gc-card.c ("sweep_card"): handle new mpz_t bignums.
5953
5954 * eval.c: remove SCM_BIGDIG conditionals.
5955
5956 * eq.c (s_scm_eqv_p): scm_i_bigcomp -> scm_i_bigcmp.
5957
5958 2003-03-31 Rob Browning <rlb@defaultvalue.org>
5959
5960 * Makefile.am (scmconfig.h): change srcdir to builddir. (Thanks
5961 to Kevin Ryde.)
5962
5963 2003-03-27 Rob Browning <rlb@defaultvalue.org>
5964
5965 * threads.h: fix various preprocessor usages of new public
5966 symbols to expect 0 or 1 values rather than 1 or undefined.
5967 i.e. change #ifdef to #if, etc.
5968
5969 * threads.c: fix various preprocessor usages of new public
5970 symbols to expect 0 or 1 values rather than 1 or undefined.
5971 i.e. change #ifdef to #if, etc.
5972
5973 * tags.h: fix various preprocessor usages of new public
5974 symbols to expect 0 or 1 values rather than 1 or undefined.
5975 i.e. change #ifdef to #if, etc.
5976
5977 * stacks.c: fix various preprocessor usages of new public
5978 symbols to expect 0 or 1 values rather than 1 or undefined.
5979 i.e. change #ifdef to #if, etc.
5980
5981 * stackchk.h: fix various preprocessor usages of new public
5982 symbols to expect 0 or 1 values rather than 1 or undefined.
5983 i.e. change #ifdef to #if, etc.
5984
5985 * stackchk.c: fix various preprocessor usages of new public
5986 symbols to expect 0 or 1 values rather than 1 or undefined.
5987 i.e. change #ifdef to #if, etc.
5988
5989 * sort.c: fix various preprocessor usages of new public
5990 symbols to expect 0 or 1 values rather than 1 or undefined.
5991 i.e. change #ifdef to #if, etc.
5992
5993 * read.c: fix various preprocessor usages of new public
5994 symbols to expect 0 or 1 values rather than 1 or undefined.
5995 i.e. change #ifdef to #if, etc.
5996
5997 * random.c: fix various preprocessor usages of new public
5998 symbols to expect 0 or 1 values rather than 1 or undefined.
5999 i.e. change #ifdef to #if, etc.
6000
6001 * print.c: fix various preprocessor usages of new public
6002 symbols to expect 0 or 1 values rather than 1 or undefined.
6003 i.e. change #ifdef to #if, etc.
6004
6005 * objects.c: fix various preprocessor usages of new public
6006 symbols to expect 0 or 1 values rather than 1 or undefined.
6007 i.e. change #ifdef to #if, etc.
6008
6009 * numbers.h: fix various preprocessor usages of new public
6010 symbols to expect 0 or 1 values rather than 1 or undefined.
6011 i.e. change #ifdef to #if, etc.
6012
6013 * null-threads.c: fix various preprocessor usages of new public
6014 symbols to expect 0 or 1 values rather than 1 or undefined.
6015 i.e. change #ifdef to #if, etc.
6016
6017 * lang.c: fix various preprocessor usages of new public
6018 symbols to expect 0 or 1 values rather than 1 or undefined.
6019 i.e. change #ifdef to #if, etc.
6020
6021 * lang.h: fix various preprocessor usages of new public
6022 symbols to expect 0 or 1 values rather than 1 or undefined.
6023 i.e. change #ifdef to #if, etc.
6024
6025 * iselect.h: fix various preprocessor usages of new public
6026 symbols to expect 0 or 1 values rather than 1 or undefined.
6027 i.e. change #ifdef to #if, etc.
6028
6029 * init.c: fix various preprocessor usages of new public
6030 symbols to expect 0 or 1 values rather than 1 or undefined.
6031 i.e. change #ifdef to #if, etc.
6032
6033 * gh_data.c: fix various preprocessor usages of new public
6034 symbols to expect 0 or 1 values rather than 1 or undefined.
6035 i.e. change #ifdef to #if, etc.
6036
6037 * gh.h: fix various preprocessor usages of new public
6038 symbols to expect 0 or 1 values rather than 1 or undefined.
6039 i.e. change #ifdef to #if, etc.
6040
6041 * gen-scmconfig.c: change most new public symbols to be defined to
6042 0 or 1 rather than being either 1 or undefined.
6043
6044 * gc_os_dep.c: fix various preprocessor usages of new public
6045 symbols to expect 0 or 1 values rather than 1 or undefined.
6046 i.e. change #ifdef to #if, etc.
6047 (STACK_GROWS_DOWN): define to 0 or 1 rather than 1 or undef.
6048
6049 * gc.h: fix various preprocessor usages of new public
6050 symbols to expect 0 or 1 values rather than 1 or undefined.
6051 i.e. change #ifdef to #if, etc.
6052
6053 * gc-card.c: fix various preprocessor usages of new public
6054 symbols to expect 0 or 1 values rather than 1 or undefined.
6055 i.e. change #ifdef to #if, etc.
6056
6057 * gc-mark.c: fix various preprocessor usages of new public
6058 symbols to expect 0 or 1 values rather than 1 or undefined.
6059 i.e. change #ifdef to #if, etc.
6060
6061 * feature.c: fix various preprocessor usages of new public
6062 symbols to expect 0 or 1 values rather than 1 or undefined.
6063 i.e. change #ifdef to #if, etc.
6064
6065 * evalext.c: fix various preprocessor usages of new public
6066 symbols to expect 0 or 1 values rather than 1 or undefined.
6067 i.e. change #ifdef to #if, etc.
6068
6069 * eval.h: fix various preprocessor usages of new public
6070 symbols to expect 0 or 1 values rather than 1 or undefined.
6071 i.e. change #ifdef to #if, etc.
6072
6073 * eval.c: fix various preprocessor usages of new public
6074 symbols to expect 0 or 1 values rather than 1 or undefined.
6075 i.e. change #ifdef to #if, etc.
6076
6077 * eq.c: fix various preprocessor usages of new public
6078 symbols to expect 0 or 1 values rather than 1 or undefined.
6079 i.e. change #ifdef to #if, etc.
6080
6081 * coop.c: fix various preprocessor usages of new public
6082 symbols to expect 0 or 1 values rather than 1 or undefined.
6083 i.e. change #ifdef to #if, etc.
6084
6085 * coop-threads.c: fix various preprocessor usages of new public
6086 symbols to expect 0 or 1 values rather than 1 or undefined.
6087 i.e. change #ifdef to #if, etc.
6088
6089 * coop-pthreads.c: fix various preprocessor usages of new public
6090 symbols to expect 0 or 1 values rather than 1 or undefined.
6091 i.e. change #ifdef to #if, etc.
6092
6093 * coop-defs.h: fix various preprocessor usages of new public
6094 symbols to expect 0 or 1 values rather than 1 or undefined.
6095 i.e. change #ifdef to #if, etc.
6096
6097 * convert.i.c: fix various preprocessor usages of new public
6098 symbols to expect 0 or 1 values rather than 1 or undefined.
6099 i.e. change #ifdef to #if, etc.
6100
6101 * continuations.c: fix various preprocessor usages of new public
6102 symbols to expect 0 or 1 values rather than 1 or undefined.
6103 i.e. change #ifdef to #if, etc.
6104
6105 * _scm.h: fix various preprocessor usages of new public symbols to
6106 expect 0 or 1 values rather than 1 or undefined. i.e. change
6107 #ifdef to #if, etc.
6108
6109 2003-03-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6110
6111 * init.c (scm_init_guile_1): Call scm_i_init_deprecated.
6112
6113 * deprecated.c, deprecated.h: New files, to collect deprecated
6114 things in one place.
6115 * Makefile.am: Added them in all the right places.
6116
6117 * Makefile.am (EXTRA_DIST): Added "scmconfig.h.top".
6118 (scmconfig.h): Get "scmconfig.h.top" from $(srcdir) so that VPATH
6119 builds work.
6120 (DOT_X_FILES): Removed "iselect.x".
6121 (DOT_DOC_FILES): Removed "iselect.doc".
6122
6123 2003-03-25 Rob Browning <rlb@defaultvalue.org>
6124
6125 * win32-socket.h: #include "libguile/__scm.h". Replace usage of
6126 HAVE_WINSOCK2_H with SCM_HAVE_WINSOCK2_H.
6127
6128 * win32-socket.c: #include <config.h> if HAVE_CONFIG_H.
6129
6130 * vports.c: #include <config.h> if HAVE_CONFIG_H.
6131
6132 * unif.c: #include <config.h> if HAVE_CONFIG_H. Replace usage of
6133 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6134
6135 * threads.h: replace usage of struct timespect with
6136 scm_t_timespec. Replace usage of USE_PTHREAD_THREADS with
6137 SCM_USE_PTHREAD_THREADS. Remove typedef for struct timespec in
6138 favor of scm_t_timespec from scmconfig.h.
6139
6140 * threads.c: move libguile/_scm.h include to the top so we pick up
6141 any critical defines like _GNU_SOURCE early. Replace usage of
6142 struct timespect with scm_t_timespec. Replace usage of
6143 STACK_GROWS_UP with SCM_STACK_GROWS_UP. Replace usage of
6144 USE_PTHREAD_THREADS with SCM_USE_PTHREAD_THREADS.
6145
6146 * threads-plugin.h: replace usage of struct timespect with
6147 scm_t_timespec.
6148
6149 * threads-plugin.c: #include <config.h> if HAVE_CONFIG_H. Replace
6150 usage of struct timespect with scm_t_timespec.
6151
6152 * tags.h: move HAVE_STDINT_H handling to scmconfig.h. Move
6153 HAVE_INTTYPES_H handling to scmconfig.h. #include
6154 "libguile/__scm.h". Rework handling for scm_t_bits,
6155 scm_t_signed_bits, SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
6156 SCM_T_SIGNED_BITS_MIN, and SIZEOF_SCM_T_BITS to use scm_t_intptr,
6157 scm_t_uintptr, SCM_SIZEOF_INTPTR_T, and SCM_SIZEOF_UINTPTR_T, and
6158 SCM_SIZEOF_UNSIGNED_LONG. Rename usage of HAVE_ARRAYS to
6159 SCM_HAVE_ARRAYS.
6160
6161 * symbols.c: #include <config.h> if HAVE_CONFIG_H.
6162
6163 * struct.c: #include <config.h> if HAVE_CONFIG_H.
6164
6165 * strports.c: #include <config.h> if HAVE_CONFIG_H.
6166
6167 * strop.c: #include <config.h> if HAVE_CONFIG_H.
6168
6169 * stime.h: move handling of time related headers to scmconfig.h.
6170
6171 * stime.c: #include <config.h> if HAVE_CONFIG_H.
6172
6173 * stacks.c: replace usage of STACK_GROWS_UP with
6174 SCM_STACK_GROWS_UP.
6175
6176 * sort.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
6177 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6178
6179 * socket.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
6180 of uint32 and HAVE_UINT_32 with scm_t_int32.
6181
6182 * smob.c: #include <config.h> if HAVE_CONFIG_H.
6183
6184 * simpos.c: #include <config.h> if HAVE_CONFIG_H.
6185
6186 * script.c: #include <config.h> if HAVE_CONFIG_H.
6187
6188 * scmsigs.c: #include <config.h> if HAVE_CONFIG_H.
6189
6190 * scmconfig.h.top: new file -- preamble for scmconfig.h.
6191
6192 * rw.c: #include <config.h> if HAVE_CONFIG_H.
6193
6194 * regex-posix.c: #include <config.h> if HAVE_CONFIG_H.
6195
6196 * read.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6197
6198 * rdelim.c: #include <config.h> if HAVE_CONFIG_H.
6199
6200 * random.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
6201 of LONG32, LONG64, SIZEOF_LONG, and HAVE_LONG_LONGS with
6202 scm_t_int32, scm_t_int64, and SCM_HAVE_T_INT64. Rename usage of
6203 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6204
6205 * ramap.c: replace usage of HAVE_LONG_LONGS with
6206 "SCM_SIZEOF_LONG_LONG != 0".
6207
6208 * putenv.c: #include <config.h> if HAVE_CONFIG_H. #include
6209 "libguile/scmconfig.h".
6210
6211 * pthread-threads.c: #include <config.h> if HAVE_CONFIG_H.
6212
6213 * print.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6214 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6215
6216 * posix.c: #include <config.h> if HAVE_CONFIG_H.
6217
6218 * ports.c: #include <config.h> if HAVE_CONFIG_H.
6219
6220 * objects.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6221
6222 * numbers.h: replace usage of HAVE_FLOATINGPOINT_H with
6223 SCM_HAVE_FLOATINGPOINT_H. Replace usage of HAVE_IEEEFP_H with
6224 SCM_HAVE_IEEEFP_H. Replace usage of HAVE_NAN_H with
6225 SCM_HAVE_NAN_H. Replace usage of STDC_HEADERS with
6226 SCM_HAVE_STDC_HEADERS. Replace usage of ptrdiff_t with
6227 scm_t_ptrdiff. Replace usage of HAVE_LONG_LONGS with
6228 "SCM_SIZEOF_LONG_LONG != 0".
6229
6230 * numbers.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
6231 of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0". Replace
6232 usage of ptrdiff_t with scm_t_ptrdiff. Replace usage of
6233 SIZEOF_PTRDIFF_T with SCM_SIZEOF_SCM_T_PTRDIFF.
6234
6235 * num2integral.i.c: #include <config.h> if HAVE_CONFIG_H.
6236
6237 * null-threads.h: replace usage of struct timespect with
6238 scm_t_timespec.
6239
6240 * net_db.c: #include <config.h> if HAVE_CONFIG_H.
6241
6242 * mkstemp.c: #include <config.h> if HAVE_CONFIG_H. #include
6243 "libguile/__scm.h". Remove definition of gcc_uint64_t in favor of
6244 scm_t_uint64 and rename usages.
6245
6246 * mallocs.c: #include <config.h> if HAVE_CONFIG_H.
6247
6248 * load.c: #include <config.h> if HAVE_CONFIG_H.
6249
6250 * iselect.h: move handling of time related headers to scmconfig.h.
6251 Rename usage of HAVE_SYS_SELECT_H to SCM_HAVE_SYS_SELECT_H.
6252 Rename usage of HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Rename
6253 usage of USE_COOP_THREADS to SCM_USE_COOP_THREADS.
6254
6255 * iselect.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6256 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
6257 USE_NULL_THREADS to SCM_USE_NULL_THREADS.
6258
6259 * ioext.c: #include <config.h> if HAVE_CONFIG_H.
6260
6261 * inline.h: #include "libguile/__scm.h" at the top. Change code
6262 to use SCM_C_INLINE and SCM_INLINE_C_INCLUDINT_INLINE_H to decide
6263 what to do instead of creating a new public #define. Rename usage
6264 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
6265 USE_NULL_THREADS to SCM_USE_NULL_THREADS. Rename usage of
6266 USE_COPT_THREADS to SCM_USE_COPT_THREADS.
6267
6268 * inline.c: rearrange handling -- now we just #define
6269 SCM_INLINE_C_INCLUDING_INLINE_H to 1 and #include
6270 "libguile/inline.h". scmconfig.h will define SCM_C_INLINE as
6271 appropriate, and we use that in inline.h along with the above
6272 define to determine how to respond.
6273
6274 * init.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
6275 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6276
6277 * guile.c: #include <config.h> if HAVE_CONFIG_H.
6278
6279 * gh_data.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6280 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6281
6282 * gh.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6283
6284 * gen-scmconfig.h.in: new file -- see gen-scmconfig.c for details.
6285
6286 * gen-scmconfig.c: new file -- see comments in file for details.
6287
6288 * gdbinit.c: #include <config.h> if HAVE_CONFIG_H.
6289
6290 * gc_os_dep.c: #include <config.h> if HAVE_CONFIG_H. Replace
6291 usage of STACK_GROWS_UP with SCM_STACK_GROWS_UP.
6292
6293 * gc.h: replace usage of SIZEOF_LONG with
6294 SCM_SIZEOF_UNSIGNED_LONG. Replace usage of USE_PTHREAD_THREADS
6295 with SCM_USE_PTHREAD_THREADS. Remove SCM_SIZEOF_LONG definition
6296 since we handle that in scmconfig.h now.
6297
6298 * gc.c: #include <config.h> if HAVE_CONFIG_H.
6299
6300 * gc-mark.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6301 of HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of
6302 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6303
6304 * gc-malloc.c: #include <config.h> if HAVE_CONFIG_H.
6305
6306 * gc-card.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6307 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6308
6309 * fports.c: #include <config.h> if HAVE_CONFIG_H.
6310
6311 * filesys.c: #include <config.h> if HAVE_CONFIG_H.
6312
6313 * feature.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6314 of USE_NULL_THREADS to SCM_USE_NULL_THREADS.
6315
6316 * extensions.c: #include <config.h> if HAVE_CONFIG_H.
6317
6318 * evalext.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6319 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6320
6321 * eval.c: #include <config.h> if HAVE_CONFIG_H. #include
6322 "libguile/__scm.h" rather than scmconfig.h. Rename usage of
6323 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
6324 with "SCM_SIZEOF_LONG_LONG != 0".
6325
6326 * error.c: #include <config.h> if HAVE_CONFIG_H.
6327
6328 * eq.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
6329 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
6330 with "SCM_SIZEOF_LONG_LONG != 0".
6331
6332 * deprecation.c: #include <config.h> if HAVE_CONFIG_H.
6333
6334 * coop.c: replace usage of struct timespect with scm_t_timespec.
6335 #include <config.h> if HAVE_CONFIG_H.
6336
6337 * coop-threads.c: #include "libguile/_scm.h" early. Replace
6338 usage of struct timespect with scm_t_timespec. Replace usage of
6339 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
6340
6341 * coop-pthreads.c: #include "libguile/_scm.h" early. Replace
6342 usage of struct timespect with scm_t_timespec. Replace usage of
6343 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
6344
6345 * coop-defs.h: move handling of time related headers to
6346 scmconfig.h. Add #include "libguile/__scm.h". Rename usage of
6347 HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Replace usage of struct
6348 timespect with scm_t_timespec.
6349
6350 * convert.i.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6351
6352 * convert.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6353
6354 * convert.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6355 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6356
6357 * continuations.c: move libguile/_scm.h include to the top so we
6358 pick up any critical defines like _GNU_SOURCE early.
6359
6360 * backtrace.c: #include <config.h> if HAVE_CONFIG_H.
6361
6362 * async.c: #include <config.h> if HAVE_CONFIG_H.
6363
6364 * alloca.c: #include <config.h> if HAVE_CONFIG_H.
6365
6366 * _scm.h: #include <config.h> if HAVE_CONFIG_H.
6367 Rename usage of USE_PTHREAD_THREADS to SCM_USE_PTHREAD_THREADS.
6368
6369 * __scm.h: move libguile/scmconfig.h include up to the top, so
6370 we're sure to pick up any critical defines like _GNU_SOURCE early.
6371 #include <limits.h> removed in favor of scmconfig.h inclusion when
6372 appropriate. STDC_HEADERS based inclusion of stdlib.h,
6373 sys/types.h, stddef.h, and sys/stdtypes.h removed in favor of
6374 scmconfig.h inclusion when appropriate. Various Win32 related
6375 definitions removed in favor of scmconfig.h inclusion when
6376 appropriate.
6377 (HAVE_UINTPTR_T): definition removed (see NEWS).
6378 (SIZEOF_PTRDIFF_T): definition removed (see NEWS).
6379 (HAVE_LONG_LONGS): definition removed (see NEWS).
6380 (HAVE_LONG_LONG): definition removed (see NEWS).
6381 (HAVE_PTRDIFF_T): definition removed (see NEWS).
6382
6383 * Makefile.am: scmconfig.h is now generated by building and
6384 running gen-scmconfig.h and capturing its output. gen-scmconfig
6385 uses config.h and the configure.in generated gen-scmconfig.h to
6386 decide what to output. See gen-scmconfig.c for details.
6387 (noinst_PROGRAMS): add gen-scmconfig.
6388 (gen_scmconfig_SOURCES): new variable.
6389 (gen-scmconfig.$(OBJEXT)): new target - be careful to handle
6390 cross-compiling right.
6391 (scmconfig.h): build scmconfig.h from gen-scmconfig's output.
6392 (BUILT_SOURCES): add scmconfig.h.
6393
6394 2003-03-19 Marius Vollmer <mvo@zagadka.de>
6395
6396 * gc_os_dep.c: Added defines for sparc-unknown-netbsdelf1.5 from
6397 Adrian Bunk. Thanks!
6398
6399 2003-03-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6400
6401 * goops.c (make_class_from_template): New fourth arg:
6402 applicablep.
6403 (scm_class_extended_generic_with_setter, scm_class_self): Fixed
6404 cpls.
6405
6406 * smob.c (scm_set_smob_apply): Call scm_i_inherit_applicable.
6407
6408 * goops.c, objects.c, objects.h (scm_make_extended_class): New
6409 second arg: applicablep.
6410 (scm_i_inherit_applicable): New function.
6411
6412 * goops.c, goops.h (scm_class_applicable,
6413 scm_class_extended_accessor): New classes.
6414
6415 2003-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
6416
6417 * procs.c (scm_procedure_documentation): Removed redundant
6418 SCM_NIMP test and replaced other calls to SCM_IMP by more explicit
6419 predicates.
6420
6421 2003-03-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6422
6423 * list.c, list.h (scm_filter, scm_filter_x): New functions.
6424
6425 * modules.c (scm_module_import_interface): New function.
6426
6427 * goops.c, goops.h (scm_class_accessor_method): Renamed from
6428 scm_class_accessor.
6429 (scm_class_accessor): New class.
6430
6431 2003-03-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6432
6433 * goops.c (scm_primitive_generic_generic): Enable primitive
6434 generic if not enabled.
6435 (scm_sys_goops_loaded): Setup unextended primitive generics.
6436
6437 * goops.c, goops.h (scm_c_extend_primitive_generic): New function.
6438
6439 * snarf.h (SCM_PRIMITIVE_GENERIC, SCM_PRIMITIVE_GENERIC_1): New
6440 snarf macros.
6441
6442 * numbers.c (scm_abs): Use SCM_PRIMITIVE_GENERIC. (This is only a
6443 testing example. All uses of SCM_GPROC should be converted.)
6444
6445 * procprop.c (scm_stand_in_scm_proc): Use scm_assq instead of
6446 scm_assoc.
6447
6448 * eq.c (scm_equal_p): Turned into a primitive generic.
6449
6450 2003-02-27 Rob Browning <rlb@defaultvalue.org>
6451
6452 * Makefile.am (scmconfig.h): new target -- generate file from
6453 ../config.h.
6454 (modinclude_HEADERS): remove version.h.
6455 (nodist_modinclude_HEADERS): add version.h.
6456
6457 2003-02-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6458
6459 This fixes a serious GC bug, introduced during the latest
6460 reorganization of the GC, which disabled freeing of structs and
6461 GOOPS objects:
6462
6463 * struct.c (scm_struct_prehistory): Init scm_i_structs_to_free to
6464 SCM_EOL.
6465 (scm_struct_prehistory): Move scm_free_structs to
6466 scm_before_mark_c_hook.
6467
6468 * gc-card.c (sweep_card): Check that we haven't swept structs on
6469 this card before. That can happen if scm_i_sweep_all_segments has
6470 been called from some other place than scm_igc.
6471
6472 2003-02-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6473
6474 * environments.c (DEFAULT_OBARRAY_SIZE): Changed from 137 to 31
6475 (since hash tables now adapt their size).
6476
6477 * modules.c (scm_modules_prehistory): Changed from 2001 to 1533
6478 (current number of prehistory bindings; hashtable code will select
6479 a prime which is greater than this value).
6480
6481 * symbols.c (scm_symbols_prehistory): Changed from 1009 to 2139
6482 (current number of initial symbols).
6483
6484 * properties.c (scm_init_properties): Don't specify size of
6485 scm_properties_whash.
6486
6487 * objprop.c (scm_init_objprop): Don't specify size of
6488 scm_object_whash.
6489
6490 * keywords.c (scm_init_keywords): Don't specify a hash table size.
6491
6492 * hooks.c (scm_c_hook_add): Fixed bug in append mode.
6493
6494 The following changes introduce the use of resizable hash tables
6495 throughout Guile. It also renames the old *-hash-table* functions
6496 to *-alist-vector* and places them, together with the rest of the
6497 weak vector support, in the module (ice-9 weak-vector). We should
6498 probably introduce a new, better, API for weak references, for
6499 example "weak pairs" a la MIT-Scheme. (In Chez scheme, they even
6500 look like and are used like ordinary pairs.)
6501
6502 * environments.c (obarray_enter, obarray_retrieve, obarray_remove,
6503 leaf_environment_fold, obarray_remove_all): Use hashtable
6504 accessors.
6505
6506 * gc.c (scm_init_storage): Moved hook initialization to
6507 scm_storage_prehistory.
6508 (scm_storage_prehistory): New function.
6509 (scm_igc): Added commentary about placement of
6510 scm_after_sweep_c_hook.
6511
6512 * gc-mark.c (scm_mark_all): Use hashtable accessors.
6513 (scm_gc_mark_dependencies): Use SCM_WVECT_WEAK_KEY_P and
6514 SCM_WVECT_WEAK_VALUE_P.
6515
6516 * hashtab.c, hashtab.h (scm_hash_for_each, scm_hash_map): New
6517 functions.
6518 (scm_vector_to_hash_table, scm_c_make_resizing_hash_table):
6519 Removed.
6520 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table,
6521 scm_make_doubly_weak_hash_table): Moved here from weaks.c.
6522
6523 * init.c (scm_init_guile_1): Removed call to scm_init_weaks; Added
6524 calls to scm_storage_prehistory and scm_hashtab_prehistory.
6525
6526 * modules.c (module-reverse-lookup): Use hashtable accessors.
6527
6528 * symbols.c, symbols.h (scm_i_hash_symbol): New function.
6529
6530 * weaks.c, weaks.h (scm_make_weak_key_alist_vector,
6531 scm_make_weak_value_alist_vector,
6532 scm_make_doubly_weak_alist_vector): New functions.
6533
6534 * weaks.c (scm_init_weaks_builtins): New function.
6535
6536 * weaks.h (SCM_WVECTF_WEAK_KEY, SCM_WVECTF_WEAK_VALUE,
6537 SCM_WVECTF_NOSCAN, SCM_WVECT_WEAK_KEY_P, SCM_WVECT_WEAK_VALUE_P,
6538 SCM_WVECT_NOSCAN_P): New macros.
6539
6540 * weaks.c (scm_scan_weak_vectors): Use SCM_WVECT_WEAK_KEY_P
6541 and SCM_WVECT_WEAK_VALUE_P.
6542
6543 * weaks.c, weaks.h (scm_i_allocate_weak_vector): Renamed from
6544 allocate_weak_vector and exported.
6545
6546 2003-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6547
6548 * hashtab.c: Undid thread safety. (We decided that it's better to
6549 let the user explicitly protect the tables (or not) according what
6550 is suitable for the application.)
6551
6552 2003-02-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6553
6554 * hashtab.c (scm_hash_fn_remove_x, scm_internal_hash_fold): Made
6555 thread safe and handle resizing tables.
6556 (scm_ihashx, scm_sloppy_assx, scm_delx_x): Removed
6557 SCM_DEFER/ALLOW_INTS.
6558
6559 2003-02-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6560
6561 * hashtab.c (scm_vector_to_hash_table,
6562 scm_c_make_resizing_hash_table, scm_make_hash_table): New
6563 functions.
6564 (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x): Made thread
6565 safe and handle resizing tables.
6566
6567 * weaks.c (scm_make_weak_key_hash_table,
6568 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
6569 Size argument made optional. Return resizable table if not
6570 specified.
6571
6572 2003-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6573
6574 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
6575 Fixed formals tests for closures. (Thanks to Kevin Ryde.)
6576
6577 2003-02-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6578
6579 * debug.c (scm_procedure_source): Handle all objects for which
6580 procedure? is #t. (Thanks to Bill Schottstaedt.)
6581
6582 2003-01-23 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6583
6584 * futures.c (mark_futures): Don't need to mark data of recycled
6585 futures.
6586 (scan_futures, cleanup_undead): Be smarter about marking
6587 futures---avoid unnecessary passes through future lists.
6588
6589 * futures.h, futures.c: New files; Introduced recycling of
6590 futures. For fine-grained threading this lifts performance to
6591 another level. We can now use parallelization in inner loops of
6592 Guile programs without impossible overhead.
6593
6594 * threads.h, threads.c: Moved futures to their own file.
6595
6596 * Makefile.am (libguile_la_SOURCES): Added futures.c.
6597 (DOT_X_FILES): Added futures.x.
6598 (DOT_DOC_FILES): Added futures.doc.
6599 (modinclude_HEADERS): Added futures.h.
6600
6601 * threads.c, threads.h (scm_i_create_thread): Renamed from
6602 create_thread and made global.
6603
6604 * futures.c (scm_make_future): New procedure.
6605
6606 * eval.c: #include "libguile/futures.h".
6607
6608 * init.c: #include "futures.h"
6609 (scm_init_guile_1): Call scm_init_futures.
6610
6611 * stime.c (SCM_TIME_UNITS_PER_SECOND): Renamed from CLKTCK.
6612
6613 * stime.h (SCM_TIME_UNITS_PER_SECOND): Definition moved here.
6614
6615 * eval.c, eval.h (scm_trampoline_0, scm_i_call_closure_0): New
6616 functions.
6617
6618 * eval.c (scm_trampoline_1): Fixed arguments test for closures.
6619
6620 2003-01-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6621
6622 * threads.c (create_thread): Don't unwind dynwind chain of parent
6623 thread before creation. Just start the new thread with an empty
6624 dynwind chain.
6625
6626 2003-01-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6627
6628 * evalext.c, evalext.h (scm_self_evaluating_p): New function.
6629
6630 2003-01-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6631
6632 * threads.c (scm_timed_wait_condition_variable): Support timed
6633 waiting also for simple condition variables.
6634
6635 * goops.c (TEST_CHANGE_CLASS): Use scm_change_object_class instead
6636 of calling the procedure change-object-class.
6637
6638 2003-01-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6639
6640 * ramap.c (scm_ramapc): Typo in error message.
6641
6642 2003-01-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6643
6644 * goops.c (scm_sys_prep_layout_x): Bugfix: Only create layout for
6645 slots with instance allocation.
6646
6647 * goops.c, goops.h (scm_class_extended_generic_with_setter): New
6648 class.
6649 (scm_compute_applicable_methods): Use scm_generic_function_methods.
6650
6651 * goops.c (scm_generic_function_methods): Support extended
6652 generic functions.
6653
6654 2002-12-29 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6655
6656 * eval.c (unmemocopy): Bugfix: scm_sym_delay --> scm_sym_future.
6657 Thanks to Neil for pointing this out!
6658
6659 2002-12-29 Neil Jerram <neil@ossau.uklinux.net>
6660
6661 * lang.h: Remove declarations matching definitions removed from
6662 lang.c (just below).
6663
6664 2002-12-28 Neil Jerram <neil@ossau.uklinux.net>
6665
6666 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
6667 scm_m_while, scm_nil_eq): Remove definitions that were superfluous
6668 and already commented out.
6669
6670 * read.h (scm_lreadparen), read.c (scm_lreadr, scm_read_token,
6671 scm_lreadparen): Support reading vectors with Elisp syntax if
6672 SCM_ELISP_READ_EXTENSIONS is defined. (SCM_ELISP_READ_EXTENSIONS
6673 is not currently defined, and there isn't even a configure switch
6674 to enable it yet.)
6675
6676 2002-12-26 Marius Vollmer <mvo@zagadka.ping.de>
6677
6678 * Makefile.am (c-tokenize.o): Refer to source via $< so that vpath
6679 builds work.
6680 (EXTRA_DIST): Added version.h.in.
6681
6682 2002-12-21 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6683
6684 This change makes it possible for one thread to do lazy sweeping
6685 while other threads are running. Now only the mark phase need to
6686 have all threads asleep. We should look further into this issue.
6687 Presently, I've put the locking of scm_i_sweep_mutex at
6688 "conservative" places due to my current lack of knowledge about
6689 the garbage collector. Please feel free to restrict these regions
6690 further to allow for maximal parallelism!
6691
6692 * gc.c, gc.h (scm_i_sweep_mutex): New mutex.
6693
6694 * gc.c (scm_gc_for_newcell), gc-malloc.c (scm_realloc,
6695 scm_gc_register_collectable_memory): Substitute locking of
6696 scm_i_sweep_mutex for calls to scm_i_thread_put_to_sleep.
6697 (scm_igc): Lock sweep mutex here instead of in callers; Calls to
6698 scm_i_thread_put_to_sleep/scm_i_thread_wake_up used to demarkate
6699 the single-thread section (which now only contains the mark
6700 phase).
6701 (scm_gc): Don't lock sweeo mutex here since scm_igc locks it;
6702 Removed SCM_DEFER/ALLOW_INTS. Simply call scm_igc directly.
6703
6704 * threads.c (gc_section_mutex): Removed.
6705
6706 2002-12-19 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6707
6708 * threads.c (create_thread): Clear parent field in root state in
6709 order not to unnecessarily remember dead threads.
6710
6711 * eval.c (call_subr2o_1, call_lsubr2_2): New functions.
6712 (scm_trampoline_1, scm_trampoline_2): Use them.
6713
6714 2002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6715
6716 Partial introduction of real plugin interface.
6717
6718 * Makefile.am (modinclude_HEADERS): Added threads-plugin.h.
6719 (EXTRA_DIST): Added threads-plugin.c.
6720
6721 * threads-plugin.h, threads-plugin.c: New files.
6722
6723 * threads.h: #include "libguile/threads-plugin.h".
6724
6725 * threads.c: #include "libguile/threads-plugin.c".
6726
6727 * pthread-threads.c: Temporarily remove debugging functions.
6728
6729 * threads.c, threads.h (scm_yield): Added back.
6730
6731 2002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6732
6733 * threads.c (really_launch): Detach before unlocking
6734 thread_admin_mutex in order not to risk being joined.
6735 (scm_i_thread_put_to_sleep, scm_i_thread_wake_up): Keep
6736 thread_admin_mutex locked during GC.
6737
6738 * pthread-threads.c, pthread-threads.h: Improvements to debugging
6739 functions.
6740
6741 2002-12-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6742
6743 * pthread-threads.c, pthread-threads.h (SCM_DEBUG_THREADS): Added
6744 support for debugging mutex operations.
6745
6746 * threads.c (scm_thread): Removed filed joining_threads.
6747 (thread_print): Print thread number as well as address of thread
6748 structure.
6749 (scm_join_thread): Bugfix.
6750 (scm_lock_mutex, scm_try_mutex, scm_unlock_mutex,
6751 scm_timed_wait_condition_variable, scm_signal_condition_variable,
6752 scm_broadcast_condition_variable): Use the low-level API.
6753 (scm_all_threads): Return copy of thread list (to prevent
6754 unintended destruction).
6755 (scm_threads_prehistory): Initialize heap_mutex of fake thread.
6756
6757 * pthread-threads.c, pthread-threads.h, threads.c: Fixes to
6758 pthread "native" recursive mutex support.
6759
6760 2002-12-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6761
6762 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): New definitions.
6763 Simply lock a thread C API recursive mutex.
6764 (SCM_NONREC_CRITICAL_SECTION_START,
6765 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
6766 SCM_REC_CRITICAL_SECTION_END): Removed.
6767
6768 * eval.c: Replaced SOURCE_SECTION_START / SOURCE_SECTION_END with
6769 direct calls to scm_rec_mutex_lock / unlock around the three calls
6770 to scm_m_expand_body.
6771
6772 * eval.c, eval.h (promise_free): New function.
6773 (scm_force): Rewritten; Now thread-safe; Removed
6774 SCM_DEFER/ALLOW_INTS.
6775
6776 * pthread-threads.h: Added partially implemented plugin interface
6777 for recursive mutexes. These are, for now, only intended to be
6778 used internally within the Guile implementation.
6779
6780 * pthread-threads.c: New file.
6781
6782 * threads.c: Conditionally #include "pthread-threads.c".
6783
6784 * eval.c, eval.h (scm_makprom, scm_force): Rewritten to be
6785 thread-safe;
6786
6787 * snarf.h (SCM_MUTEX, SCM_GLOBAL_MUTEX, SCM_REC_MUTEX,
6788 SCM_GLOBAL_REC_MUTEX): New macros.
6789
6790 * eval.c, threads.c, threads.h, snarf.h: Rewrote critical section
6791 macros---use mutexes instead.
6792
6793 * tags.h (SCM_IM_FUTURE): New tag.
6794
6795 * eval.c (scm_m_future): New primitive macro.
6796 (SCM_CEVAL): Support futures.
6797 (unmemocopy): Support unmemoization of futures.
6798
6799 * print.c (scm_isymnames): Name of future isym.
6800
6801 * version.c: Unmade some changes to my private copy that got
6802 committed by mistake.
6803
6804 2002-12-11 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6805
6806 * gc-malloc.c, gc.h, init.c: Reverted gc-malloc change of
6807 2002-12-10.
6808
6809 * gc.c (scm_igc): Don't call scm_i_thread_invalidate_freelists.
6810
6811 * gc.c (scm_gc_sweep): Call it here instead, which is a more
6812 logical place.
6813
6814 * threads.c (create_thread): Remember root object until the handle
6815 of the new thread is on all_threads list.
6816
6817 * root.c (scm_make_root): Moved copying of fluids until after
6818 creation of root handle so that the fluids are GC protected. Also
6819 removed the critical section.
6820
6821 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6822
6823 * gc-malloc.c, gc.h (scm_gc_malloc_prehistory): New function.
6824
6825 * gc-malloc.c (malloc_mutex): New mutex.
6826 (scm_gc_malloc_prehistory): Initialize it.
6827 (scm_realloc): Serialize call to realloc
6828 (scm_calloc): Same for calloc.
6829 Thanks to Wolfgang Jaehrling!
6830 (Now we have to make sure all calls to malloc/realloc are made
6831 through scm_malloc.)
6832
6833 * init.c (scm_init_guile_1): Call scm_gc_malloc_prehistory.
6834
6835 * threads.c (really_launch): Release heap (to prevent deadlock).
6836 (create_thread): Release heap before locking thread admin mutex.
6837
6838 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6839
6840 * threads.c (scm_i_thread_invalidate_freelists): New
6841 function.
6842
6843 * gc.c (scm_igc): Call scm_i_thread_invalidate_freelists.
6844
6845 * modules.c (scm_export): Inserted a return statement.
6846
6847 2002-12-10 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6848
6849 * modules.c (scm_export): new function
6850
6851 * gc-card.c: add a note about malloc()/free() overhead.
6852
6853 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6854
6855 * Makefile.am (c-tokenize.$(OBJEXT)): Don't look for c-tokenize.c
6856 in srcdir.
6857
6858 2002-12-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6859
6860 These changes remove scm_ints_disabled (which hasn't has any
6861 effect in Guile for quite some time).
6862
6863 * async.c, error.h (scm_ints_disabled): Removed.
6864
6865 * gc.c (scm_gc_for_newcell), init.c (scm_init_guile_1),
6866 root.c (scm_internal_cwdr), gdbint.c (SCM_BEGIN_FOREIGN_BLOCK,
6867 SCM_END_FOREIGN_BLOCK): Don't touch scm_ints_disabled.
6868 (old_ints): Removed.
6869
6870 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Define as a recursive
6871 critical section.
6872 (SCM_REDEFER_INTS, SCM_ALLOW_INTS): Define as SCM_DEFER_INTS and
6873 SCM_ALLOW_INTS.
6874
6875 2002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6876
6877 * threads.c (scm_mutex_lock, scm_cond_wait, scm_cond_timedwait):
6878 Removed accidental #if 0 around these functions.
6879
6880 These changes are the start of support for preemptive
6881 multithreading. Marius and I have agreed that I commit this code
6882 into the repository although it isn't thoroughly tested and surely
6883 introduces many bugs. The bugs should only be exposed when using
6884 threads, though. Signalling and error handling for threads is
6885 very likely broken. Work on making the implementation cleaner and
6886 more efficient is needed.
6887
6888 * __scm.h (SCM_ALLOW_INTS_ONLY): Removed.
6889 (SCM_NONREC_CRITICAL_SECTION_START,
6890 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
6891 SCM_REC_CRITICAL_SECTION_END): New macros.
6892 (SCM_CRITICAL_SECTION_START/END): Defined here.
6893
6894 * eval.c: Insert SOURCE_SECTION_START / SOURCE_SECTION_END around
6895 the three calls to scm_m_expand_body.
6896
6897 * gc.h: #include "libguile/pthread-threads.h";
6898 (SCM_FREELIST_CREATE, SCM_FREELIST_LOC): New macros.
6899
6900 * gc.c (scm_i_freelist, scm_i_freelist2): Defined to be of type
6901 scm_t_key;
6902
6903 * gc.c, gc-freelist.c, inline.h: Use SCM_FREELIST_LOC for freelist
6904 access.
6905
6906 * gc-freelist.c (scm_gc_init_freelist): Create freelist keys.
6907
6908 * gc-freelist.c, threads.c (really_launch): Use
6909 SCM_FREELIST_CREATE.
6910
6911 * gc-malloc.c (scm_realloc, scm_gc_register_collectable_memory):
6912
6913 * gc.c (scm_i_expensive_validation_check, scm_gc,
6914 scm_gc_for_newcell): Put threads to sleep before doing GC-related
6915 heap administration so that those pieces of code are executed
6916 single-threaded. We might consider rewriting these code sections
6917 in terms of a "call_gc_code_singly_threaded" construct instead of
6918 calling the pair of scm_i_thread_put_to_sleep () and
6919 scm_i_thread_wake_up (). Also, we would want to have as many of
6920 these sections eleminated.
6921
6922 * init.c (scm_init_guile_1): Call scm_threads_prehistory.
6923
6924 * inline.h: #include "libguile/threads.h"
6925
6926 * pthread-threads.h: Macros now conform more closely to the
6927 pthreads interface. Some of them now take a second argument.
6928
6929 * threads.c, threads.h: Many changes.
6930
6931 2002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6932
6933 * Makefile.am (version.h): Changed $^ --> $< in rule for
6934 version.h.
6935
6936 2002-12-08 Rob Browning <rlb@defaultvalue.org>
6937
6938 * version.h.in (SCM_MICRO_VERSION): use @--@ substitution now.
6939 (SCM_MINOR_VERSION): use @--@ substitution now.
6940 (SCM_MICRO_VERSION): use @--@ substitution now.
6941 (scm_effective_version): new function prototype.
6942
6943 * version.c (scm_effective_version): new function, also add
6944 effective-version.
6945
6946 * Makefile.am (schemelibdir): VERSION -> GUILE_EFFECTIVE_VERSION.
6947 (libpath.h): use GUILE_EFFECTIVE_VERSION to compute
6948 SCM_LIBRARY_DIR.
6949 (version.h): generate this here rather than configure.in. This
6950 approach tracks source edits better (i.e. more immediately).
6951 Might be worth considering for other .in files too.
6952
6953 2002-12-02 Marius Vollmer <mvo@zagadka.ping.de>
6954
6955 Reorganized thread package selection. A thread package now only
6956 implements a small set of pthread like functions and Guile
6957 implements the rest on top of that. Guile's implementation is
6958 what the "coop-pthreads" package has been previously. Support for
6959 "coop" threads has been removed until I get time to add it again.
6960
6961 * Makefile.am (libguile_la_SOURCES): Removed iselect.c.
6962 (noinst_HEADERS): Removed coop-threads.c, coop-threads.h, coop.c,
6963 null-threads.c, coop-pthreads.c.
6964 (modinclude_HEADERS): Removed coop-defs.h, coop-pthreads.h. Added
6965 pthread-threads.h.
6966
6967 * validate.h (SCM_VALIDATE_THREAD): Moved to threads.h.
6968
6969 * threads.h: Do not include "libguile/coop-defs.h". Include
6970 "libguile/pthread-threads.h" for USE_COPT_THREADS. Removed
6971 (previously deprecated) C level thread API prototypes. They are
6972 now in the thread package specific headers, "null-threads.h" and
6973 "pthread-threads.h".
6974 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
6975 New.
6976 (scm_threads_init): Removed.
6977 (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END,
6978 SCM_THREAD_SWITCHING_CODE, scm_i_switch_counter,
6979 SCM_I_THREAD_SWITCH_COUNT): Define here.
6980 (scm_single_thread_p): Removed.
6981 (scm_call_with_new_thread): Take two args directly instead of list
6982 of two args.
6983 (scm_i_thread_data, scm_i_set_thread_data, SCM_THREAD_LOCAL_DATA,
6984 SCM_SET_THREAD_LOCAL_DATA): Define here.
6985
6986 * threads.c: Merged with "coop-pthreads.c".
6987
6988 * null-threads.h: Implement pthread-like API as a set of macros.
6989
6990 * pthread-threads.h: New, implement pthread-like API by deferring
6991 to pthread itself.
6992
6993 * init.c (scm_init_guile_1): Do not call scm_init_iselect, which
6994 has been lost in the reorganization.
6995
6996 2002-12-01 Mikael Djurfeldt <mdj@linnaeus>
6997
6998 The following change makes it possible to move procedure
6999 application dispatch outside inner loops. The motivation was
7000 clean implementation of efficient replacements of R5RS primitives
7001 in SRFI-1.
7002
7003 The semantics is clear: scm_trampoline_N returns an optimized
7004 version of scm_call_N (or NULL if the procedure isn't applicable
7005 on N args).
7006
7007 Applying the optimization to map and for-each increases efficiency
7008 noticeably. For example, (map abs ls) is 8 times faster than
7009 before.
7010
7011 * eval.h (scm_t_trampoline_1, scm_t_trampoline_2): New types.
7012
7013 * eval.c, eval.h (scm_trampoline_1, scm_trampoline_2): New functions.
7014
7015 * eval.c (call_subr2_2, call_lsubr_2, call_closure_2): New functions;
7016 (map, for-each): Handle also application on two args as a special
7017 case; Use trampolines.
7018
7019 Other changes:
7020
7021 * sort.c (scm_cmp_function): Choose subr2less for scm_tc7_subr_2o;
7022 (subr2oless): Removed.
7023 (scm_restricted_vector_sort_x): Use scm_return_first to keep the
7024 vector GC protected.
7025
7026 * eval.c (check_map_args): Use scm_out_of_range_pos instead of
7027 scm_out_of_range.
7028
7029 2002-11-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
7030
7031 * evalext.[ch] (scm_m_undefine, undefine): Deprecated.
7032
7033 2002-11-17 Mikael Djurfeldt <mdj@linnaeus>
7034
7035 * debug.c (scm_make_iloc): Added missing "return".
7036
7037 2002-11-17 Marius Vollmer <mvo@zagadka.ping.de>
7038
7039 * strports.c (scm_eval_string_in_module): Validate second arg to
7040 be a module. Thanks to Arno Peters!
7041
7042 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7043
7044 * .cvsignore: remove goops.c
7045
7046 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7047
7048 * modules.c (scm_env_top_level, scm_lookup_closure_module,
7049 module_variable, scm_module_lookup_closure,
7050 scm_module_transformer, scm_sym2var, scm_module_reverse_lookup,
7051 scm_system_module_env_p): Don't compare SCM values with C
7052 operators == or !=. Avoid SCM_IMP predicates. Prefer !SCM_FALSEP
7053 over SCM_NFALSEP.
7054
7055 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7056
7057 * eval.h (SCM_MAKE_ILOC): New macro.
7058
7059 * debug.c (scm_make_iloc): Use SCM_MAKE_ILOC instead of computing
7060 the iloc bitpattern here.
7061
7062 2002-11-14 Mikael Djurfeldt <mdj@linnaeus>
7063
7064 * coop-pthreads.c, coop-pthreads.h: scm_internal_select should be
7065 part of the API, otherwise it's difficult to write Guile
7066 extensions using non-blocking I/O => moved #include
7067 "libguile/iselect.h" from coop-pthreads.c --> coop-pthreads.h.
7068
7069 * coop-pthreads.c (scm_unlock_mutex): Changed s_lock_mutex -->
7070 s_unlock_mutex.
7071
7072 2002-11-10 Marius Vollmer <mvo@zagadka.ping.de>
7073
7074 * __scm.h (USE_THREADS, GUILE_ISELECT): Do not define here. They
7075 are defined in configure.in.
7076
7077 * threads.c: Removed SCM_API from function definitions. SCM_API
7078 is only for declarations.
7079
7080 2002-11-07 Mikael Djurfeldt <mdj@linnaeus>
7081
7082 * coop-pthreads.h: Added support for thread specific data to the
7083 generic C API for the coop-pthreads case.
7084
7085 * threads.c, threads.h (scm_cond_init): Undo unintentional API
7086 change.
7087 (scm_cond_broadcast): Added missing function.
7088
7089 2002-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7090
7091 * coop.c (coop_next_runnable_thread): Removed, wich should have
7092 happened when GUILE_ISELECT was hard-wired.
7093
7094 2002-11-03 Marius Vollmer <mvo@zagadka.ping.de>
7095
7096 * Makefile.am (libguile_la_SOURCES): Added threads.c
7097 (DOT_DOC_FILES): Added threads.doc.
7098 (DOT_X_FILES): Added threads.x.
7099 (EXTRA_libguile_la_SOURCES): Removed threads.c.
7100 (noinst_HEADERS): Added coop-pthreads.c.
7101 (modinclude_HEADERS): Added coop-pthreads.h.
7102
7103 * __scm.h (USE_THREADS, GUILE_ISELECT): Define when
7104 SCM_DEBUG_DEPRECATED. Removed their use thru-out Guile.
7105
7106 * iselect.c: Include "_scm.h" before testing HAVE_UNISTD_H.
7107 Thanks to Bill Schottstaedt!
7108
7109 * numbers.c (scm_integer_expt): Make 0^z == 0 for z != 0.
7110
7111 * _scm.h (HAVE_RESTARTABLE_SYSCALLS): Do define even when
7112 SCM_COPT_THREADS is defined.
7113 (SCM_SYSCALL): Use EINTR-expection version when SCM_COPT_THREADS
7114 is defined.
7115
7116 * coop-pthreads.c: Some harmless renamings of internal stuff.
7117 (create_thread): New, generalized version of
7118 scm_call_with_new_thread.
7119 (scm_call_with_new_thread): Use it.
7120 (scm_spawn_thread): New, use create_thread.
7121
7122 2002-11-02 Marius Vollmer <mvo@zagadka.ping.de>
7123
7124 * coop-pthreads.c, coop-pthreads.h: Redone completely, you might
7125 start testing it now.
7126
7127 * _scm.h: Include <errno.h< so that SCM_SYSCALL is correctly
7128 defined when HAVE_RESTARTABLE_SYSCALLS is not defined.
7129 (HAVE_RESTARTABLE_SYSCALLS): Do not define when USE_COPT_THREADS
7130 is defined.
7131
7132 2002-10-27 Marius Vollmer <mvo@zagadka.ping.de>
7133
7134 * scmsigs.c (signal_cell_handlers, install_handler_data,
7135 scm_delq_spine_x, really_install_handler, install_handler): New
7136 scheme for triggering signal handlers, to simplify take_signal.
7137 (take_signal): Simplified, to avoid race conditions.
7138 (scm_sigaction_for_thread): Use new Scheme. Validate that thread
7139 hasn't exited yet.
7140
7141 * async.c (scm_async_click): Reset pending_asyncs, handle
7142 signal_asyncs. Don't set cdr of a non-signal async to #f.
7143 (scm_i_queue_async_cell): Do not check cdr of cell for #f, queue
7144 always. Set pending_asyncs.
7145 (scm_system_async_mark_for_thread): Check that thread has not
7146 exited.
7147 (scm_unmask_signals, decrease_block): Call scm_async_click after
7148 block_asyncs becomes zero.
7149
7150 * __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of
7151 active_asyncs.
7152
7153 * root.h (scm_root_state): Added pending_asyncs and signal_asyncs
7154 fields.
7155 * root.c (root_mark): Mark them.
7156 (make_root): Initialize them.
7157
7158 * iselect.c, iselect.h: Replaced GUILE_ISELECT with
7159 USE_COOP_THREADS.
7160 (scm_internal_select): Define one version for USE_COOP_THREADS and
7161 one for USE_NULL_THREADS.
7162 (scm_init_iselect): Likewise.
7163
7164 * inline.h (scm_cell, scm_double_cell): Also allow
7165 USE_COPT_THREADS to not protect the slot initializers.
7166
7167 * init.c (scm_init_guile_1): Call scm_init_thread_procs. This is
7168 because threads need to be initialized before the stack, but
7169 gsubrs such as scm_timed_condition_variable_wait can only be
7170 created later.
7171
7172 * threads.h: Include "coop-pthreads.h" when requested.
7173 (scm_threads_make_mutex, scm_threads_lock_mutex,
7174 scm_threads_unlock_mutex, scm_threads_monitor): Removed, they were
7175 not implemented anyway.
7176 (scm_init_thread_procs, scm_try_mutex,
7177 scm_timed_condition_variable_wait,
7178 scm_broadcast_condition_variable, scm_c_thread_exited_p,
7179 scm_thread_exited_p): New prototypes.
7180 (struct timespec): Define if not already defined.
7181 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
7182 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
7183 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
7184 scm_cond_broadcast, scm_cond_destroy): Declarations moved here and
7185 deprecated.
7186
7187 * threads.c: Include <errno.h>. Include "coop-pthreads.c" when
7188 requested.
7189 (scm_thread_exited_p): New.
7190 (scm_try_mutex, scm_broadcast_condition_variable): Newly
7191 registered procedures.
7192 (scm_wait_condition_variable, scm_timed_wait_condition_variable):
7193 Use the latter as the procedure for "wait-condition-variable",
7194 thus offering a optional timeout parameter to Scheme.
7195 (scm_wait_condition_variable): Implement in terms of
7196 scm_timed_wait_condition_variable.
7197 (scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
7198 scm_mutex_unlock, scm_mutex_destroy, scm_cond_init,
7199 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
7200 scm_cond_broadcast, scm_cond_destroy): Implement in terms of
7201 scm_make_mutex, etc, and deprecate.
7202 (scm_init_threads): Do not create smobs, leave this to
7203 scm_threads_init. Do not include "threads.x" file.
7204 (scm_init_thread_procs): New, include "threads.x" here.
7205
7206 * null-threads.h (scm_null_mutex, scm_null_mutex_init,
7207 scm_null_mutex_lock, scm_null_mutex_unlock,
7208 scm_null_mutex_destroy, scm_null_condvar, scm_null_condvar_init,
7209 scm_null_condvar_wait, scm_null_condvar_signal,
7210 scm_null_condvar_destroy): Removed.
7211 (scm_mutex_init, scm_mutex_lock, scm_mutex_unlock, scm_cond_init,
7212 scm_cond_wait, scm_cond_signal, scm_cond_broadcast,
7213 scm_cond_destory): Do not define, they are now deprecated and
7214 handled by threads.{h,c}.
7215
7216 * null-threads.c (scm_null_mutex, scm_null_cond): Define here.
7217 (scm_threads_init): Create smobs here, using the appropriate
7218 sizes.
7219 (block): Removed, now unused.
7220 (scm_c_thread_exited_p): New.
7221 (scm_null_mutex_init, scm_null_mutex_lock, scm_null_mutex_unlock,
7222 scm_null_mutex_destroy, scm_null_condvar_init,
7223 scm_null_condvar_wait, scm_null_condvar_signal,
7224 scm_null_condvar_destroy): Removed and updated users to do their
7225 task directly.
7226 (scm_try_mutex, timeval_subtract,
7227 scm_timed_wait_condition_variable,
7228 scm_broadcast_condition_variable): New.
7229 (scm_wait_condition_variable): Removed.
7230
7231 * coop-defs.h (coop_m): Added 'level' field.
7232 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
7233 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
7234 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
7235 scm_cond_broadcast, scm_cond_destroy, struct timespec): Do not
7236 define.
7237 (coop_condition_variable_broadcast): New.
7238
7239 * coop-threads.c (scm_threads_init): Create smobs here, using the
7240 appropriate sizes.
7241 (scm_c_thread_exited_p, scm_try_mutex,
7242 scm_timed_wait_condition_variable,
7243 scm_broadcast_condition_variable): New.
7244 (scm_wait_condition_variable): Removed.
7245
7246 * coop.c (coop_new_mutex_init): Initialize level.
7247 (coop_mutex_trylock, coop_mutex_lock, coop_mutex_unlock): maintain
7248 level.
7249 (coop_condition_variable_signal): Renamed to
7250 coop_condition_variable_broadcast and reimplemented in terms of
7251 that. Thus...
7252 (coop_condition_variable_broadcast): New.
7253
7254 * goops.c (hell_mutex): Reimplemented using scm_make_mutex, etc.
7255
7256 * coop-pthreads.h, coop-pthreads.c: New, but unfinished.
7257
7258 2002-10-21 Marius Vollmer <mvo@zagadka.ping.de>
7259
7260 * null-threads.c: Include <time.h>. Also, use <...> for inclusion
7261 of system headers.
7262
7263 * async.c, goops.h, modules.h, validate.h (SCM_MAKE_VALIDATE_MSG):
7264 New. Use it instead of SCM_MAKE_VALIDATE in lots of places to
7265 give better error messages. Thanks to Bill Schottstaedt!
7266
7267 2002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
7268
7269 * evalext.h, evalext.c (scm_definedp, scm_defined_p): Renamed
7270 scm_definedp to scm_defined_p and deprecated scm_definedp.
7271
7272 2002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
7273
7274 * async.h, async.c (scm_system_async): Fixed deprecation to work
7275 correctly when deprecated features are excluded.
7276
7277 2002-10-16 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7278
7279 * async.c (scm_system_async_mark_for_thread): Validate thread
7280 argument.
7281
7282 * coop-threads.c (scm_i_thread_root): Do not validate argument.
7283
7284 * feature.c (scm_init_feature): Don't add 'threads' for
7285 USE_NULL_THREADS.
7286
7287 * inline.h (scm_cell, scm_double_cell): Also allow
7288 USE_NULL_THREADS to not protect the slot initializers.
7289
7290 * scmsigs.c (scm_sigaction_for_thread): It's "USE_THREADS" not
7291 "USE_THREAD".
7292
7293 * Makefile.am (noinst_HEADERS): Added null-threads.c.
7294 (modinclude_HEADERS): Added null-threads.h.
7295
7296 * threads.h: Include null-threads.h when !USE_COOP_THREADS.
7297 * threads.c: Include null-threads.c when !USE_COOP_THREADS.
7298 (scm_init_threads): Use generic type names scm_t_mutex and
7299 scm_t_cond instead of coop_m and coop_c.
7300
7301 * null-threads.c, null-threads.h: New files.
7302
7303 2002-10-15 Marius Vollmer <mvo@zagadka.ping.de>
7304
7305 * Makefile.am: Replaced "$<" in non-pattern rules with its value.
7306 This is to support makes that know about "$<" only in pattern
7307 rules, like Sun's make.
7308
7309 2002-10-13 Marius Vollmer <mvo@zagadka.ping.de>
7310
7311 * Makefile.am (libpath.h): Fixed typo in top_srcdir_absolute
7312 substitution. Thanks to David Allouche!
7313
7314 2002-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
7315
7316 * evalext.h: Replaced SCM_DEBUG_DEPRECATED with
7317 !SCM_ENABLE_DEPRECATED.
7318
7319 2002-10-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7320
7321 * async.c (scm_system_async_mark_for_thread): Only call
7322 scm_i_thread_root when USE_THREADS is defined. Use scm_root
7323 otherwise.
7324
7325 * scmsigs.c (take_signal): Only call scm_i_thread_root when
7326 USE_THREADS is defined. Use scm_root otherwise.
7327 (scm_sigaction_for_thread): Ignore THREAD argument when
7328 USE_THREADS is not defined. Also, move THREAD argument defaulting
7329 out of HAVE_SIGACTION section, which was a bug.
7330
7331 2002-10-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7332
7333 * scmsigs.c (scm_sigaction_for_thread): Store original handler in
7334 signal_handlers, not the closure that is used as the async.
7335 The closure is stored in signal_handler_cells, as previously.
7336
7337 2002-10-10 Marius Vollmer <mvo@zagadka.ping.de>
7338
7339 * root.h (scm_root_state): Added 'block_async' slot.
7340 (scm_active_asyncs): Removed abbrev.
7341 * root.c (scm_make_root): Initialize 'block_asyncs' slot.
7342
7343 * __scm.h (SCM_ASYNC_TICK): Do without the scm_active_asyncs
7344 abbrev.
7345
7346 * async.h (scm_call_with_blocked_asyncs,
7347 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
7348 scm_c_call_with_unblocked_asyncs): New prototypes.
7349 (scm_mask_signals, scm_unmask_signals): Deprecated.
7350 (scm_mask_ints): Turned into a macro.
7351 * async.c (scm_mask_ints): Removed.
7352 (scm_run_asyncs): Do not set scm_mask_ints while running an async.
7353 this should not be necessary.
7354 (scm_async_click): Test block_asyncs instead of scm_mask_ints.
7355 (scm_mask_signals, scm_unmask_signals): Deprecated. Emit
7356 deprecation warning and check for errornous use. Set block_asyncs
7357 instead of scm_mask_ints.
7358 (increase_block, decrease_block, scm_call_with_blocked_asyncs,
7359 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
7360 scm_c_call_with_unblocked_asyncs): New.
7361
7362 * script.c (scm_compile_shell_switches): Do not set scm_mask_ints.
7363 Asyncs are enabled by default.
7364
7365 2002-10-09 Neil Jerram <neil@ossau.uklinux.net>
7366
7367 * vports.c (scm_make_soft_port): Allow vector argument to carry a
7368 6th element: an input waiting thunk.
7369 (sf_input_waiting): New.
7370
7371 2002-10-05 Marius Vollmer <mvo@zagadka.ping.de>
7372
7373 * root.c (root_mark): Mark active_asyncs slot.
7374
7375 * async.c (scm_async_click): Set the cdr of a executed handler
7376 cell to SCM_BOOL_F, not SCM_EOL.
7377 (scm_i_queue_async_cell): Queue the cell at the end of the list,
7378 and only if the handler procedure is not already present.
7379 (scm_system_async_mark_for_thread): Initialize cdr of handler cell
7380 with SCM_BOOL_F.
7381 * scmsigs.c (scm_sigaction_for_thread): Likewise.
7382
7383 2002-10-04 Rob Browning <rlb@defaultvalue.org>
7384
7385 * guile.c (main): switch to scm_lt_dlset_preloaded_symbols;
7386
7387 * dynl.c (sysdep_dynl_link): switch to scm_lt_dlhandle,
7388 scm_lt_dlopenext, and scm_lt_dlerror.
7389 (sysdep_dynl_unlink): switch to scm_lt_dlhandle, scm_lt_dlclose,
7390 and scm_lt_dlerror.
7391 (sysdep_dynl_func): switch to scm_lt_dlhandle, scm_lt_dlsym,
7392 and scm_lt_dlerror.
7393 (sysdep_dynl_init): switch to scm_lt_dlinit();
7394
7395 * Makefile.am (libguile_la_LIBADD): switch to use
7396 libguile-ltdl.la.
7397
7398 * numbers.c (scm_integer_expt): (expt 0 1) should be 1.
7399
7400 2002-10-04 Marius Vollmer <mvo@zagadka.ping.de>
7401
7402 * scmsigs.h (scm_sigaction_for_thread): New prototype.
7403 * scmsigs.c (got_signal): Removed.
7404 (signal_handler_cells, signal_handler_threads): New.
7405 (take_signal): Queue the cell of the signal for the specified
7406 thread. Reset the signal handler on systems that don't have
7407 sigaction.
7408 (sys_deliver_signals): Removed.
7409 (close_1): New.
7410 (scm_sigaction_for_thread): Renamed from scm_sigaction and
7411 extended to also set the thread of a signal and allocate a cell
7412 for it. Keep the Scheme name "sigaction". Check that signum is
7413 within range. Also, use SCM_VECTOR_REF instead of SCM_VELTS.
7414 (scm_sigaction): Implement in terms of scm_sigaction_for_thread.
7415 (scm_init_scmsigs): Allocate signal_handler_cells and
7416 signal_handler_threads vectors.
7417
7418 * async.c: Removed GUILE_OLD_ASYNC_CLICK code. Reorganized so
7419 that system asnycs and user asyncs are separated. Reimplemented
7420 system asyncs to work per-thread.
7421
7422 * gc.c (scm_init_gc): Do not use scm_system_async.
7423
7424 * async.h (scm_asyncs_pending, scm_set_tick_rate,
7425 scm_set_switch_rate, scm_system_async_mark_from_signal_handler):
7426 Removed prototypes.
7427 (scm_i_queue_async_cell): New.
7428
7429 * __scm.h (scm_asyncs_pending_p): Removed.
7430 (SCM_ASYNC_CLICK): Check scm_active_asyncs instead of
7431 scm_asyncs_pending_p.
7432
7433 * async.h (scm_system_async_mark_for_thread): New prototype.
7434
7435 * __scm.h: Removed GUILE_OLD_ASYNC_CLICK code.
7436
7437 * root.h (scm_root_state): Added new "active_asyncs" slot.
7438 * root.c (scm_make_root): Initialize it to SCM_EOL.
7439
7440 * coop-defs.h (coop_t): Added new "handle" slot.
7441 * coop-threads.c (all_threads, scm_current_thread,
7442 scm_all_threads, scm_i_thread_root): New.
7443 (scm_threads_init): Add main thread to all_threads.
7444 (scheme_launch_thread): Remove thread from all_threads when it
7445 terminates.
7446 (scm_call_with_new_thread): Initialize handle slot of coop_t
7447 structure and add new thread to all_threads.
7448 (scm_spawn_thread): Likewise.
7449
7450 * threads.h (scm_current_thread, scm_all_threads): New prototypes.
7451 * threads.c (scm_current_thread, scm_all_threads): Register as
7452 primitives.
7453
7454 * dynl.c: Use scm_lt_ prefix for libltdl functions.
7455
7456 2002-09-29 Neil Jerram <neil@ossau.uklinux.net>
7457
7458 * script.c (scm_compile_shell_switches): Fix bad spelling of
7459 `explicitly' in comment.
7460
7461 2002-09-28 Neil Jerram <neil@ossau.uklinux.net>
7462
7463 * posix.c (scm_geteuid, scm_getegid, scm_seteuid, scm_setegid):
7464 Refer to provided? in doc string rather than deprecated feature?.
7465
7466 2002-09-24 Gary Houston <ghouston@arglist.com>
7467
7468 * inline.h (scm_double_cell): prevent reordering of statements
7469 with any following code (for GCC 3 strict-aliasing).
7470 * numbers.c (scm_make_real), num2float.i.c (FLOAT2NUM): removed
7471 the earlier version of the reordering prevention.
7472
7473 2002-09-19 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7474
7475 * inline.h (scm_double_cell): move SET_GCMARK set out of if body.
7476
7477 2002-09-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7478
7479 * gc-malloc.c (scm_gc_register_collectable_memory): more overflow
7480 protection.
7481
7482 2002-09-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7483
7484 * inline.h: include stdio.h
7485
7486 * smob.c (free_print): abort if scm_debug_cell_accesses_p is set
7487
7488 2002-09-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7489
7490 * gc-segment.c (scm_i_make_initial_segment): check user settings
7491 for sanity.
7492
7493 * gc-malloc.c (scm_gc_init_malloc): check user settings for
7494 sanity.
7495
7496 * gc-freelist.c (scm_init_freelist): check user settings for sanity.
7497
7498 * struct.h: change scm_structs_to_free to scm_i_structs_to_free
7499
7500 * gc-malloc.c (scm_gc_register_collectable_memory): use floats;
7501 these won't ever wrap around with high memory usage. Thanks to
7502 Sven Hartrumpf for finding this.
7503
7504 * gc-freelist.c: include <stdio.h>
7505
7506 * gc-malloc.c: add DEBUGINFO for mtrigger GCs.
7507
7508 2002-09-01 Marius Vollmer <mvo@zagadka.ping.de>
7509
7510 * vectors.h (SCM_VECTOR_REF): New.
7511
7512 * snarf.h (SCM_DEFINE_PUBLIC): New.
7513
7514 2002-08-30 Marius Vollmer <mvo@zagadka.ping.de>
7515
7516 * socket.c (scm_addr_vector): Added size of address to arguments.
7517 Use it to avoid accessing a non-existent path in a sockaddr_un.
7518 Changed all callers.
7519
7520 2002-08-29 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7521
7522 * gc.h: remove DOUBLECELL card flags.
7523
7524 * gc-malloc.c (scm_calloc): try to use calloc() before calling
7525 scm_realloc().
7526
7527 * gc-segment.c (scm_i_initialize_heap_segment_data): remove card
7528 init loop; handle this from scm_init_card_freelist()
7529
7530 * gc-card.c (scm_init_card_freelist): init bit vector here.
7531
7532 * numbers.c (scm_make_real): prevent reordering of statements
7533 num2float.i.c (FLOAT2NUM): idem
7534
7535 2002-08-27 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7536
7537 * eval.h: prepend libguile/ to include path
7538
7539 2002-08-26 Marius Vollmer <mvo@zagadka.ping.de>
7540
7541 * script.c (scm_compile_shell_switches): Added "2002" to Copyright
7542 years. Thanks to Martin Grabmüller!
7543
7544 2002-08-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7545
7546 * gc-segment.c (scm_i_get_new_heap_segment): use float in stead of
7547 unsigned numbers for computing minimum heap increment. This
7548 prevents weird results when a a negative minimum increment is
7549 computed.
7550
7551 2002-08-24 Marius Vollmer <mvo@zagadka.ping.de>
7552
7553 * gc_os_dep.c: When we have __libc_stack_end, use that directly
7554 instead of the old tricks.
7555
7556 * guile-snarf.in: Do not expect the input file to be the first
7557 argument after the optional "-o" option, just pass everything to
7558 the pre-processor without extracting the input file name.
7559
7560 2002-08-23 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7561
7562 * gc-segment.c (scm_i_get_new_heap_segment): Oops. We want segment
7563 length *at* least SCM_MIN_HEAP_SEG_SIZE, not at most.
7564
7565 2002-08-22 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7566
7567 * gc.h, gc.c: make scm_cells_allocated unsigned again. Thanks to
7568 Bill Schottstaedt for the bug report
7569
7570 2002-08-20 Marius Vollmer <mvo@zagadka.ping.de>
7571
7572 * print.c (scm_iprin1): Print primitives generics always as
7573 "primitive-generic" even when they have no primitive methods yet.
7574
7575 2002-08-17 Gary Houston <ghouston@arglist.com>
7576
7577 * coop.c (coop_create): removed bogus 2nd argument in scm_malloc
7578 call.
7579
7580 2002-08-17 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7581
7582 * ports.c (scm_add_to_port_table): small bugfix.
7583
7584 * mallocs.c (scm_malloc_obj): use scm_gc_malloc in stead of
7585 malloc.
7586
7587 * gc-segment.c (scm_i_get_new_heap_segment): remove cluster cruft:
7588 only use SCM_MIN_HEAP_SEG_SIZE.
7589
7590 * ports.c (scm_add_to_port_table): add backwards compatibility
7591 function
7592
7593 * ports.h: use scm_i_ prefix for port table and port table size.
7594
7595 2002-08-15 Mikael Djurfeldt <mdj@linnaeus>
7596
7597 * vports.c (scm_make_soft_port): Initialize pt variable.
7598
7599 2002-08-13 Marius Vollmer <mvo@zagadka.ping.de>
7600
7601 * strports.h (scm_c_eval_string_in_module,
7602 scm_eval_string_in_module): New prototypes.
7603 * strports.c (scm_eval_string_in_module): New, but use
7604 "eval-string" as the Scheme name and make second parameter
7605 optional.
7606 (scm_eval_string): Implement using scm_eval_string_in_module.
7607 (scm_c_eval_string_in_module): New.
7608 Thanks to Ralf Mattes for the suggestion!
7609
7610 2002-08-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7611
7612 * gc-card.c ("sweep_card"): remove SCM_MISC_ERROR messages: print
7613 message and abort.
7614
7615 * gc-mark.c ("scm_gc_mark_dependencies"): idem.
7616
7617 * ports.c ("scm_new_port_table_entry"): return a boxed SCM in
7618 stead of scm_t_port*. The function now takes a tag argument.
7619
7620 2002-08-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7621
7622 * gc.h: add scm_debug_cells_gc_interval to public interface
7623
7624 * gc-card.c ("sweep_card"): set scm_gc_running while sweeping.
7625
7626 * gc.c (scm_i_expensive_validation_check): separate expensive
7627 validation checks from cheap ones.
7628
7629 2002-08-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7630
7631 * read.c (scm_input_error): new function: give meaningful error
7632 messages, and throw read-error
7633
7634 * gc-malloc.c (scm_calloc): add scm_calloc.
7635
7636 2002-08-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7637
7638 * tags.h: remove GC bits documentation from the tags table.
7639
7640 * read.c (INPUT_ERROR): Prepare for file:line:column error
7641 messages for errors in scm_lreadr() and friends.
7642
7643 2002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7644
7645 * gc-malloc.c (scm_malloc): use scm_realloc() (simplifies
7646 implementation).
7647 (scm_gc_calloc): new function
7648
7649 2002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7650
7651 * ports.c (scm_new_port_table_entry): init port entry to 0
7652 completely.
7653
7654 * ports.c (scm_new_port_table_entry): change function from
7655 scm_add_to_port_table. This prevents cells with null-pointers from
7656 being exposed to GC.
7657
7658 * vports.c (scm_make_soft_port) strports.c (scm_mkstrport),
7659 fports.c (scm_fdes_to_port): Use scm_new_port_table_entry().
7660
7661 * gc.c (scm_gc_stats): add cell-yield and malloc-yield statistic
7662 to gc-stats.
7663
7664 * numbers.c (big2str): return "0" for 0 iso. ""
7665
7666 * gc-segment.c, gc-malloc.c gc-mark.c, gc-freelist.c, gc-card.c,
7667 private-gc.h: new file
7668
7669 * gc.c: completely revised and cleaned up the GC. It now uses lazy
7670 sweeping. More documentation in workbook/newgc.text
7671
7672 2002-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7673
7674 * random.c (rstate_free): Return zero.
7675
7676 2002-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
7677
7678 * environments.c (remove_key_from_alist): Removed.
7679
7680 (obarray_remove): Simplified.
7681
7682 2002-07-24 Stefan Jahn <stefan@lkcc.org>
7683
7684 * continuations.h: ia64: Include <signal.h> before
7685 <sys/ucontext.h>.
7686
7687 2002-07-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
7688
7689 * modules.c (scm_sym2var): Don't compare SCM values with ==.
7690
7691 2002-07-21 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7692
7693 * goops.c (scm_compute_applicable_methods): use
7694 scm_remember_upto_here_1 iso scm_remember_upto_here
7695
7696 * macros.c: include deprecation.h
7697
7698 * vectors.c (scm_vector_move_right_x): remove side effect in
7699 macro arg.
7700 (scm_vector_move_left_x): idem.
7701
7702 * net_db.c, posix.c, socket.c: variable naming: change ans to
7703 result.
7704
7705 * sort.c (scm_merge_vector_x): accept vector as argument
7706 iso. SCM*. This is needed for full GC correctness.
7707
7708 * gc.h: undo previous undocumented changes related to #ifdef
7709 GENGC.
7710
7711 2002-07-20 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7712
7713 * *.c: add space after commas everywhere.
7714
7715 * *.c: use SCM_VECTOR_SET everywhere, where a vector is written.
7716 Document cases where SCM_WRITABLE_VELTS() is used.
7717
7718 * vectors.h (SCM_VELTS): prepare for write barrier, and let
7719 SCM_VELTS() return a const pointer
7720 (SCM_VECTOR_SET): add macro.
7721
7722 2002-07-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
7723
7724 * eval.c (SCM_CEVAL), macros.c (macro_print, scm_makmacro,
7725 scm_sym_macro, scm_macro_type), macros.h (scm_makmacro):
7726 Deprecated the special kind of built-in dynamic syntax transformer
7727 that was inaccurately named "macro". Note: The built-in syntax
7728 transformers that are named "mmacro" or "memoizing-macro" still
7729 exist, and it is these which come much closer to what one would
7730 call a macro.
7731
7732 2002-07-13 Neil Jerram <neil@ossau.uklinux.net>
7733
7734 * eval.c (unmemocopy): Fix for
7735 1001-local-eval-error-backtrace-segfaults (unmemoization crash
7736 with internal definitions and local-eval).
7737
7738 2002-07-12 Gary Houston <ghouston@arglist.com>
7739
7740 * dynl.c: Don't define stub procedures if DYNAMIC_LINKING is not
7741 defined. They don't do anything useful, especially since the
7742 only case where DYNAMIC_LINKING is undefined seems to be
7743 when --with-modules=no is given to configure, which is basically
7744 requesting that the "dynamic linking module" be omitted.
7745
7746 * Makefile.am (libguile_la_SOURCES): move dynl.c from
7747 libguile_la_SOURCES to EXTRA_libguile_la_SOURCES.
7748
7749 * extensions.c (load_extension): check DYNAMIC_LINKING for
7750 scm_dynamic_call.
7751 * init.c (scm_init_guile_1): check DYNAMIC_LINKING for
7752 scm_init_dynamic_linking.
7753
7754 2002-07-10 Marius Vollmer <mvo@zagadka.ping.de>
7755
7756 * guile.c, iselect.h, net_db.c, posix.c, socket.c: No need to
7757 check for Cygwin when including <winsock2.h>, this is already
7758 check for by configure. Thus, revert change from 2002-07-07.
7759
7760 2002-07-10 Gary Houston <ghouston@arglist.com>
7761
7762 * eq.c: include <string.h>
7763 * dynl.c: docstring editing.
7764
7765 2002-07-09 Gary Houston <ghouston@arglist.com>
7766
7767 * dynl.c (scm_dynamic_call): docstring editing.
7768
7769 2002-07-08 Rob Browning <rlb@defaultvalue.org>
7770
7771 * gc_os_dep.c: HURD fixes.
7772
7773 2002-07-07 Marius Vollmer <mvo@zagadka.ping.de>
7774
7775 Crosscompiling and Cygwin fixes by Jan Nieuwenhuizen. Thanks!
7776
7777 * Makefile.am: Override default rule for c-tokenize.$(OBJECT);
7778 this should be compiled for BUILD host.
7779 Override default rule for
7780 guile_filter_doc_snarfage$(EEXECT); this should run on BUILD host.
7781 Add missing $(EXEEXT) to guile_filter_doc_snarfage invocation.
7782 (snarf2checkedtexi): Use GUILE_FOR_BUILD instead of preinstguile.
7783
7784 * guile.c, iselect.h, net_db.c, posix.c, socket.c: Do not include
7785 <winsock2.h> on Cygwin even when we have it.
7786
7787 2002-07-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
7788
7789 * __scm.h (SCM_CAUTIOUS), eval.c (scm_eval_args, deval_args,
7790 SCM_CEVAL): Removed compile time option SCM_CAUTIOUS to clean up
7791 the code. Full number of arguments checking of closures is
7792 mandatory now. However, the option to disable the checking has
7793 most probably not been used anyway.
7794
7795 2002-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
7796
7797 * __scm.h (SCM_RECKLESS), backtrace.c (SCM_ASSERT), debug.c
7798 (scm_debug_options), eval.c (scm_lookupcar, scm_lookupcar1,
7799 scm_badargsp, SCM_CEVAL, SCM_APPLY, scm_map, scm_for_each),
7800 feature.c (scm_init_feature), gsubr.c (scm_gsubr_apply), numbers.c
7801 (scm_logand, scm_logior, scm_logxor, scm_i_dbl2big), srcprop.c
7802 (scm_source_properties, scm_set_source_properties_x,
7803 scm_source_property): Removed compile time option SCM_RECKLESS to
7804 clean up the code. Full number of arguments checking of closures
7805 is mandatory now. However, the option to disable the checking has
7806 most probably not been used anyway.
7807
7808 * srcprop.c (scm_source_properties, scm_set_source_properties_x,
7809 scm_source_property): Use !SCM_CONSP instead of SCM_NCONSP.
7810
7811 2002-06-30 Gary Houston <ghouston@arglist.com>
7812
7813 * dynl.c: Removed all SCM_DEFER_INTS/SCM_ALLOW_INTS, which won't
7814 do anything useful. Added a comment about need for a mutex if
7815 pre-emptive threading is supported.
7816
7817 * posix.c (scm_convert_exec_args), dynl.c
7818 (scm_make_argv_from_stringlist): static procs: 1) renamed both to
7819 allocate_string_pointers. 2) simplified: don't reallocate the
7820 strings, just make an array of pointers 3) avoid memory leaks on
7821 error 4) let the procedure report errors in its own name.
7822 Consequences: 1) the procedures now assume that SCM strings are
7823 nul-terminated, which should always be the case. 2) Since strings
7824 are not reallocated, it's now possible for strings passed to
7825 dynamic-args-call to be mutated.
7826
7827 2002-06-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
7828
7829 * __scm.h, eval.c, eval.h: Removed compile time option
7830 MEMOIZE_LOCALS to clean up the code. Now, caching of local
7831 variable positions during memoization is mandatory. However, the
7832 option to disable the caching has most probably not been used
7833 anyway.
7834
7835 2002-06-18 Marius Vollmer <mvo@zagadka.ping.de>
7836
7837 * print.c (scm_simple_format): Print missing part of format before
7838 ~% control. Thanks to Daniel Skarda!
7839
7840 2002-06-01 Marius Vollmer <mvo@zagadka.ping.de>
7841
7842 * mkstemp.c: Added exception notice to license statement.
7843
7844 2002-05-22 Marius Vollmer <mvo@zagadka.ping.de>
7845
7846 * numbers.c (mem2ureal): When returning an inexact zero, make sure
7847 it is represented as a floating point value so that we can change
7848 its sign.
7849
7850 From John W. Eaton <jwe@bevo.che.wisc.edu>
7851
7852 * numbers.c (idbl2str): Don't omit sign when printing negative zero.
7853
7854 2002-05-14 Thien-Thi Nguyen <ttn@giblet.glug.org>
7855
7856 * gc_os_dep.c: For I386/OPENBSD, allow for `__i386__'
7857 in addition to `i386'. Thanks to Dale P. Smith.
7858
7859 2002-05-08 Marius Vollmer <mvo@zagadka.ping.de>
7860
7861 * eq.c (real_eqv): New.
7862 (scm_eqv_p): Use it when comparing reals and complexes.
7863
7864 * numbers.c: Include <string.h>, for strncmp.
7865 (mem2complex): Do not create negative NaNs.
7866 (scm_leq_p, scm_geq_p): Explicitely return #f when comparing a
7867 NaN.
7868 (scm_inexact_to_exact): Signal error when converting a NaN.
7869
7870 2002-05-06 Marius Vollmer <mvo@zagadka.ping.de>
7871
7872 * posix.c (scm_putenv): Handle removing variables explicitely by
7873 calling unsetenv.
7874
7875 From John W. Eaton.
7876
7877 * numbers.h: Conditionally include floatingpoint.h, ieeefp.h, and
7878 nan.h. Provide declarations for scm_inf_p, scm_nan_p, scn_inf,
7879 and scm_nan.
7880 * numbers.c: [SCO && ! HAVE_ISNAN] (isnan): New function.
7881 [SCO && ! HAVE_ISINF] (isinf): New function.
7882 (xisinf, xisnan): New functions.
7883 (IS_INF): Delete.
7884 (isfinite): Define in terms of xisinf.
7885 (scm_inf_p, scm_nan_p): New functions.
7886 (guile_Inf, guile_NaN): New file-scope vars.
7887 (guile_ieee_init): New function.
7888 (scm_inf, scm_nan): New functions.
7889 (idbl2str): Handle Inf and NaN. Remove funny label and
7890 corresponding gotos.
7891 (ALLOW_DIVIDE_BY_ZERO): New macro.
7892 (scm_divide): Allow division by zero to occur if
7893 ALLOW_DIVIDE_BY_ZERO is defined.
7894 Handle bignums and ints as special cases.
7895
7896 Additional stuff by me:
7897
7898 numbers.c (mem2ureal): Recognize "inf.0" and "nan.xxx".
7899 (scm_even_p, scm_odd_p): Treat infinity as even and odd.
7900 (iflo2str): Don't output a '+' for negative numbers or for Inf and
7901 NaN. They will provide their own sign.
7902 (scm_divide): Only allow divides by inexact zeros. Dividing by
7903 exact zeros still signals an errors.
7904
7905 2002-04-22 Thien-Thi Nguyen <ttn@giblet.glug.org>
7906
7907 * goops.h (scm_slot_exists_p): Rename from scm_slots_exists_p.
7908 * goops.c (scm_slot_exists_p): Rename from scm_slots_exists_p.
7909 (scm_slot_exists_p): Rename from scm_slots_exists_p.
7910 Thanks to Andreas Rottmann.
7911
7912 2002-04-20 Gary Houston <ghouston@arglist.com>
7913
7914 * removal of unused fields in root state (thanks to Christopher
7915 Cramer for pointing out the disuse.)
7916 * root.h (scm_root_state): removed def_inp, def_outp, def_errp.
7917 (scm_def_inp, scm_def_outp, scm_def_errp): removed.
7918
7919 * root.c (root_mark): don't mark them.
7920 (scm_make_root): don't set them to #f.
7921 * init.c (scm_init_standard_ports): don't initialise with the
7922 default ports.
7923
7924 2002-04-17 Marius Vollmer <mvo@zagadka.ping.de>
7925
7926 * Makefile.am (EXTRA_DIST): Added cpp_err_symbols.c and
7927 cpp_sig_symbols.c.
7928
7929 2002-04-16 Marius Vollmer <mvo@zagadka.ping.de>
7930
7931 * guile-snarf.in: Do not clean input file. This would write to
7932 the $(srcdir) during a VPATH build, which is not allowed. It also
7933 isn't needed since it only works when an output filename has been
7934 specified and in that case we don't need to clean the input file
7935 because the output file will already exist.
7936
7937 2002-03-31 Marius Vollmer <mvo@zagadka.ping.de>
7938
7939 * guile-snarf: Install the trap for removing $cleanfile only when
7940 the value of $cleanfile is actually known.
7941
7942 2002-04-10 Rob Browning <rlb@defaultvalue.org>
7943
7944 * .cvsignore: add versiondat.h and *.c.clean.c.
7945
7946 2002-03-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
7947
7948 * srcprop.[ch] (scm_c_source_property_breakpoint_p): New
7949 function, replaces macro SRCBRKP.
7950
7951 (SRCBRKP): Deprecated.
7952
7953 * eval.c (SCM_CEVAL): Replaced use of SRCBRKP by call to
7954 scm_c_source_property_breakpoint_p. Removed some use of arg1 as
7955 temporary variable.
7956
7957 2002-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
7958
7959 * debug.h, eval.c: Deprecated CHECK_ENTRY, CHECK_APPLY and
7960 CHECK_EXIT and removed all references to them.
7961
7962 2002-03-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
7963
7964 * debug.h (scm_ready_p, debug_print): Removed declarations.
7965
7966 * eval.c (EVALCELLCAR): Removed.
7967
7968 (SCM_CEVAL): Eliminated label loopnoap. Removed side-effecting
7969 operation from condition.
7970
7971 2002-03-24 Marius Vollmer <mvo@zagadka.ping.de>
7972
7973 * guile-snarf.in: When the output filename is "-", write to
7974 stdout. When no "-o" option is given, use "-" as the output
7975 filename (i.e., stdout). Only 'clean' the inputfile or remove the
7976 output file on error when the output file name is not "-". Define
7977 the preprocessor macro SCM_MAGIC_SNARFER while snarfing.
7978
7979 * Makefile.am (.c.x): Pass "-o $@" to guile-snarf.
7980
7981 2002-03-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
7982
7983 * eval.c (SCM_CEVAL, SCM_APPLY): Eliminated labels wrongnumargs
7984 and the corresponding goto statements. Removed redundant code.
7985
7986 2002-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
7987
7988 * eval.c (SCM_CEVAL): Minimized scope of variable arg2.
7989 Eliminated redundant SCM_IMP check. Exlined call to EVALCAR.
7990 Re-enabled handing of rpsubrs and asubrs.
7991
7992 2002-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
7993
7994 * eval.c (SIDEVAL): Removed.
7995
7996 (SCM_CEVAL): Minimized scope of variable orig_sym. Eliminated
7997 goto-labels cdrxnoap, cdrxbegin and nontoplevel_cdrxnoap. Changed
7998 argument checking order for set! to locals, variables and symbols.
7999 Improvements to control structure. Removed some uses of arg1 and
8000 arg2 as temporary variables.
8001
8002 2002-03-15 Thien-Thi Nguyen <ttn@giblet.glug.org>
8003
8004 * guile-snarf.in: Remove "--compat=1.4" support.
8005 Add "-d" and "-D" support.
8006
8007 (deprecated_list): New var.
8008 (compat_mode_clean_xxx): Delete.
8009 (grep_deprecated): New func.
8010 ("main"): If "-d" or "-D", call `grep_deprecated'.
8011
8012 2002-03-15 Neil Jerram <neil@ossau.uklinux.net>
8013
8014 * hooks.h: Change scm_t_c_hookype_t everywhere to
8015 scm_t_c_hook_type.
8016
8017 Docstring fixes:
8018
8019 * strings.c (scm_string_p): Change unnecessary `iff' to `if'.
8020
8021 * ports.c (scm_sys_make_void_port): Use `@file'.
8022
8023 * numbers.c (scm_number_p, scm_real_p): Use `otherwise' rather
8024 than `else'.
8025
8026 * macros.c (scm_makmacro): Don't say that the form replaces its
8027 source, because it doesn't.
8028 (scm_makmmacro): Clarify difference between this and scm_makmacro.
8029
8030 * backtrace.c (scm_display_error), filesys.c (scm_umask,
8031 scm_select, scm_basename), goops.c (scm_method_generic_function),
8032 numbers.c (scm_integer_length), posix.c (scm_getgroups, scm_execl,
8033 scm_setlocale, scm_flock), socket.c (scm_shutdown): Correct
8034 spelling mistakes.
8035
8036 * debug.c (scm_debug_options), eval.c
8037 (scm_eval_options_interface), read.c (scm_read_options): Change
8038 incorrect @var in docstring to @code.
8039
8040 2002-03-14 Marius Vollmer <mvo@zagadka.ping.de>
8041
8042 * unif.c (singp): Use SCM_REALP instead of SCM_SLOPPY_REALP.
8043
8044 * snarf.h (SCM_SNARF_INIT): Add "^:^" after code so that
8045 guile-snarf can remove trailing non-init code.
8046
8047 * guile-snarf.in (modern_snarf): Remove everything following and
8048 including "^:^" from the output.
8049
8050 2002-03-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
8051
8052 * eval.c (SCM_CEVAL), srcprop.h (SRCBRKP): Eliminated union 't'.
8053
8054 * eval.c (SCM_CEVAL): Exlined call to EVALCAR.
8055
8056 2002-03-13 Thien-Thi Nguyen <ttn@giblet.glug.org>
8057
8058 * guile-snarf.in: Update copyright.
8059 Rewrite to internalize error handling.
8060 Add "--compat=1.4" handling.
8061 Add commentary.
8062
8063 * Makefile.am (libpath.h): Use @top_srcdir_absolute@.
8064 (snarfcppopts): New var.
8065 (.c.x): Use $(snarfcppopts). Rework guile-snarf usage.
8066 (.c.doc): Use $(snarfcppopts).
8067
8068 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
8069 continuations.c, debug-malloc.c, debug.c, deprecation.c, dynl.c,
8070 dynwind.c, environments.c, eq.c, error.c, eval.c, evalext.c,
8071 extensions.c, feature.c, filesys.c, fluids.c, fports.c, gc.c,
8072 goops.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
8073 ioext.c, iselect.c, keywords.c, lang.c, list.c, load.c, macros.c,
8074 modules.c, net_db.c, numbers.c, objects.c, objprop.c, options.c,
8075 pairs.c, ports.c, posix.c, print.c, procprop.c, procs.c,
8076 properties.c, ramap.c, random.c, rdelim.c, read.c, regex-posix.c,
8077 root.c, rw.c, scmsigs.c, script.c, simpos.c, socket.c, sort.c,
8078 srcprop.c, stackchk.c, stacks.c, stime.c, strings.c, strop.c,
8079 strorder.c, strports.c, struct.c, symbols.c, threads.c, throw.c,
8080 unif.c, values.c, variable.c, vectors.c, version.c, vports.c,
8081 weaks.c: Retire inclusion guard macro SCM_MAGIC_SNARFER.
8082
8083 2002-03-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
8084
8085 * eval.c (SCM_CEVAL): Got rid of the last reference to t.lloc.
8086 The next step will be to remove the union 't' and simplify the
8087 code of SCM_CEVAL that way.
8088
8089 2002-03-12 Neil Jerram <neil@ossau.uklinux.net>
8090
8091 * iselect.c (collisionp, gnfds, greadfds, gwritefds, gexceptfds,
8092 rreadfds, rwritefds, rexceptfds): Made static.
8093
8094 * gc.c (terminating), fports.c (terminating): Renamed
8095 scm_i_terminating.
8096
8097 2002-03-11 Marius Vollmer <mvo@zagadka.ping.de>
8098
8099 * numbers.c (scm_divide): Adapt code from libstdc++/f2c to void
8100 potential overflow problems. Thanks to John W Eaton!
8101
8102 * strop.c (string_capitalize_x): Treat characters as unsigned so
8103 that 8-bit chars work. Thanks to David Pirotte!
8104
8105 2002-03-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
8106
8107 * eval.c (SCM_CEVAL): Cleaned up the handling of 'slot-ref',
8108 'slot-set!' and 'nil-cond'. Removed some uses of t.arg1, arg2 and
8109 proc as temporary variables. Introduced temporary variables with
8110 hopefully descriptive names for clarification. Replaced SCM_N?IMP
8111 by a more explicit predicate in some places.
8112
8113 2002-03-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
8114
8115 * eval.c (SCM_CEVAL): Cleaned up the handling of #@dispatch.
8116 Added lots of comments regarding the implementation of #@dispatch.
8117 Changed intra-procedure communication to use t.arg1 instead of
8118 arg2. Removed some uses of t.arg1, t.lloc and proc as temporary
8119 variables. Introduced temporary variables with hopefully
8120 descriptive names for clarification. Replaced SCM_N?IMP by a more
8121 explicit predicate in some places. Use SCM_INSTANCE_HASH instead
8122 of computing the expression explicitly. Eliminate now unused
8123 label nontoplevel_cdrxbegin.
8124
8125 * goops.h (SCM_INSTANCE_HASH): New macro.
8126
8127 * objects.h (SCM_CMETHOD_FORMALS, SCM_CMETHOD_BODY): New macros.
8128
8129 2002-03-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
8130
8131 * Makefile.am (bin_SCRIPTS): Revive this decl, w/ initial element
8132 "guile-snarf" moved back from `noinst_SCRIPTS'.
8133
8134 2002-03-08 Neil Jerram <neil@ossau.uklinux.net>
8135
8136 * srcprop.c (scm_set_source_property_x): If SRCPROPS obj already
8137 exists when adding a source property other than those that are
8138 handled explicitly, add the new property to the SRCPROPS obj's
8139 plist.
8140
8141 * debug.h (SCM_MAX_FRAME_SIZE): Remove incorrect comment about use
8142 of SCM_MAX_FRAME_SIZE as a bit mask; it isn't used like this.
8143
8144 * eval.c (SCM_CEVAL): Don't store scm_debug_eframe_size in
8145 debug.status. It isn't needed, and it can overflow the bits
8146 reserved for it (which may lead to a segv or a GC abort).
8147
8148 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8149
8150 * eval.c (SCM_CEVAL): Cleaned up the handling of 'apply'. Removed
8151 side-effecting operations from conditions and macro calls.
8152 Replaced SCM_N?IMP by a more explicit predicate in some places.
8153 Minimized the scope of some variables.
8154
8155 2002-03-02 Stefan Jahn <stefan@lkcc.org>
8156
8157 * convert.i.c: Fixed int <-> long conversions which would have
8158 failed if their sizes were different.
8159
8160 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8161
8162 * eval.c (SCM_CEVAL): Cleaned up the handling of 'if', 'let',
8163 'letrec' and 'set*': Removed some uses of t.arg1, t.lloc and proc
8164 as temporary variables. Removed side-effecting operations from
8165 conditions and macro calls. Introduced temporary variables with
8166 hopefully descriptive names for clarification. Replaced SCM_N?IMP
8167 by a more explicit predicate in some places. Removed code that
8168 was conditionally compiled if SICP was defined - which it never
8169 is.
8170
8171 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8172
8173 * eval.c (SCM_CEVAL): Cleaned up the handling of 'cons' and 'do':
8174 Removed some uses of t.arg1 and proc as temporary variables.
8175 Removed side-effecting operations from conditions and macro calls.
8176 Introduced temporary variables with hopefully descriptive names
8177 for clarification. Replaced SCM_N?IMP by a more explicit
8178 predicate in some places.
8179
8180 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8181
8182 * eval.c (scm_badargsp, SCM_CEVAL): Replaced SCM_N?IMP by a more
8183 explicit predicate in some places.
8184
8185 (CHECK_EQVISH): Removed.
8186
8187 (SCM_CEVAL): Removed some uses of t.arg1 and proc as temporary
8188 variables. Removed side-effecting operations from conditions and
8189 macro calls. Introduced temporary variables for clarification.
8190 Sorted if-else-if check for the type of the last form in a list by
8191 frequency. Avoided some unnecessary tail-recursion calls.
8192
8193 2002-03-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
8194
8195 * gc.c (SCM_HEAP_SEG_SIZE, CELL_UP, CELL_DN, NEXT_DATA_CELL,
8196 init_heap_seg, alloc_some_heap), gc.h (struct scm_cell, struct
8197 scm_t_cell, SCM_CELLPTR, SCM_GC_CARD_SIZE,
8198 SCM_GC_IN_CARD_HEADERP), tags.h (SCM_CELLP): Renamed the struct
8199 scm_cell and all its uses to scm_t_cell in accordance to Guile's
8200 naming scheme for types.
8201
8202 * alist.c (scm_acons), convert.i.c (CTYPES2UVECT,
8203 CTYPES2UVECT_OPTIONAL), coop-threads.c (scm_call_with_new_thread,
8204 scm_spawn_thread), debug.c (scm_make_debugobj), environments.c
8205 (scm_make_environment), eval.c (scm_closure), fports.c
8206 (scm_fdes_to_port), gc.c (scm_deprecated_newcell,
8207 scm_deprecated_newcell2), inline.h (scm_alloc_cell, scm_cell),
8208 list.c (SCM_I_CONS), numbers.c (scm_i_mkbig), pairs.c (scm_cons),
8209 ports.c (scm_void_port), procs.c (scm_c_make_subr, scm_makcclo),
8210 smob.c (scm_make_smob), smob.h (SCM_NEWSMOB), strings.c
8211 (scm_take_str, scm_allocate_string), strports.c (scm_mkstrport),
8212 unif.c (scm_make_uve), variable.c (make_variable), vectors.c
8213 (scm_c_make_vector), vports.c (scm_make_soft_port): Renamed
8214 scm_alloc_cell to scm_cell.
8215
8216 * environments.c (core_environments_observe), gc.c
8217 (scm_deprecated_newcell2), goops.c (wrap_init, scm_wrap_object),
8218 inline.h (scm_alloc_double_cell, scm_double_cell), num2float.i.c
8219 (FLOAT2NUM), numbers.c (scm_make_real), procs.c
8220 (scm_make_procedure_with_setter), smob.h (SCM_NEWSMOB2,
8221 SCM_NEWSMOB3), struct.c (scm_make_struct, scm_make_vtable_vtable),
8222 symbols.c (scm_mem2symbol, scm_mem2uninterned_symbol), weaks.c
8223 (allocate_weak_vector): Renamed scm_alloc_double_cell to
8224 scm_double_cell.
8225
8226 2002-02-27 Stefan Jahn <stefan@lkcc.org>
8227
8228 * convert.i.c, convert.c: Better range checking.
8229
8230 * inet_aton.c, fports.c: Commented the inclusion of <winsock2.h>.
8231
8232 * deprecation.c (vsnprintf): Define to `_vsnprintf' for
8233 Windows (MinGW).
8234
8235 2002-02-26 Thien-Thi Nguyen <ttn@giblet.glug.org>
8236
8237 * Makefile.am: Update path to pre-inst-guile automake frag.
8238
8239 2002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
8240
8241 * gc.c (scm_gc_sweep): Make it compile even when deprecated
8242 features are excluded.
8243
8244 2002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
8245
8246 * num2integral.i.c (NUM2INTEGRAL): Fixed signedness problem.
8247
8248 2002-02-25 Gary Houston <ghouston@arglist.com>
8249
8250 * convert.c: include <string.h> for convert_i.c.
8251
8252 2002-02-24 Rob Browning <rlb@defaultvalue.org>
8253
8254 * .cvsignore: add stamp-h1.
8255
8256 2002-02-21 Neil Jerram <neil@ossau.uklinux.net>
8257
8258 * unif.c (scm_array_to_list): Correct name, which had been
8259 accidentally changed to scm_t_arrayo_list!
8260
8261 2002-02-20 Mikael Djurfeldt <mdj@linnaeus>
8262
8263 * gc.c (scm_gc_sweep): Print an error message when aborting due to
8264 underflowing scm_mallocated.
8265
8266 2002-02-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8267
8268 * gc.h, gc.c (scm_must_malloc, scm_must_realloc, scm_must_strdup,
8269 scm_must_strndup, scm_done_malloc, scm_done_free, scm_must_free):
8270 Reimplemented using the new scm_gc_malloc, etc., functions and
8271 deprecated.
8272
8273 2002-02-11 Thien-Thi Nguyen <ttn@giblet.glug.org>
8274
8275 * Makefile.am (bin_PROGRAMS): Move `guile_filter_doc_snarfage'
8276 to `noinst_PROGRAMS'.
8277 (bin_SCRIPTS): Move all values to `noinst_SCRIPTS'; delete.
8278 (noinst_PROGRAMS, noinst_SCRIPTS): New.
8279
8280 2002-02-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8281
8282 * gc.h, gc.c (scm_gc_sweep): Issue deprecation warning when
8283 non-zero is returned from a port or smob free function.
8284 (scm_malloc, scm_realloc, scm_strndup, scm_strdup,
8285 scm_gc_register_collectable_memory,
8286 scm_gc_unregister_collectable_memory, scm_gc_malloc,
8287 scm_gc_realloc, scm_gc_free, scm_gc_strndup, scm_gc_strdup): New.
8288
8289 * backtrace.c, continuations.c, convert.i.c, coop-threads.c,
8290 debug-malloc.c, dynl.c, environments.c, environments.h,
8291 extensions.c, filesys.c, fports.c, gc.c, gc.h, gh_data.c, goops.c,
8292 guardians.c, hooks.c, init.c, keywords.c, load.c, numbers.c,
8293 ports.c, posix.c, procs.c, rdelim.c, regex-posix.c, root.c,
8294 smob.c, stime.c, strings.c, struct.c, struct.h, symbols.c, unif.c,
8295 vectors.c, weaks.c: Use scm_gc_malloc/scm_malloc and
8296 scm_gc_free/free instead of scm_must_malloc and scm_must_free, as
8297 appropriate. Return zero from smob and port free functions.
8298
8299 * debug-malloc.c (scm_malloc_reregister): Handle "old == NULL".
8300
8301 * deprecation.h, deprecation.c: Reimplemented to allow deprecation
8302 messages while the GC is running.
8303 (scm_c_issue_deprecation_warning_fmt): New.
8304
8305 * fports.c (scm_setvbuf): Reset read buffer to saved values when
8306 it is pointing to the putback buffer.
8307
8308 2002-02-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
8309
8310 * gsubr.c (create_gsubr): On "too many args" error,
8311 also display arg count and name. Thanks to Bill Schottstaedt.
8312
8313 2002-02-05 Thien-Thi Nguyen <ttn@giblet.glug.org>
8314
8315 * Makefile.am: Include $(top_srcdir)/pre-inst-guile.am.
8316
8317 (bin_SCRIPTS): Remove guile-snarf-docs-texi.
8318 (alldotdocfiles, snarf2checkedtexi, dotdoc2texi): New vars.
8319 (guile.texi, guile-procedures.texi): Use $(dotdoc2texi).
8320
8321 * guile-snarf-docs-texi.in: Bye bye.
8322
8323 2002-02-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8324
8325 * symbols.c (scm_make_symbol): Fix typo in docstring.
8326
8327 * symbols.h (scm_mem2uninterned_symbol, scm_symbol_interned_p,
8328 scm_make_symbol): New prototypes.
8329
8330 2002-02-03 Marius Vollmer <mvo@zagadka.ping.de>
8331
8332 * symbols.h (SCM_SET_SYMBOL_HASH): Removed.
8333 (SCM_SYMBOL_INTERNED_P): New.
8334 * symbols.c (scm_symbol_hash): Use scm_ulong2num instead of
8335 SCM_MAKINUM since hash values can well be bignums.
8336 (scm_mem2symbol): Only use hash values below SCM_T_BITS_MAX/2.
8337 This signals a interned symbol.
8338 (scm_mem2uninterned_symbol, scm_symbol_interned_p,
8339 scm_make_symbol): New.
8340
8341 * print.c (scm_iprin1): Print uninterned symbols unreadably.
8342
8343 2002-02-02 Thien-Thi Nguyen <ttn@giblet.glug.org>
8344
8345 * __scm.h (HAVE_UINTPTR_T): Only define if UINTPTR_T attributes
8346 are defined: UINTPTR_MAX, INTPTR_MAX, INTPTR_MIN.
8347 Thanks to Dave Love.
8348
8349 2002-01-31 Marius Vollmer <mvo@zagadka.ping.de>
8350
8351 * symbols.c (scm_gensym): Use " g" as default prefix, not "g".
8352 This might help to make unintended clashes less likely.
8353 (scm_string_to_symbol): Protect the string until the symbols is
8354 created.
8355
8356 2002-01-31 Stefan Jahn <stefan@lkcc.org>
8357
8358 * convert.c, convert.h, convert.i.c: New files containing C
8359 array to Scheme conversion helpers meant to be replacement
8360 functions for the deprecated gh interface.
8361
8362 * Makefile.am: Setup rules for new `convert.*' files.
8363
8364 2002-01-28 Stefan Jahn <stefan@lkcc.org>
8365
8366 * symbols.c (scm_c_symbol2str): New function, replacement for
8367 `gh_scm2newsymbol()'.
8368
8369 * strings.c (scm_c_substring2str): New function. Proper
8370 replacement for `gh_get_substr()'.
8371
8372 * socket.c: Include `stdint.h' if available for the `uint32_t'
8373 declaration.
8374
8375 * scmsigs.c (scm_sigaction): Initialize `chandler' (inhibits
8376 compiler warning).
8377
8378 * backtrace.c: Include `lang.h' for GUILE_DEBUG conditional.
8379
8380 2002-01-22 Neil Jerram <neil@ossau.uklinux.net>
8381
8382 Other changes unrelated to Elisp...
8383
8384 * eval.c (scm_m_if): Use s_if rather than repeating string literal
8385 "if".
8386 (comments): Fix a few typos.
8387 (scm_for_each): Add parentheses around oddly unparenthesized
8388 if/while conditions.
8389
8390 * read.c (scm_read_opts): Add full stop at end of doc for
8391 `keywords' option.
8392
8393 * script.c (scm_compile_shell_switches): Use scm_str2symbol
8394 instead of gh_symbol2scm.
8395
8396 * srcprop.h (SRCPROPBRK): Return C type rather than SCM.
8397 (SRCBRKP): Use SRCPROPBRK rather than duplicating its logic.
8398
8399 * srcprop.c (scm_srcprops_to_plist, scm_source_property): Change
8400 SRCPROPBRK (x) to SCM_BOOL (SRCPROPBRK (x)).
8401
8402 First batch of changes for Elisp support...
8403
8404 * alist.c, async.c, boolean.c, dynl.c, eval.c, filesys.c,
8405 fluids.c, list.c, load.c, options.c, posix.c, print.c, sort.c,
8406 throw.c, vectors.c, weaks.c: Add #include for lang.h.
8407
8408 * eval.c, eval.h, init.c, lang.c, lang.h: Use SCM_ENABLE_ELISP to
8409 conditionalize compilation and initialization of Elisp support
8410 function.
8411
8412 * alist.c (scm_assq, scm_assv, scm_assoc), async.c
8413 (scm_asyncs_pending, scm_run_asyncs, noop), backtrace.c
8414 (scm_set_print_params_x), dynl.c (scm_make_argv_from_stringlist),
8415 filesys.c (fill_select_type, retrieve_select_type), fluids.c
8416 (scm_swap_fluids, scm_swap_fluids_reverse), list.c (scm_null_p,
8417 scm_ilength, scm_append_x, scm_last_pair, scm_reverse,
8418 scm_reverse_x, scm_list_ref, scm_list_set_x, scm_list_cdr_set_x,
8419 scm_c_memq, scm_memv, scm_member), load.c (scm_search_path),
8420 options.c (change_option_setting, scm_options), posix.c
8421 (environ_list_to_c), print.c (scm_iprlist), throw.c
8422 (scm_exit_status), vectors.c (scm_vector), weaks.c
8423 (scm_weak_vector): Use SCM_NULL_OR_NIL_P instead of SCM_NULLP.
8424
8425 * boolean.c (scm_not): Use `SCM_FALSEP || SCM_NILP' instead of
8426 just SCM_FALSEP.
8427
8428 * boolean.c (scm_boolean_p): Use `SCM_BOOLP || SCM_NILP' instead
8429 of just SCM_BOOLP.
8430
8431 * eval.c (scm_lisp_nil, scm_lisp_t, s_nil_ify, scm_m_nil_ify,
8432 s_t_ify, scm_m_t_ify, s_0_cond, scm_m_0_cond, s_0_ify,
8433 scm_m_0_ify, s_1_ify, scm_m_1_ify): Removed.
8434 (scm_m_atfop): Support function aliasing. Support both function
8435 args, which need transformation, and macro args, which do not.
8436 Add explanatory comments.
8437 (SCM_CEVAL): In switch cases for SCM_IM_AND, SCM_IM_COND,
8438 SCM_IM_DO, SCM_IM_IF and SCM_IM_OR, add `|| SCM_NILP' to existing
8439 checks for SCM_FALSEP. In switch case for SCM_IM_NIL_COND, use
8440 SCM_NULLP || SCM_NILP instead of checks against (removed)
8441 scm_lisp_nil. Removed switch cases for SCM_IM_NIL_IFY,
8442 SCM_IM_T_IFY, SCM_IM_0_COND, SCM_IM_0_IFY, SCM_IM_1_IFY.
8443
8444 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
8445 scm_m_while, scm_nil_eq): Commented out; I don't think we need
8446 these, but I don't want to remove them yet, just in case.
8447 (scm_init_lang): Define `%nil' variable on Scheme level to hold
8448 Elisp nil value.
8449
8450 * lang.h (SCM_NILP): Test against Elisp nil value instead of
8451 against (removed) scm_lisp_nil.
8452 (SCM_NILNULLP, SCM_NIL2EOL, SCM_EOL2NIL): Commented out.
8453 (SCM_NULL_OR_NIL_P): New.
8454
8455 * list.c (scm_append): Use SCM_VALIDATE_NULL_OR_NIL instead of
8456 SCM_VALIDATE_NULL.
8457
8458 * print.c (scm_isymnames): Fix comment. Remove #@nil-ify,
8459 #@t-ify, #@0-cond, #@0-ify, #@1-ify. Add #nil (for SCM_ELISP_NIL
8460 value).
8461
8462 * sort.c (scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
8463 scm_sort_x, scm_sort, scm_stable_sort_x, scm_stable_sort): Use
8464 SCM_NULL_OR_NIL_P instead of SCM_NULLP. In constructions like `if
8465 (SCM_NULLP (x)) return SCM_EOL;', return x rather than SCM_EOL.
8466
8467 * tags.h (SCM_IM_NIL_IFY, SCM_IM_T_IFY, SCM_IM_0_COND,
8468 SCM_IM_0_IFY, SCM_IM_1_IFY): Removed.
8469 (SCM_IM_BIND, SCM_IM_DELAY, SCM_IM_CALL_WITH_VALUES, SCM_UNBOUND):
8470 Numbering shifted down accordingly.
8471 (SCM_ELISP_NIL): New IFLAG.
8472
8473 * validate.h (SCM_VALIDATE_NULL_OR_NIL): New.
8474
8475 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
8476
8477 * eval.c: Removed outdated references to "everr". Improved some
8478 comments.
8479
8480 (scm_deval_args, deval_args): Renamed scm_deval_args to
8481 deval_args, since it is not part of the interface.
8482
8483 (SCM_CEVAL): Added (maybe somewhat verbose) comment. Avoid to
8484 use references to debug.vect[0] before it exists. Add parentheses
8485 to switch statement.
8486
8487 * goops.h: Added local emacs variables.
8488
8489 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
8490
8491 * eval.[ch] (scm_deval_args): Made static.
8492
8493 * srcprop.c (scm_source_property): Remove redundant SCM_IMP
8494 test.
8495
8496 * strings.c (scm_c_string2str): Clarified comment. Replaced
8497 THINKME by FIXME for uniformness. Removed question about whether
8498 arguments need to be protected from garbage collection: Arguments
8499 must be protected as any other variable.
8500
8501 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
8502
8503 * procs.h (SCM_CLOSURE_BODY): New Macro.
8504
8505 * debug.c (scm_procedure_name, scm_procedure_source), eval.c
8506 (SCM_CEVAL, SCM_APPLY), goops.c (scm_sys_initialize_object,
8507 get_slot_value, set_slot_value), procs.c
8508 (scm_procedure_documentation), sort.c (closureless), stacks.c
8509 (get_applybody): Replace SCM_CDR (SCM_CODE (...)) by
8510 SCM_CLOSURE_BODY.
8511
8512 * sort.c (closureless): Prefer !SCM_FOOP over SCM_NFOOP.
8513
8514 2001-12-26 Marius Vollmer <mvo@zagadka.ping.de>
8515
8516 * Makefile.am (guile-procedures.txt): When we don't have makeinfo,
8517 use "cp" instead.
8518
8519 2001-12-16 Marius Vollmer <mvo@zagadka.ping.de>
8520
8521 * stacks.c, stacks.h (scm_t_stackype): Renamed to scm_stack_type
8522 everywhere.
8523
8524 * continuations.c (scm_make_continuation): Do not retain the
8525 throw_value when the continuation is invoked.
8526
8527 2001-12-08 Stefan Jahn <stefan@lkcc.org>
8528
8529 * strings.c (scm_c_string2str): New function. Converts a
8530 given Scheme string into a C string. Also put in two
8531 THINKME's regarding the malloc policy for the missing converter
8532 routines.
8533
8534 2001-12-01 Neil Jerram <neil@ossau.uklinux.net>
8535
8536 * gh_data.c (gh_module_lookup): Use scm_str2symbol rather than
8537 gh_symbol2scm.
8538
8539 2001-11-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
8540
8541 * gc.h (SCM_GC_CELL_WORD, SCM_GC_CELL_OBJECT,
8542 SCM_GC_SET_CELL_WORD, SCM_GC_SET_CELL_OBJECT): New macros.
8543
8544 (SCM_GC_CELL_TYPE, SCM_CELL_WORD, SCM_CELL_OBJECT,
8545 SCM_SET_CELL_WORD, SCM_SET_CELL_OBJECT, SCM_FREE_CELL_CDR,
8546 SCM_GC_SET_CELL_OBJECT): Express in terms of SCM_GC_CELL_*
8547 macros.
8548
8549 (SCM_FREE_CELL_P): Express in terms of SCM_GC_CELL_TYPE.
8550
8551 * inline.h (scm_alloc_cell, scm_alloc_double_cell): Use
8552 SCM_GC_CELL_* macros when accessing free cells.
8553
8554 2001-11-25 Marius Vollmer <mvo@zagadka.ping.de>
8555
8556 * vectors.h (SCM_MAKE_VECTOR_TAG): New.
8557 * unif.h (SCM_MAKE_BITVECTOR_TAG, SCM_MAKE_UVECTOR_TAG): New.
8558 * symbols.h (SCM_MAKE_SYMBOL_TAG): New.
8559 * strings.h (SCM_MAKE_STRING_TAG): New.
8560 * procs.h (SCM_MAKE_CCLO_TAG): New.
8561 * numbers.h (SCM_MAKE_BIGNUM_TAG): New.
8562
8563 * goops.h: Replaced SCM_DEBUG_DEPRECATED with
8564 !SCM_ENABLE_DEPRECATED.
8565
8566 * async.c, async.h (scm_system_async_mark_from_signal_handler):
8567 New.
8568
8569 * scmsigs.c (scm_take_signal): Removed all code that assumes that
8570 signal handlers are allowed to divert the flow of control. Call
8571 scm_system_async_mark_from_signal_handler instead of
8572 scm_system_async_mark.
8573
8574
8575 Deprecated SCM_NEWCELL and SCM_NEWCELL2. Added scm_alloc_cell and
8576 scm_alloc_double_cell in their place.
8577
8578 * gc.h (SCM_GC_SET_ALLOCATED, scm_debug_newcell,
8579 scm_debug_newcell2, scm_tc16_allocated): Removed from header.
8580 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
8581 (SCM_NEWCELL, SCM_NEWCELL2): Implement in terms of
8582 scm_deprecated_newcell and scm_deprecated_newcell2.
8583
8584 gc.c (scm_tc16_allocated): Only define when including deprecated
8585 features.
8586 (scm_debug_newcell, scm_debug_newcell2): Removed.
8587 (scm_init_storage): Do not initialize scm_tc16_allocated.
8588 (scm_init_gc): Do it here.
8589 (allocated_mark): New, from old code.
8590 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
8591
8592 * inline.c, inline.h: New files.
8593 * Makefile.am: Added them in all the right places.
8594
8595 * _scm.h: Include "libguile/inline.h".
8596
8597 * alist.c, coop-threads.c, debug.c, environments.c, eval.c,
8598 fports.c, gh_data.c, goops.c, guardians.c, lang.c, list.c,
8599 num2float.i.c, numbers.c, pairs.c, ports.c, print.c, procs.c,
8600 smob.c, smob.h, strings.c, strports.c, struct.c, symbols.c,
8601 unif.c, variable.c, vectors.c, vports.c, weaks.c: Replaced
8602 SCM_NEWCELL and SCM_NEWCELL2 with scm_alloc_cell and
8603 scm_alloc_double_cell, respectively.
8604
8605 2001-11-23 Marius Vollmer <mvo@zagadka.ping.de>
8606
8607 * modules.c (scm_c_use_module): Adapt to changes to
8608 `process-use-modules'.
8609
8610 2001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
8611
8612 * numbers.c (scm_divide): Fix more division by zero errors.
8613
8614 2001-11-21 Gary Houston <ghouston@arglist.com>
8615
8616 * Makefile.am (OMIT_DEPENDENCIES): removed, since it seems to be
8617 obsolete. autogen.sh says:
8618 invalid unused variable name: `OMIT_DEPENDENCIES'
8619
8620 2001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
8621
8622 * numbers.c (scm_divide): Fix (/ 0). Thanks to Keith Wright for
8623 reporting the bug.
8624
8625 2001-11-21 Marius Vollmer <mvo@zagadka.ping.de>
8626
8627 * Makefile.am (install-exec-hook): Prepend $(DESTDIR) to filename.
8628 Thanks to Eric Gillespie, Jr!
8629
8630 2001-11-21 Stefan Jahn <stefan@lkcc.org>
8631
8632 * win32-socket.c (getservent, setservent, endservent,
8633 getprotoent, setprotoent, endprotoent): New functions.
8634 Appropriate replacements for M$-Windows.
8635
8636 * numbers.c (SIZE_MAX, PTRDIFF_MAX, PTRDIFF_MIN): Reintroduced
8637 these definitions for GUILE_DEBUG.
8638
8639 * net_db.c: Include "win32-socket.h" if compiling with a native
8640 M$-Windows compiler. Include some pieces of code (protoent and
8641 servent interface) protected by HAVE_* macros when using a
8642 native M$-Windows compiler.
8643
8644 2001-11-20 Marius Vollmer <mvo@zagadka.ping.de>
8645
8646 * modules.c (scm_c_export): Do nothing when the first argument is
8647 already the terminating NULL. Thanks to Han-Wen Nienhuys!
8648
8649 2001-11-20 Thien-Thi Nguyen <ttn@glug.org>
8650
8651 * Makefile.am (libpath.h): In SCM_BUILD_INFO,
8652 also include `buildstamp'.
8653
8654 2001-11-18 Rob Browning <rlb@defaultvalue.org>
8655
8656 * version.c
8657 (s_scm_major_version): use SCM_MAJOR_VERSION.
8658 (s_scm_minor_version): use SCM_MINOR_VERSION.
8659 (s_scm_micro_version): use SCM_MICRO_VERSION.
8660 (s_scm_version): use SCM_MAJOR_VERSION, SCM_MINOR_VERSION, and
8661 SCM_MICRO_VERSION.
8662
8663 * version.h.in
8664 (SCM_MAJOR_VERSION): renamed from SCM_GUILE_MAJOR_VERSION.
8665 (SCM_MINOR_VERSION): renamed from SCM_GUILE_MINOR_VERSION.
8666 (SCM_MICRO_VERSION): renamed from SCM_GUILE_MICRO_VERSION.
8667
8668 2001-11-18 Neil Jerram <neil@ossau.uklinux.net>
8669
8670 * vectors.c (scm_vector_move_left_x, scm_vector_move_right_x):
8671 Rewrite docstrings without reference to substring-move-left/right,
8672 since the latter no longer exist.
8673
8674 2001-11-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
8675
8676 * eval.c: Removed bogus comment about acros.
8677
8678 (scm_unmemocar): Use !SCM_CONSP instead of SCM_IMP.
8679 Minimize scope of local variable. Eliminate dependency on
8680 macro DEBUG_EXTENSIONS.
8681
8682 (s_splicing): New error message string.
8683
8684 (scm_m_body): Issue 'bad body' message rather than 'missing
8685 expression' message.
8686
8687 (scm_m_quote): Eliminate unnecessary copying.
8688
8689 (scm_m_lambda, scm_m_letstar, scm_m_letrec, scm_m_let): Leave the
8690 checking of the body to scm_m_body.
8691
8692 (scm_m_do): Move comment to function header. Rename arg1 to
8693 binding. Made the code a bit easier to read.
8694
8695 (evalcar): Removed.
8696
8697 (iqq): Added a comment. Changed the depth parameter to
8698 unsigned. Use size_t for vector lengths. Make sure vector object
8699 is gc protected as long as its contents are read. Add some syntax
8700 checks. Get rid of unnecessary SCM_IMP test. Clean up the
8701 control structure a bit.
8702
8703 (scm_m_delay): Added comment about the implementation of
8704 scm_m_delay.
8705
8706 (scm_m_define): Add comment about guile's currying define
8707 syntax. Renamed 'proc' to 'name'. Eliminate dependency on macro
8708 DEBUG_EXTENSIONS. Simplified code a bit. Eliminate SICP code.
8709
8710 (scm_m_letrec1): Removed. Part of the functionality is taken
8711 over by the new function 'transform_bindings'.
8712
8713 (transform_bindings): New function. Takes over some of the
8714 functionality of removed function 'scm_m_letrec1', namely to split
8715 a list of bindings into a reversed list of variables and a list of
8716 initializers.
8717
8718 (scm_m_letrec): Call 'transform_bindings'.
8719
8720 (scm_m_let): Minimized scope of local variables. Renamed 'proc'
8721 to 'temp' and 'arg1' to 'binding'. Eliminated redundant SCM_NIMP
8722 test. Use 'transform_bindings'. Fixed scoping error with named
8723 let (Thanks to Aubrey Jaffer for reporting the bug and to Neil
8724 Jerram for suggesting the fix). Cleaned up the control structure
8725 a bit.
8726
8727 (scm_m_expand_body): Use 'transform_bindings'. Eliminated
8728 unnecessary consing. Eliminated unnecessary
8729 SCM_DEFER/ALLOW_INTS.
8730
8731 (SCM_CEVAL): Un-obfuscated some loops.
8732
8733 2001-11-16 Neil Jerram <neil@ossau.uklinux.net>
8734
8735 * gc.h (scm_unhash_name): Old declaration removed.
8736
8737 * eval.c (s_scm_eval): Change @var{primitive-eval} to
8738 @code{primitive-eval}.
8739
8740 * feature.c, vectors.c, net_db.c, unif.c, weaks.c, struct.c,
8741 version.c, alist.c, ports.c, ramap.c, unif.c, strings.c, list.c:
8742 Change @deffnx lines in docstrings to say {Scheme Procedure}
8743 rather than primitive or procedure.
8744
8745 * posix.c (scm_execl), filesys.c (scm_close), unif.c
8746 (scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
8747 scm_bit_set_star_x, scm_bit_invert_x), ramap.c (scm_array_fill_x,
8748 scm_array_for_each, scm_array_index_map_x), vectors.c (scm_vector,
8749 scm_make_vector, scm_vector_to_list, scm_vector_fill_x), strop.c
8750 (scm_string_split, scm_string_ci_to_symbol), strings.c
8751 (scm_string_p), sort.c (scm_merge), print.c (scm_newline),
8752 macros.c (scm_macro_type), alist.c (scm_acons, scm_assq):
8753 Docstring fixes and improvements reflecting edits that have been
8754 made in the reference manual source.
8755
8756 * objprop.c (scm_object_properties, scm_set_object_properties_x,
8757 scm_object_property, scm_set_object_property_x): Remove invalid
8758 @deffnx lines for corresponding procedure property primitives.
8759
8760 These changes add a @deffnx C function declaration and function
8761 index entries for each Guile primitive to the copy of the doc
8762 snarf output that is used for reference manual synchronization.
8763 Online help is unchanged.
8764
8765 * snarf.h (SCM_SNARF_DOCS): Output primitive's C function name.
8766 (SCM_DEFINE, SCM_DEFINE1, SCM_REGISTER_PROC): Supply to C function
8767 name to SCM_SNARF_DOCS.
8768
8769 * guile-snarf-docs-texi.in: Pass the shell script's arguments into
8770 snarf-check-and-output-texi.
8771
8772 * Makefile.am (guile-procedures.texi): New rule.
8773 (BUILT_SOURCES, guile.texi, guile-procedures.txt, CLEANFILES):
8774 Changed so that the last stage of doc snarfing is now performed
8775 twice, once to produce guile-procedures.txt for online help, and
8776 once to produce guile.texi for reference manual synchronization.
8777
8778 2001-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
8779
8780 * eval.c (RETURN): Wrap in do{}while(0) in order to make it
8781 safely usable as a single statement followed by a ';', for example
8782 in an if statement.
8783
8784 (SCM_CEVAL, SCM_APPLY): Clean up code using 'RETURN'.
8785
8786 2001-11-13 Neil Jerram <neil@ossau.uklinux.net>
8787
8788 * random.c (scm_random_solid_sphere_x,
8789 scm_random_hollow_sphere_x): Correct "shere" typos.
8790
8791 * hashtab.c (scm_hash_fold): Add missing apostrophe to docstring.
8792
8793 * version.c (scm_version): Update docstring to include
8794 `micro-version'.
8795
8796 2001-11-13 Marius Vollmer <mvo@zagadka.ping.de>
8797
8798 * modules.c (scm_c_export): Call va_end after collecting the
8799 symbols.
8800
8801 * strop.h, strop.c (scm_substring_move_left_x,
8802 scm_substring_move_right_x): Removed.
8803
8804 * __scm.h (HAVE_UINTPTR_T, HAVE_PTRDIFF_T, HAVE_LONG_LONG,
8805 HAVE_LONG_LONGS): Define to "1" when defining them, to mirror what
8806 configure does.
8807
8808 2001-11-12 Marius Vollmer <mvo@zagadka.ping.de>
8809
8810 * numbers.c: Document macros to define when including
8811 num2integral.i.c. MAX_VALUE and MIN_VALU are no longer used, we
8812 now rely on SIZEOF_ macros that have been figured out at
8813 configure time.
8814
8815 * num2integral.i.c: Adapt to new interface.
8816 (NUM2INTEGRAL): Test whether a fixnum can be represented in the
8817 target type by casting it and checking whether it is still the
8818 same. Do not try to handle bignums for integral types that are
8819 smaller than fixnums. When handling bignums, collect the
8820 magnituse first into a unsigned type, and correctly check for
8821 overflow.
8822 (INTEGRAL2BIG): Do not use MIN_VALUE explicitely by observing that
8823 only -MIN_VALUE can still be negative of all negative numbers (in
8824 twos-complement).
8825
8826 * tags.h (SIZEOF_SCM_T_BITS): Define it appropriately.
8827
8828 * __scm.h: Define HAVE_UINTPTR_T, HAVE_PTRDIFF_T and
8829 HAVE_LONG_LONG depending on whether their size is non-zero.
8830
8831 2001-11-11 Thien-Thi Nguyen <ttn@glug.org>
8832
8833 * strop.c (scm_string_null_p): Docfix; nfc.
8834 Thanks to Scott Lenser.
8835
8836 2001-11-07 Neil Jerram <neil@ossau.uklinux.net>
8837
8838 * extensions.c (scm_load_extension): Canonicalize docstring
8839 whitespace.
8840
8841 * unif.c (scm_uniform_array_write), ports.c
8842 (scm_current_output_port, scm_force_output), dynwind.c
8843 (scm_dynamic_wind), scmsigs.c (scm_setitimer, scm_getitimer),
8844 filesys.c (scm_open, scm_lstat), struct.c
8845 (scm_make_struct_layout), random.c (scm_random,
8846 scm_random_solid_sphere_x, scm_random_hollow_sphere_x, strop.c
8847 (scm_i_index): Remove superfluous whitespace from end of docstring
8848 lines.
8849
8850 * filesys.c (scm_select), guardians.c (scm_guardian_greedy_p),
8851 strings.c (scm_make_string), variable.c (scm_make_variable,
8852 scm_make_undefined_variable, scm_variable_p, scm_variable_set_x,
8853 scm_variable_bound_p), scmsigs.c (scm_setitimer, scm_getitimer),
8854 posix.c (scm_crypt), struct.c (scm_make_vtable_vtable), hashtab.c
8855 (scm_hash_fold), ports.c (scm_port_for_each): Remove superfluous
8856 newline at end of docstrings.
8857
8858 * modules.c (scm_set_current_module): Add missing newline to
8859 docstring.
8860
8861 2001-11-07 Stefan Jahn <stefan@lkcc.org>
8862
8863 * win32-socket.[ch]: New files. Defines Winsock-API error codes
8864 and makes them available through Guile. That is because the
8865 Winsock-API does not store its errors in `errno' and thus cannot
8866 return error messages via `strerror (errno)'.
8867
8868 * socket.c (scm_init_socket): Initialize `win32-socket' part
8869 here under M$-Windows.
8870
8871 * numbers.h: Added missing declaration of
8872 `scm_sys_check_number_conversions()'.
8873
8874 * error.c: Local definition of SCM_I_STRERROR and SCM_I_ERRNO
8875 and use in `(strerror)' and `(system-error)'.
8876
8877 * Makefile.am (EXTRA_libguile_la_SOURCES): Added
8878 `win32-socket.[ch]' to extra source and header files.
8879
8880 2001-11-06 Marius Vollmer <mvo@zagadka.ping.de>
8881
8882 * script.c (scm_shell_usage, scm_compile_shell_switches): Prepend
8883 a call to turn-on-debugging when --debug has been given instead of
8884 turning it on directly. Also, handle new `--no-debug' option,
8885 which might suppress the call to turn-on-debugging.
8886
8887 2001-11-05 Stefan Jahn <stefan@lkcc.org>
8888
8889 * struct.c (s_scm_struct_vtable_p): Corrected docstring.
8890
8891 2001-11-04 Stefan Jahn <stefan@lkcc.org>
8892
8893 * Makefile.am (libguile_la_LIBADD): Added $(THREAD_LIBS_LOCAL)
8894 here (was at guile_LDADD) which describes the dependency
8895 correctly and allows a clean build on Win32.
8896
8897 * __scm.h (SCM_API): Follow-up patch. Renamed __FOO__ macros
8898 into FOO.
8899
8900 * __scm.h: USE_DLL_IMPORT indicates the usage of the DLL
8901 import macros for external libraries (libcrypt, libqthreads,
8902 libreadline and libregex).
8903
8904 * coop-defs.h: Include <winsock2.h> for `struct timeval'.
8905
8906 * posix.c (flock): Added support for flock() in M$-Windows.
8907
8908 * guile.c (SCM_IMPORT): Follow-up patch. Use SCM_IMPORT instead
8909 of __SCM_IMPORT__.
8910
8911 * fports.c (getflags): Differentiate reading and writing pipes
8912 descriptors.
8913
8914 * filesys.c (S_IS*): Redefine all of the S_IS*() macros for
8915 M$-Windows.
8916
8917 * coop.c (coop_condition_variable_timed_wait_mutex): Use
8918 conditionalized error code if `ETIMEDOUT' is not available.
8919 (scm_thread_usleep): Remove bogus declaration of `struct timeval
8920 timeout'.
8921
8922 * numbers.c (PTRDIFF_MIN): Moved this definition where it actually
8923 belongs. That is because NO_PREPRO_MAGIC gets undefined after
8924 each inclusion of `num2integral.i.c'.
8925 (SIZE_MAX): Define NO_PREPRO_MAGIC if SIZE_MAX is undefined.
8926
8927 2001-11-03 Marius Vollmer <mvo@zagadka.ping.de>
8928
8929 * eval.c (scm_m_begin): Allow `(begin)`, with no subforms.
8930 (SCM_CEVAL): Evaluate an empty `begin' to SCM_UNSPECIFIED.
8931
8932 2001-11-02 Mikael Djurfeldt <mdj@linnaeus>
8933
8934 * print.c (scm_iprin1): Mark print state as revealed when
8935 dispatching to generic write or display.
8936
8937 * unif.c (scm_ra2contig): Fixed memory overwrite bug.
8938
8939 2001-11-02 Marius Vollmer <mvo@zagadka.ping.de>
8940
8941 Support for native Win32. Thanks to Stefan Jahn!
8942
8943 * Makefile.am: Add win32-uname.c, win32-uname.h, win32-dirent.c
8944 and win32-dirent.h to extra source and header files. These
8945 include the uname() and the POSIX dirent interface implementation
8946 for M$-Windows. Put `-no-undefined' into LDFLAGS to support
8947 linkers which do not allow unresolved symbols inside shared
8948 libraries. Corrected `guile_filter_doc_snarfage$(EXEEXT)'
8949 dependency.
8950
8951 * __scm.h: Defined SCM_API. This macro gets prepended to all
8952 function and data definitions which should be exported or imported
8953 in the resulting dynamic link library in the Win32 port.
8954
8955 * __scm.h, alist.h, arbiters.h, async.h, backtrace.h, boolean.h,
8956 chars.h, continuations.h, coop-defs.h, coop-threads.h,
8957 debug-malloc.h, debug.h, deprecation.h, dynl.h, dynwind.h,
8958 environments.h, eq.h, error.h, eval.h, evalext.h, extensions.h,
8959 feature.h, filesys.h, fluids.h, fports.h, gc.h, gdb_interface.h,
8960 gdbint.h, gh.h, goops.h, gsubr.h, guardians.h, hash.h, hashtab.h,
8961 hooks.h, init.h, ioext.h, iselect.h, keywords.h, lang.h, list.h,
8962 load.h, macros.h, mallocs.h, modules.h, net_db.h, numbers.h,
8963 objects.h, objprop.h, options.h, pairs.h, ports.h, posix.h, print.h,
8964 procprop.h, procs.h, properties.h, ramap.h, random.h, rdelim.h,
8965 read.h, regex-posix.h, root.h, rw.h, scmsigs.h, script.h, simpos.h,
8966 smob.h, socket.h, sort.h, srcprop.h, stackchk.h, stacks.h, stime.h,
8967 strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h,
8968 tags.h, threads.h, throw.h, unif.h, values.h, variable.h, vectors.h,
8969 vports.h, weaks.h:
8970 Prefixed each each exported symbol with SCM_API.
8971
8972 * continuations.c: Added comment about the use of the extern
8973 declarations of {get,set}context() functions used in the ia64 port.
8974
8975 * continuations.h, gc.c: `__libc_ia64_register_backing_store_base'
8976 is meant to be a `unsigned long *'.
8977
8978 * filesys.c: Include `direct.h' if possible. Use local
8979 `win32-dirent.h' for the native M$-Windows port. Define S_IS*()
8980 macros for M$-Windows. Implementation of `fstat_Win32()' which is
8981 able to differentiate between sockets and other file descriptors.
8982 Use this function as wrapper in `scm_fstat()'. Fixed typo in
8983 `scm_dirname()'.
8984
8985 * fports.c: Include `io.h' is possible. Put `*fp' into referring
8986 statement block in `scm_fport_buffer_add()'.
8987 Some corrections in `getflags()'.
8988
8989 * gdb_interface.h (GDB_INTERFACE): Also support __CYGWIN__.
8990
8991 * guile.c: Make sure to define __SCM_IMPORT__ for shared library
8992 build on Win32. Disable preloaded symbols on Win2 platforms.
8993
8994 * ioext.c, ports.c: Include `io.h' is possible.
8995
8996 * mkstemp.c: Include `process.h' is possible.
8997
8998 * net_db.c: Disable extern declaration of `h_errno' for __CYGWIN__,
8999 too.
9000 Put `scm_return_entry()' into HAVE_GETSERVENT conditional.
9001
9002 * posix.c: Remove unnecessary dirent includes and defines. Include
9003 local `win32-uname.h' for MinGW. Extern declaration of
9004 `mkstemp()' for systems where it does not exists. Make
9005 `getlogin()' available on M$-Windows.
9006
9007 * scmsigs.c: Made `usleep()' avalable on MinGW.
9008
9009 * stime.c: On M$-Windows `tzname[]' is known to be `_tzname[]'.
9010
9011 * win32-dirent.c: Include "win32-dirent.h", not "dirent.h".
9012
9013 * win32-uname.c: Include "win32-uname.h", not "uname.h".
9014
9015 2001-10-28 Mikael Djurfeldt <mdj@linnaeus>
9016
9017 * unif.c (scm_uniform_array_read_x, scm_uniform_array_write):
9018 Don't apply scm_uniform_vector_length on arrays.
9019
9020 2001-10-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
9021
9022 * eval.c (scm_lookupcar, scm_m_letstar, scm_m_do, iqq,
9023 scm_m_define, scm_m_letrec1, scm_m_let, scm_m_expand_body,
9024 scm_macroexp, unmemocopy, scm_eval_args, scm_deval_args,
9025 SCM_CEVAL, scm_map, scm_init_eval): When building lists, prefer
9026 scm_list_<n> over scm_cons[2]?.
9027
9028 (scm_unmemocar, scm_m_cond, scm_m_letstar, scm_m_letrec1,
9029 scm_m_let, scm_m_atbind, unmemocopy, SCM_CEVAL, SCM_APPLY): Use
9030 SCM_C[AD][AD]R instead of explicit form.
9031
9032 (scm_m_set_x, scm_m_cond, scm_m_letstar, scm_m_do): Reordered
9033 comparison parameters.
9034
9035 (scm_m_case, scm_m_cond, scm_m_letstar, scm_m_do, SCM_CEVAL): Use
9036 !SCM_NULLP instead of SCM_NIMP.
9037
9038 (scm_m_case): Don't copy the form. Renamed proc to clause and
9039 minimized its scope. Renamed x to clauses. Removed side
9040 effecting operation from macro call.
9041
9042 (scm_m_cond): Don't copy the form. Renamed arg1 to clause and
9043 minimized its scope. Renamed x to clauses. Minimized the scope
9044 of variable 'len'. Make sure the else clause is treated specially
9045 even in case of '=>' occurences. Don't change the else to #t in
9046 order to be able to distinguish this case in the evaluator. Leave
9047 type checking of the recipient to the evaluator.
9048
9049 (scm_c_improper_memq): Made the comment somewhat clearer.
9050
9051 (scm_m_lambda): Renamed proc to formals. Removed unnecessary
9052 test for SCM_IM_LET at the place of the formal parameters.
9053 Simplified the formal parameter checking.
9054
9055 (scm_m_letstar): Added Comment. Renamed proc to bindings.
9056 Renamed arg1 to binding and minimized its scope. Eliminated
9057 unnecessary consing.
9058
9059 (scm_m_do): Renamed proc to bindings. Minimized the scope of
9060 variable 'len'.
9061
9062 (build_binding_list): New static function.
9063
9064 (unmemocopy): Don't use SCM_TYP7 on pairs (it's unclean).
9065 Further, split up the 'letrec' unmemoizing code to the
9066 corresponding parts for 'do', 'let' and 'letrec', adding comments
9067 to each form. Cleanup the handling of the do form (This removes
9068 some *real* code :-).
9069
9070 (SCM_CEVAL): Removed side effecting operation from macro call.
9071 Handle the 'else clause of the 'cond form specially - the symbol
9072 'else is not replaced with #t any more.
9073
9074 2001-10-14 Gary Houston <ghouston@arglist.com>
9075
9076 * version.c (scm_version): use sprintf instead of snprintf,
9077 for portability. thanks to Bill Schottstaedt.
9078
9079 2001-10-14 Mikael Djurfeldt <mdj@linnaeus>
9080
9081 * read.c (scm_lreadr): When user-defined hash procedure returns
9082 SCM_UNSPECIFIED: Fall back to standard handling instead of raising
9083 an exception. (This prevents parsing of uniform vectors from
9084 interfering with parsing of numbers.)
9085
9086 2001-10-13 Marius Vollmer <mvo@zagadka.ping.de>
9087
9088 * numbers.c: Set NO_PREPRO_MAGIC when defining our version of
9089 PTRDIFF_MIN. Thanks to Ken Raeburn.
9090
9091 2001-10-07 Marius Vollmer <mvo@zagadka.ping.de>
9092
9093 * Makefile.am (EXTRA_libguile_la_SOURCES): Added "mkstemp.c".
9094
9095 * eval.c (scm_m_atbind): First try to find the variable without
9096 defining it locally; when it has not been found, define it
9097 locally.
9098
9099 * modules.c (module_variable): Pass over variables that exist but
9100 are unbound.
9101
9102 2001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
9103
9104 * backtrace.c (display_backtrace_file_and_line): Only use
9105 scm_basename when POSIX support is compiled in. Thanks to Chris
9106 Cramer.
9107
9108 2001-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9109
9110 * numbers.c (mem2uinteger): Return number read so far when coming
9111 across a hexdigit after having read a # or if not reading a hex
9112 value. This will enable the calling code to correctly handle
9113 forms like 1e2. (The background is, that the exponent markers d,
9114 e and f are also hexdigits.) Thanks to Mikael Djurfeldt for
9115 providing this patch.
9116
9117 (mem2complex): Fix erroneous double-negation. Now, numbers like
9118 1-i will be read correctly.
9119
9120 2001-10-12 Mikael Djurfeldt <mdj@linnaeus>
9121
9122 * debug.c (scm_mem_to_proc): Fixed typo in previous change.
9123
9124 * validate.h (SCM_VALIDATE_DOUBLE_DEF_COPY): New macro.
9125
9126 2001-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
9127
9128 * print.c (scm_print_state_vtable, print_state_pool):
9129 Initialize. These variables are now registered as gc roots.
9130
9131 (scm_current_pstate): Update documentation.
9132
9133 (scm_current_pstate, scm_make_print_state, scm_free_print_state,
9134 scm_prin1, scm_init_print): print_state_pool is registered as a
9135 gc root and thus does not need to be protected by a surrounding
9136 pair any more.
9137
9138 (make_print_state): The car of print_state_pool no longer holds
9139 the scm_print_state_vtable.
9140
9141 (scm_current_pstate, scm_make_print_state, print_circref,
9142 scm_iprin1, scm_prin1, scm_iprlist): Prefer !SCM_<foo> over
9143 SCM_N<foo>.
9144
9145 (scm_prin1): When building lists, prefer scm_list_<n> over
9146 scm_cons[2]?.
9147
9148 (scm_iprlist): Removed a redundant SCM_IMP test.
9149
9150 (scm_simple_format): Use SCM_EQ_P to compare SCM values.
9151
9152 2001-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
9153
9154 * debug.c (scm_make_iloc): Prefer !SCM_<foo> over SCM_N<foo>.
9155
9156 (scm_memcons, scm_mem_to_proc): When building lists, prefer
9157 scm_list_<n> over scm_cons[2]?.
9158
9159 (scm_mem_to_proc): Prefer SCM_CONSP over SCM_NIMP.
9160
9161 (scm_procedure_name): Use SCM_CADR instead of explicit form.
9162
9163 (debugobj_print): Coerce scm_intprint arg 1 to long, not int.
9164 Thanks to Rob Browning for the patch (see log entry 2001-09-21) -
9165 for some reason his patch didn't make it into the cvs.
9166
9167 2001-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
9168
9169 * numbers.c (mem2decimal_from_point): Cleaned up the parsing a
9170 little bit - should even be somewhat more accurate now.
9171
9172 2001-10-08 Rob Browning <rlb@defaultvalue.org>
9173
9174 * gc.c: support ia64 register backing store.
9175 (SCM_MARK_BACKING_STORE): new macro.
9176
9177 * continuations.h: support ia64 register backing store.
9178 (struct scm_t_contregs): add ia64 register backing store.
9179
9180 * continuations.c: support ia64 register backing store.
9181 (continuation_mark): mark ia64 register backing store.
9182 (continuation_free): free ia64 register backing store.
9183 (scm_make_continuation): capture ia64 register backing store.
9184 (copy_stack_and_call): copy ia64 register backing store.
9185
9186 2001-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
9187
9188 * hashtab.c (scm_hash_fn_create_handle_x): The result of assoc_fn
9189 is known to be #f if no entry is found. Thus, use !SCM_FALSEP
9190 instead of SCM_NIMP to test for that case.
9191
9192 * strings.h (SCM_SET_STRING_LENGTH): Cast the length to
9193 scm_t_bits instead of long.
9194
9195 2001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
9196
9197 * tags.h (SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
9198 SCM_T_SIGNED_BITS_MIN): New.
9199 * numbers.h (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM):
9200 Use them to make these macros computable by the preprocessor.
9201
9202 * num2integral.i.c (INTEGRAL2NUM): Let the preprocessor test
9203 whether the integral type fits in a fixnum, not the compiler.
9204 This removes a spurious compiler warning. Also, honor the
9205 NO_PREPRO_MAGIC flag to suppress any preprocessor tests. This is
9206 needed for `long long's.
9207
9208 * numbers.c: Define NO_PREPRO_MAGOC when including
9209 num2integral.c.i for `long long' and `signed long long'.
9210
9211 2001-10-06 Mikael Djurfeldt <mdj@linnaeus>
9212
9213 These changes fixes a race condition in the Guile coop - pthread
9214 compatibility code.
9215
9216 * coop.c (mother_awake_p): New variable.
9217 (coop_create): Set mother_awake_p before creating or signalling
9218 mother; wait until mother is going to sleep before returning.
9219 (mother): Reset mother_awake_p before going to sleep.
9220
9221 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
9222
9223 * options.c (protected_objects, scm_init_options): The content of
9224 protected_objects is now protected from garbage collection using
9225 scm_gc_register_root instead of scm_permanent_object.
9226
9227 (get_option_setting): New static function that computes an option
9228 setting as it was formerly done in the function scm_options.
9229
9230 (get_documented_option_setting): New static function that
9231 returns option documentation as it was formerly done in the
9232 function scm_options. Note that documentation C strings are no
9233 longer precomputed into SCM objects. Instead, they are converted
9234 into SCM strings every time get_documented_option_setting is
9235 called.
9236
9237 (change_option_setting): New static functions that modifies the
9238 option setting as it was formerly done in the function
9239 scm_options. The function is now exception safe, i. e. won't
9240 cause a memory leak when interrupted. Further, only non-immediate
9241 option values are added to the protection list.
9242
9243 (scm_options): This function now has only the purpose to dispatch
9244 to to get_option_setting, get_documented_option_setting or
9245 change_option_setting, depending on the arguments given to
9246 scm_options.
9247
9248 (scm_init_opts): Don't convert documentation C strings into SCM
9249 strings. Further, don't protect any object values: They _must_
9250 be immediate values, otherwise there is no guarantee that they
9251 have not been collected before anyway.
9252
9253 * options.[ch] (scm_t_option): Made type unsigned, name into a
9254 constant char* and val into a scm_t_bits type.
9255
9256 (scm_options, scm_init_opts): The number of options is guaranteed
9257 to be larger or equal to zero. Thus, the type is changed to
9258 unsigned.
9259
9260 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
9261
9262 * num2integral.i.c (NUM2INTEGRAL): Eliminated some warnings about
9263 testing an unsigned value for being >= 0.
9264
9265 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
9266
9267 * numbers.h: Removed old comment about using SCM_CAR to access
9268 non-pair cells.
9269
9270 (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM): Make sure
9271 the return value is signed. Thanks to Brian Crowder for the bug
9272 report.
9273
9274 (SCM_SRS): Avoid unnecessary casting and don't unpack input
9275 values. With this patch, SCM_SRS can be safely used for other
9276 types than scm_t_signed_bits. However, it should still better be
9277 an internal macro and thus be renamed to SCM_I_SRS.
9278
9279 (SCM_MAKINUM, SCM_INUM): Use proper casting.
9280
9281 2001-10-03 Gary Houston <ghouston@arglist.com>
9282
9283 * continuations.h, unif.h: in the descriptions of the bit patterns
9284 of the heap cells, make bit 0 the least significant.
9285
9286 2001-09-25 Thien-Thi Nguyen <ttn@glug.org>
9287
9288 * chars.h (SCM_MAKE_CHAR): Use `scm_t_bits' instead of `intptr_t'.
9289 Thanks to Golubev I. N.
9290
9291 2001-09-25 Gary Houston <ghouston@arglist.com>
9292
9293 * ports.c (scm_drain_input): extended the docstring. thanks to
9294 Alex Schroeder and Thien-Thi Nguyen.
9295
9296 2001-09-23 Mikael Djurfeldt <mdj@linnaeus>
9297
9298 * validate.h (SCM_NUM2FLOAT, SCM_NUM2DOUBLE,
9299 SCM_VALIDATE_FLOAT_COPY, SCM_VALIDATE_DOUBLE_COPY): New
9300 macros. (The NUM names might soon change.)
9301
9302 * numbers.h: Added missing declarations.
9303
9304 2001-09-22 Mikael Djurfeldt <mdj@linnaeus>
9305
9306 * Makefile.am: Distribute num2float.i.c.
9307
9308 * num2float.i.c: New file, multiply included by numbers.c, used
9309 to "templatize" the float <-> num conversion routines.
9310
9311 * numbers.c: New functions: scm_num2float, scm_float2num,
9312 scm_num2double, scm_double2num.
9313
9314 2001-09-21 Rob Browning <rlb@defaultvalue.org>
9315
9316 * .cvsignore: really add version.h
9317
9318 * strings.h (SCM_SET_STRING_LENGTH): coerce "l" to a long.
9319 Otherwise it fails on the alpha. However, we might rather choose
9320 this size conditionally.
9321
9322 * numbers.c (scm_gcd): change "k" to a long from an int.
9323 Otherwise it fails on the alpha. However, we might rather choose
9324 this size conditionally.
9325
9326 * error.c (scm_wta): coerce char* to intptr_t before int
9327 assignment.
9328
9329 * debug.c (debugobj_print): coerce scm_intprint arg 1 to long, not
9330 int.
9331
9332 * chars.h (SCM_MAKE_CHAR): coerce value to intptr_t.
9333
9334 2001-09-20 Mikael Djurfeldt <mdj@linnaeus>
9335
9336 * numbers.c (scm_integer_expt): Accept inexact integer in second
9337 argument. (Thanks to Bill Schottstaedt.)
9338
9339 2001-09-20 Rob Browning <rlb@defaultvalue.org>
9340
9341 * .cvsignore: add version.h
9342
9343 * versiondat.h.in: removed (obsolete).
9344
9345 * version.h.in: renamed from version.h.
9346 (SCM_GUILE_MAJOR_VERSION): new public macro.
9347 (SCM_GUILE_MINOR_VERSION): new public macro.
9348 (SCM_GUILE_MICRO_VERSION): new public macro.
9349
9350 * version.h: renamed to version.h.in.
9351
9352 * version.c
9353 (scm_major_version): support integer *_VERSION macros.
9354 (scm_minor_version): support integer *_VERSION macros.
9355 (scm_micro_version): support integer *_VERSION macros.
9356 (scm_version): support integer *_VERSION macros.
9357
9358 2001-09-20 Mikael Djurfeldt <mdj@linnaeus>
9359
9360 * error.c, error.h: Made error keys globally accessible.
9361 Applications might want to test for these or use them in a direct
9362 call to scm_error.
9363
9364 * num2integral.i.c (NUM2INTEGRAL): Report an error when these
9365 routines are passed an inexact. This change in behavior is
9366 motivated by concordance with R5RS: It is more common that a
9367 primitive doesn't want to accept an inexact for an exact.
9368
9369 2001-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
9370
9371 The following patch partially undoes my patch from 2001-06-30,
9372 where I added the function scm_gc_mark_cell_conservatively. The
9373 function is buggy, since it breaks guile during conservative
9374 marking if a pointer on the stack points directly into the list of
9375 free cells on the heap: With conservative cell marking this will
9376 cause the whole free list to be scanned and marked - boom!
9377
9378 * gc.c (allocated_mark, MARK, heap_segment,
9379 scm_gc_mark_cell_conservatively, scm_init_storage), gc.h
9380 (scm_gc_mark_cell_conservatively): Remove function
9381 scm_gc_mark_cell_conservatively and update the corresponding
9382 comments and uses accordingly. Thanks to Christopher Cramer for
9383 the patch. (Minor corrections by me.)
9384
9385 2001-09-15 Gary Houston <ghouston@arglist.com>
9386
9387 * root.h (scm_root_state): removed the continuation_stack and
9388 continuation_stack_ptr members, which have no apparent purpose.
9389 (scm_continuation_stack, scm_continuation_stack_ptr): #defines
9390 removed.
9391
9392 * root.c (root_mark), init.c (restart_stack, start_stack), gc
9393 (scm_igc): remove all references to contination_stack and
9394 continuation_stack_ptr, avoiding allocation of a vector and
9395 useless processing during gc.
9396
9397 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9398
9399 * guardians.c (tconc_t, t_tconc): Renamed tconc_t to t_tconc.
9400
9401 (TCONC_IN): Make sure that the cell word 0 is initialized last.
9402
9403 (guardians_t, t_guardians): Renamed guardians_t to t_guardians.
9404
9405 (GUARDIAN, GUARDIAN_DATA): Renamed GUARDIAN to GUARDIAN_DATA.
9406
9407 (guardian_apply, scm_get_one_zombie, scm_make_guardian,
9408 mark_and_zombify): Prefer !SCM_<foo> over SCM_N<foo>.
9409
9410 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9411
9412 * guardians.c (mark_dependencies_in_tconc,
9413 whine_about_self_centered_zombies, scm_init_guardians): Register
9414 the static global variable `self_centered_zombies' via
9415 scm_gc_register_root, to make some cdr-ing unnecessary.
9416
9417 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9418
9419 * backtrace.c (display_backtrace_file,
9420 display_backtrace_file_and_line): Use SCM_EQ_P when comparing SCM
9421 values, use SCM_FALSEP when comparing SCM values against #f.
9422 Thanks to Rob Browning for the bug report.
9423
9424 2001-09-12 Martin Baulig <martin@home-of-linux.org>
9425
9426 * strings.[ch] (scm_str2string): New function.
9427
9428 2001-09-06 Marius Vollmer <mvo@zagadka.ping.de>
9429
9430 * gc.c (scm_done_free): Always subtract size from scm_mallocated
9431 when computing nm, even if it's negative.
9432 (scm_must_malloc): Abort on overflow of scm_mtrigger.
9433 (scm_must_realloc): Likewise.
9434
9435 2001-09-01 Michael Livshin <mlivshin@bigfoot.com>
9436
9437 * numbers.c (scm_sys_check_number_conversions): new function,
9438 defined if Guile is compiled in debugging mode. currently checks
9439 `scm_num2ulong', should check much much more.
9440
9441 * num2integral.i.c (NUM2INTEGRAL): when converting a bignum to
9442 unsigned, ensure that it's positive. thanks to Martin Baulig!
9443
9444 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
9445
9446 * __scm.h: Added new section about compile time selectable
9447 features.
9448
9449 (long_long, ulong_long, scm_sizet, SCM_WNA, SCM_OUTOFRANGE,
9450 SCM_NALLOC, SCM_HUP_SIGNAL, SCM_INT_SIGNAL, SCM_FPE_SIGNAL,
9451 SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL, SCM_GC_SIGNAL,
9452 SCM_TICK_SIGNAL, SCM_SIG_ORD, SCM_ORD_SIG, SCM_NUM_SIGS):
9453 Removed.
9454
9455 * deprecation.c (scm_include_deprecated_features): Simplified.
9456
9457 * eval.c (EVALCAR, unmemocopy), eval.h (SCM_XEVALCAR): Use
9458 `SCM_IMP' instead of `!SCM_CELLP´.
9459
9460 * eval.c (unmemocopy): Eliminate redundant SCM_CELLP tests.
9461 Extract side-effecting operations from macros.
9462
9463 (scm_init_eval): Don't initialize *top-level-lookup-closure*,
9464 scm_top_level_lookup_closure_var and scm_system_transformer.
9465
9466 * gc.c (CELL_P): New local definition to replace SCM_CELLP.
9467
9468 (heap_segment): Use CELL_P instead of SCM_CELLP.
9469
9470 * init.c (start_stack): Don't initialize
9471 scm_top_level_lookup_closure_var and scm_system_transformer.
9472
9473 * modules.c (scm_set_current_module): Don't access
9474 scm_top_level_lookup_closure_var and scm_system_transformer.
9475
9476 (scm_sym2var): Don't call scm_variable_set_name_hint.
9477
9478 (scm_post_boot_init_modules): Removed deprecated initializations.
9479
9480 * print.c (scm_ipruk): Don't access cell contents of non cells.
9481
9482 * strings.c (scm_string_set_x): All strings are writable.
9483
9484 * strings.h (SCM_STRINGP): Use SCM_TYP7 to determine the string
9485 type. There is only one string type now.
9486
9487 (SCM_STRING_COERCE_0TERMINATION_X): Deprecated.
9488
9489 * tags.h: Remove comments about two different string types.
9490
9491 (SCM_CELLP, SCM_NCELLP): Deprecated.
9492
9493 * variable.c (make_variable): Remove code variant for vcells.
9494
9495 * variable.h (SCM_VARIABLE_REF, SCM_VARIABLE_SET,
9496 SCM_VARIABLE_LOC): Remove code variant for vcells.
9497
9498 * __scm.h, deprecation.[ch]: Renamed SCM_DEBUG_DEPRECATED to
9499 SCM_ENABLE_DEPRECATED with the logic reversed.
9500
9501 * dynl.c (moddata, registered_mods), dynl.[ch]
9502 (scm_register_module_xxx, scm_registered_modules,
9503 scm_clear_registered_modules), error.[ch] (scm_wta), eval.c
9504 (*top-level-lookup-closure*), eval.[ch]
9505 (scm_top_level_lookup_closure_var, scm_system_transformer,
9506 scm_eval_3, scm_eval2), gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR,
9507 SCM_SETAND_CDR, SCM_SETOR_CDR, SCM_FREEP, SCM_NFREEP,
9508 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
9509 SCM_GCCDR), gc.[ch] (scm_remember, scm_protect_object,
9510 scm_unprotect_object), modules.c (root_module_lookup_closure,
9511 scm_sym_app, scm_sym_modules, module_prefix, make_modules_in_var,
9512 beautify_user_module_x_var, try_module_autoload_var,
9513 scm_module_full_name), modules.[ch] (scm_the_root_module,
9514 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
9515 ports.h (scm_port, scm_ptob_descriptor, scm_port_rw_active),
9516 ports.[ch] (scm_close_all_ports_except), random.h (scm_rstate,
9517 scm_rng, scm_i_rstate), strings.h (SCM_SLOPPY_STRINGP,
9518 SCM_RWSTRINGP, SCM_STRING_UCHARS, SCM_STRING_CHARS), strings.[ch]
9519 (scm_read_only_string_p, scm_makstr, scm_makfromstr,
9520 scm_make_shared_substring), tags.h (scm_tc7_substring,
9521 SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP, scm_tc7_ssymbol,
9522 scm_tc7_msymbol, scm_tcs_symbols), variable.c (sym_huh),
9523 variable.[ch] (scm_variable_set_name_hint, scm_builtin_variable),
9524 variable.h (SCM_VARVCELL, SCM_UDVARIABLEP, SCM_DEFVARIABLEP):
9525 Removed.
9526
9527 * dynl.c (scm_dynamic_link, scm_dynamic_func), error.c
9528 (scm_error_scm), filesys.c (scm_chown, scm_chmod, scm_open_fdes,
9529 scm_stat, scm_link, scm_rename, scm_delete_file, scm_mkdir,
9530 scm_rmdir, scm_opendir, scm_chdir, scm_symlink, scm_readlink,
9531 scm_lstat, scm_copy_file), fports.c (scm_open_file), ioext.c
9532 (scm_fdopen), net_db.c (scm_gethost, scm_getnet, scm_getproto,
9533 scm_getserv), ports.c (scm_truncate_file, scm_sys_make_void_port),
9534 posix.c (scm_getpwuid, scm_getgrgid, scm_execl, scm_execlp,
9535 scm_execle, scm_mkstemp, scm_utime, scm_access, scm_setlocale,
9536 scm_mknod, scm_crypt, scm_chroot, scm_getpass, scm_sethostname),
9537 regex-posix.c (scm_make_regexp, scm_regexp_exec), simpos.c
9538 (scm_system, scm_getenv), socket.c (scm_inet_aton), stime.c
9539 (setzone, scm_strftime, scm_strptime), vports.c
9540 (scm_make_soft_port): Remove calls to
9541 SCM_STRING_COERCE_0TERMINATION_X. Since the substring type is
9542 gone, all strings are 0-terminated anyway.
9543
9544 * dynl.h (LIBGUILE_DYNL_H, SCM_DYNL_H), random.h (RANDOMH,
9545 SCM_RANDOM_H): Renamed the macros that are defined to inhibit
9546 double inclusion of the same headers to the SCM_<filename>_H
9547 format.
9548
9549 * eval.c (SCM_CEVAL), gc.c (MARK, scm_gc_sweep), gh_data.c
9550 (gh_scm2chars), hash.c (scm_hasher), objects.c (scm_class_of),
9551 print.c (scm_iprin1): The type scm_tc7_substring does not exist
9552 any more.
9553
9554 * ports.h (SCM_PORTP, SCM_OPPORTP, SCM_OPINPORTP, SCM_OPOUTPORTP,
9555 SCM_INPUT_PORT_P, SCM_OUTPUT_PORT_P, SCM_OPENP), tags.h
9556 (SCM_TYP16_PREDICATE), variable.h (SCM_VARIABLEP): Prefer
9557 !SCM_<foo> over SCM_N<foo>.
9558
9559 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
9560
9561 * Makefile.am: Remove references to symbols-deprecated.c.
9562
9563 * symbols.c (scm_init_symbols): Don't initialize deprecated
9564 symbol functions.
9565
9566 * symbols-deprecated.c: Removed.
9567
9568 * fluids.[ch] (scm_internal_with_fluids), gsubr.[ch]
9569 (scm_make_gsubr, scm_make_gsubr_with_generic), hooks.[ch]
9570 (scm_create_hook), list.c (list*), list.h (SCM_LIST[0-9],
9571 scm_listify), list.[ch] (scm_sloppy_memq, scm_sloppy_memv,
9572 scm_sloppy_member), load.c (scm_end_of_file_key), load.[ch]
9573 (scm_read_and_eval_x), numbers.[ch] (scm_mkbig, scm_big2inum,
9574 scm_adjbig, scm_normbig, scm_copybig, scm_2ulong2big, scm_dbl2big,
9575 scm_big2dbl), numbers.h (SCM_FIXNUM_BIT), procs.h
9576 (scm_subr_entry, SCM_SUBR_DOC), procs.[ch] (scm_make_subr_opt,
9577 scm_make_subr, scm_make_subr_with_generic), root.c (setjmp_type,
9578 setjmp_type), root.[ch] (scm_call_catching_errors), smob.[ch]
9579 (scm_make_smob_type_mfpe, scm_set_smob_mfpe), strports.[ch]
9580 (scm_strprint_obj, scm_read_0str, scm_eval_0str), symbols.h
9581 (SCM_CHARS, SCM_UCHARS, SCM_SETCHARS, SCM_SLOPPY_SUBSTRP,
9582 SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_LENGTH_MAX, SCM_LENGTH,
9583 SCM_SETLENGTH, SCM_ROSTRINGP, SCM_ROLENGTH, SCM_ROCHARS,
9584 SCM_ROUCHARS, SCM_SUBSTRP, SCM_COERCE_SUBSTR, scm_strhash,
9585 scm_sym2vcell, scm_sym2ovcell_soft, scm_sym2ovcell,
9586 scm_intern_obarray_soft, scm_intern_obarray, scm_intern,
9587 scm_intern0, scm_sysintern, scm_sysintern0,
9588 scm_sysintern0_no_module_lookup, scm_symbol_value0,
9589 scm_string_to_obarray_symbol, scm_intern_symbol,
9590 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
9591 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp,
9592 scm_init_symbols_deprecated), vectors.c (s_vector_set_length_x),
9593 vectors.[ch] (scm_vector_set_length_x): Removed.
9594
9595 * fluids.h (FLUIDSH, SCM_FLUIDS_H), gsubr.c (GSUBRH, SCM_GSUBR_H),
9596 list.h (LISTH, SCM_LIST_H), load.h (LOADH, SCM_LOAD_H), root.h
9597 (ROOTH, SCM_ROOT_H), strports.h (STRPORTSH, SCM_STRPORTS_H):
9598 Renamed the macros that are defined to inhibit double inclusion of
9599 the same headers to the SCM_<filename>_H format.
9600
9601 * procs.h (SCM_CLOSUREP, SCM_PROCEDURE_WITH_SETTER_P), symbols.h
9602 (SCM_SYMBOLP), vectors.h (SCM_VECTORP): Prefer !SCM_<foo> over
9603 SCM_N<foo>.
9604
9605 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
9606
9607 * continuations.h (scm_contregs), debug.h (scm_debug_info,
9608 scm_debug_frame, SCM_DSIDEVAL), filesys.h (SCM_OPDIRP), fports.h
9609 (scm_fport), options.h (scm_option), snarf.h (SCM_CONST_LONG,
9610 SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
9611 SCM_GLOBAL_VCELL_INIT), srcprop.h (scm_srcprops,
9612 scm_srcprops_chunk), stacks.h (scm_info_frame, scm_stack), unif.h
9613 (scm_array, scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_HUGE_LENGTH),
9614 validate.h (SCM_FUNC_NAME, SCM_WTA, RETURN_SCM_WTA,
9615 SCM_VALIDATE_NUMBER_COPY, SCM_VALIDATE_NUMBER_DEF_COPY,
9616 SCM_VALIDATE_STRINGORSUBSTR, SCM_VALIDATE_ROSTRING,
9617 SCM_VALIDATE_ROSTRING_COPY, SCM_VALIDATE_NULLORROSTRING_COPY,
9618 SCM_VALIDATE_RWSTRING, SCM_VALIDATE_OPDIR): Removed.
9619
9620 * continuations.h (CONTINUATIONSH, SCM_CONTINUATIONS_H), filesys.h
9621 (FILESYSH, SCM_FILESYS_H), fports.h (FPORTSH, SCM_FPORTS_H),
9622 options.h (OPTIONSH, SCM_OPTIONS_H), regex-posix.h (REGEXPOSIXH,
9623 SCM_REGEX_POSIX_H), snarf.h (LIBGUILE_SNARF_H, SCM_SNARF_H),
9624 srcprop.h (SCM_SOURCE_PROPERTIES_H, SCM_SRCPROP_H), unif.h
9625 (SCM_UNIFORM_VECTORS_H, SCM_UNIF_H), validate.h (SCM_VALIDATE_H__,
9626 SCM_VALIDATE_H): Renamed the macros that are defined to inhibit
9627 double inclusion of the same headers to the SCM_<filename>_H
9628 format.
9629
9630 * debug.h (SCM_RESET_DEBUG_MODE), regex-posix.h (SCM_RGXP),
9631 srcprop.h (SRCBRKP, PROCTRACEP), struct.h (SCM_STRUCTP),
9632 validate.h (SCM_VALIDATE_THUNK, SCM_VALIDATE_ARRAY,
9633 SCM_VALIDATE_VECTOR_OR_DVECTOR, SCM_VALIDATE_VTABLE): Prefer
9634 !SCM_<foo> over SCM_N<foo>.
9635
9636 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
9637
9638 * _scm.h (_SCMH, SCM__SCM_H), alist.h (ALISTH, SCM_ALIST_H),
9639 arbiters.h (ARBITERSH, SCM_ARBITERS_H), backtrace.h (BACKTRACEH,
9640 SCM_BACKTRACE_H), boolean.h (BOOLEANH, SCM_BOOLEAN_H), chars.h
9641 (SCM_CHARSH, SCM_CHARS_H), coop-defs.h (COOP_DEFSH,
9642 SCM_COOP_DEFS_H), coop-threads.h (COOP_THREADSH,
9643 SCM_COOP_THREADS_H), debug-malloc.h (DEBUGMALLOCH,
9644 SCM_DEBUG_MALLOC_H), dynwind.h (DYNWINDH, SCM_DYNWIND_H),
9645 environments.h (ENVIRONMENTS_H, SCM_ENVIRONMENTS_H), eq.h (EQH,
9646 SCM_EQ_H), evalext.h (EVALEXTH, SCM_EVALEXT_H), extensions.h
9647 (LIBGUILE_EXTENSIONS_H, SCM_EXTENSIONS_H), feature.h (FEATUREH,
9648 SCM_FEATURE_H), gdbint.h (GDBINTH, SCM_GDBINT_H), guardians.h
9649 (SCM_GUARDIANH, SCM_GUARDIANS_H), hash.h (HASHH, SCM_HASH_H),
9650 hashtab.h (HASHTABH, SCM_HASHTAB_H), init.h (INITH, SCM_INIT_H),
9651 ioext.h (IOEXTH, SCM_IOEXT_H), iselect.h (ISELECTH,
9652 SCM_ISELECT_H), keywords.h (KEYWORDSH, SCM_KEYWORDS_H), lang.h
9653 (LANGH, SCM_LANG_H), mallocs.h (MALLOCSH, SCM_MALLOCS_H), net_db.h
9654 (SCM_NETDBH, SCM_NET_DB_H), objprop.h (OBJPROPH, SCM_OBJPROP_H),
9655 posix.h (POSIXH, SCM_POSIX_H), procprop.h (PROCPROPH,
9656 SCM_PROCPROP_H), properties.h (PROPERTIES_H, SCM_PROPERTIES_H),
9657 ramap.h (RAMAPH, SCM_RAMAP_H), rdelim.h (SCM_RDELIM,
9658 SCM_RDELIM_H), read.h (READH, SCM_READ_H), rw.h (SCM_RW,
9659 SCM_RW_H), scmsigs.h (SCMSIGSH, SCM_SCMSIGS_H), script.h (SCRIPTH,
9660 SCM_SCRIPT_H), simpos.h (SIMPOSH, SCM_SIMPOS_H), socket.h
9661 (SCM_SOCKETH, SCM_SOCKET_H), sort.h (SORTH, SCM_SORT_H),
9662 stackchk.h (STACKCHKH, SCM_STACKCHK_H), stime.h (STIMEH,
9663 SCM_STIME_H), strop.h (STROPH, SCM_STROP_H), strorder.h
9664 (STRORDERH, SCM_STRORDER_H), threads.h (THREADSH, SCM_THREADS_H),
9665 throw.h (THROWH, SCM_THROW_H), version.h (VERSIONH,
9666 SCM_VERSION_H), vports.h (VPORTSH, SCM_VPORTS_H): Renamed
9667 the macros that are defined to inhibit double inclusion of the
9668 same headers to the SCM_<filename>_H format.
9669
9670 2001-08-27 Marius Vollmer <mvo@zagadka.ping.de>
9671
9672 * ports.c, ports.h, fprots.c, gc.c, ioext.c: Replaced
9673 "scm_t_portable" with "scm_port_table" which was an artifact from
9674 the great "scm_*_t -> scm_t_" renaming.
9675
9676 2001-08-25 Thien-Thi Nguyen <ttn@revel.glug.org>
9677
9678 * gc_os_dep.c (GC_noop1): Move before `GC_find_limit' where it is
9679 used; nfc. Thanks to Bill Schottstaedt.
9680
9681 * validate.h (SCM_VALIDATE_USHORT_COPY, SCM_VALIDATE_SHORT_COPY,
9682 SCM_VALIDATE_UINT_COPY, SCM_VALIDATE_INT_COPY): New macros.
9683 Thanks to Chris Cramer.
9684
9685 2001-08-25 Marius Vollmer <mvo@zagadka.ping.de>
9686
9687 * Makefile.am (AUTOMAKE_OPTIONS): Change "foreign" to "gnu".
9688
9689 * eval.c (scm_m_atbind): Redesigned to behvae like `let', but with
9690 dynamic scope.
9691 * dynwind.h (scm_swap_bindings): Declare.
9692 * dynwind.c (scm_swap_bindings): Make non-static.
9693
9694 2001-08-25 Michael Livshin <mlivshin@bigfoot.com>
9695
9696 * gc.c (scm_gc_sweep): now can sweep unreachable variables (by
9697 doing exactly nothing about them). thanks Neil!
9698
9699 2001-08-18 Neil Jerram <neil@ossau.uklinux.net>
9700
9701 * __scm.h (SCM_ENABLE_VCELLS): Fix spelling mistake in comment.
9702
9703 2001-08-17 Thien-Thi Nguyen <ttn@revel.glug.org>
9704
9705 * gc.c: Fix omission bug: Add `heap_segment' forward decl
9706 (proto) in the case when either `GUILE_DEBUG' or
9707 `GUILE_DEBUG_FREELIST' preprocessor symbols are defined.
9708
9709 (map_free_list): Fix typo: Ref `f' correctly.
9710
9711 Thanks to Chris Cramer.
9712
9713 2001-08-15 Rob Browning <rlb@defaultvalue.org>
9714
9715 * Makefile.am (libguile_la_LDFLAGS): use libtool interface version
9716 variables.
9717 (libpath.h): change libguileversion to libguileinterface.
9718
9719 2001-08-07 Marius Vollmer <mvo@zagadka.ping.de>
9720
9721 * Makefile.am (EXTRA_DIST): Distribute ChangeLog-1996-1999 and
9722 ChangeLog-2000. Thanks to Daniel Skarda!
9723
9724 2001-08-07 Michael Livshin <mlivshin@bigfoot.com>
9725
9726 * guile-snarf-docs-texi.in: don't call the tokenizer here, we now
9727 do it from the Makefile.
9728
9729 * Makefile.am: rearrange the snarfing slightly, so that .doc files
9730 are of a reasonable size.
9731
9732 2001-08-02 Neil Jerram <neil@ossau.uklinux.net>
9733
9734 * stacks.c (scm_make_stack): Improve docstring by explaining use
9735 of cutting args.
9736
9737 2001-08-01 Marius Vollmer <mvo@zagadka.ping.de>
9738
9739 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
9740 scm_char_whitespace_p, scm_char_upper_case_p,
9741 scm_char_lower_case_p, scm_char_is_both_p): Do not require
9742 characters to fulfill isascii in addition to the primary
9743 predicate.
9744
9745 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
9746
9747 * numbers.c (DIGITS, scm_small_istr2int, scm_istr2int,
9748 scm_istr2flo, scm_istring2number): Removed.
9749
9750 (iflo2str, scm_real_p, scm_integer_p): Use SCM_<foo> instead of
9751 SCM_SLOPPY_<foo>.
9752
9753 (t_exactness, t_radix, DIGIT2UINT, XDIGIT2UINT, mem2uinteger,
9754 mem2decimal_from_point, mem2ureal, mem2complex, scm_i_mem2number):
9755 Added.
9756
9757 (scm_string_to_number): Use new number parser.
9758
9759 (scm_exact_to_inexact): Replace dummy by a GPROC, which also
9760 handles complex numbers.
9761
9762 * numbers.h (NUMBERSH, SCM_NUMBERS_H): Rename <foo>H to
9763 SCM_<foo>_H.
9764
9765 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Prefer !SCM_<pred> over
9766 SCM_N<pred>.
9767
9768 (scm_istr2int, scm_istr2flo, scm_istring2number): Removed.
9769
9770 (scm_i_mem2number): Added.
9771
9772 (scm_exact_to_inexact): Changed signature.
9773
9774 * read.c (scm_lreadr): Perform the shortcut test for '+ and '-
9775 here instead of within scm_i_mem2number. Call scm_i_mem2number
9776 instead of scm_istr2int and scm_istring2number.
9777
9778 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
9779
9780 * eval.c (scm_lookupcar, scm_m_body, scm_m_lambda, unmemocopy,
9781 scm_unmemocopy, scm_badargsp, scm_eval_body, CHECK_EQVISH,
9782 SCM_CEVAL, scm_nconc2last, SCM_APPLY, scm_copy_tree): Prefer
9783 !SCM_<pred> over SCM_N<pred>.
9784
9785 (scm_eval_body): Remove side effecting code from macro call.
9786
9787 (SCM_CEVAL, SCM_APPLY): Remove goto statement and redundant
9788 SCM_NIMP test.
9789
9790 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
9791
9792 * pairs.h (SCM_VALIDATE_PAIR): Use SCM_CONSP, not SCM_ECONSP.
9793
9794 2001-07-29 Marius Vollmer <mvo@zagadka.ping.de>
9795
9796 Removed vcell slot from structs.
9797
9798 * struct.h (scm_vtable_index_vcell): Removed. Renumbered
9799 subsequent indices.
9800
9801 * struct.c (scm_struct_vtable_p): Do not check vcell slot for
9802 zero. Use scm_vtable_index_layout instead of "0" when accessing
9803 said slot.
9804 (scm_init_struct): Remove vcell slot layout code from
9805 required_vtable_fields.
9806
9807 * objects.h (scm_si_redefined, scm_si_hashsets): Renumbered.
9808
9809 * goops.c (build_class_class_slots): Removed vcell slot
9810 definition.
9811
9812 * goops.h: Renumbered slot indices. (SCM_CLASS_CLASS_LAYOUT):
9813 Removed vcell slot layout code.
9814 (scm_si_vcell): Removed.
9815
9816 2001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
9817
9818 "Glocs" have been removed.
9819
9820 * tags.h: Update tag system docs.
9821 (scm_tc3_cons_gloc): Renamed to scm_tc3_struct. Changed all uses.
9822 (scm_tcs_cons_gloc): Renamed to scm_tcs_struct. Changed all uses.
9823 (SCM_ECONSP, SCM_NECONSP): Removed. Changed all uses to SCM_CONSP
9824 or SCM_NCONSP, respectively.
9825
9826 * struct.c, struct.h, srcprop.c, procs.c, procprop.c, print.c,
9827 objects.c. modules.c, goops.c, eval.c, debug.c: Changed all uses
9828 of scm_tc3_cond_gloc and scm_tcs_cons_gloc. See above.
9829
9830 * print.c (scm_iprin1): Remove printing of glocs. Do not try to
9831 tell glocs from structs.
9832
9833 * gc.c (scm_gc_mark, scm_gc_sweep): Remove handling of glocs.
9834
9835 * eval.c (scm_m_atbind): Make a list of variables, not glocs.
9836 (scm_ceval, scm_deval): For SCM_IM_BIND, fiddle with variables
9837 instead of with glocs.
9838 (EVALCAR): Do not test for glocs.
9839 (scm_lookupcar, scm_lookupcar1): Do not handle glocs in race
9840 condition.
9841 (scm_unmemocar): Do not handle glocs.
9842 (scm_m_atfop): Memoize as a variable, not as a gloc.
9843 (scm_eval_args, scm_deval_args): Do not handle glocs.
9844 (scm_ceval, scm_deval): Likewise.
9845
9846 * eval.h (SCM_XEVALCAR): Do not test for glocs.
9847 (SCM_GLOC_VAR, SCM_GLOC_VAL, SCM_GLOC_SET_VAL, SCM_GLOC_VAL_LOC):
9848 Removed.
9849
9850 * debug.h, debug.c (scm_make_gloc, scm_gloc_p): Removed.
9851
9852 * dynwind.c (scm_swap_bindings): Likewise.
9853 (scm_dowinds): Updated to recognize lists of variables instead of
9854 lists of glocs.
9855
9856 * __scm.h (SCM_CAUTIOS, SCM_RECKLESS): Update comments.
9857
9858
9859 * gc_os_dep.c (GC_noop1): Moved into the same #if/#endif context
9860 where it is needed.
9861
9862 2001-07-25 Gary Houston <ghouston@arglist.com>
9863
9864 * numbers.c (scm_logand, scm_logior, scm_logxor): adjusted the
9865 docstrings to reflect the n-ary implementation.
9866
9867 2001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
9868
9869 * eval.c (scm_ceval, scm_deval): Use "RETURN" macro when returning
9870 value of a variable, not the plain "return" statement.
9871
9872 2001-07-25 Marius Vollmer <mvo@zagadka.ping.de>
9873
9874 * eval.c: Allow variables in memoized code (in addition to glocs).
9875 (scm_lookupcar): Handle variables in lost races. Replace symbol
9876 with variable directly, do not make a gloc.
9877 (scm_unmemocar): Rewrite variables using a reverse lookup, just
9878 like glocs.
9879 (scm_ceval, scm_deval): Deal with variables in SCM_IM_SET and in
9880 the main switch.
9881
9882 2001-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9883
9884 * variable.c (scm_i_variable_print): Use "value" instead of
9885 "binding" since a binding is the mapping between symbols and
9886 variables, not between variables and their values.
9887
9888 * tags.h (scm_tc7_variable): New.
9889 * gc.c (scm_gc_mark): Handle scm_tc7_variable objects.
9890 * print.c (scm_iprin1): Likewise.
9891
9892 * variable.h (scm_tc16_variable): Removed.
9893 (SCM_VARIABLEP): Test for new tc7 code.
9894 (scm_i_variable_print): New.
9895 * variable.c (scm_tc16_variable): Removed.
9896 (variable_print): Renamed to scm_i_variable_print and made
9897 non-static.
9898 (variable_equal_p): Removed.
9899 (make_variable): Construct a tc7 object instead of a smob.
9900 (scm_init_variable): Do not register smob.
9901
9902 2001-07-22 Marius Vollmer <mvo@zagadka.ping.de>
9903
9904 * tags.h: Include inttypes.h when we have it.
9905
9906 2001-07-13 Marius Vollmer <mvo@zagadka.ping.de>
9907
9908 * tags.h (SCM_UNBOUND): Make it the 34th isym/iflag, the 33th slot
9909 is taken by the new SCM_IM_CALL_WITH_VALUES.
9910 * print.c (scm_isymnames): Update table accordingly.
9911
9912 2001-07-22 Gary Houston <ghouston@arglist.com>
9913
9914 * regex-posix.c (s_scm_regexp_exec): use scm_long2num not
9915 SCM_MAKINUM to convert regoff_t value to SCM.
9916
9917 2001-07-21 Gary Houston <ghouston@arglist.com>
9918
9919 * scmsigs.c: include sys/time.h for itimer stuff.
9920
9921 2001-07-19 Rob Browning <rlb@defaultvalue.org>
9922
9923 * gc_os_dep.c (GC_noop1): ifdef out (unused) to quiet warning.
9924
9925 * c-tokenize.lex: add option %nounput to quiet warning.
9926 Add prototype for yylex to quiet warning.
9927
9928 * scmconfig.h.in: add flags for setitimer and getitimer.
9929
9930 * scmsigs.h (scm_init_scmsigs): new prototype.
9931 (scm_init_scmsigs): new prototype.
9932
9933 * scmsigs.c (s_scm_setitimer): new function.
9934 (s_scm_setitimer): new function.
9935
9936 2001-07-18 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
9937
9938 * alist.c, arbiters.c, async.h, backtrace.h, boolean.c, chars.c,
9939 chars.h, continuations.h, debug-malloc.h, dynl.c, feature.c,
9940 feature.h, filesys.h, fluids.h, fports.h, gc_os_dep.c,
9941 gdb_interface.h, gh_eval.c, gh_funcs.c, gh_io.c, gh_list.c,
9942 gh_predicates.c, gsubr.c, gsubr.h, guardians.h,
9943 guile-func-name-check.in, guile-snarf-docs-texi.in,
9944 guile-snarf-docs.in, guile-snarf.awk.in, guile-snarf.in,
9945 hashtab.h, iselect.h, keywords.h, lang.c, list.h, load.h,
9946 objprop.c, objprop.h, options.c, options.h, random.h,
9947 regex-posix.h, root.c, root.h, script.c, snarf.h, stackchk.c,
9948 strerror.c, strop.h, strports.h, threads.h, values.c, values.h,
9949 version.c, version.h: Updated copyright notice.
9950
9951 2001-07-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
9952
9953 * goops.c (sym_layout, sym_vcell, sym_vtable, sym_print,
9954 sym_procedure, sym_setter, sym_redefined, sym_h0, sym_h1, sym_h2,
9955 sym_h3, sym_h4, sym_h5, sym_h6, sym_h7, sym_name,
9956 sym_direct_supers, sym_direct_slots, sym_direct_subclasses,
9957 sym_direct_methods, sym_cpl, sym_default_slot_definition_class,
9958 sym_slots, sym_getters_n_setters, sym_keyword_access, sym_nfields,
9959 sym_environment, scm_sym_change_class): New static variables to
9960 hold predefined symbols.
9961
9962 (build_class_class_slots): Build the list using scm_list_n
9963 instead of cons. Also, slots are already created as lists, thus
9964 making a call to maplist unnecessary.
9965
9966 (scm_class_name, scm_class_direct_supers, scm_class_direct_slots,
9967 scm_class_direct_subclasses, scm_class_direct_methods,
9968 scm_class_precedence_list, scm_class_slots, scm_class_environment,
9969 scm_method_procedure, create_standard_classes, purgatory): Use
9970 predefined symbols.
9971
9972 (build_slots_list, compute_getters_n_setters,
9973 scm_sys_initialize_object, scm_sys_inherit_magic_x,
9974 get_slot_value_using_name, set_slot_value_using_name,
9975 scm_sys_invalidate_method_cache_x, scm_generic_capability_p,
9976 scm_compute_applicable_methods, scm_sys_method_more_specific_p,
9977 make_struct_class): Prefer !SCM_<pred> over SCM_N<pred>.
9978
9979 (scm_sys_prep_layout_x): Minimize variable scopes.
9980
9981 (scm_sys_prep_layout_x, scm_sys_fast_slot_ref,
9982 scm_sys_fast_slot_set_x): Fix signedness.
9983
9984 (go_to_hell, go_to_heaven, purgatory, scm_change_object_class,
9985 lock_cache_mutex, unlock_cache_mutex, call_memoize_method,
9986 scm_memoize_method, scm_wrap_object): Use packing and unpacking
9987 when converting to and from SCM values.
9988
9989 (scm_enable_primitive_generic_x): Add rest argument checking.
9990
9991 (map, filter_cpl, maplist, scm_sys_initialize_object,
9992 scm_sys_prep_layout_x, slot_definition_using_name,
9993 scm_enable_primitive_generic_x, scm_compute_applicable_methods,
9994 call_memoize_method, scm_make, scm_make_class): Prefer explicit
9995 predicates over SCM_N?IMP tests.
9996
9997 (scm_sys_prep_layout_x): Fix typo in error message. Fix type
9998 checking.
9999
10000 (burnin, go_to_hell): Use SCM_STRUCT_DATA instead of the SCM_INST
10001 alias.
10002
10003 2001-07-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
10004
10005 * fports.c (fport_print): Don't use SCM_C[AD]R for non pairs.
10006
10007 * num2integral.i.c (INTEGRAL2NUM, INTEGRAL2BIG): Fix signedness.
10008
10009 * symbols-deprecated.c (scm_gentemp): Simplify vector test.
10010
10011 * vectors.c (scm_vector_p): Eliminate redundant IMP test.
10012
10013 2001-07-12 Michael Livshin <mlivshin@bigfoot.com>
10014
10015 * strings.c (s_scm_string): fix arg position in assert.
10016
10017 2001-07-11 Gary Houston <ghouston@arglist.com>
10018
10019 * strports.c (st_write): use memcpy, not strncpy. thanks to
10020 Dale P. Smith.
10021
10022 2001-07-09 Thien-Thi Nguyen <ttn@revel.glug.org>
10023
10024 * alist.c, alloca.c, arbiters.c, async.c, async.h, backtrace.c,
10025 boolean.c, chars.c, continuations.c, coop-defs.h, coop-threads.c,
10026 debug-malloc.h, debug.c, debug.h, dynl.c, dynwind.c, eq.c,
10027 error.c, eval.c, evalext.c, feature.c, feature.h, filesys.c,
10028 filesys.h, fluids.c, fluids.h, fports.c, fports.h, gc.c, gc.h,
10029 gdbint.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
10030 hooks.h, inet_aton.c, init.c, ioext.c, keywords.c, keywords.h,
10031 lang.c, list.c, load.c, macros.c, mallocs.c, memmove.c, modules.c,
10032 net_db.c, numbers.c, numbers.h, objects.c, objprop.c, options.c,
10033 pairs.c, pairs.h, ports.c, ports.h, posix.c, print.c, print.h,
10034 procprop.c, procs.c, procs.h, properties.c, putenv.c, ramap.c,
10035 random.c, random.h, read.c, regex-posix.c, regex-posix.h, root.c,
10036 root.h, scmsigs.c, script.c, simpos.c, smob.c, snarf.h, socket.c,
10037 sort.c, srcprop.c, srcprop.h, stackchk.c, stacks.c, stacks.h,
10038 stime.c, strerror.c, strings.c, strings.h, strop.c, strorder.c,
10039 strports.c, struct.c, struct.h, symbols-deprecated.c, symbols.c,
10040 symbols.h, tags.h, threads.c, threads.h, throw.c, unif.c, unif.h,
10041 variable.c, variable.h, vectors.c, vectors.h, version.c, vports.c,
10042 weaks.c, weaks.h: Remove "face-lift" comment.
10043
10044 2001-07-08 Rob Browning <rlb@defaultvalue.org>
10045
10046 * .cvsignore: add stamp-h.in.
10047
10048 2001-07-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10049
10050 * hooks.c (scm_make_hook, scm_add_hook_x),
10051 (scm_remove_hook_x, scm_reset_hook_x, scm_run_hook): Added return
10052 value info to the docstrings.
10053
10054 2001-07-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10055
10056 Some more compatibility patches for Windows.
10057
10058 * posix.c (getlogin): getlogin() implementation for Windows.
10059
10060 * backtrace.c, ioext.c: Include <stdio.h>.
10061
10062 * unif.c, script.c, rw.c, error.c: Include <io.h>, if it does
10063 exist.
10064
10065 * cpp_sig_symbols.in: Added SIGBREAK.
10066
10067 2001-07-01 Marius Vollmer <mvo@zagadka.ping.de>
10068
10069 * strports.c (scm_read_0str, scm_eval_0str): Call
10070 scm_c_read_string and scm_c_eval_string respectively, not
10071 themselves. Thanks to Dale P. Smith!
10072
10073 2001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10074
10075 * unif.c (scm_array_set_x): The variable args does not
10076 necessarily have to be a list. Further, got rid of a redundant
10077 SCM_NIMP test.
10078
10079 2001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10080
10081 * list.c (SCM_I_CONS): Make sure the cell type is initialized
10082 last.
10083
10084 * gc.c (s_scm_map_free_list, scm_igc, scm_gc_sweep,
10085 init_heap_seg): Fixed signedness.
10086
10087 (init_heap_seg): Replaced strange for-loop with a while loop.
10088
10089 * weaks.h (WEAKSH, SCM_WEAKS_H): Rename <foo>H to SCM_<foo>_H.
10090
10091 (SCM_WVECTP): Prefer !SCM_<pred> over SCM_N<pred>.
10092
10093 The following patch adds conservative marking for the elements of
10094 free or allocated cells.
10095
10096 * gc.c (allocated_mark, heap_segment): New static functions.
10097
10098 (which_seg): Deleted, since the functionality is now provided by
10099 function heap_segment.
10100
10101 (map_free_list): Use heap_segment instead of which_seg.
10102
10103 (MARK): If cell debugging is disabled, mark free cells
10104 conservatively.
10105
10106 (scm_mark_locations, scm_cellp): Extracted the search for the
10107 heap segment of a SCM value into function heap_segment.
10108
10109 (scm_init_storage): Allocated cells must be marked
10110 conservatively.
10111
10112 * gc.[ch] (scm_gc_mark_cell_conservatively): New function.
10113
10114 The following patch changes the representation of weak vectors to
10115 double cells instead of using an extension of the vector's
10116 allocated memory.
10117
10118 * gc.c (MARK): Use SCM_SET_WVECT_GC_CHAIN instead of assigning to
10119 the result of SCM_WVECT_GC_CHAIN.
10120
10121 (scm_gc_sweep): Weak vectors don't have extra fields any more.
10122
10123 * weaks.c (allocate_weak_vector): New static function. It does
10124 not patch any previously created vector object during the
10125 construction of a weak vector, and thus doesn't need to switch
10126 off interrupts during vector creation.
10127
10128 (scm_make_weak_vector, scm_make_weak_key_hash_table,
10129 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
10130 Use allocate_weak_vector to provide the new weak vector object.
10131
10132 * weaks.h (SCM_WVECT_TYPE, SCM_SET_WVECT_TYPE,
10133 SCM_SET_WVECT_GC_CHAIN): New macros. The weak vector subtype is
10134 now stored in the double cell.
10135
10136 (SCM_IS_WHVEC, SCM_IS_WHVEC_V, SCM_IS_WHVEC_B, SCM_IS_WHVEC_ANY):
10137 Use SCM_WVECT_TYPE.
10138
10139 (SCM_WVECT_GC_CHAIN): The weak objects are now chained together
10140 using an entry of the double cell.
10141
10142 2001-06-30 Thien-Thi Nguyen <ttn@revel.glug.org>
10143
10144 * stamp-h.in: bye bye
10145
10146 2001-06-30 Marius Vollmer <mvo@zagadka.ping.de>
10147
10148 * gh_eval.c (gh_eval_str): Use scm_c_eval_string instead of
10149 scm_eval_0str.
10150
10151 * load.c, load.h (scm_c_primitive_load,
10152 scm_c_primitive_load_path): New.
10153
10154 * strports.c, strports.h (scm_c_read_string): Renamed from
10155 scm_read_0str. Also, added "const" qualifier to argument.
10156 (scm_c_eval_string): Renamed from scm_eval_0str.
10157 (scm_read_0str, scm_eval_0str): Deprecated.
10158
10159 2001-06-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10160
10161 * fluids.c (scm_c_with_fluid): Use scm_list_1() instead of
10162 SCM_LIST1.
10163
10164 2001-06-28 Keisuke Nishida <kxn30@po.cwru.edu>
10165
10166 * list.h (scm_list_1, scm_list_2, scm_list_3, scm_list_4, scm_list_5,
10167 scm_list_n): New functions.
10168 (SCM_LIST0, SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5,
10169 SCM_LIST6, SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify): Deprecated.
10170 (lots of files): Use the new functions.
10171
10172 * goops.c (CALL_GF1, CALL_GF2, CALL_GF3, CALL_GF4): Use scm_call_N.
10173
10174 * strings.c: #include "libguile/deprecation.h".
10175
10176 2001-06-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10177
10178 * read.c (scm_lreadr): When reading a hash token, check for a
10179 user-defined hash procedure first, so that overriding the builtin
10180 hash characters is possible (this was needed for implementing
10181 SRFI-4's read synax `f32(...)').
10182
10183 * num2integral.i.c: Use scm_t_signed_bits instead of scm_t_bits,
10184 because the latter is unsigned now and breaks comparisons like
10185 (n < (scm_t_signed_bits)MIN_VALUE).
10186
10187 2001-06-26 Neil Jerram <neil@ossau.uklinux.net>
10188
10189 * eval.h, eval.c (scm_call_4): New function.
10190
10191 * eval.c (SCM_APPLY, SCM_CEVAL, ENTER_APPLY): Call trap handlers
10192 directly rather than dispatching to them via scm_ithrow and a lazy
10193 catch.
10194
10195 * eval.c (scm_evaluator_trap_table), eval.h (SCM_ENTER_FRAME_HDLR,
10196 SCM_APPLY_FRAME_HDLR, SCM_EXIT_FRAME_HDLR): Add three new options
10197 for trap handler procedures.
10198
10199 * debug.h (SCM_RESET_DEBUG_MODE): Add checks for trap handler
10200 procedures not being #f.
10201
10202 2001-06-27 Michael Livshin <mlivshin@bigfoot.com>
10203
10204 * Makefile.am (c-tokenize.c): add rule to generate it.
10205 (EXTRA_DIST): add c-tokenize.lex, so it gets distributed.
10206
10207 filter-doc-snarfage.c: remove.
10208
10209 2001-06-26 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10210
10211 * ports.c (scm_output_port_p): Use result of SCM_COERCE_OUTPORT.
10212
10213 The following set of changes makes compiling Guile under various
10214 Windows compilers easier. Compilation under GNU systems should
10215 not be affected at all.
10216
10217 Thanks to Stefan Jahn for all necessary information, patches and
10218 testing.
10219
10220 * posix.c: Conditialize getpwent, getgrent, kill, getppid, getuid,
10221 getpgrp, ttyname, primitive-fork and some header inclusion for
10222 Windows.
10223
10224 * random.c: Define M_PI, if not predefined and use __int64 for
10225 LONG64 under Windows.
10226
10227 * scmsigs.c: Emulate some functions (alarm, sleep, kill) under
10228 Windows and conditionalize some signal names.
10229
10230 * socket.c (scm_getsockopt): Added missing comma.
10231 Include socket library header under Windows.
10232
10233 * stime.c (CLKTCK): Add cast to int, to make it compile under
10234 Windows.
10235
10236 * ports.c (truncate): New function, compiled only under Windows.
10237
10238 * net_db.c: Do not declare errno under Windows.
10239
10240 * iselect.h, inet_aton.c: Include socket library headers under
10241 Windows.
10242
10243 * guile.c (inner_main): Under Windows, initialize socket library
10244 and initialize gdb_interface data structures.
10245
10246 * gdb_interface.h: Under Windows, gdb_interface cannot be
10247 initialized statically. Initialize at runtime instead.
10248
10249 * fports.c (write_all): ssize_t -> size_t.
10250 (fport_print): Conditionalize call to ttyname().
10251 (getflags): New function, compiled only under Windows.
10252
10253 * filesys.c: Conditionalize inclusion of <pwd.h>. Conditionalize
10254 primitives chown, link, fcntl.
10255 (scm_basename, scm_dirname): Under Windows, handle \ as well as /
10256 as path seperator.
10257
10258 * backtrace.c: Include <io.h> under Windows.
10259
10260 * async.h (ASYNCH, SCM_ASYNC_H): Rename <foo>H to SCM_<foo>_H.
10261
10262 * _scm.h: Added preprocessor conditional for __MINGW32__ for errno
10263 declaration.
10264
10265 2001-06-27 Keisuke Nishida <kxn30@po.cwru.edu>
10266
10267 * eval.c (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
10268 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): New functions.
10269 * eval.h (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
10270 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): Declared.
10271 * async.c (scm_run_asyncs), coop-threads.c (scheme_body_bootstrip,
10272 scheme_handler_bootstrip), debug.c (with_traps_inner), dynwind.c
10273 (scm_dynamic_wind, scm_dowinds), environments.c
10274 (import_environment_conflict), eval.c (scm_macroexp, scm_force,
10275 scm_primitive_eval_x, scm_primitive_eval), fluids.c (apply_thunk),
10276 goops.c (GETVAR, purgatory, make_class_from_template,
10277 scm_ensure_accessor), hashtab.c (scm_ihashx, scm_sloppy_assx,
10278 scm_delx_x, fold_proc), hooks.c (scm_c_run_hook), load.c
10279 (scm_primitive_load), modules.c (scm_resolve_module,
10280 scm_c_define_module, scm_c_use_module, scm_c_export,
10281 module_variable, scm_eval_closure_lookup, scm_sym2var,
10282 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
10283 ports.c (scm_port_for_each), print.c (scm_printer_apply),
10284 properties.c (scm_primitive_property_ref), ramap.c (ramap,
10285 ramap_cxr, rafe, scm_array_index_map_x, read.c (scm_lreadr),
10286 scmsigs.c (sys_deliver_signals), sort.c (applyless), strports.c
10287 (scm_object_to_string, scm_call_with_output_string,
10288 scm_call_with_input_string), throw.c (scm_body_thunk,
10289 scm_handle_by_proc, hbpca_body), unif.c (scm_make_shared_array,
10290 scm_make_shared_array), vports.c (sf_flush, sf_write,
10291 sf_fill_input, sf_close): Use one of the above functions.
10292 * goops.c, hashtab.c, scmsigs.c, sort.c: #include "libguile/root.h".
10293
10294 2001-06-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
10295
10296 * filesys.c (scm_close), ports.c (scm_close_port,
10297 scm_port_closed_p), strop.c (scm_string_null_p): Use SCM_BOOL
10298 instead of SCM_NEGATE_BOOL.
10299
10300 * filesys.c (scm_stat): Clean up type dispatch.
10301
10302 * filesys.c (scm_stat), ports.c (scm_input_port_p,
10303 scm_output_port_p): Get rid of redundant IM type check.
10304
10305 * filesys.c (scm_readdir, scm_getcwd, scm_readlink), gh_data.c
10306 (gh_str2scm), load.c (scm_primitive_load, scm_internal_parse_path,
10307 scm_search_path), net_db.c (scm_gethost, scm_getnet, scm_getproto,
10308 scm_return_entry), numbers.c (scm_number_to_string), objects.c
10309 (scm_make_subclass_object), ports.c (scm_port_mode), read.c
10310 (scm_lreadr), simpos.c (scm_getenv), socket.c (scm_inet_ntoa,
10311 scm_addr_vector), stime.c (scm_strftime), strings.c
10312 (scm_makfromstrs, scm_makfrom0str, scm_substring), strings.h
10313 (SCM_STRING_COERCE_0TERMINATION_X), strop.c (string_copy,
10314 scm_string_split), strports.c (scm_strport_to_string), symbols.c
10315 (scm_symbol_to_string), vports.c (sf_write): Use scm_mem2string
10316 instead of scm_makfromstr.
10317
10318 * net_db.c (scm_sethost, scm_setnet, scm_setproto, scm_setserv),
10319 ports.c (scm_close_all_ports_except), read.c (scm_lreadr,
10320 scm_read_hash_extend), stime.c (scm_strftime), strings.c
10321 (scm_string_append, scm_string), strings.h (SCM_STRINGP,
10322 SCM_STRING_COERCE_0TERMINATION_X, SCM_RWSTRINGP), strop.c
10323 (string_capitalize_x): Prefer explicit type check over SCM_N?IMP,
10324 !SCM_<pred> over SCM_N<pred>.
10325
10326 * strings.[ch] (scm_makfromstr): Deprecated.
10327
10328 (scm_mem2string): New function, replaces scm_makfromstr.
10329
10330 * strings.c (scm_substring), strop.c (string_copy,
10331 scm_string_split), strports.c (scm_strport_to_string), symbols.c
10332 (scm_symbol_to_string): Fix gc problem.
10333
10334 * strings.h (STRINGSH, SCM_STRINGS_H): Rename <foo>H to
10335 SCM_<foo>_H.
10336
10337 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Eliminate
10338 warning about comparing signed and unsigned values. This fix is
10339 not optimal, since it won't work reliably if sizeof (c_start) >
10340 sizeof (size_t) or sizeof (c_end) > sizeof (size_t). A better
10341 solution is to define this macro as an inline function, thus
10342 allowing to specifiy the types of c_start and c_end.
10343
10344 2001-06-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
10345
10346 * debug.h (SCM_DEBUGOBJ_FRAME): Deliver result as a
10347 scm_t_debug_frame*.
10348
10349 * debug.h (DEBUGH, SCM_DEBUG_H), stacks.h (STACKSH, SCM_STACKSH):
10350 Rename <foo>H to SCM_<foo>_H.
10351
10352 * stacks.c (NEXT_FRAME, narrow_stack): Prefer explicit type check
10353 over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
10354
10355 (narrow_stack): Make i unsigned. Don't use side-effecting
10356 operations in conditions.
10357
10358 (narrow_stack, scm_make_stack, scm_stack_id,
10359 scm_last_stack_frame): Get rid of redundant SCM_N?IMP checks.
10360
10361 (scm_make_stack, scm_stack_id, scm_last_stack_frame): Clean up
10362 type dispatch. No need to cast result of SCM_DEBUGOBJ_FRAME any
10363 more.
10364
10365 (scm_stack_ref, scm_frame_previous, scm_frame_next): Fix
10366 signedness.
10367
10368 (scm_last_stack_frame): Remove bogus `;'.
10369
10370 * stacks.h (SCM_FRAMEP): Fix type check.
10371
10372 2001-06-25 Michael Livshin <mlivshin@bigfoot.com>
10373
10374 * Makefile.am (MAINTAINERCLEANFILES): be sure to remove
10375 c-tokenize.c when doing maintainer-clean.
10376
10377 * snarf.h (SCM_SNARF_DOCS): change the "grammar" slightly.
10378
10379 * guile-snarf-docs.in, guile-snarf-docs-texi.in: rewrite &
10380 simplify.
10381
10382 * eval.c: all hash signs are in column 0.
10383
10384 * Makefile.am (guile_filter_doc_snarfage): build using
10385 c-tokenize.c, not filter-doc-snarfage.c.
10386 rearrange snarfing dependencies a bit.
10387
10388 * c-tokenize.lex: new file.
10389
10390 2001-06-25 Marius Vollmer <mvo@zagadka.ping.de>
10391
10392 * srcprop.h, srcprop.c (scm_srcprops_to_plist): Renamed from
10393 scm_t_srcpropso_plist. See the big type renaming.
10394 * coop-defs.h (scm_mutex_trylock, scm_cond_timedwait): Likewise.
10395 Thanks to Seth Alves!
10396
10397 * numbers.c (SIZE_MAX, PTRDIFF_MIN, PTRDIFF_MAX): Only define when
10398 they aren't defined already.
10399
10400 2001-06-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
10401
10402 * backtrace.c (display_backtrace_body): Use SCM_VALIDATE_STACK
10403 and SCM_VALIDATE_OPOUTPORT instead of SCM_ASSERT. Fix signedness
10404 problem.
10405
10406 * backtrace.c (display_expression, scm_set_print_params_x,
10407 display_application, display_frame, scm_backtrace), numbers.c
10408 (scm_istring2number), objects.c (scm_class_of,
10409 scm_mcache_lookup_cmethod, scm_mcache_compute_cmethod): Prefer
10410 explicit type check over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
10411
10412 * fluids.c (scm_fluid_ref, scm_fluid_set_x): Fluid numbers are
10413 always positive.
10414
10415 * numbers.c (scm_i_mkbig): Remove unnecessary casts, remove
10416 unnecessary SCM_DEFER_INTS, SCM_ALLOW_INTS.
10417
10418 * objects.c (scm_class_of): Type fix.
10419
10420 (scm_mcache_lookup_cmethod): Improved comment, simplified,
10421 eliminated goto.
10422
10423 * pairs.h (scm_error_pair_access): The function can return if
10424 called recursively.
10425
10426 2001-06-20 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10427
10428 * init.c (scm_init_guile_1): Removed initialization of tag.c.
10429
10430 * gdbint.c, init.c: Removed inclusion of tag.h.
10431
10432 * tag.h, tag.c: Removed files.
10433
10434 * Makefile.am: Removed tag.{h,c,doc,x} in various places.
10435
10436 2001-06-20 Gary Houston <ghouston@arglist.com>
10437
10438 * deprecation.c, extensions.c, rw.c: include string.h.
10439
10440 2001-06-19 Gary Houston <ghouston@arglist.com>
10441
10442 * filter-doc-snarfage.c (process): added ungetc in
10443 MULTILINE_COOKIE case since otherwise it fails when there's no
10444 space between the '(' and the quote of the following string
10445 (gcc 3.0).
10446
10447 2001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
10448
10449 Throughout: replace "scm_*_t" with "scm_t_*", except "scm_lisp_t".
10450
10451 2001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
10452
10453 * unif.h (SCM_ARRAY_NDIM): Shift then cast so that no sign
10454 extension takes place.
10455 * strings.h (SCM_STRING_LENGTH): Likewise.
10456 (SCM_STRING_MAX_LENGTH): Use unsigned numbers.
10457
10458 * __scm.h (ptrdiff_t): Typedef to long when configure didn't find
10459 it.
10460
10461 * tags.h: Include <stdint.h> when we have it.
10462 (scm_bits_t): Changed to be a unsigned type. Use uintptr_t when
10463 available. Else use "unsigned long".
10464 (scm_signed_bits_t): New.
10465
10466 * numbers.h (SCM_SRS): Cast shiftee to scm_signed_bits_t.
10467 (SCM_INUM): Cast result to scm_signed_bits_t.
10468
10469 2001-06-13 Thien-Thi Nguyen <ttn@revel.glug.org>
10470
10471 * mkstemp.c: Update path to #include file scmconfig.h.
10472 Thanks to Golubev I. N.
10473
10474 2001-06-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
10475
10476 * struct.h (SCM_STRUCT_VTABLE_FLAGS): New macro.
10477
10478 * goops.h (SCM_NUMBER_OF_SLOTS): Removed bogus `\' at the end of
10479 the macro definition.
10480
10481 (SCM_CLASSP, SCM_INSTANCEP, SCM_PUREGENERICP, SCM_ACCESSORP,
10482 SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Use SCM_STRUCT_VTABLE_FLAGS
10483 instead of SCM_INST_TYPE.
10484
10485 (SCM_ACCESSORP, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Make sure
10486 the object is a struct before accessing its struct flags.
10487
10488 (SCM_INST_TYPE, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Deprecated.
10489
10490 2001-06-10 Gary Houston <ghouston@arglist.com>
10491
10492 * rdelim.c (scm_init_rdelim_builtins): don't try to activate the
10493 (ice-9 rdelim) module in (guile) and (guile-user). it didn't
10494 work reliably anymore. try it from boot-9.scm instead.
10495
10496 2001-06-09 Marius Vollmer <mvo@zagadka.ping.de>
10497
10498 * ports.c (scm_lfwrite): Maintain columnd and row count in port.
10499 Thanks to Matthias Köppe!
10500
10501 2001-06-08 Michael Livshin <mlivshin@bigfoot.com>
10502
10503 * snarf.h, filter-doc-snarfage.c: more changes to cope with
10504 space-happy C preprocessors.
10505
10506 * filter-doc-snarfage.c, guile-snarf.in: try to cope with spaces
10507 inside cookies. thanks to Matthias Köppe!
10508
10509 2001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
10510
10511 * keywords.c (keyword_print): Don't use SCM_C[AD]R to access
10512 keywords. Fix gc protection.
10513
10514 * objects.c (scm_mcache_lookup_cmethod): Don't use side effecting
10515 operations in macro calls.
10516
10517 * pairs.c (scm_error_pair_access): Avoid recursion.
10518
10519 Thanks to Matthias Koeppe for reporting the bugs that correspond
10520 to the following set of patches.
10521
10522 * unif.c (scm_bit_set_star_x, scm_bit_invert_x), vectors.h
10523 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Obtain the
10524 bitvector base address using SCM_BITVECTOR_BASE.
10525
10526 * unif.h (SCM_BITVECTOR_BASE): Return the base address as an
10527 unsigned long*.
10528
10529 2001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
10530
10531 * goops.c (SCM_CLASS_REDEF): Removed.
10532
10533 * vectors.h (VECTORSH, SCM_VECTORS_H): Renamed <foo>H to
10534 SCM_<foo>_H.
10535
10536 Thanks to Matthias Koeppe for reporting the bugs that correspond
10537 to the following set of patches.
10538
10539 * goops.c (scm_sys_prep_layout_x, scm_basic_basic_make_class,
10540 create_basic_classes, scm_sys_fast_slot_set_x, set_slot_value,
10541 scm_sys_allocate_instance, clear_method_cache,
10542 scm_sys_invalidate_method_cache_x, scm_make,
10543 create_standard_classes, scm_make_port_classes, scm_make_class,
10544 scm_add_slot): Use SCM_SET_SLOT to set slot values.
10545
10546 (prep_hashsets): Use SCM_SET_HASHSET to set class hash values.
10547
10548 * goops.h (SCM_SET_SLOT, SCM_SET_HASHSET): New macros.
10549
10550 * ramap.c (BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
10551 UNARY_ELTS_CODE): Remove bogus break statement.
10552
10553 * vectors.h (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR):
10554 Don't access bit vectors elements as SCM objects.
10555
10556 * weaks.c (scm_make_weak_vector, scm_make_weak_key_hash_table,
10557 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
10558 Don't assign to an unpacked value.
10559
10560 2001-06-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
10561
10562 * __scm.h (SCM_NORETURN): Moved here from error.h.
10563
10564 (SCM_UNUSED): New macro.
10565
10566 (SCM_DEBUG_PAIR_ACCESSES): New macro.
10567
10568 * backtrace.c (display_error_handler), continuations.c
10569 (continuation_print), debug.c (debugobj_print), dynwind.c
10570 (guards_print), environments.c (observer_print,
10571 core_environments_finalize, leaf_environment_cell,
10572 leaf_environment_print, eval_environment_print,
10573 eval_environment_observer, import_environment_define,
10574 import_environment_undefine, import_environment_print,
10575 import_environment_observer, export_environment_define,
10576 export_environment_undefine, export_environment_print,
10577 export_environment_observer), eval.c (scm_m_quote, scm_m_begin,
10578 scm_m_if, scm_m_set_x, scm_m_and, scm_m_or, scm_m_case,
10579 scm_m_cond, scm_m_lambda, scm_m_letstar, scm_m_do, scm_m_delay,
10580 scm_m_letrec1, scm_m_apply, scm_m_cont, scm_m_nil_cond,
10581 scm_m_nil_ify, scm_m_t_ify, scm_m_0_cond, scm_m_0_ify,
10582 scm_m_1_ify, scm_m_atfop, scm_m_at_call_with_values), evalext.c
10583 (scm_m_generalized_set_x), fluids.c (fluid_print), fports.c
10584 (fport_print), gc.c (gc_start_stats, scm_remember_upto_here_1,
10585 scm_remember_upto_here_2, scm_remember_upto_here, mark_gc_async),
10586 gh_init.c (gh_standard_handler), goops.c (get_slot_value,
10587 set_slot_value, test_slot_existence, scm_change_object_class,
10588 scm_m_atslot_ref, scm_m_atslot_set_x, make_struct_class,
10589 default_setter), guardians.c (guardian_print, guardian_gc_init,
10590 guardian_zombify, whine_about_self_centered_zombies), guile.c
10591 (inner_main), init.c (stream_handler), keywords.c (keyword_print),
10592 mallocs.c (malloc_print), numbers.c (scm_print_real,
10593 scm_print_complex, scm_bigprint), ports.c (flush_port_default,
10594 end_input_default, scm_port_print, fill_input_void_port,
10595 write_void_port), root.c (root_print), smob.c (scm_mark0,
10596 scm_free0, scm_smob_print, scm_smob_apply_1_error,
10597 scm_smob_apply_2_error, scm_smob_apply_3_error, free_print),
10598 stime.c (restorezone), strings.c (scm_makfromstr), struct.c
10599 (scm_struct_free_0, scm_struct_free_standard,
10600 scm_struct_free_entity, scm_struct_gc_init, scm_free_structs),
10601 throw.c (jmpbuffer_print, lazy_catch_print, ss_handler,
10602 scm_handle_by_throw, scm_ithrow), weaks.c
10603 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
10604 scm_scan_weak_vectors), ramap.c (scm_array_fill_int), filesys.c
10605 (scm_dir_print): Mark unused parameters with SCM_UNUSED.
10606
10607 * error.h (SCM_NORETURN): Moved to __scm.h.
10608
10609 * error.h (ERRORH, SCM_ERROR_H), pairs.h (PAIRSH, SCM_PAIRS_H):
10610 Renamed <foo>H to SCM_<foo>_H.
10611
10612 * gc.c (debug_cells_gc_interval): New static variable.
10613
10614 (scm_assert_cell_valid): If selected by the user, perform
10615 additional garbage collections.
10616
10617 (scm_set_debug_cell_accesses_x): Extended to let the user specify
10618 if additional garbage collections are desired.
10619
10620 (mark_gc_async): If additional garbage collections are selected
10621 by the user, don't call the after-gc-hook. Instead require the
10622 user to run the hook manually.
10623
10624 * pairs.c (scm_error_pair_access): New function. Only compiled
10625 if SCM_DEBUG_PAIR_ACCESSES is set to 1.
10626
10627 * pairs.h (SCM_VALIDATE_PAIR): New macro.
10628
10629 (SCM_CAR, SCM_CDR, SCM_SETCAR, SCM_SETCDR): If
10630 SCM_DEBUG_PAIR_ACCESSES is set to 1, make sure that the argument
10631 is a real pair object. (Glocs are also accepted, but that may
10632 change.) If not, abort with an error message.
10633
10634 2001-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10635
10636 * eval.c (SCM_VALIDATE_NON_EMPTY_COMBINATION): New macro.
10637
10638 (SCM_CEVAL, SCM_APPLY): Replace calls to SCM_EVALIM2 with calls
10639 to SCM_VALIDATE_NON_EMPTY_COMBINATION.
10640
10641 2001-06-05 Marius Vollmer <mvo@zagadka.ping.de>
10642
10643 * extensions.c (scm_c_register_extension): Allow NULL as library
10644 name.
10645 (load_extension): Ignore NULL library names when comparing.
10646
10647 * hash.c (scm_hasher): Use SCM_UNPACK in the case labels so that
10648 non-pointers are being compared. Thanks to Alexander Klimov!
10649
10650 2001-06-04 Gary Houston <ghouston@arglist.com>
10651
10652 * rw.c (scm_write_string_partial): new procedure implementing
10653 write-string/partial in (ice-9 rw).
10654 * rw.h: declare scm_write_string_partial.
10655
10656 2001-06-04 Marius Vollmer <mvo@zagadka.ping.de>
10657
10658 * keywords.c (keyword_print): Substract 1 from length of symbol
10659 name, accounting for the silly dash.
10660
10661 * dynl.c (scm_registered_modules, scm_clear_registered_modules):
10662 Do not emit deprecation warning.
10663
10664 Added exception notice to all files.
10665
10666 * dynl.c: Include "deprecation.h".
10667
10668 2001-06-03 Marius Vollmer <mvo@zagadka.ping.de>
10669
10670 * dynl.c (scm_register_module_xxx, scm_registered_modules,
10671 scm_clear_registered_modules): Deprecated.
10672
10673 2001-06-02 Rob Browning <rlb@cs.utexas.edu>
10674
10675 * .cvsignore: add guile_filter_doc_snarfage guile-snarf-docs
10676 guile-snarf-docs-texi.
10677
10678 * fports.c: HAVE_ST_BLKSIZE changed to
10679 HAVE_STRUCT_STAT_ST_BLKSIZE.
10680 (scm_fport_buffer_add): HAVE_ST_BLKSIZE changed to
10681 HAVE_STRUCT_STAT_ST_BLKSIZE.
10682
10683 * filesys.c (scm_stat2scm): HAVE_ST_RDEV changed to
10684 HAVE_STRUCT_STAT_ST_RDEV.
10685 (scm_stat2scm): HAVE_ST_BLKSIZE changed to
10686 HAVE_STRUCT_STAT_ST_BLKSIZE.
10687 (scm_stat2scm): HAVE_ST_BLOCKS changed to
10688 HAVE_STRUCT_STAT_ST_BLOCKS.
10689
10690 2001-06-02 Marius Vollmer <mvo@zagadka.ping.de>
10691
10692 * strports.c (scm_eval_string): Use scm_primitive_eval_x instead
10693 of scm_eval_x to allow module changes between the forms in the
10694 string. Set/restore module using scm_c_call_with_current_module.
10695
10696 * mkstemp.c: New file, slightly modified from libiberties
10697 mkstemps.c.
10698
10699 2001-05-31 Michael Livshin <mlivshin@bigfoot.com>
10700
10701 * guile-snarf-docs.in, guile-snarf-docs-texi.in,
10702 filter-doc-snarfage.c: new files.
10703
10704 * Makefile.am: add stuff to [build,] use and distribute
10705 guile-snarf-docs, guile-snarf-docs-texi, guile_filter_doc_snarfage.
10706
10707 * guile-snarf.in: grok the new snarf output.
10708
10709 * snarf.h: make the output both texttools- and `read'-friendly.
10710
10711 * guile-doc-snarf.in: reimplement in terms of guile-snarf and
10712 guile-snarf-docs. (should also deprecate, I guess. maybe not).
10713
10714 2001-05-31 Marius Vollmer <mvo@zagadka.ping.de>
10715
10716 * print.c (scm_simple_format): Support "~~" and "~%". Signal
10717 error for unsupported format controls and for superflous
10718 arguments. Thanks to Daniel Skarda!
10719
10720 * print.h, print.c (scm_print_symbol_name): Factored out of
10721 scm_iprin1.
10722 (scm_iprin1): Call it.
10723
10724 * keywords.c (keyword_print): Use scm_print_symbol_name so that
10725 weird names are printed correctly.
10726
10727 * print.c (scm_print_symbol_name): Symbols whose name starts with
10728 `#' or `:' or ends with `:' are considered weird.
10729
10730 2001-05-30 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10731
10732 * numbers.c (scm_difference, scm_divide): Clarified comments for -
10733 and /.
10734
10735 2001-05-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10736
10737 * debug.h: Removed prototype for scm_eval_string.
10738
10739 2001-05-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10740
10741 * symbols.c (scm_gensym): Fix buffer overrun (try `(gensym
10742 (make-string 2000 #\!))' in an older version).
10743
10744 Change strncpy to memcpy to allow embedded NUL characters in
10745 symbol prefix.
10746
10747 2001-05-28 Michael Livshin <mlivshin@bigfoot.com>
10748
10749 * hooks.c (scm_create_hook): deprecated.
10750 (make_hook): deleted.
10751 (scm_make_hook): all the hook creation code is now here.
10752
10753 * gc.c (scm_init_gc): don't call `scm_create_hook'. instead make
10754 a hook, make it permanent, and do a `scm_c_define' on it.
10755
10756 * strop.c (s_scm_string_capitalize_x): fix docstring quoting.
10757
10758 * socket.c (s_scm_inet_pton): fix docstring quoting.
10759 (s_scm_inet_ntop): ditto.
10760
10761 * num2integral.i.c (INTEGRAL2NUM): cast to fix a warning.
10762
10763 * hashtab.c (scm_internal_hash_fold): fix argument position in
10764 SCM_ASSERT.
10765
10766 * environments.c (s_scm_import_environment_set_imports_x): fix
10767 argument position in SCM_ASSERT.
10768
10769 * debug.c (s_scm_make_gloc): fix SCM packing/unpacking.
10770 (s_scm_make_iloc): ditto.
10771
10772 2001-05-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
10773
10774 * __scm.h (SCM_DEBUG_TYPING_STRICTNESS): Make 1 the default.
10775
10776 * eval.c (promise_print): Read the promise's value as an object.
10777
10778 (SCM_CEVAL): Don't perform side-effecting operations in macro
10779 parameters.
10780
10781 * eval.h (SCM_EVALIM2): Fix the typing strictness of the
10782 conditional expression.
10783
10784 * gc.c (scm_master_freelist, scm_master_freelist2): Added missing
10785 initializer.
10786
10787 * gh_data.c (gh_set_substr): Removed redundant unsigned >= 0
10788 text, removed redundant computation of effective_length and fixed
10789 the overflow check.
10790
10791 * goops.c (test_slot_existence): Use SCM_EQ_P to compare SCM
10792 values.
10793
10794 (wrap_init): Don't use SCM_C[AD]R for non pairs.
10795
10796 (hell): Make it a scm_bits_t pointer rather than a SCM pointer.
10797
10798 * goops.c (scm_sys_modify_class), strports.c (st_resize_port),
10799 struct.h (SCM_SET_STRUCT_PRINTER): Store unpacked values.
10800
10801 * goops.h (SCM_ACCESSORS_OF, SCM_SLOT): Return a SCM value.
10802
10803 * goops.h (GOOPSH, SCM_GOOPS_H), modules.h (MODULESH,
10804 SCM_MODULES_H), objects.h (OBJECTSH, SCM_OBJECTS_H), struct.h
10805 (STRUCTH, SCM_STRUCT_H), symbols.h (SYMBOLSH, SCM_SYMBOLS_H),
10806 __scm.h (__SCMH, SCM___SCM_H): Change <foo>H to SCM_<foo>_H.
10807
10808 * modules.[ch] (scm_module_tag): Make it a scm_bits_t value.
10809
10810 * objects.h (SCM_SET_CLASS_INSTANCE_SIZE): Fixed typing.
10811
10812 * ramap.c (ramap_rp): Removed bogus `;'.
10813
10814 * sort.c (scm_restricted_vector_sort_x): Fixed signedness
10815 problem.
10816
10817 * symbols.h (SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS, SCM_SYMBOL_FUNC,
10818 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS):
10819 Read SCM objects rather than scm_bits_t values.
10820
10821 * tags.h (SCM_VOIDP_TEST): Removed.
10822
10823 (SCM_DEBUG_TYPING_STRICTNESS): Now takes values 0, 1, 2. The
10824 value of 2 now corresponds to the former 1, the current 1
10825 corresponds to the former situation that SCM_VOIDP_TEST was
10826 defined.
10827
10828 (SCM): Now defined as typedef struct scm_unused_struct * SCM;
10829 If this appears to be not ANSI compliant, we will change it to
10830 typedef struct scm_unused_struct { } * SCM;
10831 Thanks to Han-Wen Nienhuys for the suggestion.
10832
10833 * unif.c (scm_array_set_x): Fix typing problem, and use
10834 SCM_UVECTOR_BASE instead of SCM_VELTS or SCM_CELL_WORD_1 when
10835 dealing with uniform vectors.
10836
10837 2001-05-27 Michael Livshin <mlivshin@bigfoot.com>
10838
10839 * gc.c (scm_init_storage): init `scm_gc_registered_roots'.
10840 (scm_igc): mark from them, too (precisely, not conservatively!).
10841
10842 * root.h (scm_gc_registered_roots): new object in
10843 scm_sys_protects.
10844
10845 * hooks.c (scm_create_hook): call `scm_gc_protect_object' instead
10846 `scm_protect_object'. shouldn't call it at all, though, it seems.
10847
10848 * gc.c (scm_[un]protect_object): deprecated.
10849 (scm_gc_[un]protect_object): new names for scm_[un]protect_object.
10850 (scm_gc_[un]register_root[s]): new.
10851
10852 * gc.h: add prototypes for scm_gc_[un]protect_object,
10853 scm_gc_[un]register_root[s].
10854
10855 2001-05-26 Michael Livshin <mlivshin@bigfoot.com>
10856
10857 revert the controversial part of the 2001-05-24 changes.
10858
10859 2001-05-25 Marius Vollmer <mvo@zagadka.ping.de>
10860
10861 * modules.c (scm_env_module): Exported to Scheme.
10862
10863 * eval.c (scm_debug_opts): New option `show-file-name'.
10864
10865 * debug.h (SCM_SHOW_FILE_NAME): New.
10866
10867 * backtrace.c: Include "libguile/filesys.h".
10868 (sym_base, display_backtrace_get_file_line,
10869 display_backtrace_file, display_backtrace_file_and_line): New.
10870 (display_frame): Call display_backtrace_file_and_line if that is
10871 requested.
10872 (display_backtrace_body): Call scm_display_backtrace_file if
10873 requested.
10874
10875 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr):
10876 Prototypes removed since there's no definition for these
10877 functions.
10878
10879 2001-05-24 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10880
10881 * unif.c (scm_make_ra, array_free), unif.h (SCM_ARRAY_DIMS):
10882 Changed use of scm_array->scm_array_t and
10883 scm_array_dim->scm_array_dim_t to enable build with
10884 --disable-deprecated.
10885
10886 2001-05-24 Michael Livshin <mlivshin@bigfoot.com>
10887
10888 The purpose of this set of changes is to regularize Guile's usage
10889 of ANSI C integral types, with the following ideas in mind:
10890
10891 - SCM does not nesessarily have to be long.
10892 - long is not nesessarily enough to store pointers.
10893 - long is not nesessarily the same size as int.
10894
10895 The changes are incomplete and possibly buggy. Please test on
10896 something exotic.
10897
10898 * validate.h
10899 (SCM_NUM2{SIZE,PTRDIFF,SHORT,USHORT,BITS,UBITS,INT,UINT}[_DEF]):
10900 new macros.
10901
10902 * unif.h: type renaming:
10903 scm_array -> scm_array_t
10904 scm_array_dim -> scm_array_dim_t
10905 the old names are deprecated, all in-Guile uses changed.
10906
10907 * tags.h (scm_ubits_t): new typedef, representing unsigned
10908 scm_bits_t.
10909
10910 * stacks.h: type renaming:
10911 scm_info_frame -> scm_info_frame_t
10912 scm_stack -> scm_stack_t
10913 the old names are deprecated, all in-Guile uses changed.
10914
10915 * srcprop.h: type renaming:
10916 scm_srcprops -> scm_srcprops_t
10917 scm_srcprops_chunk -> scm_srcprops_chunk_t
10918 the old names are deprecated, all in-Guile uses changed.
10919
10920 * gsubr.c, procs.c, print.c, ports.c, read.c, rdelim.c, ramap.c,
10921 rw.c, smob.c, sort.c, srcprop.c, stacks.c, strings.c, strop.c,
10922 strorder.c, strports.c, struct.c, symbols.c, unif.c, values.c,
10923 vectors.c, vports.c, weaks.c:
10924 various int/size_t -> size_t/scm_bits_t changes.
10925
10926 * random.h: type renaming:
10927 scm_rstate -> scm_rstate_t
10928 scm_rng -> scm_rng_t
10929 scm_i_rstate -> scm_i_rstate_t
10930 the old names are deprecated, all in-Guile uses changed.
10931
10932 * procs.h: type renaming:
10933 scm_subr_entry -> scm_subr_entry_t
10934 the old name is deprecated, all in-Guile uses changed.
10935
10936 * options.h (scm_option_t.val): unsigned long -> scm_bits_t.
10937 type renaming:
10938 scm_option -> scm_option_t
10939 the old name is deprecated, all in-Guile uses changed.
10940
10941 * objects.c: various long -> scm_bits_t changes.
10942 (scm_i_make_class_object): flags: unsigned long -> scm_ubits_t
10943
10944 * numbers.h (SCM_FIXNUM_BIT): deprecated, renamed to
10945 SCM_I_FIXNUM_BIT.
10946
10947 * num2integral.i.c: new file, multiply included by numbers.c, used
10948 to "templatize" the various integral <-> num conversion routines.
10949
10950 * numbers.c (scm_mkbig, scm_big2num, scm_adjbig, scm_normbig,
10951 scm_copybig, scm_2ulong2big, scm_dbl2big, scm_big2dbl):
10952 deprecated.
10953 (scm_i_mkbig, scm_i_big2inum, scm_i_adjbig, scm_i_normbig,
10954 scm_i_copybig, scm_i_short2big, scm_i_ushort2big, scm_i_int2big,
10955 scm_i_uint2big, scm_i_long2big, scm_i_ulong2big, scm_i_bits2big,
10956 scm_i_ubits2big, scm_i_size2big, scm_i_ptrdiff2big,
10957 scm_i_long_long2big, scm_i_ulong_long2big, scm_i_dbl2big,
10958 scm_i_big2dbl, scm_short2num, scm_ushort2num, scm_int2num,
10959 scm_uint2num, scm_bits2num, scm_ubits2num, scm_size2num,
10960 scm_ptrdiff2num, scm_num2short, scm_num2ushort, scm_num2int,
10961 scm_num2uint, scm_num2bits, scm_num2ubits, scm_num2ptrdiff,
10962 scm_num2size): new functions.
10963
10964 * modules.c (scm_module_reverse_lookup): i, n: int -> scm_bits_t.
10965
10966 * load.c: change int -> size_t in various places (where the
10967 variable is used to store a string length).
10968 (search-path): call scm_done_free, not scm_done_malloc.
10969
10970 * list.c (scm_ilength): return a scm_bits_t, not long.
10971 some other {int,long} -> scm_bits_t changes.
10972
10973 * hashtab.c: various [u]int -> scm_bits_t changes.
10974 scm_ihashx_closure -> scm_ihashx_closure_t (and made a typedef).
10975 (scm_ihashx): n: uint -> scm_bits_t
10976 use scm_bits2num instead of scm_ulong2num.
10977
10978 * gsubr.c: various int -> scm_bits_t changes.
10979
10980 * goops.[hc]: various {int,long} -> scm_bits_t changes.
10981
10982 * gh_data.c (gh_num2int): no loss of precision any more.
10983
10984 * gh.h (gh_str2scm): len: int -> size_t
10985 (gh_{get,set}_substr): start: int -> scm_bits_t,
10986 len: int -> size_t
10987 (gh_<num>2scm): n: int -> scm_bits_t
10988 (gh_*vector_length): return scm_[u]size_t, not unsigned long.
10989 (gh_length): return scm_bits_t, not unsigned long.
10990
10991 * gc.[hc]: various small changes relating to many things stopping
10992 being long and starting being scm_[u]bits_t instead.
10993 scm_mallocated should no longer wrap around.
10994
10995 * fports.h: type renaming:
10996 scm_fport -> scm_fport_t
10997 the old name is deprecated, all in-Guile uses changed.
10998
10999 * fports.c (fport_fill_input): count: int -> scm_bits_t
11000 (fport_flush): init_size, remaining, count: int -> scm_bits_t
11001
11002 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr): removed
11003 those prototypes, as the functions they prototype don't exist.
11004
11005 * fports.c (default_buffer_size): int -> size_t
11006 (scm_fport_buffer_add): read_size, write_size: int -> scm_bits_t
11007 default_size: int -> size_t
11008 (scm_setvbuf): csize: int -> scm_bits_t
11009
11010 * fluids.c (n_fluids): int -> scm_bits_t
11011 (grow_fluids): old_length, i: int -> scm_bits_t
11012 (next_fluid_num, scm_fluid_ref, scm_fluid_set_x): n: int ->
11013 scm_bits_t
11014 (scm_c_with_fluids): flen, vlen: int -> scm_bits_t
11015
11016 * filesys.c (s_scm_open_fdes): changed calls to SCM_NUM2LONG to
11017 the new and shiny SCM_NUM2INT.
11018
11019 * extensions.c: extension -> extension_t (and made a typedef).
11020
11021 * eval.h (SCM_IFRAME): cast to scm_bits_t, not int. just so
11022 there are no nasty surprises if/when the various deeply magic tag
11023 bits move somewhere else.
11024
11025 * eval.c: changed the locals used to store results of SCM_IFRAME,
11026 scm_ilength and such to be of type scm_bits_t (and not int/long).
11027 (iqq): depth, edepth: int -> scm_bits_t
11028 (scm_eval_stack): int -> scm_bits_t
11029 (SCM_CEVAL): various vars are not scm_bits_t instead of int.
11030 (check_map_args, scm_map, scm_for_each): len: long -> scm_bits_t
11031 i: int -> scm_bits_t
11032
11033 * environments.c: changed the many calls to scm_ulong2num to
11034 scm_ubits2num.
11035 (import_environment_fold): proc_as_ul: ulong -> scm_ubits_t
11036
11037 * dynwind.c (scm_dowinds): delta: long -> scm_bits_t
11038
11039 * debug.h: type renaming:
11040 scm_debug_info -> scm_debug_info_t
11041 scm_debug_frame -> scm_debug_frame_t
11042 the old names are deprecated, all in-Guile uses changed.
11043 (scm_debug_eframe_size): int -> scm_bits_t
11044
11045 * debug.c (scm_init_debug): use scm_c_define instead of the
11046 deprecated scm_define.
11047
11048 * continuations.h: type renaming:
11049 scm_contregs -> scm_contregs_t
11050 the old name is deprecated, all in-Guile uses changed.
11051 (scm_contregs_t.num_stack_items): size_t -> scm_bits_t
11052 (scm_contregs_t.num_stack_items): ulong -> scm_ubits_t
11053
11054 * continuations.c (scm_make_continuation): change the type of
11055 stack_size from long to scm_bits_t.
11056
11057 * ports.h: type renaming:
11058 scm_port_rw_active -> scm_port_rw_active_t (and made a typedef)
11059 scm_port -> scm_port_t
11060 scm_ptob_descriptor -> scm_ptob_descriptor_t
11061 the old names are deprecated, all in-Guile uses changed.
11062 (scm_port_t.entry): int -> scm_bits_t.
11063 (scm_port_t.line_number): int -> long.
11064 (scm_port_t.putback_buf_size): int -> size_t.
11065
11066 * __scm.h (long_long, ulong_long): deprecated (they pollute the
11067 global namespace and have little value beside that).
11068 (SCM_BITS_LENGTH): new, is the bit size of scm_bits_t (i.e. of an
11069 SCM handle).
11070 (ifdef spaghetti): include sys/types.h and sys/stdtypes.h, if they
11071 exist (for size_t & ptrdiff_t).
11072 (scm_sizet): deprecated.
11073
11074 * Makefile.am (noinst_HEADERS): add num2integral.i.c
11075
11076 2001-05-23 Marius Vollmer <mvo@zagadka.ping.de>
11077
11078 * snarf.h (SCM_CONST_LONG): Use SCM_VCELL_INIT instead of
11079 SCM_VARIABLE_INIT since that it what it used to be.
11080
11081 * deprecation.c (scm_include_deprecated_features): Make docstring
11082 ANSIsh. Thanks to Matthias Köppe!
11083
11084 2001-05-21 Marius Vollmer <mvo@zagadka.ping.de>
11085
11086 * symbols.c (scm_mem2symbol): Re-introduce indirect cell. It is
11087 needed for weak-key hashtables.
11088
11089 * procs.c (scm_make_subr_with_generic): Add missing last argument
11090 in call to scm_c_define_gsubr_with_generic. Thanks to Ariel Rios.
11091
11092 * eval.c: Use SCM_EQ_P instead of `==' or `!=' in certain
11093 places. (scm_c_improper_memq): Return 1 instead of SCM_BOOL_T.
11094
11095 * eval.h (SCM_EVALIM2): Use SCM_EQ_P instead of `=='.
11096
11097 2001-05-20 Marius Vollmer <mvo@zagadka.ping.de>
11098
11099 * symbols.c (scm_mem2symbol): Call `scm_must_strndup' instead of
11100 `duplicate_string'. Do not use an indirect cell, store symbol
11101 directly in collision list of hash table.
11102 (duplicate_string): Removed.
11103
11104 * init.c (scm_init_guile_1): Call scm_init_extensions.
11105
11106 * Makefile.am: Add "extensions.c" and related files in all the
11107 right places.
11108
11109 * extensions.h, extension.c: New files.
11110
11111 * gc.h, gc.c (scm_must_strdup, scm_must_strndup): New.
11112
11113 * modules.h (scm_system_module_env_p): Move out of deprecated
11114 section.
11115
11116 * rw.h (scm_init_rw): Added prototype.
11117
11118 * gsubr.h, gsubr.c (scm_c_make_gsubr, scm_c_define_gsubr,
11119 scm_c_make_gsubr_with_generic, scm_c_define_gsubr_with_generic):
11120 New functions. They replace scm_make_gsubr and
11121 scm_make_gsubr_with_generic. The `make' variants only create the
11122 gsubr object, while the `define' variants also put it into the
11123 current module. Changed all callers.
11124 (scm_make_gsubr, scm_make_gsubr_with_generic): Deprecated.
11125
11126 * procs.h, procs.c (scm_c_make_subr, scm_c_define_subr,
11127 scm_c_make_subr_with_generic, scm_c_define_subr_with_generic): New
11128 functions. They replace scm_make_subr, scm_make_subr_opt and
11129 scm_make_subr_with_generic. The `make' variants only create the
11130 subr object, while the `define' variants also put it into the
11131 current module. Changed all callers.
11132 (scm_make_subr, scm_make_subr_opt, scm_make_subr_with_generic):
11133 Deprecated.
11134
11135 * eval.c, gc.c, gh_funcs.c, goops.c, macros.c, pairs.c, ramap.c,
11136 rdelim.c, rw.c, scmsigs.c, snarf.h, values.c: Changed according to
11137 the comments above.
11138
11139 2001-05-19 Neil Jerram <neil@ossau.uklinux.net>
11140
11141 * throw.c (scm_lazy_catch): Slight docstring clarification.
11142
11143 2001-05-19 Marius Vollmer <mvo@zagadka.ping.de>
11144
11145 * throw.c: Lazy-catch handlers are no longer allowed to return.
11146 Fixed comments throughout.
11147 (scm_ithrow): Signal an error when a lazy-catch handler returns.
11148 Moved actual jump to jmpbuf into if-branch where the jmpbuf is
11149 recognized as such.
11150
11151 * version.c (s_scm_micro_version): Fix typo in FUNC_NAME, it
11152 refered to s_scm_minor_version previously.
11153
11154 * modules.h, modules.c: Moved around a lot of code so that
11155 deprecated features appear at the bottom.
11156 (root_module_lookup_closure, scm_sym_app, scm_sym_modules,
11157 module_prefix, make_modules_in_var, beautify_user_module_x_var,
11158 scm_the_root_module, scm_make_module, scm_ensure_user_module,
11159 scm_load_scheme_module): Deprecated.
11160 (scm_system_module_env_p): Return SCM_BOOL_T directly for
11161 environments corresponding to the root module.
11162 (convert_module_name, scm_c_resolve_module,
11163 scm_c_call_with_current_module, scm_c_define_module,
11164 scm_c_use_module, scm_c_export): New.
11165 (the_root_module): New static variant of scm_the_root_module. Use
11166 it everywhere instead of scm_the_root_module.
11167
11168 * fluids.h, fluids.c (scm_internal_with_fluids): Deprecated.
11169 (scm_c_with_fluids): Renamed from scm_internal_with_fluids.
11170 (scm_c_with_fluid): New.
11171 (scm_with_fluids): Use scm_c_with_fluids instead of
11172 scm_internal_with_fluids.
11173
11174 * goops.h, goops.c (scm_init_goops_builtins): Renamed from
11175 `scm_init_goops'. Do not explicitly create/switch modules.
11176 Return SCM_UNSPECIFIED.
11177 (scm_init_goops): Only register `%init-goops-builtins' procedure.
11178 (scm_load_goops): Use scm_c_resolve_module instead of
11179 scm_resolve_module.
11180
11181 * init.c (scm_init_guile_1): Call `scm_init_goops' instead of
11182 `scm_init_oop_goops_goopscore_module'. Call `scm_init_rdelim' and
11183 `scm_init_rw' prior to loading the startup files.
11184
11185 * rdelim.h, rdelim.c: (scm_init_rdelim_builtins): Renamed from
11186 scm_init_rdelim. Do not explicitly create/switch modules.
11187 Return SCM_UNSPECIFIED.
11188 (scm_init_rdelim): Only register `%init-rdelim-builtins'
11189 procedure.
11190
11191 * rw.c (scm_init_rw_builtins): Renamed from scm_init_rw. Do not
11192 explicitly create/switch modules. Return SCM_UNSPECIFIED.
11193 (scm_init_rw): Only register `%init-rw-builtins' procedure.
11194
11195 * script.c (scm_shell): Evaluate the compiled switches in the
11196 current module, not in the root module.
11197
11198 2001-05-18 Marius Vollmer <mvo@zagadka.ping.de>
11199
11200 * fluids.c (scm_c_with_fluids): Rename from
11201 scm_internal_with_fluids.
11202 (scm_internal_with_fluids): Deprecated.
11203 (scm_c_with_fluid): New.
11204
11205 2001-05-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
11206
11207 * print.h (PRINTH, SCM_PRINT_H): Renamed PRINTH to SCM_PRINT_H.
11208
11209 (SCM_PORT_WITH_PS_PORT, SCM_PORT_WITH_PS_PS): Only pairs may be
11210 accessed with SCM_C[AD]R.
11211
11212 (SCM_COERCE_OUTPORT): Removed redundant SCM_NIMP test.
11213
11214 2001-05-16 Rob Browning <rlb@cs.utexas.edu>
11215
11216 * version.c (s_scm_major_version): doc fixes.
11217 (s_scm_minor_version): doc fixes.
11218 (s_scm_minor_version): new function.
11219
11220 * version.h (scm_init_version): new function.
11221
11222 * versiondat.h.in: add GUILE_MICRO_VERSION.
11223
11224 2001-05-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
11225
11226 * deprecation.c (scm_init_deprecation): Renamed
11227 GUILE_WARN_DEPRECATED_DEFAULT to SCM_WARN_DEPRECATED_DEFAULT.
11228
11229 2001-05-16 Marius Vollmer <mvo@zagadka.ping.de>
11230
11231 * Makefile.am (cpp_sig_symbols.c, cpp_err_symbols.c): Make
11232 dependent on cpp_cnvt.awk
11233
11234 2001-05-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11235
11236 * script.c (scm_compile_shell_switches): New command line option
11237 `--use-srfi' for loading a list of SRFIs on startup.
11238 (scm_shell_usage): Added `--use-srfi' to help message.
11239
11240 2001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
11241
11242 Merged from mvo-vcell-cleanup-1-branch.
11243
11244 The concept of vcells has been removed from Guile. With it,
11245 explicit obarrays and associated operations are gone. Use
11246 hashtables instead of obarrays.
11247
11248 Throughout: use scm_sym2var instead of scm_sym2vcell and treat
11249 result as variable instead of vcell. Glocs no longer point to a
11250 vcell but to a variable. Use scm_c_define instead of
11251 scm_sysintern and treat the result as a variable (which it is),
11252 not a vcell.
11253
11254 * variable.c, variable.h (SCM_VARVCELL, SCM_UDVARIABLEP,
11255 SCM_DEFVARIABLEP): Deprecated.
11256 (SCM_VARIABLE_REF, SCM_VARIABLE_SET, SCM_VARIABLE_LOC): New.
11257 (variable_print): Do not print name of variable.
11258 (variable_equalp): Compare values, not vcells.
11259 (anonymous_variable_sym): Removed.
11260 (make_vcell_variable): Removed.
11261 (make_variable): New, as replacement.
11262 (scm_make_variable, scm_make_undefined_variable): Do not take name
11263 hint parameter.
11264 (scm_variable_ref): Check for SCM_UNDEFINED and throw "unbound"
11265 error in that case.
11266 (scm_builtin_variable): Deprecated.
11267
11268 * symbols.c, symbols.h (scm_sym2vcell, scm_sym2ovcell_soft,
11269 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
11270 scm_intern, scm_intern0, scm_sysintern0_no_module_lookup,
11271 scm_sysintern, scm_sysintern0, scm_symbol_value0,
11272 scm_string_to_obarray_symbol, scm_intern_symbol,
11273 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned,
11274 scm_symbol_bound_p, scm_symbol_set_x, scm_gentmp, gentmp_counter):
11275 Deprecated and moved to "symbols-deprecated.c".
11276 (copy_and_prune_obarray, scm_builtin_bindings): Removed.
11277 (scm_init_symbols): Call scm_init_symbols_deprecated.
11278 * symbols-deprecated.c: New file.
11279 * Makefile.am: Added symbols-deprecated.c and related files in all
11280 the right places.
11281
11282 * snarf.h (SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
11283 SCM_GLOBAL_VCELL_INIT): Deprecated.
11284 (SCM_VARIABLE, SCM_GLOBAL_VARIABLE, SCM_VARIABLE_INIT,
11285 SCM_GLOBAL_VARIABLE_INIT): New, as replacement. Changed all uses.
11286
11287 * print.c (scm_iprin1): Use scm_module_reverse_lookup instead of
11288 SCM_GLOC_SYM.
11289
11290 * evalext.c, filesys.c, fports.c, gdbint.c, gh_data.c, gsubr.c,
11291 hooks.c, load.c, numbers.c, objects.c, ports.c, posix.c, procs.c,
11292 ramap.c, random.c, read.c, regex-posix.c, scmsigs.c, script.c,
11293 socket.c, srcprop.c, stacks.c, stime.c, struct.c, tag.c, throw.c:
11294 Changed according to the `throughout' comments.
11295
11296 * modules.h, modules.c (scm_module_system_booted_p): Changed type
11297 to `int'.
11298 (scm_module_type): Removed.
11299 (the_root_module): Renamed to the_root_module_var. Now points to
11300 a variable instead of a vcell. Updated all uses.
11301 (scm_the_root_module): Return SCM_BOOL_F when module systems
11302 hasn't been booted yet.
11303 (SCM_VALIDATE_STRUCT_TYPE): Removed.
11304 (scm_post_boot_init_modules): Made static.
11305 (scm_set_current_module): Call scm_post_boot_init_modules on first
11306 call.
11307 (make_modules_in, beautify_user_module_x, resolve_module,
11308 try_module_autoload, module_make_local_var_x): Tacked on "_var"
11309 suffix. Now point to variables instead of vcells. Updated all
11310 uses.
11311 (scm_module_lookup_closure): Deal with the module being SCM_BOOL_F
11312 and return SCM_BOOL_F in that case.
11313 (scm_module_transformer): Likewise.
11314 (sym_module, scm_lookup_closure_module, scm_env_module): New.
11315 (SCM_F_EVAL_CLOSURE_INTERFACE, SCM_EVAL_CLOSURE_INTERFACE_P): New.
11316 (scm_eval_closure_lookup): Do not allow new definitions when
11317 `interface' flag is set.
11318 (scm_standard_interface_eval_closure): New.
11319 (scm_pre_modules_obarray, scm_sym2var, scm_module_lookup,
11320 scm_lookup, scm_module_define, scm_define, scm_c_module_lookup,
11321 scm_c_lookup, scm_c_module_define, scm_c_define,
11322 scm_module_reverse_lookup, scm_get_pre_modules_obarray,
11323 scm_modules_prehistory): New.
11324 (scm_post_boot_init_modules): Use scm_c_define and scm_c_lookup
11325 instead of scm_intern0.
11326
11327 * macros.c (scm_make_synt): Return SCM_UNSPECIFIED instead of the
11328 symbol.
11329
11330 * keywords.c (s_scm_make_keyword_from_dash_symbol): Use a regular
11331 hashtable operations to maintain the keywords, not obarray ones.
11332
11333 * init.c (scm_load_startup_files): Do not call
11334 scm_post_boot_init_modules. This is done by
11335 scm_set_current_module now.
11336 (scm_init_guile_1): Call scm_modules_prehistory. Call
11337 scm_init_variable early on.
11338
11339 * goops.c (s_scm_sys_goops_loaded): Get
11340 var_compute_applicable_methods from scm_sym2var, not from a direct
11341 invocation of scm_goops_lookup_closure.
11342
11343 * gh_funcs.c (gh_define): Return SCM_UNSPECIFIED instead of vcell.
11344
11345 * gc.c: Added simple debugging hack to mark phase of GC: When
11346 activated, do not tail-call scm_gc_mark. This gives nice
11347 backtraces.
11348 (scm_unhash_name): Removed.
11349
11350 * feature.c (features): Renamed to features_var. Now points to a
11351 variable instead of a vcell. Updated all uses.
11352
11353 * eval.h (SCM_TOP_LEVEL_LOOKUP_CLOSURE): Use
11354 `scm_current_module_lookup_closure' which will do the right thing
11355 when the module system hasn't been booted yet.
11356 (SCM_GLOC_SYM): Removed.
11357 (SCM_GLOC_VAR, SCM_GLOC_SET_VAL): New.
11358 (SCM_GLOC_VAL, SCM_GLOC_LOC): Reimplemented in terms of variables.
11359
11360 * eval.c (scm_lookupcar, scm_lookupcar1): Deal with variables
11361 instead of with vcells. Do not overwrite `var' with the result of
11362 the lookup, use the new `real_var' instead. Remove `var2' in
11363 exchange (which was only used with threads).
11364 (sym_three_question_marks): New.
11365 (scm_unmemocar): Use `scm_module_reverse_lookup' instead of
11366 `SCM_GLOC_SYM'.
11367 (scm_lisp_nil, scm_lisp_t): Directly define as symbols.
11368 (scm_m_atfop): Expect the function definition to be a variable
11369 instead of a vcell.
11370 (scm_macroexp): Do not use `unmemocar', explicitely remember the
11371 symbol instead.
11372 (scm_unmemocopy): Removed thoughts about anti-macro interface.
11373 (scm_eval_args): Use more explicit code in the gloc branch of the
11374 atrocious struct ambiguity test. The optimizer will sort this
11375 out.
11376 (scm_deval_args): Likewise.
11377 (SCM_CEVAL): Likewise. Also, do not use unmemocar, explicitely
11378 remember the symbol instead. Added some comments where
11379 scm_tc3_cons_gloc really exclusively refers to structs.
11380 (scm_init_eval): Use scm_define to initialize "nil" and "t" to
11381 scm_lisp_nil and scm_lisp_t, respectively. Use scm_define instead
11382 of scm_sysintern in general.
11383
11384 * dynwind.c (scm_swap_bindings): Use SCM_GLOC_SET_VAL instead of
11385 explicit magic.
11386
11387 * debug.c (s_scm_make_gloc): Only allow proper variables, no
11388 pairs. Put the variable directly in the gloc.
11389 (s_scm_gloc_p): Use `scm_tc3_cons_gloc' instead of the magic `1'.
11390 (scm_init_debug): Use scm_c_define instead scm_sysintern.
11391
11392 * cpp_cnvt.awk: Emit "scm_c_define" instead of "scm_sysintern".
11393
11394 * backtrace.h, backtrace.c (scm_the_last_stack_fluid): Renamed to
11395 scm_the_last_stack_fluid_var. It now points to a variable instead
11396 of a vcell. Updated all uses.
11397 (scm_has_shown_backtrace_hint_p_var): Now points to a variable
11398 instead of a vcell. Updated all uses.
11399
11400 * _scm.h: Include "variables.h" and "modules.h" since almost
11401 everybody needs them now.
11402
11403 * root.h (scm_symhash, scm_symhash_vars): Removed.
11404 * gc.c (scm_init_storage): Do not initialize them.
11405
11406 2001-05-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
11407
11408 * eval.c (scm_init_eval): Initialize scm_undefineds and
11409 scm_listofnull.
11410
11411 * gc.c (scm_debug_newcell, scm_debug_newcell2): Fixed to behave
11412 like the SCM_NEWCELL macro counterparts.
11413
11414 (scm_init_storage, scm_init_gc): Moved initialization of
11415 scm_tc16_allocated from scm_init_gc to scm_init_storage.
11416
11417 (scm_init_storage): Moved initialization of scm_undefineds and
11418 scm_listofnull to eval.c, initializion of scm_nullstr to
11419 strings.c, initializion of scm_nullvect to vectors.c.
11420
11421 * gc.h (SCM_NEWCELL, SCM_NEWCELL2): Prefer SCM_NULLP over
11422 SCM_IMP, as in scm_debug_newcell and scm_debug_newcell2.
11423
11424 * init.c (scm_init_guile_1): Reordered some initializations and
11425 added dependcy information comments.
11426
11427 * load.c (scm_init_load): Use scm_nullstr.
11428
11429 * strings.c (scm_init_strings): Initialize scm_nullstr.
11430
11431 * vectors.c (scm_init_vectors): Initialize scm_nullvect.
11432
11433 2001-05-15 Marius Vollmer <mvo@zagadka.ping.de>
11434
11435 * values.c (print_values): Print as a unreadable object, not as
11436 multiple lines. Thanks to Matthias Köppe!
11437
11438 2001-05-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
11439
11440 * deprecation.c: Fixed copyright date.
11441
11442 * deprecation.h (DEPRECATION_H, SCM_DEPRECATION_H): Renamed
11443 DEPRECATION_H to SCM_DEPRECATION_H.
11444
11445 2001-05-10 Thien-Thi Nguyen <ttn@revel.glug.org>
11446
11447 * guile-doc-snarf.in: Update copyright.
11448 Fix relative path bug. Thanks to Sergey Poznyakoff.
11449
11450 2001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
11451
11452 * ports.c (scm_port_revealed, scm_set_port_revealed_x): Only
11453 accept open ports. Thanks to Quetzalcoatl Bradley!
11454
11455 2001-05-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11456
11457 * procs.c: Increased `scm_subr_table_room' to 800 because Guile now
11458 has 779 primitives on startup.
11459
11460 2001-05-09 Marius Vollmer <mvo@zagadka.ping.de>
11461
11462 * eval.c (scm_i_eval): Copy expression before passing it to
11463 SCM_XEVAL. The copy operation was removed unintendedly during my
11464 change on 2001-03-25.
11465
11466 2001-05-09 Michael Livshin <mlivshin@bigfoot.com>
11467
11468 from Matthias Köppe (thanks!):
11469
11470 * ports.c (scm_c_read): pointer arithmetic on void pointers isn't
11471 portable.
11472
11473 * deprecation.c (s_scm_include_deprecated_features): ANSI'fied the
11474 docstring.
11475
11476 2001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
11477
11478 * gc.c (scm_init_gc): Added FIXME comment.
11479
11480 * hooks.c: Since hooks don't have a name any more, it is not
11481 necessary to include objprop.h.
11482
11483 (hook_print, scm_add_hook_x): Replace SCM_NFALSEP by !SCM_FALSEP.
11484
11485 (symbol_name, scm_make_hook_with_name): Removed.
11486
11487 (scm_create_hook): Don't set the hook's name property.
11488
11489 * hooks.h (HOOKSH, SCM_HOOKS_H): Renamed HOOKSH to SCM_HOOKS_H.
11490
11491 (SCM_HOOK_NAME, scm_make_hook_with_name): Removed.
11492
11493 * init.c (scm_init_guile_1): Hooks don't use objprops any more.
11494
11495 * numbers.c (SCM_FLOBUFLEN, FLOBUFLEN, scm_number_to_string,
11496 scm_print_real, scm_print_complex): Renamed SCM_FLOBUFLEN to
11497 FLOBUFLEN and define it unconditionally.
11498
11499 2001-05-07 Marius Vollmer <mvo@zagadka.ping.de>
11500
11501 * gh_data.c (gh_lookup): Call gh_module_lookup with
11502 `scm_current_module ()', not `#f'.
11503 (gh_module_lookup): Expect a module instead of an obarray as first
11504 argument and do lookup in that module.
11505
11506 * ramap.c (raeql_1): Do not call scm_uniform_vector_length on
11507 arrays. The length of array is already determined differently and
11508 scm_uniform_vector_length does not work on arrays.
11509
11510 2001-05-06 Marius Vollmer <mvo@zagadka.ping.de>
11511
11512 * snarf.h (SCM_FUNC_CAST_ARBITRARY_ARGS): Use "SCM (*)()" for C++
11513 as well. "SCM (*)(...)" does not work on RedHat 7.1.
11514
11515 * __scm.h (SCM_WTA_DISPATCH_0): Removed ARG and POS parameters,
11516 they are not used. Changed `wrong type' error into `wrong num
11517 args' error. Changed all callers.
11518
11519 * numbers.c (scm_difference): Call SCM_WTA_DISPATCH_0 when zero
11520 arguments are supplied.
11521
11522 2001-05-05 Thien-Thi Nguyen <ttn@revel.glug.org>
11523
11524 * regex-posix.c (scm_regexp_exec): Expand docstring to briefly
11525 describe `regexp/notbol' and `regexp/noteol' execution flags.
11526
11527 * strop.c (scm_substring_move_x): Doc fix; nfc.
11528
11529 2001-05-05 Marius Vollmer <mvo@zagadka.ping.de>
11530
11531 * objects.c, objects.h (scm_valid_object_procedure_p): New.
11532 (scm_set_object_procedure_x): Use it to check argument. Fix
11533 docstring.
11534
11535 * evalext.c (scm_definedp): Fix docstring.
11536
11537 2001-05-05 Gary Houston <ghouston@arglist.com>
11538
11539 * socket.c: use HAVE_IPV6 instead of AF_INET6 to enable IPv6
11540 support.
11541
11542 2001-05-04 Neil Jerram <neil@ossau.uklinux.net>
11543
11544 * eval.c (scm_promise_p), list.c (scm_append_x, scm_reverse_x),
11545 symbols.c (scm_symbol_to_string), vports.c (scm_make_soft_port):
11546 Change R4RS references to R5RS.
11547
11548 * guile-snarf.awk.in: Fixes so that (i) blank lines in the
11549 docstring source are correctly reproduced in the output (ii)
11550 we don't anymore get occasional trailing quotes. Also reorganized
11551 and commented the code a little.
11552
11553 * scmsigs.c (scm_raise), throw.c (scm_throw): Docstring format
11554 fixes.
11555
11556 2001-05-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11557
11558 * strop.c (scm_string_split): New procedure.
11559
11560 * strop.h (scm_string_split): Added prototype.
11561
11562 2001-05-04 Gary Houston <ghouston@arglist.com>
11563
11564 * socket.c: define uint32_t if netdb.h doesn't. thanks to
11565 Dale P. Smith.
11566
11567 2001-05-02 Marius Vollmer <mvo@zagadka.ping.de>
11568
11569 * rw.c: Include "modules.h" and "strports.h".
11570
11571 * net_db.h (scm_gethost): Added prototype.
11572
11573 * deprecation.h, deprecation.c: New.
11574 * Makefile.am (libguile_la_SOURCES): Added "deprecation.c".
11575 (DOT_X_FILES): Added "deprecation.x".
11576 (modinclude_HEADERS): Added "deprecation.h".
11577
11578 * init.c: Include "deprecation.h".
11579 (scm_init_guile_1): Call scm_init_deprecation.
11580
11581 2001-05-01 Marius Vollmer <mvo@zagadka.ping.de>
11582
11583 * gh.h (gh_init_guile, gh_make_string, gh_string_length,
11584 gh_string_ref, gh_string_set_x, gh_substring, gh_string_append):
11585 New.
11586
11587 2001-04-29 Gary Houston <ghouston@arglist.com>
11588
11589 * rw.c: new file, implementing C part of module (ice-9 rw).
11590 (scm_read_string_x_partial): moved from ioext.c
11591 (scm_init_rw): new proc.
11592 * rw.h: new file.
11593 init.c: include rw.h and call scm_init_rw.
11594 Makefile.am: include rw.c and rw.h.
11595
11596 2001-04-28 Rob Browning <rlb@cs.utexas.edu>
11597
11598 * numbers.c: enabled local definition of SCM_FLOBUFLEN until we
11599 know what's supposed to happen to it.
11600
11601 * list.h (scm_list_star): deprecation expired - removed.
11602
11603 * numbers.h (scm_dblproc): deprecation expired - removed.
11604 (SCM_UNEGFIXABLE): deprecation expired - removed.
11605 (SCM_FLOBUFLEN): deprecation expired - removed.
11606 (SCM_INEXP): deprecation expired - removed.
11607 (SCM_CPLXP): deprecation expired - removed.
11608 (SCM_REAL): deprecation expired - removed.
11609 (SCM_IMAG): deprecation expired - removed.
11610 (SCM_REALPART): deprecation expired - removed.
11611 (scm_makdbl): deprecation expired - removed.
11612 (SCM_SINGP): deprecation expired - removed.
11613 (SCM_NUM2DBL): deprecation expired - removed.
11614 (SCM_NO_BIGDIG): deprecation expired - removed.
11615
11616 * tags.h (SCM_DOUBLE_CELLP): deprecation expired - removed.
11617 (scm_tc_dblr): deprecation expired - removed.
11618 (scm_tc_dblc): deprecation expired - removed.
11619 (scm_tc16_flo): deprecation expired - removed.
11620 (scm_tc_flo): deprecation expired - removed.
11621
11622 * tag.h (scm_tag): deprecation expired - removed.
11623
11624 * tag.c: (scm_tag): deprecation expired - removed.
11625
11626 * ioext.c: (scm_fseek): deprecation expired - removed.
11627
11628 * ioext.h (scm_fseek): deprecation expired - removed.
11629
11630 * gh_data.c (gh_int2scmb): deprecation expired - removed.
11631
11632 * gh.h (gh_int2scmb): deprecation expired - removed.
11633
11634 2001-04-28 Neil Jerram <neil@ossau.uklinux.net>
11635
11636 * stacks.c (scm_make_stack): Fix typo in docstring.
11637
11638 2001-04-27 Rob Browning <rlb@cs.utexas.edu>
11639
11640 * error.c (scm_sysmissing): deprecation expired - removed.
11641
11642 * error.h (scm_sysmissing): deprecation expired - removed.
11643
11644 * gc.c
11645 (scm_init_gc): gc-thunk deprecation expired - removed.
11646 (scm_gc_vcell): deprecation expired - removed.
11647 (gc_async_thunk): scm_gc_vcell related code removed.
11648
11649 * vectors.h (SCM_NVECTORP): deprecation expired - removed.
11650
11651 * strings.h
11652 (SCM_NSTRINGP): deprecation expired - removed.
11653 (SCM_NRWSTRINGP): deprecation expired - removed.
11654
11655 * continuations.h (SCM_SETJMPBUF): deprecation expired - removed.
11656
11657 * chars.h
11658 (SCM_ICHRP): deprecation expired - removed.
11659 (SCM_ICHR): deprecation expired - removed.
11660 (SCM_MAKICHR): deprecation expired - removed.
11661
11662 * ports.h
11663 (SCM_INPORTP): deprecation expired - removed.
11664 (SCM_OUTPORTP): deprecation expired - removed.
11665
11666 2001-04-25 Marius Vollmer <mvo@zagadka.ping.de>
11667
11668 * modules.c (scm_module_type): New.
11669 (scm_post_boot_init_modules): Initialize from Scheme value.
11670 (the_module, scm_current_module, scm_init_modules): the_module is
11671 now a C only fluid.
11672 (scm_current_module): Export to Scheme.
11673 (scm_set_current_module): Do not call out to Scheme, do all the
11674 work in C. Export procedure to Scheme. Only accept modules, `#f'
11675 is no longer valid as the current module. Only set
11676 scm_top_level_lookup_closure_var and scm_system_transformer when
11677 they are not deprecated.
11678 (scm_module_transformer, scm_current_module_transformer): New.
11679
11680 * modules.h (scm_module_index_transformer, SCM_MODULE_TRANSFORMER,
11681 scm_current_module_transformer, scm_module_transformer): New.
11682
11683 * gh_data.c: Removed FIXME comment about gh_lookup returning
11684 SCM_UNDEFINED. That's the right thing to do.
11685
11686 * eval.h, eval.c (scm_system_transformer): Deprecated by moving it
11687 into the conditionally compiled sections.
11688 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Use
11689 scm_current_module_transformer instead of scm_system_transformer.
11690 * init.c (start_stack): Move initialization of
11691 scm_system_transformer to the deprecated section.
11692
11693 2001-04-22 Neil Jerram <neil@ossau.uklinux.net>
11694
11695 * throw.c (scm_throw): Correct docstring.
11696
11697 2001-04-22 Gary Houston <ghouston@arglist.com>
11698
11699 * socket.c: attempted to improve the docstrings slightly.
11700
11701 * net_db.c: remove bogus "close" declaration.
11702 (inet_aton declaration, scm_inet_aton, scm_inet_ntoa,
11703 scm_inet_netof, scm_lnaof, scm_inet_makeaddr, INADDR_ANY etc.):
11704 moved to socket.c.
11705 * net_db.h: declarations moved too.
11706
11707 * socket.c (scm_htonl, scm_ntohl): use uint32_t instead of unsigned
11708 long.
11709 (ipv6_net_to_num, ipv6_num_to_net): new static procedures.
11710 (VALIDATE_INET6): new macro.
11711 (scm_inet_pton, scm_inet_ntop): new procedures, implementing
11712 inet-pton and inet-ntop.
11713 (scm_fill_sockaddr): use VALIDATE_INET6 and ipv6_num_to_net.
11714 (scm_addr_vector): use ipv6_net_to_num.
11715
11716 2001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
11717
11718 * eq.c (scm_equal_p), ramap.c (scm_init_ramap): Don't compute the
11719 smob number explicitly. Use SCM_TC2SMOBNUM instead.
11720
11721 * gc.c (MARK, scm_gc_sweep): Only check for illegal heap objects
11722 when compiled in debug mode.
11723
11724 (scm_gc_sweep): Only call smob's free function if it is defined.
11725
11726 * print.c (scm_iprin1): No need to check for validity of smob
11727 type or existence of print function.
11728
11729 * smob.[ch] (scm_smobs): Made into a fixed size global array.
11730 Resizing will not work well with preemptive threading.
11731
11732 * smob.c (scm_smob_print): Don't use SCM_CDR to access smob data.
11733
11734 (scm_make_smob_type): Extracted initialization of smob
11735 descriptors to scm_smob_prehistory. Don't use scm_numsmob outside
11736 of the critical section.
11737
11738 (scm_smob_prehistory): Initialize all smob descriptors. By
11739 default, don't assign a smob free function: Most smob types don't
11740 need one.
11741
11742 * smob.h (SMOBH, SCM_SMOB_H): Renamed SMOBH to SCM_SMOB_H.
11743
11744 2001-04-21 Gary Houston <ghouston@arglist.com>
11745
11746 * socket.c (FLIP_NET_HOST_128): new macro.
11747 (scm_fill_sockaddr): use new macro.
11748 (scm_addr_vector): completed IPv6 address support. added const
11749 to the address parameter.
11750
11751 2001-04-20 Gary Houston <ghouston@arglist.com>
11752
11753 * socket.c (scm_fill_sockaddr): call htons for sin6_port.
11754 Don't assign sin6_scope_id in structure unless HAVE_SIN6_SCOPE_ID
11755 is defined.
11756 (scm_addr_vector): use a switch instead of multiple if statements.
11757 Add support for IPv6 (incomplete) .
11758 MAX_ADDR_SIZE: increase to size of struct sockaddr_in6 if needed.
11759
11760 2001-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
11761
11762 * struct.c (scm_free_structs): Only pairs may be accessed with
11763 SCM_C[AD]R.
11764
11765 2001-04-19 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
11766
11767 * unif.h (SCM_ARRAY_CONTIGUOUS): Reintroduced as deprecated.
11768
11769 * __scm.h (SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
11770 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Inserted required
11771 parentheses in order to get the correct associativity.
11772
11773 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
11774
11775 * unif.c (scm_array_to_list): Added missing handling of arrays of
11776 bytes. Thanks to Masao Uebayashi for the bug report.
11777
11778 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
11779
11780 * debug.c (scm_procedure_source): Use SCM_CLOSURE_FORMALS more
11781 consistently.
11782
11783 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
11784
11785 * procs.h (SCM_CLOSURE_FORMALS): New macro.
11786
11787 * debug.c (scm_procedure_source), eval.c (scm_badformalsp,
11788 SCM_CEVAL, SCM_APPLY), goops.c (get_slot_value, set_slot_value),
11789 procprop.c (scm_i_procedure_arity), sort.c (closureless): Use
11790 SCM_CLOSURE_FORMALS.
11791
11792 * eval.c (scm_badformalsp, SCM_CEVAL), procprop.c
11793 (scm_i_procedure_arity): Prefer stronger predicates like
11794 SCM_NULLP or SCM_FALSEP over SCM_IMP.
11795
11796 * macros.c (macro_print): Extracted macro printing code from
11797 print.c and simplified it.
11798
11799 (scm_macro_type): Use SCM_MACRO_TYPE;
11800
11801 (scm_init_macros): Use macro_print for printing macros.
11802
11803 * print.c (scm_print_opts): Improved option documentation.
11804
11805 (scm_iprin1): Extracted printing of macros to macros.c.
11806 Simplified printing of ordinary closures.
11807
11808 * procs.c (scm_thunk_p): Fixed handling of closures. Thanks to
11809 Martin Grabmueller for the bug report.
11810
11811 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
11812
11813 This patch eliminates some further applications of SCM_C[AD]R to
11814 non pair cells.
11815
11816 * gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR): Deprecated. These have
11817 never been applied to real pairs.
11818
11819 * srcprop.h (SCM_SOURCE_PROPERTY_FLAG_BREAK): Added.
11820
11821 (SRCPROPBRK): Use SCM_SOURCE_PROPERTY_FLAG_BREAK.
11822
11823 * unif.h (SCM_ARRAY_CONTIGUOUS, SCM_ARRAY_FLAG_CONTIGUOUS,
11824 SCM_ARRAY_CONTP): Renamed SCM_ARRAY_CONTIGUOUS to
11825 SCM_ARRAY_FLAG_CONTIGUOUS and use it.
11826
11827 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
11828 Added.
11829
11830 * srcprop.h (SRCPROPH), unif.h (UNIFH): Renamed to
11831 SCM_SOURCE_PROPERTIES_H and SCM_UNIFORM_VECTORS_H, respectively.
11832
11833 * srcprop.h (SETSRCPROPBRK, CLEARSRCPROPBRK), unif.c
11834 (scm_dimensions_to_uniform_array, scm_ra_set_contp): Don't use
11835 SCM_SET{AND,OR}_CAR.
11836
11837 2001-04-17 Gary Houston <ghouston@arglist.com>
11838
11839 * some initial support for IPv6:
11840
11841 * socket.c (scm_fill_sockaddr): improve the argument validation.
11842 don't allocate memory until all args are checked. instead of
11843 unconditional memset of soka, try setting sin_len to 0 if
11844 SIN_LEN is defined. add support for AF_INET6. define FUNC_NAME.
11845 (scm_socket, scm_connect): extend docstrings for IPv6.
11846 (scm_init_socket): intern AF_INET6 and PF_INET6.
11847
11848 2001-04-17 Niibe Yutaka <gniibe@m17n.org>
11849
11850 * srcprop.c (scm_make_srcprops): Added SCM_ALLOW_INTS which
11851 matches SCM_DEFER_INTS at the beginning of the function.
11852
11853 * mallocs.c (scm_malloc_obj): Remove un-matched SCM_ALLOW_INTS.
11854
11855 * gc.c (scm_igc): Unconditionally call
11856 SCM_CRITICAL_SECTION_START/END.
11857
11858 * fluids.c (next_fluid_num): Unconditionally call
11859 SCM_CRITICAL_SECTION_START/END.
11860 (s_scm_make_fluid): Remove un-matched SCM_DEFER_INTS.
11861
11862 * coop-defs.h (SCM_THREAD_DEFER, SCM_THREAD_ALLOW,
11863 SCM_THREAD_REDEFER, SCM_THREAD_REALLOW_1, SCM_THREAD_REALLOW_2):
11864 Removed.
11865
11866 * __scm.h (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END):
11867 Defined as nothing for the case of !defined(USE_THREADS).
11868 (SCM_THREAD_DEFER, SCM_THREAD_ALLOW, SCM_THREAD_REDEFER):
11869 Removed.
11870 (<stdio.h>): Include when (SCM_DEBUG_INTERRUPTS == 1).
11871 (SCM_CHECK_NOT_DISABLED, SCM_CHECK_NOT_ENABLED): Print FILE and
11872 LINE.
11873 (SCM_DEFER_INTS, SCM_ALLOW_INTS_ONLY, SCM_ALLOW_INTS,
11874 SCM_REDEFER_INTS, SCM_REALLOW_INTS): Don't use
11875 SCM_THREAD_DEFER/SCM_THREAD_ALLOW. Instead, use
11876 SCM_CRITICAL_SECTION_START/END.
11877 (SCM_REALLOW_INTS: Bug fix. Don't call
11878 SCM_THREAD_SWITCHING_CODE.
11879 (SCM_TICK): Don't use SCM_DEFER_INTS/SCM_ALLOW_INTS. Instead, use
11880 SCM_THREAD_SWITCHING_CODE directly.
11881 (SCM_ENTER_A_SECTION): Unconditionally use
11882 SCM_CRITICAL_SECTION_START/END. (was:
11883 SCM_DEFER_INTS/SCM_ALLOW_INTS when SCM_POSIX_THREADS defined).
11884
11885 2001-04-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
11886
11887 * __scm.h (SCM_CAREFUL_INTS, SCM_DEBUG_INTERRUPTS): Replaced the
11888 macro SCM_CAREFUL_INTS by the macro SCM_DEBUG_INTERRUPTS and
11889 allowed to explicitly set this macro via the CFLAGS variable
11890 during make.
11891
11892 * fluids.c (next_fluid_num), gc.c (scm_igc), coop-defs.h
11893 (SCM_THREAD_CRITICAL_SECTION_START,
11894 SCM_THREAD_CRITICAL_SECTION_END): Renamed
11895 SCM_THREAD_CRITICAL_SECTION_START/END to
11896 SCM_CRITICAL_SECTION_START/END.
11897
11898 2001-04-11 Keisuke Nishida <kxn30@po.cwru.edu>
11899
11900 * debug-malloc.c (grow, scm_debug_malloc_prehistory): Use memset
11901 instead of bzero.
11902
11903 * coop.c, iselect.c (FD_ZERO_N): Unconditionally use memset.
11904 (MISSING_BZERO_DECL): Remove the declaration.
11905
11906 Thanks to NIIBE Yutaka.
11907
11908 2001-04-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
11909
11910 * init.c, goops.c, goops.h: Reverted change of 2001-03-29. (The
11911 goops module should be registered in order to work for an
11912 application which uses libguile statically linked.)
11913
11914 2001-04-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
11915
11916 * numbers.[ch] (scm_num2long, scm_num2long_long,
11917 scm_num2ulong_long, scm_num2ulong): Argument position is an
11918 unsigned integer.
11919
11920 * environments.c (eval_environment_folder,
11921 import_environment_folder), gh_data.c (gh_scm2longs,
11922 gh_scm2floats, gh_scm2doubles): Distinguish between 0 and NULL
11923 for integers and pointers, respectively.
11924
11925 * gh_data.c (gh_scm2ulong, gh_scm2long, gh_scm2int), socket.c
11926 (scm_fill_sockaddr), unif.c (scm_array_set_x), validate.h
11927 (SCM_NUM2ULONG, SCM_NUM2LONG, SCM_NUM2LONG_DEF,
11928 SCM_NUM2LONG_LONG): Don't pass argument positions as pointers.
11929
11930 * filesys.c (scm_open_fdes, scm_open), net_db (scm_inet_ntoa,
11931 scm_inet_netof, scm_lnaof, scm_gethost, scm_getproto), posix.c
11932 (scm_utime), ramap.c (scm_array_fill_int), scmsigs.c
11933 (scm_sigaction), socket.c (scm_htonl, scm_ntohl, scm_sendto),
11934 stime.c (scm_localtime, scm_gmtime), struct.c (scm_struct_set_x),
11935 validate.h (SCM_VALIDATE_LONG_COPY): Whitespace fixes.
11936
11937 2001-04-09 Neil Jerram <neil@ossau.uklinux.net>
11938
11939 * strings.c (scm_read_only_string_p): Update docstring to reflect
11940 current (non-)usage of "read only" strings.
11941 (scm_make_shared_substring): Clarify docstring by changing
11942 "semantics" to "arguments".
11943
11944 2001-04-06 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11945
11946 * hooks.c (scm_make_hook, scm_make_hook_with_name),
11947 (scm_hook_p, scm_hook_empty_p, scm_run_hook): Docstring
11948 improvements.
11949
11950 2001-04-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11951
11952 The following changes make the documentation more consistent.
11953
11954 * rdelim.c (scm_write_line), posix.c (scm_utime), ports.c
11955 (scm_seek), net_db.c (scm_inet_aton, scm_inet_ntoa),
11956 (scm_inet_netof, scm_lnaof, scm_inet_makeaddr), ioext.c
11957 (scm_ftell): Changed @smalllisp ... @end smalllisp to @lisp
11958 ... @end lisp.
11959
11960 * vports.c (scm_make_soft_port), version.c (scm_version), unif.c
11961 (scm_array_dimensions, scm_make_shared_array),
11962 (scm_transpose_array, scm_enclose_array, scm_bit_count_star),
11963 throw.c (scm_catch), struct.c (scm_make_vtable_vtable), strop.c
11964 (scm_string_rindex, scm_string_index, scm_substring_fill_x),
11965 (scm_string_null_p), strings.c (scm_read_only_string_p), root.c
11966 (scm_call_with_dynamic_root), ramap.c (scm_array_index_map_x),
11967 posix.c (scm_mknod), numbers.c (scm_logtest, scm_logbit_p),
11968 macros.c (scm_makmmacro), list.c (scm_append), environments.c
11969 (scm_environment_fold), dynwind.c (s_scm_dynamic_wind): Changed
11970 @example ... @end example to @lisp ... @end lisp.
11971
11972 * weaks.c (scm_weak_vector): Corrected docstring.
11973
11974 * hashtab.c (scm_hashq_ref, scm_hashq_set_x, scm_hashq_remove_x),
11975 (scm_hashv_ref, scm_hashv_set_x, scm_hashv_remove_x),
11976 (scm_hash_ref, scm_hash_set_x, scm_hash_remove_x, scm_hashx_ref),
11977 (scm_hashx_set_x, scm_hashx_get_handle),
11978 (scm_hashx_create_handle_x), regex-posix.c (scm_make_regexp),
11979 (scm_regexp_exec, scm_regexp_p), numbers.c (scm_logtest),
11980 vectors.c (scm_vector_fill_x), strings.c
11981 (scm_make_shared_substring), symbols.c (scm_string_to_symbol),
11982 objprop.c (scm_set_object_properties_x):
11983 (scm_set_object_property_x), throw.c (scm_catch, scm_lazy_catch),
11984 strports.c (scm_call_with_input_string), ports.c
11985 (scm_truncate_file), ioext.c (scm_ftell), ports.c (scm_seek),
11986 list.c (scm_append_x), dynwind.c (scm_dynamic_wind), error.c
11987 (scm_error_scm), vports.c (scm_make_soft_port), weaks.c
11988 (scm_make_weak_vector,scm_weak_vector_p),
11989 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table),
11990 (scm_make_doubly_weak_hash_table, scm_weak_key_hash_table_p),
11991 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
11992 macros.c (scm_macro_type), dynl.c (scm_dynamic_link),
11993 (scm_dynamic_unlink, scm_dynamic_call, scm_dynamic_args_call):
11994 Made parameter names match documentation by renaming parameters
11995 and/or fixing docstrings.
11996
11997 * numbers.c (scm_ash): Corrected Texinfo markup.
11998
11999 * strop.c (scm_string_index, scm_string_rindex),
12000 (scm_substring_fill_x, scm_string_null_p): Removed `qdocs'.
12001
12002 * vports.c (scm_make_soft_port), unif.c
12003 (scm_uniform_vector_length, scm_array_p, scm_array_rank),
12004 (scm_dimensions_to_uniform_array, scm_transpose_array),
12005 (scm_array_in_bounds_p, scm_uniform_vector_ref),
12006 (scm_bit_count, scm_bit_position, scm_bit_count_star),
12007 (scm_array_to_list, scm_list_to_uniform_array),
12008 (scm_array_prototype, symbols.c (scm_string_to_symbol), strports.c
12009 (scm_open_input_string, scm_open_output_string),
12010 (scm_get_output_string), strop.c (scm_string_copy),
12011 (scm_string_fill_x), strings.c (scm_string_p, scm_string), stime.c
12012 (scm_get_internal_real_time, scm_times),
12013 (scm_get_internal_run_time, scm_current_time, scm_gettimeofday),
12014 (scm_localtime, scm_gmtime), socket.c (scm_htons, scm_ntohs),
12015 (scm_htonl, scm_ntohl, scm_socket, scm_socketpair),
12016 (scm_getsockopt, scm_getsockname, scm_getpeername, scm_recvfrom),
12017 simpos.c (scm_system), random.c (scm_random_uniform),
12018 (scm_random_normal, scm_random_exp), ramap.c
12019 (scm_array_equal_p), posix.c (scm_pipe, scm_getgroups),
12020 (scm_status_exit_val, scm_status_term_sig, scm_status_stop_sig),
12021 (scm_getppid, scm_getuid, scm_getgid, scm_geteuid, scm_getegid),
12022 (scm_getpgrp, scm_ttyname, scm_ctermid, scm_tcgetpgrp, scm_uname),
12023 (scm_environ, scm_tmpnam, scm_mkstemp, scm_access, scm_getpid),
12024 (scm_setlocale), ports.c (scm_char_ready_p, scm_drain_input),
12025 (scm_pt_size, scm_pt_member, scm_port_revealed, scm_port_mode),
12026 (scm_close_port, scm_input_port_p, scm_output_port_p, scm_port_p),
12027 (scm_port_closed_p, scm_eof_object_p, scm_read_char),
12028 (scm_peek_char), pairs.c (scm_pair_p, scm_cons), numbers.c
12029 (scm_logand, scm_logior, scm_logxor, scm_lognot),
12030 (scm_integer_expt, scm_bit_extract, scm_logcount),
12031 (scm_integer_length, scm_string_to_number, scm_inexact_to_exact),
12032 net_db.c (scm_inet_netof, scm_lnaof), modules.c
12033 (scm_interaction_environment), macros.c (scm_makacro),
12034 (scm_makmacro, scm_makmmacro), keywords.c (scm_keyword_p), ioext.c
12035 (scm_ftell, scm_dup_to_fdes, scm_fileno, scm_isatty_p),
12036 (scm_fdopen, scm_fdes_to_ports), gc.c (scm_gc_stats), fluids.c
12037 (scm_fluid_ref), filesys.c (scm_open_fdes),
12038 (scm_stat, scm_directory_stream_p, scm_getcwd, scm_readlink):
12039 Docstring correction: `Returns' -> `Return'
12040
12041 * gc.c (scm_set_debug_cell_accesses_x):
12042 (s_scm_gc_set_debug_check_freelist_x):
12043 * fluids.c (scm_fluid_p): Added texinfo markup.
12044
12045 * error.c (scm_strerror): Made docstring more precise.
12046
12047 * vectors.c (scm_vector_p, scm_vector, scm_make_vector),
12048 (scm_vector_to_list, _scm_vector_fill_x), symbols.c
12049 (scm_symbol_p, scm_symbol_to_string), strorder.c
12050 (scm_string_equal_p, scm_string_ci_equal_p, scm_string_less_p),
12051 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p),
12052 (scm_string_ci_less_p, scm_string_ci_leq_p, scm_string_ci_gr_p):
12053 (scm_string_ci_geq_p), strop.c (scm_string_copy),
12054 (scm_string_fill_x): Removed `(r5rs)' from docstrings.
12055
12056 2001-04-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
12057
12058 * gc.c (MARK): Re-introduce a cheap sanity test for non debug
12059 mode, as suggested by Michael Livshin.
12060
12061 2001-03-31 Michael Livshin <mlivshin@bigfoot.com>
12062
12063 * backtrace.c (display_backtrace_body): since the `print_state'
12064 variable is not used (instead its data field is used directly as
12065 `pstate'), protect it from the hungry compiler optimizations.
12066 thanks to Bill Schottstaedt for the report.
12067
12068 2001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
12069
12070 * gc.[ch] (scm_tc16_allocated): New type tag for allocated cells.
12071 It is only defined and used if guile is compiled with
12072 SCM_DEBUG_CELL_ACCESSES set to true. It's purpose is, to never
12073 let cells with a free_cell type tag be visible outside of the
12074 garbage collector when in debug mode.
12075
12076 * gc.c (scm_debug_cell_accesses_p): Set to true as default.
12077
12078 (scm_assert_cell_valid): Use a local static variable to avoid
12079 recursion.
12080
12081 (MARK): Only check for rogue cell pointers in debug mode. Use
12082 scm_cellp for this purpose and place all checks for rogue pointers
12083 into that function. Further, since due to conservative scanning
12084 we may encounter free cells during marking, don't use the standard
12085 cell type accessor macro to determine the cell type.
12086
12087 (scm_cellp): Check if the cell pointer actually points into a
12088 card header.
12089
12090 (scm_init_gc): Initalize scm_tc16_allocated.
12091
12092 * gc.h (GCH): Renamed to SCM_GC_H.
12093
12094 (SCM_VALIDATE_CELL): Enclose the expression in brackets. This
12095 might be unnecessary, but I feel better this way :-)
12096
12097 (SCM_GC_CELL_TYPE): New macro.
12098
12099 (SCM_SETAND_CDR, SCM_SETOR_CDR): Deprecated. These are not used
12100 in guile, and it is unlikely that they will be applied to real
12101 pairs anyway.
12102
12103 (SCM_SET_FREE_CELL_TYPE): Removed. It was not used.
12104
12105 (SCM_GC_SET_ALLOCATED): New macro. Only non-empty if guile is
12106 compiled with SCM_DEBUG_CELL_ACCESSES set to true.
12107
12108 (SCM_NEWCELL, SCM_NEWCELL2): Use of SCM_GC_SET_ALLOCATED will
12109 make sure that in debug mode no free cell will ever be visible
12110 outside of the garbage collector.
12111
12112 2001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
12113
12114 * async.c (scm_asyncs_pending): Don't use != to compare SCM
12115 values.
12116
12117 * async.c (scm_system_async), variable.c (scm_make_variable,
12118 scm_make_undefined_variable): Use scm_cons to create a pair.
12119
12120 * debug.c (scm_reverse_lookup): Perform proper type checking.
12121 Remove suspicious use of SCM_SLOPPY_CONSP.
12122
12123 * eq.c (scm_equal_p), tags.h (SCM_ECONSP): Use SCM_CONSP instead
12124 of SCM_SLOPPY_CONSP. A sane compiler should be able to perform
12125 the corresponding optimization.
12126
12127 * eval.c (iqq): Use proper type check.
12128
12129 (scm_m_expand_body): Remove redundant type checks.
12130
12131 (promise_print): Don't access promise cells as pairs.
12132
12133 * eval.c (EVALCAR, iqq, scm_m_expand_body, scm_eval_args,
12134 scm_deval_args SCM_CEVAL), guardians.c (scm_guard), hashtab.c
12135 (scm_internal_hash_fold), print.c (scm_iprlist): Use !SCM_CELLP
12136 for SCM_NCELLP, !SCM_CONSP for SCM_NCONSP, !SCM_IMP for SCM_NIMP,
12137 !SCM_FALSEP for SCM_NFALSEP, !SCM_NULLP for SCM_NNULLP
12138
12139 * eval.c (scm_m_define, scm_macroexp, SCM_CEVAL), print.c
12140 (scm_iprin1): Use new macro predicate and accessors.
12141
12142 * eval.h (scm_tc16_macro): Removed declaration. It is declared
12143 in macros.h.
12144
12145 * eval.h (EVALH), macros.h (MACROSH), ports.h (PORTSH), procs.h
12146 (PROCSH), tags.h (TAGSH), variable.h (VARIABLEH): Renamed to
12147 SCM_EVAL_H, SCM_MACROS_H, SCM_PORTS_H, SCM_PROCS_H, SCM_TAGS_H and
12148 SCM_VARIABLE_H. Even the macros that are used to inhibit
12149 including a header file twice should be in the SCM_ namespace.
12150
12151 * fluids.c (scm_swap_fluids, scm_swap_fluids_reverse),
12152 properties.c (scm_primitive_property_ref,
12153 scm_primitive_property_del_x): Prefer stronger predicates like
12154 SCM_NULLP or SCM_FALSEP over SCM_IMP.
12155
12156 * gc.c (MARK): Use proper macros to access procedure-with-setter
12157 cell elements and closure cell elements.
12158
12159 (gc_sweep_freelist_finish, scm_gc_sweep, init_heap_seg): Don't
12160 access free cells as pairs.
12161
12162 (scm_unprotect_object): scm_hashq_get_handle returns #f if
12163 no hashtab entry is found.
12164
12165 * gc.c (scm_gc_sweep), ports.c (scm_close_port): Use new macro
12166 SCM_CLR_PORT_OPEN_FLAG.
12167
12168 * guardians.c (TCONC_IN), print.c (scm_free_print_state): Don't
12169 use SCM_SET_C[AD]R for uninitialized cells.
12170
12171 * hashtab.c (scm_hash_fn_get_handle): Use SCM_VALIDATE_VECTOR.
12172 If the hashtable has no slots, return #f instead of '(). This
12173 unifies the return value with most assoc-functions.
12174
12175 (scm_hash_fn_ref): Use proper type check.
12176
12177 (scm_hashq_get_handle, scm_hashv_get_handle, scm_hash_get_handle):
12178 Removed references to non-existing functions from documentation.
12179
12180 * keywords.c (scm_keyword_dash_symbol): Use proper macros to
12181 access keyword cell elements.
12182
12183 * macros.h (SCM_MACROP, SCM_MACRO_TYPE, SCM_MACRO_CODE): New
12184 macros.
12185
12186 * ports.h (SCM_CLR_PORT_OPEN_FLAG): New macro.
12187
12188 * print.c (scm_iprlist): Added comment. Improved loop
12189 conditions.
12190
12191 * procs.h (SCM_ENV, SCM_SETENV): Don't access closure cells as
12192 pairs.
12193
12194 * smob.c (scm_markcdr): Don't access smob cells as pairs.
12195
12196 * tags.h (SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP): Deprecated.
12197
12198 * throw.c (ACTIVATEJB, DEACTIVATEJB): Don't access jump buffer
12199 cells as pairs.
12200
12201 * variable.c (variable_print, variable_equalp, scm_variable_ref,
12202 scm_variable_set_x): Use proper macros to access variable cell
12203 elements.
12204
12205 (scm_variable_bound_p): Don't use SCM_NEGATE_BOOL.
12206
12207 * variable.h (SCM_VARVCELL): Don't access variable cells as
12208 pairs.
12209
12210 * vectors.c (scm_vector), weaks.c (scm_weak_vector): Simplified,
12211 added FIXME comment, removed register specifier.
12212
12213 2001-03-29 Keisuke Nishida <kxn30@po.cwru.edu>
12214
12215 * goops.c, goops.h (scm_init_oop_goops_goopscore_module): Deprecated.
12216 * init.c (scm_init_guile_1): Don't init goopscore module.
12217
12218 2001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
12219
12220 * eval.c (SCM_APPLY): Check that arg1 is bound for scm_tc7_cxr.
12221
12222 2001-03-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12223
12224 * strop.c (scm_string_to_list): Fixed docstring markup.
12225 (scm_string_upcase_x, scm_string_upcase, scm_string_downcase_x),
12226 (scm_string_downcase, scm_string_capitalize_x),
12227 (scm_string_capitalize): Rewrote and corrected docstrings.
12228 (scm_string_ci_to_symbol): Made docstring more explicit.
12229
12230 2001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
12231
12232 * values.h (scm_values_vtable, SCM_VALUESP): Moved here so that
12233 eval.c can use it.
12234 (scm_call_with_values): Removed.
12235 * values.c (values_vtable, scm_values_vtable): Added "scm_" prefix
12236 so that it can be exported.
12237 (scm_call_with_values): Removed.
12238
12239 * tags.h (SCM_IM_CALL_WITH_VALUES): New isym.
12240 * eval.c: Include "libguile/values.h"
12241 (scm_m_at_call_with_values, scm_sym_at_call_with_values):
12242 New.
12243 (unmemocopy, scm_ceval, scm_deval): Handle new isym.
12244 * eval.h (scm_sym_at_call_with_values, scm_m_at_call_with_values):
12245 New delcarations to support above change.
12246
12247 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Fix syntax
12248 errors with last change.
12249
12250 2001-03-25 Marius Vollmer <mvo@zagadka.ping.de>
12251
12252 * eval.c (scm_primitive_eval_x, scm_primitive_eval, scm_i_eval_x,
12253 scm_i_eval): Moved the application of the system transformer from
12254 scm_i_eval to scm_primitive_eval.
12255
12256 2001-03-23 Neil Jerram <neil@ossau.uklinux.net>
12257
12258 * guile-snarf.awk.in: Substitute "\\" with "\" in .doc output.
12259
12260 * strop.c (scm_string_index): Fix docstring line break
12261 regression.
12262
12263 * list.c (scm_cons_star): Fix docstring typo.
12264
12265 2001-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
12266
12267 * gc.c (scm_init_storage), gdbint.c (scm_init_gdbint), numbers.c
12268 (big2str), ports.c (scm_drain_input), read.c (scm_read,
12269 scm_grow_tok_buf), strings.c (scm_string, scm_makfromstr,
12270 scm_make_string, scm_string_append), strports.c (st_resize_port,
12271 scm_object_to_string), unif.c (scm_make_uve): Replace calls to
12272 scm_makstr with calls to scm_allocate_string.
12273
12274 * strings.[ch] (scm_allocate_string): New function.
12275
12276 * strings.[ch] (scm_makstr): Deprecated.
12277
12278 2001-03-18 Gary Houston <ghouston@arglist.com>
12279
12280 * posix.c (scm_tmpnam): check that return value from tmpnam is not
12281 NULL. rewrote the docstring.
12282 (scm_mkstemp): new procedure implementing "mkstemp!".
12283 * posix.h: declare scm_mkstemp.
12284
12285 * net_db.c: declare h_errno if configure didn't define HAVE_H_ERRNO.
12286 normally it would be found in netdb.h.
12287
12288 2001-03-17 Gary Houston <ghouston@arglist.com>
12289
12290 * sort.c (scm_sort): move sortvec variable to avoid a compiler
12291 warning when HAVE_ARRAYS is not defined. move len too.
12292
12293 * Makefile.am (DOT_X_FILES): remove net_db.x, posix.x, socket.x.
12294 (EXTRA_DOT_X_FILES): let configure set the value.
12295 (DOT_DOC_FILES): remove net_db.doc, posix.doc, socket.doc.
12296
12297 * gc.c (scm_must_malloc): changed the comment explaining when
12298 scm_must variants of malloc/free etc., should be used, based on
12299 explanation from Dirk Herrmann.
12300 * fports.c (scm_fport_buffer_add): use FUNC_NAME instead of a local
12301 string with procedure name. use scm_must_malloc instead of malloc.
12302 (scm_setvbuf, scm_fdes_to_port, fport_close): use scm_must variants
12303 of malloc/free.
12304 * ports.c (scm_add_to_port_table, scm_remove_from_port_table,
12305 scm_ungetc): use scm_must variants of malloc/realloc/free.
12306 (scm_add_to_port_table, scm_ungetc): define FUNC_NAME.
12307
12308 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12309
12310 * __scm.h (SCM_ASSERT, SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
12311 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Don't call scm_wta, call
12312 scm_wrong_type_arg instead.
12313
12314 (SCM_WNA): Deprecated.
12315
12316 * error.[ch] (scm_wta): Deprecated.
12317
12318 * numbers.c (s_i_log): Minor comment fix.
12319
12320 * read.c (scm_lreadr), unif.c (scm_aind, scm_shap2ra,
12321 scm_make_shared_array, scm_transpose_array, scm_enclose_array,
12322 scm_array_in_bounds_p): Don't use SCM_ASSERT to check for
12323 wrong-num-args or misc errors.
12324
12325 * unif.c (scm_make_shared_array, scm_transpose_array,
12326 scm_enclose_array, scm_array_in_bounds_p, scm_array_set_x):
12327 Validate the rest argument (note: this is only done when guile is
12328 built with SCM_DEBUG_REST_ARGUMENT=1)
12329
12330 (scm_array_in_bounds_p, scm_uniform_vector_ref, scm_array_set_x):
12331 Replace calls to scm_wrong_num_args by SCM_WRONG_NUM_ARGS.
12332
12333 * validate.h (SCM_FUNC_NAME, SCM_VALIDATE_NUMBER_COPY,
12334 SCM_VALIDATE_NUMBER_DEF_COPY): Deprecated.
12335
12336 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12337
12338 * validate.h (SCM_WRONG_NUM_ARGS): Call scm_error_num_args_subr
12339 instead of scm_wrong_num_args.
12340
12341 * coop-threads.c: Don't include libguile/strings.h. (Was only
12342 needed for former implementation of SCM_WRONG_NUM_ARGS.)
12343
12344 * debug.c (scm_m_start_stack): Don't use SCM_ASSERT to check for
12345 wrong-num-args errors.
12346
12347 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12348
12349 * error.[ch] (scm_error_num_args_subr): New function.
12350
12351 2001-03-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12352
12353 * list.c (scm_list, scm_cons_star, scm_null_p, scm_list_p),
12354 (scm_length, scm_append, scm_reverse, scm_list_ref),
12355 (scm_memq, scm_memv, scm_member, scm_delv_x, scm_delete_x),
12356 (scm_delq, scm_delv, scm_delete, scm_delq1_x, scm_delv1_x),
12357 (scm_delete1_x), gc.c (scm_map_free_list),
12358 (scm_free_list_length), hash.c (scm_hashq, scm_hashv),
12359 (scm_hash), hashtab.c (scm_hashq_ref, scm_hashq_set_x),
12360 (scm_hashq_remove_x, scm_hashv_ref, scm_hashv_set_x),
12361 (scm_hashv_remove_x, scm_hash_ref, scm_hash_set_x),
12362 (scm_hash_remove_x), ports.c (scm_pt_size, scm_pt_member), print.c
12363 (scm_current_pstate), scmsigs.c (scm_usleep), goops.c
12364 (scm_get_keyword, scm_sys_compute_slots): Added texinfo markup.
12365
12366 * weaks.c (scm_weak_vector_p, scm_weak_key_hash_table_p),
12367 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
12368 rdelim.c (scm_read_delimited_x), strop.c (scm_string_index),
12369 symbols.c (scm_symbol_interned_p), numbers.c
12370 (scm_string_to_number), ports.c (scm_port_p): Corrected texinfo
12371 markup.
12372
12373 2001-03-16 Keisuke Nishida <kxn30@po.cwru.edu>
12374
12375 * snarf.h (SCM_CONST_LONG): Deprecated.
12376 * tag.c (CONST_INUM): New macro. Use it to define scm_utag_*.
12377
12378 2001-03-15 Marius Vollmer <marius.vollmer@uni-dortmund.de>
12379
12380 * numbers.c (scm_num2ulong): Check that a bignum is positive
12381 before looking at the magnitude. Correctly check for overflow
12382 during conversion.
12383 (scm_num2long_long): Likewise.
12384 (scm_num2ulong_long): New.
12385 (ULONG_LONG_MAX): Define if not already defined.
12386 * numbers.h: (scm_num2ulong_long): New prototype.
12387
12388 2001-03-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12389
12390 * validate.h (SCM_VALIDATE_OPOUTSTRPORT): New macro.
12391
12392 * strports.h (SCM_STRPORTP, SCM_OPSTRPORTP, SCM_OPINSTRPORTP),
12393 (SCM_OPOUTSTRPORTP): New predicate macros.
12394 (scm_open_input_string, scm_open_output_string),
12395 (scm_get_output_string): New prototypes.
12396
12397 * strports.c (scm_open_input_string, scm_open_output_string),
12398 (scm_get_output_string): New procedures (SRFI-6 compliant).
12399 Made scm_tc16_strport non-static.
12400
12401 2001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
12402
12403 * macros.h (SCM_ASSYNT): Removed unused object argument from
12404 signature.
12405
12406 * eval.c (scm_m_body, scm_m_quote, scm_m_begin, scm_m_if,
12407 scm_m_set_x, scm_m_and, scm_m_or, scm_m_case, scm_m_cond,
12408 scm_m_letstar, scm_m_do, scm_m_quasiquote, scm_m_delay,
12409 scm_m_define, scm_m_letrec1, scm_m_letrec, scm_m_let, scm_m_apply,
12410 scm_m_cont, scm_m_nil_cond, scm_m_nil_ify, scm_m_t_ify,
12411 scm_m_0_cond, scm_m_0_ify, scm_m_1_ify, scm_m_atfop, scm_m_atbind,
12412 scm_m_expand_body), evalext.c (scm_m_generalized_set_x,
12413 scm_m_undefine), goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
12414 scm_m_atdispatch): Removed unused object argument from call to
12415 SCM_ASSYNT.
12416
12417 2001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
12418
12419 * gh.h/gh_data.c (gh_ints2scm): Changed the signature to use a
12420 const int* to reflect that the input array of integers remains
12421 unchanged. Thanks to Brett Viren for the hint.
12422
12423 2001-03-14 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12424
12425 * gh_data.c (gh_scm2chars, gh_scm2shorts, gh_scm2longs),
12426 (gh_scm2floats, gh_scm2doubles): Check for malloc() returning NULL
12427 in various places.
12428 (gh_scm2newstr, gh_symbol2newstr): Change call to
12429 scm_must_malloc() to malloc(), because user-free()able memory is
12430 allocated.
12431
12432 * gc.c: Added declaration of `scm_debug_check_freelist'.
12433
12434 2001-03-13 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12435
12436 * ports.c (scm_port_mode): Changed `mode' array size to 4.
12437
12438 2001-03-12 Keisuke Nishida <kxn30@po.cwru.edu>
12439
12440 * strports.c (scm_object_to_string): New procedure.
12441 (scm_strprint_obj): Deprecated.
12442 * strports.h: Reflect the changes.
12443
12444 2001-03-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
12445
12446 * goops.h (SCM_VALIDATE_PUREGENERIC): New macro.
12447
12448 * goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
12449 scm_m_atdispatch): Provide definitions for FUNC_NAME. Don't use
12450 SCM_ASSYNT to check for correct argument types. Either use some
12451 SCM_VALIDATE_* macro or an explicit test.
12452
12453 (scm_make_foreign_object): Don't use SCM_ASSERT to check for
12454 misc-errors.
12455
12456 * macros.h (SCM_ASSYNT): On assertion failure, issue a misc-error
12457 instead of calling scm_wta.
12458
12459 2001-03-12 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12460
12461 * load.c (scm_primitive_load, scm_primitive_load_path),
12462 (scm_sys_search_load_path): Corrected docstrings (file ->
12463 filename).
12464
12465 * eval.c (scm_force): Added texinfo markup to docstring.
12466 (scm_promise_p): Renamed parameter to `obj' to match docstring.
12467
12468 * debug-malloc.c: Reinserted #include <stdio.h>.
12469
12470 2001-03-11 Keisuke Nishida <kxn30@po.cwru.edu>
12471
12472 * list.c (s_scm_reverse_x): Use SCM_VALIDATE_LIST.
12473
12474 * environments.c, error.c, eval.c, filesys.c, hashtab.c, load.c,
12475 net_db.c, procprop.c, read.c, scmsigs.c, socket.c, struct.c:
12476 Use SCM_LISTn instead of scm_listify.
12477
12478 2001-03-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12479
12480 * _scm.h: Removed #include <errno.h>.
12481
12482 * error.c, net_db.c, putenv.c, stime.c: Removed declaration of
12483 errno variable (can be a macro on some systems, for example when
12484 using linux libc with threads).
12485
12486 * error.c, filesys.c, gc.c, ioext.c, iselect.c, net_db.c, ports.c,
12487 posix.c, print.c, putenv.c, scmsigs.c, script.c, simpos.c, smob.c,
12488 socket.c, srcprop.c, stime.c, strop.c, unif.c, vports.c: Added
12489 #include <errno.h> in these 20 out of 100 files.
12490
12491 2001-03-10 Gary Houston <ghouston@arglist.com>
12492
12493 * socket.c: add a definition of SUN_LEN (from glibc) for when it's
12494 not already defined.
12495
12496 2001-03-09 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12497
12498 * coop.c: Inserted #include <stdio.h>.
12499
12500 * iselect.c: Reinserted #include <stdio.h>.
12501
12502 2001-03-10 Marius Vollmer <mvo@zagadka.ping.de>
12503
12504 * posix.c: Replaced `#define' of __USE_XOPEN right before
12505 including unistd.h with a define of _GNU_SOURCE at the very top of
12506 the file.
12507
12508 2001-03-09 Keisuke Nishida <kxn30@po.cwru.edu>
12509
12510 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
12511 continuations.c, debug-malloc.c, debug.c, dynwind.c, eq.c, eval.c,
12512 feature.c, filesys.h, gc_os_dep.c, gh_data.c, gh_eval.c,
12513 gh_funcs.c, gh_io.c, gh_list.c, gh_predicates.c, hash.c,
12514 hashtab.c, iselect.c, keywords.c, list.c, load.c, mallocs.c,
12515 net_db.c, numbers.c, objprop.c, objprop.h, options.c, pairs.c,
12516 print.c, procprop.c, procs.c, properties.c, ramap.c,
12517 regex-posix.c, root.c, scmsigs.c, simpos.c, socket.c, srcprop.c,
12518 stackchk.c, stacks.c, strings.c, strop.c, strorder.c, struct.c,
12519 symbols.c, tag.c, threads.c, variable.c, vectors.c, weaks.c:
12520 Remove #include <stdio.h>
12521 * gc.c, gdbint.c, root.c, sort.c, unif.c: Add #include <string.h>.
12522
12523 * procs.c (scm_make_subr_opt): Init symcell to avoid warning.
12524
12525 2001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12526
12527 * posix.c (scm_gethostname): Set initial name length to 256 for
12528 Solaris.
12529
12530 2001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12531
12532 * posix.h (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
12533 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
12534 (scm_sethostname, scm_gethostname): New prototypes.
12535
12536 * posix.c: Added inclusion of <crypt.h>, <sys/resource.h> and
12537 <sys/file.h>, if present.
12538 (scm_init_posix): [PRIO_PROCESS, PRIO_PGRP, PRIO_USER, LOCK_SH,
12539 LOCK_EX, LOCK_UN, LOCK_NB]: New variables.
12540 (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
12541 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
12542 (scm_sethostname, scm_gethostname): New procedures.
12543
12544 2001-03-08 Neil Jerram <neil@ossau.uklinux.net>
12545
12546 * ports.c (scm_port_column): Docstring fixes: (i) port-line arg is
12547 not optional (ii) "recommend" spelling correction.
12548
12549 2001-03-08 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12550
12551 * ramap.c (racp): Removed optimization which caused array copying
12552 to fail if the two arrays shared storage. Re-inserted the IVDEP
12553 macros removed in the change of 2000-03-09. (Don't really have a
12554 complete grasp of what they are for, but they seem to be necessary
12555 on Crays. This needs testing!) Thanks to Miroslav Silovic.
12556
12557 * hash.c (scm_string_hash): Don't downcase characters.
12558
12559 2001-03-07 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12560
12561 * symbols.c (scm_symbols_prehistory): Changed symbol hash table
12562 size from 277 --> 1009.
12563
12564 * symbols.c, symbols.h (scm_sys_symbols): New function GUILE_DEBUG
12565 function.
12566
12567 * coop-threads.c: Fixed change of 2001-03-06.
12568
12569 * validate.h: Code formatting.
12570
12571 2001-03-07 Keisuke Nishida <kxn30@po.cwru.edu>
12572
12573 * Makefile.am (*.x): Add dependency on snarf.h and guile-doc-snarf.in.
12574 (*.doc): Add dependency on guile-snarf.awk.in.
12575
12576 * guile-snarf.awk.in: Neglect spaces at the end of
12577 SCM_SNARF_DOCSTRING_END. Skip lines "# NN ..." in the
12578 middle of docstrings. (To avoid the problem with gcc-2.96.)
12579
12580 2001-03-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
12581
12582 * coop-threads.c (scm_call_with_new_thread), load.c
12583 (scm_primitive_load, scm_sys_search_load_path), random.c
12584 (scm_c_default_rstate), struct.c (scm_make_struct_layout,
12585 scm_struct_ref, scm_struct_set_x): Don't use SCM_ASSERT to
12586 (potentially) issue a scm-misc-error or wrong-num-args error
12587 message.
12588
12589 * load.c (scm_search_path): Use SCM_ASSERT_TYPE to give details
12590 about the expected type with the wrong-type-arg error message.
12591
12592 * smob.c (scm_make_smob): Abort on misuse of smob - it indicates
12593 a C level bug that can't be fixed from scheme anyway.
12594
12595 2001-03-05 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12596
12597 * eval.c (scm_m_letstar): Removed check for duplicate bindings.
12598 Duplicate bindings are OK in a let* since a let* is semantically
12599 equivalent to a nested set of let:s.
12600
12601 2001-03-05 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12602
12603 * print.c (scm_print_options): Fixed texinfo in docstring.
12604
12605 * net_db.c (scm_getserv, scm_getproto, scm_getnet): Return #f if
12606 the underlying functions getservent, getprotoent or getnetent
12607 return NULL instead of signalling an error.
12608
12609 2001-03-04 Gary Houston <ghouston@arglist.com>
12610
12611 * socket.c (scm_fill_sockaddr): don't allow buffer overflows when
12612 taking an unexpectedly large filename for an AF_UNIX socket from
12613 bind/connect/sendto (thanks to Martin Grabmueller).
12614
12615 * socket.c (scm_sock_fd_to_port, SCM_SOCK_FD_TO_PORT): removed the
12616 former and adjusted the latter.
12617 (scm_socket, scm_socketpair): cosmetic changes.
12618 (scm_getsockopt, scm_setsockopt): declare optlen as int, not
12619 size_t as socklen_t substitute. don't restrict args/return values
12620 to INUM: allow full range of int or size_t.
12621 (scm_fill_sockaddr): check arguments before allocating memory, to
12622 avoid leakage. use malloc, not scm_must_malloc.
12623 (scm_connect, scm_bind, scm_sendto): use int, not size_t as socklen_t
12624 substitute. free the sockaddr structure before throwing an error.
12625 (scm_init_add_buffer): procedure removed, together with its static
12626 buffer scm_addr_buffer, which wouldn't be thread safe. instead,
12627 define a macro MAX_ADDR_SIZE and declare the buffer where needed.
12628 (scm_accept, scm_getpeername, scm_getsockname, scm_recvfrom,
12629 scm_sendto): use a local buffer instead of scm_addr_buffer.
12630 adjust for new SCM_SOCK_FD_TO_PORT. use int for address size,
12631 not size_t.
12632 (scm_recvfrom): set addr->sa_family to AF_UNSPEC before the recvfrom
12633 call to detect whether recvfrom could be bothered to set the address.
12634 (scm_init_socket): don't call scm_init_addr_buffer.
12635
12636 2001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
12637
12638 * debug.c (scm_procedure_source, scm_procedure_environment),
12639 print.c (scm_get_print_state), ramap.c (scm_array_fill_int,
12640 scm_array_index_map_x), sort.c (scm_sort_x, scm_sort,
12641 scm_stable_sort_x, scm_stable_sort), stacks.c (scm_make_stack,
12642 scm_last_stack_frame), symbols.c (scm_sym2vcell, scm_sym2ovcell),
12643 unif.c (scm_list_to_uniform_array, scm_uniform_vector_length,
12644 scm_transpose_array, scm_enclose_array, scm_array_in_bounds_p,
12645 scm_uniform_vector_ref, scm_array_set_x, scm_uniform_array_read_x,
12646 scm_uniform_array_write, scm_bit_set_star_x, scm_bit_count_star,
12647 scm_array_to_list, scm_array_prototype), validate.h
12648 (SCM_VALIDATE_NUMBER_COPY): Don't call function scm_wta, call
12649 scm_misc_error or scm_wrong_type_arg instead.
12650
12651 * validate.h (SCM_WTA, RETURN_SCM_WTA): Deprecated.
12652
12653 2001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12654
12655 * goops.c, goops.h (scm_sys_pre_expand_closure_x): Removed.
12656 (scm_sys_tag_body): Added.
12657
12658 2001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
12659
12660 * continuations.c (continuation_apply), eval.c (scm_m_lambda,
12661 scm_m_letstar, scm_m_letrec1, scm_m_let, SCM_APPLY), eval.h
12662 (SCM_EVALIM2), evalext.c (scm_m_generalized_set_x), gc.c
12663 (get_bvec, MARK), goops.c (scm_primitive_generic_generic),
12664 options.c (scm_options), ports.c (scm_remove_from_port_table),
12665 ramap.c (scm_ramapc), read.c (skip_scsh_block_comment, scm_lreadr,
12666 scm_lreadparen, scm_lreadrecparen), script.c (script_get_octal,
12667 script_get_backslash, script_read_arg), unif.c (scm_cvref): Don't
12668 call function scm_wta, call scm_misc_error or scm_wrong_type_arg
12669 instead.
12670
12671 2001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12672
12673 * goops.c (scm_sys_pre_expand_closure_x): New procedure.
12674
12675 2001-03-04 Marius Vollmer <mvo@zagadka.ping.de>
12676
12677 * eval.c (scm_s_duplicate_bindings): New error message.
12678 (scm_m_letrec1, scm_m_letstar): Check for duplicate bindings.
12679
12680 2001-03-03 Marius Vollmer <mvo@zagadka.ping.de>
12681
12682 * eval.h (SCM_EVALIM2): New macro. Use it when a
12683 immediate, literal constant should be evaluated.
12684 * eval.c (scm_s_duplicate_formals): New error message string.
12685 (scm_c_improper_memq): New function.
12686 (scm_m_lambda): Check for duplicate arguments.
12687 (scm_ceval, scm_deval): When executing a body: only cons a new
12688 toplevel environment frame when it is different from the
12689 existing one; use EVALCAR instead of SIDEVAL so that we can properly
12690 check for empty combinations; use SCM_EVALIM2 for the same reason
12691 in the non-toplevel loop.
12692 (nontoplevel_cdrxnoap, nontoplevel_cdrxbegin, nontoplevel_begin):
12693 New labels with the meaning of their non-"nontoplevel" partners,
12694 but they are used when it is known that the body is not evaluated at
12695 top-level.
12696 (scm_apply, scm_dapply): use SCM_EVALIM2 to get proper error
12697 reporting for empty combinations.
12698
12699 2001-03-02 Keisuke Nishida <kxn30@po.cwru.edu>
12700
12701 * Remove dump facilities.
12702 * dump.c, dump.h: Removed.
12703 * Makefile.am: Remove dump.c, dump.h, dump.x, dump.doc.
12704 * init.c: Remove #include "libguile/dump.h".
12705 (scm_init_guile_1): Remove scm_init_dump.
12706 * smob.h (scm_smob_descriptor): Remove slots: dump, undump.
12707 (scm_set_smob_dump, scm_set_smob_undump): Remove declaration.
12708 * smob.c (scm_make_smob_type): Remove initialization: dump, undump.
12709 (scm_set_smob_dump, scm_set_smob_undump): Removed.
12710
12711 * keywords.c: Remove #include "libguile/dump.h".
12712 (keyword_dump, keyword_undump): Removed.
12713 (scm_init_keywords): Remove scm_set_smob_dump and scm_set_smob_undump.
12714
12715 2001-03-02 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12716
12717 * vectors.c (s_scm_vector_p, list->vector, scm_vector)
12718 (scm_vector_ref, scm_vector_set_x, scm_vector_to_list)
12719 (scm_vector_fill_x), strorder.c (scm_string_equal_p)
12720 (scm_string_ci_equal_p, scm_string_less_p, scm_string_leq_p)
12721 (scm_string_gr_p, scm_string_geq_p, scm_string_ci_less_p)
12722 (scm_string_ci_geq_p), symbols.c (scm_symbol_p)
12723 (scm_symbol_to_string, scm_string_to_symbol): Changed use of @t{}
12724 to @code{} as the texinfo manual recommends, converted the
12725 examples to use a @lisp{}-environment.
12726
12727 * strports.c (scm_eval_string): Cleaned up the docstring.
12728
12729 * struct.c (scm_struct_p, scm_struct_vtable_p): Added texinfo
12730 markup.
12731
12732 * numbers.c (scm_exact_p, scm_odd_p, scm_even_p)
12733 (scm_number_to_string, scm_string_to_number, scm_number_p)
12734 (scm_real_p, scm_integer_p, scm_inexact_p, scm_make_rectangular)
12735 (scm_make_polar, scm_inexact_to_exact): Added texinfo markup.
12736 (scm_ash): Added texinfo markup and removed obsolete @refill.
12737 (scm_gr_p): Corrected comment.
12738 (scm_gr_p, scm_leq_p, scm_geq_p): Added texinfo markup to (future
12739 docstring) comments.
12740 (scm_positive_p, scm_less_p, scm_num_eq_p, scm_real_p)
12741 (scm_number_p, scm_negative_p, scm_max, scm_min, scm_sum)
12742 (scm_difference, scm_product, scm_divide, scm_asinh, scm_acosh)
12743 (scm_atanh, scm_truncate, scm_round, scm_exact_to_inexact)
12744 (floor, ceiling, $sqrt, $abs, $exp, $log, $sin, $cos, $tan, $asin)
12745 ($acos, $atan, $sinh, $cosh, $tanh, scm_real_part, scm_imag_part)
12746 (scm_magnitude, scm_angle, scm_abs, scm_quotient, scm_remainder)
12747 (scm_modulo, scm_gcd, scm_lcm): Added (future docstring) comments.
12748
12749 2001-02-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
12750
12751 * __scm.h (SCM_ASSERT_TYPE): Add missing macro parameter.
12752 (Obviously nobody compiles with SCM_RECKLESS defined...)
12753
12754 * validate.h (SCM_ASSERT_RANGE): Use the argument number.
12755
12756 2001-02-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12757
12758 * ports.c, ports.h (scm_c_read, scm_c_write): New functions.
12759
12760 * ports.h (SCM_READ_BUFFER_EMPTY_P): New macro.
12761
12762 2001-02-24 Neil Jerram <neil@ossau.uklinux.net>
12763
12764 * numbers.c (scm_two_doubles, scm_sys_expt, scm_sys_atan2,
12765 scm_make_polar): Rename arguments `z1' and `z2' to `x' and `y',
12766 since use of `z' suggests that the arguments may be complex.
12767
12768 * goops.c (scm_make), numbers.c (scm_sys_expt): Fix docstring
12769 typos.
12770
12771 2001-02-23 Neil Jerram <neil@ossau.uklinux.net>
12772
12773 * dump.c (scm_binary_write, scm_binary_read), eval.c
12774 (scm_primitive_eval), guardians.c (scm_guardian_destroyed_p,
12775 scm_guardian_greedy_p, scm_make_guardian), fports.c
12776 (scm_file_port_p): Minor docstring fixes.
12777
12778 2001-02-22 Marius Vollmer <mvo@zagadka.ping.de>
12779
12780 * load.c (load): Use scm_primitive_eval_x instead of scm_i_eval_x.
12781
12782 * goops.c (scm_add_method, DEFVAR): Use scm_eval instead of
12783 scm_i_eval.
12784 (make_class_from_template): Do not bother to set the current
12785 module around the call to DEFVAR, scm_eval takes care of that.
12786 (scm_init_goops): Make scm_module_goops and
12787 scm_goops_lookup_closure permanent objects.
12788
12789 * eval.c (scm_ceval, scm_deval): When evaluating expressions on
12790 top level, create a fresh top-level environment for each
12791 expression instead of mutating the exisint frame. This is
12792 important when that frame is closed over.
12793
12794 * numbers.c (s_scm_logior) [SCM_DIGSTOOBIG]: Also use
12795 SCM_DIGSPERLONG instead of DIGSPERLONG.
12796
12797 2001-02-21 Marius Vollmer <mvo@zagadka.ping.de>
12798
12799 * eval.c (scm_ceval, scm_deval): Check for wrong number of args
12800 before applying arrow procedure in `cond' and before applying
12801 receiver procedure in call-with-current-continuation.
12802 (scm_i_eval): Do not invoke scm_copy_tree in argument in SCM_XEVAL
12803 macro. The argument is expanded more than one time.
12804
12805 * numbers.c (scm_logior) [SCM_DIGSTOOBIG]: Correctly use
12806 SCM_BIGDIG instead of BIGDIG. Thanks to Steven G. Johnson!
12807
12808 2001-02-20 Marius Vollmer <mvo@zagadka.ping.de>
12809
12810 * guile-doc-snarf.in, guile-func-name-check.in: Added copyright
12811 notice and license.
12812
12813 2001-02-17 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12814
12815 * variable.c (scm_make_variable, scm_make_undefined_variable)
12816 (scm_variable_ref, scm_variable_set_x, scm_builtin_variable)
12817 (scm_variable_bound_p), values.c (scm_values)
12818 (scm_call_with_values), unif.c (scm_bit_count)
12819 (scm_bit_set_star_x), symbols.c (scm_gentemp)
12820 (scm_gensym), strings.c (scm_string_p, scm_make_string)
12821 (scm_read_only_string_p, scm_string_length, scm_string_ref)
12822 (scm_string_set_x, scm_substring, scm_string_append), stime.c
12823 (scm_strptime, scm_mktime), random.c (scm_seed_to_random_state)
12824 (scm_copy_random_state, scm_random), print.c (scm_newline)
12825 (scm_write_char, scm_simple_format), debug-malloc.c
12826 (scm_malloc_stats), environments.c (scm_environment_p)
12827 (scm_environment_bound_p, scm_environment_ref)
12828 (scm_environment_fold, scm_environment_define)
12829 (scm_environment_undefine, scm_environment_set_x)
12830 (scm_environment_cell, scm_environment_observe)
12831 (scm_environment_observe_weak, scm_environment_unobserve)
12832 (scm_make_eval_environment, scm_eval_environment_p)
12833 (scm_eval_environment_set_local_x, scm_eval_environment_local)
12834 (scm_eval_environment_imported)
12835 (scm_eval_environment_set_imported_x, scm_make_import_environment)
12836 (scm_import_environment_p, scm_import_environment_imports)
12837 (scm_import_environment_set_imports_x, scm_make_export_environment)
12838 (scm_export_environment_p, scm_export_environment_private)
12839 (scm_export_environment_set_private_x)
12840 (scm_export_environment_signature)
12841 (scm_export_environment_set_signature_x, scm_leaf_environment_p):
12842 Added texinfo markup.
12843
12844 * ports.c (scm_drain_input): Lowercased argument to @var.
12845 (scm_current_input_port, scm_current_output_port): Filled in
12846 missing explanation.
12847 (scm_current_load_port, scm_set_current_output_port)
12848 (scm_set_current_error_port, scm_port_line, scm_set_port_line_x):
12849 Added texinfo markup.
12850
12851 * arbiters.c (scm_make_arbiter, scm_try_arbiter)
12852 (scm_release_arbiter): Added texinfo markup to docstrings.
12853 Changed `Returns' to `Return'.
12854 (arbiter_print): Changed SCM_CDR to SCM_SMOB_DATA.
12855
12856 2001-02-16 Neil Jerram <neil@ossau.uklinux.net>
12857
12858 * guile-snarf.awk.in: Quote any `@'s that occur in Scheme names,
12859 by doubling them to `@@'.
12860
12861 2001-02-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12862
12863 * numbers.c (scm_lognot), random.c (scm_random,
12864 scm_random_normal, scm_random_solid_sphere_x,
12865 scm_random_hollow_sphere_x, scm_random_normal_vector_x,
12866 scm_random_exp), dynwind.c
12867 (scm_dynamic_wind): Removed unnecessary "" from docstrings.
12868
12869 * goops.c (scm_sys_initialize_object, scm_instance_p,
12870 scm_class_name, scm_class_precedence_list, scm_class_slots,
12871 scm_class_environment, scm_generic_function_name,
12872 scm_generic_function_methods, scm_method_generic_function,
12873 scm_method_specializers, scm_method_procedure, scm_make_unbound,
12874 scm_unbound_p, scm_assert_bound, scm_at_assert_bound_ref,
12875 scm_sys_fast_slot_ref, scm_sys_fast_slot_set_x, scm_slot_ref,
12876 scm_slot_set_x, _scm_slot_bound_p, scm_slots_exists_p,
12877 scm_sys_allocate_instance, scm_make, scm_pure_generic_p,
12878 scm_class_direct_supers, scm_class_direct_slots,
12879 scm_class_direct_subclasses, scm_class_direct_methods,
12880 scm_accessor_method_slot_definition, scm_sys_goops_loaded),
12881 debug.c (scm_with_traps, scm_memoized_p, scm_make_gloc,
12882 scm_gloc_p, scm_make_iloc, scm_iloc_p, scm_memcons,
12883 scm_mem_to_proc, scm_proc_to_mem, scm_unmemoize,
12884 scm_memoized_environment, scm_procedure_name,
12885 scm_procedure_source, scm_procedure_environment, scm_debug_hang),
12886 objects.c
12887 (scm_class_of, scm_entity_p, scm_operator_p,
12888 scm_set_object_procedure_x, scm_object_procedure,
12889 scm_make_class_object), hooks.c (scm_make_hook_with_name,
12890 scm_make_hook, scm_hook_p, scm_hook_empty_p, scm_add_hook_x,
12891 scm_remove_hook_x, scm_reset_hook_x, scm_run_hook,
12892 scm_hook_to_list), lang.c
12893 (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null, scm_nil_eq),
12894 numbers.c (scm_sys_expt, scm_sys_atan2), print.c
12895 (scm_print_options, scm_port_with_print_state,
12896 scm_get_print_state), procs.c (scm_make_cclo, scm_procedure_p,
12897 scm_closure_p, scm_thunk_p, scm_procedure_with_setter_p,
12898 scm_make_procedure_with_setter, scm_procedure), throw.c
12899 (scm_lazy_catch), modules.c (scm_standard_eval_closure), load.c
12900 (scm_parse_path, scm_search_path), stacks.c (scm_make_stack,
12901 scm_stack_ref, scm_stack_length, scm_frame_p,
12902 scm_last_stack_frame, scm_frame_number, scm_frame_source,
12903 scm_frame_procedure, scm_frame_arguments, scm_frame_previous,
12904 scm_frame_next, scm_frame_real_p, scm_frame_procedure_p,
12905 scm_frame_evaluating_args_p, scm_frame_overflow_p), filesys.c
12906 (scm_dirname, scm_basename), dynwind.c
12907 (scm_wind_chain), read.c (scm_read_options, scm_read,
12908 scm_read_hash_extend), gc.c
12909 (scm_unhash_name), eval.c (scm_eval_options_interface,
12910 scm_evaluator_traps, s_scm_nconc2last), backtrace.c
12911 (scm_display_error, scm_set_print_params_x,
12912 scm_display_application, scm_display_backtrace, scm_backtrace),
12913 async.c (scm_async, scm_system_async, scm_async_mark,
12914 scm_system_async_mark, scm_run_asyncs, scm_noop,
12915 scm_set_tick_rate, scm_set_switch_rate, scm_unmask_signals,
12916 scm_mask_signals): Added docstrings.
12917
12918 2001-02-15 Keisuke Nishida <kxn30@po.cwru.edu>
12919
12920 * dump.c (scm_undump): Use SCM_CARLOC/SCM_CDRLOC to obtain the
12921 address of car/cdr. (Thanks to Dirk Herrmann)
12922 Use scm_sizet to obtain the length of strings.
12923 (Thanks to Matthias Koeppe)
12924
12925 2001-02-15 Marius Vollmer <mvo@zagadka.ping.de>
12926
12927 * symbols.c (scm_mem2symbol): Put a empty statement after the
12928 next_symbol label. This is mandated by ANSI, appearantly.
12929
12930 2001-02-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
12931
12932 * gc_os_dep.c: Do not include <linux/version.h>. It makes no
12933 sense to compile for a specific kernel version. Do not include
12934 <asm/signal.h> while defining __KERNEL__. This hack should no
12935 longer be needed and caused problems.
12936
12937 2001-02-13 Marius Vollmer <mvo@zagadka.ping.de>
12938
12939 * eval.c (scm_ceval, scm_deval): use `SIDEVAL' instead of
12940 SCM_CEVAL when evaluating subforms of `begin' forms. SCM_CEVAL
12941 can not deal with immediates.
12942
12943 2001-02-12 Keisuke Nishida <kxn30@po.cwru.edu>
12944
12945 * list.c (scm_list_copy): Validate the first argument.
12946
12947 2001-02-11 Marius Vollmer <mvo@zagadka.ping.de>
12948
12949 Fix evaluator so that top-level expressions are correctly
12950 evaluated with respect to the module system.
12951
12952 * modules.h. modules.c (scm_current_module_lookup_closure): New
12953 function.
12954
12955 * eval.h (scm_primitive_eval, scm_primitive_eval_x): New
12956 prototypes.
12957 (scm_i_eval, scm_i_eval_x, scm_eval, scm_eval_x): Changed argument
12958 names to better reflect their meaning.
12959
12960 * eval.c (scm_ceval, scm_deval): Recognize when `begin' is being
12961 evaluated at top-level and synronize lookup closure before
12962 executing every subform.
12963 (scm_primitve_eval_x, scm_primitive_eval): New functions.
12964 (scm_eval_x, scm_eval): Reimplement in terms of
12965 scm_primitive_eval_x and scm_primitive_eval, respectively.
12966
12967 2001-02-09 Marius Vollmer <mvo@zagadka.ping.de>
12968
12969 * macros.c (scm_macro_name, scm_macro_transformer): Use
12970 SCM_SMOB_DATA instead of SCM_CDR. Provided by Martin Grabmueller.
12971 Thanks!
12972
12973 2001-02-10 Keisuke Nishida <kxn30@po.cwru.edu>
12974
12975 * dump.c (scm_store_bytes): Store data size before data.
12976 (scm_restore_bytes): Restore data size. Takes a pointer to size.
12977 * dump.h (scm_restore_bytes): Updated.
12978
12979 2001-02-09 Keisuke Nishida <kxn30@po.cwru.edu>
12980
12981 * dump.c: Use double cells for update schedule.
12982
12983 2001-02-08 Keisuke Nishida <kxn30@po.cwru.edu>
12984
12985 * ports.c (scm_unread_char): Take an optional argument.
12986
12987 2001-02-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
12988
12989 * modules.h (scm_selected_module, scm_current_module): Renamed
12990 scm_selected_module to scm_current_module to synchronize Scheme
12991 and C names.
12992 (scm_select_module, scm_set_current_module): Likewise. Changed
12993 all uses.
12994
12995 * ports.c (scm_port_for_each): Make a snapshot of the port table
12996 before iterating over it. The table might change while the user
12997 code is running. With the snapshot, the user can depend on the
12998 fact that each port that existed at the start of the iteration is
12999 encountered exactly once. (ice-9 popen) depends on this.
13000
13001 2001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
13002
13003 * strings.h (SCM_STRING_MAX_LENGTH): New macro.
13004
13005 * strings.c (scm_makstr, scm_take_str, scm_make_string): Added
13006 range checking for the size parameter. Thanks to Martin
13007 Grabmueller for the hint.
13008
13009 (scm_makstr): Reordered string initialization to make interrupt
13010 deferring unnecessary.
13011
13012 * vectors.c (scm_make_vector): Fixed range checking.
13013
13014 2001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
13015
13016 * vectors.h (SCM_VECTOR_MAX_LENGTH): New macro.
13017
13018 * vectors.c (scm_make_vector, scm_c_make_vector): Improved the
13019 checking of the size parameter for type correctness and valid
13020 range. Thanks to Rob Browning for reporting the problem. Instead
13021 of deferring interrupts, scm_remember_upto_here_1 is used.
13022
13023 2001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
13024
13025 * dump.c (scm_store_cell_object, scm_restore_cell_object): Removed.
13026 (scm_dump_cell_update): Removed.
13027 (scm_dump_update): Renamed from scm_dump_object_update.
13028 (scm_restore_string, scm_restore_bytes, scm_restore_word): Takes
13029 a pointer instead of returning a value.
13030 * keywords.c (keyword_undump): Updated.
13031
13032 2001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
13033
13034 * dump.c, dump.h: Modified a lot.
13035 (SCM_DUMP_COOKIE): Version 0.1
13036 (scm_dump_mark): Removed.
13037 (scm_restore_cell_object, scm_store_cell_object): New functions.
13038
13039 * smob.h (scm_smob_descriptor): Removed slots: dump_mark,
13040 dump_dealloc, dump_store, undump_alloc, undump_restore, undump_init.
13041 New slots: dump, undump.
13042 * smob.c (scm_make_smob_type, scm_set_smob_dump, scm_set_smob_undump):
13043 Updated.
13044
13045 * keywords.c (keyword_dump): Renamed from keyword_dealloc.
13046 (keyword_undump): Renamed from keyword_alloc.
13047 (scm_init_keywords): Set keyword_dump and keyword_undump.
13048
13049 2001-02-03 Michael Livshin <mlivshin@bigfoot.com>
13050
13051 * gc.c (DOUBLECELL_ALIGNED_P): new macro, a better-named analog of
13052 the deprecated SCM_DOUBLE_CELLP.
13053
13054 * tags.h (SCM_DOUBLE_CELLP): deprecated.
13055
13056 2001-02-02 Keisuke Nishida <kxn30@po.cwru.edu>
13057
13058 * dump.c, dump.h: New files.
13059 * Makefile.am: Added dump.c, dump.h, dump.x, dump.doc.
13060 * init.c: #include "libguile/dump.h".
13061 (scm_init_guile_1): Call scm_init_dump.
13062 * smob.h (scm_smob_descriptor): New slots: dump_mark,
13063 dump_dealloc, dump_store, undump_alloc, undump_restore,
13064 undump_init.
13065 * smob.c (scm_make_smob_type): Init the new slots.
13066 (scm_set_smob_dump, scm_set_smob_undump): New functions.
13067 * smob.h (scm_set_smob_dump, scm_set_smob_undump): Declared.
13068
13069 * keywords.c: #include "libguile/dump.h".
13070 (keyword_dealloc, keyword_alloc): New functions.
13071 (scm_init_keywords): Set smob_dump and smob_undump.
13072
13073 2001-02-01 Keisuke Nishida <kxn30@po.cwru.edu>
13074
13075 * vectors.c (scm_c_make_vector): New function.
13076 * vectors.h (scm_c_make_vector): Declared.
13077 * eval.c (scm_copy_tree), filesys.c (scm_stat2scm), fluids.c
13078 (scm_make_initial_fluids, grow_fluids), gc.c (scm_init_storage),
13079 gh_data.c (gh_ints2scm, gh_doubles2scm): goops.c
13080 (scm_make_method_cache, scm_i_vector2list,
13081 scm_compute_applicable_methods, scm_sys_method_more_specific_p),
13082 init.c (start_stack), net_db.c (scm_gethost, scm_getnet,
13083 scm_getproto, scm_return_entry), posix.c (scm_getgroups,
13084 scm_getpwuid, scm_getgrgid, scm_uname), print.c (make_print_state,
13085 grow_ref_stack), regex-posix.c (scm_regexp_exec), scmsigs.c
13086 (scm_init_scmsigs), socket.c (scm_addr_vector, scm_addr_vector),
13087 stime.c (scm_times, filltime), unif.c (scm_make_uve), vectors.c
13088 (scm_vector, scm_make_vector): Use scm_c_make_vector.
13089
13090 * hashtab.c (scm_c_make_hash_table): New function.
13091 * hashtab.h (scm_c_make_hash_table): Declared.
13092 * environments.c (scm_make_leaf_environment,
13093 scm_make_eval_environment), gc.c (scm_init_storage),
13094 keywords.c (scm_init_keywords), symbols.c (scm_builtin_bindings):
13095 Use scm_c_make_hash_table.
13096
13097 2001-01-31 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13098
13099 * unif.c (rapr1): Don't apply scm_uniform_vector_length on arrays.
13100
13101 2001-01-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13102
13103 * struct.c (scm_make_vtable_vtable): Removed unnecessary "" from
13104 end of docstring.
13105
13106 * struct.c (scm_struct_set_x, scm_struct_vtable_tag,
13107 scm_struct_vtable_name, scm_set_struct_vtable_name_x), weaks.c
13108 (scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table,
13109 scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
13110 srcprop.c (scm_source_properties, scm_set_source_properties_x,
13111 scm_source_property, scm_set_source_property_x), sort.c
13112 (scm_sort_list_x, scm_restricted_vector_sort_x, scm_sorted_p,
13113 scm_merge, scm_merge_x, scm_sort_x, scm_sort, scm_stable_sort_x,
13114 scm_stable_sort, scm_sort_list_x, scm_sort_list): Added
13115 docstrings.
13116
13117 2001-01-29 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13118
13119 * eval.c (SCM_APPLY): Check that primitives which take 1 arg
13120 really get that arg.
13121
13122 2001-01-26 Keisuke Nishida <kxn30@po.cwru.edu>
13123
13124 * goops.c (s_scm_get_keyword): Bug fix.
13125
13126 2001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
13127
13128 The following patch was sent by Martin Grabmueller. It makes sure
13129 that in case of parameter errors the correct function name is
13130 shown, and that parameter types are only checked once.
13131
13132 * strop.c (string_copy, string_upcase_x, string_downcase_x,
13133 string_capitalize_x): New functions. Each one performs the core
13134 functionality of the corresponding scm_* function.
13135
13136 (scm_string_copy, scm_string_upcase_x, scm_string_upcase,
13137 scm_string_downcase_x, scm_string_downcase,
13138 scm_string_capitalize_x, scm_string_capitalize): Reduced to
13139 parameter checking wrappers of the above functions.
13140
13141 2001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
13142
13143 * continuations.c, dynl.c, keywords.c, load.c: Include
13144 strings.h. Thanks to Bill Schottstaedt for the bug report.
13145
13146 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13147
13148 * backtrace.c (display_header): Make sure that line and column
13149 information is shown independent of whether the port the code was
13150 read from had an associated filename. Thanks to Martin
13151 Grabmueller for providing this patch.
13152
13153 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13154
13155 * fports.[ch] (scm_file_port_p): New primitive.
13156
13157 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13158
13159 * tags.h (scm_tc16_fport, scm_tc16_strport, scm_tc16_sfport):
13160 These are now defined in fports.c, strports.c and vports.c.
13161
13162 * fports.[ch] (scm_tc16_fport), strports.c (scm_tc16_strport),
13163 vports.c (scm_tc16_sfport): Made variables (were macros defined in
13164 tags.h).
13165
13166 fports.c (scm_make_fptob), strports.c (scm_make_stptob), vports.c
13167 (scm_make_sfptob): Made static. These return a type code now.
13168
13169 fports.c (scm_init_fports), strports.c (scm_init_strports),
13170 vports.c (scm_init_vports): Create the corresponding port types.
13171
13172 * fports.h (SCM_FPORTP, SCM_OPFPORTP, SCM_OPINFPORTP,
13173 SCM_OPOUTFPORTP): Redefined in terms of scm_tc16_fport.
13174
13175 * init.c (scm_init_guile_1): Make sure strports are initialized
13176 before gdbint.
13177
13178 * ports.[ch] (scm_make_port_type): Changed the return type to
13179 scm_bits_t.
13180
13181 * ports.c (scm_ports_prehistory): Don't create any port types
13182 here.
13183
13184 * posix.c (scm_ttyname): Use SCM_FPORTP instead of comparing
13185 against scm_tc16_fport directly.
13186
13187 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13188
13189 * srcprop.c (scm_set_source_property_x): Fix to handle
13190 (set-source-property! <obj> 'copy <datum>) correctly.
13191
13192 2001-01-24 Gary Houston <ghouston@arglist.com>
13193
13194 * filesys.c (scm_link): docstring fix.
13195 * fports.h (scm_setfileno): obsolete declaration removed.
13196 * posix.c: bogus popen declaration removed.
13197
13198 * rdelim.c: new file, split from ioext.c.
13199 * rdelim.h: new file, split from ioext.h
13200 * Makefile.am: add rdelim.c and related files.
13201 * init.c: call scm_init_rdelim. include rdelim.h.
13202
13203 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
13204
13205 This patch was sent by Martin Grabmueller and makes sure that
13206 parameter errors are reported correctly by the lexicographic
13207 ordering predicates.
13208
13209 * strorder.c (string_less_p, string_ci_less_p): New functions.
13210
13211 (scm_string_less_p, scm_string_ci_less_p): Extracted the core
13212 functionality into string_less_p, string_ci_less_p respectively.
13213 The remaining code is just a wrapper to do the parameter
13214 checking.
13215
13216 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p): Check the
13217 parameters and call string_less_p instead of scm_string_less_p.
13218
13219 (scm_string_ci_leq_p, scm_string_ci_gr_p, scm_string_ci_geq_p):
13220 Check the parameters and call string_less_ci_p instead of
13221 scm_string_ci_less_p.
13222
13223 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
13224
13225 This patch modifies scm_display_error to perform parameter
13226 checking. Thanks to Neil Jerram for the bug report.
13227
13228 * backtrace.[ch] (scm_i_display_error): New function.
13229
13230 * backtrace.c (scm_display_error): Added parameter check and
13231 extracted the core functionality into function
13232 scm_i_display_error.
13233
13234 * throw.c (handler_message): Call scm_i_display_error to display
13235 the error message.
13236
13237 2001-01-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13238
13239 * eval.c (SCM_APPLY): Added # args check for application of
13240 procedures with arity 3. (Thanks to Anders Holst.)
13241
13242 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
13243
13244 * filesys.h (SCM_DIR_FLAG_OPEN, SCM_DIR_OPEN_P): Added.
13245
13246 (SCM_OPDIRP): Deprecated.
13247
13248 * filesys.c (scm_opendir): Use SCM_DIR_FLAG_OPEN instead of
13249 SCM_OPN.
13250
13251 (scm_readdir, scm_rewinddir): Don't use SCM_VALIDATE_OPDIR.
13252 Instead, give an explicit error message in case the directory is
13253 closed.
13254
13255 (scm_closedir, scm_dir_print): Rewritten to use SCM_DIR_OPEN_P
13256 instead of SCM_OPENP and SCM_CLOSEDP.
13257
13258 * validate.h (SCM_VALIDATE_OPDIR): Deprecated.
13259
13260 2001-01-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
13261
13262 * eval.c (inner_eval, scm_eval): Move all real functionality into
13263 inner_eval. Avoid to copy the expression twice by inlining some
13264 code from scm_i_eval.
13265
13266 2001-01-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
13267
13268 * eval.c (scm_m_case): The 'else' clause of a 'case' statement
13269 now has to be the last clause, as required by R5RS. Thanks to
13270 Martin Grabmueller for the patch.
13271
13272 2001-01-18 Gary Houston <ghouston@arglist.com>
13273
13274 * ioext.c: further simplify scm_read_string_x_partial by defining
13275 a macro SCM_EBLOCK.
13276
13277 2001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
13278
13279 * gh_data.c (gh_ints2scm): Simplified using SCM_FIXABLE.
13280
13281 2001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
13282
13283 * __scm.h: Added comment about architecture and compiler
13284 properties that are required by guile.
13285
13286 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
13287 SCM_MOST_NEGATIVE_FIXNUM): Moved to numbers.h.
13288
13289 (SCM_CHAR_BIT, SCM_LONG_BIT): Moved here from numbers.h.
13290
13291 * numbers.h (SCM_CHAR_BIT, SCM_LONG_BIT): Moved to __scm.h.
13292
13293 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
13294 SCM_MOST_NEGATIVE_FIXNUM): Moved here from __scm.h.
13295
13296 2001-01-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13297
13298 * __scm.h (SCM_FIXNUM_BIT): Added. The name is chosen in analogy
13299 to the names in limits.h.
13300
13301 * numbers.c (abs_most_negative_fixnum): Added.
13302
13303 (scm_quotient, scm_remainder): Fixed the fixnum-min / (abs
13304 fixnum-min) special case.
13305
13306 (scm_big_and): Fix for negative first parameter.
13307
13308 (scm_bit_extract): Fix for fixnum paramters.
13309 Thanks to Rob Browning for the bug report.
13310
13311 (scm_init_numbers): Initialize abs_most_negative_fixnum.
13312
13313 2001-01-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
13314
13315 * symbols.c (scm_symbol_bound_p): Fixed comment.
13316 Thanks to Chris Cramer.
13317
13318 2001-01-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
13319
13320 * smob.[ch] (scm_make_smob_type): Return type is scm_bits_t now.
13321 Thanks to Bill Schottstaedt.
13322
13323 2001-01-11 Michael Livshin <mlivshin@bigfoot.com>
13324
13325 from Matthias Köppe:
13326
13327 * objects.h (SCM_SET_ENTITY_SETTER): new macro. SCM_ENTITY_SETTER
13328 casts its result, so doesn't yield an lvalue per ANSI C.
13329
13330 * goops.c (s_scm_sys_set_object_setter_x): use
13331 SCM_SET_ENTITY_SETTER.
13332 (clear_method_cache): use SCM_SET_ENTITY_PROCEDURE.
13333
13334 * gc.h (SCM_GC_SET_CARD_BVEC): new macro. SCM_GC_CARD_BVEC casts
13335 its result, so doesn't yield an lvalue per ANSI C.
13336 (SCM_GC_SET_CARD_FLAGS): ditto for SCM_GC_GET_CARD_FLAGS.
13337 (SCM_GC_CLR_CARD_FLAGS): redefined in terms of
13338 SCM_GC_SET_CARD_FLAGS.
13339 (SCM_GC_SET_CARD_FLAG, SCM_GC_CLR_CARD_FLAGS): ditto.
13340
13341 * gc.c (INIT_CARD): use the explicit setter macro to set the bvec.
13342
13343 2001-01-08 Gary Houston <ghouston@arglist.com>
13344
13345 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): new macro.
13346 * ioext.c (scm_read_string_x_partial, scm_read_delimited_x),
13347 socket.c (scm_recvfrom): use the new macro, plus minor docstring
13348 changes.
13349 * ioext.c (scm_read_string_x_partial): don't crash if -1 is supplied
13350 for fdes. if current input port is used, check that it's a file
13351 port.
13352
13353 2001-01-06 Gary Houston <ghouston@arglist.com>
13354
13355 * ioext.c (scm_read_string_x_partial): new procedure, implements
13356 read-string!/partial.
13357 * ports.c (scm_take_from_input_buffers): new procedure used by
13358 scm_read_string_x_partial.
13359 (scm_drain_input): use scm_take_from_input_buffers.
13360
13361 2001-01-06 Marius Vollmer <mvo@zagadka.ping.de>
13362
13363 * validate.h (SCM_VALIDATE_NUMBER): New.
13364
13365 2001-01-03 Michael Livshin <mlivshin@bigfoot.com>
13366
13367 * guardians.c (F_GREEDY, F_LISTED, F_DESTROYED, GREEDY_P,
13368 SET_GREEDY, LISTED_P, SET_LISTED, CLR_LISTED, DESTROYED_P,
13369 SET_DESTROYED): new defines/macros.
13370 (GUARDIAN_LIVE, GUARDIAN_ZOMBIES, GUARDIAN_NEXT): deleted.
13371 (add_to_live_list): takes a `guardian_t *' now, not SCM.
13372 (guardian_print): print more info.
13373 (guardian_apply): check if the guardian is destroyed, and throw an
13374 error if so. take one more optional argument `throw_p'.
13375 (scm_guard): depending on the value of `throw_p', return a boolean
13376 result.
13377 (scm_get_one_zombie): remove redundant property test.
13378 (guardian_t): represent the various (currently 3, I hope nothing
13379 more gets added) boolean fields as bit flags.
13380 (scm_guardian_destroyed_p, scm_guardian_greedy_p): new predicates.
13381 (scm_destroy_guardian_x): new procedure.
13382
13383 * guardians.h: added prototypes for `scm_guardian_greedy_p' and
13384 `scm_guardian_destroyed_p'. changed prototype for `scm_guard'.
13385
13386 2001-01-01 Gary Houston <ghouston@arglist.com>
13387
13388 * fports.c (fport_write): bugfix: handle short writes for
13389 unbuffered ports too. optimize the buffered case by minimizing
13390 the number of write/flush calls.
13391 (write_all): new helper procedure.
13392
13393 The ChangeLog continues in the file: "ChangeLog-2000"