(scm_ithrow): print out key symbol and string arguments
[bpt/guile.git] / libguile / ChangeLog
1 2007-01-10 Han-Wen Nienhuys <hanwen@lilypond.org>
2
3 * throw.c (scm_ithrow): print out key symbol and string arguments
4 when error happens inside a critical section, and document why.
5
6 2007-01-06 Han-Wen Nienhuys <hanwen@lilypond.org>
7
8 * read.c (s_scm_read_hash_extend): document #f argument to
9 read-hash-extend.
10
11 2007-01-03 Han-Wen Nienhuys <hanwen@lilypond.org>
12
13 * gc.c (s_scm_gc_stats): return an entry for total-cells-allocated
14 too.
15 (gc_update_stats): update scm_gc_cells_allocated_acc too.
16
17 2006-12-23 Han-Wen Nienhuys <hanwen@lilypond.org>
18
19 * numbers.c (scm_i_fraction_reduce): move logic into
20 scm_i_make_ratio(), so fractions are only read.
21 scm_i_fraction_reduce() modifies a fraction when reading it. A
22 race condition might lead to fractions being corrupted by reading
23 them concurrently.
24
25 Also, the REDUCED bit alters the SCM_CELL_TYPE(), making
26 comparisons between reduced and unreduced fractions go wrong.
27
28 * numbers.h: remove SCM_FRACTION_SET_NUMERATOR,
29 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
30 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
31 SCM_FRACTION_REDUCED.
32
33
34 2006-12-12 Ludovic Courtès <ludovic.courtes@laas.fr>
35
36 * libguile/unif.c (read_decimal_integer): Let RESP be SIGN * RES
37 instead of RES (reported by Gyula Szavai). This allows the use of
38 negative lower bounds.
39 (scm_i_read_array): Make sure LEN is non-negative (reported by
40 Gyula Szavai).
41
42 (scm_array_in_bounds_p): Iterate over S instead of always
43 comparing indices with the bounds of S[0]. This fixes
44 `array-in-bounds?' for arrays with a rank greater than one and
45 with different lower bounds for each dimension.
46
47 2006-11-29 Ludovic Courtès <ludovic.courtes@laas.fr>
48
49 * libguile/vectors.c (scm_vector_to_list): Fixed list
50 construction: elements were not copied when INC is zero (see
51 "shared array" example in `vectors.test'). Reported by
52 Szavai Gyula.
53
54 2006-11-18 Ludovic Courtès <ludovic.courtes@laas.fr>
55
56 * Makefile.am (lib_LTLIBRARIES): Added `libguile-i18n-v-XX.la'.
57 (libguile_la_SOURCES): Added `gettext.c', removed `i18n.c'.
58 (libguile_i18n_v_XX_la_SOURCES, libguile_i18n_v_XX_la_CFLAGS,
59 libguile_i18n_v_XX_la_LIBADD, libguile_i18n_v_XX_la_LDFLAGS): New.
60 (DOT_X_FILES): Added `gettext.x'.
61 (DOT_DOC_FILES): Likewise.
62 (EXTRA_libguile_la_SOURCES): Added `locale-categories.h'.
63 (modinclude_HEADERS): Added `gettext.h'.
64 (EXTRA_DIST): Added `libgettext.h'.
65
66 * gettext.h: Renamed to...
67 * libgettext.h: New file.
68
69 * i18n.c: Renamed to...
70 * gettext.c: New file.
71
72 * i18n.h: Renamed to...
73 * gettext.h: New file.
74
75 * i18n.c, i18n.h, locale-categories.h: New files.
76
77 * init.c: Include "libguile/gettext.h" instead of
78 "libguile/i18n.h".
79 (scm_i_init_guile): Invoke `scm_init_gettext ()' instead of
80 `scm_init_i18n ()'.
81
82 * posix.c: Include "libguile/gettext.h" instead of
83 "libguile/i18n.h" Test `HAVE_NEWLOCALE' and `HAVE_STRCOLL_L'.
84 (USE_GNU_LOCALE_API): New macro.
85 (scm_i_locale_mutex): New variable.
86 (scm_setlocale): Lock and unlock it around `setlocale ()' calls.
87
88 * posix.h: Include "libguile/threads.h".
89 (scm_i_locale_mutex): New declaration.
90
91 2006-11-17 Neil Jerram <neil@ossau.uklinux.net>
92
93 * script.c (scm_shell_usage): Note need for subscription to bug-guile@gnu.org.
94
95 2006-11-08 Ludovic Courtès <ludovic.courtes@laas.fr>
96
97 * libguile/gc-freelist.c (scm_i_adjust_min_yield): Take two
98 "sweep_stats" arguments; use them instead of accessing the global
99 variables `scm_gc_cells_collected' and `scm_gc_cells_collected_1'.
100
101 * libguile/gc-segment.c (scm_i_sweep_some_cards): Reset SWEEP
102 before each iteration of the loop.
103 (scm_i_sweep_some_segments): Reset SWEEP at each iteration.
104 (scm_i_get_new_heap_segment): Take an additional argument
105 SWEEP_STATS. Compute MIN_CELLS as a function of it.
106
107 * libguile/gc.c (scm_gc_cells_collected,
108 scm_gc_cells_collected_1): Removed.
109 (scm_i_gc_sweep_stats, scm_i_gc_sweep_stats_1): New.
110 (scm_gc_cells_marked_acc, scm_gc_cells_swept_acc,
111 scm_gc_time_taken, scm_gc_mark_time_taken, scm_gc_times,
112 scm_gc_cell_yield_percentage, protected_obj_count): Made `static'.
113 (scm_gc_stats): Use `scm_i_gc_sweep_stats' instead of
114 `scm_gc_cells_(collected|swept)'.
115 (gc_update_stats): New.
116 (gc_end_stats): Use `scm_i_gc_sweep_stats' and
117 `scm_i_gc_sweep_stats_1' instead of the former globals.
118 (scm_gc_for_newcell): Invoke `gc_update_stats ()' after each
119 `scm_i_sweep_some_segments' call. This fixes a bug where the GC
120 would keep allocating new segments instead of re-using collected
121 cells (because `scm_gc_cells_collected' would remain zero).
122
123 * libguile/gc.h (scm_gc_cells_swept, scm_gc_cells_collected,
124 scm_gc_cell_yield_percentage): Removed.
125
126 * libguile/private-gc.h (scm_gc_cells_collected_1): Removed.
127 (scm_i_adjust_min_yield): Updated.
128 (scm_i_get_new_heap_segment): Updated.
129
130 2006-11-02 Neil Jerram <neil@ossau.uklinux.net>
131
132 * modules.c: Correct comment saying that low-level environments
133 will be used "in the next release".
134
135 * init.c: Comment out #include of environments.h.
136 (scm_i_init_guile): Comment out scm_environments_prehistory() and
137 scm_init_environments() calls.
138
139 * Makefile.am (libguile_la_SOURCES): Remove environments.c.
140 (DOT_X_FILES): Remove environments.x.
141 (DOT_DOC_FILES): Remove environments.doc.
142 (modinclude_HEADERS): Remove environments.h.
143
144 2006-10-25 Neil Jerram <neil@ossau.uklinux.net>
145
146 IA64 HP-UX GC patch from Hrvoje Nikšić. (Thanks!)
147
148 * threads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp() and
149 scm_ia64_register_backing_store_base() instead of Linux-specific
150 implementations.
151
152 * gc.h (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp):
153 New declarations.
154
155 * gc.c (__libc_ia64_register_backing_store_base): Declaration
156 removed.
157 (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp): New, with
158 implementations for Linux and HP-UX.
159
160 * coop-pthreads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp()
161 and scm_ia64_register_backing_store_base() instead of
162 Linux-specific implementations.
163
164 * continuations.h (__libc_ia64_register_backing_store_base):
165 Declaration removed.
166 (scm_t_contregs): New "fresh" field.
167
168 * continuations.c (ia64_getcontext): Removed.
169 (scm_make_continuation): Use continuation fresh field instead of
170 interpreting getcontext return values (which isn't portable). Use
171 scm_ia64_ar_bsp() and scm_ia64_register_backing_store_base()
172 instead of Linux-specific implementations.
173 (copy_stack_and_call): Use scm_ia64_register_backing_store_base()
174 instead of Linux-specific implementation.
175
176 * _scm.h (__ia64__): Also detect __ia64.
177
178 2006-10-03 Kevin Ryde <user42@zip.com.au>
179
180 * eval.c (SCM_APPLY): For scm_tc7_subr_2o, throw wrong-num-args on 0
181 arguments or 3 or more arguments. Previously 0 called proc with
182 SCM_UNDEFINED, and 3 or more silently used just the first 2.
183
184 2006-09-28 Kevin Ryde <user42@zip.com.au>
185
186 * fports.c, ports.c (ftruncate): Use "HAVE_CHSIZE && ! HAVE_FTRUNCATE"
187 for chsize fallback, instead of hard-coding mingw. Mingw in fact
188 supplies ftruncate itself these days.
189
190 * ports.c (fcntl.h): Can include this unconditionally, no need for
191 __MINGW32__.
192
193 * ports.c (truncate): Conditionalize on "HAVE_FTRUNCATE && !
194 HAVE_TRUNCATE" so as not to hard-code mingw. Use "const char *" and
195 "off_t" for parameters, per usual definition of this function, rather
196 than "char *" and "int". Use ftruncate instead of chsize. Check for
197 error on final close.
198
199 2006-09-27 Kevin Ryde <user42@zip.com.au>
200
201 * numbers.c (scm_log10): Check HAVE_CLOG10, clog10() is not available
202 in mingw.
203
204 * posix.c (scm_execl, scm_execlp, scm_execle): Cast "const char *
205 const *" for mingw to suppress warnings from gcc (which are errors
206 under the configure default -Werror). Reported by Nils Durner.
207
208 2006-09-26 Kevin Ryde <user42@zip.com.au>
209
210 * _scm.h (scm_to_off64_t, scm_from_off64_t): New macros.
211 * fports.c (scm_open_file): Use open_or_open64.
212 (fport_seek_or_seek64): New function, adapting fport_seek.
213 * fports.c, fports.h (scm_i_fport_seek, scm_i_fport_truncate): New
214 functions.
215 * ports.c (scm_seek, scm_truncate_file): Use scm_i_fport_seek and
216 scm_i_fport_truncate to allow 64-bit seeks and truncates on fports.
217
218 * ports.c (scm_truncate_file): Update docstring per manual.
219
220 2006-09-23 Kevin Ryde <user42@zip.com.au>
221
222 * numbers.c, numbers.h (scm_log, scm_log10, scm_exp, scm_sqrt): New
223 functions.
224
225 2006-09-20 Ludovic Courtès <ludovic.courtes@laas.fr>
226
227 * srfi-14.c: Include <config.h>. Define `_GNU_SOURCE'.
228 (make_predset, define_predset, make_strset, define_strset, false,
229 true): Removed.
230 (SCM_CHARSET_UNSET, CSET_BLANK_PRED, CSET_SYMBOL_PRED,
231 CSET_PUNCT_PRED, CSET_LOWER_PRED, CSET_UPPER_PRED,
232 CSET_LETTER_PRED, CSET_DIGIT_PRED, CSET_WHITESPACE_PRED,
233 CSET_CONTROL_PRED, CSET_HEX_DIGIT_PRED, CSET_ASCII_PRED,
234 CSET_LETTER_AND_DIGIT_PRED, CSET_GRAPHIC_PRED, CSET_PRINTING_PRED,
235 CSET_TRUE_PRED, CSET_FALSE_PRED, UPDATE_CSET): New macros.
236 (define_charset, scm_srfi_14_compute_char_sets): New functions.
237 (scm_init_srfi_14): Use `define_charset ()' instead of
238 `define_predset ()' and `define_strset ()'.
239
240 * srfi-14.h (scm_c_init_srfi_14): Removed.
241 (scm_srfi_14_compute_char_sets): New declaration.
242
243 * posix.h: Include "srfi-14.h".
244 (scm_setlocale): Invoke `scm_srfi_14_compute_char_sets ()' after a
245 successful `setlocale ()' call.
246
247 2006-09-08 Kevin Ryde <user42@zip.com.au>
248
249 * socket.c (scm_init_socket): Add MSG_DONTWAIT.
250 (scm_recvfrom): Update docstring from manual.
251
252 2006-08-31 Rob Browning <rlb@defaultvalue.org>
253
254 * ports.c (scm_c_port_for_each): Add a
255 scm_remember_upto_here_1(ports) at the end of the function to fix
256 a GC bug.
257
258 2006-08-28 Neil Jerram <neil@ossau.uklinux.net>
259
260 * backtrace.c (scm_display_backtrace_with_highlights): Minor
261 improvements to docstring.
262 (scm_backtrace_with_highlights): Analogous improvements.
263
264 2006-08-12 Kevin Ryde <user42@zip.com.au>
265
266 * gen-scmconfig.h.in (SCM_I_GSC_NEED_BRACES_ON_PTHREAD_ONCE_INIT):
267 New, set from configure.
268 * gen-scmconfig.c (SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT): New output
269 to scmconfig.h.
270 * pthread-threads.h (SCM_I_PTHREAD_ONCE_INIT): Use
271 SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT to cope with Solaris.
272 Reported by Claes Wallin.
273
274 2006-08-11 Neil Jerram <neil@ossau.uklinux.net>
275
276 * stacks.c (scm_last_stack_frame): Correct docstring (returns a
277 frame, not a stack).
278
279 2006-07-25 Kevin Ryde <user42@zip.com.au>
280
281 * threads.c (get_thread_stack_base): Restrict HAVE_PTHREAD_GETATTR_NP
282 on pthreads version, since pthread_getattr_np not available on solaris
283 and macos. Reported by Claes Wallin.
284
285 2006-07-24 Kevin Ryde <user42@zip.com.au>
286
287 * filesys.c (dirfd): Test with #ifndef rather than HAVE_DIRFD, since
288 it's a macro on MacOS X. Reported by Claes Wallin.
289
290 * posix.c (sethostname): Give prototype if not HAVE_DECL_SETHOSTNAME,
291 for the benefit of Solaris 10. Reported by Claes Wallin.
292
293 * socket.c (scm_htonl, scm_ntohl): Use scm_to_uint32 rather than
294 NUM2ULONG, to enforce 32-bit range check on systems with 64-bit long.
295
296 2006-07-21 Kevin Ryde <user42@zip.com.au>
297
298 * eval.c, filesys.c (alloca): Update <alloca.h> etc blob, per current
299 autoconf recommendation. Should fix Solaris 10 reported by Claes
300 Wallin.
301
302 * threads.c: Include <string.h>, needed for memset() which is used by
303 FD_ZERO() on Solaris 10. Reported by Claes Wallin.
304
305 2006-07-18 Rob Browning <rlb@defaultvalue.org>
306
307 * continuations.c: Add __attribute__ ((returns_twice)) to the
308 ia64_getcontext prototype so that gcc will make the right
309 arrangements and avoid an illegal instruction during
310 call-with-current-continuation.
311
312 2006-07-12 Ludovic Courtès <ludovic.courtes@laas.fr>
313
314 * numbers.c (guile_ieee_init): Use regular ANSI C casts rather
315 than C++-style `X_CAST ()'. Patch posted by by Mike Gran.
316
317 2006-07-08 Kevin Ryde <user42@zip.com.au>
318
319 * environments.c (core_environments_unobserve): Use if/else rather
320 than ?: for "SET" bits, avoiding complaints from AIX xlc compiler
321 about them not being rvalues. Reported by Mike Gran.
322
323 * Makefile.am (version.h): Don't use $< in an explicit rule, it's not
324 portable and in particular fails on OpenBSD and AIX (see autoconf
325 manual too). Reported by Mike Gran.
326
327 2006-06-25 Kevin Ryde <user42@zip.com.au>
328
329 * stime.c (bdtime2c): tm_gmtoff is seconds East, so take negative of
330 tm:gmtoff which is seconds West. Reported by Aaron VanDevender.
331 (bdtime2c): Test HAVE_STRUCT_TM_TM_GMTOFF for tm_gmtoff, rather than
332 HAVE_TM_ZONE.
333 (scm_strptime): Use tm_gmtoff from the strptime result when that field
334 exists, it's set by glibc strptime "%s".
335
336 2006-06-13 Ludovic Courtès <ludovic.courtes@laas.fr>
337
338 * eq.c: Include "struct.h", "goops.h" and "objects.h".
339 (scm_equal_p): Invoke `scm_i_struct_equalp ()' on structures that
340 are not GOOPS instances.
341 * struct.c: Include "eq.h".
342 (scm_free_structs): Use `SCM_STRUCT_VTABLE_DATA ()' instead of
343 hand-written code.
344 (scm_i_struct_equalp): New.
345 * struct.h (scm_i_struct_equalp): New declaration.
346
347 2006-06-06 Kevin Ryde <user42@zip.com.au>
348
349 * Makefile.am (BUILT_SOURCES): Remove guile.texi, only used by
350 maintainers (with doc/maint/docstring.el). Fixes parallel "make -j2"
351 reported by Mattias Holm.
352
353 2006-06-03 Kevin Ryde <user42@zip.com.au>
354
355 * read.c (s_vector): Conditionalize on SCM_ENABLE_ELISP, to avoid
356 unused variable warning when elisp disabled. Reported by Ryan
357 VanderBijl.
358
359 * throw.c (scm_handle_by_message): Add dummy return value to avoid
360 compiler warning on cygwin. Reported by Ryan VanderBijl.
361
362 * Makefile.am (EXTRA_DOT_X_FILES): Typo in dependency rule, was a
363 duplicate of EXTRA_DOT_DOC_FILES.
364 (DOT_X_FILES, EXTRA_DOT_X_FILES, DOT_DOC_FILES, EXTRA_DOT_DOC_FILES):
365 Add scmconfig.h to dependencies, since these all run cpp. Helps a
366 parallel "make -j2". Reported by Mattias Holm.
367
368 2006-05-30 Kevin Ryde <user42@zip.com.au>
369
370 * ports.c, ports.h (scm_set_port_mark, scm_set_port_free,
371 scm_set_port_print, scm_set_port_equalp, scm_set_port_flush,
372 scm_set_port_end_input, scm_set_port_close, scm_set_port_seek,
373 scm_set_port_truncate, scm_set_port_input_waiting): Use scm_t_bits for
374 port type descriptor, same as scm_make_port_type return value.
375
376 2006-05-30 Marius Vollmer <mvo@zagadka.de>
377
378 * eq.c (scm_equal_p): Use scm_array_equal_p explicitely when one
379 of the arguments is a array. This allows vectors to be equal to
380 one-dimensional arrays.
381
382 2006-05-29 Marius Vollmer <mvo@zagadka.de>
383
384 * throw.c (scm_ithrow): When looking for the jmpbuf, first test
385 that we have a pair before accessing its cdr. Thanks to Bill
386 Schottstaedt!
387
388 2006-05-28 Kevin Ryde <user42@zip.com.au>
389
390 * eval.c, filesys.c: Add malloc.h to get alloca() on mingw. Reported
391 by "The Senator".
392
393 2006-05-27 Marius Vollmer <mvo@zagadka.de>
394
395 * srfi-4.c, strings.c: Replace SCM_C_INLINE with
396 SCM_C_INLINE_KEYWORD. Thanks to Mark Gran!
397
398 2006-05-26 Kevin Ryde <user42@zip.com.au>
399
400 * fports.c (fport_input_waiting): For ioctl, check HAVE_IOCTL as well
401 as defined(FIONREAD), since mingw has FIONREAD but not ioctl().
402 Reported by "The Senator".
403 For select and ioctl, move fdes into those conditionals, to avoid
404 unused variable warning when neither of those used.
405
406 2006-05-23 Kevin Ryde <user42@zip.com.au>
407
408 * fports.c: Remove "fwrite" declaration under "! HAVE_UNISTD_H".
409 It's unused and will be in stdio.h anyway (if it's anywhere).
410
411 2006-05-20 Kevin Ryde <user42@zip.com.au>
412
413 * filesys.c (scm_stat2scm): Test #ifdef S_ISLNK directly, rather than
414 HAVE_S_ISLNK from configure (it was only a #ifdef test anyway).
415
416 * posix.c (scm_mknod): Test #ifdef S_IFLNK before using that (for
417 symlink). Probably can't create symlinks with mknod anyway though.
418
419 * inline.h (scm_is_pair): Add a workaround for i386 gcc 2.95 bad code
420 generation.
421
422 2006-05-15 Kevin Ryde <user42@zip.com.au>
423
424 * simpos.c, simpos.h (scm_primitive__exit): New function.
425 (scm_primitive_exit): Update docstring, no longer the best exit after
426 a fork.
427
428 2006-05-09 Kevin Ryde <user42@zip.com.au>
429
430 * numbers.c (scm_i_divide): For big/big wanting inexact, use mpq_get_d
431 rather than converting to doubles, to avoid inf or nan when the inputs
432 are too big for a double but the quotient does fit. This affects
433 conversions exact->inexact of big fractions.
434
435 * filesys.c (scm_open_fdes): Use open64.
436 (scm_init_filesys): Add O_LARGEFILE.
437
438 * ports.c (scm_seek): Use lseek64.
439 (scm_truncate_file): Use ftruncate64.
440
441 2006-05-08 Marius Vollmer <mvo@zagadka.de>
442
443 * private-gc.h (CELL_P): Also check that the potential pointer is
444 correctly aligned for a cell. Thanks to Miroslav Lichvar!
445
446 2006-04-18 Rob Browning <rlb@defaultvalue.org>
447
448 * _scm.h: Add back error if the size of off_t is unknown. The bug
449 was actually in guile-readline's configuration.
450
451 2006-04-18 Kevin Ryde <user42@zip.com.au>
452
453 * posix.c (scm_mkstemp): Update docstring from the manual, in
454 particular file mode 0600 is not guaranteed.
455
456 2006-04-17 Kevin Ryde <user42@zip.com.au>
457
458 * _scm.h (scm_to_off_t, scm_from_off_t): No error if unknown off_t
459 size, to help the guile-readline build where off_t is unused.
460
461 2006-04-16 Kevin Ryde <user42@zip.com.au>
462
463 * filesys.c (scm_stat2scm, scm_stat, scm_lstat): Use stat or stat64.
464 (scm_readdir): Use readdir64.
465 (scm_copy_file): Use open64 and fstat64, to cope with >2Gb files.
466 * ports.c (scm_truncate_file): Use truncate64. Correction truncate
467 and ftruncate take off_t not size_t.
468 * _scm.h (stat_or_stat64 etc): Macros for selecting LFS64 when
469 available.
470
471 2006-04-06 Kevin Ryde <user42@zip.com.au>
472
473 * fports.c (scm_setvbuf): Fix for not _IOLBF, clear SCM_BUFLINE
474 instead of toggling it. Reported by Ludovic Courtès.
475
476 2006-03-26 Marius Vollmer <mvo@zagadka.de>
477
478 * threads.c (get_thread_stack_base): Use scm_get_stack_base
479 instead of accessing __libc_stack_end directly, and only do this
480 when pthread_attr_getstack is known not to work for the main
481 thread or when not using pthreads at all.
482
483 * gc_os_dep.c (scm_get_stack_base): Abort when the machine type is
484 unknown instead of returning NULL.
485
486 2006-03-21 Ludovic Courtès <ludovic.courtes@laas.fr>
487
488 * numbers.c (scm_i_mem2number): Renamed to
489 scm_c_locale_stringn_to_number.
490 * numbers.c, print.c, read.c: Updated callers.
491 * numbers.h: Update function declaration.
492
493 2006-03-11 Neil Jerram <neil@ossau.uklinux.net>
494
495 * unif.c (string_set): Don't return in a void function. (Reported
496 by Mike Gran.)
497
498 * srfi-4.c (scm_uniform_vector_read_x): Declare base as char*
499 rather than void*, so we can do pointer arithmetic on it.
500 (Reported by Mike Gran.)
501 (s_scm_uniform_vector_write): Ditto.
502
503 2006-03-10 Neil Jerram <neil@ossau.uklinux.net>
504
505 * unif.c (scm_make_shared_array): Don't use SCM_I_ARRAY_BASE when
506 oldra is not an array. (Reported by Steve Juranich.)
507
508 * threads.c (do_unlock): Renamed from "unlock", which is defined
509 in unistd.h on QNX. (Reported by Matt Kraai.)
510
511 2006-03-04 Kevin Ryde <user42@zip.com.au>
512
513 * deprecated.c (scm_i_defer_ints_etc): Show SCM_DEFER_INTS in message,
514 not SCM_CRITICAL_SECTION_START.
515
516 * eval.c, posix.c: Change comments from C++ to C style. Reported by
517 Mike Gran.
518
519 2006-02-28 Kevin Ryde <user42@zip.com.au>
520
521 * unif.c (bitvector_set): Use h->writable_elements not h->elements.
522
523 2006-02-26 Kevin Ryde <user42@zip.com.au>
524
525 * filesys.c (scm_readdir): Use fpathconf for the dirent size when
526 NAME_MAX is not available, which is so on Solaris 10. Report and help
527 by Bill Schottstaedt.
528
529 * srfi-13.c (MY_VALIDATE_SUBSTRING_SPEC_UCOPY): New macro.
530 (scm_string_compare, scm_string_compare_ci, scm_string_lt,
531 scm_string_gt, scm_string_le, scm_string_ge, scm_string_ci_lt,
532 scm_string_ci_gt, scm_string_ci_le, scm_string_ci_ge): In comparisons
533 use "unsigned char", not signed char. This ensures comparisons are
534 the same as `char<?' etc, and is also the same as guile 1.6 did.
535 Reported by Sven Hartrumpf.
536
537 2006-02-19 Mikael Djurfeldt <mdj@neurologic.cc>
538
539 * random.c: Test for SCM_HAVE_T_UINT64 instead of
540 SCM_HAVE_T_INT64.
541 (scm_i_uniform32, scm_i_uniform32, scm_i_init_rstate): Use
542 scm_t_uint64 and scm_t_uint32 instead of scm_t_int64 and
543 scm_t_int32.
544
545 2006-01-04 Ludovic Court<E8>s <ludovic.courtes@laas.fr>
546
547 * gc-segment.c (scm_i_sweep_some_cards): Take a SWEEP_STATS
548 argument. Don't refer to SCM_GC_CELLS_COLLECTED and
549 SCM_CELLS_ALLOCATED. If SEG->FIRST_TIME, let CELLS_COLLECTED as zero.
550 Take into account SEG->SPAN when computing CELLS_SWEPT.
551 (scm_i_sweep_segment): Take one more argument, similarly.
552 (scm_i_sweep_all_segments): Likewise.
553 (scm_i_sweep_some_segments): Likewise.
554 (scm_i_adjust_min_yield): Change the way MIN_CELLS is computed: do not
555 refer to SCM_GC_CELLS_COLLECTED.
556
557 * gc-freelist.c (scm_i_adjust_min_yield): Take one more
558 argument, an `scm_i_sweep_statistics' object.
559 Change the way DELTA is collected: don't take into account
560 SCM_GC_CELLS_COLLECTED_1, only SWEEP_STATS.COLLECTED.
561
562 * gc-malloc.c (scm_realloc): Pass an extra argument
563 to `scm_i_sweep_all_segments ()'.
564
565 * gc.c (gc_start_stats): Updated accordingly.
566 (gc_end_stats): Take an additional SWEEP_STATS argument.
567 Decrement SCM_CELLS_ALLOCATED after calls to `scm_i_sweep_* ()'.
568 (scm_gc_for_newcell): Updated callers of `scm_i_sweep_*'.
569 Decrement SCM_CELLS_ALLOCATED.
570 (scm_i_gc): Likewise.
571
572 * private-gc.h (scm_i_sweep_*): Updated function
573 prototypes accordingly.
574 (scm_t_sweep_statistics): New type.
575 (scm_i_sweep_statistics_init): New macro.
576 (scm_i_sweep_statistics_sum): New macro
577
578 2006-02-14 Ludovic Courtès <ludovic.courtes@laas.fr>
579
580 * strings.c (scm_i_take_stringbufn): Register LEN+1 bytes instead of
581 LEN. Without this, too much collectable memory gets unregistered,
582 which results in an underflow of SCM_MALLOCATED in
583 `decrease_mtrigger()'.
584
585 * gc-malloc.c (decrease_mtrigger): Make sure SIZE is lower than or
586 equal to SCM_MALLOCATED.
587
588 2006-02-13 Marius Vollmer <mvo@zagadka.de>
589
590 * eval.c (scm_eval_body): Use scm_i_dynwind_pthread_mutex_lock
591 oinstead of scm_dynwind_pthread_mutex_lock so that it works when
592 configured --without-threads.
593 (SCM_APPLY, CEVAL): Likewise. Thanks to Han-Wen Nienhuys!
594
595 2006-02-12 Marius Vollmer <mvo@zagadka.de>
596
597 * unif.c (scm_dimensions_to_uniform_array): Use the prototype for
598 filling when the fill parameter is omitted, as documented, but
599 turn #\nul into 0 since s8 arrays (signified by a #\nul prototype)
600 can not store characters.
601
602 2006-02-09 Neil Jerram <neil@ossau.uklinux.net>
603
604 * socket.c (scm_c_make_socket_address): Pass address_size pointer
605 on to scm_fill_sockaddr call.
606
607 2006-02-04 Neil Jerram <neil@ossau.uklinux.net>
608
609 * throw.h (scm_c_catch, scm_c_with_throw_handler,
610 scm_catch_with_pre_unwind_handler, scm_with_throw_handler): New.
611
612 * throw.c (SCM_JBPREUNWIND, SCM_SETJBPREUNWIND): New.
613 (struct pre_unwind_data): New, replaces struct lazy_catch.
614 (scm_c_catch): New, replaces scm_internal_catch as the primary
615 catch API for C code; adds pre-unwind handler support.
616 (scm_internal_catch): Now just a wrapper for scm_c_catch, for back
617 compatibility.
618 (tc16_pre_unwind_data, pre_unwind_data_print,
619 make_pre_unwind_data, SCM_PRE_UNWIND_DATA_P): Renamed from
620 "lazy_catch" equivalents.
621 (scm_c_with_throw_handler): New, replaces scm_internal_lazy_catch
622 as the primary C API for a "lazy" catch.
623 (scm_internal_lazy_catch): Now just a wrapper for
624 scm_c_with_throw_handler, for back compatibility.
625 (scm_catch_with_pre_unwind_handler): Renamed from scm_catch; adds
626 pre-unwind handler support.
627 (scm_catch): Now just a wrapper for
628 scm_catch_with_pre_unwind_handler, for back compatibility.
629 (scm_with_throw_handler): New.
630 (scm_lazy_catch): Update comment to say that the handler can
631 return, and what happens if it does.
632 (toggle_pre_unwind_running): New.
633 (scm_ithrow): When identifying the throw target, take running
634 flags into account. In general, change naming of things from
635 "lazy_catch" to "pre_unwind". When throwing to a throw handler,
636 don't unwind the dynamic context first. Add dynwind framing to
637 manage the running flag of a throw handler. If a lazy catch or
638 throw handler returns, rethrow the same exception again. Add
639 pre-unwind support to the normal catch case (SCM_JMPBUFP).
640
641 * root.c (scm_internal_cwdr): Add NULL args to
642 scm_i_with_continuation_barrier call.
643
644 * dynwind.c: Change comment mentioning lazy-catch to mention
645 pre-unwind data and throw handler also.
646
647 * continuations.h (scm_i_with_continuation_barrier): Add
648 pre-unwind handler args.
649
650 * continuations.c (scm_i_with_continuation_barrier): Add
651 pre-unwind handler args, and pass on to scm_c_catch (changed from
652 scm_internal_catch).
653 (c_handler): Remove scm_handle_by_message_noexit call.
654 (scm_c_with_continuation_barrier): Call
655 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
656 as the pre-unwind handler.
657 (scm_handler): Remove scm_handle_by_message_noexit call.
658 (s_scm_with_continuation_barrier): Call
659 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
660 as the pre-unwind handler.
661
662 2006-02-04 Kevin Ryde <user42@zip.com.au>
663
664 * gc-mark.c (scm_mark_all): Fix c99-isms "loops" and "again" variables.
665
666 2006-02-03 Kevin Ryde <user42@zip.com.au>
667
668 * list.c, list.h (scm_list): Restore this function for use from C.
669 It's a complete no-op but in theory might used by someone.
670
671 2006-01-30 Marius Vollmer <mvo@zagadka.de>
672
673 * eval.c (scm_eval_body): Lock source_mutex with a dynwind context
674 so that it gets unlocked in all cases.
675 (SCM_APPLY, CEVAL): Likewise.
676
677 2006-01-29 Marius Vollmer <mvo@zagadka.de>
678
679 * ramap.c: (scm_array_map_x): Don't use scm_array_p, use
680 scm_is_typed_array instead.
681
682 Renamed the "frames" that are related to dynamic-wind to "dynamic
683 contexts. Renamed all functions from scm_frame_ to scm_dynwind_.
684 Updated documentation.
685
686 Disabled "futures":
687
688 * futures.h, futures.c: Wrap whole contents in "#if 0"/"#endif".
689 * eval.c, init.c: Comment out all 'future' related things.
690
691 2006-01-28 Marius Vollmer <mvo@zagadka.de>
692
693 * inline.h, pairs.c (scm_is_pair): Moved scm_is_pair from pairs.c
694 to inline.h to make it inline.
695
696 2005-12-19 Ludovic Courtès <ludovic.courtes@laas.fr>
697
698 * strings.c (scm_i_take_stringbufn): New.
699 (scm_i_c_take_symbol): New.
700 (scm_take_locale_stringn): Use `scm_i_take_stringbufn ()'.
701
702 * strings.h (scm_i_c_take_symbol): New.
703 (scm_i_take_stringbufn): New.
704
705 * symbols.c (lookup_interned_symbol): New function.
706 (scm_i_c_mem2symbol): New function.
707 (scm_i_mem2symbol): Use `lookup_symbol ()'.
708 (scm_from_locale_symbol): Use `scm_i_c_mem2symbol ()'. This avoids
709 creating a new Scheme string.
710 (scm_from_locale_symboln): Likewise.
711 (scm_take_locale_symbol): New.
712 (scm_take_locale_symboln): New.
713
714 * symbols.h (scm_take_locale_symbol): New.
715 (scm_take_locale_symboln): New.
716
717 2006-01-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
718
719 * gc-card.c ("sweep_card"): don't count scm_tc_free_cell for
720 free_count.
721
722 2005-11-29 Han-Wen Nienhuys <hanwen@xs4all.nl>
723
724 * regex-posix.c (s_scm_regexp_exec): list the offending pattern
725 upon error
726
727 2005-12-29 Neil Jerram <neil@ossau.uklinux.net>
728
729 * fluids.c (next_fluid_num): [From Ludovic Courtès:] Don't trigger
730 the GC when allocated_fluids_len is zero.
731
732 2005-12-14 Neil Jerram <neil@ossau.uklinux.net>
733
734 * load.c (the_reader, the_reader_fluid_num): New.
735 (scm_primitive_load): Support custom reader.
736 (scm_init_load): Init the_reader and the_reader_fluid_num; export
737 the_reader as `current-reader'.
738
739 * scmsigs.c (do_read_without_guile): Use the "raw_data" passed in
740 (rather than an uninitialized pointer on the stack).
741
742 2005-12-07 Marius Vollmer <mvo@zagadka.de>
743
744 Reported by Bruce Korb:
745
746 * init.c (invoke_main_func): Don't call exit here. Throws that
747 are only caught by scm_with_guile will bypass us and would cause
748 scm_boot_guile to return erroneously.
749 (scm_boot_guile): Expect scm_with_guile to return and call exit
750 here, passing it an appropriate exit code.
751
752 From Andy Wingo:
753
754 * script.c (scm_find_executable): Compile fix -- fgetc returns an
755 unsigned char cast to an int, or -1 for EOS.
756
757 2005-12-06 Marius Vollmer <mvo@zagadka.de>
758
759 * srfi-4.h, srfi-4.c, srfi-4.i.c (take_uvec): Make BASE pointer
760 non-const.
761 (scm_take_u8vector, etc): Likewise. Thanks to Ludovic Courtès!
762
763 * threads.h, threads.c (scm_t_guile_ticket, scm_leave_guile,
764 scm_enter_guile): Removed from public API. See comment at
765 scm_without_guile for the rationale.
766
767 * scmsigs.c (read_without_guile): New.
768 (signal_delivery_thread): Use it instead of
769 scm_leave_guile/read/scm_enter_guile.
770
771 From Stephen Compall:
772
773 * eval.c (scm_m_cond): Recognize SRFI 61 cond syntax.
774 (CEVAL): Evaluate SRFI 61 cond clauses.
775
776 2005-12-06 Ludovic Courtès <ludovic.courtes@laas.fr>
777
778 * gc-card.c (scm_i_card_statistics): Return if BITVEC is NULL.
779 This was typically hit when running `gc-live-object-stats' right
780 after starting Guile.
781
782 2005-11-30 Kevin Ryde <user42@zip.com.au>
783
784 * srfi-13.c (scm_string_append_shared): No copying if just one
785 non-empty string in args.
786
787 2005-11-26 Kevin Ryde <user42@zip.com.au>
788
789 * gc-mark.c (scm_mark_all): Change C++ comment to C comment. Reported
790 by Ludovic Courtès.
791
792 * list.c (list): Should be "primitive" in SCM_SNARF_DOCS, not
793 "register".
794
795 * random.c (scm_i_copy_rstate, scm_c_make_rstate): Don't test for
796 scm_malloc returning NULL, it never does that.
797 * putenv.c (putenv): Likewise.
798
799 * socket.c (scm_fill_sockaddr): Remove SCM_C_INLINE_KEYWORD, this is
800 much too big to want to inline.
801
802 2005-11-17 Ludovic Courtès <ludovic.courtes@laas.fr>
803
804 * print.c (EXIT_NESTED_DATA): Before popping from the stack, reset
805 the value at its top. This fixes a reference leak.
806 (PUSH_REF): Perform `pstate->top++' after calling
807 `PSTATE_STACK_SET ()' in order to avoid undesired potential side
808 effects.
809
810 2005-11-12 Ludovic Courtès <ludovic.courtes@laas.fr>
811
812 * gc.c (scm_weak_vectors): Removed.
813
814 2005-11-12 Kevin Ryde <user42@zip.com.au>
815
816 * socket.c (scm_setsockopt): Missing @defvar in docstring. Reported
817 by Ludovic Courtès.
818
819 2005-11-07 Marius Vollmer <mvo@zagadka.de>
820
821 * stime.c (scm_mktime): Use scm_frame_critical_section instead of
822 SCM_CRITICAL_SECTION_START/END since the code inside the critical
823 section might exit non-locally.
824
825 2005-11-04 Neil Jerram <neil@ossau.uklinux.net>
826
827 * eval.c (sym_instead): New symbol.
828 (ENTER_APPLY): Remove optional use of a continuation when making
829 trap call.
830 (scm_debug_opts): Change doc for 'cheap option to make clear that
831 it is now obsolete.
832 (CEVAL, SCM_APPLY): Remove optional use of a continuation when
833 making trap calls, and implement substitution of eval expressions
834 and return values using the values that the trap call handlers
835 return.
836
837 * debug.h (SCM_CHEAPTRAPS_P): Removed.
838
839 2005-10-27 Ludovic Courtès <ludovic.courtes@laas.fr>
840
841 * socket.c (scm_fill_sockaddr): No need to check NULL from scm_malloc.
842 (scm_connect, scm_bind, scm_sendto): Accept sockaddr object.
843 (scm_addr_vector): Renamed to _scm_from_sockaddr, update usages.
844 (scm_from_sockaddr, scm_to_sockaddr, scm_make_socket_address,
845 scm_c_make_socket_address): New functions.
846 * socket.h: Add prototypes.
847
848 2005-10-24 Kevin Ryde <user42@zip.com.au>
849
850 * socket.c (scm_init_socket): Add IPPROTO_IP, IPPROTO_TCP,
851 IPPROTO_UDP. Remove SOL_IP, SOL_TCP, SOL_UDP. The former are in
852 POSIX spec examples, the latter are not available on for instance
853 NetBSD.
854
855 * socket.c (scm_getsockopt, scm_setsockopt): Update docstrings from
856 posix.texi.
857
858 * stime.c (scm_strftime): Update docstring from posix.texi.
859
860 2005-10-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
861
862 PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP is not portable enough.
863
864 * null-threads.h, pthread-threads.h
865 (SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER): Removed.
866 (scm_i_pthread_mutexattr_recursive): New.
867
868 * threads.c (scm_i_pthread_mutexattr_recursive): Declare.
869 (scm_i_critical_section_mutex): Do not initialize statically.
870 (scm_threads_prehistory): Initialize
871 scm_i_pthread_mutexattr_recursive and scm_i_critical_section_mutex
872 here.
873
874 * eval.c (source_mutex): Do not initialiaze statically.
875 (scm_init_eval): Do it here, using
876 scm_i_pthread_mutexattr_recursive.
877
878 2005-09-05 Marius Vollmer <mvo@zagadka.de>
879
880 * print.h (SCM_PRINT_KEYWORD_STYLE_I, SCM_PRINT_KEYWORD_STYLE):
881 New.
882 (sym_reader): New.
883 (scm_print_opts): Added "quote-keywordish-symbols" option.
884 (quote_keywordish_symbol): New, for evaluating the option.
885 (scm_print_symbol_name): Use it.
886 (scm_init_print): Initialize new option to sym_reader.
887
888 2005-08-15 Neil Jerram <neil@ossau.uklinux.net>
889
890 * eval.c (eval_letrec_inits): New.
891 (CEVAL): Eval letrec initializer forms using eval_letrec_inits.
892
893 2005-08-12 Marius Vollmer <mvo@zagadka.de>
894
895 * numbers.c: Use scm_from_bool instead of SCM_BOOL. Thanks to
896 Peter Gavin!
897
898 2005-08-12 Kevin Ryde <user42@zip.com.au>
899
900 * srfi-13.c (scm_string_for_each_index): Correction to docstring.
901
902 2005-08-06 Kevin Ryde <user42@zip.com.au>
903
904 * srfi-13.c (scm_string_any, scm_string_every, scm_string_tabulate,
905 scm_string_trim, scm_string_trim_right, scm_string_trim_both,
906 scm_string_index, scm_string_index_right, scm_string_skip,
907 scm_string_skip_right, scm_string_count, scm_string_map,
908 scm_string_map_x, scm_string_for_each, scm_string_for_each_index,
909 scm_string_filter, scm_string_delete): Use scm_t_trampoline_1 for
910 procedures called in loops.
911
912 2005-08-02 Kevin Ryde <user42@zip.com.au>
913
914 * strports.c (st_flush): Increase buffer by 1.5x when growing, to
915 avoid lots of copying where previoulsy growing by only 80 bytes at a
916 time.
917
918 2005-08-01 Marius Vollmer <mvo@zagadka.de>
919
920 * modules.h, modules.c (scm_eval_closure_module): Removed, we
921 already have scm_lookup_closure_module, which does the same thing.
922
923 2005-08-01 Marius Vollmer <mvo@zagadka.de>
924
925 New marking algorithm for weak hashtables that fixes the problem
926 that references from the non-weak value to the associated weak
927 key (for example) would prevent the entry from ever being dropped.
928
929 Guardians have been changed back to their original semantics and
930 are no longer greedy and no longer drop cycles.
931
932 * gc-mark.c (scm_mark_all): Do not rely on hooks to run the weak
933 hashtable and guardian machinery but call the relevant functions
934 directly.
935
936 * guardians.h, guardians.c, deprecated.h,
937 deprecated.c (scm_destroy_guardian_x, scm_guardian_greedy_p,
938 scm_guardian_destroyed_p, scm_guard, scm_get_one_zombie):
939 Deprecated and moved into deprecated.[ch].
940
941 * guardians.h, guardians.c: Mostly rewritten.
942 (scm_i_init_guardians_for_gc,
943 scm_i_identify_inaccessible_guardeds,
944 scm_i_mark_inaccessible_guardeds): New.
945 (scm_make_guardian): Removed greedy_p argument.
946
947 * weaks.h, weaks.c (SCM_I_WVECT_TYPE, SCM_I_SET_WVECT_TYPE): New.
948 (SCM_I_WVECT_N_ITEMS, SCM_I_SET_WVECT_N_ITEMS): New.
949 (SCM_WVECTF_NOSCAN, SCM_WVECT_NOSCAN_P): Removed.
950 (scm_weaks_prehistory): Removed.
951 (scm_i_init_weak_vectors_for_gc, scm_i_mark_weak_vector,
952 scm_i_mark_weak_vectors_non_weaks,
953 scm_i_remove_weaks_from_weak_vectors, scm_i_remove_weaks): New.
954 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
955 scm_scan_weak_vectors): Removed.
956
957 * hashtab.h (scm_i_scan_weak_hashtables): New.
958 * hashtab.c (make_hash_table, scm_i_rehash): Do not use
959 SCM_WVECTF_NOSCAN.
960 (hashtable_print): Use SCM_HASHTABLE_N_ITEMS instead of
961 t->n_items.
962 (scan_weak_hashtables, scm_i_scan_weak_hashtables): Renamed former
963 to latter. Do not scan the alists themselves, this is done by the
964 weak vector code now. Just update the element count.
965
966 * vectors.h (SCM_I_WVECT_TYPE, SCM_I_WVECT_EXTRA): Renamed former
967 to latter. The type is now only part of the cell word.
968 (SCM_I_SET_WVECT_TYPE, SCM_I_SET_WVECT_EXTRA): Likewise.
969
970 * init.c (scm_i_init_guile): Do not call scm_weaks_prehistory.
971
972 2005-07-18 Mikael Djurfeldt <mdj@d14n36.pdc.kth.se>
973
974 Some changes towards making it possible to run Guile on the EM64T
975 platform.
976
977 * gc.c (scm_gc_stats): Bugfix: Measure size of the type we are
978 mallocating for (unsigned long *bounds).
979
980 * hashtab.c (scm_i_rehash): Cast SCM_HASHTABLE_FLAGS (table) to
981 scm_t_bits before storing them in the type word.
982
983 * gc.c (tag_table_to_type_alist): Modified type of c_tag from
984 scm_t_bits to int.
985
986 2005-07-12 Kevin Ryde <user42@zip.com.au>
987
988 * eval.c (scm_dbg_make_iloc): Should be SCM_IFRAMEMAX and
989 SCM_IDISTMAX, and cast uints through scm_t_bits to make gcc happy.
990 * pairs.c (scm_error_pair_access): Use scm_from_locale_string rather
991 than scm_makfrom0str.
992 Reported by Ken Raeburn.
993
994 * gc-card.c (scm_dbg_gc_get_bvec): Change return from long* to
995 scm_t_c_bvec_long*, gcc 4 doesn't like different pointer targets when
996 returning SCM_GC_CARD_BVEC.
997
998 * pairs.c (scm_error_pair_access): Plain ascii ' in error message
999 rather than latin-1 acute accent, the latter may not print on all
1000 terminals.
1001
1002 * srfi-13.c (scm_string_filter, scm_string_delete): Strip leading and
1003 trailing deletions, so as to return a substring if those are the only
1004 changes.
1005
1006 2005-07-10 Kevin Ryde <user42@zip.com.au>
1007
1008 * socket.c (scm_inet_pton, scm_inet_ntop): Pointer cast to scm_t_uint8
1009 for scm ipv6 funcs, gcc 4 is picky about char* vs uchar*.
1010 (scm_getsockopt, scm_accept, scm_getsockname, scm_getpeername,
1011 scm_recvfrom) Use socklen_t, gcc 4 is picky about int* vs socklen_t*.
1012
1013 2005-07-01 Han-Wen Nienhuys <hanwen@xs4all.nl>
1014
1015 * gc-card.c (scm_i_card_statistics): init tag.
1016
1017 * gc.c (tag_table_to_type_alist): check type of tag. Should be integer.
1018
1019 2005-06-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
1020
1021 * fports.c (s_scm_open_file): add the b flag for binary to the doc
1022 string.
1023
1024 2005-06-25 Kevin Ryde <user42@zip.com.au>
1025
1026 * srfi-13.c (scm_string_filter, scm_string_delete): Partial revert
1027 last change, use plain copy-on-write substrings, the individual
1028 descriptions in the srfi don't mention shared storage (only the
1029 introduction does).
1030
1031 * strings.c (scm_take_locale_stringn): Use realloc to make room for
1032 null-terminator, rather than mallocing a whole new block.
1033 (scm_take_locale_string): Use scm_take_locale_stringn len==-1.
1034
1035 2005-06-12 Marius Vollmer <mvo@zagadka.de>
1036
1037 * ramap.c (scm_array_index_map_x): First test for real arrays,
1038 then check for generalized vectors. This ensures that the
1039 generalized vector case need only work with zero-origin ranges.
1040 (scm_ra_eqp, scm_ra_compare): Use the new array handle functions
1041 to access the target array, making these functions work with all
1042 kinds of arrays, not just bit arrays.
1043
1044 * gh.h, gh_data.c, gh_eval.c, gh_funcs.c, gh_init.c, gh_io.c,
1045 gh_list.c, gh_predicates.c: Deprecated everything.
1046
1047 * environments.c (environment_default_folder,
1048 environment_default_observer): Do not use gh_call3, gh_call1.
1049
1050 2005-06-10 Han-Wen Nienhuys <hanwen@xs4all.nl>
1051
1052 * modules.c (s_scm_eval_closure_module): new function. Return the
1053 module inside an eval-closure.
1054
1055 * gc.c (scm_init_storage): make scm_stand_in_procs a weak_key hash
1056 table. This means that procedure properties are GC'd if the
1057 procedure dies.
1058
1059 2005-06-11 Kevin Ryde <user42@zip.com.au>
1060
1061 * srfi-13.c (scm_string_filter, scm_string_delete): For char and
1062 charset cases, count chars kept and build a string in a second pass,
1063 rather than using a cons cell for every char kept. Use a shared
1064 substring when nothing removed (such sharing is allowed by the srfi).
1065
1066 2005-06-09 Han-Wen Nienhuys <hanwen@xs4all.nl>
1067
1068 * gc.c (tag_table_to_type_alist): convert tag number to "tag %d"
1069 string, so live object stats can be sorted with string<?.
1070
1071 2005-06-06 Marius Vollmer <mvo@zagadka.de>
1072
1073 * print.c (iprin1): When writing a string, collect all characters
1074 that can be printed directly into one call to scm_lfwrite.
1075 Previously, every character was output with its own call to
1076 write(2) on unbuffered ports.
1077
1078 * eval.c (scm_eval_options_interface): Use
1079 scm_frame_critical_section instead of SCM_CRITICAL_SECTION_START
1080 and SCM_CRITICAL_SECTION_END.
1081
1082 * unif.c (scm_array_in_bounds_p): First test for real arrays, then
1083 check for generalized vectors. This ensures that the generalized
1084 vector case need only work with zero-origin ranges.
1085
1086 2005-06-06 Kevin Ryde <user42@zip.com.au>
1087
1088 * srfi-13.c (scm_string_split): Compare char/char in scan. Mixing an
1089 unsigned int SCM_CHAR and a char string meant an 8-bit char was never
1090 matched.
1091
1092 2005-06-05 Marius Vollmer <mvo@zagadka.de>
1093
1094 * eval.c: Added comment on how to make case 1.1 of
1095 r5rs_pitfall.test succeed.
1096
1097 From Jan Nieuwenhuizen <janneke@gnu.org>. Thanks!
1098
1099 * hashtab.h: Bugfix: use SCM_API (WAS: extern).
1100
1101 * socket.c: Remove obsolete comment about socklen_t.
1102 (s_scm_setsockopt)[!HAVE_IP_MREQ]: Do not use ip_mreq code.
1103
1104 * numbers.h (isnan)[__MINGW32__]: Remove.
1105
1106 * Makefile.am (gen_scmconfig_SOURCES): Bugfix: Add
1107 DEFAULT_INCLUDES when cross compiling.
1108
1109 * threads.c (ETIMEDOUT, pipe)[__MINGW32__]: Add defines.
1110
1111 * stime.c (scm_strftime)[!HAVE_TM_ZONE]: Use
1112 SCM_SIMPLE_VECTOR_REF instead of SCM_VELTS. (Changed slightly
1113 from Jan's patch.)
1114
1115 2005-05-22 Marius Vollmer <mvo@zagadka.de>
1116
1117 * unif.c (scm_make_shared_array): Add old base to new base since
1118 scm_array_handle_pos does not include the base.
1119 (scm_aind): Likewise.
1120
1121 * ports.c (scm_putc, scm_puts): Assert that the port argument is a
1122 output port.
1123
1124 2005-05-12 Neil Jerram <neil@ossau.uklinux.net>
1125
1126 Mac OS X compile warning fixes, reported by Richard Todd.
1127
1128 * unif.c (scm_i_read_array): Declare rank as ssize_t, to guarantee
1129 that it is signed.
1130
1131 * strports.c (st_resize_port): Add unsigned char cast.
1132 (scm_mkstrport): Make read/write_buf cast unsigned.
1133
1134 * srfi-13.c (string_titlecase_x): Add unsigned char cast.
1135
1136 * rdelim.c (scm_read_line): Initialize slen.
1137
1138 * load.c (scm_search_path): Remove weird >=1, and add
1139 parentheses to clarify conditions.
1140
1141 * hash.c (scm_hasher): Add const unsigned char cast.
1142
1143 * gh_data.c (gh_chars2byvect): Add scm_t_int8 cast.
1144
1145 2005-05-11 Neil Jerram <neil@ossau.uklinux.net>
1146
1147 Fix C99isms reported by Ludovic Courtès:
1148
1149 * threads.c (s_scm_lock_mutex): Don't declare msg in middle of
1150 code.
1151
1152 * gc.c (s_scm_gc_live_object_stats): Don't declare alist in middle
1153 of code.
1154
1155 * gc-card.c (scm_i_card_statistics): Don't declare tag in middle
1156 of code.
1157 (scm_i_card_statistics): Add block for declarations of tag_as_scm
1158 and current.
1159
1160 2005-05-10 Neil Jerram <neil@ossau.uklinux.net>
1161
1162 * scmsigs.c (signal_delivery_thread): Return a value, to avoid
1163 compile warning reported by Werner Scheinast.
1164
1165 2005-04-30 Han-Wen Nienhuys <hanwen@xs4all.nl>
1166
1167 * list.h: remove scm_list()
1168
1169 * fluids.c (DYNAMIC_STATE_NEXT_LOC): new macro for use with
1170 SCM_DEBUG_CELL_ACCESSES
1171 (FLUID_NEXT_LOC): idem.
1172
1173 2005-04-30 Kevin Ryde <user42@zip.com.au>
1174
1175 * numbers.c (scm_divide): Correction to 1/complex and <any>/complex,
1176 need to test abs(re)<abs(im) for choice of cases, otherwise divide by
1177 zero when re==0 and im<0. Reported by Jean Crepeau.
1178
1179 2005-04-25 Kevin Ryde <user42@zip.com.au>
1180
1181 * ramap.c (scm_array_map_x): Allow no source args, add num args checks
1182 to subr_1, subr_2, subr_2o and dsubr cases. No source args only has a
1183 few sensible uses (like filling with a random number generator say),
1184 but has been allowed in the past and so should be kept.
1185
1186 2005-04-23 Kevin Ryde <user42@zip.com.au>
1187
1188 * hashtab.c (scm_hashx_remove_x): Need to pass "closure" to
1189 scm_hash_fn_remove_x.
1190
1191 * list.c (scm_cons_star): Don't modify the rest list, it belongs to
1192 the caller when cons* is reached through apply.
1193
1194 * list.c (list): Use scm_list_copy, so as to produce a fresh list when
1195 list is called using apply, under the debugging evaluator.
1196 (scm_list): Remove.
1197
1198 * list.c, list.h (scm_make_list): New code, moving make-list from
1199 boot-9.scm.
1200
1201 2005-04-14 Kevin Ryde <user42@zip.com.au>
1202
1203 * numbers.c, numbers.h (scm_oneplus, scm_oneminus): New functions,
1204 converted from scheme code in boot-9.scm.
1205
1206 2005-04-11 Kevin Ryde <user42@zip.com.au>
1207
1208 * srfi-13.c (scm_string_concatenate, scm_string_concatenate_shared):
1209 Validate list argument, scm_string_append and scm_string_append_shared
1210 don't do that to their rest argument (in a normal build).
1211
1212 2005-04-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1213
1214 * hashtab.h, hashtab.c (scm_t_hashtable): Removed 'closure' field. The
1215 closure can not be stored since it is no longer valid at GC time.
1216 (make_hash_table): Initialize 'hash_fn' field.
1217 (scm_i_rehash): Only store hash_fn in hash table when closre is
1218 NULL.
1219 (rehash_after_gc): Only call scm_i_rehash when 'hash_fn' is
1220 non-NULL. Always use a NULL closure.
1221 (scm_hash_fn_create_handle_x): Also rehash when table contains too
1222 few entries.
1223
1224 2005-03-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1225
1226 * hashtab.h, hashtab.c (scm_hash_fx_remove_x): Removed delete_fn
1227 argument; always use scm_delq_x. The delete_fn function works on
1228 the handle, not the key, and it therefore makes no sense to make
1229 it configurable. Changed all callers.
1230 (scm_hashx_remove_x): Likewise. Also, exported to Scheme.
1231 (scm_hash_clear): Accept plain vectors as hashtables.
1232 (scm_delx_x): Removed.
1233
1234 2005-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
1235
1236 * inline.h (scm_double_cell): use __asm__ iso. asm, to maintain
1237 compatibility with gcc -std=c99.
1238
1239 2005-03-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1240
1241 * async.h (scm_mask_ints): Removed left over reference to
1242 scm_root.
1243
1244 * threads.c: Removed fprintf debug statements.
1245
1246 2005-03-24 Neil Jerram <neil@ossau.uklinux.net>
1247
1248 * debug.c (scm_make_memoized): Restore use of SCM_UNPACK.
1249
1250 2005-03-23 Neil Jerram <neil@ossau.uklinux.net>
1251
1252 * debug.c (scm_make_memoized): Remove unnecessary critical
1253 section, and simplify by using SCM_RETURN_NEWSMOB.
1254
1255 2005-03-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1256
1257 * strings.h (SCM_STRING_UCHARS): Added missing argument.
1258
1259 2005-03-18 Kevin Ryde <user42@zip.com.au>
1260
1261 * arbiters.c (FETCH_STORE) [generic C]: Should be
1262 scm_i_scm_pthread_mutex_lock/unlock now. Reported by Ludovic Courtès.
1263
1264 2005-03-13 Kevin Ryde <user42@zip.com.au>
1265
1266 * numbers.c, numbers.h (scm_i_clonebig): Remove static, so can use in
1267 srfi-60.
1268
1269 * numbers.c (scm_logior): Must scm_i_normbig results as per scm_logand,
1270 because OR-ing bits into a negative can reduce the value to an inum.
1271
1272 * numbers.c (scm_num_eq_p): On 64-bit systems, be careful about
1273 casting inum to double since that can lose precision.
1274
1275 2005-03-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1276
1277 * threads.h, threads.c (scm_i_thread): Added gc_running_p field.
1278 (guilify_self_1): Initialize it.
1279
1280 * gc.h, gc.c (SCM_FREECELL_P): Removed for good.
1281 (scm_block_gc, scm_gc_heap_lock): Removed. Removed all uses.
1282 (scm_gc_running_p): Now a macro that refers to the scm_i_thread
1283 field.
1284 (scm_i_sweep_mutex): Now a non-recursive mutex. GC can not happen
1285 recursively.
1286 (scm_igc, scm_i_gc): Renamed former to latter. Changed all uses.
1287 Do not lock scm_i_sweep_mutex, which is now non-recursive, or set
1288 scm_gc_running_p. Do not run the scm_after_gc_c_hook.
1289 (scm_gc): Lock scm_i_sweep_mutex, set scm_gc_running_p and run the
1290 scm_after_gc_c_hook here.
1291 (scm_gc_for_new_cell): Set scm_gc_running_p here and run the
1292 scm_after_gc_c_hook when a full GC has in fact been performed.
1293 (scm_i_expensive_validation_check): Call scm_gc, not scm_i_gc.
1294
1295 * gc-segment.c (scm_i_get_new_heap_segment): Do not check
1296 scm_gc_heap_lock.
1297
1298 * gc-malloc.c (scm_realloc, increase_mtrigger): Set
1299 scm_gc_running_p while the scm_i_sweep_mutex is locked.
1300
1301 * inline.h (scm_cell, scm_double_cell): Do not check
1302 scm_gc_running_p, allocation during sweeping is OK.
1303
1304 * gdbint.c (SCM_BEGIN_FOREIGN_BLOCK, SCM_END_FOREIGN_BLOCK): Do
1305 not set scm_block_gc.
1306
1307 * init.c (scm_i_init_guile): Do not set scm_block_gc.
1308
1309 * deprecation.c (scm_c_issue_deprecation_warning): Use malloc
1310 instead of scm_malloc. The latter can not be used during GC.
1311
1312 2005-03-09 Marius Vollmer <mvo@zagadka.de>
1313
1314 * script.c (scm_compile_shell_switches): Added 2005 to Copyright
1315 years.
1316
1317 2005-03-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1318
1319 * gc-card.c (scm_i_sweep_card): Do not increase/decrease
1320 scm_gc_running_p. Sweeping can happen in parallel with
1321 allocation.
1322
1323 * inline.h: Updated comments for current threading implementation.
1324
1325 * threads.h, threads.c (scm_i_frame_single_threaded): Removed.
1326 (scm_i_thread): Removed unused signal_asyncs field.
1327 (threads_mark): Do not mark it.
1328 (guilify_self_1): Do not initialize it. Do initialize
1329 continuation_root field.
1330 (do_thread_exit): Do not remove thread from all_threads list.
1331 (on_thread_exit): Do it here, after leaving guile mode.
1332 (sleep_level): Removed.
1333 (scm_i_thread_put_to_sleep): Leave thread_admin_mutex locked when
1334 returning. Do not support recursive sleeps.
1335 (scm_i_thread_wake_up): Expect thread_admin_mutex to be locked on
1336 entry. Do not support recursive sleeps.
1337
1338 * fluids.c (ensure_state_size, ensure_all_state_sizes,
1339 resize_all_states): Collapsed ensure_state_size and
1340 ensure_all_state_sizes into one function named resize_all_states.
1341 Allocate new vectors outside of single threaded region. Do only
1342 simple things inside that region.
1343 (scm_make_fluid, scm_make_dynamic_state): Lock fluid_admin_mutex
1344 while adding to the global lists.
1345
1346
1347 2005-03-08 Marius Vollmer <mvo@zagadka.de>
1348
1349 libltdl is no longer distributed. We expect it to be installed
1350 already.
1351
1352 * Makefile.am (INCLUDES): Removed @LTDLINCL@.
1353 (libguile_la_LIBADD): Removed @LIBLTDL@.
1354
1355 2005-03-07 Marius Vollmer <mvo@zagadka.de>
1356
1357 * threads.h, async.h, threads.c (SCM_CRITICAL_SECTION_START,
1358 SCM_CRITICAL_SECTION_END): Moved here from threads.h since now
1359 they also block/unblock execution of asyncs and call
1360 scm_async_click which is declared in async.h but threads.h can not
1361 include async.h since async.h already includes threads.h.
1362 (scm_i_critical_section_level): New, for checking mistakes in the
1363 use of the SCM_CRITICAL_SECTION_* macros.
1364 (scm_i_critical_section_mutex): Make it a recursive mutex so that
1365 critical sections can be nested.
1366
1367 * throw.c (scm_ithrow): Abort when scm_i_critical_section_level is
1368 not zero.
1369
1370 * threads.h, threads.c (scm_frame_lock_mutex): New.
1371 (scm_frame_critical_section): Take mutex as argument.
1372 (framed_critical_section_mutex): New, used as default for above.
1373 (scm_init_threads): Initialize it.
1374 (scm_threads_prehistory): Do not initialize thread_admin_mutex and
1375 scm_i_critical_section_mutex; both are initialized statically.
1376
1377 * continuation.c, deprecated.c, goops.c, guardians.c keywords.c,
1378 libguile_la-arrays.loT, objprop.c, ports.c, smob.c, sort.s,
1379 srcprop.c, stime.c, struct.c, throw.c, regex-posix.c: Include
1380 "libguile/async.h" for SCM_CRITICAL_SECTION_START/END.
1381
1382 * debug.c (scm_debug_options): Replace
1383 SCM_CRITICAL_SECTION_START/END with a frame and
1384 scm_frame_critical_section.
1385
1386 * continuations.c (scm_make_continuation): No longer a critical
1387 section.
1388 (scm_dynthrow): Abort when scm_i_critical_section_level is
1389 not zero.
1390
1391 2005-03-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1392
1393 * threads.c (scm_try_mutex): Renamed argument for consistency.
1394
1395 * root.c (scm_call_with_dynamic_root): New docstring.
1396
1397 * eval.c: Define _GNU_SOURCE.
1398
1399 2005-03-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1400
1401 Big merge from the mvo-thread-cleanup branch. The main changes
1402 are:
1403
1404 - The dynamic roots functionality has been split into dynamic
1405 states and continuations barriers. Fluids have been
1406 reimplemented and can now be garbage collected.
1407
1408 - Initialization of Guile now works in a multi-thread friendly
1409 manner. Threads can freely enter and leave guile mode.
1410
1411 - Blocking on mutexes or condition variables or while selecting
1412 can now be reliably interrupted via system asyncs.
1413
1414 - The low-level threading interface has been removed.
1415
1416 - Signals are delivered via a pipe to a dedicated 'signal delivery
1417 thread'.
1418
1419 - SCM_DEFER_INTS, SCM_ALLOW_INTS etc have been deprecated.
1420
1421 * throw.c (scm_handle_by_message): Exit only the current thread,
1422 not the whole process.
1423 (scm_handle_by_message_noexit): Exit when catching 'quit.
1424
1425 * scmsigs.c (take_signal, signal_delivery_thread,
1426 start_signal_delivery_thread, ensure_signal_delivery_thread,
1427 install_handler): Reimplemented signal delivery as explained in
1428 the comments.
1429
1430 * pthreads-threads.h (scm_i_pthread_t, scm_i_pthread_self,
1431 scm_i_pthread_create, scm_i_pthread_detach, scm_i_pthread_exit,
1432 scm_i_sched_yield, scm_i_pthread_sigmask,
1433 SCM_I_PTHREAD_MUTEX_INITIALIZER,
1434 SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER, scm_i_pthread_mutex_t ,
1435 scm_i_pthread_mutex_init, scm_i_pthread_mutex_destroy,
1436 scm_i_pthread_mutex_trylock, scm_i_pthread_mutex_lock,
1437 scm_i_pthread_mutex_unlock, SCM_I_PTHREAD_COND_INITIALIZER,
1438 scm_i_pthread_cond_t, scm_i_pthread_cond_init,
1439 scm_i_pthread_cond_destroy, scm_i_pthread_cond_signal,
1440 scm_i_pthread_cond_broadcast, scm_i_pthread_cond_wait,
1441 scm_i_pthread_cond_timedwait, scm_i_pthread_once_t,
1442 SCM_I_PTHREAD_ONCE_INIT, scm_i_pthread_once, scm_i_pthread_key_t ,
1443 scm_i_pthread_key_create, scm_i_pthread_setspecific,
1444 scm_i_pthread_getspecific, scm_i_scm_pthread_mutex_lock,
1445 scm_i_frame_pthread_mutex_lock, scm_i_scm_pthread_cond_wait,
1446 scm_i_scm_pthread_cond_timedwait): Provide the obvious mapping
1447 when using pthreads.
1448 * null-threads.c, null-threads.h: Provide dummy definitions for
1449 the above symbols when not using pthreads.
1450
1451 * modules.h, modules.c (scm_frame_current_module): New.
1452
1453 * load.c (scm_primitive_load): Use scm_i_frame_current_load_port
1454 instead of scm_internal_dynamic_wind.
1455
1456 * init.h, init.c (restart_stack, start_stack): Removed.
1457 (scm_boot_guile, invoke_main_func): Simply use scm_with_guile.
1458 (scm_boot_guile_1): Removed.
1459 (scm_i_init_mutex): New.
1460 (really_cleanup_for_exit, cleanup_for_exit): New.
1461 (scm_init_guile_1, scm_i_init_guile): Renamed former to latter.
1462 Moved around some init funcs. Call
1463 scm_init_threads_default_dynamic_state. Register cleanup_for_exit
1464 with atexit.
1465
1466 * hashtab.c (scm_hash_fn_create_handle_x, scm_hash_fn_remove_x):
1467 Use "!scm_is_eq" instead of "!=".
1468
1469 * ge-scmconfig.c, gen-scmconfig.h.in (SCM_I_GSC_USE_COOP_THREADS,
1470 SCM_USE_COOP_THREADS): Removed.
1471
1472 * gc.c (scm_igc): Take care that scm_gc_running_p is properly
1473 maintained. Unlock scm_i_sweep_mutex before running
1474 scm_after_gc_c_hook.
1475 (scm_permanent_object): Allocate outside of critical section.
1476 (cleanup): Removed.
1477
1478 * fluids.h, fluids.c: Reimplemented completely.
1479 (SCM_FLUID_NUM, SCM_FAST_FLUID_REF,
1480 SCM_FAST_FLUID_SET): Reimplemented as functions.
1481 (scm_is_fluid): New.
1482 (scm_i_make_initial_fluids, scm_i_copy_fluids): Removed.
1483 (scm_make_dynamic_state, scm_dynamic_state_p,
1484 scm_is_dynamic_state, scm_current_dynamic_state,
1485 scm_set_current_dynamic_state, scm_frame_current_dynamic_state,
1486 scm_c_with_dynamic_state, scm_with_dynamic_state,
1487 scm_i_make_initial_dynamic_state, scm_fluids_prehistory): New.
1488
1489 * feature.c (progargs_fluid): New.
1490 (scm_program_arguments, scm_set_program_arguments): Use it instead
1491 of scm_progargs.
1492 (scm_init_feature): Allocate it. Also, only add "threads" feature
1493 when SCM_USE_PTHREAD_THREADS is true.
1494
1495 * eval.c (scm_makprom): Use scm_make_recursive_mutex instead of
1496 scm_make_rec_mutex, with all the consequences.
1497 (scm_eval_x, scm_eval): Use scm_frame_begin etc instead of
1498 scm_internal_dynamic_wind. Handle dynamic states as second
1499 argument.
1500
1501 * threads.h, threads.c (scm_internal_select): Renamed to
1502 scm_std_select and discouraged old name.
1503 (scm_thread_sleep, scm_thread_usleep): Likewise, as scm_std_sleep
1504 and scm_std_usleep.
1505 (scm_tc16_fair_mutex, scm_tc16_fair_condvar, SCM_MUTEXP,
1506 SCM_FAIR_MUTEX_P, SCM_MUTEX_DATA, SCM_CONDVARP,
1507 SCM_FAIR_CONDVAR_P, SCM_CONDVAR_DATA, SCM_THREADP,
1508 SCM_THREAD_DATA): Removed.
1509 (SCM_I_IS_THREAD, SCM_I_THREAD_DATA): New.
1510 (scm_i_thread): New.
1511 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
1512 Use scm_assert_smob_type.
1513 (scm_c_scm2thread, scm_thread_join, scm_thread_detach,
1514 scm_thread_self, scm_thread_yield, scm_mutex_init,
1515 scm_mutex_destroy, scm_mutex_trylock, scm_mutex_unlock,
1516 scm_rec_mutex_init, scm_rec_mutex_destroy, scm_make_rec_mutex,
1517 scm_rec_mutex_free, scm_rec_mutex_lock, scm_rec_mutex_trylock,
1518 scm_cond_init, scm_cond_destroy, scm_cond_wait,
1519 scm_cond_timedwait, scm_cond_signal, scm_cond_broadcast,
1520 scm_key_create, scm_key_delete, scm_setspecific, scm_getspecific,
1521 scm_thread_select): Removed. Replaced with scm_i_pthread
1522 functions as appropriate.
1523 (scm_in_guile, scm_outside_guile): Removed.
1524 (scm_t_guile_ticket, scm_leave_guile, scm_enter_guile): Return and
1525 take a ticket.
1526 (scm_with_guile, scm_without_guile, scm_i_with_guile_and_parent):
1527 New.
1528 (scm_i_frame_single_threaded): New.
1529 (scm_init_threads_default_dynamic_state): New.
1530 (scm_i_create_thread): Removed.
1531 (scm_make_fair_mutex, scm_make_fair_condition_variable): Removed.
1532 (scm_make_recursive_mutex): New.
1533 (scm_frame_critical_section): New.
1534 (SCM_CURRENT_THREAD, SCM_I_CURRENT_THREAD): Renamed former to
1535 latter, changed all uses.
1536 (scm_i_dynwinds, scm_i_setdynwinds, scm_i_last_debug_frame,
1537 scm_i_set_last_debug_frame): New, use them instead of scm_root
1538 stuff.
1539 (SCM_THREAD_LOCAL_DATA, SCM_SET_THREAD_LOCAL_DATA,
1540 scm_i_root_state_key,m scm_i_set_thread_data): Removed.
1541 (scm_pthread_mutex_lock, scm_frame_pthread_mutex_lock,
1542 scm_pthread_cond_wait, scm_pthread_cond_timedwait).
1543 (remqueue): Allow the removal of already removed cells. Indicate
1544 whether a real removal has happened.
1545 (scm_thread): Removed, replaced with scm_i_thread.
1546 (make_thread, init_thread_creatant): Removed.
1547 (cur_thread): Removed.
1548 (block_self, unblock_from_queue): New.
1549 (block, timed_block, unblock): Removed.
1550 (guilify_self_1, guilify_self_2, do_thread_exit,
1551 init_thread_key_once, init_thread_key,
1552 scm_i_init_thread_for_guile, get_thread_stack_base,
1553 scm_init_guile): New initialisation method.
1554 (scm_call_with_new_thread, scm_spawn_thread): Use it to simplify
1555 thread creation.
1556 (fair_mutex, fat_mutex, etc, fair_condvar, fat_condvar): Renamed
1557 "fair" to fat and implemented new semantics, including reliable
1558 interruption.
1559 (all_threads): Now a pointer to a scm_i_thread, not a SCM.
1560 (scm_threads_mark_stacks): Explicitly mark handle.
1561 (scm_std_select): Allow interruption by also selecting on the
1562 sleep_pipe.
1563 (scm_i_thread_put_to_sleep): Handle recursive requests for
1564 single-threadedness.
1565 (scm_threads_prehistory, scm_init_threads): Put current thread
1566 into guile mode via guileify_self_1 and guileify_self_2,
1567 respectively.
1568
1569 * fluid.h (SCM_FLUIDP): Deprecated.
1570
1571 * coop-threads.c: Removed.
1572
1573 * continuations.h, continuations.c (scm_with_continuation_barrier,
1574 scm_c_with_continuation_barrier, scm_i_with_continuation_barrier):
1575 New.
1576
1577 * async.h, async.c (scm_i_setup_sleep, scm_i_reset_sleep): New.
1578 (async_mutex): New.
1579 (scm_async_click): Protected with async_mutex. Do not deal with
1580 signal_asyncs, which are gone. Set cdr of handled async cell to
1581 #f.
1582 (scm_i_queue_async_cell): Protected with async_mutex. Interrupt
1583 current sleep.
1584 (scm_system_async_mark_for_thread): Do not use scm_current_thread
1585 since that might not work during early initialization.
1586
1587 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS, SCM_REDEFER_INTS,
1588 SCM_REALLOW_INTS): Deprecated by moving into deprecated.h and
1589 deprecated.c. Replaced all uses with SCM_CRITICAL_SECTION_START
1590 and SCM_CRITICAL_SECTION_END.
1591 (SCM_ENTER_A_SECTION, SCM_EXIT_A_SECTION): Removed. Replaced with
1592 SCM_CRITICAL_SECTION_START/END.
1593
1594 * Makefile.am (modinclude_HEADER): Removed threads-plugin.h.
1595 (libguile_la_SOURCES): Added null-threads.c
1596 (EXTRA_libguile_la_SOURCES): Removed pthread-threads.c and
1597 threads-plugin.c.
1598 * pthread-threads.c, threads-plugin.c, threads-plugin.h: Removed.
1599
1600 * root.h, root.c (scm_tc16_root, SCM_ROOTP, SCM_ROOT_STATE,
1601 scm_root_state, scm_stack_base, scm_save_regs_gc_mark,
1602 scm_errjmp_bad, scm_rootcont, scm_dynwinds, scm_progargs,
1603 scm_last_debug_frame, scm_exitval, scm_cur_inp, scm_outp,
1604 scm_cur_err, scm_cur_loadp, scm_root, scm_set_root,
1605 scm_make_root): Removed or deprecated. Replaced with references
1606 to the current thread, dynamic state, continuation barrier, or
1607 some fluid, as appropriate.
1608 (root_mark, root_print): Removed.
1609 (scm_internal_cwdr): Reimplemented guts with
1610 scm_frame_current_dynamic_state and
1611 scm_i_with_continuation_barrier.
1612 (scm_dynamic_root): Return current continuation barrier.
1613
1614
1615 2005-02-28 Marius Vollmer <mvo@zagadka.de>
1616
1617 * socket.c (scm_setsockopt): Handle IP_ADD_MEMBERSHIP and
1618 IP_DROP_MEMBERSHIP options. Also, reorganized the code a bit for
1619 cleanliness.
1620 (scm_init_socket): Define IP_ADD_MEMBERSHIP and
1621 IP_DROP_MEMBERSHIP.
1622 Thanks to Greg Troxel!
1623
1624 2005-02-27 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1625
1626 * gh.h: Bugfix: Include <libguile.h> outside of the extern "C"
1627 block.
1628
1629 2005-02-25 Marius Vollmer <mvo@zagadka.de>
1630
1631 * hashtab.c (scm_i_rehash): Remove elements from old bucket vector
1632 so that no two weak alist vectors share a spine.
1633 (scm_hash_fn_create_handle_x): Deal with a possible rehashing
1634 during GC before inserting the new alist cell.
1635
1636 2005-02-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1637
1638 * hashtab.c (scm_i_rehash): Cope with the case that a GC modifies
1639 the hashtable.
1640 (scm_hash_fn_create_handle_x): Likewise.
1641 * vectors.h (SCM_I_SET_WVECT_TYPE): New, for use in scm_i_rehash.
1642
1643 2005-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1644
1645 * unif.c (prototype_to_type): Bugfix: Don't compare prototype to
1646 the prototypical examples mentioned in the old reference manual.
1647 Instead keep the old semantics of dispatching on type. (Yes, this
1648 is extremely ugly, but the whole point of keeping the deprecated
1649 interface is not to break old code.)
1650
1651 2005-02-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1652
1653 * deprecated.h (SCM_ARRAY_DIMS): Rename scm_i_attay_dims -->
1654 scm_i_array_dims.
1655
1656 2005-01-28 Kevin Ryde <user42@zip.com.au>
1657
1658 * numbers.c (scm_ash): Rewrite using shifts, much faster than
1659 integer-expt and multiply/divide. Inexacts and fractions no longer
1660 supported (they happened to work before for left shifts, but not
1661 right). Don't really need inexacts and fractions, since ash is
1662 documented as a "bitwise operation", and all the rest of those only
1663 take exact integers.
1664
1665 2005-01-27 Han-Wen Nienhuys <hanwen@xs4all.nl>
1666
1667 * gc-card.c (scm_i_card_statistics): map structs, closures and
1668 subrs to one tag.
1669
1670 * gc.c (s_scm_gc_live_object_stats): return alist, not hashtable.
1671 (tag_table_to_type_alist): ignore unknown types.
1672
1673 * gc-segment.c (scm_i_all_segments_statistics): new function.
1674 (scm_i_heap_segment_statistics): new function
1675
1676 * gc.c (s_scm_gc_live_object_stats): new GUILE callable: return
1677 statistics on the number of live objects of each type.
1678
1679 * gc-card.c (scm_i_tag_name): new function.
1680 (scm_i_card_statistics): new function.
1681
1682 2005-01-24 Kevin Ryde <user42@zip.com.au>
1683
1684 * posix.c (scm_setlocale): Force errno=EINVAL for an error, since
1685 POSIX and C99 don't document errno being set. Reported by Bruno
1686 Haible.
1687 (scm_flock): Update docstring from manual.
1688
1689 * random.c (scm_i_init_rstate): Compare w to -1 not 0xffffffffUL, now
1690 that it's an scm_t_int32. Otherwise gcc 3.4 says it's always false on
1691 a 64-bit system.
1692
1693 * scmsigs.c (scm_sigaction_for_thread): Use scm_to_long for
1694 sa_handler, needs to be a long on 64-bit systems where int is only 32
1695 bits.
1696
1697 2005-01-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1698
1699 * environments.c (obarray_enter, obarray_replace): Call
1700 SCM_HASHTABLE_INCREMENT when adding a new entry.
1701
1702 * objects.c: Include goops.h for the scm_class_of prototype.
1703
1704 * hashtab.c (hashtable_size, HASHTABLE_SIZE_N): Restrict hashtable
1705 sizes to be smaller than the maximum lengths of vectors.
1706
1707 2005-01-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1708
1709 * ports.c, smob.c: Include "libguile/goops.h".
1710
1711 * objects.h, objects.c, goops.c, goops.h (scm_class_boolean,
1712 scm_class_char, scm_class_pair, scm_class_procedure,
1713 scm_class_string, scm_class_symbol,
1714 scm_class_procedure_with_setter, scm_class_primitive_generic,
1715 scm_class_vector, scm_class_null, scm_class_real,
1716 scm_class_complex, scm_class_integer, scm_class_fraction,
1717 scm_class_unknown, scm_port_class, scm_smob_class,
1718 scm_no_applicable_method, scm_class_of): Moved from objects to
1719 goops since they are only useable once goops has been loaded.
1720 (scm_classes_initialized): Removed.
1721 (scm_class_of): Do not check it.
1722 (create_standard_classes): Do not set it.
1723
1724 2005-01-17 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1725
1726 * objects.h, objects.c (scm_classes_initialized): New.
1727 (scm_class_of): Signal error when scm_classes_initialized is zero.
1728 * goops.c (create_standard_classes): Set scm_classes_initialized
1729 to one.
1730
1731 * random.c (scm_random_solid_sphere_x): Use
1732 scm_c_generalized_vector_length instead of
1733 scm_uniform_vector_length.
1734
1735 2005-01-16 Marius Vollmer <mvo@zagadka.de>
1736
1737 * script.c (scm_compile_shell_switches): Removed debugging output.
1738
1739 2005-01-15 Kevin Ryde <user42@zip.com.au>
1740
1741 * numbers.c (scm_logtest, scm_logbit_p, scm_integer_expt): Update
1742 docstrings from manual.
1743 * random.c (scm_random_solid_sphere_x): Update docstring from manual.
1744
1745 2005-01-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1746
1747 * random.c: Don't check for definedness of SCM_HAVE_T_INT64, check
1748 its value.
1749
1750 Implement u64 and s64 uniform numeric vectors with bignums when
1751 scm_t_uint64 and scm_t_int64 are not available.
1752
1753 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_take_u64vector,
1754 scm_array_handle_u64_elements,
1755 scm_array_handle_u64_writable_elements, scm_u64vector_elements,
1756 scm_u64vector_writable_elements): Do not define when scm_t_uint64
1757 is not available.
1758 (scm_take_s64vector, scm_array_handle_s64_elements,
1759 scm_array_handle_s64_writable_elements, scm_s64vector_elements,
1760 scm_s64vector_writable_elements): Likewise for scm_t_int64.
1761 (uvec_sizes, uvec_print, uvec_equalp): Use SCM bignums when
1762 scm_t_int64/scm_t_uint64 are not available.
1763 (uvec_mark): New, to mark the bignums.
1764 (alloc_uvec): Initialize bignums.
1765 (uvec_fast_ref): Return bignums directly.
1766 (scm_uint64_min, scm_uint64_max, scm_int64_min, scm_int64_max,
1767 assert_exact_integer): New.
1768 (uvec_fast_set): Use them to validate the bignums.
1769 (scm_init_srfi_4): Set mark function of smob when needed.
1770 Initialize scm_uint64_min, scm_uint64_max, scm_int64_min,
1771 scm_int64_max.
1772
1773 Recognize 1.4 -e syntax.
1774
1775 * script.c (sym_at, sym_atat, sym_main, all_symbols): New.
1776 (scm_compile_shell_switches): Use them to recognize and convert
1777 1.4 "-e" syntax.
1778
1779 2005-01-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1780
1781 * deprecated.h, deprecated.c, strings.h, strings.c: Turn all
1782 deprecated features that once were macros but are now functions
1783 back into macros.
1784
1785 2005-01-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1786
1787 * eval.c, debug.h (SCM_WARN_DEPRECATED): New debug option.
1788 * deprecation.c (scm_issue_deprecation_warning,
1789 scm_c_issue_deprecation_warning_fmt): Use it.
1790 (mode): Removed.
1791 (print_summary): New.
1792 (scm_init_deprecation): Initialize SCM_WARN_DEPRECATED instead of
1793 mode.
1794
1795 Deprecated SCM_ARRAY* macros.
1796
1797 * unif.h, unif.c, ramap.c, vectors.c, srfi-4.c, srfi-4.i.c
1798 (SCM_ARRAYP, SCM_I_ARRAYP): Renamed former to latter internal
1799 version. Changed all uses.
1800 (scm_tc16_array, scm_i_tc16_array,
1801 scm_tc16_enclosed_array, scm_i_tc16_enclosed_array,
1802 SCM_ARRAY_FLAG_CONTIGUOUS, SCM_I_ARRAY_FLAG_CONTIGUOUS,
1803 SCM_ENCLOSE_ARRAYP, SCM_I_ENCLOSE_ARRAYP,
1804 SCM_ARRAY_NDIM, SCM_I_ARRAY_NDIM,
1805 SCM_ARRAY_CONTP, SCM_I_ARRAY_CONTP,
1806 SCM_ARRAY_MEM, SCM_I_ARRAY_MEM,
1807 SCM_ARRAY_V, SCM_I_ARRAY_V,
1808 SCM_ARRAY_BASE, SCM_I_ARRAY_BASE,
1809 SCM_ARRAY_DIMS, SCM_I_ARRAY_DIMS,
1810 scm_t_array, scm_i_t_array): Likewise.
1811 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
1812 Moved from unif.h to unif.c.
1813 (scm_c_array_rank): New.
1814 (scm_array_rank): Reimplement using it.
1815
1816 * deprecated.h, deprecated.c (SCM_ARRAYP, SCM_ARRAY_NDIM,
1817 SCM_ARRAY_CONTP, SCM_ARRAY_MEM, SCM_ARRAY_V, SCM_ARRAY_BASE,
1818 SCM_ARRAY_DIMS, scm_t_array): New deprecated versions.
1819
1820 2005-01-11 Marius Vollmer <mvo@zagadka.de>
1821
1822 * ramap.c: Replace uses of scm_make_ra with scm_i_make_ra.
1823 (GVREF, GVSET): New abbreviations. Use them everywhere instead of
1824 scm_c_generalized_vector_ref and scm_cvref, and
1825 scm_c_generalized_vector_set_x, respectively.
1826 (RVREF, IVDEP, BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
1827 UNARY_ELTS_CODE, UNARY_PAIR_ELTS_CODE): Removed since unused.
1828
1829 * unif.h, unif.c (indices_to_pos, scm_array_handle_pos): Renamed
1830 former to latter and made public. Changed all uses.
1831 (scm_i_make_ra): Made public, changed tag param to enclosed flag.
1832 (scm_make_ra): Deprecated, changed all uses to scm_i_make_ra.
1833 (scm_i_shap2ra): New internal version of scm_shap2ra.
1834 (scm_shap2ra): Deprecated, changed all uses to scm_i_shap2ra.
1835 (scm_i_ra_set_contp): New internal version of scm_ra_set_contp.
1836 (scm_ra_set_contp): Deprecated, changed all uses to
1837 scm_i_ra_set_contp.
1838 (scm_cvref, scm_aind, scm_raprin1): Deprecated.
1839
1840 2005-01-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1841
1842 * eval.c (scm_eval): Added example to docstring. Thanks to Issac
1843 Trotts!
1844
1845 * unif.c (scm_list_to_typed_array): Allow the specification of the
1846 upper bound as well. This is needed for empty arrays.
1847 (l2ra): Give needed number of elements in error message.
1848 (scm_i_print_array): Print length information for arrays that need
1849 it.
1850 (scm_i_read_array): Parse it.
1851
1852 * deprecated.h, deprecated.c (SCM_CHARS, SCM_UCHARS, SCM_LENGTH,
1853 scm_i_object_chars, scm_i_object_length): Brought back from the
1854 dead.
1855
1856 2005-01-10 Marius Vollmer <mvo@zagadka.de>
1857
1858 * ramap.c: Replaced single-index uses of scm_array_set_x with
1859 scm_c_generalized_vector_set_x.
1860
1861 * unif.c (scm_array_rank, scm_array_dimensions,
1862 scm_shared_array_offset, scm_shared_array_increments,
1863 scm_array_ref, scm_array_set_x): Use scm_t_array_handle operations
1864 to simplify code and make it more general.
1865 (scm_shared_array_root): Work with all kinds of arrays, including
1866 naked vectors.
1867 (indices_to_pos): New.
1868 (scm_make_shared_array): Use it instead of scm_aind; use handle
1869 for oldra.
1870
1871 2005-01-10 Kevin Ryde <user42@zip.com.au>
1872
1873 * posix.c (scm_mkstemp): Update docstring from manual.
1874
1875 * stime.c (scm_mktime): Missing default errno=EINVAL from prev change.
1876
1877 2005-01-09 Marius Vollmer <mvo@zagadka.de>
1878
1879 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_i_uniform_vector_ref_proc,
1880 scm_i_uniform_vector_set_proc): New.
1881 (u8ref, u8set, s8ref, s8set, etc): New.
1882 (uvec_reffers, uvec_setters): New.
1883 (uvec_to_list): Use generic scm_array_handle_ref instead of
1884 uvec_fast_ref since scm_array_handle_ref should be faster now.
1885 (coerce_to_uvec, scm_c_uniform_vector_ref,
1886 scm_c_uniform_vector_set_x): Likewise.
1887
1888 * unif.h, unif.c, inline.h (scm_i_t_array_ref, scm_i_t_array_set):
1889 New.
1890 (scm_t_array_handle): Added ref, set, elements and
1891 writable_elements for fast inline operation of
1892 scm_array_handle_ref and scm_array_handle_set.
1893 (scm_array_handle_ref, scm_array_handle_set): Moved to inline.h
1894 and replaced with inline code that simply calls the ref/set
1895 members of the handle.
1896 (enclosed_ref, vector_ref, string_ref, bitvector_ref, memoize_ref,
1897 enclosed_set, vector_set, string_set, bitvector_set, memoize_set):
1898 New.
1899 (scm_array_handle_get): Initialize ref/set fields to memoize_ref
1900 and memoize_set.
1901 (scm_bitvector_fill_x, scm_bitvector_to_list, scm_bit_count,
1902 scm_bit_position, scm_bit_set_star_x, scm_bit_count_star,
1903 scm_bit_invert_x): Correctly multiply index with increment in the
1904 general case.
1905
1906 * unif.c (scm_array_handle_set): Correctly execute only one
1907 alternative. D'Oh!
1908 (scm_list_to_typed_array, l2ra): Use scm_t_array_handle to fill
1909 the array; this covers all cases with much simpler code.
1910
1911 * srfi-4.c (scm_uniform_element_size): Deprecated implementation
1912 as well.
1913
1914 2005-01-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1915
1916 * srfi-4.c (uvec_type): New.
1917 (uvec_to_list, uvec_ref, uvec_set_x, scm_c_uniform_vector_ref,
1918 scm_c_uniform_vector_x): Use it to get concrete type.
1919
1920 * unif.h (scm_t_array_dim): Changed type of members to ssize_t, to
1921 fit the docs.
1922
1923 * unif.c (ra2l): Handle zero rank arrays.
1924 (scm_i_print_array): Print zero rank arrays specially.
1925 (tag_to_type): Return #t for an empty tag, not the empty symbol.
1926 (scm_i_read_array): Allow zero rank arrays.
1927
1928 2005-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1929
1930 * hashtab.h, hashtab.c (SCM_HASHTAB_BUCKET_LOC): Removed.
1931 (scan_weak_hashtables): Rewrote its use with SCM_HASHTAB_BUCKET
1932 and SCM_SET_HASHTAB_BUCKET.
1933
1934 * print.h, print.c (scm_print_state, SCM_PRINT_STATE_LAYOUT):
1935 Removed ref_stack field.
1936 (PSTATE_STACK_REF, PSTATE_STACK_SET): New, for accessing the stack
1937 of a print state. Use them everywhere instead of ref_stack.
1938
1939 * srfi-4.h (scm_uniform_element_size): Deprecated for real.
1940
1941 * srfi-4.c: Include deprecation.h.
1942
1943 * vectors.h, vectors.c, unif.h, unif.c, deprecated.h,
1944 deprecated.c, eq.c
1945 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Removed.
1946 (scm_vector_elements, scm_vector_writable_elements,
1947 scm_generalized_vector_get_handle): Moved to vectors.[hc] from
1948 unif.[hc].
1949 (SCM_SIMPLE_VECTOR_LOC): Removed.
1950 (SCM_VECTOR_MAX_LENGTH, SCM_VECTOR_LENGTH, SCM_VELTS,
1951 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET,
1952 scm_vector_equal_p): Moved from vectors.[hc] to deprecated.[hc].
1953 (scm_vector_equal_p, scm_i_vector_equal_p): Renamed former to
1954 latter. Changed use in eq.c.
1955
1956 2005-01-07 Marius Vollmer <mvo@zagadka.de>
1957
1958 Make the uniform vector routines also deal with one dimensional
1959 arrays.
1960
1961 * srfi-4.c (SCM_IS_UVEC): New, use it instead of
1962 SCM_SMOB_PREDICATE in this file.
1963 (is_uvec): Also recognize one-dimensional uniform numeric arrays
1964 of the right type.
1965 (scm_is_uniform_vector): Likewise.
1966 (uvec_fast_ref): Made BASE param const.
1967 (uvec_writable_elements, uvec_elements): New.
1968 (uvec_to_list, uvec_ref, uvec_set_x, uvec_length,
1969 scm_c_uniform_vector_length, scm_c_uniform_vector_ref,
1970 scm_c_uniform_set_x): Use them to also deal with one-dimensional
1971 arrays.
1972 (scm_uniform_vector_ref, scm_uniform_vector_set_x): Deprecate old
1973 argument convention.
1974 (scm_uniform_vector_to_list): Let uvec_to_list do all the
1975 checking.
1976 (scm_uniform_vector_length): Use uvec_length.
1977
1978 2005-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1979
1980 * srfi-4.h, srfi-4.c (scm_c_uniform_vector_element_size,
1981 scm_c_uniform_vector_size): Removed.
1982 (scm_array_handle_uniform_element_size): New.
1983
1984
1985 * unif.h (scm_array_handle_ref, scm_array_handle_set): Changed
1986 type of POS parameter to be signed, positions can be negative.
1987 (scm_array_handle_release): New, changed all uses of
1988 scm_t_array_handle to properly call it.
1989 (scm_vector_get_handle, scm_generalized_vector_get_handle):
1990 Renamed former to latter, changed all uses.
1991
1992 2005-01-05 Marius Vollmer <mvo@zagadka.de>
1993
1994 Updated bitvector routines to also use scm_t_array_handles.
1995
1996 * unif.h (scm_bitvector_elements,
1997 scm_bitvector_writable_elements): Use a scm_t_array_handle and
1998 deliver offset, length and increment to caller. Changed all uses.
1999 (scm_bitvector_release_elements,
2000 scm_frame_bitvector_release_elements,
2001 scm_bitvector_release_writable_elements,
2002 scm_frame_bitvector_release_writable_elements): Removed.
2003 (scm_array_handle_bit_elements,
2004 scm_array_handle_bit_writable_elements,
2005 scm_array_handle_bit_elements_offset): New.
2006 (scm_make_typed_array): The special value for non-initialized
2007 arrays is now SCM_UNSPECIFIED. The old special value SCM_BOOL_F
2008 was a valid value to fill bitvectors with, so it can't really be
2009 specialed out.
2010
2011 2005-01-04 Kevin Ryde <user42@zip.com.au>
2012
2013 * stime.c (scm_strftime): Free t.tm_zone produced by bdtime2c.
2014 Reported by Bill Schottstaedt.
2015
2016 2005-01-02 Marius Vollmer <mvo@zagadka.de>
2017
2018 * sort.c (quicksort): Added INC parameter for non-contigous
2019 vectors.
2020 (quicksort1): New, for contigous vectors. Both functions are
2021 generated from the same code by including "quicksort.i.c".
2022 (scm_restricted_vector_sort_x): Call one of quicksort and
2023 quicksort1, depending on increment of vector.
2024 (scm_sort): Simply call scm_sort_x on a copy of the list or
2025 vector.
2026 (scm_merge_vector_x, scm_merge_vector_step): Changed indices to
2027 size_t, added inc parameter.
2028 (scm_stable_sort_x): Allocate temporary storage as Scheme vector
2029 so that it doesn't leak.
2030 (scm_stable_sort): Simply call scm_stable_sort_x on a copy of the
2031 list or vector.
2032
2033 * ramap.c (scm_array_map_x): Do not try to convert fill value
2034 before filling, any necessary conversion is done while storing.
2035
2036 * gc-card.c (scm_i_sweep_card): Call scm_i_vector_free instead of
2037 doing it inline.
2038
2039 * hashtab.c, hashtab.h (SCM_HASHTABLE_BUCKETS): Removed.
2040 (SCM_HASHTABLE_BUCKET, SCM_HASHTABLE_BUCKET_LOC): New. Replaced
2041 all uses of SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
2042
2043 * tags.h, weaks.c, vports.c, hashtab.c, convert.c, sort.c,
2044 convert.c, convert.h, convert.i.c, deprecated.c, environments.c,
2045 eval.c, filesys.c, fluids.c, gc-mark.c, gh.h, gh_data.c, goops.c,
2046 hash.c, init.c, libguile_la-arrays.loT, modules.c, net_db.c,
2047 objects.c, ports.c, posix.c, print.c, random.c, read.c,
2048 regex-posix.c, scmsigs.c, socket.c, stime.c, symbols.c: Use new
2049 vector elements API or simple vector API, as appropriate. Removed
2050 SCM_HAVE_ARRAYS ifdefery. Replaced all uses of
2051 SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
2052
2053 * srfi-4.h, srfi-4.c,
2054 srfi-4.i.c (scm_array_handle_uniform_elements,
2055 scm_array_handle_uniform_writable_elements,
2056 scm_uniform_vector_elements,
2057 scm_uniform_vector_writable_elements):
2058 (scm_<foo>vector_elements, scm_<foo>vector_writable_elements): Use
2059 scm_t_array_handle, deliver length and increment.
2060 (scm_array_handle_<foo>_elements,
2061 scm_array_handle_<foo>_writable_elements): New.
2062
2063 * gen-scmconfig.h.in (SCM_I_GSC_HAVE_ARRAYS): Removed.
2064 * gen-scmconfig.c: Hard code SCM_HAVE_ARRAYS to "1".
2065
2066 * unif.h, unif.c (scm_t_array_handle, scm_array_get_handle,
2067 scm_array_handle_rank, scm_array_handle_dims, scm_array_handle_ref
2068 scm_array_handle_set, scm_array_handle_elements
2069 scm_array_handle_writable_elements, scm_vector_get_handle): New.
2070 (scm_make_uve, scm_array_prototype, scm_list_to_uniform_array,
2071 scm_dimensions_to_uniform_array): Deprecated for real.
2072 (scm_array_p, scm_i_array_p): Use latter for SCM_DEFINE since
2073 snarfing wont allow a mismatch between C and Scheme arglists.
2074 (scm_make_shared_array, scm_enclose_array): Correctly use
2075 scm_c_generalized_vector_length instead of
2076 scm_uniform_vector_length.
2077
2078 * validate.h (SCM_VALIDATE_VECTOR,
2079 SCM_VALIDATE_VECTOR_OR_DVECTOR): use scm_is_simple_vector instead
2080 of SCM_VECTORP.
2081
2082 * weaks.h, weaks.c: Use new internal weak vector API from
2083 vectors.h.
2084
2085 * Makefile.am (libguile_la_SOURCES, DOT_X_FILES, DOT_DOC_FILES,
2086 EXTRA_libguile_la_SOURCES): Changed ramap.c and unif.c from being
2087 'extra' to being regular sources.
2088 (noinst_HEADERS): Added quicksort.i.c.
2089 * quicksort.i.c: New file.
2090
2091 * vectors.h, vector.c (SCM_VECTORP, SCM_VECTOR_LENGTH, SCM_VELTS,
2092 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET): Deprecated
2093 and reimplemented. Replaced all uses with scm_vector_elements,
2094 scm_vector_writable_elements, or SCM_SIMPLE_VECTOR_*, as
2095 appropriate.
2096 (scm_is_simple_vector, SCM_SIMPLE_VECTOR_LENGTH,
2097 SCM_SIMPLE_VECTOR_REF, SCM_SIMPLE_VECTOR_SET,
2098 SCM_SIMPLE_VECTOR_LOC): New.
2099 (SCM_VECTOR_BASE, SCM_SET_VECTOR_BASE, SCM_VECTOR_MAX_LENGTH,
2100 SCM_MAKE_VECTOR_TAG, SCM_SET_VECTOR_LENGTH,
2101 SCM_VELTS_AS_STACKITEMS, SCM_SETVELTS, SCM_GC_WRITABLE_VELTS):
2102 Removed.
2103 (scm_vector_copy): New.
2104 (scm_vector_elements, scm_vector_writable_elements): Use
2105 scm_t_array_handle, deliver length and increment. Moved to
2106 unif.h. Changed all uses.
2107 (scm_vector_release_elements,
2108 scm_vector_release_writable_elements,
2109 (scm_frame_vector_release_elements,
2110 scm_frame_vector_release_writable_elements): Removed.
2111 (SCM_I_IS_VECTOR, SCM_I_VECTOR_ELTS, SCM_I_VECTOR_WELTS,
2112 SCM_I_VECTOR_LENGTH, scm_i_vector_free): New internal API.
2113 (SCM_I_WVECTP SCM_I_WVECT_LENGTH SCM_I_WVECT_VELTS
2114 SCM_I_WVECT_GC_WVELTS SCM_I_WVECT_TYPE SCM_I_WVECT_GC_CHAIN
2115 SCM_I_SET_WVECT_GC_CHAIN, scm_i_allocate_weak_vector): New, for
2116 weak vectors.
2117
2118 2004-12-29 Marius Vollmer <mvo@zagadka.de>
2119
2120 No longer use creators to specify the type of an array. Creators
2121 expose the fact that arrays are wrapped around vectors, but that
2122 might change.
2123
2124 * srfi-4.h (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector,
2125 scm_i_proc_make_u16vector, scm_i_proc_make_s16vector,
2126 scm_i_proc_make_u32vector, scm_i_proc_make_s32vector,
2127 scm_i_proc_make_u64vector, scm_i_proc_make_s64vector,
2128 scm_i_proc_make_f32vector, scm_i_proc_make_f64vector,
2129 scm_i_proc_make_c32vector, scm_i_proc_make_c64vector,
2130 uvec_proc_vars): Removed.
2131 (scm_i_generalized_vector_creator): Removed.
2132 (scm_i_generalized_vector_type): New.
2133
2134 * unif.h, unif.c (scm_typed_array_p, scm_make_array,
2135 scm_make_typed_array, scm_array_type, scm_list_to_array,
2136 scm_list_to_typed_array, scm_is_array, scm_is_typed_array): New.
2137 (scm_array_creator): Removed.
2138 (scm_array_p): Deprecated second PROT argument.
2139 (scm_dimensions_to_uniform_array, scm_list_to_uniform_array):
2140 Deprecated, reimplemented in terms of scm_make_typed_array and
2141 scm_list_to_typed_array.
2142 (scm_i_proc_make_vector, scm_i_proc_make_string,
2143 scm_i_proc_make_bitvector): Removed.
2144 (type_creator_table, init_type_creator_table, type_to_creator,
2145 make_typed_vector): New.
2146 (scm_i_convert_old_prototype): Removed.
2147 (prototype_to_type): New.
2148 (scm_make_uve): Deprecated, reimplemented using make_typed_vector.
2149 (scm_array_dimensions): Use scm_list_1 instead of scm_cons for
2150 minor added clarity.
2151 (scm_make_shared_array, scm_ra2contig): Use make_typed_vector
2152 instead of scm_make_uve.
2153 (tag_creator_table, scm_i_tag_to_creator): Removed.
2154 (tag_to_type): New.
2155 (scm_i_read_array): Use scm_list_to_typed_array instead of
2156 scm_list_to_uniform_array.
2157
2158 2004-12-27 Marius Vollmer <mvo@zagadka.de>
2159
2160 * unif.h, unif.c (scm_bitvector_elements): Made return value "const".
2161 (scm_bitvector_writable_elements): New.
2162 (scm_bitvector_release, scm_bitvector_release_elements):
2163 Renamed former to latter. Added explicit call to
2164 scm_remember_upto_here_1.
2165 (scm_frame_bitvector_release,
2166 scm_frame_bitvector_release_elements): Renamed former to latter.
2167 (scm_bitvector_release_writable_elements,
2168 scm_bitvector_release_writable_elements): New.
2169 Changed all uses as required by the changes above.
2170
2171 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_uniform_vector_elements,
2172 scm_u8vector_elements, etc): Made return value "const".
2173 (scm_uniform_vector_writable_elements,
2174 scm_u8vector_writable_elements, etc): New.
2175 (scm_uniform_vector_release, scm_uniform_vector_release_elements):
2176 Renamed former to latter. Added explicit call to
2177 scm_remember_upto_here_1.
2178 (scm_frame_uniform_vector_release,
2179 scm_frame_uniform_vector_release_elements): Renamed former to latter.
2180 (scm_uniform_vector_release_writable_elements,
2181 scm_frame_uniform_vector_release_writable_elements): New. Takes
2182 crown of longest identifier yet.
2183 Changed all uses as required by the changes above.
2184
2185 * vectors.h, vectors.c (scm_c_vector_set_x): Make return type
2186 void.
2187 (scm_is_vector, scm_vector_p, scm_vector_length,
2188 scm_c_vector_length, scm_vector_ref, scm_c_vector_ref,
2189 scm_vector_set_x, scm_c_vector_set_x, scm_vector_to_list,
2190 scm_vector_move_left_x, scm_vector_move_right_x,
2191 scm_vector_fill_x): handle one-dimensional arrays.
2192 (scm_vector_elements, scm_vector_release_elements,
2193 scm_vector_frame_release_elements, scm_vector_writable_elements,
2194 scm_vector_release_writable_elements,
2195 scm_vector_frame_release_writable_elements): New.
2196 (scm_list_to_vector, scm_vector_to_list, scm_vector_fill,
2197 scm_vector_move_left_x, scm_vector_move_right_x): Use them.
2198
2199 * ramap.c (scm_ramapc, scm_raeql): Use
2200 scm_c_generalized_vector_length instead of
2201 scm_uniform_vector_length.
2202 (scm_ramap, rafe): Use scm_c_vector_ref instead of SCM_VELTS. use
2203 scm_c_generalized_vector_ref instead of scm_uniform_vector_ref.
2204
2205 2004-12-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2206
2207 * continuations.h, continuations.c (scm_t_contregs): New 'offset'
2208 member for relocating debug frames.
2209 (scm_make_continuation): Set it.
2210
2211 * stacks.c (read_frame, read_frames, scm_make_stack,
2212 scm_last_stack_frame, scm_stack_id): Use the new 'offset' member
2213 of continuations instead of calculating the offset ourselves.
2214 Relocate 'vect' member of scm_t_debug_frame.
2215
2216 2004-12-16 Kevin Ryde <user42@zip.com.au>
2217
2218 * ramap.c (scm_array_map_x): Check for at least one source argument.
2219
2220 2004-12-14 Kevin Ryde <user42@zip.com.au>
2221
2222 * srfi-13.c (string-any, string-every): Use a scheme wrapper around
2223 the C code so for the final call to the predicate procedure is a tail
2224 call, per SRFI-13 spec.
2225
2226 2004-12-10 Kevin Ryde <user42@zip.com.au>
2227
2228 * eq.c (scm_eq_p, scm_eqv_p, scm_equal_p): Update docstrings from
2229 recent revision to the reference manual.
2230
2231 * numbers.c (scm_modulo): Amend fixme comment about negative divisor
2232 with "%", C99 says it's well-defined.
2233
2234 * socket.c (scm_from_ipv6): Just use mpz_import. Don't bother trying
2235 to fit scm_from_ulong_long, since that uses mpz_import anyway. Don't
2236 bother trying to fit scm_from_ulong, not really worth the trouble if
2237 addresses are more than 4 bytes usually.
2238
2239 2004-11-30 Kevin Ryde <user42@zip.com.au>
2240
2241 * gc_os_dep.c (NetBSD): Test __m68k__ and __arm__ as well as m68k and
2242 arm32. Reported by Greg Troxel.
2243
2244 2004-11-14 mvo <mvo@zagadka.de>
2245
2246 * unif.c, unif.h (scm_i_cvref): Made non-static for ramap.c.
2247
2248 * Makefile.am (INCLUDES): It is "@LTDLINCL@", not "@LTDLINC@".
2249
2250 2004-11-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2251
2252 Enclosed arrays are now their own smob. This has been done to
2253 make the code more explicit about them and to prepare for the time
2254 when generalized vectors include arbitrary one-dimensional
2255 arrays. (Uptonow, enclosed arrays have been recognized by their
2256 use of an array as their storage 'vector'. When all generalized
2257 vectors are allowed as storage, including one-dimensional arrays,
2258 this will no longer work.)
2259
2260 * unif.h, unif.c: (scm_tc16_enclosed_array, SCM_ENCLOSED_ARRAYP):
2261 New.
2262 (exactly_one_third, singp): Removed.
2263 (scm_array_p, scm_array_dimensions, scm_shared_array_root,
2264 scm_shared_array_offset, scm_shared_array_increments): Handle
2265 enclosed arrays explicitely.
2266 (scm_array_rank): Likewise. Also, do not return zero for
2267 non-arrays, signal an error instead since arrays with rank zero do
2268 exist.
2269 (scm_i_make_ra): New, for specifying the tag of the new array.
2270 (scm_make_enclosed_array): Use it.
2271 (scm_make_ra): Reimplemented in terms of scm_i_make_ra.
2272 (scm_make_shared_array): Use scm_c_generalized_vector_length
2273 instead of scm_uniform_vector_length.
2274 (scm_array_in_bounds_p): Rewritten to be much cleaner.
2275 (scm_i_cvref): New, doing the job of scm_cvref.
2276 (scm_cvref): Use scm_i_cvref.
2277 (scm_array_ref): Do not accept non-arrays when no indices are
2278 given. Use scm_i_cvref to do the actual access.
2279 ("uniform-array-set1"): Do not register.
2280 (scm_array_set_x, scm_uniform_array_read_x,
2281 scm_uniform_array_write): Handle enclosed arrays explicitly.
2282 (ra2l): Use scm_i_cvref instead of scm_uniform_vector_ref to also
2283 handle enclosed arrays.
2284 (scm_array_to_list): Handle enclosed arrays explicitly.
2285 (rapr1): Removed.
2286 (scm_i_print_array_dimension): Use scm_i_cvref to also handle
2287 enclosed arrays.
2288 (scm_i_print_enclosed_array): New.
2289 (tag_proto_table, tag_creator_table): Renamed former to latter.
2290 Added "a" and "b" for strings and bitvectors, resp.
2291 (scm_i_tag_to_prototype, scm_i_tag_to_creator): Renamed former to
2292 latter. Tag "a" is in the table now, no need to handle it as a
2293 legacy tag.
2294 (scm_raprin1): Just call scm_iprin1.
2295 (scm_array_creator, scm_array_prototype): Handle enclosed arrays
2296 explicitly.
2297 (scm_init_unif): Initialize scm_tc16_enclosed_array smob.
2298 Use scm_i_print_array as printer for scm_tc16_array.
2299
2300 2004-11-10 Marius Vollmer <mvo@zagadka.de>
2301
2302 * ramap.c (cind): Changed second arg to be pointer to long instead
2303 of uniform vector.
2304 (scm_ramapc): Allocate index vector with scm_malloc and not as
2305 uniform vector. Wrap it in a frame so that it gets properly freed.
2306 (scm_array_index_map_x): Likewise.
2307
2308 * unif.c: Changed all uses of scm_array_prototype to
2309 scm_array_creator. (scm_i_get_old_prototype): Signal error when no
2310 prototype is known.
2311 (scm_uniform_array_read_x, scm_uniform_array_write): Reimplemented
2312 in terms of scm_uniform_vector_read_x and
2313 scm_uniform_vector_write, respectively. Strings and
2314 bitvector support has been dropped.
2315
2316 * srfi-4.h, srfi-4.c: Do not include <libguile.h>, include the
2317 needed files directly. Include config.h, <unistd.h> and <io.h>
2318 when available.
2319 (scm_uniform_vector_read_x, scm_uniform_vector_write): New.
2320
2321 2004-11-09 Marius Vollmer <mvo@zagadka.de>
2322
2323 * gh_data.c (gh_uniform_vector_length): Properly use
2324 scm_c_uniform_vector_length instead of scm_uniform_vector_length.
2325
2326 2004-11-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2327
2328 * srfi-4.h (scm_c_uniform_vector_ref, scm_c_uniform_vector_set_x):
2329 New.
2330 (scm_i_uniform_vector_creator): Removed.
2331 (scm_i_generalized_vector_creator): New.
2332 (scm_uniform_vector_length, scm_uniform_element_size): Do not
2333 handle generalized vectors, only uniform numeric vectors.
2334 (alloc_uvec): Do length check here...
2335 (make_uvec): ...but not here.
2336 (coerce_to_uvec): Use new generalized vector functions to handle
2337 all kinds of vectors in one go.
2338
2339 * tags.h (scm_tc7_bvect): Renamed to scm_tc7_unused7, renaming the
2340 remaining scm_tc7_unused tags to get a neatly ordered list.
2341
2342 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c: Do no
2343 longer handle scm_tc7_bvect bitvectors.
2344
2345 * ramap.c: Use the new generalized vector functions to handle all
2346 vector like things.
2347
2348 * vectors.h, vectors.c (scm_is_vector, scm_c_vector_length,
2349 scm_c_vector_ref, scm_c_vector_set_x, scm_generalized_vector_p,
2350 scm_generalized_vector_length, scm_generalized_vector_ref,
2351 scm_generalized_vector_set_x, scm_generalized_vector_to_list,
2352 scm_is_generalized_vector, scm_c_generalized_vector_length,
2353 scm_c_generalized_vector_ref, scm_c_generalized_vector_set_x):
2354 New.
2355
2356 * unif.h, unif.c (scm_bitvector_p, scm_bitvector,
2357 scm_make_bitvector, scm_bitvector_length, scm_bitvector_ref,
2358 scm_bitvector_set_x, scm_list_to_bitvector, scm_bitvector_to_list,
2359 scm_bitvector_fill_x, scm_is_bitvector, scm_c_make_bitvector,
2360 scm_c_bitvector_length, scm_c_bitvector_ref,
2361 scm_c_bitvector_set_x, scm_bitvector_elements,
2362 scm_bitvector_release, scm_frame_bitvector_release,
2363 scm_tc16_bitvector, bitvector_free, bitvector_print,
2364 bitvector_equalp, count_ones, find_first_one): New.
2365 (scm_bit_count, scm_bit_position, scm_bit_set_star_x,
2366 scm_bit_count_star, scm_bit_invert_x, scm_istr2bve): Rewritten
2367 using the new C API for bitvectors and maybe count_ones or
2368 find_first_one, as appropriate.
2369 (SCM_I_MAX_LENGTH, SCM_BITVECTOR_P, SCM_BITVECTOR_BASE,
2370 SCM_SET_BITVECTOR_BASE, SCM_BITVECTOR_MAX_LENGTH,
2371 SCM_BITVECTOR_LENGTH, SCM_MAKE_BITVECTOR_TAG,
2372 SCM_SET_BITVECTOR_LENGTH): Removed. Replaced all uses with the
2373 new functions from above.
2374 (scm_i_proc_make_vector, scm_i_proc_make_string,
2375 scm_i_proc_make_bitvector): Made non-static for use in
2376 scm_i_generalized_vector_creator.
2377 (scm_make_u1vector): Removed, replaced by scm_make_bitvector.
2378 (scm_make_uve): Validate that the created object is a generalized
2379 vector.
2380 (scm_i_legacy_tag): Removed.
2381 (scm_i_print_array): Do it here.
2382 (scm_raprin1): Only print enclosed arrays.
2383
2384 * Makefile.am (DOT_DOC_FILES): Added srfi-4.doc.
2385
2386 2004-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2387
2388 * srfi-4.c (make_uvec): Use SCM_I_SIZE_MAX instead of SIZE_MAX for
2389 added portability.
2390
2391 * chars.c (scm_charnames, scm_charnums): Added "sp" as an alias
2392 for "space". Thanks to Bruce Korb!
2393
2394 * rw.c (scm_read_string_x_partial): Bugfix, apply offset to dest
2395 only after dest has been set. Thanks to Hyper Division!
2396
2397 * gh_data.c (gh_uniform_vector_length): Use
2398 scm_uniform_vector_length instead of SCM_UVECTOR_LENGTH.
2399
2400 2004-11-03 Marius Vollmer <mvo@zagadka.de>
2401
2402 * unif.h (SCM_UVECTOR_BASE, SCM_SET_UVECTOR_BASE,
2403 SCM_UVECTOR_MAXLENGTH, SCM_UVECTOR_LENGTH, SCM_MAKE_UVECTOR_TAG,
2404 SCM_SET_UVECTOR_LENGTH): Removed.
2405
2406 2004-11-02 Marius Vollmer <mvo@zagadka.de>
2407
2408 Mac OS X and OpenBSD compatibility patches from Andreas Vögele.
2409 Thanks!
2410
2411 * backtrace.c (scm_display_backtrace_with_highlights): Join the
2412 first and the second line of the SCM_DEFINE macro call, since old
2413 preprocessors cannot handle definitions that are split into two
2414 lines.
2415
2416 * inline.h (scm_cell, scm_double_cell): Don't use C99 variable
2417 declarations.
2418
2419 * pairs.c (scm_i_chase_pairs): Replace scm_t_bits with
2420 scm_t_uint32 to fix the mismatch between the function declaration
2421 and definition.
2422
2423 * sort.c (quicksort): Don't use C99 variable declarations.
2424
2425 * srfi-4.c (uvec_fast_ref): Avoid a compiler warning by returning
2426 SCM_BOOL_F if no type matches.
2427
2428 * threads.c (thread_print): Cast a pointer to size_t when printing
2429 with scm_uintprint.
2430
2431 * unif.c (scm_i_tag_to_prototype): Make sure that "instead" gets
2432 defined.
2433 (scm_array_prototype): Deprecated.
2434
2435 2004-11-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2436
2437 * srfi-4.h, srfi-4.c (scm_frame_uniform_vector_release): New.
2438 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use it to get
2439 more efficient access to the u32vector.
2440
2441 * tags.h (scm_tc7_llvect, scm_tc7_uvect, scm_tc7_fvect,
2442 scm_tc7_dvect, scm_tc7_cvect, scm_tc7_svect, scm_tc7_byvect,
2443 scm_tc7_ivect): Renamed to scm_tc7_unused_1 to scm_tc7_unused_8.
2444
2445 * validate.h (SCM_VALIDATE_VECTOR_OR_DVECTOR): Accept f64vectors
2446 instead of the old-style dvectors.
2447
2448 * gh_data.c: Use new-style uniform arrays in place of old-style
2449 ones.
2450
2451 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c,
2452 ramap.c, unif.c: Do no longer handle old-style uniform vectors.
2453
2454 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use u32vectors
2455 instead of old-sytle uvectors.
2456
2457 * convert.c, convert.i.c: Rewritten completely, using
2458 scm_any_to_u8vector, etc and other new-style uniform vector
2459 functions.
2460
2461 * random.c (scm_random_solid_sphere_x,
2462 scm_random_hollow_sphere_x): Do not validate vector argument, this
2463 is already done elsewhere.
2464
2465 * srfi-4.h, srfi-4.i.c, srfi-4.c (coerce_to_uvec,
2466 scm_any_to_u8vector, etc): New.
2467 (scm_uniform_element_size, scm_uniform_vector_length): Do no
2468 longer handle old-style uniform vectors.
2469
2470 * read.c (scm_lreadr): Bugfix: include the last bit in the
2471 bit vector.
2472
2473 2004-10-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2474
2475 * unif.h, unif.c (scm_array_creator): New.
2476 (scm_i_get_old_prototype): New.
2477 (scm_array_prototype): use it to return old-style prototype, never
2478 return creators.
2479 (scm_make_uve): Use scm_call_1 instead of scm_call_2 with a second
2480 arg of SCM_UNDEFINED. The latter is wrong.
2481
2482 * unif.h, unif.c (scm_make_u1vector): New, but only temporary.
2483 (make_uve): Removed.
2484 (scm_i_proc_make_vector, scm_i_proc_make_string,
2485 scm_i_proc_make_u1vector): New.
2486 (scm_init_unif): Initialize them.
2487 (scm_i_convert_old_prototype): New.
2488 (scm_make_uve): Use it to get the creator procedure. Removed all
2489 old code that created old-style uniform vectors.
2490 (scm_array_p): Handle generic vectors.
2491 (scm_dimensions_to_uniform_array): Do not fill new array with
2492 prototype when that is a procedure.
2493 (scm_list_to_uniform_array): Also accept a list of lower bounds as
2494 the NDIM argument.
2495 (scm_i_print_array): Print rank for shared or non-zero-origin
2496 vectors.
2497 (tag_proto_table, scm_i_tag_to_prototype, scm_i_read_array): New.
2498 (scm_raprin1): Do not call scm_i_array_print for enclosed arrays,
2499 which I do not understand yet.
2500 (scm_array_prototype): Explicitely handle generic vectors.
2501
2502 * numbers.c, number.h (scm_i_print_complex, icmplx2str): New.
2503 (iflo2str): Use icmplx2str for complex numbers.
2504
2505 * srfi-4.c, srfi-4.h (scm_i_read_homogenous_vector,
2506 scm_i_uniform_vector_prototype): Removed.
2507 (scm_i_uniform_vector_creator): New.
2508 (SCM_UVEC_C32, scm_c32vector, scm_make_c32vector, etc,
2509 SCM_UVEC_C64, scm_c64vector, scm_make_c64vector, etc): New.
2510 Updated all tables and generic functions to support them.
2511 (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector, etc): New.
2512 (scm_init_srfi_4): Initialize them.
2513
2514 * srfi-4.i.c (scm_take_u8vector, etc): use uvec_sizes instead of
2515 sizeof(CTYPE) as explained in the comment.
2516
2517 * read.c (scm_lreadr): Call scm_i_read_array for all characters
2518 following '#' that can start an array. Explicitely disambiguate
2519 'i' and 'e' between introducing numbers and uniform vectors. Do
2520 not call scm_i_read_homogenous_vector, since that is also handled
2521 by scm_i_read_array now.
2522
2523 2004-10-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2524
2525 First cut at integrating uniform vectors from srfi-4 with the rest
2526 of Guile. This change replaces scm_tc7_byvect with a s8 uniform
2527 vector. The plan is to gradually replace one type after the other
2528 until none is left and then to consider general cleanups and
2529 optimizations.
2530
2531 * srfi-4.h, srfi-4.i.c (scm_u8vector_elements, etc): New.
2532
2533 * srfi-4.h, srfi-4.c (scm_uniform_vector_p,
2534 scm_uniform_vector_ref, scm_uniform_vector_set_x,
2535 scm_uniform_vector_to_list, scm_is_uniform_vector,
2536 scm_c_uniform_vector_lengths, scm_c_uniform_vector_size,
2537 scm_uniform_vector_elements, scm_uniform_vector_element_size,
2538 scm_uniform_vector_release): New.
2539 (scm_i_uniform_vector_prototype, scm_i_uniform_vector_tag): New.
2540 (scm_uniform_element_size, scm_uniform_vector_length): Moved here
2541 from unif.h, unif.c and extended to handle both the old and new
2542 uniform vectors.
2543
2544 * tags.h (scm_tc7_byvect): Commented out.
2545
2546 * unif.h, unif.c (scm_uniform_vector_ref, scm_array_ref): Renamed
2547 the former to the latter.
2548 (scm_uniform_vector_length, scm_uniform_element_size): Moved to
2549 srfi-4.h, srfi-4.c.
2550 (scm_make_uve): Call scm_make_s8vector for #\nul prototype.
2551 (scm_array_p, scm_array_rank, scm_array_dimensions,
2552 scm_transpose_array, scm_enclose_array, scm_array_ref, scm_cvref,
2553 scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
2554 scm_array_to_list, scm_array_prototype): Handle srfi-4 uniform
2555 vectors. Removed code for scm_tc7_byvect.
2556 (scm_dimensions_to_uniform_array): Fill array with 0 when
2557 prototype is #\nul.
2558 (scm_i_print_array_dimension, scm_i_legacy_tag,
2559 scm_i_print_array): New.
2560 (scm_raprin1): Call scm_i_print_array for arrays. Removed code
2561 for scm_tc7_byvect.
2562
2563 * ramap.c (scm_ra_matchp, scm_array_fill_int, racp,
2564 scm_array_index_map_x, raeql_1, scm_array_equal_p): Handle srfi-4
2565 uniform vectors. Removed code for scm_tc7_byvect
2566
2567 * print.c (iprin1): Removed code for scm_tc7_byvect.
2568 * objects.c (scm_class_of): Likewise.
2569 * gc-mark.c (scm_gc_mark_dependencies): Likewise.
2570 * gc-card.c (scm_i_sweep_card): Likewise.
2571 * evalext.c (scm_self_evaluating_p): Likewise.
2572 * eq.c (scm_equal_p): Likewise.
2573
2574 * gh_data.c (gh_chars2byvect): Reimplemented with
2575 scm_make_s8vector.
2576 (gh_scm2chars): Handle s8vectors, removed code for scm_tc7_byvect.
2577
2578 * srfi-4.c (take_uvec): New.
2579 (alloc_uvec): Use it.
2580 * srfi-4.h, srfi-4.i.c (scm_take_u8vector, etc): New.
2581
2582 * random.c (vector_scale, vector_scale_x): Renamed former to the
2583 latter, since it modifies its argument.
2584 (vector_scale_x, vector_sum_squares, scm_random_normal_vector_x):
2585 Do not use scm_universal_vector_length for non-uniform vectors.
2586 Use scm_f64vector_elements to access innards of uniform vectors.
2587
2588 * convert.i.c: Convert srfi-4 style uniform vectors when
2589 requested.
2590 * convert.c (scm_c_scm2chars, scm_c_chars2scm,
2591 scm_c_chars2byvect): Use a s8vector instead of a scm_tc7_byvect.
2592
2593 2004-10-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2594
2595 * numbers.h, numbers.c (scm_i_print_double): New.
2596
2597 * srfi-4.c, srfi-4.h, srfi-4.i.c: New files, initially from
2598 ../srfi/ but heavily modified.
2599 * Makefile.am: Add them in all the right places.
2600 * init.c (scm_init_guile_1): Call scm_init_srfi_4.
2601 * read.c (scm_lreadr): Call scm_i_read_homogenous_vector for '#f',
2602 '#u', and '#s'.
2603
2604 * read.h, read.c (scm_i_input_error): Renamed from scm_input_error
2605 and made non-static. Changed all uses.
2606
2607 2004-10-22 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2608
2609 * variable.c, threads.c, struct.c, stackchk.c, smob.c, root.c,
2610 print.c, ports.c, mallocs.c, hooks.c, hashtab.c, fports.c,
2611 guardians.c, filesys.c, coop-pthreads.c, continuations.c: Use
2612 scm_uintprint to print unsigned integers, raw heap words, and
2613 adresses, using a cast to scm_t_bits to turn pointers into
2614 integers.
2615
2616 * unif.c: Include "libguile/print.h".
2617
2618 * numbers.h, numbers.c (SCM_T_INTBUFLEN): Increased to cover
2619 scm_t_intmax values.
2620 (scm_uint2str): New, for scm_t_uintmax.
2621 (scm_iint2str): Argument type changed to scm_t_intmax,
2622 reimplemented in terms of scm_uint2str.
2623
2624 * print.c, print.h (scm_uintprint): New, for printing
2625 scm_t_uintmax values.
2626 (scm_intprint): Argument type changed to scm_t_intmax.
2627
2628 * sort.c (quicksort, scm_merge, scm_merge_list_x,
2629 scm_merge_list_step, scm_merge_vector_step): Inserted SCM_TICKs at
2630 strategic places so that the loops can be interrupted.
2631
2632 * Makefile.am (INCLUDES): Use @LTDLINC@ instead of
2633 "-I$(top_srcdir)/libguile-ltdl".
2634 (libguile_la_LIBADD): Use @LIBLTDL@ instead of
2635 "../libguile-ltdl/libguile-ltdl.a".
2636
2637 * guile.c, dynl.c: Switched to using libltdl directly. Replaced
2638 all references to scm_lt_* with just lt_*. Include <ltdl.h>
2639 instead of <libguile-ltdl.h>.
2640
2641 2004-10-20 Marius Vollmer <mvo@zagadka.de>
2642
2643 * sort.c (quicksort): Copy pivot out of the array while
2644 constructing the partitions; it could get overwritten otherwise.
2645 Because of the ultimate insertion sort, this bug did not cause
2646 quicksort to fail, it just put all the burdon on the insertion
2647 sort and was thus very slow. Thanks to Rolan Orre for reporting
2648 the slowness!
2649
2650 2004-10-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2651
2652 * numbers.c (scm_i_range_error): New.
2653 * conv-integer.i.c, conv-uinteger.i.c: Use it instead of
2654 scm_out_of_range.
2655
2656 * sort.c (scm_restricted_vector_sort_x): Validate startpos <=
2657 endpos. State inclusiveness/exclusiveness of bounds in docstring.
2658
2659 * unif.c (scm_array_p): When no prototype is given, explicitely
2660 test for allowable types, do not simply return true. Thanks to
2661 Roland Orre for reporting this!
2662
2663 * private-gc.h (SCM_DEFAULT_MAX_SEGMENT_SIZE): Increase to 20 Mib.
2664
2665 * gc-segment.c (scm_i_get_new_heap_segment): Limit size of new
2666 segment to scm_max_segment_size.
2667
2668 2004-10-08 Han-Wen Nienhuys <hanwen@xs4all.nl>
2669
2670 * gc.c (scm_igc): put scm_gc_running-- before running hooks.
2671
2672 * inline.h (scm_double_cell): abort if GC running.
2673 (scm_cell): idem.
2674
2675 2004-10-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2676
2677 * error.c (scm_wrong_type_arg): Do not talk about "argument" for
2678 pos == 0.
2679
2680 Keywords no longer store a 'dash symbol'. Instead, they store a
2681 symbol with their real name.
2682
2683 * keywords.h, keywords.c, deprecated.h, deprecated.c
2684 (SCM_KEYWORDP, SCM_KEYWORDSYM): Deprecated and implemented in
2685 terms of scm_is_keyword and scm_keyword_dash_symbol.
2686
2687 * keywords.h, keywords.c, discouraged.h, discouraged.c
2688 (scm_make_keyword_from_dash_symbol, scm_keyword_dash_symbol,
2689 scm_c_make_keyword): Discouraged.
2690
2691 * keywords.h, keywords.c (scm_symbol_to_keyword,
2692 scm_keyword_to_symbol): Implemented in C.
2693 (scm_is_keyword, scm_from_locale_keyword,
2694 scm_from_locale_keywordn): New.
2695
2696 * goops.c: Replaced SCM_KEYWORDP with scm_is_keyword.
2697
2698 * snarf.h (SCM_KEYWORD, SCM_GLOBAL_KEYWORD): Use
2699 scm_from_locale_keyword instead of scm_c_make_keyword.
2700
2701 * keywords.c (scm_symbol_to_keyword): Use SCM_ASSERT_TYPE for a
2702 better error message.
2703
2704 * deprecated.c: Include discouraged.h and keywords.h.
2705
2706 * read.c (scm_lreadr): Simply do (symbol->keyword (read)) after
2707 reading '#:' or ':'. See NEWS for consequences.
2708
2709 2004-09-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2710
2711 * read.c (scm_lreadr): Revert change from 2004-09-22: string
2712 literals are now read-write again (until SCM_STRING_CHARS is
2713 removed).
2714
2715 * strings.c (SCM_STRING_CHARS): Explicitely reject read-only
2716 strings with an error message that blames SCM_STRING_CHARS.
2717
2718 * options.c (change_option_setting): Use scm_car instead of
2719 explicit type check plus SCM_CAR.
2720
2721 * print.h, print.c (SCM_PRINT_HIGHLIGHT_PREFIX,
2722 SCM_PRINT_HIGHLIGHT_SUFFIX): New printer options.
2723 (scm_iprin1): Use them instead of the previoulsy hardcoded
2724 strings.
2725 (scm_init_print): Initialize them.
2726
2727 * backtrace.c (display_frame_expr): Do not remove control
2728 characters from the final string. Print it directly using
2729 scm_display.
2730
2731 * ramap.c (scm_array_equal_p): Include scm_tc7_svect in switch.
2732 Thanks to Roland Orre!
2733
2734 2004-09-29 Kevin Ryde <user42@zip.com.au>
2735
2736 * regex-posix.c (scm_regexp_exec): Correction to last change, should
2737 be whole original string in match struct, not offsetted substring.
2738
2739 2004-09-24 Han-Wen Nienhuys <hanwen@xs4all.nl>
2740
2741 * gc.c (scm_gc_unprotect_object): abort if called during GC.
2742
2743 2004-09-24 Marius Vollmer <mvo@zagadka.de>
2744
2745 * Makefile.am (EXTRA_DIST): Added gettext.h.
2746
2747 * smob.c, smob.h (scm_assert_smob_type): New.
2748
2749 * Makefile.am (guile_CFLAGS, guile_LDFLAGS, libguile_la_CFLAGS):
2750 Include GUILE_CFLAGS.
2751 (libguile_la_LIBADD): Removed THREAD_LIBS_LOCAL, which is unused
2752 now.
2753 (libpath.h): Put GUILE_CFLAGS in the build-info.
2754
2755 2004-09-23 Marius Vollmer <mvo@zagadka.de>
2756
2757 * print.h (scm_print_state): Added highlight_objects.
2758 * print.c (make_print_state, scm_free_print_state): Initialize it
2759 to SCM_EOL.
2760 (scm_iprin1): Wrap output in '{...}' when object is contained in
2761 highlight_objects.
2762
2763 * backtrace.h, backtrace.c (scm_display_backtrace_with_highlights,
2764 scm_backtrace_with_highlights): New. Set highlight_objects of
2765 printstate.
2766
2767 * error.c (scm_error_scm): Document new meaning of data/rest
2768 argument for out-of-range and wrong-type-arg errors.
2769 (scm_out_of_range, scm_out_of_range_pos, scm_wrong_type_arg,
2770 scm_wrong_type_arg_msg): Pass bad_value in rest argument of
2771 exception so that it gets highlighted in the backtrace.
2772 Don't talk about "argument" when not giving a position.
2773
2774 * throw.c (handler_message): The rest argument is the fourth
2775 argument, not everything after the third. Call
2776 scm_display_backtrace_with_highlights, passing the rest argument
2777 when appropriate.
2778
2779 2004-09-22 Marius Vollmer <mvo@zagadka.de>
2780
2781 From Jan Nieuwenhuizen <janneke@gnu.org> and Bruno Haible
2782 <bruno@clisp.org>:
2783
2784 * i18n.c: Handle --disable-nls (thanks Bruno).
2785
2786 * posix.c (scm_init_posix): Add LC_PAPER, LC_NAME, LC_ADDRESS,
2787 LC_TELEPHONE, LC_MEASUREMENT, LC_IDENTIFICATION.
2788
2789 * i18n.c (scm_i_to_lc_category): New name and export. Support all
2790 LC categories.
2791 * posix.c (scm_setlocale): Use it.
2792
2793 * i18n.h, i18n.c (scm_textdomain, scm_bindtextdomain,
2794 scm_bind_textdomain_codeset): Make wrappers similar to C function
2795 they wrap.
2796
2797 * i18n.h: New file.
2798 * i18n.c: New file.
2799 * gettext.h: New file, taken from GNU gettext.
2800 * init.c: Include libguile/i18n.h.
2801 (scm_init_guile_1): Add call to scm_init_i18n().
2802 * Makefile.am (libguile_la_SOURCES): Add i18n.c.
2803 (DOT_X_FILES): Add i18n.x.
2804 (DOT_DOC_FILES): Add i18n.doc.
2805 (libguile_la_LDFLAGS): Add @LTLIBINTL@.
2806 (modinclude_HEADERS): Add i18n.h.
2807
2808 2004-09-22 Marius Vollmer <mvo@zagadka.de>
2809
2810 * gh_list.c: Replaced SCM_CAR, etc with scm_car, etc.
2811
2812 * discouraged.h, tags.h (SCM_CONSP, SCM_NCONSP): Moved to
2813 discouraged.h. Replaced all uses with scm_is_pair.
2814 (SCM_I_CONSP): New name for SCM_CONSP.
2815
2816 * pairs.h, pairs.c (scm_is_pair, scm_is_null, scm_car, scm_cdr,
2817 scm_i_chase_pairs, SCM_I_A_PAT, SCM_I_D_PAT, etc, scm_caar,
2818 scm_cadr, etc): New.
2819 (SCM_NULLP, SCM_NNULLP): Moved to discouraged.h. Replaced all
2820 uses with scm_is_null.
2821
2822 * eval.c (scm_eval, scm_apply, call_cxr_1): Use scm_i_chase_pairs
2823 instead of explicit code.
2824
2825 2004-09-22 Marius Vollmer <mvo@zagadka.de>
2826
2827 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
2828 Reworded logic a bit so that #f is returned immediately when s1 is
2829 too short to contain s2.
2830
2831 * regex-posix.c (scm_regexp_exec): Convert string to
2832 zero-terminated locale string before matching against it.
2833
2834 * strings.h, strings.c (scm_substring_read_only,
2835 scm_c_substring_read_only, scm_i_substring_read_only): New.
2836 (RO_STRING_TAG, IS_RO_STRING): New.
2837 (scm_i_string_writable_chars): Bail on read-only strings.
2838
2839 * read.c (scm_lreadr): use scm_c_substring_read_only for string
2840 literals, thus making them read-only as specified by R5RS.
2841
2842 2004-09-22 Marius Vollmer <mvo@zagadka.de>
2843
2844 * eq.c (scm_equal_p): Allow smobs with different flags to be equal
2845 by testing for smobs before insisting on equal SCM_CELL_TYPES.
2846
2847 2004-09-21 Marius Vollmer <mvo@zagadka.de>
2848
2849 * numbers.h, numbers.c: Include <gmp.h> in numbers.h, not in
2850 numbers.c.
2851 (scm_to_mpz, scm_from_mpz): New.
2852 Thanks to Andreas Vögele!
2853
2854 * read.c (skip_scsh_block_comment): Recognize "!#" everywhere, not
2855 just on a line of its own.
2856
2857 * srfi-13.c (scm_string_any, scm_string_every,
2858 scm_string_tabulate, string_upcase_x, string_down_case_x,
2859 string_titlecase_x, string_reverse_x, scm_string_tokenize): Use
2860 size_t instead of int for indices into strings. Make sure that no
2861 over- or underflow occurs. Thanks to Andreas Vögele!
2862 (scm_xsubstring, scm_string_xcopy_x): Use ints for 'extended'
2863 indices, which can also be negative.
2864
2865 2004-09-20 Marius Vollmer <mvo@zagadka.de>
2866
2867 * gc-mark.c (SCM_MARK_BACKING_STORE): Removed, it was unused.
2868
2869 * threads.c (scm_threads_mark_stacks): Call
2870 SCM_MARK_BACKING_STORE. Also, do not use stack_len local, it was
2871 only used once.
2872
2873 2004-09-13 Jan Nieuwenhuizen <janneke@gnu.org>
2874
2875 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
2876 Bugfix: when subtracting unsigned values, make sure that result
2877 does not wrap.
2878
2879 2004-09-09 Kevin Ryde <user42@zip.com.au>
2880
2881 * filesys.c, stime.c (_POSIX_C_SOURCE): Use this only on hpux, it
2882 causes too many problems elsewhere (glibc, freebsd, mingw). Reported
2883 by Andreas Vögele.
2884
2885 2004-09-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2886
2887 * Makefile.am (EXTRA_libguile_la_SOURCES): Removed "alloca.c".
2888
2889 * eq.c (real_eqv): Pretend that all NaNs are equal.
2890
2891 * numbers.c (scm_integer_expt): Do not accept inexact integers.
2892
2893 2004-09-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2894
2895 * srfi-13.c (scm_string_trim_right, scm_string_xcopy_x): Correctly
2896 use size_t for some locals instead of int.
2897
2898 * read.c (scm_flush_ws): Detect "#!"-style comments here.
2899 (scm_lreadr): Abort on seeing "#!", which should no longer happen.
2900 (skip_scsh_block_comment): Use scm_input_error instead of
2901 scm_misc_error in case of EOF.
2902
2903 2004-09-07 Kevin Ryde <user42@zip.com.au>
2904
2905 * numbers.c (scm_integer_expt): Reject exponent +/-inf.
2906 Bug report by Bill Schottstaedt.
2907
2908 * ports.c (scm_getc, scm_lfwrite): Recognise \a \b and \r for port
2909 column.
2910 * ports.h (SCM_ZEROCOL, SCM_DECCOL): New macros.
2911
2912 * posix.c (scm_access): Update docstring per manual.
2913
2914 * posix.c (scm_nice): Correction to error detection. Reported by
2915 Matthias Koeppe.
2916
2917 * stime.c (scm_current_time, scm_gettimeofday, scm_strptime): Don't
2918 throw error before unlocking mutex with SCM_ALLOW_INTS.
2919
2920 2004-09-06 Kevin Ryde <user42@zip.com.au>
2921
2922 * stime.h (SCM_TIME_UNITS_PER_SECOND): Use sysconf(_SC_CLK_TCK) when
2923 available. This also gets around CLK_TCK being absent when
2924 _GNU_SOURCE and _POSIX_C_SOURCE are defined in stime.c.
2925
2926 2004-09-03 Stefan Jahn <stefan@lkcc.org>
2927
2928 * threads.c (scm_threads_mark_stacks): Fixed local variable
2929 definitions.
2930
2931 * strings.c (scm_i_substring_copy, scm_string_append): Fixed
2932 local variable definitions.
2933
2934 * stime.c (_POSIX_C_SOURCE): Do not define this item on
2935 MinGW32 because it conflicts with its pthread headers.
2936 (scm_mktime): Consider the HAVE_STRUCT_TM_TM_ZONE define.
2937 (scm_strftime): Using scm_from_locale_string() instead of
2938 scm_makfrom0str().
2939
2940 * posix.c (scm_putenv): Fixed typo in the !HAVE_UNSETENV
2941 part.
2942
2943 * numbers.c (scm_init_numbers): Removed check_sanity() call
2944 inside GUILE_DEBUG. The function has been removed somewhen...
2945
2946 * filesys.c (_POSIX_C_SOURCE): Do not define this item on
2947 MinGW32 because it conflicts with its pthread headers.
2948
2949 2004-08-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2950
2951 * strings.c (SCM_STRINGP): Accept all strings.
2952 (SCM_STRING_CHARS): Reject shared substrings here.
2953
2954 * script.c (scm_compile_shell_switches): Added 2003 and 2004 to
2955 the Copyright years.
2956
2957 2004-08-27 Kevin Ryde <user42@zip.com.au>
2958
2959 * socket.c (scm_fill_sockaddr): Use HAVE_STRUCT_SOCKADDR_SIN_LEN and
2960 HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN for sockaddr fields, SIN_LEN and
2961 SIN_LEN6 are not defined on all systems. Reported by Michael Tuexen.
2962
2963 2004-08-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2964
2965 * strings.h, strings.c (scm_i_make_symbol): Added FLAGS parameter.
2966 * symbols.h, symbols.c (SCM_I_F_SYMBOL_UNINTERNED,
2967 scm_i_symbol_is_interned, scm_i_mem2symbol,
2968 scm_i_mem2uninternedsymbol): Use it to store uninternedness flag.
2969
2970 2004-08-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2971
2972 * srfi-13.c: First cut at thread-safeness and proper use of
2973 scm_i_string_chars et al. Copious scm_remember_upto_heres have
2974 been inserted. Made sure that no internal string pointer is used
2975 across a SCM_TICK or a possible GC.
2976
2977 * script.c (scm_compile_shell_switches): Use
2978 scm_from_locale_string instead of scm_makfrom0str.
2979
2980 * srfi-13.c (scm_string_rindex): Export to Scheme, as it has
2981 always been.
2982
2983 2004-08-25 Marius Vollmer <mvo@zagadka.de>
2984
2985 Moved SRFI-13 and SRFI-14 into the core, taking over the role of
2986 strop.c.
2987
2988 * srfi-13.c, srfi-13.h, srfi-14.c, srfi-14.h: New files.
2989 * strop.h, strop.c: Removed, they are now empty.
2990 * Makefile.am: Updated for new and removed files.
2991
2992 * symbols.h, symbols.c (scm_string_ci_to_symbol): Moved here, next
2993 to scm_string_to_symbol.
2994
2995 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
2996 scm_char_whitespace_p, scm_upper_case_p, scm_lower_case_p,
2997 scm_char_is_both_p): Use scm_char_set_contains_p with the proper
2998 charset instead of libc functions.
2999
3000 * strorder.c (scm_string_equal_p, scm_string_ci_equal_p,
3001 scm_string_less_p, scm_string_leq_p, scm_string_gr_p,
3002 scm_string_geq_p, scm_string_ci_less_p, scm_string_ci_leq_p,
3003 scm_string_ci_gr_p, scm_string_ci_geq_p): Use scm_string_eq, etc
3004 instead of explicit code.
3005
3006 * deprecated.c, load.c, posix.c, unif.c, symbols.c: Include
3007 "srfi-13.h" instead of "strop.h".
3008
3009 * init.c (scm_init_guile_1): Call scm_init_srfi_13 and
3010 scm_init_srfi_14. Do not call scm_init_strop.
3011
3012 2004-08-24 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3013
3014 * numbers.c (scm_inf_p): Synced docstring back from manual.
3015
3016 2004-08-22 Marius Vollmer <mvo@zagadka.de>
3017
3018 * strings.c (get_str_buf_start): New helper function.
3019 (scm_i_substring, scm_i_substring_copy, scm_i_substring_shared,
3020 scm_i_string_char, scm_i_string_writable_chars): Use it.
3021 (scm_i_substring_copy): Make START argument optional for C
3022 callers, for upcoming SRFI-13 integration.
3023
3024 2004-08-21 Marius Vollmer <mvo@zagadka.de>
3025
3026 From Richard Todd, Thanks!
3027
3028 * script.c (scm_compile_shell_switches): added '-L' switch to add
3029 to the %load-path.
3030
3031 2004-08-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3032
3033 * eval.c (unmemoize_exprs): When dropping internal body markers
3034 from the output during unmemoization, also drop those that are not
3035 immediately at the beginning of a body.
3036
3037 2004-08-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3038
3039 * eval.c (scm_lookupcar1): Report "Variable used before given a
3040 value" insetad of an "Unbound" one for variables that are found
3041 but still contain SCM_UNDEFINED.
3042
3043 * posix.c (scm_mkstemp): Correction to the correction, mkstemp
3044 expects a null-terminated string in the locale encoding, but
3045 scm_i_string_writable_chars doesn't give that. Fixed by letting
3046 mkstemp modify a locale version of the tmpl argument and copying
3047 the result back into tmpl.
3048
3049 * strop.c (scm_substring_move_x): Store into str2, not str1.
3050
3051 2004-08-20 Kevin Ryde <user42@zip.com.au>
3052
3053 * posix.c (scm_mkstemp): Correction to new locale_string stuff, need
3054 to modify the input string.
3055
3056 2004-08-19 Marius Vollmer <mvo@zagadka.de>
3057
3058 * deprecated.c (SCM_SYMBOL_CHARS): Cast away const in return.
3059 (SCM_SYMBOL_LENGTH): It's scm_i_symbol_length, not
3060 scm_c_symbol_length.
3061
3062 2004-08-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3063
3064 New string implementation, with copy-on-write strings and
3065 mutation-sharing substrings, and a new internal string API.
3066 Symbols can now share memory with strings.
3067
3068 * tags.h (scm_tc7_stringbuf): New tag.
3069
3070 * strings.h, strings.c: (scm_i_string_chars, scm_i_string_length,
3071 scm_i_string_writable_chars, scm_i_string_stop_writing): New, to
3072 replace SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH. Updated all
3073 uses.
3074 (scm_i_make_string, scm_c_make_string): New, to replace
3075 scm_allocate_string. Updated all uses.
3076 (SCM_STRINGP, SCM_STRING_CHARS, SCM_STRING_UCHARS,
3077 SCM_STRING_LENGTH): Deprecated.
3078 (scm_allocate_string, scm_take_str, scm_take0str, scm_mem2string,
3079 scm_str2string, scm_makfrom0str, scm_makfrom0str_opt):
3080 Discouraged. Replaced all uses with scm_from_locale_string or
3081 similar, as appropriate.
3082 (scm_c_string_length, scm_c_string_ref, scm_c_string_set_x,
3083 scm_c_substring, scm_c_substring_shared, scm_c_substring_copy,
3084 scm_substring_shared, scm_substring_copy): New.
3085
3086 * symbols.c, symbols.h (SCM_SYMBOLP, SCM_SYMBOL_FUNC,
3087 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS,
3088 SCM_SYMBOL_HASH, SCM_SYMBOL_INTERNED_P, scm_mem2symbol,
3089 scm_str2symbol, scm_mem2uninterned_symbol): Discouraged.
3090 (SCM_SYMBOL_LENGTH, SCM_SYMBOL_CHARS, scm_c_symbol2str):
3091 Deprecated.
3092 (SCM_MAKE_SYMBOL_TAG, SCM_SET_SYMBOL_LENGTH, SCM_SET_SYMBOL_CHARS,
3093 SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS): Removed.
3094 (scm_is_symbol, scm_from_locale_symbol, scm_from_locale_symboln):
3095 New, to replace scm_str2symbol and scm_mem2symbol, respectively.
3096 Updated all uses.
3097 (scm_gensym): Generate only the number suffix in the buffer, just
3098 string-append the prefix.
3099
3100 * error.c (scm_memory_error): Do not try to throw, just abort.
3101 Throwing will not work anyway.
3102
3103 * gh.h, gh-data.c (gh_set_substr): Made src const.
3104
3105 * ports.c (scm_i_mode_bits_n): New, for counted strings.
3106 (scm_mode_bits): Use it.
3107 (scm_c_port_for_each): Blocking GC does not seem to work, allocate
3108 a vector normally and fill that instead of consing a list with a
3109 blocked GC.
3110
3111 * read.c (scm_i_casei_streq): New, for counted strings.
3112
3113 * threads.c (gc_section_count): Removed, thread-sleeping can not
3114 be nested.
3115 (scm_i_thread_put_to_sleep): Call scm_i_leave_guile before locking
3116 admin mutex so that we can be put to sleep by other threads while
3117 blocking on that mutex. Lock all the heap mutex of all threads,
3118 including ourselves.
3119 (scm_i_thread_wake_up): Unlock all threads, including ourselves,
3120 call scm_i_enter_guile.
3121 (scm_thread_mark_stacks): Expect all threads to be suspended.
3122
3123 * gc.h, gc.c (scm_i_gc_admin_mutex): New, to protect
3124 scm_gc_mallocated, for now.
3125 (scm_init_storage): Initialize it.
3126 * gc-malloc.c (descrease_mtrigger, increase_mtrigger): Use it.
3127
3128 * gc-mark.c (scm_gc_mark_dependencies): Call scm_i_string_mark,
3129 scm_i_stringbuf_mark and scm_i_symbol_mark, as appropriate.
3130 * gc-card.c (scm_i_sweep_card): Call scm_i_string_free,
3131 scm_i_stringbuf_free and scm_i_symbol_free, as appropriate.
3132
3133 * strop.c (scm_string_copy): Use scm_c_substring to get a
3134 copy-on-write string.
3135
3136 2004-08-18 Kevin Ryde <user42@zip.com.au>
3137
3138 * arbiters.c (FETCH_STORE): New macro.
3139 (SCM_LOCK_VAL, SCM_UNLOCK_VAL): New constants.
3140 (SCM_LOCK_ARB, SCM_UNLOCK_ARB): Remove, effectively absorbed into
3141 scm_try_arbiter and scm_release_arbiter.
3142 (scm_try_arbiter, scm_release_arbiter): Use FETCH_STORE to get xchg
3143 for speed on i386, otherwise using mutex.
3144
3145 * eq.c (scm_equal_p): Remove real==fraction and fraction==real, they
3146 must be #f according to R5RS. (equal? follows eqv?, and for eqv? an
3147 exact and inexact is #f.)
3148
3149 * fports.c (fport_print): Use scm_ttyname instead of ttyname directly,
3150 to get thread safety of scm_ttyname.
3151
3152 * ports.c (ttyname): Remove prototype, unused.
3153
3154 * socket.c (scm_init_socket): Add SOCK_SEQPACKET and SOCK_RDM.
3155 Reported by Michael Tuexen.
3156
3157 2004-08-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3158
3159 * load.c (scm_init_load_path): Do not pass NULL to
3160 scm_to_locale_string, which would happen when GUILE_LOAD_PATH is
3161 not set. Thanks to Bill Schottstaedt.
3162
3163 2004-08-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3164
3165 * socket.c (scm_inet_aton, scm_inet_pton): Convert SCM strings to
3166 locale strings instead of accessing their internals.
3167 (scm_recv, scm_send, scm_recvfrom, scm_sendto): Use
3168 SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH instead of
3169 SCM_STRING_CHARS and SCM_STRING_LENGTH.
3170
3171 * simpos.c (scm_system): Convert SCM strings to locale strings
3172 instead of accessing their internals.
3173
3174 * script.c (scm_compile_shell_switches): Convert version to locale
3175 string before printing it.
3176
3177 * rdelim.c (scm_read_delimited_x): Avoid
3178 SCM_VALIDATE_SUBSTRING_SPEC_COPY and use scm_from_size_t instead
3179 of scm_from_long for the returned number of read characters.
3180
3181 * ioext.c (scm_fdopen): Use scm_i_fdes_to_port together with
3182 scm_i_mode_bits to avoid accessing internals of SCM string from C.
3183
3184 * filesys.c (STRING_SYSCALL, STRING2_SYSCALL): New helper macros.
3185 Use them instead of SCM_SYSCALL when one or two strings need to be
3186 converted into locale strings.
3187 (my_rename): New, gathers platform dependent code for renaming.
3188 (scm_rename): Use it.
3189 (scm_readlink, scm_copy_file): Convert SCM strings to locale
3190 strings instead of accessing their internals.
3191 (scm_basename, scm_dirname): Use SCM_I_STRING_CHARS and
3192 SCM_I_STRING_LENGTH instead of SCM_STRING_CHARS and
3193 SCM_STRING_LENGTH.
3194
3195 * extensions.c (load_extension): Convert lib and init to locale
3196 strings instead of accessing the internals directly.
3197 (scm_c_load_extension): Use scm_from_locale_string instead of
3198 scm_makfrom0str.
3199
3200 * fports.h, fports.c (scm_i_fdes_to_port): New, like
3201 scm_fdes_to_port, but take mode bits directly instead of as a C
3202 string.
3203 (scm_i_fdes_to_port): Implement using above.
3204 (scm_open_file): Use scm_i_fdes_to_port together with
3205 scm_i_mode_bits to avoid accessing internals of SCM string from C.
3206 * vports.c (scm_make_soft_port): Use scm_i_fdes_to_port together
3207 with scm_i_mode_bits to avoid accessing internals of SCM string
3208 from C.
3209
3210 * ports.h (scm_i_mode_bits): New, same as scm_mode_bits but with a
3211 SCM string as argument.
3212
3213 * ports.c (scm_i_void_port): New, like scm_void_port but take mode
3214 bits directly instead of C string.
3215 (scm_void_port): Implement using above.
3216 (scm_sys_make_void_port): Use scm_i_void_port together with
3217 scm_i_mode_bits to avoid accessing internals of SCM string.
3218
3219 * strings.h, strings.c (scm_i_get_substring_spec): New.
3220
3221 * socket.c, rw.c, deprecated.h, validate.h
3222 (SCM_VALIDATE_STRING_COPY): Deprecated. Replaced all uses with
3223 SCM_VALIDATE_STRING plus SCM_I_STRING_CHARS or
3224 scm_to_locale_string, etc.
3225 (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Deprecated. Replaced as
3226 above, plus scm_i_get_substring_spec.
3227
3228 * regex-posix.c, read.c, random.c, ramap.c, print.c, numbers.c,
3229 hash.c, gc.c, gc-card.c, convert.i.c, backtrace.c, strop.c,
3230 strorder.c, strports.c, struct.c, symbols.c, unif.c, ports.c: Use
3231 SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_STRING_LENGTH
3232 instead of SCM_STRING_CHARS, SCM_STRING_UCHARS, and
3233 SCM_STRING_LENGTH, respectively. Also, replaced scm_return_first
3234 with more explicit scm_remember_upto_here_1, etc, or introduced
3235 them in the first place.
3236
3237 * posix.c (WITH_STRING): New helper macro. Use it where one
3238 locale string is needed for a short piece of code.
3239 (STRING_SYSCALL): New helper macro. Use it instead of SCM_SYSCALL
3240 when one locale string is needed.
3241 (scm_mkstemp): Convert tmpl to a locale string.
3242 (scm_putenv): Rewritten to use only C strings.
3243 (scm_setlocale, scm_crpt): Convert argument strings to locale
3244 strings.
3245
3246 2004-08-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3247
3248 * load.c (scm_primitive_load_path): Do not check for absolute
3249 filenames when scm_sys_search_load_path returns false, which will
3250 return absolute filenames unchanged.
3251
3252 2004-08-11 Marius Vollmer <mvo@zagadka.de>
3253
3254 * gc.c, procprop.c (scm_init_storage, scm_stand_in_procs,
3255 scm_stand_in_proc): Use a hastable for scm_stand_in_procs instead
3256 of an alist. Thanks to Matthias Koeppe!
3257
3258 2004-08-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3259
3260 * strings.h, deprecated.h (SCM_STRING_COERCE_0TERMINATION_X):
3261 Moved from string.h to deprecated.h.
3262
3263 * deprecated.c, deprecated.h (SCM_CHARS, SCM_LENGTH): Removed.
3264
3265 * strings.h, strings.c (SCM_MAKE_STRING_TAG): Renamed to
3266 SCM_I_MAKE_STRING_TAG, changed all uses.
3267 (SCM_STRING_CHARS, SCM_STRING_UCHARS, SCM_STRING_LENGTH): Renamed
3268 to SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_LENGTH
3269 respectively. For a short time, the old names are still there as
3270 aliases. Not all uses have been changed yet, but the ones in
3271 strings.c have.
3272 (SCM_STRING_MAX_LEN): Do not hardcode to 24 bits, compute from
3273 SCM_T_BITS_MAX.
3274 (scm_is_string, scm_from_locale_string, scm_from_locale_stringn,
3275 scm_take_locale_string, scm_take_locale_stringn,
3276 scm_to_locale_string, scm_to_locale_stringn,
3277 scm_to_locale_stringbuf): New.
3278 (scm_c_string2str, scm_c_substring2str): Deprecated by moving to
3279 deprecated.[hc]. Implemented in terms of the new functions above.
3280 (scm_take_str, scm_take0str, scm_mem2string, scm_str2string,
3281 scm_makfrom0str): Reimplemented in terms of the new functions from
3282 above. They will be discouraged shortly.
3283 (scm_substring): Do not use scm_mem2string.
3284 (scm_i_allocate_string_pointers, scm_i_free_string_pointers): New,
3285 to replace similar code from posix.c, simpos.c, and dynl.c.
3286 (scm_string_append): Use memcpy instead of explicit loop. Do not
3287 use register keyword. Use plain 'char' instead of 'unsigned
3288 char'.
3289
3290 * strports.c (scm_mkstrport): Use SCM_I_STRING_UCHARS instead of
3291 SCM_STRING_UCHARS. Use SCM_I_STRINGP instead of SCM_STRINGP.
3292
3293 * strop.c (scm_i_index): Replaced SCM_STRINGP, SCM_STRING_CHARS,
3294 and SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
3295 SCM_I_STRING_LENGTH, respectively. Pass string object directly,
3296 not as a pointer. Use scm_remember_upto_here_1 to protect it.
3297
3298 * read.c (scm_input_error): Use a SCM value for 'fn', not a C
3299 string. This avoids a conversion round-trip.
3300
3301 * gh_data.c: Replaced SCM_STRINGP, SCM_STRING_CHARS, and
3302 SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
3303 SCM_I_STRING_LENGTH, respectively.
3304 (gh_scm2newstr): Implement in terms of scm_to_locale_string.
3305
3306 * environments.c: Instead calling scm_puts on the SCM_STRING_CHARS
3307 of a string, call scm_display on the string itself.
3308
3309 * dynwind.c, dynwind.h (scm_frame_free): New.
3310
3311 * stime.c, socket.c, simpos.c, procs.c, posix.c, ports.c,
3312 net_db.c, fports.c, filesys.c, eval.c, deprecation.c, dynl.c:
3313 Replaced uses of SCM_STRING_CHARS with proper uses of
3314 scm_to_locale_string. Replaced SCM_STRINGP with scm_is_string.
3315 Replaced scm_mem2string with scm_from_locale_string.
3316
3317 * simpos.c, posix.c (allocate_string_pointers, environ_list_to_c):
3318 Removed, replaced all uses with scm_i_allocate_string_pointers.
3319
3320 * load.h, load.c (scm_internal_parse_path): Removed.
3321 (scm_parse_path): Use scm_string_split to do the work.
3322 (scm_init_load_path): Use scm_parse_path instead of
3323 scm_internal_parse_path.
3324 (scm_search_path): Rewritten string handling part of the code in
3325 terms of scm_to_locale_stringbuf and so that it is thread safe.
3326
3327 * error.c (scm_error_scm): Throw directly instead of calling
3328 scm_error, this avoids the back and forth conversion of SUBR and
3329 MESSAGE and also plugs a memory leak.
3330 (scm_error): Call scm_error_scm.
3331
3332 * backtrace.c: Replaced SCM_STRINGP with scm_is_string.
3333 (display_header): Print FNAME when it is true, not
3334 merely when it is a string.
3335
3336 * strings.h (SCM_SET_STRING_LENGTH, SCM_SET_STRING_CHARS): Removed
3337 unceremoniously. They were unused by Guile itself, and external
3338 use should stop immediately.
3339
3340
3341 2004-08-10 Marius Vollmer <mvo@zagadka.de>
3342
3343 * numbers.h, number.c, deprecated.h, deprecated.c (scm_round,
3344 scm_truncate): Renamed to scm_c_round and scm_c_truncate;
3345 deprecated versions installed in deprecated.h and deprecated.c.
3346 Changed all uses.
3347
3348 2004-08-06 Rob Browning <rlb@defaultvalue.org>
3349
3350 * net_db.c (scm_resolv_error): don't cause an exception while
3351 trying to throw an exception -- call scm_misc_error with correct
3352 arguments. The previous arguments needed a format escape that
3353 wasn't in any of the format strings.
3354
3355 2004-08-06 Kevin Ryde <user42@zip.com.au>
3356
3357 * ramap.c (scm_array_fill_x): For byvect char fill, force signed char
3358 so as not to depend on signedness of plain char. For byvect range
3359 check, throw out-of-range rather than wrong-type-arg.
3360
3361 * unif.c (scm_uniform_vector_ref, scm_array_set_x): For byvect, force
3362 signed byte range checks by using scm_to_schar and scm_from_schar,
3363 don't want to depend on signedness of C char.
3364
3365 2004-08-05 Kevin Ryde <user42@zip.com.au>
3366
3367 * arbiters.c (scm_try_arbiter): Use scm_i_misc_mutex instead of
3368 SCM_DEFER_INTS.
3369 (scm_release_arbiter): Use scm_i_misc_mutex so return value can be
3370 guaranteed if multiple threads compete to unlock.
3371 Update docstrings per doc/ref/api-scheduling.texi.
3372
3373 * filesys.c (scm_copy_file): Use fstat on the input fd rather than
3374 stat on the filename, to be certain a file rename can't mean we get
3375 info on one filesystem object but open another. This fstat usage is
3376 similar to Emacs copy-file.
3377
3378 * posix.c (scm_setgroups): Enhance docstring, per doc/ref/posix.texi.
3379
3380 * simpos.c (scm_system_star): Change scm_from_long to scm_from_int on
3381 SIGINT and SIGQUIT, since those values are ints.
3382
3383 2004-08-03 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3384
3385 * num2integral.i.c, num2float.i.c: Removed.
3386 * Makefile.am (noinst_HEADERS): Updated.
3387
3388 * numbers.h. numbers.c (scm_make_ratio): Renamed to
3389 scm_i_make_ratio and made static, replaced uses with scm_divide.
3390 (scm_complex_p): New, export as "complex?" to Scheme.
3391 (scm_number_p): Export as "number?" to Scheme.
3392 (scm_is_complex, scm_is_number): New.
3393 (scm_c_make_rectangular, scm_c_make_polar): New.
3394 (scm_make_rectangular, scm_make_polar): Use above.
3395 (scm_c_real_part, scm_c_imag_part, scm_c_magnitude, scm_c_angle):
3396 New.
3397 (scm_make_complex): Discouraged by moving to discouraged.h and
3398 discouraged.c. Replaced all uses with scm_c_make_rectangular.
3399
3400 * discouraged.h, discouraged.c, numbers.c, numbers.h
3401 (scm_is_rational): New.
3402 (scm_i_short2big, scm_i_int2big, scm_i_uint2big, scm_i_size2big,
3403 scm_i_ptrdiff2big, scm_i_long_long2big, scm_i_ulong_long2big):
3404 Removed prototypes.
3405 (scm_make_real, scm_num2dbl, scm_float2num, scm_double2num):
3406 Discouraged by moving to discouraged.h and discouraged.c.
3407 Replaced all uses with scm_from_double.
3408 (scm_num2float, scm_num2double): Discouraged by moving prototype
3409 to discouraged.h and rewriting in terms of scm_to_double.
3410 Replaced all uses with scm_to_double.
3411 (scm_to_double): Do not implement in terms of scm_num2dbl, use
3412 explicit code.
3413 (scm_from_double): Do not implement in terms of scm_make_real, use
3414 explicit code.
3415
3416 2004-08-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3417
3418 * init.c (scm_init_guile_1): Call scm_i_init_discouraged.
3419
3420 * gen-scmconfig.h.in (SCM_I_GSC_ENABLE_DISCOURAGED): New.
3421 * gen-scmconfig.c (SCM_ENABLE_DISCOURAGED): Emit based on above.
3422
3423 * eval.c (SCM_EVALIM, SCM_EVALIM2, SCM_XEVAL, SCM_XEVALCAR):
3424 Renamed to SCM_I_* in order to avoid collisions with the versions
3425 defined in deprecated.h.
3426
3427 * discouraged.h, discouraged.c: New files.
3428
3429 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_EQ_P,
3430 SCM_NEGATE_BOOL, SCM_BOOL, SCM_BOOT_NOT): Promoted from being
3431 deprecated to being discouraged by moving to discouraged.h.
3432
3433 * numbers.h, numbers.c, discouraged.h, discouraged.c
3434 (scm_short2num, scm_ushort2num, scm_int2num, scm_uint2num,
3435 scm_long2num, scm_ulong2num, scm_size2num, scm_ptrdiff2num,
3436 scm_num2short, scm_num2ushort, scm_num2int, scm_num2uint,
3437 scm_num2long, scm_num2ulong, scm_num2size, scm_num2ptrdiff,
3438 scm_long_long2num, scm_ulong_long2num, scm_num2long_long,
3439 scm_num2ulong_long): Discouraged by moving to discouraged.h and
3440 discouraged.c and reimplementing in terms of scm_from_* and
3441 scm_to_*. Changed all uses to the new scm_from_* and scm_to_*
3442 functions.
3443
3444 * numbers.h, numbers.c: Removed GUILE_DEBUG code.
3445 (scm_i_short2big, scm_i_ushort2big, scm_i_int2big, scm_i_uint2big,
3446 scm_i_size2big, scm_i_ptrdiff2big): Removed.
3447 (scm_i_long2big, scm_i_ulong2big): New, explicit definitions.
3448 * conv-integer.i.c, conv-uinteger.i.c: Use them instead of
3449 explicit code.
3450
3451 2004-08-02 Kevin Ryde <user42@zip.com.au>
3452
3453 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Add comments about past
3454 and current usage and migration.
3455
3456 2004-07-31 Kevin Ryde <user42@zip.com.au>
3457
3458 * error.c (scm_strerror): Use scm_i_misc_mutex around strerror since
3459 it's not thread safe.
3460 (scm_syserror): Use scm_strerror rather than SCM_I_STRERROR, to take
3461 advantage of this.
3462 * fports.c (scm_open_file): Use scm_strerror likewise.
3463 * filesys.c (scm_stat, scm_lstat): Ditto.
3464
3465 * filesys.c (scm_copy_file): Avoid fd leak when destination file
3466 cannot be opened.
3467
3468 * symbols.c (scm_gensym): Use scm_i_misc_mutex around gensym_counter
3469 update, for thread safety.
3470 (gensym_counter): Move into scm_gensym which is its only user.
3471 (scm_init_symbols): No need to explicitly initialize gensym_counter.
3472
3473 2004-07-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3474
3475 * numbers.h (scm_to_schar, scm_to_uchar, scm_to_char,
3476 scm_to_short, scm_to_ushort, scm_to_int, scm_to_uint, scm_to_long,
3477 scm_to_ulong, scm_to_long_long, scm_to_ulong_long, scm_to_intmax,
3478 scm_to_uintmax, scm_to_size_t, scm_to_ssize_t scm_from_schar,
3479 scm_from_uchar, scm_from_char, scm_from_short, scm_from_ushort,
3480 scm_from_int, scm_from_uint, scm_from_long, scm_from_ulong,
3481 scm_from_long_long, scm_from_ulong_long, scm_from_intmax,
3482 scm_from_uintmax, scm_from_size_t, scm_from_ssize_t): No longer
3483 defined in terms of scm_to_signed_integer, etc, but in terms of
3484 scm_to_int8, etc.
3485
3486 * gen-scmconfig.c (SCM_SIZEOF_INTMAX, SCM_SIZEOF_SIZE_T): New.
3487
3488 * gen-scmconfig.h.in: Removed SCM_I_GSC_*_LIMITS macros, they are
3489 no longer used.
3490
3491 * __scm.h (SCM_I_UTYPE_MAX, SCM_I_TYPE_MAX, SCM_I_TYPE_MIN,
3492 SCM_I_SIZE_MAX, SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX): New.
3493
3494 * __scm.h, gen-scmconfig.c (SCM_I_LLONG_MAX, SCM_I_LLONG_MIN,
3495 SCM_I_ULLONG_MAX, SCM_T_INT8_MIN, SCM_T_INT8_MAX, SCM_T_UINT8_MAX,
3496 SCM_T_INT16_MIN, SCM_T_INT16_MAX, SCM_T_UINT16_MAX,
3497 SCM_T_INT32_MIN, SCM_T_INT32_MAX, SCM_T_UINT32_MAX,
3498 SCM_T_INT64_MIN, SCM_T_INT64_MAX, SCM_T_UINT64_MAX,
3499 SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, SCM_T_UINTMAX_MAX): Moved
3500 definition into __scm.h, using new SCM_I_TYPE_MIN, etc.
3501
3502 * conv-integer.i.c, conv-uinteger.i.c: New files, used to generate
3503 the functions below.
3504
3505 * Makefile.am (noinst_HEADERS): Added conv-integer.i.c and
3506 conv-uinteger.i.c.
3507
3508 * numbers.c, numbers.h (scm_to_int8, scm_to_uint8, scm_to_int16,
3509 scm_to_uint16, scm_to_int32, scm_to_uint32, scm_to_int64,
3510 scm_to_uint64, scm_from_int8, scm_from_uint8, scm_from_int16,
3511 scm_from_uint16, scm_from_int32, scm_from_uint32, scm_from_int64,
3512 scm_from_uint64): Turned from macros into proper functions.
3513 (scm_to_signed_integer, scm_to_unsigned_integer,
3514 scm_from_signed_integer, scm_from_unsigned_integer): Generate via
3515 conv-integer.i.c and conv-uinteger.i.c, as well.
3516
3517 * number.h (scm_to_ssize_t, scm_to_size_t): Use the new
3518 SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX, and SCM_I_SIZE_MAX macros for
3519 the limits. Those are always defined.
3520
3521 2004-07-29 Kevin Ryde <user42@zip.com.au>
3522
3523 * posix.c (scm_ttyname): Use scm_i_misc_mutex for thread safety.
3524
3525 2004-07-28 Kevin Ryde <user42@zip.com.au>
3526
3527 * posix.c (scm_ctermid): Use an L_ctermid buf on the stack, for thread
3528 safety.
3529
3530 * unif.c (scm_array_set_x): For svect, use scm_num2short for
3531 consistency with other vector types and to get arg and func name into
3532 error message.
3533
3534 2004-07-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3535
3536 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_BOOL):
3537 Reimplement using scm_is_false, scm_is_true, scm_is_bool, and
3538 scm_from_bool, respectively.
3539 (SCM_NINUMP): Added.
3540
3541 * tags.h, deprecated.h (SCM_EQ_P): Deprecated by moving it into
3542 deprecated.h. Replaced all uses with scm_is_eq.
3543
3544 2004-07-24 Kevin Ryde <user42@zip.com.au>
3545
3546 * threads.c, threads.h (scm_i_misc_mutex): New SCM_GLOBAL_MUTEX.
3547 * posix.c (scm_crypt): Use it to protect static data in crypt().
3548
3549 2004-07-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3550
3551 * deprecated.h, deprecated.c, numbers.h (SCM_INUMP, SCM_NINUMP,
3552 SCM_INUM): Deprecated by renaming them to SCM_I_INUMP,
3553 SCM_I_NINUMP and SCM_I_INUM, respectively and adding deprecated
3554 versions to deprecated.h and deprecated.c. Changed all uses to
3555 either use the SCM_I_ variants or scm_is_*, scm_to_*, or
3556 scm_from_*, as appropriate.
3557
3558 * dynwind.c (scm_i_dowinds): Removed unused code that would call
3559 the unexisting scm_cross_dynwind_binding_scope for inums on the
3560 windlist.
3561
3562 2004-07-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3563
3564 * socket.c (ipv6_net_to_num, scm_from_ipv6): Renamed
3565 ipv6_net_to_num to scm_from_ipv6, for converting from an IPv6
3566 byte-wise address to a SCM integer. Changed all uses.
3567 (ipv6_num_to_net, scm_to_ipv6): Renamed ipv6_num_to_net to
3568 scm_to_ipv6 and added type and range checking, for converting from
3569 an IPv& byte-wise address to a SCM integer. Changed all uses.
3570 (bignum_in_ipv6_range_p, VALIDATE_INET6): Removed, their function
3571 is now done by scm_to_ipv6.
3572
3573 * numbers.c (scm_to_signed_integer, scm_to_unsigned_integer): dot
3574 not accept inexact integers.
3575
3576 * validate.h, deprecated.h (SCM_VALIDATE_INUM,
3577 SCM_VALIDATE_INUM_COPY, SCM_VALIDATE_BIGINT,
3578 SCM_VALIDATE_INUM_MIN, SCM_VALIDATE_INUM_MIN_COPY,
3579 SCM_VALIDATE_INUM_MIN_DEF_COPY,SCM_VALIDATE_INUM_DEF,
3580 SCM_VALIDATE_INUM_DEF_COPY, SCM_VALIDATE_INUM_RANGE,
3581 SCM_VALIDATE_INUM_RANGE_COPY): Deprecated because they make the
3582 fixnum/bignum distinction visible. Changed all uses to
3583 scm_to_size_t or similar.
3584
3585 2004-07-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3586
3587 * cpp_cnvt.awk: Use scm_from_int instead of SCM_MAKINUM.
3588
3589 2004-07-10 Kevin Ryde <user42@zip.com.au>
3590
3591 * hash.c (scm_hashq, scm_hashv, scm_hash): Restrict to size>=1 rather
3592 than size>=0, since 0<=hash<size cannot be satisfied for size==0, and
3593 such a size causes divide-by-zeros in scm_hasher.
3594
3595 * regex-posix.c (scm_make_regexp): Free rx on error, to avoid memory
3596 leak.
3597
3598 2004-07-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3599
3600 * numbers.c (scm_is_signed_integer, scm_is_unsigned_integer):
3601 Rewritten using the same logic as scm_to_signed_integer and
3602 scm_to_unsigned_integer, respectively, which is better(tm). Also,
3603 use CHAR_BIT instead of hardcoding 8.
3604 (LLONG_MIN, LLONG_MAX, ULLONG_MAX): Removed and used
3605 SCM_I_LLONG_MIN etc. instead.
3606
3607 * numbers.h (SCM_MAKINUM, SCM_I_MAKINUM): Renamed SCM_MAKINUM to
3608 SCM_I_MAKINUM and changed all uses.
3609 * deprecated.h, deprecated.c (SCM_MAKINUM): Newly deprecated.
3610
3611 * gen-scmconfig.c (SCM_I_LLONG_MIN, SCM_I_LLONG_MAX,
3612 SCM_I_ULLONG_MAX): Instead of hard-coding the numbers, compute
3613 them by assuming twos-complement.
3614
3615 2004-07-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3616
3617 * gen-scmconfig.h.in: Added all the new SCM_I_GSC_*_LIMITS that
3618 configure now produces.
3619 * gen-scmconfig.c: Use them to output SCM_T_INT8_MIN, etc
3620 definitions, giving the limits of the integer types defined by
3621 Guile. Also, output a hard coded SCM_I_LLONG_MIN, etc since
3622 LLONG_MIN or LONG_LONG_MIN is hard to get at.
3623
3624 * numbers.h (scm_to_short, scm_to_ushort): It's SHRT_MIN, etc, not
3625 SHORT_MIN.
3626 (scm_to_size_t): Use SIZE_MAX instead of cooking our own.
3627 (scm_to_long_long, scm_to_ulong_long, scm_to_int8, scm_to_uint8,
3628 scm_to_int16, scm_to_uint16, scm_to_int32, scm_to_uint32,
3629 scm_to_int64, scm_to_uint64, scm_to_intmax, scm_to_uintmax,
3630 scm_from_long_long, scm_from_ulong_long, scm_from_int8,
3631 scm_from_uint8, scm_from_int16, scm_from_uint16, scm_from_int32,
3632 scm_from_uint32, scm_from_int64, scm_from_uint64, scm_from_intmax,
3633 scm_from_uintmax): New.
3634
3635 2004-07-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3636
3637 * tags.h (scm_is_eq): New.
3638
3639 * deprecated.h, boolean.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOL,
3640 SCM_NEGATE_BOOL, SCM_BOOLP): Deprecated by moving into
3641 "deprecated.h". Replaced all uses with scm_is_false, scm_is_true,
3642 scm_from_bool, and scm_is_bool, respectively.
3643
3644 * boolean.h (scm_is_bool): Fix bug in prototype.
3645 (scm_from_bool): The argument is "x" not "f", stupid.
3646
3647 * boolean.c (scm_is_bool): Fix typo.
3648
3649 * numbers.h, numbers.c (scm_is_integer, scm_is_signed_integer,
3650 scm_is_unsigned_integer, scm_to_signed_integer,
3651 scm_to_unsigned_integer, scm_to_schar, scm_to_uchar, scm_to_char,
3652 scm_to_short, scm_to_ushort, scm_to_long, scm_to_ulong,
3653 scm_to_size_t, scm_to_ssize_t, scm_from_schar, scm_from_uchar,
3654 scm_from_char, scm_from_short, scm_from_ushort, scm_from_int,
3655 scm_from_uint, scm_from_long, scm_from_ulong, scm_from_size_t,
3656 scm_from_ssize_t, scm_is_real, scm_to_double, scm_from_double):
3657 New.
3658
3659 2004-07-05 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3660
3661 * boolean.h, boolean.c (scm_is_true, scm_is_false, scm_from_bool,
3662 scm_to_bool): New.
3663
3664 2004-06-27 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3665
3666 * backtrace.c (display_expression, display_frame): Call
3667 scm_i_unmemoize_expr for unmemoizing a memoized object holding a
3668 single memoized expression.
3669
3670 * debug.c (memoized_print): Don't try to unmemoize the memoized
3671 object, since we can't know whether it holds a single expression
3672 or a body.
3673
3674 (scm_mem_to_proc): Removed check for lambda expression, since it
3675 was moot anyway. Whoever uses these functions for debugging
3676 purposes should know what they do: Creating invalid memoized code
3677 will cause crashes, independent of whether this check is present
3678 or not.
3679
3680 (scm_proc_to_mem): Take the closure's code as it is and don't
3681 append a SCM_IM_LAMBDA isym. To allow easier debugging, the
3682 memoized code should not be modified.
3683
3684 * debug.[ch] (scm_unmemoize, scm_i_unmemoize_expr): Removed
3685 scm_unmemoize from public use, but made scm_i_unmemoize_expr
3686 available as a guile internal function instead. However,
3687 scm_i_unmemoize_expr will only work on memoized objects that hold
3688 a single memoized expression. It won't work with bodies.
3689
3690 * debug.c (scm_procedure_source), macros.c (macro_print), print.c
3691 (scm_iprin1): Call scm_i_unmemocopy_body for unmemoizing a body,
3692 i. e. a list of expressions.
3693
3694 * eval.c (unmemoize_exprs): Drop internal body markers from the
3695 output during unmemoization.
3696
3697 * eval.[ch] (scm_unmemocopy, scm_i_unmemocopy_expr,
3698 scm_i_unmemocopy_body): Removed scm_unmemocopy from public use,
3699 but made scm_i_unmemocopy_expr and scm_i_unmemocopy_body available
3700 as guile internal functions instead. scm_i_unmemoize_expr will
3701 only work on a single memoized expression, while
3702 scm_i_unmemocopy_body will only work on bodies.
3703
3704 2004-06-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3705
3706 * eval.c (unmemoize_exprs): Handle semi-memoized code.
3707
3708 (scm_cons_source, scm_primitive_eval): Prefer higher level
3709 predicate SCM_FALSEP over SCM_IMP.
3710
3711 2004-06-15 Rob Browning <rlb@defaultvalue.org>
3712
3713 * script.c (scm_shell_usage): minor phrasing change.
3714
3715 * gc_os_dep.c: update ifdefery for macosx.
3716 (scm_get_stack_base): separate result initialization from
3717 declaration to slience warnings with macosx and hp-ux using gcc
3718 3.3. Thanks to Andreas Vögele.
3719
3720 2004-06-13 Han-Wen Nienhuys <hanwen@xs4all.nl>
3721
3722 * eval.c (unmemoize_exprs): use SCM_CONSP for the loop condition.
3723
3724 2004-06-06 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3725
3726 * list.[ch] (scm_i_finite_list_copy): New internal function to
3727 copy lists that are known to be finite (though not necessarily
3728 proper).
3729
3730 * debug.c (scm_procedure_source): Don't have scm_unmemocopy treat
3731 a closure's argument list like an expression of a body.
3732
3733 * eval.c (unmemoize_expression, unmemoize_exprs, unmemoize_and,
3734 unmemoize_begin, unmemoize_case, unmemoize_cond, unmemoize_delay,
3735 unmemoize_do, unmemoize_if, unmemoize_lambda, unmemoize_let,
3736 unmemoize_letrec, unmemoize_letstar, unmemoize_or,
3737 unmemoize_set_x, unmemoize_apply, unmemoize_atcall_cc,
3738 unmemoize_at_call_with_values, unmemoize_future, sym_atslot_ref,
3739 unmemoize_atslot_ref, sym_atslot_set_x, unmemoize_atslot_set_x,
3740 unmemoize_builtin_macro): New static functions and symbols.
3741
3742 (scm_unmemocopy): Rewritten in terms of the above. scm_unmemocopy
3743 now has a slightly different meaning: The memoized form that is
3744 receives as its argument is now interpreted as a sequence of
3745 expressions from a body.
3746
3747 (unmemocar, scm_unmemocar): Since the whole functionality of
3748 unmemocar and scm_unmemocar is not needed any more, scm_unmemocar
3749 has its old content back and is deprecated, while unmemocar has
3750 been removed.
3751
3752 (SCM_BIT7): Removed.
3753
3754 (CEVAL): For unmemoizing a single expression, call
3755 unmemoize_expression instead of scm_unmemocopy, which now expects
3756 a sequence of body expressions. Eliminated unnecessary empty
3757 environment frame when executing let* forms. Eliminated
3758 unmemoization step from evaluator.
3759
3760 2004-06-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3761
3762 * eval.c (scm_macroexp, macroexp): Renamed scm_macroexp to
3763 macroexp and made static. Added new version of scm_macroexp that
3764 emits a deprecation warning and then calls macroexp.
3765 (scm_m_undefine): Issue deprecation warning.
3766
3767 2004-05-30 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3768
3769 * eval.c (lookup_global_symbol, literal_p, try_macro_lookup):
3770 Modified to make set! work on symbols that represent syntactic
3771 keywords.
3772
3773 2004-05-26 Han-Wen Nienhuys <hanwen@xs4all.nl>
3774
3775 * gc.h (SCM_CELL_OBJECT_LOC): use SCM_GC_CELL_OBJECT to prevent
3776 compound expression as lvalue errors.
3777
3778 2004-05-24 Marius Vollmer <mvo@zagadka.de>
3779
3780 * dynwind.c (winder_mark): Use SCM_PACK to correctly convert the
3781 WINDER_DATA to a SCM.
3782
3783 2004-05-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3784
3785 * goops.c (compute_getters_n_setters, create_standard_classes,
3786 scm_add_slot): Compute closures by calling scm_i_eval_x on a
3787 lambda expression rather than creating them with scm_closure.
3788
3789 2004-05-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3790
3791 * eval.c (s_macro_keyword, scm_m_set_x): Remove checking for
3792 misplaced syntactic keywords. This will not work unless guile's
3793 defmacro feature is deprecated.
3794
3795 (scm_m_case): Fixed a bug that caused the list of labels to grow
3796 with every case form.
3797
3798 2004-05-19 Kevin Ryde <user42@zip.com.au>
3799
3800 * numbers.c (scm_round_number): For inum and big, just return x. For
3801 real, use scm_round for 2^54-1 etc problems covered there.
3802
3803 * numbers.c (trunc): Remove #define to scm_truncate when the C library
3804 doesn't provide trunc. This was for when `truncate' was done as a
3805 scm_tc7_dsubr, no longer required.
3806
3807 * threads.c (scm_threads_mark_stacks) [SCM_STACK_GROWS_UP]: Correction
3808 to stack marking call, two parameters and no cast on t->base.
3809
3810 2004-05-18 Marius Vollmer <mvo@zagadka.de>
3811
3812 * hashtab.c (rehash_after_gc): Bug fix: properly link the
3813 processed hashtables back into the weak_hashtables list. Thanks
3814 to Bill Schottstaedt!
3815
3816 2004-05-16 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3817
3818 * eval.c (unmemoize_quote): New static function.
3819
3820 (scm_m_quote, scm_m_atslot_ref, SCM_CEVAL): Changed the byte code
3821 representation of 'quote' and '@slot-ref' to an improper list.
3822 This reduces execution time, the number of cells used to hold the
3823 memoized code, and thus also reduces garbage collection time.
3824
3825 (scm_unmemocopy): Use unmemoize_quote for quote expressions.
3826
3827 (SCM_CEVAL): Changed macro handling to also work with macros that
3828 return improper lists. Added an assertion, that the code returned
3829 by a macro transformer will not lead to cycles in the memoized
3830 code.
3831
3832 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3833
3834 No functional change, just rearrangements of functions within the
3835 file.
3836
3837 * eval.c (scm_ilookup, scm_unbound_variable_key,
3838 error_unbound_variable, scm_lookupcar1, scm_lookupcar): Moved to
3839 the definitions used for execution, since that's where they will
3840 belong to later.
3841
3842 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3843
3844 * numbers.h (SCM_SLOPPY_FRACTIONP): Removed. It was not used
3845 throughout guile, has not been part of an official release yet,
3846 and the concept of sloppy predicates has never been a good idea.
3847
3848 (SCM_FRACTION_NUMERATOR, SCM_FRACTION_DENOMINATOR,
3849 SCM_FRACTION_SET_NUMERATOR, SCM_FRACTION_SET_DENOMINATOR):
3850 Simplified.
3851
3852 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3853
3854 * throw.c (SETJBJMPBUF, SCM_SETJBDFRAME): Add cast to scm_t_bits
3855 to make explicit what happens.
3856
3857 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3858
3859 * dynl.c (SET_DYNL_HANDLE): Add cast to scm_t_bits to make
3860 explicit what happens.
3861
3862 * guardians.c (TCONC_IN): Use SCM_SET_CELL_OBJECT_x rather than
3863 SCM_SET_CELL_WORD_x when writing scheme objets to cell elements.
3864
3865 2004-05-11 Marius Vollmer <mvo@zagadka.de>
3866
3867 * scmsigs.c (scm_sigaction_for_thread): Validate that the handler
3868 is indeed a procedure when it isn't a number.
3869
3870 2004-05-10 Marius Vollmer <mvo@zagadka.de>
3871
3872 Convert floating point numbers into strings with an arbitrary
3873 radix. Thanks to Richard Todd!
3874
3875 * numbers.c (FLOBUFLEN): Increase so that radix 2 strings will
3876 fit.
3877 (fx): Removed.
3878 (scm_dblprec, fx_per_radix, init_dblprec, init_fx_radix,
3879 number_chars): New, to support variable radices.
3880 (idbl2str): Use above instead of the old base-10 only tables.
3881 (iflo2str): Pass on new RADIX argument to idbl2str.
3882 (scm_number_to_string): Pass radix to iflo2str.
3883 (scm_print_real, scm_print_complex): Explicitly pass radix 10 to
3884 iflo2str.
3885 (scm_init_numbers): Call init_dblprec and init_fx_radix for all
3886 possible radices.
3887
3888 2004-05-10 Kevin Ryde <user42@zip.com.au>
3889
3890 * numbers.c (scm_logbit_p): Correction to test above the end of an
3891 inum. Reported by Jan Konecny.
3892
3893 2004-05-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3894
3895 * gc.h (scm_t_cell): Fields are now of type SCM instead of
3896 scm_t_bits. Updated all users.
3897 (SCM_GC_CARD_SIZE_MASK): Use SCM_GC_SIZEOF_CARD instead of
3898 duplicating the code.
3899 (SCM_CELL_OBJECT_LOC): New.
3900 (SCM_CARLOC, SCM_CDRLOC): Use it instead of SCM_CELL_WORD_LOC.
3901 (SCM_CELL_WORD_LOC): Moved to "deprecated.h".
3902
3903 * smob.h (SCM_SMOB_DATA_2, SCM_SMOB_DATA_3, SCM_SMOB_FLAGS,
3904 SCM_SET_SMOB_DATA_2, SCM_SET_SMOB_DATA_3, SCM_SET_SMOB_FLAGS,
3905 SCM_SMOB_OBJECT, SCM_SMOB_OBJECT_2, SCM_SMOB_OBJECT_3,
3906 SCM_SET_SMOB_OBJECT, SCM_SET_SMOB_OBJECT_2, SCM_SET_SMOB_OBJECT_3,
3907 SCM_SMOB_OBJECT_LOC, SCM_SMOB_OBJECT_2_LOC,
3908 SCM_SMOB_OBJECT_3_LOC): New.
3909 * smob.c (scm_i_set_smob_flags): New function.
3910
3911 * dynl.c, dynwind.c, eval.h, fluids.h, futures.h, hashtab.h,
3912 hooks.h, keywords.h, macros.h, macros.c, mallocs.c, mallocs.h,
3913 random.h, regex-posix.h, root.h, srcprop.h, srcprop.c, threads.h:
3914 Use SCM_SMOB_* instead of SCM_CELL_* as appropriate. Use
3915 SCM_SMOB_FLAGS and SCM_SET_SMOB_FLAGS instead of accessing the
3916 zeroth word directly. Use SCM_SMOB_PREDICATE as appropriate.
3917
3918 * numbers.h (SCM_I_BIG_MPZ): Use SCM_CELL_OBJECT_LOC instead of
3919 taking the address of SCM_CELL_WORD_1, the latter being no longer
3920 an lvalue.
3921
3922 * variable.h (SCM_VARIABLE_LOC): Use SCM_CELL_OBJECT_LOC instead
3923 of casting SCM_CELL_WORD_LOC.
3924
3925 2004-05-02 Kevin Ryde <user42@zip.com.au>
3926
3927 * eval.c (scm_macroexp): Add prototype, since it's not in eval.h under
3928 --disable-deprecated. Reported by Andreas Vögele.
3929
3930 * filesys.c (_POSIX_C_SOURCE): Define to 199506L to get readdir_r (in
3931 particular on HP-UX). Reported by Andreas Vögele.
3932
3933 * list.c (varargs.h): Remove, leave just stdarg.h which is all the
3934 code has support for. Fixes building with AIX cc, which is ansi but
3935 doesn't define __STDC__. Reported by Keith Crane.
3936 (var_start): Remove macro, this variation no longer required.
3937 (scm_list_n): Use va_start directly.
3938
3939 2004-05-01 Kevin Ryde <user42@zip.com.au>
3940
3941 * continuations.c (scm_dynthrow): Use >= instead of SCM_PTR_GE which
3942 is now gone. Reported by Andreas Vögele.
3943
3944 2004-04-28 Kevin Ryde <user42@zip.com.au>
3945
3946 * backtrace.c (display_frame_expr), numbers.c (XDIGIT2UINT,
3947 mem2uinteger, mem2decimal_from_point, mem2ureal): Cast char to int for
3948 ctype.h tests, to avoid warnings from gcc on HP-UX about char as array
3949 subscript. Reported by Andreas Vögele.
3950 Also cast through unsigned char to avoid passing negatives to those
3951 macros if input contains 8-bit values.
3952
3953 * num2integral.i.c (NUM2INTEGRAL): Under non-BIGMPZ_FITSP case,
3954 corrections to range check for signed numbers. Remove
3955 scm_remember_upto_here_1(num) from these checks, since num is used
3956 subsequently anyway.
3957
3958 * num2integral.i.c (NUM2INTEGRAL): Test BIGMPZ_FITSP with "!= 0" to
3959 avoid warning from gcc 3.4. Reported by Hyperdivision.
3960
3961 * numbers.c (scm_bit_extract): Use min instead of MIN.
3962 (MIN): Remove, this conflicts with similar macro defined by limits.h
3963 on HP-UX. Reported by Andreas Vögele.
3964
3965 * stime.c (_POSIX_C_SOURCE): Define to 199506L to get gmtime_r (in
3966 particular on HP-UX). Reported by Andreas Vögele.
3967
3968 * threads.c (scm_threads_mark_stacks): Correction sizet -> size_t.
3969 Reported by Andreas Vögele.
3970
3971 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 25*sizeof(long),
3972 for the benefit of hpux11 where pthread_mutex_t is 88 bytes. Reported
3973 by Andreas Vögele.
3974
3975 2004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3976
3977 * eval.c (s_macro_keyword): New static identifier.
3978
3979 (scm_m_define): Change order to first create binding and
3980 evaluating the expression afterwards.
3981
3982 (scm_m_set_x): Memoize complete set! expression. Only leave
3983 symbols if no binding exists at memoization time. Throw error if
3984 assigning to a syntactic keyword.
3985
3986 (lazy_memoize_variable): New function.
3987
3988 (CEVAL): When execution set!, perform lazy memoization if
3989 unmemoized symbol is detected.
3990
3991 * modules.c (module_variable): Return variables with unbound
3992 value.
3993
3994 * tags.h: Fix comment.
3995
3996 2004-04-25 Kevin Ryde <user42@zip.com.au>
3997
3998 * chars.c (scm_char_upcase, scm_char_downcase, scm_c_upcase,
3999 scm_c_downcase): Use ctype.h toupper and tolower. This will be useful
4000 in 8-bit locales, and ensures consistency with char-upper-case? and
4001 char-lower-case? which already use ctype.h.
4002 (scm_c_upcase_table, scm_c_downcase_table, scm_lowers, scm_uppers):
4003 Remove.
4004 * chars.c, chars.h, init.c (scm_tables_prehistory): Remove.
4005
4006 * socket.c (VALIDATE_INET6): Correction to bignum_in_ipv6_range_p
4007 call. Reported by Hyperdivision.
4008
4009 * threads.c (scm_yield): Correction, actually call scm_thread_yield.
4010 Reported by Hyperdivision.
4011
4012 * unif.c (s_scm_make_uve): Remove unused local variable. Reported by
4013 Hyperdivision.
4014
4015 2004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4016
4017 Hide the implementation of ilocs and isyms in eval.c.
4018
4019 * deprecated.h (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4020 SCM_ICDRP), eval.c (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4021 SCM_ICDRP), eval.h (SCM_ICDR, SCM_IFRINC, SCM_IFRAME, SCM_IDIST,
4022 SCM_ICDRP): Deprecated and added to deprecated.h. Moved from
4023 eval.h to eval.c.
4024
4025 * deprecated.c (scm_isymnames), deprecated.h (scm_isymnames,
4026 SCM_ISYMNUM, SCM_ISYMCHARS), eval.c (SCM_ISYMNUM, isymnames,
4027 scm_unmemocopy, CEVAL), print.c (scm_isymnames), tags.h
4028 (SCM_ISYMNUM, scm_isymnames, SCM_ISYMCHARS): Deprecated
4029 scm_isymnames, SCM_ISYMNUM and SCM_ISYMCHARS and added to
4030 deprecated.[hc]. Moved scm_isymnames from print.c to eval.c and
4031 renamed to isymnames. Moved SCM_ISYMNUM from tags.h to eval.c and
4032 renamed to ISYMNUM.
4033
4034 * eval.c (scm_i_print_iloc, scm_i_print_isym), eval.h
4035 (scm_i_print_iloc, scm_i_print_isym), print.c (scm_iprin1):
4036 Extracted printing of ilocs and isyms to guile internal functions
4037 scm_i_print_iloc, scm_i_print_isym of eval.c.
4038
4039 2004-04-22 Kevin Ryde <user42@zip.com.au>
4040
4041 * numbers.c (scm_bit_extract): Use SCM_SRS for signed right shift.
4042
4043 * numbers.c (scm_round): Test for x already an integer, to avoid bad
4044 rounding in x+0.5 when x is a big value already an integer. In
4045 certain hardware rounding cases x+0.5 can give an adjacent integer,
4046 leading to that as the result, when we really just wanted x itself.
4047
4048 2004-04-19 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4049
4050 * eval.c (scm_unmemocopy): Fixed unmemoization of let*.
4051
4052 (deval_args, CEVAL): Minor improvements: Reduced variable scopes,
4053 added const qualifiers, cast intentionally unused expressions to
4054 void for emphasis, improved comment.
4055
4056 2004-04-18 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4057
4058 * tags.h (scm_tags, scm_tc8_tags, scm_tc9_flag, scm_tc8_flag,
4059 scm_tc8_isym): Renamed scm_tags to scm_tc8_tags. Renamed
4060 scm_tc9_flag to scm_tc8_flag. Introduced new identifier
4061 scm_tc8_isym. Defined tc8-tags relative to scm_tc3_imm24.
4062 Defined the tc8-tag for flags to be 0x04, which will mean that
4063 SCM_BOOL_F will also have the value 0x04 instead of 0x013c. Due
4064 to the reduced number of bits and the simpler bit pattern for
4065 SCM_BOOL_F, certain machines may be able to use more efficient
4066 processor instructions to deal with SCM_BOOL_F.
4067
4068 (SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA): Removed. These have
4069 never been defined in a released version, thus no need to
4070 deprecate them.
4071
4072 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Flags now use tc8
4073 instead of tc9 tags.
4074
4075 (SCM_ISYMP, SCM_MAKISYM, SCM_ISYMNUM): Isyms now use tc8 instead
4076 of tc9 tags.
4077
4078 (SCM_MAKSPCSYM): Removed. It is almost impossible that user code
4079 could have used this definition.
4080
4081 (SCM_IM_AND, SCM_IM_BEGIN, SCM_IM_CASE, SCM_IM_COND, SCM_IM_DO,
4082 SCM_IM_IF, SCM_IM_LAMBDA, SCM_IM_LET, SCM_IM_LETSTAR,
4083 SCM_IM_LETREC, SCM_IM_OR, SCM_IM_QUOTE, SCM_IM_SET_X): Now encoded
4084 as isyms, as special isyms don't exist any more.
4085
4086 2004-04-18 Kevin Ryde <user42@zip.com.au>
4087
4088 * filesys.c (scm_readdir): Use readdir_r when available, for thread
4089 safety.
4090
4091 * numbers.c (scm_max, scm_min): For big/real, use SCM_SWAP rather than
4092 explicit swapping code.
4093
4094 2004-04-15 Kevin Ryde <user42@zip.com.au>
4095
4096 * cpp_sig_symbols.in: Add SIGSYS.
4097
4098 * list.c (scm_append_x): Use iterative style, to avoid non-tail
4099 recursion.
4100
4101 * numbers.c (scm_max, scm_min): For inum/frac, frac/inum, big/frac,
4102 frac/big and frac/frac, use scm_less_p for exact comparison.
4103
4104 * numbers.c (scm_gcd): For inum/big, use mpz_gcd_ui by sharing code
4105 with big/inum.
4106
4107 * numbers.c (xisinf): Add a comment about solaris 7 lacking isinf.
4108
4109 2004-04-06 Han-Wen Nienhuys <hanwen@xs4all.nl>
4110
4111 * inline.h (scm_cell): use SCM_GC_CELL_WORD for checking tag.
4112
4113 * chars.h (scm_init_chars): change scm_{upcase,downcase} to
4114 scm_c_{up,down}case.
4115 (SCM_MAKE_CHAR): add (unsigned char) cast. This prevents havoc
4116 when hi-bit ASCII is subjected to SCM_MAKE_CHAR().
4117
4118 2004-04-06 Kevin Ryde <user42@zip.com.au>
4119
4120 * numbers.c (scm_ash): Remove stray "}" in docstring.
4121
4122 * numbers.c (scm_make_ratio): For inum/bignum integer detection, use
4123 x==SCM_MOST_NEGATIVE_FIXNUM explicitly, for clarity and to avoid
4124 calling mpz_cmp_ui in most cases.
4125
4126 * numbers.c (scm_quotient, scm_remainder): In inum/big, use mpz_cmp_ui
4127 for big == abs(most-negative-fixnum) special case.
4128 (abs_most_negative_fixnum): Remove, no longer used.
4129
4130 * scmsigs.c (scm_sigaction_for_thread): Correction to signum range
4131 test, avoids SCM_VECTOR_REF outside bounds of signal_handlers on
4132 calling (sigaction NSIG).
4133
4134 * simpos.c (scm_system_star): Fix execargv memory leak, merge parent
4135 and fork error cases to do this.
4136
4137 2004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4138
4139 * eval.c (CEVAL): Don't distinguish between short and long
4140 instructions when dispatching - just always dispatch on the
4141 instruction code, which is common for short and long instructions.
4142 Further, removed unnecessary goto statements and added comment.
4143
4144 2004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4145
4146 * eval.c (scm_unmemocopy): Don't distinguish between short and
4147 long instructions when dispatching - just always dispatch on the
4148 instruction code, which is common for short and long instructions.
4149 Further, removed unnecessary goto statements, fixed indentation
4150 and replaced SCM_IMP predicates by SCM_NULLP.
4151
4152 2004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4153
4154 * eval.c (scm_lookupcar1, CEVAL): Use SCM_ILOCP instead of
4155 comparison with SCM_ILOC00. In CEVAL, eliminate goto-label
4156 'checkmacro'.
4157
4158 2004-03-31 Kevin Ryde <user42@zip.com.au>
4159
4160 * simpos.c: Include <signal.h> for SIG_IGN and friends.
4161
4162 2004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4163
4164 Introduce scm_debug_mode_p as a replacement for scm_debug_mode and
4165 SCM_DEBUGGINGP:
4166
4167 * debug.h (scm_debug_mode_p, scm_debug_mode, SCM_DEBUGGINGP),
4168 eval.c (scm_debug_mode_p): Deprecated scm_debug_mode and
4169 SCM_DEBUGGINGP. Provided scm_debug_mode_p instead, to have one
4170 single interface that also matches the naming conventions.
4171 Probably scm_debug_mode_p should be part of the private interface
4172 anyway.
4173
4174 * debug.h (scm_debug_mode_p), backtrace.c (display_error_body),
4175 eval.c (SCM_APPLY, scm_trampoline_0, scm_trampoline_1,
4176 scm_trampoline_2): Change uses of scm_debug_mode or SCM_DEBUGGINGP
4177 to scm_debug_mode_p.
4178
4179
4180 Deprecate direct access to scm_ceval, scm_deval and scm_ceval_ptr:
4181
4182 * eval.h (scm_ceval, scm_deval, scm_ceval_ptr), debug.h
4183 (scm_ceval_ptr): Deprecated. Moved declaration of scm_ceval_ptr
4184 from debug.h to eval.h.
4185
4186 * debug.h (SCM_RESET_DEBUG_MODE): Don't access scm_ceval_ptr any
4187 more, just leave it with setting scm_debug_mode_p, which is
4188 equivalent for practical purposes.
4189
4190 * deprecated.h (SCM_XEVAL, SCM_XEVALCAR): Call scm_i_eval_x
4191 instead of *scm_ceval_ptr. Leave all evaluating to scm_i_eval_x.
4192
4193 * gdbint.c (gdb_eval): Call scm_i_eval_x instead of scm_ceval.
4194
4195 * eval.c (ceval, deval, scm_ceval, scm_deval): Made scm_ceval
4196 static and renamed it to ceval throughout. Provide a new exported
4197 but deprecated function scm_ceval as a wrapper for backwards
4198 compatibility. The same is done for the deval/scm_deval pair of
4199 functions.
4200
4201 * eval.c (CEVAL, SCM_CEVAL): Renamed SCM_CEVAL to CEVAL
4202 throughout. Defined CEVAL to ceval or deval, based on compilation
4203 phase.
4204
4205 * eval.c (SCM_XEVAL, SCM_XEVALCAR): Dispatch on scm_debug_mode_p
4206 to ceval and deval instead of calling *scm_ceval_ptr.
4207
4208 * eval.c (dispatching_eval): New deprecated static function.
4209
4210 * eval.c (scm_ceval_ptr): Initialized to dispatching_eval in order
4211 to emulate its old behaviour as closely as possible.
4212
4213
4214 Change the evaluator such that only expressions for which pair? is
4215 true are passed to CEVAL, and such that all other expressions are
4216 evaluated outside of CEVAL:
4217
4218 * eval.c (EVAL): New, provided in analogy to EVALCAR. Evaluate an
4219 expression that is assumed to be memoized already. All but
4220 expressions of the form '(<form> <form> ...)' are evaluated inline
4221 without calling an evaluator.
4222
4223 * eval.c (SCM_XEVAL, SCM_XEVALCAR, EVALCAR): Evaluate all but
4224 expressions of the form '(<form> <form> ...)' inline without
4225 calling an evaluator.
4226
4227 * eval.c (scm_i_eval_x, scm_i_eval, scm_ceval, scm_deval): Handle
4228 the special case of unmemoized symbols passed on the top level.
4229
4230 * eval.c (CEVAL): Change calls to CEVAL to EVAL, except where it
4231 is known that the expression passed to CEVAL is of the form
4232 '(<form> <form> ...)'. Remove handling of the tc7-objects, since
4233 now it is known that the input expression of CEVAL is a pair.
4234
4235 2004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4236
4237 * eval.c (is_self_quoting_p): New static function.
4238
4239 (scm_m_quote): Use is_self_quoting_p.
4240
4241 (copy_tree): Corrected typo in comment.
4242
4243 2004-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
4244
4245 * eval.c (s_scm_copy_tree): idem.
4246
4247 * list.c (s_scm_filter): remove "pointer" from doc string.
4248
4249 * gc.h (SCM_GC_CELL_TYPE): SCM_GC_CELL_TYPE uses SCM_GC_CELL_OBJECT.
4250
4251 * goops.h (SCM_NUMBER_OF_SLOTS): don't SCM_UNPACK the result.
4252
4253 * backtrace.c ("display_backtrace_body"): SCM_PACK before SCM_EQ_P
4254 (display_frame): idem.
4255 (display_backtrace_file_and_line): idem.
4256
4257 * tags.h (SCM_UNPACK): stricter typechecking on SCM_UNPACK
4258 arguments.
4259
4260 2004-03-26 Kevin Ryde <user42@zip.com.au>
4261
4262 * filesys.c (scm_getcwd, scm_readlink): Avoid memory leak on errors.
4263
4264 * numbers.c (scm_modulo): For inum/big and big/big, remove test of
4265 big==0 since that never occurs.
4266
4267 * numbers.c, numbers.h (scm_modulo_expt): Renamed from
4268 scm_modular_expt, matching scheme level name `modulo-expt'.
4269
4270 * numbers.c (scm_modular_expt): Return a negative remainder for a
4271 negative divisor, the same as `modulo' does.
4272
4273 2004-03-26 Eric Hanchrow <offby1@blarg.net>
4274
4275 * numbers.c, numbers.h (scm_modular_expt): New function.
4276
4277 2004-03-25 Kevin Ryde <user42@zip.com.au>
4278
4279 * numbers.c (scm_min, scm_max): Correction to big/real and real/big,
4280 return inexact as required by r5rs.
4281
4282 2004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4283
4284 * eval.c: Separated some definitions relevant for execution from
4285 the memoization part of the file.
4286
4287 (copy_tree): New static function
4288
4289 (scm_copy_tree): Rewritten to fix two kinds or bugs: First, cyclic
4290 structures are detected now and will lead to an exception instead
4291 of forcing guile to run in an endless loop, using up all the
4292 system's memory. Second, arrays in the cdr of an improper list
4293 are now copied. See the new test cases in eval.test.
4294
4295 2004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4296
4297 * posix.c (scm_gethostname): Make sure len is initialised before
4298 it is used. Restructured to (hopefully) represent possible
4299 configurations more clearly in the code. Added unwind handler.
4300
4301 2004-03-23 Kevin Ryde <user42@zip.com.au>
4302
4303 * posix.c (scm_gethostname): Use sysconf(_SC_HOST_NAME_MAX) and/or
4304 MAXHOSTNAMELEN when available.
4305
4306 2004-03-21 Marius Vollmer <mvo@zagadka.de>
4307
4308 * read.c (skip_scsh_block_comment): Also recognize '\r' as a line
4309 terminator. Rewritten the logic as a state machine, I must have
4310 been doing too much VHDL lately...
4311
4312 * eval.c (scm_ceval, scm_deval): Explicitely evaluate ports to
4313 themselves. Thanks to Han-Wen Nienhuys!
4314
4315 * list.c: Changed docstrings so that they no longer talk about
4316 returning 'pointers' to something.
4317
4318 2004-03-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
4319
4320 * gc.c: remove set_debug_cell_accesses! when
4321 SCM_DEBUG_CELL_ACCESSES is not defined. Scheme source code should
4322 use (if (defined? 'set-debug-cell-accesses!) .. ) to switch on
4323 debugging conditionally.
4324
4325 2004-03-21 Kevin Ryde <user42@zip.com.au>
4326
4327 * stime.c (scm_gmtime): Use gmtime_r when available, for thread safety.
4328
4329 2004-03-20 Kevin Ryde <user42@zip.com.au>
4330
4331 * posix.c (scm_gethostname): Preserve errno across free() call.
4332
4333 2004-03-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
4334
4335 * gc-card.c (sweep_card): use SCM_GC_SET_CELL_WORD for setting
4336 free cells.
4337
4338 2004-03-14 Kevin Ryde <user42@zip.com.au>
4339
4340 * stime.c: Define _GNU_SOURCE for strptime prototype from glibc.
4341 (strptime): Use HAVE_DECL_STRPTIME for when to give own prototype.
4342
4343 2004-03-07 Kevin Ryde <user42@zip.com.au>
4344
4345 * stime.c (scm_gmtime): Return bd_time->tm_zone when available, rather
4346 than "GMT" always.
4347 (filltime): Make zname parameter "const".
4348
4349 2004-03-03 Mikael Djurfeldt <mdj@chunk.mit.edu>
4350
4351 * threads.c, threads.h (scm_c_scm2thread): New function.
4352
4353 2004-02-29 Kevin Ryde <user42@zip.com.au>
4354
4355 * numbers.c (guile_ieee_init): Use C99 INFINITY and NAN when
4356 available. Test HAVE_DINFINITY and HAVE_DQNAN for those globals, in
4357 particular don't assume "defined (__alpha__) && ! defined (linux)"
4358 means OSF. Remove "SCO" code, which was not really SCO specific and
4359 which John W. Eaton advises should be long past being needed.
4360
4361 * posix.c (scm_execl, scm_execlp, scm_execle): Avoid memory leak under
4362 error throw.
4363
4364 2004-02-24 Kevin Ryde <user42@zip.com.au>
4365
4366 * posix.c (scm_cuserid): Use a private result buffer, for thread safe.
4367
4368 2004-02-22 Kevin Ryde <user42@zip.com.au>
4369
4370 * numbers.c (scm_max, scm_min): For one arg, dispatch to generic for
4371 complex, same as for two args. (Handle only inum, big, real, frac).
4372
4373 2004-02-21 Kevin Ryde <user42@zip.com.au>
4374
4375 * posix.c (scm_crypt): Use new HAVE_CRYPT.
4376 (<crypt.h>): Remove HAVE_LIBCRYPT condition.
4377 Reported by Andreas Voegele.
4378
4379 2004-02-20 Neil Jerram <neil@ossau.uklinux.net>
4380
4381 * list.c (scm_list_n): Add #if SCM_DEBUG_CELL_ACCESSES_P around
4382 validation.
4383
4384 * read.c (scm_lreadparen): Removed.
4385 (scm_lreadparen1): Renamed scm_i_lreadparen.
4386
4387 2004-02-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
4388
4389 * list.c (scm_list_n): validate non-immediate arguments;
4390 this will catch forgotten a SCM_UNDEFINED.
4391
4392 2004-02-18 Marius Vollmer <mvo@zagadka.de>
4393
4394 * gc.h (scm_gc_cells_collected): Removed duplicated declaration.
4395 Thanks to Bill Schottstaedt!
4396
4397 * socket.h (scm_gethost): Removed prototype it is already in
4398 "net_db.h". Thanks to Bill Schottstaedt!
4399
4400 2004-02-18 Kevin Ryde <user42@zip.com.au>
4401
4402 * num2integral.i.c (INTEGRAL2BIG): WORDS_BIGENDIAN not right for word
4403 order parameter to mpz_import, in fact with just one word there's no
4404 order to worry about at all.
4405
4406 * numbers.c (scm_num_eq_p): For real==frac, complex==frac, frac==real
4407 and frac==complex, make an exact comparison rather than converting
4408 with fraction2double.
4409
4410 * posix.c, putenv.c, stime.c (environ): Use _NSGetEnviron in Darwin
4411 shared library, since environ is not directly available there.
4412
4413 * script.c (scm_shell_usage): Print to stdout for --help, per GNU
4414 standard.
4415
4416 * stime.c (scm_localtime, scm_gmtime, scm_mktime): Provide a default
4417 errno EINVAL in case localtime and gmtime don't set it.
4418 (scm_mktime, scm_strptime): Forcibly use errno EINVAL for our
4419 SCM_SYSERROR, since mktime and strptime generally don't set errno.
4420
4421 2004-02-16 Kevin Ryde <kevin@swox.se>
4422
4423 * gc-malloc.c (scm_done_malloc, scm_done_free): Allow negative sizes,
4424 which were permitted in the past for these.
4425
4426 * num2float.i.c (NUM2FLOAT): Expand isfinite to !xisinf, as per
4427 previous change to numbers.c.
4428
4429 * script.c (scm_shell_usage): Print bug-guile email address, as per
4430 GNU standard. Reported by Han-Wen Nienhuys.
4431
4432 2004-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
4433
4434 * unif.c (scm_make_uve): Removed local variable and simplified
4435 code in order to avoid compiler used uninitialized warnings.
4436
4437 * hashtab.c, hashtab.h (scm_hash_map_to_list): Renamed from
4438 scm_hash_map.
4439 (scm_hash_fold): Use scm_call_3 directly in the call to
4440 scm_internal_hash_fold instead of going via fold_proc (which is
4441 now removed).
4442 (scm_hash_for_each): Use a trampoline +
4443 scm_internal_hash_for_each_handle.
4444 (scm_internal_hash_for_each_handle, scm_hash_for_each_handle): New
4445 functions.
4446
4447 2004-02-12 Kevin Ryde <user42@zip.com.au>
4448
4449 * ports.c (scm_port_line): In docstring, note first line is 0.
4450 (scm_set_port_line_x): In docstring, note first line is 0.
4451 (scm_port_column): In docstring, there's no default to current input
4452 port, and remove shared port-line @defun.
4453 (scm_set_port_column_x): In docstring, there's no default to current
4454 input port, note first column is 0, remove shared set-port-line!
4455 @defun.
4456
4457 * ramap.c (scm_array_fill_x): For fvect and dvect, use scm_num2dbl to
4458 convert args the same way that array-set! does.
4459
4460 * unif.c (scm_make_uve, scm_array_p): Allow fraction 1/3 as prototype
4461 for dvect.
4462 (scm_array_p): Add missing "break"s in switch, fix llvect test look
4463 for "l" not "s", fix dvect to be false for singp(prot) since such a
4464 value is for fvect.
4465 (scm_array_prototype): Return 1/3 for dvect, rather than 0.33..33.
4466 (exactly_one_third): New variable.
4467 (scm_init_unif): Initialize it.
4468
4469 2004-02-10 Neil Jerram <neil@ossau.uklinux.net>
4470
4471 * read.c (scm_read_opts): Change `escaped-parens' to
4472 `elisp-strings'.
4473
4474 2004-02-08 Neil Jerram <neil@ossau.uklinux.net>
4475
4476 * read.c (scm_read_opts): New opts `elisp-vectors' and
4477 `escaped-parens'.
4478 (s_vector): New.
4479 (scm_lreadr): Use scm_lreadparen1 instead of scm_lreadparen. Make
4480 handling of elisp vector syntax dependent on SCM_ENABLE_ELISP and
4481 `elisp-vectors' option instead of SCM_ELISP_READ_EXTENSIONS.
4482 Allow "\(" and "\)" in strings when SCM_ENABLE_ELISP defined and
4483 `escaped-parens' option set.
4484 (scm_read_token): If elisp vector syntax active, disallow [ and ]
4485 in tokens.
4486 (scm_lreadparen): Rewrite as interface to scm_lreadparen1.
4487 (scm_lreadparen1): New.
4488
4489 * read.h: Remove conditionally compiled last arg to
4490 scm_lreadparen.
4491 (SCM_ELISP_VECTORS_P, SCM_ESCAPED_PARENS_P): New.
4492
4493 2004-01-23 Han-Wen Nienhuys <hanwen@xs4all.nl>
4494
4495 * eval.c (m_expand_body): remove stray variable new_body.
4496
4497 2004-01-22 Marius Vollmer <mvo@zagadka.de>
4498
4499 * eval.c (m_expand_body): Rewrite the expression in place (by
4500 overwriting FORMS) also when a letrec is constructed, not only
4501 when no definitions are found. Do not return rewritten expression
4502 to emphasize the in-place rewriting. Changed all users.
4503
4504 2004-01-19 Han-Wen Nienhuys <hanwen@xs4all.nl>
4505
4506 * gc.c: add protected_object_count, a number that is dumped from
4507 gc_stats()
4508
4509 2004-01-11 Marius Vollmer <mvo@zagadka.de>
4510
4511 * dynwind.h, dynwind.c (scm_frame_unwind,
4512 scm_frame_unwind_handler): Renamed and changed all uses.
4513 (scm_frame_rewind, scm_frame_rewind_handler): Likewise.
4514
4515 2004-01-11 Kevin Ryde <user42@zip.com.au>
4516
4517 * unif.c (scm_bit_count, scm_bit_position, s_scm_bit_set_star_x,
4518 s_scm_bit_count_star, s_scm_bit_invert_x): Clarify docstrings, as per
4519 changes made to scheme-compound.texi.
4520
4521 2004-01-10 Marius Vollmer <mvo@zagadka.de>
4522
4523 * print.c (scm_print_symbol_name): Handle #{`foo}#, #{,foo}#,
4524 #{.}#, and all numeric strings specially. Thanks to Paul Jarc!
4525
4526 * guile-snarf.in: Use mkdir to create a unique temporary directory
4527 that we can safely use. Thanks to Stefan Nordhausen!
4528
4529 2004-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4530
4531 * dynwind.h, dynwind.c (scm_i_dowinds): Removed 'explicit'
4532 argument since it is always zero now. Changed all callers.
4533 Removed code for handling fluids.
4534
4535 * fluids.c (scm_c_with_fluids): Use frames instead of adding to
4536 the wind chain explicitely. Use scm_c_with_fluid for the common
4537 case of only one fluid.
4538 (scm_with_fluid): New.
4539 (scm_c_with_fluid): Use frames instead of scm_c_with_fluids.
4540
4541 * fluids.h, fluids.c (scm_frame_fluid): New.
4542 (scm_with_fluid): New.
4543 (scm_i_swap_fluids, scm_i_swap_fluids_reverse): Removed.
4544
4545 * dynwind.c (scm_frame_end): Do not use scm_i_dowinds. Instead,
4546 do the unwinding directly. It is simple enough.
4547
4548 * dynwind.h, dynwind.c: Did the following renamings:
4549 scm_begin_frame -> scm_frame_begin,
4550 scm_end_frame -> scm_frame_end,
4551 scm_on_unwind -> scm_frame_unwind,
4552 scm_on_rewind -> scm_frame_rewind,
4553 scm_on_unwind_with_scm -> scm_frame_unwind_with_scm,
4554 scm_on_rewind_with_scm -> scm_frame_rewind_with_scm.
4555 Changed all uses.
4556
4557 * aync.h, async.c: Did the follwing renamings:
4558 scm_with_blocked_asyncs -> scm_frame_block_asyncs,
4559 scm_with_unblocked_asyncs -> scm_frame_unblock_asyncs.
4560 Changed all uses.
4561
4562 * ports.h, ports.c: Did the follwing renamings:
4563 scm_with_current_input_port -> scm_frame_current_input_port,
4564 scm_with_current_output_port -> scm_frame_current_output_port,
4565 scm_with_current_error_port -> scm_frame_current_error_port.
4566 Changed all uses.
4567
4568 2004-01-07 Kevin Ryde <user42@zip.com.au>
4569
4570 * numbers.c (s_bignum): Remove, not used since gmp bignums.
4571 Reported by Richard Todd.
4572
4573 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 12*sizeof(long),
4574 for the benefit of powerpc-apple-darwin5.5. Reported by Richard Todd.
4575
4576 * unif.c (scm_aind): Test SCM_CONSP rather than !SCM_NULLP while
4577 traversing the args list, fixes segv if an improper list is given.
4578 Reported by Rouben Rostamian.
4579
4580 2004-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4581
4582 * ports.c (swap_ports, scm_with_current_foo_port): Do not allocate
4583 swap_data on stack, use a 'malloc obj'.
4584
4585 * fluids.h, fluids.c (scm_make_initial_fluids, scm_copy_fluids,
4586 scm_swap_fluids, scm_swap_fluids_reverse): Renamed to
4587 scm_i_... since they are internal. Changed all uses.
4588
4589 * dynwind.c (frame_print): Removed, use the default printer.
4590 (WINDER_F_MARK, WINDER_MARK_P, winder_mark): New.
4591 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New. Use above
4592 to protect SCM values.
4593
4594 * dynwind.h (SCM_F_WIND_EXPLICITELY,
4595 SCM_F_WIND_EXPLICITLY): It's "explicitly" not "explicitely", damn.
4596 Changed all uses.
4597 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New.
4598
4599 2004-01-05 Marius Vollmer <mvo@zagadka.de>
4600
4601 * ports.h, ports.c (scm_with_current_input_port,
4602 scm_with_current_output_port, scm_with_current_error_port): New.
4603
4604 * async.h, async.c (scm_with_blocked_asyncs,
4605 scm_with_unblocked_asyncs): New.
4606
4607 2004-01-03 Marius Vollmer <mvo@zagadka.de>
4608
4609 * dynwind.h, scm_dynwind.c (scm_t_frame_flags, scm_t_wind_flags,
4610 scm_begin_frame, scm_end_frame, scm_on_unwind, scm_on_rewind):
4611 New.
4612 (scm_dowinds, scm_i_dowinds): scm_dowinds has been renamed to
4613 scm_i_dowinds and extended to handle frames and to invoke a 'turn'
4614 function when the outermost wind point has been reached. The
4615 latter is used to copy a continuation stack at the right time.
4616 scm_dowinds remains available.
4617 (SCM_GUARDSP, SCM_BEFORE_GUARD, SCM_AFTER_GUARD, SCM_GUARD_DATA,
4618 tc16_guard, guards_print): Removed.
4619 (scm_internal_dynamic_wind): Reimplemented using frames.
4620
4621 * continuations.c (copy_stack): New, do only the stack copying
4622 part of copy_stack_and_call.
4623 (copy_stack_and_call): Copy the stack after unwinding and before
4624 rewinding.
4625 (scm_dynthrow): Do not call scm_dowinds, this is now done by
4626 copy_stack_and_call.
4627
4628 2004-01-04 Kevin Ryde <user42@zip.com.au>
4629
4630 * numbers.c (scm_less_p): Don't convert frac to float for compares,
4631 can give bad results due to rounding.
4632
4633 * stime.c (scm_current_time, scm_gettimeofday): Add a comment about
4634 setzone/restorezone protection for DOS.
4635
4636 2003-12-26 Marius Vollmer <mvo@zagadka.de>
4637
4638 * gen-scmconfig.h.in, gen-scmconfig.c: Arrange for scm_t_intmax
4639 and scm_t_uintmax to be defined in scmconfig.h
4640
4641 2003-12-03 Kevin Ryde <user42@zip.com.au>
4642
4643 * numbers.c (scm_less_p): Remove spurious xisnan from frac+big case.
4644
4645 * numbers.c (scm_make_ratio): Check for numerator equal to
4646 SCM_MOST_NEGATIVE_FIXNUM and bignum denominator the negative of that,
4647 giving integer -1.
4648
4649 * numbers.c (scm_real_part): Return fraction unchanged rather than
4650 converting to flonum.
4651
4652 2003-11-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
4653
4654 * modules.c (module_variable): Fixed (and thus simplified) the
4655 definition of SCM_BOUND_THING_P to reflect the fact that since
4656 after the 1.4 series of guile, obarrays only hold variable
4657 objects.
4658
4659 2003-11-30 Marius Vollmer <mvo@zagadka.de>
4660
4661 * numbers.c (scm_logand): It's "#b...", not "#\b...".
4662
4663 From Paul Jarc:
4664
4665 * read.c (scm_lreadr): Signal an error for invalid escape
4666 sequences in strings. Code cleanups too.
4667
4668 * print.c (scm_iprin1): use \xNN hexadecimal sequences when
4669 writing control characters in strings.
4670
4671 2003-11-21 Marius Vollmer <mvo@zagadka.de>
4672
4673 * ports.c (scm_drain_input): Bug fix: only access the port after
4674 checking that it indeed is one.
4675
4676 2003-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
4677
4678 * eval.c (s_bad_define): New static identifier.
4679
4680 (m_body): Fixed comment.
4681
4682 (scm_m_define): Don't generate memoized code for definitions that
4683 are not on the top level. As a consequence, no memoized code at
4684 all is generated for definitions any more: Top level definitions
4685 are executed immediately during memoization and internal
4686 definitions are handled separately in m_expand_body.
4687
4688 (scm_unmemocopy, unmemocopy): Removed code for unmemoizing
4689 definitions. Consequently, there is no unmemoizing code any more
4690 that might modify the environment. Thus, the old scm_unmemocopy
4691 is removed and the old unmemocopy is renamed to scm_unmemocopy.
4692
4693 (SCM_CEVAL): The SCM_IM_DEFINE keyword can no longer occur in
4694 memoized code. Call EVALCAR for continuations. Prefer !SCM_NULLP
4695 over SCM_NIMP in places, where the argument is known to be part of
4696 a proper list.
4697
4698 2003-11-21 Kevin Ryde <user42@zip.com.au>
4699
4700 * numbers.c (scm_abs): Allocate a new real only for negatives, as done
4701 for bignums.
4702
4703 * numbers.c (scm_bit_extract): Use mpz functions, rearrange inum case
4704 to share some shifting.
4705
4706 * numbers.c (scm_integer_expt): Don't mpz_init after scm_i_clonebig or
4707 scm_i_mkbig, since they do so already. Don't mpz_clear a bignum SCM,
4708 since gc does this.
4709
4710 2003-11-19 Marius Vollmer <mvo@zagadka.de>
4711
4712 * numbers.c (scm_make_ratio): Rewritten to have a simpler
4713 structure. Previously, not all cases with a negative denominator
4714 were covered.
4715
4716 * numbers.c (mem2decimal_from_point): use scm_divide instead of
4717 scm_divide2real when forming the fractional part. This allows
4718 "#e1.2" to yield 6/5.
4719
4720 * numbers.c (scm_i_fraction_equalp): Do not treat the return value
4721 of scm_equal_p as a C boolean, use SCM_FALSEP. Previously, all
4722 fractions were equal to each other regardless of value. Ooops.
4723
4724 * numbers.c (scm_rationalize): Return an inexact result when given
4725 inexact arguments.
4726
4727 * numbers.c (scm_exact_p, scm_inexact_p): Throw error for
4728 non-numbers.
4729
4730 2003-11-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4731
4732 Support for exact fractions from Bill Schottstaedt! Thanks!
4733
4734 * print.c (scm_iprin1): Handle fractions.
4735
4736 * objects.h (scm_class_fraction): New.
4737 * objects.c (scm_class_fraction): New.
4738 (scm_class_of): Handle fractions.
4739
4740 * hash.c (scm_hasher): Handle fractions.
4741
4742 * numbers.c: New code for handling fraction all over the place.
4743 (scm_odd_p, scm_even_p): Handle inexact integers.
4744 (scm_rational_p): New function, same as scm_real_p.
4745 (scm_round_number, scm_truncate_number, scm_ceiling, scm_floor):
4746 New exact functions that replace the inexact 'dsubr'
4747 implementations.
4748 (scm_numerator, scm_denominator): New.
4749
4750 * numbers.h (SCM_NUMP): Recognize fractions.
4751 (SCM_FRACTIONP, SCM_SLOPPY_FRACTIONP, SCM_FRACTION_NUMERATOR,
4752 SCM_FRACTION_DENOMINATOR, SCM_FRACTION_SET_NUMERATOR,
4753 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
4754 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
4755 SCM_FRACTION_REDUCED): New.
4756 (scm_floor, scm_ceiling, scm_truncate_number, scm_round_number):
4757 New prototypes.
4758 (scm_make_ratio, scm_rationalize, scm_numerator, scm_denominator,
4759 scm_rational_p): New prototypes.
4760 (scm_i_dbl2num, scm_i_fraction2double, scm_i_fraction_equalp,
4761 scm_i_print_fraction): New prototypes.
4762
4763 * goops.c (create_standard_classes): Create "<fraction>" class.
4764
4765 * gc-mark.c (scm_gc_mark_dependencies): Handle fractions.
4766
4767 * gc-card.c (scm_i_sweep_card): Include scm_tc16_fraction as a
4768 case in the switch, but do nothing for now.
4769
4770 * eval.c (SCM_CEVAL, SCM_APPLY, call_dsubr_1): Convert fractions
4771 to doubles when calling 'dsubr' functions.
4772
4773 * eq.c (scm_eqv_p, scm_equal_p): Handle fractions.
4774
4775 2003-11-18 Rob Browning <rlb@defaultvalue.org>
4776
4777 * gen-scmconfig.c (main): remove public definition of
4778 SCM_SIZEOF___INT64 and SCM_SIZEOF_UNSIGNED___INT64 and add
4779 direct typedef of long_long and ulong_long inside deprecated block
4780 when appropriate.
4781
4782 * deprecated.h: move long_long and ulong_long definitions to
4783 gen-scmconfig.c so that we don't need to add SCM_SIZEOF___INT64
4784 and SCM_SIZEOF_UNSIGNED___INT64 to the public namespace.
4785
4786 2003-11-17 Marius Vollmer <mvo@zagadka.de>
4787
4788 * hash.c (scm_string_hash): New hashing algorithm that takes the
4789 complete string into account.
4790
4791 * eval.c (scm_m_generalized_set_x): Macroexpand the target when it
4792 is a list. This allows (@ ...) to work with set!.
4793 (scm_m_generalized_set_x): Use ASSERT_SYNTAX_2 instead of
4794 SCM_ASSYNT.
4795
4796 * script.c (scm_compile_shell_switches): Use scm_c_read_string for
4797 the "-e" option instead of scm_str2symbol. This allows things
4798 like (@ ...) to be specified for the entry point.
4799
4800 2003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
4801
4802 * eval.c (scm_m_letstar): Create memoized code in place to
4803 minimize consing.
4804
4805 2003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
4806
4807 * eval.c (s_splicing): Commented and reformulated.
4808
4809 (lookup_global_symbol, lookup_symbol): New static functions.
4810
4811 (s_test, s_bindings, s_duplicate_bindings, s_variable): Removed.
4812
4813 (try_macro_lookup, literal_p): Use lookup_symbol instead of
4814 creating a temporary pair for scm_lookupcar.
4815
4816 (scm_unmemocar, unmemocar): Renamed scm_unmemocar to unmemocar,
4817 created deprecated wrapper function scm_unmemocar.
4818
4819 (SCM_VALIDATE_NON_EMPTY_COMBINATION, scm_sym_else,
4820 scm_sym_unquote, scm_sym_uq_splicing, scm_sym_enter_frame,
4821 scm_sym_apply_frame, scm_sym_exit_frame, scm_sym_trace, f_apply,
4822 undefineds, sym_three_question_marks): Moved around without
4823 modifications.
4824
4825 * eval.c, eval.h (scm_macroexp, scm_unmemocar): Deprecated.
4826
4827 2003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
4828
4829 * eval.c (try_macro_lookup, expand_user_macros, is_system_macro_p,
4830 m_expand_body, scm_m_expand_body): Grouped together with m_body.
4831 No further modifications.
4832
4833 2003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
4834
4835 * eval.c (s_mixed_body_forms): New static identifier.
4836
4837 (canonicalize_define, scm_m_define): The check for a bad
4838 expression is performed in canonicalize_define now.
4839
4840 (try_macro_lookup, expand_user_macros, is_system_macro_p): New
4841 static helper functions for m_expand_body.
4842
4843 (m_expand_body): Use ASSERT_SYNTAX to signal syntax errors. Only
4844 expand user defined macros. Fixed handling of the definition/
4845 expression boundary. Fixed handling of definitions grouped with
4846 'begin. Use canonicalize_define to expand definitions.
4847
4848 2003-11-13 Marius Vollmer <mvo@zagadka.de>
4849
4850 * read.c (scm_lreadr): detect EOF after backslash, and interpret
4851 \xNN hexadecimal sequences. From Paul Jarc, thanks!
4852
4853 * snarf.h (SCM_SMOB, SCM_GLOBAL_SMOB, SCM_SMOB_MARK,
4854 SCM_GLOBAL_SMOB_MARK, SCM_SMOB_FREE, SCM_GLOBAL_SMOB_FREE,
4855 SCM_SMOB_PRINT, SCM_GLOBAL_SMOB_PRINT, SCM_SMOB_EQUALP,
4856 SCM_GLOBAL_SMOB_EQUALP, SCM_SMOB_APPLY, SCM_GLOBAL_SMOB_APPLY):
4857 New macros from Paul Jarc. Thanks!
4858
4859 * gc_os_dep.c (scm_get_stack_base): Provide a definition that
4860 return NULL when the machine type is unknown. Previously,
4861 gc_os_dep.c would refuse to compile.
4862
4863 2003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
4864
4865 * eval.c (scm_m_body, m_body, scm_m_lambda, memoize_named_let,
4866 scm_m_let, scm_m_letrec, m_expand_body): Renamed static function
4867 scm_m_body to m_body.
4868
4869 2003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
4870
4871 * eval.c, eval.h (scm_m_expand_body, m_expand_body): Deprecated
4872 public use of scm_m_expand_body in eval.h. In eval.c, renamed
4873 scm_m_expand_body to m_expand_body and made it static. Added
4874 deprecated wrapper scm_m_expand_body.
4875
4876 (scm_eval_body, SCM_CEVAL, SCM_APPLY): Use m_expand_body instead
4877 of scm_m_expand_body.
4878
4879 2003-11-09 Kevin Ryde <user42@zip.com.au>
4880
4881 * dynl.c (scm_dynamic_unlink): Need scm_list_1 on error message
4882 argument. Reported by Mike Gran.
4883
4884 2003-11-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
4885
4886 * eval.c (s_missing_body_expression): New static identifier.
4887
4888 (s_body): Removed.
4889
4890 (scm_m_expand_body): Fixed core dump when passing a body with
4891 defines, but without expressions (see additions to syntax.test).
4892 Use ASSERT_SYNTAX to signal syntax errors.
4893
4894 2003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
4895
4896 * eval.c (canonicalize_define): New static helper function.
4897
4898 (memoize_define, canonicalize_define): Extract handling of
4899 function currying to canonicalize_define.
4900
4901 2003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
4902
4903 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
4904 Make sure that error checking in debug mode is not worse than in
4905 standard mode.
4906
4907 2003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
4908
4909 * eval.c (scm_m_body, scm_m_lambda): Documentation strings are not
4910 handled in scm_m_body any more, but rather in scm_m_lambda.
4911
4912 (scm_m_body, memoize_named_let, scm_m_let, scm_m_letstar,
4913 scm_m_letrec, scm_m_expand_body): Check for validity is done by
4914 calling functions of scm_m_body.
4915
4916 (scm_m_lambda): Avoid unnecessary consing when creating the
4917 memoized code.
4918
4919 2003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
4920
4921 * eval.c (s_expression): Added comment.
4922
4923 (s_empty_combination, error_unbound_variable): New static
4924 identifiers.
4925
4926 (SCM_VALIDATE_NON_EMPTY_COMBINATION, SCM_EVALIM2, scm_lookupcar1):
4927 Use ASSERT_SYNTAX, syntax_error or error_unbound_variable to
4928 signal syntax errors.
4929
4930 (SCM_CEVAL): Separated handling of evaluator bytecodes and other
4931 scheme objects.
4932
4933 2003-10-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
4934
4935 * eval.c (unmemocar, sym_three_question_marks, scm_unmemocar):
4936 Grouped together with unmemocopy, without modifications.
4937
4938 (build_binding_list, unmemocopy): Renamed names of list arguments
4939 and variables to reflect the actual order of the list elements.
4940
4941 2003-10-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
4942
4943 * eval.c (s_defun): New static identifier.
4944
4945 (scm_m_nil_cond, scm_m_atfop, scm_m_undefine): Add comments. Use
4946 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
4947 when creating the memoized code.
4948
4949 2003-10-19 Kevin Ryde <user42@zip.com.au>
4950
4951 * numbers.c (scm_ash): Revise docstring as per recent update to manual.
4952
4953 * numbers.c (scm_i_big2dbl): Rewrite, carefully rounding to "closest"
4954 in accordance with R5RS, which just mpz_get_d doesn't really give.
4955
4956 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
4957
4958 * eval.c (s_bad_slot_number): New static identifier.
4959
4960 (scm_m_atslot_ref, scm_m_atslot_set_x): Use ASSERT_SYNTAX to
4961 signal syntax errors. Avoid unnecessary consing when creating the
4962 memoized code.
4963
4964 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
4965
4966 * eval.c (scm_m_cont, scm_m_at_call_with_values,
4967 scm_m_generalized_set_x): Use ASSERT_SYNTAX to signal syntax
4968 errors. Avoid unnecessary consing when creating the memoized
4969 code.
4970
4971 (scm_m_generalized_set_x): Let scm_m_set_x handle the R5RS
4972 standard case. Make sure line and file information are copied to
4973 every created expression.
4974
4975 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
4976
4977 * eval.c (scm_m_set_x, scm_m_apply, scm_m_atbind): Use
4978 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
4979 when creating the memoized code.
4980
4981 (scm_m_atbind): Reversed the order, in which the init expressions
4982 are stored and executed. The order of execution is now equal to
4983 the order in which the initializers of the let-forms are executed.
4984 Use check_bindings and transform_bindings.
4985
4986 (SCM_CEVAL): Eliminated SCM_NIMP in favor of more appropriate
4987 !SCM_NULLP. Added some comments.
4988
4989 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
4990
4991 * eval.c: Sorted include files alphabetically.
4992
4993 (scm_m_begin): Added comment.
4994
4995 (scm_m_or): Use ASSERT_SYNTAX to signal syntax errors. Avoid
4996 unnecessary consing when creating the memoized code.
4997
4998 (iqq, scm_m_quasiquote, scm_m_quote): Use ASSERT_SYNTAX to signal
4999 syntax errors. Be more specific about the kind of error that was
5000 detected.
5001
5002 (scm_m_quote, unmemocopy): As an optimization, vector constants
5003 are now inserted unquoted into the memoized code. During
5004 unmemoization the quotes are added again to provide syntactically
5005 correct code.
5006
5007 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5008
5009 * eval.c (scm_m_let, scm_m_letstar, scm_m_letrec,
5010 scm_m_expand_body, check_bindings): Extracted syntax checking of
5011 bindings to new static function check_bindings.
5012
5013 (scm_m_let, memoize_named_let): Extracted handling of named let to
5014 new static function memoize_named_let.
5015
5016 (transform_bindings, scm_m_let, scm_m_letstar, scm_m_letrec): Use
5017 ASSERT_SYNTAX to signal syntax errors. Be more specific about the
5018 kind of error that was detected. Avoid use of SCM_CDRLOC. Avoid
5019 unnecessary consing when creating the memoized code.
5020
5021 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5022
5023 * eval.c (s_bad_formals, s_bad_formal, s_duplicate_formal): New
5024 static identifiers.
5025
5026 (s_clauses, s_formals, s_duplicate_formals): Removed.
5027
5028 (scm_m_lambda): Use ASSERT_SYNTAX to signal syntax errors. Be more
5029 specific about the kind of error that was detected. Prepare for
5030 easier integration of changes for separated memoization.
5031
5032 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5033
5034 * eval.c (s_duplicate_binding): New static identifier.
5035
5036 (scm_m_case): Call scm_c_memq instead of implementing it inline.
5037
5038 (scm_m_define): Added comment about how we check for duplicate
5039 formals.
5040
5041 (scm_m_do): Added check for duplicate bindings.
5042
5043 (scm_m_if): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5044 unnecessary consing when creating the memoized code.
5045
5046 (scm_c_improper_memq, c_improper_memq, scm_m_lambda): Renamed
5047 scm_c_improper_memq to c_improper_memq, since it is not exported.
5048
5049 (transform_bindings): Call scm_c_memq rather than
5050 scm_c_improper_memq.
5051
5052 (SCM_CEVAL): Simplified handling of SCM_IM_IF forms.
5053
5054 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5055
5056 * eval.c (s_bad_bindings, s_bad_binding, s_bad_exit_clause): New
5057 static identifiers.
5058
5059 (scm_m_do): Use ASSERT_SYNTAX to signal syntax errors. Be more
5060 specific about the kind of error that was detected. Avoid use of
5061 SCM_CDRLOC. Avoid unnecessary consing when creating the memoized
5062 code, this way also making sure that file name, line number
5063 information etc. remain available.
5064
5065 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5066
5067 * eval.c (memoize_as_thunk_prototype): New static function.
5068
5069 (scm_m_delay, scm_m_future): Use memoize_as_thunk_prototype.
5070 Avoid unnecessary consing when creating the memoized code.
5071
5072 2003-10-12 Kevin Ryde <user42@zip.com.au>
5073
5074 * list.c (scm_append): Track argument number and use in error.
5075
5076 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5077
5078 * eval.c (s_missing_expression, s_bad_variable): New static
5079 identifiers.
5080
5081 (scm_m_define): Use ASSERT_SYNTAX to signal syntax errors. Prefer
5082 R5RS terminology for the naming of variables. Be more specific
5083 about the kind of error that was detected. Make sure file name,
5084 line number etc. are added to all freshly created expressions.
5085 Avoid unnecessary consing when creating the memoized code.
5086
5087 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5088
5089 * eval.c (s_extra_expression, s_misplaced_else_clause,
5090 s_bad_cond_clause, s_missing_recipient): New static identifiers.
5091
5092 (s_extra_case_clause): Removed.
5093
5094 (scm_m_case, scm_m_cond): If a clause appears after an else
5095 clause, report a misplaced else clause.
5096
5097 (scm_m_cond): Use ASSERT_SYNTAX to signal syntax errors. Be more
5098 specific about the kind of error that was detected. Handle bound
5099 'else and '=>. Avoid unnecessary consing when creating the
5100 memoized code.
5101
5102 (scm_m_cond, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
5103 the syntactic keyword 'else and SCM_IM_ARROW to memoize the
5104 syntactic keyword '=>.
5105
5106 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5107
5108 * eval.c (scm_m_case): Allow empty lists of case labels.
5109
5110 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5111
5112 * tags.h (SCM_IM_ELSE, SCM_IM_ARROW): New memoizer codes.
5113
5114 * print.c (scm_isymnames): Add names for the new memoizer codes.
5115
5116 * eval.c (s_missing_clauses, s_bad_case_clause,
5117 s_extra_case_clause, s_bad_case_labels, s_duplicate_case_label,
5118 literal_p): New static identifiers.
5119
5120 (scm_m_case): Use ASSERT_SYNTAX to signal syntax errors. Be more
5121 specific about the kind of error that was detected. Check for
5122 duplicate case labels. Handle bound 'else. Avoid unnecessary
5123 consing when creating the memoized code.
5124
5125 (scm_m_case, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
5126 the syntactic keyword 'else.
5127
5128 2003-10-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
5129
5130 * eval.c (s_bad_expression, syntax_error_key, syntax_error,
5131 ASSERT_SYNTAX, ASSERT_SYNTAX_2): New static identifiers.
5132
5133 (scm_m_and): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5134 unnecessary consing when creating the memoized code.
5135
5136 2003-10-09 Kevin Ryde <user42@zip.com.au>
5137
5138 * numbers.c (scm_inexact_to_exact): Don't depend on what double->long
5139 cast gives for values bigger than a long, or for nan or inf.
5140
5141 2003-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
5142
5143 * smob.h (scm_make_smob_type): Made the declaration match the
5144 definition.
5145
5146 2003-10-07 Marius Vollmer <mvo@zagadka.de>
5147
5148 * goops.c, objects.h, smob.c, smob.h: Make type names char
5149 const * instead of char *. Thanks to Paul Jarc!
5150
5151 2003-10-02 Kevin Ryde <user42@zip.com.au>
5152
5153 * strports.c (scm_call_with_output_string): scm_get_output_string
5154 rather than scm_strport_to_string, so as to guard against the port
5155 having been closed by the called procedure. Reported by Nic Ferrier.
5156
5157 2003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5158
5159 * numbers.h (SCM_INEXACTP): Removed uses of SCM_TYP16S.
5160
5161 * tags.h, deprecated.h (SCM_TYP16S): Deprecated and moved from
5162 tags.h to deprecated.h.
5163
5164 2003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5165
5166 This set of patches introduces a new tc7 code scm_tc7_number for
5167 numbers. Bignums, reals and complex numbers are turned from smobs
5168 into subtypes of scm_tc7_number.
5169
5170 * tags.h (scm_tc7_number): New.
5171
5172 * eq.c (scm_equal_p), eval.c (SCM_CEVAL), evalext.c
5173 (scm_self_evaluating_p), gc-card.c (scm_i_sweep_card), gc-mark.c
5174 (scm_gc_mark_dependencies), goops.c (create_smob_classes), hash.c
5175 (scm_hasher), numbers.c, numbers.h (SCM_NUMP), objects.c
5176 (scm_class_of), print.c (scm_iprin1), smob.c
5177 (scm_smob_prehistory): Don't handle bignums, reals and complex
5178 numbers as subtypes of scm_tc7_smob any more.
5179
5180 * numbers.h, tags.h (scm_tc16_big, scm_tc16_real,
5181 scm_tc16_complex): Moved definitions from tags.h to numbers.h.
5182
5183 2003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5184
5185 * numbers.c (scm_make_complex), gc-card.c (scm_i_sweep_card): Use
5186 sizeof (scm_t_complex) to determine the memory size of the
5187 malloc'd area for complex numbers.
5188
5189 2003-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
5190
5191 * numbers.c (scm_bigequal): Fixed.
5192
5193 2003-09-16 Marius Vollmer <mvo@zagadka.de>
5194
5195 * stime.c (scm_current_time): 'time' does not set errno so don't
5196 use SCM_SYSERROR for reporting errors.
5197
5198 2003-09-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5199
5200 This set of patches eliminates the dependency between the
5201 implementation of evaluator specific memoization codes and special
5202 constants like #f, '() etc. ('flags'), which are not evaluator
5203 specific. The goal is to remove definitions of evaluator
5204 memoization codes completely from the public interface. This will
5205 make it possible to experiment more freely with optimizations of
5206 guile's internal representation of memoized code.
5207
5208 * objects.c (scm_class_of): Eliminate dependency on SCM_ISYMNUM.
5209
5210 * print.c (iflagnames): New array, holding the printed names of
5211 guile's special constants ('flags').
5212
5213 (scm_isymnames): Now holds only the printed names of the
5214 memoization codes.
5215
5216 (scm_iprin1): Separate the handling of memoization codes and
5217 guile's special constants.
5218
5219 * tags.h (scm_tc9_flag, SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA,
5220 SCM_IFLAGNUM): new
5221
5222 (scm_tc8_char, scm_tc8_iloc, SCM_BOOL_F, SCM_BOOL_T,
5223 SCM_UNDEFINED, SCM_EOF_VAL, SCM_EOL, SCM_UNSPECIFIED, SCM_UNBOUND,
5224 SCM_ELISP_NIL, SCM_IM_DISPATCH, SCM_IM_SLOT_REF,
5225 SCM_IM_SLOT_SET_X, SCM_IM_DELAY, SCM_IM_FUTURE,
5226 SCM_IM_CALL_WITH_VALUES, SCM_IM_NIL_COND, SCM_IM_BIND): Changed
5227 values.
5228
5229 (SCM_IFLAGP): SCM_IFLAGP now only tests for flags.
5230
5231 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Generalized to use the
5232 tc9 macros and scm_tc9_flag.
5233
5234 2003-09-15 Marius Vollmer <mvo@zagadka.de>
5235
5236 * posix.c (scm_setgroups): Check that the gid list is not too
5237 long. Thanks to Paul Jarc!
5238
5239 2003-09-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
5240
5241 * tags.h: Reduced the number of short instructions from 14 to 13.
5242 The typecode of the former 14th short instruction is now used to
5243 represent long instructions. Changed some comments to reflect
5244 this fact.
5245
5246 (SCM_MAKISYM): ISYMs get a new tc7 code, namely the one that was
5247 previously used by SCM_IM_DEFINE.
5248
5249 (SCM_IM_DEFINE): Turned into a long instruction.
5250
5251 * eval.c (unmemocopy, SCM_CEVAL): Treat SCM_IM_DEFINE as a long
5252 instruction.
5253
5254 * eval.c (SCM_CEVAL): Since characters and iflags have now a tc7
5255 code that is separate from all instructions, one level of dispatch
5256 for long instructions can be eliminated.
5257
5258 * print.c (scm_isymnames): Removed some commented code.
5259
5260 2003-09-12 Marius Vollmer <mvo@zagadka.de>
5261
5262 * __scm.h (SCM_FENCE): Use __memory_barrier with the Intel
5263 compiler on IA64.
5264
5265 * hashtab.h (scm_tc16_hashtable): Added "extern" declaration.
5266
5267 * modules.c (scm_module_reverse_lookup): Check that the obarray
5268 really is a hashtable and do nothing if not.
5269
5270 * inline.h: Use "extern inline" only with GCC. Use "static
5271 inline" else.
5272
5273 2003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5274
5275 * numbers.h (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Removed uses
5276 of SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
5277
5278 * numbers.h, deprecated.h (SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP,
5279 SCM_SLOPPY_COMPLEXP): Deprecated and moved from numbers.h to
5280 deprecated.h.
5281
5282 2003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5283
5284 * eq.c (scm_eqv_p, scm_equal_p): Removed uses of
5285 SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
5286
5287 * eq.c (scm_eqv_p, scm_equal_p): Reordered comparisons from
5288 0.0==some_expression to some_expression==0.0. The latter is
5289 better readable. The former is preferred by some people, since it
5290 leads to a compiler error when confusing == with =. However, when
5291 using gcc, a warning will be issued if in an if-statement an
5292 assigment appears. Since many Guile developers are using gcc,
5293 such errors will not remain unnoticed anyway. We can therefore
5294 focus on better readability.
5295
5296 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5297
5298 * tags.h: Added description of Guile's type system. Removed some
5299 old and misleading comments.
5300
5301 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5302
5303 * unit.c (scm_cvref): Eliminate unnecessary uses of SCM_NIMP,
5304 SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
5305
5306 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5307
5308 * numbers.h (SCM_MAKINUM): Define in terms of scm_tc2_int.
5309
5310 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Define in terms of the
5311 respective SLOPPY macro.
5312
5313 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5314
5315 * eq.c (scm_equal_p): Use SCM_TYP7 to check if an object is of
5316 type string, not SCM_TYP7S.
5317
5318 2003-09-03 Kevin Ryde <user42@zip.com.au>
5319
5320 * numbers.c (scm_lognot): Correction to docstring, ones-complement not
5321 2s-complement.
5322
5323 * stime.c (scm_strptime): Add comment about glibc strptime %s and
5324 current timezone requiring SCM_DEFER_INTS.
5325
5326 2003-08-30 Neil Jerram <neil@ossau.uklinux.net>
5327
5328 * script.c (scm_compile_shell_switches): Make -s switch optional
5329 if file to be loaded does not begin with a `-'. (Thanks to Aaron
5330 VanDevender for the patch!)
5331
5332 2003-08-30 Kevin Ryde <user42@zip.com.au>
5333
5334 * numbers.c (scm_lognot): Rewrite using ~ and mpz_com, for directness
5335 and to have non-integer types rejected as per other logical funcs.
5336
5337 2003-08-28 Kevin Ryde <user42@zip.com.au>
5338
5339 * gc.h (scm_remember_upto_here_1): Revise comments on the asm form.
5340
5341 2003-08-23 Kevin Ryde <user42@zip.com.au>
5342
5343 * simpos.c (scm_system): Remove SCM_DEFER_INTS, system() should be
5344 thread safe, and could take a long time too.
5345
5346 2003-08-22 Kevin Ryde <user42@zip.com.au>
5347
5348 * numbers.c (scm_difference): Correction to bignum - negative inum.
5349
5350 2003-08-14 Kevin Ryde <user42@zip.com.au>
5351
5352 * gc.h (scm_remember_upto_here_1, scm_remember_upto_here_2)
5353 [__GNUC__]: Use volatile asm macros rather than a function call.
5354 * gc.c (scm_remember_upto_here_1, scm_remember_upto_here_2): Undefine
5355 macros while defining functions.
5356
5357 * simpos.c (getenv): Use <stdlib.h> for prototype.
5358 (scm_system): In docstring, refer to status:exit-val rather than
5359 "functions above".
5360
5361 2003-08-09 Kevin Ryde <user42@zip.com.au>
5362
5363 * srcprop.c (scm_source_properties): Return plist from hash if it's a
5364 list set by source-properties! rather than an SRCPROPS object,
5365
5366 2003-07-29 Kevin Ryde <user42@zip.com.au>
5367
5368 * properties.c (scm_primitive_property_ref): In docstring, note
5369 parameters to not-found-proc, use hyphens rather than underscores for
5370 that parameter name.
5371 (scm_primitive_property_set_x): In docstring, VAL is the value
5372 parameter not CODE.
5373
5374 2003-07-27 Marius Vollmer <mvo@zagadka.de>
5375
5376 * print.c (scm_print_symbol_name): handle more weird characters by
5377 escaping the symbol name properly. Thanks to Paul Jarc!
5378
5379 * posix.h (scm_setgroups): New prototype.
5380 * posix.c (scm_setgroups): New. Thanks to Paul Jarc!
5381 (scm_getgroups): Handle groups ids that don't fit into a fixnum.
5382 Don't use SCM_WRITABLE_VELTS.
5383
5384 * gc.h (SCM_GC_SET_CELL_BVEC): New.
5385 * gc-card.c (scm_i_init_card_freelist): Use it. Thanks to
5386 Matthias Koeppe!
5387
5388 * __scm.h (SCM_C_INLINE_KEYWORD): New.
5389 * numbers.c: Use it in place of SCM_C_INLINE so that the code
5390 compiles when SCM_C_INLINE is undefined.
5391
5392 2003-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
5393
5394 * __scm.h: Reformulated the architecture and compiler properties
5395 in terms of properties of scm_t_bits and SCM variables rather than
5396 in terms of c standard types. This is since it is not known which
5397 of the standard types scm_t_bits and SCM variables will be defined
5398 to.
5399
5400 2003-07-24 Kevin Ryde <user42@zip.com.au>
5401
5402 * numbers.c (scm_angle): Use scm_flo0 for non-negative inum, bignum
5403 and real.
5404
5405 2003-07-18 Kevin Ryde <user42@zip.com.au>
5406
5407 * numbers.c (scm_product): In complex * bignum, correction to
5408 REAL/IMAG fetch, x is the complex, not y.
5409
5410 2003-07-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5411
5412 * numbers.c (scm_odd_p, scm_even_p): Bugfix: Treat result of
5413 scm_inf_p test as Scheme values.
5414 (scm_sum): Bugfix: Normalize bignum created from a negative bignum
5415 and a positive inum.
5416 Use GNU indentation style.
5417
5418 2003-07-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5419
5420 * values.c (scm_values): Build lists of length 1 by using
5421 scm_list_1 instead of using scm_cons.
5422
5423 2003-07-10 Kevin Ryde <user42@zip.com.au>
5424
5425 * deprecation.c (scm_c_issue_deprecation_warning_fmt): Add va_end.
5426 * list.c (scm_list_n): Ditto.
5427
5428 * gc-malloc.c (scm_gc_realloc): Define "ptr" at start of function.
5429
5430 2003-07-08 Matthias Koeppe <mkoeppe@merkur.math.uni-magdeburg.de>
5431
5432 * tags.h (scm_t_bits, scm_t_signed_bits, etc): Avoid solaris empty
5433 defines of INTPTR_MAX and UINTPTR_MAX, combine conditionals for
5434 scm_t_bits and scm_t_signed_bits to avoid any chance of one and not
5435 the other using intptr_t.
5436
5437 2003-07-08 Kevin Ryde <user42@zip.com.au>
5438
5439 * numbers.c (scm_make_polar): Use sincos, when available.
5440 (scm_magnitude): Use hypot.
5441
5442 * ports.c (scm_char_ready_p, scm_peek_char): In docstrings, don't use
5443 @footnote since it doesn't go through to guile-procedures.txt.
5444
5445 * threads.c (scm_call_with_new_thread): In docstring, use "( )"
5446 outside @var to quieten makeinfo, and use @code.
5447
5448 2003-07-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5449
5450 * gc-malloc.c (decrease_mtrigger): new function
5451 (increase_mtrigger): new function, separate debug registering and
5452 mtrigger administration.
5453 (scm_gc_realloc): bugfix: do mtrigger administration before the
5454 actual realloc, for the realloc might invalidate a GC-d segment of
5455 memory. Thanks to Sam Hocevar for pointing this out.
5456 (scm_gc_realloc): use scm_malloc_reregister instead of
5457 unregistering and registering in sequence.
5458
5459 2003-07-03 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5460
5461 * __scm.h (SCM_ASSERT): change "else" expansion to "do { } while (0)"
5462
5463 2003-07-02 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5464
5465 * __scm.h (SCM_ASRTGO): add "else" to macro expansions with if
5466 clauses.
5467
5468 2003-06-29 Marius Vollmer <mvo@zagadka.de>
5469
5470 * deprecated.h (SCM_OPDIRP, scm_fport, scm_option, scm_srcprops,
5471 scm_srcprops_chunk, scm_info_frame, scm_stack, scm_array,
5472 scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_FUNC_NAME, SCM_WTA,
5473 RETURN_SCM_WTA, SCM_VALIDATE_NUMBER_COPY,
5474 SCM_VALIDATE_NUMBER_DEF_COPY, SCM_VALIDATE_OPDIR): Re-added from
5475 the release_1_6 branch.
5476
5477 2003-06-25 Stefan Jahn <stefan@lkcc.org>
5478
5479 * continuations.c: Redeclaration of getcontext() via the
5480 __asm__ ("getcontext") directive.
5481
5482 * continuations.h: Include <ucontext.h> instead of
5483 <sys/ucontext.h>.
5484
5485 2003-06-21 Kevin Ryde <user42@zip.com.au>
5486
5487 * numbers.c (_GNU_SOURCE): #define, to get C99 things.
5488 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, $asinh, $acosh,
5489 $atanh, truncate): Use C library asinh, acosh, atanh and trunc, when
5490 available.
5491 (scm_inexact_to_exact): Expand isfinite to its definition !xisinf.
5492 (isfinite): Remove, conflicts with C99 isfinite().
5493
5494 2003-06-19 Marius Vollmer <mvo@zagadka.de>
5495
5496 * deprecated.h, deprecated.c (scm_strhash, scm_sym2ovcell_soft,
5497 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
5498 scm_symbol_value0, scm_string_to_obarray_symbol scm_intern_symbol,
5499 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
5500 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp): Re-added from
5501 the release_1_6 branch.
5502
5503 2003-06-14 Stefan Jahn <stefan@lkcc.org>
5504
5505 * threads.h: Redefined scm_getspecific() and scm_setspecific()
5506 to be functions instead of macros.
5507
5508 * threads.c: Conditionalized inclusion of <sys/time.h> and
5509 <unistd.h>.
5510 (scm_getspecific, scm_setspecific): Made these two function
5511 real part of the API.
5512
5513 * posix.c (s_scm_putenv): Added some code to make a
5514 (putenv "FOO="), i.e. setting an empty string, work also on
5515 Win32 systems. Thanks to Kevin Ryde for the proposal.
5516
5517 2003-06-12 Kevin Ryde <user42@zip.com.au>
5518
5519 * posix.c (scm_putenv): Free temporary ptr in mingw unset. Add
5520 freebsd to comment about need to use unsetenv.
5521
5522 2003-06-02 Marius Vollmer <mvo@zagadka.de>
5523
5524 * ports.c (scm_peek_char): Safe the column of the port around the
5525 getc/ungetc calls. Thanks to Dr. Peter Ivanyi!
5526
5527 2003-06-07 Kevin Ryde <user42@zip.com.au>
5528
5529 * tags.h: Use inttypes.h and stdint.h when available, for INTPTR_MAX
5530 and friends required by scm_t_bits setups.
5531
5532 2003-06-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5533
5534 * tags.h (scm_tc2_int): Added.
5535
5536 * tags.h (scm_tc3_int_1, scm_tc3_int_2): Expressed in terms of
5537 scm_tc2_int.
5538
5539 * tags.h (scm_tcs_cons_imcar, scm_tcs_cons_nimcar, scm_tcs_struct,
5540 scm_tcs_closures): Hard coded values replaced by symbolic ones.
5541
5542 2003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
5543
5544 * eval.c: Partially undid my patch from 2003-05-31. This patch
5545 caused the segfault referenced in the previous changelog entry.
5546
5547 2003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
5548
5549 * tags.h: Fixed comment about the immediate type code layout.
5550
5551 * eval.c: Fixed handling of non-special instructions. Without
5552 this patch, guile will segfault on (#\0) and similar instructions.
5553
5554 2003-06-05 Kevin Ryde <user42@zip.com.au>
5555
5556 * numbers.c (scm_max, scm_min): For inum, bignum and real, if other
5557 operand is NaN, then return NaN. Also avoid passing NaN to mpz_cmp_d.
5558
5559 * read.c (scm_input_error): Pass arg list parameter to scm_error_scm,
5560 rather than SCM_EOL. Needed by "Unknown # object" case in scm_lreadr.
5561
5562 2003-06-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5563
5564 * __scm.h, gc-card.c (SCM_DEBUG_DEBUGGER_SUPPORT,
5565 SCM_DEBUG_DEBUGGING_SUPPORT): Renamed macro
5566 SCM_DEBUG_DEBUGGER_SUPPORT to SCM_DEBUG_DEBUGGING_SUPPORT and
5567 generalized it to apply not only to C level functions but also to
5568 scheme level functions.
5569
5570 * debug.c, debug.h, eval.c (make-iloc, scm_make_iloc, iloc?,
5571 scm_iloc_p, dbg-make-iloc, scm_dbg_make_iloc, dbg-iloc?,
5572 scm_dbg_iloc_p): Moved functions scm_make_iloc, scm_iloc_p to
5573 eval.c, made them available under SCM_DEBUG_DEBUGGING_SUPPORT == 1
5574 only and renamed them to scm_dbg_make_iloc, scm_dbg_iloc_p,
5575 respectively.
5576
5577 * deprecated.h, eval.c, eval.h (SCM_ILOC00, SCM_IDINC,
5578 SCM_IDSTMSK): Deprecated. The macro definitions are moved from
5579 eval.h into eval.c and a copy is placed into deprecated.h.
5580
5581 * eval.c, eval.h (SCM_MAKE_ILOC): Removed from eval.h and placed
5582 into eval.c. This definition was not part of the API in any
5583 officially released version of guile and thus does not need to go
5584 through a phase of deprecation.
5585
5586 2003-06-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5587
5588 * deprecated.c, deprecated.h, eval.c, eval.h (scm_s_expression,
5589 scm_s_test, scm_s_body, scm_s_bindings, scm_s_variable,
5590 scm_s_clauses, scm_s_formals): Deprecated. In eval.c the
5591 definitions are make static and renamed from scm_s_xxx to s_xxx.
5592 In deprecated.c the original definitions are copied.
5593
5594 * deprecated.h, eval.c, eval (SCM_EVALIM2, SCM_EVALIM, SCM_XEVAL,
5595 SCM_XEVALCAR): Deprecated. The macro definitions are moved from
5596 eval.h into eval.c and a copy (slightly modified to work in user
5597 code) is placed into deprecated.h.
5598
5599 * eval.c: Use the local static s_xxx definitions instead of the
5600 scm_s_xxx definitions throughout.
5601
5602 2003-06-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5603
5604 This set of patches separates the representation of the cxr family
5605 of functions (car, cdr etc.) from the dsubr family of functions
5606 (i. e. functions that take a double precision floating point
5607 argument). Further, the algorithm for handling the cxr function
5608 is improved.
5609
5610 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_1), numbers.c
5611 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, scm_round, floor,
5612 ceil, sqrt, fabs, exp, log, sin, cos, tan, asin, acos, atan, sinh,
5613 cosh, tanh), objects.c (scm_class_of), procprop.c
5614 (scm_i_procedure_arity), ramap.c (scm_array_map_x), tags.h
5615 (scm_tc7_dsubr, scm_tcs_subrs): Introduce scm_tc7_dsubr as new
5616 typecode for the dsubr family of functions.
5617
5618 * ramap.c (ramap_cxr, ramap_dsubr): Renamed ramap_cxr to
5619 ramap_dsubr.
5620
5621 * eval.c (SCM_CEVAL, SCM_APPLY, call_cxr_1), pairs.c
5622 (scm_init_pairs): Make use of the (now usable) second cell element
5623 of a scm_tc7_cxr function to implement the cxr family of functions
5624 more efficiently.
5625
5626 2003-05-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
5627
5628 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_0,
5629 scm_trampoline_1, scm_trampoline_2): Postpone error cases to the
5630 end of an if-else-if-sequence of checks.
5631
5632 2003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
5633
5634 * eval.c (SCM_CEVAL): Improved readability of call-with-values
5635 execution. Generalize apply_closure to apply_proc and use that
5636 for call-with-values.
5637
5638 2003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
5639
5640 * eval.c (SCM_CEVAL): Avoid one level of indirection when applying
5641 a non closure.
5642
5643 2003-05-30 Stefan Jahn <stefan@lkcc.org>
5644
5645 * posix.c (s_scm_putenv): Use the new HAVE_UNSETENV
5646 appropriately for mingw32 hosts.
5647
5648 * numbers.h: Defining copysign(), isnan() and finite() to
5649 be prefixed by a single '_' for mingw32 hosts.
5650
5651 2003-05-30 Kevin Ryde <user42@zip.com.au>
5652
5653 * numbers.c (z_negative_one): New variable.
5654 (scm_init_numbers): Initialize it.
5655 (scm_logcount): Use it and mpz_hamdist to count zeros for negatives.
5656
5657 2003-05-29 Stefan Jahn <stefan@lkcc.org>
5658
5659 * win32-dirent.c: Use malloc() instead of scm_malloc().
5660
5661 * stime.c (s_scm_strftime): Add a type cast to avoid compiler
5662 warning.
5663
5664 * posix.c (s_scm_putenv): Disable use of unsetenv() for the
5665 mingw32 build.
5666
5667 * modules.c (s_scm_module_import_interface): Renamed local
5668 variable interface to _interface. Seems like 'interface'
5669 is a special compiler directive for the mingw32 compiler.
5670
5671 * mkstemp.c: Provide prototype to avoid compiler warning.
5672
5673 * load.c (s_scm_search_path): Fixed absolute and relative
5674 path detections for native Windows platforms.
5675
5676 * gc.h, threads.h: Export some more symbols using SCM_API (necessary
5677 to build on mingw32).
5678
5679 * gc-freelist.c ("s_scm_map_free_list",
5680 "s_scm_gc_set_debug_check_freelist_x"): Fixed use of FUNC_NAME.
5681
5682 * fports.c (fport_fill_input): Disable use of
5683 fport_wait_for_input() on Win32 platforms.
5684
5685 * filesys.c (s_scm_basename): Fixed __MINGW32__ code.
5686
5687 * Makefile.am: Modified some rules for cross compiling.
5688
5689 2003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5690
5691 * eval.c (SCM_CEVAL): In case of an application, all checks for a
5692 proper function object and the correct number of arguments are now
5693 performed in the application part of SCM_CEVAL.
5694
5695 (scm_badformalsp): Removed.
5696
5697 2003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5698
5699 * deprecated.c (scm_read_and_eval_x): Fixed C99-ism.
5700
5701 2003-05-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5702
5703 * num2integral.i.c (NUM2INTEGRAL): Avoid warning about conditional
5704 always being false by inserting preprocessor conditional. (Thanks
5705 to Bruce Korb.)
5706
5707 * __scm.h (SCM_STACK_PTR): New macro. (Cast argument through
5708 (void *) in order to avoid an aliasing warning; thanks to Bruce
5709 Korb.)
5710
5711 * stackchk.h (SCM_STACK_OVERFLOW_P): Use SCM_STACK_PTR.
5712
5713 * threads.c (suspend, launch_thread, scm_threads_mark_stacks): Use
5714 SCM_STACK_PTR.
5715
5716 * threads.c (scm_threads_mark_stacks): Bugfix: Changed
5717 thread->base --> t->base.
5718
5719 * eval.c (SCM_CEVAL): Don't cast argument of SCM_STACK_OVERFLOW_P.
5720
5721 2003-05-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5722
5723 * deprecated.h, deprecated.c (scm_makstr, scm_makfromstr,
5724 scm_variable_set_name_hint, scm_builtin_variable,
5725 scm_internal_with_fluids, scm_make_gsubr,
5726 scm_make_gsubr_with_generic, scm_create_hook, SCM_LIST0,
5727 SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5, SCM_LIST6,
5728 SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify, scm_sloppy_memq,
5729 scm_sloppy_memv, scm_sloppy_member, scm_read_and_eval_x,
5730 scm_subr_entry, SCM_SUBR_DOC, scm_make_subr,
5731 scm_make_subr_with_generic, scm_make_subr_opt,
5732 scm_call_catching_errors, scm_make_smob_type_mfpe,
5733 scm_set_smob_mfpe, scm_strprint_obj, scm_read_0str, scm_eval_0str,
5734 SCM_CHARS, SCM_UCHARS, SCM_LENGTH): Re-added from the release_1_6
5735 branch. Some have been slightly rewritten.
5736 (scm_i_object_chars, scm_i_object_length): New, to support
5737 SCM_CHARS, SCM_UCHARS, and SCM_LENTH.
5738
5739 2003-05-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
5740
5741 * eval.c (scm_m_do, unmemocopy, SCM_CEVAL): Reversed order of
5742 names and inits in the memoized code of do.
5743
5744 2003-05-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5745
5746 * c-tokenize.lex (yyget_lineno, yyget_in, yyget_out, yyget_leng,
5747 yyget_text, yyset_lineno, yyset_in, yyset_out, yyget_debug,
5748 yyset_debug, yylex_destroy): Added prototypes (otherwise we'll get
5749 a compilation error if error-on-warning is enabled).
5750
5751 2003-05-17 Marius Vollmer <mvo@zagadka.de>
5752
5753 * c-tokenize.lex: Gobble up complete lines after a '#'. This
5754 removes preprocessor directives from the snarfage that might
5755 otherwise confuse us. These directives appear when compiling with
5756 "-g3", for example.
5757
5758 2003-05-16 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5759
5760 * ChangeLog: add my surname
5761
5762 * srcprop.c (scm_finish_srcprop): use
5763 scm_gc_register_collectable_memory()
5764 (scm_make_srcprops): idem.
5765
5766 2003-05-14 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5767
5768 * gc-malloc.c (scm_gc_register_collectable_memory): avoid
5769 wrap-around for scm_mtrigger
5770 (scm_gc_register_collectable_memory): abort on overflowing
5771 scm_mallocated().
5772
5773 2003-05-13 Kevin Ryde <user42@zip.com.au>
5774
5775 * numbers.c (xmpz_cmp_d): New macro, handling infs if gmp doesn't.
5776 (scm_num_eq_p, scm_less_p, scm_max, scm_min): Use it.
5777
5778 2003-05-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5779
5780 * backtrace.c (scm_display_error_message): Introduced fancy
5781 printing with max level 7 and length 10. (Purpose: avoid printing
5782 gigantic objects in error messages.)
5783
5784 * print.c, print.h (scm_i_port_with_print_state): New function.
5785
5786 * print.c (scm_iprin1, scm_printer_apply,
5787 scm_port_with_print_state): Use scm_i_port_with_print_state.
5788 (scm_simple_format): Modified not to destroy print states.
5789 (print_state_mutex): New mutex.
5790 (scm_make_print_state, scm_free_print_state, scm_prin1):
5791 Lock/unlock print_state_mutex.
5792
5793 * deprecated.h (SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK):
5794 Use current names in definitions.
5795
5796 2003-05-10 Kevin Ryde <user42@zip.com.au>
5797
5798 * numbers.c (scm_num_eq_p, scm_less_p): Don't pass NaN to mpz_cmp_d.
5799
5800 * numbers.c (scm_integer_length): On negative bignums, adjust
5801 mpz_sizeinbase to account for it looking at absolute value where we
5802 want ones-complement.
5803
5804 * numbers.c (scm_gcd): In bignum/inum, don't pass yy==0 to mpz_gcd_ui
5805 since we're only using the ulong return value, and x might not fit.
5806
5807 2003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5808
5809 * eval.c, eval.h, read.c, read.h (scm_sym_dot): Moved from eval to
5810 read. This will allow to make the definition in read.c static.
5811
5812 2003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5813
5814 * eval.c, eval.h, evalext.c, evalext.h (scm_m_undefine): Moved
5815 from evalext to eval. This will allow to make some of the
5816 definitions in eval.c static.
5817
5818 2003-05-06 Kevin Ryde <user42@zip.com.au>
5819
5820 * numbers.c (scm_difference): In inum - bignum, handle negative inum.
5821 (scm_logcount): Use mpz_com, not mpz_neg.
5822
5823 2003-05-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5824
5825 The purpose of this patch is to make guile's internal memoizers
5826 distinguishable from memoizing macros created on the scheme level
5827 or from user provided primitive memoizing macros. The reason is,
5828 that the internal memoizers are the only ones that are allowed to
5829 transform their scheme input into memoizer byte code, while all
5830 other memoizing macros may only transform scheme code into new
5831 scheme code.
5832
5833 To achieve this, a new macro type 'builtin-macro!' is introduced.
5834 Currently, 'builtin-macro!'s are handled as memoizing macros, but
5835 this will change when the memoizer and executor are separated.
5836
5837 * macros.[ch] (scm_i_makbimacro): New.
5838
5839 * macros.h (SCM_BUILTIN_MACRO_P): New.
5840
5841 * macros.c (macro_print, scm_macro_type): Support builtin-macro!s.
5842
5843 * eval.c, goops.c: All of guile's primitive memoizing macros are
5844 primitive builtin-macros now.
5845
5846 * eval.c (scm_macroexp, SCM_CEVAL): Make sure the primitive
5847 builtin-macros are handled equally to memoizing macros.
5848
5849 2003-05-04 Marius Vollmer <mvo@zagadka.de>
5850
5851 * throw.c (scm_ithrow): Remove "asm volatile" hack. It used to
5852 work around a bug in GCC 2.95.2 but is now a bug in itself.
5853
5854 2003-05-02 Marius Vollmer <mvo@zagadka.de>
5855
5856 * deprecated.h (scm_rstate, scm_rng, SCM_SLOPPY_CONSP,
5857 SCM_SLOPPY_NCONSP, scm_tc7_ssymbol, scm_tc7_msymbol,
5858 scm_tcs_symbols): New.
5859
5860 2003-04-30 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5861
5862 * deprecated.h, deprecated.c (scm_protect_object,
5863 scm_unprotect_object, SCM_SETAND_CAR, SCM_SETOR_CAR,
5864 SCM_SET_AND_CDR, SCM_SET_OR_CDR, SCM_FREEP, SCM_NFREEP,
5865 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
5866 SCM_GCCDR, scm_remember, scm_the_root_module, scm_make_module,
5867 scm_ensure_user_module, scm_load_scheme_module, scm_port,
5868 scm_ptob_descriptor, scm_port_rw_active,
5869 scm_close_all_ports_except): New.
5870
5871 * ports.c (scm_c_port_for_each): New function, mostly copied from
5872 scm_port_for_each.
5873 (scm_port_for_each): Reimplemented using scm_c_port_for_each.
5874 * ports.h (scm_c_port_for_each): New prototype.
5875
5876 2003-04-28 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5877
5878 * eval.c (scm_m_atdispatch): Removed until actually needed. (This
5879 macro was introduced in anticipation of GOOPS method compilation
5880 code.)
5881
5882 * goops.c: Removed binding of @dispatch.
5883
5884 2003-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
5885
5886 * eval.c, goops.c (@dispatch, @slot-ref, @slot-set!): Move the
5887 instructions that bind the macros on the scheme level back to
5888 goops.c in order to make sure again that the bindings go into the
5889 (oop goops) module and are not visible from the outside.
5890
5891 2003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
5892
5893 * eval.c: Non functional change: Separated R5RS and non-R5RS
5894 macros into different sections of the file and ordered the
5895 memoizers alphabetically.
5896
5897 2003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
5898
5899 * eval.c (scm_ilookup): Rewritten to improve readability.
5900
5901 2003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
5902
5903 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
5904 Partially reverted patch from 2003-04-23 in oder to find a better
5905 compromise between readability and debuggability.
5906
5907 2003-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5908
5909 * eval.c, eval.h, goops.c, goops.h (scm_m_atslot_ref,
5910 scm_m_atslot_set_x, scm_m_atdispatch): Move the declarations and
5911 definitions of the special goops memoizers from goops.[ch] to
5912 eval.[ch]. Hmm... it seems that scm_m_atdispatch is not used
5913 throughout guile.
5914
5915 2003-04-24 Mikael Djurfeldt <mdj@kvast.blakulla.net>
5916
5917 * ports.c, ports.h (scm_i_port_table_mutex): New mutex.
5918
5919 * fports.c (scm_evict_ports): Lock/unlock scm_i_port_table_mutex.
5920
5921 * ports.c (scm_close_port, scm_flush_all_ports): Ditto.
5922
5923 * ioext.c (scm_fdes_to_ports): Ditto.
5924
5925 * vports.c (scm_make_soft_port): Changed SCM_DEFER/ALLOW_INTS into
5926 lock/unlock scm_i_port_table_mutex.
5927
5928 * strports.c (scm_mkstrport): Ditto.
5929
5930 * ports.c (scm_void_port, scm_port_for_each): Ditto.
5931
5932 * fports.c (scm_fdes_to_port): Ditto.
5933
5934 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
5935
5936 This set of patches contains no functional changes, only debatable
5937 minor stylistic ones. Still, in order to prepare a patch between
5938 my local copy and the CVS version, I decided to submit the changes
5939 below. Then, the patch will hopefully only contain relevant
5940 modifications :-)
5941
5942 * eval.c (iqq): Added const specifier.
5943
5944 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
5945 Use NULL instead of 0 to indicate that a pointer is returned.
5946 Removed some misleading 'fall through' comments.
5947
5948 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
5949 Split up long expressions into smaller ones to be more debugging
5950 friendly.
5951
5952 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
5953
5954 * eval.h (SCM_ENTER_FRAME_HDLR, SCM_APPLY_FRAME_HDLR,
5955 SCM_EXIT_FRAME_HDLR): Use SCM_PACK to convert data to a SCM value
5956 rather than casting to SCM.
5957
5958 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
5959
5960 * sort.c, pairs.h: Removed unnecessary includes.
5961
5962 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
5963
5964 * sort.c: Replaced hand-made trampline code by the new official
5965 mechanism from eval.c. This fixes a segfault in the new test file
5966 sort.test.
5967
5968 (quicksort, compare_function, scm_restricted_vector_sort_x,
5969 scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
5970 scm_merge_list_step, scm_sort_x, scm_sort, scm_merge_vector_x,
5971 scm_merge_vector_step, scm_stable_sort_x, scm_stable_sort,
5972 scm_sort_list_x, scm_sort_list): Use trampoline mechanism from
5973 eval.c.
5974
5975 (subr2less, lsubrless, closureless, applyless, scm_cmp_function,
5976 cmp_fun_t): Removed.
5977
5978 (compare_function): Added.
5979
5980 * sort.c (quicksort, SWAP, stack_node): Replaced pointer
5981 arithmetics with index arithmetics. Changed quicksort to work on
5982 an array of SCM values instead of an array of characters. Avoid
5983 bytewise copying of SCM elements. Avoid allocating memory on the
5984 stack with alloca. Fixed some comments.
5985
5986 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
5987
5988 * eval.c (EXTEND_ENV): Eliminated.
5989
5990 (unmemocopy, SCM_CEVAL, SCM_APPLY): Use SCM_EXTEND_ENV instead of
5991 EXTEND_ENV.
5992
5993 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
5994
5995 * __scm.h (SCM_DEBUG_DEBUGGER_SUPPORT): New compile-time option.
5996
5997 * gc.card.c (scm_gc_marked_p): Fixed compiler warning when
5998 compiling with SCM_DEBUG==1 by moving definition behind prototype.
5999
6000 * gc.card.c (scm_dbg_t_list_cell, scm_dbg_t_double_cell,
6001 scm_dbg_gc_marked_p, scm_dbg_gc_get_card, scm_dbg_gc_get_bvec,
6002 scm_t_list_cell_struct, scm_t_list_cell, scm_t_double_cell,
6003 scm_gc_marked_p, scm_gc_get_card, scm_gc_get_bvec): Fixed
6004 functions such that they check if the object is a non-immediate.
6005 Further, renamed identifiers to use the scm_dbg_ prefix and made
6006 their inclusion into the lib dependent of the
6007 SCM_DEBUG_DEBUGGER_SUPPORT compile time option.
6008
6009 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6010
6011 * __scm.h: Fixed comment about the SCM_DEBUG_TYPING_STRICTNESS
6012 debug option.
6013
6014 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6015
6016 * list.c (scm_ilength, scm_last_pair), unif.c (l2ra): Prefer
6017 !SCM_CONSP over SCM_NCONSP. Now, guile itself does not include
6018 any calls to SCM_NCONSP any more.
6019
6020 * unif.c (l2ra): Eliminate redundant check.
6021
6022 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6023
6024 * list.c (scm_cons_star), ramap.c (scm_ra_sum, scm_ra_product,
6025 scm_array_map_x), unif.c (l2ra): Prefer !SCM_NULLP over
6026 SCM_NNULLP. Now, guile itself does not include any calls to
6027 SCM_NNULLP any more.
6028
6029 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6030
6031 * eval.c (unmemocopy, SCM_APPLY, scm_map, scm_for_each,
6032 scm_copy_tree): Place assignment expressions which are part of
6033 other expressions into an expression of their own.
6034
6035 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6036
6037 * goops.c (TEST_CHANGE_CLASS, scm_sys_initialize_object): Don't
6038 compare SCM values with !=.
6039
6040 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6041
6042 * eval.c, eval.h, evalext.c, evalext.h (scm_sym_setter,
6043 scm_m_generalized_set_x, scm_init_evalext): Move the declaration
6044 and definition of the memoizer for the generalized set! macro from
6045 evalext.[ch] to eval.[ch]. Use the SCM_SYNTAX snarfer macro to
6046 define the macro object.
6047
6048 * eval.c, eval.h (s_set_x, scm_s_set_x, scm_m_set_x,
6049 scm_m_generalized_set_x): Since now scm_s_set_x is only used in
6050 eval.c, it is made static and renamed to s_set_x.
6051
6052 * evalext.c (scm_defined_p, scm_m_undefine): Prefer !SCM_<foo>
6053 over SCM_N<foo>.
6054
6055 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6056
6057 * eval.c, root.h (scm_undefineds, SCM_NUM_PROTECTS, undefineds,
6058 scm_init_eval): Made scm_undefineds static in eval.c, renamed it
6059 to undefineds and registered the object as a permanent object.
6060
6061 * eval.c, eval.h (scm_f_apply, scm_init_eval): Made scm_f_apply
6062 static in eval.c, renamed it to f_apply and registered the object
6063 as a permanent object.
6064
6065 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6066
6067 * eval.c (SCM_BIT7, SCM_BIT8, unmemocopy, SCM_CEVAL): Renamed
6068 file-local macro SCM_BIT8 to SCM_BIT7, which is more appropriate.
6069
6070 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6071
6072 * numbers.c (scm_logtest): Fixed argument bug in the call to
6073 mpz_and, which showed up when compiling with SCM_DEBUG defined.
6074
6075 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6076
6077 * gc-card.c (scm_i_sweep_card, scm_i_init_card_freelist): Fixed
6078 type errors that showed up when compiling with SCM_DEBUG defined.
6079
6080 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6081
6082 * continuations.c, continuations.h, eval.c, eval.h, extensions.c,
6083 gsubr.c, guile.c, init.c, read.c, root.c, root.h, stackchk.h,
6084 throw.c: Removed uses of DEBUG_EXTENSIONS and DYNAMIC_LINKING to
6085 fix compile errors with --disable-deprecated.
6086
6087 2003-04-17 Rob Browning <rlb@defaultvalue.org>
6088
6089 * numbers.c (scm_integer_expt): fix case where we were declaring
6090 vars in the middle of a statement block. Thanks to Thamer
6091 Al-Harbash.
6092
6093 2003-04-17 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6094
6095 * goops.c (TEST_CHANGE_CLASS): Update variable class after class
6096 change.
6097
6098 * eq.c (scm_eqv_p): Turned into a primitive generic.
6099
6100 2003-04-16 Rob Browning <rlb@defaultvalue.org>
6101
6102 * gc_os_dep.c: Added patch for UnixWare and OpenUNIX support.
6103 Thanks to Boyd Gerber.
6104 Added check for __arm__ in addition to arm for LINUX and copied
6105 __s390__ defines from upstream libgc. Thanks to James Treacy for
6106 reporting the problems.
6107
6108 * numbers.c (PTRDIFF_MIN): use SCM_CHAR_BIT.
6109
6110 * socket.c: use SCM_CHAR_BIT.
6111
6112 * random.c (scm_c_random_bignum): use SCM_CHAR_BIT.
6113
6114 * num2integral.i.c (NUM2INTEGRAL): use SCM_CHAR_BIT.
6115
6116 2003-04-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6117
6118 * feature.c (scm_init_feature): Always add threads feature.
6119
6120 2003-04-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6121
6122 * goops.c (scm_sys_fast_slot_ref): Use SCM_SLOT instead of
6123 scm_at_assert_bound_ref. (We don't want the unbound check. See
6124 oop/goops/active-slot.scm.)
6125
6126 2003-04-14 Rob Browning <rlb@defaultvalue.org>
6127
6128 * tags.h: scm_t_intptr should have been intptr_t.
6129
6130 2003-04-13 Rob Browning <rlb@defaultvalue.org>
6131
6132 * __scm.h (SCM_FLUSH_REGISTER_WINDOWS): don't just rely on "sparc"
6133 test. Instead use
6134 #if defined (sparc) || defined (__sparc__) || defined (__sparc)
6135 as gc_os_dep.c suggests is appropriate.
6136
6137 * goops.c (prep_hashsets): make static to match prototype.
6138 (scm_sym_args): SCM_SYMBOL -> SCM_GLOBAL_SYMBOL. Thanks to Albert
6139 Chin.
6140
6141 * c-tokenize.lex: remove trailing comma from enum. Thanks to
6142 Albert Chin.
6143
6144 * gc_os_dep.c: add NetBSD powerpc config info. Thanks to Thomas
6145 Klausner.
6146
6147 2003-04-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6148
6149 * goops.c (scm_sys_prep_layout_x): Instance allocation is now
6150 indicated through extra fields in getters-n-setters.
6151 (scm_add_slot): Adapted to new format of getters_n_setters slot.
6152 (Thanks to Andy Wingo.)
6153
6154 2003-02-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6155
6156 * gc-segment.c: add comment
6157
6158 2003-04-07 Rob Browning <rlb@defaultvalue.org>
6159
6160 * debug.h: change "id" arg name to "info_id" to avoid objective-c
6161 clash.
6162
6163 * num2integral.i.c (NUM2INTEGRAL): fix bug pointed out by Mikael
6164 and add regression test to standalone/.
6165
6166 2003-04-06 Rob Browning <rlb@defaultvalue.org>
6167
6168 * strings.c (scm_mem2string): use memcpy rather than by-hand loop.
6169 Thanks to Dale P. Smith.
6170
6171 * random.c: #include gmp.h.
6172 (scm_c_random_bignum): normalize result on return.
6173
6174 * init.c: #include gmp.h.
6175
6176 * numbers.h: remove the gmp.h #include (not needed now).
6177
6178 * posix.h: change occurences of "id" to something else so we don't
6179 cause trouble when included via objective-c (can't hurt, might
6180 help). Still have usage in debug.h, though.
6181
6182 2003-04-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6183
6184 * random.c (scm_c_random_bignum): Don't generate a random number
6185 equal to m (the second argument of scm_c_random_bignum); only
6186 generate numbers in the range 0 <= r < m.
6187 (scm_c_default_rstate): Use SCM_VARIABLE_REF to access
6188 scm_var_random_state.
6189
6190 * num2integral.i.c (INTEGRAL2BIG): Put negation of n inside then
6191 clause.
6192
6193 2003-04-05 Rob Browning <rlb@defaultvalue.org>
6194
6195 * modules.c (scm_module_import_interface): move declaration of
6196 uses before any code.
6197
6198 2003-04-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6199
6200 * Makefile.am (scmconfig.h): Look for config.h in top_builddir,
6201 not top_srcdir.
6202
6203 * hashtab.c (rehash_after_gc): Clear to_rehash list before
6204 processing it in order to avoid an infinite loop.
6205
6206 * print.c (scm_prin1): Remember old state of pstate->writingp.
6207
6208 2003-04-05 Marius Vollmer <mvo@zagadka.de>
6209
6210 * Changed license terms to the plain LGPL thru-out.
6211
6212 2003-04-04 Rob Browning <rlb@defaultvalue.org>
6213
6214 * socket.c (FLIPCPY_NET_HOST_128): new macro.
6215 (ipv6_net_to_num, ipv6_num_to_net, bignum_in_ipv6_range_p):
6216 rewrite to handle GMP bignums.
6217
6218
6219 * random.c (scm_c_random_bignum): rewrite to handle GMP bignums.
6220
6221 * ports.c (scm_getc): minor tweak.
6222
6223 * numbers.h: remove SCM_BIGDIG conditionals, reorganize, and
6224 rewrite to handle GMP bignums.
6225
6226 * numbers.c: rewrite *many* functions to handle GMP bignums.
6227
6228 * num2integral.i.c (NUM2INTEGRAL, INTEGRAL2NUM, INTEGRAL2BIG):
6229 handle GMP bignums.
6230
6231 * num2float.i.c (NUM2FLOAT): handle GMP bignums.
6232
6233 * init.c (check_config): remove SCM_BIGDIG conditionals.
6234 (scm_init_guile_1): test to make sure mpz_t fits in a double_cell.
6235
6236 * gc-card.c ("sweep_card"): handle new mpz_t bignums.
6237
6238 * eval.c: remove SCM_BIGDIG conditionals.
6239
6240 * eq.c (s_scm_eqv_p): scm_i_bigcomp -> scm_i_bigcmp.
6241
6242 2003-03-31 Rob Browning <rlb@defaultvalue.org>
6243
6244 * Makefile.am (scmconfig.h): change srcdir to builddir. (Thanks
6245 to Kevin Ryde.)
6246
6247 2003-03-27 Rob Browning <rlb@defaultvalue.org>
6248
6249 * threads.h: fix various preprocessor usages of new public
6250 symbols to expect 0 or 1 values rather than 1 or undefined.
6251 i.e. change #ifdef to #if, etc.
6252
6253 * threads.c: fix various preprocessor usages of new public
6254 symbols to expect 0 or 1 values rather than 1 or undefined.
6255 i.e. change #ifdef to #if, etc.
6256
6257 * tags.h: fix various preprocessor usages of new public
6258 symbols to expect 0 or 1 values rather than 1 or undefined.
6259 i.e. change #ifdef to #if, etc.
6260
6261 * stacks.c: fix various preprocessor usages of new public
6262 symbols to expect 0 or 1 values rather than 1 or undefined.
6263 i.e. change #ifdef to #if, etc.
6264
6265 * stackchk.h: fix various preprocessor usages of new public
6266 symbols to expect 0 or 1 values rather than 1 or undefined.
6267 i.e. change #ifdef to #if, etc.
6268
6269 * stackchk.c: fix various preprocessor usages of new public
6270 symbols to expect 0 or 1 values rather than 1 or undefined.
6271 i.e. change #ifdef to #if, etc.
6272
6273 * sort.c: fix various preprocessor usages of new public
6274 symbols to expect 0 or 1 values rather than 1 or undefined.
6275 i.e. change #ifdef to #if, etc.
6276
6277 * read.c: fix various preprocessor usages of new public
6278 symbols to expect 0 or 1 values rather than 1 or undefined.
6279 i.e. change #ifdef to #if, etc.
6280
6281 * random.c: fix various preprocessor usages of new public
6282 symbols to expect 0 or 1 values rather than 1 or undefined.
6283 i.e. change #ifdef to #if, etc.
6284
6285 * print.c: fix various preprocessor usages of new public
6286 symbols to expect 0 or 1 values rather than 1 or undefined.
6287 i.e. change #ifdef to #if, etc.
6288
6289 * objects.c: fix various preprocessor usages of new public
6290 symbols to expect 0 or 1 values rather than 1 or undefined.
6291 i.e. change #ifdef to #if, etc.
6292
6293 * numbers.h: fix various preprocessor usages of new public
6294 symbols to expect 0 or 1 values rather than 1 or undefined.
6295 i.e. change #ifdef to #if, etc.
6296
6297 * null-threads.c: fix various preprocessor usages of new public
6298 symbols to expect 0 or 1 values rather than 1 or undefined.
6299 i.e. change #ifdef to #if, etc.
6300
6301 * lang.c: fix various preprocessor usages of new public
6302 symbols to expect 0 or 1 values rather than 1 or undefined.
6303 i.e. change #ifdef to #if, etc.
6304
6305 * lang.h: fix various preprocessor usages of new public
6306 symbols to expect 0 or 1 values rather than 1 or undefined.
6307 i.e. change #ifdef to #if, etc.
6308
6309 * iselect.h: fix various preprocessor usages of new public
6310 symbols to expect 0 or 1 values rather than 1 or undefined.
6311 i.e. change #ifdef to #if, etc.
6312
6313 * init.c: fix various preprocessor usages of new public
6314 symbols to expect 0 or 1 values rather than 1 or undefined.
6315 i.e. change #ifdef to #if, etc.
6316
6317 * gh_data.c: fix various preprocessor usages of new public
6318 symbols to expect 0 or 1 values rather than 1 or undefined.
6319 i.e. change #ifdef to #if, etc.
6320
6321 * gh.h: fix various preprocessor usages of new public
6322 symbols to expect 0 or 1 values rather than 1 or undefined.
6323 i.e. change #ifdef to #if, etc.
6324
6325 * gen-scmconfig.c: change most new public symbols to be defined to
6326 0 or 1 rather than being either 1 or undefined.
6327
6328 * gc_os_dep.c: fix various preprocessor usages of new public
6329 symbols to expect 0 or 1 values rather than 1 or undefined.
6330 i.e. change #ifdef to #if, etc.
6331 (STACK_GROWS_DOWN): define to 0 or 1 rather than 1 or undef.
6332
6333 * gc.h: fix various preprocessor usages of new public
6334 symbols to expect 0 or 1 values rather than 1 or undefined.
6335 i.e. change #ifdef to #if, etc.
6336
6337 * gc-card.c: fix various preprocessor usages of new public
6338 symbols to expect 0 or 1 values rather than 1 or undefined.
6339 i.e. change #ifdef to #if, etc.
6340
6341 * gc-mark.c: fix various preprocessor usages of new public
6342 symbols to expect 0 or 1 values rather than 1 or undefined.
6343 i.e. change #ifdef to #if, etc.
6344
6345 * feature.c: fix various preprocessor usages of new public
6346 symbols to expect 0 or 1 values rather than 1 or undefined.
6347 i.e. change #ifdef to #if, etc.
6348
6349 * evalext.c: fix various preprocessor usages of new public
6350 symbols to expect 0 or 1 values rather than 1 or undefined.
6351 i.e. change #ifdef to #if, etc.
6352
6353 * eval.h: fix various preprocessor usages of new public
6354 symbols to expect 0 or 1 values rather than 1 or undefined.
6355 i.e. change #ifdef to #if, etc.
6356
6357 * eval.c: fix various preprocessor usages of new public
6358 symbols to expect 0 or 1 values rather than 1 or undefined.
6359 i.e. change #ifdef to #if, etc.
6360
6361 * eq.c: fix various preprocessor usages of new public
6362 symbols to expect 0 or 1 values rather than 1 or undefined.
6363 i.e. change #ifdef to #if, etc.
6364
6365 * coop.c: fix various preprocessor usages of new public
6366 symbols to expect 0 or 1 values rather than 1 or undefined.
6367 i.e. change #ifdef to #if, etc.
6368
6369 * coop-threads.c: fix various preprocessor usages of new public
6370 symbols to expect 0 or 1 values rather than 1 or undefined.
6371 i.e. change #ifdef to #if, etc.
6372
6373 * coop-pthreads.c: fix various preprocessor usages of new public
6374 symbols to expect 0 or 1 values rather than 1 or undefined.
6375 i.e. change #ifdef to #if, etc.
6376
6377 * coop-defs.h: fix various preprocessor usages of new public
6378 symbols to expect 0 or 1 values rather than 1 or undefined.
6379 i.e. change #ifdef to #if, etc.
6380
6381 * convert.i.c: fix various preprocessor usages of new public
6382 symbols to expect 0 or 1 values rather than 1 or undefined.
6383 i.e. change #ifdef to #if, etc.
6384
6385 * continuations.c: fix various preprocessor usages of new public
6386 symbols to expect 0 or 1 values rather than 1 or undefined.
6387 i.e. change #ifdef to #if, etc.
6388
6389 * _scm.h: fix various preprocessor usages of new public symbols to
6390 expect 0 or 1 values rather than 1 or undefined. i.e. change
6391 #ifdef to #if, etc.
6392
6393 2003-03-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6394
6395 * init.c (scm_init_guile_1): Call scm_i_init_deprecated.
6396
6397 * deprecated.c, deprecated.h: New files, to collect deprecated
6398 things in one place.
6399 * Makefile.am: Added them in all the right places.
6400
6401 * Makefile.am (EXTRA_DIST): Added "scmconfig.h.top".
6402 (scmconfig.h): Get "scmconfig.h.top" from $(srcdir) so that VPATH
6403 builds work.
6404 (DOT_X_FILES): Removed "iselect.x".
6405 (DOT_DOC_FILES): Removed "iselect.doc".
6406
6407 2003-03-25 Rob Browning <rlb@defaultvalue.org>
6408
6409 * win32-socket.h: #include "libguile/__scm.h". Replace usage of
6410 HAVE_WINSOCK2_H with SCM_HAVE_WINSOCK2_H.
6411
6412 * win32-socket.c: #include <config.h> if HAVE_CONFIG_H.
6413
6414 * vports.c: #include <config.h> if HAVE_CONFIG_H.
6415
6416 * unif.c: #include <config.h> if HAVE_CONFIG_H. Replace usage of
6417 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6418
6419 * threads.h: replace usage of struct timespect with
6420 scm_t_timespec. Replace usage of USE_PTHREAD_THREADS with
6421 SCM_USE_PTHREAD_THREADS. Remove typedef for struct timespec in
6422 favor of scm_t_timespec from scmconfig.h.
6423
6424 * threads.c: move libguile/_scm.h include to the top so we pick up
6425 any critical defines like _GNU_SOURCE early. Replace usage of
6426 struct timespect with scm_t_timespec. Replace usage of
6427 STACK_GROWS_UP with SCM_STACK_GROWS_UP. Replace usage of
6428 USE_PTHREAD_THREADS with SCM_USE_PTHREAD_THREADS.
6429
6430 * threads-plugin.h: replace usage of struct timespect with
6431 scm_t_timespec.
6432
6433 * threads-plugin.c: #include <config.h> if HAVE_CONFIG_H. Replace
6434 usage of struct timespect with scm_t_timespec.
6435
6436 * tags.h: move HAVE_STDINT_H handling to scmconfig.h. Move
6437 HAVE_INTTYPES_H handling to scmconfig.h. #include
6438 "libguile/__scm.h". Rework handling for scm_t_bits,
6439 scm_t_signed_bits, SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
6440 SCM_T_SIGNED_BITS_MIN, and SIZEOF_SCM_T_BITS to use scm_t_intptr,
6441 scm_t_uintptr, SCM_SIZEOF_INTPTR_T, and SCM_SIZEOF_UINTPTR_T, and
6442 SCM_SIZEOF_UNSIGNED_LONG. Rename usage of HAVE_ARRAYS to
6443 SCM_HAVE_ARRAYS.
6444
6445 * symbols.c: #include <config.h> if HAVE_CONFIG_H.
6446
6447 * struct.c: #include <config.h> if HAVE_CONFIG_H.
6448
6449 * strports.c: #include <config.h> if HAVE_CONFIG_H.
6450
6451 * strop.c: #include <config.h> if HAVE_CONFIG_H.
6452
6453 * stime.h: move handling of time related headers to scmconfig.h.
6454
6455 * stime.c: #include <config.h> if HAVE_CONFIG_H.
6456
6457 * stacks.c: replace usage of STACK_GROWS_UP with
6458 SCM_STACK_GROWS_UP.
6459
6460 * sort.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
6461 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6462
6463 * socket.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
6464 of uint32 and HAVE_UINT_32 with scm_t_int32.
6465
6466 * smob.c: #include <config.h> if HAVE_CONFIG_H.
6467
6468 * simpos.c: #include <config.h> if HAVE_CONFIG_H.
6469
6470 * script.c: #include <config.h> if HAVE_CONFIG_H.
6471
6472 * scmsigs.c: #include <config.h> if HAVE_CONFIG_H.
6473
6474 * scmconfig.h.top: new file -- preamble for scmconfig.h.
6475
6476 * rw.c: #include <config.h> if HAVE_CONFIG_H.
6477
6478 * regex-posix.c: #include <config.h> if HAVE_CONFIG_H.
6479
6480 * read.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6481
6482 * rdelim.c: #include <config.h> if HAVE_CONFIG_H.
6483
6484 * random.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
6485 of LONG32, LONG64, SIZEOF_LONG, and HAVE_LONG_LONGS with
6486 scm_t_int32, scm_t_int64, and SCM_HAVE_T_INT64. Rename usage of
6487 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6488
6489 * ramap.c: replace usage of HAVE_LONG_LONGS with
6490 "SCM_SIZEOF_LONG_LONG != 0".
6491
6492 * putenv.c: #include <config.h> if HAVE_CONFIG_H. #include
6493 "libguile/scmconfig.h".
6494
6495 * pthread-threads.c: #include <config.h> if HAVE_CONFIG_H.
6496
6497 * print.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6498 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6499
6500 * posix.c: #include <config.h> if HAVE_CONFIG_H.
6501
6502 * ports.c: #include <config.h> if HAVE_CONFIG_H.
6503
6504 * objects.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6505
6506 * numbers.h: replace usage of HAVE_FLOATINGPOINT_H with
6507 SCM_HAVE_FLOATINGPOINT_H. Replace usage of HAVE_IEEEFP_H with
6508 SCM_HAVE_IEEEFP_H. Replace usage of HAVE_NAN_H with
6509 SCM_HAVE_NAN_H. Replace usage of STDC_HEADERS with
6510 SCM_HAVE_STDC_HEADERS. Replace usage of ptrdiff_t with
6511 scm_t_ptrdiff. Replace usage of HAVE_LONG_LONGS with
6512 "SCM_SIZEOF_LONG_LONG != 0".
6513
6514 * numbers.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
6515 of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0". Replace
6516 usage of ptrdiff_t with scm_t_ptrdiff. Replace usage of
6517 SIZEOF_PTRDIFF_T with SCM_SIZEOF_SCM_T_PTRDIFF.
6518
6519 * num2integral.i.c: #include <config.h> if HAVE_CONFIG_H.
6520
6521 * null-threads.h: replace usage of struct timespect with
6522 scm_t_timespec.
6523
6524 * net_db.c: #include <config.h> if HAVE_CONFIG_H.
6525
6526 * mkstemp.c: #include <config.h> if HAVE_CONFIG_H. #include
6527 "libguile/__scm.h". Remove definition of gcc_uint64_t in favor of
6528 scm_t_uint64 and rename usages.
6529
6530 * mallocs.c: #include <config.h> if HAVE_CONFIG_H.
6531
6532 * load.c: #include <config.h> if HAVE_CONFIG_H.
6533
6534 * iselect.h: move handling of time related headers to scmconfig.h.
6535 Rename usage of HAVE_SYS_SELECT_H to SCM_HAVE_SYS_SELECT_H.
6536 Rename usage of HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Rename
6537 usage of USE_COOP_THREADS to SCM_USE_COOP_THREADS.
6538
6539 * iselect.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6540 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
6541 USE_NULL_THREADS to SCM_USE_NULL_THREADS.
6542
6543 * ioext.c: #include <config.h> if HAVE_CONFIG_H.
6544
6545 * inline.h: #include "libguile/__scm.h" at the top. Change code
6546 to use SCM_C_INLINE and SCM_INLINE_C_INCLUDINT_INLINE_H to decide
6547 what to do instead of creating a new public #define. Rename usage
6548 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
6549 USE_NULL_THREADS to SCM_USE_NULL_THREADS. Rename usage of
6550 USE_COPT_THREADS to SCM_USE_COPT_THREADS.
6551
6552 * inline.c: rearrange handling -- now we just #define
6553 SCM_INLINE_C_INCLUDING_INLINE_H to 1 and #include
6554 "libguile/inline.h". scmconfig.h will define SCM_C_INLINE as
6555 appropriate, and we use that in inline.h along with the above
6556 define to determine how to respond.
6557
6558 * init.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
6559 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6560
6561 * guile.c: #include <config.h> if HAVE_CONFIG_H.
6562
6563 * gh_data.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6564 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6565
6566 * gh.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6567
6568 * gen-scmconfig.h.in: new file -- see gen-scmconfig.c for details.
6569
6570 * gen-scmconfig.c: new file -- see comments in file for details.
6571
6572 * gdbinit.c: #include <config.h> if HAVE_CONFIG_H.
6573
6574 * gc_os_dep.c: #include <config.h> if HAVE_CONFIG_H. Replace
6575 usage of STACK_GROWS_UP with SCM_STACK_GROWS_UP.
6576
6577 * gc.h: replace usage of SIZEOF_LONG with
6578 SCM_SIZEOF_UNSIGNED_LONG. Replace usage of USE_PTHREAD_THREADS
6579 with SCM_USE_PTHREAD_THREADS. Remove SCM_SIZEOF_LONG definition
6580 since we handle that in scmconfig.h now.
6581
6582 * gc.c: #include <config.h> if HAVE_CONFIG_H.
6583
6584 * gc-mark.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6585 of HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of
6586 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6587
6588 * gc-malloc.c: #include <config.h> if HAVE_CONFIG_H.
6589
6590 * gc-card.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6591 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6592
6593 * fports.c: #include <config.h> if HAVE_CONFIG_H.
6594
6595 * filesys.c: #include <config.h> if HAVE_CONFIG_H.
6596
6597 * feature.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6598 of USE_NULL_THREADS to SCM_USE_NULL_THREADS.
6599
6600 * extensions.c: #include <config.h> if HAVE_CONFIG_H.
6601
6602 * evalext.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6603 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6604
6605 * eval.c: #include <config.h> if HAVE_CONFIG_H. #include
6606 "libguile/__scm.h" rather than scmconfig.h. Rename usage of
6607 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
6608 with "SCM_SIZEOF_LONG_LONG != 0".
6609
6610 * error.c: #include <config.h> if HAVE_CONFIG_H.
6611
6612 * eq.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
6613 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
6614 with "SCM_SIZEOF_LONG_LONG != 0".
6615
6616 * deprecation.c: #include <config.h> if HAVE_CONFIG_H.
6617
6618 * coop.c: replace usage of struct timespect with scm_t_timespec.
6619 #include <config.h> if HAVE_CONFIG_H.
6620
6621 * coop-threads.c: #include "libguile/_scm.h" early. Replace
6622 usage of struct timespect with scm_t_timespec. Replace usage of
6623 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
6624
6625 * coop-pthreads.c: #include "libguile/_scm.h" early. Replace
6626 usage of struct timespect with scm_t_timespec. Replace usage of
6627 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
6628
6629 * coop-defs.h: move handling of time related headers to
6630 scmconfig.h. Add #include "libguile/__scm.h". Rename usage of
6631 HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Replace usage of struct
6632 timespect with scm_t_timespec.
6633
6634 * convert.i.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6635
6636 * convert.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6637
6638 * convert.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6639 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6640
6641 * continuations.c: move libguile/_scm.h include to the top so we
6642 pick up any critical defines like _GNU_SOURCE early.
6643
6644 * backtrace.c: #include <config.h> if HAVE_CONFIG_H.
6645
6646 * async.c: #include <config.h> if HAVE_CONFIG_H.
6647
6648 * alloca.c: #include <config.h> if HAVE_CONFIG_H.
6649
6650 * _scm.h: #include <config.h> if HAVE_CONFIG_H.
6651 Rename usage of USE_PTHREAD_THREADS to SCM_USE_PTHREAD_THREADS.
6652
6653 * __scm.h: move libguile/scmconfig.h include up to the top, so
6654 we're sure to pick up any critical defines like _GNU_SOURCE early.
6655 #include <limits.h> removed in favor of scmconfig.h inclusion when
6656 appropriate. STDC_HEADERS based inclusion of stdlib.h,
6657 sys/types.h, stddef.h, and sys/stdtypes.h removed in favor of
6658 scmconfig.h inclusion when appropriate. Various Win32 related
6659 definitions removed in favor of scmconfig.h inclusion when
6660 appropriate.
6661 (HAVE_UINTPTR_T): definition removed (see NEWS).
6662 (SIZEOF_PTRDIFF_T): definition removed (see NEWS).
6663 (HAVE_LONG_LONGS): definition removed (see NEWS).
6664 (HAVE_LONG_LONG): definition removed (see NEWS).
6665 (HAVE_PTRDIFF_T): definition removed (see NEWS).
6666
6667 * Makefile.am: scmconfig.h is now generated by building and
6668 running gen-scmconfig.h and capturing its output. gen-scmconfig
6669 uses config.h and the configure.in generated gen-scmconfig.h to
6670 decide what to output. See gen-scmconfig.c for details.
6671 (noinst_PROGRAMS): add gen-scmconfig.
6672 (gen_scmconfig_SOURCES): new variable.
6673 (gen-scmconfig.$(OBJEXT)): new target - be careful to handle
6674 cross-compiling right.
6675 (scmconfig.h): build scmconfig.h from gen-scmconfig's output.
6676 (BUILT_SOURCES): add scmconfig.h.
6677
6678 2003-03-19 Marius Vollmer <mvo@zagadka.de>
6679
6680 * gc_os_dep.c: Added defines for sparc-unknown-netbsdelf1.5 from
6681 Adrian Bunk. Thanks!
6682
6683 2003-03-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6684
6685 * goops.c (make_class_from_template): New fourth arg:
6686 applicablep.
6687 (scm_class_extended_generic_with_setter, scm_class_self): Fixed
6688 cpls.
6689
6690 * smob.c (scm_set_smob_apply): Call scm_i_inherit_applicable.
6691
6692 * goops.c, objects.c, objects.h (scm_make_extended_class): New
6693 second arg: applicablep.
6694 (scm_i_inherit_applicable): New function.
6695
6696 * goops.c, goops.h (scm_class_applicable,
6697 scm_class_extended_accessor): New classes.
6698
6699 2003-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
6700
6701 * procs.c (scm_procedure_documentation): Removed redundant
6702 SCM_NIMP test and replaced other calls to SCM_IMP by more explicit
6703 predicates.
6704
6705 2003-03-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6706
6707 * list.c, list.h (scm_filter, scm_filter_x): New functions.
6708
6709 * modules.c (scm_module_import_interface): New function.
6710
6711 * goops.c, goops.h (scm_class_accessor_method): Renamed from
6712 scm_class_accessor.
6713 (scm_class_accessor): New class.
6714
6715 2003-03-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6716
6717 * goops.c (scm_primitive_generic_generic): Enable primitive
6718 generic if not enabled.
6719 (scm_sys_goops_loaded): Setup unextended primitive generics.
6720
6721 * goops.c, goops.h (scm_c_extend_primitive_generic): New function.
6722
6723 * snarf.h (SCM_PRIMITIVE_GENERIC, SCM_PRIMITIVE_GENERIC_1): New
6724 snarf macros.
6725
6726 * numbers.c (scm_abs): Use SCM_PRIMITIVE_GENERIC. (This is only a
6727 testing example. All uses of SCM_GPROC should be converted.)
6728
6729 * procprop.c (scm_stand_in_scm_proc): Use scm_assq instead of
6730 scm_assoc.
6731
6732 * eq.c (scm_equal_p): Turned into a primitive generic.
6733
6734 2003-02-27 Rob Browning <rlb@defaultvalue.org>
6735
6736 * Makefile.am (scmconfig.h): new target -- generate file from
6737 ../config.h.
6738 (modinclude_HEADERS): remove version.h.
6739 (nodist_modinclude_HEADERS): add version.h.
6740
6741 2003-02-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6742
6743 This fixes a serious GC bug, introduced during the latest
6744 reorganization of the GC, which disabled freeing of structs and
6745 GOOPS objects:
6746
6747 * struct.c (scm_struct_prehistory): Init scm_i_structs_to_free to
6748 SCM_EOL.
6749 (scm_struct_prehistory): Move scm_free_structs to
6750 scm_before_mark_c_hook.
6751
6752 * gc-card.c (sweep_card): Check that we haven't swept structs on
6753 this card before. That can happen if scm_i_sweep_all_segments has
6754 been called from some other place than scm_igc.
6755
6756 2003-02-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6757
6758 * environments.c (DEFAULT_OBARRAY_SIZE): Changed from 137 to 31
6759 (since hash tables now adapt their size).
6760
6761 * modules.c (scm_modules_prehistory): Changed from 2001 to 1533
6762 (current number of prehistory bindings; hashtable code will select
6763 a prime which is greater than this value).
6764
6765 * symbols.c (scm_symbols_prehistory): Changed from 1009 to 2139
6766 (current number of initial symbols).
6767
6768 * properties.c (scm_init_properties): Don't specify size of
6769 scm_properties_whash.
6770
6771 * objprop.c (scm_init_objprop): Don't specify size of
6772 scm_object_whash.
6773
6774 * keywords.c (scm_init_keywords): Don't specify a hash table size.
6775
6776 * hooks.c (scm_c_hook_add): Fixed bug in append mode.
6777
6778 The following changes introduce the use of resizable hash tables
6779 throughout Guile. It also renames the old *-hash-table* functions
6780 to *-alist-vector* and places them, together with the rest of the
6781 weak vector support, in the module (ice-9 weak-vector). We should
6782 probably introduce a new, better, API for weak references, for
6783 example "weak pairs" a la MIT-Scheme. (In Chez scheme, they even
6784 look like and are used like ordinary pairs.)
6785
6786 * environments.c (obarray_enter, obarray_retrieve, obarray_remove,
6787 leaf_environment_fold, obarray_remove_all): Use hashtable
6788 accessors.
6789
6790 * gc.c (scm_init_storage): Moved hook initialization to
6791 scm_storage_prehistory.
6792 (scm_storage_prehistory): New function.
6793 (scm_igc): Added commentary about placement of
6794 scm_after_sweep_c_hook.
6795
6796 * gc-mark.c (scm_mark_all): Use hashtable accessors.
6797 (scm_gc_mark_dependencies): Use SCM_WVECT_WEAK_KEY_P and
6798 SCM_WVECT_WEAK_VALUE_P.
6799
6800 * hashtab.c, hashtab.h (scm_hash_for_each, scm_hash_map): New
6801 functions.
6802 (scm_vector_to_hash_table, scm_c_make_resizing_hash_table):
6803 Removed.
6804 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table,
6805 scm_make_doubly_weak_hash_table): Moved here from weaks.c.
6806
6807 * init.c (scm_init_guile_1): Removed call to scm_init_weaks; Added
6808 calls to scm_storage_prehistory and scm_hashtab_prehistory.
6809
6810 * modules.c (module-reverse-lookup): Use hashtable accessors.
6811
6812 * symbols.c, symbols.h (scm_i_hash_symbol): New function.
6813
6814 * weaks.c, weaks.h (scm_make_weak_key_alist_vector,
6815 scm_make_weak_value_alist_vector,
6816 scm_make_doubly_weak_alist_vector): New functions.
6817
6818 * weaks.c (scm_init_weaks_builtins): New function.
6819
6820 * weaks.h (SCM_WVECTF_WEAK_KEY, SCM_WVECTF_WEAK_VALUE,
6821 SCM_WVECTF_NOSCAN, SCM_WVECT_WEAK_KEY_P, SCM_WVECT_WEAK_VALUE_P,
6822 SCM_WVECT_NOSCAN_P): New macros.
6823
6824 * weaks.c (scm_scan_weak_vectors): Use SCM_WVECT_WEAK_KEY_P
6825 and SCM_WVECT_WEAK_VALUE_P.
6826
6827 * weaks.c, weaks.h (scm_i_allocate_weak_vector): Renamed from
6828 allocate_weak_vector and exported.
6829
6830 2003-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6831
6832 * hashtab.c: Undid thread safety. (We decided that it's better to
6833 let the user explicitly protect the tables (or not) according what
6834 is suitable for the application.)
6835
6836 2003-02-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6837
6838 * hashtab.c (scm_hash_fn_remove_x, scm_internal_hash_fold): Made
6839 thread safe and handle resizing tables.
6840 (scm_ihashx, scm_sloppy_assx, scm_delx_x): Removed
6841 SCM_DEFER/ALLOW_INTS.
6842
6843 2003-02-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6844
6845 * hashtab.c (scm_vector_to_hash_table,
6846 scm_c_make_resizing_hash_table, scm_make_hash_table): New
6847 functions.
6848 (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x): Made thread
6849 safe and handle resizing tables.
6850
6851 * weaks.c (scm_make_weak_key_hash_table,
6852 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
6853 Size argument made optional. Return resizable table if not
6854 specified.
6855
6856 2003-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6857
6858 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
6859 Fixed formals tests for closures. (Thanks to Kevin Ryde.)
6860
6861 2003-02-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6862
6863 * debug.c (scm_procedure_source): Handle all objects for which
6864 procedure? is #t. (Thanks to Bill Schottstaedt.)
6865
6866 2003-01-23 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6867
6868 * futures.c (mark_futures): Don't need to mark data of recycled
6869 futures.
6870 (scan_futures, cleanup_undead): Be smarter about marking
6871 futures---avoid unnecessary passes through future lists.
6872
6873 * futures.h, futures.c: New files; Introduced recycling of
6874 futures. For fine-grained threading this lifts performance to
6875 another level. We can now use parallelization in inner loops of
6876 Guile programs without impossible overhead.
6877
6878 * threads.h, threads.c: Moved futures to their own file.
6879
6880 * Makefile.am (libguile_la_SOURCES): Added futures.c.
6881 (DOT_X_FILES): Added futures.x.
6882 (DOT_DOC_FILES): Added futures.doc.
6883 (modinclude_HEADERS): Added futures.h.
6884
6885 * threads.c, threads.h (scm_i_create_thread): Renamed from
6886 create_thread and made global.
6887
6888 * futures.c (scm_make_future): New procedure.
6889
6890 * eval.c: #include "libguile/futures.h".
6891
6892 * init.c: #include "futures.h"
6893 (scm_init_guile_1): Call scm_init_futures.
6894
6895 * stime.c (SCM_TIME_UNITS_PER_SECOND): Renamed from CLKTCK.
6896
6897 * stime.h (SCM_TIME_UNITS_PER_SECOND): Definition moved here.
6898
6899 * eval.c, eval.h (scm_trampoline_0, scm_i_call_closure_0): New
6900 functions.
6901
6902 * eval.c (scm_trampoline_1): Fixed arguments test for closures.
6903
6904 2003-01-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6905
6906 * threads.c (create_thread): Don't unwind dynwind chain of parent
6907 thread before creation. Just start the new thread with an empty
6908 dynwind chain.
6909
6910 2003-01-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6911
6912 * evalext.c, evalext.h (scm_self_evaluating_p): New function.
6913
6914 2003-01-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6915
6916 * threads.c (scm_timed_wait_condition_variable): Support timed
6917 waiting also for simple condition variables.
6918
6919 * goops.c (TEST_CHANGE_CLASS): Use scm_change_object_class instead
6920 of calling the procedure change-object-class.
6921
6922 2003-01-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6923
6924 * ramap.c (scm_ramapc): Typo in error message.
6925
6926 2003-01-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6927
6928 * goops.c (scm_sys_prep_layout_x): Bugfix: Only create layout for
6929 slots with instance allocation.
6930
6931 * goops.c, goops.h (scm_class_extended_generic_with_setter): New
6932 class.
6933 (scm_compute_applicable_methods): Use scm_generic_function_methods.
6934
6935 * goops.c (scm_generic_function_methods): Support extended
6936 generic functions.
6937
6938 2002-12-29 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6939
6940 * eval.c (unmemocopy): Bugfix: scm_sym_delay --> scm_sym_future.
6941 Thanks to Neil for pointing this out!
6942
6943 2002-12-29 Neil Jerram <neil@ossau.uklinux.net>
6944
6945 * lang.h: Remove declarations matching definitions removed from
6946 lang.c (just below).
6947
6948 2002-12-28 Neil Jerram <neil@ossau.uklinux.net>
6949
6950 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
6951 scm_m_while, scm_nil_eq): Remove definitions that were superfluous
6952 and already commented out.
6953
6954 * read.h (scm_lreadparen), read.c (scm_lreadr, scm_read_token,
6955 scm_lreadparen): Support reading vectors with Elisp syntax if
6956 SCM_ELISP_READ_EXTENSIONS is defined. (SCM_ELISP_READ_EXTENSIONS
6957 is not currently defined, and there isn't even a configure switch
6958 to enable it yet.)
6959
6960 2002-12-26 Marius Vollmer <mvo@zagadka.ping.de>
6961
6962 * Makefile.am (c-tokenize.o): Refer to source via $< so that vpath
6963 builds work.
6964 (EXTRA_DIST): Added version.h.in.
6965
6966 2002-12-21 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6967
6968 This change makes it possible for one thread to do lazy sweeping
6969 while other threads are running. Now only the mark phase need to
6970 have all threads asleep. We should look further into this issue.
6971 Presently, I've put the locking of scm_i_sweep_mutex at
6972 "conservative" places due to my current lack of knowledge about
6973 the garbage collector. Please feel free to restrict these regions
6974 further to allow for maximal parallelism!
6975
6976 * gc.c, gc.h (scm_i_sweep_mutex): New mutex.
6977
6978 * gc.c (scm_gc_for_newcell), gc-malloc.c (scm_realloc,
6979 scm_gc_register_collectable_memory): Substitute locking of
6980 scm_i_sweep_mutex for calls to scm_i_thread_put_to_sleep.
6981 (scm_igc): Lock sweep mutex here instead of in callers; Calls to
6982 scm_i_thread_put_to_sleep/scm_i_thread_wake_up used to demarkate
6983 the single-thread section (which now only contains the mark
6984 phase).
6985 (scm_gc): Don't lock sweeo mutex here since scm_igc locks it;
6986 Removed SCM_DEFER/ALLOW_INTS. Simply call scm_igc directly.
6987
6988 * threads.c (gc_section_mutex): Removed.
6989
6990 2002-12-19 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6991
6992 * threads.c (create_thread): Clear parent field in root state in
6993 order not to unnecessarily remember dead threads.
6994
6995 * eval.c (call_subr2o_1, call_lsubr2_2): New functions.
6996 (scm_trampoline_1, scm_trampoline_2): Use them.
6997
6998 2002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6999
7000 Partial introduction of real plugin interface.
7001
7002 * Makefile.am (modinclude_HEADERS): Added threads-plugin.h.
7003 (EXTRA_DIST): Added threads-plugin.c.
7004
7005 * threads-plugin.h, threads-plugin.c: New files.
7006
7007 * threads.h: #include "libguile/threads-plugin.h".
7008
7009 * threads.c: #include "libguile/threads-plugin.c".
7010
7011 * pthread-threads.c: Temporarily remove debugging functions.
7012
7013 * threads.c, threads.h (scm_yield): Added back.
7014
7015 2002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7016
7017 * threads.c (really_launch): Detach before unlocking
7018 thread_admin_mutex in order not to risk being joined.
7019 (scm_i_thread_put_to_sleep, scm_i_thread_wake_up): Keep
7020 thread_admin_mutex locked during GC.
7021
7022 * pthread-threads.c, pthread-threads.h: Improvements to debugging
7023 functions.
7024
7025 2002-12-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7026
7027 * pthread-threads.c, pthread-threads.h (SCM_DEBUG_THREADS): Added
7028 support for debugging mutex operations.
7029
7030 * threads.c (scm_thread): Removed filed joining_threads.
7031 (thread_print): Print thread number as well as address of thread
7032 structure.
7033 (scm_join_thread): Bugfix.
7034 (scm_lock_mutex, scm_try_mutex, scm_unlock_mutex,
7035 scm_timed_wait_condition_variable, scm_signal_condition_variable,
7036 scm_broadcast_condition_variable): Use the low-level API.
7037 (scm_all_threads): Return copy of thread list (to prevent
7038 unintended destruction).
7039 (scm_threads_prehistory): Initialize heap_mutex of fake thread.
7040
7041 * pthread-threads.c, pthread-threads.h, threads.c: Fixes to
7042 pthread "native" recursive mutex support.
7043
7044 2002-12-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7045
7046 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): New definitions.
7047 Simply lock a thread C API recursive mutex.
7048 (SCM_NONREC_CRITICAL_SECTION_START,
7049 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
7050 SCM_REC_CRITICAL_SECTION_END): Removed.
7051
7052 * eval.c: Replaced SOURCE_SECTION_START / SOURCE_SECTION_END with
7053 direct calls to scm_rec_mutex_lock / unlock around the three calls
7054 to scm_m_expand_body.
7055
7056 * eval.c, eval.h (promise_free): New function.
7057 (scm_force): Rewritten; Now thread-safe; Removed
7058 SCM_DEFER/ALLOW_INTS.
7059
7060 * pthread-threads.h: Added partially implemented plugin interface
7061 for recursive mutexes. These are, for now, only intended to be
7062 used internally within the Guile implementation.
7063
7064 * pthread-threads.c: New file.
7065
7066 * threads.c: Conditionally #include "pthread-threads.c".
7067
7068 * eval.c, eval.h (scm_makprom, scm_force): Rewritten to be
7069 thread-safe;
7070
7071 * snarf.h (SCM_MUTEX, SCM_GLOBAL_MUTEX, SCM_REC_MUTEX,
7072 SCM_GLOBAL_REC_MUTEX): New macros.
7073
7074 * eval.c, threads.c, threads.h, snarf.h: Rewrote critical section
7075 macros---use mutexes instead.
7076
7077 * tags.h (SCM_IM_FUTURE): New tag.
7078
7079 * eval.c (scm_m_future): New primitive macro.
7080 (SCM_CEVAL): Support futures.
7081 (unmemocopy): Support unmemoization of futures.
7082
7083 * print.c (scm_isymnames): Name of future isym.
7084
7085 * version.c: Unmade some changes to my private copy that got
7086 committed by mistake.
7087
7088 2002-12-11 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7089
7090 * gc-malloc.c, gc.h, init.c: Reverted gc-malloc change of
7091 2002-12-10.
7092
7093 * gc.c (scm_igc): Don't call scm_i_thread_invalidate_freelists.
7094
7095 * gc.c (scm_gc_sweep): Call it here instead, which is a more
7096 logical place.
7097
7098 * threads.c (create_thread): Remember root object until the handle
7099 of the new thread is on all_threads list.
7100
7101 * root.c (scm_make_root): Moved copying of fluids until after
7102 creation of root handle so that the fluids are GC protected. Also
7103 removed the critical section.
7104
7105 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7106
7107 * gc-malloc.c, gc.h (scm_gc_malloc_prehistory): New function.
7108
7109 * gc-malloc.c (malloc_mutex): New mutex.
7110 (scm_gc_malloc_prehistory): Initialize it.
7111 (scm_realloc): Serialize call to realloc
7112 (scm_calloc): Same for calloc.
7113 Thanks to Wolfgang Jaehrling!
7114 (Now we have to make sure all calls to malloc/realloc are made
7115 through scm_malloc.)
7116
7117 * init.c (scm_init_guile_1): Call scm_gc_malloc_prehistory.
7118
7119 * threads.c (really_launch): Release heap (to prevent deadlock).
7120 (create_thread): Release heap before locking thread admin mutex.
7121
7122 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7123
7124 * threads.c (scm_i_thread_invalidate_freelists): New
7125 function.
7126
7127 * gc.c (scm_igc): Call scm_i_thread_invalidate_freelists.
7128
7129 * modules.c (scm_export): Inserted a return statement.
7130
7131 2002-12-10 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7132
7133 * modules.c (scm_export): new function
7134
7135 * gc-card.c: add a note about malloc()/free() overhead.
7136
7137 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7138
7139 * Makefile.am (c-tokenize.$(OBJEXT)): Don't look for c-tokenize.c
7140 in srcdir.
7141
7142 2002-12-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7143
7144 These changes remove scm_ints_disabled (which hasn't has any
7145 effect in Guile for quite some time).
7146
7147 * async.c, error.h (scm_ints_disabled): Removed.
7148
7149 * gc.c (scm_gc_for_newcell), init.c (scm_init_guile_1),
7150 root.c (scm_internal_cwdr), gdbint.c (SCM_BEGIN_FOREIGN_BLOCK,
7151 SCM_END_FOREIGN_BLOCK): Don't touch scm_ints_disabled.
7152 (old_ints): Removed.
7153
7154 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Define as a recursive
7155 critical section.
7156 (SCM_REDEFER_INTS, SCM_ALLOW_INTS): Define as SCM_DEFER_INTS and
7157 SCM_ALLOW_INTS.
7158
7159 2002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7160
7161 * threads.c (scm_mutex_lock, scm_cond_wait, scm_cond_timedwait):
7162 Removed accidental #if 0 around these functions.
7163
7164 These changes are the start of support for preemptive
7165 multithreading. Marius and I have agreed that I commit this code
7166 into the repository although it isn't thoroughly tested and surely
7167 introduces many bugs. The bugs should only be exposed when using
7168 threads, though. Signalling and error handling for threads is
7169 very likely broken. Work on making the implementation cleaner and
7170 more efficient is needed.
7171
7172 * __scm.h (SCM_ALLOW_INTS_ONLY): Removed.
7173 (SCM_NONREC_CRITICAL_SECTION_START,
7174 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
7175 SCM_REC_CRITICAL_SECTION_END): New macros.
7176 (SCM_CRITICAL_SECTION_START/END): Defined here.
7177
7178 * eval.c: Insert SOURCE_SECTION_START / SOURCE_SECTION_END around
7179 the three calls to scm_m_expand_body.
7180
7181 * gc.h: #include "libguile/pthread-threads.h";
7182 (SCM_FREELIST_CREATE, SCM_FREELIST_LOC): New macros.
7183
7184 * gc.c (scm_i_freelist, scm_i_freelist2): Defined to be of type
7185 scm_t_key;
7186
7187 * gc.c, gc-freelist.c, inline.h: Use SCM_FREELIST_LOC for freelist
7188 access.
7189
7190 * gc-freelist.c (scm_gc_init_freelist): Create freelist keys.
7191
7192 * gc-freelist.c, threads.c (really_launch): Use
7193 SCM_FREELIST_CREATE.
7194
7195 * gc-malloc.c (scm_realloc, scm_gc_register_collectable_memory):
7196
7197 * gc.c (scm_i_expensive_validation_check, scm_gc,
7198 scm_gc_for_newcell): Put threads to sleep before doing GC-related
7199 heap administration so that those pieces of code are executed
7200 single-threaded. We might consider rewriting these code sections
7201 in terms of a "call_gc_code_singly_threaded" construct instead of
7202 calling the pair of scm_i_thread_put_to_sleep () and
7203 scm_i_thread_wake_up (). Also, we would want to have as many of
7204 these sections eleminated.
7205
7206 * init.c (scm_init_guile_1): Call scm_threads_prehistory.
7207
7208 * inline.h: #include "libguile/threads.h"
7209
7210 * pthread-threads.h: Macros now conform more closely to the
7211 pthreads interface. Some of them now take a second argument.
7212
7213 * threads.c, threads.h: Many changes.
7214
7215 2002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7216
7217 * Makefile.am (version.h): Changed $^ --> $< in rule for
7218 version.h.
7219
7220 2002-12-08 Rob Browning <rlb@defaultvalue.org>
7221
7222 * version.h.in (SCM_MICRO_VERSION): use @--@ substitution now.
7223 (SCM_MINOR_VERSION): use @--@ substitution now.
7224 (SCM_MICRO_VERSION): use @--@ substitution now.
7225 (scm_effective_version): new function prototype.
7226
7227 * version.c (scm_effective_version): new function, also add
7228 effective-version.
7229
7230 * Makefile.am (schemelibdir): VERSION -> GUILE_EFFECTIVE_VERSION.
7231 (libpath.h): use GUILE_EFFECTIVE_VERSION to compute
7232 SCM_LIBRARY_DIR.
7233 (version.h): generate this here rather than configure.in. This
7234 approach tracks source edits better (i.e. more immediately).
7235 Might be worth considering for other .in files too.
7236
7237 2002-12-02 Marius Vollmer <mvo@zagadka.ping.de>
7238
7239 Reorganized thread package selection. A thread package now only
7240 implements a small set of pthread like functions and Guile
7241 implements the rest on top of that. Guile's implementation is
7242 what the "coop-pthreads" package has been previously. Support for
7243 "coop" threads has been removed until I get time to add it again.
7244
7245 * Makefile.am (libguile_la_SOURCES): Removed iselect.c.
7246 (noinst_HEADERS): Removed coop-threads.c, coop-threads.h, coop.c,
7247 null-threads.c, coop-pthreads.c.
7248 (modinclude_HEADERS): Removed coop-defs.h, coop-pthreads.h. Added
7249 pthread-threads.h.
7250
7251 * validate.h (SCM_VALIDATE_THREAD): Moved to threads.h.
7252
7253 * threads.h: Do not include "libguile/coop-defs.h". Include
7254 "libguile/pthread-threads.h" for USE_COPT_THREADS. Removed
7255 (previously deprecated) C level thread API prototypes. They are
7256 now in the thread package specific headers, "null-threads.h" and
7257 "pthread-threads.h".
7258 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
7259 New.
7260 (scm_threads_init): Removed.
7261 (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END,
7262 SCM_THREAD_SWITCHING_CODE, scm_i_switch_counter,
7263 SCM_I_THREAD_SWITCH_COUNT): Define here.
7264 (scm_single_thread_p): Removed.
7265 (scm_call_with_new_thread): Take two args directly instead of list
7266 of two args.
7267 (scm_i_thread_data, scm_i_set_thread_data, SCM_THREAD_LOCAL_DATA,
7268 SCM_SET_THREAD_LOCAL_DATA): Define here.
7269
7270 * threads.c: Merged with "coop-pthreads.c".
7271
7272 * null-threads.h: Implement pthread-like API as a set of macros.
7273
7274 * pthread-threads.h: New, implement pthread-like API by deferring
7275 to pthread itself.
7276
7277 * init.c (scm_init_guile_1): Do not call scm_init_iselect, which
7278 has been lost in the reorganization.
7279
7280 2002-12-01 Mikael Djurfeldt <mdj@linnaeus>
7281
7282 The following change makes it possible to move procedure
7283 application dispatch outside inner loops. The motivation was
7284 clean implementation of efficient replacements of R5RS primitives
7285 in SRFI-1.
7286
7287 The semantics is clear: scm_trampoline_N returns an optimized
7288 version of scm_call_N (or NULL if the procedure isn't applicable
7289 on N args).
7290
7291 Applying the optimization to map and for-each increases efficiency
7292 noticeably. For example, (map abs ls) is 8 times faster than
7293 before.
7294
7295 * eval.h (scm_t_trampoline_1, scm_t_trampoline_2): New types.
7296
7297 * eval.c, eval.h (scm_trampoline_1, scm_trampoline_2): New functions.
7298
7299 * eval.c (call_subr2_2, call_lsubr_2, call_closure_2): New functions;
7300 (map, for-each): Handle also application on two args as a special
7301 case; Use trampolines.
7302
7303 Other changes:
7304
7305 * sort.c (scm_cmp_function): Choose subr2less for scm_tc7_subr_2o;
7306 (subr2oless): Removed.
7307 (scm_restricted_vector_sort_x): Use scm_return_first to keep the
7308 vector GC protected.
7309
7310 * eval.c (check_map_args): Use scm_out_of_range_pos instead of
7311 scm_out_of_range.
7312
7313 2002-11-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
7314
7315 * evalext.[ch] (scm_m_undefine, undefine): Deprecated.
7316
7317 2002-11-17 Mikael Djurfeldt <mdj@linnaeus>
7318
7319 * debug.c (scm_make_iloc): Added missing "return".
7320
7321 2002-11-17 Marius Vollmer <mvo@zagadka.ping.de>
7322
7323 * strports.c (scm_eval_string_in_module): Validate second arg to
7324 be a module. Thanks to Arno Peters!
7325
7326 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7327
7328 * .cvsignore: remove goops.c
7329
7330 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7331
7332 * modules.c (scm_env_top_level, scm_lookup_closure_module,
7333 module_variable, scm_module_lookup_closure,
7334 scm_module_transformer, scm_sym2var, scm_module_reverse_lookup,
7335 scm_system_module_env_p): Don't compare SCM values with C
7336 operators == or !=. Avoid SCM_IMP predicates. Prefer !SCM_FALSEP
7337 over SCM_NFALSEP.
7338
7339 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7340
7341 * eval.h (SCM_MAKE_ILOC): New macro.
7342
7343 * debug.c (scm_make_iloc): Use SCM_MAKE_ILOC instead of computing
7344 the iloc bitpattern here.
7345
7346 2002-11-14 Mikael Djurfeldt <mdj@linnaeus>
7347
7348 * coop-pthreads.c, coop-pthreads.h: scm_internal_select should be
7349 part of the API, otherwise it's difficult to write Guile
7350 extensions using non-blocking I/O => moved #include
7351 "libguile/iselect.h" from coop-pthreads.c --> coop-pthreads.h.
7352
7353 * coop-pthreads.c (scm_unlock_mutex): Changed s_lock_mutex -->
7354 s_unlock_mutex.
7355
7356 2002-11-10 Marius Vollmer <mvo@zagadka.ping.de>
7357
7358 * __scm.h (USE_THREADS, GUILE_ISELECT): Do not define here. They
7359 are defined in configure.in.
7360
7361 * threads.c: Removed SCM_API from function definitions. SCM_API
7362 is only for declarations.
7363
7364 2002-11-07 Mikael Djurfeldt <mdj@linnaeus>
7365
7366 * coop-pthreads.h: Added support for thread specific data to the
7367 generic C API for the coop-pthreads case.
7368
7369 * threads.c, threads.h (scm_cond_init): Undo unintentional API
7370 change.
7371 (scm_cond_broadcast): Added missing function.
7372
7373 2002-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7374
7375 * coop.c (coop_next_runnable_thread): Removed, wich should have
7376 happened when GUILE_ISELECT was hard-wired.
7377
7378 2002-11-03 Marius Vollmer <mvo@zagadka.ping.de>
7379
7380 * Makefile.am (libguile_la_SOURCES): Added threads.c
7381 (DOT_DOC_FILES): Added threads.doc.
7382 (DOT_X_FILES): Added threads.x.
7383 (EXTRA_libguile_la_SOURCES): Removed threads.c.
7384 (noinst_HEADERS): Added coop-pthreads.c.
7385 (modinclude_HEADERS): Added coop-pthreads.h.
7386
7387 * __scm.h (USE_THREADS, GUILE_ISELECT): Define when
7388 SCM_DEBUG_DEPRECATED. Removed their use thru-out Guile.
7389
7390 * iselect.c: Include "_scm.h" before testing HAVE_UNISTD_H.
7391 Thanks to Bill Schottstaedt!
7392
7393 * numbers.c (scm_integer_expt): Make 0^z == 0 for z != 0.
7394
7395 * _scm.h (HAVE_RESTARTABLE_SYSCALLS): Do define even when
7396 SCM_COPT_THREADS is defined.
7397 (SCM_SYSCALL): Use EINTR-expection version when SCM_COPT_THREADS
7398 is defined.
7399
7400 * coop-pthreads.c: Some harmless renamings of internal stuff.
7401 (create_thread): New, generalized version of
7402 scm_call_with_new_thread.
7403 (scm_call_with_new_thread): Use it.
7404 (scm_spawn_thread): New, use create_thread.
7405
7406 2002-11-02 Marius Vollmer <mvo@zagadka.ping.de>
7407
7408 * coop-pthreads.c, coop-pthreads.h: Redone completely, you might
7409 start testing it now.
7410
7411 * _scm.h: Include <errno.h< so that SCM_SYSCALL is correctly
7412 defined when HAVE_RESTARTABLE_SYSCALLS is not defined.
7413 (HAVE_RESTARTABLE_SYSCALLS): Do not define when USE_COPT_THREADS
7414 is defined.
7415
7416 2002-10-27 Marius Vollmer <mvo@zagadka.ping.de>
7417
7418 * scmsigs.c (signal_cell_handlers, install_handler_data,
7419 scm_delq_spine_x, really_install_handler, install_handler): New
7420 scheme for triggering signal handlers, to simplify take_signal.
7421 (take_signal): Simplified, to avoid race conditions.
7422 (scm_sigaction_for_thread): Use new Scheme. Validate that thread
7423 hasn't exited yet.
7424
7425 * async.c (scm_async_click): Reset pending_asyncs, handle
7426 signal_asyncs. Don't set cdr of a non-signal async to #f.
7427 (scm_i_queue_async_cell): Do not check cdr of cell for #f, queue
7428 always. Set pending_asyncs.
7429 (scm_system_async_mark_for_thread): Check that thread has not
7430 exited.
7431 (scm_unmask_signals, decrease_block): Call scm_async_click after
7432 block_asyncs becomes zero.
7433
7434 * __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of
7435 active_asyncs.
7436
7437 * root.h (scm_root_state): Added pending_asyncs and signal_asyncs
7438 fields.
7439 * root.c (root_mark): Mark them.
7440 (make_root): Initialize them.
7441
7442 * iselect.c, iselect.h: Replaced GUILE_ISELECT with
7443 USE_COOP_THREADS.
7444 (scm_internal_select): Define one version for USE_COOP_THREADS and
7445 one for USE_NULL_THREADS.
7446 (scm_init_iselect): Likewise.
7447
7448 * inline.h (scm_cell, scm_double_cell): Also allow
7449 USE_COPT_THREADS to not protect the slot initializers.
7450
7451 * init.c (scm_init_guile_1): Call scm_init_thread_procs. This is
7452 because threads need to be initialized before the stack, but
7453 gsubrs such as scm_timed_condition_variable_wait can only be
7454 created later.
7455
7456 * threads.h: Include "coop-pthreads.h" when requested.
7457 (scm_threads_make_mutex, scm_threads_lock_mutex,
7458 scm_threads_unlock_mutex, scm_threads_monitor): Removed, they were
7459 not implemented anyway.
7460 (scm_init_thread_procs, scm_try_mutex,
7461 scm_timed_condition_variable_wait,
7462 scm_broadcast_condition_variable, scm_c_thread_exited_p,
7463 scm_thread_exited_p): New prototypes.
7464 (struct timespec): Define if not already defined.
7465 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
7466 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
7467 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
7468 scm_cond_broadcast, scm_cond_destroy): Declarations moved here and
7469 deprecated.
7470
7471 * threads.c: Include <errno.h>. Include "coop-pthreads.c" when
7472 requested.
7473 (scm_thread_exited_p): New.
7474 (scm_try_mutex, scm_broadcast_condition_variable): Newly
7475 registered procedures.
7476 (scm_wait_condition_variable, scm_timed_wait_condition_variable):
7477 Use the latter as the procedure for "wait-condition-variable",
7478 thus offering a optional timeout parameter to Scheme.
7479 (scm_wait_condition_variable): Implement in terms of
7480 scm_timed_wait_condition_variable.
7481 (scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
7482 scm_mutex_unlock, scm_mutex_destroy, scm_cond_init,
7483 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
7484 scm_cond_broadcast, scm_cond_destroy): Implement in terms of
7485 scm_make_mutex, etc, and deprecate.
7486 (scm_init_threads): Do not create smobs, leave this to
7487 scm_threads_init. Do not include "threads.x" file.
7488 (scm_init_thread_procs): New, include "threads.x" here.
7489
7490 * null-threads.h (scm_null_mutex, scm_null_mutex_init,
7491 scm_null_mutex_lock, scm_null_mutex_unlock,
7492 scm_null_mutex_destroy, scm_null_condvar, scm_null_condvar_init,
7493 scm_null_condvar_wait, scm_null_condvar_signal,
7494 scm_null_condvar_destroy): Removed.
7495 (scm_mutex_init, scm_mutex_lock, scm_mutex_unlock, scm_cond_init,
7496 scm_cond_wait, scm_cond_signal, scm_cond_broadcast,
7497 scm_cond_destory): Do not define, they are now deprecated and
7498 handled by threads.{h,c}.
7499
7500 * null-threads.c (scm_null_mutex, scm_null_cond): Define here.
7501 (scm_threads_init): Create smobs here, using the appropriate
7502 sizes.
7503 (block): Removed, now unused.
7504 (scm_c_thread_exited_p): New.
7505 (scm_null_mutex_init, scm_null_mutex_lock, scm_null_mutex_unlock,
7506 scm_null_mutex_destroy, scm_null_condvar_init,
7507 scm_null_condvar_wait, scm_null_condvar_signal,
7508 scm_null_condvar_destroy): Removed and updated users to do their
7509 task directly.
7510 (scm_try_mutex, timeval_subtract,
7511 scm_timed_wait_condition_variable,
7512 scm_broadcast_condition_variable): New.
7513 (scm_wait_condition_variable): Removed.
7514
7515 * coop-defs.h (coop_m): Added 'level' field.
7516 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
7517 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
7518 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
7519 scm_cond_broadcast, scm_cond_destroy, struct timespec): Do not
7520 define.
7521 (coop_condition_variable_broadcast): New.
7522
7523 * coop-threads.c (scm_threads_init): Create smobs here, using the
7524 appropriate sizes.
7525 (scm_c_thread_exited_p, scm_try_mutex,
7526 scm_timed_wait_condition_variable,
7527 scm_broadcast_condition_variable): New.
7528 (scm_wait_condition_variable): Removed.
7529
7530 * coop.c (coop_new_mutex_init): Initialize level.
7531 (coop_mutex_trylock, coop_mutex_lock, coop_mutex_unlock): maintain
7532 level.
7533 (coop_condition_variable_signal): Renamed to
7534 coop_condition_variable_broadcast and reimplemented in terms of
7535 that. Thus...
7536 (coop_condition_variable_broadcast): New.
7537
7538 * goops.c (hell_mutex): Reimplemented using scm_make_mutex, etc.
7539
7540 * coop-pthreads.h, coop-pthreads.c: New, but unfinished.
7541
7542 2002-10-21 Marius Vollmer <mvo@zagadka.ping.de>
7543
7544 * null-threads.c: Include <time.h>. Also, use <...> for inclusion
7545 of system headers.
7546
7547 * async.c, goops.h, modules.h, validate.h (SCM_MAKE_VALIDATE_MSG):
7548 New. Use it instead of SCM_MAKE_VALIDATE in lots of places to
7549 give better error messages. Thanks to Bill Schottstaedt!
7550
7551 2002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
7552
7553 * evalext.h, evalext.c (scm_definedp, scm_defined_p): Renamed
7554 scm_definedp to scm_defined_p and deprecated scm_definedp.
7555
7556 2002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
7557
7558 * async.h, async.c (scm_system_async): Fixed deprecation to work
7559 correctly when deprecated features are excluded.
7560
7561 2002-10-16 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7562
7563 * async.c (scm_system_async_mark_for_thread): Validate thread
7564 argument.
7565
7566 * coop-threads.c (scm_i_thread_root): Do not validate argument.
7567
7568 * feature.c (scm_init_feature): Don't add 'threads' for
7569 USE_NULL_THREADS.
7570
7571 * inline.h (scm_cell, scm_double_cell): Also allow
7572 USE_NULL_THREADS to not protect the slot initializers.
7573
7574 * scmsigs.c (scm_sigaction_for_thread): It's "USE_THREADS" not
7575 "USE_THREAD".
7576
7577 * Makefile.am (noinst_HEADERS): Added null-threads.c.
7578 (modinclude_HEADERS): Added null-threads.h.
7579
7580 * threads.h: Include null-threads.h when !USE_COOP_THREADS.
7581 * threads.c: Include null-threads.c when !USE_COOP_THREADS.
7582 (scm_init_threads): Use generic type names scm_t_mutex and
7583 scm_t_cond instead of coop_m and coop_c.
7584
7585 * null-threads.c, null-threads.h: New files.
7586
7587 2002-10-15 Marius Vollmer <mvo@zagadka.ping.de>
7588
7589 * Makefile.am: Replaced "$<" in non-pattern rules with its value.
7590 This is to support makes that know about "$<" only in pattern
7591 rules, like Sun's make.
7592
7593 2002-10-13 Marius Vollmer <mvo@zagadka.ping.de>
7594
7595 * Makefile.am (libpath.h): Fixed typo in top_srcdir_absolute
7596 substitution. Thanks to David Allouche!
7597
7598 2002-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
7599
7600 * evalext.h: Replaced SCM_DEBUG_DEPRECATED with
7601 !SCM_ENABLE_DEPRECATED.
7602
7603 2002-10-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7604
7605 * async.c (scm_system_async_mark_for_thread): Only call
7606 scm_i_thread_root when USE_THREADS is defined. Use scm_root
7607 otherwise.
7608
7609 * scmsigs.c (take_signal): Only call scm_i_thread_root when
7610 USE_THREADS is defined. Use scm_root otherwise.
7611 (scm_sigaction_for_thread): Ignore THREAD argument when
7612 USE_THREADS is not defined. Also, move THREAD argument defaulting
7613 out of HAVE_SIGACTION section, which was a bug.
7614
7615 2002-10-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7616
7617 * scmsigs.c (scm_sigaction_for_thread): Store original handler in
7618 signal_handlers, not the closure that is used as the async.
7619 The closure is stored in signal_handler_cells, as previously.
7620
7621 2002-10-10 Marius Vollmer <mvo@zagadka.ping.de>
7622
7623 * root.h (scm_root_state): Added 'block_async' slot.
7624 (scm_active_asyncs): Removed abbrev.
7625 * root.c (scm_make_root): Initialize 'block_asyncs' slot.
7626
7627 * __scm.h (SCM_ASYNC_TICK): Do without the scm_active_asyncs
7628 abbrev.
7629
7630 * async.h (scm_call_with_blocked_asyncs,
7631 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
7632 scm_c_call_with_unblocked_asyncs): New prototypes.
7633 (scm_mask_signals, scm_unmask_signals): Deprecated.
7634 (scm_mask_ints): Turned into a macro.
7635 * async.c (scm_mask_ints): Removed.
7636 (scm_run_asyncs): Do not set scm_mask_ints while running an async.
7637 this should not be necessary.
7638 (scm_async_click): Test block_asyncs instead of scm_mask_ints.
7639 (scm_mask_signals, scm_unmask_signals): Deprecated. Emit
7640 deprecation warning and check for errornous use. Set block_asyncs
7641 instead of scm_mask_ints.
7642 (increase_block, decrease_block, scm_call_with_blocked_asyncs,
7643 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
7644 scm_c_call_with_unblocked_asyncs): New.
7645
7646 * script.c (scm_compile_shell_switches): Do not set scm_mask_ints.
7647 Asyncs are enabled by default.
7648
7649 2002-10-09 Neil Jerram <neil@ossau.uklinux.net>
7650
7651 * vports.c (scm_make_soft_port): Allow vector argument to carry a
7652 6th element: an input waiting thunk.
7653 (sf_input_waiting): New.
7654
7655 2002-10-05 Marius Vollmer <mvo@zagadka.ping.de>
7656
7657 * root.c (root_mark): Mark active_asyncs slot.
7658
7659 * async.c (scm_async_click): Set the cdr of a executed handler
7660 cell to SCM_BOOL_F, not SCM_EOL.
7661 (scm_i_queue_async_cell): Queue the cell at the end of the list,
7662 and only if the handler procedure is not already present.
7663 (scm_system_async_mark_for_thread): Initialize cdr of handler cell
7664 with SCM_BOOL_F.
7665 * scmsigs.c (scm_sigaction_for_thread): Likewise.
7666
7667 2002-10-04 Rob Browning <rlb@defaultvalue.org>
7668
7669 * guile.c (main): switch to scm_lt_dlset_preloaded_symbols;
7670
7671 * dynl.c (sysdep_dynl_link): switch to scm_lt_dlhandle,
7672 scm_lt_dlopenext, and scm_lt_dlerror.
7673 (sysdep_dynl_unlink): switch to scm_lt_dlhandle, scm_lt_dlclose,
7674 and scm_lt_dlerror.
7675 (sysdep_dynl_func): switch to scm_lt_dlhandle, scm_lt_dlsym,
7676 and scm_lt_dlerror.
7677 (sysdep_dynl_init): switch to scm_lt_dlinit();
7678
7679 * Makefile.am (libguile_la_LIBADD): switch to use
7680 libguile-ltdl.la.
7681
7682 * numbers.c (scm_integer_expt): (expt 0 1) should be 1.
7683
7684 2002-10-04 Marius Vollmer <mvo@zagadka.ping.de>
7685
7686 * scmsigs.h (scm_sigaction_for_thread): New prototype.
7687 * scmsigs.c (got_signal): Removed.
7688 (signal_handler_cells, signal_handler_threads): New.
7689 (take_signal): Queue the cell of the signal for the specified
7690 thread. Reset the signal handler on systems that don't have
7691 sigaction.
7692 (sys_deliver_signals): Removed.
7693 (close_1): New.
7694 (scm_sigaction_for_thread): Renamed from scm_sigaction and
7695 extended to also set the thread of a signal and allocate a cell
7696 for it. Keep the Scheme name "sigaction". Check that signum is
7697 within range. Also, use SCM_VECTOR_REF instead of SCM_VELTS.
7698 (scm_sigaction): Implement in terms of scm_sigaction_for_thread.
7699 (scm_init_scmsigs): Allocate signal_handler_cells and
7700 signal_handler_threads vectors.
7701
7702 * async.c: Removed GUILE_OLD_ASYNC_CLICK code. Reorganized so
7703 that system asnycs and user asyncs are separated. Reimplemented
7704 system asyncs to work per-thread.
7705
7706 * gc.c (scm_init_gc): Do not use scm_system_async.
7707
7708 * async.h (scm_asyncs_pending, scm_set_tick_rate,
7709 scm_set_switch_rate, scm_system_async_mark_from_signal_handler):
7710 Removed prototypes.
7711 (scm_i_queue_async_cell): New.
7712
7713 * __scm.h (scm_asyncs_pending_p): Removed.
7714 (SCM_ASYNC_CLICK): Check scm_active_asyncs instead of
7715 scm_asyncs_pending_p.
7716
7717 * async.h (scm_system_async_mark_for_thread): New prototype.
7718
7719 * __scm.h: Removed GUILE_OLD_ASYNC_CLICK code.
7720
7721 * root.h (scm_root_state): Added new "active_asyncs" slot.
7722 * root.c (scm_make_root): Initialize it to SCM_EOL.
7723
7724 * coop-defs.h (coop_t): Added new "handle" slot.
7725 * coop-threads.c (all_threads, scm_current_thread,
7726 scm_all_threads, scm_i_thread_root): New.
7727 (scm_threads_init): Add main thread to all_threads.
7728 (scheme_launch_thread): Remove thread from all_threads when it
7729 terminates.
7730 (scm_call_with_new_thread): Initialize handle slot of coop_t
7731 structure and add new thread to all_threads.
7732 (scm_spawn_thread): Likewise.
7733
7734 * threads.h (scm_current_thread, scm_all_threads): New prototypes.
7735 * threads.c (scm_current_thread, scm_all_threads): Register as
7736 primitives.
7737
7738 * dynl.c: Use scm_lt_ prefix for libltdl functions.
7739
7740 2002-09-29 Neil Jerram <neil@ossau.uklinux.net>
7741
7742 * script.c (scm_compile_shell_switches): Fix bad spelling of
7743 `explicitly' in comment.
7744
7745 2002-09-28 Neil Jerram <neil@ossau.uklinux.net>
7746
7747 * posix.c (scm_geteuid, scm_getegid, scm_seteuid, scm_setegid):
7748 Refer to provided? in doc string rather than deprecated feature?.
7749
7750 2002-09-24 Gary Houston <ghouston@arglist.com>
7751
7752 * inline.h (scm_double_cell): prevent reordering of statements
7753 with any following code (for GCC 3 strict-aliasing).
7754 * numbers.c (scm_make_real), num2float.i.c (FLOAT2NUM): removed
7755 the earlier version of the reordering prevention.
7756
7757 2002-09-19 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7758
7759 * inline.h (scm_double_cell): move SET_GCMARK set out of if body.
7760
7761 2002-09-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7762
7763 * gc-malloc.c (scm_gc_register_collectable_memory): more overflow
7764 protection.
7765
7766 2002-09-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7767
7768 * inline.h: include stdio.h
7769
7770 * smob.c (free_print): abort if scm_debug_cell_accesses_p is set
7771
7772 2002-09-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7773
7774 * gc-segment.c (scm_i_make_initial_segment): check user settings
7775 for sanity.
7776
7777 * gc-malloc.c (scm_gc_init_malloc): check user settings for
7778 sanity.
7779
7780 * gc-freelist.c (scm_init_freelist): check user settings for sanity.
7781
7782 * struct.h: change scm_structs_to_free to scm_i_structs_to_free
7783
7784 * gc-malloc.c (scm_gc_register_collectable_memory): use floats;
7785 these won't ever wrap around with high memory usage. Thanks to
7786 Sven Hartrumpf for finding this.
7787
7788 * gc-freelist.c: include <stdio.h>
7789
7790 * gc-malloc.c: add DEBUGINFO for mtrigger GCs.
7791
7792 2002-09-01 Marius Vollmer <mvo@zagadka.ping.de>
7793
7794 * vectors.h (SCM_VECTOR_REF): New.
7795
7796 * snarf.h (SCM_DEFINE_PUBLIC): New.
7797
7798 2002-08-30 Marius Vollmer <mvo@zagadka.ping.de>
7799
7800 * socket.c (scm_addr_vector): Added size of address to arguments.
7801 Use it to avoid accessing a non-existent path in a sockaddr_un.
7802 Changed all callers.
7803
7804 2002-08-29 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7805
7806 * gc.h: remove DOUBLECELL card flags.
7807
7808 * gc-malloc.c (scm_calloc): try to use calloc() before calling
7809 scm_realloc().
7810
7811 * gc-segment.c (scm_i_initialize_heap_segment_data): remove card
7812 init loop; handle this from scm_init_card_freelist()
7813
7814 * gc-card.c (scm_init_card_freelist): init bit vector here.
7815
7816 * numbers.c (scm_make_real): prevent reordering of statements
7817 num2float.i.c (FLOAT2NUM): idem
7818
7819 2002-08-27 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7820
7821 * eval.h: prepend libguile/ to include path
7822
7823 2002-08-26 Marius Vollmer <mvo@zagadka.ping.de>
7824
7825 * script.c (scm_compile_shell_switches): Added "2002" to Copyright
7826 years. Thanks to Martin Grabmüller!
7827
7828 2002-08-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7829
7830 * gc-segment.c (scm_i_get_new_heap_segment): use float in stead of
7831 unsigned numbers for computing minimum heap increment. This
7832 prevents weird results when a a negative minimum increment is
7833 computed.
7834
7835 2002-08-24 Marius Vollmer <mvo@zagadka.ping.de>
7836
7837 * gc_os_dep.c: When we have __libc_stack_end, use that directly
7838 instead of the old tricks.
7839
7840 * guile-snarf.in: Do not expect the input file to be the first
7841 argument after the optional "-o" option, just pass everything to
7842 the pre-processor without extracting the input file name.
7843
7844 2002-08-23 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7845
7846 * gc-segment.c (scm_i_get_new_heap_segment): Oops. We want segment
7847 length *at* least SCM_MIN_HEAP_SEG_SIZE, not at most.
7848
7849 2002-08-22 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7850
7851 * gc.h, gc.c: make scm_cells_allocated unsigned again. Thanks to
7852 Bill Schottstaedt for the bug report
7853
7854 2002-08-20 Marius Vollmer <mvo@zagadka.ping.de>
7855
7856 * print.c (scm_iprin1): Print primitives generics always as
7857 "primitive-generic" even when they have no primitive methods yet.
7858
7859 2002-08-17 Gary Houston <ghouston@arglist.com>
7860
7861 * coop.c (coop_create): removed bogus 2nd argument in scm_malloc
7862 call.
7863
7864 2002-08-17 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7865
7866 * ports.c (scm_add_to_port_table): small bugfix.
7867
7868 * mallocs.c (scm_malloc_obj): use scm_gc_malloc in stead of
7869 malloc.
7870
7871 * gc-segment.c (scm_i_get_new_heap_segment): remove cluster cruft:
7872 only use SCM_MIN_HEAP_SEG_SIZE.
7873
7874 * ports.c (scm_add_to_port_table): add backwards compatibility
7875 function
7876
7877 * ports.h: use scm_i_ prefix for port table and port table size.
7878
7879 2002-08-15 Mikael Djurfeldt <mdj@linnaeus>
7880
7881 * vports.c (scm_make_soft_port): Initialize pt variable.
7882
7883 2002-08-13 Marius Vollmer <mvo@zagadka.ping.de>
7884
7885 * strports.h (scm_c_eval_string_in_module,
7886 scm_eval_string_in_module): New prototypes.
7887 * strports.c (scm_eval_string_in_module): New, but use
7888 "eval-string" as the Scheme name and make second parameter
7889 optional.
7890 (scm_eval_string): Implement using scm_eval_string_in_module.
7891 (scm_c_eval_string_in_module): New.
7892 Thanks to Ralf Mattes for the suggestion!
7893
7894 2002-08-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7895
7896 * gc-card.c ("sweep_card"): remove SCM_MISC_ERROR messages: print
7897 message and abort.
7898
7899 * gc-mark.c ("scm_gc_mark_dependencies"): idem.
7900
7901 * ports.c ("scm_new_port_table_entry"): return a boxed SCM in
7902 stead of scm_t_port*. The function now takes a tag argument.
7903
7904 2002-08-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7905
7906 * gc.h: add scm_debug_cells_gc_interval to public interface
7907
7908 * gc-card.c ("sweep_card"): set scm_gc_running while sweeping.
7909
7910 * gc.c (scm_i_expensive_validation_check): separate expensive
7911 validation checks from cheap ones.
7912
7913 2002-08-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7914
7915 * read.c (scm_input_error): new function: give meaningful error
7916 messages, and throw read-error
7917
7918 * gc-malloc.c (scm_calloc): add scm_calloc.
7919
7920 2002-08-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7921
7922 * tags.h: remove GC bits documentation from the tags table.
7923
7924 * read.c (INPUT_ERROR): Prepare for file:line:column error
7925 messages for errors in scm_lreadr() and friends.
7926
7927 2002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7928
7929 * gc-malloc.c (scm_malloc): use scm_realloc() (simplifies
7930 implementation).
7931 (scm_gc_calloc): new function
7932
7933 2002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7934
7935 * ports.c (scm_new_port_table_entry): init port entry to 0
7936 completely.
7937
7938 * ports.c (scm_new_port_table_entry): change function from
7939 scm_add_to_port_table. This prevents cells with null-pointers from
7940 being exposed to GC.
7941
7942 * vports.c (scm_make_soft_port) strports.c (scm_mkstrport),
7943 fports.c (scm_fdes_to_port): Use scm_new_port_table_entry().
7944
7945 * gc.c (scm_gc_stats): add cell-yield and malloc-yield statistic
7946 to gc-stats.
7947
7948 * numbers.c (big2str): return "0" for 0 iso. ""
7949
7950 * gc-segment.c, gc-malloc.c gc-mark.c, gc-freelist.c, gc-card.c,
7951 private-gc.h: new file
7952
7953 * gc.c: completely revised and cleaned up the GC. It now uses lazy
7954 sweeping. More documentation in workbook/newgc.text
7955
7956 2002-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7957
7958 * random.c (rstate_free): Return zero.
7959
7960 2002-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
7961
7962 * environments.c (remove_key_from_alist): Removed.
7963
7964 (obarray_remove): Simplified.
7965
7966 2002-07-24 Stefan Jahn <stefan@lkcc.org>
7967
7968 * continuations.h: ia64: Include <signal.h> before
7969 <sys/ucontext.h>.
7970
7971 2002-07-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
7972
7973 * modules.c (scm_sym2var): Don't compare SCM values with ==.
7974
7975 2002-07-21 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7976
7977 * goops.c (scm_compute_applicable_methods): use
7978 scm_remember_upto_here_1 iso scm_remember_upto_here
7979
7980 * macros.c: include deprecation.h
7981
7982 * vectors.c (scm_vector_move_right_x): remove side effect in
7983 macro arg.
7984 (scm_vector_move_left_x): idem.
7985
7986 * net_db.c, posix.c, socket.c: variable naming: change ans to
7987 result.
7988
7989 * sort.c (scm_merge_vector_x): accept vector as argument
7990 iso. SCM*. This is needed for full GC correctness.
7991
7992 * gc.h: undo previous undocumented changes related to #ifdef
7993 GENGC.
7994
7995 2002-07-20 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7996
7997 * *.c: add space after commas everywhere.
7998
7999 * *.c: use SCM_VECTOR_SET everywhere, where a vector is written.
8000 Document cases where SCM_WRITABLE_VELTS() is used.
8001
8002 * vectors.h (SCM_VELTS): prepare for write barrier, and let
8003 SCM_VELTS() return a const pointer
8004 (SCM_VECTOR_SET): add macro.
8005
8006 2002-07-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
8007
8008 * eval.c (SCM_CEVAL), macros.c (macro_print, scm_makmacro,
8009 scm_sym_macro, scm_macro_type), macros.h (scm_makmacro):
8010 Deprecated the special kind of built-in dynamic syntax transformer
8011 that was inaccurately named "macro". Note: The built-in syntax
8012 transformers that are named "mmacro" or "memoizing-macro" still
8013 exist, and it is these which come much closer to what one would
8014 call a macro.
8015
8016 2002-07-13 Neil Jerram <neil@ossau.uklinux.net>
8017
8018 * eval.c (unmemocopy): Fix for
8019 1001-local-eval-error-backtrace-segfaults (unmemoization crash
8020 with internal definitions and local-eval).
8021
8022 2002-07-12 Gary Houston <ghouston@arglist.com>
8023
8024 * dynl.c: Don't define stub procedures if DYNAMIC_LINKING is not
8025 defined. They don't do anything useful, especially since the
8026 only case where DYNAMIC_LINKING is undefined seems to be
8027 when --with-modules=no is given to configure, which is basically
8028 requesting that the "dynamic linking module" be omitted.
8029
8030 * Makefile.am (libguile_la_SOURCES): move dynl.c from
8031 libguile_la_SOURCES to EXTRA_libguile_la_SOURCES.
8032
8033 * extensions.c (load_extension): check DYNAMIC_LINKING for
8034 scm_dynamic_call.
8035 * init.c (scm_init_guile_1): check DYNAMIC_LINKING for
8036 scm_init_dynamic_linking.
8037
8038 2002-07-10 Marius Vollmer <mvo@zagadka.ping.de>
8039
8040 * guile.c, iselect.h, net_db.c, posix.c, socket.c: No need to
8041 check for Cygwin when including <winsock2.h>, this is already
8042 check for by configure. Thus, revert change from 2002-07-07.
8043
8044 2002-07-10 Gary Houston <ghouston@arglist.com>
8045
8046 * eq.c: include <string.h>
8047 * dynl.c: docstring editing.
8048
8049 2002-07-09 Gary Houston <ghouston@arglist.com>
8050
8051 * dynl.c (scm_dynamic_call): docstring editing.
8052
8053 2002-07-08 Rob Browning <rlb@defaultvalue.org>
8054
8055 * gc_os_dep.c: HURD fixes.
8056
8057 2002-07-07 Marius Vollmer <mvo@zagadka.ping.de>
8058
8059 Crosscompiling and Cygwin fixes by Jan Nieuwenhuizen. Thanks!
8060
8061 * Makefile.am: Override default rule for c-tokenize.$(OBJECT);
8062 this should be compiled for BUILD host.
8063 Override default rule for
8064 guile_filter_doc_snarfage$(EEXECT); this should run on BUILD host.
8065 Add missing $(EXEEXT) to guile_filter_doc_snarfage invocation.
8066 (snarf2checkedtexi): Use GUILE_FOR_BUILD instead of preinstguile.
8067
8068 * guile.c, iselect.h, net_db.c, posix.c, socket.c: Do not include
8069 <winsock2.h> on Cygwin even when we have it.
8070
8071 2002-07-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
8072
8073 * __scm.h (SCM_CAUTIOUS), eval.c (scm_eval_args, deval_args,
8074 SCM_CEVAL): Removed compile time option SCM_CAUTIOUS to clean up
8075 the code. Full number of arguments checking of closures is
8076 mandatory now. However, the option to disable the checking has
8077 most probably not been used anyway.
8078
8079 2002-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
8080
8081 * __scm.h (SCM_RECKLESS), backtrace.c (SCM_ASSERT), debug.c
8082 (scm_debug_options), eval.c (scm_lookupcar, scm_lookupcar1,
8083 scm_badargsp, SCM_CEVAL, SCM_APPLY, scm_map, scm_for_each),
8084 feature.c (scm_init_feature), gsubr.c (scm_gsubr_apply), numbers.c
8085 (scm_logand, scm_logior, scm_logxor, scm_i_dbl2big), srcprop.c
8086 (scm_source_properties, scm_set_source_properties_x,
8087 scm_source_property): Removed compile time option SCM_RECKLESS to
8088 clean up the code. Full number of arguments checking of closures
8089 is mandatory now. However, the option to disable the checking has
8090 most probably not been used anyway.
8091
8092 * srcprop.c (scm_source_properties, scm_set_source_properties_x,
8093 scm_source_property): Use !SCM_CONSP instead of SCM_NCONSP.
8094
8095 2002-06-30 Gary Houston <ghouston@arglist.com>
8096
8097 * dynl.c: Removed all SCM_DEFER_INTS/SCM_ALLOW_INTS, which won't
8098 do anything useful. Added a comment about need for a mutex if
8099 pre-emptive threading is supported.
8100
8101 * posix.c (scm_convert_exec_args), dynl.c
8102 (scm_make_argv_from_stringlist): static procs: 1) renamed both to
8103 allocate_string_pointers. 2) simplified: don't reallocate the
8104 strings, just make an array of pointers 3) avoid memory leaks on
8105 error 4) let the procedure report errors in its own name.
8106 Consequences: 1) the procedures now assume that SCM strings are
8107 nul-terminated, which should always be the case. 2) Since strings
8108 are not reallocated, it's now possible for strings passed to
8109 dynamic-args-call to be mutated.
8110
8111 2002-06-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
8112
8113 * __scm.h, eval.c, eval.h: Removed compile time option
8114 MEMOIZE_LOCALS to clean up the code. Now, caching of local
8115 variable positions during memoization is mandatory. However, the
8116 option to disable the caching has most probably not been used
8117 anyway.
8118
8119 2002-06-18 Marius Vollmer <mvo@zagadka.ping.de>
8120
8121 * print.c (scm_simple_format): Print missing part of format before
8122 ~% control. Thanks to Daniel Skarda!
8123
8124 2002-06-01 Marius Vollmer <mvo@zagadka.ping.de>
8125
8126 * mkstemp.c: Added exception notice to license statement.
8127
8128 2002-05-22 Marius Vollmer <mvo@zagadka.ping.de>
8129
8130 * numbers.c (mem2ureal): When returning an inexact zero, make sure
8131 it is represented as a floating point value so that we can change
8132 its sign.
8133
8134 From John W. Eaton <jwe@bevo.che.wisc.edu>
8135
8136 * numbers.c (idbl2str): Don't omit sign when printing negative zero.
8137
8138 2002-05-14 Thien-Thi Nguyen <ttn@giblet.glug.org>
8139
8140 * gc_os_dep.c: For I386/OPENBSD, allow for `__i386__'
8141 in addition to `i386'. Thanks to Dale P. Smith.
8142
8143 2002-05-08 Marius Vollmer <mvo@zagadka.ping.de>
8144
8145 * eq.c (real_eqv): New.
8146 (scm_eqv_p): Use it when comparing reals and complexes.
8147
8148 * numbers.c: Include <string.h>, for strncmp.
8149 (mem2complex): Do not create negative NaNs.
8150 (scm_leq_p, scm_geq_p): Explicitely return #f when comparing a
8151 NaN.
8152 (scm_inexact_to_exact): Signal error when converting a NaN.
8153
8154 2002-05-06 Marius Vollmer <mvo@zagadka.ping.de>
8155
8156 * posix.c (scm_putenv): Handle removing variables explicitely by
8157 calling unsetenv.
8158
8159 From John W. Eaton.
8160
8161 * numbers.h: Conditionally include floatingpoint.h, ieeefp.h, and
8162 nan.h. Provide declarations for scm_inf_p, scm_nan_p, scn_inf,
8163 and scm_nan.
8164 * numbers.c: [SCO && ! HAVE_ISNAN] (isnan): New function.
8165 [SCO && ! HAVE_ISINF] (isinf): New function.
8166 (xisinf, xisnan): New functions.
8167 (IS_INF): Delete.
8168 (isfinite): Define in terms of xisinf.
8169 (scm_inf_p, scm_nan_p): New functions.
8170 (guile_Inf, guile_NaN): New file-scope vars.
8171 (guile_ieee_init): New function.
8172 (scm_inf, scm_nan): New functions.
8173 (idbl2str): Handle Inf and NaN. Remove funny label and
8174 corresponding gotos.
8175 (ALLOW_DIVIDE_BY_ZERO): New macro.
8176 (scm_divide): Allow division by zero to occur if
8177 ALLOW_DIVIDE_BY_ZERO is defined.
8178 Handle bignums and ints as special cases.
8179
8180 Additional stuff by me:
8181
8182 numbers.c (mem2ureal): Recognize "inf.0" and "nan.xxx".
8183 (scm_even_p, scm_odd_p): Treat infinity as even and odd.
8184 (iflo2str): Don't output a '+' for negative numbers or for Inf and
8185 NaN. They will provide their own sign.
8186 (scm_divide): Only allow divides by inexact zeros. Dividing by
8187 exact zeros still signals an errors.
8188
8189 2002-04-22 Thien-Thi Nguyen <ttn@giblet.glug.org>
8190
8191 * goops.h (scm_slot_exists_p): Rename from scm_slots_exists_p.
8192 * goops.c (scm_slot_exists_p): Rename from scm_slots_exists_p.
8193 (scm_slot_exists_p): Rename from scm_slots_exists_p.
8194 Thanks to Andreas Rottmann.
8195
8196 2002-04-20 Gary Houston <ghouston@arglist.com>
8197
8198 * removal of unused fields in root state (thanks to Christopher
8199 Cramer for pointing out the disuse.)
8200 * root.h (scm_root_state): removed def_inp, def_outp, def_errp.
8201 (scm_def_inp, scm_def_outp, scm_def_errp): removed.
8202
8203 * root.c (root_mark): don't mark them.
8204 (scm_make_root): don't set them to #f.
8205 * init.c (scm_init_standard_ports): don't initialise with the
8206 default ports.
8207
8208 2002-04-17 Marius Vollmer <mvo@zagadka.ping.de>
8209
8210 * Makefile.am (EXTRA_DIST): Added cpp_err_symbols.c and
8211 cpp_sig_symbols.c.
8212
8213 2002-04-16 Marius Vollmer <mvo@zagadka.ping.de>
8214
8215 * guile-snarf.in: Do not clean input file. This would write to
8216 the $(srcdir) during a VPATH build, which is not allowed. It also
8217 isn't needed since it only works when an output filename has been
8218 specified and in that case we don't need to clean the input file
8219 because the output file will already exist.
8220
8221 2002-03-31 Marius Vollmer <mvo@zagadka.ping.de>
8222
8223 * guile-snarf: Install the trap for removing $cleanfile only when
8224 the value of $cleanfile is actually known.
8225
8226 2002-04-10 Rob Browning <rlb@defaultvalue.org>
8227
8228 * .cvsignore: add versiondat.h and *.c.clean.c.
8229
8230 2002-03-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
8231
8232 * srcprop.[ch] (scm_c_source_property_breakpoint_p): New
8233 function, replaces macro SRCBRKP.
8234
8235 (SRCBRKP): Deprecated.
8236
8237 * eval.c (SCM_CEVAL): Replaced use of SRCBRKP by call to
8238 scm_c_source_property_breakpoint_p. Removed some use of arg1 as
8239 temporary variable.
8240
8241 2002-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
8242
8243 * debug.h, eval.c: Deprecated CHECK_ENTRY, CHECK_APPLY and
8244 CHECK_EXIT and removed all references to them.
8245
8246 2002-03-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8247
8248 * debug.h (scm_ready_p, debug_print): Removed declarations.
8249
8250 * eval.c (EVALCELLCAR): Removed.
8251
8252 (SCM_CEVAL): Eliminated label loopnoap. Removed side-effecting
8253 operation from condition.
8254
8255 2002-03-24 Marius Vollmer <mvo@zagadka.ping.de>
8256
8257 * guile-snarf.in: When the output filename is "-", write to
8258 stdout. When no "-o" option is given, use "-" as the output
8259 filename (i.e., stdout). Only 'clean' the inputfile or remove the
8260 output file on error when the output file name is not "-". Define
8261 the preprocessor macro SCM_MAGIC_SNARFER while snarfing.
8262
8263 * Makefile.am (.c.x): Pass "-o $@" to guile-snarf.
8264
8265 2002-03-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
8266
8267 * eval.c (SCM_CEVAL, SCM_APPLY): Eliminated labels wrongnumargs
8268 and the corresponding goto statements. Removed redundant code.
8269
8270 2002-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
8271
8272 * eval.c (SCM_CEVAL): Minimized scope of variable arg2.
8273 Eliminated redundant SCM_IMP check. Exlined call to EVALCAR.
8274 Re-enabled handing of rpsubrs and asubrs.
8275
8276 2002-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
8277
8278 * eval.c (SIDEVAL): Removed.
8279
8280 (SCM_CEVAL): Minimized scope of variable orig_sym. Eliminated
8281 goto-labels cdrxnoap, cdrxbegin and nontoplevel_cdrxnoap. Changed
8282 argument checking order for set! to locals, variables and symbols.
8283 Improvements to control structure. Removed some uses of arg1 and
8284 arg2 as temporary variables.
8285
8286 2002-03-15 Thien-Thi Nguyen <ttn@giblet.glug.org>
8287
8288 * guile-snarf.in: Remove "--compat=1.4" support.
8289 Add "-d" and "-D" support.
8290
8291 (deprecated_list): New var.
8292 (compat_mode_clean_xxx): Delete.
8293 (grep_deprecated): New func.
8294 ("main"): If "-d" or "-D", call `grep_deprecated'.
8295
8296 2002-03-15 Neil Jerram <neil@ossau.uklinux.net>
8297
8298 * hooks.h: Change scm_t_c_hookype_t everywhere to
8299 scm_t_c_hook_type.
8300
8301 Docstring fixes:
8302
8303 * strings.c (scm_string_p): Change unnecessary `iff' to `if'.
8304
8305 * ports.c (scm_sys_make_void_port): Use `@file'.
8306
8307 * numbers.c (scm_number_p, scm_real_p): Use `otherwise' rather
8308 than `else'.
8309
8310 * macros.c (scm_makmacro): Don't say that the form replaces its
8311 source, because it doesn't.
8312 (scm_makmmacro): Clarify difference between this and scm_makmacro.
8313
8314 * backtrace.c (scm_display_error), filesys.c (scm_umask,
8315 scm_select, scm_basename), goops.c (scm_method_generic_function),
8316 numbers.c (scm_integer_length), posix.c (scm_getgroups, scm_execl,
8317 scm_setlocale, scm_flock), socket.c (scm_shutdown): Correct
8318 spelling mistakes.
8319
8320 * debug.c (scm_debug_options), eval.c
8321 (scm_eval_options_interface), read.c (scm_read_options): Change
8322 incorrect @var in docstring to @code.
8323
8324 2002-03-14 Marius Vollmer <mvo@zagadka.ping.de>
8325
8326 * unif.c (singp): Use SCM_REALP instead of SCM_SLOPPY_REALP.
8327
8328 * snarf.h (SCM_SNARF_INIT): Add "^:^" after code so that
8329 guile-snarf can remove trailing non-init code.
8330
8331 * guile-snarf.in (modern_snarf): Remove everything following and
8332 including "^:^" from the output.
8333
8334 2002-03-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
8335
8336 * eval.c (SCM_CEVAL), srcprop.h (SRCBRKP): Eliminated union 't'.
8337
8338 * eval.c (SCM_CEVAL): Exlined call to EVALCAR.
8339
8340 2002-03-13 Thien-Thi Nguyen <ttn@giblet.glug.org>
8341
8342 * guile-snarf.in: Update copyright.
8343 Rewrite to internalize error handling.
8344 Add "--compat=1.4" handling.
8345 Add commentary.
8346
8347 * Makefile.am (libpath.h): Use @top_srcdir_absolute@.
8348 (snarfcppopts): New var.
8349 (.c.x): Use $(snarfcppopts). Rework guile-snarf usage.
8350 (.c.doc): Use $(snarfcppopts).
8351
8352 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
8353 continuations.c, debug-malloc.c, debug.c, deprecation.c, dynl.c,
8354 dynwind.c, environments.c, eq.c, error.c, eval.c, evalext.c,
8355 extensions.c, feature.c, filesys.c, fluids.c, fports.c, gc.c,
8356 goops.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
8357 ioext.c, iselect.c, keywords.c, lang.c, list.c, load.c, macros.c,
8358 modules.c, net_db.c, numbers.c, objects.c, objprop.c, options.c,
8359 pairs.c, ports.c, posix.c, print.c, procprop.c, procs.c,
8360 properties.c, ramap.c, random.c, rdelim.c, read.c, regex-posix.c,
8361 root.c, rw.c, scmsigs.c, script.c, simpos.c, socket.c, sort.c,
8362 srcprop.c, stackchk.c, stacks.c, stime.c, strings.c, strop.c,
8363 strorder.c, strports.c, struct.c, symbols.c, threads.c, throw.c,
8364 unif.c, values.c, variable.c, vectors.c, version.c, vports.c,
8365 weaks.c: Retire inclusion guard macro SCM_MAGIC_SNARFER.
8366
8367 2002-03-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
8368
8369 * eval.c (SCM_CEVAL): Got rid of the last reference to t.lloc.
8370 The next step will be to remove the union 't' and simplify the
8371 code of SCM_CEVAL that way.
8372
8373 2002-03-12 Neil Jerram <neil@ossau.uklinux.net>
8374
8375 * iselect.c (collisionp, gnfds, greadfds, gwritefds, gexceptfds,
8376 rreadfds, rwritefds, rexceptfds): Made static.
8377
8378 * gc.c (terminating), fports.c (terminating): Renamed
8379 scm_i_terminating.
8380
8381 2002-03-11 Marius Vollmer <mvo@zagadka.ping.de>
8382
8383 * numbers.c (scm_divide): Adapt code from libstdc++/f2c to void
8384 potential overflow problems. Thanks to John W Eaton!
8385
8386 * strop.c (string_capitalize_x): Treat characters as unsigned so
8387 that 8-bit chars work. Thanks to David Pirotte!
8388
8389 2002-03-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
8390
8391 * eval.c (SCM_CEVAL): Cleaned up the handling of 'slot-ref',
8392 'slot-set!' and 'nil-cond'. Removed some uses of t.arg1, arg2 and
8393 proc as temporary variables. Introduced temporary variables with
8394 hopefully descriptive names for clarification. Replaced SCM_N?IMP
8395 by a more explicit predicate in some places.
8396
8397 2002-03-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
8398
8399 * eval.c (SCM_CEVAL): Cleaned up the handling of #@dispatch.
8400 Added lots of comments regarding the implementation of #@dispatch.
8401 Changed intra-procedure communication to use t.arg1 instead of
8402 arg2. Removed some uses of t.arg1, t.lloc and proc as temporary
8403 variables. Introduced temporary variables with hopefully
8404 descriptive names for clarification. Replaced SCM_N?IMP by a more
8405 explicit predicate in some places. Use SCM_INSTANCE_HASH instead
8406 of computing the expression explicitly. Eliminate now unused
8407 label nontoplevel_cdrxbegin.
8408
8409 * goops.h (SCM_INSTANCE_HASH): New macro.
8410
8411 * objects.h (SCM_CMETHOD_FORMALS, SCM_CMETHOD_BODY): New macros.
8412
8413 2002-03-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
8414
8415 * Makefile.am (bin_SCRIPTS): Revive this decl, w/ initial element
8416 "guile-snarf" moved back from `noinst_SCRIPTS'.
8417
8418 2002-03-08 Neil Jerram <neil@ossau.uklinux.net>
8419
8420 * srcprop.c (scm_set_source_property_x): If SRCPROPS obj already
8421 exists when adding a source property other than those that are
8422 handled explicitly, add the new property to the SRCPROPS obj's
8423 plist.
8424
8425 * debug.h (SCM_MAX_FRAME_SIZE): Remove incorrect comment about use
8426 of SCM_MAX_FRAME_SIZE as a bit mask; it isn't used like this.
8427
8428 * eval.c (SCM_CEVAL): Don't store scm_debug_eframe_size in
8429 debug.status. It isn't needed, and it can overflow the bits
8430 reserved for it (which may lead to a segv or a GC abort).
8431
8432 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8433
8434 * eval.c (SCM_CEVAL): Cleaned up the handling of 'apply'. Removed
8435 side-effecting operations from conditions and macro calls.
8436 Replaced SCM_N?IMP by a more explicit predicate in some places.
8437 Minimized the scope of some variables.
8438
8439 2002-03-02 Stefan Jahn <stefan@lkcc.org>
8440
8441 * convert.i.c: Fixed int <-> long conversions which would have
8442 failed if their sizes were different.
8443
8444 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8445
8446 * eval.c (SCM_CEVAL): Cleaned up the handling of 'if', 'let',
8447 'letrec' and 'set*': Removed some uses of t.arg1, t.lloc and proc
8448 as temporary variables. Removed side-effecting operations from
8449 conditions and macro calls. Introduced temporary variables with
8450 hopefully descriptive names for clarification. Replaced SCM_N?IMP
8451 by a more explicit predicate in some places. Removed code that
8452 was conditionally compiled if SICP was defined - which it never
8453 is.
8454
8455 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8456
8457 * eval.c (SCM_CEVAL): Cleaned up the handling of 'cons' and 'do':
8458 Removed some uses of t.arg1 and proc as temporary variables.
8459 Removed side-effecting operations from conditions and macro calls.
8460 Introduced temporary variables with hopefully descriptive names
8461 for clarification. Replaced SCM_N?IMP by a more explicit
8462 predicate in some places.
8463
8464 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8465
8466 * eval.c (scm_badargsp, SCM_CEVAL): Replaced SCM_N?IMP by a more
8467 explicit predicate in some places.
8468
8469 (CHECK_EQVISH): Removed.
8470
8471 (SCM_CEVAL): Removed some uses of t.arg1 and proc as temporary
8472 variables. Removed side-effecting operations from conditions and
8473 macro calls. Introduced temporary variables for clarification.
8474 Sorted if-else-if check for the type of the last form in a list by
8475 frequency. Avoided some unnecessary tail-recursion calls.
8476
8477 2002-03-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
8478
8479 * gc.c (SCM_HEAP_SEG_SIZE, CELL_UP, CELL_DN, NEXT_DATA_CELL,
8480 init_heap_seg, alloc_some_heap), gc.h (struct scm_cell, struct
8481 scm_t_cell, SCM_CELLPTR, SCM_GC_CARD_SIZE,
8482 SCM_GC_IN_CARD_HEADERP), tags.h (SCM_CELLP): Renamed the struct
8483 scm_cell and all its uses to scm_t_cell in accordance to Guile's
8484 naming scheme for types.
8485
8486 * alist.c (scm_acons), convert.i.c (CTYPES2UVECT,
8487 CTYPES2UVECT_OPTIONAL), coop-threads.c (scm_call_with_new_thread,
8488 scm_spawn_thread), debug.c (scm_make_debugobj), environments.c
8489 (scm_make_environment), eval.c (scm_closure), fports.c
8490 (scm_fdes_to_port), gc.c (scm_deprecated_newcell,
8491 scm_deprecated_newcell2), inline.h (scm_alloc_cell, scm_cell),
8492 list.c (SCM_I_CONS), numbers.c (scm_i_mkbig), pairs.c (scm_cons),
8493 ports.c (scm_void_port), procs.c (scm_c_make_subr, scm_makcclo),
8494 smob.c (scm_make_smob), smob.h (SCM_NEWSMOB), strings.c
8495 (scm_take_str, scm_allocate_string), strports.c (scm_mkstrport),
8496 unif.c (scm_make_uve), variable.c (make_variable), vectors.c
8497 (scm_c_make_vector), vports.c (scm_make_soft_port): Renamed
8498 scm_alloc_cell to scm_cell.
8499
8500 * environments.c (core_environments_observe), gc.c
8501 (scm_deprecated_newcell2), goops.c (wrap_init, scm_wrap_object),
8502 inline.h (scm_alloc_double_cell, scm_double_cell), num2float.i.c
8503 (FLOAT2NUM), numbers.c (scm_make_real), procs.c
8504 (scm_make_procedure_with_setter), smob.h (SCM_NEWSMOB2,
8505 SCM_NEWSMOB3), struct.c (scm_make_struct, scm_make_vtable_vtable),
8506 symbols.c (scm_mem2symbol, scm_mem2uninterned_symbol), weaks.c
8507 (allocate_weak_vector): Renamed scm_alloc_double_cell to
8508 scm_double_cell.
8509
8510 2002-02-27 Stefan Jahn <stefan@lkcc.org>
8511
8512 * convert.i.c, convert.c: Better range checking.
8513
8514 * inet_aton.c, fports.c: Commented the inclusion of <winsock2.h>.
8515
8516 * deprecation.c (vsnprintf): Define to `_vsnprintf' for
8517 Windows (MinGW).
8518
8519 2002-02-26 Thien-Thi Nguyen <ttn@giblet.glug.org>
8520
8521 * Makefile.am: Update path to pre-inst-guile automake frag.
8522
8523 2002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
8524
8525 * gc.c (scm_gc_sweep): Make it compile even when deprecated
8526 features are excluded.
8527
8528 2002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
8529
8530 * num2integral.i.c (NUM2INTEGRAL): Fixed signedness problem.
8531
8532 2002-02-25 Gary Houston <ghouston@arglist.com>
8533
8534 * convert.c: include <string.h> for convert_i.c.
8535
8536 2002-02-24 Rob Browning <rlb@defaultvalue.org>
8537
8538 * .cvsignore: add stamp-h1.
8539
8540 2002-02-21 Neil Jerram <neil@ossau.uklinux.net>
8541
8542 * unif.c (scm_array_to_list): Correct name, which had been
8543 accidentally changed to scm_t_arrayo_list!
8544
8545 2002-02-20 Mikael Djurfeldt <mdj@linnaeus>
8546
8547 * gc.c (scm_gc_sweep): Print an error message when aborting due to
8548 underflowing scm_mallocated.
8549
8550 2002-02-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8551
8552 * gc.h, gc.c (scm_must_malloc, scm_must_realloc, scm_must_strdup,
8553 scm_must_strndup, scm_done_malloc, scm_done_free, scm_must_free):
8554 Reimplemented using the new scm_gc_malloc, etc., functions and
8555 deprecated.
8556
8557 2002-02-11 Thien-Thi Nguyen <ttn@giblet.glug.org>
8558
8559 * Makefile.am (bin_PROGRAMS): Move `guile_filter_doc_snarfage'
8560 to `noinst_PROGRAMS'.
8561 (bin_SCRIPTS): Move all values to `noinst_SCRIPTS'; delete.
8562 (noinst_PROGRAMS, noinst_SCRIPTS): New.
8563
8564 2002-02-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8565
8566 * gc.h, gc.c (scm_gc_sweep): Issue deprecation warning when
8567 non-zero is returned from a port or smob free function.
8568 (scm_malloc, scm_realloc, scm_strndup, scm_strdup,
8569 scm_gc_register_collectable_memory,
8570 scm_gc_unregister_collectable_memory, scm_gc_malloc,
8571 scm_gc_realloc, scm_gc_free, scm_gc_strndup, scm_gc_strdup): New.
8572
8573 * backtrace.c, continuations.c, convert.i.c, coop-threads.c,
8574 debug-malloc.c, dynl.c, environments.c, environments.h,
8575 extensions.c, filesys.c, fports.c, gc.c, gc.h, gh_data.c, goops.c,
8576 guardians.c, hooks.c, init.c, keywords.c, load.c, numbers.c,
8577 ports.c, posix.c, procs.c, rdelim.c, regex-posix.c, root.c,
8578 smob.c, stime.c, strings.c, struct.c, struct.h, symbols.c, unif.c,
8579 vectors.c, weaks.c: Use scm_gc_malloc/scm_malloc and
8580 scm_gc_free/free instead of scm_must_malloc and scm_must_free, as
8581 appropriate. Return zero from smob and port free functions.
8582
8583 * debug-malloc.c (scm_malloc_reregister): Handle "old == NULL".
8584
8585 * deprecation.h, deprecation.c: Reimplemented to allow deprecation
8586 messages while the GC is running.
8587 (scm_c_issue_deprecation_warning_fmt): New.
8588
8589 * fports.c (scm_setvbuf): Reset read buffer to saved values when
8590 it is pointing to the putback buffer.
8591
8592 2002-02-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
8593
8594 * gsubr.c (create_gsubr): On "too many args" error,
8595 also display arg count and name. Thanks to Bill Schottstaedt.
8596
8597 2002-02-05 Thien-Thi Nguyen <ttn@giblet.glug.org>
8598
8599 * Makefile.am: Include $(top_srcdir)/pre-inst-guile.am.
8600
8601 (bin_SCRIPTS): Remove guile-snarf-docs-texi.
8602 (alldotdocfiles, snarf2checkedtexi, dotdoc2texi): New vars.
8603 (guile.texi, guile-procedures.texi): Use $(dotdoc2texi).
8604
8605 * guile-snarf-docs-texi.in: Bye bye.
8606
8607 2002-02-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8608
8609 * symbols.c (scm_make_symbol): Fix typo in docstring.
8610
8611 * symbols.h (scm_mem2uninterned_symbol, scm_symbol_interned_p,
8612 scm_make_symbol): New prototypes.
8613
8614 2002-02-03 Marius Vollmer <mvo@zagadka.ping.de>
8615
8616 * symbols.h (SCM_SET_SYMBOL_HASH): Removed.
8617 (SCM_SYMBOL_INTERNED_P): New.
8618 * symbols.c (scm_symbol_hash): Use scm_ulong2num instead of
8619 SCM_MAKINUM since hash values can well be bignums.
8620 (scm_mem2symbol): Only use hash values below SCM_T_BITS_MAX/2.
8621 This signals a interned symbol.
8622 (scm_mem2uninterned_symbol, scm_symbol_interned_p,
8623 scm_make_symbol): New.
8624
8625 * print.c (scm_iprin1): Print uninterned symbols unreadably.
8626
8627 2002-02-02 Thien-Thi Nguyen <ttn@giblet.glug.org>
8628
8629 * __scm.h (HAVE_UINTPTR_T): Only define if UINTPTR_T attributes
8630 are defined: UINTPTR_MAX, INTPTR_MAX, INTPTR_MIN.
8631 Thanks to Dave Love.
8632
8633 2002-01-31 Marius Vollmer <mvo@zagadka.ping.de>
8634
8635 * symbols.c (scm_gensym): Use " g" as default prefix, not "g".
8636 This might help to make unintended clashes less likely.
8637 (scm_string_to_symbol): Protect the string until the symbols is
8638 created.
8639
8640 2002-01-31 Stefan Jahn <stefan@lkcc.org>
8641
8642 * convert.c, convert.h, convert.i.c: New files containing C
8643 array to Scheme conversion helpers meant to be replacement
8644 functions for the deprecated gh interface.
8645
8646 * Makefile.am: Setup rules for new `convert.*' files.
8647
8648 2002-01-28 Stefan Jahn <stefan@lkcc.org>
8649
8650 * symbols.c (scm_c_symbol2str): New function, replacement for
8651 `gh_scm2newsymbol()'.
8652
8653 * strings.c (scm_c_substring2str): New function. Proper
8654 replacement for `gh_get_substr()'.
8655
8656 * socket.c: Include `stdint.h' if available for the `uint32_t'
8657 declaration.
8658
8659 * scmsigs.c (scm_sigaction): Initialize `chandler' (inhibits
8660 compiler warning).
8661
8662 * backtrace.c: Include `lang.h' for GUILE_DEBUG conditional.
8663
8664 2002-01-22 Neil Jerram <neil@ossau.uklinux.net>
8665
8666 Other changes unrelated to Elisp...
8667
8668 * eval.c (scm_m_if): Use s_if rather than repeating string literal
8669 "if".
8670 (comments): Fix a few typos.
8671 (scm_for_each): Add parentheses around oddly unparenthesized
8672 if/while conditions.
8673
8674 * read.c (scm_read_opts): Add full stop at end of doc for
8675 `keywords' option.
8676
8677 * script.c (scm_compile_shell_switches): Use scm_str2symbol
8678 instead of gh_symbol2scm.
8679
8680 * srcprop.h (SRCPROPBRK): Return C type rather than SCM.
8681 (SRCBRKP): Use SRCPROPBRK rather than duplicating its logic.
8682
8683 * srcprop.c (scm_srcprops_to_plist, scm_source_property): Change
8684 SRCPROPBRK (x) to SCM_BOOL (SRCPROPBRK (x)).
8685
8686 First batch of changes for Elisp support...
8687
8688 * alist.c, async.c, boolean.c, dynl.c, eval.c, filesys.c,
8689 fluids.c, list.c, load.c, options.c, posix.c, print.c, sort.c,
8690 throw.c, vectors.c, weaks.c: Add #include for lang.h.
8691
8692 * eval.c, eval.h, init.c, lang.c, lang.h: Use SCM_ENABLE_ELISP to
8693 conditionalize compilation and initialization of Elisp support
8694 function.
8695
8696 * alist.c (scm_assq, scm_assv, scm_assoc), async.c
8697 (scm_asyncs_pending, scm_run_asyncs, noop), backtrace.c
8698 (scm_set_print_params_x), dynl.c (scm_make_argv_from_stringlist),
8699 filesys.c (fill_select_type, retrieve_select_type), fluids.c
8700 (scm_swap_fluids, scm_swap_fluids_reverse), list.c (scm_null_p,
8701 scm_ilength, scm_append_x, scm_last_pair, scm_reverse,
8702 scm_reverse_x, scm_list_ref, scm_list_set_x, scm_list_cdr_set_x,
8703 scm_c_memq, scm_memv, scm_member), load.c (scm_search_path),
8704 options.c (change_option_setting, scm_options), posix.c
8705 (environ_list_to_c), print.c (scm_iprlist), throw.c
8706 (scm_exit_status), vectors.c (scm_vector), weaks.c
8707 (scm_weak_vector): Use SCM_NULL_OR_NIL_P instead of SCM_NULLP.
8708
8709 * boolean.c (scm_not): Use `SCM_FALSEP || SCM_NILP' instead of
8710 just SCM_FALSEP.
8711
8712 * boolean.c (scm_boolean_p): Use `SCM_BOOLP || SCM_NILP' instead
8713 of just SCM_BOOLP.
8714
8715 * eval.c (scm_lisp_nil, scm_lisp_t, s_nil_ify, scm_m_nil_ify,
8716 s_t_ify, scm_m_t_ify, s_0_cond, scm_m_0_cond, s_0_ify,
8717 scm_m_0_ify, s_1_ify, scm_m_1_ify): Removed.
8718 (scm_m_atfop): Support function aliasing. Support both function
8719 args, which need transformation, and macro args, which do not.
8720 Add explanatory comments.
8721 (SCM_CEVAL): In switch cases for SCM_IM_AND, SCM_IM_COND,
8722 SCM_IM_DO, SCM_IM_IF and SCM_IM_OR, add `|| SCM_NILP' to existing
8723 checks for SCM_FALSEP. In switch case for SCM_IM_NIL_COND, use
8724 SCM_NULLP || SCM_NILP instead of checks against (removed)
8725 scm_lisp_nil. Removed switch cases for SCM_IM_NIL_IFY,
8726 SCM_IM_T_IFY, SCM_IM_0_COND, SCM_IM_0_IFY, SCM_IM_1_IFY.
8727
8728 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
8729 scm_m_while, scm_nil_eq): Commented out; I don't think we need
8730 these, but I don't want to remove them yet, just in case.
8731 (scm_init_lang): Define `%nil' variable on Scheme level to hold
8732 Elisp nil value.
8733
8734 * lang.h (SCM_NILP): Test against Elisp nil value instead of
8735 against (removed) scm_lisp_nil.
8736 (SCM_NILNULLP, SCM_NIL2EOL, SCM_EOL2NIL): Commented out.
8737 (SCM_NULL_OR_NIL_P): New.
8738
8739 * list.c (scm_append): Use SCM_VALIDATE_NULL_OR_NIL instead of
8740 SCM_VALIDATE_NULL.
8741
8742 * print.c (scm_isymnames): Fix comment. Remove #@nil-ify,
8743 #@t-ify, #@0-cond, #@0-ify, #@1-ify. Add #nil (for SCM_ELISP_NIL
8744 value).
8745
8746 * sort.c (scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
8747 scm_sort_x, scm_sort, scm_stable_sort_x, scm_stable_sort): Use
8748 SCM_NULL_OR_NIL_P instead of SCM_NULLP. In constructions like `if
8749 (SCM_NULLP (x)) return SCM_EOL;', return x rather than SCM_EOL.
8750
8751 * tags.h (SCM_IM_NIL_IFY, SCM_IM_T_IFY, SCM_IM_0_COND,
8752 SCM_IM_0_IFY, SCM_IM_1_IFY): Removed.
8753 (SCM_IM_BIND, SCM_IM_DELAY, SCM_IM_CALL_WITH_VALUES, SCM_UNBOUND):
8754 Numbering shifted down accordingly.
8755 (SCM_ELISP_NIL): New IFLAG.
8756
8757 * validate.h (SCM_VALIDATE_NULL_OR_NIL): New.
8758
8759 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
8760
8761 * eval.c: Removed outdated references to "everr". Improved some
8762 comments.
8763
8764 (scm_deval_args, deval_args): Renamed scm_deval_args to
8765 deval_args, since it is not part of the interface.
8766
8767 (SCM_CEVAL): Added (maybe somewhat verbose) comment. Avoid to
8768 use references to debug.vect[0] before it exists. Add parentheses
8769 to switch statement.
8770
8771 * goops.h: Added local emacs variables.
8772
8773 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
8774
8775 * eval.[ch] (scm_deval_args): Made static.
8776
8777 * srcprop.c (scm_source_property): Remove redundant SCM_IMP
8778 test.
8779
8780 * strings.c (scm_c_string2str): Clarified comment. Replaced
8781 THINKME by FIXME for uniformness. Removed question about whether
8782 arguments need to be protected from garbage collection: Arguments
8783 must be protected as any other variable.
8784
8785 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
8786
8787 * procs.h (SCM_CLOSURE_BODY): New Macro.
8788
8789 * debug.c (scm_procedure_name, scm_procedure_source), eval.c
8790 (SCM_CEVAL, SCM_APPLY), goops.c (scm_sys_initialize_object,
8791 get_slot_value, set_slot_value), procs.c
8792 (scm_procedure_documentation), sort.c (closureless), stacks.c
8793 (get_applybody): Replace SCM_CDR (SCM_CODE (...)) by
8794 SCM_CLOSURE_BODY.
8795
8796 * sort.c (closureless): Prefer !SCM_FOOP over SCM_NFOOP.
8797
8798 2001-12-26 Marius Vollmer <mvo@zagadka.ping.de>
8799
8800 * Makefile.am (guile-procedures.txt): When we don't have makeinfo,
8801 use "cp" instead.
8802
8803 2001-12-16 Marius Vollmer <mvo@zagadka.ping.de>
8804
8805 * stacks.c, stacks.h (scm_t_stackype): Renamed to scm_stack_type
8806 everywhere.
8807
8808 * continuations.c (scm_make_continuation): Do not retain the
8809 throw_value when the continuation is invoked.
8810
8811 2001-12-08 Stefan Jahn <stefan@lkcc.org>
8812
8813 * strings.c (scm_c_string2str): New function. Converts a
8814 given Scheme string into a C string. Also put in two
8815 THINKME's regarding the malloc policy for the missing converter
8816 routines.
8817
8818 2001-12-01 Neil Jerram <neil@ossau.uklinux.net>
8819
8820 * gh_data.c (gh_module_lookup): Use scm_str2symbol rather than
8821 gh_symbol2scm.
8822
8823 2001-11-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
8824
8825 * gc.h (SCM_GC_CELL_WORD, SCM_GC_CELL_OBJECT,
8826 SCM_GC_SET_CELL_WORD, SCM_GC_SET_CELL_OBJECT): New macros.
8827
8828 (SCM_GC_CELL_TYPE, SCM_CELL_WORD, SCM_CELL_OBJECT,
8829 SCM_SET_CELL_WORD, SCM_SET_CELL_OBJECT, SCM_FREE_CELL_CDR,
8830 SCM_GC_SET_CELL_OBJECT): Express in terms of SCM_GC_CELL_*
8831 macros.
8832
8833 (SCM_FREE_CELL_P): Express in terms of SCM_GC_CELL_TYPE.
8834
8835 * inline.h (scm_alloc_cell, scm_alloc_double_cell): Use
8836 SCM_GC_CELL_* macros when accessing free cells.
8837
8838 2001-11-25 Marius Vollmer <mvo@zagadka.ping.de>
8839
8840 * vectors.h (SCM_MAKE_VECTOR_TAG): New.
8841 * unif.h (SCM_MAKE_BITVECTOR_TAG, SCM_MAKE_UVECTOR_TAG): New.
8842 * symbols.h (SCM_MAKE_SYMBOL_TAG): New.
8843 * strings.h (SCM_MAKE_STRING_TAG): New.
8844 * procs.h (SCM_MAKE_CCLO_TAG): New.
8845 * numbers.h (SCM_MAKE_BIGNUM_TAG): New.
8846
8847 * goops.h: Replaced SCM_DEBUG_DEPRECATED with
8848 !SCM_ENABLE_DEPRECATED.
8849
8850 * async.c, async.h (scm_system_async_mark_from_signal_handler):
8851 New.
8852
8853 * scmsigs.c (scm_take_signal): Removed all code that assumes that
8854 signal handlers are allowed to divert the flow of control. Call
8855 scm_system_async_mark_from_signal_handler instead of
8856 scm_system_async_mark.
8857
8858
8859 Deprecated SCM_NEWCELL and SCM_NEWCELL2. Added scm_alloc_cell and
8860 scm_alloc_double_cell in their place.
8861
8862 * gc.h (SCM_GC_SET_ALLOCATED, scm_debug_newcell,
8863 scm_debug_newcell2, scm_tc16_allocated): Removed from header.
8864 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
8865 (SCM_NEWCELL, SCM_NEWCELL2): Implement in terms of
8866 scm_deprecated_newcell and scm_deprecated_newcell2.
8867
8868 gc.c (scm_tc16_allocated): Only define when including deprecated
8869 features.
8870 (scm_debug_newcell, scm_debug_newcell2): Removed.
8871 (scm_init_storage): Do not initialize scm_tc16_allocated.
8872 (scm_init_gc): Do it here.
8873 (allocated_mark): New, from old code.
8874 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
8875
8876 * inline.c, inline.h: New files.
8877 * Makefile.am: Added them in all the right places.
8878
8879 * _scm.h: Include "libguile/inline.h".
8880
8881 * alist.c, coop-threads.c, debug.c, environments.c, eval.c,
8882 fports.c, gh_data.c, goops.c, guardians.c, lang.c, list.c,
8883 num2float.i.c, numbers.c, pairs.c, ports.c, print.c, procs.c,
8884 smob.c, smob.h, strings.c, strports.c, struct.c, symbols.c,
8885 unif.c, variable.c, vectors.c, vports.c, weaks.c: Replaced
8886 SCM_NEWCELL and SCM_NEWCELL2 with scm_alloc_cell and
8887 scm_alloc_double_cell, respectively.
8888
8889 2001-11-23 Marius Vollmer <mvo@zagadka.ping.de>
8890
8891 * modules.c (scm_c_use_module): Adapt to changes to
8892 `process-use-modules'.
8893
8894 2001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
8895
8896 * numbers.c (scm_divide): Fix more division by zero errors.
8897
8898 2001-11-21 Gary Houston <ghouston@arglist.com>
8899
8900 * Makefile.am (OMIT_DEPENDENCIES): removed, since it seems to be
8901 obsolete. autogen.sh says:
8902 invalid unused variable name: `OMIT_DEPENDENCIES'
8903
8904 2001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
8905
8906 * numbers.c (scm_divide): Fix (/ 0). Thanks to Keith Wright for
8907 reporting the bug.
8908
8909 2001-11-21 Marius Vollmer <mvo@zagadka.ping.de>
8910
8911 * Makefile.am (install-exec-hook): Prepend $(DESTDIR) to filename.
8912 Thanks to Eric Gillespie, Jr!
8913
8914 2001-11-21 Stefan Jahn <stefan@lkcc.org>
8915
8916 * win32-socket.c (getservent, setservent, endservent,
8917 getprotoent, setprotoent, endprotoent): New functions.
8918 Appropriate replacements for M$-Windows.
8919
8920 * numbers.c (SIZE_MAX, PTRDIFF_MAX, PTRDIFF_MIN): Reintroduced
8921 these definitions for GUILE_DEBUG.
8922
8923 * net_db.c: Include "win32-socket.h" if compiling with a native
8924 M$-Windows compiler. Include some pieces of code (protoent and
8925 servent interface) protected by HAVE_* macros when using a
8926 native M$-Windows compiler.
8927
8928 2001-11-20 Marius Vollmer <mvo@zagadka.ping.de>
8929
8930 * modules.c (scm_c_export): Do nothing when the first argument is
8931 already the terminating NULL. Thanks to Han-Wen Nienhuys!
8932
8933 2001-11-20 Thien-Thi Nguyen <ttn@glug.org>
8934
8935 * Makefile.am (libpath.h): In SCM_BUILD_INFO,
8936 also include `buildstamp'.
8937
8938 2001-11-18 Rob Browning <rlb@defaultvalue.org>
8939
8940 * version.c
8941 (s_scm_major_version): use SCM_MAJOR_VERSION.
8942 (s_scm_minor_version): use SCM_MINOR_VERSION.
8943 (s_scm_micro_version): use SCM_MICRO_VERSION.
8944 (s_scm_version): use SCM_MAJOR_VERSION, SCM_MINOR_VERSION, and
8945 SCM_MICRO_VERSION.
8946
8947 * version.h.in
8948 (SCM_MAJOR_VERSION): renamed from SCM_GUILE_MAJOR_VERSION.
8949 (SCM_MINOR_VERSION): renamed from SCM_GUILE_MINOR_VERSION.
8950 (SCM_MICRO_VERSION): renamed from SCM_GUILE_MICRO_VERSION.
8951
8952 2001-11-18 Neil Jerram <neil@ossau.uklinux.net>
8953
8954 * vectors.c (scm_vector_move_left_x, scm_vector_move_right_x):
8955 Rewrite docstrings without reference to substring-move-left/right,
8956 since the latter no longer exist.
8957
8958 2001-11-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
8959
8960 * eval.c: Removed bogus comment about acros.
8961
8962 (scm_unmemocar): Use !SCM_CONSP instead of SCM_IMP.
8963 Minimize scope of local variable. Eliminate dependency on
8964 macro DEBUG_EXTENSIONS.
8965
8966 (s_splicing): New error message string.
8967
8968 (scm_m_body): Issue 'bad body' message rather than 'missing
8969 expression' message.
8970
8971 (scm_m_quote): Eliminate unnecessary copying.
8972
8973 (scm_m_lambda, scm_m_letstar, scm_m_letrec, scm_m_let): Leave the
8974 checking of the body to scm_m_body.
8975
8976 (scm_m_do): Move comment to function header. Rename arg1 to
8977 binding. Made the code a bit easier to read.
8978
8979 (evalcar): Removed.
8980
8981 (iqq): Added a comment. Changed the depth parameter to
8982 unsigned. Use size_t for vector lengths. Make sure vector object
8983 is gc protected as long as its contents are read. Add some syntax
8984 checks. Get rid of unnecessary SCM_IMP test. Clean up the
8985 control structure a bit.
8986
8987 (scm_m_delay): Added comment about the implementation of
8988 scm_m_delay.
8989
8990 (scm_m_define): Add comment about guile's currying define
8991 syntax. Renamed 'proc' to 'name'. Eliminate dependency on macro
8992 DEBUG_EXTENSIONS. Simplified code a bit. Eliminate SICP code.
8993
8994 (scm_m_letrec1): Removed. Part of the functionality is taken
8995 over by the new function 'transform_bindings'.
8996
8997 (transform_bindings): New function. Takes over some of the
8998 functionality of removed function 'scm_m_letrec1', namely to split
8999 a list of bindings into a reversed list of variables and a list of
9000 initializers.
9001
9002 (scm_m_letrec): Call 'transform_bindings'.
9003
9004 (scm_m_let): Minimized scope of local variables. Renamed 'proc'
9005 to 'temp' and 'arg1' to 'binding'. Eliminated redundant SCM_NIMP
9006 test. Use 'transform_bindings'. Fixed scoping error with named
9007 let (Thanks to Aubrey Jaffer for reporting the bug and to Neil
9008 Jerram for suggesting the fix). Cleaned up the control structure
9009 a bit.
9010
9011 (scm_m_expand_body): Use 'transform_bindings'. Eliminated
9012 unnecessary consing. Eliminated unnecessary
9013 SCM_DEFER/ALLOW_INTS.
9014
9015 (SCM_CEVAL): Un-obfuscated some loops.
9016
9017 2001-11-16 Neil Jerram <neil@ossau.uklinux.net>
9018
9019 * gc.h (scm_unhash_name): Old declaration removed.
9020
9021 * eval.c (s_scm_eval): Change @var{primitive-eval} to
9022 @code{primitive-eval}.
9023
9024 * feature.c, vectors.c, net_db.c, unif.c, weaks.c, struct.c,
9025 version.c, alist.c, ports.c, ramap.c, unif.c, strings.c, list.c:
9026 Change @deffnx lines in docstrings to say {Scheme Procedure}
9027 rather than primitive or procedure.
9028
9029 * posix.c (scm_execl), filesys.c (scm_close), unif.c
9030 (scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
9031 scm_bit_set_star_x, scm_bit_invert_x), ramap.c (scm_array_fill_x,
9032 scm_array_for_each, scm_array_index_map_x), vectors.c (scm_vector,
9033 scm_make_vector, scm_vector_to_list, scm_vector_fill_x), strop.c
9034 (scm_string_split, scm_string_ci_to_symbol), strings.c
9035 (scm_string_p), sort.c (scm_merge), print.c (scm_newline),
9036 macros.c (scm_macro_type), alist.c (scm_acons, scm_assq):
9037 Docstring fixes and improvements reflecting edits that have been
9038 made in the reference manual source.
9039
9040 * objprop.c (scm_object_properties, scm_set_object_properties_x,
9041 scm_object_property, scm_set_object_property_x): Remove invalid
9042 @deffnx lines for corresponding procedure property primitives.
9043
9044 These changes add a @deffnx C function declaration and function
9045 index entries for each Guile primitive to the copy of the doc
9046 snarf output that is used for reference manual synchronization.
9047 Online help is unchanged.
9048
9049 * snarf.h (SCM_SNARF_DOCS): Output primitive's C function name.
9050 (SCM_DEFINE, SCM_DEFINE1, SCM_REGISTER_PROC): Supply to C function
9051 name to SCM_SNARF_DOCS.
9052
9053 * guile-snarf-docs-texi.in: Pass the shell script's arguments into
9054 snarf-check-and-output-texi.
9055
9056 * Makefile.am (guile-procedures.texi): New rule.
9057 (BUILT_SOURCES, guile.texi, guile-procedures.txt, CLEANFILES):
9058 Changed so that the last stage of doc snarfing is now performed
9059 twice, once to produce guile-procedures.txt for online help, and
9060 once to produce guile.texi for reference manual synchronization.
9061
9062 2001-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
9063
9064 * eval.c (RETURN): Wrap in do{}while(0) in order to make it
9065 safely usable as a single statement followed by a ';', for example
9066 in an if statement.
9067
9068 (SCM_CEVAL, SCM_APPLY): Clean up code using 'RETURN'.
9069
9070 2001-11-13 Neil Jerram <neil@ossau.uklinux.net>
9071
9072 * random.c (scm_random_solid_sphere_x,
9073 scm_random_hollow_sphere_x): Correct "shere" typos.
9074
9075 * hashtab.c (scm_hash_fold): Add missing apostrophe to docstring.
9076
9077 * version.c (scm_version): Update docstring to include
9078 `micro-version'.
9079
9080 2001-11-13 Marius Vollmer <mvo@zagadka.ping.de>
9081
9082 * modules.c (scm_c_export): Call va_end after collecting the
9083 symbols.
9084
9085 * strop.h, strop.c (scm_substring_move_left_x,
9086 scm_substring_move_right_x): Removed.
9087
9088 * __scm.h (HAVE_UINTPTR_T, HAVE_PTRDIFF_T, HAVE_LONG_LONG,
9089 HAVE_LONG_LONGS): Define to "1" when defining them, to mirror what
9090 configure does.
9091
9092 2001-11-12 Marius Vollmer <mvo@zagadka.ping.de>
9093
9094 * numbers.c: Document macros to define when including
9095 num2integral.i.c. MAX_VALUE and MIN_VALU are no longer used, we
9096 now rely on SIZEOF_ macros that have been figured out at
9097 configure time.
9098
9099 * num2integral.i.c: Adapt to new interface.
9100 (NUM2INTEGRAL): Test whether a fixnum can be represented in the
9101 target type by casting it and checking whether it is still the
9102 same. Do not try to handle bignums for integral types that are
9103 smaller than fixnums. When handling bignums, collect the
9104 magnituse first into a unsigned type, and correctly check for
9105 overflow.
9106 (INTEGRAL2BIG): Do not use MIN_VALUE explicitely by observing that
9107 only -MIN_VALUE can still be negative of all negative numbers (in
9108 twos-complement).
9109
9110 * tags.h (SIZEOF_SCM_T_BITS): Define it appropriately.
9111
9112 * __scm.h: Define HAVE_UINTPTR_T, HAVE_PTRDIFF_T and
9113 HAVE_LONG_LONG depending on whether their size is non-zero.
9114
9115 2001-11-11 Thien-Thi Nguyen <ttn@glug.org>
9116
9117 * strop.c (scm_string_null_p): Docfix; nfc.
9118 Thanks to Scott Lenser.
9119
9120 2001-11-07 Neil Jerram <neil@ossau.uklinux.net>
9121
9122 * extensions.c (scm_load_extension): Canonicalize docstring
9123 whitespace.
9124
9125 * unif.c (scm_uniform_array_write), ports.c
9126 (scm_current_output_port, scm_force_output), dynwind.c
9127 (scm_dynamic_wind), scmsigs.c (scm_setitimer, scm_getitimer),
9128 filesys.c (scm_open, scm_lstat), struct.c
9129 (scm_make_struct_layout), random.c (scm_random,
9130 scm_random_solid_sphere_x, scm_random_hollow_sphere_x, strop.c
9131 (scm_i_index): Remove superfluous whitespace from end of docstring
9132 lines.
9133
9134 * filesys.c (scm_select), guardians.c (scm_guardian_greedy_p),
9135 strings.c (scm_make_string), variable.c (scm_make_variable,
9136 scm_make_undefined_variable, scm_variable_p, scm_variable_set_x,
9137 scm_variable_bound_p), scmsigs.c (scm_setitimer, scm_getitimer),
9138 posix.c (scm_crypt), struct.c (scm_make_vtable_vtable), hashtab.c
9139 (scm_hash_fold), ports.c (scm_port_for_each): Remove superfluous
9140 newline at end of docstrings.
9141
9142 * modules.c (scm_set_current_module): Add missing newline to
9143 docstring.
9144
9145 2001-11-07 Stefan Jahn <stefan@lkcc.org>
9146
9147 * win32-socket.[ch]: New files. Defines Winsock-API error codes
9148 and makes them available through Guile. That is because the
9149 Winsock-API does not store its errors in `errno' and thus cannot
9150 return error messages via `strerror (errno)'.
9151
9152 * socket.c (scm_init_socket): Initialize `win32-socket' part
9153 here under M$-Windows.
9154
9155 * numbers.h: Added missing declaration of
9156 `scm_sys_check_number_conversions()'.
9157
9158 * error.c: Local definition of SCM_I_STRERROR and SCM_I_ERRNO
9159 and use in `(strerror)' and `(system-error)'.
9160
9161 * Makefile.am (EXTRA_libguile_la_SOURCES): Added
9162 `win32-socket.[ch]' to extra source and header files.
9163
9164 2001-11-06 Marius Vollmer <mvo@zagadka.ping.de>
9165
9166 * script.c (scm_shell_usage, scm_compile_shell_switches): Prepend
9167 a call to turn-on-debugging when --debug has been given instead of
9168 turning it on directly. Also, handle new `--no-debug' option,
9169 which might suppress the call to turn-on-debugging.
9170
9171 2001-11-05 Stefan Jahn <stefan@lkcc.org>
9172
9173 * struct.c (s_scm_struct_vtable_p): Corrected docstring.
9174
9175 2001-11-04 Stefan Jahn <stefan@lkcc.org>
9176
9177 * Makefile.am (libguile_la_LIBADD): Added $(THREAD_LIBS_LOCAL)
9178 here (was at guile_LDADD) which describes the dependency
9179 correctly and allows a clean build on Win32.
9180
9181 * __scm.h (SCM_API): Follow-up patch. Renamed __FOO__ macros
9182 into FOO.
9183
9184 * __scm.h: USE_DLL_IMPORT indicates the usage of the DLL
9185 import macros for external libraries (libcrypt, libqthreads,
9186 libreadline and libregex).
9187
9188 * coop-defs.h: Include <winsock2.h> for `struct timeval'.
9189
9190 * posix.c (flock): Added support for flock() in M$-Windows.
9191
9192 * guile.c (SCM_IMPORT): Follow-up patch. Use SCM_IMPORT instead
9193 of __SCM_IMPORT__.
9194
9195 * fports.c (getflags): Differentiate reading and writing pipes
9196 descriptors.
9197
9198 * filesys.c (S_IS*): Redefine all of the S_IS*() macros for
9199 M$-Windows.
9200
9201 * coop.c (coop_condition_variable_timed_wait_mutex): Use
9202 conditionalized error code if `ETIMEDOUT' is not available.
9203 (scm_thread_usleep): Remove bogus declaration of `struct timeval
9204 timeout'.
9205
9206 * numbers.c (PTRDIFF_MIN): Moved this definition where it actually
9207 belongs. That is because NO_PREPRO_MAGIC gets undefined after
9208 each inclusion of `num2integral.i.c'.
9209 (SIZE_MAX): Define NO_PREPRO_MAGIC if SIZE_MAX is undefined.
9210
9211 2001-11-03 Marius Vollmer <mvo@zagadka.ping.de>
9212
9213 * eval.c (scm_m_begin): Allow `(begin)`, with no subforms.
9214 (SCM_CEVAL): Evaluate an empty `begin' to SCM_UNSPECIFIED.
9215
9216 2001-11-02 Mikael Djurfeldt <mdj@linnaeus>
9217
9218 * print.c (scm_iprin1): Mark print state as revealed when
9219 dispatching to generic write or display.
9220
9221 * unif.c (scm_ra2contig): Fixed memory overwrite bug.
9222
9223 2001-11-02 Marius Vollmer <mvo@zagadka.ping.de>
9224
9225 Support for native Win32. Thanks to Stefan Jahn!
9226
9227 * Makefile.am: Add win32-uname.c, win32-uname.h, win32-dirent.c
9228 and win32-dirent.h to extra source and header files. These
9229 include the uname() and the POSIX dirent interface implementation
9230 for M$-Windows. Put `-no-undefined' into LDFLAGS to support
9231 linkers which do not allow unresolved symbols inside shared
9232 libraries. Corrected `guile_filter_doc_snarfage$(EXEEXT)'
9233 dependency.
9234
9235 * __scm.h: Defined SCM_API. This macro gets prepended to all
9236 function and data definitions which should be exported or imported
9237 in the resulting dynamic link library in the Win32 port.
9238
9239 * __scm.h, alist.h, arbiters.h, async.h, backtrace.h, boolean.h,
9240 chars.h, continuations.h, coop-defs.h, coop-threads.h,
9241 debug-malloc.h, debug.h, deprecation.h, dynl.h, dynwind.h,
9242 environments.h, eq.h, error.h, eval.h, evalext.h, extensions.h,
9243 feature.h, filesys.h, fluids.h, fports.h, gc.h, gdb_interface.h,
9244 gdbint.h, gh.h, goops.h, gsubr.h, guardians.h, hash.h, hashtab.h,
9245 hooks.h, init.h, ioext.h, iselect.h, keywords.h, lang.h, list.h,
9246 load.h, macros.h, mallocs.h, modules.h, net_db.h, numbers.h,
9247 objects.h, objprop.h, options.h, pairs.h, ports.h, posix.h, print.h,
9248 procprop.h, procs.h, properties.h, ramap.h, random.h, rdelim.h,
9249 read.h, regex-posix.h, root.h, rw.h, scmsigs.h, script.h, simpos.h,
9250 smob.h, socket.h, sort.h, srcprop.h, stackchk.h, stacks.h, stime.h,
9251 strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h,
9252 tags.h, threads.h, throw.h, unif.h, values.h, variable.h, vectors.h,
9253 vports.h, weaks.h:
9254 Prefixed each each exported symbol with SCM_API.
9255
9256 * continuations.c: Added comment about the use of the extern
9257 declarations of {get,set}context() functions used in the ia64 port.
9258
9259 * continuations.h, gc.c: `__libc_ia64_register_backing_store_base'
9260 is meant to be a `unsigned long *'.
9261
9262 * filesys.c: Include `direct.h' if possible. Use local
9263 `win32-dirent.h' for the native M$-Windows port. Define S_IS*()
9264 macros for M$-Windows. Implementation of `fstat_Win32()' which is
9265 able to differentiate between sockets and other file descriptors.
9266 Use this function as wrapper in `scm_fstat()'. Fixed typo in
9267 `scm_dirname()'.
9268
9269 * fports.c: Include `io.h' is possible. Put `*fp' into referring
9270 statement block in `scm_fport_buffer_add()'.
9271 Some corrections in `getflags()'.
9272
9273 * gdb_interface.h (GDB_INTERFACE): Also support __CYGWIN__.
9274
9275 * guile.c: Make sure to define __SCM_IMPORT__ for shared library
9276 build on Win32. Disable preloaded symbols on Win2 platforms.
9277
9278 * ioext.c, ports.c: Include `io.h' is possible.
9279
9280 * mkstemp.c: Include `process.h' is possible.
9281
9282 * net_db.c: Disable extern declaration of `h_errno' for __CYGWIN__,
9283 too.
9284 Put `scm_return_entry()' into HAVE_GETSERVENT conditional.
9285
9286 * posix.c: Remove unnecessary dirent includes and defines. Include
9287 local `win32-uname.h' for MinGW. Extern declaration of
9288 `mkstemp()' for systems where it does not exists. Make
9289 `getlogin()' available on M$-Windows.
9290
9291 * scmsigs.c: Made `usleep()' avalable on MinGW.
9292
9293 * stime.c: On M$-Windows `tzname[]' is known to be `_tzname[]'.
9294
9295 * win32-dirent.c: Include "win32-dirent.h", not "dirent.h".
9296
9297 * win32-uname.c: Include "win32-uname.h", not "uname.h".
9298
9299 2001-10-28 Mikael Djurfeldt <mdj@linnaeus>
9300
9301 * unif.c (scm_uniform_array_read_x, scm_uniform_array_write):
9302 Don't apply scm_uniform_vector_length on arrays.
9303
9304 2001-10-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
9305
9306 * eval.c (scm_lookupcar, scm_m_letstar, scm_m_do, iqq,
9307 scm_m_define, scm_m_letrec1, scm_m_let, scm_m_expand_body,
9308 scm_macroexp, unmemocopy, scm_eval_args, scm_deval_args,
9309 SCM_CEVAL, scm_map, scm_init_eval): When building lists, prefer
9310 scm_list_<n> over scm_cons[2]?.
9311
9312 (scm_unmemocar, scm_m_cond, scm_m_letstar, scm_m_letrec1,
9313 scm_m_let, scm_m_atbind, unmemocopy, SCM_CEVAL, SCM_APPLY): Use
9314 SCM_C[AD][AD]R instead of explicit form.
9315
9316 (scm_m_set_x, scm_m_cond, scm_m_letstar, scm_m_do): Reordered
9317 comparison parameters.
9318
9319 (scm_m_case, scm_m_cond, scm_m_letstar, scm_m_do, SCM_CEVAL): Use
9320 !SCM_NULLP instead of SCM_NIMP.
9321
9322 (scm_m_case): Don't copy the form. Renamed proc to clause and
9323 minimized its scope. Renamed x to clauses. Removed side
9324 effecting operation from macro call.
9325
9326 (scm_m_cond): Don't copy the form. Renamed arg1 to clause and
9327 minimized its scope. Renamed x to clauses. Minimized the scope
9328 of variable 'len'. Make sure the else clause is treated specially
9329 even in case of '=>' occurences. Don't change the else to #t in
9330 order to be able to distinguish this case in the evaluator. Leave
9331 type checking of the recipient to the evaluator.
9332
9333 (scm_c_improper_memq): Made the comment somewhat clearer.
9334
9335 (scm_m_lambda): Renamed proc to formals. Removed unnecessary
9336 test for SCM_IM_LET at the place of the formal parameters.
9337 Simplified the formal parameter checking.
9338
9339 (scm_m_letstar): Added Comment. Renamed proc to bindings.
9340 Renamed arg1 to binding and minimized its scope. Eliminated
9341 unnecessary consing.
9342
9343 (scm_m_do): Renamed proc to bindings. Minimized the scope of
9344 variable 'len'.
9345
9346 (build_binding_list): New static function.
9347
9348 (unmemocopy): Don't use SCM_TYP7 on pairs (it's unclean).
9349 Further, split up the 'letrec' unmemoizing code to the
9350 corresponding parts for 'do', 'let' and 'letrec', adding comments
9351 to each form. Cleanup the handling of the do form (This removes
9352 some *real* code :-).
9353
9354 (SCM_CEVAL): Removed side effecting operation from macro call.
9355 Handle the 'else clause of the 'cond form specially - the symbol
9356 'else is not replaced with #t any more.
9357
9358 2001-10-14 Gary Houston <ghouston@arglist.com>
9359
9360 * version.c (scm_version): use sprintf instead of snprintf,
9361 for portability. thanks to Bill Schottstaedt.
9362
9363 2001-10-14 Mikael Djurfeldt <mdj@linnaeus>
9364
9365 * read.c (scm_lreadr): When user-defined hash procedure returns
9366 SCM_UNSPECIFIED: Fall back to standard handling instead of raising
9367 an exception. (This prevents parsing of uniform vectors from
9368 interfering with parsing of numbers.)
9369
9370 2001-10-13 Marius Vollmer <mvo@zagadka.ping.de>
9371
9372 * numbers.c: Set NO_PREPRO_MAGIC when defining our version of
9373 PTRDIFF_MIN. Thanks to Ken Raeburn.
9374
9375 2001-10-07 Marius Vollmer <mvo@zagadka.ping.de>
9376
9377 * Makefile.am (EXTRA_libguile_la_SOURCES): Added "mkstemp.c".
9378
9379 * eval.c (scm_m_atbind): First try to find the variable without
9380 defining it locally; when it has not been found, define it
9381 locally.
9382
9383 * modules.c (module_variable): Pass over variables that exist but
9384 are unbound.
9385
9386 2001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
9387
9388 * backtrace.c (display_backtrace_file_and_line): Only use
9389 scm_basename when POSIX support is compiled in. Thanks to Chris
9390 Cramer.
9391
9392 2001-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9393
9394 * numbers.c (mem2uinteger): Return number read so far when coming
9395 across a hexdigit after having read a # or if not reading a hex
9396 value. This will enable the calling code to correctly handle
9397 forms like 1e2. (The background is, that the exponent markers d,
9398 e and f are also hexdigits.) Thanks to Mikael Djurfeldt for
9399 providing this patch.
9400
9401 (mem2complex): Fix erroneous double-negation. Now, numbers like
9402 1-i will be read correctly.
9403
9404 2001-10-12 Mikael Djurfeldt <mdj@linnaeus>
9405
9406 * debug.c (scm_mem_to_proc): Fixed typo in previous change.
9407
9408 * validate.h (SCM_VALIDATE_DOUBLE_DEF_COPY): New macro.
9409
9410 2001-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
9411
9412 * print.c (scm_print_state_vtable, print_state_pool):
9413 Initialize. These variables are now registered as gc roots.
9414
9415 (scm_current_pstate): Update documentation.
9416
9417 (scm_current_pstate, scm_make_print_state, scm_free_print_state,
9418 scm_prin1, scm_init_print): print_state_pool is registered as a
9419 gc root and thus does not need to be protected by a surrounding
9420 pair any more.
9421
9422 (make_print_state): The car of print_state_pool no longer holds
9423 the scm_print_state_vtable.
9424
9425 (scm_current_pstate, scm_make_print_state, print_circref,
9426 scm_iprin1, scm_prin1, scm_iprlist): Prefer !SCM_<foo> over
9427 SCM_N<foo>.
9428
9429 (scm_prin1): When building lists, prefer scm_list_<n> over
9430 scm_cons[2]?.
9431
9432 (scm_iprlist): Removed a redundant SCM_IMP test.
9433
9434 (scm_simple_format): Use SCM_EQ_P to compare SCM values.
9435
9436 2001-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
9437
9438 * debug.c (scm_make_iloc): Prefer !SCM_<foo> over SCM_N<foo>.
9439
9440 (scm_memcons, scm_mem_to_proc): When building lists, prefer
9441 scm_list_<n> over scm_cons[2]?.
9442
9443 (scm_mem_to_proc): Prefer SCM_CONSP over SCM_NIMP.
9444
9445 (scm_procedure_name): Use SCM_CADR instead of explicit form.
9446
9447 (debugobj_print): Coerce scm_intprint arg 1 to long, not int.
9448 Thanks to Rob Browning for the patch (see log entry 2001-09-21) -
9449 for some reason his patch didn't make it into the cvs.
9450
9451 2001-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
9452
9453 * numbers.c (mem2decimal_from_point): Cleaned up the parsing a
9454 little bit - should even be somewhat more accurate now.
9455
9456 2001-10-08 Rob Browning <rlb@defaultvalue.org>
9457
9458 * gc.c: support ia64 register backing store.
9459 (SCM_MARK_BACKING_STORE): new macro.
9460
9461 * continuations.h: support ia64 register backing store.
9462 (struct scm_t_contregs): add ia64 register backing store.
9463
9464 * continuations.c: support ia64 register backing store.
9465 (continuation_mark): mark ia64 register backing store.
9466 (continuation_free): free ia64 register backing store.
9467 (scm_make_continuation): capture ia64 register backing store.
9468 (copy_stack_and_call): copy ia64 register backing store.
9469
9470 2001-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
9471
9472 * hashtab.c (scm_hash_fn_create_handle_x): The result of assoc_fn
9473 is known to be #f if no entry is found. Thus, use !SCM_FALSEP
9474 instead of SCM_NIMP to test for that case.
9475
9476 * strings.h (SCM_SET_STRING_LENGTH): Cast the length to
9477 scm_t_bits instead of long.
9478
9479 2001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
9480
9481 * tags.h (SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
9482 SCM_T_SIGNED_BITS_MIN): New.
9483 * numbers.h (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM):
9484 Use them to make these macros computable by the preprocessor.
9485
9486 * num2integral.i.c (INTEGRAL2NUM): Let the preprocessor test
9487 whether the integral type fits in a fixnum, not the compiler.
9488 This removes a spurious compiler warning. Also, honor the
9489 NO_PREPRO_MAGIC flag to suppress any preprocessor tests. This is
9490 needed for `long long's.
9491
9492 * numbers.c: Define NO_PREPRO_MAGOC when including
9493 num2integral.c.i for `long long' and `signed long long'.
9494
9495 2001-10-06 Mikael Djurfeldt <mdj@linnaeus>
9496
9497 These changes fixes a race condition in the Guile coop - pthread
9498 compatibility code.
9499
9500 * coop.c (mother_awake_p): New variable.
9501 (coop_create): Set mother_awake_p before creating or signalling
9502 mother; wait until mother is going to sleep before returning.
9503 (mother): Reset mother_awake_p before going to sleep.
9504
9505 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
9506
9507 * options.c (protected_objects, scm_init_options): The content of
9508 protected_objects is now protected from garbage collection using
9509 scm_gc_register_root instead of scm_permanent_object.
9510
9511 (get_option_setting): New static function that computes an option
9512 setting as it was formerly done in the function scm_options.
9513
9514 (get_documented_option_setting): New static function that
9515 returns option documentation as it was formerly done in the
9516 function scm_options. Note that documentation C strings are no
9517 longer precomputed into SCM objects. Instead, they are converted
9518 into SCM strings every time get_documented_option_setting is
9519 called.
9520
9521 (change_option_setting): New static functions that modifies the
9522 option setting as it was formerly done in the function
9523 scm_options. The function is now exception safe, i. e. won't
9524 cause a memory leak when interrupted. Further, only non-immediate
9525 option values are added to the protection list.
9526
9527 (scm_options): This function now has only the purpose to dispatch
9528 to to get_option_setting, get_documented_option_setting or
9529 change_option_setting, depending on the arguments given to
9530 scm_options.
9531
9532 (scm_init_opts): Don't convert documentation C strings into SCM
9533 strings. Further, don't protect any object values: They _must_
9534 be immediate values, otherwise there is no guarantee that they
9535 have not been collected before anyway.
9536
9537 * options.[ch] (scm_t_option): Made type unsigned, name into a
9538 constant char* and val into a scm_t_bits type.
9539
9540 (scm_options, scm_init_opts): The number of options is guaranteed
9541 to be larger or equal to zero. Thus, the type is changed to
9542 unsigned.
9543
9544 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
9545
9546 * num2integral.i.c (NUM2INTEGRAL): Eliminated some warnings about
9547 testing an unsigned value for being >= 0.
9548
9549 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
9550
9551 * numbers.h: Removed old comment about using SCM_CAR to access
9552 non-pair cells.
9553
9554 (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM): Make sure
9555 the return value is signed. Thanks to Brian Crowder for the bug
9556 report.
9557
9558 (SCM_SRS): Avoid unnecessary casting and don't unpack input
9559 values. With this patch, SCM_SRS can be safely used for other
9560 types than scm_t_signed_bits. However, it should still better be
9561 an internal macro and thus be renamed to SCM_I_SRS.
9562
9563 (SCM_MAKINUM, SCM_INUM): Use proper casting.
9564
9565 2001-10-03 Gary Houston <ghouston@arglist.com>
9566
9567 * continuations.h, unif.h: in the descriptions of the bit patterns
9568 of the heap cells, make bit 0 the least significant.
9569
9570 2001-09-25 Thien-Thi Nguyen <ttn@glug.org>
9571
9572 * chars.h (SCM_MAKE_CHAR): Use `scm_t_bits' instead of `intptr_t'.
9573 Thanks to Golubev I. N.
9574
9575 2001-09-25 Gary Houston <ghouston@arglist.com>
9576
9577 * ports.c (scm_drain_input): extended the docstring. thanks to
9578 Alex Schroeder and Thien-Thi Nguyen.
9579
9580 2001-09-23 Mikael Djurfeldt <mdj@linnaeus>
9581
9582 * validate.h (SCM_NUM2FLOAT, SCM_NUM2DOUBLE,
9583 SCM_VALIDATE_FLOAT_COPY, SCM_VALIDATE_DOUBLE_COPY): New
9584 macros. (The NUM names might soon change.)
9585
9586 * numbers.h: Added missing declarations.
9587
9588 2001-09-22 Mikael Djurfeldt <mdj@linnaeus>
9589
9590 * Makefile.am: Distribute num2float.i.c.
9591
9592 * num2float.i.c: New file, multiply included by numbers.c, used
9593 to "templatize" the float <-> num conversion routines.
9594
9595 * numbers.c: New functions: scm_num2float, scm_float2num,
9596 scm_num2double, scm_double2num.
9597
9598 2001-09-21 Rob Browning <rlb@defaultvalue.org>
9599
9600 * .cvsignore: really add version.h
9601
9602 * strings.h (SCM_SET_STRING_LENGTH): coerce "l" to a long.
9603 Otherwise it fails on the alpha. However, we might rather choose
9604 this size conditionally.
9605
9606 * numbers.c (scm_gcd): change "k" to a long from an int.
9607 Otherwise it fails on the alpha. However, we might rather choose
9608 this size conditionally.
9609
9610 * error.c (scm_wta): coerce char* to intptr_t before int
9611 assignment.
9612
9613 * debug.c (debugobj_print): coerce scm_intprint arg 1 to long, not
9614 int.
9615
9616 * chars.h (SCM_MAKE_CHAR): coerce value to intptr_t.
9617
9618 2001-09-20 Mikael Djurfeldt <mdj@linnaeus>
9619
9620 * numbers.c (scm_integer_expt): Accept inexact integer in second
9621 argument. (Thanks to Bill Schottstaedt.)
9622
9623 2001-09-20 Rob Browning <rlb@defaultvalue.org>
9624
9625 * .cvsignore: add version.h
9626
9627 * versiondat.h.in: removed (obsolete).
9628
9629 * version.h.in: renamed from version.h.
9630 (SCM_GUILE_MAJOR_VERSION): new public macro.
9631 (SCM_GUILE_MINOR_VERSION): new public macro.
9632 (SCM_GUILE_MICRO_VERSION): new public macro.
9633
9634 * version.h: renamed to version.h.in.
9635
9636 * version.c
9637 (scm_major_version): support integer *_VERSION macros.
9638 (scm_minor_version): support integer *_VERSION macros.
9639 (scm_micro_version): support integer *_VERSION macros.
9640 (scm_version): support integer *_VERSION macros.
9641
9642 2001-09-20 Mikael Djurfeldt <mdj@linnaeus>
9643
9644 * error.c, error.h: Made error keys globally accessible.
9645 Applications might want to test for these or use them in a direct
9646 call to scm_error.
9647
9648 * num2integral.i.c (NUM2INTEGRAL): Report an error when these
9649 routines are passed an inexact. This change in behavior is
9650 motivated by concordance with R5RS: It is more common that a
9651 primitive doesn't want to accept an inexact for an exact.
9652
9653 2001-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
9654
9655 The following patch partially undoes my patch from 2001-06-30,
9656 where I added the function scm_gc_mark_cell_conservatively. The
9657 function is buggy, since it breaks guile during conservative
9658 marking if a pointer on the stack points directly into the list of
9659 free cells on the heap: With conservative cell marking this will
9660 cause the whole free list to be scanned and marked - boom!
9661
9662 * gc.c (allocated_mark, MARK, heap_segment,
9663 scm_gc_mark_cell_conservatively, scm_init_storage), gc.h
9664 (scm_gc_mark_cell_conservatively): Remove function
9665 scm_gc_mark_cell_conservatively and update the corresponding
9666 comments and uses accordingly. Thanks to Christopher Cramer for
9667 the patch. (Minor corrections by me.)
9668
9669 2001-09-15 Gary Houston <ghouston@arglist.com>
9670
9671 * root.h (scm_root_state): removed the continuation_stack and
9672 continuation_stack_ptr members, which have no apparent purpose.
9673 (scm_continuation_stack, scm_continuation_stack_ptr): #defines
9674 removed.
9675
9676 * root.c (root_mark), init.c (restart_stack, start_stack), gc
9677 (scm_igc): remove all references to contination_stack and
9678 continuation_stack_ptr, avoiding allocation of a vector and
9679 useless processing during gc.
9680
9681 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9682
9683 * guardians.c (tconc_t, t_tconc): Renamed tconc_t to t_tconc.
9684
9685 (TCONC_IN): Make sure that the cell word 0 is initialized last.
9686
9687 (guardians_t, t_guardians): Renamed guardians_t to t_guardians.
9688
9689 (GUARDIAN, GUARDIAN_DATA): Renamed GUARDIAN to GUARDIAN_DATA.
9690
9691 (guardian_apply, scm_get_one_zombie, scm_make_guardian,
9692 mark_and_zombify): Prefer !SCM_<foo> over SCM_N<foo>.
9693
9694 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9695
9696 * guardians.c (mark_dependencies_in_tconc,
9697 whine_about_self_centered_zombies, scm_init_guardians): Register
9698 the static global variable `self_centered_zombies' via
9699 scm_gc_register_root, to make some cdr-ing unnecessary.
9700
9701 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9702
9703 * backtrace.c (display_backtrace_file,
9704 display_backtrace_file_and_line): Use SCM_EQ_P when comparing SCM
9705 values, use SCM_FALSEP when comparing SCM values against #f.
9706 Thanks to Rob Browning for the bug report.
9707
9708 2001-09-12 Martin Baulig <martin@home-of-linux.org>
9709
9710 * strings.[ch] (scm_str2string): New function.
9711
9712 2001-09-06 Marius Vollmer <mvo@zagadka.ping.de>
9713
9714 * gc.c (scm_done_free): Always subtract size from scm_mallocated
9715 when computing nm, even if it's negative.
9716 (scm_must_malloc): Abort on overflow of scm_mtrigger.
9717 (scm_must_realloc): Likewise.
9718
9719 2001-09-01 Michael Livshin <mlivshin@bigfoot.com>
9720
9721 * numbers.c (scm_sys_check_number_conversions): new function,
9722 defined if Guile is compiled in debugging mode. currently checks
9723 `scm_num2ulong', should check much much more.
9724
9725 * num2integral.i.c (NUM2INTEGRAL): when converting a bignum to
9726 unsigned, ensure that it's positive. thanks to Martin Baulig!
9727
9728 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
9729
9730 * __scm.h: Added new section about compile time selectable
9731 features.
9732
9733 (long_long, ulong_long, scm_sizet, SCM_WNA, SCM_OUTOFRANGE,
9734 SCM_NALLOC, SCM_HUP_SIGNAL, SCM_INT_SIGNAL, SCM_FPE_SIGNAL,
9735 SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL, SCM_GC_SIGNAL,
9736 SCM_TICK_SIGNAL, SCM_SIG_ORD, SCM_ORD_SIG, SCM_NUM_SIGS):
9737 Removed.
9738
9739 * deprecation.c (scm_include_deprecated_features): Simplified.
9740
9741 * eval.c (EVALCAR, unmemocopy), eval.h (SCM_XEVALCAR): Use
9742 `SCM_IMP' instead of `!SCM_CELLP´.
9743
9744 * eval.c (unmemocopy): Eliminate redundant SCM_CELLP tests.
9745 Extract side-effecting operations from macros.
9746
9747 (scm_init_eval): Don't initialize *top-level-lookup-closure*,
9748 scm_top_level_lookup_closure_var and scm_system_transformer.
9749
9750 * gc.c (CELL_P): New local definition to replace SCM_CELLP.
9751
9752 (heap_segment): Use CELL_P instead of SCM_CELLP.
9753
9754 * init.c (start_stack): Don't initialize
9755 scm_top_level_lookup_closure_var and scm_system_transformer.
9756
9757 * modules.c (scm_set_current_module): Don't access
9758 scm_top_level_lookup_closure_var and scm_system_transformer.
9759
9760 (scm_sym2var): Don't call scm_variable_set_name_hint.
9761
9762 (scm_post_boot_init_modules): Removed deprecated initializations.
9763
9764 * print.c (scm_ipruk): Don't access cell contents of non cells.
9765
9766 * strings.c (scm_string_set_x): All strings are writable.
9767
9768 * strings.h (SCM_STRINGP): Use SCM_TYP7 to determine the string
9769 type. There is only one string type now.
9770
9771 (SCM_STRING_COERCE_0TERMINATION_X): Deprecated.
9772
9773 * tags.h: Remove comments about two different string types.
9774
9775 (SCM_CELLP, SCM_NCELLP): Deprecated.
9776
9777 * variable.c (make_variable): Remove code variant for vcells.
9778
9779 * variable.h (SCM_VARIABLE_REF, SCM_VARIABLE_SET,
9780 SCM_VARIABLE_LOC): Remove code variant for vcells.
9781
9782 * __scm.h, deprecation.[ch]: Renamed SCM_DEBUG_DEPRECATED to
9783 SCM_ENABLE_DEPRECATED with the logic reversed.
9784
9785 * dynl.c (moddata, registered_mods), dynl.[ch]
9786 (scm_register_module_xxx, scm_registered_modules,
9787 scm_clear_registered_modules), error.[ch] (scm_wta), eval.c
9788 (*top-level-lookup-closure*), eval.[ch]
9789 (scm_top_level_lookup_closure_var, scm_system_transformer,
9790 scm_eval_3, scm_eval2), gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR,
9791 SCM_SETAND_CDR, SCM_SETOR_CDR, SCM_FREEP, SCM_NFREEP,
9792 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
9793 SCM_GCCDR), gc.[ch] (scm_remember, scm_protect_object,
9794 scm_unprotect_object), modules.c (root_module_lookup_closure,
9795 scm_sym_app, scm_sym_modules, module_prefix, make_modules_in_var,
9796 beautify_user_module_x_var, try_module_autoload_var,
9797 scm_module_full_name), modules.[ch] (scm_the_root_module,
9798 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
9799 ports.h (scm_port, scm_ptob_descriptor, scm_port_rw_active),
9800 ports.[ch] (scm_close_all_ports_except), random.h (scm_rstate,
9801 scm_rng, scm_i_rstate), strings.h (SCM_SLOPPY_STRINGP,
9802 SCM_RWSTRINGP, SCM_STRING_UCHARS, SCM_STRING_CHARS), strings.[ch]
9803 (scm_read_only_string_p, scm_makstr, scm_makfromstr,
9804 scm_make_shared_substring), tags.h (scm_tc7_substring,
9805 SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP, scm_tc7_ssymbol,
9806 scm_tc7_msymbol, scm_tcs_symbols), variable.c (sym_huh),
9807 variable.[ch] (scm_variable_set_name_hint, scm_builtin_variable),
9808 variable.h (SCM_VARVCELL, SCM_UDVARIABLEP, SCM_DEFVARIABLEP):
9809 Removed.
9810
9811 * dynl.c (scm_dynamic_link, scm_dynamic_func), error.c
9812 (scm_error_scm), filesys.c (scm_chown, scm_chmod, scm_open_fdes,
9813 scm_stat, scm_link, scm_rename, scm_delete_file, scm_mkdir,
9814 scm_rmdir, scm_opendir, scm_chdir, scm_symlink, scm_readlink,
9815 scm_lstat, scm_copy_file), fports.c (scm_open_file), ioext.c
9816 (scm_fdopen), net_db.c (scm_gethost, scm_getnet, scm_getproto,
9817 scm_getserv), ports.c (scm_truncate_file, scm_sys_make_void_port),
9818 posix.c (scm_getpwuid, scm_getgrgid, scm_execl, scm_execlp,
9819 scm_execle, scm_mkstemp, scm_utime, scm_access, scm_setlocale,
9820 scm_mknod, scm_crypt, scm_chroot, scm_getpass, scm_sethostname),
9821 regex-posix.c (scm_make_regexp, scm_regexp_exec), simpos.c
9822 (scm_system, scm_getenv), socket.c (scm_inet_aton), stime.c
9823 (setzone, scm_strftime, scm_strptime), vports.c
9824 (scm_make_soft_port): Remove calls to
9825 SCM_STRING_COERCE_0TERMINATION_X. Since the substring type is
9826 gone, all strings are 0-terminated anyway.
9827
9828 * dynl.h (LIBGUILE_DYNL_H, SCM_DYNL_H), random.h (RANDOMH,
9829 SCM_RANDOM_H): Renamed the macros that are defined to inhibit
9830 double inclusion of the same headers to the SCM_<filename>_H
9831 format.
9832
9833 * eval.c (SCM_CEVAL), gc.c (MARK, scm_gc_sweep), gh_data.c
9834 (gh_scm2chars), hash.c (scm_hasher), objects.c (scm_class_of),
9835 print.c (scm_iprin1): The type scm_tc7_substring does not exist
9836 any more.
9837
9838 * ports.h (SCM_PORTP, SCM_OPPORTP, SCM_OPINPORTP, SCM_OPOUTPORTP,
9839 SCM_INPUT_PORT_P, SCM_OUTPUT_PORT_P, SCM_OPENP), tags.h
9840 (SCM_TYP16_PREDICATE), variable.h (SCM_VARIABLEP): Prefer
9841 !SCM_<foo> over SCM_N<foo>.
9842
9843 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
9844
9845 * Makefile.am: Remove references to symbols-deprecated.c.
9846
9847 * symbols.c (scm_init_symbols): Don't initialize deprecated
9848 symbol functions.
9849
9850 * symbols-deprecated.c: Removed.
9851
9852 * fluids.[ch] (scm_internal_with_fluids), gsubr.[ch]
9853 (scm_make_gsubr, scm_make_gsubr_with_generic), hooks.[ch]
9854 (scm_create_hook), list.c (list*), list.h (SCM_LIST[0-9],
9855 scm_listify), list.[ch] (scm_sloppy_memq, scm_sloppy_memv,
9856 scm_sloppy_member), load.c (scm_end_of_file_key), load.[ch]
9857 (scm_read_and_eval_x), numbers.[ch] (scm_mkbig, scm_big2inum,
9858 scm_adjbig, scm_normbig, scm_copybig, scm_2ulong2big, scm_dbl2big,
9859 scm_big2dbl), numbers.h (SCM_FIXNUM_BIT), procs.h
9860 (scm_subr_entry, SCM_SUBR_DOC), procs.[ch] (scm_make_subr_opt,
9861 scm_make_subr, scm_make_subr_with_generic), root.c (setjmp_type,
9862 setjmp_type), root.[ch] (scm_call_catching_errors), smob.[ch]
9863 (scm_make_smob_type_mfpe, scm_set_smob_mfpe), strports.[ch]
9864 (scm_strprint_obj, scm_read_0str, scm_eval_0str), symbols.h
9865 (SCM_CHARS, SCM_UCHARS, SCM_SETCHARS, SCM_SLOPPY_SUBSTRP,
9866 SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_LENGTH_MAX, SCM_LENGTH,
9867 SCM_SETLENGTH, SCM_ROSTRINGP, SCM_ROLENGTH, SCM_ROCHARS,
9868 SCM_ROUCHARS, SCM_SUBSTRP, SCM_COERCE_SUBSTR, scm_strhash,
9869 scm_sym2vcell, scm_sym2ovcell_soft, scm_sym2ovcell,
9870 scm_intern_obarray_soft, scm_intern_obarray, scm_intern,
9871 scm_intern0, scm_sysintern, scm_sysintern0,
9872 scm_sysintern0_no_module_lookup, scm_symbol_value0,
9873 scm_string_to_obarray_symbol, scm_intern_symbol,
9874 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
9875 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp,
9876 scm_init_symbols_deprecated), vectors.c (s_vector_set_length_x),
9877 vectors.[ch] (scm_vector_set_length_x): Removed.
9878
9879 * fluids.h (FLUIDSH, SCM_FLUIDS_H), gsubr.c (GSUBRH, SCM_GSUBR_H),
9880 list.h (LISTH, SCM_LIST_H), load.h (LOADH, SCM_LOAD_H), root.h
9881 (ROOTH, SCM_ROOT_H), strports.h (STRPORTSH, SCM_STRPORTS_H):
9882 Renamed the macros that are defined to inhibit double inclusion of
9883 the same headers to the SCM_<filename>_H format.
9884
9885 * procs.h (SCM_CLOSUREP, SCM_PROCEDURE_WITH_SETTER_P), symbols.h
9886 (SCM_SYMBOLP), vectors.h (SCM_VECTORP): Prefer !SCM_<foo> over
9887 SCM_N<foo>.
9888
9889 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
9890
9891 * continuations.h (scm_contregs), debug.h (scm_debug_info,
9892 scm_debug_frame, SCM_DSIDEVAL), filesys.h (SCM_OPDIRP), fports.h
9893 (scm_fport), options.h (scm_option), snarf.h (SCM_CONST_LONG,
9894 SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
9895 SCM_GLOBAL_VCELL_INIT), srcprop.h (scm_srcprops,
9896 scm_srcprops_chunk), stacks.h (scm_info_frame, scm_stack), unif.h
9897 (scm_array, scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_HUGE_LENGTH),
9898 validate.h (SCM_FUNC_NAME, SCM_WTA, RETURN_SCM_WTA,
9899 SCM_VALIDATE_NUMBER_COPY, SCM_VALIDATE_NUMBER_DEF_COPY,
9900 SCM_VALIDATE_STRINGORSUBSTR, SCM_VALIDATE_ROSTRING,
9901 SCM_VALIDATE_ROSTRING_COPY, SCM_VALIDATE_NULLORROSTRING_COPY,
9902 SCM_VALIDATE_RWSTRING, SCM_VALIDATE_OPDIR): Removed.
9903
9904 * continuations.h (CONTINUATIONSH, SCM_CONTINUATIONS_H), filesys.h
9905 (FILESYSH, SCM_FILESYS_H), fports.h (FPORTSH, SCM_FPORTS_H),
9906 options.h (OPTIONSH, SCM_OPTIONS_H), regex-posix.h (REGEXPOSIXH,
9907 SCM_REGEX_POSIX_H), snarf.h (LIBGUILE_SNARF_H, SCM_SNARF_H),
9908 srcprop.h (SCM_SOURCE_PROPERTIES_H, SCM_SRCPROP_H), unif.h
9909 (SCM_UNIFORM_VECTORS_H, SCM_UNIF_H), validate.h (SCM_VALIDATE_H__,
9910 SCM_VALIDATE_H): Renamed the macros that are defined to inhibit
9911 double inclusion of the same headers to the SCM_<filename>_H
9912 format.
9913
9914 * debug.h (SCM_RESET_DEBUG_MODE), regex-posix.h (SCM_RGXP),
9915 srcprop.h (SRCBRKP, PROCTRACEP), struct.h (SCM_STRUCTP),
9916 validate.h (SCM_VALIDATE_THUNK, SCM_VALIDATE_ARRAY,
9917 SCM_VALIDATE_VECTOR_OR_DVECTOR, SCM_VALIDATE_VTABLE): Prefer
9918 !SCM_<foo> over SCM_N<foo>.
9919
9920 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
9921
9922 * _scm.h (_SCMH, SCM__SCM_H), alist.h (ALISTH, SCM_ALIST_H),
9923 arbiters.h (ARBITERSH, SCM_ARBITERS_H), backtrace.h (BACKTRACEH,
9924 SCM_BACKTRACE_H), boolean.h (BOOLEANH, SCM_BOOLEAN_H), chars.h
9925 (SCM_CHARSH, SCM_CHARS_H), coop-defs.h (COOP_DEFSH,
9926 SCM_COOP_DEFS_H), coop-threads.h (COOP_THREADSH,
9927 SCM_COOP_THREADS_H), debug-malloc.h (DEBUGMALLOCH,
9928 SCM_DEBUG_MALLOC_H), dynwind.h (DYNWINDH, SCM_DYNWIND_H),
9929 environments.h (ENVIRONMENTS_H, SCM_ENVIRONMENTS_H), eq.h (EQH,
9930 SCM_EQ_H), evalext.h (EVALEXTH, SCM_EVALEXT_H), extensions.h
9931 (LIBGUILE_EXTENSIONS_H, SCM_EXTENSIONS_H), feature.h (FEATUREH,
9932 SCM_FEATURE_H), gdbint.h (GDBINTH, SCM_GDBINT_H), guardians.h
9933 (SCM_GUARDIANH, SCM_GUARDIANS_H), hash.h (HASHH, SCM_HASH_H),
9934 hashtab.h (HASHTABH, SCM_HASHTAB_H), init.h (INITH, SCM_INIT_H),
9935 ioext.h (IOEXTH, SCM_IOEXT_H), iselect.h (ISELECTH,
9936 SCM_ISELECT_H), keywords.h (KEYWORDSH, SCM_KEYWORDS_H), lang.h
9937 (LANGH, SCM_LANG_H), mallocs.h (MALLOCSH, SCM_MALLOCS_H), net_db.h
9938 (SCM_NETDBH, SCM_NET_DB_H), objprop.h (OBJPROPH, SCM_OBJPROP_H),
9939 posix.h (POSIXH, SCM_POSIX_H), procprop.h (PROCPROPH,
9940 SCM_PROCPROP_H), properties.h (PROPERTIES_H, SCM_PROPERTIES_H),
9941 ramap.h (RAMAPH, SCM_RAMAP_H), rdelim.h (SCM_RDELIM,
9942 SCM_RDELIM_H), read.h (READH, SCM_READ_H), rw.h (SCM_RW,
9943 SCM_RW_H), scmsigs.h (SCMSIGSH, SCM_SCMSIGS_H), script.h (SCRIPTH,
9944 SCM_SCRIPT_H), simpos.h (SIMPOSH, SCM_SIMPOS_H), socket.h
9945 (SCM_SOCKETH, SCM_SOCKET_H), sort.h (SORTH, SCM_SORT_H),
9946 stackchk.h (STACKCHKH, SCM_STACKCHK_H), stime.h (STIMEH,
9947 SCM_STIME_H), strop.h (STROPH, SCM_STROP_H), strorder.h
9948 (STRORDERH, SCM_STRORDER_H), threads.h (THREADSH, SCM_THREADS_H),
9949 throw.h (THROWH, SCM_THROW_H), version.h (VERSIONH,
9950 SCM_VERSION_H), vports.h (VPORTSH, SCM_VPORTS_H): Renamed
9951 the macros that are defined to inhibit double inclusion of the
9952 same headers to the SCM_<filename>_H format.
9953
9954 2001-08-27 Marius Vollmer <mvo@zagadka.ping.de>
9955
9956 * ports.c, ports.h, fprots.c, gc.c, ioext.c: Replaced
9957 "scm_t_portable" with "scm_port_table" which was an artifact from
9958 the great "scm_*_t -> scm_t_" renaming.
9959
9960 2001-08-25 Thien-Thi Nguyen <ttn@revel.glug.org>
9961
9962 * gc_os_dep.c (GC_noop1): Move before `GC_find_limit' where it is
9963 used; nfc. Thanks to Bill Schottstaedt.
9964
9965 * validate.h (SCM_VALIDATE_USHORT_COPY, SCM_VALIDATE_SHORT_COPY,
9966 SCM_VALIDATE_UINT_COPY, SCM_VALIDATE_INT_COPY): New macros.
9967 Thanks to Chris Cramer.
9968
9969 2001-08-25 Marius Vollmer <mvo@zagadka.ping.de>
9970
9971 * Makefile.am (AUTOMAKE_OPTIONS): Change "foreign" to "gnu".
9972
9973 * eval.c (scm_m_atbind): Redesigned to behvae like `let', but with
9974 dynamic scope.
9975 * dynwind.h (scm_swap_bindings): Declare.
9976 * dynwind.c (scm_swap_bindings): Make non-static.
9977
9978 2001-08-25 Michael Livshin <mlivshin@bigfoot.com>
9979
9980 * gc.c (scm_gc_sweep): now can sweep unreachable variables (by
9981 doing exactly nothing about them). thanks Neil!
9982
9983 2001-08-18 Neil Jerram <neil@ossau.uklinux.net>
9984
9985 * __scm.h (SCM_ENABLE_VCELLS): Fix spelling mistake in comment.
9986
9987 2001-08-17 Thien-Thi Nguyen <ttn@revel.glug.org>
9988
9989 * gc.c: Fix omission bug: Add `heap_segment' forward decl
9990 (proto) in the case when either `GUILE_DEBUG' or
9991 `GUILE_DEBUG_FREELIST' preprocessor symbols are defined.
9992
9993 (map_free_list): Fix typo: Ref `f' correctly.
9994
9995 Thanks to Chris Cramer.
9996
9997 2001-08-15 Rob Browning <rlb@defaultvalue.org>
9998
9999 * Makefile.am (libguile_la_LDFLAGS): use libtool interface version
10000 variables.
10001 (libpath.h): change libguileversion to libguileinterface.
10002
10003 2001-08-07 Marius Vollmer <mvo@zagadka.ping.de>
10004
10005 * Makefile.am (EXTRA_DIST): Distribute ChangeLog-1996-1999 and
10006 ChangeLog-2000. Thanks to Daniel Skarda!
10007
10008 2001-08-07 Michael Livshin <mlivshin@bigfoot.com>
10009
10010 * guile-snarf-docs-texi.in: don't call the tokenizer here, we now
10011 do it from the Makefile.
10012
10013 * Makefile.am: rearrange the snarfing slightly, so that .doc files
10014 are of a reasonable size.
10015
10016 2001-08-02 Neil Jerram <neil@ossau.uklinux.net>
10017
10018 * stacks.c (scm_make_stack): Improve docstring by explaining use
10019 of cutting args.
10020
10021 2001-08-01 Marius Vollmer <mvo@zagadka.ping.de>
10022
10023 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
10024 scm_char_whitespace_p, scm_char_upper_case_p,
10025 scm_char_lower_case_p, scm_char_is_both_p): Do not require
10026 characters to fulfill isascii in addition to the primary
10027 predicate.
10028
10029 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10030
10031 * numbers.c (DIGITS, scm_small_istr2int, scm_istr2int,
10032 scm_istr2flo, scm_istring2number): Removed.
10033
10034 (iflo2str, scm_real_p, scm_integer_p): Use SCM_<foo> instead of
10035 SCM_SLOPPY_<foo>.
10036
10037 (t_exactness, t_radix, DIGIT2UINT, XDIGIT2UINT, mem2uinteger,
10038 mem2decimal_from_point, mem2ureal, mem2complex, scm_i_mem2number):
10039 Added.
10040
10041 (scm_string_to_number): Use new number parser.
10042
10043 (scm_exact_to_inexact): Replace dummy by a GPROC, which also
10044 handles complex numbers.
10045
10046 * numbers.h (NUMBERSH, SCM_NUMBERS_H): Rename <foo>H to
10047 SCM_<foo>_H.
10048
10049 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Prefer !SCM_<pred> over
10050 SCM_N<pred>.
10051
10052 (scm_istr2int, scm_istr2flo, scm_istring2number): Removed.
10053
10054 (scm_i_mem2number): Added.
10055
10056 (scm_exact_to_inexact): Changed signature.
10057
10058 * read.c (scm_lreadr): Perform the shortcut test for '+ and '-
10059 here instead of within scm_i_mem2number. Call scm_i_mem2number
10060 instead of scm_istr2int and scm_istring2number.
10061
10062 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10063
10064 * eval.c (scm_lookupcar, scm_m_body, scm_m_lambda, unmemocopy,
10065 scm_unmemocopy, scm_badargsp, scm_eval_body, CHECK_EQVISH,
10066 SCM_CEVAL, scm_nconc2last, SCM_APPLY, scm_copy_tree): Prefer
10067 !SCM_<pred> over SCM_N<pred>.
10068
10069 (scm_eval_body): Remove side effecting code from macro call.
10070
10071 (SCM_CEVAL, SCM_APPLY): Remove goto statement and redundant
10072 SCM_NIMP test.
10073
10074 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10075
10076 * pairs.h (SCM_VALIDATE_PAIR): Use SCM_CONSP, not SCM_ECONSP.
10077
10078 2001-07-29 Marius Vollmer <mvo@zagadka.ping.de>
10079
10080 Removed vcell slot from structs.
10081
10082 * struct.h (scm_vtable_index_vcell): Removed. Renumbered
10083 subsequent indices.
10084
10085 * struct.c (scm_struct_vtable_p): Do not check vcell slot for
10086 zero. Use scm_vtable_index_layout instead of "0" when accessing
10087 said slot.
10088 (scm_init_struct): Remove vcell slot layout code from
10089 required_vtable_fields.
10090
10091 * objects.h (scm_si_redefined, scm_si_hashsets): Renumbered.
10092
10093 * goops.c (build_class_class_slots): Removed vcell slot
10094 definition.
10095
10096 * goops.h: Renumbered slot indices. (SCM_CLASS_CLASS_LAYOUT):
10097 Removed vcell slot layout code.
10098 (scm_si_vcell): Removed.
10099
10100 2001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
10101
10102 "Glocs" have been removed.
10103
10104 * tags.h: Update tag system docs.
10105 (scm_tc3_cons_gloc): Renamed to scm_tc3_struct. Changed all uses.
10106 (scm_tcs_cons_gloc): Renamed to scm_tcs_struct. Changed all uses.
10107 (SCM_ECONSP, SCM_NECONSP): Removed. Changed all uses to SCM_CONSP
10108 or SCM_NCONSP, respectively.
10109
10110 * struct.c, struct.h, srcprop.c, procs.c, procprop.c, print.c,
10111 objects.c. modules.c, goops.c, eval.c, debug.c: Changed all uses
10112 of scm_tc3_cond_gloc and scm_tcs_cons_gloc. See above.
10113
10114 * print.c (scm_iprin1): Remove printing of glocs. Do not try to
10115 tell glocs from structs.
10116
10117 * gc.c (scm_gc_mark, scm_gc_sweep): Remove handling of glocs.
10118
10119 * eval.c (scm_m_atbind): Make a list of variables, not glocs.
10120 (scm_ceval, scm_deval): For SCM_IM_BIND, fiddle with variables
10121 instead of with glocs.
10122 (EVALCAR): Do not test for glocs.
10123 (scm_lookupcar, scm_lookupcar1): Do not handle glocs in race
10124 condition.
10125 (scm_unmemocar): Do not handle glocs.
10126 (scm_m_atfop): Memoize as a variable, not as a gloc.
10127 (scm_eval_args, scm_deval_args): Do not handle glocs.
10128 (scm_ceval, scm_deval): Likewise.
10129
10130 * eval.h (SCM_XEVALCAR): Do not test for glocs.
10131 (SCM_GLOC_VAR, SCM_GLOC_VAL, SCM_GLOC_SET_VAL, SCM_GLOC_VAL_LOC):
10132 Removed.
10133
10134 * debug.h, debug.c (scm_make_gloc, scm_gloc_p): Removed.
10135
10136 * dynwind.c (scm_swap_bindings): Likewise.
10137 (scm_dowinds): Updated to recognize lists of variables instead of
10138 lists of glocs.
10139
10140 * __scm.h (SCM_CAUTIOS, SCM_RECKLESS): Update comments.
10141
10142
10143 * gc_os_dep.c (GC_noop1): Moved into the same #if/#endif context
10144 where it is needed.
10145
10146 2001-07-25 Gary Houston <ghouston@arglist.com>
10147
10148 * numbers.c (scm_logand, scm_logior, scm_logxor): adjusted the
10149 docstrings to reflect the n-ary implementation.
10150
10151 2001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
10152
10153 * eval.c (scm_ceval, scm_deval): Use "RETURN" macro when returning
10154 value of a variable, not the plain "return" statement.
10155
10156 2001-07-25 Marius Vollmer <mvo@zagadka.ping.de>
10157
10158 * eval.c: Allow variables in memoized code (in addition to glocs).
10159 (scm_lookupcar): Handle variables in lost races. Replace symbol
10160 with variable directly, do not make a gloc.
10161 (scm_unmemocar): Rewrite variables using a reverse lookup, just
10162 like glocs.
10163 (scm_ceval, scm_deval): Deal with variables in SCM_IM_SET and in
10164 the main switch.
10165
10166 2001-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
10167
10168 * variable.c (scm_i_variable_print): Use "value" instead of
10169 "binding" since a binding is the mapping between symbols and
10170 variables, not between variables and their values.
10171
10172 * tags.h (scm_tc7_variable): New.
10173 * gc.c (scm_gc_mark): Handle scm_tc7_variable objects.
10174 * print.c (scm_iprin1): Likewise.
10175
10176 * variable.h (scm_tc16_variable): Removed.
10177 (SCM_VARIABLEP): Test for new tc7 code.
10178 (scm_i_variable_print): New.
10179 * variable.c (scm_tc16_variable): Removed.
10180 (variable_print): Renamed to scm_i_variable_print and made
10181 non-static.
10182 (variable_equal_p): Removed.
10183 (make_variable): Construct a tc7 object instead of a smob.
10184 (scm_init_variable): Do not register smob.
10185
10186 2001-07-22 Marius Vollmer <mvo@zagadka.ping.de>
10187
10188 * tags.h: Include inttypes.h when we have it.
10189
10190 2001-07-13 Marius Vollmer <mvo@zagadka.ping.de>
10191
10192 * tags.h (SCM_UNBOUND): Make it the 34th isym/iflag, the 33th slot
10193 is taken by the new SCM_IM_CALL_WITH_VALUES.
10194 * print.c (scm_isymnames): Update table accordingly.
10195
10196 2001-07-22 Gary Houston <ghouston@arglist.com>
10197
10198 * regex-posix.c (s_scm_regexp_exec): use scm_long2num not
10199 SCM_MAKINUM to convert regoff_t value to SCM.
10200
10201 2001-07-21 Gary Houston <ghouston@arglist.com>
10202
10203 * scmsigs.c: include sys/time.h for itimer stuff.
10204
10205 2001-07-19 Rob Browning <rlb@defaultvalue.org>
10206
10207 * gc_os_dep.c (GC_noop1): ifdef out (unused) to quiet warning.
10208
10209 * c-tokenize.lex: add option %nounput to quiet warning.
10210 Add prototype for yylex to quiet warning.
10211
10212 * scmconfig.h.in: add flags for setitimer and getitimer.
10213
10214 * scmsigs.h (scm_init_scmsigs): new prototype.
10215 (scm_init_scmsigs): new prototype.
10216
10217 * scmsigs.c (s_scm_setitimer): new function.
10218 (s_scm_setitimer): new function.
10219
10220 2001-07-18 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10221
10222 * alist.c, arbiters.c, async.h, backtrace.h, boolean.c, chars.c,
10223 chars.h, continuations.h, debug-malloc.h, dynl.c, feature.c,
10224 feature.h, filesys.h, fluids.h, fports.h, gc_os_dep.c,
10225 gdb_interface.h, gh_eval.c, gh_funcs.c, gh_io.c, gh_list.c,
10226 gh_predicates.c, gsubr.c, gsubr.h, guardians.h,
10227 guile-func-name-check.in, guile-snarf-docs-texi.in,
10228 guile-snarf-docs.in, guile-snarf.awk.in, guile-snarf.in,
10229 hashtab.h, iselect.h, keywords.h, lang.c, list.h, load.h,
10230 objprop.c, objprop.h, options.c, options.h, random.h,
10231 regex-posix.h, root.c, root.h, script.c, snarf.h, stackchk.c,
10232 strerror.c, strop.h, strports.h, threads.h, values.c, values.h,
10233 version.c, version.h: Updated copyright notice.
10234
10235 2001-07-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
10236
10237 * goops.c (sym_layout, sym_vcell, sym_vtable, sym_print,
10238 sym_procedure, sym_setter, sym_redefined, sym_h0, sym_h1, sym_h2,
10239 sym_h3, sym_h4, sym_h5, sym_h6, sym_h7, sym_name,
10240 sym_direct_supers, sym_direct_slots, sym_direct_subclasses,
10241 sym_direct_methods, sym_cpl, sym_default_slot_definition_class,
10242 sym_slots, sym_getters_n_setters, sym_keyword_access, sym_nfields,
10243 sym_environment, scm_sym_change_class): New static variables to
10244 hold predefined symbols.
10245
10246 (build_class_class_slots): Build the list using scm_list_n
10247 instead of cons. Also, slots are already created as lists, thus
10248 making a call to maplist unnecessary.
10249
10250 (scm_class_name, scm_class_direct_supers, scm_class_direct_slots,
10251 scm_class_direct_subclasses, scm_class_direct_methods,
10252 scm_class_precedence_list, scm_class_slots, scm_class_environment,
10253 scm_method_procedure, create_standard_classes, purgatory): Use
10254 predefined symbols.
10255
10256 (build_slots_list, compute_getters_n_setters,
10257 scm_sys_initialize_object, scm_sys_inherit_magic_x,
10258 get_slot_value_using_name, set_slot_value_using_name,
10259 scm_sys_invalidate_method_cache_x, scm_generic_capability_p,
10260 scm_compute_applicable_methods, scm_sys_method_more_specific_p,
10261 make_struct_class): Prefer !SCM_<pred> over SCM_N<pred>.
10262
10263 (scm_sys_prep_layout_x): Minimize variable scopes.
10264
10265 (scm_sys_prep_layout_x, scm_sys_fast_slot_ref,
10266 scm_sys_fast_slot_set_x): Fix signedness.
10267
10268 (go_to_hell, go_to_heaven, purgatory, scm_change_object_class,
10269 lock_cache_mutex, unlock_cache_mutex, call_memoize_method,
10270 scm_memoize_method, scm_wrap_object): Use packing and unpacking
10271 when converting to and from SCM values.
10272
10273 (scm_enable_primitive_generic_x): Add rest argument checking.
10274
10275 (map, filter_cpl, maplist, scm_sys_initialize_object,
10276 scm_sys_prep_layout_x, slot_definition_using_name,
10277 scm_enable_primitive_generic_x, scm_compute_applicable_methods,
10278 call_memoize_method, scm_make, scm_make_class): Prefer explicit
10279 predicates over SCM_N?IMP tests.
10280
10281 (scm_sys_prep_layout_x): Fix typo in error message. Fix type
10282 checking.
10283
10284 (burnin, go_to_hell): Use SCM_STRUCT_DATA instead of the SCM_INST
10285 alias.
10286
10287 2001-07-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
10288
10289 * fports.c (fport_print): Don't use SCM_C[AD]R for non pairs.
10290
10291 * num2integral.i.c (INTEGRAL2NUM, INTEGRAL2BIG): Fix signedness.
10292
10293 * symbols-deprecated.c (scm_gentemp): Simplify vector test.
10294
10295 * vectors.c (scm_vector_p): Eliminate redundant IMP test.
10296
10297 2001-07-12 Michael Livshin <mlivshin@bigfoot.com>
10298
10299 * strings.c (s_scm_string): fix arg position in assert.
10300
10301 2001-07-11 Gary Houston <ghouston@arglist.com>
10302
10303 * strports.c (st_write): use memcpy, not strncpy. thanks to
10304 Dale P. Smith.
10305
10306 2001-07-09 Thien-Thi Nguyen <ttn@revel.glug.org>
10307
10308 * alist.c, alloca.c, arbiters.c, async.c, async.h, backtrace.c,
10309 boolean.c, chars.c, continuations.c, coop-defs.h, coop-threads.c,
10310 debug-malloc.h, debug.c, debug.h, dynl.c, dynwind.c, eq.c,
10311 error.c, eval.c, evalext.c, feature.c, feature.h, filesys.c,
10312 filesys.h, fluids.c, fluids.h, fports.c, fports.h, gc.c, gc.h,
10313 gdbint.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
10314 hooks.h, inet_aton.c, init.c, ioext.c, keywords.c, keywords.h,
10315 lang.c, list.c, load.c, macros.c, mallocs.c, memmove.c, modules.c,
10316 net_db.c, numbers.c, numbers.h, objects.c, objprop.c, options.c,
10317 pairs.c, pairs.h, ports.c, ports.h, posix.c, print.c, print.h,
10318 procprop.c, procs.c, procs.h, properties.c, putenv.c, ramap.c,
10319 random.c, random.h, read.c, regex-posix.c, regex-posix.h, root.c,
10320 root.h, scmsigs.c, script.c, simpos.c, smob.c, snarf.h, socket.c,
10321 sort.c, srcprop.c, srcprop.h, stackchk.c, stacks.c, stacks.h,
10322 stime.c, strerror.c, strings.c, strings.h, strop.c, strorder.c,
10323 strports.c, struct.c, struct.h, symbols-deprecated.c, symbols.c,
10324 symbols.h, tags.h, threads.c, threads.h, throw.c, unif.c, unif.h,
10325 variable.c, variable.h, vectors.c, vectors.h, version.c, vports.c,
10326 weaks.c, weaks.h: Remove "face-lift" comment.
10327
10328 2001-07-08 Rob Browning <rlb@defaultvalue.org>
10329
10330 * .cvsignore: add stamp-h.in.
10331
10332 2001-07-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10333
10334 * hooks.c (scm_make_hook, scm_add_hook_x),
10335 (scm_remove_hook_x, scm_reset_hook_x, scm_run_hook): Added return
10336 value info to the docstrings.
10337
10338 2001-07-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10339
10340 Some more compatibility patches for Windows.
10341
10342 * posix.c (getlogin): getlogin() implementation for Windows.
10343
10344 * backtrace.c, ioext.c: Include <stdio.h>.
10345
10346 * unif.c, script.c, rw.c, error.c: Include <io.h>, if it does
10347 exist.
10348
10349 * cpp_sig_symbols.in: Added SIGBREAK.
10350
10351 2001-07-01 Marius Vollmer <mvo@zagadka.ping.de>
10352
10353 * strports.c (scm_read_0str, scm_eval_0str): Call
10354 scm_c_read_string and scm_c_eval_string respectively, not
10355 themselves. Thanks to Dale P. Smith!
10356
10357 2001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10358
10359 * unif.c (scm_array_set_x): The variable args does not
10360 necessarily have to be a list. Further, got rid of a redundant
10361 SCM_NIMP test.
10362
10363 2001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10364
10365 * list.c (SCM_I_CONS): Make sure the cell type is initialized
10366 last.
10367
10368 * gc.c (s_scm_map_free_list, scm_igc, scm_gc_sweep,
10369 init_heap_seg): Fixed signedness.
10370
10371 (init_heap_seg): Replaced strange for-loop with a while loop.
10372
10373 * weaks.h (WEAKSH, SCM_WEAKS_H): Rename <foo>H to SCM_<foo>_H.
10374
10375 (SCM_WVECTP): Prefer !SCM_<pred> over SCM_N<pred>.
10376
10377 The following patch adds conservative marking for the elements of
10378 free or allocated cells.
10379
10380 * gc.c (allocated_mark, heap_segment): New static functions.
10381
10382 (which_seg): Deleted, since the functionality is now provided by
10383 function heap_segment.
10384
10385 (map_free_list): Use heap_segment instead of which_seg.
10386
10387 (MARK): If cell debugging is disabled, mark free cells
10388 conservatively.
10389
10390 (scm_mark_locations, scm_cellp): Extracted the search for the
10391 heap segment of a SCM value into function heap_segment.
10392
10393 (scm_init_storage): Allocated cells must be marked
10394 conservatively.
10395
10396 * gc.[ch] (scm_gc_mark_cell_conservatively): New function.
10397
10398 The following patch changes the representation of weak vectors to
10399 double cells instead of using an extension of the vector's
10400 allocated memory.
10401
10402 * gc.c (MARK): Use SCM_SET_WVECT_GC_CHAIN instead of assigning to
10403 the result of SCM_WVECT_GC_CHAIN.
10404
10405 (scm_gc_sweep): Weak vectors don't have extra fields any more.
10406
10407 * weaks.c (allocate_weak_vector): New static function. It does
10408 not patch any previously created vector object during the
10409 construction of a weak vector, and thus doesn't need to switch
10410 off interrupts during vector creation.
10411
10412 (scm_make_weak_vector, scm_make_weak_key_hash_table,
10413 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
10414 Use allocate_weak_vector to provide the new weak vector object.
10415
10416 * weaks.h (SCM_WVECT_TYPE, SCM_SET_WVECT_TYPE,
10417 SCM_SET_WVECT_GC_CHAIN): New macros. The weak vector subtype is
10418 now stored in the double cell.
10419
10420 (SCM_IS_WHVEC, SCM_IS_WHVEC_V, SCM_IS_WHVEC_B, SCM_IS_WHVEC_ANY):
10421 Use SCM_WVECT_TYPE.
10422
10423 (SCM_WVECT_GC_CHAIN): The weak objects are now chained together
10424 using an entry of the double cell.
10425
10426 2001-06-30 Thien-Thi Nguyen <ttn@revel.glug.org>
10427
10428 * stamp-h.in: bye bye
10429
10430 2001-06-30 Marius Vollmer <mvo@zagadka.ping.de>
10431
10432 * gh_eval.c (gh_eval_str): Use scm_c_eval_string instead of
10433 scm_eval_0str.
10434
10435 * load.c, load.h (scm_c_primitive_load,
10436 scm_c_primitive_load_path): New.
10437
10438 * strports.c, strports.h (scm_c_read_string): Renamed from
10439 scm_read_0str. Also, added "const" qualifier to argument.
10440 (scm_c_eval_string): Renamed from scm_eval_0str.
10441 (scm_read_0str, scm_eval_0str): Deprecated.
10442
10443 2001-06-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10444
10445 * fluids.c (scm_c_with_fluid): Use scm_list_1() instead of
10446 SCM_LIST1.
10447
10448 2001-06-28 Keisuke Nishida <kxn30@po.cwru.edu>
10449
10450 * list.h (scm_list_1, scm_list_2, scm_list_3, scm_list_4, scm_list_5,
10451 scm_list_n): New functions.
10452 (SCM_LIST0, SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5,
10453 SCM_LIST6, SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify): Deprecated.
10454 (lots of files): Use the new functions.
10455
10456 * goops.c (CALL_GF1, CALL_GF2, CALL_GF3, CALL_GF4): Use scm_call_N.
10457
10458 * strings.c: #include "libguile/deprecation.h".
10459
10460 2001-06-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10461
10462 * read.c (scm_lreadr): When reading a hash token, check for a
10463 user-defined hash procedure first, so that overriding the builtin
10464 hash characters is possible (this was needed for implementing
10465 SRFI-4's read synax `f32(...)').
10466
10467 * num2integral.i.c: Use scm_t_signed_bits instead of scm_t_bits,
10468 because the latter is unsigned now and breaks comparisons like
10469 (n < (scm_t_signed_bits)MIN_VALUE).
10470
10471 2001-06-26 Neil Jerram <neil@ossau.uklinux.net>
10472
10473 * eval.h, eval.c (scm_call_4): New function.
10474
10475 * eval.c (SCM_APPLY, SCM_CEVAL, ENTER_APPLY): Call trap handlers
10476 directly rather than dispatching to them via scm_ithrow and a lazy
10477 catch.
10478
10479 * eval.c (scm_evaluator_trap_table), eval.h (SCM_ENTER_FRAME_HDLR,
10480 SCM_APPLY_FRAME_HDLR, SCM_EXIT_FRAME_HDLR): Add three new options
10481 for trap handler procedures.
10482
10483 * debug.h (SCM_RESET_DEBUG_MODE): Add checks for trap handler
10484 procedures not being #f.
10485
10486 2001-06-27 Michael Livshin <mlivshin@bigfoot.com>
10487
10488 * Makefile.am (c-tokenize.c): add rule to generate it.
10489 (EXTRA_DIST): add c-tokenize.lex, so it gets distributed.
10490
10491 filter-doc-snarfage.c: remove.
10492
10493 2001-06-26 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10494
10495 * ports.c (scm_output_port_p): Use result of SCM_COERCE_OUTPORT.
10496
10497 The following set of changes makes compiling Guile under various
10498 Windows compilers easier. Compilation under GNU systems should
10499 not be affected at all.
10500
10501 Thanks to Stefan Jahn for all necessary information, patches and
10502 testing.
10503
10504 * posix.c: Conditialize getpwent, getgrent, kill, getppid, getuid,
10505 getpgrp, ttyname, primitive-fork and some header inclusion for
10506 Windows.
10507
10508 * random.c: Define M_PI, if not predefined and use __int64 for
10509 LONG64 under Windows.
10510
10511 * scmsigs.c: Emulate some functions (alarm, sleep, kill) under
10512 Windows and conditionalize some signal names.
10513
10514 * socket.c (scm_getsockopt): Added missing comma.
10515 Include socket library header under Windows.
10516
10517 * stime.c (CLKTCK): Add cast to int, to make it compile under
10518 Windows.
10519
10520 * ports.c (truncate): New function, compiled only under Windows.
10521
10522 * net_db.c: Do not declare errno under Windows.
10523
10524 * iselect.h, inet_aton.c: Include socket library headers under
10525 Windows.
10526
10527 * guile.c (inner_main): Under Windows, initialize socket library
10528 and initialize gdb_interface data structures.
10529
10530 * gdb_interface.h: Under Windows, gdb_interface cannot be
10531 initialized statically. Initialize at runtime instead.
10532
10533 * fports.c (write_all): ssize_t -> size_t.
10534 (fport_print): Conditionalize call to ttyname().
10535 (getflags): New function, compiled only under Windows.
10536
10537 * filesys.c: Conditionalize inclusion of <pwd.h>. Conditionalize
10538 primitives chown, link, fcntl.
10539 (scm_basename, scm_dirname): Under Windows, handle \ as well as /
10540 as path seperator.
10541
10542 * backtrace.c: Include <io.h> under Windows.
10543
10544 * async.h (ASYNCH, SCM_ASYNC_H): Rename <foo>H to SCM_<foo>_H.
10545
10546 * _scm.h: Added preprocessor conditional for __MINGW32__ for errno
10547 declaration.
10548
10549 2001-06-27 Keisuke Nishida <kxn30@po.cwru.edu>
10550
10551 * eval.c (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
10552 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): New functions.
10553 * eval.h (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
10554 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): Declared.
10555 * async.c (scm_run_asyncs), coop-threads.c (scheme_body_bootstrip,
10556 scheme_handler_bootstrip), debug.c (with_traps_inner), dynwind.c
10557 (scm_dynamic_wind, scm_dowinds), environments.c
10558 (import_environment_conflict), eval.c (scm_macroexp, scm_force,
10559 scm_primitive_eval_x, scm_primitive_eval), fluids.c (apply_thunk),
10560 goops.c (GETVAR, purgatory, make_class_from_template,
10561 scm_ensure_accessor), hashtab.c (scm_ihashx, scm_sloppy_assx,
10562 scm_delx_x, fold_proc), hooks.c (scm_c_run_hook), load.c
10563 (scm_primitive_load), modules.c (scm_resolve_module,
10564 scm_c_define_module, scm_c_use_module, scm_c_export,
10565 module_variable, scm_eval_closure_lookup, scm_sym2var,
10566 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
10567 ports.c (scm_port_for_each), print.c (scm_printer_apply),
10568 properties.c (scm_primitive_property_ref), ramap.c (ramap,
10569 ramap_cxr, rafe, scm_array_index_map_x, read.c (scm_lreadr),
10570 scmsigs.c (sys_deliver_signals), sort.c (applyless), strports.c
10571 (scm_object_to_string, scm_call_with_output_string,
10572 scm_call_with_input_string), throw.c (scm_body_thunk,
10573 scm_handle_by_proc, hbpca_body), unif.c (scm_make_shared_array,
10574 scm_make_shared_array), vports.c (sf_flush, sf_write,
10575 sf_fill_input, sf_close): Use one of the above functions.
10576 * goops.c, hashtab.c, scmsigs.c, sort.c: #include "libguile/root.h".
10577
10578 2001-06-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
10579
10580 * filesys.c (scm_close), ports.c (scm_close_port,
10581 scm_port_closed_p), strop.c (scm_string_null_p): Use SCM_BOOL
10582 instead of SCM_NEGATE_BOOL.
10583
10584 * filesys.c (scm_stat): Clean up type dispatch.
10585
10586 * filesys.c (scm_stat), ports.c (scm_input_port_p,
10587 scm_output_port_p): Get rid of redundant IM type check.
10588
10589 * filesys.c (scm_readdir, scm_getcwd, scm_readlink), gh_data.c
10590 (gh_str2scm), load.c (scm_primitive_load, scm_internal_parse_path,
10591 scm_search_path), net_db.c (scm_gethost, scm_getnet, scm_getproto,
10592 scm_return_entry), numbers.c (scm_number_to_string), objects.c
10593 (scm_make_subclass_object), ports.c (scm_port_mode), read.c
10594 (scm_lreadr), simpos.c (scm_getenv), socket.c (scm_inet_ntoa,
10595 scm_addr_vector), stime.c (scm_strftime), strings.c
10596 (scm_makfromstrs, scm_makfrom0str, scm_substring), strings.h
10597 (SCM_STRING_COERCE_0TERMINATION_X), strop.c (string_copy,
10598 scm_string_split), strports.c (scm_strport_to_string), symbols.c
10599 (scm_symbol_to_string), vports.c (sf_write): Use scm_mem2string
10600 instead of scm_makfromstr.
10601
10602 * net_db.c (scm_sethost, scm_setnet, scm_setproto, scm_setserv),
10603 ports.c (scm_close_all_ports_except), read.c (scm_lreadr,
10604 scm_read_hash_extend), stime.c (scm_strftime), strings.c
10605 (scm_string_append, scm_string), strings.h (SCM_STRINGP,
10606 SCM_STRING_COERCE_0TERMINATION_X, SCM_RWSTRINGP), strop.c
10607 (string_capitalize_x): Prefer explicit type check over SCM_N?IMP,
10608 !SCM_<pred> over SCM_N<pred>.
10609
10610 * strings.[ch] (scm_makfromstr): Deprecated.
10611
10612 (scm_mem2string): New function, replaces scm_makfromstr.
10613
10614 * strings.c (scm_substring), strop.c (string_copy,
10615 scm_string_split), strports.c (scm_strport_to_string), symbols.c
10616 (scm_symbol_to_string): Fix gc problem.
10617
10618 * strings.h (STRINGSH, SCM_STRINGS_H): Rename <foo>H to
10619 SCM_<foo>_H.
10620
10621 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Eliminate
10622 warning about comparing signed and unsigned values. This fix is
10623 not optimal, since it won't work reliably if sizeof (c_start) >
10624 sizeof (size_t) or sizeof (c_end) > sizeof (size_t). A better
10625 solution is to define this macro as an inline function, thus
10626 allowing to specifiy the types of c_start and c_end.
10627
10628 2001-06-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
10629
10630 * debug.h (SCM_DEBUGOBJ_FRAME): Deliver result as a
10631 scm_t_debug_frame*.
10632
10633 * debug.h (DEBUGH, SCM_DEBUG_H), stacks.h (STACKSH, SCM_STACKSH):
10634 Rename <foo>H to SCM_<foo>_H.
10635
10636 * stacks.c (NEXT_FRAME, narrow_stack): Prefer explicit type check
10637 over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
10638
10639 (narrow_stack): Make i unsigned. Don't use side-effecting
10640 operations in conditions.
10641
10642 (narrow_stack, scm_make_stack, scm_stack_id,
10643 scm_last_stack_frame): Get rid of redundant SCM_N?IMP checks.
10644
10645 (scm_make_stack, scm_stack_id, scm_last_stack_frame): Clean up
10646 type dispatch. No need to cast result of SCM_DEBUGOBJ_FRAME any
10647 more.
10648
10649 (scm_stack_ref, scm_frame_previous, scm_frame_next): Fix
10650 signedness.
10651
10652 (scm_last_stack_frame): Remove bogus `;'.
10653
10654 * stacks.h (SCM_FRAMEP): Fix type check.
10655
10656 2001-06-25 Michael Livshin <mlivshin@bigfoot.com>
10657
10658 * Makefile.am (MAINTAINERCLEANFILES): be sure to remove
10659 c-tokenize.c when doing maintainer-clean.
10660
10661 * snarf.h (SCM_SNARF_DOCS): change the "grammar" slightly.
10662
10663 * guile-snarf-docs.in, guile-snarf-docs-texi.in: rewrite &
10664 simplify.
10665
10666 * eval.c: all hash signs are in column 0.
10667
10668 * Makefile.am (guile_filter_doc_snarfage): build using
10669 c-tokenize.c, not filter-doc-snarfage.c.
10670 rearrange snarfing dependencies a bit.
10671
10672 * c-tokenize.lex: new file.
10673
10674 2001-06-25 Marius Vollmer <mvo@zagadka.ping.de>
10675
10676 * srcprop.h, srcprop.c (scm_srcprops_to_plist): Renamed from
10677 scm_t_srcpropso_plist. See the big type renaming.
10678 * coop-defs.h (scm_mutex_trylock, scm_cond_timedwait): Likewise.
10679 Thanks to Seth Alves!
10680
10681 * numbers.c (SIZE_MAX, PTRDIFF_MIN, PTRDIFF_MAX): Only define when
10682 they aren't defined already.
10683
10684 2001-06-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
10685
10686 * backtrace.c (display_backtrace_body): Use SCM_VALIDATE_STACK
10687 and SCM_VALIDATE_OPOUTPORT instead of SCM_ASSERT. Fix signedness
10688 problem.
10689
10690 * backtrace.c (display_expression, scm_set_print_params_x,
10691 display_application, display_frame, scm_backtrace), numbers.c
10692 (scm_istring2number), objects.c (scm_class_of,
10693 scm_mcache_lookup_cmethod, scm_mcache_compute_cmethod): Prefer
10694 explicit type check over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
10695
10696 * fluids.c (scm_fluid_ref, scm_fluid_set_x): Fluid numbers are
10697 always positive.
10698
10699 * numbers.c (scm_i_mkbig): Remove unnecessary casts, remove
10700 unnecessary SCM_DEFER_INTS, SCM_ALLOW_INTS.
10701
10702 * objects.c (scm_class_of): Type fix.
10703
10704 (scm_mcache_lookup_cmethod): Improved comment, simplified,
10705 eliminated goto.
10706
10707 * pairs.h (scm_error_pair_access): The function can return if
10708 called recursively.
10709
10710 2001-06-20 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10711
10712 * init.c (scm_init_guile_1): Removed initialization of tag.c.
10713
10714 * gdbint.c, init.c: Removed inclusion of tag.h.
10715
10716 * tag.h, tag.c: Removed files.
10717
10718 * Makefile.am: Removed tag.{h,c,doc,x} in various places.
10719
10720 2001-06-20 Gary Houston <ghouston@arglist.com>
10721
10722 * deprecation.c, extensions.c, rw.c: include string.h.
10723
10724 2001-06-19 Gary Houston <ghouston@arglist.com>
10725
10726 * filter-doc-snarfage.c (process): added ungetc in
10727 MULTILINE_COOKIE case since otherwise it fails when there's no
10728 space between the '(' and the quote of the following string
10729 (gcc 3.0).
10730
10731 2001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
10732
10733 Throughout: replace "scm_*_t" with "scm_t_*", except "scm_lisp_t".
10734
10735 2001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
10736
10737 * unif.h (SCM_ARRAY_NDIM): Shift then cast so that no sign
10738 extension takes place.
10739 * strings.h (SCM_STRING_LENGTH): Likewise.
10740 (SCM_STRING_MAX_LENGTH): Use unsigned numbers.
10741
10742 * __scm.h (ptrdiff_t): Typedef to long when configure didn't find
10743 it.
10744
10745 * tags.h: Include <stdint.h> when we have it.
10746 (scm_bits_t): Changed to be a unsigned type. Use uintptr_t when
10747 available. Else use "unsigned long".
10748 (scm_signed_bits_t): New.
10749
10750 * numbers.h (SCM_SRS): Cast shiftee to scm_signed_bits_t.
10751 (SCM_INUM): Cast result to scm_signed_bits_t.
10752
10753 2001-06-13 Thien-Thi Nguyen <ttn@revel.glug.org>
10754
10755 * mkstemp.c: Update path to #include file scmconfig.h.
10756 Thanks to Golubev I. N.
10757
10758 2001-06-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
10759
10760 * struct.h (SCM_STRUCT_VTABLE_FLAGS): New macro.
10761
10762 * goops.h (SCM_NUMBER_OF_SLOTS): Removed bogus `\' at the end of
10763 the macro definition.
10764
10765 (SCM_CLASSP, SCM_INSTANCEP, SCM_PUREGENERICP, SCM_ACCESSORP,
10766 SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Use SCM_STRUCT_VTABLE_FLAGS
10767 instead of SCM_INST_TYPE.
10768
10769 (SCM_ACCESSORP, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Make sure
10770 the object is a struct before accessing its struct flags.
10771
10772 (SCM_INST_TYPE, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Deprecated.
10773
10774 2001-06-10 Gary Houston <ghouston@arglist.com>
10775
10776 * rdelim.c (scm_init_rdelim_builtins): don't try to activate the
10777 (ice-9 rdelim) module in (guile) and (guile-user). it didn't
10778 work reliably anymore. try it from boot-9.scm instead.
10779
10780 2001-06-09 Marius Vollmer <mvo@zagadka.ping.de>
10781
10782 * ports.c (scm_lfwrite): Maintain columnd and row count in port.
10783 Thanks to Matthias Köppe!
10784
10785 2001-06-08 Michael Livshin <mlivshin@bigfoot.com>
10786
10787 * snarf.h, filter-doc-snarfage.c: more changes to cope with
10788 space-happy C preprocessors.
10789
10790 * filter-doc-snarfage.c, guile-snarf.in: try to cope with spaces
10791 inside cookies. thanks to Matthias Köppe!
10792
10793 2001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
10794
10795 * keywords.c (keyword_print): Don't use SCM_C[AD]R to access
10796 keywords. Fix gc protection.
10797
10798 * objects.c (scm_mcache_lookup_cmethod): Don't use side effecting
10799 operations in macro calls.
10800
10801 * pairs.c (scm_error_pair_access): Avoid recursion.
10802
10803 Thanks to Matthias Koeppe for reporting the bugs that correspond
10804 to the following set of patches.
10805
10806 * unif.c (scm_bit_set_star_x, scm_bit_invert_x), vectors.h
10807 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Obtain the
10808 bitvector base address using SCM_BITVECTOR_BASE.
10809
10810 * unif.h (SCM_BITVECTOR_BASE): Return the base address as an
10811 unsigned long*.
10812
10813 2001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
10814
10815 * goops.c (SCM_CLASS_REDEF): Removed.
10816
10817 * vectors.h (VECTORSH, SCM_VECTORS_H): Renamed <foo>H to
10818 SCM_<foo>_H.
10819
10820 Thanks to Matthias Koeppe for reporting the bugs that correspond
10821 to the following set of patches.
10822
10823 * goops.c (scm_sys_prep_layout_x, scm_basic_basic_make_class,
10824 create_basic_classes, scm_sys_fast_slot_set_x, set_slot_value,
10825 scm_sys_allocate_instance, clear_method_cache,
10826 scm_sys_invalidate_method_cache_x, scm_make,
10827 create_standard_classes, scm_make_port_classes, scm_make_class,
10828 scm_add_slot): Use SCM_SET_SLOT to set slot values.
10829
10830 (prep_hashsets): Use SCM_SET_HASHSET to set class hash values.
10831
10832 * goops.h (SCM_SET_SLOT, SCM_SET_HASHSET): New macros.
10833
10834 * ramap.c (BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
10835 UNARY_ELTS_CODE): Remove bogus break statement.
10836
10837 * vectors.h (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR):
10838 Don't access bit vectors elements as SCM objects.
10839
10840 * weaks.c (scm_make_weak_vector, scm_make_weak_key_hash_table,
10841 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
10842 Don't assign to an unpacked value.
10843
10844 2001-06-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
10845
10846 * __scm.h (SCM_NORETURN): Moved here from error.h.
10847
10848 (SCM_UNUSED): New macro.
10849
10850 (SCM_DEBUG_PAIR_ACCESSES): New macro.
10851
10852 * backtrace.c (display_error_handler), continuations.c
10853 (continuation_print), debug.c (debugobj_print), dynwind.c
10854 (guards_print), environments.c (observer_print,
10855 core_environments_finalize, leaf_environment_cell,
10856 leaf_environment_print, eval_environment_print,
10857 eval_environment_observer, import_environment_define,
10858 import_environment_undefine, import_environment_print,
10859 import_environment_observer, export_environment_define,
10860 export_environment_undefine, export_environment_print,
10861 export_environment_observer), eval.c (scm_m_quote, scm_m_begin,
10862 scm_m_if, scm_m_set_x, scm_m_and, scm_m_or, scm_m_case,
10863 scm_m_cond, scm_m_lambda, scm_m_letstar, scm_m_do, scm_m_delay,
10864 scm_m_letrec1, scm_m_apply, scm_m_cont, scm_m_nil_cond,
10865 scm_m_nil_ify, scm_m_t_ify, scm_m_0_cond, scm_m_0_ify,
10866 scm_m_1_ify, scm_m_atfop, scm_m_at_call_with_values), evalext.c
10867 (scm_m_generalized_set_x), fluids.c (fluid_print), fports.c
10868 (fport_print), gc.c (gc_start_stats, scm_remember_upto_here_1,
10869 scm_remember_upto_here_2, scm_remember_upto_here, mark_gc_async),
10870 gh_init.c (gh_standard_handler), goops.c (get_slot_value,
10871 set_slot_value, test_slot_existence, scm_change_object_class,
10872 scm_m_atslot_ref, scm_m_atslot_set_x, make_struct_class,
10873 default_setter), guardians.c (guardian_print, guardian_gc_init,
10874 guardian_zombify, whine_about_self_centered_zombies), guile.c
10875 (inner_main), init.c (stream_handler), keywords.c (keyword_print),
10876 mallocs.c (malloc_print), numbers.c (scm_print_real,
10877 scm_print_complex, scm_bigprint), ports.c (flush_port_default,
10878 end_input_default, scm_port_print, fill_input_void_port,
10879 write_void_port), root.c (root_print), smob.c (scm_mark0,
10880 scm_free0, scm_smob_print, scm_smob_apply_1_error,
10881 scm_smob_apply_2_error, scm_smob_apply_3_error, free_print),
10882 stime.c (restorezone), strings.c (scm_makfromstr), struct.c
10883 (scm_struct_free_0, scm_struct_free_standard,
10884 scm_struct_free_entity, scm_struct_gc_init, scm_free_structs),
10885 throw.c (jmpbuffer_print, lazy_catch_print, ss_handler,
10886 scm_handle_by_throw, scm_ithrow), weaks.c
10887 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
10888 scm_scan_weak_vectors), ramap.c (scm_array_fill_int), filesys.c
10889 (scm_dir_print): Mark unused parameters with SCM_UNUSED.
10890
10891 * error.h (SCM_NORETURN): Moved to __scm.h.
10892
10893 * error.h (ERRORH, SCM_ERROR_H), pairs.h (PAIRSH, SCM_PAIRS_H):
10894 Renamed <foo>H to SCM_<foo>_H.
10895
10896 * gc.c (debug_cells_gc_interval): New static variable.
10897
10898 (scm_assert_cell_valid): If selected by the user, perform
10899 additional garbage collections.
10900
10901 (scm_set_debug_cell_accesses_x): Extended to let the user specify
10902 if additional garbage collections are desired.
10903
10904 (mark_gc_async): If additional garbage collections are selected
10905 by the user, don't call the after-gc-hook. Instead require the
10906 user to run the hook manually.
10907
10908 * pairs.c (scm_error_pair_access): New function. Only compiled
10909 if SCM_DEBUG_PAIR_ACCESSES is set to 1.
10910
10911 * pairs.h (SCM_VALIDATE_PAIR): New macro.
10912
10913 (SCM_CAR, SCM_CDR, SCM_SETCAR, SCM_SETCDR): If
10914 SCM_DEBUG_PAIR_ACCESSES is set to 1, make sure that the argument
10915 is a real pair object. (Glocs are also accepted, but that may
10916 change.) If not, abort with an error message.
10917
10918 2001-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10919
10920 * eval.c (SCM_VALIDATE_NON_EMPTY_COMBINATION): New macro.
10921
10922 (SCM_CEVAL, SCM_APPLY): Replace calls to SCM_EVALIM2 with calls
10923 to SCM_VALIDATE_NON_EMPTY_COMBINATION.
10924
10925 2001-06-05 Marius Vollmer <mvo@zagadka.ping.de>
10926
10927 * extensions.c (scm_c_register_extension): Allow NULL as library
10928 name.
10929 (load_extension): Ignore NULL library names when comparing.
10930
10931 * hash.c (scm_hasher): Use SCM_UNPACK in the case labels so that
10932 non-pointers are being compared. Thanks to Alexander Klimov!
10933
10934 2001-06-04 Gary Houston <ghouston@arglist.com>
10935
10936 * rw.c (scm_write_string_partial): new procedure implementing
10937 write-string/partial in (ice-9 rw).
10938 * rw.h: declare scm_write_string_partial.
10939
10940 2001-06-04 Marius Vollmer <mvo@zagadka.ping.de>
10941
10942 * keywords.c (keyword_print): Substract 1 from length of symbol
10943 name, accounting for the silly dash.
10944
10945 * dynl.c (scm_registered_modules, scm_clear_registered_modules):
10946 Do not emit deprecation warning.
10947
10948 Added exception notice to all files.
10949
10950 * dynl.c: Include "deprecation.h".
10951
10952 2001-06-03 Marius Vollmer <mvo@zagadka.ping.de>
10953
10954 * dynl.c (scm_register_module_xxx, scm_registered_modules,
10955 scm_clear_registered_modules): Deprecated.
10956
10957 2001-06-02 Rob Browning <rlb@cs.utexas.edu>
10958
10959 * .cvsignore: add guile_filter_doc_snarfage guile-snarf-docs
10960 guile-snarf-docs-texi.
10961
10962 * fports.c: HAVE_ST_BLKSIZE changed to
10963 HAVE_STRUCT_STAT_ST_BLKSIZE.
10964 (scm_fport_buffer_add): HAVE_ST_BLKSIZE changed to
10965 HAVE_STRUCT_STAT_ST_BLKSIZE.
10966
10967 * filesys.c (scm_stat2scm): HAVE_ST_RDEV changed to
10968 HAVE_STRUCT_STAT_ST_RDEV.
10969 (scm_stat2scm): HAVE_ST_BLKSIZE changed to
10970 HAVE_STRUCT_STAT_ST_BLKSIZE.
10971 (scm_stat2scm): HAVE_ST_BLOCKS changed to
10972 HAVE_STRUCT_STAT_ST_BLOCKS.
10973
10974 2001-06-02 Marius Vollmer <mvo@zagadka.ping.de>
10975
10976 * strports.c (scm_eval_string): Use scm_primitive_eval_x instead
10977 of scm_eval_x to allow module changes between the forms in the
10978 string. Set/restore module using scm_c_call_with_current_module.
10979
10980 * mkstemp.c: New file, slightly modified from libiberties
10981 mkstemps.c.
10982
10983 2001-05-31 Michael Livshin <mlivshin@bigfoot.com>
10984
10985 * guile-snarf-docs.in, guile-snarf-docs-texi.in,
10986 filter-doc-snarfage.c: new files.
10987
10988 * Makefile.am: add stuff to [build,] use and distribute
10989 guile-snarf-docs, guile-snarf-docs-texi, guile_filter_doc_snarfage.
10990
10991 * guile-snarf.in: grok the new snarf output.
10992
10993 * snarf.h: make the output both texttools- and `read'-friendly.
10994
10995 * guile-doc-snarf.in: reimplement in terms of guile-snarf and
10996 guile-snarf-docs. (should also deprecate, I guess. maybe not).
10997
10998 2001-05-31 Marius Vollmer <mvo@zagadka.ping.de>
10999
11000 * print.c (scm_simple_format): Support "~~" and "~%". Signal
11001 error for unsupported format controls and for superflous
11002 arguments. Thanks to Daniel Skarda!
11003
11004 * print.h, print.c (scm_print_symbol_name): Factored out of
11005 scm_iprin1.
11006 (scm_iprin1): Call it.
11007
11008 * keywords.c (keyword_print): Use scm_print_symbol_name so that
11009 weird names are printed correctly.
11010
11011 * print.c (scm_print_symbol_name): Symbols whose name starts with
11012 `#' or `:' or ends with `:' are considered weird.
11013
11014 2001-05-30 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11015
11016 * numbers.c (scm_difference, scm_divide): Clarified comments for -
11017 and /.
11018
11019 2001-05-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11020
11021 * debug.h: Removed prototype for scm_eval_string.
11022
11023 2001-05-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11024
11025 * symbols.c (scm_gensym): Fix buffer overrun (try `(gensym
11026 (make-string 2000 #\!))' in an older version).
11027
11028 Change strncpy to memcpy to allow embedded NUL characters in
11029 symbol prefix.
11030
11031 2001-05-28 Michael Livshin <mlivshin@bigfoot.com>
11032
11033 * hooks.c (scm_create_hook): deprecated.
11034 (make_hook): deleted.
11035 (scm_make_hook): all the hook creation code is now here.
11036
11037 * gc.c (scm_init_gc): don't call `scm_create_hook'. instead make
11038 a hook, make it permanent, and do a `scm_c_define' on it.
11039
11040 * strop.c (s_scm_string_capitalize_x): fix docstring quoting.
11041
11042 * socket.c (s_scm_inet_pton): fix docstring quoting.
11043 (s_scm_inet_ntop): ditto.
11044
11045 * num2integral.i.c (INTEGRAL2NUM): cast to fix a warning.
11046
11047 * hashtab.c (scm_internal_hash_fold): fix argument position in
11048 SCM_ASSERT.
11049
11050 * environments.c (s_scm_import_environment_set_imports_x): fix
11051 argument position in SCM_ASSERT.
11052
11053 * debug.c (s_scm_make_gloc): fix SCM packing/unpacking.
11054 (s_scm_make_iloc): ditto.
11055
11056 2001-05-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
11057
11058 * __scm.h (SCM_DEBUG_TYPING_STRICTNESS): Make 1 the default.
11059
11060 * eval.c (promise_print): Read the promise's value as an object.
11061
11062 (SCM_CEVAL): Don't perform side-effecting operations in macro
11063 parameters.
11064
11065 * eval.h (SCM_EVALIM2): Fix the typing strictness of the
11066 conditional expression.
11067
11068 * gc.c (scm_master_freelist, scm_master_freelist2): Added missing
11069 initializer.
11070
11071 * gh_data.c (gh_set_substr): Removed redundant unsigned >= 0
11072 text, removed redundant computation of effective_length and fixed
11073 the overflow check.
11074
11075 * goops.c (test_slot_existence): Use SCM_EQ_P to compare SCM
11076 values.
11077
11078 (wrap_init): Don't use SCM_C[AD]R for non pairs.
11079
11080 (hell): Make it a scm_bits_t pointer rather than a SCM pointer.
11081
11082 * goops.c (scm_sys_modify_class), strports.c (st_resize_port),
11083 struct.h (SCM_SET_STRUCT_PRINTER): Store unpacked values.
11084
11085 * goops.h (SCM_ACCESSORS_OF, SCM_SLOT): Return a SCM value.
11086
11087 * goops.h (GOOPSH, SCM_GOOPS_H), modules.h (MODULESH,
11088 SCM_MODULES_H), objects.h (OBJECTSH, SCM_OBJECTS_H), struct.h
11089 (STRUCTH, SCM_STRUCT_H), symbols.h (SYMBOLSH, SCM_SYMBOLS_H),
11090 __scm.h (__SCMH, SCM___SCM_H): Change <foo>H to SCM_<foo>_H.
11091
11092 * modules.[ch] (scm_module_tag): Make it a scm_bits_t value.
11093
11094 * objects.h (SCM_SET_CLASS_INSTANCE_SIZE): Fixed typing.
11095
11096 * ramap.c (ramap_rp): Removed bogus `;'.
11097
11098 * sort.c (scm_restricted_vector_sort_x): Fixed signedness
11099 problem.
11100
11101 * symbols.h (SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS, SCM_SYMBOL_FUNC,
11102 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS):
11103 Read SCM objects rather than scm_bits_t values.
11104
11105 * tags.h (SCM_VOIDP_TEST): Removed.
11106
11107 (SCM_DEBUG_TYPING_STRICTNESS): Now takes values 0, 1, 2. The
11108 value of 2 now corresponds to the former 1, the current 1
11109 corresponds to the former situation that SCM_VOIDP_TEST was
11110 defined.
11111
11112 (SCM): Now defined as typedef struct scm_unused_struct * SCM;
11113 If this appears to be not ANSI compliant, we will change it to
11114 typedef struct scm_unused_struct { } * SCM;
11115 Thanks to Han-Wen Nienhuys for the suggestion.
11116
11117 * unif.c (scm_array_set_x): Fix typing problem, and use
11118 SCM_UVECTOR_BASE instead of SCM_VELTS or SCM_CELL_WORD_1 when
11119 dealing with uniform vectors.
11120
11121 2001-05-27 Michael Livshin <mlivshin@bigfoot.com>
11122
11123 * gc.c (scm_init_storage): init `scm_gc_registered_roots'.
11124 (scm_igc): mark from them, too (precisely, not conservatively!).
11125
11126 * root.h (scm_gc_registered_roots): new object in
11127 scm_sys_protects.
11128
11129 * hooks.c (scm_create_hook): call `scm_gc_protect_object' instead
11130 `scm_protect_object'. shouldn't call it at all, though, it seems.
11131
11132 * gc.c (scm_[un]protect_object): deprecated.
11133 (scm_gc_[un]protect_object): new names for scm_[un]protect_object.
11134 (scm_gc_[un]register_root[s]): new.
11135
11136 * gc.h: add prototypes for scm_gc_[un]protect_object,
11137 scm_gc_[un]register_root[s].
11138
11139 2001-05-26 Michael Livshin <mlivshin@bigfoot.com>
11140
11141 revert the controversial part of the 2001-05-24 changes.
11142
11143 2001-05-25 Marius Vollmer <mvo@zagadka.ping.de>
11144
11145 * modules.c (scm_env_module): Exported to Scheme.
11146
11147 * eval.c (scm_debug_opts): New option `show-file-name'.
11148
11149 * debug.h (SCM_SHOW_FILE_NAME): New.
11150
11151 * backtrace.c: Include "libguile/filesys.h".
11152 (sym_base, display_backtrace_get_file_line,
11153 display_backtrace_file, display_backtrace_file_and_line): New.
11154 (display_frame): Call display_backtrace_file_and_line if that is
11155 requested.
11156 (display_backtrace_body): Call scm_display_backtrace_file if
11157 requested.
11158
11159 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr):
11160 Prototypes removed since there's no definition for these
11161 functions.
11162
11163 2001-05-24 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11164
11165 * unif.c (scm_make_ra, array_free), unif.h (SCM_ARRAY_DIMS):
11166 Changed use of scm_array->scm_array_t and
11167 scm_array_dim->scm_array_dim_t to enable build with
11168 --disable-deprecated.
11169
11170 2001-05-24 Michael Livshin <mlivshin@bigfoot.com>
11171
11172 The purpose of this set of changes is to regularize Guile's usage
11173 of ANSI C integral types, with the following ideas in mind:
11174
11175 - SCM does not nesessarily have to be long.
11176 - long is not nesessarily enough to store pointers.
11177 - long is not nesessarily the same size as int.
11178
11179 The changes are incomplete and possibly buggy. Please test on
11180 something exotic.
11181
11182 * validate.h
11183 (SCM_NUM2{SIZE,PTRDIFF,SHORT,USHORT,BITS,UBITS,INT,UINT}[_DEF]):
11184 new macros.
11185
11186 * unif.h: type renaming:
11187 scm_array -> scm_array_t
11188 scm_array_dim -> scm_array_dim_t
11189 the old names are deprecated, all in-Guile uses changed.
11190
11191 * tags.h (scm_ubits_t): new typedef, representing unsigned
11192 scm_bits_t.
11193
11194 * stacks.h: type renaming:
11195 scm_info_frame -> scm_info_frame_t
11196 scm_stack -> scm_stack_t
11197 the old names are deprecated, all in-Guile uses changed.
11198
11199 * srcprop.h: type renaming:
11200 scm_srcprops -> scm_srcprops_t
11201 scm_srcprops_chunk -> scm_srcprops_chunk_t
11202 the old names are deprecated, all in-Guile uses changed.
11203
11204 * gsubr.c, procs.c, print.c, ports.c, read.c, rdelim.c, ramap.c,
11205 rw.c, smob.c, sort.c, srcprop.c, stacks.c, strings.c, strop.c,
11206 strorder.c, strports.c, struct.c, symbols.c, unif.c, values.c,
11207 vectors.c, vports.c, weaks.c:
11208 various int/size_t -> size_t/scm_bits_t changes.
11209
11210 * random.h: type renaming:
11211 scm_rstate -> scm_rstate_t
11212 scm_rng -> scm_rng_t
11213 scm_i_rstate -> scm_i_rstate_t
11214 the old names are deprecated, all in-Guile uses changed.
11215
11216 * procs.h: type renaming:
11217 scm_subr_entry -> scm_subr_entry_t
11218 the old name is deprecated, all in-Guile uses changed.
11219
11220 * options.h (scm_option_t.val): unsigned long -> scm_bits_t.
11221 type renaming:
11222 scm_option -> scm_option_t
11223 the old name is deprecated, all in-Guile uses changed.
11224
11225 * objects.c: various long -> scm_bits_t changes.
11226 (scm_i_make_class_object): flags: unsigned long -> scm_ubits_t
11227
11228 * numbers.h (SCM_FIXNUM_BIT): deprecated, renamed to
11229 SCM_I_FIXNUM_BIT.
11230
11231 * num2integral.i.c: new file, multiply included by numbers.c, used
11232 to "templatize" the various integral <-> num conversion routines.
11233
11234 * numbers.c (scm_mkbig, scm_big2num, scm_adjbig, scm_normbig,
11235 scm_copybig, scm_2ulong2big, scm_dbl2big, scm_big2dbl):
11236 deprecated.
11237 (scm_i_mkbig, scm_i_big2inum, scm_i_adjbig, scm_i_normbig,
11238 scm_i_copybig, scm_i_short2big, scm_i_ushort2big, scm_i_int2big,
11239 scm_i_uint2big, scm_i_long2big, scm_i_ulong2big, scm_i_bits2big,
11240 scm_i_ubits2big, scm_i_size2big, scm_i_ptrdiff2big,
11241 scm_i_long_long2big, scm_i_ulong_long2big, scm_i_dbl2big,
11242 scm_i_big2dbl, scm_short2num, scm_ushort2num, scm_int2num,
11243 scm_uint2num, scm_bits2num, scm_ubits2num, scm_size2num,
11244 scm_ptrdiff2num, scm_num2short, scm_num2ushort, scm_num2int,
11245 scm_num2uint, scm_num2bits, scm_num2ubits, scm_num2ptrdiff,
11246 scm_num2size): new functions.
11247
11248 * modules.c (scm_module_reverse_lookup): i, n: int -> scm_bits_t.
11249
11250 * load.c: change int -> size_t in various places (where the
11251 variable is used to store a string length).
11252 (search-path): call scm_done_free, not scm_done_malloc.
11253
11254 * list.c (scm_ilength): return a scm_bits_t, not long.
11255 some other {int,long} -> scm_bits_t changes.
11256
11257 * hashtab.c: various [u]int -> scm_bits_t changes.
11258 scm_ihashx_closure -> scm_ihashx_closure_t (and made a typedef).
11259 (scm_ihashx): n: uint -> scm_bits_t
11260 use scm_bits2num instead of scm_ulong2num.
11261
11262 * gsubr.c: various int -> scm_bits_t changes.
11263
11264 * goops.[hc]: various {int,long} -> scm_bits_t changes.
11265
11266 * gh_data.c (gh_num2int): no loss of precision any more.
11267
11268 * gh.h (gh_str2scm): len: int -> size_t
11269 (gh_{get,set}_substr): start: int -> scm_bits_t,
11270 len: int -> size_t
11271 (gh_<num>2scm): n: int -> scm_bits_t
11272 (gh_*vector_length): return scm_[u]size_t, not unsigned long.
11273 (gh_length): return scm_bits_t, not unsigned long.
11274
11275 * gc.[hc]: various small changes relating to many things stopping
11276 being long and starting being scm_[u]bits_t instead.
11277 scm_mallocated should no longer wrap around.
11278
11279 * fports.h: type renaming:
11280 scm_fport -> scm_fport_t
11281 the old name is deprecated, all in-Guile uses changed.
11282
11283 * fports.c (fport_fill_input): count: int -> scm_bits_t
11284 (fport_flush): init_size, remaining, count: int -> scm_bits_t
11285
11286 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr): removed
11287 those prototypes, as the functions they prototype don't exist.
11288
11289 * fports.c (default_buffer_size): int -> size_t
11290 (scm_fport_buffer_add): read_size, write_size: int -> scm_bits_t
11291 default_size: int -> size_t
11292 (scm_setvbuf): csize: int -> scm_bits_t
11293
11294 * fluids.c (n_fluids): int -> scm_bits_t
11295 (grow_fluids): old_length, i: int -> scm_bits_t
11296 (next_fluid_num, scm_fluid_ref, scm_fluid_set_x): n: int ->
11297 scm_bits_t
11298 (scm_c_with_fluids): flen, vlen: int -> scm_bits_t
11299
11300 * filesys.c (s_scm_open_fdes): changed calls to SCM_NUM2LONG to
11301 the new and shiny SCM_NUM2INT.
11302
11303 * extensions.c: extension -> extension_t (and made a typedef).
11304
11305 * eval.h (SCM_IFRAME): cast to scm_bits_t, not int. just so
11306 there are no nasty surprises if/when the various deeply magic tag
11307 bits move somewhere else.
11308
11309 * eval.c: changed the locals used to store results of SCM_IFRAME,
11310 scm_ilength and such to be of type scm_bits_t (and not int/long).
11311 (iqq): depth, edepth: int -> scm_bits_t
11312 (scm_eval_stack): int -> scm_bits_t
11313 (SCM_CEVAL): various vars are not scm_bits_t instead of int.
11314 (check_map_args, scm_map, scm_for_each): len: long -> scm_bits_t
11315 i: int -> scm_bits_t
11316
11317 * environments.c: changed the many calls to scm_ulong2num to
11318 scm_ubits2num.
11319 (import_environment_fold): proc_as_ul: ulong -> scm_ubits_t
11320
11321 * dynwind.c (scm_dowinds): delta: long -> scm_bits_t
11322
11323 * debug.h: type renaming:
11324 scm_debug_info -> scm_debug_info_t
11325 scm_debug_frame -> scm_debug_frame_t
11326 the old names are deprecated, all in-Guile uses changed.
11327 (scm_debug_eframe_size): int -> scm_bits_t
11328
11329 * debug.c (scm_init_debug): use scm_c_define instead of the
11330 deprecated scm_define.
11331
11332 * continuations.h: type renaming:
11333 scm_contregs -> scm_contregs_t
11334 the old name is deprecated, all in-Guile uses changed.
11335 (scm_contregs_t.num_stack_items): size_t -> scm_bits_t
11336 (scm_contregs_t.num_stack_items): ulong -> scm_ubits_t
11337
11338 * continuations.c (scm_make_continuation): change the type of
11339 stack_size from long to scm_bits_t.
11340
11341 * ports.h: type renaming:
11342 scm_port_rw_active -> scm_port_rw_active_t (and made a typedef)
11343 scm_port -> scm_port_t
11344 scm_ptob_descriptor -> scm_ptob_descriptor_t
11345 the old names are deprecated, all in-Guile uses changed.
11346 (scm_port_t.entry): int -> scm_bits_t.
11347 (scm_port_t.line_number): int -> long.
11348 (scm_port_t.putback_buf_size): int -> size_t.
11349
11350 * __scm.h (long_long, ulong_long): deprecated (they pollute the
11351 global namespace and have little value beside that).
11352 (SCM_BITS_LENGTH): new, is the bit size of scm_bits_t (i.e. of an
11353 SCM handle).
11354 (ifdef spaghetti): include sys/types.h and sys/stdtypes.h, if they
11355 exist (for size_t & ptrdiff_t).
11356 (scm_sizet): deprecated.
11357
11358 * Makefile.am (noinst_HEADERS): add num2integral.i.c
11359
11360 2001-05-23 Marius Vollmer <mvo@zagadka.ping.de>
11361
11362 * snarf.h (SCM_CONST_LONG): Use SCM_VCELL_INIT instead of
11363 SCM_VARIABLE_INIT since that it what it used to be.
11364
11365 * deprecation.c (scm_include_deprecated_features): Make docstring
11366 ANSIsh. Thanks to Matthias Köppe!
11367
11368 2001-05-21 Marius Vollmer <mvo@zagadka.ping.de>
11369
11370 * symbols.c (scm_mem2symbol): Re-introduce indirect cell. It is
11371 needed for weak-key hashtables.
11372
11373 * procs.c (scm_make_subr_with_generic): Add missing last argument
11374 in call to scm_c_define_gsubr_with_generic. Thanks to Ariel Rios.
11375
11376 * eval.c: Use SCM_EQ_P instead of `==' or `!=' in certain
11377 places. (scm_c_improper_memq): Return 1 instead of SCM_BOOL_T.
11378
11379 * eval.h (SCM_EVALIM2): Use SCM_EQ_P instead of `=='.
11380
11381 2001-05-20 Marius Vollmer <mvo@zagadka.ping.de>
11382
11383 * symbols.c (scm_mem2symbol): Call `scm_must_strndup' instead of
11384 `duplicate_string'. Do not use an indirect cell, store symbol
11385 directly in collision list of hash table.
11386 (duplicate_string): Removed.
11387
11388 * init.c (scm_init_guile_1): Call scm_init_extensions.
11389
11390 * Makefile.am: Add "extensions.c" and related files in all the
11391 right places.
11392
11393 * extensions.h, extension.c: New files.
11394
11395 * gc.h, gc.c (scm_must_strdup, scm_must_strndup): New.
11396
11397 * modules.h (scm_system_module_env_p): Move out of deprecated
11398 section.
11399
11400 * rw.h (scm_init_rw): Added prototype.
11401
11402 * gsubr.h, gsubr.c (scm_c_make_gsubr, scm_c_define_gsubr,
11403 scm_c_make_gsubr_with_generic, scm_c_define_gsubr_with_generic):
11404 New functions. They replace scm_make_gsubr and
11405 scm_make_gsubr_with_generic. The `make' variants only create the
11406 gsubr object, while the `define' variants also put it into the
11407 current module. Changed all callers.
11408 (scm_make_gsubr, scm_make_gsubr_with_generic): Deprecated.
11409
11410 * procs.h, procs.c (scm_c_make_subr, scm_c_define_subr,
11411 scm_c_make_subr_with_generic, scm_c_define_subr_with_generic): New
11412 functions. They replace scm_make_subr, scm_make_subr_opt and
11413 scm_make_subr_with_generic. The `make' variants only create the
11414 subr object, while the `define' variants also put it into the
11415 current module. Changed all callers.
11416 (scm_make_subr, scm_make_subr_opt, scm_make_subr_with_generic):
11417 Deprecated.
11418
11419 * eval.c, gc.c, gh_funcs.c, goops.c, macros.c, pairs.c, ramap.c,
11420 rdelim.c, rw.c, scmsigs.c, snarf.h, values.c: Changed according to
11421 the comments above.
11422
11423 2001-05-19 Neil Jerram <neil@ossau.uklinux.net>
11424
11425 * throw.c (scm_lazy_catch): Slight docstring clarification.
11426
11427 2001-05-19 Marius Vollmer <mvo@zagadka.ping.de>
11428
11429 * throw.c: Lazy-catch handlers are no longer allowed to return.
11430 Fixed comments throughout.
11431 (scm_ithrow): Signal an error when a lazy-catch handler returns.
11432 Moved actual jump to jmpbuf into if-branch where the jmpbuf is
11433 recognized as such.
11434
11435 * version.c (s_scm_micro_version): Fix typo in FUNC_NAME, it
11436 refered to s_scm_minor_version previously.
11437
11438 * modules.h, modules.c: Moved around a lot of code so that
11439 deprecated features appear at the bottom.
11440 (root_module_lookup_closure, scm_sym_app, scm_sym_modules,
11441 module_prefix, make_modules_in_var, beautify_user_module_x_var,
11442 scm_the_root_module, scm_make_module, scm_ensure_user_module,
11443 scm_load_scheme_module): Deprecated.
11444 (scm_system_module_env_p): Return SCM_BOOL_T directly for
11445 environments corresponding to the root module.
11446 (convert_module_name, scm_c_resolve_module,
11447 scm_c_call_with_current_module, scm_c_define_module,
11448 scm_c_use_module, scm_c_export): New.
11449 (the_root_module): New static variant of scm_the_root_module. Use
11450 it everywhere instead of scm_the_root_module.
11451
11452 * fluids.h, fluids.c (scm_internal_with_fluids): Deprecated.
11453 (scm_c_with_fluids): Renamed from scm_internal_with_fluids.
11454 (scm_c_with_fluid): New.
11455 (scm_with_fluids): Use scm_c_with_fluids instead of
11456 scm_internal_with_fluids.
11457
11458 * goops.h, goops.c (scm_init_goops_builtins): Renamed from
11459 `scm_init_goops'. Do not explicitly create/switch modules.
11460 Return SCM_UNSPECIFIED.
11461 (scm_init_goops): Only register `%init-goops-builtins' procedure.
11462 (scm_load_goops): Use scm_c_resolve_module instead of
11463 scm_resolve_module.
11464
11465 * init.c (scm_init_guile_1): Call `scm_init_goops' instead of
11466 `scm_init_oop_goops_goopscore_module'. Call `scm_init_rdelim' and
11467 `scm_init_rw' prior to loading the startup files.
11468
11469 * rdelim.h, rdelim.c: (scm_init_rdelim_builtins): Renamed from
11470 scm_init_rdelim. Do not explicitly create/switch modules.
11471 Return SCM_UNSPECIFIED.
11472 (scm_init_rdelim): Only register `%init-rdelim-builtins'
11473 procedure.
11474
11475 * rw.c (scm_init_rw_builtins): Renamed from scm_init_rw. Do not
11476 explicitly create/switch modules. Return SCM_UNSPECIFIED.
11477 (scm_init_rw): Only register `%init-rw-builtins' procedure.
11478
11479 * script.c (scm_shell): Evaluate the compiled switches in the
11480 current module, not in the root module.
11481
11482 2001-05-18 Marius Vollmer <mvo@zagadka.ping.de>
11483
11484 * fluids.c (scm_c_with_fluids): Rename from
11485 scm_internal_with_fluids.
11486 (scm_internal_with_fluids): Deprecated.
11487 (scm_c_with_fluid): New.
11488
11489 2001-05-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
11490
11491 * print.h (PRINTH, SCM_PRINT_H): Renamed PRINTH to SCM_PRINT_H.
11492
11493 (SCM_PORT_WITH_PS_PORT, SCM_PORT_WITH_PS_PS): Only pairs may be
11494 accessed with SCM_C[AD]R.
11495
11496 (SCM_COERCE_OUTPORT): Removed redundant SCM_NIMP test.
11497
11498 2001-05-16 Rob Browning <rlb@cs.utexas.edu>
11499
11500 * version.c (s_scm_major_version): doc fixes.
11501 (s_scm_minor_version): doc fixes.
11502 (s_scm_minor_version): new function.
11503
11504 * version.h (scm_init_version): new function.
11505
11506 * versiondat.h.in: add GUILE_MICRO_VERSION.
11507
11508 2001-05-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
11509
11510 * deprecation.c (scm_init_deprecation): Renamed
11511 GUILE_WARN_DEPRECATED_DEFAULT to SCM_WARN_DEPRECATED_DEFAULT.
11512
11513 2001-05-16 Marius Vollmer <mvo@zagadka.ping.de>
11514
11515 * Makefile.am (cpp_sig_symbols.c, cpp_err_symbols.c): Make
11516 dependent on cpp_cnvt.awk
11517
11518 2001-05-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11519
11520 * script.c (scm_compile_shell_switches): New command line option
11521 `--use-srfi' for loading a list of SRFIs on startup.
11522 (scm_shell_usage): Added `--use-srfi' to help message.
11523
11524 2001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
11525
11526 Merged from mvo-vcell-cleanup-1-branch.
11527
11528 The concept of vcells has been removed from Guile. With it,
11529 explicit obarrays and associated operations are gone. Use
11530 hashtables instead of obarrays.
11531
11532 Throughout: use scm_sym2var instead of scm_sym2vcell and treat
11533 result as variable instead of vcell. Glocs no longer point to a
11534 vcell but to a variable. Use scm_c_define instead of
11535 scm_sysintern and treat the result as a variable (which it is),
11536 not a vcell.
11537
11538 * variable.c, variable.h (SCM_VARVCELL, SCM_UDVARIABLEP,
11539 SCM_DEFVARIABLEP): Deprecated.
11540 (SCM_VARIABLE_REF, SCM_VARIABLE_SET, SCM_VARIABLE_LOC): New.
11541 (variable_print): Do not print name of variable.
11542 (variable_equalp): Compare values, not vcells.
11543 (anonymous_variable_sym): Removed.
11544 (make_vcell_variable): Removed.
11545 (make_variable): New, as replacement.
11546 (scm_make_variable, scm_make_undefined_variable): Do not take name
11547 hint parameter.
11548 (scm_variable_ref): Check for SCM_UNDEFINED and throw "unbound"
11549 error in that case.
11550 (scm_builtin_variable): Deprecated.
11551
11552 * symbols.c, symbols.h (scm_sym2vcell, scm_sym2ovcell_soft,
11553 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
11554 scm_intern, scm_intern0, scm_sysintern0_no_module_lookup,
11555 scm_sysintern, scm_sysintern0, scm_symbol_value0,
11556 scm_string_to_obarray_symbol, scm_intern_symbol,
11557 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned,
11558 scm_symbol_bound_p, scm_symbol_set_x, scm_gentmp, gentmp_counter):
11559 Deprecated and moved to "symbols-deprecated.c".
11560 (copy_and_prune_obarray, scm_builtin_bindings): Removed.
11561 (scm_init_symbols): Call scm_init_symbols_deprecated.
11562 * symbols-deprecated.c: New file.
11563 * Makefile.am: Added symbols-deprecated.c and related files in all
11564 the right places.
11565
11566 * snarf.h (SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
11567 SCM_GLOBAL_VCELL_INIT): Deprecated.
11568 (SCM_VARIABLE, SCM_GLOBAL_VARIABLE, SCM_VARIABLE_INIT,
11569 SCM_GLOBAL_VARIABLE_INIT): New, as replacement. Changed all uses.
11570
11571 * print.c (scm_iprin1): Use scm_module_reverse_lookup instead of
11572 SCM_GLOC_SYM.
11573
11574 * evalext.c, filesys.c, fports.c, gdbint.c, gh_data.c, gsubr.c,
11575 hooks.c, load.c, numbers.c, objects.c, ports.c, posix.c, procs.c,
11576 ramap.c, random.c, read.c, regex-posix.c, scmsigs.c, script.c,
11577 socket.c, srcprop.c, stacks.c, stime.c, struct.c, tag.c, throw.c:
11578 Changed according to the `throughout' comments.
11579
11580 * modules.h, modules.c (scm_module_system_booted_p): Changed type
11581 to `int'.
11582 (scm_module_type): Removed.
11583 (the_root_module): Renamed to the_root_module_var. Now points to
11584 a variable instead of a vcell. Updated all uses.
11585 (scm_the_root_module): Return SCM_BOOL_F when module systems
11586 hasn't been booted yet.
11587 (SCM_VALIDATE_STRUCT_TYPE): Removed.
11588 (scm_post_boot_init_modules): Made static.
11589 (scm_set_current_module): Call scm_post_boot_init_modules on first
11590 call.
11591 (make_modules_in, beautify_user_module_x, resolve_module,
11592 try_module_autoload, module_make_local_var_x): Tacked on "_var"
11593 suffix. Now point to variables instead of vcells. Updated all
11594 uses.
11595 (scm_module_lookup_closure): Deal with the module being SCM_BOOL_F
11596 and return SCM_BOOL_F in that case.
11597 (scm_module_transformer): Likewise.
11598 (sym_module, scm_lookup_closure_module, scm_env_module): New.
11599 (SCM_F_EVAL_CLOSURE_INTERFACE, SCM_EVAL_CLOSURE_INTERFACE_P): New.
11600 (scm_eval_closure_lookup): Do not allow new definitions when
11601 `interface' flag is set.
11602 (scm_standard_interface_eval_closure): New.
11603 (scm_pre_modules_obarray, scm_sym2var, scm_module_lookup,
11604 scm_lookup, scm_module_define, scm_define, scm_c_module_lookup,
11605 scm_c_lookup, scm_c_module_define, scm_c_define,
11606 scm_module_reverse_lookup, scm_get_pre_modules_obarray,
11607 scm_modules_prehistory): New.
11608 (scm_post_boot_init_modules): Use scm_c_define and scm_c_lookup
11609 instead of scm_intern0.
11610
11611 * macros.c (scm_make_synt): Return SCM_UNSPECIFIED instead of the
11612 symbol.
11613
11614 * keywords.c (s_scm_make_keyword_from_dash_symbol): Use a regular
11615 hashtable operations to maintain the keywords, not obarray ones.
11616
11617 * init.c (scm_load_startup_files): Do not call
11618 scm_post_boot_init_modules. This is done by
11619 scm_set_current_module now.
11620 (scm_init_guile_1): Call scm_modules_prehistory. Call
11621 scm_init_variable early on.
11622
11623 * goops.c (s_scm_sys_goops_loaded): Get
11624 var_compute_applicable_methods from scm_sym2var, not from a direct
11625 invocation of scm_goops_lookup_closure.
11626
11627 * gh_funcs.c (gh_define): Return SCM_UNSPECIFIED instead of vcell.
11628
11629 * gc.c: Added simple debugging hack to mark phase of GC: When
11630 activated, do not tail-call scm_gc_mark. This gives nice
11631 backtraces.
11632 (scm_unhash_name): Removed.
11633
11634 * feature.c (features): Renamed to features_var. Now points to a
11635 variable instead of a vcell. Updated all uses.
11636
11637 * eval.h (SCM_TOP_LEVEL_LOOKUP_CLOSURE): Use
11638 `scm_current_module_lookup_closure' which will do the right thing
11639 when the module system hasn't been booted yet.
11640 (SCM_GLOC_SYM): Removed.
11641 (SCM_GLOC_VAR, SCM_GLOC_SET_VAL): New.
11642 (SCM_GLOC_VAL, SCM_GLOC_LOC): Reimplemented in terms of variables.
11643
11644 * eval.c (scm_lookupcar, scm_lookupcar1): Deal with variables
11645 instead of with vcells. Do not overwrite `var' with the result of
11646 the lookup, use the new `real_var' instead. Remove `var2' in
11647 exchange (which was only used with threads).
11648 (sym_three_question_marks): New.
11649 (scm_unmemocar): Use `scm_module_reverse_lookup' instead of
11650 `SCM_GLOC_SYM'.
11651 (scm_lisp_nil, scm_lisp_t): Directly define as symbols.
11652 (scm_m_atfop): Expect the function definition to be a variable
11653 instead of a vcell.
11654 (scm_macroexp): Do not use `unmemocar', explicitely remember the
11655 symbol instead.
11656 (scm_unmemocopy): Removed thoughts about anti-macro interface.
11657 (scm_eval_args): Use more explicit code in the gloc branch of the
11658 atrocious struct ambiguity test. The optimizer will sort this
11659 out.
11660 (scm_deval_args): Likewise.
11661 (SCM_CEVAL): Likewise. Also, do not use unmemocar, explicitely
11662 remember the symbol instead. Added some comments where
11663 scm_tc3_cons_gloc really exclusively refers to structs.
11664 (scm_init_eval): Use scm_define to initialize "nil" and "t" to
11665 scm_lisp_nil and scm_lisp_t, respectively. Use scm_define instead
11666 of scm_sysintern in general.
11667
11668 * dynwind.c (scm_swap_bindings): Use SCM_GLOC_SET_VAL instead of
11669 explicit magic.
11670
11671 * debug.c (s_scm_make_gloc): Only allow proper variables, no
11672 pairs. Put the variable directly in the gloc.
11673 (s_scm_gloc_p): Use `scm_tc3_cons_gloc' instead of the magic `1'.
11674 (scm_init_debug): Use scm_c_define instead scm_sysintern.
11675
11676 * cpp_cnvt.awk: Emit "scm_c_define" instead of "scm_sysintern".
11677
11678 * backtrace.h, backtrace.c (scm_the_last_stack_fluid): Renamed to
11679 scm_the_last_stack_fluid_var. It now points to a variable instead
11680 of a vcell. Updated all uses.
11681 (scm_has_shown_backtrace_hint_p_var): Now points to a variable
11682 instead of a vcell. Updated all uses.
11683
11684 * _scm.h: Include "variables.h" and "modules.h" since almost
11685 everybody needs them now.
11686
11687 * root.h (scm_symhash, scm_symhash_vars): Removed.
11688 * gc.c (scm_init_storage): Do not initialize them.
11689
11690 2001-05-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
11691
11692 * eval.c (scm_init_eval): Initialize scm_undefineds and
11693 scm_listofnull.
11694
11695 * gc.c (scm_debug_newcell, scm_debug_newcell2): Fixed to behave
11696 like the SCM_NEWCELL macro counterparts.
11697
11698 (scm_init_storage, scm_init_gc): Moved initialization of
11699 scm_tc16_allocated from scm_init_gc to scm_init_storage.
11700
11701 (scm_init_storage): Moved initialization of scm_undefineds and
11702 scm_listofnull to eval.c, initializion of scm_nullstr to
11703 strings.c, initializion of scm_nullvect to vectors.c.
11704
11705 * gc.h (SCM_NEWCELL, SCM_NEWCELL2): Prefer SCM_NULLP over
11706 SCM_IMP, as in scm_debug_newcell and scm_debug_newcell2.
11707
11708 * init.c (scm_init_guile_1): Reordered some initializations and
11709 added dependcy information comments.
11710
11711 * load.c (scm_init_load): Use scm_nullstr.
11712
11713 * strings.c (scm_init_strings): Initialize scm_nullstr.
11714
11715 * vectors.c (scm_init_vectors): Initialize scm_nullvect.
11716
11717 2001-05-15 Marius Vollmer <mvo@zagadka.ping.de>
11718
11719 * values.c (print_values): Print as a unreadable object, not as
11720 multiple lines. Thanks to Matthias Köppe!
11721
11722 2001-05-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
11723
11724 * deprecation.c: Fixed copyright date.
11725
11726 * deprecation.h (DEPRECATION_H, SCM_DEPRECATION_H): Renamed
11727 DEPRECATION_H to SCM_DEPRECATION_H.
11728
11729 2001-05-10 Thien-Thi Nguyen <ttn@revel.glug.org>
11730
11731 * guile-doc-snarf.in: Update copyright.
11732 Fix relative path bug. Thanks to Sergey Poznyakoff.
11733
11734 2001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
11735
11736 * ports.c (scm_port_revealed, scm_set_port_revealed_x): Only
11737 accept open ports. Thanks to Quetzalcoatl Bradley!
11738
11739 2001-05-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11740
11741 * procs.c: Increased `scm_subr_table_room' to 800 because Guile now
11742 has 779 primitives on startup.
11743
11744 2001-05-09 Marius Vollmer <mvo@zagadka.ping.de>
11745
11746 * eval.c (scm_i_eval): Copy expression before passing it to
11747 SCM_XEVAL. The copy operation was removed unintendedly during my
11748 change on 2001-03-25.
11749
11750 2001-05-09 Michael Livshin <mlivshin@bigfoot.com>
11751
11752 from Matthias Köppe (thanks!):
11753
11754 * ports.c (scm_c_read): pointer arithmetic on void pointers isn't
11755 portable.
11756
11757 * deprecation.c (s_scm_include_deprecated_features): ANSI'fied the
11758 docstring.
11759
11760 2001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
11761
11762 * gc.c (scm_init_gc): Added FIXME comment.
11763
11764 * hooks.c: Since hooks don't have a name any more, it is not
11765 necessary to include objprop.h.
11766
11767 (hook_print, scm_add_hook_x): Replace SCM_NFALSEP by !SCM_FALSEP.
11768
11769 (symbol_name, scm_make_hook_with_name): Removed.
11770
11771 (scm_create_hook): Don't set the hook's name property.
11772
11773 * hooks.h (HOOKSH, SCM_HOOKS_H): Renamed HOOKSH to SCM_HOOKS_H.
11774
11775 (SCM_HOOK_NAME, scm_make_hook_with_name): Removed.
11776
11777 * init.c (scm_init_guile_1): Hooks don't use objprops any more.
11778
11779 * numbers.c (SCM_FLOBUFLEN, FLOBUFLEN, scm_number_to_string,
11780 scm_print_real, scm_print_complex): Renamed SCM_FLOBUFLEN to
11781 FLOBUFLEN and define it unconditionally.
11782
11783 2001-05-07 Marius Vollmer <mvo@zagadka.ping.de>
11784
11785 * gh_data.c (gh_lookup): Call gh_module_lookup with
11786 `scm_current_module ()', not `#f'.
11787 (gh_module_lookup): Expect a module instead of an obarray as first
11788 argument and do lookup in that module.
11789
11790 * ramap.c (raeql_1): Do not call scm_uniform_vector_length on
11791 arrays. The length of array is already determined differently and
11792 scm_uniform_vector_length does not work on arrays.
11793
11794 2001-05-06 Marius Vollmer <mvo@zagadka.ping.de>
11795
11796 * snarf.h (SCM_FUNC_CAST_ARBITRARY_ARGS): Use "SCM (*)()" for C++
11797 as well. "SCM (*)(...)" does not work on RedHat 7.1.
11798
11799 * __scm.h (SCM_WTA_DISPATCH_0): Removed ARG and POS parameters,
11800 they are not used. Changed `wrong type' error into `wrong num
11801 args' error. Changed all callers.
11802
11803 * numbers.c (scm_difference): Call SCM_WTA_DISPATCH_0 when zero
11804 arguments are supplied.
11805
11806 2001-05-05 Thien-Thi Nguyen <ttn@revel.glug.org>
11807
11808 * regex-posix.c (scm_regexp_exec): Expand docstring to briefly
11809 describe `regexp/notbol' and `regexp/noteol' execution flags.
11810
11811 * strop.c (scm_substring_move_x): Doc fix; nfc.
11812
11813 2001-05-05 Marius Vollmer <mvo@zagadka.ping.de>
11814
11815 * objects.c, objects.h (scm_valid_object_procedure_p): New.
11816 (scm_set_object_procedure_x): Use it to check argument. Fix
11817 docstring.
11818
11819 * evalext.c (scm_definedp): Fix docstring.
11820
11821 2001-05-05 Gary Houston <ghouston@arglist.com>
11822
11823 * socket.c: use HAVE_IPV6 instead of AF_INET6 to enable IPv6
11824 support.
11825
11826 2001-05-04 Neil Jerram <neil@ossau.uklinux.net>
11827
11828 * eval.c (scm_promise_p), list.c (scm_append_x, scm_reverse_x),
11829 symbols.c (scm_symbol_to_string), vports.c (scm_make_soft_port):
11830 Change R4RS references to R5RS.
11831
11832 * guile-snarf.awk.in: Fixes so that (i) blank lines in the
11833 docstring source are correctly reproduced in the output (ii)
11834 we don't anymore get occasional trailing quotes. Also reorganized
11835 and commented the code a little.
11836
11837 * scmsigs.c (scm_raise), throw.c (scm_throw): Docstring format
11838 fixes.
11839
11840 2001-05-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11841
11842 * strop.c (scm_string_split): New procedure.
11843
11844 * strop.h (scm_string_split): Added prototype.
11845
11846 2001-05-04 Gary Houston <ghouston@arglist.com>
11847
11848 * socket.c: define uint32_t if netdb.h doesn't. thanks to
11849 Dale P. Smith.
11850
11851 2001-05-02 Marius Vollmer <mvo@zagadka.ping.de>
11852
11853 * rw.c: Include "modules.h" and "strports.h".
11854
11855 * net_db.h (scm_gethost): Added prototype.
11856
11857 * deprecation.h, deprecation.c: New.
11858 * Makefile.am (libguile_la_SOURCES): Added "deprecation.c".
11859 (DOT_X_FILES): Added "deprecation.x".
11860 (modinclude_HEADERS): Added "deprecation.h".
11861
11862 * init.c: Include "deprecation.h".
11863 (scm_init_guile_1): Call scm_init_deprecation.
11864
11865 2001-05-01 Marius Vollmer <mvo@zagadka.ping.de>
11866
11867 * gh.h (gh_init_guile, gh_make_string, gh_string_length,
11868 gh_string_ref, gh_string_set_x, gh_substring, gh_string_append):
11869 New.
11870
11871 2001-04-29 Gary Houston <ghouston@arglist.com>
11872
11873 * rw.c: new file, implementing C part of module (ice-9 rw).
11874 (scm_read_string_x_partial): moved from ioext.c
11875 (scm_init_rw): new proc.
11876 * rw.h: new file.
11877 init.c: include rw.h and call scm_init_rw.
11878 Makefile.am: include rw.c and rw.h.
11879
11880 2001-04-28 Rob Browning <rlb@cs.utexas.edu>
11881
11882 * numbers.c: enabled local definition of SCM_FLOBUFLEN until we
11883 know what's supposed to happen to it.
11884
11885 * list.h (scm_list_star): deprecation expired - removed.
11886
11887 * numbers.h (scm_dblproc): deprecation expired - removed.
11888 (SCM_UNEGFIXABLE): deprecation expired - removed.
11889 (SCM_FLOBUFLEN): deprecation expired - removed.
11890 (SCM_INEXP): deprecation expired - removed.
11891 (SCM_CPLXP): deprecation expired - removed.
11892 (SCM_REAL): deprecation expired - removed.
11893 (SCM_IMAG): deprecation expired - removed.
11894 (SCM_REALPART): deprecation expired - removed.
11895 (scm_makdbl): deprecation expired - removed.
11896 (SCM_SINGP): deprecation expired - removed.
11897 (SCM_NUM2DBL): deprecation expired - removed.
11898 (SCM_NO_BIGDIG): deprecation expired - removed.
11899
11900 * tags.h (SCM_DOUBLE_CELLP): deprecation expired - removed.
11901 (scm_tc_dblr): deprecation expired - removed.
11902 (scm_tc_dblc): deprecation expired - removed.
11903 (scm_tc16_flo): deprecation expired - removed.
11904 (scm_tc_flo): deprecation expired - removed.
11905
11906 * tag.h (scm_tag): deprecation expired - removed.
11907
11908 * tag.c: (scm_tag): deprecation expired - removed.
11909
11910 * ioext.c: (scm_fseek): deprecation expired - removed.
11911
11912 * ioext.h (scm_fseek): deprecation expired - removed.
11913
11914 * gh_data.c (gh_int2scmb): deprecation expired - removed.
11915
11916 * gh.h (gh_int2scmb): deprecation expired - removed.
11917
11918 2001-04-28 Neil Jerram <neil@ossau.uklinux.net>
11919
11920 * stacks.c (scm_make_stack): Fix typo in docstring.
11921
11922 2001-04-27 Rob Browning <rlb@cs.utexas.edu>
11923
11924 * error.c (scm_sysmissing): deprecation expired - removed.
11925
11926 * error.h (scm_sysmissing): deprecation expired - removed.
11927
11928 * gc.c
11929 (scm_init_gc): gc-thunk deprecation expired - removed.
11930 (scm_gc_vcell): deprecation expired - removed.
11931 (gc_async_thunk): scm_gc_vcell related code removed.
11932
11933 * vectors.h (SCM_NVECTORP): deprecation expired - removed.
11934
11935 * strings.h
11936 (SCM_NSTRINGP): deprecation expired - removed.
11937 (SCM_NRWSTRINGP): deprecation expired - removed.
11938
11939 * continuations.h (SCM_SETJMPBUF): deprecation expired - removed.
11940
11941 * chars.h
11942 (SCM_ICHRP): deprecation expired - removed.
11943 (SCM_ICHR): deprecation expired - removed.
11944 (SCM_MAKICHR): deprecation expired - removed.
11945
11946 * ports.h
11947 (SCM_INPORTP): deprecation expired - removed.
11948 (SCM_OUTPORTP): deprecation expired - removed.
11949
11950 2001-04-25 Marius Vollmer <mvo@zagadka.ping.de>
11951
11952 * modules.c (scm_module_type): New.
11953 (scm_post_boot_init_modules): Initialize from Scheme value.
11954 (the_module, scm_current_module, scm_init_modules): the_module is
11955 now a C only fluid.
11956 (scm_current_module): Export to Scheme.
11957 (scm_set_current_module): Do not call out to Scheme, do all the
11958 work in C. Export procedure to Scheme. Only accept modules, `#f'
11959 is no longer valid as the current module. Only set
11960 scm_top_level_lookup_closure_var and scm_system_transformer when
11961 they are not deprecated.
11962 (scm_module_transformer, scm_current_module_transformer): New.
11963
11964 * modules.h (scm_module_index_transformer, SCM_MODULE_TRANSFORMER,
11965 scm_current_module_transformer, scm_module_transformer): New.
11966
11967 * gh_data.c: Removed FIXME comment about gh_lookup returning
11968 SCM_UNDEFINED. That's the right thing to do.
11969
11970 * eval.h, eval.c (scm_system_transformer): Deprecated by moving it
11971 into the conditionally compiled sections.
11972 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Use
11973 scm_current_module_transformer instead of scm_system_transformer.
11974 * init.c (start_stack): Move initialization of
11975 scm_system_transformer to the deprecated section.
11976
11977 2001-04-22 Neil Jerram <neil@ossau.uklinux.net>
11978
11979 * throw.c (scm_throw): Correct docstring.
11980
11981 2001-04-22 Gary Houston <ghouston@arglist.com>
11982
11983 * socket.c: attempted to improve the docstrings slightly.
11984
11985 * net_db.c: remove bogus "close" declaration.
11986 (inet_aton declaration, scm_inet_aton, scm_inet_ntoa,
11987 scm_inet_netof, scm_lnaof, scm_inet_makeaddr, INADDR_ANY etc.):
11988 moved to socket.c.
11989 * net_db.h: declarations moved too.
11990
11991 * socket.c (scm_htonl, scm_ntohl): use uint32_t instead of unsigned
11992 long.
11993 (ipv6_net_to_num, ipv6_num_to_net): new static procedures.
11994 (VALIDATE_INET6): new macro.
11995 (scm_inet_pton, scm_inet_ntop): new procedures, implementing
11996 inet-pton and inet-ntop.
11997 (scm_fill_sockaddr): use VALIDATE_INET6 and ipv6_num_to_net.
11998 (scm_addr_vector): use ipv6_net_to_num.
11999
12000 2001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
12001
12002 * eq.c (scm_equal_p), ramap.c (scm_init_ramap): Don't compute the
12003 smob number explicitly. Use SCM_TC2SMOBNUM instead.
12004
12005 * gc.c (MARK, scm_gc_sweep): Only check for illegal heap objects
12006 when compiled in debug mode.
12007
12008 (scm_gc_sweep): Only call smob's free function if it is defined.
12009
12010 * print.c (scm_iprin1): No need to check for validity of smob
12011 type or existence of print function.
12012
12013 * smob.[ch] (scm_smobs): Made into a fixed size global array.
12014 Resizing will not work well with preemptive threading.
12015
12016 * smob.c (scm_smob_print): Don't use SCM_CDR to access smob data.
12017
12018 (scm_make_smob_type): Extracted initialization of smob
12019 descriptors to scm_smob_prehistory. Don't use scm_numsmob outside
12020 of the critical section.
12021
12022 (scm_smob_prehistory): Initialize all smob descriptors. By
12023 default, don't assign a smob free function: Most smob types don't
12024 need one.
12025
12026 * smob.h (SMOBH, SCM_SMOB_H): Renamed SMOBH to SCM_SMOB_H.
12027
12028 2001-04-21 Gary Houston <ghouston@arglist.com>
12029
12030 * socket.c (FLIP_NET_HOST_128): new macro.
12031 (scm_fill_sockaddr): use new macro.
12032 (scm_addr_vector): completed IPv6 address support. added const
12033 to the address parameter.
12034
12035 2001-04-20 Gary Houston <ghouston@arglist.com>
12036
12037 * socket.c (scm_fill_sockaddr): call htons for sin6_port.
12038 Don't assign sin6_scope_id in structure unless HAVE_SIN6_SCOPE_ID
12039 is defined.
12040 (scm_addr_vector): use a switch instead of multiple if statements.
12041 Add support for IPv6 (incomplete) .
12042 MAX_ADDR_SIZE: increase to size of struct sockaddr_in6 if needed.
12043
12044 2001-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
12045
12046 * struct.c (scm_free_structs): Only pairs may be accessed with
12047 SCM_C[AD]R.
12048
12049 2001-04-19 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12050
12051 * unif.h (SCM_ARRAY_CONTIGUOUS): Reintroduced as deprecated.
12052
12053 * __scm.h (SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
12054 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Inserted required
12055 parentheses in order to get the correct associativity.
12056
12057 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12058
12059 * unif.c (scm_array_to_list): Added missing handling of arrays of
12060 bytes. Thanks to Masao Uebayashi for the bug report.
12061
12062 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12063
12064 * debug.c (scm_procedure_source): Use SCM_CLOSURE_FORMALS more
12065 consistently.
12066
12067 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12068
12069 * procs.h (SCM_CLOSURE_FORMALS): New macro.
12070
12071 * debug.c (scm_procedure_source), eval.c (scm_badformalsp,
12072 SCM_CEVAL, SCM_APPLY), goops.c (get_slot_value, set_slot_value),
12073 procprop.c (scm_i_procedure_arity), sort.c (closureless): Use
12074 SCM_CLOSURE_FORMALS.
12075
12076 * eval.c (scm_badformalsp, SCM_CEVAL), procprop.c
12077 (scm_i_procedure_arity): Prefer stronger predicates like
12078 SCM_NULLP or SCM_FALSEP over SCM_IMP.
12079
12080 * macros.c (macro_print): Extracted macro printing code from
12081 print.c and simplified it.
12082
12083 (scm_macro_type): Use SCM_MACRO_TYPE;
12084
12085 (scm_init_macros): Use macro_print for printing macros.
12086
12087 * print.c (scm_print_opts): Improved option documentation.
12088
12089 (scm_iprin1): Extracted printing of macros to macros.c.
12090 Simplified printing of ordinary closures.
12091
12092 * procs.c (scm_thunk_p): Fixed handling of closures. Thanks to
12093 Martin Grabmueller for the bug report.
12094
12095 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12096
12097 This patch eliminates some further applications of SCM_C[AD]R to
12098 non pair cells.
12099
12100 * gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR): Deprecated. These have
12101 never been applied to real pairs.
12102
12103 * srcprop.h (SCM_SOURCE_PROPERTY_FLAG_BREAK): Added.
12104
12105 (SRCPROPBRK): Use SCM_SOURCE_PROPERTY_FLAG_BREAK.
12106
12107 * unif.h (SCM_ARRAY_CONTIGUOUS, SCM_ARRAY_FLAG_CONTIGUOUS,
12108 SCM_ARRAY_CONTP): Renamed SCM_ARRAY_CONTIGUOUS to
12109 SCM_ARRAY_FLAG_CONTIGUOUS and use it.
12110
12111 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
12112 Added.
12113
12114 * srcprop.h (SRCPROPH), unif.h (UNIFH): Renamed to
12115 SCM_SOURCE_PROPERTIES_H and SCM_UNIFORM_VECTORS_H, respectively.
12116
12117 * srcprop.h (SETSRCPROPBRK, CLEARSRCPROPBRK), unif.c
12118 (scm_dimensions_to_uniform_array, scm_ra_set_contp): Don't use
12119 SCM_SET{AND,OR}_CAR.
12120
12121 2001-04-17 Gary Houston <ghouston@arglist.com>
12122
12123 * some initial support for IPv6:
12124
12125 * socket.c (scm_fill_sockaddr): improve the argument validation.
12126 don't allocate memory until all args are checked. instead of
12127 unconditional memset of soka, try setting sin_len to 0 if
12128 SIN_LEN is defined. add support for AF_INET6. define FUNC_NAME.
12129 (scm_socket, scm_connect): extend docstrings for IPv6.
12130 (scm_init_socket): intern AF_INET6 and PF_INET6.
12131
12132 2001-04-17 Niibe Yutaka <gniibe@m17n.org>
12133
12134 * srcprop.c (scm_make_srcprops): Added SCM_ALLOW_INTS which
12135 matches SCM_DEFER_INTS at the beginning of the function.
12136
12137 * mallocs.c (scm_malloc_obj): Remove un-matched SCM_ALLOW_INTS.
12138
12139 * gc.c (scm_igc): Unconditionally call
12140 SCM_CRITICAL_SECTION_START/END.
12141
12142 * fluids.c (next_fluid_num): Unconditionally call
12143 SCM_CRITICAL_SECTION_START/END.
12144 (s_scm_make_fluid): Remove un-matched SCM_DEFER_INTS.
12145
12146 * coop-defs.h (SCM_THREAD_DEFER, SCM_THREAD_ALLOW,
12147 SCM_THREAD_REDEFER, SCM_THREAD_REALLOW_1, SCM_THREAD_REALLOW_2):
12148 Removed.
12149
12150 * __scm.h (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END):
12151 Defined as nothing for the case of !defined(USE_THREADS).
12152 (SCM_THREAD_DEFER, SCM_THREAD_ALLOW, SCM_THREAD_REDEFER):
12153 Removed.
12154 (<stdio.h>): Include when (SCM_DEBUG_INTERRUPTS == 1).
12155 (SCM_CHECK_NOT_DISABLED, SCM_CHECK_NOT_ENABLED): Print FILE and
12156 LINE.
12157 (SCM_DEFER_INTS, SCM_ALLOW_INTS_ONLY, SCM_ALLOW_INTS,
12158 SCM_REDEFER_INTS, SCM_REALLOW_INTS): Don't use
12159 SCM_THREAD_DEFER/SCM_THREAD_ALLOW. Instead, use
12160 SCM_CRITICAL_SECTION_START/END.
12161 (SCM_REALLOW_INTS: Bug fix. Don't call
12162 SCM_THREAD_SWITCHING_CODE.
12163 (SCM_TICK): Don't use SCM_DEFER_INTS/SCM_ALLOW_INTS. Instead, use
12164 SCM_THREAD_SWITCHING_CODE directly.
12165 (SCM_ENTER_A_SECTION): Unconditionally use
12166 SCM_CRITICAL_SECTION_START/END. (was:
12167 SCM_DEFER_INTS/SCM_ALLOW_INTS when SCM_POSIX_THREADS defined).
12168
12169 2001-04-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12170
12171 * __scm.h (SCM_CAREFUL_INTS, SCM_DEBUG_INTERRUPTS): Replaced the
12172 macro SCM_CAREFUL_INTS by the macro SCM_DEBUG_INTERRUPTS and
12173 allowed to explicitly set this macro via the CFLAGS variable
12174 during make.
12175
12176 * fluids.c (next_fluid_num), gc.c (scm_igc), coop-defs.h
12177 (SCM_THREAD_CRITICAL_SECTION_START,
12178 SCM_THREAD_CRITICAL_SECTION_END): Renamed
12179 SCM_THREAD_CRITICAL_SECTION_START/END to
12180 SCM_CRITICAL_SECTION_START/END.
12181
12182 2001-04-11 Keisuke Nishida <kxn30@po.cwru.edu>
12183
12184 * debug-malloc.c (grow, scm_debug_malloc_prehistory): Use memset
12185 instead of bzero.
12186
12187 * coop.c, iselect.c (FD_ZERO_N): Unconditionally use memset.
12188 (MISSING_BZERO_DECL): Remove the declaration.
12189
12190 Thanks to NIIBE Yutaka.
12191
12192 2001-04-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12193
12194 * init.c, goops.c, goops.h: Reverted change of 2001-03-29. (The
12195 goops module should be registered in order to work for an
12196 application which uses libguile statically linked.)
12197
12198 2001-04-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
12199
12200 * numbers.[ch] (scm_num2long, scm_num2long_long,
12201 scm_num2ulong_long, scm_num2ulong): Argument position is an
12202 unsigned integer.
12203
12204 * environments.c (eval_environment_folder,
12205 import_environment_folder), gh_data.c (gh_scm2longs,
12206 gh_scm2floats, gh_scm2doubles): Distinguish between 0 and NULL
12207 for integers and pointers, respectively.
12208
12209 * gh_data.c (gh_scm2ulong, gh_scm2long, gh_scm2int), socket.c
12210 (scm_fill_sockaddr), unif.c (scm_array_set_x), validate.h
12211 (SCM_NUM2ULONG, SCM_NUM2LONG, SCM_NUM2LONG_DEF,
12212 SCM_NUM2LONG_LONG): Don't pass argument positions as pointers.
12213
12214 * filesys.c (scm_open_fdes, scm_open), net_db (scm_inet_ntoa,
12215 scm_inet_netof, scm_lnaof, scm_gethost, scm_getproto), posix.c
12216 (scm_utime), ramap.c (scm_array_fill_int), scmsigs.c
12217 (scm_sigaction), socket.c (scm_htonl, scm_ntohl, scm_sendto),
12218 stime.c (scm_localtime, scm_gmtime), struct.c (scm_struct_set_x),
12219 validate.h (SCM_VALIDATE_LONG_COPY): Whitespace fixes.
12220
12221 2001-04-09 Neil Jerram <neil@ossau.uklinux.net>
12222
12223 * strings.c (scm_read_only_string_p): Update docstring to reflect
12224 current (non-)usage of "read only" strings.
12225 (scm_make_shared_substring): Clarify docstring by changing
12226 "semantics" to "arguments".
12227
12228 2001-04-06 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12229
12230 * hooks.c (scm_make_hook, scm_make_hook_with_name),
12231 (scm_hook_p, scm_hook_empty_p, scm_run_hook): Docstring
12232 improvements.
12233
12234 2001-04-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12235
12236 The following changes make the documentation more consistent.
12237
12238 * rdelim.c (scm_write_line), posix.c (scm_utime), ports.c
12239 (scm_seek), net_db.c (scm_inet_aton, scm_inet_ntoa),
12240 (scm_inet_netof, scm_lnaof, scm_inet_makeaddr), ioext.c
12241 (scm_ftell): Changed @smalllisp ... @end smalllisp to @lisp
12242 ... @end lisp.
12243
12244 * vports.c (scm_make_soft_port), version.c (scm_version), unif.c
12245 (scm_array_dimensions, scm_make_shared_array),
12246 (scm_transpose_array, scm_enclose_array, scm_bit_count_star),
12247 throw.c (scm_catch), struct.c (scm_make_vtable_vtable), strop.c
12248 (scm_string_rindex, scm_string_index, scm_substring_fill_x),
12249 (scm_string_null_p), strings.c (scm_read_only_string_p), root.c
12250 (scm_call_with_dynamic_root), ramap.c (scm_array_index_map_x),
12251 posix.c (scm_mknod), numbers.c (scm_logtest, scm_logbit_p),
12252 macros.c (scm_makmmacro), list.c (scm_append), environments.c
12253 (scm_environment_fold), dynwind.c (s_scm_dynamic_wind): Changed
12254 @example ... @end example to @lisp ... @end lisp.
12255
12256 * weaks.c (scm_weak_vector): Corrected docstring.
12257
12258 * hashtab.c (scm_hashq_ref, scm_hashq_set_x, scm_hashq_remove_x),
12259 (scm_hashv_ref, scm_hashv_set_x, scm_hashv_remove_x),
12260 (scm_hash_ref, scm_hash_set_x, scm_hash_remove_x, scm_hashx_ref),
12261 (scm_hashx_set_x, scm_hashx_get_handle),
12262 (scm_hashx_create_handle_x), regex-posix.c (scm_make_regexp),
12263 (scm_regexp_exec, scm_regexp_p), numbers.c (scm_logtest),
12264 vectors.c (scm_vector_fill_x), strings.c
12265 (scm_make_shared_substring), symbols.c (scm_string_to_symbol),
12266 objprop.c (scm_set_object_properties_x):
12267 (scm_set_object_property_x), throw.c (scm_catch, scm_lazy_catch),
12268 strports.c (scm_call_with_input_string), ports.c
12269 (scm_truncate_file), ioext.c (scm_ftell), ports.c (scm_seek),
12270 list.c (scm_append_x), dynwind.c (scm_dynamic_wind), error.c
12271 (scm_error_scm), vports.c (scm_make_soft_port), weaks.c
12272 (scm_make_weak_vector,scm_weak_vector_p),
12273 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table),
12274 (scm_make_doubly_weak_hash_table, scm_weak_key_hash_table_p),
12275 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
12276 macros.c (scm_macro_type), dynl.c (scm_dynamic_link),
12277 (scm_dynamic_unlink, scm_dynamic_call, scm_dynamic_args_call):
12278 Made parameter names match documentation by renaming parameters
12279 and/or fixing docstrings.
12280
12281 * numbers.c (scm_ash): Corrected Texinfo markup.
12282
12283 * strop.c (scm_string_index, scm_string_rindex),
12284 (scm_substring_fill_x, scm_string_null_p): Removed `qdocs'.
12285
12286 * vports.c (scm_make_soft_port), unif.c
12287 (scm_uniform_vector_length, scm_array_p, scm_array_rank),
12288 (scm_dimensions_to_uniform_array, scm_transpose_array),
12289 (scm_array_in_bounds_p, scm_uniform_vector_ref),
12290 (scm_bit_count, scm_bit_position, scm_bit_count_star),
12291 (scm_array_to_list, scm_list_to_uniform_array),
12292 (scm_array_prototype, symbols.c (scm_string_to_symbol), strports.c
12293 (scm_open_input_string, scm_open_output_string),
12294 (scm_get_output_string), strop.c (scm_string_copy),
12295 (scm_string_fill_x), strings.c (scm_string_p, scm_string), stime.c
12296 (scm_get_internal_real_time, scm_times),
12297 (scm_get_internal_run_time, scm_current_time, scm_gettimeofday),
12298 (scm_localtime, scm_gmtime), socket.c (scm_htons, scm_ntohs),
12299 (scm_htonl, scm_ntohl, scm_socket, scm_socketpair),
12300 (scm_getsockopt, scm_getsockname, scm_getpeername, scm_recvfrom),
12301 simpos.c (scm_system), random.c (scm_random_uniform),
12302 (scm_random_normal, scm_random_exp), ramap.c
12303 (scm_array_equal_p), posix.c (scm_pipe, scm_getgroups),
12304 (scm_status_exit_val, scm_status_term_sig, scm_status_stop_sig),
12305 (scm_getppid, scm_getuid, scm_getgid, scm_geteuid, scm_getegid),
12306 (scm_getpgrp, scm_ttyname, scm_ctermid, scm_tcgetpgrp, scm_uname),
12307 (scm_environ, scm_tmpnam, scm_mkstemp, scm_access, scm_getpid),
12308 (scm_setlocale), ports.c (scm_char_ready_p, scm_drain_input),
12309 (scm_pt_size, scm_pt_member, scm_port_revealed, scm_port_mode),
12310 (scm_close_port, scm_input_port_p, scm_output_port_p, scm_port_p),
12311 (scm_port_closed_p, scm_eof_object_p, scm_read_char),
12312 (scm_peek_char), pairs.c (scm_pair_p, scm_cons), numbers.c
12313 (scm_logand, scm_logior, scm_logxor, scm_lognot),
12314 (scm_integer_expt, scm_bit_extract, scm_logcount),
12315 (scm_integer_length, scm_string_to_number, scm_inexact_to_exact),
12316 net_db.c (scm_inet_netof, scm_lnaof), modules.c
12317 (scm_interaction_environment), macros.c (scm_makacro),
12318 (scm_makmacro, scm_makmmacro), keywords.c (scm_keyword_p), ioext.c
12319 (scm_ftell, scm_dup_to_fdes, scm_fileno, scm_isatty_p),
12320 (scm_fdopen, scm_fdes_to_ports), gc.c (scm_gc_stats), fluids.c
12321 (scm_fluid_ref), filesys.c (scm_open_fdes),
12322 (scm_stat, scm_directory_stream_p, scm_getcwd, scm_readlink):
12323 Docstring correction: `Returns' -> `Return'
12324
12325 * gc.c (scm_set_debug_cell_accesses_x):
12326 (s_scm_gc_set_debug_check_freelist_x):
12327 * fluids.c (scm_fluid_p): Added texinfo markup.
12328
12329 * error.c (scm_strerror): Made docstring more precise.
12330
12331 * vectors.c (scm_vector_p, scm_vector, scm_make_vector),
12332 (scm_vector_to_list, _scm_vector_fill_x), symbols.c
12333 (scm_symbol_p, scm_symbol_to_string), strorder.c
12334 (scm_string_equal_p, scm_string_ci_equal_p, scm_string_less_p),
12335 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p),
12336 (scm_string_ci_less_p, scm_string_ci_leq_p, scm_string_ci_gr_p):
12337 (scm_string_ci_geq_p), strop.c (scm_string_copy),
12338 (scm_string_fill_x): Removed `(r5rs)' from docstrings.
12339
12340 2001-04-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
12341
12342 * gc.c (MARK): Re-introduce a cheap sanity test for non debug
12343 mode, as suggested by Michael Livshin.
12344
12345 2001-03-31 Michael Livshin <mlivshin@bigfoot.com>
12346
12347 * backtrace.c (display_backtrace_body): since the `print_state'
12348 variable is not used (instead its data field is used directly as
12349 `pstate'), protect it from the hungry compiler optimizations.
12350 thanks to Bill Schottstaedt for the report.
12351
12352 2001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
12353
12354 * gc.[ch] (scm_tc16_allocated): New type tag for allocated cells.
12355 It is only defined and used if guile is compiled with
12356 SCM_DEBUG_CELL_ACCESSES set to true. It's purpose is, to never
12357 let cells with a free_cell type tag be visible outside of the
12358 garbage collector when in debug mode.
12359
12360 * gc.c (scm_debug_cell_accesses_p): Set to true as default.
12361
12362 (scm_assert_cell_valid): Use a local static variable to avoid
12363 recursion.
12364
12365 (MARK): Only check for rogue cell pointers in debug mode. Use
12366 scm_cellp for this purpose and place all checks for rogue pointers
12367 into that function. Further, since due to conservative scanning
12368 we may encounter free cells during marking, don't use the standard
12369 cell type accessor macro to determine the cell type.
12370
12371 (scm_cellp): Check if the cell pointer actually points into a
12372 card header.
12373
12374 (scm_init_gc): Initalize scm_tc16_allocated.
12375
12376 * gc.h (GCH): Renamed to SCM_GC_H.
12377
12378 (SCM_VALIDATE_CELL): Enclose the expression in brackets. This
12379 might be unnecessary, but I feel better this way :-)
12380
12381 (SCM_GC_CELL_TYPE): New macro.
12382
12383 (SCM_SETAND_CDR, SCM_SETOR_CDR): Deprecated. These are not used
12384 in guile, and it is unlikely that they will be applied to real
12385 pairs anyway.
12386
12387 (SCM_SET_FREE_CELL_TYPE): Removed. It was not used.
12388
12389 (SCM_GC_SET_ALLOCATED): New macro. Only non-empty if guile is
12390 compiled with SCM_DEBUG_CELL_ACCESSES set to true.
12391
12392 (SCM_NEWCELL, SCM_NEWCELL2): Use of SCM_GC_SET_ALLOCATED will
12393 make sure that in debug mode no free cell will ever be visible
12394 outside of the garbage collector.
12395
12396 2001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
12397
12398 * async.c (scm_asyncs_pending): Don't use != to compare SCM
12399 values.
12400
12401 * async.c (scm_system_async), variable.c (scm_make_variable,
12402 scm_make_undefined_variable): Use scm_cons to create a pair.
12403
12404 * debug.c (scm_reverse_lookup): Perform proper type checking.
12405 Remove suspicious use of SCM_SLOPPY_CONSP.
12406
12407 * eq.c (scm_equal_p), tags.h (SCM_ECONSP): Use SCM_CONSP instead
12408 of SCM_SLOPPY_CONSP. A sane compiler should be able to perform
12409 the corresponding optimization.
12410
12411 * eval.c (iqq): Use proper type check.
12412
12413 (scm_m_expand_body): Remove redundant type checks.
12414
12415 (promise_print): Don't access promise cells as pairs.
12416
12417 * eval.c (EVALCAR, iqq, scm_m_expand_body, scm_eval_args,
12418 scm_deval_args SCM_CEVAL), guardians.c (scm_guard), hashtab.c
12419 (scm_internal_hash_fold), print.c (scm_iprlist): Use !SCM_CELLP
12420 for SCM_NCELLP, !SCM_CONSP for SCM_NCONSP, !SCM_IMP for SCM_NIMP,
12421 !SCM_FALSEP for SCM_NFALSEP, !SCM_NULLP for SCM_NNULLP
12422
12423 * eval.c (scm_m_define, scm_macroexp, SCM_CEVAL), print.c
12424 (scm_iprin1): Use new macro predicate and accessors.
12425
12426 * eval.h (scm_tc16_macro): Removed declaration. It is declared
12427 in macros.h.
12428
12429 * eval.h (EVALH), macros.h (MACROSH), ports.h (PORTSH), procs.h
12430 (PROCSH), tags.h (TAGSH), variable.h (VARIABLEH): Renamed to
12431 SCM_EVAL_H, SCM_MACROS_H, SCM_PORTS_H, SCM_PROCS_H, SCM_TAGS_H and
12432 SCM_VARIABLE_H. Even the macros that are used to inhibit
12433 including a header file twice should be in the SCM_ namespace.
12434
12435 * fluids.c (scm_swap_fluids, scm_swap_fluids_reverse),
12436 properties.c (scm_primitive_property_ref,
12437 scm_primitive_property_del_x): Prefer stronger predicates like
12438 SCM_NULLP or SCM_FALSEP over SCM_IMP.
12439
12440 * gc.c (MARK): Use proper macros to access procedure-with-setter
12441 cell elements and closure cell elements.
12442
12443 (gc_sweep_freelist_finish, scm_gc_sweep, init_heap_seg): Don't
12444 access free cells as pairs.
12445
12446 (scm_unprotect_object): scm_hashq_get_handle returns #f if
12447 no hashtab entry is found.
12448
12449 * gc.c (scm_gc_sweep), ports.c (scm_close_port): Use new macro
12450 SCM_CLR_PORT_OPEN_FLAG.
12451
12452 * guardians.c (TCONC_IN), print.c (scm_free_print_state): Don't
12453 use SCM_SET_C[AD]R for uninitialized cells.
12454
12455 * hashtab.c (scm_hash_fn_get_handle): Use SCM_VALIDATE_VECTOR.
12456 If the hashtable has no slots, return #f instead of '(). This
12457 unifies the return value with most assoc-functions.
12458
12459 (scm_hash_fn_ref): Use proper type check.
12460
12461 (scm_hashq_get_handle, scm_hashv_get_handle, scm_hash_get_handle):
12462 Removed references to non-existing functions from documentation.
12463
12464 * keywords.c (scm_keyword_dash_symbol): Use proper macros to
12465 access keyword cell elements.
12466
12467 * macros.h (SCM_MACROP, SCM_MACRO_TYPE, SCM_MACRO_CODE): New
12468 macros.
12469
12470 * ports.h (SCM_CLR_PORT_OPEN_FLAG): New macro.
12471
12472 * print.c (scm_iprlist): Added comment. Improved loop
12473 conditions.
12474
12475 * procs.h (SCM_ENV, SCM_SETENV): Don't access closure cells as
12476 pairs.
12477
12478 * smob.c (scm_markcdr): Don't access smob cells as pairs.
12479
12480 * tags.h (SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP): Deprecated.
12481
12482 * throw.c (ACTIVATEJB, DEACTIVATEJB): Don't access jump buffer
12483 cells as pairs.
12484
12485 * variable.c (variable_print, variable_equalp, scm_variable_ref,
12486 scm_variable_set_x): Use proper macros to access variable cell
12487 elements.
12488
12489 (scm_variable_bound_p): Don't use SCM_NEGATE_BOOL.
12490
12491 * variable.h (SCM_VARVCELL): Don't access variable cells as
12492 pairs.
12493
12494 * vectors.c (scm_vector), weaks.c (scm_weak_vector): Simplified,
12495 added FIXME comment, removed register specifier.
12496
12497 2001-03-29 Keisuke Nishida <kxn30@po.cwru.edu>
12498
12499 * goops.c, goops.h (scm_init_oop_goops_goopscore_module): Deprecated.
12500 * init.c (scm_init_guile_1): Don't init goopscore module.
12501
12502 2001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
12503
12504 * eval.c (SCM_APPLY): Check that arg1 is bound for scm_tc7_cxr.
12505
12506 2001-03-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12507
12508 * strop.c (scm_string_to_list): Fixed docstring markup.
12509 (scm_string_upcase_x, scm_string_upcase, scm_string_downcase_x),
12510 (scm_string_downcase, scm_string_capitalize_x),
12511 (scm_string_capitalize): Rewrote and corrected docstrings.
12512 (scm_string_ci_to_symbol): Made docstring more explicit.
12513
12514 2001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
12515
12516 * values.h (scm_values_vtable, SCM_VALUESP): Moved here so that
12517 eval.c can use it.
12518 (scm_call_with_values): Removed.
12519 * values.c (values_vtable, scm_values_vtable): Added "scm_" prefix
12520 so that it can be exported.
12521 (scm_call_with_values): Removed.
12522
12523 * tags.h (SCM_IM_CALL_WITH_VALUES): New isym.
12524 * eval.c: Include "libguile/values.h"
12525 (scm_m_at_call_with_values, scm_sym_at_call_with_values):
12526 New.
12527 (unmemocopy, scm_ceval, scm_deval): Handle new isym.
12528 * eval.h (scm_sym_at_call_with_values, scm_m_at_call_with_values):
12529 New delcarations to support above change.
12530
12531 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Fix syntax
12532 errors with last change.
12533
12534 2001-03-25 Marius Vollmer <mvo@zagadka.ping.de>
12535
12536 * eval.c (scm_primitive_eval_x, scm_primitive_eval, scm_i_eval_x,
12537 scm_i_eval): Moved the application of the system transformer from
12538 scm_i_eval to scm_primitive_eval.
12539
12540 2001-03-23 Neil Jerram <neil@ossau.uklinux.net>
12541
12542 * guile-snarf.awk.in: Substitute "\\" with "\" in .doc output.
12543
12544 * strop.c (scm_string_index): Fix docstring line break
12545 regression.
12546
12547 * list.c (scm_cons_star): Fix docstring typo.
12548
12549 2001-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
12550
12551 * gc.c (scm_init_storage), gdbint.c (scm_init_gdbint), numbers.c
12552 (big2str), ports.c (scm_drain_input), read.c (scm_read,
12553 scm_grow_tok_buf), strings.c (scm_string, scm_makfromstr,
12554 scm_make_string, scm_string_append), strports.c (st_resize_port,
12555 scm_object_to_string), unif.c (scm_make_uve): Replace calls to
12556 scm_makstr with calls to scm_allocate_string.
12557
12558 * strings.[ch] (scm_allocate_string): New function.
12559
12560 * strings.[ch] (scm_makstr): Deprecated.
12561
12562 2001-03-18 Gary Houston <ghouston@arglist.com>
12563
12564 * posix.c (scm_tmpnam): check that return value from tmpnam is not
12565 NULL. rewrote the docstring.
12566 (scm_mkstemp): new procedure implementing "mkstemp!".
12567 * posix.h: declare scm_mkstemp.
12568
12569 * net_db.c: declare h_errno if configure didn't define HAVE_H_ERRNO.
12570 normally it would be found in netdb.h.
12571
12572 2001-03-17 Gary Houston <ghouston@arglist.com>
12573
12574 * sort.c (scm_sort): move sortvec variable to avoid a compiler
12575 warning when HAVE_ARRAYS is not defined. move len too.
12576
12577 * Makefile.am (DOT_X_FILES): remove net_db.x, posix.x, socket.x.
12578 (EXTRA_DOT_X_FILES): let configure set the value.
12579 (DOT_DOC_FILES): remove net_db.doc, posix.doc, socket.doc.
12580
12581 * gc.c (scm_must_malloc): changed the comment explaining when
12582 scm_must variants of malloc/free etc., should be used, based on
12583 explanation from Dirk Herrmann.
12584 * fports.c (scm_fport_buffer_add): use FUNC_NAME instead of a local
12585 string with procedure name. use scm_must_malloc instead of malloc.
12586 (scm_setvbuf, scm_fdes_to_port, fport_close): use scm_must variants
12587 of malloc/free.
12588 * ports.c (scm_add_to_port_table, scm_remove_from_port_table,
12589 scm_ungetc): use scm_must variants of malloc/realloc/free.
12590 (scm_add_to_port_table, scm_ungetc): define FUNC_NAME.
12591
12592 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12593
12594 * __scm.h (SCM_ASSERT, SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
12595 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Don't call scm_wta, call
12596 scm_wrong_type_arg instead.
12597
12598 (SCM_WNA): Deprecated.
12599
12600 * error.[ch] (scm_wta): Deprecated.
12601
12602 * numbers.c (s_i_log): Minor comment fix.
12603
12604 * read.c (scm_lreadr), unif.c (scm_aind, scm_shap2ra,
12605 scm_make_shared_array, scm_transpose_array, scm_enclose_array,
12606 scm_array_in_bounds_p): Don't use SCM_ASSERT to check for
12607 wrong-num-args or misc errors.
12608
12609 * unif.c (scm_make_shared_array, scm_transpose_array,
12610 scm_enclose_array, scm_array_in_bounds_p, scm_array_set_x):
12611 Validate the rest argument (note: this is only done when guile is
12612 built with SCM_DEBUG_REST_ARGUMENT=1)
12613
12614 (scm_array_in_bounds_p, scm_uniform_vector_ref, scm_array_set_x):
12615 Replace calls to scm_wrong_num_args by SCM_WRONG_NUM_ARGS.
12616
12617 * validate.h (SCM_FUNC_NAME, SCM_VALIDATE_NUMBER_COPY,
12618 SCM_VALIDATE_NUMBER_DEF_COPY): Deprecated.
12619
12620 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12621
12622 * validate.h (SCM_WRONG_NUM_ARGS): Call scm_error_num_args_subr
12623 instead of scm_wrong_num_args.
12624
12625 * coop-threads.c: Don't include libguile/strings.h. (Was only
12626 needed for former implementation of SCM_WRONG_NUM_ARGS.)
12627
12628 * debug.c (scm_m_start_stack): Don't use SCM_ASSERT to check for
12629 wrong-num-args errors.
12630
12631 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12632
12633 * error.[ch] (scm_error_num_args_subr): New function.
12634
12635 2001-03-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12636
12637 * list.c (scm_list, scm_cons_star, scm_null_p, scm_list_p),
12638 (scm_length, scm_append, scm_reverse, scm_list_ref),
12639 (scm_memq, scm_memv, scm_member, scm_delv_x, scm_delete_x),
12640 (scm_delq, scm_delv, scm_delete, scm_delq1_x, scm_delv1_x),
12641 (scm_delete1_x), gc.c (scm_map_free_list),
12642 (scm_free_list_length), hash.c (scm_hashq, scm_hashv),
12643 (scm_hash), hashtab.c (scm_hashq_ref, scm_hashq_set_x),
12644 (scm_hashq_remove_x, scm_hashv_ref, scm_hashv_set_x),
12645 (scm_hashv_remove_x, scm_hash_ref, scm_hash_set_x),
12646 (scm_hash_remove_x), ports.c (scm_pt_size, scm_pt_member), print.c
12647 (scm_current_pstate), scmsigs.c (scm_usleep), goops.c
12648 (scm_get_keyword, scm_sys_compute_slots): Added texinfo markup.
12649
12650 * weaks.c (scm_weak_vector_p, scm_weak_key_hash_table_p),
12651 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
12652 rdelim.c (scm_read_delimited_x), strop.c (scm_string_index),
12653 symbols.c (scm_symbol_interned_p), numbers.c
12654 (scm_string_to_number), ports.c (scm_port_p): Corrected texinfo
12655 markup.
12656
12657 2001-03-16 Keisuke Nishida <kxn30@po.cwru.edu>
12658
12659 * snarf.h (SCM_CONST_LONG): Deprecated.
12660 * tag.c (CONST_INUM): New macro. Use it to define scm_utag_*.
12661
12662 2001-03-15 Marius Vollmer <marius.vollmer@uni-dortmund.de>
12663
12664 * numbers.c (scm_num2ulong): Check that a bignum is positive
12665 before looking at the magnitude. Correctly check for overflow
12666 during conversion.
12667 (scm_num2long_long): Likewise.
12668 (scm_num2ulong_long): New.
12669 (ULONG_LONG_MAX): Define if not already defined.
12670 * numbers.h: (scm_num2ulong_long): New prototype.
12671
12672 2001-03-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12673
12674 * validate.h (SCM_VALIDATE_OPOUTSTRPORT): New macro.
12675
12676 * strports.h (SCM_STRPORTP, SCM_OPSTRPORTP, SCM_OPINSTRPORTP),
12677 (SCM_OPOUTSTRPORTP): New predicate macros.
12678 (scm_open_input_string, scm_open_output_string),
12679 (scm_get_output_string): New prototypes.
12680
12681 * strports.c (scm_open_input_string, scm_open_output_string),
12682 (scm_get_output_string): New procedures (SRFI-6 compliant).
12683 Made scm_tc16_strport non-static.
12684
12685 2001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
12686
12687 * macros.h (SCM_ASSYNT): Removed unused object argument from
12688 signature.
12689
12690 * eval.c (scm_m_body, scm_m_quote, scm_m_begin, scm_m_if,
12691 scm_m_set_x, scm_m_and, scm_m_or, scm_m_case, scm_m_cond,
12692 scm_m_letstar, scm_m_do, scm_m_quasiquote, scm_m_delay,
12693 scm_m_define, scm_m_letrec1, scm_m_letrec, scm_m_let, scm_m_apply,
12694 scm_m_cont, scm_m_nil_cond, scm_m_nil_ify, scm_m_t_ify,
12695 scm_m_0_cond, scm_m_0_ify, scm_m_1_ify, scm_m_atfop, scm_m_atbind,
12696 scm_m_expand_body), evalext.c (scm_m_generalized_set_x,
12697 scm_m_undefine), goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
12698 scm_m_atdispatch): Removed unused object argument from call to
12699 SCM_ASSYNT.
12700
12701 2001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
12702
12703 * gh.h/gh_data.c (gh_ints2scm): Changed the signature to use a
12704 const int* to reflect that the input array of integers remains
12705 unchanged. Thanks to Brett Viren for the hint.
12706
12707 2001-03-14 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12708
12709 * gh_data.c (gh_scm2chars, gh_scm2shorts, gh_scm2longs),
12710 (gh_scm2floats, gh_scm2doubles): Check for malloc() returning NULL
12711 in various places.
12712 (gh_scm2newstr, gh_symbol2newstr): Change call to
12713 scm_must_malloc() to malloc(), because user-free()able memory is
12714 allocated.
12715
12716 * gc.c: Added declaration of `scm_debug_check_freelist'.
12717
12718 2001-03-13 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12719
12720 * ports.c (scm_port_mode): Changed `mode' array size to 4.
12721
12722 2001-03-12 Keisuke Nishida <kxn30@po.cwru.edu>
12723
12724 * strports.c (scm_object_to_string): New procedure.
12725 (scm_strprint_obj): Deprecated.
12726 * strports.h: Reflect the changes.
12727
12728 2001-03-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
12729
12730 * goops.h (SCM_VALIDATE_PUREGENERIC): New macro.
12731
12732 * goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
12733 scm_m_atdispatch): Provide definitions for FUNC_NAME. Don't use
12734 SCM_ASSYNT to check for correct argument types. Either use some
12735 SCM_VALIDATE_* macro or an explicit test.
12736
12737 (scm_make_foreign_object): Don't use SCM_ASSERT to check for
12738 misc-errors.
12739
12740 * macros.h (SCM_ASSYNT): On assertion failure, issue a misc-error
12741 instead of calling scm_wta.
12742
12743 2001-03-12 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12744
12745 * load.c (scm_primitive_load, scm_primitive_load_path),
12746 (scm_sys_search_load_path): Corrected docstrings (file ->
12747 filename).
12748
12749 * eval.c (scm_force): Added texinfo markup to docstring.
12750 (scm_promise_p): Renamed parameter to `obj' to match docstring.
12751
12752 * debug-malloc.c: Reinserted #include <stdio.h>.
12753
12754 2001-03-11 Keisuke Nishida <kxn30@po.cwru.edu>
12755
12756 * list.c (s_scm_reverse_x): Use SCM_VALIDATE_LIST.
12757
12758 * environments.c, error.c, eval.c, filesys.c, hashtab.c, load.c,
12759 net_db.c, procprop.c, read.c, scmsigs.c, socket.c, struct.c:
12760 Use SCM_LISTn instead of scm_listify.
12761
12762 2001-03-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12763
12764 * _scm.h: Removed #include <errno.h>.
12765
12766 * error.c, net_db.c, putenv.c, stime.c: Removed declaration of
12767 errno variable (can be a macro on some systems, for example when
12768 using linux libc with threads).
12769
12770 * error.c, filesys.c, gc.c, ioext.c, iselect.c, net_db.c, ports.c,
12771 posix.c, print.c, putenv.c, scmsigs.c, script.c, simpos.c, smob.c,
12772 socket.c, srcprop.c, stime.c, strop.c, unif.c, vports.c: Added
12773 #include <errno.h> in these 20 out of 100 files.
12774
12775 2001-03-10 Gary Houston <ghouston@arglist.com>
12776
12777 * socket.c: add a definition of SUN_LEN (from glibc) for when it's
12778 not already defined.
12779
12780 2001-03-09 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12781
12782 * coop.c: Inserted #include <stdio.h>.
12783
12784 * iselect.c: Reinserted #include <stdio.h>.
12785
12786 2001-03-10 Marius Vollmer <mvo@zagadka.ping.de>
12787
12788 * posix.c: Replaced `#define' of __USE_XOPEN right before
12789 including unistd.h with a define of _GNU_SOURCE at the very top of
12790 the file.
12791
12792 2001-03-09 Keisuke Nishida <kxn30@po.cwru.edu>
12793
12794 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
12795 continuations.c, debug-malloc.c, debug.c, dynwind.c, eq.c, eval.c,
12796 feature.c, filesys.h, gc_os_dep.c, gh_data.c, gh_eval.c,
12797 gh_funcs.c, gh_io.c, gh_list.c, gh_predicates.c, hash.c,
12798 hashtab.c, iselect.c, keywords.c, list.c, load.c, mallocs.c,
12799 net_db.c, numbers.c, objprop.c, objprop.h, options.c, pairs.c,
12800 print.c, procprop.c, procs.c, properties.c, ramap.c,
12801 regex-posix.c, root.c, scmsigs.c, simpos.c, socket.c, srcprop.c,
12802 stackchk.c, stacks.c, strings.c, strop.c, strorder.c, struct.c,
12803 symbols.c, tag.c, threads.c, variable.c, vectors.c, weaks.c:
12804 Remove #include <stdio.h>
12805 * gc.c, gdbint.c, root.c, sort.c, unif.c: Add #include <string.h>.
12806
12807 * procs.c (scm_make_subr_opt): Init symcell to avoid warning.
12808
12809 2001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12810
12811 * posix.c (scm_gethostname): Set initial name length to 256 for
12812 Solaris.
12813
12814 2001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12815
12816 * posix.h (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
12817 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
12818 (scm_sethostname, scm_gethostname): New prototypes.
12819
12820 * posix.c: Added inclusion of <crypt.h>, <sys/resource.h> and
12821 <sys/file.h>, if present.
12822 (scm_init_posix): [PRIO_PROCESS, PRIO_PGRP, PRIO_USER, LOCK_SH,
12823 LOCK_EX, LOCK_UN, LOCK_NB]: New variables.
12824 (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
12825 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
12826 (scm_sethostname, scm_gethostname): New procedures.
12827
12828 2001-03-08 Neil Jerram <neil@ossau.uklinux.net>
12829
12830 * ports.c (scm_port_column): Docstring fixes: (i) port-line arg is
12831 not optional (ii) "recommend" spelling correction.
12832
12833 2001-03-08 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12834
12835 * ramap.c (racp): Removed optimization which caused array copying
12836 to fail if the two arrays shared storage. Re-inserted the IVDEP
12837 macros removed in the change of 2000-03-09. (Don't really have a
12838 complete grasp of what they are for, but they seem to be necessary
12839 on Crays. This needs testing!) Thanks to Miroslav Silovic.
12840
12841 * hash.c (scm_string_hash): Don't downcase characters.
12842
12843 2001-03-07 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12844
12845 * symbols.c (scm_symbols_prehistory): Changed symbol hash table
12846 size from 277 --> 1009.
12847
12848 * symbols.c, symbols.h (scm_sys_symbols): New function GUILE_DEBUG
12849 function.
12850
12851 * coop-threads.c: Fixed change of 2001-03-06.
12852
12853 * validate.h: Code formatting.
12854
12855 2001-03-07 Keisuke Nishida <kxn30@po.cwru.edu>
12856
12857 * Makefile.am (*.x): Add dependency on snarf.h and guile-doc-snarf.in.
12858 (*.doc): Add dependency on guile-snarf.awk.in.
12859
12860 * guile-snarf.awk.in: Neglect spaces at the end of
12861 SCM_SNARF_DOCSTRING_END. Skip lines "# NN ..." in the
12862 middle of docstrings. (To avoid the problem with gcc-2.96.)
12863
12864 2001-03-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
12865
12866 * coop-threads.c (scm_call_with_new_thread), load.c
12867 (scm_primitive_load, scm_sys_search_load_path), random.c
12868 (scm_c_default_rstate), struct.c (scm_make_struct_layout,
12869 scm_struct_ref, scm_struct_set_x): Don't use SCM_ASSERT to
12870 (potentially) issue a scm-misc-error or wrong-num-args error
12871 message.
12872
12873 * load.c (scm_search_path): Use SCM_ASSERT_TYPE to give details
12874 about the expected type with the wrong-type-arg error message.
12875
12876 * smob.c (scm_make_smob): Abort on misuse of smob - it indicates
12877 a C level bug that can't be fixed from scheme anyway.
12878
12879 2001-03-05 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12880
12881 * eval.c (scm_m_letstar): Removed check for duplicate bindings.
12882 Duplicate bindings are OK in a let* since a let* is semantically
12883 equivalent to a nested set of let:s.
12884
12885 2001-03-05 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12886
12887 * print.c (scm_print_options): Fixed texinfo in docstring.
12888
12889 * net_db.c (scm_getserv, scm_getproto, scm_getnet): Return #f if
12890 the underlying functions getservent, getprotoent or getnetent
12891 return NULL instead of signalling an error.
12892
12893 2001-03-04 Gary Houston <ghouston@arglist.com>
12894
12895 * socket.c (scm_fill_sockaddr): don't allow buffer overflows when
12896 taking an unexpectedly large filename for an AF_UNIX socket from
12897 bind/connect/sendto (thanks to Martin Grabmueller).
12898
12899 * socket.c (scm_sock_fd_to_port, SCM_SOCK_FD_TO_PORT): removed the
12900 former and adjusted the latter.
12901 (scm_socket, scm_socketpair): cosmetic changes.
12902 (scm_getsockopt, scm_setsockopt): declare optlen as int, not
12903 size_t as socklen_t substitute. don't restrict args/return values
12904 to INUM: allow full range of int or size_t.
12905 (scm_fill_sockaddr): check arguments before allocating memory, to
12906 avoid leakage. use malloc, not scm_must_malloc.
12907 (scm_connect, scm_bind, scm_sendto): use int, not size_t as socklen_t
12908 substitute. free the sockaddr structure before throwing an error.
12909 (scm_init_add_buffer): procedure removed, together with its static
12910 buffer scm_addr_buffer, which wouldn't be thread safe. instead,
12911 define a macro MAX_ADDR_SIZE and declare the buffer where needed.
12912 (scm_accept, scm_getpeername, scm_getsockname, scm_recvfrom,
12913 scm_sendto): use a local buffer instead of scm_addr_buffer.
12914 adjust for new SCM_SOCK_FD_TO_PORT. use int for address size,
12915 not size_t.
12916 (scm_recvfrom): set addr->sa_family to AF_UNSPEC before the recvfrom
12917 call to detect whether recvfrom could be bothered to set the address.
12918 (scm_init_socket): don't call scm_init_addr_buffer.
12919
12920 2001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
12921
12922 * debug.c (scm_procedure_source, scm_procedure_environment),
12923 print.c (scm_get_print_state), ramap.c (scm_array_fill_int,
12924 scm_array_index_map_x), sort.c (scm_sort_x, scm_sort,
12925 scm_stable_sort_x, scm_stable_sort), stacks.c (scm_make_stack,
12926 scm_last_stack_frame), symbols.c (scm_sym2vcell, scm_sym2ovcell),
12927 unif.c (scm_list_to_uniform_array, scm_uniform_vector_length,
12928 scm_transpose_array, scm_enclose_array, scm_array_in_bounds_p,
12929 scm_uniform_vector_ref, scm_array_set_x, scm_uniform_array_read_x,
12930 scm_uniform_array_write, scm_bit_set_star_x, scm_bit_count_star,
12931 scm_array_to_list, scm_array_prototype), validate.h
12932 (SCM_VALIDATE_NUMBER_COPY): Don't call function scm_wta, call
12933 scm_misc_error or scm_wrong_type_arg instead.
12934
12935 * validate.h (SCM_WTA, RETURN_SCM_WTA): Deprecated.
12936
12937 2001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12938
12939 * goops.c, goops.h (scm_sys_pre_expand_closure_x): Removed.
12940 (scm_sys_tag_body): Added.
12941
12942 2001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
12943
12944 * continuations.c (continuation_apply), eval.c (scm_m_lambda,
12945 scm_m_letstar, scm_m_letrec1, scm_m_let, SCM_APPLY), eval.h
12946 (SCM_EVALIM2), evalext.c (scm_m_generalized_set_x), gc.c
12947 (get_bvec, MARK), goops.c (scm_primitive_generic_generic),
12948 options.c (scm_options), ports.c (scm_remove_from_port_table),
12949 ramap.c (scm_ramapc), read.c (skip_scsh_block_comment, scm_lreadr,
12950 scm_lreadparen, scm_lreadrecparen), script.c (script_get_octal,
12951 script_get_backslash, script_read_arg), unif.c (scm_cvref): Don't
12952 call function scm_wta, call scm_misc_error or scm_wrong_type_arg
12953 instead.
12954
12955 2001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12956
12957 * goops.c (scm_sys_pre_expand_closure_x): New procedure.
12958
12959 2001-03-04 Marius Vollmer <mvo@zagadka.ping.de>
12960
12961 * eval.c (scm_s_duplicate_bindings): New error message.
12962 (scm_m_letrec1, scm_m_letstar): Check for duplicate bindings.
12963
12964 2001-03-03 Marius Vollmer <mvo@zagadka.ping.de>
12965
12966 * eval.h (SCM_EVALIM2): New macro. Use it when a
12967 immediate, literal constant should be evaluated.
12968 * eval.c (scm_s_duplicate_formals): New error message string.
12969 (scm_c_improper_memq): New function.
12970 (scm_m_lambda): Check for duplicate arguments.
12971 (scm_ceval, scm_deval): When executing a body: only cons a new
12972 toplevel environment frame when it is different from the
12973 existing one; use EVALCAR instead of SIDEVAL so that we can properly
12974 check for empty combinations; use SCM_EVALIM2 for the same reason
12975 in the non-toplevel loop.
12976 (nontoplevel_cdrxnoap, nontoplevel_cdrxbegin, nontoplevel_begin):
12977 New labels with the meaning of their non-"nontoplevel" partners,
12978 but they are used when it is known that the body is not evaluated at
12979 top-level.
12980 (scm_apply, scm_dapply): use SCM_EVALIM2 to get proper error
12981 reporting for empty combinations.
12982
12983 2001-03-02 Keisuke Nishida <kxn30@po.cwru.edu>
12984
12985 * Remove dump facilities.
12986 * dump.c, dump.h: Removed.
12987 * Makefile.am: Remove dump.c, dump.h, dump.x, dump.doc.
12988 * init.c: Remove #include "libguile/dump.h".
12989 (scm_init_guile_1): Remove scm_init_dump.
12990 * smob.h (scm_smob_descriptor): Remove slots: dump, undump.
12991 (scm_set_smob_dump, scm_set_smob_undump): Remove declaration.
12992 * smob.c (scm_make_smob_type): Remove initialization: dump, undump.
12993 (scm_set_smob_dump, scm_set_smob_undump): Removed.
12994
12995 * keywords.c: Remove #include "libguile/dump.h".
12996 (keyword_dump, keyword_undump): Removed.
12997 (scm_init_keywords): Remove scm_set_smob_dump and scm_set_smob_undump.
12998
12999 2001-03-02 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13000
13001 * vectors.c (s_scm_vector_p, list->vector, scm_vector)
13002 (scm_vector_ref, scm_vector_set_x, scm_vector_to_list)
13003 (scm_vector_fill_x), strorder.c (scm_string_equal_p)
13004 (scm_string_ci_equal_p, scm_string_less_p, scm_string_leq_p)
13005 (scm_string_gr_p, scm_string_geq_p, scm_string_ci_less_p)
13006 (scm_string_ci_geq_p), symbols.c (scm_symbol_p)
13007 (scm_symbol_to_string, scm_string_to_symbol): Changed use of @t{}
13008 to @code{} as the texinfo manual recommends, converted the
13009 examples to use a @lisp{}-environment.
13010
13011 * strports.c (scm_eval_string): Cleaned up the docstring.
13012
13013 * struct.c (scm_struct_p, scm_struct_vtable_p): Added texinfo
13014 markup.
13015
13016 * numbers.c (scm_exact_p, scm_odd_p, scm_even_p)
13017 (scm_number_to_string, scm_string_to_number, scm_number_p)
13018 (scm_real_p, scm_integer_p, scm_inexact_p, scm_make_rectangular)
13019 (scm_make_polar, scm_inexact_to_exact): Added texinfo markup.
13020 (scm_ash): Added texinfo markup and removed obsolete @refill.
13021 (scm_gr_p): Corrected comment.
13022 (scm_gr_p, scm_leq_p, scm_geq_p): Added texinfo markup to (future
13023 docstring) comments.
13024 (scm_positive_p, scm_less_p, scm_num_eq_p, scm_real_p)
13025 (scm_number_p, scm_negative_p, scm_max, scm_min, scm_sum)
13026 (scm_difference, scm_product, scm_divide, scm_asinh, scm_acosh)
13027 (scm_atanh, scm_truncate, scm_round, scm_exact_to_inexact)
13028 (floor, ceiling, $sqrt, $abs, $exp, $log, $sin, $cos, $tan, $asin)
13029 ($acos, $atan, $sinh, $cosh, $tanh, scm_real_part, scm_imag_part)
13030 (scm_magnitude, scm_angle, scm_abs, scm_quotient, scm_remainder)
13031 (scm_modulo, scm_gcd, scm_lcm): Added (future docstring) comments.
13032
13033 2001-02-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
13034
13035 * __scm.h (SCM_ASSERT_TYPE): Add missing macro parameter.
13036 (Obviously nobody compiles with SCM_RECKLESS defined...)
13037
13038 * validate.h (SCM_ASSERT_RANGE): Use the argument number.
13039
13040 2001-02-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13041
13042 * ports.c, ports.h (scm_c_read, scm_c_write): New functions.
13043
13044 * ports.h (SCM_READ_BUFFER_EMPTY_P): New macro.
13045
13046 2001-02-24 Neil Jerram <neil@ossau.uklinux.net>
13047
13048 * numbers.c (scm_two_doubles, scm_sys_expt, scm_sys_atan2,
13049 scm_make_polar): Rename arguments `z1' and `z2' to `x' and `y',
13050 since use of `z' suggests that the arguments may be complex.
13051
13052 * goops.c (scm_make), numbers.c (scm_sys_expt): Fix docstring
13053 typos.
13054
13055 2001-02-23 Neil Jerram <neil@ossau.uklinux.net>
13056
13057 * dump.c (scm_binary_write, scm_binary_read), eval.c
13058 (scm_primitive_eval), guardians.c (scm_guardian_destroyed_p,
13059 scm_guardian_greedy_p, scm_make_guardian), fports.c
13060 (scm_file_port_p): Minor docstring fixes.
13061
13062 2001-02-22 Marius Vollmer <mvo@zagadka.ping.de>
13063
13064 * load.c (load): Use scm_primitive_eval_x instead of scm_i_eval_x.
13065
13066 * goops.c (scm_add_method, DEFVAR): Use scm_eval instead of
13067 scm_i_eval.
13068 (make_class_from_template): Do not bother to set the current
13069 module around the call to DEFVAR, scm_eval takes care of that.
13070 (scm_init_goops): Make scm_module_goops and
13071 scm_goops_lookup_closure permanent objects.
13072
13073 * eval.c (scm_ceval, scm_deval): When evaluating expressions on
13074 top level, create a fresh top-level environment for each
13075 expression instead of mutating the exisint frame. This is
13076 important when that frame is closed over.
13077
13078 * numbers.c (s_scm_logior) [SCM_DIGSTOOBIG]: Also use
13079 SCM_DIGSPERLONG instead of DIGSPERLONG.
13080
13081 2001-02-21 Marius Vollmer <mvo@zagadka.ping.de>
13082
13083 * eval.c (scm_ceval, scm_deval): Check for wrong number of args
13084 before applying arrow procedure in `cond' and before applying
13085 receiver procedure in call-with-current-continuation.
13086 (scm_i_eval): Do not invoke scm_copy_tree in argument in SCM_XEVAL
13087 macro. The argument is expanded more than one time.
13088
13089 * numbers.c (scm_logior) [SCM_DIGSTOOBIG]: Correctly use
13090 SCM_BIGDIG instead of BIGDIG. Thanks to Steven G. Johnson!
13091
13092 2001-02-20 Marius Vollmer <mvo@zagadka.ping.de>
13093
13094 * guile-doc-snarf.in, guile-func-name-check.in: Added copyright
13095 notice and license.
13096
13097 2001-02-17 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13098
13099 * variable.c (scm_make_variable, scm_make_undefined_variable)
13100 (scm_variable_ref, scm_variable_set_x, scm_builtin_variable)
13101 (scm_variable_bound_p), values.c (scm_values)
13102 (scm_call_with_values), unif.c (scm_bit_count)
13103 (scm_bit_set_star_x), symbols.c (scm_gentemp)
13104 (scm_gensym), strings.c (scm_string_p, scm_make_string)
13105 (scm_read_only_string_p, scm_string_length, scm_string_ref)
13106 (scm_string_set_x, scm_substring, scm_string_append), stime.c
13107 (scm_strptime, scm_mktime), random.c (scm_seed_to_random_state)
13108 (scm_copy_random_state, scm_random), print.c (scm_newline)
13109 (scm_write_char, scm_simple_format), debug-malloc.c
13110 (scm_malloc_stats), environments.c (scm_environment_p)
13111 (scm_environment_bound_p, scm_environment_ref)
13112 (scm_environment_fold, scm_environment_define)
13113 (scm_environment_undefine, scm_environment_set_x)
13114 (scm_environment_cell, scm_environment_observe)
13115 (scm_environment_observe_weak, scm_environment_unobserve)
13116 (scm_make_eval_environment, scm_eval_environment_p)
13117 (scm_eval_environment_set_local_x, scm_eval_environment_local)
13118 (scm_eval_environment_imported)
13119 (scm_eval_environment_set_imported_x, scm_make_import_environment)
13120 (scm_import_environment_p, scm_import_environment_imports)
13121 (scm_import_environment_set_imports_x, scm_make_export_environment)
13122 (scm_export_environment_p, scm_export_environment_private)
13123 (scm_export_environment_set_private_x)
13124 (scm_export_environment_signature)
13125 (scm_export_environment_set_signature_x, scm_leaf_environment_p):
13126 Added texinfo markup.
13127
13128 * ports.c (scm_drain_input): Lowercased argument to @var.
13129 (scm_current_input_port, scm_current_output_port): Filled in
13130 missing explanation.
13131 (scm_current_load_port, scm_set_current_output_port)
13132 (scm_set_current_error_port, scm_port_line, scm_set_port_line_x):
13133 Added texinfo markup.
13134
13135 * arbiters.c (scm_make_arbiter, scm_try_arbiter)
13136 (scm_release_arbiter): Added texinfo markup to docstrings.
13137 Changed `Returns' to `Return'.
13138 (arbiter_print): Changed SCM_CDR to SCM_SMOB_DATA.
13139
13140 2001-02-16 Neil Jerram <neil@ossau.uklinux.net>
13141
13142 * guile-snarf.awk.in: Quote any `@'s that occur in Scheme names,
13143 by doubling them to `@@'.
13144
13145 2001-02-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13146
13147 * numbers.c (scm_lognot), random.c (scm_random,
13148 scm_random_normal, scm_random_solid_sphere_x,
13149 scm_random_hollow_sphere_x, scm_random_normal_vector_x,
13150 scm_random_exp), dynwind.c
13151 (scm_dynamic_wind): Removed unnecessary "" from docstrings.
13152
13153 * goops.c (scm_sys_initialize_object, scm_instance_p,
13154 scm_class_name, scm_class_precedence_list, scm_class_slots,
13155 scm_class_environment, scm_generic_function_name,
13156 scm_generic_function_methods, scm_method_generic_function,
13157 scm_method_specializers, scm_method_procedure, scm_make_unbound,
13158 scm_unbound_p, scm_assert_bound, scm_at_assert_bound_ref,
13159 scm_sys_fast_slot_ref, scm_sys_fast_slot_set_x, scm_slot_ref,
13160 scm_slot_set_x, _scm_slot_bound_p, scm_slots_exists_p,
13161 scm_sys_allocate_instance, scm_make, scm_pure_generic_p,
13162 scm_class_direct_supers, scm_class_direct_slots,
13163 scm_class_direct_subclasses, scm_class_direct_methods,
13164 scm_accessor_method_slot_definition, scm_sys_goops_loaded),
13165 debug.c (scm_with_traps, scm_memoized_p, scm_make_gloc,
13166 scm_gloc_p, scm_make_iloc, scm_iloc_p, scm_memcons,
13167 scm_mem_to_proc, scm_proc_to_mem, scm_unmemoize,
13168 scm_memoized_environment, scm_procedure_name,
13169 scm_procedure_source, scm_procedure_environment, scm_debug_hang),
13170 objects.c
13171 (scm_class_of, scm_entity_p, scm_operator_p,
13172 scm_set_object_procedure_x, scm_object_procedure,
13173 scm_make_class_object), hooks.c (scm_make_hook_with_name,
13174 scm_make_hook, scm_hook_p, scm_hook_empty_p, scm_add_hook_x,
13175 scm_remove_hook_x, scm_reset_hook_x, scm_run_hook,
13176 scm_hook_to_list), lang.c
13177 (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null, scm_nil_eq),
13178 numbers.c (scm_sys_expt, scm_sys_atan2), print.c
13179 (scm_print_options, scm_port_with_print_state,
13180 scm_get_print_state), procs.c (scm_make_cclo, scm_procedure_p,
13181 scm_closure_p, scm_thunk_p, scm_procedure_with_setter_p,
13182 scm_make_procedure_with_setter, scm_procedure), throw.c
13183 (scm_lazy_catch), modules.c (scm_standard_eval_closure), load.c
13184 (scm_parse_path, scm_search_path), stacks.c (scm_make_stack,
13185 scm_stack_ref, scm_stack_length, scm_frame_p,
13186 scm_last_stack_frame, scm_frame_number, scm_frame_source,
13187 scm_frame_procedure, scm_frame_arguments, scm_frame_previous,
13188 scm_frame_next, scm_frame_real_p, scm_frame_procedure_p,
13189 scm_frame_evaluating_args_p, scm_frame_overflow_p), filesys.c
13190 (scm_dirname, scm_basename), dynwind.c
13191 (scm_wind_chain), read.c (scm_read_options, scm_read,
13192 scm_read_hash_extend), gc.c
13193 (scm_unhash_name), eval.c (scm_eval_options_interface,
13194 scm_evaluator_traps, s_scm_nconc2last), backtrace.c
13195 (scm_display_error, scm_set_print_params_x,
13196 scm_display_application, scm_display_backtrace, scm_backtrace),
13197 async.c (scm_async, scm_system_async, scm_async_mark,
13198 scm_system_async_mark, scm_run_asyncs, scm_noop,
13199 scm_set_tick_rate, scm_set_switch_rate, scm_unmask_signals,
13200 scm_mask_signals): Added docstrings.
13201
13202 2001-02-15 Keisuke Nishida <kxn30@po.cwru.edu>
13203
13204 * dump.c (scm_undump): Use SCM_CARLOC/SCM_CDRLOC to obtain the
13205 address of car/cdr. (Thanks to Dirk Herrmann)
13206 Use scm_sizet to obtain the length of strings.
13207 (Thanks to Matthias Koeppe)
13208
13209 2001-02-15 Marius Vollmer <mvo@zagadka.ping.de>
13210
13211 * symbols.c (scm_mem2symbol): Put a empty statement after the
13212 next_symbol label. This is mandated by ANSI, appearantly.
13213
13214 2001-02-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13215
13216 * gc_os_dep.c: Do not include <linux/version.h>. It makes no
13217 sense to compile for a specific kernel version. Do not include
13218 <asm/signal.h> while defining __KERNEL__. This hack should no
13219 longer be needed and caused problems.
13220
13221 2001-02-13 Marius Vollmer <mvo@zagadka.ping.de>
13222
13223 * eval.c (scm_ceval, scm_deval): use `SIDEVAL' instead of
13224 SCM_CEVAL when evaluating subforms of `begin' forms. SCM_CEVAL
13225 can not deal with immediates.
13226
13227 2001-02-12 Keisuke Nishida <kxn30@po.cwru.edu>
13228
13229 * list.c (scm_list_copy): Validate the first argument.
13230
13231 2001-02-11 Marius Vollmer <mvo@zagadka.ping.de>
13232
13233 Fix evaluator so that top-level expressions are correctly
13234 evaluated with respect to the module system.
13235
13236 * modules.h. modules.c (scm_current_module_lookup_closure): New
13237 function.
13238
13239 * eval.h (scm_primitive_eval, scm_primitive_eval_x): New
13240 prototypes.
13241 (scm_i_eval, scm_i_eval_x, scm_eval, scm_eval_x): Changed argument
13242 names to better reflect their meaning.
13243
13244 * eval.c (scm_ceval, scm_deval): Recognize when `begin' is being
13245 evaluated at top-level and synronize lookup closure before
13246 executing every subform.
13247 (scm_primitve_eval_x, scm_primitive_eval): New functions.
13248 (scm_eval_x, scm_eval): Reimplement in terms of
13249 scm_primitive_eval_x and scm_primitive_eval, respectively.
13250
13251 2001-02-09 Marius Vollmer <mvo@zagadka.ping.de>
13252
13253 * macros.c (scm_macro_name, scm_macro_transformer): Use
13254 SCM_SMOB_DATA instead of SCM_CDR. Provided by Martin Grabmueller.
13255 Thanks!
13256
13257 2001-02-10 Keisuke Nishida <kxn30@po.cwru.edu>
13258
13259 * dump.c (scm_store_bytes): Store data size before data.
13260 (scm_restore_bytes): Restore data size. Takes a pointer to size.
13261 * dump.h (scm_restore_bytes): Updated.
13262
13263 2001-02-09 Keisuke Nishida <kxn30@po.cwru.edu>
13264
13265 * dump.c: Use double cells for update schedule.
13266
13267 2001-02-08 Keisuke Nishida <kxn30@po.cwru.edu>
13268
13269 * ports.c (scm_unread_char): Take an optional argument.
13270
13271 2001-02-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13272
13273 * modules.h (scm_selected_module, scm_current_module): Renamed
13274 scm_selected_module to scm_current_module to synchronize Scheme
13275 and C names.
13276 (scm_select_module, scm_set_current_module): Likewise. Changed
13277 all uses.
13278
13279 * ports.c (scm_port_for_each): Make a snapshot of the port table
13280 before iterating over it. The table might change while the user
13281 code is running. With the snapshot, the user can depend on the
13282 fact that each port that existed at the start of the iteration is
13283 encountered exactly once. (ice-9 popen) depends on this.
13284
13285 2001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
13286
13287 * strings.h (SCM_STRING_MAX_LENGTH): New macro.
13288
13289 * strings.c (scm_makstr, scm_take_str, scm_make_string): Added
13290 range checking for the size parameter. Thanks to Martin
13291 Grabmueller for the hint.
13292
13293 (scm_makstr): Reordered string initialization to make interrupt
13294 deferring unnecessary.
13295
13296 * vectors.c (scm_make_vector): Fixed range checking.
13297
13298 2001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
13299
13300 * vectors.h (SCM_VECTOR_MAX_LENGTH): New macro.
13301
13302 * vectors.c (scm_make_vector, scm_c_make_vector): Improved the
13303 checking of the size parameter for type correctness and valid
13304 range. Thanks to Rob Browning for reporting the problem. Instead
13305 of deferring interrupts, scm_remember_upto_here_1 is used.
13306
13307 2001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
13308
13309 * dump.c (scm_store_cell_object, scm_restore_cell_object): Removed.
13310 (scm_dump_cell_update): Removed.
13311 (scm_dump_update): Renamed from scm_dump_object_update.
13312 (scm_restore_string, scm_restore_bytes, scm_restore_word): Takes
13313 a pointer instead of returning a value.
13314 * keywords.c (keyword_undump): Updated.
13315
13316 2001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
13317
13318 * dump.c, dump.h: Modified a lot.
13319 (SCM_DUMP_COOKIE): Version 0.1
13320 (scm_dump_mark): Removed.
13321 (scm_restore_cell_object, scm_store_cell_object): New functions.
13322
13323 * smob.h (scm_smob_descriptor): Removed slots: dump_mark,
13324 dump_dealloc, dump_store, undump_alloc, undump_restore, undump_init.
13325 New slots: dump, undump.
13326 * smob.c (scm_make_smob_type, scm_set_smob_dump, scm_set_smob_undump):
13327 Updated.
13328
13329 * keywords.c (keyword_dump): Renamed from keyword_dealloc.
13330 (keyword_undump): Renamed from keyword_alloc.
13331 (scm_init_keywords): Set keyword_dump and keyword_undump.
13332
13333 2001-02-03 Michael Livshin <mlivshin@bigfoot.com>
13334
13335 * gc.c (DOUBLECELL_ALIGNED_P): new macro, a better-named analog of
13336 the deprecated SCM_DOUBLE_CELLP.
13337
13338 * tags.h (SCM_DOUBLE_CELLP): deprecated.
13339
13340 2001-02-02 Keisuke Nishida <kxn30@po.cwru.edu>
13341
13342 * dump.c, dump.h: New files.
13343 * Makefile.am: Added dump.c, dump.h, dump.x, dump.doc.
13344 * init.c: #include "libguile/dump.h".
13345 (scm_init_guile_1): Call scm_init_dump.
13346 * smob.h (scm_smob_descriptor): New slots: dump_mark,
13347 dump_dealloc, dump_store, undump_alloc, undump_restore,
13348 undump_init.
13349 * smob.c (scm_make_smob_type): Init the new slots.
13350 (scm_set_smob_dump, scm_set_smob_undump): New functions.
13351 * smob.h (scm_set_smob_dump, scm_set_smob_undump): Declared.
13352
13353 * keywords.c: #include "libguile/dump.h".
13354 (keyword_dealloc, keyword_alloc): New functions.
13355 (scm_init_keywords): Set smob_dump and smob_undump.
13356
13357 2001-02-01 Keisuke Nishida <kxn30@po.cwru.edu>
13358
13359 * vectors.c (scm_c_make_vector): New function.
13360 * vectors.h (scm_c_make_vector): Declared.
13361 * eval.c (scm_copy_tree), filesys.c (scm_stat2scm), fluids.c
13362 (scm_make_initial_fluids, grow_fluids), gc.c (scm_init_storage),
13363 gh_data.c (gh_ints2scm, gh_doubles2scm): goops.c
13364 (scm_make_method_cache, scm_i_vector2list,
13365 scm_compute_applicable_methods, scm_sys_method_more_specific_p),
13366 init.c (start_stack), net_db.c (scm_gethost, scm_getnet,
13367 scm_getproto, scm_return_entry), posix.c (scm_getgroups,
13368 scm_getpwuid, scm_getgrgid, scm_uname), print.c (make_print_state,
13369 grow_ref_stack), regex-posix.c (scm_regexp_exec), scmsigs.c
13370 (scm_init_scmsigs), socket.c (scm_addr_vector, scm_addr_vector),
13371 stime.c (scm_times, filltime), unif.c (scm_make_uve), vectors.c
13372 (scm_vector, scm_make_vector): Use scm_c_make_vector.
13373
13374 * hashtab.c (scm_c_make_hash_table): New function.
13375 * hashtab.h (scm_c_make_hash_table): Declared.
13376 * environments.c (scm_make_leaf_environment,
13377 scm_make_eval_environment), gc.c (scm_init_storage),
13378 keywords.c (scm_init_keywords), symbols.c (scm_builtin_bindings):
13379 Use scm_c_make_hash_table.
13380
13381 2001-01-31 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13382
13383 * unif.c (rapr1): Don't apply scm_uniform_vector_length on arrays.
13384
13385 2001-01-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13386
13387 * struct.c (scm_make_vtable_vtable): Removed unnecessary "" from
13388 end of docstring.
13389
13390 * struct.c (scm_struct_set_x, scm_struct_vtable_tag,
13391 scm_struct_vtable_name, scm_set_struct_vtable_name_x), weaks.c
13392 (scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table,
13393 scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
13394 srcprop.c (scm_source_properties, scm_set_source_properties_x,
13395 scm_source_property, scm_set_source_property_x), sort.c
13396 (scm_sort_list_x, scm_restricted_vector_sort_x, scm_sorted_p,
13397 scm_merge, scm_merge_x, scm_sort_x, scm_sort, scm_stable_sort_x,
13398 scm_stable_sort, scm_sort_list_x, scm_sort_list): Added
13399 docstrings.
13400
13401 2001-01-29 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13402
13403 * eval.c (SCM_APPLY): Check that primitives which take 1 arg
13404 really get that arg.
13405
13406 2001-01-26 Keisuke Nishida <kxn30@po.cwru.edu>
13407
13408 * goops.c (s_scm_get_keyword): Bug fix.
13409
13410 2001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
13411
13412 The following patch was sent by Martin Grabmueller. It makes sure
13413 that in case of parameter errors the correct function name is
13414 shown, and that parameter types are only checked once.
13415
13416 * strop.c (string_copy, string_upcase_x, string_downcase_x,
13417 string_capitalize_x): New functions. Each one performs the core
13418 functionality of the corresponding scm_* function.
13419
13420 (scm_string_copy, scm_string_upcase_x, scm_string_upcase,
13421 scm_string_downcase_x, scm_string_downcase,
13422 scm_string_capitalize_x, scm_string_capitalize): Reduced to
13423 parameter checking wrappers of the above functions.
13424
13425 2001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
13426
13427 * continuations.c, dynl.c, keywords.c, load.c: Include
13428 strings.h. Thanks to Bill Schottstaedt for the bug report.
13429
13430 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13431
13432 * backtrace.c (display_header): Make sure that line and column
13433 information is shown independent of whether the port the code was
13434 read from had an associated filename. Thanks to Martin
13435 Grabmueller for providing this patch.
13436
13437 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13438
13439 * fports.[ch] (scm_file_port_p): New primitive.
13440
13441 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13442
13443 * tags.h (scm_tc16_fport, scm_tc16_strport, scm_tc16_sfport):
13444 These are now defined in fports.c, strports.c and vports.c.
13445
13446 * fports.[ch] (scm_tc16_fport), strports.c (scm_tc16_strport),
13447 vports.c (scm_tc16_sfport): Made variables (were macros defined in
13448 tags.h).
13449
13450 fports.c (scm_make_fptob), strports.c (scm_make_stptob), vports.c
13451 (scm_make_sfptob): Made static. These return a type code now.
13452
13453 fports.c (scm_init_fports), strports.c (scm_init_strports),
13454 vports.c (scm_init_vports): Create the corresponding port types.
13455
13456 * fports.h (SCM_FPORTP, SCM_OPFPORTP, SCM_OPINFPORTP,
13457 SCM_OPOUTFPORTP): Redefined in terms of scm_tc16_fport.
13458
13459 * init.c (scm_init_guile_1): Make sure strports are initialized
13460 before gdbint.
13461
13462 * ports.[ch] (scm_make_port_type): Changed the return type to
13463 scm_bits_t.
13464
13465 * ports.c (scm_ports_prehistory): Don't create any port types
13466 here.
13467
13468 * posix.c (scm_ttyname): Use SCM_FPORTP instead of comparing
13469 against scm_tc16_fport directly.
13470
13471 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13472
13473 * srcprop.c (scm_set_source_property_x): Fix to handle
13474 (set-source-property! <obj> 'copy <datum>) correctly.
13475
13476 2001-01-24 Gary Houston <ghouston@arglist.com>
13477
13478 * filesys.c (scm_link): docstring fix.
13479 * fports.h (scm_setfileno): obsolete declaration removed.
13480 * posix.c: bogus popen declaration removed.
13481
13482 * rdelim.c: new file, split from ioext.c.
13483 * rdelim.h: new file, split from ioext.h
13484 * Makefile.am: add rdelim.c and related files.
13485 * init.c: call scm_init_rdelim. include rdelim.h.
13486
13487 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
13488
13489 This patch was sent by Martin Grabmueller and makes sure that
13490 parameter errors are reported correctly by the lexicographic
13491 ordering predicates.
13492
13493 * strorder.c (string_less_p, string_ci_less_p): New functions.
13494
13495 (scm_string_less_p, scm_string_ci_less_p): Extracted the core
13496 functionality into string_less_p, string_ci_less_p respectively.
13497 The remaining code is just a wrapper to do the parameter
13498 checking.
13499
13500 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p): Check the
13501 parameters and call string_less_p instead of scm_string_less_p.
13502
13503 (scm_string_ci_leq_p, scm_string_ci_gr_p, scm_string_ci_geq_p):
13504 Check the parameters and call string_less_ci_p instead of
13505 scm_string_ci_less_p.
13506
13507 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
13508
13509 This patch modifies scm_display_error to perform parameter
13510 checking. Thanks to Neil Jerram for the bug report.
13511
13512 * backtrace.[ch] (scm_i_display_error): New function.
13513
13514 * backtrace.c (scm_display_error): Added parameter check and
13515 extracted the core functionality into function
13516 scm_i_display_error.
13517
13518 * throw.c (handler_message): Call scm_i_display_error to display
13519 the error message.
13520
13521 2001-01-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13522
13523 * eval.c (SCM_APPLY): Added # args check for application of
13524 procedures with arity 3. (Thanks to Anders Holst.)
13525
13526 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
13527
13528 * filesys.h (SCM_DIR_FLAG_OPEN, SCM_DIR_OPEN_P): Added.
13529
13530 (SCM_OPDIRP): Deprecated.
13531
13532 * filesys.c (scm_opendir): Use SCM_DIR_FLAG_OPEN instead of
13533 SCM_OPN.
13534
13535 (scm_readdir, scm_rewinddir): Don't use SCM_VALIDATE_OPDIR.
13536 Instead, give an explicit error message in case the directory is
13537 closed.
13538
13539 (scm_closedir, scm_dir_print): Rewritten to use SCM_DIR_OPEN_P
13540 instead of SCM_OPENP and SCM_CLOSEDP.
13541
13542 * validate.h (SCM_VALIDATE_OPDIR): Deprecated.
13543
13544 2001-01-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
13545
13546 * eval.c (inner_eval, scm_eval): Move all real functionality into
13547 inner_eval. Avoid to copy the expression twice by inlining some
13548 code from scm_i_eval.
13549
13550 2001-01-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
13551
13552 * eval.c (scm_m_case): The 'else' clause of a 'case' statement
13553 now has to be the last clause, as required by R5RS. Thanks to
13554 Martin Grabmueller for the patch.
13555
13556 2001-01-18 Gary Houston <ghouston@arglist.com>
13557
13558 * ioext.c: further simplify scm_read_string_x_partial by defining
13559 a macro SCM_EBLOCK.
13560
13561 2001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
13562
13563 * gh_data.c (gh_ints2scm): Simplified using SCM_FIXABLE.
13564
13565 2001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
13566
13567 * __scm.h: Added comment about architecture and compiler
13568 properties that are required by guile.
13569
13570 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
13571 SCM_MOST_NEGATIVE_FIXNUM): Moved to numbers.h.
13572
13573 (SCM_CHAR_BIT, SCM_LONG_BIT): Moved here from numbers.h.
13574
13575 * numbers.h (SCM_CHAR_BIT, SCM_LONG_BIT): Moved to __scm.h.
13576
13577 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
13578 SCM_MOST_NEGATIVE_FIXNUM): Moved here from __scm.h.
13579
13580 2001-01-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13581
13582 * __scm.h (SCM_FIXNUM_BIT): Added. The name is chosen in analogy
13583 to the names in limits.h.
13584
13585 * numbers.c (abs_most_negative_fixnum): Added.
13586
13587 (scm_quotient, scm_remainder): Fixed the fixnum-min / (abs
13588 fixnum-min) special case.
13589
13590 (scm_big_and): Fix for negative first parameter.
13591
13592 (scm_bit_extract): Fix for fixnum paramters.
13593 Thanks to Rob Browning for the bug report.
13594
13595 (scm_init_numbers): Initialize abs_most_negative_fixnum.
13596
13597 2001-01-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
13598
13599 * symbols.c (scm_symbol_bound_p): Fixed comment.
13600 Thanks to Chris Cramer.
13601
13602 2001-01-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
13603
13604 * smob.[ch] (scm_make_smob_type): Return type is scm_bits_t now.
13605 Thanks to Bill Schottstaedt.
13606
13607 2001-01-11 Michael Livshin <mlivshin@bigfoot.com>
13608
13609 from Matthias Köppe:
13610
13611 * objects.h (SCM_SET_ENTITY_SETTER): new macro. SCM_ENTITY_SETTER
13612 casts its result, so doesn't yield an lvalue per ANSI C.
13613
13614 * goops.c (s_scm_sys_set_object_setter_x): use
13615 SCM_SET_ENTITY_SETTER.
13616 (clear_method_cache): use SCM_SET_ENTITY_PROCEDURE.
13617
13618 * gc.h (SCM_GC_SET_CARD_BVEC): new macro. SCM_GC_CARD_BVEC casts
13619 its result, so doesn't yield an lvalue per ANSI C.
13620 (SCM_GC_SET_CARD_FLAGS): ditto for SCM_GC_GET_CARD_FLAGS.
13621 (SCM_GC_CLR_CARD_FLAGS): redefined in terms of
13622 SCM_GC_SET_CARD_FLAGS.
13623 (SCM_GC_SET_CARD_FLAG, SCM_GC_CLR_CARD_FLAGS): ditto.
13624
13625 * gc.c (INIT_CARD): use the explicit setter macro to set the bvec.
13626
13627 2001-01-08 Gary Houston <ghouston@arglist.com>
13628
13629 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): new macro.
13630 * ioext.c (scm_read_string_x_partial, scm_read_delimited_x),
13631 socket.c (scm_recvfrom): use the new macro, plus minor docstring
13632 changes.
13633 * ioext.c (scm_read_string_x_partial): don't crash if -1 is supplied
13634 for fdes. if current input port is used, check that it's a file
13635 port.
13636
13637 2001-01-06 Gary Houston <ghouston@arglist.com>
13638
13639 * ioext.c (scm_read_string_x_partial): new procedure, implements
13640 read-string!/partial.
13641 * ports.c (scm_take_from_input_buffers): new procedure used by
13642 scm_read_string_x_partial.
13643 (scm_drain_input): use scm_take_from_input_buffers.
13644
13645 2001-01-06 Marius Vollmer <mvo@zagadka.ping.de>
13646
13647 * validate.h (SCM_VALIDATE_NUMBER): New.
13648
13649 2001-01-03 Michael Livshin <mlivshin@bigfoot.com>
13650
13651 * guardians.c (F_GREEDY, F_LISTED, F_DESTROYED, GREEDY_P,
13652 SET_GREEDY, LISTED_P, SET_LISTED, CLR_LISTED, DESTROYED_P,
13653 SET_DESTROYED): new defines/macros.
13654 (GUARDIAN_LIVE, GUARDIAN_ZOMBIES, GUARDIAN_NEXT): deleted.
13655 (add_to_live_list): takes a `guardian_t *' now, not SCM.
13656 (guardian_print): print more info.
13657 (guardian_apply): check if the guardian is destroyed, and throw an
13658 error if so. take one more optional argument `throw_p'.
13659 (scm_guard): depending on the value of `throw_p', return a boolean
13660 result.
13661 (scm_get_one_zombie): remove redundant property test.
13662 (guardian_t): represent the various (currently 3, I hope nothing
13663 more gets added) boolean fields as bit flags.
13664 (scm_guardian_destroyed_p, scm_guardian_greedy_p): new predicates.
13665 (scm_destroy_guardian_x): new procedure.
13666
13667 * guardians.h: added prototypes for `scm_guardian_greedy_p' and
13668 `scm_guardian_destroyed_p'. changed prototype for `scm_guard'.
13669
13670 2001-01-01 Gary Houston <ghouston@arglist.com>
13671
13672 * fports.c (fport_write): bugfix: handle short writes for
13673 unbuffered ports too. optimize the buffered case by minimizing
13674 the number of write/flush calls.
13675 (write_all): new helper procedure.
13676
13677 The ChangeLog continues in the file: "ChangeLog-2000"
13678
13679 ;; Local Variables:
13680 ;; coding: utf-8
13681 ;; End: