Changes from arch/CVS synchronization
[bpt/guile.git] / libguile / ChangeLog
CommitLineData
42ddb3cb
LC
12007-01-19 Ludovic Courtès <ludovic.courtes@laas.fr>
2
3 * struct.c (scm_i_struct_equalp): Skip comparison if both FIELD1
4 is equal to S1 and FIELD2 is equal to S2. This avoids infinite
5 recursion when comparing `s' fields, as the REQUIRED_VTABLE_FIELDS
6 added by `make-vtable-vtable'. Reported by Marco Maggi.
7
937038e8
HWN
82007-01-18 Han-Wen Nienhuys <hanwen@lilypond.org>
9
10 * throw.c (scm_ithrow): more refined error message: print symbols
11 too.
12
23d72566
KR
132007-01-16 Kevin Ryde <user42@zip.com.au>
14
15 * feature.c, feature.h (scm_set_program_arguments_scm): New function,
16 implementing `set-program-arguments'.
17
18 * filesys.c (scm_init_filesys): Use scm_from_int rather than
19 scm_from_long for O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_EXCL,
20 O_NOCTTY, O_TRUNC, O_APPEND, O_NONBLOCK, O_NDELAY, O_SYNC and
21 O_LARGEFILE. These are all int not long, per arg to open().
22 (scm_init_filesys): Use scm_from_int rather than scm_from_long for
23 F_DUPFD, F_GETFD, F_SETFD, F_GETFL, F_SETFL, F_GETOWN, F_SETOWN, these
24 are all ints (per command arg to fcntl). Likewise FD_CLOEXEC which is
25 an int arg to fcntl.
26
27 * posix.c (scm_putenv): Correction to "len" variable, was defined only
28 for __MINGW32__ but used under any !HAVE_UNSETENV (such as solaris).
29 Move it to where it's used. Reported by Hugh Sasse.
30
31 * regex-posix.c (scm_regexp_exec): Remove SCM_CRITICAL_SECTION_START
32 and SCM_CRITICAL_SECTION_END, believe not needed. Their placement
33 meant #\nul in the input (detected by scm_to_locale_string) and a bad
34 flags arg (detected by scm_to_int) would throw from a critical
35 section, causing an abort().
36
37 * regex-posix.c (scm_init_regex_posix): Use scm_from_int for
38 REG_BASIC, REG_EXTENDED, REG_ICASE, REG_NEWLINE, REG_NOTBOL,
39 REG_NOTEOL; they're all ints not longs (per args to regcomp and
40 regexec).
41
a2c40dc7
HWN
422007-01-10 Han-Wen Nienhuys <hanwen@lilypond.org>
43
44 * throw.c (scm_ithrow): print out key symbol and string arguments
45 when error happens inside a critical section, and document why.
46
391f57e6
HWN
472007-01-06 Han-Wen Nienhuys <hanwen@lilypond.org>
48
49 * read.c (s_scm_read_hash_extend): document #f argument to
50 read-hash-extend.
51
23d72566
KR
522007-01-04 Kevin Ryde <user42@zip.com.au>
53
54 * deprecated.h (scm_create_hook), version.h.in (scm_major_version,
55 scm_minor_version, scm_micro_version, scm_effective_version,
56 scm_version, scm_init_version): Use SCM_API instead of just extern,
57 for the benefit of mingw. Reported by Cesar Strauss.
58
93632e3c
HWN
592007-01-03 Han-Wen Nienhuys <hanwen@lilypond.org>
60
61 * gc.c (s_scm_gc_stats): return an entry for total-cells-allocated
62 too.
63 (gc_update_stats): update scm_gc_cells_allocated_acc too.
64
23d72566
KR
652006-12-27 Kevin Ryde <user42@zip.com.au>
66
67 * threads.c (get_thread_stack_base): In mingw with pthreads we can use
68 the basic scm_get_stack_base. As advised by Nils Durner.
69
70 * threads.c (get_thread_stack_base): Add a version using
71 pthread_get_stackaddr_np (when available), for the benefit of MacOS.
72 As advised by Heikki Lindholm.
73
74 * scmsigs.c (signal_delivery_thread): Restrict scm_i_pthread_sigmask
75 to HAVE_PTHREAD_SIGMASK, it doesn't exist on mingw. Reported by Nils
76 Durner.
77
782006-12-24 Kevin Ryde <user42@zip.com.au>
79
80 * posix.c (scm_kill): When only raise() is available, throw an ENOSYS
81 error if pid is not our own process, instead of silently doing nothing.
82
83 * print.c (scm_write, scm_display, scm_write_char): Disable port close
84 on EPIPE. This was previously disabled but introduction of HAVE_PIPE
85 check in configure.in unintentionally enabled it. Believe that
86 testing errno after scm_prin1 or scm_putc is bogus, a long ago error
87 can leave errno in that state. popen.test "no duplicates" output test
88 provoked that.
89
e2bf3b19
HWN
902006-12-23 Han-Wen Nienhuys <hanwen@lilypond.org>
91
92 * numbers.c (scm_i_fraction_reduce): move logic into
93 scm_i_make_ratio(), so fractions are only read.
94 scm_i_fraction_reduce() modifies a fraction when reading it. A
95 race condition might lead to fractions being corrupted by reading
96 them concurrently.
97
98 Also, the REDUCED bit alters the SCM_CELL_TYPE(), making
99 comparisons between reduced and unreduced fractions go wrong.
100
101 * numbers.h: remove SCM_FRACTION_SET_NUMERATOR,
102 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
103 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
104 SCM_FRACTION_REDUCED.
105
23d72566
KR
1062006-12-16 Kevin Ryde <user42@zip.com.au>
107
108 * scmsigs.c (scm_raise): Use raise() rather than kill(), as this is
109 more direct for a procedure called raise.
110 (kill): Remove mingw fake fallback.
111
1122006-12-15 Kevin Ryde <user42@zip.com.au>
113
114 * scmsigs.c: Conditionalize process.h, add io.h believe needed for
115 _pipe on mingw.
116
1172006-12-14 Kevin Ryde <user42@zip.com.au>
118
119 * threads.c (thread_print): Cope with the case where pthread_t is a
120 struct, as found on mingw. Can't just cast to size_t for printing.
121 Reported by Nils Durner.
122
123 * scmsigs.c: Add <fcntl.h> and <process.h> needed by mingw. Copy the
124 fallback pipe() using _pipe() from posix.c. Reported by Nils Durner.
125
1262006-12-13 Kevin Ryde <user42@zip.com.au>
127
128 * eval.c (scm_m_define): Set 'name procedure property on any
129 scm_procedure_p, not just SCM_CLOSUREP. In particular this picks up
130 procedures with setters as used in srfi-17.
131
132 * posix.c (scm_crypt): Check for NULL return from crypt(), which the
133 linux man page says is a possibility.
134
f30e1bdf
LC
1352006-12-12 Ludovic Courtès <ludovic.courtes@laas.fr>
136
137 * libguile/unif.c (read_decimal_integer): Let RESP be SIGN * RES
42ddb3cb 138 instead of RES (reported by Szavai Gyula). This allows the use of
f30e1bdf
LC
139 negative lower bounds.
140 (scm_i_read_array): Make sure LEN is non-negative (reported by
42ddb3cb 141 Szavai Gyula).
f30e1bdf
LC
142
143 (scm_array_in_bounds_p): Iterate over S instead of always
144 comparing indices with the bounds of S[0]. This fixes
145 `array-in-bounds?' for arrays with a rank greater than one and
146 with different lower bounds for each dimension.
147
23d72566
KR
1482006-12-05 Kevin Ryde <user42@zip.com.au>
149
150 * numbers.c (scm_product): For flonum*inum and complex*inum, return
151 exact 0 if inum==0. Already done for inum*flonum and inum*complex,
152 and as per R5RS section "Exactness".
153
1542006-12-03 Kevin Ryde <user42@zip.com.au>
155
156 * Makefile.am (.c.doc): Remove the "test -n" apparently attempting to
157 allow $AWK from the environment to override. It had syntax gremlins,
158 and the presence of a $(AWK) variable set by AC_PROG_AWK in the
159 Makefile stopped it having any effect. Use just $(AWK), which can be
160 overridden with "make AWK=xxx" in the usual way if desired.
161
22be72d3
LC
1622006-11-29 Ludovic Courtès <ludovic.courtes@laas.fr>
163
164 * libguile/vectors.c (scm_vector_to_list): Fixed list
165 construction: elements were not copied when INC is zero (see
166 "shared array" example in `vectors.test'). Reported by
167 Szavai Gyula.
168
b89c4943
LC
1692006-11-18 Ludovic Courtès <ludovic.courtes@laas.fr>
170
171 * Makefile.am (lib_LTLIBRARIES): Added `libguile-i18n-v-XX.la'.
172 (libguile_la_SOURCES): Added `gettext.c', removed `i18n.c'.
173 (libguile_i18n_v_XX_la_SOURCES, libguile_i18n_v_XX_la_CFLAGS,
174 libguile_i18n_v_XX_la_LIBADD, libguile_i18n_v_XX_la_LDFLAGS): New.
175 (DOT_X_FILES): Added `gettext.x'.
176 (DOT_DOC_FILES): Likewise.
177 (EXTRA_libguile_la_SOURCES): Added `locale-categories.h'.
178 (modinclude_HEADERS): Added `gettext.h'.
179 (EXTRA_DIST): Added `libgettext.h'.
180
181 * gettext.h: Renamed to...
182 * libgettext.h: New file.
183
184 * i18n.c: Renamed to...
185 * gettext.c: New file.
186
187 * i18n.h: Renamed to...
188 * gettext.h: New file.
189
190 * i18n.c, i18n.h, locale-categories.h: New files.
191
192 * init.c: Include "libguile/gettext.h" instead of
193 "libguile/i18n.h".
194 (scm_i_init_guile): Invoke `scm_init_gettext ()' instead of
195 `scm_init_i18n ()'.
196
197 * posix.c: Include "libguile/gettext.h" instead of
198 "libguile/i18n.h" Test `HAVE_NEWLOCALE' and `HAVE_STRCOLL_L'.
199 (USE_GNU_LOCALE_API): New macro.
200 (scm_i_locale_mutex): New variable.
201 (scm_setlocale): Lock and unlock it around `setlocale ()' calls.
202
203 * posix.h: Include "libguile/threads.h".
204 (scm_i_locale_mutex): New declaration.
205
f3e3f530
NJ
2062006-11-17 Neil Jerram <neil@ossau.uklinux.net>
207
208 * script.c (scm_shell_usage): Note need for subscription to bug-guile@gnu.org.
209
d9f71a07
LC
2102006-11-08 Ludovic Courtès <ludovic.courtes@laas.fr>
211
212 * libguile/gc-freelist.c (scm_i_adjust_min_yield): Take two
213 "sweep_stats" arguments; use them instead of accessing the global
214 variables `scm_gc_cells_collected' and `scm_gc_cells_collected_1'.
215
216 * libguile/gc-segment.c (scm_i_sweep_some_cards): Reset SWEEP
217 before each iteration of the loop.
218 (scm_i_sweep_some_segments): Reset SWEEP at each iteration.
219 (scm_i_get_new_heap_segment): Take an additional argument
220 SWEEP_STATS. Compute MIN_CELLS as a function of it.
221
222 * libguile/gc.c (scm_gc_cells_collected,
223 scm_gc_cells_collected_1): Removed.
224 (scm_i_gc_sweep_stats, scm_i_gc_sweep_stats_1): New.
225 (scm_gc_cells_marked_acc, scm_gc_cells_swept_acc,
226 scm_gc_time_taken, scm_gc_mark_time_taken, scm_gc_times,
227 scm_gc_cell_yield_percentage, protected_obj_count): Made `static'.
228 (scm_gc_stats): Use `scm_i_gc_sweep_stats' instead of
229 `scm_gc_cells_(collected|swept)'.
230 (gc_update_stats): New.
231 (gc_end_stats): Use `scm_i_gc_sweep_stats' and
232 `scm_i_gc_sweep_stats_1' instead of the former globals.
233 (scm_gc_for_newcell): Invoke `gc_update_stats ()' after each
234 `scm_i_sweep_some_segments' call. This fixes a bug where the GC
235 would keep allocating new segments instead of re-using collected
236 cells (because `scm_gc_cells_collected' would remain zero).
237
238 * libguile/gc.h (scm_gc_cells_swept, scm_gc_cells_collected,
239 scm_gc_cell_yield_percentage): Removed.
240
241 * libguile/private-gc.h (scm_gc_cells_collected_1): Removed.
242 (scm_i_adjust_min_yield): Updated.
243 (scm_i_get_new_heap_segment): Updated.
244
dd18d312
NJ
2452006-11-02 Neil Jerram <neil@ossau.uklinux.net>
246
247 * modules.c: Correct comment saying that low-level environments
248 will be used "in the next release".
249
250 * init.c: Comment out #include of environments.h.
251 (scm_i_init_guile): Comment out scm_environments_prehistory() and
252 scm_init_environments() calls.
253
254 * Makefile.am (libguile_la_SOURCES): Remove environments.c.
255 (DOT_X_FILES): Remove environments.x.
256 (DOT_DOC_FILES): Remove environments.doc.
257 (modinclude_HEADERS): Remove environments.h.
258
9a5fa6e9
NJ
2592006-10-25 Neil Jerram <neil@ossau.uklinux.net>
260
261 IA64 HP-UX GC patch from Hrvoje Nikšić. (Thanks!)
262
263 * threads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp() and
264 scm_ia64_register_backing_store_base() instead of Linux-specific
265 implementations.
266
267 * gc.h (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp):
268 New declarations.
269
270 * gc.c (__libc_ia64_register_backing_store_base): Declaration
271 removed.
272 (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp): New, with
273 implementations for Linux and HP-UX.
274
275 * coop-pthreads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp()
276 and scm_ia64_register_backing_store_base() instead of
277 Linux-specific implementations.
278
279 * continuations.h (__libc_ia64_register_backing_store_base):
280 Declaration removed.
281 (scm_t_contregs): New "fresh" field.
282
283 * continuations.c (ia64_getcontext): Removed.
284 (scm_make_continuation): Use continuation fresh field instead of
285 interpreting getcontext return values (which isn't portable). Use
286 scm_ia64_ar_bsp() and scm_ia64_register_backing_store_base()
287 instead of Linux-specific implementations.
288 (copy_stack_and_call): Use scm_ia64_register_backing_store_base()
289 instead of Linux-specific implementation.
290
291 * _scm.h (__ia64__): Also detect __ia64.
292
8ab3d8a0
KR
2932006-10-03 Kevin Ryde <user42@zip.com.au>
294
295 * eval.c (SCM_APPLY): For scm_tc7_subr_2o, throw wrong-num-args on 0
296 arguments or 3 or more arguments. Previously 0 called proc with
297 SCM_UNDEFINED, and 3 or more silently used just the first 2.
298
2992006-09-28 Kevin Ryde <user42@zip.com.au>
300
301 * fports.c, ports.c (ftruncate): Use "HAVE_CHSIZE && ! HAVE_FTRUNCATE"
302 for chsize fallback, instead of hard-coding mingw. Mingw in fact
303 supplies ftruncate itself these days.
304
305 * ports.c (fcntl.h): Can include this unconditionally, no need for
306 __MINGW32__.
307
308 * ports.c (truncate): Conditionalize on "HAVE_FTRUNCATE && !
309 HAVE_TRUNCATE" so as not to hard-code mingw. Use "const char *" and
310 "off_t" for parameters, per usual definition of this function, rather
311 than "char *" and "int". Use ftruncate instead of chsize. Check for
312 error on final close.
313
3142006-09-27 Kevin Ryde <user42@zip.com.au>
315
316 * numbers.c (scm_log10): Check HAVE_CLOG10, clog10() is not available
317 in mingw.
318
319 * posix.c (scm_execl, scm_execlp, scm_execle): Cast "const char *
320 const *" for mingw to suppress warnings from gcc (which are errors
321 under the configure default -Werror). Reported by Nils Durner.
322
3232006-09-26 Kevin Ryde <user42@zip.com.au>
324
325 * _scm.h (scm_to_off64_t, scm_from_off64_t): New macros.
326 * fports.c (scm_open_file): Use open_or_open64.
327 (fport_seek_or_seek64): New function, adapting fport_seek.
328 * fports.c, fports.h (scm_i_fport_seek, scm_i_fport_truncate): New
329 functions.
330 * ports.c (scm_seek, scm_truncate_file): Use scm_i_fport_seek and
331 scm_i_fport_truncate to allow 64-bit seeks and truncates on fports.
332
333 * ports.c (scm_truncate_file): Update docstring per manual.
334
3352006-09-23 Kevin Ryde <user42@zip.com.au>
336
337 * numbers.c, numbers.h (scm_log, scm_log10, scm_exp, scm_sqrt): New
338 functions.
339
9a5fa6e9 3402006-09-20 Ludovic Courtès <ludovic.courtes@laas.fr>
a17d2654
LC
341
342 * srfi-14.c: Include <config.h>. Define `_GNU_SOURCE'.
343 (make_predset, define_predset, make_strset, define_strset, false,
344 true): Removed.
345 (SCM_CHARSET_UNSET, CSET_BLANK_PRED, CSET_SYMBOL_PRED,
346 CSET_PUNCT_PRED, CSET_LOWER_PRED, CSET_UPPER_PRED,
347 CSET_LETTER_PRED, CSET_DIGIT_PRED, CSET_WHITESPACE_PRED,
348 CSET_CONTROL_PRED, CSET_HEX_DIGIT_PRED, CSET_ASCII_PRED,
349 CSET_LETTER_AND_DIGIT_PRED, CSET_GRAPHIC_PRED, CSET_PRINTING_PRED,
350 CSET_TRUE_PRED, CSET_FALSE_PRED, UPDATE_CSET): New macros.
351 (define_charset, scm_srfi_14_compute_char_sets): New functions.
352 (scm_init_srfi_14): Use `define_charset ()' instead of
353 `define_predset ()' and `define_strset ()'.
354
355 * srfi-14.h (scm_c_init_srfi_14): Removed.
356 (scm_srfi_14_compute_char_sets): New declaration.
357
358 * posix.h: Include "srfi-14.h".
359 (scm_setlocale): Invoke `scm_srfi_14_compute_char_sets ()' after a
360 successful `setlocale ()' call.
361
8ab3d8a0
KR
3622006-09-08 Kevin Ryde <user42@zip.com.au>
363
364 * socket.c (scm_init_socket): Add MSG_DONTWAIT.
365 (scm_recvfrom): Update docstring from manual.
366
418122ce
RB
3672006-08-31 Rob Browning <rlb@defaultvalue.org>
368
369 * ports.c (scm_c_port_for_each): Add a
370 scm_remember_upto_here_1(ports) at the end of the function to fix
371 a GC bug.
372
b5944f66
NJ
3732006-08-28 Neil Jerram <neil@ossau.uklinux.net>
374
375 * backtrace.c (scm_display_backtrace_with_highlights): Minor
376 improvements to docstring.
377 (scm_backtrace_with_highlights): Analogous improvements.
378
8ab3d8a0
KR
3792006-08-12 Kevin Ryde <user42@zip.com.au>
380
381 * gen-scmconfig.h.in (SCM_I_GSC_NEED_BRACES_ON_PTHREAD_ONCE_INIT):
382 New, set from configure.
383 * gen-scmconfig.c (SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT): New output
384 to scmconfig.h.
385 * pthread-threads.h (SCM_I_PTHREAD_ONCE_INIT): Use
386 SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT to cope with Solaris.
387 Reported by Claes Wallin.
388
b0b0deff
NJ
3892006-08-11 Neil Jerram <neil@ossau.uklinux.net>
390
391 * stacks.c (scm_last_stack_frame): Correct docstring (returns a
392 frame, not a stack).
393
8ab3d8a0
KR
3942006-07-25 Kevin Ryde <user42@zip.com.au>
395
396 * threads.c (get_thread_stack_base): Restrict HAVE_PTHREAD_GETATTR_NP
397 on pthreads version, since pthread_getattr_np not available on solaris
398 and macos. Reported by Claes Wallin.
399
4002006-07-24 Kevin Ryde <user42@zip.com.au>
401
402 * filesys.c (dirfd): Test with #ifndef rather than HAVE_DIRFD, since
403 it's a macro on MacOS X. Reported by Claes Wallin.
404
405 * posix.c (sethostname): Give prototype if not HAVE_DECL_SETHOSTNAME,
406 for the benefit of Solaris 10. Reported by Claes Wallin.
407
408 * socket.c (scm_htonl, scm_ntohl): Use scm_to_uint32 rather than
409 NUM2ULONG, to enforce 32-bit range check on systems with 64-bit long.
410
4112006-07-21 Kevin Ryde <user42@zip.com.au>
412
413 * eval.c, filesys.c (alloca): Update <alloca.h> etc blob, per current
414 autoconf recommendation. Should fix Solaris 10 reported by Claes
415 Wallin.
416
417 * threads.c: Include <string.h>, needed for memset() which is used by
418 FD_ZERO() on Solaris 10. Reported by Claes Wallin.
419
b4912378
RB
4202006-07-18 Rob Browning <rlb@defaultvalue.org>
421
422 * continuations.c: Add __attribute__ ((returns_twice)) to the
423 ia64_getcontext prototype so that gcc will make the right
424 arrangements and avoid an illegal instruction during
425 call-with-current-continuation.
426
9a5fa6e9 4272006-07-12 Ludovic Courtès <ludovic.courtes@laas.fr>
eaa94eaa
LC
428
429 * numbers.c (guile_ieee_init): Use regular ANSI C casts rather
430 than C++-style `X_CAST ()'. Patch posted by by Mike Gran.
431
8ab3d8a0
KR
4322006-07-08 Kevin Ryde <user42@zip.com.au>
433
434 * environments.c (core_environments_unobserve): Use if/else rather
435 than ?: for "SET" bits, avoiding complaints from AIX xlc compiler
436 about them not being rvalues. Reported by Mike Gran.
437
438 * Makefile.am (version.h): Don't use $< in an explicit rule, it's not
439 portable and in particular fails on OpenBSD and AIX (see autoconf
440 manual too). Reported by Mike Gran.
441
4422006-06-25 Kevin Ryde <user42@zip.com.au>
443
444 * stime.c (bdtime2c): tm_gmtoff is seconds East, so take negative of
445 tm:gmtoff which is seconds West. Reported by Aaron VanDevender.
446 (bdtime2c): Test HAVE_STRUCT_TM_TM_GMTOFF for tm_gmtoff, rather than
447 HAVE_TM_ZONE.
448 (scm_strptime): Use tm_gmtoff from the strptime result when that field
449 exists, it's set by glibc strptime "%s".
450
9a5fa6e9 4512006-06-13 Ludovic Courtès <ludovic.courtes@laas.fr>
d15ad007
LC
452
453 * eq.c: Include "struct.h", "goops.h" and "objects.h".
454 (scm_equal_p): Invoke `scm_i_struct_equalp ()' on structures that
455 are not GOOPS instances.
456 * struct.c: Include "eq.h".
457 (scm_free_structs): Use `SCM_STRUCT_VTABLE_DATA ()' instead of
458 hand-written code.
459 (scm_i_struct_equalp): New.
460 * struct.h (scm_i_struct_equalp): New declaration.
461
c862d0e0
KR
4622006-06-06 Kevin Ryde <user42@zip.com.au>
463
464 * Makefile.am (BUILT_SOURCES): Remove guile.texi, only used by
465 maintainers (with doc/maint/docstring.el). Fixes parallel "make -j2"
466 reported by Mattias Holm.
b4912378 467
c862d0e0
KR
4682006-06-03 Kevin Ryde <user42@zip.com.au>
469
470 * read.c (s_vector): Conditionalize on SCM_ENABLE_ELISP, to avoid
471 unused variable warning when elisp disabled. Reported by Ryan
472 VanderBijl.
473
474 * throw.c (scm_handle_by_message): Add dummy return value to avoid
475 compiler warning on cygwin. Reported by Ryan VanderBijl.
476
477 * Makefile.am (EXTRA_DOT_X_FILES): Typo in dependency rule, was a
478 duplicate of EXTRA_DOT_DOC_FILES.
479 (DOT_X_FILES, EXTRA_DOT_X_FILES, DOT_DOC_FILES, EXTRA_DOT_DOC_FILES):
480 Add scmconfig.h to dependencies, since these all run cpp. Helps a
481 parallel "make -j2". Reported by Mattias Holm.
482
4832006-05-30 Kevin Ryde <user42@zip.com.au>
484
485 * ports.c, ports.h (scm_set_port_mark, scm_set_port_free,
486 scm_set_port_print, scm_set_port_equalp, scm_set_port_flush,
487 scm_set_port_end_input, scm_set_port_close, scm_set_port_seek,
488 scm_set_port_truncate, scm_set_port_input_waiting): Use scm_t_bits for
489 port type descriptor, same as scm_make_port_type return value.
490
af4f8612
MV
4912006-05-30 Marius Vollmer <mvo@zagadka.de>
492
493 * eq.c (scm_equal_p): Use scm_array_equal_p explicitely when one
494 of the arguments is a array. This allows vectors to be equal to
495 one-dimensional arrays.
496
18bffcd0
MV
4972006-05-29 Marius Vollmer <mvo@zagadka.de>
498
499 * throw.c (scm_ithrow): When looking for the jmpbuf, first test
500 that we have a pair before accessing its cdr. Thanks to Bill
501 Schottstaedt!
502
c862d0e0
KR
5032006-05-28 Kevin Ryde <user42@zip.com.au>
504
505 * eval.c, filesys.c: Add malloc.h to get alloca() on mingw. Reported
506 by "The Senator".
507
5082006-05-27 Marius Vollmer <mvo@zagadka.de>
b0c0a310
MV
509
510 * srfi-4.c, strings.c: Replace SCM_C_INLINE with
511 SCM_C_INLINE_KEYWORD. Thanks to Mark Gran!
512
c862d0e0
KR
5132006-05-26 Kevin Ryde <user42@zip.com.au>
514
515 * fports.c (fport_input_waiting): For ioctl, check HAVE_IOCTL as well
516 as defined(FIONREAD), since mingw has FIONREAD but not ioctl().
517 Reported by "The Senator".
518 For select and ioctl, move fdes into those conditionals, to avoid
519 unused variable warning when neither of those used.
520
5212006-05-23 Kevin Ryde <user42@zip.com.au>
522
523 * fports.c: Remove "fwrite" declaration under "! HAVE_UNISTD_H".
524 It's unused and will be in stdio.h anyway (if it's anywhere).
525
5262006-05-20 Kevin Ryde <user42@zip.com.au>
527
528 * filesys.c (scm_stat2scm): Test #ifdef S_ISLNK directly, rather than
529 HAVE_S_ISLNK from configure (it was only a #ifdef test anyway).
530
531 * posix.c (scm_mknod): Test #ifdef S_IFLNK before using that (for
532 symlink). Probably can't create symlinks with mknod anyway though.
533
534 * inline.h (scm_is_pair): Add a workaround for i386 gcc 2.95 bad code
535 generation.
536
5372006-05-15 Kevin Ryde <user42@zip.com.au>
538
539 * simpos.c, simpos.h (scm_primitive__exit): New function.
540 (scm_primitive_exit): Update docstring, no longer the best exit after
541 a fork.
542
5432006-05-09 Kevin Ryde <user42@zip.com.au>
544
545 * numbers.c (scm_i_divide): For big/big wanting inexact, use mpq_get_d
546 rather than converting to doubles, to avoid inf or nan when the inputs
547 are too big for a double but the quotient does fit. This affects
548 conversions exact->inexact of big fractions.
549
550 * filesys.c (scm_open_fdes): Use open64.
551 (scm_init_filesys): Add O_LARGEFILE.
552
553 * ports.c (scm_seek): Use lseek64.
554 (scm_truncate_file): Use ftruncate64.
555
4a342b19
MV
5562006-05-08 Marius Vollmer <mvo@zagadka.de>
557
558 * private-gc.h (CELL_P): Also check that the potential pointer is
559 correctly aligned for a cell. Thanks to Miroslav Lichvar!
560
c862d0e0
KR
5612006-04-18 Rob Browning <rlb@defaultvalue.org>
562
563 * _scm.h: Add back error if the size of off_t is unknown. The bug
564 was actually in guile-readline's configuration.
565
5662006-04-18 Kevin Ryde <user42@zip.com.au>
567
568 * posix.c (scm_mkstemp): Update docstring from the manual, in
569 particular file mode 0600 is not guaranteed.
570
281ab5e2
KR
5712006-04-17 Kevin Ryde <user42@zip.com.au>
572
573 * _scm.h (scm_to_off_t, scm_from_off_t): No error if unknown off_t
574 size, to help the guile-readline build where off_t is unused.
575
2b829bbb
KR
5762006-04-16 Kevin Ryde <user42@zip.com.au>
577
578 * filesys.c (scm_stat2scm, scm_stat, scm_lstat): Use stat or stat64.
579 (scm_readdir): Use readdir64.
580 (scm_copy_file): Use open64 and fstat64, to cope with >2Gb files.
581 * ports.c (scm_truncate_file): Use truncate64. Correction truncate
582 and ftruncate take off_t not size_t.
583 * _scm.h (stat_or_stat64 etc): Macros for selecting LFS64 when
584 available.
585
5862006-04-06 Kevin Ryde <user42@zip.com.au>
587
588 * fports.c (scm_setvbuf): Fix for not _IOLBF, clear SCM_BUFLINE
9a5fa6e9 589 instead of toggling it. Reported by Ludovic Courtès.
2b829bbb
KR
590
5912006-03-26 Marius Vollmer <mvo@zagadka.de>
592
593 * threads.c (get_thread_stack_base): Use scm_get_stack_base
594 instead of accessing __libc_stack_end directly, and only do this
595 when pthread_attr_getstack is known not to work for the main
596 thread or when not using pthreads at all.
597
598 * gc_os_dep.c (scm_get_stack_base): Abort when the machine type is
599 unknown instead of returning NULL.
600
9a5fa6e9 6012006-03-21 Ludovic Courtès <ludovic.courtes@laas.fr>
2b829bbb
KR
602
603 * numbers.c (scm_i_mem2number): Renamed to
604 scm_c_locale_stringn_to_number.
605 * numbers.c, print.c, read.c: Updated callers.
606 * numbers.h: Update function declaration.
607
6082006-03-11 Neil Jerram <neil@ossau.uklinux.net>
609
610 * unif.c (string_set): Don't return in a void function. (Reported
611 by Mike Gran.)
612
613 * srfi-4.c (scm_uniform_vector_read_x): Declare base as char*
614 rather than void*, so we can do pointer arithmetic on it.
615 (Reported by Mike Gran.)
616 (s_scm_uniform_vector_write): Ditto.
617
6182006-03-10 Neil Jerram <neil@ossau.uklinux.net>
619
620 * unif.c (scm_make_shared_array): Don't use SCM_I_ARRAY_BASE when
621 oldra is not an array. (Reported by Steve Juranich.)
622
623 * threads.c (do_unlock): Renamed from "unlock", which is defined
624 in unistd.h on QNX. (Reported by Matt Kraai.)
625
6262006-03-04 Kevin Ryde <user42@zip.com.au>
627
628 * deprecated.c (scm_i_defer_ints_etc): Show SCM_DEFER_INTS in message,
629 not SCM_CRITICAL_SECTION_START.
630
631 * eval.c, posix.c: Change comments from C++ to C style. Reported by
632 Mike Gran.
633
6342006-02-28 Kevin Ryde <user42@zip.com.au>
635
636 * unif.c (bitvector_set): Use h->writable_elements not h->elements.
637
6382006-02-26 Kevin Ryde <user42@zip.com.au>
639
640 * filesys.c (scm_readdir): Use fpathconf for the dirent size when
641 NAME_MAX is not available, which is so on Solaris 10. Report and help
642 by Bill Schottstaedt.
643
644 * srfi-13.c (MY_VALIDATE_SUBSTRING_SPEC_UCOPY): New macro.
645 (scm_string_compare, scm_string_compare_ci, scm_string_lt,
646 scm_string_gt, scm_string_le, scm_string_ge, scm_string_ci_lt,
647 scm_string_ci_gt, scm_string_ci_le, scm_string_ci_ge): In comparisons
648 use "unsigned char", not signed char. This ensures comparisons are
649 the same as `char<?' etc, and is also the same as guile 1.6 did.
650 Reported by Sven Hartrumpf.
651
4a9f83ff
MD
6522006-02-19 Mikael Djurfeldt <mdj@neurologic.cc>
653
654 * random.c: Test for SCM_HAVE_T_UINT64 instead of
655 SCM_HAVE_T_INT64.
656 (scm_i_uniform32, scm_i_uniform32, scm_i_init_rstate): Use
657 scm_t_uint64 and scm_t_uint32 instead of scm_t_int64 and
658 scm_t_int32.
659
4c7016dc
HWN
6602006-01-04 Ludovic Court<E8>s <ludovic.courtes@laas.fr>
661
662 * gc-segment.c (scm_i_sweep_some_cards): Take a SWEEP_STATS
663 argument. Don't refer to SCM_GC_CELLS_COLLECTED and
664 SCM_CELLS_ALLOCATED. If SEG->FIRST_TIME, let CELLS_COLLECTED as zero.
665 Take into account SEG->SPAN when computing CELLS_SWEPT.
666 (scm_i_sweep_segment): Take one more argument, similarly.
667 (scm_i_sweep_all_segments): Likewise.
668 (scm_i_sweep_some_segments): Likewise.
669 (scm_i_adjust_min_yield): Change the way MIN_CELLS is computed: do not
670 refer to SCM_GC_CELLS_COLLECTED.
671
672 * gc-freelist.c (scm_i_adjust_min_yield): Take one more
673 argument, an `scm_i_sweep_statistics' object.
674 Change the way DELTA is collected: don't take into account
675 SCM_GC_CELLS_COLLECTED_1, only SWEEP_STATS.COLLECTED.
676
677 * gc-malloc.c (scm_realloc): Pass an extra argument
678 to `scm_i_sweep_all_segments ()'.
679
680 * gc.c (gc_start_stats): Updated accordingly.
681 (gc_end_stats): Take an additional SWEEP_STATS argument.
682 Decrement SCM_CELLS_ALLOCATED after calls to `scm_i_sweep_* ()'.
683 (scm_gc_for_newcell): Updated callers of `scm_i_sweep_*'.
684 Decrement SCM_CELLS_ALLOCATED.
685 (scm_i_gc): Likewise.
686
687 * private-gc.h (scm_i_sweep_*): Updated function
688 prototypes accordingly.
689 (scm_t_sweep_statistics): New type.
690 (scm_i_sweep_statistics_init): New macro.
691 (scm_i_sweep_statistics_sum): New macro
692
9a5fa6e9 6932006-02-14 Ludovic Courtès <ludovic.courtes@laas.fr>
2b829bbb
KR
694
695 * strings.c (scm_i_take_stringbufn): Register LEN+1 bytes instead of
696 LEN. Without this, too much collectable memory gets unregistered,
697 which results in an underflow of SCM_MALLOCATED in
698 `decrease_mtrigger()'.
699
700 * gc-malloc.c (decrease_mtrigger): Make sure SIZE is lower than or
701 equal to SCM_MALLOCATED.
702
7032006-02-13 Marius Vollmer <mvo@zagadka.de>
704
705 * eval.c (scm_eval_body): Use scm_i_dynwind_pthread_mutex_lock
706 oinstead of scm_dynwind_pthread_mutex_lock so that it works when
707 configured --without-threads.
708 (SCM_APPLY, CEVAL): Likewise. Thanks to Han-Wen Nienhuys!
709
1aaa1c17
MV
7102006-02-12 Marius Vollmer <mvo@zagadka.de>
711
712 * unif.c (scm_dimensions_to_uniform_array): Use the prototype for
713 filling when the fill parameter is omitted, as documented, but
714 turn #\nul into 0 since s8 arrays (signified by a #\nul prototype)
715 can not store characters.
716
d7c6575f
NJ
7172006-02-09 Neil Jerram <neil@ossau.uklinux.net>
718
719 * socket.c (scm_c_make_socket_address): Pass address_size pointer
720 on to scm_fill_sockaddr call.
721
43e01b1e
NJ
7222006-02-04 Neil Jerram <neil@ossau.uklinux.net>
723
724 * throw.h (scm_c_catch, scm_c_with_throw_handler,
725 scm_catch_with_pre_unwind_handler, scm_with_throw_handler): New.
726
727 * throw.c (SCM_JBPREUNWIND, SCM_SETJBPREUNWIND): New.
728 (struct pre_unwind_data): New, replaces struct lazy_catch.
729 (scm_c_catch): New, replaces scm_internal_catch as the primary
730 catch API for C code; adds pre-unwind handler support.
731 (scm_internal_catch): Now just a wrapper for scm_c_catch, for back
732 compatibility.
733 (tc16_pre_unwind_data, pre_unwind_data_print,
734 make_pre_unwind_data, SCM_PRE_UNWIND_DATA_P): Renamed from
735 "lazy_catch" equivalents.
736 (scm_c_with_throw_handler): New, replaces scm_internal_lazy_catch
737 as the primary C API for a "lazy" catch.
738 (scm_internal_lazy_catch): Now just a wrapper for
739 scm_c_with_throw_handler, for back compatibility.
740 (scm_catch_with_pre_unwind_handler): Renamed from scm_catch; adds
741 pre-unwind handler support.
742 (scm_catch): Now just a wrapper for
743 scm_catch_with_pre_unwind_handler, for back compatibility.
744 (scm_with_throw_handler): New.
745 (scm_lazy_catch): Update comment to say that the handler can
746 return, and what happens if it does.
747 (toggle_pre_unwind_running): New.
748 (scm_ithrow): When identifying the throw target, take running
749 flags into account. In general, change naming of things from
750 "lazy_catch" to "pre_unwind". When throwing to a throw handler,
751 don't unwind the dynamic context first. Add dynwind framing to
752 manage the running flag of a throw handler. If a lazy catch or
753 throw handler returns, rethrow the same exception again. Add
754 pre-unwind support to the normal catch case (SCM_JMPBUFP).
755
756 * root.c (scm_internal_cwdr): Add NULL args to
757 scm_i_with_continuation_barrier call.
758
759 * dynwind.c: Change comment mentioning lazy-catch to mention
760 pre-unwind data and throw handler also.
761
762 * continuations.h (scm_i_with_continuation_barrier): Add
763 pre-unwind handler args.
764
765 * continuations.c (scm_i_with_continuation_barrier): Add
766 pre-unwind handler args, and pass on to scm_c_catch (changed from
767 scm_internal_catch).
768 (c_handler): Remove scm_handle_by_message_noexit call.
769 (scm_c_with_continuation_barrier): Call
770 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
771 as the pre-unwind handler.
772 (scm_handler): Remove scm_handle_by_message_noexit call.
773 (s_scm_with_continuation_barrier): Call
774 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
775 as the pre-unwind handler.
776
2b829bbb
KR
7772006-02-04 Kevin Ryde <user42@zip.com.au>
778
779 * gc-mark.c (scm_mark_all): Fix c99-isms "loops" and "again" variables.
780
72098928
KR
7812006-02-03 Kevin Ryde <user42@zip.com.au>
782
783 * list.c, list.h (scm_list): Restore this function for use from C.
784 It's a complete no-op but in theory might used by someone.
785
aa092c5d
MV
7862006-01-30 Marius Vollmer <mvo@zagadka.de>
787
788 * eval.c (scm_eval_body): Lock source_mutex with a dynwind context
789 so that it gets unlocked in all cases.
790 (SCM_APPLY, CEVAL): Likewise.
791
661ae7ab
MV
7922006-01-29 Marius Vollmer <mvo@zagadka.de>
793
ee51ba31
MV
794 * ramap.c: (scm_array_map_x): Don't use scm_array_p, use
795 scm_is_typed_array instead.
796
661ae7ab
MV
797 Renamed the "frames" that are related to dynamic-wind to "dynamic
798 contexts. Renamed all functions from scm_frame_ to scm_dynwind_.
799 Updated documentation.
800
99e370f6
MV
801 Disabled "futures":
802
803 * futures.h, futures.c: Wrap whole contents in "#if 0"/"#endif".
804 * eval.c, init.c: Comment out all 'future' related things.
805
15ccf10b
MV
8062006-01-28 Marius Vollmer <mvo@zagadka.de>
807
808 * inline.h, pairs.c (scm_is_pair): Moved scm_is_pair from pairs.c
809 to inline.h to make it inline.
810
9a5fa6e9 8112005-12-19 Ludovic Courtès <ludovic.courtes@laas.fr>
fd0a5bbc
HWN
812
813 * strings.c (scm_i_take_stringbufn): New.
814 (scm_i_c_take_symbol): New.
815 (scm_take_locale_stringn): Use `scm_i_take_stringbufn ()'.
816
817 * strings.h (scm_i_c_take_symbol): New.
818 (scm_i_take_stringbufn): New.
819
820 * symbols.c (lookup_interned_symbol): New function.
821 (scm_i_c_mem2symbol): New function.
822 (scm_i_mem2symbol): Use `lookup_symbol ()'.
823 (scm_from_locale_symbol): Use `scm_i_c_mem2symbol ()'. This avoids
824 creating a new Scheme string.
825 (scm_from_locale_symboln): Likewise.
826 (scm_take_locale_symbol): New.
827 (scm_take_locale_symboln): New.
828
829 * symbols.h (scm_take_locale_symbol): New.
830 (scm_take_locale_symboln): New.
831
2ca2ffe6
HWN
8322006-01-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
833
834 * gc-card.c ("sweep_card"): don't count scm_tc_free_cell for
835 free_count.
836
c255614e
HWN
8372005-11-29 Han-Wen Nienhuys <hanwen@xs4all.nl>
838
839 * regex-posix.c (s_scm_regexp_exec): list the offending pattern
840 upon error
841
29295b0c
NJ
8422005-12-29 Neil Jerram <neil@ossau.uklinux.net>
843
9a5fa6e9 844 * fluids.c (next_fluid_num): [From Ludovic Courtès:] Don't trigger
29295b0c
NJ
845 the GC when allocated_fluids_len is zero.
846
2824f4dc
NJ
8472005-12-14 Neil Jerram <neil@ossau.uklinux.net>
848
ec3a8ace
NJ
849 * load.c (the_reader, the_reader_fluid_num): New.
850 (scm_primitive_load): Support custom reader.
851 (scm_init_load): Init the_reader and the_reader_fluid_num; export
852 the_reader as `current-reader'.
853
2824f4dc
NJ
854 * scmsigs.c (do_read_without_guile): Use the "raw_data" passed in
855 (rather than an uninitialized pointer on the stack).
856
d9c36d2a
MV
8572005-12-07 Marius Vollmer <mvo@zagadka.de>
858
6a88895b
MV
859 Reported by Bruce Korb:
860
861 * init.c (invoke_main_func): Don't call exit here. Throws that
862 are only caught by scm_with_guile will bypass us and would cause
863 scm_boot_guile to return erroneously.
864 (scm_boot_guile): Expect scm_with_guile to return and call exit
865 here, passing it an appropriate exit code.
866
867 From Andy Wingo:
d9c36d2a
MV
868
869 * script.c (scm_find_executable): Compile fix -- fgetc returns an
870 unsigned char cast to an int, or -1 for EOS.
871
b54df254
MV
8722005-12-06 Marius Vollmer <mvo@zagadka.de>
873
08f489c9
MV
874 * srfi-4.h, srfi-4.c, srfi-4.i.c (take_uvec): Make BASE pointer
875 non-const.
9a5fa6e9 876 (scm_take_u8vector, etc): Likewise. Thanks to Ludovic Courtès!
08f489c9 877
b54df254
MV
878 * threads.h, threads.c (scm_t_guile_ticket, scm_leave_guile,
879 scm_enter_guile): Removed from public API. See comment at
880 scm_without_guile for the rationale.
881
882 * scmsigs.c (read_without_guile): New.
883 (signal_delivery_thread): Use it instead of
884 scm_leave_guile/read/scm_enter_guile.
885
9d9ce2b5
MV
886 From Stephen Compall:
887
888 * eval.c (scm_m_cond): Recognize SRFI 61 cond syntax.
889 (CEVAL): Evaluate SRFI 61 cond clauses.
890
9a5fa6e9 8912005-12-06 Ludovic Courtès <ludovic.courtes@laas.fr>
9fb5c8f9
NJ
892
893 * gc-card.c (scm_i_card_statistics): Return if BITVEC is NULL.
894 This was typically hit when running `gc-live-object-stats' right
895 after starting Guile.
896
efeac8ae
KR
8972005-11-30 Kevin Ryde <user42@zip.com.au>
898
899 * srfi-13.c (scm_string_append_shared): No copying if just one
900 non-empty string in args.
901
606183ba
KR
9022005-11-26 Kevin Ryde <user42@zip.com.au>
903
904 * gc-mark.c (scm_mark_all): Change C++ comment to C comment. Reported
9a5fa6e9 905 by Ludovic Courtès.
606183ba
KR
906
907 * list.c (list): Should be "primitive" in SCM_SNARF_DOCS, not
908 "register".
909
910 * random.c (scm_i_copy_rstate, scm_c_make_rstate): Don't test for
911 scm_malloc returning NULL, it never does that.
912 * putenv.c (putenv): Likewise.
913
914 * socket.c (scm_fill_sockaddr): Remove SCM_C_INLINE_KEYWORD, this is
915 much too big to want to inline.
916
9a5fa6e9 9172005-11-17 Ludovic Courtès <ludovic.courtes@laas.fr>
dbb5de29
NJ
918
919 * print.c (EXIT_NESTED_DATA): Before popping from the stack, reset
920 the value at its top. This fixes a reference leak.
921 (PUSH_REF): Perform `pstate->top++' after calling
922 `PSTATE_STACK_SET ()' in order to avoid undesired potential side
923 effects.
924
9a5fa6e9 9252005-11-12 Ludovic Courtès <ludovic.courtes@laas.fr>
3f98874a
NJ
926
927 * gc.c (scm_weak_vectors): Removed.
928
f07d2b20
KR
9292005-11-12 Kevin Ryde <user42@zip.com.au>
930
931 * socket.c (scm_setsockopt): Missing @defvar in docstring. Reported
9a5fa6e9 932 by Ludovic Courtès.
f07d2b20 933
bedd3f5f
MV
9342005-11-07 Marius Vollmer <mvo@zagadka.de>
935
936 * stime.c (scm_mktime): Use scm_frame_critical_section instead of
937 SCM_CRITICAL_SECTION_START/END since the code inside the critical
938 section might exit non-locally.
939
7c9c0169
NJ
9402005-11-04 Neil Jerram <neil@ossau.uklinux.net>
941
942 * eval.c (sym_instead): New symbol.
943 (ENTER_APPLY): Remove optional use of a continuation when making
944 trap call.
945 (scm_debug_opts): Change doc for 'cheap option to make clear that
946 it is now obsolete.
947 (CEVAL, SCM_APPLY): Remove optional use of a continuation when
948 making trap calls, and implement substitution of eval expressions
949 and return values using the values that the trap call handlers
950 return.
951
952 * debug.h (SCM_CHEAPTRAPS_P): Removed.
953
9a5fa6e9 9542005-10-27 Ludovic Courtès <ludovic.courtes@laas.fr>
64cdbfc7
KR
955
956 * socket.c (scm_fill_sockaddr): No need to check NULL from scm_malloc.
957 (scm_connect, scm_bind, scm_sendto): Accept sockaddr object.
958 (scm_addr_vector): Renamed to _scm_from_sockaddr, update usages.
959 (scm_from_sockaddr, scm_to_sockaddr, scm_make_socket_address,
960 scm_c_make_socket_address): New functions.
961 * socket.h: Add prototypes.
962
fc9f596c
KR
9632005-10-24 Kevin Ryde <user42@zip.com.au>
964
965 * socket.c (scm_init_socket): Add IPPROTO_IP, IPPROTO_TCP,
966 IPPROTO_UDP. Remove SOL_IP, SOL_TCP, SOL_UDP. The former are in
967 POSIX spec examples, the latter are not available on for instance
968 NetBSD.
969
970 * socket.c (scm_getsockopt, scm_setsockopt): Update docstrings from
971 posix.texi.
972
973 * stime.c (scm_strftime): Update docstring from posix.texi.
974
0460c6e1
MV
9752005-10-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
976
977 PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP is not portable enough.
978
979 * null-threads.h, pthread-threads.h
980 (SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER): Removed.
981 (scm_i_pthread_mutexattr_recursive): New.
982
983 * threads.c (scm_i_pthread_mutexattr_recursive): Declare.
984 (scm_i_critical_section_mutex): Do not initialize statically.
985 (scm_threads_prehistory): Initialize
986 scm_i_pthread_mutexattr_recursive and scm_i_critical_section_mutex
987 here.
988
989 * eval.c (source_mutex): Do not initialiaze statically.
990 (scm_init_eval): Do it here, using
991 scm_i_pthread_mutexattr_recursive.
992
7b4a9e52
MV
9932005-09-05 Marius Vollmer <mvo@zagadka.de>
994
995 * print.h (SCM_PRINT_KEYWORD_STYLE_I, SCM_PRINT_KEYWORD_STYLE):
996 New.
997 (sym_reader): New.
998 (scm_print_opts): Added "quote-keywordish-symbols" option.
999 (quote_keywordish_symbol): New, for evaluating the option.
1000 (scm_print_symbol_name): Use it.
1001 (scm_init_print): Initialize new option to sym_reader.
1002
5defc05d
NJ
10032005-08-15 Neil Jerram <neil@ossau.uklinux.net>
1004
1005 * eval.c (eval_letrec_inits): New.
1006 (CEVAL): Eval letrec initializer forms using eval_letrec_inits.
1007
036482e9
MV
10082005-08-12 Marius Vollmer <mvo@zagadka.de>
1009
1010 * numbers.c: Use scm_from_bool instead of SCM_BOOL. Thanks to
1011 Peter Gavin!
1012
5c347f8c
KR
10132005-08-12 Kevin Ryde <user42@zip.com.au>
1014
1015 * srfi-13.c (scm_string_for_each_index): Correction to docstring.
1016
bc721aa2
KR
10172005-08-06 Kevin Ryde <user42@zip.com.au>
1018
1019 * srfi-13.c (scm_string_any, scm_string_every, scm_string_tabulate,
1020 scm_string_trim, scm_string_trim_right, scm_string_trim_both,
1021 scm_string_index, scm_string_index_right, scm_string_skip,
1022 scm_string_skip_right, scm_string_count, scm_string_map,
1023 scm_string_map_x, scm_string_for_each, scm_string_for_each_index,
1024 scm_string_filter, scm_string_delete): Use scm_t_trampoline_1 for
1025 procedures called in loops.
1026
126c81db
KR
10272005-08-02 Kevin Ryde <user42@zip.com.au>
1028
1029 * strports.c (st_flush): Increase buffer by 1.5x when growing, to
1030 avoid lots of copying where previoulsy growing by only 80 bytes at a
1031 time.
1032
7f278dc6
MV
10332005-08-01 Marius Vollmer <mvo@zagadka.de>
1034
1035 * modules.h, modules.c (scm_eval_closure_module): Removed, we
1036 already have scm_lookup_closure_module, which does the same thing.
1037
cb5c4b07
MV
10382005-08-01 Marius Vollmer <mvo@zagadka.de>
1039
1040 New marking algorithm for weak hashtables that fixes the problem
1041 that references from the non-weak value to the associated weak
1042 key (for example) would prevent the entry from ever being dropped.
1043
1044 Guardians have been changed back to their original semantics and
1045 are no longer greedy and no longer drop cycles.
1046
1047 * gc-mark.c (scm_mark_all): Do not rely on hooks to run the weak
1048 hashtable and guardian machinery but call the relevant functions
1049 directly.
1050
1051 * guardians.h, guardians.c, deprecated.h,
1052 deprecated.c (scm_destroy_guardian_x, scm_guardian_greedy_p,
1053 scm_guardian_destroyed_p, scm_guard, scm_get_one_zombie):
1054 Deprecated and moved into deprecated.[ch].
1055
1056 * guardians.h, guardians.c: Mostly rewritten.
1057 (scm_i_init_guardians_for_gc,
1058 scm_i_identify_inaccessible_guardeds,
1059 scm_i_mark_inaccessible_guardeds): New.
930888e8 1060 (scm_make_guardian): Removed greedy_p argument.
cb5c4b07
MV
1061
1062 * weaks.h, weaks.c (SCM_I_WVECT_TYPE, SCM_I_SET_WVECT_TYPE): New.
1063 (SCM_I_WVECT_N_ITEMS, SCM_I_SET_WVECT_N_ITEMS): New.
1064 (SCM_WVECTF_NOSCAN, SCM_WVECT_NOSCAN_P): Removed.
1065 (scm_weaks_prehistory): Removed.
1066 (scm_i_init_weak_vectors_for_gc, scm_i_mark_weak_vector,
1067 scm_i_mark_weak_vectors_non_weaks,
1068 scm_i_remove_weaks_from_weak_vectors, scm_i_remove_weaks): New.
1069 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
1070 scm_scan_weak_vectors): Removed.
1071
1072 * hashtab.h (scm_i_scan_weak_hashtables): New.
1073 * hashtab.c (make_hash_table, scm_i_rehash): Do not use
1074 SCM_WVECTF_NOSCAN.
1075 (hashtable_print): Use SCM_HASHTABLE_N_ITEMS instead of
1076 t->n_items.
1077 (scan_weak_hashtables, scm_i_scan_weak_hashtables): Renamed former
1078 to latter. Do not scan the alists themselves, this is done by the
1079 weak vector code now. Just update the element count.
1080
1081 * vectors.h (SCM_I_WVECT_TYPE, SCM_I_WVECT_EXTRA): Renamed former
1082 to latter. The type is now only part of the cell word.
1083 (SCM_I_SET_WVECT_TYPE, SCM_I_SET_WVECT_EXTRA): Likewise.
1084
1085 * init.c (scm_i_init_guile): Do not call scm_weaks_prehistory.
1086
3e2073bd
MD
10872005-07-18 Mikael Djurfeldt <mdj@d14n36.pdc.kth.se>
1088
1089 Some changes towards making it possible to run Guile on the EM64T
1090 platform.
1091
1092 * gc.c (scm_gc_stats): Bugfix: Measure size of the type we are
1093 mallocating for (unsigned long *bounds).
1094
1095 * hashtab.c (scm_i_rehash): Cast SCM_HASHTABLE_FLAGS (table) to
1096 scm_t_bits before storing them in the type word.
1097
1098 * gc.c (tag_table_to_type_alist): Modified type of c_tag from
1099 scm_t_bits to int.
1100
e8ac8e75
KR
11012005-07-12 Kevin Ryde <user42@zip.com.au>
1102
1103 * eval.c (scm_dbg_make_iloc): Should be SCM_IFRAMEMAX and
1104 SCM_IDISTMAX, and cast uints through scm_t_bits to make gcc happy.
1105 * pairs.c (scm_error_pair_access): Use scm_from_locale_string rather
1106 than scm_makfrom0str.
1107 Reported by Ken Raeburn.
1108
1109 * gc-card.c (scm_dbg_gc_get_bvec): Change return from long* to
1110 scm_t_c_bvec_long*, gcc 4 doesn't like different pointer targets when
1111 returning SCM_GC_CARD_BVEC.
1112
1113 * pairs.c (scm_error_pair_access): Plain ascii ' in error message
1114 rather than latin-1 acute accent, the latter may not print on all
1115 terminals.
1116
1117 * srfi-13.c (scm_string_filter, scm_string_delete): Strip leading and
1118 trailing deletions, so as to return a substring if those are the only
1119 changes.
1120
adc0677d
KR
11212005-07-10 Kevin Ryde <user42@zip.com.au>
1122
1123 * socket.c (scm_inet_pton, scm_inet_ntop): Pointer cast to scm_t_uint8
1124 for scm ipv6 funcs, gcc 4 is picky about char* vs uchar*.
1125 (scm_getsockopt, scm_accept, scm_getsockname, scm_getpeername,
1126 scm_recvfrom) Use socklen_t, gcc 4 is picky about int* vs socklen_t*.
1127
8fecbb19
HWN
11282005-07-01 Han-Wen Nienhuys <hanwen@xs4all.nl>
1129
1130 * gc-card.c (scm_i_card_statistics): init tag.
1131
1132 * gc.c (tag_table_to_type_alist): check type of tag. Should be integer.
1133
fc9c5d06
HWN
11342005-06-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
1135
8fecbb19
HWN
1136 * fports.c (s_scm_open_file): add the b flag for binary to the doc
1137 string.
fc9c5d06 1138
08fce816
KR
11392005-06-25 Kevin Ryde <user42@zip.com.au>
1140
1141 * srfi-13.c (scm_string_filter, scm_string_delete): Partial revert
1142 last change, use plain copy-on-write substrings, the individual
1143 descriptions in the srfi don't mention shared storage (only the
1144 introduction does).
1145
1146 * strings.c (scm_take_locale_stringn): Use realloc to make room for
1147 null-terminator, rather than mallocing a whole new block.
1148 (scm_take_locale_string): Use scm_take_locale_stringn len==-1.
1149
fc4abd0e
MV
11502005-06-12 Marius Vollmer <mvo@zagadka.de>
1151
e3da8a30
MV
1152 * ramap.c (scm_array_index_map_x): First test for real arrays,
1153 then check for generalized vectors. This ensures that the
1154 generalized vector case need only work with zero-origin ranges.
12097c77
MV
1155 (scm_ra_eqp, scm_ra_compare): Use the new array handle functions
1156 to access the target array, making these functions work with all
1157 kinds of arrays, not just bit arrays.
e3da8a30 1158
fc4abd0e
MV
1159 * gh.h, gh_data.c, gh_eval.c, gh_funcs.c, gh_init.c, gh_io.c,
1160 gh_list.c, gh_predicates.c: Deprecated everything.
1161
1162 * environments.c (environment_default_folder,
1163 environment_default_observer): Do not use gh_call3, gh_call1.
1164
e4da0740
HWN
11652005-06-10 Han-Wen Nienhuys <hanwen@xs4all.nl>
1166
1167 * modules.c (s_scm_eval_closure_module): new function. Return the
1168 module inside an eval-closure.
1169
1170 * gc.c (scm_init_storage): make scm_stand_in_procs a weak_key hash
1171 table. This means that procedure properties are GC'd if the
1172 procedure dies.
1173
27667158
KR
11742005-06-11 Kevin Ryde <user42@zip.com.au>
1175
1176 * srfi-13.c (scm_string_filter, scm_string_delete): For char and
1177 charset cases, count chars kept and build a string in a second pass,
1178 rather than using a cons cell for every char kept. Use a shared
1179 substring when nothing removed (such sharing is allowed by the srfi).
1180
8a00ba71
HWN
11812005-06-09 Han-Wen Nienhuys <hanwen@xs4all.nl>
1182
1183 * gc.c (tag_table_to_type_alist): convert tag number to "tag %d"
1184 string, so live object stats can be sorted with string<?.
1185
a677679f
MV
11862005-06-06 Marius Vollmer <mvo@zagadka.de>
1187
2ff668b0
MV
1188 * print.c (iprin1): When writing a string, collect all characters
1189 that can be printed directly into one call to scm_lfwrite.
1190 Previously, every character was output with its own call to
1191 write(2) on unbuffered ports.
1192
589f22f6
MV
1193 * eval.c (scm_eval_options_interface): Use
1194 scm_frame_critical_section instead of SCM_CRITICAL_SECTION_START
1195 and SCM_CRITICAL_SECTION_END.
1196
a677679f
MV
1197 * unif.c (scm_array_in_bounds_p): First test for real arrays, then
1198 check for generalized vectors. This ensures that the generalized
1199 vector case need only work with zero-origin ranges.
1200
f8cda9ee
KR
12012005-06-06 Kevin Ryde <user42@zip.com.au>
1202
1203 * srfi-13.c (scm_string_split): Compare char/char in scan. Mixing an
1204 unsigned int SCM_CHAR and a char string meant an 8-bit char was never
1205 matched.
1206
cdac1be4
MV
12072005-06-05 Marius Vollmer <mvo@zagadka.de>
1208
6642f7ac
MV
1209 * eval.c: Added comment on how to make case 1.1 of
1210 r5rs_pitfall.test succeed.
1211
cdac1be4
MV
1212 From Jan Nieuwenhuizen <janneke@gnu.org>. Thanks!
1213
1214 * hashtab.h: Bugfix: use SCM_API (WAS: extern).
1215
1216 * socket.c: Remove obsolete comment about socklen_t.
1217 (s_scm_setsockopt)[!HAVE_IP_MREQ]: Do not use ip_mreq code.
1218
1219 * numbers.h (isnan)[__MINGW32__]: Remove.
1220
1221 * Makefile.am (gen_scmconfig_SOURCES): Bugfix: Add
1222 DEFAULT_INCLUDES when cross compiling.
1223
1224 * threads.c (ETIMEDOUT, pipe)[__MINGW32__]: Add defines.
1225
a677679f 1226 * stime.c (scm_strftime)[!HAVE_TM_ZONE]: Use
cdac1be4
MV
1227 SCM_SIMPLE_VECTOR_REF instead of SCM_VELTS. (Changed slightly
1228 from Jan's patch.)
1229
9e664475
MV
12302005-05-22 Marius Vollmer <mvo@zagadka.de>
1231
188d0c5e
MV
1232 * unif.c (scm_make_shared_array): Add old base to new base since
1233 scm_array_handle_pos does not include the base.
1234 (scm_aind): Likewise.
1235
9e664475
MV
1236 * ports.c (scm_putc, scm_puts): Assert that the port argument is a
1237 output port.
1238
5a6d139b
NJ
12392005-05-12 Neil Jerram <neil@ossau.uklinux.net>
1240
1241 Mac OS X compile warning fixes, reported by Richard Todd.
1242
1243 * unif.c (scm_i_read_array): Declare rank as ssize_t, to guarantee
1244 that it is signed.
1245
1246 * strports.c (st_resize_port): Add unsigned char cast.
1247 (scm_mkstrport): Make read/write_buf cast unsigned.
1248
1249 * srfi-13.c (string_titlecase_x): Add unsigned char cast.
1250
1251 * rdelim.c (scm_read_line): Initialize slen.
1252
1253 * load.c (scm_search_path): Remove weird >=1, and add
1254 parentheses to clarify conditions.
1255
1256 * hash.c (scm_hasher): Add const unsigned char cast.
1257
1258 * gh_data.c (gh_chars2byvect): Add scm_t_int8 cast.
1259
b01532af
NJ
12602005-05-11 Neil Jerram <neil@ossau.uklinux.net>
1261
9a5fa6e9 1262 Fix C99isms reported by Ludovic Courtès:
b01532af
NJ
1263
1264 * threads.c (s_scm_lock_mutex): Don't declare msg in middle of
1265 code.
1266
1267 * gc.c (s_scm_gc_live_object_stats): Don't declare alist in middle
1268 of code.
1269
1270 * gc-card.c (scm_i_card_statistics): Don't declare tag in middle
1271 of code.
1272 (scm_i_card_statistics): Add block for declarations of tag_as_scm
1273 and current.
1274
229a0710
NJ
12752005-05-10 Neil Jerram <neil@ossau.uklinux.net>
1276
1277 * scmsigs.c (signal_delivery_thread): Return a value, to avoid
1278 compile warning reported by Werner Scheinast.
1279
645dd3fc
HWN
12802005-04-30 Han-Wen Nienhuys <hanwen@xs4all.nl>
1281
80038021
HWN
1282 * list.h: remove scm_list()
1283
645dd3fc
HWN
1284 * fluids.c (DYNAMIC_STATE_NEXT_LOC): new macro for use with
1285 SCM_DEBUG_CELL_ACCESSES
1286 (FLUID_NEXT_LOC): idem.
1287
9a68a4a8
KR
12882005-04-30 Kevin Ryde <user42@zip.com.au>
1289
1290 * numbers.c (scm_divide): Correction to 1/complex and <any>/complex,
1291 need to test abs(re)<abs(im) for choice of cases, otherwise divide by
1292 zero when re==0 and im<0. Reported by Jean Crepeau.
1293
0640cdaa
KR
12942005-04-25 Kevin Ryde <user42@zip.com.au>
1295
1296 * ramap.c (scm_array_map_x): Allow no source args, add num args checks
4d54ee35
KR
1297 to subr_1, subr_2, subr_2o and dsubr cases. No source args only has a
1298 few sensible uses (like filling with a random number generator say),
1299 but has been allowed in the past and so should be kept.
0640cdaa 1300
c0b85e9c
KR
13012005-04-23 Kevin Ryde <user42@zip.com.au>
1302
1303 * hashtab.c (scm_hashx_remove_x): Need to pass "closure" to
1304 scm_hash_fn_remove_x.
1305
1306 * list.c (scm_cons_star): Don't modify the rest list, it belongs to
1307 the caller when cons* is reached through apply.
1308
1309 * list.c (list): Use scm_list_copy, so as to produce a fresh list when
1310 list is called using apply, under the debugging evaluator.
1311 (scm_list): Remove.
1312
c51682b4
KR
1313 * list.c, list.h (scm_make_list): New code, moving make-list from
1314 boot-9.scm.
8cb2eff8 1315
c0575bde
KR
13162005-04-14 Kevin Ryde <user42@zip.com.au>
1317
1318 * numbers.c, numbers.h (scm_oneplus, scm_oneminus): New functions,
1319 converted from scheme code in boot-9.scm.
1320
47a298d9
KR
13212005-04-11 Kevin Ryde <user42@zip.com.au>
1322
1323 * srfi-13.c (scm_string_concatenate, scm_string_concatenate_shared):
1324 Validate list argument, scm_string_append and scm_string_append_shared
1325 don't do that to their rest argument (in a normal build).
1326
8ea3dc2e
MV
13272005-04-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1328
1329 * hashtab.h, hashtab.c (scm_t_hashtable): Removed 'closure' field. The
1330 closure can not be stored since it is no longer valid at GC time.
1331 (make_hash_table): Initialize 'hash_fn' field.
1332 (scm_i_rehash): Only store hash_fn in hash table when closre is
1333 NULL.
1334 (rehash_after_gc): Only call scm_i_rehash when 'hash_fn' is
1335 non-NULL. Always use a NULL closure.
1336 (scm_hash_fn_create_handle_x): Also rehash when table contains too
1337 few entries.
1338
08d2020d
MV
13392005-03-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1340
1341 * hashtab.h, hashtab.c (scm_hash_fx_remove_x): Removed delete_fn
1342 argument; always use scm_delq_x. The delete_fn function works on
1343 the handle, not the key, and it therefore makes no sense to make
1344 it configurable. Changed all callers.
1345 (scm_hashx_remove_x): Likewise. Also, exported to Scheme.
1346 (scm_hash_clear): Accept plain vectors as hashtables.
1347 (scm_delx_x): Removed.
1348
cb975c21
HWN
13492005-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
1350
1351 * inline.h (scm_double_cell): use __asm__ iso. asm, to maintain
1352 compatibility with gcc -std=c99.
1353
4c908f2c
MD
13542005-03-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1355
1356 * async.h (scm_mask_ints): Removed left over reference to
1357 scm_root.
1358
1359 * threads.c: Removed fprintf debug statements.
1360
d193b04b
NJ
13612005-03-24 Neil Jerram <neil@ossau.uklinux.net>
1362
1363 * debug.c (scm_make_memoized): Restore use of SCM_UNPACK.
1364
c29748cd
NJ
13652005-03-23 Neil Jerram <neil@ossau.uklinux.net>
1366
1367 * debug.c (scm_make_memoized): Remove unnecessary critical
1368 section, and simplify by using SCM_RETURN_NEWSMOB.
1369
e654b062
MD
13702005-03-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1371
1372 * strings.h (SCM_STRING_UCHARS): Added missing argument.
1373
4bc6f1c6
KR
13742005-03-18 Kevin Ryde <user42@zip.com.au>
1375
1376 * arbiters.c (FETCH_STORE) [generic C]: Should be
9a5fa6e9 1377 scm_i_scm_pthread_mutex_lock/unlock now. Reported by Ludovic Courtès.
4bc6f1c6 1378
f1531813
KR
13792005-03-13 Kevin Ryde <user42@zip.com.au>
1380
1381 * numbers.c, numbers.h (scm_i_clonebig): Remove static, so can use in
1382 srfi-60.
1383
1384 * numbers.c (scm_logior): Must scm_i_normbig results as per scm_logand,
1385 because OR-ing bits into a negative can reduce the value to an inum.
1386
1387 * numbers.c (scm_num_eq_p): On 64-bit systems, be careful about
1388 casting inum to double since that can lose precision.
1389
a9fae247
MV
13902005-03-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1391
1392 * threads.h, threads.c (scm_i_thread): Added gc_running_p field.
1393 (guilify_self_1): Initialize it.
1394
1395 * gc.h, gc.c (SCM_FREECELL_P): Removed for good.
1396 (scm_block_gc, scm_gc_heap_lock): Removed. Removed all uses.
1397 (scm_gc_running_p): Now a macro that refers to the scm_i_thread
1398 field.
1399 (scm_i_sweep_mutex): Now a non-recursive mutex. GC can not happen
1400 recursively.
1401 (scm_igc, scm_i_gc): Renamed former to latter. Changed all uses.
1402 Do not lock scm_i_sweep_mutex, which is now non-recursive, or set
1403 scm_gc_running_p. Do not run the scm_after_gc_c_hook.
1404 (scm_gc): Lock scm_i_sweep_mutex, set scm_gc_running_p and run the
1405 scm_after_gc_c_hook here.
1406 (scm_gc_for_new_cell): Set scm_gc_running_p here and run the
1407 scm_after_gc_c_hook when a full GC has in fact been performed.
1408 (scm_i_expensive_validation_check): Call scm_gc, not scm_i_gc.
1409
1410 * gc-segment.c (scm_i_get_new_heap_segment): Do not check
1411 scm_gc_heap_lock.
1412
1413 * gc-malloc.c (scm_realloc, increase_mtrigger): Set
1414 scm_gc_running_p while the scm_i_sweep_mutex is locked.
1415
1416 * inline.h (scm_cell, scm_double_cell): Do not check
1417 scm_gc_running_p, allocation during sweeping is OK.
1418
1419 * gdbint.c (SCM_BEGIN_FOREIGN_BLOCK, SCM_END_FOREIGN_BLOCK): Do
1420 not set scm_block_gc.
1421
1422 * init.c (scm_i_init_guile): Do not set scm_block_gc.
1423
1424 * deprecation.c (scm_c_issue_deprecation_warning): Use malloc
1425 instead of scm_malloc. The latter can not be used during GC.
1426
d1c38e11
MV
14272005-03-09 Marius Vollmer <mvo@zagadka.de>
1428
1429 * script.c (scm_compile_shell_switches): Added 2005 to Copyright
1430 years.
1431
99ec43c1
MV
14322005-03-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1433
1434 * gc-card.c (scm_i_sweep_card): Do not increase/decrease
1435 scm_gc_running_p. Sweeping can happen in parallel with
1436 allocation.
1437
1438 * inline.h: Updated comments for current threading implementation.
1439
1440 * threads.h, threads.c (scm_i_frame_single_threaded): Removed.
1441 (scm_i_thread): Removed unused signal_asyncs field.
1442 (threads_mark): Do not mark it.
1443 (guilify_self_1): Do not initialize it. Do initialize
1444 continuation_root field.
1445 (do_thread_exit): Do not remove thread from all_threads list.
1446 (on_thread_exit): Do it here, after leaving guile mode.
1447 (sleep_level): Removed.
1448 (scm_i_thread_put_to_sleep): Leave thread_admin_mutex locked when
1449 returning. Do not support recursive sleeps.
1450 (scm_i_thread_wake_up): Expect thread_admin_mutex to be locked on
1451 entry. Do not support recursive sleeps.
1452
1453 * fluids.c (ensure_state_size, ensure_all_state_sizes,
1454 resize_all_states): Collapsed ensure_state_size and
1455 ensure_all_state_sizes into one function named resize_all_states.
1456 Allocate new vectors outside of single threaded region. Do only
1457 simple things inside that region.
1458 (scm_make_fluid, scm_make_dynamic_state): Lock fluid_admin_mutex
1459 while adding to the global lists.
1460
1461
461f34aa
MV
14622005-03-08 Marius Vollmer <mvo@zagadka.de>
1463
1464 libltdl is no longer distributed. We expect it to be installed
1465 already.
1466
1467 * Makefile.am (INCLUDES): Removed @LTDLINCL@.
1468 (libguile_la_LIBADD): Removed @LIBLTDL@.
1469
4e047c3e
MV
14702005-03-07 Marius Vollmer <mvo@zagadka.de>
1471
1472 * threads.h, async.h, threads.c (SCM_CRITICAL_SECTION_START,
1473 SCM_CRITICAL_SECTION_END): Moved here from threads.h since now
1474 they also block/unblock execution of asyncs and call
1475 scm_async_click which is declared in async.h but threads.h can not
1476 include async.h since async.h already includes threads.h.
1477 (scm_i_critical_section_level): New, for checking mistakes in the
1478 use of the SCM_CRITICAL_SECTION_* macros.
1479 (scm_i_critical_section_mutex): Make it a recursive mutex so that
1480 critical sections can be nested.
1481
1482 * throw.c (scm_ithrow): Abort when scm_i_critical_section_level is
1483 not zero.
1484
1485 * threads.h, threads.c (scm_frame_lock_mutex): New.
1486 (scm_frame_critical_section): Take mutex as argument.
1487 (framed_critical_section_mutex): New, used as default for above.
1488 (scm_init_threads): Initialize it.
1489 (scm_threads_prehistory): Do not initialize thread_admin_mutex and
1490 scm_i_critical_section_mutex; both are initialized statically.
1491
1492 * continuation.c, deprecated.c, goops.c, guardians.c keywords.c,
1493 libguile_la-arrays.loT, objprop.c, ports.c, smob.c, sort.s,
b9d9ad3a
MV
1494 srcprop.c, stime.c, struct.c, throw.c, regex-posix.c: Include
1495 "libguile/async.h" for SCM_CRITICAL_SECTION_START/END.
4e047c3e
MV
1496
1497 * debug.c (scm_debug_options): Replace
1498 SCM_CRITICAL_SECTION_START/END with a frame and
1499 scm_frame_critical_section.
1500
1501 * continuations.c (scm_make_continuation): No longer a critical
1502 section.
1503 (scm_dynthrow): Abort when scm_i_critical_section_level is
1504 not zero.
1505
d0a45bff
MV
15062005-03-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1507
db6673e5
MV
1508 * threads.c (scm_try_mutex): Renamed argument for consistency.
1509
d0a45bff
MV
1510 * root.c (scm_call_with_dynamic_root): New docstring.
1511
1512 * eval.c: Define _GNU_SOURCE.
1513
9de87eea
MV
15142005-03-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1515
1516 Big merge from the mvo-thread-cleanup branch. The main changes
1517 are:
1518
1519 - The dynamic roots functionality has been split into dynamic
1520 states and continuations barriers. Fluids have been
1521 reimplemented and can now be garbage collected.
1522
1523 - Initialization of Guile now works in a multi-thread friendly
1524 manner. Threads can freely enter and leave guile mode.
1525
1526 - Blocking on mutexes or condition variables or while selecting
1527 can now be reliably interrupted via system asyncs.
1528
1529 - The low-level threading interface has been removed.
1530
1531 - Signals are delivered via a pipe to a dedicated 'signal delivery
1532 thread'.
1533
1534 - SCM_DEFER_INTS, SCM_ALLOW_INTS etc have been deprecated.
1535
1536 * throw.c (scm_handle_by_message): Exit only the current thread,
1537 not the whole process.
1538 (scm_handle_by_message_noexit): Exit when catching 'quit.
1539
1540 * scmsigs.c (take_signal, signal_delivery_thread,
1541 start_signal_delivery_thread, ensure_signal_delivery_thread,
1542 install_handler): Reimplemented signal delivery as explained in
1543 the comments.
1544
1545 * pthreads-threads.h (scm_i_pthread_t, scm_i_pthread_self,
1546 scm_i_pthread_create, scm_i_pthread_detach, scm_i_pthread_exit,
1547 scm_i_sched_yield, scm_i_pthread_sigmask,
1548 SCM_I_PTHREAD_MUTEX_INITIALIZER,
1549 SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER, scm_i_pthread_mutex_t ,
1550 scm_i_pthread_mutex_init, scm_i_pthread_mutex_destroy,
1551 scm_i_pthread_mutex_trylock, scm_i_pthread_mutex_lock,
1552 scm_i_pthread_mutex_unlock, SCM_I_PTHREAD_COND_INITIALIZER,
1553 scm_i_pthread_cond_t, scm_i_pthread_cond_init,
1554 scm_i_pthread_cond_destroy, scm_i_pthread_cond_signal,
1555 scm_i_pthread_cond_broadcast, scm_i_pthread_cond_wait,
1556 scm_i_pthread_cond_timedwait, scm_i_pthread_once_t,
1557 SCM_I_PTHREAD_ONCE_INIT, scm_i_pthread_once, scm_i_pthread_key_t ,
1558 scm_i_pthread_key_create, scm_i_pthread_setspecific,
1559 scm_i_pthread_getspecific, scm_i_scm_pthread_mutex_lock,
1560 scm_i_frame_pthread_mutex_lock, scm_i_scm_pthread_cond_wait,
1561 scm_i_scm_pthread_cond_timedwait): Provide the obvious mapping
1562 when using pthreads.
1563 * null-threads.c, null-threads.h: Provide dummy definitions for
1564 the above symbols when not using pthreads.
1565
1566 * modules.h, modules.c (scm_frame_current_module): New.
1567
1568 * load.c (scm_primitive_load): Use scm_i_frame_current_load_port
1569 instead of scm_internal_dynamic_wind.
1570
1571 * init.h, init.c (restart_stack, start_stack): Removed.
1572 (scm_boot_guile, invoke_main_func): Simply use scm_with_guile.
1573 (scm_boot_guile_1): Removed.
1574 (scm_i_init_mutex): New.
1575 (really_cleanup_for_exit, cleanup_for_exit): New.
1576 (scm_init_guile_1, scm_i_init_guile): Renamed former to latter.
1577 Moved around some init funcs. Call
1578 scm_init_threads_default_dynamic_state. Register cleanup_for_exit
1579 with atexit.
1580
1581 * hashtab.c (scm_hash_fn_create_handle_x, scm_hash_fn_remove_x):
1582 Use "!scm_is_eq" instead of "!=".
1583
1584 * ge-scmconfig.c, gen-scmconfig.h.in (SCM_I_GSC_USE_COOP_THREADS,
1585 SCM_USE_COOP_THREADS): Removed.
1586
1587 * gc.c (scm_igc): Take care that scm_gc_running_p is properly
1588 maintained. Unlock scm_i_sweep_mutex before running
1589 scm_after_gc_c_hook.
1590 (scm_permanent_object): Allocate outside of critical section.
1591 (cleanup): Removed.
1592
1593 * fluids.h, fluids.c: Reimplemented completely.
1594 (SCM_FLUID_NUM, SCM_FAST_FLUID_REF,
1595 SCM_FAST_FLUID_SET): Reimplemented as functions.
1596 (scm_is_fluid): New.
1597 (scm_i_make_initial_fluids, scm_i_copy_fluids): Removed.
1598 (scm_make_dynamic_state, scm_dynamic_state_p,
1599 scm_is_dynamic_state, scm_current_dynamic_state,
1600 scm_set_current_dynamic_state, scm_frame_current_dynamic_state,
1601 scm_c_with_dynamic_state, scm_with_dynamic_state,
1602 scm_i_make_initial_dynamic_state, scm_fluids_prehistory): New.
1603
1604 * feature.c (progargs_fluid): New.
1605 (scm_program_arguments, scm_set_program_arguments): Use it instead
1606 of scm_progargs.
1607 (scm_init_feature): Allocate it. Also, only add "threads" feature
1608 when SCM_USE_PTHREAD_THREADS is true.
1609
1610 * eval.c (scm_makprom): Use scm_make_recursive_mutex instead of
1611 scm_make_rec_mutex, with all the consequences.
1612 (scm_eval_x, scm_eval): Use scm_frame_begin etc instead of
1613 scm_internal_dynamic_wind. Handle dynamic states as second
1614 argument.
1615
1616 * threads.h, threads.c (scm_internal_select): Renamed to
1617 scm_std_select and discouraged old name.
1618 (scm_thread_sleep, scm_thread_usleep): Likewise, as scm_std_sleep
1619 and scm_std_usleep.
1620 (scm_tc16_fair_mutex, scm_tc16_fair_condvar, SCM_MUTEXP,
1621 SCM_FAIR_MUTEX_P, SCM_MUTEX_DATA, SCM_CONDVARP,
1622 SCM_FAIR_CONDVAR_P, SCM_CONDVAR_DATA, SCM_THREADP,
1623 SCM_THREAD_DATA): Removed.
1624 (SCM_I_IS_THREAD, SCM_I_THREAD_DATA): New.
1625 (scm_i_thread): New.
1626 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
1627 Use scm_assert_smob_type.
1628 (scm_c_scm2thread, scm_thread_join, scm_thread_detach,
1629 scm_thread_self, scm_thread_yield, scm_mutex_init,
1630 scm_mutex_destroy, scm_mutex_trylock, scm_mutex_unlock,
1631 scm_rec_mutex_init, scm_rec_mutex_destroy, scm_make_rec_mutex,
1632 scm_rec_mutex_free, scm_rec_mutex_lock, scm_rec_mutex_trylock,
1633 scm_cond_init, scm_cond_destroy, scm_cond_wait,
1634 scm_cond_timedwait, scm_cond_signal, scm_cond_broadcast,
1635 scm_key_create, scm_key_delete, scm_setspecific, scm_getspecific,
1636 scm_thread_select): Removed. Replaced with scm_i_pthread
1637 functions as appropriate.
1638 (scm_in_guile, scm_outside_guile): Removed.
1639 (scm_t_guile_ticket, scm_leave_guile, scm_enter_guile): Return and
1640 take a ticket.
1641 (scm_with_guile, scm_without_guile, scm_i_with_guile_and_parent):
1642 New.
1643 (scm_i_frame_single_threaded): New.
1644 (scm_init_threads_default_dynamic_state): New.
1645 (scm_i_create_thread): Removed.
1646 (scm_make_fair_mutex, scm_make_fair_condition_variable): Removed.
1647 (scm_make_recursive_mutex): New.
1648 (scm_frame_critical_section): New.
1649 (SCM_CURRENT_THREAD, SCM_I_CURRENT_THREAD): Renamed former to
1650 latter, changed all uses.
1651 (scm_i_dynwinds, scm_i_setdynwinds, scm_i_last_debug_frame,
1652 scm_i_set_last_debug_frame): New, use them instead of scm_root
1653 stuff.
1654 (SCM_THREAD_LOCAL_DATA, SCM_SET_THREAD_LOCAL_DATA,
1655 scm_i_root_state_key,m scm_i_set_thread_data): Removed.
1656 (scm_pthread_mutex_lock, scm_frame_pthread_mutex_lock,
1657 scm_pthread_cond_wait, scm_pthread_cond_timedwait).
1658 (remqueue): Allow the removal of already removed cells. Indicate
1659 whether a real removal has happened.
1660 (scm_thread): Removed, replaced with scm_i_thread.
1661 (make_thread, init_thread_creatant): Removed.
1662 (cur_thread): Removed.
1663 (block_self, unblock_from_queue): New.
1664 (block, timed_block, unblock): Removed.
1665 (guilify_self_1, guilify_self_2, do_thread_exit,
1666 init_thread_key_once, init_thread_key,
1667 scm_i_init_thread_for_guile, get_thread_stack_base,
1668 scm_init_guile): New initialisation method.
1669 (scm_call_with_new_thread, scm_spawn_thread): Use it to simplify
1670 thread creation.
1671 (fair_mutex, fat_mutex, etc, fair_condvar, fat_condvar): Renamed
1672 "fair" to fat and implemented new semantics, including reliable
1673 interruption.
1674 (all_threads): Now a pointer to a scm_i_thread, not a SCM.
1675 (scm_threads_mark_stacks): Explicitly mark handle.
1676 (scm_std_select): Allow interruption by also selecting on the
1677 sleep_pipe.
1678 (scm_i_thread_put_to_sleep): Handle recursive requests for
1679 single-threadedness.
1680 (scm_threads_prehistory, scm_init_threads): Put current thread
1681 into guile mode via guileify_self_1 and guileify_self_2,
1682 respectively.
1683
1684 * fluid.h (SCM_FLUIDP): Deprecated.
1685
1686 * coop-threads.c: Removed.
1687
1688 * continuations.h, continuations.c (scm_with_continuation_barrier,
1689 scm_c_with_continuation_barrier, scm_i_with_continuation_barrier):
1690 New.
1691
1692 * async.h, async.c (scm_i_setup_sleep, scm_i_reset_sleep): New.
1693 (async_mutex): New.
1694 (scm_async_click): Protected with async_mutex. Do not deal with
1695 signal_asyncs, which are gone. Set cdr of handled async cell to
1696 #f.
1697 (scm_i_queue_async_cell): Protected with async_mutex. Interrupt
1698 current sleep.
1699 (scm_system_async_mark_for_thread): Do not use scm_current_thread
1700 since that might not work during early initialization.
1701
1702 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS, SCM_REDEFER_INTS,
1703 SCM_REALLOW_INTS): Deprecated by moving into deprecated.h and
1704 deprecated.c. Replaced all uses with SCM_CRITICAL_SECTION_START
1705 and SCM_CRITICAL_SECTION_END.
1706 (SCM_ENTER_A_SECTION, SCM_EXIT_A_SECTION): Removed. Replaced with
1707 SCM_CRITICAL_SECTION_START/END.
1708
1709 * Makefile.am (modinclude_HEADER): Removed threads-plugin.h.
1710 (libguile_la_SOURCES): Added null-threads.c
1711 (EXTRA_libguile_la_SOURCES): Removed pthread-threads.c and
1712 threads-plugin.c.
1713 * pthread-threads.c, threads-plugin.c, threads-plugin.h: Removed.
1714
1715 * root.h, root.c (scm_tc16_root, SCM_ROOTP, SCM_ROOT_STATE,
1716 scm_root_state, scm_stack_base, scm_save_regs_gc_mark,
1717 scm_errjmp_bad, scm_rootcont, scm_dynwinds, scm_progargs,
1718 scm_last_debug_frame, scm_exitval, scm_cur_inp, scm_outp,
1719 scm_cur_err, scm_cur_loadp, scm_root, scm_set_root,
1720 scm_make_root): Removed or deprecated. Replaced with references
1721 to the current thread, dynamic state, continuation barrier, or
1722 some fluid, as appropriate.
1723 (root_mark, root_print): Removed.
1724 (scm_internal_cwdr): Reimplemented guts with
1725 scm_frame_current_dynamic_state and
1726 scm_i_with_continuation_barrier.
1727 (scm_dynamic_root): Return current continuation barrier.
1728
1729
ad3d5a65
MV
17302005-02-28 Marius Vollmer <mvo@zagadka.de>
1731
1732 * socket.c (scm_setsockopt): Handle IP_ADD_MEMBERSHIP and
1733 IP_DROP_MEMBERSHIP options. Also, reorganized the code a bit for
1734 cleanliness.
1735 (scm_init_socket): Define IP_ADD_MEMBERSHIP and
1736 IP_DROP_MEMBERSHIP.
1737 Thanks to Greg Troxel!
1738
73a90115
MD
17392005-02-27 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1740
1741 * gh.h: Bugfix: Include <libguile.h> outside of the extern "C"
1742 block.
1743
5d2cb3ab
MV
17442005-02-25 Marius Vollmer <mvo@zagadka.de>
1745
1746 * hashtab.c (scm_i_rehash): Remove elements from old bucket vector
1747 so that no two weak alist vectors share a spine.
1748 (scm_hash_fn_create_handle_x): Deal with a possible rehashing
1749 during GC before inserting the new alist cell.
1750
838c4126
MV
17512005-02-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1752
1753 * hashtab.c (scm_i_rehash): Cope with the case that a GC modifies
1754 the hashtable.
1755 (scm_hash_fn_create_handle_x): Likewise.
1756 * vectors.h (SCM_I_SET_WVECT_TYPE): New, for use in scm_i_rehash.
1757
29fed193
MD
17582005-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1759
1760 * unif.c (prototype_to_type): Bugfix: Don't compare prototype to
1761 the prototypical examples mentioned in the old reference manual.
1762 Instead keep the old semantics of dispatching on type. (Yes, this
1763 is extremely ugly, but the whole point of keeping the deprecated
1764 interface is not to break old code.)
1765
9cc49060
MD
17662005-02-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1767
1768 * deprecated.h (SCM_ARRAY_DIMS): Rename scm_i_attay_dims -->
1769 scm_i_array_dims.
1770
8447f463
KR
17712005-01-28 Kevin Ryde <user42@zip.com.au>
1772
1773 * numbers.c (scm_ash): Rewrite using shifts, much faster than
1774 integer-expt and multiply/divide. Inexacts and fractions no longer
1775 supported (they happened to work before for left shifts, but not
1776 right). Don't really need inexacts and fractions, since ash is
1777 documented as a "bitwise operation", and all the rest of those only
1778 take exact integers.
1779
1367aa5e
HWN
17802005-01-27 Han-Wen Nienhuys <hanwen@xs4all.nl>
1781
856fca7e
HWN
1782 * gc-card.c (scm_i_card_statistics): map structs, closures and
1783 subrs to one tag.
1784
1367aa5e 1785 * gc.c (s_scm_gc_live_object_stats): return alist, not hashtable.
856fca7e 1786 (tag_table_to_type_alist): ignore unknown types.
1367aa5e
HWN
1787
1788 * gc-segment.c (scm_i_all_segments_statistics): new function.
1789 (scm_i_heap_segment_statistics): new function
1790
1791 * gc.c (s_scm_gc_live_object_stats): new GUILE callable: return
1792 statistics on the number of live objects of each type.
1793
1794 * gc-card.c (scm_i_tag_name): new function.
1795 (scm_i_card_statistics): new function.
1796
333db3b8
KR
17972005-01-24 Kevin Ryde <user42@zip.com.au>
1798
1799 * posix.c (scm_setlocale): Force errno=EINVAL for an error, since
1800 POSIX and C99 don't document errno being set. Reported by Bruno
1801 Haible.
1802 (scm_flock): Update docstring from manual.
1803
8447f463
KR
1804 * random.c (scm_i_init_rstate): Compare w to -1 not 0xffffffffUL, now
1805 that it's an scm_t_int32. Otherwise gcc 3.4 says it's always false on
1806 a 64-bit system.
1807
1808 * scmsigs.c (scm_sigaction_for_thread): Use scm_to_long for
1809 sa_handler, needs to be a long on 64-bit systems where int is only 32
1810 bits.
1811
88f59e53
MV
18122005-01-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1813
0eeb2611
MV
1814 * environments.c (obarray_enter, obarray_replace): Call
1815 SCM_HASHTABLE_INCREMENT when adding a new entry.
1816
88f59e53
MV
1817 * objects.c: Include goops.h for the scm_class_of prototype.
1818
1819 * hashtab.c (hashtable_size, HASHTABLE_SIZE_N): Restrict hashtable
1820 sizes to be smaller than the maximum lengths of vectors.
1821
219b2868
MV
18222005-01-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1823
1824 * ports.c, smob.c: Include "libguile/goops.h".
1825
1826 * objects.h, objects.c, goops.c, goops.h (scm_class_boolean,
1827 scm_class_char, scm_class_pair, scm_class_procedure,
1828 scm_class_string, scm_class_symbol,
1829 scm_class_procedure_with_setter, scm_class_primitive_generic,
1830 scm_class_vector, scm_class_null, scm_class_real,
1831 scm_class_complex, scm_class_integer, scm_class_fraction,
1832 scm_class_unknown, scm_port_class, scm_smob_class,
1833 scm_no_applicable_method, scm_class_of): Moved from objects to
1834 goops since they are only useable once goops has been loaded.
1835 (scm_classes_initialized): Removed.
1836 (scm_class_of): Do not check it.
1837 (create_standard_classes): Do not set it.
1838
009c6b9c
MV
18392005-01-17 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1840
50472546
MV
1841 * objects.h, objects.c (scm_classes_initialized): New.
1842 (scm_class_of): Signal error when scm_classes_initialized is zero.
1843 * goops.c (create_standard_classes): Set scm_classes_initialized
1844 to one.
1845
009c6b9c
MV
1846 * random.c (scm_random_solid_sphere_x): Use
1847 scm_c_generalized_vector_length instead of
1848 scm_uniform_vector_length.
1849
7719cbe9
MV
18502005-01-16 Marius Vollmer <mvo@zagadka.de>
1851
1852 * script.c (scm_compile_shell_switches): Removed debugging output.
1853
1ec44fed
KR
18542005-01-15 Kevin Ryde <user42@zip.com.au>
1855
1856 * numbers.c (scm_logtest, scm_logbit_p, scm_integer_expt): Update
1857 docstrings from manual.
1858 * random.c (scm_random_solid_sphere_x): Update docstring from manual.
1859
6e4cd850
MV
18602005-01-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1861
0b5a0521
MV
1862 * random.c: Don't check for definedness of SCM_HAVE_T_INT64, check
1863 its value.
1864
1865 Implement u64 and s64 uniform numeric vectors with bignums when
1866 scm_t_uint64 and scm_t_int64 are not available.
1867
1868 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_take_u64vector,
1869 scm_array_handle_u64_elements,
1870 scm_array_handle_u64_writable_elements, scm_u64vector_elements,
1871 scm_u64vector_writable_elements): Do not define when scm_t_uint64
1872 is not available.
1873 (scm_take_s64vector, scm_array_handle_s64_elements,
1874 scm_array_handle_s64_writable_elements, scm_s64vector_elements,
1875 scm_s64vector_writable_elements): Likewise for scm_t_int64.
1876 (uvec_sizes, uvec_print, uvec_equalp): Use SCM bignums when
1877 scm_t_int64/scm_t_uint64 are not available.
1878 (uvec_mark): New, to mark the bignums.
1879 (alloc_uvec): Initialize bignums.
1880 (uvec_fast_ref): Return bignums directly.
1881 (scm_uint64_min, scm_uint64_max, scm_int64_min, scm_int64_max,
1882 assert_exact_integer): New.
1883 (uvec_fast_set): Use them to validate the bignums.
1884 (scm_init_srfi_4): Set mark function of smob when needed.
1885 Initialize scm_uint64_min, scm_uint64_max, scm_int64_min,
1886 scm_int64_max.
1887
6e4cd850
MV
1888 Recognize 1.4 -e syntax.
1889
1890 * script.c (sym_at, sym_atat, sym_main, all_symbols): New.
1891 (scm_compile_shell_switches): Use them to recognize and convert
1892 1.4 "-e" syntax.
1893
3b698afe
MV
18942005-01-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1895
1896 * deprecated.h, deprecated.c, strings.h, strings.c: Turn all
1897 deprecated features that once were macros but are now functions
1898 back into macros.
1899
d6dc83a9
MV
19002005-01-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1901
49086691
MV
1902 * eval.c, debug.h (SCM_WARN_DEPRECATED): New debug option.
1903 * deprecation.c (scm_issue_deprecation_warning,
1904 scm_c_issue_deprecation_warning_fmt): Use it.
1905 (mode): Removed.
1906 (print_summary): New.
1907 (scm_init_deprecation): Initialize SCM_WARN_DEPRECATED instead of
1908 mode.
1909
d6dc83a9
MV
1910 Deprecated SCM_ARRAY* macros.
1911
1912 * unif.h, unif.c, ramap.c, vectors.c, srfi-4.c, srfi-4.i.c
1913 (SCM_ARRAYP, SCM_I_ARRAYP): Renamed former to latter internal
1914 version. Changed all uses.
1915 (scm_tc16_array, scm_i_tc16_array,
1916 scm_tc16_enclosed_array, scm_i_tc16_enclosed_array,
1917 SCM_ARRAY_FLAG_CONTIGUOUS, SCM_I_ARRAY_FLAG_CONTIGUOUS,
1918 SCM_ENCLOSE_ARRAYP, SCM_I_ENCLOSE_ARRAYP,
1919 SCM_ARRAY_NDIM, SCM_I_ARRAY_NDIM,
1920 SCM_ARRAY_CONTP, SCM_I_ARRAY_CONTP,
1921 SCM_ARRAY_MEM, SCM_I_ARRAY_MEM,
1922 SCM_ARRAY_V, SCM_I_ARRAY_V,
1923 SCM_ARRAY_BASE, SCM_I_ARRAY_BASE,
1924 SCM_ARRAY_DIMS, SCM_I_ARRAY_DIMS,
1925 scm_t_array, scm_i_t_array): Likewise.
1926 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
1927 Moved from unif.h to unif.c.
1928 (scm_c_array_rank): New.
1929 (scm_array_rank): Reimplement using it.
1930
1931 * deprecated.h, deprecated.c (SCM_ARRAYP, SCM_ARRAY_NDIM,
1932 SCM_ARRAY_CONTP, SCM_ARRAY_MEM, SCM_ARRAY_V, SCM_ARRAY_BASE,
1933 SCM_ARRAY_DIMS, scm_t_array): New deprecated versions.
1934
dc91d8de
MV
19352005-01-11 Marius Vollmer <mvo@zagadka.de>
1936
1937 * ramap.c: Replace uses of scm_make_ra with scm_i_make_ra.
1938 (GVREF, GVSET): New abbreviations. Use them everywhere instead of
1939 scm_c_generalized_vector_ref and scm_cvref, and
1940 scm_c_generalized_vector_set_x, respectively.
1941 (RVREF, IVDEP, BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
1942 UNARY_ELTS_CODE, UNARY_PAIR_ELTS_CODE): Removed since unused.
1943
1944 * unif.h, unif.c (indices_to_pos, scm_array_handle_pos): Renamed
1945 former to latter and made public. Changed all uses.
1946 (scm_i_make_ra): Made public, changed tag param to enclosed flag.
1947 (scm_make_ra): Deprecated, changed all uses to scm_i_make_ra.
1948 (scm_i_shap2ra): New internal version of scm_shap2ra.
1949 (scm_shap2ra): Deprecated, changed all uses to scm_i_shap2ra.
1950 (scm_i_ra_set_contp): New internal version of scm_ra_set_contp.
1951 (scm_ra_set_contp): Deprecated, changed all uses to
1952 scm_i_ra_set_contp.
1953 (scm_cvref, scm_aind, scm_raprin1): Deprecated.
1954
66d33784
MV
19552005-01-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1956
b06f099d
MV
1957 * eval.c (scm_eval): Added example to docstring. Thanks to Issac
1958 Trotts!
1959
5d35ad81
MV
1960 * unif.c (scm_list_to_typed_array): Allow the specification of the
1961 upper bound as well. This is needed for empty arrays.
1962 (l2ra): Give needed number of elements in error message.
1963 (scm_i_print_array): Print length information for arrays that need
1964 it.
1965 (scm_i_read_array): Parse it.
1966
66d33784
MV
1967 * deprecated.h, deprecated.c (SCM_CHARS, SCM_UCHARS, SCM_LENGTH,
1968 scm_i_object_chars, scm_i_object_length): Brought back from the
1969 dead.
1970
d7d7d401
MV
19712005-01-10 Marius Vollmer <mvo@zagadka.de>
1972
74c58fce
MV
1973 * ramap.c: Replaced single-index uses of scm_array_set_x with
1974 scm_c_generalized_vector_set_x.
1975
d7d7d401
MV
1976 * unif.c (scm_array_rank, scm_array_dimensions,
1977 scm_shared_array_offset, scm_shared_array_increments,
1978 scm_array_ref, scm_array_set_x): Use scm_t_array_handle operations
1979 to simplify code and make it more general.
1980 (scm_shared_array_root): Work with all kinds of arrays, including
1981 naked vectors.
1982 (indices_to_pos): New.
74c58fce
MV
1983 (scm_make_shared_array): Use it instead of scm_aind; use handle
1984 for oldra.
1985
4475d3fe
KR
19862005-01-10 Kevin Ryde <user42@zip.com.au>
1987
1988 * posix.c (scm_mkstemp): Update docstring from manual.
1989
d3ddc95e
KR
1990 * stime.c (scm_mktime): Missing default errno=EINVAL from prev change.
1991
8c8491f5
MV
19922005-01-09 Marius Vollmer <mvo@zagadka.de>
1993
b89ecc6f
MV
1994 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_i_uniform_vector_ref_proc,
1995 scm_i_uniform_vector_set_proc): New.
1996 (u8ref, u8set, s8ref, s8set, etc): New.
1997 (uvec_reffers, uvec_setters): New.
1998 (uvec_to_list): Use generic scm_array_handle_ref instead of
1999 uvec_fast_ref since scm_array_handle_ref should be faster now.
8cb01d9f
MV
2000 (coerce_to_uvec, scm_c_uniform_vector_ref,
2001 scm_c_uniform_vector_set_x): Likewise.
b89ecc6f
MV
2002
2003 * unif.h, unif.c, inline.h (scm_i_t_array_ref, scm_i_t_array_set):
2004 New.
2005 (scm_t_array_handle): Added ref, set, elements and
2006 writable_elements for fast inline operation of
2007 scm_array_handle_ref and scm_array_handle_set.
2008 (scm_array_handle_ref, scm_array_handle_set): Moved to inline.h
2009 and replaced with inline code that simply calls the ref/set
2010 members of the handle.
2011 (enclosed_ref, vector_ref, string_ref, bitvector_ref, memoize_ref,
2012 enclosed_set, vector_set, string_set, bitvector_set, memoize_set):
2013 New.
2014 (scm_array_handle_get): Initialize ref/set fields to memoize_ref
2015 and memoize_set.
2016 (scm_bitvector_fill_x, scm_bitvector_to_list, scm_bit_count,
2017 scm_bit_position, scm_bit_set_star_x, scm_bit_count_star,
2018 scm_bit_invert_x): Correctly multiply index with increment in the
2019 general case.
2020
8c8491f5
MV
2021 * unif.c (scm_array_handle_set): Correctly execute only one
2022 alternative. D'Oh!
2023 (scm_list_to_typed_array, l2ra): Use scm_t_array_handle to fill
2024 the array; this covers all cases with much simpler code.
2025
2026 * srfi-4.c (scm_uniform_element_size): Deprecated implementation
2027 as well.
2028
cd5d55c7
MV
20292005-01-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2030
2031 * srfi-4.c (uvec_type): New.
2032 (uvec_to_list, uvec_ref, uvec_set_x, scm_c_uniform_vector_ref,
2033 scm_c_uniform_vector_x): Use it to get concrete type.
2034
2035 * unif.h (scm_t_array_dim): Changed type of members to ssize_t, to
2036 fit the docs.
2037
2038 * unif.c (ra2l): Handle zero rank arrays.
2039 (scm_i_print_array): Print zero rank arrays specially.
2040 (tag_to_type): Return #t for an empty tag, not the empty symbol.
2041 (scm_i_read_array): Allow zero rank arrays.
2042
a4aad74e
MV
20432005-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2044
2045 * hashtab.h, hashtab.c (SCM_HASHTAB_BUCKET_LOC): Removed.
2046 (scan_weak_hashtables): Rewrote its use with SCM_HASHTAB_BUCKET
2047 and SCM_SET_HASHTAB_BUCKET.
2048
2049 * print.h, print.c (scm_print_state, SCM_PRINT_STATE_LAYOUT):
2050 Removed ref_stack field.
2051 (PSTATE_STACK_REF, PSTATE_STACK_SET): New, for accessing the stack
2052 of a print state. Use them everywhere instead of ref_stack.
2053
3a40d5e1
MV
2054 * srfi-4.h (scm_uniform_element_size): Deprecated for real.
2055
a4aad74e
MV
2056 * srfi-4.c: Include deprecation.h.
2057
2058 * vectors.h, vectors.c, unif.h, unif.c, deprecated.h,
2059 deprecated.c, eq.c
2060 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Removed.
2061 (scm_vector_elements, scm_vector_writable_elements,
2062 scm_generalized_vector_get_handle): Moved to vectors.[hc] from
2063 unif.[hc].
2064 (SCM_SIMPLE_VECTOR_LOC): Removed.
2065 (SCM_VECTOR_MAX_LENGTH, SCM_VECTOR_LENGTH, SCM_VELTS,
2066 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET,
2067 scm_vector_equal_p): Moved from vectors.[hc] to deprecated.[hc].
2068 (scm_vector_equal_p, scm_i_vector_equal_p): Renamed former to
2069 latter. Changed use in eq.c.
2070
f01fe441
MV
20712005-01-07 Marius Vollmer <mvo@zagadka.de>
2072
2073 Make the uniform vector routines also deal with one dimensional
2074 arrays.
2075
2076 * srfi-4.c (SCM_IS_UVEC): New, use it instead of
2077 SCM_SMOB_PREDICATE in this file.
2078 (is_uvec): Also recognize one-dimensional uniform numeric arrays
2079 of the right type.
2080 (scm_is_uniform_vector): Likewise.
2081 (uvec_fast_ref): Made BASE param const.
2082 (uvec_writable_elements, uvec_elements): New.
2083 (uvec_to_list, uvec_ref, uvec_set_x, uvec_length,
2084 scm_c_uniform_vector_length, scm_c_uniform_vector_ref,
2085 scm_c_uniform_set_x): Use them to also deal with one-dimensional
2086 arrays.
2087 (scm_uniform_vector_ref, scm_uniform_vector_set_x): Deprecate old
2088 argument convention.
2089 (scm_uniform_vector_to_list): Let uvec_to_list do all the
2090 checking.
2091 (scm_uniform_vector_length): Use uvec_length.
2092
2aaf5726
MV
20932005-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2094
2095 * srfi-4.h, srfi-4.c (scm_c_uniform_vector_element_size,
2096 scm_c_uniform_vector_size): Removed.
2097 (scm_array_handle_uniform_element_size): New.
2098
2099
2100 * unif.h (scm_array_handle_ref, scm_array_handle_set): Changed
2101 type of POS parameter to be signed, positions can be negative.
2102 (scm_array_handle_release): New, changed all uses of
2103 scm_t_array_handle to properly call it.
2104 (scm_vector_get_handle, scm_generalized_vector_get_handle):
2105 Renamed former to latter, changed all uses.
2106
34ae52fc
MV
21072005-01-05 Marius Vollmer <mvo@zagadka.de>
2108
2109 Updated bitvector routines to also use scm_t_array_handles.
2110
2111 * unif.h (scm_bitvector_elements,
2112 scm_bitvector_writable_elements): Use a scm_t_array_handle and
2113 deliver offset, length and increment to caller. Changed all uses.
2114 (scm_bitvector_release_elements,
2115 scm_frame_bitvector_release_elements,
2116 scm_bitvector_release_writable_elements,
2117 scm_frame_bitvector_release_writable_elements): Removed.
2118 (scm_array_handle_bit_elements,
2119 scm_array_handle_bit_writable_elements,
2120 scm_array_handle_bit_elements_offset): New.
2121 (scm_make_typed_array): The special value for non-initialized
2122 arrays is now SCM_UNSPECIFIED. The old special value SCM_BOOL_F
2123 was a valid value to fill bitvectors with, so it can't really be
2124 specialed out.
2125
c4cb7628
KR
21262005-01-04 Kevin Ryde <user42@zip.com.au>
2127
2128 * stime.c (scm_strftime): Free t.tm_zone produced by bdtime2c.
2129 Reported by Bill Schottstaedt.
2130
0356881d
MV
21312005-01-02 Marius Vollmer <mvo@zagadka.de>
2132
2133 * sort.c (quicksort): Added INC parameter for non-contigous
2134 vectors.
2135 (quicksort1): New, for contigous vectors. Both functions are
2136 generated from the same code by including "quicksort.i.c".
2137 (scm_restricted_vector_sort_x): Call one of quicksort and
2138 quicksort1, depending on increment of vector.
2139 (scm_sort): Simply call scm_sort_x on a copy of the list or
2140 vector.
2141 (scm_merge_vector_x, scm_merge_vector_step): Changed indices to
2142 size_t, added inc parameter.
2143 (scm_stable_sort_x): Allocate temporary storage as Scheme vector
2144 so that it doesn't leak.
2145 (scm_stable_sort): Simply call scm_stable_sort_x on a copy of the
2146 list or vector.
2147
2148 * ramap.c (scm_array_map_x): Do not try to convert fill value
2149 before filling, any necessary conversion is done while storing.
2150
2151 * gc-card.c (scm_i_sweep_card): Call scm_i_vector_free instead of
2152 doing it inline.
2153
2154 * hashtab.c, hashtab.h (SCM_HASHTABLE_BUCKETS): Removed.
2155 (SCM_HASHTABLE_BUCKET, SCM_HASHTABLE_BUCKET_LOC): New. Replaced
2156 all uses of SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
2157
2158 * tags.h, weaks.c, vports.c, hashtab.c, convert.c, sort.c,
2159 convert.c, convert.h, convert.i.c, deprecated.c, environments.c,
2160 eval.c, filesys.c, fluids.c, gc-mark.c, gh.h, gh_data.c, goops.c,
2161 hash.c, init.c, libguile_la-arrays.loT, modules.c, net_db.c,
2162 objects.c, ports.c, posix.c, print.c, random.c, read.c,
2163 regex-posix.c, scmsigs.c, socket.c, stime.c, symbols.c: Use new
2164 vector elements API or simple vector API, as appropriate. Removed
2165 SCM_HAVE_ARRAYS ifdefery. Replaced all uses of
2166 SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
2167
2168 * srfi-4.h, srfi-4.c,
2169 srfi-4.i.c (scm_array_handle_uniform_elements,
2170 scm_array_handle_uniform_writable_elements,
2171 scm_uniform_vector_elements,
2172 scm_uniform_vector_writable_elements):
2173 (scm_<foo>vector_elements, scm_<foo>vector_writable_elements): Use
2174 scm_t_array_handle, deliver length and increment.
2175 (scm_array_handle_<foo>_elements,
2176 scm_array_handle_<foo>_writable_elements): New.
2177
2178 * gen-scmconfig.h.in (SCM_I_GSC_HAVE_ARRAYS): Removed.
2179 * gen-scmconfig.c: Hard code SCM_HAVE_ARRAYS to "1".
2180
2181 * unif.h, unif.c (scm_t_array_handle, scm_array_get_handle,
2182 scm_array_handle_rank, scm_array_handle_dims, scm_array_handle_ref
2183 scm_array_handle_set, scm_array_handle_elements
2184 scm_array_handle_writable_elements, scm_vector_get_handle): New.
2185 (scm_make_uve, scm_array_prototype, scm_list_to_uniform_array,
2186 scm_dimensions_to_uniform_array): Deprecated for real.
2187 (scm_array_p, scm_i_array_p): Use latter for SCM_DEFINE since
2188 snarfing wont allow a mismatch between C and Scheme arglists.
2189 (scm_make_shared_array, scm_enclose_array): Correctly use
2190 scm_c_generalized_vector_length instead of
2191 scm_uniform_vector_length.
2192
2193 * validate.h (SCM_VALIDATE_VECTOR,
2194 SCM_VALIDATE_VECTOR_OR_DVECTOR): use scm_is_simple_vector instead
2195 of SCM_VECTORP.
2196
2197 * weaks.h, weaks.c: Use new internal weak vector API from
2198 vectors.h.
2199
2200 * Makefile.am (libguile_la_SOURCES, DOT_X_FILES, DOT_DOC_FILES,
2201 EXTRA_libguile_la_SOURCES): Changed ramap.c and unif.c from being
2202 'extra' to being regular sources.
2203 (noinst_HEADERS): Added quicksort.i.c.
2204 * quicksort.i.c: New file.
2205
2206 * vectors.h, vector.c (SCM_VECTORP, SCM_VECTOR_LENGTH, SCM_VELTS,
2207 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET): Deprecated
2208 and reimplemented. Replaced all uses with scm_vector_elements,
2209 scm_vector_writable_elements, or SCM_SIMPLE_VECTOR_*, as
2210 appropriate.
2211 (scm_is_simple_vector, SCM_SIMPLE_VECTOR_LENGTH,
2212 SCM_SIMPLE_VECTOR_REF, SCM_SIMPLE_VECTOR_SET,
2213 SCM_SIMPLE_VECTOR_LOC): New.
2214 (SCM_VECTOR_BASE, SCM_SET_VECTOR_BASE, SCM_VECTOR_MAX_LENGTH,
2215 SCM_MAKE_VECTOR_TAG, SCM_SET_VECTOR_LENGTH,
2216 SCM_VELTS_AS_STACKITEMS, SCM_SETVELTS, SCM_GC_WRITABLE_VELTS):
2217 Removed.
2218 (scm_vector_copy): New.
2219 (scm_vector_elements, scm_vector_writable_elements): Use
2220 scm_t_array_handle, deliver length and increment. Moved to
2221 unif.h. Changed all uses.
2222 (scm_vector_release_elements,
2223 scm_vector_release_writable_elements,
2224 (scm_frame_vector_release_elements,
2225 scm_frame_vector_release_writable_elements): Removed.
2226 (SCM_I_IS_VECTOR, SCM_I_VECTOR_ELTS, SCM_I_VECTOR_WELTS,
2227 SCM_I_VECTOR_LENGTH, scm_i_vector_free): New internal API.
2228 (SCM_I_WVECTP SCM_I_WVECT_LENGTH SCM_I_WVECT_VELTS
2229 SCM_I_WVECT_GC_WVELTS SCM_I_WVECT_TYPE SCM_I_WVECT_GC_CHAIN
2230 SCM_I_SET_WVECT_GC_CHAIN, scm_i_allocate_weak_vector): New, for
2231 weak vectors.
2232
0336d18b
MV
22332004-12-29 Marius Vollmer <mvo@zagadka.de>
2234
2235 No longer use creators to specify the type of an array. Creators
2236 expose the fact that arrays are wrapped around vectors, but that
2237 might change.
2238
2239 * srfi-4.h (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector,
2240 scm_i_proc_make_u16vector, scm_i_proc_make_s16vector,
2241 scm_i_proc_make_u32vector, scm_i_proc_make_s32vector,
2242 scm_i_proc_make_u64vector, scm_i_proc_make_s64vector,
2243 scm_i_proc_make_f32vector, scm_i_proc_make_f64vector,
2244 scm_i_proc_make_c32vector, scm_i_proc_make_c64vector,
2245 uvec_proc_vars): Removed.
2246 (scm_i_generalized_vector_creator): Removed.
2247 (scm_i_generalized_vector_type): New.
2248
2249 * unif.h, unif.c (scm_typed_array_p, scm_make_array,
2250 scm_make_typed_array, scm_array_type, scm_list_to_array,
2251 scm_list_to_typed_array, scm_is_array, scm_is_typed_array): New.
2252 (scm_array_creator): Removed.
2253 (scm_array_p): Deprecated second PROT argument.
2254 (scm_dimensions_to_uniform_array, scm_list_to_uniform_array):
2255 Deprecated, reimplemented in terms of scm_make_typed_array and
2256 scm_list_to_typed_array.
2257 (scm_i_proc_make_vector, scm_i_proc_make_string,
2258 scm_i_proc_make_bitvector): Removed.
2259 (type_creator_table, init_type_creator_table, type_to_creator,
2260 make_typed_vector): New.
2261 (scm_i_convert_old_prototype): Removed.
2262 (prototype_to_type): New.
2263 (scm_make_uve): Deprecated, reimplemented using make_typed_vector.
2264 (scm_array_dimensions): Use scm_list_1 instead of scm_cons for
2265 minor added clarity.
2266 (scm_make_shared_array, scm_ra2contig): Use make_typed_vector
2267 instead of scm_make_uve.
2268 (tag_creator_table, scm_i_tag_to_creator): Removed.
2269 (tag_to_type): New.
2270 (scm_i_read_array): Use scm_list_to_typed_array instead of
2271 scm_list_to_uniform_array.
2272
277e8472
MV
22732004-12-27 Marius Vollmer <mvo@zagadka.de>
2274
32b26202
MV
2275 * unif.h, unif.c (scm_bitvector_elements): Made return value "const".
2276 (scm_bitvector_writable_elements): New.
2277 (scm_bitvector_release, scm_bitvector_release_elements):
2278 Renamed former to latter. Added explicit call to
2279 scm_remember_upto_here_1.
2280 (scm_frame_bitvector_release,
2281 scm_frame_bitvector_release_elements): Renamed former to latter.
2282 (scm_bitvector_release_writable_elements,
2283 scm_bitvector_release_writable_elements): New.
2284 Changed all uses as required by the changes above.
2285
2286 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_uniform_vector_elements,
2287 scm_u8vector_elements, etc): Made return value "const".
2288 (scm_uniform_vector_writable_elements,
2289 scm_u8vector_writable_elements, etc): New.
2290 (scm_uniform_vector_release, scm_uniform_vector_release_elements):
2291 Renamed former to latter. Added explicit call to
2292 scm_remember_upto_here_1.
2293 (scm_frame_uniform_vector_release,
2294 scm_frame_uniform_vector_release_elements): Renamed former to latter.
2295 (scm_uniform_vector_release_writable_elements,
2296 scm_frame_uniform_vector_release_writable_elements): New. Takes
2297 crown of longest identifier yet.
2298 Changed all uses as required by the changes above.
2299
277e8472
MV
2300 * vectors.h, vectors.c (scm_c_vector_set_x): Make return type
2301 void.
2302 (scm_is_vector, scm_vector_p, scm_vector_length,
2303 scm_c_vector_length, scm_vector_ref, scm_c_vector_ref,
2304 scm_vector_set_x, scm_c_vector_set_x, scm_vector_to_list,
2305 scm_vector_move_left_x, scm_vector_move_right_x,
2306 scm_vector_fill_x): handle one-dimensional arrays.
32b26202
MV
2307 (scm_vector_elements, scm_vector_release_elements,
2308 scm_vector_frame_release_elements, scm_vector_writable_elements,
2309 scm_vector_release_writable_elements,
2310 scm_vector_frame_release_writable_elements): New.
2311 (scm_list_to_vector, scm_vector_to_list, scm_vector_fill,
2312 scm_vector_move_left_x, scm_vector_move_right_x): Use them.
277e8472
MV
2313
2314 * ramap.c (scm_ramapc, scm_raeql): Use
2315 scm_c_generalized_vector_length instead of
2316 scm_uniform_vector_length.
2317 (scm_ramap, rafe): Use scm_c_vector_ref instead of SCM_VELTS. use
2318 scm_c_generalized_vector_ref instead of scm_uniform_vector_ref.
2319
49c51610
MV
23202004-12-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2321
2322 * continuations.h, continuations.c (scm_t_contregs): New 'offset'
2323 member for relocating debug frames.
2324 (scm_make_continuation): Set it.
2325
2326 * stacks.c (read_frame, read_frames, scm_make_stack,
2327 scm_last_stack_frame, scm_stack_id): Use the new 'offset' member
2328 of continuations instead of calculating the offset ourselves.
2329 Relocate 'vect' member of scm_t_debug_frame.
2330
3b2ee265
KR
23312004-12-16 Kevin Ryde <user42@zip.com.au>
2332
2333 * ramap.c (scm_array_map_x): Check for at least one source argument.
2334
e120686a
KR
23352004-12-14 Kevin Ryde <user42@zip.com.au>
2336
2337 * srfi-13.c (string-any, string-every): Use a scheme wrapper around
2338 the C code so for the final call to the predicate procedure is a tail
2339 call, per SRFI-13 spec.
2340
680b5237
KR
23412004-12-10 Kevin Ryde <user42@zip.com.au>
2342
2343 * eq.c (scm_eq_p, scm_eqv_p, scm_equal_p): Update docstrings from
2344 recent revision to the reference manual.
2345
2346 * numbers.c (scm_modulo): Amend fixme comment about negative divisor
2347 with "%", C99 says it's well-defined.
2348
2349 * socket.c (scm_from_ipv6): Just use mpz_import. Don't bother trying
2350 to fit scm_from_ulong_long, since that uses mpz_import anyway. Don't
2351 bother trying to fit scm_from_ulong, not really worth the trouble if
2352 addresses are more than 4 bytes usually.
2353
446d320c
KR
23542004-11-30 Kevin Ryde <user42@zip.com.au>
2355
2356 * gc_os_dep.c (NetBSD): Test __m68k__ and __arm__ as well as m68k and
2357 arm32. Reported by Greg Troxel.
2358
f2654760
MV
23592004-11-14 mvo <mvo@zagadka.de>
2360
2361 * unif.c, unif.h (scm_i_cvref): Made non-static for ramap.c.
2362
2363 * Makefile.am (INCLUDES): It is "@LTDLINCL@", not "@LTDLINC@".
2364
d550e35f
MV
23652004-11-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2366
2367 Enclosed arrays are now their own smob. This has been done to
2368 make the code more explicit about them and to prepare for the time
f2654760
MV
2369 when generalized vectors include arbitrary one-dimensional
2370 arrays. (Uptonow, enclosed arrays have been recognized by their
2371 use of an array as their storage 'vector'. When all generalized
2372 vectors are allowed as storage, including one-dimensional arrays,
2373 this will no longer work.)
d550e35f
MV
2374
2375 * unif.h, unif.c: (scm_tc16_enclosed_array, SCM_ENCLOSED_ARRAYP):
2376 New.
2377 (exactly_one_third, singp): Removed.
2378 (scm_array_p, scm_array_dimensions, scm_shared_array_root,
2379 scm_shared_array_offset, scm_shared_array_increments): Handle
2380 enclosed arrays explicitely.
2381 (scm_array_rank): Likewise. Also, do not return zero for
2382 non-arrays, signal an error instead since arrays with rank zero do
2383 exist.
2384 (scm_i_make_ra): New, for specifying the tag of the new array.
2385 (scm_make_enclosed_array): Use it.
2386 (scm_make_ra): Reimplemented in terms of scm_i_make_ra.
2387 (scm_make_shared_array): Use scm_c_generalized_vector_length
2388 instead of scm_uniform_vector_length.
2389 (scm_array_in_bounds_p): Rewritten to be much cleaner.
2390 (scm_i_cvref): New, doing the job of scm_cvref.
2391 (scm_cvref): Use scm_i_cvref.
2392 (scm_array_ref): Do not accept non-arrays when no indices are
2393 given. Use scm_i_cvref to do the actual access.
2394 ("uniform-array-set1"): Do not register.
2395 (scm_array_set_x, scm_uniform_array_read_x,
2396 scm_uniform_array_write): Handle enclosed arrays explicitly.
2397 (ra2l): Use scm_i_cvref instead of scm_uniform_vector_ref to also
2398 handle enclosed arrays.
2399 (scm_array_to_list): Handle enclosed arrays explicitly.
2400 (rapr1): Removed.
2401 (scm_i_print_array_dimension): Use scm_i_cvref to also handle
2402 enclosed arrays.
2403 (scm_i_print_enclosed_array): New.
2404 (tag_proto_table, tag_creator_table): Renamed former to latter.
2405 Added "a" and "b" for strings and bitvectors, resp.
2406 (scm_i_tag_to_prototype, scm_i_tag_to_creator): Renamed former to
2407 latter. Tag "a" is in the table now, no need to handle it as a
2408 legacy tag.
2409 (scm_raprin1): Just call scm_iprin1.
2410 (scm_array_creator, scm_array_prototype): Handle enclosed arrays
2411 explicitly.
2412 (scm_init_unif): Initialize scm_tc16_enclosed_array smob.
2413 Use scm_i_print_array as printer for scm_tc16_array.
2414
2ed34885
MV
24152004-11-10 Marius Vollmer <mvo@zagadka.de>
2416
823086c1
MV
2417 * ramap.c (cind): Changed second arg to be pointer to long instead
2418 of uniform vector.
2419 (scm_ramapc): Allocate index vector with scm_malloc and not as
d550e35f 2420 uniform vector. Wrap it in a frame so that it gets properly freed.
823086c1
MV
2421 (scm_array_index_map_x): Likewise.
2422
2423 * unif.c: Changed all uses of scm_array_prototype to
2424 scm_array_creator. (scm_i_get_old_prototype): Signal error when no
2425 prototype is known.
2426 (scm_uniform_array_read_x, scm_uniform_array_write): Reimplemented
2427 in terms of scm_uniform_vector_read_x and
2428 scm_uniform_vector_write, respectively. Strings and
2429 bitvector support has been dropped.
2430
2ed34885
MV
2431 * srfi-4.h, srfi-4.c: Do not include <libguile.h>, include the
2432 needed files directly. Include config.h, <unistd.h> and <io.h>
2433 when available.
2434 (scm_uniform_vector_read_x, scm_uniform_vector_write): New.
2435
2c72f253
MV
24362004-11-09 Marius Vollmer <mvo@zagadka.de>
2437
2438 * gh_data.c (gh_uniform_vector_length): Properly use
2439 scm_c_uniform_vector_length instead of scm_uniform_vector_length.
2440
3cc0a296
MV
24412004-11-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2442
2443 * srfi-4.h (scm_c_uniform_vector_ref, scm_c_uniform_vector_set_x):
2444 New.
2445 (scm_i_uniform_vector_creator): Removed.
2446 (scm_i_generalized_vector_creator): New.
2447 (scm_uniform_vector_length, scm_uniform_element_size): Do not
2448 handle generalized vectors, only uniform numeric vectors.
2449 (alloc_uvec): Do length check here...
2450 (make_uvec): ...but not here.
2451 (coerce_to_uvec): Use new generalized vector functions to handle
2452 all kinds of vectors in one go.
2453
2454 * tags.h (scm_tc7_bvect): Renamed to scm_tc7_unused7, renaming the
2455 remaining scm_tc7_unused tags to get a neatly ordered list.
2456
2457 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c: Do no
2458 longer handle scm_tc7_bvect bitvectors.
2459
2460 * ramap.c: Use the new generalized vector functions to handle all
2461 vector like things.
2462
2463 * vectors.h, vectors.c (scm_is_vector, scm_c_vector_length,
2464 scm_c_vector_ref, scm_c_vector_set_x, scm_generalized_vector_p,
2465 scm_generalized_vector_length, scm_generalized_vector_ref,
2466 scm_generalized_vector_set_x, scm_generalized_vector_to_list,
2467 scm_is_generalized_vector, scm_c_generalized_vector_length,
2468 scm_c_generalized_vector_ref, scm_c_generalized_vector_set_x):
2469 New.
2470
2471 * unif.h, unif.c (scm_bitvector_p, scm_bitvector,
2472 scm_make_bitvector, scm_bitvector_length, scm_bitvector_ref,
2473 scm_bitvector_set_x, scm_list_to_bitvector, scm_bitvector_to_list,
2474 scm_bitvector_fill_x, scm_is_bitvector, scm_c_make_bitvector,
2475 scm_c_bitvector_length, scm_c_bitvector_ref,
2476 scm_c_bitvector_set_x, scm_bitvector_elements,
2477 scm_bitvector_release, scm_frame_bitvector_release,
2478 scm_tc16_bitvector, bitvector_free, bitvector_print,
2479 bitvector_equalp, count_ones, find_first_one): New.
2480 (scm_bit_count, scm_bit_position, scm_bit_set_star_x,
2481 scm_bit_count_star, scm_bit_invert_x, scm_istr2bve): Rewritten
2482 using the new C API for bitvectors and maybe count_ones or
2483 find_first_one, as appropriate.
2484 (SCM_I_MAX_LENGTH, SCM_BITVECTOR_P, SCM_BITVECTOR_BASE,
2485 SCM_SET_BITVECTOR_BASE, SCM_BITVECTOR_MAX_LENGTH,
2486 SCM_BITVECTOR_LENGTH, SCM_MAKE_BITVECTOR_TAG,
2487 SCM_SET_BITVECTOR_LENGTH): Removed. Replaced all uses with the
2488 new functions from above.
2489 (scm_i_proc_make_vector, scm_i_proc_make_string,
2490 scm_i_proc_make_bitvector): Made non-static for use in
2491 scm_i_generalized_vector_creator.
2492 (scm_make_u1vector): Removed, replaced by scm_make_bitvector.
2493 (scm_make_uve): Validate that the created object is a generalized
2494 vector.
2495 (scm_i_legacy_tag): Removed.
2496 (scm_i_print_array): Do it here.
2497 (scm_raprin1): Only print enclosed arrays.
2498
2499 * Makefile.am (DOT_DOC_FILES): Added srfi-4.doc.
2500
c24d026b
MV
25012004-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2502
1f2328fe
MV
2503 * srfi-4.c (make_uvec): Use SCM_I_SIZE_MAX instead of SIZE_MAX for
2504 added portability.
2505
2506 * chars.c (scm_charnames, scm_charnums): Added "sp" as an alias
2507 for "space". Thanks to Bruce Korb!
2508
c24d026b
MV
2509 * rw.c (scm_read_string_x_partial): Bugfix, apply offset to dest
2510 only after dest has been set. Thanks to Hyper Division!
2511
2512 * gh_data.c (gh_uniform_vector_length): Use
2513 scm_uniform_vector_length instead of SCM_UVECTOR_LENGTH.
2514
d4ea47c8
MV
25152004-11-03 Marius Vollmer <mvo@zagadka.de>
2516
2517 * unif.h (SCM_UVECTOR_BASE, SCM_SET_UVECTOR_BASE,
2518 SCM_UVECTOR_MAXLENGTH, SCM_UVECTOR_LENGTH, SCM_MAKE_UVECTOR_TAG,
2519 SCM_SET_UVECTOR_LENGTH): Removed.
2520
236288e2
MV
25212004-11-02 Marius Vollmer <mvo@zagadka.de>
2522
9a5fa6e9 2523 Mac OS X and OpenBSD compatibility patches from Andreas Vögele.
236288e2
MV
2524 Thanks!
2525
2526 * backtrace.c (scm_display_backtrace_with_highlights): Join the
2527 first and the second line of the SCM_DEFINE macro call, since old
2528 preprocessors cannot handle definitions that are split into two
2529 lines.
2530
2531 * inline.h (scm_cell, scm_double_cell): Don't use C99 variable
2532 declarations.
2533
2534 * pairs.c (scm_i_chase_pairs): Replace scm_t_bits with
2535 scm_t_uint32 to fix the mismatch between the function declaration
2536 and definition.
2537
2538 * sort.c (quicksort): Don't use C99 variable declarations.
2539
2540 * srfi-4.c (uvec_fast_ref): Avoid a compiler warning by returning
2541 SCM_BOOL_F if no type matches.
2542
2543 * threads.c (thread_print): Cast a pointer to size_t when printing
2544 with scm_uintprint.
2545
2546 * unif.c (scm_i_tag_to_prototype): Make sure that "instead" gets
2547 defined.
2548 (scm_array_prototype): Deprecated.
2549
f738b51d
MV
25502004-11-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2551
5d1015ec
MV
2552 * srfi-4.h, srfi-4.c (scm_frame_uniform_vector_release): New.
2553 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use it to get
2554 more efficient access to the u32vector.
2555
034486df
MV
2556 * tags.h (scm_tc7_llvect, scm_tc7_uvect, scm_tc7_fvect,
2557 scm_tc7_dvect, scm_tc7_cvect, scm_tc7_svect, scm_tc7_byvect,
2558 scm_tc7_ivect): Renamed to scm_tc7_unused_1 to scm_tc7_unused_8.
2559
2560 * validate.h (SCM_VALIDATE_VECTOR_OR_DVECTOR): Accept f64vectors
2561 instead of the old-style dvectors.
2562
2563 * gh_data.c: Use new-style uniform arrays in place of old-style
2564 ones.
2565
2566 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c,
2567 ramap.c, unif.c: Do no longer handle old-style uniform vectors.
2568
2569 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use u32vectors
2570 instead of old-sytle uvectors.
2571
2572 * convert.c, convert.i.c: Rewritten completely, using
2573 scm_any_to_u8vector, etc and other new-style uniform vector
2574 functions.
2575
2576 * random.c (scm_random_solid_sphere_x,
2577 scm_random_hollow_sphere_x): Do not validate vector argument, this
2578 is already done elsewhere.
2579
2580 * srfi-4.h, srfi-4.i.c, srfi-4.c (coerce_to_uvec,
2581 scm_any_to_u8vector, etc): New.
2582 (scm_uniform_element_size, scm_uniform_vector_length): Do no
2583 longer handle old-style uniform vectors.
2584
f738b51d
MV
2585 * read.c (scm_lreadr): Bugfix: include the last bit in the
2586 bit vector.
2587
5e9c05a1
MV
25882004-10-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2589
327114a2
MV
2590 * unif.h, unif.c (scm_array_creator): New.
2591 (scm_i_get_old_prototype): New.
2592 (scm_array_prototype): use it to return old-style prototype, never
2593 return creators.
2594 (scm_make_uve): Use scm_call_1 instead of scm_call_2 with a second
2595 arg of SCM_UNDEFINED. The latter is wrong.
2596
5e9c05a1
MV
2597 * unif.h, unif.c (scm_make_u1vector): New, but only temporary.
2598 (make_uve): Removed.
2599 (scm_i_proc_make_vector, scm_i_proc_make_string,
2600 scm_i_proc_make_u1vector): New.
2601 (scm_init_unif): Initialize them.
2602 (scm_i_convert_old_prototype): New.
2603 (scm_make_uve): Use it to get the creator procedure. Removed all
2604 old code that created old-style uniform vectors.
2605 (scm_array_p): Handle generic vectors.
2606 (scm_dimensions_to_uniform_array): Do not fill new array with
2607 prototype when that is a procedure.
2608 (scm_list_to_uniform_array): Also accept a list of lower bounds as
2609 the NDIM argument.
2610 (scm_i_print_array): Print rank for shared or non-zero-origin
2611 vectors.
2612 (tag_proto_table, scm_i_tag_to_prototype, scm_i_read_array): New.
2613 (scm_raprin1): Do not call scm_i_array_print for enclosed arrays,
2614 which I do not understand yet.
2615 (scm_array_prototype): Explicitely handle generic vectors.
327114a2 2616
5e9c05a1
MV
2617 * numbers.c, number.h (scm_i_print_complex, icmplx2str): New.
2618 (iflo2str): Use icmplx2str for complex numbers.
2619
2620 * srfi-4.c, srfi-4.h (scm_i_read_homogenous_vector,
2621 scm_i_uniform_vector_prototype): Removed.
2622 (scm_i_uniform_vector_creator): New.
2623 (SCM_UVEC_C32, scm_c32vector, scm_make_c32vector, etc,
2624 SCM_UVEC_C64, scm_c64vector, scm_make_c64vector, etc): New.
2625 Updated all tables and generic functions to support them.
2626 (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector, etc): New.
2627 (scm_init_srfi_4): Initialize them.
2628
2629 * srfi-4.i.c (scm_take_u8vector, etc): use uvec_sizes instead of
2630 sizeof(CTYPE) as explained in the comment.
2631
2632 * read.c (scm_lreadr): Call scm_i_read_array for all characters
50472546 2633 following '#' that can start an array. Explicitely disambiguate
5e9c05a1
MV
2634 'i' and 'e' between introducing numbers and uniform vectors. Do
2635 not call scm_i_read_homogenous_vector, since that is also handled
2636 by scm_i_read_array now.
2637
f984af07
MV
26382004-10-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2639
2640 First cut at integrating uniform vectors from srfi-4 with the rest
2641 of Guile. This change replaces scm_tc7_byvect with a s8 uniform
2642 vector. The plan is to gradually replace one type after the other
2643 until none is left and then to consider general cleanups and
2644 optimizations.
2645
2646 * srfi-4.h, srfi-4.i.c (scm_u8vector_elements, etc): New.
2647
2648 * srfi-4.h, srfi-4.c (scm_uniform_vector_p,
2649 scm_uniform_vector_ref, scm_uniform_vector_set_x,
2650 scm_uniform_vector_to_list, scm_is_uniform_vector,
2651 scm_c_uniform_vector_lengths, scm_c_uniform_vector_size,
2652 scm_uniform_vector_elements, scm_uniform_vector_element_size,
2653 scm_uniform_vector_release): New.
2654 (scm_i_uniform_vector_prototype, scm_i_uniform_vector_tag): New.
2655 (scm_uniform_element_size, scm_uniform_vector_length): Moved here
2656 from unif.h, unif.c and extended to handle both the old and new
2657 uniform vectors.
2658
2659 * tags.h (scm_tc7_byvect): Commented out.
2660
2661 * unif.h, unif.c (scm_uniform_vector_ref, scm_array_ref): Renamed
2662 the former to the latter.
2663 (scm_uniform_vector_length, scm_uniform_element_size): Moved to
2664 srfi-4.h, srfi-4.c.
2665 (scm_make_uve): Call scm_make_s8vector for #\nul prototype.
2666 (scm_array_p, scm_array_rank, scm_array_dimensions,
2667 scm_transpose_array, scm_enclose_array, scm_array_ref, scm_cvref,
2668 scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
2669 scm_array_to_list, scm_array_prototype): Handle srfi-4 uniform
2670 vectors. Removed code for scm_tc7_byvect.
2671 (scm_dimensions_to_uniform_array): Fill array with 0 when
2672 prototype is #\nul.
2673 (scm_i_print_array_dimension, scm_i_legacy_tag,
2674 scm_i_print_array): New.
2675 (scm_raprin1): Call scm_i_print_array for arrays. Removed code
2676 for scm_tc7_byvect.
2677
2678 * ramap.c (scm_ra_matchp, scm_array_fill_int, racp,
2679 scm_array_index_map_x, raeql_1, scm_array_equal_p): Handle srfi-4
2680 uniform vectors. Removed code for scm_tc7_byvect
2681
2682 * print.c (iprin1): Removed code for scm_tc7_byvect.
2683 * objects.c (scm_class_of): Likewise.
2684 * gc-mark.c (scm_gc_mark_dependencies): Likewise.
2685 * gc-card.c (scm_i_sweep_card): Likewise.
2686 * evalext.c (scm_self_evaluating_p): Likewise.
2687 * eq.c (scm_equal_p): Likewise.
2688
2689 * gh_data.c (gh_chars2byvect): Reimplemented with
2690 scm_make_s8vector.
2691 (gh_scm2chars): Handle s8vectors, removed code for scm_tc7_byvect.
2692
2693 * srfi-4.c (take_uvec): New.
2694 (alloc_uvec): Use it.
2695 * srfi-4.h, srfi-4.i.c (scm_take_u8vector, etc): New.
2696
2697 * random.c (vector_scale, vector_scale_x): Renamed former to the
2698 latter, since it modifies its argument.
2699 (vector_scale_x, vector_sum_squares, scm_random_normal_vector_x):
2700 Do not use scm_universal_vector_length for non-uniform vectors.
2701 Use scm_f64vector_elements to access innards of uniform vectors.
2702
2703 * convert.i.c: Convert srfi-4 style uniform vectors when
2704 requested.
2705 * convert.c (scm_c_scm2chars, scm_c_chars2scm,
2706 scm_c_chars2byvect): Use a s8vector instead of a scm_tc7_byvect.
2707
79d52182
MV
27082004-10-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2709
2710 * numbers.h, numbers.c (scm_i_print_double): New.
2711
2712 * srfi-4.c, srfi-4.h, srfi-4.i.c: New files, initially from
2713 ../srfi/ but heavily modified.
2714 * Makefile.am: Add them in all the right places.
2715 * init.c (scm_init_guile_1): Call scm_init_srfi_4.
2716 * read.c (scm_lreadr): Call scm_i_read_homogenous_vector for '#f',
2717 '#u', and '#s'.
2718
2719 * read.h, read.c (scm_i_input_error): Renamed from scm_input_error
2720 and made non-static. Changed all uses.
2721
6191ccec
MV
27222004-10-22 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2723
e64e80b0
MV
2724 * variable.c, threads.c, struct.c, stackchk.c, smob.c, root.c,
2725 print.c, ports.c, mallocs.c, hooks.c, hashtab.c, fports.c,
2726 guardians.c, filesys.c, coop-pthreads.c, continuations.c: Use
2727 scm_uintprint to print unsigned integers, raw heap words, and
2728 adresses, using a cast to scm_t_bits to turn pointers into
2729 integers.
2730
2731 * unif.c: Include "libguile/print.h".
2732
c90ac3a8
MV
2733 * numbers.h, numbers.c (SCM_T_INTBUFLEN): Increased to cover
2734 scm_t_intmax values.
2735 (scm_uint2str): New, for scm_t_uintmax.
2736 (scm_iint2str): Argument type changed to scm_t_intmax,
2737 reimplemented in terms of scm_uint2str.
2738
2739 * print.c, print.h (scm_uintprint): New, for printing
2740 scm_t_uintmax values.
2741 (scm_intprint): Argument type changed to scm_t_intmax.
2742
77c2594f
MV
2743 * sort.c (quicksort, scm_merge, scm_merge_list_x,
2744 scm_merge_list_step, scm_merge_vector_step): Inserted SCM_TICKs at
2745 strategic places so that the loops can be interrupted.
2746
6191ccec
MV
2747 * Makefile.am (INCLUDES): Use @LTDLINC@ instead of
2748 "-I$(top_srcdir)/libguile-ltdl".
2749 (libguile_la_LIBADD): Use @LIBLTDL@ instead of
2750 "../libguile-ltdl/libguile-ltdl.a".
2751
2752 * guile.c, dynl.c: Switched to using libltdl directly. Replaced
2753 all references to scm_lt_* with just lt_*. Include <ltdl.h>
2754 instead of <libguile-ltdl.h>.
2755
77600f3e
MV
27562004-10-20 Marius Vollmer <mvo@zagadka.de>
2757
2758 * sort.c (quicksort): Copy pivot out of the array while
2759 constructing the partitions; it could get overwritten otherwise.
2760 Because of the ultimate insertion sort, this bug did not cause
2761 quicksort to fail, it just put all the burdon on the insertion
2762 sort and was thus very slow. Thanks to Rolan Orre for reporting
2763 the slowness!
2764
5000379b
MV
27652004-10-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2766
192cd792
MV
2767 * numbers.c (scm_i_range_error): New.
2768 * conv-integer.i.c, conv-uinteger.i.c: Use it instead of
2769 scm_out_of_range.
2770
2771 * sort.c (scm_restricted_vector_sort_x): Validate startpos <=
6191ccec 2772 endpos. State inclusiveness/exclusiveness of bounds in docstring.
192cd792
MV
2773
2774 * unif.c (scm_array_p): When no prototype is given, explicitely
2775 test for allowable types, do not simply return true. Thanks to
2776 Roland Orre for reporting this!
2777
5000379b
MV
2778 * private-gc.h (SCM_DEFAULT_MAX_SEGMENT_SIZE): Increase to 20 Mib.
2779
2780 * gc-segment.c (scm_i_get_new_heap_segment): Limit size of new
2781 segment to scm_max_segment_size.
2782
497eb0b7
HWN
27832004-10-08 Han-Wen Nienhuys <hanwen@xs4all.nl>
2784
1367aa5e
HWN
2785 * gc.c (scm_igc): put scm_gc_running-- before running hooks.
2786
497eb0b7
HWN
2787 * inline.h (scm_double_cell): abort if GC running.
2788 (scm_cell): idem.
2789
aef0bdb4
MV
27902004-10-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2791
2792 * error.c (scm_wrong_type_arg): Do not talk about "argument" for
2793 pos == 0.
2794
2795 Keywords no longer store a 'dash symbol'. Instead, they store a
2796 symbol with their real name.
2797
2798 * keywords.h, keywords.c, deprecated.h, deprecated.c
2799 (SCM_KEYWORDP, SCM_KEYWORDSYM): Deprecated and implemented in
2800 terms of scm_is_keyword and scm_keyword_dash_symbol.
2801
2802 * keywords.h, keywords.c, discouraged.h, discouraged.c
2803 (scm_make_keyword_from_dash_symbol, scm_keyword_dash_symbol,
2804 scm_c_make_keyword): Discouraged.
2805
2806 * keywords.h, keywords.c (scm_symbol_to_keyword,
2807 scm_keyword_to_symbol): Implemented in C.
2808 (scm_is_keyword, scm_from_locale_keyword,
2809 scm_from_locale_keywordn): New.
2810
2811 * goops.c: Replaced SCM_KEYWORDP with scm_is_keyword.
2812
2813 * snarf.h (SCM_KEYWORD, SCM_GLOBAL_KEYWORD): Use
2814 scm_from_locale_keyword instead of scm_c_make_keyword.
2815
2816 * keywords.c (scm_symbol_to_keyword): Use SCM_ASSERT_TYPE for a
2817 better error message.
2818
2819 * deprecated.c: Include discouraged.h and keywords.h.
2820
2821 * read.c (scm_lreadr): Simply do (symbol->keyword (read)) after
2822 reading '#:' or ':'. See NEWS for consequences.
2823
818deb11
MV
28242004-09-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2825
43c25626
MV
2826 * read.c (scm_lreadr): Revert change from 2004-09-22: string
2827 literals are now read-write again (until SCM_STRING_CHARS is
2828 removed).
2829
2830 * strings.c (SCM_STRING_CHARS): Explicitely reject read-only
2831 strings with an error message that blames SCM_STRING_CHARS.
2832
2833 * options.c (change_option_setting): Use scm_car instead of
2834 explicit type check plus SCM_CAR.
2835
2836 * print.h, print.c (SCM_PRINT_HIGHLIGHT_PREFIX,
2837 SCM_PRINT_HIGHLIGHT_SUFFIX): New printer options.
2838 (scm_iprin1): Use them instead of the previoulsy hardcoded
2839 strings.
2840 (scm_init_print): Initialize them.
2841
2842 * backtrace.c (display_frame_expr): Do not remove control
2843 characters from the final string. Print it directly using
2844 scm_display.
2845
818deb11
MV
2846 * ramap.c (scm_array_equal_p): Include scm_tc7_svect in switch.
2847 Thanks to Roland Orre!
2848
d748089e
KR
28492004-09-29 Kevin Ryde <user42@zip.com.au>
2850
2851 * regex-posix.c (scm_regexp_exec): Correction to last change, should
2852 be whole original string in match struct, not offsetted substring.
2853
0ff7e3ff
HWN
28542004-09-24 Han-Wen Nienhuys <hanwen@xs4all.nl>
2855
2856 * gc.c (scm_gc_unprotect_object): abort if called during GC.
2857
ad7de4b8
MV
28582004-09-24 Marius Vollmer <mvo@zagadka.de>
2859
2edf319f
MV
2860 * Makefile.am (EXTRA_DIST): Added gettext.h.
2861
d180337b
MV
2862 * smob.c, smob.h (scm_assert_smob_type): New.
2863
05d7cf89 2864 * Makefile.am (guile_CFLAGS, guile_LDFLAGS, libguile_la_CFLAGS):
ad7de4b8
MV
2865 Include GUILE_CFLAGS.
2866 (libguile_la_LIBADD): Removed THREAD_LIBS_LOCAL, which is unused
2867 now.
2868 (libpath.h): Put GUILE_CFLAGS in the build-info.
2869
c9fedf8a
MV
28702004-09-23 Marius Vollmer <mvo@zagadka.de>
2871
2872 * print.h (scm_print_state): Added highlight_objects.
2873 * print.c (make_print_state, scm_free_print_state): Initialize it
2874 to SCM_EOL.
2875 (scm_iprin1): Wrap output in '{...}' when object is contained in
2876 highlight_objects.
2877
2878 * backtrace.h, backtrace.c (scm_display_backtrace_with_highlights,
2879 scm_backtrace_with_highlights): New. Set highlight_objects of
2880 printstate.
2881
2882 * error.c (scm_error_scm): Document new meaning of data/rest
2883 argument for out-of-range and wrong-type-arg errors.
2884 (scm_out_of_range, scm_out_of_range_pos, scm_wrong_type_arg,
2885 scm_wrong_type_arg_msg): Pass bad_value in rest argument of
2886 exception so that it gets highlighted in the backtrace.
2887 Don't talk about "argument" when not giving a position.
2888
2889 * throw.c (handler_message): The rest argument is the fourth
2890 argument, not everything after the third. Call
2891 scm_display_backtrace_with_highlights, passing the rest argument
2892 when appropriate.
2893
d5ac9b2a
MV
28942004-09-22 Marius Vollmer <mvo@zagadka.de>
2895
2896 From Jan Nieuwenhuizen <janneke@gnu.org> and Bruno Haible
2897 <bruno@clisp.org>:
2898
2899 * i18n.c: Handle --disable-nls (thanks Bruno).
2900
2901 * posix.c (scm_init_posix): Add LC_PAPER, LC_NAME, LC_ADDRESS,
2902 LC_TELEPHONE, LC_MEASUREMENT, LC_IDENTIFICATION.
2903
2904 * i18n.c (scm_i_to_lc_category): New name and export. Support all
2905 LC categories.
05d7cf89 2906 * posix.c (scm_setlocale): Use it.
d5ac9b2a
MV
2907
2908 * i18n.h, i18n.c (scm_textdomain, scm_bindtextdomain,
2909 scm_bind_textdomain_codeset): Make wrappers similar to C function
2910 they wrap.
2911
2912 * i18n.h: New file.
2913 * i18n.c: New file.
2914 * gettext.h: New file, taken from GNU gettext.
2915 * init.c: Include libguile/i18n.h.
2916 (scm_init_guile_1): Add call to scm_init_i18n().
2917 * Makefile.am (libguile_la_SOURCES): Add i18n.c.
2918 (DOT_X_FILES): Add i18n.x.
2919 (DOT_DOC_FILES): Add i18n.doc.
2920 (libguile_la_LDFLAGS): Add @LTLIBINTL@.
2921 (modinclude_HEADERS): Add i18n.h.
2922
d2e53ed6
MV
29232004-09-22 Marius Vollmer <mvo@zagadka.de>
2924
2cdfe016
MV
2925 * gh_list.c: Replaced SCM_CAR, etc with scm_car, etc.
2926
d2e53ed6
MV
2927 * discouraged.h, tags.h (SCM_CONSP, SCM_NCONSP): Moved to
2928 discouraged.h. Replaced all uses with scm_is_pair.
2929 (SCM_I_CONSP): New name for SCM_CONSP.
2930
2931 * pairs.h, pairs.c (scm_is_pair, scm_is_null, scm_car, scm_cdr,
2932 scm_i_chase_pairs, SCM_I_A_PAT, SCM_I_D_PAT, etc, scm_caar,
2933 scm_cadr, etc): New.
2934 (SCM_NULLP, SCM_NNULLP): Moved to discouraged.h. Replaced all
2935 uses with scm_is_null.
5dd82006 2936
d2e53ed6
MV
2937 * eval.c (scm_eval, scm_apply, call_cxr_1): Use scm_i_chase_pairs
2938 instead of explicit code.
5dd82006 2939
5dfdf243
MV
29402004-09-22 Marius Vollmer <mvo@zagadka.de>
2941
b50c53e5
MV
2942 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
2943 Reworded logic a bit so that #f is returned immediately when s1 is
2944 too short to contain s2.
2945
5dfdf243 2946 * regex-posix.c (scm_regexp_exec): Convert string to
05d7cf89 2947 zero-terminated locale string before matching against it.
5dfdf243
MV
2948
2949 * strings.h, strings.c (scm_substring_read_only,
2950 scm_c_substring_read_only, scm_i_substring_read_only): New.
2951 (RO_STRING_TAG, IS_RO_STRING): New.
2952 (scm_i_string_writable_chars): Bail on read-only strings.
2953
2954 * read.c (scm_lreadr): use scm_c_substring_read_only for string
2955 literals, thus making them read-only as specified by R5RS.
2956
22ab5ba3
MV
29572004-09-22 Marius Vollmer <mvo@zagadka.de>
2958
2959 * eq.c (scm_equal_p): Allow smobs with different flags to be equal
2960 by testing for smobs before insisting on equal SCM_CELL_TYPES.
2961
2663421c
MV
29622004-09-21 Marius Vollmer <mvo@zagadka.de>
2963
0d83cb90
MV
2964 * numbers.h, numbers.c: Include <gmp.h> in numbers.h, not in
2965 numbers.c.
2966 (scm_to_mpz, scm_from_mpz): New.
9a5fa6e9 2967 Thanks to Andreas Vögele!
0d83cb90 2968
2663421c
MV
2969 * read.c (skip_scsh_block_comment): Recognize "!#" everywhere, not
2970 just on a line of its own.
2971
2972 * srfi-13.c (scm_string_any, scm_string_every,
2973 scm_string_tabulate, string_upcase_x, string_down_case_x,
2974 string_titlecase_x, string_reverse_x, scm_string_tokenize): Use
2975 size_t instead of int for indices into strings. Make sure that no
9a5fa6e9 2976 over- or underflow occurs. Thanks to Andreas Vögele!
2663421c
MV
2977 (scm_xsubstring, scm_string_xcopy_x): Use ints for 'extended'
2978 indices, which can also be negative.
2979
b00b73f9
MV
29802004-09-20 Marius Vollmer <mvo@zagadka.de>
2981
2982 * gc-mark.c (SCM_MARK_BACKING_STORE): Removed, it was unused.
2983
2984 * threads.c (scm_threads_mark_stacks): Call
2985 SCM_MARK_BACKING_STORE. Also, do not use stack_len local, it was
2986 only used once.
2987
adba74f3
HWN
29882004-09-13 Jan Nieuwenhuizen <janneke@gnu.org>
2989
05d7cf89 2990 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
adba74f3
HWN
2991 Bugfix: when subtracting unsigned values, make sure that result
2992 does not wrap.
2993
f6de32c8
KR
29942004-09-09 Kevin Ryde <user42@zip.com.au>
2995
2996 * filesys.c, stime.c (_POSIX_C_SOURCE): Use this only on hpux, it
2997 causes too many problems elsewhere (glibc, freebsd, mingw). Reported
9a5fa6e9 2998 by Andreas Vögele.
f6de32c8 2999
e548be5f
MV
30002004-09-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3001
eb8d0af1
MV
3002 * Makefile.am (EXTRA_libguile_la_SOURCES): Removed "alloca.c".
3003
e548be5f
MV
3004 * eq.c (real_eqv): Pretend that all NaNs are equal.
3005
3006 * numbers.c (scm_integer_expt): Do not accept inexact integers.
3007
e7acba81
MV
30082004-09-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3009
874fbad1
MV
3010 * srfi-13.c (scm_string_trim_right, scm_string_xcopy_x): Correctly
3011 use size_t for some locals instead of int.
3012
e7acba81
MV
3013 * read.c (scm_flush_ws): Detect "#!"-style comments here.
3014 (scm_lreadr): Abort on seeing "#!", which should no longer happen.
3015 (skip_scsh_block_comment): Use scm_input_error instead of
3016 scm_misc_error in case of EOF.
3017
5de12658
KR
30182004-09-07 Kevin Ryde <user42@zip.com.au>
3019
3020 * numbers.c (scm_integer_expt): Reject exponent +/-inf.
5de12658
KR
3021 Bug report by Bill Schottstaedt.
3022
3023 * ports.c (scm_getc, scm_lfwrite): Recognise \a \b and \r for port
3024 column.
3025 * ports.h (SCM_ZEROCOL, SCM_DECCOL): New macros.
3026
3027 * posix.c (scm_access): Update docstring per manual.
3028
3029 * posix.c (scm_nice): Correction to error detection. Reported by
3030 Matthias Koeppe.
3031
3032 * stime.c (scm_current_time, scm_gettimeofday, scm_strptime): Don't
3033 throw error before unlocking mutex with SCM_ALLOW_INTS.
3034
e227addf
KR
30352004-09-06 Kevin Ryde <user42@zip.com.au>
3036
3037 * stime.h (SCM_TIME_UNITS_PER_SECOND): Use sysconf(_SC_CLK_TCK) when
3038 available. This also gets around CLK_TCK being absent when
3039 _GNU_SOURCE and _POSIX_C_SOURCE are defined in stime.c.
3040
edea856c
SJ
30412004-09-03 Stefan Jahn <stefan@lkcc.org>
3042
3043 * threads.c (scm_threads_mark_stacks): Fixed local variable
3044 definitions.
3045
e7acba81 3046 * strings.c (scm_i_substring_copy, scm_string_append): Fixed
edea856c
SJ
3047 local variable definitions.
3048
3049 * stime.c (_POSIX_C_SOURCE): Do not define this item on
3050 MinGW32 because it conflicts with its pthread headers.
874fbad1
MV
3051 (scm_mktime): Consider the HAVE_STRUCT_TM_TM_ZONE define.
3052 (scm_strftime): Using scm_from_locale_string() instead of
edea856c
SJ
3053 scm_makfrom0str().
3054
874fbad1 3055 * posix.c (scm_putenv): Fixed typo in the !HAVE_UNSETENV
edea856c
SJ
3056 part.
3057
3058 * numbers.c (scm_init_numbers): Removed check_sanity() call
3059 inside GUILE_DEBUG. The function has been removed somewhen...
3060
3061 * filesys.c (_POSIX_C_SOURCE): Do not define this item on
3062 MinGW32 because it conflicts with its pthread headers.
3063
d9eb2d67
MV
30642004-08-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3065
3066 * strings.c (SCM_STRINGP): Accept all strings.
3067 (SCM_STRING_CHARS): Reject shared substrings here.
3068
3069 * script.c (scm_compile_shell_switches): Added 2003 and 2004 to
3070 the Copyright years.
3071
c495c342
KR
30722004-08-27 Kevin Ryde <user42@zip.com.au>
3073
3074 * socket.c (scm_fill_sockaddr): Use HAVE_STRUCT_SOCKADDR_SIN_LEN and
3075 HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN for sockaddr fields, SIN_LEN and
3076 SIN_LEN6 are not defined on all systems. Reported by Michael Tuexen.
3077
57aa5515
MV
30782004-08-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3079
3080 * strings.h, strings.c (scm_i_make_symbol): Added FLAGS parameter.
3081 * symbols.h, symbols.c (SCM_I_F_SYMBOL_UNINTERNED,
3082 scm_i_symbol_is_interned, scm_i_mem2symbol,
3083 scm_i_mem2uninternedsymbol): Use it to store uninternedness flag.
3084
ce25760f
MV
30852004-08-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3086
19ff6ffc
MV
3087 * srfi-13.c: First cut at thread-safeness and proper use of
3088 scm_i_string_chars et al. Copious scm_remember_upto_heres have
3089 been inserted. Made sure that no internal string pointer is used
3090 across a SCM_TICK or a possible GC.
3091
ce25760f
MV
3092 * script.c (scm_compile_shell_switches): Use
3093 scm_from_locale_string instead of scm_makfrom0str.
3094
3095 * srfi-13.c (scm_string_rindex): Export to Scheme, as it has
3096 always been.
3097
c5080b51
MV
30982004-08-25 Marius Vollmer <mvo@zagadka.de>
3099
3100 Moved SRFI-13 and SRFI-14 into the core, taking over the role of
3101 strop.c.
3102
3103 * srfi-13.c, srfi-13.h, srfi-14.c, srfi-14.h: New files.
3104 * strop.h, strop.c: Removed, they are now empty.
3105 * Makefile.am: Updated for new and removed files.
3106
3107 * symbols.h, symbols.c (scm_string_ci_to_symbol): Moved here, next
3108 to scm_string_to_symbol.
3109
3110 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
3111 scm_char_whitespace_p, scm_upper_case_p, scm_lower_case_p,
3112 scm_char_is_both_p): Use scm_char_set_contains_p with the proper
3113 charset instead of libc functions.
3114
3115 * strorder.c (scm_string_equal_p, scm_string_ci_equal_p,
3116 scm_string_less_p, scm_string_leq_p, scm_string_gr_p,
3117 scm_string_geq_p, scm_string_ci_less_p, scm_string_ci_leq_p,
3118 scm_string_ci_gr_p, scm_string_ci_geq_p): Use scm_string_eq, etc
3119 instead of explicit code.
3120
3121 * deprecated.c, load.c, posix.c, unif.c, symbols.c: Include
3122 "srfi-13.h" instead of "strop.h".
3123
3124 * init.c (scm_init_guile_1): Call scm_init_srfi_13 and
3125 scm_init_srfi_14. Do not call scm_init_strop.
3126
4b0d27f2
MV
31272004-08-24 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3128
3129 * numbers.c (scm_inf_p): Synced docstring back from manual.
3130
3ece39d6
MV
31312004-08-22 Marius Vollmer <mvo@zagadka.de>
3132
3133 * strings.c (get_str_buf_start): New helper function.
3134 (scm_i_substring, scm_i_substring_copy, scm_i_substring_shared,
3135 scm_i_string_char, scm_i_string_writable_chars): Use it.
3136 (scm_i_substring_copy): Make START argument optional for C
3137 callers, for upcoming SRFI-13 integration.
3138
31392004-08-21 Marius Vollmer <mvo@zagadka.de>
3140
3141 From Richard Todd, Thanks!
3142
3143 * script.c (scm_compile_shell_switches): added '-L' switch to add
3144 to the %load-path.
3145
5fa0939c
DH
31462004-08-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3147
3148 * eval.c (unmemoize_exprs): When dropping internal body markers
3149 from the output during unmemoization, also drop those that are not
3150 immediately at the beginning of a body.
3151
2146fdeb
MV
31522004-08-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3153
c1f54b3d
MV
3154 * eval.c (scm_lookupcar1): Report "Variable used before given a
3155 value" insetad of an "Unbound" one for variables that are found
3156 but still contain SCM_UNDEFINED.
2146fdeb
MV
3157
3158 * posix.c (scm_mkstemp): Correction to the correction, mkstemp
3159 expects a null-terminated string in the locale encoding, but
3160 scm_i_string_writable_chars doesn't give that. Fixed by letting
3161 mkstemp modify a locale version of the tmpl argument and copying
3162 the result back into tmpl.
3163
3164 * strop.c (scm_substring_move_x): Store into str2, not str1.
3165
d4f76919
KR
31662004-08-20 Kevin Ryde <user42@zip.com.au>
3167
3168 * posix.c (scm_mkstemp): Correction to new locale_string stuff, need
3169 to modify the input string.
3170
b5247a6b
MV
31712004-08-19 Marius Vollmer <mvo@zagadka.de>
3172
3173 * deprecated.c (SCM_SYMBOL_CHARS): Cast away const in return.
3174 (SCM_SYMBOL_LENGTH): It's scm_i_symbol_length, not
3175 scm_c_symbol_length.
3176
f26b9395
MV
31772004-08-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3178
3179 New string implementation, with copy-on-write strings and
3180 mutation-sharing substrings, and a new internal string API.
3181 Symbols can now share memory with strings.
3182
3183 * tags.h (scm_tc7_stringbuf): New tag.
3184
3185 * strings.h, strings.c: (scm_i_string_chars, scm_i_string_length,
3186 scm_i_string_writable_chars, scm_i_string_stop_writing): New, to
3187 replace SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH. Updated all
3188 uses.
3189 (scm_i_make_string, scm_c_make_string): New, to replace
3190 scm_allocate_string. Updated all uses.
3191 (SCM_STRINGP, SCM_STRING_CHARS, SCM_STRING_UCHARS,
3192 SCM_STRING_LENGTH): Deprecated.
3193 (scm_allocate_string, scm_take_str, scm_take0str, scm_mem2string,
3194 scm_str2string, scm_makfrom0str, scm_makfrom0str_opt):
3195 Discouraged. Replaced all uses with scm_from_locale_string or
3196 similar, as appropriate.
3197 (scm_c_string_length, scm_c_string_ref, scm_c_string_set_x,
3198 scm_c_substring, scm_c_substring_shared, scm_c_substring_copy,
3199 scm_substring_shared, scm_substring_copy): New.
3200
3201 * symbols.c, symbols.h (SCM_SYMBOLP, SCM_SYMBOL_FUNC,
3202 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS,
3203 SCM_SYMBOL_HASH, SCM_SYMBOL_INTERNED_P, scm_mem2symbol,
3204 scm_str2symbol, scm_mem2uninterned_symbol): Discouraged.
3205 (SCM_SYMBOL_LENGTH, SCM_SYMBOL_CHARS, scm_c_symbol2str):
3206 Deprecated.
3207 (SCM_MAKE_SYMBOL_TAG, SCM_SET_SYMBOL_LENGTH, SCM_SET_SYMBOL_CHARS,
3208 SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS): Removed.
3209 (scm_is_symbol, scm_from_locale_symbol, scm_from_locale_symboln):
3210 New, to replace scm_str2symbol and scm_mem2symbol, respectively.
3211 Updated all uses.
3212 (scm_gensym): Generate only the number suffix in the buffer, just
3213 string-append the prefix.
3214
3215 * error.c (scm_memory_error): Do not try to throw, just abort.
3216 Throwing will not work anyway.
3217
3218 * gh.h, gh-data.c (gh_set_substr): Made src const.
3219
3220 * ports.c (scm_i_mode_bits_n): New, for counted strings.
3221 (scm_mode_bits): Use it.
3222 (scm_c_port_for_each): Blocking GC does not seem to work, allocate
3223 a vector normally and fill that instead of consing a list with a
3224 blocked GC.
3225
3226 * read.c (scm_i_casei_streq): New, for counted strings.
3227
3228 * threads.c (gc_section_count): Removed, thread-sleeping can not
3229 be nested.
3230 (scm_i_thread_put_to_sleep): Call scm_i_leave_guile before locking
3231 admin mutex so that we can be put to sleep by other threads while
3232 blocking on that mutex. Lock all the heap mutex of all threads,
3233 including ourselves.
3234 (scm_i_thread_wake_up): Unlock all threads, including ourselves,
3235 call scm_i_enter_guile.
3236 (scm_thread_mark_stacks): Expect all threads to be suspended.
3237
3238 * gc.h, gc.c (scm_i_gc_admin_mutex): New, to protect
3239 scm_gc_mallocated, for now.
3240 (scm_init_storage): Initialize it.
3241 * gc-malloc.c (descrease_mtrigger, increase_mtrigger): Use it.
3242
3243 * gc-mark.c (scm_gc_mark_dependencies): Call scm_i_string_mark,
3244 scm_i_stringbuf_mark and scm_i_symbol_mark, as appropriate.
3245 * gc-card.c (scm_i_sweep_card): Call scm_i_string_free,
3246 scm_i_stringbuf_free and scm_i_symbol_free, as appropriate.
3247
cd505b38
MV
3248 * strop.c (scm_string_copy): Use scm_c_substring to get a
3249 copy-on-write string.
3250
8a807b26
KR
32512004-08-18 Kevin Ryde <user42@zip.com.au>
3252
3253 * arbiters.c (FETCH_STORE): New macro.
3254 (SCM_LOCK_VAL, SCM_UNLOCK_VAL): New constants.
3255 (SCM_LOCK_ARB, SCM_UNLOCK_ARB): Remove, effectively absorbed into
3256 scm_try_arbiter and scm_release_arbiter.
3257 (scm_try_arbiter, scm_release_arbiter): Use FETCH_STORE to get xchg
3258 for speed on i386, otherwise using mutex.
3259
3260 * eq.c (scm_equal_p): Remove real==fraction and fraction==real, they
3261 must be #f according to R5RS. (equal? follows eqv?, and for eqv? an
3262 exact and inexact is #f.)
3263
3264 * fports.c (fport_print): Use scm_ttyname instead of ttyname directly,
3265 to get thread safety of scm_ttyname.
3266
3267 * ports.c (ttyname): Remove prototype, unused.
3268
d6cd4c36 3269 * socket.c (scm_init_socket): Add SOCK_SEQPACKET and SOCK_RDM.
1f3cc0d3 3270 Reported by Michael Tuexen.
d6cd4c36 3271
fa0c0a4b
MV
32722004-08-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3273
3274 * load.c (scm_init_load_path): Do not pass NULL to
3275 scm_to_locale_string, which would happen when GUILE_LOAD_PATH is
3276 not set. Thanks to Bill Schottstaedt.
3277
70f7ee41
MV
32782004-08-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3279
3280 * socket.c (scm_inet_aton, scm_inet_pton): Convert SCM strings to
3281 locale strings instead of accessing their internals.
3282 (scm_recv, scm_send, scm_recvfrom, scm_sendto): Use
3283 SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH instead of
3284 SCM_STRING_CHARS and SCM_STRING_LENGTH.
3285
3286 * simpos.c (scm_system): Convert SCM strings to locale strings
3287 instead of accessing their internals.
3288
3289 * script.c (scm_compile_shell_switches): Convert version to locale
3290 string before printing it.
3291
3292 * rdelim.c (scm_read_delimited_x): Avoid
3293 SCM_VALIDATE_SUBSTRING_SPEC_COPY and use scm_from_size_t instead
3294 of scm_from_long for the returned number of read characters.
3295
3296 * ioext.c (scm_fdopen): Use scm_i_fdes_to_port together with
3297 scm_i_mode_bits to avoid accessing internals of SCM string from C.
3298
3299 * filesys.c (STRING_SYSCALL, STRING2_SYSCALL): New helper macros.
3300 Use them instead of SCM_SYSCALL when one or two strings need to be
3301 converted into locale strings.
3302 (my_rename): New, gathers platform dependent code for renaming.
3303 (scm_rename): Use it.
3304 (scm_readlink, scm_copy_file): Convert SCM strings to locale
3305 strings instead of accessing their internals.
3306 (scm_basename, scm_dirname): Use SCM_I_STRING_CHARS and
3307 SCM_I_STRING_LENGTH instead of SCM_STRING_CHARS and
3308 SCM_STRING_LENGTH.
3309
3310 * extensions.c (load_extension): Convert lib and init to locale
3311 strings instead of accessing the internals directly.
3312 (scm_c_load_extension): Use scm_from_locale_string instead of
3313 scm_makfrom0str.
3314
3315 * fports.h, fports.c (scm_i_fdes_to_port): New, like
3316 scm_fdes_to_port, but take mode bits directly instead of as a C
3317 string.
3318 (scm_i_fdes_to_port): Implement using above.
3319 (scm_open_file): Use scm_i_fdes_to_port together with
3320 scm_i_mode_bits to avoid accessing internals of SCM string from C.
3321 * vports.c (scm_make_soft_port): Use scm_i_fdes_to_port together
3322 with scm_i_mode_bits to avoid accessing internals of SCM string
3323 from C.
3324
3325 * ports.h (scm_i_mode_bits): New, same as scm_mode_bits but with a
3326 SCM string as argument.
3327
3328 * ports.c (scm_i_void_port): New, like scm_void_port but take mode
3329 bits directly instead of C string.
3330 (scm_void_port): Implement using above.
3331 (scm_sys_make_void_port): Use scm_i_void_port together with
3332 scm_i_mode_bits to avoid accessing internals of SCM string.
3333
3334 * strings.h, strings.c (scm_i_get_substring_spec): New.
3335
3336 * socket.c, rw.c, deprecated.h, validate.h
3337 (SCM_VALIDATE_STRING_COPY): Deprecated. Replaced all uses with
3338 SCM_VALIDATE_STRING plus SCM_I_STRING_CHARS or
3339 scm_to_locale_string, etc.
3340 (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Deprecated. Replaced as
3341 above, plus scm_i_get_substring_spec.
3342
3343 * regex-posix.c, read.c, random.c, ramap.c, print.c, numbers.c,
3344 hash.c, gc.c, gc-card.c, convert.i.c, backtrace.c, strop.c,
3345 strorder.c, strports.c, struct.c, symbols.c, unif.c, ports.c: Use
3346 SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_STRING_LENGTH
3347 instead of SCM_STRING_CHARS, SCM_STRING_UCHARS, and
3348 SCM_STRING_LENGTH, respectively. Also, replaced scm_return_first
3349 with more explicit scm_remember_upto_here_1, etc, or introduced
3350 them in the first place.
3351
3352 * posix.c (WITH_STRING): New helper macro. Use it where one
3353 locale string is needed for a short piece of code.
3354 (STRING_SYSCALL): New helper macro. Use it instead of SCM_SYSCALL
3355 when one locale string is needed.
3356 (scm_mkstemp): Convert tmpl to a locale string.
3357 (scm_putenv): Rewritten to use only C strings.
3358 (scm_setlocale, scm_crpt): Convert argument strings to locale
3359 strings.
3360
33612004-08-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3362
3363 * load.c (scm_primitive_load_path): Do not check for absolute
3364 filenames when scm_sys_search_load_path returns false, which will
3365 return absolute filenames unchanged.
3366
bb26cc2d
MV
33672004-08-11 Marius Vollmer <mvo@zagadka.de>
3368
3369 * gc.c, procprop.c (scm_init_storage, scm_stand_in_procs,
3370 scm_stand_in_proc): Use a hastable for scm_stand_in_procs instead
3371 of an alist. Thanks to Matthias Koeppe!
3372
02573e4c
MV
33732004-08-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3374
3375 * strings.h, deprecated.h (SCM_STRING_COERCE_0TERMINATION_X):
3376 Moved from string.h to deprecated.h.
3377
3378 * deprecated.c, deprecated.h (SCM_CHARS, SCM_LENGTH): Removed.
3379
f9751e86 3380 * strings.h, strings.c (SCM_MAKE_STRING_TAG): Renamed to
02573e4c
MV
3381 SCM_I_MAKE_STRING_TAG, changed all uses.
3382 (SCM_STRING_CHARS, SCM_STRING_UCHARS, SCM_STRING_LENGTH): Renamed
3383 to SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_LENGTH
3384 respectively. For a short time, the old names are still there as
3385 aliases. Not all uses have been changed yet, but the ones in
3386 strings.c have.
3387 (SCM_STRING_MAX_LEN): Do not hardcode to 24 bits, compute from
3388 SCM_T_BITS_MAX.
3389 (scm_is_string, scm_from_locale_string, scm_from_locale_stringn,
3390 scm_take_locale_string, scm_take_locale_stringn,
3391 scm_to_locale_string, scm_to_locale_stringn,
3392 scm_to_locale_stringbuf): New.
3393 (scm_c_string2str, scm_c_substring2str): Deprecated by moving to
3394 deprecated.[hc]. Implemented in terms of the new functions above.
3395 (scm_take_str, scm_take0str, scm_mem2string, scm_str2string,
3396 scm_makfrom0str): Reimplemented in terms of the new functions from
3397 above. They will be discouraged shortly.
3398 (scm_substring): Do not use scm_mem2string.
3399 (scm_i_allocate_string_pointers, scm_i_free_string_pointers): New,
3400 to replace similar code from posix.c, simpos.c, and dynl.c.
3401 (scm_string_append): Use memcpy instead of explicit loop. Do not
3402 use register keyword. Use plain 'char' instead of 'unsigned
3403 char'.
3404
3405 * strports.c (scm_mkstrport): Use SCM_I_STRING_UCHARS instead of
3406 SCM_STRING_UCHARS. Use SCM_I_STRINGP instead of SCM_STRINGP.
3407
3408 * strop.c (scm_i_index): Replaced SCM_STRINGP, SCM_STRING_CHARS,
3409 and SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
3410 SCM_I_STRING_LENGTH, respectively. Pass string object directly,
3411 not as a pointer. Use scm_remember_upto_here_1 to protect it.
3412
3413 * read.c (scm_input_error): Use a SCM value for 'fn', not a C
3414 string. This avoids a conversion round-trip.
3415
3416 * gh_data.c: Replaced SCM_STRINGP, SCM_STRING_CHARS, and
3417 SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
3418 SCM_I_STRING_LENGTH, respectively.
3419 (gh_scm2newstr): Implement in terms of scm_to_locale_string.
3420
3421 * environments.c: Instead calling scm_puts on the SCM_STRING_CHARS
3422 of a string, call scm_display on the string itself.
3423
3424 * dynwind.c, dynwind.h (scm_frame_free): New.
3425
3426 * stime.c, socket.c, simpos.c, procs.c, posix.c, ports.c,
3427 net_db.c, fports.c, filesys.c, eval.c, deprecation.c, dynl.c:
3428 Replaced uses of SCM_STRING_CHARS with proper uses of
3429 scm_to_locale_string. Replaced SCM_STRINGP with scm_is_string.
3430 Replaced scm_mem2string with scm_from_locale_string.
3431
3432 * simpos.c, posix.c (allocate_string_pointers, environ_list_to_c):
3433 Removed, replaced all uses with scm_i_allocate_string_pointers.
3434
3435 * load.h, load.c (scm_internal_parse_path): Removed.
3436 (scm_parse_path): Use scm_string_split to do the work.
3437 (scm_init_load_path): Use scm_parse_path instead of
3438 scm_internal_parse_path.
3439 (scm_search_path): Rewritten string handling part of the code in
3440 terms of scm_to_locale_stringbuf and so that it is thread safe.
3441
3442 * error.c (scm_error_scm): Throw directly instead of calling
3443 scm_error, this avoids the back and forth conversion of SUBR and
3444 MESSAGE and also plugs a memory leak.
3445 (scm_error): Call scm_error_scm.
3446
3447 * backtrace.c: Replaced SCM_STRINGP with scm_is_string.
3448 (display_header): Print FNAME when it is true, not
3449 merely when it is a string.
3450
3451 * strings.h (SCM_SET_STRING_LENGTH, SCM_SET_STRING_CHARS): Removed
3452 unceremoniously. They were unused by Guile itself, and external
3453 use should stop immediately.
3454
3455
409eb4e5
MV
34562004-08-10 Marius Vollmer <mvo@zagadka.de>
3457
3458 * numbers.h, number.c, deprecated.h, deprecated.c (scm_round,
3459 scm_truncate): Renamed to scm_c_round and scm_c_truncate;
3460 deprecated versions installed in deprecated.h and deprecated.c.
3461 Changed all uses.
3462
a00eaf19
RB
34632004-08-06 Rob Browning <rlb@defaultvalue.org>
3464
3465 * net_db.c (scm_resolv_error): don't cause an exception while
3466 trying to throw an exception -- call scm_misc_error with correct
3467 arguments. The previous arguments needed a format escape that
3468 wasn't in any of the format strings.
3469
bcb88c93
KR
34702004-08-06 Kevin Ryde <user42@zip.com.au>
3471
8f094b97
KR
3472 * ramap.c (scm_array_fill_x): For byvect char fill, force signed char
3473 so as not to depend on signedness of plain char. For byvect range
3474 check, throw out-of-range rather than wrong-type-arg.
3475
bcb88c93
KR
3476 * unif.c (scm_uniform_vector_ref, scm_array_set_x): For byvect, force
3477 signed byte range checks by using scm_to_schar and scm_from_schar,
3478 don't want to depend on signedness of C char.
3479
29e61124
KR
34802004-08-05 Kevin Ryde <user42@zip.com.au>
3481
3482 * arbiters.c (scm_try_arbiter): Use scm_i_misc_mutex instead of
3483 SCM_DEFER_INTS.
3484 (scm_release_arbiter): Use scm_i_misc_mutex so return value can be
3485 guaranteed if multiple threads compete to unlock.
3486 Update docstrings per doc/ref/api-scheduling.texi.
3487
99de794f
KR
3488 * filesys.c (scm_copy_file): Use fstat on the input fd rather than
3489 stat on the filename, to be certain a file rename can't mean we get
3490 info on one filesystem object but open another. This fstat usage is
3491 similar to Emacs copy-file.
3492
29e61124
KR
3493 * posix.c (scm_setgroups): Enhance docstring, per doc/ref/posix.texi.
3494
3495 * simpos.c (scm_system_star): Change scm_from_long to scm_from_int on
3496 SIGINT and SIGQUIT, since those values are ints.
3497
759aa8f9
MV
34982004-08-03 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3499
7241f213
MV
3500 * num2integral.i.c, num2float.i.c: Removed.
3501 * Makefile.am (noinst_HEADERS): Updated.
3502
f9656a9f
MV
3503 * numbers.h. numbers.c (scm_make_ratio): Renamed to
3504 scm_i_make_ratio and made static, replaced uses with scm_divide.
96d8c217
MV
3505 (scm_complex_p): New, export as "complex?" to Scheme.
3506 (scm_number_p): Export as "number?" to Scheme.
3507 (scm_is_complex, scm_is_number): New.
3508 (scm_c_make_rectangular, scm_c_make_polar): New.
3509 (scm_make_rectangular, scm_make_polar): Use above.
3510 (scm_c_real_part, scm_c_imag_part, scm_c_magnitude, scm_c_angle):
3511 New.
3512 (scm_make_complex): Discouraged by moving to discouraged.h and
3513 discouraged.c. Replaced all uses with scm_c_make_rectangular.
3514
759aa8f9
MV
3515 * discouraged.h, discouraged.c, numbers.c, numbers.h
3516 (scm_is_rational): New.
3517 (scm_i_short2big, scm_i_int2big, scm_i_uint2big, scm_i_size2big,
3518 scm_i_ptrdiff2big, scm_i_long_long2big, scm_i_ulong_long2big):
3519 Removed prototypes.
3520 (scm_make_real, scm_num2dbl, scm_float2num, scm_double2num):
3521 Discouraged by moving to discouraged.h and discouraged.c.
3522 Replaced all uses with scm_from_double.
3523 (scm_num2float, scm_num2double): Discouraged by moving prototype
3524 to discouraged.h and rewriting in terms of scm_to_double.
3525 Replaced all uses with scm_to_double.
3526 (scm_to_double): Do not implement in terms of scm_num2dbl, use
3527 explicit code.
3528 (scm_from_double): Do not implement in terms of scm_make_real, use
3529 explicit code.
3530
531bf3e6
MV
35312004-08-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3532
759aa8f9
MV
3533 * init.c (scm_init_guile_1): Call scm_i_init_discouraged.
3534
531bf3e6
MV
3535 * gen-scmconfig.h.in (SCM_I_GSC_ENABLE_DISCOURAGED): New.
3536 * gen-scmconfig.c (SCM_ENABLE_DISCOURAGED): Emit based on above.
3537
3538 * eval.c (SCM_EVALIM, SCM_EVALIM2, SCM_XEVAL, SCM_XEVALCAR):
3539 Renamed to SCM_I_* in order to avoid collisions with the versions
3540 defined in deprecated.h.
3541
3542 * discouraged.h, discouraged.c: New files.
3543
3544 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_EQ_P,
3545 SCM_NEGATE_BOOL, SCM_BOOL, SCM_BOOT_NOT): Promoted from being
3546 deprecated to being discouraged by moving to discouraged.h.
3547
3548 * numbers.h, numbers.c, discouraged.h, discouraged.c
3549 (scm_short2num, scm_ushort2num, scm_int2num, scm_uint2num,
3550 scm_long2num, scm_ulong2num, scm_size2num, scm_ptrdiff2num,
3551 scm_num2short, scm_num2ushort, scm_num2int, scm_num2uint,
3552 scm_num2long, scm_num2ulong, scm_num2size, scm_num2ptrdiff,
3553 scm_long_long2num, scm_ulong_long2num, scm_num2long_long,
3554 scm_num2ulong_long): Discouraged by moving to discouraged.h and
3555 discouraged.c and reimplementing in terms of scm_from_* and
3556 scm_to_*. Changed all uses to the new scm_from_* and scm_to_*
3557 functions.
3558
3559 * numbers.h, numbers.c: Removed GUILE_DEBUG code.
3560 (scm_i_short2big, scm_i_ushort2big, scm_i_int2big, scm_i_uint2big,
3561 scm_i_size2big, scm_i_ptrdiff2big): Removed.
3562 (scm_i_long2big, scm_i_ulong2big): New, explicit definitions.
3563 * conv-integer.i.c, conv-uinteger.i.c: Use them instead of
3564 explicit code.
3565
5ec82e96
KR
35662004-08-02 Kevin Ryde <user42@zip.com.au>
3567
3568 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Add comments about past
3569 and current usage and migration.
3570
58f28989
KR
35712004-07-31 Kevin Ryde <user42@zip.com.au>
3572
3573 * error.c (scm_strerror): Use scm_i_misc_mutex around strerror since
3574 it's not thread safe.
3575 (scm_syserror): Use scm_strerror rather than SCM_I_STRERROR, to take
3576 advantage of this.
3577 * fports.c (scm_open_file): Use scm_strerror likewise.
3578 * filesys.c (scm_stat, scm_lstat): Ditto.
3579
3580 * filesys.c (scm_copy_file): Avoid fd leak when destination file
3581 cannot be opened.
3582
3583 * symbols.c (scm_gensym): Use scm_i_misc_mutex around gensym_counter
3584 update, for thread safety.
3585 (gensym_counter): Move into scm_gensym which is its only user.
3586 (scm_init_symbols): No need to explicitly initialize gensym_counter.
3587
03696aab
MV
35882004-07-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3589
51fdb325
MV
3590 * numbers.h (scm_to_schar, scm_to_uchar, scm_to_char,
3591 scm_to_short, scm_to_ushort, scm_to_int, scm_to_uint, scm_to_long,
3592 scm_to_ulong, scm_to_long_long, scm_to_ulong_long, scm_to_intmax,
3593 scm_to_uintmax, scm_to_size_t, scm_to_ssize_t scm_from_schar,
3594 scm_from_uchar, scm_from_char, scm_from_short, scm_from_ushort,
3595 scm_from_int, scm_from_uint, scm_from_long, scm_from_ulong,
3596 scm_from_long_long, scm_from_ulong_long, scm_from_intmax,
3597 scm_from_uintmax, scm_from_size_t, scm_from_ssize_t): No longer
3598 defined in terms of scm_to_signed_integer, etc, but in terms of
3599 scm_to_int8, etc.
3600
3601 * gen-scmconfig.c (SCM_SIZEOF_INTMAX, SCM_SIZEOF_SIZE_T): New.
3602
03696aab
MV
3603 * gen-scmconfig.h.in: Removed SCM_I_GSC_*_LIMITS macros, they are
3604 no longer used.
3605
3606 * __scm.h (SCM_I_UTYPE_MAX, SCM_I_TYPE_MAX, SCM_I_TYPE_MIN,
3607 SCM_I_SIZE_MAX, SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX): New.
3608
3609 * __scm.h, gen-scmconfig.c (SCM_I_LLONG_MAX, SCM_I_LLONG_MIN,
3610 SCM_I_ULLONG_MAX, SCM_T_INT8_MIN, SCM_T_INT8_MAX, SCM_T_UINT8_MAX,
3611 SCM_T_INT16_MIN, SCM_T_INT16_MAX, SCM_T_UINT16_MAX,
3612 SCM_T_INT32_MIN, SCM_T_INT32_MAX, SCM_T_UINT32_MAX,
3613 SCM_T_INT64_MIN, SCM_T_INT64_MAX, SCM_T_UINT64_MAX,
3614 SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, SCM_T_UINTMAX_MAX): Moved
3615 definition into __scm.h, using new SCM_I_TYPE_MIN, etc.
3616
3617 * conv-integer.i.c, conv-uinteger.i.c: New files, used to generate
3618 the functions below.
3619
3620 * Makefile.am (noinst_HEADERS): Added conv-integer.i.c and
3621 conv-uinteger.i.c.
3622
3623 * numbers.c, numbers.h (scm_to_int8, scm_to_uint8, scm_to_int16,
3624 scm_to_uint16, scm_to_int32, scm_to_uint32, scm_to_int64,
3625 scm_to_uint64, scm_from_int8, scm_from_uint8, scm_from_int16,
3626 scm_from_uint16, scm_from_int32, scm_from_uint32, scm_from_int64,
3627 scm_from_uint64): Turned from macros into proper functions.
3628 (scm_to_signed_integer, scm_to_unsigned_integer,
3629 scm_from_signed_integer, scm_from_unsigned_integer): Generate via
3630 conv-integer.i.c and conv-uinteger.i.c, as well.
3631
3632 * number.h (scm_to_ssize_t, scm_to_size_t): Use the new
3633 SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX, and SCM_I_SIZE_MAX macros for
3634 the limits. Those are always defined.
3635
1f15779e
KR
36362004-07-29 Kevin Ryde <user42@zip.com.au>
3637
3638 * posix.c (scm_ttyname): Use scm_i_misc_mutex for thread safety.
3639
48360eb3
KR
36402004-07-28 Kevin Ryde <user42@zip.com.au>
3641
3642 * posix.c (scm_ctermid): Use an L_ctermid buf on the stack, for thread
3643 safety.
3644
c3f3c841
KR
3645 * unif.c (scm_array_set_x): For svect, use scm_num2short for
3646 consistency with other vector types and to get arg and func name into
3647 error message.
3648
c82f8ed6
MV
36492004-07-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3650
3651 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_BOOL):
3652 Reimplement using scm_is_false, scm_is_true, scm_is_bool, and
3653 scm_from_bool, respectively.
3654 (SCM_NINUMP): Added.
3655
3656 * tags.h, deprecated.h (SCM_EQ_P): Deprecated by moving it into
3657 deprecated.h. Replaced all uses with scm_is_eq.
3658
317b4c4a
KR
36592004-07-24 Kevin Ryde <user42@zip.com.au>
3660
3661 * threads.c, threads.h (scm_i_misc_mutex): New SCM_GLOBAL_MUTEX.
3662 * posix.c (scm_crypt): Use it to protect static data in crypt().
3663
e11e83f3
MV
36642004-07-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3665
3666 * deprecated.h, deprecated.c, numbers.h (SCM_INUMP, SCM_NINUMP,
c82f8ed6 3667 SCM_INUM): Deprecated by renaming them to SCM_I_INUMP,
e11e83f3
MV
3668 SCM_I_NINUMP and SCM_I_INUM, respectively and adding deprecated
3669 versions to deprecated.h and deprecated.c. Changed all uses to
3670 either use the SCM_I_ variants or scm_is_*, scm_to_*, or
3671 scm_from_*, as appropriate.
3672
3673 * dynwind.c (scm_i_dowinds): Removed unused code that would call
3674 the unexisting scm_cross_dynwind_binding_scope for inums on the
3675 windlist.
3676
a55c2b68
MV
36772004-07-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3678
3679 * socket.c (ipv6_net_to_num, scm_from_ipv6): Renamed
e11e83f3 3680 ipv6_net_to_num to scm_from_ipv6, for converting from an IPv6
a55c2b68
MV
3681 byte-wise address to a SCM integer. Changed all uses.
3682 (ipv6_num_to_net, scm_to_ipv6): Renamed ipv6_num_to_net to
3683 scm_to_ipv6 and added type and range checking, for converting from
3684 an IPv& byte-wise address to a SCM integer. Changed all uses.
3685 (bignum_in_ipv6_range_p, VALIDATE_INET6): Removed, their function
3686 is now done by scm_to_ipv6.
3687
3688 * numbers.c (scm_to_signed_integer, scm_to_unsigned_integer): dot
3689 not accept inexact integers.
3690
3691 * validate.h, deprecated.h (SCM_VALIDATE_INUM,
3692 SCM_VALIDATE_INUM_COPY, SCM_VALIDATE_BIGINT,
3693 SCM_VALIDATE_INUM_MIN, SCM_VALIDATE_INUM_MIN_COPY,
3694 SCM_VALIDATE_INUM_MIN_DEF_COPY,SCM_VALIDATE_INUM_DEF,
3695 SCM_VALIDATE_INUM_DEF_COPY, SCM_VALIDATE_INUM_RANGE,
3696 SCM_VALIDATE_INUM_RANGE_COPY): Deprecated because they make the
3697 fixnum/bignum distinction visible. Changed all uses to
3698 scm_to_size_t or similar.
3699
37002004-07-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3701
3702 * cpp_cnvt.awk: Use scm_from_int instead of SCM_MAKINUM.
3703
48a06bd5
KR
37042004-07-10 Kevin Ryde <user42@zip.com.au>
3705
3706 * hash.c (scm_hashq, scm_hashv, scm_hash): Restrict to size>=1 rather
3707 than size>=0, since 0<=hash<size cannot be satisfied for size==0, and
3708 such a size causes divide-by-zeros in scm_hasher.
3709
052fbfd9
KR
3710 * regex-posix.c (scm_make_regexp): Free rx on error, to avoid memory
3711 leak.
3712
43240c9c
MV
37132004-07-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3714
3715 * numbers.c (scm_is_signed_integer, scm_is_unsigned_integer):
3716 Rewritten using the same logic as scm_to_signed_integer and
3717 scm_to_unsigned_integer, respectively, which is better(tm). Also,
3718 use CHAR_BIT instead of hardcoding 8.
3719 (LLONG_MIN, LLONG_MAX, ULLONG_MAX): Removed and used
3720 SCM_I_LLONG_MIN etc. instead.
3721
3722 * numbers.h (SCM_MAKINUM, SCM_I_MAKINUM): Renamed SCM_MAKINUM to
3723 SCM_I_MAKINUM and changed all uses.
3724 * deprecated.h, deprecated.c (SCM_MAKINUM): Newly deprecated.
3725
a3de8e7b
MV
3726 * gen-scmconfig.c (SCM_I_LLONG_MIN, SCM_I_LLONG_MAX,
3727 SCM_I_ULLONG_MAX): Instead of hard-coding the numbers, compute
43240c9c
MV
3728 them by assuming twos-complement.
3729
c9eb03bb
MV
37302004-07-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3731
3732 * gen-scmconfig.h.in: Added all the new SCM_I_GSC_*_LIMITS that
3733 configure now produces.
3734 * gen-scmconfig.c: Use them to output SCM_T_INT8_MIN, etc
3735 definitions, giving the limits of the integer types defined by
3736 Guile. Also, output a hard coded SCM_I_LLONG_MIN, etc since
3737 LLONG_MIN or LONG_LONG_MIN is hard to get at.
3738
3739 * numbers.h (scm_to_short, scm_to_ushort): It's SHRT_MIN, etc, not
3740 SHORT_MIN.
3741 (scm_to_size_t): Use SIZE_MAX instead of cooking our own.
3742 (scm_to_long_long, scm_to_ulong_long, scm_to_int8, scm_to_uint8,
3743 scm_to_int16, scm_to_uint16, scm_to_int32, scm_to_uint32,
3744 scm_to_int64, scm_to_uint64, scm_to_intmax, scm_to_uintmax,
3745 scm_from_long_long, scm_from_ulong_long, scm_from_int8,
3746 scm_from_uint8, scm_from_int16, scm_from_uint16, scm_from_int32,
3747 scm_from_uint32, scm_from_int64, scm_from_uint64, scm_from_intmax,
3748 scm_from_uintmax): New.
3749
7888309b
MV
37502004-07-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3751
3752 * tags.h (scm_is_eq): New.
3753
3754 * deprecated.h, boolean.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOL,
3755 SCM_NEGATE_BOOL, SCM_BOOLP): Deprecated by moving into
3756 "deprecated.h". Replaced all uses with scm_is_false, scm_is_true,
3757 scm_from_bool, and scm_is_bool, respectively.
3758
3759 * boolean.h (scm_is_bool): Fix bug in prototype.
3760 (scm_from_bool): The argument is "x" not "f", stupid.
3761
3762 * boolean.c (scm_is_bool): Fix typo.
3763
3764 * numbers.h, numbers.c (scm_is_integer, scm_is_signed_integer,
3765 scm_is_unsigned_integer, scm_to_signed_integer,
3766 scm_to_unsigned_integer, scm_to_schar, scm_to_uchar, scm_to_char,
3767 scm_to_short, scm_to_ushort, scm_to_long, scm_to_ulong,
3768 scm_to_size_t, scm_to_ssize_t, scm_from_schar, scm_from_uchar,
3769 scm_from_char, scm_from_short, scm_from_ushort, scm_from_int,
3770 scm_from_uint, scm_from_long, scm_from_ulong, scm_from_size_t,
3771 scm_from_ssize_t, scm_is_real, scm_to_double, scm_from_double):
3772 New.
3773
800570a6
MV
37742004-07-05 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3775
3776 * boolean.h, boolean.c (scm_is_true, scm_is_false, scm_from_bool,
3777 scm_to_bool): New.
3778
9fcf3cbb
DH
37792004-06-27 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3780
3781 * backtrace.c (display_expression, display_frame): Call
3782 scm_i_unmemoize_expr for unmemoizing a memoized object holding a
3783 single memoized expression.
3784
3785 * debug.c (memoized_print): Don't try to unmemoize the memoized
3786 object, since we can't know whether it holds a single expression
3787 or a body.
3788
3789 (scm_mem_to_proc): Removed check for lambda expression, since it
3790 was moot anyway. Whoever uses these functions for debugging
3791 purposes should know what they do: Creating invalid memoized code
3792 will cause crashes, independent of whether this check is present
3793 or not.
3794
3795 (scm_proc_to_mem): Take the closure's code as it is and don't
3796 append a SCM_IM_LAMBDA isym. To allow easier debugging, the
3797 memoized code should not be modified.
3798
3799 * debug.[ch] (scm_unmemoize, scm_i_unmemoize_expr): Removed
3800 scm_unmemoize from public use, but made scm_i_unmemoize_expr
3801 available as a guile internal function instead. However,
3802 scm_i_unmemoize_expr will only work on memoized objects that hold
3803 a single memoized expression. It won't work with bodies.
3804
3805 * debug.c (scm_procedure_source), macros.c (macro_print), print.c
3806 (scm_iprin1): Call scm_i_unmemocopy_body for unmemoizing a body,
3807 i. e. a list of expressions.
3808
3809 * eval.c (unmemoize_exprs): Drop internal body markers from the
3810 output during unmemoization.
3811
3812 * eval.[ch] (scm_unmemocopy, scm_i_unmemocopy_expr,
3813 scm_i_unmemocopy_body): Removed scm_unmemocopy from public use,
3814 but made scm_i_unmemocopy_expr and scm_i_unmemocopy_body available
3815 as guile internal functions instead. scm_i_unmemoize_expr will
3816 only work on a single memoized expression, while
3817 scm_i_unmemocopy_body will only work on bodies.
3818
90df793f
DH
38192004-06-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3820
3821 * eval.c (unmemoize_exprs): Handle semi-memoized code.
3822
3823 (scm_cons_source, scm_primitive_eval): Prefer higher level
3824 predicate SCM_FALSEP over SCM_IMP.
3825
8048c00b
RB
38262004-06-15 Rob Browning <rlb@defaultvalue.org>
3827
3828 * script.c (scm_shell_usage): minor phrasing change.
3829
3830 * gc_os_dep.c: update ifdefery for macosx.
3831 (scm_get_stack_base): separate result initialization from
3832 declaration to slience warnings with macosx and hp-ux using gcc
9a5fa6e9 3833 3.3. Thanks to Andreas Vögele.
8048c00b 3834
d93294d4
HWN
38352004-06-13 Han-Wen Nienhuys <hanwen@xs4all.nl>
3836
3837 * eval.c (unmemoize_exprs): use SCM_CONSP for the loop condition.
3838
212e58ed
DH
38392004-06-06 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3840
3841 * list.[ch] (scm_i_finite_list_copy): New internal function to
3842 copy lists that are known to be finite (though not necessarily
3843 proper).
3844
3845 * debug.c (scm_procedure_source): Don't have scm_unmemocopy treat
3846 a closure's argument list like an expression of a body.
3847
3848 * eval.c (unmemoize_expression, unmemoize_exprs, unmemoize_and,
3849 unmemoize_begin, unmemoize_case, unmemoize_cond, unmemoize_delay,
3850 unmemoize_do, unmemoize_if, unmemoize_lambda, unmemoize_let,
3851 unmemoize_letrec, unmemoize_letstar, unmemoize_or,
3852 unmemoize_set_x, unmemoize_apply, unmemoize_atcall_cc,
3853 unmemoize_at_call_with_values, unmemoize_future, sym_atslot_ref,
3854 unmemoize_atslot_ref, sym_atslot_set_x, unmemoize_atslot_set_x,
3855 unmemoize_builtin_macro): New static functions and symbols.
3856
3857 (scm_unmemocopy): Rewritten in terms of the above. scm_unmemocopy
3858 now has a slightly different meaning: The memoized form that is
3859 receives as its argument is now interpreted as a sequence of
3860 expressions from a body.
3861
3862 (unmemocar, scm_unmemocar): Since the whole functionality of
3863 unmemocar and scm_unmemocar is not needed any more, scm_unmemocar
3864 has its old content back and is deprecated, while unmemocar has
3865 been removed.
3866
3867 (SCM_BIT7): Removed.
3868
3869 (CEVAL): For unmemoizing a single expression, call
3870 unmemoize_expression instead of scm_unmemocopy, which now expects
3871 a sequence of body expressions. Eliminated unnecessary empty
3872 environment frame when executing let* forms. Eliminated
3873 unmemoization step from evaluator.
3874
9ccea370
MV
38752004-06-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3876
3877 * eval.c (scm_macroexp, macroexp): Renamed scm_macroexp to
3878 macroexp and made static. Added new version of scm_macroexp that
3879 emits a deprecation warning and then calls macroexp.
3880 (scm_m_undefine): Issue deprecation warning.
3881
57d23e25
DH
38822004-05-30 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3883
3884 * eval.c (lookup_global_symbol, literal_p, try_macro_lookup):
3885 Modified to make set! work on symbols that represent syntactic
3886 keywords.
3887
141521ad
HWN
38882004-05-26 Han-Wen Nienhuys <hanwen@xs4all.nl>
3889
3890 * gc.h (SCM_CELL_OBJECT_LOC): use SCM_GC_CELL_OBJECT to prevent
3891 compound expression as lvalue errors.
3892
7c2f56a4
MV
38932004-05-24 Marius Vollmer <mvo@zagadka.de>
3894
3895 * dynwind.c (winder_mark): Use SCM_PACK to correctly convert the
3896 WINDER_DATA to a SCM.
3897
366ecaec
DH
38982004-05-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3899
3900 * goops.c (compute_getters_n_setters, create_standard_classes,
3901 scm_add_slot): Compute closures by calling scm_i_eval_x on a
3902 lambda expression rather than creating them with scm_closure.
3903
26ecfa39
DH
39042004-05-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3905
3906 * eval.c (s_macro_keyword, scm_m_set_x): Remove checking for
3907 misplaced syntactic keywords. This will not work unless guile's
3908 defmacro feature is deprecated.
3909
3910 (scm_m_case): Fixed a bug that caused the list of labels to grow
3911 with every case form.
3912
f865229a
KR
39132004-05-19 Kevin Ryde <user42@zip.com.au>
3914
3915 * numbers.c (scm_round_number): For inum and big, just return x. For
3916 real, use scm_round for 2^54-1 etc problems covered there.
3917
3918 * numbers.c (trunc): Remove #define to scm_truncate when the C library
3919 doesn't provide trunc. This was for when `truncate' was done as a
3920 scm_tc7_dsubr, no longer required.
3921
3922 * threads.c (scm_threads_mark_stacks) [SCM_STACK_GROWS_UP]: Correction
3923 to stack marking call, two parameters and no cast on t->base.
3924
63947c7a
MV
39252004-05-18 Marius Vollmer <mvo@zagadka.de>
3926
3927 * hashtab.c (rehash_after_gc): Bug fix: properly link the
3928 processed hashtables back into the weak_hashtables list. Thanks
3929 to Bill Schottstaedt!
3930
e7313a9d
DH
39312004-05-16 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3932
3933 * eval.c (unmemoize_quote): New static function.
3934
3935 (scm_m_quote, scm_m_atslot_ref, SCM_CEVAL): Changed the byte code
3936 representation of 'quote' and '@slot-ref' to an improper list.
3937 This reduces execution time, the number of cells used to hold the
3938 memoized code, and thus also reduces garbage collection time.
3939
3940 (scm_unmemocopy): Use unmemoize_quote for quote expressions.
3941
3942 (SCM_CEVAL): Changed macro handling to also work with macros that
3943 return improper lists. Added an assertion, that the code returned
3944 by a macro transformer will not lead to cycles in the memoized
3945 code.
3946
e5156567
DH
39472004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3948
3949 No functional change, just rearrangements of functions within the
3950 file.
3951
3952 * eval.c (scm_ilookup, scm_unbound_variable_key,
3953 error_unbound_variable, scm_lookupcar1, scm_lookupcar): Moved to
3954 the definitions used for execution, since that's where they will
3955 belong to later.
3956
651f07f8
DH
39572004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3958
3959 * numbers.h (SCM_SLOPPY_FRACTIONP): Removed. It was not used
3960 throughout guile, has not been part of an official release yet,
3961 and the concept of sloppy predicates has never been a good idea.
3962
3963 (SCM_FRACTION_NUMERATOR, SCM_FRACTION_DENOMINATOR,
3964 SCM_FRACTION_SET_NUMERATOR, SCM_FRACTION_SET_DENOMINATOR):
3965 Simplified.
3966
770e048f
DH
39672004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3968
3969 * throw.c (SETJBJMPBUF, SCM_SETJBDFRAME): Add cast to scm_t_bits
3970 to make explicit what happens.
3971
2ff08405
DH
39722004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3973
3974 * dynl.c (SET_DYNL_HANDLE): Add cast to scm_t_bits to make
3975 explicit what happens.
3976
3977 * guardians.c (TCONC_IN): Use SCM_SET_CELL_OBJECT_x rather than
3978 SCM_SET_CELL_WORD_x when writing scheme objets to cell elements.
3979
89afb9cd
MV
39802004-05-11 Marius Vollmer <mvo@zagadka.de>
3981
3982 * scmsigs.c (scm_sigaction_for_thread): Validate that the handler
3983 is indeed a procedure when it isn't a number.
3984
3d5ebfa9
MV
39852004-05-10 Marius Vollmer <mvo@zagadka.de>
3986
3987 Convert floating point numbers into strings with an arbitrary
3988 radix. Thanks to Richard Todd!
3989
3990 * numbers.c (FLOBUFLEN): Increase so that radix 2 strings will
3991 fit.
3992 (fx): Removed.
3993 (scm_dblprec, fx_per_radix, init_dblprec, init_fx_radix,
3994 number_chars): New, to support variable radices.
3995 (idbl2str): Use above instead of the old base-10 only tables.
3996 (iflo2str): Pass on new RADIX argument to idbl2str.
3997 (scm_number_to_string): Pass radix to iflo2str.
3998 (scm_print_real, scm_print_complex): Explicitly pass radix 10 to
3999 iflo2str.
4000 (scm_init_numbers): Call init_dblprec and init_fx_radix for all
4001 possible radices.
4002
3ae69bb4
KR
40032004-05-10 Kevin Ryde <user42@zip.com.au>
4004
4005 * numbers.c (scm_logbit_p): Correction to test above the end of an
4006 inum. Reported by Jan Konecny.
4007
27968825
MV
40082004-05-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4009
4010 * gc.h (scm_t_cell): Fields are now of type SCM instead of
4011 scm_t_bits. Updated all users.
4012 (SCM_GC_CARD_SIZE_MASK): Use SCM_GC_SIZEOF_CARD instead of
4013 duplicating the code.
4014 (SCM_CELL_OBJECT_LOC): New.
4015 (SCM_CARLOC, SCM_CDRLOC): Use it instead of SCM_CELL_WORD_LOC.
4016 (SCM_CELL_WORD_LOC): Moved to "deprecated.h".
4017
4018 * smob.h (SCM_SMOB_DATA_2, SCM_SMOB_DATA_3, SCM_SMOB_FLAGS,
4019 SCM_SET_SMOB_DATA_2, SCM_SET_SMOB_DATA_3, SCM_SET_SMOB_FLAGS,
4020 SCM_SMOB_OBJECT, SCM_SMOB_OBJECT_2, SCM_SMOB_OBJECT_3,
4021 SCM_SET_SMOB_OBJECT, SCM_SET_SMOB_OBJECT_2, SCM_SET_SMOB_OBJECT_3,
4022 SCM_SMOB_OBJECT_LOC, SCM_SMOB_OBJECT_2_LOC,
4023 SCM_SMOB_OBJECT_3_LOC): New.
4024 * smob.c (scm_i_set_smob_flags): New function.
4025
4026 * dynl.c, dynwind.c, eval.h, fluids.h, futures.h, hashtab.h,
4027 hooks.h, keywords.h, macros.h, macros.c, mallocs.c, mallocs.h,
4028 random.h, regex-posix.h, root.h, srcprop.h, srcprop.c, threads.h:
4029 Use SCM_SMOB_* instead of SCM_CELL_* as appropriate. Use
4030 SCM_SMOB_FLAGS and SCM_SET_SMOB_FLAGS instead of accessing the
4031 zeroth word directly. Use SCM_SMOB_PREDICATE as appropriate.
4032
4033 * numbers.h (SCM_I_BIG_MPZ): Use SCM_CELL_OBJECT_LOC instead of
4034 taking the address of SCM_CELL_WORD_1, the latter being no longer
4035 an lvalue.
4036
4037 * variable.h (SCM_VARIABLE_LOC): Use SCM_CELL_OBJECT_LOC instead
4038 of casting SCM_CELL_WORD_LOC.
4039
3cf17ef0
KR
40402004-05-02 Kevin Ryde <user42@zip.com.au>
4041
37026925 4042 * eval.c (scm_macroexp): Add prototype, since it's not in eval.h under
9a5fa6e9 4043 --disable-deprecated. Reported by Andreas Vögele.
37026925 4044
3cf17ef0 4045 * filesys.c (_POSIX_C_SOURCE): Define to 199506L to get readdir_r (in
9a5fa6e9 4046 particular on HP-UX). Reported by Andreas Vögele.
3cf17ef0 4047
c5854598
KR
4048 * list.c (varargs.h): Remove, leave just stdarg.h which is all the
4049 code has support for. Fixes building with AIX cc, which is ansi but
4050 doesn't define __STDC__. Reported by Keith Crane.
4051 (var_start): Remove macro, this variation no longer required.
4052 (scm_list_n): Use va_start directly.
4053
f26c1a32
KR
40542004-05-01 Kevin Ryde <user42@zip.com.au>
4055
4056 * continuations.c (scm_dynthrow): Use >= instead of SCM_PTR_GE which
9a5fa6e9 4057 is now gone. Reported by Andreas Vögele.
f26c1a32 4058
dfa6017e
KR
40592004-04-28 Kevin Ryde <user42@zip.com.au>
4060
4061 * backtrace.c (display_frame_expr), numbers.c (XDIGIT2UINT,
4062 mem2uinteger, mem2decimal_from_point, mem2ureal): Cast char to int for
4063 ctype.h tests, to avoid warnings from gcc on HP-UX about char as array
9a5fa6e9 4064 subscript. Reported by Andreas Vögele.
dfa6017e
KR
4065 Also cast through unsigned char to avoid passing negatives to those
4066 macros if input contains 8-bit values.
4067
4068 * num2integral.i.c (NUM2INTEGRAL): Under non-BIGMPZ_FITSP case,
4069 corrections to range check for signed numbers. Remove
4070 scm_remember_upto_here_1(num) from these checks, since num is used
4071 subsequently anyway.
4072
4073 * num2integral.i.c (NUM2INTEGRAL): Test BIGMPZ_FITSP with "!= 0" to
4074 avoid warning from gcc 3.4. Reported by Hyperdivision.
4075
4076 * numbers.c (scm_bit_extract): Use min instead of MIN.
4077 (MIN): Remove, this conflicts with similar macro defined by limits.h
9a5fa6e9 4078 on HP-UX. Reported by Andreas Vögele.
dfa6017e
KR
4079
4080 * stime.c (_POSIX_C_SOURCE): Define to 199506L to get gmtime_r (in
9a5fa6e9 4081 particular on HP-UX). Reported by Andreas Vögele.
dfa6017e 4082
a0d06a00 4083 * threads.c (scm_threads_mark_stacks): Correction sizet -> size_t.
9a5fa6e9 4084 Reported by Andreas Vögele.
a0d06a00 4085
dfa6017e
KR
4086 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 25*sizeof(long),
4087 for the benefit of hpux11 where pthread_mutex_t is 88 bytes. Reported
9a5fa6e9 4088 by Andreas Vögele.
dfa6017e 4089
36245b66
DH
40902004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4091
4092 * eval.c (s_macro_keyword): New static identifier.
4093
4094 (scm_m_define): Change order to first create binding and
4095 evaluating the expression afterwards.
4096
4097 (scm_m_set_x): Memoize complete set! expression. Only leave
4098 symbols if no binding exists at memoization time. Throw error if
4099 assigning to a syntactic keyword.
4100
4101 (lazy_memoize_variable): New function.
4102
4103 (CEVAL): When execution set!, perform lazy memoization if
4104 unmemoized symbol is detected.
4105
4106 * modules.c (module_variable): Return variables with unbound
4107 value.
4108
4109 * tags.h: Fix comment.
4110
4d81111e
KR
41112004-04-25 Kevin Ryde <user42@zip.com.au>
4112
da8bcb2f
KR
4113 * chars.c (scm_char_upcase, scm_char_downcase, scm_c_upcase,
4114 scm_c_downcase): Use ctype.h toupper and tolower. This will be useful
4115 in 8-bit locales, and ensures consistency with char-upper-case? and
4116 char-lower-case? which already use ctype.h.
4117 (scm_c_upcase_table, scm_c_downcase_table, scm_lowers, scm_uppers):
4118 Remove.
4119 * chars.c, chars.h, init.c (scm_tables_prehistory): Remove.
4120
4d81111e
KR
4121 * socket.c (VALIDATE_INET6): Correction to bignum_in_ipv6_range_p
4122 call. Reported by Hyperdivision.
4123
4124 * threads.c (scm_yield): Correction, actually call scm_thread_yield.
4125 Reported by Hyperdivision.
4126
4127 * unif.c (s_scm_make_uve): Remove unused local variable. Reported by
4128 Hyperdivision.
4129
7e6e6b37
DH
41302004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4131
4132 Hide the implementation of ilocs and isyms in eval.c.
4133
4134 * deprecated.h (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4135 SCM_ICDRP), eval.c (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4136 SCM_ICDRP), eval.h (SCM_ICDR, SCM_IFRINC, SCM_IFRAME, SCM_IDIST,
4137 SCM_ICDRP): Deprecated and added to deprecated.h. Moved from
4138 eval.h to eval.c.
4139
4140 * deprecated.c (scm_isymnames), deprecated.h (scm_isymnames,
4141 SCM_ISYMNUM, SCM_ISYMCHARS), eval.c (SCM_ISYMNUM, isymnames,
4142 scm_unmemocopy, CEVAL), print.c (scm_isymnames), tags.h
4143 (SCM_ISYMNUM, scm_isymnames, SCM_ISYMCHARS): Deprecated
4144 scm_isymnames, SCM_ISYMNUM and SCM_ISYMCHARS and added to
4145 deprecated.[hc]. Moved scm_isymnames from print.c to eval.c and
4146 renamed to isymnames. Moved SCM_ISYMNUM from tags.h to eval.c and
4147 renamed to ISYMNUM.
4148
4149 * eval.c (scm_i_print_iloc, scm_i_print_isym), eval.h
4150 (scm_i_print_iloc, scm_i_print_isym), print.c (scm_iprin1):
4151 Extracted printing of ilocs and isyms to guile internal functions
4152 scm_i_print_iloc, scm_i_print_isym of eval.c.
4153
caab294f
KR
41542004-04-22 Kevin Ryde <user42@zip.com.au>
4155
7aaf4758
KR
4156 * numbers.c (scm_bit_extract): Use SCM_SRS for signed right shift.
4157
caab294f
KR
4158 * numbers.c (scm_round): Test for x already an integer, to avoid bad
4159 rounding in x+0.5 when x is a big value already an integer. In
4160 certain hardware rounding cases x+0.5 can give an adjacent integer,
4161 leading to that as the result, when we really just wanted x itself.
4162
b1cb24ff
DH
41632004-04-19 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4164
4165 * eval.c (scm_unmemocopy): Fixed unmemoization of let*.
4166
4167 (deval_args, CEVAL): Minor improvements: Reduced variable scopes,
4168 added const qualifiers, cast intentionally unused expressions to
4169 void for emphasis, improved comment.
4170
5065b40d
DH
41712004-04-18 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4172
4173 * tags.h (scm_tags, scm_tc8_tags, scm_tc9_flag, scm_tc8_flag,
4174 scm_tc8_isym): Renamed scm_tags to scm_tc8_tags. Renamed
4175 scm_tc9_flag to scm_tc8_flag. Introduced new identifier
4176 scm_tc8_isym. Defined tc8-tags relative to scm_tc3_imm24.
4177 Defined the tc8-tag for flags to be 0x04, which will mean that
4178 SCM_BOOL_F will also have the value 0x04 instead of 0x013c. Due
4179 to the reduced number of bits and the simpler bit pattern for
4180 SCM_BOOL_F, certain machines may be able to use more efficient
4181 processor instructions to deal with SCM_BOOL_F.
4182
4183 (SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA): Removed. These have
4184 never been defined in a released version, thus no need to
4185 deprecate them.
4186
4187 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Flags now use tc8
4188 instead of tc9 tags.
4189
4190 (SCM_ISYMP, SCM_MAKISYM, SCM_ISYMNUM): Isyms now use tc8 instead
4191 of tc9 tags.
4192
4193 (SCM_MAKSPCSYM): Removed. It is almost impossible that user code
4194 could have used this definition.
4195
4196 (SCM_IM_AND, SCM_IM_BEGIN, SCM_IM_CASE, SCM_IM_COND, SCM_IM_DO,
4197 SCM_IM_IF, SCM_IM_LAMBDA, SCM_IM_LET, SCM_IM_LETSTAR,
4198 SCM_IM_LETREC, SCM_IM_OR, SCM_IM_QUOTE, SCM_IM_SET_X): Now encoded
4199 as isyms, as special isyms don't exist any more.
4200
9fa6c119
KR
42012004-04-18 Kevin Ryde <user42@zip.com.au>
4202
e08d2eee
KR
4203 * filesys.c (scm_readdir): Use readdir_r when available, for thread
4204 safety.
4205
9fa6c119
KR
4206 * numbers.c (scm_max, scm_min): For big/real, use SCM_SWAP rather than
4207 explicit swapping code.
4208
c9cdd396
KR
42092004-04-15 Kevin Ryde <user42@zip.com.au>
4210
4211 * cpp_sig_symbols.in: Add SIGSYS.
4212
4213 * list.c (scm_append_x): Use iterative style, to avoid non-tail
4214 recursion.
4215
4216 * numbers.c (scm_max, scm_min): For inum/frac, frac/inum, big/frac,
4217 frac/big and frac/frac, use scm_less_p for exact comparison.
4218
83ac9c59
KR
4219 * numbers.c (scm_gcd): For inum/big, use mpz_gcd_ui by sharing code
4220 with big/inum.
4221
84a4be9a
KR
4222 * numbers.c (xisinf): Add a comment about solaris 7 lacking isinf.
4223
84fad130
HWN
42242004-04-06 Han-Wen Nienhuys <hanwen@xs4all.nl>
4225
6b69393d
HWN
4226 * inline.h (scm_cell): use SCM_GC_CELL_WORD for checking tag.
4227
84fad130
HWN
4228 * chars.h (scm_init_chars): change scm_{upcase,downcase} to
4229 scm_c_{up,down}case.
4230 (SCM_MAKE_CHAR): add (unsigned char) cast. This prevents havoc
4231 when hi-bit ASCII is subjected to SCM_MAKE_CHAR().
4232
c3110a30
KR
42332004-04-06 Kevin Ryde <user42@zip.com.au>
4234
0b288f36
KR
4235 * numbers.c (scm_ash): Remove stray "}" in docstring.
4236
ea2508c8
KR
4237 * numbers.c (scm_make_ratio): For inum/bignum integer detection, use
4238 x==SCM_MOST_NEGATIVE_FIXNUM explicitly, for clarity and to avoid
4239 calling mpz_cmp_ui in most cases.
4240
c3110a30
KR
4241 * numbers.c (scm_quotient, scm_remainder): In inum/big, use mpz_cmp_ui
4242 for big == abs(most-negative-fixnum) special case.
4243 (abs_most_negative_fixnum): Remove, no longer used.
4244
4245 * scmsigs.c (scm_sigaction_for_thread): Correction to signum range
4246 test, avoids SCM_VECTOR_REF outside bounds of signal_handlers on
4247 calling (sigaction NSIG).
4248
4249 * simpos.c (scm_system_star): Fix execargv memory leak, merge parent
4250 and fork error cases to do this.
4251
dec40cd2
DH
42522004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4253
4254 * eval.c (CEVAL): Don't distinguish between short and long
4255 instructions when dispatching - just always dispatch on the
4256 instruction code, which is common for short and long instructions.
4257 Further, removed unnecessary goto statements and added comment.
4258
0e7bb795
DH
42592004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4260
4261 * eval.c (scm_unmemocopy): Don't distinguish between short and
4262 long instructions when dispatching - just always dispatch on the
4263 instruction code, which is common for short and long instructions.
4264 Further, removed unnecessary goto statements, fixed indentation
4265 and replaced SCM_IMP predicates by SCM_NULLP.
4266
f9986767
DH
42672004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4268
4269 * eval.c (scm_lookupcar1, CEVAL): Use SCM_ILOCP instead of
4270 comparison with SCM_ILOC00. In CEVAL, eliminate goto-label
4271 'checkmacro'.
4272
fbc42231
KR
42732004-03-31 Kevin Ryde <user42@zip.com.au>
4274
4275 * simpos.c: Include <signal.h> for SIG_IGN and friends.
4276
434f2f7a
DH
42772004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4278
4279 Introduce scm_debug_mode_p as a replacement for scm_debug_mode and
4280 SCM_DEBUGGINGP:
4281
4282 * debug.h (scm_debug_mode_p, scm_debug_mode, SCM_DEBUGGINGP),
4283 eval.c (scm_debug_mode_p): Deprecated scm_debug_mode and
4284 SCM_DEBUGGINGP. Provided scm_debug_mode_p instead, to have one
4285 single interface that also matches the naming conventions.
4286 Probably scm_debug_mode_p should be part of the private interface
4287 anyway.
4288
4289 * debug.h (scm_debug_mode_p), backtrace.c (display_error_body),
4290 eval.c (SCM_APPLY, scm_trampoline_0, scm_trampoline_1,
4291 scm_trampoline_2): Change uses of scm_debug_mode or SCM_DEBUGGINGP
4292 to scm_debug_mode_p.
4293
4294
4295 Deprecate direct access to scm_ceval, scm_deval and scm_ceval_ptr:
4296
4297 * eval.h (scm_ceval, scm_deval, scm_ceval_ptr), debug.h
4298 (scm_ceval_ptr): Deprecated. Moved declaration of scm_ceval_ptr
4299 from debug.h to eval.h.
4300
4301 * debug.h (SCM_RESET_DEBUG_MODE): Don't access scm_ceval_ptr any
4302 more, just leave it with setting scm_debug_mode_p, which is
4303 equivalent for practical purposes.
4304
4305 * deprecated.h (SCM_XEVAL, SCM_XEVALCAR): Call scm_i_eval_x
4306 instead of *scm_ceval_ptr. Leave all evaluating to scm_i_eval_x.
4307
4308 * gdbint.c (gdb_eval): Call scm_i_eval_x instead of scm_ceval.
4309
4310 * eval.c (ceval, deval, scm_ceval, scm_deval): Made scm_ceval
4311 static and renamed it to ceval throughout. Provide a new exported
4312 but deprecated function scm_ceval as a wrapper for backwards
4313 compatibility. The same is done for the deval/scm_deval pair of
4314 functions.
4315
4316 * eval.c (CEVAL, SCM_CEVAL): Renamed SCM_CEVAL to CEVAL
4317 throughout. Defined CEVAL to ceval or deval, based on compilation
4318 phase.
4319
4320 * eval.c (SCM_XEVAL, SCM_XEVALCAR): Dispatch on scm_debug_mode_p
4321 to ceval and deval instead of calling *scm_ceval_ptr.
4322
4323 * eval.c (dispatching_eval): New deprecated static function.
4324
4325 * eval.c (scm_ceval_ptr): Initialized to dispatching_eval in order
4326 to emulate its old behaviour as closely as possible.
4327
4328
4329 Change the evaluator such that only expressions for which pair? is
4330 true are passed to CEVAL, and such that all other expressions are
4331 evaluated outside of CEVAL:
4332
4333 * eval.c (EVAL): New, provided in analogy to EVALCAR. Evaluate an
4334 expression that is assumed to be memoized already. All but
4335 expressions of the form '(<form> <form> ...)' are evaluated inline
4336 without calling an evaluator.
4337
4338 * eval.c (SCM_XEVAL, SCM_XEVALCAR, EVALCAR): Evaluate all but
4339 expressions of the form '(<form> <form> ...)' inline without
4340 calling an evaluator.
4341
4342 * eval.c (scm_i_eval_x, scm_i_eval, scm_ceval, scm_deval): Handle
4343 the special case of unmemoized symbols passed on the top level.
4344
4345 * eval.c (CEVAL): Change calls to CEVAL to EVAL, except where it
4346 is known that the expression passed to CEVAL is of the form
4347 '(<form> <form> ...)'. Remove handling of the tc7-objects, since
4348 now it is known that the input expression of CEVAL is a pair.
4349
43502004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5fb64383
DH
4351
4352 * eval.c (is_self_quoting_p): New static function.
4353
4354 (scm_m_quote): Use is_self_quoting_p.
4355
4356 (copy_tree): Corrected typo in comment.
4357
702551e6
HWN
43582004-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
4359
bfefbf18
HWN
4360 * eval.c (s_scm_copy_tree): idem.
4361
4362 * list.c (s_scm_filter): remove "pointer" from doc string.
4363
702551e6
HWN
4364 * gc.h (SCM_GC_CELL_TYPE): SCM_GC_CELL_TYPE uses SCM_GC_CELL_OBJECT.
4365
4366 * goops.h (SCM_NUMBER_OF_SLOTS): don't SCM_UNPACK the result.
4367
4368 * backtrace.c ("display_backtrace_body"): SCM_PACK before SCM_EQ_P
4369 (display_frame): idem.
4370 (display_backtrace_file_and_line): idem.
4371
4372 * tags.h (SCM_UNPACK): stricter typechecking on SCM_UNPACK
4373 arguments.
4374
3cd23214
KR
43752004-03-26 Kevin Ryde <user42@zip.com.au>
4376
88a7ae1f
KR
4377 * filesys.c (scm_getcwd, scm_readlink): Avoid memory leak on errors.
4378
3cd23214
KR
4379 * numbers.c (scm_modulo): For inum/big and big/big, remove test of
4380 big==0 since that never occurs.
4381
4382 * numbers.c, numbers.h (scm_modulo_expt): Renamed from
4383 scm_modular_expt, matching scheme level name `modulo-expt'.
4384
4385 * numbers.c (scm_modular_expt): Return a negative remainder for a
4386 negative divisor, the same as `modulo' does.
4387
43882004-03-26 Eric Hanchrow <offby1@blarg.net>
4389
4390 * numbers.c, numbers.h (scm_modular_expt): New function.
4391
2926035a
KR
43922004-03-25 Kevin Ryde <user42@zip.com.au>
4393
4394 * numbers.c (scm_min, scm_max): Correction to big/real and real/big,
4395 return inexact as required by r5rs.
4396
62360b89
DH
43972004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4398
4399 * eval.c: Separated some definitions relevant for execution from
4400 the memoization part of the file.
4401
4402 (copy_tree): New static function
4403
4404 (scm_copy_tree): Rewritten to fix two kinds or bugs: First, cyclic
4405 structures are detected now and will lead to an exception instead
4406 of forcing guile to run in an endless loop, using up all the
4407 system's memory. Second, arrays in the cdr of an improper list
4408 are now copied. See the new test cases in eval.test.
4409
44102004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
b28f5b3c
DH
4411
4412 * posix.c (scm_gethostname): Make sure len is initialised before
4413 it is used. Restructured to (hopefully) represent possible
4414 configurations more clearly in the code. Added unwind handler.
4415
3bd3bae8
KR
44162004-03-23 Kevin Ryde <user42@zip.com.au>
4417
4418 * posix.c (scm_gethostname): Use sysconf(_SC_HOST_NAME_MAX) and/or
4419 MAXHOSTNAMELEN when available.
4420
254bf78d
MV
44212004-03-21 Marius Vollmer <mvo@zagadka.de>
4422
4423 * read.c (skip_scsh_block_comment): Also recognize '\r' as a line
4424 terminator. Rewritten the logic as a state machine, I must have
4425 been doing too much VHDL lately...
4426
4427 * eval.c (scm_ceval, scm_deval): Explicitely evaluate ports to
4428 themselves. Thanks to Han-Wen Nienhuys!
4429
4430 * list.c: Changed docstrings so that they no longer talk about
4431 returning 'pointers' to something.
4432
009c34a2
HWN
44332004-03-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
4434
4435 * gc.c: remove set_debug_cell_accesses! when
4436 SCM_DEBUG_CELL_ACCESSES is not defined. Scheme source code should
4437 use (if (defined? 'set-debug-cell-accesses!) .. ) to switch on
4438 debugging conditionally.
4439
54733c95
KR
44402004-03-21 Kevin Ryde <user42@zip.com.au>
4441
4442 * stime.c (scm_gmtime): Use gmtime_r when available, for thread safety.
4443
bbaf8747
KR
44442004-03-20 Kevin Ryde <user42@zip.com.au>
4445
4446 * posix.c (scm_gethostname): Preserve errno across free() call.
4447
726f82e7
HWN
44482004-03-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
4449
4450 * gc-card.c (sweep_card): use SCM_GC_SET_CELL_WORD for setting
4451 free cells.
4452
e1350d6a
KR
44532004-03-14 Kevin Ryde <user42@zip.com.au>
4454
4455 * stime.c: Define _GNU_SOURCE for strptime prototype from glibc.
4456 (strptime): Use HAVE_DECL_STRPTIME for when to give own prototype.
4457
62055253
KR
44582004-03-07 Kevin Ryde <user42@zip.com.au>
4459
4460 * stime.c (scm_gmtime): Return bd_time->tm_zone when available, rather
4461 than "GMT" always.
4462 (filltime): Make zname parameter "const".
4463
92e64b87
MD
44642004-03-03 Mikael Djurfeldt <mdj@chunk.mit.edu>
4465
4466 * threads.c, threads.h (scm_c_scm2thread): New function.
4467
004ad931
KR
44682004-02-29 Kevin Ryde <user42@zip.com.au>
4469
4470 * numbers.c (guile_ieee_init): Use C99 INFINITY and NAN when
4471 available. Test HAVE_DINFINITY and HAVE_DQNAN for those globals, in
4472 particular don't assume "defined (__alpha__) && ! defined (linux)"
4473 means OSF. Remove "SCO" code, which was not really SCO specific and
4474 which John W. Eaton advises should be long past being needed.
4475
4476 * posix.c (scm_execl, scm_execlp, scm_execle): Avoid memory leak under
4477 error throw.
4478
72ea45ac
KR
44792004-02-24 Kevin Ryde <user42@zip.com.au>
4480
4481 * posix.c (scm_cuserid): Use a private result buffer, for thread safe.
4482
2af0602e
KR
44832004-02-22 Kevin Ryde <user42@zip.com.au>
4484
4485 * numbers.c (scm_max, scm_min): For one arg, dispatch to generic for
4486 complex, same as for two args. (Handle only inum, big, real, frac).
4487
b114eafe
KR
44882004-02-21 Kevin Ryde <user42@zip.com.au>
4489
4490 * posix.c (scm_crypt): Use new HAVE_CRYPT.
4491 (<crypt.h>): Remove HAVE_LIBCRYPT condition.
db752bb5 4492 Reported by Andreas Voegele.
b114eafe 4493
1e55d288
NJ
44942004-02-20 Neil Jerram <neil@ossau.uklinux.net>
4495
4496 * list.c (scm_list_n): Add #if SCM_DEBUG_CELL_ACCESSES_P around
4497 validation.
4498
4499 * read.c (scm_lreadparen): Removed.
4500 (scm_lreadparen1): Renamed scm_i_lreadparen.
4501
eb741d98
HWN
45022004-02-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
4503
4504 * list.c (scm_list_n): validate non-immediate arguments;
4505 this will catch forgotten a SCM_UNDEFINED.
4506
4e28ba5e
MV
45072004-02-18 Marius Vollmer <mvo@zagadka.de>
4508
4509 * gc.h (scm_gc_cells_collected): Removed duplicated declaration.
4510 Thanks to Bill Schottstaedt!
4511
4512 * socket.h (scm_gethost): Removed prototype it is already in
4513 "net_db.h". Thanks to Bill Schottstaedt!
4514
ef861ead
KR
45152004-02-18 Kevin Ryde <user42@zip.com.au>
4516
4517 * num2integral.i.c (INTEGRAL2BIG): WORDS_BIGENDIAN not right for word
4518 order parameter to mpz_import, in fact with just one word there's no
4519 order to worry about at all.
4520
4521 * numbers.c (scm_num_eq_p): For real==frac, complex==frac, frac==real
4522 and frac==complex, make an exact comparison rather than converting
4523 with fraction2double.
4524
4525 * posix.c, putenv.c, stime.c (environ): Use _NSGetEnviron in Darwin
4526 shared library, since environ is not directly available there.
4527
4528 * script.c (scm_shell_usage): Print to stdout for --help, per GNU
4529 standard.
4530
4531 * stime.c (scm_localtime, scm_gmtime, scm_mktime): Provide a default
4532 errno EINVAL in case localtime and gmtime don't set it.
4533 (scm_mktime, scm_strptime): Forcibly use errno EINVAL for our
4534 SCM_SYSERROR, since mktime and strptime generally don't set errno.
4535
ae43d08e 45362004-02-16 Kevin Ryde <kevin@swox.se>
292dfa7f 4537
c9ea6462
KR
4538 * gc-malloc.c (scm_done_malloc, scm_done_free): Allow negative sizes,
4539 which were permitted in the past for these.
4540
292dfa7f
KR
4541 * num2float.i.c (NUM2FLOAT): Expand isfinite to !xisinf, as per
4542 previous change to numbers.c.
4543
ae43d08e
KR
4544 * script.c (scm_shell_usage): Print bug-guile email address, as per
4545 GNU standard. Reported by Han-Wen Nienhuys.
4546
711a9fd7
MD
45472004-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
4548
4549 * unif.c (scm_make_uve): Removed local variable and simplified
4550 code in order to avoid compiler used uninitialized warnings.
4551
4552 * hashtab.c, hashtab.h (scm_hash_map_to_list): Renamed from
4553 scm_hash_map.
4554 (scm_hash_fold): Use scm_call_3 directly in the call to
4555 scm_internal_hash_fold instead of going via fold_proc (which is
4556 now removed).
4557 (scm_hash_for_each): Use a trampoline +
4558 scm_internal_hash_for_each_handle.
4559 (scm_internal_hash_for_each_handle, scm_hash_for_each_handle): New
4560 functions.
4561
3da7f6b2
KR
45622004-02-12 Kevin Ryde <user42@zip.com.au>
4563
344a212f
KR
4564 * ports.c (scm_port_line): In docstring, note first line is 0.
4565 (scm_set_port_line_x): In docstring, note first line is 0.
4566 (scm_port_column): In docstring, there's no default to current input
4567 port, and remove shared port-line @defun.
4568 (scm_set_port_column_x): In docstring, there's no default to current
4569 input port, note first column is 0, remove shared set-port-line!
4570 @defun.
4571
3da7f6b2
KR
4572 * ramap.c (scm_array_fill_x): For fvect and dvect, use scm_num2dbl to
4573 convert args the same way that array-set! does.
4574
4575 * unif.c (scm_make_uve, scm_array_p): Allow fraction 1/3 as prototype
4576 for dvect.
4577 (scm_array_p): Add missing "break"s in switch, fix llvect test look
4578 for "l" not "s", fix dvect to be false for singp(prot) since such a
4579 value is for fvect.
4580 (scm_array_prototype): Return 1/3 for dvect, rather than 0.33..33.
88531a74
KR
4581 (exactly_one_third): New variable.
4582 (scm_init_unif): Initialize it.
3da7f6b2 4583
cd21f5eb
NJ
45842004-02-10 Neil Jerram <neil@ossau.uklinux.net>
4585
4586 * read.c (scm_read_opts): Change `escaped-parens' to
4587 `elisp-strings'.
4588
16353acc
NJ
45892004-02-08 Neil Jerram <neil@ossau.uklinux.net>
4590
4591 * read.c (scm_read_opts): New opts `elisp-vectors' and
4592 `escaped-parens'.
4593 (s_vector): New.
4594 (scm_lreadr): Use scm_lreadparen1 instead of scm_lreadparen. Make
4595 handling of elisp vector syntax dependent on SCM_ENABLE_ELISP and
4596 `elisp-vectors' option instead of SCM_ELISP_READ_EXTENSIONS.
4597 Allow "\(" and "\)" in strings when SCM_ENABLE_ELISP defined and
4598 `escaped-parens' option set.
4599 (scm_read_token): If elisp vector syntax active, disallow [ and ]
4600 in tokens.
4601 (scm_lreadparen): Rewrite as interface to scm_lreadparen1.
4602 (scm_lreadparen1): New.
4603
4604 * read.h: Remove conditionally compiled last arg to
4605 scm_lreadparen.
4606 (SCM_ELISP_VECTORS_P, SCM_ESCAPED_PARENS_P): New.
4607
f62b9dff
HWN
46082004-01-23 Han-Wen Nienhuys <hanwen@xs4all.nl>
4609
4610 * eval.c (m_expand_body): remove stray variable new_body.
4611
ef5b6b61
MV
46122004-01-22 Marius Vollmer <mvo@zagadka.de>
4613
4614 * eval.c (m_expand_body): Rewrite the expression in place (by
4615 overwriting FORMS) also when a letrec is constructed, not only
4616 when no definitions are found. Do not return rewritten expression
4617 to emphasize the in-place rewriting. Changed all users.
4618
7eec4c37
HWN
46192004-01-19 Han-Wen Nienhuys <hanwen@xs4all.nl>
4620
4621 * gc.c: add protected_object_count, a number that is dumped from
4622 gc_stats()
4623
25ffbdac
MV
46242004-01-11 Marius Vollmer <mvo@zagadka.de>
4625
4626 * dynwind.h, dynwind.c (scm_frame_unwind,
4627 scm_frame_unwind_handler): Renamed and changed all uses.
4628 (scm_frame_rewind, scm_frame_rewind_handler): Likewise.
4629
08568c95
KR
46302004-01-11 Kevin Ryde <user42@zip.com.au>
4631
4632 * unif.c (scm_bit_count, scm_bit_position, s_scm_bit_set_star_x,
4633 s_scm_bit_count_star, s_scm_bit_invert_x): Clarify docstrings, as per
4634 changes made to scheme-compound.texi.
4635
5565749c
MV
46362004-01-10 Marius Vollmer <mvo@zagadka.de>
4637
25ffbdac
MV
4638 * print.c (scm_print_symbol_name): Handle #{`foo}#, #{,foo}#,
4639 #{.}#, and all numeric strings specially. Thanks to Paul Jarc!
4640
4641 * guile-snarf.in: Use mkdir to create a unique temporary directory
4642 that we can safely use. Thanks to Stefan Nordhausen!
5565749c 4643
fc6bb283
MV
46442004-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4645
7ebccde8
MV
4646 * dynwind.h, dynwind.c (scm_i_dowinds): Removed 'explicit'
4647 argument since it is always zero now. Changed all callers.
4648 Removed code for handling fluids.
96e3b2f8
MV
4649
4650 * fluids.c (scm_c_with_fluids): Use frames instead of adding to
4651 the wind chain explicitely. Use scm_c_with_fluid for the common
4652 case of only one fluid.
4653 (scm_with_fluid): New.
4654 (scm_c_with_fluid): Use frames instead of scm_c_with_fluids.
4655
fc6bb283 4656 * fluids.h, fluids.c (scm_frame_fluid): New.
96e3b2f8
MV
4657 (scm_with_fluid): New.
4658 (scm_i_swap_fluids, scm_i_swap_fluids_reverse): Removed.
fc6bb283
MV
4659
4660 * dynwind.c (scm_frame_end): Do not use scm_i_dowinds. Instead,
4661 do the unwinding directly. It is simple enough.
4662
4663 * dynwind.h, dynwind.c: Did the following renamings:
4664 scm_begin_frame -> scm_frame_begin,
4665 scm_end_frame -> scm_frame_end,
4666 scm_on_unwind -> scm_frame_unwind,
4667 scm_on_rewind -> scm_frame_rewind,
4668 scm_on_unwind_with_scm -> scm_frame_unwind_with_scm,
4669 scm_on_rewind_with_scm -> scm_frame_rewind_with_scm.
4670 Changed all uses.
4671
4672 * aync.h, async.c: Did the follwing renamings:
4673 scm_with_blocked_asyncs -> scm_frame_block_asyncs,
4674 scm_with_unblocked_asyncs -> scm_frame_unblock_asyncs.
4675 Changed all uses.
4676
4677 * ports.h, ports.c: Did the follwing renamings:
4678 scm_with_current_input_port -> scm_frame_current_input_port,
4679 scm_with_current_output_port -> scm_frame_current_output_port,
4680 scm_with_current_error_port -> scm_frame_current_error_port.
4681 Changed all uses.
4682
298ab996
KR
46832004-01-07 Kevin Ryde <user42@zip.com.au>
4684
4685 * numbers.c (s_bignum): Remove, not used since gmp bignums.
4686 Reported by Richard Todd.
4687
ba40113e
KR
4688 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 12*sizeof(long),
4689 for the benefit of powerpc-apple-darwin5.5. Reported by Richard Todd.
4690
298ab996
KR
4691 * unif.c (scm_aind): Test SCM_CONSP rather than !SCM_NULLP while
4692 traversing the args list, fixes segv if an improper list is given.
4693 Reported by Rouben Rostamian.
4694
aacff585
MV
46952004-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4696
4697 * ports.c (swap_ports, scm_with_current_foo_port): Do not allocate
4698 swap_data on stack, use a 'malloc obj'.
4699
4700 * fluids.h, fluids.c (scm_make_initial_fluids, scm_copy_fluids,
4701 scm_swap_fluids, scm_swap_fluids_reverse): Renamed to
4702 scm_i_... since they are internal. Changed all uses.
4703
4704 * dynwind.c (frame_print): Removed, use the default printer.
4705 (WINDER_F_MARK, WINDER_MARK_P, winder_mark): New.
4706 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New. Use above
4707 to protect SCM values.
4708
4709 * dynwind.h (SCM_F_WIND_EXPLICITELY,
4710 SCM_F_WIND_EXPLICITLY): It's "explicitly" not "explicitely", damn.
4711 Changed all uses.
4712 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New.
4713
49c00ecc
MV
47142004-01-05 Marius Vollmer <mvo@zagadka.de>
4715
4716 * ports.h, ports.c (scm_with_current_input_port,
4717 scm_with_current_output_port, scm_with_current_error_port): New.
4718
4719 * async.h, async.c (scm_with_blocked_asyncs,
4720 scm_with_unblocked_asyncs): New.
4721
dab514a8
MV
47222004-01-03 Marius Vollmer <mvo@zagadka.de>
4723
4724 * dynwind.h, scm_dynwind.c (scm_t_frame_flags, scm_t_wind_flags,
4725 scm_begin_frame, scm_end_frame, scm_on_unwind, scm_on_rewind):
4726 New.
4727 (scm_dowinds, scm_i_dowinds): scm_dowinds has been renamed to
4728 scm_i_dowinds and extended to handle frames and to invoke a 'turn'
4729 function when the outermost wind point has been reached. The
4730 latter is used to copy a continuation stack at the right time.
4731 scm_dowinds remains available.
4732 (SCM_GUARDSP, SCM_BEFORE_GUARD, SCM_AFTER_GUARD, SCM_GUARD_DATA,
4733 tc16_guard, guards_print): Removed.
4734 (scm_internal_dynamic_wind): Reimplemented using frames.
4735
4736 * continuations.c (copy_stack): New, do only the stack copying
4737 part of copy_stack_and_call.
4738 (copy_stack_and_call): Copy the stack after unwinding and before
4739 rewinding.
4740 (scm_dynthrow): Do not call scm_dowinds, this is now done by
4741 copy_stack_and_call.
4742
441a25d9
KR
47432004-01-04 Kevin Ryde <user42@zip.com.au>
4744
4745 * numbers.c (scm_less_p): Don't convert frac to float for compares,
dab514a8 4746 can give bad results due to rounding.
441a25d9 4747
e0499207
KR
4748 * stime.c (scm_current_time, scm_gettimeofday): Add a comment about
4749 setzone/restorezone protection for DOS.
4750
89fcf1b4
MV
47512003-12-26 Marius Vollmer <mvo@zagadka.de>
4752
4753 * gen-scmconfig.h.in, gen-scmconfig.c: Arrange for scm_t_intmax
4754 and scm_t_uintmax to be defined in scmconfig.h
4755
caff34d4
KR
47562003-12-03 Kevin Ryde <user42@zip.com.au>
4757
4758 * numbers.c (scm_less_p): Remove spurious xisnan from frac+big case.
4759
4760 * numbers.c (scm_make_ratio): Check for numerator equal to
4761 SCM_MOST_NEGATIVE_FIXNUM and bignum denominator the negative of that,
4762 giving integer -1.
4763
4764 * numbers.c (scm_real_part): Return fraction unchanged rather than
4765 converting to flonum.
4766
2d0b85ac
DH
47672003-11-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
4768
4769 * modules.c (module_variable): Fixed (and thus simplified) the
4770 definition of SCM_BOUND_THING_P to reflect the fact that since
4771 after the 1.4 series of guile, obarrays only hold variable
4772 objects.
4773
2297981d
MV
47742003-11-30 Marius Vollmer <mvo@zagadka.de>
4775
4776 * numbers.c (scm_logand): It's "#b...", not "#\b...".
4777
4778 From Paul Jarc:
4779
4780 * read.c (scm_lreadr): Signal an error for invalid escape
4781 sequences in strings. Code cleanups too.
4782
4783 * print.c (scm_iprin1): use \xNN hexadecimal sequences when
4784 writing control characters in strings.
4785
47862003-11-21 Marius Vollmer <mvo@zagadka.de>
4787
4788 * ports.c (scm_drain_input): Bug fix: only access the port after
4789 checking that it indeed is one.
4790
5c264007
DH
47912003-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
4792
4793 * eval.c (s_bad_define): New static identifier.
4794
4795 (m_body): Fixed comment.
4796
4797 (scm_m_define): Don't generate memoized code for definitions that
4798 are not on the top level. As a consequence, no memoized code at
4799 all is generated for definitions any more: Top level definitions
4800 are executed immediately during memoization and internal
4801 definitions are handled separately in m_expand_body.
4802
4803 (scm_unmemocopy, unmemocopy): Removed code for unmemoizing
4804 definitions. Consequently, there is no unmemoizing code any more
4805 that might modify the environment. Thus, the old scm_unmemocopy
4806 is removed and the old unmemocopy is renamed to scm_unmemocopy.
4807
4808 (SCM_CEVAL): The SCM_IM_DEFINE keyword can no longer occur in
4809 memoized code. Call EVALCAR for continuations. Prefer !SCM_NULLP
4810 over SCM_NIMP in places, where the argument is known to be part of
4811 a proper list.
4812
018d4730
KR
48132003-11-21 Kevin Ryde <user42@zip.com.au>
4814
4815 * numbers.c (scm_abs): Allocate a new real only for negatives, as done
4816 for bignums.
4817
4818 * numbers.c (scm_bit_extract): Use mpz functions, rearrange inum case
4819 to share some shifting.
4820
4821 * numbers.c (scm_integer_expt): Don't mpz_init after scm_i_clonebig or
4822 scm_i_mkbig, since they do so already. Don't mpz_clear a bignum SCM,
4823 since gc does this.
4824
4bca30d8
MV
48252003-11-19 Marius Vollmer <mvo@zagadka.de>
4826
fb16d26e
MV
4827 * numbers.c (scm_make_ratio): Rewritten to have a simpler
4828 structure. Previously, not all cases with a negative denominator
4829 were covered.
4830
4bca30d8
MV
4831 * numbers.c (mem2decimal_from_point): use scm_divide instead of
4832 scm_divide2real when forming the fractional part. This allows
4833 "#e1.2" to yield 6/5.
4834
4835 * numbers.c (scm_i_fraction_equalp): Do not treat the return value
4836 of scm_equal_p as a C boolean, use SCM_FALSEP. Previously, all
4837 fractions were equal to each other regardless of value. Ooops.
4838
4839 * numbers.c (scm_rationalize): Return an inexact result when given
4840 inexact arguments.
4841
4842 * numbers.c (scm_exact_p, scm_inexact_p): Throw error for
4843 non-numbers.
4844
bdf26b60
MV
48452003-11-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4846
4847 Support for exact fractions from Bill Schottstaedt! Thanks!
4848
4849 * print.c (scm_iprin1): Handle fractions.
4850
4851 * objects.h (scm_class_fraction): New.
4852 * objects.c (scm_class_fraction): New.
4853 (scm_class_of): Handle fractions.
4854
4855 * hash.c (scm_hasher): Handle fractions.
4856
4857 * numbers.c: New code for handling fraction all over the place.
4858 (scm_odd_p, scm_even_p): Handle inexact integers.
4859 (scm_rational_p): New function, same as scm_real_p.
4860 (scm_round_number, scm_truncate_number, scm_ceiling, scm_floor):
4861 New exact functions that replace the inexact 'dsubr'
4862 implementations.
4863 (scm_numerator, scm_denominator): New.
4864
4865 * numbers.h (SCM_NUMP): Recognize fractions.
4866 (SCM_FRACTIONP, SCM_SLOPPY_FRACTIONP, SCM_FRACTION_NUMERATOR,
4867 SCM_FRACTION_DENOMINATOR, SCM_FRACTION_SET_NUMERATOR,
4868 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
4869 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
4870 SCM_FRACTION_REDUCED): New.
4871 (scm_floor, scm_ceiling, scm_truncate_number, scm_round_number):
4872 New prototypes.
4873 (scm_make_ratio, scm_rationalize, scm_numerator, scm_denominator,
4874 scm_rational_p): New prototypes.
4875 (scm_i_dbl2num, scm_i_fraction2double, scm_i_fraction_equalp,
4876 scm_i_print_fraction): New prototypes.
4877
4878 * goops.c (create_standard_classes): Create "<fraction>" class.
4879
4880 * gc-mark.c (scm_gc_mark_dependencies): Handle fractions.
4881
4882 * gc-card.c (scm_i_sweep_card): Include scm_tc16_fraction as a
4883 case in the switch, but do nothing for now.
4884
4885 * eval.c (SCM_CEVAL, SCM_APPLY, call_dsubr_1): Convert fractions
4886 to doubles when calling 'dsubr' functions.
4887
4888 * eq.c (scm_eqv_p, scm_equal_p): Handle fractions.
4889
28fda544
RB
48902003-11-18 Rob Browning <rlb@defaultvalue.org>
4891
4892 * gen-scmconfig.c (main): remove public definition of
4893 SCM_SIZEOF___INT64 and SCM_SIZEOF_UNSIGNED___INT64 and add
4894 direct typedef of long_long and ulong_long inside deprecated block
4895 when appropriate.
4896
4897 * deprecated.h: move long_long and ulong_long definitions to
4898 gen-scmconfig.c so that we don't need to add SCM_SIZEOF___INT64
4899 and SCM_SIZEOF_UNSIGNED___INT64 to the public namespace.
4900
b58e7420
MV
49012003-11-17 Marius Vollmer <mvo@zagadka.de>
4902
9a1d7d7c
MV
4903 * hash.c (scm_string_hash): New hashing algorithm that takes the
4904 complete string into account.
4905
b58e7420
MV
4906 * eval.c (scm_m_generalized_set_x): Macroexpand the target when it
4907 is a list. This allows (@ ...) to work with set!.
9a1d7d7c
MV
4908 (scm_m_generalized_set_x): Use ASSERT_SYNTAX_2 instead of
4909 SCM_ASSYNT.
b58e7420
MV
4910
4911 * script.c (scm_compile_shell_switches): Use scm_c_read_string for
4912 the "-e" option instead of scm_str2symbol. This allows things
4913 like (@ ...) to be specified for the entry point.
4914
461bffb1
DH
49152003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
4916
4917 * eval.c (scm_m_letstar): Create memoized code in place to
4918 minimize consing.
4919
6f81708a
DH
49202003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
4921
4922 * eval.c (s_splicing): Commented and reformulated.
4923
4924 (lookup_global_symbol, lookup_symbol): New static functions.
4925
4926 (s_test, s_bindings, s_duplicate_bindings, s_variable): Removed.
4927
4928 (try_macro_lookup, literal_p): Use lookup_symbol instead of
4929 creating a temporary pair for scm_lookupcar.
4930
4931 (scm_unmemocar, unmemocar): Renamed scm_unmemocar to unmemocar,
4932 created deprecated wrapper function scm_unmemocar.
4933
4934 (SCM_VALIDATE_NON_EMPTY_COMBINATION, scm_sym_else,
4935 scm_sym_unquote, scm_sym_uq_splicing, scm_sym_enter_frame,
4936 scm_sym_apply_frame, scm_sym_exit_frame, scm_sym_trace, f_apply,
4937 undefineds, sym_three_question_marks): Moved around without
4938 modifications.
4939
4940 * eval.c, eval.h (scm_macroexp, scm_unmemocar): Deprecated.
4941
910b5125
DH
49422003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
4943
4944 * eval.c (try_macro_lookup, expand_user_macros, is_system_macro_p,
4945 m_expand_body, scm_m_expand_body): Grouped together with m_body.
4946 No further modifications.
4947
c86c440b
DH
49482003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
4949
4950 * eval.c (s_mixed_body_forms): New static identifier.
4951
4952 (canonicalize_define, scm_m_define): The check for a bad
4953 expression is performed in canonicalize_define now.
4954
4955 (try_macro_lookup, expand_user_macros, is_system_macro_p): New
4956 static helper functions for m_expand_body.
4957
4958 (m_expand_body): Use ASSERT_SYNTAX to signal syntax errors. Only
4959 expand user defined macros. Fixed handling of the definition/
4960 expression boundary. Fixed handling of definitions grouped with
4961 'begin. Use canonicalize_define to expand definitions.
4962
3890131a
MV
49632003-11-13 Marius Vollmer <mvo@zagadka.de>
4964
b58e7420
MV
4965 * read.c (scm_lreadr): detect EOF after backslash, and interpret
4966 \xNN hexadecimal sequences. From Paul Jarc, thanks!
4967
5df36eac
MV
4968 * snarf.h (SCM_SMOB, SCM_GLOBAL_SMOB, SCM_SMOB_MARK,
4969 SCM_GLOBAL_SMOB_MARK, SCM_SMOB_FREE, SCM_GLOBAL_SMOB_FREE,
4970 SCM_SMOB_PRINT, SCM_GLOBAL_SMOB_PRINT, SCM_SMOB_EQUALP,
4971 SCM_GLOBAL_SMOB_EQUALP, SCM_SMOB_APPLY, SCM_GLOBAL_SMOB_APPLY):
4972 New macros from Paul Jarc. Thanks!
4973
3890131a
MV
4974 * gc_os_dep.c (scm_get_stack_base): Provide a definition that
4975 return NULL when the machine type is unknown. Previously,
4976 gc_os_dep.c would refuse to compile.
4977
430b8401
DH
49782003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
4979
4980 * eval.c (scm_m_body, m_body, scm_m_lambda, memoize_named_let,
4981 scm_m_let, scm_m_letrec, m_expand_body): Renamed static function
4982 scm_m_body to m_body.
4983
328dc9a3
DH
49842003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
4985
4986 * eval.c, eval.h (scm_m_expand_body, m_expand_body): Deprecated
4987 public use of scm_m_expand_body in eval.h. In eval.c, renamed
4988 scm_m_expand_body to m_expand_body and made it static. Added
4989 deprecated wrapper scm_m_expand_body.
4990
4991 (scm_eval_body, SCM_CEVAL, SCM_APPLY): Use m_expand_body instead
4992 of scm_m_expand_body.
4993
c2337a61
KR
49942003-11-09 Kevin Ryde <user42@zip.com.au>
4995
4996 * dynl.c (scm_dynamic_unlink): Need scm_list_1 on error message
4997 argument. Reported by Mike Gran.
4998
ced8edb0
DH
49992003-11-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
5000
5001 * eval.c (s_missing_body_expression): New static identifier.
5002
5003 (s_body): Removed.
5004
5005 (scm_m_expand_body): Fixed core dump when passing a body with
5006 defines, but without expressions (see additions to syntax.test).
5007 Use ASSERT_SYNTAX to signal syntax errors.
5008
0f572ba7
DH
50092003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5010
5011 * eval.c (canonicalize_define): New static helper function.
5012
5013 (memoize_define, canonicalize_define): Extract handling of
5014 function currying to canonicalize_define.
5015
2510c810
DH
50162003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5017
5018 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
5019 Make sure that error checking in debug mode is not worse than in
5020 standard mode.
5021
34adf7ea
DH
50222003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5023
5024 * eval.c (scm_m_body, scm_m_lambda): Documentation strings are not
5025 handled in scm_m_body any more, but rather in scm_m_lambda.
5026
5027 (scm_m_body, memoize_named_let, scm_m_let, scm_m_letstar,
5028 scm_m_letrec, scm_m_expand_body): Check for validity is done by
5029 calling functions of scm_m_body.
5030
5031 (scm_m_lambda): Avoid unnecessary consing when creating the
5032 memoized code.
5033
89bff2fc
DH
50342003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5035
5036 * eval.c (s_expression): Added comment.
5037
5038 (s_empty_combination, error_unbound_variable): New static
5039 identifiers.
5040
5041 (SCM_VALIDATE_NON_EMPTY_COMBINATION, SCM_EVALIM2, scm_lookupcar1):
5042 Use ASSERT_SYNTAX, syntax_error or error_unbound_variable to
5043 signal syntax errors.
5044
5045 (SCM_CEVAL): Separated handling of evaluator bytecodes and other
5046 scheme objects.
5047
60a49842
DH
50482003-10-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5049
5050 * eval.c (unmemocar, sym_three_question_marks, scm_unmemocar):
5051 Grouped together with unmemocopy, without modifications.
5052
5053 (build_binding_list, unmemocopy): Renamed names of list arguments
5054 and variables to reflect the actual order of the list elements.
5055
70c1c108
DH
50562003-10-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
5057
5058 * eval.c (s_defun): New static identifier.
5059
5060 (scm_m_nil_cond, scm_m_atfop, scm_m_undefine): Add comments. Use
5061 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
5062 when creating the memoized code.
5063
0ee39677
KR
50642003-10-19 Kevin Ryde <user42@zip.com.au>
5065
5066 * numbers.c (scm_ash): Revise docstring as per recent update to manual.
5067
5068 * numbers.c (scm_i_big2dbl): Rewrite, carefully rounding to "closest"
5069 in accordance with R5RS, which just mpz_get_d doesn't really give.
5070
9a848baf
DH
50712003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5072
5073 * eval.c (s_bad_slot_number): New static identifier.
5074
5075 (scm_m_atslot_ref, scm_m_atslot_set_x): Use ASSERT_SYNTAX to
5076 signal syntax errors. Avoid unnecessary consing when creating the
5077 memoized code.
5078
da48db62
DH
50792003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5080
5081 * eval.c (scm_m_cont, scm_m_at_call_with_values,
5082 scm_m_generalized_set_x): Use ASSERT_SYNTAX to signal syntax
5083 errors. Avoid unnecessary consing when creating the memoized
5084 code.
5085
5086 (scm_m_generalized_set_x): Let scm_m_set_x handle the R5RS
5087 standard case. Make sure line and file information are copied to
5088 every created expression.
5089
82b3e2c6
DH
50902003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5091
5092 * eval.c (scm_m_set_x, scm_m_apply, scm_m_atbind): Use
5093 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
5094 when creating the memoized code.
5095
5096 (scm_m_atbind): Reversed the order, in which the init expressions
5097 are stored and executed. The order of execution is now equal to
5098 the order in which the initializers of the let-forms are executed.
5099 Use check_bindings and transform_bindings.
5100
5101 (SCM_CEVAL): Eliminated SCM_NIMP in favor of more appropriate
5102 !SCM_NULLP. Added some comments.
5103
21628685
DH
51042003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5105
5106 * eval.c: Sorted include files alphabetically.
5107
5108 (scm_m_begin): Added comment.
5109
5110 (scm_m_or): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5111 unnecessary consing when creating the memoized code.
5112
5113 (iqq, scm_m_quasiquote, scm_m_quote): Use ASSERT_SYNTAX to signal
5114 syntax errors. Be more specific about the kind of error that was
5115 detected.
5116
5117 (scm_m_quote, unmemocopy): As an optimization, vector constants
5118 are now inserted unquoted into the memoized code. During
5119 unmemoization the quotes are added again to provide syntactically
5120 correct code.
5121
d6754c23
DH
51222003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5123
5124 * eval.c (scm_m_let, scm_m_letstar, scm_m_letrec,
5125 scm_m_expand_body, check_bindings): Extracted syntax checking of
5126 bindings to new static function check_bindings.
5127
5128 (scm_m_let, memoize_named_let): Extracted handling of named let to
5129 new static function memoize_named_let.
5130
5131 (transform_bindings, scm_m_let, scm_m_letstar, scm_m_letrec): Use
5132 ASSERT_SYNTAX to signal syntax errors. Be more specific about the
5133 kind of error that was detected. Avoid use of SCM_CDRLOC. Avoid
5134 unnecessary consing when creating the memoized code.
5135
03a3e941
DH
51362003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5137
5138 * eval.c (s_bad_formals, s_bad_formal, s_duplicate_formal): New
5139 static identifiers.
5140
5141 (s_clauses, s_formals, s_duplicate_formals): Removed.
5142
5143 (scm_m_lambda): Use ASSERT_SYNTAX to signal syntax errors. Be more
5144 specific about the kind of error that was detected. Prepare for
5145 easier integration of changes for separated memoization.
5146
da48db62 51472003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
4610b011
DH
5148
5149 * eval.c (s_duplicate_binding): New static identifier.
5150
5151 (scm_m_case): Call scm_c_memq instead of implementing it inline.
5152
5153 (scm_m_define): Added comment about how we check for duplicate
5154 formals.
5155
5156 (scm_m_do): Added check for duplicate bindings.
5157
5158 (scm_m_if): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5159 unnecessary consing when creating the memoized code.
5160
5161 (scm_c_improper_memq, c_improper_memq, scm_m_lambda): Renamed
5162 scm_c_improper_memq to c_improper_memq, since it is not exported.
5163
5164 (transform_bindings): Call scm_c_memq rather than
5165 scm_c_improper_memq.
5166
5167 (SCM_CEVAL): Simplified handling of SCM_IM_IF forms.
5168
da48db62 51692003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
a954ce1d
DH
5170
5171 * eval.c (s_bad_bindings, s_bad_binding, s_bad_exit_clause): New
5172 static identifiers.
5173
5174 (scm_m_do): Use ASSERT_SYNTAX to signal syntax errors. Be more
5175 specific about the kind of error that was detected. Avoid use of
5176 SCM_CDRLOC. Avoid unnecessary consing when creating the memoized
5177 code, this way also making sure that file name, line number
5178 information etc. remain available.
5179
da48db62 51802003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
8ae95199
DH
5181
5182 * eval.c (memoize_as_thunk_prototype): New static function.
5183
5184 (scm_m_delay, scm_m_future): Use memoize_as_thunk_prototype.
5185 Avoid unnecessary consing when creating the memoized code.
5186
9b9a35b6
KR
51872003-10-12 Kevin Ryde <user42@zip.com.au>
5188
5189 * list.c (scm_append): Track argument number and use in error.
5190
cc56ba80
DH
51912003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5192
5193 * eval.c (s_missing_expression, s_bad_variable): New static
5194 identifiers.
5195
5196 (scm_m_define): Use ASSERT_SYNTAX to signal syntax errors. Prefer
5197 R5RS terminology for the naming of variables. Be more specific
5198 about the kind of error that was detected. Make sure file name,
5199 line number etc. are added to all freshly created expressions.
5200 Avoid unnecessary consing when creating the memoized code.
5201
609a8b86
DH
52022003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5203
5204 * eval.c (s_extra_expression, s_misplaced_else_clause,
5205 s_bad_cond_clause, s_missing_recipient): New static identifiers.
5206
5207 (s_extra_case_clause): Removed.
5208
5209 (scm_m_case, scm_m_cond): If a clause appears after an else
5210 clause, report a misplaced else clause.
5211
5212 (scm_m_cond): Use ASSERT_SYNTAX to signal syntax errors. Be more
5213 specific about the kind of error that was detected. Handle bound
5214 'else and '=>. Avoid unnecessary consing when creating the
5215 memoized code.
5216
5217 (scm_m_cond, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
5218 the syntactic keyword 'else and SCM_IM_ARROW to memoize the
5219 syntactic keyword '=>.
5220
58a2510b
DH
52212003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5222
5223 * eval.c (scm_m_case): Allow empty lists of case labels.
5224
2a6f7afe
DH
52252003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5226
5227 * tags.h (SCM_IM_ELSE, SCM_IM_ARROW): New memoizer codes.
5228
5229 * print.c (scm_isymnames): Add names for the new memoizer codes.
5230
5231 * eval.c (s_missing_clauses, s_bad_case_clause,
5232 s_extra_case_clause, s_bad_case_labels, s_duplicate_case_label,
5233 literal_p): New static identifiers.
5234
5235 (scm_m_case): Use ASSERT_SYNTAX to signal syntax errors. Be more
5236 specific about the kind of error that was detected. Check for
5237 duplicate case labels. Handle bound 'else. Avoid unnecessary
5238 consing when creating the memoized code.
5239
5240 (scm_m_case, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
5241 the syntactic keyword 'else.
5242
e6729603
DH
52432003-10-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
5244
5245 * eval.c (s_bad_expression, syntax_error_key, syntax_error,
5246 ASSERT_SYNTAX, ASSERT_SYNTAX_2): New static identifiers.
5247
5248 (scm_m_and): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5249 unnecessary consing when creating the memoized code.
5250
9ddeb776
KR
52512003-10-09 Kevin Ryde <user42@zip.com.au>
5252
5253 * numbers.c (scm_inexact_to_exact): Don't depend on what double->long
5254 cast gives for values bigger than a long, or for nan or inf.
5255
df5af69a
DH
52562003-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
5257
5258 * smob.h (scm_make_smob_type): Made the declaration match the
5259 definition.
5260
da0e6c2b
MV
52612003-10-07 Marius Vollmer <mvo@zagadka.de>
5262
5263 * goops.c, objects.h, smob.c, smob.h: Make type names char
5264 const * instead of char *. Thanks to Paul Jarc!
5265
591924eb
KR
52662003-10-02 Kevin Ryde <user42@zip.com.au>
5267
ff6ea7b9 5268 * strports.c (scm_call_with_output_string): scm_get_output_string
591924eb
KR
5269 rather than scm_strport_to_string, so as to guard against the port
5270 having been closed by the called procedure. Reported by Nic Ferrier.
5271
f03314f9
DH
52722003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5273
5274 * numbers.h (SCM_INEXACTP): Removed uses of SCM_TYP16S.
5275
5276 * tags.h, deprecated.h (SCM_TYP16S): Deprecated and moved from
5277 tags.h to deprecated.h.
5278
534c55a9
DH
52792003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5280
5281 This set of patches introduces a new tc7 code scm_tc7_number for
5282 numbers. Bignums, reals and complex numbers are turned from smobs
5283 into subtypes of scm_tc7_number.
5284
5285 * tags.h (scm_tc7_number): New.
5286
5287 * eq.c (scm_equal_p), eval.c (SCM_CEVAL), evalext.c
5288 (scm_self_evaluating_p), gc-card.c (scm_i_sweep_card), gc-mark.c
5289 (scm_gc_mark_dependencies), goops.c (create_smob_classes), hash.c
5290 (scm_hasher), numbers.c, numbers.h (SCM_NUMP), objects.c
5291 (scm_class_of), print.c (scm_iprin1), smob.c
5292 (scm_smob_prehistory): Don't handle bignums, reals and complex
5293 numbers as subtypes of scm_tc7_smob any more.
5294
5295 * numbers.h, tags.h (scm_tc16_big, scm_tc16_real,
5296 scm_tc16_complex): Moved definitions from tags.h to numbers.h.
5297
29c4382a
DH
52982003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5299
5300 * numbers.c (scm_make_complex), gc-card.c (scm_i_sweep_card): Use
5301 sizeof (scm_t_complex) to determine the memory size of the
5302 malloc'd area for complex numbers.
5303
47ae1f0e
DH
53042003-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
5305
5306 * numbers.c (scm_bigequal): Fixed.
5307
859b6b2f
MV
53082003-09-16 Marius Vollmer <mvo@zagadka.de>
5309
5310 * stime.c (scm_current_time): 'time' does not set errno so don't
5311 use SCM_SYSERROR for reporting errors.
5312
e17d318f
DH
53132003-09-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5314
5315 This set of patches eliminates the dependency between the
5316 implementation of evaluator specific memoization codes and special
5317 constants like #f, '() etc. ('flags'), which are not evaluator
5318 specific. The goal is to remove definitions of evaluator
5319 memoization codes completely from the public interface. This will
5320 make it possible to experiment more freely with optimizations of
5321 guile's internal representation of memoized code.
5322
5323 * objects.c (scm_class_of): Eliminate dependency on SCM_ISYMNUM.
5324
5325 * print.c (iflagnames): New array, holding the printed names of
5326 guile's special constants ('flags').
5327
5328 (scm_isymnames): Now holds only the printed names of the
5329 memoization codes.
5330
5331 (scm_iprin1): Separate the handling of memoization codes and
5332 guile's special constants.
5333
5334 * tags.h (scm_tc9_flag, SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA,
5335 SCM_IFLAGNUM): new
5336
5337 (scm_tc8_char, scm_tc8_iloc, SCM_BOOL_F, SCM_BOOL_T,
5338 SCM_UNDEFINED, SCM_EOF_VAL, SCM_EOL, SCM_UNSPECIFIED, SCM_UNBOUND,
5339 SCM_ELISP_NIL, SCM_IM_DISPATCH, SCM_IM_SLOT_REF,
5340 SCM_IM_SLOT_SET_X, SCM_IM_DELAY, SCM_IM_FUTURE,
5341 SCM_IM_CALL_WITH_VALUES, SCM_IM_NIL_COND, SCM_IM_BIND): Changed
5342 values.
5343
5344 (SCM_IFLAGP): SCM_IFLAGP now only tests for flags.
5345
5346 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Generalized to use the
5347 tc9 macros and scm_tc9_flag.
5348
eecac806
MV
53492003-09-15 Marius Vollmer <mvo@zagadka.de>
5350
5351 * posix.c (scm_setgroups): Check that the gid list is not too
5352 long. Thanks to Paul Jarc!
5353
22f2cf2d
DH
53542003-09-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
5355
5356 * tags.h: Reduced the number of short instructions from 14 to 13.
5357 The typecode of the former 14th short instruction is now used to
5358 represent long instructions. Changed some comments to reflect
5359 this fact.
5360
5361 (SCM_MAKISYM): ISYMs get a new tc7 code, namely the one that was
5362 previously used by SCM_IM_DEFINE.
5363
5364 (SCM_IM_DEFINE): Turned into a long instruction.
5365
5366 * eval.c (unmemocopy, SCM_CEVAL): Treat SCM_IM_DEFINE as a long
5367 instruction.
5368
5369 * eval.c (SCM_CEVAL): Since characters and iflags have now a tc7
5370 code that is separate from all instructions, one level of dispatch
5371 for long instructions can be eliminated.
5372
5373 * print.c (scm_isymnames): Removed some commented code.
5374
62f548e1
MV
53752003-09-12 Marius Vollmer <mvo@zagadka.de>
5376
97a61c5f
MV
5377 * __scm.h (SCM_FENCE): Use __memory_barrier with the Intel
5378 compiler on IA64.
5379
50e0ba57
MV
5380 * hashtab.h (scm_tc16_hashtable): Added "extern" declaration.
5381
5382 * modules.c (scm_module_reverse_lookup): Check that the obarray
5383 really is a hashtable and do nothing if not.
5384
62f548e1
MV
5385 * inline.h: Use "extern inline" only with GCC. Use "static
5386 inline" else.
5387
0d5e3480
DH
53882003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5389
5390 * numbers.h (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Removed uses
5391 of SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
5392
5393 * numbers.h, deprecated.h (SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP,
5394 SCM_SLOPPY_COMPLEXP): Deprecated and moved from numbers.h to
5395 deprecated.h.
5396
6b412e91
DH
53972003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5398
5399 * eq.c (scm_eqv_p, scm_equal_p): Removed uses of
5400 SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
5401
5402 * eq.c (scm_eqv_p, scm_equal_p): Reordered comparisons from
5403 0.0==some_expression to some_expression==0.0. The latter is
5404 better readable. The former is preferred by some people, since it
5405 leads to a compiler error when confusing == with =. However, when
5406 using gcc, a warning will be issued if in an if-statement an
5407 assigment appears. Since many Guile developers are using gcc,
5408 such errors will not remain unnoticed anyway. We can therefore
5409 focus on better readability.
5410
7e3b25bf
DH
54112003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5412
5413 * tags.h: Added description of Guile's type system. Removed some
5414 old and misleading comments.
5415
3ea39242
DH
54162003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5417
5418 * unit.c (scm_cvref): Eliminate unnecessary uses of SCM_NIMP,
5419 SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
5420
5d7d39ff
DH
54212003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5422
5423 * numbers.h (SCM_MAKINUM): Define in terms of scm_tc2_int.
5424
5425 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Define in terms of the
5426 respective SLOPPY macro.
5427
baa84a20
DH
54282003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5429
5430 * eq.c (scm_equal_p): Use SCM_TYP7 to check if an object is of
5431 type string, not SCM_TYP7S.
5432
ba15f500
KR
54332003-09-03 Kevin Ryde <user42@zip.com.au>
5434
5435 * numbers.c (scm_lognot): Correction to docstring, ones-complement not
5436 2s-complement.
5437
53bb8782
KR
5438 * stime.c (scm_strptime): Add comment about glibc strptime %s and
5439 current timezone requiring SCM_DEFER_INTS.
5440
defdc4b4
NJ
54412003-08-30 Neil Jerram <neil@ossau.uklinux.net>
5442
5443 * script.c (scm_compile_shell_switches): Make -s switch optional
5444 if file to be loaded does not begin with a `-'. (Thanks to Aaron
5445 VanDevender for the patch!)
5446
0f008a15
KR
54472003-08-30 Kevin Ryde <user42@zip.com.au>
5448
5449 * numbers.c (scm_lognot): Rewrite using ~ and mpz_com, for directness
5450 and to have non-integer types rejected as per other logical funcs.
5451
438a3ba1
KR
54522003-08-28 Kevin Ryde <user42@zip.com.au>
5453
5454 * gc.h (scm_remember_upto_here_1): Revise comments on the asm form.
5455
98dceb37
KR
54562003-08-23 Kevin Ryde <user42@zip.com.au>
5457
5458 * simpos.c (scm_system): Remove SCM_DEFER_INTS, system() should be
5459 thread safe, and could take a long time too.
5460
1fa79a38
KR
54612003-08-22 Kevin Ryde <user42@zip.com.au>
5462
5463 * numbers.c (scm_difference): Correction to bignum - negative inum.
5464
d97f9b42
KR
54652003-08-14 Kevin Ryde <user42@zip.com.au>
5466
5467 * gc.h (scm_remember_upto_here_1, scm_remember_upto_here_2)
5468 [__GNUC__]: Use volatile asm macros rather than a function call.
5469 * gc.c (scm_remember_upto_here_1, scm_remember_upto_here_2): Undefine
5470 macros while defining functions.
5471
5472 * simpos.c (getenv): Use <stdlib.h> for prototype.
5473 (scm_system): In docstring, refer to status:exit-val rather than
5474 "functions above".
5475
b9052fcc
KR
54762003-08-09 Kevin Ryde <user42@zip.com.au>
5477
5478 * srcprop.c (scm_source_properties): Return plist from hash if it's a
5479 list set by source-properties! rather than an SRCPROPS object,
5480
8e5b4b9e
KR
54812003-07-29 Kevin Ryde <user42@zip.com.au>
5482
5483 * properties.c (scm_primitive_property_ref): In docstring, note
5484 parameters to not-found-proc, use hyphens rather than underscores for
5485 that parameter name.
5486 (scm_primitive_property_set_x): In docstring, VAL is the value
5487 parameter not CODE.
5488
20703ac4
MV
54892003-07-27 Marius Vollmer <mvo@zagadka.de>
5490
c6ccee34
MV
5491 * print.c (scm_print_symbol_name): handle more weird characters by
5492 escaping the symbol name properly. Thanks to Paul Jarc!
5493
2f4931bf
MV
5494 * posix.h (scm_setgroups): New prototype.
5495 * posix.c (scm_setgroups): New. Thanks to Paul Jarc!
5496 (scm_getgroups): Handle groups ids that don't fit into a fixnum.
5497 Don't use SCM_WRITABLE_VELTS.
5498
265c456f
MV
5499 * gc.h (SCM_GC_SET_CELL_BVEC): New.
5500 * gc-card.c (scm_i_init_card_freelist): Use it. Thanks to
5501 Matthias Koeppe!
5502
20703ac4
MV
5503 * __scm.h (SCM_C_INLINE_KEYWORD): New.
5504 * numbers.c: Use it in place of SCM_C_INLINE so that the code
5505 compiles when SCM_C_INLINE is undefined.
5506
59c4bb82
DH
55072003-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
5508
5509 * __scm.h: Reformulated the architecture and compiler properties
5510 in terms of properties of scm_t_bits and SCM variables rather than
5511 in terms of c standard types. This is since it is not known which
5512 of the standard types scm_t_bits and SCM variables will be defined
5513 to.
5514
d7850c8d
KR
55152003-07-24 Kevin Ryde <user42@zip.com.au>
5516
5517 * numbers.c (scm_angle): Use scm_flo0 for non-negative inum, bignum
5518 and real.
5519
8a0c514f
KR
55202003-07-18 Kevin Ryde <user42@zip.com.au>
5521
5522 * numbers.c (scm_product): In complex * bignum, correction to
5523 REAL/IMAG fetch, x is the complex, not y.
5524
0aacf84e
MD
55252003-07-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5526
5527 * numbers.c (scm_odd_p, scm_even_p): Bugfix: Treat result of
5528 scm_inf_p test as Scheme values.
5529 (scm_sum): Bugfix: Normalize bignum created from a negative bignum
5530 and a positive inum.
5531 Use GNU indentation style.
5532
192de9a4
DH
55332003-07-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5534
5535 * values.c (scm_values): Build lists of length 1 by using
5536 scm_list_1 instead of using scm_cons.
5537
bbb4438a
KR
55382003-07-10 Kevin Ryde <user42@zip.com.au>
5539
b58c85ce
KR
5540 * deprecation.c (scm_c_issue_deprecation_warning_fmt): Add va_end.
5541 * list.c (scm_list_n): Ditto.
5542
bbb4438a
KR
5543 * gc-malloc.c (scm_gc_realloc): Define "ptr" at start of function.
5544
287f8ad1
KR
55452003-07-08 Matthias Koeppe <mkoeppe@merkur.math.uni-magdeburg.de>
5546
5547 * tags.h (scm_t_bits, scm_t_signed_bits, etc): Avoid solaris empty
5548 defines of INTPTR_MAX and UINTPTR_MAX, combine conditionals for
5549 scm_t_bits and scm_t_signed_bits to avoid any chance of one and not
5550 the other using intptr_t.
5551
005d2366
KR
55522003-07-08 Kevin Ryde <user42@zip.com.au>
5553
0aacf84e 5554 * numbers.c (scm_make_polar): Use sincos, when available.
005d2366
KR
5555 (scm_magnitude): Use hypot.
5556
5557 * ports.c (scm_char_ready_p, scm_peek_char): In docstrings, don't use
5558 @footnote since it doesn't go through to guile-procedures.txt.
5559
5560 * threads.c (scm_call_with_new_thread): In docstring, use "( )"
5561 outside @var to quieten makeinfo, and use @code.
5562
cbfe8e62
HWN
55632003-07-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5564
5565 * gc-malloc.c (decrease_mtrigger): new function
5566 (increase_mtrigger): new function, separate debug registering and
5567 mtrigger administration.
5568 (scm_gc_realloc): bugfix: do mtrigger administration before the
5569 actual realloc, for the realloc might invalidate a GC-d segment of
5570 memory. Thanks to Sam Hocevar for pointing this out.
5571 (scm_gc_realloc): use scm_malloc_reregister instead of
5572 unregistering and registering in sequence.
5573
aeb4c2e1
HWN
55742003-07-03 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5575
5576 * __scm.h (SCM_ASSERT): change "else" expansion to "do { } while (0)"
5577
4c27f8d2
HWN
55782003-07-02 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5579
5580 * __scm.h (SCM_ASRTGO): add "else" to macro expansions with if
5581 clauses.
5582
983e697d
MV
55832003-06-29 Marius Vollmer <mvo@zagadka.de>
5584
5585 * deprecated.h (SCM_OPDIRP, scm_fport, scm_option, scm_srcprops,
5586 scm_srcprops_chunk, scm_info_frame, scm_stack, scm_array,
5587 scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_FUNC_NAME, SCM_WTA,
5588 RETURN_SCM_WTA, SCM_VALIDATE_NUMBER_COPY,
5589 SCM_VALIDATE_NUMBER_DEF_COPY, SCM_VALIDATE_OPDIR): Re-added from
5590 the release_1_6 branch.
5591
78b6566e
SJ
55922003-06-25 Stefan Jahn <stefan@lkcc.org>
5593
5594 * continuations.c: Redeclaration of getcontext() via the
5595 __asm__ ("getcontext") directive.
5596
5597 * continuations.h: Include <ucontext.h> instead of
5598 <sys/ucontext.h>.
5599
1ebb8497
KR
56002003-06-21 Kevin Ryde <user42@zip.com.au>
5601
5602 * numbers.c (_GNU_SOURCE): #define, to get C99 things.
5603 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, $asinh, $acosh,
5604 $atanh, truncate): Use C library asinh, acosh, atanh and trunc, when
5605 available.
5606 (scm_inexact_to_exact): Expand isfinite to its definition !xisinf.
5607 (isfinite): Remove, conflicts with C99 isfinite().
5608
fbf85ba4
MV
56092003-06-19 Marius Vollmer <mvo@zagadka.de>
5610
5611 * deprecated.h, deprecated.c (scm_strhash, scm_sym2ovcell_soft,
5612 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
5613 scm_symbol_value0, scm_string_to_obarray_symbol scm_intern_symbol,
5614 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
5615 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp): Re-added from
5616 the release_1_6 branch.
5617
fcc5d734
SJ
56182003-06-14 Stefan Jahn <stefan@lkcc.org>
5619
5620 * threads.h: Redefined scm_getspecific() and scm_setspecific()
5621 to be functions instead of macros.
5622
5623 * threads.c: Conditionalized inclusion of <sys/time.h> and
5624 <unistd.h>.
5625 (scm_getspecific, scm_setspecific): Made these two function
5626 real part of the API.
5627
5628 * posix.c (s_scm_putenv): Added some code to make a
5629 (putenv "FOO="), i.e. setting an empty string, work also on
5630 Win32 systems. Thanks to Kevin Ryde for the proposal.
5631
c3ae8e07
KR
56322003-06-12 Kevin Ryde <user42@zip.com.au>
5633
75b14838
KR
5634 * posix.c (scm_putenv): Free temporary ptr in mingw unset. Add
5635 freebsd to comment about need to use unsetenv.
c3ae8e07 5636
9d9fa092
MV
56372003-06-02 Marius Vollmer <mvo@zagadka.de>
5638
5639 * ports.c (scm_peek_char): Safe the column of the port around the
5640 getc/ungetc calls. Thanks to Dr. Peter Ivanyi!
5641
f2478375
KR
56422003-06-07 Kevin Ryde <user42@zip.com.au>
5643
5644 * tags.h: Use inttypes.h and stdint.h when available, for INTPTR_MAX
5645 and friends required by scm_t_bits setups.
5646
6375e040
DH
56472003-06-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5648
5649 * tags.h (scm_tc2_int): Added.
5650
5651 * tags.h (scm_tc3_int_1, scm_tc3_int_2): Expressed in terms of
5652 scm_tc2_int.
5653
5654 * tags.h (scm_tcs_cons_imcar, scm_tcs_cons_nimcar, scm_tcs_struct,
5655 scm_tcs_closures): Hard coded values replaced by symbolic ones.
5656
f5c6ec2f
DH
56572003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
5658
5659 * eval.c: Partially undid my patch from 2003-05-31. This patch
5660 caused the segfault referenced in the previous changelog entry.
5661
47dbd81e
DH
56622003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
5663
5664 * tags.h: Fixed comment about the immediate type code layout.
5665
5666 * eval.c: Fixed handling of non-special instructions. Without
5667 this patch, guile will segfault on (#\0) and similar instructions.
5668
3ec52c51
KR
56692003-06-05 Kevin Ryde <user42@zip.com.au>
5670
5671 * numbers.c (scm_max, scm_min): For inum, bignum and real, if other
5672 operand is NaN, then return NaN. Also avoid passing NaN to mpz_cmp_d.
5673
e418bd7c
KR
5674 * read.c (scm_input_error): Pass arg list parameter to scm_error_scm,
5675 rather than SCM_EOL. Needed by "Unknown # object" case in scm_lreadr.
5676
d0624e39
DH
56772003-06-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5678
5679 * __scm.h, gc-card.c (SCM_DEBUG_DEBUGGER_SUPPORT,
5680 SCM_DEBUG_DEBUGGING_SUPPORT): Renamed macro
5681 SCM_DEBUG_DEBUGGER_SUPPORT to SCM_DEBUG_DEBUGGING_SUPPORT and
5682 generalized it to apply not only to C level functions but also to
5683 scheme level functions.
5684
5685 * debug.c, debug.h, eval.c (make-iloc, scm_make_iloc, iloc?,
5686 scm_iloc_p, dbg-make-iloc, scm_dbg_make_iloc, dbg-iloc?,
5687 scm_dbg_iloc_p): Moved functions scm_make_iloc, scm_iloc_p to
5688 eval.c, made them available under SCM_DEBUG_DEBUGGING_SUPPORT == 1
5689 only and renamed them to scm_dbg_make_iloc, scm_dbg_iloc_p,
5690 respectively.
5691
5692 * deprecated.h, eval.c, eval.h (SCM_ILOC00, SCM_IDINC,
5693 SCM_IDSTMSK): Deprecated. The macro definitions are moved from
5694 eval.h into eval.c and a copy is placed into deprecated.h.
5695
5696 * eval.c, eval.h (SCM_MAKE_ILOC): Removed from eval.h and placed
5697 into eval.c. This definition was not part of the API in any
5698 officially released version of guile and thus does not need to go
5699 through a phase of deprecation.
5700
e90c3a89
DH
57012003-06-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5702
d0624e39
DH
5703 * deprecated.c, deprecated.h, eval.c, eval.h (scm_s_expression,
5704 scm_s_test, scm_s_body, scm_s_bindings, scm_s_variable,
5705 scm_s_clauses, scm_s_formals): Deprecated. In eval.c the
e90c3a89
DH
5706 definitions are make static and renamed from scm_s_xxx to s_xxx.
5707 In deprecated.c the original definitions are copied.
5708
d0624e39
DH
5709 * deprecated.h, eval.c, eval (SCM_EVALIM2, SCM_EVALIM, SCM_XEVAL,
5710 SCM_XEVALCAR): Deprecated. The macro definitions are moved from
e90c3a89
DH
5711 eval.h into eval.c and a copy (slightly modified to work in user
5712 code) is placed into deprecated.h.
5713
5714 * eval.c: Use the local static s_xxx definitions instead of the
5715 scm_s_xxx definitions throughout.
5716
14b18ed6
DH
57172003-06-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5718
5719 This set of patches separates the representation of the cxr family
5720 of functions (car, cdr etc.) from the dsubr family of functions
5721 (i. e. functions that take a double precision floating point
5722 argument). Further, the algorithm for handling the cxr function
5723 is improved.
5724
5725 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_1), numbers.c
5726 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, scm_round, floor,
5727 ceil, sqrt, fabs, exp, log, sin, cos, tan, asin, acos, atan, sinh,
5728 cosh, tanh), objects.c (scm_class_of), procprop.c
5729 (scm_i_procedure_arity), ramap.c (scm_array_map_x), tags.h
5730 (scm_tc7_dsubr, scm_tcs_subrs): Introduce scm_tc7_dsubr as new
5731 typecode for the dsubr family of functions.
5732
5733 * ramap.c (ramap_cxr, ramap_dsubr): Renamed ramap_cxr to
5734 ramap_dsubr.
5735
5736 * eval.c (SCM_CEVAL, SCM_APPLY, call_cxr_1), pairs.c
5737 (scm_init_pairs): Make use of the (now usable) second cell element
5738 of a scm_tc7_cxr function to implement the cxr family of functions
5739 more efficiently.
5740
2ca0d207
DH
57412003-05-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
5742
5743 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_0,
5744 scm_trampoline_1, scm_trampoline_2): Postpone error cases to the
5745 end of an if-else-if-sequence of checks.
5746
9a069bdd
DH
57472003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
5748
5749 * eval.c (SCM_CEVAL): Improved readability of call-with-values
5750 execution. Generalize apply_closure to apply_proc and use that
5751 for call-with-values.
5752
e910e9d2
DH
57532003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
5754
5755 * eval.c (SCM_CEVAL): Avoid one level of indirection when applying
5756 a non closure.
5757
1e498fbd
SJ
57582003-05-30 Stefan Jahn <stefan@lkcc.org>
5759
5760 * posix.c (s_scm_putenv): Use the new HAVE_UNSETENV
5761 appropriately for mingw32 hosts.
5762
5763 * numbers.h: Defining copysign(), isnan() and finite() to
5764 be prefixed by a single '_' for mingw32 hosts.
5765
c47e2599
KR
57662003-05-30 Kevin Ryde <user42@zip.com.au>
5767
5768 * numbers.c (z_negative_one): New variable.
5769 (scm_init_numbers): Initialize it.
5770 (scm_logcount): Use it and mpz_hamdist to count zeros for negatives.
5771
2e945bcc
SJ
57722003-05-29 Stefan Jahn <stefan@lkcc.org>
5773
5774 * win32-dirent.c: Use malloc() instead of scm_malloc().
5775
5776 * stime.c (s_scm_strftime): Add a type cast to avoid compiler
5777 warning.
5778
5779 * posix.c (s_scm_putenv): Disable use of unsetenv() for the
5780 mingw32 build.
5781
5782 * modules.c (s_scm_module_import_interface): Renamed local
5783 variable interface to _interface. Seems like 'interface'
5784 is a special compiler directive for the mingw32 compiler.
5785
5786 * mkstemp.c: Provide prototype to avoid compiler warning.
5787
5788 * load.c (s_scm_search_path): Fixed absolute and relative
5789 path detections for native Windows platforms.
5790
5791 * gc.h, threads.h: Export some more symbols using SCM_API (necessary
5792 to build on mingw32).
5793
5794 * gc-freelist.c ("s_scm_map_free_list",
5795 "s_scm_gc_set_debug_check_freelist_x"): Fixed use of FUNC_NAME.
5796
5797 * fports.c (fport_fill_input): Disable use of
5798 fport_wait_for_input() on Win32 platforms.
5799
5800 * filesys.c (s_scm_basename): Fixed __MINGW32__ code.
5801
5802 * Makefile.am: Modified some rules for cross compiling.
5803
ddd8f927
DH
58042003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5805
5806 * eval.c (SCM_CEVAL): In case of an application, all checks for a
5807 proper function object and the correct number of arguments are now
5808 performed in the application part of SCM_CEVAL.
5809
5810 (scm_badformalsp): Removed.
5811
f8ba2197
DH
58122003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5813
5814 * deprecated.c (scm_read_and_eval_x): Fixed C99-ism.
5815
79f55b7c
MD
58162003-05-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5817
a502595f
MD
5818 * num2integral.i.c (NUM2INTEGRAL): Avoid warning about conditional
5819 always being false by inserting preprocessor conditional. (Thanks
5820 to Bruce Korb.)
5821
79f55b7c
MD
5822 * __scm.h (SCM_STACK_PTR): New macro. (Cast argument through
5823 (void *) in order to avoid an aliasing warning; thanks to Bruce
5824 Korb.)
5825
5826 * stackchk.h (SCM_STACK_OVERFLOW_P): Use SCM_STACK_PTR.
5827
5828 * threads.c (suspend, launch_thread, scm_threads_mark_stacks): Use
5829 SCM_STACK_PTR.
5830
5831 * threads.c (scm_threads_mark_stacks): Bugfix: Changed
5832 thread->base --> t->base.
5833
5834 * eval.c (SCM_CEVAL): Don't cast argument of SCM_STACK_OVERFLOW_P.
5835
47dee228
MV
58362003-05-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5837
5838 * deprecated.h, deprecated.c (scm_makstr, scm_makfromstr,
5839 scm_variable_set_name_hint, scm_builtin_variable,
5840 scm_internal_with_fluids, scm_make_gsubr,
5841 scm_make_gsubr_with_generic, scm_create_hook, SCM_LIST0,
5842 SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5, SCM_LIST6,
5843 SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify, scm_sloppy_memq,
85494587
MV
5844 scm_sloppy_memv, scm_sloppy_member, scm_read_and_eval_x,
5845 scm_subr_entry, SCM_SUBR_DOC, scm_make_subr,
5846 scm_make_subr_with_generic, scm_make_subr_opt,
5847 scm_call_catching_errors, scm_make_smob_type_mfpe,
5848 scm_set_smob_mfpe, scm_strprint_obj, scm_read_0str, scm_eval_0str,
5849 SCM_CHARS, SCM_UCHARS, SCM_LENGTH): Re-added from the release_1_6
5850 branch. Some have been slightly rewritten.
5851 (scm_i_object_chars, scm_i_object_length): New, to support
5852 SCM_CHARS, SCM_UCHARS, and SCM_LENTH.
5853
e681d187
DH
58542003-05-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
5855
5856 * eval.c (scm_m_do, unmemocopy, SCM_CEVAL): Reversed order of
5857 names and inits in the memoized code of do.
5858
7e59d9d4
MD
58592003-05-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5860
5861 * c-tokenize.lex (yyget_lineno, yyget_in, yyget_out, yyget_leng,
5862 yyget_text, yyset_lineno, yyset_in, yyset_out, yyget_debug,
5863 yyset_debug, yylex_destroy): Added prototypes (otherwise we'll get
5864 a compilation error if error-on-warning is enabled).
5865
9950a42c
MV
58662003-05-17 Marius Vollmer <mvo@zagadka.de>
5867
5868 * c-tokenize.lex: Gobble up complete lines after a '#'. This
5869 removes preprocessor directives from the snarfage that might
5870 otherwise confuse us. These directives appear when compiling with
5871 "-g3", for example.
5872
0068984b
HWN
58732003-05-16 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5874
26e68795
HWN
5875 * ChangeLog: add my surname
5876
0068984b
HWN
5877 * srcprop.c (scm_finish_srcprop): use
5878 scm_gc_register_collectable_memory()
5879 (scm_make_srcprops): idem.
5880
131805f0
HWN
58812003-05-14 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5882
5883 * gc-malloc.c (scm_gc_register_collectable_memory): avoid
5884 wrap-around for scm_mtrigger
5885 (scm_gc_register_collectable_memory): abort on overflowing
5886 scm_mallocated().
5887
d4611024
KR
58882003-05-13 Kevin Ryde <user42@zip.com.au>
5889
5890 * numbers.c (xmpz_cmp_d): New macro, handling infs if gmp doesn't.
5891 (scm_num_eq_p, scm_less_p, scm_max, scm_min): Use it.
5892
7aaf8dc9
MD
58932003-05-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5894
dfd03fb9
MD
5895 * backtrace.c (scm_display_error_message): Introduced fancy
5896 printing with max level 7 and length 10. (Purpose: avoid printing
5897 gigantic objects in error messages.)
5898
5899 * print.c, print.h (scm_i_port_with_print_state): New function.
5900
5901 * print.c (scm_iprin1, scm_printer_apply,
5902 scm_port_with_print_state): Use scm_i_port_with_print_state.
5903 (scm_simple_format): Modified not to destroy print states.
5904 (print_state_mutex): New mutex.
5905 (scm_make_print_state, scm_free_print_state, scm_prin1):
5906 Lock/unlock print_state_mutex.
5907
7aaf8dc9
MD
5908 * deprecated.h (SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK):
5909 Use current names in definitions.
5910
a4d9ffa1
KR
59112003-05-10 Kevin Ryde <user42@zip.com.au>
5912
5913 * numbers.c (scm_num_eq_p, scm_less_p): Don't pass NaN to mpz_cmp_d.
5914
d25e96a4
KR
5915 * numbers.c (scm_integer_length): On negative bignums, adjust
5916 mpz_sizeinbase to account for it looking at absolute value where we
5917 want ones-complement.
5918
5919 * numbers.c (scm_gcd): In bignum/inum, don't pass yy==0 to mpz_gcd_ui
5920 since we're only using the ulong return value, and x might not fit.
5921
5bf6a6f0
DH
59222003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5923
5924 * eval.c, eval.h, read.c, read.h (scm_sym_dot): Moved from eval to
5925 read. This will allow to make the definition in read.c static.
5926
f58c472a
DH
59272003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5928
5929 * eval.c, eval.h, evalext.c, evalext.h (scm_m_undefine): Moved
5930 from evalext to eval. This will allow to make some of the
5931 definitions in eval.c static.
5932
90382aeb
KR
59332003-05-06 Kevin Ryde <user42@zip.com.au>
5934
5935 * numbers.c (scm_difference): In inum - bignum, handle negative inum.
5936 (scm_logcount): Use mpz_com, not mpz_neg.
5937
3b88ed2a
DH
59382003-05-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5939
5940 The purpose of this patch is to make guile's internal memoizers
5941 distinguishable from memoizing macros created on the scheme level
5942 or from user provided primitive memoizing macros. The reason is,
5943 that the internal memoizers are the only ones that are allowed to
5944 transform their scheme input into memoizer byte code, while all
5945 other memoizing macros may only transform scheme code into new
5946 scheme code.
5947
5948 To achieve this, a new macro type 'builtin-macro!' is introduced.
5949 Currently, 'builtin-macro!'s are handled as memoizing macros, but
5950 this will change when the memoizer and executor are separated.
5951
5952 * macros.[ch] (scm_i_makbimacro): New.
5953
5954 * macros.h (SCM_BUILTIN_MACRO_P): New.
5955
5956 * macros.c (macro_print, scm_macro_type): Support builtin-macro!s.
5957
5958 * eval.c, goops.c: All of guile's primitive memoizing macros are
5959 primitive builtin-macros now.
5960
5961 * eval.c (scm_macroexp, SCM_CEVAL): Make sure the primitive
5962 builtin-macros are handled equally to memoizing macros.
5963
b0780eb1
MV
59642003-05-04 Marius Vollmer <mvo@zagadka.de>
5965
5966 * throw.c (scm_ithrow): Remove "asm volatile" hack. It used to
5967 work around a bug in GCC 2.95.2 but is now a bug in itself.
5968
1cbf4fe9
MV
59692003-05-02 Marius Vollmer <mvo@zagadka.de>
5970
5971 * deprecated.h (scm_rstate, scm_rng, SCM_SLOPPY_CONSP,
5972 SCM_SLOPPY_NCONSP, scm_tc7_ssymbol, scm_tc7_msymbol,
5973 scm_tcs_symbols): New.
5974
1a61d41b
MV
59752003-04-30 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5976
096ecbaf
MV
5977 * deprecated.h, deprecated.c (scm_protect_object,
5978 scm_unprotect_object, SCM_SETAND_CAR, SCM_SETOR_CAR,
5979 SCM_SET_AND_CDR, SCM_SET_OR_CDR, SCM_FREEP, SCM_NFREEP,
5980 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
5981 SCM_GCCDR, scm_remember, scm_the_root_module, scm_make_module,
5982 scm_ensure_user_module, scm_load_scheme_module, scm_port,
5983 scm_ptob_descriptor, scm_port_rw_active,
5984 scm_close_all_ports_except): New.
5985
1a61d41b
MV
5986 * ports.c (scm_c_port_for_each): New function, mostly copied from
5987 scm_port_for_each.
5988 (scm_port_for_each): Reimplemented using scm_c_port_for_each.
5989 * ports.h (scm_c_port_for_each): New prototype.
5990
c8e1d354
MD
59912003-04-28 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5992
5993 * eval.c (scm_m_atdispatch): Removed until actually needed. (This
5994 macro was introduced in anticipation of GOOPS method compilation
5995 code.)
5996
5997 * goops.c: Removed binding of @dispatch.
5998
a4aa2134
DH
59992003-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
6000
6001 * eval.c, goops.c (@dispatch, @slot-ref, @slot-set!): Move the
6002 instructions that bind the macros on the scheme level back to
6003 goops.c in order to make sure again that the bindings go into the
6004 (oop goops) module and are not visible from the outside.
6005
9fbee57e
DH
60062003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6007
6008 * eval.c: Non functional change: Separated R5RS and non-R5RS
6009 macros into different sections of the file and ordered the
6010 memoizers alphabetically.
6011
12841895
DH
60122003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6013
6014 * eval.c (scm_ilookup): Rewritten to improve readability.
6015
6a3f13f0
DH
60162003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6017
6018 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
6019 Partially reverted patch from 2003-04-23 in oder to find a better
6020 compromise between readability and debuggability.
6021
b0c5d67b
DH
60222003-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6023
6024 * eval.c, eval.h, goops.c, goops.h (scm_m_atslot_ref,
6025 scm_m_atslot_set_x, scm_m_atdispatch): Move the declarations and
6026 definitions of the special goops memoizers from goops.[ch] to
6027 eval.[ch]. Hmm... it seems that scm_m_atdispatch is not used
6028 throughout guile.
6029
b9ad392e
MD
60302003-04-24 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6031
6032 * ports.c, ports.h (scm_i_port_table_mutex): New mutex.
6033
6034 * fports.c (scm_evict_ports): Lock/unlock scm_i_port_table_mutex.
6035
6036 * ports.c (scm_close_port, scm_flush_all_ports): Ditto.
6037
6038 * ioext.c (scm_fdes_to_ports): Ditto.
6039
6040 * vports.c (scm_make_soft_port): Changed SCM_DEFER/ALLOW_INTS into
6041 lock/unlock scm_i_port_table_mutex.
6042
6043 * strports.c (scm_mkstrport): Ditto.
6044
6045 * ports.c (scm_void_port, scm_port_for_each): Ditto.
6046
6047 * fports.c (scm_fdes_to_port): Ditto.
6048
d0b07b5d
DH
60492003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6050
6051 This set of patches contains no functional changes, only debatable
6052 minor stylistic ones. Still, in order to prepare a patch between
6053 my local copy and the CVS version, I decided to submit the changes
6054 below. Then, the patch will hopefully only contain relevant
6055 modifications :-)
6056
6057 * eval.c (iqq): Added const specifier.
6058
6059 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
6060 Use NULL instead of 0 to indicate that a pointer is returned.
6061 Removed some misleading 'fall through' comments.
6062
6063 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
6064 Split up long expressions into smaller ones to be more debugging
6065 friendly.
6066
a98e8e98
DH
60672003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6068
6069 * eval.h (SCM_ENTER_FRAME_HDLR, SCM_APPLY_FRAME_HDLR,
6070 SCM_EXIT_FRAME_HDLR): Use SCM_PACK to convert data to a SCM value
6071 rather than casting to SCM.
6072
c178c3a6
DH
60732003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6074
6075 * sort.c, pairs.h: Removed unnecessary includes.
6076
d339981a
DH
60772003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6078
6079 * sort.c: Replaced hand-made trampline code by the new official
6080 mechanism from eval.c. This fixes a segfault in the new test file
6081 sort.test.
6082
6083 (quicksort, compare_function, scm_restricted_vector_sort_x,
6084 scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
6085 scm_merge_list_step, scm_sort_x, scm_sort, scm_merge_vector_x,
6086 scm_merge_vector_step, scm_stable_sort_x, scm_stable_sort,
6087 scm_sort_list_x, scm_sort_list): Use trampoline mechanism from
6088 eval.c.
6089
6090 (subr2less, lsubrless, closureless, applyless, scm_cmp_function,
6091 cmp_fun_t): Removed.
6092
6093 (compare_function): Added.
6094
6095 * sort.c (quicksort, SWAP, stack_node): Replaced pointer
6096 arithmetics with index arithmetics. Changed quicksort to work on
6097 an array of SCM values instead of an array of characters. Avoid
6098 bytewise copying of SCM elements. Avoid allocating memory on the
6099 stack with alloca. Fixed some comments.
6100
821f18a4
DH
61012003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6102
6103 * eval.c (EXTEND_ENV): Eliminated.
6104
6105 (unmemocopy, SCM_CEVAL, SCM_APPLY): Use SCM_EXTEND_ENV instead of
6106 EXTEND_ENV.
6107
94fb5a6e
DH
61082003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6109
6110 * __scm.h (SCM_DEBUG_DEBUGGER_SUPPORT): New compile-time option.
6111
6112 * gc.card.c (scm_gc_marked_p): Fixed compiler warning when
6113 compiling with SCM_DEBUG==1 by moving definition behind prototype.
6114
6115 * gc.card.c (scm_dbg_t_list_cell, scm_dbg_t_double_cell,
6116 scm_dbg_gc_marked_p, scm_dbg_gc_get_card, scm_dbg_gc_get_bvec,
6117 scm_t_list_cell_struct, scm_t_list_cell, scm_t_double_cell,
6118 scm_gc_marked_p, scm_gc_get_card, scm_gc_get_bvec): Fixed
6119 functions such that they check if the object is a non-immediate.
6120 Further, renamed identifiers to use the scm_dbg_ prefix and made
6121 their inclusion into the lib dependent of the
6122 SCM_DEBUG_DEBUGGER_SUPPORT compile time option.
6123
fce0b22d
DH
61242003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6125
6126 * __scm.h: Fixed comment about the SCM_DEBUG_TYPING_STRICTNESS
6127 debug option.
6128
1685446c
DH
61292003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6130
821f18a4 6131 * list.c (scm_ilength, scm_last_pair), unif.c (l2ra): Prefer
1685446c
DH
6132 !SCM_CONSP over SCM_NCONSP. Now, guile itself does not include
6133 any calls to SCM_NCONSP any more.
6134
6135 * unif.c (l2ra): Eliminate redundant check.
6136
9ff1720f
DH
61372003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6138
6139 * list.c (scm_cons_star), ramap.c (scm_ra_sum, scm_ra_product,
6140 scm_array_map_x), unif.c (l2ra): Prefer !SCM_NULLP over
6141 SCM_NNULLP. Now, guile itself does not include any calls to
6142 SCM_NNULLP any more.
6143
05b15362
DH
61442003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6145
6146 * eval.c (unmemocopy, SCM_APPLY, scm_map, scm_for_each,
6147 scm_copy_tree): Place assignment expressions which are part of
6148 other expressions into an expression of their own.
6149
0c88d7df
DH
61502003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6151
6152 * goops.c (TEST_CHANGE_CLASS, scm_sys_initialize_object): Don't
6153 compare SCM values with !=.
6154
5cb22e96
DH
61552003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6156
6157 * eval.c, eval.h, evalext.c, evalext.h (scm_sym_setter,
6158 scm_m_generalized_set_x, scm_init_evalext): Move the declaration
6159 and definition of the memoizer for the generalized set! macro from
6160 evalext.[ch] to eval.[ch]. Use the SCM_SYNTAX snarfer macro to
6161 define the macro object.
6162
6163 * eval.c, eval.h (s_set_x, scm_s_set_x, scm_m_set_x,
6164 scm_m_generalized_set_x): Since now scm_s_set_x is only used in
6165 eval.c, it is made static and renamed to s_set_x.
6166
6167 * evalext.c (scm_defined_p, scm_m_undefine): Prefer !SCM_<foo>
6168 over SCM_N<foo>.
6169
a44a9715
DH
61702003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6171
6172 * eval.c, root.h (scm_undefineds, SCM_NUM_PROTECTS, undefineds,
6173 scm_init_eval): Made scm_undefineds static in eval.c, renamed it
6174 to undefineds and registered the object as a permanent object.
6175
6176 * eval.c, eval.h (scm_f_apply, scm_init_eval): Made scm_f_apply
6177 static in eval.c, renamed it to f_apply and registered the object
6178 as a permanent object.
6179
1b43d24c
DH
61802003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6181
5cb22e96 6182 * eval.c (SCM_BIT7, SCM_BIT8, unmemocopy, SCM_CEVAL): Renamed
1b43d24c
DH
6183 file-local macro SCM_BIT8 to SCM_BIT7, which is more appropriate.
6184
aec16f99
DH
61852003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6186
6187 * numbers.c (scm_logtest): Fixed argument bug in the call to
6188 mpz_and, which showed up when compiling with SCM_DEBUG defined.
6189
f96460ce
DH
61902003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6191
6192 * gc-card.c (scm_i_sweep_card, scm_i_init_card_freelist): Fixed
6193 type errors that showed up when compiling with SCM_DEBUG defined.
6194
d0f6ceb8
DH
61952003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6196
6197 * continuations.c, continuations.h, eval.c, eval.h, extensions.c,
6198 gsubr.c, guile.c, init.c, read.c, root.c, root.h, stackchk.h,
6199 throw.c: Removed uses of DEBUG_EXTENSIONS and DYNAMIC_LINKING to
6200 fix compile errors with --disable-deprecated.
6201
19a7a089
RB
62022003-04-17 Rob Browning <rlb@defaultvalue.org>
6203
6204 * numbers.c (scm_integer_expt): fix case where we were declaring
6205 vars in the middle of a statement block. Thanks to Thamer
6206 Al-Harbash.
6207
47cd67db
MD
62082003-04-17 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6209
0fd7dcd3
MD
6210 * goops.c (TEST_CHANGE_CLASS): Update variable class after class
6211 change.
6212
47cd67db
MD
6213 * eq.c (scm_eqv_p): Turned into a primitive generic.
6214
3b8b889c
RB
62152003-04-16 Rob Browning <rlb@defaultvalue.org>
6216
312006bb
RB
6217 * gc_os_dep.c: Added patch for UnixWare and OpenUNIX support.
6218 Thanks to Boyd Gerber.
6219 Added check for __arm__ in addition to arm for LINUX and copied
6220 __s390__ defines from upstream libgc. Thanks to James Treacy for
6221 reporting the problems.
c7ef2ea1 6222
3b8b889c
RB
6223 * numbers.c (PTRDIFF_MIN): use SCM_CHAR_BIT.
6224
6225 * socket.c: use SCM_CHAR_BIT.
6226
6227 * random.c (scm_c_random_bignum): use SCM_CHAR_BIT.
6228
6229 * num2integral.i.c (NUM2INTEGRAL): use SCM_CHAR_BIT.
6230
43261b39
MD
62312003-04-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6232
6233 * feature.c (scm_init_feature): Always add threads feature.
6234
58241edc
MD
62352003-04-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6236
6237 * goops.c (scm_sys_fast_slot_ref): Use SCM_SLOT instead of
6238 scm_at_assert_bound_ref. (We don't want the unbound check. See
6239 oop/goops/active-slot.scm.)
6240
94e91275
RB
62412003-04-14 Rob Browning <rlb@defaultvalue.org>
6242
6243 * tags.h: scm_t_intptr should have been intptr_t.
6244
3071ea27
RB
62452003-04-13 Rob Browning <rlb@defaultvalue.org>
6246
6247 * __scm.h (SCM_FLUSH_REGISTER_WINDOWS): don't just rely on "sparc"
6248 test. Instead use
6249 #if defined (sparc) || defined (__sparc__) || defined (__sparc)
6250 as gc_os_dep.c suggests is appropriate.
6251
6252 * goops.c (prep_hashsets): make static to match prototype.
6253 (scm_sym_args): SCM_SYMBOL -> SCM_GLOBAL_SYMBOL. Thanks to Albert
6254 Chin.
6255
6256 * c-tokenize.lex: remove trailing comma from enum. Thanks to
6257 Albert Chin.
6258
6259 * gc_os_dep.c: add NetBSD powerpc config info. Thanks to Thomas
6260 Klausner.
6261
21ab2aeb
MD
62622003-04-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6263
6264 * goops.c (scm_sys_prep_layout_x): Instance allocation is now
6265 indicated through extra fields in getters-n-setters.
6266 (scm_add_slot): Adapted to new format of getters_n_setters slot.
6267 (Thanks to Andy Wingo.)
6268
dff96e95
HWN
62692003-02-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6270
6271 * gc-segment.c: add comment
6272
07921c76
RB
62732003-04-07 Rob Browning <rlb@defaultvalue.org>
6274
b5331f10
RB
6275 * debug.h: change "id" arg name to "info_id" to avoid objective-c
6276 clash.
6277
07921c76
RB
6278 * num2integral.i.c (NUM2INTEGRAL): fix bug pointed out by Mikael
6279 and add regression test to standalone/.
6280
62812003-04-06 Rob Browning <rlb@defaultvalue.org>
6282
6283 * strings.c (scm_mem2string): use memcpy rather than by-hand loop.
6284 Thanks to Dale P. Smith.
6285
6286 * random.c: #include gmp.h.
6287 (scm_c_random_bignum): normalize result on return.
6288
6289 * init.c: #include gmp.h.
6290
6291 * numbers.h: remove the gmp.h #include (not needed now).
6292
6293 * posix.h: change occurences of "id" to something else so we don't
6294 cause trouble when included via objective-c (can't hurt, might
6295 help). Still have usage in debug.h, though.
6296
938f6b7c
MD
62972003-04-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6298
372691d8
MD
6299 * random.c (scm_c_random_bignum): Don't generate a random number
6300 equal to m (the second argument of scm_c_random_bignum); only
6301 generate numbers in the range 0 <= r < m.
c5f268f8
MD
6302 (scm_c_default_rstate): Use SCM_VARIABLE_REF to access
6303 scm_var_random_state.
372691d8 6304
938f6b7c
MD
6305 * num2integral.i.c (INTEGRAL2BIG): Put negation of n inside then
6306 clause.
6307
6cdb8c3f
RB
63082003-04-05 Rob Browning <rlb@defaultvalue.org>
6309
938f6b7c 6310 * modules.c (scm_module_import_interface): move declaration of
6cdb8c3f
RB
6311 uses before any code.
6312
15635be5
MD
63132003-04-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6314
1ecfd013
MD
6315 * Makefile.am (scmconfig.h): Look for config.h in top_builddir,
6316 not top_srcdir.
6317
15635be5
MD
6318 * hashtab.c (rehash_after_gc): Clear to_rehash list before
6319 processing it in order to avoid an infinite loop.
6320
6321 * print.c (scm_prin1): Remember old state of pstate->writingp.
6322
73be1d9e
MV
63232003-04-05 Marius Vollmer <mvo@zagadka.de>
6324
6325 * Changed license terms to the plain LGPL thru-out.
6326
ad815c06
RB
63272003-04-04 Rob Browning <rlb@defaultvalue.org>
6328
6329 * socket.c (FLIPCPY_NET_HOST_128): new macro.
6330 (ipv6_net_to_num, ipv6_num_to_net, bignum_in_ipv6_range_p):
6331 rewrite to handle GMP bignums.
6332
6333
6334 * random.c (scm_c_random_bignum): rewrite to handle GMP bignums.
6335
6336 * ports.c (scm_getc): minor tweak.
6337
6338 * numbers.h: remove SCM_BIGDIG conditionals, reorganize, and
6339 rewrite to handle GMP bignums.
6340
6341 * numbers.c: rewrite *many* functions to handle GMP bignums.
6342
6343 * num2integral.i.c (NUM2INTEGRAL, INTEGRAL2NUM, INTEGRAL2BIG):
6344 handle GMP bignums.
6345
6346 * num2float.i.c (NUM2FLOAT): handle GMP bignums.
6347
6348 * init.c (check_config): remove SCM_BIGDIG conditionals.
6349 (scm_init_guile_1): test to make sure mpz_t fits in a double_cell.
6350
6351 * gc-card.c ("sweep_card"): handle new mpz_t bignums.
6352
6353 * eval.c: remove SCM_BIGDIG conditionals.
6354
6355 * eq.c (s_scm_eqv_p): scm_i_bigcomp -> scm_i_bigcmp.
6356
6cdb8c3f
RB
63572003-03-31 Rob Browning <rlb@defaultvalue.org>
6358
6359 * Makefile.am (scmconfig.h): change srcdir to builddir. (Thanks
6360 to Kevin Ryde.)
6361
63622003-03-27 Rob Browning <rlb@defaultvalue.org>
6363
6364 * threads.h: fix various preprocessor usages of new public
6365 symbols to expect 0 or 1 values rather than 1 or undefined.
6366 i.e. change #ifdef to #if, etc.
6367
6368 * threads.c: fix various preprocessor usages of new public
6369 symbols to expect 0 or 1 values rather than 1 or undefined.
6370 i.e. change #ifdef to #if, etc.
6371
6372 * tags.h: fix various preprocessor usages of new public
6373 symbols to expect 0 or 1 values rather than 1 or undefined.
6374 i.e. change #ifdef to #if, etc.
6375
6376 * stacks.c: fix various preprocessor usages of new public
6377 symbols to expect 0 or 1 values rather than 1 or undefined.
6378 i.e. change #ifdef to #if, etc.
6379
6380 * stackchk.h: fix various preprocessor usages of new public
6381 symbols to expect 0 or 1 values rather than 1 or undefined.
6382 i.e. change #ifdef to #if, etc.
6383
6384 * stackchk.c: fix various preprocessor usages of new public
6385 symbols to expect 0 or 1 values rather than 1 or undefined.
6386 i.e. change #ifdef to #if, etc.
6387
6388 * sort.c: fix various preprocessor usages of new public
6389 symbols to expect 0 or 1 values rather than 1 or undefined.
6390 i.e. change #ifdef to #if, etc.
6391
6392 * read.c: fix various preprocessor usages of new public
6393 symbols to expect 0 or 1 values rather than 1 or undefined.
6394 i.e. change #ifdef to #if, etc.
6395
6396 * random.c: fix various preprocessor usages of new public
6397 symbols to expect 0 or 1 values rather than 1 or undefined.
6398 i.e. change #ifdef to #if, etc.
6399
6400 * print.c: fix various preprocessor usages of new public
6401 symbols to expect 0 or 1 values rather than 1 or undefined.
6402 i.e. change #ifdef to #if, etc.
6403
6404 * objects.c: fix various preprocessor usages of new public
6405 symbols to expect 0 or 1 values rather than 1 or undefined.
6406 i.e. change #ifdef to #if, etc.
6407
6408 * numbers.h: fix various preprocessor usages of new public
6409 symbols to expect 0 or 1 values rather than 1 or undefined.
6410 i.e. change #ifdef to #if, etc.
6411
6412 * null-threads.c: fix various preprocessor usages of new public
6413 symbols to expect 0 or 1 values rather than 1 or undefined.
6414 i.e. change #ifdef to #if, etc.
6415
6416 * lang.c: fix various preprocessor usages of new public
6417 symbols to expect 0 or 1 values rather than 1 or undefined.
6418 i.e. change #ifdef to #if, etc.
6419
6420 * lang.h: fix various preprocessor usages of new public
6421 symbols to expect 0 or 1 values rather than 1 or undefined.
6422 i.e. change #ifdef to #if, etc.
6423
6424 * iselect.h: fix various preprocessor usages of new public
6425 symbols to expect 0 or 1 values rather than 1 or undefined.
6426 i.e. change #ifdef to #if, etc.
6427
6428 * init.c: fix various preprocessor usages of new public
6429 symbols to expect 0 or 1 values rather than 1 or undefined.
6430 i.e. change #ifdef to #if, etc.
6431
6432 * gh_data.c: fix various preprocessor usages of new public
6433 symbols to expect 0 or 1 values rather than 1 or undefined.
6434 i.e. change #ifdef to #if, etc.
6435
6436 * gh.h: fix various preprocessor usages of new public
6437 symbols to expect 0 or 1 values rather than 1 or undefined.
6438 i.e. change #ifdef to #if, etc.
6439
6440 * gen-scmconfig.c: change most new public symbols to be defined to
6441 0 or 1 rather than being either 1 or undefined.
6442
6443 * gc_os_dep.c: fix various preprocessor usages of new public
6444 symbols to expect 0 or 1 values rather than 1 or undefined.
6445 i.e. change #ifdef to #if, etc.
6446 (STACK_GROWS_DOWN): define to 0 or 1 rather than 1 or undef.
6447
6448 * gc.h: fix various preprocessor usages of new public
6449 symbols to expect 0 or 1 values rather than 1 or undefined.
6450 i.e. change #ifdef to #if, etc.
6451
6452 * gc-card.c: fix various preprocessor usages of new public
6453 symbols to expect 0 or 1 values rather than 1 or undefined.
6454 i.e. change #ifdef to #if, etc.
6455
6456 * gc-mark.c: fix various preprocessor usages of new public
6457 symbols to expect 0 or 1 values rather than 1 or undefined.
6458 i.e. change #ifdef to #if, etc.
6459
6460 * feature.c: fix various preprocessor usages of new public
6461 symbols to expect 0 or 1 values rather than 1 or undefined.
6462 i.e. change #ifdef to #if, etc.
6463
6464 * evalext.c: fix various preprocessor usages of new public
6465 symbols to expect 0 or 1 values rather than 1 or undefined.
6466 i.e. change #ifdef to #if, etc.
6467
6468 * eval.h: fix various preprocessor usages of new public
6469 symbols to expect 0 or 1 values rather than 1 or undefined.
6470 i.e. change #ifdef to #if, etc.
6471
6472 * eval.c: fix various preprocessor usages of new public
6473 symbols to expect 0 or 1 values rather than 1 or undefined.
6474 i.e. change #ifdef to #if, etc.
6475
6476 * eq.c: fix various preprocessor usages of new public
6477 symbols to expect 0 or 1 values rather than 1 or undefined.
6478 i.e. change #ifdef to #if, etc.
6479
6480 * coop.c: fix various preprocessor usages of new public
6481 symbols to expect 0 or 1 values rather than 1 or undefined.
6482 i.e. change #ifdef to #if, etc.
6483
6484 * coop-threads.c: fix various preprocessor usages of new public
6485 symbols to expect 0 or 1 values rather than 1 or undefined.
6486 i.e. change #ifdef to #if, etc.
6487
6488 * coop-pthreads.c: fix various preprocessor usages of new public
6489 symbols to expect 0 or 1 values rather than 1 or undefined.
6490 i.e. change #ifdef to #if, etc.
6491
6492 * coop-defs.h: fix various preprocessor usages of new public
6493 symbols to expect 0 or 1 values rather than 1 or undefined.
6494 i.e. change #ifdef to #if, etc.
6495
6496 * convert.i.c: fix various preprocessor usages of new public
6497 symbols to expect 0 or 1 values rather than 1 or undefined.
6498 i.e. change #ifdef to #if, etc.
6499
6500 * continuations.c: fix various preprocessor usages of new public
6501 symbols to expect 0 or 1 values rather than 1 or undefined.
6502 i.e. change #ifdef to #if, etc.
6503
6504 * _scm.h: fix various preprocessor usages of new public symbols to
6505 expect 0 or 1 values rather than 1 or undefined. i.e. change
6506 #ifdef to #if, etc.
6507
d11d697a
MV
65082003-03-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6509
9686f86d
MV
6510 * init.c (scm_init_guile_1): Call scm_i_init_deprecated.
6511
6512 * deprecated.c, deprecated.h: New files, to collect deprecated
6513 things in one place.
6514 * Makefile.am: Added them in all the right places.
6515
d11d697a
MV
6516 * Makefile.am (EXTRA_DIST): Added "scmconfig.h.top".
6517 (scmconfig.h): Get "scmconfig.h.top" from $(srcdir) so that VPATH
6518 builds work.
9686f86d
MV
6519 (DOT_X_FILES): Removed "iselect.x".
6520 (DOT_DOC_FILES): Removed "iselect.doc".
d11d697a 6521
e3c0c3b9
RB
65222003-03-25 Rob Browning <rlb@defaultvalue.org>
6523
6524 * win32-socket.h: #include "libguile/__scm.h". Replace usage of
6525 HAVE_WINSOCK2_H with SCM_HAVE_WINSOCK2_H.
6526
6527 * win32-socket.c: #include <config.h> if HAVE_CONFIG_H.
6528
6529 * vports.c: #include <config.h> if HAVE_CONFIG_H.
6530
6531 * unif.c: #include <config.h> if HAVE_CONFIG_H. Replace usage of
6532 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6533
6534 * threads.h: replace usage of struct timespect with
6535 scm_t_timespec. Replace usage of USE_PTHREAD_THREADS with
6536 SCM_USE_PTHREAD_THREADS. Remove typedef for struct timespec in
6537 favor of scm_t_timespec from scmconfig.h.
6538
6539 * threads.c: move libguile/_scm.h include to the top so we pick up
6540 any critical defines like _GNU_SOURCE early. Replace usage of
6541 struct timespect with scm_t_timespec. Replace usage of
6542 STACK_GROWS_UP with SCM_STACK_GROWS_UP. Replace usage of
6543 USE_PTHREAD_THREADS with SCM_USE_PTHREAD_THREADS.
6544
6545 * threads-plugin.h: replace usage of struct timespect with
6546 scm_t_timespec.
6547
6548 * threads-plugin.c: #include <config.h> if HAVE_CONFIG_H. Replace
6549 usage of struct timespect with scm_t_timespec.
6550
6551 * tags.h: move HAVE_STDINT_H handling to scmconfig.h. Move
6552 HAVE_INTTYPES_H handling to scmconfig.h. #include
6553 "libguile/__scm.h". Rework handling for scm_t_bits,
6554 scm_t_signed_bits, SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
6555 SCM_T_SIGNED_BITS_MIN, and SIZEOF_SCM_T_BITS to use scm_t_intptr,
6556 scm_t_uintptr, SCM_SIZEOF_INTPTR_T, and SCM_SIZEOF_UINTPTR_T, and
6557 SCM_SIZEOF_UNSIGNED_LONG. Rename usage of HAVE_ARRAYS to
6558 SCM_HAVE_ARRAYS.
6559
6560 * symbols.c: #include <config.h> if HAVE_CONFIG_H.
6561
6562 * struct.c: #include <config.h> if HAVE_CONFIG_H.
6563
6564 * strports.c: #include <config.h> if HAVE_CONFIG_H.
6565
6566 * strop.c: #include <config.h> if HAVE_CONFIG_H.
6567
6568 * stime.h: move handling of time related headers to scmconfig.h.
6569
6570 * stime.c: #include <config.h> if HAVE_CONFIG_H.
6571
6572 * stacks.c: replace usage of STACK_GROWS_UP with
6573 SCM_STACK_GROWS_UP.
6574
6575 * sort.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
6576 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6577
6578 * socket.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
6579 of uint32 and HAVE_UINT_32 with scm_t_int32.
6580
6581 * smob.c: #include <config.h> if HAVE_CONFIG_H.
6582
6583 * simpos.c: #include <config.h> if HAVE_CONFIG_H.
6584
6585 * script.c: #include <config.h> if HAVE_CONFIG_H.
6586
6587 * scmsigs.c: #include <config.h> if HAVE_CONFIG_H.
6588
6589 * scmconfig.h.top: new file -- preamble for scmconfig.h.
6590
6591 * rw.c: #include <config.h> if HAVE_CONFIG_H.
6592
6593 * regex-posix.c: #include <config.h> if HAVE_CONFIG_H.
6594
6595 * read.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6596
6597 * rdelim.c: #include <config.h> if HAVE_CONFIG_H.
6598
6599 * random.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
6600 of LONG32, LONG64, SIZEOF_LONG, and HAVE_LONG_LONGS with
6601 scm_t_int32, scm_t_int64, and SCM_HAVE_T_INT64. Rename usage of
6602 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6603
6604 * ramap.c: replace usage of HAVE_LONG_LONGS with
6605 "SCM_SIZEOF_LONG_LONG != 0".
6606
6607 * putenv.c: #include <config.h> if HAVE_CONFIG_H. #include
6608 "libguile/scmconfig.h".
6609
6610 * pthread-threads.c: #include <config.h> if HAVE_CONFIG_H.
6611
6612 * print.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6613 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6614
6615 * posix.c: #include <config.h> if HAVE_CONFIG_H.
6616
6617 * ports.c: #include <config.h> if HAVE_CONFIG_H.
6618
6619 * objects.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6620
6621 * numbers.h: replace usage of HAVE_FLOATINGPOINT_H with
6622 SCM_HAVE_FLOATINGPOINT_H. Replace usage of HAVE_IEEEFP_H with
6623 SCM_HAVE_IEEEFP_H. Replace usage of HAVE_NAN_H with
6624 SCM_HAVE_NAN_H. Replace usage of STDC_HEADERS with
6625 SCM_HAVE_STDC_HEADERS. Replace usage of ptrdiff_t with
6626 scm_t_ptrdiff. Replace usage of HAVE_LONG_LONGS with
6627 "SCM_SIZEOF_LONG_LONG != 0".
6628
6629 * numbers.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
6630 of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0". Replace
6631 usage of ptrdiff_t with scm_t_ptrdiff. Replace usage of
6632 SIZEOF_PTRDIFF_T with SCM_SIZEOF_SCM_T_PTRDIFF.
6633
6634 * num2integral.i.c: #include <config.h> if HAVE_CONFIG_H.
6635
6636 * null-threads.h: replace usage of struct timespect with
6637 scm_t_timespec.
6638
6639 * net_db.c: #include <config.h> if HAVE_CONFIG_H.
6640
6641 * mkstemp.c: #include <config.h> if HAVE_CONFIG_H. #include
6642 "libguile/__scm.h". Remove definition of gcc_uint64_t in favor of
6643 scm_t_uint64 and rename usages.
6644
6645 * mallocs.c: #include <config.h> if HAVE_CONFIG_H.
6646
6647 * load.c: #include <config.h> if HAVE_CONFIG_H.
6648
6649 * iselect.h: move handling of time related headers to scmconfig.h.
6650 Rename usage of HAVE_SYS_SELECT_H to SCM_HAVE_SYS_SELECT_H.
6651 Rename usage of HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Rename
6652 usage of USE_COOP_THREADS to SCM_USE_COOP_THREADS.
6653
6654 * iselect.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6655 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
6656 USE_NULL_THREADS to SCM_USE_NULL_THREADS.
6657
6658 * ioext.c: #include <config.h> if HAVE_CONFIG_H.
6659
6660 * inline.h: #include "libguile/__scm.h" at the top. Change code
6661 to use SCM_C_INLINE and SCM_INLINE_C_INCLUDINT_INLINE_H to decide
6662 what to do instead of creating a new public #define. Rename usage
6663 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
6664 USE_NULL_THREADS to SCM_USE_NULL_THREADS. Rename usage of
6665 USE_COPT_THREADS to SCM_USE_COPT_THREADS.
6666
6667 * inline.c: rearrange handling -- now we just #define
6668 SCM_INLINE_C_INCLUDING_INLINE_H to 1 and #include
6669 "libguile/inline.h". scmconfig.h will define SCM_C_INLINE as
6670 appropriate, and we use that in inline.h along with the above
6671 define to determine how to respond.
6672
6673 * init.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
6674 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6675
6676 * guile.c: #include <config.h> if HAVE_CONFIG_H.
6677
6678 * gh_data.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6679 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6680
6681 * gh.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6682
6683 * gen-scmconfig.h.in: new file -- see gen-scmconfig.c for details.
6684
6685 * gen-scmconfig.c: new file -- see comments in file for details.
6686
6687 * gdbinit.c: #include <config.h> if HAVE_CONFIG_H.
6688
6689 * gc_os_dep.c: #include <config.h> if HAVE_CONFIG_H. Replace
6690 usage of STACK_GROWS_UP with SCM_STACK_GROWS_UP.
6691
6692 * gc.h: replace usage of SIZEOF_LONG with
6693 SCM_SIZEOF_UNSIGNED_LONG. Replace usage of USE_PTHREAD_THREADS
6694 with SCM_USE_PTHREAD_THREADS. Remove SCM_SIZEOF_LONG definition
6695 since we handle that in scmconfig.h now.
6696
6697 * gc.c: #include <config.h> if HAVE_CONFIG_H.
6698
6699 * gc-mark.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6700 of HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of
6701 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6702
6703 * gc-malloc.c: #include <config.h> if HAVE_CONFIG_H.
6704
6705 * gc-card.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6706 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6707
6708 * fports.c: #include <config.h> if HAVE_CONFIG_H.
6709
6710 * filesys.c: #include <config.h> if HAVE_CONFIG_H.
6711
6712 * feature.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6713 of USE_NULL_THREADS to SCM_USE_NULL_THREADS.
6714
6715 * extensions.c: #include <config.h> if HAVE_CONFIG_H.
6716
6717 * evalext.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6718 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6719
6720 * eval.c: #include <config.h> if HAVE_CONFIG_H. #include
6721 "libguile/__scm.h" rather than scmconfig.h. Rename usage of
6722 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
6723 with "SCM_SIZEOF_LONG_LONG != 0".
6724
6725 * error.c: #include <config.h> if HAVE_CONFIG_H.
6726
6727 * eq.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
6728 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
6729 with "SCM_SIZEOF_LONG_LONG != 0".
6730
6731 * deprecation.c: #include <config.h> if HAVE_CONFIG_H.
6732
6733 * coop.c: replace usage of struct timespect with scm_t_timespec.
6734 #include <config.h> if HAVE_CONFIG_H.
6735
6736 * coop-threads.c: #include "libguile/_scm.h" early. Replace
6737 usage of struct timespect with scm_t_timespec. Replace usage of
6738 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
6739
6740 * coop-pthreads.c: #include "libguile/_scm.h" early. Replace
6741 usage of struct timespect with scm_t_timespec. Replace usage of
6742 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
6743
6744 * coop-defs.h: move handling of time related headers to
6745 scmconfig.h. Add #include "libguile/__scm.h". Rename usage of
6746 HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Replace usage of struct
6747 timespect with scm_t_timespec.
6748
6749 * convert.i.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6750
6751 * convert.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6752
6753 * convert.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6754 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6755
6756 * continuations.c: move libguile/_scm.h include to the top so we
6757 pick up any critical defines like _GNU_SOURCE early.
6758
6759 * backtrace.c: #include <config.h> if HAVE_CONFIG_H.
6760
6761 * async.c: #include <config.h> if HAVE_CONFIG_H.
6762
6763 * alloca.c: #include <config.h> if HAVE_CONFIG_H.
6764
6765 * _scm.h: #include <config.h> if HAVE_CONFIG_H.
6766 Rename usage of USE_PTHREAD_THREADS to SCM_USE_PTHREAD_THREADS.
6767
6768 * __scm.h: move libguile/scmconfig.h include up to the top, so
6769 we're sure to pick up any critical defines like _GNU_SOURCE early.
6770 #include <limits.h> removed in favor of scmconfig.h inclusion when
6771 appropriate. STDC_HEADERS based inclusion of stdlib.h,
6772 sys/types.h, stddef.h, and sys/stdtypes.h removed in favor of
6773 scmconfig.h inclusion when appropriate. Various Win32 related
6774 definitions removed in favor of scmconfig.h inclusion when
6775 appropriate.
6776 (HAVE_UINTPTR_T): definition removed (see NEWS).
6777 (SIZEOF_PTRDIFF_T): definition removed (see NEWS).
6778 (HAVE_LONG_LONGS): definition removed (see NEWS).
6779 (HAVE_LONG_LONG): definition removed (see NEWS).
6780 (HAVE_PTRDIFF_T): definition removed (see NEWS).
6781
6782 * Makefile.am: scmconfig.h is now generated by building and
6783 running gen-scmconfig.h and capturing its output. gen-scmconfig
6784 uses config.h and the configure.in generated gen-scmconfig.h to
6785 decide what to output. See gen-scmconfig.c for details.
6786 (noinst_PROGRAMS): add gen-scmconfig.
6787 (gen_scmconfig_SOURCES): new variable.
6788 (gen-scmconfig.$(OBJEXT)): new target - be careful to handle
6789 cross-compiling right.
6790 (scmconfig.h): build scmconfig.h from gen-scmconfig's output.
6791 (BUILT_SOURCES): add scmconfig.h.
6792
25e0bf97
MV
67932003-03-19 Marius Vollmer <mvo@zagadka.de>
6794
6795 * gc_os_dep.c: Added defines for sparc-unknown-netbsdelf1.5 from
6796 Adrian Bunk. Thanks!
6797
74b6d6e4
MD
67982003-03-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6799
6800 * goops.c (make_class_from_template): New fourth arg:
6801 applicablep.
6802 (scm_class_extended_generic_with_setter, scm_class_self): Fixed
6803 cpls.
6804
6805 * smob.c (scm_set_smob_apply): Call scm_i_inherit_applicable.
6806
6807 * goops.c, objects.c, objects.h (scm_make_extended_class): New
6808 second arg: applicablep.
6809 (scm_i_inherit_applicable): New function.
6810
6811 * goops.c, goops.h (scm_class_applicable,
6812 scm_class_extended_accessor): New classes.
6813
5c9e7dad
DH
68142003-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
6815
6816 * procs.c (scm_procedure_documentation): Removed redundant
6817 SCM_NIMP test and replaced other calls to SCM_IMP by more explicit
6818 predicates.
6819
f8af5c6d
MD
68202003-03-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6821
c614a00b
MD
6822 * list.c, list.h (scm_filter, scm_filter_x): New functions.
6823
109c2c9f
MD
6824 * modules.c (scm_module_import_interface): New function.
6825
f8af5c6d
MD
6826 * goops.c, goops.h (scm_class_accessor_method): Renamed from
6827 scm_class_accessor.
6828 (scm_class_accessor): New class.
6829
a48d60b1
MD
68302003-03-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6831
6832 * goops.c (scm_primitive_generic_generic): Enable primitive
6833 generic if not enabled.
6834 (scm_sys_goops_loaded): Setup unextended primitive generics.
6835
6836 * goops.c, goops.h (scm_c_extend_primitive_generic): New function.
6837
6838 * snarf.h (SCM_PRIMITIVE_GENERIC, SCM_PRIMITIVE_GENERIC_1): New
6839 snarf macros.
6840
6841 * numbers.c (scm_abs): Use SCM_PRIMITIVE_GENERIC. (This is only a
6842 testing example. All uses of SCM_GPROC should be converted.)
6843
6844 * procprop.c (scm_stand_in_scm_proc): Use scm_assq instead of
6845 scm_assoc.
6846
6847 * eq.c (scm_equal_p): Turned into a primitive generic.
6848
84edc049
RB
68492003-02-27 Rob Browning <rlb@defaultvalue.org>
6850
6851 * Makefile.am (scmconfig.h): new target -- generate file from
6852 ../config.h.
6853 (modinclude_HEADERS): remove version.h.
6854 (nodist_modinclude_HEADERS): add version.h.
6855
ea5c9285
MD
68562003-02-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6857
b4a1358c
MD
6858 This fixes a serious GC bug, introduced during the latest
6859 reorganization of the GC, which disabled freeing of structs and
6860 GOOPS objects:
6861
6862 * struct.c (scm_struct_prehistory): Init scm_i_structs_to_free to
6863 SCM_EOL.
53af8255
MD
6864 (scm_struct_prehistory): Move scm_free_structs to
6865 scm_before_mark_c_hook.
ea5c9285 6866
b4a1358c
MD
6867 * gc-card.c (sweep_card): Check that we haven't swept structs on
6868 this card before. That can happen if scm_i_sweep_all_segments has
6869 been called from some other place than scm_igc.
6870
c35738c1
MD
68712003-02-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6872
231a4ea8
MD
6873 * environments.c (DEFAULT_OBARRAY_SIZE): Changed from 137 to 31
6874 (since hash tables now adapt their size).
6875
6876 * modules.c (scm_modules_prehistory): Changed from 2001 to 1533
6877 (current number of prehistory bindings; hashtable code will select
6878 a prime which is greater than this value).
6879
6880 * symbols.c (scm_symbols_prehistory): Changed from 1009 to 2139
6881 (current number of initial symbols).
6882
6883 * properties.c (scm_init_properties): Don't specify size of
6884 scm_properties_whash.
6885
6886 * objprop.c (scm_init_objprop): Don't specify size of
6887 scm_object_whash.
6888
6889 * keywords.c (scm_init_keywords): Don't specify a hash table size.
6890
c35738c1
MD
6891 * hooks.c (scm_c_hook_add): Fixed bug in append mode.
6892
6893 The following changes introduce the use of resizable hash tables
6894 throughout Guile. It also renames the old *-hash-table* functions
6895 to *-alist-vector* and places them, together with the rest of the
6896 weak vector support, in the module (ice-9 weak-vector). We should
6897 probably introduce a new, better, API for weak references, for
6898 example "weak pairs" a la MIT-Scheme. (In Chez scheme, they even
6899 look like and are used like ordinary pairs.)
6900
6901 * environments.c (obarray_enter, obarray_retrieve, obarray_remove,
6902 leaf_environment_fold, obarray_remove_all): Use hashtable
6903 accessors.
6904
6905 * gc.c (scm_init_storage): Moved hook initialization to
6906 scm_storage_prehistory.
6907 (scm_storage_prehistory): New function.
6908 (scm_igc): Added commentary about placement of
6909 scm_after_sweep_c_hook.
6910
6911 * gc-mark.c (scm_mark_all): Use hashtable accessors.
6912 (scm_gc_mark_dependencies): Use SCM_WVECT_WEAK_KEY_P and
6913 SCM_WVECT_WEAK_VALUE_P.
6914
6915 * hashtab.c, hashtab.h (scm_hash_for_each, scm_hash_map): New
6916 functions.
6917 (scm_vector_to_hash_table, scm_c_make_resizing_hash_table):
6918 Removed.
6919 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table,
6920 scm_make_doubly_weak_hash_table): Moved here from weaks.c.
6921
6922 * init.c (scm_init_guile_1): Removed call to scm_init_weaks; Added
6923 calls to scm_storage_prehistory and scm_hashtab_prehistory.
6924
6925 * modules.c (module-reverse-lookup): Use hashtable accessors.
6926
6927 * symbols.c, symbols.h (scm_i_hash_symbol): New function.
6928
6929 * weaks.c, weaks.h (scm_make_weak_key_alist_vector,
6930 scm_make_weak_value_alist_vector,
6931 scm_make_doubly_weak_alist_vector): New functions.
6932
6933 * weaks.c (scm_init_weaks_builtins): New function.
6934
6935 * weaks.h (SCM_WVECTF_WEAK_KEY, SCM_WVECTF_WEAK_VALUE,
6936 SCM_WVECTF_NOSCAN, SCM_WVECT_WEAK_KEY_P, SCM_WVECT_WEAK_VALUE_P,
6937 SCM_WVECT_NOSCAN_P): New macros.
6938
6939 * weaks.c (scm_scan_weak_vectors): Use SCM_WVECT_WEAK_KEY_P
6940 and SCM_WVECT_WEAK_VALUE_P.
6941
6942 * weaks.c, weaks.h (scm_i_allocate_weak_vector): Renamed from
6943 allocate_weak_vector and exported.
6944
0a4c1355
MD
69452003-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6946
6947 * hashtab.c: Undid thread safety. (We decided that it's better to
6948 let the user explicitly protect the tables (or not) according what
6949 is suitable for the application.)
6950
87ca11ff
MD
69512003-02-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6952
6953 * hashtab.c (scm_hash_fn_remove_x, scm_internal_hash_fold): Made
6954 thread safe and handle resizing tables.
6955 (scm_ihashx, scm_sloppy_assx, scm_delx_x): Removed
6956 SCM_DEFER/ALLOW_INTS.
6957
f59a096e
MD
69582003-02-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6959
6960 * hashtab.c (scm_vector_to_hash_table,
6961 scm_c_make_resizing_hash_table, scm_make_hash_table): New
6962 functions.
6963 (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x): Made thread
6964 safe and handle resizing tables.
6965
6966 * weaks.c (scm_make_weak_key_hash_table,
6967 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
6968 Size argument made optional. Return resizable table if not
6969 specified.
6970
4b612c5b
MD
69712003-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6972
6973 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
6974 Fixed formals tests for closures. (Thanks to Kevin Ryde.)
6975
b3d7f6df
MD
69762003-02-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6977
6978 * debug.c (scm_procedure_source): Handle all objects for which
6979 procedure? is #t. (Thanks to Bill Schottstaedt.)
6980
756414cf
MD
69812003-01-23 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6982
361d631f
MD
6983 * futures.c (mark_futures): Don't need to mark data of recycled
6984 futures.
6985 (scan_futures, cleanup_undead): Be smarter about marking
6986 futures---avoid unnecessary passes through future lists.
6987
756414cf
MD
6988 * futures.h, futures.c: New files; Introduced recycling of
6989 futures. For fine-grained threading this lifts performance to
6990 another level. We can now use parallelization in inner loops of
6991 Guile programs without impossible overhead.
6992
6993 * threads.h, threads.c: Moved futures to their own file.
6994
6995 * Makefile.am (libguile_la_SOURCES): Added futures.c.
6996 (DOT_X_FILES): Added futures.x.
6997 (DOT_DOC_FILES): Added futures.doc.
6998 (modinclude_HEADERS): Added futures.h.
6999
7000 * threads.c, threads.h (scm_i_create_thread): Renamed from
7001 create_thread and made global.
7002
7003 * futures.c (scm_make_future): New procedure.
7004
7005 * eval.c: #include "libguile/futures.h".
7006
7007 * init.c: #include "futures.h"
7008 (scm_init_guile_1): Call scm_init_futures.
7009
7010 * stime.c (SCM_TIME_UNITS_PER_SECOND): Renamed from CLKTCK.
7011
7012 * stime.h (SCM_TIME_UNITS_PER_SECOND): Definition moved here.
7013
7014 * eval.c, eval.h (scm_trampoline_0, scm_i_call_closure_0): New
7015 functions.
7016
7017 * eval.c (scm_trampoline_1): Fixed arguments test for closures.
7018
b4debead
MD
70192003-01-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7020
7021 * threads.c (create_thread): Don't unwind dynwind chain of parent
7022 thread before creation. Just start the new thread with an empty
7023 dynwind chain.
7024
93f26b7b
MD
70252003-01-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7026
7027 * evalext.c, evalext.h (scm_self_evaluating_p): New function.
7028
38d8927c
MD
70292003-01-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7030
41c96c32
MD
7031 * threads.c (scm_timed_wait_condition_variable): Support timed
7032 waiting also for simple condition variables.
7033
38d8927c
MD
7034 * goops.c (TEST_CHANGE_CLASS): Use scm_change_object_class instead
7035 of calling the procedure change-object-class.
7036
9cf5d9b7
MD
70372003-01-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7038
7039 * ramap.c (scm_ramapc): Typo in error message.
7040
bbf8d523
MD
70412003-01-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7042
b46fae00
MD
7043 * goops.c (scm_sys_prep_layout_x): Bugfix: Only create layout for
7044 slots with instance allocation.
7045
bbf8d523
MD
7046 * goops.c, goops.h (scm_class_extended_generic_with_setter): New
7047 class.
7048 (scm_compute_applicable_methods): Use scm_generic_function_methods.
7049
7050 * goops.c (scm_generic_function_methods): Support extended
7051 generic functions.
7052
ebf9b47c
MD
70532002-12-29 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7054
7055 * eval.c (unmemocopy): Bugfix: scm_sym_delay --> scm_sym_future.
2e37d6a2 7056 Thanks to Neil for pointing this out!
ebf9b47c 7057
14a9ba3f
NJ
70582002-12-29 Neil Jerram <neil@ossau.uklinux.net>
7059
7060 * lang.h: Remove declarations matching definitions removed from
7061 lang.c (just below).
7062
c6a040a8
NJ
70632002-12-28 Neil Jerram <neil@ossau.uklinux.net>
7064
6054d805
NJ
7065 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
7066 scm_m_while, scm_nil_eq): Remove definitions that were superfluous
7067 and already commented out.
7068
c6a040a8
NJ
7069 * read.h (scm_lreadparen), read.c (scm_lreadr, scm_read_token,
7070 scm_lreadparen): Support reading vectors with Elisp syntax if
7071 SCM_ELISP_READ_EXTENSIONS is defined. (SCM_ELISP_READ_EXTENSIONS
7072 is not currently defined, and there isn't even a configure switch
7073 to enable it yet.)
7074
3742c12f
MV
70752002-12-26 Marius Vollmer <mvo@zagadka.ping.de>
7076
7077 * Makefile.am (c-tokenize.o): Refer to source via $< so that vpath
7078 builds work.
7079 (EXTRA_DIST): Added version.h.in.
7080
fb50ef08
MD
70812002-12-21 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7082
7083 This change makes it possible for one thread to do lazy sweeping
7084 while other threads are running. Now only the mark phase need to
7085 have all threads asleep. We should look further into this issue.
7086 Presently, I've put the locking of scm_i_sweep_mutex at
7087 "conservative" places due to my current lack of knowledge about
7088 the garbage collector. Please feel free to restrict these regions
7089 further to allow for maximal parallelism!
7090
7091 * gc.c, gc.h (scm_i_sweep_mutex): New mutex.
7092
7093 * gc.c (scm_gc_for_newcell), gc-malloc.c (scm_realloc,
7094 scm_gc_register_collectable_memory): Substitute locking of
7095 scm_i_sweep_mutex for calls to scm_i_thread_put_to_sleep.
7096 (scm_igc): Lock sweep mutex here instead of in callers; Calls to
7097 scm_i_thread_put_to_sleep/scm_i_thread_wake_up used to demarkate
7098 the single-thread section (which now only contains the mark
7099 phase).
7100 (scm_gc): Don't lock sweeo mutex here since scm_igc locks it;
7101 Removed SCM_DEFER/ALLOW_INTS. Simply call scm_igc directly.
7102
7103 * threads.c (gc_section_mutex): Removed.
7104
9ed24633
MD
71052002-12-19 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7106
0d48aca5
MD
7107 * threads.c (create_thread): Clear parent field in root state in
7108 order not to unnecessarily remember dead threads.
7109
9ed24633
MD
7110 * eval.c (call_subr2o_1, call_lsubr2_2): New functions.
7111 (scm_trampoline_1, scm_trampoline_2): Use them.
7112
29717c89
MD
71132002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7114
7115 Partial introduction of real plugin interface.
7116
7117 * Makefile.am (modinclude_HEADERS): Added threads-plugin.h.
7118 (EXTRA_DIST): Added threads-plugin.c.
7119
7120 * threads-plugin.h, threads-plugin.c: New files.
7121
7122 * threads.h: #include "libguile/threads-plugin.h".
7123
7124 * threads.c: #include "libguile/threads-plugin.c".
7125
7126 * pthread-threads.c: Temporarily remove debugging functions.
7127
7128 * threads.c, threads.h (scm_yield): Added back.
7129
e29e0b09
MD
71302002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7131
7132 * threads.c (really_launch): Detach before unlocking
7133 thread_admin_mutex in order not to risk being joined.
7134 (scm_i_thread_put_to_sleep, scm_i_thread_wake_up): Keep
7135 thread_admin_mutex locked during GC.
7136
7137 * pthread-threads.c, pthread-threads.h: Improvements to debugging
7138 functions.
7139
0b6843b1 71402002-12-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
93cd4dcd 7141
6da2dfc4
MD
7142 * pthread-threads.c, pthread-threads.h (SCM_DEBUG_THREADS): Added
7143 support for debugging mutex operations.
7144
1b92fb6b
MD
7145 * threads.c (scm_thread): Removed filed joining_threads.
7146 (thread_print): Print thread number as well as address of thread
7147 structure.
0b6843b1
MD
7148 (scm_join_thread): Bugfix.
7149 (scm_lock_mutex, scm_try_mutex, scm_unlock_mutex,
7150 scm_timed_wait_condition_variable, scm_signal_condition_variable,
7151 scm_broadcast_condition_variable): Use the low-level API.
7152 (scm_all_threads): Return copy of thread list (to prevent
7153 unintended destruction).
7154 (scm_threads_prehistory): Initialize heap_mutex of fake thread.
1b92fb6b 7155
93cd4dcd
MD
7156 * pthread-threads.c, pthread-threads.h, threads.c: Fixes to
7157 pthread "native" recursive mutex support.
7158
2ff4f181
MD
71592002-12-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7160
28d52ebb
MD
7161 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): New definitions.
7162 Simply lock a thread C API recursive mutex.
7163 (SCM_NONREC_CRITICAL_SECTION_START,
7164 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
7165 SCM_REC_CRITICAL_SECTION_END): Removed.
7166
7167 * eval.c: Replaced SOURCE_SECTION_START / SOURCE_SECTION_END with
7168 direct calls to scm_rec_mutex_lock / unlock around the three calls
7169 to scm_m_expand_body.
7170
7171 * eval.c, eval.h (promise_free): New function.
7172 (scm_force): Rewritten; Now thread-safe; Removed
7173 SCM_DEFER/ALLOW_INTS.
7174
7175 * pthread-threads.h: Added partially implemented plugin interface
7176 for recursive mutexes. These are, for now, only intended to be
7177 used internally within the Guile implementation.
7178
7179 * pthread-threads.c: New file.
7180
7181 * threads.c: Conditionally #include "pthread-threads.c".
7182
7183 * eval.c, eval.h (scm_makprom, scm_force): Rewritten to be
7184 thread-safe;
7185
7186 * snarf.h (SCM_MUTEX, SCM_GLOBAL_MUTEX, SCM_REC_MUTEX,
7187 SCM_GLOBAL_REC_MUTEX): New macros.
7188
7189 * eval.c, threads.c, threads.h, snarf.h: Rewrote critical section
7190 macros---use mutexes instead.
7191
7192 * tags.h (SCM_IM_FUTURE): New tag.
7193
7194 * eval.c (scm_m_future): New primitive macro.
7195 (SCM_CEVAL): Support futures.
7196 (unmemocopy): Support unmemoization of futures.
7197
7198 * print.c (scm_isymnames): Name of future isym.
7199
2ff4f181
MD
7200 * version.c: Unmade some changes to my private copy that got
7201 committed by mistake.
7202
392d2833
MD
72032002-12-11 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7204
e200ddee
MD
7205 * gc-malloc.c, gc.h, init.c: Reverted gc-malloc change of
7206 2002-12-10.
7207
392d2833
MD
7208 * gc.c (scm_igc): Don't call scm_i_thread_invalidate_freelists.
7209
7210 * gc.c (scm_gc_sweep): Call it here instead, which is a more
7211 logical place.
7212
7213 * threads.c (create_thread): Remember root object until the handle
7214 of the new thread is on all_threads list.
7215
7216 * root.c (scm_make_root): Moved copying of fluids until after
7217 creation of root handle so that the fluids are GC protected. Also
7218 removed the critical section.
7219
c4c52ebe
MD
72202002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7221
960c408c
MD
7222 * gc-malloc.c, gc.h (scm_gc_malloc_prehistory): New function.
7223
3cdde9d6 7224 * gc-malloc.c (malloc_mutex): New mutex.
960c408c 7225 (scm_gc_malloc_prehistory): Initialize it.
3cdde9d6
MD
7226 (scm_realloc): Serialize call to realloc
7227 (scm_calloc): Same for calloc.
7228 Thanks to Wolfgang Jaehrling!
7229 (Now we have to make sure all calls to malloc/realloc are made
7230 through scm_malloc.)
7231
960c408c
MD
7232 * init.c (scm_init_guile_1): Call scm_gc_malloc_prehistory.
7233
c4c52ebe
MD
7234 * threads.c (really_launch): Release heap (to prevent deadlock).
7235 (create_thread): Release heap before locking thread admin mutex.
7236
b0dc3d71
MD
72372002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7238
7239 * threads.c (scm_i_thread_invalidate_freelists): New
7240 function.
7241
7242 * gc.c (scm_igc): Call scm_i_thread_invalidate_freelists.
7243
7244 * modules.c (scm_export): Inserted a return statement.
7245
06e80f59
HWN
72462002-12-10 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7247
7248 * modules.c (scm_export): new function
7249
7250 * gc-card.c: add a note about malloc()/free() overhead.
7251
a12611c3
MD
72522002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7253
7254 * Makefile.am (c-tokenize.$(OBJEXT)): Don't look for c-tokenize.c
7255 in srcdir.
7256
c7fabadf
MD
72572002-12-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7258
7259 These changes remove scm_ints_disabled (which hasn't has any
7260 effect in Guile for quite some time).
7261
7262 * async.c, error.h (scm_ints_disabled): Removed.
7263
7264 * gc.c (scm_gc_for_newcell), init.c (scm_init_guile_1),
7265 root.c (scm_internal_cwdr), gdbint.c (SCM_BEGIN_FOREIGN_BLOCK,
7266 SCM_END_FOREIGN_BLOCK): Don't touch scm_ints_disabled.
7267 (old_ints): Removed.
7268
7269 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Define as a recursive
7270 critical section.
7271 (SCM_REDEFER_INTS, SCM_ALLOW_INTS): Define as SCM_DEFER_INTS and
7272 SCM_ALLOW_INTS.
7273
9bc4701c
MD
72742002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7275
52340b65
MD
7276 * threads.c (scm_mutex_lock, scm_cond_wait, scm_cond_timedwait):
7277 Removed accidental #if 0 around these functions.
7278
9bc4701c
MD
7279 These changes are the start of support for preemptive
7280 multithreading. Marius and I have agreed that I commit this code
7281 into the repository although it isn't thoroughly tested and surely
7282 introduces many bugs. The bugs should only be exposed when using
7283 threads, though. Signalling and error handling for threads is
7284 very likely broken. Work on making the implementation cleaner and
7285 more efficient is needed.
7286
7287 * __scm.h (SCM_ALLOW_INTS_ONLY): Removed.
7288 (SCM_NONREC_CRITICAL_SECTION_START,
7289 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
7290 SCM_REC_CRITICAL_SECTION_END): New macros.
7291 (SCM_CRITICAL_SECTION_START/END): Defined here.
7292
7293 * eval.c: Insert SOURCE_SECTION_START / SOURCE_SECTION_END around
7294 the three calls to scm_m_expand_body.
7295
7296 * gc.h: #include "libguile/pthread-threads.h";
7297 (SCM_FREELIST_CREATE, SCM_FREELIST_LOC): New macros.
7298
7299 * gc.c (scm_i_freelist, scm_i_freelist2): Defined to be of type
7300 scm_t_key;
7301
7302 * gc.c, gc-freelist.c, inline.h: Use SCM_FREELIST_LOC for freelist
7303 access.
7304
7305 * gc-freelist.c (scm_gc_init_freelist): Create freelist keys.
7306
7307 * gc-freelist.c, threads.c (really_launch): Use
7308 SCM_FREELIST_CREATE.
7309
7310 * gc-malloc.c (scm_realloc, scm_gc_register_collectable_memory):
7311
7312 * gc.c (scm_i_expensive_validation_check, scm_gc,
7313 scm_gc_for_newcell): Put threads to sleep before doing GC-related
7314 heap administration so that those pieces of code are executed
7315 single-threaded. We might consider rewriting these code sections
7316 in terms of a "call_gc_code_singly_threaded" construct instead of
7317 calling the pair of scm_i_thread_put_to_sleep () and
7318 scm_i_thread_wake_up (). Also, we would want to have as many of
7319 these sections eleminated.
7320
7321 * init.c (scm_init_guile_1): Call scm_threads_prehistory.
7322
7323 * inline.h: #include "libguile/threads.h"
7324
7325 * pthread-threads.h: Macros now conform more closely to the
7326 pthreads interface. Some of them now take a second argument.
7327
7328 * threads.c, threads.h: Many changes.
7329
73302002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7331
7332 * Makefile.am (version.h): Changed $^ --> $< in rule for
7333 version.h.
7334
b2cbe8d8
RB
73352002-12-08 Rob Browning <rlb@defaultvalue.org>
7336
7337 * version.h.in (SCM_MICRO_VERSION): use @--@ substitution now.
7338 (SCM_MINOR_VERSION): use @--@ substitution now.
7339 (SCM_MICRO_VERSION): use @--@ substitution now.
7340 (scm_effective_version): new function prototype.
7341
7342 * version.c (scm_effective_version): new function, also add
7343 effective-version.
7344
7345 * Makefile.am (schemelibdir): VERSION -> GUILE_EFFECTIVE_VERSION.
7346 (libpath.h): use GUILE_EFFECTIVE_VERSION to compute
7347 SCM_LIBRARY_DIR.
7348 (version.h): generate this here rather than configure.in. This
7349 approach tracks source edits better (i.e. more immediately).
7350 Might be worth considering for other .in files too.
7351
5441c65c
MV
73522002-12-02 Marius Vollmer <mvo@zagadka.ping.de>
7353
7354 Reorganized thread package selection. A thread package now only
7355 implements a small set of pthread like functions and Guile
7356 implements the rest on top of that. Guile's implementation is
7357 what the "coop-pthreads" package has been previously. Support for
7358 "coop" threads has been removed until I get time to add it again.
7359
7360 * Makefile.am (libguile_la_SOURCES): Removed iselect.c.
7361 (noinst_HEADERS): Removed coop-threads.c, coop-threads.h, coop.c,
7362 null-threads.c, coop-pthreads.c.
7363 (modinclude_HEADERS): Removed coop-defs.h, coop-pthreads.h. Added
7364 pthread-threads.h.
7365
7366 * validate.h (SCM_VALIDATE_THREAD): Moved to threads.h.
7367
7368 * threads.h: Do not include "libguile/coop-defs.h". Include
7369 "libguile/pthread-threads.h" for USE_COPT_THREADS. Removed
7370 (previously deprecated) C level thread API prototypes. They are
7371 now in the thread package specific headers, "null-threads.h" and
7372 "pthread-threads.h".
7373 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
7374 New.
7375 (scm_threads_init): Removed.
7376 (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END,
7377 SCM_THREAD_SWITCHING_CODE, scm_i_switch_counter,
7378 SCM_I_THREAD_SWITCH_COUNT): Define here.
7379 (scm_single_thread_p): Removed.
7380 (scm_call_with_new_thread): Take two args directly instead of list
7381 of two args.
7382 (scm_i_thread_data, scm_i_set_thread_data, SCM_THREAD_LOCAL_DATA,
7383 SCM_SET_THREAD_LOCAL_DATA): Define here.
7384
7385 * threads.c: Merged with "coop-pthreads.c".
7386
7387 * null-threads.h: Implement pthread-like API as a set of macros.
7388
7389 * pthread-threads.h: New, implement pthread-like API by deferring
7390 to pthread itself.
7391
7392 * init.c (scm_init_guile_1): Do not call scm_init_iselect, which
7393 has been lost in the reorganization.
7394
504d99c5
MD
73952002-12-01 Mikael Djurfeldt <mdj@linnaeus>
7396
7397 The following change makes it possible to move procedure
7398 application dispatch outside inner loops. The motivation was
7399 clean implementation of efficient replacements of R5RS primitives
7400 in SRFI-1.
7401
7402 The semantics is clear: scm_trampoline_N returns an optimized
7403 version of scm_call_N (or NULL if the procedure isn't applicable
7404 on N args).
7405
7406 Applying the optimization to map and for-each increases efficiency
7407 noticeably. For example, (map abs ls) is 8 times faster than
7408 before.
7409
7410 * eval.h (scm_t_trampoline_1, scm_t_trampoline_2): New types.
7411
7412 * eval.c, eval.h (scm_trampoline_1, scm_trampoline_2): New functions.
7413
7414 * eval.c (call_subr2_2, call_lsubr_2, call_closure_2): New functions;
7415 (map, for-each): Handle also application on two args as a special
7416 case; Use trampolines.
7417
7418 Other changes:
7419
7420 * sort.c (scm_cmp_function): Choose subr2less for scm_tc7_subr_2o;
7421 (subr2oless): Removed.
7422 (scm_restricted_vector_sort_x): Use scm_return_first to keep the
7423 vector GC protected.
7424
7425 * eval.c (check_map_args): Use scm_out_of_range_pos instead of
7426 scm_out_of_range.
7427
63dd3413
DH
74282002-11-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
7429
7430 * evalext.[ch] (scm_m_undefine, undefine): Deprecated.
7431
4ba5f279
MD
74322002-11-17 Mikael Djurfeldt <mdj@linnaeus>
7433
7434 * debug.c (scm_make_iloc): Added missing "return".
7435
56ae231f
MV
74362002-11-17 Marius Vollmer <mvo@zagadka.ping.de>
7437
7438 * strports.c (scm_eval_string_in_module): Validate second arg to
7439 be a module. Thanks to Arno Peters!
7440
80b28865
DH
74412002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7442
7443 * .cvsignore: remove goops.c
7444
c88b1456
DH
74452002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7446
7447 * modules.c (scm_env_top_level, scm_lookup_closure_module,
7448 module_variable, scm_module_lookup_closure,
7449 scm_module_transformer, scm_sym2var, scm_module_reverse_lookup,
7450 scm_system_module_env_p): Don't compare SCM values with C
7451 operators == or !=. Avoid SCM_IMP predicates. Prefer !SCM_FALSEP
7452 over SCM_NFALSEP.
7453
a8a19efc
DH
74542002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7455
7456 * eval.h (SCM_MAKE_ILOC): New macro.
7457
7458 * debug.c (scm_make_iloc): Use SCM_MAKE_ILOC instead of computing
7459 the iloc bitpattern here.
7460
76734914
MD
74612002-11-14 Mikael Djurfeldt <mdj@linnaeus>
7462
7463 * coop-pthreads.c, coop-pthreads.h: scm_internal_select should be
7464 part of the API, otherwise it's difficult to write Guile
7465 extensions using non-blocking I/O => moved #include
7466 "libguile/iselect.h" from coop-pthreads.c --> coop-pthreads.h.
7467
7468 * coop-pthreads.c (scm_unlock_mutex): Changed s_lock_mutex -->
7469 s_unlock_mutex.
7470
8b5b4a75
MV
74712002-11-10 Marius Vollmer <mvo@zagadka.ping.de>
7472
7473 * __scm.h (USE_THREADS, GUILE_ISELECT): Do not define here. They
7474 are defined in configure.in.
7475
7476 * threads.c: Removed SCM_API from function definitions. SCM_API
7477 is only for declarations.
7478
e5a83084
MD
74792002-11-07 Mikael Djurfeldt <mdj@linnaeus>
7480
9be8bb45
MD
7481 * coop-pthreads.h: Added support for thread specific data to the
7482 generic C API for the coop-pthreads case.
7483
e5a83084
MD
7484 * threads.c, threads.h (scm_cond_init): Undo unintentional API
7485 change.
6c214b62 7486 (scm_cond_broadcast): Added missing function.
e5a83084 7487
7edf178e
MV
74882002-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7489
7490 * coop.c (coop_next_runnable_thread): Removed, wich should have
7491 happened when GUILE_ISELECT was hard-wired.
7492
7f5b1b77
MV
74932002-11-03 Marius Vollmer <mvo@zagadka.ping.de>
7494
7caa1b07
MV
7495 * Makefile.am (libguile_la_SOURCES): Added threads.c
7496 (DOT_DOC_FILES): Added threads.doc.
7497 (DOT_X_FILES): Added threads.x.
7498 (EXTRA_libguile_la_SOURCES): Removed threads.c.
7499 (noinst_HEADERS): Added coop-pthreads.c.
7500 (modinclude_HEADERS): Added coop-pthreads.h.
7501
7502 * __scm.h (USE_THREADS, GUILE_ISELECT): Define when
7503 SCM_DEBUG_DEPRECATED. Removed their use thru-out Guile.
7504
bb11cbf4
MV
7505 * iselect.c: Include "_scm.h" before testing HAVE_UNISTD_H.
7506 Thanks to Bill Schottstaedt!
7507
1d4cbbed
MV
7508 * numbers.c (scm_integer_expt): Make 0^z == 0 for z != 0.
7509
7f5b1b77
MV
7510 * _scm.h (HAVE_RESTARTABLE_SYSCALLS): Do define even when
7511 SCM_COPT_THREADS is defined.
7512 (SCM_SYSCALL): Use EINTR-expection version when SCM_COPT_THREADS
7513 is defined.
7514
7515 * coop-pthreads.c: Some harmless renamings of internal stuff.
7516 (create_thread): New, generalized version of
7517 scm_call_with_new_thread.
7518 (scm_call_with_new_thread): Use it.
7519 (scm_spawn_thread): New, use create_thread.
7520
d52f53b1
MV
75212002-11-02 Marius Vollmer <mvo@zagadka.ping.de>
7522
7523 * coop-pthreads.c, coop-pthreads.h: Redone completely, you might
7524 start testing it now.
7525
7526 * _scm.h: Include <errno.h< so that SCM_SYSCALL is correctly
7527 defined when HAVE_RESTARTABLE_SYSCALLS is not defined.
7528 (HAVE_RESTARTABLE_SYSCALLS): Do not define when USE_COPT_THREADS
7529 is defined.
7530
30f920c3
MV
75312002-10-27 Marius Vollmer <mvo@zagadka.ping.de>
7532
7533 * scmsigs.c (signal_cell_handlers, install_handler_data,
7534 scm_delq_spine_x, really_install_handler, install_handler): New
7535 scheme for triggering signal handlers, to simplify take_signal.
7536 (take_signal): Simplified, to avoid race conditions.
7537 (scm_sigaction_for_thread): Use new Scheme. Validate that thread
7538 hasn't exited yet.
7539
7540 * async.c (scm_async_click): Reset pending_asyncs, handle
7541 signal_asyncs. Don't set cdr of a non-signal async to #f.
7542 (scm_i_queue_async_cell): Do not check cdr of cell for #f, queue
7543 always. Set pending_asyncs.
7544 (scm_system_async_mark_for_thread): Check that thread has not
7545 exited.
7546 (scm_unmask_signals, decrease_block): Call scm_async_click after
7547 block_asyncs becomes zero.
7548
7549 * __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of
7550 active_asyncs.
7551
7552 * root.h (scm_root_state): Added pending_asyncs and signal_asyncs
7553 fields.
7554 * root.c (root_mark): Mark them.
7555 (make_root): Initialize them.
7556
7557 * iselect.c, iselect.h: Replaced GUILE_ISELECT with
7558 USE_COOP_THREADS.
7559 (scm_internal_select): Define one version for USE_COOP_THREADS and
7560 one for USE_NULL_THREADS.
7561 (scm_init_iselect): Likewise.
7562
7563 * inline.h (scm_cell, scm_double_cell): Also allow
7564 USE_COPT_THREADS to not protect the slot initializers.
7565
7566 * init.c (scm_init_guile_1): Call scm_init_thread_procs. This is
7567 because threads need to be initialized before the stack, but
7568 gsubrs such as scm_timed_condition_variable_wait can only be
7569 created later.
7570
7571 * threads.h: Include "coop-pthreads.h" when requested.
7572 (scm_threads_make_mutex, scm_threads_lock_mutex,
7573 scm_threads_unlock_mutex, scm_threads_monitor): Removed, they were
7574 not implemented anyway.
7575 (scm_init_thread_procs, scm_try_mutex,
7576 scm_timed_condition_variable_wait,
7577 scm_broadcast_condition_variable, scm_c_thread_exited_p,
7578 scm_thread_exited_p): New prototypes.
7579 (struct timespec): Define if not already defined.
7580 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
7581 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
7582 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
7583 scm_cond_broadcast, scm_cond_destroy): Declarations moved here and
7584 deprecated.
7585
7586 * threads.c: Include <errno.h>. Include "coop-pthreads.c" when
7587 requested.
7588 (scm_thread_exited_p): New.
7589 (scm_try_mutex, scm_broadcast_condition_variable): Newly
7590 registered procedures.
7591 (scm_wait_condition_variable, scm_timed_wait_condition_variable):
7592 Use the latter as the procedure for "wait-condition-variable",
7593 thus offering a optional timeout parameter to Scheme.
7594 (scm_wait_condition_variable): Implement in terms of
7595 scm_timed_wait_condition_variable.
7596 (scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
7597 scm_mutex_unlock, scm_mutex_destroy, scm_cond_init,
7598 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
7599 scm_cond_broadcast, scm_cond_destroy): Implement in terms of
7600 scm_make_mutex, etc, and deprecate.
7601 (scm_init_threads): Do not create smobs, leave this to
7602 scm_threads_init. Do not include "threads.x" file.
7603 (scm_init_thread_procs): New, include "threads.x" here.
7604
7605 * null-threads.h (scm_null_mutex, scm_null_mutex_init,
7606 scm_null_mutex_lock, scm_null_mutex_unlock,
7607 scm_null_mutex_destroy, scm_null_condvar, scm_null_condvar_init,
7608 scm_null_condvar_wait, scm_null_condvar_signal,
7609 scm_null_condvar_destroy): Removed.
7610 (scm_mutex_init, scm_mutex_lock, scm_mutex_unlock, scm_cond_init,
7611 scm_cond_wait, scm_cond_signal, scm_cond_broadcast,
7612 scm_cond_destory): Do not define, they are now deprecated and
7613 handled by threads.{h,c}.
7614
7615 * null-threads.c (scm_null_mutex, scm_null_cond): Define here.
7616 (scm_threads_init): Create smobs here, using the appropriate
7617 sizes.
7618 (block): Removed, now unused.
7619 (scm_c_thread_exited_p): New.
7620 (scm_null_mutex_init, scm_null_mutex_lock, scm_null_mutex_unlock,
7621 scm_null_mutex_destroy, scm_null_condvar_init,
7622 scm_null_condvar_wait, scm_null_condvar_signal,
7623 scm_null_condvar_destroy): Removed and updated users to do their
7624 task directly.
7625 (scm_try_mutex, timeval_subtract,
7626 scm_timed_wait_condition_variable,
7627 scm_broadcast_condition_variable): New.
7628 (scm_wait_condition_variable): Removed.
7629
7630 * coop-defs.h (coop_m): Added 'level' field.
7631 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
7632 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
7633 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
7634 scm_cond_broadcast, scm_cond_destroy, struct timespec): Do not
7635 define.
7636 (coop_condition_variable_broadcast): New.
7637
7638 * coop-threads.c (scm_threads_init): Create smobs here, using the
7639 appropriate sizes.
7640 (scm_c_thread_exited_p, scm_try_mutex,
7641 scm_timed_wait_condition_variable,
7642 scm_broadcast_condition_variable): New.
7643 (scm_wait_condition_variable): Removed.
7644
7645 * coop.c (coop_new_mutex_init): Initialize level.
7646 (coop_mutex_trylock, coop_mutex_lock, coop_mutex_unlock): maintain
7647 level.
7648 (coop_condition_variable_signal): Renamed to
7649 coop_condition_variable_broadcast and reimplemented in terms of
7650 that. Thus...
7651 (coop_condition_variable_broadcast): New.
7652
7653 * goops.c (hell_mutex): Reimplemented using scm_make_mutex, etc.
7654
7655 * coop-pthreads.h, coop-pthreads.c: New, but unfinished.
7656
087ed40d
MV
76572002-10-21 Marius Vollmer <mvo@zagadka.ping.de>
7658
65a23095
MV
7659 * null-threads.c: Include <time.h>. Also, use <...> for inclusion
7660 of system headers.
7661
087ed40d
MV
7662 * async.c, goops.h, modules.h, validate.h (SCM_MAKE_VALIDATE_MSG):
7663 New. Use it instead of SCM_MAKE_VALIDATE in lots of places to
30f920c3 7664 give better error messages. Thanks to Bill Schottstaedt!
087ed40d 7665
5ec1d2c8
DH
76662002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
7667
7668 * evalext.h, evalext.c (scm_definedp, scm_defined_p): Renamed
7669 scm_definedp to scm_defined_p and deprecated scm_definedp.
7670
100ae50d
DH
76712002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
7672
7673 * async.h, async.c (scm_system_async): Fixed deprecation to work
7674 correctly when deprecated features are excluded.
7675
2794cb50
MV
76762002-10-16 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7677
7678 * async.c (scm_system_async_mark_for_thread): Validate thread
7679 argument.
7680
7681 * coop-threads.c (scm_i_thread_root): Do not validate argument.
7682
7683 * feature.c (scm_init_feature): Don't add 'threads' for
7684 USE_NULL_THREADS.
7685
7686 * inline.h (scm_cell, scm_double_cell): Also allow
7687 USE_NULL_THREADS to not protect the slot initializers.
7688
7689 * scmsigs.c (scm_sigaction_for_thread): It's "USE_THREADS" not
7690 "USE_THREAD".
7691
7692 * Makefile.am (noinst_HEADERS): Added null-threads.c.
7693 (modinclude_HEADERS): Added null-threads.h.
7694
7695 * threads.h: Include null-threads.h when !USE_COOP_THREADS.
7696 * threads.c: Include null-threads.c when !USE_COOP_THREADS.
7697 (scm_init_threads): Use generic type names scm_t_mutex and
7698 scm_t_cond instead of coop_m and coop_c.
7699
7700 * null-threads.c, null-threads.h: New files.
7701
ff810d7a
MV
77022002-10-15 Marius Vollmer <mvo@zagadka.ping.de>
7703
7704 * Makefile.am: Replaced "$<" in non-pattern rules with its value.
7705 This is to support makes that know about "$<" only in pattern
7706 rules, like Sun's make.
7707
a90bdb73
MV
77082002-10-13 Marius Vollmer <mvo@zagadka.ping.de>
7709
7710 * Makefile.am (libpath.h): Fixed typo in top_srcdir_absolute
7711 substitution. Thanks to David Allouche!
7712
e71a8bf2
DH
77132002-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
7714
7715 * evalext.h: Replaced SCM_DEBUG_DEPRECATED with
7716 !SCM_ENABLE_DEPRECATED.
7717
41f77ff5
MV
77182002-10-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7719
504d99c5 7720 * async.c (scm_system_async_mark_for_thread): Only call
41f77ff5
MV
7721 scm_i_thread_root when USE_THREADS is defined. Use scm_root
7722 otherwise.
7723
7724 * scmsigs.c (take_signal): Only call scm_i_thread_root when
7725 USE_THREADS is defined. Use scm_root otherwise.
7726 (scm_sigaction_for_thread): Ignore THREAD argument when
7727 USE_THREADS is not defined. Also, move THREAD argument defaulting
7728 out of HAVE_SIGACTION section, which was a bug.
7729
6d16b125
MV
77302002-10-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7731
7732 * scmsigs.c (scm_sigaction_for_thread): Store original handler in
7733 signal_handlers, not the closure that is used as the async.
7734 The closure is stored in signal_handler_cells, as previously.
7735
acfa1f52
MV
77362002-10-10 Marius Vollmer <mvo@zagadka.ping.de>
7737
7738 * root.h (scm_root_state): Added 'block_async' slot.
7739 (scm_active_asyncs): Removed abbrev.
7740 * root.c (scm_make_root): Initialize 'block_asyncs' slot.
7741
7742 * __scm.h (SCM_ASYNC_TICK): Do without the scm_active_asyncs
7743 abbrev.
7744
7745 * async.h (scm_call_with_blocked_asyncs,
7746 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
7747 scm_c_call_with_unblocked_asyncs): New prototypes.
7748 (scm_mask_signals, scm_unmask_signals): Deprecated.
7749 (scm_mask_ints): Turned into a macro.
7750 * async.c (scm_mask_ints): Removed.
7751 (scm_run_asyncs): Do not set scm_mask_ints while running an async.
7752 this should not be necessary.
7753 (scm_async_click): Test block_asyncs instead of scm_mask_ints.
7754 (scm_mask_signals, scm_unmask_signals): Deprecated. Emit
7755 deprecation warning and check for errornous use. Set block_asyncs
7756 instead of scm_mask_ints.
7757 (increase_block, decrease_block, scm_call_with_blocked_asyncs,
7758 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
7759 scm_c_call_with_unblocked_asyncs): New.
7760
7761 * script.c (scm_compile_shell_switches): Do not set scm_mask_ints.
7762 Asyncs are enabled by default.
7763
34010f56
NJ
77642002-10-09 Neil Jerram <neil@ossau.uklinux.net>
7765
7766 * vports.c (scm_make_soft_port): Allow vector argument to carry a
7767 6th element: an input waiting thunk.
7768 (sf_input_waiting): New.
7769
9310d6f2
MV
77702002-10-05 Marius Vollmer <mvo@zagadka.ping.de>
7771
7772 * root.c (root_mark): Mark active_asyncs slot.
7773
7774 * async.c (scm_async_click): Set the cdr of a executed handler
7775 cell to SCM_BOOL_F, not SCM_EOL.
7776 (scm_i_queue_async_cell): Queue the cell at the end of the list,
7777 and only if the handler procedure is not already present.
7778 (scm_system_async_mark_for_thread): Initialize cdr of handler cell
7779 with SCM_BOOL_F.
7780 * scmsigs.c (scm_sigaction_for_thread): Likewise.
7781
ac48c719
RB
77822002-10-04 Rob Browning <rlb@defaultvalue.org>
7783
1360a142
RB
7784 * guile.c (main): switch to scm_lt_dlset_preloaded_symbols;
7785
7786 * dynl.c (sysdep_dynl_link): switch to scm_lt_dlhandle,
7787 scm_lt_dlopenext, and scm_lt_dlerror.
7788 (sysdep_dynl_unlink): switch to scm_lt_dlhandle, scm_lt_dlclose,
7789 and scm_lt_dlerror.
7790 (sysdep_dynl_func): switch to scm_lt_dlhandle, scm_lt_dlsym,
7791 and scm_lt_dlerror.
7792 (sysdep_dynl_init): switch to scm_lt_dlinit();
7793
7794 * Makefile.am (libguile_la_LIBADD): switch to use
7795 libguile-ltdl.la.
7796
504d99c5 7797 * numbers.c (scm_integer_expt): (expt 0 1) should be 1.
ac48c719 7798
497092c9
MV
77992002-10-04 Marius Vollmer <mvo@zagadka.ping.de>
7800
7801 * scmsigs.h (scm_sigaction_for_thread): New prototype.
7802 * scmsigs.c (got_signal): Removed.
7803 (signal_handler_cells, signal_handler_threads): New.
7804 (take_signal): Queue the cell of the signal for the specified
7805 thread. Reset the signal handler on systems that don't have
7806 sigaction.
7807 (sys_deliver_signals): Removed.
7808 (close_1): New.
7809 (scm_sigaction_for_thread): Renamed from scm_sigaction and
7810 extended to also set the thread of a signal and allocate a cell
7811 for it. Keep the Scheme name "sigaction". Check that signum is
7812 within range. Also, use SCM_VECTOR_REF instead of SCM_VELTS.
7813 (scm_sigaction): Implement in terms of scm_sigaction_for_thread.
7814 (scm_init_scmsigs): Allocate signal_handler_cells and
7815 signal_handler_threads vectors.
7816
7817 * async.c: Removed GUILE_OLD_ASYNC_CLICK code. Reorganized so
7818 that system asnycs and user asyncs are separated. Reimplemented
7819 system asyncs to work per-thread.
7820
7821 * gc.c (scm_init_gc): Do not use scm_system_async.
7822
7823 * async.h (scm_asyncs_pending, scm_set_tick_rate,
7824 scm_set_switch_rate, scm_system_async_mark_from_signal_handler):
7825 Removed prototypes.
7826 (scm_i_queue_async_cell): New.
7827
7828 * __scm.h (scm_asyncs_pending_p): Removed.
7829 (SCM_ASYNC_CLICK): Check scm_active_asyncs instead of
7830 scm_asyncs_pending_p.
7831
7832 * async.h (scm_system_async_mark_for_thread): New prototype.
7833
7834 * __scm.h: Removed GUILE_OLD_ASYNC_CLICK code.
7835
7836 * root.h (scm_root_state): Added new "active_asyncs" slot.
7837 * root.c (scm_make_root): Initialize it to SCM_EOL.
7838
7839 * coop-defs.h (coop_t): Added new "handle" slot.
7840 * coop-threads.c (all_threads, scm_current_thread,
7841 scm_all_threads, scm_i_thread_root): New.
7842 (scm_threads_init): Add main thread to all_threads.
7843 (scheme_launch_thread): Remove thread from all_threads when it
7844 terminates.
7845 (scm_call_with_new_thread): Initialize handle slot of coop_t
7846 structure and add new thread to all_threads.
7847 (scm_spawn_thread): Likewise.
7848
7849 * threads.h (scm_current_thread, scm_all_threads): New prototypes.
7850 * threads.c (scm_current_thread, scm_all_threads): Register as
7851 primitives.
7852
7853 * dynl.c: Use scm_lt_ prefix for libltdl functions.
7854
480fa28d
NJ
78552002-09-29 Neil Jerram <neil@ossau.uklinux.net>
7856
7857 * script.c (scm_compile_shell_switches): Fix bad spelling of
7858 `explicitly' in comment.
7859
78602002-09-28 Neil Jerram <neil@ossau.uklinux.net>
7861
7862 * posix.c (scm_geteuid, scm_getegid, scm_seteuid, scm_setegid):
7863 Refer to provided? in doc string rather than deprecated feature?.
7864
3553e1d1
GH
78652002-09-24 Gary Houston <ghouston@arglist.com>
7866
7867 * inline.h (scm_double_cell): prevent reordering of statements
7868 with any following code (for GCC 3 strict-aliasing).
7869 * numbers.c (scm_make_real), num2float.i.c (FLOAT2NUM): removed
7870 the earlier version of the reordering prevention.
7871
4ad0814a
HWN
78722002-09-19 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7873
7874 * inline.h (scm_double_cell): move SET_GCMARK set out of if body.
7875
e88e4f2e
HWN
78762002-09-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7877
7878 * gc-malloc.c (scm_gc_register_collectable_memory): more overflow
7879 protection.
7880
1e71eafb
HWN
78812002-09-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7882
7883 * inline.h: include stdio.h
7884
7885 * smob.c (free_print): abort if scm_debug_cell_accesses_p is set
7886
61ef9c1f
HWN
78872002-09-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7888
dac04e9f
HWN
7889 * gc-segment.c (scm_i_make_initial_segment): check user settings
7890 for sanity.
7891
7892 * gc-malloc.c (scm_gc_init_malloc): check user settings for
7893 sanity.
dac04e9f
HWN
7894
7895 * gc-freelist.c (scm_init_freelist): check user settings for sanity.
7896
ffd72400
HWN
7897 * struct.h: change scm_structs_to_free to scm_i_structs_to_free
7898
7899 * gc-malloc.c (scm_gc_register_collectable_memory): use floats;
1e71eafb
HWN
7900 these won't ever wrap around with high memory usage. Thanks to
7901 Sven Hartrumpf for finding this.
ffd72400 7902
5bd4a949
HWN
7903 * gc-freelist.c: include <stdio.h>
7904
61ef9c1f
HWN
7905 * gc-malloc.c: add DEBUGINFO for mtrigger GCs.
7906
ffd0ef3b
MV
79072002-09-01 Marius Vollmer <mvo@zagadka.ping.de>
7908
a27e3d14
MV
7909 * vectors.h (SCM_VECTOR_REF): New.
7910
ffd0ef3b
MV
7911 * snarf.h (SCM_DEFINE_PUBLIC): New.
7912
f8a1712b
MV
79132002-08-30 Marius Vollmer <mvo@zagadka.ping.de>
7914
7915 * socket.c (scm_addr_vector): Added size of address to arguments.
7916 Use it to avoid accessing a non-existent path in a sockaddr_un.
7917 Changed all callers.
7918
7200a36b
HWN
79192002-08-29 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7920
1383773b
HWN
7921 * gc.h: remove DOUBLECELL card flags.
7922
7923 * gc-malloc.c (scm_calloc): try to use calloc() before calling
7924 scm_realloc().
7925
7926 * gc-segment.c (scm_i_initialize_heap_segment_data): remove card
7927 init loop; handle this from scm_init_card_freelist()
7928
7929 * gc-card.c (scm_init_card_freelist): init bit vector here.
7930
7200a36b 7931 * numbers.c (scm_make_real): prevent reordering of statements
8fa5786d 7932 num2float.i.c (FLOAT2NUM): idem
7200a36b 7933
9981de3a
HWN
79342002-08-27 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7935
7936 * eval.h: prepend libguile/ to include path
7937
19647556
MV
79382002-08-26 Marius Vollmer <mvo@zagadka.ping.de>
7939
7940 * script.c (scm_compile_shell_switches): Added "2002" to Copyright
9a5fa6e9 7941 years. Thanks to Martin Grabmüller!
19647556 7942
38d1262a
HWN
79432002-08-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7944
7945 * gc-segment.c (scm_i_get_new_heap_segment): use float in stead of
7946 unsigned numbers for computing minimum heap increment. This
7947 prevents weird results when a a negative minimum increment is
7948 computed.
7949
f800ebfb
MV
79502002-08-24 Marius Vollmer <mvo@zagadka.ping.de>
7951
7952 * gc_os_dep.c: When we have __libc_stack_end, use that directly
19647556 7953 instead of the old tricks.
f800ebfb
MV
7954
7955 * guile-snarf.in: Do not expect the input file to be the first
7956 argument after the optional "-o" option, just pass everything to
7957 the pre-processor without extracting the input file name.
7958
4a5309c9
HWN
79592002-08-23 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7960
7961 * gc-segment.c (scm_i_get_new_heap_segment): Oops. We want segment
7962 length *at* least SCM_MIN_HEAP_SEG_SIZE, not at most.
7963
f2893a25
HWN
79642002-08-22 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7965
7966 * gc.h, gc.c: make scm_cells_allocated unsigned again. Thanks to
7967 Bill Schottstaedt for the bug report
7968
483f518b
MV
79692002-08-20 Marius Vollmer <mvo@zagadka.ping.de>
7970
7971 * print.c (scm_iprin1): Print primitives generics always as
7972 "primitive-generic" even when they have no primitive methods yet.
7973
917adc55
GH
79742002-08-17 Gary Houston <ghouston@arglist.com>
7975
7976 * coop.c (coop_create): removed bogus 2nd argument in scm_malloc
7977 call.
7978
67329a9e
HWN
79792002-08-17 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7980
85835e59 7981 * ports.c (scm_add_to_port_table): small bugfix.
67329a9e
HWN
7982
7983 * mallocs.c (scm_malloc_obj): use scm_gc_malloc in stead of
7984 malloc.
7985
7986 * gc-segment.c (scm_i_get_new_heap_segment): remove cluster cruft:
7987 only use SCM_MIN_HEAP_SEG_SIZE.
7988
7989 * ports.c (scm_add_to_port_table): add backwards compatibility
7990 function
7991
7992 * ports.h: use scm_i_ prefix for port table and port table size.
7993
f07c886a
MD
79942002-08-15 Mikael Djurfeldt <mdj@linnaeus>
7995
7996 * vports.c (scm_make_soft_port): Initialize pt variable.
7997
dc61cbc6
MV
79982002-08-13 Marius Vollmer <mvo@zagadka.ping.de>
7999
8000 * strports.h (scm_c_eval_string_in_module,
8001 scm_eval_string_in_module): New prototypes.
8002 * strports.c (scm_eval_string_in_module): New, but use
8003 "eval-string" as the Scheme name and make second parameter
8004 optional.
8005 (scm_eval_string): Implement using scm_eval_string_in_module.
8006 (scm_c_eval_string_in_module): New.
8007 Thanks to Ralf Mattes for the suggestion!
8008
da220f27
HWN
80092002-08-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8010
be3ff021
HWN
8011 * gc-card.c ("sweep_card"): remove SCM_MISC_ERROR messages: print
8012 message and abort.
8013
8014 * gc-mark.c ("scm_gc_mark_dependencies"): idem.
8015
da220f27
HWN
8016 * ports.c ("scm_new_port_table_entry"): return a boxed SCM in
8017 stead of scm_t_port*. The function now takes a tag argument.
8018
eab1b259
HWN
80192002-08-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8020
8021 * gc.h: add scm_debug_cells_gc_interval to public interface
8022
8023 * gc-card.c ("sweep_card"): set scm_gc_running while sweeping.
8024
8025 * gc.c (scm_i_expensive_validation_check): separate expensive
8026 validation checks from cheap ones.
8027
ba1b2226
HWN
80282002-08-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8029
8030 * read.c (scm_input_error): new function: give meaningful error
8031 messages, and throw read-error
8032
8033 * gc-malloc.c (scm_calloc): add scm_calloc.
8034
39e8f371
HWN
80352002-08-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8036
33138b05
HWN
8037 * tags.h: remove GC bits documentation from the tags table.
8038
39e8f371
HWN
8039 * read.c (INPUT_ERROR): Prepare for file:line:column error
8040 messages for errors in scm_lreadr() and friends.
8041
80422002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8043
8044 * gc-malloc.c (scm_malloc): use scm_realloc() (simplifies
8045 implementation).
8046 (scm_gc_calloc): new function
8047
26e68795 80482002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
402788a9 8049
5f16b897
HWN
8050 * ports.c (scm_new_port_table_entry): init port entry to 0
8051 completely.
402788a9
HWN
8052
8053 * ports.c (scm_new_port_table_entry): change function from
8054 scm_add_to_port_table. This prevents cells with null-pointers from
8055 being exposed to GC.
8056
504d99c5 8057 * vports.c (scm_make_soft_port) strports.c (scm_mkstrport),
402788a9 8058 fports.c (scm_fdes_to_port): Use scm_new_port_table_entry().
c8a1bdc4 8059
504d99c5 8060 * gc.c (scm_gc_stats): add cell-yield and malloc-yield statistic
c2cbcc57
HWN
8061 to gc-stats.
8062
c8a1bdc4
HWN
8063 * numbers.c (big2str): return "0" for 0 iso. ""
8064
c2cbcc57
HWN
8065 * gc-segment.c, gc-malloc.c gc-mark.c, gc-freelist.c, gc-card.c,
8066 private-gc.h: new file
c8a1bdc4
HWN
8067
8068 * gc.c: completely revised and cleaned up the GC. It now uses lazy
8069 sweeping. More documentation in workbook/newgc.text
8070
aea06b34
MV
80712002-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8072
8073 * random.c (rstate_free): Return zero.
8074
35060ae9
DH
80752002-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8076
8077 * environments.c (remove_key_from_alist): Removed.
8078
8079 (obarray_remove): Simplified.
8080
6a535440
SJ
80812002-07-24 Stefan Jahn <stefan@lkcc.org>
8082
8083 * continuations.h: ia64: Include <signal.h> before
8084 <sys/ucontext.h>.
8085
bcbd25b7
DH
80862002-07-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
8087
8088 * modules.c (scm_sym2var): Don't compare SCM values with ==.
8089
26e68795 80902002-07-21 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1d1559ce
HWN
8091
8092 * goops.c (scm_compute_applicable_methods): use
8093 scm_remember_upto_here_1 iso scm_remember_upto_here
8094
8095 * macros.c: include deprecation.h
8096
504d99c5 8097 * vectors.c (scm_vector_move_right_x): remove side effect in
1d1559ce 8098 macro arg.
504d99c5 8099 (scm_vector_move_left_x): idem.
1d1559ce
HWN
8100
8101 * net_db.c, posix.c, socket.c: variable naming: change ans to
8102 result.
8103
8104 * sort.c (scm_merge_vector_x): accept vector as argument
8105 iso. SCM*. This is needed for full GC correctness.
8106
8107 * gc.h: undo previous undocumented changes related to #ifdef
8108 GENGC.
8109
26e68795 81102002-07-20 Han-Wen Nienhuys <hanwen@cs.uu.nl>
34d19ef6
HWN
8111
8112 * *.c: add space after commas everywhere.
8113
8114 * *.c: use SCM_VECTOR_SET everywhere, where a vector is written.
8115 Document cases where SCM_WRITABLE_VELTS() is used.
8116
8117 * vectors.h (SCM_VELTS): prepare for write barrier, and let
8118 SCM_VELTS() return a const pointer
8119 (SCM_VECTOR_SET): add macro.
8120
3063e30a
DH
81212002-07-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
8122
8123 * eval.c (SCM_CEVAL), macros.c (macro_print, scm_makmacro,
8124 scm_sym_macro, scm_macro_type), macros.h (scm_makmacro):
8125 Deprecated the special kind of built-in dynamic syntax transformer
8126 that was inaccurately named "macro". Note: The built-in syntax
8127 transformers that are named "mmacro" or "memoizing-macro" still
8128 exist, and it is these which come much closer to what one would
8129 call a macro.
8130
4c5f8e8f
NJ
81312002-07-13 Neil Jerram <neil@ossau.uklinux.net>
8132
8133 * eval.c (unmemocopy): Fix for
8134 1001-local-eval-error-backtrace-segfaults (unmemoization crash
8135 with internal definitions and local-eval).
8136
4f6f9ae3
GH
81372002-07-12 Gary Houston <ghouston@arglist.com>
8138
8139 * dynl.c: Don't define stub procedures if DYNAMIC_LINKING is not
8140 defined. They don't do anything useful, especially since the
8141 only case where DYNAMIC_LINKING is undefined seems to be
8142 when --with-modules=no is given to configure, which is basically
8143 requesting that the "dynamic linking module" be omitted.
8144
8145 * Makefile.am (libguile_la_SOURCES): move dynl.c from
8146 libguile_la_SOURCES to EXTRA_libguile_la_SOURCES.
8147
8148 * extensions.c (load_extension): check DYNAMIC_LINKING for
8149 scm_dynamic_call.
8150 * init.c (scm_init_guile_1): check DYNAMIC_LINKING for
8151 scm_init_dynamic_linking.
8152
c21935e6
MV
81532002-07-10 Marius Vollmer <mvo@zagadka.ping.de>
8154
8155 * guile.c, iselect.h, net_db.c, posix.c, socket.c: No need to
8156 check for Cygwin when including <winsock2.h>, this is already
8157 check for by configure. Thus, revert change from 2002-07-07.
8158
ee95d597
GH
81592002-07-10 Gary Houston <ghouston@arglist.com>
8160
9540b68f 8161 * eq.c: include <string.h>
ee95d597
GH
8162 * dynl.c: docstring editing.
8163
46732b54
GH
81642002-07-09 Gary Houston <ghouston@arglist.com>
8165
8166 * dynl.c (scm_dynamic_call): docstring editing.
8167
c09d12e0
RB
81682002-07-08 Rob Browning <rlb@defaultvalue.org>
8169
8170 * gc_os_dep.c: HURD fixes.
8171
3f6571eb
MV
81722002-07-07 Marius Vollmer <mvo@zagadka.ping.de>
8173
8174 Crosscompiling and Cygwin fixes by Jan Nieuwenhuizen. Thanks!
8175
8176 * Makefile.am: Override default rule for c-tokenize.$(OBJECT);
8177 this should be compiled for BUILD host.
8178 Override default rule for
8179 guile_filter_doc_snarfage$(EEXECT); this should run on BUILD host.
8180 Add missing $(EXEEXT) to guile_filter_doc_snarfage invocation.
8181 (snarf2checkedtexi): Use GUILE_FOR_BUILD instead of preinstguile.
8182
8183 * guile.c, iselect.h, net_db.c, posix.c, socket.c: Do not include
8184 <winsock2.h> on Cygwin even when we have it.
8185
bd987b8e
DH
81862002-07-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
8187
8188 * __scm.h (SCM_CAUTIOUS), eval.c (scm_eval_args, deval_args,
8189 SCM_CEVAL): Removed compile time option SCM_CAUTIOUS to clean up
8190 the code. Full number of arguments checking of closures is
8191 mandatory now. However, the option to disable the checking has
8192 most probably not been used anyway.
8193
8505e285
DH
81942002-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
8195
bd987b8e
DH
8196 * __scm.h (SCM_RECKLESS), backtrace.c (SCM_ASSERT), debug.c
8197 (scm_debug_options), eval.c (scm_lookupcar, scm_lookupcar1,
8198 scm_badargsp, SCM_CEVAL, SCM_APPLY, scm_map, scm_for_each),
8199 feature.c (scm_init_feature), gsubr.c (scm_gsubr_apply), numbers.c
8200 (scm_logand, scm_logior, scm_logxor, scm_i_dbl2big), srcprop.c
8201 (scm_source_properties, scm_set_source_properties_x,
8202 scm_source_property): Removed compile time option SCM_RECKLESS to
8203 clean up the code. Full number of arguments checking of closures
8204 is mandatory now. However, the option to disable the checking has
8205 most probably not been used anyway.
8505e285
DH
8206
8207 * srcprop.c (scm_source_properties, scm_set_source_properties_x,
8208 scm_source_property): Use !SCM_CONSP instead of SCM_NCONSP.
8209
2ee08a28
GH
82102002-06-30 Gary Houston <ghouston@arglist.com>
8211
732b9327
GH
8212 * dynl.c: Removed all SCM_DEFER_INTS/SCM_ALLOW_INTS, which won't
8213 do anything useful. Added a comment about need for a mutex if
8214 pre-emptive threading is supported.
8215
2ee08a28
GH
8216 * posix.c (scm_convert_exec_args), dynl.c
8217 (scm_make_argv_from_stringlist): static procs: 1) renamed both to
8218 allocate_string_pointers. 2) simplified: don't reallocate the
8219 strings, just make an array of pointers 3) avoid memory leaks on
8220 error 4) let the procedure report errors in its own name.
8221 Consequences: 1) the procedures now assume that SCM strings are
8222 nul-terminated, which should always be the case. 2) Since strings
8223 are not reallocated, it's now possible for strings passed to
8224 dynamic-args-call to be mutated.
8225
c136c920
DH
82262002-06-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
8227
8228 * __scm.h, eval.c, eval.h: Removed compile time option
8229 MEMOIZE_LOCALS to clean up the code. Now, caching of local
8230 variable positions during memoization is mandatory. However, the
8231 option to disable the caching has most probably not been used
8232 anyway.
8233
e540802f
MV
82342002-06-18 Marius Vollmer <mvo@zagadka.ping.de>
8235
8236 * print.c (scm_simple_format): Print missing part of format before
8237 ~% control. Thanks to Daniel Skarda!
8238
4c1ffcdd
MV
82392002-06-01 Marius Vollmer <mvo@zagadka.ping.de>
8240
8241 * mkstemp.c: Added exception notice to license statement.
8242
ba1b077b
MV
82432002-05-22 Marius Vollmer <mvo@zagadka.ping.de>
8244
8dc434c7
MV
8245 * numbers.c (mem2ureal): When returning an inexact zero, make sure
8246 it is represented as a floating point value so that we can change
8247 its sign.
8248
ba1b077b
MV
8249 From John W. Eaton <jwe@bevo.che.wisc.edu>
8250
8251 * numbers.c (idbl2str): Don't omit sign when printing negative zero.
8252
74c58131
TTN
82532002-05-14 Thien-Thi Nguyen <ttn@giblet.glug.org>
8254
8255 * gc_os_dep.c: For I386/OPENBSD, allow for `__i386__'
0926d46e 8256 in addition to `i386'. Thanks to Dale P. Smith.
74c58131 8257
8766d4b5
MV
82582002-05-08 Marius Vollmer <mvo@zagadka.ping.de>
8259
8260 * eq.c (real_eqv): New.
8261 (scm_eqv_p): Use it when comparing reals and complexes.
8262
8263 * numbers.c: Include <string.h>, for strncmp.
8264 (mem2complex): Do not create negative NaNs.
8265 (scm_leq_p, scm_geq_p): Explicitely return #f when comparing a
8266 NaN.
8267 (scm_inexact_to_exact): Signal error when converting a NaN.
74c58131 8268
1d8c3cad
MV
82692002-05-06 Marius Vollmer <mvo@zagadka.ping.de>
8270
8271 * posix.c (scm_putenv): Handle removing variables explicitely by
8272 calling unsetenv.
8273
8274 From John W. Eaton.
74c58131 8275
1d8c3cad
MV
8276 * numbers.h: Conditionally include floatingpoint.h, ieeefp.h, and
8277 nan.h. Provide declarations for scm_inf_p, scm_nan_p, scn_inf,
8278 and scm_nan.
8279 * numbers.c: [SCO && ! HAVE_ISNAN] (isnan): New function.
8280 [SCO && ! HAVE_ISINF] (isinf): New function.
8281 (xisinf, xisnan): New functions.
8282 (IS_INF): Delete.
8283 (isfinite): Define in terms of xisinf.
8284 (scm_inf_p, scm_nan_p): New functions.
8285 (guile_Inf, guile_NaN): New file-scope vars.
8286 (guile_ieee_init): New function.
8287 (scm_inf, scm_nan): New functions.
8288 (idbl2str): Handle Inf and NaN. Remove funny label and
8289 corresponding gotos.
8290 (ALLOW_DIVIDE_BY_ZERO): New macro.
8291 (scm_divide): Allow division by zero to occur if
8292 ALLOW_DIVIDE_BY_ZERO is defined.
8293 Handle bignums and ints as special cases.
8294
8295 Additional stuff by me:
8296
8297 numbers.c (mem2ureal): Recognize "inf.0" and "nan.xxx".
8298 (scm_even_p, scm_odd_p): Treat infinity as even and odd.
8299 (iflo2str): Don't output a '+' for negative numbers or for Inf and
8300 NaN. They will provide their own sign.
8301 (scm_divide): Only allow divides by inexact zeros. Dividing by
8302 exact zeros still signals an errors.
74c58131 8303
7a0c65eb
TTN
83042002-04-22 Thien-Thi Nguyen <ttn@giblet.glug.org>
8305
87b72063 8306 * goops.h (scm_slot_exists_p): Rename from scm_slots_exists_p.
7a0c65eb 8307 * goops.c (scm_slot_exists_p): Rename from scm_slots_exists_p.
504d99c5 8308 (scm_slot_exists_p): Rename from scm_slots_exists_p.
7a0c65eb
TTN
8309 Thanks to Andreas Rottmann.
8310
5e423a39
GH
83112002-04-20 Gary Houston <ghouston@arglist.com>
8312
8313 * removal of unused fields in root state (thanks to Christopher
8314 Cramer for pointing out the disuse.)
8315 * root.h (scm_root_state): removed def_inp, def_outp, def_errp.
1841c44a 8316 (scm_def_inp, scm_def_outp, scm_def_errp): removed.
b6287a25 8317
5e423a39
GH
8318 * root.c (root_mark): don't mark them.
8319 (scm_make_root): don't set them to #f.
8320 * init.c (scm_init_standard_ports): don't initialise with the
8321 default ports.
8322
9d2cce76
MV
83232002-04-17 Marius Vollmer <mvo@zagadka.ping.de>
8324
8325 * Makefile.am (EXTRA_DIST): Added cpp_err_symbols.c and
8326 cpp_sig_symbols.c.
8327
83282002-04-16 Marius Vollmer <mvo@zagadka.ping.de>
8329
8330 * guile-snarf.in: Do not clean input file. This would write to
8331 the $(srcdir) during a VPATH build, which is not allowed. It also
8332 isn't needed since it only works when an output filename has been
8333 specified and in that case we don't need to clean the input file
8334 because the output file will already exist.
8335
6f79b6cc
MV
83362002-03-31 Marius Vollmer <mvo@zagadka.ping.de>
8337
8338 * guile-snarf: Install the trap for removing $cleanfile only when
8339 the value of $cleanfile is actually known.
8340
21550b10
RB
83412002-04-10 Rob Browning <rlb@defaultvalue.org>
8342
8343 * .cvsignore: add versiondat.h and *.c.clean.c.
8344
bc76d628
DH
83452002-03-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
8346
8347 * srcprop.[ch] (scm_c_source_property_breakpoint_p): New
8348 function, replaces macro SRCBRKP.
8349
8350 (SRCBRKP): Deprecated.
8351
8352 * eval.c (SCM_CEVAL): Replaced use of SRCBRKP by call to
8353 scm_c_source_property_breakpoint_p. Removed some use of arg1 as
8354 temporary variable.
8355
5132eef0
DH
83562002-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
8357
8358 * debug.h, eval.c: Deprecated CHECK_ENTRY, CHECK_APPLY and
8359 CHECK_EXIT and removed all references to them.
8360
680516ba
DH
83612002-03-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8362
8363 * debug.h (scm_ready_p, debug_print): Removed declarations.
8364
8365 * eval.c (EVALCELLCAR): Removed.
8366
8367 (SCM_CEVAL): Eliminated label loopnoap. Removed side-effecting
8368 operation from condition.
8369
e2bd68e0
MV
83702002-03-24 Marius Vollmer <mvo@zagadka.ping.de>
8371
8372 * guile-snarf.in: When the output filename is "-", write to
8373 stdout. When no "-o" option is given, use "-" as the output
8374 filename (i.e., stdout). Only 'clean' the inputfile or remove the
8375 output file on error when the output file name is not "-". Define
8376 the preprocessor macro SCM_MAGIC_SNARFER while snarfing.
8377
8378 * Makefile.am (.c.x): Pass "-o $@" to guile-snarf.
8379
ab1f1094
DH
83802002-03-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
8381
8382 * eval.c (SCM_CEVAL, SCM_APPLY): Eliminated labels wrongnumargs
8383 and the corresponding goto statements. Removed redundant code.
8384
42030fb2
DH
83852002-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
8386
8387 * eval.c (SCM_CEVAL): Minimized scope of variable arg2.
8388 Eliminated redundant SCM_IMP check. Exlined call to EVALCAR.
8389 Re-enabled handing of rpsubrs and asubrs.
8390
e050d4f8
DH
83912002-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
8392
8393 * eval.c (SIDEVAL): Removed.
8394
8395 (SCM_CEVAL): Minimized scope of variable orig_sym. Eliminated
8396 goto-labels cdrxnoap, cdrxbegin and nontoplevel_cdrxnoap. Changed
8397 argument checking order for set! to locals, variables and symbols.
8398 Improvements to control structure. Removed some uses of arg1 and
8399 arg2 as temporary variables.
8400
a6d344d3
TTN
84012002-03-15 Thien-Thi Nguyen <ttn@giblet.glug.org>
8402
8403 * guile-snarf.in: Remove "--compat=1.4" support.
8404 Add "-d" and "-D" support.
8405
8406 (deprecated_list): New var.
8407 (compat_mode_clean_xxx): Delete.
8408 (grep_deprecated): New func.
8409 ("main"): If "-d" or "-D", call `grep_deprecated'.
8410
3939e9df
NJ
84112002-03-15 Neil Jerram <neil@ossau.uklinux.net>
8412
387d418c
NJ
8413 * hooks.h: Change scm_t_c_hookype_t everywhere to
8414 scm_t_c_hook_type.
8415
bb2c02f2 8416 Docstring fixes:
a6d344d3 8417
bb2c02f2
NJ
8418 * strings.c (scm_string_p): Change unnecessary `iff' to `if'.
8419
8420 * ports.c (scm_sys_make_void_port): Use `@file'.
8421
8422 * numbers.c (scm_number_p, scm_real_p): Use `otherwise' rather
8423 than `else'.
8424
8425 * macros.c (scm_makmacro): Don't say that the form replaces its
8426 source, because it doesn't.
8427 (scm_makmmacro): Clarify difference between this and scm_makmacro.
8428
8429 * backtrace.c (scm_display_error), filesys.c (scm_umask,
8430 scm_select, scm_basename), goops.c (scm_method_generic_function),
8431 numbers.c (scm_integer_length), posix.c (scm_getgroups, scm_execl,
8432 scm_setlocale, scm_flock), socket.c (scm_shutdown): Correct
8433 spelling mistakes.
8434
3939e9df
NJ
8435 * debug.c (scm_debug_options), eval.c
8436 (scm_eval_options_interface), read.c (scm_read_options): Change
8437 incorrect @var in docstring to @code.
8438
3b3cc781
MV
84392002-03-14 Marius Vollmer <mvo@zagadka.ping.de>
8440
500b0d5b
MV
8441 * unif.c (singp): Use SCM_REALP instead of SCM_SLOPPY_REALP.
8442
3b3cc781
MV
8443 * snarf.h (SCM_SNARF_INIT): Add "^:^" after code so that
8444 guile-snarf can remove trailing non-init code.
8445
8446 * guile-snarf.in (modern_snarf): Remove everything following and
8447 including "^:^" from the output.
8448
dff98306
DH
84492002-03-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
8450
8451 * eval.c (SCM_CEVAL), srcprop.h (SRCBRKP): Eliminated union 't'.
8452
8453 * eval.c (SCM_CEVAL): Exlined call to EVALCAR.
8454
2287fb53
TTN
84552002-03-13 Thien-Thi Nguyen <ttn@giblet.glug.org>
8456
8457 * guile-snarf.in: Update copyright.
8458 Rewrite to internalize error handling.
8459 Add "--compat=1.4" handling.
8460 Add commentary.
8461
8462 * Makefile.am (libpath.h): Use @top_srcdir_absolute@.
8463 (snarfcppopts): New var.
8464 (.c.x): Use $(snarfcppopts). Rework guile-snarf usage.
8465 (.c.doc): Use $(snarfcppopts).
8466
822250a4
TTN
8467 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
8468 continuations.c, debug-malloc.c, debug.c, deprecation.c, dynl.c,
8469 dynwind.c, environments.c, eq.c, error.c, eval.c, evalext.c,
8470 extensions.c, feature.c, filesys.c, fluids.c, fports.c, gc.c,
8471 goops.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
8472 ioext.c, iselect.c, keywords.c, lang.c, list.c, load.c, macros.c,
8473 modules.c, net_db.c, numbers.c, objects.c, objprop.c, options.c,
8474 pairs.c, ports.c, posix.c, print.c, procprop.c, procs.c,
8475 properties.c, ramap.c, random.c, rdelim.c, read.c, regex-posix.c,
8476 root.c, rw.c, scmsigs.c, script.c, simpos.c, socket.c, sort.c,
8477 srcprop.c, stackchk.c, stacks.c, stime.c, strings.c, strop.c,
8478 strorder.c, strports.c, struct.c, symbols.c, threads.c, throw.c,
8479 unif.c, values.c, variable.c, vectors.c, version.c, vports.c,
8480 weaks.c: Retire inclusion guard macro SCM_MAGIC_SNARFER.
8481
b7798e10
DH
84822002-03-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
8483
8484 * eval.c (SCM_CEVAL): Got rid of the last reference to t.lloc.
8485 The next step will be to remove the union 't' and simplify the
8486 code of SCM_CEVAL that way.
8487
04a98cff
NJ
84882002-03-12 Neil Jerram <neil@ossau.uklinux.net>
8489
8490 * iselect.c (collisionp, gnfds, greadfds, gwritefds, gexceptfds,
8491 rreadfds, rwritefds, rexceptfds): Made static.
8492
8493 * gc.c (terminating), fports.c (terminating): Renamed
8494 scm_i_terminating.
8495
16d98032
MV
84962002-03-11 Marius Vollmer <mvo@zagadka.ping.de>
8497
5046250e
MV
8498 * numbers.c (scm_divide): Adapt code from libstdc++/f2c to void
8499 potential overflow problems. Thanks to John W Eaton!
8500
8794207d
MV
8501 * strop.c (string_capitalize_x): Treat characters as unsigned so
8502 that 8-bit chars work. Thanks to David Pirotte!
16d98032 8503
1d15ecd3
DH
85042002-03-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
8505
8506 * eval.c (SCM_CEVAL): Cleaned up the handling of 'slot-ref',
8507 'slot-set!' and 'nil-cond'. Removed some uses of t.arg1, arg2 and
8508 proc as temporary variables. Introduced temporary variables with
8509 hopefully descriptive names for clarification. Replaced SCM_N?IMP
8510 by a more explicit predicate in some places.
8511
85122002-03-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
f12745b6
DH
8513
8514 * eval.c (SCM_CEVAL): Cleaned up the handling of #@dispatch.
8515 Added lots of comments regarding the implementation of #@dispatch.
8516 Changed intra-procedure communication to use t.arg1 instead of
8517 arg2. Removed some uses of t.arg1, t.lloc and proc as temporary
8518 variables. Introduced temporary variables with hopefully
8519 descriptive names for clarification. Replaced SCM_N?IMP by a more
8520 explicit predicate in some places. Use SCM_INSTANCE_HASH instead
8521 of computing the expression explicitly. Eliminate now unused
8522 label nontoplevel_cdrxbegin.
8523
8524 * goops.h (SCM_INSTANCE_HASH): New macro.
8525
8526 * objects.h (SCM_CMETHOD_FORMALS, SCM_CMETHOD_BODY): New macros.
8527
1ebf1566
TTN
85282002-03-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
8529
8530 * Makefile.am (bin_SCRIPTS): Revive this decl, w/ initial element
8531 "guile-snarf" moved back from `noinst_SCRIPTS'.
8532
020c890c
NJ
85332002-03-08 Neil Jerram <neil@ossau.uklinux.net>
8534
58d233cc
NJ
8535 * srcprop.c (scm_set_source_property_x): If SRCPROPS obj already
8536 exists when adding a source property other than those that are
8537 handled explicitly, add the new property to the SRCPROPS obj's
8538 plist.
8539
020c890c
NJ
8540 * debug.h (SCM_MAX_FRAME_SIZE): Remove incorrect comment about use
8541 of SCM_MAX_FRAME_SIZE as a bit mask; it isn't used like this.
8542
8543 * eval.c (SCM_CEVAL): Don't store scm_debug_eframe_size in
8544 debug.status. It isn't needed, and it can overflow the bits
8545 reserved for it (which may lead to a segv or a GC abort).
8546
3f04400d
DH
85472002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8548
8549 * eval.c (SCM_CEVAL): Cleaned up the handling of 'apply'. Removed
8550 side-effecting operations from conditions and macro calls.
8551 Replaced SCM_N?IMP by a more explicit predicate in some places.
8552 Minimized the scope of some variables.
8553
97820583
SJ
85542002-03-02 Stefan Jahn <stefan@lkcc.org>
8555
8556 * convert.i.c: Fixed int <-> long conversions which would have
8557 failed if their sizes were different.
8558
38ace99e
DH
85592002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8560
8561 * eval.c (SCM_CEVAL): Cleaned up the handling of 'if', 'let',
8562 'letrec' and 'set*': Removed some uses of t.arg1, t.lloc and proc
8563 as temporary variables. Removed side-effecting operations from
8564 conditions and macro calls. Introduced temporary variables with
8565 hopefully descriptive names for clarification. Replaced SCM_N?IMP
8566 by a more explicit predicate in some places. Removed code that
8567 was conditionally compiled if SICP was defined - which it never
8568 is.
8569
e5cb71a0
DH
85702002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8571
8572 * eval.c (SCM_CEVAL): Cleaned up the handling of 'cons' and 'do':
8573 Removed some uses of t.arg1 and proc as temporary variables.
8574 Removed side-effecting operations from conditions and macro calls.
8575 Introduced temporary variables with hopefully descriptive names
8576 for clarification. Replaced SCM_N?IMP by a more explicit
8577 predicate in some places.
8578
6a0f6ff3
DH
85792002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8580
8581 * eval.c (scm_badargsp, SCM_CEVAL): Replaced SCM_N?IMP by a more
8582 explicit predicate in some places.
8583
8584 (CHECK_EQVISH): Removed.
8585
8586 (SCM_CEVAL): Removed some uses of t.arg1 and proc as temporary
8587 variables. Removed side-effecting operations from conditions and
8588 macro calls. Introduced temporary variables for clarification.
8589 Sorted if-else-if check for the type of the last form in a list by
8590 frequency. Avoided some unnecessary tail-recursion calls.
8591
228a24ef
DH
85922002-03-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
8593
8594 * gc.c (SCM_HEAP_SEG_SIZE, CELL_UP, CELL_DN, NEXT_DATA_CELL,
8595 init_heap_seg, alloc_some_heap), gc.h (struct scm_cell, struct
8596 scm_t_cell, SCM_CELLPTR, SCM_GC_CARD_SIZE,
8597 SCM_GC_IN_CARD_HEADERP), tags.h (SCM_CELLP): Renamed the struct
8598 scm_cell and all its uses to scm_t_cell in accordance to Guile's
8599 naming scheme for types.
8600
8601 * alist.c (scm_acons), convert.i.c (CTYPES2UVECT,
8602 CTYPES2UVECT_OPTIONAL), coop-threads.c (scm_call_with_new_thread,
8603 scm_spawn_thread), debug.c (scm_make_debugobj), environments.c
8604 (scm_make_environment), eval.c (scm_closure), fports.c
8605 (scm_fdes_to_port), gc.c (scm_deprecated_newcell,
8606 scm_deprecated_newcell2), inline.h (scm_alloc_cell, scm_cell),
8607 list.c (SCM_I_CONS), numbers.c (scm_i_mkbig), pairs.c (scm_cons),
8608 ports.c (scm_void_port), procs.c (scm_c_make_subr, scm_makcclo),
8609 smob.c (scm_make_smob), smob.h (SCM_NEWSMOB), strings.c
8610 (scm_take_str, scm_allocate_string), strports.c (scm_mkstrport),
8611 unif.c (scm_make_uve), variable.c (make_variable), vectors.c
8612 (scm_c_make_vector), vports.c (scm_make_soft_port): Renamed
8613 scm_alloc_cell to scm_cell.
8614
8615 * environments.c (core_environments_observe), gc.c
8616 (scm_deprecated_newcell2), goops.c (wrap_init, scm_wrap_object),
8617 inline.h (scm_alloc_double_cell, scm_double_cell), num2float.i.c
8618 (FLOAT2NUM), numbers.c (scm_make_real), procs.c
8619 (scm_make_procedure_with_setter), smob.h (SCM_NEWSMOB2,
8620 SCM_NEWSMOB3), struct.c (scm_make_struct, scm_make_vtable_vtable),
8621 symbols.c (scm_mem2symbol, scm_mem2uninterned_symbol), weaks.c
8622 (allocate_weak_vector): Renamed scm_alloc_double_cell to
8623 scm_double_cell.
8624
edb810bb
SJ
86252002-02-27 Stefan Jahn <stefan@lkcc.org>
8626
8627 * convert.i.c, convert.c: Better range checking.
8628
8629 * inet_aton.c, fports.c: Commented the inclusion of <winsock2.h>.
8630
1ebf1566 8631 * deprecation.c (vsnprintf): Define to `_vsnprintf' for
edb810bb
SJ
8632 Windows (MinGW).
8633
327d4dd3
TTN
86342002-02-26 Thien-Thi Nguyen <ttn@giblet.glug.org>
8635
8636 * Makefile.am: Update path to pre-inst-guile automake frag.
8637
89d7a92c 86382002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
646052c0
DH
8639
8640 * gc.c (scm_gc_sweep): Make it compile even when deprecated
8641 features are excluded.
8642
89d7a92c 86432002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
bac0e232
DH
8644
8645 * num2integral.i.c (NUM2INTEGRAL): Fixed signedness problem.
8646
4f2716b6
GH
86472002-02-25 Gary Houston <ghouston@arglist.com>
8648
8649 * convert.c: include <string.h> for convert_i.c.
8650
46151112
RB
86512002-02-24 Rob Browning <rlb@defaultvalue.org>
8652
8653 * .cvsignore: add stamp-h1.
8654
cd328b4f
NJ
86552002-02-21 Neil Jerram <neil@ossau.uklinux.net>
8656
8657 * unif.c (scm_array_to_list): Correct name, which had been
8658 accidentally changed to scm_t_arrayo_list!
8659
c709de7f
MD
86602002-02-20 Mikael Djurfeldt <mdj@linnaeus>
8661
8662 * gc.c (scm_gc_sweep): Print an error message when aborting due to
8663 underflowing scm_mallocated.
8664
c1965d31
MV
86652002-02-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8666
8667 * gc.h, gc.c (scm_must_malloc, scm_must_realloc, scm_must_strdup,
8668 scm_must_strndup, scm_done_malloc, scm_done_free, scm_must_free):
8669 Reimplemented using the new scm_gc_malloc, etc., functions and
8670 deprecated.
8671
b606945b
TTN
86722002-02-11 Thien-Thi Nguyen <ttn@giblet.glug.org>
8673
8674 * Makefile.am (bin_PROGRAMS): Move `guile_filter_doc_snarfage'
8675 to `noinst_PROGRAMS'.
8676 (bin_SCRIPTS): Move all values to `noinst_SCRIPTS'; delete.
8677 (noinst_PROGRAMS, noinst_SCRIPTS): New.
8678
7c686ba8
MV
86792002-02-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8680
8681 * gc.h, gc.c (scm_gc_sweep): Issue deprecation warning when
8682 non-zero is returned from a port or smob free function.
8683 (scm_malloc, scm_realloc, scm_strndup, scm_strdup,
8684 scm_gc_register_collectable_memory,
8685 scm_gc_unregister_collectable_memory, scm_gc_malloc,
8686 scm_gc_realloc, scm_gc_free, scm_gc_strndup, scm_gc_strdup): New.
8687
8688 * backtrace.c, continuations.c, convert.i.c, coop-threads.c,
8689 debug-malloc.c, dynl.c, environments.c, environments.h,
8690 extensions.c, filesys.c, fports.c, gc.c, gc.h, gh_data.c, goops.c,
8691 guardians.c, hooks.c, init.c, keywords.c, load.c, numbers.c,
8692 ports.c, posix.c, procs.c, rdelim.c, regex-posix.c, root.c,
8693 smob.c, stime.c, strings.c, struct.c, struct.h, symbols.c, unif.c,
8694 vectors.c, weaks.c: Use scm_gc_malloc/scm_malloc and
8695 scm_gc_free/free instead of scm_must_malloc and scm_must_free, as
8696 appropriate. Return zero from smob and port free functions.
8697
8698 * debug-malloc.c (scm_malloc_reregister): Handle "old == NULL".
8699
8700 * deprecation.h, deprecation.c: Reimplemented to allow deprecation
8701 messages while the GC is running.
8702 (scm_c_issue_deprecation_warning_fmt): New.
8703
8704 * fports.c (scm_setvbuf): Reset read buffer to saved values when
8705 it is pointing to the putback buffer.
8706
66adc0a6
TTN
87072002-02-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
8708
8709 * gsubr.c (create_gsubr): On "too many args" error,
8710 also display arg count and name. Thanks to Bill Schottstaedt.
8711
0187b4f4
TTN
87122002-02-05 Thien-Thi Nguyen <ttn@giblet.glug.org>
8713
8714 * Makefile.am: Include $(top_srcdir)/pre-inst-guile.am.
8715
8716 (bin_SCRIPTS): Remove guile-snarf-docs-texi.
8717 (alldotdocfiles, snarf2checkedtexi, dotdoc2texi): New vars.
8718 (guile.texi, guile-procedures.texi): Use $(dotdoc2texi).
8719
8720 * guile-snarf-docs-texi.in: Bye bye.
8721
402e687c
MV
87222002-02-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8723
8724 * symbols.c (scm_make_symbol): Fix typo in docstring.
8725
8726 * symbols.h (scm_mem2uninterned_symbol, scm_symbol_interned_p,
8727 scm_make_symbol): New prototypes.
8728
319b98ed
MV
87292002-02-03 Marius Vollmer <mvo@zagadka.ping.de>
8730
8731 * symbols.h (SCM_SET_SYMBOL_HASH): Removed.
8732 (SCM_SYMBOL_INTERNED_P): New.
8733 * symbols.c (scm_symbol_hash): Use scm_ulong2num instead of
8734 SCM_MAKINUM since hash values can well be bignums.
8735 (scm_mem2symbol): Only use hash values below SCM_T_BITS_MAX/2.
8736 This signals a interned symbol.
8737 (scm_mem2uninterned_symbol, scm_symbol_interned_p,
8738 scm_make_symbol): New.
0187b4f4 8739
319b98ed
MV
8740 * print.c (scm_iprin1): Print uninterned symbols unreadably.
8741
34472dfe
TTN
87422002-02-02 Thien-Thi Nguyen <ttn@giblet.glug.org>
8743
8744 * __scm.h (HAVE_UINTPTR_T): Only define if UINTPTR_T attributes
8745 are defined: UINTPTR_MAX, INTPTR_MAX, INTPTR_MIN.
0187b4f4 8746 Thanks to Dave Love.
34472dfe 8747
1b39c2e3
MV
87482002-01-31 Marius Vollmer <mvo@zagadka.ping.de>
8749
8750 * symbols.c (scm_gensym): Use " g" as default prefix, not "g".
319b98ed 8751 This might help to make unintended clashes less likely.
1b39c2e3
MV
8752 (scm_string_to_symbol): Protect the string until the symbols is
8753 created.
8754
1fa86ca5
SJ
87552002-01-31 Stefan Jahn <stefan@lkcc.org>
8756
8757 * convert.c, convert.h, convert.i.c: New files containing C
34472dfe 8758 array to Scheme conversion helpers meant to be replacement
1fa86ca5
SJ
8759 functions for the deprecated gh interface.
8760
8761 * Makefile.am: Setup rules for new `convert.*' files.
8762
af68e5e5
SJ
87632002-01-28 Stefan Jahn <stefan@lkcc.org>
8764
8765 * symbols.c (scm_c_symbol2str): New function, replacement for
8766 `gh_scm2newsymbol()'.
8767
34472dfe 8768 * strings.c (scm_c_substring2str): New function. Proper
af68e5e5
SJ
8769 replacement for `gh_get_substr()'.
8770
8771 * socket.c: Include `stdint.h' if available for the `uint32_t'
8772 declaration.
8773
504d99c5 8774 * scmsigs.c (scm_sigaction): Initialize `chandler' (inhibits
af68e5e5
SJ
8775 compiler warning).
8776
8777 * backtrace.c: Include `lang.h' for GUILE_DEBUG conditional.
8778
c96d76b8 87792002-01-22 Neil Jerram <neil@ossau.uklinux.net>
34472dfe 8780
c96d76b8 8781 Other changes unrelated to Elisp...
34472dfe 8782
c96d76b8
NJ
8783 * eval.c (scm_m_if): Use s_if rather than repeating string literal
8784 "if".
8785 (comments): Fix a few typos.
8786 (scm_for_each): Add parentheses around oddly unparenthesized
8787 if/while conditions.
8788
8789 * read.c (scm_read_opts): Add full stop at end of doc for
8790 `keywords' option.
8791
8792 * script.c (scm_compile_shell_switches): Use scm_str2symbol
8793 instead of gh_symbol2scm.
8794
8795 * srcprop.h (SRCPROPBRK): Return C type rather than SCM.
8796 (SRCBRKP): Use SRCPROPBRK rather than duplicating its logic.
8797
8798 * srcprop.c (scm_srcprops_to_plist, scm_source_property): Change
8799 SRCPROPBRK (x) to SCM_BOOL (SRCPROPBRK (x)).
8800
8801 First batch of changes for Elisp support...
8802
8803 * alist.c, async.c, boolean.c, dynl.c, eval.c, filesys.c,
8804 fluids.c, list.c, load.c, options.c, posix.c, print.c, sort.c,
8805 throw.c, vectors.c, weaks.c: Add #include for lang.h.
8806
8807 * eval.c, eval.h, init.c, lang.c, lang.h: Use SCM_ENABLE_ELISP to
8808 conditionalize compilation and initialization of Elisp support
8809 function.
34472dfe 8810
c96d76b8
NJ
8811 * alist.c (scm_assq, scm_assv, scm_assoc), async.c
8812 (scm_asyncs_pending, scm_run_asyncs, noop), backtrace.c
8813 (scm_set_print_params_x), dynl.c (scm_make_argv_from_stringlist),
8814 filesys.c (fill_select_type, retrieve_select_type), fluids.c
8815 (scm_swap_fluids, scm_swap_fluids_reverse), list.c (scm_null_p,
8816 scm_ilength, scm_append_x, scm_last_pair, scm_reverse,
8817 scm_reverse_x, scm_list_ref, scm_list_set_x, scm_list_cdr_set_x,
bbd26b5a
NJ
8818 scm_c_memq, scm_memv, scm_member), load.c (scm_search_path),
8819 options.c (change_option_setting, scm_options), posix.c
8820 (environ_list_to_c), print.c (scm_iprlist), throw.c
8821 (scm_exit_status), vectors.c (scm_vector), weaks.c
8822 (scm_weak_vector): Use SCM_NULL_OR_NIL_P instead of SCM_NULLP.
c96d76b8
NJ
8823
8824 * boolean.c (scm_not): Use `SCM_FALSEP || SCM_NILP' instead of
8825 just SCM_FALSEP.
34472dfe 8826
c96d76b8
NJ
8827 * boolean.c (scm_boolean_p): Use `SCM_BOOLP || SCM_NILP' instead
8828 of just SCM_BOOLP.
8829
8830 * eval.c (scm_lisp_nil, scm_lisp_t, s_nil_ify, scm_m_nil_ify,
8831 s_t_ify, scm_m_t_ify, s_0_cond, scm_m_0_cond, s_0_ify,
8832 scm_m_0_ify, s_1_ify, scm_m_1_ify): Removed.
8833 (scm_m_atfop): Support function aliasing. Support both function
8834 args, which need transformation, and macro args, which do not.
8835 Add explanatory comments.
8836 (SCM_CEVAL): In switch cases for SCM_IM_AND, SCM_IM_COND,
8837 SCM_IM_DO, SCM_IM_IF and SCM_IM_OR, add `|| SCM_NILP' to existing
8838 checks for SCM_FALSEP. In switch case for SCM_IM_NIL_COND, use
8839 SCM_NULLP || SCM_NILP instead of checks against (removed)
8840 scm_lisp_nil. Removed switch cases for SCM_IM_NIL_IFY,
8841 SCM_IM_T_IFY, SCM_IM_0_COND, SCM_IM_0_IFY, SCM_IM_1_IFY.
8842
8843 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
8844 scm_m_while, scm_nil_eq): Commented out; I don't think we need
8845 these, but I don't want to remove them yet, just in case.
8846 (scm_init_lang): Define `%nil' variable on Scheme level to hold
8847 Elisp nil value.
8848
8849 * lang.h (SCM_NILP): Test against Elisp nil value instead of
8850 against (removed) scm_lisp_nil.
8851 (SCM_NILNULLP, SCM_NIL2EOL, SCM_EOL2NIL): Commented out.
8852 (SCM_NULL_OR_NIL_P): New.
8853
8854 * list.c (scm_append): Use SCM_VALIDATE_NULL_OR_NIL instead of
8855 SCM_VALIDATE_NULL.
8856
8857 * print.c (scm_isymnames): Fix comment. Remove #@nil-ify,
8858 #@t-ify, #@0-cond, #@0-ify, #@1-ify. Add #nil (for SCM_ELISP_NIL
8859 value).
8860
8861 * sort.c (scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
8862 scm_sort_x, scm_sort, scm_stable_sort_x, scm_stable_sort): Use
8863 SCM_NULL_OR_NIL_P instead of SCM_NULLP. In constructions like `if
8864 (SCM_NULLP (x)) return SCM_EOL;', return x rather than SCM_EOL.
8865
8866 * tags.h (SCM_IM_NIL_IFY, SCM_IM_T_IFY, SCM_IM_0_COND,
8867 SCM_IM_0_IFY, SCM_IM_1_IFY): Removed.
8868 (SCM_IM_BIND, SCM_IM_DELAY, SCM_IM_CALL_WITH_VALUES, SCM_UNBOUND):
8869 Numbering shifted down accordingly.
8870 (SCM_ELISP_NIL): New IFLAG.
8871
8872 * validate.h (SCM_VALIDATE_NULL_OR_NIL): New.
34472dfe 8873
a392ee15
DH
88742002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
8875
8876 * eval.c: Removed outdated references to "everr". Improved some
8877 comments.
8878
8879 (scm_deval_args, deval_args): Renamed scm_deval_args to
8880 deval_args, since it is not part of the interface.
8881
8882 (SCM_CEVAL): Added (maybe somewhat verbose) comment. Avoid to
8883 use references to debug.vect[0] before it exists. Add parentheses
8884 to switch statement.
8885
8886 * goops.h: Added local emacs variables.
8887
24933780
DH
88882002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
8889
8890 * eval.[ch] (scm_deval_args): Made static.
8891
8892 * srcprop.c (scm_source_property): Remove redundant SCM_IMP
8893 test.
8894
8895 * strings.c (scm_c_string2str): Clarified comment. Replaced
8896 THINKME by FIXME for uniformness. Removed question about whether
8897 arguments need to be protected from garbage collection: Arguments
8898 must be protected as any other variable.
8899
f9450cdb
DH
89002002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
8901
8902 * procs.h (SCM_CLOSURE_BODY): New Macro.
8903
8904 * debug.c (scm_procedure_name, scm_procedure_source), eval.c
8905 (SCM_CEVAL, SCM_APPLY), goops.c (scm_sys_initialize_object,
8906 get_slot_value, set_slot_value), procs.c
8907 (scm_procedure_documentation), sort.c (closureless), stacks.c
8908 (get_applybody): Replace SCM_CDR (SCM_CODE (...)) by
8909 SCM_CLOSURE_BODY.
8910
8911 * sort.c (closureless): Prefer !SCM_FOOP over SCM_NFOOP.
8912
5dc64f64
MV
89132001-12-26 Marius Vollmer <mvo@zagadka.ping.de>
8914
8915 * Makefile.am (guile-procedures.txt): When we don't have makeinfo,
8916 use "cp" instead.
8917
197ee3d3
MV
89182001-12-16 Marius Vollmer <mvo@zagadka.ping.de>
8919
8920 * stacks.c, stacks.h (scm_t_stackype): Renamed to scm_stack_type
8921 everywhere.
8922
8923 * continuations.c (scm_make_continuation): Do not retain the
8924 throw_value when the continuation is invoked.
8925
4d4528e7
SJ
89262001-12-08 Stefan Jahn <stefan@lkcc.org>
8927
8928 * strings.c (scm_c_string2str): New function. Converts a
34472dfe 8929 given Scheme string into a C string. Also put in two
4d4528e7
SJ
8930 THINKME's regarding the malloc policy for the missing converter
8931 routines.
8932
98347362
NJ
89332001-12-01 Neil Jerram <neil@ossau.uklinux.net>
8934
8935 * gh_data.c (gh_module_lookup): Use scm_str2symbol rather than
8936 gh_symbol2scm.
8937
1fc8902f
DH
89382001-11-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
8939
8940 * gc.h (SCM_GC_CELL_WORD, SCM_GC_CELL_OBJECT,
8941 SCM_GC_SET_CELL_WORD, SCM_GC_SET_CELL_OBJECT): New macros.
8942
8943 (SCM_GC_CELL_TYPE, SCM_CELL_WORD, SCM_CELL_OBJECT,
8944 SCM_SET_CELL_WORD, SCM_SET_CELL_OBJECT, SCM_FREE_CELL_CDR,
8945 SCM_GC_SET_CELL_OBJECT): Express in terms of SCM_GC_CELL_*
8946 macros.
8947
8948 (SCM_FREE_CELL_P): Express in terms of SCM_GC_CELL_TYPE.
8949
8950 * inline.h (scm_alloc_cell, scm_alloc_double_cell): Use
8951 SCM_GC_CELL_* macros when accessing free cells.
8952
4878beec
MV
89532001-11-25 Marius Vollmer <mvo@zagadka.ping.de>
8954
8955 * vectors.h (SCM_MAKE_VECTOR_TAG): New.
34472dfe 8956 * unif.h (SCM_MAKE_BITVECTOR_TAG, SCM_MAKE_UVECTOR_TAG): New.
4878beec
MV
8957 * symbols.h (SCM_MAKE_SYMBOL_TAG): New.
8958 * strings.h (SCM_MAKE_STRING_TAG): New.
8959 * procs.h (SCM_MAKE_CCLO_TAG): New.
8960 * numbers.h (SCM_MAKE_BIGNUM_TAG): New.
8961
8962 * goops.h: Replaced SCM_DEBUG_DEPRECATED with
8963 !SCM_ENABLE_DEPRECATED.
8964
8965 * async.c, async.h (scm_system_async_mark_from_signal_handler):
8966 New.
8967
8968 * scmsigs.c (scm_take_signal): Removed all code that assumes that
8969 signal handlers are allowed to divert the flow of control. Call
8970 scm_system_async_mark_from_signal_handler instead of
8971 scm_system_async_mark.
8972
8973
8974 Deprecated SCM_NEWCELL and SCM_NEWCELL2. Added scm_alloc_cell and
8975 scm_alloc_double_cell in their place.
34472dfe 8976
4878beec
MV
8977 * gc.h (SCM_GC_SET_ALLOCATED, scm_debug_newcell,
8978 scm_debug_newcell2, scm_tc16_allocated): Removed from header.
8979 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
8980 (SCM_NEWCELL, SCM_NEWCELL2): Implement in terms of
8981 scm_deprecated_newcell and scm_deprecated_newcell2.
8982
8983 gc.c (scm_tc16_allocated): Only define when including deprecated
8984 features.
8985 (scm_debug_newcell, scm_debug_newcell2): Removed.
8986 (scm_init_storage): Do not initialize scm_tc16_allocated.
8987 (scm_init_gc): Do it here.
8988 (allocated_mark): New, from old code.
8989 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
34472dfe 8990
4878beec 8991 * inline.c, inline.h: New files.
34472dfe 8992 * Makefile.am: Added them in all the right places.
4878beec 8993
34472dfe 8994 * _scm.h: Include "libguile/inline.h".
4878beec
MV
8995
8996 * alist.c, coop-threads.c, debug.c, environments.c, eval.c,
8997 fports.c, gh_data.c, goops.c, guardians.c, lang.c, list.c,
8998 num2float.i.c, numbers.c, pairs.c, ports.c, print.c, procs.c,
8999 smob.c, smob.h, strings.c, strports.c, struct.c, symbols.c,
9000 unif.c, variable.c, vectors.c, vports.c, weaks.c: Replaced
9001 SCM_NEWCELL and SCM_NEWCELL2 with scm_alloc_cell and
9002 scm_alloc_double_cell, respectively.
9003
d2bc7fae
MV
90042001-11-23 Marius Vollmer <mvo@zagadka.ping.de>
9005
9006 * modules.c (scm_c_use_module): Adapt to changes to
9007 `process-use-modules'.
9008
5eec27e9
DH
90092001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
9010
9011 * numbers.c (scm_divide): Fix more division by zero errors.
9012
8978878f
GH
90132001-11-21 Gary Houston <ghouston@arglist.com>
9014
9015 * Makefile.am (OMIT_DEPENDENCIES): removed, since it seems to be
9016 obsolete. autogen.sh says:
9017 invalid unused variable name: `OMIT_DEPENDENCIES'
9018
164826d3
DH
90192001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
9020
9021 * numbers.c (scm_divide): Fix (/ 0). Thanks to Keith Wright for
9022 reporting the bug.
9023
84aff7a7
MV
90242001-11-21 Marius Vollmer <mvo@zagadka.ping.de>
9025
9026 * Makefile.am (install-exec-hook): Prepend $(DESTDIR) to filename.
9027 Thanks to Eric Gillespie, Jr!
34472dfe 9028
6063dc1d
SJ
90292001-11-21 Stefan Jahn <stefan@lkcc.org>
9030
34472dfe
TTN
9031 * win32-socket.c (getservent, setservent, endservent,
9032 getprotoent, setprotoent, endprotoent): New functions.
6063dc1d
SJ
9033 Appropriate replacements for M$-Windows.
9034
9035 * numbers.c (SIZE_MAX, PTRDIFF_MAX, PTRDIFF_MIN): Reintroduced
9036 these definitions for GUILE_DEBUG.
9037
9038 * net_db.c: Include "win32-socket.h" if compiling with a native
34472dfe
TTN
9039 M$-Windows compiler. Include some pieces of code (protoent and
9040 servent interface) protected by HAVE_* macros when using a
6063dc1d
SJ
9041 native M$-Windows compiler.
9042
351982f6
MV
90432001-11-20 Marius Vollmer <mvo@zagadka.ping.de>
9044
9045 * modules.c (scm_c_export): Do nothing when the first argument is
9046 already the terminating NULL. Thanks to Han-Wen Nienhuys!
9047
849038b5
TTN
90482001-11-20 Thien-Thi Nguyen <ttn@glug.org>
9049
9050 * Makefile.am (libpath.h): In SCM_BUILD_INFO,
9051 also include `buildstamp'.
9052
5c790b44
RB
90532001-11-18 Rob Browning <rlb@defaultvalue.org>
9054
9055 * version.c
9056 (s_scm_major_version): use SCM_MAJOR_VERSION.
9057 (s_scm_minor_version): use SCM_MINOR_VERSION.
9058 (s_scm_micro_version): use SCM_MICRO_VERSION.
9059 (s_scm_version): use SCM_MAJOR_VERSION, SCM_MINOR_VERSION, and
9060 SCM_MICRO_VERSION.
9061
9062 * version.h.in
9063 (SCM_MAJOR_VERSION): renamed from SCM_GUILE_MAJOR_VERSION.
9064 (SCM_MINOR_VERSION): renamed from SCM_GUILE_MINOR_VERSION.
9065 (SCM_MICRO_VERSION): renamed from SCM_GUILE_MICRO_VERSION.
9066
694a9bb3
NJ
90672001-11-18 Neil Jerram <neil@ossau.uklinux.net>
9068
9069 * vectors.c (scm_vector_move_left_x, scm_vector_move_right_x):
9070 Rewrite docstrings without reference to substring-move-left/right,
9071 since the latter no longer exist.
9072
302c12b4
DH
90732001-11-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
9074
9075 * eval.c: Removed bogus comment about acros.
9076
9077 (scm_unmemocar): Use !SCM_CONSP instead of SCM_IMP.
9078 Minimize scope of local variable. Eliminate dependency on
9079 macro DEBUG_EXTENSIONS.
9080
9081 (s_splicing): New error message string.
9082
9083 (scm_m_body): Issue 'bad body' message rather than 'missing
9084 expression' message.
9085
9086 (scm_m_quote): Eliminate unnecessary copying.
9087
9088 (scm_m_lambda, scm_m_letstar, scm_m_letrec, scm_m_let): Leave the
9089 checking of the body to scm_m_body.
9090
9091 (scm_m_do): Move comment to function header. Rename arg1 to
9092 binding. Made the code a bit easier to read.
9093
9094 (evalcar): Removed.
9095
9096 (iqq): Added a comment. Changed the depth parameter to
9097 unsigned. Use size_t for vector lengths. Make sure vector object
9098 is gc protected as long as its contents are read. Add some syntax
9099 checks. Get rid of unnecessary SCM_IMP test. Clean up the
9100 control structure a bit.
9101
9102 (scm_m_delay): Added comment about the implementation of
9103 scm_m_delay.
9104
9105 (scm_m_define): Add comment about guile's currying define
9106 syntax. Renamed 'proc' to 'name'. Eliminate dependency on macro
9107 DEBUG_EXTENSIONS. Simplified code a bit. Eliminate SICP code.
9108
9109 (scm_m_letrec1): Removed. Part of the functionality is taken
9110 over by the new function 'transform_bindings'.
9111
9112 (transform_bindings): New function. Takes over some of the
9113 functionality of removed function 'scm_m_letrec1', namely to split
9114 a list of bindings into a reversed list of variables and a list of
9115 initializers.
9116
9117 (scm_m_letrec): Call 'transform_bindings'.
9118
9119 (scm_m_let): Minimized scope of local variables. Renamed 'proc'
9120 to 'temp' and 'arg1' to 'binding'. Eliminated redundant SCM_NIMP
9121 test. Use 'transform_bindings'. Fixed scoping error with named
9122 let (Thanks to Aubrey Jaffer for reporting the bug and to Neil
9123 Jerram for suggesting the fix). Cleaned up the control structure
9124 a bit.
9125
9126 (scm_m_expand_body): Use 'transform_bindings'. Eliminated
9127 unnecessary consing. Eliminated unnecessary
9128 SCM_DEFER/ALLOW_INTS.
9129
9130 (SCM_CEVAL): Un-obfuscated some loops.
9131
cecb4a5e
NJ
91322001-11-16 Neil Jerram <neil@ossau.uklinux.net>
9133
8f85c0c6
NJ
9134 * gc.h (scm_unhash_name): Old declaration removed.
9135
9136 * eval.c (s_scm_eval): Change @var{primitive-eval} to
9137 @code{primitive-eval}.
9138
9139 * feature.c, vectors.c, net_db.c, unif.c, weaks.c, struct.c,
9140 version.c, alist.c, ports.c, ramap.c, unif.c, strings.c, list.c:
9141 Change @deffnx lines in docstrings to say {Scheme Procedure}
9142 rather than primitive or procedure.
9143
9144 * posix.c (scm_execl), filesys.c (scm_close), unif.c
9145 (scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
9146 scm_bit_set_star_x, scm_bit_invert_x), ramap.c (scm_array_fill_x,
9147 scm_array_for_each, scm_array_index_map_x), vectors.c (scm_vector,
9148 scm_make_vector, scm_vector_to_list, scm_vector_fill_x), strop.c
9149 (scm_string_split, scm_string_ci_to_symbol), strings.c
9150 (scm_string_p), sort.c (scm_merge), print.c (scm_newline),
9151 macros.c (scm_macro_type), alist.c (scm_acons, scm_assq):
9152 Docstring fixes and improvements reflecting edits that have been
9153 made in the reference manual source.
9154
9155 * objprop.c (scm_object_properties, scm_set_object_properties_x,
9156 scm_object_property, scm_set_object_property_x): Remove invalid
9157 @deffnx lines for corresponding procedure property primitives.
9158
cecb4a5e
NJ
9159 These changes add a @deffnx C function declaration and function
9160 index entries for each Guile primitive to the copy of the doc
9161 snarf output that is used for reference manual synchronization.
9162 Online help is unchanged.
849038b5 9163
cecb4a5e
NJ
9164 * snarf.h (SCM_SNARF_DOCS): Output primitive's C function name.
9165 (SCM_DEFINE, SCM_DEFINE1, SCM_REGISTER_PROC): Supply to C function
9166 name to SCM_SNARF_DOCS.
849038b5 9167
cecb4a5e
NJ
9168 * guile-snarf-docs-texi.in: Pass the shell script's arguments into
9169 snarf-check-and-output-texi.
9170
9171 * Makefile.am (guile-procedures.texi): New rule.
9172 (BUILT_SOURCES, guile.texi, guile-procedures.txt, CLEANFILES):
9173 Changed so that the last stage of doc snarfing is now performed
9174 twice, once to produce guile-procedures.txt for online help, and
9175 once to produce guile.texi for reference manual synchronization.
9176
ddea3325
DH
91772001-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
9178
9179 * eval.c (RETURN): Wrap in do{}while(0) in order to make it
9180 safely usable as a single statement followed by a ';', for example
9181 in an if statement.
9182
9183 (SCM_CEVAL, SCM_APPLY): Clean up code using 'RETURN'.
9184
72dd0a03
NJ
91852001-11-13 Neil Jerram <neil@ossau.uklinux.net>
9186
9187 * random.c (scm_random_solid_sphere_x,
9188 scm_random_hollow_sphere_x): Correct "shere" typos.
9189
9190 * hashtab.c (scm_hash_fold): Add missing apostrophe to docstring.
9191
9192 * version.c (scm_version): Update docstring to include
9193 `micro-version'.
9194
6558eda6
MV
91952001-11-13 Marius Vollmer <mvo@zagadka.ping.de>
9196
409b8588
MV
9197 * modules.c (scm_c_export): Call va_end after collecting the
9198 symbols.
9199
adb8c0f2
MV
9200 * strop.h, strop.c (scm_substring_move_left_x,
9201 scm_substring_move_right_x): Removed.
9202
6558eda6
MV
9203 * __scm.h (HAVE_UINTPTR_T, HAVE_PTRDIFF_T, HAVE_LONG_LONG,
9204 HAVE_LONG_LONGS): Define to "1" when defining them, to mirror what
9205 configure does.
9206
5d8fc640
MV
92072001-11-12 Marius Vollmer <mvo@zagadka.ping.de>
9208
9209 * numbers.c: Document macros to define when including
9210 num2integral.i.c. MAX_VALUE and MIN_VALU are no longer used, we
9211 now rely on SIZEOF_ macros that have been figured out at
9212 configure time.
9213
9214 * num2integral.i.c: Adapt to new interface.
9215 (NUM2INTEGRAL): Test whether a fixnum can be represented in the
9216 target type by casting it and checking whether it is still the
9217 same. Do not try to handle bignums for integral types that are
9218 smaller than fixnums. When handling bignums, collect the
9219 magnituse first into a unsigned type, and correctly check for
9220 overflow.
9221 (INTEGRAL2BIG): Do not use MIN_VALUE explicitely by observing that
9222 only -MIN_VALUE can still be negative of all negative numbers (in
9223 twos-complement).
9224
849038b5 9225 * tags.h (SIZEOF_SCM_T_BITS): Define it appropriately.
5d8fc640
MV
9226
9227 * __scm.h: Define HAVE_UINTPTR_T, HAVE_PTRDIFF_T and
9228 HAVE_LONG_LONG depending on whether their size is non-zero.
9229
d6b8cf11
TTN
92302001-11-11 Thien-Thi Nguyen <ttn@glug.org>
9231
9232 * strop.c (scm_string_null_p): Docfix; nfc.
9233 Thanks to Scott Lenser.
9234
9401323e
NJ
92352001-11-07 Neil Jerram <neil@ossau.uklinux.net>
9236
9237 * extensions.c (scm_load_extension): Canonicalize docstring
9238 whitespace.
9239
9240 * unif.c (scm_uniform_array_write), ports.c
9241 (scm_current_output_port, scm_force_output), dynwind.c
9242 (scm_dynamic_wind), scmsigs.c (scm_setitimer, scm_getitimer),
9243 filesys.c (scm_open, scm_lstat), struct.c
9244 (scm_make_struct_layout), random.c (scm_random,
9245 scm_random_solid_sphere_x, scm_random_hollow_sphere_x, strop.c
9246 (scm_i_index): Remove superfluous whitespace from end of docstring
9247 lines.
9248
9249 * filesys.c (scm_select), guardians.c (scm_guardian_greedy_p),
9250 strings.c (scm_make_string), variable.c (scm_make_variable,
9251 scm_make_undefined_variable, scm_variable_p, scm_variable_set_x,
9252 scm_variable_bound_p), scmsigs.c (scm_setitimer, scm_getitimer),
9253 posix.c (scm_crypt), struct.c (scm_make_vtable_vtable), hashtab.c
9254 (scm_hash_fold), ports.c (scm_port_for_each): Remove superfluous
9255 newline at end of docstrings.
9256
9257 * modules.c (scm_set_current_module): Add missing newline to
9258 docstring.
9259
b4e15479
SJ
92602001-11-07 Stefan Jahn <stefan@lkcc.org>
9261
9262 * win32-socket.[ch]: New files. Defines Winsock-API error codes
9263 and makes them available through Guile. That is because the
9264 Winsock-API does not store its errors in `errno' and thus cannot
9265 return error messages via `strerror (errno)'.
9266
9267 * socket.c (scm_init_socket): Initialize `win32-socket' part
9268 here under M$-Windows.
9269
d6b8cf11 9270 * numbers.h: Added missing declaration of
b4e15479
SJ
9271 `scm_sys_check_number_conversions()'.
9272
9273 * error.c: Local definition of SCM_I_STRERROR and SCM_I_ERRNO
9274 and use in `(strerror)' and `(system-error)'.
9275
d6b8cf11 9276 * Makefile.am (EXTRA_libguile_la_SOURCES): Added
b4e15479
SJ
9277 `win32-socket.[ch]' to extra source and header files.
9278
7ab89df1
MV
92792001-11-06 Marius Vollmer <mvo@zagadka.ping.de>
9280
9281 * script.c (scm_shell_usage, scm_compile_shell_switches): Prepend
9282 a call to turn-on-debugging when --debug has been given instead of
9283 turning it on directly. Also, handle new `--no-debug' option,
9284 which might suppress the call to turn-on-debugging.
9285
0233bfc1
SJ
92862001-11-05 Stefan Jahn <stefan@lkcc.org>
9287
9288 * struct.c (s_scm_struct_vtable_p): Corrected docstring.
9289
8f99e3f3
SJ
92902001-11-04 Stefan Jahn <stefan@lkcc.org>
9291
9292 * Makefile.am (libguile_la_LIBADD): Added $(THREAD_LIBS_LOCAL)
d6b8cf11 9293 here (was at guile_LDADD) which describes the dependency
8f99e3f3
SJ
9294 correctly and allows a clean build on Win32.
9295
d6b8cf11 9296 * __scm.h (SCM_API): Follow-up patch. Renamed __FOO__ macros
8f99e3f3
SJ
9297 into FOO.
9298
9299 * __scm.h: USE_DLL_IMPORT indicates the usage of the DLL
9300 import macros for external libraries (libcrypt, libqthreads,
9301 libreadline and libregex).
9302
9303 * coop-defs.h: Include <winsock2.h> for `struct timeval'.
9304
9305 * posix.c (flock): Added support for flock() in M$-Windows.
9306
9307 * guile.c (SCM_IMPORT): Follow-up patch. Use SCM_IMPORT instead
9308 of __SCM_IMPORT__.
9309
9310 * fports.c (getflags): Differentiate reading and writing pipes
9311 descriptors.
9312
9313 * filesys.c (S_IS*): Redefine all of the S_IS*() macros for
9314 M$-Windows.
9315
9316 * coop.c (coop_condition_variable_timed_wait_mutex): Use
9317 conditionalized error code if `ETIMEDOUT' is not available.
9318 (scm_thread_usleep): Remove bogus declaration of `struct timeval
9319 timeout'.
9320
9321 * numbers.c (PTRDIFF_MIN): Moved this definition where it actually
9322 belongs. That is because NO_PREPRO_MAGIC gets undefined after
9323 each inclusion of `num2integral.i.c'.
9324 (SIZE_MAX): Define NO_PREPRO_MAGIC if SIZE_MAX is undefined.
9325
4e21fa60
MV
93262001-11-03 Marius Vollmer <mvo@zagadka.ping.de>
9327
9328 * eval.c (scm_m_begin): Allow `(begin)`, with no subforms.
9329 (SCM_CEVAL): Evaluate an empty `begin' to SCM_UNSPECIFIED.
9330
08112c95
MD
93312001-11-02 Mikael Djurfeldt <mdj@linnaeus>
9332
7663c008
MD
9333 * print.c (scm_iprin1): Mark print state as revealed when
9334 dispatching to generic write or display.
9335
08112c95
MD
9336 * unif.c (scm_ra2contig): Fixed memory overwrite bug.
9337
f712d833
MV
93382001-11-02 Marius Vollmer <mvo@zagadka.ping.de>
9339
9340 Support for native Win32. Thanks to Stefan Jahn!
d6b8cf11 9341
f712d833
MV
9342 * Makefile.am: Add win32-uname.c, win32-uname.h, win32-dirent.c
9343 and win32-dirent.h to extra source and header files. These
9344 include the uname() and the POSIX dirent interface implementation
9345 for M$-Windows. Put `-no-undefined' into LDFLAGS to support
9346 linkers which do not allow unresolved symbols inside shared
9347 libraries. Corrected `guile_filter_doc_snarfage$(EXEEXT)'
9348 dependency.
9349
d6b8cf11
TTN
9350 * __scm.h: Defined SCM_API. This macro gets prepended to all
9351 function and data definitions which should be exported or imported
f712d833
MV
9352 in the resulting dynamic link library in the Win32 port.
9353
9354 * __scm.h, alist.h, arbiters.h, async.h, backtrace.h, boolean.h,
d6b8cf11 9355 chars.h, continuations.h, coop-defs.h, coop-threads.h,
f712d833
MV
9356 debug-malloc.h, debug.h, deprecation.h, dynl.h, dynwind.h,
9357 environments.h, eq.h, error.h, eval.h, evalext.h, extensions.h,
9358 feature.h, filesys.h, fluids.h, fports.h, gc.h, gdb_interface.h,
9359 gdbint.h, gh.h, goops.h, gsubr.h, guardians.h, hash.h, hashtab.h,
9360 hooks.h, init.h, ioext.h, iselect.h, keywords.h, lang.h, list.h,
d6b8cf11 9361 load.h, macros.h, mallocs.h, modules.h, net_db.h, numbers.h,
f712d833
MV
9362 objects.h, objprop.h, options.h, pairs.h, ports.h, posix.h, print.h,
9363 procprop.h, procs.h, properties.h, ramap.h, random.h, rdelim.h,
9364 read.h, regex-posix.h, root.h, rw.h, scmsigs.h, script.h, simpos.h,
9365 smob.h, socket.h, sort.h, srcprop.h, stackchk.h, stacks.h, stime.h,
9366 strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h,
9367 tags.h, threads.h, throw.h, unif.h, values.h, variable.h, vectors.h,
9368 vports.h, weaks.h:
9369 Prefixed each each exported symbol with SCM_API.
9370
d6b8cf11 9371 * continuations.c: Added comment about the use of the extern
f712d833
MV
9372 declarations of {get,set}context() functions used in the ia64 port.
9373
9374 * continuations.h, gc.c: `__libc_ia64_register_backing_store_base'
9375 is meant to be a `unsigned long *'.
9376
9377 * filesys.c: Include `direct.h' if possible. Use local
9378 `win32-dirent.h' for the native M$-Windows port. Define S_IS*()
9379 macros for M$-Windows. Implementation of `fstat_Win32()' which is
9380 able to differentiate between sockets and other file descriptors.
9381 Use this function as wrapper in `scm_fstat()'. Fixed typo in
9382 `scm_dirname()'.
9383
9384 * fports.c: Include `io.h' is possible. Put `*fp' into referring
9385 statement block in `scm_fport_buffer_add()'.
9386 Some corrections in `getflags()'.
d6b8cf11 9387
f712d833
MV
9388 * gdb_interface.h (GDB_INTERFACE): Also support __CYGWIN__.
9389
9390 * guile.c: Make sure to define __SCM_IMPORT__ for shared library
9391 build on Win32. Disable preloaded symbols on Win2 platforms.
9392
9393 * ioext.c, ports.c: Include `io.h' is possible.
9394
9395 * mkstemp.c: Include `process.h' is possible.
9396
9397 * net_db.c: Disable extern declaration of `h_errno' for __CYGWIN__,
9398 too.
9399 Put `scm_return_entry()' into HAVE_GETSERVENT conditional.
9400
9401 * posix.c: Remove unnecessary dirent includes and defines. Include
9402 local `win32-uname.h' for MinGW. Extern declaration of
9403 `mkstemp()' for systems where it does not exists. Make
9404 `getlogin()' available on M$-Windows.
9405
9406 * scmsigs.c: Made `usleep()' avalable on MinGW.
9407
9408 * stime.c: On M$-Windows `tzname[]' is known to be `_tzname[]'.
9409
9410 * win32-dirent.c: Include "win32-dirent.h", not "dirent.h".
9411
9412 * win32-uname.c: Include "win32-uname.h", not "uname.h".
9413
d245ce23
MD
94142001-10-28 Mikael Djurfeldt <mdj@linnaeus>
9415
9416 * unif.c (scm_uniform_array_read_x, scm_uniform_array_write):
9417 Don't apply scm_uniform_vector_length on arrays.
9418
8ea46249
DH
94192001-10-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
9420
9421 * eval.c (scm_lookupcar, scm_m_letstar, scm_m_do, iqq,
9422 scm_m_define, scm_m_letrec1, scm_m_let, scm_m_expand_body,
9423 scm_macroexp, unmemocopy, scm_eval_args, scm_deval_args,
9424 SCM_CEVAL, scm_map, scm_init_eval): When building lists, prefer
9425 scm_list_<n> over scm_cons[2]?.
9426
9427 (scm_unmemocar, scm_m_cond, scm_m_letstar, scm_m_letrec1,
9428 scm_m_let, scm_m_atbind, unmemocopy, SCM_CEVAL, SCM_APPLY): Use
9429 SCM_C[AD][AD]R instead of explicit form.
9430
9431 (scm_m_set_x, scm_m_cond, scm_m_letstar, scm_m_do): Reordered
9432 comparison parameters.
9433
9434 (scm_m_case, scm_m_cond, scm_m_letstar, scm_m_do, SCM_CEVAL): Use
9435 !SCM_NULLP instead of SCM_NIMP.
9436
9437 (scm_m_case): Don't copy the form. Renamed proc to clause and
9438 minimized its scope. Renamed x to clauses. Removed side
9439 effecting operation from macro call.
9440
9441 (scm_m_cond): Don't copy the form. Renamed arg1 to clause and
9442 minimized its scope. Renamed x to clauses. Minimized the scope
9443 of variable 'len'. Make sure the else clause is treated specially
9444 even in case of '=>' occurences. Don't change the else to #t in
9445 order to be able to distinguish this case in the evaluator. Leave
9446 type checking of the recipient to the evaluator.
9447
9448 (scm_c_improper_memq): Made the comment somewhat clearer.
9449
9450 (scm_m_lambda): Renamed proc to formals. Removed unnecessary
9451 test for SCM_IM_LET at the place of the formal parameters.
9452 Simplified the formal parameter checking.
9453
9454 (scm_m_letstar): Added Comment. Renamed proc to bindings.
9455 Renamed arg1 to binding and minimized its scope. Eliminated
9456 unnecessary consing.
9457
9458 (scm_m_do): Renamed proc to bindings. Minimized the scope of
9459 variable 'len'.
9460
9461 (build_binding_list): New static function.
9462
9463 (unmemocopy): Don't use SCM_TYP7 on pairs (it's unclean).
9464 Further, split up the 'letrec' unmemoizing code to the
9465 corresponding parts for 'do', 'let' and 'letrec', adding comments
9466 to each form. Cleanup the handling of the do form (This removes
9467 some *real* code :-).
9468
9469 (SCM_CEVAL): Removed side effecting operation from macro call.
9470 Handle the 'else clause of the 'cond form specially - the symbol
9471 'else is not replaced with #t any more.
9472
8186c4f5
GH
94732001-10-14 Gary Houston <ghouston@arglist.com>
9474
9475 * version.c (scm_version): use sprintf instead of snprintf,
9476 for portability. thanks to Bill Schottstaedt.
9477
89759084
MD
94782001-10-14 Mikael Djurfeldt <mdj@linnaeus>
9479
9480 * read.c (scm_lreadr): When user-defined hash procedure returns
9481 SCM_UNSPECIFIED: Fall back to standard handling instead of raising
9482 an exception. (This prevents parsing of uniform vectors from
9483 interfering with parsing of numbers.)
9484
9c7ce563
MV
94852001-10-13 Marius Vollmer <mvo@zagadka.ping.de>
9486
9487 * numbers.c: Set NO_PREPRO_MAGIC when defining our version of
9488 PTRDIFF_MIN. Thanks to Ken Raeburn.
9489
94902001-10-07 Marius Vollmer <mvo@zagadka.ping.de>
9491
9492 * Makefile.am (EXTRA_libguile_la_SOURCES): Added "mkstemp.c".
9493
9494 * eval.c (scm_m_atbind): First try to find the variable without
9495 defining it locally; when it has not been found, define it
9496 locally.
9497
9498 * modules.c (module_variable): Pass over variables that exist but
9499 are unbound.
9500
95012001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
9502
9503 * backtrace.c (display_backtrace_file_and_line): Only use
9504 scm_basename when POSIX support is compiled in. Thanks to Chris
9505 Cramer.
9506
1fe5e088
DH
95072001-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9508
9509 * numbers.c (mem2uinteger): Return number read so far when coming
9510 across a hexdigit after having read a # or if not reading a hex
9511 value. This will enable the calling code to correctly handle
9512 forms like 1e2. (The background is, that the exponent markers d,
9513 e and f are also hexdigits.) Thanks to Mikael Djurfeldt for
9514 providing this patch.
9515
9516 (mem2complex): Fix erroneous double-negation. Now, numbers like
9517 1-i will be read correctly.
9518
68665a97
MD
95192001-10-12 Mikael Djurfeldt <mdj@linnaeus>
9520
9521 * debug.c (scm_mem_to_proc): Fixed typo in previous change.
9522
9523 * validate.h (SCM_VALIDATE_DOUBLE_DEF_COPY): New macro.
9524
d5cf5324
DH
95252001-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
9526
9527 * print.c (scm_print_state_vtable, print_state_pool):
9528 Initialize. These variables are now registered as gc roots.
9529
9530 (scm_current_pstate): Update documentation.
9531
9532 (scm_current_pstate, scm_make_print_state, scm_free_print_state,
9533 scm_prin1, scm_init_print): print_state_pool is registered as a
9534 gc root and thus does not need to be protected by a surrounding
9535 pair any more.
9536
9537 (make_print_state): The car of print_state_pool no longer holds
9538 the scm_print_state_vtable.
9539
9540 (scm_current_pstate, scm_make_print_state, print_circref,
9541 scm_iprin1, scm_prin1, scm_iprlist): Prefer !SCM_<foo> over
9542 SCM_N<foo>.
9543
9544 (scm_prin1): When building lists, prefer scm_list_<n> over
9545 scm_cons[2]?.
9546
9547 (scm_iprlist): Removed a redundant SCM_IMP test.
9548
9549 (scm_simple_format): Use SCM_EQ_P to compare SCM values.
9550
37c56aec
DH
95512001-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
9552
9553 * debug.c (scm_make_iloc): Prefer !SCM_<foo> over SCM_N<foo>.
9554
9555 (scm_memcons, scm_mem_to_proc): When building lists, prefer
9556 scm_list_<n> over scm_cons[2]?.
9557
9558 (scm_mem_to_proc): Prefer SCM_CONSP over SCM_NIMP.
9559
9560 (scm_procedure_name): Use SCM_CADR instead of explicit form.
9561
9562 (debugobj_print): Coerce scm_intprint arg 1 to long, not int.
9563 Thanks to Rob Browning for the patch (see log entry 2001-09-21) -
9564 for some reason his patch didn't make it into the cvs.
9565
79d34f68
DH
95662001-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
9567
9568 * numbers.c (mem2decimal_from_point): Cleaned up the parsing a
9569 little bit - should even be somewhat more accurate now.
9570
5e137c65
RB
95712001-10-08 Rob Browning <rlb@defaultvalue.org>
9572
9573 * gc.c: support ia64 register backing store.
9574 (SCM_MARK_BACKING_STORE): new macro.
9575
9576 * continuations.h: support ia64 register backing store.
9577 (struct scm_t_contregs): add ia64 register backing store.
9578
9579 * continuations.c: support ia64 register backing store.
9580 (continuation_mark): mark ia64 register backing store.
9581 (continuation_free): free ia64 register backing store.
9582 (scm_make_continuation): capture ia64 register backing store.
9583 (copy_stack_and_call): copy ia64 register backing store.
9584
ee083ac2
DH
95852001-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
9586
9587 * hashtab.c (scm_hash_fn_create_handle_x): The result of assoc_fn
9588 is known to be #f if no entry is found. Thus, use !SCM_FALSEP
9589 instead of SCM_NIMP to test for that case.
9590
9591 * strings.h (SCM_SET_STRING_LENGTH): Cast the length to
9592 scm_t_bits instead of long.
9593
71dcdbf9
MV
95942001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
9595
9596 * tags.h (SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
9597 SCM_T_SIGNED_BITS_MIN): New.
9598 * numbers.h (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM):
9599 Use them to make these macros computable by the preprocessor.
9600
9601 * num2integral.i.c (INTEGRAL2NUM): Let the preprocessor test
9602 whether the integral type fits in a fixnum, not the compiler.
9603 This removes a spurious compiler warning. Also, honor the
9604 NO_PREPRO_MAGIC flag to suppress any preprocessor tests. This is
9605 needed for `long long's.
9606
9607 * numbers.c: Define NO_PREPRO_MAGOC when including
9608 num2integral.c.i for `long long' and `signed long long'.
9609
152812c0
MD
96102001-10-06 Mikael Djurfeldt <mdj@linnaeus>
9611
9612 These changes fixes a race condition in the Guile coop - pthread
9613 compatibility code.
d6b8cf11 9614
152812c0
MD
9615 * coop.c (mother_awake_p): New variable.
9616 (coop_create): Set mother_awake_p before creating or signalling
9617 mother; wait until mother is going to sleep before returning.
9618 (mother): Reset mother_awake_p before going to sleep.
9619
11d49f54
DH
96202001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
9621
9622 * options.c (protected_objects, scm_init_options): The content of
9623 protected_objects is now protected from garbage collection using
9624 scm_gc_register_root instead of scm_permanent_object.
9625
9626 (get_option_setting): New static function that computes an option
9627 setting as it was formerly done in the function scm_options.
9628
9629 (get_documented_option_setting): New static function that
9630 returns option documentation as it was formerly done in the
9631 function scm_options. Note that documentation C strings are no
9632 longer precomputed into SCM objects. Instead, they are converted
9633 into SCM strings every time get_documented_option_setting is
9634 called.
9635
9636 (change_option_setting): New static functions that modifies the
9637 option setting as it was formerly done in the function
9638 scm_options. The function is now exception safe, i. e. won't
9639 cause a memory leak when interrupted. Further, only non-immediate
9640 option values are added to the protection list.
9641
9642 (scm_options): This function now has only the purpose to dispatch
9643 to to get_option_setting, get_documented_option_setting or
9644 change_option_setting, depending on the arguments given to
9645 scm_options.
9646
9647 (scm_init_opts): Don't convert documentation C strings into SCM
9648 strings. Further, don't protect any object values: They _must_
9649 be immediate values, otherwise there is no guarantee that they
9650 have not been collected before anyway.
9651
9652 * options.[ch] (scm_t_option): Made type unsigned, name into a
9653 constant char* and val into a scm_t_bits type.
9654
9655 (scm_options, scm_init_opts): The number of options is guaranteed
9656 to be larger or equal to zero. Thus, the type is changed to
9657 unsigned.
9658
3dbacabc
DH
96592001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
9660
9661 * num2integral.i.c (NUM2INTEGRAL): Eliminated some warnings about
9662 testing an unsigned value for being >= 0.
9663
14282d0f
DH
96642001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
9665
9666 * numbers.h: Removed old comment about using SCM_CAR to access
9667 non-pair cells.
9668
9669 (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM): Make sure
9670 the return value is signed. Thanks to Brian Crowder for the bug
9671 report.
9672
9673 (SCM_SRS): Avoid unnecessary casting and don't unpack input
9674 values. With this patch, SCM_SRS can be safely used for other
9675 types than scm_t_signed_bits. However, it should still better be
9676 an internal macro and thus be renamed to SCM_I_SRS.
9677
9678 (SCM_MAKINUM, SCM_INUM): Use proper casting.
9679
2dbec7b5
GH
96802001-10-03 Gary Houston <ghouston@arglist.com>
9681
9682 * continuations.h, unif.h: in the descriptions of the bit patterns
9683 of the heap cells, make bit 0 the least significant.
9684
cf4ee841
TTN
96852001-09-25 Thien-Thi Nguyen <ttn@glug.org>
9686
9687 * chars.h (SCM_MAKE_CHAR): Use `scm_t_bits' instead of `intptr_t'.
9688 Thanks to Golubev I. N.
9689
4a151b3d
GH
96902001-09-25 Gary Houston <ghouston@arglist.com>
9691
9692 * ports.c (scm_drain_input): extended the docstring. thanks to
9693 Alex Schroeder and Thien-Thi Nguyen.
9694
581ded70
MD
96952001-09-23 Mikael Djurfeldt <mdj@linnaeus>
9696
9697 * validate.h (SCM_NUM2FLOAT, SCM_NUM2DOUBLE,
9698 SCM_VALIDATE_FLOAT_COPY, SCM_VALIDATE_DOUBLE_COPY): New
9699 macros. (The NUM names might soon change.)
9700
9701 * numbers.h: Added missing declarations.
9702
5437598b
MD
97032001-09-22 Mikael Djurfeldt <mdj@linnaeus>
9704
9705 * Makefile.am: Distribute num2float.i.c.
9706
9707 * num2float.i.c: New file, multiply included by numbers.c, used
9708 to "templatize" the float <-> num conversion routines.
9709
9710 * numbers.c: New functions: scm_num2float, scm_float2num,
9711 scm_num2double, scm_double2num.
9712
0b073f0f
RB
97132001-09-21 Rob Browning <rlb@defaultvalue.org>
9714
9715 * .cvsignore: really add version.h
9716
9717 * strings.h (SCM_SET_STRING_LENGTH): coerce "l" to a long.
9718 Otherwise it fails on the alpha. However, we might rather choose
9719 this size conditionally.
9720
9721 * numbers.c (scm_gcd): change "k" to a long from an int.
9722 Otherwise it fails on the alpha. However, we might rather choose
9723 this size conditionally.
9724
9725 * error.c (scm_wta): coerce char* to intptr_t before int
9726 assignment.
9727
9728 * debug.c (debugobj_print): coerce scm_intprint arg 1 to long, not
9729 int.
9730
9731 * chars.h (SCM_MAKE_CHAR): coerce value to intptr_t.
9732
2830fd91
MD
97332001-09-20 Mikael Djurfeldt <mdj@linnaeus>
9734
9735 * numbers.c (scm_integer_expt): Accept inexact integer in second
9736 argument. (Thanks to Bill Schottstaedt.)
9737
c13f0a90
RB
97382001-09-20 Rob Browning <rlb@defaultvalue.org>
9739
9740 * .cvsignore: add version.h
9741
9742 * versiondat.h.in: removed (obsolete).
9743
9744 * version.h.in: renamed from version.h.
9745 (SCM_GUILE_MAJOR_VERSION): new public macro.
9746 (SCM_GUILE_MINOR_VERSION): new public macro.
9747 (SCM_GUILE_MICRO_VERSION): new public macro.
9748
9749 * version.h: renamed to version.h.in.
9750
9751 * version.c
9752 (scm_major_version): support integer *_VERSION macros.
9753 (scm_minor_version): support integer *_VERSION macros.
9754 (scm_micro_version): support integer *_VERSION macros.
9755 (scm_version): support integer *_VERSION macros.
9756
147c18a0
MD
97572001-09-20 Mikael Djurfeldt <mdj@linnaeus>
9758
9759 * error.c, error.h: Made error keys globally accessible.
9760 Applications might want to test for these or use them in a direct
9761 call to scm_error.
9762
9763 * num2integral.i.c (NUM2INTEGRAL): Report an error when these
9764 routines are passed an inexact. This change in behavior is
9765 motivated by concordance with R5RS: It is more common that a
9766 primitive doesn't want to accept an inexact for an exact.
9767
662c5539
DH
97682001-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
9769
9770 The following patch partially undoes my patch from 2001-06-30,
9771 where I added the function scm_gc_mark_cell_conservatively. The
9772 function is buggy, since it breaks guile during conservative
9773 marking if a pointer on the stack points directly into the list of
9774 free cells on the heap: With conservative cell marking this will
9775 cause the whole free list to be scanned and marked - boom!
9776
9777 * gc.c (allocated_mark, MARK, heap_segment,
9778 scm_gc_mark_cell_conservatively, scm_init_storage), gc.h
cf4ee841 9779 (scm_gc_mark_cell_conservatively): Remove function
662c5539
DH
9780 scm_gc_mark_cell_conservatively and update the corresponding
9781 comments and uses accordingly. Thanks to Christopher Cramer for
9782 the patch. (Minor corrections by me.)
9783
6c1b7628
GH
97842001-09-15 Gary Houston <ghouston@arglist.com>
9785
9786 * root.h (scm_root_state): removed the continuation_stack and
9787 continuation_stack_ptr members, which have no apparent purpose.
9788 (scm_continuation_stack, scm_continuation_stack_ptr): #defines
9789 removed.
662c5539 9790
6c1b7628
GH
9791 * root.c (root_mark), init.c (restart_stack, start_stack), gc
9792 (scm_igc): remove all references to contination_stack and
9793 continuation_stack_ptr, avoiding allocation of a vector and
9794 useless processing during gc.
9795
455c0ac8
DH
97962001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9797
9798 * guardians.c (tconc_t, t_tconc): Renamed tconc_t to t_tconc.
9799
9800 (TCONC_IN): Make sure that the cell word 0 is initialized last.
9801
9802 (guardians_t, t_guardians): Renamed guardians_t to t_guardians.
9803
9804 (GUARDIAN, GUARDIAN_DATA): Renamed GUARDIAN to GUARDIAN_DATA.
9805
9806 (guardian_apply, scm_get_one_zombie, scm_make_guardian,
9807 mark_and_zombify): Prefer !SCM_<foo> over SCM_N<foo>.
9808
22ba637b
DH
98092001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9810
9811 * guardians.c (mark_dependencies_in_tconc,
9812 whine_about_self_centered_zombies, scm_init_guardians): Register
9813 the static global variable `self_centered_zombies' via
9814 scm_gc_register_root, to make some cdr-ing unnecessary.
9815
c3c4d801
DH
98162001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9817
9818 * backtrace.c (display_backtrace_file,
9819 display_backtrace_file_and_line): Use SCM_EQ_P when comparing SCM
9820 values, use SCM_FALSEP when comparing SCM values against #f.
9821 Thanks to Rob Browning for the bug report.
9822
b00418df
DH
98232001-09-12 Martin Baulig <martin@home-of-linux.org>
9824
9825 * strings.[ch] (scm_str2string): New function.
9826
a0d34a0b
MV
98272001-09-06 Marius Vollmer <mvo@zagadka.ping.de>
9828
9829 * gc.c (scm_done_free): Always subtract size from scm_mallocated
9830 when computing nm, even if it's negative.
9831 (scm_must_malloc): Abort on overflow of scm_mtrigger.
9832 (scm_must_realloc): Likewise.
9833
b10586f0
ML
98342001-09-01 Michael Livshin <mlivshin@bigfoot.com>
9835
9836 * numbers.c (scm_sys_check_number_conversions): new function,
9837 defined if Guile is compiled in debugging mode. currently checks
9838 `scm_num2ulong', should check much much more.
9839
9840 * num2integral.i.c (NUM2INTEGRAL): when converting a bignum to
9841 unsigned, ensure that it's positive. thanks to Martin Baulig!
cf4ee841 9842
8c494e99
DH
98432001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
9844
9845 * __scm.h: Added new section about compile time selectable
9846 features.
9847
9848 (long_long, ulong_long, scm_sizet, SCM_WNA, SCM_OUTOFRANGE,
9849 SCM_NALLOC, SCM_HUP_SIGNAL, SCM_INT_SIGNAL, SCM_FPE_SIGNAL,
9850 SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL, SCM_GC_SIGNAL,
9851 SCM_TICK_SIGNAL, SCM_SIG_ORD, SCM_ORD_SIG, SCM_NUM_SIGS):
9852 Removed.
9853
9854 * deprecation.c (scm_include_deprecated_features): Simplified.
9855
9856 * eval.c (EVALCAR, unmemocopy), eval.h (SCM_XEVALCAR): Use
9a5fa6e9 9857 `SCM_IMP' instead of `!SCM_CELLP´.
8c494e99
DH
9858
9859 * eval.c (unmemocopy): Eliminate redundant SCM_CELLP tests.
9860 Extract side-effecting operations from macros.
9861
9862 (scm_init_eval): Don't initialize *top-level-lookup-closure*,
9863 scm_top_level_lookup_closure_var and scm_system_transformer.
9864
9865 * gc.c (CELL_P): New local definition to replace SCM_CELLP.
9866
9867 (heap_segment): Use CELL_P instead of SCM_CELLP.
9868
9869 * init.c (start_stack): Don't initialize
9870 scm_top_level_lookup_closure_var and scm_system_transformer.
9871
9872 * modules.c (scm_set_current_module): Don't access
9873 scm_top_level_lookup_closure_var and scm_system_transformer.
9874
9875 (scm_sym2var): Don't call scm_variable_set_name_hint.
9876
9877 (scm_post_boot_init_modules): Removed deprecated initializations.
9878
9879 * print.c (scm_ipruk): Don't access cell contents of non cells.
9880
9881 * strings.c (scm_string_set_x): All strings are writable.
9882
9883 * strings.h (SCM_STRINGP): Use SCM_TYP7 to determine the string
9884 type. There is only one string type now.
9885
9886 (SCM_STRING_COERCE_0TERMINATION_X): Deprecated.
9887
9888 * tags.h: Remove comments about two different string types.
9889
9890 (SCM_CELLP, SCM_NCELLP): Deprecated.
9891
9892 * variable.c (make_variable): Remove code variant for vcells.
9893
9894 * variable.h (SCM_VARIABLE_REF, SCM_VARIABLE_SET,
9895 SCM_VARIABLE_LOC): Remove code variant for vcells.
9896
9897 * __scm.h, deprecation.[ch]: Renamed SCM_DEBUG_DEPRECATED to
9898 SCM_ENABLE_DEPRECATED with the logic reversed.
9899
9900 * dynl.c (moddata, registered_mods), dynl.[ch]
9901 (scm_register_module_xxx, scm_registered_modules,
9902 scm_clear_registered_modules), error.[ch] (scm_wta), eval.c
9903 (*top-level-lookup-closure*), eval.[ch]
9904 (scm_top_level_lookup_closure_var, scm_system_transformer,
9905 scm_eval_3, scm_eval2), gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR,
9906 SCM_SETAND_CDR, SCM_SETOR_CDR, SCM_FREEP, SCM_NFREEP,
9907 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
9908 SCM_GCCDR), gc.[ch] (scm_remember, scm_protect_object,
9909 scm_unprotect_object), modules.c (root_module_lookup_closure,
9910 scm_sym_app, scm_sym_modules, module_prefix, make_modules_in_var,
9911 beautify_user_module_x_var, try_module_autoload_var,
9912 scm_module_full_name), modules.[ch] (scm_the_root_module,
9913 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
cf4ee841 9914 ports.h (scm_port, scm_ptob_descriptor, scm_port_rw_active),
8c494e99
DH
9915 ports.[ch] (scm_close_all_ports_except), random.h (scm_rstate,
9916 scm_rng, scm_i_rstate), strings.h (SCM_SLOPPY_STRINGP,
9917 SCM_RWSTRINGP, SCM_STRING_UCHARS, SCM_STRING_CHARS), strings.[ch]
9918 (scm_read_only_string_p, scm_makstr, scm_makfromstr,
9919 scm_make_shared_substring), tags.h (scm_tc7_substring,
9920 SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP, scm_tc7_ssymbol,
9921 scm_tc7_msymbol, scm_tcs_symbols), variable.c (sym_huh),
9922 variable.[ch] (scm_variable_set_name_hint, scm_builtin_variable),
9923 variable.h (SCM_VARVCELL, SCM_UDVARIABLEP, SCM_DEFVARIABLEP):
9924 Removed.
9925
9926 * dynl.c (scm_dynamic_link, scm_dynamic_func), error.c
9927 (scm_error_scm), filesys.c (scm_chown, scm_chmod, scm_open_fdes,
9928 scm_stat, scm_link, scm_rename, scm_delete_file, scm_mkdir,
9929 scm_rmdir, scm_opendir, scm_chdir, scm_symlink, scm_readlink,
9930 scm_lstat, scm_copy_file), fports.c (scm_open_file), ioext.c
9931 (scm_fdopen), net_db.c (scm_gethost, scm_getnet, scm_getproto,
9932 scm_getserv), ports.c (scm_truncate_file, scm_sys_make_void_port),
9933 posix.c (scm_getpwuid, scm_getgrgid, scm_execl, scm_execlp,
9934 scm_execle, scm_mkstemp, scm_utime, scm_access, scm_setlocale,
9935 scm_mknod, scm_crypt, scm_chroot, scm_getpass, scm_sethostname),
9936 regex-posix.c (scm_make_regexp, scm_regexp_exec), simpos.c
9937 (scm_system, scm_getenv), socket.c (scm_inet_aton), stime.c
9938 (setzone, scm_strftime, scm_strptime), vports.c
9939 (scm_make_soft_port): Remove calls to
9940 SCM_STRING_COERCE_0TERMINATION_X. Since the substring type is
9941 gone, all strings are 0-terminated anyway.
9942
9943 * dynl.h (LIBGUILE_DYNL_H, SCM_DYNL_H), random.h (RANDOMH,
9944 SCM_RANDOM_H): Renamed the macros that are defined to inhibit
9945 double inclusion of the same headers to the SCM_<filename>_H
9946 format.
9947
9948 * eval.c (SCM_CEVAL), gc.c (MARK, scm_gc_sweep), gh_data.c
9949 (gh_scm2chars), hash.c (scm_hasher), objects.c (scm_class_of),
9950 print.c (scm_iprin1): The type scm_tc7_substring does not exist
9951 any more.
9952
9953 * ports.h (SCM_PORTP, SCM_OPPORTP, SCM_OPINPORTP, SCM_OPOUTPORTP,
9954 SCM_INPUT_PORT_P, SCM_OUTPUT_PORT_P, SCM_OPENP), tags.h
9955 (SCM_TYP16_PREDICATE), variable.h (SCM_VARIABLEP): Prefer
9956 !SCM_<foo> over SCM_N<foo>.
9957
dee01b01
DH
99582001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
9959
9960 * Makefile.am: Remove references to symbols-deprecated.c.
9961
9962 * symbols.c (scm_init_symbols): Don't initialize deprecated
9963 symbol functions.
9964
9965 * symbols-deprecated.c: Removed.
9966
9967 * fluids.[ch] (scm_internal_with_fluids), gsubr.[ch]
9968 (scm_make_gsubr, scm_make_gsubr_with_generic), hooks.[ch]
9969 (scm_create_hook), list.c (list*), list.h (SCM_LIST[0-9],
9970 scm_listify), list.[ch] (scm_sloppy_memq, scm_sloppy_memv,
9971 scm_sloppy_member), load.c (scm_end_of_file_key), load.[ch]
9972 (scm_read_and_eval_x), numbers.[ch] (scm_mkbig, scm_big2inum,
9973 scm_adjbig, scm_normbig, scm_copybig, scm_2ulong2big, scm_dbl2big,
9974 scm_big2dbl), numbers.h (SCM_FIXNUM_BIT), procs.h
9975 (scm_subr_entry, SCM_SUBR_DOC), procs.[ch] (scm_make_subr_opt,
9976 scm_make_subr, scm_make_subr_with_generic), root.c (setjmp_type,
9977 setjmp_type), root.[ch] (scm_call_catching_errors), smob.[ch]
9978 (scm_make_smob_type_mfpe, scm_set_smob_mfpe), strports.[ch]
9979 (scm_strprint_obj, scm_read_0str, scm_eval_0str), symbols.h
9980 (SCM_CHARS, SCM_UCHARS, SCM_SETCHARS, SCM_SLOPPY_SUBSTRP,
9981 SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_LENGTH_MAX, SCM_LENGTH,
9982 SCM_SETLENGTH, SCM_ROSTRINGP, SCM_ROLENGTH, SCM_ROCHARS,
9983 SCM_ROUCHARS, SCM_SUBSTRP, SCM_COERCE_SUBSTR, scm_strhash,
9984 scm_sym2vcell, scm_sym2ovcell_soft, scm_sym2ovcell,
9985 scm_intern_obarray_soft, scm_intern_obarray, scm_intern,
9986 scm_intern0, scm_sysintern, scm_sysintern0,
9987 scm_sysintern0_no_module_lookup, scm_symbol_value0,
9988 scm_string_to_obarray_symbol, scm_intern_symbol,
9989 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
9990 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp,
9991 scm_init_symbols_deprecated), vectors.c (s_vector_set_length_x),
9992 vectors.[ch] (scm_vector_set_length_x): Removed.
9993
9994 * fluids.h (FLUIDSH, SCM_FLUIDS_H), gsubr.c (GSUBRH, SCM_GSUBR_H),
9995 list.h (LISTH, SCM_LIST_H), load.h (LOADH, SCM_LOAD_H), root.h
9996 (ROOTH, SCM_ROOT_H), strports.h (STRPORTSH, SCM_STRPORTS_H):
9997 Renamed the macros that are defined to inhibit double inclusion of
9998 the same headers to the SCM_<filename>_H format.
9999
10000 * procs.h (SCM_CLOSUREP, SCM_PROCEDURE_WITH_SETTER_P), symbols.h
10001 (SCM_SYMBOLP), vectors.h (SCM_VECTORP): Prefer !SCM_<foo> over
10002 SCM_N<foo>.
10003
b29058ff
DH
100042001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10005
10006 * continuations.h (scm_contregs), debug.h (scm_debug_info,
10007 scm_debug_frame, SCM_DSIDEVAL), filesys.h (SCM_OPDIRP), fports.h
10008 (scm_fport), options.h (scm_option), snarf.h (SCM_CONST_LONG,
10009 SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
10010 SCM_GLOBAL_VCELL_INIT), srcprop.h (scm_srcprops,
10011 scm_srcprops_chunk), stacks.h (scm_info_frame, scm_stack), unif.h
10012 (scm_array, scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_HUGE_LENGTH),
10013 validate.h (SCM_FUNC_NAME, SCM_WTA, RETURN_SCM_WTA,
10014 SCM_VALIDATE_NUMBER_COPY, SCM_VALIDATE_NUMBER_DEF_COPY,
10015 SCM_VALIDATE_STRINGORSUBSTR, SCM_VALIDATE_ROSTRING,
10016 SCM_VALIDATE_ROSTRING_COPY, SCM_VALIDATE_NULLORROSTRING_COPY,
10017 SCM_VALIDATE_RWSTRING, SCM_VALIDATE_OPDIR): Removed.
10018
10019 * continuations.h (CONTINUATIONSH, SCM_CONTINUATIONS_H), filesys.h
10020 (FILESYSH, SCM_FILESYS_H), fports.h (FPORTSH, SCM_FPORTS_H),
10021 options.h (OPTIONSH, SCM_OPTIONS_H), regex-posix.h (REGEXPOSIXH,
10022 SCM_REGEX_POSIX_H), snarf.h (LIBGUILE_SNARF_H, SCM_SNARF_H),
10023 srcprop.h (SCM_SOURCE_PROPERTIES_H, SCM_SRCPROP_H), unif.h
10024 (SCM_UNIFORM_VECTORS_H, SCM_UNIF_H), validate.h (SCM_VALIDATE_H__,
10025 SCM_VALIDATE_H): Renamed the macros that are defined to inhibit
10026 double inclusion of the same headers to the SCM_<filename>_H
10027 format.
10028
10029 * debug.h (SCM_RESET_DEBUG_MODE), regex-posix.h (SCM_RGXP),
10030 srcprop.h (SRCBRKP, PROCTRACEP), struct.h (SCM_STRUCTP),
10031 validate.h (SCM_VALIDATE_THUNK, SCM_VALIDATE_ARRAY,
10032 SCM_VALIDATE_VECTOR_OR_DVECTOR, SCM_VALIDATE_VTABLE): Prefer
10033 !SCM_<foo> over SCM_N<foo>.
10034
0527e687
DH
100352001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10036
10037 * _scm.h (_SCMH, SCM__SCM_H), alist.h (ALISTH, SCM_ALIST_H),
10038 arbiters.h (ARBITERSH, SCM_ARBITERS_H), backtrace.h (BACKTRACEH,
10039 SCM_BACKTRACE_H), boolean.h (BOOLEANH, SCM_BOOLEAN_H), chars.h
10040 (SCM_CHARSH, SCM_CHARS_H), coop-defs.h (COOP_DEFSH,
10041 SCM_COOP_DEFS_H), coop-threads.h (COOP_THREADSH,
10042 SCM_COOP_THREADS_H), debug-malloc.h (DEBUGMALLOCH,
10043 SCM_DEBUG_MALLOC_H), dynwind.h (DYNWINDH, SCM_DYNWIND_H),
10044 environments.h (ENVIRONMENTS_H, SCM_ENVIRONMENTS_H), eq.h (EQH,
10045 SCM_EQ_H), evalext.h (EVALEXTH, SCM_EVALEXT_H), extensions.h
10046 (LIBGUILE_EXTENSIONS_H, SCM_EXTENSIONS_H), feature.h (FEATUREH,
10047 SCM_FEATURE_H), gdbint.h (GDBINTH, SCM_GDBINT_H), guardians.h
10048 (SCM_GUARDIANH, SCM_GUARDIANS_H), hash.h (HASHH, SCM_HASH_H),
10049 hashtab.h (HASHTABH, SCM_HASHTAB_H), init.h (INITH, SCM_INIT_H),
10050 ioext.h (IOEXTH, SCM_IOEXT_H), iselect.h (ISELECTH,
10051 SCM_ISELECT_H), keywords.h (KEYWORDSH, SCM_KEYWORDS_H), lang.h
10052 (LANGH, SCM_LANG_H), mallocs.h (MALLOCSH, SCM_MALLOCS_H), net_db.h
10053 (SCM_NETDBH, SCM_NET_DB_H), objprop.h (OBJPROPH, SCM_OBJPROP_H),
10054 posix.h (POSIXH, SCM_POSIX_H), procprop.h (PROCPROPH,
10055 SCM_PROCPROP_H), properties.h (PROPERTIES_H, SCM_PROPERTIES_H),
10056 ramap.h (RAMAPH, SCM_RAMAP_H), rdelim.h (SCM_RDELIM,
10057 SCM_RDELIM_H), read.h (READH, SCM_READ_H), rw.h (SCM_RW,
10058 SCM_RW_H), scmsigs.h (SCMSIGSH, SCM_SCMSIGS_H), script.h (SCRIPTH,
10059 SCM_SCRIPT_H), simpos.h (SIMPOSH, SCM_SIMPOS_H), socket.h
10060 (SCM_SOCKETH, SCM_SOCKET_H), sort.h (SORTH, SCM_SORT_H),
10061 stackchk.h (STACKCHKH, SCM_STACKCHK_H), stime.h (STIMEH,
10062 SCM_STIME_H), strop.h (STROPH, SCM_STROP_H), strorder.h
10063 (STRORDERH, SCM_STRORDER_H), threads.h (THREADSH, SCM_THREADS_H),
10064 throw.h (THROWH, SCM_THROW_H), version.h (VERSIONH,
10065 SCM_VERSION_H), vports.h (VPORTSH, SCM_VPORTS_H): Renamed
10066 the macros that are defined to inhibit double inclusion of the
10067 same headers to the SCM_<filename>_H format.
10068
fada26b2
MV
100692001-08-27 Marius Vollmer <mvo@zagadka.ping.de>
10070
10071 * ports.c, ports.h, fprots.c, gc.c, ioext.c: Replaced
10072 "scm_t_portable" with "scm_port_table" which was an artifact from
10073 the great "scm_*_t -> scm_t_" renaming.
10074
e4d1c1ea
TTN
100752001-08-25 Thien-Thi Nguyen <ttn@revel.glug.org>
10076
10077 * gc_os_dep.c (GC_noop1): Move before `GC_find_limit' where it is
10078 used; nfc. Thanks to Bill Schottstaedt.
10079
10080 * validate.h (SCM_VALIDATE_USHORT_COPY, SCM_VALIDATE_SHORT_COPY,
10081 SCM_VALIDATE_UINT_COPY, SCM_VALIDATE_INT_COPY): New macros.
10082 Thanks to Chris Cramer.
10083
b573e744
MV
100842001-08-25 Marius Vollmer <mvo@zagadka.ping.de>
10085
10086 * Makefile.am (AUTOMAKE_OPTIONS): Change "foreign" to "gnu".
10087
10088 * eval.c (scm_m_atbind): Redesigned to behvae like `let', but with
10089 dynamic scope.
10090 * dynwind.h (scm_swap_bindings): Declare.
10091 * dynwind.c (scm_swap_bindings): Make non-static.
10092
8a3e715b
ML
100932001-08-25 Michael Livshin <mlivshin@bigfoot.com>
10094
10095 * gc.c (scm_gc_sweep): now can sweep unreachable variables (by
10096 doing exactly nothing about them). thanks Neil!
10097
cf504ee0
NJ
100982001-08-18 Neil Jerram <neil@ossau.uklinux.net>
10099
10100 * __scm.h (SCM_ENABLE_VCELLS): Fix spelling mistake in comment.
ec2667f0 10101
43b83b54
TTN
101022001-08-17 Thien-Thi Nguyen <ttn@revel.glug.org>
10103
10104 * gc.c: Fix omission bug: Add `heap_segment' forward decl
10105 (proto) in the case when either `GUILE_DEBUG' or
10106 `GUILE_DEBUG_FREELIST' preprocessor symbols are defined.
10107
10108 (map_free_list): Fix typo: Ref `f' correctly.
10109
10110 Thanks to Chris Cramer.
10111
ab4cd34b
RB
101122001-08-15 Rob Browning <rlb@defaultvalue.org>
10113
10114 * Makefile.am (libguile_la_LDFLAGS): use libtool interface version
10115 variables.
10116 (libpath.h): change libguileversion to libguileinterface.
10117
b754e3d1
MV
101182001-08-07 Marius Vollmer <mvo@zagadka.ping.de>
10119
10120 * Makefile.am (EXTRA_DIST): Distribute ChangeLog-1996-1999 and
10121 ChangeLog-2000. Thanks to Daniel Skarda!
10122
8b1d12c7
ML
101232001-08-07 Michael Livshin <mlivshin@bigfoot.com>
10124
10125 * guile-snarf-docs-texi.in: don't call the tokenizer here, we now
10126 do it from the Makefile.
10127
10128 * Makefile.am: rearrange the snarfing slightly, so that .doc files
10129 are of a reasonable size.
10130
baffb19f
NJ
101312001-08-02 Neil Jerram <neil@ossau.uklinux.net>
10132
10133 * stacks.c (scm_make_stack): Improve docstring by explaining use
10134 of cutting args.
10135
c1151355
MV
101362001-08-01 Marius Vollmer <mvo@zagadka.ping.de>
10137
10138 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
10139 scm_char_whitespace_p, scm_char_upper_case_p,
10140 scm_char_lower_case_p, scm_char_is_both_p): Do not require
10141 characters to fulfill isascii in addition to the primary
10142 predicate.
10143
3c9a524f
DH
101442001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10145
10146 * numbers.c (DIGITS, scm_small_istr2int, scm_istr2int,
10147 scm_istr2flo, scm_istring2number): Removed.
10148
10149 (iflo2str, scm_real_p, scm_integer_p): Use SCM_<foo> instead of
10150 SCM_SLOPPY_<foo>.
10151
10152 (t_exactness, t_radix, DIGIT2UINT, XDIGIT2UINT, mem2uinteger,
10153 mem2decimal_from_point, mem2ureal, mem2complex, scm_i_mem2number):
10154 Added.
10155
10156 (scm_string_to_number): Use new number parser.
10157
10158 (scm_exact_to_inexact): Replace dummy by a GPROC, which also
10159 handles complex numbers.
10160
10161 * numbers.h (NUMBERSH, SCM_NUMBERS_H): Rename <foo>H to
10162 SCM_<foo>_H.
10163
10164 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Prefer !SCM_<pred> over
10165 SCM_N<pred>.
10166
10167 (scm_istr2int, scm_istr2flo, scm_istring2number): Removed.
10168
10169 (scm_i_mem2number): Added.
10170
10171 (scm_exact_to_inexact): Changed signature.
10172
10173 * read.c (scm_lreadr): Perform the shortcut test for '+ and '-
10174 here instead of within scm_i_mem2number. Call scm_i_mem2number
10175 instead of scm_istr2int and scm_istring2number.
10176
01f11e02
DH
101772001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10178
10179 * eval.c (scm_lookupcar, scm_m_body, scm_m_lambda, unmemocopy,
10180 scm_unmemocopy, scm_badargsp, scm_eval_body, CHECK_EQVISH,
10181 SCM_CEVAL, scm_nconc2last, SCM_APPLY, scm_copy_tree): Prefer
10182 !SCM_<pred> over SCM_N<pred>.
10183
10184 (scm_eval_body): Remove side effecting code from macro call.
10185
10186 (SCM_CEVAL, SCM_APPLY): Remove goto statement and redundant
10187 SCM_NIMP test.
10188
6cf69537
DH
101892001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10190
10191 * pairs.h (SCM_VALIDATE_PAIR): Use SCM_CONSP, not SCM_ECONSP.
10192
54866b6c
MV
101932001-07-29 Marius Vollmer <mvo@zagadka.ping.de>
10194
10195 Removed vcell slot from structs.
43b83b54 10196
54866b6c
MV
10197 * struct.h (scm_vtable_index_vcell): Removed. Renumbered
10198 subsequent indices.
10199
10200 * struct.c (scm_struct_vtable_p): Do not check vcell slot for
10201 zero. Use scm_vtable_index_layout instead of "0" when accessing
10202 said slot.
10203 (scm_init_struct): Remove vcell slot layout code from
10204 required_vtable_fields.
10205
10206 * objects.h (scm_si_redefined, scm_si_hashsets): Renumbered.
10207
10208 * goops.c (build_class_class_slots): Removed vcell slot
10209 definition.
10210
10211 * goops.h: Renumbered slot indices. (SCM_CLASS_CLASS_LAYOUT):
10212 Removed vcell slot layout code.
10213 (scm_si_vcell): Removed.
10214
5b54c4da
MV
102152001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
10216
a0f5718e 10217 "Glocs" have been removed.
43b83b54 10218
a0f5718e
MV
10219 * tags.h: Update tag system docs.
10220 (scm_tc3_cons_gloc): Renamed to scm_tc3_struct. Changed all uses.
10221 (scm_tcs_cons_gloc): Renamed to scm_tcs_struct. Changed all uses.
10222 (SCM_ECONSP, SCM_NECONSP): Removed. Changed all uses to SCM_CONSP
10223 or SCM_NCONSP, respectively.
10224
10225 * struct.c, struct.h, srcprop.c, procs.c, procprop.c, print.c,
10226 objects.c. modules.c, goops.c, eval.c, debug.c: Changed all uses
10227 of scm_tc3_cond_gloc and scm_tcs_cons_gloc. See above.
10228
10229 * print.c (scm_iprin1): Remove printing of glocs. Do not try to
10230 tell glocs from structs.
43b83b54 10231
a0f5718e
MV
10232 * gc.c (scm_gc_mark, scm_gc_sweep): Remove handling of glocs.
10233
10234 * eval.c (scm_m_atbind): Make a list of variables, not glocs.
10235 (scm_ceval, scm_deval): For SCM_IM_BIND, fiddle with variables
10236 instead of with glocs.
10237 (EVALCAR): Do not test for glocs.
10238 (scm_lookupcar, scm_lookupcar1): Do not handle glocs in race
10239 condition.
10240 (scm_unmemocar): Do not handle glocs.
10241 (scm_m_atfop): Memoize as a variable, not as a gloc.
10242 (scm_eval_args, scm_deval_args): Do not handle glocs.
10243 (scm_ceval, scm_deval): Likewise.
43b83b54 10244
a0f5718e
MV
10245 * eval.h (SCM_XEVALCAR): Do not test for glocs.
10246 (SCM_GLOC_VAR, SCM_GLOC_VAL, SCM_GLOC_SET_VAL, SCM_GLOC_VAL_LOC):
10247 Removed.
10248
10249 * debug.h, debug.c (scm_make_gloc, scm_gloc_p): Removed.
10250
10251 * dynwind.c (scm_swap_bindings): Likewise.
10252 (scm_dowinds): Updated to recognize lists of variables instead of
10253 lists of glocs.
10254
10255 * __scm.h (SCM_CAUTIOS, SCM_RECKLESS): Update comments.
10256
43b83b54 10257
5b54c4da
MV
10258 * gc_os_dep.c (GC_noop1): Moved into the same #if/#endif context
10259 where it is needed.
43b83b54 10260
3c3db128
GH
102612001-07-25 Gary Houston <ghouston@arglist.com>
10262
10263 * numbers.c (scm_logand, scm_logior, scm_logxor): adjusted the
10264 docstrings to reflect the n-ary implementation.
10265
dd29a169
MV
102662001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
10267
10268 * eval.c (scm_ceval, scm_deval): Use "RETURN" macro when returning
10269 value of a variable, not the plain "return" statement.
10270
f5fe6c2f
MV
102712001-07-25 Marius Vollmer <mvo@zagadka.ping.de>
10272
10273 * eval.c: Allow variables in memoized code (in addition to glocs).
10274 (scm_lookupcar): Handle variables in lost races. Replace symbol
10275 with variable directly, do not make a gloc.
10276 (scm_unmemocar): Rewrite variables using a reverse lookup, just
10277 like glocs.
10278 (scm_ceval, scm_deval): Deal with variables in SCM_IM_SET and in
10279 the main switch.
10280
ee0c7345
MV
102812001-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
10282
6d9ad98a
MV
10283 * variable.c (scm_i_variable_print): Use "value" instead of
10284 "binding" since a binding is the mapping between symbols and
10285 variables, not between variables and their values.
10286
ee0c7345
MV
10287 * tags.h (scm_tc7_variable): New.
10288 * gc.c (scm_gc_mark): Handle scm_tc7_variable objects.
10289 * print.c (scm_iprin1): Likewise.
10290
10291 * variable.h (scm_tc16_variable): Removed.
10292 (SCM_VARIABLEP): Test for new tc7 code.
10293 (scm_i_variable_print): New.
10294 * variable.c (scm_tc16_variable): Removed.
10295 (variable_print): Renamed to scm_i_variable_print and made
10296 non-static.
10297 (variable_equal_p): Removed.
10298 (make_variable): Construct a tc7 object instead of a smob.
10299 (scm_init_variable): Do not register smob.
43b83b54 10300
f3805ebb
MV
103012001-07-22 Marius Vollmer <mvo@zagadka.ping.de>
10302
10303 * tags.h: Include inttypes.h when we have it.
10304
103052001-07-13 Marius Vollmer <mvo@zagadka.ping.de>
10306
10307 * tags.h (SCM_UNBOUND): Make it the 34th isym/iflag, the 33th slot
10308 is taken by the new SCM_IM_CALL_WITH_VALUES.
10309 * print.c (scm_isymnames): Update table accordingly.
43b83b54 10310
6a1677a3
GH
103112001-07-22 Gary Houston <ghouston@arglist.com>
10312
10313 * regex-posix.c (s_scm_regexp_exec): use scm_long2num not
10314 SCM_MAKINUM to convert regoff_t value to SCM.
10315
1bed8c28
GH
103162001-07-21 Gary Houston <ghouston@arglist.com>
10317
10318 * scmsigs.c: include sys/time.h for itimer stuff.
10319
e658215a
RB
103202001-07-19 Rob Browning <rlb@defaultvalue.org>
10321
10322 * gc_os_dep.c (GC_noop1): ifdef out (unused) to quiet warning.
10323
10324 * c-tokenize.lex: add option %nounput to quiet warning.
10325 Add prototype for yylex to quiet warning.
10326
10327 * scmconfig.h.in: add flags for setitimer and getitimer.
10328
10329 * scmsigs.h (scm_init_scmsigs): new prototype.
10330 (scm_init_scmsigs): new prototype.
10331
10332 * scmsigs.c (s_scm_setitimer): new function.
10333 (s_scm_setitimer): new function.
10334
58ade102
MG
103352001-07-18 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10336
10337 * alist.c, arbiters.c, async.h, backtrace.h, boolean.c, chars.c,
10338 chars.h, continuations.h, debug-malloc.h, dynl.c, feature.c,
10339 feature.h, filesys.h, fluids.h, fports.h, gc_os_dep.c,
10340 gdb_interface.h, gh_eval.c, gh_funcs.c, gh_io.c, gh_list.c,
10341 gh_predicates.c, gsubr.c, gsubr.h, guardians.h,
10342 guile-func-name-check.in, guile-snarf-docs-texi.in,
10343 guile-snarf-docs.in, guile-snarf.awk.in, guile-snarf.in,
10344 hashtab.h, iselect.h, keywords.h, lang.c, list.h, load.h,
10345 objprop.c, objprop.h, options.c, options.h, random.h,
10346 regex-posix.h, root.c, root.h, script.c, snarf.h, stackchk.c,
10347 strerror.c, strop.h, strports.h, threads.h, values.c, values.h,
10348 version.c, version.h: Updated copyright notice.
10349
6b80d352
DH
103502001-07-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
10351
10352 * goops.c (sym_layout, sym_vcell, sym_vtable, sym_print,
10353 sym_procedure, sym_setter, sym_redefined, sym_h0, sym_h1, sym_h2,
10354 sym_h3, sym_h4, sym_h5, sym_h6, sym_h7, sym_name,
10355 sym_direct_supers, sym_direct_slots, sym_direct_subclasses,
10356 sym_direct_methods, sym_cpl, sym_default_slot_definition_class,
10357 sym_slots, sym_getters_n_setters, sym_keyword_access, sym_nfields,
10358 sym_environment, scm_sym_change_class): New static variables to
10359 hold predefined symbols.
10360
10361 (build_class_class_slots): Build the list using scm_list_n
10362 instead of cons. Also, slots are already created as lists, thus
10363 making a call to maplist unnecessary.
10364
10365 (scm_class_name, scm_class_direct_supers, scm_class_direct_slots,
10366 scm_class_direct_subclasses, scm_class_direct_methods,
10367 scm_class_precedence_list, scm_class_slots, scm_class_environment,
10368 scm_method_procedure, create_standard_classes, purgatory): Use
10369 predefined symbols.
10370
10371 (build_slots_list, compute_getters_n_setters,
10372 scm_sys_initialize_object, scm_sys_inherit_magic_x,
10373 get_slot_value_using_name, set_slot_value_using_name,
10374 scm_sys_invalidate_method_cache_x, scm_generic_capability_p,
10375 scm_compute_applicable_methods, scm_sys_method_more_specific_p,
10376 make_struct_class): Prefer !SCM_<pred> over SCM_N<pred>.
10377
10378 (scm_sys_prep_layout_x): Minimize variable scopes.
10379
10380 (scm_sys_prep_layout_x, scm_sys_fast_slot_ref,
10381 scm_sys_fast_slot_set_x): Fix signedness.
10382
10383 (go_to_hell, go_to_heaven, purgatory, scm_change_object_class,
10384 lock_cache_mutex, unlock_cache_mutex, call_memoize_method,
10385 scm_memoize_method, scm_wrap_object): Use packing and unpacking
10386 when converting to and from SCM values.
10387
10388 (scm_enable_primitive_generic_x): Add rest argument checking.
10389
10390 (map, filter_cpl, maplist, scm_sys_initialize_object,
10391 scm_sys_prep_layout_x, slot_definition_using_name,
10392 scm_enable_primitive_generic_x, scm_compute_applicable_methods,
10393 call_memoize_method, scm_make, scm_make_class): Prefer explicit
10394 predicates over SCM_N?IMP tests.
10395
10396 (scm_sys_prep_layout_x): Fix typo in error message. Fix type
10397 checking.
10398
10399 (burnin, go_to_hell): Use SCM_STRUCT_DATA instead of the SCM_INST
10400 alias.
10401
63bcad19
DH
104022001-07-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
10403
10404 * fports.c (fport_print): Don't use SCM_C[AD]R for non pairs.
10405
10406 * num2integral.i.c (INTEGRAL2NUM, INTEGRAL2BIG): Fix signedness.
10407
10408 * symbols-deprecated.c (scm_gentemp): Simplify vector test.
10409
10410 * vectors.c (scm_vector_p): Eliminate redundant IMP test.
10411
4d6aae71
ML
104122001-07-12 Michael Livshin <mlivshin@bigfoot.com>
10413
10414 * strings.c (s_scm_string): fix arg position in assert.
10415
4b8ec619
GH
104162001-07-11 Gary Houston <ghouston@arglist.com>
10417
10418 * strports.c (st_write): use memcpy, not strncpy. thanks to
10419 Dale P. Smith.
10420
dbb640bd
TTN
104212001-07-09 Thien-Thi Nguyen <ttn@revel.glug.org>
10422
10423 * alist.c, alloca.c, arbiters.c, async.c, async.h, backtrace.c,
10424 boolean.c, chars.c, continuations.c, coop-defs.h, coop-threads.c,
10425 debug-malloc.h, debug.c, debug.h, dynl.c, dynwind.c, eq.c,
10426 error.c, eval.c, evalext.c, feature.c, feature.h, filesys.c,
10427 filesys.h, fluids.c, fluids.h, fports.c, fports.h, gc.c, gc.h,
10428 gdbint.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
10429 hooks.h, inet_aton.c, init.c, ioext.c, keywords.c, keywords.h,
10430 lang.c, list.c, load.c, macros.c, mallocs.c, memmove.c, modules.c,
10431 net_db.c, numbers.c, numbers.h, objects.c, objprop.c, options.c,
10432 pairs.c, pairs.h, ports.c, ports.h, posix.c, print.c, print.h,
10433 procprop.c, procs.c, procs.h, properties.c, putenv.c, ramap.c,
10434 random.c, random.h, read.c, regex-posix.c, regex-posix.h, root.c,
10435 root.h, scmsigs.c, script.c, simpos.c, smob.c, snarf.h, socket.c,
10436 sort.c, srcprop.c, srcprop.h, stackchk.c, stacks.c, stacks.h,
10437 stime.c, strerror.c, strings.c, strings.h, strop.c, strorder.c,
10438 strports.c, struct.c, struct.h, symbols-deprecated.c, symbols.c,
10439 symbols.h, tags.h, threads.c, threads.h, throw.c, unif.c, unif.h,
10440 variable.c, variable.h, vectors.c, vectors.h, version.c, vports.c,
10441 weaks.c, weaks.h: Remove "face-lift" comment.
10442
fd6c6321
RB
104432001-07-08 Rob Browning <rlb@defaultvalue.org>
10444
10445 * .cvsignore: add stamp-h.in.
10446
f91e4547
MG
104472001-07-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10448
10449 * hooks.c (scm_make_hook, scm_add_hook_x),
10450 (scm_remove_hook_x, scm_reset_hook_x, scm_run_hook): Added return
10451 value info to the docstrings.
10452
7beabedb
MG
104532001-07-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10454
10455 Some more compatibility patches for Windows.
dbb640bd 10456
7beabedb
MG
10457 * posix.c (getlogin): getlogin() implementation for Windows.
10458
10459 * backtrace.c, ioext.c: Include <stdio.h>.
10460
10461 * unif.c, script.c, rw.c, error.c: Include <io.h>, if it does
10462 exist.
10463
10464 * cpp_sig_symbols.in: Added SIGBREAK.
10465
0d0560d0
MV
104662001-07-01 Marius Vollmer <mvo@zagadka.ping.de>
10467
10468 * strports.c (scm_read_0str, scm_eval_0str): Call
10469 scm_c_read_string and scm_c_eval_string respectively, not
10470 themselves. Thanks to Dale P. Smith!
10471
9a97e362
DH
104722001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10473
10474 * unif.c (scm_array_set_x): The variable args does not
10475 necessarily have to be a list. Further, got rid of a redundant
10476 SCM_NIMP test.
10477
592996c9
DH
104782001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10479
10480 * list.c (SCM_I_CONS): Make sure the cell type is initialized
10481 last.
10482
10483 * gc.c (s_scm_map_free_list, scm_igc, scm_gc_sweep,
f91e4547 10484 init_heap_seg): Fixed signedness.
592996c9
DH
10485
10486 (init_heap_seg): Replaced strange for-loop with a while loop.
10487
10488 * weaks.h (WEAKSH, SCM_WEAKS_H): Rename <foo>H to SCM_<foo>_H.
10489
10490 (SCM_WVECTP): Prefer !SCM_<pred> over SCM_N<pred>.
10491
10492 The following patch adds conservative marking for the elements of
10493 free or allocated cells.
10494
10495 * gc.c (allocated_mark, heap_segment): New static functions.
10496
10497 (which_seg): Deleted, since the functionality is now provided by
10498 function heap_segment.
10499
10500 (map_free_list): Use heap_segment instead of which_seg.
10501
10502 (MARK): If cell debugging is disabled, mark free cells
10503 conservatively.
10504
10505 (scm_mark_locations, scm_cellp): Extracted the search for the
10506 heap segment of a SCM value into function heap_segment.
10507
10508 (scm_init_storage): Allocated cells must be marked
10509 conservatively.
10510
10511 * gc.[ch] (scm_gc_mark_cell_conservatively): New function.
10512
10513 The following patch changes the representation of weak vectors to
10514 double cells instead of using an extension of the vector's
10515 allocated memory.
10516
10517 * gc.c (MARK): Use SCM_SET_WVECT_GC_CHAIN instead of assigning to
10518 the result of SCM_WVECT_GC_CHAIN.
10519
10520 (scm_gc_sweep): Weak vectors don't have extra fields any more.
10521
10522 * weaks.c (allocate_weak_vector): New static function. It does
10523 not patch any previously created vector object during the
10524 construction of a weak vector, and thus doesn't need to switch
10525 off interrupts during vector creation.
10526
10527 (scm_make_weak_vector, scm_make_weak_key_hash_table,
10528 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
10529 Use allocate_weak_vector to provide the new weak vector object.
10530
10531 * weaks.h (SCM_WVECT_TYPE, SCM_SET_WVECT_TYPE,
10532 SCM_SET_WVECT_GC_CHAIN): New macros. The weak vector subtype is
10533 now stored in the double cell.
10534
10535 (SCM_IS_WHVEC, SCM_IS_WHVEC_V, SCM_IS_WHVEC_B, SCM_IS_WHVEC_ANY):
10536 Use SCM_WVECT_TYPE.
10537
10538 (SCM_WVECT_GC_CHAIN): The weak objects are now chained together
10539 using an entry of the double cell.
10540
4dadf664
TTN
105412001-06-30 Thien-Thi Nguyen <ttn@revel.glug.org>
10542
10543 * stamp-h.in: bye bye
10544
02202352
MV
105452001-06-30 Marius Vollmer <mvo@zagadka.ping.de>
10546
10547 * gh_eval.c (gh_eval_str): Use scm_c_eval_string instead of
10548 scm_eval_0str.
10549
10550 * load.c, load.h (scm_c_primitive_load,
10551 scm_c_primitive_load_path): New.
10552
10553 * strports.c, strports.h (scm_c_read_string): Renamed from
10554 scm_read_0str. Also, added "const" qualifier to argument.
10555 (scm_c_eval_string): Renamed from scm_eval_0str.
10556 (scm_read_0str, scm_eval_0str): Deprecated.
10557
df1ad0d1
MG
105582001-06-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10559
10560 * fluids.c (scm_c_with_fluid): Use scm_list_1() instead of
10561 SCM_LIST1.
10562
1afff620
KN
105632001-06-28 Keisuke Nishida <kxn30@po.cwru.edu>
10564
10565 * list.h (scm_list_1, scm_list_2, scm_list_3, scm_list_4, scm_list_5,
10566 scm_list_n): New functions.
10567 (SCM_LIST0, SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5,
10568 SCM_LIST6, SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify): Deprecated.
10569 (lots of files): Use the new functions.
4dadf664 10570
1afff620
KN
10571 * goops.c (CALL_GF1, CALL_GF2, CALL_GF3, CALL_GF4): Use scm_call_N.
10572
10573 * strings.c: #include "libguile/deprecation.h".
10574
b858464a
MG
105752001-06-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10576
10577 * read.c (scm_lreadr): When reading a hash token, check for a
10578 user-defined hash procedure first, so that overriding the builtin
10579 hash characters is possible (this was needed for implementing
10580 SRFI-4's read synax `f32(...)').
4dadf664 10581
b858464a
MG
10582 * num2integral.i.c: Use scm_t_signed_bits instead of scm_t_bits,
10583 because the latter is unsigned now and breaks comparisons like
10584 (n < (scm_t_signed_bits)MIN_VALUE).
4dadf664 10585
d95c0b76
NJ
105862001-06-26 Neil Jerram <neil@ossau.uklinux.net>
10587
10588 * eval.h, eval.c (scm_call_4): New function.
10589
10590 * eval.c (SCM_APPLY, SCM_CEVAL, ENTER_APPLY): Call trap handlers
10591 directly rather than dispatching to them via scm_ithrow and a lazy
10592 catch.
4dadf664 10593
d95c0b76
NJ
10594 * eval.c (scm_evaluator_trap_table), eval.h (SCM_ENTER_FRAME_HDLR,
10595 SCM_APPLY_FRAME_HDLR, SCM_EXIT_FRAME_HDLR): Add three new options
10596 for trap handler procedures.
10597
10598 * debug.h (SCM_RESET_DEBUG_MODE): Add checks for trap handler
10599 procedures not being #f.
10600
30e3be5a
ML
106012001-06-27 Michael Livshin <mlivshin@bigfoot.com>
10602
10603 * Makefile.am (c-tokenize.c): add rule to generate it.
10604 (EXTRA_DIST): add c-tokenize.lex, so it gets distributed.
10605
10606 filter-doc-snarfage.c: remove.
10607
82893676
MG
106082001-06-26 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10609
10610 * ports.c (scm_output_port_p): Use result of SCM_COERCE_OUTPORT.
10611
10612 The following set of changes makes compiling Guile under various
10613 Windows compilers easier. Compilation under GNU systems should
10614 not be affected at all.
10615
10616 Thanks to Stefan Jahn for all necessary information, patches and
10617 testing.
4dadf664 10618
82893676
MG
10619 * posix.c: Conditialize getpwent, getgrent, kill, getppid, getuid,
10620 getpgrp, ttyname, primitive-fork and some header inclusion for
10621 Windows.
10622
10623 * random.c: Define M_PI, if not predefined and use __int64 for
10624 LONG64 under Windows.
10625
10626 * scmsigs.c: Emulate some functions (alarm, sleep, kill) under
10627 Windows and conditionalize some signal names.
10628
4dadf664 10629 * socket.c (scm_getsockopt): Added missing comma.
82893676
MG
10630 Include socket library header under Windows.
10631
10632 * stime.c (CLKTCK): Add cast to int, to make it compile under
10633 Windows.
10634
10635 * ports.c (truncate): New function, compiled only under Windows.
10636
10637 * net_db.c: Do not declare errno under Windows.
10638
10639 * iselect.h, inet_aton.c: Include socket library headers under
10640 Windows.
10641
10642 * guile.c (inner_main): Under Windows, initialize socket library
10643 and initialize gdb_interface data structures.
10644
10645 * gdb_interface.h: Under Windows, gdb_interface cannot be
10646 initialized statically. Initialize at runtime instead.
10647
10648 * fports.c (write_all): ssize_t -> size_t.
10649 (fport_print): Conditionalize call to ttyname().
10650 (getflags): New function, compiled only under Windows.
10651
10652 * filesys.c: Conditionalize inclusion of <pwd.h>. Conditionalize
10653 primitives chown, link, fcntl.
10654 (scm_basename, scm_dirname): Under Windows, handle \ as well as /
10655 as path seperator.
10656
10657 * backtrace.c: Include <io.h> under Windows.
10658
10659 * async.h (ASYNCH, SCM_ASYNC_H): Rename <foo>H to SCM_<foo>_H.
10660
10661 * _scm.h: Added preprocessor conditional for __MINGW32__ for errno
10662 declaration.
10663
fdc28395
KN
106642001-06-27 Keisuke Nishida <kxn30@po.cwru.edu>
10665
10666 * eval.c (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
10667 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): New functions.
10668 * eval.h (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
10669 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): Declared.
10670 * async.c (scm_run_asyncs), coop-threads.c (scheme_body_bootstrip,
10671 scheme_handler_bootstrip), debug.c (with_traps_inner), dynwind.c
10672 (scm_dynamic_wind, scm_dowinds), environments.c
10673 (import_environment_conflict), eval.c (scm_macroexp, scm_force,
10674 scm_primitive_eval_x, scm_primitive_eval), fluids.c (apply_thunk),
10675 goops.c (GETVAR, purgatory, make_class_from_template,
10676 scm_ensure_accessor), hashtab.c (scm_ihashx, scm_sloppy_assx,
10677 scm_delx_x, fold_proc), hooks.c (scm_c_run_hook), load.c
10678 (scm_primitive_load), modules.c (scm_resolve_module,
10679 scm_c_define_module, scm_c_use_module, scm_c_export,
10680 module_variable, scm_eval_closure_lookup, scm_sym2var,
10681 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
10682 ports.c (scm_port_for_each), print.c (scm_printer_apply),
10683 properties.c (scm_primitive_property_ref), ramap.c (ramap,
10684 ramap_cxr, rafe, scm_array_index_map_x, read.c (scm_lreadr),
10685 scmsigs.c (sys_deliver_signals), sort.c (applyless), strports.c
10686 (scm_object_to_string, scm_call_with_output_string,
10687 scm_call_with_input_string), throw.c (scm_body_thunk,
10688 scm_handle_by_proc, hbpca_body), unif.c (scm_make_shared_array,
10689 scm_make_shared_array), vports.c (sf_flush, sf_write,
10690 sf_fill_input, sf_close): Use one of the above functions.
10691 * goops.c, hashtab.c, scmsigs.c, sort.c: #include "libguile/root.h".
10692
36284627
DH
106932001-06-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
10694
10695 * filesys.c (scm_close), ports.c (scm_close_port,
10696 scm_port_closed_p), strop.c (scm_string_null_p): Use SCM_BOOL
10697 instead of SCM_NEGATE_BOOL.
10698
10699 * filesys.c (scm_stat): Clean up type dispatch.
10700
10701 * filesys.c (scm_stat), ports.c (scm_input_port_p,
10702 scm_output_port_p): Get rid of redundant IM type check.
10703
10704 * filesys.c (scm_readdir, scm_getcwd, scm_readlink), gh_data.c
10705 (gh_str2scm), load.c (scm_primitive_load, scm_internal_parse_path,
10706 scm_search_path), net_db.c (scm_gethost, scm_getnet, scm_getproto,
10707 scm_return_entry), numbers.c (scm_number_to_string), objects.c
10708 (scm_make_subclass_object), ports.c (scm_port_mode), read.c
10709 (scm_lreadr), simpos.c (scm_getenv), socket.c (scm_inet_ntoa,
10710 scm_addr_vector), stime.c (scm_strftime), strings.c
10711 (scm_makfromstrs, scm_makfrom0str, scm_substring), strings.h
10712 (SCM_STRING_COERCE_0TERMINATION_X), strop.c (string_copy,
10713 scm_string_split), strports.c (scm_strport_to_string), symbols.c
10714 (scm_symbol_to_string), vports.c (sf_write): Use scm_mem2string
10715 instead of scm_makfromstr.
10716
10717 * net_db.c (scm_sethost, scm_setnet, scm_setproto, scm_setserv),
10718 ports.c (scm_close_all_ports_except), read.c (scm_lreadr,
10719 scm_read_hash_extend), stime.c (scm_strftime), strings.c
10720 (scm_string_append, scm_string), strings.h (SCM_STRINGP,
10721 SCM_STRING_COERCE_0TERMINATION_X, SCM_RWSTRINGP), strop.c
10722 (string_capitalize_x): Prefer explicit type check over SCM_N?IMP,
10723 !SCM_<pred> over SCM_N<pred>.
10724
10725 * strings.[ch] (scm_makfromstr): Deprecated.
10726
10727 (scm_mem2string): New function, replaces scm_makfromstr.
10728
10729 * strings.c (scm_substring), strop.c (string_copy,
10730 scm_string_split), strports.c (scm_strport_to_string), symbols.c
10731 (scm_symbol_to_string): Fix gc problem.
10732
10733 * strings.h (STRINGSH, SCM_STRINGS_H): Rename <foo>H to
10734 SCM_<foo>_H.
10735
10736 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Eliminate
10737 warning about comparing signed and unsigned values. This fix is
10738 not optimal, since it won't work reliably if sizeof (c_start) >
10739 sizeof (size_t) or sizeof (c_end) > sizeof (size_t). A better
10740 solution is to define this macro as an inline function, thus
10741 allowing to specifiy the types of c_start and c_end.
10742
13dcb666
DH
107432001-06-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
10744
10745 * debug.h (SCM_DEBUGOBJ_FRAME): Deliver result as a
10746 scm_t_debug_frame*.
10747
10748 * debug.h (DEBUGH, SCM_DEBUG_H), stacks.h (STACKSH, SCM_STACKSH):
10749 Rename <foo>H to SCM_<foo>_H.
10750
10751 * stacks.c (NEXT_FRAME, narrow_stack): Prefer explicit type check
10752 over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
10753
10754 (narrow_stack): Make i unsigned. Don't use side-effecting
10755 operations in conditions.
10756
10757 (narrow_stack, scm_make_stack, scm_stack_id,
10758 scm_last_stack_frame): Get rid of redundant SCM_N?IMP checks.
10759
10760 (scm_make_stack, scm_stack_id, scm_last_stack_frame): Clean up
10761 type dispatch. No need to cast result of SCM_DEBUGOBJ_FRAME any
10762 more.
10763
10764 (scm_stack_ref, scm_frame_previous, scm_frame_next): Fix
10765 signedness.
10766
ea2c3968 10767 (scm_last_stack_frame): Remove bogus `;'.
13dcb666
DH
10768
10769 * stacks.h (SCM_FRAMEP): Fix type check.
10770
ac13d9d2
ML
107712001-06-25 Michael Livshin <mlivshin@bigfoot.com>
10772
ee0c0e03
ML
10773 * Makefile.am (MAINTAINERCLEANFILES): be sure to remove
10774 c-tokenize.c when doing maintainer-clean.
10775
ac13d9d2
ML
10776 * snarf.h (SCM_SNARF_DOCS): change the "grammar" slightly.
10777
10778 * guile-snarf-docs.in, guile-snarf-docs-texi.in: rewrite &
10779 simplify.
10780
10781 * eval.c: all hash signs are in column 0.
10782
10783 * Makefile.am (guile_filter_doc_snarfage): build using
10784 c-tokenize.c, not filter-doc-snarfage.c.
10785 rearrange snarfing dependencies a bit.
10786
10787 * c-tokenize.lex: new file.
10788
16be44e5
MV
107892001-06-25 Marius Vollmer <mvo@zagadka.ping.de>
10790
10791 * srcprop.h, srcprop.c (scm_srcprops_to_plist): Renamed from
10792 scm_t_srcpropso_plist. See the big type renaming.
10793 * coop-defs.h (scm_mutex_trylock, scm_cond_timedwait): Likewise.
10794 Thanks to Seth Alves!
4dadf664 10795
16be44e5
MV
10796 * numbers.c (SIZE_MAX, PTRDIFF_MIN, PTRDIFF_MAX): Only define when
10797 they aren't defined already.
10798
5843e5c9
DH
107992001-06-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
10800
10801 * backtrace.c (display_backtrace_body): Use SCM_VALIDATE_STACK
10802 and SCM_VALIDATE_OPOUTPORT instead of SCM_ASSERT. Fix signedness
10803 problem.
10804
10805 * backtrace.c (display_expression, scm_set_print_params_x,
10806 display_application, display_frame, scm_backtrace), numbers.c
10807 (scm_istring2number), objects.c (scm_class_of,
10808 scm_mcache_lookup_cmethod, scm_mcache_compute_cmethod): Prefer
10809 explicit type check over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
10810
10811 * fluids.c (scm_fluid_ref, scm_fluid_set_x): Fluid numbers are
10812 always positive.
10813
10814 * numbers.c (scm_i_mkbig): Remove unnecessary casts, remove
10815 unnecessary SCM_DEFER_INTS, SCM_ALLOW_INTS.
10816
10817 * objects.c (scm_class_of): Type fix.
10818
10819 (scm_mcache_lookup_cmethod): Improved comment, simplified,
10820 eliminated goto.
10821
10822 * pairs.h (scm_error_pair_access): The function can return if
10823 called recursively.
10824
6b41a313
MG
108252001-06-20 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10826
10827 * init.c (scm_init_guile_1): Removed initialization of tag.c.
10828
10829 * gdbint.c, init.c: Removed inclusion of tag.h.
10830
10831 * tag.h, tag.c: Removed files.
10832
10833 * Makefile.am: Removed tag.{h,c,doc,x} in various places.
10834
fbbdb121
GH
108352001-06-20 Gary Houston <ghouston@arglist.com>
10836
10837 * deprecation.c, extensions.c, rw.c: include string.h.
10838
72c17ed0
GH
108392001-06-19 Gary Houston <ghouston@arglist.com>
10840
10841 * filter-doc-snarfage.c (process): added ungetc in
10842 MULTILINE_COOKIE case since otherwise it fails when there's no
10843 space between the '(' and the quote of the following string
10844 (gcc 3.0).
10845
4ff9f825
MV
108462001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
10847
4927dd28
MV
10848 Throughout: replace "scm_*_t" with "scm_t_*", except "scm_lisp_t".
10849
b629af45
MV
108502001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
10851
10852 * unif.h (SCM_ARRAY_NDIM): Shift then cast so that no sign
0f002b27
MV
10853 extension takes place.
10854 * strings.h (SCM_STRING_LENGTH): Likewise.
10855 (SCM_STRING_MAX_LENGTH): Use unsigned numbers.
4dadf664 10856
4ff9f825
MV
10857 * __scm.h (ptrdiff_t): Typedef to long when configure didn't find
10858 it.
10859
10860 * tags.h: Include <stdint.h> when we have it.
10861 (scm_bits_t): Changed to be a unsigned type. Use uintptr_t when
10862 available. Else use "unsigned long".
10863 (scm_signed_bits_t): New.
10864
10865 * numbers.h (SCM_SRS): Cast shiftee to scm_signed_bits_t.
10866 (SCM_INUM): Cast result to scm_signed_bits_t.
10867
58bee6a8
TTN
108682001-06-13 Thien-Thi Nguyen <ttn@revel.glug.org>
10869
10870 * mkstemp.c: Update path to #include file scmconfig.h.
10871 Thanks to Golubev I. N.
10872
00d8d838
DH
108732001-06-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
10874
10875 * struct.h (SCM_STRUCT_VTABLE_FLAGS): New macro.
10876
ea2c3968 10877 * goops.h (SCM_NUMBER_OF_SLOTS): Removed bogus `\' at the end of
00d8d838
DH
10878 the macro definition.
10879
10880 (SCM_CLASSP, SCM_INSTANCEP, SCM_PUREGENERICP, SCM_ACCESSORP,
10881 SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Use SCM_STRUCT_VTABLE_FLAGS
10882 instead of SCM_INST_TYPE.
10883
10884 (SCM_ACCESSORP, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Make sure
10885 the object is a struct before accessing its struct flags.
10886
10887 (SCM_INST_TYPE, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Deprecated.
10888
495c67e5
GH
108892001-06-10 Gary Houston <ghouston@arglist.com>
10890
10891 * rdelim.c (scm_init_rdelim_builtins): don't try to activate the
10892 (ice-9 rdelim) module in (guile) and (guile-user). it didn't
10893 work reliably anymore. try it from boot-9.scm instead.
10894
6a9003d3
MV
108952001-06-09 Marius Vollmer <mvo@zagadka.ping.de>
10896
10897 * ports.c (scm_lfwrite): Maintain columnd and row count in port.
9a5fa6e9 10898 Thanks to Matthias Köppe!
58bee6a8 10899
47bcd646
ML
109002001-06-08 Michael Livshin <mlivshin@bigfoot.com>
10901
a88ff5b6
ML
10902 * snarf.h, filter-doc-snarfage.c: more changes to cope with
10903 space-happy C preprocessors.
10904
47bcd646 10905 * filter-doc-snarfage.c, guile-snarf.in: try to cope with spaces
9a5fa6e9 10906 inside cookies. thanks to Matthias Köppe!
47bcd646 10907
bab246f3
DH
109082001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
10909
10910 * keywords.c (keyword_print): Don't use SCM_C[AD]R to access
10911 keywords. Fix gc protection.
10912
10913 * objects.c (scm_mcache_lookup_cmethod): Don't use side effecting
10914 operations in macro calls.
10915
10916 * pairs.c (scm_error_pair_access): Avoid recursion.
10917
10918 Thanks to Matthias Koeppe for reporting the bugs that correspond
10919 to the following set of patches.
10920
10921 * unif.c (scm_bit_set_star_x, scm_bit_invert_x), vectors.h
10922 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Obtain the
10923 bitvector base address using SCM_BITVECTOR_BASE.
10924
10925 * unif.h (SCM_BITVECTOR_BASE): Return the base address as an
10926 unsigned long*.
10927
dcb410ec
DH
109282001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
10929
10930 * goops.c (SCM_CLASS_REDEF): Removed.
10931
10932 * vectors.h (VECTORSH, SCM_VECTORS_H): Renamed <foo>H to
10933 SCM_<foo>_H.
10934
10935 Thanks to Matthias Koeppe for reporting the bugs that correspond
10936 to the following set of patches.
10937
10938 * goops.c (scm_sys_prep_layout_x, scm_basic_basic_make_class,
10939 create_basic_classes, scm_sys_fast_slot_set_x, set_slot_value,
10940 scm_sys_allocate_instance, clear_method_cache,
10941 scm_sys_invalidate_method_cache_x, scm_make,
10942 create_standard_classes, scm_make_port_classes, scm_make_class,
10943 scm_add_slot): Use SCM_SET_SLOT to set slot values.
10944
10945 (prep_hashsets): Use SCM_SET_HASHSET to set class hash values.
10946
10947 * goops.h (SCM_SET_SLOT, SCM_SET_HASHSET): New macros.
10948
10949 * ramap.c (BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
10950 UNARY_ELTS_CODE): Remove bogus break statement.
10951
10952 * vectors.h (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR):
10953 Don't access bit vectors elements as SCM objects.
10954
10955 * weaks.c (scm_make_weak_vector, scm_make_weak_key_hash_table,
10956 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
10957 Don't assign to an unpacked value.
10958
e81d98ec
DH
109592001-06-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
10960
10961 * __scm.h (SCM_NORETURN): Moved here from error.h.
10962
10963 (SCM_UNUSED): New macro.
10964
10965 (SCM_DEBUG_PAIR_ACCESSES): New macro.
10966
10967 * backtrace.c (display_error_handler), continuations.c
10968 (continuation_print), debug.c (debugobj_print), dynwind.c
10969 (guards_print), environments.c (observer_print,
10970 core_environments_finalize, leaf_environment_cell,
10971 leaf_environment_print, eval_environment_print,
10972 eval_environment_observer, import_environment_define,
10973 import_environment_undefine, import_environment_print,
10974 import_environment_observer, export_environment_define,
10975 export_environment_undefine, export_environment_print,
10976 export_environment_observer), eval.c (scm_m_quote, scm_m_begin,
10977 scm_m_if, scm_m_set_x, scm_m_and, scm_m_or, scm_m_case,
10978 scm_m_cond, scm_m_lambda, scm_m_letstar, scm_m_do, scm_m_delay,
10979 scm_m_letrec1, scm_m_apply, scm_m_cont, scm_m_nil_cond,
10980 scm_m_nil_ify, scm_m_t_ify, scm_m_0_cond, scm_m_0_ify,
10981 scm_m_1_ify, scm_m_atfop, scm_m_at_call_with_values), evalext.c
10982 (scm_m_generalized_set_x), fluids.c (fluid_print), fports.c
10983 (fport_print), gc.c (gc_start_stats, scm_remember_upto_here_1,
10984 scm_remember_upto_here_2, scm_remember_upto_here, mark_gc_async),
10985 gh_init.c (gh_standard_handler), goops.c (get_slot_value,
10986 set_slot_value, test_slot_existence, scm_change_object_class,
10987 scm_m_atslot_ref, scm_m_atslot_set_x, make_struct_class,
10988 default_setter), guardians.c (guardian_print, guardian_gc_init,
10989 guardian_zombify, whine_about_self_centered_zombies), guile.c
10990 (inner_main), init.c (stream_handler), keywords.c (keyword_print),
10991 mallocs.c (malloc_print), numbers.c (scm_print_real,
10992 scm_print_complex, scm_bigprint), ports.c (flush_port_default,
10993 end_input_default, scm_port_print, fill_input_void_port,
10994 write_void_port), root.c (root_print), smob.c (scm_mark0,
10995 scm_free0, scm_smob_print, scm_smob_apply_1_error,
10996 scm_smob_apply_2_error, scm_smob_apply_3_error, free_print),
10997 stime.c (restorezone), strings.c (scm_makfromstr), struct.c
10998 (scm_struct_free_0, scm_struct_free_standard,
10999 scm_struct_free_entity, scm_struct_gc_init, scm_free_structs),
11000 throw.c (jmpbuffer_print, lazy_catch_print, ss_handler,
11001 scm_handle_by_throw, scm_ithrow), weaks.c
11002 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
11003 scm_scan_weak_vectors), ramap.c (scm_array_fill_int), filesys.c
11004 (scm_dir_print): Mark unused parameters with SCM_UNUSED.
11005
11006 * error.h (SCM_NORETURN): Moved to __scm.h.
11007
11008 * error.h (ERRORH, SCM_ERROR_H), pairs.h (PAIRSH, SCM_PAIRS_H):
11009 Renamed <foo>H to SCM_<foo>_H.
11010
11011 * gc.c (debug_cells_gc_interval): New static variable.
11012
11013 (scm_assert_cell_valid): If selected by the user, perform
11014 additional garbage collections.
11015
11016 (scm_set_debug_cell_accesses_x): Extended to let the user specify
11017 if additional garbage collections are desired.
11018
11019 (mark_gc_async): If additional garbage collections are selected
11020 by the user, don't call the after-gc-hook. Instead require the
11021 user to run the hook manually.
11022
11023 * pairs.c (scm_error_pair_access): New function. Only compiled
11024 if SCM_DEBUG_PAIR_ACCESSES is set to 1.
11025
11026 * pairs.h (SCM_VALIDATE_PAIR): New macro.
11027
11028 (SCM_CAR, SCM_CDR, SCM_SETCAR, SCM_SETCDR): If
11029 SCM_DEBUG_PAIR_ACCESSES is set to 1, make sure that the argument
11030 is a real pair object. (Glocs are also accepted, but that may
11031 change.) If not, abort with an error message.
11032
17fa3fcf
DH
110332001-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
11034
11035 * eval.c (SCM_VALIDATE_NON_EMPTY_COMBINATION): New macro.
11036
11037 (SCM_CEVAL, SCM_APPLY): Replace calls to SCM_EVALIM2 with calls
11038 to SCM_VALIDATE_NON_EMPTY_COMBINATION.
11039
feeedafb
MV
110402001-06-05 Marius Vollmer <mvo@zagadka.ping.de>
11041
11042 * extensions.c (scm_c_register_extension): Allow NULL as library
11043 name.
11044 (load_extension): Ignore NULL library names when comparing.
58bee6a8 11045
feeedafb
MV
11046 * hash.c (scm_hasher): Use SCM_UNPACK in the case labels so that
11047 non-pointers are being compared. Thanks to Alexander Klimov!
11048
4bcdfe46
GH
110492001-06-04 Gary Houston <ghouston@arglist.com>
11050
11051 * rw.c (scm_write_string_partial): new procedure implementing
11052 write-string/partial in (ice-9 rw).
11053 * rw.h: declare scm_write_string_partial.
58bee6a8 11054
f480396b
MV
110552001-06-04 Marius Vollmer <mvo@zagadka.ping.de>
11056
feeedafb
MV
11057 * keywords.c (keyword_print): Substract 1 from length of symbol
11058 name, accounting for the silly dash.
11059
11060 * dynl.c (scm_registered_modules, scm_clear_registered_modules):
11061 Do not emit deprecation warning.
11062
f480396b
MV
11063 Added exception notice to all files.
11064
11065 * dynl.c: Include "deprecation.h".
11066
c794483c
MV
110672001-06-03 Marius Vollmer <mvo@zagadka.ping.de>
11068
11069 * dynl.c (scm_register_module_xxx, scm_registered_modules,
11070 scm_clear_registered_modules): Deprecated.
11071
9454d8d5
RB
110722001-06-02 Rob Browning <rlb@cs.utexas.edu>
11073
11074 * .cvsignore: add guile_filter_doc_snarfage guile-snarf-docs
11075 guile-snarf-docs-texi.
11076
11077 * fports.c: HAVE_ST_BLKSIZE changed to
11078 HAVE_STRUCT_STAT_ST_BLKSIZE.
11079 (scm_fport_buffer_add): HAVE_ST_BLKSIZE changed to
11080 HAVE_STRUCT_STAT_ST_BLKSIZE.
11081
11082 * filesys.c (scm_stat2scm): HAVE_ST_RDEV changed to
11083 HAVE_STRUCT_STAT_ST_RDEV.
11084 (scm_stat2scm): HAVE_ST_BLKSIZE changed to
11085 HAVE_STRUCT_STAT_ST_BLKSIZE.
11086 (scm_stat2scm): HAVE_ST_BLOCKS changed to
11087 HAVE_STRUCT_STAT_ST_BLOCKS.
11088
114f9bab
MV
110892001-06-02 Marius Vollmer <mvo@zagadka.ping.de>
11090
b0c16cd9
MV
11091 * strports.c (scm_eval_string): Use scm_primitive_eval_x instead
11092 of scm_eval_x to allow module changes between the forms in the
11093 string. Set/restore module using scm_c_call_with_current_module.
11094
114f9bab
MV
11095 * mkstemp.c: New file, slightly modified from libiberties
11096 mkstemps.c.
11097
c99f9605
ML
110982001-05-31 Michael Livshin <mlivshin@bigfoot.com>
11099
11100 * guile-snarf-docs.in, guile-snarf-docs-texi.in,
11101 filter-doc-snarfage.c: new files.
11102
11103 * Makefile.am: add stuff to [build,] use and distribute
11104 guile-snarf-docs, guile-snarf-docs-texi, guile_filter_doc_snarfage.
11105
11106 * guile-snarf.in: grok the new snarf output.
11107
11108 * snarf.h: make the output both texttools- and `read'-friendly.
11109
47bcd646
ML
11110 * guile-doc-snarf.in: reimplement in terms of guile-snarf and
11111 guile-snarf-docs. (should also deprecate, I guess. maybe not).
c99f9605 11112
7eb5d7b2
MV
111132001-05-31 Marius Vollmer <mvo@zagadka.ping.de>
11114
11115 * print.c (scm_simple_format): Support "~~" and "~%". Signal
11116 error for unsupported format controls and for superflous
ec2667f0 11117 arguments. Thanks to Daniel Skarda!
7eb5d7b2
MV
11118
11119 * print.h, print.c (scm_print_symbol_name): Factored out of
11120 scm_iprin1.
11121 (scm_iprin1): Call it.
58bee6a8 11122
7eb5d7b2
MV
11123 * keywords.c (keyword_print): Use scm_print_symbol_name so that
11124 weird names are printed correctly.
11125
11126 * print.c (scm_print_symbol_name): Symbols whose name starts with
11127 `#' or `:' or ends with `:' are considered weird.
11128
609c3d30
MG
111292001-05-30 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11130
11131 * numbers.c (scm_difference, scm_divide): Clarified comments for -
11132 and /.
11133
111342001-05-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11135
11136 * debug.h: Removed prototype for scm_eval_string.
11137
8d09eb04
MG
111382001-05-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11139
11140 * symbols.c (scm_gensym): Fix buffer overrun (try `(gensym
58bee6a8 11141 (make-string 2000 #\!))' in an older version).
8d09eb04
MG
11142
11143 Change strncpy to memcpy to allow embedded NUL characters in
11144 symbol prefix.
11145
dd85ce47
ML
111462001-05-28 Michael Livshin <mlivshin@bigfoot.com>
11147
fde50407
ML
11148 * hooks.c (scm_create_hook): deprecated.
11149 (make_hook): deleted.
11150 (scm_make_hook): all the hook creation code is now here.
11151
11152 * gc.c (scm_init_gc): don't call `scm_create_hook'. instead make
11153 a hook, make it permanent, and do a `scm_c_define' on it.
11154
dd85ce47
ML
11155 * strop.c (s_scm_string_capitalize_x): fix docstring quoting.
11156
11157 * socket.c (s_scm_inet_pton): fix docstring quoting.
11158 (s_scm_inet_ntop): ditto.
11159
11160 * num2integral.i.c (INTEGRAL2NUM): cast to fix a warning.
11161
11162 * hashtab.c (scm_internal_hash_fold): fix argument position in
11163 SCM_ASSERT.
11164
11165 * environments.c (s_scm_import_environment_set_imports_x): fix
11166 argument position in SCM_ASSERT.
11167
11168 * debug.c (s_scm_make_gloc): fix SCM packing/unpacking.
11169 (s_scm_make_iloc): ditto.
11170
729dbac3
DH
111712001-05-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
11172
11173 * __scm.h (SCM_DEBUG_TYPING_STRICTNESS): Make 1 the default.
11174
11175 * eval.c (promise_print): Read the promise's value as an object.
11176
11177 (SCM_CEVAL): Don't perform side-effecting operations in macro
11178 parameters.
11179
11180 * eval.h (SCM_EVALIM2): Fix the typing strictness of the
11181 conditional expression.
11182
11183 * gc.c (scm_master_freelist, scm_master_freelist2): Added missing
11184 initializer.
11185
11186 * gh_data.c (gh_set_substr): Removed redundant unsigned >= 0
11187 text, removed redundant computation of effective_length and fixed
11188 the overflow check.
11189
11190 * goops.c (test_slot_existence): Use SCM_EQ_P to compare SCM
11191 values.
11192
11193 (wrap_init): Don't use SCM_C[AD]R for non pairs.
11194
11195 (hell): Make it a scm_bits_t pointer rather than a SCM pointer.
11196
11197 * goops.c (scm_sys_modify_class), strports.c (st_resize_port),
11198 struct.h (SCM_SET_STRUCT_PRINTER): Store unpacked values.
11199
11200 * goops.h (SCM_ACCESSORS_OF, SCM_SLOT): Return a SCM value.
11201
11202 * goops.h (GOOPSH, SCM_GOOPS_H), modules.h (MODULESH,
11203 SCM_MODULES_H), objects.h (OBJECTSH, SCM_OBJECTS_H), struct.h
11204 (STRUCTH, SCM_STRUCT_H), symbols.h (SYMBOLSH, SCM_SYMBOLS_H),
11205 __scm.h (__SCMH, SCM___SCM_H): Change <foo>H to SCM_<foo>_H.
11206
11207 * modules.[ch] (scm_module_tag): Make it a scm_bits_t value.
11208
11209 * objects.h (SCM_SET_CLASS_INSTANCE_SIZE): Fixed typing.
11210
ea2c3968 11211 * ramap.c (ramap_rp): Removed bogus `;'.
729dbac3
DH
11212
11213 * sort.c (scm_restricted_vector_sort_x): Fixed signedness
11214 problem.
11215
11216 * symbols.h (SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS, SCM_SYMBOL_FUNC,
11217 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS):
11218 Read SCM objects rather than scm_bits_t values.
11219
11220 * tags.h (SCM_VOIDP_TEST): Removed.
11221
11222 (SCM_DEBUG_TYPING_STRICTNESS): Now takes values 0, 1, 2. The
11223 value of 2 now corresponds to the former 1, the current 1
11224 corresponds to the former situation that SCM_VOIDP_TEST was
11225 defined.
11226
58bee6a8
TTN
11227 (SCM): Now defined as typedef struct scm_unused_struct * SCM;
11228 If this appears to be not ANSI compliant, we will change it to
729dbac3
DH
11229 typedef struct scm_unused_struct { } * SCM;
11230 Thanks to Han-Wen Nienhuys for the suggestion.
11231
11232 * unif.c (scm_array_set_x): Fix typing problem, and use
11233 SCM_UVECTOR_BASE instead of SCM_VELTS or SCM_CELL_WORD_1 when
11234 dealing with uniform vectors.
11235
6b1b030e
ML
112362001-05-27 Michael Livshin <mlivshin@bigfoot.com>
11237
11238 * gc.c (scm_init_storage): init `scm_gc_registered_roots'.
11239 (scm_igc): mark from them, too (precisely, not conservatively!).
11240
11241 * root.h (scm_gc_registered_roots): new object in
11242 scm_sys_protects.
11243
11244 * hooks.c (scm_create_hook): call `scm_gc_protect_object' instead
11245 `scm_protect_object'. shouldn't call it at all, though, it seems.
11246
11247 * gc.c (scm_[un]protect_object): deprecated.
11248 (scm_gc_[un]protect_object): new names for scm_[un]protect_object.
11249 (scm_gc_[un]register_root[s]): new.
11250
11251 * gc.h: add prototypes for scm_gc_[un]protect_object,
11252 scm_gc_[un]register_root[s].
11253
c014a02e
ML
112542001-05-26 Michael Livshin <mlivshin@bigfoot.com>
11255
11256 revert the controversial part of the 2001-05-24 changes.
11257
0120801d
MV
112582001-05-25 Marius Vollmer <mvo@zagadka.ping.de>
11259
f4e0611e
MV
11260 * modules.c (scm_env_module): Exported to Scheme.
11261
0120801d 11262 * eval.c (scm_debug_opts): New option `show-file-name'.
729dbac3 11263
0120801d 11264 * debug.h (SCM_SHOW_FILE_NAME): New.
729dbac3 11265
0120801d
MV
11266 * backtrace.c: Include "libguile/filesys.h".
11267 (sym_base, display_backtrace_get_file_line,
11268 display_backtrace_file, display_backtrace_file_and_line): New.
11269 (display_frame): Call display_backtrace_file_and_line if that is
11270 requested.
11271 (display_backtrace_body): Call scm_display_backtrace_file if
11272 requested.
11273
11274 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr):
11275 Prototypes removed since there's no definition for these
11276 functions.
11277
880a7d13
MG
112782001-05-24 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11279
11280 * unif.c (scm_make_ra, array_free), unif.h (SCM_ARRAY_DIMS):
11281 Changed use of scm_array->scm_array_t and
11282 scm_array_dim->scm_array_dim_t to enable build with
11283 --disable-deprecated.
11284
1be6b49c
ML
112852001-05-24 Michael Livshin <mlivshin@bigfoot.com>
11286
11287 The purpose of this set of changes is to regularize Guile's usage
11288 of ANSI C integral types, with the following ideas in mind:
11289
d69c867a
ML
11290 - SCM does not nesessarily have to be long.
11291 - long is not nesessarily enough to store pointers.
1be6b49c
ML
11292 - long is not nesessarily the same size as int.
11293
11294 The changes are incomplete and possibly buggy. Please test on
11295 something exotic.
11296
11297 * validate.h
11298 (SCM_NUM2{SIZE,PTRDIFF,SHORT,USHORT,BITS,UBITS,INT,UINT}[_DEF]):
11299 new macros.
11300
11301 * unif.h: type renaming:
11302 scm_array -> scm_array_t
11303 scm_array_dim -> scm_array_dim_t
11304 the old names are deprecated, all in-Guile uses changed.
11305
11306 * tags.h (scm_ubits_t): new typedef, representing unsigned
11307 scm_bits_t.
11308
11309 * stacks.h: type renaming:
11310 scm_info_frame -> scm_info_frame_t
11311 scm_stack -> scm_stack_t
11312 the old names are deprecated, all in-Guile uses changed.
11313
11314 * srcprop.h: type renaming:
11315 scm_srcprops -> scm_srcprops_t
11316 scm_srcprops_chunk -> scm_srcprops_chunk_t
11317 the old names are deprecated, all in-Guile uses changed.
11318
11319 * gsubr.c, procs.c, print.c, ports.c, read.c, rdelim.c, ramap.c,
11320 rw.c, smob.c, sort.c, srcprop.c, stacks.c, strings.c, strop.c,
11321 strorder.c, strports.c, struct.c, symbols.c, unif.c, values.c,
11322 vectors.c, vports.c, weaks.c:
11323 various int/size_t -> size_t/scm_bits_t changes.
11324
11325 * random.h: type renaming:
11326 scm_rstate -> scm_rstate_t
11327 scm_rng -> scm_rng_t
11328 scm_i_rstate -> scm_i_rstate_t
11329 the old names are deprecated, all in-Guile uses changed.
11330
11331 * procs.h: type renaming:
11332 scm_subr_entry -> scm_subr_entry_t
11333 the old name is deprecated, all in-Guile uses changed.
11334
11335 * options.h (scm_option_t.val): unsigned long -> scm_bits_t.
11336 type renaming:
11337 scm_option -> scm_option_t
11338 the old name is deprecated, all in-Guile uses changed.
11339
11340 * objects.c: various long -> scm_bits_t changes.
11341 (scm_i_make_class_object): flags: unsigned long -> scm_ubits_t
11342
11343 * numbers.h (SCM_FIXNUM_BIT): deprecated, renamed to
11344 SCM_I_FIXNUM_BIT.
11345
11346 * num2integral.i.c: new file, multiply included by numbers.c, used
11347 to "templatize" the various integral <-> num conversion routines.
11348
11349 * numbers.c (scm_mkbig, scm_big2num, scm_adjbig, scm_normbig,
11350 scm_copybig, scm_2ulong2big, scm_dbl2big, scm_big2dbl):
11351 deprecated.
11352 (scm_i_mkbig, scm_i_big2inum, scm_i_adjbig, scm_i_normbig,
11353 scm_i_copybig, scm_i_short2big, scm_i_ushort2big, scm_i_int2big,
11354 scm_i_uint2big, scm_i_long2big, scm_i_ulong2big, scm_i_bits2big,
11355 scm_i_ubits2big, scm_i_size2big, scm_i_ptrdiff2big,
11356 scm_i_long_long2big, scm_i_ulong_long2big, scm_i_dbl2big,
11357 scm_i_big2dbl, scm_short2num, scm_ushort2num, scm_int2num,
11358 scm_uint2num, scm_bits2num, scm_ubits2num, scm_size2num,
11359 scm_ptrdiff2num, scm_num2short, scm_num2ushort, scm_num2int,
11360 scm_num2uint, scm_num2bits, scm_num2ubits, scm_num2ptrdiff,
11361 scm_num2size): new functions.
11362
d69c867a 11363 * modules.c (scm_module_reverse_lookup): i, n: int -> scm_bits_t.
1be6b49c
ML
11364
11365 * load.c: change int -> size_t in various places (where the
11366 variable is used to store a string length).
11367 (search-path): call scm_done_free, not scm_done_malloc.
11368
11369 * list.c (scm_ilength): return a scm_bits_t, not long.
11370 some other {int,long} -> scm_bits_t changes.
11371
11372 * hashtab.c: various [u]int -> scm_bits_t changes.
11373 scm_ihashx_closure -> scm_ihashx_closure_t (and made a typedef).
11374 (scm_ihashx): n: uint -> scm_bits_t
11375 use scm_bits2num instead of scm_ulong2num.
11376
11377 * gsubr.c: various int -> scm_bits_t changes.
11378
11379 * goops.[hc]: various {int,long} -> scm_bits_t changes.
11380
d69c867a 11381 * gh_data.c (gh_num2int): no loss of precision any more.
1be6b49c
ML
11382
11383 * gh.h (gh_str2scm): len: int -> size_t
11384 (gh_{get,set}_substr): start: int -> scm_bits_t,
11385 len: int -> size_t
11386 (gh_<num>2scm): n: int -> scm_bits_t
11387 (gh_*vector_length): return scm_[u]size_t, not unsigned long.
11388 (gh_length): return scm_bits_t, not unsigned long.
11389
11390 * gc.[hc]: various small changes relating to many things stopping
11391 being long and starting being scm_[u]bits_t instead.
11392 scm_mallocated should no longer wrap around.
11393
11394 * fports.h: type renaming:
11395 scm_fport -> scm_fport_t
11396 the old name is deprecated, all in-Guile uses changed.
11397
11398 * fports.c (fport_fill_input): count: int -> scm_bits_t
11399 (fport_flush): init_size, remaining, count: int -> scm_bits_t
11400
11401 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr): removed
11402 those prototypes, as the functions they prototype don't exist.
11403
11404 * fports.c (default_buffer_size): int -> size_t
11405 (scm_fport_buffer_add): read_size, write_size: int -> scm_bits_t
11406 default_size: int -> size_t
11407 (scm_setvbuf): csize: int -> scm_bits_t
11408
11409 * fluids.c (n_fluids): int -> scm_bits_t
11410 (grow_fluids): old_length, i: int -> scm_bits_t
11411 (next_fluid_num, scm_fluid_ref, scm_fluid_set_x): n: int ->
11412 scm_bits_t
11413 (scm_c_with_fluids): flen, vlen: int -> scm_bits_t
11414
11415 * filesys.c (s_scm_open_fdes): changed calls to SCM_NUM2LONG to
11416 the new and shiny SCM_NUM2INT.
11417
11418 * extensions.c: extension -> extension_t (and made a typedef).
11419
11420 * eval.h (SCM_IFRAME): cast to scm_bits_t, not int. just so
11421 there are no nasty surprises if/when the various deeply magic tag
11422 bits move somewhere else.
11423
11424 * eval.c: changed the locals used to store results of SCM_IFRAME,
11425 scm_ilength and such to be of type scm_bits_t (and not int/long).
11426 (iqq): depth, edepth: int -> scm_bits_t
11427 (scm_eval_stack): int -> scm_bits_t
11428 (SCM_CEVAL): various vars are not scm_bits_t instead of int.
11429 (check_map_args, scm_map, scm_for_each): len: long -> scm_bits_t
11430 i: int -> scm_bits_t
11431
11432 * environments.c: changed the many calls to scm_ulong2num to
11433 scm_ubits2num.
11434 (import_environment_fold): proc_as_ul: ulong -> scm_ubits_t
11435
11436 * dynwind.c (scm_dowinds): delta: long -> scm_bits_t
11437
11438 * debug.h: type renaming:
11439 scm_debug_info -> scm_debug_info_t
11440 scm_debug_frame -> scm_debug_frame_t
11441 the old names are deprecated, all in-Guile uses changed.
11442 (scm_debug_eframe_size): int -> scm_bits_t
11443
11444 * debug.c (scm_init_debug): use scm_c_define instead of the
11445 deprecated scm_define.
11446
11447 * continuations.h: type renaming:
11448 scm_contregs -> scm_contregs_t
11449 the old name is deprecated, all in-Guile uses changed.
11450 (scm_contregs_t.num_stack_items): size_t -> scm_bits_t
11451 (scm_contregs_t.num_stack_items): ulong -> scm_ubits_t
11452
11453 * continuations.c (scm_make_continuation): change the type of
d69c867a 11454 stack_size from long to scm_bits_t.
1be6b49c
ML
11455
11456 * ports.h: type renaming:
11457 scm_port_rw_active -> scm_port_rw_active_t (and made a typedef)
11458 scm_port -> scm_port_t
11459 scm_ptob_descriptor -> scm_ptob_descriptor_t
11460 the old names are deprecated, all in-Guile uses changed.
11461 (scm_port_t.entry): int -> scm_bits_t.
11462 (scm_port_t.line_number): int -> long.
11463 (scm_port_t.putback_buf_size): int -> size_t.
11464
11465 * __scm.h (long_long, ulong_long): deprecated (they pollute the
d69c867a 11466 global namespace and have little value beside that).
1be6b49c
ML
11467 (SCM_BITS_LENGTH): new, is the bit size of scm_bits_t (i.e. of an
11468 SCM handle).
11469 (ifdef spaghetti): include sys/types.h and sys/stdtypes.h, if they
d69c867a 11470 exist (for size_t & ptrdiff_t).
1be6b49c
ML
11471 (scm_sizet): deprecated.
11472
11473 * Makefile.am (noinst_HEADERS): add num2integral.i.c
11474
a6219f22
MV
114752001-05-23 Marius Vollmer <mvo@zagadka.ping.de>
11476
11477 * snarf.h (SCM_CONST_LONG): Use SCM_VCELL_INIT instead of
11478 SCM_VARIABLE_INIT since that it what it used to be.
11479
11480 * deprecation.c (scm_include_deprecated_features): Make docstring
9a5fa6e9 11481 ANSIsh. Thanks to Matthias Köppe!
a6219f22 11482
311b6a3c
MV
114832001-05-21 Marius Vollmer <mvo@zagadka.ping.de>
11484
9dfc4faa
MV
11485 * symbols.c (scm_mem2symbol): Re-introduce indirect cell. It is
11486 needed for weak-key hashtables.
11487
11488 * procs.c (scm_make_subr_with_generic): Add missing last argument
11489 in call to scm_c_define_gsubr_with_generic. Thanks to Ariel Rios.
11490
11491 * eval.c: Use SCM_EQ_P instead of `==' or `!=' in certain
11492 places. (scm_c_improper_memq): Return 1 instead of SCM_BOOL_T.
311b6a3c
MV
11493
11494 * eval.h (SCM_EVALIM2): Use SCM_EQ_P instead of `=='.
11495
2fc933fe
MV
114962001-05-20 Marius Vollmer <mvo@zagadka.ping.de>
11497
57ae112d
MV
11498 * symbols.c (scm_mem2symbol): Call `scm_must_strndup' instead of
11499 `duplicate_string'. Do not use an indirect cell, store symbol
11500 directly in collision list of hash table.
11501 (duplicate_string): Removed.
58bee6a8 11502
57ae112d
MV
11503 * init.c (scm_init_guile_1): Call scm_init_extensions.
11504
11505 * Makefile.am: Add "extensions.c" and related files in all the
11506 right places.
11507
11508 * extensions.h, extension.c: New files.
11509
11510 * gc.h, gc.c (scm_must_strdup, scm_must_strndup): New.
11511
2fc933fe
MV
11512 * modules.h (scm_system_module_env_p): Move out of deprecated
11513 section.
11514
11515 * rw.h (scm_init_rw): Added prototype.
11516
11517 * gsubr.h, gsubr.c (scm_c_make_gsubr, scm_c_define_gsubr,
11518 scm_c_make_gsubr_with_generic, scm_c_define_gsubr_with_generic):
11519 New functions. They replace scm_make_gsubr and
11520 scm_make_gsubr_with_generic. The `make' variants only create the
11521 gsubr object, while the `define' variants also put it into the
11522 current module. Changed all callers.
11523 (scm_make_gsubr, scm_make_gsubr_with_generic): Deprecated.
11524
11525 * procs.h, procs.c (scm_c_make_subr, scm_c_define_subr,
11526 scm_c_make_subr_with_generic, scm_c_define_subr_with_generic): New
11527 functions. They replace scm_make_subr, scm_make_subr_opt and
11528 scm_make_subr_with_generic. The `make' variants only create the
11529 subr object, while the `define' variants also put it into the
11530 current module. Changed all callers.
11531 (scm_make_subr, scm_make_subr_opt, scm_make_subr_with_generic):
11532 Deprecated.
11533
11534 * eval.c, gc.c, gh_funcs.c, goops.c, macros.c, pairs.c, ramap.c,
11535 rdelim.c, rw.c, scmsigs.c, snarf.h, values.c: Changed according to
11536 the comments above.
58bee6a8 11537
18928596
NJ
115382001-05-19 Neil Jerram <neil@ossau.uklinux.net>
11539
11540 * throw.c (scm_lazy_catch): Slight docstring clarification.
11541
21a13beb
MV
115422001-05-19 Marius Vollmer <mvo@zagadka.ping.de>
11543
e2b6ddc6
MV
11544 * throw.c: Lazy-catch handlers are no longer allowed to return.
11545 Fixed comments throughout.
11546 (scm_ithrow): Signal an error when a lazy-catch handler returns.
11547 Moved actual jump to jmpbuf into if-branch where the jmpbuf is
11548 recognized as such.
11549
21a13beb
MV
11550 * version.c (s_scm_micro_version): Fix typo in FUNC_NAME, it
11551 refered to s_scm_minor_version previously.
11552
11553 * modules.h, modules.c: Moved around a lot of code so that
11554 deprecated features appear at the bottom.
11555 (root_module_lookup_closure, scm_sym_app, scm_sym_modules,
11556 module_prefix, make_modules_in_var, beautify_user_module_x_var,
11557 scm_the_root_module, scm_make_module, scm_ensure_user_module,
11558 scm_load_scheme_module): Deprecated.
11559 (scm_system_module_env_p): Return SCM_BOOL_T directly for
11560 environments corresponding to the root module.
11561 (convert_module_name, scm_c_resolve_module,
11562 scm_c_call_with_current_module, scm_c_define_module,
11563 scm_c_use_module, scm_c_export): New.
11564 (the_root_module): New static variant of scm_the_root_module. Use
11565 it everywhere instead of scm_the_root_module.
58bee6a8 11566
21a13beb
MV
11567 * fluids.h, fluids.c (scm_internal_with_fluids): Deprecated.
11568 (scm_c_with_fluids): Renamed from scm_internal_with_fluids.
11569 (scm_c_with_fluid): New.
11570 (scm_with_fluids): Use scm_c_with_fluids instead of
11571 scm_internal_with_fluids.
58bee6a8 11572
21a13beb
MV
11573 * goops.h, goops.c (scm_init_goops_builtins): Renamed from
11574 `scm_init_goops'. Do not explicitly create/switch modules.
11575 Return SCM_UNSPECIFIED.
11576 (scm_init_goops): Only register `%init-goops-builtins' procedure.
11577 (scm_load_goops): Use scm_c_resolve_module instead of
11578 scm_resolve_module.
58bee6a8 11579
21a13beb
MV
11580 * init.c (scm_init_guile_1): Call `scm_init_goops' instead of
11581 `scm_init_oop_goops_goopscore_module'. Call `scm_init_rdelim' and
11582 `scm_init_rw' prior to loading the startup files.
11583
11584 * rdelim.h, rdelim.c: (scm_init_rdelim_builtins): Renamed from
11585 scm_init_rdelim. Do not explicitly create/switch modules.
11586 Return SCM_UNSPECIFIED.
11587 (scm_init_rdelim): Only register `%init-rdelim-builtins'
11588 procedure.
58bee6a8 11589
21a13beb
MV
11590 * rw.c (scm_init_rw_builtins): Renamed from scm_init_rw. Do not
11591 explicitly create/switch modules. Return SCM_UNSPECIFIED.
11592 (scm_init_rw): Only register `%init-rw-builtins' procedure.
11593
11594 * script.c (scm_shell): Evaluate the compiled switches in the
11595 current module, not in the root module.
11596
115972001-05-18 Marius Vollmer <mvo@zagadka.ping.de>
11598
11599 * fluids.c (scm_c_with_fluids): Rename from
11600 scm_internal_with_fluids.
11601 (scm_internal_with_fluids): Deprecated.
11602 (scm_c_with_fluid): New.
11603
09cb9e73
DH
116042001-05-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
11605
11606 * print.h (PRINTH, SCM_PRINT_H): Renamed PRINTH to SCM_PRINT_H.
11607
11608 (SCM_PORT_WITH_PS_PORT, SCM_PORT_WITH_PS_PS): Only pairs may be
11609 accessed with SCM_C[AD]R.
11610
11611 (SCM_COERCE_OUTPORT): Removed redundant SCM_NIMP test.
11612
c81ea65d
RB
116132001-05-16 Rob Browning <rlb@cs.utexas.edu>
11614
11615 * version.c (s_scm_major_version): doc fixes.
11616 (s_scm_minor_version): doc fixes.
11617 (s_scm_minor_version): new function.
11618
11619 * version.h (scm_init_version): new function.
11620
11621 * versiondat.h.in: add GUILE_MICRO_VERSION.
11622
887dfa7d
DH
116232001-05-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
11624
11625 * deprecation.c (scm_init_deprecation): Renamed
11626 GUILE_WARN_DEPRECATED_DEFAULT to SCM_WARN_DEPRECATED_DEFAULT.
11627
78930a69
MV
116282001-05-16 Marius Vollmer <mvo@zagadka.ping.de>
11629
11630 * Makefile.am (cpp_sig_symbols.c, cpp_err_symbols.c): Make
11631 dependent on cpp_cnvt.awk
11632
39cde5c5
MG
116332001-05-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11634
11635 * script.c (scm_compile_shell_switches): New command line option
11636 `--use-srfi' for loading a list of SRFIs on startup.
11637 (scm_shell_usage): Added `--use-srfi' to help message.
11638
f3f9dcbc
MV
116392001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
11640
78930a69 11641 Merged from mvo-vcell-cleanup-1-branch.
887dfa7d 11642
f3f9dcbc
MV
11643 The concept of vcells has been removed from Guile. With it,
11644 explicit obarrays and associated operations are gone. Use
11645 hashtables instead of obarrays.
887dfa7d 11646
f3f9dcbc
MV
11647 Throughout: use scm_sym2var instead of scm_sym2vcell and treat
11648 result as variable instead of vcell. Glocs no longer point to a
11649 vcell but to a variable. Use scm_c_define instead of
11650 scm_sysintern and treat the result as a variable (which it is),
11651 not a vcell.
887dfa7d 11652
f3f9dcbc
MV
11653 * variable.c, variable.h (SCM_VARVCELL, SCM_UDVARIABLEP,
11654 SCM_DEFVARIABLEP): Deprecated.
11655 (SCM_VARIABLE_REF, SCM_VARIABLE_SET, SCM_VARIABLE_LOC): New.
11656 (variable_print): Do not print name of variable.
11657 (variable_equalp): Compare values, not vcells.
11658 (anonymous_variable_sym): Removed.
11659 (make_vcell_variable): Removed.
11660 (make_variable): New, as replacement.
11661 (scm_make_variable, scm_make_undefined_variable): Do not take name
11662 hint parameter.
11663 (scm_variable_ref): Check for SCM_UNDEFINED and throw "unbound"
11664 error in that case.
11665 (scm_builtin_variable): Deprecated.
11666
11667 * symbols.c, symbols.h (scm_sym2vcell, scm_sym2ovcell_soft,
11668 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
11669 scm_intern, scm_intern0, scm_sysintern0_no_module_lookup,
11670 scm_sysintern, scm_sysintern0, scm_symbol_value0,
11671 scm_string_to_obarray_symbol, scm_intern_symbol,
11672 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned,
11673 scm_symbol_bound_p, scm_symbol_set_x, scm_gentmp, gentmp_counter):
11674 Deprecated and moved to "symbols-deprecated.c".
11675 (copy_and_prune_obarray, scm_builtin_bindings): Removed.
11676 (scm_init_symbols): Call scm_init_symbols_deprecated.
11677 * symbols-deprecated.c: New file.
11678 * Makefile.am: Added symbols-deprecated.c and related files in all
11679 the right places.
887dfa7d 11680
f3f9dcbc
MV
11681 * snarf.h (SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
11682 SCM_GLOBAL_VCELL_INIT): Deprecated.
11683 (SCM_VARIABLE, SCM_GLOBAL_VARIABLE, SCM_VARIABLE_INIT,
11684 SCM_GLOBAL_VARIABLE_INIT): New, as replacement. Changed all uses.
887dfa7d 11685
f3f9dcbc
MV
11686 * print.c (scm_iprin1): Use scm_module_reverse_lookup instead of
11687 SCM_GLOC_SYM.
11688
11689 * evalext.c, filesys.c, fports.c, gdbint.c, gh_data.c, gsubr.c,
11690 hooks.c, load.c, numbers.c, objects.c, ports.c, posix.c, procs.c,
11691 ramap.c, random.c, read.c, regex-posix.c, scmsigs.c, script.c,
11692 socket.c, srcprop.c, stacks.c, stime.c, struct.c, tag.c, throw.c:
11693 Changed according to the `throughout' comments.
11694
11695 * modules.h, modules.c (scm_module_system_booted_p): Changed type
11696 to `int'.
11697 (scm_module_type): Removed.
11698 (the_root_module): Renamed to the_root_module_var. Now points to
11699 a variable instead of a vcell. Updated all uses.
11700 (scm_the_root_module): Return SCM_BOOL_F when module systems
11701 hasn't been booted yet.
11702 (SCM_VALIDATE_STRUCT_TYPE): Removed.
11703 (scm_post_boot_init_modules): Made static.
11704 (scm_set_current_module): Call scm_post_boot_init_modules on first
11705 call.
11706 (make_modules_in, beautify_user_module_x, resolve_module,
11707 try_module_autoload, module_make_local_var_x): Tacked on "_var"
11708 suffix. Now point to variables instead of vcells. Updated all
11709 uses.
11710 (scm_module_lookup_closure): Deal with the module being SCM_BOOL_F
11711 and return SCM_BOOL_F in that case.
11712 (scm_module_transformer): Likewise.
11713 (sym_module, scm_lookup_closure_module, scm_env_module): New.
11714 (SCM_F_EVAL_CLOSURE_INTERFACE, SCM_EVAL_CLOSURE_INTERFACE_P): New.
11715 (scm_eval_closure_lookup): Do not allow new definitions when
11716 `interface' flag is set.
11717 (scm_standard_interface_eval_closure): New.
11718 (scm_pre_modules_obarray, scm_sym2var, scm_module_lookup,
11719 scm_lookup, scm_module_define, scm_define, scm_c_module_lookup,
11720 scm_c_lookup, scm_c_module_define, scm_c_define,
11721 scm_module_reverse_lookup, scm_get_pre_modules_obarray,
11722 scm_modules_prehistory): New.
11723 (scm_post_boot_init_modules): Use scm_c_define and scm_c_lookup
11724 instead of scm_intern0.
887dfa7d 11725
f3f9dcbc
MV
11726 * macros.c (scm_make_synt): Return SCM_UNSPECIFIED instead of the
11727 symbol.
11728
11729 * keywords.c (s_scm_make_keyword_from_dash_symbol): Use a regular
11730 hashtable operations to maintain the keywords, not obarray ones.
11731
11732 * init.c (scm_load_startup_files): Do not call
11733 scm_post_boot_init_modules. This is done by
11734 scm_set_current_module now.
11735 (scm_init_guile_1): Call scm_modules_prehistory. Call
11736 scm_init_variable early on.
11737
11738 * goops.c (s_scm_sys_goops_loaded): Get
11739 var_compute_applicable_methods from scm_sym2var, not from a direct
11740 invocation of scm_goops_lookup_closure.
11741
11742 * gh_funcs.c (gh_define): Return SCM_UNSPECIFIED instead of vcell.
11743
11744 * gc.c: Added simple debugging hack to mark phase of GC: When
11745 activated, do not tail-call scm_gc_mark. This gives nice
11746 backtraces.
11747 (scm_unhash_name): Removed.
11748
11749 * feature.c (features): Renamed to features_var. Now points to a
11750 variable instead of a vcell. Updated all uses.
11751
11752 * eval.h (SCM_TOP_LEVEL_LOOKUP_CLOSURE): Use
11753 `scm_current_module_lookup_closure' which will do the right thing
11754 when the module system hasn't been booted yet.
11755 (SCM_GLOC_SYM): Removed.
11756 (SCM_GLOC_VAR, SCM_GLOC_SET_VAL): New.
11757 (SCM_GLOC_VAL, SCM_GLOC_LOC): Reimplemented in terms of variables.
887dfa7d 11758
f3f9dcbc
MV
11759 * eval.c (scm_lookupcar, scm_lookupcar1): Deal with variables
11760 instead of with vcells. Do not overwrite `var' with the result of
11761 the lookup, use the new `real_var' instead. Remove `var2' in
11762 exchange (which was only used with threads).
11763 (sym_three_question_marks): New.
11764 (scm_unmemocar): Use `scm_module_reverse_lookup' instead of
11765 `SCM_GLOC_SYM'.
11766 (scm_lisp_nil, scm_lisp_t): Directly define as symbols.
11767 (scm_m_atfop): Expect the function definition to be a variable
11768 instead of a vcell.
11769 (scm_macroexp): Do not use `unmemocar', explicitely remember the
11770 symbol instead.
11771 (scm_unmemocopy): Removed thoughts about anti-macro interface.
11772 (scm_eval_args): Use more explicit code in the gloc branch of the
11773 atrocious struct ambiguity test. The optimizer will sort this
11774 out.
11775 (scm_deval_args): Likewise.
11776 (SCM_CEVAL): Likewise. Also, do not use unmemocar, explicitely
11777 remember the symbol instead. Added some comments where
11778 scm_tc3_cons_gloc really exclusively refers to structs.
11779 (scm_init_eval): Use scm_define to initialize "nil" and "t" to
11780 scm_lisp_nil and scm_lisp_t, respectively. Use scm_define instead
11781 of scm_sysintern in general.
11782
11783 * dynwind.c (scm_swap_bindings): Use SCM_GLOC_SET_VAL instead of
11784 explicit magic.
11785
11786 * debug.c (s_scm_make_gloc): Only allow proper variables, no
11787 pairs. Put the variable directly in the gloc.
11788 (s_scm_gloc_p): Use `scm_tc3_cons_gloc' instead of the magic `1'.
11789 (scm_init_debug): Use scm_c_define instead scm_sysintern.
11790
11791 * cpp_cnvt.awk: Emit "scm_c_define" instead of "scm_sysintern".
11792
11793 * backtrace.h, backtrace.c (scm_the_last_stack_fluid): Renamed to
11794 scm_the_last_stack_fluid_var. It now points to a variable instead
11795 of a vcell. Updated all uses.
11796 (scm_has_shown_backtrace_hint_p_var): Now points to a variable
11797 instead of a vcell. Updated all uses.
11798
11799 * _scm.h: Include "variables.h" and "modules.h" since almost
11800 everybody needs them now.
11801
11802 * root.h (scm_symhash, scm_symhash_vars): Removed.
11803 * gc.c (scm_init_storage): Do not initialize them.
887dfa7d 11804
7c33806a
DH
118052001-05-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
11806
11807 * eval.c (scm_init_eval): Initialize scm_undefineds and
58bee6a8 11808 scm_listofnull.
7c33806a
DH
11809
11810 * gc.c (scm_debug_newcell, scm_debug_newcell2): Fixed to behave
11811 like the SCM_NEWCELL macro counterparts.
11812
11813 (scm_init_storage, scm_init_gc): Moved initialization of
11814 scm_tc16_allocated from scm_init_gc to scm_init_storage.
11815
11816 (scm_init_storage): Moved initialization of scm_undefineds and
11817 scm_listofnull to eval.c, initializion of scm_nullstr to
11818 strings.c, initializion of scm_nullvect to vectors.c.
11819
11820 * gc.h (SCM_NEWCELL, SCM_NEWCELL2): Prefer SCM_NULLP over
11821 SCM_IMP, as in scm_debug_newcell and scm_debug_newcell2.
11822
11823 * init.c (scm_init_guile_1): Reordered some initializations and
11824 added dependcy information comments.
11825
11826 * load.c (scm_init_load): Use scm_nullstr.
11827
11828 * strings.c (scm_init_strings): Initialize scm_nullstr.
11829
11830 * vectors.c (scm_init_vectors): Initialize scm_nullvect.
11831
11bbab47
MV
118322001-05-15 Marius Vollmer <mvo@zagadka.ping.de>
11833
11834 * values.c (print_values): Print as a unreadable object, not as
9a5fa6e9 11835 multiple lines. Thanks to Matthias Köppe!
11bbab47 11836
5cd06d5e
DH
118372001-05-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
11838
11839 * deprecation.c: Fixed copyright date.
11840
11841 * deprecation.h (DEPRECATION_H, SCM_DEPRECATION_H): Renamed
11842 DEPRECATION_H to SCM_DEPRECATION_H.
11843
32bac999
TTN
118442001-05-10 Thien-Thi Nguyen <ttn@revel.glug.org>
11845
11846 * guile-doc-snarf.in: Update copyright.
11847 Fix relative path bug. Thanks to Sergey Poznyakoff.
11848
c9dcc5ae
MV
118492001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
11850
11851 * ports.c (scm_port_revealed, scm_set_port_revealed_x): Only
11852 accept open ports. Thanks to Quetzalcoatl Bradley!
11853
7c582ec9
MG
118542001-05-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11855
11856 * procs.c: Increased `scm_subr_table_room' to 800 because Guile now
11857 has 779 primitives on startup.
11858
284ab601
MV
118592001-05-09 Marius Vollmer <mvo@zagadka.ping.de>
11860
11861 * eval.c (scm_i_eval): Copy expression before passing it to
11862 SCM_XEVAL. The copy operation was removed unintendedly during my
11863 change on 2001-03-25.
11864
910d1e40
ML
118652001-05-09 Michael Livshin <mlivshin@bigfoot.com>
11866
9a5fa6e9 11867 from Matthias Köppe (thanks!):
910d1e40
ML
11868
11869 * ports.c (scm_c_read): pointer arithmetic on void pointers isn't
11870 portable.
11871
11872 * deprecation.c (s_scm_include_deprecated_features): ANSI'fied the
11873 docstring.
11874
56e55ac7
DH
118752001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
11876
11877 * gc.c (scm_init_gc): Added FIXME comment.
11878
11879 * hooks.c: Since hooks don't have a name any more, it is not
11880 necessary to include objprop.h.
11881
11882 (hook_print, scm_add_hook_x): Replace SCM_NFALSEP by !SCM_FALSEP.
11883
11884 (symbol_name, scm_make_hook_with_name): Removed.
11885
11886 (scm_create_hook): Don't set the hook's name property.
11887
11888 * hooks.h (HOOKSH, SCM_HOOKS_H): Renamed HOOKSH to SCM_HOOKS_H.
11889
11890 (SCM_HOOK_NAME, scm_make_hook_with_name): Removed.
11891
11892 * init.c (scm_init_guile_1): Hooks don't use objprops any more.
11893
11894 * numbers.c (SCM_FLOBUFLEN, FLOBUFLEN, scm_number_to_string,
11895 scm_print_real, scm_print_complex): Renamed SCM_FLOBUFLEN to
11896 FLOBUFLEN and define it unconditionally.
11897
d204b24c
MV
118982001-05-07 Marius Vollmer <mvo@zagadka.ping.de>
11899
438201b4
MV
11900 * gh_data.c (gh_lookup): Call gh_module_lookup with
11901 `scm_current_module ()', not `#f'.
11902 (gh_module_lookup): Expect a module instead of an obarray as first
11903 argument and do lookup in that module.
56e55ac7 11904
d204b24c
MV
11905 * ramap.c (raeql_1): Do not call scm_uniform_vector_length on
11906 arrays. The length of array is already determined differently and
11907 scm_uniform_vector_length does not work on arrays.
11908
26c1d549
MV
119092001-05-06 Marius Vollmer <mvo@zagadka.ping.de>
11910
fe7c2f88
MV
11911 * snarf.h (SCM_FUNC_CAST_ARBITRARY_ARGS): Use "SCM (*)()" for C++
11912 as well. "SCM (*)(...)" does not work on RedHat 7.1.
11913
26c1d549
MV
11914 * __scm.h (SCM_WTA_DISPATCH_0): Removed ARG and POS parameters,
11915 they are not used. Changed `wrong type' error into `wrong num
11916 args' error. Changed all callers.
56e55ac7 11917
26c1d549
MV
11918 * numbers.c (scm_difference): Call SCM_WTA_DISPATCH_0 when zero
11919 arguments are supplied.
11920
1c938eb8
TTN
119212001-05-05 Thien-Thi Nguyen <ttn@revel.glug.org>
11922
11923 * regex-posix.c (scm_regexp_exec): Expand docstring to briefly
11924 describe `regexp/notbol' and `regexp/noteol' execution flags.
11925
3a6379f7
TTN
11926 * strop.c (scm_substring_move_x): Doc fix; nfc.
11927
c10ecc4c
MV
119282001-05-05 Marius Vollmer <mvo@zagadka.ping.de>
11929
11930 * objects.c, objects.h (scm_valid_object_procedure_p): New.
11931 (scm_set_object_procedure_x): Use it to check argument. Fix
11932 docstring.
11933
11934 * evalext.c (scm_definedp): Fix docstring.
11935
a57a0b1e
GH
119362001-05-05 Gary Houston <ghouston@arglist.com>
11937
11938 * socket.c: use HAVE_IPV6 instead of AF_INET6 to enable IPv6
11939 support.
11940
7a095584
NJ
119412001-05-04 Neil Jerram <neil@ossau.uklinux.net>
11942
11943 * eval.c (scm_promise_p), list.c (scm_append_x, scm_reverse_x),
11944 symbols.c (scm_symbol_to_string), vports.c (scm_make_soft_port):
11945 Change R4RS references to R5RS.
11946
11947 * guile-snarf.awk.in: Fixes so that (i) blank lines in the
11948 docstring source are correctly reproduced in the output (ii)
11949 we don't anymore get occasional trailing quotes. Also reorganized
11950 and commented the code a little.
11951
11952 * scmsigs.c (scm_raise), throw.c (scm_throw): Docstring format
11953 fixes.
11954
dd2a6f3a
MG
119552001-05-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11956
11957 * strop.c (scm_string_split): New procedure.
11958
11959 * strop.h (scm_string_split): Added prototype.
11960
00120130
GH
119612001-05-04 Gary Houston <ghouston@arglist.com>
11962
11963 * socket.c: define uint32_t if netdb.h doesn't. thanks to
11964 Dale P. Smith.
11965
b65e6bfe
MV
119662001-05-02 Marius Vollmer <mvo@zagadka.ping.de>
11967
11968 * rw.c: Include "modules.h" and "strports.h".
11969
11970 * net_db.h (scm_gethost): Added prototype.
11971
11972 * deprecation.h, deprecation.c: New.
11973 * Makefile.am (libguile_la_SOURCES): Added "deprecation.c".
11974 (DOT_X_FILES): Added "deprecation.x".
11975 (modinclude_HEADERS): Added "deprecation.h".
11976
11977 * init.c: Include "deprecation.h".
11978 (scm_init_guile_1): Call scm_init_deprecation.
1c938eb8 11979
b65e6bfe
MV
119802001-05-01 Marius Vollmer <mvo@zagadka.ping.de>
11981
11982 * gh.h (gh_init_guile, gh_make_string, gh_string_length,
11983 gh_string_ref, gh_string_set_x, gh_substring, gh_string_append):
11984 New.
11985
b0e5fd8c
GH
119862001-04-29 Gary Houston <ghouston@arglist.com>
11987
11988 * rw.c: new file, implementing C part of module (ice-9 rw).
11989 (scm_read_string_x_partial): moved from ioext.c
11990 (scm_init_rw): new proc.
11991 * rw.h: new file.
11992 init.c: include rw.h and call scm_init_rw.
11993 Makefile.am: include rw.c and rw.h.
11994
0b2da99c
RB
119952001-04-28 Rob Browning <rlb@cs.utexas.edu>
11996
11997 * numbers.c: enabled local definition of SCM_FLOBUFLEN until we
11998 know what's supposed to happen to it.
11999
12000 * list.h (scm_list_star): deprecation expired - removed.
12001
12002 * numbers.h (scm_dblproc): deprecation expired - removed.
12003 (SCM_UNEGFIXABLE): deprecation expired - removed.
12004 (SCM_FLOBUFLEN): deprecation expired - removed.
12005 (SCM_INEXP): deprecation expired - removed.
12006 (SCM_CPLXP): deprecation expired - removed.
12007 (SCM_REAL): deprecation expired - removed.
12008 (SCM_IMAG): deprecation expired - removed.
12009 (SCM_REALPART): deprecation expired - removed.
12010 (scm_makdbl): deprecation expired - removed.
12011 (SCM_SINGP): deprecation expired - removed.
12012 (SCM_NUM2DBL): deprecation expired - removed.
12013 (SCM_NO_BIGDIG): deprecation expired - removed.
12014
12015 * tags.h (SCM_DOUBLE_CELLP): deprecation expired - removed.
12016 (scm_tc_dblr): deprecation expired - removed.
12017 (scm_tc_dblc): deprecation expired - removed.
12018 (scm_tc16_flo): deprecation expired - removed.
12019 (scm_tc_flo): deprecation expired - removed.
12020
12021 * tag.h (scm_tag): deprecation expired - removed.
12022
12023 * tag.c: (scm_tag): deprecation expired - removed.
12024
12025 * ioext.c: (scm_fseek): deprecation expired - removed.
12026
12027 * ioext.h (scm_fseek): deprecation expired - removed.
12028
12029 * gh_data.c (gh_int2scmb): deprecation expired - removed.
12030
12031 * gh.h (gh_int2scmb): deprecation expired - removed.
12032
e3334972
NJ
120332001-04-28 Neil Jerram <neil@ossau.uklinux.net>
12034
12035 * stacks.c (scm_make_stack): Fix typo in docstring.
12036
a0f979ac
RB
120372001-04-27 Rob Browning <rlb@cs.utexas.edu>
12038
12039 * error.c (scm_sysmissing): deprecation expired - removed.
12040
12041 * error.h (scm_sysmissing): deprecation expired - removed.
12042
12043 * gc.c
12044 (scm_init_gc): gc-thunk deprecation expired - removed.
12045 (scm_gc_vcell): deprecation expired - removed.
12046 (gc_async_thunk): scm_gc_vcell related code removed.
12047
12048 * vectors.h (SCM_NVECTORP): deprecation expired - removed.
12049
12050 * strings.h
12051 (SCM_NSTRINGP): deprecation expired - removed.
12052 (SCM_NRWSTRINGP): deprecation expired - removed.
12053
12054 * continuations.h (SCM_SETJMPBUF): deprecation expired - removed.
12055
12056 * chars.h
12057 (SCM_ICHRP): deprecation expired - removed.
12058 (SCM_ICHR): deprecation expired - removed.
12059 (SCM_MAKICHR): deprecation expired - removed.
12060
12061 * ports.h
12062 (SCM_INPORTP): deprecation expired - removed.
12063 (SCM_OUTPORTP): deprecation expired - removed.
12064
253081cf
MV
120652001-04-25 Marius Vollmer <mvo@zagadka.ping.de>
12066
12067 * modules.c (scm_module_type): New.
12068 (scm_post_boot_init_modules): Initialize from Scheme value.
12069 (the_module, scm_current_module, scm_init_modules): the_module is
12070 now a C only fluid.
12071 (scm_current_module): Export to Scheme.
12072 (scm_set_current_module): Do not call out to Scheme, do all the
12073 work in C. Export procedure to Scheme. Only accept modules, `#f'
12074 is no longer valid as the current module. Only set
12075 scm_top_level_lookup_closure_var and scm_system_transformer when
12076 they are not deprecated.
12077 (scm_module_transformer, scm_current_module_transformer): New.
12078
12079 * modules.h (scm_module_index_transformer, SCM_MODULE_TRANSFORMER,
12080 scm_current_module_transformer, scm_module_transformer): New.
1c938eb8 12081
253081cf
MV
12082 * gh_data.c: Removed FIXME comment about gh_lookup returning
12083 SCM_UNDEFINED. That's the right thing to do.
12084
12085 * eval.h, eval.c (scm_system_transformer): Deprecated by moving it
12086 into the conditionally compiled sections.
12087 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Use
12088 scm_current_module_transformer instead of scm_system_transformer.
12089 * init.c (start_stack): Move initialization of
12090 scm_system_transformer to the deprecated section.
1c938eb8 12091
1f7f9ed4
NJ
120922001-04-22 Neil Jerram <neil@ossau.uklinux.net>
12093
12094 * throw.c (scm_throw): Correct docstring.
12095
66c73b76
GH
120962001-04-22 Gary Houston <ghouston@arglist.com>
12097
eefae538
GH
12098 * socket.c: attempted to improve the docstrings slightly.
12099
66c73b76
GH
12100 * net_db.c: remove bogus "close" declaration.
12101 (inet_aton declaration, scm_inet_aton, scm_inet_ntoa,
12102 scm_inet_netof, scm_lnaof, scm_inet_makeaddr, INADDR_ANY etc.):
12103 moved to socket.c.
12104 * net_db.h: declarations moved too.
12105
12106 * socket.c (scm_htonl, scm_ntohl): use uint32_t instead of unsigned
12107 long.
12108 (ipv6_net_to_num, ipv6_num_to_net): new static procedures.
12109 (VALIDATE_INET6): new macro.
12110 (scm_inet_pton, scm_inet_ntop): new procedures, implementing
12111 inet-pton and inet-ntop.
12112 (scm_fill_sockaddr): use VALIDATE_INET6 and ipv6_num_to_net.
12113 (scm_addr_vector): use ipv6_net_to_num.
1c938eb8 12114
7a7f7c53
DH
121152001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
12116
12117 * eq.c (scm_equal_p), ramap.c (scm_init_ramap): Don't compute the
12118 smob number explicitly. Use SCM_TC2SMOBNUM instead.
12119
12120 * gc.c (MARK, scm_gc_sweep): Only check for illegal heap objects
12121 when compiled in debug mode.
12122
12123 (scm_gc_sweep): Only call smob's free function if it is defined.
12124
12125 * print.c (scm_iprin1): No need to check for validity of smob
12126 type or existence of print function.
12127
12128 * smob.[ch] (scm_smobs): Made into a fixed size global array.
12129 Resizing will not work well with preemptive threading.
12130
12131 * smob.c (scm_smob_print): Don't use SCM_CDR to access smob data.
12132
12133 (scm_make_smob_type): Extracted initialization of smob
12134 descriptors to scm_smob_prehistory. Don't use scm_numsmob outside
12135 of the critical section.
12136
12137 (scm_smob_prehistory): Initialize all smob descriptors. By
12138 default, don't assign a smob free function: Most smob types don't
12139 need one.
12140
12141 * smob.h (SMOBH, SCM_SMOB_H): Renamed SMOBH to SCM_SMOB_H.
12142
e1368a8d
GH
121432001-04-21 Gary Houston <ghouston@arglist.com>
12144
12145 * socket.c (FLIP_NET_HOST_128): new macro.
12146 (scm_fill_sockaddr): use new macro.
12147 (scm_addr_vector): completed IPv6 address support. added const
12148 to the address parameter.
12149
5a525b84
GH
121502001-04-20 Gary Houston <ghouston@arglist.com>
12151
12152 * socket.c (scm_fill_sockaddr): call htons for sin6_port.
12153 Don't assign sin6_scope_id in structure unless HAVE_SIN6_SCOPE_ID
12154 is defined.
12155 (scm_addr_vector): use a switch instead of multiple if statements.
12156 Add support for IPv6 (incomplete) .
e1368a8d 12157 MAX_ADDR_SIZE: increase to size of struct sockaddr_in6 if needed.
5a525b84 12158
1a551638
DH
121592001-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
12160
12161 * struct.c (scm_free_structs): Only pairs may be accessed with
12162 SCM_C[AD]R.
12163
c07b3fef
MD
121642001-04-19 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12165
a9d861e3
MD
12166 * unif.h (SCM_ARRAY_CONTIGUOUS): Reintroduced as deprecated.
12167
c07b3fef
MD
12168 * __scm.h (SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
12169 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Inserted required
12170 parentheses in order to get the correct associativity.
12171
af7546eb
DH
121722001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12173
12174 * unif.c (scm_array_to_list): Added missing handling of arrays of
12175 bytes. Thanks to Masao Uebayashi for the bug report.
12176
4daecfee
DH
121772001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12178
12179 * debug.c (scm_procedure_source): Use SCM_CLOSURE_FORMALS more
12180 consistently.
12181
726d810a
DH
121822001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12183
12184 * procs.h (SCM_CLOSURE_FORMALS): New macro.
12185
12186 * debug.c (scm_procedure_source), eval.c (scm_badformalsp,
12187 SCM_CEVAL, SCM_APPLY), goops.c (get_slot_value, set_slot_value),
1c938eb8 12188 procprop.c (scm_i_procedure_arity), sort.c (closureless): Use
726d810a
DH
12189 SCM_CLOSURE_FORMALS.
12190
12191 * eval.c (scm_badformalsp, SCM_CEVAL), procprop.c
12192 (scm_i_procedure_arity): Prefer stronger predicates like
12193 SCM_NULLP or SCM_FALSEP over SCM_IMP.
12194
12195 * macros.c (macro_print): Extracted macro printing code from
12196 print.c and simplified it.
12197
12198 (scm_macro_type): Use SCM_MACRO_TYPE;
12199
12200 (scm_init_macros): Use macro_print for printing macros.
12201
12202 * print.c (scm_print_opts): Improved option documentation.
12203
12204 (scm_iprin1): Extracted printing of macros to macros.c.
12205 Simplified printing of ordinary closures.
12206
12207 * procs.c (scm_thunk_p): Fixed handling of closures. Thanks to
12208 Martin Grabmueller for the bug report.
12209
e038c042
DH
122102001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12211
12212 This patch eliminates some further applications of SCM_C[AD]R to
12213 non pair cells.
12214
12215 * gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR): Deprecated. These have
12216 never been applied to real pairs.
12217
12218 * srcprop.h (SCM_SOURCE_PROPERTY_FLAG_BREAK): Added.
12219
12220 (SRCPROPBRK): Use SCM_SOURCE_PROPERTY_FLAG_BREAK.
12221
12222 * unif.h (SCM_ARRAY_CONTIGUOUS, SCM_ARRAY_FLAG_CONTIGUOUS,
12223 SCM_ARRAY_CONTP): Renamed SCM_ARRAY_CONTIGUOUS to
12224 SCM_ARRAY_FLAG_CONTIGUOUS and use it.
12225
12226 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
12227 Added.
12228
12229 * srcprop.h (SRCPROPH), unif.h (UNIFH): Renamed to
12230 SCM_SOURCE_PROPERTIES_H and SCM_UNIFORM_VECTORS_H, respectively.
12231
12232 * srcprop.h (SETSRCPROPBRK, CLEARSRCPROPBRK), unif.c
12233 (scm_dimensions_to_uniform_array, scm_ra_set_contp): Don't use
12234 SCM_SET{AND,OR}_CAR.
12235
3453619b
GH
122362001-04-17 Gary Houston <ghouston@arglist.com>
12237
12238 * some initial support for IPv6:
1c938eb8 12239
3453619b
GH
12240 * socket.c (scm_fill_sockaddr): improve the argument validation.
12241 don't allocate memory until all args are checked. instead of
12242 unconditional memset of soka, try setting sin_len to 0 if
12243 SIN_LEN is defined. add support for AF_INET6. define FUNC_NAME.
12244 (scm_socket, scm_connect): extend docstrings for IPv6.
12245 (scm_init_socket): intern AF_INET6 and PF_INET6.
12246
216eedfc
DH
122472001-04-17 Niibe Yutaka <gniibe@m17n.org>
12248
12249 * srcprop.c (scm_make_srcprops): Added SCM_ALLOW_INTS which
12250 matches SCM_DEFER_INTS at the beginning of the function.
12251
12252 * mallocs.c (scm_malloc_obj): Remove un-matched SCM_ALLOW_INTS.
12253
12254 * gc.c (scm_igc): Unconditionally call
12255 SCM_CRITICAL_SECTION_START/END.
12256
12257 * fluids.c (next_fluid_num): Unconditionally call
12258 SCM_CRITICAL_SECTION_START/END.
12259 (s_scm_make_fluid): Remove un-matched SCM_DEFER_INTS.
12260
12261 * coop-defs.h (SCM_THREAD_DEFER, SCM_THREAD_ALLOW,
12262 SCM_THREAD_REDEFER, SCM_THREAD_REALLOW_1, SCM_THREAD_REALLOW_2):
12263 Removed.
12264
12265 * __scm.h (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END):
12266 Defined as nothing for the case of !defined(USE_THREADS).
12267 (SCM_THREAD_DEFER, SCM_THREAD_ALLOW, SCM_THREAD_REDEFER):
12268 Removed.
12269 (<stdio.h>): Include when (SCM_DEBUG_INTERRUPTS == 1).
12270 (SCM_CHECK_NOT_DISABLED, SCM_CHECK_NOT_ENABLED): Print FILE and
12271 LINE.
12272 (SCM_DEFER_INTS, SCM_ALLOW_INTS_ONLY, SCM_ALLOW_INTS,
12273 SCM_REDEFER_INTS, SCM_REALLOW_INTS): Don't use
12274 SCM_THREAD_DEFER/SCM_THREAD_ALLOW. Instead, use
12275 SCM_CRITICAL_SECTION_START/END.
12276 (SCM_REALLOW_INTS: Bug fix. Don't call
12277 SCM_THREAD_SWITCHING_CODE.
12278 (SCM_TICK): Don't use SCM_DEFER_INTS/SCM_ALLOW_INTS. Instead, use
12279 SCM_THREAD_SWITCHING_CODE directly.
12280 (SCM_ENTER_A_SECTION): Unconditionally use
12281 SCM_CRITICAL_SECTION_START/END. (was:
12282 SCM_DEFER_INTS/SCM_ALLOW_INTS when SCM_POSIX_THREADS defined).
12283
122842001-04-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12285
12286 * __scm.h (SCM_CAREFUL_INTS, SCM_DEBUG_INTERRUPTS): Replaced the
12287 macro SCM_CAREFUL_INTS by the macro SCM_DEBUG_INTERRUPTS and
12288 allowed to explicitly set this macro via the CFLAGS variable
12289 during make.
12290
12291 * fluids.c (next_fluid_num), gc.c (scm_igc), coop-defs.h
12292 (SCM_THREAD_CRITICAL_SECTION_START,
12293 SCM_THREAD_CRITICAL_SECTION_END): Renamed
12294 SCM_THREAD_CRITICAL_SECTION_START/END to
12295 SCM_CRITICAL_SECTION_START/END.
12296
f22ed5a0
KN
122972001-04-11 Keisuke Nishida <kxn30@po.cwru.edu>
12298
12299 * debug-malloc.c (grow, scm_debug_malloc_prehistory): Use memset
12300 instead of bzero.
1c938eb8 12301
f22ed5a0 12302 * coop.c, iselect.c (FD_ZERO_N): Unconditionally use memset.
1c938eb8 12303 (MISSING_BZERO_DECL): Remove the declaration.
f22ed5a0
KN
12304
12305 Thanks to NIIBE Yutaka.
12306
508ded1c
MD
123072001-04-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12308
a087ba81
MD
12309 * init.c, goops.c, goops.h: Reverted change of 2001-03-29. (The
12310 goops module should be registered in order to work for an
12311 application which uses libguile statically linked.)
508ded1c 12312
e4b265d8
DH
123132001-04-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
12314
12315 * numbers.[ch] (scm_num2long, scm_num2long_long,
12316 scm_num2ulong_long, scm_num2ulong): Argument position is an
12317 unsigned integer.
12318
12319 * environments.c (eval_environment_folder,
12320 import_environment_folder), gh_data.c (gh_scm2longs,
12321 gh_scm2floats, gh_scm2doubles): Distinguish between 0 and NULL
12322 for integers and pointers, respectively.
12323
12324 * gh_data.c (gh_scm2ulong, gh_scm2long, gh_scm2int), socket.c
12325 (scm_fill_sockaddr), unif.c (scm_array_set_x), validate.h
12326 (SCM_NUM2ULONG, SCM_NUM2LONG, SCM_NUM2LONG_DEF,
12327 SCM_NUM2LONG_LONG): Don't pass argument positions as pointers.
12328
12329 * filesys.c (scm_open_fdes, scm_open), net_db (scm_inet_ntoa,
12330 scm_inet_netof, scm_lnaof, scm_gethost, scm_getproto), posix.c
12331 (scm_utime), ramap.c (scm_array_fill_int), scmsigs.c
12332 (scm_sigaction), socket.c (scm_htonl, scm_ntohl, scm_sendto),
12333 stime.c (scm_localtime, scm_gmtime), struct.c (scm_struct_set_x),
12334 validate.h (SCM_VALIDATE_LONG_COPY): Whitespace fixes.
12335
89d04205
NJ
123362001-04-09 Neil Jerram <neil@ossau.uklinux.net>
12337
12338 * strings.c (scm_read_only_string_p): Update docstring to reflect
12339 current (non-)usage of "read only" strings.
40f83c3e
NJ
12340 (scm_make_shared_substring): Clarify docstring by changing
12341 "semantics" to "arguments".
89d04205 12342
4d66be54
MG
123432001-04-06 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12344
12345 * hooks.c (scm_make_hook, scm_make_hook_with_name),
12346 (scm_hook_p, scm_hook_empty_p, scm_run_hook): Docstring
12347 improvements.
12348
1e6808ea
MG
123492001-04-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12350
12351 The following changes make the documentation more consistent.
1c938eb8 12352
1e6808ea
MG
12353 * rdelim.c (scm_write_line), posix.c (scm_utime), ports.c
12354 (scm_seek), net_db.c (scm_inet_aton, scm_inet_ntoa),
12355 (scm_inet_netof, scm_lnaof, scm_inet_makeaddr), ioext.c
12356 (scm_ftell): Changed @smalllisp ... @end smalllisp to @lisp
12357 ... @end lisp.
12358
12359 * vports.c (scm_make_soft_port), version.c (scm_version), unif.c
12360 (scm_array_dimensions, scm_make_shared_array),
12361 (scm_transpose_array, scm_enclose_array, scm_bit_count_star),
12362 throw.c (scm_catch), struct.c (scm_make_vtable_vtable), strop.c
12363 (scm_string_rindex, scm_string_index, scm_substring_fill_x),
12364 (scm_string_null_p), strings.c (scm_read_only_string_p), root.c
12365 (scm_call_with_dynamic_root), ramap.c (scm_array_index_map_x),
12366 posix.c (scm_mknod), numbers.c (scm_logtest, scm_logbit_p),
12367 macros.c (scm_makmmacro), list.c (scm_append), environments.c
12368 (scm_environment_fold), dynwind.c (s_scm_dynamic_wind): Changed
12369 @example ... @end example to @lisp ... @end lisp.
12370
12371 * weaks.c (scm_weak_vector): Corrected docstring.
12372
12373 * hashtab.c (scm_hashq_ref, scm_hashq_set_x, scm_hashq_remove_x),
12374 (scm_hashv_ref, scm_hashv_set_x, scm_hashv_remove_x),
12375 (scm_hash_ref, scm_hash_set_x, scm_hash_remove_x, scm_hashx_ref),
12376 (scm_hashx_set_x, scm_hashx_get_handle),
12377 (scm_hashx_create_handle_x), regex-posix.c (scm_make_regexp),
12378 (scm_regexp_exec, scm_regexp_p), numbers.c (scm_logtest),
12379 vectors.c (scm_vector_fill_x), strings.c
12380 (scm_make_shared_substring), symbols.c (scm_string_to_symbol),
12381 objprop.c (scm_set_object_properties_x):
12382 (scm_set_object_property_x), throw.c (scm_catch, scm_lazy_catch),
12383 strports.c (scm_call_with_input_string), ports.c
12384 (scm_truncate_file), ioext.c (scm_ftell), ports.c (scm_seek),
12385 list.c (scm_append_x), dynwind.c (scm_dynamic_wind), error.c
12386 (scm_error_scm), vports.c (scm_make_soft_port), weaks.c
12387 (scm_make_weak_vector,scm_weak_vector_p),
12388 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table),
12389 (scm_make_doubly_weak_hash_table, scm_weak_key_hash_table_p),
12390 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
12391 macros.c (scm_macro_type), dynl.c (scm_dynamic_link),
12392 (scm_dynamic_unlink, scm_dynamic_call, scm_dynamic_args_call):
12393 Made parameter names match documentation by renaming parameters
12394 and/or fixing docstrings.
1c938eb8 12395
1e6808ea
MG
12396 * numbers.c (scm_ash): Corrected Texinfo markup.
12397
12398 * strop.c (scm_string_index, scm_string_rindex),
12399 (scm_substring_fill_x, scm_string_null_p): Removed `qdocs'.
12400
12401 * vports.c (scm_make_soft_port), unif.c
12402 (scm_uniform_vector_length, scm_array_p, scm_array_rank),
12403 (scm_dimensions_to_uniform_array, scm_transpose_array),
12404 (scm_array_in_bounds_p, scm_uniform_vector_ref),
12405 (scm_bit_count, scm_bit_position, scm_bit_count_star),
12406 (scm_array_to_list, scm_list_to_uniform_array),
12407 (scm_array_prototype, symbols.c (scm_string_to_symbol), strports.c
12408 (scm_open_input_string, scm_open_output_string),
12409 (scm_get_output_string), strop.c (scm_string_copy),
12410 (scm_string_fill_x), strings.c (scm_string_p, scm_string), stime.c
12411 (scm_get_internal_real_time, scm_times),
12412 (scm_get_internal_run_time, scm_current_time, scm_gettimeofday),
12413 (scm_localtime, scm_gmtime), socket.c (scm_htons, scm_ntohs),
12414 (scm_htonl, scm_ntohl, scm_socket, scm_socketpair),
12415 (scm_getsockopt, scm_getsockname, scm_getpeername, scm_recvfrom),
12416 simpos.c (scm_system), random.c (scm_random_uniform),
12417 (scm_random_normal, scm_random_exp), ramap.c
12418 (scm_array_equal_p), posix.c (scm_pipe, scm_getgroups),
12419 (scm_status_exit_val, scm_status_term_sig, scm_status_stop_sig),
12420 (scm_getppid, scm_getuid, scm_getgid, scm_geteuid, scm_getegid),
12421 (scm_getpgrp, scm_ttyname, scm_ctermid, scm_tcgetpgrp, scm_uname),
12422 (scm_environ, scm_tmpnam, scm_mkstemp, scm_access, scm_getpid),
12423 (scm_setlocale), ports.c (scm_char_ready_p, scm_drain_input),
12424 (scm_pt_size, scm_pt_member, scm_port_revealed, scm_port_mode),
12425 (scm_close_port, scm_input_port_p, scm_output_port_p, scm_port_p),
12426 (scm_port_closed_p, scm_eof_object_p, scm_read_char),
12427 (scm_peek_char), pairs.c (scm_pair_p, scm_cons), numbers.c
12428 (scm_logand, scm_logior, scm_logxor, scm_lognot),
12429 (scm_integer_expt, scm_bit_extract, scm_logcount),
12430 (scm_integer_length, scm_string_to_number, scm_inexact_to_exact),
12431 net_db.c (scm_inet_netof, scm_lnaof), modules.c
12432 (scm_interaction_environment), macros.c (scm_makacro),
12433 (scm_makmacro, scm_makmmacro), keywords.c (scm_keyword_p), ioext.c
12434 (scm_ftell, scm_dup_to_fdes, scm_fileno, scm_isatty_p),
12435 (scm_fdopen, scm_fdes_to_ports), gc.c (scm_gc_stats), fluids.c
12436 (scm_fluid_ref), filesys.c (scm_open_fdes),
12437 (scm_stat, scm_directory_stream_p, scm_getcwd, scm_readlink):
12438 Docstring correction: `Returns' -> `Return'
12439
1c938eb8
TTN
12440 * gc.c (scm_set_debug_cell_accesses_x):
12441 (s_scm_gc_set_debug_check_freelist_x):
1e6808ea
MG
12442 * fluids.c (scm_fluid_p): Added texinfo markup.
12443
12444 * error.c (scm_strerror): Made docstring more precise.
12445
12446 * vectors.c (scm_vector_p, scm_vector, scm_make_vector),
12447 (scm_vector_to_list, _scm_vector_fill_x), symbols.c
12448 (scm_symbol_p, scm_symbol_to_string), strorder.c
12449 (scm_string_equal_p, scm_string_ci_equal_p, scm_string_less_p),
12450 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p),
12451 (scm_string_ci_less_p, scm_string_ci_leq_p, scm_string_ci_gr_p):
12452 (scm_string_ci_geq_p), strop.c (scm_string_copy),
12453 (scm_string_fill_x): Removed `(r5rs)' from docstrings.
12454
9a6976cd
DH
124552001-04-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
12456
12457 * gc.c (MARK): Re-introduce a cheap sanity test for non debug
12458 mode, as suggested by Michael Livshin.
12459
463b2219
ML
124602001-03-31 Michael Livshin <mlivshin@bigfoot.com>
12461
12462 * backtrace.c (display_backtrace_body): since the `print_state'
12463 variable is not used (instead its data field is used directly as
12464 `pstate'), protect it from the hungry compiler optimizations.
12465 thanks to Bill Schottstaedt for the report.
12466
61045190
DH
124672001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
12468
12469 * gc.[ch] (scm_tc16_allocated): New type tag for allocated cells.
12470 It is only defined and used if guile is compiled with
12471 SCM_DEBUG_CELL_ACCESSES set to true. It's purpose is, to never
12472 let cells with a free_cell type tag be visible outside of the
12473 garbage collector when in debug mode.
12474
12475 * gc.c (scm_debug_cell_accesses_p): Set to true as default.
12476
12477 (scm_assert_cell_valid): Use a local static variable to avoid
12478 recursion.
12479
12480 (MARK): Only check for rogue cell pointers in debug mode. Use
12481 scm_cellp for this purpose and place all checks for rogue pointers
12482 into that function. Further, since due to conservative scanning
12483 we may encounter free cells during marking, don't use the standard
12484 cell type accessor macro to determine the cell type.
12485
12486 (scm_cellp): Check if the cell pointer actually points into a
12487 card header.
12488
12489 (scm_init_gc): Initalize scm_tc16_allocated.
12490
12491 * gc.h (GCH): Renamed to SCM_GC_H.
12492
12493 (SCM_VALIDATE_CELL): Enclose the expression in brackets. This
12494 might be unnecessary, but I feel better this way :-)
12495
12496 (SCM_GC_CELL_TYPE): New macro.
12497
12498 (SCM_SETAND_CDR, SCM_SETOR_CDR): Deprecated. These are not used
12499 in guile, and it is unlikely that they will be applied to real
12500 pairs anyway.
12501
12502 (SCM_SET_FREE_CELL_TYPE): Removed. It was not used.
12503
12504 (SCM_GC_SET_ALLOCATED): New macro. Only non-empty if guile is
12505 compiled with SCM_DEBUG_CELL_ACCESSES set to true.
12506
12507 (SCM_NEWCELL, SCM_NEWCELL2): Use of SCM_GC_SET_ALLOCATED will
12508 make sure that in debug mode no free cell will ever be visible
12509 outside of the garbage collector.
12510
85d6df6a
DH
125112001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
12512
12513 * async.c (scm_asyncs_pending): Don't use != to compare SCM
12514 values.
12515
12516 * async.c (scm_system_async), variable.c (scm_make_variable,
12517 scm_make_undefined_variable): Use scm_cons to create a pair.
12518
12519 * debug.c (scm_reverse_lookup): Perform proper type checking.
12520 Remove suspicious use of SCM_SLOPPY_CONSP.
12521
12522 * eq.c (scm_equal_p), tags.h (SCM_ECONSP): Use SCM_CONSP instead
12523 of SCM_SLOPPY_CONSP. A sane compiler should be able to perform
12524 the corresponding optimization.
12525
12526 * eval.c (iqq): Use proper type check.
12527
12528 (scm_m_expand_body): Remove redundant type checks.
12529
12530 (promise_print): Don't access promise cells as pairs.
12531
12532 * eval.c (EVALCAR, iqq, scm_m_expand_body, scm_eval_args,
12533 scm_deval_args SCM_CEVAL), guardians.c (scm_guard), hashtab.c
12534 (scm_internal_hash_fold), print.c (scm_iprlist): Use !SCM_CELLP
12535 for SCM_NCELLP, !SCM_CONSP for SCM_NCONSP, !SCM_IMP for SCM_NIMP,
12536 !SCM_FALSEP for SCM_NFALSEP, !SCM_NULLP for SCM_NNULLP
12537
12538 * eval.c (scm_m_define, scm_macroexp, SCM_CEVAL), print.c
12539 (scm_iprin1): Use new macro predicate and accessors.
12540
12541 * eval.h (scm_tc16_macro): Removed declaration. It is declared
12542 in macros.h.
12543
12544 * eval.h (EVALH), macros.h (MACROSH), ports.h (PORTSH), procs.h
12545 (PROCSH), tags.h (TAGSH), variable.h (VARIABLEH): Renamed to
12546 SCM_EVAL_H, SCM_MACROS_H, SCM_PORTS_H, SCM_PROCS_H, SCM_TAGS_H and
12547 SCM_VARIABLE_H. Even the macros that are used to inhibit
12548 including a header file twice should be in the SCM_ namespace.
12549
12550 * fluids.c (scm_swap_fluids, scm_swap_fluids_reverse),
12551 properties.c (scm_primitive_property_ref,
12552 scm_primitive_property_del_x): Prefer stronger predicates like
12553 SCM_NULLP or SCM_FALSEP over SCM_IMP.
12554
12555 * gc.c (MARK): Use proper macros to access procedure-with-setter
12556 cell elements and closure cell elements.
12557
12558 (gc_sweep_freelist_finish, scm_gc_sweep, init_heap_seg): Don't
12559 access free cells as pairs.
12560
12561 (scm_unprotect_object): scm_hashq_get_handle returns #f if
12562 no hashtab entry is found.
12563
12564 * gc.c (scm_gc_sweep), ports.c (scm_close_port): Use new macro
12565 SCM_CLR_PORT_OPEN_FLAG.
12566
12567 * guardians.c (TCONC_IN), print.c (scm_free_print_state): Don't
12568 use SCM_SET_C[AD]R for uninitialized cells.
12569
12570 * hashtab.c (scm_hash_fn_get_handle): Use SCM_VALIDATE_VECTOR.
12571 If the hashtable has no slots, return #f instead of '(). This
12572 unifies the return value with most assoc-functions.
12573
12574 (scm_hash_fn_ref): Use proper type check.
12575
12576 (scm_hashq_get_handle, scm_hashv_get_handle, scm_hash_get_handle):
12577 Removed references to non-existing functions from documentation.
12578
12579 * keywords.c (scm_keyword_dash_symbol): Use proper macros to
12580 access keyword cell elements.
12581
12582 * macros.h (SCM_MACROP, SCM_MACRO_TYPE, SCM_MACRO_CODE): New
12583 macros.
12584
12585 * ports.h (SCM_CLR_PORT_OPEN_FLAG): New macro.
12586
12587 * print.c (scm_iprlist): Added comment. Improved loop
12588 conditions.
12589
12590 * procs.h (SCM_ENV, SCM_SETENV): Don't access closure cells as
12591 pairs.
12592
12593 * smob.c (scm_markcdr): Don't access smob cells as pairs.
12594
12595 * tags.h (SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP): Deprecated.
12596
12597 * throw.c (ACTIVATEJB, DEACTIVATEJB): Don't access jump buffer
12598 cells as pairs.
12599
12600 * variable.c (variable_print, variable_equalp, scm_variable_ref,
12601 scm_variable_set_x): Use proper macros to access variable cell
12602 elements.
12603
12604 (scm_variable_bound_p): Don't use SCM_NEGATE_BOOL.
12605
12606 * variable.h (SCM_VARVCELL): Don't access variable cells as
12607 pairs.
12608
12609 * vectors.c (scm_vector), weaks.c (scm_weak_vector): Simplified,
12610 added FIXME comment, removed register specifier.
12611
1b27e91a
KN
126122001-03-29 Keisuke Nishida <kxn30@po.cwru.edu>
12613
12614 * goops.c, goops.h (scm_init_oop_goops_goopscore_module): Deprecated.
12615 * init.c (scm_init_guile_1): Don't init goopscore module.
12616
16c634ec
MV
126172001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
12618
12619 * eval.c (SCM_APPLY): Check that arg1 is bound for scm_tc7_cxr.
12620
91344ceb
MG
126212001-03-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12622
12623 * strop.c (scm_string_to_list): Fixed docstring markup.
12624 (scm_string_upcase_x, scm_string_upcase, scm_string_downcase_x),
12625 (scm_string_downcase, scm_string_capitalize_x),
12626 (scm_string_capitalize): Rewrote and corrected docstrings.
12627 (scm_string_ci_to_symbol): Made docstring more explicit.
12628
07576812
MV
126292001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
12630
12631 * values.h (scm_values_vtable, SCM_VALUESP): Moved here so that
12632 eval.c can use it.
12633 (scm_call_with_values): Removed.
12634 * values.c (values_vtable, scm_values_vtable): Added "scm_" prefix
12635 so that it can be exported.
12636 (scm_call_with_values): Removed.
1c938eb8 12637
07576812
MV
12638 * tags.h (SCM_IM_CALL_WITH_VALUES): New isym.
12639 * eval.c: Include "libguile/values.h"
12640 (scm_m_at_call_with_values, scm_sym_at_call_with_values):
12641 New.
12642 (unmemocopy, scm_ceval, scm_deval): Handle new isym.
12643 * eval.h (scm_sym_at_call_with_values, scm_m_at_call_with_values):
12644 New delcarations to support above change.
12645
12646 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Fix syntax
12647 errors with last change.
1c938eb8 12648
07576812
MV
126492001-03-25 Marius Vollmer <mvo@zagadka.ping.de>
12650
12651 * eval.c (scm_primitive_eval_x, scm_primitive_eval, scm_i_eval_x,
12652 scm_i_eval): Moved the application of the system transformer from
12653 scm_i_eval to scm_primitive_eval.
12654
a17bb5fd
NJ
126552001-03-23 Neil Jerram <neil@ossau.uklinux.net>
12656
a6be01a4
NJ
12657 * guile-snarf.awk.in: Substitute "\\" with "\" in .doc output.
12658
a17bb5fd
NJ
12659 * strop.c (scm_string_index): Fix docstring line break
12660 regression.
12661
12662 * list.c (scm_cons_star): Fix docstring typo.
12663
be54b15d
DH
126642001-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
12665
12666 * gc.c (scm_init_storage), gdbint.c (scm_init_gdbint), numbers.c
12667 (big2str), ports.c (scm_drain_input), read.c (scm_read,
12668 scm_grow_tok_buf), strings.c (scm_string, scm_makfromstr,
12669 scm_make_string, scm_string_append), strports.c (st_resize_port,
12670 scm_object_to_string), unif.c (scm_make_uve): Replace calls to
12671 scm_makstr with calls to scm_allocate_string.
12672
12673 * strings.[ch] (scm_allocate_string): New function.
12674
12675 * strings.[ch] (scm_makstr): Deprecated.
12676
789ecc05
GH
126772001-03-18 Gary Houston <ghouston@arglist.com>
12678
6d163216
GH
12679 * posix.c (scm_tmpnam): check that return value from tmpnam is not
12680 NULL. rewrote the docstring.
12681 (scm_mkstemp): new procedure implementing "mkstemp!".
12682 * posix.h: declare scm_mkstemp.
12683
789ecc05
GH
12684 * net_db.c: declare h_errno if configure didn't define HAVE_H_ERRNO.
12685 normally it would be found in netdb.h.
12686
c6c79933
GH
126872001-03-17 Gary Houston <ghouston@arglist.com>
12688
e9e225e5
GH
12689 * sort.c (scm_sort): move sortvec variable to avoid a compiler
12690 warning when HAVE_ARRAYS is not defined. move len too.
12691
12692 * Makefile.am (DOT_X_FILES): remove net_db.x, posix.x, socket.x.
12693 (EXTRA_DOT_X_FILES): let configure set the value.
12694 (DOT_DOC_FILES): remove net_db.doc, posix.doc, socket.doc.
12695
c6c79933
GH
12696 * gc.c (scm_must_malloc): changed the comment explaining when
12697 scm_must variants of malloc/free etc., should be used, based on
12698 explanation from Dirk Herrmann.
12699 * fports.c (scm_fport_buffer_add): use FUNC_NAME instead of a local
12700 string with procedure name. use scm_must_malloc instead of malloc.
12701 (scm_setvbuf, scm_fdes_to_port, fport_close): use scm_must variants
12702 of malloc/free.
12703 * ports.c (scm_add_to_port_table, scm_remove_from_port_table,
12704 scm_ungetc): use scm_must variants of malloc/realloc/free.
12705 (scm_add_to_port_table, scm_ungetc): define FUNC_NAME.
12706
b3fcac34
DH
127072001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12708
12709 * __scm.h (SCM_ASSERT, SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
12710 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Don't call scm_wta, call
12711 scm_wrong_type_arg instead.
12712
12713 (SCM_WNA): Deprecated.
12714
12715 * error.[ch] (scm_wta): Deprecated.
12716
12717 * numbers.c (s_i_log): Minor comment fix.
12718
12719 * read.c (scm_lreadr), unif.c (scm_aind, scm_shap2ra,
12720 scm_make_shared_array, scm_transpose_array, scm_enclose_array,
12721 scm_array_in_bounds_p): Don't use SCM_ASSERT to check for
12722 wrong-num-args or misc errors.
12723
12724 * unif.c (scm_make_shared_array, scm_transpose_array,
12725 scm_enclose_array, scm_array_in_bounds_p, scm_array_set_x):
12726 Validate the rest argument (note: this is only done when guile is
12727 built with SCM_DEBUG_REST_ARGUMENT=1)
12728
12729 (scm_array_in_bounds_p, scm_uniform_vector_ref, scm_array_set_x):
12730 Replace calls to scm_wrong_num_args by SCM_WRONG_NUM_ARGS.
12731
12732 * validate.h (SCM_FUNC_NAME, SCM_VALIDATE_NUMBER_COPY,
12733 SCM_VALIDATE_NUMBER_DEF_COPY): Deprecated.
12734
68baa7e7
DH
127352001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12736
12737 * validate.h (SCM_WRONG_NUM_ARGS): Call scm_error_num_args_subr
12738 instead of scm_wrong_num_args.
12739
12740 * coop-threads.c: Don't include libguile/strings.h. (Was only
12741 needed for former implementation of SCM_WRONG_NUM_ARGS.)
12742
12743 * debug.c (scm_m_start_stack): Don't use SCM_ASSERT to check for
12744 wrong-num-args errors.
12745
9f40cd87
DH
127462001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12747
12748 * error.[ch] (scm_error_num_args_subr): New function.
12749
5352393c
MG
127502001-03-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12751
12752 * list.c (scm_list, scm_cons_star, scm_null_p, scm_list_p),
12753 (scm_length, scm_append, scm_reverse, scm_list_ref),
12754 (scm_memq, scm_memv, scm_member, scm_delv_x, scm_delete_x),
12755 (scm_delq, scm_delv, scm_delete, scm_delq1_x, scm_delv1_x),
12756 (scm_delete1_x), gc.c (scm_map_free_list),
12757 (scm_free_list_length), hash.c (scm_hashq, scm_hashv),
12758 (scm_hash), hashtab.c (scm_hashq_ref, scm_hashq_set_x),
12759 (scm_hashq_remove_x, scm_hashv_ref, scm_hashv_set_x),
12760 (scm_hashv_remove_x, scm_hash_ref, scm_hash_set_x),
12761 (scm_hash_remove_x), ports.c (scm_pt_size, scm_pt_member), print.c
12762 (scm_current_pstate), scmsigs.c (scm_usleep), goops.c
12763 (scm_get_keyword, scm_sys_compute_slots): Added texinfo markup.
12764
12765 * weaks.c (scm_weak_vector_p, scm_weak_key_hash_table_p),
12766 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
12767 rdelim.c (scm_read_delimited_x), strop.c (scm_string_index),
12768 symbols.c (scm_symbol_interned_p), numbers.c
12769 (scm_string_to_number), ports.c (scm_port_p): Corrected texinfo
12770 markup.
12771
a9205f07
KN
127722001-03-16 Keisuke Nishida <kxn30@po.cwru.edu>
12773
12774 * snarf.h (SCM_CONST_LONG): Deprecated.
12775 * tag.c (CONST_INUM): New macro. Use it to define scm_utag_*.
12776
6d583887
MV
127772001-03-15 Marius Vollmer <marius.vollmer@uni-dortmund.de>
12778
12779 * numbers.c (scm_num2ulong): Check that a bignum is positive
12780 before looking at the magnitude. Correctly check for overflow
12781 during conversion.
12782 (scm_num2long_long): Likewise.
12783 (scm_num2ulong_long): New.
12784 (ULONG_LONG_MAX): Define if not already defined.
12785 * numbers.h: (scm_num2ulong_long): New prototype.
1c938eb8 12786
e87a03fc
MG
127872001-03-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12788
12789 * validate.h (SCM_VALIDATE_OPOUTSTRPORT): New macro.
12790
12791 * strports.h (SCM_STRPORTP, SCM_OPSTRPORTP, SCM_OPINSTRPORTP),
12792 (SCM_OPOUTSTRPORTP): New predicate macros.
12793 (scm_open_input_string, scm_open_output_string),
12794 (scm_get_output_string): New prototypes.
1c938eb8 12795
e87a03fc
MG
12796 * strports.c (scm_open_input_string, scm_open_output_string),
12797 (scm_get_output_string): New procedures (SRFI-6 compliant).
12798 Made scm_tc16_strport non-static.
12799
160bb34a
DH
128002001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
12801
12802 * macros.h (SCM_ASSYNT): Removed unused object argument from
12803 signature.
12804
12805 * eval.c (scm_m_body, scm_m_quote, scm_m_begin, scm_m_if,
12806 scm_m_set_x, scm_m_and, scm_m_or, scm_m_case, scm_m_cond,
12807 scm_m_letstar, scm_m_do, scm_m_quasiquote, scm_m_delay,
12808 scm_m_define, scm_m_letrec1, scm_m_letrec, scm_m_let, scm_m_apply,
12809 scm_m_cont, scm_m_nil_cond, scm_m_nil_ify, scm_m_t_ify,
12810 scm_m_0_cond, scm_m_0_ify, scm_m_1_ify, scm_m_atfop, scm_m_atbind,
12811 scm_m_expand_body), evalext.c (scm_m_generalized_set_x,
12812 scm_m_undefine), goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
12813 scm_m_atdispatch): Removed unused object argument from call to
12814 SCM_ASSYNT.
12815
80dee77b
DH
128162001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
12817
12818 * gh.h/gh_data.c (gh_ints2scm): Changed the signature to use a
12819 const int* to reflect that the input array of integers remains
12820 unchanged. Thanks to Brett Viren for the hint.
12821
d3dd80ab
MG
128222001-03-14 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12823
12824 * gh_data.c (gh_scm2chars, gh_scm2shorts, gh_scm2longs),
12825 (gh_scm2floats, gh_scm2doubles): Check for malloc() returning NULL
12826 in various places.
12827 (gh_scm2newstr, gh_symbol2newstr): Change call to
12828 scm_must_malloc() to malloc(), because user-free()able memory is
12829 allocated.
12830
12831 * gc.c: Added declaration of `scm_debug_check_freelist'.
12832
26a3038d
MG
128332001-03-13 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12834
12835 * ports.c (scm_port_mode): Changed `mode' array size to 4.
12836
1f3908c4
KN
128372001-03-12 Keisuke Nishida <kxn30@po.cwru.edu>
12838
12839 * strports.c (scm_object_to_string): New procedure.
12840 (scm_strprint_obj): Deprecated.
12841 * strports.h: Reflect the changes.
12842
e11208ca
DH
128432001-03-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
12844
12845 * goops.h (SCM_VALIDATE_PUREGENERIC): New macro.
12846
12847 * goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
12848 scm_m_atdispatch): Provide definitions for FUNC_NAME. Don't use
12849 SCM_ASSYNT to check for correct argument types. Either use some
12850 SCM_VALIDATE_* macro or an explicit test.
12851
12852 (scm_make_foreign_object): Don't use SCM_ASSERT to check for
12853 misc-errors.
12854
12855 * macros.h (SCM_ASSYNT): On assertion failure, issue a misc-error
12856 instead of calling scm_wta.
12857
67e8151b
MG
128582001-03-12 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12859
12860 * load.c (scm_primitive_load, scm_primitive_load_path),
12861 (scm_sys_search_load_path): Corrected docstrings (file ->
12862 filename).
12863
12864 * eval.c (scm_force): Added texinfo markup to docstring.
12865 (scm_promise_p): Renamed parameter to `obj' to match docstring.
12866
12867 * debug-malloc.c: Reinserted #include <stdio.h>.
12868
e0c08f17
KN
128692001-03-11 Keisuke Nishida <kxn30@po.cwru.edu>
12870
e39c3de4
KN
12871 * list.c (s_scm_reverse_x): Use SCM_VALIDATE_LIST.
12872
e0c08f17
KN
12873 * environments.c, error.c, eval.c, filesys.c, hashtab.c, load.c,
12874 net_db.c, procprop.c, read.c, scmsigs.c, socket.c, struct.c:
12875 Use SCM_LISTn instead of scm_listify.
12876
e6e2e95a
MD
128772001-03-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12878
12879 * _scm.h: Removed #include <errno.h>.
12880
12881 * error.c, net_db.c, putenv.c, stime.c: Removed declaration of
12882 errno variable (can be a macro on some systems, for example when
12883 using linux libc with threads).
12884
12885 * error.c, filesys.c, gc.c, ioext.c, iselect.c, net_db.c, ports.c,
12886 posix.c, print.c, putenv.c, scmsigs.c, script.c, simpos.c, smob.c,
12887 socket.c, srcprop.c, stime.c, strop.c, unif.c, vports.c: Added
12888 #include <errno.h> in these 20 out of 100 files.
1c938eb8 12889
97d0e20b
GH
128902001-03-10 Gary Houston <ghouston@arglist.com>
12891
12892 * socket.c: add a definition of SUN_LEN (from glibc) for when it's
12893 not already defined.
12894
e75341b3
MD
128952001-03-09 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12896
12897 * coop.c: Inserted #include <stdio.h>.
12898
12899 * iselect.c: Reinserted #include <stdio.h>.
12900
74355186
MV
129012001-03-10 Marius Vollmer <mvo@zagadka.ping.de>
12902
12903 * posix.c: Replaced `#define' of __USE_XOPEN right before
12904 including unistd.h with a define of _GNU_SOURCE at the very top of
12905 the file.
12906
783e7774
KN
129072001-03-09 Keisuke Nishida <kxn30@po.cwru.edu>
12908
12909 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
12910 continuations.c, debug-malloc.c, debug.c, dynwind.c, eq.c, eval.c,
12911 feature.c, filesys.h, gc_os_dep.c, gh_data.c, gh_eval.c,
12912 gh_funcs.c, gh_io.c, gh_list.c, gh_predicates.c, hash.c,
12913 hashtab.c, iselect.c, keywords.c, list.c, load.c, mallocs.c,
12914 net_db.c, numbers.c, objprop.c, objprop.h, options.c, pairs.c,
12915 print.c, procprop.c, procs.c, properties.c, ramap.c,
12916 regex-posix.c, root.c, scmsigs.c, simpos.c, socket.c, srcprop.c,
12917 stackchk.c, stacks.c, strings.c, strop.c, strorder.c, struct.c,
12918 symbols.c, tag.c, threads.c, variable.c, vectors.c, weaks.c:
1c938eb8 12919 Remove #include <stdio.h>
783e7774
KN
12920 * gc.c, gdbint.c, root.c, sort.c, unif.c: Add #include <string.h>.
12921
12922 * procs.c (scm_make_subr_opt): Init symcell to avoid warning.
12923
9a677c37
MG
129242001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12925
12926 * posix.c (scm_gethostname): Set initial name length to 256 for
12927 Solaris.
12928
94e6d793
MG
129292001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12930
12931 * posix.h (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
12932 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
12933 (scm_sethostname, scm_gethostname): New prototypes.
12934
12935 * posix.c: Added inclusion of <crypt.h>, <sys/resource.h> and
12936 <sys/file.h>, if present.
12937 (scm_init_posix): [PRIO_PROCESS, PRIO_PGRP, PRIO_USER, LOCK_SH,
12938 LOCK_EX, LOCK_UN, LOCK_NB]: New variables.
12939 (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
12940 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
12941 (scm_sethostname, scm_gethostname): New procedures.
12942
650a1cf9
NJ
129432001-03-08 Neil Jerram <neil@ossau.uklinux.net>
12944
12945 * ports.c (scm_port_column): Docstring fixes: (i) port-line arg is
12946 not optional (ii) "recommend" spelling correction.
12947
9636b49c
MD
129482001-03-08 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12949
5e4a4d09
MD
12950 * ramap.c (racp): Removed optimization which caused array copying
12951 to fail if the two arrays shared storage. Re-inserted the IVDEP
12952 macros removed in the change of 2000-03-09. (Don't really have a
12953 complete grasp of what they are for, but they seem to be necessary
12954 on Crays. This needs testing!) Thanks to Miroslav Silovic.
12955
9636b49c
MD
12956 * hash.c (scm_string_hash): Don't downcase characters.
12957
04a4d666
MD
129582001-03-07 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12959
9636b49c 12960 * symbols.c (scm_symbols_prehistory): Changed symbol hash table
04a4d666
MD
12961 size from 277 --> 1009.
12962
12963 * symbols.c, symbols.h (scm_sys_symbols): New function GUILE_DEBUG
12964 function.
12965
12966 * coop-threads.c: Fixed change of 2001-03-06.
1c938eb8 12967
04a4d666
MD
12968 * validate.h: Code formatting.
12969
66418d34
KN
129702001-03-07 Keisuke Nishida <kxn30@po.cwru.edu>
12971
12972 * Makefile.am (*.x): Add dependency on snarf.h and guile-doc-snarf.in.
12973 (*.doc): Add dependency on guile-snarf.awk.in.
12974
12975 * guile-snarf.awk.in: Neglect spaces at the end of
12976 SCM_SNARF_DOCSTRING_END. Skip lines "# NN ..." in the
12977 middle of docstrings. (To avoid the problem with gcc-2.96.)
12978
2ade72d7
DH
129792001-03-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
12980
12981 * coop-threads.c (scm_call_with_new_thread), load.c
12982 (scm_primitive_load, scm_sys_search_load_path), random.c
12983 (scm_c_default_rstate), struct.c (scm_make_struct_layout,
12984 scm_struct_ref, scm_struct_set_x): Don't use SCM_ASSERT to
12985 (potentially) issue a scm-misc-error or wrong-num-args error
12986 message.
12987
12988 * load.c (scm_search_path): Use SCM_ASSERT_TYPE to give details
12989 about the expected type with the wrong-type-arg error message.
12990
12991 * smob.c (scm_make_smob): Abort on misuse of smob - it indicates
12992 a C level bug that can't be fixed from scheme anyway.
12993
586d7da2
MD
129942001-03-05 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12995
12996 * eval.c (scm_m_letstar): Removed check for duplicate bindings.
12997 Duplicate bindings are OK in a let* since a let* is semantically
12998 equivalent to a nested set of let:s.
12999
1dd05fd8
MG
130002001-03-05 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13001
13002 * print.c (scm_print_options): Fixed texinfo in docstring.
13003
13004 * net_db.c (scm_getserv, scm_getproto, scm_getnet): Return #f if
13005 the underlying functions getservent, getprotoent or getnetent
13006 return NULL instead of signalling an error.
13007
439006bf
GH
130082001-03-04 Gary Houston <ghouston@arglist.com>
13009
13010 * socket.c (scm_fill_sockaddr): don't allow buffer overflows when
13011 taking an unexpectedly large filename for an AF_UNIX socket from
13012 bind/connect/sendto (thanks to Martin Grabmueller).
1c938eb8 13013
439006bf
GH
13014 * socket.c (scm_sock_fd_to_port, SCM_SOCK_FD_TO_PORT): removed the
13015 former and adjusted the latter.
13016 (scm_socket, scm_socketpair): cosmetic changes.
13017 (scm_getsockopt, scm_setsockopt): declare optlen as int, not
13018 size_t as socklen_t substitute. don't restrict args/return values
13019 to INUM: allow full range of int or size_t.
13020 (scm_fill_sockaddr): check arguments before allocating memory, to
13021 avoid leakage. use malloc, not scm_must_malloc.
13022 (scm_connect, scm_bind, scm_sendto): use int, not size_t as socklen_t
13023 substitute. free the sockaddr structure before throwing an error.
13024 (scm_init_add_buffer): procedure removed, together with its static
13025 buffer scm_addr_buffer, which wouldn't be thread safe. instead,
13026 define a macro MAX_ADDR_SIZE and declare the buffer where needed.
13027 (scm_accept, scm_getpeername, scm_getsockname, scm_recvfrom,
13028 scm_sendto): use a local buffer instead of scm_addr_buffer.
13029 adjust for new SCM_SOCK_FD_TO_PORT. use int for address size,
13030 not size_t.
13031 (scm_recvfrom): set addr->sa_family to AF_UNSPEC before the recvfrom
13032 call to detect whether recvfrom could be bothered to set the address.
13033 (scm_init_socket): don't call scm_init_addr_buffer.
13034
276dd677
DH
130352001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
13036
13037 * debug.c (scm_procedure_source, scm_procedure_environment),
13038 print.c (scm_get_print_state), ramap.c (scm_array_fill_int,
13039 scm_array_index_map_x), sort.c (scm_sort_x, scm_sort,
13040 scm_stable_sort_x, scm_stable_sort), stacks.c (scm_make_stack,
13041 scm_last_stack_frame), symbols.c (scm_sym2vcell, scm_sym2ovcell),
13042 unif.c (scm_list_to_uniform_array, scm_uniform_vector_length,
13043 scm_transpose_array, scm_enclose_array, scm_array_in_bounds_p,
13044 scm_uniform_vector_ref, scm_array_set_x, scm_uniform_array_read_x,
13045 scm_uniform_array_write, scm_bit_set_star_x, scm_bit_count_star,
13046 scm_array_to_list, scm_array_prototype), validate.h
13047 (SCM_VALIDATE_NUMBER_COPY): Don't call function scm_wta, call
13048 scm_misc_error or scm_wrong_type_arg instead.
13049
13050 * validate.h (SCM_WTA, RETURN_SCM_WTA): Deprecated.
13051
5e03762c
MD
130522001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13053
13054 * goops.c, goops.h (scm_sys_pre_expand_closure_x): Removed.
13055 (scm_sys_tag_body): Added.
13056
db4b4ca6
DH
130572001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
13058
13059 * continuations.c (continuation_apply), eval.c (scm_m_lambda,
13060 scm_m_letstar, scm_m_letrec1, scm_m_let, SCM_APPLY), eval.h
13061 (SCM_EVALIM2), evalext.c (scm_m_generalized_set_x), gc.c
13062 (get_bvec, MARK), goops.c (scm_primitive_generic_generic),
13063 options.c (scm_options), ports.c (scm_remove_from_port_table),
13064 ramap.c (scm_ramapc), read.c (skip_scsh_block_comment, scm_lreadr,
13065 scm_lreadparen, scm_lreadrecparen), script.c (script_get_octal,
13066 script_get_backslash, script_read_arg), unif.c (scm_cvref): Don't
13067 call function scm_wta, call scm_misc_error or scm_wrong_type_arg
13068 instead.
13069
87e7741d
MD
130702001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13071
13072 * goops.c (scm_sys_pre_expand_closure_x): New procedure.
13073
d19b0aac
MV
130742001-03-04 Marius Vollmer <mvo@zagadka.ping.de>
13075
13076 * eval.c (scm_s_duplicate_bindings): New error message.
13077 (scm_m_letrec1, scm_m_letstar): Check for duplicate bindings.
13078
2fd945df
MV
130792001-03-03 Marius Vollmer <mvo@zagadka.ping.de>
13080
13081 * eval.h (SCM_EVALIM2): New macro. Use it when a
13082 immediate, literal constant should be evaluated.
13083 * eval.c (scm_s_duplicate_formals): New error message string.
13084 (scm_c_improper_memq): New function.
13085 (scm_m_lambda): Check for duplicate arguments.
13086 (scm_ceval, scm_deval): When executing a body: only cons a new
13087 toplevel environment frame when it is different from the
13088 existing one; use EVALCAR instead of SIDEVAL so that we can properly
13089 check for empty combinations; use SCM_EVALIM2 for the same reason
13090 in the non-toplevel loop.
13091 (nontoplevel_cdrxnoap, nontoplevel_cdrxbegin, nontoplevel_begin):
13092 New labels with the meaning of their non-"nontoplevel" partners,
13093 but they are used when it is known that the body is not evaluated at
13094 top-level.
13095 (scm_apply, scm_dapply): use SCM_EVALIM2 to get proper error
13096 reporting for empty combinations.
13097
9e6fc585
KN
130982001-03-02 Keisuke Nishida <kxn30@po.cwru.edu>
13099
13100 * Remove dump facilities.
13101 * dump.c, dump.h: Removed.
13102 * Makefile.am: Remove dump.c, dump.h, dump.x, dump.doc.
13103 * init.c: Remove #include "libguile/dump.h".
13104 (scm_init_guile_1): Remove scm_init_dump.
13105 * smob.h (scm_smob_descriptor): Remove slots: dump, undump.
13106 (scm_set_smob_dump, scm_set_smob_undump): Remove declaration.
13107 * smob.c (scm_make_smob_type): Remove initialization: dump, undump.
13108 (scm_set_smob_dump, scm_set_smob_undump): Removed.
13109
13110 * keywords.c: Remove #include "libguile/dump.h".
13111 (keyword_dump, keyword_undump): Removed.
13112 (scm_init_keywords): Remove scm_set_smob_dump and scm_set_smob_undump.
13113
eae54bf0
MG
131142001-03-02 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13115
13116 * vectors.c (s_scm_vector_p, list->vector, scm_vector)
13117 (scm_vector_ref, scm_vector_set_x, scm_vector_to_list)
13118 (scm_vector_fill_x), strorder.c (scm_string_equal_p)
13119 (scm_string_ci_equal_p, scm_string_less_p, scm_string_leq_p)
13120 (scm_string_gr_p, scm_string_geq_p, scm_string_ci_less_p)
13121 (scm_string_ci_geq_p), symbols.c (scm_symbol_p)
13122 (scm_symbol_to_string, scm_string_to_symbol): Changed use of @t{}
13123 to @code{} as the texinfo manual recommends, converted the
13124 examples to use a @lisp{}-environment.
13125
13126 * strports.c (scm_eval_string): Cleaned up the docstring.
13127
13128 * struct.c (scm_struct_p, scm_struct_vtable_p): Added texinfo
13129 markup.
13130
13131 * numbers.c (scm_exact_p, scm_odd_p, scm_even_p)
13132 (scm_number_to_string, scm_string_to_number, scm_number_p)
13133 (scm_real_p, scm_integer_p, scm_inexact_p, scm_make_rectangular)
13134 (scm_make_polar, scm_inexact_to_exact): Added texinfo markup.
13135 (scm_ash): Added texinfo markup and removed obsolete @refill.
13136 (scm_gr_p): Corrected comment.
13137 (scm_gr_p, scm_leq_p, scm_geq_p): Added texinfo markup to (future
13138 docstring) comments.
13139 (scm_positive_p, scm_less_p, scm_num_eq_p, scm_real_p)
13140 (scm_number_p, scm_negative_p, scm_max, scm_min, scm_sum)
13141 (scm_difference, scm_product, scm_divide, scm_asinh, scm_acosh)
13142 (scm_atanh, scm_truncate, scm_round, scm_exact_to_inexact)
13143 (floor, ceiling, $sqrt, $abs, $exp, $log, $sin, $cos, $tan, $asin)
13144 ($acos, $atan, $sinh, $cosh, $tanh, scm_real_part, scm_imag_part)
13145 (scm_magnitude, scm_angle, scm_abs, scm_quotient, scm_remainder)
13146 (scm_modulo, scm_gcd, scm_lcm): Added (future docstring) comments.
13147
23deee81
DH
131482001-02-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
13149
13150 * __scm.h (SCM_ASSERT_TYPE): Add missing macro parameter.
13151 (Obviously nobody compiles with SCM_RECKLESS defined...)
13152
13153 * validate.h (SCM_ASSERT_RANGE): Use the argument number.
13154
6fe692e9
MD
131552001-02-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13156
13157 * ports.c, ports.h (scm_c_read, scm_c_write): New functions.
13158
13159 * ports.h (SCM_READ_BUFFER_EMPTY_P): New macro.
13160
27c37006
NJ
131612001-02-24 Neil Jerram <neil@ossau.uklinux.net>
13162
13163 * numbers.c (scm_two_doubles, scm_sys_expt, scm_sys_atan2,
13164 scm_make_polar): Rename arguments `z1' and `z2' to `x' and `y',
13165 since use of `z' suggests that the arguments may be complex.
13166
13167 * goops.c (scm_make), numbers.c (scm_sys_expt): Fix docstring
13168 typos.
13169
2069af38
NJ
131702001-02-23 Neil Jerram <neil@ossau.uklinux.net>
13171
13172 * dump.c (scm_binary_write, scm_binary_read), eval.c
13173 (scm_primitive_eval), guardians.c (scm_guardian_destroyed_p,
13174 scm_guardian_greedy_p, scm_make_guardian), fports.c
13175 (scm_file_port_p): Minor docstring fixes.
13176
b42ff180
MV
131772001-02-22 Marius Vollmer <mvo@zagadka.ping.de>
13178
2069af38 13179 * load.c (load): Use scm_primitive_eval_x instead of scm_i_eval_x.
97ea55f8
MV
13180
13181 * goops.c (scm_add_method, DEFVAR): Use scm_eval instead of
13182 scm_i_eval.
13183 (make_class_from_template): Do not bother to set the current
13184 module around the call to DEFVAR, scm_eval takes care of that.
13185 (scm_init_goops): Make scm_module_goops and
13186 scm_goops_lookup_closure permanent objects.
1c938eb8 13187
97ea55f8
MV
13188 * eval.c (scm_ceval, scm_deval): When evaluating expressions on
13189 top level, create a fresh top-level environment for each
13190 expression instead of mutating the exisint frame. This is
13191 important when that frame is closed over.
13192
b42ff180
MV
13193 * numbers.c (s_scm_logior) [SCM_DIGSTOOBIG]: Also use
13194 SCM_DIGSPERLONG instead of DIGSPERLONG.
13195
09f2ab1e
MV
131962001-02-21 Marius Vollmer <mvo@zagadka.ping.de>
13197
13198 * eval.c (scm_ceval, scm_deval): Check for wrong number of args
13199 before applying arrow procedure in `cond' and before applying
13200 receiver procedure in call-with-current-continuation.
13201 (scm_i_eval): Do not invoke scm_copy_tree in argument in SCM_XEVAL
13202 macro. The argument is expanded more than one time.
13203
13204 * numbers.c (scm_logior) [SCM_DIGSTOOBIG]: Correctly use
13205 SCM_BIGDIG instead of BIGDIG. Thanks to Steven G. Johnson!
13206
132072001-02-20 Marius Vollmer <mvo@zagadka.ping.de>
13208
13209 * guile-doc-snarf.in, guile-func-name-check.in: Added copyright
13210 notice and license.
13211
7090240c
MG
132122001-02-17 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13213
13214 * variable.c (scm_make_variable, scm_make_undefined_variable)
13215 (scm_variable_ref, scm_variable_set_x, scm_builtin_variable)
13216 (scm_variable_bound_p), values.c (scm_values)
13217 (scm_call_with_values), unif.c (scm_bit_count)
13218 (scm_bit_set_star_x), symbols.c (scm_gentemp)
13219 (scm_gensym), strings.c (scm_string_p, scm_make_string)
13220 (scm_read_only_string_p, scm_string_length, scm_string_ref)
13221 (scm_string_set_x, scm_substring, scm_string_append), stime.c
13222 (scm_strptime, scm_mktime), random.c (scm_seed_to_random_state)
13223 (scm_copy_random_state, scm_random), print.c (scm_newline)
13224 (scm_write_char, scm_simple_format), debug-malloc.c
13225 (scm_malloc_stats), environments.c (scm_environment_p)
13226 (scm_environment_bound_p, scm_environment_ref)
13227 (scm_environment_fold, scm_environment_define)
13228 (scm_environment_undefine, scm_environment_set_x)
13229 (scm_environment_cell, scm_environment_observe)
13230 (scm_environment_observe_weak, scm_environment_unobserve)
13231 (scm_make_eval_environment, scm_eval_environment_p)
13232 (scm_eval_environment_set_local_x, scm_eval_environment_local)
13233 (scm_eval_environment_imported)
13234 (scm_eval_environment_set_imported_x, scm_make_import_environment)
13235 (scm_import_environment_p, scm_import_environment_imports)
13236 (scm_import_environment_set_imports_x, scm_make_export_environment)
13237 (scm_export_environment_p, scm_export_environment_private)
13238 (scm_export_environment_set_private_x)
13239 (scm_export_environment_signature)
13240 (scm_export_environment_set_signature_x, scm_leaf_environment_p):
13241 Added texinfo markup.
13242
13243 * ports.c (scm_drain_input): Lowercased argument to @var.
13244 (scm_current_input_port, scm_current_output_port): Filled in
13245 missing explanation.
13246 (scm_current_load_port, scm_set_current_output_port)
13247 (scm_set_current_error_port, scm_port_line, scm_set_port_line_x):
13248 Added texinfo markup.
13249
13250 * arbiters.c (scm_make_arbiter, scm_try_arbiter)
13251 (scm_release_arbiter): Added texinfo markup to docstrings.
13252 Changed `Returns' to `Return'.
13253 (arbiter_print): Changed SCM_CDR to SCM_SMOB_DATA.
13254
25703850
NJ
132552001-02-16 Neil Jerram <neil@ossau.uklinux.net>
13256
13257 * guile-snarf.awk.in: Quote any `@'s that occur in Scheme names,
13258 by doubling them to `@@'.
13259
73c0fdce
MG
132602001-02-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13261
13262 * numbers.c (scm_lognot), random.c (scm_random,
13263 scm_random_normal, scm_random_solid_sphere_x,
13264 scm_random_hollow_sphere_x, scm_random_normal_vector_x,
13265 scm_random_exp), dynwind.c
13266 (scm_dynamic_wind): Removed unnecessary "" from docstrings.
1c938eb8 13267
73c0fdce
MG
13268 * goops.c (scm_sys_initialize_object, scm_instance_p,
13269 scm_class_name, scm_class_precedence_list, scm_class_slots,
13270 scm_class_environment, scm_generic_function_name,
13271 scm_generic_function_methods, scm_method_generic_function,
13272 scm_method_specializers, scm_method_procedure, scm_make_unbound,
13273 scm_unbound_p, scm_assert_bound, scm_at_assert_bound_ref,
13274 scm_sys_fast_slot_ref, scm_sys_fast_slot_set_x, scm_slot_ref,
13275 scm_slot_set_x, _scm_slot_bound_p, scm_slots_exists_p,
13276 scm_sys_allocate_instance, scm_make, scm_pure_generic_p,
13277 scm_class_direct_supers, scm_class_direct_slots,
13278 scm_class_direct_subclasses, scm_class_direct_methods,
13279 scm_accessor_method_slot_definition, scm_sys_goops_loaded),
13280 debug.c (scm_with_traps, scm_memoized_p, scm_make_gloc,
13281 scm_gloc_p, scm_make_iloc, scm_iloc_p, scm_memcons,
13282 scm_mem_to_proc, scm_proc_to_mem, scm_unmemoize,
13283 scm_memoized_environment, scm_procedure_name,
13284 scm_procedure_source, scm_procedure_environment, scm_debug_hang),
13285 objects.c
13286 (scm_class_of, scm_entity_p, scm_operator_p,
13287 scm_set_object_procedure_x, scm_object_procedure,
13288 scm_make_class_object), hooks.c (scm_make_hook_with_name,
13289 scm_make_hook, scm_hook_p, scm_hook_empty_p, scm_add_hook_x,
13290 scm_remove_hook_x, scm_reset_hook_x, scm_run_hook,
13291 scm_hook_to_list), lang.c
13292 (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null, scm_nil_eq),
13293 numbers.c (scm_sys_expt, scm_sys_atan2), print.c
13294 (scm_print_options, scm_port_with_print_state,
13295 scm_get_print_state), procs.c (scm_make_cclo, scm_procedure_p,
13296 scm_closure_p, scm_thunk_p, scm_procedure_with_setter_p,
13297 scm_make_procedure_with_setter, scm_procedure), throw.c
13298 (scm_lazy_catch), modules.c (scm_standard_eval_closure), load.c
13299 (scm_parse_path, scm_search_path), stacks.c (scm_make_stack,
13300 scm_stack_ref, scm_stack_length, scm_frame_p,
13301 scm_last_stack_frame, scm_frame_number, scm_frame_source,
13302 scm_frame_procedure, scm_frame_arguments, scm_frame_previous,
13303 scm_frame_next, scm_frame_real_p, scm_frame_procedure_p,
13304 scm_frame_evaluating_args_p, scm_frame_overflow_p), filesys.c
13305 (scm_dirname, scm_basename), dynwind.c
13306 (scm_wind_chain), read.c (scm_read_options, scm_read,
13307 scm_read_hash_extend), gc.c
13308 (scm_unhash_name), eval.c (scm_eval_options_interface,
13309 scm_evaluator_traps, s_scm_nconc2last), backtrace.c
13310 (scm_display_error, scm_set_print_params_x,
13311 scm_display_application, scm_display_backtrace, scm_backtrace),
13312 async.c (scm_async, scm_system_async, scm_async_mark,
13313 scm_system_async_mark, scm_run_asyncs, scm_noop,
13314 scm_set_tick_rate, scm_set_switch_rate, scm_unmask_signals,
13315 scm_mask_signals): Added docstrings.
13316
e228a203
KN
133172001-02-15 Keisuke Nishida <kxn30@po.cwru.edu>
13318
13319 * dump.c (scm_undump): Use SCM_CARLOC/SCM_CDRLOC to obtain the
13320 address of car/cdr. (Thanks to Dirk Herrmann)
13321 Use scm_sizet to obtain the length of strings.
13322 (Thanks to Matthias Koeppe)
13323
1552a59d
MV
133242001-02-15 Marius Vollmer <mvo@zagadka.ping.de>
13325
13326 * symbols.c (scm_mem2symbol): Put a empty statement after the
13327 next_symbol label. This is mandated by ANSI, appearantly.
13328
3178f751
MV
133292001-02-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13330
13331 * gc_os_dep.c: Do not include <linux/version.h>. It makes no
13332 sense to compile for a specific kernel version. Do not include
13333 <asm/signal.h> while defining __KERNEL__. This hack should no
13334 longer be needed and caused problems.
13335
7af4defe
MV
133362001-02-13 Marius Vollmer <mvo@zagadka.ping.de>
13337
13338 * eval.c (scm_ceval, scm_deval): use `SIDEVAL' instead of
13339 SCM_CEVAL when evaluating subforms of `begin' forms. SCM_CEVAL
13340 can not deal with immediates.
13341
5d6bb349
KN
133422001-02-12 Keisuke Nishida <kxn30@po.cwru.edu>
13343
13344 * list.c (scm_list_copy): Validate the first argument.
13345
ec9709f0
MV
133462001-02-11 Marius Vollmer <mvo@zagadka.ping.de>
13347
13348 Fix evaluator so that top-level expressions are correctly
13349 evaluated with respect to the module system.
1c938eb8 13350
ec9709f0
MV
13351 * modules.h. modules.c (scm_current_module_lookup_closure): New
13352 function.
13353
13354 * eval.h (scm_primitive_eval, scm_primitive_eval_x): New
13355 prototypes.
13356 (scm_i_eval, scm_i_eval_x, scm_eval, scm_eval_x): Changed argument
13357 names to better reflect their meaning.
13358
13359 * eval.c (scm_ceval, scm_deval): Recognize when `begin' is being
13360 evaluated at top-level and synronize lookup closure before
13361 executing every subform.
13362 (scm_primitve_eval_x, scm_primitive_eval): New functions.
13363 (scm_eval_x, scm_eval): Reimplement in terms of
13364 scm_primitive_eval_x and scm_primitive_eval, respectively.
1c938eb8 13365
ec9709f0
MV
133662001-02-09 Marius Vollmer <mvo@zagadka.ping.de>
13367
13368 * macros.c (scm_macro_name, scm_macro_transformer): Use
13369 SCM_SMOB_DATA instead of SCM_CDR. Provided by Martin Grabmueller.
13370 Thanks!
13371
42417394
KN
133722001-02-10 Keisuke Nishida <kxn30@po.cwru.edu>
13373
13374 * dump.c (scm_store_bytes): Store data size before data.
13375 (scm_restore_bytes): Restore data size. Takes a pointer to size.
13376 * dump.h (scm_restore_bytes): Updated.
13377
bf942687
KN
133782001-02-09 Keisuke Nishida <kxn30@po.cwru.edu>
13379
13380 * dump.c: Use double cells for update schedule.
13381
1be4270a
KN
133822001-02-08 Keisuke Nishida <kxn30@po.cwru.edu>
13383
13384 * ports.c (scm_unread_char): Take an optional argument.
13385
548728ea
MV
133862001-02-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13387
13388 * modules.h (scm_selected_module, scm_current_module): Renamed
13389 scm_selected_module to scm_current_module to synchronize Scheme
13390 and C names.
13391 (scm_select_module, scm_set_current_module): Likewise. Changed
13392 all uses.
1c938eb8 13393
548728ea
MV
13394 * ports.c (scm_port_for_each): Make a snapshot of the port table
13395 before iterating over it. The table might change while the user
13396 code is running. With the snapshot, the user can depend on the
c5408bc3 13397 fact that each port that existed at the start of the iteration is
548728ea
MV
13398 encountered exactly once. (ice-9 popen) depends on this.
13399
cb0d8be2
DH
134002001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
13401
13402 * strings.h (SCM_STRING_MAX_LENGTH): New macro.
13403
13404 * strings.c (scm_makstr, scm_take_str, scm_make_string): Added
13405 range checking for the size parameter. Thanks to Martin
13406 Grabmueller for the hint.
13407
13408 (scm_makstr): Reordered string initialization to make interrupt
13409 deferring unnecessary.
13410
13411 * vectors.c (scm_make_vector): Fixed range checking.
13412
e382fdbe
DH
134132001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
13414
13415 * vectors.h (SCM_VECTOR_MAX_LENGTH): New macro.
13416
13417 * vectors.c (scm_make_vector, scm_c_make_vector): Improved the
13418 checking of the size parameter for type correctness and valid
13419 range. Thanks to Rob Browning for reporting the problem. Instead
13420 of deferring interrupts, scm_remember_upto_here_1 is used.
13421
bf8f0922
KN
134222001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
13423
13424 * dump.c (scm_store_cell_object, scm_restore_cell_object): Removed.
13425 (scm_dump_cell_update): Removed.
13426 (scm_dump_update): Renamed from scm_dump_object_update.
13427 (scm_restore_string, scm_restore_bytes, scm_restore_word): Takes
13428 a pointer instead of returning a value.
13429 * keywords.c (keyword_undump): Updated.
13430
914cceec
KN
134312001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
13432
13433 * dump.c, dump.h: Modified a lot.
5f17c66f 13434 (SCM_DUMP_COOKIE): Version 0.1
914cceec
KN
13435 (scm_dump_mark): Removed.
13436 (scm_restore_cell_object, scm_store_cell_object): New functions.
13437
13438 * smob.h (scm_smob_descriptor): Removed slots: dump_mark,
13439 dump_dealloc, dump_store, undump_alloc, undump_restore, undump_init.
13440 New slots: dump, undump.
13441 * smob.c (scm_make_smob_type, scm_set_smob_dump, scm_set_smob_undump):
13442 Updated.
13443
13444 * keywords.c (keyword_dump): Renamed from keyword_dealloc.
13445 (keyword_undump): Renamed from keyword_alloc.
13446 (scm_init_keywords): Set keyword_dump and keyword_undump.
13447
ecf470a2
ML
134482001-02-03 Michael Livshin <mlivshin@bigfoot.com>
13449
13450 * gc.c (DOUBLECELL_ALIGNED_P): new macro, a better-named analog of
13451 the deprecated SCM_DOUBLE_CELLP.
13452
13453 * tags.h (SCM_DOUBLE_CELLP): deprecated.
13454
03416a99
KN
134552001-02-02 Keisuke Nishida <kxn30@po.cwru.edu>
13456
13457 * dump.c, dump.h: New files.
13458 * Makefile.am: Added dump.c, dump.h, dump.x, dump.doc.
13459 * init.c: #include "libguile/dump.h".
13460 (scm_init_guile_1): Call scm_init_dump.
13461 * smob.h (scm_smob_descriptor): New slots: dump_mark,
13462 dump_dealloc, dump_store, undump_alloc, undump_restore,
13463 undump_init.
13464 * smob.c (scm_make_smob_type): Init the new slots.
13465 (scm_set_smob_dump, scm_set_smob_undump): New functions.
13466 * smob.h (scm_set_smob_dump, scm_set_smob_undump): Declared.
13467
13468 * keywords.c: #include "libguile/dump.h".
13469 (keyword_dealloc, keyword_alloc): New functions.
13470 (scm_init_keywords): Set smob_dump and smob_undump.
13471
00ffa0e7
KN
134722001-02-01 Keisuke Nishida <kxn30@po.cwru.edu>
13473
13474 * vectors.c (scm_c_make_vector): New function.
13475 * vectors.h (scm_c_make_vector): Declared.
13476 * eval.c (scm_copy_tree), filesys.c (scm_stat2scm), fluids.c
13477 (scm_make_initial_fluids, grow_fluids), gc.c (scm_init_storage),
13478 gh_data.c (gh_ints2scm, gh_doubles2scm): goops.c
13479 (scm_make_method_cache, scm_i_vector2list,
13480 scm_compute_applicable_methods, scm_sys_method_more_specific_p),
13481 init.c (start_stack), net_db.c (scm_gethost, scm_getnet,
13482 scm_getproto, scm_return_entry), posix.c (scm_getgroups,
13483 scm_getpwuid, scm_getgrgid, scm_uname), print.c (make_print_state,
13484 grow_ref_stack), regex-posix.c (scm_regexp_exec), scmsigs.c
13485 (scm_init_scmsigs), socket.c (scm_addr_vector, scm_addr_vector),
13486 stime.c (scm_times, filltime), unif.c (scm_make_uve), vectors.c
13487 (scm_vector, scm_make_vector): Use scm_c_make_vector.
13488
13489 * hashtab.c (scm_c_make_hash_table): New function.
13490 * hashtab.h (scm_c_make_hash_table): Declared.
13491 * environments.c (scm_make_leaf_environment,
13492 scm_make_eval_environment), gc.c (scm_init_storage),
13493 keywords.c (scm_init_keywords), symbols.c (scm_builtin_bindings):
13494 Use scm_c_make_hash_table.
13495
b8446ce8
MD
134962001-01-31 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13497
13498 * unif.c (rapr1): Don't apply scm_uniform_vector_length on arrays.
13499
e3239868
DH
135002001-01-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13501
13502 * struct.c (scm_make_vtable_vtable): Removed unnecessary "" from
13503 end of docstring.
13504
13505 * struct.c (scm_struct_set_x, scm_struct_vtable_tag,
13506 scm_struct_vtable_name, scm_set_struct_vtable_name_x), weaks.c
13507 (scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table,
13508 scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
13509 srcprop.c (scm_source_properties, scm_set_source_properties_x,
13510 scm_source_property, scm_set_source_property_x), sort.c
13511 (scm_sort_list_x, scm_restricted_vector_sort_x, scm_sorted_p,
13512 scm_merge, scm_merge_x, scm_sort_x, scm_sort, scm_stable_sort_x,
13513 scm_stable_sort, scm_sort_list_x, scm_sort_list): Added
13514 docstrings.
13515
41ee56dd
MD
135162001-01-29 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13517
13518 * eval.c (SCM_APPLY): Check that primitives which take 1 arg
13519 really get that arg.
13520
b6311c08
KN
135212001-01-26 Keisuke Nishida <kxn30@po.cwru.edu>
13522
13523 * goops.c (s_scm_get_keyword): Bug fix.
13524
a49af0c0
DH
135252001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
13526
13527 The following patch was sent by Martin Grabmueller. It makes sure
13528 that in case of parameter errors the correct function name is
13529 shown, and that parameter types are only checked once.
13530
13531 * strop.c (string_copy, string_upcase_x, string_downcase_x,
13532 string_capitalize_x): New functions. Each one performs the core
13533 functionality of the corresponding scm_* function.
13534
13535 (scm_string_copy, scm_string_upcase_x, scm_string_upcase,
13536 scm_string_downcase_x, scm_string_downcase,
13537 scm_string_capitalize_x, scm_string_capitalize): Reduced to
13538 parameter checking wrappers of the above functions.
13539
13070bd3
DH
135402001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
13541
13542 * continuations.c, dynl.c, keywords.c, load.c: Include
13543 strings.h. Thanks to Bill Schottstaedt for the bug report.
13544
2f2b390c
DH
135452001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13546
13547 * backtrace.c (display_header): Make sure that line and column
13548 information is shown independent of whether the port the code was
13549 read from had an associated filename. Thanks to Martin
13550 Grabmueller for providing this patch.
13551
efa40607
DH
135522001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13553
13554 * fports.[ch] (scm_file_port_p): New primitive.
13555
a98bddfd
DH
135562001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13557
13558 * tags.h (scm_tc16_fport, scm_tc16_strport, scm_tc16_sfport):
13559 These are now defined in fports.c, strports.c and vports.c.
13560
13561 * fports.[ch] (scm_tc16_fport), strports.c (scm_tc16_strport),
13562 vports.c (scm_tc16_sfport): Made variables (were macros defined in
13563 tags.h).
13564
13565 fports.c (scm_make_fptob), strports.c (scm_make_stptob), vports.c
13566 (scm_make_sfptob): Made static. These return a type code now.
13567
13568 fports.c (scm_init_fports), strports.c (scm_init_strports),
13569 vports.c (scm_init_vports): Create the corresponding port types.
13570
13571 * fports.h (SCM_FPORTP, SCM_OPFPORTP, SCM_OPINFPORTP,
13572 SCM_OPOUTFPORTP): Redefined in terms of scm_tc16_fport.
13573
13574 * init.c (scm_init_guile_1): Make sure strports are initialized
13575 before gdbint.
13576
13577 * ports.[ch] (scm_make_port_type): Changed the return type to
13578 scm_bits_t.
13579
13580 * ports.c (scm_ports_prehistory): Don't create any port types
13581 here.
13582
13583 * posix.c (scm_ttyname): Use SCM_FPORTP instead of comparing
13584 against scm_tc16_fport directly.
13585
0419a528
DH
135862001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13587
13588 * srcprop.c (scm_set_source_property_x): Fix to handle
13589 (set-source-property! <obj> 'copy <datum>) correctly.
13590
6d36532c
GH
135912001-01-24 Gary Houston <ghouston@arglist.com>
13592
13593 * filesys.c (scm_link): docstring fix.
13594 * fports.h (scm_setfileno): obsolete declaration removed.
13595 * posix.c: bogus popen declaration removed.
13596
13597 * rdelim.c: new file, split from ioext.c.
13598 * rdelim.h: new file, split from ioext.h
13599 * Makefile.am: add rdelim.c and related files.
13600 * init.c: call scm_init_rdelim. include rdelim.h.
13601
3ba5a6c2
DH
136022001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
13603
13604 This patch was sent by Martin Grabmueller and makes sure that
13605 parameter errors are reported correctly by the lexicographic
13606 ordering predicates.
13607
13608 * strorder.c (string_less_p, string_ci_less_p): New functions.
13609
13610 (scm_string_less_p, scm_string_ci_less_p): Extracted the core
13611 functionality into string_less_p, string_ci_less_p respectively.
13612 The remaining code is just a wrapper to do the parameter
13613 checking.
13614
13615 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p): Check the
13616 parameters and call string_less_p instead of scm_string_less_p.
13617
13618 (scm_string_ci_leq_p, scm_string_ci_gr_p, scm_string_ci_geq_p):
13619 Check the parameters and call string_less_ci_p instead of
13620 scm_string_ci_less_p.
13621
e40a4095
DH
136222001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
13623
ed6a2db9
DH
13624 This patch modifies scm_display_error to perform parameter
13625 checking. Thanks to Neil Jerram for the bug report.
13626
e40a4095
DH
13627 * backtrace.[ch] (scm_i_display_error): New function.
13628
13629 * backtrace.c (scm_display_error): Added parameter check and
13630 extracted the core functionality into function
13631 scm_i_display_error.
13632
13633 * throw.c (handler_message): Call scm_i_display_error to display
13634 the error message.
13635
f1e06a96
MD
136362001-01-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13637
13638 * eval.c (SCM_APPLY): Added # args check for application of
13639 procedures with arity 3. (Thanks to Anders Holst.)
13640
30ea841d
DH
136412001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
13642
13643 * filesys.h (SCM_DIR_FLAG_OPEN, SCM_DIR_OPEN_P): Added.
13644
13645 (SCM_OPDIRP): Deprecated.
13646
13647 * filesys.c (scm_opendir): Use SCM_DIR_FLAG_OPEN instead of
13648 SCM_OPN.
13649
13650 (scm_readdir, scm_rewinddir): Don't use SCM_VALIDATE_OPDIR.
13651 Instead, give an explicit error message in case the directory is
13652 closed.
13653
13654 (scm_closedir, scm_dir_print): Rewritten to use SCM_DIR_OPEN_P
13655 instead of SCM_OPENP and SCM_CLOSEDP.
13656
13657 * validate.h (SCM_VALIDATE_OPDIR): Deprecated.
13658
312ae976
DH
136592001-01-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
13660
13661 * eval.c (inner_eval, scm_eval): Move all real functionality into
13662 inner_eval. Avoid to copy the expression twice by inlining some
13663 code from scm_i_eval.
13664
4567ed78
DH
136652001-01-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
13666
13667 * eval.c (scm_m_case): The 'else' clause of a 'case' statement
13668 now has to be the last clause, as required by R5RS. Thanks to
13669 Martin Grabmueller for the patch.
13670
10288a09
GH
136712001-01-18 Gary Houston <ghouston@arglist.com>
13672
13673 * ioext.c: further simplify scm_read_string_x_partial by defining
13674 a macro SCM_EBLOCK.
13675
8f379a8f
DH
136762001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
13677
13678 * gh_data.c (gh_ints2scm): Simplified using SCM_FIXABLE.
13679
5c75b29f
DH
136802001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
13681
13682 * __scm.h: Added comment about architecture and compiler
13683 properties that are required by guile.
13684
13685 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
13686 SCM_MOST_NEGATIVE_FIXNUM): Moved to numbers.h.
13687
13688 (SCM_CHAR_BIT, SCM_LONG_BIT): Moved here from numbers.h.
13689
13690 * numbers.h (SCM_CHAR_BIT, SCM_LONG_BIT): Moved to __scm.h.
13691
13692 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
13693 SCM_MOST_NEGATIVE_FIXNUM): Moved here from __scm.h.
13694
ac0c002c
DH
136952001-01-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13696
13697 * __scm.h (SCM_FIXNUM_BIT): Added. The name is chosen in analogy
13698 to the names in limits.h.
13699
13700 * numbers.c (abs_most_negative_fixnum): Added.
13701
13702 (scm_quotient, scm_remainder): Fixed the fixnum-min / (abs
13703 fixnum-min) special case.
13704
13705 (scm_big_and): Fix for negative first parameter.
13706
13707 (scm_bit_extract): Fix for fixnum paramters.
13708 Thanks to Rob Browning for the bug report.
13709
13710 (scm_init_numbers): Initialize abs_most_negative_fixnum.
13711
debe0dc2
DH
137122001-01-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
13713
13714 * symbols.c (scm_symbol_bound_p): Fixed comment.
13715 Thanks to Chris Cramer.
13716
8a39e3fc
DH
137172001-01-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
13718
13719 * smob.[ch] (scm_make_smob_type): Return type is scm_bits_t now.
13720 Thanks to Bill Schottstaedt.
13721
322ec19d
ML
137222001-01-11 Michael Livshin <mlivshin@bigfoot.com>
13723
9a5fa6e9 13724 from Matthias Köppe:
1c938eb8 13725
322ec19d
ML
13726 * objects.h (SCM_SET_ENTITY_SETTER): new macro. SCM_ENTITY_SETTER
13727 casts its result, so doesn't yield an lvalue per ANSI C.
13728
13729 * goops.c (s_scm_sys_set_object_setter_x): use
13730 SCM_SET_ENTITY_SETTER.
13731 (clear_method_cache): use SCM_SET_ENTITY_PROCEDURE.
13732
13733 * gc.h (SCM_GC_SET_CARD_BVEC): new macro. SCM_GC_CARD_BVEC casts
13734 its result, so doesn't yield an lvalue per ANSI C.
13735 (SCM_GC_SET_CARD_FLAGS): ditto for SCM_GC_GET_CARD_FLAGS.
13736 (SCM_GC_CLR_CARD_FLAGS): redefined in terms of
13737 SCM_GC_SET_CARD_FLAGS.
13738 (SCM_GC_SET_CARD_FLAG, SCM_GC_CLR_CARD_FLAGS): ditto.
13739
13740 * gc.c (INIT_CARD): use the explicit setter macro to set the bvec.
13741
60d02d09
GH
137422001-01-08 Gary Houston <ghouston@arglist.com>
13743
13744 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): new macro.
13745 * ioext.c (scm_read_string_x_partial, scm_read_delimited_x),
13746 socket.c (scm_recvfrom): use the new macro, plus minor docstring
13747 changes.
13748 * ioext.c (scm_read_string_x_partial): don't crash if -1 is supplied
13749 for fdes. if current input port is used, check that it's a file
13750 port.
13751
c2da2648
GH
137522001-01-06 Gary Houston <ghouston@arglist.com>
13753
13754 * ioext.c (scm_read_string_x_partial): new procedure, implements
13755 read-string!/partial.
13756 * ports.c (scm_take_from_input_buffers): new procedure used by
13757 scm_read_string_x_partial.
13758 (scm_drain_input): use scm_take_from_input_buffers.
13759
4651d663
MV
137602001-01-06 Marius Vollmer <mvo@zagadka.ping.de>
13761
13762 * validate.h (SCM_VALIDATE_NUMBER): New.
13763
c0a5d888
ML
137642001-01-03 Michael Livshin <mlivshin@bigfoot.com>
13765
13766 * guardians.c (F_GREEDY, F_LISTED, F_DESTROYED, GREEDY_P,
13767 SET_GREEDY, LISTED_P, SET_LISTED, CLR_LISTED, DESTROYED_P,
13768 SET_DESTROYED): new defines/macros.
13769 (GUARDIAN_LIVE, GUARDIAN_ZOMBIES, GUARDIAN_NEXT): deleted.
13770 (add_to_live_list): takes a `guardian_t *' now, not SCM.
13771 (guardian_print): print more info.
13772 (guardian_apply): check if the guardian is destroyed, and throw an
13773 error if so. take one more optional argument `throw_p'.
13774 (scm_guard): depending on the value of `throw_p', return a boolean
13775 result.
13776 (scm_get_one_zombie): remove redundant property test.
13777 (guardian_t): represent the various (currently 3, I hope nothing
13778 more gets added) boolean fields as bit flags.
13779 (scm_guardian_destroyed_p, scm_guardian_greedy_p): new predicates.
13780 (scm_destroy_guardian_x): new procedure.
13781
13782 * guardians.h: added prototypes for `scm_guardian_greedy_p' and
13783 `scm_guardian_destroyed_p'. changed prototype for `scm_guard'.
13784
0c6d2191
GH
137852001-01-01 Gary Houston <ghouston@arglist.com>
13786
13787 * fports.c (fport_write): bugfix: handle short writes for
13788 unbuffered ports too. optimize the buffered case by minimizing
13789 the number of write/flush calls.
13790 (write_all): new helper procedure.
13791
a51fe247 13792The ChangeLog continues in the file: "ChangeLog-2000"
d9f71a07
LC
13793
13794;; Local Variables:
13795;; coding: utf-8
13796;; End: