merge from 1.8
[bpt/guile.git] / libguile / ChangeLog
CommitLineData
23d72566
KR
1<<<<<<< ChangeLog
22007-01-16 Kevin Ryde <user42@zip.com.au>
3
4 * feature.c, feature.h (scm_set_program_arguments_scm): New function,
5 implementing `set-program-arguments'.
6
7 * filesys.c (scm_init_filesys): Use scm_from_int rather than
8 scm_from_long for O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_EXCL,
9 O_NOCTTY, O_TRUNC, O_APPEND, O_NONBLOCK, O_NDELAY, O_SYNC and
10 O_LARGEFILE. These are all int not long, per arg to open().
11 (scm_init_filesys): Use scm_from_int rather than scm_from_long for
12 F_DUPFD, F_GETFD, F_SETFD, F_GETFL, F_SETFL, F_GETOWN, F_SETOWN, these
13 are all ints (per command arg to fcntl). Likewise FD_CLOEXEC which is
14 an int arg to fcntl.
15
16 * posix.c (scm_putenv): Correction to "len" variable, was defined only
17 for __MINGW32__ but used under any !HAVE_UNSETENV (such as solaris).
18 Move it to where it's used. Reported by Hugh Sasse.
19
20 * regex-posix.c (scm_regexp_exec): Remove SCM_CRITICAL_SECTION_START
21 and SCM_CRITICAL_SECTION_END, believe not needed. Their placement
22 meant #\nul in the input (detected by scm_to_locale_string) and a bad
23 flags arg (detected by scm_to_int) would throw from a critical
24 section, causing an abort().
25
26 * regex-posix.c (scm_init_regex_posix): Use scm_from_int for
27 REG_BASIC, REG_EXTENDED, REG_ICASE, REG_NEWLINE, REG_NOTBOL,
28 REG_NOTEOL; they're all ints not longs (per args to regcomp and
29 regexec).
30
a2c40dc7
HWN
312007-01-10 Han-Wen Nienhuys <hanwen@lilypond.org>
32
33 * throw.c (scm_ithrow): print out key symbol and string arguments
34 when error happens inside a critical section, and document why.
35
391f57e6
HWN
362007-01-06 Han-Wen Nienhuys <hanwen@lilypond.org>
37
38 * read.c (s_scm_read_hash_extend): document #f argument to
39 read-hash-extend.
40
23d72566
KR
412007-01-04 Kevin Ryde <user42@zip.com.au>
42
43 * deprecated.h (scm_create_hook), version.h.in (scm_major_version,
44 scm_minor_version, scm_micro_version, scm_effective_version,
45 scm_version, scm_init_version): Use SCM_API instead of just extern,
46 for the benefit of mingw. Reported by Cesar Strauss.
47
93632e3c
HWN
482007-01-03 Han-Wen Nienhuys <hanwen@lilypond.org>
49
50 * gc.c (s_scm_gc_stats): return an entry for total-cells-allocated
51 too.
52 (gc_update_stats): update scm_gc_cells_allocated_acc too.
53
23d72566
KR
542006-12-27 Kevin Ryde <user42@zip.com.au>
55
56 * threads.c (get_thread_stack_base): In mingw with pthreads we can use
57 the basic scm_get_stack_base. As advised by Nils Durner.
58
59 * threads.c (get_thread_stack_base): Add a version using
60 pthread_get_stackaddr_np (when available), for the benefit of MacOS.
61 As advised by Heikki Lindholm.
62
63 * scmsigs.c (signal_delivery_thread): Restrict scm_i_pthread_sigmask
64 to HAVE_PTHREAD_SIGMASK, it doesn't exist on mingw. Reported by Nils
65 Durner.
66
672006-12-24 Kevin Ryde <user42@zip.com.au>
68
69 * posix.c (scm_kill): When only raise() is available, throw an ENOSYS
70 error if pid is not our own process, instead of silently doing nothing.
71
72 * print.c (scm_write, scm_display, scm_write_char): Disable port close
73 on EPIPE. This was previously disabled but introduction of HAVE_PIPE
74 check in configure.in unintentionally enabled it. Believe that
75 testing errno after scm_prin1 or scm_putc is bogus, a long ago error
76 can leave errno in that state. popen.test "no duplicates" output test
77 provoked that.
78
e2bf3b19
HWN
792006-12-23 Han-Wen Nienhuys <hanwen@lilypond.org>
80
81 * numbers.c (scm_i_fraction_reduce): move logic into
82 scm_i_make_ratio(), so fractions are only read.
83 scm_i_fraction_reduce() modifies a fraction when reading it. A
84 race condition might lead to fractions being corrupted by reading
85 them concurrently.
86
87 Also, the REDUCED bit alters the SCM_CELL_TYPE(), making
88 comparisons between reduced and unreduced fractions go wrong.
89
90 * numbers.h: remove SCM_FRACTION_SET_NUMERATOR,
91 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
92 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
93 SCM_FRACTION_REDUCED.
94
23d72566
KR
952006-12-16 Kevin Ryde <user42@zip.com.au>
96
97 * scmsigs.c (scm_raise): Use raise() rather than kill(), as this is
98 more direct for a procedure called raise.
99 (kill): Remove mingw fake fallback.
100
1012006-12-15 Kevin Ryde <user42@zip.com.au>
102
103 * scmsigs.c: Conditionalize process.h, add io.h believe needed for
104 _pipe on mingw.
105
1062006-12-14 Kevin Ryde <user42@zip.com.au>
107
108 * threads.c (thread_print): Cope with the case where pthread_t is a
109 struct, as found on mingw. Can't just cast to size_t for printing.
110 Reported by Nils Durner.
111
112 * scmsigs.c: Add <fcntl.h> and <process.h> needed by mingw. Copy the
113 fallback pipe() using _pipe() from posix.c. Reported by Nils Durner.
114
1152006-12-13 Kevin Ryde <user42@zip.com.au>
116
117 * eval.c (scm_m_define): Set 'name procedure property on any
118 scm_procedure_p, not just SCM_CLOSUREP. In particular this picks up
119 procedures with setters as used in srfi-17.
120
121 * posix.c (scm_crypt): Check for NULL return from crypt(), which the
122 linux man page says is a possibility.
123
f30e1bdf
LC
1242006-12-12 Ludovic Courtès <ludovic.courtes@laas.fr>
125
126 * libguile/unif.c (read_decimal_integer): Let RESP be SIGN * RES
127 instead of RES (reported by Gyula Szavai). This allows the use of
128 negative lower bounds.
129 (scm_i_read_array): Make sure LEN is non-negative (reported by
130 Gyula Szavai).
131
132 (scm_array_in_bounds_p): Iterate over S instead of always
133 comparing indices with the bounds of S[0]. This fixes
134 `array-in-bounds?' for arrays with a rank greater than one and
135 with different lower bounds for each dimension.
136
23d72566
KR
1372006-12-05 Kevin Ryde <user42@zip.com.au>
138
139 * numbers.c (scm_product): For flonum*inum and complex*inum, return
140 exact 0 if inum==0. Already done for inum*flonum and inum*complex,
141 and as per R5RS section "Exactness".
142
1432006-12-03 Kevin Ryde <user42@zip.com.au>
144
145 * Makefile.am (.c.doc): Remove the "test -n" apparently attempting to
146 allow $AWK from the environment to override. It had syntax gremlins,
147 and the presence of a $(AWK) variable set by AC_PROG_AWK in the
148 Makefile stopped it having any effect. Use just $(AWK), which can be
149 overridden with "make AWK=xxx" in the usual way if desired.
150
22be72d3
LC
1512006-11-29 Ludovic Courtès <ludovic.courtes@laas.fr>
152
153 * libguile/vectors.c (scm_vector_to_list): Fixed list
154 construction: elements were not copied when INC is zero (see
155 "shared array" example in `vectors.test'). Reported by
156 Szavai Gyula.
157
b89c4943
LC
1582006-11-18 Ludovic Courtès <ludovic.courtes@laas.fr>
159
160 * Makefile.am (lib_LTLIBRARIES): Added `libguile-i18n-v-XX.la'.
161 (libguile_la_SOURCES): Added `gettext.c', removed `i18n.c'.
162 (libguile_i18n_v_XX_la_SOURCES, libguile_i18n_v_XX_la_CFLAGS,
163 libguile_i18n_v_XX_la_LIBADD, libguile_i18n_v_XX_la_LDFLAGS): New.
164 (DOT_X_FILES): Added `gettext.x'.
165 (DOT_DOC_FILES): Likewise.
166 (EXTRA_libguile_la_SOURCES): Added `locale-categories.h'.
167 (modinclude_HEADERS): Added `gettext.h'.
168 (EXTRA_DIST): Added `libgettext.h'.
169
170 * gettext.h: Renamed to...
171 * libgettext.h: New file.
172
173 * i18n.c: Renamed to...
174 * gettext.c: New file.
175
176 * i18n.h: Renamed to...
177 * gettext.h: New file.
178
179 * i18n.c, i18n.h, locale-categories.h: New files.
180
181 * init.c: Include "libguile/gettext.h" instead of
182 "libguile/i18n.h".
183 (scm_i_init_guile): Invoke `scm_init_gettext ()' instead of
184 `scm_init_i18n ()'.
185
186 * posix.c: Include "libguile/gettext.h" instead of
187 "libguile/i18n.h" Test `HAVE_NEWLOCALE' and `HAVE_STRCOLL_L'.
188 (USE_GNU_LOCALE_API): New macro.
189 (scm_i_locale_mutex): New variable.
190 (scm_setlocale): Lock and unlock it around `setlocale ()' calls.
191
192 * posix.h: Include "libguile/threads.h".
193 (scm_i_locale_mutex): New declaration.
194
f3e3f530
NJ
1952006-11-17 Neil Jerram <neil@ossau.uklinux.net>
196
197 * script.c (scm_shell_usage): Note need for subscription to bug-guile@gnu.org.
198
d9f71a07
LC
1992006-11-08 Ludovic Courtès <ludovic.courtes@laas.fr>
200
201 * libguile/gc-freelist.c (scm_i_adjust_min_yield): Take two
202 "sweep_stats" arguments; use them instead of accessing the global
203 variables `scm_gc_cells_collected' and `scm_gc_cells_collected_1'.
204
205 * libguile/gc-segment.c (scm_i_sweep_some_cards): Reset SWEEP
206 before each iteration of the loop.
207 (scm_i_sweep_some_segments): Reset SWEEP at each iteration.
208 (scm_i_get_new_heap_segment): Take an additional argument
209 SWEEP_STATS. Compute MIN_CELLS as a function of it.
210
211 * libguile/gc.c (scm_gc_cells_collected,
212 scm_gc_cells_collected_1): Removed.
213 (scm_i_gc_sweep_stats, scm_i_gc_sweep_stats_1): New.
214 (scm_gc_cells_marked_acc, scm_gc_cells_swept_acc,
215 scm_gc_time_taken, scm_gc_mark_time_taken, scm_gc_times,
216 scm_gc_cell_yield_percentage, protected_obj_count): Made `static'.
217 (scm_gc_stats): Use `scm_i_gc_sweep_stats' instead of
218 `scm_gc_cells_(collected|swept)'.
219 (gc_update_stats): New.
220 (gc_end_stats): Use `scm_i_gc_sweep_stats' and
221 `scm_i_gc_sweep_stats_1' instead of the former globals.
222 (scm_gc_for_newcell): Invoke `gc_update_stats ()' after each
223 `scm_i_sweep_some_segments' call. This fixes a bug where the GC
224 would keep allocating new segments instead of re-using collected
225 cells (because `scm_gc_cells_collected' would remain zero).
226
227 * libguile/gc.h (scm_gc_cells_swept, scm_gc_cells_collected,
228 scm_gc_cell_yield_percentage): Removed.
229
230 * libguile/private-gc.h (scm_gc_cells_collected_1): Removed.
231 (scm_i_adjust_min_yield): Updated.
232 (scm_i_get_new_heap_segment): Updated.
233
dd18d312
NJ
2342006-11-02 Neil Jerram <neil@ossau.uklinux.net>
235
236 * modules.c: Correct comment saying that low-level environments
237 will be used "in the next release".
238
239 * init.c: Comment out #include of environments.h.
240 (scm_i_init_guile): Comment out scm_environments_prehistory() and
241 scm_init_environments() calls.
242
243 * Makefile.am (libguile_la_SOURCES): Remove environments.c.
244 (DOT_X_FILES): Remove environments.x.
245 (DOT_DOC_FILES): Remove environments.doc.
246 (modinclude_HEADERS): Remove environments.h.
247
9a5fa6e9
NJ
2482006-10-25 Neil Jerram <neil@ossau.uklinux.net>
249
250 IA64 HP-UX GC patch from Hrvoje Nikšić. (Thanks!)
251
252 * threads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp() and
253 scm_ia64_register_backing_store_base() instead of Linux-specific
254 implementations.
255
256 * gc.h (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp):
257 New declarations.
258
259 * gc.c (__libc_ia64_register_backing_store_base): Declaration
260 removed.
261 (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp): New, with
262 implementations for Linux and HP-UX.
263
264 * coop-pthreads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp()
265 and scm_ia64_register_backing_store_base() instead of
266 Linux-specific implementations.
267
268 * continuations.h (__libc_ia64_register_backing_store_base):
269 Declaration removed.
270 (scm_t_contregs): New "fresh" field.
271
272 * continuations.c (ia64_getcontext): Removed.
273 (scm_make_continuation): Use continuation fresh field instead of
274 interpreting getcontext return values (which isn't portable). Use
275 scm_ia64_ar_bsp() and scm_ia64_register_backing_store_base()
276 instead of Linux-specific implementations.
277 (copy_stack_and_call): Use scm_ia64_register_backing_store_base()
278 instead of Linux-specific implementation.
279
280 * _scm.h (__ia64__): Also detect __ia64.
281
8ab3d8a0
KR
2822006-10-03 Kevin Ryde <user42@zip.com.au>
283
284 * eval.c (SCM_APPLY): For scm_tc7_subr_2o, throw wrong-num-args on 0
285 arguments or 3 or more arguments. Previously 0 called proc with
286 SCM_UNDEFINED, and 3 or more silently used just the first 2.
287
2882006-09-28 Kevin Ryde <user42@zip.com.au>
289
290 * fports.c, ports.c (ftruncate): Use "HAVE_CHSIZE && ! HAVE_FTRUNCATE"
291 for chsize fallback, instead of hard-coding mingw. Mingw in fact
292 supplies ftruncate itself these days.
293
294 * ports.c (fcntl.h): Can include this unconditionally, no need for
295 __MINGW32__.
296
297 * ports.c (truncate): Conditionalize on "HAVE_FTRUNCATE && !
298 HAVE_TRUNCATE" so as not to hard-code mingw. Use "const char *" and
299 "off_t" for parameters, per usual definition of this function, rather
300 than "char *" and "int". Use ftruncate instead of chsize. Check for
301 error on final close.
302
3032006-09-27 Kevin Ryde <user42@zip.com.au>
304
305 * numbers.c (scm_log10): Check HAVE_CLOG10, clog10() is not available
306 in mingw.
307
308 * posix.c (scm_execl, scm_execlp, scm_execle): Cast "const char *
309 const *" for mingw to suppress warnings from gcc (which are errors
310 under the configure default -Werror). Reported by Nils Durner.
311
3122006-09-26 Kevin Ryde <user42@zip.com.au>
313
314 * _scm.h (scm_to_off64_t, scm_from_off64_t): New macros.
315 * fports.c (scm_open_file): Use open_or_open64.
316 (fport_seek_or_seek64): New function, adapting fport_seek.
317 * fports.c, fports.h (scm_i_fport_seek, scm_i_fport_truncate): New
318 functions.
319 * ports.c (scm_seek, scm_truncate_file): Use scm_i_fport_seek and
320 scm_i_fport_truncate to allow 64-bit seeks and truncates on fports.
321
322 * ports.c (scm_truncate_file): Update docstring per manual.
323
3242006-09-23 Kevin Ryde <user42@zip.com.au>
325
326 * numbers.c, numbers.h (scm_log, scm_log10, scm_exp, scm_sqrt): New
327 functions.
328
9a5fa6e9 3292006-09-20 Ludovic Courtès <ludovic.courtes@laas.fr>
a17d2654
LC
330
331 * srfi-14.c: Include <config.h>. Define `_GNU_SOURCE'.
332 (make_predset, define_predset, make_strset, define_strset, false,
333 true): Removed.
334 (SCM_CHARSET_UNSET, CSET_BLANK_PRED, CSET_SYMBOL_PRED,
335 CSET_PUNCT_PRED, CSET_LOWER_PRED, CSET_UPPER_PRED,
336 CSET_LETTER_PRED, CSET_DIGIT_PRED, CSET_WHITESPACE_PRED,
337 CSET_CONTROL_PRED, CSET_HEX_DIGIT_PRED, CSET_ASCII_PRED,
338 CSET_LETTER_AND_DIGIT_PRED, CSET_GRAPHIC_PRED, CSET_PRINTING_PRED,
339 CSET_TRUE_PRED, CSET_FALSE_PRED, UPDATE_CSET): New macros.
340 (define_charset, scm_srfi_14_compute_char_sets): New functions.
341 (scm_init_srfi_14): Use `define_charset ()' instead of
342 `define_predset ()' and `define_strset ()'.
343
344 * srfi-14.h (scm_c_init_srfi_14): Removed.
345 (scm_srfi_14_compute_char_sets): New declaration.
346
347 * posix.h: Include "srfi-14.h".
348 (scm_setlocale): Invoke `scm_srfi_14_compute_char_sets ()' after a
349 successful `setlocale ()' call.
350
8ab3d8a0
KR
3512006-09-08 Kevin Ryde <user42@zip.com.au>
352
353 * socket.c (scm_init_socket): Add MSG_DONTWAIT.
354 (scm_recvfrom): Update docstring from manual.
355
418122ce
RB
3562006-08-31 Rob Browning <rlb@defaultvalue.org>
357
358 * ports.c (scm_c_port_for_each): Add a
359 scm_remember_upto_here_1(ports) at the end of the function to fix
360 a GC bug.
361
b5944f66
NJ
3622006-08-28 Neil Jerram <neil@ossau.uklinux.net>
363
364 * backtrace.c (scm_display_backtrace_with_highlights): Minor
365 improvements to docstring.
366 (scm_backtrace_with_highlights): Analogous improvements.
367
8ab3d8a0
KR
3682006-08-12 Kevin Ryde <user42@zip.com.au>
369
370 * gen-scmconfig.h.in (SCM_I_GSC_NEED_BRACES_ON_PTHREAD_ONCE_INIT):
371 New, set from configure.
372 * gen-scmconfig.c (SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT): New output
373 to scmconfig.h.
374 * pthread-threads.h (SCM_I_PTHREAD_ONCE_INIT): Use
375 SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT to cope with Solaris.
376 Reported by Claes Wallin.
377
b0b0deff
NJ
3782006-08-11 Neil Jerram <neil@ossau.uklinux.net>
379
380 * stacks.c (scm_last_stack_frame): Correct docstring (returns a
381 frame, not a stack).
382
8ab3d8a0
KR
3832006-07-25 Kevin Ryde <user42@zip.com.au>
384
385 * threads.c (get_thread_stack_base): Restrict HAVE_PTHREAD_GETATTR_NP
386 on pthreads version, since pthread_getattr_np not available on solaris
387 and macos. Reported by Claes Wallin.
388
3892006-07-24 Kevin Ryde <user42@zip.com.au>
390
391 * filesys.c (dirfd): Test with #ifndef rather than HAVE_DIRFD, since
392 it's a macro on MacOS X. Reported by Claes Wallin.
393
394 * posix.c (sethostname): Give prototype if not HAVE_DECL_SETHOSTNAME,
395 for the benefit of Solaris 10. Reported by Claes Wallin.
396
397 * socket.c (scm_htonl, scm_ntohl): Use scm_to_uint32 rather than
398 NUM2ULONG, to enforce 32-bit range check on systems with 64-bit long.
399
4002006-07-21 Kevin Ryde <user42@zip.com.au>
401
402 * eval.c, filesys.c (alloca): Update <alloca.h> etc blob, per current
403 autoconf recommendation. Should fix Solaris 10 reported by Claes
404 Wallin.
405
406 * threads.c: Include <string.h>, needed for memset() which is used by
407 FD_ZERO() on Solaris 10. Reported by Claes Wallin.
408
b4912378
RB
4092006-07-18 Rob Browning <rlb@defaultvalue.org>
410
411 * continuations.c: Add __attribute__ ((returns_twice)) to the
412 ia64_getcontext prototype so that gcc will make the right
413 arrangements and avoid an illegal instruction during
414 call-with-current-continuation.
415
9a5fa6e9 4162006-07-12 Ludovic Courtès <ludovic.courtes@laas.fr>
eaa94eaa
LC
417
418 * numbers.c (guile_ieee_init): Use regular ANSI C casts rather
419 than C++-style `X_CAST ()'. Patch posted by by Mike Gran.
420
8ab3d8a0
KR
4212006-07-08 Kevin Ryde <user42@zip.com.au>
422
423 * environments.c (core_environments_unobserve): Use if/else rather
424 than ?: for "SET" bits, avoiding complaints from AIX xlc compiler
425 about them not being rvalues. Reported by Mike Gran.
426
427 * Makefile.am (version.h): Don't use $< in an explicit rule, it's not
428 portable and in particular fails on OpenBSD and AIX (see autoconf
429 manual too). Reported by Mike Gran.
430
4312006-06-25 Kevin Ryde <user42@zip.com.au>
432
433 * stime.c (bdtime2c): tm_gmtoff is seconds East, so take negative of
434 tm:gmtoff which is seconds West. Reported by Aaron VanDevender.
435 (bdtime2c): Test HAVE_STRUCT_TM_TM_GMTOFF for tm_gmtoff, rather than
436 HAVE_TM_ZONE.
437 (scm_strptime): Use tm_gmtoff from the strptime result when that field
438 exists, it's set by glibc strptime "%s".
439
9a5fa6e9 4402006-06-13 Ludovic Courtès <ludovic.courtes@laas.fr>
d15ad007
LC
441
442 * eq.c: Include "struct.h", "goops.h" and "objects.h".
443 (scm_equal_p): Invoke `scm_i_struct_equalp ()' on structures that
444 are not GOOPS instances.
445 * struct.c: Include "eq.h".
446 (scm_free_structs): Use `SCM_STRUCT_VTABLE_DATA ()' instead of
447 hand-written code.
448 (scm_i_struct_equalp): New.
449 * struct.h (scm_i_struct_equalp): New declaration.
450
c862d0e0
KR
4512006-06-06 Kevin Ryde <user42@zip.com.au>
452
453 * Makefile.am (BUILT_SOURCES): Remove guile.texi, only used by
454 maintainers (with doc/maint/docstring.el). Fixes parallel "make -j2"
455 reported by Mattias Holm.
b4912378 456
c862d0e0
KR
4572006-06-03 Kevin Ryde <user42@zip.com.au>
458
459 * read.c (s_vector): Conditionalize on SCM_ENABLE_ELISP, to avoid
460 unused variable warning when elisp disabled. Reported by Ryan
461 VanderBijl.
462
463 * throw.c (scm_handle_by_message): Add dummy return value to avoid
464 compiler warning on cygwin. Reported by Ryan VanderBijl.
465
466 * Makefile.am (EXTRA_DOT_X_FILES): Typo in dependency rule, was a
467 duplicate of EXTRA_DOT_DOC_FILES.
468 (DOT_X_FILES, EXTRA_DOT_X_FILES, DOT_DOC_FILES, EXTRA_DOT_DOC_FILES):
469 Add scmconfig.h to dependencies, since these all run cpp. Helps a
470 parallel "make -j2". Reported by Mattias Holm.
471
4722006-05-30 Kevin Ryde <user42@zip.com.au>
473
474 * ports.c, ports.h (scm_set_port_mark, scm_set_port_free,
475 scm_set_port_print, scm_set_port_equalp, scm_set_port_flush,
476 scm_set_port_end_input, scm_set_port_close, scm_set_port_seek,
477 scm_set_port_truncate, scm_set_port_input_waiting): Use scm_t_bits for
478 port type descriptor, same as scm_make_port_type return value.
479
af4f8612
MV
4802006-05-30 Marius Vollmer <mvo@zagadka.de>
481
482 * eq.c (scm_equal_p): Use scm_array_equal_p explicitely when one
483 of the arguments is a array. This allows vectors to be equal to
484 one-dimensional arrays.
485
18bffcd0
MV
4862006-05-29 Marius Vollmer <mvo@zagadka.de>
487
488 * throw.c (scm_ithrow): When looking for the jmpbuf, first test
489 that we have a pair before accessing its cdr. Thanks to Bill
490 Schottstaedt!
491
c862d0e0
KR
4922006-05-28 Kevin Ryde <user42@zip.com.au>
493
494 * eval.c, filesys.c: Add malloc.h to get alloca() on mingw. Reported
495 by "The Senator".
496
4972006-05-27 Marius Vollmer <mvo@zagadka.de>
b0c0a310
MV
498
499 * srfi-4.c, strings.c: Replace SCM_C_INLINE with
500 SCM_C_INLINE_KEYWORD. Thanks to Mark Gran!
501
c862d0e0
KR
5022006-05-26 Kevin Ryde <user42@zip.com.au>
503
504 * fports.c (fport_input_waiting): For ioctl, check HAVE_IOCTL as well
505 as defined(FIONREAD), since mingw has FIONREAD but not ioctl().
506 Reported by "The Senator".
507 For select and ioctl, move fdes into those conditionals, to avoid
508 unused variable warning when neither of those used.
509
5102006-05-23 Kevin Ryde <user42@zip.com.au>
511
512 * fports.c: Remove "fwrite" declaration under "! HAVE_UNISTD_H".
513 It's unused and will be in stdio.h anyway (if it's anywhere).
514
5152006-05-20 Kevin Ryde <user42@zip.com.au>
516
517 * filesys.c (scm_stat2scm): Test #ifdef S_ISLNK directly, rather than
518 HAVE_S_ISLNK from configure (it was only a #ifdef test anyway).
519
520 * posix.c (scm_mknod): Test #ifdef S_IFLNK before using that (for
521 symlink). Probably can't create symlinks with mknod anyway though.
522
523 * inline.h (scm_is_pair): Add a workaround for i386 gcc 2.95 bad code
524 generation.
525
5262006-05-15 Kevin Ryde <user42@zip.com.au>
527
528 * simpos.c, simpos.h (scm_primitive__exit): New function.
529 (scm_primitive_exit): Update docstring, no longer the best exit after
530 a fork.
531
5322006-05-09 Kevin Ryde <user42@zip.com.au>
533
534 * numbers.c (scm_i_divide): For big/big wanting inexact, use mpq_get_d
535 rather than converting to doubles, to avoid inf or nan when the inputs
536 are too big for a double but the quotient does fit. This affects
537 conversions exact->inexact of big fractions.
538
539 * filesys.c (scm_open_fdes): Use open64.
540 (scm_init_filesys): Add O_LARGEFILE.
541
542 * ports.c (scm_seek): Use lseek64.
543 (scm_truncate_file): Use ftruncate64.
544
4a342b19
MV
5452006-05-08 Marius Vollmer <mvo@zagadka.de>
546
547 * private-gc.h (CELL_P): Also check that the potential pointer is
548 correctly aligned for a cell. Thanks to Miroslav Lichvar!
549
c862d0e0
KR
5502006-04-18 Rob Browning <rlb@defaultvalue.org>
551
552 * _scm.h: Add back error if the size of off_t is unknown. The bug
553 was actually in guile-readline's configuration.
554
5552006-04-18 Kevin Ryde <user42@zip.com.au>
556
557 * posix.c (scm_mkstemp): Update docstring from the manual, in
558 particular file mode 0600 is not guaranteed.
559
281ab5e2
KR
5602006-04-17 Kevin Ryde <user42@zip.com.au>
561
562 * _scm.h (scm_to_off_t, scm_from_off_t): No error if unknown off_t
563 size, to help the guile-readline build where off_t is unused.
564
2b829bbb
KR
5652006-04-16 Kevin Ryde <user42@zip.com.au>
566
567 * filesys.c (scm_stat2scm, scm_stat, scm_lstat): Use stat or stat64.
568 (scm_readdir): Use readdir64.
569 (scm_copy_file): Use open64 and fstat64, to cope with >2Gb files.
570 * ports.c (scm_truncate_file): Use truncate64. Correction truncate
571 and ftruncate take off_t not size_t.
572 * _scm.h (stat_or_stat64 etc): Macros for selecting LFS64 when
573 available.
574
5752006-04-06 Kevin Ryde <user42@zip.com.au>
576
577 * fports.c (scm_setvbuf): Fix for not _IOLBF, clear SCM_BUFLINE
9a5fa6e9 578 instead of toggling it. Reported by Ludovic Courtès.
2b829bbb
KR
579
5802006-03-26 Marius Vollmer <mvo@zagadka.de>
581
582 * threads.c (get_thread_stack_base): Use scm_get_stack_base
583 instead of accessing __libc_stack_end directly, and only do this
584 when pthread_attr_getstack is known not to work for the main
585 thread or when not using pthreads at all.
586
587 * gc_os_dep.c (scm_get_stack_base): Abort when the machine type is
588 unknown instead of returning NULL.
589
9a5fa6e9 5902006-03-21 Ludovic Courtès <ludovic.courtes@laas.fr>
2b829bbb
KR
591
592 * numbers.c (scm_i_mem2number): Renamed to
593 scm_c_locale_stringn_to_number.
594 * numbers.c, print.c, read.c: Updated callers.
595 * numbers.h: Update function declaration.
596
5972006-03-11 Neil Jerram <neil@ossau.uklinux.net>
598
599 * unif.c (string_set): Don't return in a void function. (Reported
600 by Mike Gran.)
601
602 * srfi-4.c (scm_uniform_vector_read_x): Declare base as char*
603 rather than void*, so we can do pointer arithmetic on it.
604 (Reported by Mike Gran.)
605 (s_scm_uniform_vector_write): Ditto.
606
6072006-03-10 Neil Jerram <neil@ossau.uklinux.net>
608
609 * unif.c (scm_make_shared_array): Don't use SCM_I_ARRAY_BASE when
610 oldra is not an array. (Reported by Steve Juranich.)
611
612 * threads.c (do_unlock): Renamed from "unlock", which is defined
613 in unistd.h on QNX. (Reported by Matt Kraai.)
614
6152006-03-04 Kevin Ryde <user42@zip.com.au>
616
617 * deprecated.c (scm_i_defer_ints_etc): Show SCM_DEFER_INTS in message,
618 not SCM_CRITICAL_SECTION_START.
619
620 * eval.c, posix.c: Change comments from C++ to C style. Reported by
621 Mike Gran.
622
6232006-02-28 Kevin Ryde <user42@zip.com.au>
624
625 * unif.c (bitvector_set): Use h->writable_elements not h->elements.
626
6272006-02-26 Kevin Ryde <user42@zip.com.au>
628
629 * filesys.c (scm_readdir): Use fpathconf for the dirent size when
630 NAME_MAX is not available, which is so on Solaris 10. Report and help
631 by Bill Schottstaedt.
632
633 * srfi-13.c (MY_VALIDATE_SUBSTRING_SPEC_UCOPY): New macro.
634 (scm_string_compare, scm_string_compare_ci, scm_string_lt,
635 scm_string_gt, scm_string_le, scm_string_ge, scm_string_ci_lt,
636 scm_string_ci_gt, scm_string_ci_le, scm_string_ci_ge): In comparisons
637 use "unsigned char", not signed char. This ensures comparisons are
638 the same as `char<?' etc, and is also the same as guile 1.6 did.
639 Reported by Sven Hartrumpf.
640
4a9f83ff
MD
6412006-02-19 Mikael Djurfeldt <mdj@neurologic.cc>
642
643 * random.c: Test for SCM_HAVE_T_UINT64 instead of
644 SCM_HAVE_T_INT64.
645 (scm_i_uniform32, scm_i_uniform32, scm_i_init_rstate): Use
646 scm_t_uint64 and scm_t_uint32 instead of scm_t_int64 and
647 scm_t_int32.
648
4c7016dc
HWN
6492006-01-04 Ludovic Court<E8>s <ludovic.courtes@laas.fr>
650
651 * gc-segment.c (scm_i_sweep_some_cards): Take a SWEEP_STATS
652 argument. Don't refer to SCM_GC_CELLS_COLLECTED and
653 SCM_CELLS_ALLOCATED. If SEG->FIRST_TIME, let CELLS_COLLECTED as zero.
654 Take into account SEG->SPAN when computing CELLS_SWEPT.
655 (scm_i_sweep_segment): Take one more argument, similarly.
656 (scm_i_sweep_all_segments): Likewise.
657 (scm_i_sweep_some_segments): Likewise.
658 (scm_i_adjust_min_yield): Change the way MIN_CELLS is computed: do not
659 refer to SCM_GC_CELLS_COLLECTED.
660
661 * gc-freelist.c (scm_i_adjust_min_yield): Take one more
662 argument, an `scm_i_sweep_statistics' object.
663 Change the way DELTA is collected: don't take into account
664 SCM_GC_CELLS_COLLECTED_1, only SWEEP_STATS.COLLECTED.
665
666 * gc-malloc.c (scm_realloc): Pass an extra argument
667 to `scm_i_sweep_all_segments ()'.
668
669 * gc.c (gc_start_stats): Updated accordingly.
670 (gc_end_stats): Take an additional SWEEP_STATS argument.
671 Decrement SCM_CELLS_ALLOCATED after calls to `scm_i_sweep_* ()'.
672 (scm_gc_for_newcell): Updated callers of `scm_i_sweep_*'.
673 Decrement SCM_CELLS_ALLOCATED.
674 (scm_i_gc): Likewise.
675
676 * private-gc.h (scm_i_sweep_*): Updated function
677 prototypes accordingly.
678 (scm_t_sweep_statistics): New type.
679 (scm_i_sweep_statistics_init): New macro.
680 (scm_i_sweep_statistics_sum): New macro
681
9a5fa6e9 6822006-02-14 Ludovic Courtès <ludovic.courtes@laas.fr>
2b829bbb
KR
683
684 * strings.c (scm_i_take_stringbufn): Register LEN+1 bytes instead of
685 LEN. Without this, too much collectable memory gets unregistered,
686 which results in an underflow of SCM_MALLOCATED in
687 `decrease_mtrigger()'.
688
689 * gc-malloc.c (decrease_mtrigger): Make sure SIZE is lower than or
690 equal to SCM_MALLOCATED.
691
6922006-02-13 Marius Vollmer <mvo@zagadka.de>
693
694 * eval.c (scm_eval_body): Use scm_i_dynwind_pthread_mutex_lock
695 oinstead of scm_dynwind_pthread_mutex_lock so that it works when
696 configured --without-threads.
697 (SCM_APPLY, CEVAL): Likewise. Thanks to Han-Wen Nienhuys!
698
1aaa1c17
MV
6992006-02-12 Marius Vollmer <mvo@zagadka.de>
700
701 * unif.c (scm_dimensions_to_uniform_array): Use the prototype for
702 filling when the fill parameter is omitted, as documented, but
703 turn #\nul into 0 since s8 arrays (signified by a #\nul prototype)
704 can not store characters.
705
d7c6575f
NJ
7062006-02-09 Neil Jerram <neil@ossau.uklinux.net>
707
708 * socket.c (scm_c_make_socket_address): Pass address_size pointer
709 on to scm_fill_sockaddr call.
710
43e01b1e
NJ
7112006-02-04 Neil Jerram <neil@ossau.uklinux.net>
712
713 * throw.h (scm_c_catch, scm_c_with_throw_handler,
714 scm_catch_with_pre_unwind_handler, scm_with_throw_handler): New.
715
716 * throw.c (SCM_JBPREUNWIND, SCM_SETJBPREUNWIND): New.
717 (struct pre_unwind_data): New, replaces struct lazy_catch.
718 (scm_c_catch): New, replaces scm_internal_catch as the primary
719 catch API for C code; adds pre-unwind handler support.
720 (scm_internal_catch): Now just a wrapper for scm_c_catch, for back
721 compatibility.
722 (tc16_pre_unwind_data, pre_unwind_data_print,
723 make_pre_unwind_data, SCM_PRE_UNWIND_DATA_P): Renamed from
724 "lazy_catch" equivalents.
725 (scm_c_with_throw_handler): New, replaces scm_internal_lazy_catch
726 as the primary C API for a "lazy" catch.
727 (scm_internal_lazy_catch): Now just a wrapper for
728 scm_c_with_throw_handler, for back compatibility.
729 (scm_catch_with_pre_unwind_handler): Renamed from scm_catch; adds
730 pre-unwind handler support.
731 (scm_catch): Now just a wrapper for
732 scm_catch_with_pre_unwind_handler, for back compatibility.
733 (scm_with_throw_handler): New.
734 (scm_lazy_catch): Update comment to say that the handler can
735 return, and what happens if it does.
736 (toggle_pre_unwind_running): New.
737 (scm_ithrow): When identifying the throw target, take running
738 flags into account. In general, change naming of things from
739 "lazy_catch" to "pre_unwind". When throwing to a throw handler,
740 don't unwind the dynamic context first. Add dynwind framing to
741 manage the running flag of a throw handler. If a lazy catch or
742 throw handler returns, rethrow the same exception again. Add
743 pre-unwind support to the normal catch case (SCM_JMPBUFP).
744
745 * root.c (scm_internal_cwdr): Add NULL args to
746 scm_i_with_continuation_barrier call.
747
748 * dynwind.c: Change comment mentioning lazy-catch to mention
749 pre-unwind data and throw handler also.
750
751 * continuations.h (scm_i_with_continuation_barrier): Add
752 pre-unwind handler args.
753
754 * continuations.c (scm_i_with_continuation_barrier): Add
755 pre-unwind handler args, and pass on to scm_c_catch (changed from
756 scm_internal_catch).
757 (c_handler): Remove scm_handle_by_message_noexit call.
758 (scm_c_with_continuation_barrier): Call
759 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
760 as the pre-unwind handler.
761 (scm_handler): Remove scm_handle_by_message_noexit call.
762 (s_scm_with_continuation_barrier): Call
763 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
764 as the pre-unwind handler.
765
2b829bbb
KR
7662006-02-04 Kevin Ryde <user42@zip.com.au>
767
768 * gc-mark.c (scm_mark_all): Fix c99-isms "loops" and "again" variables.
769
72098928
KR
7702006-02-03 Kevin Ryde <user42@zip.com.au>
771
772 * list.c, list.h (scm_list): Restore this function for use from C.
773 It's a complete no-op but in theory might used by someone.
774
aa092c5d
MV
7752006-01-30 Marius Vollmer <mvo@zagadka.de>
776
777 * eval.c (scm_eval_body): Lock source_mutex with a dynwind context
778 so that it gets unlocked in all cases.
779 (SCM_APPLY, CEVAL): Likewise.
780
661ae7ab
MV
7812006-01-29 Marius Vollmer <mvo@zagadka.de>
782
ee51ba31
MV
783 * ramap.c: (scm_array_map_x): Don't use scm_array_p, use
784 scm_is_typed_array instead.
785
661ae7ab
MV
786 Renamed the "frames" that are related to dynamic-wind to "dynamic
787 contexts. Renamed all functions from scm_frame_ to scm_dynwind_.
788 Updated documentation.
789
99e370f6
MV
790 Disabled "futures":
791
792 * futures.h, futures.c: Wrap whole contents in "#if 0"/"#endif".
793 * eval.c, init.c: Comment out all 'future' related things.
794
15ccf10b
MV
7952006-01-28 Marius Vollmer <mvo@zagadka.de>
796
797 * inline.h, pairs.c (scm_is_pair): Moved scm_is_pair from pairs.c
798 to inline.h to make it inline.
799
9a5fa6e9 8002005-12-19 Ludovic Courtès <ludovic.courtes@laas.fr>
fd0a5bbc
HWN
801
802 * strings.c (scm_i_take_stringbufn): New.
803 (scm_i_c_take_symbol): New.
804 (scm_take_locale_stringn): Use `scm_i_take_stringbufn ()'.
805
806 * strings.h (scm_i_c_take_symbol): New.
807 (scm_i_take_stringbufn): New.
808
809 * symbols.c (lookup_interned_symbol): New function.
810 (scm_i_c_mem2symbol): New function.
811 (scm_i_mem2symbol): Use `lookup_symbol ()'.
812 (scm_from_locale_symbol): Use `scm_i_c_mem2symbol ()'. This avoids
813 creating a new Scheme string.
814 (scm_from_locale_symboln): Likewise.
815 (scm_take_locale_symbol): New.
816 (scm_take_locale_symboln): New.
817
818 * symbols.h (scm_take_locale_symbol): New.
819 (scm_take_locale_symboln): New.
820
2ca2ffe6
HWN
8212006-01-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
822
823 * gc-card.c ("sweep_card"): don't count scm_tc_free_cell for
824 free_count.
825
c255614e
HWN
8262005-11-29 Han-Wen Nienhuys <hanwen@xs4all.nl>
827
828 * regex-posix.c (s_scm_regexp_exec): list the offending pattern
829 upon error
830
29295b0c
NJ
8312005-12-29 Neil Jerram <neil@ossau.uklinux.net>
832
9a5fa6e9 833 * fluids.c (next_fluid_num): [From Ludovic Courtès:] Don't trigger
29295b0c
NJ
834 the GC when allocated_fluids_len is zero.
835
2824f4dc
NJ
8362005-12-14 Neil Jerram <neil@ossau.uklinux.net>
837
ec3a8ace
NJ
838 * load.c (the_reader, the_reader_fluid_num): New.
839 (scm_primitive_load): Support custom reader.
840 (scm_init_load): Init the_reader and the_reader_fluid_num; export
841 the_reader as `current-reader'.
842
2824f4dc
NJ
843 * scmsigs.c (do_read_without_guile): Use the "raw_data" passed in
844 (rather than an uninitialized pointer on the stack).
845
d9c36d2a
MV
8462005-12-07 Marius Vollmer <mvo@zagadka.de>
847
6a88895b
MV
848 Reported by Bruce Korb:
849
850 * init.c (invoke_main_func): Don't call exit here. Throws that
851 are only caught by scm_with_guile will bypass us and would cause
852 scm_boot_guile to return erroneously.
853 (scm_boot_guile): Expect scm_with_guile to return and call exit
854 here, passing it an appropriate exit code.
855
856 From Andy Wingo:
d9c36d2a
MV
857
858 * script.c (scm_find_executable): Compile fix -- fgetc returns an
859 unsigned char cast to an int, or -1 for EOS.
860
b54df254
MV
8612005-12-06 Marius Vollmer <mvo@zagadka.de>
862
08f489c9
MV
863 * srfi-4.h, srfi-4.c, srfi-4.i.c (take_uvec): Make BASE pointer
864 non-const.
9a5fa6e9 865 (scm_take_u8vector, etc): Likewise. Thanks to Ludovic Courtès!
08f489c9 866
b54df254
MV
867 * threads.h, threads.c (scm_t_guile_ticket, scm_leave_guile,
868 scm_enter_guile): Removed from public API. See comment at
869 scm_without_guile for the rationale.
870
871 * scmsigs.c (read_without_guile): New.
872 (signal_delivery_thread): Use it instead of
873 scm_leave_guile/read/scm_enter_guile.
874
9d9ce2b5
MV
875 From Stephen Compall:
876
877 * eval.c (scm_m_cond): Recognize SRFI 61 cond syntax.
878 (CEVAL): Evaluate SRFI 61 cond clauses.
879
9a5fa6e9 8802005-12-06 Ludovic Courtès <ludovic.courtes@laas.fr>
9fb5c8f9
NJ
881
882 * gc-card.c (scm_i_card_statistics): Return if BITVEC is NULL.
883 This was typically hit when running `gc-live-object-stats' right
884 after starting Guile.
885
efeac8ae
KR
8862005-11-30 Kevin Ryde <user42@zip.com.au>
887
888 * srfi-13.c (scm_string_append_shared): No copying if just one
889 non-empty string in args.
890
606183ba
KR
8912005-11-26 Kevin Ryde <user42@zip.com.au>
892
893 * gc-mark.c (scm_mark_all): Change C++ comment to C comment. Reported
9a5fa6e9 894 by Ludovic Courtès.
606183ba
KR
895
896 * list.c (list): Should be "primitive" in SCM_SNARF_DOCS, not
897 "register".
898
899 * random.c (scm_i_copy_rstate, scm_c_make_rstate): Don't test for
900 scm_malloc returning NULL, it never does that.
901 * putenv.c (putenv): Likewise.
902
903 * socket.c (scm_fill_sockaddr): Remove SCM_C_INLINE_KEYWORD, this is
904 much too big to want to inline.
905
9a5fa6e9 9062005-11-17 Ludovic Courtès <ludovic.courtes@laas.fr>
dbb5de29
NJ
907
908 * print.c (EXIT_NESTED_DATA): Before popping from the stack, reset
909 the value at its top. This fixes a reference leak.
910 (PUSH_REF): Perform `pstate->top++' after calling
911 `PSTATE_STACK_SET ()' in order to avoid undesired potential side
912 effects.
913
9a5fa6e9 9142005-11-12 Ludovic Courtès <ludovic.courtes@laas.fr>
3f98874a
NJ
915
916 * gc.c (scm_weak_vectors): Removed.
917
f07d2b20
KR
9182005-11-12 Kevin Ryde <user42@zip.com.au>
919
920 * socket.c (scm_setsockopt): Missing @defvar in docstring. Reported
9a5fa6e9 921 by Ludovic Courtès.
f07d2b20 922
bedd3f5f
MV
9232005-11-07 Marius Vollmer <mvo@zagadka.de>
924
925 * stime.c (scm_mktime): Use scm_frame_critical_section instead of
926 SCM_CRITICAL_SECTION_START/END since the code inside the critical
927 section might exit non-locally.
928
7c9c0169
NJ
9292005-11-04 Neil Jerram <neil@ossau.uklinux.net>
930
931 * eval.c (sym_instead): New symbol.
932 (ENTER_APPLY): Remove optional use of a continuation when making
933 trap call.
934 (scm_debug_opts): Change doc for 'cheap option to make clear that
935 it is now obsolete.
936 (CEVAL, SCM_APPLY): Remove optional use of a continuation when
937 making trap calls, and implement substitution of eval expressions
938 and return values using the values that the trap call handlers
939 return.
940
941 * debug.h (SCM_CHEAPTRAPS_P): Removed.
942
9a5fa6e9 9432005-10-27 Ludovic Courtès <ludovic.courtes@laas.fr>
64cdbfc7
KR
944
945 * socket.c (scm_fill_sockaddr): No need to check NULL from scm_malloc.
946 (scm_connect, scm_bind, scm_sendto): Accept sockaddr object.
947 (scm_addr_vector): Renamed to _scm_from_sockaddr, update usages.
948 (scm_from_sockaddr, scm_to_sockaddr, scm_make_socket_address,
949 scm_c_make_socket_address): New functions.
950 * socket.h: Add prototypes.
951
fc9f596c
KR
9522005-10-24 Kevin Ryde <user42@zip.com.au>
953
954 * socket.c (scm_init_socket): Add IPPROTO_IP, IPPROTO_TCP,
955 IPPROTO_UDP. Remove SOL_IP, SOL_TCP, SOL_UDP. The former are in
956 POSIX spec examples, the latter are not available on for instance
957 NetBSD.
958
959 * socket.c (scm_getsockopt, scm_setsockopt): Update docstrings from
960 posix.texi.
961
962 * stime.c (scm_strftime): Update docstring from posix.texi.
963
0460c6e1
MV
9642005-10-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
965
966 PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP is not portable enough.
967
968 * null-threads.h, pthread-threads.h
969 (SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER): Removed.
970 (scm_i_pthread_mutexattr_recursive): New.
971
972 * threads.c (scm_i_pthread_mutexattr_recursive): Declare.
973 (scm_i_critical_section_mutex): Do not initialize statically.
974 (scm_threads_prehistory): Initialize
975 scm_i_pthread_mutexattr_recursive and scm_i_critical_section_mutex
976 here.
977
978 * eval.c (source_mutex): Do not initialiaze statically.
979 (scm_init_eval): Do it here, using
980 scm_i_pthread_mutexattr_recursive.
981
7b4a9e52
MV
9822005-09-05 Marius Vollmer <mvo@zagadka.de>
983
984 * print.h (SCM_PRINT_KEYWORD_STYLE_I, SCM_PRINT_KEYWORD_STYLE):
985 New.
986 (sym_reader): New.
987 (scm_print_opts): Added "quote-keywordish-symbols" option.
988 (quote_keywordish_symbol): New, for evaluating the option.
989 (scm_print_symbol_name): Use it.
990 (scm_init_print): Initialize new option to sym_reader.
991
5defc05d
NJ
9922005-08-15 Neil Jerram <neil@ossau.uklinux.net>
993
994 * eval.c (eval_letrec_inits): New.
995 (CEVAL): Eval letrec initializer forms using eval_letrec_inits.
996
036482e9
MV
9972005-08-12 Marius Vollmer <mvo@zagadka.de>
998
999 * numbers.c: Use scm_from_bool instead of SCM_BOOL. Thanks to
1000 Peter Gavin!
1001
5c347f8c
KR
10022005-08-12 Kevin Ryde <user42@zip.com.au>
1003
1004 * srfi-13.c (scm_string_for_each_index): Correction to docstring.
1005
bc721aa2
KR
10062005-08-06 Kevin Ryde <user42@zip.com.au>
1007
1008 * srfi-13.c (scm_string_any, scm_string_every, scm_string_tabulate,
1009 scm_string_trim, scm_string_trim_right, scm_string_trim_both,
1010 scm_string_index, scm_string_index_right, scm_string_skip,
1011 scm_string_skip_right, scm_string_count, scm_string_map,
1012 scm_string_map_x, scm_string_for_each, scm_string_for_each_index,
1013 scm_string_filter, scm_string_delete): Use scm_t_trampoline_1 for
1014 procedures called in loops.
1015
126c81db
KR
10162005-08-02 Kevin Ryde <user42@zip.com.au>
1017
1018 * strports.c (st_flush): Increase buffer by 1.5x when growing, to
1019 avoid lots of copying where previoulsy growing by only 80 bytes at a
1020 time.
1021
7f278dc6
MV
10222005-08-01 Marius Vollmer <mvo@zagadka.de>
1023
1024 * modules.h, modules.c (scm_eval_closure_module): Removed, we
1025 already have scm_lookup_closure_module, which does the same thing.
1026
cb5c4b07
MV
10272005-08-01 Marius Vollmer <mvo@zagadka.de>
1028
1029 New marking algorithm for weak hashtables that fixes the problem
1030 that references from the non-weak value to the associated weak
1031 key (for example) would prevent the entry from ever being dropped.
1032
1033 Guardians have been changed back to their original semantics and
1034 are no longer greedy and no longer drop cycles.
1035
1036 * gc-mark.c (scm_mark_all): Do not rely on hooks to run the weak
1037 hashtable and guardian machinery but call the relevant functions
1038 directly.
1039
1040 * guardians.h, guardians.c, deprecated.h,
1041 deprecated.c (scm_destroy_guardian_x, scm_guardian_greedy_p,
1042 scm_guardian_destroyed_p, scm_guard, scm_get_one_zombie):
1043 Deprecated and moved into deprecated.[ch].
1044
1045 * guardians.h, guardians.c: Mostly rewritten.
1046 (scm_i_init_guardians_for_gc,
1047 scm_i_identify_inaccessible_guardeds,
1048 scm_i_mark_inaccessible_guardeds): New.
930888e8 1049 (scm_make_guardian): Removed greedy_p argument.
cb5c4b07
MV
1050
1051 * weaks.h, weaks.c (SCM_I_WVECT_TYPE, SCM_I_SET_WVECT_TYPE): New.
1052 (SCM_I_WVECT_N_ITEMS, SCM_I_SET_WVECT_N_ITEMS): New.
1053 (SCM_WVECTF_NOSCAN, SCM_WVECT_NOSCAN_P): Removed.
1054 (scm_weaks_prehistory): Removed.
1055 (scm_i_init_weak_vectors_for_gc, scm_i_mark_weak_vector,
1056 scm_i_mark_weak_vectors_non_weaks,
1057 scm_i_remove_weaks_from_weak_vectors, scm_i_remove_weaks): New.
1058 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
1059 scm_scan_weak_vectors): Removed.
1060
1061 * hashtab.h (scm_i_scan_weak_hashtables): New.
1062 * hashtab.c (make_hash_table, scm_i_rehash): Do not use
1063 SCM_WVECTF_NOSCAN.
1064 (hashtable_print): Use SCM_HASHTABLE_N_ITEMS instead of
1065 t->n_items.
1066 (scan_weak_hashtables, scm_i_scan_weak_hashtables): Renamed former
1067 to latter. Do not scan the alists themselves, this is done by the
1068 weak vector code now. Just update the element count.
1069
1070 * vectors.h (SCM_I_WVECT_TYPE, SCM_I_WVECT_EXTRA): Renamed former
1071 to latter. The type is now only part of the cell word.
1072 (SCM_I_SET_WVECT_TYPE, SCM_I_SET_WVECT_EXTRA): Likewise.
1073
1074 * init.c (scm_i_init_guile): Do not call scm_weaks_prehistory.
1075
3e2073bd
MD
10762005-07-18 Mikael Djurfeldt <mdj@d14n36.pdc.kth.se>
1077
1078 Some changes towards making it possible to run Guile on the EM64T
1079 platform.
1080
1081 * gc.c (scm_gc_stats): Bugfix: Measure size of the type we are
1082 mallocating for (unsigned long *bounds).
1083
1084 * hashtab.c (scm_i_rehash): Cast SCM_HASHTABLE_FLAGS (table) to
1085 scm_t_bits before storing them in the type word.
1086
1087 * gc.c (tag_table_to_type_alist): Modified type of c_tag from
1088 scm_t_bits to int.
1089
e8ac8e75
KR
10902005-07-12 Kevin Ryde <user42@zip.com.au>
1091
1092 * eval.c (scm_dbg_make_iloc): Should be SCM_IFRAMEMAX and
1093 SCM_IDISTMAX, and cast uints through scm_t_bits to make gcc happy.
1094 * pairs.c (scm_error_pair_access): Use scm_from_locale_string rather
1095 than scm_makfrom0str.
1096 Reported by Ken Raeburn.
1097
1098 * gc-card.c (scm_dbg_gc_get_bvec): Change return from long* to
1099 scm_t_c_bvec_long*, gcc 4 doesn't like different pointer targets when
1100 returning SCM_GC_CARD_BVEC.
1101
1102 * pairs.c (scm_error_pair_access): Plain ascii ' in error message
1103 rather than latin-1 acute accent, the latter may not print on all
1104 terminals.
1105
1106 * srfi-13.c (scm_string_filter, scm_string_delete): Strip leading and
1107 trailing deletions, so as to return a substring if those are the only
1108 changes.
1109
adc0677d
KR
11102005-07-10 Kevin Ryde <user42@zip.com.au>
1111
1112 * socket.c (scm_inet_pton, scm_inet_ntop): Pointer cast to scm_t_uint8
1113 for scm ipv6 funcs, gcc 4 is picky about char* vs uchar*.
1114 (scm_getsockopt, scm_accept, scm_getsockname, scm_getpeername,
1115 scm_recvfrom) Use socklen_t, gcc 4 is picky about int* vs socklen_t*.
1116
8fecbb19
HWN
11172005-07-01 Han-Wen Nienhuys <hanwen@xs4all.nl>
1118
1119 * gc-card.c (scm_i_card_statistics): init tag.
1120
1121 * gc.c (tag_table_to_type_alist): check type of tag. Should be integer.
1122
fc9c5d06
HWN
11232005-06-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
1124
8fecbb19
HWN
1125 * fports.c (s_scm_open_file): add the b flag for binary to the doc
1126 string.
fc9c5d06 1127
08fce816
KR
11282005-06-25 Kevin Ryde <user42@zip.com.au>
1129
1130 * srfi-13.c (scm_string_filter, scm_string_delete): Partial revert
1131 last change, use plain copy-on-write substrings, the individual
1132 descriptions in the srfi don't mention shared storage (only the
1133 introduction does).
1134
1135 * strings.c (scm_take_locale_stringn): Use realloc to make room for
1136 null-terminator, rather than mallocing a whole new block.
1137 (scm_take_locale_string): Use scm_take_locale_stringn len==-1.
1138
fc4abd0e
MV
11392005-06-12 Marius Vollmer <mvo@zagadka.de>
1140
e3da8a30
MV
1141 * ramap.c (scm_array_index_map_x): First test for real arrays,
1142 then check for generalized vectors. This ensures that the
1143 generalized vector case need only work with zero-origin ranges.
12097c77
MV
1144 (scm_ra_eqp, scm_ra_compare): Use the new array handle functions
1145 to access the target array, making these functions work with all
1146 kinds of arrays, not just bit arrays.
e3da8a30 1147
fc4abd0e
MV
1148 * gh.h, gh_data.c, gh_eval.c, gh_funcs.c, gh_init.c, gh_io.c,
1149 gh_list.c, gh_predicates.c: Deprecated everything.
1150
1151 * environments.c (environment_default_folder,
1152 environment_default_observer): Do not use gh_call3, gh_call1.
1153
e4da0740
HWN
11542005-06-10 Han-Wen Nienhuys <hanwen@xs4all.nl>
1155
1156 * modules.c (s_scm_eval_closure_module): new function. Return the
1157 module inside an eval-closure.
1158
1159 * gc.c (scm_init_storage): make scm_stand_in_procs a weak_key hash
1160 table. This means that procedure properties are GC'd if the
1161 procedure dies.
1162
27667158
KR
11632005-06-11 Kevin Ryde <user42@zip.com.au>
1164
1165 * srfi-13.c (scm_string_filter, scm_string_delete): For char and
1166 charset cases, count chars kept and build a string in a second pass,
1167 rather than using a cons cell for every char kept. Use a shared
1168 substring when nothing removed (such sharing is allowed by the srfi).
1169
8a00ba71
HWN
11702005-06-09 Han-Wen Nienhuys <hanwen@xs4all.nl>
1171
1172 * gc.c (tag_table_to_type_alist): convert tag number to "tag %d"
1173 string, so live object stats can be sorted with string<?.
1174
a677679f
MV
11752005-06-06 Marius Vollmer <mvo@zagadka.de>
1176
2ff668b0
MV
1177 * print.c (iprin1): When writing a string, collect all characters
1178 that can be printed directly into one call to scm_lfwrite.
1179 Previously, every character was output with its own call to
1180 write(2) on unbuffered ports.
1181
589f22f6
MV
1182 * eval.c (scm_eval_options_interface): Use
1183 scm_frame_critical_section instead of SCM_CRITICAL_SECTION_START
1184 and SCM_CRITICAL_SECTION_END.
1185
a677679f
MV
1186 * unif.c (scm_array_in_bounds_p): First test for real arrays, then
1187 check for generalized vectors. This ensures that the generalized
1188 vector case need only work with zero-origin ranges.
1189
f8cda9ee
KR
11902005-06-06 Kevin Ryde <user42@zip.com.au>
1191
1192 * srfi-13.c (scm_string_split): Compare char/char in scan. Mixing an
1193 unsigned int SCM_CHAR and a char string meant an 8-bit char was never
1194 matched.
1195
cdac1be4
MV
11962005-06-05 Marius Vollmer <mvo@zagadka.de>
1197
6642f7ac
MV
1198 * eval.c: Added comment on how to make case 1.1 of
1199 r5rs_pitfall.test succeed.
1200
cdac1be4
MV
1201 From Jan Nieuwenhuizen <janneke@gnu.org>. Thanks!
1202
1203 * hashtab.h: Bugfix: use SCM_API (WAS: extern).
1204
1205 * socket.c: Remove obsolete comment about socklen_t.
1206 (s_scm_setsockopt)[!HAVE_IP_MREQ]: Do not use ip_mreq code.
1207
1208 * numbers.h (isnan)[__MINGW32__]: Remove.
1209
1210 * Makefile.am (gen_scmconfig_SOURCES): Bugfix: Add
1211 DEFAULT_INCLUDES when cross compiling.
1212
1213 * threads.c (ETIMEDOUT, pipe)[__MINGW32__]: Add defines.
1214
a677679f 1215 * stime.c (scm_strftime)[!HAVE_TM_ZONE]: Use
cdac1be4
MV
1216 SCM_SIMPLE_VECTOR_REF instead of SCM_VELTS. (Changed slightly
1217 from Jan's patch.)
1218
9e664475
MV
12192005-05-22 Marius Vollmer <mvo@zagadka.de>
1220
188d0c5e
MV
1221 * unif.c (scm_make_shared_array): Add old base to new base since
1222 scm_array_handle_pos does not include the base.
1223 (scm_aind): Likewise.
1224
9e664475
MV
1225 * ports.c (scm_putc, scm_puts): Assert that the port argument is a
1226 output port.
1227
5a6d139b
NJ
12282005-05-12 Neil Jerram <neil@ossau.uklinux.net>
1229
1230 Mac OS X compile warning fixes, reported by Richard Todd.
1231
1232 * unif.c (scm_i_read_array): Declare rank as ssize_t, to guarantee
1233 that it is signed.
1234
1235 * strports.c (st_resize_port): Add unsigned char cast.
1236 (scm_mkstrport): Make read/write_buf cast unsigned.
1237
1238 * srfi-13.c (string_titlecase_x): Add unsigned char cast.
1239
1240 * rdelim.c (scm_read_line): Initialize slen.
1241
1242 * load.c (scm_search_path): Remove weird >=1, and add
1243 parentheses to clarify conditions.
1244
1245 * hash.c (scm_hasher): Add const unsigned char cast.
1246
1247 * gh_data.c (gh_chars2byvect): Add scm_t_int8 cast.
1248
b01532af
NJ
12492005-05-11 Neil Jerram <neil@ossau.uklinux.net>
1250
9a5fa6e9 1251 Fix C99isms reported by Ludovic Courtès:
b01532af
NJ
1252
1253 * threads.c (s_scm_lock_mutex): Don't declare msg in middle of
1254 code.
1255
1256 * gc.c (s_scm_gc_live_object_stats): Don't declare alist in middle
1257 of code.
1258
1259 * gc-card.c (scm_i_card_statistics): Don't declare tag in middle
1260 of code.
1261 (scm_i_card_statistics): Add block for declarations of tag_as_scm
1262 and current.
1263
229a0710
NJ
12642005-05-10 Neil Jerram <neil@ossau.uklinux.net>
1265
1266 * scmsigs.c (signal_delivery_thread): Return a value, to avoid
1267 compile warning reported by Werner Scheinast.
1268
645dd3fc
HWN
12692005-04-30 Han-Wen Nienhuys <hanwen@xs4all.nl>
1270
80038021
HWN
1271 * list.h: remove scm_list()
1272
645dd3fc
HWN
1273 * fluids.c (DYNAMIC_STATE_NEXT_LOC): new macro for use with
1274 SCM_DEBUG_CELL_ACCESSES
1275 (FLUID_NEXT_LOC): idem.
1276
9a68a4a8
KR
12772005-04-30 Kevin Ryde <user42@zip.com.au>
1278
1279 * numbers.c (scm_divide): Correction to 1/complex and <any>/complex,
1280 need to test abs(re)<abs(im) for choice of cases, otherwise divide by
1281 zero when re==0 and im<0. Reported by Jean Crepeau.
1282
0640cdaa
KR
12832005-04-25 Kevin Ryde <user42@zip.com.au>
1284
1285 * ramap.c (scm_array_map_x): Allow no source args, add num args checks
4d54ee35
KR
1286 to subr_1, subr_2, subr_2o and dsubr cases. No source args only has a
1287 few sensible uses (like filling with a random number generator say),
1288 but has been allowed in the past and so should be kept.
0640cdaa 1289
c0b85e9c
KR
12902005-04-23 Kevin Ryde <user42@zip.com.au>
1291
1292 * hashtab.c (scm_hashx_remove_x): Need to pass "closure" to
1293 scm_hash_fn_remove_x.
1294
1295 * list.c (scm_cons_star): Don't modify the rest list, it belongs to
1296 the caller when cons* is reached through apply.
1297
1298 * list.c (list): Use scm_list_copy, so as to produce a fresh list when
1299 list is called using apply, under the debugging evaluator.
1300 (scm_list): Remove.
1301
c51682b4
KR
1302 * list.c, list.h (scm_make_list): New code, moving make-list from
1303 boot-9.scm.
8cb2eff8 1304
c0575bde
KR
13052005-04-14 Kevin Ryde <user42@zip.com.au>
1306
1307 * numbers.c, numbers.h (scm_oneplus, scm_oneminus): New functions,
1308 converted from scheme code in boot-9.scm.
1309
47a298d9
KR
13102005-04-11 Kevin Ryde <user42@zip.com.au>
1311
1312 * srfi-13.c (scm_string_concatenate, scm_string_concatenate_shared):
1313 Validate list argument, scm_string_append and scm_string_append_shared
1314 don't do that to their rest argument (in a normal build).
1315
8ea3dc2e
MV
13162005-04-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1317
1318 * hashtab.h, hashtab.c (scm_t_hashtable): Removed 'closure' field. The
1319 closure can not be stored since it is no longer valid at GC time.
1320 (make_hash_table): Initialize 'hash_fn' field.
1321 (scm_i_rehash): Only store hash_fn in hash table when closre is
1322 NULL.
1323 (rehash_after_gc): Only call scm_i_rehash when 'hash_fn' is
1324 non-NULL. Always use a NULL closure.
1325 (scm_hash_fn_create_handle_x): Also rehash when table contains too
1326 few entries.
1327
08d2020d
MV
13282005-03-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1329
1330 * hashtab.h, hashtab.c (scm_hash_fx_remove_x): Removed delete_fn
1331 argument; always use scm_delq_x. The delete_fn function works on
1332 the handle, not the key, and it therefore makes no sense to make
1333 it configurable. Changed all callers.
1334 (scm_hashx_remove_x): Likewise. Also, exported to Scheme.
1335 (scm_hash_clear): Accept plain vectors as hashtables.
1336 (scm_delx_x): Removed.
1337
cb975c21
HWN
13382005-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
1339
1340 * inline.h (scm_double_cell): use __asm__ iso. asm, to maintain
1341 compatibility with gcc -std=c99.
1342
4c908f2c
MD
13432005-03-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1344
1345 * async.h (scm_mask_ints): Removed left over reference to
1346 scm_root.
1347
1348 * threads.c: Removed fprintf debug statements.
1349
d193b04b
NJ
13502005-03-24 Neil Jerram <neil@ossau.uklinux.net>
1351
1352 * debug.c (scm_make_memoized): Restore use of SCM_UNPACK.
1353
c29748cd
NJ
13542005-03-23 Neil Jerram <neil@ossau.uklinux.net>
1355
1356 * debug.c (scm_make_memoized): Remove unnecessary critical
1357 section, and simplify by using SCM_RETURN_NEWSMOB.
1358
e654b062
MD
13592005-03-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1360
1361 * strings.h (SCM_STRING_UCHARS): Added missing argument.
1362
4bc6f1c6
KR
13632005-03-18 Kevin Ryde <user42@zip.com.au>
1364
1365 * arbiters.c (FETCH_STORE) [generic C]: Should be
9a5fa6e9 1366 scm_i_scm_pthread_mutex_lock/unlock now. Reported by Ludovic Courtès.
4bc6f1c6 1367
f1531813
KR
13682005-03-13 Kevin Ryde <user42@zip.com.au>
1369
1370 * numbers.c, numbers.h (scm_i_clonebig): Remove static, so can use in
1371 srfi-60.
1372
1373 * numbers.c (scm_logior): Must scm_i_normbig results as per scm_logand,
1374 because OR-ing bits into a negative can reduce the value to an inum.
1375
1376 * numbers.c (scm_num_eq_p): On 64-bit systems, be careful about
1377 casting inum to double since that can lose precision.
1378
a9fae247
MV
13792005-03-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1380
1381 * threads.h, threads.c (scm_i_thread): Added gc_running_p field.
1382 (guilify_self_1): Initialize it.
1383
1384 * gc.h, gc.c (SCM_FREECELL_P): Removed for good.
1385 (scm_block_gc, scm_gc_heap_lock): Removed. Removed all uses.
1386 (scm_gc_running_p): Now a macro that refers to the scm_i_thread
1387 field.
1388 (scm_i_sweep_mutex): Now a non-recursive mutex. GC can not happen
1389 recursively.
1390 (scm_igc, scm_i_gc): Renamed former to latter. Changed all uses.
1391 Do not lock scm_i_sweep_mutex, which is now non-recursive, or set
1392 scm_gc_running_p. Do not run the scm_after_gc_c_hook.
1393 (scm_gc): Lock scm_i_sweep_mutex, set scm_gc_running_p and run the
1394 scm_after_gc_c_hook here.
1395 (scm_gc_for_new_cell): Set scm_gc_running_p here and run the
1396 scm_after_gc_c_hook when a full GC has in fact been performed.
1397 (scm_i_expensive_validation_check): Call scm_gc, not scm_i_gc.
1398
1399 * gc-segment.c (scm_i_get_new_heap_segment): Do not check
1400 scm_gc_heap_lock.
1401
1402 * gc-malloc.c (scm_realloc, increase_mtrigger): Set
1403 scm_gc_running_p while the scm_i_sweep_mutex is locked.
1404
1405 * inline.h (scm_cell, scm_double_cell): Do not check
1406 scm_gc_running_p, allocation during sweeping is OK.
1407
1408 * gdbint.c (SCM_BEGIN_FOREIGN_BLOCK, SCM_END_FOREIGN_BLOCK): Do
1409 not set scm_block_gc.
1410
1411 * init.c (scm_i_init_guile): Do not set scm_block_gc.
1412
1413 * deprecation.c (scm_c_issue_deprecation_warning): Use malloc
1414 instead of scm_malloc. The latter can not be used during GC.
1415
d1c38e11
MV
14162005-03-09 Marius Vollmer <mvo@zagadka.de>
1417
1418 * script.c (scm_compile_shell_switches): Added 2005 to Copyright
1419 years.
1420
99ec43c1
MV
14212005-03-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1422
1423 * gc-card.c (scm_i_sweep_card): Do not increase/decrease
1424 scm_gc_running_p. Sweeping can happen in parallel with
1425 allocation.
1426
1427 * inline.h: Updated comments for current threading implementation.
1428
1429 * threads.h, threads.c (scm_i_frame_single_threaded): Removed.
1430 (scm_i_thread): Removed unused signal_asyncs field.
1431 (threads_mark): Do not mark it.
1432 (guilify_self_1): Do not initialize it. Do initialize
1433 continuation_root field.
1434 (do_thread_exit): Do not remove thread from all_threads list.
1435 (on_thread_exit): Do it here, after leaving guile mode.
1436 (sleep_level): Removed.
1437 (scm_i_thread_put_to_sleep): Leave thread_admin_mutex locked when
1438 returning. Do not support recursive sleeps.
1439 (scm_i_thread_wake_up): Expect thread_admin_mutex to be locked on
1440 entry. Do not support recursive sleeps.
1441
1442 * fluids.c (ensure_state_size, ensure_all_state_sizes,
1443 resize_all_states): Collapsed ensure_state_size and
1444 ensure_all_state_sizes into one function named resize_all_states.
1445 Allocate new vectors outside of single threaded region. Do only
1446 simple things inside that region.
1447 (scm_make_fluid, scm_make_dynamic_state): Lock fluid_admin_mutex
1448 while adding to the global lists.
1449
1450
461f34aa
MV
14512005-03-08 Marius Vollmer <mvo@zagadka.de>
1452
1453 libltdl is no longer distributed. We expect it to be installed
1454 already.
1455
1456 * Makefile.am (INCLUDES): Removed @LTDLINCL@.
1457 (libguile_la_LIBADD): Removed @LIBLTDL@.
1458
4e047c3e
MV
14592005-03-07 Marius Vollmer <mvo@zagadka.de>
1460
1461 * threads.h, async.h, threads.c (SCM_CRITICAL_SECTION_START,
1462 SCM_CRITICAL_SECTION_END): Moved here from threads.h since now
1463 they also block/unblock execution of asyncs and call
1464 scm_async_click which is declared in async.h but threads.h can not
1465 include async.h since async.h already includes threads.h.
1466 (scm_i_critical_section_level): New, for checking mistakes in the
1467 use of the SCM_CRITICAL_SECTION_* macros.
1468 (scm_i_critical_section_mutex): Make it a recursive mutex so that
1469 critical sections can be nested.
1470
1471 * throw.c (scm_ithrow): Abort when scm_i_critical_section_level is
1472 not zero.
1473
1474 * threads.h, threads.c (scm_frame_lock_mutex): New.
1475 (scm_frame_critical_section): Take mutex as argument.
1476 (framed_critical_section_mutex): New, used as default for above.
1477 (scm_init_threads): Initialize it.
1478 (scm_threads_prehistory): Do not initialize thread_admin_mutex and
1479 scm_i_critical_section_mutex; both are initialized statically.
1480
1481 * continuation.c, deprecated.c, goops.c, guardians.c keywords.c,
1482 libguile_la-arrays.loT, objprop.c, ports.c, smob.c, sort.s,
b9d9ad3a
MV
1483 srcprop.c, stime.c, struct.c, throw.c, regex-posix.c: Include
1484 "libguile/async.h" for SCM_CRITICAL_SECTION_START/END.
4e047c3e
MV
1485
1486 * debug.c (scm_debug_options): Replace
1487 SCM_CRITICAL_SECTION_START/END with a frame and
1488 scm_frame_critical_section.
1489
1490 * continuations.c (scm_make_continuation): No longer a critical
1491 section.
1492 (scm_dynthrow): Abort when scm_i_critical_section_level is
1493 not zero.
1494
d0a45bff
MV
14952005-03-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1496
db6673e5
MV
1497 * threads.c (scm_try_mutex): Renamed argument for consistency.
1498
d0a45bff
MV
1499 * root.c (scm_call_with_dynamic_root): New docstring.
1500
1501 * eval.c: Define _GNU_SOURCE.
1502
9de87eea
MV
15032005-03-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1504
1505 Big merge from the mvo-thread-cleanup branch. The main changes
1506 are:
1507
1508 - The dynamic roots functionality has been split into dynamic
1509 states and continuations barriers. Fluids have been
1510 reimplemented and can now be garbage collected.
1511
1512 - Initialization of Guile now works in a multi-thread friendly
1513 manner. Threads can freely enter and leave guile mode.
1514
1515 - Blocking on mutexes or condition variables or while selecting
1516 can now be reliably interrupted via system asyncs.
1517
1518 - The low-level threading interface has been removed.
1519
1520 - Signals are delivered via a pipe to a dedicated 'signal delivery
1521 thread'.
1522
1523 - SCM_DEFER_INTS, SCM_ALLOW_INTS etc have been deprecated.
1524
1525 * throw.c (scm_handle_by_message): Exit only the current thread,
1526 not the whole process.
1527 (scm_handle_by_message_noexit): Exit when catching 'quit.
1528
1529 * scmsigs.c (take_signal, signal_delivery_thread,
1530 start_signal_delivery_thread, ensure_signal_delivery_thread,
1531 install_handler): Reimplemented signal delivery as explained in
1532 the comments.
1533
1534 * pthreads-threads.h (scm_i_pthread_t, scm_i_pthread_self,
1535 scm_i_pthread_create, scm_i_pthread_detach, scm_i_pthread_exit,
1536 scm_i_sched_yield, scm_i_pthread_sigmask,
1537 SCM_I_PTHREAD_MUTEX_INITIALIZER,
1538 SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER, scm_i_pthread_mutex_t ,
1539 scm_i_pthread_mutex_init, scm_i_pthread_mutex_destroy,
1540 scm_i_pthread_mutex_trylock, scm_i_pthread_mutex_lock,
1541 scm_i_pthread_mutex_unlock, SCM_I_PTHREAD_COND_INITIALIZER,
1542 scm_i_pthread_cond_t, scm_i_pthread_cond_init,
1543 scm_i_pthread_cond_destroy, scm_i_pthread_cond_signal,
1544 scm_i_pthread_cond_broadcast, scm_i_pthread_cond_wait,
1545 scm_i_pthread_cond_timedwait, scm_i_pthread_once_t,
1546 SCM_I_PTHREAD_ONCE_INIT, scm_i_pthread_once, scm_i_pthread_key_t ,
1547 scm_i_pthread_key_create, scm_i_pthread_setspecific,
1548 scm_i_pthread_getspecific, scm_i_scm_pthread_mutex_lock,
1549 scm_i_frame_pthread_mutex_lock, scm_i_scm_pthread_cond_wait,
1550 scm_i_scm_pthread_cond_timedwait): Provide the obvious mapping
1551 when using pthreads.
1552 * null-threads.c, null-threads.h: Provide dummy definitions for
1553 the above symbols when not using pthreads.
1554
1555 * modules.h, modules.c (scm_frame_current_module): New.
1556
1557 * load.c (scm_primitive_load): Use scm_i_frame_current_load_port
1558 instead of scm_internal_dynamic_wind.
1559
1560 * init.h, init.c (restart_stack, start_stack): Removed.
1561 (scm_boot_guile, invoke_main_func): Simply use scm_with_guile.
1562 (scm_boot_guile_1): Removed.
1563 (scm_i_init_mutex): New.
1564 (really_cleanup_for_exit, cleanup_for_exit): New.
1565 (scm_init_guile_1, scm_i_init_guile): Renamed former to latter.
1566 Moved around some init funcs. Call
1567 scm_init_threads_default_dynamic_state. Register cleanup_for_exit
1568 with atexit.
1569
1570 * hashtab.c (scm_hash_fn_create_handle_x, scm_hash_fn_remove_x):
1571 Use "!scm_is_eq" instead of "!=".
1572
1573 * ge-scmconfig.c, gen-scmconfig.h.in (SCM_I_GSC_USE_COOP_THREADS,
1574 SCM_USE_COOP_THREADS): Removed.
1575
1576 * gc.c (scm_igc): Take care that scm_gc_running_p is properly
1577 maintained. Unlock scm_i_sweep_mutex before running
1578 scm_after_gc_c_hook.
1579 (scm_permanent_object): Allocate outside of critical section.
1580 (cleanup): Removed.
1581
1582 * fluids.h, fluids.c: Reimplemented completely.
1583 (SCM_FLUID_NUM, SCM_FAST_FLUID_REF,
1584 SCM_FAST_FLUID_SET): Reimplemented as functions.
1585 (scm_is_fluid): New.
1586 (scm_i_make_initial_fluids, scm_i_copy_fluids): Removed.
1587 (scm_make_dynamic_state, scm_dynamic_state_p,
1588 scm_is_dynamic_state, scm_current_dynamic_state,
1589 scm_set_current_dynamic_state, scm_frame_current_dynamic_state,
1590 scm_c_with_dynamic_state, scm_with_dynamic_state,
1591 scm_i_make_initial_dynamic_state, scm_fluids_prehistory): New.
1592
1593 * feature.c (progargs_fluid): New.
1594 (scm_program_arguments, scm_set_program_arguments): Use it instead
1595 of scm_progargs.
1596 (scm_init_feature): Allocate it. Also, only add "threads" feature
1597 when SCM_USE_PTHREAD_THREADS is true.
1598
1599 * eval.c (scm_makprom): Use scm_make_recursive_mutex instead of
1600 scm_make_rec_mutex, with all the consequences.
1601 (scm_eval_x, scm_eval): Use scm_frame_begin etc instead of
1602 scm_internal_dynamic_wind. Handle dynamic states as second
1603 argument.
1604
1605 * threads.h, threads.c (scm_internal_select): Renamed to
1606 scm_std_select and discouraged old name.
1607 (scm_thread_sleep, scm_thread_usleep): Likewise, as scm_std_sleep
1608 and scm_std_usleep.
1609 (scm_tc16_fair_mutex, scm_tc16_fair_condvar, SCM_MUTEXP,
1610 SCM_FAIR_MUTEX_P, SCM_MUTEX_DATA, SCM_CONDVARP,
1611 SCM_FAIR_CONDVAR_P, SCM_CONDVAR_DATA, SCM_THREADP,
1612 SCM_THREAD_DATA): Removed.
1613 (SCM_I_IS_THREAD, SCM_I_THREAD_DATA): New.
1614 (scm_i_thread): New.
1615 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
1616 Use scm_assert_smob_type.
1617 (scm_c_scm2thread, scm_thread_join, scm_thread_detach,
1618 scm_thread_self, scm_thread_yield, scm_mutex_init,
1619 scm_mutex_destroy, scm_mutex_trylock, scm_mutex_unlock,
1620 scm_rec_mutex_init, scm_rec_mutex_destroy, scm_make_rec_mutex,
1621 scm_rec_mutex_free, scm_rec_mutex_lock, scm_rec_mutex_trylock,
1622 scm_cond_init, scm_cond_destroy, scm_cond_wait,
1623 scm_cond_timedwait, scm_cond_signal, scm_cond_broadcast,
1624 scm_key_create, scm_key_delete, scm_setspecific, scm_getspecific,
1625 scm_thread_select): Removed. Replaced with scm_i_pthread
1626 functions as appropriate.
1627 (scm_in_guile, scm_outside_guile): Removed.
1628 (scm_t_guile_ticket, scm_leave_guile, scm_enter_guile): Return and
1629 take a ticket.
1630 (scm_with_guile, scm_without_guile, scm_i_with_guile_and_parent):
1631 New.
1632 (scm_i_frame_single_threaded): New.
1633 (scm_init_threads_default_dynamic_state): New.
1634 (scm_i_create_thread): Removed.
1635 (scm_make_fair_mutex, scm_make_fair_condition_variable): Removed.
1636 (scm_make_recursive_mutex): New.
1637 (scm_frame_critical_section): New.
1638 (SCM_CURRENT_THREAD, SCM_I_CURRENT_THREAD): Renamed former to
1639 latter, changed all uses.
1640 (scm_i_dynwinds, scm_i_setdynwinds, scm_i_last_debug_frame,
1641 scm_i_set_last_debug_frame): New, use them instead of scm_root
1642 stuff.
1643 (SCM_THREAD_LOCAL_DATA, SCM_SET_THREAD_LOCAL_DATA,
1644 scm_i_root_state_key,m scm_i_set_thread_data): Removed.
1645 (scm_pthread_mutex_lock, scm_frame_pthread_mutex_lock,
1646 scm_pthread_cond_wait, scm_pthread_cond_timedwait).
1647 (remqueue): Allow the removal of already removed cells. Indicate
1648 whether a real removal has happened.
1649 (scm_thread): Removed, replaced with scm_i_thread.
1650 (make_thread, init_thread_creatant): Removed.
1651 (cur_thread): Removed.
1652 (block_self, unblock_from_queue): New.
1653 (block, timed_block, unblock): Removed.
1654 (guilify_self_1, guilify_self_2, do_thread_exit,
1655 init_thread_key_once, init_thread_key,
1656 scm_i_init_thread_for_guile, get_thread_stack_base,
1657 scm_init_guile): New initialisation method.
1658 (scm_call_with_new_thread, scm_spawn_thread): Use it to simplify
1659 thread creation.
1660 (fair_mutex, fat_mutex, etc, fair_condvar, fat_condvar): Renamed
1661 "fair" to fat and implemented new semantics, including reliable
1662 interruption.
1663 (all_threads): Now a pointer to a scm_i_thread, not a SCM.
1664 (scm_threads_mark_stacks): Explicitly mark handle.
1665 (scm_std_select): Allow interruption by also selecting on the
1666 sleep_pipe.
1667 (scm_i_thread_put_to_sleep): Handle recursive requests for
1668 single-threadedness.
1669 (scm_threads_prehistory, scm_init_threads): Put current thread
1670 into guile mode via guileify_self_1 and guileify_self_2,
1671 respectively.
1672
1673 * fluid.h (SCM_FLUIDP): Deprecated.
1674
1675 * coop-threads.c: Removed.
1676
1677 * continuations.h, continuations.c (scm_with_continuation_barrier,
1678 scm_c_with_continuation_barrier, scm_i_with_continuation_barrier):
1679 New.
1680
1681 * async.h, async.c (scm_i_setup_sleep, scm_i_reset_sleep): New.
1682 (async_mutex): New.
1683 (scm_async_click): Protected with async_mutex. Do not deal with
1684 signal_asyncs, which are gone. Set cdr of handled async cell to
1685 #f.
1686 (scm_i_queue_async_cell): Protected with async_mutex. Interrupt
1687 current sleep.
1688 (scm_system_async_mark_for_thread): Do not use scm_current_thread
1689 since that might not work during early initialization.
1690
1691 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS, SCM_REDEFER_INTS,
1692 SCM_REALLOW_INTS): Deprecated by moving into deprecated.h and
1693 deprecated.c. Replaced all uses with SCM_CRITICAL_SECTION_START
1694 and SCM_CRITICAL_SECTION_END.
1695 (SCM_ENTER_A_SECTION, SCM_EXIT_A_SECTION): Removed. Replaced with
1696 SCM_CRITICAL_SECTION_START/END.
1697
1698 * Makefile.am (modinclude_HEADER): Removed threads-plugin.h.
1699 (libguile_la_SOURCES): Added null-threads.c
1700 (EXTRA_libguile_la_SOURCES): Removed pthread-threads.c and
1701 threads-plugin.c.
1702 * pthread-threads.c, threads-plugin.c, threads-plugin.h: Removed.
1703
1704 * root.h, root.c (scm_tc16_root, SCM_ROOTP, SCM_ROOT_STATE,
1705 scm_root_state, scm_stack_base, scm_save_regs_gc_mark,
1706 scm_errjmp_bad, scm_rootcont, scm_dynwinds, scm_progargs,
1707 scm_last_debug_frame, scm_exitval, scm_cur_inp, scm_outp,
1708 scm_cur_err, scm_cur_loadp, scm_root, scm_set_root,
1709 scm_make_root): Removed or deprecated. Replaced with references
1710 to the current thread, dynamic state, continuation barrier, or
1711 some fluid, as appropriate.
1712 (root_mark, root_print): Removed.
1713 (scm_internal_cwdr): Reimplemented guts with
1714 scm_frame_current_dynamic_state and
1715 scm_i_with_continuation_barrier.
1716 (scm_dynamic_root): Return current continuation barrier.
1717
1718
ad3d5a65
MV
17192005-02-28 Marius Vollmer <mvo@zagadka.de>
1720
1721 * socket.c (scm_setsockopt): Handle IP_ADD_MEMBERSHIP and
1722 IP_DROP_MEMBERSHIP options. Also, reorganized the code a bit for
1723 cleanliness.
1724 (scm_init_socket): Define IP_ADD_MEMBERSHIP and
1725 IP_DROP_MEMBERSHIP.
1726 Thanks to Greg Troxel!
1727
73a90115
MD
17282005-02-27 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1729
1730 * gh.h: Bugfix: Include <libguile.h> outside of the extern "C"
1731 block.
1732
5d2cb3ab
MV
17332005-02-25 Marius Vollmer <mvo@zagadka.de>
1734
1735 * hashtab.c (scm_i_rehash): Remove elements from old bucket vector
1736 so that no two weak alist vectors share a spine.
1737 (scm_hash_fn_create_handle_x): Deal with a possible rehashing
1738 during GC before inserting the new alist cell.
1739
838c4126
MV
17402005-02-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1741
1742 * hashtab.c (scm_i_rehash): Cope with the case that a GC modifies
1743 the hashtable.
1744 (scm_hash_fn_create_handle_x): Likewise.
1745 * vectors.h (SCM_I_SET_WVECT_TYPE): New, for use in scm_i_rehash.
1746
29fed193
MD
17472005-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1748
1749 * unif.c (prototype_to_type): Bugfix: Don't compare prototype to
1750 the prototypical examples mentioned in the old reference manual.
1751 Instead keep the old semantics of dispatching on type. (Yes, this
1752 is extremely ugly, but the whole point of keeping the deprecated
1753 interface is not to break old code.)
1754
9cc49060
MD
17552005-02-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1756
1757 * deprecated.h (SCM_ARRAY_DIMS): Rename scm_i_attay_dims -->
1758 scm_i_array_dims.
1759
8447f463
KR
17602005-01-28 Kevin Ryde <user42@zip.com.au>
1761
1762 * numbers.c (scm_ash): Rewrite using shifts, much faster than
1763 integer-expt and multiply/divide. Inexacts and fractions no longer
1764 supported (they happened to work before for left shifts, but not
1765 right). Don't really need inexacts and fractions, since ash is
1766 documented as a "bitwise operation", and all the rest of those only
1767 take exact integers.
1768
1367aa5e
HWN
17692005-01-27 Han-Wen Nienhuys <hanwen@xs4all.nl>
1770
856fca7e
HWN
1771 * gc-card.c (scm_i_card_statistics): map structs, closures and
1772 subrs to one tag.
1773
1367aa5e 1774 * gc.c (s_scm_gc_live_object_stats): return alist, not hashtable.
856fca7e 1775 (tag_table_to_type_alist): ignore unknown types.
1367aa5e
HWN
1776
1777 * gc-segment.c (scm_i_all_segments_statistics): new function.
1778 (scm_i_heap_segment_statistics): new function
1779
1780 * gc.c (s_scm_gc_live_object_stats): new GUILE callable: return
1781 statistics on the number of live objects of each type.
1782
1783 * gc-card.c (scm_i_tag_name): new function.
1784 (scm_i_card_statistics): new function.
1785
333db3b8
KR
17862005-01-24 Kevin Ryde <user42@zip.com.au>
1787
1788 * posix.c (scm_setlocale): Force errno=EINVAL for an error, since
1789 POSIX and C99 don't document errno being set. Reported by Bruno
1790 Haible.
1791 (scm_flock): Update docstring from manual.
1792
8447f463
KR
1793 * random.c (scm_i_init_rstate): Compare w to -1 not 0xffffffffUL, now
1794 that it's an scm_t_int32. Otherwise gcc 3.4 says it's always false on
1795 a 64-bit system.
1796
1797 * scmsigs.c (scm_sigaction_for_thread): Use scm_to_long for
1798 sa_handler, needs to be a long on 64-bit systems where int is only 32
1799 bits.
1800
88f59e53
MV
18012005-01-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1802
0eeb2611
MV
1803 * environments.c (obarray_enter, obarray_replace): Call
1804 SCM_HASHTABLE_INCREMENT when adding a new entry.
1805
88f59e53
MV
1806 * objects.c: Include goops.h for the scm_class_of prototype.
1807
1808 * hashtab.c (hashtable_size, HASHTABLE_SIZE_N): Restrict hashtable
1809 sizes to be smaller than the maximum lengths of vectors.
1810
219b2868
MV
18112005-01-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1812
1813 * ports.c, smob.c: Include "libguile/goops.h".
1814
1815 * objects.h, objects.c, goops.c, goops.h (scm_class_boolean,
1816 scm_class_char, scm_class_pair, scm_class_procedure,
1817 scm_class_string, scm_class_symbol,
1818 scm_class_procedure_with_setter, scm_class_primitive_generic,
1819 scm_class_vector, scm_class_null, scm_class_real,
1820 scm_class_complex, scm_class_integer, scm_class_fraction,
1821 scm_class_unknown, scm_port_class, scm_smob_class,
1822 scm_no_applicable_method, scm_class_of): Moved from objects to
1823 goops since they are only useable once goops has been loaded.
1824 (scm_classes_initialized): Removed.
1825 (scm_class_of): Do not check it.
1826 (create_standard_classes): Do not set it.
1827
009c6b9c
MV
18282005-01-17 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1829
50472546
MV
1830 * objects.h, objects.c (scm_classes_initialized): New.
1831 (scm_class_of): Signal error when scm_classes_initialized is zero.
1832 * goops.c (create_standard_classes): Set scm_classes_initialized
1833 to one.
1834
009c6b9c
MV
1835 * random.c (scm_random_solid_sphere_x): Use
1836 scm_c_generalized_vector_length instead of
1837 scm_uniform_vector_length.
1838
7719cbe9
MV
18392005-01-16 Marius Vollmer <mvo@zagadka.de>
1840
1841 * script.c (scm_compile_shell_switches): Removed debugging output.
1842
1ec44fed
KR
18432005-01-15 Kevin Ryde <user42@zip.com.au>
1844
1845 * numbers.c (scm_logtest, scm_logbit_p, scm_integer_expt): Update
1846 docstrings from manual.
1847 * random.c (scm_random_solid_sphere_x): Update docstring from manual.
1848
6e4cd850
MV
18492005-01-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1850
0b5a0521
MV
1851 * random.c: Don't check for definedness of SCM_HAVE_T_INT64, check
1852 its value.
1853
1854 Implement u64 and s64 uniform numeric vectors with bignums when
1855 scm_t_uint64 and scm_t_int64 are not available.
1856
1857 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_take_u64vector,
1858 scm_array_handle_u64_elements,
1859 scm_array_handle_u64_writable_elements, scm_u64vector_elements,
1860 scm_u64vector_writable_elements): Do not define when scm_t_uint64
1861 is not available.
1862 (scm_take_s64vector, scm_array_handle_s64_elements,
1863 scm_array_handle_s64_writable_elements, scm_s64vector_elements,
1864 scm_s64vector_writable_elements): Likewise for scm_t_int64.
1865 (uvec_sizes, uvec_print, uvec_equalp): Use SCM bignums when
1866 scm_t_int64/scm_t_uint64 are not available.
1867 (uvec_mark): New, to mark the bignums.
1868 (alloc_uvec): Initialize bignums.
1869 (uvec_fast_ref): Return bignums directly.
1870 (scm_uint64_min, scm_uint64_max, scm_int64_min, scm_int64_max,
1871 assert_exact_integer): New.
1872 (uvec_fast_set): Use them to validate the bignums.
1873 (scm_init_srfi_4): Set mark function of smob when needed.
1874 Initialize scm_uint64_min, scm_uint64_max, scm_int64_min,
1875 scm_int64_max.
1876
6e4cd850
MV
1877 Recognize 1.4 -e syntax.
1878
1879 * script.c (sym_at, sym_atat, sym_main, all_symbols): New.
1880 (scm_compile_shell_switches): Use them to recognize and convert
1881 1.4 "-e" syntax.
1882
3b698afe
MV
18832005-01-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1884
1885 * deprecated.h, deprecated.c, strings.h, strings.c: Turn all
1886 deprecated features that once were macros but are now functions
1887 back into macros.
1888
d6dc83a9
MV
18892005-01-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1890
49086691
MV
1891 * eval.c, debug.h (SCM_WARN_DEPRECATED): New debug option.
1892 * deprecation.c (scm_issue_deprecation_warning,
1893 scm_c_issue_deprecation_warning_fmt): Use it.
1894 (mode): Removed.
1895 (print_summary): New.
1896 (scm_init_deprecation): Initialize SCM_WARN_DEPRECATED instead of
1897 mode.
1898
d6dc83a9
MV
1899 Deprecated SCM_ARRAY* macros.
1900
1901 * unif.h, unif.c, ramap.c, vectors.c, srfi-4.c, srfi-4.i.c
1902 (SCM_ARRAYP, SCM_I_ARRAYP): Renamed former to latter internal
1903 version. Changed all uses.
1904 (scm_tc16_array, scm_i_tc16_array,
1905 scm_tc16_enclosed_array, scm_i_tc16_enclosed_array,
1906 SCM_ARRAY_FLAG_CONTIGUOUS, SCM_I_ARRAY_FLAG_CONTIGUOUS,
1907 SCM_ENCLOSE_ARRAYP, SCM_I_ENCLOSE_ARRAYP,
1908 SCM_ARRAY_NDIM, SCM_I_ARRAY_NDIM,
1909 SCM_ARRAY_CONTP, SCM_I_ARRAY_CONTP,
1910 SCM_ARRAY_MEM, SCM_I_ARRAY_MEM,
1911 SCM_ARRAY_V, SCM_I_ARRAY_V,
1912 SCM_ARRAY_BASE, SCM_I_ARRAY_BASE,
1913 SCM_ARRAY_DIMS, SCM_I_ARRAY_DIMS,
1914 scm_t_array, scm_i_t_array): Likewise.
1915 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
1916 Moved from unif.h to unif.c.
1917 (scm_c_array_rank): New.
1918 (scm_array_rank): Reimplement using it.
1919
1920 * deprecated.h, deprecated.c (SCM_ARRAYP, SCM_ARRAY_NDIM,
1921 SCM_ARRAY_CONTP, SCM_ARRAY_MEM, SCM_ARRAY_V, SCM_ARRAY_BASE,
1922 SCM_ARRAY_DIMS, scm_t_array): New deprecated versions.
1923
dc91d8de
MV
19242005-01-11 Marius Vollmer <mvo@zagadka.de>
1925
1926 * ramap.c: Replace uses of scm_make_ra with scm_i_make_ra.
1927 (GVREF, GVSET): New abbreviations. Use them everywhere instead of
1928 scm_c_generalized_vector_ref and scm_cvref, and
1929 scm_c_generalized_vector_set_x, respectively.
1930 (RVREF, IVDEP, BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
1931 UNARY_ELTS_CODE, UNARY_PAIR_ELTS_CODE): Removed since unused.
1932
1933 * unif.h, unif.c (indices_to_pos, scm_array_handle_pos): Renamed
1934 former to latter and made public. Changed all uses.
1935 (scm_i_make_ra): Made public, changed tag param to enclosed flag.
1936 (scm_make_ra): Deprecated, changed all uses to scm_i_make_ra.
1937 (scm_i_shap2ra): New internal version of scm_shap2ra.
1938 (scm_shap2ra): Deprecated, changed all uses to scm_i_shap2ra.
1939 (scm_i_ra_set_contp): New internal version of scm_ra_set_contp.
1940 (scm_ra_set_contp): Deprecated, changed all uses to
1941 scm_i_ra_set_contp.
1942 (scm_cvref, scm_aind, scm_raprin1): Deprecated.
1943
66d33784
MV
19442005-01-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1945
b06f099d
MV
1946 * eval.c (scm_eval): Added example to docstring. Thanks to Issac
1947 Trotts!
1948
5d35ad81
MV
1949 * unif.c (scm_list_to_typed_array): Allow the specification of the
1950 upper bound as well. This is needed for empty arrays.
1951 (l2ra): Give needed number of elements in error message.
1952 (scm_i_print_array): Print length information for arrays that need
1953 it.
1954 (scm_i_read_array): Parse it.
1955
66d33784
MV
1956 * deprecated.h, deprecated.c (SCM_CHARS, SCM_UCHARS, SCM_LENGTH,
1957 scm_i_object_chars, scm_i_object_length): Brought back from the
1958 dead.
1959
d7d7d401
MV
19602005-01-10 Marius Vollmer <mvo@zagadka.de>
1961
74c58fce
MV
1962 * ramap.c: Replaced single-index uses of scm_array_set_x with
1963 scm_c_generalized_vector_set_x.
1964
d7d7d401
MV
1965 * unif.c (scm_array_rank, scm_array_dimensions,
1966 scm_shared_array_offset, scm_shared_array_increments,
1967 scm_array_ref, scm_array_set_x): Use scm_t_array_handle operations
1968 to simplify code and make it more general.
1969 (scm_shared_array_root): Work with all kinds of arrays, including
1970 naked vectors.
1971 (indices_to_pos): New.
74c58fce
MV
1972 (scm_make_shared_array): Use it instead of scm_aind; use handle
1973 for oldra.
1974
4475d3fe
KR
19752005-01-10 Kevin Ryde <user42@zip.com.au>
1976
1977 * posix.c (scm_mkstemp): Update docstring from manual.
1978
d3ddc95e
KR
1979 * stime.c (scm_mktime): Missing default errno=EINVAL from prev change.
1980
8c8491f5
MV
19812005-01-09 Marius Vollmer <mvo@zagadka.de>
1982
b89ecc6f
MV
1983 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_i_uniform_vector_ref_proc,
1984 scm_i_uniform_vector_set_proc): New.
1985 (u8ref, u8set, s8ref, s8set, etc): New.
1986 (uvec_reffers, uvec_setters): New.
1987 (uvec_to_list): Use generic scm_array_handle_ref instead of
1988 uvec_fast_ref since scm_array_handle_ref should be faster now.
8cb01d9f
MV
1989 (coerce_to_uvec, scm_c_uniform_vector_ref,
1990 scm_c_uniform_vector_set_x): Likewise.
b89ecc6f
MV
1991
1992 * unif.h, unif.c, inline.h (scm_i_t_array_ref, scm_i_t_array_set):
1993 New.
1994 (scm_t_array_handle): Added ref, set, elements and
1995 writable_elements for fast inline operation of
1996 scm_array_handle_ref and scm_array_handle_set.
1997 (scm_array_handle_ref, scm_array_handle_set): Moved to inline.h
1998 and replaced with inline code that simply calls the ref/set
1999 members of the handle.
2000 (enclosed_ref, vector_ref, string_ref, bitvector_ref, memoize_ref,
2001 enclosed_set, vector_set, string_set, bitvector_set, memoize_set):
2002 New.
2003 (scm_array_handle_get): Initialize ref/set fields to memoize_ref
2004 and memoize_set.
2005 (scm_bitvector_fill_x, scm_bitvector_to_list, scm_bit_count,
2006 scm_bit_position, scm_bit_set_star_x, scm_bit_count_star,
2007 scm_bit_invert_x): Correctly multiply index with increment in the
2008 general case.
2009
8c8491f5
MV
2010 * unif.c (scm_array_handle_set): Correctly execute only one
2011 alternative. D'Oh!
2012 (scm_list_to_typed_array, l2ra): Use scm_t_array_handle to fill
2013 the array; this covers all cases with much simpler code.
2014
2015 * srfi-4.c (scm_uniform_element_size): Deprecated implementation
2016 as well.
2017
cd5d55c7
MV
20182005-01-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2019
2020 * srfi-4.c (uvec_type): New.
2021 (uvec_to_list, uvec_ref, uvec_set_x, scm_c_uniform_vector_ref,
2022 scm_c_uniform_vector_x): Use it to get concrete type.
2023
2024 * unif.h (scm_t_array_dim): Changed type of members to ssize_t, to
2025 fit the docs.
2026
2027 * unif.c (ra2l): Handle zero rank arrays.
2028 (scm_i_print_array): Print zero rank arrays specially.
2029 (tag_to_type): Return #t for an empty tag, not the empty symbol.
2030 (scm_i_read_array): Allow zero rank arrays.
2031
a4aad74e
MV
20322005-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2033
2034 * hashtab.h, hashtab.c (SCM_HASHTAB_BUCKET_LOC): Removed.
2035 (scan_weak_hashtables): Rewrote its use with SCM_HASHTAB_BUCKET
2036 and SCM_SET_HASHTAB_BUCKET.
2037
2038 * print.h, print.c (scm_print_state, SCM_PRINT_STATE_LAYOUT):
2039 Removed ref_stack field.
2040 (PSTATE_STACK_REF, PSTATE_STACK_SET): New, for accessing the stack
2041 of a print state. Use them everywhere instead of ref_stack.
2042
3a40d5e1
MV
2043 * srfi-4.h (scm_uniform_element_size): Deprecated for real.
2044
a4aad74e
MV
2045 * srfi-4.c: Include deprecation.h.
2046
2047 * vectors.h, vectors.c, unif.h, unif.c, deprecated.h,
2048 deprecated.c, eq.c
2049 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Removed.
2050 (scm_vector_elements, scm_vector_writable_elements,
2051 scm_generalized_vector_get_handle): Moved to vectors.[hc] from
2052 unif.[hc].
2053 (SCM_SIMPLE_VECTOR_LOC): Removed.
2054 (SCM_VECTOR_MAX_LENGTH, SCM_VECTOR_LENGTH, SCM_VELTS,
2055 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET,
2056 scm_vector_equal_p): Moved from vectors.[hc] to deprecated.[hc].
2057 (scm_vector_equal_p, scm_i_vector_equal_p): Renamed former to
2058 latter. Changed use in eq.c.
2059
f01fe441
MV
20602005-01-07 Marius Vollmer <mvo@zagadka.de>
2061
2062 Make the uniform vector routines also deal with one dimensional
2063 arrays.
2064
2065 * srfi-4.c (SCM_IS_UVEC): New, use it instead of
2066 SCM_SMOB_PREDICATE in this file.
2067 (is_uvec): Also recognize one-dimensional uniform numeric arrays
2068 of the right type.
2069 (scm_is_uniform_vector): Likewise.
2070 (uvec_fast_ref): Made BASE param const.
2071 (uvec_writable_elements, uvec_elements): New.
2072 (uvec_to_list, uvec_ref, uvec_set_x, uvec_length,
2073 scm_c_uniform_vector_length, scm_c_uniform_vector_ref,
2074 scm_c_uniform_set_x): Use them to also deal with one-dimensional
2075 arrays.
2076 (scm_uniform_vector_ref, scm_uniform_vector_set_x): Deprecate old
2077 argument convention.
2078 (scm_uniform_vector_to_list): Let uvec_to_list do all the
2079 checking.
2080 (scm_uniform_vector_length): Use uvec_length.
2081
2aaf5726
MV
20822005-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2083
2084 * srfi-4.h, srfi-4.c (scm_c_uniform_vector_element_size,
2085 scm_c_uniform_vector_size): Removed.
2086 (scm_array_handle_uniform_element_size): New.
2087
2088
2089 * unif.h (scm_array_handle_ref, scm_array_handle_set): Changed
2090 type of POS parameter to be signed, positions can be negative.
2091 (scm_array_handle_release): New, changed all uses of
2092 scm_t_array_handle to properly call it.
2093 (scm_vector_get_handle, scm_generalized_vector_get_handle):
2094 Renamed former to latter, changed all uses.
2095
34ae52fc
MV
20962005-01-05 Marius Vollmer <mvo@zagadka.de>
2097
2098 Updated bitvector routines to also use scm_t_array_handles.
2099
2100 * unif.h (scm_bitvector_elements,
2101 scm_bitvector_writable_elements): Use a scm_t_array_handle and
2102 deliver offset, length and increment to caller. Changed all uses.
2103 (scm_bitvector_release_elements,
2104 scm_frame_bitvector_release_elements,
2105 scm_bitvector_release_writable_elements,
2106 scm_frame_bitvector_release_writable_elements): Removed.
2107 (scm_array_handle_bit_elements,
2108 scm_array_handle_bit_writable_elements,
2109 scm_array_handle_bit_elements_offset): New.
2110 (scm_make_typed_array): The special value for non-initialized
2111 arrays is now SCM_UNSPECIFIED. The old special value SCM_BOOL_F
2112 was a valid value to fill bitvectors with, so it can't really be
2113 specialed out.
2114
c4cb7628
KR
21152005-01-04 Kevin Ryde <user42@zip.com.au>
2116
2117 * stime.c (scm_strftime): Free t.tm_zone produced by bdtime2c.
2118 Reported by Bill Schottstaedt.
2119
0356881d
MV
21202005-01-02 Marius Vollmer <mvo@zagadka.de>
2121
2122 * sort.c (quicksort): Added INC parameter for non-contigous
2123 vectors.
2124 (quicksort1): New, for contigous vectors. Both functions are
2125 generated from the same code by including "quicksort.i.c".
2126 (scm_restricted_vector_sort_x): Call one of quicksort and
2127 quicksort1, depending on increment of vector.
2128 (scm_sort): Simply call scm_sort_x on a copy of the list or
2129 vector.
2130 (scm_merge_vector_x, scm_merge_vector_step): Changed indices to
2131 size_t, added inc parameter.
2132 (scm_stable_sort_x): Allocate temporary storage as Scheme vector
2133 so that it doesn't leak.
2134 (scm_stable_sort): Simply call scm_stable_sort_x on a copy of the
2135 list or vector.
2136
2137 * ramap.c (scm_array_map_x): Do not try to convert fill value
2138 before filling, any necessary conversion is done while storing.
2139
2140 * gc-card.c (scm_i_sweep_card): Call scm_i_vector_free instead of
2141 doing it inline.
2142
2143 * hashtab.c, hashtab.h (SCM_HASHTABLE_BUCKETS): Removed.
2144 (SCM_HASHTABLE_BUCKET, SCM_HASHTABLE_BUCKET_LOC): New. Replaced
2145 all uses of SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
2146
2147 * tags.h, weaks.c, vports.c, hashtab.c, convert.c, sort.c,
2148 convert.c, convert.h, convert.i.c, deprecated.c, environments.c,
2149 eval.c, filesys.c, fluids.c, gc-mark.c, gh.h, gh_data.c, goops.c,
2150 hash.c, init.c, libguile_la-arrays.loT, modules.c, net_db.c,
2151 objects.c, ports.c, posix.c, print.c, random.c, read.c,
2152 regex-posix.c, scmsigs.c, socket.c, stime.c, symbols.c: Use new
2153 vector elements API or simple vector API, as appropriate. Removed
2154 SCM_HAVE_ARRAYS ifdefery. Replaced all uses of
2155 SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
2156
2157 * srfi-4.h, srfi-4.c,
2158 srfi-4.i.c (scm_array_handle_uniform_elements,
2159 scm_array_handle_uniform_writable_elements,
2160 scm_uniform_vector_elements,
2161 scm_uniform_vector_writable_elements):
2162 (scm_<foo>vector_elements, scm_<foo>vector_writable_elements): Use
2163 scm_t_array_handle, deliver length and increment.
2164 (scm_array_handle_<foo>_elements,
2165 scm_array_handle_<foo>_writable_elements): New.
2166
2167 * gen-scmconfig.h.in (SCM_I_GSC_HAVE_ARRAYS): Removed.
2168 * gen-scmconfig.c: Hard code SCM_HAVE_ARRAYS to "1".
2169
2170 * unif.h, unif.c (scm_t_array_handle, scm_array_get_handle,
2171 scm_array_handle_rank, scm_array_handle_dims, scm_array_handle_ref
2172 scm_array_handle_set, scm_array_handle_elements
2173 scm_array_handle_writable_elements, scm_vector_get_handle): New.
2174 (scm_make_uve, scm_array_prototype, scm_list_to_uniform_array,
2175 scm_dimensions_to_uniform_array): Deprecated for real.
2176 (scm_array_p, scm_i_array_p): Use latter for SCM_DEFINE since
2177 snarfing wont allow a mismatch between C and Scheme arglists.
2178 (scm_make_shared_array, scm_enclose_array): Correctly use
2179 scm_c_generalized_vector_length instead of
2180 scm_uniform_vector_length.
2181
2182 * validate.h (SCM_VALIDATE_VECTOR,
2183 SCM_VALIDATE_VECTOR_OR_DVECTOR): use scm_is_simple_vector instead
2184 of SCM_VECTORP.
2185
2186 * weaks.h, weaks.c: Use new internal weak vector API from
2187 vectors.h.
2188
2189 * Makefile.am (libguile_la_SOURCES, DOT_X_FILES, DOT_DOC_FILES,
2190 EXTRA_libguile_la_SOURCES): Changed ramap.c and unif.c from being
2191 'extra' to being regular sources.
2192 (noinst_HEADERS): Added quicksort.i.c.
2193 * quicksort.i.c: New file.
2194
2195 * vectors.h, vector.c (SCM_VECTORP, SCM_VECTOR_LENGTH, SCM_VELTS,
2196 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET): Deprecated
2197 and reimplemented. Replaced all uses with scm_vector_elements,
2198 scm_vector_writable_elements, or SCM_SIMPLE_VECTOR_*, as
2199 appropriate.
2200 (scm_is_simple_vector, SCM_SIMPLE_VECTOR_LENGTH,
2201 SCM_SIMPLE_VECTOR_REF, SCM_SIMPLE_VECTOR_SET,
2202 SCM_SIMPLE_VECTOR_LOC): New.
2203 (SCM_VECTOR_BASE, SCM_SET_VECTOR_BASE, SCM_VECTOR_MAX_LENGTH,
2204 SCM_MAKE_VECTOR_TAG, SCM_SET_VECTOR_LENGTH,
2205 SCM_VELTS_AS_STACKITEMS, SCM_SETVELTS, SCM_GC_WRITABLE_VELTS):
2206 Removed.
2207 (scm_vector_copy): New.
2208 (scm_vector_elements, scm_vector_writable_elements): Use
2209 scm_t_array_handle, deliver length and increment. Moved to
2210 unif.h. Changed all uses.
2211 (scm_vector_release_elements,
2212 scm_vector_release_writable_elements,
2213 (scm_frame_vector_release_elements,
2214 scm_frame_vector_release_writable_elements): Removed.
2215 (SCM_I_IS_VECTOR, SCM_I_VECTOR_ELTS, SCM_I_VECTOR_WELTS,
2216 SCM_I_VECTOR_LENGTH, scm_i_vector_free): New internal API.
2217 (SCM_I_WVECTP SCM_I_WVECT_LENGTH SCM_I_WVECT_VELTS
2218 SCM_I_WVECT_GC_WVELTS SCM_I_WVECT_TYPE SCM_I_WVECT_GC_CHAIN
2219 SCM_I_SET_WVECT_GC_CHAIN, scm_i_allocate_weak_vector): New, for
2220 weak vectors.
2221
0336d18b
MV
22222004-12-29 Marius Vollmer <mvo@zagadka.de>
2223
2224 No longer use creators to specify the type of an array. Creators
2225 expose the fact that arrays are wrapped around vectors, but that
2226 might change.
2227
2228 * srfi-4.h (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector,
2229 scm_i_proc_make_u16vector, scm_i_proc_make_s16vector,
2230 scm_i_proc_make_u32vector, scm_i_proc_make_s32vector,
2231 scm_i_proc_make_u64vector, scm_i_proc_make_s64vector,
2232 scm_i_proc_make_f32vector, scm_i_proc_make_f64vector,
2233 scm_i_proc_make_c32vector, scm_i_proc_make_c64vector,
2234 uvec_proc_vars): Removed.
2235 (scm_i_generalized_vector_creator): Removed.
2236 (scm_i_generalized_vector_type): New.
2237
2238 * unif.h, unif.c (scm_typed_array_p, scm_make_array,
2239 scm_make_typed_array, scm_array_type, scm_list_to_array,
2240 scm_list_to_typed_array, scm_is_array, scm_is_typed_array): New.
2241 (scm_array_creator): Removed.
2242 (scm_array_p): Deprecated second PROT argument.
2243 (scm_dimensions_to_uniform_array, scm_list_to_uniform_array):
2244 Deprecated, reimplemented in terms of scm_make_typed_array and
2245 scm_list_to_typed_array.
2246 (scm_i_proc_make_vector, scm_i_proc_make_string,
2247 scm_i_proc_make_bitvector): Removed.
2248 (type_creator_table, init_type_creator_table, type_to_creator,
2249 make_typed_vector): New.
2250 (scm_i_convert_old_prototype): Removed.
2251 (prototype_to_type): New.
2252 (scm_make_uve): Deprecated, reimplemented using make_typed_vector.
2253 (scm_array_dimensions): Use scm_list_1 instead of scm_cons for
2254 minor added clarity.
2255 (scm_make_shared_array, scm_ra2contig): Use make_typed_vector
2256 instead of scm_make_uve.
2257 (tag_creator_table, scm_i_tag_to_creator): Removed.
2258 (tag_to_type): New.
2259 (scm_i_read_array): Use scm_list_to_typed_array instead of
2260 scm_list_to_uniform_array.
2261
277e8472
MV
22622004-12-27 Marius Vollmer <mvo@zagadka.de>
2263
32b26202
MV
2264 * unif.h, unif.c (scm_bitvector_elements): Made return value "const".
2265 (scm_bitvector_writable_elements): New.
2266 (scm_bitvector_release, scm_bitvector_release_elements):
2267 Renamed former to latter. Added explicit call to
2268 scm_remember_upto_here_1.
2269 (scm_frame_bitvector_release,
2270 scm_frame_bitvector_release_elements): Renamed former to latter.
2271 (scm_bitvector_release_writable_elements,
2272 scm_bitvector_release_writable_elements): New.
2273 Changed all uses as required by the changes above.
2274
2275 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_uniform_vector_elements,
2276 scm_u8vector_elements, etc): Made return value "const".
2277 (scm_uniform_vector_writable_elements,
2278 scm_u8vector_writable_elements, etc): New.
2279 (scm_uniform_vector_release, scm_uniform_vector_release_elements):
2280 Renamed former to latter. Added explicit call to
2281 scm_remember_upto_here_1.
2282 (scm_frame_uniform_vector_release,
2283 scm_frame_uniform_vector_release_elements): Renamed former to latter.
2284 (scm_uniform_vector_release_writable_elements,
2285 scm_frame_uniform_vector_release_writable_elements): New. Takes
2286 crown of longest identifier yet.
2287 Changed all uses as required by the changes above.
2288
277e8472
MV
2289 * vectors.h, vectors.c (scm_c_vector_set_x): Make return type
2290 void.
2291 (scm_is_vector, scm_vector_p, scm_vector_length,
2292 scm_c_vector_length, scm_vector_ref, scm_c_vector_ref,
2293 scm_vector_set_x, scm_c_vector_set_x, scm_vector_to_list,
2294 scm_vector_move_left_x, scm_vector_move_right_x,
2295 scm_vector_fill_x): handle one-dimensional arrays.
32b26202
MV
2296 (scm_vector_elements, scm_vector_release_elements,
2297 scm_vector_frame_release_elements, scm_vector_writable_elements,
2298 scm_vector_release_writable_elements,
2299 scm_vector_frame_release_writable_elements): New.
2300 (scm_list_to_vector, scm_vector_to_list, scm_vector_fill,
2301 scm_vector_move_left_x, scm_vector_move_right_x): Use them.
277e8472
MV
2302
2303 * ramap.c (scm_ramapc, scm_raeql): Use
2304 scm_c_generalized_vector_length instead of
2305 scm_uniform_vector_length.
2306 (scm_ramap, rafe): Use scm_c_vector_ref instead of SCM_VELTS. use
2307 scm_c_generalized_vector_ref instead of scm_uniform_vector_ref.
2308
49c51610
MV
23092004-12-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2310
2311 * continuations.h, continuations.c (scm_t_contregs): New 'offset'
2312 member for relocating debug frames.
2313 (scm_make_continuation): Set it.
2314
2315 * stacks.c (read_frame, read_frames, scm_make_stack,
2316 scm_last_stack_frame, scm_stack_id): Use the new 'offset' member
2317 of continuations instead of calculating the offset ourselves.
2318 Relocate 'vect' member of scm_t_debug_frame.
2319
3b2ee265
KR
23202004-12-16 Kevin Ryde <user42@zip.com.au>
2321
2322 * ramap.c (scm_array_map_x): Check for at least one source argument.
2323
e120686a
KR
23242004-12-14 Kevin Ryde <user42@zip.com.au>
2325
2326 * srfi-13.c (string-any, string-every): Use a scheme wrapper around
2327 the C code so for the final call to the predicate procedure is a tail
2328 call, per SRFI-13 spec.
2329
680b5237
KR
23302004-12-10 Kevin Ryde <user42@zip.com.au>
2331
2332 * eq.c (scm_eq_p, scm_eqv_p, scm_equal_p): Update docstrings from
2333 recent revision to the reference manual.
2334
2335 * numbers.c (scm_modulo): Amend fixme comment about negative divisor
2336 with "%", C99 says it's well-defined.
2337
2338 * socket.c (scm_from_ipv6): Just use mpz_import. Don't bother trying
2339 to fit scm_from_ulong_long, since that uses mpz_import anyway. Don't
2340 bother trying to fit scm_from_ulong, not really worth the trouble if
2341 addresses are more than 4 bytes usually.
2342
446d320c
KR
23432004-11-30 Kevin Ryde <user42@zip.com.au>
2344
2345 * gc_os_dep.c (NetBSD): Test __m68k__ and __arm__ as well as m68k and
2346 arm32. Reported by Greg Troxel.
2347
f2654760
MV
23482004-11-14 mvo <mvo@zagadka.de>
2349
2350 * unif.c, unif.h (scm_i_cvref): Made non-static for ramap.c.
2351
2352 * Makefile.am (INCLUDES): It is "@LTDLINCL@", not "@LTDLINC@".
2353
d550e35f
MV
23542004-11-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2355
2356 Enclosed arrays are now their own smob. This has been done to
2357 make the code more explicit about them and to prepare for the time
f2654760
MV
2358 when generalized vectors include arbitrary one-dimensional
2359 arrays. (Uptonow, enclosed arrays have been recognized by their
2360 use of an array as their storage 'vector'. When all generalized
2361 vectors are allowed as storage, including one-dimensional arrays,
2362 this will no longer work.)
d550e35f
MV
2363
2364 * unif.h, unif.c: (scm_tc16_enclosed_array, SCM_ENCLOSED_ARRAYP):
2365 New.
2366 (exactly_one_third, singp): Removed.
2367 (scm_array_p, scm_array_dimensions, scm_shared_array_root,
2368 scm_shared_array_offset, scm_shared_array_increments): Handle
2369 enclosed arrays explicitely.
2370 (scm_array_rank): Likewise. Also, do not return zero for
2371 non-arrays, signal an error instead since arrays with rank zero do
2372 exist.
2373 (scm_i_make_ra): New, for specifying the tag of the new array.
2374 (scm_make_enclosed_array): Use it.
2375 (scm_make_ra): Reimplemented in terms of scm_i_make_ra.
2376 (scm_make_shared_array): Use scm_c_generalized_vector_length
2377 instead of scm_uniform_vector_length.
2378 (scm_array_in_bounds_p): Rewritten to be much cleaner.
2379 (scm_i_cvref): New, doing the job of scm_cvref.
2380 (scm_cvref): Use scm_i_cvref.
2381 (scm_array_ref): Do not accept non-arrays when no indices are
2382 given. Use scm_i_cvref to do the actual access.
2383 ("uniform-array-set1"): Do not register.
2384 (scm_array_set_x, scm_uniform_array_read_x,
2385 scm_uniform_array_write): Handle enclosed arrays explicitly.
2386 (ra2l): Use scm_i_cvref instead of scm_uniform_vector_ref to also
2387 handle enclosed arrays.
2388 (scm_array_to_list): Handle enclosed arrays explicitly.
2389 (rapr1): Removed.
2390 (scm_i_print_array_dimension): Use scm_i_cvref to also handle
2391 enclosed arrays.
2392 (scm_i_print_enclosed_array): New.
2393 (tag_proto_table, tag_creator_table): Renamed former to latter.
2394 Added "a" and "b" for strings and bitvectors, resp.
2395 (scm_i_tag_to_prototype, scm_i_tag_to_creator): Renamed former to
2396 latter. Tag "a" is in the table now, no need to handle it as a
2397 legacy tag.
2398 (scm_raprin1): Just call scm_iprin1.
2399 (scm_array_creator, scm_array_prototype): Handle enclosed arrays
2400 explicitly.
2401 (scm_init_unif): Initialize scm_tc16_enclosed_array smob.
2402 Use scm_i_print_array as printer for scm_tc16_array.
2403
2ed34885
MV
24042004-11-10 Marius Vollmer <mvo@zagadka.de>
2405
823086c1
MV
2406 * ramap.c (cind): Changed second arg to be pointer to long instead
2407 of uniform vector.
2408 (scm_ramapc): Allocate index vector with scm_malloc and not as
d550e35f 2409 uniform vector. Wrap it in a frame so that it gets properly freed.
823086c1
MV
2410 (scm_array_index_map_x): Likewise.
2411
2412 * unif.c: Changed all uses of scm_array_prototype to
2413 scm_array_creator. (scm_i_get_old_prototype): Signal error when no
2414 prototype is known.
2415 (scm_uniform_array_read_x, scm_uniform_array_write): Reimplemented
2416 in terms of scm_uniform_vector_read_x and
2417 scm_uniform_vector_write, respectively. Strings and
2418 bitvector support has been dropped.
2419
2ed34885
MV
2420 * srfi-4.h, srfi-4.c: Do not include <libguile.h>, include the
2421 needed files directly. Include config.h, <unistd.h> and <io.h>
2422 when available.
2423 (scm_uniform_vector_read_x, scm_uniform_vector_write): New.
2424
2c72f253
MV
24252004-11-09 Marius Vollmer <mvo@zagadka.de>
2426
2427 * gh_data.c (gh_uniform_vector_length): Properly use
2428 scm_c_uniform_vector_length instead of scm_uniform_vector_length.
2429
3cc0a296
MV
24302004-11-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2431
2432 * srfi-4.h (scm_c_uniform_vector_ref, scm_c_uniform_vector_set_x):
2433 New.
2434 (scm_i_uniform_vector_creator): Removed.
2435 (scm_i_generalized_vector_creator): New.
2436 (scm_uniform_vector_length, scm_uniform_element_size): Do not
2437 handle generalized vectors, only uniform numeric vectors.
2438 (alloc_uvec): Do length check here...
2439 (make_uvec): ...but not here.
2440 (coerce_to_uvec): Use new generalized vector functions to handle
2441 all kinds of vectors in one go.
2442
2443 * tags.h (scm_tc7_bvect): Renamed to scm_tc7_unused7, renaming the
2444 remaining scm_tc7_unused tags to get a neatly ordered list.
2445
2446 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c: Do no
2447 longer handle scm_tc7_bvect bitvectors.
2448
2449 * ramap.c: Use the new generalized vector functions to handle all
2450 vector like things.
2451
2452 * vectors.h, vectors.c (scm_is_vector, scm_c_vector_length,
2453 scm_c_vector_ref, scm_c_vector_set_x, scm_generalized_vector_p,
2454 scm_generalized_vector_length, scm_generalized_vector_ref,
2455 scm_generalized_vector_set_x, scm_generalized_vector_to_list,
2456 scm_is_generalized_vector, scm_c_generalized_vector_length,
2457 scm_c_generalized_vector_ref, scm_c_generalized_vector_set_x):
2458 New.
2459
2460 * unif.h, unif.c (scm_bitvector_p, scm_bitvector,
2461 scm_make_bitvector, scm_bitvector_length, scm_bitvector_ref,
2462 scm_bitvector_set_x, scm_list_to_bitvector, scm_bitvector_to_list,
2463 scm_bitvector_fill_x, scm_is_bitvector, scm_c_make_bitvector,
2464 scm_c_bitvector_length, scm_c_bitvector_ref,
2465 scm_c_bitvector_set_x, scm_bitvector_elements,
2466 scm_bitvector_release, scm_frame_bitvector_release,
2467 scm_tc16_bitvector, bitvector_free, bitvector_print,
2468 bitvector_equalp, count_ones, find_first_one): New.
2469 (scm_bit_count, scm_bit_position, scm_bit_set_star_x,
2470 scm_bit_count_star, scm_bit_invert_x, scm_istr2bve): Rewritten
2471 using the new C API for bitvectors and maybe count_ones or
2472 find_first_one, as appropriate.
2473 (SCM_I_MAX_LENGTH, SCM_BITVECTOR_P, SCM_BITVECTOR_BASE,
2474 SCM_SET_BITVECTOR_BASE, SCM_BITVECTOR_MAX_LENGTH,
2475 SCM_BITVECTOR_LENGTH, SCM_MAKE_BITVECTOR_TAG,
2476 SCM_SET_BITVECTOR_LENGTH): Removed. Replaced all uses with the
2477 new functions from above.
2478 (scm_i_proc_make_vector, scm_i_proc_make_string,
2479 scm_i_proc_make_bitvector): Made non-static for use in
2480 scm_i_generalized_vector_creator.
2481 (scm_make_u1vector): Removed, replaced by scm_make_bitvector.
2482 (scm_make_uve): Validate that the created object is a generalized
2483 vector.
2484 (scm_i_legacy_tag): Removed.
2485 (scm_i_print_array): Do it here.
2486 (scm_raprin1): Only print enclosed arrays.
2487
2488 * Makefile.am (DOT_DOC_FILES): Added srfi-4.doc.
2489
c24d026b
MV
24902004-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2491
1f2328fe
MV
2492 * srfi-4.c (make_uvec): Use SCM_I_SIZE_MAX instead of SIZE_MAX for
2493 added portability.
2494
2495 * chars.c (scm_charnames, scm_charnums): Added "sp" as an alias
2496 for "space". Thanks to Bruce Korb!
2497
c24d026b
MV
2498 * rw.c (scm_read_string_x_partial): Bugfix, apply offset to dest
2499 only after dest has been set. Thanks to Hyper Division!
2500
2501 * gh_data.c (gh_uniform_vector_length): Use
2502 scm_uniform_vector_length instead of SCM_UVECTOR_LENGTH.
2503
d4ea47c8
MV
25042004-11-03 Marius Vollmer <mvo@zagadka.de>
2505
2506 * unif.h (SCM_UVECTOR_BASE, SCM_SET_UVECTOR_BASE,
2507 SCM_UVECTOR_MAXLENGTH, SCM_UVECTOR_LENGTH, SCM_MAKE_UVECTOR_TAG,
2508 SCM_SET_UVECTOR_LENGTH): Removed.
2509
236288e2
MV
25102004-11-02 Marius Vollmer <mvo@zagadka.de>
2511
9a5fa6e9 2512 Mac OS X and OpenBSD compatibility patches from Andreas Vögele.
236288e2
MV
2513 Thanks!
2514
2515 * backtrace.c (scm_display_backtrace_with_highlights): Join the
2516 first and the second line of the SCM_DEFINE macro call, since old
2517 preprocessors cannot handle definitions that are split into two
2518 lines.
2519
2520 * inline.h (scm_cell, scm_double_cell): Don't use C99 variable
2521 declarations.
2522
2523 * pairs.c (scm_i_chase_pairs): Replace scm_t_bits with
2524 scm_t_uint32 to fix the mismatch between the function declaration
2525 and definition.
2526
2527 * sort.c (quicksort): Don't use C99 variable declarations.
2528
2529 * srfi-4.c (uvec_fast_ref): Avoid a compiler warning by returning
2530 SCM_BOOL_F if no type matches.
2531
2532 * threads.c (thread_print): Cast a pointer to size_t when printing
2533 with scm_uintprint.
2534
2535 * unif.c (scm_i_tag_to_prototype): Make sure that "instead" gets
2536 defined.
2537 (scm_array_prototype): Deprecated.
2538
f738b51d
MV
25392004-11-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2540
5d1015ec
MV
2541 * srfi-4.h, srfi-4.c (scm_frame_uniform_vector_release): New.
2542 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use it to get
2543 more efficient access to the u32vector.
2544
034486df
MV
2545 * tags.h (scm_tc7_llvect, scm_tc7_uvect, scm_tc7_fvect,
2546 scm_tc7_dvect, scm_tc7_cvect, scm_tc7_svect, scm_tc7_byvect,
2547 scm_tc7_ivect): Renamed to scm_tc7_unused_1 to scm_tc7_unused_8.
2548
2549 * validate.h (SCM_VALIDATE_VECTOR_OR_DVECTOR): Accept f64vectors
2550 instead of the old-style dvectors.
2551
2552 * gh_data.c: Use new-style uniform arrays in place of old-style
2553 ones.
2554
2555 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c,
2556 ramap.c, unif.c: Do no longer handle old-style uniform vectors.
2557
2558 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use u32vectors
2559 instead of old-sytle uvectors.
2560
2561 * convert.c, convert.i.c: Rewritten completely, using
2562 scm_any_to_u8vector, etc and other new-style uniform vector
2563 functions.
2564
2565 * random.c (scm_random_solid_sphere_x,
2566 scm_random_hollow_sphere_x): Do not validate vector argument, this
2567 is already done elsewhere.
2568
2569 * srfi-4.h, srfi-4.i.c, srfi-4.c (coerce_to_uvec,
2570 scm_any_to_u8vector, etc): New.
2571 (scm_uniform_element_size, scm_uniform_vector_length): Do no
2572 longer handle old-style uniform vectors.
2573
f738b51d
MV
2574 * read.c (scm_lreadr): Bugfix: include the last bit in the
2575 bit vector.
2576
5e9c05a1
MV
25772004-10-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2578
327114a2
MV
2579 * unif.h, unif.c (scm_array_creator): New.
2580 (scm_i_get_old_prototype): New.
2581 (scm_array_prototype): use it to return old-style prototype, never
2582 return creators.
2583 (scm_make_uve): Use scm_call_1 instead of scm_call_2 with a second
2584 arg of SCM_UNDEFINED. The latter is wrong.
2585
5e9c05a1
MV
2586 * unif.h, unif.c (scm_make_u1vector): New, but only temporary.
2587 (make_uve): Removed.
2588 (scm_i_proc_make_vector, scm_i_proc_make_string,
2589 scm_i_proc_make_u1vector): New.
2590 (scm_init_unif): Initialize them.
2591 (scm_i_convert_old_prototype): New.
2592 (scm_make_uve): Use it to get the creator procedure. Removed all
2593 old code that created old-style uniform vectors.
2594 (scm_array_p): Handle generic vectors.
2595 (scm_dimensions_to_uniform_array): Do not fill new array with
2596 prototype when that is a procedure.
2597 (scm_list_to_uniform_array): Also accept a list of lower bounds as
2598 the NDIM argument.
2599 (scm_i_print_array): Print rank for shared or non-zero-origin
2600 vectors.
2601 (tag_proto_table, scm_i_tag_to_prototype, scm_i_read_array): New.
2602 (scm_raprin1): Do not call scm_i_array_print for enclosed arrays,
2603 which I do not understand yet.
2604 (scm_array_prototype): Explicitely handle generic vectors.
327114a2 2605
5e9c05a1
MV
2606 * numbers.c, number.h (scm_i_print_complex, icmplx2str): New.
2607 (iflo2str): Use icmplx2str for complex numbers.
2608
2609 * srfi-4.c, srfi-4.h (scm_i_read_homogenous_vector,
2610 scm_i_uniform_vector_prototype): Removed.
2611 (scm_i_uniform_vector_creator): New.
2612 (SCM_UVEC_C32, scm_c32vector, scm_make_c32vector, etc,
2613 SCM_UVEC_C64, scm_c64vector, scm_make_c64vector, etc): New.
2614 Updated all tables and generic functions to support them.
2615 (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector, etc): New.
2616 (scm_init_srfi_4): Initialize them.
2617
2618 * srfi-4.i.c (scm_take_u8vector, etc): use uvec_sizes instead of
2619 sizeof(CTYPE) as explained in the comment.
2620
2621 * read.c (scm_lreadr): Call scm_i_read_array for all characters
50472546 2622 following '#' that can start an array. Explicitely disambiguate
5e9c05a1
MV
2623 'i' and 'e' between introducing numbers and uniform vectors. Do
2624 not call scm_i_read_homogenous_vector, since that is also handled
2625 by scm_i_read_array now.
2626
f984af07
MV
26272004-10-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2628
2629 First cut at integrating uniform vectors from srfi-4 with the rest
2630 of Guile. This change replaces scm_tc7_byvect with a s8 uniform
2631 vector. The plan is to gradually replace one type after the other
2632 until none is left and then to consider general cleanups and
2633 optimizations.
2634
2635 * srfi-4.h, srfi-4.i.c (scm_u8vector_elements, etc): New.
2636
2637 * srfi-4.h, srfi-4.c (scm_uniform_vector_p,
2638 scm_uniform_vector_ref, scm_uniform_vector_set_x,
2639 scm_uniform_vector_to_list, scm_is_uniform_vector,
2640 scm_c_uniform_vector_lengths, scm_c_uniform_vector_size,
2641 scm_uniform_vector_elements, scm_uniform_vector_element_size,
2642 scm_uniform_vector_release): New.
2643 (scm_i_uniform_vector_prototype, scm_i_uniform_vector_tag): New.
2644 (scm_uniform_element_size, scm_uniform_vector_length): Moved here
2645 from unif.h, unif.c and extended to handle both the old and new
2646 uniform vectors.
2647
2648 * tags.h (scm_tc7_byvect): Commented out.
2649
2650 * unif.h, unif.c (scm_uniform_vector_ref, scm_array_ref): Renamed
2651 the former to the latter.
2652 (scm_uniform_vector_length, scm_uniform_element_size): Moved to
2653 srfi-4.h, srfi-4.c.
2654 (scm_make_uve): Call scm_make_s8vector for #\nul prototype.
2655 (scm_array_p, scm_array_rank, scm_array_dimensions,
2656 scm_transpose_array, scm_enclose_array, scm_array_ref, scm_cvref,
2657 scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
2658 scm_array_to_list, scm_array_prototype): Handle srfi-4 uniform
2659 vectors. Removed code for scm_tc7_byvect.
2660 (scm_dimensions_to_uniform_array): Fill array with 0 when
2661 prototype is #\nul.
2662 (scm_i_print_array_dimension, scm_i_legacy_tag,
2663 scm_i_print_array): New.
2664 (scm_raprin1): Call scm_i_print_array for arrays. Removed code
2665 for scm_tc7_byvect.
2666
2667 * ramap.c (scm_ra_matchp, scm_array_fill_int, racp,
2668 scm_array_index_map_x, raeql_1, scm_array_equal_p): Handle srfi-4
2669 uniform vectors. Removed code for scm_tc7_byvect
2670
2671 * print.c (iprin1): Removed code for scm_tc7_byvect.
2672 * objects.c (scm_class_of): Likewise.
2673 * gc-mark.c (scm_gc_mark_dependencies): Likewise.
2674 * gc-card.c (scm_i_sweep_card): Likewise.
2675 * evalext.c (scm_self_evaluating_p): Likewise.
2676 * eq.c (scm_equal_p): Likewise.
2677
2678 * gh_data.c (gh_chars2byvect): Reimplemented with
2679 scm_make_s8vector.
2680 (gh_scm2chars): Handle s8vectors, removed code for scm_tc7_byvect.
2681
2682 * srfi-4.c (take_uvec): New.
2683 (alloc_uvec): Use it.
2684 * srfi-4.h, srfi-4.i.c (scm_take_u8vector, etc): New.
2685
2686 * random.c (vector_scale, vector_scale_x): Renamed former to the
2687 latter, since it modifies its argument.
2688 (vector_scale_x, vector_sum_squares, scm_random_normal_vector_x):
2689 Do not use scm_universal_vector_length for non-uniform vectors.
2690 Use scm_f64vector_elements to access innards of uniform vectors.
2691
2692 * convert.i.c: Convert srfi-4 style uniform vectors when
2693 requested.
2694 * convert.c (scm_c_scm2chars, scm_c_chars2scm,
2695 scm_c_chars2byvect): Use a s8vector instead of a scm_tc7_byvect.
2696
79d52182
MV
26972004-10-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2698
2699 * numbers.h, numbers.c (scm_i_print_double): New.
2700
2701 * srfi-4.c, srfi-4.h, srfi-4.i.c: New files, initially from
2702 ../srfi/ but heavily modified.
2703 * Makefile.am: Add them in all the right places.
2704 * init.c (scm_init_guile_1): Call scm_init_srfi_4.
2705 * read.c (scm_lreadr): Call scm_i_read_homogenous_vector for '#f',
2706 '#u', and '#s'.
2707
2708 * read.h, read.c (scm_i_input_error): Renamed from scm_input_error
2709 and made non-static. Changed all uses.
2710
6191ccec
MV
27112004-10-22 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2712
e64e80b0
MV
2713 * variable.c, threads.c, struct.c, stackchk.c, smob.c, root.c,
2714 print.c, ports.c, mallocs.c, hooks.c, hashtab.c, fports.c,
2715 guardians.c, filesys.c, coop-pthreads.c, continuations.c: Use
2716 scm_uintprint to print unsigned integers, raw heap words, and
2717 adresses, using a cast to scm_t_bits to turn pointers into
2718 integers.
2719
2720 * unif.c: Include "libguile/print.h".
2721
c90ac3a8
MV
2722 * numbers.h, numbers.c (SCM_T_INTBUFLEN): Increased to cover
2723 scm_t_intmax values.
2724 (scm_uint2str): New, for scm_t_uintmax.
2725 (scm_iint2str): Argument type changed to scm_t_intmax,
2726 reimplemented in terms of scm_uint2str.
2727
2728 * print.c, print.h (scm_uintprint): New, for printing
2729 scm_t_uintmax values.
2730 (scm_intprint): Argument type changed to scm_t_intmax.
2731
77c2594f
MV
2732 * sort.c (quicksort, scm_merge, scm_merge_list_x,
2733 scm_merge_list_step, scm_merge_vector_step): Inserted SCM_TICKs at
2734 strategic places so that the loops can be interrupted.
2735
6191ccec
MV
2736 * Makefile.am (INCLUDES): Use @LTDLINC@ instead of
2737 "-I$(top_srcdir)/libguile-ltdl".
2738 (libguile_la_LIBADD): Use @LIBLTDL@ instead of
2739 "../libguile-ltdl/libguile-ltdl.a".
2740
2741 * guile.c, dynl.c: Switched to using libltdl directly. Replaced
2742 all references to scm_lt_* with just lt_*. Include <ltdl.h>
2743 instead of <libguile-ltdl.h>.
2744
77600f3e
MV
27452004-10-20 Marius Vollmer <mvo@zagadka.de>
2746
2747 * sort.c (quicksort): Copy pivot out of the array while
2748 constructing the partitions; it could get overwritten otherwise.
2749 Because of the ultimate insertion sort, this bug did not cause
2750 quicksort to fail, it just put all the burdon on the insertion
2751 sort and was thus very slow. Thanks to Rolan Orre for reporting
2752 the slowness!
2753
5000379b
MV
27542004-10-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2755
192cd792
MV
2756 * numbers.c (scm_i_range_error): New.
2757 * conv-integer.i.c, conv-uinteger.i.c: Use it instead of
2758 scm_out_of_range.
2759
2760 * sort.c (scm_restricted_vector_sort_x): Validate startpos <=
6191ccec 2761 endpos. State inclusiveness/exclusiveness of bounds in docstring.
192cd792
MV
2762
2763 * unif.c (scm_array_p): When no prototype is given, explicitely
2764 test for allowable types, do not simply return true. Thanks to
2765 Roland Orre for reporting this!
2766
5000379b
MV
2767 * private-gc.h (SCM_DEFAULT_MAX_SEGMENT_SIZE): Increase to 20 Mib.
2768
2769 * gc-segment.c (scm_i_get_new_heap_segment): Limit size of new
2770 segment to scm_max_segment_size.
2771
497eb0b7
HWN
27722004-10-08 Han-Wen Nienhuys <hanwen@xs4all.nl>
2773
1367aa5e
HWN
2774 * gc.c (scm_igc): put scm_gc_running-- before running hooks.
2775
497eb0b7
HWN
2776 * inline.h (scm_double_cell): abort if GC running.
2777 (scm_cell): idem.
2778
aef0bdb4
MV
27792004-10-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2780
2781 * error.c (scm_wrong_type_arg): Do not talk about "argument" for
2782 pos == 0.
2783
2784 Keywords no longer store a 'dash symbol'. Instead, they store a
2785 symbol with their real name.
2786
2787 * keywords.h, keywords.c, deprecated.h, deprecated.c
2788 (SCM_KEYWORDP, SCM_KEYWORDSYM): Deprecated and implemented in
2789 terms of scm_is_keyword and scm_keyword_dash_symbol.
2790
2791 * keywords.h, keywords.c, discouraged.h, discouraged.c
2792 (scm_make_keyword_from_dash_symbol, scm_keyword_dash_symbol,
2793 scm_c_make_keyword): Discouraged.
2794
2795 * keywords.h, keywords.c (scm_symbol_to_keyword,
2796 scm_keyword_to_symbol): Implemented in C.
2797 (scm_is_keyword, scm_from_locale_keyword,
2798 scm_from_locale_keywordn): New.
2799
2800 * goops.c: Replaced SCM_KEYWORDP with scm_is_keyword.
2801
2802 * snarf.h (SCM_KEYWORD, SCM_GLOBAL_KEYWORD): Use
2803 scm_from_locale_keyword instead of scm_c_make_keyword.
2804
2805 * keywords.c (scm_symbol_to_keyword): Use SCM_ASSERT_TYPE for a
2806 better error message.
2807
2808 * deprecated.c: Include discouraged.h and keywords.h.
2809
2810 * read.c (scm_lreadr): Simply do (symbol->keyword (read)) after
2811 reading '#:' or ':'. See NEWS for consequences.
2812
818deb11
MV
28132004-09-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2814
43c25626
MV
2815 * read.c (scm_lreadr): Revert change from 2004-09-22: string
2816 literals are now read-write again (until SCM_STRING_CHARS is
2817 removed).
2818
2819 * strings.c (SCM_STRING_CHARS): Explicitely reject read-only
2820 strings with an error message that blames SCM_STRING_CHARS.
2821
2822 * options.c (change_option_setting): Use scm_car instead of
2823 explicit type check plus SCM_CAR.
2824
2825 * print.h, print.c (SCM_PRINT_HIGHLIGHT_PREFIX,
2826 SCM_PRINT_HIGHLIGHT_SUFFIX): New printer options.
2827 (scm_iprin1): Use them instead of the previoulsy hardcoded
2828 strings.
2829 (scm_init_print): Initialize them.
2830
2831 * backtrace.c (display_frame_expr): Do not remove control
2832 characters from the final string. Print it directly using
2833 scm_display.
2834
818deb11
MV
2835 * ramap.c (scm_array_equal_p): Include scm_tc7_svect in switch.
2836 Thanks to Roland Orre!
2837
d748089e
KR
28382004-09-29 Kevin Ryde <user42@zip.com.au>
2839
2840 * regex-posix.c (scm_regexp_exec): Correction to last change, should
2841 be whole original string in match struct, not offsetted substring.
2842
0ff7e3ff
HWN
28432004-09-24 Han-Wen Nienhuys <hanwen@xs4all.nl>
2844
2845 * gc.c (scm_gc_unprotect_object): abort if called during GC.
2846
ad7de4b8
MV
28472004-09-24 Marius Vollmer <mvo@zagadka.de>
2848
2edf319f
MV
2849 * Makefile.am (EXTRA_DIST): Added gettext.h.
2850
d180337b
MV
2851 * smob.c, smob.h (scm_assert_smob_type): New.
2852
05d7cf89 2853 * Makefile.am (guile_CFLAGS, guile_LDFLAGS, libguile_la_CFLAGS):
ad7de4b8
MV
2854 Include GUILE_CFLAGS.
2855 (libguile_la_LIBADD): Removed THREAD_LIBS_LOCAL, which is unused
2856 now.
2857 (libpath.h): Put GUILE_CFLAGS in the build-info.
2858
c9fedf8a
MV
28592004-09-23 Marius Vollmer <mvo@zagadka.de>
2860
2861 * print.h (scm_print_state): Added highlight_objects.
2862 * print.c (make_print_state, scm_free_print_state): Initialize it
2863 to SCM_EOL.
2864 (scm_iprin1): Wrap output in '{...}' when object is contained in
2865 highlight_objects.
2866
2867 * backtrace.h, backtrace.c (scm_display_backtrace_with_highlights,
2868 scm_backtrace_with_highlights): New. Set highlight_objects of
2869 printstate.
2870
2871 * error.c (scm_error_scm): Document new meaning of data/rest
2872 argument for out-of-range and wrong-type-arg errors.
2873 (scm_out_of_range, scm_out_of_range_pos, scm_wrong_type_arg,
2874 scm_wrong_type_arg_msg): Pass bad_value in rest argument of
2875 exception so that it gets highlighted in the backtrace.
2876 Don't talk about "argument" when not giving a position.
2877
2878 * throw.c (handler_message): The rest argument is the fourth
2879 argument, not everything after the third. Call
2880 scm_display_backtrace_with_highlights, passing the rest argument
2881 when appropriate.
2882
d5ac9b2a
MV
28832004-09-22 Marius Vollmer <mvo@zagadka.de>
2884
2885 From Jan Nieuwenhuizen <janneke@gnu.org> and Bruno Haible
2886 <bruno@clisp.org>:
2887
2888 * i18n.c: Handle --disable-nls (thanks Bruno).
2889
2890 * posix.c (scm_init_posix): Add LC_PAPER, LC_NAME, LC_ADDRESS,
2891 LC_TELEPHONE, LC_MEASUREMENT, LC_IDENTIFICATION.
2892
2893 * i18n.c (scm_i_to_lc_category): New name and export. Support all
2894 LC categories.
05d7cf89 2895 * posix.c (scm_setlocale): Use it.
d5ac9b2a
MV
2896
2897 * i18n.h, i18n.c (scm_textdomain, scm_bindtextdomain,
2898 scm_bind_textdomain_codeset): Make wrappers similar to C function
2899 they wrap.
2900
2901 * i18n.h: New file.
2902 * i18n.c: New file.
2903 * gettext.h: New file, taken from GNU gettext.
2904 * init.c: Include libguile/i18n.h.
2905 (scm_init_guile_1): Add call to scm_init_i18n().
2906 * Makefile.am (libguile_la_SOURCES): Add i18n.c.
2907 (DOT_X_FILES): Add i18n.x.
2908 (DOT_DOC_FILES): Add i18n.doc.
2909 (libguile_la_LDFLAGS): Add @LTLIBINTL@.
2910 (modinclude_HEADERS): Add i18n.h.
2911
d2e53ed6
MV
29122004-09-22 Marius Vollmer <mvo@zagadka.de>
2913
2cdfe016
MV
2914 * gh_list.c: Replaced SCM_CAR, etc with scm_car, etc.
2915
d2e53ed6
MV
2916 * discouraged.h, tags.h (SCM_CONSP, SCM_NCONSP): Moved to
2917 discouraged.h. Replaced all uses with scm_is_pair.
2918 (SCM_I_CONSP): New name for SCM_CONSP.
2919
2920 * pairs.h, pairs.c (scm_is_pair, scm_is_null, scm_car, scm_cdr,
2921 scm_i_chase_pairs, SCM_I_A_PAT, SCM_I_D_PAT, etc, scm_caar,
2922 scm_cadr, etc): New.
2923 (SCM_NULLP, SCM_NNULLP): Moved to discouraged.h. Replaced all
2924 uses with scm_is_null.
5dd82006 2925
d2e53ed6
MV
2926 * eval.c (scm_eval, scm_apply, call_cxr_1): Use scm_i_chase_pairs
2927 instead of explicit code.
5dd82006 2928
5dfdf243
MV
29292004-09-22 Marius Vollmer <mvo@zagadka.de>
2930
b50c53e5
MV
2931 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
2932 Reworded logic a bit so that #f is returned immediately when s1 is
2933 too short to contain s2.
2934
5dfdf243 2935 * regex-posix.c (scm_regexp_exec): Convert string to
05d7cf89 2936 zero-terminated locale string before matching against it.
5dfdf243
MV
2937
2938 * strings.h, strings.c (scm_substring_read_only,
2939 scm_c_substring_read_only, scm_i_substring_read_only): New.
2940 (RO_STRING_TAG, IS_RO_STRING): New.
2941 (scm_i_string_writable_chars): Bail on read-only strings.
2942
2943 * read.c (scm_lreadr): use scm_c_substring_read_only for string
2944 literals, thus making them read-only as specified by R5RS.
2945
22ab5ba3
MV
29462004-09-22 Marius Vollmer <mvo@zagadka.de>
2947
2948 * eq.c (scm_equal_p): Allow smobs with different flags to be equal
2949 by testing for smobs before insisting on equal SCM_CELL_TYPES.
2950
2663421c
MV
29512004-09-21 Marius Vollmer <mvo@zagadka.de>
2952
0d83cb90
MV
2953 * numbers.h, numbers.c: Include <gmp.h> in numbers.h, not in
2954 numbers.c.
2955 (scm_to_mpz, scm_from_mpz): New.
9a5fa6e9 2956 Thanks to Andreas Vögele!
0d83cb90 2957
2663421c
MV
2958 * read.c (skip_scsh_block_comment): Recognize "!#" everywhere, not
2959 just on a line of its own.
2960
2961 * srfi-13.c (scm_string_any, scm_string_every,
2962 scm_string_tabulate, string_upcase_x, string_down_case_x,
2963 string_titlecase_x, string_reverse_x, scm_string_tokenize): Use
2964 size_t instead of int for indices into strings. Make sure that no
9a5fa6e9 2965 over- or underflow occurs. Thanks to Andreas Vögele!
2663421c
MV
2966 (scm_xsubstring, scm_string_xcopy_x): Use ints for 'extended'
2967 indices, which can also be negative.
2968
b00b73f9
MV
29692004-09-20 Marius Vollmer <mvo@zagadka.de>
2970
2971 * gc-mark.c (SCM_MARK_BACKING_STORE): Removed, it was unused.
2972
2973 * threads.c (scm_threads_mark_stacks): Call
2974 SCM_MARK_BACKING_STORE. Also, do not use stack_len local, it was
2975 only used once.
2976
adba74f3
HWN
29772004-09-13 Jan Nieuwenhuizen <janneke@gnu.org>
2978
05d7cf89 2979 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
adba74f3
HWN
2980 Bugfix: when subtracting unsigned values, make sure that result
2981 does not wrap.
2982
f6de32c8
KR
29832004-09-09 Kevin Ryde <user42@zip.com.au>
2984
2985 * filesys.c, stime.c (_POSIX_C_SOURCE): Use this only on hpux, it
2986 causes too many problems elsewhere (glibc, freebsd, mingw). Reported
9a5fa6e9 2987 by Andreas Vögele.
f6de32c8 2988
e548be5f
MV
29892004-09-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2990
eb8d0af1
MV
2991 * Makefile.am (EXTRA_libguile_la_SOURCES): Removed "alloca.c".
2992
e548be5f
MV
2993 * eq.c (real_eqv): Pretend that all NaNs are equal.
2994
2995 * numbers.c (scm_integer_expt): Do not accept inexact integers.
2996
e7acba81
MV
29972004-09-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2998
874fbad1
MV
2999 * srfi-13.c (scm_string_trim_right, scm_string_xcopy_x): Correctly
3000 use size_t for some locals instead of int.
3001
e7acba81
MV
3002 * read.c (scm_flush_ws): Detect "#!"-style comments here.
3003 (scm_lreadr): Abort on seeing "#!", which should no longer happen.
3004 (skip_scsh_block_comment): Use scm_input_error instead of
3005 scm_misc_error in case of EOF.
3006
5de12658
KR
30072004-09-07 Kevin Ryde <user42@zip.com.au>
3008
3009 * numbers.c (scm_integer_expt): Reject exponent +/-inf.
5de12658
KR
3010 Bug report by Bill Schottstaedt.
3011
3012 * ports.c (scm_getc, scm_lfwrite): Recognise \a \b and \r for port
3013 column.
3014 * ports.h (SCM_ZEROCOL, SCM_DECCOL): New macros.
3015
3016 * posix.c (scm_access): Update docstring per manual.
3017
3018 * posix.c (scm_nice): Correction to error detection. Reported by
3019 Matthias Koeppe.
3020
3021 * stime.c (scm_current_time, scm_gettimeofday, scm_strptime): Don't
3022 throw error before unlocking mutex with SCM_ALLOW_INTS.
3023
e227addf
KR
30242004-09-06 Kevin Ryde <user42@zip.com.au>
3025
3026 * stime.h (SCM_TIME_UNITS_PER_SECOND): Use sysconf(_SC_CLK_TCK) when
3027 available. This also gets around CLK_TCK being absent when
3028 _GNU_SOURCE and _POSIX_C_SOURCE are defined in stime.c.
3029
edea856c
SJ
30302004-09-03 Stefan Jahn <stefan@lkcc.org>
3031
3032 * threads.c (scm_threads_mark_stacks): Fixed local variable
3033 definitions.
3034
e7acba81 3035 * strings.c (scm_i_substring_copy, scm_string_append): Fixed
edea856c
SJ
3036 local variable definitions.
3037
3038 * stime.c (_POSIX_C_SOURCE): Do not define this item on
3039 MinGW32 because it conflicts with its pthread headers.
874fbad1
MV
3040 (scm_mktime): Consider the HAVE_STRUCT_TM_TM_ZONE define.
3041 (scm_strftime): Using scm_from_locale_string() instead of
edea856c
SJ
3042 scm_makfrom0str().
3043
874fbad1 3044 * posix.c (scm_putenv): Fixed typo in the !HAVE_UNSETENV
edea856c
SJ
3045 part.
3046
3047 * numbers.c (scm_init_numbers): Removed check_sanity() call
3048 inside GUILE_DEBUG. The function has been removed somewhen...
3049
3050 * filesys.c (_POSIX_C_SOURCE): Do not define this item on
3051 MinGW32 because it conflicts with its pthread headers.
3052
d9eb2d67
MV
30532004-08-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3054
3055 * strings.c (SCM_STRINGP): Accept all strings.
3056 (SCM_STRING_CHARS): Reject shared substrings here.
3057
3058 * script.c (scm_compile_shell_switches): Added 2003 and 2004 to
3059 the Copyright years.
3060
c495c342
KR
30612004-08-27 Kevin Ryde <user42@zip.com.au>
3062
3063 * socket.c (scm_fill_sockaddr): Use HAVE_STRUCT_SOCKADDR_SIN_LEN and
3064 HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN for sockaddr fields, SIN_LEN and
3065 SIN_LEN6 are not defined on all systems. Reported by Michael Tuexen.
3066
57aa5515
MV
30672004-08-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3068
3069 * strings.h, strings.c (scm_i_make_symbol): Added FLAGS parameter.
3070 * symbols.h, symbols.c (SCM_I_F_SYMBOL_UNINTERNED,
3071 scm_i_symbol_is_interned, scm_i_mem2symbol,
3072 scm_i_mem2uninternedsymbol): Use it to store uninternedness flag.
3073
ce25760f
MV
30742004-08-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3075
19ff6ffc
MV
3076 * srfi-13.c: First cut at thread-safeness and proper use of
3077 scm_i_string_chars et al. Copious scm_remember_upto_heres have
3078 been inserted. Made sure that no internal string pointer is used
3079 across a SCM_TICK or a possible GC.
3080
ce25760f
MV
3081 * script.c (scm_compile_shell_switches): Use
3082 scm_from_locale_string instead of scm_makfrom0str.
3083
3084 * srfi-13.c (scm_string_rindex): Export to Scheme, as it has
3085 always been.
3086
c5080b51
MV
30872004-08-25 Marius Vollmer <mvo@zagadka.de>
3088
3089 Moved SRFI-13 and SRFI-14 into the core, taking over the role of
3090 strop.c.
3091
3092 * srfi-13.c, srfi-13.h, srfi-14.c, srfi-14.h: New files.
3093 * strop.h, strop.c: Removed, they are now empty.
3094 * Makefile.am: Updated for new and removed files.
3095
3096 * symbols.h, symbols.c (scm_string_ci_to_symbol): Moved here, next
3097 to scm_string_to_symbol.
3098
3099 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
3100 scm_char_whitespace_p, scm_upper_case_p, scm_lower_case_p,
3101 scm_char_is_both_p): Use scm_char_set_contains_p with the proper
3102 charset instead of libc functions.
3103
3104 * strorder.c (scm_string_equal_p, scm_string_ci_equal_p,
3105 scm_string_less_p, scm_string_leq_p, scm_string_gr_p,
3106 scm_string_geq_p, scm_string_ci_less_p, scm_string_ci_leq_p,
3107 scm_string_ci_gr_p, scm_string_ci_geq_p): Use scm_string_eq, etc
3108 instead of explicit code.
3109
3110 * deprecated.c, load.c, posix.c, unif.c, symbols.c: Include
3111 "srfi-13.h" instead of "strop.h".
3112
3113 * init.c (scm_init_guile_1): Call scm_init_srfi_13 and
3114 scm_init_srfi_14. Do not call scm_init_strop.
3115
4b0d27f2
MV
31162004-08-24 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3117
3118 * numbers.c (scm_inf_p): Synced docstring back from manual.
3119
3ece39d6
MV
31202004-08-22 Marius Vollmer <mvo@zagadka.de>
3121
3122 * strings.c (get_str_buf_start): New helper function.
3123 (scm_i_substring, scm_i_substring_copy, scm_i_substring_shared,
3124 scm_i_string_char, scm_i_string_writable_chars): Use it.
3125 (scm_i_substring_copy): Make START argument optional for C
3126 callers, for upcoming SRFI-13 integration.
3127
31282004-08-21 Marius Vollmer <mvo@zagadka.de>
3129
3130 From Richard Todd, Thanks!
3131
3132 * script.c (scm_compile_shell_switches): added '-L' switch to add
3133 to the %load-path.
3134
5fa0939c
DH
31352004-08-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3136
3137 * eval.c (unmemoize_exprs): When dropping internal body markers
3138 from the output during unmemoization, also drop those that are not
3139 immediately at the beginning of a body.
3140
2146fdeb
MV
31412004-08-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3142
c1f54b3d
MV
3143 * eval.c (scm_lookupcar1): Report "Variable used before given a
3144 value" insetad of an "Unbound" one for variables that are found
3145 but still contain SCM_UNDEFINED.
2146fdeb
MV
3146
3147 * posix.c (scm_mkstemp): Correction to the correction, mkstemp
3148 expects a null-terminated string in the locale encoding, but
3149 scm_i_string_writable_chars doesn't give that. Fixed by letting
3150 mkstemp modify a locale version of the tmpl argument and copying
3151 the result back into tmpl.
3152
3153 * strop.c (scm_substring_move_x): Store into str2, not str1.
3154
d4f76919
KR
31552004-08-20 Kevin Ryde <user42@zip.com.au>
3156
3157 * posix.c (scm_mkstemp): Correction to new locale_string stuff, need
3158 to modify the input string.
3159
b5247a6b
MV
31602004-08-19 Marius Vollmer <mvo@zagadka.de>
3161
3162 * deprecated.c (SCM_SYMBOL_CHARS): Cast away const in return.
3163 (SCM_SYMBOL_LENGTH): It's scm_i_symbol_length, not
3164 scm_c_symbol_length.
3165
f26b9395
MV
31662004-08-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3167
3168 New string implementation, with copy-on-write strings and
3169 mutation-sharing substrings, and a new internal string API.
3170 Symbols can now share memory with strings.
3171
3172 * tags.h (scm_tc7_stringbuf): New tag.
3173
3174 * strings.h, strings.c: (scm_i_string_chars, scm_i_string_length,
3175 scm_i_string_writable_chars, scm_i_string_stop_writing): New, to
3176 replace SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH. Updated all
3177 uses.
3178 (scm_i_make_string, scm_c_make_string): New, to replace
3179 scm_allocate_string. Updated all uses.
3180 (SCM_STRINGP, SCM_STRING_CHARS, SCM_STRING_UCHARS,
3181 SCM_STRING_LENGTH): Deprecated.
3182 (scm_allocate_string, scm_take_str, scm_take0str, scm_mem2string,
3183 scm_str2string, scm_makfrom0str, scm_makfrom0str_opt):
3184 Discouraged. Replaced all uses with scm_from_locale_string or
3185 similar, as appropriate.
3186 (scm_c_string_length, scm_c_string_ref, scm_c_string_set_x,
3187 scm_c_substring, scm_c_substring_shared, scm_c_substring_copy,
3188 scm_substring_shared, scm_substring_copy): New.
3189
3190 * symbols.c, symbols.h (SCM_SYMBOLP, SCM_SYMBOL_FUNC,
3191 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS,
3192 SCM_SYMBOL_HASH, SCM_SYMBOL_INTERNED_P, scm_mem2symbol,
3193 scm_str2symbol, scm_mem2uninterned_symbol): Discouraged.
3194 (SCM_SYMBOL_LENGTH, SCM_SYMBOL_CHARS, scm_c_symbol2str):
3195 Deprecated.
3196 (SCM_MAKE_SYMBOL_TAG, SCM_SET_SYMBOL_LENGTH, SCM_SET_SYMBOL_CHARS,
3197 SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS): Removed.
3198 (scm_is_symbol, scm_from_locale_symbol, scm_from_locale_symboln):
3199 New, to replace scm_str2symbol and scm_mem2symbol, respectively.
3200 Updated all uses.
3201 (scm_gensym): Generate only the number suffix in the buffer, just
3202 string-append the prefix.
3203
3204 * error.c (scm_memory_error): Do not try to throw, just abort.
3205 Throwing will not work anyway.
3206
3207 * gh.h, gh-data.c (gh_set_substr): Made src const.
3208
3209 * ports.c (scm_i_mode_bits_n): New, for counted strings.
3210 (scm_mode_bits): Use it.
3211 (scm_c_port_for_each): Blocking GC does not seem to work, allocate
3212 a vector normally and fill that instead of consing a list with a
3213 blocked GC.
3214
3215 * read.c (scm_i_casei_streq): New, for counted strings.
3216
3217 * threads.c (gc_section_count): Removed, thread-sleeping can not
3218 be nested.
3219 (scm_i_thread_put_to_sleep): Call scm_i_leave_guile before locking
3220 admin mutex so that we can be put to sleep by other threads while
3221 blocking on that mutex. Lock all the heap mutex of all threads,
3222 including ourselves.
3223 (scm_i_thread_wake_up): Unlock all threads, including ourselves,
3224 call scm_i_enter_guile.
3225 (scm_thread_mark_stacks): Expect all threads to be suspended.
3226
3227 * gc.h, gc.c (scm_i_gc_admin_mutex): New, to protect
3228 scm_gc_mallocated, for now.
3229 (scm_init_storage): Initialize it.
3230 * gc-malloc.c (descrease_mtrigger, increase_mtrigger): Use it.
3231
3232 * gc-mark.c (scm_gc_mark_dependencies): Call scm_i_string_mark,
3233 scm_i_stringbuf_mark and scm_i_symbol_mark, as appropriate.
3234 * gc-card.c (scm_i_sweep_card): Call scm_i_string_free,
3235 scm_i_stringbuf_free and scm_i_symbol_free, as appropriate.
3236
cd505b38
MV
3237 * strop.c (scm_string_copy): Use scm_c_substring to get a
3238 copy-on-write string.
3239
8a807b26
KR
32402004-08-18 Kevin Ryde <user42@zip.com.au>
3241
3242 * arbiters.c (FETCH_STORE): New macro.
3243 (SCM_LOCK_VAL, SCM_UNLOCK_VAL): New constants.
3244 (SCM_LOCK_ARB, SCM_UNLOCK_ARB): Remove, effectively absorbed into
3245 scm_try_arbiter and scm_release_arbiter.
3246 (scm_try_arbiter, scm_release_arbiter): Use FETCH_STORE to get xchg
3247 for speed on i386, otherwise using mutex.
3248
3249 * eq.c (scm_equal_p): Remove real==fraction and fraction==real, they
3250 must be #f according to R5RS. (equal? follows eqv?, and for eqv? an
3251 exact and inexact is #f.)
3252
3253 * fports.c (fport_print): Use scm_ttyname instead of ttyname directly,
3254 to get thread safety of scm_ttyname.
3255
3256 * ports.c (ttyname): Remove prototype, unused.
3257
d6cd4c36 3258 * socket.c (scm_init_socket): Add SOCK_SEQPACKET and SOCK_RDM.
1f3cc0d3 3259 Reported by Michael Tuexen.
d6cd4c36 3260
fa0c0a4b
MV
32612004-08-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3262
3263 * load.c (scm_init_load_path): Do not pass NULL to
3264 scm_to_locale_string, which would happen when GUILE_LOAD_PATH is
3265 not set. Thanks to Bill Schottstaedt.
3266
70f7ee41
MV
32672004-08-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3268
3269 * socket.c (scm_inet_aton, scm_inet_pton): Convert SCM strings to
3270 locale strings instead of accessing their internals.
3271 (scm_recv, scm_send, scm_recvfrom, scm_sendto): Use
3272 SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH instead of
3273 SCM_STRING_CHARS and SCM_STRING_LENGTH.
3274
3275 * simpos.c (scm_system): Convert SCM strings to locale strings
3276 instead of accessing their internals.
3277
3278 * script.c (scm_compile_shell_switches): Convert version to locale
3279 string before printing it.
3280
3281 * rdelim.c (scm_read_delimited_x): Avoid
3282 SCM_VALIDATE_SUBSTRING_SPEC_COPY and use scm_from_size_t instead
3283 of scm_from_long for the returned number of read characters.
3284
3285 * ioext.c (scm_fdopen): Use scm_i_fdes_to_port together with
3286 scm_i_mode_bits to avoid accessing internals of SCM string from C.
3287
3288 * filesys.c (STRING_SYSCALL, STRING2_SYSCALL): New helper macros.
3289 Use them instead of SCM_SYSCALL when one or two strings need to be
3290 converted into locale strings.
3291 (my_rename): New, gathers platform dependent code for renaming.
3292 (scm_rename): Use it.
3293 (scm_readlink, scm_copy_file): Convert SCM strings to locale
3294 strings instead of accessing their internals.
3295 (scm_basename, scm_dirname): Use SCM_I_STRING_CHARS and
3296 SCM_I_STRING_LENGTH instead of SCM_STRING_CHARS and
3297 SCM_STRING_LENGTH.
3298
3299 * extensions.c (load_extension): Convert lib and init to locale
3300 strings instead of accessing the internals directly.
3301 (scm_c_load_extension): Use scm_from_locale_string instead of
3302 scm_makfrom0str.
3303
3304 * fports.h, fports.c (scm_i_fdes_to_port): New, like
3305 scm_fdes_to_port, but take mode bits directly instead of as a C
3306 string.
3307 (scm_i_fdes_to_port): Implement using above.
3308 (scm_open_file): Use scm_i_fdes_to_port together with
3309 scm_i_mode_bits to avoid accessing internals of SCM string from C.
3310 * vports.c (scm_make_soft_port): Use scm_i_fdes_to_port together
3311 with scm_i_mode_bits to avoid accessing internals of SCM string
3312 from C.
3313
3314 * ports.h (scm_i_mode_bits): New, same as scm_mode_bits but with a
3315 SCM string as argument.
3316
3317 * ports.c (scm_i_void_port): New, like scm_void_port but take mode
3318 bits directly instead of C string.
3319 (scm_void_port): Implement using above.
3320 (scm_sys_make_void_port): Use scm_i_void_port together with
3321 scm_i_mode_bits to avoid accessing internals of SCM string.
3322
3323 * strings.h, strings.c (scm_i_get_substring_spec): New.
3324
3325 * socket.c, rw.c, deprecated.h, validate.h
3326 (SCM_VALIDATE_STRING_COPY): Deprecated. Replaced all uses with
3327 SCM_VALIDATE_STRING plus SCM_I_STRING_CHARS or
3328 scm_to_locale_string, etc.
3329 (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Deprecated. Replaced as
3330 above, plus scm_i_get_substring_spec.
3331
3332 * regex-posix.c, read.c, random.c, ramap.c, print.c, numbers.c,
3333 hash.c, gc.c, gc-card.c, convert.i.c, backtrace.c, strop.c,
3334 strorder.c, strports.c, struct.c, symbols.c, unif.c, ports.c: Use
3335 SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_STRING_LENGTH
3336 instead of SCM_STRING_CHARS, SCM_STRING_UCHARS, and
3337 SCM_STRING_LENGTH, respectively. Also, replaced scm_return_first
3338 with more explicit scm_remember_upto_here_1, etc, or introduced
3339 them in the first place.
3340
3341 * posix.c (WITH_STRING): New helper macro. Use it where one
3342 locale string is needed for a short piece of code.
3343 (STRING_SYSCALL): New helper macro. Use it instead of SCM_SYSCALL
3344 when one locale string is needed.
3345 (scm_mkstemp): Convert tmpl to a locale string.
3346 (scm_putenv): Rewritten to use only C strings.
3347 (scm_setlocale, scm_crpt): Convert argument strings to locale
3348 strings.
3349
33502004-08-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3351
3352 * load.c (scm_primitive_load_path): Do not check for absolute
3353 filenames when scm_sys_search_load_path returns false, which will
3354 return absolute filenames unchanged.
3355
bb26cc2d
MV
33562004-08-11 Marius Vollmer <mvo@zagadka.de>
3357
3358 * gc.c, procprop.c (scm_init_storage, scm_stand_in_procs,
3359 scm_stand_in_proc): Use a hastable for scm_stand_in_procs instead
3360 of an alist. Thanks to Matthias Koeppe!
3361
02573e4c
MV
33622004-08-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3363
3364 * strings.h, deprecated.h (SCM_STRING_COERCE_0TERMINATION_X):
3365 Moved from string.h to deprecated.h.
3366
3367 * deprecated.c, deprecated.h (SCM_CHARS, SCM_LENGTH): Removed.
3368
f9751e86 3369 * strings.h, strings.c (SCM_MAKE_STRING_TAG): Renamed to
02573e4c
MV
3370 SCM_I_MAKE_STRING_TAG, changed all uses.
3371 (SCM_STRING_CHARS, SCM_STRING_UCHARS, SCM_STRING_LENGTH): Renamed
3372 to SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_LENGTH
3373 respectively. For a short time, the old names are still there as
3374 aliases. Not all uses have been changed yet, but the ones in
3375 strings.c have.
3376 (SCM_STRING_MAX_LEN): Do not hardcode to 24 bits, compute from
3377 SCM_T_BITS_MAX.
3378 (scm_is_string, scm_from_locale_string, scm_from_locale_stringn,
3379 scm_take_locale_string, scm_take_locale_stringn,
3380 scm_to_locale_string, scm_to_locale_stringn,
3381 scm_to_locale_stringbuf): New.
3382 (scm_c_string2str, scm_c_substring2str): Deprecated by moving to
3383 deprecated.[hc]. Implemented in terms of the new functions above.
3384 (scm_take_str, scm_take0str, scm_mem2string, scm_str2string,
3385 scm_makfrom0str): Reimplemented in terms of the new functions from
3386 above. They will be discouraged shortly.
3387 (scm_substring): Do not use scm_mem2string.
3388 (scm_i_allocate_string_pointers, scm_i_free_string_pointers): New,
3389 to replace similar code from posix.c, simpos.c, and dynl.c.
3390 (scm_string_append): Use memcpy instead of explicit loop. Do not
3391 use register keyword. Use plain 'char' instead of 'unsigned
3392 char'.
3393
3394 * strports.c (scm_mkstrport): Use SCM_I_STRING_UCHARS instead of
3395 SCM_STRING_UCHARS. Use SCM_I_STRINGP instead of SCM_STRINGP.
3396
3397 * strop.c (scm_i_index): Replaced SCM_STRINGP, SCM_STRING_CHARS,
3398 and SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
3399 SCM_I_STRING_LENGTH, respectively. Pass string object directly,
3400 not as a pointer. Use scm_remember_upto_here_1 to protect it.
3401
3402 * read.c (scm_input_error): Use a SCM value for 'fn', not a C
3403 string. This avoids a conversion round-trip.
3404
3405 * gh_data.c: Replaced SCM_STRINGP, SCM_STRING_CHARS, and
3406 SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
3407 SCM_I_STRING_LENGTH, respectively.
3408 (gh_scm2newstr): Implement in terms of scm_to_locale_string.
3409
3410 * environments.c: Instead calling scm_puts on the SCM_STRING_CHARS
3411 of a string, call scm_display on the string itself.
3412
3413 * dynwind.c, dynwind.h (scm_frame_free): New.
3414
3415 * stime.c, socket.c, simpos.c, procs.c, posix.c, ports.c,
3416 net_db.c, fports.c, filesys.c, eval.c, deprecation.c, dynl.c:
3417 Replaced uses of SCM_STRING_CHARS with proper uses of
3418 scm_to_locale_string. Replaced SCM_STRINGP with scm_is_string.
3419 Replaced scm_mem2string with scm_from_locale_string.
3420
3421 * simpos.c, posix.c (allocate_string_pointers, environ_list_to_c):
3422 Removed, replaced all uses with scm_i_allocate_string_pointers.
3423
3424 * load.h, load.c (scm_internal_parse_path): Removed.
3425 (scm_parse_path): Use scm_string_split to do the work.
3426 (scm_init_load_path): Use scm_parse_path instead of
3427 scm_internal_parse_path.
3428 (scm_search_path): Rewritten string handling part of the code in
3429 terms of scm_to_locale_stringbuf and so that it is thread safe.
3430
3431 * error.c (scm_error_scm): Throw directly instead of calling
3432 scm_error, this avoids the back and forth conversion of SUBR and
3433 MESSAGE and also plugs a memory leak.
3434 (scm_error): Call scm_error_scm.
3435
3436 * backtrace.c: Replaced SCM_STRINGP with scm_is_string.
3437 (display_header): Print FNAME when it is true, not
3438 merely when it is a string.
3439
3440 * strings.h (SCM_SET_STRING_LENGTH, SCM_SET_STRING_CHARS): Removed
3441 unceremoniously. They were unused by Guile itself, and external
3442 use should stop immediately.
3443
3444
409eb4e5
MV
34452004-08-10 Marius Vollmer <mvo@zagadka.de>
3446
3447 * numbers.h, number.c, deprecated.h, deprecated.c (scm_round,
3448 scm_truncate): Renamed to scm_c_round and scm_c_truncate;
3449 deprecated versions installed in deprecated.h and deprecated.c.
3450 Changed all uses.
3451
a00eaf19
RB
34522004-08-06 Rob Browning <rlb@defaultvalue.org>
3453
3454 * net_db.c (scm_resolv_error): don't cause an exception while
3455 trying to throw an exception -- call scm_misc_error with correct
3456 arguments. The previous arguments needed a format escape that
3457 wasn't in any of the format strings.
3458
bcb88c93
KR
34592004-08-06 Kevin Ryde <user42@zip.com.au>
3460
8f094b97
KR
3461 * ramap.c (scm_array_fill_x): For byvect char fill, force signed char
3462 so as not to depend on signedness of plain char. For byvect range
3463 check, throw out-of-range rather than wrong-type-arg.
3464
bcb88c93
KR
3465 * unif.c (scm_uniform_vector_ref, scm_array_set_x): For byvect, force
3466 signed byte range checks by using scm_to_schar and scm_from_schar,
3467 don't want to depend on signedness of C char.
3468
29e61124
KR
34692004-08-05 Kevin Ryde <user42@zip.com.au>
3470
3471 * arbiters.c (scm_try_arbiter): Use scm_i_misc_mutex instead of
3472 SCM_DEFER_INTS.
3473 (scm_release_arbiter): Use scm_i_misc_mutex so return value can be
3474 guaranteed if multiple threads compete to unlock.
3475 Update docstrings per doc/ref/api-scheduling.texi.
3476
99de794f
KR
3477 * filesys.c (scm_copy_file): Use fstat on the input fd rather than
3478 stat on the filename, to be certain a file rename can't mean we get
3479 info on one filesystem object but open another. This fstat usage is
3480 similar to Emacs copy-file.
3481
29e61124
KR
3482 * posix.c (scm_setgroups): Enhance docstring, per doc/ref/posix.texi.
3483
3484 * simpos.c (scm_system_star): Change scm_from_long to scm_from_int on
3485 SIGINT and SIGQUIT, since those values are ints.
3486
759aa8f9
MV
34872004-08-03 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3488
7241f213
MV
3489 * num2integral.i.c, num2float.i.c: Removed.
3490 * Makefile.am (noinst_HEADERS): Updated.
3491
f9656a9f
MV
3492 * numbers.h. numbers.c (scm_make_ratio): Renamed to
3493 scm_i_make_ratio and made static, replaced uses with scm_divide.
96d8c217
MV
3494 (scm_complex_p): New, export as "complex?" to Scheme.
3495 (scm_number_p): Export as "number?" to Scheme.
3496 (scm_is_complex, scm_is_number): New.
3497 (scm_c_make_rectangular, scm_c_make_polar): New.
3498 (scm_make_rectangular, scm_make_polar): Use above.
3499 (scm_c_real_part, scm_c_imag_part, scm_c_magnitude, scm_c_angle):
3500 New.
3501 (scm_make_complex): Discouraged by moving to discouraged.h and
3502 discouraged.c. Replaced all uses with scm_c_make_rectangular.
3503
759aa8f9
MV
3504 * discouraged.h, discouraged.c, numbers.c, numbers.h
3505 (scm_is_rational): New.
3506 (scm_i_short2big, scm_i_int2big, scm_i_uint2big, scm_i_size2big,
3507 scm_i_ptrdiff2big, scm_i_long_long2big, scm_i_ulong_long2big):
3508 Removed prototypes.
3509 (scm_make_real, scm_num2dbl, scm_float2num, scm_double2num):
3510 Discouraged by moving to discouraged.h and discouraged.c.
3511 Replaced all uses with scm_from_double.
3512 (scm_num2float, scm_num2double): Discouraged by moving prototype
3513 to discouraged.h and rewriting in terms of scm_to_double.
3514 Replaced all uses with scm_to_double.
3515 (scm_to_double): Do not implement in terms of scm_num2dbl, use
3516 explicit code.
3517 (scm_from_double): Do not implement in terms of scm_make_real, use
3518 explicit code.
3519
531bf3e6
MV
35202004-08-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3521
759aa8f9
MV
3522 * init.c (scm_init_guile_1): Call scm_i_init_discouraged.
3523
531bf3e6
MV
3524 * gen-scmconfig.h.in (SCM_I_GSC_ENABLE_DISCOURAGED): New.
3525 * gen-scmconfig.c (SCM_ENABLE_DISCOURAGED): Emit based on above.
3526
3527 * eval.c (SCM_EVALIM, SCM_EVALIM2, SCM_XEVAL, SCM_XEVALCAR):
3528 Renamed to SCM_I_* in order to avoid collisions with the versions
3529 defined in deprecated.h.
3530
3531 * discouraged.h, discouraged.c: New files.
3532
3533 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_EQ_P,
3534 SCM_NEGATE_BOOL, SCM_BOOL, SCM_BOOT_NOT): Promoted from being
3535 deprecated to being discouraged by moving to discouraged.h.
3536
3537 * numbers.h, numbers.c, discouraged.h, discouraged.c
3538 (scm_short2num, scm_ushort2num, scm_int2num, scm_uint2num,
3539 scm_long2num, scm_ulong2num, scm_size2num, scm_ptrdiff2num,
3540 scm_num2short, scm_num2ushort, scm_num2int, scm_num2uint,
3541 scm_num2long, scm_num2ulong, scm_num2size, scm_num2ptrdiff,
3542 scm_long_long2num, scm_ulong_long2num, scm_num2long_long,
3543 scm_num2ulong_long): Discouraged by moving to discouraged.h and
3544 discouraged.c and reimplementing in terms of scm_from_* and
3545 scm_to_*. Changed all uses to the new scm_from_* and scm_to_*
3546 functions.
3547
3548 * numbers.h, numbers.c: Removed GUILE_DEBUG code.
3549 (scm_i_short2big, scm_i_ushort2big, scm_i_int2big, scm_i_uint2big,
3550 scm_i_size2big, scm_i_ptrdiff2big): Removed.
3551 (scm_i_long2big, scm_i_ulong2big): New, explicit definitions.
3552 * conv-integer.i.c, conv-uinteger.i.c: Use them instead of
3553 explicit code.
3554
5ec82e96
KR
35552004-08-02 Kevin Ryde <user42@zip.com.au>
3556
3557 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Add comments about past
3558 and current usage and migration.
3559
58f28989
KR
35602004-07-31 Kevin Ryde <user42@zip.com.au>
3561
3562 * error.c (scm_strerror): Use scm_i_misc_mutex around strerror since
3563 it's not thread safe.
3564 (scm_syserror): Use scm_strerror rather than SCM_I_STRERROR, to take
3565 advantage of this.
3566 * fports.c (scm_open_file): Use scm_strerror likewise.
3567 * filesys.c (scm_stat, scm_lstat): Ditto.
3568
3569 * filesys.c (scm_copy_file): Avoid fd leak when destination file
3570 cannot be opened.
3571
3572 * symbols.c (scm_gensym): Use scm_i_misc_mutex around gensym_counter
3573 update, for thread safety.
3574 (gensym_counter): Move into scm_gensym which is its only user.
3575 (scm_init_symbols): No need to explicitly initialize gensym_counter.
3576
03696aab
MV
35772004-07-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3578
51fdb325
MV
3579 * numbers.h (scm_to_schar, scm_to_uchar, scm_to_char,
3580 scm_to_short, scm_to_ushort, scm_to_int, scm_to_uint, scm_to_long,
3581 scm_to_ulong, scm_to_long_long, scm_to_ulong_long, scm_to_intmax,
3582 scm_to_uintmax, scm_to_size_t, scm_to_ssize_t scm_from_schar,
3583 scm_from_uchar, scm_from_char, scm_from_short, scm_from_ushort,
3584 scm_from_int, scm_from_uint, scm_from_long, scm_from_ulong,
3585 scm_from_long_long, scm_from_ulong_long, scm_from_intmax,
3586 scm_from_uintmax, scm_from_size_t, scm_from_ssize_t): No longer
3587 defined in terms of scm_to_signed_integer, etc, but in terms of
3588 scm_to_int8, etc.
3589
3590 * gen-scmconfig.c (SCM_SIZEOF_INTMAX, SCM_SIZEOF_SIZE_T): New.
3591
03696aab
MV
3592 * gen-scmconfig.h.in: Removed SCM_I_GSC_*_LIMITS macros, they are
3593 no longer used.
3594
3595 * __scm.h (SCM_I_UTYPE_MAX, SCM_I_TYPE_MAX, SCM_I_TYPE_MIN,
3596 SCM_I_SIZE_MAX, SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX): New.
3597
3598 * __scm.h, gen-scmconfig.c (SCM_I_LLONG_MAX, SCM_I_LLONG_MIN,
3599 SCM_I_ULLONG_MAX, SCM_T_INT8_MIN, SCM_T_INT8_MAX, SCM_T_UINT8_MAX,
3600 SCM_T_INT16_MIN, SCM_T_INT16_MAX, SCM_T_UINT16_MAX,
3601 SCM_T_INT32_MIN, SCM_T_INT32_MAX, SCM_T_UINT32_MAX,
3602 SCM_T_INT64_MIN, SCM_T_INT64_MAX, SCM_T_UINT64_MAX,
3603 SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, SCM_T_UINTMAX_MAX): Moved
3604 definition into __scm.h, using new SCM_I_TYPE_MIN, etc.
3605
3606 * conv-integer.i.c, conv-uinteger.i.c: New files, used to generate
3607 the functions below.
3608
3609 * Makefile.am (noinst_HEADERS): Added conv-integer.i.c and
3610 conv-uinteger.i.c.
3611
3612 * numbers.c, numbers.h (scm_to_int8, scm_to_uint8, scm_to_int16,
3613 scm_to_uint16, scm_to_int32, scm_to_uint32, scm_to_int64,
3614 scm_to_uint64, scm_from_int8, scm_from_uint8, scm_from_int16,
3615 scm_from_uint16, scm_from_int32, scm_from_uint32, scm_from_int64,
3616 scm_from_uint64): Turned from macros into proper functions.
3617 (scm_to_signed_integer, scm_to_unsigned_integer,
3618 scm_from_signed_integer, scm_from_unsigned_integer): Generate via
3619 conv-integer.i.c and conv-uinteger.i.c, as well.
3620
3621 * number.h (scm_to_ssize_t, scm_to_size_t): Use the new
3622 SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX, and SCM_I_SIZE_MAX macros for
3623 the limits. Those are always defined.
3624
1f15779e
KR
36252004-07-29 Kevin Ryde <user42@zip.com.au>
3626
3627 * posix.c (scm_ttyname): Use scm_i_misc_mutex for thread safety.
3628
48360eb3
KR
36292004-07-28 Kevin Ryde <user42@zip.com.au>
3630
3631 * posix.c (scm_ctermid): Use an L_ctermid buf on the stack, for thread
3632 safety.
3633
c3f3c841
KR
3634 * unif.c (scm_array_set_x): For svect, use scm_num2short for
3635 consistency with other vector types and to get arg and func name into
3636 error message.
3637
c82f8ed6
MV
36382004-07-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3639
3640 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_BOOL):
3641 Reimplement using scm_is_false, scm_is_true, scm_is_bool, and
3642 scm_from_bool, respectively.
3643 (SCM_NINUMP): Added.
3644
3645 * tags.h, deprecated.h (SCM_EQ_P): Deprecated by moving it into
3646 deprecated.h. Replaced all uses with scm_is_eq.
3647
317b4c4a
KR
36482004-07-24 Kevin Ryde <user42@zip.com.au>
3649
3650 * threads.c, threads.h (scm_i_misc_mutex): New SCM_GLOBAL_MUTEX.
3651 * posix.c (scm_crypt): Use it to protect static data in crypt().
3652
e11e83f3
MV
36532004-07-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3654
3655 * deprecated.h, deprecated.c, numbers.h (SCM_INUMP, SCM_NINUMP,
c82f8ed6 3656 SCM_INUM): Deprecated by renaming them to SCM_I_INUMP,
e11e83f3
MV
3657 SCM_I_NINUMP and SCM_I_INUM, respectively and adding deprecated
3658 versions to deprecated.h and deprecated.c. Changed all uses to
3659 either use the SCM_I_ variants or scm_is_*, scm_to_*, or
3660 scm_from_*, as appropriate.
3661
3662 * dynwind.c (scm_i_dowinds): Removed unused code that would call
3663 the unexisting scm_cross_dynwind_binding_scope for inums on the
3664 windlist.
3665
a55c2b68
MV
36662004-07-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3667
3668 * socket.c (ipv6_net_to_num, scm_from_ipv6): Renamed
e11e83f3 3669 ipv6_net_to_num to scm_from_ipv6, for converting from an IPv6
a55c2b68
MV
3670 byte-wise address to a SCM integer. Changed all uses.
3671 (ipv6_num_to_net, scm_to_ipv6): Renamed ipv6_num_to_net to
3672 scm_to_ipv6 and added type and range checking, for converting from
3673 an IPv& byte-wise address to a SCM integer. Changed all uses.
3674 (bignum_in_ipv6_range_p, VALIDATE_INET6): Removed, their function
3675 is now done by scm_to_ipv6.
3676
3677 * numbers.c (scm_to_signed_integer, scm_to_unsigned_integer): dot
3678 not accept inexact integers.
3679
3680 * validate.h, deprecated.h (SCM_VALIDATE_INUM,
3681 SCM_VALIDATE_INUM_COPY, SCM_VALIDATE_BIGINT,
3682 SCM_VALIDATE_INUM_MIN, SCM_VALIDATE_INUM_MIN_COPY,
3683 SCM_VALIDATE_INUM_MIN_DEF_COPY,SCM_VALIDATE_INUM_DEF,
3684 SCM_VALIDATE_INUM_DEF_COPY, SCM_VALIDATE_INUM_RANGE,
3685 SCM_VALIDATE_INUM_RANGE_COPY): Deprecated because they make the
3686 fixnum/bignum distinction visible. Changed all uses to
3687 scm_to_size_t or similar.
3688
36892004-07-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3690
3691 * cpp_cnvt.awk: Use scm_from_int instead of SCM_MAKINUM.
3692
48a06bd5
KR
36932004-07-10 Kevin Ryde <user42@zip.com.au>
3694
3695 * hash.c (scm_hashq, scm_hashv, scm_hash): Restrict to size>=1 rather
3696 than size>=0, since 0<=hash<size cannot be satisfied for size==0, and
3697 such a size causes divide-by-zeros in scm_hasher.
3698
052fbfd9
KR
3699 * regex-posix.c (scm_make_regexp): Free rx on error, to avoid memory
3700 leak.
3701
43240c9c
MV
37022004-07-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3703
3704 * numbers.c (scm_is_signed_integer, scm_is_unsigned_integer):
3705 Rewritten using the same logic as scm_to_signed_integer and
3706 scm_to_unsigned_integer, respectively, which is better(tm). Also,
3707 use CHAR_BIT instead of hardcoding 8.
3708 (LLONG_MIN, LLONG_MAX, ULLONG_MAX): Removed and used
3709 SCM_I_LLONG_MIN etc. instead.
3710
3711 * numbers.h (SCM_MAKINUM, SCM_I_MAKINUM): Renamed SCM_MAKINUM to
3712 SCM_I_MAKINUM and changed all uses.
3713 * deprecated.h, deprecated.c (SCM_MAKINUM): Newly deprecated.
3714
a3de8e7b
MV
3715 * gen-scmconfig.c (SCM_I_LLONG_MIN, SCM_I_LLONG_MAX,
3716 SCM_I_ULLONG_MAX): Instead of hard-coding the numbers, compute
43240c9c
MV
3717 them by assuming twos-complement.
3718
c9eb03bb
MV
37192004-07-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3720
3721 * gen-scmconfig.h.in: Added all the new SCM_I_GSC_*_LIMITS that
3722 configure now produces.
3723 * gen-scmconfig.c: Use them to output SCM_T_INT8_MIN, etc
3724 definitions, giving the limits of the integer types defined by
3725 Guile. Also, output a hard coded SCM_I_LLONG_MIN, etc since
3726 LLONG_MIN or LONG_LONG_MIN is hard to get at.
3727
3728 * numbers.h (scm_to_short, scm_to_ushort): It's SHRT_MIN, etc, not
3729 SHORT_MIN.
3730 (scm_to_size_t): Use SIZE_MAX instead of cooking our own.
3731 (scm_to_long_long, scm_to_ulong_long, scm_to_int8, scm_to_uint8,
3732 scm_to_int16, scm_to_uint16, scm_to_int32, scm_to_uint32,
3733 scm_to_int64, scm_to_uint64, scm_to_intmax, scm_to_uintmax,
3734 scm_from_long_long, scm_from_ulong_long, scm_from_int8,
3735 scm_from_uint8, scm_from_int16, scm_from_uint16, scm_from_int32,
3736 scm_from_uint32, scm_from_int64, scm_from_uint64, scm_from_intmax,
3737 scm_from_uintmax): New.
3738
7888309b
MV
37392004-07-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3740
3741 * tags.h (scm_is_eq): New.
3742
3743 * deprecated.h, boolean.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOL,
3744 SCM_NEGATE_BOOL, SCM_BOOLP): Deprecated by moving into
3745 "deprecated.h". Replaced all uses with scm_is_false, scm_is_true,
3746 scm_from_bool, and scm_is_bool, respectively.
3747
3748 * boolean.h (scm_is_bool): Fix bug in prototype.
3749 (scm_from_bool): The argument is "x" not "f", stupid.
3750
3751 * boolean.c (scm_is_bool): Fix typo.
3752
3753 * numbers.h, numbers.c (scm_is_integer, scm_is_signed_integer,
3754 scm_is_unsigned_integer, scm_to_signed_integer,
3755 scm_to_unsigned_integer, scm_to_schar, scm_to_uchar, scm_to_char,
3756 scm_to_short, scm_to_ushort, scm_to_long, scm_to_ulong,
3757 scm_to_size_t, scm_to_ssize_t, scm_from_schar, scm_from_uchar,
3758 scm_from_char, scm_from_short, scm_from_ushort, scm_from_int,
3759 scm_from_uint, scm_from_long, scm_from_ulong, scm_from_size_t,
3760 scm_from_ssize_t, scm_is_real, scm_to_double, scm_from_double):
3761 New.
3762
800570a6
MV
37632004-07-05 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3764
3765 * boolean.h, boolean.c (scm_is_true, scm_is_false, scm_from_bool,
3766 scm_to_bool): New.
3767
9fcf3cbb
DH
37682004-06-27 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3769
3770 * backtrace.c (display_expression, display_frame): Call
3771 scm_i_unmemoize_expr for unmemoizing a memoized object holding a
3772 single memoized expression.
3773
3774 * debug.c (memoized_print): Don't try to unmemoize the memoized
3775 object, since we can't know whether it holds a single expression
3776 or a body.
3777
3778 (scm_mem_to_proc): Removed check for lambda expression, since it
3779 was moot anyway. Whoever uses these functions for debugging
3780 purposes should know what they do: Creating invalid memoized code
3781 will cause crashes, independent of whether this check is present
3782 or not.
3783
3784 (scm_proc_to_mem): Take the closure's code as it is and don't
3785 append a SCM_IM_LAMBDA isym. To allow easier debugging, the
3786 memoized code should not be modified.
3787
3788 * debug.[ch] (scm_unmemoize, scm_i_unmemoize_expr): Removed
3789 scm_unmemoize from public use, but made scm_i_unmemoize_expr
3790 available as a guile internal function instead. However,
3791 scm_i_unmemoize_expr will only work on memoized objects that hold
3792 a single memoized expression. It won't work with bodies.
3793
3794 * debug.c (scm_procedure_source), macros.c (macro_print), print.c
3795 (scm_iprin1): Call scm_i_unmemocopy_body for unmemoizing a body,
3796 i. e. a list of expressions.
3797
3798 * eval.c (unmemoize_exprs): Drop internal body markers from the
3799 output during unmemoization.
3800
3801 * eval.[ch] (scm_unmemocopy, scm_i_unmemocopy_expr,
3802 scm_i_unmemocopy_body): Removed scm_unmemocopy from public use,
3803 but made scm_i_unmemocopy_expr and scm_i_unmemocopy_body available
3804 as guile internal functions instead. scm_i_unmemoize_expr will
3805 only work on a single memoized expression, while
3806 scm_i_unmemocopy_body will only work on bodies.
3807
90df793f
DH
38082004-06-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3809
3810 * eval.c (unmemoize_exprs): Handle semi-memoized code.
3811
3812 (scm_cons_source, scm_primitive_eval): Prefer higher level
3813 predicate SCM_FALSEP over SCM_IMP.
3814
8048c00b
RB
38152004-06-15 Rob Browning <rlb@defaultvalue.org>
3816
3817 * script.c (scm_shell_usage): minor phrasing change.
3818
3819 * gc_os_dep.c: update ifdefery for macosx.
3820 (scm_get_stack_base): separate result initialization from
3821 declaration to slience warnings with macosx and hp-ux using gcc
9a5fa6e9 3822 3.3. Thanks to Andreas Vögele.
8048c00b 3823
d93294d4
HWN
38242004-06-13 Han-Wen Nienhuys <hanwen@xs4all.nl>
3825
3826 * eval.c (unmemoize_exprs): use SCM_CONSP for the loop condition.
3827
212e58ed
DH
38282004-06-06 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3829
3830 * list.[ch] (scm_i_finite_list_copy): New internal function to
3831 copy lists that are known to be finite (though not necessarily
3832 proper).
3833
3834 * debug.c (scm_procedure_source): Don't have scm_unmemocopy treat
3835 a closure's argument list like an expression of a body.
3836
3837 * eval.c (unmemoize_expression, unmemoize_exprs, unmemoize_and,
3838 unmemoize_begin, unmemoize_case, unmemoize_cond, unmemoize_delay,
3839 unmemoize_do, unmemoize_if, unmemoize_lambda, unmemoize_let,
3840 unmemoize_letrec, unmemoize_letstar, unmemoize_or,
3841 unmemoize_set_x, unmemoize_apply, unmemoize_atcall_cc,
3842 unmemoize_at_call_with_values, unmemoize_future, sym_atslot_ref,
3843 unmemoize_atslot_ref, sym_atslot_set_x, unmemoize_atslot_set_x,
3844 unmemoize_builtin_macro): New static functions and symbols.
3845
3846 (scm_unmemocopy): Rewritten in terms of the above. scm_unmemocopy
3847 now has a slightly different meaning: The memoized form that is
3848 receives as its argument is now interpreted as a sequence of
3849 expressions from a body.
3850
3851 (unmemocar, scm_unmemocar): Since the whole functionality of
3852 unmemocar and scm_unmemocar is not needed any more, scm_unmemocar
3853 has its old content back and is deprecated, while unmemocar has
3854 been removed.
3855
3856 (SCM_BIT7): Removed.
3857
3858 (CEVAL): For unmemoizing a single expression, call
3859 unmemoize_expression instead of scm_unmemocopy, which now expects
3860 a sequence of body expressions. Eliminated unnecessary empty
3861 environment frame when executing let* forms. Eliminated
3862 unmemoization step from evaluator.
3863
9ccea370
MV
38642004-06-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3865
3866 * eval.c (scm_macroexp, macroexp): Renamed scm_macroexp to
3867 macroexp and made static. Added new version of scm_macroexp that
3868 emits a deprecation warning and then calls macroexp.
3869 (scm_m_undefine): Issue deprecation warning.
3870
57d23e25
DH
38712004-05-30 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3872
3873 * eval.c (lookup_global_symbol, literal_p, try_macro_lookup):
3874 Modified to make set! work on symbols that represent syntactic
3875 keywords.
3876
141521ad
HWN
38772004-05-26 Han-Wen Nienhuys <hanwen@xs4all.nl>
3878
3879 * gc.h (SCM_CELL_OBJECT_LOC): use SCM_GC_CELL_OBJECT to prevent
3880 compound expression as lvalue errors.
3881
7c2f56a4
MV
38822004-05-24 Marius Vollmer <mvo@zagadka.de>
3883
3884 * dynwind.c (winder_mark): Use SCM_PACK to correctly convert the
3885 WINDER_DATA to a SCM.
3886
366ecaec
DH
38872004-05-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3888
3889 * goops.c (compute_getters_n_setters, create_standard_classes,
3890 scm_add_slot): Compute closures by calling scm_i_eval_x on a
3891 lambda expression rather than creating them with scm_closure.
3892
26ecfa39
DH
38932004-05-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3894
3895 * eval.c (s_macro_keyword, scm_m_set_x): Remove checking for
3896 misplaced syntactic keywords. This will not work unless guile's
3897 defmacro feature is deprecated.
3898
3899 (scm_m_case): Fixed a bug that caused the list of labels to grow
3900 with every case form.
3901
f865229a
KR
39022004-05-19 Kevin Ryde <user42@zip.com.au>
3903
3904 * numbers.c (scm_round_number): For inum and big, just return x. For
3905 real, use scm_round for 2^54-1 etc problems covered there.
3906
3907 * numbers.c (trunc): Remove #define to scm_truncate when the C library
3908 doesn't provide trunc. This was for when `truncate' was done as a
3909 scm_tc7_dsubr, no longer required.
3910
3911 * threads.c (scm_threads_mark_stacks) [SCM_STACK_GROWS_UP]: Correction
3912 to stack marking call, two parameters and no cast on t->base.
3913
63947c7a
MV
39142004-05-18 Marius Vollmer <mvo@zagadka.de>
3915
3916 * hashtab.c (rehash_after_gc): Bug fix: properly link the
3917 processed hashtables back into the weak_hashtables list. Thanks
3918 to Bill Schottstaedt!
3919
e7313a9d
DH
39202004-05-16 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3921
3922 * eval.c (unmemoize_quote): New static function.
3923
3924 (scm_m_quote, scm_m_atslot_ref, SCM_CEVAL): Changed the byte code
3925 representation of 'quote' and '@slot-ref' to an improper list.
3926 This reduces execution time, the number of cells used to hold the
3927 memoized code, and thus also reduces garbage collection time.
3928
3929 (scm_unmemocopy): Use unmemoize_quote for quote expressions.
3930
3931 (SCM_CEVAL): Changed macro handling to also work with macros that
3932 return improper lists. Added an assertion, that the code returned
3933 by a macro transformer will not lead to cycles in the memoized
3934 code.
3935
e5156567
DH
39362004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3937
3938 No functional change, just rearrangements of functions within the
3939 file.
3940
3941 * eval.c (scm_ilookup, scm_unbound_variable_key,
3942 error_unbound_variable, scm_lookupcar1, scm_lookupcar): Moved to
3943 the definitions used for execution, since that's where they will
3944 belong to later.
3945
651f07f8
DH
39462004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3947
3948 * numbers.h (SCM_SLOPPY_FRACTIONP): Removed. It was not used
3949 throughout guile, has not been part of an official release yet,
3950 and the concept of sloppy predicates has never been a good idea.
3951
3952 (SCM_FRACTION_NUMERATOR, SCM_FRACTION_DENOMINATOR,
3953 SCM_FRACTION_SET_NUMERATOR, SCM_FRACTION_SET_DENOMINATOR):
3954 Simplified.
3955
770e048f
DH
39562004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3957
3958 * throw.c (SETJBJMPBUF, SCM_SETJBDFRAME): Add cast to scm_t_bits
3959 to make explicit what happens.
3960
2ff08405
DH
39612004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3962
3963 * dynl.c (SET_DYNL_HANDLE): Add cast to scm_t_bits to make
3964 explicit what happens.
3965
3966 * guardians.c (TCONC_IN): Use SCM_SET_CELL_OBJECT_x rather than
3967 SCM_SET_CELL_WORD_x when writing scheme objets to cell elements.
3968
89afb9cd
MV
39692004-05-11 Marius Vollmer <mvo@zagadka.de>
3970
3971 * scmsigs.c (scm_sigaction_for_thread): Validate that the handler
3972 is indeed a procedure when it isn't a number.
3973
3d5ebfa9
MV
39742004-05-10 Marius Vollmer <mvo@zagadka.de>
3975
3976 Convert floating point numbers into strings with an arbitrary
3977 radix. Thanks to Richard Todd!
3978
3979 * numbers.c (FLOBUFLEN): Increase so that radix 2 strings will
3980 fit.
3981 (fx): Removed.
3982 (scm_dblprec, fx_per_radix, init_dblprec, init_fx_radix,
3983 number_chars): New, to support variable radices.
3984 (idbl2str): Use above instead of the old base-10 only tables.
3985 (iflo2str): Pass on new RADIX argument to idbl2str.
3986 (scm_number_to_string): Pass radix to iflo2str.
3987 (scm_print_real, scm_print_complex): Explicitly pass radix 10 to
3988 iflo2str.
3989 (scm_init_numbers): Call init_dblprec and init_fx_radix for all
3990 possible radices.
3991
3ae69bb4
KR
39922004-05-10 Kevin Ryde <user42@zip.com.au>
3993
3994 * numbers.c (scm_logbit_p): Correction to test above the end of an
3995 inum. Reported by Jan Konecny.
3996
27968825
MV
39972004-05-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3998
3999 * gc.h (scm_t_cell): Fields are now of type SCM instead of
4000 scm_t_bits. Updated all users.
4001 (SCM_GC_CARD_SIZE_MASK): Use SCM_GC_SIZEOF_CARD instead of
4002 duplicating the code.
4003 (SCM_CELL_OBJECT_LOC): New.
4004 (SCM_CARLOC, SCM_CDRLOC): Use it instead of SCM_CELL_WORD_LOC.
4005 (SCM_CELL_WORD_LOC): Moved to "deprecated.h".
4006
4007 * smob.h (SCM_SMOB_DATA_2, SCM_SMOB_DATA_3, SCM_SMOB_FLAGS,
4008 SCM_SET_SMOB_DATA_2, SCM_SET_SMOB_DATA_3, SCM_SET_SMOB_FLAGS,
4009 SCM_SMOB_OBJECT, SCM_SMOB_OBJECT_2, SCM_SMOB_OBJECT_3,
4010 SCM_SET_SMOB_OBJECT, SCM_SET_SMOB_OBJECT_2, SCM_SET_SMOB_OBJECT_3,
4011 SCM_SMOB_OBJECT_LOC, SCM_SMOB_OBJECT_2_LOC,
4012 SCM_SMOB_OBJECT_3_LOC): New.
4013 * smob.c (scm_i_set_smob_flags): New function.
4014
4015 * dynl.c, dynwind.c, eval.h, fluids.h, futures.h, hashtab.h,
4016 hooks.h, keywords.h, macros.h, macros.c, mallocs.c, mallocs.h,
4017 random.h, regex-posix.h, root.h, srcprop.h, srcprop.c, threads.h:
4018 Use SCM_SMOB_* instead of SCM_CELL_* as appropriate. Use
4019 SCM_SMOB_FLAGS and SCM_SET_SMOB_FLAGS instead of accessing the
4020 zeroth word directly. Use SCM_SMOB_PREDICATE as appropriate.
4021
4022 * numbers.h (SCM_I_BIG_MPZ): Use SCM_CELL_OBJECT_LOC instead of
4023 taking the address of SCM_CELL_WORD_1, the latter being no longer
4024 an lvalue.
4025
4026 * variable.h (SCM_VARIABLE_LOC): Use SCM_CELL_OBJECT_LOC instead
4027 of casting SCM_CELL_WORD_LOC.
4028
3cf17ef0
KR
40292004-05-02 Kevin Ryde <user42@zip.com.au>
4030
37026925 4031 * eval.c (scm_macroexp): Add prototype, since it's not in eval.h under
9a5fa6e9 4032 --disable-deprecated. Reported by Andreas Vögele.
37026925 4033
3cf17ef0 4034 * filesys.c (_POSIX_C_SOURCE): Define to 199506L to get readdir_r (in
9a5fa6e9 4035 particular on HP-UX). Reported by Andreas Vögele.
3cf17ef0 4036
c5854598
KR
4037 * list.c (varargs.h): Remove, leave just stdarg.h which is all the
4038 code has support for. Fixes building with AIX cc, which is ansi but
4039 doesn't define __STDC__. Reported by Keith Crane.
4040 (var_start): Remove macro, this variation no longer required.
4041 (scm_list_n): Use va_start directly.
4042
f26c1a32
KR
40432004-05-01 Kevin Ryde <user42@zip.com.au>
4044
4045 * continuations.c (scm_dynthrow): Use >= instead of SCM_PTR_GE which
9a5fa6e9 4046 is now gone. Reported by Andreas Vögele.
f26c1a32 4047
dfa6017e
KR
40482004-04-28 Kevin Ryde <user42@zip.com.au>
4049
4050 * backtrace.c (display_frame_expr), numbers.c (XDIGIT2UINT,
4051 mem2uinteger, mem2decimal_from_point, mem2ureal): Cast char to int for
4052 ctype.h tests, to avoid warnings from gcc on HP-UX about char as array
9a5fa6e9 4053 subscript. Reported by Andreas Vögele.
dfa6017e
KR
4054 Also cast through unsigned char to avoid passing negatives to those
4055 macros if input contains 8-bit values.
4056
4057 * num2integral.i.c (NUM2INTEGRAL): Under non-BIGMPZ_FITSP case,
4058 corrections to range check for signed numbers. Remove
4059 scm_remember_upto_here_1(num) from these checks, since num is used
4060 subsequently anyway.
4061
4062 * num2integral.i.c (NUM2INTEGRAL): Test BIGMPZ_FITSP with "!= 0" to
4063 avoid warning from gcc 3.4. Reported by Hyperdivision.
4064
4065 * numbers.c (scm_bit_extract): Use min instead of MIN.
4066 (MIN): Remove, this conflicts with similar macro defined by limits.h
9a5fa6e9 4067 on HP-UX. Reported by Andreas Vögele.
dfa6017e
KR
4068
4069 * stime.c (_POSIX_C_SOURCE): Define to 199506L to get gmtime_r (in
9a5fa6e9 4070 particular on HP-UX). Reported by Andreas Vögele.
dfa6017e 4071
a0d06a00 4072 * threads.c (scm_threads_mark_stacks): Correction sizet -> size_t.
9a5fa6e9 4073 Reported by Andreas Vögele.
a0d06a00 4074
dfa6017e
KR
4075 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 25*sizeof(long),
4076 for the benefit of hpux11 where pthread_mutex_t is 88 bytes. Reported
9a5fa6e9 4077 by Andreas Vögele.
dfa6017e 4078
36245b66
DH
40792004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4080
4081 * eval.c (s_macro_keyword): New static identifier.
4082
4083 (scm_m_define): Change order to first create binding and
4084 evaluating the expression afterwards.
4085
4086 (scm_m_set_x): Memoize complete set! expression. Only leave
4087 symbols if no binding exists at memoization time. Throw error if
4088 assigning to a syntactic keyword.
4089
4090 (lazy_memoize_variable): New function.
4091
4092 (CEVAL): When execution set!, perform lazy memoization if
4093 unmemoized symbol is detected.
4094
4095 * modules.c (module_variable): Return variables with unbound
4096 value.
4097
4098 * tags.h: Fix comment.
4099
4d81111e
KR
41002004-04-25 Kevin Ryde <user42@zip.com.au>
4101
da8bcb2f
KR
4102 * chars.c (scm_char_upcase, scm_char_downcase, scm_c_upcase,
4103 scm_c_downcase): Use ctype.h toupper and tolower. This will be useful
4104 in 8-bit locales, and ensures consistency with char-upper-case? and
4105 char-lower-case? which already use ctype.h.
4106 (scm_c_upcase_table, scm_c_downcase_table, scm_lowers, scm_uppers):
4107 Remove.
4108 * chars.c, chars.h, init.c (scm_tables_prehistory): Remove.
4109
4d81111e
KR
4110 * socket.c (VALIDATE_INET6): Correction to bignum_in_ipv6_range_p
4111 call. Reported by Hyperdivision.
4112
4113 * threads.c (scm_yield): Correction, actually call scm_thread_yield.
4114 Reported by Hyperdivision.
4115
4116 * unif.c (s_scm_make_uve): Remove unused local variable. Reported by
4117 Hyperdivision.
4118
7e6e6b37
DH
41192004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4120
4121 Hide the implementation of ilocs and isyms in eval.c.
4122
4123 * deprecated.h (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4124 SCM_ICDRP), eval.c (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4125 SCM_ICDRP), eval.h (SCM_ICDR, SCM_IFRINC, SCM_IFRAME, SCM_IDIST,
4126 SCM_ICDRP): Deprecated and added to deprecated.h. Moved from
4127 eval.h to eval.c.
4128
4129 * deprecated.c (scm_isymnames), deprecated.h (scm_isymnames,
4130 SCM_ISYMNUM, SCM_ISYMCHARS), eval.c (SCM_ISYMNUM, isymnames,
4131 scm_unmemocopy, CEVAL), print.c (scm_isymnames), tags.h
4132 (SCM_ISYMNUM, scm_isymnames, SCM_ISYMCHARS): Deprecated
4133 scm_isymnames, SCM_ISYMNUM and SCM_ISYMCHARS and added to
4134 deprecated.[hc]. Moved scm_isymnames from print.c to eval.c and
4135 renamed to isymnames. Moved SCM_ISYMNUM from tags.h to eval.c and
4136 renamed to ISYMNUM.
4137
4138 * eval.c (scm_i_print_iloc, scm_i_print_isym), eval.h
4139 (scm_i_print_iloc, scm_i_print_isym), print.c (scm_iprin1):
4140 Extracted printing of ilocs and isyms to guile internal functions
4141 scm_i_print_iloc, scm_i_print_isym of eval.c.
4142
caab294f
KR
41432004-04-22 Kevin Ryde <user42@zip.com.au>
4144
7aaf4758
KR
4145 * numbers.c (scm_bit_extract): Use SCM_SRS for signed right shift.
4146
caab294f
KR
4147 * numbers.c (scm_round): Test for x already an integer, to avoid bad
4148 rounding in x+0.5 when x is a big value already an integer. In
4149 certain hardware rounding cases x+0.5 can give an adjacent integer,
4150 leading to that as the result, when we really just wanted x itself.
4151
b1cb24ff
DH
41522004-04-19 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4153
4154 * eval.c (scm_unmemocopy): Fixed unmemoization of let*.
4155
4156 (deval_args, CEVAL): Minor improvements: Reduced variable scopes,
4157 added const qualifiers, cast intentionally unused expressions to
4158 void for emphasis, improved comment.
4159
5065b40d
DH
41602004-04-18 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4161
4162 * tags.h (scm_tags, scm_tc8_tags, scm_tc9_flag, scm_tc8_flag,
4163 scm_tc8_isym): Renamed scm_tags to scm_tc8_tags. Renamed
4164 scm_tc9_flag to scm_tc8_flag. Introduced new identifier
4165 scm_tc8_isym. Defined tc8-tags relative to scm_tc3_imm24.
4166 Defined the tc8-tag for flags to be 0x04, which will mean that
4167 SCM_BOOL_F will also have the value 0x04 instead of 0x013c. Due
4168 to the reduced number of bits and the simpler bit pattern for
4169 SCM_BOOL_F, certain machines may be able to use more efficient
4170 processor instructions to deal with SCM_BOOL_F.
4171
4172 (SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA): Removed. These have
4173 never been defined in a released version, thus no need to
4174 deprecate them.
4175
4176 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Flags now use tc8
4177 instead of tc9 tags.
4178
4179 (SCM_ISYMP, SCM_MAKISYM, SCM_ISYMNUM): Isyms now use tc8 instead
4180 of tc9 tags.
4181
4182 (SCM_MAKSPCSYM): Removed. It is almost impossible that user code
4183 could have used this definition.
4184
4185 (SCM_IM_AND, SCM_IM_BEGIN, SCM_IM_CASE, SCM_IM_COND, SCM_IM_DO,
4186 SCM_IM_IF, SCM_IM_LAMBDA, SCM_IM_LET, SCM_IM_LETSTAR,
4187 SCM_IM_LETREC, SCM_IM_OR, SCM_IM_QUOTE, SCM_IM_SET_X): Now encoded
4188 as isyms, as special isyms don't exist any more.
4189
9fa6c119
KR
41902004-04-18 Kevin Ryde <user42@zip.com.au>
4191
e08d2eee
KR
4192 * filesys.c (scm_readdir): Use readdir_r when available, for thread
4193 safety.
4194
9fa6c119
KR
4195 * numbers.c (scm_max, scm_min): For big/real, use SCM_SWAP rather than
4196 explicit swapping code.
4197
c9cdd396
KR
41982004-04-15 Kevin Ryde <user42@zip.com.au>
4199
4200 * cpp_sig_symbols.in: Add SIGSYS.
4201
4202 * list.c (scm_append_x): Use iterative style, to avoid non-tail
4203 recursion.
4204
4205 * numbers.c (scm_max, scm_min): For inum/frac, frac/inum, big/frac,
4206 frac/big and frac/frac, use scm_less_p for exact comparison.
4207
83ac9c59
KR
4208 * numbers.c (scm_gcd): For inum/big, use mpz_gcd_ui by sharing code
4209 with big/inum.
4210
84a4be9a
KR
4211 * numbers.c (xisinf): Add a comment about solaris 7 lacking isinf.
4212
84fad130
HWN
42132004-04-06 Han-Wen Nienhuys <hanwen@xs4all.nl>
4214
6b69393d
HWN
4215 * inline.h (scm_cell): use SCM_GC_CELL_WORD for checking tag.
4216
84fad130
HWN
4217 * chars.h (scm_init_chars): change scm_{upcase,downcase} to
4218 scm_c_{up,down}case.
4219 (SCM_MAKE_CHAR): add (unsigned char) cast. This prevents havoc
4220 when hi-bit ASCII is subjected to SCM_MAKE_CHAR().
4221
c3110a30
KR
42222004-04-06 Kevin Ryde <user42@zip.com.au>
4223
0b288f36
KR
4224 * numbers.c (scm_ash): Remove stray "}" in docstring.
4225
ea2508c8
KR
4226 * numbers.c (scm_make_ratio): For inum/bignum integer detection, use
4227 x==SCM_MOST_NEGATIVE_FIXNUM explicitly, for clarity and to avoid
4228 calling mpz_cmp_ui in most cases.
4229
c3110a30
KR
4230 * numbers.c (scm_quotient, scm_remainder): In inum/big, use mpz_cmp_ui
4231 for big == abs(most-negative-fixnum) special case.
4232 (abs_most_negative_fixnum): Remove, no longer used.
4233
4234 * scmsigs.c (scm_sigaction_for_thread): Correction to signum range
4235 test, avoids SCM_VECTOR_REF outside bounds of signal_handlers on
4236 calling (sigaction NSIG).
4237
4238 * simpos.c (scm_system_star): Fix execargv memory leak, merge parent
4239 and fork error cases to do this.
4240
dec40cd2
DH
42412004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4242
4243 * eval.c (CEVAL): Don't distinguish between short and long
4244 instructions when dispatching - just always dispatch on the
4245 instruction code, which is common for short and long instructions.
4246 Further, removed unnecessary goto statements and added comment.
4247
0e7bb795
DH
42482004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4249
4250 * eval.c (scm_unmemocopy): Don't distinguish between short and
4251 long instructions when dispatching - just always dispatch on the
4252 instruction code, which is common for short and long instructions.
4253 Further, removed unnecessary goto statements, fixed indentation
4254 and replaced SCM_IMP predicates by SCM_NULLP.
4255
f9986767
DH
42562004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4257
4258 * eval.c (scm_lookupcar1, CEVAL): Use SCM_ILOCP instead of
4259 comparison with SCM_ILOC00. In CEVAL, eliminate goto-label
4260 'checkmacro'.
4261
fbc42231
KR
42622004-03-31 Kevin Ryde <user42@zip.com.au>
4263
4264 * simpos.c: Include <signal.h> for SIG_IGN and friends.
4265
434f2f7a
DH
42662004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4267
4268 Introduce scm_debug_mode_p as a replacement for scm_debug_mode and
4269 SCM_DEBUGGINGP:
4270
4271 * debug.h (scm_debug_mode_p, scm_debug_mode, SCM_DEBUGGINGP),
4272 eval.c (scm_debug_mode_p): Deprecated scm_debug_mode and
4273 SCM_DEBUGGINGP. Provided scm_debug_mode_p instead, to have one
4274 single interface that also matches the naming conventions.
4275 Probably scm_debug_mode_p should be part of the private interface
4276 anyway.
4277
4278 * debug.h (scm_debug_mode_p), backtrace.c (display_error_body),
4279 eval.c (SCM_APPLY, scm_trampoline_0, scm_trampoline_1,
4280 scm_trampoline_2): Change uses of scm_debug_mode or SCM_DEBUGGINGP
4281 to scm_debug_mode_p.
4282
4283
4284 Deprecate direct access to scm_ceval, scm_deval and scm_ceval_ptr:
4285
4286 * eval.h (scm_ceval, scm_deval, scm_ceval_ptr), debug.h
4287 (scm_ceval_ptr): Deprecated. Moved declaration of scm_ceval_ptr
4288 from debug.h to eval.h.
4289
4290 * debug.h (SCM_RESET_DEBUG_MODE): Don't access scm_ceval_ptr any
4291 more, just leave it with setting scm_debug_mode_p, which is
4292 equivalent for practical purposes.
4293
4294 * deprecated.h (SCM_XEVAL, SCM_XEVALCAR): Call scm_i_eval_x
4295 instead of *scm_ceval_ptr. Leave all evaluating to scm_i_eval_x.
4296
4297 * gdbint.c (gdb_eval): Call scm_i_eval_x instead of scm_ceval.
4298
4299 * eval.c (ceval, deval, scm_ceval, scm_deval): Made scm_ceval
4300 static and renamed it to ceval throughout. Provide a new exported
4301 but deprecated function scm_ceval as a wrapper for backwards
4302 compatibility. The same is done for the deval/scm_deval pair of
4303 functions.
4304
4305 * eval.c (CEVAL, SCM_CEVAL): Renamed SCM_CEVAL to CEVAL
4306 throughout. Defined CEVAL to ceval or deval, based on compilation
4307 phase.
4308
4309 * eval.c (SCM_XEVAL, SCM_XEVALCAR): Dispatch on scm_debug_mode_p
4310 to ceval and deval instead of calling *scm_ceval_ptr.
4311
4312 * eval.c (dispatching_eval): New deprecated static function.
4313
4314 * eval.c (scm_ceval_ptr): Initialized to dispatching_eval in order
4315 to emulate its old behaviour as closely as possible.
4316
4317
4318 Change the evaluator such that only expressions for which pair? is
4319 true are passed to CEVAL, and such that all other expressions are
4320 evaluated outside of CEVAL:
4321
4322 * eval.c (EVAL): New, provided in analogy to EVALCAR. Evaluate an
4323 expression that is assumed to be memoized already. All but
4324 expressions of the form '(<form> <form> ...)' are evaluated inline
4325 without calling an evaluator.
4326
4327 * eval.c (SCM_XEVAL, SCM_XEVALCAR, EVALCAR): Evaluate all but
4328 expressions of the form '(<form> <form> ...)' inline without
4329 calling an evaluator.
4330
4331 * eval.c (scm_i_eval_x, scm_i_eval, scm_ceval, scm_deval): Handle
4332 the special case of unmemoized symbols passed on the top level.
4333
4334 * eval.c (CEVAL): Change calls to CEVAL to EVAL, except where it
4335 is known that the expression passed to CEVAL is of the form
4336 '(<form> <form> ...)'. Remove handling of the tc7-objects, since
4337 now it is known that the input expression of CEVAL is a pair.
4338
43392004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5fb64383
DH
4340
4341 * eval.c (is_self_quoting_p): New static function.
4342
4343 (scm_m_quote): Use is_self_quoting_p.
4344
4345 (copy_tree): Corrected typo in comment.
4346
702551e6
HWN
43472004-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
4348
bfefbf18
HWN
4349 * eval.c (s_scm_copy_tree): idem.
4350
4351 * list.c (s_scm_filter): remove "pointer" from doc string.
4352
702551e6
HWN
4353 * gc.h (SCM_GC_CELL_TYPE): SCM_GC_CELL_TYPE uses SCM_GC_CELL_OBJECT.
4354
4355 * goops.h (SCM_NUMBER_OF_SLOTS): don't SCM_UNPACK the result.
4356
4357 * backtrace.c ("display_backtrace_body"): SCM_PACK before SCM_EQ_P
4358 (display_frame): idem.
4359 (display_backtrace_file_and_line): idem.
4360
4361 * tags.h (SCM_UNPACK): stricter typechecking on SCM_UNPACK
4362 arguments.
4363
3cd23214
KR
43642004-03-26 Kevin Ryde <user42@zip.com.au>
4365
88a7ae1f
KR
4366 * filesys.c (scm_getcwd, scm_readlink): Avoid memory leak on errors.
4367
3cd23214
KR
4368 * numbers.c (scm_modulo): For inum/big and big/big, remove test of
4369 big==0 since that never occurs.
4370
4371 * numbers.c, numbers.h (scm_modulo_expt): Renamed from
4372 scm_modular_expt, matching scheme level name `modulo-expt'.
4373
4374 * numbers.c (scm_modular_expt): Return a negative remainder for a
4375 negative divisor, the same as `modulo' does.
4376
43772004-03-26 Eric Hanchrow <offby1@blarg.net>
4378
4379 * numbers.c, numbers.h (scm_modular_expt): New function.
4380
2926035a
KR
43812004-03-25 Kevin Ryde <user42@zip.com.au>
4382
4383 * numbers.c (scm_min, scm_max): Correction to big/real and real/big,
4384 return inexact as required by r5rs.
4385
62360b89
DH
43862004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4387
4388 * eval.c: Separated some definitions relevant for execution from
4389 the memoization part of the file.
4390
4391 (copy_tree): New static function
4392
4393 (scm_copy_tree): Rewritten to fix two kinds or bugs: First, cyclic
4394 structures are detected now and will lead to an exception instead
4395 of forcing guile to run in an endless loop, using up all the
4396 system's memory. Second, arrays in the cdr of an improper list
4397 are now copied. See the new test cases in eval.test.
4398
43992004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
b28f5b3c
DH
4400
4401 * posix.c (scm_gethostname): Make sure len is initialised before
4402 it is used. Restructured to (hopefully) represent possible
4403 configurations more clearly in the code. Added unwind handler.
4404
3bd3bae8
KR
44052004-03-23 Kevin Ryde <user42@zip.com.au>
4406
4407 * posix.c (scm_gethostname): Use sysconf(_SC_HOST_NAME_MAX) and/or
4408 MAXHOSTNAMELEN when available.
4409
254bf78d
MV
44102004-03-21 Marius Vollmer <mvo@zagadka.de>
4411
4412 * read.c (skip_scsh_block_comment): Also recognize '\r' as a line
4413 terminator. Rewritten the logic as a state machine, I must have
4414 been doing too much VHDL lately...
4415
4416 * eval.c (scm_ceval, scm_deval): Explicitely evaluate ports to
4417 themselves. Thanks to Han-Wen Nienhuys!
4418
4419 * list.c: Changed docstrings so that they no longer talk about
4420 returning 'pointers' to something.
4421
009c34a2
HWN
44222004-03-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
4423
4424 * gc.c: remove set_debug_cell_accesses! when
4425 SCM_DEBUG_CELL_ACCESSES is not defined. Scheme source code should
4426 use (if (defined? 'set-debug-cell-accesses!) .. ) to switch on
4427 debugging conditionally.
4428
54733c95
KR
44292004-03-21 Kevin Ryde <user42@zip.com.au>
4430
4431 * stime.c (scm_gmtime): Use gmtime_r when available, for thread safety.
4432
bbaf8747
KR
44332004-03-20 Kevin Ryde <user42@zip.com.au>
4434
4435 * posix.c (scm_gethostname): Preserve errno across free() call.
4436
726f82e7
HWN
44372004-03-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
4438
4439 * gc-card.c (sweep_card): use SCM_GC_SET_CELL_WORD for setting
4440 free cells.
4441
e1350d6a
KR
44422004-03-14 Kevin Ryde <user42@zip.com.au>
4443
4444 * stime.c: Define _GNU_SOURCE for strptime prototype from glibc.
4445 (strptime): Use HAVE_DECL_STRPTIME for when to give own prototype.
4446
62055253
KR
44472004-03-07 Kevin Ryde <user42@zip.com.au>
4448
4449 * stime.c (scm_gmtime): Return bd_time->tm_zone when available, rather
4450 than "GMT" always.
4451 (filltime): Make zname parameter "const".
4452
92e64b87
MD
44532004-03-03 Mikael Djurfeldt <mdj@chunk.mit.edu>
4454
4455 * threads.c, threads.h (scm_c_scm2thread): New function.
4456
004ad931
KR
44572004-02-29 Kevin Ryde <user42@zip.com.au>
4458
4459 * numbers.c (guile_ieee_init): Use C99 INFINITY and NAN when
4460 available. Test HAVE_DINFINITY and HAVE_DQNAN for those globals, in
4461 particular don't assume "defined (__alpha__) && ! defined (linux)"
4462 means OSF. Remove "SCO" code, which was not really SCO specific and
4463 which John W. Eaton advises should be long past being needed.
4464
4465 * posix.c (scm_execl, scm_execlp, scm_execle): Avoid memory leak under
4466 error throw.
4467
72ea45ac
KR
44682004-02-24 Kevin Ryde <user42@zip.com.au>
4469
4470 * posix.c (scm_cuserid): Use a private result buffer, for thread safe.
4471
2af0602e
KR
44722004-02-22 Kevin Ryde <user42@zip.com.au>
4473
4474 * numbers.c (scm_max, scm_min): For one arg, dispatch to generic for
4475 complex, same as for two args. (Handle only inum, big, real, frac).
4476
b114eafe
KR
44772004-02-21 Kevin Ryde <user42@zip.com.au>
4478
4479 * posix.c (scm_crypt): Use new HAVE_CRYPT.
4480 (<crypt.h>): Remove HAVE_LIBCRYPT condition.
db752bb5 4481 Reported by Andreas Voegele.
b114eafe 4482
1e55d288
NJ
44832004-02-20 Neil Jerram <neil@ossau.uklinux.net>
4484
4485 * list.c (scm_list_n): Add #if SCM_DEBUG_CELL_ACCESSES_P around
4486 validation.
4487
4488 * read.c (scm_lreadparen): Removed.
4489 (scm_lreadparen1): Renamed scm_i_lreadparen.
4490
eb741d98
HWN
44912004-02-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
4492
4493 * list.c (scm_list_n): validate non-immediate arguments;
4494 this will catch forgotten a SCM_UNDEFINED.
4495
4e28ba5e
MV
44962004-02-18 Marius Vollmer <mvo@zagadka.de>
4497
4498 * gc.h (scm_gc_cells_collected): Removed duplicated declaration.
4499 Thanks to Bill Schottstaedt!
4500
4501 * socket.h (scm_gethost): Removed prototype it is already in
4502 "net_db.h". Thanks to Bill Schottstaedt!
4503
ef861ead
KR
45042004-02-18 Kevin Ryde <user42@zip.com.au>
4505
4506 * num2integral.i.c (INTEGRAL2BIG): WORDS_BIGENDIAN not right for word
4507 order parameter to mpz_import, in fact with just one word there's no
4508 order to worry about at all.
4509
4510 * numbers.c (scm_num_eq_p): For real==frac, complex==frac, frac==real
4511 and frac==complex, make an exact comparison rather than converting
4512 with fraction2double.
4513
4514 * posix.c, putenv.c, stime.c (environ): Use _NSGetEnviron in Darwin
4515 shared library, since environ is not directly available there.
4516
4517 * script.c (scm_shell_usage): Print to stdout for --help, per GNU
4518 standard.
4519
4520 * stime.c (scm_localtime, scm_gmtime, scm_mktime): Provide a default
4521 errno EINVAL in case localtime and gmtime don't set it.
4522 (scm_mktime, scm_strptime): Forcibly use errno EINVAL for our
4523 SCM_SYSERROR, since mktime and strptime generally don't set errno.
4524
ae43d08e 45252004-02-16 Kevin Ryde <kevin@swox.se>
292dfa7f 4526
c9ea6462
KR
4527 * gc-malloc.c (scm_done_malloc, scm_done_free): Allow negative sizes,
4528 which were permitted in the past for these.
4529
292dfa7f
KR
4530 * num2float.i.c (NUM2FLOAT): Expand isfinite to !xisinf, as per
4531 previous change to numbers.c.
4532
ae43d08e
KR
4533 * script.c (scm_shell_usage): Print bug-guile email address, as per
4534 GNU standard. Reported by Han-Wen Nienhuys.
4535
711a9fd7
MD
45362004-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
4537
4538 * unif.c (scm_make_uve): Removed local variable and simplified
4539 code in order to avoid compiler used uninitialized warnings.
4540
4541 * hashtab.c, hashtab.h (scm_hash_map_to_list): Renamed from
4542 scm_hash_map.
4543 (scm_hash_fold): Use scm_call_3 directly in the call to
4544 scm_internal_hash_fold instead of going via fold_proc (which is
4545 now removed).
4546 (scm_hash_for_each): Use a trampoline +
4547 scm_internal_hash_for_each_handle.
4548 (scm_internal_hash_for_each_handle, scm_hash_for_each_handle): New
4549 functions.
4550
3da7f6b2
KR
45512004-02-12 Kevin Ryde <user42@zip.com.au>
4552
344a212f
KR
4553 * ports.c (scm_port_line): In docstring, note first line is 0.
4554 (scm_set_port_line_x): In docstring, note first line is 0.
4555 (scm_port_column): In docstring, there's no default to current input
4556 port, and remove shared port-line @defun.
4557 (scm_set_port_column_x): In docstring, there's no default to current
4558 input port, note first column is 0, remove shared set-port-line!
4559 @defun.
4560
3da7f6b2
KR
4561 * ramap.c (scm_array_fill_x): For fvect and dvect, use scm_num2dbl to
4562 convert args the same way that array-set! does.
4563
4564 * unif.c (scm_make_uve, scm_array_p): Allow fraction 1/3 as prototype
4565 for dvect.
4566 (scm_array_p): Add missing "break"s in switch, fix llvect test look
4567 for "l" not "s", fix dvect to be false for singp(prot) since such a
4568 value is for fvect.
4569 (scm_array_prototype): Return 1/3 for dvect, rather than 0.33..33.
88531a74
KR
4570 (exactly_one_third): New variable.
4571 (scm_init_unif): Initialize it.
3da7f6b2 4572
cd21f5eb
NJ
45732004-02-10 Neil Jerram <neil@ossau.uklinux.net>
4574
4575 * read.c (scm_read_opts): Change `escaped-parens' to
4576 `elisp-strings'.
4577
16353acc
NJ
45782004-02-08 Neil Jerram <neil@ossau.uklinux.net>
4579
4580 * read.c (scm_read_opts): New opts `elisp-vectors' and
4581 `escaped-parens'.
4582 (s_vector): New.
4583 (scm_lreadr): Use scm_lreadparen1 instead of scm_lreadparen. Make
4584 handling of elisp vector syntax dependent on SCM_ENABLE_ELISP and
4585 `elisp-vectors' option instead of SCM_ELISP_READ_EXTENSIONS.
4586 Allow "\(" and "\)" in strings when SCM_ENABLE_ELISP defined and
4587 `escaped-parens' option set.
4588 (scm_read_token): If elisp vector syntax active, disallow [ and ]
4589 in tokens.
4590 (scm_lreadparen): Rewrite as interface to scm_lreadparen1.
4591 (scm_lreadparen1): New.
4592
4593 * read.h: Remove conditionally compiled last arg to
4594 scm_lreadparen.
4595 (SCM_ELISP_VECTORS_P, SCM_ESCAPED_PARENS_P): New.
4596
f62b9dff
HWN
45972004-01-23 Han-Wen Nienhuys <hanwen@xs4all.nl>
4598
4599 * eval.c (m_expand_body): remove stray variable new_body.
4600
ef5b6b61
MV
46012004-01-22 Marius Vollmer <mvo@zagadka.de>
4602
4603 * eval.c (m_expand_body): Rewrite the expression in place (by
4604 overwriting FORMS) also when a letrec is constructed, not only
4605 when no definitions are found. Do not return rewritten expression
4606 to emphasize the in-place rewriting. Changed all users.
4607
7eec4c37
HWN
46082004-01-19 Han-Wen Nienhuys <hanwen@xs4all.nl>
4609
4610 * gc.c: add protected_object_count, a number that is dumped from
4611 gc_stats()
4612
25ffbdac
MV
46132004-01-11 Marius Vollmer <mvo@zagadka.de>
4614
4615 * dynwind.h, dynwind.c (scm_frame_unwind,
4616 scm_frame_unwind_handler): Renamed and changed all uses.
4617 (scm_frame_rewind, scm_frame_rewind_handler): Likewise.
4618
08568c95
KR
46192004-01-11 Kevin Ryde <user42@zip.com.au>
4620
4621 * unif.c (scm_bit_count, scm_bit_position, s_scm_bit_set_star_x,
4622 s_scm_bit_count_star, s_scm_bit_invert_x): Clarify docstrings, as per
4623 changes made to scheme-compound.texi.
4624
5565749c
MV
46252004-01-10 Marius Vollmer <mvo@zagadka.de>
4626
25ffbdac
MV
4627 * print.c (scm_print_symbol_name): Handle #{`foo}#, #{,foo}#,
4628 #{.}#, and all numeric strings specially. Thanks to Paul Jarc!
4629
4630 * guile-snarf.in: Use mkdir to create a unique temporary directory
4631 that we can safely use. Thanks to Stefan Nordhausen!
5565749c 4632
fc6bb283
MV
46332004-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4634
7ebccde8
MV
4635 * dynwind.h, dynwind.c (scm_i_dowinds): Removed 'explicit'
4636 argument since it is always zero now. Changed all callers.
4637 Removed code for handling fluids.
96e3b2f8
MV
4638
4639 * fluids.c (scm_c_with_fluids): Use frames instead of adding to
4640 the wind chain explicitely. Use scm_c_with_fluid for the common
4641 case of only one fluid.
4642 (scm_with_fluid): New.
4643 (scm_c_with_fluid): Use frames instead of scm_c_with_fluids.
4644
fc6bb283 4645 * fluids.h, fluids.c (scm_frame_fluid): New.
96e3b2f8
MV
4646 (scm_with_fluid): New.
4647 (scm_i_swap_fluids, scm_i_swap_fluids_reverse): Removed.
fc6bb283
MV
4648
4649 * dynwind.c (scm_frame_end): Do not use scm_i_dowinds. Instead,
4650 do the unwinding directly. It is simple enough.
4651
4652 * dynwind.h, dynwind.c: Did the following renamings:
4653 scm_begin_frame -> scm_frame_begin,
4654 scm_end_frame -> scm_frame_end,
4655 scm_on_unwind -> scm_frame_unwind,
4656 scm_on_rewind -> scm_frame_rewind,
4657 scm_on_unwind_with_scm -> scm_frame_unwind_with_scm,
4658 scm_on_rewind_with_scm -> scm_frame_rewind_with_scm.
4659 Changed all uses.
4660
4661 * aync.h, async.c: Did the follwing renamings:
4662 scm_with_blocked_asyncs -> scm_frame_block_asyncs,
4663 scm_with_unblocked_asyncs -> scm_frame_unblock_asyncs.
4664 Changed all uses.
4665
4666 * ports.h, ports.c: Did the follwing renamings:
4667 scm_with_current_input_port -> scm_frame_current_input_port,
4668 scm_with_current_output_port -> scm_frame_current_output_port,
4669 scm_with_current_error_port -> scm_frame_current_error_port.
4670 Changed all uses.
4671
298ab996
KR
46722004-01-07 Kevin Ryde <user42@zip.com.au>
4673
4674 * numbers.c (s_bignum): Remove, not used since gmp bignums.
4675 Reported by Richard Todd.
4676
ba40113e
KR
4677 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 12*sizeof(long),
4678 for the benefit of powerpc-apple-darwin5.5. Reported by Richard Todd.
4679
298ab996
KR
4680 * unif.c (scm_aind): Test SCM_CONSP rather than !SCM_NULLP while
4681 traversing the args list, fixes segv if an improper list is given.
4682 Reported by Rouben Rostamian.
4683
aacff585
MV
46842004-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4685
4686 * ports.c (swap_ports, scm_with_current_foo_port): Do not allocate
4687 swap_data on stack, use a 'malloc obj'.
4688
4689 * fluids.h, fluids.c (scm_make_initial_fluids, scm_copy_fluids,
4690 scm_swap_fluids, scm_swap_fluids_reverse): Renamed to
4691 scm_i_... since they are internal. Changed all uses.
4692
4693 * dynwind.c (frame_print): Removed, use the default printer.
4694 (WINDER_F_MARK, WINDER_MARK_P, winder_mark): New.
4695 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New. Use above
4696 to protect SCM values.
4697
4698 * dynwind.h (SCM_F_WIND_EXPLICITELY,
4699 SCM_F_WIND_EXPLICITLY): It's "explicitly" not "explicitely", damn.
4700 Changed all uses.
4701 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New.
4702
49c00ecc
MV
47032004-01-05 Marius Vollmer <mvo@zagadka.de>
4704
4705 * ports.h, ports.c (scm_with_current_input_port,
4706 scm_with_current_output_port, scm_with_current_error_port): New.
4707
4708 * async.h, async.c (scm_with_blocked_asyncs,
4709 scm_with_unblocked_asyncs): New.
4710
dab514a8
MV
47112004-01-03 Marius Vollmer <mvo@zagadka.de>
4712
4713 * dynwind.h, scm_dynwind.c (scm_t_frame_flags, scm_t_wind_flags,
4714 scm_begin_frame, scm_end_frame, scm_on_unwind, scm_on_rewind):
4715 New.
4716 (scm_dowinds, scm_i_dowinds): scm_dowinds has been renamed to
4717 scm_i_dowinds and extended to handle frames and to invoke a 'turn'
4718 function when the outermost wind point has been reached. The
4719 latter is used to copy a continuation stack at the right time.
4720 scm_dowinds remains available.
4721 (SCM_GUARDSP, SCM_BEFORE_GUARD, SCM_AFTER_GUARD, SCM_GUARD_DATA,
4722 tc16_guard, guards_print): Removed.
4723 (scm_internal_dynamic_wind): Reimplemented using frames.
4724
4725 * continuations.c (copy_stack): New, do only the stack copying
4726 part of copy_stack_and_call.
4727 (copy_stack_and_call): Copy the stack after unwinding and before
4728 rewinding.
4729 (scm_dynthrow): Do not call scm_dowinds, this is now done by
4730 copy_stack_and_call.
4731
441a25d9
KR
47322004-01-04 Kevin Ryde <user42@zip.com.au>
4733
4734 * numbers.c (scm_less_p): Don't convert frac to float for compares,
dab514a8 4735 can give bad results due to rounding.
441a25d9 4736
e0499207
KR
4737 * stime.c (scm_current_time, scm_gettimeofday): Add a comment about
4738 setzone/restorezone protection for DOS.
4739
89fcf1b4
MV
47402003-12-26 Marius Vollmer <mvo@zagadka.de>
4741
4742 * gen-scmconfig.h.in, gen-scmconfig.c: Arrange for scm_t_intmax
4743 and scm_t_uintmax to be defined in scmconfig.h
4744
caff34d4
KR
47452003-12-03 Kevin Ryde <user42@zip.com.au>
4746
4747 * numbers.c (scm_less_p): Remove spurious xisnan from frac+big case.
4748
4749 * numbers.c (scm_make_ratio): Check for numerator equal to
4750 SCM_MOST_NEGATIVE_FIXNUM and bignum denominator the negative of that,
4751 giving integer -1.
4752
4753 * numbers.c (scm_real_part): Return fraction unchanged rather than
4754 converting to flonum.
4755
2d0b85ac
DH
47562003-11-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
4757
4758 * modules.c (module_variable): Fixed (and thus simplified) the
4759 definition of SCM_BOUND_THING_P to reflect the fact that since
4760 after the 1.4 series of guile, obarrays only hold variable
4761 objects.
4762
2297981d
MV
47632003-11-30 Marius Vollmer <mvo@zagadka.de>
4764
4765 * numbers.c (scm_logand): It's "#b...", not "#\b...".
4766
4767 From Paul Jarc:
4768
4769 * read.c (scm_lreadr): Signal an error for invalid escape
4770 sequences in strings. Code cleanups too.
4771
4772 * print.c (scm_iprin1): use \xNN hexadecimal sequences when
4773 writing control characters in strings.
4774
47752003-11-21 Marius Vollmer <mvo@zagadka.de>
4776
4777 * ports.c (scm_drain_input): Bug fix: only access the port after
4778 checking that it indeed is one.
4779
5c264007
DH
47802003-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
4781
4782 * eval.c (s_bad_define): New static identifier.
4783
4784 (m_body): Fixed comment.
4785
4786 (scm_m_define): Don't generate memoized code for definitions that
4787 are not on the top level. As a consequence, no memoized code at
4788 all is generated for definitions any more: Top level definitions
4789 are executed immediately during memoization and internal
4790 definitions are handled separately in m_expand_body.
4791
4792 (scm_unmemocopy, unmemocopy): Removed code for unmemoizing
4793 definitions. Consequently, there is no unmemoizing code any more
4794 that might modify the environment. Thus, the old scm_unmemocopy
4795 is removed and the old unmemocopy is renamed to scm_unmemocopy.
4796
4797 (SCM_CEVAL): The SCM_IM_DEFINE keyword can no longer occur in
4798 memoized code. Call EVALCAR for continuations. Prefer !SCM_NULLP
4799 over SCM_NIMP in places, where the argument is known to be part of
4800 a proper list.
4801
018d4730
KR
48022003-11-21 Kevin Ryde <user42@zip.com.au>
4803
4804 * numbers.c (scm_abs): Allocate a new real only for negatives, as done
4805 for bignums.
4806
4807 * numbers.c (scm_bit_extract): Use mpz functions, rearrange inum case
4808 to share some shifting.
4809
4810 * numbers.c (scm_integer_expt): Don't mpz_init after scm_i_clonebig or
4811 scm_i_mkbig, since they do so already. Don't mpz_clear a bignum SCM,
4812 since gc does this.
4813
4bca30d8
MV
48142003-11-19 Marius Vollmer <mvo@zagadka.de>
4815
fb16d26e
MV
4816 * numbers.c (scm_make_ratio): Rewritten to have a simpler
4817 structure. Previously, not all cases with a negative denominator
4818 were covered.
4819
4bca30d8
MV
4820 * numbers.c (mem2decimal_from_point): use scm_divide instead of
4821 scm_divide2real when forming the fractional part. This allows
4822 "#e1.2" to yield 6/5.
4823
4824 * numbers.c (scm_i_fraction_equalp): Do not treat the return value
4825 of scm_equal_p as a C boolean, use SCM_FALSEP. Previously, all
4826 fractions were equal to each other regardless of value. Ooops.
4827
4828 * numbers.c (scm_rationalize): Return an inexact result when given
4829 inexact arguments.
4830
4831 * numbers.c (scm_exact_p, scm_inexact_p): Throw error for
4832 non-numbers.
4833
bdf26b60
MV
48342003-11-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4835
4836 Support for exact fractions from Bill Schottstaedt! Thanks!
4837
4838 * print.c (scm_iprin1): Handle fractions.
4839
4840 * objects.h (scm_class_fraction): New.
4841 * objects.c (scm_class_fraction): New.
4842 (scm_class_of): Handle fractions.
4843
4844 * hash.c (scm_hasher): Handle fractions.
4845
4846 * numbers.c: New code for handling fraction all over the place.
4847 (scm_odd_p, scm_even_p): Handle inexact integers.
4848 (scm_rational_p): New function, same as scm_real_p.
4849 (scm_round_number, scm_truncate_number, scm_ceiling, scm_floor):
4850 New exact functions that replace the inexact 'dsubr'
4851 implementations.
4852 (scm_numerator, scm_denominator): New.
4853
4854 * numbers.h (SCM_NUMP): Recognize fractions.
4855 (SCM_FRACTIONP, SCM_SLOPPY_FRACTIONP, SCM_FRACTION_NUMERATOR,
4856 SCM_FRACTION_DENOMINATOR, SCM_FRACTION_SET_NUMERATOR,
4857 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
4858 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
4859 SCM_FRACTION_REDUCED): New.
4860 (scm_floor, scm_ceiling, scm_truncate_number, scm_round_number):
4861 New prototypes.
4862 (scm_make_ratio, scm_rationalize, scm_numerator, scm_denominator,
4863 scm_rational_p): New prototypes.
4864 (scm_i_dbl2num, scm_i_fraction2double, scm_i_fraction_equalp,
4865 scm_i_print_fraction): New prototypes.
4866
4867 * goops.c (create_standard_classes): Create "<fraction>" class.
4868
4869 * gc-mark.c (scm_gc_mark_dependencies): Handle fractions.
4870
4871 * gc-card.c (scm_i_sweep_card): Include scm_tc16_fraction as a
4872 case in the switch, but do nothing for now.
4873
4874 * eval.c (SCM_CEVAL, SCM_APPLY, call_dsubr_1): Convert fractions
4875 to doubles when calling 'dsubr' functions.
4876
4877 * eq.c (scm_eqv_p, scm_equal_p): Handle fractions.
4878
28fda544
RB
48792003-11-18 Rob Browning <rlb@defaultvalue.org>
4880
4881 * gen-scmconfig.c (main): remove public definition of
4882 SCM_SIZEOF___INT64 and SCM_SIZEOF_UNSIGNED___INT64 and add
4883 direct typedef of long_long and ulong_long inside deprecated block
4884 when appropriate.
4885
4886 * deprecated.h: move long_long and ulong_long definitions to
4887 gen-scmconfig.c so that we don't need to add SCM_SIZEOF___INT64
4888 and SCM_SIZEOF_UNSIGNED___INT64 to the public namespace.
4889
b58e7420
MV
48902003-11-17 Marius Vollmer <mvo@zagadka.de>
4891
9a1d7d7c
MV
4892 * hash.c (scm_string_hash): New hashing algorithm that takes the
4893 complete string into account.
4894
b58e7420
MV
4895 * eval.c (scm_m_generalized_set_x): Macroexpand the target when it
4896 is a list. This allows (@ ...) to work with set!.
9a1d7d7c
MV
4897 (scm_m_generalized_set_x): Use ASSERT_SYNTAX_2 instead of
4898 SCM_ASSYNT.
b58e7420
MV
4899
4900 * script.c (scm_compile_shell_switches): Use scm_c_read_string for
4901 the "-e" option instead of scm_str2symbol. This allows things
4902 like (@ ...) to be specified for the entry point.
4903
461bffb1
DH
49042003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
4905
4906 * eval.c (scm_m_letstar): Create memoized code in place to
4907 minimize consing.
4908
6f81708a
DH
49092003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
4910
4911 * eval.c (s_splicing): Commented and reformulated.
4912
4913 (lookup_global_symbol, lookup_symbol): New static functions.
4914
4915 (s_test, s_bindings, s_duplicate_bindings, s_variable): Removed.
4916
4917 (try_macro_lookup, literal_p): Use lookup_symbol instead of
4918 creating a temporary pair for scm_lookupcar.
4919
4920 (scm_unmemocar, unmemocar): Renamed scm_unmemocar to unmemocar,
4921 created deprecated wrapper function scm_unmemocar.
4922
4923 (SCM_VALIDATE_NON_EMPTY_COMBINATION, scm_sym_else,
4924 scm_sym_unquote, scm_sym_uq_splicing, scm_sym_enter_frame,
4925 scm_sym_apply_frame, scm_sym_exit_frame, scm_sym_trace, f_apply,
4926 undefineds, sym_three_question_marks): Moved around without
4927 modifications.
4928
4929 * eval.c, eval.h (scm_macroexp, scm_unmemocar): Deprecated.
4930
910b5125
DH
49312003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
4932
4933 * eval.c (try_macro_lookup, expand_user_macros, is_system_macro_p,
4934 m_expand_body, scm_m_expand_body): Grouped together with m_body.
4935 No further modifications.
4936
c86c440b
DH
49372003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
4938
4939 * eval.c (s_mixed_body_forms): New static identifier.
4940
4941 (canonicalize_define, scm_m_define): The check for a bad
4942 expression is performed in canonicalize_define now.
4943
4944 (try_macro_lookup, expand_user_macros, is_system_macro_p): New
4945 static helper functions for m_expand_body.
4946
4947 (m_expand_body): Use ASSERT_SYNTAX to signal syntax errors. Only
4948 expand user defined macros. Fixed handling of the definition/
4949 expression boundary. Fixed handling of definitions grouped with
4950 'begin. Use canonicalize_define to expand definitions.
4951
3890131a
MV
49522003-11-13 Marius Vollmer <mvo@zagadka.de>
4953
b58e7420
MV
4954 * read.c (scm_lreadr): detect EOF after backslash, and interpret
4955 \xNN hexadecimal sequences. From Paul Jarc, thanks!
4956
5df36eac
MV
4957 * snarf.h (SCM_SMOB, SCM_GLOBAL_SMOB, SCM_SMOB_MARK,
4958 SCM_GLOBAL_SMOB_MARK, SCM_SMOB_FREE, SCM_GLOBAL_SMOB_FREE,
4959 SCM_SMOB_PRINT, SCM_GLOBAL_SMOB_PRINT, SCM_SMOB_EQUALP,
4960 SCM_GLOBAL_SMOB_EQUALP, SCM_SMOB_APPLY, SCM_GLOBAL_SMOB_APPLY):
4961 New macros from Paul Jarc. Thanks!
4962
3890131a
MV
4963 * gc_os_dep.c (scm_get_stack_base): Provide a definition that
4964 return NULL when the machine type is unknown. Previously,
4965 gc_os_dep.c would refuse to compile.
4966
430b8401
DH
49672003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
4968
4969 * eval.c (scm_m_body, m_body, scm_m_lambda, memoize_named_let,
4970 scm_m_let, scm_m_letrec, m_expand_body): Renamed static function
4971 scm_m_body to m_body.
4972
328dc9a3
DH
49732003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
4974
4975 * eval.c, eval.h (scm_m_expand_body, m_expand_body): Deprecated
4976 public use of scm_m_expand_body in eval.h. In eval.c, renamed
4977 scm_m_expand_body to m_expand_body and made it static. Added
4978 deprecated wrapper scm_m_expand_body.
4979
4980 (scm_eval_body, SCM_CEVAL, SCM_APPLY): Use m_expand_body instead
4981 of scm_m_expand_body.
4982
c2337a61
KR
49832003-11-09 Kevin Ryde <user42@zip.com.au>
4984
4985 * dynl.c (scm_dynamic_unlink): Need scm_list_1 on error message
4986 argument. Reported by Mike Gran.
4987
ced8edb0
DH
49882003-11-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
4989
4990 * eval.c (s_missing_body_expression): New static identifier.
4991
4992 (s_body): Removed.
4993
4994 (scm_m_expand_body): Fixed core dump when passing a body with
4995 defines, but without expressions (see additions to syntax.test).
4996 Use ASSERT_SYNTAX to signal syntax errors.
4997
0f572ba7
DH
49982003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
4999
5000 * eval.c (canonicalize_define): New static helper function.
5001
5002 (memoize_define, canonicalize_define): Extract handling of
5003 function currying to canonicalize_define.
5004
2510c810
DH
50052003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5006
5007 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
5008 Make sure that error checking in debug mode is not worse than in
5009 standard mode.
5010
34adf7ea
DH
50112003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5012
5013 * eval.c (scm_m_body, scm_m_lambda): Documentation strings are not
5014 handled in scm_m_body any more, but rather in scm_m_lambda.
5015
5016 (scm_m_body, memoize_named_let, scm_m_let, scm_m_letstar,
5017 scm_m_letrec, scm_m_expand_body): Check for validity is done by
5018 calling functions of scm_m_body.
5019
5020 (scm_m_lambda): Avoid unnecessary consing when creating the
5021 memoized code.
5022
89bff2fc
DH
50232003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5024
5025 * eval.c (s_expression): Added comment.
5026
5027 (s_empty_combination, error_unbound_variable): New static
5028 identifiers.
5029
5030 (SCM_VALIDATE_NON_EMPTY_COMBINATION, SCM_EVALIM2, scm_lookupcar1):
5031 Use ASSERT_SYNTAX, syntax_error or error_unbound_variable to
5032 signal syntax errors.
5033
5034 (SCM_CEVAL): Separated handling of evaluator bytecodes and other
5035 scheme objects.
5036
60a49842
DH
50372003-10-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5038
5039 * eval.c (unmemocar, sym_three_question_marks, scm_unmemocar):
5040 Grouped together with unmemocopy, without modifications.
5041
5042 (build_binding_list, unmemocopy): Renamed names of list arguments
5043 and variables to reflect the actual order of the list elements.
5044
70c1c108
DH
50452003-10-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
5046
5047 * eval.c (s_defun): New static identifier.
5048
5049 (scm_m_nil_cond, scm_m_atfop, scm_m_undefine): Add comments. Use
5050 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
5051 when creating the memoized code.
5052
0ee39677
KR
50532003-10-19 Kevin Ryde <user42@zip.com.au>
5054
5055 * numbers.c (scm_ash): Revise docstring as per recent update to manual.
5056
5057 * numbers.c (scm_i_big2dbl): Rewrite, carefully rounding to "closest"
5058 in accordance with R5RS, which just mpz_get_d doesn't really give.
5059
9a848baf
DH
50602003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5061
5062 * eval.c (s_bad_slot_number): New static identifier.
5063
5064 (scm_m_atslot_ref, scm_m_atslot_set_x): Use ASSERT_SYNTAX to
5065 signal syntax errors. Avoid unnecessary consing when creating the
5066 memoized code.
5067
da48db62
DH
50682003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5069
5070 * eval.c (scm_m_cont, scm_m_at_call_with_values,
5071 scm_m_generalized_set_x): Use ASSERT_SYNTAX to signal syntax
5072 errors. Avoid unnecessary consing when creating the memoized
5073 code.
5074
5075 (scm_m_generalized_set_x): Let scm_m_set_x handle the R5RS
5076 standard case. Make sure line and file information are copied to
5077 every created expression.
5078
82b3e2c6
DH
50792003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5080
5081 * eval.c (scm_m_set_x, scm_m_apply, scm_m_atbind): Use
5082 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
5083 when creating the memoized code.
5084
5085 (scm_m_atbind): Reversed the order, in which the init expressions
5086 are stored and executed. The order of execution is now equal to
5087 the order in which the initializers of the let-forms are executed.
5088 Use check_bindings and transform_bindings.
5089
5090 (SCM_CEVAL): Eliminated SCM_NIMP in favor of more appropriate
5091 !SCM_NULLP. Added some comments.
5092
21628685
DH
50932003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5094
5095 * eval.c: Sorted include files alphabetically.
5096
5097 (scm_m_begin): Added comment.
5098
5099 (scm_m_or): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5100 unnecessary consing when creating the memoized code.
5101
5102 (iqq, scm_m_quasiquote, scm_m_quote): Use ASSERT_SYNTAX to signal
5103 syntax errors. Be more specific about the kind of error that was
5104 detected.
5105
5106 (scm_m_quote, unmemocopy): As an optimization, vector constants
5107 are now inserted unquoted into the memoized code. During
5108 unmemoization the quotes are added again to provide syntactically
5109 correct code.
5110
d6754c23
DH
51112003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5112
5113 * eval.c (scm_m_let, scm_m_letstar, scm_m_letrec,
5114 scm_m_expand_body, check_bindings): Extracted syntax checking of
5115 bindings to new static function check_bindings.
5116
5117 (scm_m_let, memoize_named_let): Extracted handling of named let to
5118 new static function memoize_named_let.
5119
5120 (transform_bindings, scm_m_let, scm_m_letstar, scm_m_letrec): Use
5121 ASSERT_SYNTAX to signal syntax errors. Be more specific about the
5122 kind of error that was detected. Avoid use of SCM_CDRLOC. Avoid
5123 unnecessary consing when creating the memoized code.
5124
03a3e941
DH
51252003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5126
5127 * eval.c (s_bad_formals, s_bad_formal, s_duplicate_formal): New
5128 static identifiers.
5129
5130 (s_clauses, s_formals, s_duplicate_formals): Removed.
5131
5132 (scm_m_lambda): Use ASSERT_SYNTAX to signal syntax errors. Be more
5133 specific about the kind of error that was detected. Prepare for
5134 easier integration of changes for separated memoization.
5135
da48db62 51362003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
4610b011
DH
5137
5138 * eval.c (s_duplicate_binding): New static identifier.
5139
5140 (scm_m_case): Call scm_c_memq instead of implementing it inline.
5141
5142 (scm_m_define): Added comment about how we check for duplicate
5143 formals.
5144
5145 (scm_m_do): Added check for duplicate bindings.
5146
5147 (scm_m_if): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5148 unnecessary consing when creating the memoized code.
5149
5150 (scm_c_improper_memq, c_improper_memq, scm_m_lambda): Renamed
5151 scm_c_improper_memq to c_improper_memq, since it is not exported.
5152
5153 (transform_bindings): Call scm_c_memq rather than
5154 scm_c_improper_memq.
5155
5156 (SCM_CEVAL): Simplified handling of SCM_IM_IF forms.
5157
da48db62 51582003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
a954ce1d
DH
5159
5160 * eval.c (s_bad_bindings, s_bad_binding, s_bad_exit_clause): New
5161 static identifiers.
5162
5163 (scm_m_do): Use ASSERT_SYNTAX to signal syntax errors. Be more
5164 specific about the kind of error that was detected. Avoid use of
5165 SCM_CDRLOC. Avoid unnecessary consing when creating the memoized
5166 code, this way also making sure that file name, line number
5167 information etc. remain available.
5168
da48db62 51692003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
8ae95199
DH
5170
5171 * eval.c (memoize_as_thunk_prototype): New static function.
5172
5173 (scm_m_delay, scm_m_future): Use memoize_as_thunk_prototype.
5174 Avoid unnecessary consing when creating the memoized code.
5175
9b9a35b6
KR
51762003-10-12 Kevin Ryde <user42@zip.com.au>
5177
5178 * list.c (scm_append): Track argument number and use in error.
5179
cc56ba80
DH
51802003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5181
5182 * eval.c (s_missing_expression, s_bad_variable): New static
5183 identifiers.
5184
5185 (scm_m_define): Use ASSERT_SYNTAX to signal syntax errors. Prefer
5186 R5RS terminology for the naming of variables. Be more specific
5187 about the kind of error that was detected. Make sure file name,
5188 line number etc. are added to all freshly created expressions.
5189 Avoid unnecessary consing when creating the memoized code.
5190
609a8b86
DH
51912003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5192
5193 * eval.c (s_extra_expression, s_misplaced_else_clause,
5194 s_bad_cond_clause, s_missing_recipient): New static identifiers.
5195
5196 (s_extra_case_clause): Removed.
5197
5198 (scm_m_case, scm_m_cond): If a clause appears after an else
5199 clause, report a misplaced else clause.
5200
5201 (scm_m_cond): Use ASSERT_SYNTAX to signal syntax errors. Be more
5202 specific about the kind of error that was detected. Handle bound
5203 'else and '=>. Avoid unnecessary consing when creating the
5204 memoized code.
5205
5206 (scm_m_cond, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
5207 the syntactic keyword 'else and SCM_IM_ARROW to memoize the
5208 syntactic keyword '=>.
5209
58a2510b
DH
52102003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5211
5212 * eval.c (scm_m_case): Allow empty lists of case labels.
5213
2a6f7afe
DH
52142003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5215
5216 * tags.h (SCM_IM_ELSE, SCM_IM_ARROW): New memoizer codes.
5217
5218 * print.c (scm_isymnames): Add names for the new memoizer codes.
5219
5220 * eval.c (s_missing_clauses, s_bad_case_clause,
5221 s_extra_case_clause, s_bad_case_labels, s_duplicate_case_label,
5222 literal_p): New static identifiers.
5223
5224 (scm_m_case): Use ASSERT_SYNTAX to signal syntax errors. Be more
5225 specific about the kind of error that was detected. Check for
5226 duplicate case labels. Handle bound 'else. Avoid unnecessary
5227 consing when creating the memoized code.
5228
5229 (scm_m_case, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
5230 the syntactic keyword 'else.
5231
e6729603
DH
52322003-10-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
5233
5234 * eval.c (s_bad_expression, syntax_error_key, syntax_error,
5235 ASSERT_SYNTAX, ASSERT_SYNTAX_2): New static identifiers.
5236
5237 (scm_m_and): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5238 unnecessary consing when creating the memoized code.
5239
9ddeb776
KR
52402003-10-09 Kevin Ryde <user42@zip.com.au>
5241
5242 * numbers.c (scm_inexact_to_exact): Don't depend on what double->long
5243 cast gives for values bigger than a long, or for nan or inf.
5244
df5af69a
DH
52452003-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
5246
5247 * smob.h (scm_make_smob_type): Made the declaration match the
5248 definition.
5249
da0e6c2b
MV
52502003-10-07 Marius Vollmer <mvo@zagadka.de>
5251
5252 * goops.c, objects.h, smob.c, smob.h: Make type names char
5253 const * instead of char *. Thanks to Paul Jarc!
5254
591924eb
KR
52552003-10-02 Kevin Ryde <user42@zip.com.au>
5256
ff6ea7b9 5257 * strports.c (scm_call_with_output_string): scm_get_output_string
591924eb
KR
5258 rather than scm_strport_to_string, so as to guard against the port
5259 having been closed by the called procedure. Reported by Nic Ferrier.
5260
f03314f9
DH
52612003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5262
5263 * numbers.h (SCM_INEXACTP): Removed uses of SCM_TYP16S.
5264
5265 * tags.h, deprecated.h (SCM_TYP16S): Deprecated and moved from
5266 tags.h to deprecated.h.
5267
534c55a9
DH
52682003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5269
5270 This set of patches introduces a new tc7 code scm_tc7_number for
5271 numbers. Bignums, reals and complex numbers are turned from smobs
5272 into subtypes of scm_tc7_number.
5273
5274 * tags.h (scm_tc7_number): New.
5275
5276 * eq.c (scm_equal_p), eval.c (SCM_CEVAL), evalext.c
5277 (scm_self_evaluating_p), gc-card.c (scm_i_sweep_card), gc-mark.c
5278 (scm_gc_mark_dependencies), goops.c (create_smob_classes), hash.c
5279 (scm_hasher), numbers.c, numbers.h (SCM_NUMP), objects.c
5280 (scm_class_of), print.c (scm_iprin1), smob.c
5281 (scm_smob_prehistory): Don't handle bignums, reals and complex
5282 numbers as subtypes of scm_tc7_smob any more.
5283
5284 * numbers.h, tags.h (scm_tc16_big, scm_tc16_real,
5285 scm_tc16_complex): Moved definitions from tags.h to numbers.h.
5286
29c4382a
DH
52872003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5288
5289 * numbers.c (scm_make_complex), gc-card.c (scm_i_sweep_card): Use
5290 sizeof (scm_t_complex) to determine the memory size of the
5291 malloc'd area for complex numbers.
5292
47ae1f0e
DH
52932003-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
5294
5295 * numbers.c (scm_bigequal): Fixed.
5296
859b6b2f
MV
52972003-09-16 Marius Vollmer <mvo@zagadka.de>
5298
5299 * stime.c (scm_current_time): 'time' does not set errno so don't
5300 use SCM_SYSERROR for reporting errors.
5301
e17d318f
DH
53022003-09-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5303
5304 This set of patches eliminates the dependency between the
5305 implementation of evaluator specific memoization codes and special
5306 constants like #f, '() etc. ('flags'), which are not evaluator
5307 specific. The goal is to remove definitions of evaluator
5308 memoization codes completely from the public interface. This will
5309 make it possible to experiment more freely with optimizations of
5310 guile's internal representation of memoized code.
5311
5312 * objects.c (scm_class_of): Eliminate dependency on SCM_ISYMNUM.
5313
5314 * print.c (iflagnames): New array, holding the printed names of
5315 guile's special constants ('flags').
5316
5317 (scm_isymnames): Now holds only the printed names of the
5318 memoization codes.
5319
5320 (scm_iprin1): Separate the handling of memoization codes and
5321 guile's special constants.
5322
5323 * tags.h (scm_tc9_flag, SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA,
5324 SCM_IFLAGNUM): new
5325
5326 (scm_tc8_char, scm_tc8_iloc, SCM_BOOL_F, SCM_BOOL_T,
5327 SCM_UNDEFINED, SCM_EOF_VAL, SCM_EOL, SCM_UNSPECIFIED, SCM_UNBOUND,
5328 SCM_ELISP_NIL, SCM_IM_DISPATCH, SCM_IM_SLOT_REF,
5329 SCM_IM_SLOT_SET_X, SCM_IM_DELAY, SCM_IM_FUTURE,
5330 SCM_IM_CALL_WITH_VALUES, SCM_IM_NIL_COND, SCM_IM_BIND): Changed
5331 values.
5332
5333 (SCM_IFLAGP): SCM_IFLAGP now only tests for flags.
5334
5335 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Generalized to use the
5336 tc9 macros and scm_tc9_flag.
5337
eecac806
MV
53382003-09-15 Marius Vollmer <mvo@zagadka.de>
5339
5340 * posix.c (scm_setgroups): Check that the gid list is not too
5341 long. Thanks to Paul Jarc!
5342
22f2cf2d
DH
53432003-09-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
5344
5345 * tags.h: Reduced the number of short instructions from 14 to 13.
5346 The typecode of the former 14th short instruction is now used to
5347 represent long instructions. Changed some comments to reflect
5348 this fact.
5349
5350 (SCM_MAKISYM): ISYMs get a new tc7 code, namely the one that was
5351 previously used by SCM_IM_DEFINE.
5352
5353 (SCM_IM_DEFINE): Turned into a long instruction.
5354
5355 * eval.c (unmemocopy, SCM_CEVAL): Treat SCM_IM_DEFINE as a long
5356 instruction.
5357
5358 * eval.c (SCM_CEVAL): Since characters and iflags have now a tc7
5359 code that is separate from all instructions, one level of dispatch
5360 for long instructions can be eliminated.
5361
5362 * print.c (scm_isymnames): Removed some commented code.
5363
62f548e1
MV
53642003-09-12 Marius Vollmer <mvo@zagadka.de>
5365
97a61c5f
MV
5366 * __scm.h (SCM_FENCE): Use __memory_barrier with the Intel
5367 compiler on IA64.
5368
50e0ba57
MV
5369 * hashtab.h (scm_tc16_hashtable): Added "extern" declaration.
5370
5371 * modules.c (scm_module_reverse_lookup): Check that the obarray
5372 really is a hashtable and do nothing if not.
5373
62f548e1
MV
5374 * inline.h: Use "extern inline" only with GCC. Use "static
5375 inline" else.
5376
0d5e3480
DH
53772003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5378
5379 * numbers.h (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Removed uses
5380 of SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
5381
5382 * numbers.h, deprecated.h (SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP,
5383 SCM_SLOPPY_COMPLEXP): Deprecated and moved from numbers.h to
5384 deprecated.h.
5385
6b412e91
DH
53862003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5387
5388 * eq.c (scm_eqv_p, scm_equal_p): Removed uses of
5389 SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
5390
5391 * eq.c (scm_eqv_p, scm_equal_p): Reordered comparisons from
5392 0.0==some_expression to some_expression==0.0. The latter is
5393 better readable. The former is preferred by some people, since it
5394 leads to a compiler error when confusing == with =. However, when
5395 using gcc, a warning will be issued if in an if-statement an
5396 assigment appears. Since many Guile developers are using gcc,
5397 such errors will not remain unnoticed anyway. We can therefore
5398 focus on better readability.
5399
7e3b25bf
DH
54002003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5401
5402 * tags.h: Added description of Guile's type system. Removed some
5403 old and misleading comments.
5404
3ea39242
DH
54052003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5406
5407 * unit.c (scm_cvref): Eliminate unnecessary uses of SCM_NIMP,
5408 SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
5409
5d7d39ff
DH
54102003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5411
5412 * numbers.h (SCM_MAKINUM): Define in terms of scm_tc2_int.
5413
5414 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Define in terms of the
5415 respective SLOPPY macro.
5416
baa84a20
DH
54172003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5418
5419 * eq.c (scm_equal_p): Use SCM_TYP7 to check if an object is of
5420 type string, not SCM_TYP7S.
5421
ba15f500
KR
54222003-09-03 Kevin Ryde <user42@zip.com.au>
5423
5424 * numbers.c (scm_lognot): Correction to docstring, ones-complement not
5425 2s-complement.
5426
53bb8782
KR
5427 * stime.c (scm_strptime): Add comment about glibc strptime %s and
5428 current timezone requiring SCM_DEFER_INTS.
5429
defdc4b4
NJ
54302003-08-30 Neil Jerram <neil@ossau.uklinux.net>
5431
5432 * script.c (scm_compile_shell_switches): Make -s switch optional
5433 if file to be loaded does not begin with a `-'. (Thanks to Aaron
5434 VanDevender for the patch!)
5435
0f008a15
KR
54362003-08-30 Kevin Ryde <user42@zip.com.au>
5437
5438 * numbers.c (scm_lognot): Rewrite using ~ and mpz_com, for directness
5439 and to have non-integer types rejected as per other logical funcs.
5440
438a3ba1
KR
54412003-08-28 Kevin Ryde <user42@zip.com.au>
5442
5443 * gc.h (scm_remember_upto_here_1): Revise comments on the asm form.
5444
98dceb37
KR
54452003-08-23 Kevin Ryde <user42@zip.com.au>
5446
5447 * simpos.c (scm_system): Remove SCM_DEFER_INTS, system() should be
5448 thread safe, and could take a long time too.
5449
1fa79a38
KR
54502003-08-22 Kevin Ryde <user42@zip.com.au>
5451
5452 * numbers.c (scm_difference): Correction to bignum - negative inum.
5453
d97f9b42
KR
54542003-08-14 Kevin Ryde <user42@zip.com.au>
5455
5456 * gc.h (scm_remember_upto_here_1, scm_remember_upto_here_2)
5457 [__GNUC__]: Use volatile asm macros rather than a function call.
5458 * gc.c (scm_remember_upto_here_1, scm_remember_upto_here_2): Undefine
5459 macros while defining functions.
5460
5461 * simpos.c (getenv): Use <stdlib.h> for prototype.
5462 (scm_system): In docstring, refer to status:exit-val rather than
5463 "functions above".
5464
b9052fcc
KR
54652003-08-09 Kevin Ryde <user42@zip.com.au>
5466
5467 * srcprop.c (scm_source_properties): Return plist from hash if it's a
5468 list set by source-properties! rather than an SRCPROPS object,
5469
8e5b4b9e
KR
54702003-07-29 Kevin Ryde <user42@zip.com.au>
5471
5472 * properties.c (scm_primitive_property_ref): In docstring, note
5473 parameters to not-found-proc, use hyphens rather than underscores for
5474 that parameter name.
5475 (scm_primitive_property_set_x): In docstring, VAL is the value
5476 parameter not CODE.
5477
20703ac4
MV
54782003-07-27 Marius Vollmer <mvo@zagadka.de>
5479
c6ccee34
MV
5480 * print.c (scm_print_symbol_name): handle more weird characters by
5481 escaping the symbol name properly. Thanks to Paul Jarc!
5482
2f4931bf
MV
5483 * posix.h (scm_setgroups): New prototype.
5484 * posix.c (scm_setgroups): New. Thanks to Paul Jarc!
5485 (scm_getgroups): Handle groups ids that don't fit into a fixnum.
5486 Don't use SCM_WRITABLE_VELTS.
5487
265c456f
MV
5488 * gc.h (SCM_GC_SET_CELL_BVEC): New.
5489 * gc-card.c (scm_i_init_card_freelist): Use it. Thanks to
5490 Matthias Koeppe!
5491
20703ac4
MV
5492 * __scm.h (SCM_C_INLINE_KEYWORD): New.
5493 * numbers.c: Use it in place of SCM_C_INLINE so that the code
5494 compiles when SCM_C_INLINE is undefined.
5495
59c4bb82
DH
54962003-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
5497
5498 * __scm.h: Reformulated the architecture and compiler properties
5499 in terms of properties of scm_t_bits and SCM variables rather than
5500 in terms of c standard types. This is since it is not known which
5501 of the standard types scm_t_bits and SCM variables will be defined
5502 to.
5503
d7850c8d
KR
55042003-07-24 Kevin Ryde <user42@zip.com.au>
5505
5506 * numbers.c (scm_angle): Use scm_flo0 for non-negative inum, bignum
5507 and real.
5508
8a0c514f
KR
55092003-07-18 Kevin Ryde <user42@zip.com.au>
5510
5511 * numbers.c (scm_product): In complex * bignum, correction to
5512 REAL/IMAG fetch, x is the complex, not y.
5513
0aacf84e
MD
55142003-07-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5515
5516 * numbers.c (scm_odd_p, scm_even_p): Bugfix: Treat result of
5517 scm_inf_p test as Scheme values.
5518 (scm_sum): Bugfix: Normalize bignum created from a negative bignum
5519 and a positive inum.
5520 Use GNU indentation style.
5521
192de9a4
DH
55222003-07-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5523
5524 * values.c (scm_values): Build lists of length 1 by using
5525 scm_list_1 instead of using scm_cons.
5526
bbb4438a
KR
55272003-07-10 Kevin Ryde <user42@zip.com.au>
5528
b58c85ce
KR
5529 * deprecation.c (scm_c_issue_deprecation_warning_fmt): Add va_end.
5530 * list.c (scm_list_n): Ditto.
5531
bbb4438a
KR
5532 * gc-malloc.c (scm_gc_realloc): Define "ptr" at start of function.
5533
287f8ad1
KR
55342003-07-08 Matthias Koeppe <mkoeppe@merkur.math.uni-magdeburg.de>
5535
5536 * tags.h (scm_t_bits, scm_t_signed_bits, etc): Avoid solaris empty
5537 defines of INTPTR_MAX and UINTPTR_MAX, combine conditionals for
5538 scm_t_bits and scm_t_signed_bits to avoid any chance of one and not
5539 the other using intptr_t.
5540
005d2366
KR
55412003-07-08 Kevin Ryde <user42@zip.com.au>
5542
0aacf84e 5543 * numbers.c (scm_make_polar): Use sincos, when available.
005d2366
KR
5544 (scm_magnitude): Use hypot.
5545
5546 * ports.c (scm_char_ready_p, scm_peek_char): In docstrings, don't use
5547 @footnote since it doesn't go through to guile-procedures.txt.
5548
5549 * threads.c (scm_call_with_new_thread): In docstring, use "( )"
5550 outside @var to quieten makeinfo, and use @code.
5551
cbfe8e62
HWN
55522003-07-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5553
5554 * gc-malloc.c (decrease_mtrigger): new function
5555 (increase_mtrigger): new function, separate debug registering and
5556 mtrigger administration.
5557 (scm_gc_realloc): bugfix: do mtrigger administration before the
5558 actual realloc, for the realloc might invalidate a GC-d segment of
5559 memory. Thanks to Sam Hocevar for pointing this out.
5560 (scm_gc_realloc): use scm_malloc_reregister instead of
5561 unregistering and registering in sequence.
5562
aeb4c2e1
HWN
55632003-07-03 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5564
5565 * __scm.h (SCM_ASSERT): change "else" expansion to "do { } while (0)"
5566
4c27f8d2
HWN
55672003-07-02 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5568
5569 * __scm.h (SCM_ASRTGO): add "else" to macro expansions with if
5570 clauses.
5571
983e697d
MV
55722003-06-29 Marius Vollmer <mvo@zagadka.de>
5573
5574 * deprecated.h (SCM_OPDIRP, scm_fport, scm_option, scm_srcprops,
5575 scm_srcprops_chunk, scm_info_frame, scm_stack, scm_array,
5576 scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_FUNC_NAME, SCM_WTA,
5577 RETURN_SCM_WTA, SCM_VALIDATE_NUMBER_COPY,
5578 SCM_VALIDATE_NUMBER_DEF_COPY, SCM_VALIDATE_OPDIR): Re-added from
5579 the release_1_6 branch.
5580
78b6566e
SJ
55812003-06-25 Stefan Jahn <stefan@lkcc.org>
5582
5583 * continuations.c: Redeclaration of getcontext() via the
5584 __asm__ ("getcontext") directive.
5585
5586 * continuations.h: Include <ucontext.h> instead of
5587 <sys/ucontext.h>.
5588
1ebb8497
KR
55892003-06-21 Kevin Ryde <user42@zip.com.au>
5590
5591 * numbers.c (_GNU_SOURCE): #define, to get C99 things.
5592 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, $asinh, $acosh,
5593 $atanh, truncate): Use C library asinh, acosh, atanh and trunc, when
5594 available.
5595 (scm_inexact_to_exact): Expand isfinite to its definition !xisinf.
5596 (isfinite): Remove, conflicts with C99 isfinite().
5597
fbf85ba4
MV
55982003-06-19 Marius Vollmer <mvo@zagadka.de>
5599
5600 * deprecated.h, deprecated.c (scm_strhash, scm_sym2ovcell_soft,
5601 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
5602 scm_symbol_value0, scm_string_to_obarray_symbol scm_intern_symbol,
5603 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
5604 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp): Re-added from
5605 the release_1_6 branch.
5606
fcc5d734
SJ
56072003-06-14 Stefan Jahn <stefan@lkcc.org>
5608
5609 * threads.h: Redefined scm_getspecific() and scm_setspecific()
5610 to be functions instead of macros.
5611
5612 * threads.c: Conditionalized inclusion of <sys/time.h> and
5613 <unistd.h>.
5614 (scm_getspecific, scm_setspecific): Made these two function
5615 real part of the API.
5616
5617 * posix.c (s_scm_putenv): Added some code to make a
5618 (putenv "FOO="), i.e. setting an empty string, work also on
5619 Win32 systems. Thanks to Kevin Ryde for the proposal.
5620
c3ae8e07
KR
56212003-06-12 Kevin Ryde <user42@zip.com.au>
5622
75b14838
KR
5623 * posix.c (scm_putenv): Free temporary ptr in mingw unset. Add
5624 freebsd to comment about need to use unsetenv.
c3ae8e07 5625
9d9fa092
MV
56262003-06-02 Marius Vollmer <mvo@zagadka.de>
5627
5628 * ports.c (scm_peek_char): Safe the column of the port around the
5629 getc/ungetc calls. Thanks to Dr. Peter Ivanyi!
5630
f2478375
KR
56312003-06-07 Kevin Ryde <user42@zip.com.au>
5632
5633 * tags.h: Use inttypes.h and stdint.h when available, for INTPTR_MAX
5634 and friends required by scm_t_bits setups.
5635
6375e040
DH
56362003-06-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5637
5638 * tags.h (scm_tc2_int): Added.
5639
5640 * tags.h (scm_tc3_int_1, scm_tc3_int_2): Expressed in terms of
5641 scm_tc2_int.
5642
5643 * tags.h (scm_tcs_cons_imcar, scm_tcs_cons_nimcar, scm_tcs_struct,
5644 scm_tcs_closures): Hard coded values replaced by symbolic ones.
5645
f5c6ec2f
DH
56462003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
5647
5648 * eval.c: Partially undid my patch from 2003-05-31. This patch
5649 caused the segfault referenced in the previous changelog entry.
5650
47dbd81e
DH
56512003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
5652
5653 * tags.h: Fixed comment about the immediate type code layout.
5654
5655 * eval.c: Fixed handling of non-special instructions. Without
5656 this patch, guile will segfault on (#\0) and similar instructions.
5657
3ec52c51
KR
56582003-06-05 Kevin Ryde <user42@zip.com.au>
5659
5660 * numbers.c (scm_max, scm_min): For inum, bignum and real, if other
5661 operand is NaN, then return NaN. Also avoid passing NaN to mpz_cmp_d.
5662
e418bd7c
KR
5663 * read.c (scm_input_error): Pass arg list parameter to scm_error_scm,
5664 rather than SCM_EOL. Needed by "Unknown # object" case in scm_lreadr.
5665
d0624e39
DH
56662003-06-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5667
5668 * __scm.h, gc-card.c (SCM_DEBUG_DEBUGGER_SUPPORT,
5669 SCM_DEBUG_DEBUGGING_SUPPORT): Renamed macro
5670 SCM_DEBUG_DEBUGGER_SUPPORT to SCM_DEBUG_DEBUGGING_SUPPORT and
5671 generalized it to apply not only to C level functions but also to
5672 scheme level functions.
5673
5674 * debug.c, debug.h, eval.c (make-iloc, scm_make_iloc, iloc?,
5675 scm_iloc_p, dbg-make-iloc, scm_dbg_make_iloc, dbg-iloc?,
5676 scm_dbg_iloc_p): Moved functions scm_make_iloc, scm_iloc_p to
5677 eval.c, made them available under SCM_DEBUG_DEBUGGING_SUPPORT == 1
5678 only and renamed them to scm_dbg_make_iloc, scm_dbg_iloc_p,
5679 respectively.
5680
5681 * deprecated.h, eval.c, eval.h (SCM_ILOC00, SCM_IDINC,
5682 SCM_IDSTMSK): Deprecated. The macro definitions are moved from
5683 eval.h into eval.c and a copy is placed into deprecated.h.
5684
5685 * eval.c, eval.h (SCM_MAKE_ILOC): Removed from eval.h and placed
5686 into eval.c. This definition was not part of the API in any
5687 officially released version of guile and thus does not need to go
5688 through a phase of deprecation.
5689
e90c3a89
DH
56902003-06-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5691
d0624e39
DH
5692 * deprecated.c, deprecated.h, eval.c, eval.h (scm_s_expression,
5693 scm_s_test, scm_s_body, scm_s_bindings, scm_s_variable,
5694 scm_s_clauses, scm_s_formals): Deprecated. In eval.c the
e90c3a89
DH
5695 definitions are make static and renamed from scm_s_xxx to s_xxx.
5696 In deprecated.c the original definitions are copied.
5697
d0624e39
DH
5698 * deprecated.h, eval.c, eval (SCM_EVALIM2, SCM_EVALIM, SCM_XEVAL,
5699 SCM_XEVALCAR): Deprecated. The macro definitions are moved from
e90c3a89
DH
5700 eval.h into eval.c and a copy (slightly modified to work in user
5701 code) is placed into deprecated.h.
5702
5703 * eval.c: Use the local static s_xxx definitions instead of the
5704 scm_s_xxx definitions throughout.
5705
14b18ed6
DH
57062003-06-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5707
5708 This set of patches separates the representation of the cxr family
5709 of functions (car, cdr etc.) from the dsubr family of functions
5710 (i. e. functions that take a double precision floating point
5711 argument). Further, the algorithm for handling the cxr function
5712 is improved.
5713
5714 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_1), numbers.c
5715 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, scm_round, floor,
5716 ceil, sqrt, fabs, exp, log, sin, cos, tan, asin, acos, atan, sinh,
5717 cosh, tanh), objects.c (scm_class_of), procprop.c
5718 (scm_i_procedure_arity), ramap.c (scm_array_map_x), tags.h
5719 (scm_tc7_dsubr, scm_tcs_subrs): Introduce scm_tc7_dsubr as new
5720 typecode for the dsubr family of functions.
5721
5722 * ramap.c (ramap_cxr, ramap_dsubr): Renamed ramap_cxr to
5723 ramap_dsubr.
5724
5725 * eval.c (SCM_CEVAL, SCM_APPLY, call_cxr_1), pairs.c
5726 (scm_init_pairs): Make use of the (now usable) second cell element
5727 of a scm_tc7_cxr function to implement the cxr family of functions
5728 more efficiently.
5729
2ca0d207
DH
57302003-05-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
5731
5732 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_0,
5733 scm_trampoline_1, scm_trampoline_2): Postpone error cases to the
5734 end of an if-else-if-sequence of checks.
5735
9a069bdd
DH
57362003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
5737
5738 * eval.c (SCM_CEVAL): Improved readability of call-with-values
5739 execution. Generalize apply_closure to apply_proc and use that
5740 for call-with-values.
5741
e910e9d2
DH
57422003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
5743
5744 * eval.c (SCM_CEVAL): Avoid one level of indirection when applying
5745 a non closure.
5746
1e498fbd
SJ
57472003-05-30 Stefan Jahn <stefan@lkcc.org>
5748
5749 * posix.c (s_scm_putenv): Use the new HAVE_UNSETENV
5750 appropriately for mingw32 hosts.
5751
5752 * numbers.h: Defining copysign(), isnan() and finite() to
5753 be prefixed by a single '_' for mingw32 hosts.
5754
c47e2599
KR
57552003-05-30 Kevin Ryde <user42@zip.com.au>
5756
5757 * numbers.c (z_negative_one): New variable.
5758 (scm_init_numbers): Initialize it.
5759 (scm_logcount): Use it and mpz_hamdist to count zeros for negatives.
5760
2e945bcc
SJ
57612003-05-29 Stefan Jahn <stefan@lkcc.org>
5762
5763 * win32-dirent.c: Use malloc() instead of scm_malloc().
5764
5765 * stime.c (s_scm_strftime): Add a type cast to avoid compiler
5766 warning.
5767
5768 * posix.c (s_scm_putenv): Disable use of unsetenv() for the
5769 mingw32 build.
5770
5771 * modules.c (s_scm_module_import_interface): Renamed local
5772 variable interface to _interface. Seems like 'interface'
5773 is a special compiler directive for the mingw32 compiler.
5774
5775 * mkstemp.c: Provide prototype to avoid compiler warning.
5776
5777 * load.c (s_scm_search_path): Fixed absolute and relative
5778 path detections for native Windows platforms.
5779
5780 * gc.h, threads.h: Export some more symbols using SCM_API (necessary
5781 to build on mingw32).
5782
5783 * gc-freelist.c ("s_scm_map_free_list",
5784 "s_scm_gc_set_debug_check_freelist_x"): Fixed use of FUNC_NAME.
5785
5786 * fports.c (fport_fill_input): Disable use of
5787 fport_wait_for_input() on Win32 platforms.
5788
5789 * filesys.c (s_scm_basename): Fixed __MINGW32__ code.
5790
5791 * Makefile.am: Modified some rules for cross compiling.
5792
ddd8f927
DH
57932003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5794
5795 * eval.c (SCM_CEVAL): In case of an application, all checks for a
5796 proper function object and the correct number of arguments are now
5797 performed in the application part of SCM_CEVAL.
5798
5799 (scm_badformalsp): Removed.
5800
f8ba2197
DH
58012003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5802
5803 * deprecated.c (scm_read_and_eval_x): Fixed C99-ism.
5804
79f55b7c
MD
58052003-05-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5806
a502595f
MD
5807 * num2integral.i.c (NUM2INTEGRAL): Avoid warning about conditional
5808 always being false by inserting preprocessor conditional. (Thanks
5809 to Bruce Korb.)
5810
79f55b7c
MD
5811 * __scm.h (SCM_STACK_PTR): New macro. (Cast argument through
5812 (void *) in order to avoid an aliasing warning; thanks to Bruce
5813 Korb.)
5814
5815 * stackchk.h (SCM_STACK_OVERFLOW_P): Use SCM_STACK_PTR.
5816
5817 * threads.c (suspend, launch_thread, scm_threads_mark_stacks): Use
5818 SCM_STACK_PTR.
5819
5820 * threads.c (scm_threads_mark_stacks): Bugfix: Changed
5821 thread->base --> t->base.
5822
5823 * eval.c (SCM_CEVAL): Don't cast argument of SCM_STACK_OVERFLOW_P.
5824
47dee228
MV
58252003-05-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5826
5827 * deprecated.h, deprecated.c (scm_makstr, scm_makfromstr,
5828 scm_variable_set_name_hint, scm_builtin_variable,
5829 scm_internal_with_fluids, scm_make_gsubr,
5830 scm_make_gsubr_with_generic, scm_create_hook, SCM_LIST0,
5831 SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5, SCM_LIST6,
5832 SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify, scm_sloppy_memq,
85494587
MV
5833 scm_sloppy_memv, scm_sloppy_member, scm_read_and_eval_x,
5834 scm_subr_entry, SCM_SUBR_DOC, scm_make_subr,
5835 scm_make_subr_with_generic, scm_make_subr_opt,
5836 scm_call_catching_errors, scm_make_smob_type_mfpe,
5837 scm_set_smob_mfpe, scm_strprint_obj, scm_read_0str, scm_eval_0str,
5838 SCM_CHARS, SCM_UCHARS, SCM_LENGTH): Re-added from the release_1_6
5839 branch. Some have been slightly rewritten.
5840 (scm_i_object_chars, scm_i_object_length): New, to support
5841 SCM_CHARS, SCM_UCHARS, and SCM_LENTH.
5842
e681d187
DH
58432003-05-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
5844
5845 * eval.c (scm_m_do, unmemocopy, SCM_CEVAL): Reversed order of
5846 names and inits in the memoized code of do.
5847
7e59d9d4
MD
58482003-05-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5849
5850 * c-tokenize.lex (yyget_lineno, yyget_in, yyget_out, yyget_leng,
5851 yyget_text, yyset_lineno, yyset_in, yyset_out, yyget_debug,
5852 yyset_debug, yylex_destroy): Added prototypes (otherwise we'll get
5853 a compilation error if error-on-warning is enabled).
5854
9950a42c
MV
58552003-05-17 Marius Vollmer <mvo@zagadka.de>
5856
5857 * c-tokenize.lex: Gobble up complete lines after a '#'. This
5858 removes preprocessor directives from the snarfage that might
5859 otherwise confuse us. These directives appear when compiling with
5860 "-g3", for example.
5861
0068984b
HWN
58622003-05-16 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5863
26e68795
HWN
5864 * ChangeLog: add my surname
5865
0068984b
HWN
5866 * srcprop.c (scm_finish_srcprop): use
5867 scm_gc_register_collectable_memory()
5868 (scm_make_srcprops): idem.
5869
131805f0
HWN
58702003-05-14 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5871
5872 * gc-malloc.c (scm_gc_register_collectable_memory): avoid
5873 wrap-around for scm_mtrigger
5874 (scm_gc_register_collectable_memory): abort on overflowing
5875 scm_mallocated().
5876
d4611024
KR
58772003-05-13 Kevin Ryde <user42@zip.com.au>
5878
5879 * numbers.c (xmpz_cmp_d): New macro, handling infs if gmp doesn't.
5880 (scm_num_eq_p, scm_less_p, scm_max, scm_min): Use it.
5881
7aaf8dc9
MD
58822003-05-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5883
dfd03fb9
MD
5884 * backtrace.c (scm_display_error_message): Introduced fancy
5885 printing with max level 7 and length 10. (Purpose: avoid printing
5886 gigantic objects in error messages.)
5887
5888 * print.c, print.h (scm_i_port_with_print_state): New function.
5889
5890 * print.c (scm_iprin1, scm_printer_apply,
5891 scm_port_with_print_state): Use scm_i_port_with_print_state.
5892 (scm_simple_format): Modified not to destroy print states.
5893 (print_state_mutex): New mutex.
5894 (scm_make_print_state, scm_free_print_state, scm_prin1):
5895 Lock/unlock print_state_mutex.
5896
7aaf8dc9
MD
5897 * deprecated.h (SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK):
5898 Use current names in definitions.
5899
a4d9ffa1
KR
59002003-05-10 Kevin Ryde <user42@zip.com.au>
5901
5902 * numbers.c (scm_num_eq_p, scm_less_p): Don't pass NaN to mpz_cmp_d.
5903
d25e96a4
KR
5904 * numbers.c (scm_integer_length): On negative bignums, adjust
5905 mpz_sizeinbase to account for it looking at absolute value where we
5906 want ones-complement.
5907
5908 * numbers.c (scm_gcd): In bignum/inum, don't pass yy==0 to mpz_gcd_ui
5909 since we're only using the ulong return value, and x might not fit.
5910
5bf6a6f0
DH
59112003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5912
5913 * eval.c, eval.h, read.c, read.h (scm_sym_dot): Moved from eval to
5914 read. This will allow to make the definition in read.c static.
5915
f58c472a
DH
59162003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5917
5918 * eval.c, eval.h, evalext.c, evalext.h (scm_m_undefine): Moved
5919 from evalext to eval. This will allow to make some of the
5920 definitions in eval.c static.
5921
90382aeb
KR
59222003-05-06 Kevin Ryde <user42@zip.com.au>
5923
5924 * numbers.c (scm_difference): In inum - bignum, handle negative inum.
5925 (scm_logcount): Use mpz_com, not mpz_neg.
5926
3b88ed2a
DH
59272003-05-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5928
5929 The purpose of this patch is to make guile's internal memoizers
5930 distinguishable from memoizing macros created on the scheme level
5931 or from user provided primitive memoizing macros. The reason is,
5932 that the internal memoizers are the only ones that are allowed to
5933 transform their scheme input into memoizer byte code, while all
5934 other memoizing macros may only transform scheme code into new
5935 scheme code.
5936
5937 To achieve this, a new macro type 'builtin-macro!' is introduced.
5938 Currently, 'builtin-macro!'s are handled as memoizing macros, but
5939 this will change when the memoizer and executor are separated.
5940
5941 * macros.[ch] (scm_i_makbimacro): New.
5942
5943 * macros.h (SCM_BUILTIN_MACRO_P): New.
5944
5945 * macros.c (macro_print, scm_macro_type): Support builtin-macro!s.
5946
5947 * eval.c, goops.c: All of guile's primitive memoizing macros are
5948 primitive builtin-macros now.
5949
5950 * eval.c (scm_macroexp, SCM_CEVAL): Make sure the primitive
5951 builtin-macros are handled equally to memoizing macros.
5952
b0780eb1
MV
59532003-05-04 Marius Vollmer <mvo@zagadka.de>
5954
5955 * throw.c (scm_ithrow): Remove "asm volatile" hack. It used to
5956 work around a bug in GCC 2.95.2 but is now a bug in itself.
5957
1cbf4fe9
MV
59582003-05-02 Marius Vollmer <mvo@zagadka.de>
5959
5960 * deprecated.h (scm_rstate, scm_rng, SCM_SLOPPY_CONSP,
5961 SCM_SLOPPY_NCONSP, scm_tc7_ssymbol, scm_tc7_msymbol,
5962 scm_tcs_symbols): New.
5963
1a61d41b
MV
59642003-04-30 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5965
096ecbaf
MV
5966 * deprecated.h, deprecated.c (scm_protect_object,
5967 scm_unprotect_object, SCM_SETAND_CAR, SCM_SETOR_CAR,
5968 SCM_SET_AND_CDR, SCM_SET_OR_CDR, SCM_FREEP, SCM_NFREEP,
5969 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
5970 SCM_GCCDR, scm_remember, scm_the_root_module, scm_make_module,
5971 scm_ensure_user_module, scm_load_scheme_module, scm_port,
5972 scm_ptob_descriptor, scm_port_rw_active,
5973 scm_close_all_ports_except): New.
5974
1a61d41b
MV
5975 * ports.c (scm_c_port_for_each): New function, mostly copied from
5976 scm_port_for_each.
5977 (scm_port_for_each): Reimplemented using scm_c_port_for_each.
5978 * ports.h (scm_c_port_for_each): New prototype.
5979
c8e1d354
MD
59802003-04-28 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5981
5982 * eval.c (scm_m_atdispatch): Removed until actually needed. (This
5983 macro was introduced in anticipation of GOOPS method compilation
5984 code.)
5985
5986 * goops.c: Removed binding of @dispatch.
5987
a4aa2134
DH
59882003-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
5989
5990 * eval.c, goops.c (@dispatch, @slot-ref, @slot-set!): Move the
5991 instructions that bind the macros on the scheme level back to
5992 goops.c in order to make sure again that the bindings go into the
5993 (oop goops) module and are not visible from the outside.
5994
9fbee57e
DH
59952003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
5996
5997 * eval.c: Non functional change: Separated R5RS and non-R5RS
5998 macros into different sections of the file and ordered the
5999 memoizers alphabetically.
6000
12841895
DH
60012003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6002
6003 * eval.c (scm_ilookup): Rewritten to improve readability.
6004
6a3f13f0
DH
60052003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6006
6007 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
6008 Partially reverted patch from 2003-04-23 in oder to find a better
6009 compromise between readability and debuggability.
6010
b0c5d67b
DH
60112003-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6012
6013 * eval.c, eval.h, goops.c, goops.h (scm_m_atslot_ref,
6014 scm_m_atslot_set_x, scm_m_atdispatch): Move the declarations and
6015 definitions of the special goops memoizers from goops.[ch] to
6016 eval.[ch]. Hmm... it seems that scm_m_atdispatch is not used
6017 throughout guile.
6018
b9ad392e
MD
60192003-04-24 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6020
6021 * ports.c, ports.h (scm_i_port_table_mutex): New mutex.
6022
6023 * fports.c (scm_evict_ports): Lock/unlock scm_i_port_table_mutex.
6024
6025 * ports.c (scm_close_port, scm_flush_all_ports): Ditto.
6026
6027 * ioext.c (scm_fdes_to_ports): Ditto.
6028
6029 * vports.c (scm_make_soft_port): Changed SCM_DEFER/ALLOW_INTS into
6030 lock/unlock scm_i_port_table_mutex.
6031
6032 * strports.c (scm_mkstrport): Ditto.
6033
6034 * ports.c (scm_void_port, scm_port_for_each): Ditto.
6035
6036 * fports.c (scm_fdes_to_port): Ditto.
6037
d0b07b5d
DH
60382003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6039
6040 This set of patches contains no functional changes, only debatable
6041 minor stylistic ones. Still, in order to prepare a patch between
6042 my local copy and the CVS version, I decided to submit the changes
6043 below. Then, the patch will hopefully only contain relevant
6044 modifications :-)
6045
6046 * eval.c (iqq): Added const specifier.
6047
6048 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
6049 Use NULL instead of 0 to indicate that a pointer is returned.
6050 Removed some misleading 'fall through' comments.
6051
6052 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
6053 Split up long expressions into smaller ones to be more debugging
6054 friendly.
6055
a98e8e98
DH
60562003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6057
6058 * eval.h (SCM_ENTER_FRAME_HDLR, SCM_APPLY_FRAME_HDLR,
6059 SCM_EXIT_FRAME_HDLR): Use SCM_PACK to convert data to a SCM value
6060 rather than casting to SCM.
6061
c178c3a6
DH
60622003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6063
6064 * sort.c, pairs.h: Removed unnecessary includes.
6065
d339981a
DH
60662003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6067
6068 * sort.c: Replaced hand-made trampline code by the new official
6069 mechanism from eval.c. This fixes a segfault in the new test file
6070 sort.test.
6071
6072 (quicksort, compare_function, scm_restricted_vector_sort_x,
6073 scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
6074 scm_merge_list_step, scm_sort_x, scm_sort, scm_merge_vector_x,
6075 scm_merge_vector_step, scm_stable_sort_x, scm_stable_sort,
6076 scm_sort_list_x, scm_sort_list): Use trampoline mechanism from
6077 eval.c.
6078
6079 (subr2less, lsubrless, closureless, applyless, scm_cmp_function,
6080 cmp_fun_t): Removed.
6081
6082 (compare_function): Added.
6083
6084 * sort.c (quicksort, SWAP, stack_node): Replaced pointer
6085 arithmetics with index arithmetics. Changed quicksort to work on
6086 an array of SCM values instead of an array of characters. Avoid
6087 bytewise copying of SCM elements. Avoid allocating memory on the
6088 stack with alloca. Fixed some comments.
6089
821f18a4
DH
60902003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6091
6092 * eval.c (EXTEND_ENV): Eliminated.
6093
6094 (unmemocopy, SCM_CEVAL, SCM_APPLY): Use SCM_EXTEND_ENV instead of
6095 EXTEND_ENV.
6096
94fb5a6e
DH
60972003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6098
6099 * __scm.h (SCM_DEBUG_DEBUGGER_SUPPORT): New compile-time option.
6100
6101 * gc.card.c (scm_gc_marked_p): Fixed compiler warning when
6102 compiling with SCM_DEBUG==1 by moving definition behind prototype.
6103
6104 * gc.card.c (scm_dbg_t_list_cell, scm_dbg_t_double_cell,
6105 scm_dbg_gc_marked_p, scm_dbg_gc_get_card, scm_dbg_gc_get_bvec,
6106 scm_t_list_cell_struct, scm_t_list_cell, scm_t_double_cell,
6107 scm_gc_marked_p, scm_gc_get_card, scm_gc_get_bvec): Fixed
6108 functions such that they check if the object is a non-immediate.
6109 Further, renamed identifiers to use the scm_dbg_ prefix and made
6110 their inclusion into the lib dependent of the
6111 SCM_DEBUG_DEBUGGER_SUPPORT compile time option.
6112
fce0b22d
DH
61132003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6114
6115 * __scm.h: Fixed comment about the SCM_DEBUG_TYPING_STRICTNESS
6116 debug option.
6117
1685446c
DH
61182003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6119
821f18a4 6120 * list.c (scm_ilength, scm_last_pair), unif.c (l2ra): Prefer
1685446c
DH
6121 !SCM_CONSP over SCM_NCONSP. Now, guile itself does not include
6122 any calls to SCM_NCONSP any more.
6123
6124 * unif.c (l2ra): Eliminate redundant check.
6125
9ff1720f
DH
61262003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6127
6128 * list.c (scm_cons_star), ramap.c (scm_ra_sum, scm_ra_product,
6129 scm_array_map_x), unif.c (l2ra): Prefer !SCM_NULLP over
6130 SCM_NNULLP. Now, guile itself does not include any calls to
6131 SCM_NNULLP any more.
6132
05b15362
DH
61332003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6134
6135 * eval.c (unmemocopy, SCM_APPLY, scm_map, scm_for_each,
6136 scm_copy_tree): Place assignment expressions which are part of
6137 other expressions into an expression of their own.
6138
0c88d7df
DH
61392003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6140
6141 * goops.c (TEST_CHANGE_CLASS, scm_sys_initialize_object): Don't
6142 compare SCM values with !=.
6143
5cb22e96
DH
61442003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6145
6146 * eval.c, eval.h, evalext.c, evalext.h (scm_sym_setter,
6147 scm_m_generalized_set_x, scm_init_evalext): Move the declaration
6148 and definition of the memoizer for the generalized set! macro from
6149 evalext.[ch] to eval.[ch]. Use the SCM_SYNTAX snarfer macro to
6150 define the macro object.
6151
6152 * eval.c, eval.h (s_set_x, scm_s_set_x, scm_m_set_x,
6153 scm_m_generalized_set_x): Since now scm_s_set_x is only used in
6154 eval.c, it is made static and renamed to s_set_x.
6155
6156 * evalext.c (scm_defined_p, scm_m_undefine): Prefer !SCM_<foo>
6157 over SCM_N<foo>.
6158
a44a9715
DH
61592003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6160
6161 * eval.c, root.h (scm_undefineds, SCM_NUM_PROTECTS, undefineds,
6162 scm_init_eval): Made scm_undefineds static in eval.c, renamed it
6163 to undefineds and registered the object as a permanent object.
6164
6165 * eval.c, eval.h (scm_f_apply, scm_init_eval): Made scm_f_apply
6166 static in eval.c, renamed it to f_apply and registered the object
6167 as a permanent object.
6168
1b43d24c
DH
61692003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6170
5cb22e96 6171 * eval.c (SCM_BIT7, SCM_BIT8, unmemocopy, SCM_CEVAL): Renamed
1b43d24c
DH
6172 file-local macro SCM_BIT8 to SCM_BIT7, which is more appropriate.
6173
aec16f99
DH
61742003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6175
6176 * numbers.c (scm_logtest): Fixed argument bug in the call to
6177 mpz_and, which showed up when compiling with SCM_DEBUG defined.
6178
f96460ce
DH
61792003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6180
6181 * gc-card.c (scm_i_sweep_card, scm_i_init_card_freelist): Fixed
6182 type errors that showed up when compiling with SCM_DEBUG defined.
6183
d0f6ceb8
DH
61842003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6185
6186 * continuations.c, continuations.h, eval.c, eval.h, extensions.c,
6187 gsubr.c, guile.c, init.c, read.c, root.c, root.h, stackchk.h,
6188 throw.c: Removed uses of DEBUG_EXTENSIONS and DYNAMIC_LINKING to
6189 fix compile errors with --disable-deprecated.
6190
19a7a089
RB
61912003-04-17 Rob Browning <rlb@defaultvalue.org>
6192
6193 * numbers.c (scm_integer_expt): fix case where we were declaring
6194 vars in the middle of a statement block. Thanks to Thamer
6195 Al-Harbash.
6196
47cd67db
MD
61972003-04-17 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6198
0fd7dcd3
MD
6199 * goops.c (TEST_CHANGE_CLASS): Update variable class after class
6200 change.
6201
47cd67db
MD
6202 * eq.c (scm_eqv_p): Turned into a primitive generic.
6203
3b8b889c
RB
62042003-04-16 Rob Browning <rlb@defaultvalue.org>
6205
312006bb
RB
6206 * gc_os_dep.c: Added patch for UnixWare and OpenUNIX support.
6207 Thanks to Boyd Gerber.
6208 Added check for __arm__ in addition to arm for LINUX and copied
6209 __s390__ defines from upstream libgc. Thanks to James Treacy for
6210 reporting the problems.
c7ef2ea1 6211
3b8b889c
RB
6212 * numbers.c (PTRDIFF_MIN): use SCM_CHAR_BIT.
6213
6214 * socket.c: use SCM_CHAR_BIT.
6215
6216 * random.c (scm_c_random_bignum): use SCM_CHAR_BIT.
6217
6218 * num2integral.i.c (NUM2INTEGRAL): use SCM_CHAR_BIT.
6219
43261b39
MD
62202003-04-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6221
6222 * feature.c (scm_init_feature): Always add threads feature.
6223
58241edc
MD
62242003-04-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6225
6226 * goops.c (scm_sys_fast_slot_ref): Use SCM_SLOT instead of
6227 scm_at_assert_bound_ref. (We don't want the unbound check. See
6228 oop/goops/active-slot.scm.)
6229
94e91275
RB
62302003-04-14 Rob Browning <rlb@defaultvalue.org>
6231
6232 * tags.h: scm_t_intptr should have been intptr_t.
6233
3071ea27
RB
62342003-04-13 Rob Browning <rlb@defaultvalue.org>
6235
6236 * __scm.h (SCM_FLUSH_REGISTER_WINDOWS): don't just rely on "sparc"
6237 test. Instead use
6238 #if defined (sparc) || defined (__sparc__) || defined (__sparc)
6239 as gc_os_dep.c suggests is appropriate.
6240
6241 * goops.c (prep_hashsets): make static to match prototype.
6242 (scm_sym_args): SCM_SYMBOL -> SCM_GLOBAL_SYMBOL. Thanks to Albert
6243 Chin.
6244
6245 * c-tokenize.lex: remove trailing comma from enum. Thanks to
6246 Albert Chin.
6247
6248 * gc_os_dep.c: add NetBSD powerpc config info. Thanks to Thomas
6249 Klausner.
6250
21ab2aeb
MD
62512003-04-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6252
6253 * goops.c (scm_sys_prep_layout_x): Instance allocation is now
6254 indicated through extra fields in getters-n-setters.
6255 (scm_add_slot): Adapted to new format of getters_n_setters slot.
6256 (Thanks to Andy Wingo.)
6257
dff96e95
HWN
62582003-02-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6259
6260 * gc-segment.c: add comment
6261
07921c76
RB
62622003-04-07 Rob Browning <rlb@defaultvalue.org>
6263
b5331f10
RB
6264 * debug.h: change "id" arg name to "info_id" to avoid objective-c
6265 clash.
6266
07921c76
RB
6267 * num2integral.i.c (NUM2INTEGRAL): fix bug pointed out by Mikael
6268 and add regression test to standalone/.
6269
62702003-04-06 Rob Browning <rlb@defaultvalue.org>
6271
6272 * strings.c (scm_mem2string): use memcpy rather than by-hand loop.
6273 Thanks to Dale P. Smith.
6274
6275 * random.c: #include gmp.h.
6276 (scm_c_random_bignum): normalize result on return.
6277
6278 * init.c: #include gmp.h.
6279
6280 * numbers.h: remove the gmp.h #include (not needed now).
6281
6282 * posix.h: change occurences of "id" to something else so we don't
6283 cause trouble when included via objective-c (can't hurt, might
6284 help). Still have usage in debug.h, though.
6285
938f6b7c
MD
62862003-04-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6287
372691d8
MD
6288 * random.c (scm_c_random_bignum): Don't generate a random number
6289 equal to m (the second argument of scm_c_random_bignum); only
6290 generate numbers in the range 0 <= r < m.
c5f268f8
MD
6291 (scm_c_default_rstate): Use SCM_VARIABLE_REF to access
6292 scm_var_random_state.
372691d8 6293
938f6b7c
MD
6294 * num2integral.i.c (INTEGRAL2BIG): Put negation of n inside then
6295 clause.
6296
6cdb8c3f
RB
62972003-04-05 Rob Browning <rlb@defaultvalue.org>
6298
938f6b7c 6299 * modules.c (scm_module_import_interface): move declaration of
6cdb8c3f
RB
6300 uses before any code.
6301
15635be5
MD
63022003-04-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6303
1ecfd013
MD
6304 * Makefile.am (scmconfig.h): Look for config.h in top_builddir,
6305 not top_srcdir.
6306
15635be5
MD
6307 * hashtab.c (rehash_after_gc): Clear to_rehash list before
6308 processing it in order to avoid an infinite loop.
6309
6310 * print.c (scm_prin1): Remember old state of pstate->writingp.
6311
73be1d9e
MV
63122003-04-05 Marius Vollmer <mvo@zagadka.de>
6313
6314 * Changed license terms to the plain LGPL thru-out.
6315
ad815c06
RB
63162003-04-04 Rob Browning <rlb@defaultvalue.org>
6317
6318 * socket.c (FLIPCPY_NET_HOST_128): new macro.
6319 (ipv6_net_to_num, ipv6_num_to_net, bignum_in_ipv6_range_p):
6320 rewrite to handle GMP bignums.
6321
6322
6323 * random.c (scm_c_random_bignum): rewrite to handle GMP bignums.
6324
6325 * ports.c (scm_getc): minor tweak.
6326
6327 * numbers.h: remove SCM_BIGDIG conditionals, reorganize, and
6328 rewrite to handle GMP bignums.
6329
6330 * numbers.c: rewrite *many* functions to handle GMP bignums.
6331
6332 * num2integral.i.c (NUM2INTEGRAL, INTEGRAL2NUM, INTEGRAL2BIG):
6333 handle GMP bignums.
6334
6335 * num2float.i.c (NUM2FLOAT): handle GMP bignums.
6336
6337 * init.c (check_config): remove SCM_BIGDIG conditionals.
6338 (scm_init_guile_1): test to make sure mpz_t fits in a double_cell.
6339
6340 * gc-card.c ("sweep_card"): handle new mpz_t bignums.
6341
6342 * eval.c: remove SCM_BIGDIG conditionals.
6343
6344 * eq.c (s_scm_eqv_p): scm_i_bigcomp -> scm_i_bigcmp.
6345
6cdb8c3f
RB
63462003-03-31 Rob Browning <rlb@defaultvalue.org>
6347
6348 * Makefile.am (scmconfig.h): change srcdir to builddir. (Thanks
6349 to Kevin Ryde.)
6350
63512003-03-27 Rob Browning <rlb@defaultvalue.org>
6352
6353 * threads.h: fix various preprocessor usages of new public
6354 symbols to expect 0 or 1 values rather than 1 or undefined.
6355 i.e. change #ifdef to #if, etc.
6356
6357 * threads.c: fix various preprocessor usages of new public
6358 symbols to expect 0 or 1 values rather than 1 or undefined.
6359 i.e. change #ifdef to #if, etc.
6360
6361 * tags.h: fix various preprocessor usages of new public
6362 symbols to expect 0 or 1 values rather than 1 or undefined.
6363 i.e. change #ifdef to #if, etc.
6364
6365 * stacks.c: fix various preprocessor usages of new public
6366 symbols to expect 0 or 1 values rather than 1 or undefined.
6367 i.e. change #ifdef to #if, etc.
6368
6369 * stackchk.h: fix various preprocessor usages of new public
6370 symbols to expect 0 or 1 values rather than 1 or undefined.
6371 i.e. change #ifdef to #if, etc.
6372
6373 * stackchk.c: fix various preprocessor usages of new public
6374 symbols to expect 0 or 1 values rather than 1 or undefined.
6375 i.e. change #ifdef to #if, etc.
6376
6377 * sort.c: fix various preprocessor usages of new public
6378 symbols to expect 0 or 1 values rather than 1 or undefined.
6379 i.e. change #ifdef to #if, etc.
6380
6381 * read.c: fix various preprocessor usages of new public
6382 symbols to expect 0 or 1 values rather than 1 or undefined.
6383 i.e. change #ifdef to #if, etc.
6384
6385 * random.c: fix various preprocessor usages of new public
6386 symbols to expect 0 or 1 values rather than 1 or undefined.
6387 i.e. change #ifdef to #if, etc.
6388
6389 * print.c: fix various preprocessor usages of new public
6390 symbols to expect 0 or 1 values rather than 1 or undefined.
6391 i.e. change #ifdef to #if, etc.
6392
6393 * objects.c: fix various preprocessor usages of new public
6394 symbols to expect 0 or 1 values rather than 1 or undefined.
6395 i.e. change #ifdef to #if, etc.
6396
6397 * numbers.h: fix various preprocessor usages of new public
6398 symbols to expect 0 or 1 values rather than 1 or undefined.
6399 i.e. change #ifdef to #if, etc.
6400
6401 * null-threads.c: fix various preprocessor usages of new public
6402 symbols to expect 0 or 1 values rather than 1 or undefined.
6403 i.e. change #ifdef to #if, etc.
6404
6405 * lang.c: fix various preprocessor usages of new public
6406 symbols to expect 0 or 1 values rather than 1 or undefined.
6407 i.e. change #ifdef to #if, etc.
6408
6409 * lang.h: fix various preprocessor usages of new public
6410 symbols to expect 0 or 1 values rather than 1 or undefined.
6411 i.e. change #ifdef to #if, etc.
6412
6413 * iselect.h: fix various preprocessor usages of new public
6414 symbols to expect 0 or 1 values rather than 1 or undefined.
6415 i.e. change #ifdef to #if, etc.
6416
6417 * init.c: fix various preprocessor usages of new public
6418 symbols to expect 0 or 1 values rather than 1 or undefined.
6419 i.e. change #ifdef to #if, etc.
6420
6421 * gh_data.c: fix various preprocessor usages of new public
6422 symbols to expect 0 or 1 values rather than 1 or undefined.
6423 i.e. change #ifdef to #if, etc.
6424
6425 * gh.h: fix various preprocessor usages of new public
6426 symbols to expect 0 or 1 values rather than 1 or undefined.
6427 i.e. change #ifdef to #if, etc.
6428
6429 * gen-scmconfig.c: change most new public symbols to be defined to
6430 0 or 1 rather than being either 1 or undefined.
6431
6432 * gc_os_dep.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 (STACK_GROWS_DOWN): define to 0 or 1 rather than 1 or undef.
6436
6437 * gc.h: fix various preprocessor usages of new public
6438 symbols to expect 0 or 1 values rather than 1 or undefined.
6439 i.e. change #ifdef to #if, etc.
6440
6441 * gc-card.c: fix various preprocessor usages of new public
6442 symbols to expect 0 or 1 values rather than 1 or undefined.
6443 i.e. change #ifdef to #if, etc.
6444
6445 * gc-mark.c: fix various preprocessor usages of new public
6446 symbols to expect 0 or 1 values rather than 1 or undefined.
6447 i.e. change #ifdef to #if, etc.
6448
6449 * feature.c: fix various preprocessor usages of new public
6450 symbols to expect 0 or 1 values rather than 1 or undefined.
6451 i.e. change #ifdef to #if, etc.
6452
6453 * evalext.c: fix various preprocessor usages of new public
6454 symbols to expect 0 or 1 values rather than 1 or undefined.
6455 i.e. change #ifdef to #if, etc.
6456
6457 * eval.h: fix various preprocessor usages of new public
6458 symbols to expect 0 or 1 values rather than 1 or undefined.
6459 i.e. change #ifdef to #if, etc.
6460
6461 * eval.c: fix various preprocessor usages of new public
6462 symbols to expect 0 or 1 values rather than 1 or undefined.
6463 i.e. change #ifdef to #if, etc.
6464
6465 * eq.c: fix various preprocessor usages of new public
6466 symbols to expect 0 or 1 values rather than 1 or undefined.
6467 i.e. change #ifdef to #if, etc.
6468
6469 * coop.c: fix various preprocessor usages of new public
6470 symbols to expect 0 or 1 values rather than 1 or undefined.
6471 i.e. change #ifdef to #if, etc.
6472
6473 * coop-threads.c: fix various preprocessor usages of new public
6474 symbols to expect 0 or 1 values rather than 1 or undefined.
6475 i.e. change #ifdef to #if, etc.
6476
6477 * coop-pthreads.c: fix various preprocessor usages of new public
6478 symbols to expect 0 or 1 values rather than 1 or undefined.
6479 i.e. change #ifdef to #if, etc.
6480
6481 * coop-defs.h: fix various preprocessor usages of new public
6482 symbols to expect 0 or 1 values rather than 1 or undefined.
6483 i.e. change #ifdef to #if, etc.
6484
6485 * convert.i.c: fix various preprocessor usages of new public
6486 symbols to expect 0 or 1 values rather than 1 or undefined.
6487 i.e. change #ifdef to #if, etc.
6488
6489 * continuations.c: fix various preprocessor usages of new public
6490 symbols to expect 0 or 1 values rather than 1 or undefined.
6491 i.e. change #ifdef to #if, etc.
6492
6493 * _scm.h: fix various preprocessor usages of new public symbols to
6494 expect 0 or 1 values rather than 1 or undefined. i.e. change
6495 #ifdef to #if, etc.
6496
d11d697a
MV
64972003-03-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6498
9686f86d
MV
6499 * init.c (scm_init_guile_1): Call scm_i_init_deprecated.
6500
6501 * deprecated.c, deprecated.h: New files, to collect deprecated
6502 things in one place.
6503 * Makefile.am: Added them in all the right places.
6504
d11d697a
MV
6505 * Makefile.am (EXTRA_DIST): Added "scmconfig.h.top".
6506 (scmconfig.h): Get "scmconfig.h.top" from $(srcdir) so that VPATH
6507 builds work.
9686f86d
MV
6508 (DOT_X_FILES): Removed "iselect.x".
6509 (DOT_DOC_FILES): Removed "iselect.doc".
d11d697a 6510
e3c0c3b9
RB
65112003-03-25 Rob Browning <rlb@defaultvalue.org>
6512
6513 * win32-socket.h: #include "libguile/__scm.h". Replace usage of
6514 HAVE_WINSOCK2_H with SCM_HAVE_WINSOCK2_H.
6515
6516 * win32-socket.c: #include <config.h> if HAVE_CONFIG_H.
6517
6518 * vports.c: #include <config.h> if HAVE_CONFIG_H.
6519
6520 * unif.c: #include <config.h> if HAVE_CONFIG_H. Replace usage of
6521 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6522
6523 * threads.h: replace usage of struct timespect with
6524 scm_t_timespec. Replace usage of USE_PTHREAD_THREADS with
6525 SCM_USE_PTHREAD_THREADS. Remove typedef for struct timespec in
6526 favor of scm_t_timespec from scmconfig.h.
6527
6528 * threads.c: move libguile/_scm.h include to the top so we pick up
6529 any critical defines like _GNU_SOURCE early. Replace usage of
6530 struct timespect with scm_t_timespec. Replace usage of
6531 STACK_GROWS_UP with SCM_STACK_GROWS_UP. Replace usage of
6532 USE_PTHREAD_THREADS with SCM_USE_PTHREAD_THREADS.
6533
6534 * threads-plugin.h: replace usage of struct timespect with
6535 scm_t_timespec.
6536
6537 * threads-plugin.c: #include <config.h> if HAVE_CONFIG_H. Replace
6538 usage of struct timespect with scm_t_timespec.
6539
6540 * tags.h: move HAVE_STDINT_H handling to scmconfig.h. Move
6541 HAVE_INTTYPES_H handling to scmconfig.h. #include
6542 "libguile/__scm.h". Rework handling for scm_t_bits,
6543 scm_t_signed_bits, SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
6544 SCM_T_SIGNED_BITS_MIN, and SIZEOF_SCM_T_BITS to use scm_t_intptr,
6545 scm_t_uintptr, SCM_SIZEOF_INTPTR_T, and SCM_SIZEOF_UINTPTR_T, and
6546 SCM_SIZEOF_UNSIGNED_LONG. Rename usage of HAVE_ARRAYS to
6547 SCM_HAVE_ARRAYS.
6548
6549 * symbols.c: #include <config.h> if HAVE_CONFIG_H.
6550
6551 * struct.c: #include <config.h> if HAVE_CONFIG_H.
6552
6553 * strports.c: #include <config.h> if HAVE_CONFIG_H.
6554
6555 * strop.c: #include <config.h> if HAVE_CONFIG_H.
6556
6557 * stime.h: move handling of time related headers to scmconfig.h.
6558
6559 * stime.c: #include <config.h> if HAVE_CONFIG_H.
6560
6561 * stacks.c: replace usage of STACK_GROWS_UP with
6562 SCM_STACK_GROWS_UP.
6563
6564 * sort.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
6565 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6566
6567 * socket.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
6568 of uint32 and HAVE_UINT_32 with scm_t_int32.
6569
6570 * smob.c: #include <config.h> if HAVE_CONFIG_H.
6571
6572 * simpos.c: #include <config.h> if HAVE_CONFIG_H.
6573
6574 * script.c: #include <config.h> if HAVE_CONFIG_H.
6575
6576 * scmsigs.c: #include <config.h> if HAVE_CONFIG_H.
6577
6578 * scmconfig.h.top: new file -- preamble for scmconfig.h.
6579
6580 * rw.c: #include <config.h> if HAVE_CONFIG_H.
6581
6582 * regex-posix.c: #include <config.h> if HAVE_CONFIG_H.
6583
6584 * read.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6585
6586 * rdelim.c: #include <config.h> if HAVE_CONFIG_H.
6587
6588 * random.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
6589 of LONG32, LONG64, SIZEOF_LONG, and HAVE_LONG_LONGS with
6590 scm_t_int32, scm_t_int64, and SCM_HAVE_T_INT64. Rename usage of
6591 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6592
6593 * ramap.c: replace usage of HAVE_LONG_LONGS with
6594 "SCM_SIZEOF_LONG_LONG != 0".
6595
6596 * putenv.c: #include <config.h> if HAVE_CONFIG_H. #include
6597 "libguile/scmconfig.h".
6598
6599 * pthread-threads.c: #include <config.h> if HAVE_CONFIG_H.
6600
6601 * print.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6602 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6603
6604 * posix.c: #include <config.h> if HAVE_CONFIG_H.
6605
6606 * ports.c: #include <config.h> if HAVE_CONFIG_H.
6607
6608 * objects.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6609
6610 * numbers.h: replace usage of HAVE_FLOATINGPOINT_H with
6611 SCM_HAVE_FLOATINGPOINT_H. Replace usage of HAVE_IEEEFP_H with
6612 SCM_HAVE_IEEEFP_H. Replace usage of HAVE_NAN_H with
6613 SCM_HAVE_NAN_H. Replace usage of STDC_HEADERS with
6614 SCM_HAVE_STDC_HEADERS. Replace usage of ptrdiff_t with
6615 scm_t_ptrdiff. Replace usage of HAVE_LONG_LONGS with
6616 "SCM_SIZEOF_LONG_LONG != 0".
6617
6618 * numbers.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
6619 of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0". Replace
6620 usage of ptrdiff_t with scm_t_ptrdiff. Replace usage of
6621 SIZEOF_PTRDIFF_T with SCM_SIZEOF_SCM_T_PTRDIFF.
6622
6623 * num2integral.i.c: #include <config.h> if HAVE_CONFIG_H.
6624
6625 * null-threads.h: replace usage of struct timespect with
6626 scm_t_timespec.
6627
6628 * net_db.c: #include <config.h> if HAVE_CONFIG_H.
6629
6630 * mkstemp.c: #include <config.h> if HAVE_CONFIG_H. #include
6631 "libguile/__scm.h". Remove definition of gcc_uint64_t in favor of
6632 scm_t_uint64 and rename usages.
6633
6634 * mallocs.c: #include <config.h> if HAVE_CONFIG_H.
6635
6636 * load.c: #include <config.h> if HAVE_CONFIG_H.
6637
6638 * iselect.h: move handling of time related headers to scmconfig.h.
6639 Rename usage of HAVE_SYS_SELECT_H to SCM_HAVE_SYS_SELECT_H.
6640 Rename usage of HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Rename
6641 usage of USE_COOP_THREADS to SCM_USE_COOP_THREADS.
6642
6643 * iselect.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6644 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
6645 USE_NULL_THREADS to SCM_USE_NULL_THREADS.
6646
6647 * ioext.c: #include <config.h> if HAVE_CONFIG_H.
6648
6649 * inline.h: #include "libguile/__scm.h" at the top. Change code
6650 to use SCM_C_INLINE and SCM_INLINE_C_INCLUDINT_INLINE_H to decide
6651 what to do instead of creating a new public #define. Rename usage
6652 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
6653 USE_NULL_THREADS to SCM_USE_NULL_THREADS. Rename usage of
6654 USE_COPT_THREADS to SCM_USE_COPT_THREADS.
6655
6656 * inline.c: rearrange handling -- now we just #define
6657 SCM_INLINE_C_INCLUDING_INLINE_H to 1 and #include
6658 "libguile/inline.h". scmconfig.h will define SCM_C_INLINE as
6659 appropriate, and we use that in inline.h along with the above
6660 define to determine how to respond.
6661
6662 * init.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
6663 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6664
6665 * guile.c: #include <config.h> if HAVE_CONFIG_H.
6666
6667 * gh_data.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6668 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6669
6670 * gh.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6671
6672 * gen-scmconfig.h.in: new file -- see gen-scmconfig.c for details.
6673
6674 * gen-scmconfig.c: new file -- see comments in file for details.
6675
6676 * gdbinit.c: #include <config.h> if HAVE_CONFIG_H.
6677
6678 * gc_os_dep.c: #include <config.h> if HAVE_CONFIG_H. Replace
6679 usage of STACK_GROWS_UP with SCM_STACK_GROWS_UP.
6680
6681 * gc.h: replace usage of SIZEOF_LONG with
6682 SCM_SIZEOF_UNSIGNED_LONG. Replace usage of USE_PTHREAD_THREADS
6683 with SCM_USE_PTHREAD_THREADS. Remove SCM_SIZEOF_LONG definition
6684 since we handle that in scmconfig.h now.
6685
6686 * gc.c: #include <config.h> if HAVE_CONFIG_H.
6687
6688 * gc-mark.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6689 of HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of
6690 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6691
6692 * gc-malloc.c: #include <config.h> if HAVE_CONFIG_H.
6693
6694 * gc-card.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6695 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6696
6697 * fports.c: #include <config.h> if HAVE_CONFIG_H.
6698
6699 * filesys.c: #include <config.h> if HAVE_CONFIG_H.
6700
6701 * feature.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6702 of USE_NULL_THREADS to SCM_USE_NULL_THREADS.
6703
6704 * extensions.c: #include <config.h> if HAVE_CONFIG_H.
6705
6706 * evalext.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6707 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6708
6709 * eval.c: #include <config.h> if HAVE_CONFIG_H. #include
6710 "libguile/__scm.h" rather than scmconfig.h. Rename usage of
6711 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
6712 with "SCM_SIZEOF_LONG_LONG != 0".
6713
6714 * error.c: #include <config.h> if HAVE_CONFIG_H.
6715
6716 * eq.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
6717 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
6718 with "SCM_SIZEOF_LONG_LONG != 0".
6719
6720 * deprecation.c: #include <config.h> if HAVE_CONFIG_H.
6721
6722 * coop.c: replace usage of struct timespect with scm_t_timespec.
6723 #include <config.h> if HAVE_CONFIG_H.
6724
6725 * coop-threads.c: #include "libguile/_scm.h" early. Replace
6726 usage of struct timespect with scm_t_timespec. Replace usage of
6727 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
6728
6729 * coop-pthreads.c: #include "libguile/_scm.h" early. Replace
6730 usage of struct timespect with scm_t_timespec. Replace usage of
6731 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
6732
6733 * coop-defs.h: move handling of time related headers to
6734 scmconfig.h. Add #include "libguile/__scm.h". Rename usage of
6735 HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Replace usage of struct
6736 timespect with scm_t_timespec.
6737
6738 * convert.i.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6739
6740 * convert.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6741
6742 * convert.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6743 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6744
6745 * continuations.c: move libguile/_scm.h include to the top so we
6746 pick up any critical defines like _GNU_SOURCE early.
6747
6748 * backtrace.c: #include <config.h> if HAVE_CONFIG_H.
6749
6750 * async.c: #include <config.h> if HAVE_CONFIG_H.
6751
6752 * alloca.c: #include <config.h> if HAVE_CONFIG_H.
6753
6754 * _scm.h: #include <config.h> if HAVE_CONFIG_H.
6755 Rename usage of USE_PTHREAD_THREADS to SCM_USE_PTHREAD_THREADS.
6756
6757 * __scm.h: move libguile/scmconfig.h include up to the top, so
6758 we're sure to pick up any critical defines like _GNU_SOURCE early.
6759 #include <limits.h> removed in favor of scmconfig.h inclusion when
6760 appropriate. STDC_HEADERS based inclusion of stdlib.h,
6761 sys/types.h, stddef.h, and sys/stdtypes.h removed in favor of
6762 scmconfig.h inclusion when appropriate. Various Win32 related
6763 definitions removed in favor of scmconfig.h inclusion when
6764 appropriate.
6765 (HAVE_UINTPTR_T): definition removed (see NEWS).
6766 (SIZEOF_PTRDIFF_T): definition removed (see NEWS).
6767 (HAVE_LONG_LONGS): definition removed (see NEWS).
6768 (HAVE_LONG_LONG): definition removed (see NEWS).
6769 (HAVE_PTRDIFF_T): definition removed (see NEWS).
6770
6771 * Makefile.am: scmconfig.h is now generated by building and
6772 running gen-scmconfig.h and capturing its output. gen-scmconfig
6773 uses config.h and the configure.in generated gen-scmconfig.h to
6774 decide what to output. See gen-scmconfig.c for details.
6775 (noinst_PROGRAMS): add gen-scmconfig.
6776 (gen_scmconfig_SOURCES): new variable.
6777 (gen-scmconfig.$(OBJEXT)): new target - be careful to handle
6778 cross-compiling right.
6779 (scmconfig.h): build scmconfig.h from gen-scmconfig's output.
6780 (BUILT_SOURCES): add scmconfig.h.
6781
25e0bf97
MV
67822003-03-19 Marius Vollmer <mvo@zagadka.de>
6783
6784 * gc_os_dep.c: Added defines for sparc-unknown-netbsdelf1.5 from
6785 Adrian Bunk. Thanks!
6786
74b6d6e4
MD
67872003-03-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6788
6789 * goops.c (make_class_from_template): New fourth arg:
6790 applicablep.
6791 (scm_class_extended_generic_with_setter, scm_class_self): Fixed
6792 cpls.
6793
6794 * smob.c (scm_set_smob_apply): Call scm_i_inherit_applicable.
6795
6796 * goops.c, objects.c, objects.h (scm_make_extended_class): New
6797 second arg: applicablep.
6798 (scm_i_inherit_applicable): New function.
6799
6800 * goops.c, goops.h (scm_class_applicable,
6801 scm_class_extended_accessor): New classes.
6802
5c9e7dad
DH
68032003-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
6804
6805 * procs.c (scm_procedure_documentation): Removed redundant
6806 SCM_NIMP test and replaced other calls to SCM_IMP by more explicit
6807 predicates.
6808
f8af5c6d
MD
68092003-03-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6810
c614a00b
MD
6811 * list.c, list.h (scm_filter, scm_filter_x): New functions.
6812
109c2c9f
MD
6813 * modules.c (scm_module_import_interface): New function.
6814
f8af5c6d
MD
6815 * goops.c, goops.h (scm_class_accessor_method): Renamed from
6816 scm_class_accessor.
6817 (scm_class_accessor): New class.
6818
a48d60b1
MD
68192003-03-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6820
6821 * goops.c (scm_primitive_generic_generic): Enable primitive
6822 generic if not enabled.
6823 (scm_sys_goops_loaded): Setup unextended primitive generics.
6824
6825 * goops.c, goops.h (scm_c_extend_primitive_generic): New function.
6826
6827 * snarf.h (SCM_PRIMITIVE_GENERIC, SCM_PRIMITIVE_GENERIC_1): New
6828 snarf macros.
6829
6830 * numbers.c (scm_abs): Use SCM_PRIMITIVE_GENERIC. (This is only a
6831 testing example. All uses of SCM_GPROC should be converted.)
6832
6833 * procprop.c (scm_stand_in_scm_proc): Use scm_assq instead of
6834 scm_assoc.
6835
6836 * eq.c (scm_equal_p): Turned into a primitive generic.
6837
84edc049
RB
68382003-02-27 Rob Browning <rlb@defaultvalue.org>
6839
6840 * Makefile.am (scmconfig.h): new target -- generate file from
6841 ../config.h.
6842 (modinclude_HEADERS): remove version.h.
6843 (nodist_modinclude_HEADERS): add version.h.
6844
ea5c9285
MD
68452003-02-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6846
b4a1358c
MD
6847 This fixes a serious GC bug, introduced during the latest
6848 reorganization of the GC, which disabled freeing of structs and
6849 GOOPS objects:
6850
6851 * struct.c (scm_struct_prehistory): Init scm_i_structs_to_free to
6852 SCM_EOL.
53af8255
MD
6853 (scm_struct_prehistory): Move scm_free_structs to
6854 scm_before_mark_c_hook.
ea5c9285 6855
b4a1358c
MD
6856 * gc-card.c (sweep_card): Check that we haven't swept structs on
6857 this card before. That can happen if scm_i_sweep_all_segments has
6858 been called from some other place than scm_igc.
6859
c35738c1
MD
68602003-02-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6861
231a4ea8
MD
6862 * environments.c (DEFAULT_OBARRAY_SIZE): Changed from 137 to 31
6863 (since hash tables now adapt their size).
6864
6865 * modules.c (scm_modules_prehistory): Changed from 2001 to 1533
6866 (current number of prehistory bindings; hashtable code will select
6867 a prime which is greater than this value).
6868
6869 * symbols.c (scm_symbols_prehistory): Changed from 1009 to 2139
6870 (current number of initial symbols).
6871
6872 * properties.c (scm_init_properties): Don't specify size of
6873 scm_properties_whash.
6874
6875 * objprop.c (scm_init_objprop): Don't specify size of
6876 scm_object_whash.
6877
6878 * keywords.c (scm_init_keywords): Don't specify a hash table size.
6879
c35738c1
MD
6880 * hooks.c (scm_c_hook_add): Fixed bug in append mode.
6881
6882 The following changes introduce the use of resizable hash tables
6883 throughout Guile. It also renames the old *-hash-table* functions
6884 to *-alist-vector* and places them, together with the rest of the
6885 weak vector support, in the module (ice-9 weak-vector). We should
6886 probably introduce a new, better, API for weak references, for
6887 example "weak pairs" a la MIT-Scheme. (In Chez scheme, they even
6888 look like and are used like ordinary pairs.)
6889
6890 * environments.c (obarray_enter, obarray_retrieve, obarray_remove,
6891 leaf_environment_fold, obarray_remove_all): Use hashtable
6892 accessors.
6893
6894 * gc.c (scm_init_storage): Moved hook initialization to
6895 scm_storage_prehistory.
6896 (scm_storage_prehistory): New function.
6897 (scm_igc): Added commentary about placement of
6898 scm_after_sweep_c_hook.
6899
6900 * gc-mark.c (scm_mark_all): Use hashtable accessors.
6901 (scm_gc_mark_dependencies): Use SCM_WVECT_WEAK_KEY_P and
6902 SCM_WVECT_WEAK_VALUE_P.
6903
6904 * hashtab.c, hashtab.h (scm_hash_for_each, scm_hash_map): New
6905 functions.
6906 (scm_vector_to_hash_table, scm_c_make_resizing_hash_table):
6907 Removed.
6908 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table,
6909 scm_make_doubly_weak_hash_table): Moved here from weaks.c.
6910
6911 * init.c (scm_init_guile_1): Removed call to scm_init_weaks; Added
6912 calls to scm_storage_prehistory and scm_hashtab_prehistory.
6913
6914 * modules.c (module-reverse-lookup): Use hashtable accessors.
6915
6916 * symbols.c, symbols.h (scm_i_hash_symbol): New function.
6917
6918 * weaks.c, weaks.h (scm_make_weak_key_alist_vector,
6919 scm_make_weak_value_alist_vector,
6920 scm_make_doubly_weak_alist_vector): New functions.
6921
6922 * weaks.c (scm_init_weaks_builtins): New function.
6923
6924 * weaks.h (SCM_WVECTF_WEAK_KEY, SCM_WVECTF_WEAK_VALUE,
6925 SCM_WVECTF_NOSCAN, SCM_WVECT_WEAK_KEY_P, SCM_WVECT_WEAK_VALUE_P,
6926 SCM_WVECT_NOSCAN_P): New macros.
6927
6928 * weaks.c (scm_scan_weak_vectors): Use SCM_WVECT_WEAK_KEY_P
6929 and SCM_WVECT_WEAK_VALUE_P.
6930
6931 * weaks.c, weaks.h (scm_i_allocate_weak_vector): Renamed from
6932 allocate_weak_vector and exported.
6933
0a4c1355
MD
69342003-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6935
6936 * hashtab.c: Undid thread safety. (We decided that it's better to
6937 let the user explicitly protect the tables (or not) according what
6938 is suitable for the application.)
6939
87ca11ff
MD
69402003-02-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6941
6942 * hashtab.c (scm_hash_fn_remove_x, scm_internal_hash_fold): Made
6943 thread safe and handle resizing tables.
6944 (scm_ihashx, scm_sloppy_assx, scm_delx_x): Removed
6945 SCM_DEFER/ALLOW_INTS.
6946
f59a096e
MD
69472003-02-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6948
6949 * hashtab.c (scm_vector_to_hash_table,
6950 scm_c_make_resizing_hash_table, scm_make_hash_table): New
6951 functions.
6952 (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x): Made thread
6953 safe and handle resizing tables.
6954
6955 * weaks.c (scm_make_weak_key_hash_table,
6956 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
6957 Size argument made optional. Return resizable table if not
6958 specified.
6959
4b612c5b
MD
69602003-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6961
6962 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
6963 Fixed formals tests for closures. (Thanks to Kevin Ryde.)
6964
b3d7f6df
MD
69652003-02-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6966
6967 * debug.c (scm_procedure_source): Handle all objects for which
6968 procedure? is #t. (Thanks to Bill Schottstaedt.)
6969
756414cf
MD
69702003-01-23 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6971
361d631f
MD
6972 * futures.c (mark_futures): Don't need to mark data of recycled
6973 futures.
6974 (scan_futures, cleanup_undead): Be smarter about marking
6975 futures---avoid unnecessary passes through future lists.
6976
756414cf
MD
6977 * futures.h, futures.c: New files; Introduced recycling of
6978 futures. For fine-grained threading this lifts performance to
6979 another level. We can now use parallelization in inner loops of
6980 Guile programs without impossible overhead.
6981
6982 * threads.h, threads.c: Moved futures to their own file.
6983
6984 * Makefile.am (libguile_la_SOURCES): Added futures.c.
6985 (DOT_X_FILES): Added futures.x.
6986 (DOT_DOC_FILES): Added futures.doc.
6987 (modinclude_HEADERS): Added futures.h.
6988
6989 * threads.c, threads.h (scm_i_create_thread): Renamed from
6990 create_thread and made global.
6991
6992 * futures.c (scm_make_future): New procedure.
6993
6994 * eval.c: #include "libguile/futures.h".
6995
6996 * init.c: #include "futures.h"
6997 (scm_init_guile_1): Call scm_init_futures.
6998
6999 * stime.c (SCM_TIME_UNITS_PER_SECOND): Renamed from CLKTCK.
7000
7001 * stime.h (SCM_TIME_UNITS_PER_SECOND): Definition moved here.
7002
7003 * eval.c, eval.h (scm_trampoline_0, scm_i_call_closure_0): New
7004 functions.
7005
7006 * eval.c (scm_trampoline_1): Fixed arguments test for closures.
7007
b4debead
MD
70082003-01-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7009
7010 * threads.c (create_thread): Don't unwind dynwind chain of parent
7011 thread before creation. Just start the new thread with an empty
7012 dynwind chain.
7013
93f26b7b
MD
70142003-01-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7015
7016 * evalext.c, evalext.h (scm_self_evaluating_p): New function.
7017
38d8927c
MD
70182003-01-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7019
41c96c32
MD
7020 * threads.c (scm_timed_wait_condition_variable): Support timed
7021 waiting also for simple condition variables.
7022
38d8927c
MD
7023 * goops.c (TEST_CHANGE_CLASS): Use scm_change_object_class instead
7024 of calling the procedure change-object-class.
7025
9cf5d9b7
MD
70262003-01-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7027
7028 * ramap.c (scm_ramapc): Typo in error message.
7029
bbf8d523
MD
70302003-01-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7031
b46fae00
MD
7032 * goops.c (scm_sys_prep_layout_x): Bugfix: Only create layout for
7033 slots with instance allocation.
7034
bbf8d523
MD
7035 * goops.c, goops.h (scm_class_extended_generic_with_setter): New
7036 class.
7037 (scm_compute_applicable_methods): Use scm_generic_function_methods.
7038
7039 * goops.c (scm_generic_function_methods): Support extended
7040 generic functions.
7041
ebf9b47c
MD
70422002-12-29 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7043
7044 * eval.c (unmemocopy): Bugfix: scm_sym_delay --> scm_sym_future.
2e37d6a2 7045 Thanks to Neil for pointing this out!
ebf9b47c 7046
14a9ba3f
NJ
70472002-12-29 Neil Jerram <neil@ossau.uklinux.net>
7048
7049 * lang.h: Remove declarations matching definitions removed from
7050 lang.c (just below).
7051
c6a040a8
NJ
70522002-12-28 Neil Jerram <neil@ossau.uklinux.net>
7053
6054d805
NJ
7054 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
7055 scm_m_while, scm_nil_eq): Remove definitions that were superfluous
7056 and already commented out.
7057
c6a040a8
NJ
7058 * read.h (scm_lreadparen), read.c (scm_lreadr, scm_read_token,
7059 scm_lreadparen): Support reading vectors with Elisp syntax if
7060 SCM_ELISP_READ_EXTENSIONS is defined. (SCM_ELISP_READ_EXTENSIONS
7061 is not currently defined, and there isn't even a configure switch
7062 to enable it yet.)
7063
3742c12f
MV
70642002-12-26 Marius Vollmer <mvo@zagadka.ping.de>
7065
7066 * Makefile.am (c-tokenize.o): Refer to source via $< so that vpath
7067 builds work.
7068 (EXTRA_DIST): Added version.h.in.
7069
fb50ef08
MD
70702002-12-21 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7071
7072 This change makes it possible for one thread to do lazy sweeping
7073 while other threads are running. Now only the mark phase need to
7074 have all threads asleep. We should look further into this issue.
7075 Presently, I've put the locking of scm_i_sweep_mutex at
7076 "conservative" places due to my current lack of knowledge about
7077 the garbage collector. Please feel free to restrict these regions
7078 further to allow for maximal parallelism!
7079
7080 * gc.c, gc.h (scm_i_sweep_mutex): New mutex.
7081
7082 * gc.c (scm_gc_for_newcell), gc-malloc.c (scm_realloc,
7083 scm_gc_register_collectable_memory): Substitute locking of
7084 scm_i_sweep_mutex for calls to scm_i_thread_put_to_sleep.
7085 (scm_igc): Lock sweep mutex here instead of in callers; Calls to
7086 scm_i_thread_put_to_sleep/scm_i_thread_wake_up used to demarkate
7087 the single-thread section (which now only contains the mark
7088 phase).
7089 (scm_gc): Don't lock sweeo mutex here since scm_igc locks it;
7090 Removed SCM_DEFER/ALLOW_INTS. Simply call scm_igc directly.
7091
7092 * threads.c (gc_section_mutex): Removed.
7093
9ed24633
MD
70942002-12-19 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7095
0d48aca5
MD
7096 * threads.c (create_thread): Clear parent field in root state in
7097 order not to unnecessarily remember dead threads.
7098
9ed24633
MD
7099 * eval.c (call_subr2o_1, call_lsubr2_2): New functions.
7100 (scm_trampoline_1, scm_trampoline_2): Use them.
7101
29717c89
MD
71022002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7103
7104 Partial introduction of real plugin interface.
7105
7106 * Makefile.am (modinclude_HEADERS): Added threads-plugin.h.
7107 (EXTRA_DIST): Added threads-plugin.c.
7108
7109 * threads-plugin.h, threads-plugin.c: New files.
7110
7111 * threads.h: #include "libguile/threads-plugin.h".
7112
7113 * threads.c: #include "libguile/threads-plugin.c".
7114
7115 * pthread-threads.c: Temporarily remove debugging functions.
7116
7117 * threads.c, threads.h (scm_yield): Added back.
7118
e29e0b09
MD
71192002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7120
7121 * threads.c (really_launch): Detach before unlocking
7122 thread_admin_mutex in order not to risk being joined.
7123 (scm_i_thread_put_to_sleep, scm_i_thread_wake_up): Keep
7124 thread_admin_mutex locked during GC.
7125
7126 * pthread-threads.c, pthread-threads.h: Improvements to debugging
7127 functions.
7128
0b6843b1 71292002-12-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
93cd4dcd 7130
6da2dfc4
MD
7131 * pthread-threads.c, pthread-threads.h (SCM_DEBUG_THREADS): Added
7132 support for debugging mutex operations.
7133
1b92fb6b
MD
7134 * threads.c (scm_thread): Removed filed joining_threads.
7135 (thread_print): Print thread number as well as address of thread
7136 structure.
0b6843b1
MD
7137 (scm_join_thread): Bugfix.
7138 (scm_lock_mutex, scm_try_mutex, scm_unlock_mutex,
7139 scm_timed_wait_condition_variable, scm_signal_condition_variable,
7140 scm_broadcast_condition_variable): Use the low-level API.
7141 (scm_all_threads): Return copy of thread list (to prevent
7142 unintended destruction).
7143 (scm_threads_prehistory): Initialize heap_mutex of fake thread.
1b92fb6b 7144
93cd4dcd
MD
7145 * pthread-threads.c, pthread-threads.h, threads.c: Fixes to
7146 pthread "native" recursive mutex support.
7147
2ff4f181
MD
71482002-12-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7149
28d52ebb
MD
7150 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): New definitions.
7151 Simply lock a thread C API recursive mutex.
7152 (SCM_NONREC_CRITICAL_SECTION_START,
7153 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
7154 SCM_REC_CRITICAL_SECTION_END): Removed.
7155
7156 * eval.c: Replaced SOURCE_SECTION_START / SOURCE_SECTION_END with
7157 direct calls to scm_rec_mutex_lock / unlock around the three calls
7158 to scm_m_expand_body.
7159
7160 * eval.c, eval.h (promise_free): New function.
7161 (scm_force): Rewritten; Now thread-safe; Removed
7162 SCM_DEFER/ALLOW_INTS.
7163
7164 * pthread-threads.h: Added partially implemented plugin interface
7165 for recursive mutexes. These are, for now, only intended to be
7166 used internally within the Guile implementation.
7167
7168 * pthread-threads.c: New file.
7169
7170 * threads.c: Conditionally #include "pthread-threads.c".
7171
7172 * eval.c, eval.h (scm_makprom, scm_force): Rewritten to be
7173 thread-safe;
7174
7175 * snarf.h (SCM_MUTEX, SCM_GLOBAL_MUTEX, SCM_REC_MUTEX,
7176 SCM_GLOBAL_REC_MUTEX): New macros.
7177
7178 * eval.c, threads.c, threads.h, snarf.h: Rewrote critical section
7179 macros---use mutexes instead.
7180
7181 * tags.h (SCM_IM_FUTURE): New tag.
7182
7183 * eval.c (scm_m_future): New primitive macro.
7184 (SCM_CEVAL): Support futures.
7185 (unmemocopy): Support unmemoization of futures.
7186
7187 * print.c (scm_isymnames): Name of future isym.
7188
2ff4f181
MD
7189 * version.c: Unmade some changes to my private copy that got
7190 committed by mistake.
7191
392d2833
MD
71922002-12-11 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7193
e200ddee
MD
7194 * gc-malloc.c, gc.h, init.c: Reverted gc-malloc change of
7195 2002-12-10.
7196
392d2833
MD
7197 * gc.c (scm_igc): Don't call scm_i_thread_invalidate_freelists.
7198
7199 * gc.c (scm_gc_sweep): Call it here instead, which is a more
7200 logical place.
7201
7202 * threads.c (create_thread): Remember root object until the handle
7203 of the new thread is on all_threads list.
7204
7205 * root.c (scm_make_root): Moved copying of fluids until after
7206 creation of root handle so that the fluids are GC protected. Also
7207 removed the critical section.
7208
c4c52ebe
MD
72092002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7210
960c408c
MD
7211 * gc-malloc.c, gc.h (scm_gc_malloc_prehistory): New function.
7212
3cdde9d6 7213 * gc-malloc.c (malloc_mutex): New mutex.
960c408c 7214 (scm_gc_malloc_prehistory): Initialize it.
3cdde9d6
MD
7215 (scm_realloc): Serialize call to realloc
7216 (scm_calloc): Same for calloc.
7217 Thanks to Wolfgang Jaehrling!
7218 (Now we have to make sure all calls to malloc/realloc are made
7219 through scm_malloc.)
7220
960c408c
MD
7221 * init.c (scm_init_guile_1): Call scm_gc_malloc_prehistory.
7222
c4c52ebe
MD
7223 * threads.c (really_launch): Release heap (to prevent deadlock).
7224 (create_thread): Release heap before locking thread admin mutex.
7225
b0dc3d71
MD
72262002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7227
7228 * threads.c (scm_i_thread_invalidate_freelists): New
7229 function.
7230
7231 * gc.c (scm_igc): Call scm_i_thread_invalidate_freelists.
7232
7233 * modules.c (scm_export): Inserted a return statement.
7234
06e80f59
HWN
72352002-12-10 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7236
7237 * modules.c (scm_export): new function
7238
7239 * gc-card.c: add a note about malloc()/free() overhead.
7240
a12611c3
MD
72412002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7242
7243 * Makefile.am (c-tokenize.$(OBJEXT)): Don't look for c-tokenize.c
7244 in srcdir.
7245
c7fabadf
MD
72462002-12-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7247
7248 These changes remove scm_ints_disabled (which hasn't has any
7249 effect in Guile for quite some time).
7250
7251 * async.c, error.h (scm_ints_disabled): Removed.
7252
7253 * gc.c (scm_gc_for_newcell), init.c (scm_init_guile_1),
7254 root.c (scm_internal_cwdr), gdbint.c (SCM_BEGIN_FOREIGN_BLOCK,
7255 SCM_END_FOREIGN_BLOCK): Don't touch scm_ints_disabled.
7256 (old_ints): Removed.
7257
7258 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Define as a recursive
7259 critical section.
7260 (SCM_REDEFER_INTS, SCM_ALLOW_INTS): Define as SCM_DEFER_INTS and
7261 SCM_ALLOW_INTS.
7262
9bc4701c
MD
72632002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7264
52340b65
MD
7265 * threads.c (scm_mutex_lock, scm_cond_wait, scm_cond_timedwait):
7266 Removed accidental #if 0 around these functions.
7267
9bc4701c
MD
7268 These changes are the start of support for preemptive
7269 multithreading. Marius and I have agreed that I commit this code
7270 into the repository although it isn't thoroughly tested and surely
7271 introduces many bugs. The bugs should only be exposed when using
7272 threads, though. Signalling and error handling for threads is
7273 very likely broken. Work on making the implementation cleaner and
7274 more efficient is needed.
7275
7276 * __scm.h (SCM_ALLOW_INTS_ONLY): Removed.
7277 (SCM_NONREC_CRITICAL_SECTION_START,
7278 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
7279 SCM_REC_CRITICAL_SECTION_END): New macros.
7280 (SCM_CRITICAL_SECTION_START/END): Defined here.
7281
7282 * eval.c: Insert SOURCE_SECTION_START / SOURCE_SECTION_END around
7283 the three calls to scm_m_expand_body.
7284
7285 * gc.h: #include "libguile/pthread-threads.h";
7286 (SCM_FREELIST_CREATE, SCM_FREELIST_LOC): New macros.
7287
7288 * gc.c (scm_i_freelist, scm_i_freelist2): Defined to be of type
7289 scm_t_key;
7290
7291 * gc.c, gc-freelist.c, inline.h: Use SCM_FREELIST_LOC for freelist
7292 access.
7293
7294 * gc-freelist.c (scm_gc_init_freelist): Create freelist keys.
7295
7296 * gc-freelist.c, threads.c (really_launch): Use
7297 SCM_FREELIST_CREATE.
7298
7299 * gc-malloc.c (scm_realloc, scm_gc_register_collectable_memory):
7300
7301 * gc.c (scm_i_expensive_validation_check, scm_gc,
7302 scm_gc_for_newcell): Put threads to sleep before doing GC-related
7303 heap administration so that those pieces of code are executed
7304 single-threaded. We might consider rewriting these code sections
7305 in terms of a "call_gc_code_singly_threaded" construct instead of
7306 calling the pair of scm_i_thread_put_to_sleep () and
7307 scm_i_thread_wake_up (). Also, we would want to have as many of
7308 these sections eleminated.
7309
7310 * init.c (scm_init_guile_1): Call scm_threads_prehistory.
7311
7312 * inline.h: #include "libguile/threads.h"
7313
7314 * pthread-threads.h: Macros now conform more closely to the
7315 pthreads interface. Some of them now take a second argument.
7316
7317 * threads.c, threads.h: Many changes.
7318
73192002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7320
7321 * Makefile.am (version.h): Changed $^ --> $< in rule for
7322 version.h.
7323
b2cbe8d8
RB
73242002-12-08 Rob Browning <rlb@defaultvalue.org>
7325
7326 * version.h.in (SCM_MICRO_VERSION): use @--@ substitution now.
7327 (SCM_MINOR_VERSION): use @--@ substitution now.
7328 (SCM_MICRO_VERSION): use @--@ substitution now.
7329 (scm_effective_version): new function prototype.
7330
7331 * version.c (scm_effective_version): new function, also add
7332 effective-version.
7333
7334 * Makefile.am (schemelibdir): VERSION -> GUILE_EFFECTIVE_VERSION.
7335 (libpath.h): use GUILE_EFFECTIVE_VERSION to compute
7336 SCM_LIBRARY_DIR.
7337 (version.h): generate this here rather than configure.in. This
7338 approach tracks source edits better (i.e. more immediately).
7339 Might be worth considering for other .in files too.
7340
5441c65c
MV
73412002-12-02 Marius Vollmer <mvo@zagadka.ping.de>
7342
7343 Reorganized thread package selection. A thread package now only
7344 implements a small set of pthread like functions and Guile
7345 implements the rest on top of that. Guile's implementation is
7346 what the "coop-pthreads" package has been previously. Support for
7347 "coop" threads has been removed until I get time to add it again.
7348
7349 * Makefile.am (libguile_la_SOURCES): Removed iselect.c.
7350 (noinst_HEADERS): Removed coop-threads.c, coop-threads.h, coop.c,
7351 null-threads.c, coop-pthreads.c.
7352 (modinclude_HEADERS): Removed coop-defs.h, coop-pthreads.h. Added
7353 pthread-threads.h.
7354
7355 * validate.h (SCM_VALIDATE_THREAD): Moved to threads.h.
7356
7357 * threads.h: Do not include "libguile/coop-defs.h". Include
7358 "libguile/pthread-threads.h" for USE_COPT_THREADS. Removed
7359 (previously deprecated) C level thread API prototypes. They are
7360 now in the thread package specific headers, "null-threads.h" and
7361 "pthread-threads.h".
7362 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
7363 New.
7364 (scm_threads_init): Removed.
7365 (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END,
7366 SCM_THREAD_SWITCHING_CODE, scm_i_switch_counter,
7367 SCM_I_THREAD_SWITCH_COUNT): Define here.
7368 (scm_single_thread_p): Removed.
7369 (scm_call_with_new_thread): Take two args directly instead of list
7370 of two args.
7371 (scm_i_thread_data, scm_i_set_thread_data, SCM_THREAD_LOCAL_DATA,
7372 SCM_SET_THREAD_LOCAL_DATA): Define here.
7373
7374 * threads.c: Merged with "coop-pthreads.c".
7375
7376 * null-threads.h: Implement pthread-like API as a set of macros.
7377
7378 * pthread-threads.h: New, implement pthread-like API by deferring
7379 to pthread itself.
7380
7381 * init.c (scm_init_guile_1): Do not call scm_init_iselect, which
7382 has been lost in the reorganization.
7383
504d99c5
MD
73842002-12-01 Mikael Djurfeldt <mdj@linnaeus>
7385
7386 The following change makes it possible to move procedure
7387 application dispatch outside inner loops. The motivation was
7388 clean implementation of efficient replacements of R5RS primitives
7389 in SRFI-1.
7390
7391 The semantics is clear: scm_trampoline_N returns an optimized
7392 version of scm_call_N (or NULL if the procedure isn't applicable
7393 on N args).
7394
7395 Applying the optimization to map and for-each increases efficiency
7396 noticeably. For example, (map abs ls) is 8 times faster than
7397 before.
7398
7399 * eval.h (scm_t_trampoline_1, scm_t_trampoline_2): New types.
7400
7401 * eval.c, eval.h (scm_trampoline_1, scm_trampoline_2): New functions.
7402
7403 * eval.c (call_subr2_2, call_lsubr_2, call_closure_2): New functions;
7404 (map, for-each): Handle also application on two args as a special
7405 case; Use trampolines.
7406
7407 Other changes:
7408
7409 * sort.c (scm_cmp_function): Choose subr2less for scm_tc7_subr_2o;
7410 (subr2oless): Removed.
7411 (scm_restricted_vector_sort_x): Use scm_return_first to keep the
7412 vector GC protected.
7413
7414 * eval.c (check_map_args): Use scm_out_of_range_pos instead of
7415 scm_out_of_range.
7416
63dd3413
DH
74172002-11-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
7418
7419 * evalext.[ch] (scm_m_undefine, undefine): Deprecated.
7420
4ba5f279
MD
74212002-11-17 Mikael Djurfeldt <mdj@linnaeus>
7422
7423 * debug.c (scm_make_iloc): Added missing "return".
7424
56ae231f
MV
74252002-11-17 Marius Vollmer <mvo@zagadka.ping.de>
7426
7427 * strports.c (scm_eval_string_in_module): Validate second arg to
7428 be a module. Thanks to Arno Peters!
7429
80b28865
DH
74302002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7431
7432 * .cvsignore: remove goops.c
7433
c88b1456
DH
74342002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7435
7436 * modules.c (scm_env_top_level, scm_lookup_closure_module,
7437 module_variable, scm_module_lookup_closure,
7438 scm_module_transformer, scm_sym2var, scm_module_reverse_lookup,
7439 scm_system_module_env_p): Don't compare SCM values with C
7440 operators == or !=. Avoid SCM_IMP predicates. Prefer !SCM_FALSEP
7441 over SCM_NFALSEP.
7442
a8a19efc
DH
74432002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7444
7445 * eval.h (SCM_MAKE_ILOC): New macro.
7446
7447 * debug.c (scm_make_iloc): Use SCM_MAKE_ILOC instead of computing
7448 the iloc bitpattern here.
7449
76734914
MD
74502002-11-14 Mikael Djurfeldt <mdj@linnaeus>
7451
7452 * coop-pthreads.c, coop-pthreads.h: scm_internal_select should be
7453 part of the API, otherwise it's difficult to write Guile
7454 extensions using non-blocking I/O => moved #include
7455 "libguile/iselect.h" from coop-pthreads.c --> coop-pthreads.h.
7456
7457 * coop-pthreads.c (scm_unlock_mutex): Changed s_lock_mutex -->
7458 s_unlock_mutex.
7459
8b5b4a75
MV
74602002-11-10 Marius Vollmer <mvo@zagadka.ping.de>
7461
7462 * __scm.h (USE_THREADS, GUILE_ISELECT): Do not define here. They
7463 are defined in configure.in.
7464
7465 * threads.c: Removed SCM_API from function definitions. SCM_API
7466 is only for declarations.
7467
e5a83084
MD
74682002-11-07 Mikael Djurfeldt <mdj@linnaeus>
7469
9be8bb45
MD
7470 * coop-pthreads.h: Added support for thread specific data to the
7471 generic C API for the coop-pthreads case.
7472
e5a83084
MD
7473 * threads.c, threads.h (scm_cond_init): Undo unintentional API
7474 change.
6c214b62 7475 (scm_cond_broadcast): Added missing function.
e5a83084 7476
7edf178e
MV
74772002-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7478
7479 * coop.c (coop_next_runnable_thread): Removed, wich should have
7480 happened when GUILE_ISELECT was hard-wired.
7481
7f5b1b77
MV
74822002-11-03 Marius Vollmer <mvo@zagadka.ping.de>
7483
7caa1b07
MV
7484 * Makefile.am (libguile_la_SOURCES): Added threads.c
7485 (DOT_DOC_FILES): Added threads.doc.
7486 (DOT_X_FILES): Added threads.x.
7487 (EXTRA_libguile_la_SOURCES): Removed threads.c.
7488 (noinst_HEADERS): Added coop-pthreads.c.
7489 (modinclude_HEADERS): Added coop-pthreads.h.
7490
7491 * __scm.h (USE_THREADS, GUILE_ISELECT): Define when
7492 SCM_DEBUG_DEPRECATED. Removed their use thru-out Guile.
7493
bb11cbf4
MV
7494 * iselect.c: Include "_scm.h" before testing HAVE_UNISTD_H.
7495 Thanks to Bill Schottstaedt!
7496
1d4cbbed
MV
7497 * numbers.c (scm_integer_expt): Make 0^z == 0 for z != 0.
7498
7f5b1b77
MV
7499 * _scm.h (HAVE_RESTARTABLE_SYSCALLS): Do define even when
7500 SCM_COPT_THREADS is defined.
7501 (SCM_SYSCALL): Use EINTR-expection version when SCM_COPT_THREADS
7502 is defined.
7503
7504 * coop-pthreads.c: Some harmless renamings of internal stuff.
7505 (create_thread): New, generalized version of
7506 scm_call_with_new_thread.
7507 (scm_call_with_new_thread): Use it.
7508 (scm_spawn_thread): New, use create_thread.
7509
d52f53b1
MV
75102002-11-02 Marius Vollmer <mvo@zagadka.ping.de>
7511
7512 * coop-pthreads.c, coop-pthreads.h: Redone completely, you might
7513 start testing it now.
7514
7515 * _scm.h: Include <errno.h< so that SCM_SYSCALL is correctly
7516 defined when HAVE_RESTARTABLE_SYSCALLS is not defined.
7517 (HAVE_RESTARTABLE_SYSCALLS): Do not define when USE_COPT_THREADS
7518 is defined.
7519
30f920c3
MV
75202002-10-27 Marius Vollmer <mvo@zagadka.ping.de>
7521
7522 * scmsigs.c (signal_cell_handlers, install_handler_data,
7523 scm_delq_spine_x, really_install_handler, install_handler): New
7524 scheme for triggering signal handlers, to simplify take_signal.
7525 (take_signal): Simplified, to avoid race conditions.
7526 (scm_sigaction_for_thread): Use new Scheme. Validate that thread
7527 hasn't exited yet.
7528
7529 * async.c (scm_async_click): Reset pending_asyncs, handle
7530 signal_asyncs. Don't set cdr of a non-signal async to #f.
7531 (scm_i_queue_async_cell): Do not check cdr of cell for #f, queue
7532 always. Set pending_asyncs.
7533 (scm_system_async_mark_for_thread): Check that thread has not
7534 exited.
7535 (scm_unmask_signals, decrease_block): Call scm_async_click after
7536 block_asyncs becomes zero.
7537
7538 * __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of
7539 active_asyncs.
7540
7541 * root.h (scm_root_state): Added pending_asyncs and signal_asyncs
7542 fields.
7543 * root.c (root_mark): Mark them.
7544 (make_root): Initialize them.
7545
7546 * iselect.c, iselect.h: Replaced GUILE_ISELECT with
7547 USE_COOP_THREADS.
7548 (scm_internal_select): Define one version for USE_COOP_THREADS and
7549 one for USE_NULL_THREADS.
7550 (scm_init_iselect): Likewise.
7551
7552 * inline.h (scm_cell, scm_double_cell): Also allow
7553 USE_COPT_THREADS to not protect the slot initializers.
7554
7555 * init.c (scm_init_guile_1): Call scm_init_thread_procs. This is
7556 because threads need to be initialized before the stack, but
7557 gsubrs such as scm_timed_condition_variable_wait can only be
7558 created later.
7559
7560 * threads.h: Include "coop-pthreads.h" when requested.
7561 (scm_threads_make_mutex, scm_threads_lock_mutex,
7562 scm_threads_unlock_mutex, scm_threads_monitor): Removed, they were
7563 not implemented anyway.
7564 (scm_init_thread_procs, scm_try_mutex,
7565 scm_timed_condition_variable_wait,
7566 scm_broadcast_condition_variable, scm_c_thread_exited_p,
7567 scm_thread_exited_p): New prototypes.
7568 (struct timespec): Define if not already defined.
7569 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
7570 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
7571 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
7572 scm_cond_broadcast, scm_cond_destroy): Declarations moved here and
7573 deprecated.
7574
7575 * threads.c: Include <errno.h>. Include "coop-pthreads.c" when
7576 requested.
7577 (scm_thread_exited_p): New.
7578 (scm_try_mutex, scm_broadcast_condition_variable): Newly
7579 registered procedures.
7580 (scm_wait_condition_variable, scm_timed_wait_condition_variable):
7581 Use the latter as the procedure for "wait-condition-variable",
7582 thus offering a optional timeout parameter to Scheme.
7583 (scm_wait_condition_variable): Implement in terms of
7584 scm_timed_wait_condition_variable.
7585 (scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
7586 scm_mutex_unlock, scm_mutex_destroy, scm_cond_init,
7587 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
7588 scm_cond_broadcast, scm_cond_destroy): Implement in terms of
7589 scm_make_mutex, etc, and deprecate.
7590 (scm_init_threads): Do not create smobs, leave this to
7591 scm_threads_init. Do not include "threads.x" file.
7592 (scm_init_thread_procs): New, include "threads.x" here.
7593
7594 * null-threads.h (scm_null_mutex, scm_null_mutex_init,
7595 scm_null_mutex_lock, scm_null_mutex_unlock,
7596 scm_null_mutex_destroy, scm_null_condvar, scm_null_condvar_init,
7597 scm_null_condvar_wait, scm_null_condvar_signal,
7598 scm_null_condvar_destroy): Removed.
7599 (scm_mutex_init, scm_mutex_lock, scm_mutex_unlock, scm_cond_init,
7600 scm_cond_wait, scm_cond_signal, scm_cond_broadcast,
7601 scm_cond_destory): Do not define, they are now deprecated and
7602 handled by threads.{h,c}.
7603
7604 * null-threads.c (scm_null_mutex, scm_null_cond): Define here.
7605 (scm_threads_init): Create smobs here, using the appropriate
7606 sizes.
7607 (block): Removed, now unused.
7608 (scm_c_thread_exited_p): New.
7609 (scm_null_mutex_init, scm_null_mutex_lock, scm_null_mutex_unlock,
7610 scm_null_mutex_destroy, scm_null_condvar_init,
7611 scm_null_condvar_wait, scm_null_condvar_signal,
7612 scm_null_condvar_destroy): Removed and updated users to do their
7613 task directly.
7614 (scm_try_mutex, timeval_subtract,
7615 scm_timed_wait_condition_variable,
7616 scm_broadcast_condition_variable): New.
7617 (scm_wait_condition_variable): Removed.
7618
7619 * coop-defs.h (coop_m): Added 'level' field.
7620 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
7621 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
7622 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
7623 scm_cond_broadcast, scm_cond_destroy, struct timespec): Do not
7624 define.
7625 (coop_condition_variable_broadcast): New.
7626
7627 * coop-threads.c (scm_threads_init): Create smobs here, using the
7628 appropriate sizes.
7629 (scm_c_thread_exited_p, scm_try_mutex,
7630 scm_timed_wait_condition_variable,
7631 scm_broadcast_condition_variable): New.
7632 (scm_wait_condition_variable): Removed.
7633
7634 * coop.c (coop_new_mutex_init): Initialize level.
7635 (coop_mutex_trylock, coop_mutex_lock, coop_mutex_unlock): maintain
7636 level.
7637 (coop_condition_variable_signal): Renamed to
7638 coop_condition_variable_broadcast and reimplemented in terms of
7639 that. Thus...
7640 (coop_condition_variable_broadcast): New.
7641
7642 * goops.c (hell_mutex): Reimplemented using scm_make_mutex, etc.
7643
7644 * coop-pthreads.h, coop-pthreads.c: New, but unfinished.
7645
087ed40d
MV
76462002-10-21 Marius Vollmer <mvo@zagadka.ping.de>
7647
65a23095
MV
7648 * null-threads.c: Include <time.h>. Also, use <...> for inclusion
7649 of system headers.
7650
087ed40d
MV
7651 * async.c, goops.h, modules.h, validate.h (SCM_MAKE_VALIDATE_MSG):
7652 New. Use it instead of SCM_MAKE_VALIDATE in lots of places to
30f920c3 7653 give better error messages. Thanks to Bill Schottstaedt!
087ed40d 7654
5ec1d2c8
DH
76552002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
7656
7657 * evalext.h, evalext.c (scm_definedp, scm_defined_p): Renamed
7658 scm_definedp to scm_defined_p and deprecated scm_definedp.
7659
100ae50d
DH
76602002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
7661
7662 * async.h, async.c (scm_system_async): Fixed deprecation to work
7663 correctly when deprecated features are excluded.
7664
2794cb50
MV
76652002-10-16 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7666
7667 * async.c (scm_system_async_mark_for_thread): Validate thread
7668 argument.
7669
7670 * coop-threads.c (scm_i_thread_root): Do not validate argument.
7671
7672 * feature.c (scm_init_feature): Don't add 'threads' for
7673 USE_NULL_THREADS.
7674
7675 * inline.h (scm_cell, scm_double_cell): Also allow
7676 USE_NULL_THREADS to not protect the slot initializers.
7677
7678 * scmsigs.c (scm_sigaction_for_thread): It's "USE_THREADS" not
7679 "USE_THREAD".
7680
7681 * Makefile.am (noinst_HEADERS): Added null-threads.c.
7682 (modinclude_HEADERS): Added null-threads.h.
7683
7684 * threads.h: Include null-threads.h when !USE_COOP_THREADS.
7685 * threads.c: Include null-threads.c when !USE_COOP_THREADS.
7686 (scm_init_threads): Use generic type names scm_t_mutex and
7687 scm_t_cond instead of coop_m and coop_c.
7688
7689 * null-threads.c, null-threads.h: New files.
7690
ff810d7a
MV
76912002-10-15 Marius Vollmer <mvo@zagadka.ping.de>
7692
7693 * Makefile.am: Replaced "$<" in non-pattern rules with its value.
7694 This is to support makes that know about "$<" only in pattern
7695 rules, like Sun's make.
7696
a90bdb73
MV
76972002-10-13 Marius Vollmer <mvo@zagadka.ping.de>
7698
7699 * Makefile.am (libpath.h): Fixed typo in top_srcdir_absolute
7700 substitution. Thanks to David Allouche!
7701
e71a8bf2
DH
77022002-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
7703
7704 * evalext.h: Replaced SCM_DEBUG_DEPRECATED with
7705 !SCM_ENABLE_DEPRECATED.
7706
41f77ff5
MV
77072002-10-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7708
504d99c5 7709 * async.c (scm_system_async_mark_for_thread): Only call
41f77ff5
MV
7710 scm_i_thread_root when USE_THREADS is defined. Use scm_root
7711 otherwise.
7712
7713 * scmsigs.c (take_signal): Only call scm_i_thread_root when
7714 USE_THREADS is defined. Use scm_root otherwise.
7715 (scm_sigaction_for_thread): Ignore THREAD argument when
7716 USE_THREADS is not defined. Also, move THREAD argument defaulting
7717 out of HAVE_SIGACTION section, which was a bug.
7718
6d16b125
MV
77192002-10-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7720
7721 * scmsigs.c (scm_sigaction_for_thread): Store original handler in
7722 signal_handlers, not the closure that is used as the async.
7723 The closure is stored in signal_handler_cells, as previously.
7724
acfa1f52
MV
77252002-10-10 Marius Vollmer <mvo@zagadka.ping.de>
7726
7727 * root.h (scm_root_state): Added 'block_async' slot.
7728 (scm_active_asyncs): Removed abbrev.
7729 * root.c (scm_make_root): Initialize 'block_asyncs' slot.
7730
7731 * __scm.h (SCM_ASYNC_TICK): Do without the scm_active_asyncs
7732 abbrev.
7733
7734 * async.h (scm_call_with_blocked_asyncs,
7735 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
7736 scm_c_call_with_unblocked_asyncs): New prototypes.
7737 (scm_mask_signals, scm_unmask_signals): Deprecated.
7738 (scm_mask_ints): Turned into a macro.
7739 * async.c (scm_mask_ints): Removed.
7740 (scm_run_asyncs): Do not set scm_mask_ints while running an async.
7741 this should not be necessary.
7742 (scm_async_click): Test block_asyncs instead of scm_mask_ints.
7743 (scm_mask_signals, scm_unmask_signals): Deprecated. Emit
7744 deprecation warning and check for errornous use. Set block_asyncs
7745 instead of scm_mask_ints.
7746 (increase_block, decrease_block, scm_call_with_blocked_asyncs,
7747 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
7748 scm_c_call_with_unblocked_asyncs): New.
7749
7750 * script.c (scm_compile_shell_switches): Do not set scm_mask_ints.
7751 Asyncs are enabled by default.
7752
34010f56
NJ
77532002-10-09 Neil Jerram <neil@ossau.uklinux.net>
7754
7755 * vports.c (scm_make_soft_port): Allow vector argument to carry a
7756 6th element: an input waiting thunk.
7757 (sf_input_waiting): New.
7758
9310d6f2
MV
77592002-10-05 Marius Vollmer <mvo@zagadka.ping.de>
7760
7761 * root.c (root_mark): Mark active_asyncs slot.
7762
7763 * async.c (scm_async_click): Set the cdr of a executed handler
7764 cell to SCM_BOOL_F, not SCM_EOL.
7765 (scm_i_queue_async_cell): Queue the cell at the end of the list,
7766 and only if the handler procedure is not already present.
7767 (scm_system_async_mark_for_thread): Initialize cdr of handler cell
7768 with SCM_BOOL_F.
7769 * scmsigs.c (scm_sigaction_for_thread): Likewise.
7770
ac48c719
RB
77712002-10-04 Rob Browning <rlb@defaultvalue.org>
7772
1360a142
RB
7773 * guile.c (main): switch to scm_lt_dlset_preloaded_symbols;
7774
7775 * dynl.c (sysdep_dynl_link): switch to scm_lt_dlhandle,
7776 scm_lt_dlopenext, and scm_lt_dlerror.
7777 (sysdep_dynl_unlink): switch to scm_lt_dlhandle, scm_lt_dlclose,
7778 and scm_lt_dlerror.
7779 (sysdep_dynl_func): switch to scm_lt_dlhandle, scm_lt_dlsym,
7780 and scm_lt_dlerror.
7781 (sysdep_dynl_init): switch to scm_lt_dlinit();
7782
7783 * Makefile.am (libguile_la_LIBADD): switch to use
7784 libguile-ltdl.la.
7785
504d99c5 7786 * numbers.c (scm_integer_expt): (expt 0 1) should be 1.
ac48c719 7787
497092c9
MV
77882002-10-04 Marius Vollmer <mvo@zagadka.ping.de>
7789
7790 * scmsigs.h (scm_sigaction_for_thread): New prototype.
7791 * scmsigs.c (got_signal): Removed.
7792 (signal_handler_cells, signal_handler_threads): New.
7793 (take_signal): Queue the cell of the signal for the specified
7794 thread. Reset the signal handler on systems that don't have
7795 sigaction.
7796 (sys_deliver_signals): Removed.
7797 (close_1): New.
7798 (scm_sigaction_for_thread): Renamed from scm_sigaction and
7799 extended to also set the thread of a signal and allocate a cell
7800 for it. Keep the Scheme name "sigaction". Check that signum is
7801 within range. Also, use SCM_VECTOR_REF instead of SCM_VELTS.
7802 (scm_sigaction): Implement in terms of scm_sigaction_for_thread.
7803 (scm_init_scmsigs): Allocate signal_handler_cells and
7804 signal_handler_threads vectors.
7805
7806 * async.c: Removed GUILE_OLD_ASYNC_CLICK code. Reorganized so
7807 that system asnycs and user asyncs are separated. Reimplemented
7808 system asyncs to work per-thread.
7809
7810 * gc.c (scm_init_gc): Do not use scm_system_async.
7811
7812 * async.h (scm_asyncs_pending, scm_set_tick_rate,
7813 scm_set_switch_rate, scm_system_async_mark_from_signal_handler):
7814 Removed prototypes.
7815 (scm_i_queue_async_cell): New.
7816
7817 * __scm.h (scm_asyncs_pending_p): Removed.
7818 (SCM_ASYNC_CLICK): Check scm_active_asyncs instead of
7819 scm_asyncs_pending_p.
7820
7821 * async.h (scm_system_async_mark_for_thread): New prototype.
7822
7823 * __scm.h: Removed GUILE_OLD_ASYNC_CLICK code.
7824
7825 * root.h (scm_root_state): Added new "active_asyncs" slot.
7826 * root.c (scm_make_root): Initialize it to SCM_EOL.
7827
7828 * coop-defs.h (coop_t): Added new "handle" slot.
7829 * coop-threads.c (all_threads, scm_current_thread,
7830 scm_all_threads, scm_i_thread_root): New.
7831 (scm_threads_init): Add main thread to all_threads.
7832 (scheme_launch_thread): Remove thread from all_threads when it
7833 terminates.
7834 (scm_call_with_new_thread): Initialize handle slot of coop_t
7835 structure and add new thread to all_threads.
7836 (scm_spawn_thread): Likewise.
7837
7838 * threads.h (scm_current_thread, scm_all_threads): New prototypes.
7839 * threads.c (scm_current_thread, scm_all_threads): Register as
7840 primitives.
7841
7842 * dynl.c: Use scm_lt_ prefix for libltdl functions.
7843
480fa28d
NJ
78442002-09-29 Neil Jerram <neil@ossau.uklinux.net>
7845
7846 * script.c (scm_compile_shell_switches): Fix bad spelling of
7847 `explicitly' in comment.
7848
78492002-09-28 Neil Jerram <neil@ossau.uklinux.net>
7850
7851 * posix.c (scm_geteuid, scm_getegid, scm_seteuid, scm_setegid):
7852 Refer to provided? in doc string rather than deprecated feature?.
7853
3553e1d1
GH
78542002-09-24 Gary Houston <ghouston@arglist.com>
7855
7856 * inline.h (scm_double_cell): prevent reordering of statements
7857 with any following code (for GCC 3 strict-aliasing).
7858 * numbers.c (scm_make_real), num2float.i.c (FLOAT2NUM): removed
7859 the earlier version of the reordering prevention.
7860
4ad0814a
HWN
78612002-09-19 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7862
7863 * inline.h (scm_double_cell): move SET_GCMARK set out of if body.
7864
e88e4f2e
HWN
78652002-09-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7866
7867 * gc-malloc.c (scm_gc_register_collectable_memory): more overflow
7868 protection.
7869
1e71eafb
HWN
78702002-09-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7871
7872 * inline.h: include stdio.h
7873
7874 * smob.c (free_print): abort if scm_debug_cell_accesses_p is set
7875
61ef9c1f
HWN
78762002-09-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7877
dac04e9f
HWN
7878 * gc-segment.c (scm_i_make_initial_segment): check user settings
7879 for sanity.
7880
7881 * gc-malloc.c (scm_gc_init_malloc): check user settings for
7882 sanity.
dac04e9f
HWN
7883
7884 * gc-freelist.c (scm_init_freelist): check user settings for sanity.
7885
ffd72400
HWN
7886 * struct.h: change scm_structs_to_free to scm_i_structs_to_free
7887
7888 * gc-malloc.c (scm_gc_register_collectable_memory): use floats;
1e71eafb
HWN
7889 these won't ever wrap around with high memory usage. Thanks to
7890 Sven Hartrumpf for finding this.
ffd72400 7891
5bd4a949
HWN
7892 * gc-freelist.c: include <stdio.h>
7893
61ef9c1f
HWN
7894 * gc-malloc.c: add DEBUGINFO for mtrigger GCs.
7895
ffd0ef3b
MV
78962002-09-01 Marius Vollmer <mvo@zagadka.ping.de>
7897
a27e3d14
MV
7898 * vectors.h (SCM_VECTOR_REF): New.
7899
ffd0ef3b
MV
7900 * snarf.h (SCM_DEFINE_PUBLIC): New.
7901
f8a1712b
MV
79022002-08-30 Marius Vollmer <mvo@zagadka.ping.de>
7903
7904 * socket.c (scm_addr_vector): Added size of address to arguments.
7905 Use it to avoid accessing a non-existent path in a sockaddr_un.
7906 Changed all callers.
7907
7200a36b
HWN
79082002-08-29 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7909
1383773b
HWN
7910 * gc.h: remove DOUBLECELL card flags.
7911
7912 * gc-malloc.c (scm_calloc): try to use calloc() before calling
7913 scm_realloc().
7914
7915 * gc-segment.c (scm_i_initialize_heap_segment_data): remove card
7916 init loop; handle this from scm_init_card_freelist()
7917
7918 * gc-card.c (scm_init_card_freelist): init bit vector here.
7919
7200a36b 7920 * numbers.c (scm_make_real): prevent reordering of statements
8fa5786d 7921 num2float.i.c (FLOAT2NUM): idem
7200a36b 7922
9981de3a
HWN
79232002-08-27 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7924
7925 * eval.h: prepend libguile/ to include path
7926
19647556
MV
79272002-08-26 Marius Vollmer <mvo@zagadka.ping.de>
7928
7929 * script.c (scm_compile_shell_switches): Added "2002" to Copyright
9a5fa6e9 7930 years. Thanks to Martin Grabmüller!
19647556 7931
38d1262a
HWN
79322002-08-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7933
7934 * gc-segment.c (scm_i_get_new_heap_segment): use float in stead of
7935 unsigned numbers for computing minimum heap increment. This
7936 prevents weird results when a a negative minimum increment is
7937 computed.
7938
f800ebfb
MV
79392002-08-24 Marius Vollmer <mvo@zagadka.ping.de>
7940
7941 * gc_os_dep.c: When we have __libc_stack_end, use that directly
19647556 7942 instead of the old tricks.
f800ebfb
MV
7943
7944 * guile-snarf.in: Do not expect the input file to be the first
7945 argument after the optional "-o" option, just pass everything to
7946 the pre-processor without extracting the input file name.
7947
4a5309c9
HWN
79482002-08-23 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7949
7950 * gc-segment.c (scm_i_get_new_heap_segment): Oops. We want segment
7951 length *at* least SCM_MIN_HEAP_SEG_SIZE, not at most.
7952
f2893a25
HWN
79532002-08-22 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7954
7955 * gc.h, gc.c: make scm_cells_allocated unsigned again. Thanks to
7956 Bill Schottstaedt for the bug report
7957
483f518b
MV
79582002-08-20 Marius Vollmer <mvo@zagadka.ping.de>
7959
7960 * print.c (scm_iprin1): Print primitives generics always as
7961 "primitive-generic" even when they have no primitive methods yet.
7962
917adc55
GH
79632002-08-17 Gary Houston <ghouston@arglist.com>
7964
7965 * coop.c (coop_create): removed bogus 2nd argument in scm_malloc
7966 call.
7967
67329a9e
HWN
79682002-08-17 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7969
85835e59 7970 * ports.c (scm_add_to_port_table): small bugfix.
67329a9e
HWN
7971
7972 * mallocs.c (scm_malloc_obj): use scm_gc_malloc in stead of
7973 malloc.
7974
7975 * gc-segment.c (scm_i_get_new_heap_segment): remove cluster cruft:
7976 only use SCM_MIN_HEAP_SEG_SIZE.
7977
7978 * ports.c (scm_add_to_port_table): add backwards compatibility
7979 function
7980
7981 * ports.h: use scm_i_ prefix for port table and port table size.
7982
f07c886a
MD
79832002-08-15 Mikael Djurfeldt <mdj@linnaeus>
7984
7985 * vports.c (scm_make_soft_port): Initialize pt variable.
7986
dc61cbc6
MV
79872002-08-13 Marius Vollmer <mvo@zagadka.ping.de>
7988
7989 * strports.h (scm_c_eval_string_in_module,
7990 scm_eval_string_in_module): New prototypes.
7991 * strports.c (scm_eval_string_in_module): New, but use
7992 "eval-string" as the Scheme name and make second parameter
7993 optional.
7994 (scm_eval_string): Implement using scm_eval_string_in_module.
7995 (scm_c_eval_string_in_module): New.
7996 Thanks to Ralf Mattes for the suggestion!
7997
da220f27
HWN
79982002-08-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7999
be3ff021
HWN
8000 * gc-card.c ("sweep_card"): remove SCM_MISC_ERROR messages: print
8001 message and abort.
8002
8003 * gc-mark.c ("scm_gc_mark_dependencies"): idem.
8004
da220f27
HWN
8005 * ports.c ("scm_new_port_table_entry"): return a boxed SCM in
8006 stead of scm_t_port*. The function now takes a tag argument.
8007
eab1b259
HWN
80082002-08-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8009
8010 * gc.h: add scm_debug_cells_gc_interval to public interface
8011
8012 * gc-card.c ("sweep_card"): set scm_gc_running while sweeping.
8013
8014 * gc.c (scm_i_expensive_validation_check): separate expensive
8015 validation checks from cheap ones.
8016
ba1b2226
HWN
80172002-08-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8018
8019 * read.c (scm_input_error): new function: give meaningful error
8020 messages, and throw read-error
8021
8022 * gc-malloc.c (scm_calloc): add scm_calloc.
8023
39e8f371
HWN
80242002-08-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8025
33138b05
HWN
8026 * tags.h: remove GC bits documentation from the tags table.
8027
39e8f371
HWN
8028 * read.c (INPUT_ERROR): Prepare for file:line:column error
8029 messages for errors in scm_lreadr() and friends.
8030
80312002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8032
8033 * gc-malloc.c (scm_malloc): use scm_realloc() (simplifies
8034 implementation).
8035 (scm_gc_calloc): new function
8036
26e68795 80372002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
402788a9 8038
5f16b897
HWN
8039 * ports.c (scm_new_port_table_entry): init port entry to 0
8040 completely.
402788a9
HWN
8041
8042 * ports.c (scm_new_port_table_entry): change function from
8043 scm_add_to_port_table. This prevents cells with null-pointers from
8044 being exposed to GC.
8045
504d99c5 8046 * vports.c (scm_make_soft_port) strports.c (scm_mkstrport),
402788a9 8047 fports.c (scm_fdes_to_port): Use scm_new_port_table_entry().
c8a1bdc4 8048
504d99c5 8049 * gc.c (scm_gc_stats): add cell-yield and malloc-yield statistic
c2cbcc57
HWN
8050 to gc-stats.
8051
c8a1bdc4
HWN
8052 * numbers.c (big2str): return "0" for 0 iso. ""
8053
c2cbcc57
HWN
8054 * gc-segment.c, gc-malloc.c gc-mark.c, gc-freelist.c, gc-card.c,
8055 private-gc.h: new file
c8a1bdc4
HWN
8056
8057 * gc.c: completely revised and cleaned up the GC. It now uses lazy
8058 sweeping. More documentation in workbook/newgc.text
8059
aea06b34
MV
80602002-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8061
8062 * random.c (rstate_free): Return zero.
8063
35060ae9
DH
80642002-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8065
8066 * environments.c (remove_key_from_alist): Removed.
8067
8068 (obarray_remove): Simplified.
8069
6a535440
SJ
80702002-07-24 Stefan Jahn <stefan@lkcc.org>
8071
8072 * continuations.h: ia64: Include <signal.h> before
8073 <sys/ucontext.h>.
8074
bcbd25b7
DH
80752002-07-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
8076
8077 * modules.c (scm_sym2var): Don't compare SCM values with ==.
8078
26e68795 80792002-07-21 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1d1559ce
HWN
8080
8081 * goops.c (scm_compute_applicable_methods): use
8082 scm_remember_upto_here_1 iso scm_remember_upto_here
8083
8084 * macros.c: include deprecation.h
8085
504d99c5 8086 * vectors.c (scm_vector_move_right_x): remove side effect in
1d1559ce 8087 macro arg.
504d99c5 8088 (scm_vector_move_left_x): idem.
1d1559ce
HWN
8089
8090 * net_db.c, posix.c, socket.c: variable naming: change ans to
8091 result.
8092
8093 * sort.c (scm_merge_vector_x): accept vector as argument
8094 iso. SCM*. This is needed for full GC correctness.
8095
8096 * gc.h: undo previous undocumented changes related to #ifdef
8097 GENGC.
8098
26e68795 80992002-07-20 Han-Wen Nienhuys <hanwen@cs.uu.nl>
34d19ef6
HWN
8100
8101 * *.c: add space after commas everywhere.
8102
8103 * *.c: use SCM_VECTOR_SET everywhere, where a vector is written.
8104 Document cases where SCM_WRITABLE_VELTS() is used.
8105
8106 * vectors.h (SCM_VELTS): prepare for write barrier, and let
8107 SCM_VELTS() return a const pointer
8108 (SCM_VECTOR_SET): add macro.
8109
3063e30a
DH
81102002-07-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
8111
8112 * eval.c (SCM_CEVAL), macros.c (macro_print, scm_makmacro,
8113 scm_sym_macro, scm_macro_type), macros.h (scm_makmacro):
8114 Deprecated the special kind of built-in dynamic syntax transformer
8115 that was inaccurately named "macro". Note: The built-in syntax
8116 transformers that are named "mmacro" or "memoizing-macro" still
8117 exist, and it is these which come much closer to what one would
8118 call a macro.
8119
4c5f8e8f
NJ
81202002-07-13 Neil Jerram <neil@ossau.uklinux.net>
8121
8122 * eval.c (unmemocopy): Fix for
8123 1001-local-eval-error-backtrace-segfaults (unmemoization crash
8124 with internal definitions and local-eval).
8125
4f6f9ae3
GH
81262002-07-12 Gary Houston <ghouston@arglist.com>
8127
8128 * dynl.c: Don't define stub procedures if DYNAMIC_LINKING is not
8129 defined. They don't do anything useful, especially since the
8130 only case where DYNAMIC_LINKING is undefined seems to be
8131 when --with-modules=no is given to configure, which is basically
8132 requesting that the "dynamic linking module" be omitted.
8133
8134 * Makefile.am (libguile_la_SOURCES): move dynl.c from
8135 libguile_la_SOURCES to EXTRA_libguile_la_SOURCES.
8136
8137 * extensions.c (load_extension): check DYNAMIC_LINKING for
8138 scm_dynamic_call.
8139 * init.c (scm_init_guile_1): check DYNAMIC_LINKING for
8140 scm_init_dynamic_linking.
8141
c21935e6
MV
81422002-07-10 Marius Vollmer <mvo@zagadka.ping.de>
8143
8144 * guile.c, iselect.h, net_db.c, posix.c, socket.c: No need to
8145 check for Cygwin when including <winsock2.h>, this is already
8146 check for by configure. Thus, revert change from 2002-07-07.
8147
ee95d597
GH
81482002-07-10 Gary Houston <ghouston@arglist.com>
8149
9540b68f 8150 * eq.c: include <string.h>
ee95d597
GH
8151 * dynl.c: docstring editing.
8152
46732b54
GH
81532002-07-09 Gary Houston <ghouston@arglist.com>
8154
8155 * dynl.c (scm_dynamic_call): docstring editing.
8156
c09d12e0
RB
81572002-07-08 Rob Browning <rlb@defaultvalue.org>
8158
8159 * gc_os_dep.c: HURD fixes.
8160
3f6571eb
MV
81612002-07-07 Marius Vollmer <mvo@zagadka.ping.de>
8162
8163 Crosscompiling and Cygwin fixes by Jan Nieuwenhuizen. Thanks!
8164
8165 * Makefile.am: Override default rule for c-tokenize.$(OBJECT);
8166 this should be compiled for BUILD host.
8167 Override default rule for
8168 guile_filter_doc_snarfage$(EEXECT); this should run on BUILD host.
8169 Add missing $(EXEEXT) to guile_filter_doc_snarfage invocation.
8170 (snarf2checkedtexi): Use GUILE_FOR_BUILD instead of preinstguile.
8171
8172 * guile.c, iselect.h, net_db.c, posix.c, socket.c: Do not include
8173 <winsock2.h> on Cygwin even when we have it.
8174
bd987b8e
DH
81752002-07-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
8176
8177 * __scm.h (SCM_CAUTIOUS), eval.c (scm_eval_args, deval_args,
8178 SCM_CEVAL): Removed compile time option SCM_CAUTIOUS to clean up
8179 the code. Full number of arguments checking of closures is
8180 mandatory now. However, the option to disable the checking has
8181 most probably not been used anyway.
8182
8505e285
DH
81832002-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
8184
bd987b8e
DH
8185 * __scm.h (SCM_RECKLESS), backtrace.c (SCM_ASSERT), debug.c
8186 (scm_debug_options), eval.c (scm_lookupcar, scm_lookupcar1,
8187 scm_badargsp, SCM_CEVAL, SCM_APPLY, scm_map, scm_for_each),
8188 feature.c (scm_init_feature), gsubr.c (scm_gsubr_apply), numbers.c
8189 (scm_logand, scm_logior, scm_logxor, scm_i_dbl2big), srcprop.c
8190 (scm_source_properties, scm_set_source_properties_x,
8191 scm_source_property): Removed compile time option SCM_RECKLESS to
8192 clean up the code. Full number of arguments checking of closures
8193 is mandatory now. However, the option to disable the checking has
8194 most probably not been used anyway.
8505e285
DH
8195
8196 * srcprop.c (scm_source_properties, scm_set_source_properties_x,
8197 scm_source_property): Use !SCM_CONSP instead of SCM_NCONSP.
8198
2ee08a28
GH
81992002-06-30 Gary Houston <ghouston@arglist.com>
8200
732b9327
GH
8201 * dynl.c: Removed all SCM_DEFER_INTS/SCM_ALLOW_INTS, which won't
8202 do anything useful. Added a comment about need for a mutex if
8203 pre-emptive threading is supported.
8204
2ee08a28
GH
8205 * posix.c (scm_convert_exec_args), dynl.c
8206 (scm_make_argv_from_stringlist): static procs: 1) renamed both to
8207 allocate_string_pointers. 2) simplified: don't reallocate the
8208 strings, just make an array of pointers 3) avoid memory leaks on
8209 error 4) let the procedure report errors in its own name.
8210 Consequences: 1) the procedures now assume that SCM strings are
8211 nul-terminated, which should always be the case. 2) Since strings
8212 are not reallocated, it's now possible for strings passed to
8213 dynamic-args-call to be mutated.
8214
c136c920
DH
82152002-06-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
8216
8217 * __scm.h, eval.c, eval.h: Removed compile time option
8218 MEMOIZE_LOCALS to clean up the code. Now, caching of local
8219 variable positions during memoization is mandatory. However, the
8220 option to disable the caching has most probably not been used
8221 anyway.
8222
e540802f
MV
82232002-06-18 Marius Vollmer <mvo@zagadka.ping.de>
8224
8225 * print.c (scm_simple_format): Print missing part of format before
8226 ~% control. Thanks to Daniel Skarda!
8227
4c1ffcdd
MV
82282002-06-01 Marius Vollmer <mvo@zagadka.ping.de>
8229
8230 * mkstemp.c: Added exception notice to license statement.
8231
ba1b077b
MV
82322002-05-22 Marius Vollmer <mvo@zagadka.ping.de>
8233
8dc434c7
MV
8234 * numbers.c (mem2ureal): When returning an inexact zero, make sure
8235 it is represented as a floating point value so that we can change
8236 its sign.
8237
ba1b077b
MV
8238 From John W. Eaton <jwe@bevo.che.wisc.edu>
8239
8240 * numbers.c (idbl2str): Don't omit sign when printing negative zero.
8241
74c58131
TTN
82422002-05-14 Thien-Thi Nguyen <ttn@giblet.glug.org>
8243
8244 * gc_os_dep.c: For I386/OPENBSD, allow for `__i386__'
0926d46e 8245 in addition to `i386'. Thanks to Dale P. Smith.
74c58131 8246
8766d4b5
MV
82472002-05-08 Marius Vollmer <mvo@zagadka.ping.de>
8248
8249 * eq.c (real_eqv): New.
8250 (scm_eqv_p): Use it when comparing reals and complexes.
8251
8252 * numbers.c: Include <string.h>, for strncmp.
8253 (mem2complex): Do not create negative NaNs.
8254 (scm_leq_p, scm_geq_p): Explicitely return #f when comparing a
8255 NaN.
8256 (scm_inexact_to_exact): Signal error when converting a NaN.
74c58131 8257
1d8c3cad
MV
82582002-05-06 Marius Vollmer <mvo@zagadka.ping.de>
8259
8260 * posix.c (scm_putenv): Handle removing variables explicitely by
8261 calling unsetenv.
8262
8263 From John W. Eaton.
74c58131 8264
1d8c3cad
MV
8265 * numbers.h: Conditionally include floatingpoint.h, ieeefp.h, and
8266 nan.h. Provide declarations for scm_inf_p, scm_nan_p, scn_inf,
8267 and scm_nan.
8268 * numbers.c: [SCO && ! HAVE_ISNAN] (isnan): New function.
8269 [SCO && ! HAVE_ISINF] (isinf): New function.
8270 (xisinf, xisnan): New functions.
8271 (IS_INF): Delete.
8272 (isfinite): Define in terms of xisinf.
8273 (scm_inf_p, scm_nan_p): New functions.
8274 (guile_Inf, guile_NaN): New file-scope vars.
8275 (guile_ieee_init): New function.
8276 (scm_inf, scm_nan): New functions.
8277 (idbl2str): Handle Inf and NaN. Remove funny label and
8278 corresponding gotos.
8279 (ALLOW_DIVIDE_BY_ZERO): New macro.
8280 (scm_divide): Allow division by zero to occur if
8281 ALLOW_DIVIDE_BY_ZERO is defined.
8282 Handle bignums and ints as special cases.
8283
8284 Additional stuff by me:
8285
8286 numbers.c (mem2ureal): Recognize "inf.0" and "nan.xxx".
8287 (scm_even_p, scm_odd_p): Treat infinity as even and odd.
8288 (iflo2str): Don't output a '+' for negative numbers or for Inf and
8289 NaN. They will provide their own sign.
8290 (scm_divide): Only allow divides by inexact zeros. Dividing by
8291 exact zeros still signals an errors.
74c58131 8292
7a0c65eb
TTN
82932002-04-22 Thien-Thi Nguyen <ttn@giblet.glug.org>
8294
87b72063 8295 * goops.h (scm_slot_exists_p): Rename from scm_slots_exists_p.
7a0c65eb 8296 * goops.c (scm_slot_exists_p): Rename from scm_slots_exists_p.
504d99c5 8297 (scm_slot_exists_p): Rename from scm_slots_exists_p.
7a0c65eb
TTN
8298 Thanks to Andreas Rottmann.
8299
5e423a39
GH
83002002-04-20 Gary Houston <ghouston@arglist.com>
8301
8302 * removal of unused fields in root state (thanks to Christopher
8303 Cramer for pointing out the disuse.)
8304 * root.h (scm_root_state): removed def_inp, def_outp, def_errp.
1841c44a 8305 (scm_def_inp, scm_def_outp, scm_def_errp): removed.
b6287a25 8306
5e423a39
GH
8307 * root.c (root_mark): don't mark them.
8308 (scm_make_root): don't set them to #f.
8309 * init.c (scm_init_standard_ports): don't initialise with the
8310 default ports.
8311
9d2cce76
MV
83122002-04-17 Marius Vollmer <mvo@zagadka.ping.de>
8313
8314 * Makefile.am (EXTRA_DIST): Added cpp_err_symbols.c and
8315 cpp_sig_symbols.c.
8316
83172002-04-16 Marius Vollmer <mvo@zagadka.ping.de>
8318
8319 * guile-snarf.in: Do not clean input file. This would write to
8320 the $(srcdir) during a VPATH build, which is not allowed. It also
8321 isn't needed since it only works when an output filename has been
8322 specified and in that case we don't need to clean the input file
8323 because the output file will already exist.
8324
6f79b6cc
MV
83252002-03-31 Marius Vollmer <mvo@zagadka.ping.de>
8326
8327 * guile-snarf: Install the trap for removing $cleanfile only when
8328 the value of $cleanfile is actually known.
8329
21550b10
RB
83302002-04-10 Rob Browning <rlb@defaultvalue.org>
8331
8332 * .cvsignore: add versiondat.h and *.c.clean.c.
8333
bc76d628
DH
83342002-03-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
8335
8336 * srcprop.[ch] (scm_c_source_property_breakpoint_p): New
8337 function, replaces macro SRCBRKP.
8338
8339 (SRCBRKP): Deprecated.
8340
8341 * eval.c (SCM_CEVAL): Replaced use of SRCBRKP by call to
8342 scm_c_source_property_breakpoint_p. Removed some use of arg1 as
8343 temporary variable.
8344
5132eef0
DH
83452002-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
8346
8347 * debug.h, eval.c: Deprecated CHECK_ENTRY, CHECK_APPLY and
8348 CHECK_EXIT and removed all references to them.
8349
680516ba
DH
83502002-03-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8351
8352 * debug.h (scm_ready_p, debug_print): Removed declarations.
8353
8354 * eval.c (EVALCELLCAR): Removed.
8355
8356 (SCM_CEVAL): Eliminated label loopnoap. Removed side-effecting
8357 operation from condition.
8358
e2bd68e0
MV
83592002-03-24 Marius Vollmer <mvo@zagadka.ping.de>
8360
8361 * guile-snarf.in: When the output filename is "-", write to
8362 stdout. When no "-o" option is given, use "-" as the output
8363 filename (i.e., stdout). Only 'clean' the inputfile or remove the
8364 output file on error when the output file name is not "-". Define
8365 the preprocessor macro SCM_MAGIC_SNARFER while snarfing.
8366
8367 * Makefile.am (.c.x): Pass "-o $@" to guile-snarf.
8368
ab1f1094
DH
83692002-03-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
8370
8371 * eval.c (SCM_CEVAL, SCM_APPLY): Eliminated labels wrongnumargs
8372 and the corresponding goto statements. Removed redundant code.
8373
42030fb2
DH
83742002-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
8375
8376 * eval.c (SCM_CEVAL): Minimized scope of variable arg2.
8377 Eliminated redundant SCM_IMP check. Exlined call to EVALCAR.
8378 Re-enabled handing of rpsubrs and asubrs.
8379
e050d4f8
DH
83802002-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
8381
8382 * eval.c (SIDEVAL): Removed.
8383
8384 (SCM_CEVAL): Minimized scope of variable orig_sym. Eliminated
8385 goto-labels cdrxnoap, cdrxbegin and nontoplevel_cdrxnoap. Changed
8386 argument checking order for set! to locals, variables and symbols.
8387 Improvements to control structure. Removed some uses of arg1 and
8388 arg2 as temporary variables.
8389
a6d344d3
TTN
83902002-03-15 Thien-Thi Nguyen <ttn@giblet.glug.org>
8391
8392 * guile-snarf.in: Remove "--compat=1.4" support.
8393 Add "-d" and "-D" support.
8394
8395 (deprecated_list): New var.
8396 (compat_mode_clean_xxx): Delete.
8397 (grep_deprecated): New func.
8398 ("main"): If "-d" or "-D", call `grep_deprecated'.
8399
3939e9df
NJ
84002002-03-15 Neil Jerram <neil@ossau.uklinux.net>
8401
387d418c
NJ
8402 * hooks.h: Change scm_t_c_hookype_t everywhere to
8403 scm_t_c_hook_type.
8404
bb2c02f2 8405 Docstring fixes:
a6d344d3 8406
bb2c02f2
NJ
8407 * strings.c (scm_string_p): Change unnecessary `iff' to `if'.
8408
8409 * ports.c (scm_sys_make_void_port): Use `@file'.
8410
8411 * numbers.c (scm_number_p, scm_real_p): Use `otherwise' rather
8412 than `else'.
8413
8414 * macros.c (scm_makmacro): Don't say that the form replaces its
8415 source, because it doesn't.
8416 (scm_makmmacro): Clarify difference between this and scm_makmacro.
8417
8418 * backtrace.c (scm_display_error), filesys.c (scm_umask,
8419 scm_select, scm_basename), goops.c (scm_method_generic_function),
8420 numbers.c (scm_integer_length), posix.c (scm_getgroups, scm_execl,
8421 scm_setlocale, scm_flock), socket.c (scm_shutdown): Correct
8422 spelling mistakes.
8423
3939e9df
NJ
8424 * debug.c (scm_debug_options), eval.c
8425 (scm_eval_options_interface), read.c (scm_read_options): Change
8426 incorrect @var in docstring to @code.
8427
3b3cc781
MV
84282002-03-14 Marius Vollmer <mvo@zagadka.ping.de>
8429
500b0d5b
MV
8430 * unif.c (singp): Use SCM_REALP instead of SCM_SLOPPY_REALP.
8431
3b3cc781
MV
8432 * snarf.h (SCM_SNARF_INIT): Add "^:^" after code so that
8433 guile-snarf can remove trailing non-init code.
8434
8435 * guile-snarf.in (modern_snarf): Remove everything following and
8436 including "^:^" from the output.
8437
dff98306
DH
84382002-03-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
8439
8440 * eval.c (SCM_CEVAL), srcprop.h (SRCBRKP): Eliminated union 't'.
8441
8442 * eval.c (SCM_CEVAL): Exlined call to EVALCAR.
8443
2287fb53
TTN
84442002-03-13 Thien-Thi Nguyen <ttn@giblet.glug.org>
8445
8446 * guile-snarf.in: Update copyright.
8447 Rewrite to internalize error handling.
8448 Add "--compat=1.4" handling.
8449 Add commentary.
8450
8451 * Makefile.am (libpath.h): Use @top_srcdir_absolute@.
8452 (snarfcppopts): New var.
8453 (.c.x): Use $(snarfcppopts). Rework guile-snarf usage.
8454 (.c.doc): Use $(snarfcppopts).
8455
822250a4
TTN
8456 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
8457 continuations.c, debug-malloc.c, debug.c, deprecation.c, dynl.c,
8458 dynwind.c, environments.c, eq.c, error.c, eval.c, evalext.c,
8459 extensions.c, feature.c, filesys.c, fluids.c, fports.c, gc.c,
8460 goops.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
8461 ioext.c, iselect.c, keywords.c, lang.c, list.c, load.c, macros.c,
8462 modules.c, net_db.c, numbers.c, objects.c, objprop.c, options.c,
8463 pairs.c, ports.c, posix.c, print.c, procprop.c, procs.c,
8464 properties.c, ramap.c, random.c, rdelim.c, read.c, regex-posix.c,
8465 root.c, rw.c, scmsigs.c, script.c, simpos.c, socket.c, sort.c,
8466 srcprop.c, stackchk.c, stacks.c, stime.c, strings.c, strop.c,
8467 strorder.c, strports.c, struct.c, symbols.c, threads.c, throw.c,
8468 unif.c, values.c, variable.c, vectors.c, version.c, vports.c,
8469 weaks.c: Retire inclusion guard macro SCM_MAGIC_SNARFER.
8470
b7798e10
DH
84712002-03-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
8472
8473 * eval.c (SCM_CEVAL): Got rid of the last reference to t.lloc.
8474 The next step will be to remove the union 't' and simplify the
8475 code of SCM_CEVAL that way.
8476
04a98cff
NJ
84772002-03-12 Neil Jerram <neil@ossau.uklinux.net>
8478
8479 * iselect.c (collisionp, gnfds, greadfds, gwritefds, gexceptfds,
8480 rreadfds, rwritefds, rexceptfds): Made static.
8481
8482 * gc.c (terminating), fports.c (terminating): Renamed
8483 scm_i_terminating.
8484
16d98032
MV
84852002-03-11 Marius Vollmer <mvo@zagadka.ping.de>
8486
5046250e
MV
8487 * numbers.c (scm_divide): Adapt code from libstdc++/f2c to void
8488 potential overflow problems. Thanks to John W Eaton!
8489
8794207d
MV
8490 * strop.c (string_capitalize_x): Treat characters as unsigned so
8491 that 8-bit chars work. Thanks to David Pirotte!
16d98032 8492
1d15ecd3
DH
84932002-03-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
8494
8495 * eval.c (SCM_CEVAL): Cleaned up the handling of 'slot-ref',
8496 'slot-set!' and 'nil-cond'. Removed some uses of t.arg1, arg2 and
8497 proc as temporary variables. Introduced temporary variables with
8498 hopefully descriptive names for clarification. Replaced SCM_N?IMP
8499 by a more explicit predicate in some places.
8500
85012002-03-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
f12745b6
DH
8502
8503 * eval.c (SCM_CEVAL): Cleaned up the handling of #@dispatch.
8504 Added lots of comments regarding the implementation of #@dispatch.
8505 Changed intra-procedure communication to use t.arg1 instead of
8506 arg2. Removed some uses of t.arg1, t.lloc and proc as temporary
8507 variables. Introduced temporary variables with hopefully
8508 descriptive names for clarification. Replaced SCM_N?IMP by a more
8509 explicit predicate in some places. Use SCM_INSTANCE_HASH instead
8510 of computing the expression explicitly. Eliminate now unused
8511 label nontoplevel_cdrxbegin.
8512
8513 * goops.h (SCM_INSTANCE_HASH): New macro.
8514
8515 * objects.h (SCM_CMETHOD_FORMALS, SCM_CMETHOD_BODY): New macros.
8516
1ebf1566
TTN
85172002-03-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
8518
8519 * Makefile.am (bin_SCRIPTS): Revive this decl, w/ initial element
8520 "guile-snarf" moved back from `noinst_SCRIPTS'.
8521
020c890c
NJ
85222002-03-08 Neil Jerram <neil@ossau.uklinux.net>
8523
58d233cc
NJ
8524 * srcprop.c (scm_set_source_property_x): If SRCPROPS obj already
8525 exists when adding a source property other than those that are
8526 handled explicitly, add the new property to the SRCPROPS obj's
8527 plist.
8528
020c890c
NJ
8529 * debug.h (SCM_MAX_FRAME_SIZE): Remove incorrect comment about use
8530 of SCM_MAX_FRAME_SIZE as a bit mask; it isn't used like this.
8531
8532 * eval.c (SCM_CEVAL): Don't store scm_debug_eframe_size in
8533 debug.status. It isn't needed, and it can overflow the bits
8534 reserved for it (which may lead to a segv or a GC abort).
8535
3f04400d
DH
85362002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8537
8538 * eval.c (SCM_CEVAL): Cleaned up the handling of 'apply'. Removed
8539 side-effecting operations from conditions and macro calls.
8540 Replaced SCM_N?IMP by a more explicit predicate in some places.
8541 Minimized the scope of some variables.
8542
97820583
SJ
85432002-03-02 Stefan Jahn <stefan@lkcc.org>
8544
8545 * convert.i.c: Fixed int <-> long conversions which would have
8546 failed if their sizes were different.
8547
38ace99e
DH
85482002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8549
8550 * eval.c (SCM_CEVAL): Cleaned up the handling of 'if', 'let',
8551 'letrec' and 'set*': Removed some uses of t.arg1, t.lloc and proc
8552 as temporary variables. Removed side-effecting operations from
8553 conditions and macro calls. Introduced temporary variables with
8554 hopefully descriptive names for clarification. Replaced SCM_N?IMP
8555 by a more explicit predicate in some places. Removed code that
8556 was conditionally compiled if SICP was defined - which it never
8557 is.
8558
e5cb71a0
DH
85592002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8560
8561 * eval.c (SCM_CEVAL): Cleaned up the handling of 'cons' and 'do':
8562 Removed some uses of t.arg1 and proc as temporary variables.
8563 Removed side-effecting operations from conditions and macro calls.
8564 Introduced temporary variables with hopefully descriptive names
8565 for clarification. Replaced SCM_N?IMP by a more explicit
8566 predicate in some places.
8567
6a0f6ff3
DH
85682002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8569
8570 * eval.c (scm_badargsp, SCM_CEVAL): Replaced SCM_N?IMP by a more
8571 explicit predicate in some places.
8572
8573 (CHECK_EQVISH): Removed.
8574
8575 (SCM_CEVAL): Removed some uses of t.arg1 and proc as temporary
8576 variables. Removed side-effecting operations from conditions and
8577 macro calls. Introduced temporary variables for clarification.
8578 Sorted if-else-if check for the type of the last form in a list by
8579 frequency. Avoided some unnecessary tail-recursion calls.
8580
228a24ef
DH
85812002-03-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
8582
8583 * gc.c (SCM_HEAP_SEG_SIZE, CELL_UP, CELL_DN, NEXT_DATA_CELL,
8584 init_heap_seg, alloc_some_heap), gc.h (struct scm_cell, struct
8585 scm_t_cell, SCM_CELLPTR, SCM_GC_CARD_SIZE,
8586 SCM_GC_IN_CARD_HEADERP), tags.h (SCM_CELLP): Renamed the struct
8587 scm_cell and all its uses to scm_t_cell in accordance to Guile's
8588 naming scheme for types.
8589
8590 * alist.c (scm_acons), convert.i.c (CTYPES2UVECT,
8591 CTYPES2UVECT_OPTIONAL), coop-threads.c (scm_call_with_new_thread,
8592 scm_spawn_thread), debug.c (scm_make_debugobj), environments.c
8593 (scm_make_environment), eval.c (scm_closure), fports.c
8594 (scm_fdes_to_port), gc.c (scm_deprecated_newcell,
8595 scm_deprecated_newcell2), inline.h (scm_alloc_cell, scm_cell),
8596 list.c (SCM_I_CONS), numbers.c (scm_i_mkbig), pairs.c (scm_cons),
8597 ports.c (scm_void_port), procs.c (scm_c_make_subr, scm_makcclo),
8598 smob.c (scm_make_smob), smob.h (SCM_NEWSMOB), strings.c
8599 (scm_take_str, scm_allocate_string), strports.c (scm_mkstrport),
8600 unif.c (scm_make_uve), variable.c (make_variable), vectors.c
8601 (scm_c_make_vector), vports.c (scm_make_soft_port): Renamed
8602 scm_alloc_cell to scm_cell.
8603
8604 * environments.c (core_environments_observe), gc.c
8605 (scm_deprecated_newcell2), goops.c (wrap_init, scm_wrap_object),
8606 inline.h (scm_alloc_double_cell, scm_double_cell), num2float.i.c
8607 (FLOAT2NUM), numbers.c (scm_make_real), procs.c
8608 (scm_make_procedure_with_setter), smob.h (SCM_NEWSMOB2,
8609 SCM_NEWSMOB3), struct.c (scm_make_struct, scm_make_vtable_vtable),
8610 symbols.c (scm_mem2symbol, scm_mem2uninterned_symbol), weaks.c
8611 (allocate_weak_vector): Renamed scm_alloc_double_cell to
8612 scm_double_cell.
8613
edb810bb
SJ
86142002-02-27 Stefan Jahn <stefan@lkcc.org>
8615
8616 * convert.i.c, convert.c: Better range checking.
8617
8618 * inet_aton.c, fports.c: Commented the inclusion of <winsock2.h>.
8619
1ebf1566 8620 * deprecation.c (vsnprintf): Define to `_vsnprintf' for
edb810bb
SJ
8621 Windows (MinGW).
8622
327d4dd3
TTN
86232002-02-26 Thien-Thi Nguyen <ttn@giblet.glug.org>
8624
8625 * Makefile.am: Update path to pre-inst-guile automake frag.
8626
89d7a92c 86272002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
646052c0
DH
8628
8629 * gc.c (scm_gc_sweep): Make it compile even when deprecated
8630 features are excluded.
8631
89d7a92c 86322002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
bac0e232
DH
8633
8634 * num2integral.i.c (NUM2INTEGRAL): Fixed signedness problem.
8635
4f2716b6
GH
86362002-02-25 Gary Houston <ghouston@arglist.com>
8637
8638 * convert.c: include <string.h> for convert_i.c.
8639
46151112
RB
86402002-02-24 Rob Browning <rlb@defaultvalue.org>
8641
8642 * .cvsignore: add stamp-h1.
8643
cd328b4f
NJ
86442002-02-21 Neil Jerram <neil@ossau.uklinux.net>
8645
8646 * unif.c (scm_array_to_list): Correct name, which had been
8647 accidentally changed to scm_t_arrayo_list!
8648
c709de7f
MD
86492002-02-20 Mikael Djurfeldt <mdj@linnaeus>
8650
8651 * gc.c (scm_gc_sweep): Print an error message when aborting due to
8652 underflowing scm_mallocated.
8653
c1965d31
MV
86542002-02-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8655
8656 * gc.h, gc.c (scm_must_malloc, scm_must_realloc, scm_must_strdup,
8657 scm_must_strndup, scm_done_malloc, scm_done_free, scm_must_free):
8658 Reimplemented using the new scm_gc_malloc, etc., functions and
8659 deprecated.
8660
b606945b
TTN
86612002-02-11 Thien-Thi Nguyen <ttn@giblet.glug.org>
8662
8663 * Makefile.am (bin_PROGRAMS): Move `guile_filter_doc_snarfage'
8664 to `noinst_PROGRAMS'.
8665 (bin_SCRIPTS): Move all values to `noinst_SCRIPTS'; delete.
8666 (noinst_PROGRAMS, noinst_SCRIPTS): New.
8667
7c686ba8
MV
86682002-02-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8669
8670 * gc.h, gc.c (scm_gc_sweep): Issue deprecation warning when
8671 non-zero is returned from a port or smob free function.
8672 (scm_malloc, scm_realloc, scm_strndup, scm_strdup,
8673 scm_gc_register_collectable_memory,
8674 scm_gc_unregister_collectable_memory, scm_gc_malloc,
8675 scm_gc_realloc, scm_gc_free, scm_gc_strndup, scm_gc_strdup): New.
8676
8677 * backtrace.c, continuations.c, convert.i.c, coop-threads.c,
8678 debug-malloc.c, dynl.c, environments.c, environments.h,
8679 extensions.c, filesys.c, fports.c, gc.c, gc.h, gh_data.c, goops.c,
8680 guardians.c, hooks.c, init.c, keywords.c, load.c, numbers.c,
8681 ports.c, posix.c, procs.c, rdelim.c, regex-posix.c, root.c,
8682 smob.c, stime.c, strings.c, struct.c, struct.h, symbols.c, unif.c,
8683 vectors.c, weaks.c: Use scm_gc_malloc/scm_malloc and
8684 scm_gc_free/free instead of scm_must_malloc and scm_must_free, as
8685 appropriate. Return zero from smob and port free functions.
8686
8687 * debug-malloc.c (scm_malloc_reregister): Handle "old == NULL".
8688
8689 * deprecation.h, deprecation.c: Reimplemented to allow deprecation
8690 messages while the GC is running.
8691 (scm_c_issue_deprecation_warning_fmt): New.
8692
8693 * fports.c (scm_setvbuf): Reset read buffer to saved values when
8694 it is pointing to the putback buffer.
8695
66adc0a6
TTN
86962002-02-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
8697
8698 * gsubr.c (create_gsubr): On "too many args" error,
8699 also display arg count and name. Thanks to Bill Schottstaedt.
8700
0187b4f4
TTN
87012002-02-05 Thien-Thi Nguyen <ttn@giblet.glug.org>
8702
8703 * Makefile.am: Include $(top_srcdir)/pre-inst-guile.am.
8704
8705 (bin_SCRIPTS): Remove guile-snarf-docs-texi.
8706 (alldotdocfiles, snarf2checkedtexi, dotdoc2texi): New vars.
8707 (guile.texi, guile-procedures.texi): Use $(dotdoc2texi).
8708
8709 * guile-snarf-docs-texi.in: Bye bye.
8710
402e687c
MV
87112002-02-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8712
8713 * symbols.c (scm_make_symbol): Fix typo in docstring.
8714
8715 * symbols.h (scm_mem2uninterned_symbol, scm_symbol_interned_p,
8716 scm_make_symbol): New prototypes.
8717
319b98ed
MV
87182002-02-03 Marius Vollmer <mvo@zagadka.ping.de>
8719
8720 * symbols.h (SCM_SET_SYMBOL_HASH): Removed.
8721 (SCM_SYMBOL_INTERNED_P): New.
8722 * symbols.c (scm_symbol_hash): Use scm_ulong2num instead of
8723 SCM_MAKINUM since hash values can well be bignums.
8724 (scm_mem2symbol): Only use hash values below SCM_T_BITS_MAX/2.
8725 This signals a interned symbol.
8726 (scm_mem2uninterned_symbol, scm_symbol_interned_p,
8727 scm_make_symbol): New.
0187b4f4 8728
319b98ed
MV
8729 * print.c (scm_iprin1): Print uninterned symbols unreadably.
8730
34472dfe
TTN
87312002-02-02 Thien-Thi Nguyen <ttn@giblet.glug.org>
8732
8733 * __scm.h (HAVE_UINTPTR_T): Only define if UINTPTR_T attributes
8734 are defined: UINTPTR_MAX, INTPTR_MAX, INTPTR_MIN.
0187b4f4 8735 Thanks to Dave Love.
34472dfe 8736
1b39c2e3
MV
87372002-01-31 Marius Vollmer <mvo@zagadka.ping.de>
8738
8739 * symbols.c (scm_gensym): Use " g" as default prefix, not "g".
319b98ed 8740 This might help to make unintended clashes less likely.
1b39c2e3
MV
8741 (scm_string_to_symbol): Protect the string until the symbols is
8742 created.
8743
1fa86ca5
SJ
87442002-01-31 Stefan Jahn <stefan@lkcc.org>
8745
8746 * convert.c, convert.h, convert.i.c: New files containing C
34472dfe 8747 array to Scheme conversion helpers meant to be replacement
1fa86ca5
SJ
8748 functions for the deprecated gh interface.
8749
8750 * Makefile.am: Setup rules for new `convert.*' files.
8751
af68e5e5
SJ
87522002-01-28 Stefan Jahn <stefan@lkcc.org>
8753
8754 * symbols.c (scm_c_symbol2str): New function, replacement for
8755 `gh_scm2newsymbol()'.
8756
34472dfe 8757 * strings.c (scm_c_substring2str): New function. Proper
af68e5e5
SJ
8758 replacement for `gh_get_substr()'.
8759
8760 * socket.c: Include `stdint.h' if available for the `uint32_t'
8761 declaration.
8762
504d99c5 8763 * scmsigs.c (scm_sigaction): Initialize `chandler' (inhibits
af68e5e5
SJ
8764 compiler warning).
8765
8766 * backtrace.c: Include `lang.h' for GUILE_DEBUG conditional.
8767
c96d76b8 87682002-01-22 Neil Jerram <neil@ossau.uklinux.net>
34472dfe 8769
c96d76b8 8770 Other changes unrelated to Elisp...
34472dfe 8771
c96d76b8
NJ
8772 * eval.c (scm_m_if): Use s_if rather than repeating string literal
8773 "if".
8774 (comments): Fix a few typos.
8775 (scm_for_each): Add parentheses around oddly unparenthesized
8776 if/while conditions.
8777
8778 * read.c (scm_read_opts): Add full stop at end of doc for
8779 `keywords' option.
8780
8781 * script.c (scm_compile_shell_switches): Use scm_str2symbol
8782 instead of gh_symbol2scm.
8783
8784 * srcprop.h (SRCPROPBRK): Return C type rather than SCM.
8785 (SRCBRKP): Use SRCPROPBRK rather than duplicating its logic.
8786
8787 * srcprop.c (scm_srcprops_to_plist, scm_source_property): Change
8788 SRCPROPBRK (x) to SCM_BOOL (SRCPROPBRK (x)).
8789
8790 First batch of changes for Elisp support...
8791
8792 * alist.c, async.c, boolean.c, dynl.c, eval.c, filesys.c,
8793 fluids.c, list.c, load.c, options.c, posix.c, print.c, sort.c,
8794 throw.c, vectors.c, weaks.c: Add #include for lang.h.
8795
8796 * eval.c, eval.h, init.c, lang.c, lang.h: Use SCM_ENABLE_ELISP to
8797 conditionalize compilation and initialization of Elisp support
8798 function.
34472dfe 8799
c96d76b8
NJ
8800 * alist.c (scm_assq, scm_assv, scm_assoc), async.c
8801 (scm_asyncs_pending, scm_run_asyncs, noop), backtrace.c
8802 (scm_set_print_params_x), dynl.c (scm_make_argv_from_stringlist),
8803 filesys.c (fill_select_type, retrieve_select_type), fluids.c
8804 (scm_swap_fluids, scm_swap_fluids_reverse), list.c (scm_null_p,
8805 scm_ilength, scm_append_x, scm_last_pair, scm_reverse,
8806 scm_reverse_x, scm_list_ref, scm_list_set_x, scm_list_cdr_set_x,
bbd26b5a
NJ
8807 scm_c_memq, scm_memv, scm_member), load.c (scm_search_path),
8808 options.c (change_option_setting, scm_options), posix.c
8809 (environ_list_to_c), print.c (scm_iprlist), throw.c
8810 (scm_exit_status), vectors.c (scm_vector), weaks.c
8811 (scm_weak_vector): Use SCM_NULL_OR_NIL_P instead of SCM_NULLP.
c96d76b8
NJ
8812
8813 * boolean.c (scm_not): Use `SCM_FALSEP || SCM_NILP' instead of
8814 just SCM_FALSEP.
34472dfe 8815
c96d76b8
NJ
8816 * boolean.c (scm_boolean_p): Use `SCM_BOOLP || SCM_NILP' instead
8817 of just SCM_BOOLP.
8818
8819 * eval.c (scm_lisp_nil, scm_lisp_t, s_nil_ify, scm_m_nil_ify,
8820 s_t_ify, scm_m_t_ify, s_0_cond, scm_m_0_cond, s_0_ify,
8821 scm_m_0_ify, s_1_ify, scm_m_1_ify): Removed.
8822 (scm_m_atfop): Support function aliasing. Support both function
8823 args, which need transformation, and macro args, which do not.
8824 Add explanatory comments.
8825 (SCM_CEVAL): In switch cases for SCM_IM_AND, SCM_IM_COND,
8826 SCM_IM_DO, SCM_IM_IF and SCM_IM_OR, add `|| SCM_NILP' to existing
8827 checks for SCM_FALSEP. In switch case for SCM_IM_NIL_COND, use
8828 SCM_NULLP || SCM_NILP instead of checks against (removed)
8829 scm_lisp_nil. Removed switch cases for SCM_IM_NIL_IFY,
8830 SCM_IM_T_IFY, SCM_IM_0_COND, SCM_IM_0_IFY, SCM_IM_1_IFY.
8831
8832 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
8833 scm_m_while, scm_nil_eq): Commented out; I don't think we need
8834 these, but I don't want to remove them yet, just in case.
8835 (scm_init_lang): Define `%nil' variable on Scheme level to hold
8836 Elisp nil value.
8837
8838 * lang.h (SCM_NILP): Test against Elisp nil value instead of
8839 against (removed) scm_lisp_nil.
8840 (SCM_NILNULLP, SCM_NIL2EOL, SCM_EOL2NIL): Commented out.
8841 (SCM_NULL_OR_NIL_P): New.
8842
8843 * list.c (scm_append): Use SCM_VALIDATE_NULL_OR_NIL instead of
8844 SCM_VALIDATE_NULL.
8845
8846 * print.c (scm_isymnames): Fix comment. Remove #@nil-ify,
8847 #@t-ify, #@0-cond, #@0-ify, #@1-ify. Add #nil (for SCM_ELISP_NIL
8848 value).
8849
8850 * sort.c (scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
8851 scm_sort_x, scm_sort, scm_stable_sort_x, scm_stable_sort): Use
8852 SCM_NULL_OR_NIL_P instead of SCM_NULLP. In constructions like `if
8853 (SCM_NULLP (x)) return SCM_EOL;', return x rather than SCM_EOL.
8854
8855 * tags.h (SCM_IM_NIL_IFY, SCM_IM_T_IFY, SCM_IM_0_COND,
8856 SCM_IM_0_IFY, SCM_IM_1_IFY): Removed.
8857 (SCM_IM_BIND, SCM_IM_DELAY, SCM_IM_CALL_WITH_VALUES, SCM_UNBOUND):
8858 Numbering shifted down accordingly.
8859 (SCM_ELISP_NIL): New IFLAG.
8860
8861 * validate.h (SCM_VALIDATE_NULL_OR_NIL): New.
34472dfe 8862
a392ee15
DH
88632002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
8864
8865 * eval.c: Removed outdated references to "everr". Improved some
8866 comments.
8867
8868 (scm_deval_args, deval_args): Renamed scm_deval_args to
8869 deval_args, since it is not part of the interface.
8870
8871 (SCM_CEVAL): Added (maybe somewhat verbose) comment. Avoid to
8872 use references to debug.vect[0] before it exists. Add parentheses
8873 to switch statement.
8874
8875 * goops.h: Added local emacs variables.
8876
24933780
DH
88772002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
8878
8879 * eval.[ch] (scm_deval_args): Made static.
8880
8881 * srcprop.c (scm_source_property): Remove redundant SCM_IMP
8882 test.
8883
8884 * strings.c (scm_c_string2str): Clarified comment. Replaced
8885 THINKME by FIXME for uniformness. Removed question about whether
8886 arguments need to be protected from garbage collection: Arguments
8887 must be protected as any other variable.
8888
f9450cdb
DH
88892002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
8890
8891 * procs.h (SCM_CLOSURE_BODY): New Macro.
8892
8893 * debug.c (scm_procedure_name, scm_procedure_source), eval.c
8894 (SCM_CEVAL, SCM_APPLY), goops.c (scm_sys_initialize_object,
8895 get_slot_value, set_slot_value), procs.c
8896 (scm_procedure_documentation), sort.c (closureless), stacks.c
8897 (get_applybody): Replace SCM_CDR (SCM_CODE (...)) by
8898 SCM_CLOSURE_BODY.
8899
8900 * sort.c (closureless): Prefer !SCM_FOOP over SCM_NFOOP.
8901
5dc64f64
MV
89022001-12-26 Marius Vollmer <mvo@zagadka.ping.de>
8903
8904 * Makefile.am (guile-procedures.txt): When we don't have makeinfo,
8905 use "cp" instead.
8906
197ee3d3
MV
89072001-12-16 Marius Vollmer <mvo@zagadka.ping.de>
8908
8909 * stacks.c, stacks.h (scm_t_stackype): Renamed to scm_stack_type
8910 everywhere.
8911
8912 * continuations.c (scm_make_continuation): Do not retain the
8913 throw_value when the continuation is invoked.
8914
4d4528e7
SJ
89152001-12-08 Stefan Jahn <stefan@lkcc.org>
8916
8917 * strings.c (scm_c_string2str): New function. Converts a
34472dfe 8918 given Scheme string into a C string. Also put in two
4d4528e7
SJ
8919 THINKME's regarding the malloc policy for the missing converter
8920 routines.
8921
98347362
NJ
89222001-12-01 Neil Jerram <neil@ossau.uklinux.net>
8923
8924 * gh_data.c (gh_module_lookup): Use scm_str2symbol rather than
8925 gh_symbol2scm.
8926
1fc8902f
DH
89272001-11-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
8928
8929 * gc.h (SCM_GC_CELL_WORD, SCM_GC_CELL_OBJECT,
8930 SCM_GC_SET_CELL_WORD, SCM_GC_SET_CELL_OBJECT): New macros.
8931
8932 (SCM_GC_CELL_TYPE, SCM_CELL_WORD, SCM_CELL_OBJECT,
8933 SCM_SET_CELL_WORD, SCM_SET_CELL_OBJECT, SCM_FREE_CELL_CDR,
8934 SCM_GC_SET_CELL_OBJECT): Express in terms of SCM_GC_CELL_*
8935 macros.
8936
8937 (SCM_FREE_CELL_P): Express in terms of SCM_GC_CELL_TYPE.
8938
8939 * inline.h (scm_alloc_cell, scm_alloc_double_cell): Use
8940 SCM_GC_CELL_* macros when accessing free cells.
8941
4878beec
MV
89422001-11-25 Marius Vollmer <mvo@zagadka.ping.de>
8943
8944 * vectors.h (SCM_MAKE_VECTOR_TAG): New.
34472dfe 8945 * unif.h (SCM_MAKE_BITVECTOR_TAG, SCM_MAKE_UVECTOR_TAG): New.
4878beec
MV
8946 * symbols.h (SCM_MAKE_SYMBOL_TAG): New.
8947 * strings.h (SCM_MAKE_STRING_TAG): New.
8948 * procs.h (SCM_MAKE_CCLO_TAG): New.
8949 * numbers.h (SCM_MAKE_BIGNUM_TAG): New.
8950
8951 * goops.h: Replaced SCM_DEBUG_DEPRECATED with
8952 !SCM_ENABLE_DEPRECATED.
8953
8954 * async.c, async.h (scm_system_async_mark_from_signal_handler):
8955 New.
8956
8957 * scmsigs.c (scm_take_signal): Removed all code that assumes that
8958 signal handlers are allowed to divert the flow of control. Call
8959 scm_system_async_mark_from_signal_handler instead of
8960 scm_system_async_mark.
8961
8962
8963 Deprecated SCM_NEWCELL and SCM_NEWCELL2. Added scm_alloc_cell and
8964 scm_alloc_double_cell in their place.
34472dfe 8965
4878beec
MV
8966 * gc.h (SCM_GC_SET_ALLOCATED, scm_debug_newcell,
8967 scm_debug_newcell2, scm_tc16_allocated): Removed from header.
8968 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
8969 (SCM_NEWCELL, SCM_NEWCELL2): Implement in terms of
8970 scm_deprecated_newcell and scm_deprecated_newcell2.
8971
8972 gc.c (scm_tc16_allocated): Only define when including deprecated
8973 features.
8974 (scm_debug_newcell, scm_debug_newcell2): Removed.
8975 (scm_init_storage): Do not initialize scm_tc16_allocated.
8976 (scm_init_gc): Do it here.
8977 (allocated_mark): New, from old code.
8978 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
34472dfe 8979
4878beec 8980 * inline.c, inline.h: New files.
34472dfe 8981 * Makefile.am: Added them in all the right places.
4878beec 8982
34472dfe 8983 * _scm.h: Include "libguile/inline.h".
4878beec
MV
8984
8985 * alist.c, coop-threads.c, debug.c, environments.c, eval.c,
8986 fports.c, gh_data.c, goops.c, guardians.c, lang.c, list.c,
8987 num2float.i.c, numbers.c, pairs.c, ports.c, print.c, procs.c,
8988 smob.c, smob.h, strings.c, strports.c, struct.c, symbols.c,
8989 unif.c, variable.c, vectors.c, vports.c, weaks.c: Replaced
8990 SCM_NEWCELL and SCM_NEWCELL2 with scm_alloc_cell and
8991 scm_alloc_double_cell, respectively.
8992
d2bc7fae
MV
89932001-11-23 Marius Vollmer <mvo@zagadka.ping.de>
8994
8995 * modules.c (scm_c_use_module): Adapt to changes to
8996 `process-use-modules'.
8997
5eec27e9
DH
89982001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
8999
9000 * numbers.c (scm_divide): Fix more division by zero errors.
9001
8978878f
GH
90022001-11-21 Gary Houston <ghouston@arglist.com>
9003
9004 * Makefile.am (OMIT_DEPENDENCIES): removed, since it seems to be
9005 obsolete. autogen.sh says:
9006 invalid unused variable name: `OMIT_DEPENDENCIES'
9007
164826d3
DH
90082001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
9009
9010 * numbers.c (scm_divide): Fix (/ 0). Thanks to Keith Wright for
9011 reporting the bug.
9012
84aff7a7
MV
90132001-11-21 Marius Vollmer <mvo@zagadka.ping.de>
9014
9015 * Makefile.am (install-exec-hook): Prepend $(DESTDIR) to filename.
9016 Thanks to Eric Gillespie, Jr!
34472dfe 9017
6063dc1d
SJ
90182001-11-21 Stefan Jahn <stefan@lkcc.org>
9019
34472dfe
TTN
9020 * win32-socket.c (getservent, setservent, endservent,
9021 getprotoent, setprotoent, endprotoent): New functions.
6063dc1d
SJ
9022 Appropriate replacements for M$-Windows.
9023
9024 * numbers.c (SIZE_MAX, PTRDIFF_MAX, PTRDIFF_MIN): Reintroduced
9025 these definitions for GUILE_DEBUG.
9026
9027 * net_db.c: Include "win32-socket.h" if compiling with a native
34472dfe
TTN
9028 M$-Windows compiler. Include some pieces of code (protoent and
9029 servent interface) protected by HAVE_* macros when using a
6063dc1d
SJ
9030 native M$-Windows compiler.
9031
351982f6
MV
90322001-11-20 Marius Vollmer <mvo@zagadka.ping.de>
9033
9034 * modules.c (scm_c_export): Do nothing when the first argument is
9035 already the terminating NULL. Thanks to Han-Wen Nienhuys!
9036
849038b5
TTN
90372001-11-20 Thien-Thi Nguyen <ttn@glug.org>
9038
9039 * Makefile.am (libpath.h): In SCM_BUILD_INFO,
9040 also include `buildstamp'.
9041
5c790b44
RB
90422001-11-18 Rob Browning <rlb@defaultvalue.org>
9043
9044 * version.c
9045 (s_scm_major_version): use SCM_MAJOR_VERSION.
9046 (s_scm_minor_version): use SCM_MINOR_VERSION.
9047 (s_scm_micro_version): use SCM_MICRO_VERSION.
9048 (s_scm_version): use SCM_MAJOR_VERSION, SCM_MINOR_VERSION, and
9049 SCM_MICRO_VERSION.
9050
9051 * version.h.in
9052 (SCM_MAJOR_VERSION): renamed from SCM_GUILE_MAJOR_VERSION.
9053 (SCM_MINOR_VERSION): renamed from SCM_GUILE_MINOR_VERSION.
9054 (SCM_MICRO_VERSION): renamed from SCM_GUILE_MICRO_VERSION.
9055
694a9bb3
NJ
90562001-11-18 Neil Jerram <neil@ossau.uklinux.net>
9057
9058 * vectors.c (scm_vector_move_left_x, scm_vector_move_right_x):
9059 Rewrite docstrings without reference to substring-move-left/right,
9060 since the latter no longer exist.
9061
302c12b4
DH
90622001-11-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
9063
9064 * eval.c: Removed bogus comment about acros.
9065
9066 (scm_unmemocar): Use !SCM_CONSP instead of SCM_IMP.
9067 Minimize scope of local variable. Eliminate dependency on
9068 macro DEBUG_EXTENSIONS.
9069
9070 (s_splicing): New error message string.
9071
9072 (scm_m_body): Issue 'bad body' message rather than 'missing
9073 expression' message.
9074
9075 (scm_m_quote): Eliminate unnecessary copying.
9076
9077 (scm_m_lambda, scm_m_letstar, scm_m_letrec, scm_m_let): Leave the
9078 checking of the body to scm_m_body.
9079
9080 (scm_m_do): Move comment to function header. Rename arg1 to
9081 binding. Made the code a bit easier to read.
9082
9083 (evalcar): Removed.
9084
9085 (iqq): Added a comment. Changed the depth parameter to
9086 unsigned. Use size_t for vector lengths. Make sure vector object
9087 is gc protected as long as its contents are read. Add some syntax
9088 checks. Get rid of unnecessary SCM_IMP test. Clean up the
9089 control structure a bit.
9090
9091 (scm_m_delay): Added comment about the implementation of
9092 scm_m_delay.
9093
9094 (scm_m_define): Add comment about guile's currying define
9095 syntax. Renamed 'proc' to 'name'. Eliminate dependency on macro
9096 DEBUG_EXTENSIONS. Simplified code a bit. Eliminate SICP code.
9097
9098 (scm_m_letrec1): Removed. Part of the functionality is taken
9099 over by the new function 'transform_bindings'.
9100
9101 (transform_bindings): New function. Takes over some of the
9102 functionality of removed function 'scm_m_letrec1', namely to split
9103 a list of bindings into a reversed list of variables and a list of
9104 initializers.
9105
9106 (scm_m_letrec): Call 'transform_bindings'.
9107
9108 (scm_m_let): Minimized scope of local variables. Renamed 'proc'
9109 to 'temp' and 'arg1' to 'binding'. Eliminated redundant SCM_NIMP
9110 test. Use 'transform_bindings'. Fixed scoping error with named
9111 let (Thanks to Aubrey Jaffer for reporting the bug and to Neil
9112 Jerram for suggesting the fix). Cleaned up the control structure
9113 a bit.
9114
9115 (scm_m_expand_body): Use 'transform_bindings'. Eliminated
9116 unnecessary consing. Eliminated unnecessary
9117 SCM_DEFER/ALLOW_INTS.
9118
9119 (SCM_CEVAL): Un-obfuscated some loops.
9120
cecb4a5e
NJ
91212001-11-16 Neil Jerram <neil@ossau.uklinux.net>
9122
8f85c0c6
NJ
9123 * gc.h (scm_unhash_name): Old declaration removed.
9124
9125 * eval.c (s_scm_eval): Change @var{primitive-eval} to
9126 @code{primitive-eval}.
9127
9128 * feature.c, vectors.c, net_db.c, unif.c, weaks.c, struct.c,
9129 version.c, alist.c, ports.c, ramap.c, unif.c, strings.c, list.c:
9130 Change @deffnx lines in docstrings to say {Scheme Procedure}
9131 rather than primitive or procedure.
9132
9133 * posix.c (scm_execl), filesys.c (scm_close), unif.c
9134 (scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
9135 scm_bit_set_star_x, scm_bit_invert_x), ramap.c (scm_array_fill_x,
9136 scm_array_for_each, scm_array_index_map_x), vectors.c (scm_vector,
9137 scm_make_vector, scm_vector_to_list, scm_vector_fill_x), strop.c
9138 (scm_string_split, scm_string_ci_to_symbol), strings.c
9139 (scm_string_p), sort.c (scm_merge), print.c (scm_newline),
9140 macros.c (scm_macro_type), alist.c (scm_acons, scm_assq):
9141 Docstring fixes and improvements reflecting edits that have been
9142 made in the reference manual source.
9143
9144 * objprop.c (scm_object_properties, scm_set_object_properties_x,
9145 scm_object_property, scm_set_object_property_x): Remove invalid
9146 @deffnx lines for corresponding procedure property primitives.
9147
cecb4a5e
NJ
9148 These changes add a @deffnx C function declaration and function
9149 index entries for each Guile primitive to the copy of the doc
9150 snarf output that is used for reference manual synchronization.
9151 Online help is unchanged.
849038b5 9152
cecb4a5e
NJ
9153 * snarf.h (SCM_SNARF_DOCS): Output primitive's C function name.
9154 (SCM_DEFINE, SCM_DEFINE1, SCM_REGISTER_PROC): Supply to C function
9155 name to SCM_SNARF_DOCS.
849038b5 9156
cecb4a5e
NJ
9157 * guile-snarf-docs-texi.in: Pass the shell script's arguments into
9158 snarf-check-and-output-texi.
9159
9160 * Makefile.am (guile-procedures.texi): New rule.
9161 (BUILT_SOURCES, guile.texi, guile-procedures.txt, CLEANFILES):
9162 Changed so that the last stage of doc snarfing is now performed
9163 twice, once to produce guile-procedures.txt for online help, and
9164 once to produce guile.texi for reference manual synchronization.
9165
ddea3325
DH
91662001-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
9167
9168 * eval.c (RETURN): Wrap in do{}while(0) in order to make it
9169 safely usable as a single statement followed by a ';', for example
9170 in an if statement.
9171
9172 (SCM_CEVAL, SCM_APPLY): Clean up code using 'RETURN'.
9173
72dd0a03
NJ
91742001-11-13 Neil Jerram <neil@ossau.uklinux.net>
9175
9176 * random.c (scm_random_solid_sphere_x,
9177 scm_random_hollow_sphere_x): Correct "shere" typos.
9178
9179 * hashtab.c (scm_hash_fold): Add missing apostrophe to docstring.
9180
9181 * version.c (scm_version): Update docstring to include
9182 `micro-version'.
9183
6558eda6
MV
91842001-11-13 Marius Vollmer <mvo@zagadka.ping.de>
9185
409b8588
MV
9186 * modules.c (scm_c_export): Call va_end after collecting the
9187 symbols.
9188
adb8c0f2
MV
9189 * strop.h, strop.c (scm_substring_move_left_x,
9190 scm_substring_move_right_x): Removed.
9191
6558eda6
MV
9192 * __scm.h (HAVE_UINTPTR_T, HAVE_PTRDIFF_T, HAVE_LONG_LONG,
9193 HAVE_LONG_LONGS): Define to "1" when defining them, to mirror what
9194 configure does.
9195
5d8fc640
MV
91962001-11-12 Marius Vollmer <mvo@zagadka.ping.de>
9197
9198 * numbers.c: Document macros to define when including
9199 num2integral.i.c. MAX_VALUE and MIN_VALU are no longer used, we
9200 now rely on SIZEOF_ macros that have been figured out at
9201 configure time.
9202
9203 * num2integral.i.c: Adapt to new interface.
9204 (NUM2INTEGRAL): Test whether a fixnum can be represented in the
9205 target type by casting it and checking whether it is still the
9206 same. Do not try to handle bignums for integral types that are
9207 smaller than fixnums. When handling bignums, collect the
9208 magnituse first into a unsigned type, and correctly check for
9209 overflow.
9210 (INTEGRAL2BIG): Do not use MIN_VALUE explicitely by observing that
9211 only -MIN_VALUE can still be negative of all negative numbers (in
9212 twos-complement).
9213
849038b5 9214 * tags.h (SIZEOF_SCM_T_BITS): Define it appropriately.
5d8fc640
MV
9215
9216 * __scm.h: Define HAVE_UINTPTR_T, HAVE_PTRDIFF_T and
9217 HAVE_LONG_LONG depending on whether their size is non-zero.
9218
d6b8cf11
TTN
92192001-11-11 Thien-Thi Nguyen <ttn@glug.org>
9220
9221 * strop.c (scm_string_null_p): Docfix; nfc.
9222 Thanks to Scott Lenser.
9223
9401323e
NJ
92242001-11-07 Neil Jerram <neil@ossau.uklinux.net>
9225
9226 * extensions.c (scm_load_extension): Canonicalize docstring
9227 whitespace.
9228
9229 * unif.c (scm_uniform_array_write), ports.c
9230 (scm_current_output_port, scm_force_output), dynwind.c
9231 (scm_dynamic_wind), scmsigs.c (scm_setitimer, scm_getitimer),
9232 filesys.c (scm_open, scm_lstat), struct.c
9233 (scm_make_struct_layout), random.c (scm_random,
9234 scm_random_solid_sphere_x, scm_random_hollow_sphere_x, strop.c
9235 (scm_i_index): Remove superfluous whitespace from end of docstring
9236 lines.
9237
9238 * filesys.c (scm_select), guardians.c (scm_guardian_greedy_p),
9239 strings.c (scm_make_string), variable.c (scm_make_variable,
9240 scm_make_undefined_variable, scm_variable_p, scm_variable_set_x,
9241 scm_variable_bound_p), scmsigs.c (scm_setitimer, scm_getitimer),
9242 posix.c (scm_crypt), struct.c (scm_make_vtable_vtable), hashtab.c
9243 (scm_hash_fold), ports.c (scm_port_for_each): Remove superfluous
9244 newline at end of docstrings.
9245
9246 * modules.c (scm_set_current_module): Add missing newline to
9247 docstring.
9248
b4e15479
SJ
92492001-11-07 Stefan Jahn <stefan@lkcc.org>
9250
9251 * win32-socket.[ch]: New files. Defines Winsock-API error codes
9252 and makes them available through Guile. That is because the
9253 Winsock-API does not store its errors in `errno' and thus cannot
9254 return error messages via `strerror (errno)'.
9255
9256 * socket.c (scm_init_socket): Initialize `win32-socket' part
9257 here under M$-Windows.
9258
d6b8cf11 9259 * numbers.h: Added missing declaration of
b4e15479
SJ
9260 `scm_sys_check_number_conversions()'.
9261
9262 * error.c: Local definition of SCM_I_STRERROR and SCM_I_ERRNO
9263 and use in `(strerror)' and `(system-error)'.
9264
d6b8cf11 9265 * Makefile.am (EXTRA_libguile_la_SOURCES): Added
b4e15479
SJ
9266 `win32-socket.[ch]' to extra source and header files.
9267
7ab89df1
MV
92682001-11-06 Marius Vollmer <mvo@zagadka.ping.de>
9269
9270 * script.c (scm_shell_usage, scm_compile_shell_switches): Prepend
9271 a call to turn-on-debugging when --debug has been given instead of
9272 turning it on directly. Also, handle new `--no-debug' option,
9273 which might suppress the call to turn-on-debugging.
9274
0233bfc1
SJ
92752001-11-05 Stefan Jahn <stefan@lkcc.org>
9276
9277 * struct.c (s_scm_struct_vtable_p): Corrected docstring.
9278
8f99e3f3
SJ
92792001-11-04 Stefan Jahn <stefan@lkcc.org>
9280
9281 * Makefile.am (libguile_la_LIBADD): Added $(THREAD_LIBS_LOCAL)
d6b8cf11 9282 here (was at guile_LDADD) which describes the dependency
8f99e3f3
SJ
9283 correctly and allows a clean build on Win32.
9284
d6b8cf11 9285 * __scm.h (SCM_API): Follow-up patch. Renamed __FOO__ macros
8f99e3f3
SJ
9286 into FOO.
9287
9288 * __scm.h: USE_DLL_IMPORT indicates the usage of the DLL
9289 import macros for external libraries (libcrypt, libqthreads,
9290 libreadline and libregex).
9291
9292 * coop-defs.h: Include <winsock2.h> for `struct timeval'.
9293
9294 * posix.c (flock): Added support for flock() in M$-Windows.
9295
9296 * guile.c (SCM_IMPORT): Follow-up patch. Use SCM_IMPORT instead
9297 of __SCM_IMPORT__.
9298
9299 * fports.c (getflags): Differentiate reading and writing pipes
9300 descriptors.
9301
9302 * filesys.c (S_IS*): Redefine all of the S_IS*() macros for
9303 M$-Windows.
9304
9305 * coop.c (coop_condition_variable_timed_wait_mutex): Use
9306 conditionalized error code if `ETIMEDOUT' is not available.
9307 (scm_thread_usleep): Remove bogus declaration of `struct timeval
9308 timeout'.
9309
9310 * numbers.c (PTRDIFF_MIN): Moved this definition where it actually
9311 belongs. That is because NO_PREPRO_MAGIC gets undefined after
9312 each inclusion of `num2integral.i.c'.
9313 (SIZE_MAX): Define NO_PREPRO_MAGIC if SIZE_MAX is undefined.
9314
4e21fa60
MV
93152001-11-03 Marius Vollmer <mvo@zagadka.ping.de>
9316
9317 * eval.c (scm_m_begin): Allow `(begin)`, with no subforms.
9318 (SCM_CEVAL): Evaluate an empty `begin' to SCM_UNSPECIFIED.
9319
08112c95
MD
93202001-11-02 Mikael Djurfeldt <mdj@linnaeus>
9321
7663c008
MD
9322 * print.c (scm_iprin1): Mark print state as revealed when
9323 dispatching to generic write or display.
9324
08112c95
MD
9325 * unif.c (scm_ra2contig): Fixed memory overwrite bug.
9326
f712d833
MV
93272001-11-02 Marius Vollmer <mvo@zagadka.ping.de>
9328
9329 Support for native Win32. Thanks to Stefan Jahn!
d6b8cf11 9330
f712d833
MV
9331 * Makefile.am: Add win32-uname.c, win32-uname.h, win32-dirent.c
9332 and win32-dirent.h to extra source and header files. These
9333 include the uname() and the POSIX dirent interface implementation
9334 for M$-Windows. Put `-no-undefined' into LDFLAGS to support
9335 linkers which do not allow unresolved symbols inside shared
9336 libraries. Corrected `guile_filter_doc_snarfage$(EXEEXT)'
9337 dependency.
9338
d6b8cf11
TTN
9339 * __scm.h: Defined SCM_API. This macro gets prepended to all
9340 function and data definitions which should be exported or imported
f712d833
MV
9341 in the resulting dynamic link library in the Win32 port.
9342
9343 * __scm.h, alist.h, arbiters.h, async.h, backtrace.h, boolean.h,
d6b8cf11 9344 chars.h, continuations.h, coop-defs.h, coop-threads.h,
f712d833
MV
9345 debug-malloc.h, debug.h, deprecation.h, dynl.h, dynwind.h,
9346 environments.h, eq.h, error.h, eval.h, evalext.h, extensions.h,
9347 feature.h, filesys.h, fluids.h, fports.h, gc.h, gdb_interface.h,
9348 gdbint.h, gh.h, goops.h, gsubr.h, guardians.h, hash.h, hashtab.h,
9349 hooks.h, init.h, ioext.h, iselect.h, keywords.h, lang.h, list.h,
d6b8cf11 9350 load.h, macros.h, mallocs.h, modules.h, net_db.h, numbers.h,
f712d833
MV
9351 objects.h, objprop.h, options.h, pairs.h, ports.h, posix.h, print.h,
9352 procprop.h, procs.h, properties.h, ramap.h, random.h, rdelim.h,
9353 read.h, regex-posix.h, root.h, rw.h, scmsigs.h, script.h, simpos.h,
9354 smob.h, socket.h, sort.h, srcprop.h, stackchk.h, stacks.h, stime.h,
9355 strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h,
9356 tags.h, threads.h, throw.h, unif.h, values.h, variable.h, vectors.h,
9357 vports.h, weaks.h:
9358 Prefixed each each exported symbol with SCM_API.
9359
d6b8cf11 9360 * continuations.c: Added comment about the use of the extern
f712d833
MV
9361 declarations of {get,set}context() functions used in the ia64 port.
9362
9363 * continuations.h, gc.c: `__libc_ia64_register_backing_store_base'
9364 is meant to be a `unsigned long *'.
9365
9366 * filesys.c: Include `direct.h' if possible. Use local
9367 `win32-dirent.h' for the native M$-Windows port. Define S_IS*()
9368 macros for M$-Windows. Implementation of `fstat_Win32()' which is
9369 able to differentiate between sockets and other file descriptors.
9370 Use this function as wrapper in `scm_fstat()'. Fixed typo in
9371 `scm_dirname()'.
9372
9373 * fports.c: Include `io.h' is possible. Put `*fp' into referring
9374 statement block in `scm_fport_buffer_add()'.
9375 Some corrections in `getflags()'.
d6b8cf11 9376
f712d833
MV
9377 * gdb_interface.h (GDB_INTERFACE): Also support __CYGWIN__.
9378
9379 * guile.c: Make sure to define __SCM_IMPORT__ for shared library
9380 build on Win32. Disable preloaded symbols on Win2 platforms.
9381
9382 * ioext.c, ports.c: Include `io.h' is possible.
9383
9384 * mkstemp.c: Include `process.h' is possible.
9385
9386 * net_db.c: Disable extern declaration of `h_errno' for __CYGWIN__,
9387 too.
9388 Put `scm_return_entry()' into HAVE_GETSERVENT conditional.
9389
9390 * posix.c: Remove unnecessary dirent includes and defines. Include
9391 local `win32-uname.h' for MinGW. Extern declaration of
9392 `mkstemp()' for systems where it does not exists. Make
9393 `getlogin()' available on M$-Windows.
9394
9395 * scmsigs.c: Made `usleep()' avalable on MinGW.
9396
9397 * stime.c: On M$-Windows `tzname[]' is known to be `_tzname[]'.
9398
9399 * win32-dirent.c: Include "win32-dirent.h", not "dirent.h".
9400
9401 * win32-uname.c: Include "win32-uname.h", not "uname.h".
9402
d245ce23
MD
94032001-10-28 Mikael Djurfeldt <mdj@linnaeus>
9404
9405 * unif.c (scm_uniform_array_read_x, scm_uniform_array_write):
9406 Don't apply scm_uniform_vector_length on arrays.
9407
8ea46249
DH
94082001-10-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
9409
9410 * eval.c (scm_lookupcar, scm_m_letstar, scm_m_do, iqq,
9411 scm_m_define, scm_m_letrec1, scm_m_let, scm_m_expand_body,
9412 scm_macroexp, unmemocopy, scm_eval_args, scm_deval_args,
9413 SCM_CEVAL, scm_map, scm_init_eval): When building lists, prefer
9414 scm_list_<n> over scm_cons[2]?.
9415
9416 (scm_unmemocar, scm_m_cond, scm_m_letstar, scm_m_letrec1,
9417 scm_m_let, scm_m_atbind, unmemocopy, SCM_CEVAL, SCM_APPLY): Use
9418 SCM_C[AD][AD]R instead of explicit form.
9419
9420 (scm_m_set_x, scm_m_cond, scm_m_letstar, scm_m_do): Reordered
9421 comparison parameters.
9422
9423 (scm_m_case, scm_m_cond, scm_m_letstar, scm_m_do, SCM_CEVAL): Use
9424 !SCM_NULLP instead of SCM_NIMP.
9425
9426 (scm_m_case): Don't copy the form. Renamed proc to clause and
9427 minimized its scope. Renamed x to clauses. Removed side
9428 effecting operation from macro call.
9429
9430 (scm_m_cond): Don't copy the form. Renamed arg1 to clause and
9431 minimized its scope. Renamed x to clauses. Minimized the scope
9432 of variable 'len'. Make sure the else clause is treated specially
9433 even in case of '=>' occurences. Don't change the else to #t in
9434 order to be able to distinguish this case in the evaluator. Leave
9435 type checking of the recipient to the evaluator.
9436
9437 (scm_c_improper_memq): Made the comment somewhat clearer.
9438
9439 (scm_m_lambda): Renamed proc to formals. Removed unnecessary
9440 test for SCM_IM_LET at the place of the formal parameters.
9441 Simplified the formal parameter checking.
9442
9443 (scm_m_letstar): Added Comment. Renamed proc to bindings.
9444 Renamed arg1 to binding and minimized its scope. Eliminated
9445 unnecessary consing.
9446
9447 (scm_m_do): Renamed proc to bindings. Minimized the scope of
9448 variable 'len'.
9449
9450 (build_binding_list): New static function.
9451
9452 (unmemocopy): Don't use SCM_TYP7 on pairs (it's unclean).
9453 Further, split up the 'letrec' unmemoizing code to the
9454 corresponding parts for 'do', 'let' and 'letrec', adding comments
9455 to each form. Cleanup the handling of the do form (This removes
9456 some *real* code :-).
9457
9458 (SCM_CEVAL): Removed side effecting operation from macro call.
9459 Handle the 'else clause of the 'cond form specially - the symbol
9460 'else is not replaced with #t any more.
9461
8186c4f5
GH
94622001-10-14 Gary Houston <ghouston@arglist.com>
9463
9464 * version.c (scm_version): use sprintf instead of snprintf,
9465 for portability. thanks to Bill Schottstaedt.
9466
89759084
MD
94672001-10-14 Mikael Djurfeldt <mdj@linnaeus>
9468
9469 * read.c (scm_lreadr): When user-defined hash procedure returns
9470 SCM_UNSPECIFIED: Fall back to standard handling instead of raising
9471 an exception. (This prevents parsing of uniform vectors from
9472 interfering with parsing of numbers.)
9473
9c7ce563
MV
94742001-10-13 Marius Vollmer <mvo@zagadka.ping.de>
9475
9476 * numbers.c: Set NO_PREPRO_MAGIC when defining our version of
9477 PTRDIFF_MIN. Thanks to Ken Raeburn.
9478
94792001-10-07 Marius Vollmer <mvo@zagadka.ping.de>
9480
9481 * Makefile.am (EXTRA_libguile_la_SOURCES): Added "mkstemp.c".
9482
9483 * eval.c (scm_m_atbind): First try to find the variable without
9484 defining it locally; when it has not been found, define it
9485 locally.
9486
9487 * modules.c (module_variable): Pass over variables that exist but
9488 are unbound.
9489
94902001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
9491
9492 * backtrace.c (display_backtrace_file_and_line): Only use
9493 scm_basename when POSIX support is compiled in. Thanks to Chris
9494 Cramer.
9495
1fe5e088
DH
94962001-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9497
9498 * numbers.c (mem2uinteger): Return number read so far when coming
9499 across a hexdigit after having read a # or if not reading a hex
9500 value. This will enable the calling code to correctly handle
9501 forms like 1e2. (The background is, that the exponent markers d,
9502 e and f are also hexdigits.) Thanks to Mikael Djurfeldt for
9503 providing this patch.
9504
9505 (mem2complex): Fix erroneous double-negation. Now, numbers like
9506 1-i will be read correctly.
9507
68665a97
MD
95082001-10-12 Mikael Djurfeldt <mdj@linnaeus>
9509
9510 * debug.c (scm_mem_to_proc): Fixed typo in previous change.
9511
9512 * validate.h (SCM_VALIDATE_DOUBLE_DEF_COPY): New macro.
9513
d5cf5324
DH
95142001-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
9515
9516 * print.c (scm_print_state_vtable, print_state_pool):
9517 Initialize. These variables are now registered as gc roots.
9518
9519 (scm_current_pstate): Update documentation.
9520
9521 (scm_current_pstate, scm_make_print_state, scm_free_print_state,
9522 scm_prin1, scm_init_print): print_state_pool is registered as a
9523 gc root and thus does not need to be protected by a surrounding
9524 pair any more.
9525
9526 (make_print_state): The car of print_state_pool no longer holds
9527 the scm_print_state_vtable.
9528
9529 (scm_current_pstate, scm_make_print_state, print_circref,
9530 scm_iprin1, scm_prin1, scm_iprlist): Prefer !SCM_<foo> over
9531 SCM_N<foo>.
9532
9533 (scm_prin1): When building lists, prefer scm_list_<n> over
9534 scm_cons[2]?.
9535
9536 (scm_iprlist): Removed a redundant SCM_IMP test.
9537
9538 (scm_simple_format): Use SCM_EQ_P to compare SCM values.
9539
37c56aec
DH
95402001-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
9541
9542 * debug.c (scm_make_iloc): Prefer !SCM_<foo> over SCM_N<foo>.
9543
9544 (scm_memcons, scm_mem_to_proc): When building lists, prefer
9545 scm_list_<n> over scm_cons[2]?.
9546
9547 (scm_mem_to_proc): Prefer SCM_CONSP over SCM_NIMP.
9548
9549 (scm_procedure_name): Use SCM_CADR instead of explicit form.
9550
9551 (debugobj_print): Coerce scm_intprint arg 1 to long, not int.
9552 Thanks to Rob Browning for the patch (see log entry 2001-09-21) -
9553 for some reason his patch didn't make it into the cvs.
9554
79d34f68
DH
95552001-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
9556
9557 * numbers.c (mem2decimal_from_point): Cleaned up the parsing a
9558 little bit - should even be somewhat more accurate now.
9559
5e137c65
RB
95602001-10-08 Rob Browning <rlb@defaultvalue.org>
9561
9562 * gc.c: support ia64 register backing store.
9563 (SCM_MARK_BACKING_STORE): new macro.
9564
9565 * continuations.h: support ia64 register backing store.
9566 (struct scm_t_contregs): add ia64 register backing store.
9567
9568 * continuations.c: support ia64 register backing store.
9569 (continuation_mark): mark ia64 register backing store.
9570 (continuation_free): free ia64 register backing store.
9571 (scm_make_continuation): capture ia64 register backing store.
9572 (copy_stack_and_call): copy ia64 register backing store.
9573
ee083ac2
DH
95742001-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
9575
9576 * hashtab.c (scm_hash_fn_create_handle_x): The result of assoc_fn
9577 is known to be #f if no entry is found. Thus, use !SCM_FALSEP
9578 instead of SCM_NIMP to test for that case.
9579
9580 * strings.h (SCM_SET_STRING_LENGTH): Cast the length to
9581 scm_t_bits instead of long.
9582
71dcdbf9
MV
95832001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
9584
9585 * tags.h (SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
9586 SCM_T_SIGNED_BITS_MIN): New.
9587 * numbers.h (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM):
9588 Use them to make these macros computable by the preprocessor.
9589
9590 * num2integral.i.c (INTEGRAL2NUM): Let the preprocessor test
9591 whether the integral type fits in a fixnum, not the compiler.
9592 This removes a spurious compiler warning. Also, honor the
9593 NO_PREPRO_MAGIC flag to suppress any preprocessor tests. This is
9594 needed for `long long's.
9595
9596 * numbers.c: Define NO_PREPRO_MAGOC when including
9597 num2integral.c.i for `long long' and `signed long long'.
9598
152812c0
MD
95992001-10-06 Mikael Djurfeldt <mdj@linnaeus>
9600
9601 These changes fixes a race condition in the Guile coop - pthread
9602 compatibility code.
d6b8cf11 9603
152812c0
MD
9604 * coop.c (mother_awake_p): New variable.
9605 (coop_create): Set mother_awake_p before creating or signalling
9606 mother; wait until mother is going to sleep before returning.
9607 (mother): Reset mother_awake_p before going to sleep.
9608
11d49f54
DH
96092001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
9610
9611 * options.c (protected_objects, scm_init_options): The content of
9612 protected_objects is now protected from garbage collection using
9613 scm_gc_register_root instead of scm_permanent_object.
9614
9615 (get_option_setting): New static function that computes an option
9616 setting as it was formerly done in the function scm_options.
9617
9618 (get_documented_option_setting): New static function that
9619 returns option documentation as it was formerly done in the
9620 function scm_options. Note that documentation C strings are no
9621 longer precomputed into SCM objects. Instead, they are converted
9622 into SCM strings every time get_documented_option_setting is
9623 called.
9624
9625 (change_option_setting): New static functions that modifies the
9626 option setting as it was formerly done in the function
9627 scm_options. The function is now exception safe, i. e. won't
9628 cause a memory leak when interrupted. Further, only non-immediate
9629 option values are added to the protection list.
9630
9631 (scm_options): This function now has only the purpose to dispatch
9632 to to get_option_setting, get_documented_option_setting or
9633 change_option_setting, depending on the arguments given to
9634 scm_options.
9635
9636 (scm_init_opts): Don't convert documentation C strings into SCM
9637 strings. Further, don't protect any object values: They _must_
9638 be immediate values, otherwise there is no guarantee that they
9639 have not been collected before anyway.
9640
9641 * options.[ch] (scm_t_option): Made type unsigned, name into a
9642 constant char* and val into a scm_t_bits type.
9643
9644 (scm_options, scm_init_opts): The number of options is guaranteed
9645 to be larger or equal to zero. Thus, the type is changed to
9646 unsigned.
9647
3dbacabc
DH
96482001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
9649
9650 * num2integral.i.c (NUM2INTEGRAL): Eliminated some warnings about
9651 testing an unsigned value for being >= 0.
9652
14282d0f
DH
96532001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
9654
9655 * numbers.h: Removed old comment about using SCM_CAR to access
9656 non-pair cells.
9657
9658 (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM): Make sure
9659 the return value is signed. Thanks to Brian Crowder for the bug
9660 report.
9661
9662 (SCM_SRS): Avoid unnecessary casting and don't unpack input
9663 values. With this patch, SCM_SRS can be safely used for other
9664 types than scm_t_signed_bits. However, it should still better be
9665 an internal macro and thus be renamed to SCM_I_SRS.
9666
9667 (SCM_MAKINUM, SCM_INUM): Use proper casting.
9668
2dbec7b5
GH
96692001-10-03 Gary Houston <ghouston@arglist.com>
9670
9671 * continuations.h, unif.h: in the descriptions of the bit patterns
9672 of the heap cells, make bit 0 the least significant.
9673
cf4ee841
TTN
96742001-09-25 Thien-Thi Nguyen <ttn@glug.org>
9675
9676 * chars.h (SCM_MAKE_CHAR): Use `scm_t_bits' instead of `intptr_t'.
9677 Thanks to Golubev I. N.
9678
4a151b3d
GH
96792001-09-25 Gary Houston <ghouston@arglist.com>
9680
9681 * ports.c (scm_drain_input): extended the docstring. thanks to
9682 Alex Schroeder and Thien-Thi Nguyen.
9683
581ded70
MD
96842001-09-23 Mikael Djurfeldt <mdj@linnaeus>
9685
9686 * validate.h (SCM_NUM2FLOAT, SCM_NUM2DOUBLE,
9687 SCM_VALIDATE_FLOAT_COPY, SCM_VALIDATE_DOUBLE_COPY): New
9688 macros. (The NUM names might soon change.)
9689
9690 * numbers.h: Added missing declarations.
9691
5437598b
MD
96922001-09-22 Mikael Djurfeldt <mdj@linnaeus>
9693
9694 * Makefile.am: Distribute num2float.i.c.
9695
9696 * num2float.i.c: New file, multiply included by numbers.c, used
9697 to "templatize" the float <-> num conversion routines.
9698
9699 * numbers.c: New functions: scm_num2float, scm_float2num,
9700 scm_num2double, scm_double2num.
9701
0b073f0f
RB
97022001-09-21 Rob Browning <rlb@defaultvalue.org>
9703
9704 * .cvsignore: really add version.h
9705
9706 * strings.h (SCM_SET_STRING_LENGTH): coerce "l" to a long.
9707 Otherwise it fails on the alpha. However, we might rather choose
9708 this size conditionally.
9709
9710 * numbers.c (scm_gcd): change "k" to a long from an int.
9711 Otherwise it fails on the alpha. However, we might rather choose
9712 this size conditionally.
9713
9714 * error.c (scm_wta): coerce char* to intptr_t before int
9715 assignment.
9716
9717 * debug.c (debugobj_print): coerce scm_intprint arg 1 to long, not
9718 int.
9719
9720 * chars.h (SCM_MAKE_CHAR): coerce value to intptr_t.
9721
2830fd91
MD
97222001-09-20 Mikael Djurfeldt <mdj@linnaeus>
9723
9724 * numbers.c (scm_integer_expt): Accept inexact integer in second
9725 argument. (Thanks to Bill Schottstaedt.)
9726
c13f0a90
RB
97272001-09-20 Rob Browning <rlb@defaultvalue.org>
9728
9729 * .cvsignore: add version.h
9730
9731 * versiondat.h.in: removed (obsolete).
9732
9733 * version.h.in: renamed from version.h.
9734 (SCM_GUILE_MAJOR_VERSION): new public macro.
9735 (SCM_GUILE_MINOR_VERSION): new public macro.
9736 (SCM_GUILE_MICRO_VERSION): new public macro.
9737
9738 * version.h: renamed to version.h.in.
9739
9740 * version.c
9741 (scm_major_version): support integer *_VERSION macros.
9742 (scm_minor_version): support integer *_VERSION macros.
9743 (scm_micro_version): support integer *_VERSION macros.
9744 (scm_version): support integer *_VERSION macros.
9745
147c18a0
MD
97462001-09-20 Mikael Djurfeldt <mdj@linnaeus>
9747
9748 * error.c, error.h: Made error keys globally accessible.
9749 Applications might want to test for these or use them in a direct
9750 call to scm_error.
9751
9752 * num2integral.i.c (NUM2INTEGRAL): Report an error when these
9753 routines are passed an inexact. This change in behavior is
9754 motivated by concordance with R5RS: It is more common that a
9755 primitive doesn't want to accept an inexact for an exact.
9756
662c5539
DH
97572001-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
9758
9759 The following patch partially undoes my patch from 2001-06-30,
9760 where I added the function scm_gc_mark_cell_conservatively. The
9761 function is buggy, since it breaks guile during conservative
9762 marking if a pointer on the stack points directly into the list of
9763 free cells on the heap: With conservative cell marking this will
9764 cause the whole free list to be scanned and marked - boom!
9765
9766 * gc.c (allocated_mark, MARK, heap_segment,
9767 scm_gc_mark_cell_conservatively, scm_init_storage), gc.h
cf4ee841 9768 (scm_gc_mark_cell_conservatively): Remove function
662c5539
DH
9769 scm_gc_mark_cell_conservatively and update the corresponding
9770 comments and uses accordingly. Thanks to Christopher Cramer for
9771 the patch. (Minor corrections by me.)
9772
6c1b7628
GH
97732001-09-15 Gary Houston <ghouston@arglist.com>
9774
9775 * root.h (scm_root_state): removed the continuation_stack and
9776 continuation_stack_ptr members, which have no apparent purpose.
9777 (scm_continuation_stack, scm_continuation_stack_ptr): #defines
9778 removed.
662c5539 9779
6c1b7628
GH
9780 * root.c (root_mark), init.c (restart_stack, start_stack), gc
9781 (scm_igc): remove all references to contination_stack and
9782 continuation_stack_ptr, avoiding allocation of a vector and
9783 useless processing during gc.
9784
455c0ac8
DH
97852001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9786
9787 * guardians.c (tconc_t, t_tconc): Renamed tconc_t to t_tconc.
9788
9789 (TCONC_IN): Make sure that the cell word 0 is initialized last.
9790
9791 (guardians_t, t_guardians): Renamed guardians_t to t_guardians.
9792
9793 (GUARDIAN, GUARDIAN_DATA): Renamed GUARDIAN to GUARDIAN_DATA.
9794
9795 (guardian_apply, scm_get_one_zombie, scm_make_guardian,
9796 mark_and_zombify): Prefer !SCM_<foo> over SCM_N<foo>.
9797
22ba637b
DH
97982001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9799
9800 * guardians.c (mark_dependencies_in_tconc,
9801 whine_about_self_centered_zombies, scm_init_guardians): Register
9802 the static global variable `self_centered_zombies' via
9803 scm_gc_register_root, to make some cdr-ing unnecessary.
9804
c3c4d801
DH
98052001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9806
9807 * backtrace.c (display_backtrace_file,
9808 display_backtrace_file_and_line): Use SCM_EQ_P when comparing SCM
9809 values, use SCM_FALSEP when comparing SCM values against #f.
9810 Thanks to Rob Browning for the bug report.
9811
b00418df
DH
98122001-09-12 Martin Baulig <martin@home-of-linux.org>
9813
9814 * strings.[ch] (scm_str2string): New function.
9815
a0d34a0b
MV
98162001-09-06 Marius Vollmer <mvo@zagadka.ping.de>
9817
9818 * gc.c (scm_done_free): Always subtract size from scm_mallocated
9819 when computing nm, even if it's negative.
9820 (scm_must_malloc): Abort on overflow of scm_mtrigger.
9821 (scm_must_realloc): Likewise.
9822
b10586f0
ML
98232001-09-01 Michael Livshin <mlivshin@bigfoot.com>
9824
9825 * numbers.c (scm_sys_check_number_conversions): new function,
9826 defined if Guile is compiled in debugging mode. currently checks
9827 `scm_num2ulong', should check much much more.
9828
9829 * num2integral.i.c (NUM2INTEGRAL): when converting a bignum to
9830 unsigned, ensure that it's positive. thanks to Martin Baulig!
cf4ee841 9831
8c494e99
DH
98322001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
9833
9834 * __scm.h: Added new section about compile time selectable
9835 features.
9836
9837 (long_long, ulong_long, scm_sizet, SCM_WNA, SCM_OUTOFRANGE,
9838 SCM_NALLOC, SCM_HUP_SIGNAL, SCM_INT_SIGNAL, SCM_FPE_SIGNAL,
9839 SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL, SCM_GC_SIGNAL,
9840 SCM_TICK_SIGNAL, SCM_SIG_ORD, SCM_ORD_SIG, SCM_NUM_SIGS):
9841 Removed.
9842
9843 * deprecation.c (scm_include_deprecated_features): Simplified.
9844
9845 * eval.c (EVALCAR, unmemocopy), eval.h (SCM_XEVALCAR): Use
9a5fa6e9 9846 `SCM_IMP' instead of `!SCM_CELLP´.
8c494e99
DH
9847
9848 * eval.c (unmemocopy): Eliminate redundant SCM_CELLP tests.
9849 Extract side-effecting operations from macros.
9850
9851 (scm_init_eval): Don't initialize *top-level-lookup-closure*,
9852 scm_top_level_lookup_closure_var and scm_system_transformer.
9853
9854 * gc.c (CELL_P): New local definition to replace SCM_CELLP.
9855
9856 (heap_segment): Use CELL_P instead of SCM_CELLP.
9857
9858 * init.c (start_stack): Don't initialize
9859 scm_top_level_lookup_closure_var and scm_system_transformer.
9860
9861 * modules.c (scm_set_current_module): Don't access
9862 scm_top_level_lookup_closure_var and scm_system_transformer.
9863
9864 (scm_sym2var): Don't call scm_variable_set_name_hint.
9865
9866 (scm_post_boot_init_modules): Removed deprecated initializations.
9867
9868 * print.c (scm_ipruk): Don't access cell contents of non cells.
9869
9870 * strings.c (scm_string_set_x): All strings are writable.
9871
9872 * strings.h (SCM_STRINGP): Use SCM_TYP7 to determine the string
9873 type. There is only one string type now.
9874
9875 (SCM_STRING_COERCE_0TERMINATION_X): Deprecated.
9876
9877 * tags.h: Remove comments about two different string types.
9878
9879 (SCM_CELLP, SCM_NCELLP): Deprecated.
9880
9881 * variable.c (make_variable): Remove code variant for vcells.
9882
9883 * variable.h (SCM_VARIABLE_REF, SCM_VARIABLE_SET,
9884 SCM_VARIABLE_LOC): Remove code variant for vcells.
9885
9886 * __scm.h, deprecation.[ch]: Renamed SCM_DEBUG_DEPRECATED to
9887 SCM_ENABLE_DEPRECATED with the logic reversed.
9888
9889 * dynl.c (moddata, registered_mods), dynl.[ch]
9890 (scm_register_module_xxx, scm_registered_modules,
9891 scm_clear_registered_modules), error.[ch] (scm_wta), eval.c
9892 (*top-level-lookup-closure*), eval.[ch]
9893 (scm_top_level_lookup_closure_var, scm_system_transformer,
9894 scm_eval_3, scm_eval2), gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR,
9895 SCM_SETAND_CDR, SCM_SETOR_CDR, SCM_FREEP, SCM_NFREEP,
9896 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
9897 SCM_GCCDR), gc.[ch] (scm_remember, scm_protect_object,
9898 scm_unprotect_object), modules.c (root_module_lookup_closure,
9899 scm_sym_app, scm_sym_modules, module_prefix, make_modules_in_var,
9900 beautify_user_module_x_var, try_module_autoload_var,
9901 scm_module_full_name), modules.[ch] (scm_the_root_module,
9902 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
cf4ee841 9903 ports.h (scm_port, scm_ptob_descriptor, scm_port_rw_active),
8c494e99
DH
9904 ports.[ch] (scm_close_all_ports_except), random.h (scm_rstate,
9905 scm_rng, scm_i_rstate), strings.h (SCM_SLOPPY_STRINGP,
9906 SCM_RWSTRINGP, SCM_STRING_UCHARS, SCM_STRING_CHARS), strings.[ch]
9907 (scm_read_only_string_p, scm_makstr, scm_makfromstr,
9908 scm_make_shared_substring), tags.h (scm_tc7_substring,
9909 SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP, scm_tc7_ssymbol,
9910 scm_tc7_msymbol, scm_tcs_symbols), variable.c (sym_huh),
9911 variable.[ch] (scm_variable_set_name_hint, scm_builtin_variable),
9912 variable.h (SCM_VARVCELL, SCM_UDVARIABLEP, SCM_DEFVARIABLEP):
9913 Removed.
9914
9915 * dynl.c (scm_dynamic_link, scm_dynamic_func), error.c
9916 (scm_error_scm), filesys.c (scm_chown, scm_chmod, scm_open_fdes,
9917 scm_stat, scm_link, scm_rename, scm_delete_file, scm_mkdir,
9918 scm_rmdir, scm_opendir, scm_chdir, scm_symlink, scm_readlink,
9919 scm_lstat, scm_copy_file), fports.c (scm_open_file), ioext.c
9920 (scm_fdopen), net_db.c (scm_gethost, scm_getnet, scm_getproto,
9921 scm_getserv), ports.c (scm_truncate_file, scm_sys_make_void_port),
9922 posix.c (scm_getpwuid, scm_getgrgid, scm_execl, scm_execlp,
9923 scm_execle, scm_mkstemp, scm_utime, scm_access, scm_setlocale,
9924 scm_mknod, scm_crypt, scm_chroot, scm_getpass, scm_sethostname),
9925 regex-posix.c (scm_make_regexp, scm_regexp_exec), simpos.c
9926 (scm_system, scm_getenv), socket.c (scm_inet_aton), stime.c
9927 (setzone, scm_strftime, scm_strptime), vports.c
9928 (scm_make_soft_port): Remove calls to
9929 SCM_STRING_COERCE_0TERMINATION_X. Since the substring type is
9930 gone, all strings are 0-terminated anyway.
9931
9932 * dynl.h (LIBGUILE_DYNL_H, SCM_DYNL_H), random.h (RANDOMH,
9933 SCM_RANDOM_H): Renamed the macros that are defined to inhibit
9934 double inclusion of the same headers to the SCM_<filename>_H
9935 format.
9936
9937 * eval.c (SCM_CEVAL), gc.c (MARK, scm_gc_sweep), gh_data.c
9938 (gh_scm2chars), hash.c (scm_hasher), objects.c (scm_class_of),
9939 print.c (scm_iprin1): The type scm_tc7_substring does not exist
9940 any more.
9941
9942 * ports.h (SCM_PORTP, SCM_OPPORTP, SCM_OPINPORTP, SCM_OPOUTPORTP,
9943 SCM_INPUT_PORT_P, SCM_OUTPUT_PORT_P, SCM_OPENP), tags.h
9944 (SCM_TYP16_PREDICATE), variable.h (SCM_VARIABLEP): Prefer
9945 !SCM_<foo> over SCM_N<foo>.
9946
dee01b01
DH
99472001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
9948
9949 * Makefile.am: Remove references to symbols-deprecated.c.
9950
9951 * symbols.c (scm_init_symbols): Don't initialize deprecated
9952 symbol functions.
9953
9954 * symbols-deprecated.c: Removed.
9955
9956 * fluids.[ch] (scm_internal_with_fluids), gsubr.[ch]
9957 (scm_make_gsubr, scm_make_gsubr_with_generic), hooks.[ch]
9958 (scm_create_hook), list.c (list*), list.h (SCM_LIST[0-9],
9959 scm_listify), list.[ch] (scm_sloppy_memq, scm_sloppy_memv,
9960 scm_sloppy_member), load.c (scm_end_of_file_key), load.[ch]
9961 (scm_read_and_eval_x), numbers.[ch] (scm_mkbig, scm_big2inum,
9962 scm_adjbig, scm_normbig, scm_copybig, scm_2ulong2big, scm_dbl2big,
9963 scm_big2dbl), numbers.h (SCM_FIXNUM_BIT), procs.h
9964 (scm_subr_entry, SCM_SUBR_DOC), procs.[ch] (scm_make_subr_opt,
9965 scm_make_subr, scm_make_subr_with_generic), root.c (setjmp_type,
9966 setjmp_type), root.[ch] (scm_call_catching_errors), smob.[ch]
9967 (scm_make_smob_type_mfpe, scm_set_smob_mfpe), strports.[ch]
9968 (scm_strprint_obj, scm_read_0str, scm_eval_0str), symbols.h
9969 (SCM_CHARS, SCM_UCHARS, SCM_SETCHARS, SCM_SLOPPY_SUBSTRP,
9970 SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_LENGTH_MAX, SCM_LENGTH,
9971 SCM_SETLENGTH, SCM_ROSTRINGP, SCM_ROLENGTH, SCM_ROCHARS,
9972 SCM_ROUCHARS, SCM_SUBSTRP, SCM_COERCE_SUBSTR, scm_strhash,
9973 scm_sym2vcell, scm_sym2ovcell_soft, scm_sym2ovcell,
9974 scm_intern_obarray_soft, scm_intern_obarray, scm_intern,
9975 scm_intern0, scm_sysintern, scm_sysintern0,
9976 scm_sysintern0_no_module_lookup, scm_symbol_value0,
9977 scm_string_to_obarray_symbol, scm_intern_symbol,
9978 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
9979 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp,
9980 scm_init_symbols_deprecated), vectors.c (s_vector_set_length_x),
9981 vectors.[ch] (scm_vector_set_length_x): Removed.
9982
9983 * fluids.h (FLUIDSH, SCM_FLUIDS_H), gsubr.c (GSUBRH, SCM_GSUBR_H),
9984 list.h (LISTH, SCM_LIST_H), load.h (LOADH, SCM_LOAD_H), root.h
9985 (ROOTH, SCM_ROOT_H), strports.h (STRPORTSH, SCM_STRPORTS_H):
9986 Renamed the macros that are defined to inhibit double inclusion of
9987 the same headers to the SCM_<filename>_H format.
9988
9989 * procs.h (SCM_CLOSUREP, SCM_PROCEDURE_WITH_SETTER_P), symbols.h
9990 (SCM_SYMBOLP), vectors.h (SCM_VECTORP): Prefer !SCM_<foo> over
9991 SCM_N<foo>.
9992
b29058ff
DH
99932001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
9994
9995 * continuations.h (scm_contregs), debug.h (scm_debug_info,
9996 scm_debug_frame, SCM_DSIDEVAL), filesys.h (SCM_OPDIRP), fports.h
9997 (scm_fport), options.h (scm_option), snarf.h (SCM_CONST_LONG,
9998 SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
9999 SCM_GLOBAL_VCELL_INIT), srcprop.h (scm_srcprops,
10000 scm_srcprops_chunk), stacks.h (scm_info_frame, scm_stack), unif.h
10001 (scm_array, scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_HUGE_LENGTH),
10002 validate.h (SCM_FUNC_NAME, SCM_WTA, RETURN_SCM_WTA,
10003 SCM_VALIDATE_NUMBER_COPY, SCM_VALIDATE_NUMBER_DEF_COPY,
10004 SCM_VALIDATE_STRINGORSUBSTR, SCM_VALIDATE_ROSTRING,
10005 SCM_VALIDATE_ROSTRING_COPY, SCM_VALIDATE_NULLORROSTRING_COPY,
10006 SCM_VALIDATE_RWSTRING, SCM_VALIDATE_OPDIR): Removed.
10007
10008 * continuations.h (CONTINUATIONSH, SCM_CONTINUATIONS_H), filesys.h
10009 (FILESYSH, SCM_FILESYS_H), fports.h (FPORTSH, SCM_FPORTS_H),
10010 options.h (OPTIONSH, SCM_OPTIONS_H), regex-posix.h (REGEXPOSIXH,
10011 SCM_REGEX_POSIX_H), snarf.h (LIBGUILE_SNARF_H, SCM_SNARF_H),
10012 srcprop.h (SCM_SOURCE_PROPERTIES_H, SCM_SRCPROP_H), unif.h
10013 (SCM_UNIFORM_VECTORS_H, SCM_UNIF_H), validate.h (SCM_VALIDATE_H__,
10014 SCM_VALIDATE_H): Renamed the macros that are defined to inhibit
10015 double inclusion of the same headers to the SCM_<filename>_H
10016 format.
10017
10018 * debug.h (SCM_RESET_DEBUG_MODE), regex-posix.h (SCM_RGXP),
10019 srcprop.h (SRCBRKP, PROCTRACEP), struct.h (SCM_STRUCTP),
10020 validate.h (SCM_VALIDATE_THUNK, SCM_VALIDATE_ARRAY,
10021 SCM_VALIDATE_VECTOR_OR_DVECTOR, SCM_VALIDATE_VTABLE): Prefer
10022 !SCM_<foo> over SCM_N<foo>.
10023
0527e687
DH
100242001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10025
10026 * _scm.h (_SCMH, SCM__SCM_H), alist.h (ALISTH, SCM_ALIST_H),
10027 arbiters.h (ARBITERSH, SCM_ARBITERS_H), backtrace.h (BACKTRACEH,
10028 SCM_BACKTRACE_H), boolean.h (BOOLEANH, SCM_BOOLEAN_H), chars.h
10029 (SCM_CHARSH, SCM_CHARS_H), coop-defs.h (COOP_DEFSH,
10030 SCM_COOP_DEFS_H), coop-threads.h (COOP_THREADSH,
10031 SCM_COOP_THREADS_H), debug-malloc.h (DEBUGMALLOCH,
10032 SCM_DEBUG_MALLOC_H), dynwind.h (DYNWINDH, SCM_DYNWIND_H),
10033 environments.h (ENVIRONMENTS_H, SCM_ENVIRONMENTS_H), eq.h (EQH,
10034 SCM_EQ_H), evalext.h (EVALEXTH, SCM_EVALEXT_H), extensions.h
10035 (LIBGUILE_EXTENSIONS_H, SCM_EXTENSIONS_H), feature.h (FEATUREH,
10036 SCM_FEATURE_H), gdbint.h (GDBINTH, SCM_GDBINT_H), guardians.h
10037 (SCM_GUARDIANH, SCM_GUARDIANS_H), hash.h (HASHH, SCM_HASH_H),
10038 hashtab.h (HASHTABH, SCM_HASHTAB_H), init.h (INITH, SCM_INIT_H),
10039 ioext.h (IOEXTH, SCM_IOEXT_H), iselect.h (ISELECTH,
10040 SCM_ISELECT_H), keywords.h (KEYWORDSH, SCM_KEYWORDS_H), lang.h
10041 (LANGH, SCM_LANG_H), mallocs.h (MALLOCSH, SCM_MALLOCS_H), net_db.h
10042 (SCM_NETDBH, SCM_NET_DB_H), objprop.h (OBJPROPH, SCM_OBJPROP_H),
10043 posix.h (POSIXH, SCM_POSIX_H), procprop.h (PROCPROPH,
10044 SCM_PROCPROP_H), properties.h (PROPERTIES_H, SCM_PROPERTIES_H),
10045 ramap.h (RAMAPH, SCM_RAMAP_H), rdelim.h (SCM_RDELIM,
10046 SCM_RDELIM_H), read.h (READH, SCM_READ_H), rw.h (SCM_RW,
10047 SCM_RW_H), scmsigs.h (SCMSIGSH, SCM_SCMSIGS_H), script.h (SCRIPTH,
10048 SCM_SCRIPT_H), simpos.h (SIMPOSH, SCM_SIMPOS_H), socket.h
10049 (SCM_SOCKETH, SCM_SOCKET_H), sort.h (SORTH, SCM_SORT_H),
10050 stackchk.h (STACKCHKH, SCM_STACKCHK_H), stime.h (STIMEH,
10051 SCM_STIME_H), strop.h (STROPH, SCM_STROP_H), strorder.h
10052 (STRORDERH, SCM_STRORDER_H), threads.h (THREADSH, SCM_THREADS_H),
10053 throw.h (THROWH, SCM_THROW_H), version.h (VERSIONH,
10054 SCM_VERSION_H), vports.h (VPORTSH, SCM_VPORTS_H): Renamed
10055 the macros that are defined to inhibit double inclusion of the
10056 same headers to the SCM_<filename>_H format.
10057
fada26b2
MV
100582001-08-27 Marius Vollmer <mvo@zagadka.ping.de>
10059
10060 * ports.c, ports.h, fprots.c, gc.c, ioext.c: Replaced
10061 "scm_t_portable" with "scm_port_table" which was an artifact from
10062 the great "scm_*_t -> scm_t_" renaming.
10063
e4d1c1ea
TTN
100642001-08-25 Thien-Thi Nguyen <ttn@revel.glug.org>
10065
10066 * gc_os_dep.c (GC_noop1): Move before `GC_find_limit' where it is
10067 used; nfc. Thanks to Bill Schottstaedt.
10068
10069 * validate.h (SCM_VALIDATE_USHORT_COPY, SCM_VALIDATE_SHORT_COPY,
10070 SCM_VALIDATE_UINT_COPY, SCM_VALIDATE_INT_COPY): New macros.
10071 Thanks to Chris Cramer.
10072
b573e744
MV
100732001-08-25 Marius Vollmer <mvo@zagadka.ping.de>
10074
10075 * Makefile.am (AUTOMAKE_OPTIONS): Change "foreign" to "gnu".
10076
10077 * eval.c (scm_m_atbind): Redesigned to behvae like `let', but with
10078 dynamic scope.
10079 * dynwind.h (scm_swap_bindings): Declare.
10080 * dynwind.c (scm_swap_bindings): Make non-static.
10081
8a3e715b
ML
100822001-08-25 Michael Livshin <mlivshin@bigfoot.com>
10083
10084 * gc.c (scm_gc_sweep): now can sweep unreachable variables (by
10085 doing exactly nothing about them). thanks Neil!
10086
cf504ee0
NJ
100872001-08-18 Neil Jerram <neil@ossau.uklinux.net>
10088
10089 * __scm.h (SCM_ENABLE_VCELLS): Fix spelling mistake in comment.
ec2667f0 10090
43b83b54
TTN
100912001-08-17 Thien-Thi Nguyen <ttn@revel.glug.org>
10092
10093 * gc.c: Fix omission bug: Add `heap_segment' forward decl
10094 (proto) in the case when either `GUILE_DEBUG' or
10095 `GUILE_DEBUG_FREELIST' preprocessor symbols are defined.
10096
10097 (map_free_list): Fix typo: Ref `f' correctly.
10098
10099 Thanks to Chris Cramer.
10100
ab4cd34b
RB
101012001-08-15 Rob Browning <rlb@defaultvalue.org>
10102
10103 * Makefile.am (libguile_la_LDFLAGS): use libtool interface version
10104 variables.
10105 (libpath.h): change libguileversion to libguileinterface.
10106
b754e3d1
MV
101072001-08-07 Marius Vollmer <mvo@zagadka.ping.de>
10108
10109 * Makefile.am (EXTRA_DIST): Distribute ChangeLog-1996-1999 and
10110 ChangeLog-2000. Thanks to Daniel Skarda!
10111
8b1d12c7
ML
101122001-08-07 Michael Livshin <mlivshin@bigfoot.com>
10113
10114 * guile-snarf-docs-texi.in: don't call the tokenizer here, we now
10115 do it from the Makefile.
10116
10117 * Makefile.am: rearrange the snarfing slightly, so that .doc files
10118 are of a reasonable size.
10119
baffb19f
NJ
101202001-08-02 Neil Jerram <neil@ossau.uklinux.net>
10121
10122 * stacks.c (scm_make_stack): Improve docstring by explaining use
10123 of cutting args.
10124
c1151355
MV
101252001-08-01 Marius Vollmer <mvo@zagadka.ping.de>
10126
10127 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
10128 scm_char_whitespace_p, scm_char_upper_case_p,
10129 scm_char_lower_case_p, scm_char_is_both_p): Do not require
10130 characters to fulfill isascii in addition to the primary
10131 predicate.
10132
3c9a524f
DH
101332001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10134
10135 * numbers.c (DIGITS, scm_small_istr2int, scm_istr2int,
10136 scm_istr2flo, scm_istring2number): Removed.
10137
10138 (iflo2str, scm_real_p, scm_integer_p): Use SCM_<foo> instead of
10139 SCM_SLOPPY_<foo>.
10140
10141 (t_exactness, t_radix, DIGIT2UINT, XDIGIT2UINT, mem2uinteger,
10142 mem2decimal_from_point, mem2ureal, mem2complex, scm_i_mem2number):
10143 Added.
10144
10145 (scm_string_to_number): Use new number parser.
10146
10147 (scm_exact_to_inexact): Replace dummy by a GPROC, which also
10148 handles complex numbers.
10149
10150 * numbers.h (NUMBERSH, SCM_NUMBERS_H): Rename <foo>H to
10151 SCM_<foo>_H.
10152
10153 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Prefer !SCM_<pred> over
10154 SCM_N<pred>.
10155
10156 (scm_istr2int, scm_istr2flo, scm_istring2number): Removed.
10157
10158 (scm_i_mem2number): Added.
10159
10160 (scm_exact_to_inexact): Changed signature.
10161
10162 * read.c (scm_lreadr): Perform the shortcut test for '+ and '-
10163 here instead of within scm_i_mem2number. Call scm_i_mem2number
10164 instead of scm_istr2int and scm_istring2number.
10165
01f11e02
DH
101662001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10167
10168 * eval.c (scm_lookupcar, scm_m_body, scm_m_lambda, unmemocopy,
10169 scm_unmemocopy, scm_badargsp, scm_eval_body, CHECK_EQVISH,
10170 SCM_CEVAL, scm_nconc2last, SCM_APPLY, scm_copy_tree): Prefer
10171 !SCM_<pred> over SCM_N<pred>.
10172
10173 (scm_eval_body): Remove side effecting code from macro call.
10174
10175 (SCM_CEVAL, SCM_APPLY): Remove goto statement and redundant
10176 SCM_NIMP test.
10177
6cf69537
DH
101782001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10179
10180 * pairs.h (SCM_VALIDATE_PAIR): Use SCM_CONSP, not SCM_ECONSP.
10181
54866b6c
MV
101822001-07-29 Marius Vollmer <mvo@zagadka.ping.de>
10183
10184 Removed vcell slot from structs.
43b83b54 10185
54866b6c
MV
10186 * struct.h (scm_vtable_index_vcell): Removed. Renumbered
10187 subsequent indices.
10188
10189 * struct.c (scm_struct_vtable_p): Do not check vcell slot for
10190 zero. Use scm_vtable_index_layout instead of "0" when accessing
10191 said slot.
10192 (scm_init_struct): Remove vcell slot layout code from
10193 required_vtable_fields.
10194
10195 * objects.h (scm_si_redefined, scm_si_hashsets): Renumbered.
10196
10197 * goops.c (build_class_class_slots): Removed vcell slot
10198 definition.
10199
10200 * goops.h: Renumbered slot indices. (SCM_CLASS_CLASS_LAYOUT):
10201 Removed vcell slot layout code.
10202 (scm_si_vcell): Removed.
10203
5b54c4da
MV
102042001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
10205
a0f5718e 10206 "Glocs" have been removed.
43b83b54 10207
a0f5718e
MV
10208 * tags.h: Update tag system docs.
10209 (scm_tc3_cons_gloc): Renamed to scm_tc3_struct. Changed all uses.
10210 (scm_tcs_cons_gloc): Renamed to scm_tcs_struct. Changed all uses.
10211 (SCM_ECONSP, SCM_NECONSP): Removed. Changed all uses to SCM_CONSP
10212 or SCM_NCONSP, respectively.
10213
10214 * struct.c, struct.h, srcprop.c, procs.c, procprop.c, print.c,
10215 objects.c. modules.c, goops.c, eval.c, debug.c: Changed all uses
10216 of scm_tc3_cond_gloc and scm_tcs_cons_gloc. See above.
10217
10218 * print.c (scm_iprin1): Remove printing of glocs. Do not try to
10219 tell glocs from structs.
43b83b54 10220
a0f5718e
MV
10221 * gc.c (scm_gc_mark, scm_gc_sweep): Remove handling of glocs.
10222
10223 * eval.c (scm_m_atbind): Make a list of variables, not glocs.
10224 (scm_ceval, scm_deval): For SCM_IM_BIND, fiddle with variables
10225 instead of with glocs.
10226 (EVALCAR): Do not test for glocs.
10227 (scm_lookupcar, scm_lookupcar1): Do not handle glocs in race
10228 condition.
10229 (scm_unmemocar): Do not handle glocs.
10230 (scm_m_atfop): Memoize as a variable, not as a gloc.
10231 (scm_eval_args, scm_deval_args): Do not handle glocs.
10232 (scm_ceval, scm_deval): Likewise.
43b83b54 10233
a0f5718e
MV
10234 * eval.h (SCM_XEVALCAR): Do not test for glocs.
10235 (SCM_GLOC_VAR, SCM_GLOC_VAL, SCM_GLOC_SET_VAL, SCM_GLOC_VAL_LOC):
10236 Removed.
10237
10238 * debug.h, debug.c (scm_make_gloc, scm_gloc_p): Removed.
10239
10240 * dynwind.c (scm_swap_bindings): Likewise.
10241 (scm_dowinds): Updated to recognize lists of variables instead of
10242 lists of glocs.
10243
10244 * __scm.h (SCM_CAUTIOS, SCM_RECKLESS): Update comments.
10245
43b83b54 10246
5b54c4da
MV
10247 * gc_os_dep.c (GC_noop1): Moved into the same #if/#endif context
10248 where it is needed.
43b83b54 10249
3c3db128
GH
102502001-07-25 Gary Houston <ghouston@arglist.com>
10251
10252 * numbers.c (scm_logand, scm_logior, scm_logxor): adjusted the
10253 docstrings to reflect the n-ary implementation.
10254
dd29a169
MV
102552001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
10256
10257 * eval.c (scm_ceval, scm_deval): Use "RETURN" macro when returning
10258 value of a variable, not the plain "return" statement.
10259
f5fe6c2f
MV
102602001-07-25 Marius Vollmer <mvo@zagadka.ping.de>
10261
10262 * eval.c: Allow variables in memoized code (in addition to glocs).
10263 (scm_lookupcar): Handle variables in lost races. Replace symbol
10264 with variable directly, do not make a gloc.
10265 (scm_unmemocar): Rewrite variables using a reverse lookup, just
10266 like glocs.
10267 (scm_ceval, scm_deval): Deal with variables in SCM_IM_SET and in
10268 the main switch.
10269
ee0c7345
MV
102702001-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
10271
6d9ad98a
MV
10272 * variable.c (scm_i_variable_print): Use "value" instead of
10273 "binding" since a binding is the mapping between symbols and
10274 variables, not between variables and their values.
10275
ee0c7345
MV
10276 * tags.h (scm_tc7_variable): New.
10277 * gc.c (scm_gc_mark): Handle scm_tc7_variable objects.
10278 * print.c (scm_iprin1): Likewise.
10279
10280 * variable.h (scm_tc16_variable): Removed.
10281 (SCM_VARIABLEP): Test for new tc7 code.
10282 (scm_i_variable_print): New.
10283 * variable.c (scm_tc16_variable): Removed.
10284 (variable_print): Renamed to scm_i_variable_print and made
10285 non-static.
10286 (variable_equal_p): Removed.
10287 (make_variable): Construct a tc7 object instead of a smob.
10288 (scm_init_variable): Do not register smob.
43b83b54 10289
f3805ebb
MV
102902001-07-22 Marius Vollmer <mvo@zagadka.ping.de>
10291
10292 * tags.h: Include inttypes.h when we have it.
10293
102942001-07-13 Marius Vollmer <mvo@zagadka.ping.de>
10295
10296 * tags.h (SCM_UNBOUND): Make it the 34th isym/iflag, the 33th slot
10297 is taken by the new SCM_IM_CALL_WITH_VALUES.
10298 * print.c (scm_isymnames): Update table accordingly.
43b83b54 10299
6a1677a3
GH
103002001-07-22 Gary Houston <ghouston@arglist.com>
10301
10302 * regex-posix.c (s_scm_regexp_exec): use scm_long2num not
10303 SCM_MAKINUM to convert regoff_t value to SCM.
10304
1bed8c28
GH
103052001-07-21 Gary Houston <ghouston@arglist.com>
10306
10307 * scmsigs.c: include sys/time.h for itimer stuff.
10308
e658215a
RB
103092001-07-19 Rob Browning <rlb@defaultvalue.org>
10310
10311 * gc_os_dep.c (GC_noop1): ifdef out (unused) to quiet warning.
10312
10313 * c-tokenize.lex: add option %nounput to quiet warning.
10314 Add prototype for yylex to quiet warning.
10315
10316 * scmconfig.h.in: add flags for setitimer and getitimer.
10317
10318 * scmsigs.h (scm_init_scmsigs): new prototype.
10319 (scm_init_scmsigs): new prototype.
10320
10321 * scmsigs.c (s_scm_setitimer): new function.
10322 (s_scm_setitimer): new function.
10323
58ade102
MG
103242001-07-18 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10325
10326 * alist.c, arbiters.c, async.h, backtrace.h, boolean.c, chars.c,
10327 chars.h, continuations.h, debug-malloc.h, dynl.c, feature.c,
10328 feature.h, filesys.h, fluids.h, fports.h, gc_os_dep.c,
10329 gdb_interface.h, gh_eval.c, gh_funcs.c, gh_io.c, gh_list.c,
10330 gh_predicates.c, gsubr.c, gsubr.h, guardians.h,
10331 guile-func-name-check.in, guile-snarf-docs-texi.in,
10332 guile-snarf-docs.in, guile-snarf.awk.in, guile-snarf.in,
10333 hashtab.h, iselect.h, keywords.h, lang.c, list.h, load.h,
10334 objprop.c, objprop.h, options.c, options.h, random.h,
10335 regex-posix.h, root.c, root.h, script.c, snarf.h, stackchk.c,
10336 strerror.c, strop.h, strports.h, threads.h, values.c, values.h,
10337 version.c, version.h: Updated copyright notice.
10338
6b80d352
DH
103392001-07-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
10340
10341 * goops.c (sym_layout, sym_vcell, sym_vtable, sym_print,
10342 sym_procedure, sym_setter, sym_redefined, sym_h0, sym_h1, sym_h2,
10343 sym_h3, sym_h4, sym_h5, sym_h6, sym_h7, sym_name,
10344 sym_direct_supers, sym_direct_slots, sym_direct_subclasses,
10345 sym_direct_methods, sym_cpl, sym_default_slot_definition_class,
10346 sym_slots, sym_getters_n_setters, sym_keyword_access, sym_nfields,
10347 sym_environment, scm_sym_change_class): New static variables to
10348 hold predefined symbols.
10349
10350 (build_class_class_slots): Build the list using scm_list_n
10351 instead of cons. Also, slots are already created as lists, thus
10352 making a call to maplist unnecessary.
10353
10354 (scm_class_name, scm_class_direct_supers, scm_class_direct_slots,
10355 scm_class_direct_subclasses, scm_class_direct_methods,
10356 scm_class_precedence_list, scm_class_slots, scm_class_environment,
10357 scm_method_procedure, create_standard_classes, purgatory): Use
10358 predefined symbols.
10359
10360 (build_slots_list, compute_getters_n_setters,
10361 scm_sys_initialize_object, scm_sys_inherit_magic_x,
10362 get_slot_value_using_name, set_slot_value_using_name,
10363 scm_sys_invalidate_method_cache_x, scm_generic_capability_p,
10364 scm_compute_applicable_methods, scm_sys_method_more_specific_p,
10365 make_struct_class): Prefer !SCM_<pred> over SCM_N<pred>.
10366
10367 (scm_sys_prep_layout_x): Minimize variable scopes.
10368
10369 (scm_sys_prep_layout_x, scm_sys_fast_slot_ref,
10370 scm_sys_fast_slot_set_x): Fix signedness.
10371
10372 (go_to_hell, go_to_heaven, purgatory, scm_change_object_class,
10373 lock_cache_mutex, unlock_cache_mutex, call_memoize_method,
10374 scm_memoize_method, scm_wrap_object): Use packing and unpacking
10375 when converting to and from SCM values.
10376
10377 (scm_enable_primitive_generic_x): Add rest argument checking.
10378
10379 (map, filter_cpl, maplist, scm_sys_initialize_object,
10380 scm_sys_prep_layout_x, slot_definition_using_name,
10381 scm_enable_primitive_generic_x, scm_compute_applicable_methods,
10382 call_memoize_method, scm_make, scm_make_class): Prefer explicit
10383 predicates over SCM_N?IMP tests.
10384
10385 (scm_sys_prep_layout_x): Fix typo in error message. Fix type
10386 checking.
10387
10388 (burnin, go_to_hell): Use SCM_STRUCT_DATA instead of the SCM_INST
10389 alias.
10390
63bcad19
DH
103912001-07-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
10392
10393 * fports.c (fport_print): Don't use SCM_C[AD]R for non pairs.
10394
10395 * num2integral.i.c (INTEGRAL2NUM, INTEGRAL2BIG): Fix signedness.
10396
10397 * symbols-deprecated.c (scm_gentemp): Simplify vector test.
10398
10399 * vectors.c (scm_vector_p): Eliminate redundant IMP test.
10400
4d6aae71
ML
104012001-07-12 Michael Livshin <mlivshin@bigfoot.com>
10402
10403 * strings.c (s_scm_string): fix arg position in assert.
10404
4b8ec619
GH
104052001-07-11 Gary Houston <ghouston@arglist.com>
10406
10407 * strports.c (st_write): use memcpy, not strncpy. thanks to
10408 Dale P. Smith.
10409
dbb640bd
TTN
104102001-07-09 Thien-Thi Nguyen <ttn@revel.glug.org>
10411
10412 * alist.c, alloca.c, arbiters.c, async.c, async.h, backtrace.c,
10413 boolean.c, chars.c, continuations.c, coop-defs.h, coop-threads.c,
10414 debug-malloc.h, debug.c, debug.h, dynl.c, dynwind.c, eq.c,
10415 error.c, eval.c, evalext.c, feature.c, feature.h, filesys.c,
10416 filesys.h, fluids.c, fluids.h, fports.c, fports.h, gc.c, gc.h,
10417 gdbint.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
10418 hooks.h, inet_aton.c, init.c, ioext.c, keywords.c, keywords.h,
10419 lang.c, list.c, load.c, macros.c, mallocs.c, memmove.c, modules.c,
10420 net_db.c, numbers.c, numbers.h, objects.c, objprop.c, options.c,
10421 pairs.c, pairs.h, ports.c, ports.h, posix.c, print.c, print.h,
10422 procprop.c, procs.c, procs.h, properties.c, putenv.c, ramap.c,
10423 random.c, random.h, read.c, regex-posix.c, regex-posix.h, root.c,
10424 root.h, scmsigs.c, script.c, simpos.c, smob.c, snarf.h, socket.c,
10425 sort.c, srcprop.c, srcprop.h, stackchk.c, stacks.c, stacks.h,
10426 stime.c, strerror.c, strings.c, strings.h, strop.c, strorder.c,
10427 strports.c, struct.c, struct.h, symbols-deprecated.c, symbols.c,
10428 symbols.h, tags.h, threads.c, threads.h, throw.c, unif.c, unif.h,
10429 variable.c, variable.h, vectors.c, vectors.h, version.c, vports.c,
10430 weaks.c, weaks.h: Remove "face-lift" comment.
10431
fd6c6321
RB
104322001-07-08 Rob Browning <rlb@defaultvalue.org>
10433
10434 * .cvsignore: add stamp-h.in.
10435
f91e4547
MG
104362001-07-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10437
10438 * hooks.c (scm_make_hook, scm_add_hook_x),
10439 (scm_remove_hook_x, scm_reset_hook_x, scm_run_hook): Added return
10440 value info to the docstrings.
10441
7beabedb
MG
104422001-07-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10443
10444 Some more compatibility patches for Windows.
dbb640bd 10445
7beabedb
MG
10446 * posix.c (getlogin): getlogin() implementation for Windows.
10447
10448 * backtrace.c, ioext.c: Include <stdio.h>.
10449
10450 * unif.c, script.c, rw.c, error.c: Include <io.h>, if it does
10451 exist.
10452
10453 * cpp_sig_symbols.in: Added SIGBREAK.
10454
0d0560d0
MV
104552001-07-01 Marius Vollmer <mvo@zagadka.ping.de>
10456
10457 * strports.c (scm_read_0str, scm_eval_0str): Call
10458 scm_c_read_string and scm_c_eval_string respectively, not
10459 themselves. Thanks to Dale P. Smith!
10460
9a97e362
DH
104612001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10462
10463 * unif.c (scm_array_set_x): The variable args does not
10464 necessarily have to be a list. Further, got rid of a redundant
10465 SCM_NIMP test.
10466
592996c9
DH
104672001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10468
10469 * list.c (SCM_I_CONS): Make sure the cell type is initialized
10470 last.
10471
10472 * gc.c (s_scm_map_free_list, scm_igc, scm_gc_sweep,
f91e4547 10473 init_heap_seg): Fixed signedness.
592996c9
DH
10474
10475 (init_heap_seg): Replaced strange for-loop with a while loop.
10476
10477 * weaks.h (WEAKSH, SCM_WEAKS_H): Rename <foo>H to SCM_<foo>_H.
10478
10479 (SCM_WVECTP): Prefer !SCM_<pred> over SCM_N<pred>.
10480
10481 The following patch adds conservative marking for the elements of
10482 free or allocated cells.
10483
10484 * gc.c (allocated_mark, heap_segment): New static functions.
10485
10486 (which_seg): Deleted, since the functionality is now provided by
10487 function heap_segment.
10488
10489 (map_free_list): Use heap_segment instead of which_seg.
10490
10491 (MARK): If cell debugging is disabled, mark free cells
10492 conservatively.
10493
10494 (scm_mark_locations, scm_cellp): Extracted the search for the
10495 heap segment of a SCM value into function heap_segment.
10496
10497 (scm_init_storage): Allocated cells must be marked
10498 conservatively.
10499
10500 * gc.[ch] (scm_gc_mark_cell_conservatively): New function.
10501
10502 The following patch changes the representation of weak vectors to
10503 double cells instead of using an extension of the vector's
10504 allocated memory.
10505
10506 * gc.c (MARK): Use SCM_SET_WVECT_GC_CHAIN instead of assigning to
10507 the result of SCM_WVECT_GC_CHAIN.
10508
10509 (scm_gc_sweep): Weak vectors don't have extra fields any more.
10510
10511 * weaks.c (allocate_weak_vector): New static function. It does
10512 not patch any previously created vector object during the
10513 construction of a weak vector, and thus doesn't need to switch
10514 off interrupts during vector creation.
10515
10516 (scm_make_weak_vector, scm_make_weak_key_hash_table,
10517 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
10518 Use allocate_weak_vector to provide the new weak vector object.
10519
10520 * weaks.h (SCM_WVECT_TYPE, SCM_SET_WVECT_TYPE,
10521 SCM_SET_WVECT_GC_CHAIN): New macros. The weak vector subtype is
10522 now stored in the double cell.
10523
10524 (SCM_IS_WHVEC, SCM_IS_WHVEC_V, SCM_IS_WHVEC_B, SCM_IS_WHVEC_ANY):
10525 Use SCM_WVECT_TYPE.
10526
10527 (SCM_WVECT_GC_CHAIN): The weak objects are now chained together
10528 using an entry of the double cell.
10529
4dadf664
TTN
105302001-06-30 Thien-Thi Nguyen <ttn@revel.glug.org>
10531
10532 * stamp-h.in: bye bye
10533
02202352
MV
105342001-06-30 Marius Vollmer <mvo@zagadka.ping.de>
10535
10536 * gh_eval.c (gh_eval_str): Use scm_c_eval_string instead of
10537 scm_eval_0str.
10538
10539 * load.c, load.h (scm_c_primitive_load,
10540 scm_c_primitive_load_path): New.
10541
10542 * strports.c, strports.h (scm_c_read_string): Renamed from
10543 scm_read_0str. Also, added "const" qualifier to argument.
10544 (scm_c_eval_string): Renamed from scm_eval_0str.
10545 (scm_read_0str, scm_eval_0str): Deprecated.
10546
df1ad0d1
MG
105472001-06-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10548
10549 * fluids.c (scm_c_with_fluid): Use scm_list_1() instead of
10550 SCM_LIST1.
10551
1afff620
KN
105522001-06-28 Keisuke Nishida <kxn30@po.cwru.edu>
10553
10554 * list.h (scm_list_1, scm_list_2, scm_list_3, scm_list_4, scm_list_5,
10555 scm_list_n): New functions.
10556 (SCM_LIST0, SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5,
10557 SCM_LIST6, SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify): Deprecated.
10558 (lots of files): Use the new functions.
4dadf664 10559
1afff620
KN
10560 * goops.c (CALL_GF1, CALL_GF2, CALL_GF3, CALL_GF4): Use scm_call_N.
10561
10562 * strings.c: #include "libguile/deprecation.h".
10563
b858464a
MG
105642001-06-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10565
10566 * read.c (scm_lreadr): When reading a hash token, check for a
10567 user-defined hash procedure first, so that overriding the builtin
10568 hash characters is possible (this was needed for implementing
10569 SRFI-4's read synax `f32(...)').
4dadf664 10570
b858464a
MG
10571 * num2integral.i.c: Use scm_t_signed_bits instead of scm_t_bits,
10572 because the latter is unsigned now and breaks comparisons like
10573 (n < (scm_t_signed_bits)MIN_VALUE).
4dadf664 10574
d95c0b76
NJ
105752001-06-26 Neil Jerram <neil@ossau.uklinux.net>
10576
10577 * eval.h, eval.c (scm_call_4): New function.
10578
10579 * eval.c (SCM_APPLY, SCM_CEVAL, ENTER_APPLY): Call trap handlers
10580 directly rather than dispatching to them via scm_ithrow and a lazy
10581 catch.
4dadf664 10582
d95c0b76
NJ
10583 * eval.c (scm_evaluator_trap_table), eval.h (SCM_ENTER_FRAME_HDLR,
10584 SCM_APPLY_FRAME_HDLR, SCM_EXIT_FRAME_HDLR): Add three new options
10585 for trap handler procedures.
10586
10587 * debug.h (SCM_RESET_DEBUG_MODE): Add checks for trap handler
10588 procedures not being #f.
10589
30e3be5a
ML
105902001-06-27 Michael Livshin <mlivshin@bigfoot.com>
10591
10592 * Makefile.am (c-tokenize.c): add rule to generate it.
10593 (EXTRA_DIST): add c-tokenize.lex, so it gets distributed.
10594
10595 filter-doc-snarfage.c: remove.
10596
82893676
MG
105972001-06-26 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10598
10599 * ports.c (scm_output_port_p): Use result of SCM_COERCE_OUTPORT.
10600
10601 The following set of changes makes compiling Guile under various
10602 Windows compilers easier. Compilation under GNU systems should
10603 not be affected at all.
10604
10605 Thanks to Stefan Jahn for all necessary information, patches and
10606 testing.
4dadf664 10607
82893676
MG
10608 * posix.c: Conditialize getpwent, getgrent, kill, getppid, getuid,
10609 getpgrp, ttyname, primitive-fork and some header inclusion for
10610 Windows.
10611
10612 * random.c: Define M_PI, if not predefined and use __int64 for
10613 LONG64 under Windows.
10614
10615 * scmsigs.c: Emulate some functions (alarm, sleep, kill) under
10616 Windows and conditionalize some signal names.
10617
4dadf664 10618 * socket.c (scm_getsockopt): Added missing comma.
82893676
MG
10619 Include socket library header under Windows.
10620
10621 * stime.c (CLKTCK): Add cast to int, to make it compile under
10622 Windows.
10623
10624 * ports.c (truncate): New function, compiled only under Windows.
10625
10626 * net_db.c: Do not declare errno under Windows.
10627
10628 * iselect.h, inet_aton.c: Include socket library headers under
10629 Windows.
10630
10631 * guile.c (inner_main): Under Windows, initialize socket library
10632 and initialize gdb_interface data structures.
10633
10634 * gdb_interface.h: Under Windows, gdb_interface cannot be
10635 initialized statically. Initialize at runtime instead.
10636
10637 * fports.c (write_all): ssize_t -> size_t.
10638 (fport_print): Conditionalize call to ttyname().
10639 (getflags): New function, compiled only under Windows.
10640
10641 * filesys.c: Conditionalize inclusion of <pwd.h>. Conditionalize
10642 primitives chown, link, fcntl.
10643 (scm_basename, scm_dirname): Under Windows, handle \ as well as /
10644 as path seperator.
10645
10646 * backtrace.c: Include <io.h> under Windows.
10647
10648 * async.h (ASYNCH, SCM_ASYNC_H): Rename <foo>H to SCM_<foo>_H.
10649
10650 * _scm.h: Added preprocessor conditional for __MINGW32__ for errno
10651 declaration.
10652
fdc28395
KN
106532001-06-27 Keisuke Nishida <kxn30@po.cwru.edu>
10654
10655 * eval.c (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
10656 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): New functions.
10657 * eval.h (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
10658 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): Declared.
10659 * async.c (scm_run_asyncs), coop-threads.c (scheme_body_bootstrip,
10660 scheme_handler_bootstrip), debug.c (with_traps_inner), dynwind.c
10661 (scm_dynamic_wind, scm_dowinds), environments.c
10662 (import_environment_conflict), eval.c (scm_macroexp, scm_force,
10663 scm_primitive_eval_x, scm_primitive_eval), fluids.c (apply_thunk),
10664 goops.c (GETVAR, purgatory, make_class_from_template,
10665 scm_ensure_accessor), hashtab.c (scm_ihashx, scm_sloppy_assx,
10666 scm_delx_x, fold_proc), hooks.c (scm_c_run_hook), load.c
10667 (scm_primitive_load), modules.c (scm_resolve_module,
10668 scm_c_define_module, scm_c_use_module, scm_c_export,
10669 module_variable, scm_eval_closure_lookup, scm_sym2var,
10670 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
10671 ports.c (scm_port_for_each), print.c (scm_printer_apply),
10672 properties.c (scm_primitive_property_ref), ramap.c (ramap,
10673 ramap_cxr, rafe, scm_array_index_map_x, read.c (scm_lreadr),
10674 scmsigs.c (sys_deliver_signals), sort.c (applyless), strports.c
10675 (scm_object_to_string, scm_call_with_output_string,
10676 scm_call_with_input_string), throw.c (scm_body_thunk,
10677 scm_handle_by_proc, hbpca_body), unif.c (scm_make_shared_array,
10678 scm_make_shared_array), vports.c (sf_flush, sf_write,
10679 sf_fill_input, sf_close): Use one of the above functions.
10680 * goops.c, hashtab.c, scmsigs.c, sort.c: #include "libguile/root.h".
10681
36284627
DH
106822001-06-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
10683
10684 * filesys.c (scm_close), ports.c (scm_close_port,
10685 scm_port_closed_p), strop.c (scm_string_null_p): Use SCM_BOOL
10686 instead of SCM_NEGATE_BOOL.
10687
10688 * filesys.c (scm_stat): Clean up type dispatch.
10689
10690 * filesys.c (scm_stat), ports.c (scm_input_port_p,
10691 scm_output_port_p): Get rid of redundant IM type check.
10692
10693 * filesys.c (scm_readdir, scm_getcwd, scm_readlink), gh_data.c
10694 (gh_str2scm), load.c (scm_primitive_load, scm_internal_parse_path,
10695 scm_search_path), net_db.c (scm_gethost, scm_getnet, scm_getproto,
10696 scm_return_entry), numbers.c (scm_number_to_string), objects.c
10697 (scm_make_subclass_object), ports.c (scm_port_mode), read.c
10698 (scm_lreadr), simpos.c (scm_getenv), socket.c (scm_inet_ntoa,
10699 scm_addr_vector), stime.c (scm_strftime), strings.c
10700 (scm_makfromstrs, scm_makfrom0str, scm_substring), strings.h
10701 (SCM_STRING_COERCE_0TERMINATION_X), strop.c (string_copy,
10702 scm_string_split), strports.c (scm_strport_to_string), symbols.c
10703 (scm_symbol_to_string), vports.c (sf_write): Use scm_mem2string
10704 instead of scm_makfromstr.
10705
10706 * net_db.c (scm_sethost, scm_setnet, scm_setproto, scm_setserv),
10707 ports.c (scm_close_all_ports_except), read.c (scm_lreadr,
10708 scm_read_hash_extend), stime.c (scm_strftime), strings.c
10709 (scm_string_append, scm_string), strings.h (SCM_STRINGP,
10710 SCM_STRING_COERCE_0TERMINATION_X, SCM_RWSTRINGP), strop.c
10711 (string_capitalize_x): Prefer explicit type check over SCM_N?IMP,
10712 !SCM_<pred> over SCM_N<pred>.
10713
10714 * strings.[ch] (scm_makfromstr): Deprecated.
10715
10716 (scm_mem2string): New function, replaces scm_makfromstr.
10717
10718 * strings.c (scm_substring), strop.c (string_copy,
10719 scm_string_split), strports.c (scm_strport_to_string), symbols.c
10720 (scm_symbol_to_string): Fix gc problem.
10721
10722 * strings.h (STRINGSH, SCM_STRINGS_H): Rename <foo>H to
10723 SCM_<foo>_H.
10724
10725 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Eliminate
10726 warning about comparing signed and unsigned values. This fix is
10727 not optimal, since it won't work reliably if sizeof (c_start) >
10728 sizeof (size_t) or sizeof (c_end) > sizeof (size_t). A better
10729 solution is to define this macro as an inline function, thus
10730 allowing to specifiy the types of c_start and c_end.
10731
13dcb666
DH
107322001-06-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
10733
10734 * debug.h (SCM_DEBUGOBJ_FRAME): Deliver result as a
10735 scm_t_debug_frame*.
10736
10737 * debug.h (DEBUGH, SCM_DEBUG_H), stacks.h (STACKSH, SCM_STACKSH):
10738 Rename <foo>H to SCM_<foo>_H.
10739
10740 * stacks.c (NEXT_FRAME, narrow_stack): Prefer explicit type check
10741 over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
10742
10743 (narrow_stack): Make i unsigned. Don't use side-effecting
10744 operations in conditions.
10745
10746 (narrow_stack, scm_make_stack, scm_stack_id,
10747 scm_last_stack_frame): Get rid of redundant SCM_N?IMP checks.
10748
10749 (scm_make_stack, scm_stack_id, scm_last_stack_frame): Clean up
10750 type dispatch. No need to cast result of SCM_DEBUGOBJ_FRAME any
10751 more.
10752
10753 (scm_stack_ref, scm_frame_previous, scm_frame_next): Fix
10754 signedness.
10755
ea2c3968 10756 (scm_last_stack_frame): Remove bogus `;'.
13dcb666
DH
10757
10758 * stacks.h (SCM_FRAMEP): Fix type check.
10759
ac13d9d2
ML
107602001-06-25 Michael Livshin <mlivshin@bigfoot.com>
10761
ee0c0e03
ML
10762 * Makefile.am (MAINTAINERCLEANFILES): be sure to remove
10763 c-tokenize.c when doing maintainer-clean.
10764
ac13d9d2
ML
10765 * snarf.h (SCM_SNARF_DOCS): change the "grammar" slightly.
10766
10767 * guile-snarf-docs.in, guile-snarf-docs-texi.in: rewrite &
10768 simplify.
10769
10770 * eval.c: all hash signs are in column 0.
10771
10772 * Makefile.am (guile_filter_doc_snarfage): build using
10773 c-tokenize.c, not filter-doc-snarfage.c.
10774 rearrange snarfing dependencies a bit.
10775
10776 * c-tokenize.lex: new file.
10777
16be44e5
MV
107782001-06-25 Marius Vollmer <mvo@zagadka.ping.de>
10779
10780 * srcprop.h, srcprop.c (scm_srcprops_to_plist): Renamed from
10781 scm_t_srcpropso_plist. See the big type renaming.
10782 * coop-defs.h (scm_mutex_trylock, scm_cond_timedwait): Likewise.
10783 Thanks to Seth Alves!
4dadf664 10784
16be44e5
MV
10785 * numbers.c (SIZE_MAX, PTRDIFF_MIN, PTRDIFF_MAX): Only define when
10786 they aren't defined already.
10787
5843e5c9
DH
107882001-06-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
10789
10790 * backtrace.c (display_backtrace_body): Use SCM_VALIDATE_STACK
10791 and SCM_VALIDATE_OPOUTPORT instead of SCM_ASSERT. Fix signedness
10792 problem.
10793
10794 * backtrace.c (display_expression, scm_set_print_params_x,
10795 display_application, display_frame, scm_backtrace), numbers.c
10796 (scm_istring2number), objects.c (scm_class_of,
10797 scm_mcache_lookup_cmethod, scm_mcache_compute_cmethod): Prefer
10798 explicit type check over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
10799
10800 * fluids.c (scm_fluid_ref, scm_fluid_set_x): Fluid numbers are
10801 always positive.
10802
10803 * numbers.c (scm_i_mkbig): Remove unnecessary casts, remove
10804 unnecessary SCM_DEFER_INTS, SCM_ALLOW_INTS.
10805
10806 * objects.c (scm_class_of): Type fix.
10807
10808 (scm_mcache_lookup_cmethod): Improved comment, simplified,
10809 eliminated goto.
10810
10811 * pairs.h (scm_error_pair_access): The function can return if
10812 called recursively.
10813
6b41a313
MG
108142001-06-20 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10815
10816 * init.c (scm_init_guile_1): Removed initialization of tag.c.
10817
10818 * gdbint.c, init.c: Removed inclusion of tag.h.
10819
10820 * tag.h, tag.c: Removed files.
10821
10822 * Makefile.am: Removed tag.{h,c,doc,x} in various places.
10823
fbbdb121
GH
108242001-06-20 Gary Houston <ghouston@arglist.com>
10825
10826 * deprecation.c, extensions.c, rw.c: include string.h.
10827
72c17ed0
GH
108282001-06-19 Gary Houston <ghouston@arglist.com>
10829
10830 * filter-doc-snarfage.c (process): added ungetc in
10831 MULTILINE_COOKIE case since otherwise it fails when there's no
10832 space between the '(' and the quote of the following string
10833 (gcc 3.0).
10834
4ff9f825
MV
108352001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
10836
4927dd28
MV
10837 Throughout: replace "scm_*_t" with "scm_t_*", except "scm_lisp_t".
10838
b629af45
MV
108392001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
10840
10841 * unif.h (SCM_ARRAY_NDIM): Shift then cast so that no sign
0f002b27
MV
10842 extension takes place.
10843 * strings.h (SCM_STRING_LENGTH): Likewise.
10844 (SCM_STRING_MAX_LENGTH): Use unsigned numbers.
4dadf664 10845
4ff9f825
MV
10846 * __scm.h (ptrdiff_t): Typedef to long when configure didn't find
10847 it.
10848
10849 * tags.h: Include <stdint.h> when we have it.
10850 (scm_bits_t): Changed to be a unsigned type. Use uintptr_t when
10851 available. Else use "unsigned long".
10852 (scm_signed_bits_t): New.
10853
10854 * numbers.h (SCM_SRS): Cast shiftee to scm_signed_bits_t.
10855 (SCM_INUM): Cast result to scm_signed_bits_t.
10856
58bee6a8
TTN
108572001-06-13 Thien-Thi Nguyen <ttn@revel.glug.org>
10858
10859 * mkstemp.c: Update path to #include file scmconfig.h.
10860 Thanks to Golubev I. N.
10861
00d8d838
DH
108622001-06-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
10863
10864 * struct.h (SCM_STRUCT_VTABLE_FLAGS): New macro.
10865
ea2c3968 10866 * goops.h (SCM_NUMBER_OF_SLOTS): Removed bogus `\' at the end of
00d8d838
DH
10867 the macro definition.
10868
10869 (SCM_CLASSP, SCM_INSTANCEP, SCM_PUREGENERICP, SCM_ACCESSORP,
10870 SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Use SCM_STRUCT_VTABLE_FLAGS
10871 instead of SCM_INST_TYPE.
10872
10873 (SCM_ACCESSORP, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Make sure
10874 the object is a struct before accessing its struct flags.
10875
10876 (SCM_INST_TYPE, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Deprecated.
10877
495c67e5
GH
108782001-06-10 Gary Houston <ghouston@arglist.com>
10879
10880 * rdelim.c (scm_init_rdelim_builtins): don't try to activate the
10881 (ice-9 rdelim) module in (guile) and (guile-user). it didn't
10882 work reliably anymore. try it from boot-9.scm instead.
10883
6a9003d3
MV
108842001-06-09 Marius Vollmer <mvo@zagadka.ping.de>
10885
10886 * ports.c (scm_lfwrite): Maintain columnd and row count in port.
9a5fa6e9 10887 Thanks to Matthias Köppe!
58bee6a8 10888
47bcd646
ML
108892001-06-08 Michael Livshin <mlivshin@bigfoot.com>
10890
a88ff5b6
ML
10891 * snarf.h, filter-doc-snarfage.c: more changes to cope with
10892 space-happy C preprocessors.
10893
47bcd646 10894 * filter-doc-snarfage.c, guile-snarf.in: try to cope with spaces
9a5fa6e9 10895 inside cookies. thanks to Matthias Köppe!
47bcd646 10896
bab246f3
DH
108972001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
10898
10899 * keywords.c (keyword_print): Don't use SCM_C[AD]R to access
10900 keywords. Fix gc protection.
10901
10902 * objects.c (scm_mcache_lookup_cmethod): Don't use side effecting
10903 operations in macro calls.
10904
10905 * pairs.c (scm_error_pair_access): Avoid recursion.
10906
10907 Thanks to Matthias Koeppe for reporting the bugs that correspond
10908 to the following set of patches.
10909
10910 * unif.c (scm_bit_set_star_x, scm_bit_invert_x), vectors.h
10911 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Obtain the
10912 bitvector base address using SCM_BITVECTOR_BASE.
10913
10914 * unif.h (SCM_BITVECTOR_BASE): Return the base address as an
10915 unsigned long*.
10916
dcb410ec
DH
109172001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
10918
10919 * goops.c (SCM_CLASS_REDEF): Removed.
10920
10921 * vectors.h (VECTORSH, SCM_VECTORS_H): Renamed <foo>H to
10922 SCM_<foo>_H.
10923
10924 Thanks to Matthias Koeppe for reporting the bugs that correspond
10925 to the following set of patches.
10926
10927 * goops.c (scm_sys_prep_layout_x, scm_basic_basic_make_class,
10928 create_basic_classes, scm_sys_fast_slot_set_x, set_slot_value,
10929 scm_sys_allocate_instance, clear_method_cache,
10930 scm_sys_invalidate_method_cache_x, scm_make,
10931 create_standard_classes, scm_make_port_classes, scm_make_class,
10932 scm_add_slot): Use SCM_SET_SLOT to set slot values.
10933
10934 (prep_hashsets): Use SCM_SET_HASHSET to set class hash values.
10935
10936 * goops.h (SCM_SET_SLOT, SCM_SET_HASHSET): New macros.
10937
10938 * ramap.c (BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
10939 UNARY_ELTS_CODE): Remove bogus break statement.
10940
10941 * vectors.h (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR):
10942 Don't access bit vectors elements as SCM objects.
10943
10944 * weaks.c (scm_make_weak_vector, scm_make_weak_key_hash_table,
10945 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
10946 Don't assign to an unpacked value.
10947
e81d98ec
DH
109482001-06-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
10949
10950 * __scm.h (SCM_NORETURN): Moved here from error.h.
10951
10952 (SCM_UNUSED): New macro.
10953
10954 (SCM_DEBUG_PAIR_ACCESSES): New macro.
10955
10956 * backtrace.c (display_error_handler), continuations.c
10957 (continuation_print), debug.c (debugobj_print), dynwind.c
10958 (guards_print), environments.c (observer_print,
10959 core_environments_finalize, leaf_environment_cell,
10960 leaf_environment_print, eval_environment_print,
10961 eval_environment_observer, import_environment_define,
10962 import_environment_undefine, import_environment_print,
10963 import_environment_observer, export_environment_define,
10964 export_environment_undefine, export_environment_print,
10965 export_environment_observer), eval.c (scm_m_quote, scm_m_begin,
10966 scm_m_if, scm_m_set_x, scm_m_and, scm_m_or, scm_m_case,
10967 scm_m_cond, scm_m_lambda, scm_m_letstar, scm_m_do, scm_m_delay,
10968 scm_m_letrec1, scm_m_apply, scm_m_cont, scm_m_nil_cond,
10969 scm_m_nil_ify, scm_m_t_ify, scm_m_0_cond, scm_m_0_ify,
10970 scm_m_1_ify, scm_m_atfop, scm_m_at_call_with_values), evalext.c
10971 (scm_m_generalized_set_x), fluids.c (fluid_print), fports.c
10972 (fport_print), gc.c (gc_start_stats, scm_remember_upto_here_1,
10973 scm_remember_upto_here_2, scm_remember_upto_here, mark_gc_async),
10974 gh_init.c (gh_standard_handler), goops.c (get_slot_value,
10975 set_slot_value, test_slot_existence, scm_change_object_class,
10976 scm_m_atslot_ref, scm_m_atslot_set_x, make_struct_class,
10977 default_setter), guardians.c (guardian_print, guardian_gc_init,
10978 guardian_zombify, whine_about_self_centered_zombies), guile.c
10979 (inner_main), init.c (stream_handler), keywords.c (keyword_print),
10980 mallocs.c (malloc_print), numbers.c (scm_print_real,
10981 scm_print_complex, scm_bigprint), ports.c (flush_port_default,
10982 end_input_default, scm_port_print, fill_input_void_port,
10983 write_void_port), root.c (root_print), smob.c (scm_mark0,
10984 scm_free0, scm_smob_print, scm_smob_apply_1_error,
10985 scm_smob_apply_2_error, scm_smob_apply_3_error, free_print),
10986 stime.c (restorezone), strings.c (scm_makfromstr), struct.c
10987 (scm_struct_free_0, scm_struct_free_standard,
10988 scm_struct_free_entity, scm_struct_gc_init, scm_free_structs),
10989 throw.c (jmpbuffer_print, lazy_catch_print, ss_handler,
10990 scm_handle_by_throw, scm_ithrow), weaks.c
10991 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
10992 scm_scan_weak_vectors), ramap.c (scm_array_fill_int), filesys.c
10993 (scm_dir_print): Mark unused parameters with SCM_UNUSED.
10994
10995 * error.h (SCM_NORETURN): Moved to __scm.h.
10996
10997 * error.h (ERRORH, SCM_ERROR_H), pairs.h (PAIRSH, SCM_PAIRS_H):
10998 Renamed <foo>H to SCM_<foo>_H.
10999
11000 * gc.c (debug_cells_gc_interval): New static variable.
11001
11002 (scm_assert_cell_valid): If selected by the user, perform
11003 additional garbage collections.
11004
11005 (scm_set_debug_cell_accesses_x): Extended to let the user specify
11006 if additional garbage collections are desired.
11007
11008 (mark_gc_async): If additional garbage collections are selected
11009 by the user, don't call the after-gc-hook. Instead require the
11010 user to run the hook manually.
11011
11012 * pairs.c (scm_error_pair_access): New function. Only compiled
11013 if SCM_DEBUG_PAIR_ACCESSES is set to 1.
11014
11015 * pairs.h (SCM_VALIDATE_PAIR): New macro.
11016
11017 (SCM_CAR, SCM_CDR, SCM_SETCAR, SCM_SETCDR): If
11018 SCM_DEBUG_PAIR_ACCESSES is set to 1, make sure that the argument
11019 is a real pair object. (Glocs are also accepted, but that may
11020 change.) If not, abort with an error message.
11021
17fa3fcf
DH
110222001-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
11023
11024 * eval.c (SCM_VALIDATE_NON_EMPTY_COMBINATION): New macro.
11025
11026 (SCM_CEVAL, SCM_APPLY): Replace calls to SCM_EVALIM2 with calls
11027 to SCM_VALIDATE_NON_EMPTY_COMBINATION.
11028
feeedafb
MV
110292001-06-05 Marius Vollmer <mvo@zagadka.ping.de>
11030
11031 * extensions.c (scm_c_register_extension): Allow NULL as library
11032 name.
11033 (load_extension): Ignore NULL library names when comparing.
58bee6a8 11034
feeedafb
MV
11035 * hash.c (scm_hasher): Use SCM_UNPACK in the case labels so that
11036 non-pointers are being compared. Thanks to Alexander Klimov!
11037
4bcdfe46
GH
110382001-06-04 Gary Houston <ghouston@arglist.com>
11039
11040 * rw.c (scm_write_string_partial): new procedure implementing
11041 write-string/partial in (ice-9 rw).
11042 * rw.h: declare scm_write_string_partial.
58bee6a8 11043
f480396b
MV
110442001-06-04 Marius Vollmer <mvo@zagadka.ping.de>
11045
feeedafb
MV
11046 * keywords.c (keyword_print): Substract 1 from length of symbol
11047 name, accounting for the silly dash.
11048
11049 * dynl.c (scm_registered_modules, scm_clear_registered_modules):
11050 Do not emit deprecation warning.
11051
f480396b
MV
11052 Added exception notice to all files.
11053
11054 * dynl.c: Include "deprecation.h".
11055
c794483c
MV
110562001-06-03 Marius Vollmer <mvo@zagadka.ping.de>
11057
11058 * dynl.c (scm_register_module_xxx, scm_registered_modules,
11059 scm_clear_registered_modules): Deprecated.
11060
9454d8d5
RB
110612001-06-02 Rob Browning <rlb@cs.utexas.edu>
11062
11063 * .cvsignore: add guile_filter_doc_snarfage guile-snarf-docs
11064 guile-snarf-docs-texi.
11065
11066 * fports.c: HAVE_ST_BLKSIZE changed to
11067 HAVE_STRUCT_STAT_ST_BLKSIZE.
11068 (scm_fport_buffer_add): HAVE_ST_BLKSIZE changed to
11069 HAVE_STRUCT_STAT_ST_BLKSIZE.
11070
11071 * filesys.c (scm_stat2scm): HAVE_ST_RDEV changed to
11072 HAVE_STRUCT_STAT_ST_RDEV.
11073 (scm_stat2scm): HAVE_ST_BLKSIZE changed to
11074 HAVE_STRUCT_STAT_ST_BLKSIZE.
11075 (scm_stat2scm): HAVE_ST_BLOCKS changed to
11076 HAVE_STRUCT_STAT_ST_BLOCKS.
11077
114f9bab
MV
110782001-06-02 Marius Vollmer <mvo@zagadka.ping.de>
11079
b0c16cd9
MV
11080 * strports.c (scm_eval_string): Use scm_primitive_eval_x instead
11081 of scm_eval_x to allow module changes between the forms in the
11082 string. Set/restore module using scm_c_call_with_current_module.
11083
114f9bab
MV
11084 * mkstemp.c: New file, slightly modified from libiberties
11085 mkstemps.c.
11086
c99f9605
ML
110872001-05-31 Michael Livshin <mlivshin@bigfoot.com>
11088
11089 * guile-snarf-docs.in, guile-snarf-docs-texi.in,
11090 filter-doc-snarfage.c: new files.
11091
11092 * Makefile.am: add stuff to [build,] use and distribute
11093 guile-snarf-docs, guile-snarf-docs-texi, guile_filter_doc_snarfage.
11094
11095 * guile-snarf.in: grok the new snarf output.
11096
11097 * snarf.h: make the output both texttools- and `read'-friendly.
11098
47bcd646
ML
11099 * guile-doc-snarf.in: reimplement in terms of guile-snarf and
11100 guile-snarf-docs. (should also deprecate, I guess. maybe not).
c99f9605 11101
7eb5d7b2
MV
111022001-05-31 Marius Vollmer <mvo@zagadka.ping.de>
11103
11104 * print.c (scm_simple_format): Support "~~" and "~%". Signal
11105 error for unsupported format controls and for superflous
ec2667f0 11106 arguments. Thanks to Daniel Skarda!
7eb5d7b2
MV
11107
11108 * print.h, print.c (scm_print_symbol_name): Factored out of
11109 scm_iprin1.
11110 (scm_iprin1): Call it.
58bee6a8 11111
7eb5d7b2
MV
11112 * keywords.c (keyword_print): Use scm_print_symbol_name so that
11113 weird names are printed correctly.
11114
11115 * print.c (scm_print_symbol_name): Symbols whose name starts with
11116 `#' or `:' or ends with `:' are considered weird.
11117
609c3d30
MG
111182001-05-30 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11119
11120 * numbers.c (scm_difference, scm_divide): Clarified comments for -
11121 and /.
11122
111232001-05-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11124
11125 * debug.h: Removed prototype for scm_eval_string.
11126
8d09eb04
MG
111272001-05-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11128
11129 * symbols.c (scm_gensym): Fix buffer overrun (try `(gensym
58bee6a8 11130 (make-string 2000 #\!))' in an older version).
8d09eb04
MG
11131
11132 Change strncpy to memcpy to allow embedded NUL characters in
11133 symbol prefix.
11134
dd85ce47
ML
111352001-05-28 Michael Livshin <mlivshin@bigfoot.com>
11136
fde50407
ML
11137 * hooks.c (scm_create_hook): deprecated.
11138 (make_hook): deleted.
11139 (scm_make_hook): all the hook creation code is now here.
11140
11141 * gc.c (scm_init_gc): don't call `scm_create_hook'. instead make
11142 a hook, make it permanent, and do a `scm_c_define' on it.
11143
dd85ce47
ML
11144 * strop.c (s_scm_string_capitalize_x): fix docstring quoting.
11145
11146 * socket.c (s_scm_inet_pton): fix docstring quoting.
11147 (s_scm_inet_ntop): ditto.
11148
11149 * num2integral.i.c (INTEGRAL2NUM): cast to fix a warning.
11150
11151 * hashtab.c (scm_internal_hash_fold): fix argument position in
11152 SCM_ASSERT.
11153
11154 * environments.c (s_scm_import_environment_set_imports_x): fix
11155 argument position in SCM_ASSERT.
11156
11157 * debug.c (s_scm_make_gloc): fix SCM packing/unpacking.
11158 (s_scm_make_iloc): ditto.
11159
729dbac3
DH
111602001-05-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
11161
11162 * __scm.h (SCM_DEBUG_TYPING_STRICTNESS): Make 1 the default.
11163
11164 * eval.c (promise_print): Read the promise's value as an object.
11165
11166 (SCM_CEVAL): Don't perform side-effecting operations in macro
11167 parameters.
11168
11169 * eval.h (SCM_EVALIM2): Fix the typing strictness of the
11170 conditional expression.
11171
11172 * gc.c (scm_master_freelist, scm_master_freelist2): Added missing
11173 initializer.
11174
11175 * gh_data.c (gh_set_substr): Removed redundant unsigned >= 0
11176 text, removed redundant computation of effective_length and fixed
11177 the overflow check.
11178
11179 * goops.c (test_slot_existence): Use SCM_EQ_P to compare SCM
11180 values.
11181
11182 (wrap_init): Don't use SCM_C[AD]R for non pairs.
11183
11184 (hell): Make it a scm_bits_t pointer rather than a SCM pointer.
11185
11186 * goops.c (scm_sys_modify_class), strports.c (st_resize_port),
11187 struct.h (SCM_SET_STRUCT_PRINTER): Store unpacked values.
11188
11189 * goops.h (SCM_ACCESSORS_OF, SCM_SLOT): Return a SCM value.
11190
11191 * goops.h (GOOPSH, SCM_GOOPS_H), modules.h (MODULESH,
11192 SCM_MODULES_H), objects.h (OBJECTSH, SCM_OBJECTS_H), struct.h
11193 (STRUCTH, SCM_STRUCT_H), symbols.h (SYMBOLSH, SCM_SYMBOLS_H),
11194 __scm.h (__SCMH, SCM___SCM_H): Change <foo>H to SCM_<foo>_H.
11195
11196 * modules.[ch] (scm_module_tag): Make it a scm_bits_t value.
11197
11198 * objects.h (SCM_SET_CLASS_INSTANCE_SIZE): Fixed typing.
11199
ea2c3968 11200 * ramap.c (ramap_rp): Removed bogus `;'.
729dbac3
DH
11201
11202 * sort.c (scm_restricted_vector_sort_x): Fixed signedness
11203 problem.
11204
11205 * symbols.h (SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS, SCM_SYMBOL_FUNC,
11206 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS):
11207 Read SCM objects rather than scm_bits_t values.
11208
11209 * tags.h (SCM_VOIDP_TEST): Removed.
11210
11211 (SCM_DEBUG_TYPING_STRICTNESS): Now takes values 0, 1, 2. The
11212 value of 2 now corresponds to the former 1, the current 1
11213 corresponds to the former situation that SCM_VOIDP_TEST was
11214 defined.
11215
58bee6a8
TTN
11216 (SCM): Now defined as typedef struct scm_unused_struct * SCM;
11217 If this appears to be not ANSI compliant, we will change it to
729dbac3
DH
11218 typedef struct scm_unused_struct { } * SCM;
11219 Thanks to Han-Wen Nienhuys for the suggestion.
11220
11221 * unif.c (scm_array_set_x): Fix typing problem, and use
11222 SCM_UVECTOR_BASE instead of SCM_VELTS or SCM_CELL_WORD_1 when
11223 dealing with uniform vectors.
11224
6b1b030e
ML
112252001-05-27 Michael Livshin <mlivshin@bigfoot.com>
11226
11227 * gc.c (scm_init_storage): init `scm_gc_registered_roots'.
11228 (scm_igc): mark from them, too (precisely, not conservatively!).
11229
11230 * root.h (scm_gc_registered_roots): new object in
11231 scm_sys_protects.
11232
11233 * hooks.c (scm_create_hook): call `scm_gc_protect_object' instead
11234 `scm_protect_object'. shouldn't call it at all, though, it seems.
11235
11236 * gc.c (scm_[un]protect_object): deprecated.
11237 (scm_gc_[un]protect_object): new names for scm_[un]protect_object.
11238 (scm_gc_[un]register_root[s]): new.
11239
11240 * gc.h: add prototypes for scm_gc_[un]protect_object,
11241 scm_gc_[un]register_root[s].
11242
c014a02e
ML
112432001-05-26 Michael Livshin <mlivshin@bigfoot.com>
11244
11245 revert the controversial part of the 2001-05-24 changes.
11246
0120801d
MV
112472001-05-25 Marius Vollmer <mvo@zagadka.ping.de>
11248
f4e0611e
MV
11249 * modules.c (scm_env_module): Exported to Scheme.
11250
0120801d 11251 * eval.c (scm_debug_opts): New option `show-file-name'.
729dbac3 11252
0120801d 11253 * debug.h (SCM_SHOW_FILE_NAME): New.
729dbac3 11254
0120801d
MV
11255 * backtrace.c: Include "libguile/filesys.h".
11256 (sym_base, display_backtrace_get_file_line,
11257 display_backtrace_file, display_backtrace_file_and_line): New.
11258 (display_frame): Call display_backtrace_file_and_line if that is
11259 requested.
11260 (display_backtrace_body): Call scm_display_backtrace_file if
11261 requested.
11262
11263 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr):
11264 Prototypes removed since there's no definition for these
11265 functions.
11266
880a7d13
MG
112672001-05-24 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11268
11269 * unif.c (scm_make_ra, array_free), unif.h (SCM_ARRAY_DIMS):
11270 Changed use of scm_array->scm_array_t and
11271 scm_array_dim->scm_array_dim_t to enable build with
11272 --disable-deprecated.
11273
1be6b49c
ML
112742001-05-24 Michael Livshin <mlivshin@bigfoot.com>
11275
11276 The purpose of this set of changes is to regularize Guile's usage
11277 of ANSI C integral types, with the following ideas in mind:
11278
d69c867a
ML
11279 - SCM does not nesessarily have to be long.
11280 - long is not nesessarily enough to store pointers.
1be6b49c
ML
11281 - long is not nesessarily the same size as int.
11282
11283 The changes are incomplete and possibly buggy. Please test on
11284 something exotic.
11285
11286 * validate.h
11287 (SCM_NUM2{SIZE,PTRDIFF,SHORT,USHORT,BITS,UBITS,INT,UINT}[_DEF]):
11288 new macros.
11289
11290 * unif.h: type renaming:
11291 scm_array -> scm_array_t
11292 scm_array_dim -> scm_array_dim_t
11293 the old names are deprecated, all in-Guile uses changed.
11294
11295 * tags.h (scm_ubits_t): new typedef, representing unsigned
11296 scm_bits_t.
11297
11298 * stacks.h: type renaming:
11299 scm_info_frame -> scm_info_frame_t
11300 scm_stack -> scm_stack_t
11301 the old names are deprecated, all in-Guile uses changed.
11302
11303 * srcprop.h: type renaming:
11304 scm_srcprops -> scm_srcprops_t
11305 scm_srcprops_chunk -> scm_srcprops_chunk_t
11306 the old names are deprecated, all in-Guile uses changed.
11307
11308 * gsubr.c, procs.c, print.c, ports.c, read.c, rdelim.c, ramap.c,
11309 rw.c, smob.c, sort.c, srcprop.c, stacks.c, strings.c, strop.c,
11310 strorder.c, strports.c, struct.c, symbols.c, unif.c, values.c,
11311 vectors.c, vports.c, weaks.c:
11312 various int/size_t -> size_t/scm_bits_t changes.
11313
11314 * random.h: type renaming:
11315 scm_rstate -> scm_rstate_t
11316 scm_rng -> scm_rng_t
11317 scm_i_rstate -> scm_i_rstate_t
11318 the old names are deprecated, all in-Guile uses changed.
11319
11320 * procs.h: type renaming:
11321 scm_subr_entry -> scm_subr_entry_t
11322 the old name is deprecated, all in-Guile uses changed.
11323
11324 * options.h (scm_option_t.val): unsigned long -> scm_bits_t.
11325 type renaming:
11326 scm_option -> scm_option_t
11327 the old name is deprecated, all in-Guile uses changed.
11328
11329 * objects.c: various long -> scm_bits_t changes.
11330 (scm_i_make_class_object): flags: unsigned long -> scm_ubits_t
11331
11332 * numbers.h (SCM_FIXNUM_BIT): deprecated, renamed to
11333 SCM_I_FIXNUM_BIT.
11334
11335 * num2integral.i.c: new file, multiply included by numbers.c, used
11336 to "templatize" the various integral <-> num conversion routines.
11337
11338 * numbers.c (scm_mkbig, scm_big2num, scm_adjbig, scm_normbig,
11339 scm_copybig, scm_2ulong2big, scm_dbl2big, scm_big2dbl):
11340 deprecated.
11341 (scm_i_mkbig, scm_i_big2inum, scm_i_adjbig, scm_i_normbig,
11342 scm_i_copybig, scm_i_short2big, scm_i_ushort2big, scm_i_int2big,
11343 scm_i_uint2big, scm_i_long2big, scm_i_ulong2big, scm_i_bits2big,
11344 scm_i_ubits2big, scm_i_size2big, scm_i_ptrdiff2big,
11345 scm_i_long_long2big, scm_i_ulong_long2big, scm_i_dbl2big,
11346 scm_i_big2dbl, scm_short2num, scm_ushort2num, scm_int2num,
11347 scm_uint2num, scm_bits2num, scm_ubits2num, scm_size2num,
11348 scm_ptrdiff2num, scm_num2short, scm_num2ushort, scm_num2int,
11349 scm_num2uint, scm_num2bits, scm_num2ubits, scm_num2ptrdiff,
11350 scm_num2size): new functions.
11351
d69c867a 11352 * modules.c (scm_module_reverse_lookup): i, n: int -> scm_bits_t.
1be6b49c
ML
11353
11354 * load.c: change int -> size_t in various places (where the
11355 variable is used to store a string length).
11356 (search-path): call scm_done_free, not scm_done_malloc.
11357
11358 * list.c (scm_ilength): return a scm_bits_t, not long.
11359 some other {int,long} -> scm_bits_t changes.
11360
11361 * hashtab.c: various [u]int -> scm_bits_t changes.
11362 scm_ihashx_closure -> scm_ihashx_closure_t (and made a typedef).
11363 (scm_ihashx): n: uint -> scm_bits_t
11364 use scm_bits2num instead of scm_ulong2num.
11365
11366 * gsubr.c: various int -> scm_bits_t changes.
11367
11368 * goops.[hc]: various {int,long} -> scm_bits_t changes.
11369
d69c867a 11370 * gh_data.c (gh_num2int): no loss of precision any more.
1be6b49c
ML
11371
11372 * gh.h (gh_str2scm): len: int -> size_t
11373 (gh_{get,set}_substr): start: int -> scm_bits_t,
11374 len: int -> size_t
11375 (gh_<num>2scm): n: int -> scm_bits_t
11376 (gh_*vector_length): return scm_[u]size_t, not unsigned long.
11377 (gh_length): return scm_bits_t, not unsigned long.
11378
11379 * gc.[hc]: various small changes relating to many things stopping
11380 being long and starting being scm_[u]bits_t instead.
11381 scm_mallocated should no longer wrap around.
11382
11383 * fports.h: type renaming:
11384 scm_fport -> scm_fport_t
11385 the old name is deprecated, all in-Guile uses changed.
11386
11387 * fports.c (fport_fill_input): count: int -> scm_bits_t
11388 (fport_flush): init_size, remaining, count: int -> scm_bits_t
11389
11390 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr): removed
11391 those prototypes, as the functions they prototype don't exist.
11392
11393 * fports.c (default_buffer_size): int -> size_t
11394 (scm_fport_buffer_add): read_size, write_size: int -> scm_bits_t
11395 default_size: int -> size_t
11396 (scm_setvbuf): csize: int -> scm_bits_t
11397
11398 * fluids.c (n_fluids): int -> scm_bits_t
11399 (grow_fluids): old_length, i: int -> scm_bits_t
11400 (next_fluid_num, scm_fluid_ref, scm_fluid_set_x): n: int ->
11401 scm_bits_t
11402 (scm_c_with_fluids): flen, vlen: int -> scm_bits_t
11403
11404 * filesys.c (s_scm_open_fdes): changed calls to SCM_NUM2LONG to
11405 the new and shiny SCM_NUM2INT.
11406
11407 * extensions.c: extension -> extension_t (and made a typedef).
11408
11409 * eval.h (SCM_IFRAME): cast to scm_bits_t, not int. just so
11410 there are no nasty surprises if/when the various deeply magic tag
11411 bits move somewhere else.
11412
11413 * eval.c: changed the locals used to store results of SCM_IFRAME,
11414 scm_ilength and such to be of type scm_bits_t (and not int/long).
11415 (iqq): depth, edepth: int -> scm_bits_t
11416 (scm_eval_stack): int -> scm_bits_t
11417 (SCM_CEVAL): various vars are not scm_bits_t instead of int.
11418 (check_map_args, scm_map, scm_for_each): len: long -> scm_bits_t
11419 i: int -> scm_bits_t
11420
11421 * environments.c: changed the many calls to scm_ulong2num to
11422 scm_ubits2num.
11423 (import_environment_fold): proc_as_ul: ulong -> scm_ubits_t
11424
11425 * dynwind.c (scm_dowinds): delta: long -> scm_bits_t
11426
11427 * debug.h: type renaming:
11428 scm_debug_info -> scm_debug_info_t
11429 scm_debug_frame -> scm_debug_frame_t
11430 the old names are deprecated, all in-Guile uses changed.
11431 (scm_debug_eframe_size): int -> scm_bits_t
11432
11433 * debug.c (scm_init_debug): use scm_c_define instead of the
11434 deprecated scm_define.
11435
11436 * continuations.h: type renaming:
11437 scm_contregs -> scm_contregs_t
11438 the old name is deprecated, all in-Guile uses changed.
11439 (scm_contregs_t.num_stack_items): size_t -> scm_bits_t
11440 (scm_contregs_t.num_stack_items): ulong -> scm_ubits_t
11441
11442 * continuations.c (scm_make_continuation): change the type of
d69c867a 11443 stack_size from long to scm_bits_t.
1be6b49c
ML
11444
11445 * ports.h: type renaming:
11446 scm_port_rw_active -> scm_port_rw_active_t (and made a typedef)
11447 scm_port -> scm_port_t
11448 scm_ptob_descriptor -> scm_ptob_descriptor_t
11449 the old names are deprecated, all in-Guile uses changed.
11450 (scm_port_t.entry): int -> scm_bits_t.
11451 (scm_port_t.line_number): int -> long.
11452 (scm_port_t.putback_buf_size): int -> size_t.
11453
11454 * __scm.h (long_long, ulong_long): deprecated (they pollute the
d69c867a 11455 global namespace and have little value beside that).
1be6b49c
ML
11456 (SCM_BITS_LENGTH): new, is the bit size of scm_bits_t (i.e. of an
11457 SCM handle).
11458 (ifdef spaghetti): include sys/types.h and sys/stdtypes.h, if they
d69c867a 11459 exist (for size_t & ptrdiff_t).
1be6b49c
ML
11460 (scm_sizet): deprecated.
11461
11462 * Makefile.am (noinst_HEADERS): add num2integral.i.c
11463
a6219f22
MV
114642001-05-23 Marius Vollmer <mvo@zagadka.ping.de>
11465
11466 * snarf.h (SCM_CONST_LONG): Use SCM_VCELL_INIT instead of
11467 SCM_VARIABLE_INIT since that it what it used to be.
11468
11469 * deprecation.c (scm_include_deprecated_features): Make docstring
9a5fa6e9 11470 ANSIsh. Thanks to Matthias Köppe!
a6219f22 11471
311b6a3c
MV
114722001-05-21 Marius Vollmer <mvo@zagadka.ping.de>
11473
9dfc4faa
MV
11474 * symbols.c (scm_mem2symbol): Re-introduce indirect cell. It is
11475 needed for weak-key hashtables.
11476
11477 * procs.c (scm_make_subr_with_generic): Add missing last argument
11478 in call to scm_c_define_gsubr_with_generic. Thanks to Ariel Rios.
11479
11480 * eval.c: Use SCM_EQ_P instead of `==' or `!=' in certain
11481 places. (scm_c_improper_memq): Return 1 instead of SCM_BOOL_T.
311b6a3c
MV
11482
11483 * eval.h (SCM_EVALIM2): Use SCM_EQ_P instead of `=='.
11484
2fc933fe
MV
114852001-05-20 Marius Vollmer <mvo@zagadka.ping.de>
11486
57ae112d
MV
11487 * symbols.c (scm_mem2symbol): Call `scm_must_strndup' instead of
11488 `duplicate_string'. Do not use an indirect cell, store symbol
11489 directly in collision list of hash table.
11490 (duplicate_string): Removed.
58bee6a8 11491
57ae112d
MV
11492 * init.c (scm_init_guile_1): Call scm_init_extensions.
11493
11494 * Makefile.am: Add "extensions.c" and related files in all the
11495 right places.
11496
11497 * extensions.h, extension.c: New files.
11498
11499 * gc.h, gc.c (scm_must_strdup, scm_must_strndup): New.
11500
2fc933fe
MV
11501 * modules.h (scm_system_module_env_p): Move out of deprecated
11502 section.
11503
11504 * rw.h (scm_init_rw): Added prototype.
11505
11506 * gsubr.h, gsubr.c (scm_c_make_gsubr, scm_c_define_gsubr,
11507 scm_c_make_gsubr_with_generic, scm_c_define_gsubr_with_generic):
11508 New functions. They replace scm_make_gsubr and
11509 scm_make_gsubr_with_generic. The `make' variants only create the
11510 gsubr object, while the `define' variants also put it into the
11511 current module. Changed all callers.
11512 (scm_make_gsubr, scm_make_gsubr_with_generic): Deprecated.
11513
11514 * procs.h, procs.c (scm_c_make_subr, scm_c_define_subr,
11515 scm_c_make_subr_with_generic, scm_c_define_subr_with_generic): New
11516 functions. They replace scm_make_subr, scm_make_subr_opt and
11517 scm_make_subr_with_generic. The `make' variants only create the
11518 subr object, while the `define' variants also put it into the
11519 current module. Changed all callers.
11520 (scm_make_subr, scm_make_subr_opt, scm_make_subr_with_generic):
11521 Deprecated.
11522
11523 * eval.c, gc.c, gh_funcs.c, goops.c, macros.c, pairs.c, ramap.c,
11524 rdelim.c, rw.c, scmsigs.c, snarf.h, values.c: Changed according to
11525 the comments above.
58bee6a8 11526
18928596
NJ
115272001-05-19 Neil Jerram <neil@ossau.uklinux.net>
11528
11529 * throw.c (scm_lazy_catch): Slight docstring clarification.
11530
21a13beb
MV
115312001-05-19 Marius Vollmer <mvo@zagadka.ping.de>
11532
e2b6ddc6
MV
11533 * throw.c: Lazy-catch handlers are no longer allowed to return.
11534 Fixed comments throughout.
11535 (scm_ithrow): Signal an error when a lazy-catch handler returns.
11536 Moved actual jump to jmpbuf into if-branch where the jmpbuf is
11537 recognized as such.
11538
21a13beb
MV
11539 * version.c (s_scm_micro_version): Fix typo in FUNC_NAME, it
11540 refered to s_scm_minor_version previously.
11541
11542 * modules.h, modules.c: Moved around a lot of code so that
11543 deprecated features appear at the bottom.
11544 (root_module_lookup_closure, scm_sym_app, scm_sym_modules,
11545 module_prefix, make_modules_in_var, beautify_user_module_x_var,
11546 scm_the_root_module, scm_make_module, scm_ensure_user_module,
11547 scm_load_scheme_module): Deprecated.
11548 (scm_system_module_env_p): Return SCM_BOOL_T directly for
11549 environments corresponding to the root module.
11550 (convert_module_name, scm_c_resolve_module,
11551 scm_c_call_with_current_module, scm_c_define_module,
11552 scm_c_use_module, scm_c_export): New.
11553 (the_root_module): New static variant of scm_the_root_module. Use
11554 it everywhere instead of scm_the_root_module.
58bee6a8 11555
21a13beb
MV
11556 * fluids.h, fluids.c (scm_internal_with_fluids): Deprecated.
11557 (scm_c_with_fluids): Renamed from scm_internal_with_fluids.
11558 (scm_c_with_fluid): New.
11559 (scm_with_fluids): Use scm_c_with_fluids instead of
11560 scm_internal_with_fluids.
58bee6a8 11561
21a13beb
MV
11562 * goops.h, goops.c (scm_init_goops_builtins): Renamed from
11563 `scm_init_goops'. Do not explicitly create/switch modules.
11564 Return SCM_UNSPECIFIED.
11565 (scm_init_goops): Only register `%init-goops-builtins' procedure.
11566 (scm_load_goops): Use scm_c_resolve_module instead of
11567 scm_resolve_module.
58bee6a8 11568
21a13beb
MV
11569 * init.c (scm_init_guile_1): Call `scm_init_goops' instead of
11570 `scm_init_oop_goops_goopscore_module'. Call `scm_init_rdelim' and
11571 `scm_init_rw' prior to loading the startup files.
11572
11573 * rdelim.h, rdelim.c: (scm_init_rdelim_builtins): Renamed from
11574 scm_init_rdelim. Do not explicitly create/switch modules.
11575 Return SCM_UNSPECIFIED.
11576 (scm_init_rdelim): Only register `%init-rdelim-builtins'
11577 procedure.
58bee6a8 11578
21a13beb
MV
11579 * rw.c (scm_init_rw_builtins): Renamed from scm_init_rw. Do not
11580 explicitly create/switch modules. Return SCM_UNSPECIFIED.
11581 (scm_init_rw): Only register `%init-rw-builtins' procedure.
11582
11583 * script.c (scm_shell): Evaluate the compiled switches in the
11584 current module, not in the root module.
11585
115862001-05-18 Marius Vollmer <mvo@zagadka.ping.de>
11587
11588 * fluids.c (scm_c_with_fluids): Rename from
11589 scm_internal_with_fluids.
11590 (scm_internal_with_fluids): Deprecated.
11591 (scm_c_with_fluid): New.
11592
09cb9e73
DH
115932001-05-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
11594
11595 * print.h (PRINTH, SCM_PRINT_H): Renamed PRINTH to SCM_PRINT_H.
11596
11597 (SCM_PORT_WITH_PS_PORT, SCM_PORT_WITH_PS_PS): Only pairs may be
11598 accessed with SCM_C[AD]R.
11599
11600 (SCM_COERCE_OUTPORT): Removed redundant SCM_NIMP test.
11601
c81ea65d
RB
116022001-05-16 Rob Browning <rlb@cs.utexas.edu>
11603
11604 * version.c (s_scm_major_version): doc fixes.
11605 (s_scm_minor_version): doc fixes.
11606 (s_scm_minor_version): new function.
11607
11608 * version.h (scm_init_version): new function.
11609
11610 * versiondat.h.in: add GUILE_MICRO_VERSION.
11611
887dfa7d
DH
116122001-05-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
11613
11614 * deprecation.c (scm_init_deprecation): Renamed
11615 GUILE_WARN_DEPRECATED_DEFAULT to SCM_WARN_DEPRECATED_DEFAULT.
11616
78930a69
MV
116172001-05-16 Marius Vollmer <mvo@zagadka.ping.de>
11618
11619 * Makefile.am (cpp_sig_symbols.c, cpp_err_symbols.c): Make
11620 dependent on cpp_cnvt.awk
11621
39cde5c5
MG
116222001-05-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11623
11624 * script.c (scm_compile_shell_switches): New command line option
11625 `--use-srfi' for loading a list of SRFIs on startup.
11626 (scm_shell_usage): Added `--use-srfi' to help message.
11627
f3f9dcbc
MV
116282001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
11629
78930a69 11630 Merged from mvo-vcell-cleanup-1-branch.
887dfa7d 11631
f3f9dcbc
MV
11632 The concept of vcells has been removed from Guile. With it,
11633 explicit obarrays and associated operations are gone. Use
11634 hashtables instead of obarrays.
887dfa7d 11635
f3f9dcbc
MV
11636 Throughout: use scm_sym2var instead of scm_sym2vcell and treat
11637 result as variable instead of vcell. Glocs no longer point to a
11638 vcell but to a variable. Use scm_c_define instead of
11639 scm_sysintern and treat the result as a variable (which it is),
11640 not a vcell.
887dfa7d 11641
f3f9dcbc
MV
11642 * variable.c, variable.h (SCM_VARVCELL, SCM_UDVARIABLEP,
11643 SCM_DEFVARIABLEP): Deprecated.
11644 (SCM_VARIABLE_REF, SCM_VARIABLE_SET, SCM_VARIABLE_LOC): New.
11645 (variable_print): Do not print name of variable.
11646 (variable_equalp): Compare values, not vcells.
11647 (anonymous_variable_sym): Removed.
11648 (make_vcell_variable): Removed.
11649 (make_variable): New, as replacement.
11650 (scm_make_variable, scm_make_undefined_variable): Do not take name
11651 hint parameter.
11652 (scm_variable_ref): Check for SCM_UNDEFINED and throw "unbound"
11653 error in that case.
11654 (scm_builtin_variable): Deprecated.
11655
11656 * symbols.c, symbols.h (scm_sym2vcell, scm_sym2ovcell_soft,
11657 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
11658 scm_intern, scm_intern0, scm_sysintern0_no_module_lookup,
11659 scm_sysintern, scm_sysintern0, scm_symbol_value0,
11660 scm_string_to_obarray_symbol, scm_intern_symbol,
11661 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned,
11662 scm_symbol_bound_p, scm_symbol_set_x, scm_gentmp, gentmp_counter):
11663 Deprecated and moved to "symbols-deprecated.c".
11664 (copy_and_prune_obarray, scm_builtin_bindings): Removed.
11665 (scm_init_symbols): Call scm_init_symbols_deprecated.
11666 * symbols-deprecated.c: New file.
11667 * Makefile.am: Added symbols-deprecated.c and related files in all
11668 the right places.
887dfa7d 11669
f3f9dcbc
MV
11670 * snarf.h (SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
11671 SCM_GLOBAL_VCELL_INIT): Deprecated.
11672 (SCM_VARIABLE, SCM_GLOBAL_VARIABLE, SCM_VARIABLE_INIT,
11673 SCM_GLOBAL_VARIABLE_INIT): New, as replacement. Changed all uses.
887dfa7d 11674
f3f9dcbc
MV
11675 * print.c (scm_iprin1): Use scm_module_reverse_lookup instead of
11676 SCM_GLOC_SYM.
11677
11678 * evalext.c, filesys.c, fports.c, gdbint.c, gh_data.c, gsubr.c,
11679 hooks.c, load.c, numbers.c, objects.c, ports.c, posix.c, procs.c,
11680 ramap.c, random.c, read.c, regex-posix.c, scmsigs.c, script.c,
11681 socket.c, srcprop.c, stacks.c, stime.c, struct.c, tag.c, throw.c:
11682 Changed according to the `throughout' comments.
11683
11684 * modules.h, modules.c (scm_module_system_booted_p): Changed type
11685 to `int'.
11686 (scm_module_type): Removed.
11687 (the_root_module): Renamed to the_root_module_var. Now points to
11688 a variable instead of a vcell. Updated all uses.
11689 (scm_the_root_module): Return SCM_BOOL_F when module systems
11690 hasn't been booted yet.
11691 (SCM_VALIDATE_STRUCT_TYPE): Removed.
11692 (scm_post_boot_init_modules): Made static.
11693 (scm_set_current_module): Call scm_post_boot_init_modules on first
11694 call.
11695 (make_modules_in, beautify_user_module_x, resolve_module,
11696 try_module_autoload, module_make_local_var_x): Tacked on "_var"
11697 suffix. Now point to variables instead of vcells. Updated all
11698 uses.
11699 (scm_module_lookup_closure): Deal with the module being SCM_BOOL_F
11700 and return SCM_BOOL_F in that case.
11701 (scm_module_transformer): Likewise.
11702 (sym_module, scm_lookup_closure_module, scm_env_module): New.
11703 (SCM_F_EVAL_CLOSURE_INTERFACE, SCM_EVAL_CLOSURE_INTERFACE_P): New.
11704 (scm_eval_closure_lookup): Do not allow new definitions when
11705 `interface' flag is set.
11706 (scm_standard_interface_eval_closure): New.
11707 (scm_pre_modules_obarray, scm_sym2var, scm_module_lookup,
11708 scm_lookup, scm_module_define, scm_define, scm_c_module_lookup,
11709 scm_c_lookup, scm_c_module_define, scm_c_define,
11710 scm_module_reverse_lookup, scm_get_pre_modules_obarray,
11711 scm_modules_prehistory): New.
11712 (scm_post_boot_init_modules): Use scm_c_define and scm_c_lookup
11713 instead of scm_intern0.
887dfa7d 11714
f3f9dcbc
MV
11715 * macros.c (scm_make_synt): Return SCM_UNSPECIFIED instead of the
11716 symbol.
11717
11718 * keywords.c (s_scm_make_keyword_from_dash_symbol): Use a regular
11719 hashtable operations to maintain the keywords, not obarray ones.
11720
11721 * init.c (scm_load_startup_files): Do not call
11722 scm_post_boot_init_modules. This is done by
11723 scm_set_current_module now.
11724 (scm_init_guile_1): Call scm_modules_prehistory. Call
11725 scm_init_variable early on.
11726
11727 * goops.c (s_scm_sys_goops_loaded): Get
11728 var_compute_applicable_methods from scm_sym2var, not from a direct
11729 invocation of scm_goops_lookup_closure.
11730
11731 * gh_funcs.c (gh_define): Return SCM_UNSPECIFIED instead of vcell.
11732
11733 * gc.c: Added simple debugging hack to mark phase of GC: When
11734 activated, do not tail-call scm_gc_mark. This gives nice
11735 backtraces.
11736 (scm_unhash_name): Removed.
11737
11738 * feature.c (features): Renamed to features_var. Now points to a
11739 variable instead of a vcell. Updated all uses.
11740
11741 * eval.h (SCM_TOP_LEVEL_LOOKUP_CLOSURE): Use
11742 `scm_current_module_lookup_closure' which will do the right thing
11743 when the module system hasn't been booted yet.
11744 (SCM_GLOC_SYM): Removed.
11745 (SCM_GLOC_VAR, SCM_GLOC_SET_VAL): New.
11746 (SCM_GLOC_VAL, SCM_GLOC_LOC): Reimplemented in terms of variables.
887dfa7d 11747
f3f9dcbc
MV
11748 * eval.c (scm_lookupcar, scm_lookupcar1): Deal with variables
11749 instead of with vcells. Do not overwrite `var' with the result of
11750 the lookup, use the new `real_var' instead. Remove `var2' in
11751 exchange (which was only used with threads).
11752 (sym_three_question_marks): New.
11753 (scm_unmemocar): Use `scm_module_reverse_lookup' instead of
11754 `SCM_GLOC_SYM'.
11755 (scm_lisp_nil, scm_lisp_t): Directly define as symbols.
11756 (scm_m_atfop): Expect the function definition to be a variable
11757 instead of a vcell.
11758 (scm_macroexp): Do not use `unmemocar', explicitely remember the
11759 symbol instead.
11760 (scm_unmemocopy): Removed thoughts about anti-macro interface.
11761 (scm_eval_args): Use more explicit code in the gloc branch of the
11762 atrocious struct ambiguity test. The optimizer will sort this
11763 out.
11764 (scm_deval_args): Likewise.
11765 (SCM_CEVAL): Likewise. Also, do not use unmemocar, explicitely
11766 remember the symbol instead. Added some comments where
11767 scm_tc3_cons_gloc really exclusively refers to structs.
11768 (scm_init_eval): Use scm_define to initialize "nil" and "t" to
11769 scm_lisp_nil and scm_lisp_t, respectively. Use scm_define instead
11770 of scm_sysintern in general.
11771
11772 * dynwind.c (scm_swap_bindings): Use SCM_GLOC_SET_VAL instead of
11773 explicit magic.
11774
11775 * debug.c (s_scm_make_gloc): Only allow proper variables, no
11776 pairs. Put the variable directly in the gloc.
11777 (s_scm_gloc_p): Use `scm_tc3_cons_gloc' instead of the magic `1'.
11778 (scm_init_debug): Use scm_c_define instead scm_sysintern.
11779
11780 * cpp_cnvt.awk: Emit "scm_c_define" instead of "scm_sysintern".
11781
11782 * backtrace.h, backtrace.c (scm_the_last_stack_fluid): Renamed to
11783 scm_the_last_stack_fluid_var. It now points to a variable instead
11784 of a vcell. Updated all uses.
11785 (scm_has_shown_backtrace_hint_p_var): Now points to a variable
11786 instead of a vcell. Updated all uses.
11787
11788 * _scm.h: Include "variables.h" and "modules.h" since almost
11789 everybody needs them now.
11790
11791 * root.h (scm_symhash, scm_symhash_vars): Removed.
11792 * gc.c (scm_init_storage): Do not initialize them.
887dfa7d 11793
7c33806a
DH
117942001-05-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
11795
11796 * eval.c (scm_init_eval): Initialize scm_undefineds and
58bee6a8 11797 scm_listofnull.
7c33806a
DH
11798
11799 * gc.c (scm_debug_newcell, scm_debug_newcell2): Fixed to behave
11800 like the SCM_NEWCELL macro counterparts.
11801
11802 (scm_init_storage, scm_init_gc): Moved initialization of
11803 scm_tc16_allocated from scm_init_gc to scm_init_storage.
11804
11805 (scm_init_storage): Moved initialization of scm_undefineds and
11806 scm_listofnull to eval.c, initializion of scm_nullstr to
11807 strings.c, initializion of scm_nullvect to vectors.c.
11808
11809 * gc.h (SCM_NEWCELL, SCM_NEWCELL2): Prefer SCM_NULLP over
11810 SCM_IMP, as in scm_debug_newcell and scm_debug_newcell2.
11811
11812 * init.c (scm_init_guile_1): Reordered some initializations and
11813 added dependcy information comments.
11814
11815 * load.c (scm_init_load): Use scm_nullstr.
11816
11817 * strings.c (scm_init_strings): Initialize scm_nullstr.
11818
11819 * vectors.c (scm_init_vectors): Initialize scm_nullvect.
11820
11bbab47
MV
118212001-05-15 Marius Vollmer <mvo@zagadka.ping.de>
11822
11823 * values.c (print_values): Print as a unreadable object, not as
9a5fa6e9 11824 multiple lines. Thanks to Matthias Köppe!
11bbab47 11825
5cd06d5e
DH
118262001-05-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
11827
11828 * deprecation.c: Fixed copyright date.
11829
11830 * deprecation.h (DEPRECATION_H, SCM_DEPRECATION_H): Renamed
11831 DEPRECATION_H to SCM_DEPRECATION_H.
11832
32bac999
TTN
118332001-05-10 Thien-Thi Nguyen <ttn@revel.glug.org>
11834
11835 * guile-doc-snarf.in: Update copyright.
11836 Fix relative path bug. Thanks to Sergey Poznyakoff.
11837
c9dcc5ae
MV
118382001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
11839
11840 * ports.c (scm_port_revealed, scm_set_port_revealed_x): Only
11841 accept open ports. Thanks to Quetzalcoatl Bradley!
11842
7c582ec9
MG
118432001-05-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11844
11845 * procs.c: Increased `scm_subr_table_room' to 800 because Guile now
11846 has 779 primitives on startup.
11847
284ab601
MV
118482001-05-09 Marius Vollmer <mvo@zagadka.ping.de>
11849
11850 * eval.c (scm_i_eval): Copy expression before passing it to
11851 SCM_XEVAL. The copy operation was removed unintendedly during my
11852 change on 2001-03-25.
11853
910d1e40
ML
118542001-05-09 Michael Livshin <mlivshin@bigfoot.com>
11855
9a5fa6e9 11856 from Matthias Köppe (thanks!):
910d1e40
ML
11857
11858 * ports.c (scm_c_read): pointer arithmetic on void pointers isn't
11859 portable.
11860
11861 * deprecation.c (s_scm_include_deprecated_features): ANSI'fied the
11862 docstring.
11863
56e55ac7
DH
118642001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
11865
11866 * gc.c (scm_init_gc): Added FIXME comment.
11867
11868 * hooks.c: Since hooks don't have a name any more, it is not
11869 necessary to include objprop.h.
11870
11871 (hook_print, scm_add_hook_x): Replace SCM_NFALSEP by !SCM_FALSEP.
11872
11873 (symbol_name, scm_make_hook_with_name): Removed.
11874
11875 (scm_create_hook): Don't set the hook's name property.
11876
11877 * hooks.h (HOOKSH, SCM_HOOKS_H): Renamed HOOKSH to SCM_HOOKS_H.
11878
11879 (SCM_HOOK_NAME, scm_make_hook_with_name): Removed.
11880
11881 * init.c (scm_init_guile_1): Hooks don't use objprops any more.
11882
11883 * numbers.c (SCM_FLOBUFLEN, FLOBUFLEN, scm_number_to_string,
11884 scm_print_real, scm_print_complex): Renamed SCM_FLOBUFLEN to
11885 FLOBUFLEN and define it unconditionally.
11886
d204b24c
MV
118872001-05-07 Marius Vollmer <mvo@zagadka.ping.de>
11888
438201b4
MV
11889 * gh_data.c (gh_lookup): Call gh_module_lookup with
11890 `scm_current_module ()', not `#f'.
11891 (gh_module_lookup): Expect a module instead of an obarray as first
11892 argument and do lookup in that module.
56e55ac7 11893
d204b24c
MV
11894 * ramap.c (raeql_1): Do not call scm_uniform_vector_length on
11895 arrays. The length of array is already determined differently and
11896 scm_uniform_vector_length does not work on arrays.
11897
26c1d549
MV
118982001-05-06 Marius Vollmer <mvo@zagadka.ping.de>
11899
fe7c2f88
MV
11900 * snarf.h (SCM_FUNC_CAST_ARBITRARY_ARGS): Use "SCM (*)()" for C++
11901 as well. "SCM (*)(...)" does not work on RedHat 7.1.
11902
26c1d549
MV
11903 * __scm.h (SCM_WTA_DISPATCH_0): Removed ARG and POS parameters,
11904 they are not used. Changed `wrong type' error into `wrong num
11905 args' error. Changed all callers.
56e55ac7 11906
26c1d549
MV
11907 * numbers.c (scm_difference): Call SCM_WTA_DISPATCH_0 when zero
11908 arguments are supplied.
11909
1c938eb8
TTN
119102001-05-05 Thien-Thi Nguyen <ttn@revel.glug.org>
11911
11912 * regex-posix.c (scm_regexp_exec): Expand docstring to briefly
11913 describe `regexp/notbol' and `regexp/noteol' execution flags.
11914
3a6379f7
TTN
11915 * strop.c (scm_substring_move_x): Doc fix; nfc.
11916
c10ecc4c
MV
119172001-05-05 Marius Vollmer <mvo@zagadka.ping.de>
11918
11919 * objects.c, objects.h (scm_valid_object_procedure_p): New.
11920 (scm_set_object_procedure_x): Use it to check argument. Fix
11921 docstring.
11922
11923 * evalext.c (scm_definedp): Fix docstring.
11924
a57a0b1e
GH
119252001-05-05 Gary Houston <ghouston@arglist.com>
11926
11927 * socket.c: use HAVE_IPV6 instead of AF_INET6 to enable IPv6
11928 support.
11929
7a095584
NJ
119302001-05-04 Neil Jerram <neil@ossau.uklinux.net>
11931
11932 * eval.c (scm_promise_p), list.c (scm_append_x, scm_reverse_x),
11933 symbols.c (scm_symbol_to_string), vports.c (scm_make_soft_port):
11934 Change R4RS references to R5RS.
11935
11936 * guile-snarf.awk.in: Fixes so that (i) blank lines in the
11937 docstring source are correctly reproduced in the output (ii)
11938 we don't anymore get occasional trailing quotes. Also reorganized
11939 and commented the code a little.
11940
11941 * scmsigs.c (scm_raise), throw.c (scm_throw): Docstring format
11942 fixes.
11943
dd2a6f3a
MG
119442001-05-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11945
11946 * strop.c (scm_string_split): New procedure.
11947
11948 * strop.h (scm_string_split): Added prototype.
11949
00120130
GH
119502001-05-04 Gary Houston <ghouston@arglist.com>
11951
11952 * socket.c: define uint32_t if netdb.h doesn't. thanks to
11953 Dale P. Smith.
11954
b65e6bfe
MV
119552001-05-02 Marius Vollmer <mvo@zagadka.ping.de>
11956
11957 * rw.c: Include "modules.h" and "strports.h".
11958
11959 * net_db.h (scm_gethost): Added prototype.
11960
11961 * deprecation.h, deprecation.c: New.
11962 * Makefile.am (libguile_la_SOURCES): Added "deprecation.c".
11963 (DOT_X_FILES): Added "deprecation.x".
11964 (modinclude_HEADERS): Added "deprecation.h".
11965
11966 * init.c: Include "deprecation.h".
11967 (scm_init_guile_1): Call scm_init_deprecation.
1c938eb8 11968
b65e6bfe
MV
119692001-05-01 Marius Vollmer <mvo@zagadka.ping.de>
11970
11971 * gh.h (gh_init_guile, gh_make_string, gh_string_length,
11972 gh_string_ref, gh_string_set_x, gh_substring, gh_string_append):
11973 New.
11974
b0e5fd8c
GH
119752001-04-29 Gary Houston <ghouston@arglist.com>
11976
11977 * rw.c: new file, implementing C part of module (ice-9 rw).
11978 (scm_read_string_x_partial): moved from ioext.c
11979 (scm_init_rw): new proc.
11980 * rw.h: new file.
11981 init.c: include rw.h and call scm_init_rw.
11982 Makefile.am: include rw.c and rw.h.
11983
0b2da99c
RB
119842001-04-28 Rob Browning <rlb@cs.utexas.edu>
11985
11986 * numbers.c: enabled local definition of SCM_FLOBUFLEN until we
11987 know what's supposed to happen to it.
11988
11989 * list.h (scm_list_star): deprecation expired - removed.
11990
11991 * numbers.h (scm_dblproc): deprecation expired - removed.
11992 (SCM_UNEGFIXABLE): deprecation expired - removed.
11993 (SCM_FLOBUFLEN): deprecation expired - removed.
11994 (SCM_INEXP): deprecation expired - removed.
11995 (SCM_CPLXP): deprecation expired - removed.
11996 (SCM_REAL): deprecation expired - removed.
11997 (SCM_IMAG): deprecation expired - removed.
11998 (SCM_REALPART): deprecation expired - removed.
11999 (scm_makdbl): deprecation expired - removed.
12000 (SCM_SINGP): deprecation expired - removed.
12001 (SCM_NUM2DBL): deprecation expired - removed.
12002 (SCM_NO_BIGDIG): deprecation expired - removed.
12003
12004 * tags.h (SCM_DOUBLE_CELLP): deprecation expired - removed.
12005 (scm_tc_dblr): deprecation expired - removed.
12006 (scm_tc_dblc): deprecation expired - removed.
12007 (scm_tc16_flo): deprecation expired - removed.
12008 (scm_tc_flo): deprecation expired - removed.
12009
12010 * tag.h (scm_tag): deprecation expired - removed.
12011
12012 * tag.c: (scm_tag): deprecation expired - removed.
12013
12014 * ioext.c: (scm_fseek): deprecation expired - removed.
12015
12016 * ioext.h (scm_fseek): deprecation expired - removed.
12017
12018 * gh_data.c (gh_int2scmb): deprecation expired - removed.
12019
12020 * gh.h (gh_int2scmb): deprecation expired - removed.
12021
e3334972
NJ
120222001-04-28 Neil Jerram <neil@ossau.uklinux.net>
12023
12024 * stacks.c (scm_make_stack): Fix typo in docstring.
12025
a0f979ac
RB
120262001-04-27 Rob Browning <rlb@cs.utexas.edu>
12027
12028 * error.c (scm_sysmissing): deprecation expired - removed.
12029
12030 * error.h (scm_sysmissing): deprecation expired - removed.
12031
12032 * gc.c
12033 (scm_init_gc): gc-thunk deprecation expired - removed.
12034 (scm_gc_vcell): deprecation expired - removed.
12035 (gc_async_thunk): scm_gc_vcell related code removed.
12036
12037 * vectors.h (SCM_NVECTORP): deprecation expired - removed.
12038
12039 * strings.h
12040 (SCM_NSTRINGP): deprecation expired - removed.
12041 (SCM_NRWSTRINGP): deprecation expired - removed.
12042
12043 * continuations.h (SCM_SETJMPBUF): deprecation expired - removed.
12044
12045 * chars.h
12046 (SCM_ICHRP): deprecation expired - removed.
12047 (SCM_ICHR): deprecation expired - removed.
12048 (SCM_MAKICHR): deprecation expired - removed.
12049
12050 * ports.h
12051 (SCM_INPORTP): deprecation expired - removed.
12052 (SCM_OUTPORTP): deprecation expired - removed.
12053
253081cf
MV
120542001-04-25 Marius Vollmer <mvo@zagadka.ping.de>
12055
12056 * modules.c (scm_module_type): New.
12057 (scm_post_boot_init_modules): Initialize from Scheme value.
12058 (the_module, scm_current_module, scm_init_modules): the_module is
12059 now a C only fluid.
12060 (scm_current_module): Export to Scheme.
12061 (scm_set_current_module): Do not call out to Scheme, do all the
12062 work in C. Export procedure to Scheme. Only accept modules, `#f'
12063 is no longer valid as the current module. Only set
12064 scm_top_level_lookup_closure_var and scm_system_transformer when
12065 they are not deprecated.
12066 (scm_module_transformer, scm_current_module_transformer): New.
12067
12068 * modules.h (scm_module_index_transformer, SCM_MODULE_TRANSFORMER,
12069 scm_current_module_transformer, scm_module_transformer): New.
1c938eb8 12070
253081cf
MV
12071 * gh_data.c: Removed FIXME comment about gh_lookup returning
12072 SCM_UNDEFINED. That's the right thing to do.
12073
12074 * eval.h, eval.c (scm_system_transformer): Deprecated by moving it
12075 into the conditionally compiled sections.
12076 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Use
12077 scm_current_module_transformer instead of scm_system_transformer.
12078 * init.c (start_stack): Move initialization of
12079 scm_system_transformer to the deprecated section.
1c938eb8 12080
1f7f9ed4
NJ
120812001-04-22 Neil Jerram <neil@ossau.uklinux.net>
12082
12083 * throw.c (scm_throw): Correct docstring.
12084
66c73b76
GH
120852001-04-22 Gary Houston <ghouston@arglist.com>
12086
eefae538
GH
12087 * socket.c: attempted to improve the docstrings slightly.
12088
66c73b76
GH
12089 * net_db.c: remove bogus "close" declaration.
12090 (inet_aton declaration, scm_inet_aton, scm_inet_ntoa,
12091 scm_inet_netof, scm_lnaof, scm_inet_makeaddr, INADDR_ANY etc.):
12092 moved to socket.c.
12093 * net_db.h: declarations moved too.
12094
12095 * socket.c (scm_htonl, scm_ntohl): use uint32_t instead of unsigned
12096 long.
12097 (ipv6_net_to_num, ipv6_num_to_net): new static procedures.
12098 (VALIDATE_INET6): new macro.
12099 (scm_inet_pton, scm_inet_ntop): new procedures, implementing
12100 inet-pton and inet-ntop.
12101 (scm_fill_sockaddr): use VALIDATE_INET6 and ipv6_num_to_net.
12102 (scm_addr_vector): use ipv6_net_to_num.
1c938eb8 12103
7a7f7c53
DH
121042001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
12105
12106 * eq.c (scm_equal_p), ramap.c (scm_init_ramap): Don't compute the
12107 smob number explicitly. Use SCM_TC2SMOBNUM instead.
12108
12109 * gc.c (MARK, scm_gc_sweep): Only check for illegal heap objects
12110 when compiled in debug mode.
12111
12112 (scm_gc_sweep): Only call smob's free function if it is defined.
12113
12114 * print.c (scm_iprin1): No need to check for validity of smob
12115 type or existence of print function.
12116
12117 * smob.[ch] (scm_smobs): Made into a fixed size global array.
12118 Resizing will not work well with preemptive threading.
12119
12120 * smob.c (scm_smob_print): Don't use SCM_CDR to access smob data.
12121
12122 (scm_make_smob_type): Extracted initialization of smob
12123 descriptors to scm_smob_prehistory. Don't use scm_numsmob outside
12124 of the critical section.
12125
12126 (scm_smob_prehistory): Initialize all smob descriptors. By
12127 default, don't assign a smob free function: Most smob types don't
12128 need one.
12129
12130 * smob.h (SMOBH, SCM_SMOB_H): Renamed SMOBH to SCM_SMOB_H.
12131
e1368a8d
GH
121322001-04-21 Gary Houston <ghouston@arglist.com>
12133
12134 * socket.c (FLIP_NET_HOST_128): new macro.
12135 (scm_fill_sockaddr): use new macro.
12136 (scm_addr_vector): completed IPv6 address support. added const
12137 to the address parameter.
12138
5a525b84
GH
121392001-04-20 Gary Houston <ghouston@arglist.com>
12140
12141 * socket.c (scm_fill_sockaddr): call htons for sin6_port.
12142 Don't assign sin6_scope_id in structure unless HAVE_SIN6_SCOPE_ID
12143 is defined.
12144 (scm_addr_vector): use a switch instead of multiple if statements.
12145 Add support for IPv6 (incomplete) .
e1368a8d 12146 MAX_ADDR_SIZE: increase to size of struct sockaddr_in6 if needed.
5a525b84 12147
1a551638
DH
121482001-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
12149
12150 * struct.c (scm_free_structs): Only pairs may be accessed with
12151 SCM_C[AD]R.
12152
c07b3fef
MD
121532001-04-19 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12154
a9d861e3
MD
12155 * unif.h (SCM_ARRAY_CONTIGUOUS): Reintroduced as deprecated.
12156
c07b3fef
MD
12157 * __scm.h (SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
12158 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Inserted required
12159 parentheses in order to get the correct associativity.
12160
af7546eb
DH
121612001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12162
12163 * unif.c (scm_array_to_list): Added missing handling of arrays of
12164 bytes. Thanks to Masao Uebayashi for the bug report.
12165
4daecfee
DH
121662001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12167
12168 * debug.c (scm_procedure_source): Use SCM_CLOSURE_FORMALS more
12169 consistently.
12170
726d810a
DH
121712001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12172
12173 * procs.h (SCM_CLOSURE_FORMALS): New macro.
12174
12175 * debug.c (scm_procedure_source), eval.c (scm_badformalsp,
12176 SCM_CEVAL, SCM_APPLY), goops.c (get_slot_value, set_slot_value),
1c938eb8 12177 procprop.c (scm_i_procedure_arity), sort.c (closureless): Use
726d810a
DH
12178 SCM_CLOSURE_FORMALS.
12179
12180 * eval.c (scm_badformalsp, SCM_CEVAL), procprop.c
12181 (scm_i_procedure_arity): Prefer stronger predicates like
12182 SCM_NULLP or SCM_FALSEP over SCM_IMP.
12183
12184 * macros.c (macro_print): Extracted macro printing code from
12185 print.c and simplified it.
12186
12187 (scm_macro_type): Use SCM_MACRO_TYPE;
12188
12189 (scm_init_macros): Use macro_print for printing macros.
12190
12191 * print.c (scm_print_opts): Improved option documentation.
12192
12193 (scm_iprin1): Extracted printing of macros to macros.c.
12194 Simplified printing of ordinary closures.
12195
12196 * procs.c (scm_thunk_p): Fixed handling of closures. Thanks to
12197 Martin Grabmueller for the bug report.
12198
e038c042
DH
121992001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12200
12201 This patch eliminates some further applications of SCM_C[AD]R to
12202 non pair cells.
12203
12204 * gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR): Deprecated. These have
12205 never been applied to real pairs.
12206
12207 * srcprop.h (SCM_SOURCE_PROPERTY_FLAG_BREAK): Added.
12208
12209 (SRCPROPBRK): Use SCM_SOURCE_PROPERTY_FLAG_BREAK.
12210
12211 * unif.h (SCM_ARRAY_CONTIGUOUS, SCM_ARRAY_FLAG_CONTIGUOUS,
12212 SCM_ARRAY_CONTP): Renamed SCM_ARRAY_CONTIGUOUS to
12213 SCM_ARRAY_FLAG_CONTIGUOUS and use it.
12214
12215 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
12216 Added.
12217
12218 * srcprop.h (SRCPROPH), unif.h (UNIFH): Renamed to
12219 SCM_SOURCE_PROPERTIES_H and SCM_UNIFORM_VECTORS_H, respectively.
12220
12221 * srcprop.h (SETSRCPROPBRK, CLEARSRCPROPBRK), unif.c
12222 (scm_dimensions_to_uniform_array, scm_ra_set_contp): Don't use
12223 SCM_SET{AND,OR}_CAR.
12224
3453619b
GH
122252001-04-17 Gary Houston <ghouston@arglist.com>
12226
12227 * some initial support for IPv6:
1c938eb8 12228
3453619b
GH
12229 * socket.c (scm_fill_sockaddr): improve the argument validation.
12230 don't allocate memory until all args are checked. instead of
12231 unconditional memset of soka, try setting sin_len to 0 if
12232 SIN_LEN is defined. add support for AF_INET6. define FUNC_NAME.
12233 (scm_socket, scm_connect): extend docstrings for IPv6.
12234 (scm_init_socket): intern AF_INET6 and PF_INET6.
12235
216eedfc
DH
122362001-04-17 Niibe Yutaka <gniibe@m17n.org>
12237
12238 * srcprop.c (scm_make_srcprops): Added SCM_ALLOW_INTS which
12239 matches SCM_DEFER_INTS at the beginning of the function.
12240
12241 * mallocs.c (scm_malloc_obj): Remove un-matched SCM_ALLOW_INTS.
12242
12243 * gc.c (scm_igc): Unconditionally call
12244 SCM_CRITICAL_SECTION_START/END.
12245
12246 * fluids.c (next_fluid_num): Unconditionally call
12247 SCM_CRITICAL_SECTION_START/END.
12248 (s_scm_make_fluid): Remove un-matched SCM_DEFER_INTS.
12249
12250 * coop-defs.h (SCM_THREAD_DEFER, SCM_THREAD_ALLOW,
12251 SCM_THREAD_REDEFER, SCM_THREAD_REALLOW_1, SCM_THREAD_REALLOW_2):
12252 Removed.
12253
12254 * __scm.h (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END):
12255 Defined as nothing for the case of !defined(USE_THREADS).
12256 (SCM_THREAD_DEFER, SCM_THREAD_ALLOW, SCM_THREAD_REDEFER):
12257 Removed.
12258 (<stdio.h>): Include when (SCM_DEBUG_INTERRUPTS == 1).
12259 (SCM_CHECK_NOT_DISABLED, SCM_CHECK_NOT_ENABLED): Print FILE and
12260 LINE.
12261 (SCM_DEFER_INTS, SCM_ALLOW_INTS_ONLY, SCM_ALLOW_INTS,
12262 SCM_REDEFER_INTS, SCM_REALLOW_INTS): Don't use
12263 SCM_THREAD_DEFER/SCM_THREAD_ALLOW. Instead, use
12264 SCM_CRITICAL_SECTION_START/END.
12265 (SCM_REALLOW_INTS: Bug fix. Don't call
12266 SCM_THREAD_SWITCHING_CODE.
12267 (SCM_TICK): Don't use SCM_DEFER_INTS/SCM_ALLOW_INTS. Instead, use
12268 SCM_THREAD_SWITCHING_CODE directly.
12269 (SCM_ENTER_A_SECTION): Unconditionally use
12270 SCM_CRITICAL_SECTION_START/END. (was:
12271 SCM_DEFER_INTS/SCM_ALLOW_INTS when SCM_POSIX_THREADS defined).
12272
122732001-04-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12274
12275 * __scm.h (SCM_CAREFUL_INTS, SCM_DEBUG_INTERRUPTS): Replaced the
12276 macro SCM_CAREFUL_INTS by the macro SCM_DEBUG_INTERRUPTS and
12277 allowed to explicitly set this macro via the CFLAGS variable
12278 during make.
12279
12280 * fluids.c (next_fluid_num), gc.c (scm_igc), coop-defs.h
12281 (SCM_THREAD_CRITICAL_SECTION_START,
12282 SCM_THREAD_CRITICAL_SECTION_END): Renamed
12283 SCM_THREAD_CRITICAL_SECTION_START/END to
12284 SCM_CRITICAL_SECTION_START/END.
12285
f22ed5a0
KN
122862001-04-11 Keisuke Nishida <kxn30@po.cwru.edu>
12287
12288 * debug-malloc.c (grow, scm_debug_malloc_prehistory): Use memset
12289 instead of bzero.
1c938eb8 12290
f22ed5a0 12291 * coop.c, iselect.c (FD_ZERO_N): Unconditionally use memset.
1c938eb8 12292 (MISSING_BZERO_DECL): Remove the declaration.
f22ed5a0
KN
12293
12294 Thanks to NIIBE Yutaka.
12295
508ded1c
MD
122962001-04-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12297
a087ba81
MD
12298 * init.c, goops.c, goops.h: Reverted change of 2001-03-29. (The
12299 goops module should be registered in order to work for an
12300 application which uses libguile statically linked.)
508ded1c 12301
e4b265d8
DH
123022001-04-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
12303
12304 * numbers.[ch] (scm_num2long, scm_num2long_long,
12305 scm_num2ulong_long, scm_num2ulong): Argument position is an
12306 unsigned integer.
12307
12308 * environments.c (eval_environment_folder,
12309 import_environment_folder), gh_data.c (gh_scm2longs,
12310 gh_scm2floats, gh_scm2doubles): Distinguish between 0 and NULL
12311 for integers and pointers, respectively.
12312
12313 * gh_data.c (gh_scm2ulong, gh_scm2long, gh_scm2int), socket.c
12314 (scm_fill_sockaddr), unif.c (scm_array_set_x), validate.h
12315 (SCM_NUM2ULONG, SCM_NUM2LONG, SCM_NUM2LONG_DEF,
12316 SCM_NUM2LONG_LONG): Don't pass argument positions as pointers.
12317
12318 * filesys.c (scm_open_fdes, scm_open), net_db (scm_inet_ntoa,
12319 scm_inet_netof, scm_lnaof, scm_gethost, scm_getproto), posix.c
12320 (scm_utime), ramap.c (scm_array_fill_int), scmsigs.c
12321 (scm_sigaction), socket.c (scm_htonl, scm_ntohl, scm_sendto),
12322 stime.c (scm_localtime, scm_gmtime), struct.c (scm_struct_set_x),
12323 validate.h (SCM_VALIDATE_LONG_COPY): Whitespace fixes.
12324
89d04205
NJ
123252001-04-09 Neil Jerram <neil@ossau.uklinux.net>
12326
12327 * strings.c (scm_read_only_string_p): Update docstring to reflect
12328 current (non-)usage of "read only" strings.
40f83c3e
NJ
12329 (scm_make_shared_substring): Clarify docstring by changing
12330 "semantics" to "arguments".
89d04205 12331
4d66be54
MG
123322001-04-06 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12333
12334 * hooks.c (scm_make_hook, scm_make_hook_with_name),
12335 (scm_hook_p, scm_hook_empty_p, scm_run_hook): Docstring
12336 improvements.
12337
1e6808ea
MG
123382001-04-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12339
12340 The following changes make the documentation more consistent.
1c938eb8 12341
1e6808ea
MG
12342 * rdelim.c (scm_write_line), posix.c (scm_utime), ports.c
12343 (scm_seek), net_db.c (scm_inet_aton, scm_inet_ntoa),
12344 (scm_inet_netof, scm_lnaof, scm_inet_makeaddr), ioext.c
12345 (scm_ftell): Changed @smalllisp ... @end smalllisp to @lisp
12346 ... @end lisp.
12347
12348 * vports.c (scm_make_soft_port), version.c (scm_version), unif.c
12349 (scm_array_dimensions, scm_make_shared_array),
12350 (scm_transpose_array, scm_enclose_array, scm_bit_count_star),
12351 throw.c (scm_catch), struct.c (scm_make_vtable_vtable), strop.c
12352 (scm_string_rindex, scm_string_index, scm_substring_fill_x),
12353 (scm_string_null_p), strings.c (scm_read_only_string_p), root.c
12354 (scm_call_with_dynamic_root), ramap.c (scm_array_index_map_x),
12355 posix.c (scm_mknod), numbers.c (scm_logtest, scm_logbit_p),
12356 macros.c (scm_makmmacro), list.c (scm_append), environments.c
12357 (scm_environment_fold), dynwind.c (s_scm_dynamic_wind): Changed
12358 @example ... @end example to @lisp ... @end lisp.
12359
12360 * weaks.c (scm_weak_vector): Corrected docstring.
12361
12362 * hashtab.c (scm_hashq_ref, scm_hashq_set_x, scm_hashq_remove_x),
12363 (scm_hashv_ref, scm_hashv_set_x, scm_hashv_remove_x),
12364 (scm_hash_ref, scm_hash_set_x, scm_hash_remove_x, scm_hashx_ref),
12365 (scm_hashx_set_x, scm_hashx_get_handle),
12366 (scm_hashx_create_handle_x), regex-posix.c (scm_make_regexp),
12367 (scm_regexp_exec, scm_regexp_p), numbers.c (scm_logtest),
12368 vectors.c (scm_vector_fill_x), strings.c
12369 (scm_make_shared_substring), symbols.c (scm_string_to_symbol),
12370 objprop.c (scm_set_object_properties_x):
12371 (scm_set_object_property_x), throw.c (scm_catch, scm_lazy_catch),
12372 strports.c (scm_call_with_input_string), ports.c
12373 (scm_truncate_file), ioext.c (scm_ftell), ports.c (scm_seek),
12374 list.c (scm_append_x), dynwind.c (scm_dynamic_wind), error.c
12375 (scm_error_scm), vports.c (scm_make_soft_port), weaks.c
12376 (scm_make_weak_vector,scm_weak_vector_p),
12377 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table),
12378 (scm_make_doubly_weak_hash_table, scm_weak_key_hash_table_p),
12379 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
12380 macros.c (scm_macro_type), dynl.c (scm_dynamic_link),
12381 (scm_dynamic_unlink, scm_dynamic_call, scm_dynamic_args_call):
12382 Made parameter names match documentation by renaming parameters
12383 and/or fixing docstrings.
1c938eb8 12384
1e6808ea
MG
12385 * numbers.c (scm_ash): Corrected Texinfo markup.
12386
12387 * strop.c (scm_string_index, scm_string_rindex),
12388 (scm_substring_fill_x, scm_string_null_p): Removed `qdocs'.
12389
12390 * vports.c (scm_make_soft_port), unif.c
12391 (scm_uniform_vector_length, scm_array_p, scm_array_rank),
12392 (scm_dimensions_to_uniform_array, scm_transpose_array),
12393 (scm_array_in_bounds_p, scm_uniform_vector_ref),
12394 (scm_bit_count, scm_bit_position, scm_bit_count_star),
12395 (scm_array_to_list, scm_list_to_uniform_array),
12396 (scm_array_prototype, symbols.c (scm_string_to_symbol), strports.c
12397 (scm_open_input_string, scm_open_output_string),
12398 (scm_get_output_string), strop.c (scm_string_copy),
12399 (scm_string_fill_x), strings.c (scm_string_p, scm_string), stime.c
12400 (scm_get_internal_real_time, scm_times),
12401 (scm_get_internal_run_time, scm_current_time, scm_gettimeofday),
12402 (scm_localtime, scm_gmtime), socket.c (scm_htons, scm_ntohs),
12403 (scm_htonl, scm_ntohl, scm_socket, scm_socketpair),
12404 (scm_getsockopt, scm_getsockname, scm_getpeername, scm_recvfrom),
12405 simpos.c (scm_system), random.c (scm_random_uniform),
12406 (scm_random_normal, scm_random_exp), ramap.c
12407 (scm_array_equal_p), posix.c (scm_pipe, scm_getgroups),
12408 (scm_status_exit_val, scm_status_term_sig, scm_status_stop_sig),
12409 (scm_getppid, scm_getuid, scm_getgid, scm_geteuid, scm_getegid),
12410 (scm_getpgrp, scm_ttyname, scm_ctermid, scm_tcgetpgrp, scm_uname),
12411 (scm_environ, scm_tmpnam, scm_mkstemp, scm_access, scm_getpid),
12412 (scm_setlocale), ports.c (scm_char_ready_p, scm_drain_input),
12413 (scm_pt_size, scm_pt_member, scm_port_revealed, scm_port_mode),
12414 (scm_close_port, scm_input_port_p, scm_output_port_p, scm_port_p),
12415 (scm_port_closed_p, scm_eof_object_p, scm_read_char),
12416 (scm_peek_char), pairs.c (scm_pair_p, scm_cons), numbers.c
12417 (scm_logand, scm_logior, scm_logxor, scm_lognot),
12418 (scm_integer_expt, scm_bit_extract, scm_logcount),
12419 (scm_integer_length, scm_string_to_number, scm_inexact_to_exact),
12420 net_db.c (scm_inet_netof, scm_lnaof), modules.c
12421 (scm_interaction_environment), macros.c (scm_makacro),
12422 (scm_makmacro, scm_makmmacro), keywords.c (scm_keyword_p), ioext.c
12423 (scm_ftell, scm_dup_to_fdes, scm_fileno, scm_isatty_p),
12424 (scm_fdopen, scm_fdes_to_ports), gc.c (scm_gc_stats), fluids.c
12425 (scm_fluid_ref), filesys.c (scm_open_fdes),
12426 (scm_stat, scm_directory_stream_p, scm_getcwd, scm_readlink):
12427 Docstring correction: `Returns' -> `Return'
12428
1c938eb8
TTN
12429 * gc.c (scm_set_debug_cell_accesses_x):
12430 (s_scm_gc_set_debug_check_freelist_x):
1e6808ea
MG
12431 * fluids.c (scm_fluid_p): Added texinfo markup.
12432
12433 * error.c (scm_strerror): Made docstring more precise.
12434
12435 * vectors.c (scm_vector_p, scm_vector, scm_make_vector),
12436 (scm_vector_to_list, _scm_vector_fill_x), symbols.c
12437 (scm_symbol_p, scm_symbol_to_string), strorder.c
12438 (scm_string_equal_p, scm_string_ci_equal_p, scm_string_less_p),
12439 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p),
12440 (scm_string_ci_less_p, scm_string_ci_leq_p, scm_string_ci_gr_p):
12441 (scm_string_ci_geq_p), strop.c (scm_string_copy),
12442 (scm_string_fill_x): Removed `(r5rs)' from docstrings.
12443
9a6976cd
DH
124442001-04-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
12445
12446 * gc.c (MARK): Re-introduce a cheap sanity test for non debug
12447 mode, as suggested by Michael Livshin.
12448
463b2219
ML
124492001-03-31 Michael Livshin <mlivshin@bigfoot.com>
12450
12451 * backtrace.c (display_backtrace_body): since the `print_state'
12452 variable is not used (instead its data field is used directly as
12453 `pstate'), protect it from the hungry compiler optimizations.
12454 thanks to Bill Schottstaedt for the report.
12455
61045190
DH
124562001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
12457
12458 * gc.[ch] (scm_tc16_allocated): New type tag for allocated cells.
12459 It is only defined and used if guile is compiled with
12460 SCM_DEBUG_CELL_ACCESSES set to true. It's purpose is, to never
12461 let cells with a free_cell type tag be visible outside of the
12462 garbage collector when in debug mode.
12463
12464 * gc.c (scm_debug_cell_accesses_p): Set to true as default.
12465
12466 (scm_assert_cell_valid): Use a local static variable to avoid
12467 recursion.
12468
12469 (MARK): Only check for rogue cell pointers in debug mode. Use
12470 scm_cellp for this purpose and place all checks for rogue pointers
12471 into that function. Further, since due to conservative scanning
12472 we may encounter free cells during marking, don't use the standard
12473 cell type accessor macro to determine the cell type.
12474
12475 (scm_cellp): Check if the cell pointer actually points into a
12476 card header.
12477
12478 (scm_init_gc): Initalize scm_tc16_allocated.
12479
12480 * gc.h (GCH): Renamed to SCM_GC_H.
12481
12482 (SCM_VALIDATE_CELL): Enclose the expression in brackets. This
12483 might be unnecessary, but I feel better this way :-)
12484
12485 (SCM_GC_CELL_TYPE): New macro.
12486
12487 (SCM_SETAND_CDR, SCM_SETOR_CDR): Deprecated. These are not used
12488 in guile, and it is unlikely that they will be applied to real
12489 pairs anyway.
12490
12491 (SCM_SET_FREE_CELL_TYPE): Removed. It was not used.
12492
12493 (SCM_GC_SET_ALLOCATED): New macro. Only non-empty if guile is
12494 compiled with SCM_DEBUG_CELL_ACCESSES set to true.
12495
12496 (SCM_NEWCELL, SCM_NEWCELL2): Use of SCM_GC_SET_ALLOCATED will
12497 make sure that in debug mode no free cell will ever be visible
12498 outside of the garbage collector.
12499
85d6df6a
DH
125002001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
12501
12502 * async.c (scm_asyncs_pending): Don't use != to compare SCM
12503 values.
12504
12505 * async.c (scm_system_async), variable.c (scm_make_variable,
12506 scm_make_undefined_variable): Use scm_cons to create a pair.
12507
12508 * debug.c (scm_reverse_lookup): Perform proper type checking.
12509 Remove suspicious use of SCM_SLOPPY_CONSP.
12510
12511 * eq.c (scm_equal_p), tags.h (SCM_ECONSP): Use SCM_CONSP instead
12512 of SCM_SLOPPY_CONSP. A sane compiler should be able to perform
12513 the corresponding optimization.
12514
12515 * eval.c (iqq): Use proper type check.
12516
12517 (scm_m_expand_body): Remove redundant type checks.
12518
12519 (promise_print): Don't access promise cells as pairs.
12520
12521 * eval.c (EVALCAR, iqq, scm_m_expand_body, scm_eval_args,
12522 scm_deval_args SCM_CEVAL), guardians.c (scm_guard), hashtab.c
12523 (scm_internal_hash_fold), print.c (scm_iprlist): Use !SCM_CELLP
12524 for SCM_NCELLP, !SCM_CONSP for SCM_NCONSP, !SCM_IMP for SCM_NIMP,
12525 !SCM_FALSEP for SCM_NFALSEP, !SCM_NULLP for SCM_NNULLP
12526
12527 * eval.c (scm_m_define, scm_macroexp, SCM_CEVAL), print.c
12528 (scm_iprin1): Use new macro predicate and accessors.
12529
12530 * eval.h (scm_tc16_macro): Removed declaration. It is declared
12531 in macros.h.
12532
12533 * eval.h (EVALH), macros.h (MACROSH), ports.h (PORTSH), procs.h
12534 (PROCSH), tags.h (TAGSH), variable.h (VARIABLEH): Renamed to
12535 SCM_EVAL_H, SCM_MACROS_H, SCM_PORTS_H, SCM_PROCS_H, SCM_TAGS_H and
12536 SCM_VARIABLE_H. Even the macros that are used to inhibit
12537 including a header file twice should be in the SCM_ namespace.
12538
12539 * fluids.c (scm_swap_fluids, scm_swap_fluids_reverse),
12540 properties.c (scm_primitive_property_ref,
12541 scm_primitive_property_del_x): Prefer stronger predicates like
12542 SCM_NULLP or SCM_FALSEP over SCM_IMP.
12543
12544 * gc.c (MARK): Use proper macros to access procedure-with-setter
12545 cell elements and closure cell elements.
12546
12547 (gc_sweep_freelist_finish, scm_gc_sweep, init_heap_seg): Don't
12548 access free cells as pairs.
12549
12550 (scm_unprotect_object): scm_hashq_get_handle returns #f if
12551 no hashtab entry is found.
12552
12553 * gc.c (scm_gc_sweep), ports.c (scm_close_port): Use new macro
12554 SCM_CLR_PORT_OPEN_FLAG.
12555
12556 * guardians.c (TCONC_IN), print.c (scm_free_print_state): Don't
12557 use SCM_SET_C[AD]R for uninitialized cells.
12558
12559 * hashtab.c (scm_hash_fn_get_handle): Use SCM_VALIDATE_VECTOR.
12560 If the hashtable has no slots, return #f instead of '(). This
12561 unifies the return value with most assoc-functions.
12562
12563 (scm_hash_fn_ref): Use proper type check.
12564
12565 (scm_hashq_get_handle, scm_hashv_get_handle, scm_hash_get_handle):
12566 Removed references to non-existing functions from documentation.
12567
12568 * keywords.c (scm_keyword_dash_symbol): Use proper macros to
12569 access keyword cell elements.
12570
12571 * macros.h (SCM_MACROP, SCM_MACRO_TYPE, SCM_MACRO_CODE): New
12572 macros.
12573
12574 * ports.h (SCM_CLR_PORT_OPEN_FLAG): New macro.
12575
12576 * print.c (scm_iprlist): Added comment. Improved loop
12577 conditions.
12578
12579 * procs.h (SCM_ENV, SCM_SETENV): Don't access closure cells as
12580 pairs.
12581
12582 * smob.c (scm_markcdr): Don't access smob cells as pairs.
12583
12584 * tags.h (SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP): Deprecated.
12585
12586 * throw.c (ACTIVATEJB, DEACTIVATEJB): Don't access jump buffer
12587 cells as pairs.
12588
12589 * variable.c (variable_print, variable_equalp, scm_variable_ref,
12590 scm_variable_set_x): Use proper macros to access variable cell
12591 elements.
12592
12593 (scm_variable_bound_p): Don't use SCM_NEGATE_BOOL.
12594
12595 * variable.h (SCM_VARVCELL): Don't access variable cells as
12596 pairs.
12597
12598 * vectors.c (scm_vector), weaks.c (scm_weak_vector): Simplified,
12599 added FIXME comment, removed register specifier.
12600
1b27e91a
KN
126012001-03-29 Keisuke Nishida <kxn30@po.cwru.edu>
12602
12603 * goops.c, goops.h (scm_init_oop_goops_goopscore_module): Deprecated.
12604 * init.c (scm_init_guile_1): Don't init goopscore module.
12605
16c634ec
MV
126062001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
12607
12608 * eval.c (SCM_APPLY): Check that arg1 is bound for scm_tc7_cxr.
12609
91344ceb
MG
126102001-03-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12611
12612 * strop.c (scm_string_to_list): Fixed docstring markup.
12613 (scm_string_upcase_x, scm_string_upcase, scm_string_downcase_x),
12614 (scm_string_downcase, scm_string_capitalize_x),
12615 (scm_string_capitalize): Rewrote and corrected docstrings.
12616 (scm_string_ci_to_symbol): Made docstring more explicit.
12617
07576812
MV
126182001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
12619
12620 * values.h (scm_values_vtable, SCM_VALUESP): Moved here so that
12621 eval.c can use it.
12622 (scm_call_with_values): Removed.
12623 * values.c (values_vtable, scm_values_vtable): Added "scm_" prefix
12624 so that it can be exported.
12625 (scm_call_with_values): Removed.
1c938eb8 12626
07576812
MV
12627 * tags.h (SCM_IM_CALL_WITH_VALUES): New isym.
12628 * eval.c: Include "libguile/values.h"
12629 (scm_m_at_call_with_values, scm_sym_at_call_with_values):
12630 New.
12631 (unmemocopy, scm_ceval, scm_deval): Handle new isym.
12632 * eval.h (scm_sym_at_call_with_values, scm_m_at_call_with_values):
12633 New delcarations to support above change.
12634
12635 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Fix syntax
12636 errors with last change.
1c938eb8 12637
07576812
MV
126382001-03-25 Marius Vollmer <mvo@zagadka.ping.de>
12639
12640 * eval.c (scm_primitive_eval_x, scm_primitive_eval, scm_i_eval_x,
12641 scm_i_eval): Moved the application of the system transformer from
12642 scm_i_eval to scm_primitive_eval.
12643
a17bb5fd
NJ
126442001-03-23 Neil Jerram <neil@ossau.uklinux.net>
12645
a6be01a4
NJ
12646 * guile-snarf.awk.in: Substitute "\\" with "\" in .doc output.
12647
a17bb5fd
NJ
12648 * strop.c (scm_string_index): Fix docstring line break
12649 regression.
12650
12651 * list.c (scm_cons_star): Fix docstring typo.
12652
be54b15d
DH
126532001-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
12654
12655 * gc.c (scm_init_storage), gdbint.c (scm_init_gdbint), numbers.c
12656 (big2str), ports.c (scm_drain_input), read.c (scm_read,
12657 scm_grow_tok_buf), strings.c (scm_string, scm_makfromstr,
12658 scm_make_string, scm_string_append), strports.c (st_resize_port,
12659 scm_object_to_string), unif.c (scm_make_uve): Replace calls to
12660 scm_makstr with calls to scm_allocate_string.
12661
12662 * strings.[ch] (scm_allocate_string): New function.
12663
12664 * strings.[ch] (scm_makstr): Deprecated.
12665
789ecc05
GH
126662001-03-18 Gary Houston <ghouston@arglist.com>
12667
6d163216
GH
12668 * posix.c (scm_tmpnam): check that return value from tmpnam is not
12669 NULL. rewrote the docstring.
12670 (scm_mkstemp): new procedure implementing "mkstemp!".
12671 * posix.h: declare scm_mkstemp.
12672
789ecc05
GH
12673 * net_db.c: declare h_errno if configure didn't define HAVE_H_ERRNO.
12674 normally it would be found in netdb.h.
12675
c6c79933
GH
126762001-03-17 Gary Houston <ghouston@arglist.com>
12677
e9e225e5
GH
12678 * sort.c (scm_sort): move sortvec variable to avoid a compiler
12679 warning when HAVE_ARRAYS is not defined. move len too.
12680
12681 * Makefile.am (DOT_X_FILES): remove net_db.x, posix.x, socket.x.
12682 (EXTRA_DOT_X_FILES): let configure set the value.
12683 (DOT_DOC_FILES): remove net_db.doc, posix.doc, socket.doc.
12684
c6c79933
GH
12685 * gc.c (scm_must_malloc): changed the comment explaining when
12686 scm_must variants of malloc/free etc., should be used, based on
12687 explanation from Dirk Herrmann.
12688 * fports.c (scm_fport_buffer_add): use FUNC_NAME instead of a local
12689 string with procedure name. use scm_must_malloc instead of malloc.
12690 (scm_setvbuf, scm_fdes_to_port, fport_close): use scm_must variants
12691 of malloc/free.
12692 * ports.c (scm_add_to_port_table, scm_remove_from_port_table,
12693 scm_ungetc): use scm_must variants of malloc/realloc/free.
12694 (scm_add_to_port_table, scm_ungetc): define FUNC_NAME.
12695
b3fcac34
DH
126962001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12697
12698 * __scm.h (SCM_ASSERT, SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
12699 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Don't call scm_wta, call
12700 scm_wrong_type_arg instead.
12701
12702 (SCM_WNA): Deprecated.
12703
12704 * error.[ch] (scm_wta): Deprecated.
12705
12706 * numbers.c (s_i_log): Minor comment fix.
12707
12708 * read.c (scm_lreadr), unif.c (scm_aind, scm_shap2ra,
12709 scm_make_shared_array, scm_transpose_array, scm_enclose_array,
12710 scm_array_in_bounds_p): Don't use SCM_ASSERT to check for
12711 wrong-num-args or misc errors.
12712
12713 * unif.c (scm_make_shared_array, scm_transpose_array,
12714 scm_enclose_array, scm_array_in_bounds_p, scm_array_set_x):
12715 Validate the rest argument (note: this is only done when guile is
12716 built with SCM_DEBUG_REST_ARGUMENT=1)
12717
12718 (scm_array_in_bounds_p, scm_uniform_vector_ref, scm_array_set_x):
12719 Replace calls to scm_wrong_num_args by SCM_WRONG_NUM_ARGS.
12720
12721 * validate.h (SCM_FUNC_NAME, SCM_VALIDATE_NUMBER_COPY,
12722 SCM_VALIDATE_NUMBER_DEF_COPY): Deprecated.
12723
68baa7e7
DH
127242001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12725
12726 * validate.h (SCM_WRONG_NUM_ARGS): Call scm_error_num_args_subr
12727 instead of scm_wrong_num_args.
12728
12729 * coop-threads.c: Don't include libguile/strings.h. (Was only
12730 needed for former implementation of SCM_WRONG_NUM_ARGS.)
12731
12732 * debug.c (scm_m_start_stack): Don't use SCM_ASSERT to check for
12733 wrong-num-args errors.
12734
9f40cd87
DH
127352001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12736
12737 * error.[ch] (scm_error_num_args_subr): New function.
12738
5352393c
MG
127392001-03-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12740
12741 * list.c (scm_list, scm_cons_star, scm_null_p, scm_list_p),
12742 (scm_length, scm_append, scm_reverse, scm_list_ref),
12743 (scm_memq, scm_memv, scm_member, scm_delv_x, scm_delete_x),
12744 (scm_delq, scm_delv, scm_delete, scm_delq1_x, scm_delv1_x),
12745 (scm_delete1_x), gc.c (scm_map_free_list),
12746 (scm_free_list_length), hash.c (scm_hashq, scm_hashv),
12747 (scm_hash), hashtab.c (scm_hashq_ref, scm_hashq_set_x),
12748 (scm_hashq_remove_x, scm_hashv_ref, scm_hashv_set_x),
12749 (scm_hashv_remove_x, scm_hash_ref, scm_hash_set_x),
12750 (scm_hash_remove_x), ports.c (scm_pt_size, scm_pt_member), print.c
12751 (scm_current_pstate), scmsigs.c (scm_usleep), goops.c
12752 (scm_get_keyword, scm_sys_compute_slots): Added texinfo markup.
12753
12754 * weaks.c (scm_weak_vector_p, scm_weak_key_hash_table_p),
12755 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
12756 rdelim.c (scm_read_delimited_x), strop.c (scm_string_index),
12757 symbols.c (scm_symbol_interned_p), numbers.c
12758 (scm_string_to_number), ports.c (scm_port_p): Corrected texinfo
12759 markup.
12760
a9205f07
KN
127612001-03-16 Keisuke Nishida <kxn30@po.cwru.edu>
12762
12763 * snarf.h (SCM_CONST_LONG): Deprecated.
12764 * tag.c (CONST_INUM): New macro. Use it to define scm_utag_*.
12765
6d583887
MV
127662001-03-15 Marius Vollmer <marius.vollmer@uni-dortmund.de>
12767
12768 * numbers.c (scm_num2ulong): Check that a bignum is positive
12769 before looking at the magnitude. Correctly check for overflow
12770 during conversion.
12771 (scm_num2long_long): Likewise.
12772 (scm_num2ulong_long): New.
12773 (ULONG_LONG_MAX): Define if not already defined.
12774 * numbers.h: (scm_num2ulong_long): New prototype.
1c938eb8 12775
e87a03fc
MG
127762001-03-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12777
12778 * validate.h (SCM_VALIDATE_OPOUTSTRPORT): New macro.
12779
12780 * strports.h (SCM_STRPORTP, SCM_OPSTRPORTP, SCM_OPINSTRPORTP),
12781 (SCM_OPOUTSTRPORTP): New predicate macros.
12782 (scm_open_input_string, scm_open_output_string),
12783 (scm_get_output_string): New prototypes.
1c938eb8 12784
e87a03fc
MG
12785 * strports.c (scm_open_input_string, scm_open_output_string),
12786 (scm_get_output_string): New procedures (SRFI-6 compliant).
12787 Made scm_tc16_strport non-static.
12788
160bb34a
DH
127892001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
12790
12791 * macros.h (SCM_ASSYNT): Removed unused object argument from
12792 signature.
12793
12794 * eval.c (scm_m_body, scm_m_quote, scm_m_begin, scm_m_if,
12795 scm_m_set_x, scm_m_and, scm_m_or, scm_m_case, scm_m_cond,
12796 scm_m_letstar, scm_m_do, scm_m_quasiquote, scm_m_delay,
12797 scm_m_define, scm_m_letrec1, scm_m_letrec, scm_m_let, scm_m_apply,
12798 scm_m_cont, scm_m_nil_cond, scm_m_nil_ify, scm_m_t_ify,
12799 scm_m_0_cond, scm_m_0_ify, scm_m_1_ify, scm_m_atfop, scm_m_atbind,
12800 scm_m_expand_body), evalext.c (scm_m_generalized_set_x,
12801 scm_m_undefine), goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
12802 scm_m_atdispatch): Removed unused object argument from call to
12803 SCM_ASSYNT.
12804
80dee77b
DH
128052001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
12806
12807 * gh.h/gh_data.c (gh_ints2scm): Changed the signature to use a
12808 const int* to reflect that the input array of integers remains
12809 unchanged. Thanks to Brett Viren for the hint.
12810
d3dd80ab
MG
128112001-03-14 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12812
12813 * gh_data.c (gh_scm2chars, gh_scm2shorts, gh_scm2longs),
12814 (gh_scm2floats, gh_scm2doubles): Check for malloc() returning NULL
12815 in various places.
12816 (gh_scm2newstr, gh_symbol2newstr): Change call to
12817 scm_must_malloc() to malloc(), because user-free()able memory is
12818 allocated.
12819
12820 * gc.c: Added declaration of `scm_debug_check_freelist'.
12821
26a3038d
MG
128222001-03-13 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12823
12824 * ports.c (scm_port_mode): Changed `mode' array size to 4.
12825
1f3908c4
KN
128262001-03-12 Keisuke Nishida <kxn30@po.cwru.edu>
12827
12828 * strports.c (scm_object_to_string): New procedure.
12829 (scm_strprint_obj): Deprecated.
12830 * strports.h: Reflect the changes.
12831
e11208ca
DH
128322001-03-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
12833
12834 * goops.h (SCM_VALIDATE_PUREGENERIC): New macro.
12835
12836 * goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
12837 scm_m_atdispatch): Provide definitions for FUNC_NAME. Don't use
12838 SCM_ASSYNT to check for correct argument types. Either use some
12839 SCM_VALIDATE_* macro or an explicit test.
12840
12841 (scm_make_foreign_object): Don't use SCM_ASSERT to check for
12842 misc-errors.
12843
12844 * macros.h (SCM_ASSYNT): On assertion failure, issue a misc-error
12845 instead of calling scm_wta.
12846
67e8151b
MG
128472001-03-12 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12848
12849 * load.c (scm_primitive_load, scm_primitive_load_path),
12850 (scm_sys_search_load_path): Corrected docstrings (file ->
12851 filename).
12852
12853 * eval.c (scm_force): Added texinfo markup to docstring.
12854 (scm_promise_p): Renamed parameter to `obj' to match docstring.
12855
12856 * debug-malloc.c: Reinserted #include <stdio.h>.
12857
e0c08f17
KN
128582001-03-11 Keisuke Nishida <kxn30@po.cwru.edu>
12859
e39c3de4
KN
12860 * list.c (s_scm_reverse_x): Use SCM_VALIDATE_LIST.
12861
e0c08f17
KN
12862 * environments.c, error.c, eval.c, filesys.c, hashtab.c, load.c,
12863 net_db.c, procprop.c, read.c, scmsigs.c, socket.c, struct.c:
12864 Use SCM_LISTn instead of scm_listify.
12865
e6e2e95a
MD
128662001-03-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12867
12868 * _scm.h: Removed #include <errno.h>.
12869
12870 * error.c, net_db.c, putenv.c, stime.c: Removed declaration of
12871 errno variable (can be a macro on some systems, for example when
12872 using linux libc with threads).
12873
12874 * error.c, filesys.c, gc.c, ioext.c, iselect.c, net_db.c, ports.c,
12875 posix.c, print.c, putenv.c, scmsigs.c, script.c, simpos.c, smob.c,
12876 socket.c, srcprop.c, stime.c, strop.c, unif.c, vports.c: Added
12877 #include <errno.h> in these 20 out of 100 files.
1c938eb8 12878
97d0e20b
GH
128792001-03-10 Gary Houston <ghouston@arglist.com>
12880
12881 * socket.c: add a definition of SUN_LEN (from glibc) for when it's
12882 not already defined.
12883
e75341b3
MD
128842001-03-09 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12885
12886 * coop.c: Inserted #include <stdio.h>.
12887
12888 * iselect.c: Reinserted #include <stdio.h>.
12889
74355186
MV
128902001-03-10 Marius Vollmer <mvo@zagadka.ping.de>
12891
12892 * posix.c: Replaced `#define' of __USE_XOPEN right before
12893 including unistd.h with a define of _GNU_SOURCE at the very top of
12894 the file.
12895
783e7774
KN
128962001-03-09 Keisuke Nishida <kxn30@po.cwru.edu>
12897
12898 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
12899 continuations.c, debug-malloc.c, debug.c, dynwind.c, eq.c, eval.c,
12900 feature.c, filesys.h, gc_os_dep.c, gh_data.c, gh_eval.c,
12901 gh_funcs.c, gh_io.c, gh_list.c, gh_predicates.c, hash.c,
12902 hashtab.c, iselect.c, keywords.c, list.c, load.c, mallocs.c,
12903 net_db.c, numbers.c, objprop.c, objprop.h, options.c, pairs.c,
12904 print.c, procprop.c, procs.c, properties.c, ramap.c,
12905 regex-posix.c, root.c, scmsigs.c, simpos.c, socket.c, srcprop.c,
12906 stackchk.c, stacks.c, strings.c, strop.c, strorder.c, struct.c,
12907 symbols.c, tag.c, threads.c, variable.c, vectors.c, weaks.c:
1c938eb8 12908 Remove #include <stdio.h>
783e7774
KN
12909 * gc.c, gdbint.c, root.c, sort.c, unif.c: Add #include <string.h>.
12910
12911 * procs.c (scm_make_subr_opt): Init symcell to avoid warning.
12912
9a677c37
MG
129132001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12914
12915 * posix.c (scm_gethostname): Set initial name length to 256 for
12916 Solaris.
12917
94e6d793
MG
129182001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12919
12920 * posix.h (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
12921 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
12922 (scm_sethostname, scm_gethostname): New prototypes.
12923
12924 * posix.c: Added inclusion of <crypt.h>, <sys/resource.h> and
12925 <sys/file.h>, if present.
12926 (scm_init_posix): [PRIO_PROCESS, PRIO_PGRP, PRIO_USER, LOCK_SH,
12927 LOCK_EX, LOCK_UN, LOCK_NB]: New variables.
12928 (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
12929 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
12930 (scm_sethostname, scm_gethostname): New procedures.
12931
650a1cf9
NJ
129322001-03-08 Neil Jerram <neil@ossau.uklinux.net>
12933
12934 * ports.c (scm_port_column): Docstring fixes: (i) port-line arg is
12935 not optional (ii) "recommend" spelling correction.
12936
9636b49c
MD
129372001-03-08 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12938
5e4a4d09
MD
12939 * ramap.c (racp): Removed optimization which caused array copying
12940 to fail if the two arrays shared storage. Re-inserted the IVDEP
12941 macros removed in the change of 2000-03-09. (Don't really have a
12942 complete grasp of what they are for, but they seem to be necessary
12943 on Crays. This needs testing!) Thanks to Miroslav Silovic.
12944
9636b49c
MD
12945 * hash.c (scm_string_hash): Don't downcase characters.
12946
04a4d666
MD
129472001-03-07 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12948
9636b49c 12949 * symbols.c (scm_symbols_prehistory): Changed symbol hash table
04a4d666
MD
12950 size from 277 --> 1009.
12951
12952 * symbols.c, symbols.h (scm_sys_symbols): New function GUILE_DEBUG
12953 function.
12954
12955 * coop-threads.c: Fixed change of 2001-03-06.
1c938eb8 12956
04a4d666
MD
12957 * validate.h: Code formatting.
12958
66418d34
KN
129592001-03-07 Keisuke Nishida <kxn30@po.cwru.edu>
12960
12961 * Makefile.am (*.x): Add dependency on snarf.h and guile-doc-snarf.in.
12962 (*.doc): Add dependency on guile-snarf.awk.in.
12963
12964 * guile-snarf.awk.in: Neglect spaces at the end of
12965 SCM_SNARF_DOCSTRING_END. Skip lines "# NN ..." in the
12966 middle of docstrings. (To avoid the problem with gcc-2.96.)
12967
2ade72d7
DH
129682001-03-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
12969
12970 * coop-threads.c (scm_call_with_new_thread), load.c
12971 (scm_primitive_load, scm_sys_search_load_path), random.c
12972 (scm_c_default_rstate), struct.c (scm_make_struct_layout,
12973 scm_struct_ref, scm_struct_set_x): Don't use SCM_ASSERT to
12974 (potentially) issue a scm-misc-error or wrong-num-args error
12975 message.
12976
12977 * load.c (scm_search_path): Use SCM_ASSERT_TYPE to give details
12978 about the expected type with the wrong-type-arg error message.
12979
12980 * smob.c (scm_make_smob): Abort on misuse of smob - it indicates
12981 a C level bug that can't be fixed from scheme anyway.
12982
586d7da2
MD
129832001-03-05 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12984
12985 * eval.c (scm_m_letstar): Removed check for duplicate bindings.
12986 Duplicate bindings are OK in a let* since a let* is semantically
12987 equivalent to a nested set of let:s.
12988
1dd05fd8
MG
129892001-03-05 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12990
12991 * print.c (scm_print_options): Fixed texinfo in docstring.
12992
12993 * net_db.c (scm_getserv, scm_getproto, scm_getnet): Return #f if
12994 the underlying functions getservent, getprotoent or getnetent
12995 return NULL instead of signalling an error.
12996
439006bf
GH
129972001-03-04 Gary Houston <ghouston@arglist.com>
12998
12999 * socket.c (scm_fill_sockaddr): don't allow buffer overflows when
13000 taking an unexpectedly large filename for an AF_UNIX socket from
13001 bind/connect/sendto (thanks to Martin Grabmueller).
1c938eb8 13002
439006bf
GH
13003 * socket.c (scm_sock_fd_to_port, SCM_SOCK_FD_TO_PORT): removed the
13004 former and adjusted the latter.
13005 (scm_socket, scm_socketpair): cosmetic changes.
13006 (scm_getsockopt, scm_setsockopt): declare optlen as int, not
13007 size_t as socklen_t substitute. don't restrict args/return values
13008 to INUM: allow full range of int or size_t.
13009 (scm_fill_sockaddr): check arguments before allocating memory, to
13010 avoid leakage. use malloc, not scm_must_malloc.
13011 (scm_connect, scm_bind, scm_sendto): use int, not size_t as socklen_t
13012 substitute. free the sockaddr structure before throwing an error.
13013 (scm_init_add_buffer): procedure removed, together with its static
13014 buffer scm_addr_buffer, which wouldn't be thread safe. instead,
13015 define a macro MAX_ADDR_SIZE and declare the buffer where needed.
13016 (scm_accept, scm_getpeername, scm_getsockname, scm_recvfrom,
13017 scm_sendto): use a local buffer instead of scm_addr_buffer.
13018 adjust for new SCM_SOCK_FD_TO_PORT. use int for address size,
13019 not size_t.
13020 (scm_recvfrom): set addr->sa_family to AF_UNSPEC before the recvfrom
13021 call to detect whether recvfrom could be bothered to set the address.
13022 (scm_init_socket): don't call scm_init_addr_buffer.
13023
276dd677
DH
130242001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
13025
13026 * debug.c (scm_procedure_source, scm_procedure_environment),
13027 print.c (scm_get_print_state), ramap.c (scm_array_fill_int,
13028 scm_array_index_map_x), sort.c (scm_sort_x, scm_sort,
13029 scm_stable_sort_x, scm_stable_sort), stacks.c (scm_make_stack,
13030 scm_last_stack_frame), symbols.c (scm_sym2vcell, scm_sym2ovcell),
13031 unif.c (scm_list_to_uniform_array, scm_uniform_vector_length,
13032 scm_transpose_array, scm_enclose_array, scm_array_in_bounds_p,
13033 scm_uniform_vector_ref, scm_array_set_x, scm_uniform_array_read_x,
13034 scm_uniform_array_write, scm_bit_set_star_x, scm_bit_count_star,
13035 scm_array_to_list, scm_array_prototype), validate.h
13036 (SCM_VALIDATE_NUMBER_COPY): Don't call function scm_wta, call
13037 scm_misc_error or scm_wrong_type_arg instead.
13038
13039 * validate.h (SCM_WTA, RETURN_SCM_WTA): Deprecated.
13040
5e03762c
MD
130412001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13042
13043 * goops.c, goops.h (scm_sys_pre_expand_closure_x): Removed.
13044 (scm_sys_tag_body): Added.
13045
db4b4ca6
DH
130462001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
13047
13048 * continuations.c (continuation_apply), eval.c (scm_m_lambda,
13049 scm_m_letstar, scm_m_letrec1, scm_m_let, SCM_APPLY), eval.h
13050 (SCM_EVALIM2), evalext.c (scm_m_generalized_set_x), gc.c
13051 (get_bvec, MARK), goops.c (scm_primitive_generic_generic),
13052 options.c (scm_options), ports.c (scm_remove_from_port_table),
13053 ramap.c (scm_ramapc), read.c (skip_scsh_block_comment, scm_lreadr,
13054 scm_lreadparen, scm_lreadrecparen), script.c (script_get_octal,
13055 script_get_backslash, script_read_arg), unif.c (scm_cvref): Don't
13056 call function scm_wta, call scm_misc_error or scm_wrong_type_arg
13057 instead.
13058
87e7741d
MD
130592001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13060
13061 * goops.c (scm_sys_pre_expand_closure_x): New procedure.
13062
d19b0aac
MV
130632001-03-04 Marius Vollmer <mvo@zagadka.ping.de>
13064
13065 * eval.c (scm_s_duplicate_bindings): New error message.
13066 (scm_m_letrec1, scm_m_letstar): Check for duplicate bindings.
13067
2fd945df
MV
130682001-03-03 Marius Vollmer <mvo@zagadka.ping.de>
13069
13070 * eval.h (SCM_EVALIM2): New macro. Use it when a
13071 immediate, literal constant should be evaluated.
13072 * eval.c (scm_s_duplicate_formals): New error message string.
13073 (scm_c_improper_memq): New function.
13074 (scm_m_lambda): Check for duplicate arguments.
13075 (scm_ceval, scm_deval): When executing a body: only cons a new
13076 toplevel environment frame when it is different from the
13077 existing one; use EVALCAR instead of SIDEVAL so that we can properly
13078 check for empty combinations; use SCM_EVALIM2 for the same reason
13079 in the non-toplevel loop.
13080 (nontoplevel_cdrxnoap, nontoplevel_cdrxbegin, nontoplevel_begin):
13081 New labels with the meaning of their non-"nontoplevel" partners,
13082 but they are used when it is known that the body is not evaluated at
13083 top-level.
13084 (scm_apply, scm_dapply): use SCM_EVALIM2 to get proper error
13085 reporting for empty combinations.
13086
9e6fc585
KN
130872001-03-02 Keisuke Nishida <kxn30@po.cwru.edu>
13088
13089 * Remove dump facilities.
13090 * dump.c, dump.h: Removed.
13091 * Makefile.am: Remove dump.c, dump.h, dump.x, dump.doc.
13092 * init.c: Remove #include "libguile/dump.h".
13093 (scm_init_guile_1): Remove scm_init_dump.
13094 * smob.h (scm_smob_descriptor): Remove slots: dump, undump.
13095 (scm_set_smob_dump, scm_set_smob_undump): Remove declaration.
13096 * smob.c (scm_make_smob_type): Remove initialization: dump, undump.
13097 (scm_set_smob_dump, scm_set_smob_undump): Removed.
13098
13099 * keywords.c: Remove #include "libguile/dump.h".
13100 (keyword_dump, keyword_undump): Removed.
13101 (scm_init_keywords): Remove scm_set_smob_dump and scm_set_smob_undump.
13102
eae54bf0
MG
131032001-03-02 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13104
13105 * vectors.c (s_scm_vector_p, list->vector, scm_vector)
13106 (scm_vector_ref, scm_vector_set_x, scm_vector_to_list)
13107 (scm_vector_fill_x), strorder.c (scm_string_equal_p)
13108 (scm_string_ci_equal_p, scm_string_less_p, scm_string_leq_p)
13109 (scm_string_gr_p, scm_string_geq_p, scm_string_ci_less_p)
13110 (scm_string_ci_geq_p), symbols.c (scm_symbol_p)
13111 (scm_symbol_to_string, scm_string_to_symbol): Changed use of @t{}
13112 to @code{} as the texinfo manual recommends, converted the
13113 examples to use a @lisp{}-environment.
13114
13115 * strports.c (scm_eval_string): Cleaned up the docstring.
13116
13117 * struct.c (scm_struct_p, scm_struct_vtable_p): Added texinfo
13118 markup.
13119
13120 * numbers.c (scm_exact_p, scm_odd_p, scm_even_p)
13121 (scm_number_to_string, scm_string_to_number, scm_number_p)
13122 (scm_real_p, scm_integer_p, scm_inexact_p, scm_make_rectangular)
13123 (scm_make_polar, scm_inexact_to_exact): Added texinfo markup.
13124 (scm_ash): Added texinfo markup and removed obsolete @refill.
13125 (scm_gr_p): Corrected comment.
13126 (scm_gr_p, scm_leq_p, scm_geq_p): Added texinfo markup to (future
13127 docstring) comments.
13128 (scm_positive_p, scm_less_p, scm_num_eq_p, scm_real_p)
13129 (scm_number_p, scm_negative_p, scm_max, scm_min, scm_sum)
13130 (scm_difference, scm_product, scm_divide, scm_asinh, scm_acosh)
13131 (scm_atanh, scm_truncate, scm_round, scm_exact_to_inexact)
13132 (floor, ceiling, $sqrt, $abs, $exp, $log, $sin, $cos, $tan, $asin)
13133 ($acos, $atan, $sinh, $cosh, $tanh, scm_real_part, scm_imag_part)
13134 (scm_magnitude, scm_angle, scm_abs, scm_quotient, scm_remainder)
13135 (scm_modulo, scm_gcd, scm_lcm): Added (future docstring) comments.
13136
23deee81
DH
131372001-02-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
13138
13139 * __scm.h (SCM_ASSERT_TYPE): Add missing macro parameter.
13140 (Obviously nobody compiles with SCM_RECKLESS defined...)
13141
13142 * validate.h (SCM_ASSERT_RANGE): Use the argument number.
13143
6fe692e9
MD
131442001-02-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13145
13146 * ports.c, ports.h (scm_c_read, scm_c_write): New functions.
13147
13148 * ports.h (SCM_READ_BUFFER_EMPTY_P): New macro.
13149
27c37006
NJ
131502001-02-24 Neil Jerram <neil@ossau.uklinux.net>
13151
13152 * numbers.c (scm_two_doubles, scm_sys_expt, scm_sys_atan2,
13153 scm_make_polar): Rename arguments `z1' and `z2' to `x' and `y',
13154 since use of `z' suggests that the arguments may be complex.
13155
13156 * goops.c (scm_make), numbers.c (scm_sys_expt): Fix docstring
13157 typos.
13158
2069af38
NJ
131592001-02-23 Neil Jerram <neil@ossau.uklinux.net>
13160
13161 * dump.c (scm_binary_write, scm_binary_read), eval.c
13162 (scm_primitive_eval), guardians.c (scm_guardian_destroyed_p,
13163 scm_guardian_greedy_p, scm_make_guardian), fports.c
13164 (scm_file_port_p): Minor docstring fixes.
13165
b42ff180
MV
131662001-02-22 Marius Vollmer <mvo@zagadka.ping.de>
13167
2069af38 13168 * load.c (load): Use scm_primitive_eval_x instead of scm_i_eval_x.
97ea55f8
MV
13169
13170 * goops.c (scm_add_method, DEFVAR): Use scm_eval instead of
13171 scm_i_eval.
13172 (make_class_from_template): Do not bother to set the current
13173 module around the call to DEFVAR, scm_eval takes care of that.
13174 (scm_init_goops): Make scm_module_goops and
13175 scm_goops_lookup_closure permanent objects.
1c938eb8 13176
97ea55f8
MV
13177 * eval.c (scm_ceval, scm_deval): When evaluating expressions on
13178 top level, create a fresh top-level environment for each
13179 expression instead of mutating the exisint frame. This is
13180 important when that frame is closed over.
13181
b42ff180
MV
13182 * numbers.c (s_scm_logior) [SCM_DIGSTOOBIG]: Also use
13183 SCM_DIGSPERLONG instead of DIGSPERLONG.
13184
09f2ab1e
MV
131852001-02-21 Marius Vollmer <mvo@zagadka.ping.de>
13186
13187 * eval.c (scm_ceval, scm_deval): Check for wrong number of args
13188 before applying arrow procedure in `cond' and before applying
13189 receiver procedure in call-with-current-continuation.
13190 (scm_i_eval): Do not invoke scm_copy_tree in argument in SCM_XEVAL
13191 macro. The argument is expanded more than one time.
13192
13193 * numbers.c (scm_logior) [SCM_DIGSTOOBIG]: Correctly use
13194 SCM_BIGDIG instead of BIGDIG. Thanks to Steven G. Johnson!
13195
131962001-02-20 Marius Vollmer <mvo@zagadka.ping.de>
13197
13198 * guile-doc-snarf.in, guile-func-name-check.in: Added copyright
13199 notice and license.
13200
7090240c
MG
132012001-02-17 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13202
13203 * variable.c (scm_make_variable, scm_make_undefined_variable)
13204 (scm_variable_ref, scm_variable_set_x, scm_builtin_variable)
13205 (scm_variable_bound_p), values.c (scm_values)
13206 (scm_call_with_values), unif.c (scm_bit_count)
13207 (scm_bit_set_star_x), symbols.c (scm_gentemp)
13208 (scm_gensym), strings.c (scm_string_p, scm_make_string)
13209 (scm_read_only_string_p, scm_string_length, scm_string_ref)
13210 (scm_string_set_x, scm_substring, scm_string_append), stime.c
13211 (scm_strptime, scm_mktime), random.c (scm_seed_to_random_state)
13212 (scm_copy_random_state, scm_random), print.c (scm_newline)
13213 (scm_write_char, scm_simple_format), debug-malloc.c
13214 (scm_malloc_stats), environments.c (scm_environment_p)
13215 (scm_environment_bound_p, scm_environment_ref)
13216 (scm_environment_fold, scm_environment_define)
13217 (scm_environment_undefine, scm_environment_set_x)
13218 (scm_environment_cell, scm_environment_observe)
13219 (scm_environment_observe_weak, scm_environment_unobserve)
13220 (scm_make_eval_environment, scm_eval_environment_p)
13221 (scm_eval_environment_set_local_x, scm_eval_environment_local)
13222 (scm_eval_environment_imported)
13223 (scm_eval_environment_set_imported_x, scm_make_import_environment)
13224 (scm_import_environment_p, scm_import_environment_imports)
13225 (scm_import_environment_set_imports_x, scm_make_export_environment)
13226 (scm_export_environment_p, scm_export_environment_private)
13227 (scm_export_environment_set_private_x)
13228 (scm_export_environment_signature)
13229 (scm_export_environment_set_signature_x, scm_leaf_environment_p):
13230 Added texinfo markup.
13231
13232 * ports.c (scm_drain_input): Lowercased argument to @var.
13233 (scm_current_input_port, scm_current_output_port): Filled in
13234 missing explanation.
13235 (scm_current_load_port, scm_set_current_output_port)
13236 (scm_set_current_error_port, scm_port_line, scm_set_port_line_x):
13237 Added texinfo markup.
13238
13239 * arbiters.c (scm_make_arbiter, scm_try_arbiter)
13240 (scm_release_arbiter): Added texinfo markup to docstrings.
13241 Changed `Returns' to `Return'.
13242 (arbiter_print): Changed SCM_CDR to SCM_SMOB_DATA.
13243
25703850
NJ
132442001-02-16 Neil Jerram <neil@ossau.uklinux.net>
13245
13246 * guile-snarf.awk.in: Quote any `@'s that occur in Scheme names,
13247 by doubling them to `@@'.
13248
73c0fdce
MG
132492001-02-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13250
13251 * numbers.c (scm_lognot), random.c (scm_random,
13252 scm_random_normal, scm_random_solid_sphere_x,
13253 scm_random_hollow_sphere_x, scm_random_normal_vector_x,
13254 scm_random_exp), dynwind.c
13255 (scm_dynamic_wind): Removed unnecessary "" from docstrings.
1c938eb8 13256
73c0fdce
MG
13257 * goops.c (scm_sys_initialize_object, scm_instance_p,
13258 scm_class_name, scm_class_precedence_list, scm_class_slots,
13259 scm_class_environment, scm_generic_function_name,
13260 scm_generic_function_methods, scm_method_generic_function,
13261 scm_method_specializers, scm_method_procedure, scm_make_unbound,
13262 scm_unbound_p, scm_assert_bound, scm_at_assert_bound_ref,
13263 scm_sys_fast_slot_ref, scm_sys_fast_slot_set_x, scm_slot_ref,
13264 scm_slot_set_x, _scm_slot_bound_p, scm_slots_exists_p,
13265 scm_sys_allocate_instance, scm_make, scm_pure_generic_p,
13266 scm_class_direct_supers, scm_class_direct_slots,
13267 scm_class_direct_subclasses, scm_class_direct_methods,
13268 scm_accessor_method_slot_definition, scm_sys_goops_loaded),
13269 debug.c (scm_with_traps, scm_memoized_p, scm_make_gloc,
13270 scm_gloc_p, scm_make_iloc, scm_iloc_p, scm_memcons,
13271 scm_mem_to_proc, scm_proc_to_mem, scm_unmemoize,
13272 scm_memoized_environment, scm_procedure_name,
13273 scm_procedure_source, scm_procedure_environment, scm_debug_hang),
13274 objects.c
13275 (scm_class_of, scm_entity_p, scm_operator_p,
13276 scm_set_object_procedure_x, scm_object_procedure,
13277 scm_make_class_object), hooks.c (scm_make_hook_with_name,
13278 scm_make_hook, scm_hook_p, scm_hook_empty_p, scm_add_hook_x,
13279 scm_remove_hook_x, scm_reset_hook_x, scm_run_hook,
13280 scm_hook_to_list), lang.c
13281 (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null, scm_nil_eq),
13282 numbers.c (scm_sys_expt, scm_sys_atan2), print.c
13283 (scm_print_options, scm_port_with_print_state,
13284 scm_get_print_state), procs.c (scm_make_cclo, scm_procedure_p,
13285 scm_closure_p, scm_thunk_p, scm_procedure_with_setter_p,
13286 scm_make_procedure_with_setter, scm_procedure), throw.c
13287 (scm_lazy_catch), modules.c (scm_standard_eval_closure), load.c
13288 (scm_parse_path, scm_search_path), stacks.c (scm_make_stack,
13289 scm_stack_ref, scm_stack_length, scm_frame_p,
13290 scm_last_stack_frame, scm_frame_number, scm_frame_source,
13291 scm_frame_procedure, scm_frame_arguments, scm_frame_previous,
13292 scm_frame_next, scm_frame_real_p, scm_frame_procedure_p,
13293 scm_frame_evaluating_args_p, scm_frame_overflow_p), filesys.c
13294 (scm_dirname, scm_basename), dynwind.c
13295 (scm_wind_chain), read.c (scm_read_options, scm_read,
13296 scm_read_hash_extend), gc.c
13297 (scm_unhash_name), eval.c (scm_eval_options_interface,
13298 scm_evaluator_traps, s_scm_nconc2last), backtrace.c
13299 (scm_display_error, scm_set_print_params_x,
13300 scm_display_application, scm_display_backtrace, scm_backtrace),
13301 async.c (scm_async, scm_system_async, scm_async_mark,
13302 scm_system_async_mark, scm_run_asyncs, scm_noop,
13303 scm_set_tick_rate, scm_set_switch_rate, scm_unmask_signals,
13304 scm_mask_signals): Added docstrings.
13305
e228a203
KN
133062001-02-15 Keisuke Nishida <kxn30@po.cwru.edu>
13307
13308 * dump.c (scm_undump): Use SCM_CARLOC/SCM_CDRLOC to obtain the
13309 address of car/cdr. (Thanks to Dirk Herrmann)
13310 Use scm_sizet to obtain the length of strings.
13311 (Thanks to Matthias Koeppe)
13312
1552a59d
MV
133132001-02-15 Marius Vollmer <mvo@zagadka.ping.de>
13314
13315 * symbols.c (scm_mem2symbol): Put a empty statement after the
13316 next_symbol label. This is mandated by ANSI, appearantly.
13317
3178f751
MV
133182001-02-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13319
13320 * gc_os_dep.c: Do not include <linux/version.h>. It makes no
13321 sense to compile for a specific kernel version. Do not include
13322 <asm/signal.h> while defining __KERNEL__. This hack should no
13323 longer be needed and caused problems.
13324
7af4defe
MV
133252001-02-13 Marius Vollmer <mvo@zagadka.ping.de>
13326
13327 * eval.c (scm_ceval, scm_deval): use `SIDEVAL' instead of
13328 SCM_CEVAL when evaluating subforms of `begin' forms. SCM_CEVAL
13329 can not deal with immediates.
13330
5d6bb349
KN
133312001-02-12 Keisuke Nishida <kxn30@po.cwru.edu>
13332
13333 * list.c (scm_list_copy): Validate the first argument.
13334
ec9709f0
MV
133352001-02-11 Marius Vollmer <mvo@zagadka.ping.de>
13336
13337 Fix evaluator so that top-level expressions are correctly
13338 evaluated with respect to the module system.
1c938eb8 13339
ec9709f0
MV
13340 * modules.h. modules.c (scm_current_module_lookup_closure): New
13341 function.
13342
13343 * eval.h (scm_primitive_eval, scm_primitive_eval_x): New
13344 prototypes.
13345 (scm_i_eval, scm_i_eval_x, scm_eval, scm_eval_x): Changed argument
13346 names to better reflect their meaning.
13347
13348 * eval.c (scm_ceval, scm_deval): Recognize when `begin' is being
13349 evaluated at top-level and synronize lookup closure before
13350 executing every subform.
13351 (scm_primitve_eval_x, scm_primitive_eval): New functions.
13352 (scm_eval_x, scm_eval): Reimplement in terms of
13353 scm_primitive_eval_x and scm_primitive_eval, respectively.
1c938eb8 13354
ec9709f0
MV
133552001-02-09 Marius Vollmer <mvo@zagadka.ping.de>
13356
13357 * macros.c (scm_macro_name, scm_macro_transformer): Use
13358 SCM_SMOB_DATA instead of SCM_CDR. Provided by Martin Grabmueller.
13359 Thanks!
13360
42417394
KN
133612001-02-10 Keisuke Nishida <kxn30@po.cwru.edu>
13362
13363 * dump.c (scm_store_bytes): Store data size before data.
13364 (scm_restore_bytes): Restore data size. Takes a pointer to size.
13365 * dump.h (scm_restore_bytes): Updated.
13366
bf942687
KN
133672001-02-09 Keisuke Nishida <kxn30@po.cwru.edu>
13368
13369 * dump.c: Use double cells for update schedule.
13370
1be4270a
KN
133712001-02-08 Keisuke Nishida <kxn30@po.cwru.edu>
13372
13373 * ports.c (scm_unread_char): Take an optional argument.
13374
548728ea
MV
133752001-02-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13376
13377 * modules.h (scm_selected_module, scm_current_module): Renamed
13378 scm_selected_module to scm_current_module to synchronize Scheme
13379 and C names.
13380 (scm_select_module, scm_set_current_module): Likewise. Changed
13381 all uses.
1c938eb8 13382
548728ea
MV
13383 * ports.c (scm_port_for_each): Make a snapshot of the port table
13384 before iterating over it. The table might change while the user
13385 code is running. With the snapshot, the user can depend on the
c5408bc3 13386 fact that each port that existed at the start of the iteration is
548728ea
MV
13387 encountered exactly once. (ice-9 popen) depends on this.
13388
cb0d8be2
DH
133892001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
13390
13391 * strings.h (SCM_STRING_MAX_LENGTH): New macro.
13392
13393 * strings.c (scm_makstr, scm_take_str, scm_make_string): Added
13394 range checking for the size parameter. Thanks to Martin
13395 Grabmueller for the hint.
13396
13397 (scm_makstr): Reordered string initialization to make interrupt
13398 deferring unnecessary.
13399
13400 * vectors.c (scm_make_vector): Fixed range checking.
13401
e382fdbe
DH
134022001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
13403
13404 * vectors.h (SCM_VECTOR_MAX_LENGTH): New macro.
13405
13406 * vectors.c (scm_make_vector, scm_c_make_vector): Improved the
13407 checking of the size parameter for type correctness and valid
13408 range. Thanks to Rob Browning for reporting the problem. Instead
13409 of deferring interrupts, scm_remember_upto_here_1 is used.
13410
bf8f0922
KN
134112001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
13412
13413 * dump.c (scm_store_cell_object, scm_restore_cell_object): Removed.
13414 (scm_dump_cell_update): Removed.
13415 (scm_dump_update): Renamed from scm_dump_object_update.
13416 (scm_restore_string, scm_restore_bytes, scm_restore_word): Takes
13417 a pointer instead of returning a value.
13418 * keywords.c (keyword_undump): Updated.
13419
914cceec
KN
134202001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
13421
13422 * dump.c, dump.h: Modified a lot.
5f17c66f 13423 (SCM_DUMP_COOKIE): Version 0.1
914cceec
KN
13424 (scm_dump_mark): Removed.
13425 (scm_restore_cell_object, scm_store_cell_object): New functions.
13426
13427 * smob.h (scm_smob_descriptor): Removed slots: dump_mark,
13428 dump_dealloc, dump_store, undump_alloc, undump_restore, undump_init.
13429 New slots: dump, undump.
13430 * smob.c (scm_make_smob_type, scm_set_smob_dump, scm_set_smob_undump):
13431 Updated.
13432
13433 * keywords.c (keyword_dump): Renamed from keyword_dealloc.
13434 (keyword_undump): Renamed from keyword_alloc.
13435 (scm_init_keywords): Set keyword_dump and keyword_undump.
13436
ecf470a2
ML
134372001-02-03 Michael Livshin <mlivshin@bigfoot.com>
13438
13439 * gc.c (DOUBLECELL_ALIGNED_P): new macro, a better-named analog of
13440 the deprecated SCM_DOUBLE_CELLP.
13441
13442 * tags.h (SCM_DOUBLE_CELLP): deprecated.
13443
03416a99
KN
134442001-02-02 Keisuke Nishida <kxn30@po.cwru.edu>
13445
13446 * dump.c, dump.h: New files.
13447 * Makefile.am: Added dump.c, dump.h, dump.x, dump.doc.
13448 * init.c: #include "libguile/dump.h".
13449 (scm_init_guile_1): Call scm_init_dump.
13450 * smob.h (scm_smob_descriptor): New slots: dump_mark,
13451 dump_dealloc, dump_store, undump_alloc, undump_restore,
13452 undump_init.
13453 * smob.c (scm_make_smob_type): Init the new slots.
13454 (scm_set_smob_dump, scm_set_smob_undump): New functions.
13455 * smob.h (scm_set_smob_dump, scm_set_smob_undump): Declared.
13456
13457 * keywords.c: #include "libguile/dump.h".
13458 (keyword_dealloc, keyword_alloc): New functions.
13459 (scm_init_keywords): Set smob_dump and smob_undump.
13460
00ffa0e7
KN
134612001-02-01 Keisuke Nishida <kxn30@po.cwru.edu>
13462
13463 * vectors.c (scm_c_make_vector): New function.
13464 * vectors.h (scm_c_make_vector): Declared.
13465 * eval.c (scm_copy_tree), filesys.c (scm_stat2scm), fluids.c
13466 (scm_make_initial_fluids, grow_fluids), gc.c (scm_init_storage),
13467 gh_data.c (gh_ints2scm, gh_doubles2scm): goops.c
13468 (scm_make_method_cache, scm_i_vector2list,
13469 scm_compute_applicable_methods, scm_sys_method_more_specific_p),
13470 init.c (start_stack), net_db.c (scm_gethost, scm_getnet,
13471 scm_getproto, scm_return_entry), posix.c (scm_getgroups,
13472 scm_getpwuid, scm_getgrgid, scm_uname), print.c (make_print_state,
13473 grow_ref_stack), regex-posix.c (scm_regexp_exec), scmsigs.c
13474 (scm_init_scmsigs), socket.c (scm_addr_vector, scm_addr_vector),
13475 stime.c (scm_times, filltime), unif.c (scm_make_uve), vectors.c
13476 (scm_vector, scm_make_vector): Use scm_c_make_vector.
13477
13478 * hashtab.c (scm_c_make_hash_table): New function.
13479 * hashtab.h (scm_c_make_hash_table): Declared.
13480 * environments.c (scm_make_leaf_environment,
13481 scm_make_eval_environment), gc.c (scm_init_storage),
13482 keywords.c (scm_init_keywords), symbols.c (scm_builtin_bindings):
13483 Use scm_c_make_hash_table.
13484
b8446ce8
MD
134852001-01-31 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13486
13487 * unif.c (rapr1): Don't apply scm_uniform_vector_length on arrays.
13488
e3239868
DH
134892001-01-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13490
13491 * struct.c (scm_make_vtable_vtable): Removed unnecessary "" from
13492 end of docstring.
13493
13494 * struct.c (scm_struct_set_x, scm_struct_vtable_tag,
13495 scm_struct_vtable_name, scm_set_struct_vtable_name_x), weaks.c
13496 (scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table,
13497 scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
13498 srcprop.c (scm_source_properties, scm_set_source_properties_x,
13499 scm_source_property, scm_set_source_property_x), sort.c
13500 (scm_sort_list_x, scm_restricted_vector_sort_x, scm_sorted_p,
13501 scm_merge, scm_merge_x, scm_sort_x, scm_sort, scm_stable_sort_x,
13502 scm_stable_sort, scm_sort_list_x, scm_sort_list): Added
13503 docstrings.
13504
41ee56dd
MD
135052001-01-29 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13506
13507 * eval.c (SCM_APPLY): Check that primitives which take 1 arg
13508 really get that arg.
13509
b6311c08
KN
135102001-01-26 Keisuke Nishida <kxn30@po.cwru.edu>
13511
13512 * goops.c (s_scm_get_keyword): Bug fix.
13513
a49af0c0
DH
135142001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
13515
13516 The following patch was sent by Martin Grabmueller. It makes sure
13517 that in case of parameter errors the correct function name is
13518 shown, and that parameter types are only checked once.
13519
13520 * strop.c (string_copy, string_upcase_x, string_downcase_x,
13521 string_capitalize_x): New functions. Each one performs the core
13522 functionality of the corresponding scm_* function.
13523
13524 (scm_string_copy, scm_string_upcase_x, scm_string_upcase,
13525 scm_string_downcase_x, scm_string_downcase,
13526 scm_string_capitalize_x, scm_string_capitalize): Reduced to
13527 parameter checking wrappers of the above functions.
13528
13070bd3
DH
135292001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
13530
13531 * continuations.c, dynl.c, keywords.c, load.c: Include
13532 strings.h. Thanks to Bill Schottstaedt for the bug report.
13533
2f2b390c
DH
135342001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13535
13536 * backtrace.c (display_header): Make sure that line and column
13537 information is shown independent of whether the port the code was
13538 read from had an associated filename. Thanks to Martin
13539 Grabmueller for providing this patch.
13540
efa40607
DH
135412001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13542
13543 * fports.[ch] (scm_file_port_p): New primitive.
13544
a98bddfd
DH
135452001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13546
13547 * tags.h (scm_tc16_fport, scm_tc16_strport, scm_tc16_sfport):
13548 These are now defined in fports.c, strports.c and vports.c.
13549
13550 * fports.[ch] (scm_tc16_fport), strports.c (scm_tc16_strport),
13551 vports.c (scm_tc16_sfport): Made variables (were macros defined in
13552 tags.h).
13553
13554 fports.c (scm_make_fptob), strports.c (scm_make_stptob), vports.c
13555 (scm_make_sfptob): Made static. These return a type code now.
13556
13557 fports.c (scm_init_fports), strports.c (scm_init_strports),
13558 vports.c (scm_init_vports): Create the corresponding port types.
13559
13560 * fports.h (SCM_FPORTP, SCM_OPFPORTP, SCM_OPINFPORTP,
13561 SCM_OPOUTFPORTP): Redefined in terms of scm_tc16_fport.
13562
13563 * init.c (scm_init_guile_1): Make sure strports are initialized
13564 before gdbint.
13565
13566 * ports.[ch] (scm_make_port_type): Changed the return type to
13567 scm_bits_t.
13568
13569 * ports.c (scm_ports_prehistory): Don't create any port types
13570 here.
13571
13572 * posix.c (scm_ttyname): Use SCM_FPORTP instead of comparing
13573 against scm_tc16_fport directly.
13574
0419a528
DH
135752001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13576
13577 * srcprop.c (scm_set_source_property_x): Fix to handle
13578 (set-source-property! <obj> 'copy <datum>) correctly.
13579
6d36532c
GH
135802001-01-24 Gary Houston <ghouston@arglist.com>
13581
13582 * filesys.c (scm_link): docstring fix.
13583 * fports.h (scm_setfileno): obsolete declaration removed.
13584 * posix.c: bogus popen declaration removed.
13585
13586 * rdelim.c: new file, split from ioext.c.
13587 * rdelim.h: new file, split from ioext.h
13588 * Makefile.am: add rdelim.c and related files.
13589 * init.c: call scm_init_rdelim. include rdelim.h.
13590
3ba5a6c2
DH
135912001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
13592
13593 This patch was sent by Martin Grabmueller and makes sure that
13594 parameter errors are reported correctly by the lexicographic
13595 ordering predicates.
13596
13597 * strorder.c (string_less_p, string_ci_less_p): New functions.
13598
13599 (scm_string_less_p, scm_string_ci_less_p): Extracted the core
13600 functionality into string_less_p, string_ci_less_p respectively.
13601 The remaining code is just a wrapper to do the parameter
13602 checking.
13603
13604 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p): Check the
13605 parameters and call string_less_p instead of scm_string_less_p.
13606
13607 (scm_string_ci_leq_p, scm_string_ci_gr_p, scm_string_ci_geq_p):
13608 Check the parameters and call string_less_ci_p instead of
13609 scm_string_ci_less_p.
13610
e40a4095
DH
136112001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
13612
ed6a2db9
DH
13613 This patch modifies scm_display_error to perform parameter
13614 checking. Thanks to Neil Jerram for the bug report.
13615
e40a4095
DH
13616 * backtrace.[ch] (scm_i_display_error): New function.
13617
13618 * backtrace.c (scm_display_error): Added parameter check and
13619 extracted the core functionality into function
13620 scm_i_display_error.
13621
13622 * throw.c (handler_message): Call scm_i_display_error to display
13623 the error message.
13624
f1e06a96
MD
136252001-01-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13626
13627 * eval.c (SCM_APPLY): Added # args check for application of
13628 procedures with arity 3. (Thanks to Anders Holst.)
13629
30ea841d
DH
136302001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
13631
13632 * filesys.h (SCM_DIR_FLAG_OPEN, SCM_DIR_OPEN_P): Added.
13633
13634 (SCM_OPDIRP): Deprecated.
13635
13636 * filesys.c (scm_opendir): Use SCM_DIR_FLAG_OPEN instead of
13637 SCM_OPN.
13638
13639 (scm_readdir, scm_rewinddir): Don't use SCM_VALIDATE_OPDIR.
13640 Instead, give an explicit error message in case the directory is
13641 closed.
13642
13643 (scm_closedir, scm_dir_print): Rewritten to use SCM_DIR_OPEN_P
13644 instead of SCM_OPENP and SCM_CLOSEDP.
13645
13646 * validate.h (SCM_VALIDATE_OPDIR): Deprecated.
13647
312ae976
DH
136482001-01-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
13649
13650 * eval.c (inner_eval, scm_eval): Move all real functionality into
13651 inner_eval. Avoid to copy the expression twice by inlining some
13652 code from scm_i_eval.
13653
4567ed78
DH
136542001-01-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
13655
13656 * eval.c (scm_m_case): The 'else' clause of a 'case' statement
13657 now has to be the last clause, as required by R5RS. Thanks to
13658 Martin Grabmueller for the patch.
13659
10288a09
GH
136602001-01-18 Gary Houston <ghouston@arglist.com>
13661
13662 * ioext.c: further simplify scm_read_string_x_partial by defining
13663 a macro SCM_EBLOCK.
13664
8f379a8f
DH
136652001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
13666
13667 * gh_data.c (gh_ints2scm): Simplified using SCM_FIXABLE.
13668
5c75b29f
DH
136692001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
13670
13671 * __scm.h: Added comment about architecture and compiler
13672 properties that are required by guile.
13673
13674 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
13675 SCM_MOST_NEGATIVE_FIXNUM): Moved to numbers.h.
13676
13677 (SCM_CHAR_BIT, SCM_LONG_BIT): Moved here from numbers.h.
13678
13679 * numbers.h (SCM_CHAR_BIT, SCM_LONG_BIT): Moved to __scm.h.
13680
13681 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
13682 SCM_MOST_NEGATIVE_FIXNUM): Moved here from __scm.h.
13683
ac0c002c
DH
136842001-01-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13685
13686 * __scm.h (SCM_FIXNUM_BIT): Added. The name is chosen in analogy
13687 to the names in limits.h.
13688
13689 * numbers.c (abs_most_negative_fixnum): Added.
13690
13691 (scm_quotient, scm_remainder): Fixed the fixnum-min / (abs
13692 fixnum-min) special case.
13693
13694 (scm_big_and): Fix for negative first parameter.
13695
13696 (scm_bit_extract): Fix for fixnum paramters.
13697 Thanks to Rob Browning for the bug report.
13698
13699 (scm_init_numbers): Initialize abs_most_negative_fixnum.
13700
debe0dc2
DH
137012001-01-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
13702
13703 * symbols.c (scm_symbol_bound_p): Fixed comment.
13704 Thanks to Chris Cramer.
13705
8a39e3fc
DH
137062001-01-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
13707
13708 * smob.[ch] (scm_make_smob_type): Return type is scm_bits_t now.
13709 Thanks to Bill Schottstaedt.
13710
322ec19d
ML
137112001-01-11 Michael Livshin <mlivshin@bigfoot.com>
13712
9a5fa6e9 13713 from Matthias Köppe:
1c938eb8 13714
322ec19d
ML
13715 * objects.h (SCM_SET_ENTITY_SETTER): new macro. SCM_ENTITY_SETTER
13716 casts its result, so doesn't yield an lvalue per ANSI C.
13717
13718 * goops.c (s_scm_sys_set_object_setter_x): use
13719 SCM_SET_ENTITY_SETTER.
13720 (clear_method_cache): use SCM_SET_ENTITY_PROCEDURE.
13721
13722 * gc.h (SCM_GC_SET_CARD_BVEC): new macro. SCM_GC_CARD_BVEC casts
13723 its result, so doesn't yield an lvalue per ANSI C.
13724 (SCM_GC_SET_CARD_FLAGS): ditto for SCM_GC_GET_CARD_FLAGS.
13725 (SCM_GC_CLR_CARD_FLAGS): redefined in terms of
13726 SCM_GC_SET_CARD_FLAGS.
13727 (SCM_GC_SET_CARD_FLAG, SCM_GC_CLR_CARD_FLAGS): ditto.
13728
13729 * gc.c (INIT_CARD): use the explicit setter macro to set the bvec.
13730
60d02d09
GH
137312001-01-08 Gary Houston <ghouston@arglist.com>
13732
13733 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): new macro.
13734 * ioext.c (scm_read_string_x_partial, scm_read_delimited_x),
13735 socket.c (scm_recvfrom): use the new macro, plus minor docstring
13736 changes.
13737 * ioext.c (scm_read_string_x_partial): don't crash if -1 is supplied
13738 for fdes. if current input port is used, check that it's a file
13739 port.
13740
c2da2648
GH
137412001-01-06 Gary Houston <ghouston@arglist.com>
13742
13743 * ioext.c (scm_read_string_x_partial): new procedure, implements
13744 read-string!/partial.
13745 * ports.c (scm_take_from_input_buffers): new procedure used by
13746 scm_read_string_x_partial.
13747 (scm_drain_input): use scm_take_from_input_buffers.
13748
4651d663
MV
137492001-01-06 Marius Vollmer <mvo@zagadka.ping.de>
13750
13751 * validate.h (SCM_VALIDATE_NUMBER): New.
13752
c0a5d888
ML
137532001-01-03 Michael Livshin <mlivshin@bigfoot.com>
13754
13755 * guardians.c (F_GREEDY, F_LISTED, F_DESTROYED, GREEDY_P,
13756 SET_GREEDY, LISTED_P, SET_LISTED, CLR_LISTED, DESTROYED_P,
13757 SET_DESTROYED): new defines/macros.
13758 (GUARDIAN_LIVE, GUARDIAN_ZOMBIES, GUARDIAN_NEXT): deleted.
13759 (add_to_live_list): takes a `guardian_t *' now, not SCM.
13760 (guardian_print): print more info.
13761 (guardian_apply): check if the guardian is destroyed, and throw an
13762 error if so. take one more optional argument `throw_p'.
13763 (scm_guard): depending on the value of `throw_p', return a boolean
13764 result.
13765 (scm_get_one_zombie): remove redundant property test.
13766 (guardian_t): represent the various (currently 3, I hope nothing
13767 more gets added) boolean fields as bit flags.
13768 (scm_guardian_destroyed_p, scm_guardian_greedy_p): new predicates.
13769 (scm_destroy_guardian_x): new procedure.
13770
13771 * guardians.h: added prototypes for `scm_guardian_greedy_p' and
13772 `scm_guardian_destroyed_p'. changed prototype for `scm_guard'.
13773
0c6d2191
GH
137742001-01-01 Gary Houston <ghouston@arglist.com>
13775
13776 * fports.c (fport_write): bugfix: handle short writes for
13777 unbuffered ports too. optimize the buffered case by minimizing
13778 the number of write/flush calls.
13779 (write_all): new helper procedure.
13780
a51fe247 13781The ChangeLog continues in the file: "ChangeLog-2000"
d9f71a07
LC
13782
13783;; Local Variables:
13784;; coding: utf-8
13785;; End: