* configure.in: New check for uca lib (needed for IA64 on HP-UX).
[bpt/guile.git] / libguile / ChangeLog
1 2006-10-25 Neil Jerram <neil@ossau.uklinux.net>
2
3 IA64 HP-UX GC patch from Hrvoje Nikšić. (Thanks!)
4
5 * threads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp() and
6 scm_ia64_register_backing_store_base() instead of Linux-specific
7 implementations.
8
9 * gc.h (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp):
10 New declarations.
11
12 * gc.c (__libc_ia64_register_backing_store_base): Declaration
13 removed.
14 (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp): New, with
15 implementations for Linux and HP-UX.
16
17 * coop-pthreads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp()
18 and scm_ia64_register_backing_store_base() instead of
19 Linux-specific implementations.
20
21 * continuations.h (__libc_ia64_register_backing_store_base):
22 Declaration removed.
23 (scm_t_contregs): New "fresh" field.
24
25 * continuations.c (ia64_getcontext): Removed.
26 (scm_make_continuation): Use continuation fresh field instead of
27 interpreting getcontext return values (which isn't portable). Use
28 scm_ia64_ar_bsp() and scm_ia64_register_backing_store_base()
29 instead of Linux-specific implementations.
30 (copy_stack_and_call): Use scm_ia64_register_backing_store_base()
31 instead of Linux-specific implementation.
32
33 * _scm.h (__ia64__): Also detect __ia64.
34
35 2006-10-03 Kevin Ryde <user42@zip.com.au>
36
37 * eval.c (SCM_APPLY): For scm_tc7_subr_2o, throw wrong-num-args on 0
38 arguments or 3 or more arguments. Previously 0 called proc with
39 SCM_UNDEFINED, and 3 or more silently used just the first 2.
40
41 2006-09-28 Kevin Ryde <user42@zip.com.au>
42
43 * fports.c, ports.c (ftruncate): Use "HAVE_CHSIZE && ! HAVE_FTRUNCATE"
44 for chsize fallback, instead of hard-coding mingw. Mingw in fact
45 supplies ftruncate itself these days.
46
47 * ports.c (fcntl.h): Can include this unconditionally, no need for
48 __MINGW32__.
49
50 * ports.c (truncate): Conditionalize on "HAVE_FTRUNCATE && !
51 HAVE_TRUNCATE" so as not to hard-code mingw. Use "const char *" and
52 "off_t" for parameters, per usual definition of this function, rather
53 than "char *" and "int". Use ftruncate instead of chsize. Check for
54 error on final close.
55
56 2006-09-27 Kevin Ryde <user42@zip.com.au>
57
58 * numbers.c (scm_log10): Check HAVE_CLOG10, clog10() is not available
59 in mingw.
60
61 * posix.c (scm_execl, scm_execlp, scm_execle): Cast "const char *
62 const *" for mingw to suppress warnings from gcc (which are errors
63 under the configure default -Werror). Reported by Nils Durner.
64
65 2006-09-26 Kevin Ryde <user42@zip.com.au>
66
67 * _scm.h (scm_to_off64_t, scm_from_off64_t): New macros.
68 * fports.c (scm_open_file): Use open_or_open64.
69 (fport_seek_or_seek64): New function, adapting fport_seek.
70 * fports.c, fports.h (scm_i_fport_seek, scm_i_fport_truncate): New
71 functions.
72 * ports.c (scm_seek, scm_truncate_file): Use scm_i_fport_seek and
73 scm_i_fport_truncate to allow 64-bit seeks and truncates on fports.
74
75 * ports.c (scm_truncate_file): Update docstring per manual.
76
77 2006-09-23 Kevin Ryde <user42@zip.com.au>
78
79 * numbers.c, numbers.h (scm_log, scm_log10, scm_exp, scm_sqrt): New
80 functions.
81
82 2006-09-20 Ludovic Courtès <ludovic.courtes@laas.fr>
83
84 * srfi-14.c: Include <config.h>. Define `_GNU_SOURCE'.
85 (make_predset, define_predset, make_strset, define_strset, false,
86 true): Removed.
87 (SCM_CHARSET_UNSET, CSET_BLANK_PRED, CSET_SYMBOL_PRED,
88 CSET_PUNCT_PRED, CSET_LOWER_PRED, CSET_UPPER_PRED,
89 CSET_LETTER_PRED, CSET_DIGIT_PRED, CSET_WHITESPACE_PRED,
90 CSET_CONTROL_PRED, CSET_HEX_DIGIT_PRED, CSET_ASCII_PRED,
91 CSET_LETTER_AND_DIGIT_PRED, CSET_GRAPHIC_PRED, CSET_PRINTING_PRED,
92 CSET_TRUE_PRED, CSET_FALSE_PRED, UPDATE_CSET): New macros.
93 (define_charset, scm_srfi_14_compute_char_sets): New functions.
94 (scm_init_srfi_14): Use `define_charset ()' instead of
95 `define_predset ()' and `define_strset ()'.
96
97 * srfi-14.h (scm_c_init_srfi_14): Removed.
98 (scm_srfi_14_compute_char_sets): New declaration.
99
100 * posix.h: Include "srfi-14.h".
101 (scm_setlocale): Invoke `scm_srfi_14_compute_char_sets ()' after a
102 successful `setlocale ()' call.
103
104 2006-09-08 Kevin Ryde <user42@zip.com.au>
105
106 * socket.c (scm_init_socket): Add MSG_DONTWAIT.
107 (scm_recvfrom): Update docstring from manual.
108
109 2006-08-31 Rob Browning <rlb@defaultvalue.org>
110
111 * ports.c (scm_c_port_for_each): Add a
112 scm_remember_upto_here_1(ports) at the end of the function to fix
113 a GC bug.
114
115 2006-08-28 Neil Jerram <neil@ossau.uklinux.net>
116
117 * backtrace.c (scm_display_backtrace_with_highlights): Minor
118 improvements to docstring.
119 (scm_backtrace_with_highlights): Analogous improvements.
120
121 2006-08-12 Kevin Ryde <user42@zip.com.au>
122
123 * gen-scmconfig.h.in (SCM_I_GSC_NEED_BRACES_ON_PTHREAD_ONCE_INIT):
124 New, set from configure.
125 * gen-scmconfig.c (SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT): New output
126 to scmconfig.h.
127 * pthread-threads.h (SCM_I_PTHREAD_ONCE_INIT): Use
128 SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT to cope with Solaris.
129 Reported by Claes Wallin.
130
131 2006-08-11 Neil Jerram <neil@ossau.uklinux.net>
132
133 * stacks.c (scm_last_stack_frame): Correct docstring (returns a
134 frame, not a stack).
135
136 2006-07-25 Kevin Ryde <user42@zip.com.au>
137
138 * threads.c (get_thread_stack_base): Restrict HAVE_PTHREAD_GETATTR_NP
139 on pthreads version, since pthread_getattr_np not available on solaris
140 and macos. Reported by Claes Wallin.
141
142 2006-07-24 Kevin Ryde <user42@zip.com.au>
143
144 * filesys.c (dirfd): Test with #ifndef rather than HAVE_DIRFD, since
145 it's a macro on MacOS X. Reported by Claes Wallin.
146
147 * posix.c (sethostname): Give prototype if not HAVE_DECL_SETHOSTNAME,
148 for the benefit of Solaris 10. Reported by Claes Wallin.
149
150 * socket.c (scm_htonl, scm_ntohl): Use scm_to_uint32 rather than
151 NUM2ULONG, to enforce 32-bit range check on systems with 64-bit long.
152
153 2006-07-21 Kevin Ryde <user42@zip.com.au>
154
155 * eval.c, filesys.c (alloca): Update <alloca.h> etc blob, per current
156 autoconf recommendation. Should fix Solaris 10 reported by Claes
157 Wallin.
158
159 * threads.c: Include <string.h>, needed for memset() which is used by
160 FD_ZERO() on Solaris 10. Reported by Claes Wallin.
161
162 2006-07-18 Rob Browning <rlb@defaultvalue.org>
163
164 * continuations.c: Add __attribute__ ((returns_twice)) to the
165 ia64_getcontext prototype so that gcc will make the right
166 arrangements and avoid an illegal instruction during
167 call-with-current-continuation.
168
169 2006-07-12 Ludovic Courtès <ludovic.courtes@laas.fr>
170
171 * numbers.c (guile_ieee_init): Use regular ANSI C casts rather
172 than C++-style `X_CAST ()'. Patch posted by by Mike Gran.
173
174 2006-07-08 Kevin Ryde <user42@zip.com.au>
175
176 * environments.c (core_environments_unobserve): Use if/else rather
177 than ?: for "SET" bits, avoiding complaints from AIX xlc compiler
178 about them not being rvalues. Reported by Mike Gran.
179
180 * Makefile.am (version.h): Don't use $< in an explicit rule, it's not
181 portable and in particular fails on OpenBSD and AIX (see autoconf
182 manual too). Reported by Mike Gran.
183
184 2006-06-25 Kevin Ryde <user42@zip.com.au>
185
186 * stime.c (bdtime2c): tm_gmtoff is seconds East, so take negative of
187 tm:gmtoff which is seconds West. Reported by Aaron VanDevender.
188 (bdtime2c): Test HAVE_STRUCT_TM_TM_GMTOFF for tm_gmtoff, rather than
189 HAVE_TM_ZONE.
190 (scm_strptime): Use tm_gmtoff from the strptime result when that field
191 exists, it's set by glibc strptime "%s".
192
193 2006-06-13 Ludovic Courtès <ludovic.courtes@laas.fr>
194
195 * eq.c: Include "struct.h", "goops.h" and "objects.h".
196 (scm_equal_p): Invoke `scm_i_struct_equalp ()' on structures that
197 are not GOOPS instances.
198 * struct.c: Include "eq.h".
199 (scm_free_structs): Use `SCM_STRUCT_VTABLE_DATA ()' instead of
200 hand-written code.
201 (scm_i_struct_equalp): New.
202 * struct.h (scm_i_struct_equalp): New declaration.
203
204 2006-06-06 Kevin Ryde <user42@zip.com.au>
205
206 * Makefile.am (BUILT_SOURCES): Remove guile.texi, only used by
207 maintainers (with doc/maint/docstring.el). Fixes parallel "make -j2"
208 reported by Mattias Holm.
209
210 2006-06-03 Kevin Ryde <user42@zip.com.au>
211
212 * read.c (s_vector): Conditionalize on SCM_ENABLE_ELISP, to avoid
213 unused variable warning when elisp disabled. Reported by Ryan
214 VanderBijl.
215
216 * throw.c (scm_handle_by_message): Add dummy return value to avoid
217 compiler warning on cygwin. Reported by Ryan VanderBijl.
218
219 * Makefile.am (EXTRA_DOT_X_FILES): Typo in dependency rule, was a
220 duplicate of EXTRA_DOT_DOC_FILES.
221 (DOT_X_FILES, EXTRA_DOT_X_FILES, DOT_DOC_FILES, EXTRA_DOT_DOC_FILES):
222 Add scmconfig.h to dependencies, since these all run cpp. Helps a
223 parallel "make -j2". Reported by Mattias Holm.
224
225 2006-05-30 Kevin Ryde <user42@zip.com.au>
226
227 * ports.c, ports.h (scm_set_port_mark, scm_set_port_free,
228 scm_set_port_print, scm_set_port_equalp, scm_set_port_flush,
229 scm_set_port_end_input, scm_set_port_close, scm_set_port_seek,
230 scm_set_port_truncate, scm_set_port_input_waiting): Use scm_t_bits for
231 port type descriptor, same as scm_make_port_type return value.
232
233 2006-05-30 Marius Vollmer <mvo@zagadka.de>
234
235 * eq.c (scm_equal_p): Use scm_array_equal_p explicitely when one
236 of the arguments is a array. This allows vectors to be equal to
237 one-dimensional arrays.
238
239 2006-05-29 Marius Vollmer <mvo@zagadka.de>
240
241 * throw.c (scm_ithrow): When looking for the jmpbuf, first test
242 that we have a pair before accessing its cdr. Thanks to Bill
243 Schottstaedt!
244
245 2006-05-28 Kevin Ryde <user42@zip.com.au>
246
247 * eval.c, filesys.c: Add malloc.h to get alloca() on mingw. Reported
248 by "The Senator".
249
250 2006-05-27 Marius Vollmer <mvo@zagadka.de>
251
252 * srfi-4.c, strings.c: Replace SCM_C_INLINE with
253 SCM_C_INLINE_KEYWORD. Thanks to Mark Gran!
254
255 2006-05-26 Kevin Ryde <user42@zip.com.au>
256
257 * fports.c (fport_input_waiting): For ioctl, check HAVE_IOCTL as well
258 as defined(FIONREAD), since mingw has FIONREAD but not ioctl().
259 Reported by "The Senator".
260 For select and ioctl, move fdes into those conditionals, to avoid
261 unused variable warning when neither of those used.
262
263 2006-05-23 Kevin Ryde <user42@zip.com.au>
264
265 * fports.c: Remove "fwrite" declaration under "! HAVE_UNISTD_H".
266 It's unused and will be in stdio.h anyway (if it's anywhere).
267
268 2006-05-20 Kevin Ryde <user42@zip.com.au>
269
270 * filesys.c (scm_stat2scm): Test #ifdef S_ISLNK directly, rather than
271 HAVE_S_ISLNK from configure (it was only a #ifdef test anyway).
272
273 * posix.c (scm_mknod): Test #ifdef S_IFLNK before using that (for
274 symlink). Probably can't create symlinks with mknod anyway though.
275
276 * inline.h (scm_is_pair): Add a workaround for i386 gcc 2.95 bad code
277 generation.
278
279 2006-05-15 Kevin Ryde <user42@zip.com.au>
280
281 * simpos.c, simpos.h (scm_primitive__exit): New function.
282 (scm_primitive_exit): Update docstring, no longer the best exit after
283 a fork.
284
285 2006-05-09 Kevin Ryde <user42@zip.com.au>
286
287 * numbers.c (scm_i_divide): For big/big wanting inexact, use mpq_get_d
288 rather than converting to doubles, to avoid inf or nan when the inputs
289 are too big for a double but the quotient does fit. This affects
290 conversions exact->inexact of big fractions.
291
292 * filesys.c (scm_open_fdes): Use open64.
293 (scm_init_filesys): Add O_LARGEFILE.
294
295 * ports.c (scm_seek): Use lseek64.
296 (scm_truncate_file): Use ftruncate64.
297
298 2006-05-08 Marius Vollmer <mvo@zagadka.de>
299
300 * private-gc.h (CELL_P): Also check that the potential pointer is
301 correctly aligned for a cell. Thanks to Miroslav Lichvar!
302
303 2006-04-18 Rob Browning <rlb@defaultvalue.org>
304
305 * _scm.h: Add back error if the size of off_t is unknown. The bug
306 was actually in guile-readline's configuration.
307
308 2006-04-18 Kevin Ryde <user42@zip.com.au>
309
310 * posix.c (scm_mkstemp): Update docstring from the manual, in
311 particular file mode 0600 is not guaranteed.
312
313 2006-04-17 Kevin Ryde <user42@zip.com.au>
314
315 * _scm.h (scm_to_off_t, scm_from_off_t): No error if unknown off_t
316 size, to help the guile-readline build where off_t is unused.
317
318 2006-04-16 Kevin Ryde <user42@zip.com.au>
319
320 * filesys.c (scm_stat2scm, scm_stat, scm_lstat): Use stat or stat64.
321 (scm_readdir): Use readdir64.
322 (scm_copy_file): Use open64 and fstat64, to cope with >2Gb files.
323 * ports.c (scm_truncate_file): Use truncate64. Correction truncate
324 and ftruncate take off_t not size_t.
325 * _scm.h (stat_or_stat64 etc): Macros for selecting LFS64 when
326 available.
327
328 2006-04-06 Kevin Ryde <user42@zip.com.au>
329
330 * fports.c (scm_setvbuf): Fix for not _IOLBF, clear SCM_BUFLINE
331 instead of toggling it. Reported by Ludovic Courtès.
332
333 2006-03-26 Marius Vollmer <mvo@zagadka.de>
334
335 * threads.c (get_thread_stack_base): Use scm_get_stack_base
336 instead of accessing __libc_stack_end directly, and only do this
337 when pthread_attr_getstack is known not to work for the main
338 thread or when not using pthreads at all.
339
340 * gc_os_dep.c (scm_get_stack_base): Abort when the machine type is
341 unknown instead of returning NULL.
342
343 2006-03-21 Ludovic Courtès <ludovic.courtes@laas.fr>
344
345 * numbers.c (scm_i_mem2number): Renamed to
346 scm_c_locale_stringn_to_number.
347 * numbers.c, print.c, read.c: Updated callers.
348 * numbers.h: Update function declaration.
349
350 2006-03-11 Neil Jerram <neil@ossau.uklinux.net>
351
352 * unif.c (string_set): Don't return in a void function. (Reported
353 by Mike Gran.)
354
355 * srfi-4.c (scm_uniform_vector_read_x): Declare base as char*
356 rather than void*, so we can do pointer arithmetic on it.
357 (Reported by Mike Gran.)
358 (s_scm_uniform_vector_write): Ditto.
359
360 2006-03-10 Neil Jerram <neil@ossau.uklinux.net>
361
362 * unif.c (scm_make_shared_array): Don't use SCM_I_ARRAY_BASE when
363 oldra is not an array. (Reported by Steve Juranich.)
364
365 * threads.c (do_unlock): Renamed from "unlock", which is defined
366 in unistd.h on QNX. (Reported by Matt Kraai.)
367
368 2006-03-04 Kevin Ryde <user42@zip.com.au>
369
370 * deprecated.c (scm_i_defer_ints_etc): Show SCM_DEFER_INTS in message,
371 not SCM_CRITICAL_SECTION_START.
372
373 * eval.c, posix.c: Change comments from C++ to C style. Reported by
374 Mike Gran.
375
376 2006-02-28 Kevin Ryde <user42@zip.com.au>
377
378 * unif.c (bitvector_set): Use h->writable_elements not h->elements.
379
380 2006-02-26 Kevin Ryde <user42@zip.com.au>
381
382 * filesys.c (scm_readdir): Use fpathconf for the dirent size when
383 NAME_MAX is not available, which is so on Solaris 10. Report and help
384 by Bill Schottstaedt.
385
386 * srfi-13.c (MY_VALIDATE_SUBSTRING_SPEC_UCOPY): New macro.
387 (scm_string_compare, scm_string_compare_ci, scm_string_lt,
388 scm_string_gt, scm_string_le, scm_string_ge, scm_string_ci_lt,
389 scm_string_ci_gt, scm_string_ci_le, scm_string_ci_ge): In comparisons
390 use "unsigned char", not signed char. This ensures comparisons are
391 the same as `char<?' etc, and is also the same as guile 1.6 did.
392 Reported by Sven Hartrumpf.
393
394 2006-02-19 Mikael Djurfeldt <mdj@neurologic.cc>
395
396 * random.c: Test for SCM_HAVE_T_UINT64 instead of
397 SCM_HAVE_T_INT64.
398 (scm_i_uniform32, scm_i_uniform32, scm_i_init_rstate): Use
399 scm_t_uint64 and scm_t_uint32 instead of scm_t_int64 and
400 scm_t_int32.
401
402 2006-01-04 Ludovic Court<E8>s <ludovic.courtes@laas.fr>
403
404 * gc-segment.c (scm_i_sweep_some_cards): Take a SWEEP_STATS
405 argument. Don't refer to SCM_GC_CELLS_COLLECTED and
406 SCM_CELLS_ALLOCATED. If SEG->FIRST_TIME, let CELLS_COLLECTED as zero.
407 Take into account SEG->SPAN when computing CELLS_SWEPT.
408 (scm_i_sweep_segment): Take one more argument, similarly.
409 (scm_i_sweep_all_segments): Likewise.
410 (scm_i_sweep_some_segments): Likewise.
411 (scm_i_adjust_min_yield): Change the way MIN_CELLS is computed: do not
412 refer to SCM_GC_CELLS_COLLECTED.
413
414 * gc-freelist.c (scm_i_adjust_min_yield): Take one more
415 argument, an `scm_i_sweep_statistics' object.
416 Change the way DELTA is collected: don't take into account
417 SCM_GC_CELLS_COLLECTED_1, only SWEEP_STATS.COLLECTED.
418
419 * gc-malloc.c (scm_realloc): Pass an extra argument
420 to `scm_i_sweep_all_segments ()'.
421
422 * gc.c (gc_start_stats): Updated accordingly.
423 (gc_end_stats): Take an additional SWEEP_STATS argument.
424 Decrement SCM_CELLS_ALLOCATED after calls to `scm_i_sweep_* ()'.
425 (scm_gc_for_newcell): Updated callers of `scm_i_sweep_*'.
426 Decrement SCM_CELLS_ALLOCATED.
427 (scm_i_gc): Likewise.
428
429 * private-gc.h (scm_i_sweep_*): Updated function
430 prototypes accordingly.
431 (scm_t_sweep_statistics): New type.
432 (scm_i_sweep_statistics_init): New macro.
433 (scm_i_sweep_statistics_sum): New macro
434
435 2006-02-14 Ludovic Courtès <ludovic.courtes@laas.fr>
436
437 * strings.c (scm_i_take_stringbufn): Register LEN+1 bytes instead of
438 LEN. Without this, too much collectable memory gets unregistered,
439 which results in an underflow of SCM_MALLOCATED in
440 `decrease_mtrigger()'.
441
442 * gc-malloc.c (decrease_mtrigger): Make sure SIZE is lower than or
443 equal to SCM_MALLOCATED.
444
445 2006-02-13 Marius Vollmer <mvo@zagadka.de>
446
447 * eval.c (scm_eval_body): Use scm_i_dynwind_pthread_mutex_lock
448 oinstead of scm_dynwind_pthread_mutex_lock so that it works when
449 configured --without-threads.
450 (SCM_APPLY, CEVAL): Likewise. Thanks to Han-Wen Nienhuys!
451
452 2006-02-12 Marius Vollmer <mvo@zagadka.de>
453
454 * unif.c (scm_dimensions_to_uniform_array): Use the prototype for
455 filling when the fill parameter is omitted, as documented, but
456 turn #\nul into 0 since s8 arrays (signified by a #\nul prototype)
457 can not store characters.
458
459 2006-02-09 Neil Jerram <neil@ossau.uklinux.net>
460
461 * socket.c (scm_c_make_socket_address): Pass address_size pointer
462 on to scm_fill_sockaddr call.
463
464 2006-02-04 Neil Jerram <neil@ossau.uklinux.net>
465
466 * throw.h (scm_c_catch, scm_c_with_throw_handler,
467 scm_catch_with_pre_unwind_handler, scm_with_throw_handler): New.
468
469 * throw.c (SCM_JBPREUNWIND, SCM_SETJBPREUNWIND): New.
470 (struct pre_unwind_data): New, replaces struct lazy_catch.
471 (scm_c_catch): New, replaces scm_internal_catch as the primary
472 catch API for C code; adds pre-unwind handler support.
473 (scm_internal_catch): Now just a wrapper for scm_c_catch, for back
474 compatibility.
475 (tc16_pre_unwind_data, pre_unwind_data_print,
476 make_pre_unwind_data, SCM_PRE_UNWIND_DATA_P): Renamed from
477 "lazy_catch" equivalents.
478 (scm_c_with_throw_handler): New, replaces scm_internal_lazy_catch
479 as the primary C API for a "lazy" catch.
480 (scm_internal_lazy_catch): Now just a wrapper for
481 scm_c_with_throw_handler, for back compatibility.
482 (scm_catch_with_pre_unwind_handler): Renamed from scm_catch; adds
483 pre-unwind handler support.
484 (scm_catch): Now just a wrapper for
485 scm_catch_with_pre_unwind_handler, for back compatibility.
486 (scm_with_throw_handler): New.
487 (scm_lazy_catch): Update comment to say that the handler can
488 return, and what happens if it does.
489 (toggle_pre_unwind_running): New.
490 (scm_ithrow): When identifying the throw target, take running
491 flags into account. In general, change naming of things from
492 "lazy_catch" to "pre_unwind". When throwing to a throw handler,
493 don't unwind the dynamic context first. Add dynwind framing to
494 manage the running flag of a throw handler. If a lazy catch or
495 throw handler returns, rethrow the same exception again. Add
496 pre-unwind support to the normal catch case (SCM_JMPBUFP).
497
498 * root.c (scm_internal_cwdr): Add NULL args to
499 scm_i_with_continuation_barrier call.
500
501 * dynwind.c: Change comment mentioning lazy-catch to mention
502 pre-unwind data and throw handler also.
503
504 * continuations.h (scm_i_with_continuation_barrier): Add
505 pre-unwind handler args.
506
507 * continuations.c (scm_i_with_continuation_barrier): Add
508 pre-unwind handler args, and pass on to scm_c_catch (changed from
509 scm_internal_catch).
510 (c_handler): Remove scm_handle_by_message_noexit call.
511 (scm_c_with_continuation_barrier): Call
512 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
513 as the pre-unwind handler.
514 (scm_handler): Remove scm_handle_by_message_noexit call.
515 (s_scm_with_continuation_barrier): Call
516 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
517 as the pre-unwind handler.
518
519 2006-02-04 Kevin Ryde <user42@zip.com.au>
520
521 * gc-mark.c (scm_mark_all): Fix c99-isms "loops" and "again" variables.
522
523 2006-02-03 Kevin Ryde <user42@zip.com.au>
524
525 * list.c, list.h (scm_list): Restore this function for use from C.
526 It's a complete no-op but in theory might used by someone.
527
528 2006-01-30 Marius Vollmer <mvo@zagadka.de>
529
530 * eval.c (scm_eval_body): Lock source_mutex with a dynwind context
531 so that it gets unlocked in all cases.
532 (SCM_APPLY, CEVAL): Likewise.
533
534 2006-01-29 Marius Vollmer <mvo@zagadka.de>
535
536 * ramap.c: (scm_array_map_x): Don't use scm_array_p, use
537 scm_is_typed_array instead.
538
539 Renamed the "frames" that are related to dynamic-wind to "dynamic
540 contexts. Renamed all functions from scm_frame_ to scm_dynwind_.
541 Updated documentation.
542
543 Disabled "futures":
544
545 * futures.h, futures.c: Wrap whole contents in "#if 0"/"#endif".
546 * eval.c, init.c: Comment out all 'future' related things.
547
548 2006-01-28 Marius Vollmer <mvo@zagadka.de>
549
550 * inline.h, pairs.c (scm_is_pair): Moved scm_is_pair from pairs.c
551 to inline.h to make it inline.
552
553 2005-12-19 Ludovic Courtès <ludovic.courtes@laas.fr>
554
555 * strings.c (scm_i_take_stringbufn): New.
556 (scm_i_c_take_symbol): New.
557 (scm_take_locale_stringn): Use `scm_i_take_stringbufn ()'.
558
559 * strings.h (scm_i_c_take_symbol): New.
560 (scm_i_take_stringbufn): New.
561
562 * symbols.c (lookup_interned_symbol): New function.
563 (scm_i_c_mem2symbol): New function.
564 (scm_i_mem2symbol): Use `lookup_symbol ()'.
565 (scm_from_locale_symbol): Use `scm_i_c_mem2symbol ()'. This avoids
566 creating a new Scheme string.
567 (scm_from_locale_symboln): Likewise.
568 (scm_take_locale_symbol): New.
569 (scm_take_locale_symboln): New.
570
571 * symbols.h (scm_take_locale_symbol): New.
572 (scm_take_locale_symboln): New.
573
574 2006-01-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
575
576 * gc-card.c ("sweep_card"): don't count scm_tc_free_cell for
577 free_count.
578
579 2005-11-29 Han-Wen Nienhuys <hanwen@xs4all.nl>
580
581 * regex-posix.c (s_scm_regexp_exec): list the offending pattern
582 upon error
583
584 2005-12-29 Neil Jerram <neil@ossau.uklinux.net>
585
586 * fluids.c (next_fluid_num): [From Ludovic Courtès:] Don't trigger
587 the GC when allocated_fluids_len is zero.
588
589 2005-12-14 Neil Jerram <neil@ossau.uklinux.net>
590
591 * load.c (the_reader, the_reader_fluid_num): New.
592 (scm_primitive_load): Support custom reader.
593 (scm_init_load): Init the_reader and the_reader_fluid_num; export
594 the_reader as `current-reader'.
595
596 * scmsigs.c (do_read_without_guile): Use the "raw_data" passed in
597 (rather than an uninitialized pointer on the stack).
598
599 2005-12-07 Marius Vollmer <mvo@zagadka.de>
600
601 Reported by Bruce Korb:
602
603 * init.c (invoke_main_func): Don't call exit here. Throws that
604 are only caught by scm_with_guile will bypass us and would cause
605 scm_boot_guile to return erroneously.
606 (scm_boot_guile): Expect scm_with_guile to return and call exit
607 here, passing it an appropriate exit code.
608
609 From Andy Wingo:
610
611 * script.c (scm_find_executable): Compile fix -- fgetc returns an
612 unsigned char cast to an int, or -1 for EOS.
613
614 2005-12-06 Marius Vollmer <mvo@zagadka.de>
615
616 * srfi-4.h, srfi-4.c, srfi-4.i.c (take_uvec): Make BASE pointer
617 non-const.
618 (scm_take_u8vector, etc): Likewise. Thanks to Ludovic Courtès!
619
620 * threads.h, threads.c (scm_t_guile_ticket, scm_leave_guile,
621 scm_enter_guile): Removed from public API. See comment at
622 scm_without_guile for the rationale.
623
624 * scmsigs.c (read_without_guile): New.
625 (signal_delivery_thread): Use it instead of
626 scm_leave_guile/read/scm_enter_guile.
627
628 From Stephen Compall:
629
630 * eval.c (scm_m_cond): Recognize SRFI 61 cond syntax.
631 (CEVAL): Evaluate SRFI 61 cond clauses.
632
633 2005-12-06 Ludovic Courtès <ludovic.courtes@laas.fr>
634
635 * gc-card.c (scm_i_card_statistics): Return if BITVEC is NULL.
636 This was typically hit when running `gc-live-object-stats' right
637 after starting Guile.
638
639 2005-11-30 Kevin Ryde <user42@zip.com.au>
640
641 * srfi-13.c (scm_string_append_shared): No copying if just one
642 non-empty string in args.
643
644 2005-11-26 Kevin Ryde <user42@zip.com.au>
645
646 * gc-mark.c (scm_mark_all): Change C++ comment to C comment. Reported
647 by Ludovic Courtès.
648
649 * list.c (list): Should be "primitive" in SCM_SNARF_DOCS, not
650 "register".
651
652 * random.c (scm_i_copy_rstate, scm_c_make_rstate): Don't test for
653 scm_malloc returning NULL, it never does that.
654 * putenv.c (putenv): Likewise.
655
656 * socket.c (scm_fill_sockaddr): Remove SCM_C_INLINE_KEYWORD, this is
657 much too big to want to inline.
658
659 2005-11-17 Ludovic Courtès <ludovic.courtes@laas.fr>
660
661 * print.c (EXIT_NESTED_DATA): Before popping from the stack, reset
662 the value at its top. This fixes a reference leak.
663 (PUSH_REF): Perform `pstate->top++' after calling
664 `PSTATE_STACK_SET ()' in order to avoid undesired potential side
665 effects.
666
667 2005-11-12 Ludovic Courtès <ludovic.courtes@laas.fr>
668
669 * gc.c (scm_weak_vectors): Removed.
670
671 2005-11-12 Kevin Ryde <user42@zip.com.au>
672
673 * socket.c (scm_setsockopt): Missing @defvar in docstring. Reported
674 by Ludovic Courtès.
675
676 2005-11-07 Marius Vollmer <mvo@zagadka.de>
677
678 * stime.c (scm_mktime): Use scm_frame_critical_section instead of
679 SCM_CRITICAL_SECTION_START/END since the code inside the critical
680 section might exit non-locally.
681
682 2005-11-04 Neil Jerram <neil@ossau.uklinux.net>
683
684 * eval.c (sym_instead): New symbol.
685 (ENTER_APPLY): Remove optional use of a continuation when making
686 trap call.
687 (scm_debug_opts): Change doc for 'cheap option to make clear that
688 it is now obsolete.
689 (CEVAL, SCM_APPLY): Remove optional use of a continuation when
690 making trap calls, and implement substitution of eval expressions
691 and return values using the values that the trap call handlers
692 return.
693
694 * debug.h (SCM_CHEAPTRAPS_P): Removed.
695
696 2005-10-27 Ludovic Courtès <ludovic.courtes@laas.fr>
697
698 * socket.c (scm_fill_sockaddr): No need to check NULL from scm_malloc.
699 (scm_connect, scm_bind, scm_sendto): Accept sockaddr object.
700 (scm_addr_vector): Renamed to _scm_from_sockaddr, update usages.
701 (scm_from_sockaddr, scm_to_sockaddr, scm_make_socket_address,
702 scm_c_make_socket_address): New functions.
703 * socket.h: Add prototypes.
704
705 2005-10-24 Kevin Ryde <user42@zip.com.au>
706
707 * socket.c (scm_init_socket): Add IPPROTO_IP, IPPROTO_TCP,
708 IPPROTO_UDP. Remove SOL_IP, SOL_TCP, SOL_UDP. The former are in
709 POSIX spec examples, the latter are not available on for instance
710 NetBSD.
711
712 * socket.c (scm_getsockopt, scm_setsockopt): Update docstrings from
713 posix.texi.
714
715 * stime.c (scm_strftime): Update docstring from posix.texi.
716
717 2005-10-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
718
719 PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP is not portable enough.
720
721 * null-threads.h, pthread-threads.h
722 (SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER): Removed.
723 (scm_i_pthread_mutexattr_recursive): New.
724
725 * threads.c (scm_i_pthread_mutexattr_recursive): Declare.
726 (scm_i_critical_section_mutex): Do not initialize statically.
727 (scm_threads_prehistory): Initialize
728 scm_i_pthread_mutexattr_recursive and scm_i_critical_section_mutex
729 here.
730
731 * eval.c (source_mutex): Do not initialiaze statically.
732 (scm_init_eval): Do it here, using
733 scm_i_pthread_mutexattr_recursive.
734
735 2005-09-05 Marius Vollmer <mvo@zagadka.de>
736
737 * print.h (SCM_PRINT_KEYWORD_STYLE_I, SCM_PRINT_KEYWORD_STYLE):
738 New.
739 (sym_reader): New.
740 (scm_print_opts): Added "quote-keywordish-symbols" option.
741 (quote_keywordish_symbol): New, for evaluating the option.
742 (scm_print_symbol_name): Use it.
743 (scm_init_print): Initialize new option to sym_reader.
744
745 2005-08-15 Neil Jerram <neil@ossau.uklinux.net>
746
747 * eval.c (eval_letrec_inits): New.
748 (CEVAL): Eval letrec initializer forms using eval_letrec_inits.
749
750 2005-08-12 Marius Vollmer <mvo@zagadka.de>
751
752 * numbers.c: Use scm_from_bool instead of SCM_BOOL. Thanks to
753 Peter Gavin!
754
755 2005-08-12 Kevin Ryde <user42@zip.com.au>
756
757 * srfi-13.c (scm_string_for_each_index): Correction to docstring.
758
759 2005-08-06 Kevin Ryde <user42@zip.com.au>
760
761 * srfi-13.c (scm_string_any, scm_string_every, scm_string_tabulate,
762 scm_string_trim, scm_string_trim_right, scm_string_trim_both,
763 scm_string_index, scm_string_index_right, scm_string_skip,
764 scm_string_skip_right, scm_string_count, scm_string_map,
765 scm_string_map_x, scm_string_for_each, scm_string_for_each_index,
766 scm_string_filter, scm_string_delete): Use scm_t_trampoline_1 for
767 procedures called in loops.
768
769 2005-08-02 Kevin Ryde <user42@zip.com.au>
770
771 * strports.c (st_flush): Increase buffer by 1.5x when growing, to
772 avoid lots of copying where previoulsy growing by only 80 bytes at a
773 time.
774
775 2005-08-01 Marius Vollmer <mvo@zagadka.de>
776
777 * modules.h, modules.c (scm_eval_closure_module): Removed, we
778 already have scm_lookup_closure_module, which does the same thing.
779
780 2005-08-01 Marius Vollmer <mvo@zagadka.de>
781
782 New marking algorithm for weak hashtables that fixes the problem
783 that references from the non-weak value to the associated weak
784 key (for example) would prevent the entry from ever being dropped.
785
786 Guardians have been changed back to their original semantics and
787 are no longer greedy and no longer drop cycles.
788
789 * gc-mark.c (scm_mark_all): Do not rely on hooks to run the weak
790 hashtable and guardian machinery but call the relevant functions
791 directly.
792
793 * guardians.h, guardians.c, deprecated.h,
794 deprecated.c (scm_destroy_guardian_x, scm_guardian_greedy_p,
795 scm_guardian_destroyed_p, scm_guard, scm_get_one_zombie):
796 Deprecated and moved into deprecated.[ch].
797
798 * guardians.h, guardians.c: Mostly rewritten.
799 (scm_i_init_guardians_for_gc,
800 scm_i_identify_inaccessible_guardeds,
801 scm_i_mark_inaccessible_guardeds): New.
802 (scm_make_guardian): Removed greedy_p argument.
803
804 * weaks.h, weaks.c (SCM_I_WVECT_TYPE, SCM_I_SET_WVECT_TYPE): New.
805 (SCM_I_WVECT_N_ITEMS, SCM_I_SET_WVECT_N_ITEMS): New.
806 (SCM_WVECTF_NOSCAN, SCM_WVECT_NOSCAN_P): Removed.
807 (scm_weaks_prehistory): Removed.
808 (scm_i_init_weak_vectors_for_gc, scm_i_mark_weak_vector,
809 scm_i_mark_weak_vectors_non_weaks,
810 scm_i_remove_weaks_from_weak_vectors, scm_i_remove_weaks): New.
811 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
812 scm_scan_weak_vectors): Removed.
813
814 * hashtab.h (scm_i_scan_weak_hashtables): New.
815 * hashtab.c (make_hash_table, scm_i_rehash): Do not use
816 SCM_WVECTF_NOSCAN.
817 (hashtable_print): Use SCM_HASHTABLE_N_ITEMS instead of
818 t->n_items.
819 (scan_weak_hashtables, scm_i_scan_weak_hashtables): Renamed former
820 to latter. Do not scan the alists themselves, this is done by the
821 weak vector code now. Just update the element count.
822
823 * vectors.h (SCM_I_WVECT_TYPE, SCM_I_WVECT_EXTRA): Renamed former
824 to latter. The type is now only part of the cell word.
825 (SCM_I_SET_WVECT_TYPE, SCM_I_SET_WVECT_EXTRA): Likewise.
826
827 * init.c (scm_i_init_guile): Do not call scm_weaks_prehistory.
828
829 2005-07-18 Mikael Djurfeldt <mdj@d14n36.pdc.kth.se>
830
831 Some changes towards making it possible to run Guile on the EM64T
832 platform.
833
834 * gc.c (scm_gc_stats): Bugfix: Measure size of the type we are
835 mallocating for (unsigned long *bounds).
836
837 * hashtab.c (scm_i_rehash): Cast SCM_HASHTABLE_FLAGS (table) to
838 scm_t_bits before storing them in the type word.
839
840 * gc.c (tag_table_to_type_alist): Modified type of c_tag from
841 scm_t_bits to int.
842
843 2005-07-12 Kevin Ryde <user42@zip.com.au>
844
845 * eval.c (scm_dbg_make_iloc): Should be SCM_IFRAMEMAX and
846 SCM_IDISTMAX, and cast uints through scm_t_bits to make gcc happy.
847 * pairs.c (scm_error_pair_access): Use scm_from_locale_string rather
848 than scm_makfrom0str.
849 Reported by Ken Raeburn.
850
851 * gc-card.c (scm_dbg_gc_get_bvec): Change return from long* to
852 scm_t_c_bvec_long*, gcc 4 doesn't like different pointer targets when
853 returning SCM_GC_CARD_BVEC.
854
855 * pairs.c (scm_error_pair_access): Plain ascii ' in error message
856 rather than latin-1 acute accent, the latter may not print on all
857 terminals.
858
859 * srfi-13.c (scm_string_filter, scm_string_delete): Strip leading and
860 trailing deletions, so as to return a substring if those are the only
861 changes.
862
863 2005-07-10 Kevin Ryde <user42@zip.com.au>
864
865 * socket.c (scm_inet_pton, scm_inet_ntop): Pointer cast to scm_t_uint8
866 for scm ipv6 funcs, gcc 4 is picky about char* vs uchar*.
867 (scm_getsockopt, scm_accept, scm_getsockname, scm_getpeername,
868 scm_recvfrom) Use socklen_t, gcc 4 is picky about int* vs socklen_t*.
869
870 2005-07-01 Han-Wen Nienhuys <hanwen@xs4all.nl>
871
872 * gc-card.c (scm_i_card_statistics): init tag.
873
874 * gc.c (tag_table_to_type_alist): check type of tag. Should be integer.
875
876 2005-06-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
877
878 * fports.c (s_scm_open_file): add the b flag for binary to the doc
879 string.
880
881 2005-06-25 Kevin Ryde <user42@zip.com.au>
882
883 * srfi-13.c (scm_string_filter, scm_string_delete): Partial revert
884 last change, use plain copy-on-write substrings, the individual
885 descriptions in the srfi don't mention shared storage (only the
886 introduction does).
887
888 * strings.c (scm_take_locale_stringn): Use realloc to make room for
889 null-terminator, rather than mallocing a whole new block.
890 (scm_take_locale_string): Use scm_take_locale_stringn len==-1.
891
892 2005-06-12 Marius Vollmer <mvo@zagadka.de>
893
894 * ramap.c (scm_array_index_map_x): First test for real arrays,
895 then check for generalized vectors. This ensures that the
896 generalized vector case need only work with zero-origin ranges.
897 (scm_ra_eqp, scm_ra_compare): Use the new array handle functions
898 to access the target array, making these functions work with all
899 kinds of arrays, not just bit arrays.
900
901 * gh.h, gh_data.c, gh_eval.c, gh_funcs.c, gh_init.c, gh_io.c,
902 gh_list.c, gh_predicates.c: Deprecated everything.
903
904 * environments.c (environment_default_folder,
905 environment_default_observer): Do not use gh_call3, gh_call1.
906
907 2005-06-10 Han-Wen Nienhuys <hanwen@xs4all.nl>
908
909 * modules.c (s_scm_eval_closure_module): new function. Return the
910 module inside an eval-closure.
911
912 * gc.c (scm_init_storage): make scm_stand_in_procs a weak_key hash
913 table. This means that procedure properties are GC'd if the
914 procedure dies.
915
916 2005-06-11 Kevin Ryde <user42@zip.com.au>
917
918 * srfi-13.c (scm_string_filter, scm_string_delete): For char and
919 charset cases, count chars kept and build a string in a second pass,
920 rather than using a cons cell for every char kept. Use a shared
921 substring when nothing removed (such sharing is allowed by the srfi).
922
923 2005-06-09 Han-Wen Nienhuys <hanwen@xs4all.nl>
924
925 * gc.c (tag_table_to_type_alist): convert tag number to "tag %d"
926 string, so live object stats can be sorted with string<?.
927
928 2005-06-06 Marius Vollmer <mvo@zagadka.de>
929
930 * print.c (iprin1): When writing a string, collect all characters
931 that can be printed directly into one call to scm_lfwrite.
932 Previously, every character was output with its own call to
933 write(2) on unbuffered ports.
934
935 * eval.c (scm_eval_options_interface): Use
936 scm_frame_critical_section instead of SCM_CRITICAL_SECTION_START
937 and SCM_CRITICAL_SECTION_END.
938
939 * unif.c (scm_array_in_bounds_p): First test for real arrays, then
940 check for generalized vectors. This ensures that the generalized
941 vector case need only work with zero-origin ranges.
942
943 2005-06-06 Kevin Ryde <user42@zip.com.au>
944
945 * srfi-13.c (scm_string_split): Compare char/char in scan. Mixing an
946 unsigned int SCM_CHAR and a char string meant an 8-bit char was never
947 matched.
948
949 2005-06-05 Marius Vollmer <mvo@zagadka.de>
950
951 * eval.c: Added comment on how to make case 1.1 of
952 r5rs_pitfall.test succeed.
953
954 From Jan Nieuwenhuizen <janneke@gnu.org>. Thanks!
955
956 * hashtab.h: Bugfix: use SCM_API (WAS: extern).
957
958 * socket.c: Remove obsolete comment about socklen_t.
959 (s_scm_setsockopt)[!HAVE_IP_MREQ]: Do not use ip_mreq code.
960
961 * numbers.h (isnan)[__MINGW32__]: Remove.
962
963 * Makefile.am (gen_scmconfig_SOURCES): Bugfix: Add
964 DEFAULT_INCLUDES when cross compiling.
965
966 * threads.c (ETIMEDOUT, pipe)[__MINGW32__]: Add defines.
967
968 * stime.c (scm_strftime)[!HAVE_TM_ZONE]: Use
969 SCM_SIMPLE_VECTOR_REF instead of SCM_VELTS. (Changed slightly
970 from Jan's patch.)
971
972 2005-05-22 Marius Vollmer <mvo@zagadka.de>
973
974 * unif.c (scm_make_shared_array): Add old base to new base since
975 scm_array_handle_pos does not include the base.
976 (scm_aind): Likewise.
977
978 * ports.c (scm_putc, scm_puts): Assert that the port argument is a
979 output port.
980
981 2005-05-12 Neil Jerram <neil@ossau.uklinux.net>
982
983 Mac OS X compile warning fixes, reported by Richard Todd.
984
985 * unif.c (scm_i_read_array): Declare rank as ssize_t, to guarantee
986 that it is signed.
987
988 * strports.c (st_resize_port): Add unsigned char cast.
989 (scm_mkstrport): Make read/write_buf cast unsigned.
990
991 * srfi-13.c (string_titlecase_x): Add unsigned char cast.
992
993 * rdelim.c (scm_read_line): Initialize slen.
994
995 * load.c (scm_search_path): Remove weird >=1, and add
996 parentheses to clarify conditions.
997
998 * hash.c (scm_hasher): Add const unsigned char cast.
999
1000 * gh_data.c (gh_chars2byvect): Add scm_t_int8 cast.
1001
1002 2005-05-11 Neil Jerram <neil@ossau.uklinux.net>
1003
1004 Fix C99isms reported by Ludovic Courtès:
1005
1006 * threads.c (s_scm_lock_mutex): Don't declare msg in middle of
1007 code.
1008
1009 * gc.c (s_scm_gc_live_object_stats): Don't declare alist in middle
1010 of code.
1011
1012 * gc-card.c (scm_i_card_statistics): Don't declare tag in middle
1013 of code.
1014 (scm_i_card_statistics): Add block for declarations of tag_as_scm
1015 and current.
1016
1017 2005-05-10 Neil Jerram <neil@ossau.uklinux.net>
1018
1019 * scmsigs.c (signal_delivery_thread): Return a value, to avoid
1020 compile warning reported by Werner Scheinast.
1021
1022 2005-04-30 Han-Wen Nienhuys <hanwen@xs4all.nl>
1023
1024 * list.h: remove scm_list()
1025
1026 * fluids.c (DYNAMIC_STATE_NEXT_LOC): new macro for use with
1027 SCM_DEBUG_CELL_ACCESSES
1028 (FLUID_NEXT_LOC): idem.
1029
1030 2005-04-30 Kevin Ryde <user42@zip.com.au>
1031
1032 * numbers.c (scm_divide): Correction to 1/complex and <any>/complex,
1033 need to test abs(re)<abs(im) for choice of cases, otherwise divide by
1034 zero when re==0 and im<0. Reported by Jean Crepeau.
1035
1036 2005-04-25 Kevin Ryde <user42@zip.com.au>
1037
1038 * ramap.c (scm_array_map_x): Allow no source args, add num args checks
1039 to subr_1, subr_2, subr_2o and dsubr cases. No source args only has a
1040 few sensible uses (like filling with a random number generator say),
1041 but has been allowed in the past and so should be kept.
1042
1043 2005-04-23 Kevin Ryde <user42@zip.com.au>
1044
1045 * hashtab.c (scm_hashx_remove_x): Need to pass "closure" to
1046 scm_hash_fn_remove_x.
1047
1048 * list.c (scm_cons_star): Don't modify the rest list, it belongs to
1049 the caller when cons* is reached through apply.
1050
1051 * list.c (list): Use scm_list_copy, so as to produce a fresh list when
1052 list is called using apply, under the debugging evaluator.
1053 (scm_list): Remove.
1054
1055 * list.c, list.h (scm_make_list): New code, moving make-list from
1056 boot-9.scm.
1057
1058 2005-04-14 Kevin Ryde <user42@zip.com.au>
1059
1060 * numbers.c, numbers.h (scm_oneplus, scm_oneminus): New functions,
1061 converted from scheme code in boot-9.scm.
1062
1063 2005-04-11 Kevin Ryde <user42@zip.com.au>
1064
1065 * srfi-13.c (scm_string_concatenate, scm_string_concatenate_shared):
1066 Validate list argument, scm_string_append and scm_string_append_shared
1067 don't do that to their rest argument (in a normal build).
1068
1069 2005-04-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1070
1071 * hashtab.h, hashtab.c (scm_t_hashtable): Removed 'closure' field. The
1072 closure can not be stored since it is no longer valid at GC time.
1073 (make_hash_table): Initialize 'hash_fn' field.
1074 (scm_i_rehash): Only store hash_fn in hash table when closre is
1075 NULL.
1076 (rehash_after_gc): Only call scm_i_rehash when 'hash_fn' is
1077 non-NULL. Always use a NULL closure.
1078 (scm_hash_fn_create_handle_x): Also rehash when table contains too
1079 few entries.
1080
1081 2005-03-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1082
1083 * hashtab.h, hashtab.c (scm_hash_fx_remove_x): Removed delete_fn
1084 argument; always use scm_delq_x. The delete_fn function works on
1085 the handle, not the key, and it therefore makes no sense to make
1086 it configurable. Changed all callers.
1087 (scm_hashx_remove_x): Likewise. Also, exported to Scheme.
1088 (scm_hash_clear): Accept plain vectors as hashtables.
1089 (scm_delx_x): Removed.
1090
1091 2005-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
1092
1093 * inline.h (scm_double_cell): use __asm__ iso. asm, to maintain
1094 compatibility with gcc -std=c99.
1095
1096 2005-03-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1097
1098 * async.h (scm_mask_ints): Removed left over reference to
1099 scm_root.
1100
1101 * threads.c: Removed fprintf debug statements.
1102
1103 2005-03-24 Neil Jerram <neil@ossau.uklinux.net>
1104
1105 * debug.c (scm_make_memoized): Restore use of SCM_UNPACK.
1106
1107 2005-03-23 Neil Jerram <neil@ossau.uklinux.net>
1108
1109 * debug.c (scm_make_memoized): Remove unnecessary critical
1110 section, and simplify by using SCM_RETURN_NEWSMOB.
1111
1112 2005-03-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1113
1114 * strings.h (SCM_STRING_UCHARS): Added missing argument.
1115
1116 2005-03-18 Kevin Ryde <user42@zip.com.au>
1117
1118 * arbiters.c (FETCH_STORE) [generic C]: Should be
1119 scm_i_scm_pthread_mutex_lock/unlock now. Reported by Ludovic Courtès.
1120
1121 2005-03-13 Kevin Ryde <user42@zip.com.au>
1122
1123 * numbers.c, numbers.h (scm_i_clonebig): Remove static, so can use in
1124 srfi-60.
1125
1126 * numbers.c (scm_logior): Must scm_i_normbig results as per scm_logand,
1127 because OR-ing bits into a negative can reduce the value to an inum.
1128
1129 * numbers.c (scm_num_eq_p): On 64-bit systems, be careful about
1130 casting inum to double since that can lose precision.
1131
1132 2005-03-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1133
1134 * threads.h, threads.c (scm_i_thread): Added gc_running_p field.
1135 (guilify_self_1): Initialize it.
1136
1137 * gc.h, gc.c (SCM_FREECELL_P): Removed for good.
1138 (scm_block_gc, scm_gc_heap_lock): Removed. Removed all uses.
1139 (scm_gc_running_p): Now a macro that refers to the scm_i_thread
1140 field.
1141 (scm_i_sweep_mutex): Now a non-recursive mutex. GC can not happen
1142 recursively.
1143 (scm_igc, scm_i_gc): Renamed former to latter. Changed all uses.
1144 Do not lock scm_i_sweep_mutex, which is now non-recursive, or set
1145 scm_gc_running_p. Do not run the scm_after_gc_c_hook.
1146 (scm_gc): Lock scm_i_sweep_mutex, set scm_gc_running_p and run the
1147 scm_after_gc_c_hook here.
1148 (scm_gc_for_new_cell): Set scm_gc_running_p here and run the
1149 scm_after_gc_c_hook when a full GC has in fact been performed.
1150 (scm_i_expensive_validation_check): Call scm_gc, not scm_i_gc.
1151
1152 * gc-segment.c (scm_i_get_new_heap_segment): Do not check
1153 scm_gc_heap_lock.
1154
1155 * gc-malloc.c (scm_realloc, increase_mtrigger): Set
1156 scm_gc_running_p while the scm_i_sweep_mutex is locked.
1157
1158 * inline.h (scm_cell, scm_double_cell): Do not check
1159 scm_gc_running_p, allocation during sweeping is OK.
1160
1161 * gdbint.c (SCM_BEGIN_FOREIGN_BLOCK, SCM_END_FOREIGN_BLOCK): Do
1162 not set scm_block_gc.
1163
1164 * init.c (scm_i_init_guile): Do not set scm_block_gc.
1165
1166 * deprecation.c (scm_c_issue_deprecation_warning): Use malloc
1167 instead of scm_malloc. The latter can not be used during GC.
1168
1169 2005-03-09 Marius Vollmer <mvo@zagadka.de>
1170
1171 * script.c (scm_compile_shell_switches): Added 2005 to Copyright
1172 years.
1173
1174 2005-03-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1175
1176 * gc-card.c (scm_i_sweep_card): Do not increase/decrease
1177 scm_gc_running_p. Sweeping can happen in parallel with
1178 allocation.
1179
1180 * inline.h: Updated comments for current threading implementation.
1181
1182 * threads.h, threads.c (scm_i_frame_single_threaded): Removed.
1183 (scm_i_thread): Removed unused signal_asyncs field.
1184 (threads_mark): Do not mark it.
1185 (guilify_self_1): Do not initialize it. Do initialize
1186 continuation_root field.
1187 (do_thread_exit): Do not remove thread from all_threads list.
1188 (on_thread_exit): Do it here, after leaving guile mode.
1189 (sleep_level): Removed.
1190 (scm_i_thread_put_to_sleep): Leave thread_admin_mutex locked when
1191 returning. Do not support recursive sleeps.
1192 (scm_i_thread_wake_up): Expect thread_admin_mutex to be locked on
1193 entry. Do not support recursive sleeps.
1194
1195 * fluids.c (ensure_state_size, ensure_all_state_sizes,
1196 resize_all_states): Collapsed ensure_state_size and
1197 ensure_all_state_sizes into one function named resize_all_states.
1198 Allocate new vectors outside of single threaded region. Do only
1199 simple things inside that region.
1200 (scm_make_fluid, scm_make_dynamic_state): Lock fluid_admin_mutex
1201 while adding to the global lists.
1202
1203
1204 2005-03-08 Marius Vollmer <mvo@zagadka.de>
1205
1206 libltdl is no longer distributed. We expect it to be installed
1207 already.
1208
1209 * Makefile.am (INCLUDES): Removed @LTDLINCL@.
1210 (libguile_la_LIBADD): Removed @LIBLTDL@.
1211
1212 2005-03-07 Marius Vollmer <mvo@zagadka.de>
1213
1214 * threads.h, async.h, threads.c (SCM_CRITICAL_SECTION_START,
1215 SCM_CRITICAL_SECTION_END): Moved here from threads.h since now
1216 they also block/unblock execution of asyncs and call
1217 scm_async_click which is declared in async.h but threads.h can not
1218 include async.h since async.h already includes threads.h.
1219 (scm_i_critical_section_level): New, for checking mistakes in the
1220 use of the SCM_CRITICAL_SECTION_* macros.
1221 (scm_i_critical_section_mutex): Make it a recursive mutex so that
1222 critical sections can be nested.
1223
1224 * throw.c (scm_ithrow): Abort when scm_i_critical_section_level is
1225 not zero.
1226
1227 * threads.h, threads.c (scm_frame_lock_mutex): New.
1228 (scm_frame_critical_section): Take mutex as argument.
1229 (framed_critical_section_mutex): New, used as default for above.
1230 (scm_init_threads): Initialize it.
1231 (scm_threads_prehistory): Do not initialize thread_admin_mutex and
1232 scm_i_critical_section_mutex; both are initialized statically.
1233
1234 * continuation.c, deprecated.c, goops.c, guardians.c keywords.c,
1235 libguile_la-arrays.loT, objprop.c, ports.c, smob.c, sort.s,
1236 srcprop.c, stime.c, struct.c, throw.c, regex-posix.c: Include
1237 "libguile/async.h" for SCM_CRITICAL_SECTION_START/END.
1238
1239 * debug.c (scm_debug_options): Replace
1240 SCM_CRITICAL_SECTION_START/END with a frame and
1241 scm_frame_critical_section.
1242
1243 * continuations.c (scm_make_continuation): No longer a critical
1244 section.
1245 (scm_dynthrow): Abort when scm_i_critical_section_level is
1246 not zero.
1247
1248 2005-03-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1249
1250 * threads.c (scm_try_mutex): Renamed argument for consistency.
1251
1252 * root.c (scm_call_with_dynamic_root): New docstring.
1253
1254 * eval.c: Define _GNU_SOURCE.
1255
1256 2005-03-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1257
1258 Big merge from the mvo-thread-cleanup branch. The main changes
1259 are:
1260
1261 - The dynamic roots functionality has been split into dynamic
1262 states and continuations barriers. Fluids have been
1263 reimplemented and can now be garbage collected.
1264
1265 - Initialization of Guile now works in a multi-thread friendly
1266 manner. Threads can freely enter and leave guile mode.
1267
1268 - Blocking on mutexes or condition variables or while selecting
1269 can now be reliably interrupted via system asyncs.
1270
1271 - The low-level threading interface has been removed.
1272
1273 - Signals are delivered via a pipe to a dedicated 'signal delivery
1274 thread'.
1275
1276 - SCM_DEFER_INTS, SCM_ALLOW_INTS etc have been deprecated.
1277
1278 * throw.c (scm_handle_by_message): Exit only the current thread,
1279 not the whole process.
1280 (scm_handle_by_message_noexit): Exit when catching 'quit.
1281
1282 * scmsigs.c (take_signal, signal_delivery_thread,
1283 start_signal_delivery_thread, ensure_signal_delivery_thread,
1284 install_handler): Reimplemented signal delivery as explained in
1285 the comments.
1286
1287 * pthreads-threads.h (scm_i_pthread_t, scm_i_pthread_self,
1288 scm_i_pthread_create, scm_i_pthread_detach, scm_i_pthread_exit,
1289 scm_i_sched_yield, scm_i_pthread_sigmask,
1290 SCM_I_PTHREAD_MUTEX_INITIALIZER,
1291 SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER, scm_i_pthread_mutex_t ,
1292 scm_i_pthread_mutex_init, scm_i_pthread_mutex_destroy,
1293 scm_i_pthread_mutex_trylock, scm_i_pthread_mutex_lock,
1294 scm_i_pthread_mutex_unlock, SCM_I_PTHREAD_COND_INITIALIZER,
1295 scm_i_pthread_cond_t, scm_i_pthread_cond_init,
1296 scm_i_pthread_cond_destroy, scm_i_pthread_cond_signal,
1297 scm_i_pthread_cond_broadcast, scm_i_pthread_cond_wait,
1298 scm_i_pthread_cond_timedwait, scm_i_pthread_once_t,
1299 SCM_I_PTHREAD_ONCE_INIT, scm_i_pthread_once, scm_i_pthread_key_t ,
1300 scm_i_pthread_key_create, scm_i_pthread_setspecific,
1301 scm_i_pthread_getspecific, scm_i_scm_pthread_mutex_lock,
1302 scm_i_frame_pthread_mutex_lock, scm_i_scm_pthread_cond_wait,
1303 scm_i_scm_pthread_cond_timedwait): Provide the obvious mapping
1304 when using pthreads.
1305 * null-threads.c, null-threads.h: Provide dummy definitions for
1306 the above symbols when not using pthreads.
1307
1308 * modules.h, modules.c (scm_frame_current_module): New.
1309
1310 * load.c (scm_primitive_load): Use scm_i_frame_current_load_port
1311 instead of scm_internal_dynamic_wind.
1312
1313 * init.h, init.c (restart_stack, start_stack): Removed.
1314 (scm_boot_guile, invoke_main_func): Simply use scm_with_guile.
1315 (scm_boot_guile_1): Removed.
1316 (scm_i_init_mutex): New.
1317 (really_cleanup_for_exit, cleanup_for_exit): New.
1318 (scm_init_guile_1, scm_i_init_guile): Renamed former to latter.
1319 Moved around some init funcs. Call
1320 scm_init_threads_default_dynamic_state. Register cleanup_for_exit
1321 with atexit.
1322
1323 * hashtab.c (scm_hash_fn_create_handle_x, scm_hash_fn_remove_x):
1324 Use "!scm_is_eq" instead of "!=".
1325
1326 * ge-scmconfig.c, gen-scmconfig.h.in (SCM_I_GSC_USE_COOP_THREADS,
1327 SCM_USE_COOP_THREADS): Removed.
1328
1329 * gc.c (scm_igc): Take care that scm_gc_running_p is properly
1330 maintained. Unlock scm_i_sweep_mutex before running
1331 scm_after_gc_c_hook.
1332 (scm_permanent_object): Allocate outside of critical section.
1333 (cleanup): Removed.
1334
1335 * fluids.h, fluids.c: Reimplemented completely.
1336 (SCM_FLUID_NUM, SCM_FAST_FLUID_REF,
1337 SCM_FAST_FLUID_SET): Reimplemented as functions.
1338 (scm_is_fluid): New.
1339 (scm_i_make_initial_fluids, scm_i_copy_fluids): Removed.
1340 (scm_make_dynamic_state, scm_dynamic_state_p,
1341 scm_is_dynamic_state, scm_current_dynamic_state,
1342 scm_set_current_dynamic_state, scm_frame_current_dynamic_state,
1343 scm_c_with_dynamic_state, scm_with_dynamic_state,
1344 scm_i_make_initial_dynamic_state, scm_fluids_prehistory): New.
1345
1346 * feature.c (progargs_fluid): New.
1347 (scm_program_arguments, scm_set_program_arguments): Use it instead
1348 of scm_progargs.
1349 (scm_init_feature): Allocate it. Also, only add "threads" feature
1350 when SCM_USE_PTHREAD_THREADS is true.
1351
1352 * eval.c (scm_makprom): Use scm_make_recursive_mutex instead of
1353 scm_make_rec_mutex, with all the consequences.
1354 (scm_eval_x, scm_eval): Use scm_frame_begin etc instead of
1355 scm_internal_dynamic_wind. Handle dynamic states as second
1356 argument.
1357
1358 * threads.h, threads.c (scm_internal_select): Renamed to
1359 scm_std_select and discouraged old name.
1360 (scm_thread_sleep, scm_thread_usleep): Likewise, as scm_std_sleep
1361 and scm_std_usleep.
1362 (scm_tc16_fair_mutex, scm_tc16_fair_condvar, SCM_MUTEXP,
1363 SCM_FAIR_MUTEX_P, SCM_MUTEX_DATA, SCM_CONDVARP,
1364 SCM_FAIR_CONDVAR_P, SCM_CONDVAR_DATA, SCM_THREADP,
1365 SCM_THREAD_DATA): Removed.
1366 (SCM_I_IS_THREAD, SCM_I_THREAD_DATA): New.
1367 (scm_i_thread): New.
1368 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
1369 Use scm_assert_smob_type.
1370 (scm_c_scm2thread, scm_thread_join, scm_thread_detach,
1371 scm_thread_self, scm_thread_yield, scm_mutex_init,
1372 scm_mutex_destroy, scm_mutex_trylock, scm_mutex_unlock,
1373 scm_rec_mutex_init, scm_rec_mutex_destroy, scm_make_rec_mutex,
1374 scm_rec_mutex_free, scm_rec_mutex_lock, scm_rec_mutex_trylock,
1375 scm_cond_init, scm_cond_destroy, scm_cond_wait,
1376 scm_cond_timedwait, scm_cond_signal, scm_cond_broadcast,
1377 scm_key_create, scm_key_delete, scm_setspecific, scm_getspecific,
1378 scm_thread_select): Removed. Replaced with scm_i_pthread
1379 functions as appropriate.
1380 (scm_in_guile, scm_outside_guile): Removed.
1381 (scm_t_guile_ticket, scm_leave_guile, scm_enter_guile): Return and
1382 take a ticket.
1383 (scm_with_guile, scm_without_guile, scm_i_with_guile_and_parent):
1384 New.
1385 (scm_i_frame_single_threaded): New.
1386 (scm_init_threads_default_dynamic_state): New.
1387 (scm_i_create_thread): Removed.
1388 (scm_make_fair_mutex, scm_make_fair_condition_variable): Removed.
1389 (scm_make_recursive_mutex): New.
1390 (scm_frame_critical_section): New.
1391 (SCM_CURRENT_THREAD, SCM_I_CURRENT_THREAD): Renamed former to
1392 latter, changed all uses.
1393 (scm_i_dynwinds, scm_i_setdynwinds, scm_i_last_debug_frame,
1394 scm_i_set_last_debug_frame): New, use them instead of scm_root
1395 stuff.
1396 (SCM_THREAD_LOCAL_DATA, SCM_SET_THREAD_LOCAL_DATA,
1397 scm_i_root_state_key,m scm_i_set_thread_data): Removed.
1398 (scm_pthread_mutex_lock, scm_frame_pthread_mutex_lock,
1399 scm_pthread_cond_wait, scm_pthread_cond_timedwait).
1400 (remqueue): Allow the removal of already removed cells. Indicate
1401 whether a real removal has happened.
1402 (scm_thread): Removed, replaced with scm_i_thread.
1403 (make_thread, init_thread_creatant): Removed.
1404 (cur_thread): Removed.
1405 (block_self, unblock_from_queue): New.
1406 (block, timed_block, unblock): Removed.
1407 (guilify_self_1, guilify_self_2, do_thread_exit,
1408 init_thread_key_once, init_thread_key,
1409 scm_i_init_thread_for_guile, get_thread_stack_base,
1410 scm_init_guile): New initialisation method.
1411 (scm_call_with_new_thread, scm_spawn_thread): Use it to simplify
1412 thread creation.
1413 (fair_mutex, fat_mutex, etc, fair_condvar, fat_condvar): Renamed
1414 "fair" to fat and implemented new semantics, including reliable
1415 interruption.
1416 (all_threads): Now a pointer to a scm_i_thread, not a SCM.
1417 (scm_threads_mark_stacks): Explicitly mark handle.
1418 (scm_std_select): Allow interruption by also selecting on the
1419 sleep_pipe.
1420 (scm_i_thread_put_to_sleep): Handle recursive requests for
1421 single-threadedness.
1422 (scm_threads_prehistory, scm_init_threads): Put current thread
1423 into guile mode via guileify_self_1 and guileify_self_2,
1424 respectively.
1425
1426 * fluid.h (SCM_FLUIDP): Deprecated.
1427
1428 * coop-threads.c: Removed.
1429
1430 * continuations.h, continuations.c (scm_with_continuation_barrier,
1431 scm_c_with_continuation_barrier, scm_i_with_continuation_barrier):
1432 New.
1433
1434 * async.h, async.c (scm_i_setup_sleep, scm_i_reset_sleep): New.
1435 (async_mutex): New.
1436 (scm_async_click): Protected with async_mutex. Do not deal with
1437 signal_asyncs, which are gone. Set cdr of handled async cell to
1438 #f.
1439 (scm_i_queue_async_cell): Protected with async_mutex. Interrupt
1440 current sleep.
1441 (scm_system_async_mark_for_thread): Do not use scm_current_thread
1442 since that might not work during early initialization.
1443
1444 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS, SCM_REDEFER_INTS,
1445 SCM_REALLOW_INTS): Deprecated by moving into deprecated.h and
1446 deprecated.c. Replaced all uses with SCM_CRITICAL_SECTION_START
1447 and SCM_CRITICAL_SECTION_END.
1448 (SCM_ENTER_A_SECTION, SCM_EXIT_A_SECTION): Removed. Replaced with
1449 SCM_CRITICAL_SECTION_START/END.
1450
1451 * Makefile.am (modinclude_HEADER): Removed threads-plugin.h.
1452 (libguile_la_SOURCES): Added null-threads.c
1453 (EXTRA_libguile_la_SOURCES): Removed pthread-threads.c and
1454 threads-plugin.c.
1455 * pthread-threads.c, threads-plugin.c, threads-plugin.h: Removed.
1456
1457 * root.h, root.c (scm_tc16_root, SCM_ROOTP, SCM_ROOT_STATE,
1458 scm_root_state, scm_stack_base, scm_save_regs_gc_mark,
1459 scm_errjmp_bad, scm_rootcont, scm_dynwinds, scm_progargs,
1460 scm_last_debug_frame, scm_exitval, scm_cur_inp, scm_outp,
1461 scm_cur_err, scm_cur_loadp, scm_root, scm_set_root,
1462 scm_make_root): Removed or deprecated. Replaced with references
1463 to the current thread, dynamic state, continuation barrier, or
1464 some fluid, as appropriate.
1465 (root_mark, root_print): Removed.
1466 (scm_internal_cwdr): Reimplemented guts with
1467 scm_frame_current_dynamic_state and
1468 scm_i_with_continuation_barrier.
1469 (scm_dynamic_root): Return current continuation barrier.
1470
1471
1472 2005-02-28 Marius Vollmer <mvo@zagadka.de>
1473
1474 * socket.c (scm_setsockopt): Handle IP_ADD_MEMBERSHIP and
1475 IP_DROP_MEMBERSHIP options. Also, reorganized the code a bit for
1476 cleanliness.
1477 (scm_init_socket): Define IP_ADD_MEMBERSHIP and
1478 IP_DROP_MEMBERSHIP.
1479 Thanks to Greg Troxel!
1480
1481 2005-02-27 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1482
1483 * gh.h: Bugfix: Include <libguile.h> outside of the extern "C"
1484 block.
1485
1486 2005-02-25 Marius Vollmer <mvo@zagadka.de>
1487
1488 * hashtab.c (scm_i_rehash): Remove elements from old bucket vector
1489 so that no two weak alist vectors share a spine.
1490 (scm_hash_fn_create_handle_x): Deal with a possible rehashing
1491 during GC before inserting the new alist cell.
1492
1493 2005-02-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1494
1495 * hashtab.c (scm_i_rehash): Cope with the case that a GC modifies
1496 the hashtable.
1497 (scm_hash_fn_create_handle_x): Likewise.
1498 * vectors.h (SCM_I_SET_WVECT_TYPE): New, for use in scm_i_rehash.
1499
1500 2005-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1501
1502 * unif.c (prototype_to_type): Bugfix: Don't compare prototype to
1503 the prototypical examples mentioned in the old reference manual.
1504 Instead keep the old semantics of dispatching on type. (Yes, this
1505 is extremely ugly, but the whole point of keeping the deprecated
1506 interface is not to break old code.)
1507
1508 2005-02-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1509
1510 * deprecated.h (SCM_ARRAY_DIMS): Rename scm_i_attay_dims -->
1511 scm_i_array_dims.
1512
1513 2005-01-28 Kevin Ryde <user42@zip.com.au>
1514
1515 * numbers.c (scm_ash): Rewrite using shifts, much faster than
1516 integer-expt and multiply/divide. Inexacts and fractions no longer
1517 supported (they happened to work before for left shifts, but not
1518 right). Don't really need inexacts and fractions, since ash is
1519 documented as a "bitwise operation", and all the rest of those only
1520 take exact integers.
1521
1522 2005-01-27 Han-Wen Nienhuys <hanwen@xs4all.nl>
1523
1524 * gc-card.c (scm_i_card_statistics): map structs, closures and
1525 subrs to one tag.
1526
1527 * gc.c (s_scm_gc_live_object_stats): return alist, not hashtable.
1528 (tag_table_to_type_alist): ignore unknown types.
1529
1530 * gc-segment.c (scm_i_all_segments_statistics): new function.
1531 (scm_i_heap_segment_statistics): new function
1532
1533 * gc.c (s_scm_gc_live_object_stats): new GUILE callable: return
1534 statistics on the number of live objects of each type.
1535
1536 * gc-card.c (scm_i_tag_name): new function.
1537 (scm_i_card_statistics): new function.
1538
1539 2005-01-24 Kevin Ryde <user42@zip.com.au>
1540
1541 * posix.c (scm_setlocale): Force errno=EINVAL for an error, since
1542 POSIX and C99 don't document errno being set. Reported by Bruno
1543 Haible.
1544 (scm_flock): Update docstring from manual.
1545
1546 * random.c (scm_i_init_rstate): Compare w to -1 not 0xffffffffUL, now
1547 that it's an scm_t_int32. Otherwise gcc 3.4 says it's always false on
1548 a 64-bit system.
1549
1550 * scmsigs.c (scm_sigaction_for_thread): Use scm_to_long for
1551 sa_handler, needs to be a long on 64-bit systems where int is only 32
1552 bits.
1553
1554 2005-01-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1555
1556 * environments.c (obarray_enter, obarray_replace): Call
1557 SCM_HASHTABLE_INCREMENT when adding a new entry.
1558
1559 * objects.c: Include goops.h for the scm_class_of prototype.
1560
1561 * hashtab.c (hashtable_size, HASHTABLE_SIZE_N): Restrict hashtable
1562 sizes to be smaller than the maximum lengths of vectors.
1563
1564 2005-01-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1565
1566 * ports.c, smob.c: Include "libguile/goops.h".
1567
1568 * objects.h, objects.c, goops.c, goops.h (scm_class_boolean,
1569 scm_class_char, scm_class_pair, scm_class_procedure,
1570 scm_class_string, scm_class_symbol,
1571 scm_class_procedure_with_setter, scm_class_primitive_generic,
1572 scm_class_vector, scm_class_null, scm_class_real,
1573 scm_class_complex, scm_class_integer, scm_class_fraction,
1574 scm_class_unknown, scm_port_class, scm_smob_class,
1575 scm_no_applicable_method, scm_class_of): Moved from objects to
1576 goops since they are only useable once goops has been loaded.
1577 (scm_classes_initialized): Removed.
1578 (scm_class_of): Do not check it.
1579 (create_standard_classes): Do not set it.
1580
1581 2005-01-17 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1582
1583 * objects.h, objects.c (scm_classes_initialized): New.
1584 (scm_class_of): Signal error when scm_classes_initialized is zero.
1585 * goops.c (create_standard_classes): Set scm_classes_initialized
1586 to one.
1587
1588 * random.c (scm_random_solid_sphere_x): Use
1589 scm_c_generalized_vector_length instead of
1590 scm_uniform_vector_length.
1591
1592 2005-01-16 Marius Vollmer <mvo@zagadka.de>
1593
1594 * script.c (scm_compile_shell_switches): Removed debugging output.
1595
1596 2005-01-15 Kevin Ryde <user42@zip.com.au>
1597
1598 * numbers.c (scm_logtest, scm_logbit_p, scm_integer_expt): Update
1599 docstrings from manual.
1600 * random.c (scm_random_solid_sphere_x): Update docstring from manual.
1601
1602 2005-01-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1603
1604 * random.c: Don't check for definedness of SCM_HAVE_T_INT64, check
1605 its value.
1606
1607 Implement u64 and s64 uniform numeric vectors with bignums when
1608 scm_t_uint64 and scm_t_int64 are not available.
1609
1610 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_take_u64vector,
1611 scm_array_handle_u64_elements,
1612 scm_array_handle_u64_writable_elements, scm_u64vector_elements,
1613 scm_u64vector_writable_elements): Do not define when scm_t_uint64
1614 is not available.
1615 (scm_take_s64vector, scm_array_handle_s64_elements,
1616 scm_array_handle_s64_writable_elements, scm_s64vector_elements,
1617 scm_s64vector_writable_elements): Likewise for scm_t_int64.
1618 (uvec_sizes, uvec_print, uvec_equalp): Use SCM bignums when
1619 scm_t_int64/scm_t_uint64 are not available.
1620 (uvec_mark): New, to mark the bignums.
1621 (alloc_uvec): Initialize bignums.
1622 (uvec_fast_ref): Return bignums directly.
1623 (scm_uint64_min, scm_uint64_max, scm_int64_min, scm_int64_max,
1624 assert_exact_integer): New.
1625 (uvec_fast_set): Use them to validate the bignums.
1626 (scm_init_srfi_4): Set mark function of smob when needed.
1627 Initialize scm_uint64_min, scm_uint64_max, scm_int64_min,
1628 scm_int64_max.
1629
1630 Recognize 1.4 -e syntax.
1631
1632 * script.c (sym_at, sym_atat, sym_main, all_symbols): New.
1633 (scm_compile_shell_switches): Use them to recognize and convert
1634 1.4 "-e" syntax.
1635
1636 2005-01-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1637
1638 * deprecated.h, deprecated.c, strings.h, strings.c: Turn all
1639 deprecated features that once were macros but are now functions
1640 back into macros.
1641
1642 2005-01-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1643
1644 * eval.c, debug.h (SCM_WARN_DEPRECATED): New debug option.
1645 * deprecation.c (scm_issue_deprecation_warning,
1646 scm_c_issue_deprecation_warning_fmt): Use it.
1647 (mode): Removed.
1648 (print_summary): New.
1649 (scm_init_deprecation): Initialize SCM_WARN_DEPRECATED instead of
1650 mode.
1651
1652 Deprecated SCM_ARRAY* macros.
1653
1654 * unif.h, unif.c, ramap.c, vectors.c, srfi-4.c, srfi-4.i.c
1655 (SCM_ARRAYP, SCM_I_ARRAYP): Renamed former to latter internal
1656 version. Changed all uses.
1657 (scm_tc16_array, scm_i_tc16_array,
1658 scm_tc16_enclosed_array, scm_i_tc16_enclosed_array,
1659 SCM_ARRAY_FLAG_CONTIGUOUS, SCM_I_ARRAY_FLAG_CONTIGUOUS,
1660 SCM_ENCLOSE_ARRAYP, SCM_I_ENCLOSE_ARRAYP,
1661 SCM_ARRAY_NDIM, SCM_I_ARRAY_NDIM,
1662 SCM_ARRAY_CONTP, SCM_I_ARRAY_CONTP,
1663 SCM_ARRAY_MEM, SCM_I_ARRAY_MEM,
1664 SCM_ARRAY_V, SCM_I_ARRAY_V,
1665 SCM_ARRAY_BASE, SCM_I_ARRAY_BASE,
1666 SCM_ARRAY_DIMS, SCM_I_ARRAY_DIMS,
1667 scm_t_array, scm_i_t_array): Likewise.
1668 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
1669 Moved from unif.h to unif.c.
1670 (scm_c_array_rank): New.
1671 (scm_array_rank): Reimplement using it.
1672
1673 * deprecated.h, deprecated.c (SCM_ARRAYP, SCM_ARRAY_NDIM,
1674 SCM_ARRAY_CONTP, SCM_ARRAY_MEM, SCM_ARRAY_V, SCM_ARRAY_BASE,
1675 SCM_ARRAY_DIMS, scm_t_array): New deprecated versions.
1676
1677 2005-01-11 Marius Vollmer <mvo@zagadka.de>
1678
1679 * ramap.c: Replace uses of scm_make_ra with scm_i_make_ra.
1680 (GVREF, GVSET): New abbreviations. Use them everywhere instead of
1681 scm_c_generalized_vector_ref and scm_cvref, and
1682 scm_c_generalized_vector_set_x, respectively.
1683 (RVREF, IVDEP, BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
1684 UNARY_ELTS_CODE, UNARY_PAIR_ELTS_CODE): Removed since unused.
1685
1686 * unif.h, unif.c (indices_to_pos, scm_array_handle_pos): Renamed
1687 former to latter and made public. Changed all uses.
1688 (scm_i_make_ra): Made public, changed tag param to enclosed flag.
1689 (scm_make_ra): Deprecated, changed all uses to scm_i_make_ra.
1690 (scm_i_shap2ra): New internal version of scm_shap2ra.
1691 (scm_shap2ra): Deprecated, changed all uses to scm_i_shap2ra.
1692 (scm_i_ra_set_contp): New internal version of scm_ra_set_contp.
1693 (scm_ra_set_contp): Deprecated, changed all uses to
1694 scm_i_ra_set_contp.
1695 (scm_cvref, scm_aind, scm_raprin1): Deprecated.
1696
1697 2005-01-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1698
1699 * eval.c (scm_eval): Added example to docstring. Thanks to Issac
1700 Trotts!
1701
1702 * unif.c (scm_list_to_typed_array): Allow the specification of the
1703 upper bound as well. This is needed for empty arrays.
1704 (l2ra): Give needed number of elements in error message.
1705 (scm_i_print_array): Print length information for arrays that need
1706 it.
1707 (scm_i_read_array): Parse it.
1708
1709 * deprecated.h, deprecated.c (SCM_CHARS, SCM_UCHARS, SCM_LENGTH,
1710 scm_i_object_chars, scm_i_object_length): Brought back from the
1711 dead.
1712
1713 2005-01-10 Marius Vollmer <mvo@zagadka.de>
1714
1715 * ramap.c: Replaced single-index uses of scm_array_set_x with
1716 scm_c_generalized_vector_set_x.
1717
1718 * unif.c (scm_array_rank, scm_array_dimensions,
1719 scm_shared_array_offset, scm_shared_array_increments,
1720 scm_array_ref, scm_array_set_x): Use scm_t_array_handle operations
1721 to simplify code and make it more general.
1722 (scm_shared_array_root): Work with all kinds of arrays, including
1723 naked vectors.
1724 (indices_to_pos): New.
1725 (scm_make_shared_array): Use it instead of scm_aind; use handle
1726 for oldra.
1727
1728 2005-01-10 Kevin Ryde <user42@zip.com.au>
1729
1730 * posix.c (scm_mkstemp): Update docstring from manual.
1731
1732 * stime.c (scm_mktime): Missing default errno=EINVAL from prev change.
1733
1734 2005-01-09 Marius Vollmer <mvo@zagadka.de>
1735
1736 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_i_uniform_vector_ref_proc,
1737 scm_i_uniform_vector_set_proc): New.
1738 (u8ref, u8set, s8ref, s8set, etc): New.
1739 (uvec_reffers, uvec_setters): New.
1740 (uvec_to_list): Use generic scm_array_handle_ref instead of
1741 uvec_fast_ref since scm_array_handle_ref should be faster now.
1742 (coerce_to_uvec, scm_c_uniform_vector_ref,
1743 scm_c_uniform_vector_set_x): Likewise.
1744
1745 * unif.h, unif.c, inline.h (scm_i_t_array_ref, scm_i_t_array_set):
1746 New.
1747 (scm_t_array_handle): Added ref, set, elements and
1748 writable_elements for fast inline operation of
1749 scm_array_handle_ref and scm_array_handle_set.
1750 (scm_array_handle_ref, scm_array_handle_set): Moved to inline.h
1751 and replaced with inline code that simply calls the ref/set
1752 members of the handle.
1753 (enclosed_ref, vector_ref, string_ref, bitvector_ref, memoize_ref,
1754 enclosed_set, vector_set, string_set, bitvector_set, memoize_set):
1755 New.
1756 (scm_array_handle_get): Initialize ref/set fields to memoize_ref
1757 and memoize_set.
1758 (scm_bitvector_fill_x, scm_bitvector_to_list, scm_bit_count,
1759 scm_bit_position, scm_bit_set_star_x, scm_bit_count_star,
1760 scm_bit_invert_x): Correctly multiply index with increment in the
1761 general case.
1762
1763 * unif.c (scm_array_handle_set): Correctly execute only one
1764 alternative. D'Oh!
1765 (scm_list_to_typed_array, l2ra): Use scm_t_array_handle to fill
1766 the array; this covers all cases with much simpler code.
1767
1768 * srfi-4.c (scm_uniform_element_size): Deprecated implementation
1769 as well.
1770
1771 2005-01-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1772
1773 * srfi-4.c (uvec_type): New.
1774 (uvec_to_list, uvec_ref, uvec_set_x, scm_c_uniform_vector_ref,
1775 scm_c_uniform_vector_x): Use it to get concrete type.
1776
1777 * unif.h (scm_t_array_dim): Changed type of members to ssize_t, to
1778 fit the docs.
1779
1780 * unif.c (ra2l): Handle zero rank arrays.
1781 (scm_i_print_array): Print zero rank arrays specially.
1782 (tag_to_type): Return #t for an empty tag, not the empty symbol.
1783 (scm_i_read_array): Allow zero rank arrays.
1784
1785 2005-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1786
1787 * hashtab.h, hashtab.c (SCM_HASHTAB_BUCKET_LOC): Removed.
1788 (scan_weak_hashtables): Rewrote its use with SCM_HASHTAB_BUCKET
1789 and SCM_SET_HASHTAB_BUCKET.
1790
1791 * print.h, print.c (scm_print_state, SCM_PRINT_STATE_LAYOUT):
1792 Removed ref_stack field.
1793 (PSTATE_STACK_REF, PSTATE_STACK_SET): New, for accessing the stack
1794 of a print state. Use them everywhere instead of ref_stack.
1795
1796 * srfi-4.h (scm_uniform_element_size): Deprecated for real.
1797
1798 * srfi-4.c: Include deprecation.h.
1799
1800 * vectors.h, vectors.c, unif.h, unif.c, deprecated.h,
1801 deprecated.c, eq.c
1802 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Removed.
1803 (scm_vector_elements, scm_vector_writable_elements,
1804 scm_generalized_vector_get_handle): Moved to vectors.[hc] from
1805 unif.[hc].
1806 (SCM_SIMPLE_VECTOR_LOC): Removed.
1807 (SCM_VECTOR_MAX_LENGTH, SCM_VECTOR_LENGTH, SCM_VELTS,
1808 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET,
1809 scm_vector_equal_p): Moved from vectors.[hc] to deprecated.[hc].
1810 (scm_vector_equal_p, scm_i_vector_equal_p): Renamed former to
1811 latter. Changed use in eq.c.
1812
1813 2005-01-07 Marius Vollmer <mvo@zagadka.de>
1814
1815 Make the uniform vector routines also deal with one dimensional
1816 arrays.
1817
1818 * srfi-4.c (SCM_IS_UVEC): New, use it instead of
1819 SCM_SMOB_PREDICATE in this file.
1820 (is_uvec): Also recognize one-dimensional uniform numeric arrays
1821 of the right type.
1822 (scm_is_uniform_vector): Likewise.
1823 (uvec_fast_ref): Made BASE param const.
1824 (uvec_writable_elements, uvec_elements): New.
1825 (uvec_to_list, uvec_ref, uvec_set_x, uvec_length,
1826 scm_c_uniform_vector_length, scm_c_uniform_vector_ref,
1827 scm_c_uniform_set_x): Use them to also deal with one-dimensional
1828 arrays.
1829 (scm_uniform_vector_ref, scm_uniform_vector_set_x): Deprecate old
1830 argument convention.
1831 (scm_uniform_vector_to_list): Let uvec_to_list do all the
1832 checking.
1833 (scm_uniform_vector_length): Use uvec_length.
1834
1835 2005-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1836
1837 * srfi-4.h, srfi-4.c (scm_c_uniform_vector_element_size,
1838 scm_c_uniform_vector_size): Removed.
1839 (scm_array_handle_uniform_element_size): New.
1840
1841
1842 * unif.h (scm_array_handle_ref, scm_array_handle_set): Changed
1843 type of POS parameter to be signed, positions can be negative.
1844 (scm_array_handle_release): New, changed all uses of
1845 scm_t_array_handle to properly call it.
1846 (scm_vector_get_handle, scm_generalized_vector_get_handle):
1847 Renamed former to latter, changed all uses.
1848
1849 2005-01-05 Marius Vollmer <mvo@zagadka.de>
1850
1851 Updated bitvector routines to also use scm_t_array_handles.
1852
1853 * unif.h (scm_bitvector_elements,
1854 scm_bitvector_writable_elements): Use a scm_t_array_handle and
1855 deliver offset, length and increment to caller. Changed all uses.
1856 (scm_bitvector_release_elements,
1857 scm_frame_bitvector_release_elements,
1858 scm_bitvector_release_writable_elements,
1859 scm_frame_bitvector_release_writable_elements): Removed.
1860 (scm_array_handle_bit_elements,
1861 scm_array_handle_bit_writable_elements,
1862 scm_array_handle_bit_elements_offset): New.
1863 (scm_make_typed_array): The special value for non-initialized
1864 arrays is now SCM_UNSPECIFIED. The old special value SCM_BOOL_F
1865 was a valid value to fill bitvectors with, so it can't really be
1866 specialed out.
1867
1868 2005-01-04 Kevin Ryde <user42@zip.com.au>
1869
1870 * stime.c (scm_strftime): Free t.tm_zone produced by bdtime2c.
1871 Reported by Bill Schottstaedt.
1872
1873 2005-01-02 Marius Vollmer <mvo@zagadka.de>
1874
1875 * sort.c (quicksort): Added INC parameter for non-contigous
1876 vectors.
1877 (quicksort1): New, for contigous vectors. Both functions are
1878 generated from the same code by including "quicksort.i.c".
1879 (scm_restricted_vector_sort_x): Call one of quicksort and
1880 quicksort1, depending on increment of vector.
1881 (scm_sort): Simply call scm_sort_x on a copy of the list or
1882 vector.
1883 (scm_merge_vector_x, scm_merge_vector_step): Changed indices to
1884 size_t, added inc parameter.
1885 (scm_stable_sort_x): Allocate temporary storage as Scheme vector
1886 so that it doesn't leak.
1887 (scm_stable_sort): Simply call scm_stable_sort_x on a copy of the
1888 list or vector.
1889
1890 * ramap.c (scm_array_map_x): Do not try to convert fill value
1891 before filling, any necessary conversion is done while storing.
1892
1893 * gc-card.c (scm_i_sweep_card): Call scm_i_vector_free instead of
1894 doing it inline.
1895
1896 * hashtab.c, hashtab.h (SCM_HASHTABLE_BUCKETS): Removed.
1897 (SCM_HASHTABLE_BUCKET, SCM_HASHTABLE_BUCKET_LOC): New. Replaced
1898 all uses of SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
1899
1900 * tags.h, weaks.c, vports.c, hashtab.c, convert.c, sort.c,
1901 convert.c, convert.h, convert.i.c, deprecated.c, environments.c,
1902 eval.c, filesys.c, fluids.c, gc-mark.c, gh.h, gh_data.c, goops.c,
1903 hash.c, init.c, libguile_la-arrays.loT, modules.c, net_db.c,
1904 objects.c, ports.c, posix.c, print.c, random.c, read.c,
1905 regex-posix.c, scmsigs.c, socket.c, stime.c, symbols.c: Use new
1906 vector elements API or simple vector API, as appropriate. Removed
1907 SCM_HAVE_ARRAYS ifdefery. Replaced all uses of
1908 SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
1909
1910 * srfi-4.h, srfi-4.c,
1911 srfi-4.i.c (scm_array_handle_uniform_elements,
1912 scm_array_handle_uniform_writable_elements,
1913 scm_uniform_vector_elements,
1914 scm_uniform_vector_writable_elements):
1915 (scm_<foo>vector_elements, scm_<foo>vector_writable_elements): Use
1916 scm_t_array_handle, deliver length and increment.
1917 (scm_array_handle_<foo>_elements,
1918 scm_array_handle_<foo>_writable_elements): New.
1919
1920 * gen-scmconfig.h.in (SCM_I_GSC_HAVE_ARRAYS): Removed.
1921 * gen-scmconfig.c: Hard code SCM_HAVE_ARRAYS to "1".
1922
1923 * unif.h, unif.c (scm_t_array_handle, scm_array_get_handle,
1924 scm_array_handle_rank, scm_array_handle_dims, scm_array_handle_ref
1925 scm_array_handle_set, scm_array_handle_elements
1926 scm_array_handle_writable_elements, scm_vector_get_handle): New.
1927 (scm_make_uve, scm_array_prototype, scm_list_to_uniform_array,
1928 scm_dimensions_to_uniform_array): Deprecated for real.
1929 (scm_array_p, scm_i_array_p): Use latter for SCM_DEFINE since
1930 snarfing wont allow a mismatch between C and Scheme arglists.
1931 (scm_make_shared_array, scm_enclose_array): Correctly use
1932 scm_c_generalized_vector_length instead of
1933 scm_uniform_vector_length.
1934
1935 * validate.h (SCM_VALIDATE_VECTOR,
1936 SCM_VALIDATE_VECTOR_OR_DVECTOR): use scm_is_simple_vector instead
1937 of SCM_VECTORP.
1938
1939 * weaks.h, weaks.c: Use new internal weak vector API from
1940 vectors.h.
1941
1942 * Makefile.am (libguile_la_SOURCES, DOT_X_FILES, DOT_DOC_FILES,
1943 EXTRA_libguile_la_SOURCES): Changed ramap.c and unif.c from being
1944 'extra' to being regular sources.
1945 (noinst_HEADERS): Added quicksort.i.c.
1946 * quicksort.i.c: New file.
1947
1948 * vectors.h, vector.c (SCM_VECTORP, SCM_VECTOR_LENGTH, SCM_VELTS,
1949 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET): Deprecated
1950 and reimplemented. Replaced all uses with scm_vector_elements,
1951 scm_vector_writable_elements, or SCM_SIMPLE_VECTOR_*, as
1952 appropriate.
1953 (scm_is_simple_vector, SCM_SIMPLE_VECTOR_LENGTH,
1954 SCM_SIMPLE_VECTOR_REF, SCM_SIMPLE_VECTOR_SET,
1955 SCM_SIMPLE_VECTOR_LOC): New.
1956 (SCM_VECTOR_BASE, SCM_SET_VECTOR_BASE, SCM_VECTOR_MAX_LENGTH,
1957 SCM_MAKE_VECTOR_TAG, SCM_SET_VECTOR_LENGTH,
1958 SCM_VELTS_AS_STACKITEMS, SCM_SETVELTS, SCM_GC_WRITABLE_VELTS):
1959 Removed.
1960 (scm_vector_copy): New.
1961 (scm_vector_elements, scm_vector_writable_elements): Use
1962 scm_t_array_handle, deliver length and increment. Moved to
1963 unif.h. Changed all uses.
1964 (scm_vector_release_elements,
1965 scm_vector_release_writable_elements,
1966 (scm_frame_vector_release_elements,
1967 scm_frame_vector_release_writable_elements): Removed.
1968 (SCM_I_IS_VECTOR, SCM_I_VECTOR_ELTS, SCM_I_VECTOR_WELTS,
1969 SCM_I_VECTOR_LENGTH, scm_i_vector_free): New internal API.
1970 (SCM_I_WVECTP SCM_I_WVECT_LENGTH SCM_I_WVECT_VELTS
1971 SCM_I_WVECT_GC_WVELTS SCM_I_WVECT_TYPE SCM_I_WVECT_GC_CHAIN
1972 SCM_I_SET_WVECT_GC_CHAIN, scm_i_allocate_weak_vector): New, for
1973 weak vectors.
1974
1975 2004-12-29 Marius Vollmer <mvo@zagadka.de>
1976
1977 No longer use creators to specify the type of an array. Creators
1978 expose the fact that arrays are wrapped around vectors, but that
1979 might change.
1980
1981 * srfi-4.h (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector,
1982 scm_i_proc_make_u16vector, scm_i_proc_make_s16vector,
1983 scm_i_proc_make_u32vector, scm_i_proc_make_s32vector,
1984 scm_i_proc_make_u64vector, scm_i_proc_make_s64vector,
1985 scm_i_proc_make_f32vector, scm_i_proc_make_f64vector,
1986 scm_i_proc_make_c32vector, scm_i_proc_make_c64vector,
1987 uvec_proc_vars): Removed.
1988 (scm_i_generalized_vector_creator): Removed.
1989 (scm_i_generalized_vector_type): New.
1990
1991 * unif.h, unif.c (scm_typed_array_p, scm_make_array,
1992 scm_make_typed_array, scm_array_type, scm_list_to_array,
1993 scm_list_to_typed_array, scm_is_array, scm_is_typed_array): New.
1994 (scm_array_creator): Removed.
1995 (scm_array_p): Deprecated second PROT argument.
1996 (scm_dimensions_to_uniform_array, scm_list_to_uniform_array):
1997 Deprecated, reimplemented in terms of scm_make_typed_array and
1998 scm_list_to_typed_array.
1999 (scm_i_proc_make_vector, scm_i_proc_make_string,
2000 scm_i_proc_make_bitvector): Removed.
2001 (type_creator_table, init_type_creator_table, type_to_creator,
2002 make_typed_vector): New.
2003 (scm_i_convert_old_prototype): Removed.
2004 (prototype_to_type): New.
2005 (scm_make_uve): Deprecated, reimplemented using make_typed_vector.
2006 (scm_array_dimensions): Use scm_list_1 instead of scm_cons for
2007 minor added clarity.
2008 (scm_make_shared_array, scm_ra2contig): Use make_typed_vector
2009 instead of scm_make_uve.
2010 (tag_creator_table, scm_i_tag_to_creator): Removed.
2011 (tag_to_type): New.
2012 (scm_i_read_array): Use scm_list_to_typed_array instead of
2013 scm_list_to_uniform_array.
2014
2015 2004-12-27 Marius Vollmer <mvo@zagadka.de>
2016
2017 * unif.h, unif.c (scm_bitvector_elements): Made return value "const".
2018 (scm_bitvector_writable_elements): New.
2019 (scm_bitvector_release, scm_bitvector_release_elements):
2020 Renamed former to latter. Added explicit call to
2021 scm_remember_upto_here_1.
2022 (scm_frame_bitvector_release,
2023 scm_frame_bitvector_release_elements): Renamed former to latter.
2024 (scm_bitvector_release_writable_elements,
2025 scm_bitvector_release_writable_elements): New.
2026 Changed all uses as required by the changes above.
2027
2028 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_uniform_vector_elements,
2029 scm_u8vector_elements, etc): Made return value "const".
2030 (scm_uniform_vector_writable_elements,
2031 scm_u8vector_writable_elements, etc): New.
2032 (scm_uniform_vector_release, scm_uniform_vector_release_elements):
2033 Renamed former to latter. Added explicit call to
2034 scm_remember_upto_here_1.
2035 (scm_frame_uniform_vector_release,
2036 scm_frame_uniform_vector_release_elements): Renamed former to latter.
2037 (scm_uniform_vector_release_writable_elements,
2038 scm_frame_uniform_vector_release_writable_elements): New. Takes
2039 crown of longest identifier yet.
2040 Changed all uses as required by the changes above.
2041
2042 * vectors.h, vectors.c (scm_c_vector_set_x): Make return type
2043 void.
2044 (scm_is_vector, scm_vector_p, scm_vector_length,
2045 scm_c_vector_length, scm_vector_ref, scm_c_vector_ref,
2046 scm_vector_set_x, scm_c_vector_set_x, scm_vector_to_list,
2047 scm_vector_move_left_x, scm_vector_move_right_x,
2048 scm_vector_fill_x): handle one-dimensional arrays.
2049 (scm_vector_elements, scm_vector_release_elements,
2050 scm_vector_frame_release_elements, scm_vector_writable_elements,
2051 scm_vector_release_writable_elements,
2052 scm_vector_frame_release_writable_elements): New.
2053 (scm_list_to_vector, scm_vector_to_list, scm_vector_fill,
2054 scm_vector_move_left_x, scm_vector_move_right_x): Use them.
2055
2056 * ramap.c (scm_ramapc, scm_raeql): Use
2057 scm_c_generalized_vector_length instead of
2058 scm_uniform_vector_length.
2059 (scm_ramap, rafe): Use scm_c_vector_ref instead of SCM_VELTS. use
2060 scm_c_generalized_vector_ref instead of scm_uniform_vector_ref.
2061
2062 2004-12-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2063
2064 * continuations.h, continuations.c (scm_t_contregs): New 'offset'
2065 member for relocating debug frames.
2066 (scm_make_continuation): Set it.
2067
2068 * stacks.c (read_frame, read_frames, scm_make_stack,
2069 scm_last_stack_frame, scm_stack_id): Use the new 'offset' member
2070 of continuations instead of calculating the offset ourselves.
2071 Relocate 'vect' member of scm_t_debug_frame.
2072
2073 2004-12-16 Kevin Ryde <user42@zip.com.au>
2074
2075 * ramap.c (scm_array_map_x): Check for at least one source argument.
2076
2077 2004-12-14 Kevin Ryde <user42@zip.com.au>
2078
2079 * srfi-13.c (string-any, string-every): Use a scheme wrapper around
2080 the C code so for the final call to the predicate procedure is a tail
2081 call, per SRFI-13 spec.
2082
2083 2004-12-10 Kevin Ryde <user42@zip.com.au>
2084
2085 * eq.c (scm_eq_p, scm_eqv_p, scm_equal_p): Update docstrings from
2086 recent revision to the reference manual.
2087
2088 * numbers.c (scm_modulo): Amend fixme comment about negative divisor
2089 with "%", C99 says it's well-defined.
2090
2091 * socket.c (scm_from_ipv6): Just use mpz_import. Don't bother trying
2092 to fit scm_from_ulong_long, since that uses mpz_import anyway. Don't
2093 bother trying to fit scm_from_ulong, not really worth the trouble if
2094 addresses are more than 4 bytes usually.
2095
2096 2004-11-30 Kevin Ryde <user42@zip.com.au>
2097
2098 * gc_os_dep.c (NetBSD): Test __m68k__ and __arm__ as well as m68k and
2099 arm32. Reported by Greg Troxel.
2100
2101 2004-11-14 mvo <mvo@zagadka.de>
2102
2103 * unif.c, unif.h (scm_i_cvref): Made non-static for ramap.c.
2104
2105 * Makefile.am (INCLUDES): It is "@LTDLINCL@", not "@LTDLINC@".
2106
2107 2004-11-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2108
2109 Enclosed arrays are now their own smob. This has been done to
2110 make the code more explicit about them and to prepare for the time
2111 when generalized vectors include arbitrary one-dimensional
2112 arrays. (Uptonow, enclosed arrays have been recognized by their
2113 use of an array as their storage 'vector'. When all generalized
2114 vectors are allowed as storage, including one-dimensional arrays,
2115 this will no longer work.)
2116
2117 * unif.h, unif.c: (scm_tc16_enclosed_array, SCM_ENCLOSED_ARRAYP):
2118 New.
2119 (exactly_one_third, singp): Removed.
2120 (scm_array_p, scm_array_dimensions, scm_shared_array_root,
2121 scm_shared_array_offset, scm_shared_array_increments): Handle
2122 enclosed arrays explicitely.
2123 (scm_array_rank): Likewise. Also, do not return zero for
2124 non-arrays, signal an error instead since arrays with rank zero do
2125 exist.
2126 (scm_i_make_ra): New, for specifying the tag of the new array.
2127 (scm_make_enclosed_array): Use it.
2128 (scm_make_ra): Reimplemented in terms of scm_i_make_ra.
2129 (scm_make_shared_array): Use scm_c_generalized_vector_length
2130 instead of scm_uniform_vector_length.
2131 (scm_array_in_bounds_p): Rewritten to be much cleaner.
2132 (scm_i_cvref): New, doing the job of scm_cvref.
2133 (scm_cvref): Use scm_i_cvref.
2134 (scm_array_ref): Do not accept non-arrays when no indices are
2135 given. Use scm_i_cvref to do the actual access.
2136 ("uniform-array-set1"): Do not register.
2137 (scm_array_set_x, scm_uniform_array_read_x,
2138 scm_uniform_array_write): Handle enclosed arrays explicitly.
2139 (ra2l): Use scm_i_cvref instead of scm_uniform_vector_ref to also
2140 handle enclosed arrays.
2141 (scm_array_to_list): Handle enclosed arrays explicitly.
2142 (rapr1): Removed.
2143 (scm_i_print_array_dimension): Use scm_i_cvref to also handle
2144 enclosed arrays.
2145 (scm_i_print_enclosed_array): New.
2146 (tag_proto_table, tag_creator_table): Renamed former to latter.
2147 Added "a" and "b" for strings and bitvectors, resp.
2148 (scm_i_tag_to_prototype, scm_i_tag_to_creator): Renamed former to
2149 latter. Tag "a" is in the table now, no need to handle it as a
2150 legacy tag.
2151 (scm_raprin1): Just call scm_iprin1.
2152 (scm_array_creator, scm_array_prototype): Handle enclosed arrays
2153 explicitly.
2154 (scm_init_unif): Initialize scm_tc16_enclosed_array smob.
2155 Use scm_i_print_array as printer for scm_tc16_array.
2156
2157 2004-11-10 Marius Vollmer <mvo@zagadka.de>
2158
2159 * ramap.c (cind): Changed second arg to be pointer to long instead
2160 of uniform vector.
2161 (scm_ramapc): Allocate index vector with scm_malloc and not as
2162 uniform vector. Wrap it in a frame so that it gets properly freed.
2163 (scm_array_index_map_x): Likewise.
2164
2165 * unif.c: Changed all uses of scm_array_prototype to
2166 scm_array_creator. (scm_i_get_old_prototype): Signal error when no
2167 prototype is known.
2168 (scm_uniform_array_read_x, scm_uniform_array_write): Reimplemented
2169 in terms of scm_uniform_vector_read_x and
2170 scm_uniform_vector_write, respectively. Strings and
2171 bitvector support has been dropped.
2172
2173 * srfi-4.h, srfi-4.c: Do not include <libguile.h>, include the
2174 needed files directly. Include config.h, <unistd.h> and <io.h>
2175 when available.
2176 (scm_uniform_vector_read_x, scm_uniform_vector_write): New.
2177
2178 2004-11-09 Marius Vollmer <mvo@zagadka.de>
2179
2180 * gh_data.c (gh_uniform_vector_length): Properly use
2181 scm_c_uniform_vector_length instead of scm_uniform_vector_length.
2182
2183 2004-11-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2184
2185 * srfi-4.h (scm_c_uniform_vector_ref, scm_c_uniform_vector_set_x):
2186 New.
2187 (scm_i_uniform_vector_creator): Removed.
2188 (scm_i_generalized_vector_creator): New.
2189 (scm_uniform_vector_length, scm_uniform_element_size): Do not
2190 handle generalized vectors, only uniform numeric vectors.
2191 (alloc_uvec): Do length check here...
2192 (make_uvec): ...but not here.
2193 (coerce_to_uvec): Use new generalized vector functions to handle
2194 all kinds of vectors in one go.
2195
2196 * tags.h (scm_tc7_bvect): Renamed to scm_tc7_unused7, renaming the
2197 remaining scm_tc7_unused tags to get a neatly ordered list.
2198
2199 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c: Do no
2200 longer handle scm_tc7_bvect bitvectors.
2201
2202 * ramap.c: Use the new generalized vector functions to handle all
2203 vector like things.
2204
2205 * vectors.h, vectors.c (scm_is_vector, scm_c_vector_length,
2206 scm_c_vector_ref, scm_c_vector_set_x, scm_generalized_vector_p,
2207 scm_generalized_vector_length, scm_generalized_vector_ref,
2208 scm_generalized_vector_set_x, scm_generalized_vector_to_list,
2209 scm_is_generalized_vector, scm_c_generalized_vector_length,
2210 scm_c_generalized_vector_ref, scm_c_generalized_vector_set_x):
2211 New.
2212
2213 * unif.h, unif.c (scm_bitvector_p, scm_bitvector,
2214 scm_make_bitvector, scm_bitvector_length, scm_bitvector_ref,
2215 scm_bitvector_set_x, scm_list_to_bitvector, scm_bitvector_to_list,
2216 scm_bitvector_fill_x, scm_is_bitvector, scm_c_make_bitvector,
2217 scm_c_bitvector_length, scm_c_bitvector_ref,
2218 scm_c_bitvector_set_x, scm_bitvector_elements,
2219 scm_bitvector_release, scm_frame_bitvector_release,
2220 scm_tc16_bitvector, bitvector_free, bitvector_print,
2221 bitvector_equalp, count_ones, find_first_one): New.
2222 (scm_bit_count, scm_bit_position, scm_bit_set_star_x,
2223 scm_bit_count_star, scm_bit_invert_x, scm_istr2bve): Rewritten
2224 using the new C API for bitvectors and maybe count_ones or
2225 find_first_one, as appropriate.
2226 (SCM_I_MAX_LENGTH, SCM_BITVECTOR_P, SCM_BITVECTOR_BASE,
2227 SCM_SET_BITVECTOR_BASE, SCM_BITVECTOR_MAX_LENGTH,
2228 SCM_BITVECTOR_LENGTH, SCM_MAKE_BITVECTOR_TAG,
2229 SCM_SET_BITVECTOR_LENGTH): Removed. Replaced all uses with the
2230 new functions from above.
2231 (scm_i_proc_make_vector, scm_i_proc_make_string,
2232 scm_i_proc_make_bitvector): Made non-static for use in
2233 scm_i_generalized_vector_creator.
2234 (scm_make_u1vector): Removed, replaced by scm_make_bitvector.
2235 (scm_make_uve): Validate that the created object is a generalized
2236 vector.
2237 (scm_i_legacy_tag): Removed.
2238 (scm_i_print_array): Do it here.
2239 (scm_raprin1): Only print enclosed arrays.
2240
2241 * Makefile.am (DOT_DOC_FILES): Added srfi-4.doc.
2242
2243 2004-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2244
2245 * srfi-4.c (make_uvec): Use SCM_I_SIZE_MAX instead of SIZE_MAX for
2246 added portability.
2247
2248 * chars.c (scm_charnames, scm_charnums): Added "sp" as an alias
2249 for "space". Thanks to Bruce Korb!
2250
2251 * rw.c (scm_read_string_x_partial): Bugfix, apply offset to dest
2252 only after dest has been set. Thanks to Hyper Division!
2253
2254 * gh_data.c (gh_uniform_vector_length): Use
2255 scm_uniform_vector_length instead of SCM_UVECTOR_LENGTH.
2256
2257 2004-11-03 Marius Vollmer <mvo@zagadka.de>
2258
2259 * unif.h (SCM_UVECTOR_BASE, SCM_SET_UVECTOR_BASE,
2260 SCM_UVECTOR_MAXLENGTH, SCM_UVECTOR_LENGTH, SCM_MAKE_UVECTOR_TAG,
2261 SCM_SET_UVECTOR_LENGTH): Removed.
2262
2263 2004-11-02 Marius Vollmer <mvo@zagadka.de>
2264
2265 Mac OS X and OpenBSD compatibility patches from Andreas Vögele.
2266 Thanks!
2267
2268 * backtrace.c (scm_display_backtrace_with_highlights): Join the
2269 first and the second line of the SCM_DEFINE macro call, since old
2270 preprocessors cannot handle definitions that are split into two
2271 lines.
2272
2273 * inline.h (scm_cell, scm_double_cell): Don't use C99 variable
2274 declarations.
2275
2276 * pairs.c (scm_i_chase_pairs): Replace scm_t_bits with
2277 scm_t_uint32 to fix the mismatch between the function declaration
2278 and definition.
2279
2280 * sort.c (quicksort): Don't use C99 variable declarations.
2281
2282 * srfi-4.c (uvec_fast_ref): Avoid a compiler warning by returning
2283 SCM_BOOL_F if no type matches.
2284
2285 * threads.c (thread_print): Cast a pointer to size_t when printing
2286 with scm_uintprint.
2287
2288 * unif.c (scm_i_tag_to_prototype): Make sure that "instead" gets
2289 defined.
2290 (scm_array_prototype): Deprecated.
2291
2292 2004-11-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2293
2294 * srfi-4.h, srfi-4.c (scm_frame_uniform_vector_release): New.
2295 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use it to get
2296 more efficient access to the u32vector.
2297
2298 * tags.h (scm_tc7_llvect, scm_tc7_uvect, scm_tc7_fvect,
2299 scm_tc7_dvect, scm_tc7_cvect, scm_tc7_svect, scm_tc7_byvect,
2300 scm_tc7_ivect): Renamed to scm_tc7_unused_1 to scm_tc7_unused_8.
2301
2302 * validate.h (SCM_VALIDATE_VECTOR_OR_DVECTOR): Accept f64vectors
2303 instead of the old-style dvectors.
2304
2305 * gh_data.c: Use new-style uniform arrays in place of old-style
2306 ones.
2307
2308 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c,
2309 ramap.c, unif.c: Do no longer handle old-style uniform vectors.
2310
2311 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use u32vectors
2312 instead of old-sytle uvectors.
2313
2314 * convert.c, convert.i.c: Rewritten completely, using
2315 scm_any_to_u8vector, etc and other new-style uniform vector
2316 functions.
2317
2318 * random.c (scm_random_solid_sphere_x,
2319 scm_random_hollow_sphere_x): Do not validate vector argument, this
2320 is already done elsewhere.
2321
2322 * srfi-4.h, srfi-4.i.c, srfi-4.c (coerce_to_uvec,
2323 scm_any_to_u8vector, etc): New.
2324 (scm_uniform_element_size, scm_uniform_vector_length): Do no
2325 longer handle old-style uniform vectors.
2326
2327 * read.c (scm_lreadr): Bugfix: include the last bit in the
2328 bit vector.
2329
2330 2004-10-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2331
2332 * unif.h, unif.c (scm_array_creator): New.
2333 (scm_i_get_old_prototype): New.
2334 (scm_array_prototype): use it to return old-style prototype, never
2335 return creators.
2336 (scm_make_uve): Use scm_call_1 instead of scm_call_2 with a second
2337 arg of SCM_UNDEFINED. The latter is wrong.
2338
2339 * unif.h, unif.c (scm_make_u1vector): New, but only temporary.
2340 (make_uve): Removed.
2341 (scm_i_proc_make_vector, scm_i_proc_make_string,
2342 scm_i_proc_make_u1vector): New.
2343 (scm_init_unif): Initialize them.
2344 (scm_i_convert_old_prototype): New.
2345 (scm_make_uve): Use it to get the creator procedure. Removed all
2346 old code that created old-style uniform vectors.
2347 (scm_array_p): Handle generic vectors.
2348 (scm_dimensions_to_uniform_array): Do not fill new array with
2349 prototype when that is a procedure.
2350 (scm_list_to_uniform_array): Also accept a list of lower bounds as
2351 the NDIM argument.
2352 (scm_i_print_array): Print rank for shared or non-zero-origin
2353 vectors.
2354 (tag_proto_table, scm_i_tag_to_prototype, scm_i_read_array): New.
2355 (scm_raprin1): Do not call scm_i_array_print for enclosed arrays,
2356 which I do not understand yet.
2357 (scm_array_prototype): Explicitely handle generic vectors.
2358
2359 * numbers.c, number.h (scm_i_print_complex, icmplx2str): New.
2360 (iflo2str): Use icmplx2str for complex numbers.
2361
2362 * srfi-4.c, srfi-4.h (scm_i_read_homogenous_vector,
2363 scm_i_uniform_vector_prototype): Removed.
2364 (scm_i_uniform_vector_creator): New.
2365 (SCM_UVEC_C32, scm_c32vector, scm_make_c32vector, etc,
2366 SCM_UVEC_C64, scm_c64vector, scm_make_c64vector, etc): New.
2367 Updated all tables and generic functions to support them.
2368 (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector, etc): New.
2369 (scm_init_srfi_4): Initialize them.
2370
2371 * srfi-4.i.c (scm_take_u8vector, etc): use uvec_sizes instead of
2372 sizeof(CTYPE) as explained in the comment.
2373
2374 * read.c (scm_lreadr): Call scm_i_read_array for all characters
2375 following '#' that can start an array. Explicitely disambiguate
2376 'i' and 'e' between introducing numbers and uniform vectors. Do
2377 not call scm_i_read_homogenous_vector, since that is also handled
2378 by scm_i_read_array now.
2379
2380 2004-10-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2381
2382 First cut at integrating uniform vectors from srfi-4 with the rest
2383 of Guile. This change replaces scm_tc7_byvect with a s8 uniform
2384 vector. The plan is to gradually replace one type after the other
2385 until none is left and then to consider general cleanups and
2386 optimizations.
2387
2388 * srfi-4.h, srfi-4.i.c (scm_u8vector_elements, etc): New.
2389
2390 * srfi-4.h, srfi-4.c (scm_uniform_vector_p,
2391 scm_uniform_vector_ref, scm_uniform_vector_set_x,
2392 scm_uniform_vector_to_list, scm_is_uniform_vector,
2393 scm_c_uniform_vector_lengths, scm_c_uniform_vector_size,
2394 scm_uniform_vector_elements, scm_uniform_vector_element_size,
2395 scm_uniform_vector_release): New.
2396 (scm_i_uniform_vector_prototype, scm_i_uniform_vector_tag): New.
2397 (scm_uniform_element_size, scm_uniform_vector_length): Moved here
2398 from unif.h, unif.c and extended to handle both the old and new
2399 uniform vectors.
2400
2401 * tags.h (scm_tc7_byvect): Commented out.
2402
2403 * unif.h, unif.c (scm_uniform_vector_ref, scm_array_ref): Renamed
2404 the former to the latter.
2405 (scm_uniform_vector_length, scm_uniform_element_size): Moved to
2406 srfi-4.h, srfi-4.c.
2407 (scm_make_uve): Call scm_make_s8vector for #\nul prototype.
2408 (scm_array_p, scm_array_rank, scm_array_dimensions,
2409 scm_transpose_array, scm_enclose_array, scm_array_ref, scm_cvref,
2410 scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
2411 scm_array_to_list, scm_array_prototype): Handle srfi-4 uniform
2412 vectors. Removed code for scm_tc7_byvect.
2413 (scm_dimensions_to_uniform_array): Fill array with 0 when
2414 prototype is #\nul.
2415 (scm_i_print_array_dimension, scm_i_legacy_tag,
2416 scm_i_print_array): New.
2417 (scm_raprin1): Call scm_i_print_array for arrays. Removed code
2418 for scm_tc7_byvect.
2419
2420 * ramap.c (scm_ra_matchp, scm_array_fill_int, racp,
2421 scm_array_index_map_x, raeql_1, scm_array_equal_p): Handle srfi-4
2422 uniform vectors. Removed code for scm_tc7_byvect
2423
2424 * print.c (iprin1): Removed code for scm_tc7_byvect.
2425 * objects.c (scm_class_of): Likewise.
2426 * gc-mark.c (scm_gc_mark_dependencies): Likewise.
2427 * gc-card.c (scm_i_sweep_card): Likewise.
2428 * evalext.c (scm_self_evaluating_p): Likewise.
2429 * eq.c (scm_equal_p): Likewise.
2430
2431 * gh_data.c (gh_chars2byvect): Reimplemented with
2432 scm_make_s8vector.
2433 (gh_scm2chars): Handle s8vectors, removed code for scm_tc7_byvect.
2434
2435 * srfi-4.c (take_uvec): New.
2436 (alloc_uvec): Use it.
2437 * srfi-4.h, srfi-4.i.c (scm_take_u8vector, etc): New.
2438
2439 * random.c (vector_scale, vector_scale_x): Renamed former to the
2440 latter, since it modifies its argument.
2441 (vector_scale_x, vector_sum_squares, scm_random_normal_vector_x):
2442 Do not use scm_universal_vector_length for non-uniform vectors.
2443 Use scm_f64vector_elements to access innards of uniform vectors.
2444
2445 * convert.i.c: Convert srfi-4 style uniform vectors when
2446 requested.
2447 * convert.c (scm_c_scm2chars, scm_c_chars2scm,
2448 scm_c_chars2byvect): Use a s8vector instead of a scm_tc7_byvect.
2449
2450 2004-10-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2451
2452 * numbers.h, numbers.c (scm_i_print_double): New.
2453
2454 * srfi-4.c, srfi-4.h, srfi-4.i.c: New files, initially from
2455 ../srfi/ but heavily modified.
2456 * Makefile.am: Add them in all the right places.
2457 * init.c (scm_init_guile_1): Call scm_init_srfi_4.
2458 * read.c (scm_lreadr): Call scm_i_read_homogenous_vector for '#f',
2459 '#u', and '#s'.
2460
2461 * read.h, read.c (scm_i_input_error): Renamed from scm_input_error
2462 and made non-static. Changed all uses.
2463
2464 2004-10-22 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2465
2466 * variable.c, threads.c, struct.c, stackchk.c, smob.c, root.c,
2467 print.c, ports.c, mallocs.c, hooks.c, hashtab.c, fports.c,
2468 guardians.c, filesys.c, coop-pthreads.c, continuations.c: Use
2469 scm_uintprint to print unsigned integers, raw heap words, and
2470 adresses, using a cast to scm_t_bits to turn pointers into
2471 integers.
2472
2473 * unif.c: Include "libguile/print.h".
2474
2475 * numbers.h, numbers.c (SCM_T_INTBUFLEN): Increased to cover
2476 scm_t_intmax values.
2477 (scm_uint2str): New, for scm_t_uintmax.
2478 (scm_iint2str): Argument type changed to scm_t_intmax,
2479 reimplemented in terms of scm_uint2str.
2480
2481 * print.c, print.h (scm_uintprint): New, for printing
2482 scm_t_uintmax values.
2483 (scm_intprint): Argument type changed to scm_t_intmax.
2484
2485 * sort.c (quicksort, scm_merge, scm_merge_list_x,
2486 scm_merge_list_step, scm_merge_vector_step): Inserted SCM_TICKs at
2487 strategic places so that the loops can be interrupted.
2488
2489 * Makefile.am (INCLUDES): Use @LTDLINC@ instead of
2490 "-I$(top_srcdir)/libguile-ltdl".
2491 (libguile_la_LIBADD): Use @LIBLTDL@ instead of
2492 "../libguile-ltdl/libguile-ltdl.a".
2493
2494 * guile.c, dynl.c: Switched to using libltdl directly. Replaced
2495 all references to scm_lt_* with just lt_*. Include <ltdl.h>
2496 instead of <libguile-ltdl.h>.
2497
2498 2004-10-20 Marius Vollmer <mvo@zagadka.de>
2499
2500 * sort.c (quicksort): Copy pivot out of the array while
2501 constructing the partitions; it could get overwritten otherwise.
2502 Because of the ultimate insertion sort, this bug did not cause
2503 quicksort to fail, it just put all the burdon on the insertion
2504 sort and was thus very slow. Thanks to Rolan Orre for reporting
2505 the slowness!
2506
2507 2004-10-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2508
2509 * numbers.c (scm_i_range_error): New.
2510 * conv-integer.i.c, conv-uinteger.i.c: Use it instead of
2511 scm_out_of_range.
2512
2513 * sort.c (scm_restricted_vector_sort_x): Validate startpos <=
2514 endpos. State inclusiveness/exclusiveness of bounds in docstring.
2515
2516 * unif.c (scm_array_p): When no prototype is given, explicitely
2517 test for allowable types, do not simply return true. Thanks to
2518 Roland Orre for reporting this!
2519
2520 * private-gc.h (SCM_DEFAULT_MAX_SEGMENT_SIZE): Increase to 20 Mib.
2521
2522 * gc-segment.c (scm_i_get_new_heap_segment): Limit size of new
2523 segment to scm_max_segment_size.
2524
2525 2004-10-08 Han-Wen Nienhuys <hanwen@xs4all.nl>
2526
2527 * gc.c (scm_igc): put scm_gc_running-- before running hooks.
2528
2529 * inline.h (scm_double_cell): abort if GC running.
2530 (scm_cell): idem.
2531
2532 2004-10-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2533
2534 * error.c (scm_wrong_type_arg): Do not talk about "argument" for
2535 pos == 0.
2536
2537 Keywords no longer store a 'dash symbol'. Instead, they store a
2538 symbol with their real name.
2539
2540 * keywords.h, keywords.c, deprecated.h, deprecated.c
2541 (SCM_KEYWORDP, SCM_KEYWORDSYM): Deprecated and implemented in
2542 terms of scm_is_keyword and scm_keyword_dash_symbol.
2543
2544 * keywords.h, keywords.c, discouraged.h, discouraged.c
2545 (scm_make_keyword_from_dash_symbol, scm_keyword_dash_symbol,
2546 scm_c_make_keyword): Discouraged.
2547
2548 * keywords.h, keywords.c (scm_symbol_to_keyword,
2549 scm_keyword_to_symbol): Implemented in C.
2550 (scm_is_keyword, scm_from_locale_keyword,
2551 scm_from_locale_keywordn): New.
2552
2553 * goops.c: Replaced SCM_KEYWORDP with scm_is_keyword.
2554
2555 * snarf.h (SCM_KEYWORD, SCM_GLOBAL_KEYWORD): Use
2556 scm_from_locale_keyword instead of scm_c_make_keyword.
2557
2558 * keywords.c (scm_symbol_to_keyword): Use SCM_ASSERT_TYPE for a
2559 better error message.
2560
2561 * deprecated.c: Include discouraged.h and keywords.h.
2562
2563 * read.c (scm_lreadr): Simply do (symbol->keyword (read)) after
2564 reading '#:' or ':'. See NEWS for consequences.
2565
2566 2004-09-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2567
2568 * read.c (scm_lreadr): Revert change from 2004-09-22: string
2569 literals are now read-write again (until SCM_STRING_CHARS is
2570 removed).
2571
2572 * strings.c (SCM_STRING_CHARS): Explicitely reject read-only
2573 strings with an error message that blames SCM_STRING_CHARS.
2574
2575 * options.c (change_option_setting): Use scm_car instead of
2576 explicit type check plus SCM_CAR.
2577
2578 * print.h, print.c (SCM_PRINT_HIGHLIGHT_PREFIX,
2579 SCM_PRINT_HIGHLIGHT_SUFFIX): New printer options.
2580 (scm_iprin1): Use them instead of the previoulsy hardcoded
2581 strings.
2582 (scm_init_print): Initialize them.
2583
2584 * backtrace.c (display_frame_expr): Do not remove control
2585 characters from the final string. Print it directly using
2586 scm_display.
2587
2588 * ramap.c (scm_array_equal_p): Include scm_tc7_svect in switch.
2589 Thanks to Roland Orre!
2590
2591 2004-09-29 Kevin Ryde <user42@zip.com.au>
2592
2593 * regex-posix.c (scm_regexp_exec): Correction to last change, should
2594 be whole original string in match struct, not offsetted substring.
2595
2596 2004-09-24 Han-Wen Nienhuys <hanwen@xs4all.nl>
2597
2598 * gc.c (scm_gc_unprotect_object): abort if called during GC.
2599
2600 2004-09-24 Marius Vollmer <mvo@zagadka.de>
2601
2602 * Makefile.am (EXTRA_DIST): Added gettext.h.
2603
2604 * smob.c, smob.h (scm_assert_smob_type): New.
2605
2606 * Makefile.am (guile_CFLAGS, guile_LDFLAGS, libguile_la_CFLAGS):
2607 Include GUILE_CFLAGS.
2608 (libguile_la_LIBADD): Removed THREAD_LIBS_LOCAL, which is unused
2609 now.
2610 (libpath.h): Put GUILE_CFLAGS in the build-info.
2611
2612 2004-09-23 Marius Vollmer <mvo@zagadka.de>
2613
2614 * print.h (scm_print_state): Added highlight_objects.
2615 * print.c (make_print_state, scm_free_print_state): Initialize it
2616 to SCM_EOL.
2617 (scm_iprin1): Wrap output in '{...}' when object is contained in
2618 highlight_objects.
2619
2620 * backtrace.h, backtrace.c (scm_display_backtrace_with_highlights,
2621 scm_backtrace_with_highlights): New. Set highlight_objects of
2622 printstate.
2623
2624 * error.c (scm_error_scm): Document new meaning of data/rest
2625 argument for out-of-range and wrong-type-arg errors.
2626 (scm_out_of_range, scm_out_of_range_pos, scm_wrong_type_arg,
2627 scm_wrong_type_arg_msg): Pass bad_value in rest argument of
2628 exception so that it gets highlighted in the backtrace.
2629 Don't talk about "argument" when not giving a position.
2630
2631 * throw.c (handler_message): The rest argument is the fourth
2632 argument, not everything after the third. Call
2633 scm_display_backtrace_with_highlights, passing the rest argument
2634 when appropriate.
2635
2636 2004-09-22 Marius Vollmer <mvo@zagadka.de>
2637
2638 From Jan Nieuwenhuizen <janneke@gnu.org> and Bruno Haible
2639 <bruno@clisp.org>:
2640
2641 * i18n.c: Handle --disable-nls (thanks Bruno).
2642
2643 * posix.c (scm_init_posix): Add LC_PAPER, LC_NAME, LC_ADDRESS,
2644 LC_TELEPHONE, LC_MEASUREMENT, LC_IDENTIFICATION.
2645
2646 * i18n.c (scm_i_to_lc_category): New name and export. Support all
2647 LC categories.
2648 * posix.c (scm_setlocale): Use it.
2649
2650 * i18n.h, i18n.c (scm_textdomain, scm_bindtextdomain,
2651 scm_bind_textdomain_codeset): Make wrappers similar to C function
2652 they wrap.
2653
2654 * i18n.h: New file.
2655 * i18n.c: New file.
2656 * gettext.h: New file, taken from GNU gettext.
2657 * init.c: Include libguile/i18n.h.
2658 (scm_init_guile_1): Add call to scm_init_i18n().
2659 * Makefile.am (libguile_la_SOURCES): Add i18n.c.
2660 (DOT_X_FILES): Add i18n.x.
2661 (DOT_DOC_FILES): Add i18n.doc.
2662 (libguile_la_LDFLAGS): Add @LTLIBINTL@.
2663 (modinclude_HEADERS): Add i18n.h.
2664
2665 2004-09-22 Marius Vollmer <mvo@zagadka.de>
2666
2667 * gh_list.c: Replaced SCM_CAR, etc with scm_car, etc.
2668
2669 * discouraged.h, tags.h (SCM_CONSP, SCM_NCONSP): Moved to
2670 discouraged.h. Replaced all uses with scm_is_pair.
2671 (SCM_I_CONSP): New name for SCM_CONSP.
2672
2673 * pairs.h, pairs.c (scm_is_pair, scm_is_null, scm_car, scm_cdr,
2674 scm_i_chase_pairs, SCM_I_A_PAT, SCM_I_D_PAT, etc, scm_caar,
2675 scm_cadr, etc): New.
2676 (SCM_NULLP, SCM_NNULLP): Moved to discouraged.h. Replaced all
2677 uses with scm_is_null.
2678
2679 * eval.c (scm_eval, scm_apply, call_cxr_1): Use scm_i_chase_pairs
2680 instead of explicit code.
2681
2682 2004-09-22 Marius Vollmer <mvo@zagadka.de>
2683
2684 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
2685 Reworded logic a bit so that #f is returned immediately when s1 is
2686 too short to contain s2.
2687
2688 * regex-posix.c (scm_regexp_exec): Convert string to
2689 zero-terminated locale string before matching against it.
2690
2691 * strings.h, strings.c (scm_substring_read_only,
2692 scm_c_substring_read_only, scm_i_substring_read_only): New.
2693 (RO_STRING_TAG, IS_RO_STRING): New.
2694 (scm_i_string_writable_chars): Bail on read-only strings.
2695
2696 * read.c (scm_lreadr): use scm_c_substring_read_only for string
2697 literals, thus making them read-only as specified by R5RS.
2698
2699 2004-09-22 Marius Vollmer <mvo@zagadka.de>
2700
2701 * eq.c (scm_equal_p): Allow smobs with different flags to be equal
2702 by testing for smobs before insisting on equal SCM_CELL_TYPES.
2703
2704 2004-09-21 Marius Vollmer <mvo@zagadka.de>
2705
2706 * numbers.h, numbers.c: Include <gmp.h> in numbers.h, not in
2707 numbers.c.
2708 (scm_to_mpz, scm_from_mpz): New.
2709 Thanks to Andreas Vögele!
2710
2711 * read.c (skip_scsh_block_comment): Recognize "!#" everywhere, not
2712 just on a line of its own.
2713
2714 * srfi-13.c (scm_string_any, scm_string_every,
2715 scm_string_tabulate, string_upcase_x, string_down_case_x,
2716 string_titlecase_x, string_reverse_x, scm_string_tokenize): Use
2717 size_t instead of int for indices into strings. Make sure that no
2718 over- or underflow occurs. Thanks to Andreas Vögele!
2719 (scm_xsubstring, scm_string_xcopy_x): Use ints for 'extended'
2720 indices, which can also be negative.
2721
2722 2004-09-20 Marius Vollmer <mvo@zagadka.de>
2723
2724 * gc-mark.c (SCM_MARK_BACKING_STORE): Removed, it was unused.
2725
2726 * threads.c (scm_threads_mark_stacks): Call
2727 SCM_MARK_BACKING_STORE. Also, do not use stack_len local, it was
2728 only used once.
2729
2730 2004-09-13 Jan Nieuwenhuizen <janneke@gnu.org>
2731
2732 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
2733 Bugfix: when subtracting unsigned values, make sure that result
2734 does not wrap.
2735
2736 2004-09-09 Kevin Ryde <user42@zip.com.au>
2737
2738 * filesys.c, stime.c (_POSIX_C_SOURCE): Use this only on hpux, it
2739 causes too many problems elsewhere (glibc, freebsd, mingw). Reported
2740 by Andreas Vögele.
2741
2742 2004-09-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2743
2744 * Makefile.am (EXTRA_libguile_la_SOURCES): Removed "alloca.c".
2745
2746 * eq.c (real_eqv): Pretend that all NaNs are equal.
2747
2748 * numbers.c (scm_integer_expt): Do not accept inexact integers.
2749
2750 2004-09-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2751
2752 * srfi-13.c (scm_string_trim_right, scm_string_xcopy_x): Correctly
2753 use size_t for some locals instead of int.
2754
2755 * read.c (scm_flush_ws): Detect "#!"-style comments here.
2756 (scm_lreadr): Abort on seeing "#!", which should no longer happen.
2757 (skip_scsh_block_comment): Use scm_input_error instead of
2758 scm_misc_error in case of EOF.
2759
2760 2004-09-07 Kevin Ryde <user42@zip.com.au>
2761
2762 * numbers.c (scm_integer_expt): Reject exponent +/-inf.
2763 Bug report by Bill Schottstaedt.
2764
2765 * ports.c (scm_getc, scm_lfwrite): Recognise \a \b and \r for port
2766 column.
2767 * ports.h (SCM_ZEROCOL, SCM_DECCOL): New macros.
2768
2769 * posix.c (scm_access): Update docstring per manual.
2770
2771 * posix.c (scm_nice): Correction to error detection. Reported by
2772 Matthias Koeppe.
2773
2774 * stime.c (scm_current_time, scm_gettimeofday, scm_strptime): Don't
2775 throw error before unlocking mutex with SCM_ALLOW_INTS.
2776
2777 2004-09-06 Kevin Ryde <user42@zip.com.au>
2778
2779 * stime.h (SCM_TIME_UNITS_PER_SECOND): Use sysconf(_SC_CLK_TCK) when
2780 available. This also gets around CLK_TCK being absent when
2781 _GNU_SOURCE and _POSIX_C_SOURCE are defined in stime.c.
2782
2783 2004-09-03 Stefan Jahn <stefan@lkcc.org>
2784
2785 * threads.c (scm_threads_mark_stacks): Fixed local variable
2786 definitions.
2787
2788 * strings.c (scm_i_substring_copy, scm_string_append): Fixed
2789 local variable definitions.
2790
2791 * stime.c (_POSIX_C_SOURCE): Do not define this item on
2792 MinGW32 because it conflicts with its pthread headers.
2793 (scm_mktime): Consider the HAVE_STRUCT_TM_TM_ZONE define.
2794 (scm_strftime): Using scm_from_locale_string() instead of
2795 scm_makfrom0str().
2796
2797 * posix.c (scm_putenv): Fixed typo in the !HAVE_UNSETENV
2798 part.
2799
2800 * numbers.c (scm_init_numbers): Removed check_sanity() call
2801 inside GUILE_DEBUG. The function has been removed somewhen...
2802
2803 * filesys.c (_POSIX_C_SOURCE): Do not define this item on
2804 MinGW32 because it conflicts with its pthread headers.
2805
2806 2004-08-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2807
2808 * strings.c (SCM_STRINGP): Accept all strings.
2809 (SCM_STRING_CHARS): Reject shared substrings here.
2810
2811 * script.c (scm_compile_shell_switches): Added 2003 and 2004 to
2812 the Copyright years.
2813
2814 2004-08-27 Kevin Ryde <user42@zip.com.au>
2815
2816 * socket.c (scm_fill_sockaddr): Use HAVE_STRUCT_SOCKADDR_SIN_LEN and
2817 HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN for sockaddr fields, SIN_LEN and
2818 SIN_LEN6 are not defined on all systems. Reported by Michael Tuexen.
2819
2820 2004-08-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2821
2822 * strings.h, strings.c (scm_i_make_symbol): Added FLAGS parameter.
2823 * symbols.h, symbols.c (SCM_I_F_SYMBOL_UNINTERNED,
2824 scm_i_symbol_is_interned, scm_i_mem2symbol,
2825 scm_i_mem2uninternedsymbol): Use it to store uninternedness flag.
2826
2827 2004-08-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2828
2829 * srfi-13.c: First cut at thread-safeness and proper use of
2830 scm_i_string_chars et al. Copious scm_remember_upto_heres have
2831 been inserted. Made sure that no internal string pointer is used
2832 across a SCM_TICK or a possible GC.
2833
2834 * script.c (scm_compile_shell_switches): Use
2835 scm_from_locale_string instead of scm_makfrom0str.
2836
2837 * srfi-13.c (scm_string_rindex): Export to Scheme, as it has
2838 always been.
2839
2840 2004-08-25 Marius Vollmer <mvo@zagadka.de>
2841
2842 Moved SRFI-13 and SRFI-14 into the core, taking over the role of
2843 strop.c.
2844
2845 * srfi-13.c, srfi-13.h, srfi-14.c, srfi-14.h: New files.
2846 * strop.h, strop.c: Removed, they are now empty.
2847 * Makefile.am: Updated for new and removed files.
2848
2849 * symbols.h, symbols.c (scm_string_ci_to_symbol): Moved here, next
2850 to scm_string_to_symbol.
2851
2852 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
2853 scm_char_whitespace_p, scm_upper_case_p, scm_lower_case_p,
2854 scm_char_is_both_p): Use scm_char_set_contains_p with the proper
2855 charset instead of libc functions.
2856
2857 * strorder.c (scm_string_equal_p, scm_string_ci_equal_p,
2858 scm_string_less_p, scm_string_leq_p, scm_string_gr_p,
2859 scm_string_geq_p, scm_string_ci_less_p, scm_string_ci_leq_p,
2860 scm_string_ci_gr_p, scm_string_ci_geq_p): Use scm_string_eq, etc
2861 instead of explicit code.
2862
2863 * deprecated.c, load.c, posix.c, unif.c, symbols.c: Include
2864 "srfi-13.h" instead of "strop.h".
2865
2866 * init.c (scm_init_guile_1): Call scm_init_srfi_13 and
2867 scm_init_srfi_14. Do not call scm_init_strop.
2868
2869 2004-08-24 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2870
2871 * numbers.c (scm_inf_p): Synced docstring back from manual.
2872
2873 2004-08-22 Marius Vollmer <mvo@zagadka.de>
2874
2875 * strings.c (get_str_buf_start): New helper function.
2876 (scm_i_substring, scm_i_substring_copy, scm_i_substring_shared,
2877 scm_i_string_char, scm_i_string_writable_chars): Use it.
2878 (scm_i_substring_copy): Make START argument optional for C
2879 callers, for upcoming SRFI-13 integration.
2880
2881 2004-08-21 Marius Vollmer <mvo@zagadka.de>
2882
2883 From Richard Todd, Thanks!
2884
2885 * script.c (scm_compile_shell_switches): added '-L' switch to add
2886 to the %load-path.
2887
2888 2004-08-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
2889
2890 * eval.c (unmemoize_exprs): When dropping internal body markers
2891 from the output during unmemoization, also drop those that are not
2892 immediately at the beginning of a body.
2893
2894 2004-08-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2895
2896 * eval.c (scm_lookupcar1): Report "Variable used before given a
2897 value" insetad of an "Unbound" one for variables that are found
2898 but still contain SCM_UNDEFINED.
2899
2900 * posix.c (scm_mkstemp): Correction to the correction, mkstemp
2901 expects a null-terminated string in the locale encoding, but
2902 scm_i_string_writable_chars doesn't give that. Fixed by letting
2903 mkstemp modify a locale version of the tmpl argument and copying
2904 the result back into tmpl.
2905
2906 * strop.c (scm_substring_move_x): Store into str2, not str1.
2907
2908 2004-08-20 Kevin Ryde <user42@zip.com.au>
2909
2910 * posix.c (scm_mkstemp): Correction to new locale_string stuff, need
2911 to modify the input string.
2912
2913 2004-08-19 Marius Vollmer <mvo@zagadka.de>
2914
2915 * deprecated.c (SCM_SYMBOL_CHARS): Cast away const in return.
2916 (SCM_SYMBOL_LENGTH): It's scm_i_symbol_length, not
2917 scm_c_symbol_length.
2918
2919 2004-08-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2920
2921 New string implementation, with copy-on-write strings and
2922 mutation-sharing substrings, and a new internal string API.
2923 Symbols can now share memory with strings.
2924
2925 * tags.h (scm_tc7_stringbuf): New tag.
2926
2927 * strings.h, strings.c: (scm_i_string_chars, scm_i_string_length,
2928 scm_i_string_writable_chars, scm_i_string_stop_writing): New, to
2929 replace SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH. Updated all
2930 uses.
2931 (scm_i_make_string, scm_c_make_string): New, to replace
2932 scm_allocate_string. Updated all uses.
2933 (SCM_STRINGP, SCM_STRING_CHARS, SCM_STRING_UCHARS,
2934 SCM_STRING_LENGTH): Deprecated.
2935 (scm_allocate_string, scm_take_str, scm_take0str, scm_mem2string,
2936 scm_str2string, scm_makfrom0str, scm_makfrom0str_opt):
2937 Discouraged. Replaced all uses with scm_from_locale_string or
2938 similar, as appropriate.
2939 (scm_c_string_length, scm_c_string_ref, scm_c_string_set_x,
2940 scm_c_substring, scm_c_substring_shared, scm_c_substring_copy,
2941 scm_substring_shared, scm_substring_copy): New.
2942
2943 * symbols.c, symbols.h (SCM_SYMBOLP, SCM_SYMBOL_FUNC,
2944 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS,
2945 SCM_SYMBOL_HASH, SCM_SYMBOL_INTERNED_P, scm_mem2symbol,
2946 scm_str2symbol, scm_mem2uninterned_symbol): Discouraged.
2947 (SCM_SYMBOL_LENGTH, SCM_SYMBOL_CHARS, scm_c_symbol2str):
2948 Deprecated.
2949 (SCM_MAKE_SYMBOL_TAG, SCM_SET_SYMBOL_LENGTH, SCM_SET_SYMBOL_CHARS,
2950 SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS): Removed.
2951 (scm_is_symbol, scm_from_locale_symbol, scm_from_locale_symboln):
2952 New, to replace scm_str2symbol and scm_mem2symbol, respectively.
2953 Updated all uses.
2954 (scm_gensym): Generate only the number suffix in the buffer, just
2955 string-append the prefix.
2956
2957 * error.c (scm_memory_error): Do not try to throw, just abort.
2958 Throwing will not work anyway.
2959
2960 * gh.h, gh-data.c (gh_set_substr): Made src const.
2961
2962 * ports.c (scm_i_mode_bits_n): New, for counted strings.
2963 (scm_mode_bits): Use it.
2964 (scm_c_port_for_each): Blocking GC does not seem to work, allocate
2965 a vector normally and fill that instead of consing a list with a
2966 blocked GC.
2967
2968 * read.c (scm_i_casei_streq): New, for counted strings.
2969
2970 * threads.c (gc_section_count): Removed, thread-sleeping can not
2971 be nested.
2972 (scm_i_thread_put_to_sleep): Call scm_i_leave_guile before locking
2973 admin mutex so that we can be put to sleep by other threads while
2974 blocking on that mutex. Lock all the heap mutex of all threads,
2975 including ourselves.
2976 (scm_i_thread_wake_up): Unlock all threads, including ourselves,
2977 call scm_i_enter_guile.
2978 (scm_thread_mark_stacks): Expect all threads to be suspended.
2979
2980 * gc.h, gc.c (scm_i_gc_admin_mutex): New, to protect
2981 scm_gc_mallocated, for now.
2982 (scm_init_storage): Initialize it.
2983 * gc-malloc.c (descrease_mtrigger, increase_mtrigger): Use it.
2984
2985 * gc-mark.c (scm_gc_mark_dependencies): Call scm_i_string_mark,
2986 scm_i_stringbuf_mark and scm_i_symbol_mark, as appropriate.
2987 * gc-card.c (scm_i_sweep_card): Call scm_i_string_free,
2988 scm_i_stringbuf_free and scm_i_symbol_free, as appropriate.
2989
2990 * strop.c (scm_string_copy): Use scm_c_substring to get a
2991 copy-on-write string.
2992
2993 2004-08-18 Kevin Ryde <user42@zip.com.au>
2994
2995 * arbiters.c (FETCH_STORE): New macro.
2996 (SCM_LOCK_VAL, SCM_UNLOCK_VAL): New constants.
2997 (SCM_LOCK_ARB, SCM_UNLOCK_ARB): Remove, effectively absorbed into
2998 scm_try_arbiter and scm_release_arbiter.
2999 (scm_try_arbiter, scm_release_arbiter): Use FETCH_STORE to get xchg
3000 for speed on i386, otherwise using mutex.
3001
3002 * eq.c (scm_equal_p): Remove real==fraction and fraction==real, they
3003 must be #f according to R5RS. (equal? follows eqv?, and for eqv? an
3004 exact and inexact is #f.)
3005
3006 * fports.c (fport_print): Use scm_ttyname instead of ttyname directly,
3007 to get thread safety of scm_ttyname.
3008
3009 * ports.c (ttyname): Remove prototype, unused.
3010
3011 * socket.c (scm_init_socket): Add SOCK_SEQPACKET and SOCK_RDM.
3012 Reported by Michael Tuexen.
3013
3014 2004-08-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3015
3016 * load.c (scm_init_load_path): Do not pass NULL to
3017 scm_to_locale_string, which would happen when GUILE_LOAD_PATH is
3018 not set. Thanks to Bill Schottstaedt.
3019
3020 2004-08-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3021
3022 * socket.c (scm_inet_aton, scm_inet_pton): Convert SCM strings to
3023 locale strings instead of accessing their internals.
3024 (scm_recv, scm_send, scm_recvfrom, scm_sendto): Use
3025 SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH instead of
3026 SCM_STRING_CHARS and SCM_STRING_LENGTH.
3027
3028 * simpos.c (scm_system): Convert SCM strings to locale strings
3029 instead of accessing their internals.
3030
3031 * script.c (scm_compile_shell_switches): Convert version to locale
3032 string before printing it.
3033
3034 * rdelim.c (scm_read_delimited_x): Avoid
3035 SCM_VALIDATE_SUBSTRING_SPEC_COPY and use scm_from_size_t instead
3036 of scm_from_long for the returned number of read characters.
3037
3038 * ioext.c (scm_fdopen): Use scm_i_fdes_to_port together with
3039 scm_i_mode_bits to avoid accessing internals of SCM string from C.
3040
3041 * filesys.c (STRING_SYSCALL, STRING2_SYSCALL): New helper macros.
3042 Use them instead of SCM_SYSCALL when one or two strings need to be
3043 converted into locale strings.
3044 (my_rename): New, gathers platform dependent code for renaming.
3045 (scm_rename): Use it.
3046 (scm_readlink, scm_copy_file): Convert SCM strings to locale
3047 strings instead of accessing their internals.
3048 (scm_basename, scm_dirname): Use SCM_I_STRING_CHARS and
3049 SCM_I_STRING_LENGTH instead of SCM_STRING_CHARS and
3050 SCM_STRING_LENGTH.
3051
3052 * extensions.c (load_extension): Convert lib and init to locale
3053 strings instead of accessing the internals directly.
3054 (scm_c_load_extension): Use scm_from_locale_string instead of
3055 scm_makfrom0str.
3056
3057 * fports.h, fports.c (scm_i_fdes_to_port): New, like
3058 scm_fdes_to_port, but take mode bits directly instead of as a C
3059 string.
3060 (scm_i_fdes_to_port): Implement using above.
3061 (scm_open_file): Use scm_i_fdes_to_port together with
3062 scm_i_mode_bits to avoid accessing internals of SCM string from C.
3063 * vports.c (scm_make_soft_port): Use scm_i_fdes_to_port together
3064 with scm_i_mode_bits to avoid accessing internals of SCM string
3065 from C.
3066
3067 * ports.h (scm_i_mode_bits): New, same as scm_mode_bits but with a
3068 SCM string as argument.
3069
3070 * ports.c (scm_i_void_port): New, like scm_void_port but take mode
3071 bits directly instead of C string.
3072 (scm_void_port): Implement using above.
3073 (scm_sys_make_void_port): Use scm_i_void_port together with
3074 scm_i_mode_bits to avoid accessing internals of SCM string.
3075
3076 * strings.h, strings.c (scm_i_get_substring_spec): New.
3077
3078 * socket.c, rw.c, deprecated.h, validate.h
3079 (SCM_VALIDATE_STRING_COPY): Deprecated. Replaced all uses with
3080 SCM_VALIDATE_STRING plus SCM_I_STRING_CHARS or
3081 scm_to_locale_string, etc.
3082 (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Deprecated. Replaced as
3083 above, plus scm_i_get_substring_spec.
3084
3085 * regex-posix.c, read.c, random.c, ramap.c, print.c, numbers.c,
3086 hash.c, gc.c, gc-card.c, convert.i.c, backtrace.c, strop.c,
3087 strorder.c, strports.c, struct.c, symbols.c, unif.c, ports.c: Use
3088 SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_STRING_LENGTH
3089 instead of SCM_STRING_CHARS, SCM_STRING_UCHARS, and
3090 SCM_STRING_LENGTH, respectively. Also, replaced scm_return_first
3091 with more explicit scm_remember_upto_here_1, etc, or introduced
3092 them in the first place.
3093
3094 * posix.c (WITH_STRING): New helper macro. Use it where one
3095 locale string is needed for a short piece of code.
3096 (STRING_SYSCALL): New helper macro. Use it instead of SCM_SYSCALL
3097 when one locale string is needed.
3098 (scm_mkstemp): Convert tmpl to a locale string.
3099 (scm_putenv): Rewritten to use only C strings.
3100 (scm_setlocale, scm_crpt): Convert argument strings to locale
3101 strings.
3102
3103 2004-08-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3104
3105 * load.c (scm_primitive_load_path): Do not check for absolute
3106 filenames when scm_sys_search_load_path returns false, which will
3107 return absolute filenames unchanged.
3108
3109 2004-08-11 Marius Vollmer <mvo@zagadka.de>
3110
3111 * gc.c, procprop.c (scm_init_storage, scm_stand_in_procs,
3112 scm_stand_in_proc): Use a hastable for scm_stand_in_procs instead
3113 of an alist. Thanks to Matthias Koeppe!
3114
3115 2004-08-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3116
3117 * strings.h, deprecated.h (SCM_STRING_COERCE_0TERMINATION_X):
3118 Moved from string.h to deprecated.h.
3119
3120 * deprecated.c, deprecated.h (SCM_CHARS, SCM_LENGTH): Removed.
3121
3122 * strings.h, strings.c (SCM_MAKE_STRING_TAG): Renamed to
3123 SCM_I_MAKE_STRING_TAG, changed all uses.
3124 (SCM_STRING_CHARS, SCM_STRING_UCHARS, SCM_STRING_LENGTH): Renamed
3125 to SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_LENGTH
3126 respectively. For a short time, the old names are still there as
3127 aliases. Not all uses have been changed yet, but the ones in
3128 strings.c have.
3129 (SCM_STRING_MAX_LEN): Do not hardcode to 24 bits, compute from
3130 SCM_T_BITS_MAX.
3131 (scm_is_string, scm_from_locale_string, scm_from_locale_stringn,
3132 scm_take_locale_string, scm_take_locale_stringn,
3133 scm_to_locale_string, scm_to_locale_stringn,
3134 scm_to_locale_stringbuf): New.
3135 (scm_c_string2str, scm_c_substring2str): Deprecated by moving to
3136 deprecated.[hc]. Implemented in terms of the new functions above.
3137 (scm_take_str, scm_take0str, scm_mem2string, scm_str2string,
3138 scm_makfrom0str): Reimplemented in terms of the new functions from
3139 above. They will be discouraged shortly.
3140 (scm_substring): Do not use scm_mem2string.
3141 (scm_i_allocate_string_pointers, scm_i_free_string_pointers): New,
3142 to replace similar code from posix.c, simpos.c, and dynl.c.
3143 (scm_string_append): Use memcpy instead of explicit loop. Do not
3144 use register keyword. Use plain 'char' instead of 'unsigned
3145 char'.
3146
3147 * strports.c (scm_mkstrport): Use SCM_I_STRING_UCHARS instead of
3148 SCM_STRING_UCHARS. Use SCM_I_STRINGP instead of SCM_STRINGP.
3149
3150 * strop.c (scm_i_index): Replaced SCM_STRINGP, SCM_STRING_CHARS,
3151 and SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
3152 SCM_I_STRING_LENGTH, respectively. Pass string object directly,
3153 not as a pointer. Use scm_remember_upto_here_1 to protect it.
3154
3155 * read.c (scm_input_error): Use a SCM value for 'fn', not a C
3156 string. This avoids a conversion round-trip.
3157
3158 * gh_data.c: Replaced SCM_STRINGP, SCM_STRING_CHARS, and
3159 SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
3160 SCM_I_STRING_LENGTH, respectively.
3161 (gh_scm2newstr): Implement in terms of scm_to_locale_string.
3162
3163 * environments.c: Instead calling scm_puts on the SCM_STRING_CHARS
3164 of a string, call scm_display on the string itself.
3165
3166 * dynwind.c, dynwind.h (scm_frame_free): New.
3167
3168 * stime.c, socket.c, simpos.c, procs.c, posix.c, ports.c,
3169 net_db.c, fports.c, filesys.c, eval.c, deprecation.c, dynl.c:
3170 Replaced uses of SCM_STRING_CHARS with proper uses of
3171 scm_to_locale_string. Replaced SCM_STRINGP with scm_is_string.
3172 Replaced scm_mem2string with scm_from_locale_string.
3173
3174 * simpos.c, posix.c (allocate_string_pointers, environ_list_to_c):
3175 Removed, replaced all uses with scm_i_allocate_string_pointers.
3176
3177 * load.h, load.c (scm_internal_parse_path): Removed.
3178 (scm_parse_path): Use scm_string_split to do the work.
3179 (scm_init_load_path): Use scm_parse_path instead of
3180 scm_internal_parse_path.
3181 (scm_search_path): Rewritten string handling part of the code in
3182 terms of scm_to_locale_stringbuf and so that it is thread safe.
3183
3184 * error.c (scm_error_scm): Throw directly instead of calling
3185 scm_error, this avoids the back and forth conversion of SUBR and
3186 MESSAGE and also plugs a memory leak.
3187 (scm_error): Call scm_error_scm.
3188
3189 * backtrace.c: Replaced SCM_STRINGP with scm_is_string.
3190 (display_header): Print FNAME when it is true, not
3191 merely when it is a string.
3192
3193 * strings.h (SCM_SET_STRING_LENGTH, SCM_SET_STRING_CHARS): Removed
3194 unceremoniously. They were unused by Guile itself, and external
3195 use should stop immediately.
3196
3197
3198 2004-08-10 Marius Vollmer <mvo@zagadka.de>
3199
3200 * numbers.h, number.c, deprecated.h, deprecated.c (scm_round,
3201 scm_truncate): Renamed to scm_c_round and scm_c_truncate;
3202 deprecated versions installed in deprecated.h and deprecated.c.
3203 Changed all uses.
3204
3205 2004-08-06 Rob Browning <rlb@defaultvalue.org>
3206
3207 * net_db.c (scm_resolv_error): don't cause an exception while
3208 trying to throw an exception -- call scm_misc_error with correct
3209 arguments. The previous arguments needed a format escape that
3210 wasn't in any of the format strings.
3211
3212 2004-08-06 Kevin Ryde <user42@zip.com.au>
3213
3214 * ramap.c (scm_array_fill_x): For byvect char fill, force signed char
3215 so as not to depend on signedness of plain char. For byvect range
3216 check, throw out-of-range rather than wrong-type-arg.
3217
3218 * unif.c (scm_uniform_vector_ref, scm_array_set_x): For byvect, force
3219 signed byte range checks by using scm_to_schar and scm_from_schar,
3220 don't want to depend on signedness of C char.
3221
3222 2004-08-05 Kevin Ryde <user42@zip.com.au>
3223
3224 * arbiters.c (scm_try_arbiter): Use scm_i_misc_mutex instead of
3225 SCM_DEFER_INTS.
3226 (scm_release_arbiter): Use scm_i_misc_mutex so return value can be
3227 guaranteed if multiple threads compete to unlock.
3228 Update docstrings per doc/ref/api-scheduling.texi.
3229
3230 * filesys.c (scm_copy_file): Use fstat on the input fd rather than
3231 stat on the filename, to be certain a file rename can't mean we get
3232 info on one filesystem object but open another. This fstat usage is
3233 similar to Emacs copy-file.
3234
3235 * posix.c (scm_setgroups): Enhance docstring, per doc/ref/posix.texi.
3236
3237 * simpos.c (scm_system_star): Change scm_from_long to scm_from_int on
3238 SIGINT and SIGQUIT, since those values are ints.
3239
3240 2004-08-03 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3241
3242 * num2integral.i.c, num2float.i.c: Removed.
3243 * Makefile.am (noinst_HEADERS): Updated.
3244
3245 * numbers.h. numbers.c (scm_make_ratio): Renamed to
3246 scm_i_make_ratio and made static, replaced uses with scm_divide.
3247 (scm_complex_p): New, export as "complex?" to Scheme.
3248 (scm_number_p): Export as "number?" to Scheme.
3249 (scm_is_complex, scm_is_number): New.
3250 (scm_c_make_rectangular, scm_c_make_polar): New.
3251 (scm_make_rectangular, scm_make_polar): Use above.
3252 (scm_c_real_part, scm_c_imag_part, scm_c_magnitude, scm_c_angle):
3253 New.
3254 (scm_make_complex): Discouraged by moving to discouraged.h and
3255 discouraged.c. Replaced all uses with scm_c_make_rectangular.
3256
3257 * discouraged.h, discouraged.c, numbers.c, numbers.h
3258 (scm_is_rational): New.
3259 (scm_i_short2big, scm_i_int2big, scm_i_uint2big, scm_i_size2big,
3260 scm_i_ptrdiff2big, scm_i_long_long2big, scm_i_ulong_long2big):
3261 Removed prototypes.
3262 (scm_make_real, scm_num2dbl, scm_float2num, scm_double2num):
3263 Discouraged by moving to discouraged.h and discouraged.c.
3264 Replaced all uses with scm_from_double.
3265 (scm_num2float, scm_num2double): Discouraged by moving prototype
3266 to discouraged.h and rewriting in terms of scm_to_double.
3267 Replaced all uses with scm_to_double.
3268 (scm_to_double): Do not implement in terms of scm_num2dbl, use
3269 explicit code.
3270 (scm_from_double): Do not implement in terms of scm_make_real, use
3271 explicit code.
3272
3273 2004-08-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3274
3275 * init.c (scm_init_guile_1): Call scm_i_init_discouraged.
3276
3277 * gen-scmconfig.h.in (SCM_I_GSC_ENABLE_DISCOURAGED): New.
3278 * gen-scmconfig.c (SCM_ENABLE_DISCOURAGED): Emit based on above.
3279
3280 * eval.c (SCM_EVALIM, SCM_EVALIM2, SCM_XEVAL, SCM_XEVALCAR):
3281 Renamed to SCM_I_* in order to avoid collisions with the versions
3282 defined in deprecated.h.
3283
3284 * discouraged.h, discouraged.c: New files.
3285
3286 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_EQ_P,
3287 SCM_NEGATE_BOOL, SCM_BOOL, SCM_BOOT_NOT): Promoted from being
3288 deprecated to being discouraged by moving to discouraged.h.
3289
3290 * numbers.h, numbers.c, discouraged.h, discouraged.c
3291 (scm_short2num, scm_ushort2num, scm_int2num, scm_uint2num,
3292 scm_long2num, scm_ulong2num, scm_size2num, scm_ptrdiff2num,
3293 scm_num2short, scm_num2ushort, scm_num2int, scm_num2uint,
3294 scm_num2long, scm_num2ulong, scm_num2size, scm_num2ptrdiff,
3295 scm_long_long2num, scm_ulong_long2num, scm_num2long_long,
3296 scm_num2ulong_long): Discouraged by moving to discouraged.h and
3297 discouraged.c and reimplementing in terms of scm_from_* and
3298 scm_to_*. Changed all uses to the new scm_from_* and scm_to_*
3299 functions.
3300
3301 * numbers.h, numbers.c: Removed GUILE_DEBUG code.
3302 (scm_i_short2big, scm_i_ushort2big, scm_i_int2big, scm_i_uint2big,
3303 scm_i_size2big, scm_i_ptrdiff2big): Removed.
3304 (scm_i_long2big, scm_i_ulong2big): New, explicit definitions.
3305 * conv-integer.i.c, conv-uinteger.i.c: Use them instead of
3306 explicit code.
3307
3308 2004-08-02 Kevin Ryde <user42@zip.com.au>
3309
3310 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Add comments about past
3311 and current usage and migration.
3312
3313 2004-07-31 Kevin Ryde <user42@zip.com.au>
3314
3315 * error.c (scm_strerror): Use scm_i_misc_mutex around strerror since
3316 it's not thread safe.
3317 (scm_syserror): Use scm_strerror rather than SCM_I_STRERROR, to take
3318 advantage of this.
3319 * fports.c (scm_open_file): Use scm_strerror likewise.
3320 * filesys.c (scm_stat, scm_lstat): Ditto.
3321
3322 * filesys.c (scm_copy_file): Avoid fd leak when destination file
3323 cannot be opened.
3324
3325 * symbols.c (scm_gensym): Use scm_i_misc_mutex around gensym_counter
3326 update, for thread safety.
3327 (gensym_counter): Move into scm_gensym which is its only user.
3328 (scm_init_symbols): No need to explicitly initialize gensym_counter.
3329
3330 2004-07-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3331
3332 * numbers.h (scm_to_schar, scm_to_uchar, scm_to_char,
3333 scm_to_short, scm_to_ushort, scm_to_int, scm_to_uint, scm_to_long,
3334 scm_to_ulong, scm_to_long_long, scm_to_ulong_long, scm_to_intmax,
3335 scm_to_uintmax, scm_to_size_t, scm_to_ssize_t scm_from_schar,
3336 scm_from_uchar, scm_from_char, scm_from_short, scm_from_ushort,
3337 scm_from_int, scm_from_uint, scm_from_long, scm_from_ulong,
3338 scm_from_long_long, scm_from_ulong_long, scm_from_intmax,
3339 scm_from_uintmax, scm_from_size_t, scm_from_ssize_t): No longer
3340 defined in terms of scm_to_signed_integer, etc, but in terms of
3341 scm_to_int8, etc.
3342
3343 * gen-scmconfig.c (SCM_SIZEOF_INTMAX, SCM_SIZEOF_SIZE_T): New.
3344
3345 * gen-scmconfig.h.in: Removed SCM_I_GSC_*_LIMITS macros, they are
3346 no longer used.
3347
3348 * __scm.h (SCM_I_UTYPE_MAX, SCM_I_TYPE_MAX, SCM_I_TYPE_MIN,
3349 SCM_I_SIZE_MAX, SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX): New.
3350
3351 * __scm.h, gen-scmconfig.c (SCM_I_LLONG_MAX, SCM_I_LLONG_MIN,
3352 SCM_I_ULLONG_MAX, SCM_T_INT8_MIN, SCM_T_INT8_MAX, SCM_T_UINT8_MAX,
3353 SCM_T_INT16_MIN, SCM_T_INT16_MAX, SCM_T_UINT16_MAX,
3354 SCM_T_INT32_MIN, SCM_T_INT32_MAX, SCM_T_UINT32_MAX,
3355 SCM_T_INT64_MIN, SCM_T_INT64_MAX, SCM_T_UINT64_MAX,
3356 SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, SCM_T_UINTMAX_MAX): Moved
3357 definition into __scm.h, using new SCM_I_TYPE_MIN, etc.
3358
3359 * conv-integer.i.c, conv-uinteger.i.c: New files, used to generate
3360 the functions below.
3361
3362 * Makefile.am (noinst_HEADERS): Added conv-integer.i.c and
3363 conv-uinteger.i.c.
3364
3365 * numbers.c, numbers.h (scm_to_int8, scm_to_uint8, scm_to_int16,
3366 scm_to_uint16, scm_to_int32, scm_to_uint32, scm_to_int64,
3367 scm_to_uint64, scm_from_int8, scm_from_uint8, scm_from_int16,
3368 scm_from_uint16, scm_from_int32, scm_from_uint32, scm_from_int64,
3369 scm_from_uint64): Turned from macros into proper functions.
3370 (scm_to_signed_integer, scm_to_unsigned_integer,
3371 scm_from_signed_integer, scm_from_unsigned_integer): Generate via
3372 conv-integer.i.c and conv-uinteger.i.c, as well.
3373
3374 * number.h (scm_to_ssize_t, scm_to_size_t): Use the new
3375 SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX, and SCM_I_SIZE_MAX macros for
3376 the limits. Those are always defined.
3377
3378 2004-07-29 Kevin Ryde <user42@zip.com.au>
3379
3380 * posix.c (scm_ttyname): Use scm_i_misc_mutex for thread safety.
3381
3382 2004-07-28 Kevin Ryde <user42@zip.com.au>
3383
3384 * posix.c (scm_ctermid): Use an L_ctermid buf on the stack, for thread
3385 safety.
3386
3387 * unif.c (scm_array_set_x): For svect, use scm_num2short for
3388 consistency with other vector types and to get arg and func name into
3389 error message.
3390
3391 2004-07-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3392
3393 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_BOOL):
3394 Reimplement using scm_is_false, scm_is_true, scm_is_bool, and
3395 scm_from_bool, respectively.
3396 (SCM_NINUMP): Added.
3397
3398 * tags.h, deprecated.h (SCM_EQ_P): Deprecated by moving it into
3399 deprecated.h. Replaced all uses with scm_is_eq.
3400
3401 2004-07-24 Kevin Ryde <user42@zip.com.au>
3402
3403 * threads.c, threads.h (scm_i_misc_mutex): New SCM_GLOBAL_MUTEX.
3404 * posix.c (scm_crypt): Use it to protect static data in crypt().
3405
3406 2004-07-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3407
3408 * deprecated.h, deprecated.c, numbers.h (SCM_INUMP, SCM_NINUMP,
3409 SCM_INUM): Deprecated by renaming them to SCM_I_INUMP,
3410 SCM_I_NINUMP and SCM_I_INUM, respectively and adding deprecated
3411 versions to deprecated.h and deprecated.c. Changed all uses to
3412 either use the SCM_I_ variants or scm_is_*, scm_to_*, or
3413 scm_from_*, as appropriate.
3414
3415 * dynwind.c (scm_i_dowinds): Removed unused code that would call
3416 the unexisting scm_cross_dynwind_binding_scope for inums on the
3417 windlist.
3418
3419 2004-07-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3420
3421 * socket.c (ipv6_net_to_num, scm_from_ipv6): Renamed
3422 ipv6_net_to_num to scm_from_ipv6, for converting from an IPv6
3423 byte-wise address to a SCM integer. Changed all uses.
3424 (ipv6_num_to_net, scm_to_ipv6): Renamed ipv6_num_to_net to
3425 scm_to_ipv6 and added type and range checking, for converting from
3426 an IPv& byte-wise address to a SCM integer. Changed all uses.
3427 (bignum_in_ipv6_range_p, VALIDATE_INET6): Removed, their function
3428 is now done by scm_to_ipv6.
3429
3430 * numbers.c (scm_to_signed_integer, scm_to_unsigned_integer): dot
3431 not accept inexact integers.
3432
3433 * validate.h, deprecated.h (SCM_VALIDATE_INUM,
3434 SCM_VALIDATE_INUM_COPY, SCM_VALIDATE_BIGINT,
3435 SCM_VALIDATE_INUM_MIN, SCM_VALIDATE_INUM_MIN_COPY,
3436 SCM_VALIDATE_INUM_MIN_DEF_COPY,SCM_VALIDATE_INUM_DEF,
3437 SCM_VALIDATE_INUM_DEF_COPY, SCM_VALIDATE_INUM_RANGE,
3438 SCM_VALIDATE_INUM_RANGE_COPY): Deprecated because they make the
3439 fixnum/bignum distinction visible. Changed all uses to
3440 scm_to_size_t or similar.
3441
3442 2004-07-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3443
3444 * cpp_cnvt.awk: Use scm_from_int instead of SCM_MAKINUM.
3445
3446 2004-07-10 Kevin Ryde <user42@zip.com.au>
3447
3448 * hash.c (scm_hashq, scm_hashv, scm_hash): Restrict to size>=1 rather
3449 than size>=0, since 0<=hash<size cannot be satisfied for size==0, and
3450 such a size causes divide-by-zeros in scm_hasher.
3451
3452 * regex-posix.c (scm_make_regexp): Free rx on error, to avoid memory
3453 leak.
3454
3455 2004-07-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3456
3457 * numbers.c (scm_is_signed_integer, scm_is_unsigned_integer):
3458 Rewritten using the same logic as scm_to_signed_integer and
3459 scm_to_unsigned_integer, respectively, which is better(tm). Also,
3460 use CHAR_BIT instead of hardcoding 8.
3461 (LLONG_MIN, LLONG_MAX, ULLONG_MAX): Removed and used
3462 SCM_I_LLONG_MIN etc. instead.
3463
3464 * numbers.h (SCM_MAKINUM, SCM_I_MAKINUM): Renamed SCM_MAKINUM to
3465 SCM_I_MAKINUM and changed all uses.
3466 * deprecated.h, deprecated.c (SCM_MAKINUM): Newly deprecated.
3467
3468 * gen-scmconfig.c (SCM_I_LLONG_MIN, SCM_I_LLONG_MAX,
3469 SCM_I_ULLONG_MAX): Instead of hard-coding the numbers, compute
3470 them by assuming twos-complement.
3471
3472 2004-07-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3473
3474 * gen-scmconfig.h.in: Added all the new SCM_I_GSC_*_LIMITS that
3475 configure now produces.
3476 * gen-scmconfig.c: Use them to output SCM_T_INT8_MIN, etc
3477 definitions, giving the limits of the integer types defined by
3478 Guile. Also, output a hard coded SCM_I_LLONG_MIN, etc since
3479 LLONG_MIN or LONG_LONG_MIN is hard to get at.
3480
3481 * numbers.h (scm_to_short, scm_to_ushort): It's SHRT_MIN, etc, not
3482 SHORT_MIN.
3483 (scm_to_size_t): Use SIZE_MAX instead of cooking our own.
3484 (scm_to_long_long, scm_to_ulong_long, scm_to_int8, scm_to_uint8,
3485 scm_to_int16, scm_to_uint16, scm_to_int32, scm_to_uint32,
3486 scm_to_int64, scm_to_uint64, scm_to_intmax, scm_to_uintmax,
3487 scm_from_long_long, scm_from_ulong_long, scm_from_int8,
3488 scm_from_uint8, scm_from_int16, scm_from_uint16, scm_from_int32,
3489 scm_from_uint32, scm_from_int64, scm_from_uint64, scm_from_intmax,
3490 scm_from_uintmax): New.
3491
3492 2004-07-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3493
3494 * tags.h (scm_is_eq): New.
3495
3496 * deprecated.h, boolean.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOL,
3497 SCM_NEGATE_BOOL, SCM_BOOLP): Deprecated by moving into
3498 "deprecated.h". Replaced all uses with scm_is_false, scm_is_true,
3499 scm_from_bool, and scm_is_bool, respectively.
3500
3501 * boolean.h (scm_is_bool): Fix bug in prototype.
3502 (scm_from_bool): The argument is "x" not "f", stupid.
3503
3504 * boolean.c (scm_is_bool): Fix typo.
3505
3506 * numbers.h, numbers.c (scm_is_integer, scm_is_signed_integer,
3507 scm_is_unsigned_integer, scm_to_signed_integer,
3508 scm_to_unsigned_integer, scm_to_schar, scm_to_uchar, scm_to_char,
3509 scm_to_short, scm_to_ushort, scm_to_long, scm_to_ulong,
3510 scm_to_size_t, scm_to_ssize_t, scm_from_schar, scm_from_uchar,
3511 scm_from_char, scm_from_short, scm_from_ushort, scm_from_int,
3512 scm_from_uint, scm_from_long, scm_from_ulong, scm_from_size_t,
3513 scm_from_ssize_t, scm_is_real, scm_to_double, scm_from_double):
3514 New.
3515
3516 2004-07-05 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3517
3518 * boolean.h, boolean.c (scm_is_true, scm_is_false, scm_from_bool,
3519 scm_to_bool): New.
3520
3521 2004-06-27 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3522
3523 * backtrace.c (display_expression, display_frame): Call
3524 scm_i_unmemoize_expr for unmemoizing a memoized object holding a
3525 single memoized expression.
3526
3527 * debug.c (memoized_print): Don't try to unmemoize the memoized
3528 object, since we can't know whether it holds a single expression
3529 or a body.
3530
3531 (scm_mem_to_proc): Removed check for lambda expression, since it
3532 was moot anyway. Whoever uses these functions for debugging
3533 purposes should know what they do: Creating invalid memoized code
3534 will cause crashes, independent of whether this check is present
3535 or not.
3536
3537 (scm_proc_to_mem): Take the closure's code as it is and don't
3538 append a SCM_IM_LAMBDA isym. To allow easier debugging, the
3539 memoized code should not be modified.
3540
3541 * debug.[ch] (scm_unmemoize, scm_i_unmemoize_expr): Removed
3542 scm_unmemoize from public use, but made scm_i_unmemoize_expr
3543 available as a guile internal function instead. However,
3544 scm_i_unmemoize_expr will only work on memoized objects that hold
3545 a single memoized expression. It won't work with bodies.
3546
3547 * debug.c (scm_procedure_source), macros.c (macro_print), print.c
3548 (scm_iprin1): Call scm_i_unmemocopy_body for unmemoizing a body,
3549 i. e. a list of expressions.
3550
3551 * eval.c (unmemoize_exprs): Drop internal body markers from the
3552 output during unmemoization.
3553
3554 * eval.[ch] (scm_unmemocopy, scm_i_unmemocopy_expr,
3555 scm_i_unmemocopy_body): Removed scm_unmemocopy from public use,
3556 but made scm_i_unmemocopy_expr and scm_i_unmemocopy_body available
3557 as guile internal functions instead. scm_i_unmemoize_expr will
3558 only work on a single memoized expression, while
3559 scm_i_unmemocopy_body will only work on bodies.
3560
3561 2004-06-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3562
3563 * eval.c (unmemoize_exprs): Handle semi-memoized code.
3564
3565 (scm_cons_source, scm_primitive_eval): Prefer higher level
3566 predicate SCM_FALSEP over SCM_IMP.
3567
3568 2004-06-15 Rob Browning <rlb@defaultvalue.org>
3569
3570 * script.c (scm_shell_usage): minor phrasing change.
3571
3572 * gc_os_dep.c: update ifdefery for macosx.
3573 (scm_get_stack_base): separate result initialization from
3574 declaration to slience warnings with macosx and hp-ux using gcc
3575 3.3. Thanks to Andreas Vögele.
3576
3577 2004-06-13 Han-Wen Nienhuys <hanwen@xs4all.nl>
3578
3579 * eval.c (unmemoize_exprs): use SCM_CONSP for the loop condition.
3580
3581 2004-06-06 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3582
3583 * list.[ch] (scm_i_finite_list_copy): New internal function to
3584 copy lists that are known to be finite (though not necessarily
3585 proper).
3586
3587 * debug.c (scm_procedure_source): Don't have scm_unmemocopy treat
3588 a closure's argument list like an expression of a body.
3589
3590 * eval.c (unmemoize_expression, unmemoize_exprs, unmemoize_and,
3591 unmemoize_begin, unmemoize_case, unmemoize_cond, unmemoize_delay,
3592 unmemoize_do, unmemoize_if, unmemoize_lambda, unmemoize_let,
3593 unmemoize_letrec, unmemoize_letstar, unmemoize_or,
3594 unmemoize_set_x, unmemoize_apply, unmemoize_atcall_cc,
3595 unmemoize_at_call_with_values, unmemoize_future, sym_atslot_ref,
3596 unmemoize_atslot_ref, sym_atslot_set_x, unmemoize_atslot_set_x,
3597 unmemoize_builtin_macro): New static functions and symbols.
3598
3599 (scm_unmemocopy): Rewritten in terms of the above. scm_unmemocopy
3600 now has a slightly different meaning: The memoized form that is
3601 receives as its argument is now interpreted as a sequence of
3602 expressions from a body.
3603
3604 (unmemocar, scm_unmemocar): Since the whole functionality of
3605 unmemocar and scm_unmemocar is not needed any more, scm_unmemocar
3606 has its old content back and is deprecated, while unmemocar has
3607 been removed.
3608
3609 (SCM_BIT7): Removed.
3610
3611 (CEVAL): For unmemoizing a single expression, call
3612 unmemoize_expression instead of scm_unmemocopy, which now expects
3613 a sequence of body expressions. Eliminated unnecessary empty
3614 environment frame when executing let* forms. Eliminated
3615 unmemoization step from evaluator.
3616
3617 2004-06-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3618
3619 * eval.c (scm_macroexp, macroexp): Renamed scm_macroexp to
3620 macroexp and made static. Added new version of scm_macroexp that
3621 emits a deprecation warning and then calls macroexp.
3622 (scm_m_undefine): Issue deprecation warning.
3623
3624 2004-05-30 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3625
3626 * eval.c (lookup_global_symbol, literal_p, try_macro_lookup):
3627 Modified to make set! work on symbols that represent syntactic
3628 keywords.
3629
3630 2004-05-26 Han-Wen Nienhuys <hanwen@xs4all.nl>
3631
3632 * gc.h (SCM_CELL_OBJECT_LOC): use SCM_GC_CELL_OBJECT to prevent
3633 compound expression as lvalue errors.
3634
3635 2004-05-24 Marius Vollmer <mvo@zagadka.de>
3636
3637 * dynwind.c (winder_mark): Use SCM_PACK to correctly convert the
3638 WINDER_DATA to a SCM.
3639
3640 2004-05-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3641
3642 * goops.c (compute_getters_n_setters, create_standard_classes,
3643 scm_add_slot): Compute closures by calling scm_i_eval_x on a
3644 lambda expression rather than creating them with scm_closure.
3645
3646 2004-05-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3647
3648 * eval.c (s_macro_keyword, scm_m_set_x): Remove checking for
3649 misplaced syntactic keywords. This will not work unless guile's
3650 defmacro feature is deprecated.
3651
3652 (scm_m_case): Fixed a bug that caused the list of labels to grow
3653 with every case form.
3654
3655 2004-05-19 Kevin Ryde <user42@zip.com.au>
3656
3657 * numbers.c (scm_round_number): For inum and big, just return x. For
3658 real, use scm_round for 2^54-1 etc problems covered there.
3659
3660 * numbers.c (trunc): Remove #define to scm_truncate when the C library
3661 doesn't provide trunc. This was for when `truncate' was done as a
3662 scm_tc7_dsubr, no longer required.
3663
3664 * threads.c (scm_threads_mark_stacks) [SCM_STACK_GROWS_UP]: Correction
3665 to stack marking call, two parameters and no cast on t->base.
3666
3667 2004-05-18 Marius Vollmer <mvo@zagadka.de>
3668
3669 * hashtab.c (rehash_after_gc): Bug fix: properly link the
3670 processed hashtables back into the weak_hashtables list. Thanks
3671 to Bill Schottstaedt!
3672
3673 2004-05-16 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3674
3675 * eval.c (unmemoize_quote): New static function.
3676
3677 (scm_m_quote, scm_m_atslot_ref, SCM_CEVAL): Changed the byte code
3678 representation of 'quote' and '@slot-ref' to an improper list.
3679 This reduces execution time, the number of cells used to hold the
3680 memoized code, and thus also reduces garbage collection time.
3681
3682 (scm_unmemocopy): Use unmemoize_quote for quote expressions.
3683
3684 (SCM_CEVAL): Changed macro handling to also work with macros that
3685 return improper lists. Added an assertion, that the code returned
3686 by a macro transformer will not lead to cycles in the memoized
3687 code.
3688
3689 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3690
3691 No functional change, just rearrangements of functions within the
3692 file.
3693
3694 * eval.c (scm_ilookup, scm_unbound_variable_key,
3695 error_unbound_variable, scm_lookupcar1, scm_lookupcar): Moved to
3696 the definitions used for execution, since that's where they will
3697 belong to later.
3698
3699 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3700
3701 * numbers.h (SCM_SLOPPY_FRACTIONP): Removed. It was not used
3702 throughout guile, has not been part of an official release yet,
3703 and the concept of sloppy predicates has never been a good idea.
3704
3705 (SCM_FRACTION_NUMERATOR, SCM_FRACTION_DENOMINATOR,
3706 SCM_FRACTION_SET_NUMERATOR, SCM_FRACTION_SET_DENOMINATOR):
3707 Simplified.
3708
3709 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3710
3711 * throw.c (SETJBJMPBUF, SCM_SETJBDFRAME): Add cast to scm_t_bits
3712 to make explicit what happens.
3713
3714 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3715
3716 * dynl.c (SET_DYNL_HANDLE): Add cast to scm_t_bits to make
3717 explicit what happens.
3718
3719 * guardians.c (TCONC_IN): Use SCM_SET_CELL_OBJECT_x rather than
3720 SCM_SET_CELL_WORD_x when writing scheme objets to cell elements.
3721
3722 2004-05-11 Marius Vollmer <mvo@zagadka.de>
3723
3724 * scmsigs.c (scm_sigaction_for_thread): Validate that the handler
3725 is indeed a procedure when it isn't a number.
3726
3727 2004-05-10 Marius Vollmer <mvo@zagadka.de>
3728
3729 Convert floating point numbers into strings with an arbitrary
3730 radix. Thanks to Richard Todd!
3731
3732 * numbers.c (FLOBUFLEN): Increase so that radix 2 strings will
3733 fit.
3734 (fx): Removed.
3735 (scm_dblprec, fx_per_radix, init_dblprec, init_fx_radix,
3736 number_chars): New, to support variable radices.
3737 (idbl2str): Use above instead of the old base-10 only tables.
3738 (iflo2str): Pass on new RADIX argument to idbl2str.
3739 (scm_number_to_string): Pass radix to iflo2str.
3740 (scm_print_real, scm_print_complex): Explicitly pass radix 10 to
3741 iflo2str.
3742 (scm_init_numbers): Call init_dblprec and init_fx_radix for all
3743 possible radices.
3744
3745 2004-05-10 Kevin Ryde <user42@zip.com.au>
3746
3747 * numbers.c (scm_logbit_p): Correction to test above the end of an
3748 inum. Reported by Jan Konecny.
3749
3750 2004-05-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3751
3752 * gc.h (scm_t_cell): Fields are now of type SCM instead of
3753 scm_t_bits. Updated all users.
3754 (SCM_GC_CARD_SIZE_MASK): Use SCM_GC_SIZEOF_CARD instead of
3755 duplicating the code.
3756 (SCM_CELL_OBJECT_LOC): New.
3757 (SCM_CARLOC, SCM_CDRLOC): Use it instead of SCM_CELL_WORD_LOC.
3758 (SCM_CELL_WORD_LOC): Moved to "deprecated.h".
3759
3760 * smob.h (SCM_SMOB_DATA_2, SCM_SMOB_DATA_3, SCM_SMOB_FLAGS,
3761 SCM_SET_SMOB_DATA_2, SCM_SET_SMOB_DATA_3, SCM_SET_SMOB_FLAGS,
3762 SCM_SMOB_OBJECT, SCM_SMOB_OBJECT_2, SCM_SMOB_OBJECT_3,
3763 SCM_SET_SMOB_OBJECT, SCM_SET_SMOB_OBJECT_2, SCM_SET_SMOB_OBJECT_3,
3764 SCM_SMOB_OBJECT_LOC, SCM_SMOB_OBJECT_2_LOC,
3765 SCM_SMOB_OBJECT_3_LOC): New.
3766 * smob.c (scm_i_set_smob_flags): New function.
3767
3768 * dynl.c, dynwind.c, eval.h, fluids.h, futures.h, hashtab.h,
3769 hooks.h, keywords.h, macros.h, macros.c, mallocs.c, mallocs.h,
3770 random.h, regex-posix.h, root.h, srcprop.h, srcprop.c, threads.h:
3771 Use SCM_SMOB_* instead of SCM_CELL_* as appropriate. Use
3772 SCM_SMOB_FLAGS and SCM_SET_SMOB_FLAGS instead of accessing the
3773 zeroth word directly. Use SCM_SMOB_PREDICATE as appropriate.
3774
3775 * numbers.h (SCM_I_BIG_MPZ): Use SCM_CELL_OBJECT_LOC instead of
3776 taking the address of SCM_CELL_WORD_1, the latter being no longer
3777 an lvalue.
3778
3779 * variable.h (SCM_VARIABLE_LOC): Use SCM_CELL_OBJECT_LOC instead
3780 of casting SCM_CELL_WORD_LOC.
3781
3782 2004-05-02 Kevin Ryde <user42@zip.com.au>
3783
3784 * eval.c (scm_macroexp): Add prototype, since it's not in eval.h under
3785 --disable-deprecated. Reported by Andreas Vögele.
3786
3787 * filesys.c (_POSIX_C_SOURCE): Define to 199506L to get readdir_r (in
3788 particular on HP-UX). Reported by Andreas Vögele.
3789
3790 * list.c (varargs.h): Remove, leave just stdarg.h which is all the
3791 code has support for. Fixes building with AIX cc, which is ansi but
3792 doesn't define __STDC__. Reported by Keith Crane.
3793 (var_start): Remove macro, this variation no longer required.
3794 (scm_list_n): Use va_start directly.
3795
3796 2004-05-01 Kevin Ryde <user42@zip.com.au>
3797
3798 * continuations.c (scm_dynthrow): Use >= instead of SCM_PTR_GE which
3799 is now gone. Reported by Andreas Vögele.
3800
3801 2004-04-28 Kevin Ryde <user42@zip.com.au>
3802
3803 * backtrace.c (display_frame_expr), numbers.c (XDIGIT2UINT,
3804 mem2uinteger, mem2decimal_from_point, mem2ureal): Cast char to int for
3805 ctype.h tests, to avoid warnings from gcc on HP-UX about char as array
3806 subscript. Reported by Andreas Vögele.
3807 Also cast through unsigned char to avoid passing negatives to those
3808 macros if input contains 8-bit values.
3809
3810 * num2integral.i.c (NUM2INTEGRAL): Under non-BIGMPZ_FITSP case,
3811 corrections to range check for signed numbers. Remove
3812 scm_remember_upto_here_1(num) from these checks, since num is used
3813 subsequently anyway.
3814
3815 * num2integral.i.c (NUM2INTEGRAL): Test BIGMPZ_FITSP with "!= 0" to
3816 avoid warning from gcc 3.4. Reported by Hyperdivision.
3817
3818 * numbers.c (scm_bit_extract): Use min instead of MIN.
3819 (MIN): Remove, this conflicts with similar macro defined by limits.h
3820 on HP-UX. Reported by Andreas Vögele.
3821
3822 * stime.c (_POSIX_C_SOURCE): Define to 199506L to get gmtime_r (in
3823 particular on HP-UX). Reported by Andreas Vögele.
3824
3825 * threads.c (scm_threads_mark_stacks): Correction sizet -> size_t.
3826 Reported by Andreas Vögele.
3827
3828 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 25*sizeof(long),
3829 for the benefit of hpux11 where pthread_mutex_t is 88 bytes. Reported
3830 by Andreas Vögele.
3831
3832 2004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3833
3834 * eval.c (s_macro_keyword): New static identifier.
3835
3836 (scm_m_define): Change order to first create binding and
3837 evaluating the expression afterwards.
3838
3839 (scm_m_set_x): Memoize complete set! expression. Only leave
3840 symbols if no binding exists at memoization time. Throw error if
3841 assigning to a syntactic keyword.
3842
3843 (lazy_memoize_variable): New function.
3844
3845 (CEVAL): When execution set!, perform lazy memoization if
3846 unmemoized symbol is detected.
3847
3848 * modules.c (module_variable): Return variables with unbound
3849 value.
3850
3851 * tags.h: Fix comment.
3852
3853 2004-04-25 Kevin Ryde <user42@zip.com.au>
3854
3855 * chars.c (scm_char_upcase, scm_char_downcase, scm_c_upcase,
3856 scm_c_downcase): Use ctype.h toupper and tolower. This will be useful
3857 in 8-bit locales, and ensures consistency with char-upper-case? and
3858 char-lower-case? which already use ctype.h.
3859 (scm_c_upcase_table, scm_c_downcase_table, scm_lowers, scm_uppers):
3860 Remove.
3861 * chars.c, chars.h, init.c (scm_tables_prehistory): Remove.
3862
3863 * socket.c (VALIDATE_INET6): Correction to bignum_in_ipv6_range_p
3864 call. Reported by Hyperdivision.
3865
3866 * threads.c (scm_yield): Correction, actually call scm_thread_yield.
3867 Reported by Hyperdivision.
3868
3869 * unif.c (s_scm_make_uve): Remove unused local variable. Reported by
3870 Hyperdivision.
3871
3872 2004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3873
3874 Hide the implementation of ilocs and isyms in eval.c.
3875
3876 * deprecated.h (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
3877 SCM_ICDRP), eval.c (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
3878 SCM_ICDRP), eval.h (SCM_ICDR, SCM_IFRINC, SCM_IFRAME, SCM_IDIST,
3879 SCM_ICDRP): Deprecated and added to deprecated.h. Moved from
3880 eval.h to eval.c.
3881
3882 * deprecated.c (scm_isymnames), deprecated.h (scm_isymnames,
3883 SCM_ISYMNUM, SCM_ISYMCHARS), eval.c (SCM_ISYMNUM, isymnames,
3884 scm_unmemocopy, CEVAL), print.c (scm_isymnames), tags.h
3885 (SCM_ISYMNUM, scm_isymnames, SCM_ISYMCHARS): Deprecated
3886 scm_isymnames, SCM_ISYMNUM and SCM_ISYMCHARS and added to
3887 deprecated.[hc]. Moved scm_isymnames from print.c to eval.c and
3888 renamed to isymnames. Moved SCM_ISYMNUM from tags.h to eval.c and
3889 renamed to ISYMNUM.
3890
3891 * eval.c (scm_i_print_iloc, scm_i_print_isym), eval.h
3892 (scm_i_print_iloc, scm_i_print_isym), print.c (scm_iprin1):
3893 Extracted printing of ilocs and isyms to guile internal functions
3894 scm_i_print_iloc, scm_i_print_isym of eval.c.
3895
3896 2004-04-22 Kevin Ryde <user42@zip.com.au>
3897
3898 * numbers.c (scm_bit_extract): Use SCM_SRS for signed right shift.
3899
3900 * numbers.c (scm_round): Test for x already an integer, to avoid bad
3901 rounding in x+0.5 when x is a big value already an integer. In
3902 certain hardware rounding cases x+0.5 can give an adjacent integer,
3903 leading to that as the result, when we really just wanted x itself.
3904
3905 2004-04-19 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3906
3907 * eval.c (scm_unmemocopy): Fixed unmemoization of let*.
3908
3909 (deval_args, CEVAL): Minor improvements: Reduced variable scopes,
3910 added const qualifiers, cast intentionally unused expressions to
3911 void for emphasis, improved comment.
3912
3913 2004-04-18 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3914
3915 * tags.h (scm_tags, scm_tc8_tags, scm_tc9_flag, scm_tc8_flag,
3916 scm_tc8_isym): Renamed scm_tags to scm_tc8_tags. Renamed
3917 scm_tc9_flag to scm_tc8_flag. Introduced new identifier
3918 scm_tc8_isym. Defined tc8-tags relative to scm_tc3_imm24.
3919 Defined the tc8-tag for flags to be 0x04, which will mean that
3920 SCM_BOOL_F will also have the value 0x04 instead of 0x013c. Due
3921 to the reduced number of bits and the simpler bit pattern for
3922 SCM_BOOL_F, certain machines may be able to use more efficient
3923 processor instructions to deal with SCM_BOOL_F.
3924
3925 (SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA): Removed. These have
3926 never been defined in a released version, thus no need to
3927 deprecate them.
3928
3929 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Flags now use tc8
3930 instead of tc9 tags.
3931
3932 (SCM_ISYMP, SCM_MAKISYM, SCM_ISYMNUM): Isyms now use tc8 instead
3933 of tc9 tags.
3934
3935 (SCM_MAKSPCSYM): Removed. It is almost impossible that user code
3936 could have used this definition.
3937
3938 (SCM_IM_AND, SCM_IM_BEGIN, SCM_IM_CASE, SCM_IM_COND, SCM_IM_DO,
3939 SCM_IM_IF, SCM_IM_LAMBDA, SCM_IM_LET, SCM_IM_LETSTAR,
3940 SCM_IM_LETREC, SCM_IM_OR, SCM_IM_QUOTE, SCM_IM_SET_X): Now encoded
3941 as isyms, as special isyms don't exist any more.
3942
3943 2004-04-18 Kevin Ryde <user42@zip.com.au>
3944
3945 * filesys.c (scm_readdir): Use readdir_r when available, for thread
3946 safety.
3947
3948 * numbers.c (scm_max, scm_min): For big/real, use SCM_SWAP rather than
3949 explicit swapping code.
3950
3951 2004-04-15 Kevin Ryde <user42@zip.com.au>
3952
3953 * cpp_sig_symbols.in: Add SIGSYS.
3954
3955 * list.c (scm_append_x): Use iterative style, to avoid non-tail
3956 recursion.
3957
3958 * numbers.c (scm_max, scm_min): For inum/frac, frac/inum, big/frac,
3959 frac/big and frac/frac, use scm_less_p for exact comparison.
3960
3961 * numbers.c (scm_gcd): For inum/big, use mpz_gcd_ui by sharing code
3962 with big/inum.
3963
3964 * numbers.c (xisinf): Add a comment about solaris 7 lacking isinf.
3965
3966 2004-04-06 Han-Wen Nienhuys <hanwen@xs4all.nl>
3967
3968 * inline.h (scm_cell): use SCM_GC_CELL_WORD for checking tag.
3969
3970 * chars.h (scm_init_chars): change scm_{upcase,downcase} to
3971 scm_c_{up,down}case.
3972 (SCM_MAKE_CHAR): add (unsigned char) cast. This prevents havoc
3973 when hi-bit ASCII is subjected to SCM_MAKE_CHAR().
3974
3975 2004-04-06 Kevin Ryde <user42@zip.com.au>
3976
3977 * numbers.c (scm_ash): Remove stray "}" in docstring.
3978
3979 * numbers.c (scm_make_ratio): For inum/bignum integer detection, use
3980 x==SCM_MOST_NEGATIVE_FIXNUM explicitly, for clarity and to avoid
3981 calling mpz_cmp_ui in most cases.
3982
3983 * numbers.c (scm_quotient, scm_remainder): In inum/big, use mpz_cmp_ui
3984 for big == abs(most-negative-fixnum) special case.
3985 (abs_most_negative_fixnum): Remove, no longer used.
3986
3987 * scmsigs.c (scm_sigaction_for_thread): Correction to signum range
3988 test, avoids SCM_VECTOR_REF outside bounds of signal_handlers on
3989 calling (sigaction NSIG).
3990
3991 * simpos.c (scm_system_star): Fix execargv memory leak, merge parent
3992 and fork error cases to do this.
3993
3994 2004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3995
3996 * eval.c (CEVAL): Don't distinguish between short and long
3997 instructions when dispatching - just always dispatch on the
3998 instruction code, which is common for short and long instructions.
3999 Further, removed unnecessary goto statements and added comment.
4000
4001 2004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4002
4003 * eval.c (scm_unmemocopy): Don't distinguish between short and
4004 long instructions when dispatching - just always dispatch on the
4005 instruction code, which is common for short and long instructions.
4006 Further, removed unnecessary goto statements, fixed indentation
4007 and replaced SCM_IMP predicates by SCM_NULLP.
4008
4009 2004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4010
4011 * eval.c (scm_lookupcar1, CEVAL): Use SCM_ILOCP instead of
4012 comparison with SCM_ILOC00. In CEVAL, eliminate goto-label
4013 'checkmacro'.
4014
4015 2004-03-31 Kevin Ryde <user42@zip.com.au>
4016
4017 * simpos.c: Include <signal.h> for SIG_IGN and friends.
4018
4019 2004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4020
4021 Introduce scm_debug_mode_p as a replacement for scm_debug_mode and
4022 SCM_DEBUGGINGP:
4023
4024 * debug.h (scm_debug_mode_p, scm_debug_mode, SCM_DEBUGGINGP),
4025 eval.c (scm_debug_mode_p): Deprecated scm_debug_mode and
4026 SCM_DEBUGGINGP. Provided scm_debug_mode_p instead, to have one
4027 single interface that also matches the naming conventions.
4028 Probably scm_debug_mode_p should be part of the private interface
4029 anyway.
4030
4031 * debug.h (scm_debug_mode_p), backtrace.c (display_error_body),
4032 eval.c (SCM_APPLY, scm_trampoline_0, scm_trampoline_1,
4033 scm_trampoline_2): Change uses of scm_debug_mode or SCM_DEBUGGINGP
4034 to scm_debug_mode_p.
4035
4036
4037 Deprecate direct access to scm_ceval, scm_deval and scm_ceval_ptr:
4038
4039 * eval.h (scm_ceval, scm_deval, scm_ceval_ptr), debug.h
4040 (scm_ceval_ptr): Deprecated. Moved declaration of scm_ceval_ptr
4041 from debug.h to eval.h.
4042
4043 * debug.h (SCM_RESET_DEBUG_MODE): Don't access scm_ceval_ptr any
4044 more, just leave it with setting scm_debug_mode_p, which is
4045 equivalent for practical purposes.
4046
4047 * deprecated.h (SCM_XEVAL, SCM_XEVALCAR): Call scm_i_eval_x
4048 instead of *scm_ceval_ptr. Leave all evaluating to scm_i_eval_x.
4049
4050 * gdbint.c (gdb_eval): Call scm_i_eval_x instead of scm_ceval.
4051
4052 * eval.c (ceval, deval, scm_ceval, scm_deval): Made scm_ceval
4053 static and renamed it to ceval throughout. Provide a new exported
4054 but deprecated function scm_ceval as a wrapper for backwards
4055 compatibility. The same is done for the deval/scm_deval pair of
4056 functions.
4057
4058 * eval.c (CEVAL, SCM_CEVAL): Renamed SCM_CEVAL to CEVAL
4059 throughout. Defined CEVAL to ceval or deval, based on compilation
4060 phase.
4061
4062 * eval.c (SCM_XEVAL, SCM_XEVALCAR): Dispatch on scm_debug_mode_p
4063 to ceval and deval instead of calling *scm_ceval_ptr.
4064
4065 * eval.c (dispatching_eval): New deprecated static function.
4066
4067 * eval.c (scm_ceval_ptr): Initialized to dispatching_eval in order
4068 to emulate its old behaviour as closely as possible.
4069
4070
4071 Change the evaluator such that only expressions for which pair? is
4072 true are passed to CEVAL, and such that all other expressions are
4073 evaluated outside of CEVAL:
4074
4075 * eval.c (EVAL): New, provided in analogy to EVALCAR. Evaluate an
4076 expression that is assumed to be memoized already. All but
4077 expressions of the form '(<form> <form> ...)' are evaluated inline
4078 without calling an evaluator.
4079
4080 * eval.c (SCM_XEVAL, SCM_XEVALCAR, EVALCAR): Evaluate all but
4081 expressions of the form '(<form> <form> ...)' inline without
4082 calling an evaluator.
4083
4084 * eval.c (scm_i_eval_x, scm_i_eval, scm_ceval, scm_deval): Handle
4085 the special case of unmemoized symbols passed on the top level.
4086
4087 * eval.c (CEVAL): Change calls to CEVAL to EVAL, except where it
4088 is known that the expression passed to CEVAL is of the form
4089 '(<form> <form> ...)'. Remove handling of the tc7-objects, since
4090 now it is known that the input expression of CEVAL is a pair.
4091
4092 2004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4093
4094 * eval.c (is_self_quoting_p): New static function.
4095
4096 (scm_m_quote): Use is_self_quoting_p.
4097
4098 (copy_tree): Corrected typo in comment.
4099
4100 2004-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
4101
4102 * eval.c (s_scm_copy_tree): idem.
4103
4104 * list.c (s_scm_filter): remove "pointer" from doc string.
4105
4106 * gc.h (SCM_GC_CELL_TYPE): SCM_GC_CELL_TYPE uses SCM_GC_CELL_OBJECT.
4107
4108 * goops.h (SCM_NUMBER_OF_SLOTS): don't SCM_UNPACK the result.
4109
4110 * backtrace.c ("display_backtrace_body"): SCM_PACK before SCM_EQ_P
4111 (display_frame): idem.
4112 (display_backtrace_file_and_line): idem.
4113
4114 * tags.h (SCM_UNPACK): stricter typechecking on SCM_UNPACK
4115 arguments.
4116
4117 2004-03-26 Kevin Ryde <user42@zip.com.au>
4118
4119 * filesys.c (scm_getcwd, scm_readlink): Avoid memory leak on errors.
4120
4121 * numbers.c (scm_modulo): For inum/big and big/big, remove test of
4122 big==0 since that never occurs.
4123
4124 * numbers.c, numbers.h (scm_modulo_expt): Renamed from
4125 scm_modular_expt, matching scheme level name `modulo-expt'.
4126
4127 * numbers.c (scm_modular_expt): Return a negative remainder for a
4128 negative divisor, the same as `modulo' does.
4129
4130 2004-03-26 Eric Hanchrow <offby1@blarg.net>
4131
4132 * numbers.c, numbers.h (scm_modular_expt): New function.
4133
4134 2004-03-25 Kevin Ryde <user42@zip.com.au>
4135
4136 * numbers.c (scm_min, scm_max): Correction to big/real and real/big,
4137 return inexact as required by r5rs.
4138
4139 2004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4140
4141 * eval.c: Separated some definitions relevant for execution from
4142 the memoization part of the file.
4143
4144 (copy_tree): New static function
4145
4146 (scm_copy_tree): Rewritten to fix two kinds or bugs: First, cyclic
4147 structures are detected now and will lead to an exception instead
4148 of forcing guile to run in an endless loop, using up all the
4149 system's memory. Second, arrays in the cdr of an improper list
4150 are now copied. See the new test cases in eval.test.
4151
4152 2004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4153
4154 * posix.c (scm_gethostname): Make sure len is initialised before
4155 it is used. Restructured to (hopefully) represent possible
4156 configurations more clearly in the code. Added unwind handler.
4157
4158 2004-03-23 Kevin Ryde <user42@zip.com.au>
4159
4160 * posix.c (scm_gethostname): Use sysconf(_SC_HOST_NAME_MAX) and/or
4161 MAXHOSTNAMELEN when available.
4162
4163 2004-03-21 Marius Vollmer <mvo@zagadka.de>
4164
4165 * read.c (skip_scsh_block_comment): Also recognize '\r' as a line
4166 terminator. Rewritten the logic as a state machine, I must have
4167 been doing too much VHDL lately...
4168
4169 * eval.c (scm_ceval, scm_deval): Explicitely evaluate ports to
4170 themselves. Thanks to Han-Wen Nienhuys!
4171
4172 * list.c: Changed docstrings so that they no longer talk about
4173 returning 'pointers' to something.
4174
4175 2004-03-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
4176
4177 * gc.c: remove set_debug_cell_accesses! when
4178 SCM_DEBUG_CELL_ACCESSES is not defined. Scheme source code should
4179 use (if (defined? 'set-debug-cell-accesses!) .. ) to switch on
4180 debugging conditionally.
4181
4182 2004-03-21 Kevin Ryde <user42@zip.com.au>
4183
4184 * stime.c (scm_gmtime): Use gmtime_r when available, for thread safety.
4185
4186 2004-03-20 Kevin Ryde <user42@zip.com.au>
4187
4188 * posix.c (scm_gethostname): Preserve errno across free() call.
4189
4190 2004-03-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
4191
4192 * gc-card.c (sweep_card): use SCM_GC_SET_CELL_WORD for setting
4193 free cells.
4194
4195 2004-03-14 Kevin Ryde <user42@zip.com.au>
4196
4197 * stime.c: Define _GNU_SOURCE for strptime prototype from glibc.
4198 (strptime): Use HAVE_DECL_STRPTIME for when to give own prototype.
4199
4200 2004-03-07 Kevin Ryde <user42@zip.com.au>
4201
4202 * stime.c (scm_gmtime): Return bd_time->tm_zone when available, rather
4203 than "GMT" always.
4204 (filltime): Make zname parameter "const".
4205
4206 2004-03-03 Mikael Djurfeldt <mdj@chunk.mit.edu>
4207
4208 * threads.c, threads.h (scm_c_scm2thread): New function.
4209
4210 2004-02-29 Kevin Ryde <user42@zip.com.au>
4211
4212 * numbers.c (guile_ieee_init): Use C99 INFINITY and NAN when
4213 available. Test HAVE_DINFINITY and HAVE_DQNAN for those globals, in
4214 particular don't assume "defined (__alpha__) && ! defined (linux)"
4215 means OSF. Remove "SCO" code, which was not really SCO specific and
4216 which John W. Eaton advises should be long past being needed.
4217
4218 * posix.c (scm_execl, scm_execlp, scm_execle): Avoid memory leak under
4219 error throw.
4220
4221 2004-02-24 Kevin Ryde <user42@zip.com.au>
4222
4223 * posix.c (scm_cuserid): Use a private result buffer, for thread safe.
4224
4225 2004-02-22 Kevin Ryde <user42@zip.com.au>
4226
4227 * numbers.c (scm_max, scm_min): For one arg, dispatch to generic for
4228 complex, same as for two args. (Handle only inum, big, real, frac).
4229
4230 2004-02-21 Kevin Ryde <user42@zip.com.au>
4231
4232 * posix.c (scm_crypt): Use new HAVE_CRYPT.
4233 (<crypt.h>): Remove HAVE_LIBCRYPT condition.
4234 Reported by Andreas Voegele.
4235
4236 2004-02-20 Neil Jerram <neil@ossau.uklinux.net>
4237
4238 * list.c (scm_list_n): Add #if SCM_DEBUG_CELL_ACCESSES_P around
4239 validation.
4240
4241 * read.c (scm_lreadparen): Removed.
4242 (scm_lreadparen1): Renamed scm_i_lreadparen.
4243
4244 2004-02-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
4245
4246 * list.c (scm_list_n): validate non-immediate arguments;
4247 this will catch forgotten a SCM_UNDEFINED.
4248
4249 2004-02-18 Marius Vollmer <mvo@zagadka.de>
4250
4251 * gc.h (scm_gc_cells_collected): Removed duplicated declaration.
4252 Thanks to Bill Schottstaedt!
4253
4254 * socket.h (scm_gethost): Removed prototype it is already in
4255 "net_db.h". Thanks to Bill Schottstaedt!
4256
4257 2004-02-18 Kevin Ryde <user42@zip.com.au>
4258
4259 * num2integral.i.c (INTEGRAL2BIG): WORDS_BIGENDIAN not right for word
4260 order parameter to mpz_import, in fact with just one word there's no
4261 order to worry about at all.
4262
4263 * numbers.c (scm_num_eq_p): For real==frac, complex==frac, frac==real
4264 and frac==complex, make an exact comparison rather than converting
4265 with fraction2double.
4266
4267 * posix.c, putenv.c, stime.c (environ): Use _NSGetEnviron in Darwin
4268 shared library, since environ is not directly available there.
4269
4270 * script.c (scm_shell_usage): Print to stdout for --help, per GNU
4271 standard.
4272
4273 * stime.c (scm_localtime, scm_gmtime, scm_mktime): Provide a default
4274 errno EINVAL in case localtime and gmtime don't set it.
4275 (scm_mktime, scm_strptime): Forcibly use errno EINVAL for our
4276 SCM_SYSERROR, since mktime and strptime generally don't set errno.
4277
4278 2004-02-16 Kevin Ryde <kevin@swox.se>
4279
4280 * gc-malloc.c (scm_done_malloc, scm_done_free): Allow negative sizes,
4281 which were permitted in the past for these.
4282
4283 * num2float.i.c (NUM2FLOAT): Expand isfinite to !xisinf, as per
4284 previous change to numbers.c.
4285
4286 * script.c (scm_shell_usage): Print bug-guile email address, as per
4287 GNU standard. Reported by Han-Wen Nienhuys.
4288
4289 2004-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
4290
4291 * unif.c (scm_make_uve): Removed local variable and simplified
4292 code in order to avoid compiler used uninitialized warnings.
4293
4294 * hashtab.c, hashtab.h (scm_hash_map_to_list): Renamed from
4295 scm_hash_map.
4296 (scm_hash_fold): Use scm_call_3 directly in the call to
4297 scm_internal_hash_fold instead of going via fold_proc (which is
4298 now removed).
4299 (scm_hash_for_each): Use a trampoline +
4300 scm_internal_hash_for_each_handle.
4301 (scm_internal_hash_for_each_handle, scm_hash_for_each_handle): New
4302 functions.
4303
4304 2004-02-12 Kevin Ryde <user42@zip.com.au>
4305
4306 * ports.c (scm_port_line): In docstring, note first line is 0.
4307 (scm_set_port_line_x): In docstring, note first line is 0.
4308 (scm_port_column): In docstring, there's no default to current input
4309 port, and remove shared port-line @defun.
4310 (scm_set_port_column_x): In docstring, there's no default to current
4311 input port, note first column is 0, remove shared set-port-line!
4312 @defun.
4313
4314 * ramap.c (scm_array_fill_x): For fvect and dvect, use scm_num2dbl to
4315 convert args the same way that array-set! does.
4316
4317 * unif.c (scm_make_uve, scm_array_p): Allow fraction 1/3 as prototype
4318 for dvect.
4319 (scm_array_p): Add missing "break"s in switch, fix llvect test look
4320 for "l" not "s", fix dvect to be false for singp(prot) since such a
4321 value is for fvect.
4322 (scm_array_prototype): Return 1/3 for dvect, rather than 0.33..33.
4323 (exactly_one_third): New variable.
4324 (scm_init_unif): Initialize it.
4325
4326 2004-02-10 Neil Jerram <neil@ossau.uklinux.net>
4327
4328 * read.c (scm_read_opts): Change `escaped-parens' to
4329 `elisp-strings'.
4330
4331 2004-02-08 Neil Jerram <neil@ossau.uklinux.net>
4332
4333 * read.c (scm_read_opts): New opts `elisp-vectors' and
4334 `escaped-parens'.
4335 (s_vector): New.
4336 (scm_lreadr): Use scm_lreadparen1 instead of scm_lreadparen. Make
4337 handling of elisp vector syntax dependent on SCM_ENABLE_ELISP and
4338 `elisp-vectors' option instead of SCM_ELISP_READ_EXTENSIONS.
4339 Allow "\(" and "\)" in strings when SCM_ENABLE_ELISP defined and
4340 `escaped-parens' option set.
4341 (scm_read_token): If elisp vector syntax active, disallow [ and ]
4342 in tokens.
4343 (scm_lreadparen): Rewrite as interface to scm_lreadparen1.
4344 (scm_lreadparen1): New.
4345
4346 * read.h: Remove conditionally compiled last arg to
4347 scm_lreadparen.
4348 (SCM_ELISP_VECTORS_P, SCM_ESCAPED_PARENS_P): New.
4349
4350 2004-01-23 Han-Wen Nienhuys <hanwen@xs4all.nl>
4351
4352 * eval.c (m_expand_body): remove stray variable new_body.
4353
4354 2004-01-22 Marius Vollmer <mvo@zagadka.de>
4355
4356 * eval.c (m_expand_body): Rewrite the expression in place (by
4357 overwriting FORMS) also when a letrec is constructed, not only
4358 when no definitions are found. Do not return rewritten expression
4359 to emphasize the in-place rewriting. Changed all users.
4360
4361 2004-01-19 Han-Wen Nienhuys <hanwen@xs4all.nl>
4362
4363 * gc.c: add protected_object_count, a number that is dumped from
4364 gc_stats()
4365
4366 2004-01-11 Marius Vollmer <mvo@zagadka.de>
4367
4368 * dynwind.h, dynwind.c (scm_frame_unwind,
4369 scm_frame_unwind_handler): Renamed and changed all uses.
4370 (scm_frame_rewind, scm_frame_rewind_handler): Likewise.
4371
4372 2004-01-11 Kevin Ryde <user42@zip.com.au>
4373
4374 * unif.c (scm_bit_count, scm_bit_position, s_scm_bit_set_star_x,
4375 s_scm_bit_count_star, s_scm_bit_invert_x): Clarify docstrings, as per
4376 changes made to scheme-compound.texi.
4377
4378 2004-01-10 Marius Vollmer <mvo@zagadka.de>
4379
4380 * print.c (scm_print_symbol_name): Handle #{`foo}#, #{,foo}#,
4381 #{.}#, and all numeric strings specially. Thanks to Paul Jarc!
4382
4383 * guile-snarf.in: Use mkdir to create a unique temporary directory
4384 that we can safely use. Thanks to Stefan Nordhausen!
4385
4386 2004-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4387
4388 * dynwind.h, dynwind.c (scm_i_dowinds): Removed 'explicit'
4389 argument since it is always zero now. Changed all callers.
4390 Removed code for handling fluids.
4391
4392 * fluids.c (scm_c_with_fluids): Use frames instead of adding to
4393 the wind chain explicitely. Use scm_c_with_fluid for the common
4394 case of only one fluid.
4395 (scm_with_fluid): New.
4396 (scm_c_with_fluid): Use frames instead of scm_c_with_fluids.
4397
4398 * fluids.h, fluids.c (scm_frame_fluid): New.
4399 (scm_with_fluid): New.
4400 (scm_i_swap_fluids, scm_i_swap_fluids_reverse): Removed.
4401
4402 * dynwind.c (scm_frame_end): Do not use scm_i_dowinds. Instead,
4403 do the unwinding directly. It is simple enough.
4404
4405 * dynwind.h, dynwind.c: Did the following renamings:
4406 scm_begin_frame -> scm_frame_begin,
4407 scm_end_frame -> scm_frame_end,
4408 scm_on_unwind -> scm_frame_unwind,
4409 scm_on_rewind -> scm_frame_rewind,
4410 scm_on_unwind_with_scm -> scm_frame_unwind_with_scm,
4411 scm_on_rewind_with_scm -> scm_frame_rewind_with_scm.
4412 Changed all uses.
4413
4414 * aync.h, async.c: Did the follwing renamings:
4415 scm_with_blocked_asyncs -> scm_frame_block_asyncs,
4416 scm_with_unblocked_asyncs -> scm_frame_unblock_asyncs.
4417 Changed all uses.
4418
4419 * ports.h, ports.c: Did the follwing renamings:
4420 scm_with_current_input_port -> scm_frame_current_input_port,
4421 scm_with_current_output_port -> scm_frame_current_output_port,
4422 scm_with_current_error_port -> scm_frame_current_error_port.
4423 Changed all uses.
4424
4425 2004-01-07 Kevin Ryde <user42@zip.com.au>
4426
4427 * numbers.c (s_bignum): Remove, not used since gmp bignums.
4428 Reported by Richard Todd.
4429
4430 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 12*sizeof(long),
4431 for the benefit of powerpc-apple-darwin5.5. Reported by Richard Todd.
4432
4433 * unif.c (scm_aind): Test SCM_CONSP rather than !SCM_NULLP while
4434 traversing the args list, fixes segv if an improper list is given.
4435 Reported by Rouben Rostamian.
4436
4437 2004-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4438
4439 * ports.c (swap_ports, scm_with_current_foo_port): Do not allocate
4440 swap_data on stack, use a 'malloc obj'.
4441
4442 * fluids.h, fluids.c (scm_make_initial_fluids, scm_copy_fluids,
4443 scm_swap_fluids, scm_swap_fluids_reverse): Renamed to
4444 scm_i_... since they are internal. Changed all uses.
4445
4446 * dynwind.c (frame_print): Removed, use the default printer.
4447 (WINDER_F_MARK, WINDER_MARK_P, winder_mark): New.
4448 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New. Use above
4449 to protect SCM values.
4450
4451 * dynwind.h (SCM_F_WIND_EXPLICITELY,
4452 SCM_F_WIND_EXPLICITLY): It's "explicitly" not "explicitely", damn.
4453 Changed all uses.
4454 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New.
4455
4456 2004-01-05 Marius Vollmer <mvo@zagadka.de>
4457
4458 * ports.h, ports.c (scm_with_current_input_port,
4459 scm_with_current_output_port, scm_with_current_error_port): New.
4460
4461 * async.h, async.c (scm_with_blocked_asyncs,
4462 scm_with_unblocked_asyncs): New.
4463
4464 2004-01-03 Marius Vollmer <mvo@zagadka.de>
4465
4466 * dynwind.h, scm_dynwind.c (scm_t_frame_flags, scm_t_wind_flags,
4467 scm_begin_frame, scm_end_frame, scm_on_unwind, scm_on_rewind):
4468 New.
4469 (scm_dowinds, scm_i_dowinds): scm_dowinds has been renamed to
4470 scm_i_dowinds and extended to handle frames and to invoke a 'turn'
4471 function when the outermost wind point has been reached. The
4472 latter is used to copy a continuation stack at the right time.
4473 scm_dowinds remains available.
4474 (SCM_GUARDSP, SCM_BEFORE_GUARD, SCM_AFTER_GUARD, SCM_GUARD_DATA,
4475 tc16_guard, guards_print): Removed.
4476 (scm_internal_dynamic_wind): Reimplemented using frames.
4477
4478 * continuations.c (copy_stack): New, do only the stack copying
4479 part of copy_stack_and_call.
4480 (copy_stack_and_call): Copy the stack after unwinding and before
4481 rewinding.
4482 (scm_dynthrow): Do not call scm_dowinds, this is now done by
4483 copy_stack_and_call.
4484
4485 2004-01-04 Kevin Ryde <user42@zip.com.au>
4486
4487 * numbers.c (scm_less_p): Don't convert frac to float for compares,
4488 can give bad results due to rounding.
4489
4490 * stime.c (scm_current_time, scm_gettimeofday): Add a comment about
4491 setzone/restorezone protection for DOS.
4492
4493 2003-12-26 Marius Vollmer <mvo@zagadka.de>
4494
4495 * gen-scmconfig.h.in, gen-scmconfig.c: Arrange for scm_t_intmax
4496 and scm_t_uintmax to be defined in scmconfig.h
4497
4498 2003-12-03 Kevin Ryde <user42@zip.com.au>
4499
4500 * numbers.c (scm_less_p): Remove spurious xisnan from frac+big case.
4501
4502 * numbers.c (scm_make_ratio): Check for numerator equal to
4503 SCM_MOST_NEGATIVE_FIXNUM and bignum denominator the negative of that,
4504 giving integer -1.
4505
4506 * numbers.c (scm_real_part): Return fraction unchanged rather than
4507 converting to flonum.
4508
4509 2003-11-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
4510
4511 * modules.c (module_variable): Fixed (and thus simplified) the
4512 definition of SCM_BOUND_THING_P to reflect the fact that since
4513 after the 1.4 series of guile, obarrays only hold variable
4514 objects.
4515
4516 2003-11-30 Marius Vollmer <mvo@zagadka.de>
4517
4518 * numbers.c (scm_logand): It's "#b...", not "#\b...".
4519
4520 From Paul Jarc:
4521
4522 * read.c (scm_lreadr): Signal an error for invalid escape
4523 sequences in strings. Code cleanups too.
4524
4525 * print.c (scm_iprin1): use \xNN hexadecimal sequences when
4526 writing control characters in strings.
4527
4528 2003-11-21 Marius Vollmer <mvo@zagadka.de>
4529
4530 * ports.c (scm_drain_input): Bug fix: only access the port after
4531 checking that it indeed is one.
4532
4533 2003-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
4534
4535 * eval.c (s_bad_define): New static identifier.
4536
4537 (m_body): Fixed comment.
4538
4539 (scm_m_define): Don't generate memoized code for definitions that
4540 are not on the top level. As a consequence, no memoized code at
4541 all is generated for definitions any more: Top level definitions
4542 are executed immediately during memoization and internal
4543 definitions are handled separately in m_expand_body.
4544
4545 (scm_unmemocopy, unmemocopy): Removed code for unmemoizing
4546 definitions. Consequently, there is no unmemoizing code any more
4547 that might modify the environment. Thus, the old scm_unmemocopy
4548 is removed and the old unmemocopy is renamed to scm_unmemocopy.
4549
4550 (SCM_CEVAL): The SCM_IM_DEFINE keyword can no longer occur in
4551 memoized code. Call EVALCAR for continuations. Prefer !SCM_NULLP
4552 over SCM_NIMP in places, where the argument is known to be part of
4553 a proper list.
4554
4555 2003-11-21 Kevin Ryde <user42@zip.com.au>
4556
4557 * numbers.c (scm_abs): Allocate a new real only for negatives, as done
4558 for bignums.
4559
4560 * numbers.c (scm_bit_extract): Use mpz functions, rearrange inum case
4561 to share some shifting.
4562
4563 * numbers.c (scm_integer_expt): Don't mpz_init after scm_i_clonebig or
4564 scm_i_mkbig, since they do so already. Don't mpz_clear a bignum SCM,
4565 since gc does this.
4566
4567 2003-11-19 Marius Vollmer <mvo@zagadka.de>
4568
4569 * numbers.c (scm_make_ratio): Rewritten to have a simpler
4570 structure. Previously, not all cases with a negative denominator
4571 were covered.
4572
4573 * numbers.c (mem2decimal_from_point): use scm_divide instead of
4574 scm_divide2real when forming the fractional part. This allows
4575 "#e1.2" to yield 6/5.
4576
4577 * numbers.c (scm_i_fraction_equalp): Do not treat the return value
4578 of scm_equal_p as a C boolean, use SCM_FALSEP. Previously, all
4579 fractions were equal to each other regardless of value. Ooops.
4580
4581 * numbers.c (scm_rationalize): Return an inexact result when given
4582 inexact arguments.
4583
4584 * numbers.c (scm_exact_p, scm_inexact_p): Throw error for
4585 non-numbers.
4586
4587 2003-11-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4588
4589 Support for exact fractions from Bill Schottstaedt! Thanks!
4590
4591 * print.c (scm_iprin1): Handle fractions.
4592
4593 * objects.h (scm_class_fraction): New.
4594 * objects.c (scm_class_fraction): New.
4595 (scm_class_of): Handle fractions.
4596
4597 * hash.c (scm_hasher): Handle fractions.
4598
4599 * numbers.c: New code for handling fraction all over the place.
4600 (scm_odd_p, scm_even_p): Handle inexact integers.
4601 (scm_rational_p): New function, same as scm_real_p.
4602 (scm_round_number, scm_truncate_number, scm_ceiling, scm_floor):
4603 New exact functions that replace the inexact 'dsubr'
4604 implementations.
4605 (scm_numerator, scm_denominator): New.
4606
4607 * numbers.h (SCM_NUMP): Recognize fractions.
4608 (SCM_FRACTIONP, SCM_SLOPPY_FRACTIONP, SCM_FRACTION_NUMERATOR,
4609 SCM_FRACTION_DENOMINATOR, SCM_FRACTION_SET_NUMERATOR,
4610 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
4611 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
4612 SCM_FRACTION_REDUCED): New.
4613 (scm_floor, scm_ceiling, scm_truncate_number, scm_round_number):
4614 New prototypes.
4615 (scm_make_ratio, scm_rationalize, scm_numerator, scm_denominator,
4616 scm_rational_p): New prototypes.
4617 (scm_i_dbl2num, scm_i_fraction2double, scm_i_fraction_equalp,
4618 scm_i_print_fraction): New prototypes.
4619
4620 * goops.c (create_standard_classes): Create "<fraction>" class.
4621
4622 * gc-mark.c (scm_gc_mark_dependencies): Handle fractions.
4623
4624 * gc-card.c (scm_i_sweep_card): Include scm_tc16_fraction as a
4625 case in the switch, but do nothing for now.
4626
4627 * eval.c (SCM_CEVAL, SCM_APPLY, call_dsubr_1): Convert fractions
4628 to doubles when calling 'dsubr' functions.
4629
4630 * eq.c (scm_eqv_p, scm_equal_p): Handle fractions.
4631
4632 2003-11-18 Rob Browning <rlb@defaultvalue.org>
4633
4634 * gen-scmconfig.c (main): remove public definition of
4635 SCM_SIZEOF___INT64 and SCM_SIZEOF_UNSIGNED___INT64 and add
4636 direct typedef of long_long and ulong_long inside deprecated block
4637 when appropriate.
4638
4639 * deprecated.h: move long_long and ulong_long definitions to
4640 gen-scmconfig.c so that we don't need to add SCM_SIZEOF___INT64
4641 and SCM_SIZEOF_UNSIGNED___INT64 to the public namespace.
4642
4643 2003-11-17 Marius Vollmer <mvo@zagadka.de>
4644
4645 * hash.c (scm_string_hash): New hashing algorithm that takes the
4646 complete string into account.
4647
4648 * eval.c (scm_m_generalized_set_x): Macroexpand the target when it
4649 is a list. This allows (@ ...) to work with set!.
4650 (scm_m_generalized_set_x): Use ASSERT_SYNTAX_2 instead of
4651 SCM_ASSYNT.
4652
4653 * script.c (scm_compile_shell_switches): Use scm_c_read_string for
4654 the "-e" option instead of scm_str2symbol. This allows things
4655 like (@ ...) to be specified for the entry point.
4656
4657 2003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
4658
4659 * eval.c (scm_m_letstar): Create memoized code in place to
4660 minimize consing.
4661
4662 2003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
4663
4664 * eval.c (s_splicing): Commented and reformulated.
4665
4666 (lookup_global_symbol, lookup_symbol): New static functions.
4667
4668 (s_test, s_bindings, s_duplicate_bindings, s_variable): Removed.
4669
4670 (try_macro_lookup, literal_p): Use lookup_symbol instead of
4671 creating a temporary pair for scm_lookupcar.
4672
4673 (scm_unmemocar, unmemocar): Renamed scm_unmemocar to unmemocar,
4674 created deprecated wrapper function scm_unmemocar.
4675
4676 (SCM_VALIDATE_NON_EMPTY_COMBINATION, scm_sym_else,
4677 scm_sym_unquote, scm_sym_uq_splicing, scm_sym_enter_frame,
4678 scm_sym_apply_frame, scm_sym_exit_frame, scm_sym_trace, f_apply,
4679 undefineds, sym_three_question_marks): Moved around without
4680 modifications.
4681
4682 * eval.c, eval.h (scm_macroexp, scm_unmemocar): Deprecated.
4683
4684 2003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
4685
4686 * eval.c (try_macro_lookup, expand_user_macros, is_system_macro_p,
4687 m_expand_body, scm_m_expand_body): Grouped together with m_body.
4688 No further modifications.
4689
4690 2003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
4691
4692 * eval.c (s_mixed_body_forms): New static identifier.
4693
4694 (canonicalize_define, scm_m_define): The check for a bad
4695 expression is performed in canonicalize_define now.
4696
4697 (try_macro_lookup, expand_user_macros, is_system_macro_p): New
4698 static helper functions for m_expand_body.
4699
4700 (m_expand_body): Use ASSERT_SYNTAX to signal syntax errors. Only
4701 expand user defined macros. Fixed handling of the definition/
4702 expression boundary. Fixed handling of definitions grouped with
4703 'begin. Use canonicalize_define to expand definitions.
4704
4705 2003-11-13 Marius Vollmer <mvo@zagadka.de>
4706
4707 * read.c (scm_lreadr): detect EOF after backslash, and interpret
4708 \xNN hexadecimal sequences. From Paul Jarc, thanks!
4709
4710 * snarf.h (SCM_SMOB, SCM_GLOBAL_SMOB, SCM_SMOB_MARK,
4711 SCM_GLOBAL_SMOB_MARK, SCM_SMOB_FREE, SCM_GLOBAL_SMOB_FREE,
4712 SCM_SMOB_PRINT, SCM_GLOBAL_SMOB_PRINT, SCM_SMOB_EQUALP,
4713 SCM_GLOBAL_SMOB_EQUALP, SCM_SMOB_APPLY, SCM_GLOBAL_SMOB_APPLY):
4714 New macros from Paul Jarc. Thanks!
4715
4716 * gc_os_dep.c (scm_get_stack_base): Provide a definition that
4717 return NULL when the machine type is unknown. Previously,
4718 gc_os_dep.c would refuse to compile.
4719
4720 2003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
4721
4722 * eval.c (scm_m_body, m_body, scm_m_lambda, memoize_named_let,
4723 scm_m_let, scm_m_letrec, m_expand_body): Renamed static function
4724 scm_m_body to m_body.
4725
4726 2003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
4727
4728 * eval.c, eval.h (scm_m_expand_body, m_expand_body): Deprecated
4729 public use of scm_m_expand_body in eval.h. In eval.c, renamed
4730 scm_m_expand_body to m_expand_body and made it static. Added
4731 deprecated wrapper scm_m_expand_body.
4732
4733 (scm_eval_body, SCM_CEVAL, SCM_APPLY): Use m_expand_body instead
4734 of scm_m_expand_body.
4735
4736 2003-11-09 Kevin Ryde <user42@zip.com.au>
4737
4738 * dynl.c (scm_dynamic_unlink): Need scm_list_1 on error message
4739 argument. Reported by Mike Gran.
4740
4741 2003-11-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
4742
4743 * eval.c (s_missing_body_expression): New static identifier.
4744
4745 (s_body): Removed.
4746
4747 (scm_m_expand_body): Fixed core dump when passing a body with
4748 defines, but without expressions (see additions to syntax.test).
4749 Use ASSERT_SYNTAX to signal syntax errors.
4750
4751 2003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
4752
4753 * eval.c (canonicalize_define): New static helper function.
4754
4755 (memoize_define, canonicalize_define): Extract handling of
4756 function currying to canonicalize_define.
4757
4758 2003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
4759
4760 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
4761 Make sure that error checking in debug mode is not worse than in
4762 standard mode.
4763
4764 2003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
4765
4766 * eval.c (scm_m_body, scm_m_lambda): Documentation strings are not
4767 handled in scm_m_body any more, but rather in scm_m_lambda.
4768
4769 (scm_m_body, memoize_named_let, scm_m_let, scm_m_letstar,
4770 scm_m_letrec, scm_m_expand_body): Check for validity is done by
4771 calling functions of scm_m_body.
4772
4773 (scm_m_lambda): Avoid unnecessary consing when creating the
4774 memoized code.
4775
4776 2003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
4777
4778 * eval.c (s_expression): Added comment.
4779
4780 (s_empty_combination, error_unbound_variable): New static
4781 identifiers.
4782
4783 (SCM_VALIDATE_NON_EMPTY_COMBINATION, SCM_EVALIM2, scm_lookupcar1):
4784 Use ASSERT_SYNTAX, syntax_error or error_unbound_variable to
4785 signal syntax errors.
4786
4787 (SCM_CEVAL): Separated handling of evaluator bytecodes and other
4788 scheme objects.
4789
4790 2003-10-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
4791
4792 * eval.c (unmemocar, sym_three_question_marks, scm_unmemocar):
4793 Grouped together with unmemocopy, without modifications.
4794
4795 (build_binding_list, unmemocopy): Renamed names of list arguments
4796 and variables to reflect the actual order of the list elements.
4797
4798 2003-10-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
4799
4800 * eval.c (s_defun): New static identifier.
4801
4802 (scm_m_nil_cond, scm_m_atfop, scm_m_undefine): Add comments. Use
4803 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
4804 when creating the memoized code.
4805
4806 2003-10-19 Kevin Ryde <user42@zip.com.au>
4807
4808 * numbers.c (scm_ash): Revise docstring as per recent update to manual.
4809
4810 * numbers.c (scm_i_big2dbl): Rewrite, carefully rounding to "closest"
4811 in accordance with R5RS, which just mpz_get_d doesn't really give.
4812
4813 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
4814
4815 * eval.c (s_bad_slot_number): New static identifier.
4816
4817 (scm_m_atslot_ref, scm_m_atslot_set_x): Use ASSERT_SYNTAX to
4818 signal syntax errors. Avoid unnecessary consing when creating the
4819 memoized code.
4820
4821 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
4822
4823 * eval.c (scm_m_cont, scm_m_at_call_with_values,
4824 scm_m_generalized_set_x): Use ASSERT_SYNTAX to signal syntax
4825 errors. Avoid unnecessary consing when creating the memoized
4826 code.
4827
4828 (scm_m_generalized_set_x): Let scm_m_set_x handle the R5RS
4829 standard case. Make sure line and file information are copied to
4830 every created expression.
4831
4832 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
4833
4834 * eval.c (scm_m_set_x, scm_m_apply, scm_m_atbind): Use
4835 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
4836 when creating the memoized code.
4837
4838 (scm_m_atbind): Reversed the order, in which the init expressions
4839 are stored and executed. The order of execution is now equal to
4840 the order in which the initializers of the let-forms are executed.
4841 Use check_bindings and transform_bindings.
4842
4843 (SCM_CEVAL): Eliminated SCM_NIMP in favor of more appropriate
4844 !SCM_NULLP. Added some comments.
4845
4846 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
4847
4848 * eval.c: Sorted include files alphabetically.
4849
4850 (scm_m_begin): Added comment.
4851
4852 (scm_m_or): Use ASSERT_SYNTAX to signal syntax errors. Avoid
4853 unnecessary consing when creating the memoized code.
4854
4855 (iqq, scm_m_quasiquote, scm_m_quote): Use ASSERT_SYNTAX to signal
4856 syntax errors. Be more specific about the kind of error that was
4857 detected.
4858
4859 (scm_m_quote, unmemocopy): As an optimization, vector constants
4860 are now inserted unquoted into the memoized code. During
4861 unmemoization the quotes are added again to provide syntactically
4862 correct code.
4863
4864 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
4865
4866 * eval.c (scm_m_let, scm_m_letstar, scm_m_letrec,
4867 scm_m_expand_body, check_bindings): Extracted syntax checking of
4868 bindings to new static function check_bindings.
4869
4870 (scm_m_let, memoize_named_let): Extracted handling of named let to
4871 new static function memoize_named_let.
4872
4873 (transform_bindings, scm_m_let, scm_m_letstar, scm_m_letrec): Use
4874 ASSERT_SYNTAX to signal syntax errors. Be more specific about the
4875 kind of error that was detected. Avoid use of SCM_CDRLOC. Avoid
4876 unnecessary consing when creating the memoized code.
4877
4878 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
4879
4880 * eval.c (s_bad_formals, s_bad_formal, s_duplicate_formal): New
4881 static identifiers.
4882
4883 (s_clauses, s_formals, s_duplicate_formals): Removed.
4884
4885 (scm_m_lambda): Use ASSERT_SYNTAX to signal syntax errors. Be more
4886 specific about the kind of error that was detected. Prepare for
4887 easier integration of changes for separated memoization.
4888
4889 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
4890
4891 * eval.c (s_duplicate_binding): New static identifier.
4892
4893 (scm_m_case): Call scm_c_memq instead of implementing it inline.
4894
4895 (scm_m_define): Added comment about how we check for duplicate
4896 formals.
4897
4898 (scm_m_do): Added check for duplicate bindings.
4899
4900 (scm_m_if): Use ASSERT_SYNTAX to signal syntax errors. Avoid
4901 unnecessary consing when creating the memoized code.
4902
4903 (scm_c_improper_memq, c_improper_memq, scm_m_lambda): Renamed
4904 scm_c_improper_memq to c_improper_memq, since it is not exported.
4905
4906 (transform_bindings): Call scm_c_memq rather than
4907 scm_c_improper_memq.
4908
4909 (SCM_CEVAL): Simplified handling of SCM_IM_IF forms.
4910
4911 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
4912
4913 * eval.c (s_bad_bindings, s_bad_binding, s_bad_exit_clause): New
4914 static identifiers.
4915
4916 (scm_m_do): Use ASSERT_SYNTAX to signal syntax errors. Be more
4917 specific about the kind of error that was detected. Avoid use of
4918 SCM_CDRLOC. Avoid unnecessary consing when creating the memoized
4919 code, this way also making sure that file name, line number
4920 information etc. remain available.
4921
4922 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
4923
4924 * eval.c (memoize_as_thunk_prototype): New static function.
4925
4926 (scm_m_delay, scm_m_future): Use memoize_as_thunk_prototype.
4927 Avoid unnecessary consing when creating the memoized code.
4928
4929 2003-10-12 Kevin Ryde <user42@zip.com.au>
4930
4931 * list.c (scm_append): Track argument number and use in error.
4932
4933 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
4934
4935 * eval.c (s_missing_expression, s_bad_variable): New static
4936 identifiers.
4937
4938 (scm_m_define): Use ASSERT_SYNTAX to signal syntax errors. Prefer
4939 R5RS terminology for the naming of variables. Be more specific
4940 about the kind of error that was detected. Make sure file name,
4941 line number etc. are added to all freshly created expressions.
4942 Avoid unnecessary consing when creating the memoized code.
4943
4944 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
4945
4946 * eval.c (s_extra_expression, s_misplaced_else_clause,
4947 s_bad_cond_clause, s_missing_recipient): New static identifiers.
4948
4949 (s_extra_case_clause): Removed.
4950
4951 (scm_m_case, scm_m_cond): If a clause appears after an else
4952 clause, report a misplaced else clause.
4953
4954 (scm_m_cond): Use ASSERT_SYNTAX to signal syntax errors. Be more
4955 specific about the kind of error that was detected. Handle bound
4956 'else and '=>. Avoid unnecessary consing when creating the
4957 memoized code.
4958
4959 (scm_m_cond, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
4960 the syntactic keyword 'else and SCM_IM_ARROW to memoize the
4961 syntactic keyword '=>.
4962
4963 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
4964
4965 * eval.c (scm_m_case): Allow empty lists of case labels.
4966
4967 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
4968
4969 * tags.h (SCM_IM_ELSE, SCM_IM_ARROW): New memoizer codes.
4970
4971 * print.c (scm_isymnames): Add names for the new memoizer codes.
4972
4973 * eval.c (s_missing_clauses, s_bad_case_clause,
4974 s_extra_case_clause, s_bad_case_labels, s_duplicate_case_label,
4975 literal_p): New static identifiers.
4976
4977 (scm_m_case): Use ASSERT_SYNTAX to signal syntax errors. Be more
4978 specific about the kind of error that was detected. Check for
4979 duplicate case labels. Handle bound 'else. Avoid unnecessary
4980 consing when creating the memoized code.
4981
4982 (scm_m_case, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
4983 the syntactic keyword 'else.
4984
4985 2003-10-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
4986
4987 * eval.c (s_bad_expression, syntax_error_key, syntax_error,
4988 ASSERT_SYNTAX, ASSERT_SYNTAX_2): New static identifiers.
4989
4990 (scm_m_and): Use ASSERT_SYNTAX to signal syntax errors. Avoid
4991 unnecessary consing when creating the memoized code.
4992
4993 2003-10-09 Kevin Ryde <user42@zip.com.au>
4994
4995 * numbers.c (scm_inexact_to_exact): Don't depend on what double->long
4996 cast gives for values bigger than a long, or for nan or inf.
4997
4998 2003-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
4999
5000 * smob.h (scm_make_smob_type): Made the declaration match the
5001 definition.
5002
5003 2003-10-07 Marius Vollmer <mvo@zagadka.de>
5004
5005 * goops.c, objects.h, smob.c, smob.h: Make type names char
5006 const * instead of char *. Thanks to Paul Jarc!
5007
5008 2003-10-02 Kevin Ryde <user42@zip.com.au>
5009
5010 * strports.c (scm_call_with_output_string): scm_get_output_string
5011 rather than scm_strport_to_string, so as to guard against the port
5012 having been closed by the called procedure. Reported by Nic Ferrier.
5013
5014 2003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5015
5016 * numbers.h (SCM_INEXACTP): Removed uses of SCM_TYP16S.
5017
5018 * tags.h, deprecated.h (SCM_TYP16S): Deprecated and moved from
5019 tags.h to deprecated.h.
5020
5021 2003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5022
5023 This set of patches introduces a new tc7 code scm_tc7_number for
5024 numbers. Bignums, reals and complex numbers are turned from smobs
5025 into subtypes of scm_tc7_number.
5026
5027 * tags.h (scm_tc7_number): New.
5028
5029 * eq.c (scm_equal_p), eval.c (SCM_CEVAL), evalext.c
5030 (scm_self_evaluating_p), gc-card.c (scm_i_sweep_card), gc-mark.c
5031 (scm_gc_mark_dependencies), goops.c (create_smob_classes), hash.c
5032 (scm_hasher), numbers.c, numbers.h (SCM_NUMP), objects.c
5033 (scm_class_of), print.c (scm_iprin1), smob.c
5034 (scm_smob_prehistory): Don't handle bignums, reals and complex
5035 numbers as subtypes of scm_tc7_smob any more.
5036
5037 * numbers.h, tags.h (scm_tc16_big, scm_tc16_real,
5038 scm_tc16_complex): Moved definitions from tags.h to numbers.h.
5039
5040 2003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5041
5042 * numbers.c (scm_make_complex), gc-card.c (scm_i_sweep_card): Use
5043 sizeof (scm_t_complex) to determine the memory size of the
5044 malloc'd area for complex numbers.
5045
5046 2003-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
5047
5048 * numbers.c (scm_bigequal): Fixed.
5049
5050 2003-09-16 Marius Vollmer <mvo@zagadka.de>
5051
5052 * stime.c (scm_current_time): 'time' does not set errno so don't
5053 use SCM_SYSERROR for reporting errors.
5054
5055 2003-09-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5056
5057 This set of patches eliminates the dependency between the
5058 implementation of evaluator specific memoization codes and special
5059 constants like #f, '() etc. ('flags'), which are not evaluator
5060 specific. The goal is to remove definitions of evaluator
5061 memoization codes completely from the public interface. This will
5062 make it possible to experiment more freely with optimizations of
5063 guile's internal representation of memoized code.
5064
5065 * objects.c (scm_class_of): Eliminate dependency on SCM_ISYMNUM.
5066
5067 * print.c (iflagnames): New array, holding the printed names of
5068 guile's special constants ('flags').
5069
5070 (scm_isymnames): Now holds only the printed names of the
5071 memoization codes.
5072
5073 (scm_iprin1): Separate the handling of memoization codes and
5074 guile's special constants.
5075
5076 * tags.h (scm_tc9_flag, SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA,
5077 SCM_IFLAGNUM): new
5078
5079 (scm_tc8_char, scm_tc8_iloc, SCM_BOOL_F, SCM_BOOL_T,
5080 SCM_UNDEFINED, SCM_EOF_VAL, SCM_EOL, SCM_UNSPECIFIED, SCM_UNBOUND,
5081 SCM_ELISP_NIL, SCM_IM_DISPATCH, SCM_IM_SLOT_REF,
5082 SCM_IM_SLOT_SET_X, SCM_IM_DELAY, SCM_IM_FUTURE,
5083 SCM_IM_CALL_WITH_VALUES, SCM_IM_NIL_COND, SCM_IM_BIND): Changed
5084 values.
5085
5086 (SCM_IFLAGP): SCM_IFLAGP now only tests for flags.
5087
5088 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Generalized to use the
5089 tc9 macros and scm_tc9_flag.
5090
5091 2003-09-15 Marius Vollmer <mvo@zagadka.de>
5092
5093 * posix.c (scm_setgroups): Check that the gid list is not too
5094 long. Thanks to Paul Jarc!
5095
5096 2003-09-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
5097
5098 * tags.h: Reduced the number of short instructions from 14 to 13.
5099 The typecode of the former 14th short instruction is now used to
5100 represent long instructions. Changed some comments to reflect
5101 this fact.
5102
5103 (SCM_MAKISYM): ISYMs get a new tc7 code, namely the one that was
5104 previously used by SCM_IM_DEFINE.
5105
5106 (SCM_IM_DEFINE): Turned into a long instruction.
5107
5108 * eval.c (unmemocopy, SCM_CEVAL): Treat SCM_IM_DEFINE as a long
5109 instruction.
5110
5111 * eval.c (SCM_CEVAL): Since characters and iflags have now a tc7
5112 code that is separate from all instructions, one level of dispatch
5113 for long instructions can be eliminated.
5114
5115 * print.c (scm_isymnames): Removed some commented code.
5116
5117 2003-09-12 Marius Vollmer <mvo@zagadka.de>
5118
5119 * __scm.h (SCM_FENCE): Use __memory_barrier with the Intel
5120 compiler on IA64.
5121
5122 * hashtab.h (scm_tc16_hashtable): Added "extern" declaration.
5123
5124 * modules.c (scm_module_reverse_lookup): Check that the obarray
5125 really is a hashtable and do nothing if not.
5126
5127 * inline.h: Use "extern inline" only with GCC. Use "static
5128 inline" else.
5129
5130 2003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5131
5132 * numbers.h (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Removed uses
5133 of SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
5134
5135 * numbers.h, deprecated.h (SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP,
5136 SCM_SLOPPY_COMPLEXP): Deprecated and moved from numbers.h to
5137 deprecated.h.
5138
5139 2003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5140
5141 * eq.c (scm_eqv_p, scm_equal_p): Removed uses of
5142 SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
5143
5144 * eq.c (scm_eqv_p, scm_equal_p): Reordered comparisons from
5145 0.0==some_expression to some_expression==0.0. The latter is
5146 better readable. The former is preferred by some people, since it
5147 leads to a compiler error when confusing == with =. However, when
5148 using gcc, a warning will be issued if in an if-statement an
5149 assigment appears. Since many Guile developers are using gcc,
5150 such errors will not remain unnoticed anyway. We can therefore
5151 focus on better readability.
5152
5153 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5154
5155 * tags.h: Added description of Guile's type system. Removed some
5156 old and misleading comments.
5157
5158 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5159
5160 * unit.c (scm_cvref): Eliminate unnecessary uses of SCM_NIMP,
5161 SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
5162
5163 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5164
5165 * numbers.h (SCM_MAKINUM): Define in terms of scm_tc2_int.
5166
5167 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Define in terms of the
5168 respective SLOPPY macro.
5169
5170 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5171
5172 * eq.c (scm_equal_p): Use SCM_TYP7 to check if an object is of
5173 type string, not SCM_TYP7S.
5174
5175 2003-09-03 Kevin Ryde <user42@zip.com.au>
5176
5177 * numbers.c (scm_lognot): Correction to docstring, ones-complement not
5178 2s-complement.
5179
5180 * stime.c (scm_strptime): Add comment about glibc strptime %s and
5181 current timezone requiring SCM_DEFER_INTS.
5182
5183 2003-08-30 Neil Jerram <neil@ossau.uklinux.net>
5184
5185 * script.c (scm_compile_shell_switches): Make -s switch optional
5186 if file to be loaded does not begin with a `-'. (Thanks to Aaron
5187 VanDevender for the patch!)
5188
5189 2003-08-30 Kevin Ryde <user42@zip.com.au>
5190
5191 * numbers.c (scm_lognot): Rewrite using ~ and mpz_com, for directness
5192 and to have non-integer types rejected as per other logical funcs.
5193
5194 2003-08-28 Kevin Ryde <user42@zip.com.au>
5195
5196 * gc.h (scm_remember_upto_here_1): Revise comments on the asm form.
5197
5198 2003-08-23 Kevin Ryde <user42@zip.com.au>
5199
5200 * simpos.c (scm_system): Remove SCM_DEFER_INTS, system() should be
5201 thread safe, and could take a long time too.
5202
5203 2003-08-22 Kevin Ryde <user42@zip.com.au>
5204
5205 * numbers.c (scm_difference): Correction to bignum - negative inum.
5206
5207 2003-08-14 Kevin Ryde <user42@zip.com.au>
5208
5209 * gc.h (scm_remember_upto_here_1, scm_remember_upto_here_2)
5210 [__GNUC__]: Use volatile asm macros rather than a function call.
5211 * gc.c (scm_remember_upto_here_1, scm_remember_upto_here_2): Undefine
5212 macros while defining functions.
5213
5214 * simpos.c (getenv): Use <stdlib.h> for prototype.
5215 (scm_system): In docstring, refer to status:exit-val rather than
5216 "functions above".
5217
5218 2003-08-09 Kevin Ryde <user42@zip.com.au>
5219
5220 * srcprop.c (scm_source_properties): Return plist from hash if it's a
5221 list set by source-properties! rather than an SRCPROPS object,
5222
5223 2003-07-29 Kevin Ryde <user42@zip.com.au>
5224
5225 * properties.c (scm_primitive_property_ref): In docstring, note
5226 parameters to not-found-proc, use hyphens rather than underscores for
5227 that parameter name.
5228 (scm_primitive_property_set_x): In docstring, VAL is the value
5229 parameter not CODE.
5230
5231 2003-07-27 Marius Vollmer <mvo@zagadka.de>
5232
5233 * print.c (scm_print_symbol_name): handle more weird characters by
5234 escaping the symbol name properly. Thanks to Paul Jarc!
5235
5236 * posix.h (scm_setgroups): New prototype.
5237 * posix.c (scm_setgroups): New. Thanks to Paul Jarc!
5238 (scm_getgroups): Handle groups ids that don't fit into a fixnum.
5239 Don't use SCM_WRITABLE_VELTS.
5240
5241 * gc.h (SCM_GC_SET_CELL_BVEC): New.
5242 * gc-card.c (scm_i_init_card_freelist): Use it. Thanks to
5243 Matthias Koeppe!
5244
5245 * __scm.h (SCM_C_INLINE_KEYWORD): New.
5246 * numbers.c: Use it in place of SCM_C_INLINE so that the code
5247 compiles when SCM_C_INLINE is undefined.
5248
5249 2003-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
5250
5251 * __scm.h: Reformulated the architecture and compiler properties
5252 in terms of properties of scm_t_bits and SCM variables rather than
5253 in terms of c standard types. This is since it is not known which
5254 of the standard types scm_t_bits and SCM variables will be defined
5255 to.
5256
5257 2003-07-24 Kevin Ryde <user42@zip.com.au>
5258
5259 * numbers.c (scm_angle): Use scm_flo0 for non-negative inum, bignum
5260 and real.
5261
5262 2003-07-18 Kevin Ryde <user42@zip.com.au>
5263
5264 * numbers.c (scm_product): In complex * bignum, correction to
5265 REAL/IMAG fetch, x is the complex, not y.
5266
5267 2003-07-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5268
5269 * numbers.c (scm_odd_p, scm_even_p): Bugfix: Treat result of
5270 scm_inf_p test as Scheme values.
5271 (scm_sum): Bugfix: Normalize bignum created from a negative bignum
5272 and a positive inum.
5273 Use GNU indentation style.
5274
5275 2003-07-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5276
5277 * values.c (scm_values): Build lists of length 1 by using
5278 scm_list_1 instead of using scm_cons.
5279
5280 2003-07-10 Kevin Ryde <user42@zip.com.au>
5281
5282 * deprecation.c (scm_c_issue_deprecation_warning_fmt): Add va_end.
5283 * list.c (scm_list_n): Ditto.
5284
5285 * gc-malloc.c (scm_gc_realloc): Define "ptr" at start of function.
5286
5287 2003-07-08 Matthias Koeppe <mkoeppe@merkur.math.uni-magdeburg.de>
5288
5289 * tags.h (scm_t_bits, scm_t_signed_bits, etc): Avoid solaris empty
5290 defines of INTPTR_MAX and UINTPTR_MAX, combine conditionals for
5291 scm_t_bits and scm_t_signed_bits to avoid any chance of one and not
5292 the other using intptr_t.
5293
5294 2003-07-08 Kevin Ryde <user42@zip.com.au>
5295
5296 * numbers.c (scm_make_polar): Use sincos, when available.
5297 (scm_magnitude): Use hypot.
5298
5299 * ports.c (scm_char_ready_p, scm_peek_char): In docstrings, don't use
5300 @footnote since it doesn't go through to guile-procedures.txt.
5301
5302 * threads.c (scm_call_with_new_thread): In docstring, use "( )"
5303 outside @var to quieten makeinfo, and use @code.
5304
5305 2003-07-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5306
5307 * gc-malloc.c (decrease_mtrigger): new function
5308 (increase_mtrigger): new function, separate debug registering and
5309 mtrigger administration.
5310 (scm_gc_realloc): bugfix: do mtrigger administration before the
5311 actual realloc, for the realloc might invalidate a GC-d segment of
5312 memory. Thanks to Sam Hocevar for pointing this out.
5313 (scm_gc_realloc): use scm_malloc_reregister instead of
5314 unregistering and registering in sequence.
5315
5316 2003-07-03 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5317
5318 * __scm.h (SCM_ASSERT): change "else" expansion to "do { } while (0)"
5319
5320 2003-07-02 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5321
5322 * __scm.h (SCM_ASRTGO): add "else" to macro expansions with if
5323 clauses.
5324
5325 2003-06-29 Marius Vollmer <mvo@zagadka.de>
5326
5327 * deprecated.h (SCM_OPDIRP, scm_fport, scm_option, scm_srcprops,
5328 scm_srcprops_chunk, scm_info_frame, scm_stack, scm_array,
5329 scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_FUNC_NAME, SCM_WTA,
5330 RETURN_SCM_WTA, SCM_VALIDATE_NUMBER_COPY,
5331 SCM_VALIDATE_NUMBER_DEF_COPY, SCM_VALIDATE_OPDIR): Re-added from
5332 the release_1_6 branch.
5333
5334 2003-06-25 Stefan Jahn <stefan@lkcc.org>
5335
5336 * continuations.c: Redeclaration of getcontext() via the
5337 __asm__ ("getcontext") directive.
5338
5339 * continuations.h: Include <ucontext.h> instead of
5340 <sys/ucontext.h>.
5341
5342 2003-06-21 Kevin Ryde <user42@zip.com.au>
5343
5344 * numbers.c (_GNU_SOURCE): #define, to get C99 things.
5345 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, $asinh, $acosh,
5346 $atanh, truncate): Use C library asinh, acosh, atanh and trunc, when
5347 available.
5348 (scm_inexact_to_exact): Expand isfinite to its definition !xisinf.
5349 (isfinite): Remove, conflicts with C99 isfinite().
5350
5351 2003-06-19 Marius Vollmer <mvo@zagadka.de>
5352
5353 * deprecated.h, deprecated.c (scm_strhash, scm_sym2ovcell_soft,
5354 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
5355 scm_symbol_value0, scm_string_to_obarray_symbol scm_intern_symbol,
5356 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
5357 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp): Re-added from
5358 the release_1_6 branch.
5359
5360 2003-06-14 Stefan Jahn <stefan@lkcc.org>
5361
5362 * threads.h: Redefined scm_getspecific() and scm_setspecific()
5363 to be functions instead of macros.
5364
5365 * threads.c: Conditionalized inclusion of <sys/time.h> and
5366 <unistd.h>.
5367 (scm_getspecific, scm_setspecific): Made these two function
5368 real part of the API.
5369
5370 * posix.c (s_scm_putenv): Added some code to make a
5371 (putenv "FOO="), i.e. setting an empty string, work also on
5372 Win32 systems. Thanks to Kevin Ryde for the proposal.
5373
5374 2003-06-12 Kevin Ryde <user42@zip.com.au>
5375
5376 * posix.c (scm_putenv): Free temporary ptr in mingw unset. Add
5377 freebsd to comment about need to use unsetenv.
5378
5379 2003-06-02 Marius Vollmer <mvo@zagadka.de>
5380
5381 * ports.c (scm_peek_char): Safe the column of the port around the
5382 getc/ungetc calls. Thanks to Dr. Peter Ivanyi!
5383
5384 2003-06-07 Kevin Ryde <user42@zip.com.au>
5385
5386 * tags.h: Use inttypes.h and stdint.h when available, for INTPTR_MAX
5387 and friends required by scm_t_bits setups.
5388
5389 2003-06-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5390
5391 * tags.h (scm_tc2_int): Added.
5392
5393 * tags.h (scm_tc3_int_1, scm_tc3_int_2): Expressed in terms of
5394 scm_tc2_int.
5395
5396 * tags.h (scm_tcs_cons_imcar, scm_tcs_cons_nimcar, scm_tcs_struct,
5397 scm_tcs_closures): Hard coded values replaced by symbolic ones.
5398
5399 2003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
5400
5401 * eval.c: Partially undid my patch from 2003-05-31. This patch
5402 caused the segfault referenced in the previous changelog entry.
5403
5404 2003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
5405
5406 * tags.h: Fixed comment about the immediate type code layout.
5407
5408 * eval.c: Fixed handling of non-special instructions. Without
5409 this patch, guile will segfault on (#\0) and similar instructions.
5410
5411 2003-06-05 Kevin Ryde <user42@zip.com.au>
5412
5413 * numbers.c (scm_max, scm_min): For inum, bignum and real, if other
5414 operand is NaN, then return NaN. Also avoid passing NaN to mpz_cmp_d.
5415
5416 * read.c (scm_input_error): Pass arg list parameter to scm_error_scm,
5417 rather than SCM_EOL. Needed by "Unknown # object" case in scm_lreadr.
5418
5419 2003-06-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5420
5421 * __scm.h, gc-card.c (SCM_DEBUG_DEBUGGER_SUPPORT,
5422 SCM_DEBUG_DEBUGGING_SUPPORT): Renamed macro
5423 SCM_DEBUG_DEBUGGER_SUPPORT to SCM_DEBUG_DEBUGGING_SUPPORT and
5424 generalized it to apply not only to C level functions but also to
5425 scheme level functions.
5426
5427 * debug.c, debug.h, eval.c (make-iloc, scm_make_iloc, iloc?,
5428 scm_iloc_p, dbg-make-iloc, scm_dbg_make_iloc, dbg-iloc?,
5429 scm_dbg_iloc_p): Moved functions scm_make_iloc, scm_iloc_p to
5430 eval.c, made them available under SCM_DEBUG_DEBUGGING_SUPPORT == 1
5431 only and renamed them to scm_dbg_make_iloc, scm_dbg_iloc_p,
5432 respectively.
5433
5434 * deprecated.h, eval.c, eval.h (SCM_ILOC00, SCM_IDINC,
5435 SCM_IDSTMSK): Deprecated. The macro definitions are moved from
5436 eval.h into eval.c and a copy is placed into deprecated.h.
5437
5438 * eval.c, eval.h (SCM_MAKE_ILOC): Removed from eval.h and placed
5439 into eval.c. This definition was not part of the API in any
5440 officially released version of guile and thus does not need to go
5441 through a phase of deprecation.
5442
5443 2003-06-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5444
5445 * deprecated.c, deprecated.h, eval.c, eval.h (scm_s_expression,
5446 scm_s_test, scm_s_body, scm_s_bindings, scm_s_variable,
5447 scm_s_clauses, scm_s_formals): Deprecated. In eval.c the
5448 definitions are make static and renamed from scm_s_xxx to s_xxx.
5449 In deprecated.c the original definitions are copied.
5450
5451 * deprecated.h, eval.c, eval (SCM_EVALIM2, SCM_EVALIM, SCM_XEVAL,
5452 SCM_XEVALCAR): Deprecated. The macro definitions are moved from
5453 eval.h into eval.c and a copy (slightly modified to work in user
5454 code) is placed into deprecated.h.
5455
5456 * eval.c: Use the local static s_xxx definitions instead of the
5457 scm_s_xxx definitions throughout.
5458
5459 2003-06-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5460
5461 This set of patches separates the representation of the cxr family
5462 of functions (car, cdr etc.) from the dsubr family of functions
5463 (i. e. functions that take a double precision floating point
5464 argument). Further, the algorithm for handling the cxr function
5465 is improved.
5466
5467 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_1), numbers.c
5468 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, scm_round, floor,
5469 ceil, sqrt, fabs, exp, log, sin, cos, tan, asin, acos, atan, sinh,
5470 cosh, tanh), objects.c (scm_class_of), procprop.c
5471 (scm_i_procedure_arity), ramap.c (scm_array_map_x), tags.h
5472 (scm_tc7_dsubr, scm_tcs_subrs): Introduce scm_tc7_dsubr as new
5473 typecode for the dsubr family of functions.
5474
5475 * ramap.c (ramap_cxr, ramap_dsubr): Renamed ramap_cxr to
5476 ramap_dsubr.
5477
5478 * eval.c (SCM_CEVAL, SCM_APPLY, call_cxr_1), pairs.c
5479 (scm_init_pairs): Make use of the (now usable) second cell element
5480 of a scm_tc7_cxr function to implement the cxr family of functions
5481 more efficiently.
5482
5483 2003-05-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
5484
5485 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_0,
5486 scm_trampoline_1, scm_trampoline_2): Postpone error cases to the
5487 end of an if-else-if-sequence of checks.
5488
5489 2003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
5490
5491 * eval.c (SCM_CEVAL): Improved readability of call-with-values
5492 execution. Generalize apply_closure to apply_proc and use that
5493 for call-with-values.
5494
5495 2003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
5496
5497 * eval.c (SCM_CEVAL): Avoid one level of indirection when applying
5498 a non closure.
5499
5500 2003-05-30 Stefan Jahn <stefan@lkcc.org>
5501
5502 * posix.c (s_scm_putenv): Use the new HAVE_UNSETENV
5503 appropriately for mingw32 hosts.
5504
5505 * numbers.h: Defining copysign(), isnan() and finite() to
5506 be prefixed by a single '_' for mingw32 hosts.
5507
5508 2003-05-30 Kevin Ryde <user42@zip.com.au>
5509
5510 * numbers.c (z_negative_one): New variable.
5511 (scm_init_numbers): Initialize it.
5512 (scm_logcount): Use it and mpz_hamdist to count zeros for negatives.
5513
5514 2003-05-29 Stefan Jahn <stefan@lkcc.org>
5515
5516 * win32-dirent.c: Use malloc() instead of scm_malloc().
5517
5518 * stime.c (s_scm_strftime): Add a type cast to avoid compiler
5519 warning.
5520
5521 * posix.c (s_scm_putenv): Disable use of unsetenv() for the
5522 mingw32 build.
5523
5524 * modules.c (s_scm_module_import_interface): Renamed local
5525 variable interface to _interface. Seems like 'interface'
5526 is a special compiler directive for the mingw32 compiler.
5527
5528 * mkstemp.c: Provide prototype to avoid compiler warning.
5529
5530 * load.c (s_scm_search_path): Fixed absolute and relative
5531 path detections for native Windows platforms.
5532
5533 * gc.h, threads.h: Export some more symbols using SCM_API (necessary
5534 to build on mingw32).
5535
5536 * gc-freelist.c ("s_scm_map_free_list",
5537 "s_scm_gc_set_debug_check_freelist_x"): Fixed use of FUNC_NAME.
5538
5539 * fports.c (fport_fill_input): Disable use of
5540 fport_wait_for_input() on Win32 platforms.
5541
5542 * filesys.c (s_scm_basename): Fixed __MINGW32__ code.
5543
5544 * Makefile.am: Modified some rules for cross compiling.
5545
5546 2003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5547
5548 * eval.c (SCM_CEVAL): In case of an application, all checks for a
5549 proper function object and the correct number of arguments are now
5550 performed in the application part of SCM_CEVAL.
5551
5552 (scm_badformalsp): Removed.
5553
5554 2003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5555
5556 * deprecated.c (scm_read_and_eval_x): Fixed C99-ism.
5557
5558 2003-05-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5559
5560 * num2integral.i.c (NUM2INTEGRAL): Avoid warning about conditional
5561 always being false by inserting preprocessor conditional. (Thanks
5562 to Bruce Korb.)
5563
5564 * __scm.h (SCM_STACK_PTR): New macro. (Cast argument through
5565 (void *) in order to avoid an aliasing warning; thanks to Bruce
5566 Korb.)
5567
5568 * stackchk.h (SCM_STACK_OVERFLOW_P): Use SCM_STACK_PTR.
5569
5570 * threads.c (suspend, launch_thread, scm_threads_mark_stacks): Use
5571 SCM_STACK_PTR.
5572
5573 * threads.c (scm_threads_mark_stacks): Bugfix: Changed
5574 thread->base --> t->base.
5575
5576 * eval.c (SCM_CEVAL): Don't cast argument of SCM_STACK_OVERFLOW_P.
5577
5578 2003-05-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5579
5580 * deprecated.h, deprecated.c (scm_makstr, scm_makfromstr,
5581 scm_variable_set_name_hint, scm_builtin_variable,
5582 scm_internal_with_fluids, scm_make_gsubr,
5583 scm_make_gsubr_with_generic, scm_create_hook, SCM_LIST0,
5584 SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5, SCM_LIST6,
5585 SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify, scm_sloppy_memq,
5586 scm_sloppy_memv, scm_sloppy_member, scm_read_and_eval_x,
5587 scm_subr_entry, SCM_SUBR_DOC, scm_make_subr,
5588 scm_make_subr_with_generic, scm_make_subr_opt,
5589 scm_call_catching_errors, scm_make_smob_type_mfpe,
5590 scm_set_smob_mfpe, scm_strprint_obj, scm_read_0str, scm_eval_0str,
5591 SCM_CHARS, SCM_UCHARS, SCM_LENGTH): Re-added from the release_1_6
5592 branch. Some have been slightly rewritten.
5593 (scm_i_object_chars, scm_i_object_length): New, to support
5594 SCM_CHARS, SCM_UCHARS, and SCM_LENTH.
5595
5596 2003-05-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
5597
5598 * eval.c (scm_m_do, unmemocopy, SCM_CEVAL): Reversed order of
5599 names and inits in the memoized code of do.
5600
5601 2003-05-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5602
5603 * c-tokenize.lex (yyget_lineno, yyget_in, yyget_out, yyget_leng,
5604 yyget_text, yyset_lineno, yyset_in, yyset_out, yyget_debug,
5605 yyset_debug, yylex_destroy): Added prototypes (otherwise we'll get
5606 a compilation error if error-on-warning is enabled).
5607
5608 2003-05-17 Marius Vollmer <mvo@zagadka.de>
5609
5610 * c-tokenize.lex: Gobble up complete lines after a '#'. This
5611 removes preprocessor directives from the snarfage that might
5612 otherwise confuse us. These directives appear when compiling with
5613 "-g3", for example.
5614
5615 2003-05-16 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5616
5617 * ChangeLog: add my surname
5618
5619 * srcprop.c (scm_finish_srcprop): use
5620 scm_gc_register_collectable_memory()
5621 (scm_make_srcprops): idem.
5622
5623 2003-05-14 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5624
5625 * gc-malloc.c (scm_gc_register_collectable_memory): avoid
5626 wrap-around for scm_mtrigger
5627 (scm_gc_register_collectable_memory): abort on overflowing
5628 scm_mallocated().
5629
5630 2003-05-13 Kevin Ryde <user42@zip.com.au>
5631
5632 * numbers.c (xmpz_cmp_d): New macro, handling infs if gmp doesn't.
5633 (scm_num_eq_p, scm_less_p, scm_max, scm_min): Use it.
5634
5635 2003-05-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5636
5637 * backtrace.c (scm_display_error_message): Introduced fancy
5638 printing with max level 7 and length 10. (Purpose: avoid printing
5639 gigantic objects in error messages.)
5640
5641 * print.c, print.h (scm_i_port_with_print_state): New function.
5642
5643 * print.c (scm_iprin1, scm_printer_apply,
5644 scm_port_with_print_state): Use scm_i_port_with_print_state.
5645 (scm_simple_format): Modified not to destroy print states.
5646 (print_state_mutex): New mutex.
5647 (scm_make_print_state, scm_free_print_state, scm_prin1):
5648 Lock/unlock print_state_mutex.
5649
5650 * deprecated.h (SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK):
5651 Use current names in definitions.
5652
5653 2003-05-10 Kevin Ryde <user42@zip.com.au>
5654
5655 * numbers.c (scm_num_eq_p, scm_less_p): Don't pass NaN to mpz_cmp_d.
5656
5657 * numbers.c (scm_integer_length): On negative bignums, adjust
5658 mpz_sizeinbase to account for it looking at absolute value where we
5659 want ones-complement.
5660
5661 * numbers.c (scm_gcd): In bignum/inum, don't pass yy==0 to mpz_gcd_ui
5662 since we're only using the ulong return value, and x might not fit.
5663
5664 2003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5665
5666 * eval.c, eval.h, read.c, read.h (scm_sym_dot): Moved from eval to
5667 read. This will allow to make the definition in read.c static.
5668
5669 2003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5670
5671 * eval.c, eval.h, evalext.c, evalext.h (scm_m_undefine): Moved
5672 from evalext to eval. This will allow to make some of the
5673 definitions in eval.c static.
5674
5675 2003-05-06 Kevin Ryde <user42@zip.com.au>
5676
5677 * numbers.c (scm_difference): In inum - bignum, handle negative inum.
5678 (scm_logcount): Use mpz_com, not mpz_neg.
5679
5680 2003-05-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5681
5682 The purpose of this patch is to make guile's internal memoizers
5683 distinguishable from memoizing macros created on the scheme level
5684 or from user provided primitive memoizing macros. The reason is,
5685 that the internal memoizers are the only ones that are allowed to
5686 transform their scheme input into memoizer byte code, while all
5687 other memoizing macros may only transform scheme code into new
5688 scheme code.
5689
5690 To achieve this, a new macro type 'builtin-macro!' is introduced.
5691 Currently, 'builtin-macro!'s are handled as memoizing macros, but
5692 this will change when the memoizer and executor are separated.
5693
5694 * macros.[ch] (scm_i_makbimacro): New.
5695
5696 * macros.h (SCM_BUILTIN_MACRO_P): New.
5697
5698 * macros.c (macro_print, scm_macro_type): Support builtin-macro!s.
5699
5700 * eval.c, goops.c: All of guile's primitive memoizing macros are
5701 primitive builtin-macros now.
5702
5703 * eval.c (scm_macroexp, SCM_CEVAL): Make sure the primitive
5704 builtin-macros are handled equally to memoizing macros.
5705
5706 2003-05-04 Marius Vollmer <mvo@zagadka.de>
5707
5708 * throw.c (scm_ithrow): Remove "asm volatile" hack. It used to
5709 work around a bug in GCC 2.95.2 but is now a bug in itself.
5710
5711 2003-05-02 Marius Vollmer <mvo@zagadka.de>
5712
5713 * deprecated.h (scm_rstate, scm_rng, SCM_SLOPPY_CONSP,
5714 SCM_SLOPPY_NCONSP, scm_tc7_ssymbol, scm_tc7_msymbol,
5715 scm_tcs_symbols): New.
5716
5717 2003-04-30 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5718
5719 * deprecated.h, deprecated.c (scm_protect_object,
5720 scm_unprotect_object, SCM_SETAND_CAR, SCM_SETOR_CAR,
5721 SCM_SET_AND_CDR, SCM_SET_OR_CDR, SCM_FREEP, SCM_NFREEP,
5722 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
5723 SCM_GCCDR, scm_remember, scm_the_root_module, scm_make_module,
5724 scm_ensure_user_module, scm_load_scheme_module, scm_port,
5725 scm_ptob_descriptor, scm_port_rw_active,
5726 scm_close_all_ports_except): New.
5727
5728 * ports.c (scm_c_port_for_each): New function, mostly copied from
5729 scm_port_for_each.
5730 (scm_port_for_each): Reimplemented using scm_c_port_for_each.
5731 * ports.h (scm_c_port_for_each): New prototype.
5732
5733 2003-04-28 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5734
5735 * eval.c (scm_m_atdispatch): Removed until actually needed. (This
5736 macro was introduced in anticipation of GOOPS method compilation
5737 code.)
5738
5739 * goops.c: Removed binding of @dispatch.
5740
5741 2003-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
5742
5743 * eval.c, goops.c (@dispatch, @slot-ref, @slot-set!): Move the
5744 instructions that bind the macros on the scheme level back to
5745 goops.c in order to make sure again that the bindings go into the
5746 (oop goops) module and are not visible from the outside.
5747
5748 2003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
5749
5750 * eval.c: Non functional change: Separated R5RS and non-R5RS
5751 macros into different sections of the file and ordered the
5752 memoizers alphabetically.
5753
5754 2003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
5755
5756 * eval.c (scm_ilookup): Rewritten to improve readability.
5757
5758 2003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
5759
5760 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
5761 Partially reverted patch from 2003-04-23 in oder to find a better
5762 compromise between readability and debuggability.
5763
5764 2003-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5765
5766 * eval.c, eval.h, goops.c, goops.h (scm_m_atslot_ref,
5767 scm_m_atslot_set_x, scm_m_atdispatch): Move the declarations and
5768 definitions of the special goops memoizers from goops.[ch] to
5769 eval.[ch]. Hmm... it seems that scm_m_atdispatch is not used
5770 throughout guile.
5771
5772 2003-04-24 Mikael Djurfeldt <mdj@kvast.blakulla.net>
5773
5774 * ports.c, ports.h (scm_i_port_table_mutex): New mutex.
5775
5776 * fports.c (scm_evict_ports): Lock/unlock scm_i_port_table_mutex.
5777
5778 * ports.c (scm_close_port, scm_flush_all_ports): Ditto.
5779
5780 * ioext.c (scm_fdes_to_ports): Ditto.
5781
5782 * vports.c (scm_make_soft_port): Changed SCM_DEFER/ALLOW_INTS into
5783 lock/unlock scm_i_port_table_mutex.
5784
5785 * strports.c (scm_mkstrport): Ditto.
5786
5787 * ports.c (scm_void_port, scm_port_for_each): Ditto.
5788
5789 * fports.c (scm_fdes_to_port): Ditto.
5790
5791 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
5792
5793 This set of patches contains no functional changes, only debatable
5794 minor stylistic ones. Still, in order to prepare a patch between
5795 my local copy and the CVS version, I decided to submit the changes
5796 below. Then, the patch will hopefully only contain relevant
5797 modifications :-)
5798
5799 * eval.c (iqq): Added const specifier.
5800
5801 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
5802 Use NULL instead of 0 to indicate that a pointer is returned.
5803 Removed some misleading 'fall through' comments.
5804
5805 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
5806 Split up long expressions into smaller ones to be more debugging
5807 friendly.
5808
5809 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
5810
5811 * eval.h (SCM_ENTER_FRAME_HDLR, SCM_APPLY_FRAME_HDLR,
5812 SCM_EXIT_FRAME_HDLR): Use SCM_PACK to convert data to a SCM value
5813 rather than casting to SCM.
5814
5815 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
5816
5817 * sort.c, pairs.h: Removed unnecessary includes.
5818
5819 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
5820
5821 * sort.c: Replaced hand-made trampline code by the new official
5822 mechanism from eval.c. This fixes a segfault in the new test file
5823 sort.test.
5824
5825 (quicksort, compare_function, scm_restricted_vector_sort_x,
5826 scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
5827 scm_merge_list_step, scm_sort_x, scm_sort, scm_merge_vector_x,
5828 scm_merge_vector_step, scm_stable_sort_x, scm_stable_sort,
5829 scm_sort_list_x, scm_sort_list): Use trampoline mechanism from
5830 eval.c.
5831
5832 (subr2less, lsubrless, closureless, applyless, scm_cmp_function,
5833 cmp_fun_t): Removed.
5834
5835 (compare_function): Added.
5836
5837 * sort.c (quicksort, SWAP, stack_node): Replaced pointer
5838 arithmetics with index arithmetics. Changed quicksort to work on
5839 an array of SCM values instead of an array of characters. Avoid
5840 bytewise copying of SCM elements. Avoid allocating memory on the
5841 stack with alloca. Fixed some comments.
5842
5843 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
5844
5845 * eval.c (EXTEND_ENV): Eliminated.
5846
5847 (unmemocopy, SCM_CEVAL, SCM_APPLY): Use SCM_EXTEND_ENV instead of
5848 EXTEND_ENV.
5849
5850 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
5851
5852 * __scm.h (SCM_DEBUG_DEBUGGER_SUPPORT): New compile-time option.
5853
5854 * gc.card.c (scm_gc_marked_p): Fixed compiler warning when
5855 compiling with SCM_DEBUG==1 by moving definition behind prototype.
5856
5857 * gc.card.c (scm_dbg_t_list_cell, scm_dbg_t_double_cell,
5858 scm_dbg_gc_marked_p, scm_dbg_gc_get_card, scm_dbg_gc_get_bvec,
5859 scm_t_list_cell_struct, scm_t_list_cell, scm_t_double_cell,
5860 scm_gc_marked_p, scm_gc_get_card, scm_gc_get_bvec): Fixed
5861 functions such that they check if the object is a non-immediate.
5862 Further, renamed identifiers to use the scm_dbg_ prefix and made
5863 their inclusion into the lib dependent of the
5864 SCM_DEBUG_DEBUGGER_SUPPORT compile time option.
5865
5866 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
5867
5868 * __scm.h: Fixed comment about the SCM_DEBUG_TYPING_STRICTNESS
5869 debug option.
5870
5871 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
5872
5873 * list.c (scm_ilength, scm_last_pair), unif.c (l2ra): Prefer
5874 !SCM_CONSP over SCM_NCONSP. Now, guile itself does not include
5875 any calls to SCM_NCONSP any more.
5876
5877 * unif.c (l2ra): Eliminate redundant check.
5878
5879 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
5880
5881 * list.c (scm_cons_star), ramap.c (scm_ra_sum, scm_ra_product,
5882 scm_array_map_x), unif.c (l2ra): Prefer !SCM_NULLP over
5883 SCM_NNULLP. Now, guile itself does not include any calls to
5884 SCM_NNULLP any more.
5885
5886 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
5887
5888 * eval.c (unmemocopy, SCM_APPLY, scm_map, scm_for_each,
5889 scm_copy_tree): Place assignment expressions which are part of
5890 other expressions into an expression of their own.
5891
5892 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
5893
5894 * goops.c (TEST_CHANGE_CLASS, scm_sys_initialize_object): Don't
5895 compare SCM values with !=.
5896
5897 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
5898
5899 * eval.c, eval.h, evalext.c, evalext.h (scm_sym_setter,
5900 scm_m_generalized_set_x, scm_init_evalext): Move the declaration
5901 and definition of the memoizer for the generalized set! macro from
5902 evalext.[ch] to eval.[ch]. Use the SCM_SYNTAX snarfer macro to
5903 define the macro object.
5904
5905 * eval.c, eval.h (s_set_x, scm_s_set_x, scm_m_set_x,
5906 scm_m_generalized_set_x): Since now scm_s_set_x is only used in
5907 eval.c, it is made static and renamed to s_set_x.
5908
5909 * evalext.c (scm_defined_p, scm_m_undefine): Prefer !SCM_<foo>
5910 over SCM_N<foo>.
5911
5912 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
5913
5914 * eval.c, root.h (scm_undefineds, SCM_NUM_PROTECTS, undefineds,
5915 scm_init_eval): Made scm_undefineds static in eval.c, renamed it
5916 to undefineds and registered the object as a permanent object.
5917
5918 * eval.c, eval.h (scm_f_apply, scm_init_eval): Made scm_f_apply
5919 static in eval.c, renamed it to f_apply and registered the object
5920 as a permanent object.
5921
5922 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
5923
5924 * eval.c (SCM_BIT7, SCM_BIT8, unmemocopy, SCM_CEVAL): Renamed
5925 file-local macro SCM_BIT8 to SCM_BIT7, which is more appropriate.
5926
5927 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
5928
5929 * numbers.c (scm_logtest): Fixed argument bug in the call to
5930 mpz_and, which showed up when compiling with SCM_DEBUG defined.
5931
5932 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
5933
5934 * gc-card.c (scm_i_sweep_card, scm_i_init_card_freelist): Fixed
5935 type errors that showed up when compiling with SCM_DEBUG defined.
5936
5937 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
5938
5939 * continuations.c, continuations.h, eval.c, eval.h, extensions.c,
5940 gsubr.c, guile.c, init.c, read.c, root.c, root.h, stackchk.h,
5941 throw.c: Removed uses of DEBUG_EXTENSIONS and DYNAMIC_LINKING to
5942 fix compile errors with --disable-deprecated.
5943
5944 2003-04-17 Rob Browning <rlb@defaultvalue.org>
5945
5946 * numbers.c (scm_integer_expt): fix case where we were declaring
5947 vars in the middle of a statement block. Thanks to Thamer
5948 Al-Harbash.
5949
5950 2003-04-17 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5951
5952 * goops.c (TEST_CHANGE_CLASS): Update variable class after class
5953 change.
5954
5955 * eq.c (scm_eqv_p): Turned into a primitive generic.
5956
5957 2003-04-16 Rob Browning <rlb@defaultvalue.org>
5958
5959 * gc_os_dep.c: Added patch for UnixWare and OpenUNIX support.
5960 Thanks to Boyd Gerber.
5961 Added check for __arm__ in addition to arm for LINUX and copied
5962 __s390__ defines from upstream libgc. Thanks to James Treacy for
5963 reporting the problems.
5964
5965 * numbers.c (PTRDIFF_MIN): use SCM_CHAR_BIT.
5966
5967 * socket.c: use SCM_CHAR_BIT.
5968
5969 * random.c (scm_c_random_bignum): use SCM_CHAR_BIT.
5970
5971 * num2integral.i.c (NUM2INTEGRAL): use SCM_CHAR_BIT.
5972
5973 2003-04-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
5974
5975 * feature.c (scm_init_feature): Always add threads feature.
5976
5977 2003-04-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5978
5979 * goops.c (scm_sys_fast_slot_ref): Use SCM_SLOT instead of
5980 scm_at_assert_bound_ref. (We don't want the unbound check. See
5981 oop/goops/active-slot.scm.)
5982
5983 2003-04-14 Rob Browning <rlb@defaultvalue.org>
5984
5985 * tags.h: scm_t_intptr should have been intptr_t.
5986
5987 2003-04-13 Rob Browning <rlb@defaultvalue.org>
5988
5989 * __scm.h (SCM_FLUSH_REGISTER_WINDOWS): don't just rely on "sparc"
5990 test. Instead use
5991 #if defined (sparc) || defined (__sparc__) || defined (__sparc)
5992 as gc_os_dep.c suggests is appropriate.
5993
5994 * goops.c (prep_hashsets): make static to match prototype.
5995 (scm_sym_args): SCM_SYMBOL -> SCM_GLOBAL_SYMBOL. Thanks to Albert
5996 Chin.
5997
5998 * c-tokenize.lex: remove trailing comma from enum. Thanks to
5999 Albert Chin.
6000
6001 * gc_os_dep.c: add NetBSD powerpc config info. Thanks to Thomas
6002 Klausner.
6003
6004 2003-04-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6005
6006 * goops.c (scm_sys_prep_layout_x): Instance allocation is now
6007 indicated through extra fields in getters-n-setters.
6008 (scm_add_slot): Adapted to new format of getters_n_setters slot.
6009 (Thanks to Andy Wingo.)
6010
6011 2003-02-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6012
6013 * gc-segment.c: add comment
6014
6015 2003-04-07 Rob Browning <rlb@defaultvalue.org>
6016
6017 * debug.h: change "id" arg name to "info_id" to avoid objective-c
6018 clash.
6019
6020 * num2integral.i.c (NUM2INTEGRAL): fix bug pointed out by Mikael
6021 and add regression test to standalone/.
6022
6023 2003-04-06 Rob Browning <rlb@defaultvalue.org>
6024
6025 * strings.c (scm_mem2string): use memcpy rather than by-hand loop.
6026 Thanks to Dale P. Smith.
6027
6028 * random.c: #include gmp.h.
6029 (scm_c_random_bignum): normalize result on return.
6030
6031 * init.c: #include gmp.h.
6032
6033 * numbers.h: remove the gmp.h #include (not needed now).
6034
6035 * posix.h: change occurences of "id" to something else so we don't
6036 cause trouble when included via objective-c (can't hurt, might
6037 help). Still have usage in debug.h, though.
6038
6039 2003-04-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6040
6041 * random.c (scm_c_random_bignum): Don't generate a random number
6042 equal to m (the second argument of scm_c_random_bignum); only
6043 generate numbers in the range 0 <= r < m.
6044 (scm_c_default_rstate): Use SCM_VARIABLE_REF to access
6045 scm_var_random_state.
6046
6047 * num2integral.i.c (INTEGRAL2BIG): Put negation of n inside then
6048 clause.
6049
6050 2003-04-05 Rob Browning <rlb@defaultvalue.org>
6051
6052 * modules.c (scm_module_import_interface): move declaration of
6053 uses before any code.
6054
6055 2003-04-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6056
6057 * Makefile.am (scmconfig.h): Look for config.h in top_builddir,
6058 not top_srcdir.
6059
6060 * hashtab.c (rehash_after_gc): Clear to_rehash list before
6061 processing it in order to avoid an infinite loop.
6062
6063 * print.c (scm_prin1): Remember old state of pstate->writingp.
6064
6065 2003-04-05 Marius Vollmer <mvo@zagadka.de>
6066
6067 * Changed license terms to the plain LGPL thru-out.
6068
6069 2003-04-04 Rob Browning <rlb@defaultvalue.org>
6070
6071 * socket.c (FLIPCPY_NET_HOST_128): new macro.
6072 (ipv6_net_to_num, ipv6_num_to_net, bignum_in_ipv6_range_p):
6073 rewrite to handle GMP bignums.
6074
6075
6076 * random.c (scm_c_random_bignum): rewrite to handle GMP bignums.
6077
6078 * ports.c (scm_getc): minor tweak.
6079
6080 * numbers.h: remove SCM_BIGDIG conditionals, reorganize, and
6081 rewrite to handle GMP bignums.
6082
6083 * numbers.c: rewrite *many* functions to handle GMP bignums.
6084
6085 * num2integral.i.c (NUM2INTEGRAL, INTEGRAL2NUM, INTEGRAL2BIG):
6086 handle GMP bignums.
6087
6088 * num2float.i.c (NUM2FLOAT): handle GMP bignums.
6089
6090 * init.c (check_config): remove SCM_BIGDIG conditionals.
6091 (scm_init_guile_1): test to make sure mpz_t fits in a double_cell.
6092
6093 * gc-card.c ("sweep_card"): handle new mpz_t bignums.
6094
6095 * eval.c: remove SCM_BIGDIG conditionals.
6096
6097 * eq.c (s_scm_eqv_p): scm_i_bigcomp -> scm_i_bigcmp.
6098
6099 2003-03-31 Rob Browning <rlb@defaultvalue.org>
6100
6101 * Makefile.am (scmconfig.h): change srcdir to builddir. (Thanks
6102 to Kevin Ryde.)
6103
6104 2003-03-27 Rob Browning <rlb@defaultvalue.org>
6105
6106 * threads.h: fix various preprocessor usages of new public
6107 symbols to expect 0 or 1 values rather than 1 or undefined.
6108 i.e. change #ifdef to #if, etc.
6109
6110 * threads.c: fix various preprocessor usages of new public
6111 symbols to expect 0 or 1 values rather than 1 or undefined.
6112 i.e. change #ifdef to #if, etc.
6113
6114 * tags.h: fix various preprocessor usages of new public
6115 symbols to expect 0 or 1 values rather than 1 or undefined.
6116 i.e. change #ifdef to #if, etc.
6117
6118 * stacks.c: fix various preprocessor usages of new public
6119 symbols to expect 0 or 1 values rather than 1 or undefined.
6120 i.e. change #ifdef to #if, etc.
6121
6122 * stackchk.h: fix various preprocessor usages of new public
6123 symbols to expect 0 or 1 values rather than 1 or undefined.
6124 i.e. change #ifdef to #if, etc.
6125
6126 * stackchk.c: fix various preprocessor usages of new public
6127 symbols to expect 0 or 1 values rather than 1 or undefined.
6128 i.e. change #ifdef to #if, etc.
6129
6130 * sort.c: fix various preprocessor usages of new public
6131 symbols to expect 0 or 1 values rather than 1 or undefined.
6132 i.e. change #ifdef to #if, etc.
6133
6134 * read.c: fix various preprocessor usages of new public
6135 symbols to expect 0 or 1 values rather than 1 or undefined.
6136 i.e. change #ifdef to #if, etc.
6137
6138 * random.c: fix various preprocessor usages of new public
6139 symbols to expect 0 or 1 values rather than 1 or undefined.
6140 i.e. change #ifdef to #if, etc.
6141
6142 * print.c: fix various preprocessor usages of new public
6143 symbols to expect 0 or 1 values rather than 1 or undefined.
6144 i.e. change #ifdef to #if, etc.
6145
6146 * objects.c: fix various preprocessor usages of new public
6147 symbols to expect 0 or 1 values rather than 1 or undefined.
6148 i.e. change #ifdef to #if, etc.
6149
6150 * numbers.h: fix various preprocessor usages of new public
6151 symbols to expect 0 or 1 values rather than 1 or undefined.
6152 i.e. change #ifdef to #if, etc.
6153
6154 * null-threads.c: fix various preprocessor usages of new public
6155 symbols to expect 0 or 1 values rather than 1 or undefined.
6156 i.e. change #ifdef to #if, etc.
6157
6158 * lang.c: fix various preprocessor usages of new public
6159 symbols to expect 0 or 1 values rather than 1 or undefined.
6160 i.e. change #ifdef to #if, etc.
6161
6162 * lang.h: fix various preprocessor usages of new public
6163 symbols to expect 0 or 1 values rather than 1 or undefined.
6164 i.e. change #ifdef to #if, etc.
6165
6166 * iselect.h: fix various preprocessor usages of new public
6167 symbols to expect 0 or 1 values rather than 1 or undefined.
6168 i.e. change #ifdef to #if, etc.
6169
6170 * init.c: fix various preprocessor usages of new public
6171 symbols to expect 0 or 1 values rather than 1 or undefined.
6172 i.e. change #ifdef to #if, etc.
6173
6174 * gh_data.c: fix various preprocessor usages of new public
6175 symbols to expect 0 or 1 values rather than 1 or undefined.
6176 i.e. change #ifdef to #if, etc.
6177
6178 * gh.h: fix various preprocessor usages of new public
6179 symbols to expect 0 or 1 values rather than 1 or undefined.
6180 i.e. change #ifdef to #if, etc.
6181
6182 * gen-scmconfig.c: change most new public symbols to be defined to
6183 0 or 1 rather than being either 1 or undefined.
6184
6185 * gc_os_dep.c: fix various preprocessor usages of new public
6186 symbols to expect 0 or 1 values rather than 1 or undefined.
6187 i.e. change #ifdef to #if, etc.
6188 (STACK_GROWS_DOWN): define to 0 or 1 rather than 1 or undef.
6189
6190 * gc.h: fix various preprocessor usages of new public
6191 symbols to expect 0 or 1 values rather than 1 or undefined.
6192 i.e. change #ifdef to #if, etc.
6193
6194 * gc-card.c: fix various preprocessor usages of new public
6195 symbols to expect 0 or 1 values rather than 1 or undefined.
6196 i.e. change #ifdef to #if, etc.
6197
6198 * gc-mark.c: fix various preprocessor usages of new public
6199 symbols to expect 0 or 1 values rather than 1 or undefined.
6200 i.e. change #ifdef to #if, etc.
6201
6202 * feature.c: fix various preprocessor usages of new public
6203 symbols to expect 0 or 1 values rather than 1 or undefined.
6204 i.e. change #ifdef to #if, etc.
6205
6206 * evalext.c: fix various preprocessor usages of new public
6207 symbols to expect 0 or 1 values rather than 1 or undefined.
6208 i.e. change #ifdef to #if, etc.
6209
6210 * eval.h: fix various preprocessor usages of new public
6211 symbols to expect 0 or 1 values rather than 1 or undefined.
6212 i.e. change #ifdef to #if, etc.
6213
6214 * eval.c: fix various preprocessor usages of new public
6215 symbols to expect 0 or 1 values rather than 1 or undefined.
6216 i.e. change #ifdef to #if, etc.
6217
6218 * eq.c: fix various preprocessor usages of new public
6219 symbols to expect 0 or 1 values rather than 1 or undefined.
6220 i.e. change #ifdef to #if, etc.
6221
6222 * coop.c: fix various preprocessor usages of new public
6223 symbols to expect 0 or 1 values rather than 1 or undefined.
6224 i.e. change #ifdef to #if, etc.
6225
6226 * coop-threads.c: fix various preprocessor usages of new public
6227 symbols to expect 0 or 1 values rather than 1 or undefined.
6228 i.e. change #ifdef to #if, etc.
6229
6230 * coop-pthreads.c: fix various preprocessor usages of new public
6231 symbols to expect 0 or 1 values rather than 1 or undefined.
6232 i.e. change #ifdef to #if, etc.
6233
6234 * coop-defs.h: fix various preprocessor usages of new public
6235 symbols to expect 0 or 1 values rather than 1 or undefined.
6236 i.e. change #ifdef to #if, etc.
6237
6238 * convert.i.c: fix various preprocessor usages of new public
6239 symbols to expect 0 or 1 values rather than 1 or undefined.
6240 i.e. change #ifdef to #if, etc.
6241
6242 * continuations.c: fix various preprocessor usages of new public
6243 symbols to expect 0 or 1 values rather than 1 or undefined.
6244 i.e. change #ifdef to #if, etc.
6245
6246 * _scm.h: fix various preprocessor usages of new public symbols to
6247 expect 0 or 1 values rather than 1 or undefined. i.e. change
6248 #ifdef to #if, etc.
6249
6250 2003-03-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6251
6252 * init.c (scm_init_guile_1): Call scm_i_init_deprecated.
6253
6254 * deprecated.c, deprecated.h: New files, to collect deprecated
6255 things in one place.
6256 * Makefile.am: Added them in all the right places.
6257
6258 * Makefile.am (EXTRA_DIST): Added "scmconfig.h.top".
6259 (scmconfig.h): Get "scmconfig.h.top" from $(srcdir) so that VPATH
6260 builds work.
6261 (DOT_X_FILES): Removed "iselect.x".
6262 (DOT_DOC_FILES): Removed "iselect.doc".
6263
6264 2003-03-25 Rob Browning <rlb@defaultvalue.org>
6265
6266 * win32-socket.h: #include "libguile/__scm.h". Replace usage of
6267 HAVE_WINSOCK2_H with SCM_HAVE_WINSOCK2_H.
6268
6269 * win32-socket.c: #include <config.h> if HAVE_CONFIG_H.
6270
6271 * vports.c: #include <config.h> if HAVE_CONFIG_H.
6272
6273 * unif.c: #include <config.h> if HAVE_CONFIG_H. Replace usage of
6274 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6275
6276 * threads.h: replace usage of struct timespect with
6277 scm_t_timespec. Replace usage of USE_PTHREAD_THREADS with
6278 SCM_USE_PTHREAD_THREADS. Remove typedef for struct timespec in
6279 favor of scm_t_timespec from scmconfig.h.
6280
6281 * threads.c: move libguile/_scm.h include to the top so we pick up
6282 any critical defines like _GNU_SOURCE early. Replace usage of
6283 struct timespect with scm_t_timespec. Replace usage of
6284 STACK_GROWS_UP with SCM_STACK_GROWS_UP. Replace usage of
6285 USE_PTHREAD_THREADS with SCM_USE_PTHREAD_THREADS.
6286
6287 * threads-plugin.h: replace usage of struct timespect with
6288 scm_t_timespec.
6289
6290 * threads-plugin.c: #include <config.h> if HAVE_CONFIG_H. Replace
6291 usage of struct timespect with scm_t_timespec.
6292
6293 * tags.h: move HAVE_STDINT_H handling to scmconfig.h. Move
6294 HAVE_INTTYPES_H handling to scmconfig.h. #include
6295 "libguile/__scm.h". Rework handling for scm_t_bits,
6296 scm_t_signed_bits, SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
6297 SCM_T_SIGNED_BITS_MIN, and SIZEOF_SCM_T_BITS to use scm_t_intptr,
6298 scm_t_uintptr, SCM_SIZEOF_INTPTR_T, and SCM_SIZEOF_UINTPTR_T, and
6299 SCM_SIZEOF_UNSIGNED_LONG. Rename usage of HAVE_ARRAYS to
6300 SCM_HAVE_ARRAYS.
6301
6302 * symbols.c: #include <config.h> if HAVE_CONFIG_H.
6303
6304 * struct.c: #include <config.h> if HAVE_CONFIG_H.
6305
6306 * strports.c: #include <config.h> if HAVE_CONFIG_H.
6307
6308 * strop.c: #include <config.h> if HAVE_CONFIG_H.
6309
6310 * stime.h: move handling of time related headers to scmconfig.h.
6311
6312 * stime.c: #include <config.h> if HAVE_CONFIG_H.
6313
6314 * stacks.c: replace usage of STACK_GROWS_UP with
6315 SCM_STACK_GROWS_UP.
6316
6317 * sort.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
6318 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6319
6320 * socket.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
6321 of uint32 and HAVE_UINT_32 with scm_t_int32.
6322
6323 * smob.c: #include <config.h> if HAVE_CONFIG_H.
6324
6325 * simpos.c: #include <config.h> if HAVE_CONFIG_H.
6326
6327 * script.c: #include <config.h> if HAVE_CONFIG_H.
6328
6329 * scmsigs.c: #include <config.h> if HAVE_CONFIG_H.
6330
6331 * scmconfig.h.top: new file -- preamble for scmconfig.h.
6332
6333 * rw.c: #include <config.h> if HAVE_CONFIG_H.
6334
6335 * regex-posix.c: #include <config.h> if HAVE_CONFIG_H.
6336
6337 * read.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6338
6339 * rdelim.c: #include <config.h> if HAVE_CONFIG_H.
6340
6341 * random.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
6342 of LONG32, LONG64, SIZEOF_LONG, and HAVE_LONG_LONGS with
6343 scm_t_int32, scm_t_int64, and SCM_HAVE_T_INT64. Rename usage of
6344 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6345
6346 * ramap.c: replace usage of HAVE_LONG_LONGS with
6347 "SCM_SIZEOF_LONG_LONG != 0".
6348
6349 * putenv.c: #include <config.h> if HAVE_CONFIG_H. #include
6350 "libguile/scmconfig.h".
6351
6352 * pthread-threads.c: #include <config.h> if HAVE_CONFIG_H.
6353
6354 * print.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6355 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6356
6357 * posix.c: #include <config.h> if HAVE_CONFIG_H.
6358
6359 * ports.c: #include <config.h> if HAVE_CONFIG_H.
6360
6361 * objects.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6362
6363 * numbers.h: replace usage of HAVE_FLOATINGPOINT_H with
6364 SCM_HAVE_FLOATINGPOINT_H. Replace usage of HAVE_IEEEFP_H with
6365 SCM_HAVE_IEEEFP_H. Replace usage of HAVE_NAN_H with
6366 SCM_HAVE_NAN_H. Replace usage of STDC_HEADERS with
6367 SCM_HAVE_STDC_HEADERS. Replace usage of ptrdiff_t with
6368 scm_t_ptrdiff. Replace usage of HAVE_LONG_LONGS with
6369 "SCM_SIZEOF_LONG_LONG != 0".
6370
6371 * numbers.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
6372 of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0". Replace
6373 usage of ptrdiff_t with scm_t_ptrdiff. Replace usage of
6374 SIZEOF_PTRDIFF_T with SCM_SIZEOF_SCM_T_PTRDIFF.
6375
6376 * num2integral.i.c: #include <config.h> if HAVE_CONFIG_H.
6377
6378 * null-threads.h: replace usage of struct timespect with
6379 scm_t_timespec.
6380
6381 * net_db.c: #include <config.h> if HAVE_CONFIG_H.
6382
6383 * mkstemp.c: #include <config.h> if HAVE_CONFIG_H. #include
6384 "libguile/__scm.h". Remove definition of gcc_uint64_t in favor of
6385 scm_t_uint64 and rename usages.
6386
6387 * mallocs.c: #include <config.h> if HAVE_CONFIG_H.
6388
6389 * load.c: #include <config.h> if HAVE_CONFIG_H.
6390
6391 * iselect.h: move handling of time related headers to scmconfig.h.
6392 Rename usage of HAVE_SYS_SELECT_H to SCM_HAVE_SYS_SELECT_H.
6393 Rename usage of HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Rename
6394 usage of USE_COOP_THREADS to SCM_USE_COOP_THREADS.
6395
6396 * iselect.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6397 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
6398 USE_NULL_THREADS to SCM_USE_NULL_THREADS.
6399
6400 * ioext.c: #include <config.h> if HAVE_CONFIG_H.
6401
6402 * inline.h: #include "libguile/__scm.h" at the top. Change code
6403 to use SCM_C_INLINE and SCM_INLINE_C_INCLUDINT_INLINE_H to decide
6404 what to do instead of creating a new public #define. Rename usage
6405 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
6406 USE_NULL_THREADS to SCM_USE_NULL_THREADS. Rename usage of
6407 USE_COPT_THREADS to SCM_USE_COPT_THREADS.
6408
6409 * inline.c: rearrange handling -- now we just #define
6410 SCM_INLINE_C_INCLUDING_INLINE_H to 1 and #include
6411 "libguile/inline.h". scmconfig.h will define SCM_C_INLINE as
6412 appropriate, and we use that in inline.h along with the above
6413 define to determine how to respond.
6414
6415 * init.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
6416 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6417
6418 * guile.c: #include <config.h> if HAVE_CONFIG_H.
6419
6420 * gh_data.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6421 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6422
6423 * gh.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6424
6425 * gen-scmconfig.h.in: new file -- see gen-scmconfig.c for details.
6426
6427 * gen-scmconfig.c: new file -- see comments in file for details.
6428
6429 * gdbinit.c: #include <config.h> if HAVE_CONFIG_H.
6430
6431 * gc_os_dep.c: #include <config.h> if HAVE_CONFIG_H. Replace
6432 usage of STACK_GROWS_UP with SCM_STACK_GROWS_UP.
6433
6434 * gc.h: replace usage of SIZEOF_LONG with
6435 SCM_SIZEOF_UNSIGNED_LONG. Replace usage of USE_PTHREAD_THREADS
6436 with SCM_USE_PTHREAD_THREADS. Remove SCM_SIZEOF_LONG definition
6437 since we handle that in scmconfig.h now.
6438
6439 * gc.c: #include <config.h> if HAVE_CONFIG_H.
6440
6441 * gc-mark.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6442 of HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of
6443 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6444
6445 * gc-malloc.c: #include <config.h> if HAVE_CONFIG_H.
6446
6447 * gc-card.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6448 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6449
6450 * fports.c: #include <config.h> if HAVE_CONFIG_H.
6451
6452 * filesys.c: #include <config.h> if HAVE_CONFIG_H.
6453
6454 * feature.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6455 of USE_NULL_THREADS to SCM_USE_NULL_THREADS.
6456
6457 * extensions.c: #include <config.h> if HAVE_CONFIG_H.
6458
6459 * evalext.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6460 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6461
6462 * eval.c: #include <config.h> if HAVE_CONFIG_H. #include
6463 "libguile/__scm.h" rather than scmconfig.h. Rename usage of
6464 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
6465 with "SCM_SIZEOF_LONG_LONG != 0".
6466
6467 * error.c: #include <config.h> if HAVE_CONFIG_H.
6468
6469 * eq.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
6470 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
6471 with "SCM_SIZEOF_LONG_LONG != 0".
6472
6473 * deprecation.c: #include <config.h> if HAVE_CONFIG_H.
6474
6475 * coop.c: replace usage of struct timespect with scm_t_timespec.
6476 #include <config.h> if HAVE_CONFIG_H.
6477
6478 * coop-threads.c: #include "libguile/_scm.h" early. Replace
6479 usage of struct timespect with scm_t_timespec. Replace usage of
6480 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
6481
6482 * coop-pthreads.c: #include "libguile/_scm.h" early. Replace
6483 usage of struct timespect with scm_t_timespec. Replace usage of
6484 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
6485
6486 * coop-defs.h: move handling of time related headers to
6487 scmconfig.h. Add #include "libguile/__scm.h". Rename usage of
6488 HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Replace usage of struct
6489 timespect with scm_t_timespec.
6490
6491 * convert.i.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6492
6493 * convert.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6494
6495 * convert.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6496 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6497
6498 * continuations.c: move libguile/_scm.h include to the top so we
6499 pick up any critical defines like _GNU_SOURCE early.
6500
6501 * backtrace.c: #include <config.h> if HAVE_CONFIG_H.
6502
6503 * async.c: #include <config.h> if HAVE_CONFIG_H.
6504
6505 * alloca.c: #include <config.h> if HAVE_CONFIG_H.
6506
6507 * _scm.h: #include <config.h> if HAVE_CONFIG_H.
6508 Rename usage of USE_PTHREAD_THREADS to SCM_USE_PTHREAD_THREADS.
6509
6510 * __scm.h: move libguile/scmconfig.h include up to the top, so
6511 we're sure to pick up any critical defines like _GNU_SOURCE early.
6512 #include <limits.h> removed in favor of scmconfig.h inclusion when
6513 appropriate. STDC_HEADERS based inclusion of stdlib.h,
6514 sys/types.h, stddef.h, and sys/stdtypes.h removed in favor of
6515 scmconfig.h inclusion when appropriate. Various Win32 related
6516 definitions removed in favor of scmconfig.h inclusion when
6517 appropriate.
6518 (HAVE_UINTPTR_T): definition removed (see NEWS).
6519 (SIZEOF_PTRDIFF_T): definition removed (see NEWS).
6520 (HAVE_LONG_LONGS): definition removed (see NEWS).
6521 (HAVE_LONG_LONG): definition removed (see NEWS).
6522 (HAVE_PTRDIFF_T): definition removed (see NEWS).
6523
6524 * Makefile.am: scmconfig.h is now generated by building and
6525 running gen-scmconfig.h and capturing its output. gen-scmconfig
6526 uses config.h and the configure.in generated gen-scmconfig.h to
6527 decide what to output. See gen-scmconfig.c for details.
6528 (noinst_PROGRAMS): add gen-scmconfig.
6529 (gen_scmconfig_SOURCES): new variable.
6530 (gen-scmconfig.$(OBJEXT)): new target - be careful to handle
6531 cross-compiling right.
6532 (scmconfig.h): build scmconfig.h from gen-scmconfig's output.
6533 (BUILT_SOURCES): add scmconfig.h.
6534
6535 2003-03-19 Marius Vollmer <mvo@zagadka.de>
6536
6537 * gc_os_dep.c: Added defines for sparc-unknown-netbsdelf1.5 from
6538 Adrian Bunk. Thanks!
6539
6540 2003-03-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6541
6542 * goops.c (make_class_from_template): New fourth arg:
6543 applicablep.
6544 (scm_class_extended_generic_with_setter, scm_class_self): Fixed
6545 cpls.
6546
6547 * smob.c (scm_set_smob_apply): Call scm_i_inherit_applicable.
6548
6549 * goops.c, objects.c, objects.h (scm_make_extended_class): New
6550 second arg: applicablep.
6551 (scm_i_inherit_applicable): New function.
6552
6553 * goops.c, goops.h (scm_class_applicable,
6554 scm_class_extended_accessor): New classes.
6555
6556 2003-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
6557
6558 * procs.c (scm_procedure_documentation): Removed redundant
6559 SCM_NIMP test and replaced other calls to SCM_IMP by more explicit
6560 predicates.
6561
6562 2003-03-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6563
6564 * list.c, list.h (scm_filter, scm_filter_x): New functions.
6565
6566 * modules.c (scm_module_import_interface): New function.
6567
6568 * goops.c, goops.h (scm_class_accessor_method): Renamed from
6569 scm_class_accessor.
6570 (scm_class_accessor): New class.
6571
6572 2003-03-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6573
6574 * goops.c (scm_primitive_generic_generic): Enable primitive
6575 generic if not enabled.
6576 (scm_sys_goops_loaded): Setup unextended primitive generics.
6577
6578 * goops.c, goops.h (scm_c_extend_primitive_generic): New function.
6579
6580 * snarf.h (SCM_PRIMITIVE_GENERIC, SCM_PRIMITIVE_GENERIC_1): New
6581 snarf macros.
6582
6583 * numbers.c (scm_abs): Use SCM_PRIMITIVE_GENERIC. (This is only a
6584 testing example. All uses of SCM_GPROC should be converted.)
6585
6586 * procprop.c (scm_stand_in_scm_proc): Use scm_assq instead of
6587 scm_assoc.
6588
6589 * eq.c (scm_equal_p): Turned into a primitive generic.
6590
6591 2003-02-27 Rob Browning <rlb@defaultvalue.org>
6592
6593 * Makefile.am (scmconfig.h): new target -- generate file from
6594 ../config.h.
6595 (modinclude_HEADERS): remove version.h.
6596 (nodist_modinclude_HEADERS): add version.h.
6597
6598 2003-02-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6599
6600 This fixes a serious GC bug, introduced during the latest
6601 reorganization of the GC, which disabled freeing of structs and
6602 GOOPS objects:
6603
6604 * struct.c (scm_struct_prehistory): Init scm_i_structs_to_free to
6605 SCM_EOL.
6606 (scm_struct_prehistory): Move scm_free_structs to
6607 scm_before_mark_c_hook.
6608
6609 * gc-card.c (sweep_card): Check that we haven't swept structs on
6610 this card before. That can happen if scm_i_sweep_all_segments has
6611 been called from some other place than scm_igc.
6612
6613 2003-02-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6614
6615 * environments.c (DEFAULT_OBARRAY_SIZE): Changed from 137 to 31
6616 (since hash tables now adapt their size).
6617
6618 * modules.c (scm_modules_prehistory): Changed from 2001 to 1533
6619 (current number of prehistory bindings; hashtable code will select
6620 a prime which is greater than this value).
6621
6622 * symbols.c (scm_symbols_prehistory): Changed from 1009 to 2139
6623 (current number of initial symbols).
6624
6625 * properties.c (scm_init_properties): Don't specify size of
6626 scm_properties_whash.
6627
6628 * objprop.c (scm_init_objprop): Don't specify size of
6629 scm_object_whash.
6630
6631 * keywords.c (scm_init_keywords): Don't specify a hash table size.
6632
6633 * hooks.c (scm_c_hook_add): Fixed bug in append mode.
6634
6635 The following changes introduce the use of resizable hash tables
6636 throughout Guile. It also renames the old *-hash-table* functions
6637 to *-alist-vector* and places them, together with the rest of the
6638 weak vector support, in the module (ice-9 weak-vector). We should
6639 probably introduce a new, better, API for weak references, for
6640 example "weak pairs" a la MIT-Scheme. (In Chez scheme, they even
6641 look like and are used like ordinary pairs.)
6642
6643 * environments.c (obarray_enter, obarray_retrieve, obarray_remove,
6644 leaf_environment_fold, obarray_remove_all): Use hashtable
6645 accessors.
6646
6647 * gc.c (scm_init_storage): Moved hook initialization to
6648 scm_storage_prehistory.
6649 (scm_storage_prehistory): New function.
6650 (scm_igc): Added commentary about placement of
6651 scm_after_sweep_c_hook.
6652
6653 * gc-mark.c (scm_mark_all): Use hashtable accessors.
6654 (scm_gc_mark_dependencies): Use SCM_WVECT_WEAK_KEY_P and
6655 SCM_WVECT_WEAK_VALUE_P.
6656
6657 * hashtab.c, hashtab.h (scm_hash_for_each, scm_hash_map): New
6658 functions.
6659 (scm_vector_to_hash_table, scm_c_make_resizing_hash_table):
6660 Removed.
6661 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table,
6662 scm_make_doubly_weak_hash_table): Moved here from weaks.c.
6663
6664 * init.c (scm_init_guile_1): Removed call to scm_init_weaks; Added
6665 calls to scm_storage_prehistory and scm_hashtab_prehistory.
6666
6667 * modules.c (module-reverse-lookup): Use hashtable accessors.
6668
6669 * symbols.c, symbols.h (scm_i_hash_symbol): New function.
6670
6671 * weaks.c, weaks.h (scm_make_weak_key_alist_vector,
6672 scm_make_weak_value_alist_vector,
6673 scm_make_doubly_weak_alist_vector): New functions.
6674
6675 * weaks.c (scm_init_weaks_builtins): New function.
6676
6677 * weaks.h (SCM_WVECTF_WEAK_KEY, SCM_WVECTF_WEAK_VALUE,
6678 SCM_WVECTF_NOSCAN, SCM_WVECT_WEAK_KEY_P, SCM_WVECT_WEAK_VALUE_P,
6679 SCM_WVECT_NOSCAN_P): New macros.
6680
6681 * weaks.c (scm_scan_weak_vectors): Use SCM_WVECT_WEAK_KEY_P
6682 and SCM_WVECT_WEAK_VALUE_P.
6683
6684 * weaks.c, weaks.h (scm_i_allocate_weak_vector): Renamed from
6685 allocate_weak_vector and exported.
6686
6687 2003-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6688
6689 * hashtab.c: Undid thread safety. (We decided that it's better to
6690 let the user explicitly protect the tables (or not) according what
6691 is suitable for the application.)
6692
6693 2003-02-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6694
6695 * hashtab.c (scm_hash_fn_remove_x, scm_internal_hash_fold): Made
6696 thread safe and handle resizing tables.
6697 (scm_ihashx, scm_sloppy_assx, scm_delx_x): Removed
6698 SCM_DEFER/ALLOW_INTS.
6699
6700 2003-02-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6701
6702 * hashtab.c (scm_vector_to_hash_table,
6703 scm_c_make_resizing_hash_table, scm_make_hash_table): New
6704 functions.
6705 (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x): Made thread
6706 safe and handle resizing tables.
6707
6708 * weaks.c (scm_make_weak_key_hash_table,
6709 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
6710 Size argument made optional. Return resizable table if not
6711 specified.
6712
6713 2003-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6714
6715 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
6716 Fixed formals tests for closures. (Thanks to Kevin Ryde.)
6717
6718 2003-02-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6719
6720 * debug.c (scm_procedure_source): Handle all objects for which
6721 procedure? is #t. (Thanks to Bill Schottstaedt.)
6722
6723 2003-01-23 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6724
6725 * futures.c (mark_futures): Don't need to mark data of recycled
6726 futures.
6727 (scan_futures, cleanup_undead): Be smarter about marking
6728 futures---avoid unnecessary passes through future lists.
6729
6730 * futures.h, futures.c: New files; Introduced recycling of
6731 futures. For fine-grained threading this lifts performance to
6732 another level. We can now use parallelization in inner loops of
6733 Guile programs without impossible overhead.
6734
6735 * threads.h, threads.c: Moved futures to their own file.
6736
6737 * Makefile.am (libguile_la_SOURCES): Added futures.c.
6738 (DOT_X_FILES): Added futures.x.
6739 (DOT_DOC_FILES): Added futures.doc.
6740 (modinclude_HEADERS): Added futures.h.
6741
6742 * threads.c, threads.h (scm_i_create_thread): Renamed from
6743 create_thread and made global.
6744
6745 * futures.c (scm_make_future): New procedure.
6746
6747 * eval.c: #include "libguile/futures.h".
6748
6749 * init.c: #include "futures.h"
6750 (scm_init_guile_1): Call scm_init_futures.
6751
6752 * stime.c (SCM_TIME_UNITS_PER_SECOND): Renamed from CLKTCK.
6753
6754 * stime.h (SCM_TIME_UNITS_PER_SECOND): Definition moved here.
6755
6756 * eval.c, eval.h (scm_trampoline_0, scm_i_call_closure_0): New
6757 functions.
6758
6759 * eval.c (scm_trampoline_1): Fixed arguments test for closures.
6760
6761 2003-01-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6762
6763 * threads.c (create_thread): Don't unwind dynwind chain of parent
6764 thread before creation. Just start the new thread with an empty
6765 dynwind chain.
6766
6767 2003-01-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6768
6769 * evalext.c, evalext.h (scm_self_evaluating_p): New function.
6770
6771 2003-01-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6772
6773 * threads.c (scm_timed_wait_condition_variable): Support timed
6774 waiting also for simple condition variables.
6775
6776 * goops.c (TEST_CHANGE_CLASS): Use scm_change_object_class instead
6777 of calling the procedure change-object-class.
6778
6779 2003-01-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6780
6781 * ramap.c (scm_ramapc): Typo in error message.
6782
6783 2003-01-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6784
6785 * goops.c (scm_sys_prep_layout_x): Bugfix: Only create layout for
6786 slots with instance allocation.
6787
6788 * goops.c, goops.h (scm_class_extended_generic_with_setter): New
6789 class.
6790 (scm_compute_applicable_methods): Use scm_generic_function_methods.
6791
6792 * goops.c (scm_generic_function_methods): Support extended
6793 generic functions.
6794
6795 2002-12-29 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6796
6797 * eval.c (unmemocopy): Bugfix: scm_sym_delay --> scm_sym_future.
6798 Thanks to Neil for pointing this out!
6799
6800 2002-12-29 Neil Jerram <neil@ossau.uklinux.net>
6801
6802 * lang.h: Remove declarations matching definitions removed from
6803 lang.c (just below).
6804
6805 2002-12-28 Neil Jerram <neil@ossau.uklinux.net>
6806
6807 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
6808 scm_m_while, scm_nil_eq): Remove definitions that were superfluous
6809 and already commented out.
6810
6811 * read.h (scm_lreadparen), read.c (scm_lreadr, scm_read_token,
6812 scm_lreadparen): Support reading vectors with Elisp syntax if
6813 SCM_ELISP_READ_EXTENSIONS is defined. (SCM_ELISP_READ_EXTENSIONS
6814 is not currently defined, and there isn't even a configure switch
6815 to enable it yet.)
6816
6817 2002-12-26 Marius Vollmer <mvo@zagadka.ping.de>
6818
6819 * Makefile.am (c-tokenize.o): Refer to source via $< so that vpath
6820 builds work.
6821 (EXTRA_DIST): Added version.h.in.
6822
6823 2002-12-21 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6824
6825 This change makes it possible for one thread to do lazy sweeping
6826 while other threads are running. Now only the mark phase need to
6827 have all threads asleep. We should look further into this issue.
6828 Presently, I've put the locking of scm_i_sweep_mutex at
6829 "conservative" places due to my current lack of knowledge about
6830 the garbage collector. Please feel free to restrict these regions
6831 further to allow for maximal parallelism!
6832
6833 * gc.c, gc.h (scm_i_sweep_mutex): New mutex.
6834
6835 * gc.c (scm_gc_for_newcell), gc-malloc.c (scm_realloc,
6836 scm_gc_register_collectable_memory): Substitute locking of
6837 scm_i_sweep_mutex for calls to scm_i_thread_put_to_sleep.
6838 (scm_igc): Lock sweep mutex here instead of in callers; Calls to
6839 scm_i_thread_put_to_sleep/scm_i_thread_wake_up used to demarkate
6840 the single-thread section (which now only contains the mark
6841 phase).
6842 (scm_gc): Don't lock sweeo mutex here since scm_igc locks it;
6843 Removed SCM_DEFER/ALLOW_INTS. Simply call scm_igc directly.
6844
6845 * threads.c (gc_section_mutex): Removed.
6846
6847 2002-12-19 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6848
6849 * threads.c (create_thread): Clear parent field in root state in
6850 order not to unnecessarily remember dead threads.
6851
6852 * eval.c (call_subr2o_1, call_lsubr2_2): New functions.
6853 (scm_trampoline_1, scm_trampoline_2): Use them.
6854
6855 2002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6856
6857 Partial introduction of real plugin interface.
6858
6859 * Makefile.am (modinclude_HEADERS): Added threads-plugin.h.
6860 (EXTRA_DIST): Added threads-plugin.c.
6861
6862 * threads-plugin.h, threads-plugin.c: New files.
6863
6864 * threads.h: #include "libguile/threads-plugin.h".
6865
6866 * threads.c: #include "libguile/threads-plugin.c".
6867
6868 * pthread-threads.c: Temporarily remove debugging functions.
6869
6870 * threads.c, threads.h (scm_yield): Added back.
6871
6872 2002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6873
6874 * threads.c (really_launch): Detach before unlocking
6875 thread_admin_mutex in order not to risk being joined.
6876 (scm_i_thread_put_to_sleep, scm_i_thread_wake_up): Keep
6877 thread_admin_mutex locked during GC.
6878
6879 * pthread-threads.c, pthread-threads.h: Improvements to debugging
6880 functions.
6881
6882 2002-12-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6883
6884 * pthread-threads.c, pthread-threads.h (SCM_DEBUG_THREADS): Added
6885 support for debugging mutex operations.
6886
6887 * threads.c (scm_thread): Removed filed joining_threads.
6888 (thread_print): Print thread number as well as address of thread
6889 structure.
6890 (scm_join_thread): Bugfix.
6891 (scm_lock_mutex, scm_try_mutex, scm_unlock_mutex,
6892 scm_timed_wait_condition_variable, scm_signal_condition_variable,
6893 scm_broadcast_condition_variable): Use the low-level API.
6894 (scm_all_threads): Return copy of thread list (to prevent
6895 unintended destruction).
6896 (scm_threads_prehistory): Initialize heap_mutex of fake thread.
6897
6898 * pthread-threads.c, pthread-threads.h, threads.c: Fixes to
6899 pthread "native" recursive mutex support.
6900
6901 2002-12-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6902
6903 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): New definitions.
6904 Simply lock a thread C API recursive mutex.
6905 (SCM_NONREC_CRITICAL_SECTION_START,
6906 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
6907 SCM_REC_CRITICAL_SECTION_END): Removed.
6908
6909 * eval.c: Replaced SOURCE_SECTION_START / SOURCE_SECTION_END with
6910 direct calls to scm_rec_mutex_lock / unlock around the three calls
6911 to scm_m_expand_body.
6912
6913 * eval.c, eval.h (promise_free): New function.
6914 (scm_force): Rewritten; Now thread-safe; Removed
6915 SCM_DEFER/ALLOW_INTS.
6916
6917 * pthread-threads.h: Added partially implemented plugin interface
6918 for recursive mutexes. These are, for now, only intended to be
6919 used internally within the Guile implementation.
6920
6921 * pthread-threads.c: New file.
6922
6923 * threads.c: Conditionally #include "pthread-threads.c".
6924
6925 * eval.c, eval.h (scm_makprom, scm_force): Rewritten to be
6926 thread-safe;
6927
6928 * snarf.h (SCM_MUTEX, SCM_GLOBAL_MUTEX, SCM_REC_MUTEX,
6929 SCM_GLOBAL_REC_MUTEX): New macros.
6930
6931 * eval.c, threads.c, threads.h, snarf.h: Rewrote critical section
6932 macros---use mutexes instead.
6933
6934 * tags.h (SCM_IM_FUTURE): New tag.
6935
6936 * eval.c (scm_m_future): New primitive macro.
6937 (SCM_CEVAL): Support futures.
6938 (unmemocopy): Support unmemoization of futures.
6939
6940 * print.c (scm_isymnames): Name of future isym.
6941
6942 * version.c: Unmade some changes to my private copy that got
6943 committed by mistake.
6944
6945 2002-12-11 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6946
6947 * gc-malloc.c, gc.h, init.c: Reverted gc-malloc change of
6948 2002-12-10.
6949
6950 * gc.c (scm_igc): Don't call scm_i_thread_invalidate_freelists.
6951
6952 * gc.c (scm_gc_sweep): Call it here instead, which is a more
6953 logical place.
6954
6955 * threads.c (create_thread): Remember root object until the handle
6956 of the new thread is on all_threads list.
6957
6958 * root.c (scm_make_root): Moved copying of fluids until after
6959 creation of root handle so that the fluids are GC protected. Also
6960 removed the critical section.
6961
6962 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6963
6964 * gc-malloc.c, gc.h (scm_gc_malloc_prehistory): New function.
6965
6966 * gc-malloc.c (malloc_mutex): New mutex.
6967 (scm_gc_malloc_prehistory): Initialize it.
6968 (scm_realloc): Serialize call to realloc
6969 (scm_calloc): Same for calloc.
6970 Thanks to Wolfgang Jaehrling!
6971 (Now we have to make sure all calls to malloc/realloc are made
6972 through scm_malloc.)
6973
6974 * init.c (scm_init_guile_1): Call scm_gc_malloc_prehistory.
6975
6976 * threads.c (really_launch): Release heap (to prevent deadlock).
6977 (create_thread): Release heap before locking thread admin mutex.
6978
6979 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6980
6981 * threads.c (scm_i_thread_invalidate_freelists): New
6982 function.
6983
6984 * gc.c (scm_igc): Call scm_i_thread_invalidate_freelists.
6985
6986 * modules.c (scm_export): Inserted a return statement.
6987
6988 2002-12-10 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6989
6990 * modules.c (scm_export): new function
6991
6992 * gc-card.c: add a note about malloc()/free() overhead.
6993
6994 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6995
6996 * Makefile.am (c-tokenize.$(OBJEXT)): Don't look for c-tokenize.c
6997 in srcdir.
6998
6999 2002-12-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7000
7001 These changes remove scm_ints_disabled (which hasn't has any
7002 effect in Guile for quite some time).
7003
7004 * async.c, error.h (scm_ints_disabled): Removed.
7005
7006 * gc.c (scm_gc_for_newcell), init.c (scm_init_guile_1),
7007 root.c (scm_internal_cwdr), gdbint.c (SCM_BEGIN_FOREIGN_BLOCK,
7008 SCM_END_FOREIGN_BLOCK): Don't touch scm_ints_disabled.
7009 (old_ints): Removed.
7010
7011 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Define as a recursive
7012 critical section.
7013 (SCM_REDEFER_INTS, SCM_ALLOW_INTS): Define as SCM_DEFER_INTS and
7014 SCM_ALLOW_INTS.
7015
7016 2002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7017
7018 * threads.c (scm_mutex_lock, scm_cond_wait, scm_cond_timedwait):
7019 Removed accidental #if 0 around these functions.
7020
7021 These changes are the start of support for preemptive
7022 multithreading. Marius and I have agreed that I commit this code
7023 into the repository although it isn't thoroughly tested and surely
7024 introduces many bugs. The bugs should only be exposed when using
7025 threads, though. Signalling and error handling for threads is
7026 very likely broken. Work on making the implementation cleaner and
7027 more efficient is needed.
7028
7029 * __scm.h (SCM_ALLOW_INTS_ONLY): Removed.
7030 (SCM_NONREC_CRITICAL_SECTION_START,
7031 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
7032 SCM_REC_CRITICAL_SECTION_END): New macros.
7033 (SCM_CRITICAL_SECTION_START/END): Defined here.
7034
7035 * eval.c: Insert SOURCE_SECTION_START / SOURCE_SECTION_END around
7036 the three calls to scm_m_expand_body.
7037
7038 * gc.h: #include "libguile/pthread-threads.h";
7039 (SCM_FREELIST_CREATE, SCM_FREELIST_LOC): New macros.
7040
7041 * gc.c (scm_i_freelist, scm_i_freelist2): Defined to be of type
7042 scm_t_key;
7043
7044 * gc.c, gc-freelist.c, inline.h: Use SCM_FREELIST_LOC for freelist
7045 access.
7046
7047 * gc-freelist.c (scm_gc_init_freelist): Create freelist keys.
7048
7049 * gc-freelist.c, threads.c (really_launch): Use
7050 SCM_FREELIST_CREATE.
7051
7052 * gc-malloc.c (scm_realloc, scm_gc_register_collectable_memory):
7053
7054 * gc.c (scm_i_expensive_validation_check, scm_gc,
7055 scm_gc_for_newcell): Put threads to sleep before doing GC-related
7056 heap administration so that those pieces of code are executed
7057 single-threaded. We might consider rewriting these code sections
7058 in terms of a "call_gc_code_singly_threaded" construct instead of
7059 calling the pair of scm_i_thread_put_to_sleep () and
7060 scm_i_thread_wake_up (). Also, we would want to have as many of
7061 these sections eleminated.
7062
7063 * init.c (scm_init_guile_1): Call scm_threads_prehistory.
7064
7065 * inline.h: #include "libguile/threads.h"
7066
7067 * pthread-threads.h: Macros now conform more closely to the
7068 pthreads interface. Some of them now take a second argument.
7069
7070 * threads.c, threads.h: Many changes.
7071
7072 2002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7073
7074 * Makefile.am (version.h): Changed $^ --> $< in rule for
7075 version.h.
7076
7077 2002-12-08 Rob Browning <rlb@defaultvalue.org>
7078
7079 * version.h.in (SCM_MICRO_VERSION): use @--@ substitution now.
7080 (SCM_MINOR_VERSION): use @--@ substitution now.
7081 (SCM_MICRO_VERSION): use @--@ substitution now.
7082 (scm_effective_version): new function prototype.
7083
7084 * version.c (scm_effective_version): new function, also add
7085 effective-version.
7086
7087 * Makefile.am (schemelibdir): VERSION -> GUILE_EFFECTIVE_VERSION.
7088 (libpath.h): use GUILE_EFFECTIVE_VERSION to compute
7089 SCM_LIBRARY_DIR.
7090 (version.h): generate this here rather than configure.in. This
7091 approach tracks source edits better (i.e. more immediately).
7092 Might be worth considering for other .in files too.
7093
7094 2002-12-02 Marius Vollmer <mvo@zagadka.ping.de>
7095
7096 Reorganized thread package selection. A thread package now only
7097 implements a small set of pthread like functions and Guile
7098 implements the rest on top of that. Guile's implementation is
7099 what the "coop-pthreads" package has been previously. Support for
7100 "coop" threads has been removed until I get time to add it again.
7101
7102 * Makefile.am (libguile_la_SOURCES): Removed iselect.c.
7103 (noinst_HEADERS): Removed coop-threads.c, coop-threads.h, coop.c,
7104 null-threads.c, coop-pthreads.c.
7105 (modinclude_HEADERS): Removed coop-defs.h, coop-pthreads.h. Added
7106 pthread-threads.h.
7107
7108 * validate.h (SCM_VALIDATE_THREAD): Moved to threads.h.
7109
7110 * threads.h: Do not include "libguile/coop-defs.h". Include
7111 "libguile/pthread-threads.h" for USE_COPT_THREADS. Removed
7112 (previously deprecated) C level thread API prototypes. They are
7113 now in the thread package specific headers, "null-threads.h" and
7114 "pthread-threads.h".
7115 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
7116 New.
7117 (scm_threads_init): Removed.
7118 (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END,
7119 SCM_THREAD_SWITCHING_CODE, scm_i_switch_counter,
7120 SCM_I_THREAD_SWITCH_COUNT): Define here.
7121 (scm_single_thread_p): Removed.
7122 (scm_call_with_new_thread): Take two args directly instead of list
7123 of two args.
7124 (scm_i_thread_data, scm_i_set_thread_data, SCM_THREAD_LOCAL_DATA,
7125 SCM_SET_THREAD_LOCAL_DATA): Define here.
7126
7127 * threads.c: Merged with "coop-pthreads.c".
7128
7129 * null-threads.h: Implement pthread-like API as a set of macros.
7130
7131 * pthread-threads.h: New, implement pthread-like API by deferring
7132 to pthread itself.
7133
7134 * init.c (scm_init_guile_1): Do not call scm_init_iselect, which
7135 has been lost in the reorganization.
7136
7137 2002-12-01 Mikael Djurfeldt <mdj@linnaeus>
7138
7139 The following change makes it possible to move procedure
7140 application dispatch outside inner loops. The motivation was
7141 clean implementation of efficient replacements of R5RS primitives
7142 in SRFI-1.
7143
7144 The semantics is clear: scm_trampoline_N returns an optimized
7145 version of scm_call_N (or NULL if the procedure isn't applicable
7146 on N args).
7147
7148 Applying the optimization to map and for-each increases efficiency
7149 noticeably. For example, (map abs ls) is 8 times faster than
7150 before.
7151
7152 * eval.h (scm_t_trampoline_1, scm_t_trampoline_2): New types.
7153
7154 * eval.c, eval.h (scm_trampoline_1, scm_trampoline_2): New functions.
7155
7156 * eval.c (call_subr2_2, call_lsubr_2, call_closure_2): New functions;
7157 (map, for-each): Handle also application on two args as a special
7158 case; Use trampolines.
7159
7160 Other changes:
7161
7162 * sort.c (scm_cmp_function): Choose subr2less for scm_tc7_subr_2o;
7163 (subr2oless): Removed.
7164 (scm_restricted_vector_sort_x): Use scm_return_first to keep the
7165 vector GC protected.
7166
7167 * eval.c (check_map_args): Use scm_out_of_range_pos instead of
7168 scm_out_of_range.
7169
7170 2002-11-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
7171
7172 * evalext.[ch] (scm_m_undefine, undefine): Deprecated.
7173
7174 2002-11-17 Mikael Djurfeldt <mdj@linnaeus>
7175
7176 * debug.c (scm_make_iloc): Added missing "return".
7177
7178 2002-11-17 Marius Vollmer <mvo@zagadka.ping.de>
7179
7180 * strports.c (scm_eval_string_in_module): Validate second arg to
7181 be a module. Thanks to Arno Peters!
7182
7183 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7184
7185 * .cvsignore: remove goops.c
7186
7187 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7188
7189 * modules.c (scm_env_top_level, scm_lookup_closure_module,
7190 module_variable, scm_module_lookup_closure,
7191 scm_module_transformer, scm_sym2var, scm_module_reverse_lookup,
7192 scm_system_module_env_p): Don't compare SCM values with C
7193 operators == or !=. Avoid SCM_IMP predicates. Prefer !SCM_FALSEP
7194 over SCM_NFALSEP.
7195
7196 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7197
7198 * eval.h (SCM_MAKE_ILOC): New macro.
7199
7200 * debug.c (scm_make_iloc): Use SCM_MAKE_ILOC instead of computing
7201 the iloc bitpattern here.
7202
7203 2002-11-14 Mikael Djurfeldt <mdj@linnaeus>
7204
7205 * coop-pthreads.c, coop-pthreads.h: scm_internal_select should be
7206 part of the API, otherwise it's difficult to write Guile
7207 extensions using non-blocking I/O => moved #include
7208 "libguile/iselect.h" from coop-pthreads.c --> coop-pthreads.h.
7209
7210 * coop-pthreads.c (scm_unlock_mutex): Changed s_lock_mutex -->
7211 s_unlock_mutex.
7212
7213 2002-11-10 Marius Vollmer <mvo@zagadka.ping.de>
7214
7215 * __scm.h (USE_THREADS, GUILE_ISELECT): Do not define here. They
7216 are defined in configure.in.
7217
7218 * threads.c: Removed SCM_API from function definitions. SCM_API
7219 is only for declarations.
7220
7221 2002-11-07 Mikael Djurfeldt <mdj@linnaeus>
7222
7223 * coop-pthreads.h: Added support for thread specific data to the
7224 generic C API for the coop-pthreads case.
7225
7226 * threads.c, threads.h (scm_cond_init): Undo unintentional API
7227 change.
7228 (scm_cond_broadcast): Added missing function.
7229
7230 2002-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7231
7232 * coop.c (coop_next_runnable_thread): Removed, wich should have
7233 happened when GUILE_ISELECT was hard-wired.
7234
7235 2002-11-03 Marius Vollmer <mvo@zagadka.ping.de>
7236
7237 * Makefile.am (libguile_la_SOURCES): Added threads.c
7238 (DOT_DOC_FILES): Added threads.doc.
7239 (DOT_X_FILES): Added threads.x.
7240 (EXTRA_libguile_la_SOURCES): Removed threads.c.
7241 (noinst_HEADERS): Added coop-pthreads.c.
7242 (modinclude_HEADERS): Added coop-pthreads.h.
7243
7244 * __scm.h (USE_THREADS, GUILE_ISELECT): Define when
7245 SCM_DEBUG_DEPRECATED. Removed their use thru-out Guile.
7246
7247 * iselect.c: Include "_scm.h" before testing HAVE_UNISTD_H.
7248 Thanks to Bill Schottstaedt!
7249
7250 * numbers.c (scm_integer_expt): Make 0^z == 0 for z != 0.
7251
7252 * _scm.h (HAVE_RESTARTABLE_SYSCALLS): Do define even when
7253 SCM_COPT_THREADS is defined.
7254 (SCM_SYSCALL): Use EINTR-expection version when SCM_COPT_THREADS
7255 is defined.
7256
7257 * coop-pthreads.c: Some harmless renamings of internal stuff.
7258 (create_thread): New, generalized version of
7259 scm_call_with_new_thread.
7260 (scm_call_with_new_thread): Use it.
7261 (scm_spawn_thread): New, use create_thread.
7262
7263 2002-11-02 Marius Vollmer <mvo@zagadka.ping.de>
7264
7265 * coop-pthreads.c, coop-pthreads.h: Redone completely, you might
7266 start testing it now.
7267
7268 * _scm.h: Include <errno.h< so that SCM_SYSCALL is correctly
7269 defined when HAVE_RESTARTABLE_SYSCALLS is not defined.
7270 (HAVE_RESTARTABLE_SYSCALLS): Do not define when USE_COPT_THREADS
7271 is defined.
7272
7273 2002-10-27 Marius Vollmer <mvo@zagadka.ping.de>
7274
7275 * scmsigs.c (signal_cell_handlers, install_handler_data,
7276 scm_delq_spine_x, really_install_handler, install_handler): New
7277 scheme for triggering signal handlers, to simplify take_signal.
7278 (take_signal): Simplified, to avoid race conditions.
7279 (scm_sigaction_for_thread): Use new Scheme. Validate that thread
7280 hasn't exited yet.
7281
7282 * async.c (scm_async_click): Reset pending_asyncs, handle
7283 signal_asyncs. Don't set cdr of a non-signal async to #f.
7284 (scm_i_queue_async_cell): Do not check cdr of cell for #f, queue
7285 always. Set pending_asyncs.
7286 (scm_system_async_mark_for_thread): Check that thread has not
7287 exited.
7288 (scm_unmask_signals, decrease_block): Call scm_async_click after
7289 block_asyncs becomes zero.
7290
7291 * __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of
7292 active_asyncs.
7293
7294 * root.h (scm_root_state): Added pending_asyncs and signal_asyncs
7295 fields.
7296 * root.c (root_mark): Mark them.
7297 (make_root): Initialize them.
7298
7299 * iselect.c, iselect.h: Replaced GUILE_ISELECT with
7300 USE_COOP_THREADS.
7301 (scm_internal_select): Define one version for USE_COOP_THREADS and
7302 one for USE_NULL_THREADS.
7303 (scm_init_iselect): Likewise.
7304
7305 * inline.h (scm_cell, scm_double_cell): Also allow
7306 USE_COPT_THREADS to not protect the slot initializers.
7307
7308 * init.c (scm_init_guile_1): Call scm_init_thread_procs. This is
7309 because threads need to be initialized before the stack, but
7310 gsubrs such as scm_timed_condition_variable_wait can only be
7311 created later.
7312
7313 * threads.h: Include "coop-pthreads.h" when requested.
7314 (scm_threads_make_mutex, scm_threads_lock_mutex,
7315 scm_threads_unlock_mutex, scm_threads_monitor): Removed, they were
7316 not implemented anyway.
7317 (scm_init_thread_procs, scm_try_mutex,
7318 scm_timed_condition_variable_wait,
7319 scm_broadcast_condition_variable, scm_c_thread_exited_p,
7320 scm_thread_exited_p): New prototypes.
7321 (struct timespec): Define if not already defined.
7322 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
7323 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
7324 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
7325 scm_cond_broadcast, scm_cond_destroy): Declarations moved here and
7326 deprecated.
7327
7328 * threads.c: Include <errno.h>. Include "coop-pthreads.c" when
7329 requested.
7330 (scm_thread_exited_p): New.
7331 (scm_try_mutex, scm_broadcast_condition_variable): Newly
7332 registered procedures.
7333 (scm_wait_condition_variable, scm_timed_wait_condition_variable):
7334 Use the latter as the procedure for "wait-condition-variable",
7335 thus offering a optional timeout parameter to Scheme.
7336 (scm_wait_condition_variable): Implement in terms of
7337 scm_timed_wait_condition_variable.
7338 (scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
7339 scm_mutex_unlock, scm_mutex_destroy, scm_cond_init,
7340 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
7341 scm_cond_broadcast, scm_cond_destroy): Implement in terms of
7342 scm_make_mutex, etc, and deprecate.
7343 (scm_init_threads): Do not create smobs, leave this to
7344 scm_threads_init. Do not include "threads.x" file.
7345 (scm_init_thread_procs): New, include "threads.x" here.
7346
7347 * null-threads.h (scm_null_mutex, scm_null_mutex_init,
7348 scm_null_mutex_lock, scm_null_mutex_unlock,
7349 scm_null_mutex_destroy, scm_null_condvar, scm_null_condvar_init,
7350 scm_null_condvar_wait, scm_null_condvar_signal,
7351 scm_null_condvar_destroy): Removed.
7352 (scm_mutex_init, scm_mutex_lock, scm_mutex_unlock, scm_cond_init,
7353 scm_cond_wait, scm_cond_signal, scm_cond_broadcast,
7354 scm_cond_destory): Do not define, they are now deprecated and
7355 handled by threads.{h,c}.
7356
7357 * null-threads.c (scm_null_mutex, scm_null_cond): Define here.
7358 (scm_threads_init): Create smobs here, using the appropriate
7359 sizes.
7360 (block): Removed, now unused.
7361 (scm_c_thread_exited_p): New.
7362 (scm_null_mutex_init, scm_null_mutex_lock, scm_null_mutex_unlock,
7363 scm_null_mutex_destroy, scm_null_condvar_init,
7364 scm_null_condvar_wait, scm_null_condvar_signal,
7365 scm_null_condvar_destroy): Removed and updated users to do their
7366 task directly.
7367 (scm_try_mutex, timeval_subtract,
7368 scm_timed_wait_condition_variable,
7369 scm_broadcast_condition_variable): New.
7370 (scm_wait_condition_variable): Removed.
7371
7372 * coop-defs.h (coop_m): Added 'level' field.
7373 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
7374 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
7375 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
7376 scm_cond_broadcast, scm_cond_destroy, struct timespec): Do not
7377 define.
7378 (coop_condition_variable_broadcast): New.
7379
7380 * coop-threads.c (scm_threads_init): Create smobs here, using the
7381 appropriate sizes.
7382 (scm_c_thread_exited_p, scm_try_mutex,
7383 scm_timed_wait_condition_variable,
7384 scm_broadcast_condition_variable): New.
7385 (scm_wait_condition_variable): Removed.
7386
7387 * coop.c (coop_new_mutex_init): Initialize level.
7388 (coop_mutex_trylock, coop_mutex_lock, coop_mutex_unlock): maintain
7389 level.
7390 (coop_condition_variable_signal): Renamed to
7391 coop_condition_variable_broadcast and reimplemented in terms of
7392 that. Thus...
7393 (coop_condition_variable_broadcast): New.
7394
7395 * goops.c (hell_mutex): Reimplemented using scm_make_mutex, etc.
7396
7397 * coop-pthreads.h, coop-pthreads.c: New, but unfinished.
7398
7399 2002-10-21 Marius Vollmer <mvo@zagadka.ping.de>
7400
7401 * null-threads.c: Include <time.h>. Also, use <...> for inclusion
7402 of system headers.
7403
7404 * async.c, goops.h, modules.h, validate.h (SCM_MAKE_VALIDATE_MSG):
7405 New. Use it instead of SCM_MAKE_VALIDATE in lots of places to
7406 give better error messages. Thanks to Bill Schottstaedt!
7407
7408 2002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
7409
7410 * evalext.h, evalext.c (scm_definedp, scm_defined_p): Renamed
7411 scm_definedp to scm_defined_p and deprecated scm_definedp.
7412
7413 2002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
7414
7415 * async.h, async.c (scm_system_async): Fixed deprecation to work
7416 correctly when deprecated features are excluded.
7417
7418 2002-10-16 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7419
7420 * async.c (scm_system_async_mark_for_thread): Validate thread
7421 argument.
7422
7423 * coop-threads.c (scm_i_thread_root): Do not validate argument.
7424
7425 * feature.c (scm_init_feature): Don't add 'threads' for
7426 USE_NULL_THREADS.
7427
7428 * inline.h (scm_cell, scm_double_cell): Also allow
7429 USE_NULL_THREADS to not protect the slot initializers.
7430
7431 * scmsigs.c (scm_sigaction_for_thread): It's "USE_THREADS" not
7432 "USE_THREAD".
7433
7434 * Makefile.am (noinst_HEADERS): Added null-threads.c.
7435 (modinclude_HEADERS): Added null-threads.h.
7436
7437 * threads.h: Include null-threads.h when !USE_COOP_THREADS.
7438 * threads.c: Include null-threads.c when !USE_COOP_THREADS.
7439 (scm_init_threads): Use generic type names scm_t_mutex and
7440 scm_t_cond instead of coop_m and coop_c.
7441
7442 * null-threads.c, null-threads.h: New files.
7443
7444 2002-10-15 Marius Vollmer <mvo@zagadka.ping.de>
7445
7446 * Makefile.am: Replaced "$<" in non-pattern rules with its value.
7447 This is to support makes that know about "$<" only in pattern
7448 rules, like Sun's make.
7449
7450 2002-10-13 Marius Vollmer <mvo@zagadka.ping.de>
7451
7452 * Makefile.am (libpath.h): Fixed typo in top_srcdir_absolute
7453 substitution. Thanks to David Allouche!
7454
7455 2002-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
7456
7457 * evalext.h: Replaced SCM_DEBUG_DEPRECATED with
7458 !SCM_ENABLE_DEPRECATED.
7459
7460 2002-10-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7461
7462 * async.c (scm_system_async_mark_for_thread): Only call
7463 scm_i_thread_root when USE_THREADS is defined. Use scm_root
7464 otherwise.
7465
7466 * scmsigs.c (take_signal): Only call scm_i_thread_root when
7467 USE_THREADS is defined. Use scm_root otherwise.
7468 (scm_sigaction_for_thread): Ignore THREAD argument when
7469 USE_THREADS is not defined. Also, move THREAD argument defaulting
7470 out of HAVE_SIGACTION section, which was a bug.
7471
7472 2002-10-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7473
7474 * scmsigs.c (scm_sigaction_for_thread): Store original handler in
7475 signal_handlers, not the closure that is used as the async.
7476 The closure is stored in signal_handler_cells, as previously.
7477
7478 2002-10-10 Marius Vollmer <mvo@zagadka.ping.de>
7479
7480 * root.h (scm_root_state): Added 'block_async' slot.
7481 (scm_active_asyncs): Removed abbrev.
7482 * root.c (scm_make_root): Initialize 'block_asyncs' slot.
7483
7484 * __scm.h (SCM_ASYNC_TICK): Do without the scm_active_asyncs
7485 abbrev.
7486
7487 * async.h (scm_call_with_blocked_asyncs,
7488 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
7489 scm_c_call_with_unblocked_asyncs): New prototypes.
7490 (scm_mask_signals, scm_unmask_signals): Deprecated.
7491 (scm_mask_ints): Turned into a macro.
7492 * async.c (scm_mask_ints): Removed.
7493 (scm_run_asyncs): Do not set scm_mask_ints while running an async.
7494 this should not be necessary.
7495 (scm_async_click): Test block_asyncs instead of scm_mask_ints.
7496 (scm_mask_signals, scm_unmask_signals): Deprecated. Emit
7497 deprecation warning and check for errornous use. Set block_asyncs
7498 instead of scm_mask_ints.
7499 (increase_block, decrease_block, scm_call_with_blocked_asyncs,
7500 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
7501 scm_c_call_with_unblocked_asyncs): New.
7502
7503 * script.c (scm_compile_shell_switches): Do not set scm_mask_ints.
7504 Asyncs are enabled by default.
7505
7506 2002-10-09 Neil Jerram <neil@ossau.uklinux.net>
7507
7508 * vports.c (scm_make_soft_port): Allow vector argument to carry a
7509 6th element: an input waiting thunk.
7510 (sf_input_waiting): New.
7511
7512 2002-10-05 Marius Vollmer <mvo@zagadka.ping.de>
7513
7514 * root.c (root_mark): Mark active_asyncs slot.
7515
7516 * async.c (scm_async_click): Set the cdr of a executed handler
7517 cell to SCM_BOOL_F, not SCM_EOL.
7518 (scm_i_queue_async_cell): Queue the cell at the end of the list,
7519 and only if the handler procedure is not already present.
7520 (scm_system_async_mark_for_thread): Initialize cdr of handler cell
7521 with SCM_BOOL_F.
7522 * scmsigs.c (scm_sigaction_for_thread): Likewise.
7523
7524 2002-10-04 Rob Browning <rlb@defaultvalue.org>
7525
7526 * guile.c (main): switch to scm_lt_dlset_preloaded_symbols;
7527
7528 * dynl.c (sysdep_dynl_link): switch to scm_lt_dlhandle,
7529 scm_lt_dlopenext, and scm_lt_dlerror.
7530 (sysdep_dynl_unlink): switch to scm_lt_dlhandle, scm_lt_dlclose,
7531 and scm_lt_dlerror.
7532 (sysdep_dynl_func): switch to scm_lt_dlhandle, scm_lt_dlsym,
7533 and scm_lt_dlerror.
7534 (sysdep_dynl_init): switch to scm_lt_dlinit();
7535
7536 * Makefile.am (libguile_la_LIBADD): switch to use
7537 libguile-ltdl.la.
7538
7539 * numbers.c (scm_integer_expt): (expt 0 1) should be 1.
7540
7541 2002-10-04 Marius Vollmer <mvo@zagadka.ping.de>
7542
7543 * scmsigs.h (scm_sigaction_for_thread): New prototype.
7544 * scmsigs.c (got_signal): Removed.
7545 (signal_handler_cells, signal_handler_threads): New.
7546 (take_signal): Queue the cell of the signal for the specified
7547 thread. Reset the signal handler on systems that don't have
7548 sigaction.
7549 (sys_deliver_signals): Removed.
7550 (close_1): New.
7551 (scm_sigaction_for_thread): Renamed from scm_sigaction and
7552 extended to also set the thread of a signal and allocate a cell
7553 for it. Keep the Scheme name "sigaction". Check that signum is
7554 within range. Also, use SCM_VECTOR_REF instead of SCM_VELTS.
7555 (scm_sigaction): Implement in terms of scm_sigaction_for_thread.
7556 (scm_init_scmsigs): Allocate signal_handler_cells and
7557 signal_handler_threads vectors.
7558
7559 * async.c: Removed GUILE_OLD_ASYNC_CLICK code. Reorganized so
7560 that system asnycs and user asyncs are separated. Reimplemented
7561 system asyncs to work per-thread.
7562
7563 * gc.c (scm_init_gc): Do not use scm_system_async.
7564
7565 * async.h (scm_asyncs_pending, scm_set_tick_rate,
7566 scm_set_switch_rate, scm_system_async_mark_from_signal_handler):
7567 Removed prototypes.
7568 (scm_i_queue_async_cell): New.
7569
7570 * __scm.h (scm_asyncs_pending_p): Removed.
7571 (SCM_ASYNC_CLICK): Check scm_active_asyncs instead of
7572 scm_asyncs_pending_p.
7573
7574 * async.h (scm_system_async_mark_for_thread): New prototype.
7575
7576 * __scm.h: Removed GUILE_OLD_ASYNC_CLICK code.
7577
7578 * root.h (scm_root_state): Added new "active_asyncs" slot.
7579 * root.c (scm_make_root): Initialize it to SCM_EOL.
7580
7581 * coop-defs.h (coop_t): Added new "handle" slot.
7582 * coop-threads.c (all_threads, scm_current_thread,
7583 scm_all_threads, scm_i_thread_root): New.
7584 (scm_threads_init): Add main thread to all_threads.
7585 (scheme_launch_thread): Remove thread from all_threads when it
7586 terminates.
7587 (scm_call_with_new_thread): Initialize handle slot of coop_t
7588 structure and add new thread to all_threads.
7589 (scm_spawn_thread): Likewise.
7590
7591 * threads.h (scm_current_thread, scm_all_threads): New prototypes.
7592 * threads.c (scm_current_thread, scm_all_threads): Register as
7593 primitives.
7594
7595 * dynl.c: Use scm_lt_ prefix for libltdl functions.
7596
7597 2002-09-29 Neil Jerram <neil@ossau.uklinux.net>
7598
7599 * script.c (scm_compile_shell_switches): Fix bad spelling of
7600 `explicitly' in comment.
7601
7602 2002-09-28 Neil Jerram <neil@ossau.uklinux.net>
7603
7604 * posix.c (scm_geteuid, scm_getegid, scm_seteuid, scm_setegid):
7605 Refer to provided? in doc string rather than deprecated feature?.
7606
7607 2002-09-24 Gary Houston <ghouston@arglist.com>
7608
7609 * inline.h (scm_double_cell): prevent reordering of statements
7610 with any following code (for GCC 3 strict-aliasing).
7611 * numbers.c (scm_make_real), num2float.i.c (FLOAT2NUM): removed
7612 the earlier version of the reordering prevention.
7613
7614 2002-09-19 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7615
7616 * inline.h (scm_double_cell): move SET_GCMARK set out of if body.
7617
7618 2002-09-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7619
7620 * gc-malloc.c (scm_gc_register_collectable_memory): more overflow
7621 protection.
7622
7623 2002-09-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7624
7625 * inline.h: include stdio.h
7626
7627 * smob.c (free_print): abort if scm_debug_cell_accesses_p is set
7628
7629 2002-09-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7630
7631 * gc-segment.c (scm_i_make_initial_segment): check user settings
7632 for sanity.
7633
7634 * gc-malloc.c (scm_gc_init_malloc): check user settings for
7635 sanity.
7636
7637 * gc-freelist.c (scm_init_freelist): check user settings for sanity.
7638
7639 * struct.h: change scm_structs_to_free to scm_i_structs_to_free
7640
7641 * gc-malloc.c (scm_gc_register_collectable_memory): use floats;
7642 these won't ever wrap around with high memory usage. Thanks to
7643 Sven Hartrumpf for finding this.
7644
7645 * gc-freelist.c: include <stdio.h>
7646
7647 * gc-malloc.c: add DEBUGINFO for mtrigger GCs.
7648
7649 2002-09-01 Marius Vollmer <mvo@zagadka.ping.de>
7650
7651 * vectors.h (SCM_VECTOR_REF): New.
7652
7653 * snarf.h (SCM_DEFINE_PUBLIC): New.
7654
7655 2002-08-30 Marius Vollmer <mvo@zagadka.ping.de>
7656
7657 * socket.c (scm_addr_vector): Added size of address to arguments.
7658 Use it to avoid accessing a non-existent path in a sockaddr_un.
7659 Changed all callers.
7660
7661 2002-08-29 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7662
7663 * gc.h: remove DOUBLECELL card flags.
7664
7665 * gc-malloc.c (scm_calloc): try to use calloc() before calling
7666 scm_realloc().
7667
7668 * gc-segment.c (scm_i_initialize_heap_segment_data): remove card
7669 init loop; handle this from scm_init_card_freelist()
7670
7671 * gc-card.c (scm_init_card_freelist): init bit vector here.
7672
7673 * numbers.c (scm_make_real): prevent reordering of statements
7674 num2float.i.c (FLOAT2NUM): idem
7675
7676 2002-08-27 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7677
7678 * eval.h: prepend libguile/ to include path
7679
7680 2002-08-26 Marius Vollmer <mvo@zagadka.ping.de>
7681
7682 * script.c (scm_compile_shell_switches): Added "2002" to Copyright
7683 years. Thanks to Martin Grabmüller!
7684
7685 2002-08-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7686
7687 * gc-segment.c (scm_i_get_new_heap_segment): use float in stead of
7688 unsigned numbers for computing minimum heap increment. This
7689 prevents weird results when a a negative minimum increment is
7690 computed.
7691
7692 2002-08-24 Marius Vollmer <mvo@zagadka.ping.de>
7693
7694 * gc_os_dep.c: When we have __libc_stack_end, use that directly
7695 instead of the old tricks.
7696
7697 * guile-snarf.in: Do not expect the input file to be the first
7698 argument after the optional "-o" option, just pass everything to
7699 the pre-processor without extracting the input file name.
7700
7701 2002-08-23 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7702
7703 * gc-segment.c (scm_i_get_new_heap_segment): Oops. We want segment
7704 length *at* least SCM_MIN_HEAP_SEG_SIZE, not at most.
7705
7706 2002-08-22 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7707
7708 * gc.h, gc.c: make scm_cells_allocated unsigned again. Thanks to
7709 Bill Schottstaedt for the bug report
7710
7711 2002-08-20 Marius Vollmer <mvo@zagadka.ping.de>
7712
7713 * print.c (scm_iprin1): Print primitives generics always as
7714 "primitive-generic" even when they have no primitive methods yet.
7715
7716 2002-08-17 Gary Houston <ghouston@arglist.com>
7717
7718 * coop.c (coop_create): removed bogus 2nd argument in scm_malloc
7719 call.
7720
7721 2002-08-17 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7722
7723 * ports.c (scm_add_to_port_table): small bugfix.
7724
7725 * mallocs.c (scm_malloc_obj): use scm_gc_malloc in stead of
7726 malloc.
7727
7728 * gc-segment.c (scm_i_get_new_heap_segment): remove cluster cruft:
7729 only use SCM_MIN_HEAP_SEG_SIZE.
7730
7731 * ports.c (scm_add_to_port_table): add backwards compatibility
7732 function
7733
7734 * ports.h: use scm_i_ prefix for port table and port table size.
7735
7736 2002-08-15 Mikael Djurfeldt <mdj@linnaeus>
7737
7738 * vports.c (scm_make_soft_port): Initialize pt variable.
7739
7740 2002-08-13 Marius Vollmer <mvo@zagadka.ping.de>
7741
7742 * strports.h (scm_c_eval_string_in_module,
7743 scm_eval_string_in_module): New prototypes.
7744 * strports.c (scm_eval_string_in_module): New, but use
7745 "eval-string" as the Scheme name and make second parameter
7746 optional.
7747 (scm_eval_string): Implement using scm_eval_string_in_module.
7748 (scm_c_eval_string_in_module): New.
7749 Thanks to Ralf Mattes for the suggestion!
7750
7751 2002-08-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7752
7753 * gc-card.c ("sweep_card"): remove SCM_MISC_ERROR messages: print
7754 message and abort.
7755
7756 * gc-mark.c ("scm_gc_mark_dependencies"): idem.
7757
7758 * ports.c ("scm_new_port_table_entry"): return a boxed SCM in
7759 stead of scm_t_port*. The function now takes a tag argument.
7760
7761 2002-08-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7762
7763 * gc.h: add scm_debug_cells_gc_interval to public interface
7764
7765 * gc-card.c ("sweep_card"): set scm_gc_running while sweeping.
7766
7767 * gc.c (scm_i_expensive_validation_check): separate expensive
7768 validation checks from cheap ones.
7769
7770 2002-08-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7771
7772 * read.c (scm_input_error): new function: give meaningful error
7773 messages, and throw read-error
7774
7775 * gc-malloc.c (scm_calloc): add scm_calloc.
7776
7777 2002-08-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7778
7779 * tags.h: remove GC bits documentation from the tags table.
7780
7781 * read.c (INPUT_ERROR): Prepare for file:line:column error
7782 messages for errors in scm_lreadr() and friends.
7783
7784 2002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7785
7786 * gc-malloc.c (scm_malloc): use scm_realloc() (simplifies
7787 implementation).
7788 (scm_gc_calloc): new function
7789
7790 2002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7791
7792 * ports.c (scm_new_port_table_entry): init port entry to 0
7793 completely.
7794
7795 * ports.c (scm_new_port_table_entry): change function from
7796 scm_add_to_port_table. This prevents cells with null-pointers from
7797 being exposed to GC.
7798
7799 * vports.c (scm_make_soft_port) strports.c (scm_mkstrport),
7800 fports.c (scm_fdes_to_port): Use scm_new_port_table_entry().
7801
7802 * gc.c (scm_gc_stats): add cell-yield and malloc-yield statistic
7803 to gc-stats.
7804
7805 * numbers.c (big2str): return "0" for 0 iso. ""
7806
7807 * gc-segment.c, gc-malloc.c gc-mark.c, gc-freelist.c, gc-card.c,
7808 private-gc.h: new file
7809
7810 * gc.c: completely revised and cleaned up the GC. It now uses lazy
7811 sweeping. More documentation in workbook/newgc.text
7812
7813 2002-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7814
7815 * random.c (rstate_free): Return zero.
7816
7817 2002-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
7818
7819 * environments.c (remove_key_from_alist): Removed.
7820
7821 (obarray_remove): Simplified.
7822
7823 2002-07-24 Stefan Jahn <stefan@lkcc.org>
7824
7825 * continuations.h: ia64: Include <signal.h> before
7826 <sys/ucontext.h>.
7827
7828 2002-07-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
7829
7830 * modules.c (scm_sym2var): Don't compare SCM values with ==.
7831
7832 2002-07-21 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7833
7834 * goops.c (scm_compute_applicable_methods): use
7835 scm_remember_upto_here_1 iso scm_remember_upto_here
7836
7837 * macros.c: include deprecation.h
7838
7839 * vectors.c (scm_vector_move_right_x): remove side effect in
7840 macro arg.
7841 (scm_vector_move_left_x): idem.
7842
7843 * net_db.c, posix.c, socket.c: variable naming: change ans to
7844 result.
7845
7846 * sort.c (scm_merge_vector_x): accept vector as argument
7847 iso. SCM*. This is needed for full GC correctness.
7848
7849 * gc.h: undo previous undocumented changes related to #ifdef
7850 GENGC.
7851
7852 2002-07-20 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7853
7854 * *.c: add space after commas everywhere.
7855
7856 * *.c: use SCM_VECTOR_SET everywhere, where a vector is written.
7857 Document cases where SCM_WRITABLE_VELTS() is used.
7858
7859 * vectors.h (SCM_VELTS): prepare for write barrier, and let
7860 SCM_VELTS() return a const pointer
7861 (SCM_VECTOR_SET): add macro.
7862
7863 2002-07-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
7864
7865 * eval.c (SCM_CEVAL), macros.c (macro_print, scm_makmacro,
7866 scm_sym_macro, scm_macro_type), macros.h (scm_makmacro):
7867 Deprecated the special kind of built-in dynamic syntax transformer
7868 that was inaccurately named "macro". Note: The built-in syntax
7869 transformers that are named "mmacro" or "memoizing-macro" still
7870 exist, and it is these which come much closer to what one would
7871 call a macro.
7872
7873 2002-07-13 Neil Jerram <neil@ossau.uklinux.net>
7874
7875 * eval.c (unmemocopy): Fix for
7876 1001-local-eval-error-backtrace-segfaults (unmemoization crash
7877 with internal definitions and local-eval).
7878
7879 2002-07-12 Gary Houston <ghouston@arglist.com>
7880
7881 * dynl.c: Don't define stub procedures if DYNAMIC_LINKING is not
7882 defined. They don't do anything useful, especially since the
7883 only case where DYNAMIC_LINKING is undefined seems to be
7884 when --with-modules=no is given to configure, which is basically
7885 requesting that the "dynamic linking module" be omitted.
7886
7887 * Makefile.am (libguile_la_SOURCES): move dynl.c from
7888 libguile_la_SOURCES to EXTRA_libguile_la_SOURCES.
7889
7890 * extensions.c (load_extension): check DYNAMIC_LINKING for
7891 scm_dynamic_call.
7892 * init.c (scm_init_guile_1): check DYNAMIC_LINKING for
7893 scm_init_dynamic_linking.
7894
7895 2002-07-10 Marius Vollmer <mvo@zagadka.ping.de>
7896
7897 * guile.c, iselect.h, net_db.c, posix.c, socket.c: No need to
7898 check for Cygwin when including <winsock2.h>, this is already
7899 check for by configure. Thus, revert change from 2002-07-07.
7900
7901 2002-07-10 Gary Houston <ghouston@arglist.com>
7902
7903 * eq.c: include <string.h>
7904 * dynl.c: docstring editing.
7905
7906 2002-07-09 Gary Houston <ghouston@arglist.com>
7907
7908 * dynl.c (scm_dynamic_call): docstring editing.
7909
7910 2002-07-08 Rob Browning <rlb@defaultvalue.org>
7911
7912 * gc_os_dep.c: HURD fixes.
7913
7914 2002-07-07 Marius Vollmer <mvo@zagadka.ping.de>
7915
7916 Crosscompiling and Cygwin fixes by Jan Nieuwenhuizen. Thanks!
7917
7918 * Makefile.am: Override default rule for c-tokenize.$(OBJECT);
7919 this should be compiled for BUILD host.
7920 Override default rule for
7921 guile_filter_doc_snarfage$(EEXECT); this should run on BUILD host.
7922 Add missing $(EXEEXT) to guile_filter_doc_snarfage invocation.
7923 (snarf2checkedtexi): Use GUILE_FOR_BUILD instead of preinstguile.
7924
7925 * guile.c, iselect.h, net_db.c, posix.c, socket.c: Do not include
7926 <winsock2.h> on Cygwin even when we have it.
7927
7928 2002-07-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
7929
7930 * __scm.h (SCM_CAUTIOUS), eval.c (scm_eval_args, deval_args,
7931 SCM_CEVAL): Removed compile time option SCM_CAUTIOUS to clean up
7932 the code. Full number of arguments checking of closures is
7933 mandatory now. However, the option to disable the checking has
7934 most probably not been used anyway.
7935
7936 2002-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
7937
7938 * __scm.h (SCM_RECKLESS), backtrace.c (SCM_ASSERT), debug.c
7939 (scm_debug_options), eval.c (scm_lookupcar, scm_lookupcar1,
7940 scm_badargsp, SCM_CEVAL, SCM_APPLY, scm_map, scm_for_each),
7941 feature.c (scm_init_feature), gsubr.c (scm_gsubr_apply), numbers.c
7942 (scm_logand, scm_logior, scm_logxor, scm_i_dbl2big), srcprop.c
7943 (scm_source_properties, scm_set_source_properties_x,
7944 scm_source_property): Removed compile time option SCM_RECKLESS to
7945 clean up the code. Full number of arguments checking of closures
7946 is mandatory now. However, the option to disable the checking has
7947 most probably not been used anyway.
7948
7949 * srcprop.c (scm_source_properties, scm_set_source_properties_x,
7950 scm_source_property): Use !SCM_CONSP instead of SCM_NCONSP.
7951
7952 2002-06-30 Gary Houston <ghouston@arglist.com>
7953
7954 * dynl.c: Removed all SCM_DEFER_INTS/SCM_ALLOW_INTS, which won't
7955 do anything useful. Added a comment about need for a mutex if
7956 pre-emptive threading is supported.
7957
7958 * posix.c (scm_convert_exec_args), dynl.c
7959 (scm_make_argv_from_stringlist): static procs: 1) renamed both to
7960 allocate_string_pointers. 2) simplified: don't reallocate the
7961 strings, just make an array of pointers 3) avoid memory leaks on
7962 error 4) let the procedure report errors in its own name.
7963 Consequences: 1) the procedures now assume that SCM strings are
7964 nul-terminated, which should always be the case. 2) Since strings
7965 are not reallocated, it's now possible for strings passed to
7966 dynamic-args-call to be mutated.
7967
7968 2002-06-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
7969
7970 * __scm.h, eval.c, eval.h: Removed compile time option
7971 MEMOIZE_LOCALS to clean up the code. Now, caching of local
7972 variable positions during memoization is mandatory. However, the
7973 option to disable the caching has most probably not been used
7974 anyway.
7975
7976 2002-06-18 Marius Vollmer <mvo@zagadka.ping.de>
7977
7978 * print.c (scm_simple_format): Print missing part of format before
7979 ~% control. Thanks to Daniel Skarda!
7980
7981 2002-06-01 Marius Vollmer <mvo@zagadka.ping.de>
7982
7983 * mkstemp.c: Added exception notice to license statement.
7984
7985 2002-05-22 Marius Vollmer <mvo@zagadka.ping.de>
7986
7987 * numbers.c (mem2ureal): When returning an inexact zero, make sure
7988 it is represented as a floating point value so that we can change
7989 its sign.
7990
7991 From John W. Eaton <jwe@bevo.che.wisc.edu>
7992
7993 * numbers.c (idbl2str): Don't omit sign when printing negative zero.
7994
7995 2002-05-14 Thien-Thi Nguyen <ttn@giblet.glug.org>
7996
7997 * gc_os_dep.c: For I386/OPENBSD, allow for `__i386__'
7998 in addition to `i386'. Thanks to Dale P. Smith.
7999
8000 2002-05-08 Marius Vollmer <mvo@zagadka.ping.de>
8001
8002 * eq.c (real_eqv): New.
8003 (scm_eqv_p): Use it when comparing reals and complexes.
8004
8005 * numbers.c: Include <string.h>, for strncmp.
8006 (mem2complex): Do not create negative NaNs.
8007 (scm_leq_p, scm_geq_p): Explicitely return #f when comparing a
8008 NaN.
8009 (scm_inexact_to_exact): Signal error when converting a NaN.
8010
8011 2002-05-06 Marius Vollmer <mvo@zagadka.ping.de>
8012
8013 * posix.c (scm_putenv): Handle removing variables explicitely by
8014 calling unsetenv.
8015
8016 From John W. Eaton.
8017
8018 * numbers.h: Conditionally include floatingpoint.h, ieeefp.h, and
8019 nan.h. Provide declarations for scm_inf_p, scm_nan_p, scn_inf,
8020 and scm_nan.
8021 * numbers.c: [SCO && ! HAVE_ISNAN] (isnan): New function.
8022 [SCO && ! HAVE_ISINF] (isinf): New function.
8023 (xisinf, xisnan): New functions.
8024 (IS_INF): Delete.
8025 (isfinite): Define in terms of xisinf.
8026 (scm_inf_p, scm_nan_p): New functions.
8027 (guile_Inf, guile_NaN): New file-scope vars.
8028 (guile_ieee_init): New function.
8029 (scm_inf, scm_nan): New functions.
8030 (idbl2str): Handle Inf and NaN. Remove funny label and
8031 corresponding gotos.
8032 (ALLOW_DIVIDE_BY_ZERO): New macro.
8033 (scm_divide): Allow division by zero to occur if
8034 ALLOW_DIVIDE_BY_ZERO is defined.
8035 Handle bignums and ints as special cases.
8036
8037 Additional stuff by me:
8038
8039 numbers.c (mem2ureal): Recognize "inf.0" and "nan.xxx".
8040 (scm_even_p, scm_odd_p): Treat infinity as even and odd.
8041 (iflo2str): Don't output a '+' for negative numbers or for Inf and
8042 NaN. They will provide their own sign.
8043 (scm_divide): Only allow divides by inexact zeros. Dividing by
8044 exact zeros still signals an errors.
8045
8046 2002-04-22 Thien-Thi Nguyen <ttn@giblet.glug.org>
8047
8048 * goops.h (scm_slot_exists_p): Rename from scm_slots_exists_p.
8049 * goops.c (scm_slot_exists_p): Rename from scm_slots_exists_p.
8050 (scm_slot_exists_p): Rename from scm_slots_exists_p.
8051 Thanks to Andreas Rottmann.
8052
8053 2002-04-20 Gary Houston <ghouston@arglist.com>
8054
8055 * removal of unused fields in root state (thanks to Christopher
8056 Cramer for pointing out the disuse.)
8057 * root.h (scm_root_state): removed def_inp, def_outp, def_errp.
8058 (scm_def_inp, scm_def_outp, scm_def_errp): removed.
8059
8060 * root.c (root_mark): don't mark them.
8061 (scm_make_root): don't set them to #f.
8062 * init.c (scm_init_standard_ports): don't initialise with the
8063 default ports.
8064
8065 2002-04-17 Marius Vollmer <mvo@zagadka.ping.de>
8066
8067 * Makefile.am (EXTRA_DIST): Added cpp_err_symbols.c and
8068 cpp_sig_symbols.c.
8069
8070 2002-04-16 Marius Vollmer <mvo@zagadka.ping.de>
8071
8072 * guile-snarf.in: Do not clean input file. This would write to
8073 the $(srcdir) during a VPATH build, which is not allowed. It also
8074 isn't needed since it only works when an output filename has been
8075 specified and in that case we don't need to clean the input file
8076 because the output file will already exist.
8077
8078 2002-03-31 Marius Vollmer <mvo@zagadka.ping.de>
8079
8080 * guile-snarf: Install the trap for removing $cleanfile only when
8081 the value of $cleanfile is actually known.
8082
8083 2002-04-10 Rob Browning <rlb@defaultvalue.org>
8084
8085 * .cvsignore: add versiondat.h and *.c.clean.c.
8086
8087 2002-03-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
8088
8089 * srcprop.[ch] (scm_c_source_property_breakpoint_p): New
8090 function, replaces macro SRCBRKP.
8091
8092 (SRCBRKP): Deprecated.
8093
8094 * eval.c (SCM_CEVAL): Replaced use of SRCBRKP by call to
8095 scm_c_source_property_breakpoint_p. Removed some use of arg1 as
8096 temporary variable.
8097
8098 2002-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
8099
8100 * debug.h, eval.c: Deprecated CHECK_ENTRY, CHECK_APPLY and
8101 CHECK_EXIT and removed all references to them.
8102
8103 2002-03-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8104
8105 * debug.h (scm_ready_p, debug_print): Removed declarations.
8106
8107 * eval.c (EVALCELLCAR): Removed.
8108
8109 (SCM_CEVAL): Eliminated label loopnoap. Removed side-effecting
8110 operation from condition.
8111
8112 2002-03-24 Marius Vollmer <mvo@zagadka.ping.de>
8113
8114 * guile-snarf.in: When the output filename is "-", write to
8115 stdout. When no "-o" option is given, use "-" as the output
8116 filename (i.e., stdout). Only 'clean' the inputfile or remove the
8117 output file on error when the output file name is not "-". Define
8118 the preprocessor macro SCM_MAGIC_SNARFER while snarfing.
8119
8120 * Makefile.am (.c.x): Pass "-o $@" to guile-snarf.
8121
8122 2002-03-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
8123
8124 * eval.c (SCM_CEVAL, SCM_APPLY): Eliminated labels wrongnumargs
8125 and the corresponding goto statements. Removed redundant code.
8126
8127 2002-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
8128
8129 * eval.c (SCM_CEVAL): Minimized scope of variable arg2.
8130 Eliminated redundant SCM_IMP check. Exlined call to EVALCAR.
8131 Re-enabled handing of rpsubrs and asubrs.
8132
8133 2002-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
8134
8135 * eval.c (SIDEVAL): Removed.
8136
8137 (SCM_CEVAL): Minimized scope of variable orig_sym. Eliminated
8138 goto-labels cdrxnoap, cdrxbegin and nontoplevel_cdrxnoap. Changed
8139 argument checking order for set! to locals, variables and symbols.
8140 Improvements to control structure. Removed some uses of arg1 and
8141 arg2 as temporary variables.
8142
8143 2002-03-15 Thien-Thi Nguyen <ttn@giblet.glug.org>
8144
8145 * guile-snarf.in: Remove "--compat=1.4" support.
8146 Add "-d" and "-D" support.
8147
8148 (deprecated_list): New var.
8149 (compat_mode_clean_xxx): Delete.
8150 (grep_deprecated): New func.
8151 ("main"): If "-d" or "-D", call `grep_deprecated'.
8152
8153 2002-03-15 Neil Jerram <neil@ossau.uklinux.net>
8154
8155 * hooks.h: Change scm_t_c_hookype_t everywhere to
8156 scm_t_c_hook_type.
8157
8158 Docstring fixes:
8159
8160 * strings.c (scm_string_p): Change unnecessary `iff' to `if'.
8161
8162 * ports.c (scm_sys_make_void_port): Use `@file'.
8163
8164 * numbers.c (scm_number_p, scm_real_p): Use `otherwise' rather
8165 than `else'.
8166
8167 * macros.c (scm_makmacro): Don't say that the form replaces its
8168 source, because it doesn't.
8169 (scm_makmmacro): Clarify difference between this and scm_makmacro.
8170
8171 * backtrace.c (scm_display_error), filesys.c (scm_umask,
8172 scm_select, scm_basename), goops.c (scm_method_generic_function),
8173 numbers.c (scm_integer_length), posix.c (scm_getgroups, scm_execl,
8174 scm_setlocale, scm_flock), socket.c (scm_shutdown): Correct
8175 spelling mistakes.
8176
8177 * debug.c (scm_debug_options), eval.c
8178 (scm_eval_options_interface), read.c (scm_read_options): Change
8179 incorrect @var in docstring to @code.
8180
8181 2002-03-14 Marius Vollmer <mvo@zagadka.ping.de>
8182
8183 * unif.c (singp): Use SCM_REALP instead of SCM_SLOPPY_REALP.
8184
8185 * snarf.h (SCM_SNARF_INIT): Add "^:^" after code so that
8186 guile-snarf can remove trailing non-init code.
8187
8188 * guile-snarf.in (modern_snarf): Remove everything following and
8189 including "^:^" from the output.
8190
8191 2002-03-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
8192
8193 * eval.c (SCM_CEVAL), srcprop.h (SRCBRKP): Eliminated union 't'.
8194
8195 * eval.c (SCM_CEVAL): Exlined call to EVALCAR.
8196
8197 2002-03-13 Thien-Thi Nguyen <ttn@giblet.glug.org>
8198
8199 * guile-snarf.in: Update copyright.
8200 Rewrite to internalize error handling.
8201 Add "--compat=1.4" handling.
8202 Add commentary.
8203
8204 * Makefile.am (libpath.h): Use @top_srcdir_absolute@.
8205 (snarfcppopts): New var.
8206 (.c.x): Use $(snarfcppopts). Rework guile-snarf usage.
8207 (.c.doc): Use $(snarfcppopts).
8208
8209 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
8210 continuations.c, debug-malloc.c, debug.c, deprecation.c, dynl.c,
8211 dynwind.c, environments.c, eq.c, error.c, eval.c, evalext.c,
8212 extensions.c, feature.c, filesys.c, fluids.c, fports.c, gc.c,
8213 goops.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
8214 ioext.c, iselect.c, keywords.c, lang.c, list.c, load.c, macros.c,
8215 modules.c, net_db.c, numbers.c, objects.c, objprop.c, options.c,
8216 pairs.c, ports.c, posix.c, print.c, procprop.c, procs.c,
8217 properties.c, ramap.c, random.c, rdelim.c, read.c, regex-posix.c,
8218 root.c, rw.c, scmsigs.c, script.c, simpos.c, socket.c, sort.c,
8219 srcprop.c, stackchk.c, stacks.c, stime.c, strings.c, strop.c,
8220 strorder.c, strports.c, struct.c, symbols.c, threads.c, throw.c,
8221 unif.c, values.c, variable.c, vectors.c, version.c, vports.c,
8222 weaks.c: Retire inclusion guard macro SCM_MAGIC_SNARFER.
8223
8224 2002-03-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
8225
8226 * eval.c (SCM_CEVAL): Got rid of the last reference to t.lloc.
8227 The next step will be to remove the union 't' and simplify the
8228 code of SCM_CEVAL that way.
8229
8230 2002-03-12 Neil Jerram <neil@ossau.uklinux.net>
8231
8232 * iselect.c (collisionp, gnfds, greadfds, gwritefds, gexceptfds,
8233 rreadfds, rwritefds, rexceptfds): Made static.
8234
8235 * gc.c (terminating), fports.c (terminating): Renamed
8236 scm_i_terminating.
8237
8238 2002-03-11 Marius Vollmer <mvo@zagadka.ping.de>
8239
8240 * numbers.c (scm_divide): Adapt code from libstdc++/f2c to void
8241 potential overflow problems. Thanks to John W Eaton!
8242
8243 * strop.c (string_capitalize_x): Treat characters as unsigned so
8244 that 8-bit chars work. Thanks to David Pirotte!
8245
8246 2002-03-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
8247
8248 * eval.c (SCM_CEVAL): Cleaned up the handling of 'slot-ref',
8249 'slot-set!' and 'nil-cond'. Removed some uses of t.arg1, arg2 and
8250 proc as temporary variables. Introduced temporary variables with
8251 hopefully descriptive names for clarification. Replaced SCM_N?IMP
8252 by a more explicit predicate in some places.
8253
8254 2002-03-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
8255
8256 * eval.c (SCM_CEVAL): Cleaned up the handling of #@dispatch.
8257 Added lots of comments regarding the implementation of #@dispatch.
8258 Changed intra-procedure communication to use t.arg1 instead of
8259 arg2. Removed some uses of t.arg1, t.lloc and proc as temporary
8260 variables. Introduced temporary variables with hopefully
8261 descriptive names for clarification. Replaced SCM_N?IMP by a more
8262 explicit predicate in some places. Use SCM_INSTANCE_HASH instead
8263 of computing the expression explicitly. Eliminate now unused
8264 label nontoplevel_cdrxbegin.
8265
8266 * goops.h (SCM_INSTANCE_HASH): New macro.
8267
8268 * objects.h (SCM_CMETHOD_FORMALS, SCM_CMETHOD_BODY): New macros.
8269
8270 2002-03-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
8271
8272 * Makefile.am (bin_SCRIPTS): Revive this decl, w/ initial element
8273 "guile-snarf" moved back from `noinst_SCRIPTS'.
8274
8275 2002-03-08 Neil Jerram <neil@ossau.uklinux.net>
8276
8277 * srcprop.c (scm_set_source_property_x): If SRCPROPS obj already
8278 exists when adding a source property other than those that are
8279 handled explicitly, add the new property to the SRCPROPS obj's
8280 plist.
8281
8282 * debug.h (SCM_MAX_FRAME_SIZE): Remove incorrect comment about use
8283 of SCM_MAX_FRAME_SIZE as a bit mask; it isn't used like this.
8284
8285 * eval.c (SCM_CEVAL): Don't store scm_debug_eframe_size in
8286 debug.status. It isn't needed, and it can overflow the bits
8287 reserved for it (which may lead to a segv or a GC abort).
8288
8289 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8290
8291 * eval.c (SCM_CEVAL): Cleaned up the handling of 'apply'. Removed
8292 side-effecting operations from conditions and macro calls.
8293 Replaced SCM_N?IMP by a more explicit predicate in some places.
8294 Minimized the scope of some variables.
8295
8296 2002-03-02 Stefan Jahn <stefan@lkcc.org>
8297
8298 * convert.i.c: Fixed int <-> long conversions which would have
8299 failed if their sizes were different.
8300
8301 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8302
8303 * eval.c (SCM_CEVAL): Cleaned up the handling of 'if', 'let',
8304 'letrec' and 'set*': Removed some uses of t.arg1, t.lloc and proc
8305 as temporary variables. Removed side-effecting operations from
8306 conditions and macro calls. Introduced temporary variables with
8307 hopefully descriptive names for clarification. Replaced SCM_N?IMP
8308 by a more explicit predicate in some places. Removed code that
8309 was conditionally compiled if SICP was defined - which it never
8310 is.
8311
8312 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8313
8314 * eval.c (SCM_CEVAL): Cleaned up the handling of 'cons' and 'do':
8315 Removed some uses of t.arg1 and proc as temporary variables.
8316 Removed side-effecting operations from conditions and macro calls.
8317 Introduced temporary variables with hopefully descriptive names
8318 for clarification. Replaced SCM_N?IMP by a more explicit
8319 predicate in some places.
8320
8321 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8322
8323 * eval.c (scm_badargsp, SCM_CEVAL): Replaced SCM_N?IMP by a more
8324 explicit predicate in some places.
8325
8326 (CHECK_EQVISH): Removed.
8327
8328 (SCM_CEVAL): Removed some uses of t.arg1 and proc as temporary
8329 variables. Removed side-effecting operations from conditions and
8330 macro calls. Introduced temporary variables for clarification.
8331 Sorted if-else-if check for the type of the last form in a list by
8332 frequency. Avoided some unnecessary tail-recursion calls.
8333
8334 2002-03-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
8335
8336 * gc.c (SCM_HEAP_SEG_SIZE, CELL_UP, CELL_DN, NEXT_DATA_CELL,
8337 init_heap_seg, alloc_some_heap), gc.h (struct scm_cell, struct
8338 scm_t_cell, SCM_CELLPTR, SCM_GC_CARD_SIZE,
8339 SCM_GC_IN_CARD_HEADERP), tags.h (SCM_CELLP): Renamed the struct
8340 scm_cell and all its uses to scm_t_cell in accordance to Guile's
8341 naming scheme for types.
8342
8343 * alist.c (scm_acons), convert.i.c (CTYPES2UVECT,
8344 CTYPES2UVECT_OPTIONAL), coop-threads.c (scm_call_with_new_thread,
8345 scm_spawn_thread), debug.c (scm_make_debugobj), environments.c
8346 (scm_make_environment), eval.c (scm_closure), fports.c
8347 (scm_fdes_to_port), gc.c (scm_deprecated_newcell,
8348 scm_deprecated_newcell2), inline.h (scm_alloc_cell, scm_cell),
8349 list.c (SCM_I_CONS), numbers.c (scm_i_mkbig), pairs.c (scm_cons),
8350 ports.c (scm_void_port), procs.c (scm_c_make_subr, scm_makcclo),
8351 smob.c (scm_make_smob), smob.h (SCM_NEWSMOB), strings.c
8352 (scm_take_str, scm_allocate_string), strports.c (scm_mkstrport),
8353 unif.c (scm_make_uve), variable.c (make_variable), vectors.c
8354 (scm_c_make_vector), vports.c (scm_make_soft_port): Renamed
8355 scm_alloc_cell to scm_cell.
8356
8357 * environments.c (core_environments_observe), gc.c
8358 (scm_deprecated_newcell2), goops.c (wrap_init, scm_wrap_object),
8359 inline.h (scm_alloc_double_cell, scm_double_cell), num2float.i.c
8360 (FLOAT2NUM), numbers.c (scm_make_real), procs.c
8361 (scm_make_procedure_with_setter), smob.h (SCM_NEWSMOB2,
8362 SCM_NEWSMOB3), struct.c (scm_make_struct, scm_make_vtable_vtable),
8363 symbols.c (scm_mem2symbol, scm_mem2uninterned_symbol), weaks.c
8364 (allocate_weak_vector): Renamed scm_alloc_double_cell to
8365 scm_double_cell.
8366
8367 2002-02-27 Stefan Jahn <stefan@lkcc.org>
8368
8369 * convert.i.c, convert.c: Better range checking.
8370
8371 * inet_aton.c, fports.c: Commented the inclusion of <winsock2.h>.
8372
8373 * deprecation.c (vsnprintf): Define to `_vsnprintf' for
8374 Windows (MinGW).
8375
8376 2002-02-26 Thien-Thi Nguyen <ttn@giblet.glug.org>
8377
8378 * Makefile.am: Update path to pre-inst-guile automake frag.
8379
8380 2002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
8381
8382 * gc.c (scm_gc_sweep): Make it compile even when deprecated
8383 features are excluded.
8384
8385 2002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
8386
8387 * num2integral.i.c (NUM2INTEGRAL): Fixed signedness problem.
8388
8389 2002-02-25 Gary Houston <ghouston@arglist.com>
8390
8391 * convert.c: include <string.h> for convert_i.c.
8392
8393 2002-02-24 Rob Browning <rlb@defaultvalue.org>
8394
8395 * .cvsignore: add stamp-h1.
8396
8397 2002-02-21 Neil Jerram <neil@ossau.uklinux.net>
8398
8399 * unif.c (scm_array_to_list): Correct name, which had been
8400 accidentally changed to scm_t_arrayo_list!
8401
8402 2002-02-20 Mikael Djurfeldt <mdj@linnaeus>
8403
8404 * gc.c (scm_gc_sweep): Print an error message when aborting due to
8405 underflowing scm_mallocated.
8406
8407 2002-02-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8408
8409 * gc.h, gc.c (scm_must_malloc, scm_must_realloc, scm_must_strdup,
8410 scm_must_strndup, scm_done_malloc, scm_done_free, scm_must_free):
8411 Reimplemented using the new scm_gc_malloc, etc., functions and
8412 deprecated.
8413
8414 2002-02-11 Thien-Thi Nguyen <ttn@giblet.glug.org>
8415
8416 * Makefile.am (bin_PROGRAMS): Move `guile_filter_doc_snarfage'
8417 to `noinst_PROGRAMS'.
8418 (bin_SCRIPTS): Move all values to `noinst_SCRIPTS'; delete.
8419 (noinst_PROGRAMS, noinst_SCRIPTS): New.
8420
8421 2002-02-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8422
8423 * gc.h, gc.c (scm_gc_sweep): Issue deprecation warning when
8424 non-zero is returned from a port or smob free function.
8425 (scm_malloc, scm_realloc, scm_strndup, scm_strdup,
8426 scm_gc_register_collectable_memory,
8427 scm_gc_unregister_collectable_memory, scm_gc_malloc,
8428 scm_gc_realloc, scm_gc_free, scm_gc_strndup, scm_gc_strdup): New.
8429
8430 * backtrace.c, continuations.c, convert.i.c, coop-threads.c,
8431 debug-malloc.c, dynl.c, environments.c, environments.h,
8432 extensions.c, filesys.c, fports.c, gc.c, gc.h, gh_data.c, goops.c,
8433 guardians.c, hooks.c, init.c, keywords.c, load.c, numbers.c,
8434 ports.c, posix.c, procs.c, rdelim.c, regex-posix.c, root.c,
8435 smob.c, stime.c, strings.c, struct.c, struct.h, symbols.c, unif.c,
8436 vectors.c, weaks.c: Use scm_gc_malloc/scm_malloc and
8437 scm_gc_free/free instead of scm_must_malloc and scm_must_free, as
8438 appropriate. Return zero from smob and port free functions.
8439
8440 * debug-malloc.c (scm_malloc_reregister): Handle "old == NULL".
8441
8442 * deprecation.h, deprecation.c: Reimplemented to allow deprecation
8443 messages while the GC is running.
8444 (scm_c_issue_deprecation_warning_fmt): New.
8445
8446 * fports.c (scm_setvbuf): Reset read buffer to saved values when
8447 it is pointing to the putback buffer.
8448
8449 2002-02-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
8450
8451 * gsubr.c (create_gsubr): On "too many args" error,
8452 also display arg count and name. Thanks to Bill Schottstaedt.
8453
8454 2002-02-05 Thien-Thi Nguyen <ttn@giblet.glug.org>
8455
8456 * Makefile.am: Include $(top_srcdir)/pre-inst-guile.am.
8457
8458 (bin_SCRIPTS): Remove guile-snarf-docs-texi.
8459 (alldotdocfiles, snarf2checkedtexi, dotdoc2texi): New vars.
8460 (guile.texi, guile-procedures.texi): Use $(dotdoc2texi).
8461
8462 * guile-snarf-docs-texi.in: Bye bye.
8463
8464 2002-02-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8465
8466 * symbols.c (scm_make_symbol): Fix typo in docstring.
8467
8468 * symbols.h (scm_mem2uninterned_symbol, scm_symbol_interned_p,
8469 scm_make_symbol): New prototypes.
8470
8471 2002-02-03 Marius Vollmer <mvo@zagadka.ping.de>
8472
8473 * symbols.h (SCM_SET_SYMBOL_HASH): Removed.
8474 (SCM_SYMBOL_INTERNED_P): New.
8475 * symbols.c (scm_symbol_hash): Use scm_ulong2num instead of
8476 SCM_MAKINUM since hash values can well be bignums.
8477 (scm_mem2symbol): Only use hash values below SCM_T_BITS_MAX/2.
8478 This signals a interned symbol.
8479 (scm_mem2uninterned_symbol, scm_symbol_interned_p,
8480 scm_make_symbol): New.
8481
8482 * print.c (scm_iprin1): Print uninterned symbols unreadably.
8483
8484 2002-02-02 Thien-Thi Nguyen <ttn@giblet.glug.org>
8485
8486 * __scm.h (HAVE_UINTPTR_T): Only define if UINTPTR_T attributes
8487 are defined: UINTPTR_MAX, INTPTR_MAX, INTPTR_MIN.
8488 Thanks to Dave Love.
8489
8490 2002-01-31 Marius Vollmer <mvo@zagadka.ping.de>
8491
8492 * symbols.c (scm_gensym): Use " g" as default prefix, not "g".
8493 This might help to make unintended clashes less likely.
8494 (scm_string_to_symbol): Protect the string until the symbols is
8495 created.
8496
8497 2002-01-31 Stefan Jahn <stefan@lkcc.org>
8498
8499 * convert.c, convert.h, convert.i.c: New files containing C
8500 array to Scheme conversion helpers meant to be replacement
8501 functions for the deprecated gh interface.
8502
8503 * Makefile.am: Setup rules for new `convert.*' files.
8504
8505 2002-01-28 Stefan Jahn <stefan@lkcc.org>
8506
8507 * symbols.c (scm_c_symbol2str): New function, replacement for
8508 `gh_scm2newsymbol()'.
8509
8510 * strings.c (scm_c_substring2str): New function. Proper
8511 replacement for `gh_get_substr()'.
8512
8513 * socket.c: Include `stdint.h' if available for the `uint32_t'
8514 declaration.
8515
8516 * scmsigs.c (scm_sigaction): Initialize `chandler' (inhibits
8517 compiler warning).
8518
8519 * backtrace.c: Include `lang.h' for GUILE_DEBUG conditional.
8520
8521 2002-01-22 Neil Jerram <neil@ossau.uklinux.net>
8522
8523 Other changes unrelated to Elisp...
8524
8525 * eval.c (scm_m_if): Use s_if rather than repeating string literal
8526 "if".
8527 (comments): Fix a few typos.
8528 (scm_for_each): Add parentheses around oddly unparenthesized
8529 if/while conditions.
8530
8531 * read.c (scm_read_opts): Add full stop at end of doc for
8532 `keywords' option.
8533
8534 * script.c (scm_compile_shell_switches): Use scm_str2symbol
8535 instead of gh_symbol2scm.
8536
8537 * srcprop.h (SRCPROPBRK): Return C type rather than SCM.
8538 (SRCBRKP): Use SRCPROPBRK rather than duplicating its logic.
8539
8540 * srcprop.c (scm_srcprops_to_plist, scm_source_property): Change
8541 SRCPROPBRK (x) to SCM_BOOL (SRCPROPBRK (x)).
8542
8543 First batch of changes for Elisp support...
8544
8545 * alist.c, async.c, boolean.c, dynl.c, eval.c, filesys.c,
8546 fluids.c, list.c, load.c, options.c, posix.c, print.c, sort.c,
8547 throw.c, vectors.c, weaks.c: Add #include for lang.h.
8548
8549 * eval.c, eval.h, init.c, lang.c, lang.h: Use SCM_ENABLE_ELISP to
8550 conditionalize compilation and initialization of Elisp support
8551 function.
8552
8553 * alist.c (scm_assq, scm_assv, scm_assoc), async.c
8554 (scm_asyncs_pending, scm_run_asyncs, noop), backtrace.c
8555 (scm_set_print_params_x), dynl.c (scm_make_argv_from_stringlist),
8556 filesys.c (fill_select_type, retrieve_select_type), fluids.c
8557 (scm_swap_fluids, scm_swap_fluids_reverse), list.c (scm_null_p,
8558 scm_ilength, scm_append_x, scm_last_pair, scm_reverse,
8559 scm_reverse_x, scm_list_ref, scm_list_set_x, scm_list_cdr_set_x,
8560 scm_c_memq, scm_memv, scm_member), load.c (scm_search_path),
8561 options.c (change_option_setting, scm_options), posix.c
8562 (environ_list_to_c), print.c (scm_iprlist), throw.c
8563 (scm_exit_status), vectors.c (scm_vector), weaks.c
8564 (scm_weak_vector): Use SCM_NULL_OR_NIL_P instead of SCM_NULLP.
8565
8566 * boolean.c (scm_not): Use `SCM_FALSEP || SCM_NILP' instead of
8567 just SCM_FALSEP.
8568
8569 * boolean.c (scm_boolean_p): Use `SCM_BOOLP || SCM_NILP' instead
8570 of just SCM_BOOLP.
8571
8572 * eval.c (scm_lisp_nil, scm_lisp_t, s_nil_ify, scm_m_nil_ify,
8573 s_t_ify, scm_m_t_ify, s_0_cond, scm_m_0_cond, s_0_ify,
8574 scm_m_0_ify, s_1_ify, scm_m_1_ify): Removed.
8575 (scm_m_atfop): Support function aliasing. Support both function
8576 args, which need transformation, and macro args, which do not.
8577 Add explanatory comments.
8578 (SCM_CEVAL): In switch cases for SCM_IM_AND, SCM_IM_COND,
8579 SCM_IM_DO, SCM_IM_IF and SCM_IM_OR, add `|| SCM_NILP' to existing
8580 checks for SCM_FALSEP. In switch case for SCM_IM_NIL_COND, use
8581 SCM_NULLP || SCM_NILP instead of checks against (removed)
8582 scm_lisp_nil. Removed switch cases for SCM_IM_NIL_IFY,
8583 SCM_IM_T_IFY, SCM_IM_0_COND, SCM_IM_0_IFY, SCM_IM_1_IFY.
8584
8585 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
8586 scm_m_while, scm_nil_eq): Commented out; I don't think we need
8587 these, but I don't want to remove them yet, just in case.
8588 (scm_init_lang): Define `%nil' variable on Scheme level to hold
8589 Elisp nil value.
8590
8591 * lang.h (SCM_NILP): Test against Elisp nil value instead of
8592 against (removed) scm_lisp_nil.
8593 (SCM_NILNULLP, SCM_NIL2EOL, SCM_EOL2NIL): Commented out.
8594 (SCM_NULL_OR_NIL_P): New.
8595
8596 * list.c (scm_append): Use SCM_VALIDATE_NULL_OR_NIL instead of
8597 SCM_VALIDATE_NULL.
8598
8599 * print.c (scm_isymnames): Fix comment. Remove #@nil-ify,
8600 #@t-ify, #@0-cond, #@0-ify, #@1-ify. Add #nil (for SCM_ELISP_NIL
8601 value).
8602
8603 * sort.c (scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
8604 scm_sort_x, scm_sort, scm_stable_sort_x, scm_stable_sort): Use
8605 SCM_NULL_OR_NIL_P instead of SCM_NULLP. In constructions like `if
8606 (SCM_NULLP (x)) return SCM_EOL;', return x rather than SCM_EOL.
8607
8608 * tags.h (SCM_IM_NIL_IFY, SCM_IM_T_IFY, SCM_IM_0_COND,
8609 SCM_IM_0_IFY, SCM_IM_1_IFY): Removed.
8610 (SCM_IM_BIND, SCM_IM_DELAY, SCM_IM_CALL_WITH_VALUES, SCM_UNBOUND):
8611 Numbering shifted down accordingly.
8612 (SCM_ELISP_NIL): New IFLAG.
8613
8614 * validate.h (SCM_VALIDATE_NULL_OR_NIL): New.
8615
8616 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
8617
8618 * eval.c: Removed outdated references to "everr". Improved some
8619 comments.
8620
8621 (scm_deval_args, deval_args): Renamed scm_deval_args to
8622 deval_args, since it is not part of the interface.
8623
8624 (SCM_CEVAL): Added (maybe somewhat verbose) comment. Avoid to
8625 use references to debug.vect[0] before it exists. Add parentheses
8626 to switch statement.
8627
8628 * goops.h: Added local emacs variables.
8629
8630 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
8631
8632 * eval.[ch] (scm_deval_args): Made static.
8633
8634 * srcprop.c (scm_source_property): Remove redundant SCM_IMP
8635 test.
8636
8637 * strings.c (scm_c_string2str): Clarified comment. Replaced
8638 THINKME by FIXME for uniformness. Removed question about whether
8639 arguments need to be protected from garbage collection: Arguments
8640 must be protected as any other variable.
8641
8642 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
8643
8644 * procs.h (SCM_CLOSURE_BODY): New Macro.
8645
8646 * debug.c (scm_procedure_name, scm_procedure_source), eval.c
8647 (SCM_CEVAL, SCM_APPLY), goops.c (scm_sys_initialize_object,
8648 get_slot_value, set_slot_value), procs.c
8649 (scm_procedure_documentation), sort.c (closureless), stacks.c
8650 (get_applybody): Replace SCM_CDR (SCM_CODE (...)) by
8651 SCM_CLOSURE_BODY.
8652
8653 * sort.c (closureless): Prefer !SCM_FOOP over SCM_NFOOP.
8654
8655 2001-12-26 Marius Vollmer <mvo@zagadka.ping.de>
8656
8657 * Makefile.am (guile-procedures.txt): When we don't have makeinfo,
8658 use "cp" instead.
8659
8660 2001-12-16 Marius Vollmer <mvo@zagadka.ping.de>
8661
8662 * stacks.c, stacks.h (scm_t_stackype): Renamed to scm_stack_type
8663 everywhere.
8664
8665 * continuations.c (scm_make_continuation): Do not retain the
8666 throw_value when the continuation is invoked.
8667
8668 2001-12-08 Stefan Jahn <stefan@lkcc.org>
8669
8670 * strings.c (scm_c_string2str): New function. Converts a
8671 given Scheme string into a C string. Also put in two
8672 THINKME's regarding the malloc policy for the missing converter
8673 routines.
8674
8675 2001-12-01 Neil Jerram <neil@ossau.uklinux.net>
8676
8677 * gh_data.c (gh_module_lookup): Use scm_str2symbol rather than
8678 gh_symbol2scm.
8679
8680 2001-11-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
8681
8682 * gc.h (SCM_GC_CELL_WORD, SCM_GC_CELL_OBJECT,
8683 SCM_GC_SET_CELL_WORD, SCM_GC_SET_CELL_OBJECT): New macros.
8684
8685 (SCM_GC_CELL_TYPE, SCM_CELL_WORD, SCM_CELL_OBJECT,
8686 SCM_SET_CELL_WORD, SCM_SET_CELL_OBJECT, SCM_FREE_CELL_CDR,
8687 SCM_GC_SET_CELL_OBJECT): Express in terms of SCM_GC_CELL_*
8688 macros.
8689
8690 (SCM_FREE_CELL_P): Express in terms of SCM_GC_CELL_TYPE.
8691
8692 * inline.h (scm_alloc_cell, scm_alloc_double_cell): Use
8693 SCM_GC_CELL_* macros when accessing free cells.
8694
8695 2001-11-25 Marius Vollmer <mvo@zagadka.ping.de>
8696
8697 * vectors.h (SCM_MAKE_VECTOR_TAG): New.
8698 * unif.h (SCM_MAKE_BITVECTOR_TAG, SCM_MAKE_UVECTOR_TAG): New.
8699 * symbols.h (SCM_MAKE_SYMBOL_TAG): New.
8700 * strings.h (SCM_MAKE_STRING_TAG): New.
8701 * procs.h (SCM_MAKE_CCLO_TAG): New.
8702 * numbers.h (SCM_MAKE_BIGNUM_TAG): New.
8703
8704 * goops.h: Replaced SCM_DEBUG_DEPRECATED with
8705 !SCM_ENABLE_DEPRECATED.
8706
8707 * async.c, async.h (scm_system_async_mark_from_signal_handler):
8708 New.
8709
8710 * scmsigs.c (scm_take_signal): Removed all code that assumes that
8711 signal handlers are allowed to divert the flow of control. Call
8712 scm_system_async_mark_from_signal_handler instead of
8713 scm_system_async_mark.
8714
8715
8716 Deprecated SCM_NEWCELL and SCM_NEWCELL2. Added scm_alloc_cell and
8717 scm_alloc_double_cell in their place.
8718
8719 * gc.h (SCM_GC_SET_ALLOCATED, scm_debug_newcell,
8720 scm_debug_newcell2, scm_tc16_allocated): Removed from header.
8721 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
8722 (SCM_NEWCELL, SCM_NEWCELL2): Implement in terms of
8723 scm_deprecated_newcell and scm_deprecated_newcell2.
8724
8725 gc.c (scm_tc16_allocated): Only define when including deprecated
8726 features.
8727 (scm_debug_newcell, scm_debug_newcell2): Removed.
8728 (scm_init_storage): Do not initialize scm_tc16_allocated.
8729 (scm_init_gc): Do it here.
8730 (allocated_mark): New, from old code.
8731 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
8732
8733 * inline.c, inline.h: New files.
8734 * Makefile.am: Added them in all the right places.
8735
8736 * _scm.h: Include "libguile/inline.h".
8737
8738 * alist.c, coop-threads.c, debug.c, environments.c, eval.c,
8739 fports.c, gh_data.c, goops.c, guardians.c, lang.c, list.c,
8740 num2float.i.c, numbers.c, pairs.c, ports.c, print.c, procs.c,
8741 smob.c, smob.h, strings.c, strports.c, struct.c, symbols.c,
8742 unif.c, variable.c, vectors.c, vports.c, weaks.c: Replaced
8743 SCM_NEWCELL and SCM_NEWCELL2 with scm_alloc_cell and
8744 scm_alloc_double_cell, respectively.
8745
8746 2001-11-23 Marius Vollmer <mvo@zagadka.ping.de>
8747
8748 * modules.c (scm_c_use_module): Adapt to changes to
8749 `process-use-modules'.
8750
8751 2001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
8752
8753 * numbers.c (scm_divide): Fix more division by zero errors.
8754
8755 2001-11-21 Gary Houston <ghouston@arglist.com>
8756
8757 * Makefile.am (OMIT_DEPENDENCIES): removed, since it seems to be
8758 obsolete. autogen.sh says:
8759 invalid unused variable name: `OMIT_DEPENDENCIES'
8760
8761 2001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
8762
8763 * numbers.c (scm_divide): Fix (/ 0). Thanks to Keith Wright for
8764 reporting the bug.
8765
8766 2001-11-21 Marius Vollmer <mvo@zagadka.ping.de>
8767
8768 * Makefile.am (install-exec-hook): Prepend $(DESTDIR) to filename.
8769 Thanks to Eric Gillespie, Jr!
8770
8771 2001-11-21 Stefan Jahn <stefan@lkcc.org>
8772
8773 * win32-socket.c (getservent, setservent, endservent,
8774 getprotoent, setprotoent, endprotoent): New functions.
8775 Appropriate replacements for M$-Windows.
8776
8777 * numbers.c (SIZE_MAX, PTRDIFF_MAX, PTRDIFF_MIN): Reintroduced
8778 these definitions for GUILE_DEBUG.
8779
8780 * net_db.c: Include "win32-socket.h" if compiling with a native
8781 M$-Windows compiler. Include some pieces of code (protoent and
8782 servent interface) protected by HAVE_* macros when using a
8783 native M$-Windows compiler.
8784
8785 2001-11-20 Marius Vollmer <mvo@zagadka.ping.de>
8786
8787 * modules.c (scm_c_export): Do nothing when the first argument is
8788 already the terminating NULL. Thanks to Han-Wen Nienhuys!
8789
8790 2001-11-20 Thien-Thi Nguyen <ttn@glug.org>
8791
8792 * Makefile.am (libpath.h): In SCM_BUILD_INFO,
8793 also include `buildstamp'.
8794
8795 2001-11-18 Rob Browning <rlb@defaultvalue.org>
8796
8797 * version.c
8798 (s_scm_major_version): use SCM_MAJOR_VERSION.
8799 (s_scm_minor_version): use SCM_MINOR_VERSION.
8800 (s_scm_micro_version): use SCM_MICRO_VERSION.
8801 (s_scm_version): use SCM_MAJOR_VERSION, SCM_MINOR_VERSION, and
8802 SCM_MICRO_VERSION.
8803
8804 * version.h.in
8805 (SCM_MAJOR_VERSION): renamed from SCM_GUILE_MAJOR_VERSION.
8806 (SCM_MINOR_VERSION): renamed from SCM_GUILE_MINOR_VERSION.
8807 (SCM_MICRO_VERSION): renamed from SCM_GUILE_MICRO_VERSION.
8808
8809 2001-11-18 Neil Jerram <neil@ossau.uklinux.net>
8810
8811 * vectors.c (scm_vector_move_left_x, scm_vector_move_right_x):
8812 Rewrite docstrings without reference to substring-move-left/right,
8813 since the latter no longer exist.
8814
8815 2001-11-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
8816
8817 * eval.c: Removed bogus comment about acros.
8818
8819 (scm_unmemocar): Use !SCM_CONSP instead of SCM_IMP.
8820 Minimize scope of local variable. Eliminate dependency on
8821 macro DEBUG_EXTENSIONS.
8822
8823 (s_splicing): New error message string.
8824
8825 (scm_m_body): Issue 'bad body' message rather than 'missing
8826 expression' message.
8827
8828 (scm_m_quote): Eliminate unnecessary copying.
8829
8830 (scm_m_lambda, scm_m_letstar, scm_m_letrec, scm_m_let): Leave the
8831 checking of the body to scm_m_body.
8832
8833 (scm_m_do): Move comment to function header. Rename arg1 to
8834 binding. Made the code a bit easier to read.
8835
8836 (evalcar): Removed.
8837
8838 (iqq): Added a comment. Changed the depth parameter to
8839 unsigned. Use size_t for vector lengths. Make sure vector object
8840 is gc protected as long as its contents are read. Add some syntax
8841 checks. Get rid of unnecessary SCM_IMP test. Clean up the
8842 control structure a bit.
8843
8844 (scm_m_delay): Added comment about the implementation of
8845 scm_m_delay.
8846
8847 (scm_m_define): Add comment about guile's currying define
8848 syntax. Renamed 'proc' to 'name'. Eliminate dependency on macro
8849 DEBUG_EXTENSIONS. Simplified code a bit. Eliminate SICP code.
8850
8851 (scm_m_letrec1): Removed. Part of the functionality is taken
8852 over by the new function 'transform_bindings'.
8853
8854 (transform_bindings): New function. Takes over some of the
8855 functionality of removed function 'scm_m_letrec1', namely to split
8856 a list of bindings into a reversed list of variables and a list of
8857 initializers.
8858
8859 (scm_m_letrec): Call 'transform_bindings'.
8860
8861 (scm_m_let): Minimized scope of local variables. Renamed 'proc'
8862 to 'temp' and 'arg1' to 'binding'. Eliminated redundant SCM_NIMP
8863 test. Use 'transform_bindings'. Fixed scoping error with named
8864 let (Thanks to Aubrey Jaffer for reporting the bug and to Neil
8865 Jerram for suggesting the fix). Cleaned up the control structure
8866 a bit.
8867
8868 (scm_m_expand_body): Use 'transform_bindings'. Eliminated
8869 unnecessary consing. Eliminated unnecessary
8870 SCM_DEFER/ALLOW_INTS.
8871
8872 (SCM_CEVAL): Un-obfuscated some loops.
8873
8874 2001-11-16 Neil Jerram <neil@ossau.uklinux.net>
8875
8876 * gc.h (scm_unhash_name): Old declaration removed.
8877
8878 * eval.c (s_scm_eval): Change @var{primitive-eval} to
8879 @code{primitive-eval}.
8880
8881 * feature.c, vectors.c, net_db.c, unif.c, weaks.c, struct.c,
8882 version.c, alist.c, ports.c, ramap.c, unif.c, strings.c, list.c:
8883 Change @deffnx lines in docstrings to say {Scheme Procedure}
8884 rather than primitive or procedure.
8885
8886 * posix.c (scm_execl), filesys.c (scm_close), unif.c
8887 (scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
8888 scm_bit_set_star_x, scm_bit_invert_x), ramap.c (scm_array_fill_x,
8889 scm_array_for_each, scm_array_index_map_x), vectors.c (scm_vector,
8890 scm_make_vector, scm_vector_to_list, scm_vector_fill_x), strop.c
8891 (scm_string_split, scm_string_ci_to_symbol), strings.c
8892 (scm_string_p), sort.c (scm_merge), print.c (scm_newline),
8893 macros.c (scm_macro_type), alist.c (scm_acons, scm_assq):
8894 Docstring fixes and improvements reflecting edits that have been
8895 made in the reference manual source.
8896
8897 * objprop.c (scm_object_properties, scm_set_object_properties_x,
8898 scm_object_property, scm_set_object_property_x): Remove invalid
8899 @deffnx lines for corresponding procedure property primitives.
8900
8901 These changes add a @deffnx C function declaration and function
8902 index entries for each Guile primitive to the copy of the doc
8903 snarf output that is used for reference manual synchronization.
8904 Online help is unchanged.
8905
8906 * snarf.h (SCM_SNARF_DOCS): Output primitive's C function name.
8907 (SCM_DEFINE, SCM_DEFINE1, SCM_REGISTER_PROC): Supply to C function
8908 name to SCM_SNARF_DOCS.
8909
8910 * guile-snarf-docs-texi.in: Pass the shell script's arguments into
8911 snarf-check-and-output-texi.
8912
8913 * Makefile.am (guile-procedures.texi): New rule.
8914 (BUILT_SOURCES, guile.texi, guile-procedures.txt, CLEANFILES):
8915 Changed so that the last stage of doc snarfing is now performed
8916 twice, once to produce guile-procedures.txt for online help, and
8917 once to produce guile.texi for reference manual synchronization.
8918
8919 2001-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
8920
8921 * eval.c (RETURN): Wrap in do{}while(0) in order to make it
8922 safely usable as a single statement followed by a ';', for example
8923 in an if statement.
8924
8925 (SCM_CEVAL, SCM_APPLY): Clean up code using 'RETURN'.
8926
8927 2001-11-13 Neil Jerram <neil@ossau.uklinux.net>
8928
8929 * random.c (scm_random_solid_sphere_x,
8930 scm_random_hollow_sphere_x): Correct "shere" typos.
8931
8932 * hashtab.c (scm_hash_fold): Add missing apostrophe to docstring.
8933
8934 * version.c (scm_version): Update docstring to include
8935 `micro-version'.
8936
8937 2001-11-13 Marius Vollmer <mvo@zagadka.ping.de>
8938
8939 * modules.c (scm_c_export): Call va_end after collecting the
8940 symbols.
8941
8942 * strop.h, strop.c (scm_substring_move_left_x,
8943 scm_substring_move_right_x): Removed.
8944
8945 * __scm.h (HAVE_UINTPTR_T, HAVE_PTRDIFF_T, HAVE_LONG_LONG,
8946 HAVE_LONG_LONGS): Define to "1" when defining them, to mirror what
8947 configure does.
8948
8949 2001-11-12 Marius Vollmer <mvo@zagadka.ping.de>
8950
8951 * numbers.c: Document macros to define when including
8952 num2integral.i.c. MAX_VALUE and MIN_VALU are no longer used, we
8953 now rely on SIZEOF_ macros that have been figured out at
8954 configure time.
8955
8956 * num2integral.i.c: Adapt to new interface.
8957 (NUM2INTEGRAL): Test whether a fixnum can be represented in the
8958 target type by casting it and checking whether it is still the
8959 same. Do not try to handle bignums for integral types that are
8960 smaller than fixnums. When handling bignums, collect the
8961 magnituse first into a unsigned type, and correctly check for
8962 overflow.
8963 (INTEGRAL2BIG): Do not use MIN_VALUE explicitely by observing that
8964 only -MIN_VALUE can still be negative of all negative numbers (in
8965 twos-complement).
8966
8967 * tags.h (SIZEOF_SCM_T_BITS): Define it appropriately.
8968
8969 * __scm.h: Define HAVE_UINTPTR_T, HAVE_PTRDIFF_T and
8970 HAVE_LONG_LONG depending on whether their size is non-zero.
8971
8972 2001-11-11 Thien-Thi Nguyen <ttn@glug.org>
8973
8974 * strop.c (scm_string_null_p): Docfix; nfc.
8975 Thanks to Scott Lenser.
8976
8977 2001-11-07 Neil Jerram <neil@ossau.uklinux.net>
8978
8979 * extensions.c (scm_load_extension): Canonicalize docstring
8980 whitespace.
8981
8982 * unif.c (scm_uniform_array_write), ports.c
8983 (scm_current_output_port, scm_force_output), dynwind.c
8984 (scm_dynamic_wind), scmsigs.c (scm_setitimer, scm_getitimer),
8985 filesys.c (scm_open, scm_lstat), struct.c
8986 (scm_make_struct_layout), random.c (scm_random,
8987 scm_random_solid_sphere_x, scm_random_hollow_sphere_x, strop.c
8988 (scm_i_index): Remove superfluous whitespace from end of docstring
8989 lines.
8990
8991 * filesys.c (scm_select), guardians.c (scm_guardian_greedy_p),
8992 strings.c (scm_make_string), variable.c (scm_make_variable,
8993 scm_make_undefined_variable, scm_variable_p, scm_variable_set_x,
8994 scm_variable_bound_p), scmsigs.c (scm_setitimer, scm_getitimer),
8995 posix.c (scm_crypt), struct.c (scm_make_vtable_vtable), hashtab.c
8996 (scm_hash_fold), ports.c (scm_port_for_each): Remove superfluous
8997 newline at end of docstrings.
8998
8999 * modules.c (scm_set_current_module): Add missing newline to
9000 docstring.
9001
9002 2001-11-07 Stefan Jahn <stefan@lkcc.org>
9003
9004 * win32-socket.[ch]: New files. Defines Winsock-API error codes
9005 and makes them available through Guile. That is because the
9006 Winsock-API does not store its errors in `errno' and thus cannot
9007 return error messages via `strerror (errno)'.
9008
9009 * socket.c (scm_init_socket): Initialize `win32-socket' part
9010 here under M$-Windows.
9011
9012 * numbers.h: Added missing declaration of
9013 `scm_sys_check_number_conversions()'.
9014
9015 * error.c: Local definition of SCM_I_STRERROR and SCM_I_ERRNO
9016 and use in `(strerror)' and `(system-error)'.
9017
9018 * Makefile.am (EXTRA_libguile_la_SOURCES): Added
9019 `win32-socket.[ch]' to extra source and header files.
9020
9021 2001-11-06 Marius Vollmer <mvo@zagadka.ping.de>
9022
9023 * script.c (scm_shell_usage, scm_compile_shell_switches): Prepend
9024 a call to turn-on-debugging when --debug has been given instead of
9025 turning it on directly. Also, handle new `--no-debug' option,
9026 which might suppress the call to turn-on-debugging.
9027
9028 2001-11-05 Stefan Jahn <stefan@lkcc.org>
9029
9030 * struct.c (s_scm_struct_vtable_p): Corrected docstring.
9031
9032 2001-11-04 Stefan Jahn <stefan@lkcc.org>
9033
9034 * Makefile.am (libguile_la_LIBADD): Added $(THREAD_LIBS_LOCAL)
9035 here (was at guile_LDADD) which describes the dependency
9036 correctly and allows a clean build on Win32.
9037
9038 * __scm.h (SCM_API): Follow-up patch. Renamed __FOO__ macros
9039 into FOO.
9040
9041 * __scm.h: USE_DLL_IMPORT indicates the usage of the DLL
9042 import macros for external libraries (libcrypt, libqthreads,
9043 libreadline and libregex).
9044
9045 * coop-defs.h: Include <winsock2.h> for `struct timeval'.
9046
9047 * posix.c (flock): Added support for flock() in M$-Windows.
9048
9049 * guile.c (SCM_IMPORT): Follow-up patch. Use SCM_IMPORT instead
9050 of __SCM_IMPORT__.
9051
9052 * fports.c (getflags): Differentiate reading and writing pipes
9053 descriptors.
9054
9055 * filesys.c (S_IS*): Redefine all of the S_IS*() macros for
9056 M$-Windows.
9057
9058 * coop.c (coop_condition_variable_timed_wait_mutex): Use
9059 conditionalized error code if `ETIMEDOUT' is not available.
9060 (scm_thread_usleep): Remove bogus declaration of `struct timeval
9061 timeout'.
9062
9063 * numbers.c (PTRDIFF_MIN): Moved this definition where it actually
9064 belongs. That is because NO_PREPRO_MAGIC gets undefined after
9065 each inclusion of `num2integral.i.c'.
9066 (SIZE_MAX): Define NO_PREPRO_MAGIC if SIZE_MAX is undefined.
9067
9068 2001-11-03 Marius Vollmer <mvo@zagadka.ping.de>
9069
9070 * eval.c (scm_m_begin): Allow `(begin)`, with no subforms.
9071 (SCM_CEVAL): Evaluate an empty `begin' to SCM_UNSPECIFIED.
9072
9073 2001-11-02 Mikael Djurfeldt <mdj@linnaeus>
9074
9075 * print.c (scm_iprin1): Mark print state as revealed when
9076 dispatching to generic write or display.
9077
9078 * unif.c (scm_ra2contig): Fixed memory overwrite bug.
9079
9080 2001-11-02 Marius Vollmer <mvo@zagadka.ping.de>
9081
9082 Support for native Win32. Thanks to Stefan Jahn!
9083
9084 * Makefile.am: Add win32-uname.c, win32-uname.h, win32-dirent.c
9085 and win32-dirent.h to extra source and header files. These
9086 include the uname() and the POSIX dirent interface implementation
9087 for M$-Windows. Put `-no-undefined' into LDFLAGS to support
9088 linkers which do not allow unresolved symbols inside shared
9089 libraries. Corrected `guile_filter_doc_snarfage$(EXEEXT)'
9090 dependency.
9091
9092 * __scm.h: Defined SCM_API. This macro gets prepended to all
9093 function and data definitions which should be exported or imported
9094 in the resulting dynamic link library in the Win32 port.
9095
9096 * __scm.h, alist.h, arbiters.h, async.h, backtrace.h, boolean.h,
9097 chars.h, continuations.h, coop-defs.h, coop-threads.h,
9098 debug-malloc.h, debug.h, deprecation.h, dynl.h, dynwind.h,
9099 environments.h, eq.h, error.h, eval.h, evalext.h, extensions.h,
9100 feature.h, filesys.h, fluids.h, fports.h, gc.h, gdb_interface.h,
9101 gdbint.h, gh.h, goops.h, gsubr.h, guardians.h, hash.h, hashtab.h,
9102 hooks.h, init.h, ioext.h, iselect.h, keywords.h, lang.h, list.h,
9103 load.h, macros.h, mallocs.h, modules.h, net_db.h, numbers.h,
9104 objects.h, objprop.h, options.h, pairs.h, ports.h, posix.h, print.h,
9105 procprop.h, procs.h, properties.h, ramap.h, random.h, rdelim.h,
9106 read.h, regex-posix.h, root.h, rw.h, scmsigs.h, script.h, simpos.h,
9107 smob.h, socket.h, sort.h, srcprop.h, stackchk.h, stacks.h, stime.h,
9108 strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h,
9109 tags.h, threads.h, throw.h, unif.h, values.h, variable.h, vectors.h,
9110 vports.h, weaks.h:
9111 Prefixed each each exported symbol with SCM_API.
9112
9113 * continuations.c: Added comment about the use of the extern
9114 declarations of {get,set}context() functions used in the ia64 port.
9115
9116 * continuations.h, gc.c: `__libc_ia64_register_backing_store_base'
9117 is meant to be a `unsigned long *'.
9118
9119 * filesys.c: Include `direct.h' if possible. Use local
9120 `win32-dirent.h' for the native M$-Windows port. Define S_IS*()
9121 macros for M$-Windows. Implementation of `fstat_Win32()' which is
9122 able to differentiate between sockets and other file descriptors.
9123 Use this function as wrapper in `scm_fstat()'. Fixed typo in
9124 `scm_dirname()'.
9125
9126 * fports.c: Include `io.h' is possible. Put `*fp' into referring
9127 statement block in `scm_fport_buffer_add()'.
9128 Some corrections in `getflags()'.
9129
9130 * gdb_interface.h (GDB_INTERFACE): Also support __CYGWIN__.
9131
9132 * guile.c: Make sure to define __SCM_IMPORT__ for shared library
9133 build on Win32. Disable preloaded symbols on Win2 platforms.
9134
9135 * ioext.c, ports.c: Include `io.h' is possible.
9136
9137 * mkstemp.c: Include `process.h' is possible.
9138
9139 * net_db.c: Disable extern declaration of `h_errno' for __CYGWIN__,
9140 too.
9141 Put `scm_return_entry()' into HAVE_GETSERVENT conditional.
9142
9143 * posix.c: Remove unnecessary dirent includes and defines. Include
9144 local `win32-uname.h' for MinGW. Extern declaration of
9145 `mkstemp()' for systems where it does not exists. Make
9146 `getlogin()' available on M$-Windows.
9147
9148 * scmsigs.c: Made `usleep()' avalable on MinGW.
9149
9150 * stime.c: On M$-Windows `tzname[]' is known to be `_tzname[]'.
9151
9152 * win32-dirent.c: Include "win32-dirent.h", not "dirent.h".
9153
9154 * win32-uname.c: Include "win32-uname.h", not "uname.h".
9155
9156 2001-10-28 Mikael Djurfeldt <mdj@linnaeus>
9157
9158 * unif.c (scm_uniform_array_read_x, scm_uniform_array_write):
9159 Don't apply scm_uniform_vector_length on arrays.
9160
9161 2001-10-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
9162
9163 * eval.c (scm_lookupcar, scm_m_letstar, scm_m_do, iqq,
9164 scm_m_define, scm_m_letrec1, scm_m_let, scm_m_expand_body,
9165 scm_macroexp, unmemocopy, scm_eval_args, scm_deval_args,
9166 SCM_CEVAL, scm_map, scm_init_eval): When building lists, prefer
9167 scm_list_<n> over scm_cons[2]?.
9168
9169 (scm_unmemocar, scm_m_cond, scm_m_letstar, scm_m_letrec1,
9170 scm_m_let, scm_m_atbind, unmemocopy, SCM_CEVAL, SCM_APPLY): Use
9171 SCM_C[AD][AD]R instead of explicit form.
9172
9173 (scm_m_set_x, scm_m_cond, scm_m_letstar, scm_m_do): Reordered
9174 comparison parameters.
9175
9176 (scm_m_case, scm_m_cond, scm_m_letstar, scm_m_do, SCM_CEVAL): Use
9177 !SCM_NULLP instead of SCM_NIMP.
9178
9179 (scm_m_case): Don't copy the form. Renamed proc to clause and
9180 minimized its scope. Renamed x to clauses. Removed side
9181 effecting operation from macro call.
9182
9183 (scm_m_cond): Don't copy the form. Renamed arg1 to clause and
9184 minimized its scope. Renamed x to clauses. Minimized the scope
9185 of variable 'len'. Make sure the else clause is treated specially
9186 even in case of '=>' occurences. Don't change the else to #t in
9187 order to be able to distinguish this case in the evaluator. Leave
9188 type checking of the recipient to the evaluator.
9189
9190 (scm_c_improper_memq): Made the comment somewhat clearer.
9191
9192 (scm_m_lambda): Renamed proc to formals. Removed unnecessary
9193 test for SCM_IM_LET at the place of the formal parameters.
9194 Simplified the formal parameter checking.
9195
9196 (scm_m_letstar): Added Comment. Renamed proc to bindings.
9197 Renamed arg1 to binding and minimized its scope. Eliminated
9198 unnecessary consing.
9199
9200 (scm_m_do): Renamed proc to bindings. Minimized the scope of
9201 variable 'len'.
9202
9203 (build_binding_list): New static function.
9204
9205 (unmemocopy): Don't use SCM_TYP7 on pairs (it's unclean).
9206 Further, split up the 'letrec' unmemoizing code to the
9207 corresponding parts for 'do', 'let' and 'letrec', adding comments
9208 to each form. Cleanup the handling of the do form (This removes
9209 some *real* code :-).
9210
9211 (SCM_CEVAL): Removed side effecting operation from macro call.
9212 Handle the 'else clause of the 'cond form specially - the symbol
9213 'else is not replaced with #t any more.
9214
9215 2001-10-14 Gary Houston <ghouston@arglist.com>
9216
9217 * version.c (scm_version): use sprintf instead of snprintf,
9218 for portability. thanks to Bill Schottstaedt.
9219
9220 2001-10-14 Mikael Djurfeldt <mdj@linnaeus>
9221
9222 * read.c (scm_lreadr): When user-defined hash procedure returns
9223 SCM_UNSPECIFIED: Fall back to standard handling instead of raising
9224 an exception. (This prevents parsing of uniform vectors from
9225 interfering with parsing of numbers.)
9226
9227 2001-10-13 Marius Vollmer <mvo@zagadka.ping.de>
9228
9229 * numbers.c: Set NO_PREPRO_MAGIC when defining our version of
9230 PTRDIFF_MIN. Thanks to Ken Raeburn.
9231
9232 2001-10-07 Marius Vollmer <mvo@zagadka.ping.de>
9233
9234 * Makefile.am (EXTRA_libguile_la_SOURCES): Added "mkstemp.c".
9235
9236 * eval.c (scm_m_atbind): First try to find the variable without
9237 defining it locally; when it has not been found, define it
9238 locally.
9239
9240 * modules.c (module_variable): Pass over variables that exist but
9241 are unbound.
9242
9243 2001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
9244
9245 * backtrace.c (display_backtrace_file_and_line): Only use
9246 scm_basename when POSIX support is compiled in. Thanks to Chris
9247 Cramer.
9248
9249 2001-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9250
9251 * numbers.c (mem2uinteger): Return number read so far when coming
9252 across a hexdigit after having read a # or if not reading a hex
9253 value. This will enable the calling code to correctly handle
9254 forms like 1e2. (The background is, that the exponent markers d,
9255 e and f are also hexdigits.) Thanks to Mikael Djurfeldt for
9256 providing this patch.
9257
9258 (mem2complex): Fix erroneous double-negation. Now, numbers like
9259 1-i will be read correctly.
9260
9261 2001-10-12 Mikael Djurfeldt <mdj@linnaeus>
9262
9263 * debug.c (scm_mem_to_proc): Fixed typo in previous change.
9264
9265 * validate.h (SCM_VALIDATE_DOUBLE_DEF_COPY): New macro.
9266
9267 2001-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
9268
9269 * print.c (scm_print_state_vtable, print_state_pool):
9270 Initialize. These variables are now registered as gc roots.
9271
9272 (scm_current_pstate): Update documentation.
9273
9274 (scm_current_pstate, scm_make_print_state, scm_free_print_state,
9275 scm_prin1, scm_init_print): print_state_pool is registered as a
9276 gc root and thus does not need to be protected by a surrounding
9277 pair any more.
9278
9279 (make_print_state): The car of print_state_pool no longer holds
9280 the scm_print_state_vtable.
9281
9282 (scm_current_pstate, scm_make_print_state, print_circref,
9283 scm_iprin1, scm_prin1, scm_iprlist): Prefer !SCM_<foo> over
9284 SCM_N<foo>.
9285
9286 (scm_prin1): When building lists, prefer scm_list_<n> over
9287 scm_cons[2]?.
9288
9289 (scm_iprlist): Removed a redundant SCM_IMP test.
9290
9291 (scm_simple_format): Use SCM_EQ_P to compare SCM values.
9292
9293 2001-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
9294
9295 * debug.c (scm_make_iloc): Prefer !SCM_<foo> over SCM_N<foo>.
9296
9297 (scm_memcons, scm_mem_to_proc): When building lists, prefer
9298 scm_list_<n> over scm_cons[2]?.
9299
9300 (scm_mem_to_proc): Prefer SCM_CONSP over SCM_NIMP.
9301
9302 (scm_procedure_name): Use SCM_CADR instead of explicit form.
9303
9304 (debugobj_print): Coerce scm_intprint arg 1 to long, not int.
9305 Thanks to Rob Browning for the patch (see log entry 2001-09-21) -
9306 for some reason his patch didn't make it into the cvs.
9307
9308 2001-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
9309
9310 * numbers.c (mem2decimal_from_point): Cleaned up the parsing a
9311 little bit - should even be somewhat more accurate now.
9312
9313 2001-10-08 Rob Browning <rlb@defaultvalue.org>
9314
9315 * gc.c: support ia64 register backing store.
9316 (SCM_MARK_BACKING_STORE): new macro.
9317
9318 * continuations.h: support ia64 register backing store.
9319 (struct scm_t_contregs): add ia64 register backing store.
9320
9321 * continuations.c: support ia64 register backing store.
9322 (continuation_mark): mark ia64 register backing store.
9323 (continuation_free): free ia64 register backing store.
9324 (scm_make_continuation): capture ia64 register backing store.
9325 (copy_stack_and_call): copy ia64 register backing store.
9326
9327 2001-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
9328
9329 * hashtab.c (scm_hash_fn_create_handle_x): The result of assoc_fn
9330 is known to be #f if no entry is found. Thus, use !SCM_FALSEP
9331 instead of SCM_NIMP to test for that case.
9332
9333 * strings.h (SCM_SET_STRING_LENGTH): Cast the length to
9334 scm_t_bits instead of long.
9335
9336 2001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
9337
9338 * tags.h (SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
9339 SCM_T_SIGNED_BITS_MIN): New.
9340 * numbers.h (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM):
9341 Use them to make these macros computable by the preprocessor.
9342
9343 * num2integral.i.c (INTEGRAL2NUM): Let the preprocessor test
9344 whether the integral type fits in a fixnum, not the compiler.
9345 This removes a spurious compiler warning. Also, honor the
9346 NO_PREPRO_MAGIC flag to suppress any preprocessor tests. This is
9347 needed for `long long's.
9348
9349 * numbers.c: Define NO_PREPRO_MAGOC when including
9350 num2integral.c.i for `long long' and `signed long long'.
9351
9352 2001-10-06 Mikael Djurfeldt <mdj@linnaeus>
9353
9354 These changes fixes a race condition in the Guile coop - pthread
9355 compatibility code.
9356
9357 * coop.c (mother_awake_p): New variable.
9358 (coop_create): Set mother_awake_p before creating or signalling
9359 mother; wait until mother is going to sleep before returning.
9360 (mother): Reset mother_awake_p before going to sleep.
9361
9362 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
9363
9364 * options.c (protected_objects, scm_init_options): The content of
9365 protected_objects is now protected from garbage collection using
9366 scm_gc_register_root instead of scm_permanent_object.
9367
9368 (get_option_setting): New static function that computes an option
9369 setting as it was formerly done in the function scm_options.
9370
9371 (get_documented_option_setting): New static function that
9372 returns option documentation as it was formerly done in the
9373 function scm_options. Note that documentation C strings are no
9374 longer precomputed into SCM objects. Instead, they are converted
9375 into SCM strings every time get_documented_option_setting is
9376 called.
9377
9378 (change_option_setting): New static functions that modifies the
9379 option setting as it was formerly done in the function
9380 scm_options. The function is now exception safe, i. e. won't
9381 cause a memory leak when interrupted. Further, only non-immediate
9382 option values are added to the protection list.
9383
9384 (scm_options): This function now has only the purpose to dispatch
9385 to to get_option_setting, get_documented_option_setting or
9386 change_option_setting, depending on the arguments given to
9387 scm_options.
9388
9389 (scm_init_opts): Don't convert documentation C strings into SCM
9390 strings. Further, don't protect any object values: They _must_
9391 be immediate values, otherwise there is no guarantee that they
9392 have not been collected before anyway.
9393
9394 * options.[ch] (scm_t_option): Made type unsigned, name into a
9395 constant char* and val into a scm_t_bits type.
9396
9397 (scm_options, scm_init_opts): The number of options is guaranteed
9398 to be larger or equal to zero. Thus, the type is changed to
9399 unsigned.
9400
9401 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
9402
9403 * num2integral.i.c (NUM2INTEGRAL): Eliminated some warnings about
9404 testing an unsigned value for being >= 0.
9405
9406 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
9407
9408 * numbers.h: Removed old comment about using SCM_CAR to access
9409 non-pair cells.
9410
9411 (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM): Make sure
9412 the return value is signed. Thanks to Brian Crowder for the bug
9413 report.
9414
9415 (SCM_SRS): Avoid unnecessary casting and don't unpack input
9416 values. With this patch, SCM_SRS can be safely used for other
9417 types than scm_t_signed_bits. However, it should still better be
9418 an internal macro and thus be renamed to SCM_I_SRS.
9419
9420 (SCM_MAKINUM, SCM_INUM): Use proper casting.
9421
9422 2001-10-03 Gary Houston <ghouston@arglist.com>
9423
9424 * continuations.h, unif.h: in the descriptions of the bit patterns
9425 of the heap cells, make bit 0 the least significant.
9426
9427 2001-09-25 Thien-Thi Nguyen <ttn@glug.org>
9428
9429 * chars.h (SCM_MAKE_CHAR): Use `scm_t_bits' instead of `intptr_t'.
9430 Thanks to Golubev I. N.
9431
9432 2001-09-25 Gary Houston <ghouston@arglist.com>
9433
9434 * ports.c (scm_drain_input): extended the docstring. thanks to
9435 Alex Schroeder and Thien-Thi Nguyen.
9436
9437 2001-09-23 Mikael Djurfeldt <mdj@linnaeus>
9438
9439 * validate.h (SCM_NUM2FLOAT, SCM_NUM2DOUBLE,
9440 SCM_VALIDATE_FLOAT_COPY, SCM_VALIDATE_DOUBLE_COPY): New
9441 macros. (The NUM names might soon change.)
9442
9443 * numbers.h: Added missing declarations.
9444
9445 2001-09-22 Mikael Djurfeldt <mdj@linnaeus>
9446
9447 * Makefile.am: Distribute num2float.i.c.
9448
9449 * num2float.i.c: New file, multiply included by numbers.c, used
9450 to "templatize" the float <-> num conversion routines.
9451
9452 * numbers.c: New functions: scm_num2float, scm_float2num,
9453 scm_num2double, scm_double2num.
9454
9455 2001-09-21 Rob Browning <rlb@defaultvalue.org>
9456
9457 * .cvsignore: really add version.h
9458
9459 * strings.h (SCM_SET_STRING_LENGTH): coerce "l" to a long.
9460 Otherwise it fails on the alpha. However, we might rather choose
9461 this size conditionally.
9462
9463 * numbers.c (scm_gcd): change "k" to a long from an int.
9464 Otherwise it fails on the alpha. However, we might rather choose
9465 this size conditionally.
9466
9467 * error.c (scm_wta): coerce char* to intptr_t before int
9468 assignment.
9469
9470 * debug.c (debugobj_print): coerce scm_intprint arg 1 to long, not
9471 int.
9472
9473 * chars.h (SCM_MAKE_CHAR): coerce value to intptr_t.
9474
9475 2001-09-20 Mikael Djurfeldt <mdj@linnaeus>
9476
9477 * numbers.c (scm_integer_expt): Accept inexact integer in second
9478 argument. (Thanks to Bill Schottstaedt.)
9479
9480 2001-09-20 Rob Browning <rlb@defaultvalue.org>
9481
9482 * .cvsignore: add version.h
9483
9484 * versiondat.h.in: removed (obsolete).
9485
9486 * version.h.in: renamed from version.h.
9487 (SCM_GUILE_MAJOR_VERSION): new public macro.
9488 (SCM_GUILE_MINOR_VERSION): new public macro.
9489 (SCM_GUILE_MICRO_VERSION): new public macro.
9490
9491 * version.h: renamed to version.h.in.
9492
9493 * version.c
9494 (scm_major_version): support integer *_VERSION macros.
9495 (scm_minor_version): support integer *_VERSION macros.
9496 (scm_micro_version): support integer *_VERSION macros.
9497 (scm_version): support integer *_VERSION macros.
9498
9499 2001-09-20 Mikael Djurfeldt <mdj@linnaeus>
9500
9501 * error.c, error.h: Made error keys globally accessible.
9502 Applications might want to test for these or use them in a direct
9503 call to scm_error.
9504
9505 * num2integral.i.c (NUM2INTEGRAL): Report an error when these
9506 routines are passed an inexact. This change in behavior is
9507 motivated by concordance with R5RS: It is more common that a
9508 primitive doesn't want to accept an inexact for an exact.
9509
9510 2001-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
9511
9512 The following patch partially undoes my patch from 2001-06-30,
9513 where I added the function scm_gc_mark_cell_conservatively. The
9514 function is buggy, since it breaks guile during conservative
9515 marking if a pointer on the stack points directly into the list of
9516 free cells on the heap: With conservative cell marking this will
9517 cause the whole free list to be scanned and marked - boom!
9518
9519 * gc.c (allocated_mark, MARK, heap_segment,
9520 scm_gc_mark_cell_conservatively, scm_init_storage), gc.h
9521 (scm_gc_mark_cell_conservatively): Remove function
9522 scm_gc_mark_cell_conservatively and update the corresponding
9523 comments and uses accordingly. Thanks to Christopher Cramer for
9524 the patch. (Minor corrections by me.)
9525
9526 2001-09-15 Gary Houston <ghouston@arglist.com>
9527
9528 * root.h (scm_root_state): removed the continuation_stack and
9529 continuation_stack_ptr members, which have no apparent purpose.
9530 (scm_continuation_stack, scm_continuation_stack_ptr): #defines
9531 removed.
9532
9533 * root.c (root_mark), init.c (restart_stack, start_stack), gc
9534 (scm_igc): remove all references to contination_stack and
9535 continuation_stack_ptr, avoiding allocation of a vector and
9536 useless processing during gc.
9537
9538 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9539
9540 * guardians.c (tconc_t, t_tconc): Renamed tconc_t to t_tconc.
9541
9542 (TCONC_IN): Make sure that the cell word 0 is initialized last.
9543
9544 (guardians_t, t_guardians): Renamed guardians_t to t_guardians.
9545
9546 (GUARDIAN, GUARDIAN_DATA): Renamed GUARDIAN to GUARDIAN_DATA.
9547
9548 (guardian_apply, scm_get_one_zombie, scm_make_guardian,
9549 mark_and_zombify): Prefer !SCM_<foo> over SCM_N<foo>.
9550
9551 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9552
9553 * guardians.c (mark_dependencies_in_tconc,
9554 whine_about_self_centered_zombies, scm_init_guardians): Register
9555 the static global variable `self_centered_zombies' via
9556 scm_gc_register_root, to make some cdr-ing unnecessary.
9557
9558 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9559
9560 * backtrace.c (display_backtrace_file,
9561 display_backtrace_file_and_line): Use SCM_EQ_P when comparing SCM
9562 values, use SCM_FALSEP when comparing SCM values against #f.
9563 Thanks to Rob Browning for the bug report.
9564
9565 2001-09-12 Martin Baulig <martin@home-of-linux.org>
9566
9567 * strings.[ch] (scm_str2string): New function.
9568
9569 2001-09-06 Marius Vollmer <mvo@zagadka.ping.de>
9570
9571 * gc.c (scm_done_free): Always subtract size from scm_mallocated
9572 when computing nm, even if it's negative.
9573 (scm_must_malloc): Abort on overflow of scm_mtrigger.
9574 (scm_must_realloc): Likewise.
9575
9576 2001-09-01 Michael Livshin <mlivshin@bigfoot.com>
9577
9578 * numbers.c (scm_sys_check_number_conversions): new function,
9579 defined if Guile is compiled in debugging mode. currently checks
9580 `scm_num2ulong', should check much much more.
9581
9582 * num2integral.i.c (NUM2INTEGRAL): when converting a bignum to
9583 unsigned, ensure that it's positive. thanks to Martin Baulig!
9584
9585 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
9586
9587 * __scm.h: Added new section about compile time selectable
9588 features.
9589
9590 (long_long, ulong_long, scm_sizet, SCM_WNA, SCM_OUTOFRANGE,
9591 SCM_NALLOC, SCM_HUP_SIGNAL, SCM_INT_SIGNAL, SCM_FPE_SIGNAL,
9592 SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL, SCM_GC_SIGNAL,
9593 SCM_TICK_SIGNAL, SCM_SIG_ORD, SCM_ORD_SIG, SCM_NUM_SIGS):
9594 Removed.
9595
9596 * deprecation.c (scm_include_deprecated_features): Simplified.
9597
9598 * eval.c (EVALCAR, unmemocopy), eval.h (SCM_XEVALCAR): Use
9599 `SCM_IMP' instead of `!SCM_CELLP´.
9600
9601 * eval.c (unmemocopy): Eliminate redundant SCM_CELLP tests.
9602 Extract side-effecting operations from macros.
9603
9604 (scm_init_eval): Don't initialize *top-level-lookup-closure*,
9605 scm_top_level_lookup_closure_var and scm_system_transformer.
9606
9607 * gc.c (CELL_P): New local definition to replace SCM_CELLP.
9608
9609 (heap_segment): Use CELL_P instead of SCM_CELLP.
9610
9611 * init.c (start_stack): Don't initialize
9612 scm_top_level_lookup_closure_var and scm_system_transformer.
9613
9614 * modules.c (scm_set_current_module): Don't access
9615 scm_top_level_lookup_closure_var and scm_system_transformer.
9616
9617 (scm_sym2var): Don't call scm_variable_set_name_hint.
9618
9619 (scm_post_boot_init_modules): Removed deprecated initializations.
9620
9621 * print.c (scm_ipruk): Don't access cell contents of non cells.
9622
9623 * strings.c (scm_string_set_x): All strings are writable.
9624
9625 * strings.h (SCM_STRINGP): Use SCM_TYP7 to determine the string
9626 type. There is only one string type now.
9627
9628 (SCM_STRING_COERCE_0TERMINATION_X): Deprecated.
9629
9630 * tags.h: Remove comments about two different string types.
9631
9632 (SCM_CELLP, SCM_NCELLP): Deprecated.
9633
9634 * variable.c (make_variable): Remove code variant for vcells.
9635
9636 * variable.h (SCM_VARIABLE_REF, SCM_VARIABLE_SET,
9637 SCM_VARIABLE_LOC): Remove code variant for vcells.
9638
9639 * __scm.h, deprecation.[ch]: Renamed SCM_DEBUG_DEPRECATED to
9640 SCM_ENABLE_DEPRECATED with the logic reversed.
9641
9642 * dynl.c (moddata, registered_mods), dynl.[ch]
9643 (scm_register_module_xxx, scm_registered_modules,
9644 scm_clear_registered_modules), error.[ch] (scm_wta), eval.c
9645 (*top-level-lookup-closure*), eval.[ch]
9646 (scm_top_level_lookup_closure_var, scm_system_transformer,
9647 scm_eval_3, scm_eval2), gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR,
9648 SCM_SETAND_CDR, SCM_SETOR_CDR, SCM_FREEP, SCM_NFREEP,
9649 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
9650 SCM_GCCDR), gc.[ch] (scm_remember, scm_protect_object,
9651 scm_unprotect_object), modules.c (root_module_lookup_closure,
9652 scm_sym_app, scm_sym_modules, module_prefix, make_modules_in_var,
9653 beautify_user_module_x_var, try_module_autoload_var,
9654 scm_module_full_name), modules.[ch] (scm_the_root_module,
9655 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
9656 ports.h (scm_port, scm_ptob_descriptor, scm_port_rw_active),
9657 ports.[ch] (scm_close_all_ports_except), random.h (scm_rstate,
9658 scm_rng, scm_i_rstate), strings.h (SCM_SLOPPY_STRINGP,
9659 SCM_RWSTRINGP, SCM_STRING_UCHARS, SCM_STRING_CHARS), strings.[ch]
9660 (scm_read_only_string_p, scm_makstr, scm_makfromstr,
9661 scm_make_shared_substring), tags.h (scm_tc7_substring,
9662 SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP, scm_tc7_ssymbol,
9663 scm_tc7_msymbol, scm_tcs_symbols), variable.c (sym_huh),
9664 variable.[ch] (scm_variable_set_name_hint, scm_builtin_variable),
9665 variable.h (SCM_VARVCELL, SCM_UDVARIABLEP, SCM_DEFVARIABLEP):
9666 Removed.
9667
9668 * dynl.c (scm_dynamic_link, scm_dynamic_func), error.c
9669 (scm_error_scm), filesys.c (scm_chown, scm_chmod, scm_open_fdes,
9670 scm_stat, scm_link, scm_rename, scm_delete_file, scm_mkdir,
9671 scm_rmdir, scm_opendir, scm_chdir, scm_symlink, scm_readlink,
9672 scm_lstat, scm_copy_file), fports.c (scm_open_file), ioext.c
9673 (scm_fdopen), net_db.c (scm_gethost, scm_getnet, scm_getproto,
9674 scm_getserv), ports.c (scm_truncate_file, scm_sys_make_void_port),
9675 posix.c (scm_getpwuid, scm_getgrgid, scm_execl, scm_execlp,
9676 scm_execle, scm_mkstemp, scm_utime, scm_access, scm_setlocale,
9677 scm_mknod, scm_crypt, scm_chroot, scm_getpass, scm_sethostname),
9678 regex-posix.c (scm_make_regexp, scm_regexp_exec), simpos.c
9679 (scm_system, scm_getenv), socket.c (scm_inet_aton), stime.c
9680 (setzone, scm_strftime, scm_strptime), vports.c
9681 (scm_make_soft_port): Remove calls to
9682 SCM_STRING_COERCE_0TERMINATION_X. Since the substring type is
9683 gone, all strings are 0-terminated anyway.
9684
9685 * dynl.h (LIBGUILE_DYNL_H, SCM_DYNL_H), random.h (RANDOMH,
9686 SCM_RANDOM_H): Renamed the macros that are defined to inhibit
9687 double inclusion of the same headers to the SCM_<filename>_H
9688 format.
9689
9690 * eval.c (SCM_CEVAL), gc.c (MARK, scm_gc_sweep), gh_data.c
9691 (gh_scm2chars), hash.c (scm_hasher), objects.c (scm_class_of),
9692 print.c (scm_iprin1): The type scm_tc7_substring does not exist
9693 any more.
9694
9695 * ports.h (SCM_PORTP, SCM_OPPORTP, SCM_OPINPORTP, SCM_OPOUTPORTP,
9696 SCM_INPUT_PORT_P, SCM_OUTPUT_PORT_P, SCM_OPENP), tags.h
9697 (SCM_TYP16_PREDICATE), variable.h (SCM_VARIABLEP): Prefer
9698 !SCM_<foo> over SCM_N<foo>.
9699
9700 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
9701
9702 * Makefile.am: Remove references to symbols-deprecated.c.
9703
9704 * symbols.c (scm_init_symbols): Don't initialize deprecated
9705 symbol functions.
9706
9707 * symbols-deprecated.c: Removed.
9708
9709 * fluids.[ch] (scm_internal_with_fluids), gsubr.[ch]
9710 (scm_make_gsubr, scm_make_gsubr_with_generic), hooks.[ch]
9711 (scm_create_hook), list.c (list*), list.h (SCM_LIST[0-9],
9712 scm_listify), list.[ch] (scm_sloppy_memq, scm_sloppy_memv,
9713 scm_sloppy_member), load.c (scm_end_of_file_key), load.[ch]
9714 (scm_read_and_eval_x), numbers.[ch] (scm_mkbig, scm_big2inum,
9715 scm_adjbig, scm_normbig, scm_copybig, scm_2ulong2big, scm_dbl2big,
9716 scm_big2dbl), numbers.h (SCM_FIXNUM_BIT), procs.h
9717 (scm_subr_entry, SCM_SUBR_DOC), procs.[ch] (scm_make_subr_opt,
9718 scm_make_subr, scm_make_subr_with_generic), root.c (setjmp_type,
9719 setjmp_type), root.[ch] (scm_call_catching_errors), smob.[ch]
9720 (scm_make_smob_type_mfpe, scm_set_smob_mfpe), strports.[ch]
9721 (scm_strprint_obj, scm_read_0str, scm_eval_0str), symbols.h
9722 (SCM_CHARS, SCM_UCHARS, SCM_SETCHARS, SCM_SLOPPY_SUBSTRP,
9723 SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_LENGTH_MAX, SCM_LENGTH,
9724 SCM_SETLENGTH, SCM_ROSTRINGP, SCM_ROLENGTH, SCM_ROCHARS,
9725 SCM_ROUCHARS, SCM_SUBSTRP, SCM_COERCE_SUBSTR, scm_strhash,
9726 scm_sym2vcell, scm_sym2ovcell_soft, scm_sym2ovcell,
9727 scm_intern_obarray_soft, scm_intern_obarray, scm_intern,
9728 scm_intern0, scm_sysintern, scm_sysintern0,
9729 scm_sysintern0_no_module_lookup, scm_symbol_value0,
9730 scm_string_to_obarray_symbol, scm_intern_symbol,
9731 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
9732 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp,
9733 scm_init_symbols_deprecated), vectors.c (s_vector_set_length_x),
9734 vectors.[ch] (scm_vector_set_length_x): Removed.
9735
9736 * fluids.h (FLUIDSH, SCM_FLUIDS_H), gsubr.c (GSUBRH, SCM_GSUBR_H),
9737 list.h (LISTH, SCM_LIST_H), load.h (LOADH, SCM_LOAD_H), root.h
9738 (ROOTH, SCM_ROOT_H), strports.h (STRPORTSH, SCM_STRPORTS_H):
9739 Renamed the macros that are defined to inhibit double inclusion of
9740 the same headers to the SCM_<filename>_H format.
9741
9742 * procs.h (SCM_CLOSUREP, SCM_PROCEDURE_WITH_SETTER_P), symbols.h
9743 (SCM_SYMBOLP), vectors.h (SCM_VECTORP): Prefer !SCM_<foo> over
9744 SCM_N<foo>.
9745
9746 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
9747
9748 * continuations.h (scm_contregs), debug.h (scm_debug_info,
9749 scm_debug_frame, SCM_DSIDEVAL), filesys.h (SCM_OPDIRP), fports.h
9750 (scm_fport), options.h (scm_option), snarf.h (SCM_CONST_LONG,
9751 SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
9752 SCM_GLOBAL_VCELL_INIT), srcprop.h (scm_srcprops,
9753 scm_srcprops_chunk), stacks.h (scm_info_frame, scm_stack), unif.h
9754 (scm_array, scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_HUGE_LENGTH),
9755 validate.h (SCM_FUNC_NAME, SCM_WTA, RETURN_SCM_WTA,
9756 SCM_VALIDATE_NUMBER_COPY, SCM_VALIDATE_NUMBER_DEF_COPY,
9757 SCM_VALIDATE_STRINGORSUBSTR, SCM_VALIDATE_ROSTRING,
9758 SCM_VALIDATE_ROSTRING_COPY, SCM_VALIDATE_NULLORROSTRING_COPY,
9759 SCM_VALIDATE_RWSTRING, SCM_VALIDATE_OPDIR): Removed.
9760
9761 * continuations.h (CONTINUATIONSH, SCM_CONTINUATIONS_H), filesys.h
9762 (FILESYSH, SCM_FILESYS_H), fports.h (FPORTSH, SCM_FPORTS_H),
9763 options.h (OPTIONSH, SCM_OPTIONS_H), regex-posix.h (REGEXPOSIXH,
9764 SCM_REGEX_POSIX_H), snarf.h (LIBGUILE_SNARF_H, SCM_SNARF_H),
9765 srcprop.h (SCM_SOURCE_PROPERTIES_H, SCM_SRCPROP_H), unif.h
9766 (SCM_UNIFORM_VECTORS_H, SCM_UNIF_H), validate.h (SCM_VALIDATE_H__,
9767 SCM_VALIDATE_H): Renamed the macros that are defined to inhibit
9768 double inclusion of the same headers to the SCM_<filename>_H
9769 format.
9770
9771 * debug.h (SCM_RESET_DEBUG_MODE), regex-posix.h (SCM_RGXP),
9772 srcprop.h (SRCBRKP, PROCTRACEP), struct.h (SCM_STRUCTP),
9773 validate.h (SCM_VALIDATE_THUNK, SCM_VALIDATE_ARRAY,
9774 SCM_VALIDATE_VECTOR_OR_DVECTOR, SCM_VALIDATE_VTABLE): Prefer
9775 !SCM_<foo> over SCM_N<foo>.
9776
9777 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
9778
9779 * _scm.h (_SCMH, SCM__SCM_H), alist.h (ALISTH, SCM_ALIST_H),
9780 arbiters.h (ARBITERSH, SCM_ARBITERS_H), backtrace.h (BACKTRACEH,
9781 SCM_BACKTRACE_H), boolean.h (BOOLEANH, SCM_BOOLEAN_H), chars.h
9782 (SCM_CHARSH, SCM_CHARS_H), coop-defs.h (COOP_DEFSH,
9783 SCM_COOP_DEFS_H), coop-threads.h (COOP_THREADSH,
9784 SCM_COOP_THREADS_H), debug-malloc.h (DEBUGMALLOCH,
9785 SCM_DEBUG_MALLOC_H), dynwind.h (DYNWINDH, SCM_DYNWIND_H),
9786 environments.h (ENVIRONMENTS_H, SCM_ENVIRONMENTS_H), eq.h (EQH,
9787 SCM_EQ_H), evalext.h (EVALEXTH, SCM_EVALEXT_H), extensions.h
9788 (LIBGUILE_EXTENSIONS_H, SCM_EXTENSIONS_H), feature.h (FEATUREH,
9789 SCM_FEATURE_H), gdbint.h (GDBINTH, SCM_GDBINT_H), guardians.h
9790 (SCM_GUARDIANH, SCM_GUARDIANS_H), hash.h (HASHH, SCM_HASH_H),
9791 hashtab.h (HASHTABH, SCM_HASHTAB_H), init.h (INITH, SCM_INIT_H),
9792 ioext.h (IOEXTH, SCM_IOEXT_H), iselect.h (ISELECTH,
9793 SCM_ISELECT_H), keywords.h (KEYWORDSH, SCM_KEYWORDS_H), lang.h
9794 (LANGH, SCM_LANG_H), mallocs.h (MALLOCSH, SCM_MALLOCS_H), net_db.h
9795 (SCM_NETDBH, SCM_NET_DB_H), objprop.h (OBJPROPH, SCM_OBJPROP_H),
9796 posix.h (POSIXH, SCM_POSIX_H), procprop.h (PROCPROPH,
9797 SCM_PROCPROP_H), properties.h (PROPERTIES_H, SCM_PROPERTIES_H),
9798 ramap.h (RAMAPH, SCM_RAMAP_H), rdelim.h (SCM_RDELIM,
9799 SCM_RDELIM_H), read.h (READH, SCM_READ_H), rw.h (SCM_RW,
9800 SCM_RW_H), scmsigs.h (SCMSIGSH, SCM_SCMSIGS_H), script.h (SCRIPTH,
9801 SCM_SCRIPT_H), simpos.h (SIMPOSH, SCM_SIMPOS_H), socket.h
9802 (SCM_SOCKETH, SCM_SOCKET_H), sort.h (SORTH, SCM_SORT_H),
9803 stackchk.h (STACKCHKH, SCM_STACKCHK_H), stime.h (STIMEH,
9804 SCM_STIME_H), strop.h (STROPH, SCM_STROP_H), strorder.h
9805 (STRORDERH, SCM_STRORDER_H), threads.h (THREADSH, SCM_THREADS_H),
9806 throw.h (THROWH, SCM_THROW_H), version.h (VERSIONH,
9807 SCM_VERSION_H), vports.h (VPORTSH, SCM_VPORTS_H): Renamed
9808 the macros that are defined to inhibit double inclusion of the
9809 same headers to the SCM_<filename>_H format.
9810
9811 2001-08-27 Marius Vollmer <mvo@zagadka.ping.de>
9812
9813 * ports.c, ports.h, fprots.c, gc.c, ioext.c: Replaced
9814 "scm_t_portable" with "scm_port_table" which was an artifact from
9815 the great "scm_*_t -> scm_t_" renaming.
9816
9817 2001-08-25 Thien-Thi Nguyen <ttn@revel.glug.org>
9818
9819 * gc_os_dep.c (GC_noop1): Move before `GC_find_limit' where it is
9820 used; nfc. Thanks to Bill Schottstaedt.
9821
9822 * validate.h (SCM_VALIDATE_USHORT_COPY, SCM_VALIDATE_SHORT_COPY,
9823 SCM_VALIDATE_UINT_COPY, SCM_VALIDATE_INT_COPY): New macros.
9824 Thanks to Chris Cramer.
9825
9826 2001-08-25 Marius Vollmer <mvo@zagadka.ping.de>
9827
9828 * Makefile.am (AUTOMAKE_OPTIONS): Change "foreign" to "gnu".
9829
9830 * eval.c (scm_m_atbind): Redesigned to behvae like `let', but with
9831 dynamic scope.
9832 * dynwind.h (scm_swap_bindings): Declare.
9833 * dynwind.c (scm_swap_bindings): Make non-static.
9834
9835 2001-08-25 Michael Livshin <mlivshin@bigfoot.com>
9836
9837 * gc.c (scm_gc_sweep): now can sweep unreachable variables (by
9838 doing exactly nothing about them). thanks Neil!
9839
9840 2001-08-18 Neil Jerram <neil@ossau.uklinux.net>
9841
9842 * __scm.h (SCM_ENABLE_VCELLS): Fix spelling mistake in comment.
9843
9844 2001-08-17 Thien-Thi Nguyen <ttn@revel.glug.org>
9845
9846 * gc.c: Fix omission bug: Add `heap_segment' forward decl
9847 (proto) in the case when either `GUILE_DEBUG' or
9848 `GUILE_DEBUG_FREELIST' preprocessor symbols are defined.
9849
9850 (map_free_list): Fix typo: Ref `f' correctly.
9851
9852 Thanks to Chris Cramer.
9853
9854 2001-08-15 Rob Browning <rlb@defaultvalue.org>
9855
9856 * Makefile.am (libguile_la_LDFLAGS): use libtool interface version
9857 variables.
9858 (libpath.h): change libguileversion to libguileinterface.
9859
9860 2001-08-07 Marius Vollmer <mvo@zagadka.ping.de>
9861
9862 * Makefile.am (EXTRA_DIST): Distribute ChangeLog-1996-1999 and
9863 ChangeLog-2000. Thanks to Daniel Skarda!
9864
9865 2001-08-07 Michael Livshin <mlivshin@bigfoot.com>
9866
9867 * guile-snarf-docs-texi.in: don't call the tokenizer here, we now
9868 do it from the Makefile.
9869
9870 * Makefile.am: rearrange the snarfing slightly, so that .doc files
9871 are of a reasonable size.
9872
9873 2001-08-02 Neil Jerram <neil@ossau.uklinux.net>
9874
9875 * stacks.c (scm_make_stack): Improve docstring by explaining use
9876 of cutting args.
9877
9878 2001-08-01 Marius Vollmer <mvo@zagadka.ping.de>
9879
9880 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
9881 scm_char_whitespace_p, scm_char_upper_case_p,
9882 scm_char_lower_case_p, scm_char_is_both_p): Do not require
9883 characters to fulfill isascii in addition to the primary
9884 predicate.
9885
9886 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
9887
9888 * numbers.c (DIGITS, scm_small_istr2int, scm_istr2int,
9889 scm_istr2flo, scm_istring2number): Removed.
9890
9891 (iflo2str, scm_real_p, scm_integer_p): Use SCM_<foo> instead of
9892 SCM_SLOPPY_<foo>.
9893
9894 (t_exactness, t_radix, DIGIT2UINT, XDIGIT2UINT, mem2uinteger,
9895 mem2decimal_from_point, mem2ureal, mem2complex, scm_i_mem2number):
9896 Added.
9897
9898 (scm_string_to_number): Use new number parser.
9899
9900 (scm_exact_to_inexact): Replace dummy by a GPROC, which also
9901 handles complex numbers.
9902
9903 * numbers.h (NUMBERSH, SCM_NUMBERS_H): Rename <foo>H to
9904 SCM_<foo>_H.
9905
9906 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Prefer !SCM_<pred> over
9907 SCM_N<pred>.
9908
9909 (scm_istr2int, scm_istr2flo, scm_istring2number): Removed.
9910
9911 (scm_i_mem2number): Added.
9912
9913 (scm_exact_to_inexact): Changed signature.
9914
9915 * read.c (scm_lreadr): Perform the shortcut test for '+ and '-
9916 here instead of within scm_i_mem2number. Call scm_i_mem2number
9917 instead of scm_istr2int and scm_istring2number.
9918
9919 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
9920
9921 * eval.c (scm_lookupcar, scm_m_body, scm_m_lambda, unmemocopy,
9922 scm_unmemocopy, scm_badargsp, scm_eval_body, CHECK_EQVISH,
9923 SCM_CEVAL, scm_nconc2last, SCM_APPLY, scm_copy_tree): Prefer
9924 !SCM_<pred> over SCM_N<pred>.
9925
9926 (scm_eval_body): Remove side effecting code from macro call.
9927
9928 (SCM_CEVAL, SCM_APPLY): Remove goto statement and redundant
9929 SCM_NIMP test.
9930
9931 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
9932
9933 * pairs.h (SCM_VALIDATE_PAIR): Use SCM_CONSP, not SCM_ECONSP.
9934
9935 2001-07-29 Marius Vollmer <mvo@zagadka.ping.de>
9936
9937 Removed vcell slot from structs.
9938
9939 * struct.h (scm_vtable_index_vcell): Removed. Renumbered
9940 subsequent indices.
9941
9942 * struct.c (scm_struct_vtable_p): Do not check vcell slot for
9943 zero. Use scm_vtable_index_layout instead of "0" when accessing
9944 said slot.
9945 (scm_init_struct): Remove vcell slot layout code from
9946 required_vtable_fields.
9947
9948 * objects.h (scm_si_redefined, scm_si_hashsets): Renumbered.
9949
9950 * goops.c (build_class_class_slots): Removed vcell slot
9951 definition.
9952
9953 * goops.h: Renumbered slot indices. (SCM_CLASS_CLASS_LAYOUT):
9954 Removed vcell slot layout code.
9955 (scm_si_vcell): Removed.
9956
9957 2001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
9958
9959 "Glocs" have been removed.
9960
9961 * tags.h: Update tag system docs.
9962 (scm_tc3_cons_gloc): Renamed to scm_tc3_struct. Changed all uses.
9963 (scm_tcs_cons_gloc): Renamed to scm_tcs_struct. Changed all uses.
9964 (SCM_ECONSP, SCM_NECONSP): Removed. Changed all uses to SCM_CONSP
9965 or SCM_NCONSP, respectively.
9966
9967 * struct.c, struct.h, srcprop.c, procs.c, procprop.c, print.c,
9968 objects.c. modules.c, goops.c, eval.c, debug.c: Changed all uses
9969 of scm_tc3_cond_gloc and scm_tcs_cons_gloc. See above.
9970
9971 * print.c (scm_iprin1): Remove printing of glocs. Do not try to
9972 tell glocs from structs.
9973
9974 * gc.c (scm_gc_mark, scm_gc_sweep): Remove handling of glocs.
9975
9976 * eval.c (scm_m_atbind): Make a list of variables, not glocs.
9977 (scm_ceval, scm_deval): For SCM_IM_BIND, fiddle with variables
9978 instead of with glocs.
9979 (EVALCAR): Do not test for glocs.
9980 (scm_lookupcar, scm_lookupcar1): Do not handle glocs in race
9981 condition.
9982 (scm_unmemocar): Do not handle glocs.
9983 (scm_m_atfop): Memoize as a variable, not as a gloc.
9984 (scm_eval_args, scm_deval_args): Do not handle glocs.
9985 (scm_ceval, scm_deval): Likewise.
9986
9987 * eval.h (SCM_XEVALCAR): Do not test for glocs.
9988 (SCM_GLOC_VAR, SCM_GLOC_VAL, SCM_GLOC_SET_VAL, SCM_GLOC_VAL_LOC):
9989 Removed.
9990
9991 * debug.h, debug.c (scm_make_gloc, scm_gloc_p): Removed.
9992
9993 * dynwind.c (scm_swap_bindings): Likewise.
9994 (scm_dowinds): Updated to recognize lists of variables instead of
9995 lists of glocs.
9996
9997 * __scm.h (SCM_CAUTIOS, SCM_RECKLESS): Update comments.
9998
9999
10000 * gc_os_dep.c (GC_noop1): Moved into the same #if/#endif context
10001 where it is needed.
10002
10003 2001-07-25 Gary Houston <ghouston@arglist.com>
10004
10005 * numbers.c (scm_logand, scm_logior, scm_logxor): adjusted the
10006 docstrings to reflect the n-ary implementation.
10007
10008 2001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
10009
10010 * eval.c (scm_ceval, scm_deval): Use "RETURN" macro when returning
10011 value of a variable, not the plain "return" statement.
10012
10013 2001-07-25 Marius Vollmer <mvo@zagadka.ping.de>
10014
10015 * eval.c: Allow variables in memoized code (in addition to glocs).
10016 (scm_lookupcar): Handle variables in lost races. Replace symbol
10017 with variable directly, do not make a gloc.
10018 (scm_unmemocar): Rewrite variables using a reverse lookup, just
10019 like glocs.
10020 (scm_ceval, scm_deval): Deal with variables in SCM_IM_SET and in
10021 the main switch.
10022
10023 2001-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
10024
10025 * variable.c (scm_i_variable_print): Use "value" instead of
10026 "binding" since a binding is the mapping between symbols and
10027 variables, not between variables and their values.
10028
10029 * tags.h (scm_tc7_variable): New.
10030 * gc.c (scm_gc_mark): Handle scm_tc7_variable objects.
10031 * print.c (scm_iprin1): Likewise.
10032
10033 * variable.h (scm_tc16_variable): Removed.
10034 (SCM_VARIABLEP): Test for new tc7 code.
10035 (scm_i_variable_print): New.
10036 * variable.c (scm_tc16_variable): Removed.
10037 (variable_print): Renamed to scm_i_variable_print and made
10038 non-static.
10039 (variable_equal_p): Removed.
10040 (make_variable): Construct a tc7 object instead of a smob.
10041 (scm_init_variable): Do not register smob.
10042
10043 2001-07-22 Marius Vollmer <mvo@zagadka.ping.de>
10044
10045 * tags.h: Include inttypes.h when we have it.
10046
10047 2001-07-13 Marius Vollmer <mvo@zagadka.ping.de>
10048
10049 * tags.h (SCM_UNBOUND): Make it the 34th isym/iflag, the 33th slot
10050 is taken by the new SCM_IM_CALL_WITH_VALUES.
10051 * print.c (scm_isymnames): Update table accordingly.
10052
10053 2001-07-22 Gary Houston <ghouston@arglist.com>
10054
10055 * regex-posix.c (s_scm_regexp_exec): use scm_long2num not
10056 SCM_MAKINUM to convert regoff_t value to SCM.
10057
10058 2001-07-21 Gary Houston <ghouston@arglist.com>
10059
10060 * scmsigs.c: include sys/time.h for itimer stuff.
10061
10062 2001-07-19 Rob Browning <rlb@defaultvalue.org>
10063
10064 * gc_os_dep.c (GC_noop1): ifdef out (unused) to quiet warning.
10065
10066 * c-tokenize.lex: add option %nounput to quiet warning.
10067 Add prototype for yylex to quiet warning.
10068
10069 * scmconfig.h.in: add flags for setitimer and getitimer.
10070
10071 * scmsigs.h (scm_init_scmsigs): new prototype.
10072 (scm_init_scmsigs): new prototype.
10073
10074 * scmsigs.c (s_scm_setitimer): new function.
10075 (s_scm_setitimer): new function.
10076
10077 2001-07-18 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10078
10079 * alist.c, arbiters.c, async.h, backtrace.h, boolean.c, chars.c,
10080 chars.h, continuations.h, debug-malloc.h, dynl.c, feature.c,
10081 feature.h, filesys.h, fluids.h, fports.h, gc_os_dep.c,
10082 gdb_interface.h, gh_eval.c, gh_funcs.c, gh_io.c, gh_list.c,
10083 gh_predicates.c, gsubr.c, gsubr.h, guardians.h,
10084 guile-func-name-check.in, guile-snarf-docs-texi.in,
10085 guile-snarf-docs.in, guile-snarf.awk.in, guile-snarf.in,
10086 hashtab.h, iselect.h, keywords.h, lang.c, list.h, load.h,
10087 objprop.c, objprop.h, options.c, options.h, random.h,
10088 regex-posix.h, root.c, root.h, script.c, snarf.h, stackchk.c,
10089 strerror.c, strop.h, strports.h, threads.h, values.c, values.h,
10090 version.c, version.h: Updated copyright notice.
10091
10092 2001-07-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
10093
10094 * goops.c (sym_layout, sym_vcell, sym_vtable, sym_print,
10095 sym_procedure, sym_setter, sym_redefined, sym_h0, sym_h1, sym_h2,
10096 sym_h3, sym_h4, sym_h5, sym_h6, sym_h7, sym_name,
10097 sym_direct_supers, sym_direct_slots, sym_direct_subclasses,
10098 sym_direct_methods, sym_cpl, sym_default_slot_definition_class,
10099 sym_slots, sym_getters_n_setters, sym_keyword_access, sym_nfields,
10100 sym_environment, scm_sym_change_class): New static variables to
10101 hold predefined symbols.
10102
10103 (build_class_class_slots): Build the list using scm_list_n
10104 instead of cons. Also, slots are already created as lists, thus
10105 making a call to maplist unnecessary.
10106
10107 (scm_class_name, scm_class_direct_supers, scm_class_direct_slots,
10108 scm_class_direct_subclasses, scm_class_direct_methods,
10109 scm_class_precedence_list, scm_class_slots, scm_class_environment,
10110 scm_method_procedure, create_standard_classes, purgatory): Use
10111 predefined symbols.
10112
10113 (build_slots_list, compute_getters_n_setters,
10114 scm_sys_initialize_object, scm_sys_inherit_magic_x,
10115 get_slot_value_using_name, set_slot_value_using_name,
10116 scm_sys_invalidate_method_cache_x, scm_generic_capability_p,
10117 scm_compute_applicable_methods, scm_sys_method_more_specific_p,
10118 make_struct_class): Prefer !SCM_<pred> over SCM_N<pred>.
10119
10120 (scm_sys_prep_layout_x): Minimize variable scopes.
10121
10122 (scm_sys_prep_layout_x, scm_sys_fast_slot_ref,
10123 scm_sys_fast_slot_set_x): Fix signedness.
10124
10125 (go_to_hell, go_to_heaven, purgatory, scm_change_object_class,
10126 lock_cache_mutex, unlock_cache_mutex, call_memoize_method,
10127 scm_memoize_method, scm_wrap_object): Use packing and unpacking
10128 when converting to and from SCM values.
10129
10130 (scm_enable_primitive_generic_x): Add rest argument checking.
10131
10132 (map, filter_cpl, maplist, scm_sys_initialize_object,
10133 scm_sys_prep_layout_x, slot_definition_using_name,
10134 scm_enable_primitive_generic_x, scm_compute_applicable_methods,
10135 call_memoize_method, scm_make, scm_make_class): Prefer explicit
10136 predicates over SCM_N?IMP tests.
10137
10138 (scm_sys_prep_layout_x): Fix typo in error message. Fix type
10139 checking.
10140
10141 (burnin, go_to_hell): Use SCM_STRUCT_DATA instead of the SCM_INST
10142 alias.
10143
10144 2001-07-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
10145
10146 * fports.c (fport_print): Don't use SCM_C[AD]R for non pairs.
10147
10148 * num2integral.i.c (INTEGRAL2NUM, INTEGRAL2BIG): Fix signedness.
10149
10150 * symbols-deprecated.c (scm_gentemp): Simplify vector test.
10151
10152 * vectors.c (scm_vector_p): Eliminate redundant IMP test.
10153
10154 2001-07-12 Michael Livshin <mlivshin@bigfoot.com>
10155
10156 * strings.c (s_scm_string): fix arg position in assert.
10157
10158 2001-07-11 Gary Houston <ghouston@arglist.com>
10159
10160 * strports.c (st_write): use memcpy, not strncpy. thanks to
10161 Dale P. Smith.
10162
10163 2001-07-09 Thien-Thi Nguyen <ttn@revel.glug.org>
10164
10165 * alist.c, alloca.c, arbiters.c, async.c, async.h, backtrace.c,
10166 boolean.c, chars.c, continuations.c, coop-defs.h, coop-threads.c,
10167 debug-malloc.h, debug.c, debug.h, dynl.c, dynwind.c, eq.c,
10168 error.c, eval.c, evalext.c, feature.c, feature.h, filesys.c,
10169 filesys.h, fluids.c, fluids.h, fports.c, fports.h, gc.c, gc.h,
10170 gdbint.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
10171 hooks.h, inet_aton.c, init.c, ioext.c, keywords.c, keywords.h,
10172 lang.c, list.c, load.c, macros.c, mallocs.c, memmove.c, modules.c,
10173 net_db.c, numbers.c, numbers.h, objects.c, objprop.c, options.c,
10174 pairs.c, pairs.h, ports.c, ports.h, posix.c, print.c, print.h,
10175 procprop.c, procs.c, procs.h, properties.c, putenv.c, ramap.c,
10176 random.c, random.h, read.c, regex-posix.c, regex-posix.h, root.c,
10177 root.h, scmsigs.c, script.c, simpos.c, smob.c, snarf.h, socket.c,
10178 sort.c, srcprop.c, srcprop.h, stackchk.c, stacks.c, stacks.h,
10179 stime.c, strerror.c, strings.c, strings.h, strop.c, strorder.c,
10180 strports.c, struct.c, struct.h, symbols-deprecated.c, symbols.c,
10181 symbols.h, tags.h, threads.c, threads.h, throw.c, unif.c, unif.h,
10182 variable.c, variable.h, vectors.c, vectors.h, version.c, vports.c,
10183 weaks.c, weaks.h: Remove "face-lift" comment.
10184
10185 2001-07-08 Rob Browning <rlb@defaultvalue.org>
10186
10187 * .cvsignore: add stamp-h.in.
10188
10189 2001-07-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10190
10191 * hooks.c (scm_make_hook, scm_add_hook_x),
10192 (scm_remove_hook_x, scm_reset_hook_x, scm_run_hook): Added return
10193 value info to the docstrings.
10194
10195 2001-07-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10196
10197 Some more compatibility patches for Windows.
10198
10199 * posix.c (getlogin): getlogin() implementation for Windows.
10200
10201 * backtrace.c, ioext.c: Include <stdio.h>.
10202
10203 * unif.c, script.c, rw.c, error.c: Include <io.h>, if it does
10204 exist.
10205
10206 * cpp_sig_symbols.in: Added SIGBREAK.
10207
10208 2001-07-01 Marius Vollmer <mvo@zagadka.ping.de>
10209
10210 * strports.c (scm_read_0str, scm_eval_0str): Call
10211 scm_c_read_string and scm_c_eval_string respectively, not
10212 themselves. Thanks to Dale P. Smith!
10213
10214 2001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10215
10216 * unif.c (scm_array_set_x): The variable args does not
10217 necessarily have to be a list. Further, got rid of a redundant
10218 SCM_NIMP test.
10219
10220 2001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10221
10222 * list.c (SCM_I_CONS): Make sure the cell type is initialized
10223 last.
10224
10225 * gc.c (s_scm_map_free_list, scm_igc, scm_gc_sweep,
10226 init_heap_seg): Fixed signedness.
10227
10228 (init_heap_seg): Replaced strange for-loop with a while loop.
10229
10230 * weaks.h (WEAKSH, SCM_WEAKS_H): Rename <foo>H to SCM_<foo>_H.
10231
10232 (SCM_WVECTP): Prefer !SCM_<pred> over SCM_N<pred>.
10233
10234 The following patch adds conservative marking for the elements of
10235 free or allocated cells.
10236
10237 * gc.c (allocated_mark, heap_segment): New static functions.
10238
10239 (which_seg): Deleted, since the functionality is now provided by
10240 function heap_segment.
10241
10242 (map_free_list): Use heap_segment instead of which_seg.
10243
10244 (MARK): If cell debugging is disabled, mark free cells
10245 conservatively.
10246
10247 (scm_mark_locations, scm_cellp): Extracted the search for the
10248 heap segment of a SCM value into function heap_segment.
10249
10250 (scm_init_storage): Allocated cells must be marked
10251 conservatively.
10252
10253 * gc.[ch] (scm_gc_mark_cell_conservatively): New function.
10254
10255 The following patch changes the representation of weak vectors to
10256 double cells instead of using an extension of the vector's
10257 allocated memory.
10258
10259 * gc.c (MARK): Use SCM_SET_WVECT_GC_CHAIN instead of assigning to
10260 the result of SCM_WVECT_GC_CHAIN.
10261
10262 (scm_gc_sweep): Weak vectors don't have extra fields any more.
10263
10264 * weaks.c (allocate_weak_vector): New static function. It does
10265 not patch any previously created vector object during the
10266 construction of a weak vector, and thus doesn't need to switch
10267 off interrupts during vector creation.
10268
10269 (scm_make_weak_vector, scm_make_weak_key_hash_table,
10270 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
10271 Use allocate_weak_vector to provide the new weak vector object.
10272
10273 * weaks.h (SCM_WVECT_TYPE, SCM_SET_WVECT_TYPE,
10274 SCM_SET_WVECT_GC_CHAIN): New macros. The weak vector subtype is
10275 now stored in the double cell.
10276
10277 (SCM_IS_WHVEC, SCM_IS_WHVEC_V, SCM_IS_WHVEC_B, SCM_IS_WHVEC_ANY):
10278 Use SCM_WVECT_TYPE.
10279
10280 (SCM_WVECT_GC_CHAIN): The weak objects are now chained together
10281 using an entry of the double cell.
10282
10283 2001-06-30 Thien-Thi Nguyen <ttn@revel.glug.org>
10284
10285 * stamp-h.in: bye bye
10286
10287 2001-06-30 Marius Vollmer <mvo@zagadka.ping.de>
10288
10289 * gh_eval.c (gh_eval_str): Use scm_c_eval_string instead of
10290 scm_eval_0str.
10291
10292 * load.c, load.h (scm_c_primitive_load,
10293 scm_c_primitive_load_path): New.
10294
10295 * strports.c, strports.h (scm_c_read_string): Renamed from
10296 scm_read_0str. Also, added "const" qualifier to argument.
10297 (scm_c_eval_string): Renamed from scm_eval_0str.
10298 (scm_read_0str, scm_eval_0str): Deprecated.
10299
10300 2001-06-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10301
10302 * fluids.c (scm_c_with_fluid): Use scm_list_1() instead of
10303 SCM_LIST1.
10304
10305 2001-06-28 Keisuke Nishida <kxn30@po.cwru.edu>
10306
10307 * list.h (scm_list_1, scm_list_2, scm_list_3, scm_list_4, scm_list_5,
10308 scm_list_n): New functions.
10309 (SCM_LIST0, SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5,
10310 SCM_LIST6, SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify): Deprecated.
10311 (lots of files): Use the new functions.
10312
10313 * goops.c (CALL_GF1, CALL_GF2, CALL_GF3, CALL_GF4): Use scm_call_N.
10314
10315 * strings.c: #include "libguile/deprecation.h".
10316
10317 2001-06-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10318
10319 * read.c (scm_lreadr): When reading a hash token, check for a
10320 user-defined hash procedure first, so that overriding the builtin
10321 hash characters is possible (this was needed for implementing
10322 SRFI-4's read synax `f32(...)').
10323
10324 * num2integral.i.c: Use scm_t_signed_bits instead of scm_t_bits,
10325 because the latter is unsigned now and breaks comparisons like
10326 (n < (scm_t_signed_bits)MIN_VALUE).
10327
10328 2001-06-26 Neil Jerram <neil@ossau.uklinux.net>
10329
10330 * eval.h, eval.c (scm_call_4): New function.
10331
10332 * eval.c (SCM_APPLY, SCM_CEVAL, ENTER_APPLY): Call trap handlers
10333 directly rather than dispatching to them via scm_ithrow and a lazy
10334 catch.
10335
10336 * eval.c (scm_evaluator_trap_table), eval.h (SCM_ENTER_FRAME_HDLR,
10337 SCM_APPLY_FRAME_HDLR, SCM_EXIT_FRAME_HDLR): Add three new options
10338 for trap handler procedures.
10339
10340 * debug.h (SCM_RESET_DEBUG_MODE): Add checks for trap handler
10341 procedures not being #f.
10342
10343 2001-06-27 Michael Livshin <mlivshin@bigfoot.com>
10344
10345 * Makefile.am (c-tokenize.c): add rule to generate it.
10346 (EXTRA_DIST): add c-tokenize.lex, so it gets distributed.
10347
10348 filter-doc-snarfage.c: remove.
10349
10350 2001-06-26 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10351
10352 * ports.c (scm_output_port_p): Use result of SCM_COERCE_OUTPORT.
10353
10354 The following set of changes makes compiling Guile under various
10355 Windows compilers easier. Compilation under GNU systems should
10356 not be affected at all.
10357
10358 Thanks to Stefan Jahn for all necessary information, patches and
10359 testing.
10360
10361 * posix.c: Conditialize getpwent, getgrent, kill, getppid, getuid,
10362 getpgrp, ttyname, primitive-fork and some header inclusion for
10363 Windows.
10364
10365 * random.c: Define M_PI, if not predefined and use __int64 for
10366 LONG64 under Windows.
10367
10368 * scmsigs.c: Emulate some functions (alarm, sleep, kill) under
10369 Windows and conditionalize some signal names.
10370
10371 * socket.c (scm_getsockopt): Added missing comma.
10372 Include socket library header under Windows.
10373
10374 * stime.c (CLKTCK): Add cast to int, to make it compile under
10375 Windows.
10376
10377 * ports.c (truncate): New function, compiled only under Windows.
10378
10379 * net_db.c: Do not declare errno under Windows.
10380
10381 * iselect.h, inet_aton.c: Include socket library headers under
10382 Windows.
10383
10384 * guile.c (inner_main): Under Windows, initialize socket library
10385 and initialize gdb_interface data structures.
10386
10387 * gdb_interface.h: Under Windows, gdb_interface cannot be
10388 initialized statically. Initialize at runtime instead.
10389
10390 * fports.c (write_all): ssize_t -> size_t.
10391 (fport_print): Conditionalize call to ttyname().
10392 (getflags): New function, compiled only under Windows.
10393
10394 * filesys.c: Conditionalize inclusion of <pwd.h>. Conditionalize
10395 primitives chown, link, fcntl.
10396 (scm_basename, scm_dirname): Under Windows, handle \ as well as /
10397 as path seperator.
10398
10399 * backtrace.c: Include <io.h> under Windows.
10400
10401 * async.h (ASYNCH, SCM_ASYNC_H): Rename <foo>H to SCM_<foo>_H.
10402
10403 * _scm.h: Added preprocessor conditional for __MINGW32__ for errno
10404 declaration.
10405
10406 2001-06-27 Keisuke Nishida <kxn30@po.cwru.edu>
10407
10408 * eval.c (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
10409 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): New functions.
10410 * eval.h (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
10411 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): Declared.
10412 * async.c (scm_run_asyncs), coop-threads.c (scheme_body_bootstrip,
10413 scheme_handler_bootstrip), debug.c (with_traps_inner), dynwind.c
10414 (scm_dynamic_wind, scm_dowinds), environments.c
10415 (import_environment_conflict), eval.c (scm_macroexp, scm_force,
10416 scm_primitive_eval_x, scm_primitive_eval), fluids.c (apply_thunk),
10417 goops.c (GETVAR, purgatory, make_class_from_template,
10418 scm_ensure_accessor), hashtab.c (scm_ihashx, scm_sloppy_assx,
10419 scm_delx_x, fold_proc), hooks.c (scm_c_run_hook), load.c
10420 (scm_primitive_load), modules.c (scm_resolve_module,
10421 scm_c_define_module, scm_c_use_module, scm_c_export,
10422 module_variable, scm_eval_closure_lookup, scm_sym2var,
10423 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
10424 ports.c (scm_port_for_each), print.c (scm_printer_apply),
10425 properties.c (scm_primitive_property_ref), ramap.c (ramap,
10426 ramap_cxr, rafe, scm_array_index_map_x, read.c (scm_lreadr),
10427 scmsigs.c (sys_deliver_signals), sort.c (applyless), strports.c
10428 (scm_object_to_string, scm_call_with_output_string,
10429 scm_call_with_input_string), throw.c (scm_body_thunk,
10430 scm_handle_by_proc, hbpca_body), unif.c (scm_make_shared_array,
10431 scm_make_shared_array), vports.c (sf_flush, sf_write,
10432 sf_fill_input, sf_close): Use one of the above functions.
10433 * goops.c, hashtab.c, scmsigs.c, sort.c: #include "libguile/root.h".
10434
10435 2001-06-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
10436
10437 * filesys.c (scm_close), ports.c (scm_close_port,
10438 scm_port_closed_p), strop.c (scm_string_null_p): Use SCM_BOOL
10439 instead of SCM_NEGATE_BOOL.
10440
10441 * filesys.c (scm_stat): Clean up type dispatch.
10442
10443 * filesys.c (scm_stat), ports.c (scm_input_port_p,
10444 scm_output_port_p): Get rid of redundant IM type check.
10445
10446 * filesys.c (scm_readdir, scm_getcwd, scm_readlink), gh_data.c
10447 (gh_str2scm), load.c (scm_primitive_load, scm_internal_parse_path,
10448 scm_search_path), net_db.c (scm_gethost, scm_getnet, scm_getproto,
10449 scm_return_entry), numbers.c (scm_number_to_string), objects.c
10450 (scm_make_subclass_object), ports.c (scm_port_mode), read.c
10451 (scm_lreadr), simpos.c (scm_getenv), socket.c (scm_inet_ntoa,
10452 scm_addr_vector), stime.c (scm_strftime), strings.c
10453 (scm_makfromstrs, scm_makfrom0str, scm_substring), strings.h
10454 (SCM_STRING_COERCE_0TERMINATION_X), strop.c (string_copy,
10455 scm_string_split), strports.c (scm_strport_to_string), symbols.c
10456 (scm_symbol_to_string), vports.c (sf_write): Use scm_mem2string
10457 instead of scm_makfromstr.
10458
10459 * net_db.c (scm_sethost, scm_setnet, scm_setproto, scm_setserv),
10460 ports.c (scm_close_all_ports_except), read.c (scm_lreadr,
10461 scm_read_hash_extend), stime.c (scm_strftime), strings.c
10462 (scm_string_append, scm_string), strings.h (SCM_STRINGP,
10463 SCM_STRING_COERCE_0TERMINATION_X, SCM_RWSTRINGP), strop.c
10464 (string_capitalize_x): Prefer explicit type check over SCM_N?IMP,
10465 !SCM_<pred> over SCM_N<pred>.
10466
10467 * strings.[ch] (scm_makfromstr): Deprecated.
10468
10469 (scm_mem2string): New function, replaces scm_makfromstr.
10470
10471 * strings.c (scm_substring), strop.c (string_copy,
10472 scm_string_split), strports.c (scm_strport_to_string), symbols.c
10473 (scm_symbol_to_string): Fix gc problem.
10474
10475 * strings.h (STRINGSH, SCM_STRINGS_H): Rename <foo>H to
10476 SCM_<foo>_H.
10477
10478 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Eliminate
10479 warning about comparing signed and unsigned values. This fix is
10480 not optimal, since it won't work reliably if sizeof (c_start) >
10481 sizeof (size_t) or sizeof (c_end) > sizeof (size_t). A better
10482 solution is to define this macro as an inline function, thus
10483 allowing to specifiy the types of c_start and c_end.
10484
10485 2001-06-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
10486
10487 * debug.h (SCM_DEBUGOBJ_FRAME): Deliver result as a
10488 scm_t_debug_frame*.
10489
10490 * debug.h (DEBUGH, SCM_DEBUG_H), stacks.h (STACKSH, SCM_STACKSH):
10491 Rename <foo>H to SCM_<foo>_H.
10492
10493 * stacks.c (NEXT_FRAME, narrow_stack): Prefer explicit type check
10494 over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
10495
10496 (narrow_stack): Make i unsigned. Don't use side-effecting
10497 operations in conditions.
10498
10499 (narrow_stack, scm_make_stack, scm_stack_id,
10500 scm_last_stack_frame): Get rid of redundant SCM_N?IMP checks.
10501
10502 (scm_make_stack, scm_stack_id, scm_last_stack_frame): Clean up
10503 type dispatch. No need to cast result of SCM_DEBUGOBJ_FRAME any
10504 more.
10505
10506 (scm_stack_ref, scm_frame_previous, scm_frame_next): Fix
10507 signedness.
10508
10509 (scm_last_stack_frame): Remove bogus `;'.
10510
10511 * stacks.h (SCM_FRAMEP): Fix type check.
10512
10513 2001-06-25 Michael Livshin <mlivshin@bigfoot.com>
10514
10515 * Makefile.am (MAINTAINERCLEANFILES): be sure to remove
10516 c-tokenize.c when doing maintainer-clean.
10517
10518 * snarf.h (SCM_SNARF_DOCS): change the "grammar" slightly.
10519
10520 * guile-snarf-docs.in, guile-snarf-docs-texi.in: rewrite &
10521 simplify.
10522
10523 * eval.c: all hash signs are in column 0.
10524
10525 * Makefile.am (guile_filter_doc_snarfage): build using
10526 c-tokenize.c, not filter-doc-snarfage.c.
10527 rearrange snarfing dependencies a bit.
10528
10529 * c-tokenize.lex: new file.
10530
10531 2001-06-25 Marius Vollmer <mvo@zagadka.ping.de>
10532
10533 * srcprop.h, srcprop.c (scm_srcprops_to_plist): Renamed from
10534 scm_t_srcpropso_plist. See the big type renaming.
10535 * coop-defs.h (scm_mutex_trylock, scm_cond_timedwait): Likewise.
10536 Thanks to Seth Alves!
10537
10538 * numbers.c (SIZE_MAX, PTRDIFF_MIN, PTRDIFF_MAX): Only define when
10539 they aren't defined already.
10540
10541 2001-06-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
10542
10543 * backtrace.c (display_backtrace_body): Use SCM_VALIDATE_STACK
10544 and SCM_VALIDATE_OPOUTPORT instead of SCM_ASSERT. Fix signedness
10545 problem.
10546
10547 * backtrace.c (display_expression, scm_set_print_params_x,
10548 display_application, display_frame, scm_backtrace), numbers.c
10549 (scm_istring2number), objects.c (scm_class_of,
10550 scm_mcache_lookup_cmethod, scm_mcache_compute_cmethod): Prefer
10551 explicit type check over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
10552
10553 * fluids.c (scm_fluid_ref, scm_fluid_set_x): Fluid numbers are
10554 always positive.
10555
10556 * numbers.c (scm_i_mkbig): Remove unnecessary casts, remove
10557 unnecessary SCM_DEFER_INTS, SCM_ALLOW_INTS.
10558
10559 * objects.c (scm_class_of): Type fix.
10560
10561 (scm_mcache_lookup_cmethod): Improved comment, simplified,
10562 eliminated goto.
10563
10564 * pairs.h (scm_error_pair_access): The function can return if
10565 called recursively.
10566
10567 2001-06-20 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10568
10569 * init.c (scm_init_guile_1): Removed initialization of tag.c.
10570
10571 * gdbint.c, init.c: Removed inclusion of tag.h.
10572
10573 * tag.h, tag.c: Removed files.
10574
10575 * Makefile.am: Removed tag.{h,c,doc,x} in various places.
10576
10577 2001-06-20 Gary Houston <ghouston@arglist.com>
10578
10579 * deprecation.c, extensions.c, rw.c: include string.h.
10580
10581 2001-06-19 Gary Houston <ghouston@arglist.com>
10582
10583 * filter-doc-snarfage.c (process): added ungetc in
10584 MULTILINE_COOKIE case since otherwise it fails when there's no
10585 space between the '(' and the quote of the following string
10586 (gcc 3.0).
10587
10588 2001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
10589
10590 Throughout: replace "scm_*_t" with "scm_t_*", except "scm_lisp_t".
10591
10592 2001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
10593
10594 * unif.h (SCM_ARRAY_NDIM): Shift then cast so that no sign
10595 extension takes place.
10596 * strings.h (SCM_STRING_LENGTH): Likewise.
10597 (SCM_STRING_MAX_LENGTH): Use unsigned numbers.
10598
10599 * __scm.h (ptrdiff_t): Typedef to long when configure didn't find
10600 it.
10601
10602 * tags.h: Include <stdint.h> when we have it.
10603 (scm_bits_t): Changed to be a unsigned type. Use uintptr_t when
10604 available. Else use "unsigned long".
10605 (scm_signed_bits_t): New.
10606
10607 * numbers.h (SCM_SRS): Cast shiftee to scm_signed_bits_t.
10608 (SCM_INUM): Cast result to scm_signed_bits_t.
10609
10610 2001-06-13 Thien-Thi Nguyen <ttn@revel.glug.org>
10611
10612 * mkstemp.c: Update path to #include file scmconfig.h.
10613 Thanks to Golubev I. N.
10614
10615 2001-06-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
10616
10617 * struct.h (SCM_STRUCT_VTABLE_FLAGS): New macro.
10618
10619 * goops.h (SCM_NUMBER_OF_SLOTS): Removed bogus `\' at the end of
10620 the macro definition.
10621
10622 (SCM_CLASSP, SCM_INSTANCEP, SCM_PUREGENERICP, SCM_ACCESSORP,
10623 SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Use SCM_STRUCT_VTABLE_FLAGS
10624 instead of SCM_INST_TYPE.
10625
10626 (SCM_ACCESSORP, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Make sure
10627 the object is a struct before accessing its struct flags.
10628
10629 (SCM_INST_TYPE, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Deprecated.
10630
10631 2001-06-10 Gary Houston <ghouston@arglist.com>
10632
10633 * rdelim.c (scm_init_rdelim_builtins): don't try to activate the
10634 (ice-9 rdelim) module in (guile) and (guile-user). it didn't
10635 work reliably anymore. try it from boot-9.scm instead.
10636
10637 2001-06-09 Marius Vollmer <mvo@zagadka.ping.de>
10638
10639 * ports.c (scm_lfwrite): Maintain columnd and row count in port.
10640 Thanks to Matthias Köppe!
10641
10642 2001-06-08 Michael Livshin <mlivshin@bigfoot.com>
10643
10644 * snarf.h, filter-doc-snarfage.c: more changes to cope with
10645 space-happy C preprocessors.
10646
10647 * filter-doc-snarfage.c, guile-snarf.in: try to cope with spaces
10648 inside cookies. thanks to Matthias Köppe!
10649
10650 2001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
10651
10652 * keywords.c (keyword_print): Don't use SCM_C[AD]R to access
10653 keywords. Fix gc protection.
10654
10655 * objects.c (scm_mcache_lookup_cmethod): Don't use side effecting
10656 operations in macro calls.
10657
10658 * pairs.c (scm_error_pair_access): Avoid recursion.
10659
10660 Thanks to Matthias Koeppe for reporting the bugs that correspond
10661 to the following set of patches.
10662
10663 * unif.c (scm_bit_set_star_x, scm_bit_invert_x), vectors.h
10664 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Obtain the
10665 bitvector base address using SCM_BITVECTOR_BASE.
10666
10667 * unif.h (SCM_BITVECTOR_BASE): Return the base address as an
10668 unsigned long*.
10669
10670 2001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
10671
10672 * goops.c (SCM_CLASS_REDEF): Removed.
10673
10674 * vectors.h (VECTORSH, SCM_VECTORS_H): Renamed <foo>H to
10675 SCM_<foo>_H.
10676
10677 Thanks to Matthias Koeppe for reporting the bugs that correspond
10678 to the following set of patches.
10679
10680 * goops.c (scm_sys_prep_layout_x, scm_basic_basic_make_class,
10681 create_basic_classes, scm_sys_fast_slot_set_x, set_slot_value,
10682 scm_sys_allocate_instance, clear_method_cache,
10683 scm_sys_invalidate_method_cache_x, scm_make,
10684 create_standard_classes, scm_make_port_classes, scm_make_class,
10685 scm_add_slot): Use SCM_SET_SLOT to set slot values.
10686
10687 (prep_hashsets): Use SCM_SET_HASHSET to set class hash values.
10688
10689 * goops.h (SCM_SET_SLOT, SCM_SET_HASHSET): New macros.
10690
10691 * ramap.c (BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
10692 UNARY_ELTS_CODE): Remove bogus break statement.
10693
10694 * vectors.h (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR):
10695 Don't access bit vectors elements as SCM objects.
10696
10697 * weaks.c (scm_make_weak_vector, scm_make_weak_key_hash_table,
10698 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
10699 Don't assign to an unpacked value.
10700
10701 2001-06-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
10702
10703 * __scm.h (SCM_NORETURN): Moved here from error.h.
10704
10705 (SCM_UNUSED): New macro.
10706
10707 (SCM_DEBUG_PAIR_ACCESSES): New macro.
10708
10709 * backtrace.c (display_error_handler), continuations.c
10710 (continuation_print), debug.c (debugobj_print), dynwind.c
10711 (guards_print), environments.c (observer_print,
10712 core_environments_finalize, leaf_environment_cell,
10713 leaf_environment_print, eval_environment_print,
10714 eval_environment_observer, import_environment_define,
10715 import_environment_undefine, import_environment_print,
10716 import_environment_observer, export_environment_define,
10717 export_environment_undefine, export_environment_print,
10718 export_environment_observer), eval.c (scm_m_quote, scm_m_begin,
10719 scm_m_if, scm_m_set_x, scm_m_and, scm_m_or, scm_m_case,
10720 scm_m_cond, scm_m_lambda, scm_m_letstar, scm_m_do, scm_m_delay,
10721 scm_m_letrec1, scm_m_apply, scm_m_cont, scm_m_nil_cond,
10722 scm_m_nil_ify, scm_m_t_ify, scm_m_0_cond, scm_m_0_ify,
10723 scm_m_1_ify, scm_m_atfop, scm_m_at_call_with_values), evalext.c
10724 (scm_m_generalized_set_x), fluids.c (fluid_print), fports.c
10725 (fport_print), gc.c (gc_start_stats, scm_remember_upto_here_1,
10726 scm_remember_upto_here_2, scm_remember_upto_here, mark_gc_async),
10727 gh_init.c (gh_standard_handler), goops.c (get_slot_value,
10728 set_slot_value, test_slot_existence, scm_change_object_class,
10729 scm_m_atslot_ref, scm_m_atslot_set_x, make_struct_class,
10730 default_setter), guardians.c (guardian_print, guardian_gc_init,
10731 guardian_zombify, whine_about_self_centered_zombies), guile.c
10732 (inner_main), init.c (stream_handler), keywords.c (keyword_print),
10733 mallocs.c (malloc_print), numbers.c (scm_print_real,
10734 scm_print_complex, scm_bigprint), ports.c (flush_port_default,
10735 end_input_default, scm_port_print, fill_input_void_port,
10736 write_void_port), root.c (root_print), smob.c (scm_mark0,
10737 scm_free0, scm_smob_print, scm_smob_apply_1_error,
10738 scm_smob_apply_2_error, scm_smob_apply_3_error, free_print),
10739 stime.c (restorezone), strings.c (scm_makfromstr), struct.c
10740 (scm_struct_free_0, scm_struct_free_standard,
10741 scm_struct_free_entity, scm_struct_gc_init, scm_free_structs),
10742 throw.c (jmpbuffer_print, lazy_catch_print, ss_handler,
10743 scm_handle_by_throw, scm_ithrow), weaks.c
10744 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
10745 scm_scan_weak_vectors), ramap.c (scm_array_fill_int), filesys.c
10746 (scm_dir_print): Mark unused parameters with SCM_UNUSED.
10747
10748 * error.h (SCM_NORETURN): Moved to __scm.h.
10749
10750 * error.h (ERRORH, SCM_ERROR_H), pairs.h (PAIRSH, SCM_PAIRS_H):
10751 Renamed <foo>H to SCM_<foo>_H.
10752
10753 * gc.c (debug_cells_gc_interval): New static variable.
10754
10755 (scm_assert_cell_valid): If selected by the user, perform
10756 additional garbage collections.
10757
10758 (scm_set_debug_cell_accesses_x): Extended to let the user specify
10759 if additional garbage collections are desired.
10760
10761 (mark_gc_async): If additional garbage collections are selected
10762 by the user, don't call the after-gc-hook. Instead require the
10763 user to run the hook manually.
10764
10765 * pairs.c (scm_error_pair_access): New function. Only compiled
10766 if SCM_DEBUG_PAIR_ACCESSES is set to 1.
10767
10768 * pairs.h (SCM_VALIDATE_PAIR): New macro.
10769
10770 (SCM_CAR, SCM_CDR, SCM_SETCAR, SCM_SETCDR): If
10771 SCM_DEBUG_PAIR_ACCESSES is set to 1, make sure that the argument
10772 is a real pair object. (Glocs are also accepted, but that may
10773 change.) If not, abort with an error message.
10774
10775 2001-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10776
10777 * eval.c (SCM_VALIDATE_NON_EMPTY_COMBINATION): New macro.
10778
10779 (SCM_CEVAL, SCM_APPLY): Replace calls to SCM_EVALIM2 with calls
10780 to SCM_VALIDATE_NON_EMPTY_COMBINATION.
10781
10782 2001-06-05 Marius Vollmer <mvo@zagadka.ping.de>
10783
10784 * extensions.c (scm_c_register_extension): Allow NULL as library
10785 name.
10786 (load_extension): Ignore NULL library names when comparing.
10787
10788 * hash.c (scm_hasher): Use SCM_UNPACK in the case labels so that
10789 non-pointers are being compared. Thanks to Alexander Klimov!
10790
10791 2001-06-04 Gary Houston <ghouston@arglist.com>
10792
10793 * rw.c (scm_write_string_partial): new procedure implementing
10794 write-string/partial in (ice-9 rw).
10795 * rw.h: declare scm_write_string_partial.
10796
10797 2001-06-04 Marius Vollmer <mvo@zagadka.ping.de>
10798
10799 * keywords.c (keyword_print): Substract 1 from length of symbol
10800 name, accounting for the silly dash.
10801
10802 * dynl.c (scm_registered_modules, scm_clear_registered_modules):
10803 Do not emit deprecation warning.
10804
10805 Added exception notice to all files.
10806
10807 * dynl.c: Include "deprecation.h".
10808
10809 2001-06-03 Marius Vollmer <mvo@zagadka.ping.de>
10810
10811 * dynl.c (scm_register_module_xxx, scm_registered_modules,
10812 scm_clear_registered_modules): Deprecated.
10813
10814 2001-06-02 Rob Browning <rlb@cs.utexas.edu>
10815
10816 * .cvsignore: add guile_filter_doc_snarfage guile-snarf-docs
10817 guile-snarf-docs-texi.
10818
10819 * fports.c: HAVE_ST_BLKSIZE changed to
10820 HAVE_STRUCT_STAT_ST_BLKSIZE.
10821 (scm_fport_buffer_add): HAVE_ST_BLKSIZE changed to
10822 HAVE_STRUCT_STAT_ST_BLKSIZE.
10823
10824 * filesys.c (scm_stat2scm): HAVE_ST_RDEV changed to
10825 HAVE_STRUCT_STAT_ST_RDEV.
10826 (scm_stat2scm): HAVE_ST_BLKSIZE changed to
10827 HAVE_STRUCT_STAT_ST_BLKSIZE.
10828 (scm_stat2scm): HAVE_ST_BLOCKS changed to
10829 HAVE_STRUCT_STAT_ST_BLOCKS.
10830
10831 2001-06-02 Marius Vollmer <mvo@zagadka.ping.de>
10832
10833 * strports.c (scm_eval_string): Use scm_primitive_eval_x instead
10834 of scm_eval_x to allow module changes between the forms in the
10835 string. Set/restore module using scm_c_call_with_current_module.
10836
10837 * mkstemp.c: New file, slightly modified from libiberties
10838 mkstemps.c.
10839
10840 2001-05-31 Michael Livshin <mlivshin@bigfoot.com>
10841
10842 * guile-snarf-docs.in, guile-snarf-docs-texi.in,
10843 filter-doc-snarfage.c: new files.
10844
10845 * Makefile.am: add stuff to [build,] use and distribute
10846 guile-snarf-docs, guile-snarf-docs-texi, guile_filter_doc_snarfage.
10847
10848 * guile-snarf.in: grok the new snarf output.
10849
10850 * snarf.h: make the output both texttools- and `read'-friendly.
10851
10852 * guile-doc-snarf.in: reimplement in terms of guile-snarf and
10853 guile-snarf-docs. (should also deprecate, I guess. maybe not).
10854
10855 2001-05-31 Marius Vollmer <mvo@zagadka.ping.de>
10856
10857 * print.c (scm_simple_format): Support "~~" and "~%". Signal
10858 error for unsupported format controls and for superflous
10859 arguments. Thanks to Daniel Skarda!
10860
10861 * print.h, print.c (scm_print_symbol_name): Factored out of
10862 scm_iprin1.
10863 (scm_iprin1): Call it.
10864
10865 * keywords.c (keyword_print): Use scm_print_symbol_name so that
10866 weird names are printed correctly.
10867
10868 * print.c (scm_print_symbol_name): Symbols whose name starts with
10869 `#' or `:' or ends with `:' are considered weird.
10870
10871 2001-05-30 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10872
10873 * numbers.c (scm_difference, scm_divide): Clarified comments for -
10874 and /.
10875
10876 2001-05-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10877
10878 * debug.h: Removed prototype for scm_eval_string.
10879
10880 2001-05-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10881
10882 * symbols.c (scm_gensym): Fix buffer overrun (try `(gensym
10883 (make-string 2000 #\!))' in an older version).
10884
10885 Change strncpy to memcpy to allow embedded NUL characters in
10886 symbol prefix.
10887
10888 2001-05-28 Michael Livshin <mlivshin@bigfoot.com>
10889
10890 * hooks.c (scm_create_hook): deprecated.
10891 (make_hook): deleted.
10892 (scm_make_hook): all the hook creation code is now here.
10893
10894 * gc.c (scm_init_gc): don't call `scm_create_hook'. instead make
10895 a hook, make it permanent, and do a `scm_c_define' on it.
10896
10897 * strop.c (s_scm_string_capitalize_x): fix docstring quoting.
10898
10899 * socket.c (s_scm_inet_pton): fix docstring quoting.
10900 (s_scm_inet_ntop): ditto.
10901
10902 * num2integral.i.c (INTEGRAL2NUM): cast to fix a warning.
10903
10904 * hashtab.c (scm_internal_hash_fold): fix argument position in
10905 SCM_ASSERT.
10906
10907 * environments.c (s_scm_import_environment_set_imports_x): fix
10908 argument position in SCM_ASSERT.
10909
10910 * debug.c (s_scm_make_gloc): fix SCM packing/unpacking.
10911 (s_scm_make_iloc): ditto.
10912
10913 2001-05-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
10914
10915 * __scm.h (SCM_DEBUG_TYPING_STRICTNESS): Make 1 the default.
10916
10917 * eval.c (promise_print): Read the promise's value as an object.
10918
10919 (SCM_CEVAL): Don't perform side-effecting operations in macro
10920 parameters.
10921
10922 * eval.h (SCM_EVALIM2): Fix the typing strictness of the
10923 conditional expression.
10924
10925 * gc.c (scm_master_freelist, scm_master_freelist2): Added missing
10926 initializer.
10927
10928 * gh_data.c (gh_set_substr): Removed redundant unsigned >= 0
10929 text, removed redundant computation of effective_length and fixed
10930 the overflow check.
10931
10932 * goops.c (test_slot_existence): Use SCM_EQ_P to compare SCM
10933 values.
10934
10935 (wrap_init): Don't use SCM_C[AD]R for non pairs.
10936
10937 (hell): Make it a scm_bits_t pointer rather than a SCM pointer.
10938
10939 * goops.c (scm_sys_modify_class), strports.c (st_resize_port),
10940 struct.h (SCM_SET_STRUCT_PRINTER): Store unpacked values.
10941
10942 * goops.h (SCM_ACCESSORS_OF, SCM_SLOT): Return a SCM value.
10943
10944 * goops.h (GOOPSH, SCM_GOOPS_H), modules.h (MODULESH,
10945 SCM_MODULES_H), objects.h (OBJECTSH, SCM_OBJECTS_H), struct.h
10946 (STRUCTH, SCM_STRUCT_H), symbols.h (SYMBOLSH, SCM_SYMBOLS_H),
10947 __scm.h (__SCMH, SCM___SCM_H): Change <foo>H to SCM_<foo>_H.
10948
10949 * modules.[ch] (scm_module_tag): Make it a scm_bits_t value.
10950
10951 * objects.h (SCM_SET_CLASS_INSTANCE_SIZE): Fixed typing.
10952
10953 * ramap.c (ramap_rp): Removed bogus `;'.
10954
10955 * sort.c (scm_restricted_vector_sort_x): Fixed signedness
10956 problem.
10957
10958 * symbols.h (SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS, SCM_SYMBOL_FUNC,
10959 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS):
10960 Read SCM objects rather than scm_bits_t values.
10961
10962 * tags.h (SCM_VOIDP_TEST): Removed.
10963
10964 (SCM_DEBUG_TYPING_STRICTNESS): Now takes values 0, 1, 2. The
10965 value of 2 now corresponds to the former 1, the current 1
10966 corresponds to the former situation that SCM_VOIDP_TEST was
10967 defined.
10968
10969 (SCM): Now defined as typedef struct scm_unused_struct * SCM;
10970 If this appears to be not ANSI compliant, we will change it to
10971 typedef struct scm_unused_struct { } * SCM;
10972 Thanks to Han-Wen Nienhuys for the suggestion.
10973
10974 * unif.c (scm_array_set_x): Fix typing problem, and use
10975 SCM_UVECTOR_BASE instead of SCM_VELTS or SCM_CELL_WORD_1 when
10976 dealing with uniform vectors.
10977
10978 2001-05-27 Michael Livshin <mlivshin@bigfoot.com>
10979
10980 * gc.c (scm_init_storage): init `scm_gc_registered_roots'.
10981 (scm_igc): mark from them, too (precisely, not conservatively!).
10982
10983 * root.h (scm_gc_registered_roots): new object in
10984 scm_sys_protects.
10985
10986 * hooks.c (scm_create_hook): call `scm_gc_protect_object' instead
10987 `scm_protect_object'. shouldn't call it at all, though, it seems.
10988
10989 * gc.c (scm_[un]protect_object): deprecated.
10990 (scm_gc_[un]protect_object): new names for scm_[un]protect_object.
10991 (scm_gc_[un]register_root[s]): new.
10992
10993 * gc.h: add prototypes for scm_gc_[un]protect_object,
10994 scm_gc_[un]register_root[s].
10995
10996 2001-05-26 Michael Livshin <mlivshin@bigfoot.com>
10997
10998 revert the controversial part of the 2001-05-24 changes.
10999
11000 2001-05-25 Marius Vollmer <mvo@zagadka.ping.de>
11001
11002 * modules.c (scm_env_module): Exported to Scheme.
11003
11004 * eval.c (scm_debug_opts): New option `show-file-name'.
11005
11006 * debug.h (SCM_SHOW_FILE_NAME): New.
11007
11008 * backtrace.c: Include "libguile/filesys.h".
11009 (sym_base, display_backtrace_get_file_line,
11010 display_backtrace_file, display_backtrace_file_and_line): New.
11011 (display_frame): Call display_backtrace_file_and_line if that is
11012 requested.
11013 (display_backtrace_body): Call scm_display_backtrace_file if
11014 requested.
11015
11016 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr):
11017 Prototypes removed since there's no definition for these
11018 functions.
11019
11020 2001-05-24 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11021
11022 * unif.c (scm_make_ra, array_free), unif.h (SCM_ARRAY_DIMS):
11023 Changed use of scm_array->scm_array_t and
11024 scm_array_dim->scm_array_dim_t to enable build with
11025 --disable-deprecated.
11026
11027 2001-05-24 Michael Livshin <mlivshin@bigfoot.com>
11028
11029 The purpose of this set of changes is to regularize Guile's usage
11030 of ANSI C integral types, with the following ideas in mind:
11031
11032 - SCM does not nesessarily have to be long.
11033 - long is not nesessarily enough to store pointers.
11034 - long is not nesessarily the same size as int.
11035
11036 The changes are incomplete and possibly buggy. Please test on
11037 something exotic.
11038
11039 * validate.h
11040 (SCM_NUM2{SIZE,PTRDIFF,SHORT,USHORT,BITS,UBITS,INT,UINT}[_DEF]):
11041 new macros.
11042
11043 * unif.h: type renaming:
11044 scm_array -> scm_array_t
11045 scm_array_dim -> scm_array_dim_t
11046 the old names are deprecated, all in-Guile uses changed.
11047
11048 * tags.h (scm_ubits_t): new typedef, representing unsigned
11049 scm_bits_t.
11050
11051 * stacks.h: type renaming:
11052 scm_info_frame -> scm_info_frame_t
11053 scm_stack -> scm_stack_t
11054 the old names are deprecated, all in-Guile uses changed.
11055
11056 * srcprop.h: type renaming:
11057 scm_srcprops -> scm_srcprops_t
11058 scm_srcprops_chunk -> scm_srcprops_chunk_t
11059 the old names are deprecated, all in-Guile uses changed.
11060
11061 * gsubr.c, procs.c, print.c, ports.c, read.c, rdelim.c, ramap.c,
11062 rw.c, smob.c, sort.c, srcprop.c, stacks.c, strings.c, strop.c,
11063 strorder.c, strports.c, struct.c, symbols.c, unif.c, values.c,
11064 vectors.c, vports.c, weaks.c:
11065 various int/size_t -> size_t/scm_bits_t changes.
11066
11067 * random.h: type renaming:
11068 scm_rstate -> scm_rstate_t
11069 scm_rng -> scm_rng_t
11070 scm_i_rstate -> scm_i_rstate_t
11071 the old names are deprecated, all in-Guile uses changed.
11072
11073 * procs.h: type renaming:
11074 scm_subr_entry -> scm_subr_entry_t
11075 the old name is deprecated, all in-Guile uses changed.
11076
11077 * options.h (scm_option_t.val): unsigned long -> scm_bits_t.
11078 type renaming:
11079 scm_option -> scm_option_t
11080 the old name is deprecated, all in-Guile uses changed.
11081
11082 * objects.c: various long -> scm_bits_t changes.
11083 (scm_i_make_class_object): flags: unsigned long -> scm_ubits_t
11084
11085 * numbers.h (SCM_FIXNUM_BIT): deprecated, renamed to
11086 SCM_I_FIXNUM_BIT.
11087
11088 * num2integral.i.c: new file, multiply included by numbers.c, used
11089 to "templatize" the various integral <-> num conversion routines.
11090
11091 * numbers.c (scm_mkbig, scm_big2num, scm_adjbig, scm_normbig,
11092 scm_copybig, scm_2ulong2big, scm_dbl2big, scm_big2dbl):
11093 deprecated.
11094 (scm_i_mkbig, scm_i_big2inum, scm_i_adjbig, scm_i_normbig,
11095 scm_i_copybig, scm_i_short2big, scm_i_ushort2big, scm_i_int2big,
11096 scm_i_uint2big, scm_i_long2big, scm_i_ulong2big, scm_i_bits2big,
11097 scm_i_ubits2big, scm_i_size2big, scm_i_ptrdiff2big,
11098 scm_i_long_long2big, scm_i_ulong_long2big, scm_i_dbl2big,
11099 scm_i_big2dbl, scm_short2num, scm_ushort2num, scm_int2num,
11100 scm_uint2num, scm_bits2num, scm_ubits2num, scm_size2num,
11101 scm_ptrdiff2num, scm_num2short, scm_num2ushort, scm_num2int,
11102 scm_num2uint, scm_num2bits, scm_num2ubits, scm_num2ptrdiff,
11103 scm_num2size): new functions.
11104
11105 * modules.c (scm_module_reverse_lookup): i, n: int -> scm_bits_t.
11106
11107 * load.c: change int -> size_t in various places (where the
11108 variable is used to store a string length).
11109 (search-path): call scm_done_free, not scm_done_malloc.
11110
11111 * list.c (scm_ilength): return a scm_bits_t, not long.
11112 some other {int,long} -> scm_bits_t changes.
11113
11114 * hashtab.c: various [u]int -> scm_bits_t changes.
11115 scm_ihashx_closure -> scm_ihashx_closure_t (and made a typedef).
11116 (scm_ihashx): n: uint -> scm_bits_t
11117 use scm_bits2num instead of scm_ulong2num.
11118
11119 * gsubr.c: various int -> scm_bits_t changes.
11120
11121 * goops.[hc]: various {int,long} -> scm_bits_t changes.
11122
11123 * gh_data.c (gh_num2int): no loss of precision any more.
11124
11125 * gh.h (gh_str2scm): len: int -> size_t
11126 (gh_{get,set}_substr): start: int -> scm_bits_t,
11127 len: int -> size_t
11128 (gh_<num>2scm): n: int -> scm_bits_t
11129 (gh_*vector_length): return scm_[u]size_t, not unsigned long.
11130 (gh_length): return scm_bits_t, not unsigned long.
11131
11132 * gc.[hc]: various small changes relating to many things stopping
11133 being long and starting being scm_[u]bits_t instead.
11134 scm_mallocated should no longer wrap around.
11135
11136 * fports.h: type renaming:
11137 scm_fport -> scm_fport_t
11138 the old name is deprecated, all in-Guile uses changed.
11139
11140 * fports.c (fport_fill_input): count: int -> scm_bits_t
11141 (fport_flush): init_size, remaining, count: int -> scm_bits_t
11142
11143 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr): removed
11144 those prototypes, as the functions they prototype don't exist.
11145
11146 * fports.c (default_buffer_size): int -> size_t
11147 (scm_fport_buffer_add): read_size, write_size: int -> scm_bits_t
11148 default_size: int -> size_t
11149 (scm_setvbuf): csize: int -> scm_bits_t
11150
11151 * fluids.c (n_fluids): int -> scm_bits_t
11152 (grow_fluids): old_length, i: int -> scm_bits_t
11153 (next_fluid_num, scm_fluid_ref, scm_fluid_set_x): n: int ->
11154 scm_bits_t
11155 (scm_c_with_fluids): flen, vlen: int -> scm_bits_t
11156
11157 * filesys.c (s_scm_open_fdes): changed calls to SCM_NUM2LONG to
11158 the new and shiny SCM_NUM2INT.
11159
11160 * extensions.c: extension -> extension_t (and made a typedef).
11161
11162 * eval.h (SCM_IFRAME): cast to scm_bits_t, not int. just so
11163 there are no nasty surprises if/when the various deeply magic tag
11164 bits move somewhere else.
11165
11166 * eval.c: changed the locals used to store results of SCM_IFRAME,
11167 scm_ilength and such to be of type scm_bits_t (and not int/long).
11168 (iqq): depth, edepth: int -> scm_bits_t
11169 (scm_eval_stack): int -> scm_bits_t
11170 (SCM_CEVAL): various vars are not scm_bits_t instead of int.
11171 (check_map_args, scm_map, scm_for_each): len: long -> scm_bits_t
11172 i: int -> scm_bits_t
11173
11174 * environments.c: changed the many calls to scm_ulong2num to
11175 scm_ubits2num.
11176 (import_environment_fold): proc_as_ul: ulong -> scm_ubits_t
11177
11178 * dynwind.c (scm_dowinds): delta: long -> scm_bits_t
11179
11180 * debug.h: type renaming:
11181 scm_debug_info -> scm_debug_info_t
11182 scm_debug_frame -> scm_debug_frame_t
11183 the old names are deprecated, all in-Guile uses changed.
11184 (scm_debug_eframe_size): int -> scm_bits_t
11185
11186 * debug.c (scm_init_debug): use scm_c_define instead of the
11187 deprecated scm_define.
11188
11189 * continuations.h: type renaming:
11190 scm_contregs -> scm_contregs_t
11191 the old name is deprecated, all in-Guile uses changed.
11192 (scm_contregs_t.num_stack_items): size_t -> scm_bits_t
11193 (scm_contregs_t.num_stack_items): ulong -> scm_ubits_t
11194
11195 * continuations.c (scm_make_continuation): change the type of
11196 stack_size from long to scm_bits_t.
11197
11198 * ports.h: type renaming:
11199 scm_port_rw_active -> scm_port_rw_active_t (and made a typedef)
11200 scm_port -> scm_port_t
11201 scm_ptob_descriptor -> scm_ptob_descriptor_t
11202 the old names are deprecated, all in-Guile uses changed.
11203 (scm_port_t.entry): int -> scm_bits_t.
11204 (scm_port_t.line_number): int -> long.
11205 (scm_port_t.putback_buf_size): int -> size_t.
11206
11207 * __scm.h (long_long, ulong_long): deprecated (they pollute the
11208 global namespace and have little value beside that).
11209 (SCM_BITS_LENGTH): new, is the bit size of scm_bits_t (i.e. of an
11210 SCM handle).
11211 (ifdef spaghetti): include sys/types.h and sys/stdtypes.h, if they
11212 exist (for size_t & ptrdiff_t).
11213 (scm_sizet): deprecated.
11214
11215 * Makefile.am (noinst_HEADERS): add num2integral.i.c
11216
11217 2001-05-23 Marius Vollmer <mvo@zagadka.ping.de>
11218
11219 * snarf.h (SCM_CONST_LONG): Use SCM_VCELL_INIT instead of
11220 SCM_VARIABLE_INIT since that it what it used to be.
11221
11222 * deprecation.c (scm_include_deprecated_features): Make docstring
11223 ANSIsh. Thanks to Matthias Köppe!
11224
11225 2001-05-21 Marius Vollmer <mvo@zagadka.ping.de>
11226
11227 * symbols.c (scm_mem2symbol): Re-introduce indirect cell. It is
11228 needed for weak-key hashtables.
11229
11230 * procs.c (scm_make_subr_with_generic): Add missing last argument
11231 in call to scm_c_define_gsubr_with_generic. Thanks to Ariel Rios.
11232
11233 * eval.c: Use SCM_EQ_P instead of `==' or `!=' in certain
11234 places. (scm_c_improper_memq): Return 1 instead of SCM_BOOL_T.
11235
11236 * eval.h (SCM_EVALIM2): Use SCM_EQ_P instead of `=='.
11237
11238 2001-05-20 Marius Vollmer <mvo@zagadka.ping.de>
11239
11240 * symbols.c (scm_mem2symbol): Call `scm_must_strndup' instead of
11241 `duplicate_string'. Do not use an indirect cell, store symbol
11242 directly in collision list of hash table.
11243 (duplicate_string): Removed.
11244
11245 * init.c (scm_init_guile_1): Call scm_init_extensions.
11246
11247 * Makefile.am: Add "extensions.c" and related files in all the
11248 right places.
11249
11250 * extensions.h, extension.c: New files.
11251
11252 * gc.h, gc.c (scm_must_strdup, scm_must_strndup): New.
11253
11254 * modules.h (scm_system_module_env_p): Move out of deprecated
11255 section.
11256
11257 * rw.h (scm_init_rw): Added prototype.
11258
11259 * gsubr.h, gsubr.c (scm_c_make_gsubr, scm_c_define_gsubr,
11260 scm_c_make_gsubr_with_generic, scm_c_define_gsubr_with_generic):
11261 New functions. They replace scm_make_gsubr and
11262 scm_make_gsubr_with_generic. The `make' variants only create the
11263 gsubr object, while the `define' variants also put it into the
11264 current module. Changed all callers.
11265 (scm_make_gsubr, scm_make_gsubr_with_generic): Deprecated.
11266
11267 * procs.h, procs.c (scm_c_make_subr, scm_c_define_subr,
11268 scm_c_make_subr_with_generic, scm_c_define_subr_with_generic): New
11269 functions. They replace scm_make_subr, scm_make_subr_opt and
11270 scm_make_subr_with_generic. The `make' variants only create the
11271 subr object, while the `define' variants also put it into the
11272 current module. Changed all callers.
11273 (scm_make_subr, scm_make_subr_opt, scm_make_subr_with_generic):
11274 Deprecated.
11275
11276 * eval.c, gc.c, gh_funcs.c, goops.c, macros.c, pairs.c, ramap.c,
11277 rdelim.c, rw.c, scmsigs.c, snarf.h, values.c: Changed according to
11278 the comments above.
11279
11280 2001-05-19 Neil Jerram <neil@ossau.uklinux.net>
11281
11282 * throw.c (scm_lazy_catch): Slight docstring clarification.
11283
11284 2001-05-19 Marius Vollmer <mvo@zagadka.ping.de>
11285
11286 * throw.c: Lazy-catch handlers are no longer allowed to return.
11287 Fixed comments throughout.
11288 (scm_ithrow): Signal an error when a lazy-catch handler returns.
11289 Moved actual jump to jmpbuf into if-branch where the jmpbuf is
11290 recognized as such.
11291
11292 * version.c (s_scm_micro_version): Fix typo in FUNC_NAME, it
11293 refered to s_scm_minor_version previously.
11294
11295 * modules.h, modules.c: Moved around a lot of code so that
11296 deprecated features appear at the bottom.
11297 (root_module_lookup_closure, scm_sym_app, scm_sym_modules,
11298 module_prefix, make_modules_in_var, beautify_user_module_x_var,
11299 scm_the_root_module, scm_make_module, scm_ensure_user_module,
11300 scm_load_scheme_module): Deprecated.
11301 (scm_system_module_env_p): Return SCM_BOOL_T directly for
11302 environments corresponding to the root module.
11303 (convert_module_name, scm_c_resolve_module,
11304 scm_c_call_with_current_module, scm_c_define_module,
11305 scm_c_use_module, scm_c_export): New.
11306 (the_root_module): New static variant of scm_the_root_module. Use
11307 it everywhere instead of scm_the_root_module.
11308
11309 * fluids.h, fluids.c (scm_internal_with_fluids): Deprecated.
11310 (scm_c_with_fluids): Renamed from scm_internal_with_fluids.
11311 (scm_c_with_fluid): New.
11312 (scm_with_fluids): Use scm_c_with_fluids instead of
11313 scm_internal_with_fluids.
11314
11315 * goops.h, goops.c (scm_init_goops_builtins): Renamed from
11316 `scm_init_goops'. Do not explicitly create/switch modules.
11317 Return SCM_UNSPECIFIED.
11318 (scm_init_goops): Only register `%init-goops-builtins' procedure.
11319 (scm_load_goops): Use scm_c_resolve_module instead of
11320 scm_resolve_module.
11321
11322 * init.c (scm_init_guile_1): Call `scm_init_goops' instead of
11323 `scm_init_oop_goops_goopscore_module'. Call `scm_init_rdelim' and
11324 `scm_init_rw' prior to loading the startup files.
11325
11326 * rdelim.h, rdelim.c: (scm_init_rdelim_builtins): Renamed from
11327 scm_init_rdelim. Do not explicitly create/switch modules.
11328 Return SCM_UNSPECIFIED.
11329 (scm_init_rdelim): Only register `%init-rdelim-builtins'
11330 procedure.
11331
11332 * rw.c (scm_init_rw_builtins): Renamed from scm_init_rw. Do not
11333 explicitly create/switch modules. Return SCM_UNSPECIFIED.
11334 (scm_init_rw): Only register `%init-rw-builtins' procedure.
11335
11336 * script.c (scm_shell): Evaluate the compiled switches in the
11337 current module, not in the root module.
11338
11339 2001-05-18 Marius Vollmer <mvo@zagadka.ping.de>
11340
11341 * fluids.c (scm_c_with_fluids): Rename from
11342 scm_internal_with_fluids.
11343 (scm_internal_with_fluids): Deprecated.
11344 (scm_c_with_fluid): New.
11345
11346 2001-05-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
11347
11348 * print.h (PRINTH, SCM_PRINT_H): Renamed PRINTH to SCM_PRINT_H.
11349
11350 (SCM_PORT_WITH_PS_PORT, SCM_PORT_WITH_PS_PS): Only pairs may be
11351 accessed with SCM_C[AD]R.
11352
11353 (SCM_COERCE_OUTPORT): Removed redundant SCM_NIMP test.
11354
11355 2001-05-16 Rob Browning <rlb@cs.utexas.edu>
11356
11357 * version.c (s_scm_major_version): doc fixes.
11358 (s_scm_minor_version): doc fixes.
11359 (s_scm_minor_version): new function.
11360
11361 * version.h (scm_init_version): new function.
11362
11363 * versiondat.h.in: add GUILE_MICRO_VERSION.
11364
11365 2001-05-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
11366
11367 * deprecation.c (scm_init_deprecation): Renamed
11368 GUILE_WARN_DEPRECATED_DEFAULT to SCM_WARN_DEPRECATED_DEFAULT.
11369
11370 2001-05-16 Marius Vollmer <mvo@zagadka.ping.de>
11371
11372 * Makefile.am (cpp_sig_symbols.c, cpp_err_symbols.c): Make
11373 dependent on cpp_cnvt.awk
11374
11375 2001-05-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11376
11377 * script.c (scm_compile_shell_switches): New command line option
11378 `--use-srfi' for loading a list of SRFIs on startup.
11379 (scm_shell_usage): Added `--use-srfi' to help message.
11380
11381 2001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
11382
11383 Merged from mvo-vcell-cleanup-1-branch.
11384
11385 The concept of vcells has been removed from Guile. With it,
11386 explicit obarrays and associated operations are gone. Use
11387 hashtables instead of obarrays.
11388
11389 Throughout: use scm_sym2var instead of scm_sym2vcell and treat
11390 result as variable instead of vcell. Glocs no longer point to a
11391 vcell but to a variable. Use scm_c_define instead of
11392 scm_sysintern and treat the result as a variable (which it is),
11393 not a vcell.
11394
11395 * variable.c, variable.h (SCM_VARVCELL, SCM_UDVARIABLEP,
11396 SCM_DEFVARIABLEP): Deprecated.
11397 (SCM_VARIABLE_REF, SCM_VARIABLE_SET, SCM_VARIABLE_LOC): New.
11398 (variable_print): Do not print name of variable.
11399 (variable_equalp): Compare values, not vcells.
11400 (anonymous_variable_sym): Removed.
11401 (make_vcell_variable): Removed.
11402 (make_variable): New, as replacement.
11403 (scm_make_variable, scm_make_undefined_variable): Do not take name
11404 hint parameter.
11405 (scm_variable_ref): Check for SCM_UNDEFINED and throw "unbound"
11406 error in that case.
11407 (scm_builtin_variable): Deprecated.
11408
11409 * symbols.c, symbols.h (scm_sym2vcell, scm_sym2ovcell_soft,
11410 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
11411 scm_intern, scm_intern0, scm_sysintern0_no_module_lookup,
11412 scm_sysintern, scm_sysintern0, scm_symbol_value0,
11413 scm_string_to_obarray_symbol, scm_intern_symbol,
11414 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned,
11415 scm_symbol_bound_p, scm_symbol_set_x, scm_gentmp, gentmp_counter):
11416 Deprecated and moved to "symbols-deprecated.c".
11417 (copy_and_prune_obarray, scm_builtin_bindings): Removed.
11418 (scm_init_symbols): Call scm_init_symbols_deprecated.
11419 * symbols-deprecated.c: New file.
11420 * Makefile.am: Added symbols-deprecated.c and related files in all
11421 the right places.
11422
11423 * snarf.h (SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
11424 SCM_GLOBAL_VCELL_INIT): Deprecated.
11425 (SCM_VARIABLE, SCM_GLOBAL_VARIABLE, SCM_VARIABLE_INIT,
11426 SCM_GLOBAL_VARIABLE_INIT): New, as replacement. Changed all uses.
11427
11428 * print.c (scm_iprin1): Use scm_module_reverse_lookup instead of
11429 SCM_GLOC_SYM.
11430
11431 * evalext.c, filesys.c, fports.c, gdbint.c, gh_data.c, gsubr.c,
11432 hooks.c, load.c, numbers.c, objects.c, ports.c, posix.c, procs.c,
11433 ramap.c, random.c, read.c, regex-posix.c, scmsigs.c, script.c,
11434 socket.c, srcprop.c, stacks.c, stime.c, struct.c, tag.c, throw.c:
11435 Changed according to the `throughout' comments.
11436
11437 * modules.h, modules.c (scm_module_system_booted_p): Changed type
11438 to `int'.
11439 (scm_module_type): Removed.
11440 (the_root_module): Renamed to the_root_module_var. Now points to
11441 a variable instead of a vcell. Updated all uses.
11442 (scm_the_root_module): Return SCM_BOOL_F when module systems
11443 hasn't been booted yet.
11444 (SCM_VALIDATE_STRUCT_TYPE): Removed.
11445 (scm_post_boot_init_modules): Made static.
11446 (scm_set_current_module): Call scm_post_boot_init_modules on first
11447 call.
11448 (make_modules_in, beautify_user_module_x, resolve_module,
11449 try_module_autoload, module_make_local_var_x): Tacked on "_var"
11450 suffix. Now point to variables instead of vcells. Updated all
11451 uses.
11452 (scm_module_lookup_closure): Deal with the module being SCM_BOOL_F
11453 and return SCM_BOOL_F in that case.
11454 (scm_module_transformer): Likewise.
11455 (sym_module, scm_lookup_closure_module, scm_env_module): New.
11456 (SCM_F_EVAL_CLOSURE_INTERFACE, SCM_EVAL_CLOSURE_INTERFACE_P): New.
11457 (scm_eval_closure_lookup): Do not allow new definitions when
11458 `interface' flag is set.
11459 (scm_standard_interface_eval_closure): New.
11460 (scm_pre_modules_obarray, scm_sym2var, scm_module_lookup,
11461 scm_lookup, scm_module_define, scm_define, scm_c_module_lookup,
11462 scm_c_lookup, scm_c_module_define, scm_c_define,
11463 scm_module_reverse_lookup, scm_get_pre_modules_obarray,
11464 scm_modules_prehistory): New.
11465 (scm_post_boot_init_modules): Use scm_c_define and scm_c_lookup
11466 instead of scm_intern0.
11467
11468 * macros.c (scm_make_synt): Return SCM_UNSPECIFIED instead of the
11469 symbol.
11470
11471 * keywords.c (s_scm_make_keyword_from_dash_symbol): Use a regular
11472 hashtable operations to maintain the keywords, not obarray ones.
11473
11474 * init.c (scm_load_startup_files): Do not call
11475 scm_post_boot_init_modules. This is done by
11476 scm_set_current_module now.
11477 (scm_init_guile_1): Call scm_modules_prehistory. Call
11478 scm_init_variable early on.
11479
11480 * goops.c (s_scm_sys_goops_loaded): Get
11481 var_compute_applicable_methods from scm_sym2var, not from a direct
11482 invocation of scm_goops_lookup_closure.
11483
11484 * gh_funcs.c (gh_define): Return SCM_UNSPECIFIED instead of vcell.
11485
11486 * gc.c: Added simple debugging hack to mark phase of GC: When
11487 activated, do not tail-call scm_gc_mark. This gives nice
11488 backtraces.
11489 (scm_unhash_name): Removed.
11490
11491 * feature.c (features): Renamed to features_var. Now points to a
11492 variable instead of a vcell. Updated all uses.
11493
11494 * eval.h (SCM_TOP_LEVEL_LOOKUP_CLOSURE): Use
11495 `scm_current_module_lookup_closure' which will do the right thing
11496 when the module system hasn't been booted yet.
11497 (SCM_GLOC_SYM): Removed.
11498 (SCM_GLOC_VAR, SCM_GLOC_SET_VAL): New.
11499 (SCM_GLOC_VAL, SCM_GLOC_LOC): Reimplemented in terms of variables.
11500
11501 * eval.c (scm_lookupcar, scm_lookupcar1): Deal with variables
11502 instead of with vcells. Do not overwrite `var' with the result of
11503 the lookup, use the new `real_var' instead. Remove `var2' in
11504 exchange (which was only used with threads).
11505 (sym_three_question_marks): New.
11506 (scm_unmemocar): Use `scm_module_reverse_lookup' instead of
11507 `SCM_GLOC_SYM'.
11508 (scm_lisp_nil, scm_lisp_t): Directly define as symbols.
11509 (scm_m_atfop): Expect the function definition to be a variable
11510 instead of a vcell.
11511 (scm_macroexp): Do not use `unmemocar', explicitely remember the
11512 symbol instead.
11513 (scm_unmemocopy): Removed thoughts about anti-macro interface.
11514 (scm_eval_args): Use more explicit code in the gloc branch of the
11515 atrocious struct ambiguity test. The optimizer will sort this
11516 out.
11517 (scm_deval_args): Likewise.
11518 (SCM_CEVAL): Likewise. Also, do not use unmemocar, explicitely
11519 remember the symbol instead. Added some comments where
11520 scm_tc3_cons_gloc really exclusively refers to structs.
11521 (scm_init_eval): Use scm_define to initialize "nil" and "t" to
11522 scm_lisp_nil and scm_lisp_t, respectively. Use scm_define instead
11523 of scm_sysintern in general.
11524
11525 * dynwind.c (scm_swap_bindings): Use SCM_GLOC_SET_VAL instead of
11526 explicit magic.
11527
11528 * debug.c (s_scm_make_gloc): Only allow proper variables, no
11529 pairs. Put the variable directly in the gloc.
11530 (s_scm_gloc_p): Use `scm_tc3_cons_gloc' instead of the magic `1'.
11531 (scm_init_debug): Use scm_c_define instead scm_sysintern.
11532
11533 * cpp_cnvt.awk: Emit "scm_c_define" instead of "scm_sysintern".
11534
11535 * backtrace.h, backtrace.c (scm_the_last_stack_fluid): Renamed to
11536 scm_the_last_stack_fluid_var. It now points to a variable instead
11537 of a vcell. Updated all uses.
11538 (scm_has_shown_backtrace_hint_p_var): Now points to a variable
11539 instead of a vcell. Updated all uses.
11540
11541 * _scm.h: Include "variables.h" and "modules.h" since almost
11542 everybody needs them now.
11543
11544 * root.h (scm_symhash, scm_symhash_vars): Removed.
11545 * gc.c (scm_init_storage): Do not initialize them.
11546
11547 2001-05-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
11548
11549 * eval.c (scm_init_eval): Initialize scm_undefineds and
11550 scm_listofnull.
11551
11552 * gc.c (scm_debug_newcell, scm_debug_newcell2): Fixed to behave
11553 like the SCM_NEWCELL macro counterparts.
11554
11555 (scm_init_storage, scm_init_gc): Moved initialization of
11556 scm_tc16_allocated from scm_init_gc to scm_init_storage.
11557
11558 (scm_init_storage): Moved initialization of scm_undefineds and
11559 scm_listofnull to eval.c, initializion of scm_nullstr to
11560 strings.c, initializion of scm_nullvect to vectors.c.
11561
11562 * gc.h (SCM_NEWCELL, SCM_NEWCELL2): Prefer SCM_NULLP over
11563 SCM_IMP, as in scm_debug_newcell and scm_debug_newcell2.
11564
11565 * init.c (scm_init_guile_1): Reordered some initializations and
11566 added dependcy information comments.
11567
11568 * load.c (scm_init_load): Use scm_nullstr.
11569
11570 * strings.c (scm_init_strings): Initialize scm_nullstr.
11571
11572 * vectors.c (scm_init_vectors): Initialize scm_nullvect.
11573
11574 2001-05-15 Marius Vollmer <mvo@zagadka.ping.de>
11575
11576 * values.c (print_values): Print as a unreadable object, not as
11577 multiple lines. Thanks to Matthias Köppe!
11578
11579 2001-05-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
11580
11581 * deprecation.c: Fixed copyright date.
11582
11583 * deprecation.h (DEPRECATION_H, SCM_DEPRECATION_H): Renamed
11584 DEPRECATION_H to SCM_DEPRECATION_H.
11585
11586 2001-05-10 Thien-Thi Nguyen <ttn@revel.glug.org>
11587
11588 * guile-doc-snarf.in: Update copyright.
11589 Fix relative path bug. Thanks to Sergey Poznyakoff.
11590
11591 2001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
11592
11593 * ports.c (scm_port_revealed, scm_set_port_revealed_x): Only
11594 accept open ports. Thanks to Quetzalcoatl Bradley!
11595
11596 2001-05-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11597
11598 * procs.c: Increased `scm_subr_table_room' to 800 because Guile now
11599 has 779 primitives on startup.
11600
11601 2001-05-09 Marius Vollmer <mvo@zagadka.ping.de>
11602
11603 * eval.c (scm_i_eval): Copy expression before passing it to
11604 SCM_XEVAL. The copy operation was removed unintendedly during my
11605 change on 2001-03-25.
11606
11607 2001-05-09 Michael Livshin <mlivshin@bigfoot.com>
11608
11609 from Matthias Köppe (thanks!):
11610
11611 * ports.c (scm_c_read): pointer arithmetic on void pointers isn't
11612 portable.
11613
11614 * deprecation.c (s_scm_include_deprecated_features): ANSI'fied the
11615 docstring.
11616
11617 2001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
11618
11619 * gc.c (scm_init_gc): Added FIXME comment.
11620
11621 * hooks.c: Since hooks don't have a name any more, it is not
11622 necessary to include objprop.h.
11623
11624 (hook_print, scm_add_hook_x): Replace SCM_NFALSEP by !SCM_FALSEP.
11625
11626 (symbol_name, scm_make_hook_with_name): Removed.
11627
11628 (scm_create_hook): Don't set the hook's name property.
11629
11630 * hooks.h (HOOKSH, SCM_HOOKS_H): Renamed HOOKSH to SCM_HOOKS_H.
11631
11632 (SCM_HOOK_NAME, scm_make_hook_with_name): Removed.
11633
11634 * init.c (scm_init_guile_1): Hooks don't use objprops any more.
11635
11636 * numbers.c (SCM_FLOBUFLEN, FLOBUFLEN, scm_number_to_string,
11637 scm_print_real, scm_print_complex): Renamed SCM_FLOBUFLEN to
11638 FLOBUFLEN and define it unconditionally.
11639
11640 2001-05-07 Marius Vollmer <mvo@zagadka.ping.de>
11641
11642 * gh_data.c (gh_lookup): Call gh_module_lookup with
11643 `scm_current_module ()', not `#f'.
11644 (gh_module_lookup): Expect a module instead of an obarray as first
11645 argument and do lookup in that module.
11646
11647 * ramap.c (raeql_1): Do not call scm_uniform_vector_length on
11648 arrays. The length of array is already determined differently and
11649 scm_uniform_vector_length does not work on arrays.
11650
11651 2001-05-06 Marius Vollmer <mvo@zagadka.ping.de>
11652
11653 * snarf.h (SCM_FUNC_CAST_ARBITRARY_ARGS): Use "SCM (*)()" for C++
11654 as well. "SCM (*)(...)" does not work on RedHat 7.1.
11655
11656 * __scm.h (SCM_WTA_DISPATCH_0): Removed ARG and POS parameters,
11657 they are not used. Changed `wrong type' error into `wrong num
11658 args' error. Changed all callers.
11659
11660 * numbers.c (scm_difference): Call SCM_WTA_DISPATCH_0 when zero
11661 arguments are supplied.
11662
11663 2001-05-05 Thien-Thi Nguyen <ttn@revel.glug.org>
11664
11665 * regex-posix.c (scm_regexp_exec): Expand docstring to briefly
11666 describe `regexp/notbol' and `regexp/noteol' execution flags.
11667
11668 * strop.c (scm_substring_move_x): Doc fix; nfc.
11669
11670 2001-05-05 Marius Vollmer <mvo@zagadka.ping.de>
11671
11672 * objects.c, objects.h (scm_valid_object_procedure_p): New.
11673 (scm_set_object_procedure_x): Use it to check argument. Fix
11674 docstring.
11675
11676 * evalext.c (scm_definedp): Fix docstring.
11677
11678 2001-05-05 Gary Houston <ghouston@arglist.com>
11679
11680 * socket.c: use HAVE_IPV6 instead of AF_INET6 to enable IPv6
11681 support.
11682
11683 2001-05-04 Neil Jerram <neil@ossau.uklinux.net>
11684
11685 * eval.c (scm_promise_p), list.c (scm_append_x, scm_reverse_x),
11686 symbols.c (scm_symbol_to_string), vports.c (scm_make_soft_port):
11687 Change R4RS references to R5RS.
11688
11689 * guile-snarf.awk.in: Fixes so that (i) blank lines in the
11690 docstring source are correctly reproduced in the output (ii)
11691 we don't anymore get occasional trailing quotes. Also reorganized
11692 and commented the code a little.
11693
11694 * scmsigs.c (scm_raise), throw.c (scm_throw): Docstring format
11695 fixes.
11696
11697 2001-05-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11698
11699 * strop.c (scm_string_split): New procedure.
11700
11701 * strop.h (scm_string_split): Added prototype.
11702
11703 2001-05-04 Gary Houston <ghouston@arglist.com>
11704
11705 * socket.c: define uint32_t if netdb.h doesn't. thanks to
11706 Dale P. Smith.
11707
11708 2001-05-02 Marius Vollmer <mvo@zagadka.ping.de>
11709
11710 * rw.c: Include "modules.h" and "strports.h".
11711
11712 * net_db.h (scm_gethost): Added prototype.
11713
11714 * deprecation.h, deprecation.c: New.
11715 * Makefile.am (libguile_la_SOURCES): Added "deprecation.c".
11716 (DOT_X_FILES): Added "deprecation.x".
11717 (modinclude_HEADERS): Added "deprecation.h".
11718
11719 * init.c: Include "deprecation.h".
11720 (scm_init_guile_1): Call scm_init_deprecation.
11721
11722 2001-05-01 Marius Vollmer <mvo@zagadka.ping.de>
11723
11724 * gh.h (gh_init_guile, gh_make_string, gh_string_length,
11725 gh_string_ref, gh_string_set_x, gh_substring, gh_string_append):
11726 New.
11727
11728 2001-04-29 Gary Houston <ghouston@arglist.com>
11729
11730 * rw.c: new file, implementing C part of module (ice-9 rw).
11731 (scm_read_string_x_partial): moved from ioext.c
11732 (scm_init_rw): new proc.
11733 * rw.h: new file.
11734 init.c: include rw.h and call scm_init_rw.
11735 Makefile.am: include rw.c and rw.h.
11736
11737 2001-04-28 Rob Browning <rlb@cs.utexas.edu>
11738
11739 * numbers.c: enabled local definition of SCM_FLOBUFLEN until we
11740 know what's supposed to happen to it.
11741
11742 * list.h (scm_list_star): deprecation expired - removed.
11743
11744 * numbers.h (scm_dblproc): deprecation expired - removed.
11745 (SCM_UNEGFIXABLE): deprecation expired - removed.
11746 (SCM_FLOBUFLEN): deprecation expired - removed.
11747 (SCM_INEXP): deprecation expired - removed.
11748 (SCM_CPLXP): deprecation expired - removed.
11749 (SCM_REAL): deprecation expired - removed.
11750 (SCM_IMAG): deprecation expired - removed.
11751 (SCM_REALPART): deprecation expired - removed.
11752 (scm_makdbl): deprecation expired - removed.
11753 (SCM_SINGP): deprecation expired - removed.
11754 (SCM_NUM2DBL): deprecation expired - removed.
11755 (SCM_NO_BIGDIG): deprecation expired - removed.
11756
11757 * tags.h (SCM_DOUBLE_CELLP): deprecation expired - removed.
11758 (scm_tc_dblr): deprecation expired - removed.
11759 (scm_tc_dblc): deprecation expired - removed.
11760 (scm_tc16_flo): deprecation expired - removed.
11761 (scm_tc_flo): deprecation expired - removed.
11762
11763 * tag.h (scm_tag): deprecation expired - removed.
11764
11765 * tag.c: (scm_tag): deprecation expired - removed.
11766
11767 * ioext.c: (scm_fseek): deprecation expired - removed.
11768
11769 * ioext.h (scm_fseek): deprecation expired - removed.
11770
11771 * gh_data.c (gh_int2scmb): deprecation expired - removed.
11772
11773 * gh.h (gh_int2scmb): deprecation expired - removed.
11774
11775 2001-04-28 Neil Jerram <neil@ossau.uklinux.net>
11776
11777 * stacks.c (scm_make_stack): Fix typo in docstring.
11778
11779 2001-04-27 Rob Browning <rlb@cs.utexas.edu>
11780
11781 * error.c (scm_sysmissing): deprecation expired - removed.
11782
11783 * error.h (scm_sysmissing): deprecation expired - removed.
11784
11785 * gc.c
11786 (scm_init_gc): gc-thunk deprecation expired - removed.
11787 (scm_gc_vcell): deprecation expired - removed.
11788 (gc_async_thunk): scm_gc_vcell related code removed.
11789
11790 * vectors.h (SCM_NVECTORP): deprecation expired - removed.
11791
11792 * strings.h
11793 (SCM_NSTRINGP): deprecation expired - removed.
11794 (SCM_NRWSTRINGP): deprecation expired - removed.
11795
11796 * continuations.h (SCM_SETJMPBUF): deprecation expired - removed.
11797
11798 * chars.h
11799 (SCM_ICHRP): deprecation expired - removed.
11800 (SCM_ICHR): deprecation expired - removed.
11801 (SCM_MAKICHR): deprecation expired - removed.
11802
11803 * ports.h
11804 (SCM_INPORTP): deprecation expired - removed.
11805 (SCM_OUTPORTP): deprecation expired - removed.
11806
11807 2001-04-25 Marius Vollmer <mvo@zagadka.ping.de>
11808
11809 * modules.c (scm_module_type): New.
11810 (scm_post_boot_init_modules): Initialize from Scheme value.
11811 (the_module, scm_current_module, scm_init_modules): the_module is
11812 now a C only fluid.
11813 (scm_current_module): Export to Scheme.
11814 (scm_set_current_module): Do not call out to Scheme, do all the
11815 work in C. Export procedure to Scheme. Only accept modules, `#f'
11816 is no longer valid as the current module. Only set
11817 scm_top_level_lookup_closure_var and scm_system_transformer when
11818 they are not deprecated.
11819 (scm_module_transformer, scm_current_module_transformer): New.
11820
11821 * modules.h (scm_module_index_transformer, SCM_MODULE_TRANSFORMER,
11822 scm_current_module_transformer, scm_module_transformer): New.
11823
11824 * gh_data.c: Removed FIXME comment about gh_lookup returning
11825 SCM_UNDEFINED. That's the right thing to do.
11826
11827 * eval.h, eval.c (scm_system_transformer): Deprecated by moving it
11828 into the conditionally compiled sections.
11829 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Use
11830 scm_current_module_transformer instead of scm_system_transformer.
11831 * init.c (start_stack): Move initialization of
11832 scm_system_transformer to the deprecated section.
11833
11834 2001-04-22 Neil Jerram <neil@ossau.uklinux.net>
11835
11836 * throw.c (scm_throw): Correct docstring.
11837
11838 2001-04-22 Gary Houston <ghouston@arglist.com>
11839
11840 * socket.c: attempted to improve the docstrings slightly.
11841
11842 * net_db.c: remove bogus "close" declaration.
11843 (inet_aton declaration, scm_inet_aton, scm_inet_ntoa,
11844 scm_inet_netof, scm_lnaof, scm_inet_makeaddr, INADDR_ANY etc.):
11845 moved to socket.c.
11846 * net_db.h: declarations moved too.
11847
11848 * socket.c (scm_htonl, scm_ntohl): use uint32_t instead of unsigned
11849 long.
11850 (ipv6_net_to_num, ipv6_num_to_net): new static procedures.
11851 (VALIDATE_INET6): new macro.
11852 (scm_inet_pton, scm_inet_ntop): new procedures, implementing
11853 inet-pton and inet-ntop.
11854 (scm_fill_sockaddr): use VALIDATE_INET6 and ipv6_num_to_net.
11855 (scm_addr_vector): use ipv6_net_to_num.
11856
11857 2001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
11858
11859 * eq.c (scm_equal_p), ramap.c (scm_init_ramap): Don't compute the
11860 smob number explicitly. Use SCM_TC2SMOBNUM instead.
11861
11862 * gc.c (MARK, scm_gc_sweep): Only check for illegal heap objects
11863 when compiled in debug mode.
11864
11865 (scm_gc_sweep): Only call smob's free function if it is defined.
11866
11867 * print.c (scm_iprin1): No need to check for validity of smob
11868 type or existence of print function.
11869
11870 * smob.[ch] (scm_smobs): Made into a fixed size global array.
11871 Resizing will not work well with preemptive threading.
11872
11873 * smob.c (scm_smob_print): Don't use SCM_CDR to access smob data.
11874
11875 (scm_make_smob_type): Extracted initialization of smob
11876 descriptors to scm_smob_prehistory. Don't use scm_numsmob outside
11877 of the critical section.
11878
11879 (scm_smob_prehistory): Initialize all smob descriptors. By
11880 default, don't assign a smob free function: Most smob types don't
11881 need one.
11882
11883 * smob.h (SMOBH, SCM_SMOB_H): Renamed SMOBH to SCM_SMOB_H.
11884
11885 2001-04-21 Gary Houston <ghouston@arglist.com>
11886
11887 * socket.c (FLIP_NET_HOST_128): new macro.
11888 (scm_fill_sockaddr): use new macro.
11889 (scm_addr_vector): completed IPv6 address support. added const
11890 to the address parameter.
11891
11892 2001-04-20 Gary Houston <ghouston@arglist.com>
11893
11894 * socket.c (scm_fill_sockaddr): call htons for sin6_port.
11895 Don't assign sin6_scope_id in structure unless HAVE_SIN6_SCOPE_ID
11896 is defined.
11897 (scm_addr_vector): use a switch instead of multiple if statements.
11898 Add support for IPv6 (incomplete) .
11899 MAX_ADDR_SIZE: increase to size of struct sockaddr_in6 if needed.
11900
11901 2001-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
11902
11903 * struct.c (scm_free_structs): Only pairs may be accessed with
11904 SCM_C[AD]R.
11905
11906 2001-04-19 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
11907
11908 * unif.h (SCM_ARRAY_CONTIGUOUS): Reintroduced as deprecated.
11909
11910 * __scm.h (SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
11911 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Inserted required
11912 parentheses in order to get the correct associativity.
11913
11914 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
11915
11916 * unif.c (scm_array_to_list): Added missing handling of arrays of
11917 bytes. Thanks to Masao Uebayashi for the bug report.
11918
11919 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
11920
11921 * debug.c (scm_procedure_source): Use SCM_CLOSURE_FORMALS more
11922 consistently.
11923
11924 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
11925
11926 * procs.h (SCM_CLOSURE_FORMALS): New macro.
11927
11928 * debug.c (scm_procedure_source), eval.c (scm_badformalsp,
11929 SCM_CEVAL, SCM_APPLY), goops.c (get_slot_value, set_slot_value),
11930 procprop.c (scm_i_procedure_arity), sort.c (closureless): Use
11931 SCM_CLOSURE_FORMALS.
11932
11933 * eval.c (scm_badformalsp, SCM_CEVAL), procprop.c
11934 (scm_i_procedure_arity): Prefer stronger predicates like
11935 SCM_NULLP or SCM_FALSEP over SCM_IMP.
11936
11937 * macros.c (macro_print): Extracted macro printing code from
11938 print.c and simplified it.
11939
11940 (scm_macro_type): Use SCM_MACRO_TYPE;
11941
11942 (scm_init_macros): Use macro_print for printing macros.
11943
11944 * print.c (scm_print_opts): Improved option documentation.
11945
11946 (scm_iprin1): Extracted printing of macros to macros.c.
11947 Simplified printing of ordinary closures.
11948
11949 * procs.c (scm_thunk_p): Fixed handling of closures. Thanks to
11950 Martin Grabmueller for the bug report.
11951
11952 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
11953
11954 This patch eliminates some further applications of SCM_C[AD]R to
11955 non pair cells.
11956
11957 * gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR): Deprecated. These have
11958 never been applied to real pairs.
11959
11960 * srcprop.h (SCM_SOURCE_PROPERTY_FLAG_BREAK): Added.
11961
11962 (SRCPROPBRK): Use SCM_SOURCE_PROPERTY_FLAG_BREAK.
11963
11964 * unif.h (SCM_ARRAY_CONTIGUOUS, SCM_ARRAY_FLAG_CONTIGUOUS,
11965 SCM_ARRAY_CONTP): Renamed SCM_ARRAY_CONTIGUOUS to
11966 SCM_ARRAY_FLAG_CONTIGUOUS and use it.
11967
11968 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
11969 Added.
11970
11971 * srcprop.h (SRCPROPH), unif.h (UNIFH): Renamed to
11972 SCM_SOURCE_PROPERTIES_H and SCM_UNIFORM_VECTORS_H, respectively.
11973
11974 * srcprop.h (SETSRCPROPBRK, CLEARSRCPROPBRK), unif.c
11975 (scm_dimensions_to_uniform_array, scm_ra_set_contp): Don't use
11976 SCM_SET{AND,OR}_CAR.
11977
11978 2001-04-17 Gary Houston <ghouston@arglist.com>
11979
11980 * some initial support for IPv6:
11981
11982 * socket.c (scm_fill_sockaddr): improve the argument validation.
11983 don't allocate memory until all args are checked. instead of
11984 unconditional memset of soka, try setting sin_len to 0 if
11985 SIN_LEN is defined. add support for AF_INET6. define FUNC_NAME.
11986 (scm_socket, scm_connect): extend docstrings for IPv6.
11987 (scm_init_socket): intern AF_INET6 and PF_INET6.
11988
11989 2001-04-17 Niibe Yutaka <gniibe@m17n.org>
11990
11991 * srcprop.c (scm_make_srcprops): Added SCM_ALLOW_INTS which
11992 matches SCM_DEFER_INTS at the beginning of the function.
11993
11994 * mallocs.c (scm_malloc_obj): Remove un-matched SCM_ALLOW_INTS.
11995
11996 * gc.c (scm_igc): Unconditionally call
11997 SCM_CRITICAL_SECTION_START/END.
11998
11999 * fluids.c (next_fluid_num): Unconditionally call
12000 SCM_CRITICAL_SECTION_START/END.
12001 (s_scm_make_fluid): Remove un-matched SCM_DEFER_INTS.
12002
12003 * coop-defs.h (SCM_THREAD_DEFER, SCM_THREAD_ALLOW,
12004 SCM_THREAD_REDEFER, SCM_THREAD_REALLOW_1, SCM_THREAD_REALLOW_2):
12005 Removed.
12006
12007 * __scm.h (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END):
12008 Defined as nothing for the case of !defined(USE_THREADS).
12009 (SCM_THREAD_DEFER, SCM_THREAD_ALLOW, SCM_THREAD_REDEFER):
12010 Removed.
12011 (<stdio.h>): Include when (SCM_DEBUG_INTERRUPTS == 1).
12012 (SCM_CHECK_NOT_DISABLED, SCM_CHECK_NOT_ENABLED): Print FILE and
12013 LINE.
12014 (SCM_DEFER_INTS, SCM_ALLOW_INTS_ONLY, SCM_ALLOW_INTS,
12015 SCM_REDEFER_INTS, SCM_REALLOW_INTS): Don't use
12016 SCM_THREAD_DEFER/SCM_THREAD_ALLOW. Instead, use
12017 SCM_CRITICAL_SECTION_START/END.
12018 (SCM_REALLOW_INTS: Bug fix. Don't call
12019 SCM_THREAD_SWITCHING_CODE.
12020 (SCM_TICK): Don't use SCM_DEFER_INTS/SCM_ALLOW_INTS. Instead, use
12021 SCM_THREAD_SWITCHING_CODE directly.
12022 (SCM_ENTER_A_SECTION): Unconditionally use
12023 SCM_CRITICAL_SECTION_START/END. (was:
12024 SCM_DEFER_INTS/SCM_ALLOW_INTS when SCM_POSIX_THREADS defined).
12025
12026 2001-04-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12027
12028 * __scm.h (SCM_CAREFUL_INTS, SCM_DEBUG_INTERRUPTS): Replaced the
12029 macro SCM_CAREFUL_INTS by the macro SCM_DEBUG_INTERRUPTS and
12030 allowed to explicitly set this macro via the CFLAGS variable
12031 during make.
12032
12033 * fluids.c (next_fluid_num), gc.c (scm_igc), coop-defs.h
12034 (SCM_THREAD_CRITICAL_SECTION_START,
12035 SCM_THREAD_CRITICAL_SECTION_END): Renamed
12036 SCM_THREAD_CRITICAL_SECTION_START/END to
12037 SCM_CRITICAL_SECTION_START/END.
12038
12039 2001-04-11 Keisuke Nishida <kxn30@po.cwru.edu>
12040
12041 * debug-malloc.c (grow, scm_debug_malloc_prehistory): Use memset
12042 instead of bzero.
12043
12044 * coop.c, iselect.c (FD_ZERO_N): Unconditionally use memset.
12045 (MISSING_BZERO_DECL): Remove the declaration.
12046
12047 Thanks to NIIBE Yutaka.
12048
12049 2001-04-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12050
12051 * init.c, goops.c, goops.h: Reverted change of 2001-03-29. (The
12052 goops module should be registered in order to work for an
12053 application which uses libguile statically linked.)
12054
12055 2001-04-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
12056
12057 * numbers.[ch] (scm_num2long, scm_num2long_long,
12058 scm_num2ulong_long, scm_num2ulong): Argument position is an
12059 unsigned integer.
12060
12061 * environments.c (eval_environment_folder,
12062 import_environment_folder), gh_data.c (gh_scm2longs,
12063 gh_scm2floats, gh_scm2doubles): Distinguish between 0 and NULL
12064 for integers and pointers, respectively.
12065
12066 * gh_data.c (gh_scm2ulong, gh_scm2long, gh_scm2int), socket.c
12067 (scm_fill_sockaddr), unif.c (scm_array_set_x), validate.h
12068 (SCM_NUM2ULONG, SCM_NUM2LONG, SCM_NUM2LONG_DEF,
12069 SCM_NUM2LONG_LONG): Don't pass argument positions as pointers.
12070
12071 * filesys.c (scm_open_fdes, scm_open), net_db (scm_inet_ntoa,
12072 scm_inet_netof, scm_lnaof, scm_gethost, scm_getproto), posix.c
12073 (scm_utime), ramap.c (scm_array_fill_int), scmsigs.c
12074 (scm_sigaction), socket.c (scm_htonl, scm_ntohl, scm_sendto),
12075 stime.c (scm_localtime, scm_gmtime), struct.c (scm_struct_set_x),
12076 validate.h (SCM_VALIDATE_LONG_COPY): Whitespace fixes.
12077
12078 2001-04-09 Neil Jerram <neil@ossau.uklinux.net>
12079
12080 * strings.c (scm_read_only_string_p): Update docstring to reflect
12081 current (non-)usage of "read only" strings.
12082 (scm_make_shared_substring): Clarify docstring by changing
12083 "semantics" to "arguments".
12084
12085 2001-04-06 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12086
12087 * hooks.c (scm_make_hook, scm_make_hook_with_name),
12088 (scm_hook_p, scm_hook_empty_p, scm_run_hook): Docstring
12089 improvements.
12090
12091 2001-04-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12092
12093 The following changes make the documentation more consistent.
12094
12095 * rdelim.c (scm_write_line), posix.c (scm_utime), ports.c
12096 (scm_seek), net_db.c (scm_inet_aton, scm_inet_ntoa),
12097 (scm_inet_netof, scm_lnaof, scm_inet_makeaddr), ioext.c
12098 (scm_ftell): Changed @smalllisp ... @end smalllisp to @lisp
12099 ... @end lisp.
12100
12101 * vports.c (scm_make_soft_port), version.c (scm_version), unif.c
12102 (scm_array_dimensions, scm_make_shared_array),
12103 (scm_transpose_array, scm_enclose_array, scm_bit_count_star),
12104 throw.c (scm_catch), struct.c (scm_make_vtable_vtable), strop.c
12105 (scm_string_rindex, scm_string_index, scm_substring_fill_x),
12106 (scm_string_null_p), strings.c (scm_read_only_string_p), root.c
12107 (scm_call_with_dynamic_root), ramap.c (scm_array_index_map_x),
12108 posix.c (scm_mknod), numbers.c (scm_logtest, scm_logbit_p),
12109 macros.c (scm_makmmacro), list.c (scm_append), environments.c
12110 (scm_environment_fold), dynwind.c (s_scm_dynamic_wind): Changed
12111 @example ... @end example to @lisp ... @end lisp.
12112
12113 * weaks.c (scm_weak_vector): Corrected docstring.
12114
12115 * hashtab.c (scm_hashq_ref, scm_hashq_set_x, scm_hashq_remove_x),
12116 (scm_hashv_ref, scm_hashv_set_x, scm_hashv_remove_x),
12117 (scm_hash_ref, scm_hash_set_x, scm_hash_remove_x, scm_hashx_ref),
12118 (scm_hashx_set_x, scm_hashx_get_handle),
12119 (scm_hashx_create_handle_x), regex-posix.c (scm_make_regexp),
12120 (scm_regexp_exec, scm_regexp_p), numbers.c (scm_logtest),
12121 vectors.c (scm_vector_fill_x), strings.c
12122 (scm_make_shared_substring), symbols.c (scm_string_to_symbol),
12123 objprop.c (scm_set_object_properties_x):
12124 (scm_set_object_property_x), throw.c (scm_catch, scm_lazy_catch),
12125 strports.c (scm_call_with_input_string), ports.c
12126 (scm_truncate_file), ioext.c (scm_ftell), ports.c (scm_seek),
12127 list.c (scm_append_x), dynwind.c (scm_dynamic_wind), error.c
12128 (scm_error_scm), vports.c (scm_make_soft_port), weaks.c
12129 (scm_make_weak_vector,scm_weak_vector_p),
12130 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table),
12131 (scm_make_doubly_weak_hash_table, scm_weak_key_hash_table_p),
12132 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
12133 macros.c (scm_macro_type), dynl.c (scm_dynamic_link),
12134 (scm_dynamic_unlink, scm_dynamic_call, scm_dynamic_args_call):
12135 Made parameter names match documentation by renaming parameters
12136 and/or fixing docstrings.
12137
12138 * numbers.c (scm_ash): Corrected Texinfo markup.
12139
12140 * strop.c (scm_string_index, scm_string_rindex),
12141 (scm_substring_fill_x, scm_string_null_p): Removed `qdocs'.
12142
12143 * vports.c (scm_make_soft_port), unif.c
12144 (scm_uniform_vector_length, scm_array_p, scm_array_rank),
12145 (scm_dimensions_to_uniform_array, scm_transpose_array),
12146 (scm_array_in_bounds_p, scm_uniform_vector_ref),
12147 (scm_bit_count, scm_bit_position, scm_bit_count_star),
12148 (scm_array_to_list, scm_list_to_uniform_array),
12149 (scm_array_prototype, symbols.c (scm_string_to_symbol), strports.c
12150 (scm_open_input_string, scm_open_output_string),
12151 (scm_get_output_string), strop.c (scm_string_copy),
12152 (scm_string_fill_x), strings.c (scm_string_p, scm_string), stime.c
12153 (scm_get_internal_real_time, scm_times),
12154 (scm_get_internal_run_time, scm_current_time, scm_gettimeofday),
12155 (scm_localtime, scm_gmtime), socket.c (scm_htons, scm_ntohs),
12156 (scm_htonl, scm_ntohl, scm_socket, scm_socketpair),
12157 (scm_getsockopt, scm_getsockname, scm_getpeername, scm_recvfrom),
12158 simpos.c (scm_system), random.c (scm_random_uniform),
12159 (scm_random_normal, scm_random_exp), ramap.c
12160 (scm_array_equal_p), posix.c (scm_pipe, scm_getgroups),
12161 (scm_status_exit_val, scm_status_term_sig, scm_status_stop_sig),
12162 (scm_getppid, scm_getuid, scm_getgid, scm_geteuid, scm_getegid),
12163 (scm_getpgrp, scm_ttyname, scm_ctermid, scm_tcgetpgrp, scm_uname),
12164 (scm_environ, scm_tmpnam, scm_mkstemp, scm_access, scm_getpid),
12165 (scm_setlocale), ports.c (scm_char_ready_p, scm_drain_input),
12166 (scm_pt_size, scm_pt_member, scm_port_revealed, scm_port_mode),
12167 (scm_close_port, scm_input_port_p, scm_output_port_p, scm_port_p),
12168 (scm_port_closed_p, scm_eof_object_p, scm_read_char),
12169 (scm_peek_char), pairs.c (scm_pair_p, scm_cons), numbers.c
12170 (scm_logand, scm_logior, scm_logxor, scm_lognot),
12171 (scm_integer_expt, scm_bit_extract, scm_logcount),
12172 (scm_integer_length, scm_string_to_number, scm_inexact_to_exact),
12173 net_db.c (scm_inet_netof, scm_lnaof), modules.c
12174 (scm_interaction_environment), macros.c (scm_makacro),
12175 (scm_makmacro, scm_makmmacro), keywords.c (scm_keyword_p), ioext.c
12176 (scm_ftell, scm_dup_to_fdes, scm_fileno, scm_isatty_p),
12177 (scm_fdopen, scm_fdes_to_ports), gc.c (scm_gc_stats), fluids.c
12178 (scm_fluid_ref), filesys.c (scm_open_fdes),
12179 (scm_stat, scm_directory_stream_p, scm_getcwd, scm_readlink):
12180 Docstring correction: `Returns' -> `Return'
12181
12182 * gc.c (scm_set_debug_cell_accesses_x):
12183 (s_scm_gc_set_debug_check_freelist_x):
12184 * fluids.c (scm_fluid_p): Added texinfo markup.
12185
12186 * error.c (scm_strerror): Made docstring more precise.
12187
12188 * vectors.c (scm_vector_p, scm_vector, scm_make_vector),
12189 (scm_vector_to_list, _scm_vector_fill_x), symbols.c
12190 (scm_symbol_p, scm_symbol_to_string), strorder.c
12191 (scm_string_equal_p, scm_string_ci_equal_p, scm_string_less_p),
12192 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p),
12193 (scm_string_ci_less_p, scm_string_ci_leq_p, scm_string_ci_gr_p):
12194 (scm_string_ci_geq_p), strop.c (scm_string_copy),
12195 (scm_string_fill_x): Removed `(r5rs)' from docstrings.
12196
12197 2001-04-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
12198
12199 * gc.c (MARK): Re-introduce a cheap sanity test for non debug
12200 mode, as suggested by Michael Livshin.
12201
12202 2001-03-31 Michael Livshin <mlivshin@bigfoot.com>
12203
12204 * backtrace.c (display_backtrace_body): since the `print_state'
12205 variable is not used (instead its data field is used directly as
12206 `pstate'), protect it from the hungry compiler optimizations.
12207 thanks to Bill Schottstaedt for the report.
12208
12209 2001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
12210
12211 * gc.[ch] (scm_tc16_allocated): New type tag for allocated cells.
12212 It is only defined and used if guile is compiled with
12213 SCM_DEBUG_CELL_ACCESSES set to true. It's purpose is, to never
12214 let cells with a free_cell type tag be visible outside of the
12215 garbage collector when in debug mode.
12216
12217 * gc.c (scm_debug_cell_accesses_p): Set to true as default.
12218
12219 (scm_assert_cell_valid): Use a local static variable to avoid
12220 recursion.
12221
12222 (MARK): Only check for rogue cell pointers in debug mode. Use
12223 scm_cellp for this purpose and place all checks for rogue pointers
12224 into that function. Further, since due to conservative scanning
12225 we may encounter free cells during marking, don't use the standard
12226 cell type accessor macro to determine the cell type.
12227
12228 (scm_cellp): Check if the cell pointer actually points into a
12229 card header.
12230
12231 (scm_init_gc): Initalize scm_tc16_allocated.
12232
12233 * gc.h (GCH): Renamed to SCM_GC_H.
12234
12235 (SCM_VALIDATE_CELL): Enclose the expression in brackets. This
12236 might be unnecessary, but I feel better this way :-)
12237
12238 (SCM_GC_CELL_TYPE): New macro.
12239
12240 (SCM_SETAND_CDR, SCM_SETOR_CDR): Deprecated. These are not used
12241 in guile, and it is unlikely that they will be applied to real
12242 pairs anyway.
12243
12244 (SCM_SET_FREE_CELL_TYPE): Removed. It was not used.
12245
12246 (SCM_GC_SET_ALLOCATED): New macro. Only non-empty if guile is
12247 compiled with SCM_DEBUG_CELL_ACCESSES set to true.
12248
12249 (SCM_NEWCELL, SCM_NEWCELL2): Use of SCM_GC_SET_ALLOCATED will
12250 make sure that in debug mode no free cell will ever be visible
12251 outside of the garbage collector.
12252
12253 2001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
12254
12255 * async.c (scm_asyncs_pending): Don't use != to compare SCM
12256 values.
12257
12258 * async.c (scm_system_async), variable.c (scm_make_variable,
12259 scm_make_undefined_variable): Use scm_cons to create a pair.
12260
12261 * debug.c (scm_reverse_lookup): Perform proper type checking.
12262 Remove suspicious use of SCM_SLOPPY_CONSP.
12263
12264 * eq.c (scm_equal_p), tags.h (SCM_ECONSP): Use SCM_CONSP instead
12265 of SCM_SLOPPY_CONSP. A sane compiler should be able to perform
12266 the corresponding optimization.
12267
12268 * eval.c (iqq): Use proper type check.
12269
12270 (scm_m_expand_body): Remove redundant type checks.
12271
12272 (promise_print): Don't access promise cells as pairs.
12273
12274 * eval.c (EVALCAR, iqq, scm_m_expand_body, scm_eval_args,
12275 scm_deval_args SCM_CEVAL), guardians.c (scm_guard), hashtab.c
12276 (scm_internal_hash_fold), print.c (scm_iprlist): Use !SCM_CELLP
12277 for SCM_NCELLP, !SCM_CONSP for SCM_NCONSP, !SCM_IMP for SCM_NIMP,
12278 !SCM_FALSEP for SCM_NFALSEP, !SCM_NULLP for SCM_NNULLP
12279
12280 * eval.c (scm_m_define, scm_macroexp, SCM_CEVAL), print.c
12281 (scm_iprin1): Use new macro predicate and accessors.
12282
12283 * eval.h (scm_tc16_macro): Removed declaration. It is declared
12284 in macros.h.
12285
12286 * eval.h (EVALH), macros.h (MACROSH), ports.h (PORTSH), procs.h
12287 (PROCSH), tags.h (TAGSH), variable.h (VARIABLEH): Renamed to
12288 SCM_EVAL_H, SCM_MACROS_H, SCM_PORTS_H, SCM_PROCS_H, SCM_TAGS_H and
12289 SCM_VARIABLE_H. Even the macros that are used to inhibit
12290 including a header file twice should be in the SCM_ namespace.
12291
12292 * fluids.c (scm_swap_fluids, scm_swap_fluids_reverse),
12293 properties.c (scm_primitive_property_ref,
12294 scm_primitive_property_del_x): Prefer stronger predicates like
12295 SCM_NULLP or SCM_FALSEP over SCM_IMP.
12296
12297 * gc.c (MARK): Use proper macros to access procedure-with-setter
12298 cell elements and closure cell elements.
12299
12300 (gc_sweep_freelist_finish, scm_gc_sweep, init_heap_seg): Don't
12301 access free cells as pairs.
12302
12303 (scm_unprotect_object): scm_hashq_get_handle returns #f if
12304 no hashtab entry is found.
12305
12306 * gc.c (scm_gc_sweep), ports.c (scm_close_port): Use new macro
12307 SCM_CLR_PORT_OPEN_FLAG.
12308
12309 * guardians.c (TCONC_IN), print.c (scm_free_print_state): Don't
12310 use SCM_SET_C[AD]R for uninitialized cells.
12311
12312 * hashtab.c (scm_hash_fn_get_handle): Use SCM_VALIDATE_VECTOR.
12313 If the hashtable has no slots, return #f instead of '(). This
12314 unifies the return value with most assoc-functions.
12315
12316 (scm_hash_fn_ref): Use proper type check.
12317
12318 (scm_hashq_get_handle, scm_hashv_get_handle, scm_hash_get_handle):
12319 Removed references to non-existing functions from documentation.
12320
12321 * keywords.c (scm_keyword_dash_symbol): Use proper macros to
12322 access keyword cell elements.
12323
12324 * macros.h (SCM_MACROP, SCM_MACRO_TYPE, SCM_MACRO_CODE): New
12325 macros.
12326
12327 * ports.h (SCM_CLR_PORT_OPEN_FLAG): New macro.
12328
12329 * print.c (scm_iprlist): Added comment. Improved loop
12330 conditions.
12331
12332 * procs.h (SCM_ENV, SCM_SETENV): Don't access closure cells as
12333 pairs.
12334
12335 * smob.c (scm_markcdr): Don't access smob cells as pairs.
12336
12337 * tags.h (SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP): Deprecated.
12338
12339 * throw.c (ACTIVATEJB, DEACTIVATEJB): Don't access jump buffer
12340 cells as pairs.
12341
12342 * variable.c (variable_print, variable_equalp, scm_variable_ref,
12343 scm_variable_set_x): Use proper macros to access variable cell
12344 elements.
12345
12346 (scm_variable_bound_p): Don't use SCM_NEGATE_BOOL.
12347
12348 * variable.h (SCM_VARVCELL): Don't access variable cells as
12349 pairs.
12350
12351 * vectors.c (scm_vector), weaks.c (scm_weak_vector): Simplified,
12352 added FIXME comment, removed register specifier.
12353
12354 2001-03-29 Keisuke Nishida <kxn30@po.cwru.edu>
12355
12356 * goops.c, goops.h (scm_init_oop_goops_goopscore_module): Deprecated.
12357 * init.c (scm_init_guile_1): Don't init goopscore module.
12358
12359 2001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
12360
12361 * eval.c (SCM_APPLY): Check that arg1 is bound for scm_tc7_cxr.
12362
12363 2001-03-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12364
12365 * strop.c (scm_string_to_list): Fixed docstring markup.
12366 (scm_string_upcase_x, scm_string_upcase, scm_string_downcase_x),
12367 (scm_string_downcase, scm_string_capitalize_x),
12368 (scm_string_capitalize): Rewrote and corrected docstrings.
12369 (scm_string_ci_to_symbol): Made docstring more explicit.
12370
12371 2001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
12372
12373 * values.h (scm_values_vtable, SCM_VALUESP): Moved here so that
12374 eval.c can use it.
12375 (scm_call_with_values): Removed.
12376 * values.c (values_vtable, scm_values_vtable): Added "scm_" prefix
12377 so that it can be exported.
12378 (scm_call_with_values): Removed.
12379
12380 * tags.h (SCM_IM_CALL_WITH_VALUES): New isym.
12381 * eval.c: Include "libguile/values.h"
12382 (scm_m_at_call_with_values, scm_sym_at_call_with_values):
12383 New.
12384 (unmemocopy, scm_ceval, scm_deval): Handle new isym.
12385 * eval.h (scm_sym_at_call_with_values, scm_m_at_call_with_values):
12386 New delcarations to support above change.
12387
12388 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Fix syntax
12389 errors with last change.
12390
12391 2001-03-25 Marius Vollmer <mvo@zagadka.ping.de>
12392
12393 * eval.c (scm_primitive_eval_x, scm_primitive_eval, scm_i_eval_x,
12394 scm_i_eval): Moved the application of the system transformer from
12395 scm_i_eval to scm_primitive_eval.
12396
12397 2001-03-23 Neil Jerram <neil@ossau.uklinux.net>
12398
12399 * guile-snarf.awk.in: Substitute "\\" with "\" in .doc output.
12400
12401 * strop.c (scm_string_index): Fix docstring line break
12402 regression.
12403
12404 * list.c (scm_cons_star): Fix docstring typo.
12405
12406 2001-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
12407
12408 * gc.c (scm_init_storage), gdbint.c (scm_init_gdbint), numbers.c
12409 (big2str), ports.c (scm_drain_input), read.c (scm_read,
12410 scm_grow_tok_buf), strings.c (scm_string, scm_makfromstr,
12411 scm_make_string, scm_string_append), strports.c (st_resize_port,
12412 scm_object_to_string), unif.c (scm_make_uve): Replace calls to
12413 scm_makstr with calls to scm_allocate_string.
12414
12415 * strings.[ch] (scm_allocate_string): New function.
12416
12417 * strings.[ch] (scm_makstr): Deprecated.
12418
12419 2001-03-18 Gary Houston <ghouston@arglist.com>
12420
12421 * posix.c (scm_tmpnam): check that return value from tmpnam is not
12422 NULL. rewrote the docstring.
12423 (scm_mkstemp): new procedure implementing "mkstemp!".
12424 * posix.h: declare scm_mkstemp.
12425
12426 * net_db.c: declare h_errno if configure didn't define HAVE_H_ERRNO.
12427 normally it would be found in netdb.h.
12428
12429 2001-03-17 Gary Houston <ghouston@arglist.com>
12430
12431 * sort.c (scm_sort): move sortvec variable to avoid a compiler
12432 warning when HAVE_ARRAYS is not defined. move len too.
12433
12434 * Makefile.am (DOT_X_FILES): remove net_db.x, posix.x, socket.x.
12435 (EXTRA_DOT_X_FILES): let configure set the value.
12436 (DOT_DOC_FILES): remove net_db.doc, posix.doc, socket.doc.
12437
12438 * gc.c (scm_must_malloc): changed the comment explaining when
12439 scm_must variants of malloc/free etc., should be used, based on
12440 explanation from Dirk Herrmann.
12441 * fports.c (scm_fport_buffer_add): use FUNC_NAME instead of a local
12442 string with procedure name. use scm_must_malloc instead of malloc.
12443 (scm_setvbuf, scm_fdes_to_port, fport_close): use scm_must variants
12444 of malloc/free.
12445 * ports.c (scm_add_to_port_table, scm_remove_from_port_table,
12446 scm_ungetc): use scm_must variants of malloc/realloc/free.
12447 (scm_add_to_port_table, scm_ungetc): define FUNC_NAME.
12448
12449 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12450
12451 * __scm.h (SCM_ASSERT, SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
12452 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Don't call scm_wta, call
12453 scm_wrong_type_arg instead.
12454
12455 (SCM_WNA): Deprecated.
12456
12457 * error.[ch] (scm_wta): Deprecated.
12458
12459 * numbers.c (s_i_log): Minor comment fix.
12460
12461 * read.c (scm_lreadr), unif.c (scm_aind, scm_shap2ra,
12462 scm_make_shared_array, scm_transpose_array, scm_enclose_array,
12463 scm_array_in_bounds_p): Don't use SCM_ASSERT to check for
12464 wrong-num-args or misc errors.
12465
12466 * unif.c (scm_make_shared_array, scm_transpose_array,
12467 scm_enclose_array, scm_array_in_bounds_p, scm_array_set_x):
12468 Validate the rest argument (note: this is only done when guile is
12469 built with SCM_DEBUG_REST_ARGUMENT=1)
12470
12471 (scm_array_in_bounds_p, scm_uniform_vector_ref, scm_array_set_x):
12472 Replace calls to scm_wrong_num_args by SCM_WRONG_NUM_ARGS.
12473
12474 * validate.h (SCM_FUNC_NAME, SCM_VALIDATE_NUMBER_COPY,
12475 SCM_VALIDATE_NUMBER_DEF_COPY): Deprecated.
12476
12477 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12478
12479 * validate.h (SCM_WRONG_NUM_ARGS): Call scm_error_num_args_subr
12480 instead of scm_wrong_num_args.
12481
12482 * coop-threads.c: Don't include libguile/strings.h. (Was only
12483 needed for former implementation of SCM_WRONG_NUM_ARGS.)
12484
12485 * debug.c (scm_m_start_stack): Don't use SCM_ASSERT to check for
12486 wrong-num-args errors.
12487
12488 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12489
12490 * error.[ch] (scm_error_num_args_subr): New function.
12491
12492 2001-03-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12493
12494 * list.c (scm_list, scm_cons_star, scm_null_p, scm_list_p),
12495 (scm_length, scm_append, scm_reverse, scm_list_ref),
12496 (scm_memq, scm_memv, scm_member, scm_delv_x, scm_delete_x),
12497 (scm_delq, scm_delv, scm_delete, scm_delq1_x, scm_delv1_x),
12498 (scm_delete1_x), gc.c (scm_map_free_list),
12499 (scm_free_list_length), hash.c (scm_hashq, scm_hashv),
12500 (scm_hash), hashtab.c (scm_hashq_ref, scm_hashq_set_x),
12501 (scm_hashq_remove_x, scm_hashv_ref, scm_hashv_set_x),
12502 (scm_hashv_remove_x, scm_hash_ref, scm_hash_set_x),
12503 (scm_hash_remove_x), ports.c (scm_pt_size, scm_pt_member), print.c
12504 (scm_current_pstate), scmsigs.c (scm_usleep), goops.c
12505 (scm_get_keyword, scm_sys_compute_slots): Added texinfo markup.
12506
12507 * weaks.c (scm_weak_vector_p, scm_weak_key_hash_table_p),
12508 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
12509 rdelim.c (scm_read_delimited_x), strop.c (scm_string_index),
12510 symbols.c (scm_symbol_interned_p), numbers.c
12511 (scm_string_to_number), ports.c (scm_port_p): Corrected texinfo
12512 markup.
12513
12514 2001-03-16 Keisuke Nishida <kxn30@po.cwru.edu>
12515
12516 * snarf.h (SCM_CONST_LONG): Deprecated.
12517 * tag.c (CONST_INUM): New macro. Use it to define scm_utag_*.
12518
12519 2001-03-15 Marius Vollmer <marius.vollmer@uni-dortmund.de>
12520
12521 * numbers.c (scm_num2ulong): Check that a bignum is positive
12522 before looking at the magnitude. Correctly check for overflow
12523 during conversion.
12524 (scm_num2long_long): Likewise.
12525 (scm_num2ulong_long): New.
12526 (ULONG_LONG_MAX): Define if not already defined.
12527 * numbers.h: (scm_num2ulong_long): New prototype.
12528
12529 2001-03-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12530
12531 * validate.h (SCM_VALIDATE_OPOUTSTRPORT): New macro.
12532
12533 * strports.h (SCM_STRPORTP, SCM_OPSTRPORTP, SCM_OPINSTRPORTP),
12534 (SCM_OPOUTSTRPORTP): New predicate macros.
12535 (scm_open_input_string, scm_open_output_string),
12536 (scm_get_output_string): New prototypes.
12537
12538 * strports.c (scm_open_input_string, scm_open_output_string),
12539 (scm_get_output_string): New procedures (SRFI-6 compliant).
12540 Made scm_tc16_strport non-static.
12541
12542 2001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
12543
12544 * macros.h (SCM_ASSYNT): Removed unused object argument from
12545 signature.
12546
12547 * eval.c (scm_m_body, scm_m_quote, scm_m_begin, scm_m_if,
12548 scm_m_set_x, scm_m_and, scm_m_or, scm_m_case, scm_m_cond,
12549 scm_m_letstar, scm_m_do, scm_m_quasiquote, scm_m_delay,
12550 scm_m_define, scm_m_letrec1, scm_m_letrec, scm_m_let, scm_m_apply,
12551 scm_m_cont, scm_m_nil_cond, scm_m_nil_ify, scm_m_t_ify,
12552 scm_m_0_cond, scm_m_0_ify, scm_m_1_ify, scm_m_atfop, scm_m_atbind,
12553 scm_m_expand_body), evalext.c (scm_m_generalized_set_x,
12554 scm_m_undefine), goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
12555 scm_m_atdispatch): Removed unused object argument from call to
12556 SCM_ASSYNT.
12557
12558 2001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
12559
12560 * gh.h/gh_data.c (gh_ints2scm): Changed the signature to use a
12561 const int* to reflect that the input array of integers remains
12562 unchanged. Thanks to Brett Viren for the hint.
12563
12564 2001-03-14 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12565
12566 * gh_data.c (gh_scm2chars, gh_scm2shorts, gh_scm2longs),
12567 (gh_scm2floats, gh_scm2doubles): Check for malloc() returning NULL
12568 in various places.
12569 (gh_scm2newstr, gh_symbol2newstr): Change call to
12570 scm_must_malloc() to malloc(), because user-free()able memory is
12571 allocated.
12572
12573 * gc.c: Added declaration of `scm_debug_check_freelist'.
12574
12575 2001-03-13 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12576
12577 * ports.c (scm_port_mode): Changed `mode' array size to 4.
12578
12579 2001-03-12 Keisuke Nishida <kxn30@po.cwru.edu>
12580
12581 * strports.c (scm_object_to_string): New procedure.
12582 (scm_strprint_obj): Deprecated.
12583 * strports.h: Reflect the changes.
12584
12585 2001-03-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
12586
12587 * goops.h (SCM_VALIDATE_PUREGENERIC): New macro.
12588
12589 * goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
12590 scm_m_atdispatch): Provide definitions for FUNC_NAME. Don't use
12591 SCM_ASSYNT to check for correct argument types. Either use some
12592 SCM_VALIDATE_* macro or an explicit test.
12593
12594 (scm_make_foreign_object): Don't use SCM_ASSERT to check for
12595 misc-errors.
12596
12597 * macros.h (SCM_ASSYNT): On assertion failure, issue a misc-error
12598 instead of calling scm_wta.
12599
12600 2001-03-12 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12601
12602 * load.c (scm_primitive_load, scm_primitive_load_path),
12603 (scm_sys_search_load_path): Corrected docstrings (file ->
12604 filename).
12605
12606 * eval.c (scm_force): Added texinfo markup to docstring.
12607 (scm_promise_p): Renamed parameter to `obj' to match docstring.
12608
12609 * debug-malloc.c: Reinserted #include <stdio.h>.
12610
12611 2001-03-11 Keisuke Nishida <kxn30@po.cwru.edu>
12612
12613 * list.c (s_scm_reverse_x): Use SCM_VALIDATE_LIST.
12614
12615 * environments.c, error.c, eval.c, filesys.c, hashtab.c, load.c,
12616 net_db.c, procprop.c, read.c, scmsigs.c, socket.c, struct.c:
12617 Use SCM_LISTn instead of scm_listify.
12618
12619 2001-03-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12620
12621 * _scm.h: Removed #include <errno.h>.
12622
12623 * error.c, net_db.c, putenv.c, stime.c: Removed declaration of
12624 errno variable (can be a macro on some systems, for example when
12625 using linux libc with threads).
12626
12627 * error.c, filesys.c, gc.c, ioext.c, iselect.c, net_db.c, ports.c,
12628 posix.c, print.c, putenv.c, scmsigs.c, script.c, simpos.c, smob.c,
12629 socket.c, srcprop.c, stime.c, strop.c, unif.c, vports.c: Added
12630 #include <errno.h> in these 20 out of 100 files.
12631
12632 2001-03-10 Gary Houston <ghouston@arglist.com>
12633
12634 * socket.c: add a definition of SUN_LEN (from glibc) for when it's
12635 not already defined.
12636
12637 2001-03-09 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12638
12639 * coop.c: Inserted #include <stdio.h>.
12640
12641 * iselect.c: Reinserted #include <stdio.h>.
12642
12643 2001-03-10 Marius Vollmer <mvo@zagadka.ping.de>
12644
12645 * posix.c: Replaced `#define' of __USE_XOPEN right before
12646 including unistd.h with a define of _GNU_SOURCE at the very top of
12647 the file.
12648
12649 2001-03-09 Keisuke Nishida <kxn30@po.cwru.edu>
12650
12651 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
12652 continuations.c, debug-malloc.c, debug.c, dynwind.c, eq.c, eval.c,
12653 feature.c, filesys.h, gc_os_dep.c, gh_data.c, gh_eval.c,
12654 gh_funcs.c, gh_io.c, gh_list.c, gh_predicates.c, hash.c,
12655 hashtab.c, iselect.c, keywords.c, list.c, load.c, mallocs.c,
12656 net_db.c, numbers.c, objprop.c, objprop.h, options.c, pairs.c,
12657 print.c, procprop.c, procs.c, properties.c, ramap.c,
12658 regex-posix.c, root.c, scmsigs.c, simpos.c, socket.c, srcprop.c,
12659 stackchk.c, stacks.c, strings.c, strop.c, strorder.c, struct.c,
12660 symbols.c, tag.c, threads.c, variable.c, vectors.c, weaks.c:
12661 Remove #include <stdio.h>
12662 * gc.c, gdbint.c, root.c, sort.c, unif.c: Add #include <string.h>.
12663
12664 * procs.c (scm_make_subr_opt): Init symcell to avoid warning.
12665
12666 2001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12667
12668 * posix.c (scm_gethostname): Set initial name length to 256 for
12669 Solaris.
12670
12671 2001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12672
12673 * posix.h (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
12674 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
12675 (scm_sethostname, scm_gethostname): New prototypes.
12676
12677 * posix.c: Added inclusion of <crypt.h>, <sys/resource.h> and
12678 <sys/file.h>, if present.
12679 (scm_init_posix): [PRIO_PROCESS, PRIO_PGRP, PRIO_USER, LOCK_SH,
12680 LOCK_EX, LOCK_UN, LOCK_NB]: New variables.
12681 (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
12682 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
12683 (scm_sethostname, scm_gethostname): New procedures.
12684
12685 2001-03-08 Neil Jerram <neil@ossau.uklinux.net>
12686
12687 * ports.c (scm_port_column): Docstring fixes: (i) port-line arg is
12688 not optional (ii) "recommend" spelling correction.
12689
12690 2001-03-08 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12691
12692 * ramap.c (racp): Removed optimization which caused array copying
12693 to fail if the two arrays shared storage. Re-inserted the IVDEP
12694 macros removed in the change of 2000-03-09. (Don't really have a
12695 complete grasp of what they are for, but they seem to be necessary
12696 on Crays. This needs testing!) Thanks to Miroslav Silovic.
12697
12698 * hash.c (scm_string_hash): Don't downcase characters.
12699
12700 2001-03-07 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12701
12702 * symbols.c (scm_symbols_prehistory): Changed symbol hash table
12703 size from 277 --> 1009.
12704
12705 * symbols.c, symbols.h (scm_sys_symbols): New function GUILE_DEBUG
12706 function.
12707
12708 * coop-threads.c: Fixed change of 2001-03-06.
12709
12710 * validate.h: Code formatting.
12711
12712 2001-03-07 Keisuke Nishida <kxn30@po.cwru.edu>
12713
12714 * Makefile.am (*.x): Add dependency on snarf.h and guile-doc-snarf.in.
12715 (*.doc): Add dependency on guile-snarf.awk.in.
12716
12717 * guile-snarf.awk.in: Neglect spaces at the end of
12718 SCM_SNARF_DOCSTRING_END. Skip lines "# NN ..." in the
12719 middle of docstrings. (To avoid the problem with gcc-2.96.)
12720
12721 2001-03-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
12722
12723 * coop-threads.c (scm_call_with_new_thread), load.c
12724 (scm_primitive_load, scm_sys_search_load_path), random.c
12725 (scm_c_default_rstate), struct.c (scm_make_struct_layout,
12726 scm_struct_ref, scm_struct_set_x): Don't use SCM_ASSERT to
12727 (potentially) issue a scm-misc-error or wrong-num-args error
12728 message.
12729
12730 * load.c (scm_search_path): Use SCM_ASSERT_TYPE to give details
12731 about the expected type with the wrong-type-arg error message.
12732
12733 * smob.c (scm_make_smob): Abort on misuse of smob - it indicates
12734 a C level bug that can't be fixed from scheme anyway.
12735
12736 2001-03-05 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12737
12738 * eval.c (scm_m_letstar): Removed check for duplicate bindings.
12739 Duplicate bindings are OK in a let* since a let* is semantically
12740 equivalent to a nested set of let:s.
12741
12742 2001-03-05 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12743
12744 * print.c (scm_print_options): Fixed texinfo in docstring.
12745
12746 * net_db.c (scm_getserv, scm_getproto, scm_getnet): Return #f if
12747 the underlying functions getservent, getprotoent or getnetent
12748 return NULL instead of signalling an error.
12749
12750 2001-03-04 Gary Houston <ghouston@arglist.com>
12751
12752 * socket.c (scm_fill_sockaddr): don't allow buffer overflows when
12753 taking an unexpectedly large filename for an AF_UNIX socket from
12754 bind/connect/sendto (thanks to Martin Grabmueller).
12755
12756 * socket.c (scm_sock_fd_to_port, SCM_SOCK_FD_TO_PORT): removed the
12757 former and adjusted the latter.
12758 (scm_socket, scm_socketpair): cosmetic changes.
12759 (scm_getsockopt, scm_setsockopt): declare optlen as int, not
12760 size_t as socklen_t substitute. don't restrict args/return values
12761 to INUM: allow full range of int or size_t.
12762 (scm_fill_sockaddr): check arguments before allocating memory, to
12763 avoid leakage. use malloc, not scm_must_malloc.
12764 (scm_connect, scm_bind, scm_sendto): use int, not size_t as socklen_t
12765 substitute. free the sockaddr structure before throwing an error.
12766 (scm_init_add_buffer): procedure removed, together with its static
12767 buffer scm_addr_buffer, which wouldn't be thread safe. instead,
12768 define a macro MAX_ADDR_SIZE and declare the buffer where needed.
12769 (scm_accept, scm_getpeername, scm_getsockname, scm_recvfrom,
12770 scm_sendto): use a local buffer instead of scm_addr_buffer.
12771 adjust for new SCM_SOCK_FD_TO_PORT. use int for address size,
12772 not size_t.
12773 (scm_recvfrom): set addr->sa_family to AF_UNSPEC before the recvfrom
12774 call to detect whether recvfrom could be bothered to set the address.
12775 (scm_init_socket): don't call scm_init_addr_buffer.
12776
12777 2001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
12778
12779 * debug.c (scm_procedure_source, scm_procedure_environment),
12780 print.c (scm_get_print_state), ramap.c (scm_array_fill_int,
12781 scm_array_index_map_x), sort.c (scm_sort_x, scm_sort,
12782 scm_stable_sort_x, scm_stable_sort), stacks.c (scm_make_stack,
12783 scm_last_stack_frame), symbols.c (scm_sym2vcell, scm_sym2ovcell),
12784 unif.c (scm_list_to_uniform_array, scm_uniform_vector_length,
12785 scm_transpose_array, scm_enclose_array, scm_array_in_bounds_p,
12786 scm_uniform_vector_ref, scm_array_set_x, scm_uniform_array_read_x,
12787 scm_uniform_array_write, scm_bit_set_star_x, scm_bit_count_star,
12788 scm_array_to_list, scm_array_prototype), validate.h
12789 (SCM_VALIDATE_NUMBER_COPY): Don't call function scm_wta, call
12790 scm_misc_error or scm_wrong_type_arg instead.
12791
12792 * validate.h (SCM_WTA, RETURN_SCM_WTA): Deprecated.
12793
12794 2001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12795
12796 * goops.c, goops.h (scm_sys_pre_expand_closure_x): Removed.
12797 (scm_sys_tag_body): Added.
12798
12799 2001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
12800
12801 * continuations.c (continuation_apply), eval.c (scm_m_lambda,
12802 scm_m_letstar, scm_m_letrec1, scm_m_let, SCM_APPLY), eval.h
12803 (SCM_EVALIM2), evalext.c (scm_m_generalized_set_x), gc.c
12804 (get_bvec, MARK), goops.c (scm_primitive_generic_generic),
12805 options.c (scm_options), ports.c (scm_remove_from_port_table),
12806 ramap.c (scm_ramapc), read.c (skip_scsh_block_comment, scm_lreadr,
12807 scm_lreadparen, scm_lreadrecparen), script.c (script_get_octal,
12808 script_get_backslash, script_read_arg), unif.c (scm_cvref): Don't
12809 call function scm_wta, call scm_misc_error or scm_wrong_type_arg
12810 instead.
12811
12812 2001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12813
12814 * goops.c (scm_sys_pre_expand_closure_x): New procedure.
12815
12816 2001-03-04 Marius Vollmer <mvo@zagadka.ping.de>
12817
12818 * eval.c (scm_s_duplicate_bindings): New error message.
12819 (scm_m_letrec1, scm_m_letstar): Check for duplicate bindings.
12820
12821 2001-03-03 Marius Vollmer <mvo@zagadka.ping.de>
12822
12823 * eval.h (SCM_EVALIM2): New macro. Use it when a
12824 immediate, literal constant should be evaluated.
12825 * eval.c (scm_s_duplicate_formals): New error message string.
12826 (scm_c_improper_memq): New function.
12827 (scm_m_lambda): Check for duplicate arguments.
12828 (scm_ceval, scm_deval): When executing a body: only cons a new
12829 toplevel environment frame when it is different from the
12830 existing one; use EVALCAR instead of SIDEVAL so that we can properly
12831 check for empty combinations; use SCM_EVALIM2 for the same reason
12832 in the non-toplevel loop.
12833 (nontoplevel_cdrxnoap, nontoplevel_cdrxbegin, nontoplevel_begin):
12834 New labels with the meaning of their non-"nontoplevel" partners,
12835 but they are used when it is known that the body is not evaluated at
12836 top-level.
12837 (scm_apply, scm_dapply): use SCM_EVALIM2 to get proper error
12838 reporting for empty combinations.
12839
12840 2001-03-02 Keisuke Nishida <kxn30@po.cwru.edu>
12841
12842 * Remove dump facilities.
12843 * dump.c, dump.h: Removed.
12844 * Makefile.am: Remove dump.c, dump.h, dump.x, dump.doc.
12845 * init.c: Remove #include "libguile/dump.h".
12846 (scm_init_guile_1): Remove scm_init_dump.
12847 * smob.h (scm_smob_descriptor): Remove slots: dump, undump.
12848 (scm_set_smob_dump, scm_set_smob_undump): Remove declaration.
12849 * smob.c (scm_make_smob_type): Remove initialization: dump, undump.
12850 (scm_set_smob_dump, scm_set_smob_undump): Removed.
12851
12852 * keywords.c: Remove #include "libguile/dump.h".
12853 (keyword_dump, keyword_undump): Removed.
12854 (scm_init_keywords): Remove scm_set_smob_dump and scm_set_smob_undump.
12855
12856 2001-03-02 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12857
12858 * vectors.c (s_scm_vector_p, list->vector, scm_vector)
12859 (scm_vector_ref, scm_vector_set_x, scm_vector_to_list)
12860 (scm_vector_fill_x), strorder.c (scm_string_equal_p)
12861 (scm_string_ci_equal_p, scm_string_less_p, scm_string_leq_p)
12862 (scm_string_gr_p, scm_string_geq_p, scm_string_ci_less_p)
12863 (scm_string_ci_geq_p), symbols.c (scm_symbol_p)
12864 (scm_symbol_to_string, scm_string_to_symbol): Changed use of @t{}
12865 to @code{} as the texinfo manual recommends, converted the
12866 examples to use a @lisp{}-environment.
12867
12868 * strports.c (scm_eval_string): Cleaned up the docstring.
12869
12870 * struct.c (scm_struct_p, scm_struct_vtable_p): Added texinfo
12871 markup.
12872
12873 * numbers.c (scm_exact_p, scm_odd_p, scm_even_p)
12874 (scm_number_to_string, scm_string_to_number, scm_number_p)
12875 (scm_real_p, scm_integer_p, scm_inexact_p, scm_make_rectangular)
12876 (scm_make_polar, scm_inexact_to_exact): Added texinfo markup.
12877 (scm_ash): Added texinfo markup and removed obsolete @refill.
12878 (scm_gr_p): Corrected comment.
12879 (scm_gr_p, scm_leq_p, scm_geq_p): Added texinfo markup to (future
12880 docstring) comments.
12881 (scm_positive_p, scm_less_p, scm_num_eq_p, scm_real_p)
12882 (scm_number_p, scm_negative_p, scm_max, scm_min, scm_sum)
12883 (scm_difference, scm_product, scm_divide, scm_asinh, scm_acosh)
12884 (scm_atanh, scm_truncate, scm_round, scm_exact_to_inexact)
12885 (floor, ceiling, $sqrt, $abs, $exp, $log, $sin, $cos, $tan, $asin)
12886 ($acos, $atan, $sinh, $cosh, $tanh, scm_real_part, scm_imag_part)
12887 (scm_magnitude, scm_angle, scm_abs, scm_quotient, scm_remainder)
12888 (scm_modulo, scm_gcd, scm_lcm): Added (future docstring) comments.
12889
12890 2001-02-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
12891
12892 * __scm.h (SCM_ASSERT_TYPE): Add missing macro parameter.
12893 (Obviously nobody compiles with SCM_RECKLESS defined...)
12894
12895 * validate.h (SCM_ASSERT_RANGE): Use the argument number.
12896
12897 2001-02-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12898
12899 * ports.c, ports.h (scm_c_read, scm_c_write): New functions.
12900
12901 * ports.h (SCM_READ_BUFFER_EMPTY_P): New macro.
12902
12903 2001-02-24 Neil Jerram <neil@ossau.uklinux.net>
12904
12905 * numbers.c (scm_two_doubles, scm_sys_expt, scm_sys_atan2,
12906 scm_make_polar): Rename arguments `z1' and `z2' to `x' and `y',
12907 since use of `z' suggests that the arguments may be complex.
12908
12909 * goops.c (scm_make), numbers.c (scm_sys_expt): Fix docstring
12910 typos.
12911
12912 2001-02-23 Neil Jerram <neil@ossau.uklinux.net>
12913
12914 * dump.c (scm_binary_write, scm_binary_read), eval.c
12915 (scm_primitive_eval), guardians.c (scm_guardian_destroyed_p,
12916 scm_guardian_greedy_p, scm_make_guardian), fports.c
12917 (scm_file_port_p): Minor docstring fixes.
12918
12919 2001-02-22 Marius Vollmer <mvo@zagadka.ping.de>
12920
12921 * load.c (load): Use scm_primitive_eval_x instead of scm_i_eval_x.
12922
12923 * goops.c (scm_add_method, DEFVAR): Use scm_eval instead of
12924 scm_i_eval.
12925 (make_class_from_template): Do not bother to set the current
12926 module around the call to DEFVAR, scm_eval takes care of that.
12927 (scm_init_goops): Make scm_module_goops and
12928 scm_goops_lookup_closure permanent objects.
12929
12930 * eval.c (scm_ceval, scm_deval): When evaluating expressions on
12931 top level, create a fresh top-level environment for each
12932 expression instead of mutating the exisint frame. This is
12933 important when that frame is closed over.
12934
12935 * numbers.c (s_scm_logior) [SCM_DIGSTOOBIG]: Also use
12936 SCM_DIGSPERLONG instead of DIGSPERLONG.
12937
12938 2001-02-21 Marius Vollmer <mvo@zagadka.ping.de>
12939
12940 * eval.c (scm_ceval, scm_deval): Check for wrong number of args
12941 before applying arrow procedure in `cond' and before applying
12942 receiver procedure in call-with-current-continuation.
12943 (scm_i_eval): Do not invoke scm_copy_tree in argument in SCM_XEVAL
12944 macro. The argument is expanded more than one time.
12945
12946 * numbers.c (scm_logior) [SCM_DIGSTOOBIG]: Correctly use
12947 SCM_BIGDIG instead of BIGDIG. Thanks to Steven G. Johnson!
12948
12949 2001-02-20 Marius Vollmer <mvo@zagadka.ping.de>
12950
12951 * guile-doc-snarf.in, guile-func-name-check.in: Added copyright
12952 notice and license.
12953
12954 2001-02-17 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12955
12956 * variable.c (scm_make_variable, scm_make_undefined_variable)
12957 (scm_variable_ref, scm_variable_set_x, scm_builtin_variable)
12958 (scm_variable_bound_p), values.c (scm_values)
12959 (scm_call_with_values), unif.c (scm_bit_count)
12960 (scm_bit_set_star_x), symbols.c (scm_gentemp)
12961 (scm_gensym), strings.c (scm_string_p, scm_make_string)
12962 (scm_read_only_string_p, scm_string_length, scm_string_ref)
12963 (scm_string_set_x, scm_substring, scm_string_append), stime.c
12964 (scm_strptime, scm_mktime), random.c (scm_seed_to_random_state)
12965 (scm_copy_random_state, scm_random), print.c (scm_newline)
12966 (scm_write_char, scm_simple_format), debug-malloc.c
12967 (scm_malloc_stats), environments.c (scm_environment_p)
12968 (scm_environment_bound_p, scm_environment_ref)
12969 (scm_environment_fold, scm_environment_define)
12970 (scm_environment_undefine, scm_environment_set_x)
12971 (scm_environment_cell, scm_environment_observe)
12972 (scm_environment_observe_weak, scm_environment_unobserve)
12973 (scm_make_eval_environment, scm_eval_environment_p)
12974 (scm_eval_environment_set_local_x, scm_eval_environment_local)
12975 (scm_eval_environment_imported)
12976 (scm_eval_environment_set_imported_x, scm_make_import_environment)
12977 (scm_import_environment_p, scm_import_environment_imports)
12978 (scm_import_environment_set_imports_x, scm_make_export_environment)
12979 (scm_export_environment_p, scm_export_environment_private)
12980 (scm_export_environment_set_private_x)
12981 (scm_export_environment_signature)
12982 (scm_export_environment_set_signature_x, scm_leaf_environment_p):
12983 Added texinfo markup.
12984
12985 * ports.c (scm_drain_input): Lowercased argument to @var.
12986 (scm_current_input_port, scm_current_output_port): Filled in
12987 missing explanation.
12988 (scm_current_load_port, scm_set_current_output_port)
12989 (scm_set_current_error_port, scm_port_line, scm_set_port_line_x):
12990 Added texinfo markup.
12991
12992 * arbiters.c (scm_make_arbiter, scm_try_arbiter)
12993 (scm_release_arbiter): Added texinfo markup to docstrings.
12994 Changed `Returns' to `Return'.
12995 (arbiter_print): Changed SCM_CDR to SCM_SMOB_DATA.
12996
12997 2001-02-16 Neil Jerram <neil@ossau.uklinux.net>
12998
12999 * guile-snarf.awk.in: Quote any `@'s that occur in Scheme names,
13000 by doubling them to `@@'.
13001
13002 2001-02-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13003
13004 * numbers.c (scm_lognot), random.c (scm_random,
13005 scm_random_normal, scm_random_solid_sphere_x,
13006 scm_random_hollow_sphere_x, scm_random_normal_vector_x,
13007 scm_random_exp), dynwind.c
13008 (scm_dynamic_wind): Removed unnecessary "" from docstrings.
13009
13010 * goops.c (scm_sys_initialize_object, scm_instance_p,
13011 scm_class_name, scm_class_precedence_list, scm_class_slots,
13012 scm_class_environment, scm_generic_function_name,
13013 scm_generic_function_methods, scm_method_generic_function,
13014 scm_method_specializers, scm_method_procedure, scm_make_unbound,
13015 scm_unbound_p, scm_assert_bound, scm_at_assert_bound_ref,
13016 scm_sys_fast_slot_ref, scm_sys_fast_slot_set_x, scm_slot_ref,
13017 scm_slot_set_x, _scm_slot_bound_p, scm_slots_exists_p,
13018 scm_sys_allocate_instance, scm_make, scm_pure_generic_p,
13019 scm_class_direct_supers, scm_class_direct_slots,
13020 scm_class_direct_subclasses, scm_class_direct_methods,
13021 scm_accessor_method_slot_definition, scm_sys_goops_loaded),
13022 debug.c (scm_with_traps, scm_memoized_p, scm_make_gloc,
13023 scm_gloc_p, scm_make_iloc, scm_iloc_p, scm_memcons,
13024 scm_mem_to_proc, scm_proc_to_mem, scm_unmemoize,
13025 scm_memoized_environment, scm_procedure_name,
13026 scm_procedure_source, scm_procedure_environment, scm_debug_hang),
13027 objects.c
13028 (scm_class_of, scm_entity_p, scm_operator_p,
13029 scm_set_object_procedure_x, scm_object_procedure,
13030 scm_make_class_object), hooks.c (scm_make_hook_with_name,
13031 scm_make_hook, scm_hook_p, scm_hook_empty_p, scm_add_hook_x,
13032 scm_remove_hook_x, scm_reset_hook_x, scm_run_hook,
13033 scm_hook_to_list), lang.c
13034 (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null, scm_nil_eq),
13035 numbers.c (scm_sys_expt, scm_sys_atan2), print.c
13036 (scm_print_options, scm_port_with_print_state,
13037 scm_get_print_state), procs.c (scm_make_cclo, scm_procedure_p,
13038 scm_closure_p, scm_thunk_p, scm_procedure_with_setter_p,
13039 scm_make_procedure_with_setter, scm_procedure), throw.c
13040 (scm_lazy_catch), modules.c (scm_standard_eval_closure), load.c
13041 (scm_parse_path, scm_search_path), stacks.c (scm_make_stack,
13042 scm_stack_ref, scm_stack_length, scm_frame_p,
13043 scm_last_stack_frame, scm_frame_number, scm_frame_source,
13044 scm_frame_procedure, scm_frame_arguments, scm_frame_previous,
13045 scm_frame_next, scm_frame_real_p, scm_frame_procedure_p,
13046 scm_frame_evaluating_args_p, scm_frame_overflow_p), filesys.c
13047 (scm_dirname, scm_basename), dynwind.c
13048 (scm_wind_chain), read.c (scm_read_options, scm_read,
13049 scm_read_hash_extend), gc.c
13050 (scm_unhash_name), eval.c (scm_eval_options_interface,
13051 scm_evaluator_traps, s_scm_nconc2last), backtrace.c
13052 (scm_display_error, scm_set_print_params_x,
13053 scm_display_application, scm_display_backtrace, scm_backtrace),
13054 async.c (scm_async, scm_system_async, scm_async_mark,
13055 scm_system_async_mark, scm_run_asyncs, scm_noop,
13056 scm_set_tick_rate, scm_set_switch_rate, scm_unmask_signals,
13057 scm_mask_signals): Added docstrings.
13058
13059 2001-02-15 Keisuke Nishida <kxn30@po.cwru.edu>
13060
13061 * dump.c (scm_undump): Use SCM_CARLOC/SCM_CDRLOC to obtain the
13062 address of car/cdr. (Thanks to Dirk Herrmann)
13063 Use scm_sizet to obtain the length of strings.
13064 (Thanks to Matthias Koeppe)
13065
13066 2001-02-15 Marius Vollmer <mvo@zagadka.ping.de>
13067
13068 * symbols.c (scm_mem2symbol): Put a empty statement after the
13069 next_symbol label. This is mandated by ANSI, appearantly.
13070
13071 2001-02-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13072
13073 * gc_os_dep.c: Do not include <linux/version.h>. It makes no
13074 sense to compile for a specific kernel version. Do not include
13075 <asm/signal.h> while defining __KERNEL__. This hack should no
13076 longer be needed and caused problems.
13077
13078 2001-02-13 Marius Vollmer <mvo@zagadka.ping.de>
13079
13080 * eval.c (scm_ceval, scm_deval): use `SIDEVAL' instead of
13081 SCM_CEVAL when evaluating subforms of `begin' forms. SCM_CEVAL
13082 can not deal with immediates.
13083
13084 2001-02-12 Keisuke Nishida <kxn30@po.cwru.edu>
13085
13086 * list.c (scm_list_copy): Validate the first argument.
13087
13088 2001-02-11 Marius Vollmer <mvo@zagadka.ping.de>
13089
13090 Fix evaluator so that top-level expressions are correctly
13091 evaluated with respect to the module system.
13092
13093 * modules.h. modules.c (scm_current_module_lookup_closure): New
13094 function.
13095
13096 * eval.h (scm_primitive_eval, scm_primitive_eval_x): New
13097 prototypes.
13098 (scm_i_eval, scm_i_eval_x, scm_eval, scm_eval_x): Changed argument
13099 names to better reflect their meaning.
13100
13101 * eval.c (scm_ceval, scm_deval): Recognize when `begin' is being
13102 evaluated at top-level and synronize lookup closure before
13103 executing every subform.
13104 (scm_primitve_eval_x, scm_primitive_eval): New functions.
13105 (scm_eval_x, scm_eval): Reimplement in terms of
13106 scm_primitive_eval_x and scm_primitive_eval, respectively.
13107
13108 2001-02-09 Marius Vollmer <mvo@zagadka.ping.de>
13109
13110 * macros.c (scm_macro_name, scm_macro_transformer): Use
13111 SCM_SMOB_DATA instead of SCM_CDR. Provided by Martin Grabmueller.
13112 Thanks!
13113
13114 2001-02-10 Keisuke Nishida <kxn30@po.cwru.edu>
13115
13116 * dump.c (scm_store_bytes): Store data size before data.
13117 (scm_restore_bytes): Restore data size. Takes a pointer to size.
13118 * dump.h (scm_restore_bytes): Updated.
13119
13120 2001-02-09 Keisuke Nishida <kxn30@po.cwru.edu>
13121
13122 * dump.c: Use double cells for update schedule.
13123
13124 2001-02-08 Keisuke Nishida <kxn30@po.cwru.edu>
13125
13126 * ports.c (scm_unread_char): Take an optional argument.
13127
13128 2001-02-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13129
13130 * modules.h (scm_selected_module, scm_current_module): Renamed
13131 scm_selected_module to scm_current_module to synchronize Scheme
13132 and C names.
13133 (scm_select_module, scm_set_current_module): Likewise. Changed
13134 all uses.
13135
13136 * ports.c (scm_port_for_each): Make a snapshot of the port table
13137 before iterating over it. The table might change while the user
13138 code is running. With the snapshot, the user can depend on the
13139 fact that each port that existed at the start of the iteration is
13140 encountered exactly once. (ice-9 popen) depends on this.
13141
13142 2001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
13143
13144 * strings.h (SCM_STRING_MAX_LENGTH): New macro.
13145
13146 * strings.c (scm_makstr, scm_take_str, scm_make_string): Added
13147 range checking for the size parameter. Thanks to Martin
13148 Grabmueller for the hint.
13149
13150 (scm_makstr): Reordered string initialization to make interrupt
13151 deferring unnecessary.
13152
13153 * vectors.c (scm_make_vector): Fixed range checking.
13154
13155 2001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
13156
13157 * vectors.h (SCM_VECTOR_MAX_LENGTH): New macro.
13158
13159 * vectors.c (scm_make_vector, scm_c_make_vector): Improved the
13160 checking of the size parameter for type correctness and valid
13161 range. Thanks to Rob Browning for reporting the problem. Instead
13162 of deferring interrupts, scm_remember_upto_here_1 is used.
13163
13164 2001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
13165
13166 * dump.c (scm_store_cell_object, scm_restore_cell_object): Removed.
13167 (scm_dump_cell_update): Removed.
13168 (scm_dump_update): Renamed from scm_dump_object_update.
13169 (scm_restore_string, scm_restore_bytes, scm_restore_word): Takes
13170 a pointer instead of returning a value.
13171 * keywords.c (keyword_undump): Updated.
13172
13173 2001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
13174
13175 * dump.c, dump.h: Modified a lot.
13176 (SCM_DUMP_COOKIE): Version 0.1
13177 (scm_dump_mark): Removed.
13178 (scm_restore_cell_object, scm_store_cell_object): New functions.
13179
13180 * smob.h (scm_smob_descriptor): Removed slots: dump_mark,
13181 dump_dealloc, dump_store, undump_alloc, undump_restore, undump_init.
13182 New slots: dump, undump.
13183 * smob.c (scm_make_smob_type, scm_set_smob_dump, scm_set_smob_undump):
13184 Updated.
13185
13186 * keywords.c (keyword_dump): Renamed from keyword_dealloc.
13187 (keyword_undump): Renamed from keyword_alloc.
13188 (scm_init_keywords): Set keyword_dump and keyword_undump.
13189
13190 2001-02-03 Michael Livshin <mlivshin@bigfoot.com>
13191
13192 * gc.c (DOUBLECELL_ALIGNED_P): new macro, a better-named analog of
13193 the deprecated SCM_DOUBLE_CELLP.
13194
13195 * tags.h (SCM_DOUBLE_CELLP): deprecated.
13196
13197 2001-02-02 Keisuke Nishida <kxn30@po.cwru.edu>
13198
13199 * dump.c, dump.h: New files.
13200 * Makefile.am: Added dump.c, dump.h, dump.x, dump.doc.
13201 * init.c: #include "libguile/dump.h".
13202 (scm_init_guile_1): Call scm_init_dump.
13203 * smob.h (scm_smob_descriptor): New slots: dump_mark,
13204 dump_dealloc, dump_store, undump_alloc, undump_restore,
13205 undump_init.
13206 * smob.c (scm_make_smob_type): Init the new slots.
13207 (scm_set_smob_dump, scm_set_smob_undump): New functions.
13208 * smob.h (scm_set_smob_dump, scm_set_smob_undump): Declared.
13209
13210 * keywords.c: #include "libguile/dump.h".
13211 (keyword_dealloc, keyword_alloc): New functions.
13212 (scm_init_keywords): Set smob_dump and smob_undump.
13213
13214 2001-02-01 Keisuke Nishida <kxn30@po.cwru.edu>
13215
13216 * vectors.c (scm_c_make_vector): New function.
13217 * vectors.h (scm_c_make_vector): Declared.
13218 * eval.c (scm_copy_tree), filesys.c (scm_stat2scm), fluids.c
13219 (scm_make_initial_fluids, grow_fluids), gc.c (scm_init_storage),
13220 gh_data.c (gh_ints2scm, gh_doubles2scm): goops.c
13221 (scm_make_method_cache, scm_i_vector2list,
13222 scm_compute_applicable_methods, scm_sys_method_more_specific_p),
13223 init.c (start_stack), net_db.c (scm_gethost, scm_getnet,
13224 scm_getproto, scm_return_entry), posix.c (scm_getgroups,
13225 scm_getpwuid, scm_getgrgid, scm_uname), print.c (make_print_state,
13226 grow_ref_stack), regex-posix.c (scm_regexp_exec), scmsigs.c
13227 (scm_init_scmsigs), socket.c (scm_addr_vector, scm_addr_vector),
13228 stime.c (scm_times, filltime), unif.c (scm_make_uve), vectors.c
13229 (scm_vector, scm_make_vector): Use scm_c_make_vector.
13230
13231 * hashtab.c (scm_c_make_hash_table): New function.
13232 * hashtab.h (scm_c_make_hash_table): Declared.
13233 * environments.c (scm_make_leaf_environment,
13234 scm_make_eval_environment), gc.c (scm_init_storage),
13235 keywords.c (scm_init_keywords), symbols.c (scm_builtin_bindings):
13236 Use scm_c_make_hash_table.
13237
13238 2001-01-31 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13239
13240 * unif.c (rapr1): Don't apply scm_uniform_vector_length on arrays.
13241
13242 2001-01-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13243
13244 * struct.c (scm_make_vtable_vtable): Removed unnecessary "" from
13245 end of docstring.
13246
13247 * struct.c (scm_struct_set_x, scm_struct_vtable_tag,
13248 scm_struct_vtable_name, scm_set_struct_vtable_name_x), weaks.c
13249 (scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table,
13250 scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
13251 srcprop.c (scm_source_properties, scm_set_source_properties_x,
13252 scm_source_property, scm_set_source_property_x), sort.c
13253 (scm_sort_list_x, scm_restricted_vector_sort_x, scm_sorted_p,
13254 scm_merge, scm_merge_x, scm_sort_x, scm_sort, scm_stable_sort_x,
13255 scm_stable_sort, scm_sort_list_x, scm_sort_list): Added
13256 docstrings.
13257
13258 2001-01-29 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13259
13260 * eval.c (SCM_APPLY): Check that primitives which take 1 arg
13261 really get that arg.
13262
13263 2001-01-26 Keisuke Nishida <kxn30@po.cwru.edu>
13264
13265 * goops.c (s_scm_get_keyword): Bug fix.
13266
13267 2001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
13268
13269 The following patch was sent by Martin Grabmueller. It makes sure
13270 that in case of parameter errors the correct function name is
13271 shown, and that parameter types are only checked once.
13272
13273 * strop.c (string_copy, string_upcase_x, string_downcase_x,
13274 string_capitalize_x): New functions. Each one performs the core
13275 functionality of the corresponding scm_* function.
13276
13277 (scm_string_copy, scm_string_upcase_x, scm_string_upcase,
13278 scm_string_downcase_x, scm_string_downcase,
13279 scm_string_capitalize_x, scm_string_capitalize): Reduced to
13280 parameter checking wrappers of the above functions.
13281
13282 2001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
13283
13284 * continuations.c, dynl.c, keywords.c, load.c: Include
13285 strings.h. Thanks to Bill Schottstaedt for the bug report.
13286
13287 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13288
13289 * backtrace.c (display_header): Make sure that line and column
13290 information is shown independent of whether the port the code was
13291 read from had an associated filename. Thanks to Martin
13292 Grabmueller for providing this patch.
13293
13294 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13295
13296 * fports.[ch] (scm_file_port_p): New primitive.
13297
13298 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13299
13300 * tags.h (scm_tc16_fport, scm_tc16_strport, scm_tc16_sfport):
13301 These are now defined in fports.c, strports.c and vports.c.
13302
13303 * fports.[ch] (scm_tc16_fport), strports.c (scm_tc16_strport),
13304 vports.c (scm_tc16_sfport): Made variables (were macros defined in
13305 tags.h).
13306
13307 fports.c (scm_make_fptob), strports.c (scm_make_stptob), vports.c
13308 (scm_make_sfptob): Made static. These return a type code now.
13309
13310 fports.c (scm_init_fports), strports.c (scm_init_strports),
13311 vports.c (scm_init_vports): Create the corresponding port types.
13312
13313 * fports.h (SCM_FPORTP, SCM_OPFPORTP, SCM_OPINFPORTP,
13314 SCM_OPOUTFPORTP): Redefined in terms of scm_tc16_fport.
13315
13316 * init.c (scm_init_guile_1): Make sure strports are initialized
13317 before gdbint.
13318
13319 * ports.[ch] (scm_make_port_type): Changed the return type to
13320 scm_bits_t.
13321
13322 * ports.c (scm_ports_prehistory): Don't create any port types
13323 here.
13324
13325 * posix.c (scm_ttyname): Use SCM_FPORTP instead of comparing
13326 against scm_tc16_fport directly.
13327
13328 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13329
13330 * srcprop.c (scm_set_source_property_x): Fix to handle
13331 (set-source-property! <obj> 'copy <datum>) correctly.
13332
13333 2001-01-24 Gary Houston <ghouston@arglist.com>
13334
13335 * filesys.c (scm_link): docstring fix.
13336 * fports.h (scm_setfileno): obsolete declaration removed.
13337 * posix.c: bogus popen declaration removed.
13338
13339 * rdelim.c: new file, split from ioext.c.
13340 * rdelim.h: new file, split from ioext.h
13341 * Makefile.am: add rdelim.c and related files.
13342 * init.c: call scm_init_rdelim. include rdelim.h.
13343
13344 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
13345
13346 This patch was sent by Martin Grabmueller and makes sure that
13347 parameter errors are reported correctly by the lexicographic
13348 ordering predicates.
13349
13350 * strorder.c (string_less_p, string_ci_less_p): New functions.
13351
13352 (scm_string_less_p, scm_string_ci_less_p): Extracted the core
13353 functionality into string_less_p, string_ci_less_p respectively.
13354 The remaining code is just a wrapper to do the parameter
13355 checking.
13356
13357 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p): Check the
13358 parameters and call string_less_p instead of scm_string_less_p.
13359
13360 (scm_string_ci_leq_p, scm_string_ci_gr_p, scm_string_ci_geq_p):
13361 Check the parameters and call string_less_ci_p instead of
13362 scm_string_ci_less_p.
13363
13364 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
13365
13366 This patch modifies scm_display_error to perform parameter
13367 checking. Thanks to Neil Jerram for the bug report.
13368
13369 * backtrace.[ch] (scm_i_display_error): New function.
13370
13371 * backtrace.c (scm_display_error): Added parameter check and
13372 extracted the core functionality into function
13373 scm_i_display_error.
13374
13375 * throw.c (handler_message): Call scm_i_display_error to display
13376 the error message.
13377
13378 2001-01-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13379
13380 * eval.c (SCM_APPLY): Added # args check for application of
13381 procedures with arity 3. (Thanks to Anders Holst.)
13382
13383 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
13384
13385 * filesys.h (SCM_DIR_FLAG_OPEN, SCM_DIR_OPEN_P): Added.
13386
13387 (SCM_OPDIRP): Deprecated.
13388
13389 * filesys.c (scm_opendir): Use SCM_DIR_FLAG_OPEN instead of
13390 SCM_OPN.
13391
13392 (scm_readdir, scm_rewinddir): Don't use SCM_VALIDATE_OPDIR.
13393 Instead, give an explicit error message in case the directory is
13394 closed.
13395
13396 (scm_closedir, scm_dir_print): Rewritten to use SCM_DIR_OPEN_P
13397 instead of SCM_OPENP and SCM_CLOSEDP.
13398
13399 * validate.h (SCM_VALIDATE_OPDIR): Deprecated.
13400
13401 2001-01-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
13402
13403 * eval.c (inner_eval, scm_eval): Move all real functionality into
13404 inner_eval. Avoid to copy the expression twice by inlining some
13405 code from scm_i_eval.
13406
13407 2001-01-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
13408
13409 * eval.c (scm_m_case): The 'else' clause of a 'case' statement
13410 now has to be the last clause, as required by R5RS. Thanks to
13411 Martin Grabmueller for the patch.
13412
13413 2001-01-18 Gary Houston <ghouston@arglist.com>
13414
13415 * ioext.c: further simplify scm_read_string_x_partial by defining
13416 a macro SCM_EBLOCK.
13417
13418 2001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
13419
13420 * gh_data.c (gh_ints2scm): Simplified using SCM_FIXABLE.
13421
13422 2001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
13423
13424 * __scm.h: Added comment about architecture and compiler
13425 properties that are required by guile.
13426
13427 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
13428 SCM_MOST_NEGATIVE_FIXNUM): Moved to numbers.h.
13429
13430 (SCM_CHAR_BIT, SCM_LONG_BIT): Moved here from numbers.h.
13431
13432 * numbers.h (SCM_CHAR_BIT, SCM_LONG_BIT): Moved to __scm.h.
13433
13434 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
13435 SCM_MOST_NEGATIVE_FIXNUM): Moved here from __scm.h.
13436
13437 2001-01-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13438
13439 * __scm.h (SCM_FIXNUM_BIT): Added. The name is chosen in analogy
13440 to the names in limits.h.
13441
13442 * numbers.c (abs_most_negative_fixnum): Added.
13443
13444 (scm_quotient, scm_remainder): Fixed the fixnum-min / (abs
13445 fixnum-min) special case.
13446
13447 (scm_big_and): Fix for negative first parameter.
13448
13449 (scm_bit_extract): Fix for fixnum paramters.
13450 Thanks to Rob Browning for the bug report.
13451
13452 (scm_init_numbers): Initialize abs_most_negative_fixnum.
13453
13454 2001-01-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
13455
13456 * symbols.c (scm_symbol_bound_p): Fixed comment.
13457 Thanks to Chris Cramer.
13458
13459 2001-01-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
13460
13461 * smob.[ch] (scm_make_smob_type): Return type is scm_bits_t now.
13462 Thanks to Bill Schottstaedt.
13463
13464 2001-01-11 Michael Livshin <mlivshin@bigfoot.com>
13465
13466 from Matthias Köppe:
13467
13468 * objects.h (SCM_SET_ENTITY_SETTER): new macro. SCM_ENTITY_SETTER
13469 casts its result, so doesn't yield an lvalue per ANSI C.
13470
13471 * goops.c (s_scm_sys_set_object_setter_x): use
13472 SCM_SET_ENTITY_SETTER.
13473 (clear_method_cache): use SCM_SET_ENTITY_PROCEDURE.
13474
13475 * gc.h (SCM_GC_SET_CARD_BVEC): new macro. SCM_GC_CARD_BVEC casts
13476 its result, so doesn't yield an lvalue per ANSI C.
13477 (SCM_GC_SET_CARD_FLAGS): ditto for SCM_GC_GET_CARD_FLAGS.
13478 (SCM_GC_CLR_CARD_FLAGS): redefined in terms of
13479 SCM_GC_SET_CARD_FLAGS.
13480 (SCM_GC_SET_CARD_FLAG, SCM_GC_CLR_CARD_FLAGS): ditto.
13481
13482 * gc.c (INIT_CARD): use the explicit setter macro to set the bvec.
13483
13484 2001-01-08 Gary Houston <ghouston@arglist.com>
13485
13486 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): new macro.
13487 * ioext.c (scm_read_string_x_partial, scm_read_delimited_x),
13488 socket.c (scm_recvfrom): use the new macro, plus minor docstring
13489 changes.
13490 * ioext.c (scm_read_string_x_partial): don't crash if -1 is supplied
13491 for fdes. if current input port is used, check that it's a file
13492 port.
13493
13494 2001-01-06 Gary Houston <ghouston@arglist.com>
13495
13496 * ioext.c (scm_read_string_x_partial): new procedure, implements
13497 read-string!/partial.
13498 * ports.c (scm_take_from_input_buffers): new procedure used by
13499 scm_read_string_x_partial.
13500 (scm_drain_input): use scm_take_from_input_buffers.
13501
13502 2001-01-06 Marius Vollmer <mvo@zagadka.ping.de>
13503
13504 * validate.h (SCM_VALIDATE_NUMBER): New.
13505
13506 2001-01-03 Michael Livshin <mlivshin@bigfoot.com>
13507
13508 * guardians.c (F_GREEDY, F_LISTED, F_DESTROYED, GREEDY_P,
13509 SET_GREEDY, LISTED_P, SET_LISTED, CLR_LISTED, DESTROYED_P,
13510 SET_DESTROYED): new defines/macros.
13511 (GUARDIAN_LIVE, GUARDIAN_ZOMBIES, GUARDIAN_NEXT): deleted.
13512 (add_to_live_list): takes a `guardian_t *' now, not SCM.
13513 (guardian_print): print more info.
13514 (guardian_apply): check if the guardian is destroyed, and throw an
13515 error if so. take one more optional argument `throw_p'.
13516 (scm_guard): depending on the value of `throw_p', return a boolean
13517 result.
13518 (scm_get_one_zombie): remove redundant property test.
13519 (guardian_t): represent the various (currently 3, I hope nothing
13520 more gets added) boolean fields as bit flags.
13521 (scm_guardian_destroyed_p, scm_guardian_greedy_p): new predicates.
13522 (scm_destroy_guardian_x): new procedure.
13523
13524 * guardians.h: added prototypes for `scm_guardian_greedy_p' and
13525 `scm_guardian_destroyed_p'. changed prototype for `scm_guard'.
13526
13527 2001-01-01 Gary Houston <ghouston@arglist.com>
13528
13529 * fports.c (fport_write): bugfix: handle short writes for
13530 unbuffered ports too. optimize the buffered case by minimizing
13531 the number of write/flush calls.
13532 (write_all): new helper procedure.
13533
13534 The ChangeLog continues in the file: "ChangeLog-2000"