* options.c (scm_options_try): new function. This allows error
[bpt/guile.git] / libguile / ChangeLog
CommitLineData
62560650
HWN
12007-01-19 Han-Wen Nienhuys <hanwen@lilypond.org>
2
03347a97
HWN
3 * options.c (scm_options_try): new function. This allows error
4 reporting before changing options in a critical section.
5
b0763985
HWN
6 * srcprop.c: use double cell for storing source-properties. Put
7 filename in the plist, and share between srcprops if possible.
8 Remove specialized storage.
9
10 * srcprop.h: remove macros without SCM_ prefix from
11 interface. Remove specialized storage/type definitions.
12
62560650
HWN
13 * read.c: idem.
14
15 * print.c: idem.
16
17 * eval.c: terminate option lists with 0.
18
19 * options.c: remove n (for length) from scm_option_X
20 functions. Detect option list length by looking for NULL name.
21
42ddb3cb
LC
222007-01-19 Ludovic Courtès <ludovic.courtes@laas.fr>
23
24 * struct.c (scm_i_struct_equalp): Skip comparison if both FIELD1
25 is equal to S1 and FIELD2 is equal to S2. This avoids infinite
26 recursion when comparing `s' fields, as the REQUIRED_VTABLE_FIELDS
27 added by `make-vtable-vtable'. Reported by Marco Maggi.
28
937038e8
HWN
292007-01-18 Han-Wen Nienhuys <hanwen@lilypond.org>
30
31 * throw.c (scm_ithrow): more refined error message: print symbols
32 too.
33
23d72566
KR
342007-01-16 Kevin Ryde <user42@zip.com.au>
35
36 * feature.c, feature.h (scm_set_program_arguments_scm): New function,
37 implementing `set-program-arguments'.
38
39 * filesys.c (scm_init_filesys): Use scm_from_int rather than
40 scm_from_long for O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_EXCL,
41 O_NOCTTY, O_TRUNC, O_APPEND, O_NONBLOCK, O_NDELAY, O_SYNC and
42 O_LARGEFILE. These are all int not long, per arg to open().
43 (scm_init_filesys): Use scm_from_int rather than scm_from_long for
44 F_DUPFD, F_GETFD, F_SETFD, F_GETFL, F_SETFL, F_GETOWN, F_SETOWN, these
45 are all ints (per command arg to fcntl). Likewise FD_CLOEXEC which is
46 an int arg to fcntl.
47
48 * posix.c (scm_putenv): Correction to "len" variable, was defined only
49 for __MINGW32__ but used under any !HAVE_UNSETENV (such as solaris).
50 Move it to where it's used. Reported by Hugh Sasse.
51
52 * regex-posix.c (scm_regexp_exec): Remove SCM_CRITICAL_SECTION_START
53 and SCM_CRITICAL_SECTION_END, believe not needed. Their placement
54 meant #\nul in the input (detected by scm_to_locale_string) and a bad
55 flags arg (detected by scm_to_int) would throw from a critical
56 section, causing an abort().
57
58 * regex-posix.c (scm_init_regex_posix): Use scm_from_int for
59 REG_BASIC, REG_EXTENDED, REG_ICASE, REG_NEWLINE, REG_NOTBOL,
60 REG_NOTEOL; they're all ints not longs (per args to regcomp and
61 regexec).
62
a2c40dc7
HWN
632007-01-10 Han-Wen Nienhuys <hanwen@lilypond.org>
64
65 * throw.c (scm_ithrow): print out key symbol and string arguments
66 when error happens inside a critical section, and document why.
67
391f57e6
HWN
682007-01-06 Han-Wen Nienhuys <hanwen@lilypond.org>
69
70 * read.c (s_scm_read_hash_extend): document #f argument to
71 read-hash-extend.
72
23d72566
KR
732007-01-04 Kevin Ryde <user42@zip.com.au>
74
75 * deprecated.h (scm_create_hook), version.h.in (scm_major_version,
76 scm_minor_version, scm_micro_version, scm_effective_version,
77 scm_version, scm_init_version): Use SCM_API instead of just extern,
78 for the benefit of mingw. Reported by Cesar Strauss.
79
93632e3c
HWN
802007-01-03 Han-Wen Nienhuys <hanwen@lilypond.org>
81
82 * gc.c (s_scm_gc_stats): return an entry for total-cells-allocated
83 too.
84 (gc_update_stats): update scm_gc_cells_allocated_acc too.
85
23d72566
KR
862006-12-27 Kevin Ryde <user42@zip.com.au>
87
88 * threads.c (get_thread_stack_base): In mingw with pthreads we can use
89 the basic scm_get_stack_base. As advised by Nils Durner.
90
91 * threads.c (get_thread_stack_base): Add a version using
92 pthread_get_stackaddr_np (when available), for the benefit of MacOS.
93 As advised by Heikki Lindholm.
94
95 * scmsigs.c (signal_delivery_thread): Restrict scm_i_pthread_sigmask
96 to HAVE_PTHREAD_SIGMASK, it doesn't exist on mingw. Reported by Nils
97 Durner.
98
992006-12-24 Kevin Ryde <user42@zip.com.au>
100
101 * posix.c (scm_kill): When only raise() is available, throw an ENOSYS
102 error if pid is not our own process, instead of silently doing nothing.
103
104 * print.c (scm_write, scm_display, scm_write_char): Disable port close
105 on EPIPE. This was previously disabled but introduction of HAVE_PIPE
106 check in configure.in unintentionally enabled it. Believe that
107 testing errno after scm_prin1 or scm_putc is bogus, a long ago error
108 can leave errno in that state. popen.test "no duplicates" output test
109 provoked that.
110
e2bf3b19
HWN
1112006-12-23 Han-Wen Nienhuys <hanwen@lilypond.org>
112
113 * numbers.c (scm_i_fraction_reduce): move logic into
114 scm_i_make_ratio(), so fractions are only read.
115 scm_i_fraction_reduce() modifies a fraction when reading it. A
116 race condition might lead to fractions being corrupted by reading
117 them concurrently.
118
119 Also, the REDUCED bit alters the SCM_CELL_TYPE(), making
120 comparisons between reduced and unreduced fractions go wrong.
121
122 * numbers.h: remove SCM_FRACTION_SET_NUMERATOR,
123 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
124 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
125 SCM_FRACTION_REDUCED.
126
23d72566
KR
1272006-12-16 Kevin Ryde <user42@zip.com.au>
128
129 * scmsigs.c (scm_raise): Use raise() rather than kill(), as this is
130 more direct for a procedure called raise.
131 (kill): Remove mingw fake fallback.
132
1332006-12-15 Kevin Ryde <user42@zip.com.au>
134
135 * scmsigs.c: Conditionalize process.h, add io.h believe needed for
136 _pipe on mingw.
137
1382006-12-14 Kevin Ryde <user42@zip.com.au>
139
140 * threads.c (thread_print): Cope with the case where pthread_t is a
141 struct, as found on mingw. Can't just cast to size_t for printing.
142 Reported by Nils Durner.
143
144 * scmsigs.c: Add <fcntl.h> and <process.h> needed by mingw. Copy the
145 fallback pipe() using _pipe() from posix.c. Reported by Nils Durner.
146
1472006-12-13 Kevin Ryde <user42@zip.com.au>
148
149 * eval.c (scm_m_define): Set 'name procedure property on any
150 scm_procedure_p, not just SCM_CLOSUREP. In particular this picks up
151 procedures with setters as used in srfi-17.
152
153 * posix.c (scm_crypt): Check for NULL return from crypt(), which the
154 linux man page says is a possibility.
155
f30e1bdf
LC
1562006-12-12 Ludovic Courtès <ludovic.courtes@laas.fr>
157
158 * libguile/unif.c (read_decimal_integer): Let RESP be SIGN * RES
42ddb3cb 159 instead of RES (reported by Szavai Gyula). This allows the use of
f30e1bdf
LC
160 negative lower bounds.
161 (scm_i_read_array): Make sure LEN is non-negative (reported by
42ddb3cb 162 Szavai Gyula).
f30e1bdf
LC
163
164 (scm_array_in_bounds_p): Iterate over S instead of always
165 comparing indices with the bounds of S[0]. This fixes
166 `array-in-bounds?' for arrays with a rank greater than one and
167 with different lower bounds for each dimension.
168
23d72566
KR
1692006-12-05 Kevin Ryde <user42@zip.com.au>
170
171 * numbers.c (scm_product): For flonum*inum and complex*inum, return
172 exact 0 if inum==0. Already done for inum*flonum and inum*complex,
173 and as per R5RS section "Exactness".
174
1752006-12-03 Kevin Ryde <user42@zip.com.au>
176
177 * Makefile.am (.c.doc): Remove the "test -n" apparently attempting to
178 allow $AWK from the environment to override. It had syntax gremlins,
179 and the presence of a $(AWK) variable set by AC_PROG_AWK in the
180 Makefile stopped it having any effect. Use just $(AWK), which can be
181 overridden with "make AWK=xxx" in the usual way if desired.
182
22be72d3
LC
1832006-11-29 Ludovic Courtès <ludovic.courtes@laas.fr>
184
185 * libguile/vectors.c (scm_vector_to_list): Fixed list
186 construction: elements were not copied when INC is zero (see
187 "shared array" example in `vectors.test'). Reported by
188 Szavai Gyula.
189
b89c4943
LC
1902006-11-18 Ludovic Courtès <ludovic.courtes@laas.fr>
191
192 * Makefile.am (lib_LTLIBRARIES): Added `libguile-i18n-v-XX.la'.
193 (libguile_la_SOURCES): Added `gettext.c', removed `i18n.c'.
194 (libguile_i18n_v_XX_la_SOURCES, libguile_i18n_v_XX_la_CFLAGS,
195 libguile_i18n_v_XX_la_LIBADD, libguile_i18n_v_XX_la_LDFLAGS): New.
196 (DOT_X_FILES): Added `gettext.x'.
197 (DOT_DOC_FILES): Likewise.
198 (EXTRA_libguile_la_SOURCES): Added `locale-categories.h'.
199 (modinclude_HEADERS): Added `gettext.h'.
200 (EXTRA_DIST): Added `libgettext.h'.
201
202 * gettext.h: Renamed to...
203 * libgettext.h: New file.
204
205 * i18n.c: Renamed to...
206 * gettext.c: New file.
207
208 * i18n.h: Renamed to...
209 * gettext.h: New file.
210
211 * i18n.c, i18n.h, locale-categories.h: New files.
212
213 * init.c: Include "libguile/gettext.h" instead of
214 "libguile/i18n.h".
215 (scm_i_init_guile): Invoke `scm_init_gettext ()' instead of
216 `scm_init_i18n ()'.
217
218 * posix.c: Include "libguile/gettext.h" instead of
219 "libguile/i18n.h" Test `HAVE_NEWLOCALE' and `HAVE_STRCOLL_L'.
220 (USE_GNU_LOCALE_API): New macro.
221 (scm_i_locale_mutex): New variable.
222 (scm_setlocale): Lock and unlock it around `setlocale ()' calls.
223
224 * posix.h: Include "libguile/threads.h".
225 (scm_i_locale_mutex): New declaration.
226
f3e3f530
NJ
2272006-11-17 Neil Jerram <neil@ossau.uklinux.net>
228
229 * script.c (scm_shell_usage): Note need for subscription to bug-guile@gnu.org.
230
d9f71a07
LC
2312006-11-08 Ludovic Courtès <ludovic.courtes@laas.fr>
232
233 * libguile/gc-freelist.c (scm_i_adjust_min_yield): Take two
234 "sweep_stats" arguments; use them instead of accessing the global
235 variables `scm_gc_cells_collected' and `scm_gc_cells_collected_1'.
236
237 * libguile/gc-segment.c (scm_i_sweep_some_cards): Reset SWEEP
238 before each iteration of the loop.
239 (scm_i_sweep_some_segments): Reset SWEEP at each iteration.
240 (scm_i_get_new_heap_segment): Take an additional argument
241 SWEEP_STATS. Compute MIN_CELLS as a function of it.
242
243 * libguile/gc.c (scm_gc_cells_collected,
244 scm_gc_cells_collected_1): Removed.
245 (scm_i_gc_sweep_stats, scm_i_gc_sweep_stats_1): New.
246 (scm_gc_cells_marked_acc, scm_gc_cells_swept_acc,
247 scm_gc_time_taken, scm_gc_mark_time_taken, scm_gc_times,
248 scm_gc_cell_yield_percentage, protected_obj_count): Made `static'.
249 (scm_gc_stats): Use `scm_i_gc_sweep_stats' instead of
250 `scm_gc_cells_(collected|swept)'.
251 (gc_update_stats): New.
252 (gc_end_stats): Use `scm_i_gc_sweep_stats' and
253 `scm_i_gc_sweep_stats_1' instead of the former globals.
254 (scm_gc_for_newcell): Invoke `gc_update_stats ()' after each
255 `scm_i_sweep_some_segments' call. This fixes a bug where the GC
256 would keep allocating new segments instead of re-using collected
257 cells (because `scm_gc_cells_collected' would remain zero).
258
259 * libguile/gc.h (scm_gc_cells_swept, scm_gc_cells_collected,
260 scm_gc_cell_yield_percentage): Removed.
261
262 * libguile/private-gc.h (scm_gc_cells_collected_1): Removed.
263 (scm_i_adjust_min_yield): Updated.
264 (scm_i_get_new_heap_segment): Updated.
265
dd18d312
NJ
2662006-11-02 Neil Jerram <neil@ossau.uklinux.net>
267
268 * modules.c: Correct comment saying that low-level environments
269 will be used "in the next release".
270
271 * init.c: Comment out #include of environments.h.
272 (scm_i_init_guile): Comment out scm_environments_prehistory() and
273 scm_init_environments() calls.
274
275 * Makefile.am (libguile_la_SOURCES): Remove environments.c.
276 (DOT_X_FILES): Remove environments.x.
277 (DOT_DOC_FILES): Remove environments.doc.
278 (modinclude_HEADERS): Remove environments.h.
279
9a5fa6e9
NJ
2802006-10-25 Neil Jerram <neil@ossau.uklinux.net>
281
282 IA64 HP-UX GC patch from Hrvoje Nikšić. (Thanks!)
283
284 * threads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp() and
285 scm_ia64_register_backing_store_base() instead of Linux-specific
286 implementations.
287
288 * gc.h (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp):
289 New declarations.
290
291 * gc.c (__libc_ia64_register_backing_store_base): Declaration
292 removed.
293 (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp): New, with
294 implementations for Linux and HP-UX.
295
296 * coop-pthreads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp()
297 and scm_ia64_register_backing_store_base() instead of
298 Linux-specific implementations.
299
300 * continuations.h (__libc_ia64_register_backing_store_base):
301 Declaration removed.
302 (scm_t_contregs): New "fresh" field.
303
304 * continuations.c (ia64_getcontext): Removed.
305 (scm_make_continuation): Use continuation fresh field instead of
306 interpreting getcontext return values (which isn't portable). Use
307 scm_ia64_ar_bsp() and scm_ia64_register_backing_store_base()
308 instead of Linux-specific implementations.
309 (copy_stack_and_call): Use scm_ia64_register_backing_store_base()
310 instead of Linux-specific implementation.
311
312 * _scm.h (__ia64__): Also detect __ia64.
313
8ab3d8a0
KR
3142006-10-03 Kevin Ryde <user42@zip.com.au>
315
316 * eval.c (SCM_APPLY): For scm_tc7_subr_2o, throw wrong-num-args on 0
317 arguments or 3 or more arguments. Previously 0 called proc with
318 SCM_UNDEFINED, and 3 or more silently used just the first 2.
319
3202006-09-28 Kevin Ryde <user42@zip.com.au>
321
322 * fports.c, ports.c (ftruncate): Use "HAVE_CHSIZE && ! HAVE_FTRUNCATE"
323 for chsize fallback, instead of hard-coding mingw. Mingw in fact
324 supplies ftruncate itself these days.
325
326 * ports.c (fcntl.h): Can include this unconditionally, no need for
327 __MINGW32__.
328
329 * ports.c (truncate): Conditionalize on "HAVE_FTRUNCATE && !
330 HAVE_TRUNCATE" so as not to hard-code mingw. Use "const char *" and
331 "off_t" for parameters, per usual definition of this function, rather
332 than "char *" and "int". Use ftruncate instead of chsize. Check for
333 error on final close.
334
3352006-09-27 Kevin Ryde <user42@zip.com.au>
336
337 * numbers.c (scm_log10): Check HAVE_CLOG10, clog10() is not available
338 in mingw.
339
340 * posix.c (scm_execl, scm_execlp, scm_execle): Cast "const char *
341 const *" for mingw to suppress warnings from gcc (which are errors
342 under the configure default -Werror). Reported by Nils Durner.
343
3442006-09-26 Kevin Ryde <user42@zip.com.au>
345
346 * _scm.h (scm_to_off64_t, scm_from_off64_t): New macros.
347 * fports.c (scm_open_file): Use open_or_open64.
348 (fport_seek_or_seek64): New function, adapting fport_seek.
349 * fports.c, fports.h (scm_i_fport_seek, scm_i_fport_truncate): New
350 functions.
351 * ports.c (scm_seek, scm_truncate_file): Use scm_i_fport_seek and
352 scm_i_fport_truncate to allow 64-bit seeks and truncates on fports.
353
354 * ports.c (scm_truncate_file): Update docstring per manual.
355
3562006-09-23 Kevin Ryde <user42@zip.com.au>
357
358 * numbers.c, numbers.h (scm_log, scm_log10, scm_exp, scm_sqrt): New
359 functions.
360
9a5fa6e9 3612006-09-20 Ludovic Courtès <ludovic.courtes@laas.fr>
a17d2654
LC
362
363 * srfi-14.c: Include <config.h>. Define `_GNU_SOURCE'.
364 (make_predset, define_predset, make_strset, define_strset, false,
365 true): Removed.
366 (SCM_CHARSET_UNSET, CSET_BLANK_PRED, CSET_SYMBOL_PRED,
367 CSET_PUNCT_PRED, CSET_LOWER_PRED, CSET_UPPER_PRED,
368 CSET_LETTER_PRED, CSET_DIGIT_PRED, CSET_WHITESPACE_PRED,
369 CSET_CONTROL_PRED, CSET_HEX_DIGIT_PRED, CSET_ASCII_PRED,
370 CSET_LETTER_AND_DIGIT_PRED, CSET_GRAPHIC_PRED, CSET_PRINTING_PRED,
371 CSET_TRUE_PRED, CSET_FALSE_PRED, UPDATE_CSET): New macros.
372 (define_charset, scm_srfi_14_compute_char_sets): New functions.
373 (scm_init_srfi_14): Use `define_charset ()' instead of
374 `define_predset ()' and `define_strset ()'.
375
376 * srfi-14.h (scm_c_init_srfi_14): Removed.
377 (scm_srfi_14_compute_char_sets): New declaration.
378
379 * posix.h: Include "srfi-14.h".
380 (scm_setlocale): Invoke `scm_srfi_14_compute_char_sets ()' after a
381 successful `setlocale ()' call.
382
8ab3d8a0
KR
3832006-09-08 Kevin Ryde <user42@zip.com.au>
384
385 * socket.c (scm_init_socket): Add MSG_DONTWAIT.
386 (scm_recvfrom): Update docstring from manual.
387
418122ce
RB
3882006-08-31 Rob Browning <rlb@defaultvalue.org>
389
390 * ports.c (scm_c_port_for_each): Add a
391 scm_remember_upto_here_1(ports) at the end of the function to fix
392 a GC bug.
393
b5944f66
NJ
3942006-08-28 Neil Jerram <neil@ossau.uklinux.net>
395
396 * backtrace.c (scm_display_backtrace_with_highlights): Minor
397 improvements to docstring.
398 (scm_backtrace_with_highlights): Analogous improvements.
399
8ab3d8a0
KR
4002006-08-12 Kevin Ryde <user42@zip.com.au>
401
402 * gen-scmconfig.h.in (SCM_I_GSC_NEED_BRACES_ON_PTHREAD_ONCE_INIT):
403 New, set from configure.
404 * gen-scmconfig.c (SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT): New output
405 to scmconfig.h.
406 * pthread-threads.h (SCM_I_PTHREAD_ONCE_INIT): Use
407 SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT to cope with Solaris.
408 Reported by Claes Wallin.
409
b0b0deff
NJ
4102006-08-11 Neil Jerram <neil@ossau.uklinux.net>
411
412 * stacks.c (scm_last_stack_frame): Correct docstring (returns a
413 frame, not a stack).
414
8ab3d8a0
KR
4152006-07-25 Kevin Ryde <user42@zip.com.au>
416
417 * threads.c (get_thread_stack_base): Restrict HAVE_PTHREAD_GETATTR_NP
418 on pthreads version, since pthread_getattr_np not available on solaris
419 and macos. Reported by Claes Wallin.
420
4212006-07-24 Kevin Ryde <user42@zip.com.au>
422
423 * filesys.c (dirfd): Test with #ifndef rather than HAVE_DIRFD, since
424 it's a macro on MacOS X. Reported by Claes Wallin.
425
426 * posix.c (sethostname): Give prototype if not HAVE_DECL_SETHOSTNAME,
427 for the benefit of Solaris 10. Reported by Claes Wallin.
428
429 * socket.c (scm_htonl, scm_ntohl): Use scm_to_uint32 rather than
430 NUM2ULONG, to enforce 32-bit range check on systems with 64-bit long.
431
4322006-07-21 Kevin Ryde <user42@zip.com.au>
433
434 * eval.c, filesys.c (alloca): Update <alloca.h> etc blob, per current
435 autoconf recommendation. Should fix Solaris 10 reported by Claes
436 Wallin.
437
438 * threads.c: Include <string.h>, needed for memset() which is used by
439 FD_ZERO() on Solaris 10. Reported by Claes Wallin.
440
b4912378
RB
4412006-07-18 Rob Browning <rlb@defaultvalue.org>
442
443 * continuations.c: Add __attribute__ ((returns_twice)) to the
444 ia64_getcontext prototype so that gcc will make the right
445 arrangements and avoid an illegal instruction during
446 call-with-current-continuation.
447
9a5fa6e9 4482006-07-12 Ludovic Courtès <ludovic.courtes@laas.fr>
eaa94eaa
LC
449
450 * numbers.c (guile_ieee_init): Use regular ANSI C casts rather
451 than C++-style `X_CAST ()'. Patch posted by by Mike Gran.
452
8ab3d8a0
KR
4532006-07-08 Kevin Ryde <user42@zip.com.au>
454
455 * environments.c (core_environments_unobserve): Use if/else rather
456 than ?: for "SET" bits, avoiding complaints from AIX xlc compiler
457 about them not being rvalues. Reported by Mike Gran.
458
459 * Makefile.am (version.h): Don't use $< in an explicit rule, it's not
460 portable and in particular fails on OpenBSD and AIX (see autoconf
461 manual too). Reported by Mike Gran.
462
4632006-06-25 Kevin Ryde <user42@zip.com.au>
464
465 * stime.c (bdtime2c): tm_gmtoff is seconds East, so take negative of
466 tm:gmtoff which is seconds West. Reported by Aaron VanDevender.
467 (bdtime2c): Test HAVE_STRUCT_TM_TM_GMTOFF for tm_gmtoff, rather than
468 HAVE_TM_ZONE.
469 (scm_strptime): Use tm_gmtoff from the strptime result when that field
470 exists, it's set by glibc strptime "%s".
471
9a5fa6e9 4722006-06-13 Ludovic Courtès <ludovic.courtes@laas.fr>
d15ad007
LC
473
474 * eq.c: Include "struct.h", "goops.h" and "objects.h".
475 (scm_equal_p): Invoke `scm_i_struct_equalp ()' on structures that
476 are not GOOPS instances.
477 * struct.c: Include "eq.h".
478 (scm_free_structs): Use `SCM_STRUCT_VTABLE_DATA ()' instead of
479 hand-written code.
480 (scm_i_struct_equalp): New.
481 * struct.h (scm_i_struct_equalp): New declaration.
482
c862d0e0
KR
4832006-06-06 Kevin Ryde <user42@zip.com.au>
484
485 * Makefile.am (BUILT_SOURCES): Remove guile.texi, only used by
486 maintainers (with doc/maint/docstring.el). Fixes parallel "make -j2"
487 reported by Mattias Holm.
b4912378 488
c862d0e0
KR
4892006-06-03 Kevin Ryde <user42@zip.com.au>
490
491 * read.c (s_vector): Conditionalize on SCM_ENABLE_ELISP, to avoid
492 unused variable warning when elisp disabled. Reported by Ryan
493 VanderBijl.
494
495 * throw.c (scm_handle_by_message): Add dummy return value to avoid
496 compiler warning on cygwin. Reported by Ryan VanderBijl.
497
498 * Makefile.am (EXTRA_DOT_X_FILES): Typo in dependency rule, was a
499 duplicate of EXTRA_DOT_DOC_FILES.
500 (DOT_X_FILES, EXTRA_DOT_X_FILES, DOT_DOC_FILES, EXTRA_DOT_DOC_FILES):
501 Add scmconfig.h to dependencies, since these all run cpp. Helps a
502 parallel "make -j2". Reported by Mattias Holm.
503
5042006-05-30 Kevin Ryde <user42@zip.com.au>
505
506 * ports.c, ports.h (scm_set_port_mark, scm_set_port_free,
507 scm_set_port_print, scm_set_port_equalp, scm_set_port_flush,
508 scm_set_port_end_input, scm_set_port_close, scm_set_port_seek,
509 scm_set_port_truncate, scm_set_port_input_waiting): Use scm_t_bits for
510 port type descriptor, same as scm_make_port_type return value.
511
af4f8612
MV
5122006-05-30 Marius Vollmer <mvo@zagadka.de>
513
514 * eq.c (scm_equal_p): Use scm_array_equal_p explicitely when one
515 of the arguments is a array. This allows vectors to be equal to
516 one-dimensional arrays.
517
18bffcd0
MV
5182006-05-29 Marius Vollmer <mvo@zagadka.de>
519
520 * throw.c (scm_ithrow): When looking for the jmpbuf, first test
521 that we have a pair before accessing its cdr. Thanks to Bill
522 Schottstaedt!
523
c862d0e0
KR
5242006-05-28 Kevin Ryde <user42@zip.com.au>
525
526 * eval.c, filesys.c: Add malloc.h to get alloca() on mingw. Reported
527 by "The Senator".
528
5292006-05-27 Marius Vollmer <mvo@zagadka.de>
b0c0a310
MV
530
531 * srfi-4.c, strings.c: Replace SCM_C_INLINE with
532 SCM_C_INLINE_KEYWORD. Thanks to Mark Gran!
533
c862d0e0
KR
5342006-05-26 Kevin Ryde <user42@zip.com.au>
535
536 * fports.c (fport_input_waiting): For ioctl, check HAVE_IOCTL as well
537 as defined(FIONREAD), since mingw has FIONREAD but not ioctl().
538 Reported by "The Senator".
539 For select and ioctl, move fdes into those conditionals, to avoid
540 unused variable warning when neither of those used.
541
5422006-05-23 Kevin Ryde <user42@zip.com.au>
543
544 * fports.c: Remove "fwrite" declaration under "! HAVE_UNISTD_H".
545 It's unused and will be in stdio.h anyway (if it's anywhere).
546
5472006-05-20 Kevin Ryde <user42@zip.com.au>
548
549 * filesys.c (scm_stat2scm): Test #ifdef S_ISLNK directly, rather than
550 HAVE_S_ISLNK from configure (it was only a #ifdef test anyway).
551
552 * posix.c (scm_mknod): Test #ifdef S_IFLNK before using that (for
553 symlink). Probably can't create symlinks with mknod anyway though.
554
555 * inline.h (scm_is_pair): Add a workaround for i386 gcc 2.95 bad code
556 generation.
557
5582006-05-15 Kevin Ryde <user42@zip.com.au>
559
560 * simpos.c, simpos.h (scm_primitive__exit): New function.
561 (scm_primitive_exit): Update docstring, no longer the best exit after
562 a fork.
563
5642006-05-09 Kevin Ryde <user42@zip.com.au>
565
566 * numbers.c (scm_i_divide): For big/big wanting inexact, use mpq_get_d
567 rather than converting to doubles, to avoid inf or nan when the inputs
568 are too big for a double but the quotient does fit. This affects
569 conversions exact->inexact of big fractions.
570
571 * filesys.c (scm_open_fdes): Use open64.
572 (scm_init_filesys): Add O_LARGEFILE.
573
574 * ports.c (scm_seek): Use lseek64.
575 (scm_truncate_file): Use ftruncate64.
576
4a342b19
MV
5772006-05-08 Marius Vollmer <mvo@zagadka.de>
578
579 * private-gc.h (CELL_P): Also check that the potential pointer is
580 correctly aligned for a cell. Thanks to Miroslav Lichvar!
581
c862d0e0
KR
5822006-04-18 Rob Browning <rlb@defaultvalue.org>
583
584 * _scm.h: Add back error if the size of off_t is unknown. The bug
585 was actually in guile-readline's configuration.
586
5872006-04-18 Kevin Ryde <user42@zip.com.au>
588
589 * posix.c (scm_mkstemp): Update docstring from the manual, in
590 particular file mode 0600 is not guaranteed.
591
281ab5e2
KR
5922006-04-17 Kevin Ryde <user42@zip.com.au>
593
594 * _scm.h (scm_to_off_t, scm_from_off_t): No error if unknown off_t
595 size, to help the guile-readline build where off_t is unused.
596
2b829bbb
KR
5972006-04-16 Kevin Ryde <user42@zip.com.au>
598
599 * filesys.c (scm_stat2scm, scm_stat, scm_lstat): Use stat or stat64.
600 (scm_readdir): Use readdir64.
601 (scm_copy_file): Use open64 and fstat64, to cope with >2Gb files.
602 * ports.c (scm_truncate_file): Use truncate64. Correction truncate
603 and ftruncate take off_t not size_t.
604 * _scm.h (stat_or_stat64 etc): Macros for selecting LFS64 when
605 available.
606
6072006-04-06 Kevin Ryde <user42@zip.com.au>
608
609 * fports.c (scm_setvbuf): Fix for not _IOLBF, clear SCM_BUFLINE
9a5fa6e9 610 instead of toggling it. Reported by Ludovic Courtès.
2b829bbb
KR
611
6122006-03-26 Marius Vollmer <mvo@zagadka.de>
613
614 * threads.c (get_thread_stack_base): Use scm_get_stack_base
615 instead of accessing __libc_stack_end directly, and only do this
616 when pthread_attr_getstack is known not to work for the main
617 thread or when not using pthreads at all.
618
619 * gc_os_dep.c (scm_get_stack_base): Abort when the machine type is
620 unknown instead of returning NULL.
621
9a5fa6e9 6222006-03-21 Ludovic Courtès <ludovic.courtes@laas.fr>
2b829bbb
KR
623
624 * numbers.c (scm_i_mem2number): Renamed to
625 scm_c_locale_stringn_to_number.
626 * numbers.c, print.c, read.c: Updated callers.
627 * numbers.h: Update function declaration.
628
6292006-03-11 Neil Jerram <neil@ossau.uklinux.net>
630
631 * unif.c (string_set): Don't return in a void function. (Reported
632 by Mike Gran.)
633
634 * srfi-4.c (scm_uniform_vector_read_x): Declare base as char*
635 rather than void*, so we can do pointer arithmetic on it.
636 (Reported by Mike Gran.)
637 (s_scm_uniform_vector_write): Ditto.
638
6392006-03-10 Neil Jerram <neil@ossau.uklinux.net>
640
641 * unif.c (scm_make_shared_array): Don't use SCM_I_ARRAY_BASE when
642 oldra is not an array. (Reported by Steve Juranich.)
643
644 * threads.c (do_unlock): Renamed from "unlock", which is defined
645 in unistd.h on QNX. (Reported by Matt Kraai.)
646
6472006-03-04 Kevin Ryde <user42@zip.com.au>
648
649 * deprecated.c (scm_i_defer_ints_etc): Show SCM_DEFER_INTS in message,
650 not SCM_CRITICAL_SECTION_START.
651
652 * eval.c, posix.c: Change comments from C++ to C style. Reported by
653 Mike Gran.
654
6552006-02-28 Kevin Ryde <user42@zip.com.au>
656
657 * unif.c (bitvector_set): Use h->writable_elements not h->elements.
658
6592006-02-26 Kevin Ryde <user42@zip.com.au>
660
661 * filesys.c (scm_readdir): Use fpathconf for the dirent size when
662 NAME_MAX is not available, which is so on Solaris 10. Report and help
663 by Bill Schottstaedt.
664
665 * srfi-13.c (MY_VALIDATE_SUBSTRING_SPEC_UCOPY): New macro.
666 (scm_string_compare, scm_string_compare_ci, scm_string_lt,
667 scm_string_gt, scm_string_le, scm_string_ge, scm_string_ci_lt,
668 scm_string_ci_gt, scm_string_ci_le, scm_string_ci_ge): In comparisons
669 use "unsigned char", not signed char. This ensures comparisons are
670 the same as `char<?' etc, and is also the same as guile 1.6 did.
671 Reported by Sven Hartrumpf.
672
4a9f83ff
MD
6732006-02-19 Mikael Djurfeldt <mdj@neurologic.cc>
674
675 * random.c: Test for SCM_HAVE_T_UINT64 instead of
676 SCM_HAVE_T_INT64.
677 (scm_i_uniform32, scm_i_uniform32, scm_i_init_rstate): Use
678 scm_t_uint64 and scm_t_uint32 instead of scm_t_int64 and
679 scm_t_int32.
680
4c7016dc
HWN
6812006-01-04 Ludovic Court<E8>s <ludovic.courtes@laas.fr>
682
683 * gc-segment.c (scm_i_sweep_some_cards): Take a SWEEP_STATS
684 argument. Don't refer to SCM_GC_CELLS_COLLECTED and
685 SCM_CELLS_ALLOCATED. If SEG->FIRST_TIME, let CELLS_COLLECTED as zero.
686 Take into account SEG->SPAN when computing CELLS_SWEPT.
687 (scm_i_sweep_segment): Take one more argument, similarly.
688 (scm_i_sweep_all_segments): Likewise.
689 (scm_i_sweep_some_segments): Likewise.
690 (scm_i_adjust_min_yield): Change the way MIN_CELLS is computed: do not
691 refer to SCM_GC_CELLS_COLLECTED.
692
693 * gc-freelist.c (scm_i_adjust_min_yield): Take one more
694 argument, an `scm_i_sweep_statistics' object.
695 Change the way DELTA is collected: don't take into account
696 SCM_GC_CELLS_COLLECTED_1, only SWEEP_STATS.COLLECTED.
697
698 * gc-malloc.c (scm_realloc): Pass an extra argument
699 to `scm_i_sweep_all_segments ()'.
700
701 * gc.c (gc_start_stats): Updated accordingly.
702 (gc_end_stats): Take an additional SWEEP_STATS argument.
703 Decrement SCM_CELLS_ALLOCATED after calls to `scm_i_sweep_* ()'.
704 (scm_gc_for_newcell): Updated callers of `scm_i_sweep_*'.
705 Decrement SCM_CELLS_ALLOCATED.
706 (scm_i_gc): Likewise.
707
708 * private-gc.h (scm_i_sweep_*): Updated function
709 prototypes accordingly.
710 (scm_t_sweep_statistics): New type.
711 (scm_i_sweep_statistics_init): New macro.
712 (scm_i_sweep_statistics_sum): New macro
713
9a5fa6e9 7142006-02-14 Ludovic Courtès <ludovic.courtes@laas.fr>
2b829bbb
KR
715
716 * strings.c (scm_i_take_stringbufn): Register LEN+1 bytes instead of
717 LEN. Without this, too much collectable memory gets unregistered,
718 which results in an underflow of SCM_MALLOCATED in
719 `decrease_mtrigger()'.
720
721 * gc-malloc.c (decrease_mtrigger): Make sure SIZE is lower than or
722 equal to SCM_MALLOCATED.
723
7242006-02-13 Marius Vollmer <mvo@zagadka.de>
725
726 * eval.c (scm_eval_body): Use scm_i_dynwind_pthread_mutex_lock
727 oinstead of scm_dynwind_pthread_mutex_lock so that it works when
728 configured --without-threads.
729 (SCM_APPLY, CEVAL): Likewise. Thanks to Han-Wen Nienhuys!
730
1aaa1c17
MV
7312006-02-12 Marius Vollmer <mvo@zagadka.de>
732
733 * unif.c (scm_dimensions_to_uniform_array): Use the prototype for
734 filling when the fill parameter is omitted, as documented, but
735 turn #\nul into 0 since s8 arrays (signified by a #\nul prototype)
736 can not store characters.
737
d7c6575f
NJ
7382006-02-09 Neil Jerram <neil@ossau.uklinux.net>
739
740 * socket.c (scm_c_make_socket_address): Pass address_size pointer
741 on to scm_fill_sockaddr call.
742
43e01b1e
NJ
7432006-02-04 Neil Jerram <neil@ossau.uklinux.net>
744
745 * throw.h (scm_c_catch, scm_c_with_throw_handler,
746 scm_catch_with_pre_unwind_handler, scm_with_throw_handler): New.
747
748 * throw.c (SCM_JBPREUNWIND, SCM_SETJBPREUNWIND): New.
749 (struct pre_unwind_data): New, replaces struct lazy_catch.
750 (scm_c_catch): New, replaces scm_internal_catch as the primary
751 catch API for C code; adds pre-unwind handler support.
752 (scm_internal_catch): Now just a wrapper for scm_c_catch, for back
753 compatibility.
754 (tc16_pre_unwind_data, pre_unwind_data_print,
755 make_pre_unwind_data, SCM_PRE_UNWIND_DATA_P): Renamed from
756 "lazy_catch" equivalents.
757 (scm_c_with_throw_handler): New, replaces scm_internal_lazy_catch
758 as the primary C API for a "lazy" catch.
759 (scm_internal_lazy_catch): Now just a wrapper for
760 scm_c_with_throw_handler, for back compatibility.
761 (scm_catch_with_pre_unwind_handler): Renamed from scm_catch; adds
762 pre-unwind handler support.
763 (scm_catch): Now just a wrapper for
764 scm_catch_with_pre_unwind_handler, for back compatibility.
765 (scm_with_throw_handler): New.
766 (scm_lazy_catch): Update comment to say that the handler can
767 return, and what happens if it does.
768 (toggle_pre_unwind_running): New.
769 (scm_ithrow): When identifying the throw target, take running
770 flags into account. In general, change naming of things from
771 "lazy_catch" to "pre_unwind". When throwing to a throw handler,
772 don't unwind the dynamic context first. Add dynwind framing to
773 manage the running flag of a throw handler. If a lazy catch or
774 throw handler returns, rethrow the same exception again. Add
775 pre-unwind support to the normal catch case (SCM_JMPBUFP).
776
777 * root.c (scm_internal_cwdr): Add NULL args to
778 scm_i_with_continuation_barrier call.
779
780 * dynwind.c: Change comment mentioning lazy-catch to mention
781 pre-unwind data and throw handler also.
782
783 * continuations.h (scm_i_with_continuation_barrier): Add
784 pre-unwind handler args.
785
786 * continuations.c (scm_i_with_continuation_barrier): Add
787 pre-unwind handler args, and pass on to scm_c_catch (changed from
788 scm_internal_catch).
789 (c_handler): Remove scm_handle_by_message_noexit call.
790 (scm_c_with_continuation_barrier): Call
791 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
792 as the pre-unwind handler.
793 (scm_handler): Remove scm_handle_by_message_noexit call.
794 (s_scm_with_continuation_barrier): Call
795 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
796 as the pre-unwind handler.
797
2b829bbb
KR
7982006-02-04 Kevin Ryde <user42@zip.com.au>
799
800 * gc-mark.c (scm_mark_all): Fix c99-isms "loops" and "again" variables.
801
72098928
KR
8022006-02-03 Kevin Ryde <user42@zip.com.au>
803
804 * list.c, list.h (scm_list): Restore this function for use from C.
805 It's a complete no-op but in theory might used by someone.
806
aa092c5d
MV
8072006-01-30 Marius Vollmer <mvo@zagadka.de>
808
809 * eval.c (scm_eval_body): Lock source_mutex with a dynwind context
810 so that it gets unlocked in all cases.
811 (SCM_APPLY, CEVAL): Likewise.
812
661ae7ab
MV
8132006-01-29 Marius Vollmer <mvo@zagadka.de>
814
ee51ba31
MV
815 * ramap.c: (scm_array_map_x): Don't use scm_array_p, use
816 scm_is_typed_array instead.
817
661ae7ab
MV
818 Renamed the "frames" that are related to dynamic-wind to "dynamic
819 contexts. Renamed all functions from scm_frame_ to scm_dynwind_.
820 Updated documentation.
821
99e370f6
MV
822 Disabled "futures":
823
824 * futures.h, futures.c: Wrap whole contents in "#if 0"/"#endif".
825 * eval.c, init.c: Comment out all 'future' related things.
826
15ccf10b
MV
8272006-01-28 Marius Vollmer <mvo@zagadka.de>
828
829 * inline.h, pairs.c (scm_is_pair): Moved scm_is_pair from pairs.c
830 to inline.h to make it inline.
831
9a5fa6e9 8322005-12-19 Ludovic Courtès <ludovic.courtes@laas.fr>
fd0a5bbc
HWN
833
834 * strings.c (scm_i_take_stringbufn): New.
835 (scm_i_c_take_symbol): New.
836 (scm_take_locale_stringn): Use `scm_i_take_stringbufn ()'.
837
838 * strings.h (scm_i_c_take_symbol): New.
839 (scm_i_take_stringbufn): New.
840
841 * symbols.c (lookup_interned_symbol): New function.
842 (scm_i_c_mem2symbol): New function.
843 (scm_i_mem2symbol): Use `lookup_symbol ()'.
844 (scm_from_locale_symbol): Use `scm_i_c_mem2symbol ()'. This avoids
845 creating a new Scheme string.
846 (scm_from_locale_symboln): Likewise.
847 (scm_take_locale_symbol): New.
848 (scm_take_locale_symboln): New.
849
850 * symbols.h (scm_take_locale_symbol): New.
851 (scm_take_locale_symboln): New.
852
2ca2ffe6
HWN
8532006-01-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
854
855 * gc-card.c ("sweep_card"): don't count scm_tc_free_cell for
856 free_count.
857
c255614e
HWN
8582005-11-29 Han-Wen Nienhuys <hanwen@xs4all.nl>
859
860 * regex-posix.c (s_scm_regexp_exec): list the offending pattern
861 upon error
862
29295b0c
NJ
8632005-12-29 Neil Jerram <neil@ossau.uklinux.net>
864
9a5fa6e9 865 * fluids.c (next_fluid_num): [From Ludovic Courtès:] Don't trigger
29295b0c
NJ
866 the GC when allocated_fluids_len is zero.
867
2824f4dc
NJ
8682005-12-14 Neil Jerram <neil@ossau.uklinux.net>
869
ec3a8ace
NJ
870 * load.c (the_reader, the_reader_fluid_num): New.
871 (scm_primitive_load): Support custom reader.
872 (scm_init_load): Init the_reader and the_reader_fluid_num; export
873 the_reader as `current-reader'.
874
2824f4dc
NJ
875 * scmsigs.c (do_read_without_guile): Use the "raw_data" passed in
876 (rather than an uninitialized pointer on the stack).
877
d9c36d2a
MV
8782005-12-07 Marius Vollmer <mvo@zagadka.de>
879
6a88895b
MV
880 Reported by Bruce Korb:
881
882 * init.c (invoke_main_func): Don't call exit here. Throws that
883 are only caught by scm_with_guile will bypass us and would cause
884 scm_boot_guile to return erroneously.
885 (scm_boot_guile): Expect scm_with_guile to return and call exit
886 here, passing it an appropriate exit code.
887
888 From Andy Wingo:
d9c36d2a
MV
889
890 * script.c (scm_find_executable): Compile fix -- fgetc returns an
891 unsigned char cast to an int, or -1 for EOS.
892
b54df254
MV
8932005-12-06 Marius Vollmer <mvo@zagadka.de>
894
08f489c9
MV
895 * srfi-4.h, srfi-4.c, srfi-4.i.c (take_uvec): Make BASE pointer
896 non-const.
9a5fa6e9 897 (scm_take_u8vector, etc): Likewise. Thanks to Ludovic Courtès!
08f489c9 898
b54df254
MV
899 * threads.h, threads.c (scm_t_guile_ticket, scm_leave_guile,
900 scm_enter_guile): Removed from public API. See comment at
901 scm_without_guile for the rationale.
902
903 * scmsigs.c (read_without_guile): New.
904 (signal_delivery_thread): Use it instead of
905 scm_leave_guile/read/scm_enter_guile.
906
9d9ce2b5
MV
907 From Stephen Compall:
908
909 * eval.c (scm_m_cond): Recognize SRFI 61 cond syntax.
910 (CEVAL): Evaluate SRFI 61 cond clauses.
911
9a5fa6e9 9122005-12-06 Ludovic Courtès <ludovic.courtes@laas.fr>
9fb5c8f9
NJ
913
914 * gc-card.c (scm_i_card_statistics): Return if BITVEC is NULL.
915 This was typically hit when running `gc-live-object-stats' right
916 after starting Guile.
917
efeac8ae
KR
9182005-11-30 Kevin Ryde <user42@zip.com.au>
919
920 * srfi-13.c (scm_string_append_shared): No copying if just one
921 non-empty string in args.
922
606183ba
KR
9232005-11-26 Kevin Ryde <user42@zip.com.au>
924
925 * gc-mark.c (scm_mark_all): Change C++ comment to C comment. Reported
9a5fa6e9 926 by Ludovic Courtès.
606183ba
KR
927
928 * list.c (list): Should be "primitive" in SCM_SNARF_DOCS, not
929 "register".
930
931 * random.c (scm_i_copy_rstate, scm_c_make_rstate): Don't test for
932 scm_malloc returning NULL, it never does that.
933 * putenv.c (putenv): Likewise.
934
935 * socket.c (scm_fill_sockaddr): Remove SCM_C_INLINE_KEYWORD, this is
936 much too big to want to inline.
937
9a5fa6e9 9382005-11-17 Ludovic Courtès <ludovic.courtes@laas.fr>
dbb5de29
NJ
939
940 * print.c (EXIT_NESTED_DATA): Before popping from the stack, reset
941 the value at its top. This fixes a reference leak.
942 (PUSH_REF): Perform `pstate->top++' after calling
943 `PSTATE_STACK_SET ()' in order to avoid undesired potential side
944 effects.
945
9a5fa6e9 9462005-11-12 Ludovic Courtès <ludovic.courtes@laas.fr>
3f98874a
NJ
947
948 * gc.c (scm_weak_vectors): Removed.
949
f07d2b20
KR
9502005-11-12 Kevin Ryde <user42@zip.com.au>
951
952 * socket.c (scm_setsockopt): Missing @defvar in docstring. Reported
9a5fa6e9 953 by Ludovic Courtès.
f07d2b20 954
bedd3f5f
MV
9552005-11-07 Marius Vollmer <mvo@zagadka.de>
956
957 * stime.c (scm_mktime): Use scm_frame_critical_section instead of
958 SCM_CRITICAL_SECTION_START/END since the code inside the critical
959 section might exit non-locally.
960
7c9c0169
NJ
9612005-11-04 Neil Jerram <neil@ossau.uklinux.net>
962
963 * eval.c (sym_instead): New symbol.
964 (ENTER_APPLY): Remove optional use of a continuation when making
965 trap call.
966 (scm_debug_opts): Change doc for 'cheap option to make clear that
967 it is now obsolete.
968 (CEVAL, SCM_APPLY): Remove optional use of a continuation when
969 making trap calls, and implement substitution of eval expressions
970 and return values using the values that the trap call handlers
971 return.
972
973 * debug.h (SCM_CHEAPTRAPS_P): Removed.
974
9a5fa6e9 9752005-10-27 Ludovic Courtès <ludovic.courtes@laas.fr>
64cdbfc7
KR
976
977 * socket.c (scm_fill_sockaddr): No need to check NULL from scm_malloc.
978 (scm_connect, scm_bind, scm_sendto): Accept sockaddr object.
979 (scm_addr_vector): Renamed to _scm_from_sockaddr, update usages.
980 (scm_from_sockaddr, scm_to_sockaddr, scm_make_socket_address,
981 scm_c_make_socket_address): New functions.
982 * socket.h: Add prototypes.
983
fc9f596c
KR
9842005-10-24 Kevin Ryde <user42@zip.com.au>
985
986 * socket.c (scm_init_socket): Add IPPROTO_IP, IPPROTO_TCP,
987 IPPROTO_UDP. Remove SOL_IP, SOL_TCP, SOL_UDP. The former are in
988 POSIX spec examples, the latter are not available on for instance
989 NetBSD.
990
991 * socket.c (scm_getsockopt, scm_setsockopt): Update docstrings from
992 posix.texi.
993
994 * stime.c (scm_strftime): Update docstring from posix.texi.
995
0460c6e1
MV
9962005-10-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
997
998 PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP is not portable enough.
999
1000 * null-threads.h, pthread-threads.h
1001 (SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER): Removed.
1002 (scm_i_pthread_mutexattr_recursive): New.
1003
1004 * threads.c (scm_i_pthread_mutexattr_recursive): Declare.
1005 (scm_i_critical_section_mutex): Do not initialize statically.
1006 (scm_threads_prehistory): Initialize
1007 scm_i_pthread_mutexattr_recursive and scm_i_critical_section_mutex
1008 here.
1009
1010 * eval.c (source_mutex): Do not initialiaze statically.
1011 (scm_init_eval): Do it here, using
1012 scm_i_pthread_mutexattr_recursive.
1013
7b4a9e52
MV
10142005-09-05 Marius Vollmer <mvo@zagadka.de>
1015
1016 * print.h (SCM_PRINT_KEYWORD_STYLE_I, SCM_PRINT_KEYWORD_STYLE):
1017 New.
1018 (sym_reader): New.
1019 (scm_print_opts): Added "quote-keywordish-symbols" option.
1020 (quote_keywordish_symbol): New, for evaluating the option.
1021 (scm_print_symbol_name): Use it.
1022 (scm_init_print): Initialize new option to sym_reader.
1023
5defc05d
NJ
10242005-08-15 Neil Jerram <neil@ossau.uklinux.net>
1025
1026 * eval.c (eval_letrec_inits): New.
1027 (CEVAL): Eval letrec initializer forms using eval_letrec_inits.
1028
036482e9
MV
10292005-08-12 Marius Vollmer <mvo@zagadka.de>
1030
1031 * numbers.c: Use scm_from_bool instead of SCM_BOOL. Thanks to
1032 Peter Gavin!
1033
5c347f8c
KR
10342005-08-12 Kevin Ryde <user42@zip.com.au>
1035
1036 * srfi-13.c (scm_string_for_each_index): Correction to docstring.
1037
bc721aa2
KR
10382005-08-06 Kevin Ryde <user42@zip.com.au>
1039
1040 * srfi-13.c (scm_string_any, scm_string_every, scm_string_tabulate,
1041 scm_string_trim, scm_string_trim_right, scm_string_trim_both,
1042 scm_string_index, scm_string_index_right, scm_string_skip,
1043 scm_string_skip_right, scm_string_count, scm_string_map,
1044 scm_string_map_x, scm_string_for_each, scm_string_for_each_index,
1045 scm_string_filter, scm_string_delete): Use scm_t_trampoline_1 for
1046 procedures called in loops.
1047
126c81db
KR
10482005-08-02 Kevin Ryde <user42@zip.com.au>
1049
1050 * strports.c (st_flush): Increase buffer by 1.5x when growing, to
1051 avoid lots of copying where previoulsy growing by only 80 bytes at a
1052 time.
1053
7f278dc6
MV
10542005-08-01 Marius Vollmer <mvo@zagadka.de>
1055
1056 * modules.h, modules.c (scm_eval_closure_module): Removed, we
1057 already have scm_lookup_closure_module, which does the same thing.
1058
cb5c4b07
MV
10592005-08-01 Marius Vollmer <mvo@zagadka.de>
1060
1061 New marking algorithm for weak hashtables that fixes the problem
1062 that references from the non-weak value to the associated weak
1063 key (for example) would prevent the entry from ever being dropped.
1064
1065 Guardians have been changed back to their original semantics and
1066 are no longer greedy and no longer drop cycles.
1067
1068 * gc-mark.c (scm_mark_all): Do not rely on hooks to run the weak
1069 hashtable and guardian machinery but call the relevant functions
1070 directly.
1071
1072 * guardians.h, guardians.c, deprecated.h,
1073 deprecated.c (scm_destroy_guardian_x, scm_guardian_greedy_p,
1074 scm_guardian_destroyed_p, scm_guard, scm_get_one_zombie):
1075 Deprecated and moved into deprecated.[ch].
1076
1077 * guardians.h, guardians.c: Mostly rewritten.
1078 (scm_i_init_guardians_for_gc,
1079 scm_i_identify_inaccessible_guardeds,
1080 scm_i_mark_inaccessible_guardeds): New.
930888e8 1081 (scm_make_guardian): Removed greedy_p argument.
cb5c4b07
MV
1082
1083 * weaks.h, weaks.c (SCM_I_WVECT_TYPE, SCM_I_SET_WVECT_TYPE): New.
1084 (SCM_I_WVECT_N_ITEMS, SCM_I_SET_WVECT_N_ITEMS): New.
1085 (SCM_WVECTF_NOSCAN, SCM_WVECT_NOSCAN_P): Removed.
1086 (scm_weaks_prehistory): Removed.
1087 (scm_i_init_weak_vectors_for_gc, scm_i_mark_weak_vector,
1088 scm_i_mark_weak_vectors_non_weaks,
1089 scm_i_remove_weaks_from_weak_vectors, scm_i_remove_weaks): New.
1090 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
1091 scm_scan_weak_vectors): Removed.
1092
1093 * hashtab.h (scm_i_scan_weak_hashtables): New.
1094 * hashtab.c (make_hash_table, scm_i_rehash): Do not use
1095 SCM_WVECTF_NOSCAN.
1096 (hashtable_print): Use SCM_HASHTABLE_N_ITEMS instead of
1097 t->n_items.
1098 (scan_weak_hashtables, scm_i_scan_weak_hashtables): Renamed former
1099 to latter. Do not scan the alists themselves, this is done by the
1100 weak vector code now. Just update the element count.
1101
1102 * vectors.h (SCM_I_WVECT_TYPE, SCM_I_WVECT_EXTRA): Renamed former
1103 to latter. The type is now only part of the cell word.
1104 (SCM_I_SET_WVECT_TYPE, SCM_I_SET_WVECT_EXTRA): Likewise.
1105
1106 * init.c (scm_i_init_guile): Do not call scm_weaks_prehistory.
1107
3e2073bd
MD
11082005-07-18 Mikael Djurfeldt <mdj@d14n36.pdc.kth.se>
1109
1110 Some changes towards making it possible to run Guile on the EM64T
1111 platform.
1112
1113 * gc.c (scm_gc_stats): Bugfix: Measure size of the type we are
1114 mallocating for (unsigned long *bounds).
1115
1116 * hashtab.c (scm_i_rehash): Cast SCM_HASHTABLE_FLAGS (table) to
1117 scm_t_bits before storing them in the type word.
1118
1119 * gc.c (tag_table_to_type_alist): Modified type of c_tag from
1120 scm_t_bits to int.
1121
e8ac8e75
KR
11222005-07-12 Kevin Ryde <user42@zip.com.au>
1123
1124 * eval.c (scm_dbg_make_iloc): Should be SCM_IFRAMEMAX and
1125 SCM_IDISTMAX, and cast uints through scm_t_bits to make gcc happy.
1126 * pairs.c (scm_error_pair_access): Use scm_from_locale_string rather
1127 than scm_makfrom0str.
1128 Reported by Ken Raeburn.
1129
1130 * gc-card.c (scm_dbg_gc_get_bvec): Change return from long* to
1131 scm_t_c_bvec_long*, gcc 4 doesn't like different pointer targets when
1132 returning SCM_GC_CARD_BVEC.
1133
1134 * pairs.c (scm_error_pair_access): Plain ascii ' in error message
1135 rather than latin-1 acute accent, the latter may not print on all
1136 terminals.
1137
1138 * srfi-13.c (scm_string_filter, scm_string_delete): Strip leading and
1139 trailing deletions, so as to return a substring if those are the only
1140 changes.
1141
adc0677d
KR
11422005-07-10 Kevin Ryde <user42@zip.com.au>
1143
1144 * socket.c (scm_inet_pton, scm_inet_ntop): Pointer cast to scm_t_uint8
1145 for scm ipv6 funcs, gcc 4 is picky about char* vs uchar*.
1146 (scm_getsockopt, scm_accept, scm_getsockname, scm_getpeername,
1147 scm_recvfrom) Use socklen_t, gcc 4 is picky about int* vs socklen_t*.
1148
8fecbb19
HWN
11492005-07-01 Han-Wen Nienhuys <hanwen@xs4all.nl>
1150
1151 * gc-card.c (scm_i_card_statistics): init tag.
1152
1153 * gc.c (tag_table_to_type_alist): check type of tag. Should be integer.
1154
fc9c5d06
HWN
11552005-06-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
1156
8fecbb19
HWN
1157 * fports.c (s_scm_open_file): add the b flag for binary to the doc
1158 string.
fc9c5d06 1159
08fce816
KR
11602005-06-25 Kevin Ryde <user42@zip.com.au>
1161
1162 * srfi-13.c (scm_string_filter, scm_string_delete): Partial revert
1163 last change, use plain copy-on-write substrings, the individual
1164 descriptions in the srfi don't mention shared storage (only the
1165 introduction does).
1166
1167 * strings.c (scm_take_locale_stringn): Use realloc to make room for
1168 null-terminator, rather than mallocing a whole new block.
1169 (scm_take_locale_string): Use scm_take_locale_stringn len==-1.
1170
fc4abd0e
MV
11712005-06-12 Marius Vollmer <mvo@zagadka.de>
1172
e3da8a30
MV
1173 * ramap.c (scm_array_index_map_x): First test for real arrays,
1174 then check for generalized vectors. This ensures that the
1175 generalized vector case need only work with zero-origin ranges.
12097c77
MV
1176 (scm_ra_eqp, scm_ra_compare): Use the new array handle functions
1177 to access the target array, making these functions work with all
1178 kinds of arrays, not just bit arrays.
e3da8a30 1179
fc4abd0e
MV
1180 * gh.h, gh_data.c, gh_eval.c, gh_funcs.c, gh_init.c, gh_io.c,
1181 gh_list.c, gh_predicates.c: Deprecated everything.
1182
1183 * environments.c (environment_default_folder,
1184 environment_default_observer): Do not use gh_call3, gh_call1.
1185
e4da0740
HWN
11862005-06-10 Han-Wen Nienhuys <hanwen@xs4all.nl>
1187
1188 * modules.c (s_scm_eval_closure_module): new function. Return the
1189 module inside an eval-closure.
1190
1191 * gc.c (scm_init_storage): make scm_stand_in_procs a weak_key hash
1192 table. This means that procedure properties are GC'd if the
1193 procedure dies.
1194
27667158
KR
11952005-06-11 Kevin Ryde <user42@zip.com.au>
1196
1197 * srfi-13.c (scm_string_filter, scm_string_delete): For char and
1198 charset cases, count chars kept and build a string in a second pass,
1199 rather than using a cons cell for every char kept. Use a shared
1200 substring when nothing removed (such sharing is allowed by the srfi).
1201
8a00ba71
HWN
12022005-06-09 Han-Wen Nienhuys <hanwen@xs4all.nl>
1203
1204 * gc.c (tag_table_to_type_alist): convert tag number to "tag %d"
1205 string, so live object stats can be sorted with string<?.
1206
a677679f
MV
12072005-06-06 Marius Vollmer <mvo@zagadka.de>
1208
2ff668b0
MV
1209 * print.c (iprin1): When writing a string, collect all characters
1210 that can be printed directly into one call to scm_lfwrite.
1211 Previously, every character was output with its own call to
1212 write(2) on unbuffered ports.
1213
589f22f6
MV
1214 * eval.c (scm_eval_options_interface): Use
1215 scm_frame_critical_section instead of SCM_CRITICAL_SECTION_START
1216 and SCM_CRITICAL_SECTION_END.
1217
a677679f
MV
1218 * unif.c (scm_array_in_bounds_p): First test for real arrays, then
1219 check for generalized vectors. This ensures that the generalized
1220 vector case need only work with zero-origin ranges.
1221
f8cda9ee
KR
12222005-06-06 Kevin Ryde <user42@zip.com.au>
1223
1224 * srfi-13.c (scm_string_split): Compare char/char in scan. Mixing an
1225 unsigned int SCM_CHAR and a char string meant an 8-bit char was never
1226 matched.
1227
cdac1be4
MV
12282005-06-05 Marius Vollmer <mvo@zagadka.de>
1229
6642f7ac
MV
1230 * eval.c: Added comment on how to make case 1.1 of
1231 r5rs_pitfall.test succeed.
1232
cdac1be4
MV
1233 From Jan Nieuwenhuizen <janneke@gnu.org>. Thanks!
1234
1235 * hashtab.h: Bugfix: use SCM_API (WAS: extern).
1236
1237 * socket.c: Remove obsolete comment about socklen_t.
1238 (s_scm_setsockopt)[!HAVE_IP_MREQ]: Do not use ip_mreq code.
1239
1240 * numbers.h (isnan)[__MINGW32__]: Remove.
1241
1242 * Makefile.am (gen_scmconfig_SOURCES): Bugfix: Add
1243 DEFAULT_INCLUDES when cross compiling.
1244
1245 * threads.c (ETIMEDOUT, pipe)[__MINGW32__]: Add defines.
1246
a677679f 1247 * stime.c (scm_strftime)[!HAVE_TM_ZONE]: Use
cdac1be4
MV
1248 SCM_SIMPLE_VECTOR_REF instead of SCM_VELTS. (Changed slightly
1249 from Jan's patch.)
1250
9e664475
MV
12512005-05-22 Marius Vollmer <mvo@zagadka.de>
1252
188d0c5e
MV
1253 * unif.c (scm_make_shared_array): Add old base to new base since
1254 scm_array_handle_pos does not include the base.
1255 (scm_aind): Likewise.
1256
9e664475
MV
1257 * ports.c (scm_putc, scm_puts): Assert that the port argument is a
1258 output port.
1259
5a6d139b
NJ
12602005-05-12 Neil Jerram <neil@ossau.uklinux.net>
1261
1262 Mac OS X compile warning fixes, reported by Richard Todd.
1263
1264 * unif.c (scm_i_read_array): Declare rank as ssize_t, to guarantee
1265 that it is signed.
1266
1267 * strports.c (st_resize_port): Add unsigned char cast.
1268 (scm_mkstrport): Make read/write_buf cast unsigned.
1269
1270 * srfi-13.c (string_titlecase_x): Add unsigned char cast.
1271
1272 * rdelim.c (scm_read_line): Initialize slen.
1273
1274 * load.c (scm_search_path): Remove weird >=1, and add
1275 parentheses to clarify conditions.
1276
1277 * hash.c (scm_hasher): Add const unsigned char cast.
1278
1279 * gh_data.c (gh_chars2byvect): Add scm_t_int8 cast.
1280
b01532af
NJ
12812005-05-11 Neil Jerram <neil@ossau.uklinux.net>
1282
9a5fa6e9 1283 Fix C99isms reported by Ludovic Courtès:
b01532af
NJ
1284
1285 * threads.c (s_scm_lock_mutex): Don't declare msg in middle of
1286 code.
1287
1288 * gc.c (s_scm_gc_live_object_stats): Don't declare alist in middle
1289 of code.
1290
1291 * gc-card.c (scm_i_card_statistics): Don't declare tag in middle
1292 of code.
1293 (scm_i_card_statistics): Add block for declarations of tag_as_scm
1294 and current.
1295
229a0710
NJ
12962005-05-10 Neil Jerram <neil@ossau.uklinux.net>
1297
1298 * scmsigs.c (signal_delivery_thread): Return a value, to avoid
1299 compile warning reported by Werner Scheinast.
1300
645dd3fc
HWN
13012005-04-30 Han-Wen Nienhuys <hanwen@xs4all.nl>
1302
80038021
HWN
1303 * list.h: remove scm_list()
1304
645dd3fc
HWN
1305 * fluids.c (DYNAMIC_STATE_NEXT_LOC): new macro for use with
1306 SCM_DEBUG_CELL_ACCESSES
1307 (FLUID_NEXT_LOC): idem.
1308
9a68a4a8
KR
13092005-04-30 Kevin Ryde <user42@zip.com.au>
1310
1311 * numbers.c (scm_divide): Correction to 1/complex and <any>/complex,
1312 need to test abs(re)<abs(im) for choice of cases, otherwise divide by
1313 zero when re==0 and im<0. Reported by Jean Crepeau.
1314
0640cdaa
KR
13152005-04-25 Kevin Ryde <user42@zip.com.au>
1316
1317 * ramap.c (scm_array_map_x): Allow no source args, add num args checks
4d54ee35
KR
1318 to subr_1, subr_2, subr_2o and dsubr cases. No source args only has a
1319 few sensible uses (like filling with a random number generator say),
1320 but has been allowed in the past and so should be kept.
0640cdaa 1321
c0b85e9c
KR
13222005-04-23 Kevin Ryde <user42@zip.com.au>
1323
1324 * hashtab.c (scm_hashx_remove_x): Need to pass "closure" to
1325 scm_hash_fn_remove_x.
1326
1327 * list.c (scm_cons_star): Don't modify the rest list, it belongs to
1328 the caller when cons* is reached through apply.
1329
1330 * list.c (list): Use scm_list_copy, so as to produce a fresh list when
1331 list is called using apply, under the debugging evaluator.
1332 (scm_list): Remove.
1333
c51682b4
KR
1334 * list.c, list.h (scm_make_list): New code, moving make-list from
1335 boot-9.scm.
8cb2eff8 1336
c0575bde
KR
13372005-04-14 Kevin Ryde <user42@zip.com.au>
1338
1339 * numbers.c, numbers.h (scm_oneplus, scm_oneminus): New functions,
1340 converted from scheme code in boot-9.scm.
1341
47a298d9
KR
13422005-04-11 Kevin Ryde <user42@zip.com.au>
1343
1344 * srfi-13.c (scm_string_concatenate, scm_string_concatenate_shared):
1345 Validate list argument, scm_string_append and scm_string_append_shared
1346 don't do that to their rest argument (in a normal build).
1347
8ea3dc2e
MV
13482005-04-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1349
1350 * hashtab.h, hashtab.c (scm_t_hashtable): Removed 'closure' field. The
1351 closure can not be stored since it is no longer valid at GC time.
1352 (make_hash_table): Initialize 'hash_fn' field.
1353 (scm_i_rehash): Only store hash_fn in hash table when closre is
1354 NULL.
1355 (rehash_after_gc): Only call scm_i_rehash when 'hash_fn' is
1356 non-NULL. Always use a NULL closure.
1357 (scm_hash_fn_create_handle_x): Also rehash when table contains too
1358 few entries.
1359
08d2020d
MV
13602005-03-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1361
1362 * hashtab.h, hashtab.c (scm_hash_fx_remove_x): Removed delete_fn
1363 argument; always use scm_delq_x. The delete_fn function works on
1364 the handle, not the key, and it therefore makes no sense to make
1365 it configurable. Changed all callers.
1366 (scm_hashx_remove_x): Likewise. Also, exported to Scheme.
1367 (scm_hash_clear): Accept plain vectors as hashtables.
1368 (scm_delx_x): Removed.
1369
cb975c21
HWN
13702005-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
1371
1372 * inline.h (scm_double_cell): use __asm__ iso. asm, to maintain
1373 compatibility with gcc -std=c99.
1374
4c908f2c
MD
13752005-03-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1376
1377 * async.h (scm_mask_ints): Removed left over reference to
1378 scm_root.
1379
1380 * threads.c: Removed fprintf debug statements.
1381
d193b04b
NJ
13822005-03-24 Neil Jerram <neil@ossau.uklinux.net>
1383
1384 * debug.c (scm_make_memoized): Restore use of SCM_UNPACK.
1385
c29748cd
NJ
13862005-03-23 Neil Jerram <neil@ossau.uklinux.net>
1387
1388 * debug.c (scm_make_memoized): Remove unnecessary critical
1389 section, and simplify by using SCM_RETURN_NEWSMOB.
1390
e654b062
MD
13912005-03-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1392
1393 * strings.h (SCM_STRING_UCHARS): Added missing argument.
1394
4bc6f1c6
KR
13952005-03-18 Kevin Ryde <user42@zip.com.au>
1396
1397 * arbiters.c (FETCH_STORE) [generic C]: Should be
9a5fa6e9 1398 scm_i_scm_pthread_mutex_lock/unlock now. Reported by Ludovic Courtès.
4bc6f1c6 1399
f1531813
KR
14002005-03-13 Kevin Ryde <user42@zip.com.au>
1401
1402 * numbers.c, numbers.h (scm_i_clonebig): Remove static, so can use in
1403 srfi-60.
1404
1405 * numbers.c (scm_logior): Must scm_i_normbig results as per scm_logand,
1406 because OR-ing bits into a negative can reduce the value to an inum.
1407
1408 * numbers.c (scm_num_eq_p): On 64-bit systems, be careful about
1409 casting inum to double since that can lose precision.
1410
a9fae247
MV
14112005-03-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1412
1413 * threads.h, threads.c (scm_i_thread): Added gc_running_p field.
1414 (guilify_self_1): Initialize it.
1415
1416 * gc.h, gc.c (SCM_FREECELL_P): Removed for good.
1417 (scm_block_gc, scm_gc_heap_lock): Removed. Removed all uses.
1418 (scm_gc_running_p): Now a macro that refers to the scm_i_thread
1419 field.
1420 (scm_i_sweep_mutex): Now a non-recursive mutex. GC can not happen
1421 recursively.
1422 (scm_igc, scm_i_gc): Renamed former to latter. Changed all uses.
1423 Do not lock scm_i_sweep_mutex, which is now non-recursive, or set
1424 scm_gc_running_p. Do not run the scm_after_gc_c_hook.
1425 (scm_gc): Lock scm_i_sweep_mutex, set scm_gc_running_p and run the
1426 scm_after_gc_c_hook here.
1427 (scm_gc_for_new_cell): Set scm_gc_running_p here and run the
1428 scm_after_gc_c_hook when a full GC has in fact been performed.
1429 (scm_i_expensive_validation_check): Call scm_gc, not scm_i_gc.
1430
1431 * gc-segment.c (scm_i_get_new_heap_segment): Do not check
1432 scm_gc_heap_lock.
1433
1434 * gc-malloc.c (scm_realloc, increase_mtrigger): Set
1435 scm_gc_running_p while the scm_i_sweep_mutex is locked.
1436
1437 * inline.h (scm_cell, scm_double_cell): Do not check
1438 scm_gc_running_p, allocation during sweeping is OK.
1439
1440 * gdbint.c (SCM_BEGIN_FOREIGN_BLOCK, SCM_END_FOREIGN_BLOCK): Do
1441 not set scm_block_gc.
1442
1443 * init.c (scm_i_init_guile): Do not set scm_block_gc.
1444
1445 * deprecation.c (scm_c_issue_deprecation_warning): Use malloc
1446 instead of scm_malloc. The latter can not be used during GC.
1447
d1c38e11
MV
14482005-03-09 Marius Vollmer <mvo@zagadka.de>
1449
1450 * script.c (scm_compile_shell_switches): Added 2005 to Copyright
1451 years.
1452
99ec43c1
MV
14532005-03-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1454
1455 * gc-card.c (scm_i_sweep_card): Do not increase/decrease
1456 scm_gc_running_p. Sweeping can happen in parallel with
1457 allocation.
1458
1459 * inline.h: Updated comments for current threading implementation.
1460
1461 * threads.h, threads.c (scm_i_frame_single_threaded): Removed.
1462 (scm_i_thread): Removed unused signal_asyncs field.
1463 (threads_mark): Do not mark it.
1464 (guilify_self_1): Do not initialize it. Do initialize
1465 continuation_root field.
1466 (do_thread_exit): Do not remove thread from all_threads list.
1467 (on_thread_exit): Do it here, after leaving guile mode.
1468 (sleep_level): Removed.
1469 (scm_i_thread_put_to_sleep): Leave thread_admin_mutex locked when
1470 returning. Do not support recursive sleeps.
1471 (scm_i_thread_wake_up): Expect thread_admin_mutex to be locked on
1472 entry. Do not support recursive sleeps.
1473
1474 * fluids.c (ensure_state_size, ensure_all_state_sizes,
1475 resize_all_states): Collapsed ensure_state_size and
1476 ensure_all_state_sizes into one function named resize_all_states.
1477 Allocate new vectors outside of single threaded region. Do only
1478 simple things inside that region.
1479 (scm_make_fluid, scm_make_dynamic_state): Lock fluid_admin_mutex
1480 while adding to the global lists.
1481
1482
461f34aa
MV
14832005-03-08 Marius Vollmer <mvo@zagadka.de>
1484
1485 libltdl is no longer distributed. We expect it to be installed
1486 already.
1487
1488 * Makefile.am (INCLUDES): Removed @LTDLINCL@.
1489 (libguile_la_LIBADD): Removed @LIBLTDL@.
1490
4e047c3e
MV
14912005-03-07 Marius Vollmer <mvo@zagadka.de>
1492
1493 * threads.h, async.h, threads.c (SCM_CRITICAL_SECTION_START,
1494 SCM_CRITICAL_SECTION_END): Moved here from threads.h since now
1495 they also block/unblock execution of asyncs and call
1496 scm_async_click which is declared in async.h but threads.h can not
1497 include async.h since async.h already includes threads.h.
1498 (scm_i_critical_section_level): New, for checking mistakes in the
1499 use of the SCM_CRITICAL_SECTION_* macros.
1500 (scm_i_critical_section_mutex): Make it a recursive mutex so that
1501 critical sections can be nested.
1502
1503 * throw.c (scm_ithrow): Abort when scm_i_critical_section_level is
1504 not zero.
1505
1506 * threads.h, threads.c (scm_frame_lock_mutex): New.
1507 (scm_frame_critical_section): Take mutex as argument.
1508 (framed_critical_section_mutex): New, used as default for above.
1509 (scm_init_threads): Initialize it.
1510 (scm_threads_prehistory): Do not initialize thread_admin_mutex and
1511 scm_i_critical_section_mutex; both are initialized statically.
1512
1513 * continuation.c, deprecated.c, goops.c, guardians.c keywords.c,
1514 libguile_la-arrays.loT, objprop.c, ports.c, smob.c, sort.s,
b9d9ad3a
MV
1515 srcprop.c, stime.c, struct.c, throw.c, regex-posix.c: Include
1516 "libguile/async.h" for SCM_CRITICAL_SECTION_START/END.
4e047c3e
MV
1517
1518 * debug.c (scm_debug_options): Replace
1519 SCM_CRITICAL_SECTION_START/END with a frame and
1520 scm_frame_critical_section.
1521
1522 * continuations.c (scm_make_continuation): No longer a critical
1523 section.
1524 (scm_dynthrow): Abort when scm_i_critical_section_level is
1525 not zero.
1526
d0a45bff
MV
15272005-03-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1528
db6673e5
MV
1529 * threads.c (scm_try_mutex): Renamed argument for consistency.
1530
d0a45bff
MV
1531 * root.c (scm_call_with_dynamic_root): New docstring.
1532
1533 * eval.c: Define _GNU_SOURCE.
1534
9de87eea
MV
15352005-03-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1536
1537 Big merge from the mvo-thread-cleanup branch. The main changes
1538 are:
1539
1540 - The dynamic roots functionality has been split into dynamic
1541 states and continuations barriers. Fluids have been
1542 reimplemented and can now be garbage collected.
1543
1544 - Initialization of Guile now works in a multi-thread friendly
1545 manner. Threads can freely enter and leave guile mode.
1546
1547 - Blocking on mutexes or condition variables or while selecting
1548 can now be reliably interrupted via system asyncs.
1549
1550 - The low-level threading interface has been removed.
1551
1552 - Signals are delivered via a pipe to a dedicated 'signal delivery
1553 thread'.
1554
1555 - SCM_DEFER_INTS, SCM_ALLOW_INTS etc have been deprecated.
1556
1557 * throw.c (scm_handle_by_message): Exit only the current thread,
1558 not the whole process.
1559 (scm_handle_by_message_noexit): Exit when catching 'quit.
1560
1561 * scmsigs.c (take_signal, signal_delivery_thread,
1562 start_signal_delivery_thread, ensure_signal_delivery_thread,
1563 install_handler): Reimplemented signal delivery as explained in
1564 the comments.
1565
1566 * pthreads-threads.h (scm_i_pthread_t, scm_i_pthread_self,
1567 scm_i_pthread_create, scm_i_pthread_detach, scm_i_pthread_exit,
1568 scm_i_sched_yield, scm_i_pthread_sigmask,
1569 SCM_I_PTHREAD_MUTEX_INITIALIZER,
1570 SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER, scm_i_pthread_mutex_t ,
1571 scm_i_pthread_mutex_init, scm_i_pthread_mutex_destroy,
1572 scm_i_pthread_mutex_trylock, scm_i_pthread_mutex_lock,
1573 scm_i_pthread_mutex_unlock, SCM_I_PTHREAD_COND_INITIALIZER,
1574 scm_i_pthread_cond_t, scm_i_pthread_cond_init,
1575 scm_i_pthread_cond_destroy, scm_i_pthread_cond_signal,
1576 scm_i_pthread_cond_broadcast, scm_i_pthread_cond_wait,
1577 scm_i_pthread_cond_timedwait, scm_i_pthread_once_t,
1578 SCM_I_PTHREAD_ONCE_INIT, scm_i_pthread_once, scm_i_pthread_key_t ,
1579 scm_i_pthread_key_create, scm_i_pthread_setspecific,
1580 scm_i_pthread_getspecific, scm_i_scm_pthread_mutex_lock,
1581 scm_i_frame_pthread_mutex_lock, scm_i_scm_pthread_cond_wait,
1582 scm_i_scm_pthread_cond_timedwait): Provide the obvious mapping
1583 when using pthreads.
1584 * null-threads.c, null-threads.h: Provide dummy definitions for
1585 the above symbols when not using pthreads.
1586
1587 * modules.h, modules.c (scm_frame_current_module): New.
1588
1589 * load.c (scm_primitive_load): Use scm_i_frame_current_load_port
1590 instead of scm_internal_dynamic_wind.
1591
1592 * init.h, init.c (restart_stack, start_stack): Removed.
1593 (scm_boot_guile, invoke_main_func): Simply use scm_with_guile.
1594 (scm_boot_guile_1): Removed.
1595 (scm_i_init_mutex): New.
1596 (really_cleanup_for_exit, cleanup_for_exit): New.
1597 (scm_init_guile_1, scm_i_init_guile): Renamed former to latter.
1598 Moved around some init funcs. Call
1599 scm_init_threads_default_dynamic_state. Register cleanup_for_exit
1600 with atexit.
1601
1602 * hashtab.c (scm_hash_fn_create_handle_x, scm_hash_fn_remove_x):
1603 Use "!scm_is_eq" instead of "!=".
1604
1605 * ge-scmconfig.c, gen-scmconfig.h.in (SCM_I_GSC_USE_COOP_THREADS,
1606 SCM_USE_COOP_THREADS): Removed.
1607
1608 * gc.c (scm_igc): Take care that scm_gc_running_p is properly
1609 maintained. Unlock scm_i_sweep_mutex before running
1610 scm_after_gc_c_hook.
1611 (scm_permanent_object): Allocate outside of critical section.
1612 (cleanup): Removed.
1613
1614 * fluids.h, fluids.c: Reimplemented completely.
1615 (SCM_FLUID_NUM, SCM_FAST_FLUID_REF,
1616 SCM_FAST_FLUID_SET): Reimplemented as functions.
1617 (scm_is_fluid): New.
1618 (scm_i_make_initial_fluids, scm_i_copy_fluids): Removed.
1619 (scm_make_dynamic_state, scm_dynamic_state_p,
1620 scm_is_dynamic_state, scm_current_dynamic_state,
1621 scm_set_current_dynamic_state, scm_frame_current_dynamic_state,
1622 scm_c_with_dynamic_state, scm_with_dynamic_state,
1623 scm_i_make_initial_dynamic_state, scm_fluids_prehistory): New.
1624
1625 * feature.c (progargs_fluid): New.
1626 (scm_program_arguments, scm_set_program_arguments): Use it instead
1627 of scm_progargs.
1628 (scm_init_feature): Allocate it. Also, only add "threads" feature
1629 when SCM_USE_PTHREAD_THREADS is true.
1630
1631 * eval.c (scm_makprom): Use scm_make_recursive_mutex instead of
1632 scm_make_rec_mutex, with all the consequences.
1633 (scm_eval_x, scm_eval): Use scm_frame_begin etc instead of
1634 scm_internal_dynamic_wind. Handle dynamic states as second
1635 argument.
1636
1637 * threads.h, threads.c (scm_internal_select): Renamed to
1638 scm_std_select and discouraged old name.
1639 (scm_thread_sleep, scm_thread_usleep): Likewise, as scm_std_sleep
1640 and scm_std_usleep.
1641 (scm_tc16_fair_mutex, scm_tc16_fair_condvar, SCM_MUTEXP,
1642 SCM_FAIR_MUTEX_P, SCM_MUTEX_DATA, SCM_CONDVARP,
1643 SCM_FAIR_CONDVAR_P, SCM_CONDVAR_DATA, SCM_THREADP,
1644 SCM_THREAD_DATA): Removed.
1645 (SCM_I_IS_THREAD, SCM_I_THREAD_DATA): New.
1646 (scm_i_thread): New.
1647 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
1648 Use scm_assert_smob_type.
1649 (scm_c_scm2thread, scm_thread_join, scm_thread_detach,
1650 scm_thread_self, scm_thread_yield, scm_mutex_init,
1651 scm_mutex_destroy, scm_mutex_trylock, scm_mutex_unlock,
1652 scm_rec_mutex_init, scm_rec_mutex_destroy, scm_make_rec_mutex,
1653 scm_rec_mutex_free, scm_rec_mutex_lock, scm_rec_mutex_trylock,
1654 scm_cond_init, scm_cond_destroy, scm_cond_wait,
1655 scm_cond_timedwait, scm_cond_signal, scm_cond_broadcast,
1656 scm_key_create, scm_key_delete, scm_setspecific, scm_getspecific,
1657 scm_thread_select): Removed. Replaced with scm_i_pthread
1658 functions as appropriate.
1659 (scm_in_guile, scm_outside_guile): Removed.
1660 (scm_t_guile_ticket, scm_leave_guile, scm_enter_guile): Return and
1661 take a ticket.
1662 (scm_with_guile, scm_without_guile, scm_i_with_guile_and_parent):
1663 New.
1664 (scm_i_frame_single_threaded): New.
1665 (scm_init_threads_default_dynamic_state): New.
1666 (scm_i_create_thread): Removed.
1667 (scm_make_fair_mutex, scm_make_fair_condition_variable): Removed.
1668 (scm_make_recursive_mutex): New.
1669 (scm_frame_critical_section): New.
1670 (SCM_CURRENT_THREAD, SCM_I_CURRENT_THREAD): Renamed former to
1671 latter, changed all uses.
1672 (scm_i_dynwinds, scm_i_setdynwinds, scm_i_last_debug_frame,
1673 scm_i_set_last_debug_frame): New, use them instead of scm_root
1674 stuff.
1675 (SCM_THREAD_LOCAL_DATA, SCM_SET_THREAD_LOCAL_DATA,
1676 scm_i_root_state_key,m scm_i_set_thread_data): Removed.
1677 (scm_pthread_mutex_lock, scm_frame_pthread_mutex_lock,
1678 scm_pthread_cond_wait, scm_pthread_cond_timedwait).
1679 (remqueue): Allow the removal of already removed cells. Indicate
1680 whether a real removal has happened.
1681 (scm_thread): Removed, replaced with scm_i_thread.
1682 (make_thread, init_thread_creatant): Removed.
1683 (cur_thread): Removed.
1684 (block_self, unblock_from_queue): New.
1685 (block, timed_block, unblock): Removed.
1686 (guilify_self_1, guilify_self_2, do_thread_exit,
1687 init_thread_key_once, init_thread_key,
1688 scm_i_init_thread_for_guile, get_thread_stack_base,
1689 scm_init_guile): New initialisation method.
1690 (scm_call_with_new_thread, scm_spawn_thread): Use it to simplify
1691 thread creation.
1692 (fair_mutex, fat_mutex, etc, fair_condvar, fat_condvar): Renamed
1693 "fair" to fat and implemented new semantics, including reliable
1694 interruption.
1695 (all_threads): Now a pointer to a scm_i_thread, not a SCM.
1696 (scm_threads_mark_stacks): Explicitly mark handle.
1697 (scm_std_select): Allow interruption by also selecting on the
1698 sleep_pipe.
1699 (scm_i_thread_put_to_sleep): Handle recursive requests for
1700 single-threadedness.
1701 (scm_threads_prehistory, scm_init_threads): Put current thread
1702 into guile mode via guileify_self_1 and guileify_self_2,
1703 respectively.
1704
1705 * fluid.h (SCM_FLUIDP): Deprecated.
1706
1707 * coop-threads.c: Removed.
1708
1709 * continuations.h, continuations.c (scm_with_continuation_barrier,
1710 scm_c_with_continuation_barrier, scm_i_with_continuation_barrier):
1711 New.
1712
1713 * async.h, async.c (scm_i_setup_sleep, scm_i_reset_sleep): New.
1714 (async_mutex): New.
1715 (scm_async_click): Protected with async_mutex. Do not deal with
1716 signal_asyncs, which are gone. Set cdr of handled async cell to
1717 #f.
1718 (scm_i_queue_async_cell): Protected with async_mutex. Interrupt
1719 current sleep.
1720 (scm_system_async_mark_for_thread): Do not use scm_current_thread
1721 since that might not work during early initialization.
1722
1723 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS, SCM_REDEFER_INTS,
1724 SCM_REALLOW_INTS): Deprecated by moving into deprecated.h and
1725 deprecated.c. Replaced all uses with SCM_CRITICAL_SECTION_START
1726 and SCM_CRITICAL_SECTION_END.
1727 (SCM_ENTER_A_SECTION, SCM_EXIT_A_SECTION): Removed. Replaced with
1728 SCM_CRITICAL_SECTION_START/END.
1729
1730 * Makefile.am (modinclude_HEADER): Removed threads-plugin.h.
1731 (libguile_la_SOURCES): Added null-threads.c
1732 (EXTRA_libguile_la_SOURCES): Removed pthread-threads.c and
1733 threads-plugin.c.
1734 * pthread-threads.c, threads-plugin.c, threads-plugin.h: Removed.
1735
1736 * root.h, root.c (scm_tc16_root, SCM_ROOTP, SCM_ROOT_STATE,
1737 scm_root_state, scm_stack_base, scm_save_regs_gc_mark,
1738 scm_errjmp_bad, scm_rootcont, scm_dynwinds, scm_progargs,
1739 scm_last_debug_frame, scm_exitval, scm_cur_inp, scm_outp,
1740 scm_cur_err, scm_cur_loadp, scm_root, scm_set_root,
1741 scm_make_root): Removed or deprecated. Replaced with references
1742 to the current thread, dynamic state, continuation barrier, or
1743 some fluid, as appropriate.
1744 (root_mark, root_print): Removed.
1745 (scm_internal_cwdr): Reimplemented guts with
1746 scm_frame_current_dynamic_state and
1747 scm_i_with_continuation_barrier.
1748 (scm_dynamic_root): Return current continuation barrier.
1749
1750
ad3d5a65
MV
17512005-02-28 Marius Vollmer <mvo@zagadka.de>
1752
1753 * socket.c (scm_setsockopt): Handle IP_ADD_MEMBERSHIP and
1754 IP_DROP_MEMBERSHIP options. Also, reorganized the code a bit for
1755 cleanliness.
1756 (scm_init_socket): Define IP_ADD_MEMBERSHIP and
1757 IP_DROP_MEMBERSHIP.
1758 Thanks to Greg Troxel!
1759
73a90115
MD
17602005-02-27 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1761
1762 * gh.h: Bugfix: Include <libguile.h> outside of the extern "C"
1763 block.
1764
5d2cb3ab
MV
17652005-02-25 Marius Vollmer <mvo@zagadka.de>
1766
1767 * hashtab.c (scm_i_rehash): Remove elements from old bucket vector
1768 so that no two weak alist vectors share a spine.
1769 (scm_hash_fn_create_handle_x): Deal with a possible rehashing
1770 during GC before inserting the new alist cell.
1771
838c4126
MV
17722005-02-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1773
1774 * hashtab.c (scm_i_rehash): Cope with the case that a GC modifies
1775 the hashtable.
1776 (scm_hash_fn_create_handle_x): Likewise.
1777 * vectors.h (SCM_I_SET_WVECT_TYPE): New, for use in scm_i_rehash.
1778
29fed193
MD
17792005-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1780
1781 * unif.c (prototype_to_type): Bugfix: Don't compare prototype to
1782 the prototypical examples mentioned in the old reference manual.
1783 Instead keep the old semantics of dispatching on type. (Yes, this
1784 is extremely ugly, but the whole point of keeping the deprecated
1785 interface is not to break old code.)
1786
9cc49060
MD
17872005-02-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1788
1789 * deprecated.h (SCM_ARRAY_DIMS): Rename scm_i_attay_dims -->
1790 scm_i_array_dims.
1791
8447f463
KR
17922005-01-28 Kevin Ryde <user42@zip.com.au>
1793
1794 * numbers.c (scm_ash): Rewrite using shifts, much faster than
1795 integer-expt and multiply/divide. Inexacts and fractions no longer
1796 supported (they happened to work before for left shifts, but not
1797 right). Don't really need inexacts and fractions, since ash is
1798 documented as a "bitwise operation", and all the rest of those only
1799 take exact integers.
1800
1367aa5e
HWN
18012005-01-27 Han-Wen Nienhuys <hanwen@xs4all.nl>
1802
856fca7e
HWN
1803 * gc-card.c (scm_i_card_statistics): map structs, closures and
1804 subrs to one tag.
1805
1367aa5e 1806 * gc.c (s_scm_gc_live_object_stats): return alist, not hashtable.
856fca7e 1807 (tag_table_to_type_alist): ignore unknown types.
1367aa5e
HWN
1808
1809 * gc-segment.c (scm_i_all_segments_statistics): new function.
1810 (scm_i_heap_segment_statistics): new function
1811
1812 * gc.c (s_scm_gc_live_object_stats): new GUILE callable: return
1813 statistics on the number of live objects of each type.
1814
1815 * gc-card.c (scm_i_tag_name): new function.
1816 (scm_i_card_statistics): new function.
1817
333db3b8
KR
18182005-01-24 Kevin Ryde <user42@zip.com.au>
1819
1820 * posix.c (scm_setlocale): Force errno=EINVAL for an error, since
1821 POSIX and C99 don't document errno being set. Reported by Bruno
1822 Haible.
1823 (scm_flock): Update docstring from manual.
1824
8447f463
KR
1825 * random.c (scm_i_init_rstate): Compare w to -1 not 0xffffffffUL, now
1826 that it's an scm_t_int32. Otherwise gcc 3.4 says it's always false on
1827 a 64-bit system.
1828
1829 * scmsigs.c (scm_sigaction_for_thread): Use scm_to_long for
1830 sa_handler, needs to be a long on 64-bit systems where int is only 32
1831 bits.
1832
88f59e53
MV
18332005-01-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1834
0eeb2611
MV
1835 * environments.c (obarray_enter, obarray_replace): Call
1836 SCM_HASHTABLE_INCREMENT when adding a new entry.
1837
88f59e53
MV
1838 * objects.c: Include goops.h for the scm_class_of prototype.
1839
1840 * hashtab.c (hashtable_size, HASHTABLE_SIZE_N): Restrict hashtable
1841 sizes to be smaller than the maximum lengths of vectors.
1842
219b2868
MV
18432005-01-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1844
1845 * ports.c, smob.c: Include "libguile/goops.h".
1846
1847 * objects.h, objects.c, goops.c, goops.h (scm_class_boolean,
1848 scm_class_char, scm_class_pair, scm_class_procedure,
1849 scm_class_string, scm_class_symbol,
1850 scm_class_procedure_with_setter, scm_class_primitive_generic,
1851 scm_class_vector, scm_class_null, scm_class_real,
1852 scm_class_complex, scm_class_integer, scm_class_fraction,
1853 scm_class_unknown, scm_port_class, scm_smob_class,
1854 scm_no_applicable_method, scm_class_of): Moved from objects to
1855 goops since they are only useable once goops has been loaded.
1856 (scm_classes_initialized): Removed.
1857 (scm_class_of): Do not check it.
1858 (create_standard_classes): Do not set it.
1859
009c6b9c
MV
18602005-01-17 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1861
50472546
MV
1862 * objects.h, objects.c (scm_classes_initialized): New.
1863 (scm_class_of): Signal error when scm_classes_initialized is zero.
1864 * goops.c (create_standard_classes): Set scm_classes_initialized
1865 to one.
1866
009c6b9c
MV
1867 * random.c (scm_random_solid_sphere_x): Use
1868 scm_c_generalized_vector_length instead of
1869 scm_uniform_vector_length.
1870
7719cbe9
MV
18712005-01-16 Marius Vollmer <mvo@zagadka.de>
1872
1873 * script.c (scm_compile_shell_switches): Removed debugging output.
1874
1ec44fed
KR
18752005-01-15 Kevin Ryde <user42@zip.com.au>
1876
1877 * numbers.c (scm_logtest, scm_logbit_p, scm_integer_expt): Update
1878 docstrings from manual.
1879 * random.c (scm_random_solid_sphere_x): Update docstring from manual.
1880
6e4cd850
MV
18812005-01-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1882
0b5a0521
MV
1883 * random.c: Don't check for definedness of SCM_HAVE_T_INT64, check
1884 its value.
1885
1886 Implement u64 and s64 uniform numeric vectors with bignums when
1887 scm_t_uint64 and scm_t_int64 are not available.
1888
1889 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_take_u64vector,
1890 scm_array_handle_u64_elements,
1891 scm_array_handle_u64_writable_elements, scm_u64vector_elements,
1892 scm_u64vector_writable_elements): Do not define when scm_t_uint64
1893 is not available.
1894 (scm_take_s64vector, scm_array_handle_s64_elements,
1895 scm_array_handle_s64_writable_elements, scm_s64vector_elements,
1896 scm_s64vector_writable_elements): Likewise for scm_t_int64.
1897 (uvec_sizes, uvec_print, uvec_equalp): Use SCM bignums when
1898 scm_t_int64/scm_t_uint64 are not available.
1899 (uvec_mark): New, to mark the bignums.
1900 (alloc_uvec): Initialize bignums.
1901 (uvec_fast_ref): Return bignums directly.
1902 (scm_uint64_min, scm_uint64_max, scm_int64_min, scm_int64_max,
1903 assert_exact_integer): New.
1904 (uvec_fast_set): Use them to validate the bignums.
1905 (scm_init_srfi_4): Set mark function of smob when needed.
1906 Initialize scm_uint64_min, scm_uint64_max, scm_int64_min,
1907 scm_int64_max.
1908
6e4cd850
MV
1909 Recognize 1.4 -e syntax.
1910
1911 * script.c (sym_at, sym_atat, sym_main, all_symbols): New.
1912 (scm_compile_shell_switches): Use them to recognize and convert
1913 1.4 "-e" syntax.
1914
3b698afe
MV
19152005-01-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1916
1917 * deprecated.h, deprecated.c, strings.h, strings.c: Turn all
1918 deprecated features that once were macros but are now functions
1919 back into macros.
1920
d6dc83a9
MV
19212005-01-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1922
49086691
MV
1923 * eval.c, debug.h (SCM_WARN_DEPRECATED): New debug option.
1924 * deprecation.c (scm_issue_deprecation_warning,
1925 scm_c_issue_deprecation_warning_fmt): Use it.
1926 (mode): Removed.
1927 (print_summary): New.
1928 (scm_init_deprecation): Initialize SCM_WARN_DEPRECATED instead of
1929 mode.
1930
d6dc83a9
MV
1931 Deprecated SCM_ARRAY* macros.
1932
1933 * unif.h, unif.c, ramap.c, vectors.c, srfi-4.c, srfi-4.i.c
1934 (SCM_ARRAYP, SCM_I_ARRAYP): Renamed former to latter internal
1935 version. Changed all uses.
1936 (scm_tc16_array, scm_i_tc16_array,
1937 scm_tc16_enclosed_array, scm_i_tc16_enclosed_array,
1938 SCM_ARRAY_FLAG_CONTIGUOUS, SCM_I_ARRAY_FLAG_CONTIGUOUS,
1939 SCM_ENCLOSE_ARRAYP, SCM_I_ENCLOSE_ARRAYP,
1940 SCM_ARRAY_NDIM, SCM_I_ARRAY_NDIM,
1941 SCM_ARRAY_CONTP, SCM_I_ARRAY_CONTP,
1942 SCM_ARRAY_MEM, SCM_I_ARRAY_MEM,
1943 SCM_ARRAY_V, SCM_I_ARRAY_V,
1944 SCM_ARRAY_BASE, SCM_I_ARRAY_BASE,
1945 SCM_ARRAY_DIMS, SCM_I_ARRAY_DIMS,
1946 scm_t_array, scm_i_t_array): Likewise.
1947 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
1948 Moved from unif.h to unif.c.
1949 (scm_c_array_rank): New.
1950 (scm_array_rank): Reimplement using it.
1951
1952 * deprecated.h, deprecated.c (SCM_ARRAYP, SCM_ARRAY_NDIM,
1953 SCM_ARRAY_CONTP, SCM_ARRAY_MEM, SCM_ARRAY_V, SCM_ARRAY_BASE,
1954 SCM_ARRAY_DIMS, scm_t_array): New deprecated versions.
1955
dc91d8de
MV
19562005-01-11 Marius Vollmer <mvo@zagadka.de>
1957
1958 * ramap.c: Replace uses of scm_make_ra with scm_i_make_ra.
1959 (GVREF, GVSET): New abbreviations. Use them everywhere instead of
1960 scm_c_generalized_vector_ref and scm_cvref, and
1961 scm_c_generalized_vector_set_x, respectively.
1962 (RVREF, IVDEP, BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
1963 UNARY_ELTS_CODE, UNARY_PAIR_ELTS_CODE): Removed since unused.
1964
1965 * unif.h, unif.c (indices_to_pos, scm_array_handle_pos): Renamed
1966 former to latter and made public. Changed all uses.
1967 (scm_i_make_ra): Made public, changed tag param to enclosed flag.
1968 (scm_make_ra): Deprecated, changed all uses to scm_i_make_ra.
1969 (scm_i_shap2ra): New internal version of scm_shap2ra.
1970 (scm_shap2ra): Deprecated, changed all uses to scm_i_shap2ra.
1971 (scm_i_ra_set_contp): New internal version of scm_ra_set_contp.
1972 (scm_ra_set_contp): Deprecated, changed all uses to
1973 scm_i_ra_set_contp.
1974 (scm_cvref, scm_aind, scm_raprin1): Deprecated.
1975
66d33784
MV
19762005-01-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1977
b06f099d
MV
1978 * eval.c (scm_eval): Added example to docstring. Thanks to Issac
1979 Trotts!
1980
5d35ad81
MV
1981 * unif.c (scm_list_to_typed_array): Allow the specification of the
1982 upper bound as well. This is needed for empty arrays.
1983 (l2ra): Give needed number of elements in error message.
1984 (scm_i_print_array): Print length information for arrays that need
1985 it.
1986 (scm_i_read_array): Parse it.
1987
66d33784
MV
1988 * deprecated.h, deprecated.c (SCM_CHARS, SCM_UCHARS, SCM_LENGTH,
1989 scm_i_object_chars, scm_i_object_length): Brought back from the
1990 dead.
1991
d7d7d401
MV
19922005-01-10 Marius Vollmer <mvo@zagadka.de>
1993
74c58fce
MV
1994 * ramap.c: Replaced single-index uses of scm_array_set_x with
1995 scm_c_generalized_vector_set_x.
1996
d7d7d401
MV
1997 * unif.c (scm_array_rank, scm_array_dimensions,
1998 scm_shared_array_offset, scm_shared_array_increments,
1999 scm_array_ref, scm_array_set_x): Use scm_t_array_handle operations
2000 to simplify code and make it more general.
2001 (scm_shared_array_root): Work with all kinds of arrays, including
2002 naked vectors.
2003 (indices_to_pos): New.
74c58fce
MV
2004 (scm_make_shared_array): Use it instead of scm_aind; use handle
2005 for oldra.
2006
4475d3fe
KR
20072005-01-10 Kevin Ryde <user42@zip.com.au>
2008
2009 * posix.c (scm_mkstemp): Update docstring from manual.
2010
d3ddc95e
KR
2011 * stime.c (scm_mktime): Missing default errno=EINVAL from prev change.
2012
8c8491f5
MV
20132005-01-09 Marius Vollmer <mvo@zagadka.de>
2014
b89ecc6f
MV
2015 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_i_uniform_vector_ref_proc,
2016 scm_i_uniform_vector_set_proc): New.
2017 (u8ref, u8set, s8ref, s8set, etc): New.
2018 (uvec_reffers, uvec_setters): New.
2019 (uvec_to_list): Use generic scm_array_handle_ref instead of
2020 uvec_fast_ref since scm_array_handle_ref should be faster now.
8cb01d9f
MV
2021 (coerce_to_uvec, scm_c_uniform_vector_ref,
2022 scm_c_uniform_vector_set_x): Likewise.
b89ecc6f
MV
2023
2024 * unif.h, unif.c, inline.h (scm_i_t_array_ref, scm_i_t_array_set):
2025 New.
2026 (scm_t_array_handle): Added ref, set, elements and
2027 writable_elements for fast inline operation of
2028 scm_array_handle_ref and scm_array_handle_set.
2029 (scm_array_handle_ref, scm_array_handle_set): Moved to inline.h
2030 and replaced with inline code that simply calls the ref/set
2031 members of the handle.
2032 (enclosed_ref, vector_ref, string_ref, bitvector_ref, memoize_ref,
2033 enclosed_set, vector_set, string_set, bitvector_set, memoize_set):
2034 New.
2035 (scm_array_handle_get): Initialize ref/set fields to memoize_ref
2036 and memoize_set.
2037 (scm_bitvector_fill_x, scm_bitvector_to_list, scm_bit_count,
2038 scm_bit_position, scm_bit_set_star_x, scm_bit_count_star,
2039 scm_bit_invert_x): Correctly multiply index with increment in the
2040 general case.
2041
8c8491f5
MV
2042 * unif.c (scm_array_handle_set): Correctly execute only one
2043 alternative. D'Oh!
2044 (scm_list_to_typed_array, l2ra): Use scm_t_array_handle to fill
2045 the array; this covers all cases with much simpler code.
2046
2047 * srfi-4.c (scm_uniform_element_size): Deprecated implementation
2048 as well.
2049
cd5d55c7
MV
20502005-01-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2051
2052 * srfi-4.c (uvec_type): New.
2053 (uvec_to_list, uvec_ref, uvec_set_x, scm_c_uniform_vector_ref,
2054 scm_c_uniform_vector_x): Use it to get concrete type.
2055
2056 * unif.h (scm_t_array_dim): Changed type of members to ssize_t, to
2057 fit the docs.
2058
2059 * unif.c (ra2l): Handle zero rank arrays.
2060 (scm_i_print_array): Print zero rank arrays specially.
2061 (tag_to_type): Return #t for an empty tag, not the empty symbol.
2062 (scm_i_read_array): Allow zero rank arrays.
2063
a4aad74e
MV
20642005-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2065
2066 * hashtab.h, hashtab.c (SCM_HASHTAB_BUCKET_LOC): Removed.
2067 (scan_weak_hashtables): Rewrote its use with SCM_HASHTAB_BUCKET
2068 and SCM_SET_HASHTAB_BUCKET.
2069
2070 * print.h, print.c (scm_print_state, SCM_PRINT_STATE_LAYOUT):
2071 Removed ref_stack field.
2072 (PSTATE_STACK_REF, PSTATE_STACK_SET): New, for accessing the stack
2073 of a print state. Use them everywhere instead of ref_stack.
2074
3a40d5e1
MV
2075 * srfi-4.h (scm_uniform_element_size): Deprecated for real.
2076
a4aad74e
MV
2077 * srfi-4.c: Include deprecation.h.
2078
2079 * vectors.h, vectors.c, unif.h, unif.c, deprecated.h,
2080 deprecated.c, eq.c
2081 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Removed.
2082 (scm_vector_elements, scm_vector_writable_elements,
2083 scm_generalized_vector_get_handle): Moved to vectors.[hc] from
2084 unif.[hc].
2085 (SCM_SIMPLE_VECTOR_LOC): Removed.
2086 (SCM_VECTOR_MAX_LENGTH, SCM_VECTOR_LENGTH, SCM_VELTS,
2087 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET,
2088 scm_vector_equal_p): Moved from vectors.[hc] to deprecated.[hc].
2089 (scm_vector_equal_p, scm_i_vector_equal_p): Renamed former to
2090 latter. Changed use in eq.c.
2091
f01fe441
MV
20922005-01-07 Marius Vollmer <mvo@zagadka.de>
2093
2094 Make the uniform vector routines also deal with one dimensional
2095 arrays.
2096
2097 * srfi-4.c (SCM_IS_UVEC): New, use it instead of
2098 SCM_SMOB_PREDICATE in this file.
2099 (is_uvec): Also recognize one-dimensional uniform numeric arrays
2100 of the right type.
2101 (scm_is_uniform_vector): Likewise.
2102 (uvec_fast_ref): Made BASE param const.
2103 (uvec_writable_elements, uvec_elements): New.
2104 (uvec_to_list, uvec_ref, uvec_set_x, uvec_length,
2105 scm_c_uniform_vector_length, scm_c_uniform_vector_ref,
2106 scm_c_uniform_set_x): Use them to also deal with one-dimensional
2107 arrays.
2108 (scm_uniform_vector_ref, scm_uniform_vector_set_x): Deprecate old
2109 argument convention.
2110 (scm_uniform_vector_to_list): Let uvec_to_list do all the
2111 checking.
2112 (scm_uniform_vector_length): Use uvec_length.
2113
2aaf5726
MV
21142005-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2115
2116 * srfi-4.h, srfi-4.c (scm_c_uniform_vector_element_size,
2117 scm_c_uniform_vector_size): Removed.
2118 (scm_array_handle_uniform_element_size): New.
2119
2120
2121 * unif.h (scm_array_handle_ref, scm_array_handle_set): Changed
2122 type of POS parameter to be signed, positions can be negative.
2123 (scm_array_handle_release): New, changed all uses of
2124 scm_t_array_handle to properly call it.
2125 (scm_vector_get_handle, scm_generalized_vector_get_handle):
2126 Renamed former to latter, changed all uses.
2127
34ae52fc
MV
21282005-01-05 Marius Vollmer <mvo@zagadka.de>
2129
2130 Updated bitvector routines to also use scm_t_array_handles.
2131
2132 * unif.h (scm_bitvector_elements,
2133 scm_bitvector_writable_elements): Use a scm_t_array_handle and
2134 deliver offset, length and increment to caller. Changed all uses.
2135 (scm_bitvector_release_elements,
2136 scm_frame_bitvector_release_elements,
2137 scm_bitvector_release_writable_elements,
2138 scm_frame_bitvector_release_writable_elements): Removed.
2139 (scm_array_handle_bit_elements,
2140 scm_array_handle_bit_writable_elements,
2141 scm_array_handle_bit_elements_offset): New.
2142 (scm_make_typed_array): The special value for non-initialized
2143 arrays is now SCM_UNSPECIFIED. The old special value SCM_BOOL_F
2144 was a valid value to fill bitvectors with, so it can't really be
2145 specialed out.
2146
c4cb7628
KR
21472005-01-04 Kevin Ryde <user42@zip.com.au>
2148
2149 * stime.c (scm_strftime): Free t.tm_zone produced by bdtime2c.
2150 Reported by Bill Schottstaedt.
2151
0356881d
MV
21522005-01-02 Marius Vollmer <mvo@zagadka.de>
2153
2154 * sort.c (quicksort): Added INC parameter for non-contigous
2155 vectors.
2156 (quicksort1): New, for contigous vectors. Both functions are
2157 generated from the same code by including "quicksort.i.c".
2158 (scm_restricted_vector_sort_x): Call one of quicksort and
2159 quicksort1, depending on increment of vector.
2160 (scm_sort): Simply call scm_sort_x on a copy of the list or
2161 vector.
2162 (scm_merge_vector_x, scm_merge_vector_step): Changed indices to
2163 size_t, added inc parameter.
2164 (scm_stable_sort_x): Allocate temporary storage as Scheme vector
2165 so that it doesn't leak.
2166 (scm_stable_sort): Simply call scm_stable_sort_x on a copy of the
2167 list or vector.
2168
2169 * ramap.c (scm_array_map_x): Do not try to convert fill value
2170 before filling, any necessary conversion is done while storing.
2171
2172 * gc-card.c (scm_i_sweep_card): Call scm_i_vector_free instead of
2173 doing it inline.
2174
2175 * hashtab.c, hashtab.h (SCM_HASHTABLE_BUCKETS): Removed.
2176 (SCM_HASHTABLE_BUCKET, SCM_HASHTABLE_BUCKET_LOC): New. Replaced
2177 all uses of SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
2178
2179 * tags.h, weaks.c, vports.c, hashtab.c, convert.c, sort.c,
2180 convert.c, convert.h, convert.i.c, deprecated.c, environments.c,
2181 eval.c, filesys.c, fluids.c, gc-mark.c, gh.h, gh_data.c, goops.c,
2182 hash.c, init.c, libguile_la-arrays.loT, modules.c, net_db.c,
2183 objects.c, ports.c, posix.c, print.c, random.c, read.c,
2184 regex-posix.c, scmsigs.c, socket.c, stime.c, symbols.c: Use new
2185 vector elements API or simple vector API, as appropriate. Removed
2186 SCM_HAVE_ARRAYS ifdefery. Replaced all uses of
2187 SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
2188
2189 * srfi-4.h, srfi-4.c,
2190 srfi-4.i.c (scm_array_handle_uniform_elements,
2191 scm_array_handle_uniform_writable_elements,
2192 scm_uniform_vector_elements,
2193 scm_uniform_vector_writable_elements):
2194 (scm_<foo>vector_elements, scm_<foo>vector_writable_elements): Use
2195 scm_t_array_handle, deliver length and increment.
2196 (scm_array_handle_<foo>_elements,
2197 scm_array_handle_<foo>_writable_elements): New.
2198
2199 * gen-scmconfig.h.in (SCM_I_GSC_HAVE_ARRAYS): Removed.
2200 * gen-scmconfig.c: Hard code SCM_HAVE_ARRAYS to "1".
2201
2202 * unif.h, unif.c (scm_t_array_handle, scm_array_get_handle,
2203 scm_array_handle_rank, scm_array_handle_dims, scm_array_handle_ref
2204 scm_array_handle_set, scm_array_handle_elements
2205 scm_array_handle_writable_elements, scm_vector_get_handle): New.
2206 (scm_make_uve, scm_array_prototype, scm_list_to_uniform_array,
2207 scm_dimensions_to_uniform_array): Deprecated for real.
2208 (scm_array_p, scm_i_array_p): Use latter for SCM_DEFINE since
2209 snarfing wont allow a mismatch between C and Scheme arglists.
2210 (scm_make_shared_array, scm_enclose_array): Correctly use
2211 scm_c_generalized_vector_length instead of
2212 scm_uniform_vector_length.
2213
2214 * validate.h (SCM_VALIDATE_VECTOR,
2215 SCM_VALIDATE_VECTOR_OR_DVECTOR): use scm_is_simple_vector instead
2216 of SCM_VECTORP.
2217
2218 * weaks.h, weaks.c: Use new internal weak vector API from
2219 vectors.h.
2220
2221 * Makefile.am (libguile_la_SOURCES, DOT_X_FILES, DOT_DOC_FILES,
2222 EXTRA_libguile_la_SOURCES): Changed ramap.c and unif.c from being
2223 'extra' to being regular sources.
2224 (noinst_HEADERS): Added quicksort.i.c.
2225 * quicksort.i.c: New file.
2226
2227 * vectors.h, vector.c (SCM_VECTORP, SCM_VECTOR_LENGTH, SCM_VELTS,
2228 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET): Deprecated
2229 and reimplemented. Replaced all uses with scm_vector_elements,
2230 scm_vector_writable_elements, or SCM_SIMPLE_VECTOR_*, as
2231 appropriate.
2232 (scm_is_simple_vector, SCM_SIMPLE_VECTOR_LENGTH,
2233 SCM_SIMPLE_VECTOR_REF, SCM_SIMPLE_VECTOR_SET,
2234 SCM_SIMPLE_VECTOR_LOC): New.
2235 (SCM_VECTOR_BASE, SCM_SET_VECTOR_BASE, SCM_VECTOR_MAX_LENGTH,
2236 SCM_MAKE_VECTOR_TAG, SCM_SET_VECTOR_LENGTH,
2237 SCM_VELTS_AS_STACKITEMS, SCM_SETVELTS, SCM_GC_WRITABLE_VELTS):
2238 Removed.
2239 (scm_vector_copy): New.
2240 (scm_vector_elements, scm_vector_writable_elements): Use
2241 scm_t_array_handle, deliver length and increment. Moved to
2242 unif.h. Changed all uses.
2243 (scm_vector_release_elements,
2244 scm_vector_release_writable_elements,
2245 (scm_frame_vector_release_elements,
2246 scm_frame_vector_release_writable_elements): Removed.
2247 (SCM_I_IS_VECTOR, SCM_I_VECTOR_ELTS, SCM_I_VECTOR_WELTS,
2248 SCM_I_VECTOR_LENGTH, scm_i_vector_free): New internal API.
2249 (SCM_I_WVECTP SCM_I_WVECT_LENGTH SCM_I_WVECT_VELTS
2250 SCM_I_WVECT_GC_WVELTS SCM_I_WVECT_TYPE SCM_I_WVECT_GC_CHAIN
2251 SCM_I_SET_WVECT_GC_CHAIN, scm_i_allocate_weak_vector): New, for
2252 weak vectors.
2253
0336d18b
MV
22542004-12-29 Marius Vollmer <mvo@zagadka.de>
2255
2256 No longer use creators to specify the type of an array. Creators
2257 expose the fact that arrays are wrapped around vectors, but that
2258 might change.
2259
2260 * srfi-4.h (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector,
2261 scm_i_proc_make_u16vector, scm_i_proc_make_s16vector,
2262 scm_i_proc_make_u32vector, scm_i_proc_make_s32vector,
2263 scm_i_proc_make_u64vector, scm_i_proc_make_s64vector,
2264 scm_i_proc_make_f32vector, scm_i_proc_make_f64vector,
2265 scm_i_proc_make_c32vector, scm_i_proc_make_c64vector,
2266 uvec_proc_vars): Removed.
2267 (scm_i_generalized_vector_creator): Removed.
2268 (scm_i_generalized_vector_type): New.
2269
2270 * unif.h, unif.c (scm_typed_array_p, scm_make_array,
2271 scm_make_typed_array, scm_array_type, scm_list_to_array,
2272 scm_list_to_typed_array, scm_is_array, scm_is_typed_array): New.
2273 (scm_array_creator): Removed.
2274 (scm_array_p): Deprecated second PROT argument.
2275 (scm_dimensions_to_uniform_array, scm_list_to_uniform_array):
2276 Deprecated, reimplemented in terms of scm_make_typed_array and
2277 scm_list_to_typed_array.
2278 (scm_i_proc_make_vector, scm_i_proc_make_string,
2279 scm_i_proc_make_bitvector): Removed.
2280 (type_creator_table, init_type_creator_table, type_to_creator,
2281 make_typed_vector): New.
2282 (scm_i_convert_old_prototype): Removed.
2283 (prototype_to_type): New.
2284 (scm_make_uve): Deprecated, reimplemented using make_typed_vector.
2285 (scm_array_dimensions): Use scm_list_1 instead of scm_cons for
2286 minor added clarity.
2287 (scm_make_shared_array, scm_ra2contig): Use make_typed_vector
2288 instead of scm_make_uve.
2289 (tag_creator_table, scm_i_tag_to_creator): Removed.
2290 (tag_to_type): New.
2291 (scm_i_read_array): Use scm_list_to_typed_array instead of
2292 scm_list_to_uniform_array.
2293
277e8472
MV
22942004-12-27 Marius Vollmer <mvo@zagadka.de>
2295
32b26202
MV
2296 * unif.h, unif.c (scm_bitvector_elements): Made return value "const".
2297 (scm_bitvector_writable_elements): New.
2298 (scm_bitvector_release, scm_bitvector_release_elements):
2299 Renamed former to latter. Added explicit call to
2300 scm_remember_upto_here_1.
2301 (scm_frame_bitvector_release,
2302 scm_frame_bitvector_release_elements): Renamed former to latter.
2303 (scm_bitvector_release_writable_elements,
2304 scm_bitvector_release_writable_elements): New.
2305 Changed all uses as required by the changes above.
2306
2307 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_uniform_vector_elements,
2308 scm_u8vector_elements, etc): Made return value "const".
2309 (scm_uniform_vector_writable_elements,
2310 scm_u8vector_writable_elements, etc): New.
2311 (scm_uniform_vector_release, scm_uniform_vector_release_elements):
2312 Renamed former to latter. Added explicit call to
2313 scm_remember_upto_here_1.
2314 (scm_frame_uniform_vector_release,
2315 scm_frame_uniform_vector_release_elements): Renamed former to latter.
2316 (scm_uniform_vector_release_writable_elements,
2317 scm_frame_uniform_vector_release_writable_elements): New. Takes
2318 crown of longest identifier yet.
2319 Changed all uses as required by the changes above.
2320
277e8472
MV
2321 * vectors.h, vectors.c (scm_c_vector_set_x): Make return type
2322 void.
2323 (scm_is_vector, scm_vector_p, scm_vector_length,
2324 scm_c_vector_length, scm_vector_ref, scm_c_vector_ref,
2325 scm_vector_set_x, scm_c_vector_set_x, scm_vector_to_list,
2326 scm_vector_move_left_x, scm_vector_move_right_x,
2327 scm_vector_fill_x): handle one-dimensional arrays.
32b26202
MV
2328 (scm_vector_elements, scm_vector_release_elements,
2329 scm_vector_frame_release_elements, scm_vector_writable_elements,
2330 scm_vector_release_writable_elements,
2331 scm_vector_frame_release_writable_elements): New.
2332 (scm_list_to_vector, scm_vector_to_list, scm_vector_fill,
2333 scm_vector_move_left_x, scm_vector_move_right_x): Use them.
277e8472
MV
2334
2335 * ramap.c (scm_ramapc, scm_raeql): Use
2336 scm_c_generalized_vector_length instead of
2337 scm_uniform_vector_length.
2338 (scm_ramap, rafe): Use scm_c_vector_ref instead of SCM_VELTS. use
2339 scm_c_generalized_vector_ref instead of scm_uniform_vector_ref.
2340
49c51610
MV
23412004-12-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2342
2343 * continuations.h, continuations.c (scm_t_contregs): New 'offset'
2344 member for relocating debug frames.
2345 (scm_make_continuation): Set it.
2346
2347 * stacks.c (read_frame, read_frames, scm_make_stack,
2348 scm_last_stack_frame, scm_stack_id): Use the new 'offset' member
2349 of continuations instead of calculating the offset ourselves.
2350 Relocate 'vect' member of scm_t_debug_frame.
2351
3b2ee265
KR
23522004-12-16 Kevin Ryde <user42@zip.com.au>
2353
2354 * ramap.c (scm_array_map_x): Check for at least one source argument.
2355
e120686a
KR
23562004-12-14 Kevin Ryde <user42@zip.com.au>
2357
2358 * srfi-13.c (string-any, string-every): Use a scheme wrapper around
2359 the C code so for the final call to the predicate procedure is a tail
2360 call, per SRFI-13 spec.
2361
680b5237
KR
23622004-12-10 Kevin Ryde <user42@zip.com.au>
2363
2364 * eq.c (scm_eq_p, scm_eqv_p, scm_equal_p): Update docstrings from
2365 recent revision to the reference manual.
2366
2367 * numbers.c (scm_modulo): Amend fixme comment about negative divisor
2368 with "%", C99 says it's well-defined.
2369
2370 * socket.c (scm_from_ipv6): Just use mpz_import. Don't bother trying
2371 to fit scm_from_ulong_long, since that uses mpz_import anyway. Don't
2372 bother trying to fit scm_from_ulong, not really worth the trouble if
2373 addresses are more than 4 bytes usually.
2374
446d320c
KR
23752004-11-30 Kevin Ryde <user42@zip.com.au>
2376
2377 * gc_os_dep.c (NetBSD): Test __m68k__ and __arm__ as well as m68k and
2378 arm32. Reported by Greg Troxel.
2379
f2654760
MV
23802004-11-14 mvo <mvo@zagadka.de>
2381
2382 * unif.c, unif.h (scm_i_cvref): Made non-static for ramap.c.
2383
2384 * Makefile.am (INCLUDES): It is "@LTDLINCL@", not "@LTDLINC@".
2385
d550e35f
MV
23862004-11-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2387
2388 Enclosed arrays are now their own smob. This has been done to
2389 make the code more explicit about them and to prepare for the time
f2654760
MV
2390 when generalized vectors include arbitrary one-dimensional
2391 arrays. (Uptonow, enclosed arrays have been recognized by their
2392 use of an array as their storage 'vector'. When all generalized
2393 vectors are allowed as storage, including one-dimensional arrays,
2394 this will no longer work.)
d550e35f
MV
2395
2396 * unif.h, unif.c: (scm_tc16_enclosed_array, SCM_ENCLOSED_ARRAYP):
2397 New.
2398 (exactly_one_third, singp): Removed.
2399 (scm_array_p, scm_array_dimensions, scm_shared_array_root,
2400 scm_shared_array_offset, scm_shared_array_increments): Handle
2401 enclosed arrays explicitely.
2402 (scm_array_rank): Likewise. Also, do not return zero for
2403 non-arrays, signal an error instead since arrays with rank zero do
2404 exist.
2405 (scm_i_make_ra): New, for specifying the tag of the new array.
2406 (scm_make_enclosed_array): Use it.
2407 (scm_make_ra): Reimplemented in terms of scm_i_make_ra.
2408 (scm_make_shared_array): Use scm_c_generalized_vector_length
2409 instead of scm_uniform_vector_length.
2410 (scm_array_in_bounds_p): Rewritten to be much cleaner.
2411 (scm_i_cvref): New, doing the job of scm_cvref.
2412 (scm_cvref): Use scm_i_cvref.
2413 (scm_array_ref): Do not accept non-arrays when no indices are
2414 given. Use scm_i_cvref to do the actual access.
2415 ("uniform-array-set1"): Do not register.
2416 (scm_array_set_x, scm_uniform_array_read_x,
2417 scm_uniform_array_write): Handle enclosed arrays explicitly.
2418 (ra2l): Use scm_i_cvref instead of scm_uniform_vector_ref to also
2419 handle enclosed arrays.
2420 (scm_array_to_list): Handle enclosed arrays explicitly.
2421 (rapr1): Removed.
2422 (scm_i_print_array_dimension): Use scm_i_cvref to also handle
2423 enclosed arrays.
2424 (scm_i_print_enclosed_array): New.
2425 (tag_proto_table, tag_creator_table): Renamed former to latter.
2426 Added "a" and "b" for strings and bitvectors, resp.
2427 (scm_i_tag_to_prototype, scm_i_tag_to_creator): Renamed former to
2428 latter. Tag "a" is in the table now, no need to handle it as a
2429 legacy tag.
2430 (scm_raprin1): Just call scm_iprin1.
2431 (scm_array_creator, scm_array_prototype): Handle enclosed arrays
2432 explicitly.
2433 (scm_init_unif): Initialize scm_tc16_enclosed_array smob.
2434 Use scm_i_print_array as printer for scm_tc16_array.
2435
2ed34885
MV
24362004-11-10 Marius Vollmer <mvo@zagadka.de>
2437
823086c1
MV
2438 * ramap.c (cind): Changed second arg to be pointer to long instead
2439 of uniform vector.
2440 (scm_ramapc): Allocate index vector with scm_malloc and not as
d550e35f 2441 uniform vector. Wrap it in a frame so that it gets properly freed.
823086c1
MV
2442 (scm_array_index_map_x): Likewise.
2443
2444 * unif.c: Changed all uses of scm_array_prototype to
2445 scm_array_creator. (scm_i_get_old_prototype): Signal error when no
2446 prototype is known.
2447 (scm_uniform_array_read_x, scm_uniform_array_write): Reimplemented
2448 in terms of scm_uniform_vector_read_x and
2449 scm_uniform_vector_write, respectively. Strings and
2450 bitvector support has been dropped.
2451
2ed34885
MV
2452 * srfi-4.h, srfi-4.c: Do not include <libguile.h>, include the
2453 needed files directly. Include config.h, <unistd.h> and <io.h>
2454 when available.
2455 (scm_uniform_vector_read_x, scm_uniform_vector_write): New.
2456
2c72f253
MV
24572004-11-09 Marius Vollmer <mvo@zagadka.de>
2458
2459 * gh_data.c (gh_uniform_vector_length): Properly use
2460 scm_c_uniform_vector_length instead of scm_uniform_vector_length.
2461
3cc0a296
MV
24622004-11-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2463
2464 * srfi-4.h (scm_c_uniform_vector_ref, scm_c_uniform_vector_set_x):
2465 New.
2466 (scm_i_uniform_vector_creator): Removed.
2467 (scm_i_generalized_vector_creator): New.
2468 (scm_uniform_vector_length, scm_uniform_element_size): Do not
2469 handle generalized vectors, only uniform numeric vectors.
2470 (alloc_uvec): Do length check here...
2471 (make_uvec): ...but not here.
2472 (coerce_to_uvec): Use new generalized vector functions to handle
2473 all kinds of vectors in one go.
2474
2475 * tags.h (scm_tc7_bvect): Renamed to scm_tc7_unused7, renaming the
2476 remaining scm_tc7_unused tags to get a neatly ordered list.
2477
2478 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c: Do no
2479 longer handle scm_tc7_bvect bitvectors.
2480
2481 * ramap.c: Use the new generalized vector functions to handle all
2482 vector like things.
2483
2484 * vectors.h, vectors.c (scm_is_vector, scm_c_vector_length,
2485 scm_c_vector_ref, scm_c_vector_set_x, scm_generalized_vector_p,
2486 scm_generalized_vector_length, scm_generalized_vector_ref,
2487 scm_generalized_vector_set_x, scm_generalized_vector_to_list,
2488 scm_is_generalized_vector, scm_c_generalized_vector_length,
2489 scm_c_generalized_vector_ref, scm_c_generalized_vector_set_x):
2490 New.
2491
2492 * unif.h, unif.c (scm_bitvector_p, scm_bitvector,
2493 scm_make_bitvector, scm_bitvector_length, scm_bitvector_ref,
2494 scm_bitvector_set_x, scm_list_to_bitvector, scm_bitvector_to_list,
2495 scm_bitvector_fill_x, scm_is_bitvector, scm_c_make_bitvector,
2496 scm_c_bitvector_length, scm_c_bitvector_ref,
2497 scm_c_bitvector_set_x, scm_bitvector_elements,
2498 scm_bitvector_release, scm_frame_bitvector_release,
2499 scm_tc16_bitvector, bitvector_free, bitvector_print,
2500 bitvector_equalp, count_ones, find_first_one): New.
2501 (scm_bit_count, scm_bit_position, scm_bit_set_star_x,
2502 scm_bit_count_star, scm_bit_invert_x, scm_istr2bve): Rewritten
2503 using the new C API for bitvectors and maybe count_ones or
2504 find_first_one, as appropriate.
2505 (SCM_I_MAX_LENGTH, SCM_BITVECTOR_P, SCM_BITVECTOR_BASE,
2506 SCM_SET_BITVECTOR_BASE, SCM_BITVECTOR_MAX_LENGTH,
2507 SCM_BITVECTOR_LENGTH, SCM_MAKE_BITVECTOR_TAG,
2508 SCM_SET_BITVECTOR_LENGTH): Removed. Replaced all uses with the
2509 new functions from above.
2510 (scm_i_proc_make_vector, scm_i_proc_make_string,
2511 scm_i_proc_make_bitvector): Made non-static for use in
2512 scm_i_generalized_vector_creator.
2513 (scm_make_u1vector): Removed, replaced by scm_make_bitvector.
2514 (scm_make_uve): Validate that the created object is a generalized
2515 vector.
2516 (scm_i_legacy_tag): Removed.
2517 (scm_i_print_array): Do it here.
2518 (scm_raprin1): Only print enclosed arrays.
2519
2520 * Makefile.am (DOT_DOC_FILES): Added srfi-4.doc.
2521
c24d026b
MV
25222004-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2523
1f2328fe
MV
2524 * srfi-4.c (make_uvec): Use SCM_I_SIZE_MAX instead of SIZE_MAX for
2525 added portability.
2526
2527 * chars.c (scm_charnames, scm_charnums): Added "sp" as an alias
2528 for "space". Thanks to Bruce Korb!
2529
c24d026b
MV
2530 * rw.c (scm_read_string_x_partial): Bugfix, apply offset to dest
2531 only after dest has been set. Thanks to Hyper Division!
2532
2533 * gh_data.c (gh_uniform_vector_length): Use
2534 scm_uniform_vector_length instead of SCM_UVECTOR_LENGTH.
2535
d4ea47c8
MV
25362004-11-03 Marius Vollmer <mvo@zagadka.de>
2537
2538 * unif.h (SCM_UVECTOR_BASE, SCM_SET_UVECTOR_BASE,
2539 SCM_UVECTOR_MAXLENGTH, SCM_UVECTOR_LENGTH, SCM_MAKE_UVECTOR_TAG,
2540 SCM_SET_UVECTOR_LENGTH): Removed.
2541
236288e2
MV
25422004-11-02 Marius Vollmer <mvo@zagadka.de>
2543
9a5fa6e9 2544 Mac OS X and OpenBSD compatibility patches from Andreas Vögele.
236288e2
MV
2545 Thanks!
2546
2547 * backtrace.c (scm_display_backtrace_with_highlights): Join the
2548 first and the second line of the SCM_DEFINE macro call, since old
2549 preprocessors cannot handle definitions that are split into two
2550 lines.
2551
2552 * inline.h (scm_cell, scm_double_cell): Don't use C99 variable
2553 declarations.
2554
2555 * pairs.c (scm_i_chase_pairs): Replace scm_t_bits with
2556 scm_t_uint32 to fix the mismatch between the function declaration
2557 and definition.
2558
2559 * sort.c (quicksort): Don't use C99 variable declarations.
2560
2561 * srfi-4.c (uvec_fast_ref): Avoid a compiler warning by returning
2562 SCM_BOOL_F if no type matches.
2563
2564 * threads.c (thread_print): Cast a pointer to size_t when printing
2565 with scm_uintprint.
2566
2567 * unif.c (scm_i_tag_to_prototype): Make sure that "instead" gets
2568 defined.
2569 (scm_array_prototype): Deprecated.
2570
f738b51d
MV
25712004-11-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2572
5d1015ec
MV
2573 * srfi-4.h, srfi-4.c (scm_frame_uniform_vector_release): New.
2574 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use it to get
2575 more efficient access to the u32vector.
2576
034486df
MV
2577 * tags.h (scm_tc7_llvect, scm_tc7_uvect, scm_tc7_fvect,
2578 scm_tc7_dvect, scm_tc7_cvect, scm_tc7_svect, scm_tc7_byvect,
2579 scm_tc7_ivect): Renamed to scm_tc7_unused_1 to scm_tc7_unused_8.
2580
2581 * validate.h (SCM_VALIDATE_VECTOR_OR_DVECTOR): Accept f64vectors
2582 instead of the old-style dvectors.
2583
2584 * gh_data.c: Use new-style uniform arrays in place of old-style
2585 ones.
2586
2587 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c,
2588 ramap.c, unif.c: Do no longer handle old-style uniform vectors.
2589
2590 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use u32vectors
2591 instead of old-sytle uvectors.
2592
2593 * convert.c, convert.i.c: Rewritten completely, using
2594 scm_any_to_u8vector, etc and other new-style uniform vector
2595 functions.
2596
2597 * random.c (scm_random_solid_sphere_x,
2598 scm_random_hollow_sphere_x): Do not validate vector argument, this
2599 is already done elsewhere.
2600
2601 * srfi-4.h, srfi-4.i.c, srfi-4.c (coerce_to_uvec,
2602 scm_any_to_u8vector, etc): New.
2603 (scm_uniform_element_size, scm_uniform_vector_length): Do no
2604 longer handle old-style uniform vectors.
2605
f738b51d
MV
2606 * read.c (scm_lreadr): Bugfix: include the last bit in the
2607 bit vector.
2608
5e9c05a1
MV
26092004-10-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2610
327114a2
MV
2611 * unif.h, unif.c (scm_array_creator): New.
2612 (scm_i_get_old_prototype): New.
2613 (scm_array_prototype): use it to return old-style prototype, never
2614 return creators.
2615 (scm_make_uve): Use scm_call_1 instead of scm_call_2 with a second
2616 arg of SCM_UNDEFINED. The latter is wrong.
2617
5e9c05a1
MV
2618 * unif.h, unif.c (scm_make_u1vector): New, but only temporary.
2619 (make_uve): Removed.
2620 (scm_i_proc_make_vector, scm_i_proc_make_string,
2621 scm_i_proc_make_u1vector): New.
2622 (scm_init_unif): Initialize them.
2623 (scm_i_convert_old_prototype): New.
2624 (scm_make_uve): Use it to get the creator procedure. Removed all
2625 old code that created old-style uniform vectors.
2626 (scm_array_p): Handle generic vectors.
2627 (scm_dimensions_to_uniform_array): Do not fill new array with
2628 prototype when that is a procedure.
2629 (scm_list_to_uniform_array): Also accept a list of lower bounds as
2630 the NDIM argument.
2631 (scm_i_print_array): Print rank for shared or non-zero-origin
2632 vectors.
2633 (tag_proto_table, scm_i_tag_to_prototype, scm_i_read_array): New.
2634 (scm_raprin1): Do not call scm_i_array_print for enclosed arrays,
2635 which I do not understand yet.
2636 (scm_array_prototype): Explicitely handle generic vectors.
327114a2 2637
5e9c05a1
MV
2638 * numbers.c, number.h (scm_i_print_complex, icmplx2str): New.
2639 (iflo2str): Use icmplx2str for complex numbers.
2640
2641 * srfi-4.c, srfi-4.h (scm_i_read_homogenous_vector,
2642 scm_i_uniform_vector_prototype): Removed.
2643 (scm_i_uniform_vector_creator): New.
2644 (SCM_UVEC_C32, scm_c32vector, scm_make_c32vector, etc,
2645 SCM_UVEC_C64, scm_c64vector, scm_make_c64vector, etc): New.
2646 Updated all tables and generic functions to support them.
2647 (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector, etc): New.
2648 (scm_init_srfi_4): Initialize them.
2649
2650 * srfi-4.i.c (scm_take_u8vector, etc): use uvec_sizes instead of
2651 sizeof(CTYPE) as explained in the comment.
2652
2653 * read.c (scm_lreadr): Call scm_i_read_array for all characters
50472546 2654 following '#' that can start an array. Explicitely disambiguate
5e9c05a1
MV
2655 'i' and 'e' between introducing numbers and uniform vectors. Do
2656 not call scm_i_read_homogenous_vector, since that is also handled
2657 by scm_i_read_array now.
2658
f984af07
MV
26592004-10-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2660
2661 First cut at integrating uniform vectors from srfi-4 with the rest
2662 of Guile. This change replaces scm_tc7_byvect with a s8 uniform
2663 vector. The plan is to gradually replace one type after the other
2664 until none is left and then to consider general cleanups and
2665 optimizations.
2666
2667 * srfi-4.h, srfi-4.i.c (scm_u8vector_elements, etc): New.
2668
2669 * srfi-4.h, srfi-4.c (scm_uniform_vector_p,
2670 scm_uniform_vector_ref, scm_uniform_vector_set_x,
2671 scm_uniform_vector_to_list, scm_is_uniform_vector,
2672 scm_c_uniform_vector_lengths, scm_c_uniform_vector_size,
2673 scm_uniform_vector_elements, scm_uniform_vector_element_size,
2674 scm_uniform_vector_release): New.
2675 (scm_i_uniform_vector_prototype, scm_i_uniform_vector_tag): New.
2676 (scm_uniform_element_size, scm_uniform_vector_length): Moved here
2677 from unif.h, unif.c and extended to handle both the old and new
2678 uniform vectors.
2679
2680 * tags.h (scm_tc7_byvect): Commented out.
2681
2682 * unif.h, unif.c (scm_uniform_vector_ref, scm_array_ref): Renamed
2683 the former to the latter.
2684 (scm_uniform_vector_length, scm_uniform_element_size): Moved to
2685 srfi-4.h, srfi-4.c.
2686 (scm_make_uve): Call scm_make_s8vector for #\nul prototype.
2687 (scm_array_p, scm_array_rank, scm_array_dimensions,
2688 scm_transpose_array, scm_enclose_array, scm_array_ref, scm_cvref,
2689 scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
2690 scm_array_to_list, scm_array_prototype): Handle srfi-4 uniform
2691 vectors. Removed code for scm_tc7_byvect.
2692 (scm_dimensions_to_uniform_array): Fill array with 0 when
2693 prototype is #\nul.
2694 (scm_i_print_array_dimension, scm_i_legacy_tag,
2695 scm_i_print_array): New.
2696 (scm_raprin1): Call scm_i_print_array for arrays. Removed code
2697 for scm_tc7_byvect.
2698
2699 * ramap.c (scm_ra_matchp, scm_array_fill_int, racp,
2700 scm_array_index_map_x, raeql_1, scm_array_equal_p): Handle srfi-4
2701 uniform vectors. Removed code for scm_tc7_byvect
2702
2703 * print.c (iprin1): Removed code for scm_tc7_byvect.
2704 * objects.c (scm_class_of): Likewise.
2705 * gc-mark.c (scm_gc_mark_dependencies): Likewise.
2706 * gc-card.c (scm_i_sweep_card): Likewise.
2707 * evalext.c (scm_self_evaluating_p): Likewise.
2708 * eq.c (scm_equal_p): Likewise.
2709
2710 * gh_data.c (gh_chars2byvect): Reimplemented with
2711 scm_make_s8vector.
2712 (gh_scm2chars): Handle s8vectors, removed code for scm_tc7_byvect.
2713
2714 * srfi-4.c (take_uvec): New.
2715 (alloc_uvec): Use it.
2716 * srfi-4.h, srfi-4.i.c (scm_take_u8vector, etc): New.
2717
2718 * random.c (vector_scale, vector_scale_x): Renamed former to the
2719 latter, since it modifies its argument.
2720 (vector_scale_x, vector_sum_squares, scm_random_normal_vector_x):
2721 Do not use scm_universal_vector_length for non-uniform vectors.
2722 Use scm_f64vector_elements to access innards of uniform vectors.
2723
2724 * convert.i.c: Convert srfi-4 style uniform vectors when
2725 requested.
2726 * convert.c (scm_c_scm2chars, scm_c_chars2scm,
2727 scm_c_chars2byvect): Use a s8vector instead of a scm_tc7_byvect.
2728
79d52182
MV
27292004-10-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2730
2731 * numbers.h, numbers.c (scm_i_print_double): New.
2732
2733 * srfi-4.c, srfi-4.h, srfi-4.i.c: New files, initially from
2734 ../srfi/ but heavily modified.
2735 * Makefile.am: Add them in all the right places.
2736 * init.c (scm_init_guile_1): Call scm_init_srfi_4.
2737 * read.c (scm_lreadr): Call scm_i_read_homogenous_vector for '#f',
2738 '#u', and '#s'.
2739
2740 * read.h, read.c (scm_i_input_error): Renamed from scm_input_error
2741 and made non-static. Changed all uses.
2742
6191ccec
MV
27432004-10-22 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2744
e64e80b0
MV
2745 * variable.c, threads.c, struct.c, stackchk.c, smob.c, root.c,
2746 print.c, ports.c, mallocs.c, hooks.c, hashtab.c, fports.c,
2747 guardians.c, filesys.c, coop-pthreads.c, continuations.c: Use
2748 scm_uintprint to print unsigned integers, raw heap words, and
2749 adresses, using a cast to scm_t_bits to turn pointers into
2750 integers.
2751
2752 * unif.c: Include "libguile/print.h".
2753
c90ac3a8
MV
2754 * numbers.h, numbers.c (SCM_T_INTBUFLEN): Increased to cover
2755 scm_t_intmax values.
2756 (scm_uint2str): New, for scm_t_uintmax.
2757 (scm_iint2str): Argument type changed to scm_t_intmax,
2758 reimplemented in terms of scm_uint2str.
2759
2760 * print.c, print.h (scm_uintprint): New, for printing
2761 scm_t_uintmax values.
2762 (scm_intprint): Argument type changed to scm_t_intmax.
2763
77c2594f
MV
2764 * sort.c (quicksort, scm_merge, scm_merge_list_x,
2765 scm_merge_list_step, scm_merge_vector_step): Inserted SCM_TICKs at
2766 strategic places so that the loops can be interrupted.
2767
6191ccec
MV
2768 * Makefile.am (INCLUDES): Use @LTDLINC@ instead of
2769 "-I$(top_srcdir)/libguile-ltdl".
2770 (libguile_la_LIBADD): Use @LIBLTDL@ instead of
2771 "../libguile-ltdl/libguile-ltdl.a".
2772
2773 * guile.c, dynl.c: Switched to using libltdl directly. Replaced
2774 all references to scm_lt_* with just lt_*. Include <ltdl.h>
2775 instead of <libguile-ltdl.h>.
2776
77600f3e
MV
27772004-10-20 Marius Vollmer <mvo@zagadka.de>
2778
2779 * sort.c (quicksort): Copy pivot out of the array while
2780 constructing the partitions; it could get overwritten otherwise.
2781 Because of the ultimate insertion sort, this bug did not cause
2782 quicksort to fail, it just put all the burdon on the insertion
2783 sort and was thus very slow. Thanks to Rolan Orre for reporting
2784 the slowness!
2785
5000379b
MV
27862004-10-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2787
192cd792
MV
2788 * numbers.c (scm_i_range_error): New.
2789 * conv-integer.i.c, conv-uinteger.i.c: Use it instead of
2790 scm_out_of_range.
2791
2792 * sort.c (scm_restricted_vector_sort_x): Validate startpos <=
6191ccec 2793 endpos. State inclusiveness/exclusiveness of bounds in docstring.
192cd792
MV
2794
2795 * unif.c (scm_array_p): When no prototype is given, explicitely
2796 test for allowable types, do not simply return true. Thanks to
2797 Roland Orre for reporting this!
2798
5000379b
MV
2799 * private-gc.h (SCM_DEFAULT_MAX_SEGMENT_SIZE): Increase to 20 Mib.
2800
2801 * gc-segment.c (scm_i_get_new_heap_segment): Limit size of new
2802 segment to scm_max_segment_size.
2803
497eb0b7
HWN
28042004-10-08 Han-Wen Nienhuys <hanwen@xs4all.nl>
2805
1367aa5e
HWN
2806 * gc.c (scm_igc): put scm_gc_running-- before running hooks.
2807
497eb0b7
HWN
2808 * inline.h (scm_double_cell): abort if GC running.
2809 (scm_cell): idem.
2810
aef0bdb4
MV
28112004-10-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2812
2813 * error.c (scm_wrong_type_arg): Do not talk about "argument" for
2814 pos == 0.
2815
2816 Keywords no longer store a 'dash symbol'. Instead, they store a
2817 symbol with their real name.
2818
2819 * keywords.h, keywords.c, deprecated.h, deprecated.c
2820 (SCM_KEYWORDP, SCM_KEYWORDSYM): Deprecated and implemented in
2821 terms of scm_is_keyword and scm_keyword_dash_symbol.
2822
2823 * keywords.h, keywords.c, discouraged.h, discouraged.c
2824 (scm_make_keyword_from_dash_symbol, scm_keyword_dash_symbol,
2825 scm_c_make_keyword): Discouraged.
2826
2827 * keywords.h, keywords.c (scm_symbol_to_keyword,
2828 scm_keyword_to_symbol): Implemented in C.
2829 (scm_is_keyword, scm_from_locale_keyword,
2830 scm_from_locale_keywordn): New.
2831
2832 * goops.c: Replaced SCM_KEYWORDP with scm_is_keyword.
2833
2834 * snarf.h (SCM_KEYWORD, SCM_GLOBAL_KEYWORD): Use
2835 scm_from_locale_keyword instead of scm_c_make_keyword.
2836
2837 * keywords.c (scm_symbol_to_keyword): Use SCM_ASSERT_TYPE for a
2838 better error message.
2839
2840 * deprecated.c: Include discouraged.h and keywords.h.
2841
2842 * read.c (scm_lreadr): Simply do (symbol->keyword (read)) after
2843 reading '#:' or ':'. See NEWS for consequences.
2844
818deb11
MV
28452004-09-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2846
43c25626
MV
2847 * read.c (scm_lreadr): Revert change from 2004-09-22: string
2848 literals are now read-write again (until SCM_STRING_CHARS is
2849 removed).
2850
2851 * strings.c (SCM_STRING_CHARS): Explicitely reject read-only
2852 strings with an error message that blames SCM_STRING_CHARS.
2853
2854 * options.c (change_option_setting): Use scm_car instead of
2855 explicit type check plus SCM_CAR.
2856
2857 * print.h, print.c (SCM_PRINT_HIGHLIGHT_PREFIX,
2858 SCM_PRINT_HIGHLIGHT_SUFFIX): New printer options.
2859 (scm_iprin1): Use them instead of the previoulsy hardcoded
2860 strings.
2861 (scm_init_print): Initialize them.
2862
2863 * backtrace.c (display_frame_expr): Do not remove control
2864 characters from the final string. Print it directly using
2865 scm_display.
2866
818deb11
MV
2867 * ramap.c (scm_array_equal_p): Include scm_tc7_svect in switch.
2868 Thanks to Roland Orre!
2869
d748089e
KR
28702004-09-29 Kevin Ryde <user42@zip.com.au>
2871
2872 * regex-posix.c (scm_regexp_exec): Correction to last change, should
2873 be whole original string in match struct, not offsetted substring.
2874
0ff7e3ff
HWN
28752004-09-24 Han-Wen Nienhuys <hanwen@xs4all.nl>
2876
2877 * gc.c (scm_gc_unprotect_object): abort if called during GC.
2878
ad7de4b8
MV
28792004-09-24 Marius Vollmer <mvo@zagadka.de>
2880
2edf319f
MV
2881 * Makefile.am (EXTRA_DIST): Added gettext.h.
2882
d180337b
MV
2883 * smob.c, smob.h (scm_assert_smob_type): New.
2884
05d7cf89 2885 * Makefile.am (guile_CFLAGS, guile_LDFLAGS, libguile_la_CFLAGS):
ad7de4b8
MV
2886 Include GUILE_CFLAGS.
2887 (libguile_la_LIBADD): Removed THREAD_LIBS_LOCAL, which is unused
2888 now.
2889 (libpath.h): Put GUILE_CFLAGS in the build-info.
2890
c9fedf8a
MV
28912004-09-23 Marius Vollmer <mvo@zagadka.de>
2892
2893 * print.h (scm_print_state): Added highlight_objects.
2894 * print.c (make_print_state, scm_free_print_state): Initialize it
2895 to SCM_EOL.
2896 (scm_iprin1): Wrap output in '{...}' when object is contained in
2897 highlight_objects.
2898
2899 * backtrace.h, backtrace.c (scm_display_backtrace_with_highlights,
2900 scm_backtrace_with_highlights): New. Set highlight_objects of
2901 printstate.
2902
2903 * error.c (scm_error_scm): Document new meaning of data/rest
2904 argument for out-of-range and wrong-type-arg errors.
2905 (scm_out_of_range, scm_out_of_range_pos, scm_wrong_type_arg,
2906 scm_wrong_type_arg_msg): Pass bad_value in rest argument of
2907 exception so that it gets highlighted in the backtrace.
2908 Don't talk about "argument" when not giving a position.
2909
2910 * throw.c (handler_message): The rest argument is the fourth
2911 argument, not everything after the third. Call
2912 scm_display_backtrace_with_highlights, passing the rest argument
2913 when appropriate.
2914
d5ac9b2a
MV
29152004-09-22 Marius Vollmer <mvo@zagadka.de>
2916
2917 From Jan Nieuwenhuizen <janneke@gnu.org> and Bruno Haible
2918 <bruno@clisp.org>:
2919
2920 * i18n.c: Handle --disable-nls (thanks Bruno).
2921
2922 * posix.c (scm_init_posix): Add LC_PAPER, LC_NAME, LC_ADDRESS,
2923 LC_TELEPHONE, LC_MEASUREMENT, LC_IDENTIFICATION.
2924
2925 * i18n.c (scm_i_to_lc_category): New name and export. Support all
2926 LC categories.
05d7cf89 2927 * posix.c (scm_setlocale): Use it.
d5ac9b2a
MV
2928
2929 * i18n.h, i18n.c (scm_textdomain, scm_bindtextdomain,
2930 scm_bind_textdomain_codeset): Make wrappers similar to C function
2931 they wrap.
2932
2933 * i18n.h: New file.
2934 * i18n.c: New file.
2935 * gettext.h: New file, taken from GNU gettext.
2936 * init.c: Include libguile/i18n.h.
2937 (scm_init_guile_1): Add call to scm_init_i18n().
2938 * Makefile.am (libguile_la_SOURCES): Add i18n.c.
2939 (DOT_X_FILES): Add i18n.x.
2940 (DOT_DOC_FILES): Add i18n.doc.
2941 (libguile_la_LDFLAGS): Add @LTLIBINTL@.
2942 (modinclude_HEADERS): Add i18n.h.
2943
d2e53ed6
MV
29442004-09-22 Marius Vollmer <mvo@zagadka.de>
2945
2cdfe016
MV
2946 * gh_list.c: Replaced SCM_CAR, etc with scm_car, etc.
2947
d2e53ed6
MV
2948 * discouraged.h, tags.h (SCM_CONSP, SCM_NCONSP): Moved to
2949 discouraged.h. Replaced all uses with scm_is_pair.
2950 (SCM_I_CONSP): New name for SCM_CONSP.
2951
2952 * pairs.h, pairs.c (scm_is_pair, scm_is_null, scm_car, scm_cdr,
2953 scm_i_chase_pairs, SCM_I_A_PAT, SCM_I_D_PAT, etc, scm_caar,
2954 scm_cadr, etc): New.
2955 (SCM_NULLP, SCM_NNULLP): Moved to discouraged.h. Replaced all
2956 uses with scm_is_null.
5dd82006 2957
d2e53ed6
MV
2958 * eval.c (scm_eval, scm_apply, call_cxr_1): Use scm_i_chase_pairs
2959 instead of explicit code.
5dd82006 2960
5dfdf243
MV
29612004-09-22 Marius Vollmer <mvo@zagadka.de>
2962
b50c53e5
MV
2963 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
2964 Reworded logic a bit so that #f is returned immediately when s1 is
2965 too short to contain s2.
2966
5dfdf243 2967 * regex-posix.c (scm_regexp_exec): Convert string to
05d7cf89 2968 zero-terminated locale string before matching against it.
5dfdf243
MV
2969
2970 * strings.h, strings.c (scm_substring_read_only,
2971 scm_c_substring_read_only, scm_i_substring_read_only): New.
2972 (RO_STRING_TAG, IS_RO_STRING): New.
2973 (scm_i_string_writable_chars): Bail on read-only strings.
2974
2975 * read.c (scm_lreadr): use scm_c_substring_read_only for string
2976 literals, thus making them read-only as specified by R5RS.
2977
22ab5ba3
MV
29782004-09-22 Marius Vollmer <mvo@zagadka.de>
2979
2980 * eq.c (scm_equal_p): Allow smobs with different flags to be equal
2981 by testing for smobs before insisting on equal SCM_CELL_TYPES.
2982
2663421c
MV
29832004-09-21 Marius Vollmer <mvo@zagadka.de>
2984
0d83cb90
MV
2985 * numbers.h, numbers.c: Include <gmp.h> in numbers.h, not in
2986 numbers.c.
2987 (scm_to_mpz, scm_from_mpz): New.
9a5fa6e9 2988 Thanks to Andreas Vögele!
0d83cb90 2989
2663421c
MV
2990 * read.c (skip_scsh_block_comment): Recognize "!#" everywhere, not
2991 just on a line of its own.
2992
2993 * srfi-13.c (scm_string_any, scm_string_every,
2994 scm_string_tabulate, string_upcase_x, string_down_case_x,
2995 string_titlecase_x, string_reverse_x, scm_string_tokenize): Use
2996 size_t instead of int for indices into strings. Make sure that no
9a5fa6e9 2997 over- or underflow occurs. Thanks to Andreas Vögele!
2663421c
MV
2998 (scm_xsubstring, scm_string_xcopy_x): Use ints for 'extended'
2999 indices, which can also be negative.
3000
b00b73f9
MV
30012004-09-20 Marius Vollmer <mvo@zagadka.de>
3002
3003 * gc-mark.c (SCM_MARK_BACKING_STORE): Removed, it was unused.
3004
3005 * threads.c (scm_threads_mark_stacks): Call
3006 SCM_MARK_BACKING_STORE. Also, do not use stack_len local, it was
3007 only used once.
3008
adba74f3
HWN
30092004-09-13 Jan Nieuwenhuizen <janneke@gnu.org>
3010
05d7cf89 3011 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
adba74f3
HWN
3012 Bugfix: when subtracting unsigned values, make sure that result
3013 does not wrap.
3014
f6de32c8
KR
30152004-09-09 Kevin Ryde <user42@zip.com.au>
3016
3017 * filesys.c, stime.c (_POSIX_C_SOURCE): Use this only on hpux, it
3018 causes too many problems elsewhere (glibc, freebsd, mingw). Reported
9a5fa6e9 3019 by Andreas Vögele.
f6de32c8 3020
e548be5f
MV
30212004-09-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3022
eb8d0af1
MV
3023 * Makefile.am (EXTRA_libguile_la_SOURCES): Removed "alloca.c".
3024
e548be5f
MV
3025 * eq.c (real_eqv): Pretend that all NaNs are equal.
3026
3027 * numbers.c (scm_integer_expt): Do not accept inexact integers.
3028
e7acba81
MV
30292004-09-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3030
874fbad1
MV
3031 * srfi-13.c (scm_string_trim_right, scm_string_xcopy_x): Correctly
3032 use size_t for some locals instead of int.
3033
e7acba81
MV
3034 * read.c (scm_flush_ws): Detect "#!"-style comments here.
3035 (scm_lreadr): Abort on seeing "#!", which should no longer happen.
3036 (skip_scsh_block_comment): Use scm_input_error instead of
3037 scm_misc_error in case of EOF.
3038
5de12658
KR
30392004-09-07 Kevin Ryde <user42@zip.com.au>
3040
3041 * numbers.c (scm_integer_expt): Reject exponent +/-inf.
5de12658
KR
3042 Bug report by Bill Schottstaedt.
3043
3044 * ports.c (scm_getc, scm_lfwrite): Recognise \a \b and \r for port
3045 column.
3046 * ports.h (SCM_ZEROCOL, SCM_DECCOL): New macros.
3047
3048 * posix.c (scm_access): Update docstring per manual.
3049
3050 * posix.c (scm_nice): Correction to error detection. Reported by
3051 Matthias Koeppe.
3052
3053 * stime.c (scm_current_time, scm_gettimeofday, scm_strptime): Don't
3054 throw error before unlocking mutex with SCM_ALLOW_INTS.
3055
e227addf
KR
30562004-09-06 Kevin Ryde <user42@zip.com.au>
3057
3058 * stime.h (SCM_TIME_UNITS_PER_SECOND): Use sysconf(_SC_CLK_TCK) when
3059 available. This also gets around CLK_TCK being absent when
3060 _GNU_SOURCE and _POSIX_C_SOURCE are defined in stime.c.
3061
edea856c
SJ
30622004-09-03 Stefan Jahn <stefan@lkcc.org>
3063
3064 * threads.c (scm_threads_mark_stacks): Fixed local variable
3065 definitions.
3066
e7acba81 3067 * strings.c (scm_i_substring_copy, scm_string_append): Fixed
edea856c
SJ
3068 local variable definitions.
3069
3070 * stime.c (_POSIX_C_SOURCE): Do not define this item on
3071 MinGW32 because it conflicts with its pthread headers.
874fbad1
MV
3072 (scm_mktime): Consider the HAVE_STRUCT_TM_TM_ZONE define.
3073 (scm_strftime): Using scm_from_locale_string() instead of
edea856c
SJ
3074 scm_makfrom0str().
3075
874fbad1 3076 * posix.c (scm_putenv): Fixed typo in the !HAVE_UNSETENV
edea856c
SJ
3077 part.
3078
3079 * numbers.c (scm_init_numbers): Removed check_sanity() call
3080 inside GUILE_DEBUG. The function has been removed somewhen...
3081
3082 * filesys.c (_POSIX_C_SOURCE): Do not define this item on
3083 MinGW32 because it conflicts with its pthread headers.
3084
d9eb2d67
MV
30852004-08-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3086
3087 * strings.c (SCM_STRINGP): Accept all strings.
3088 (SCM_STRING_CHARS): Reject shared substrings here.
3089
3090 * script.c (scm_compile_shell_switches): Added 2003 and 2004 to
3091 the Copyright years.
3092
c495c342
KR
30932004-08-27 Kevin Ryde <user42@zip.com.au>
3094
3095 * socket.c (scm_fill_sockaddr): Use HAVE_STRUCT_SOCKADDR_SIN_LEN and
3096 HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN for sockaddr fields, SIN_LEN and
3097 SIN_LEN6 are not defined on all systems. Reported by Michael Tuexen.
3098
57aa5515
MV
30992004-08-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3100
3101 * strings.h, strings.c (scm_i_make_symbol): Added FLAGS parameter.
3102 * symbols.h, symbols.c (SCM_I_F_SYMBOL_UNINTERNED,
3103 scm_i_symbol_is_interned, scm_i_mem2symbol,
3104 scm_i_mem2uninternedsymbol): Use it to store uninternedness flag.
3105
ce25760f
MV
31062004-08-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3107
19ff6ffc
MV
3108 * srfi-13.c: First cut at thread-safeness and proper use of
3109 scm_i_string_chars et al. Copious scm_remember_upto_heres have
3110 been inserted. Made sure that no internal string pointer is used
3111 across a SCM_TICK or a possible GC.
3112
ce25760f
MV
3113 * script.c (scm_compile_shell_switches): Use
3114 scm_from_locale_string instead of scm_makfrom0str.
3115
3116 * srfi-13.c (scm_string_rindex): Export to Scheme, as it has
3117 always been.
3118
c5080b51
MV
31192004-08-25 Marius Vollmer <mvo@zagadka.de>
3120
3121 Moved SRFI-13 and SRFI-14 into the core, taking over the role of
3122 strop.c.
3123
3124 * srfi-13.c, srfi-13.h, srfi-14.c, srfi-14.h: New files.
3125 * strop.h, strop.c: Removed, they are now empty.
3126 * Makefile.am: Updated for new and removed files.
3127
3128 * symbols.h, symbols.c (scm_string_ci_to_symbol): Moved here, next
3129 to scm_string_to_symbol.
3130
3131 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
3132 scm_char_whitespace_p, scm_upper_case_p, scm_lower_case_p,
3133 scm_char_is_both_p): Use scm_char_set_contains_p with the proper
3134 charset instead of libc functions.
3135
3136 * strorder.c (scm_string_equal_p, scm_string_ci_equal_p,
3137 scm_string_less_p, scm_string_leq_p, scm_string_gr_p,
3138 scm_string_geq_p, scm_string_ci_less_p, scm_string_ci_leq_p,
3139 scm_string_ci_gr_p, scm_string_ci_geq_p): Use scm_string_eq, etc
3140 instead of explicit code.
3141
3142 * deprecated.c, load.c, posix.c, unif.c, symbols.c: Include
3143 "srfi-13.h" instead of "strop.h".
3144
3145 * init.c (scm_init_guile_1): Call scm_init_srfi_13 and
3146 scm_init_srfi_14. Do not call scm_init_strop.
3147
4b0d27f2
MV
31482004-08-24 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3149
3150 * numbers.c (scm_inf_p): Synced docstring back from manual.
3151
3ece39d6
MV
31522004-08-22 Marius Vollmer <mvo@zagadka.de>
3153
3154 * strings.c (get_str_buf_start): New helper function.
3155 (scm_i_substring, scm_i_substring_copy, scm_i_substring_shared,
3156 scm_i_string_char, scm_i_string_writable_chars): Use it.
3157 (scm_i_substring_copy): Make START argument optional for C
3158 callers, for upcoming SRFI-13 integration.
3159
31602004-08-21 Marius Vollmer <mvo@zagadka.de>
3161
3162 From Richard Todd, Thanks!
3163
3164 * script.c (scm_compile_shell_switches): added '-L' switch to add
3165 to the %load-path.
3166
5fa0939c
DH
31672004-08-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3168
3169 * eval.c (unmemoize_exprs): When dropping internal body markers
3170 from the output during unmemoization, also drop those that are not
3171 immediately at the beginning of a body.
3172
2146fdeb
MV
31732004-08-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3174
c1f54b3d
MV
3175 * eval.c (scm_lookupcar1): Report "Variable used before given a
3176 value" insetad of an "Unbound" one for variables that are found
3177 but still contain SCM_UNDEFINED.
2146fdeb
MV
3178
3179 * posix.c (scm_mkstemp): Correction to the correction, mkstemp
3180 expects a null-terminated string in the locale encoding, but
3181 scm_i_string_writable_chars doesn't give that. Fixed by letting
3182 mkstemp modify a locale version of the tmpl argument and copying
3183 the result back into tmpl.
3184
3185 * strop.c (scm_substring_move_x): Store into str2, not str1.
3186
d4f76919
KR
31872004-08-20 Kevin Ryde <user42@zip.com.au>
3188
3189 * posix.c (scm_mkstemp): Correction to new locale_string stuff, need
3190 to modify the input string.
3191
b5247a6b
MV
31922004-08-19 Marius Vollmer <mvo@zagadka.de>
3193
3194 * deprecated.c (SCM_SYMBOL_CHARS): Cast away const in return.
3195 (SCM_SYMBOL_LENGTH): It's scm_i_symbol_length, not
3196 scm_c_symbol_length.
3197
f26b9395
MV
31982004-08-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3199
3200 New string implementation, with copy-on-write strings and
3201 mutation-sharing substrings, and a new internal string API.
3202 Symbols can now share memory with strings.
3203
3204 * tags.h (scm_tc7_stringbuf): New tag.
3205
3206 * strings.h, strings.c: (scm_i_string_chars, scm_i_string_length,
3207 scm_i_string_writable_chars, scm_i_string_stop_writing): New, to
3208 replace SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH. Updated all
3209 uses.
3210 (scm_i_make_string, scm_c_make_string): New, to replace
3211 scm_allocate_string. Updated all uses.
3212 (SCM_STRINGP, SCM_STRING_CHARS, SCM_STRING_UCHARS,
3213 SCM_STRING_LENGTH): Deprecated.
3214 (scm_allocate_string, scm_take_str, scm_take0str, scm_mem2string,
3215 scm_str2string, scm_makfrom0str, scm_makfrom0str_opt):
3216 Discouraged. Replaced all uses with scm_from_locale_string or
3217 similar, as appropriate.
3218 (scm_c_string_length, scm_c_string_ref, scm_c_string_set_x,
3219 scm_c_substring, scm_c_substring_shared, scm_c_substring_copy,
3220 scm_substring_shared, scm_substring_copy): New.
3221
3222 * symbols.c, symbols.h (SCM_SYMBOLP, SCM_SYMBOL_FUNC,
3223 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS,
3224 SCM_SYMBOL_HASH, SCM_SYMBOL_INTERNED_P, scm_mem2symbol,
3225 scm_str2symbol, scm_mem2uninterned_symbol): Discouraged.
3226 (SCM_SYMBOL_LENGTH, SCM_SYMBOL_CHARS, scm_c_symbol2str):
3227 Deprecated.
3228 (SCM_MAKE_SYMBOL_TAG, SCM_SET_SYMBOL_LENGTH, SCM_SET_SYMBOL_CHARS,
3229 SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS): Removed.
3230 (scm_is_symbol, scm_from_locale_symbol, scm_from_locale_symboln):
3231 New, to replace scm_str2symbol and scm_mem2symbol, respectively.
3232 Updated all uses.
3233 (scm_gensym): Generate only the number suffix in the buffer, just
3234 string-append the prefix.
3235
3236 * error.c (scm_memory_error): Do not try to throw, just abort.
3237 Throwing will not work anyway.
3238
3239 * gh.h, gh-data.c (gh_set_substr): Made src const.
3240
3241 * ports.c (scm_i_mode_bits_n): New, for counted strings.
3242 (scm_mode_bits): Use it.
3243 (scm_c_port_for_each): Blocking GC does not seem to work, allocate
3244 a vector normally and fill that instead of consing a list with a
3245 blocked GC.
3246
3247 * read.c (scm_i_casei_streq): New, for counted strings.
3248
3249 * threads.c (gc_section_count): Removed, thread-sleeping can not
3250 be nested.
3251 (scm_i_thread_put_to_sleep): Call scm_i_leave_guile before locking
3252 admin mutex so that we can be put to sleep by other threads while
3253 blocking on that mutex. Lock all the heap mutex of all threads,
3254 including ourselves.
3255 (scm_i_thread_wake_up): Unlock all threads, including ourselves,
3256 call scm_i_enter_guile.
3257 (scm_thread_mark_stacks): Expect all threads to be suspended.
3258
3259 * gc.h, gc.c (scm_i_gc_admin_mutex): New, to protect
3260 scm_gc_mallocated, for now.
3261 (scm_init_storage): Initialize it.
3262 * gc-malloc.c (descrease_mtrigger, increase_mtrigger): Use it.
3263
3264 * gc-mark.c (scm_gc_mark_dependencies): Call scm_i_string_mark,
3265 scm_i_stringbuf_mark and scm_i_symbol_mark, as appropriate.
3266 * gc-card.c (scm_i_sweep_card): Call scm_i_string_free,
3267 scm_i_stringbuf_free and scm_i_symbol_free, as appropriate.
3268
cd505b38
MV
3269 * strop.c (scm_string_copy): Use scm_c_substring to get a
3270 copy-on-write string.
3271
8a807b26
KR
32722004-08-18 Kevin Ryde <user42@zip.com.au>
3273
3274 * arbiters.c (FETCH_STORE): New macro.
3275 (SCM_LOCK_VAL, SCM_UNLOCK_VAL): New constants.
3276 (SCM_LOCK_ARB, SCM_UNLOCK_ARB): Remove, effectively absorbed into
3277 scm_try_arbiter and scm_release_arbiter.
3278 (scm_try_arbiter, scm_release_arbiter): Use FETCH_STORE to get xchg
3279 for speed on i386, otherwise using mutex.
3280
3281 * eq.c (scm_equal_p): Remove real==fraction and fraction==real, they
3282 must be #f according to R5RS. (equal? follows eqv?, and for eqv? an
3283 exact and inexact is #f.)
3284
3285 * fports.c (fport_print): Use scm_ttyname instead of ttyname directly,
3286 to get thread safety of scm_ttyname.
3287
3288 * ports.c (ttyname): Remove prototype, unused.
3289
d6cd4c36 3290 * socket.c (scm_init_socket): Add SOCK_SEQPACKET and SOCK_RDM.
1f3cc0d3 3291 Reported by Michael Tuexen.
d6cd4c36 3292
fa0c0a4b
MV
32932004-08-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3294
3295 * load.c (scm_init_load_path): Do not pass NULL to
3296 scm_to_locale_string, which would happen when GUILE_LOAD_PATH is
3297 not set. Thanks to Bill Schottstaedt.
3298
70f7ee41
MV
32992004-08-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3300
3301 * socket.c (scm_inet_aton, scm_inet_pton): Convert SCM strings to
3302 locale strings instead of accessing their internals.
3303 (scm_recv, scm_send, scm_recvfrom, scm_sendto): Use
3304 SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH instead of
3305 SCM_STRING_CHARS and SCM_STRING_LENGTH.
3306
3307 * simpos.c (scm_system): Convert SCM strings to locale strings
3308 instead of accessing their internals.
3309
3310 * script.c (scm_compile_shell_switches): Convert version to locale
3311 string before printing it.
3312
3313 * rdelim.c (scm_read_delimited_x): Avoid
3314 SCM_VALIDATE_SUBSTRING_SPEC_COPY and use scm_from_size_t instead
3315 of scm_from_long for the returned number of read characters.
3316
3317 * ioext.c (scm_fdopen): Use scm_i_fdes_to_port together with
3318 scm_i_mode_bits to avoid accessing internals of SCM string from C.
3319
3320 * filesys.c (STRING_SYSCALL, STRING2_SYSCALL): New helper macros.
3321 Use them instead of SCM_SYSCALL when one or two strings need to be
3322 converted into locale strings.
3323 (my_rename): New, gathers platform dependent code for renaming.
3324 (scm_rename): Use it.
3325 (scm_readlink, scm_copy_file): Convert SCM strings to locale
3326 strings instead of accessing their internals.
3327 (scm_basename, scm_dirname): Use SCM_I_STRING_CHARS and
3328 SCM_I_STRING_LENGTH instead of SCM_STRING_CHARS and
3329 SCM_STRING_LENGTH.
3330
3331 * extensions.c (load_extension): Convert lib and init to locale
3332 strings instead of accessing the internals directly.
3333 (scm_c_load_extension): Use scm_from_locale_string instead of
3334 scm_makfrom0str.
3335
3336 * fports.h, fports.c (scm_i_fdes_to_port): New, like
3337 scm_fdes_to_port, but take mode bits directly instead of as a C
3338 string.
3339 (scm_i_fdes_to_port): Implement using above.
3340 (scm_open_file): Use scm_i_fdes_to_port together with
3341 scm_i_mode_bits to avoid accessing internals of SCM string from C.
3342 * vports.c (scm_make_soft_port): Use scm_i_fdes_to_port together
3343 with scm_i_mode_bits to avoid accessing internals of SCM string
3344 from C.
3345
3346 * ports.h (scm_i_mode_bits): New, same as scm_mode_bits but with a
3347 SCM string as argument.
3348
3349 * ports.c (scm_i_void_port): New, like scm_void_port but take mode
3350 bits directly instead of C string.
3351 (scm_void_port): Implement using above.
3352 (scm_sys_make_void_port): Use scm_i_void_port together with
3353 scm_i_mode_bits to avoid accessing internals of SCM string.
3354
3355 * strings.h, strings.c (scm_i_get_substring_spec): New.
3356
3357 * socket.c, rw.c, deprecated.h, validate.h
3358 (SCM_VALIDATE_STRING_COPY): Deprecated. Replaced all uses with
3359 SCM_VALIDATE_STRING plus SCM_I_STRING_CHARS or
3360 scm_to_locale_string, etc.
3361 (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Deprecated. Replaced as
3362 above, plus scm_i_get_substring_spec.
3363
3364 * regex-posix.c, read.c, random.c, ramap.c, print.c, numbers.c,
3365 hash.c, gc.c, gc-card.c, convert.i.c, backtrace.c, strop.c,
3366 strorder.c, strports.c, struct.c, symbols.c, unif.c, ports.c: Use
3367 SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_STRING_LENGTH
3368 instead of SCM_STRING_CHARS, SCM_STRING_UCHARS, and
3369 SCM_STRING_LENGTH, respectively. Also, replaced scm_return_first
3370 with more explicit scm_remember_upto_here_1, etc, or introduced
3371 them in the first place.
3372
3373 * posix.c (WITH_STRING): New helper macro. Use it where one
3374 locale string is needed for a short piece of code.
3375 (STRING_SYSCALL): New helper macro. Use it instead of SCM_SYSCALL
3376 when one locale string is needed.
3377 (scm_mkstemp): Convert tmpl to a locale string.
3378 (scm_putenv): Rewritten to use only C strings.
3379 (scm_setlocale, scm_crpt): Convert argument strings to locale
3380 strings.
3381
33822004-08-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3383
3384 * load.c (scm_primitive_load_path): Do not check for absolute
3385 filenames when scm_sys_search_load_path returns false, which will
3386 return absolute filenames unchanged.
3387
bb26cc2d
MV
33882004-08-11 Marius Vollmer <mvo@zagadka.de>
3389
3390 * gc.c, procprop.c (scm_init_storage, scm_stand_in_procs,
3391 scm_stand_in_proc): Use a hastable for scm_stand_in_procs instead
3392 of an alist. Thanks to Matthias Koeppe!
3393
02573e4c
MV
33942004-08-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3395
3396 * strings.h, deprecated.h (SCM_STRING_COERCE_0TERMINATION_X):
3397 Moved from string.h to deprecated.h.
3398
3399 * deprecated.c, deprecated.h (SCM_CHARS, SCM_LENGTH): Removed.
3400
f9751e86 3401 * strings.h, strings.c (SCM_MAKE_STRING_TAG): Renamed to
02573e4c
MV
3402 SCM_I_MAKE_STRING_TAG, changed all uses.
3403 (SCM_STRING_CHARS, SCM_STRING_UCHARS, SCM_STRING_LENGTH): Renamed
3404 to SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_LENGTH
3405 respectively. For a short time, the old names are still there as
3406 aliases. Not all uses have been changed yet, but the ones in
3407 strings.c have.
3408 (SCM_STRING_MAX_LEN): Do not hardcode to 24 bits, compute from
3409 SCM_T_BITS_MAX.
3410 (scm_is_string, scm_from_locale_string, scm_from_locale_stringn,
3411 scm_take_locale_string, scm_take_locale_stringn,
3412 scm_to_locale_string, scm_to_locale_stringn,
3413 scm_to_locale_stringbuf): New.
3414 (scm_c_string2str, scm_c_substring2str): Deprecated by moving to
3415 deprecated.[hc]. Implemented in terms of the new functions above.
3416 (scm_take_str, scm_take0str, scm_mem2string, scm_str2string,
3417 scm_makfrom0str): Reimplemented in terms of the new functions from
3418 above. They will be discouraged shortly.
3419 (scm_substring): Do not use scm_mem2string.
3420 (scm_i_allocate_string_pointers, scm_i_free_string_pointers): New,
3421 to replace similar code from posix.c, simpos.c, and dynl.c.
3422 (scm_string_append): Use memcpy instead of explicit loop. Do not
3423 use register keyword. Use plain 'char' instead of 'unsigned
3424 char'.
3425
3426 * strports.c (scm_mkstrport): Use SCM_I_STRING_UCHARS instead of
3427 SCM_STRING_UCHARS. Use SCM_I_STRINGP instead of SCM_STRINGP.
3428
3429 * strop.c (scm_i_index): Replaced SCM_STRINGP, SCM_STRING_CHARS,
3430 and SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
3431 SCM_I_STRING_LENGTH, respectively. Pass string object directly,
3432 not as a pointer. Use scm_remember_upto_here_1 to protect it.
3433
3434 * read.c (scm_input_error): Use a SCM value for 'fn', not a C
3435 string. This avoids a conversion round-trip.
3436
3437 * gh_data.c: Replaced SCM_STRINGP, SCM_STRING_CHARS, and
3438 SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
3439 SCM_I_STRING_LENGTH, respectively.
3440 (gh_scm2newstr): Implement in terms of scm_to_locale_string.
3441
3442 * environments.c: Instead calling scm_puts on the SCM_STRING_CHARS
3443 of a string, call scm_display on the string itself.
3444
3445 * dynwind.c, dynwind.h (scm_frame_free): New.
3446
3447 * stime.c, socket.c, simpos.c, procs.c, posix.c, ports.c,
3448 net_db.c, fports.c, filesys.c, eval.c, deprecation.c, dynl.c:
3449 Replaced uses of SCM_STRING_CHARS with proper uses of
3450 scm_to_locale_string. Replaced SCM_STRINGP with scm_is_string.
3451 Replaced scm_mem2string with scm_from_locale_string.
3452
3453 * simpos.c, posix.c (allocate_string_pointers, environ_list_to_c):
3454 Removed, replaced all uses with scm_i_allocate_string_pointers.
3455
3456 * load.h, load.c (scm_internal_parse_path): Removed.
3457 (scm_parse_path): Use scm_string_split to do the work.
3458 (scm_init_load_path): Use scm_parse_path instead of
3459 scm_internal_parse_path.
3460 (scm_search_path): Rewritten string handling part of the code in
3461 terms of scm_to_locale_stringbuf and so that it is thread safe.
3462
3463 * error.c (scm_error_scm): Throw directly instead of calling
3464 scm_error, this avoids the back and forth conversion of SUBR and
3465 MESSAGE and also plugs a memory leak.
3466 (scm_error): Call scm_error_scm.
3467
3468 * backtrace.c: Replaced SCM_STRINGP with scm_is_string.
3469 (display_header): Print FNAME when it is true, not
3470 merely when it is a string.
3471
3472 * strings.h (SCM_SET_STRING_LENGTH, SCM_SET_STRING_CHARS): Removed
3473 unceremoniously. They were unused by Guile itself, and external
3474 use should stop immediately.
3475
3476
409eb4e5
MV
34772004-08-10 Marius Vollmer <mvo@zagadka.de>
3478
3479 * numbers.h, number.c, deprecated.h, deprecated.c (scm_round,
3480 scm_truncate): Renamed to scm_c_round and scm_c_truncate;
3481 deprecated versions installed in deprecated.h and deprecated.c.
3482 Changed all uses.
3483
a00eaf19
RB
34842004-08-06 Rob Browning <rlb@defaultvalue.org>
3485
3486 * net_db.c (scm_resolv_error): don't cause an exception while
3487 trying to throw an exception -- call scm_misc_error with correct
3488 arguments. The previous arguments needed a format escape that
3489 wasn't in any of the format strings.
3490
bcb88c93
KR
34912004-08-06 Kevin Ryde <user42@zip.com.au>
3492
8f094b97
KR
3493 * ramap.c (scm_array_fill_x): For byvect char fill, force signed char
3494 so as not to depend on signedness of plain char. For byvect range
3495 check, throw out-of-range rather than wrong-type-arg.
3496
bcb88c93
KR
3497 * unif.c (scm_uniform_vector_ref, scm_array_set_x): For byvect, force
3498 signed byte range checks by using scm_to_schar and scm_from_schar,
3499 don't want to depend on signedness of C char.
3500
29e61124
KR
35012004-08-05 Kevin Ryde <user42@zip.com.au>
3502
3503 * arbiters.c (scm_try_arbiter): Use scm_i_misc_mutex instead of
3504 SCM_DEFER_INTS.
3505 (scm_release_arbiter): Use scm_i_misc_mutex so return value can be
3506 guaranteed if multiple threads compete to unlock.
3507 Update docstrings per doc/ref/api-scheduling.texi.
3508
99de794f
KR
3509 * filesys.c (scm_copy_file): Use fstat on the input fd rather than
3510 stat on the filename, to be certain a file rename can't mean we get
3511 info on one filesystem object but open another. This fstat usage is
3512 similar to Emacs copy-file.
3513
29e61124
KR
3514 * posix.c (scm_setgroups): Enhance docstring, per doc/ref/posix.texi.
3515
3516 * simpos.c (scm_system_star): Change scm_from_long to scm_from_int on
3517 SIGINT and SIGQUIT, since those values are ints.
3518
759aa8f9
MV
35192004-08-03 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3520
7241f213
MV
3521 * num2integral.i.c, num2float.i.c: Removed.
3522 * Makefile.am (noinst_HEADERS): Updated.
3523
f9656a9f
MV
3524 * numbers.h. numbers.c (scm_make_ratio): Renamed to
3525 scm_i_make_ratio and made static, replaced uses with scm_divide.
96d8c217
MV
3526 (scm_complex_p): New, export as "complex?" to Scheme.
3527 (scm_number_p): Export as "number?" to Scheme.
3528 (scm_is_complex, scm_is_number): New.
3529 (scm_c_make_rectangular, scm_c_make_polar): New.
3530 (scm_make_rectangular, scm_make_polar): Use above.
3531 (scm_c_real_part, scm_c_imag_part, scm_c_magnitude, scm_c_angle):
3532 New.
3533 (scm_make_complex): Discouraged by moving to discouraged.h and
3534 discouraged.c. Replaced all uses with scm_c_make_rectangular.
3535
759aa8f9
MV
3536 * discouraged.h, discouraged.c, numbers.c, numbers.h
3537 (scm_is_rational): New.
3538 (scm_i_short2big, scm_i_int2big, scm_i_uint2big, scm_i_size2big,
3539 scm_i_ptrdiff2big, scm_i_long_long2big, scm_i_ulong_long2big):
3540 Removed prototypes.
3541 (scm_make_real, scm_num2dbl, scm_float2num, scm_double2num):
3542 Discouraged by moving to discouraged.h and discouraged.c.
3543 Replaced all uses with scm_from_double.
3544 (scm_num2float, scm_num2double): Discouraged by moving prototype
3545 to discouraged.h and rewriting in terms of scm_to_double.
3546 Replaced all uses with scm_to_double.
3547 (scm_to_double): Do not implement in terms of scm_num2dbl, use
3548 explicit code.
3549 (scm_from_double): Do not implement in terms of scm_make_real, use
3550 explicit code.
3551
531bf3e6
MV
35522004-08-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3553
759aa8f9
MV
3554 * init.c (scm_init_guile_1): Call scm_i_init_discouraged.
3555
531bf3e6
MV
3556 * gen-scmconfig.h.in (SCM_I_GSC_ENABLE_DISCOURAGED): New.
3557 * gen-scmconfig.c (SCM_ENABLE_DISCOURAGED): Emit based on above.
3558
3559 * eval.c (SCM_EVALIM, SCM_EVALIM2, SCM_XEVAL, SCM_XEVALCAR):
3560 Renamed to SCM_I_* in order to avoid collisions with the versions
3561 defined in deprecated.h.
3562
3563 * discouraged.h, discouraged.c: New files.
3564
3565 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_EQ_P,
3566 SCM_NEGATE_BOOL, SCM_BOOL, SCM_BOOT_NOT): Promoted from being
3567 deprecated to being discouraged by moving to discouraged.h.
3568
3569 * numbers.h, numbers.c, discouraged.h, discouraged.c
3570 (scm_short2num, scm_ushort2num, scm_int2num, scm_uint2num,
3571 scm_long2num, scm_ulong2num, scm_size2num, scm_ptrdiff2num,
3572 scm_num2short, scm_num2ushort, scm_num2int, scm_num2uint,
3573 scm_num2long, scm_num2ulong, scm_num2size, scm_num2ptrdiff,
3574 scm_long_long2num, scm_ulong_long2num, scm_num2long_long,
3575 scm_num2ulong_long): Discouraged by moving to discouraged.h and
3576 discouraged.c and reimplementing in terms of scm_from_* and
3577 scm_to_*. Changed all uses to the new scm_from_* and scm_to_*
3578 functions.
3579
3580 * numbers.h, numbers.c: Removed GUILE_DEBUG code.
3581 (scm_i_short2big, scm_i_ushort2big, scm_i_int2big, scm_i_uint2big,
3582 scm_i_size2big, scm_i_ptrdiff2big): Removed.
3583 (scm_i_long2big, scm_i_ulong2big): New, explicit definitions.
3584 * conv-integer.i.c, conv-uinteger.i.c: Use them instead of
3585 explicit code.
3586
5ec82e96
KR
35872004-08-02 Kevin Ryde <user42@zip.com.au>
3588
3589 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Add comments about past
3590 and current usage and migration.
3591
58f28989
KR
35922004-07-31 Kevin Ryde <user42@zip.com.au>
3593
3594 * error.c (scm_strerror): Use scm_i_misc_mutex around strerror since
3595 it's not thread safe.
3596 (scm_syserror): Use scm_strerror rather than SCM_I_STRERROR, to take
3597 advantage of this.
3598 * fports.c (scm_open_file): Use scm_strerror likewise.
3599 * filesys.c (scm_stat, scm_lstat): Ditto.
3600
3601 * filesys.c (scm_copy_file): Avoid fd leak when destination file
3602 cannot be opened.
3603
3604 * symbols.c (scm_gensym): Use scm_i_misc_mutex around gensym_counter
3605 update, for thread safety.
3606 (gensym_counter): Move into scm_gensym which is its only user.
3607 (scm_init_symbols): No need to explicitly initialize gensym_counter.
3608
03696aab
MV
36092004-07-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3610
51fdb325
MV
3611 * numbers.h (scm_to_schar, scm_to_uchar, scm_to_char,
3612 scm_to_short, scm_to_ushort, scm_to_int, scm_to_uint, scm_to_long,
3613 scm_to_ulong, scm_to_long_long, scm_to_ulong_long, scm_to_intmax,
3614 scm_to_uintmax, scm_to_size_t, scm_to_ssize_t scm_from_schar,
3615 scm_from_uchar, scm_from_char, scm_from_short, scm_from_ushort,
3616 scm_from_int, scm_from_uint, scm_from_long, scm_from_ulong,
3617 scm_from_long_long, scm_from_ulong_long, scm_from_intmax,
3618 scm_from_uintmax, scm_from_size_t, scm_from_ssize_t): No longer
3619 defined in terms of scm_to_signed_integer, etc, but in terms of
3620 scm_to_int8, etc.
3621
3622 * gen-scmconfig.c (SCM_SIZEOF_INTMAX, SCM_SIZEOF_SIZE_T): New.
3623
03696aab
MV
3624 * gen-scmconfig.h.in: Removed SCM_I_GSC_*_LIMITS macros, they are
3625 no longer used.
3626
3627 * __scm.h (SCM_I_UTYPE_MAX, SCM_I_TYPE_MAX, SCM_I_TYPE_MIN,
3628 SCM_I_SIZE_MAX, SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX): New.
3629
3630 * __scm.h, gen-scmconfig.c (SCM_I_LLONG_MAX, SCM_I_LLONG_MIN,
3631 SCM_I_ULLONG_MAX, SCM_T_INT8_MIN, SCM_T_INT8_MAX, SCM_T_UINT8_MAX,
3632 SCM_T_INT16_MIN, SCM_T_INT16_MAX, SCM_T_UINT16_MAX,
3633 SCM_T_INT32_MIN, SCM_T_INT32_MAX, SCM_T_UINT32_MAX,
3634 SCM_T_INT64_MIN, SCM_T_INT64_MAX, SCM_T_UINT64_MAX,
3635 SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, SCM_T_UINTMAX_MAX): Moved
3636 definition into __scm.h, using new SCM_I_TYPE_MIN, etc.
3637
3638 * conv-integer.i.c, conv-uinteger.i.c: New files, used to generate
3639 the functions below.
3640
3641 * Makefile.am (noinst_HEADERS): Added conv-integer.i.c and
3642 conv-uinteger.i.c.
3643
3644 * numbers.c, numbers.h (scm_to_int8, scm_to_uint8, scm_to_int16,
3645 scm_to_uint16, scm_to_int32, scm_to_uint32, scm_to_int64,
3646 scm_to_uint64, scm_from_int8, scm_from_uint8, scm_from_int16,
3647 scm_from_uint16, scm_from_int32, scm_from_uint32, scm_from_int64,
3648 scm_from_uint64): Turned from macros into proper functions.
3649 (scm_to_signed_integer, scm_to_unsigned_integer,
3650 scm_from_signed_integer, scm_from_unsigned_integer): Generate via
3651 conv-integer.i.c and conv-uinteger.i.c, as well.
3652
3653 * number.h (scm_to_ssize_t, scm_to_size_t): Use the new
3654 SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX, and SCM_I_SIZE_MAX macros for
3655 the limits. Those are always defined.
3656
1f15779e
KR
36572004-07-29 Kevin Ryde <user42@zip.com.au>
3658
3659 * posix.c (scm_ttyname): Use scm_i_misc_mutex for thread safety.
3660
48360eb3
KR
36612004-07-28 Kevin Ryde <user42@zip.com.au>
3662
3663 * posix.c (scm_ctermid): Use an L_ctermid buf on the stack, for thread
3664 safety.
3665
c3f3c841
KR
3666 * unif.c (scm_array_set_x): For svect, use scm_num2short for
3667 consistency with other vector types and to get arg and func name into
3668 error message.
3669
c82f8ed6
MV
36702004-07-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3671
3672 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_BOOL):
3673 Reimplement using scm_is_false, scm_is_true, scm_is_bool, and
3674 scm_from_bool, respectively.
3675 (SCM_NINUMP): Added.
3676
3677 * tags.h, deprecated.h (SCM_EQ_P): Deprecated by moving it into
3678 deprecated.h. Replaced all uses with scm_is_eq.
3679
317b4c4a
KR
36802004-07-24 Kevin Ryde <user42@zip.com.au>
3681
3682 * threads.c, threads.h (scm_i_misc_mutex): New SCM_GLOBAL_MUTEX.
3683 * posix.c (scm_crypt): Use it to protect static data in crypt().
3684
e11e83f3
MV
36852004-07-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3686
3687 * deprecated.h, deprecated.c, numbers.h (SCM_INUMP, SCM_NINUMP,
c82f8ed6 3688 SCM_INUM): Deprecated by renaming them to SCM_I_INUMP,
e11e83f3
MV
3689 SCM_I_NINUMP and SCM_I_INUM, respectively and adding deprecated
3690 versions to deprecated.h and deprecated.c. Changed all uses to
3691 either use the SCM_I_ variants or scm_is_*, scm_to_*, or
3692 scm_from_*, as appropriate.
3693
3694 * dynwind.c (scm_i_dowinds): Removed unused code that would call
3695 the unexisting scm_cross_dynwind_binding_scope for inums on the
3696 windlist.
3697
a55c2b68
MV
36982004-07-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3699
3700 * socket.c (ipv6_net_to_num, scm_from_ipv6): Renamed
e11e83f3 3701 ipv6_net_to_num to scm_from_ipv6, for converting from an IPv6
a55c2b68
MV
3702 byte-wise address to a SCM integer. Changed all uses.
3703 (ipv6_num_to_net, scm_to_ipv6): Renamed ipv6_num_to_net to
3704 scm_to_ipv6 and added type and range checking, for converting from
3705 an IPv& byte-wise address to a SCM integer. Changed all uses.
3706 (bignum_in_ipv6_range_p, VALIDATE_INET6): Removed, their function
3707 is now done by scm_to_ipv6.
3708
3709 * numbers.c (scm_to_signed_integer, scm_to_unsigned_integer): dot
3710 not accept inexact integers.
3711
3712 * validate.h, deprecated.h (SCM_VALIDATE_INUM,
3713 SCM_VALIDATE_INUM_COPY, SCM_VALIDATE_BIGINT,
3714 SCM_VALIDATE_INUM_MIN, SCM_VALIDATE_INUM_MIN_COPY,
3715 SCM_VALIDATE_INUM_MIN_DEF_COPY,SCM_VALIDATE_INUM_DEF,
3716 SCM_VALIDATE_INUM_DEF_COPY, SCM_VALIDATE_INUM_RANGE,
3717 SCM_VALIDATE_INUM_RANGE_COPY): Deprecated because they make the
3718 fixnum/bignum distinction visible. Changed all uses to
3719 scm_to_size_t or similar.
3720
37212004-07-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3722
3723 * cpp_cnvt.awk: Use scm_from_int instead of SCM_MAKINUM.
3724
48a06bd5
KR
37252004-07-10 Kevin Ryde <user42@zip.com.au>
3726
3727 * hash.c (scm_hashq, scm_hashv, scm_hash): Restrict to size>=1 rather
3728 than size>=0, since 0<=hash<size cannot be satisfied for size==0, and
3729 such a size causes divide-by-zeros in scm_hasher.
3730
052fbfd9
KR
3731 * regex-posix.c (scm_make_regexp): Free rx on error, to avoid memory
3732 leak.
3733
43240c9c
MV
37342004-07-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3735
3736 * numbers.c (scm_is_signed_integer, scm_is_unsigned_integer):
3737 Rewritten using the same logic as scm_to_signed_integer and
3738 scm_to_unsigned_integer, respectively, which is better(tm). Also,
3739 use CHAR_BIT instead of hardcoding 8.
3740 (LLONG_MIN, LLONG_MAX, ULLONG_MAX): Removed and used
3741 SCM_I_LLONG_MIN etc. instead.
3742
3743 * numbers.h (SCM_MAKINUM, SCM_I_MAKINUM): Renamed SCM_MAKINUM to
3744 SCM_I_MAKINUM and changed all uses.
3745 * deprecated.h, deprecated.c (SCM_MAKINUM): Newly deprecated.
3746
a3de8e7b
MV
3747 * gen-scmconfig.c (SCM_I_LLONG_MIN, SCM_I_LLONG_MAX,
3748 SCM_I_ULLONG_MAX): Instead of hard-coding the numbers, compute
43240c9c
MV
3749 them by assuming twos-complement.
3750
c9eb03bb
MV
37512004-07-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3752
3753 * gen-scmconfig.h.in: Added all the new SCM_I_GSC_*_LIMITS that
3754 configure now produces.
3755 * gen-scmconfig.c: Use them to output SCM_T_INT8_MIN, etc
3756 definitions, giving the limits of the integer types defined by
3757 Guile. Also, output a hard coded SCM_I_LLONG_MIN, etc since
3758 LLONG_MIN or LONG_LONG_MIN is hard to get at.
3759
3760 * numbers.h (scm_to_short, scm_to_ushort): It's SHRT_MIN, etc, not
3761 SHORT_MIN.
3762 (scm_to_size_t): Use SIZE_MAX instead of cooking our own.
3763 (scm_to_long_long, scm_to_ulong_long, scm_to_int8, scm_to_uint8,
3764 scm_to_int16, scm_to_uint16, scm_to_int32, scm_to_uint32,
3765 scm_to_int64, scm_to_uint64, scm_to_intmax, scm_to_uintmax,
3766 scm_from_long_long, scm_from_ulong_long, scm_from_int8,
3767 scm_from_uint8, scm_from_int16, scm_from_uint16, scm_from_int32,
3768 scm_from_uint32, scm_from_int64, scm_from_uint64, scm_from_intmax,
3769 scm_from_uintmax): New.
3770
7888309b
MV
37712004-07-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3772
3773 * tags.h (scm_is_eq): New.
3774
3775 * deprecated.h, boolean.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOL,
3776 SCM_NEGATE_BOOL, SCM_BOOLP): Deprecated by moving into
3777 "deprecated.h". Replaced all uses with scm_is_false, scm_is_true,
3778 scm_from_bool, and scm_is_bool, respectively.
3779
3780 * boolean.h (scm_is_bool): Fix bug in prototype.
3781 (scm_from_bool): The argument is "x" not "f", stupid.
3782
3783 * boolean.c (scm_is_bool): Fix typo.
3784
3785 * numbers.h, numbers.c (scm_is_integer, scm_is_signed_integer,
3786 scm_is_unsigned_integer, scm_to_signed_integer,
3787 scm_to_unsigned_integer, scm_to_schar, scm_to_uchar, scm_to_char,
3788 scm_to_short, scm_to_ushort, scm_to_long, scm_to_ulong,
3789 scm_to_size_t, scm_to_ssize_t, scm_from_schar, scm_from_uchar,
3790 scm_from_char, scm_from_short, scm_from_ushort, scm_from_int,
3791 scm_from_uint, scm_from_long, scm_from_ulong, scm_from_size_t,
3792 scm_from_ssize_t, scm_is_real, scm_to_double, scm_from_double):
3793 New.
3794
800570a6
MV
37952004-07-05 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3796
3797 * boolean.h, boolean.c (scm_is_true, scm_is_false, scm_from_bool,
3798 scm_to_bool): New.
3799
9fcf3cbb
DH
38002004-06-27 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3801
3802 * backtrace.c (display_expression, display_frame): Call
3803 scm_i_unmemoize_expr for unmemoizing a memoized object holding a
3804 single memoized expression.
3805
3806 * debug.c (memoized_print): Don't try to unmemoize the memoized
3807 object, since we can't know whether it holds a single expression
3808 or a body.
3809
3810 (scm_mem_to_proc): Removed check for lambda expression, since it
3811 was moot anyway. Whoever uses these functions for debugging
3812 purposes should know what they do: Creating invalid memoized code
3813 will cause crashes, independent of whether this check is present
3814 or not.
3815
3816 (scm_proc_to_mem): Take the closure's code as it is and don't
3817 append a SCM_IM_LAMBDA isym. To allow easier debugging, the
3818 memoized code should not be modified.
3819
3820 * debug.[ch] (scm_unmemoize, scm_i_unmemoize_expr): Removed
3821 scm_unmemoize from public use, but made scm_i_unmemoize_expr
3822 available as a guile internal function instead. However,
3823 scm_i_unmemoize_expr will only work on memoized objects that hold
3824 a single memoized expression. It won't work with bodies.
3825
3826 * debug.c (scm_procedure_source), macros.c (macro_print), print.c
3827 (scm_iprin1): Call scm_i_unmemocopy_body for unmemoizing a body,
3828 i. e. a list of expressions.
3829
3830 * eval.c (unmemoize_exprs): Drop internal body markers from the
3831 output during unmemoization.
3832
3833 * eval.[ch] (scm_unmemocopy, scm_i_unmemocopy_expr,
3834 scm_i_unmemocopy_body): Removed scm_unmemocopy from public use,
3835 but made scm_i_unmemocopy_expr and scm_i_unmemocopy_body available
3836 as guile internal functions instead. scm_i_unmemoize_expr will
3837 only work on a single memoized expression, while
3838 scm_i_unmemocopy_body will only work on bodies.
3839
90df793f
DH
38402004-06-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3841
3842 * eval.c (unmemoize_exprs): Handle semi-memoized code.
3843
3844 (scm_cons_source, scm_primitive_eval): Prefer higher level
3845 predicate SCM_FALSEP over SCM_IMP.
3846
8048c00b
RB
38472004-06-15 Rob Browning <rlb@defaultvalue.org>
3848
3849 * script.c (scm_shell_usage): minor phrasing change.
3850
3851 * gc_os_dep.c: update ifdefery for macosx.
3852 (scm_get_stack_base): separate result initialization from
3853 declaration to slience warnings with macosx and hp-ux using gcc
9a5fa6e9 3854 3.3. Thanks to Andreas Vögele.
8048c00b 3855
d93294d4
HWN
38562004-06-13 Han-Wen Nienhuys <hanwen@xs4all.nl>
3857
3858 * eval.c (unmemoize_exprs): use SCM_CONSP for the loop condition.
3859
212e58ed
DH
38602004-06-06 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3861
3862 * list.[ch] (scm_i_finite_list_copy): New internal function to
3863 copy lists that are known to be finite (though not necessarily
3864 proper).
3865
3866 * debug.c (scm_procedure_source): Don't have scm_unmemocopy treat
3867 a closure's argument list like an expression of a body.
3868
3869 * eval.c (unmemoize_expression, unmemoize_exprs, unmemoize_and,
3870 unmemoize_begin, unmemoize_case, unmemoize_cond, unmemoize_delay,
3871 unmemoize_do, unmemoize_if, unmemoize_lambda, unmemoize_let,
3872 unmemoize_letrec, unmemoize_letstar, unmemoize_or,
3873 unmemoize_set_x, unmemoize_apply, unmemoize_atcall_cc,
3874 unmemoize_at_call_with_values, unmemoize_future, sym_atslot_ref,
3875 unmemoize_atslot_ref, sym_atslot_set_x, unmemoize_atslot_set_x,
3876 unmemoize_builtin_macro): New static functions and symbols.
3877
3878 (scm_unmemocopy): Rewritten in terms of the above. scm_unmemocopy
3879 now has a slightly different meaning: The memoized form that is
3880 receives as its argument is now interpreted as a sequence of
3881 expressions from a body.
3882
3883 (unmemocar, scm_unmemocar): Since the whole functionality of
3884 unmemocar and scm_unmemocar is not needed any more, scm_unmemocar
3885 has its old content back and is deprecated, while unmemocar has
3886 been removed.
3887
3888 (SCM_BIT7): Removed.
3889
3890 (CEVAL): For unmemoizing a single expression, call
3891 unmemoize_expression instead of scm_unmemocopy, which now expects
3892 a sequence of body expressions. Eliminated unnecessary empty
3893 environment frame when executing let* forms. Eliminated
3894 unmemoization step from evaluator.
3895
9ccea370
MV
38962004-06-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3897
3898 * eval.c (scm_macroexp, macroexp): Renamed scm_macroexp to
3899 macroexp and made static. Added new version of scm_macroexp that
3900 emits a deprecation warning and then calls macroexp.
3901 (scm_m_undefine): Issue deprecation warning.
3902
57d23e25
DH
39032004-05-30 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3904
3905 * eval.c (lookup_global_symbol, literal_p, try_macro_lookup):
3906 Modified to make set! work on symbols that represent syntactic
3907 keywords.
3908
141521ad
HWN
39092004-05-26 Han-Wen Nienhuys <hanwen@xs4all.nl>
3910
3911 * gc.h (SCM_CELL_OBJECT_LOC): use SCM_GC_CELL_OBJECT to prevent
3912 compound expression as lvalue errors.
3913
7c2f56a4
MV
39142004-05-24 Marius Vollmer <mvo@zagadka.de>
3915
3916 * dynwind.c (winder_mark): Use SCM_PACK to correctly convert the
3917 WINDER_DATA to a SCM.
3918
366ecaec
DH
39192004-05-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3920
3921 * goops.c (compute_getters_n_setters, create_standard_classes,
3922 scm_add_slot): Compute closures by calling scm_i_eval_x on a
3923 lambda expression rather than creating them with scm_closure.
3924
26ecfa39
DH
39252004-05-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3926
3927 * eval.c (s_macro_keyword, scm_m_set_x): Remove checking for
3928 misplaced syntactic keywords. This will not work unless guile's
3929 defmacro feature is deprecated.
3930
3931 (scm_m_case): Fixed a bug that caused the list of labels to grow
3932 with every case form.
3933
f865229a
KR
39342004-05-19 Kevin Ryde <user42@zip.com.au>
3935
3936 * numbers.c (scm_round_number): For inum and big, just return x. For
3937 real, use scm_round for 2^54-1 etc problems covered there.
3938
3939 * numbers.c (trunc): Remove #define to scm_truncate when the C library
3940 doesn't provide trunc. This was for when `truncate' was done as a
3941 scm_tc7_dsubr, no longer required.
3942
3943 * threads.c (scm_threads_mark_stacks) [SCM_STACK_GROWS_UP]: Correction
3944 to stack marking call, two parameters and no cast on t->base.
3945
63947c7a
MV
39462004-05-18 Marius Vollmer <mvo@zagadka.de>
3947
3948 * hashtab.c (rehash_after_gc): Bug fix: properly link the
3949 processed hashtables back into the weak_hashtables list. Thanks
3950 to Bill Schottstaedt!
3951
e7313a9d
DH
39522004-05-16 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3953
3954 * eval.c (unmemoize_quote): New static function.
3955
3956 (scm_m_quote, scm_m_atslot_ref, SCM_CEVAL): Changed the byte code
3957 representation of 'quote' and '@slot-ref' to an improper list.
3958 This reduces execution time, the number of cells used to hold the
3959 memoized code, and thus also reduces garbage collection time.
3960
3961 (scm_unmemocopy): Use unmemoize_quote for quote expressions.
3962
3963 (SCM_CEVAL): Changed macro handling to also work with macros that
3964 return improper lists. Added an assertion, that the code returned
3965 by a macro transformer will not lead to cycles in the memoized
3966 code.
3967
e5156567
DH
39682004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3969
3970 No functional change, just rearrangements of functions within the
3971 file.
3972
3973 * eval.c (scm_ilookup, scm_unbound_variable_key,
3974 error_unbound_variable, scm_lookupcar1, scm_lookupcar): Moved to
3975 the definitions used for execution, since that's where they will
3976 belong to later.
3977
651f07f8
DH
39782004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3979
3980 * numbers.h (SCM_SLOPPY_FRACTIONP): Removed. It was not used
3981 throughout guile, has not been part of an official release yet,
3982 and the concept of sloppy predicates has never been a good idea.
3983
3984 (SCM_FRACTION_NUMERATOR, SCM_FRACTION_DENOMINATOR,
3985 SCM_FRACTION_SET_NUMERATOR, SCM_FRACTION_SET_DENOMINATOR):
3986 Simplified.
3987
770e048f
DH
39882004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3989
3990 * throw.c (SETJBJMPBUF, SCM_SETJBDFRAME): Add cast to scm_t_bits
3991 to make explicit what happens.
3992
2ff08405
DH
39932004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3994
3995 * dynl.c (SET_DYNL_HANDLE): Add cast to scm_t_bits to make
3996 explicit what happens.
3997
3998 * guardians.c (TCONC_IN): Use SCM_SET_CELL_OBJECT_x rather than
3999 SCM_SET_CELL_WORD_x when writing scheme objets to cell elements.
4000
89afb9cd
MV
40012004-05-11 Marius Vollmer <mvo@zagadka.de>
4002
4003 * scmsigs.c (scm_sigaction_for_thread): Validate that the handler
4004 is indeed a procedure when it isn't a number.
4005
3d5ebfa9
MV
40062004-05-10 Marius Vollmer <mvo@zagadka.de>
4007
4008 Convert floating point numbers into strings with an arbitrary
4009 radix. Thanks to Richard Todd!
4010
4011 * numbers.c (FLOBUFLEN): Increase so that radix 2 strings will
4012 fit.
4013 (fx): Removed.
4014 (scm_dblprec, fx_per_radix, init_dblprec, init_fx_radix,
4015 number_chars): New, to support variable radices.
4016 (idbl2str): Use above instead of the old base-10 only tables.
4017 (iflo2str): Pass on new RADIX argument to idbl2str.
4018 (scm_number_to_string): Pass radix to iflo2str.
4019 (scm_print_real, scm_print_complex): Explicitly pass radix 10 to
4020 iflo2str.
4021 (scm_init_numbers): Call init_dblprec and init_fx_radix for all
4022 possible radices.
4023
3ae69bb4
KR
40242004-05-10 Kevin Ryde <user42@zip.com.au>
4025
4026 * numbers.c (scm_logbit_p): Correction to test above the end of an
4027 inum. Reported by Jan Konecny.
4028
27968825
MV
40292004-05-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4030
4031 * gc.h (scm_t_cell): Fields are now of type SCM instead of
4032 scm_t_bits. Updated all users.
4033 (SCM_GC_CARD_SIZE_MASK): Use SCM_GC_SIZEOF_CARD instead of
4034 duplicating the code.
4035 (SCM_CELL_OBJECT_LOC): New.
4036 (SCM_CARLOC, SCM_CDRLOC): Use it instead of SCM_CELL_WORD_LOC.
4037 (SCM_CELL_WORD_LOC): Moved to "deprecated.h".
4038
4039 * smob.h (SCM_SMOB_DATA_2, SCM_SMOB_DATA_3, SCM_SMOB_FLAGS,
4040 SCM_SET_SMOB_DATA_2, SCM_SET_SMOB_DATA_3, SCM_SET_SMOB_FLAGS,
4041 SCM_SMOB_OBJECT, SCM_SMOB_OBJECT_2, SCM_SMOB_OBJECT_3,
4042 SCM_SET_SMOB_OBJECT, SCM_SET_SMOB_OBJECT_2, SCM_SET_SMOB_OBJECT_3,
4043 SCM_SMOB_OBJECT_LOC, SCM_SMOB_OBJECT_2_LOC,
4044 SCM_SMOB_OBJECT_3_LOC): New.
4045 * smob.c (scm_i_set_smob_flags): New function.
4046
4047 * dynl.c, dynwind.c, eval.h, fluids.h, futures.h, hashtab.h,
4048 hooks.h, keywords.h, macros.h, macros.c, mallocs.c, mallocs.h,
4049 random.h, regex-posix.h, root.h, srcprop.h, srcprop.c, threads.h:
4050 Use SCM_SMOB_* instead of SCM_CELL_* as appropriate. Use
4051 SCM_SMOB_FLAGS and SCM_SET_SMOB_FLAGS instead of accessing the
4052 zeroth word directly. Use SCM_SMOB_PREDICATE as appropriate.
4053
4054 * numbers.h (SCM_I_BIG_MPZ): Use SCM_CELL_OBJECT_LOC instead of
4055 taking the address of SCM_CELL_WORD_1, the latter being no longer
4056 an lvalue.
4057
4058 * variable.h (SCM_VARIABLE_LOC): Use SCM_CELL_OBJECT_LOC instead
4059 of casting SCM_CELL_WORD_LOC.
4060
3cf17ef0
KR
40612004-05-02 Kevin Ryde <user42@zip.com.au>
4062
37026925 4063 * eval.c (scm_macroexp): Add prototype, since it's not in eval.h under
9a5fa6e9 4064 --disable-deprecated. Reported by Andreas Vögele.
37026925 4065
3cf17ef0 4066 * filesys.c (_POSIX_C_SOURCE): Define to 199506L to get readdir_r (in
9a5fa6e9 4067 particular on HP-UX). Reported by Andreas Vögele.
3cf17ef0 4068
c5854598
KR
4069 * list.c (varargs.h): Remove, leave just stdarg.h which is all the
4070 code has support for. Fixes building with AIX cc, which is ansi but
4071 doesn't define __STDC__. Reported by Keith Crane.
4072 (var_start): Remove macro, this variation no longer required.
4073 (scm_list_n): Use va_start directly.
4074
f26c1a32
KR
40752004-05-01 Kevin Ryde <user42@zip.com.au>
4076
4077 * continuations.c (scm_dynthrow): Use >= instead of SCM_PTR_GE which
9a5fa6e9 4078 is now gone. Reported by Andreas Vögele.
f26c1a32 4079
dfa6017e
KR
40802004-04-28 Kevin Ryde <user42@zip.com.au>
4081
4082 * backtrace.c (display_frame_expr), numbers.c (XDIGIT2UINT,
4083 mem2uinteger, mem2decimal_from_point, mem2ureal): Cast char to int for
4084 ctype.h tests, to avoid warnings from gcc on HP-UX about char as array
9a5fa6e9 4085 subscript. Reported by Andreas Vögele.
dfa6017e
KR
4086 Also cast through unsigned char to avoid passing negatives to those
4087 macros if input contains 8-bit values.
4088
4089 * num2integral.i.c (NUM2INTEGRAL): Under non-BIGMPZ_FITSP case,
4090 corrections to range check for signed numbers. Remove
4091 scm_remember_upto_here_1(num) from these checks, since num is used
4092 subsequently anyway.
4093
4094 * num2integral.i.c (NUM2INTEGRAL): Test BIGMPZ_FITSP with "!= 0" to
4095 avoid warning from gcc 3.4. Reported by Hyperdivision.
4096
4097 * numbers.c (scm_bit_extract): Use min instead of MIN.
4098 (MIN): Remove, this conflicts with similar macro defined by limits.h
9a5fa6e9 4099 on HP-UX. Reported by Andreas Vögele.
dfa6017e
KR
4100
4101 * stime.c (_POSIX_C_SOURCE): Define to 199506L to get gmtime_r (in
9a5fa6e9 4102 particular on HP-UX). Reported by Andreas Vögele.
dfa6017e 4103
a0d06a00 4104 * threads.c (scm_threads_mark_stacks): Correction sizet -> size_t.
9a5fa6e9 4105 Reported by Andreas Vögele.
a0d06a00 4106
dfa6017e
KR
4107 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 25*sizeof(long),
4108 for the benefit of hpux11 where pthread_mutex_t is 88 bytes. Reported
9a5fa6e9 4109 by Andreas Vögele.
dfa6017e 4110
36245b66
DH
41112004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4112
4113 * eval.c (s_macro_keyword): New static identifier.
4114
4115 (scm_m_define): Change order to first create binding and
4116 evaluating the expression afterwards.
4117
4118 (scm_m_set_x): Memoize complete set! expression. Only leave
4119 symbols if no binding exists at memoization time. Throw error if
4120 assigning to a syntactic keyword.
4121
4122 (lazy_memoize_variable): New function.
4123
4124 (CEVAL): When execution set!, perform lazy memoization if
4125 unmemoized symbol is detected.
4126
4127 * modules.c (module_variable): Return variables with unbound
4128 value.
4129
4130 * tags.h: Fix comment.
4131
4d81111e
KR
41322004-04-25 Kevin Ryde <user42@zip.com.au>
4133
da8bcb2f
KR
4134 * chars.c (scm_char_upcase, scm_char_downcase, scm_c_upcase,
4135 scm_c_downcase): Use ctype.h toupper and tolower. This will be useful
4136 in 8-bit locales, and ensures consistency with char-upper-case? and
4137 char-lower-case? which already use ctype.h.
4138 (scm_c_upcase_table, scm_c_downcase_table, scm_lowers, scm_uppers):
4139 Remove.
4140 * chars.c, chars.h, init.c (scm_tables_prehistory): Remove.
4141
4d81111e
KR
4142 * socket.c (VALIDATE_INET6): Correction to bignum_in_ipv6_range_p
4143 call. Reported by Hyperdivision.
4144
4145 * threads.c (scm_yield): Correction, actually call scm_thread_yield.
4146 Reported by Hyperdivision.
4147
4148 * unif.c (s_scm_make_uve): Remove unused local variable. Reported by
4149 Hyperdivision.
4150
7e6e6b37
DH
41512004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4152
4153 Hide the implementation of ilocs and isyms in eval.c.
4154
4155 * deprecated.h (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4156 SCM_ICDRP), eval.c (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4157 SCM_ICDRP), eval.h (SCM_ICDR, SCM_IFRINC, SCM_IFRAME, SCM_IDIST,
4158 SCM_ICDRP): Deprecated and added to deprecated.h. Moved from
4159 eval.h to eval.c.
4160
4161 * deprecated.c (scm_isymnames), deprecated.h (scm_isymnames,
4162 SCM_ISYMNUM, SCM_ISYMCHARS), eval.c (SCM_ISYMNUM, isymnames,
4163 scm_unmemocopy, CEVAL), print.c (scm_isymnames), tags.h
4164 (SCM_ISYMNUM, scm_isymnames, SCM_ISYMCHARS): Deprecated
4165 scm_isymnames, SCM_ISYMNUM and SCM_ISYMCHARS and added to
4166 deprecated.[hc]. Moved scm_isymnames from print.c to eval.c and
4167 renamed to isymnames. Moved SCM_ISYMNUM from tags.h to eval.c and
4168 renamed to ISYMNUM.
4169
4170 * eval.c (scm_i_print_iloc, scm_i_print_isym), eval.h
4171 (scm_i_print_iloc, scm_i_print_isym), print.c (scm_iprin1):
4172 Extracted printing of ilocs and isyms to guile internal functions
4173 scm_i_print_iloc, scm_i_print_isym of eval.c.
4174
caab294f
KR
41752004-04-22 Kevin Ryde <user42@zip.com.au>
4176
7aaf4758
KR
4177 * numbers.c (scm_bit_extract): Use SCM_SRS for signed right shift.
4178
caab294f
KR
4179 * numbers.c (scm_round): Test for x already an integer, to avoid bad
4180 rounding in x+0.5 when x is a big value already an integer. In
4181 certain hardware rounding cases x+0.5 can give an adjacent integer,
4182 leading to that as the result, when we really just wanted x itself.
4183
b1cb24ff
DH
41842004-04-19 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4185
4186 * eval.c (scm_unmemocopy): Fixed unmemoization of let*.
4187
4188 (deval_args, CEVAL): Minor improvements: Reduced variable scopes,
4189 added const qualifiers, cast intentionally unused expressions to
4190 void for emphasis, improved comment.
4191
5065b40d
DH
41922004-04-18 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4193
4194 * tags.h (scm_tags, scm_tc8_tags, scm_tc9_flag, scm_tc8_flag,
4195 scm_tc8_isym): Renamed scm_tags to scm_tc8_tags. Renamed
4196 scm_tc9_flag to scm_tc8_flag. Introduced new identifier
4197 scm_tc8_isym. Defined tc8-tags relative to scm_tc3_imm24.
4198 Defined the tc8-tag for flags to be 0x04, which will mean that
4199 SCM_BOOL_F will also have the value 0x04 instead of 0x013c. Due
4200 to the reduced number of bits and the simpler bit pattern for
4201 SCM_BOOL_F, certain machines may be able to use more efficient
4202 processor instructions to deal with SCM_BOOL_F.
4203
4204 (SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA): Removed. These have
4205 never been defined in a released version, thus no need to
4206 deprecate them.
4207
4208 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Flags now use tc8
4209 instead of tc9 tags.
4210
4211 (SCM_ISYMP, SCM_MAKISYM, SCM_ISYMNUM): Isyms now use tc8 instead
4212 of tc9 tags.
4213
4214 (SCM_MAKSPCSYM): Removed. It is almost impossible that user code
4215 could have used this definition.
4216
4217 (SCM_IM_AND, SCM_IM_BEGIN, SCM_IM_CASE, SCM_IM_COND, SCM_IM_DO,
4218 SCM_IM_IF, SCM_IM_LAMBDA, SCM_IM_LET, SCM_IM_LETSTAR,
4219 SCM_IM_LETREC, SCM_IM_OR, SCM_IM_QUOTE, SCM_IM_SET_X): Now encoded
4220 as isyms, as special isyms don't exist any more.
4221
9fa6c119
KR
42222004-04-18 Kevin Ryde <user42@zip.com.au>
4223
e08d2eee
KR
4224 * filesys.c (scm_readdir): Use readdir_r when available, for thread
4225 safety.
4226
9fa6c119
KR
4227 * numbers.c (scm_max, scm_min): For big/real, use SCM_SWAP rather than
4228 explicit swapping code.
4229
c9cdd396
KR
42302004-04-15 Kevin Ryde <user42@zip.com.au>
4231
4232 * cpp_sig_symbols.in: Add SIGSYS.
4233
4234 * list.c (scm_append_x): Use iterative style, to avoid non-tail
4235 recursion.
4236
4237 * numbers.c (scm_max, scm_min): For inum/frac, frac/inum, big/frac,
4238 frac/big and frac/frac, use scm_less_p for exact comparison.
4239
83ac9c59
KR
4240 * numbers.c (scm_gcd): For inum/big, use mpz_gcd_ui by sharing code
4241 with big/inum.
4242
84a4be9a
KR
4243 * numbers.c (xisinf): Add a comment about solaris 7 lacking isinf.
4244
84fad130
HWN
42452004-04-06 Han-Wen Nienhuys <hanwen@xs4all.nl>
4246
6b69393d
HWN
4247 * inline.h (scm_cell): use SCM_GC_CELL_WORD for checking tag.
4248
84fad130
HWN
4249 * chars.h (scm_init_chars): change scm_{upcase,downcase} to
4250 scm_c_{up,down}case.
4251 (SCM_MAKE_CHAR): add (unsigned char) cast. This prevents havoc
4252 when hi-bit ASCII is subjected to SCM_MAKE_CHAR().
4253
c3110a30
KR
42542004-04-06 Kevin Ryde <user42@zip.com.au>
4255
0b288f36
KR
4256 * numbers.c (scm_ash): Remove stray "}" in docstring.
4257
ea2508c8
KR
4258 * numbers.c (scm_make_ratio): For inum/bignum integer detection, use
4259 x==SCM_MOST_NEGATIVE_FIXNUM explicitly, for clarity and to avoid
4260 calling mpz_cmp_ui in most cases.
4261
c3110a30
KR
4262 * numbers.c (scm_quotient, scm_remainder): In inum/big, use mpz_cmp_ui
4263 for big == abs(most-negative-fixnum) special case.
4264 (abs_most_negative_fixnum): Remove, no longer used.
4265
4266 * scmsigs.c (scm_sigaction_for_thread): Correction to signum range
4267 test, avoids SCM_VECTOR_REF outside bounds of signal_handlers on
4268 calling (sigaction NSIG).
4269
4270 * simpos.c (scm_system_star): Fix execargv memory leak, merge parent
4271 and fork error cases to do this.
4272
dec40cd2
DH
42732004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4274
4275 * eval.c (CEVAL): Don't distinguish between short and long
4276 instructions when dispatching - just always dispatch on the
4277 instruction code, which is common for short and long instructions.
4278 Further, removed unnecessary goto statements and added comment.
4279
0e7bb795
DH
42802004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4281
4282 * eval.c (scm_unmemocopy): Don't distinguish between short and
4283 long instructions when dispatching - just always dispatch on the
4284 instruction code, which is common for short and long instructions.
4285 Further, removed unnecessary goto statements, fixed indentation
4286 and replaced SCM_IMP predicates by SCM_NULLP.
4287
f9986767
DH
42882004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4289
4290 * eval.c (scm_lookupcar1, CEVAL): Use SCM_ILOCP instead of
4291 comparison with SCM_ILOC00. In CEVAL, eliminate goto-label
4292 'checkmacro'.
4293
fbc42231
KR
42942004-03-31 Kevin Ryde <user42@zip.com.au>
4295
4296 * simpos.c: Include <signal.h> for SIG_IGN and friends.
4297
434f2f7a
DH
42982004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4299
4300 Introduce scm_debug_mode_p as a replacement for scm_debug_mode and
4301 SCM_DEBUGGINGP:
4302
4303 * debug.h (scm_debug_mode_p, scm_debug_mode, SCM_DEBUGGINGP),
4304 eval.c (scm_debug_mode_p): Deprecated scm_debug_mode and
4305 SCM_DEBUGGINGP. Provided scm_debug_mode_p instead, to have one
4306 single interface that also matches the naming conventions.
4307 Probably scm_debug_mode_p should be part of the private interface
4308 anyway.
4309
4310 * debug.h (scm_debug_mode_p), backtrace.c (display_error_body),
4311 eval.c (SCM_APPLY, scm_trampoline_0, scm_trampoline_1,
4312 scm_trampoline_2): Change uses of scm_debug_mode or SCM_DEBUGGINGP
4313 to scm_debug_mode_p.
4314
4315
4316 Deprecate direct access to scm_ceval, scm_deval and scm_ceval_ptr:
4317
4318 * eval.h (scm_ceval, scm_deval, scm_ceval_ptr), debug.h
4319 (scm_ceval_ptr): Deprecated. Moved declaration of scm_ceval_ptr
4320 from debug.h to eval.h.
4321
4322 * debug.h (SCM_RESET_DEBUG_MODE): Don't access scm_ceval_ptr any
4323 more, just leave it with setting scm_debug_mode_p, which is
4324 equivalent for practical purposes.
4325
4326 * deprecated.h (SCM_XEVAL, SCM_XEVALCAR): Call scm_i_eval_x
4327 instead of *scm_ceval_ptr. Leave all evaluating to scm_i_eval_x.
4328
4329 * gdbint.c (gdb_eval): Call scm_i_eval_x instead of scm_ceval.
4330
4331 * eval.c (ceval, deval, scm_ceval, scm_deval): Made scm_ceval
4332 static and renamed it to ceval throughout. Provide a new exported
4333 but deprecated function scm_ceval as a wrapper for backwards
4334 compatibility. The same is done for the deval/scm_deval pair of
4335 functions.
4336
4337 * eval.c (CEVAL, SCM_CEVAL): Renamed SCM_CEVAL to CEVAL
4338 throughout. Defined CEVAL to ceval or deval, based on compilation
4339 phase.
4340
4341 * eval.c (SCM_XEVAL, SCM_XEVALCAR): Dispatch on scm_debug_mode_p
4342 to ceval and deval instead of calling *scm_ceval_ptr.
4343
4344 * eval.c (dispatching_eval): New deprecated static function.
4345
4346 * eval.c (scm_ceval_ptr): Initialized to dispatching_eval in order
4347 to emulate its old behaviour as closely as possible.
4348
4349
4350 Change the evaluator such that only expressions for which pair? is
4351 true are passed to CEVAL, and such that all other expressions are
4352 evaluated outside of CEVAL:
4353
4354 * eval.c (EVAL): New, provided in analogy to EVALCAR. Evaluate an
4355 expression that is assumed to be memoized already. All but
4356 expressions of the form '(<form> <form> ...)' are evaluated inline
4357 without calling an evaluator.
4358
4359 * eval.c (SCM_XEVAL, SCM_XEVALCAR, EVALCAR): Evaluate all but
4360 expressions of the form '(<form> <form> ...)' inline without
4361 calling an evaluator.
4362
4363 * eval.c (scm_i_eval_x, scm_i_eval, scm_ceval, scm_deval): Handle
4364 the special case of unmemoized symbols passed on the top level.
4365
4366 * eval.c (CEVAL): Change calls to CEVAL to EVAL, except where it
4367 is known that the expression passed to CEVAL is of the form
4368 '(<form> <form> ...)'. Remove handling of the tc7-objects, since
4369 now it is known that the input expression of CEVAL is a pair.
4370
43712004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5fb64383
DH
4372
4373 * eval.c (is_self_quoting_p): New static function.
4374
4375 (scm_m_quote): Use is_self_quoting_p.
4376
4377 (copy_tree): Corrected typo in comment.
4378
702551e6
HWN
43792004-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
4380
bfefbf18
HWN
4381 * eval.c (s_scm_copy_tree): idem.
4382
4383 * list.c (s_scm_filter): remove "pointer" from doc string.
4384
702551e6
HWN
4385 * gc.h (SCM_GC_CELL_TYPE): SCM_GC_CELL_TYPE uses SCM_GC_CELL_OBJECT.
4386
4387 * goops.h (SCM_NUMBER_OF_SLOTS): don't SCM_UNPACK the result.
4388
4389 * backtrace.c ("display_backtrace_body"): SCM_PACK before SCM_EQ_P
4390 (display_frame): idem.
4391 (display_backtrace_file_and_line): idem.
4392
4393 * tags.h (SCM_UNPACK): stricter typechecking on SCM_UNPACK
4394 arguments.
4395
3cd23214
KR
43962004-03-26 Kevin Ryde <user42@zip.com.au>
4397
88a7ae1f
KR
4398 * filesys.c (scm_getcwd, scm_readlink): Avoid memory leak on errors.
4399
3cd23214
KR
4400 * numbers.c (scm_modulo): For inum/big and big/big, remove test of
4401 big==0 since that never occurs.
4402
4403 * numbers.c, numbers.h (scm_modulo_expt): Renamed from
4404 scm_modular_expt, matching scheme level name `modulo-expt'.
4405
4406 * numbers.c (scm_modular_expt): Return a negative remainder for a
4407 negative divisor, the same as `modulo' does.
4408
44092004-03-26 Eric Hanchrow <offby1@blarg.net>
4410
4411 * numbers.c, numbers.h (scm_modular_expt): New function.
4412
2926035a
KR
44132004-03-25 Kevin Ryde <user42@zip.com.au>
4414
4415 * numbers.c (scm_min, scm_max): Correction to big/real and real/big,
4416 return inexact as required by r5rs.
4417
62360b89
DH
44182004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4419
4420 * eval.c: Separated some definitions relevant for execution from
4421 the memoization part of the file.
4422
4423 (copy_tree): New static function
4424
4425 (scm_copy_tree): Rewritten to fix two kinds or bugs: First, cyclic
4426 structures are detected now and will lead to an exception instead
4427 of forcing guile to run in an endless loop, using up all the
4428 system's memory. Second, arrays in the cdr of an improper list
4429 are now copied. See the new test cases in eval.test.
4430
44312004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
b28f5b3c
DH
4432
4433 * posix.c (scm_gethostname): Make sure len is initialised before
4434 it is used. Restructured to (hopefully) represent possible
4435 configurations more clearly in the code. Added unwind handler.
4436
3bd3bae8
KR
44372004-03-23 Kevin Ryde <user42@zip.com.au>
4438
4439 * posix.c (scm_gethostname): Use sysconf(_SC_HOST_NAME_MAX) and/or
4440 MAXHOSTNAMELEN when available.
4441
254bf78d
MV
44422004-03-21 Marius Vollmer <mvo@zagadka.de>
4443
4444 * read.c (skip_scsh_block_comment): Also recognize '\r' as a line
4445 terminator. Rewritten the logic as a state machine, I must have
4446 been doing too much VHDL lately...
4447
4448 * eval.c (scm_ceval, scm_deval): Explicitely evaluate ports to
4449 themselves. Thanks to Han-Wen Nienhuys!
4450
4451 * list.c: Changed docstrings so that they no longer talk about
4452 returning 'pointers' to something.
4453
009c34a2
HWN
44542004-03-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
4455
4456 * gc.c: remove set_debug_cell_accesses! when
4457 SCM_DEBUG_CELL_ACCESSES is not defined. Scheme source code should
4458 use (if (defined? 'set-debug-cell-accesses!) .. ) to switch on
4459 debugging conditionally.
4460
54733c95
KR
44612004-03-21 Kevin Ryde <user42@zip.com.au>
4462
4463 * stime.c (scm_gmtime): Use gmtime_r when available, for thread safety.
4464
bbaf8747
KR
44652004-03-20 Kevin Ryde <user42@zip.com.au>
4466
4467 * posix.c (scm_gethostname): Preserve errno across free() call.
4468
726f82e7
HWN
44692004-03-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
4470
4471 * gc-card.c (sweep_card): use SCM_GC_SET_CELL_WORD for setting
4472 free cells.
4473
e1350d6a
KR
44742004-03-14 Kevin Ryde <user42@zip.com.au>
4475
4476 * stime.c: Define _GNU_SOURCE for strptime prototype from glibc.
4477 (strptime): Use HAVE_DECL_STRPTIME for when to give own prototype.
4478
62055253
KR
44792004-03-07 Kevin Ryde <user42@zip.com.au>
4480
4481 * stime.c (scm_gmtime): Return bd_time->tm_zone when available, rather
4482 than "GMT" always.
4483 (filltime): Make zname parameter "const".
4484
92e64b87
MD
44852004-03-03 Mikael Djurfeldt <mdj@chunk.mit.edu>
4486
4487 * threads.c, threads.h (scm_c_scm2thread): New function.
4488
004ad931
KR
44892004-02-29 Kevin Ryde <user42@zip.com.au>
4490
4491 * numbers.c (guile_ieee_init): Use C99 INFINITY and NAN when
4492 available. Test HAVE_DINFINITY and HAVE_DQNAN for those globals, in
4493 particular don't assume "defined (__alpha__) && ! defined (linux)"
4494 means OSF. Remove "SCO" code, which was not really SCO specific and
4495 which John W. Eaton advises should be long past being needed.
4496
4497 * posix.c (scm_execl, scm_execlp, scm_execle): Avoid memory leak under
4498 error throw.
4499
72ea45ac
KR
45002004-02-24 Kevin Ryde <user42@zip.com.au>
4501
4502 * posix.c (scm_cuserid): Use a private result buffer, for thread safe.
4503
2af0602e
KR
45042004-02-22 Kevin Ryde <user42@zip.com.au>
4505
4506 * numbers.c (scm_max, scm_min): For one arg, dispatch to generic for
4507 complex, same as for two args. (Handle only inum, big, real, frac).
4508
b114eafe
KR
45092004-02-21 Kevin Ryde <user42@zip.com.au>
4510
4511 * posix.c (scm_crypt): Use new HAVE_CRYPT.
4512 (<crypt.h>): Remove HAVE_LIBCRYPT condition.
db752bb5 4513 Reported by Andreas Voegele.
b114eafe 4514
1e55d288
NJ
45152004-02-20 Neil Jerram <neil@ossau.uklinux.net>
4516
4517 * list.c (scm_list_n): Add #if SCM_DEBUG_CELL_ACCESSES_P around
4518 validation.
4519
4520 * read.c (scm_lreadparen): Removed.
4521 (scm_lreadparen1): Renamed scm_i_lreadparen.
4522
eb741d98
HWN
45232004-02-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
4524
4525 * list.c (scm_list_n): validate non-immediate arguments;
4526 this will catch forgotten a SCM_UNDEFINED.
4527
4e28ba5e
MV
45282004-02-18 Marius Vollmer <mvo@zagadka.de>
4529
4530 * gc.h (scm_gc_cells_collected): Removed duplicated declaration.
4531 Thanks to Bill Schottstaedt!
4532
4533 * socket.h (scm_gethost): Removed prototype it is already in
4534 "net_db.h". Thanks to Bill Schottstaedt!
4535
ef861ead
KR
45362004-02-18 Kevin Ryde <user42@zip.com.au>
4537
4538 * num2integral.i.c (INTEGRAL2BIG): WORDS_BIGENDIAN not right for word
4539 order parameter to mpz_import, in fact with just one word there's no
4540 order to worry about at all.
4541
4542 * numbers.c (scm_num_eq_p): For real==frac, complex==frac, frac==real
4543 and frac==complex, make an exact comparison rather than converting
4544 with fraction2double.
4545
4546 * posix.c, putenv.c, stime.c (environ): Use _NSGetEnviron in Darwin
4547 shared library, since environ is not directly available there.
4548
4549 * script.c (scm_shell_usage): Print to stdout for --help, per GNU
4550 standard.
4551
4552 * stime.c (scm_localtime, scm_gmtime, scm_mktime): Provide a default
4553 errno EINVAL in case localtime and gmtime don't set it.
4554 (scm_mktime, scm_strptime): Forcibly use errno EINVAL for our
4555 SCM_SYSERROR, since mktime and strptime generally don't set errno.
4556
ae43d08e 45572004-02-16 Kevin Ryde <kevin@swox.se>
292dfa7f 4558
c9ea6462
KR
4559 * gc-malloc.c (scm_done_malloc, scm_done_free): Allow negative sizes,
4560 which were permitted in the past for these.
4561
292dfa7f
KR
4562 * num2float.i.c (NUM2FLOAT): Expand isfinite to !xisinf, as per
4563 previous change to numbers.c.
4564
ae43d08e
KR
4565 * script.c (scm_shell_usage): Print bug-guile email address, as per
4566 GNU standard. Reported by Han-Wen Nienhuys.
4567
711a9fd7
MD
45682004-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
4569
4570 * unif.c (scm_make_uve): Removed local variable and simplified
4571 code in order to avoid compiler used uninitialized warnings.
4572
4573 * hashtab.c, hashtab.h (scm_hash_map_to_list): Renamed from
4574 scm_hash_map.
4575 (scm_hash_fold): Use scm_call_3 directly in the call to
4576 scm_internal_hash_fold instead of going via fold_proc (which is
4577 now removed).
4578 (scm_hash_for_each): Use a trampoline +
4579 scm_internal_hash_for_each_handle.
4580 (scm_internal_hash_for_each_handle, scm_hash_for_each_handle): New
4581 functions.
4582
3da7f6b2
KR
45832004-02-12 Kevin Ryde <user42@zip.com.au>
4584
344a212f
KR
4585 * ports.c (scm_port_line): In docstring, note first line is 0.
4586 (scm_set_port_line_x): In docstring, note first line is 0.
4587 (scm_port_column): In docstring, there's no default to current input
4588 port, and remove shared port-line @defun.
4589 (scm_set_port_column_x): In docstring, there's no default to current
4590 input port, note first column is 0, remove shared set-port-line!
4591 @defun.
4592
3da7f6b2
KR
4593 * ramap.c (scm_array_fill_x): For fvect and dvect, use scm_num2dbl to
4594 convert args the same way that array-set! does.
4595
4596 * unif.c (scm_make_uve, scm_array_p): Allow fraction 1/3 as prototype
4597 for dvect.
4598 (scm_array_p): Add missing "break"s in switch, fix llvect test look
4599 for "l" not "s", fix dvect to be false for singp(prot) since such a
4600 value is for fvect.
4601 (scm_array_prototype): Return 1/3 for dvect, rather than 0.33..33.
88531a74
KR
4602 (exactly_one_third): New variable.
4603 (scm_init_unif): Initialize it.
3da7f6b2 4604
cd21f5eb
NJ
46052004-02-10 Neil Jerram <neil@ossau.uklinux.net>
4606
4607 * read.c (scm_read_opts): Change `escaped-parens' to
4608 `elisp-strings'.
4609
16353acc
NJ
46102004-02-08 Neil Jerram <neil@ossau.uklinux.net>
4611
4612 * read.c (scm_read_opts): New opts `elisp-vectors' and
4613 `escaped-parens'.
4614 (s_vector): New.
4615 (scm_lreadr): Use scm_lreadparen1 instead of scm_lreadparen. Make
4616 handling of elisp vector syntax dependent on SCM_ENABLE_ELISP and
4617 `elisp-vectors' option instead of SCM_ELISP_READ_EXTENSIONS.
4618 Allow "\(" and "\)" in strings when SCM_ENABLE_ELISP defined and
4619 `escaped-parens' option set.
4620 (scm_read_token): If elisp vector syntax active, disallow [ and ]
4621 in tokens.
4622 (scm_lreadparen): Rewrite as interface to scm_lreadparen1.
4623 (scm_lreadparen1): New.
4624
4625 * read.h: Remove conditionally compiled last arg to
4626 scm_lreadparen.
4627 (SCM_ELISP_VECTORS_P, SCM_ESCAPED_PARENS_P): New.
4628
f62b9dff
HWN
46292004-01-23 Han-Wen Nienhuys <hanwen@xs4all.nl>
4630
4631 * eval.c (m_expand_body): remove stray variable new_body.
4632
ef5b6b61
MV
46332004-01-22 Marius Vollmer <mvo@zagadka.de>
4634
4635 * eval.c (m_expand_body): Rewrite the expression in place (by
4636 overwriting FORMS) also when a letrec is constructed, not only
4637 when no definitions are found. Do not return rewritten expression
4638 to emphasize the in-place rewriting. Changed all users.
4639
7eec4c37
HWN
46402004-01-19 Han-Wen Nienhuys <hanwen@xs4all.nl>
4641
4642 * gc.c: add protected_object_count, a number that is dumped from
4643 gc_stats()
4644
25ffbdac
MV
46452004-01-11 Marius Vollmer <mvo@zagadka.de>
4646
4647 * dynwind.h, dynwind.c (scm_frame_unwind,
4648 scm_frame_unwind_handler): Renamed and changed all uses.
4649 (scm_frame_rewind, scm_frame_rewind_handler): Likewise.
4650
08568c95
KR
46512004-01-11 Kevin Ryde <user42@zip.com.au>
4652
4653 * unif.c (scm_bit_count, scm_bit_position, s_scm_bit_set_star_x,
4654 s_scm_bit_count_star, s_scm_bit_invert_x): Clarify docstrings, as per
4655 changes made to scheme-compound.texi.
4656
5565749c
MV
46572004-01-10 Marius Vollmer <mvo@zagadka.de>
4658
25ffbdac
MV
4659 * print.c (scm_print_symbol_name): Handle #{`foo}#, #{,foo}#,
4660 #{.}#, and all numeric strings specially. Thanks to Paul Jarc!
4661
4662 * guile-snarf.in: Use mkdir to create a unique temporary directory
4663 that we can safely use. Thanks to Stefan Nordhausen!
5565749c 4664
fc6bb283
MV
46652004-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4666
7ebccde8
MV
4667 * dynwind.h, dynwind.c (scm_i_dowinds): Removed 'explicit'
4668 argument since it is always zero now. Changed all callers.
4669 Removed code for handling fluids.
96e3b2f8
MV
4670
4671 * fluids.c (scm_c_with_fluids): Use frames instead of adding to
4672 the wind chain explicitely. Use scm_c_with_fluid for the common
4673 case of only one fluid.
4674 (scm_with_fluid): New.
4675 (scm_c_with_fluid): Use frames instead of scm_c_with_fluids.
4676
fc6bb283 4677 * fluids.h, fluids.c (scm_frame_fluid): New.
96e3b2f8
MV
4678 (scm_with_fluid): New.
4679 (scm_i_swap_fluids, scm_i_swap_fluids_reverse): Removed.
fc6bb283
MV
4680
4681 * dynwind.c (scm_frame_end): Do not use scm_i_dowinds. Instead,
4682 do the unwinding directly. It is simple enough.
4683
4684 * dynwind.h, dynwind.c: Did the following renamings:
4685 scm_begin_frame -> scm_frame_begin,
4686 scm_end_frame -> scm_frame_end,
4687 scm_on_unwind -> scm_frame_unwind,
4688 scm_on_rewind -> scm_frame_rewind,
4689 scm_on_unwind_with_scm -> scm_frame_unwind_with_scm,
4690 scm_on_rewind_with_scm -> scm_frame_rewind_with_scm.
4691 Changed all uses.
4692
4693 * aync.h, async.c: Did the follwing renamings:
4694 scm_with_blocked_asyncs -> scm_frame_block_asyncs,
4695 scm_with_unblocked_asyncs -> scm_frame_unblock_asyncs.
4696 Changed all uses.
4697
4698 * ports.h, ports.c: Did the follwing renamings:
4699 scm_with_current_input_port -> scm_frame_current_input_port,
4700 scm_with_current_output_port -> scm_frame_current_output_port,
4701 scm_with_current_error_port -> scm_frame_current_error_port.
4702 Changed all uses.
4703
298ab996
KR
47042004-01-07 Kevin Ryde <user42@zip.com.au>
4705
4706 * numbers.c (s_bignum): Remove, not used since gmp bignums.
4707 Reported by Richard Todd.
4708
ba40113e
KR
4709 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 12*sizeof(long),
4710 for the benefit of powerpc-apple-darwin5.5. Reported by Richard Todd.
4711
298ab996
KR
4712 * unif.c (scm_aind): Test SCM_CONSP rather than !SCM_NULLP while
4713 traversing the args list, fixes segv if an improper list is given.
4714 Reported by Rouben Rostamian.
4715
aacff585
MV
47162004-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4717
4718 * ports.c (swap_ports, scm_with_current_foo_port): Do not allocate
4719 swap_data on stack, use a 'malloc obj'.
4720
4721 * fluids.h, fluids.c (scm_make_initial_fluids, scm_copy_fluids,
4722 scm_swap_fluids, scm_swap_fluids_reverse): Renamed to
4723 scm_i_... since they are internal. Changed all uses.
4724
4725 * dynwind.c (frame_print): Removed, use the default printer.
4726 (WINDER_F_MARK, WINDER_MARK_P, winder_mark): New.
4727 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New. Use above
4728 to protect SCM values.
4729
4730 * dynwind.h (SCM_F_WIND_EXPLICITELY,
4731 SCM_F_WIND_EXPLICITLY): It's "explicitly" not "explicitely", damn.
4732 Changed all uses.
4733 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New.
4734
49c00ecc
MV
47352004-01-05 Marius Vollmer <mvo@zagadka.de>
4736
4737 * ports.h, ports.c (scm_with_current_input_port,
4738 scm_with_current_output_port, scm_with_current_error_port): New.
4739
4740 * async.h, async.c (scm_with_blocked_asyncs,
4741 scm_with_unblocked_asyncs): New.
4742
dab514a8
MV
47432004-01-03 Marius Vollmer <mvo@zagadka.de>
4744
4745 * dynwind.h, scm_dynwind.c (scm_t_frame_flags, scm_t_wind_flags,
4746 scm_begin_frame, scm_end_frame, scm_on_unwind, scm_on_rewind):
4747 New.
4748 (scm_dowinds, scm_i_dowinds): scm_dowinds has been renamed to
4749 scm_i_dowinds and extended to handle frames and to invoke a 'turn'
4750 function when the outermost wind point has been reached. The
4751 latter is used to copy a continuation stack at the right time.
4752 scm_dowinds remains available.
4753 (SCM_GUARDSP, SCM_BEFORE_GUARD, SCM_AFTER_GUARD, SCM_GUARD_DATA,
4754 tc16_guard, guards_print): Removed.
4755 (scm_internal_dynamic_wind): Reimplemented using frames.
4756
4757 * continuations.c (copy_stack): New, do only the stack copying
4758 part of copy_stack_and_call.
4759 (copy_stack_and_call): Copy the stack after unwinding and before
4760 rewinding.
4761 (scm_dynthrow): Do not call scm_dowinds, this is now done by
4762 copy_stack_and_call.
4763
441a25d9
KR
47642004-01-04 Kevin Ryde <user42@zip.com.au>
4765
4766 * numbers.c (scm_less_p): Don't convert frac to float for compares,
dab514a8 4767 can give bad results due to rounding.
441a25d9 4768
e0499207
KR
4769 * stime.c (scm_current_time, scm_gettimeofday): Add a comment about
4770 setzone/restorezone protection for DOS.
4771
89fcf1b4
MV
47722003-12-26 Marius Vollmer <mvo@zagadka.de>
4773
4774 * gen-scmconfig.h.in, gen-scmconfig.c: Arrange for scm_t_intmax
4775 and scm_t_uintmax to be defined in scmconfig.h
4776
caff34d4
KR
47772003-12-03 Kevin Ryde <user42@zip.com.au>
4778
4779 * numbers.c (scm_less_p): Remove spurious xisnan from frac+big case.
4780
4781 * numbers.c (scm_make_ratio): Check for numerator equal to
4782 SCM_MOST_NEGATIVE_FIXNUM and bignum denominator the negative of that,
4783 giving integer -1.
4784
4785 * numbers.c (scm_real_part): Return fraction unchanged rather than
4786 converting to flonum.
4787
2d0b85ac
DH
47882003-11-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
4789
4790 * modules.c (module_variable): Fixed (and thus simplified) the
4791 definition of SCM_BOUND_THING_P to reflect the fact that since
4792 after the 1.4 series of guile, obarrays only hold variable
4793 objects.
4794
2297981d
MV
47952003-11-30 Marius Vollmer <mvo@zagadka.de>
4796
4797 * numbers.c (scm_logand): It's "#b...", not "#\b...".
4798
4799 From Paul Jarc:
4800
4801 * read.c (scm_lreadr): Signal an error for invalid escape
4802 sequences in strings. Code cleanups too.
4803
4804 * print.c (scm_iprin1): use \xNN hexadecimal sequences when
4805 writing control characters in strings.
4806
48072003-11-21 Marius Vollmer <mvo@zagadka.de>
4808
4809 * ports.c (scm_drain_input): Bug fix: only access the port after
4810 checking that it indeed is one.
4811
5c264007
DH
48122003-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
4813
4814 * eval.c (s_bad_define): New static identifier.
4815
4816 (m_body): Fixed comment.
4817
4818 (scm_m_define): Don't generate memoized code for definitions that
4819 are not on the top level. As a consequence, no memoized code at
4820 all is generated for definitions any more: Top level definitions
4821 are executed immediately during memoization and internal
4822 definitions are handled separately in m_expand_body.
4823
4824 (scm_unmemocopy, unmemocopy): Removed code for unmemoizing
4825 definitions. Consequently, there is no unmemoizing code any more
4826 that might modify the environment. Thus, the old scm_unmemocopy
4827 is removed and the old unmemocopy is renamed to scm_unmemocopy.
4828
4829 (SCM_CEVAL): The SCM_IM_DEFINE keyword can no longer occur in
4830 memoized code. Call EVALCAR for continuations. Prefer !SCM_NULLP
4831 over SCM_NIMP in places, where the argument is known to be part of
4832 a proper list.
4833
018d4730
KR
48342003-11-21 Kevin Ryde <user42@zip.com.au>
4835
4836 * numbers.c (scm_abs): Allocate a new real only for negatives, as done
4837 for bignums.
4838
4839 * numbers.c (scm_bit_extract): Use mpz functions, rearrange inum case
4840 to share some shifting.
4841
4842 * numbers.c (scm_integer_expt): Don't mpz_init after scm_i_clonebig or
4843 scm_i_mkbig, since they do so already. Don't mpz_clear a bignum SCM,
4844 since gc does this.
4845
4bca30d8
MV
48462003-11-19 Marius Vollmer <mvo@zagadka.de>
4847
fb16d26e
MV
4848 * numbers.c (scm_make_ratio): Rewritten to have a simpler
4849 structure. Previously, not all cases with a negative denominator
4850 were covered.
4851
4bca30d8
MV
4852 * numbers.c (mem2decimal_from_point): use scm_divide instead of
4853 scm_divide2real when forming the fractional part. This allows
4854 "#e1.2" to yield 6/5.
4855
4856 * numbers.c (scm_i_fraction_equalp): Do not treat the return value
4857 of scm_equal_p as a C boolean, use SCM_FALSEP. Previously, all
4858 fractions were equal to each other regardless of value. Ooops.
4859
4860 * numbers.c (scm_rationalize): Return an inexact result when given
4861 inexact arguments.
4862
4863 * numbers.c (scm_exact_p, scm_inexact_p): Throw error for
4864 non-numbers.
4865
bdf26b60
MV
48662003-11-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4867
4868 Support for exact fractions from Bill Schottstaedt! Thanks!
4869
4870 * print.c (scm_iprin1): Handle fractions.
4871
4872 * objects.h (scm_class_fraction): New.
4873 * objects.c (scm_class_fraction): New.
4874 (scm_class_of): Handle fractions.
4875
4876 * hash.c (scm_hasher): Handle fractions.
4877
4878 * numbers.c: New code for handling fraction all over the place.
4879 (scm_odd_p, scm_even_p): Handle inexact integers.
4880 (scm_rational_p): New function, same as scm_real_p.
4881 (scm_round_number, scm_truncate_number, scm_ceiling, scm_floor):
4882 New exact functions that replace the inexact 'dsubr'
4883 implementations.
4884 (scm_numerator, scm_denominator): New.
4885
4886 * numbers.h (SCM_NUMP): Recognize fractions.
4887 (SCM_FRACTIONP, SCM_SLOPPY_FRACTIONP, SCM_FRACTION_NUMERATOR,
4888 SCM_FRACTION_DENOMINATOR, SCM_FRACTION_SET_NUMERATOR,
4889 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
4890 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
4891 SCM_FRACTION_REDUCED): New.
4892 (scm_floor, scm_ceiling, scm_truncate_number, scm_round_number):
4893 New prototypes.
4894 (scm_make_ratio, scm_rationalize, scm_numerator, scm_denominator,
4895 scm_rational_p): New prototypes.
4896 (scm_i_dbl2num, scm_i_fraction2double, scm_i_fraction_equalp,
4897 scm_i_print_fraction): New prototypes.
4898
4899 * goops.c (create_standard_classes): Create "<fraction>" class.
4900
4901 * gc-mark.c (scm_gc_mark_dependencies): Handle fractions.
4902
4903 * gc-card.c (scm_i_sweep_card): Include scm_tc16_fraction as a
4904 case in the switch, but do nothing for now.
4905
4906 * eval.c (SCM_CEVAL, SCM_APPLY, call_dsubr_1): Convert fractions
4907 to doubles when calling 'dsubr' functions.
4908
4909 * eq.c (scm_eqv_p, scm_equal_p): Handle fractions.
4910
28fda544
RB
49112003-11-18 Rob Browning <rlb@defaultvalue.org>
4912
4913 * gen-scmconfig.c (main): remove public definition of
4914 SCM_SIZEOF___INT64 and SCM_SIZEOF_UNSIGNED___INT64 and add
4915 direct typedef of long_long and ulong_long inside deprecated block
4916 when appropriate.
4917
4918 * deprecated.h: move long_long and ulong_long definitions to
4919 gen-scmconfig.c so that we don't need to add SCM_SIZEOF___INT64
4920 and SCM_SIZEOF_UNSIGNED___INT64 to the public namespace.
4921
b58e7420
MV
49222003-11-17 Marius Vollmer <mvo@zagadka.de>
4923
9a1d7d7c
MV
4924 * hash.c (scm_string_hash): New hashing algorithm that takes the
4925 complete string into account.
4926
b58e7420
MV
4927 * eval.c (scm_m_generalized_set_x): Macroexpand the target when it
4928 is a list. This allows (@ ...) to work with set!.
9a1d7d7c
MV
4929 (scm_m_generalized_set_x): Use ASSERT_SYNTAX_2 instead of
4930 SCM_ASSYNT.
b58e7420
MV
4931
4932 * script.c (scm_compile_shell_switches): Use scm_c_read_string for
4933 the "-e" option instead of scm_str2symbol. This allows things
4934 like (@ ...) to be specified for the entry point.
4935
461bffb1
DH
49362003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
4937
4938 * eval.c (scm_m_letstar): Create memoized code in place to
4939 minimize consing.
4940
6f81708a
DH
49412003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
4942
4943 * eval.c (s_splicing): Commented and reformulated.
4944
4945 (lookup_global_symbol, lookup_symbol): New static functions.
4946
4947 (s_test, s_bindings, s_duplicate_bindings, s_variable): Removed.
4948
4949 (try_macro_lookup, literal_p): Use lookup_symbol instead of
4950 creating a temporary pair for scm_lookupcar.
4951
4952 (scm_unmemocar, unmemocar): Renamed scm_unmemocar to unmemocar,
4953 created deprecated wrapper function scm_unmemocar.
4954
4955 (SCM_VALIDATE_NON_EMPTY_COMBINATION, scm_sym_else,
4956 scm_sym_unquote, scm_sym_uq_splicing, scm_sym_enter_frame,
4957 scm_sym_apply_frame, scm_sym_exit_frame, scm_sym_trace, f_apply,
4958 undefineds, sym_three_question_marks): Moved around without
4959 modifications.
4960
4961 * eval.c, eval.h (scm_macroexp, scm_unmemocar): Deprecated.
4962
910b5125
DH
49632003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
4964
4965 * eval.c (try_macro_lookup, expand_user_macros, is_system_macro_p,
4966 m_expand_body, scm_m_expand_body): Grouped together with m_body.
4967 No further modifications.
4968
c86c440b
DH
49692003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
4970
4971 * eval.c (s_mixed_body_forms): New static identifier.
4972
4973 (canonicalize_define, scm_m_define): The check for a bad
4974 expression is performed in canonicalize_define now.
4975
4976 (try_macro_lookup, expand_user_macros, is_system_macro_p): New
4977 static helper functions for m_expand_body.
4978
4979 (m_expand_body): Use ASSERT_SYNTAX to signal syntax errors. Only
4980 expand user defined macros. Fixed handling of the definition/
4981 expression boundary. Fixed handling of definitions grouped with
4982 'begin. Use canonicalize_define to expand definitions.
4983
3890131a
MV
49842003-11-13 Marius Vollmer <mvo@zagadka.de>
4985
b58e7420
MV
4986 * read.c (scm_lreadr): detect EOF after backslash, and interpret
4987 \xNN hexadecimal sequences. From Paul Jarc, thanks!
4988
5df36eac
MV
4989 * snarf.h (SCM_SMOB, SCM_GLOBAL_SMOB, SCM_SMOB_MARK,
4990 SCM_GLOBAL_SMOB_MARK, SCM_SMOB_FREE, SCM_GLOBAL_SMOB_FREE,
4991 SCM_SMOB_PRINT, SCM_GLOBAL_SMOB_PRINT, SCM_SMOB_EQUALP,
4992 SCM_GLOBAL_SMOB_EQUALP, SCM_SMOB_APPLY, SCM_GLOBAL_SMOB_APPLY):
4993 New macros from Paul Jarc. Thanks!
4994
3890131a
MV
4995 * gc_os_dep.c (scm_get_stack_base): Provide a definition that
4996 return NULL when the machine type is unknown. Previously,
4997 gc_os_dep.c would refuse to compile.
4998
430b8401
DH
49992003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
5000
5001 * eval.c (scm_m_body, m_body, scm_m_lambda, memoize_named_let,
5002 scm_m_let, scm_m_letrec, m_expand_body): Renamed static function
5003 scm_m_body to m_body.
5004
328dc9a3
DH
50052003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
5006
5007 * eval.c, eval.h (scm_m_expand_body, m_expand_body): Deprecated
5008 public use of scm_m_expand_body in eval.h. In eval.c, renamed
5009 scm_m_expand_body to m_expand_body and made it static. Added
5010 deprecated wrapper scm_m_expand_body.
5011
5012 (scm_eval_body, SCM_CEVAL, SCM_APPLY): Use m_expand_body instead
5013 of scm_m_expand_body.
5014
c2337a61
KR
50152003-11-09 Kevin Ryde <user42@zip.com.au>
5016
5017 * dynl.c (scm_dynamic_unlink): Need scm_list_1 on error message
5018 argument. Reported by Mike Gran.
5019
ced8edb0
DH
50202003-11-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
5021
5022 * eval.c (s_missing_body_expression): New static identifier.
5023
5024 (s_body): Removed.
5025
5026 (scm_m_expand_body): Fixed core dump when passing a body with
5027 defines, but without expressions (see additions to syntax.test).
5028 Use ASSERT_SYNTAX to signal syntax errors.
5029
0f572ba7
DH
50302003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5031
5032 * eval.c (canonicalize_define): New static helper function.
5033
5034 (memoize_define, canonicalize_define): Extract handling of
5035 function currying to canonicalize_define.
5036
2510c810
DH
50372003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5038
5039 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
5040 Make sure that error checking in debug mode is not worse than in
5041 standard mode.
5042
34adf7ea
DH
50432003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5044
5045 * eval.c (scm_m_body, scm_m_lambda): Documentation strings are not
5046 handled in scm_m_body any more, but rather in scm_m_lambda.
5047
5048 (scm_m_body, memoize_named_let, scm_m_let, scm_m_letstar,
5049 scm_m_letrec, scm_m_expand_body): Check for validity is done by
5050 calling functions of scm_m_body.
5051
5052 (scm_m_lambda): Avoid unnecessary consing when creating the
5053 memoized code.
5054
89bff2fc
DH
50552003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5056
5057 * eval.c (s_expression): Added comment.
5058
5059 (s_empty_combination, error_unbound_variable): New static
5060 identifiers.
5061
5062 (SCM_VALIDATE_NON_EMPTY_COMBINATION, SCM_EVALIM2, scm_lookupcar1):
5063 Use ASSERT_SYNTAX, syntax_error or error_unbound_variable to
5064 signal syntax errors.
5065
5066 (SCM_CEVAL): Separated handling of evaluator bytecodes and other
5067 scheme objects.
5068
60a49842
DH
50692003-10-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5070
5071 * eval.c (unmemocar, sym_three_question_marks, scm_unmemocar):
5072 Grouped together with unmemocopy, without modifications.
5073
5074 (build_binding_list, unmemocopy): Renamed names of list arguments
5075 and variables to reflect the actual order of the list elements.
5076
70c1c108
DH
50772003-10-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
5078
5079 * eval.c (s_defun): New static identifier.
5080
5081 (scm_m_nil_cond, scm_m_atfop, scm_m_undefine): Add comments. Use
5082 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
5083 when creating the memoized code.
5084
0ee39677
KR
50852003-10-19 Kevin Ryde <user42@zip.com.au>
5086
5087 * numbers.c (scm_ash): Revise docstring as per recent update to manual.
5088
5089 * numbers.c (scm_i_big2dbl): Rewrite, carefully rounding to "closest"
5090 in accordance with R5RS, which just mpz_get_d doesn't really give.
5091
9a848baf
DH
50922003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5093
5094 * eval.c (s_bad_slot_number): New static identifier.
5095
5096 (scm_m_atslot_ref, scm_m_atslot_set_x): Use ASSERT_SYNTAX to
5097 signal syntax errors. Avoid unnecessary consing when creating the
5098 memoized code.
5099
da48db62
DH
51002003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5101
5102 * eval.c (scm_m_cont, scm_m_at_call_with_values,
5103 scm_m_generalized_set_x): Use ASSERT_SYNTAX to signal syntax
5104 errors. Avoid unnecessary consing when creating the memoized
5105 code.
5106
5107 (scm_m_generalized_set_x): Let scm_m_set_x handle the R5RS
5108 standard case. Make sure line and file information are copied to
5109 every created expression.
5110
82b3e2c6
DH
51112003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5112
5113 * eval.c (scm_m_set_x, scm_m_apply, scm_m_atbind): Use
5114 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
5115 when creating the memoized code.
5116
5117 (scm_m_atbind): Reversed the order, in which the init expressions
5118 are stored and executed. The order of execution is now equal to
5119 the order in which the initializers of the let-forms are executed.
5120 Use check_bindings and transform_bindings.
5121
5122 (SCM_CEVAL): Eliminated SCM_NIMP in favor of more appropriate
5123 !SCM_NULLP. Added some comments.
5124
21628685
DH
51252003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5126
5127 * eval.c: Sorted include files alphabetically.
5128
5129 (scm_m_begin): Added comment.
5130
5131 (scm_m_or): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5132 unnecessary consing when creating the memoized code.
5133
5134 (iqq, scm_m_quasiquote, scm_m_quote): Use ASSERT_SYNTAX to signal
5135 syntax errors. Be more specific about the kind of error that was
5136 detected.
5137
5138 (scm_m_quote, unmemocopy): As an optimization, vector constants
5139 are now inserted unquoted into the memoized code. During
5140 unmemoization the quotes are added again to provide syntactically
5141 correct code.
5142
d6754c23
DH
51432003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5144
5145 * eval.c (scm_m_let, scm_m_letstar, scm_m_letrec,
5146 scm_m_expand_body, check_bindings): Extracted syntax checking of
5147 bindings to new static function check_bindings.
5148
5149 (scm_m_let, memoize_named_let): Extracted handling of named let to
5150 new static function memoize_named_let.
5151
5152 (transform_bindings, scm_m_let, scm_m_letstar, scm_m_letrec): Use
5153 ASSERT_SYNTAX to signal syntax errors. Be more specific about the
5154 kind of error that was detected. Avoid use of SCM_CDRLOC. Avoid
5155 unnecessary consing when creating the memoized code.
5156
03a3e941
DH
51572003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5158
5159 * eval.c (s_bad_formals, s_bad_formal, s_duplicate_formal): New
5160 static identifiers.
5161
5162 (s_clauses, s_formals, s_duplicate_formals): Removed.
5163
5164 (scm_m_lambda): Use ASSERT_SYNTAX to signal syntax errors. Be more
5165 specific about the kind of error that was detected. Prepare for
5166 easier integration of changes for separated memoization.
5167
da48db62 51682003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
4610b011
DH
5169
5170 * eval.c (s_duplicate_binding): New static identifier.
5171
5172 (scm_m_case): Call scm_c_memq instead of implementing it inline.
5173
5174 (scm_m_define): Added comment about how we check for duplicate
5175 formals.
5176
5177 (scm_m_do): Added check for duplicate bindings.
5178
5179 (scm_m_if): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5180 unnecessary consing when creating the memoized code.
5181
5182 (scm_c_improper_memq, c_improper_memq, scm_m_lambda): Renamed
5183 scm_c_improper_memq to c_improper_memq, since it is not exported.
5184
5185 (transform_bindings): Call scm_c_memq rather than
5186 scm_c_improper_memq.
5187
5188 (SCM_CEVAL): Simplified handling of SCM_IM_IF forms.
5189
da48db62 51902003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
a954ce1d
DH
5191
5192 * eval.c (s_bad_bindings, s_bad_binding, s_bad_exit_clause): New
5193 static identifiers.
5194
5195 (scm_m_do): Use ASSERT_SYNTAX to signal syntax errors. Be more
5196 specific about the kind of error that was detected. Avoid use of
5197 SCM_CDRLOC. Avoid unnecessary consing when creating the memoized
5198 code, this way also making sure that file name, line number
5199 information etc. remain available.
5200
da48db62 52012003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
8ae95199
DH
5202
5203 * eval.c (memoize_as_thunk_prototype): New static function.
5204
5205 (scm_m_delay, scm_m_future): Use memoize_as_thunk_prototype.
5206 Avoid unnecessary consing when creating the memoized code.
5207
9b9a35b6
KR
52082003-10-12 Kevin Ryde <user42@zip.com.au>
5209
5210 * list.c (scm_append): Track argument number and use in error.
5211
cc56ba80
DH
52122003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5213
5214 * eval.c (s_missing_expression, s_bad_variable): New static
5215 identifiers.
5216
5217 (scm_m_define): Use ASSERT_SYNTAX to signal syntax errors. Prefer
5218 R5RS terminology for the naming of variables. Be more specific
5219 about the kind of error that was detected. Make sure file name,
5220 line number etc. are added to all freshly created expressions.
5221 Avoid unnecessary consing when creating the memoized code.
5222
609a8b86
DH
52232003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5224
5225 * eval.c (s_extra_expression, s_misplaced_else_clause,
5226 s_bad_cond_clause, s_missing_recipient): New static identifiers.
5227
5228 (s_extra_case_clause): Removed.
5229
5230 (scm_m_case, scm_m_cond): If a clause appears after an else
5231 clause, report a misplaced else clause.
5232
5233 (scm_m_cond): Use ASSERT_SYNTAX to signal syntax errors. Be more
5234 specific about the kind of error that was detected. Handle bound
5235 'else and '=>. Avoid unnecessary consing when creating the
5236 memoized code.
5237
5238 (scm_m_cond, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
5239 the syntactic keyword 'else and SCM_IM_ARROW to memoize the
5240 syntactic keyword '=>.
5241
58a2510b
DH
52422003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5243
5244 * eval.c (scm_m_case): Allow empty lists of case labels.
5245
2a6f7afe
DH
52462003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5247
5248 * tags.h (SCM_IM_ELSE, SCM_IM_ARROW): New memoizer codes.
5249
5250 * print.c (scm_isymnames): Add names for the new memoizer codes.
5251
5252 * eval.c (s_missing_clauses, s_bad_case_clause,
5253 s_extra_case_clause, s_bad_case_labels, s_duplicate_case_label,
5254 literal_p): New static identifiers.
5255
5256 (scm_m_case): Use ASSERT_SYNTAX to signal syntax errors. Be more
5257 specific about the kind of error that was detected. Check for
5258 duplicate case labels. Handle bound 'else. Avoid unnecessary
5259 consing when creating the memoized code.
5260
5261 (scm_m_case, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
5262 the syntactic keyword 'else.
5263
e6729603
DH
52642003-10-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
5265
5266 * eval.c (s_bad_expression, syntax_error_key, syntax_error,
5267 ASSERT_SYNTAX, ASSERT_SYNTAX_2): New static identifiers.
5268
5269 (scm_m_and): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5270 unnecessary consing when creating the memoized code.
5271
9ddeb776
KR
52722003-10-09 Kevin Ryde <user42@zip.com.au>
5273
5274 * numbers.c (scm_inexact_to_exact): Don't depend on what double->long
5275 cast gives for values bigger than a long, or for nan or inf.
5276
df5af69a
DH
52772003-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
5278
5279 * smob.h (scm_make_smob_type): Made the declaration match the
5280 definition.
5281
da0e6c2b
MV
52822003-10-07 Marius Vollmer <mvo@zagadka.de>
5283
5284 * goops.c, objects.h, smob.c, smob.h: Make type names char
5285 const * instead of char *. Thanks to Paul Jarc!
5286
591924eb
KR
52872003-10-02 Kevin Ryde <user42@zip.com.au>
5288
ff6ea7b9 5289 * strports.c (scm_call_with_output_string): scm_get_output_string
591924eb
KR
5290 rather than scm_strport_to_string, so as to guard against the port
5291 having been closed by the called procedure. Reported by Nic Ferrier.
5292
f03314f9
DH
52932003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5294
5295 * numbers.h (SCM_INEXACTP): Removed uses of SCM_TYP16S.
5296
5297 * tags.h, deprecated.h (SCM_TYP16S): Deprecated and moved from
5298 tags.h to deprecated.h.
5299
534c55a9
DH
53002003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5301
5302 This set of patches introduces a new tc7 code scm_tc7_number for
5303 numbers. Bignums, reals and complex numbers are turned from smobs
5304 into subtypes of scm_tc7_number.
5305
5306 * tags.h (scm_tc7_number): New.
5307
5308 * eq.c (scm_equal_p), eval.c (SCM_CEVAL), evalext.c
5309 (scm_self_evaluating_p), gc-card.c (scm_i_sweep_card), gc-mark.c
5310 (scm_gc_mark_dependencies), goops.c (create_smob_classes), hash.c
5311 (scm_hasher), numbers.c, numbers.h (SCM_NUMP), objects.c
5312 (scm_class_of), print.c (scm_iprin1), smob.c
5313 (scm_smob_prehistory): Don't handle bignums, reals and complex
5314 numbers as subtypes of scm_tc7_smob any more.
5315
5316 * numbers.h, tags.h (scm_tc16_big, scm_tc16_real,
5317 scm_tc16_complex): Moved definitions from tags.h to numbers.h.
5318
29c4382a
DH
53192003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5320
5321 * numbers.c (scm_make_complex), gc-card.c (scm_i_sweep_card): Use
5322 sizeof (scm_t_complex) to determine the memory size of the
5323 malloc'd area for complex numbers.
5324
47ae1f0e
DH
53252003-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
5326
5327 * numbers.c (scm_bigequal): Fixed.
5328
859b6b2f
MV
53292003-09-16 Marius Vollmer <mvo@zagadka.de>
5330
5331 * stime.c (scm_current_time): 'time' does not set errno so don't
5332 use SCM_SYSERROR for reporting errors.
5333
e17d318f
DH
53342003-09-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5335
5336 This set of patches eliminates the dependency between the
5337 implementation of evaluator specific memoization codes and special
5338 constants like #f, '() etc. ('flags'), which are not evaluator
5339 specific. The goal is to remove definitions of evaluator
5340 memoization codes completely from the public interface. This will
5341 make it possible to experiment more freely with optimizations of
5342 guile's internal representation of memoized code.
5343
5344 * objects.c (scm_class_of): Eliminate dependency on SCM_ISYMNUM.
5345
5346 * print.c (iflagnames): New array, holding the printed names of
5347 guile's special constants ('flags').
5348
5349 (scm_isymnames): Now holds only the printed names of the
5350 memoization codes.
5351
5352 (scm_iprin1): Separate the handling of memoization codes and
5353 guile's special constants.
5354
5355 * tags.h (scm_tc9_flag, SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA,
5356 SCM_IFLAGNUM): new
5357
5358 (scm_tc8_char, scm_tc8_iloc, SCM_BOOL_F, SCM_BOOL_T,
5359 SCM_UNDEFINED, SCM_EOF_VAL, SCM_EOL, SCM_UNSPECIFIED, SCM_UNBOUND,
5360 SCM_ELISP_NIL, SCM_IM_DISPATCH, SCM_IM_SLOT_REF,
5361 SCM_IM_SLOT_SET_X, SCM_IM_DELAY, SCM_IM_FUTURE,
5362 SCM_IM_CALL_WITH_VALUES, SCM_IM_NIL_COND, SCM_IM_BIND): Changed
5363 values.
5364
5365 (SCM_IFLAGP): SCM_IFLAGP now only tests for flags.
5366
5367 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Generalized to use the
5368 tc9 macros and scm_tc9_flag.
5369
eecac806
MV
53702003-09-15 Marius Vollmer <mvo@zagadka.de>
5371
5372 * posix.c (scm_setgroups): Check that the gid list is not too
5373 long. Thanks to Paul Jarc!
5374
22f2cf2d
DH
53752003-09-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
5376
5377 * tags.h: Reduced the number of short instructions from 14 to 13.
5378 The typecode of the former 14th short instruction is now used to
5379 represent long instructions. Changed some comments to reflect
5380 this fact.
5381
5382 (SCM_MAKISYM): ISYMs get a new tc7 code, namely the one that was
5383 previously used by SCM_IM_DEFINE.
5384
5385 (SCM_IM_DEFINE): Turned into a long instruction.
5386
5387 * eval.c (unmemocopy, SCM_CEVAL): Treat SCM_IM_DEFINE as a long
5388 instruction.
5389
5390 * eval.c (SCM_CEVAL): Since characters and iflags have now a tc7
5391 code that is separate from all instructions, one level of dispatch
5392 for long instructions can be eliminated.
5393
5394 * print.c (scm_isymnames): Removed some commented code.
5395
62f548e1
MV
53962003-09-12 Marius Vollmer <mvo@zagadka.de>
5397
97a61c5f
MV
5398 * __scm.h (SCM_FENCE): Use __memory_barrier with the Intel
5399 compiler on IA64.
5400
50e0ba57
MV
5401 * hashtab.h (scm_tc16_hashtable): Added "extern" declaration.
5402
5403 * modules.c (scm_module_reverse_lookup): Check that the obarray
5404 really is a hashtable and do nothing if not.
5405
62f548e1
MV
5406 * inline.h: Use "extern inline" only with GCC. Use "static
5407 inline" else.
5408
0d5e3480
DH
54092003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5410
5411 * numbers.h (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Removed uses
5412 of SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
5413
5414 * numbers.h, deprecated.h (SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP,
5415 SCM_SLOPPY_COMPLEXP): Deprecated and moved from numbers.h to
5416 deprecated.h.
5417
6b412e91
DH
54182003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5419
5420 * eq.c (scm_eqv_p, scm_equal_p): Removed uses of
5421 SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
5422
5423 * eq.c (scm_eqv_p, scm_equal_p): Reordered comparisons from
5424 0.0==some_expression to some_expression==0.0. The latter is
5425 better readable. The former is preferred by some people, since it
5426 leads to a compiler error when confusing == with =. However, when
5427 using gcc, a warning will be issued if in an if-statement an
5428 assigment appears. Since many Guile developers are using gcc,
5429 such errors will not remain unnoticed anyway. We can therefore
5430 focus on better readability.
5431
7e3b25bf
DH
54322003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5433
5434 * tags.h: Added description of Guile's type system. Removed some
5435 old and misleading comments.
5436
3ea39242
DH
54372003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5438
5439 * unit.c (scm_cvref): Eliminate unnecessary uses of SCM_NIMP,
5440 SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
5441
5d7d39ff
DH
54422003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5443
5444 * numbers.h (SCM_MAKINUM): Define in terms of scm_tc2_int.
5445
5446 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Define in terms of the
5447 respective SLOPPY macro.
5448
baa84a20
DH
54492003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5450
5451 * eq.c (scm_equal_p): Use SCM_TYP7 to check if an object is of
5452 type string, not SCM_TYP7S.
5453
ba15f500
KR
54542003-09-03 Kevin Ryde <user42@zip.com.au>
5455
5456 * numbers.c (scm_lognot): Correction to docstring, ones-complement not
5457 2s-complement.
5458
53bb8782
KR
5459 * stime.c (scm_strptime): Add comment about glibc strptime %s and
5460 current timezone requiring SCM_DEFER_INTS.
5461
defdc4b4
NJ
54622003-08-30 Neil Jerram <neil@ossau.uklinux.net>
5463
5464 * script.c (scm_compile_shell_switches): Make -s switch optional
5465 if file to be loaded does not begin with a `-'. (Thanks to Aaron
5466 VanDevender for the patch!)
5467
0f008a15
KR
54682003-08-30 Kevin Ryde <user42@zip.com.au>
5469
5470 * numbers.c (scm_lognot): Rewrite using ~ and mpz_com, for directness
5471 and to have non-integer types rejected as per other logical funcs.
5472
438a3ba1
KR
54732003-08-28 Kevin Ryde <user42@zip.com.au>
5474
5475 * gc.h (scm_remember_upto_here_1): Revise comments on the asm form.
5476
98dceb37
KR
54772003-08-23 Kevin Ryde <user42@zip.com.au>
5478
5479 * simpos.c (scm_system): Remove SCM_DEFER_INTS, system() should be
5480 thread safe, and could take a long time too.
5481
1fa79a38
KR
54822003-08-22 Kevin Ryde <user42@zip.com.au>
5483
5484 * numbers.c (scm_difference): Correction to bignum - negative inum.
5485
d97f9b42
KR
54862003-08-14 Kevin Ryde <user42@zip.com.au>
5487
5488 * gc.h (scm_remember_upto_here_1, scm_remember_upto_here_2)
5489 [__GNUC__]: Use volatile asm macros rather than a function call.
5490 * gc.c (scm_remember_upto_here_1, scm_remember_upto_here_2): Undefine
5491 macros while defining functions.
5492
5493 * simpos.c (getenv): Use <stdlib.h> for prototype.
5494 (scm_system): In docstring, refer to status:exit-val rather than
5495 "functions above".
5496
b9052fcc
KR
54972003-08-09 Kevin Ryde <user42@zip.com.au>
5498
5499 * srcprop.c (scm_source_properties): Return plist from hash if it's a
5500 list set by source-properties! rather than an SRCPROPS object,
5501
8e5b4b9e
KR
55022003-07-29 Kevin Ryde <user42@zip.com.au>
5503
5504 * properties.c (scm_primitive_property_ref): In docstring, note
5505 parameters to not-found-proc, use hyphens rather than underscores for
5506 that parameter name.
5507 (scm_primitive_property_set_x): In docstring, VAL is the value
5508 parameter not CODE.
5509
20703ac4
MV
55102003-07-27 Marius Vollmer <mvo@zagadka.de>
5511
c6ccee34
MV
5512 * print.c (scm_print_symbol_name): handle more weird characters by
5513 escaping the symbol name properly. Thanks to Paul Jarc!
5514
2f4931bf
MV
5515 * posix.h (scm_setgroups): New prototype.
5516 * posix.c (scm_setgroups): New. Thanks to Paul Jarc!
5517 (scm_getgroups): Handle groups ids that don't fit into a fixnum.
5518 Don't use SCM_WRITABLE_VELTS.
5519
265c456f
MV
5520 * gc.h (SCM_GC_SET_CELL_BVEC): New.
5521 * gc-card.c (scm_i_init_card_freelist): Use it. Thanks to
5522 Matthias Koeppe!
5523
20703ac4
MV
5524 * __scm.h (SCM_C_INLINE_KEYWORD): New.
5525 * numbers.c: Use it in place of SCM_C_INLINE so that the code
5526 compiles when SCM_C_INLINE is undefined.
5527
59c4bb82
DH
55282003-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
5529
5530 * __scm.h: Reformulated the architecture and compiler properties
5531 in terms of properties of scm_t_bits and SCM variables rather than
5532 in terms of c standard types. This is since it is not known which
5533 of the standard types scm_t_bits and SCM variables will be defined
5534 to.
5535
d7850c8d
KR
55362003-07-24 Kevin Ryde <user42@zip.com.au>
5537
5538 * numbers.c (scm_angle): Use scm_flo0 for non-negative inum, bignum
5539 and real.
5540
8a0c514f
KR
55412003-07-18 Kevin Ryde <user42@zip.com.au>
5542
5543 * numbers.c (scm_product): In complex * bignum, correction to
5544 REAL/IMAG fetch, x is the complex, not y.
5545
0aacf84e
MD
55462003-07-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5547
5548 * numbers.c (scm_odd_p, scm_even_p): Bugfix: Treat result of
5549 scm_inf_p test as Scheme values.
5550 (scm_sum): Bugfix: Normalize bignum created from a negative bignum
5551 and a positive inum.
5552 Use GNU indentation style.
5553
192de9a4
DH
55542003-07-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5555
5556 * values.c (scm_values): Build lists of length 1 by using
5557 scm_list_1 instead of using scm_cons.
5558
bbb4438a
KR
55592003-07-10 Kevin Ryde <user42@zip.com.au>
5560
b58c85ce
KR
5561 * deprecation.c (scm_c_issue_deprecation_warning_fmt): Add va_end.
5562 * list.c (scm_list_n): Ditto.
5563
bbb4438a
KR
5564 * gc-malloc.c (scm_gc_realloc): Define "ptr" at start of function.
5565
287f8ad1
KR
55662003-07-08 Matthias Koeppe <mkoeppe@merkur.math.uni-magdeburg.de>
5567
5568 * tags.h (scm_t_bits, scm_t_signed_bits, etc): Avoid solaris empty
5569 defines of INTPTR_MAX and UINTPTR_MAX, combine conditionals for
5570 scm_t_bits and scm_t_signed_bits to avoid any chance of one and not
5571 the other using intptr_t.
5572
005d2366
KR
55732003-07-08 Kevin Ryde <user42@zip.com.au>
5574
0aacf84e 5575 * numbers.c (scm_make_polar): Use sincos, when available.
005d2366
KR
5576 (scm_magnitude): Use hypot.
5577
5578 * ports.c (scm_char_ready_p, scm_peek_char): In docstrings, don't use
5579 @footnote since it doesn't go through to guile-procedures.txt.
5580
5581 * threads.c (scm_call_with_new_thread): In docstring, use "( )"
5582 outside @var to quieten makeinfo, and use @code.
5583
cbfe8e62
HWN
55842003-07-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5585
5586 * gc-malloc.c (decrease_mtrigger): new function
5587 (increase_mtrigger): new function, separate debug registering and
5588 mtrigger administration.
5589 (scm_gc_realloc): bugfix: do mtrigger administration before the
5590 actual realloc, for the realloc might invalidate a GC-d segment of
5591 memory. Thanks to Sam Hocevar for pointing this out.
5592 (scm_gc_realloc): use scm_malloc_reregister instead of
5593 unregistering and registering in sequence.
5594
aeb4c2e1
HWN
55952003-07-03 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5596
5597 * __scm.h (SCM_ASSERT): change "else" expansion to "do { } while (0)"
5598
4c27f8d2
HWN
55992003-07-02 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5600
5601 * __scm.h (SCM_ASRTGO): add "else" to macro expansions with if
5602 clauses.
5603
983e697d
MV
56042003-06-29 Marius Vollmer <mvo@zagadka.de>
5605
5606 * deprecated.h (SCM_OPDIRP, scm_fport, scm_option, scm_srcprops,
5607 scm_srcprops_chunk, scm_info_frame, scm_stack, scm_array,
5608 scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_FUNC_NAME, SCM_WTA,
5609 RETURN_SCM_WTA, SCM_VALIDATE_NUMBER_COPY,
5610 SCM_VALIDATE_NUMBER_DEF_COPY, SCM_VALIDATE_OPDIR): Re-added from
5611 the release_1_6 branch.
5612
78b6566e
SJ
56132003-06-25 Stefan Jahn <stefan@lkcc.org>
5614
5615 * continuations.c: Redeclaration of getcontext() via the
5616 __asm__ ("getcontext") directive.
5617
5618 * continuations.h: Include <ucontext.h> instead of
5619 <sys/ucontext.h>.
5620
1ebb8497
KR
56212003-06-21 Kevin Ryde <user42@zip.com.au>
5622
5623 * numbers.c (_GNU_SOURCE): #define, to get C99 things.
5624 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, $asinh, $acosh,
5625 $atanh, truncate): Use C library asinh, acosh, atanh and trunc, when
5626 available.
5627 (scm_inexact_to_exact): Expand isfinite to its definition !xisinf.
5628 (isfinite): Remove, conflicts with C99 isfinite().
5629
fbf85ba4
MV
56302003-06-19 Marius Vollmer <mvo@zagadka.de>
5631
5632 * deprecated.h, deprecated.c (scm_strhash, scm_sym2ovcell_soft,
5633 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
5634 scm_symbol_value0, scm_string_to_obarray_symbol scm_intern_symbol,
5635 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
5636 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp): Re-added from
5637 the release_1_6 branch.
5638
fcc5d734
SJ
56392003-06-14 Stefan Jahn <stefan@lkcc.org>
5640
5641 * threads.h: Redefined scm_getspecific() and scm_setspecific()
5642 to be functions instead of macros.
5643
5644 * threads.c: Conditionalized inclusion of <sys/time.h> and
5645 <unistd.h>.
5646 (scm_getspecific, scm_setspecific): Made these two function
5647 real part of the API.
5648
5649 * posix.c (s_scm_putenv): Added some code to make a
5650 (putenv "FOO="), i.e. setting an empty string, work also on
5651 Win32 systems. Thanks to Kevin Ryde for the proposal.
5652
c3ae8e07
KR
56532003-06-12 Kevin Ryde <user42@zip.com.au>
5654
75b14838
KR
5655 * posix.c (scm_putenv): Free temporary ptr in mingw unset. Add
5656 freebsd to comment about need to use unsetenv.
c3ae8e07 5657
9d9fa092
MV
56582003-06-02 Marius Vollmer <mvo@zagadka.de>
5659
5660 * ports.c (scm_peek_char): Safe the column of the port around the
5661 getc/ungetc calls. Thanks to Dr. Peter Ivanyi!
5662
f2478375
KR
56632003-06-07 Kevin Ryde <user42@zip.com.au>
5664
5665 * tags.h: Use inttypes.h and stdint.h when available, for INTPTR_MAX
5666 and friends required by scm_t_bits setups.
5667
6375e040
DH
56682003-06-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5669
5670 * tags.h (scm_tc2_int): Added.
5671
5672 * tags.h (scm_tc3_int_1, scm_tc3_int_2): Expressed in terms of
5673 scm_tc2_int.
5674
5675 * tags.h (scm_tcs_cons_imcar, scm_tcs_cons_nimcar, scm_tcs_struct,
5676 scm_tcs_closures): Hard coded values replaced by symbolic ones.
5677
f5c6ec2f
DH
56782003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
5679
5680 * eval.c: Partially undid my patch from 2003-05-31. This patch
5681 caused the segfault referenced in the previous changelog entry.
5682
47dbd81e
DH
56832003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
5684
5685 * tags.h: Fixed comment about the immediate type code layout.
5686
5687 * eval.c: Fixed handling of non-special instructions. Without
5688 this patch, guile will segfault on (#\0) and similar instructions.
5689
3ec52c51
KR
56902003-06-05 Kevin Ryde <user42@zip.com.au>
5691
5692 * numbers.c (scm_max, scm_min): For inum, bignum and real, if other
5693 operand is NaN, then return NaN. Also avoid passing NaN to mpz_cmp_d.
5694
e418bd7c
KR
5695 * read.c (scm_input_error): Pass arg list parameter to scm_error_scm,
5696 rather than SCM_EOL. Needed by "Unknown # object" case in scm_lreadr.
5697
d0624e39
DH
56982003-06-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5699
5700 * __scm.h, gc-card.c (SCM_DEBUG_DEBUGGER_SUPPORT,
5701 SCM_DEBUG_DEBUGGING_SUPPORT): Renamed macro
5702 SCM_DEBUG_DEBUGGER_SUPPORT to SCM_DEBUG_DEBUGGING_SUPPORT and
5703 generalized it to apply not only to C level functions but also to
5704 scheme level functions.
5705
5706 * debug.c, debug.h, eval.c (make-iloc, scm_make_iloc, iloc?,
5707 scm_iloc_p, dbg-make-iloc, scm_dbg_make_iloc, dbg-iloc?,
5708 scm_dbg_iloc_p): Moved functions scm_make_iloc, scm_iloc_p to
5709 eval.c, made them available under SCM_DEBUG_DEBUGGING_SUPPORT == 1
5710 only and renamed them to scm_dbg_make_iloc, scm_dbg_iloc_p,
5711 respectively.
5712
5713 * deprecated.h, eval.c, eval.h (SCM_ILOC00, SCM_IDINC,
5714 SCM_IDSTMSK): Deprecated. The macro definitions are moved from
5715 eval.h into eval.c and a copy is placed into deprecated.h.
5716
5717 * eval.c, eval.h (SCM_MAKE_ILOC): Removed from eval.h and placed
5718 into eval.c. This definition was not part of the API in any
5719 officially released version of guile and thus does not need to go
5720 through a phase of deprecation.
5721
e90c3a89
DH
57222003-06-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5723
d0624e39
DH
5724 * deprecated.c, deprecated.h, eval.c, eval.h (scm_s_expression,
5725 scm_s_test, scm_s_body, scm_s_bindings, scm_s_variable,
5726 scm_s_clauses, scm_s_formals): Deprecated. In eval.c the
e90c3a89
DH
5727 definitions are make static and renamed from scm_s_xxx to s_xxx.
5728 In deprecated.c the original definitions are copied.
5729
d0624e39
DH
5730 * deprecated.h, eval.c, eval (SCM_EVALIM2, SCM_EVALIM, SCM_XEVAL,
5731 SCM_XEVALCAR): Deprecated. The macro definitions are moved from
e90c3a89
DH
5732 eval.h into eval.c and a copy (slightly modified to work in user
5733 code) is placed into deprecated.h.
5734
5735 * eval.c: Use the local static s_xxx definitions instead of the
5736 scm_s_xxx definitions throughout.
5737
14b18ed6
DH
57382003-06-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5739
5740 This set of patches separates the representation of the cxr family
5741 of functions (car, cdr etc.) from the dsubr family of functions
5742 (i. e. functions that take a double precision floating point
5743 argument). Further, the algorithm for handling the cxr function
5744 is improved.
5745
5746 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_1), numbers.c
5747 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, scm_round, floor,
5748 ceil, sqrt, fabs, exp, log, sin, cos, tan, asin, acos, atan, sinh,
5749 cosh, tanh), objects.c (scm_class_of), procprop.c
5750 (scm_i_procedure_arity), ramap.c (scm_array_map_x), tags.h
5751 (scm_tc7_dsubr, scm_tcs_subrs): Introduce scm_tc7_dsubr as new
5752 typecode for the dsubr family of functions.
5753
5754 * ramap.c (ramap_cxr, ramap_dsubr): Renamed ramap_cxr to
5755 ramap_dsubr.
5756
5757 * eval.c (SCM_CEVAL, SCM_APPLY, call_cxr_1), pairs.c
5758 (scm_init_pairs): Make use of the (now usable) second cell element
5759 of a scm_tc7_cxr function to implement the cxr family of functions
5760 more efficiently.
5761
2ca0d207
DH
57622003-05-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
5763
5764 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_0,
5765 scm_trampoline_1, scm_trampoline_2): Postpone error cases to the
5766 end of an if-else-if-sequence of checks.
5767
9a069bdd
DH
57682003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
5769
5770 * eval.c (SCM_CEVAL): Improved readability of call-with-values
5771 execution. Generalize apply_closure to apply_proc and use that
5772 for call-with-values.
5773
e910e9d2
DH
57742003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
5775
5776 * eval.c (SCM_CEVAL): Avoid one level of indirection when applying
5777 a non closure.
5778
1e498fbd
SJ
57792003-05-30 Stefan Jahn <stefan@lkcc.org>
5780
5781 * posix.c (s_scm_putenv): Use the new HAVE_UNSETENV
5782 appropriately for mingw32 hosts.
5783
5784 * numbers.h: Defining copysign(), isnan() and finite() to
5785 be prefixed by a single '_' for mingw32 hosts.
5786
c47e2599
KR
57872003-05-30 Kevin Ryde <user42@zip.com.au>
5788
5789 * numbers.c (z_negative_one): New variable.
5790 (scm_init_numbers): Initialize it.
5791 (scm_logcount): Use it and mpz_hamdist to count zeros for negatives.
5792
2e945bcc
SJ
57932003-05-29 Stefan Jahn <stefan@lkcc.org>
5794
5795 * win32-dirent.c: Use malloc() instead of scm_malloc().
5796
5797 * stime.c (s_scm_strftime): Add a type cast to avoid compiler
5798 warning.
5799
5800 * posix.c (s_scm_putenv): Disable use of unsetenv() for the
5801 mingw32 build.
5802
5803 * modules.c (s_scm_module_import_interface): Renamed local
5804 variable interface to _interface. Seems like 'interface'
5805 is a special compiler directive for the mingw32 compiler.
5806
5807 * mkstemp.c: Provide prototype to avoid compiler warning.
5808
5809 * load.c (s_scm_search_path): Fixed absolute and relative
5810 path detections for native Windows platforms.
5811
5812 * gc.h, threads.h: Export some more symbols using SCM_API (necessary
5813 to build on mingw32).
5814
5815 * gc-freelist.c ("s_scm_map_free_list",
5816 "s_scm_gc_set_debug_check_freelist_x"): Fixed use of FUNC_NAME.
5817
5818 * fports.c (fport_fill_input): Disable use of
5819 fport_wait_for_input() on Win32 platforms.
5820
5821 * filesys.c (s_scm_basename): Fixed __MINGW32__ code.
5822
5823 * Makefile.am: Modified some rules for cross compiling.
5824
ddd8f927
DH
58252003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5826
5827 * eval.c (SCM_CEVAL): In case of an application, all checks for a
5828 proper function object and the correct number of arguments are now
5829 performed in the application part of SCM_CEVAL.
5830
5831 (scm_badformalsp): Removed.
5832
f8ba2197
DH
58332003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5834
5835 * deprecated.c (scm_read_and_eval_x): Fixed C99-ism.
5836
79f55b7c
MD
58372003-05-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5838
a502595f
MD
5839 * num2integral.i.c (NUM2INTEGRAL): Avoid warning about conditional
5840 always being false by inserting preprocessor conditional. (Thanks
5841 to Bruce Korb.)
5842
79f55b7c
MD
5843 * __scm.h (SCM_STACK_PTR): New macro. (Cast argument through
5844 (void *) in order to avoid an aliasing warning; thanks to Bruce
5845 Korb.)
5846
5847 * stackchk.h (SCM_STACK_OVERFLOW_P): Use SCM_STACK_PTR.
5848
5849 * threads.c (suspend, launch_thread, scm_threads_mark_stacks): Use
5850 SCM_STACK_PTR.
5851
5852 * threads.c (scm_threads_mark_stacks): Bugfix: Changed
5853 thread->base --> t->base.
5854
5855 * eval.c (SCM_CEVAL): Don't cast argument of SCM_STACK_OVERFLOW_P.
5856
47dee228
MV
58572003-05-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5858
5859 * deprecated.h, deprecated.c (scm_makstr, scm_makfromstr,
5860 scm_variable_set_name_hint, scm_builtin_variable,
5861 scm_internal_with_fluids, scm_make_gsubr,
5862 scm_make_gsubr_with_generic, scm_create_hook, SCM_LIST0,
5863 SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5, SCM_LIST6,
5864 SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify, scm_sloppy_memq,
85494587
MV
5865 scm_sloppy_memv, scm_sloppy_member, scm_read_and_eval_x,
5866 scm_subr_entry, SCM_SUBR_DOC, scm_make_subr,
5867 scm_make_subr_with_generic, scm_make_subr_opt,
5868 scm_call_catching_errors, scm_make_smob_type_mfpe,
5869 scm_set_smob_mfpe, scm_strprint_obj, scm_read_0str, scm_eval_0str,
5870 SCM_CHARS, SCM_UCHARS, SCM_LENGTH): Re-added from the release_1_6
5871 branch. Some have been slightly rewritten.
5872 (scm_i_object_chars, scm_i_object_length): New, to support
5873 SCM_CHARS, SCM_UCHARS, and SCM_LENTH.
5874
e681d187
DH
58752003-05-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
5876
5877 * eval.c (scm_m_do, unmemocopy, SCM_CEVAL): Reversed order of
5878 names and inits in the memoized code of do.
5879
7e59d9d4
MD
58802003-05-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5881
5882 * c-tokenize.lex (yyget_lineno, yyget_in, yyget_out, yyget_leng,
5883 yyget_text, yyset_lineno, yyset_in, yyset_out, yyget_debug,
5884 yyset_debug, yylex_destroy): Added prototypes (otherwise we'll get
5885 a compilation error if error-on-warning is enabled).
5886
9950a42c
MV
58872003-05-17 Marius Vollmer <mvo@zagadka.de>
5888
5889 * c-tokenize.lex: Gobble up complete lines after a '#'. This
5890 removes preprocessor directives from the snarfage that might
5891 otherwise confuse us. These directives appear when compiling with
5892 "-g3", for example.
5893
0068984b
HWN
58942003-05-16 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5895
26e68795
HWN
5896 * ChangeLog: add my surname
5897
0068984b
HWN
5898 * srcprop.c (scm_finish_srcprop): use
5899 scm_gc_register_collectable_memory()
5900 (scm_make_srcprops): idem.
5901
131805f0
HWN
59022003-05-14 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5903
5904 * gc-malloc.c (scm_gc_register_collectable_memory): avoid
5905 wrap-around for scm_mtrigger
5906 (scm_gc_register_collectable_memory): abort on overflowing
5907 scm_mallocated().
5908
d4611024
KR
59092003-05-13 Kevin Ryde <user42@zip.com.au>
5910
5911 * numbers.c (xmpz_cmp_d): New macro, handling infs if gmp doesn't.
5912 (scm_num_eq_p, scm_less_p, scm_max, scm_min): Use it.
5913
7aaf8dc9
MD
59142003-05-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5915
dfd03fb9
MD
5916 * backtrace.c (scm_display_error_message): Introduced fancy
5917 printing with max level 7 and length 10. (Purpose: avoid printing
5918 gigantic objects in error messages.)
5919
5920 * print.c, print.h (scm_i_port_with_print_state): New function.
5921
5922 * print.c (scm_iprin1, scm_printer_apply,
5923 scm_port_with_print_state): Use scm_i_port_with_print_state.
5924 (scm_simple_format): Modified not to destroy print states.
5925 (print_state_mutex): New mutex.
5926 (scm_make_print_state, scm_free_print_state, scm_prin1):
5927 Lock/unlock print_state_mutex.
5928
7aaf8dc9
MD
5929 * deprecated.h (SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK):
5930 Use current names in definitions.
5931
a4d9ffa1
KR
59322003-05-10 Kevin Ryde <user42@zip.com.au>
5933
5934 * numbers.c (scm_num_eq_p, scm_less_p): Don't pass NaN to mpz_cmp_d.
5935
d25e96a4
KR
5936 * numbers.c (scm_integer_length): On negative bignums, adjust
5937 mpz_sizeinbase to account for it looking at absolute value where we
5938 want ones-complement.
5939
5940 * numbers.c (scm_gcd): In bignum/inum, don't pass yy==0 to mpz_gcd_ui
5941 since we're only using the ulong return value, and x might not fit.
5942
5bf6a6f0
DH
59432003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5944
5945 * eval.c, eval.h, read.c, read.h (scm_sym_dot): Moved from eval to
5946 read. This will allow to make the definition in read.c static.
5947
f58c472a
DH
59482003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5949
5950 * eval.c, eval.h, evalext.c, evalext.h (scm_m_undefine): Moved
5951 from evalext to eval. This will allow to make some of the
5952 definitions in eval.c static.
5953
90382aeb
KR
59542003-05-06 Kevin Ryde <user42@zip.com.au>
5955
5956 * numbers.c (scm_difference): In inum - bignum, handle negative inum.
5957 (scm_logcount): Use mpz_com, not mpz_neg.
5958
3b88ed2a
DH
59592003-05-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5960
5961 The purpose of this patch is to make guile's internal memoizers
5962 distinguishable from memoizing macros created on the scheme level
5963 or from user provided primitive memoizing macros. The reason is,
5964 that the internal memoizers are the only ones that are allowed to
5965 transform their scheme input into memoizer byte code, while all
5966 other memoizing macros may only transform scheme code into new
5967 scheme code.
5968
5969 To achieve this, a new macro type 'builtin-macro!' is introduced.
5970 Currently, 'builtin-macro!'s are handled as memoizing macros, but
5971 this will change when the memoizer and executor are separated.
5972
5973 * macros.[ch] (scm_i_makbimacro): New.
5974
5975 * macros.h (SCM_BUILTIN_MACRO_P): New.
5976
5977 * macros.c (macro_print, scm_macro_type): Support builtin-macro!s.
5978
5979 * eval.c, goops.c: All of guile's primitive memoizing macros are
5980 primitive builtin-macros now.
5981
5982 * eval.c (scm_macroexp, SCM_CEVAL): Make sure the primitive
5983 builtin-macros are handled equally to memoizing macros.
5984
b0780eb1
MV
59852003-05-04 Marius Vollmer <mvo@zagadka.de>
5986
5987 * throw.c (scm_ithrow): Remove "asm volatile" hack. It used to
5988 work around a bug in GCC 2.95.2 but is now a bug in itself.
5989
1cbf4fe9
MV
59902003-05-02 Marius Vollmer <mvo@zagadka.de>
5991
5992 * deprecated.h (scm_rstate, scm_rng, SCM_SLOPPY_CONSP,
5993 SCM_SLOPPY_NCONSP, scm_tc7_ssymbol, scm_tc7_msymbol,
5994 scm_tcs_symbols): New.
5995
1a61d41b
MV
59962003-04-30 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5997
096ecbaf
MV
5998 * deprecated.h, deprecated.c (scm_protect_object,
5999 scm_unprotect_object, SCM_SETAND_CAR, SCM_SETOR_CAR,
6000 SCM_SET_AND_CDR, SCM_SET_OR_CDR, SCM_FREEP, SCM_NFREEP,
6001 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
6002 SCM_GCCDR, scm_remember, scm_the_root_module, scm_make_module,
6003 scm_ensure_user_module, scm_load_scheme_module, scm_port,
6004 scm_ptob_descriptor, scm_port_rw_active,
6005 scm_close_all_ports_except): New.
6006
1a61d41b
MV
6007 * ports.c (scm_c_port_for_each): New function, mostly copied from
6008 scm_port_for_each.
6009 (scm_port_for_each): Reimplemented using scm_c_port_for_each.
6010 * ports.h (scm_c_port_for_each): New prototype.
6011
c8e1d354
MD
60122003-04-28 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6013
6014 * eval.c (scm_m_atdispatch): Removed until actually needed. (This
6015 macro was introduced in anticipation of GOOPS method compilation
6016 code.)
6017
6018 * goops.c: Removed binding of @dispatch.
6019
a4aa2134
DH
60202003-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
6021
6022 * eval.c, goops.c (@dispatch, @slot-ref, @slot-set!): Move the
6023 instructions that bind the macros on the scheme level back to
6024 goops.c in order to make sure again that the bindings go into the
6025 (oop goops) module and are not visible from the outside.
6026
9fbee57e
DH
60272003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6028
6029 * eval.c: Non functional change: Separated R5RS and non-R5RS
6030 macros into different sections of the file and ordered the
6031 memoizers alphabetically.
6032
12841895
DH
60332003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6034
6035 * eval.c (scm_ilookup): Rewritten to improve readability.
6036
6a3f13f0
DH
60372003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6038
6039 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
6040 Partially reverted patch from 2003-04-23 in oder to find a better
6041 compromise between readability and debuggability.
6042
b0c5d67b
DH
60432003-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6044
6045 * eval.c, eval.h, goops.c, goops.h (scm_m_atslot_ref,
6046 scm_m_atslot_set_x, scm_m_atdispatch): Move the declarations and
6047 definitions of the special goops memoizers from goops.[ch] to
6048 eval.[ch]. Hmm... it seems that scm_m_atdispatch is not used
6049 throughout guile.
6050
b9ad392e
MD
60512003-04-24 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6052
6053 * ports.c, ports.h (scm_i_port_table_mutex): New mutex.
6054
6055 * fports.c (scm_evict_ports): Lock/unlock scm_i_port_table_mutex.
6056
6057 * ports.c (scm_close_port, scm_flush_all_ports): Ditto.
6058
6059 * ioext.c (scm_fdes_to_ports): Ditto.
6060
6061 * vports.c (scm_make_soft_port): Changed SCM_DEFER/ALLOW_INTS into
6062 lock/unlock scm_i_port_table_mutex.
6063
6064 * strports.c (scm_mkstrport): Ditto.
6065
6066 * ports.c (scm_void_port, scm_port_for_each): Ditto.
6067
6068 * fports.c (scm_fdes_to_port): Ditto.
6069
d0b07b5d
DH
60702003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6071
6072 This set of patches contains no functional changes, only debatable
6073 minor stylistic ones. Still, in order to prepare a patch between
6074 my local copy and the CVS version, I decided to submit the changes
6075 below. Then, the patch will hopefully only contain relevant
6076 modifications :-)
6077
6078 * eval.c (iqq): Added const specifier.
6079
6080 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
6081 Use NULL instead of 0 to indicate that a pointer is returned.
6082 Removed some misleading 'fall through' comments.
6083
6084 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
6085 Split up long expressions into smaller ones to be more debugging
6086 friendly.
6087
a98e8e98
DH
60882003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6089
6090 * eval.h (SCM_ENTER_FRAME_HDLR, SCM_APPLY_FRAME_HDLR,
6091 SCM_EXIT_FRAME_HDLR): Use SCM_PACK to convert data to a SCM value
6092 rather than casting to SCM.
6093
c178c3a6
DH
60942003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6095
6096 * sort.c, pairs.h: Removed unnecessary includes.
6097
d339981a
DH
60982003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6099
6100 * sort.c: Replaced hand-made trampline code by the new official
6101 mechanism from eval.c. This fixes a segfault in the new test file
6102 sort.test.
6103
6104 (quicksort, compare_function, scm_restricted_vector_sort_x,
6105 scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
6106 scm_merge_list_step, scm_sort_x, scm_sort, scm_merge_vector_x,
6107 scm_merge_vector_step, scm_stable_sort_x, scm_stable_sort,
6108 scm_sort_list_x, scm_sort_list): Use trampoline mechanism from
6109 eval.c.
6110
6111 (subr2less, lsubrless, closureless, applyless, scm_cmp_function,
6112 cmp_fun_t): Removed.
6113
6114 (compare_function): Added.
6115
6116 * sort.c (quicksort, SWAP, stack_node): Replaced pointer
6117 arithmetics with index arithmetics. Changed quicksort to work on
6118 an array of SCM values instead of an array of characters. Avoid
6119 bytewise copying of SCM elements. Avoid allocating memory on the
6120 stack with alloca. Fixed some comments.
6121
821f18a4
DH
61222003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6123
6124 * eval.c (EXTEND_ENV): Eliminated.
6125
6126 (unmemocopy, SCM_CEVAL, SCM_APPLY): Use SCM_EXTEND_ENV instead of
6127 EXTEND_ENV.
6128
94fb5a6e
DH
61292003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6130
6131 * __scm.h (SCM_DEBUG_DEBUGGER_SUPPORT): New compile-time option.
6132
6133 * gc.card.c (scm_gc_marked_p): Fixed compiler warning when
6134 compiling with SCM_DEBUG==1 by moving definition behind prototype.
6135
6136 * gc.card.c (scm_dbg_t_list_cell, scm_dbg_t_double_cell,
6137 scm_dbg_gc_marked_p, scm_dbg_gc_get_card, scm_dbg_gc_get_bvec,
6138 scm_t_list_cell_struct, scm_t_list_cell, scm_t_double_cell,
6139 scm_gc_marked_p, scm_gc_get_card, scm_gc_get_bvec): Fixed
6140 functions such that they check if the object is a non-immediate.
6141 Further, renamed identifiers to use the scm_dbg_ prefix and made
6142 their inclusion into the lib dependent of the
6143 SCM_DEBUG_DEBUGGER_SUPPORT compile time option.
6144
fce0b22d
DH
61452003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6146
6147 * __scm.h: Fixed comment about the SCM_DEBUG_TYPING_STRICTNESS
6148 debug option.
6149
1685446c
DH
61502003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6151
821f18a4 6152 * list.c (scm_ilength, scm_last_pair), unif.c (l2ra): Prefer
1685446c
DH
6153 !SCM_CONSP over SCM_NCONSP. Now, guile itself does not include
6154 any calls to SCM_NCONSP any more.
6155
6156 * unif.c (l2ra): Eliminate redundant check.
6157
9ff1720f
DH
61582003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6159
6160 * list.c (scm_cons_star), ramap.c (scm_ra_sum, scm_ra_product,
6161 scm_array_map_x), unif.c (l2ra): Prefer !SCM_NULLP over
6162 SCM_NNULLP. Now, guile itself does not include any calls to
6163 SCM_NNULLP any more.
6164
05b15362
DH
61652003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6166
6167 * eval.c (unmemocopy, SCM_APPLY, scm_map, scm_for_each,
6168 scm_copy_tree): Place assignment expressions which are part of
6169 other expressions into an expression of their own.
6170
0c88d7df
DH
61712003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6172
6173 * goops.c (TEST_CHANGE_CLASS, scm_sys_initialize_object): Don't
6174 compare SCM values with !=.
6175
5cb22e96
DH
61762003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6177
6178 * eval.c, eval.h, evalext.c, evalext.h (scm_sym_setter,
6179 scm_m_generalized_set_x, scm_init_evalext): Move the declaration
6180 and definition of the memoizer for the generalized set! macro from
6181 evalext.[ch] to eval.[ch]. Use the SCM_SYNTAX snarfer macro to
6182 define the macro object.
6183
6184 * eval.c, eval.h (s_set_x, scm_s_set_x, scm_m_set_x,
6185 scm_m_generalized_set_x): Since now scm_s_set_x is only used in
6186 eval.c, it is made static and renamed to s_set_x.
6187
6188 * evalext.c (scm_defined_p, scm_m_undefine): Prefer !SCM_<foo>
6189 over SCM_N<foo>.
6190
a44a9715
DH
61912003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6192
6193 * eval.c, root.h (scm_undefineds, SCM_NUM_PROTECTS, undefineds,
6194 scm_init_eval): Made scm_undefineds static in eval.c, renamed it
6195 to undefineds and registered the object as a permanent object.
6196
6197 * eval.c, eval.h (scm_f_apply, scm_init_eval): Made scm_f_apply
6198 static in eval.c, renamed it to f_apply and registered the object
6199 as a permanent object.
6200
1b43d24c
DH
62012003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6202
5cb22e96 6203 * eval.c (SCM_BIT7, SCM_BIT8, unmemocopy, SCM_CEVAL): Renamed
1b43d24c
DH
6204 file-local macro SCM_BIT8 to SCM_BIT7, which is more appropriate.
6205
aec16f99
DH
62062003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6207
6208 * numbers.c (scm_logtest): Fixed argument bug in the call to
6209 mpz_and, which showed up when compiling with SCM_DEBUG defined.
6210
f96460ce
DH
62112003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6212
6213 * gc-card.c (scm_i_sweep_card, scm_i_init_card_freelist): Fixed
6214 type errors that showed up when compiling with SCM_DEBUG defined.
6215
d0f6ceb8
DH
62162003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6217
6218 * continuations.c, continuations.h, eval.c, eval.h, extensions.c,
6219 gsubr.c, guile.c, init.c, read.c, root.c, root.h, stackchk.h,
6220 throw.c: Removed uses of DEBUG_EXTENSIONS and DYNAMIC_LINKING to
6221 fix compile errors with --disable-deprecated.
6222
19a7a089
RB
62232003-04-17 Rob Browning <rlb@defaultvalue.org>
6224
6225 * numbers.c (scm_integer_expt): fix case where we were declaring
6226 vars in the middle of a statement block. Thanks to Thamer
6227 Al-Harbash.
6228
47cd67db
MD
62292003-04-17 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6230
0fd7dcd3
MD
6231 * goops.c (TEST_CHANGE_CLASS): Update variable class after class
6232 change.
6233
47cd67db
MD
6234 * eq.c (scm_eqv_p): Turned into a primitive generic.
6235
3b8b889c
RB
62362003-04-16 Rob Browning <rlb@defaultvalue.org>
6237
312006bb
RB
6238 * gc_os_dep.c: Added patch for UnixWare and OpenUNIX support.
6239 Thanks to Boyd Gerber.
6240 Added check for __arm__ in addition to arm for LINUX and copied
6241 __s390__ defines from upstream libgc. Thanks to James Treacy for
6242 reporting the problems.
c7ef2ea1 6243
3b8b889c
RB
6244 * numbers.c (PTRDIFF_MIN): use SCM_CHAR_BIT.
6245
6246 * socket.c: use SCM_CHAR_BIT.
6247
6248 * random.c (scm_c_random_bignum): use SCM_CHAR_BIT.
6249
6250 * num2integral.i.c (NUM2INTEGRAL): use SCM_CHAR_BIT.
6251
43261b39
MD
62522003-04-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6253
6254 * feature.c (scm_init_feature): Always add threads feature.
6255
58241edc
MD
62562003-04-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6257
6258 * goops.c (scm_sys_fast_slot_ref): Use SCM_SLOT instead of
6259 scm_at_assert_bound_ref. (We don't want the unbound check. See
6260 oop/goops/active-slot.scm.)
6261
94e91275
RB
62622003-04-14 Rob Browning <rlb@defaultvalue.org>
6263
6264 * tags.h: scm_t_intptr should have been intptr_t.
6265
3071ea27
RB
62662003-04-13 Rob Browning <rlb@defaultvalue.org>
6267
6268 * __scm.h (SCM_FLUSH_REGISTER_WINDOWS): don't just rely on "sparc"
6269 test. Instead use
6270 #if defined (sparc) || defined (__sparc__) || defined (__sparc)
6271 as gc_os_dep.c suggests is appropriate.
6272
6273 * goops.c (prep_hashsets): make static to match prototype.
6274 (scm_sym_args): SCM_SYMBOL -> SCM_GLOBAL_SYMBOL. Thanks to Albert
6275 Chin.
6276
6277 * c-tokenize.lex: remove trailing comma from enum. Thanks to
6278 Albert Chin.
6279
6280 * gc_os_dep.c: add NetBSD powerpc config info. Thanks to Thomas
6281 Klausner.
6282
21ab2aeb
MD
62832003-04-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6284
6285 * goops.c (scm_sys_prep_layout_x): Instance allocation is now
6286 indicated through extra fields in getters-n-setters.
6287 (scm_add_slot): Adapted to new format of getters_n_setters slot.
6288 (Thanks to Andy Wingo.)
6289
dff96e95
HWN
62902003-02-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6291
6292 * gc-segment.c: add comment
6293
07921c76
RB
62942003-04-07 Rob Browning <rlb@defaultvalue.org>
6295
b5331f10
RB
6296 * debug.h: change "id" arg name to "info_id" to avoid objective-c
6297 clash.
6298
07921c76
RB
6299 * num2integral.i.c (NUM2INTEGRAL): fix bug pointed out by Mikael
6300 and add regression test to standalone/.
6301
63022003-04-06 Rob Browning <rlb@defaultvalue.org>
6303
6304 * strings.c (scm_mem2string): use memcpy rather than by-hand loop.
6305 Thanks to Dale P. Smith.
6306
6307 * random.c: #include gmp.h.
6308 (scm_c_random_bignum): normalize result on return.
6309
6310 * init.c: #include gmp.h.
6311
6312 * numbers.h: remove the gmp.h #include (not needed now).
6313
6314 * posix.h: change occurences of "id" to something else so we don't
6315 cause trouble when included via objective-c (can't hurt, might
6316 help). Still have usage in debug.h, though.
6317
938f6b7c
MD
63182003-04-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6319
372691d8
MD
6320 * random.c (scm_c_random_bignum): Don't generate a random number
6321 equal to m (the second argument of scm_c_random_bignum); only
6322 generate numbers in the range 0 <= r < m.
c5f268f8
MD
6323 (scm_c_default_rstate): Use SCM_VARIABLE_REF to access
6324 scm_var_random_state.
372691d8 6325
938f6b7c
MD
6326 * num2integral.i.c (INTEGRAL2BIG): Put negation of n inside then
6327 clause.
6328
6cdb8c3f
RB
63292003-04-05 Rob Browning <rlb@defaultvalue.org>
6330
938f6b7c 6331 * modules.c (scm_module_import_interface): move declaration of
6cdb8c3f
RB
6332 uses before any code.
6333
15635be5
MD
63342003-04-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6335
1ecfd013
MD
6336 * Makefile.am (scmconfig.h): Look for config.h in top_builddir,
6337 not top_srcdir.
6338
15635be5
MD
6339 * hashtab.c (rehash_after_gc): Clear to_rehash list before
6340 processing it in order to avoid an infinite loop.
6341
6342 * print.c (scm_prin1): Remember old state of pstate->writingp.
6343
73be1d9e
MV
63442003-04-05 Marius Vollmer <mvo@zagadka.de>
6345
6346 * Changed license terms to the plain LGPL thru-out.
6347
ad815c06
RB
63482003-04-04 Rob Browning <rlb@defaultvalue.org>
6349
6350 * socket.c (FLIPCPY_NET_HOST_128): new macro.
6351 (ipv6_net_to_num, ipv6_num_to_net, bignum_in_ipv6_range_p):
6352 rewrite to handle GMP bignums.
6353
6354
6355 * random.c (scm_c_random_bignum): rewrite to handle GMP bignums.
6356
6357 * ports.c (scm_getc): minor tweak.
6358
6359 * numbers.h: remove SCM_BIGDIG conditionals, reorganize, and
6360 rewrite to handle GMP bignums.
6361
6362 * numbers.c: rewrite *many* functions to handle GMP bignums.
6363
6364 * num2integral.i.c (NUM2INTEGRAL, INTEGRAL2NUM, INTEGRAL2BIG):
6365 handle GMP bignums.
6366
6367 * num2float.i.c (NUM2FLOAT): handle GMP bignums.
6368
6369 * init.c (check_config): remove SCM_BIGDIG conditionals.
6370 (scm_init_guile_1): test to make sure mpz_t fits in a double_cell.
6371
6372 * gc-card.c ("sweep_card"): handle new mpz_t bignums.
6373
6374 * eval.c: remove SCM_BIGDIG conditionals.
6375
6376 * eq.c (s_scm_eqv_p): scm_i_bigcomp -> scm_i_bigcmp.
6377
6cdb8c3f
RB
63782003-03-31 Rob Browning <rlb@defaultvalue.org>
6379
6380 * Makefile.am (scmconfig.h): change srcdir to builddir. (Thanks
6381 to Kevin Ryde.)
6382
63832003-03-27 Rob Browning <rlb@defaultvalue.org>
6384
6385 * threads.h: 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 * threads.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 * tags.h: 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 * stacks.c: 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 * stackchk.h: 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 * stackchk.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 * sort.c: 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 * read.c: 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 * random.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 * print.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 * objects.c: 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 * numbers.h: fix various preprocessor usages of new public
6430 symbols to expect 0 or 1 values rather than 1 or undefined.
6431 i.e. change #ifdef to #if, etc.
6432
6433 * null-threads.c: fix various preprocessor usages of new public
6434 symbols to expect 0 or 1 values rather than 1 or undefined.
6435 i.e. change #ifdef to #if, etc.
6436
6437 * lang.c: 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 * lang.h: 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 * iselect.h: 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 * init.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 * gh_data.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 * gh.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 * gen-scmconfig.c: change most new public symbols to be defined to
6462 0 or 1 rather than being either 1 or undefined.
6463
6464 * gc_os_dep.c: fix various preprocessor usages of new public
6465 symbols to expect 0 or 1 values rather than 1 or undefined.
6466 i.e. change #ifdef to #if, etc.
6467 (STACK_GROWS_DOWN): define to 0 or 1 rather than 1 or undef.
6468
6469 * gc.h: 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 * gc-card.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 * gc-mark.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 * feature.c: 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 * evalext.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 * eval.h: 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 * eval.c: fix various preprocessor usages of new public
6494 symbols to expect 0 or 1 values rather than 1 or undefined.
6495 i.e. change #ifdef to #if, etc.
6496
6497 * eq.c: fix various preprocessor usages of new public
6498 symbols to expect 0 or 1 values rather than 1 or undefined.
6499 i.e. change #ifdef to #if, etc.
6500
6501 * coop.c: fix various preprocessor usages of new public
6502 symbols to expect 0 or 1 values rather than 1 or undefined.
6503 i.e. change #ifdef to #if, etc.
6504
6505 * coop-threads.c: fix various preprocessor usages of new public
6506 symbols to expect 0 or 1 values rather than 1 or undefined.
6507 i.e. change #ifdef to #if, etc.
6508
6509 * coop-pthreads.c: fix various preprocessor usages of new public
6510 symbols to expect 0 or 1 values rather than 1 or undefined.
6511 i.e. change #ifdef to #if, etc.
6512
6513 * coop-defs.h: fix various preprocessor usages of new public
6514 symbols to expect 0 or 1 values rather than 1 or undefined.
6515 i.e. change #ifdef to #if, etc.
6516
6517 * convert.i.c: fix various preprocessor usages of new public
6518 symbols to expect 0 or 1 values rather than 1 or undefined.
6519 i.e. change #ifdef to #if, etc.
6520
6521 * continuations.c: fix various preprocessor usages of new public
6522 symbols to expect 0 or 1 values rather than 1 or undefined.
6523 i.e. change #ifdef to #if, etc.
6524
6525 * _scm.h: fix various preprocessor usages of new public symbols to
6526 expect 0 or 1 values rather than 1 or undefined. i.e. change
6527 #ifdef to #if, etc.
6528
d11d697a
MV
65292003-03-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6530
9686f86d
MV
6531 * init.c (scm_init_guile_1): Call scm_i_init_deprecated.
6532
6533 * deprecated.c, deprecated.h: New files, to collect deprecated
6534 things in one place.
6535 * Makefile.am: Added them in all the right places.
6536
d11d697a
MV
6537 * Makefile.am (EXTRA_DIST): Added "scmconfig.h.top".
6538 (scmconfig.h): Get "scmconfig.h.top" from $(srcdir) so that VPATH
6539 builds work.
9686f86d
MV
6540 (DOT_X_FILES): Removed "iselect.x".
6541 (DOT_DOC_FILES): Removed "iselect.doc".
d11d697a 6542
e3c0c3b9
RB
65432003-03-25 Rob Browning <rlb@defaultvalue.org>
6544
6545 * win32-socket.h: #include "libguile/__scm.h". Replace usage of
6546 HAVE_WINSOCK2_H with SCM_HAVE_WINSOCK2_H.
6547
6548 * win32-socket.c: #include <config.h> if HAVE_CONFIG_H.
6549
6550 * vports.c: #include <config.h> if HAVE_CONFIG_H.
6551
6552 * unif.c: #include <config.h> if HAVE_CONFIG_H. Replace usage of
6553 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6554
6555 * threads.h: replace usage of struct timespect with
6556 scm_t_timespec. Replace usage of USE_PTHREAD_THREADS with
6557 SCM_USE_PTHREAD_THREADS. Remove typedef for struct timespec in
6558 favor of scm_t_timespec from scmconfig.h.
6559
6560 * threads.c: move libguile/_scm.h include to the top so we pick up
6561 any critical defines like _GNU_SOURCE early. Replace usage of
6562 struct timespect with scm_t_timespec. Replace usage of
6563 STACK_GROWS_UP with SCM_STACK_GROWS_UP. Replace usage of
6564 USE_PTHREAD_THREADS with SCM_USE_PTHREAD_THREADS.
6565
6566 * threads-plugin.h: replace usage of struct timespect with
6567 scm_t_timespec.
6568
6569 * threads-plugin.c: #include <config.h> if HAVE_CONFIG_H. Replace
6570 usage of struct timespect with scm_t_timespec.
6571
6572 * tags.h: move HAVE_STDINT_H handling to scmconfig.h. Move
6573 HAVE_INTTYPES_H handling to scmconfig.h. #include
6574 "libguile/__scm.h". Rework handling for scm_t_bits,
6575 scm_t_signed_bits, SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
6576 SCM_T_SIGNED_BITS_MIN, and SIZEOF_SCM_T_BITS to use scm_t_intptr,
6577 scm_t_uintptr, SCM_SIZEOF_INTPTR_T, and SCM_SIZEOF_UINTPTR_T, and
6578 SCM_SIZEOF_UNSIGNED_LONG. Rename usage of HAVE_ARRAYS to
6579 SCM_HAVE_ARRAYS.
6580
6581 * symbols.c: #include <config.h> if HAVE_CONFIG_H.
6582
6583 * struct.c: #include <config.h> if HAVE_CONFIG_H.
6584
6585 * strports.c: #include <config.h> if HAVE_CONFIG_H.
6586
6587 * strop.c: #include <config.h> if HAVE_CONFIG_H.
6588
6589 * stime.h: move handling of time related headers to scmconfig.h.
6590
6591 * stime.c: #include <config.h> if HAVE_CONFIG_H.
6592
6593 * stacks.c: replace usage of STACK_GROWS_UP with
6594 SCM_STACK_GROWS_UP.
6595
6596 * sort.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
6597 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6598
6599 * socket.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
6600 of uint32 and HAVE_UINT_32 with scm_t_int32.
6601
6602 * smob.c: #include <config.h> if HAVE_CONFIG_H.
6603
6604 * simpos.c: #include <config.h> if HAVE_CONFIG_H.
6605
6606 * script.c: #include <config.h> if HAVE_CONFIG_H.
6607
6608 * scmsigs.c: #include <config.h> if HAVE_CONFIG_H.
6609
6610 * scmconfig.h.top: new file -- preamble for scmconfig.h.
6611
6612 * rw.c: #include <config.h> if HAVE_CONFIG_H.
6613
6614 * regex-posix.c: #include <config.h> if HAVE_CONFIG_H.
6615
6616 * read.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6617
6618 * rdelim.c: #include <config.h> if HAVE_CONFIG_H.
6619
6620 * random.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
6621 of LONG32, LONG64, SIZEOF_LONG, and HAVE_LONG_LONGS with
6622 scm_t_int32, scm_t_int64, and SCM_HAVE_T_INT64. Rename usage of
6623 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6624
6625 * ramap.c: replace usage of HAVE_LONG_LONGS with
6626 "SCM_SIZEOF_LONG_LONG != 0".
6627
6628 * putenv.c: #include <config.h> if HAVE_CONFIG_H. #include
6629 "libguile/scmconfig.h".
6630
6631 * pthread-threads.c: #include <config.h> if HAVE_CONFIG_H.
6632
6633 * print.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6634 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6635
6636 * posix.c: #include <config.h> if HAVE_CONFIG_H.
6637
6638 * ports.c: #include <config.h> if HAVE_CONFIG_H.
6639
6640 * objects.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6641
6642 * numbers.h: replace usage of HAVE_FLOATINGPOINT_H with
6643 SCM_HAVE_FLOATINGPOINT_H. Replace usage of HAVE_IEEEFP_H with
6644 SCM_HAVE_IEEEFP_H. Replace usage of HAVE_NAN_H with
6645 SCM_HAVE_NAN_H. Replace usage of STDC_HEADERS with
6646 SCM_HAVE_STDC_HEADERS. Replace usage of ptrdiff_t with
6647 scm_t_ptrdiff. Replace usage of HAVE_LONG_LONGS with
6648 "SCM_SIZEOF_LONG_LONG != 0".
6649
6650 * numbers.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
6651 of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0". Replace
6652 usage of ptrdiff_t with scm_t_ptrdiff. Replace usage of
6653 SIZEOF_PTRDIFF_T with SCM_SIZEOF_SCM_T_PTRDIFF.
6654
6655 * num2integral.i.c: #include <config.h> if HAVE_CONFIG_H.
6656
6657 * null-threads.h: replace usage of struct timespect with
6658 scm_t_timespec.
6659
6660 * net_db.c: #include <config.h> if HAVE_CONFIG_H.
6661
6662 * mkstemp.c: #include <config.h> if HAVE_CONFIG_H. #include
6663 "libguile/__scm.h". Remove definition of gcc_uint64_t in favor of
6664 scm_t_uint64 and rename usages.
6665
6666 * mallocs.c: #include <config.h> if HAVE_CONFIG_H.
6667
6668 * load.c: #include <config.h> if HAVE_CONFIG_H.
6669
6670 * iselect.h: move handling of time related headers to scmconfig.h.
6671 Rename usage of HAVE_SYS_SELECT_H to SCM_HAVE_SYS_SELECT_H.
6672 Rename usage of HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Rename
6673 usage of USE_COOP_THREADS to SCM_USE_COOP_THREADS.
6674
6675 * iselect.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6676 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
6677 USE_NULL_THREADS to SCM_USE_NULL_THREADS.
6678
6679 * ioext.c: #include <config.h> if HAVE_CONFIG_H.
6680
6681 * inline.h: #include "libguile/__scm.h" at the top. Change code
6682 to use SCM_C_INLINE and SCM_INLINE_C_INCLUDINT_INLINE_H to decide
6683 what to do instead of creating a new public #define. Rename usage
6684 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
6685 USE_NULL_THREADS to SCM_USE_NULL_THREADS. Rename usage of
6686 USE_COPT_THREADS to SCM_USE_COPT_THREADS.
6687
6688 * inline.c: rearrange handling -- now we just #define
6689 SCM_INLINE_C_INCLUDING_INLINE_H to 1 and #include
6690 "libguile/inline.h". scmconfig.h will define SCM_C_INLINE as
6691 appropriate, and we use that in inline.h along with the above
6692 define to determine how to respond.
6693
6694 * init.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
6695 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6696
6697 * guile.c: #include <config.h> if HAVE_CONFIG_H.
6698
6699 * gh_data.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6700 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6701
6702 * gh.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6703
6704 * gen-scmconfig.h.in: new file -- see gen-scmconfig.c for details.
6705
6706 * gen-scmconfig.c: new file -- see comments in file for details.
6707
6708 * gdbinit.c: #include <config.h> if HAVE_CONFIG_H.
6709
6710 * gc_os_dep.c: #include <config.h> if HAVE_CONFIG_H. Replace
6711 usage of STACK_GROWS_UP with SCM_STACK_GROWS_UP.
6712
6713 * gc.h: replace usage of SIZEOF_LONG with
6714 SCM_SIZEOF_UNSIGNED_LONG. Replace usage of USE_PTHREAD_THREADS
6715 with SCM_USE_PTHREAD_THREADS. Remove SCM_SIZEOF_LONG definition
6716 since we handle that in scmconfig.h now.
6717
6718 * gc.c: #include <config.h> if HAVE_CONFIG_H.
6719
6720 * gc-mark.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6721 of HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of
6722 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6723
6724 * gc-malloc.c: #include <config.h> if HAVE_CONFIG_H.
6725
6726 * gc-card.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6727 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6728
6729 * fports.c: #include <config.h> if HAVE_CONFIG_H.
6730
6731 * filesys.c: #include <config.h> if HAVE_CONFIG_H.
6732
6733 * feature.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6734 of USE_NULL_THREADS to SCM_USE_NULL_THREADS.
6735
6736 * extensions.c: #include <config.h> if HAVE_CONFIG_H.
6737
6738 * evalext.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6739 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6740
6741 * eval.c: #include <config.h> if HAVE_CONFIG_H. #include
6742 "libguile/__scm.h" rather than scmconfig.h. Rename usage of
6743 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
6744 with "SCM_SIZEOF_LONG_LONG != 0".
6745
6746 * error.c: #include <config.h> if HAVE_CONFIG_H.
6747
6748 * eq.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
6749 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
6750 with "SCM_SIZEOF_LONG_LONG != 0".
6751
6752 * deprecation.c: #include <config.h> if HAVE_CONFIG_H.
6753
6754 * coop.c: replace usage of struct timespect with scm_t_timespec.
6755 #include <config.h> if HAVE_CONFIG_H.
6756
6757 * coop-threads.c: #include "libguile/_scm.h" early. Replace
6758 usage of struct timespect with scm_t_timespec. Replace usage of
6759 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
6760
6761 * coop-pthreads.c: #include "libguile/_scm.h" early. Replace
6762 usage of struct timespect with scm_t_timespec. Replace usage of
6763 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
6764
6765 * coop-defs.h: move handling of time related headers to
6766 scmconfig.h. Add #include "libguile/__scm.h". Rename usage of
6767 HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Replace usage of struct
6768 timespect with scm_t_timespec.
6769
6770 * convert.i.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6771
6772 * convert.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6773
6774 * convert.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6775 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6776
6777 * continuations.c: move libguile/_scm.h include to the top so we
6778 pick up any critical defines like _GNU_SOURCE early.
6779
6780 * backtrace.c: #include <config.h> if HAVE_CONFIG_H.
6781
6782 * async.c: #include <config.h> if HAVE_CONFIG_H.
6783
6784 * alloca.c: #include <config.h> if HAVE_CONFIG_H.
6785
6786 * _scm.h: #include <config.h> if HAVE_CONFIG_H.
6787 Rename usage of USE_PTHREAD_THREADS to SCM_USE_PTHREAD_THREADS.
6788
6789 * __scm.h: move libguile/scmconfig.h include up to the top, so
6790 we're sure to pick up any critical defines like _GNU_SOURCE early.
6791 #include <limits.h> removed in favor of scmconfig.h inclusion when
6792 appropriate. STDC_HEADERS based inclusion of stdlib.h,
6793 sys/types.h, stddef.h, and sys/stdtypes.h removed in favor of
6794 scmconfig.h inclusion when appropriate. Various Win32 related
6795 definitions removed in favor of scmconfig.h inclusion when
6796 appropriate.
6797 (HAVE_UINTPTR_T): definition removed (see NEWS).
6798 (SIZEOF_PTRDIFF_T): definition removed (see NEWS).
6799 (HAVE_LONG_LONGS): definition removed (see NEWS).
6800 (HAVE_LONG_LONG): definition removed (see NEWS).
6801 (HAVE_PTRDIFF_T): definition removed (see NEWS).
6802
6803 * Makefile.am: scmconfig.h is now generated by building and
6804 running gen-scmconfig.h and capturing its output. gen-scmconfig
6805 uses config.h and the configure.in generated gen-scmconfig.h to
6806 decide what to output. See gen-scmconfig.c for details.
6807 (noinst_PROGRAMS): add gen-scmconfig.
6808 (gen_scmconfig_SOURCES): new variable.
6809 (gen-scmconfig.$(OBJEXT)): new target - be careful to handle
6810 cross-compiling right.
6811 (scmconfig.h): build scmconfig.h from gen-scmconfig's output.
6812 (BUILT_SOURCES): add scmconfig.h.
6813
25e0bf97
MV
68142003-03-19 Marius Vollmer <mvo@zagadka.de>
6815
6816 * gc_os_dep.c: Added defines for sparc-unknown-netbsdelf1.5 from
6817 Adrian Bunk. Thanks!
6818
74b6d6e4
MD
68192003-03-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6820
6821 * goops.c (make_class_from_template): New fourth arg:
6822 applicablep.
6823 (scm_class_extended_generic_with_setter, scm_class_self): Fixed
6824 cpls.
6825
6826 * smob.c (scm_set_smob_apply): Call scm_i_inherit_applicable.
6827
6828 * goops.c, objects.c, objects.h (scm_make_extended_class): New
6829 second arg: applicablep.
6830 (scm_i_inherit_applicable): New function.
6831
6832 * goops.c, goops.h (scm_class_applicable,
6833 scm_class_extended_accessor): New classes.
6834
5c9e7dad
DH
68352003-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
6836
6837 * procs.c (scm_procedure_documentation): Removed redundant
6838 SCM_NIMP test and replaced other calls to SCM_IMP by more explicit
6839 predicates.
6840
f8af5c6d
MD
68412003-03-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6842
c614a00b
MD
6843 * list.c, list.h (scm_filter, scm_filter_x): New functions.
6844
109c2c9f
MD
6845 * modules.c (scm_module_import_interface): New function.
6846
f8af5c6d
MD
6847 * goops.c, goops.h (scm_class_accessor_method): Renamed from
6848 scm_class_accessor.
6849 (scm_class_accessor): New class.
6850
a48d60b1
MD
68512003-03-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6852
6853 * goops.c (scm_primitive_generic_generic): Enable primitive
6854 generic if not enabled.
6855 (scm_sys_goops_loaded): Setup unextended primitive generics.
6856
6857 * goops.c, goops.h (scm_c_extend_primitive_generic): New function.
6858
6859 * snarf.h (SCM_PRIMITIVE_GENERIC, SCM_PRIMITIVE_GENERIC_1): New
6860 snarf macros.
6861
6862 * numbers.c (scm_abs): Use SCM_PRIMITIVE_GENERIC. (This is only a
6863 testing example. All uses of SCM_GPROC should be converted.)
6864
6865 * procprop.c (scm_stand_in_scm_proc): Use scm_assq instead of
6866 scm_assoc.
6867
6868 * eq.c (scm_equal_p): Turned into a primitive generic.
6869
84edc049
RB
68702003-02-27 Rob Browning <rlb@defaultvalue.org>
6871
6872 * Makefile.am (scmconfig.h): new target -- generate file from
6873 ../config.h.
6874 (modinclude_HEADERS): remove version.h.
6875 (nodist_modinclude_HEADERS): add version.h.
6876
ea5c9285
MD
68772003-02-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6878
b4a1358c
MD
6879 This fixes a serious GC bug, introduced during the latest
6880 reorganization of the GC, which disabled freeing of structs and
6881 GOOPS objects:
6882
6883 * struct.c (scm_struct_prehistory): Init scm_i_structs_to_free to
6884 SCM_EOL.
53af8255
MD
6885 (scm_struct_prehistory): Move scm_free_structs to
6886 scm_before_mark_c_hook.
ea5c9285 6887
b4a1358c
MD
6888 * gc-card.c (sweep_card): Check that we haven't swept structs on
6889 this card before. That can happen if scm_i_sweep_all_segments has
6890 been called from some other place than scm_igc.
6891
c35738c1
MD
68922003-02-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6893
231a4ea8
MD
6894 * environments.c (DEFAULT_OBARRAY_SIZE): Changed from 137 to 31
6895 (since hash tables now adapt their size).
6896
6897 * modules.c (scm_modules_prehistory): Changed from 2001 to 1533
6898 (current number of prehistory bindings; hashtable code will select
6899 a prime which is greater than this value).
6900
6901 * symbols.c (scm_symbols_prehistory): Changed from 1009 to 2139
6902 (current number of initial symbols).
6903
6904 * properties.c (scm_init_properties): Don't specify size of
6905 scm_properties_whash.
6906
6907 * objprop.c (scm_init_objprop): Don't specify size of
6908 scm_object_whash.
6909
6910 * keywords.c (scm_init_keywords): Don't specify a hash table size.
6911
c35738c1
MD
6912 * hooks.c (scm_c_hook_add): Fixed bug in append mode.
6913
6914 The following changes introduce the use of resizable hash tables
6915 throughout Guile. It also renames the old *-hash-table* functions
6916 to *-alist-vector* and places them, together with the rest of the
6917 weak vector support, in the module (ice-9 weak-vector). We should
6918 probably introduce a new, better, API for weak references, for
6919 example "weak pairs" a la MIT-Scheme. (In Chez scheme, they even
6920 look like and are used like ordinary pairs.)
6921
6922 * environments.c (obarray_enter, obarray_retrieve, obarray_remove,
6923 leaf_environment_fold, obarray_remove_all): Use hashtable
6924 accessors.
6925
6926 * gc.c (scm_init_storage): Moved hook initialization to
6927 scm_storage_prehistory.
6928 (scm_storage_prehistory): New function.
6929 (scm_igc): Added commentary about placement of
6930 scm_after_sweep_c_hook.
6931
6932 * gc-mark.c (scm_mark_all): Use hashtable accessors.
6933 (scm_gc_mark_dependencies): Use SCM_WVECT_WEAK_KEY_P and
6934 SCM_WVECT_WEAK_VALUE_P.
6935
6936 * hashtab.c, hashtab.h (scm_hash_for_each, scm_hash_map): New
6937 functions.
6938 (scm_vector_to_hash_table, scm_c_make_resizing_hash_table):
6939 Removed.
6940 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table,
6941 scm_make_doubly_weak_hash_table): Moved here from weaks.c.
6942
6943 * init.c (scm_init_guile_1): Removed call to scm_init_weaks; Added
6944 calls to scm_storage_prehistory and scm_hashtab_prehistory.
6945
6946 * modules.c (module-reverse-lookup): Use hashtable accessors.
6947
6948 * symbols.c, symbols.h (scm_i_hash_symbol): New function.
6949
6950 * weaks.c, weaks.h (scm_make_weak_key_alist_vector,
6951 scm_make_weak_value_alist_vector,
6952 scm_make_doubly_weak_alist_vector): New functions.
6953
6954 * weaks.c (scm_init_weaks_builtins): New function.
6955
6956 * weaks.h (SCM_WVECTF_WEAK_KEY, SCM_WVECTF_WEAK_VALUE,
6957 SCM_WVECTF_NOSCAN, SCM_WVECT_WEAK_KEY_P, SCM_WVECT_WEAK_VALUE_P,
6958 SCM_WVECT_NOSCAN_P): New macros.
6959
6960 * weaks.c (scm_scan_weak_vectors): Use SCM_WVECT_WEAK_KEY_P
6961 and SCM_WVECT_WEAK_VALUE_P.
6962
6963 * weaks.c, weaks.h (scm_i_allocate_weak_vector): Renamed from
6964 allocate_weak_vector and exported.
6965
0a4c1355
MD
69662003-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6967
6968 * hashtab.c: Undid thread safety. (We decided that it's better to
6969 let the user explicitly protect the tables (or not) according what
6970 is suitable for the application.)
6971
87ca11ff
MD
69722003-02-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6973
6974 * hashtab.c (scm_hash_fn_remove_x, scm_internal_hash_fold): Made
6975 thread safe and handle resizing tables.
6976 (scm_ihashx, scm_sloppy_assx, scm_delx_x): Removed
6977 SCM_DEFER/ALLOW_INTS.
6978
f59a096e
MD
69792003-02-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6980
6981 * hashtab.c (scm_vector_to_hash_table,
6982 scm_c_make_resizing_hash_table, scm_make_hash_table): New
6983 functions.
6984 (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x): Made thread
6985 safe and handle resizing tables.
6986
6987 * weaks.c (scm_make_weak_key_hash_table,
6988 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
6989 Size argument made optional. Return resizable table if not
6990 specified.
6991
4b612c5b
MD
69922003-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6993
6994 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
6995 Fixed formals tests for closures. (Thanks to Kevin Ryde.)
6996
b3d7f6df
MD
69972003-02-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6998
6999 * debug.c (scm_procedure_source): Handle all objects for which
7000 procedure? is #t. (Thanks to Bill Schottstaedt.)
7001
756414cf
MD
70022003-01-23 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7003
361d631f
MD
7004 * futures.c (mark_futures): Don't need to mark data of recycled
7005 futures.
7006 (scan_futures, cleanup_undead): Be smarter about marking
7007 futures---avoid unnecessary passes through future lists.
7008
756414cf
MD
7009 * futures.h, futures.c: New files; Introduced recycling of
7010 futures. For fine-grained threading this lifts performance to
7011 another level. We can now use parallelization in inner loops of
7012 Guile programs without impossible overhead.
7013
7014 * threads.h, threads.c: Moved futures to their own file.
7015
7016 * Makefile.am (libguile_la_SOURCES): Added futures.c.
7017 (DOT_X_FILES): Added futures.x.
7018 (DOT_DOC_FILES): Added futures.doc.
7019 (modinclude_HEADERS): Added futures.h.
7020
7021 * threads.c, threads.h (scm_i_create_thread): Renamed from
7022 create_thread and made global.
7023
7024 * futures.c (scm_make_future): New procedure.
7025
7026 * eval.c: #include "libguile/futures.h".
7027
7028 * init.c: #include "futures.h"
7029 (scm_init_guile_1): Call scm_init_futures.
7030
7031 * stime.c (SCM_TIME_UNITS_PER_SECOND): Renamed from CLKTCK.
7032
7033 * stime.h (SCM_TIME_UNITS_PER_SECOND): Definition moved here.
7034
7035 * eval.c, eval.h (scm_trampoline_0, scm_i_call_closure_0): New
7036 functions.
7037
7038 * eval.c (scm_trampoline_1): Fixed arguments test for closures.
7039
b4debead
MD
70402003-01-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7041
7042 * threads.c (create_thread): Don't unwind dynwind chain of parent
7043 thread before creation. Just start the new thread with an empty
7044 dynwind chain.
7045
93f26b7b
MD
70462003-01-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7047
7048 * evalext.c, evalext.h (scm_self_evaluating_p): New function.
7049
38d8927c
MD
70502003-01-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7051
41c96c32
MD
7052 * threads.c (scm_timed_wait_condition_variable): Support timed
7053 waiting also for simple condition variables.
7054
38d8927c
MD
7055 * goops.c (TEST_CHANGE_CLASS): Use scm_change_object_class instead
7056 of calling the procedure change-object-class.
7057
9cf5d9b7
MD
70582003-01-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7059
7060 * ramap.c (scm_ramapc): Typo in error message.
7061
bbf8d523
MD
70622003-01-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7063
b46fae00
MD
7064 * goops.c (scm_sys_prep_layout_x): Bugfix: Only create layout for
7065 slots with instance allocation.
7066
bbf8d523
MD
7067 * goops.c, goops.h (scm_class_extended_generic_with_setter): New
7068 class.
7069 (scm_compute_applicable_methods): Use scm_generic_function_methods.
7070
7071 * goops.c (scm_generic_function_methods): Support extended
7072 generic functions.
7073
ebf9b47c
MD
70742002-12-29 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7075
7076 * eval.c (unmemocopy): Bugfix: scm_sym_delay --> scm_sym_future.
2e37d6a2 7077 Thanks to Neil for pointing this out!
ebf9b47c 7078
14a9ba3f
NJ
70792002-12-29 Neil Jerram <neil@ossau.uklinux.net>
7080
7081 * lang.h: Remove declarations matching definitions removed from
7082 lang.c (just below).
7083
c6a040a8
NJ
70842002-12-28 Neil Jerram <neil@ossau.uklinux.net>
7085
6054d805
NJ
7086 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
7087 scm_m_while, scm_nil_eq): Remove definitions that were superfluous
7088 and already commented out.
7089
c6a040a8
NJ
7090 * read.h (scm_lreadparen), read.c (scm_lreadr, scm_read_token,
7091 scm_lreadparen): Support reading vectors with Elisp syntax if
7092 SCM_ELISP_READ_EXTENSIONS is defined. (SCM_ELISP_READ_EXTENSIONS
7093 is not currently defined, and there isn't even a configure switch
7094 to enable it yet.)
7095
3742c12f
MV
70962002-12-26 Marius Vollmer <mvo@zagadka.ping.de>
7097
7098 * Makefile.am (c-tokenize.o): Refer to source via $< so that vpath
7099 builds work.
7100 (EXTRA_DIST): Added version.h.in.
7101
fb50ef08
MD
71022002-12-21 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7103
7104 This change makes it possible for one thread to do lazy sweeping
7105 while other threads are running. Now only the mark phase need to
7106 have all threads asleep. We should look further into this issue.
7107 Presently, I've put the locking of scm_i_sweep_mutex at
7108 "conservative" places due to my current lack of knowledge about
7109 the garbage collector. Please feel free to restrict these regions
7110 further to allow for maximal parallelism!
7111
7112 * gc.c, gc.h (scm_i_sweep_mutex): New mutex.
7113
7114 * gc.c (scm_gc_for_newcell), gc-malloc.c (scm_realloc,
7115 scm_gc_register_collectable_memory): Substitute locking of
7116 scm_i_sweep_mutex for calls to scm_i_thread_put_to_sleep.
7117 (scm_igc): Lock sweep mutex here instead of in callers; Calls to
7118 scm_i_thread_put_to_sleep/scm_i_thread_wake_up used to demarkate
7119 the single-thread section (which now only contains the mark
7120 phase).
7121 (scm_gc): Don't lock sweeo mutex here since scm_igc locks it;
7122 Removed SCM_DEFER/ALLOW_INTS. Simply call scm_igc directly.
7123
7124 * threads.c (gc_section_mutex): Removed.
7125
9ed24633
MD
71262002-12-19 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7127
0d48aca5
MD
7128 * threads.c (create_thread): Clear parent field in root state in
7129 order not to unnecessarily remember dead threads.
7130
9ed24633
MD
7131 * eval.c (call_subr2o_1, call_lsubr2_2): New functions.
7132 (scm_trampoline_1, scm_trampoline_2): Use them.
7133
29717c89
MD
71342002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7135
7136 Partial introduction of real plugin interface.
7137
7138 * Makefile.am (modinclude_HEADERS): Added threads-plugin.h.
7139 (EXTRA_DIST): Added threads-plugin.c.
7140
7141 * threads-plugin.h, threads-plugin.c: New files.
7142
7143 * threads.h: #include "libguile/threads-plugin.h".
7144
7145 * threads.c: #include "libguile/threads-plugin.c".
7146
7147 * pthread-threads.c: Temporarily remove debugging functions.
7148
7149 * threads.c, threads.h (scm_yield): Added back.
7150
e29e0b09
MD
71512002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7152
7153 * threads.c (really_launch): Detach before unlocking
7154 thread_admin_mutex in order not to risk being joined.
7155 (scm_i_thread_put_to_sleep, scm_i_thread_wake_up): Keep
7156 thread_admin_mutex locked during GC.
7157
7158 * pthread-threads.c, pthread-threads.h: Improvements to debugging
7159 functions.
7160
0b6843b1 71612002-12-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
93cd4dcd 7162
6da2dfc4
MD
7163 * pthread-threads.c, pthread-threads.h (SCM_DEBUG_THREADS): Added
7164 support for debugging mutex operations.
7165
1b92fb6b
MD
7166 * threads.c (scm_thread): Removed filed joining_threads.
7167 (thread_print): Print thread number as well as address of thread
7168 structure.
0b6843b1
MD
7169 (scm_join_thread): Bugfix.
7170 (scm_lock_mutex, scm_try_mutex, scm_unlock_mutex,
7171 scm_timed_wait_condition_variable, scm_signal_condition_variable,
7172 scm_broadcast_condition_variable): Use the low-level API.
7173 (scm_all_threads): Return copy of thread list (to prevent
7174 unintended destruction).
7175 (scm_threads_prehistory): Initialize heap_mutex of fake thread.
1b92fb6b 7176
93cd4dcd
MD
7177 * pthread-threads.c, pthread-threads.h, threads.c: Fixes to
7178 pthread "native" recursive mutex support.
7179
2ff4f181
MD
71802002-12-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7181
28d52ebb
MD
7182 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): New definitions.
7183 Simply lock a thread C API recursive mutex.
7184 (SCM_NONREC_CRITICAL_SECTION_START,
7185 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
7186 SCM_REC_CRITICAL_SECTION_END): Removed.
7187
7188 * eval.c: Replaced SOURCE_SECTION_START / SOURCE_SECTION_END with
7189 direct calls to scm_rec_mutex_lock / unlock around the three calls
7190 to scm_m_expand_body.
7191
7192 * eval.c, eval.h (promise_free): New function.
7193 (scm_force): Rewritten; Now thread-safe; Removed
7194 SCM_DEFER/ALLOW_INTS.
7195
7196 * pthread-threads.h: Added partially implemented plugin interface
7197 for recursive mutexes. These are, for now, only intended to be
7198 used internally within the Guile implementation.
7199
7200 * pthread-threads.c: New file.
7201
7202 * threads.c: Conditionally #include "pthread-threads.c".
7203
7204 * eval.c, eval.h (scm_makprom, scm_force): Rewritten to be
7205 thread-safe;
7206
7207 * snarf.h (SCM_MUTEX, SCM_GLOBAL_MUTEX, SCM_REC_MUTEX,
7208 SCM_GLOBAL_REC_MUTEX): New macros.
7209
7210 * eval.c, threads.c, threads.h, snarf.h: Rewrote critical section
7211 macros---use mutexes instead.
7212
7213 * tags.h (SCM_IM_FUTURE): New tag.
7214
7215 * eval.c (scm_m_future): New primitive macro.
7216 (SCM_CEVAL): Support futures.
7217 (unmemocopy): Support unmemoization of futures.
7218
7219 * print.c (scm_isymnames): Name of future isym.
7220
2ff4f181
MD
7221 * version.c: Unmade some changes to my private copy that got
7222 committed by mistake.
7223
392d2833
MD
72242002-12-11 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7225
e200ddee
MD
7226 * gc-malloc.c, gc.h, init.c: Reverted gc-malloc change of
7227 2002-12-10.
7228
392d2833
MD
7229 * gc.c (scm_igc): Don't call scm_i_thread_invalidate_freelists.
7230
7231 * gc.c (scm_gc_sweep): Call it here instead, which is a more
7232 logical place.
7233
7234 * threads.c (create_thread): Remember root object until the handle
7235 of the new thread is on all_threads list.
7236
7237 * root.c (scm_make_root): Moved copying of fluids until after
7238 creation of root handle so that the fluids are GC protected. Also
7239 removed the critical section.
7240
c4c52ebe
MD
72412002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7242
960c408c
MD
7243 * gc-malloc.c, gc.h (scm_gc_malloc_prehistory): New function.
7244
3cdde9d6 7245 * gc-malloc.c (malloc_mutex): New mutex.
960c408c 7246 (scm_gc_malloc_prehistory): Initialize it.
3cdde9d6
MD
7247 (scm_realloc): Serialize call to realloc
7248 (scm_calloc): Same for calloc.
7249 Thanks to Wolfgang Jaehrling!
7250 (Now we have to make sure all calls to malloc/realloc are made
7251 through scm_malloc.)
7252
960c408c
MD
7253 * init.c (scm_init_guile_1): Call scm_gc_malloc_prehistory.
7254
c4c52ebe
MD
7255 * threads.c (really_launch): Release heap (to prevent deadlock).
7256 (create_thread): Release heap before locking thread admin mutex.
7257
b0dc3d71
MD
72582002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7259
7260 * threads.c (scm_i_thread_invalidate_freelists): New
7261 function.
7262
7263 * gc.c (scm_igc): Call scm_i_thread_invalidate_freelists.
7264
7265 * modules.c (scm_export): Inserted a return statement.
7266
06e80f59
HWN
72672002-12-10 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7268
7269 * modules.c (scm_export): new function
7270
7271 * gc-card.c: add a note about malloc()/free() overhead.
7272
a12611c3
MD
72732002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7274
7275 * Makefile.am (c-tokenize.$(OBJEXT)): Don't look for c-tokenize.c
7276 in srcdir.
7277
c7fabadf
MD
72782002-12-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7279
7280 These changes remove scm_ints_disabled (which hasn't has any
7281 effect in Guile for quite some time).
7282
7283 * async.c, error.h (scm_ints_disabled): Removed.
7284
7285 * gc.c (scm_gc_for_newcell), init.c (scm_init_guile_1),
7286 root.c (scm_internal_cwdr), gdbint.c (SCM_BEGIN_FOREIGN_BLOCK,
7287 SCM_END_FOREIGN_BLOCK): Don't touch scm_ints_disabled.
7288 (old_ints): Removed.
7289
7290 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Define as a recursive
7291 critical section.
7292 (SCM_REDEFER_INTS, SCM_ALLOW_INTS): Define as SCM_DEFER_INTS and
7293 SCM_ALLOW_INTS.
7294
9bc4701c
MD
72952002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7296
52340b65
MD
7297 * threads.c (scm_mutex_lock, scm_cond_wait, scm_cond_timedwait):
7298 Removed accidental #if 0 around these functions.
7299
9bc4701c
MD
7300 These changes are the start of support for preemptive
7301 multithreading. Marius and I have agreed that I commit this code
7302 into the repository although it isn't thoroughly tested and surely
7303 introduces many bugs. The bugs should only be exposed when using
7304 threads, though. Signalling and error handling for threads is
7305 very likely broken. Work on making the implementation cleaner and
7306 more efficient is needed.
7307
7308 * __scm.h (SCM_ALLOW_INTS_ONLY): Removed.
7309 (SCM_NONREC_CRITICAL_SECTION_START,
7310 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
7311 SCM_REC_CRITICAL_SECTION_END): New macros.
7312 (SCM_CRITICAL_SECTION_START/END): Defined here.
7313
7314 * eval.c: Insert SOURCE_SECTION_START / SOURCE_SECTION_END around
7315 the three calls to scm_m_expand_body.
7316
7317 * gc.h: #include "libguile/pthread-threads.h";
7318 (SCM_FREELIST_CREATE, SCM_FREELIST_LOC): New macros.
7319
7320 * gc.c (scm_i_freelist, scm_i_freelist2): Defined to be of type
7321 scm_t_key;
7322
7323 * gc.c, gc-freelist.c, inline.h: Use SCM_FREELIST_LOC for freelist
7324 access.
7325
7326 * gc-freelist.c (scm_gc_init_freelist): Create freelist keys.
7327
7328 * gc-freelist.c, threads.c (really_launch): Use
7329 SCM_FREELIST_CREATE.
7330
7331 * gc-malloc.c (scm_realloc, scm_gc_register_collectable_memory):
7332
7333 * gc.c (scm_i_expensive_validation_check, scm_gc,
7334 scm_gc_for_newcell): Put threads to sleep before doing GC-related
7335 heap administration so that those pieces of code are executed
7336 single-threaded. We might consider rewriting these code sections
7337 in terms of a "call_gc_code_singly_threaded" construct instead of
7338 calling the pair of scm_i_thread_put_to_sleep () and
7339 scm_i_thread_wake_up (). Also, we would want to have as many of
7340 these sections eleminated.
7341
7342 * init.c (scm_init_guile_1): Call scm_threads_prehistory.
7343
7344 * inline.h: #include "libguile/threads.h"
7345
7346 * pthread-threads.h: Macros now conform more closely to the
7347 pthreads interface. Some of them now take a second argument.
7348
7349 * threads.c, threads.h: Many changes.
7350
73512002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7352
7353 * Makefile.am (version.h): Changed $^ --> $< in rule for
7354 version.h.
7355
b2cbe8d8
RB
73562002-12-08 Rob Browning <rlb@defaultvalue.org>
7357
7358 * version.h.in (SCM_MICRO_VERSION): use @--@ substitution now.
7359 (SCM_MINOR_VERSION): use @--@ substitution now.
7360 (SCM_MICRO_VERSION): use @--@ substitution now.
7361 (scm_effective_version): new function prototype.
7362
7363 * version.c (scm_effective_version): new function, also add
7364 effective-version.
7365
7366 * Makefile.am (schemelibdir): VERSION -> GUILE_EFFECTIVE_VERSION.
7367 (libpath.h): use GUILE_EFFECTIVE_VERSION to compute
7368 SCM_LIBRARY_DIR.
7369 (version.h): generate this here rather than configure.in. This
7370 approach tracks source edits better (i.e. more immediately).
7371 Might be worth considering for other .in files too.
7372
5441c65c
MV
73732002-12-02 Marius Vollmer <mvo@zagadka.ping.de>
7374
7375 Reorganized thread package selection. A thread package now only
7376 implements a small set of pthread like functions and Guile
7377 implements the rest on top of that. Guile's implementation is
7378 what the "coop-pthreads" package has been previously. Support for
7379 "coop" threads has been removed until I get time to add it again.
7380
7381 * Makefile.am (libguile_la_SOURCES): Removed iselect.c.
7382 (noinst_HEADERS): Removed coop-threads.c, coop-threads.h, coop.c,
7383 null-threads.c, coop-pthreads.c.
7384 (modinclude_HEADERS): Removed coop-defs.h, coop-pthreads.h. Added
7385 pthread-threads.h.
7386
7387 * validate.h (SCM_VALIDATE_THREAD): Moved to threads.h.
7388
7389 * threads.h: Do not include "libguile/coop-defs.h". Include
7390 "libguile/pthread-threads.h" for USE_COPT_THREADS. Removed
7391 (previously deprecated) C level thread API prototypes. They are
7392 now in the thread package specific headers, "null-threads.h" and
7393 "pthread-threads.h".
7394 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
7395 New.
7396 (scm_threads_init): Removed.
7397 (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END,
7398 SCM_THREAD_SWITCHING_CODE, scm_i_switch_counter,
7399 SCM_I_THREAD_SWITCH_COUNT): Define here.
7400 (scm_single_thread_p): Removed.
7401 (scm_call_with_new_thread): Take two args directly instead of list
7402 of two args.
7403 (scm_i_thread_data, scm_i_set_thread_data, SCM_THREAD_LOCAL_DATA,
7404 SCM_SET_THREAD_LOCAL_DATA): Define here.
7405
7406 * threads.c: Merged with "coop-pthreads.c".
7407
7408 * null-threads.h: Implement pthread-like API as a set of macros.
7409
7410 * pthread-threads.h: New, implement pthread-like API by deferring
7411 to pthread itself.
7412
7413 * init.c (scm_init_guile_1): Do not call scm_init_iselect, which
7414 has been lost in the reorganization.
7415
504d99c5
MD
74162002-12-01 Mikael Djurfeldt <mdj@linnaeus>
7417
7418 The following change makes it possible to move procedure
7419 application dispatch outside inner loops. The motivation was
7420 clean implementation of efficient replacements of R5RS primitives
7421 in SRFI-1.
7422
7423 The semantics is clear: scm_trampoline_N returns an optimized
7424 version of scm_call_N (or NULL if the procedure isn't applicable
7425 on N args).
7426
7427 Applying the optimization to map and for-each increases efficiency
7428 noticeably. For example, (map abs ls) is 8 times faster than
7429 before.
7430
7431 * eval.h (scm_t_trampoline_1, scm_t_trampoline_2): New types.
7432
7433 * eval.c, eval.h (scm_trampoline_1, scm_trampoline_2): New functions.
7434
7435 * eval.c (call_subr2_2, call_lsubr_2, call_closure_2): New functions;
7436 (map, for-each): Handle also application on two args as a special
7437 case; Use trampolines.
7438
7439 Other changes:
7440
7441 * sort.c (scm_cmp_function): Choose subr2less for scm_tc7_subr_2o;
7442 (subr2oless): Removed.
7443 (scm_restricted_vector_sort_x): Use scm_return_first to keep the
7444 vector GC protected.
7445
7446 * eval.c (check_map_args): Use scm_out_of_range_pos instead of
7447 scm_out_of_range.
7448
63dd3413
DH
74492002-11-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
7450
7451 * evalext.[ch] (scm_m_undefine, undefine): Deprecated.
7452
4ba5f279
MD
74532002-11-17 Mikael Djurfeldt <mdj@linnaeus>
7454
7455 * debug.c (scm_make_iloc): Added missing "return".
7456
56ae231f
MV
74572002-11-17 Marius Vollmer <mvo@zagadka.ping.de>
7458
7459 * strports.c (scm_eval_string_in_module): Validate second arg to
7460 be a module. Thanks to Arno Peters!
7461
80b28865
DH
74622002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7463
7464 * .cvsignore: remove goops.c
7465
c88b1456
DH
74662002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7467
7468 * modules.c (scm_env_top_level, scm_lookup_closure_module,
7469 module_variable, scm_module_lookup_closure,
7470 scm_module_transformer, scm_sym2var, scm_module_reverse_lookup,
7471 scm_system_module_env_p): Don't compare SCM values with C
7472 operators == or !=. Avoid SCM_IMP predicates. Prefer !SCM_FALSEP
7473 over SCM_NFALSEP.
7474
a8a19efc
DH
74752002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7476
7477 * eval.h (SCM_MAKE_ILOC): New macro.
7478
7479 * debug.c (scm_make_iloc): Use SCM_MAKE_ILOC instead of computing
7480 the iloc bitpattern here.
7481
76734914
MD
74822002-11-14 Mikael Djurfeldt <mdj@linnaeus>
7483
7484 * coop-pthreads.c, coop-pthreads.h: scm_internal_select should be
7485 part of the API, otherwise it's difficult to write Guile
7486 extensions using non-blocking I/O => moved #include
7487 "libguile/iselect.h" from coop-pthreads.c --> coop-pthreads.h.
7488
7489 * coop-pthreads.c (scm_unlock_mutex): Changed s_lock_mutex -->
7490 s_unlock_mutex.
7491
8b5b4a75
MV
74922002-11-10 Marius Vollmer <mvo@zagadka.ping.de>
7493
7494 * __scm.h (USE_THREADS, GUILE_ISELECT): Do not define here. They
7495 are defined in configure.in.
7496
7497 * threads.c: Removed SCM_API from function definitions. SCM_API
7498 is only for declarations.
7499
e5a83084
MD
75002002-11-07 Mikael Djurfeldt <mdj@linnaeus>
7501
9be8bb45
MD
7502 * coop-pthreads.h: Added support for thread specific data to the
7503 generic C API for the coop-pthreads case.
7504
e5a83084
MD
7505 * threads.c, threads.h (scm_cond_init): Undo unintentional API
7506 change.
6c214b62 7507 (scm_cond_broadcast): Added missing function.
e5a83084 7508
7edf178e
MV
75092002-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7510
7511 * coop.c (coop_next_runnable_thread): Removed, wich should have
7512 happened when GUILE_ISELECT was hard-wired.
7513
7f5b1b77
MV
75142002-11-03 Marius Vollmer <mvo@zagadka.ping.de>
7515
7caa1b07
MV
7516 * Makefile.am (libguile_la_SOURCES): Added threads.c
7517 (DOT_DOC_FILES): Added threads.doc.
7518 (DOT_X_FILES): Added threads.x.
7519 (EXTRA_libguile_la_SOURCES): Removed threads.c.
7520 (noinst_HEADERS): Added coop-pthreads.c.
7521 (modinclude_HEADERS): Added coop-pthreads.h.
7522
7523 * __scm.h (USE_THREADS, GUILE_ISELECT): Define when
7524 SCM_DEBUG_DEPRECATED. Removed their use thru-out Guile.
7525
bb11cbf4
MV
7526 * iselect.c: Include "_scm.h" before testing HAVE_UNISTD_H.
7527 Thanks to Bill Schottstaedt!
7528
1d4cbbed
MV
7529 * numbers.c (scm_integer_expt): Make 0^z == 0 for z != 0.
7530
7f5b1b77
MV
7531 * _scm.h (HAVE_RESTARTABLE_SYSCALLS): Do define even when
7532 SCM_COPT_THREADS is defined.
7533 (SCM_SYSCALL): Use EINTR-expection version when SCM_COPT_THREADS
7534 is defined.
7535
7536 * coop-pthreads.c: Some harmless renamings of internal stuff.
7537 (create_thread): New, generalized version of
7538 scm_call_with_new_thread.
7539 (scm_call_with_new_thread): Use it.
7540 (scm_spawn_thread): New, use create_thread.
7541
d52f53b1
MV
75422002-11-02 Marius Vollmer <mvo@zagadka.ping.de>
7543
7544 * coop-pthreads.c, coop-pthreads.h: Redone completely, you might
7545 start testing it now.
7546
7547 * _scm.h: Include <errno.h< so that SCM_SYSCALL is correctly
7548 defined when HAVE_RESTARTABLE_SYSCALLS is not defined.
7549 (HAVE_RESTARTABLE_SYSCALLS): Do not define when USE_COPT_THREADS
7550 is defined.
7551
30f920c3
MV
75522002-10-27 Marius Vollmer <mvo@zagadka.ping.de>
7553
7554 * scmsigs.c (signal_cell_handlers, install_handler_data,
7555 scm_delq_spine_x, really_install_handler, install_handler): New
7556 scheme for triggering signal handlers, to simplify take_signal.
7557 (take_signal): Simplified, to avoid race conditions.
7558 (scm_sigaction_for_thread): Use new Scheme. Validate that thread
7559 hasn't exited yet.
7560
7561 * async.c (scm_async_click): Reset pending_asyncs, handle
7562 signal_asyncs. Don't set cdr of a non-signal async to #f.
7563 (scm_i_queue_async_cell): Do not check cdr of cell for #f, queue
7564 always. Set pending_asyncs.
7565 (scm_system_async_mark_for_thread): Check that thread has not
7566 exited.
7567 (scm_unmask_signals, decrease_block): Call scm_async_click after
7568 block_asyncs becomes zero.
7569
7570 * __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of
7571 active_asyncs.
7572
7573 * root.h (scm_root_state): Added pending_asyncs and signal_asyncs
7574 fields.
7575 * root.c (root_mark): Mark them.
7576 (make_root): Initialize them.
7577
7578 * iselect.c, iselect.h: Replaced GUILE_ISELECT with
7579 USE_COOP_THREADS.
7580 (scm_internal_select): Define one version for USE_COOP_THREADS and
7581 one for USE_NULL_THREADS.
7582 (scm_init_iselect): Likewise.
7583
7584 * inline.h (scm_cell, scm_double_cell): Also allow
7585 USE_COPT_THREADS to not protect the slot initializers.
7586
7587 * init.c (scm_init_guile_1): Call scm_init_thread_procs. This is
7588 because threads need to be initialized before the stack, but
7589 gsubrs such as scm_timed_condition_variable_wait can only be
7590 created later.
7591
7592 * threads.h: Include "coop-pthreads.h" when requested.
7593 (scm_threads_make_mutex, scm_threads_lock_mutex,
7594 scm_threads_unlock_mutex, scm_threads_monitor): Removed, they were
7595 not implemented anyway.
7596 (scm_init_thread_procs, scm_try_mutex,
7597 scm_timed_condition_variable_wait,
7598 scm_broadcast_condition_variable, scm_c_thread_exited_p,
7599 scm_thread_exited_p): New prototypes.
7600 (struct timespec): Define if not already defined.
7601 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
7602 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
7603 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
7604 scm_cond_broadcast, scm_cond_destroy): Declarations moved here and
7605 deprecated.
7606
7607 * threads.c: Include <errno.h>. Include "coop-pthreads.c" when
7608 requested.
7609 (scm_thread_exited_p): New.
7610 (scm_try_mutex, scm_broadcast_condition_variable): Newly
7611 registered procedures.
7612 (scm_wait_condition_variable, scm_timed_wait_condition_variable):
7613 Use the latter as the procedure for "wait-condition-variable",
7614 thus offering a optional timeout parameter to Scheme.
7615 (scm_wait_condition_variable): Implement in terms of
7616 scm_timed_wait_condition_variable.
7617 (scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
7618 scm_mutex_unlock, scm_mutex_destroy, scm_cond_init,
7619 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
7620 scm_cond_broadcast, scm_cond_destroy): Implement in terms of
7621 scm_make_mutex, etc, and deprecate.
7622 (scm_init_threads): Do not create smobs, leave this to
7623 scm_threads_init. Do not include "threads.x" file.
7624 (scm_init_thread_procs): New, include "threads.x" here.
7625
7626 * null-threads.h (scm_null_mutex, scm_null_mutex_init,
7627 scm_null_mutex_lock, scm_null_mutex_unlock,
7628 scm_null_mutex_destroy, scm_null_condvar, scm_null_condvar_init,
7629 scm_null_condvar_wait, scm_null_condvar_signal,
7630 scm_null_condvar_destroy): Removed.
7631 (scm_mutex_init, scm_mutex_lock, scm_mutex_unlock, scm_cond_init,
7632 scm_cond_wait, scm_cond_signal, scm_cond_broadcast,
7633 scm_cond_destory): Do not define, they are now deprecated and
7634 handled by threads.{h,c}.
7635
7636 * null-threads.c (scm_null_mutex, scm_null_cond): Define here.
7637 (scm_threads_init): Create smobs here, using the appropriate
7638 sizes.
7639 (block): Removed, now unused.
7640 (scm_c_thread_exited_p): New.
7641 (scm_null_mutex_init, scm_null_mutex_lock, scm_null_mutex_unlock,
7642 scm_null_mutex_destroy, scm_null_condvar_init,
7643 scm_null_condvar_wait, scm_null_condvar_signal,
7644 scm_null_condvar_destroy): Removed and updated users to do their
7645 task directly.
7646 (scm_try_mutex, timeval_subtract,
7647 scm_timed_wait_condition_variable,
7648 scm_broadcast_condition_variable): New.
7649 (scm_wait_condition_variable): Removed.
7650
7651 * coop-defs.h (coop_m): Added 'level' field.
7652 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
7653 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
7654 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
7655 scm_cond_broadcast, scm_cond_destroy, struct timespec): Do not
7656 define.
7657 (coop_condition_variable_broadcast): New.
7658
7659 * coop-threads.c (scm_threads_init): Create smobs here, using the
7660 appropriate sizes.
7661 (scm_c_thread_exited_p, scm_try_mutex,
7662 scm_timed_wait_condition_variable,
7663 scm_broadcast_condition_variable): New.
7664 (scm_wait_condition_variable): Removed.
7665
7666 * coop.c (coop_new_mutex_init): Initialize level.
7667 (coop_mutex_trylock, coop_mutex_lock, coop_mutex_unlock): maintain
7668 level.
7669 (coop_condition_variable_signal): Renamed to
7670 coop_condition_variable_broadcast and reimplemented in terms of
7671 that. Thus...
7672 (coop_condition_variable_broadcast): New.
7673
7674 * goops.c (hell_mutex): Reimplemented using scm_make_mutex, etc.
7675
7676 * coop-pthreads.h, coop-pthreads.c: New, but unfinished.
7677
087ed40d
MV
76782002-10-21 Marius Vollmer <mvo@zagadka.ping.de>
7679
65a23095
MV
7680 * null-threads.c: Include <time.h>. Also, use <...> for inclusion
7681 of system headers.
7682
087ed40d
MV
7683 * async.c, goops.h, modules.h, validate.h (SCM_MAKE_VALIDATE_MSG):
7684 New. Use it instead of SCM_MAKE_VALIDATE in lots of places to
30f920c3 7685 give better error messages. Thanks to Bill Schottstaedt!
087ed40d 7686
5ec1d2c8
DH
76872002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
7688
7689 * evalext.h, evalext.c (scm_definedp, scm_defined_p): Renamed
7690 scm_definedp to scm_defined_p and deprecated scm_definedp.
7691
100ae50d
DH
76922002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
7693
7694 * async.h, async.c (scm_system_async): Fixed deprecation to work
7695 correctly when deprecated features are excluded.
7696
2794cb50
MV
76972002-10-16 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7698
7699 * async.c (scm_system_async_mark_for_thread): Validate thread
7700 argument.
7701
7702 * coop-threads.c (scm_i_thread_root): Do not validate argument.
7703
7704 * feature.c (scm_init_feature): Don't add 'threads' for
7705 USE_NULL_THREADS.
7706
7707 * inline.h (scm_cell, scm_double_cell): Also allow
7708 USE_NULL_THREADS to not protect the slot initializers.
7709
7710 * scmsigs.c (scm_sigaction_for_thread): It's "USE_THREADS" not
7711 "USE_THREAD".
7712
7713 * Makefile.am (noinst_HEADERS): Added null-threads.c.
7714 (modinclude_HEADERS): Added null-threads.h.
7715
7716 * threads.h: Include null-threads.h when !USE_COOP_THREADS.
7717 * threads.c: Include null-threads.c when !USE_COOP_THREADS.
7718 (scm_init_threads): Use generic type names scm_t_mutex and
7719 scm_t_cond instead of coop_m and coop_c.
7720
7721 * null-threads.c, null-threads.h: New files.
7722
ff810d7a
MV
77232002-10-15 Marius Vollmer <mvo@zagadka.ping.de>
7724
7725 * Makefile.am: Replaced "$<" in non-pattern rules with its value.
7726 This is to support makes that know about "$<" only in pattern
7727 rules, like Sun's make.
7728
a90bdb73
MV
77292002-10-13 Marius Vollmer <mvo@zagadka.ping.de>
7730
7731 * Makefile.am (libpath.h): Fixed typo in top_srcdir_absolute
7732 substitution. Thanks to David Allouche!
7733
e71a8bf2
DH
77342002-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
7735
7736 * evalext.h: Replaced SCM_DEBUG_DEPRECATED with
7737 !SCM_ENABLE_DEPRECATED.
7738
41f77ff5
MV
77392002-10-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7740
504d99c5 7741 * async.c (scm_system_async_mark_for_thread): Only call
41f77ff5
MV
7742 scm_i_thread_root when USE_THREADS is defined. Use scm_root
7743 otherwise.
7744
7745 * scmsigs.c (take_signal): Only call scm_i_thread_root when
7746 USE_THREADS is defined. Use scm_root otherwise.
7747 (scm_sigaction_for_thread): Ignore THREAD argument when
7748 USE_THREADS is not defined. Also, move THREAD argument defaulting
7749 out of HAVE_SIGACTION section, which was a bug.
7750
6d16b125
MV
77512002-10-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7752
7753 * scmsigs.c (scm_sigaction_for_thread): Store original handler in
7754 signal_handlers, not the closure that is used as the async.
7755 The closure is stored in signal_handler_cells, as previously.
7756
acfa1f52
MV
77572002-10-10 Marius Vollmer <mvo@zagadka.ping.de>
7758
7759 * root.h (scm_root_state): Added 'block_async' slot.
7760 (scm_active_asyncs): Removed abbrev.
7761 * root.c (scm_make_root): Initialize 'block_asyncs' slot.
7762
7763 * __scm.h (SCM_ASYNC_TICK): Do without the scm_active_asyncs
7764 abbrev.
7765
7766 * async.h (scm_call_with_blocked_asyncs,
7767 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
7768 scm_c_call_with_unblocked_asyncs): New prototypes.
7769 (scm_mask_signals, scm_unmask_signals): Deprecated.
7770 (scm_mask_ints): Turned into a macro.
7771 * async.c (scm_mask_ints): Removed.
7772 (scm_run_asyncs): Do not set scm_mask_ints while running an async.
7773 this should not be necessary.
7774 (scm_async_click): Test block_asyncs instead of scm_mask_ints.
7775 (scm_mask_signals, scm_unmask_signals): Deprecated. Emit
7776 deprecation warning and check for errornous use. Set block_asyncs
7777 instead of scm_mask_ints.
7778 (increase_block, decrease_block, scm_call_with_blocked_asyncs,
7779 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
7780 scm_c_call_with_unblocked_asyncs): New.
7781
7782 * script.c (scm_compile_shell_switches): Do not set scm_mask_ints.
7783 Asyncs are enabled by default.
7784
34010f56
NJ
77852002-10-09 Neil Jerram <neil@ossau.uklinux.net>
7786
7787 * vports.c (scm_make_soft_port): Allow vector argument to carry a
7788 6th element: an input waiting thunk.
7789 (sf_input_waiting): New.
7790
9310d6f2
MV
77912002-10-05 Marius Vollmer <mvo@zagadka.ping.de>
7792
7793 * root.c (root_mark): Mark active_asyncs slot.
7794
7795 * async.c (scm_async_click): Set the cdr of a executed handler
7796 cell to SCM_BOOL_F, not SCM_EOL.
7797 (scm_i_queue_async_cell): Queue the cell at the end of the list,
7798 and only if the handler procedure is not already present.
7799 (scm_system_async_mark_for_thread): Initialize cdr of handler cell
7800 with SCM_BOOL_F.
7801 * scmsigs.c (scm_sigaction_for_thread): Likewise.
7802
ac48c719
RB
78032002-10-04 Rob Browning <rlb@defaultvalue.org>
7804
1360a142
RB
7805 * guile.c (main): switch to scm_lt_dlset_preloaded_symbols;
7806
7807 * dynl.c (sysdep_dynl_link): switch to scm_lt_dlhandle,
7808 scm_lt_dlopenext, and scm_lt_dlerror.
7809 (sysdep_dynl_unlink): switch to scm_lt_dlhandle, scm_lt_dlclose,
7810 and scm_lt_dlerror.
7811 (sysdep_dynl_func): switch to scm_lt_dlhandle, scm_lt_dlsym,
7812 and scm_lt_dlerror.
7813 (sysdep_dynl_init): switch to scm_lt_dlinit();
7814
7815 * Makefile.am (libguile_la_LIBADD): switch to use
7816 libguile-ltdl.la.
7817
504d99c5 7818 * numbers.c (scm_integer_expt): (expt 0 1) should be 1.
ac48c719 7819
497092c9
MV
78202002-10-04 Marius Vollmer <mvo@zagadka.ping.de>
7821
7822 * scmsigs.h (scm_sigaction_for_thread): New prototype.
7823 * scmsigs.c (got_signal): Removed.
7824 (signal_handler_cells, signal_handler_threads): New.
7825 (take_signal): Queue the cell of the signal for the specified
7826 thread. Reset the signal handler on systems that don't have
7827 sigaction.
7828 (sys_deliver_signals): Removed.
7829 (close_1): New.
7830 (scm_sigaction_for_thread): Renamed from scm_sigaction and
7831 extended to also set the thread of a signal and allocate a cell
7832 for it. Keep the Scheme name "sigaction". Check that signum is
7833 within range. Also, use SCM_VECTOR_REF instead of SCM_VELTS.
7834 (scm_sigaction): Implement in terms of scm_sigaction_for_thread.
7835 (scm_init_scmsigs): Allocate signal_handler_cells and
7836 signal_handler_threads vectors.
7837
7838 * async.c: Removed GUILE_OLD_ASYNC_CLICK code. Reorganized so
7839 that system asnycs and user asyncs are separated. Reimplemented
7840 system asyncs to work per-thread.
7841
7842 * gc.c (scm_init_gc): Do not use scm_system_async.
7843
7844 * async.h (scm_asyncs_pending, scm_set_tick_rate,
7845 scm_set_switch_rate, scm_system_async_mark_from_signal_handler):
7846 Removed prototypes.
7847 (scm_i_queue_async_cell): New.
7848
7849 * __scm.h (scm_asyncs_pending_p): Removed.
7850 (SCM_ASYNC_CLICK): Check scm_active_asyncs instead of
7851 scm_asyncs_pending_p.
7852
7853 * async.h (scm_system_async_mark_for_thread): New prototype.
7854
7855 * __scm.h: Removed GUILE_OLD_ASYNC_CLICK code.
7856
7857 * root.h (scm_root_state): Added new "active_asyncs" slot.
7858 * root.c (scm_make_root): Initialize it to SCM_EOL.
7859
7860 * coop-defs.h (coop_t): Added new "handle" slot.
7861 * coop-threads.c (all_threads, scm_current_thread,
7862 scm_all_threads, scm_i_thread_root): New.
7863 (scm_threads_init): Add main thread to all_threads.
7864 (scheme_launch_thread): Remove thread from all_threads when it
7865 terminates.
7866 (scm_call_with_new_thread): Initialize handle slot of coop_t
7867 structure and add new thread to all_threads.
7868 (scm_spawn_thread): Likewise.
7869
7870 * threads.h (scm_current_thread, scm_all_threads): New prototypes.
7871 * threads.c (scm_current_thread, scm_all_threads): Register as
7872 primitives.
7873
7874 * dynl.c: Use scm_lt_ prefix for libltdl functions.
7875
480fa28d
NJ
78762002-09-29 Neil Jerram <neil@ossau.uklinux.net>
7877
7878 * script.c (scm_compile_shell_switches): Fix bad spelling of
7879 `explicitly' in comment.
7880
78812002-09-28 Neil Jerram <neil@ossau.uklinux.net>
7882
7883 * posix.c (scm_geteuid, scm_getegid, scm_seteuid, scm_setegid):
7884 Refer to provided? in doc string rather than deprecated feature?.
7885
3553e1d1
GH
78862002-09-24 Gary Houston <ghouston@arglist.com>
7887
7888 * inline.h (scm_double_cell): prevent reordering of statements
7889 with any following code (for GCC 3 strict-aliasing).
7890 * numbers.c (scm_make_real), num2float.i.c (FLOAT2NUM): removed
7891 the earlier version of the reordering prevention.
7892
4ad0814a
HWN
78932002-09-19 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7894
7895 * inline.h (scm_double_cell): move SET_GCMARK set out of if body.
7896
e88e4f2e
HWN
78972002-09-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7898
7899 * gc-malloc.c (scm_gc_register_collectable_memory): more overflow
7900 protection.
7901
1e71eafb
HWN
79022002-09-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7903
7904 * inline.h: include stdio.h
7905
7906 * smob.c (free_print): abort if scm_debug_cell_accesses_p is set
7907
61ef9c1f
HWN
79082002-09-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7909
dac04e9f
HWN
7910 * gc-segment.c (scm_i_make_initial_segment): check user settings
7911 for sanity.
7912
7913 * gc-malloc.c (scm_gc_init_malloc): check user settings for
7914 sanity.
dac04e9f
HWN
7915
7916 * gc-freelist.c (scm_init_freelist): check user settings for sanity.
7917
ffd72400
HWN
7918 * struct.h: change scm_structs_to_free to scm_i_structs_to_free
7919
7920 * gc-malloc.c (scm_gc_register_collectable_memory): use floats;
1e71eafb
HWN
7921 these won't ever wrap around with high memory usage. Thanks to
7922 Sven Hartrumpf for finding this.
ffd72400 7923
5bd4a949
HWN
7924 * gc-freelist.c: include <stdio.h>
7925
61ef9c1f
HWN
7926 * gc-malloc.c: add DEBUGINFO for mtrigger GCs.
7927
ffd0ef3b
MV
79282002-09-01 Marius Vollmer <mvo@zagadka.ping.de>
7929
a27e3d14
MV
7930 * vectors.h (SCM_VECTOR_REF): New.
7931
ffd0ef3b
MV
7932 * snarf.h (SCM_DEFINE_PUBLIC): New.
7933
f8a1712b
MV
79342002-08-30 Marius Vollmer <mvo@zagadka.ping.de>
7935
7936 * socket.c (scm_addr_vector): Added size of address to arguments.
7937 Use it to avoid accessing a non-existent path in a sockaddr_un.
7938 Changed all callers.
7939
7200a36b
HWN
79402002-08-29 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7941
1383773b
HWN
7942 * gc.h: remove DOUBLECELL card flags.
7943
7944 * gc-malloc.c (scm_calloc): try to use calloc() before calling
7945 scm_realloc().
7946
7947 * gc-segment.c (scm_i_initialize_heap_segment_data): remove card
7948 init loop; handle this from scm_init_card_freelist()
7949
7950 * gc-card.c (scm_init_card_freelist): init bit vector here.
7951
7200a36b 7952 * numbers.c (scm_make_real): prevent reordering of statements
8fa5786d 7953 num2float.i.c (FLOAT2NUM): idem
7200a36b 7954
9981de3a
HWN
79552002-08-27 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7956
7957 * eval.h: prepend libguile/ to include path
7958
19647556
MV
79592002-08-26 Marius Vollmer <mvo@zagadka.ping.de>
7960
7961 * script.c (scm_compile_shell_switches): Added "2002" to Copyright
9a5fa6e9 7962 years. Thanks to Martin Grabmüller!
19647556 7963
38d1262a
HWN
79642002-08-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7965
7966 * gc-segment.c (scm_i_get_new_heap_segment): use float in stead of
7967 unsigned numbers for computing minimum heap increment. This
7968 prevents weird results when a a negative minimum increment is
7969 computed.
7970
f800ebfb
MV
79712002-08-24 Marius Vollmer <mvo@zagadka.ping.de>
7972
7973 * gc_os_dep.c: When we have __libc_stack_end, use that directly
19647556 7974 instead of the old tricks.
f800ebfb
MV
7975
7976 * guile-snarf.in: Do not expect the input file to be the first
7977 argument after the optional "-o" option, just pass everything to
7978 the pre-processor without extracting the input file name.
7979
4a5309c9
HWN
79802002-08-23 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7981
7982 * gc-segment.c (scm_i_get_new_heap_segment): Oops. We want segment
7983 length *at* least SCM_MIN_HEAP_SEG_SIZE, not at most.
7984
f2893a25
HWN
79852002-08-22 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7986
7987 * gc.h, gc.c: make scm_cells_allocated unsigned again. Thanks to
7988 Bill Schottstaedt for the bug report
7989
483f518b
MV
79902002-08-20 Marius Vollmer <mvo@zagadka.ping.de>
7991
7992 * print.c (scm_iprin1): Print primitives generics always as
7993 "primitive-generic" even when they have no primitive methods yet.
7994
917adc55
GH
79952002-08-17 Gary Houston <ghouston@arglist.com>
7996
7997 * coop.c (coop_create): removed bogus 2nd argument in scm_malloc
7998 call.
7999
67329a9e
HWN
80002002-08-17 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8001
85835e59 8002 * ports.c (scm_add_to_port_table): small bugfix.
67329a9e
HWN
8003
8004 * mallocs.c (scm_malloc_obj): use scm_gc_malloc in stead of
8005 malloc.
8006
8007 * gc-segment.c (scm_i_get_new_heap_segment): remove cluster cruft:
8008 only use SCM_MIN_HEAP_SEG_SIZE.
8009
8010 * ports.c (scm_add_to_port_table): add backwards compatibility
8011 function
8012
8013 * ports.h: use scm_i_ prefix for port table and port table size.
8014
f07c886a
MD
80152002-08-15 Mikael Djurfeldt <mdj@linnaeus>
8016
8017 * vports.c (scm_make_soft_port): Initialize pt variable.
8018
dc61cbc6
MV
80192002-08-13 Marius Vollmer <mvo@zagadka.ping.de>
8020
8021 * strports.h (scm_c_eval_string_in_module,
8022 scm_eval_string_in_module): New prototypes.
8023 * strports.c (scm_eval_string_in_module): New, but use
8024 "eval-string" as the Scheme name and make second parameter
8025 optional.
8026 (scm_eval_string): Implement using scm_eval_string_in_module.
8027 (scm_c_eval_string_in_module): New.
8028 Thanks to Ralf Mattes for the suggestion!
8029
da220f27
HWN
80302002-08-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8031
be3ff021
HWN
8032 * gc-card.c ("sweep_card"): remove SCM_MISC_ERROR messages: print
8033 message and abort.
8034
8035 * gc-mark.c ("scm_gc_mark_dependencies"): idem.
8036
da220f27
HWN
8037 * ports.c ("scm_new_port_table_entry"): return a boxed SCM in
8038 stead of scm_t_port*. The function now takes a tag argument.
8039
eab1b259
HWN
80402002-08-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8041
8042 * gc.h: add scm_debug_cells_gc_interval to public interface
8043
8044 * gc-card.c ("sweep_card"): set scm_gc_running while sweeping.
8045
8046 * gc.c (scm_i_expensive_validation_check): separate expensive
8047 validation checks from cheap ones.
8048
ba1b2226
HWN
80492002-08-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8050
8051 * read.c (scm_input_error): new function: give meaningful error
8052 messages, and throw read-error
8053
8054 * gc-malloc.c (scm_calloc): add scm_calloc.
8055
39e8f371
HWN
80562002-08-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8057
33138b05
HWN
8058 * tags.h: remove GC bits documentation from the tags table.
8059
39e8f371
HWN
8060 * read.c (INPUT_ERROR): Prepare for file:line:column error
8061 messages for errors in scm_lreadr() and friends.
8062
80632002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8064
8065 * gc-malloc.c (scm_malloc): use scm_realloc() (simplifies
8066 implementation).
8067 (scm_gc_calloc): new function
8068
26e68795 80692002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
402788a9 8070
5f16b897
HWN
8071 * ports.c (scm_new_port_table_entry): init port entry to 0
8072 completely.
402788a9
HWN
8073
8074 * ports.c (scm_new_port_table_entry): change function from
8075 scm_add_to_port_table. This prevents cells with null-pointers from
8076 being exposed to GC.
8077
504d99c5 8078 * vports.c (scm_make_soft_port) strports.c (scm_mkstrport),
402788a9 8079 fports.c (scm_fdes_to_port): Use scm_new_port_table_entry().
c8a1bdc4 8080
504d99c5 8081 * gc.c (scm_gc_stats): add cell-yield and malloc-yield statistic
c2cbcc57
HWN
8082 to gc-stats.
8083
c8a1bdc4
HWN
8084 * numbers.c (big2str): return "0" for 0 iso. ""
8085
c2cbcc57
HWN
8086 * gc-segment.c, gc-malloc.c gc-mark.c, gc-freelist.c, gc-card.c,
8087 private-gc.h: new file
c8a1bdc4
HWN
8088
8089 * gc.c: completely revised and cleaned up the GC. It now uses lazy
8090 sweeping. More documentation in workbook/newgc.text
8091
aea06b34
MV
80922002-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8093
8094 * random.c (rstate_free): Return zero.
8095
35060ae9
DH
80962002-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8097
8098 * environments.c (remove_key_from_alist): Removed.
8099
8100 (obarray_remove): Simplified.
8101
6a535440
SJ
81022002-07-24 Stefan Jahn <stefan@lkcc.org>
8103
8104 * continuations.h: ia64: Include <signal.h> before
8105 <sys/ucontext.h>.
8106
bcbd25b7
DH
81072002-07-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
8108
8109 * modules.c (scm_sym2var): Don't compare SCM values with ==.
8110
26e68795 81112002-07-21 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1d1559ce
HWN
8112
8113 * goops.c (scm_compute_applicable_methods): use
8114 scm_remember_upto_here_1 iso scm_remember_upto_here
8115
8116 * macros.c: include deprecation.h
8117
504d99c5 8118 * vectors.c (scm_vector_move_right_x): remove side effect in
1d1559ce 8119 macro arg.
504d99c5 8120 (scm_vector_move_left_x): idem.
1d1559ce
HWN
8121
8122 * net_db.c, posix.c, socket.c: variable naming: change ans to
8123 result.
8124
8125 * sort.c (scm_merge_vector_x): accept vector as argument
8126 iso. SCM*. This is needed for full GC correctness.
8127
8128 * gc.h: undo previous undocumented changes related to #ifdef
8129 GENGC.
8130
26e68795 81312002-07-20 Han-Wen Nienhuys <hanwen@cs.uu.nl>
34d19ef6
HWN
8132
8133 * *.c: add space after commas everywhere.
8134
8135 * *.c: use SCM_VECTOR_SET everywhere, where a vector is written.
8136 Document cases where SCM_WRITABLE_VELTS() is used.
8137
8138 * vectors.h (SCM_VELTS): prepare for write barrier, and let
8139 SCM_VELTS() return a const pointer
8140 (SCM_VECTOR_SET): add macro.
8141
3063e30a
DH
81422002-07-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
8143
8144 * eval.c (SCM_CEVAL), macros.c (macro_print, scm_makmacro,
8145 scm_sym_macro, scm_macro_type), macros.h (scm_makmacro):
8146 Deprecated the special kind of built-in dynamic syntax transformer
8147 that was inaccurately named "macro". Note: The built-in syntax
8148 transformers that are named "mmacro" or "memoizing-macro" still
8149 exist, and it is these which come much closer to what one would
8150 call a macro.
8151
4c5f8e8f
NJ
81522002-07-13 Neil Jerram <neil@ossau.uklinux.net>
8153
8154 * eval.c (unmemocopy): Fix for
8155 1001-local-eval-error-backtrace-segfaults (unmemoization crash
8156 with internal definitions and local-eval).
8157
4f6f9ae3
GH
81582002-07-12 Gary Houston <ghouston@arglist.com>
8159
8160 * dynl.c: Don't define stub procedures if DYNAMIC_LINKING is not
8161 defined. They don't do anything useful, especially since the
8162 only case where DYNAMIC_LINKING is undefined seems to be
8163 when --with-modules=no is given to configure, which is basically
8164 requesting that the "dynamic linking module" be omitted.
8165
8166 * Makefile.am (libguile_la_SOURCES): move dynl.c from
8167 libguile_la_SOURCES to EXTRA_libguile_la_SOURCES.
8168
8169 * extensions.c (load_extension): check DYNAMIC_LINKING for
8170 scm_dynamic_call.
8171 * init.c (scm_init_guile_1): check DYNAMIC_LINKING for
8172 scm_init_dynamic_linking.
8173
c21935e6
MV
81742002-07-10 Marius Vollmer <mvo@zagadka.ping.de>
8175
8176 * guile.c, iselect.h, net_db.c, posix.c, socket.c: No need to
8177 check for Cygwin when including <winsock2.h>, this is already
8178 check for by configure. Thus, revert change from 2002-07-07.
8179
ee95d597
GH
81802002-07-10 Gary Houston <ghouston@arglist.com>
8181
9540b68f 8182 * eq.c: include <string.h>
ee95d597
GH
8183 * dynl.c: docstring editing.
8184
46732b54
GH
81852002-07-09 Gary Houston <ghouston@arglist.com>
8186
8187 * dynl.c (scm_dynamic_call): docstring editing.
8188
c09d12e0
RB
81892002-07-08 Rob Browning <rlb@defaultvalue.org>
8190
8191 * gc_os_dep.c: HURD fixes.
8192
3f6571eb
MV
81932002-07-07 Marius Vollmer <mvo@zagadka.ping.de>
8194
8195 Crosscompiling and Cygwin fixes by Jan Nieuwenhuizen. Thanks!
8196
8197 * Makefile.am: Override default rule for c-tokenize.$(OBJECT);
8198 this should be compiled for BUILD host.
8199 Override default rule for
8200 guile_filter_doc_snarfage$(EEXECT); this should run on BUILD host.
8201 Add missing $(EXEEXT) to guile_filter_doc_snarfage invocation.
8202 (snarf2checkedtexi): Use GUILE_FOR_BUILD instead of preinstguile.
8203
8204 * guile.c, iselect.h, net_db.c, posix.c, socket.c: Do not include
8205 <winsock2.h> on Cygwin even when we have it.
8206
bd987b8e
DH
82072002-07-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
8208
8209 * __scm.h (SCM_CAUTIOUS), eval.c (scm_eval_args, deval_args,
8210 SCM_CEVAL): Removed compile time option SCM_CAUTIOUS to clean up
8211 the code. Full number of arguments checking of closures is
8212 mandatory now. However, the option to disable the checking has
8213 most probably not been used anyway.
8214
8505e285
DH
82152002-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
8216
bd987b8e
DH
8217 * __scm.h (SCM_RECKLESS), backtrace.c (SCM_ASSERT), debug.c
8218 (scm_debug_options), eval.c (scm_lookupcar, scm_lookupcar1,
8219 scm_badargsp, SCM_CEVAL, SCM_APPLY, scm_map, scm_for_each),
8220 feature.c (scm_init_feature), gsubr.c (scm_gsubr_apply), numbers.c
8221 (scm_logand, scm_logior, scm_logxor, scm_i_dbl2big), srcprop.c
8222 (scm_source_properties, scm_set_source_properties_x,
8223 scm_source_property): Removed compile time option SCM_RECKLESS to
8224 clean up the code. Full number of arguments checking of closures
8225 is mandatory now. However, the option to disable the checking has
8226 most probably not been used anyway.
8505e285
DH
8227
8228 * srcprop.c (scm_source_properties, scm_set_source_properties_x,
8229 scm_source_property): Use !SCM_CONSP instead of SCM_NCONSP.
8230
2ee08a28
GH
82312002-06-30 Gary Houston <ghouston@arglist.com>
8232
732b9327
GH
8233 * dynl.c: Removed all SCM_DEFER_INTS/SCM_ALLOW_INTS, which won't
8234 do anything useful. Added a comment about need for a mutex if
8235 pre-emptive threading is supported.
8236
2ee08a28
GH
8237 * posix.c (scm_convert_exec_args), dynl.c
8238 (scm_make_argv_from_stringlist): static procs: 1) renamed both to
8239 allocate_string_pointers. 2) simplified: don't reallocate the
8240 strings, just make an array of pointers 3) avoid memory leaks on
8241 error 4) let the procedure report errors in its own name.
8242 Consequences: 1) the procedures now assume that SCM strings are
8243 nul-terminated, which should always be the case. 2) Since strings
8244 are not reallocated, it's now possible for strings passed to
8245 dynamic-args-call to be mutated.
8246
c136c920
DH
82472002-06-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
8248
8249 * __scm.h, eval.c, eval.h: Removed compile time option
8250 MEMOIZE_LOCALS to clean up the code. Now, caching of local
8251 variable positions during memoization is mandatory. However, the
8252 option to disable the caching has most probably not been used
8253 anyway.
8254
e540802f
MV
82552002-06-18 Marius Vollmer <mvo@zagadka.ping.de>
8256
8257 * print.c (scm_simple_format): Print missing part of format before
8258 ~% control. Thanks to Daniel Skarda!
8259
4c1ffcdd
MV
82602002-06-01 Marius Vollmer <mvo@zagadka.ping.de>
8261
8262 * mkstemp.c: Added exception notice to license statement.
8263
ba1b077b
MV
82642002-05-22 Marius Vollmer <mvo@zagadka.ping.de>
8265
8dc434c7
MV
8266 * numbers.c (mem2ureal): When returning an inexact zero, make sure
8267 it is represented as a floating point value so that we can change
8268 its sign.
8269
ba1b077b
MV
8270 From John W. Eaton <jwe@bevo.che.wisc.edu>
8271
8272 * numbers.c (idbl2str): Don't omit sign when printing negative zero.
8273
74c58131
TTN
82742002-05-14 Thien-Thi Nguyen <ttn@giblet.glug.org>
8275
8276 * gc_os_dep.c: For I386/OPENBSD, allow for `__i386__'
0926d46e 8277 in addition to `i386'. Thanks to Dale P. Smith.
74c58131 8278
8766d4b5
MV
82792002-05-08 Marius Vollmer <mvo@zagadka.ping.de>
8280
8281 * eq.c (real_eqv): New.
8282 (scm_eqv_p): Use it when comparing reals and complexes.
8283
8284 * numbers.c: Include <string.h>, for strncmp.
8285 (mem2complex): Do not create negative NaNs.
8286 (scm_leq_p, scm_geq_p): Explicitely return #f when comparing a
8287 NaN.
8288 (scm_inexact_to_exact): Signal error when converting a NaN.
74c58131 8289
1d8c3cad
MV
82902002-05-06 Marius Vollmer <mvo@zagadka.ping.de>
8291
8292 * posix.c (scm_putenv): Handle removing variables explicitely by
8293 calling unsetenv.
8294
8295 From John W. Eaton.
74c58131 8296
1d8c3cad
MV
8297 * numbers.h: Conditionally include floatingpoint.h, ieeefp.h, and
8298 nan.h. Provide declarations for scm_inf_p, scm_nan_p, scn_inf,
8299 and scm_nan.
8300 * numbers.c: [SCO && ! HAVE_ISNAN] (isnan): New function.
8301 [SCO && ! HAVE_ISINF] (isinf): New function.
8302 (xisinf, xisnan): New functions.
8303 (IS_INF): Delete.
8304 (isfinite): Define in terms of xisinf.
8305 (scm_inf_p, scm_nan_p): New functions.
8306 (guile_Inf, guile_NaN): New file-scope vars.
8307 (guile_ieee_init): New function.
8308 (scm_inf, scm_nan): New functions.
8309 (idbl2str): Handle Inf and NaN. Remove funny label and
8310 corresponding gotos.
8311 (ALLOW_DIVIDE_BY_ZERO): New macro.
8312 (scm_divide): Allow division by zero to occur if
8313 ALLOW_DIVIDE_BY_ZERO is defined.
8314 Handle bignums and ints as special cases.
8315
8316 Additional stuff by me:
8317
8318 numbers.c (mem2ureal): Recognize "inf.0" and "nan.xxx".
8319 (scm_even_p, scm_odd_p): Treat infinity as even and odd.
8320 (iflo2str): Don't output a '+' for negative numbers or for Inf and
8321 NaN. They will provide their own sign.
8322 (scm_divide): Only allow divides by inexact zeros. Dividing by
8323 exact zeros still signals an errors.
74c58131 8324
7a0c65eb
TTN
83252002-04-22 Thien-Thi Nguyen <ttn@giblet.glug.org>
8326
87b72063 8327 * goops.h (scm_slot_exists_p): Rename from scm_slots_exists_p.
7a0c65eb 8328 * goops.c (scm_slot_exists_p): Rename from scm_slots_exists_p.
504d99c5 8329 (scm_slot_exists_p): Rename from scm_slots_exists_p.
7a0c65eb
TTN
8330 Thanks to Andreas Rottmann.
8331
5e423a39
GH
83322002-04-20 Gary Houston <ghouston@arglist.com>
8333
8334 * removal of unused fields in root state (thanks to Christopher
8335 Cramer for pointing out the disuse.)
8336 * root.h (scm_root_state): removed def_inp, def_outp, def_errp.
1841c44a 8337 (scm_def_inp, scm_def_outp, scm_def_errp): removed.
b6287a25 8338
5e423a39
GH
8339 * root.c (root_mark): don't mark them.
8340 (scm_make_root): don't set them to #f.
8341 * init.c (scm_init_standard_ports): don't initialise with the
8342 default ports.
8343
9d2cce76
MV
83442002-04-17 Marius Vollmer <mvo@zagadka.ping.de>
8345
8346 * Makefile.am (EXTRA_DIST): Added cpp_err_symbols.c and
8347 cpp_sig_symbols.c.
8348
83492002-04-16 Marius Vollmer <mvo@zagadka.ping.de>
8350
8351 * guile-snarf.in: Do not clean input file. This would write to
8352 the $(srcdir) during a VPATH build, which is not allowed. It also
8353 isn't needed since it only works when an output filename has been
8354 specified and in that case we don't need to clean the input file
8355 because the output file will already exist.
8356
6f79b6cc
MV
83572002-03-31 Marius Vollmer <mvo@zagadka.ping.de>
8358
8359 * guile-snarf: Install the trap for removing $cleanfile only when
8360 the value of $cleanfile is actually known.
8361
21550b10
RB
83622002-04-10 Rob Browning <rlb@defaultvalue.org>
8363
8364 * .cvsignore: add versiondat.h and *.c.clean.c.
8365
bc76d628
DH
83662002-03-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
8367
8368 * srcprop.[ch] (scm_c_source_property_breakpoint_p): New
8369 function, replaces macro SRCBRKP.
8370
8371 (SRCBRKP): Deprecated.
8372
8373 * eval.c (SCM_CEVAL): Replaced use of SRCBRKP by call to
8374 scm_c_source_property_breakpoint_p. Removed some use of arg1 as
8375 temporary variable.
8376
5132eef0
DH
83772002-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
8378
8379 * debug.h, eval.c: Deprecated CHECK_ENTRY, CHECK_APPLY and
8380 CHECK_EXIT and removed all references to them.
8381
680516ba
DH
83822002-03-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8383
8384 * debug.h (scm_ready_p, debug_print): Removed declarations.
8385
8386 * eval.c (EVALCELLCAR): Removed.
8387
8388 (SCM_CEVAL): Eliminated label loopnoap. Removed side-effecting
8389 operation from condition.
8390
e2bd68e0
MV
83912002-03-24 Marius Vollmer <mvo@zagadka.ping.de>
8392
8393 * guile-snarf.in: When the output filename is "-", write to
8394 stdout. When no "-o" option is given, use "-" as the output
8395 filename (i.e., stdout). Only 'clean' the inputfile or remove the
8396 output file on error when the output file name is not "-". Define
8397 the preprocessor macro SCM_MAGIC_SNARFER while snarfing.
8398
8399 * Makefile.am (.c.x): Pass "-o $@" to guile-snarf.
8400
ab1f1094
DH
84012002-03-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
8402
8403 * eval.c (SCM_CEVAL, SCM_APPLY): Eliminated labels wrongnumargs
8404 and the corresponding goto statements. Removed redundant code.
8405
42030fb2
DH
84062002-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
8407
8408 * eval.c (SCM_CEVAL): Minimized scope of variable arg2.
8409 Eliminated redundant SCM_IMP check. Exlined call to EVALCAR.
8410 Re-enabled handing of rpsubrs and asubrs.
8411
e050d4f8
DH
84122002-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
8413
8414 * eval.c (SIDEVAL): Removed.
8415
8416 (SCM_CEVAL): Minimized scope of variable orig_sym. Eliminated
8417 goto-labels cdrxnoap, cdrxbegin and nontoplevel_cdrxnoap. Changed
8418 argument checking order for set! to locals, variables and symbols.
8419 Improvements to control structure. Removed some uses of arg1 and
8420 arg2 as temporary variables.
8421
a6d344d3
TTN
84222002-03-15 Thien-Thi Nguyen <ttn@giblet.glug.org>
8423
8424 * guile-snarf.in: Remove "--compat=1.4" support.
8425 Add "-d" and "-D" support.
8426
8427 (deprecated_list): New var.
8428 (compat_mode_clean_xxx): Delete.
8429 (grep_deprecated): New func.
8430 ("main"): If "-d" or "-D", call `grep_deprecated'.
8431
3939e9df
NJ
84322002-03-15 Neil Jerram <neil@ossau.uklinux.net>
8433
387d418c
NJ
8434 * hooks.h: Change scm_t_c_hookype_t everywhere to
8435 scm_t_c_hook_type.
8436
bb2c02f2 8437 Docstring fixes:
a6d344d3 8438
bb2c02f2
NJ
8439 * strings.c (scm_string_p): Change unnecessary `iff' to `if'.
8440
8441 * ports.c (scm_sys_make_void_port): Use `@file'.
8442
8443 * numbers.c (scm_number_p, scm_real_p): Use `otherwise' rather
8444 than `else'.
8445
8446 * macros.c (scm_makmacro): Don't say that the form replaces its
8447 source, because it doesn't.
8448 (scm_makmmacro): Clarify difference between this and scm_makmacro.
8449
8450 * backtrace.c (scm_display_error), filesys.c (scm_umask,
8451 scm_select, scm_basename), goops.c (scm_method_generic_function),
8452 numbers.c (scm_integer_length), posix.c (scm_getgroups, scm_execl,
8453 scm_setlocale, scm_flock), socket.c (scm_shutdown): Correct
8454 spelling mistakes.
8455
3939e9df
NJ
8456 * debug.c (scm_debug_options), eval.c
8457 (scm_eval_options_interface), read.c (scm_read_options): Change
8458 incorrect @var in docstring to @code.
8459
3b3cc781
MV
84602002-03-14 Marius Vollmer <mvo@zagadka.ping.de>
8461
500b0d5b
MV
8462 * unif.c (singp): Use SCM_REALP instead of SCM_SLOPPY_REALP.
8463
3b3cc781
MV
8464 * snarf.h (SCM_SNARF_INIT): Add "^:^" after code so that
8465 guile-snarf can remove trailing non-init code.
8466
8467 * guile-snarf.in (modern_snarf): Remove everything following and
8468 including "^:^" from the output.
8469
dff98306
DH
84702002-03-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
8471
8472 * eval.c (SCM_CEVAL), srcprop.h (SRCBRKP): Eliminated union 't'.
8473
8474 * eval.c (SCM_CEVAL): Exlined call to EVALCAR.
8475
2287fb53
TTN
84762002-03-13 Thien-Thi Nguyen <ttn@giblet.glug.org>
8477
8478 * guile-snarf.in: Update copyright.
8479 Rewrite to internalize error handling.
8480 Add "--compat=1.4" handling.
8481 Add commentary.
8482
8483 * Makefile.am (libpath.h): Use @top_srcdir_absolute@.
8484 (snarfcppopts): New var.
8485 (.c.x): Use $(snarfcppopts). Rework guile-snarf usage.
8486 (.c.doc): Use $(snarfcppopts).
8487
822250a4
TTN
8488 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
8489 continuations.c, debug-malloc.c, debug.c, deprecation.c, dynl.c,
8490 dynwind.c, environments.c, eq.c, error.c, eval.c, evalext.c,
8491 extensions.c, feature.c, filesys.c, fluids.c, fports.c, gc.c,
8492 goops.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
8493 ioext.c, iselect.c, keywords.c, lang.c, list.c, load.c, macros.c,
8494 modules.c, net_db.c, numbers.c, objects.c, objprop.c, options.c,
8495 pairs.c, ports.c, posix.c, print.c, procprop.c, procs.c,
8496 properties.c, ramap.c, random.c, rdelim.c, read.c, regex-posix.c,
8497 root.c, rw.c, scmsigs.c, script.c, simpos.c, socket.c, sort.c,
8498 srcprop.c, stackchk.c, stacks.c, stime.c, strings.c, strop.c,
8499 strorder.c, strports.c, struct.c, symbols.c, threads.c, throw.c,
8500 unif.c, values.c, variable.c, vectors.c, version.c, vports.c,
8501 weaks.c: Retire inclusion guard macro SCM_MAGIC_SNARFER.
8502
b7798e10
DH
85032002-03-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
8504
8505 * eval.c (SCM_CEVAL): Got rid of the last reference to t.lloc.
8506 The next step will be to remove the union 't' and simplify the
8507 code of SCM_CEVAL that way.
8508
04a98cff
NJ
85092002-03-12 Neil Jerram <neil@ossau.uklinux.net>
8510
8511 * iselect.c (collisionp, gnfds, greadfds, gwritefds, gexceptfds,
8512 rreadfds, rwritefds, rexceptfds): Made static.
8513
8514 * gc.c (terminating), fports.c (terminating): Renamed
8515 scm_i_terminating.
8516
16d98032
MV
85172002-03-11 Marius Vollmer <mvo@zagadka.ping.de>
8518
5046250e
MV
8519 * numbers.c (scm_divide): Adapt code from libstdc++/f2c to void
8520 potential overflow problems. Thanks to John W Eaton!
8521
8794207d
MV
8522 * strop.c (string_capitalize_x): Treat characters as unsigned so
8523 that 8-bit chars work. Thanks to David Pirotte!
16d98032 8524
1d15ecd3
DH
85252002-03-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
8526
8527 * eval.c (SCM_CEVAL): Cleaned up the handling of 'slot-ref',
8528 'slot-set!' and 'nil-cond'. Removed some uses of t.arg1, arg2 and
8529 proc as temporary variables. Introduced temporary variables with
8530 hopefully descriptive names for clarification. Replaced SCM_N?IMP
8531 by a more explicit predicate in some places.
8532
85332002-03-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
f12745b6
DH
8534
8535 * eval.c (SCM_CEVAL): Cleaned up the handling of #@dispatch.
8536 Added lots of comments regarding the implementation of #@dispatch.
8537 Changed intra-procedure communication to use t.arg1 instead of
8538 arg2. Removed some uses of t.arg1, t.lloc and proc as temporary
8539 variables. Introduced temporary variables with hopefully
8540 descriptive names for clarification. Replaced SCM_N?IMP by a more
8541 explicit predicate in some places. Use SCM_INSTANCE_HASH instead
8542 of computing the expression explicitly. Eliminate now unused
8543 label nontoplevel_cdrxbegin.
8544
8545 * goops.h (SCM_INSTANCE_HASH): New macro.
8546
8547 * objects.h (SCM_CMETHOD_FORMALS, SCM_CMETHOD_BODY): New macros.
8548
1ebf1566
TTN
85492002-03-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
8550
8551 * Makefile.am (bin_SCRIPTS): Revive this decl, w/ initial element
8552 "guile-snarf" moved back from `noinst_SCRIPTS'.
8553
020c890c
NJ
85542002-03-08 Neil Jerram <neil@ossau.uklinux.net>
8555
58d233cc
NJ
8556 * srcprop.c (scm_set_source_property_x): If SRCPROPS obj already
8557 exists when adding a source property other than those that are
8558 handled explicitly, add the new property to the SRCPROPS obj's
8559 plist.
8560
020c890c
NJ
8561 * debug.h (SCM_MAX_FRAME_SIZE): Remove incorrect comment about use
8562 of SCM_MAX_FRAME_SIZE as a bit mask; it isn't used like this.
8563
8564 * eval.c (SCM_CEVAL): Don't store scm_debug_eframe_size in
8565 debug.status. It isn't needed, and it can overflow the bits
8566 reserved for it (which may lead to a segv or a GC abort).
8567
3f04400d
DH
85682002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8569
8570 * eval.c (SCM_CEVAL): Cleaned up the handling of 'apply'. Removed
8571 side-effecting operations from conditions and macro calls.
8572 Replaced SCM_N?IMP by a more explicit predicate in some places.
8573 Minimized the scope of some variables.
8574
97820583
SJ
85752002-03-02 Stefan Jahn <stefan@lkcc.org>
8576
8577 * convert.i.c: Fixed int <-> long conversions which would have
8578 failed if their sizes were different.
8579
38ace99e
DH
85802002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8581
8582 * eval.c (SCM_CEVAL): Cleaned up the handling of 'if', 'let',
8583 'letrec' and 'set*': Removed some uses of t.arg1, t.lloc and proc
8584 as temporary variables. Removed side-effecting operations from
8585 conditions and macro calls. Introduced temporary variables with
8586 hopefully descriptive names for clarification. Replaced SCM_N?IMP
8587 by a more explicit predicate in some places. Removed code that
8588 was conditionally compiled if SICP was defined - which it never
8589 is.
8590
e5cb71a0
DH
85912002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8592
8593 * eval.c (SCM_CEVAL): Cleaned up the handling of 'cons' and 'do':
8594 Removed some uses of t.arg1 and proc as temporary variables.
8595 Removed side-effecting operations from conditions and macro calls.
8596 Introduced temporary variables with hopefully descriptive names
8597 for clarification. Replaced SCM_N?IMP by a more explicit
8598 predicate in some places.
8599
6a0f6ff3
DH
86002002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8601
8602 * eval.c (scm_badargsp, SCM_CEVAL): Replaced SCM_N?IMP by a more
8603 explicit predicate in some places.
8604
8605 (CHECK_EQVISH): Removed.
8606
8607 (SCM_CEVAL): Removed some uses of t.arg1 and proc as temporary
8608 variables. Removed side-effecting operations from conditions and
8609 macro calls. Introduced temporary variables for clarification.
8610 Sorted if-else-if check for the type of the last form in a list by
8611 frequency. Avoided some unnecessary tail-recursion calls.
8612
228a24ef
DH
86132002-03-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
8614
8615 * gc.c (SCM_HEAP_SEG_SIZE, CELL_UP, CELL_DN, NEXT_DATA_CELL,
8616 init_heap_seg, alloc_some_heap), gc.h (struct scm_cell, struct
8617 scm_t_cell, SCM_CELLPTR, SCM_GC_CARD_SIZE,
8618 SCM_GC_IN_CARD_HEADERP), tags.h (SCM_CELLP): Renamed the struct
8619 scm_cell and all its uses to scm_t_cell in accordance to Guile's
8620 naming scheme for types.
8621
8622 * alist.c (scm_acons), convert.i.c (CTYPES2UVECT,
8623 CTYPES2UVECT_OPTIONAL), coop-threads.c (scm_call_with_new_thread,
8624 scm_spawn_thread), debug.c (scm_make_debugobj), environments.c
8625 (scm_make_environment), eval.c (scm_closure), fports.c
8626 (scm_fdes_to_port), gc.c (scm_deprecated_newcell,
8627 scm_deprecated_newcell2), inline.h (scm_alloc_cell, scm_cell),
8628 list.c (SCM_I_CONS), numbers.c (scm_i_mkbig), pairs.c (scm_cons),
8629 ports.c (scm_void_port), procs.c (scm_c_make_subr, scm_makcclo),
8630 smob.c (scm_make_smob), smob.h (SCM_NEWSMOB), strings.c
8631 (scm_take_str, scm_allocate_string), strports.c (scm_mkstrport),
8632 unif.c (scm_make_uve), variable.c (make_variable), vectors.c
8633 (scm_c_make_vector), vports.c (scm_make_soft_port): Renamed
8634 scm_alloc_cell to scm_cell.
8635
8636 * environments.c (core_environments_observe), gc.c
8637 (scm_deprecated_newcell2), goops.c (wrap_init, scm_wrap_object),
8638 inline.h (scm_alloc_double_cell, scm_double_cell), num2float.i.c
8639 (FLOAT2NUM), numbers.c (scm_make_real), procs.c
8640 (scm_make_procedure_with_setter), smob.h (SCM_NEWSMOB2,
8641 SCM_NEWSMOB3), struct.c (scm_make_struct, scm_make_vtable_vtable),
8642 symbols.c (scm_mem2symbol, scm_mem2uninterned_symbol), weaks.c
8643 (allocate_weak_vector): Renamed scm_alloc_double_cell to
8644 scm_double_cell.
8645
edb810bb
SJ
86462002-02-27 Stefan Jahn <stefan@lkcc.org>
8647
8648 * convert.i.c, convert.c: Better range checking.
8649
8650 * inet_aton.c, fports.c: Commented the inclusion of <winsock2.h>.
8651
1ebf1566 8652 * deprecation.c (vsnprintf): Define to `_vsnprintf' for
edb810bb
SJ
8653 Windows (MinGW).
8654
327d4dd3
TTN
86552002-02-26 Thien-Thi Nguyen <ttn@giblet.glug.org>
8656
8657 * Makefile.am: Update path to pre-inst-guile automake frag.
8658
89d7a92c 86592002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
646052c0
DH
8660
8661 * gc.c (scm_gc_sweep): Make it compile even when deprecated
8662 features are excluded.
8663
89d7a92c 86642002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
bac0e232
DH
8665
8666 * num2integral.i.c (NUM2INTEGRAL): Fixed signedness problem.
8667
4f2716b6
GH
86682002-02-25 Gary Houston <ghouston@arglist.com>
8669
8670 * convert.c: include <string.h> for convert_i.c.
8671
46151112
RB
86722002-02-24 Rob Browning <rlb@defaultvalue.org>
8673
8674 * .cvsignore: add stamp-h1.
8675
cd328b4f
NJ
86762002-02-21 Neil Jerram <neil@ossau.uklinux.net>
8677
8678 * unif.c (scm_array_to_list): Correct name, which had been
8679 accidentally changed to scm_t_arrayo_list!
8680
c709de7f
MD
86812002-02-20 Mikael Djurfeldt <mdj@linnaeus>
8682
8683 * gc.c (scm_gc_sweep): Print an error message when aborting due to
8684 underflowing scm_mallocated.
8685
c1965d31
MV
86862002-02-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8687
8688 * gc.h, gc.c (scm_must_malloc, scm_must_realloc, scm_must_strdup,
8689 scm_must_strndup, scm_done_malloc, scm_done_free, scm_must_free):
8690 Reimplemented using the new scm_gc_malloc, etc., functions and
8691 deprecated.
8692
b606945b
TTN
86932002-02-11 Thien-Thi Nguyen <ttn@giblet.glug.org>
8694
8695 * Makefile.am (bin_PROGRAMS): Move `guile_filter_doc_snarfage'
8696 to `noinst_PROGRAMS'.
8697 (bin_SCRIPTS): Move all values to `noinst_SCRIPTS'; delete.
8698 (noinst_PROGRAMS, noinst_SCRIPTS): New.
8699
7c686ba8
MV
87002002-02-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8701
8702 * gc.h, gc.c (scm_gc_sweep): Issue deprecation warning when
8703 non-zero is returned from a port or smob free function.
8704 (scm_malloc, scm_realloc, scm_strndup, scm_strdup,
8705 scm_gc_register_collectable_memory,
8706 scm_gc_unregister_collectable_memory, scm_gc_malloc,
8707 scm_gc_realloc, scm_gc_free, scm_gc_strndup, scm_gc_strdup): New.
8708
8709 * backtrace.c, continuations.c, convert.i.c, coop-threads.c,
8710 debug-malloc.c, dynl.c, environments.c, environments.h,
8711 extensions.c, filesys.c, fports.c, gc.c, gc.h, gh_data.c, goops.c,
8712 guardians.c, hooks.c, init.c, keywords.c, load.c, numbers.c,
8713 ports.c, posix.c, procs.c, rdelim.c, regex-posix.c, root.c,
8714 smob.c, stime.c, strings.c, struct.c, struct.h, symbols.c, unif.c,
8715 vectors.c, weaks.c: Use scm_gc_malloc/scm_malloc and
8716 scm_gc_free/free instead of scm_must_malloc and scm_must_free, as
8717 appropriate. Return zero from smob and port free functions.
8718
8719 * debug-malloc.c (scm_malloc_reregister): Handle "old == NULL".
8720
8721 * deprecation.h, deprecation.c: Reimplemented to allow deprecation
8722 messages while the GC is running.
8723 (scm_c_issue_deprecation_warning_fmt): New.
8724
8725 * fports.c (scm_setvbuf): Reset read buffer to saved values when
8726 it is pointing to the putback buffer.
8727
66adc0a6
TTN
87282002-02-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
8729
8730 * gsubr.c (create_gsubr): On "too many args" error,
8731 also display arg count and name. Thanks to Bill Schottstaedt.
8732
0187b4f4
TTN
87332002-02-05 Thien-Thi Nguyen <ttn@giblet.glug.org>
8734
8735 * Makefile.am: Include $(top_srcdir)/pre-inst-guile.am.
8736
8737 (bin_SCRIPTS): Remove guile-snarf-docs-texi.
8738 (alldotdocfiles, snarf2checkedtexi, dotdoc2texi): New vars.
8739 (guile.texi, guile-procedures.texi): Use $(dotdoc2texi).
8740
8741 * guile-snarf-docs-texi.in: Bye bye.
8742
402e687c
MV
87432002-02-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8744
8745 * symbols.c (scm_make_symbol): Fix typo in docstring.
8746
8747 * symbols.h (scm_mem2uninterned_symbol, scm_symbol_interned_p,
8748 scm_make_symbol): New prototypes.
8749
319b98ed
MV
87502002-02-03 Marius Vollmer <mvo@zagadka.ping.de>
8751
8752 * symbols.h (SCM_SET_SYMBOL_HASH): Removed.
8753 (SCM_SYMBOL_INTERNED_P): New.
8754 * symbols.c (scm_symbol_hash): Use scm_ulong2num instead of
8755 SCM_MAKINUM since hash values can well be bignums.
8756 (scm_mem2symbol): Only use hash values below SCM_T_BITS_MAX/2.
8757 This signals a interned symbol.
8758 (scm_mem2uninterned_symbol, scm_symbol_interned_p,
8759 scm_make_symbol): New.
0187b4f4 8760
319b98ed
MV
8761 * print.c (scm_iprin1): Print uninterned symbols unreadably.
8762
34472dfe
TTN
87632002-02-02 Thien-Thi Nguyen <ttn@giblet.glug.org>
8764
8765 * __scm.h (HAVE_UINTPTR_T): Only define if UINTPTR_T attributes
8766 are defined: UINTPTR_MAX, INTPTR_MAX, INTPTR_MIN.
0187b4f4 8767 Thanks to Dave Love.
34472dfe 8768
1b39c2e3
MV
87692002-01-31 Marius Vollmer <mvo@zagadka.ping.de>
8770
8771 * symbols.c (scm_gensym): Use " g" as default prefix, not "g".
319b98ed 8772 This might help to make unintended clashes less likely.
1b39c2e3
MV
8773 (scm_string_to_symbol): Protect the string until the symbols is
8774 created.
8775
1fa86ca5
SJ
87762002-01-31 Stefan Jahn <stefan@lkcc.org>
8777
8778 * convert.c, convert.h, convert.i.c: New files containing C
34472dfe 8779 array to Scheme conversion helpers meant to be replacement
1fa86ca5
SJ
8780 functions for the deprecated gh interface.
8781
8782 * Makefile.am: Setup rules for new `convert.*' files.
8783
af68e5e5
SJ
87842002-01-28 Stefan Jahn <stefan@lkcc.org>
8785
8786 * symbols.c (scm_c_symbol2str): New function, replacement for
8787 `gh_scm2newsymbol()'.
8788
34472dfe 8789 * strings.c (scm_c_substring2str): New function. Proper
af68e5e5
SJ
8790 replacement for `gh_get_substr()'.
8791
8792 * socket.c: Include `stdint.h' if available for the `uint32_t'
8793 declaration.
8794
504d99c5 8795 * scmsigs.c (scm_sigaction): Initialize `chandler' (inhibits
af68e5e5
SJ
8796 compiler warning).
8797
8798 * backtrace.c: Include `lang.h' for GUILE_DEBUG conditional.
8799
c96d76b8 88002002-01-22 Neil Jerram <neil@ossau.uklinux.net>
34472dfe 8801
c96d76b8 8802 Other changes unrelated to Elisp...
34472dfe 8803
c96d76b8
NJ
8804 * eval.c (scm_m_if): Use s_if rather than repeating string literal
8805 "if".
8806 (comments): Fix a few typos.
8807 (scm_for_each): Add parentheses around oddly unparenthesized
8808 if/while conditions.
8809
8810 * read.c (scm_read_opts): Add full stop at end of doc for
8811 `keywords' option.
8812
8813 * script.c (scm_compile_shell_switches): Use scm_str2symbol
8814 instead of gh_symbol2scm.
8815
8816 * srcprop.h (SRCPROPBRK): Return C type rather than SCM.
8817 (SRCBRKP): Use SRCPROPBRK rather than duplicating its logic.
8818
8819 * srcprop.c (scm_srcprops_to_plist, scm_source_property): Change
8820 SRCPROPBRK (x) to SCM_BOOL (SRCPROPBRK (x)).
8821
8822 First batch of changes for Elisp support...
8823
8824 * alist.c, async.c, boolean.c, dynl.c, eval.c, filesys.c,
8825 fluids.c, list.c, load.c, options.c, posix.c, print.c, sort.c,
8826 throw.c, vectors.c, weaks.c: Add #include for lang.h.
8827
8828 * eval.c, eval.h, init.c, lang.c, lang.h: Use SCM_ENABLE_ELISP to
8829 conditionalize compilation and initialization of Elisp support
8830 function.
34472dfe 8831
c96d76b8
NJ
8832 * alist.c (scm_assq, scm_assv, scm_assoc), async.c
8833 (scm_asyncs_pending, scm_run_asyncs, noop), backtrace.c
8834 (scm_set_print_params_x), dynl.c (scm_make_argv_from_stringlist),
8835 filesys.c (fill_select_type, retrieve_select_type), fluids.c
8836 (scm_swap_fluids, scm_swap_fluids_reverse), list.c (scm_null_p,
8837 scm_ilength, scm_append_x, scm_last_pair, scm_reverse,
8838 scm_reverse_x, scm_list_ref, scm_list_set_x, scm_list_cdr_set_x,
bbd26b5a
NJ
8839 scm_c_memq, scm_memv, scm_member), load.c (scm_search_path),
8840 options.c (change_option_setting, scm_options), posix.c
8841 (environ_list_to_c), print.c (scm_iprlist), throw.c
8842 (scm_exit_status), vectors.c (scm_vector), weaks.c
8843 (scm_weak_vector): Use SCM_NULL_OR_NIL_P instead of SCM_NULLP.
c96d76b8
NJ
8844
8845 * boolean.c (scm_not): Use `SCM_FALSEP || SCM_NILP' instead of
8846 just SCM_FALSEP.
34472dfe 8847
c96d76b8
NJ
8848 * boolean.c (scm_boolean_p): Use `SCM_BOOLP || SCM_NILP' instead
8849 of just SCM_BOOLP.
8850
8851 * eval.c (scm_lisp_nil, scm_lisp_t, s_nil_ify, scm_m_nil_ify,
8852 s_t_ify, scm_m_t_ify, s_0_cond, scm_m_0_cond, s_0_ify,
8853 scm_m_0_ify, s_1_ify, scm_m_1_ify): Removed.
8854 (scm_m_atfop): Support function aliasing. Support both function
8855 args, which need transformation, and macro args, which do not.
8856 Add explanatory comments.
8857 (SCM_CEVAL): In switch cases for SCM_IM_AND, SCM_IM_COND,
8858 SCM_IM_DO, SCM_IM_IF and SCM_IM_OR, add `|| SCM_NILP' to existing
8859 checks for SCM_FALSEP. In switch case for SCM_IM_NIL_COND, use
8860 SCM_NULLP || SCM_NILP instead of checks against (removed)
8861 scm_lisp_nil. Removed switch cases for SCM_IM_NIL_IFY,
8862 SCM_IM_T_IFY, SCM_IM_0_COND, SCM_IM_0_IFY, SCM_IM_1_IFY.
8863
8864 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
8865 scm_m_while, scm_nil_eq): Commented out; I don't think we need
8866 these, but I don't want to remove them yet, just in case.
8867 (scm_init_lang): Define `%nil' variable on Scheme level to hold
8868 Elisp nil value.
8869
8870 * lang.h (SCM_NILP): Test against Elisp nil value instead of
8871 against (removed) scm_lisp_nil.
8872 (SCM_NILNULLP, SCM_NIL2EOL, SCM_EOL2NIL): Commented out.
8873 (SCM_NULL_OR_NIL_P): New.
8874
8875 * list.c (scm_append): Use SCM_VALIDATE_NULL_OR_NIL instead of
8876 SCM_VALIDATE_NULL.
8877
8878 * print.c (scm_isymnames): Fix comment. Remove #@nil-ify,
8879 #@t-ify, #@0-cond, #@0-ify, #@1-ify. Add #nil (for SCM_ELISP_NIL
8880 value).
8881
8882 * sort.c (scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
8883 scm_sort_x, scm_sort, scm_stable_sort_x, scm_stable_sort): Use
8884 SCM_NULL_OR_NIL_P instead of SCM_NULLP. In constructions like `if
8885 (SCM_NULLP (x)) return SCM_EOL;', return x rather than SCM_EOL.
8886
8887 * tags.h (SCM_IM_NIL_IFY, SCM_IM_T_IFY, SCM_IM_0_COND,
8888 SCM_IM_0_IFY, SCM_IM_1_IFY): Removed.
8889 (SCM_IM_BIND, SCM_IM_DELAY, SCM_IM_CALL_WITH_VALUES, SCM_UNBOUND):
8890 Numbering shifted down accordingly.
8891 (SCM_ELISP_NIL): New IFLAG.
8892
8893 * validate.h (SCM_VALIDATE_NULL_OR_NIL): New.
34472dfe 8894
a392ee15
DH
88952002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
8896
8897 * eval.c: Removed outdated references to "everr". Improved some
8898 comments.
8899
8900 (scm_deval_args, deval_args): Renamed scm_deval_args to
8901 deval_args, since it is not part of the interface.
8902
8903 (SCM_CEVAL): Added (maybe somewhat verbose) comment. Avoid to
8904 use references to debug.vect[0] before it exists. Add parentheses
8905 to switch statement.
8906
8907 * goops.h: Added local emacs variables.
8908
24933780
DH
89092002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
8910
8911 * eval.[ch] (scm_deval_args): Made static.
8912
8913 * srcprop.c (scm_source_property): Remove redundant SCM_IMP
8914 test.
8915
8916 * strings.c (scm_c_string2str): Clarified comment. Replaced
8917 THINKME by FIXME for uniformness. Removed question about whether
8918 arguments need to be protected from garbage collection: Arguments
8919 must be protected as any other variable.
8920
f9450cdb
DH
89212002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
8922
8923 * procs.h (SCM_CLOSURE_BODY): New Macro.
8924
8925 * debug.c (scm_procedure_name, scm_procedure_source), eval.c
8926 (SCM_CEVAL, SCM_APPLY), goops.c (scm_sys_initialize_object,
8927 get_slot_value, set_slot_value), procs.c
8928 (scm_procedure_documentation), sort.c (closureless), stacks.c
8929 (get_applybody): Replace SCM_CDR (SCM_CODE (...)) by
8930 SCM_CLOSURE_BODY.
8931
8932 * sort.c (closureless): Prefer !SCM_FOOP over SCM_NFOOP.
8933
5dc64f64
MV
89342001-12-26 Marius Vollmer <mvo@zagadka.ping.de>
8935
8936 * Makefile.am (guile-procedures.txt): When we don't have makeinfo,
8937 use "cp" instead.
8938
197ee3d3
MV
89392001-12-16 Marius Vollmer <mvo@zagadka.ping.de>
8940
8941 * stacks.c, stacks.h (scm_t_stackype): Renamed to scm_stack_type
8942 everywhere.
8943
8944 * continuations.c (scm_make_continuation): Do not retain the
8945 throw_value when the continuation is invoked.
8946
4d4528e7
SJ
89472001-12-08 Stefan Jahn <stefan@lkcc.org>
8948
8949 * strings.c (scm_c_string2str): New function. Converts a
34472dfe 8950 given Scheme string into a C string. Also put in two
4d4528e7
SJ
8951 THINKME's regarding the malloc policy for the missing converter
8952 routines.
8953
98347362
NJ
89542001-12-01 Neil Jerram <neil@ossau.uklinux.net>
8955
8956 * gh_data.c (gh_module_lookup): Use scm_str2symbol rather than
8957 gh_symbol2scm.
8958
1fc8902f
DH
89592001-11-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
8960
8961 * gc.h (SCM_GC_CELL_WORD, SCM_GC_CELL_OBJECT,
8962 SCM_GC_SET_CELL_WORD, SCM_GC_SET_CELL_OBJECT): New macros.
8963
8964 (SCM_GC_CELL_TYPE, SCM_CELL_WORD, SCM_CELL_OBJECT,
8965 SCM_SET_CELL_WORD, SCM_SET_CELL_OBJECT, SCM_FREE_CELL_CDR,
8966 SCM_GC_SET_CELL_OBJECT): Express in terms of SCM_GC_CELL_*
8967 macros.
8968
8969 (SCM_FREE_CELL_P): Express in terms of SCM_GC_CELL_TYPE.
8970
8971 * inline.h (scm_alloc_cell, scm_alloc_double_cell): Use
8972 SCM_GC_CELL_* macros when accessing free cells.
8973
4878beec
MV
89742001-11-25 Marius Vollmer <mvo@zagadka.ping.de>
8975
8976 * vectors.h (SCM_MAKE_VECTOR_TAG): New.
34472dfe 8977 * unif.h (SCM_MAKE_BITVECTOR_TAG, SCM_MAKE_UVECTOR_TAG): New.
4878beec
MV
8978 * symbols.h (SCM_MAKE_SYMBOL_TAG): New.
8979 * strings.h (SCM_MAKE_STRING_TAG): New.
8980 * procs.h (SCM_MAKE_CCLO_TAG): New.
8981 * numbers.h (SCM_MAKE_BIGNUM_TAG): New.
8982
8983 * goops.h: Replaced SCM_DEBUG_DEPRECATED with
8984 !SCM_ENABLE_DEPRECATED.
8985
8986 * async.c, async.h (scm_system_async_mark_from_signal_handler):
8987 New.
8988
8989 * scmsigs.c (scm_take_signal): Removed all code that assumes that
8990 signal handlers are allowed to divert the flow of control. Call
8991 scm_system_async_mark_from_signal_handler instead of
8992 scm_system_async_mark.
8993
8994
8995 Deprecated SCM_NEWCELL and SCM_NEWCELL2. Added scm_alloc_cell and
8996 scm_alloc_double_cell in their place.
34472dfe 8997
4878beec
MV
8998 * gc.h (SCM_GC_SET_ALLOCATED, scm_debug_newcell,
8999 scm_debug_newcell2, scm_tc16_allocated): Removed from header.
9000 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
9001 (SCM_NEWCELL, SCM_NEWCELL2): Implement in terms of
9002 scm_deprecated_newcell and scm_deprecated_newcell2.
9003
9004 gc.c (scm_tc16_allocated): Only define when including deprecated
9005 features.
9006 (scm_debug_newcell, scm_debug_newcell2): Removed.
9007 (scm_init_storage): Do not initialize scm_tc16_allocated.
9008 (scm_init_gc): Do it here.
9009 (allocated_mark): New, from old code.
9010 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
34472dfe 9011
4878beec 9012 * inline.c, inline.h: New files.
34472dfe 9013 * Makefile.am: Added them in all the right places.
4878beec 9014
34472dfe 9015 * _scm.h: Include "libguile/inline.h".
4878beec
MV
9016
9017 * alist.c, coop-threads.c, debug.c, environments.c, eval.c,
9018 fports.c, gh_data.c, goops.c, guardians.c, lang.c, list.c,
9019 num2float.i.c, numbers.c, pairs.c, ports.c, print.c, procs.c,
9020 smob.c, smob.h, strings.c, strports.c, struct.c, symbols.c,
9021 unif.c, variable.c, vectors.c, vports.c, weaks.c: Replaced
9022 SCM_NEWCELL and SCM_NEWCELL2 with scm_alloc_cell and
9023 scm_alloc_double_cell, respectively.
9024
d2bc7fae
MV
90252001-11-23 Marius Vollmer <mvo@zagadka.ping.de>
9026
9027 * modules.c (scm_c_use_module): Adapt to changes to
9028 `process-use-modules'.
9029
5eec27e9
DH
90302001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
9031
9032 * numbers.c (scm_divide): Fix more division by zero errors.
9033
8978878f
GH
90342001-11-21 Gary Houston <ghouston@arglist.com>
9035
9036 * Makefile.am (OMIT_DEPENDENCIES): removed, since it seems to be
9037 obsolete. autogen.sh says:
9038 invalid unused variable name: `OMIT_DEPENDENCIES'
9039
164826d3
DH
90402001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
9041
9042 * numbers.c (scm_divide): Fix (/ 0). Thanks to Keith Wright for
9043 reporting the bug.
9044
84aff7a7
MV
90452001-11-21 Marius Vollmer <mvo@zagadka.ping.de>
9046
9047 * Makefile.am (install-exec-hook): Prepend $(DESTDIR) to filename.
9048 Thanks to Eric Gillespie, Jr!
34472dfe 9049
6063dc1d
SJ
90502001-11-21 Stefan Jahn <stefan@lkcc.org>
9051
34472dfe
TTN
9052 * win32-socket.c (getservent, setservent, endservent,
9053 getprotoent, setprotoent, endprotoent): New functions.
6063dc1d
SJ
9054 Appropriate replacements for M$-Windows.
9055
9056 * numbers.c (SIZE_MAX, PTRDIFF_MAX, PTRDIFF_MIN): Reintroduced
9057 these definitions for GUILE_DEBUG.
9058
9059 * net_db.c: Include "win32-socket.h" if compiling with a native
34472dfe
TTN
9060 M$-Windows compiler. Include some pieces of code (protoent and
9061 servent interface) protected by HAVE_* macros when using a
6063dc1d
SJ
9062 native M$-Windows compiler.
9063
351982f6
MV
90642001-11-20 Marius Vollmer <mvo@zagadka.ping.de>
9065
9066 * modules.c (scm_c_export): Do nothing when the first argument is
9067 already the terminating NULL. Thanks to Han-Wen Nienhuys!
9068
849038b5
TTN
90692001-11-20 Thien-Thi Nguyen <ttn@glug.org>
9070
9071 * Makefile.am (libpath.h): In SCM_BUILD_INFO,
9072 also include `buildstamp'.
9073
5c790b44
RB
90742001-11-18 Rob Browning <rlb@defaultvalue.org>
9075
9076 * version.c
9077 (s_scm_major_version): use SCM_MAJOR_VERSION.
9078 (s_scm_minor_version): use SCM_MINOR_VERSION.
9079 (s_scm_micro_version): use SCM_MICRO_VERSION.
9080 (s_scm_version): use SCM_MAJOR_VERSION, SCM_MINOR_VERSION, and
9081 SCM_MICRO_VERSION.
9082
9083 * version.h.in
9084 (SCM_MAJOR_VERSION): renamed from SCM_GUILE_MAJOR_VERSION.
9085 (SCM_MINOR_VERSION): renamed from SCM_GUILE_MINOR_VERSION.
9086 (SCM_MICRO_VERSION): renamed from SCM_GUILE_MICRO_VERSION.
9087
694a9bb3
NJ
90882001-11-18 Neil Jerram <neil@ossau.uklinux.net>
9089
9090 * vectors.c (scm_vector_move_left_x, scm_vector_move_right_x):
9091 Rewrite docstrings without reference to substring-move-left/right,
9092 since the latter no longer exist.
9093
302c12b4
DH
90942001-11-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
9095
9096 * eval.c: Removed bogus comment about acros.
9097
9098 (scm_unmemocar): Use !SCM_CONSP instead of SCM_IMP.
9099 Minimize scope of local variable. Eliminate dependency on
9100 macro DEBUG_EXTENSIONS.
9101
9102 (s_splicing): New error message string.
9103
9104 (scm_m_body): Issue 'bad body' message rather than 'missing
9105 expression' message.
9106
9107 (scm_m_quote): Eliminate unnecessary copying.
9108
9109 (scm_m_lambda, scm_m_letstar, scm_m_letrec, scm_m_let): Leave the
9110 checking of the body to scm_m_body.
9111
9112 (scm_m_do): Move comment to function header. Rename arg1 to
9113 binding. Made the code a bit easier to read.
9114
9115 (evalcar): Removed.
9116
9117 (iqq): Added a comment. Changed the depth parameter to
9118 unsigned. Use size_t for vector lengths. Make sure vector object
9119 is gc protected as long as its contents are read. Add some syntax
9120 checks. Get rid of unnecessary SCM_IMP test. Clean up the
9121 control structure a bit.
9122
9123 (scm_m_delay): Added comment about the implementation of
9124 scm_m_delay.
9125
9126 (scm_m_define): Add comment about guile's currying define
9127 syntax. Renamed 'proc' to 'name'. Eliminate dependency on macro
9128 DEBUG_EXTENSIONS. Simplified code a bit. Eliminate SICP code.
9129
9130 (scm_m_letrec1): Removed. Part of the functionality is taken
9131 over by the new function 'transform_bindings'.
9132
9133 (transform_bindings): New function. Takes over some of the
9134 functionality of removed function 'scm_m_letrec1', namely to split
9135 a list of bindings into a reversed list of variables and a list of
9136 initializers.
9137
9138 (scm_m_letrec): Call 'transform_bindings'.
9139
9140 (scm_m_let): Minimized scope of local variables. Renamed 'proc'
9141 to 'temp' and 'arg1' to 'binding'. Eliminated redundant SCM_NIMP
9142 test. Use 'transform_bindings'. Fixed scoping error with named
9143 let (Thanks to Aubrey Jaffer for reporting the bug and to Neil
9144 Jerram for suggesting the fix). Cleaned up the control structure
9145 a bit.
9146
9147 (scm_m_expand_body): Use 'transform_bindings'. Eliminated
9148 unnecessary consing. Eliminated unnecessary
9149 SCM_DEFER/ALLOW_INTS.
9150
9151 (SCM_CEVAL): Un-obfuscated some loops.
9152
cecb4a5e
NJ
91532001-11-16 Neil Jerram <neil@ossau.uklinux.net>
9154
8f85c0c6
NJ
9155 * gc.h (scm_unhash_name): Old declaration removed.
9156
9157 * eval.c (s_scm_eval): Change @var{primitive-eval} to
9158 @code{primitive-eval}.
9159
9160 * feature.c, vectors.c, net_db.c, unif.c, weaks.c, struct.c,
9161 version.c, alist.c, ports.c, ramap.c, unif.c, strings.c, list.c:
9162 Change @deffnx lines in docstrings to say {Scheme Procedure}
9163 rather than primitive or procedure.
9164
9165 * posix.c (scm_execl), filesys.c (scm_close), unif.c
9166 (scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
9167 scm_bit_set_star_x, scm_bit_invert_x), ramap.c (scm_array_fill_x,
9168 scm_array_for_each, scm_array_index_map_x), vectors.c (scm_vector,
9169 scm_make_vector, scm_vector_to_list, scm_vector_fill_x), strop.c
9170 (scm_string_split, scm_string_ci_to_symbol), strings.c
9171 (scm_string_p), sort.c (scm_merge), print.c (scm_newline),
9172 macros.c (scm_macro_type), alist.c (scm_acons, scm_assq):
9173 Docstring fixes and improvements reflecting edits that have been
9174 made in the reference manual source.
9175
9176 * objprop.c (scm_object_properties, scm_set_object_properties_x,
9177 scm_object_property, scm_set_object_property_x): Remove invalid
9178 @deffnx lines for corresponding procedure property primitives.
9179
cecb4a5e
NJ
9180 These changes add a @deffnx C function declaration and function
9181 index entries for each Guile primitive to the copy of the doc
9182 snarf output that is used for reference manual synchronization.
9183 Online help is unchanged.
849038b5 9184
cecb4a5e
NJ
9185 * snarf.h (SCM_SNARF_DOCS): Output primitive's C function name.
9186 (SCM_DEFINE, SCM_DEFINE1, SCM_REGISTER_PROC): Supply to C function
9187 name to SCM_SNARF_DOCS.
849038b5 9188
cecb4a5e
NJ
9189 * guile-snarf-docs-texi.in: Pass the shell script's arguments into
9190 snarf-check-and-output-texi.
9191
9192 * Makefile.am (guile-procedures.texi): New rule.
9193 (BUILT_SOURCES, guile.texi, guile-procedures.txt, CLEANFILES):
9194 Changed so that the last stage of doc snarfing is now performed
9195 twice, once to produce guile-procedures.txt for online help, and
9196 once to produce guile.texi for reference manual synchronization.
9197
ddea3325
DH
91982001-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
9199
9200 * eval.c (RETURN): Wrap in do{}while(0) in order to make it
9201 safely usable as a single statement followed by a ';', for example
9202 in an if statement.
9203
9204 (SCM_CEVAL, SCM_APPLY): Clean up code using 'RETURN'.
9205
72dd0a03
NJ
92062001-11-13 Neil Jerram <neil@ossau.uklinux.net>
9207
9208 * random.c (scm_random_solid_sphere_x,
9209 scm_random_hollow_sphere_x): Correct "shere" typos.
9210
9211 * hashtab.c (scm_hash_fold): Add missing apostrophe to docstring.
9212
9213 * version.c (scm_version): Update docstring to include
9214 `micro-version'.
9215
6558eda6
MV
92162001-11-13 Marius Vollmer <mvo@zagadka.ping.de>
9217
409b8588
MV
9218 * modules.c (scm_c_export): Call va_end after collecting the
9219 symbols.
9220
adb8c0f2
MV
9221 * strop.h, strop.c (scm_substring_move_left_x,
9222 scm_substring_move_right_x): Removed.
9223
6558eda6
MV
9224 * __scm.h (HAVE_UINTPTR_T, HAVE_PTRDIFF_T, HAVE_LONG_LONG,
9225 HAVE_LONG_LONGS): Define to "1" when defining them, to mirror what
9226 configure does.
9227
5d8fc640
MV
92282001-11-12 Marius Vollmer <mvo@zagadka.ping.de>
9229
9230 * numbers.c: Document macros to define when including
9231 num2integral.i.c. MAX_VALUE and MIN_VALU are no longer used, we
9232 now rely on SIZEOF_ macros that have been figured out at
9233 configure time.
9234
9235 * num2integral.i.c: Adapt to new interface.
9236 (NUM2INTEGRAL): Test whether a fixnum can be represented in the
9237 target type by casting it and checking whether it is still the
9238 same. Do not try to handle bignums for integral types that are
9239 smaller than fixnums. When handling bignums, collect the
9240 magnituse first into a unsigned type, and correctly check for
9241 overflow.
9242 (INTEGRAL2BIG): Do not use MIN_VALUE explicitely by observing that
9243 only -MIN_VALUE can still be negative of all negative numbers (in
9244 twos-complement).
9245
849038b5 9246 * tags.h (SIZEOF_SCM_T_BITS): Define it appropriately.
5d8fc640
MV
9247
9248 * __scm.h: Define HAVE_UINTPTR_T, HAVE_PTRDIFF_T and
9249 HAVE_LONG_LONG depending on whether their size is non-zero.
9250
d6b8cf11
TTN
92512001-11-11 Thien-Thi Nguyen <ttn@glug.org>
9252
9253 * strop.c (scm_string_null_p): Docfix; nfc.
9254 Thanks to Scott Lenser.
9255
9401323e
NJ
92562001-11-07 Neil Jerram <neil@ossau.uklinux.net>
9257
9258 * extensions.c (scm_load_extension): Canonicalize docstring
9259 whitespace.
9260
9261 * unif.c (scm_uniform_array_write), ports.c
9262 (scm_current_output_port, scm_force_output), dynwind.c
9263 (scm_dynamic_wind), scmsigs.c (scm_setitimer, scm_getitimer),
9264 filesys.c (scm_open, scm_lstat), struct.c
9265 (scm_make_struct_layout), random.c (scm_random,
9266 scm_random_solid_sphere_x, scm_random_hollow_sphere_x, strop.c
9267 (scm_i_index): Remove superfluous whitespace from end of docstring
9268 lines.
9269
9270 * filesys.c (scm_select), guardians.c (scm_guardian_greedy_p),
9271 strings.c (scm_make_string), variable.c (scm_make_variable,
9272 scm_make_undefined_variable, scm_variable_p, scm_variable_set_x,
9273 scm_variable_bound_p), scmsigs.c (scm_setitimer, scm_getitimer),
9274 posix.c (scm_crypt), struct.c (scm_make_vtable_vtable), hashtab.c
9275 (scm_hash_fold), ports.c (scm_port_for_each): Remove superfluous
9276 newline at end of docstrings.
9277
9278 * modules.c (scm_set_current_module): Add missing newline to
9279 docstring.
9280
b4e15479
SJ
92812001-11-07 Stefan Jahn <stefan@lkcc.org>
9282
9283 * win32-socket.[ch]: New files. Defines Winsock-API error codes
9284 and makes them available through Guile. That is because the
9285 Winsock-API does not store its errors in `errno' and thus cannot
9286 return error messages via `strerror (errno)'.
9287
9288 * socket.c (scm_init_socket): Initialize `win32-socket' part
9289 here under M$-Windows.
9290
d6b8cf11 9291 * numbers.h: Added missing declaration of
b4e15479
SJ
9292 `scm_sys_check_number_conversions()'.
9293
9294 * error.c: Local definition of SCM_I_STRERROR and SCM_I_ERRNO
9295 and use in `(strerror)' and `(system-error)'.
9296
d6b8cf11 9297 * Makefile.am (EXTRA_libguile_la_SOURCES): Added
b4e15479
SJ
9298 `win32-socket.[ch]' to extra source and header files.
9299
7ab89df1
MV
93002001-11-06 Marius Vollmer <mvo@zagadka.ping.de>
9301
9302 * script.c (scm_shell_usage, scm_compile_shell_switches): Prepend
9303 a call to turn-on-debugging when --debug has been given instead of
9304 turning it on directly. Also, handle new `--no-debug' option,
9305 which might suppress the call to turn-on-debugging.
9306
0233bfc1
SJ
93072001-11-05 Stefan Jahn <stefan@lkcc.org>
9308
9309 * struct.c (s_scm_struct_vtable_p): Corrected docstring.
9310
8f99e3f3
SJ
93112001-11-04 Stefan Jahn <stefan@lkcc.org>
9312
9313 * Makefile.am (libguile_la_LIBADD): Added $(THREAD_LIBS_LOCAL)
d6b8cf11 9314 here (was at guile_LDADD) which describes the dependency
8f99e3f3
SJ
9315 correctly and allows a clean build on Win32.
9316
d6b8cf11 9317 * __scm.h (SCM_API): Follow-up patch. Renamed __FOO__ macros
8f99e3f3
SJ
9318 into FOO.
9319
9320 * __scm.h: USE_DLL_IMPORT indicates the usage of the DLL
9321 import macros for external libraries (libcrypt, libqthreads,
9322 libreadline and libregex).
9323
9324 * coop-defs.h: Include <winsock2.h> for `struct timeval'.
9325
9326 * posix.c (flock): Added support for flock() in M$-Windows.
9327
9328 * guile.c (SCM_IMPORT): Follow-up patch. Use SCM_IMPORT instead
9329 of __SCM_IMPORT__.
9330
9331 * fports.c (getflags): Differentiate reading and writing pipes
9332 descriptors.
9333
9334 * filesys.c (S_IS*): Redefine all of the S_IS*() macros for
9335 M$-Windows.
9336
9337 * coop.c (coop_condition_variable_timed_wait_mutex): Use
9338 conditionalized error code if `ETIMEDOUT' is not available.
9339 (scm_thread_usleep): Remove bogus declaration of `struct timeval
9340 timeout'.
9341
9342 * numbers.c (PTRDIFF_MIN): Moved this definition where it actually
9343 belongs. That is because NO_PREPRO_MAGIC gets undefined after
9344 each inclusion of `num2integral.i.c'.
9345 (SIZE_MAX): Define NO_PREPRO_MAGIC if SIZE_MAX is undefined.
9346
4e21fa60
MV
93472001-11-03 Marius Vollmer <mvo@zagadka.ping.de>
9348
9349 * eval.c (scm_m_begin): Allow `(begin)`, with no subforms.
9350 (SCM_CEVAL): Evaluate an empty `begin' to SCM_UNSPECIFIED.
9351
08112c95
MD
93522001-11-02 Mikael Djurfeldt <mdj@linnaeus>
9353
7663c008
MD
9354 * print.c (scm_iprin1): Mark print state as revealed when
9355 dispatching to generic write or display.
9356
08112c95
MD
9357 * unif.c (scm_ra2contig): Fixed memory overwrite bug.
9358
f712d833
MV
93592001-11-02 Marius Vollmer <mvo@zagadka.ping.de>
9360
9361 Support for native Win32. Thanks to Stefan Jahn!
d6b8cf11 9362
f712d833
MV
9363 * Makefile.am: Add win32-uname.c, win32-uname.h, win32-dirent.c
9364 and win32-dirent.h to extra source and header files. These
9365 include the uname() and the POSIX dirent interface implementation
9366 for M$-Windows. Put `-no-undefined' into LDFLAGS to support
9367 linkers which do not allow unresolved symbols inside shared
9368 libraries. Corrected `guile_filter_doc_snarfage$(EXEEXT)'
9369 dependency.
9370
d6b8cf11
TTN
9371 * __scm.h: Defined SCM_API. This macro gets prepended to all
9372 function and data definitions which should be exported or imported
f712d833
MV
9373 in the resulting dynamic link library in the Win32 port.
9374
9375 * __scm.h, alist.h, arbiters.h, async.h, backtrace.h, boolean.h,
d6b8cf11 9376 chars.h, continuations.h, coop-defs.h, coop-threads.h,
f712d833
MV
9377 debug-malloc.h, debug.h, deprecation.h, dynl.h, dynwind.h,
9378 environments.h, eq.h, error.h, eval.h, evalext.h, extensions.h,
9379 feature.h, filesys.h, fluids.h, fports.h, gc.h, gdb_interface.h,
9380 gdbint.h, gh.h, goops.h, gsubr.h, guardians.h, hash.h, hashtab.h,
9381 hooks.h, init.h, ioext.h, iselect.h, keywords.h, lang.h, list.h,
d6b8cf11 9382 load.h, macros.h, mallocs.h, modules.h, net_db.h, numbers.h,
f712d833
MV
9383 objects.h, objprop.h, options.h, pairs.h, ports.h, posix.h, print.h,
9384 procprop.h, procs.h, properties.h, ramap.h, random.h, rdelim.h,
9385 read.h, regex-posix.h, root.h, rw.h, scmsigs.h, script.h, simpos.h,
9386 smob.h, socket.h, sort.h, srcprop.h, stackchk.h, stacks.h, stime.h,
9387 strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h,
9388 tags.h, threads.h, throw.h, unif.h, values.h, variable.h, vectors.h,
9389 vports.h, weaks.h:
9390 Prefixed each each exported symbol with SCM_API.
9391
d6b8cf11 9392 * continuations.c: Added comment about the use of the extern
f712d833
MV
9393 declarations of {get,set}context() functions used in the ia64 port.
9394
9395 * continuations.h, gc.c: `__libc_ia64_register_backing_store_base'
9396 is meant to be a `unsigned long *'.
9397
9398 * filesys.c: Include `direct.h' if possible. Use local
9399 `win32-dirent.h' for the native M$-Windows port. Define S_IS*()
9400 macros for M$-Windows. Implementation of `fstat_Win32()' which is
9401 able to differentiate between sockets and other file descriptors.
9402 Use this function as wrapper in `scm_fstat()'. Fixed typo in
9403 `scm_dirname()'.
9404
9405 * fports.c: Include `io.h' is possible. Put `*fp' into referring
9406 statement block in `scm_fport_buffer_add()'.
9407 Some corrections in `getflags()'.
d6b8cf11 9408
f712d833
MV
9409 * gdb_interface.h (GDB_INTERFACE): Also support __CYGWIN__.
9410
9411 * guile.c: Make sure to define __SCM_IMPORT__ for shared library
9412 build on Win32. Disable preloaded symbols on Win2 platforms.
9413
9414 * ioext.c, ports.c: Include `io.h' is possible.
9415
9416 * mkstemp.c: Include `process.h' is possible.
9417
9418 * net_db.c: Disable extern declaration of `h_errno' for __CYGWIN__,
9419 too.
9420 Put `scm_return_entry()' into HAVE_GETSERVENT conditional.
9421
9422 * posix.c: Remove unnecessary dirent includes and defines. Include
9423 local `win32-uname.h' for MinGW. Extern declaration of
9424 `mkstemp()' for systems where it does not exists. Make
9425 `getlogin()' available on M$-Windows.
9426
9427 * scmsigs.c: Made `usleep()' avalable on MinGW.
9428
9429 * stime.c: On M$-Windows `tzname[]' is known to be `_tzname[]'.
9430
9431 * win32-dirent.c: Include "win32-dirent.h", not "dirent.h".
9432
9433 * win32-uname.c: Include "win32-uname.h", not "uname.h".
9434
d245ce23
MD
94352001-10-28 Mikael Djurfeldt <mdj@linnaeus>
9436
9437 * unif.c (scm_uniform_array_read_x, scm_uniform_array_write):
9438 Don't apply scm_uniform_vector_length on arrays.
9439
8ea46249
DH
94402001-10-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
9441
9442 * eval.c (scm_lookupcar, scm_m_letstar, scm_m_do, iqq,
9443 scm_m_define, scm_m_letrec1, scm_m_let, scm_m_expand_body,
9444 scm_macroexp, unmemocopy, scm_eval_args, scm_deval_args,
9445 SCM_CEVAL, scm_map, scm_init_eval): When building lists, prefer
9446 scm_list_<n> over scm_cons[2]?.
9447
9448 (scm_unmemocar, scm_m_cond, scm_m_letstar, scm_m_letrec1,
9449 scm_m_let, scm_m_atbind, unmemocopy, SCM_CEVAL, SCM_APPLY): Use
9450 SCM_C[AD][AD]R instead of explicit form.
9451
9452 (scm_m_set_x, scm_m_cond, scm_m_letstar, scm_m_do): Reordered
9453 comparison parameters.
9454
9455 (scm_m_case, scm_m_cond, scm_m_letstar, scm_m_do, SCM_CEVAL): Use
9456 !SCM_NULLP instead of SCM_NIMP.
9457
9458 (scm_m_case): Don't copy the form. Renamed proc to clause and
9459 minimized its scope. Renamed x to clauses. Removed side
9460 effecting operation from macro call.
9461
9462 (scm_m_cond): Don't copy the form. Renamed arg1 to clause and
9463 minimized its scope. Renamed x to clauses. Minimized the scope
9464 of variable 'len'. Make sure the else clause is treated specially
9465 even in case of '=>' occurences. Don't change the else to #t in
9466 order to be able to distinguish this case in the evaluator. Leave
9467 type checking of the recipient to the evaluator.
9468
9469 (scm_c_improper_memq): Made the comment somewhat clearer.
9470
9471 (scm_m_lambda): Renamed proc to formals. Removed unnecessary
9472 test for SCM_IM_LET at the place of the formal parameters.
9473 Simplified the formal parameter checking.
9474
9475 (scm_m_letstar): Added Comment. Renamed proc to bindings.
9476 Renamed arg1 to binding and minimized its scope. Eliminated
9477 unnecessary consing.
9478
9479 (scm_m_do): Renamed proc to bindings. Minimized the scope of
9480 variable 'len'.
9481
9482 (build_binding_list): New static function.
9483
9484 (unmemocopy): Don't use SCM_TYP7 on pairs (it's unclean).
9485 Further, split up the 'letrec' unmemoizing code to the
9486 corresponding parts for 'do', 'let' and 'letrec', adding comments
9487 to each form. Cleanup the handling of the do form (This removes
9488 some *real* code :-).
9489
9490 (SCM_CEVAL): Removed side effecting operation from macro call.
9491 Handle the 'else clause of the 'cond form specially - the symbol
9492 'else is not replaced with #t any more.
9493
8186c4f5
GH
94942001-10-14 Gary Houston <ghouston@arglist.com>
9495
9496 * version.c (scm_version): use sprintf instead of snprintf,
9497 for portability. thanks to Bill Schottstaedt.
9498
89759084
MD
94992001-10-14 Mikael Djurfeldt <mdj@linnaeus>
9500
9501 * read.c (scm_lreadr): When user-defined hash procedure returns
9502 SCM_UNSPECIFIED: Fall back to standard handling instead of raising
9503 an exception. (This prevents parsing of uniform vectors from
9504 interfering with parsing of numbers.)
9505
9c7ce563
MV
95062001-10-13 Marius Vollmer <mvo@zagadka.ping.de>
9507
9508 * numbers.c: Set NO_PREPRO_MAGIC when defining our version of
9509 PTRDIFF_MIN. Thanks to Ken Raeburn.
9510
95112001-10-07 Marius Vollmer <mvo@zagadka.ping.de>
9512
9513 * Makefile.am (EXTRA_libguile_la_SOURCES): Added "mkstemp.c".
9514
9515 * eval.c (scm_m_atbind): First try to find the variable without
9516 defining it locally; when it has not been found, define it
9517 locally.
9518
9519 * modules.c (module_variable): Pass over variables that exist but
9520 are unbound.
9521
95222001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
9523
9524 * backtrace.c (display_backtrace_file_and_line): Only use
9525 scm_basename when POSIX support is compiled in. Thanks to Chris
9526 Cramer.
9527
1fe5e088
DH
95282001-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9529
9530 * numbers.c (mem2uinteger): Return number read so far when coming
9531 across a hexdigit after having read a # or if not reading a hex
9532 value. This will enable the calling code to correctly handle
9533 forms like 1e2. (The background is, that the exponent markers d,
9534 e and f are also hexdigits.) Thanks to Mikael Djurfeldt for
9535 providing this patch.
9536
9537 (mem2complex): Fix erroneous double-negation. Now, numbers like
9538 1-i will be read correctly.
9539
68665a97
MD
95402001-10-12 Mikael Djurfeldt <mdj@linnaeus>
9541
9542 * debug.c (scm_mem_to_proc): Fixed typo in previous change.
9543
9544 * validate.h (SCM_VALIDATE_DOUBLE_DEF_COPY): New macro.
9545
d5cf5324
DH
95462001-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
9547
9548 * print.c (scm_print_state_vtable, print_state_pool):
9549 Initialize. These variables are now registered as gc roots.
9550
9551 (scm_current_pstate): Update documentation.
9552
9553 (scm_current_pstate, scm_make_print_state, scm_free_print_state,
9554 scm_prin1, scm_init_print): print_state_pool is registered as a
9555 gc root and thus does not need to be protected by a surrounding
9556 pair any more.
9557
9558 (make_print_state): The car of print_state_pool no longer holds
9559 the scm_print_state_vtable.
9560
9561 (scm_current_pstate, scm_make_print_state, print_circref,
9562 scm_iprin1, scm_prin1, scm_iprlist): Prefer !SCM_<foo> over
9563 SCM_N<foo>.
9564
9565 (scm_prin1): When building lists, prefer scm_list_<n> over
9566 scm_cons[2]?.
9567
9568 (scm_iprlist): Removed a redundant SCM_IMP test.
9569
9570 (scm_simple_format): Use SCM_EQ_P to compare SCM values.
9571
37c56aec
DH
95722001-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
9573
9574 * debug.c (scm_make_iloc): Prefer !SCM_<foo> over SCM_N<foo>.
9575
9576 (scm_memcons, scm_mem_to_proc): When building lists, prefer
9577 scm_list_<n> over scm_cons[2]?.
9578
9579 (scm_mem_to_proc): Prefer SCM_CONSP over SCM_NIMP.
9580
9581 (scm_procedure_name): Use SCM_CADR instead of explicit form.
9582
9583 (debugobj_print): Coerce scm_intprint arg 1 to long, not int.
9584 Thanks to Rob Browning for the patch (see log entry 2001-09-21) -
9585 for some reason his patch didn't make it into the cvs.
9586
79d34f68
DH
95872001-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
9588
9589 * numbers.c (mem2decimal_from_point): Cleaned up the parsing a
9590 little bit - should even be somewhat more accurate now.
9591
5e137c65
RB
95922001-10-08 Rob Browning <rlb@defaultvalue.org>
9593
9594 * gc.c: support ia64 register backing store.
9595 (SCM_MARK_BACKING_STORE): new macro.
9596
9597 * continuations.h: support ia64 register backing store.
9598 (struct scm_t_contregs): add ia64 register backing store.
9599
9600 * continuations.c: support ia64 register backing store.
9601 (continuation_mark): mark ia64 register backing store.
9602 (continuation_free): free ia64 register backing store.
9603 (scm_make_continuation): capture ia64 register backing store.
9604 (copy_stack_and_call): copy ia64 register backing store.
9605
ee083ac2
DH
96062001-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
9607
9608 * hashtab.c (scm_hash_fn_create_handle_x): The result of assoc_fn
9609 is known to be #f if no entry is found. Thus, use !SCM_FALSEP
9610 instead of SCM_NIMP to test for that case.
9611
9612 * strings.h (SCM_SET_STRING_LENGTH): Cast the length to
9613 scm_t_bits instead of long.
9614
71dcdbf9
MV
96152001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
9616
9617 * tags.h (SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
9618 SCM_T_SIGNED_BITS_MIN): New.
9619 * numbers.h (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM):
9620 Use them to make these macros computable by the preprocessor.
9621
9622 * num2integral.i.c (INTEGRAL2NUM): Let the preprocessor test
9623 whether the integral type fits in a fixnum, not the compiler.
9624 This removes a spurious compiler warning. Also, honor the
9625 NO_PREPRO_MAGIC flag to suppress any preprocessor tests. This is
9626 needed for `long long's.
9627
9628 * numbers.c: Define NO_PREPRO_MAGOC when including
9629 num2integral.c.i for `long long' and `signed long long'.
9630
152812c0
MD
96312001-10-06 Mikael Djurfeldt <mdj@linnaeus>
9632
9633 These changes fixes a race condition in the Guile coop - pthread
9634 compatibility code.
d6b8cf11 9635
152812c0
MD
9636 * coop.c (mother_awake_p): New variable.
9637 (coop_create): Set mother_awake_p before creating or signalling
9638 mother; wait until mother is going to sleep before returning.
9639 (mother): Reset mother_awake_p before going to sleep.
9640
11d49f54
DH
96412001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
9642
9643 * options.c (protected_objects, scm_init_options): The content of
9644 protected_objects is now protected from garbage collection using
9645 scm_gc_register_root instead of scm_permanent_object.
9646
9647 (get_option_setting): New static function that computes an option
9648 setting as it was formerly done in the function scm_options.
9649
9650 (get_documented_option_setting): New static function that
9651 returns option documentation as it was formerly done in the
9652 function scm_options. Note that documentation C strings are no
9653 longer precomputed into SCM objects. Instead, they are converted
9654 into SCM strings every time get_documented_option_setting is
9655 called.
9656
9657 (change_option_setting): New static functions that modifies the
9658 option setting as it was formerly done in the function
9659 scm_options. The function is now exception safe, i. e. won't
9660 cause a memory leak when interrupted. Further, only non-immediate
9661 option values are added to the protection list.
9662
9663 (scm_options): This function now has only the purpose to dispatch
9664 to to get_option_setting, get_documented_option_setting or
9665 change_option_setting, depending on the arguments given to
9666 scm_options.
9667
9668 (scm_init_opts): Don't convert documentation C strings into SCM
9669 strings. Further, don't protect any object values: They _must_
9670 be immediate values, otherwise there is no guarantee that they
9671 have not been collected before anyway.
9672
9673 * options.[ch] (scm_t_option): Made type unsigned, name into a
9674 constant char* and val into a scm_t_bits type.
9675
9676 (scm_options, scm_init_opts): The number of options is guaranteed
9677 to be larger or equal to zero. Thus, the type is changed to
9678 unsigned.
9679
3dbacabc
DH
96802001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
9681
9682 * num2integral.i.c (NUM2INTEGRAL): Eliminated some warnings about
9683 testing an unsigned value for being >= 0.
9684
14282d0f
DH
96852001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
9686
9687 * numbers.h: Removed old comment about using SCM_CAR to access
9688 non-pair cells.
9689
9690 (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM): Make sure
9691 the return value is signed. Thanks to Brian Crowder for the bug
9692 report.
9693
9694 (SCM_SRS): Avoid unnecessary casting and don't unpack input
9695 values. With this patch, SCM_SRS can be safely used for other
9696 types than scm_t_signed_bits. However, it should still better be
9697 an internal macro and thus be renamed to SCM_I_SRS.
9698
9699 (SCM_MAKINUM, SCM_INUM): Use proper casting.
9700
2dbec7b5
GH
97012001-10-03 Gary Houston <ghouston@arglist.com>
9702
9703 * continuations.h, unif.h: in the descriptions of the bit patterns
9704 of the heap cells, make bit 0 the least significant.
9705
cf4ee841
TTN
97062001-09-25 Thien-Thi Nguyen <ttn@glug.org>
9707
9708 * chars.h (SCM_MAKE_CHAR): Use `scm_t_bits' instead of `intptr_t'.
9709 Thanks to Golubev I. N.
9710
4a151b3d
GH
97112001-09-25 Gary Houston <ghouston@arglist.com>
9712
9713 * ports.c (scm_drain_input): extended the docstring. thanks to
9714 Alex Schroeder and Thien-Thi Nguyen.
9715
581ded70
MD
97162001-09-23 Mikael Djurfeldt <mdj@linnaeus>
9717
9718 * validate.h (SCM_NUM2FLOAT, SCM_NUM2DOUBLE,
9719 SCM_VALIDATE_FLOAT_COPY, SCM_VALIDATE_DOUBLE_COPY): New
9720 macros. (The NUM names might soon change.)
9721
9722 * numbers.h: Added missing declarations.
9723
5437598b
MD
97242001-09-22 Mikael Djurfeldt <mdj@linnaeus>
9725
9726 * Makefile.am: Distribute num2float.i.c.
9727
9728 * num2float.i.c: New file, multiply included by numbers.c, used
9729 to "templatize" the float <-> num conversion routines.
9730
9731 * numbers.c: New functions: scm_num2float, scm_float2num,
9732 scm_num2double, scm_double2num.
9733
0b073f0f
RB
97342001-09-21 Rob Browning <rlb@defaultvalue.org>
9735
9736 * .cvsignore: really add version.h
9737
9738 * strings.h (SCM_SET_STRING_LENGTH): coerce "l" to a long.
9739 Otherwise it fails on the alpha. However, we might rather choose
9740 this size conditionally.
9741
9742 * numbers.c (scm_gcd): change "k" to a long from an int.
9743 Otherwise it fails on the alpha. However, we might rather choose
9744 this size conditionally.
9745
9746 * error.c (scm_wta): coerce char* to intptr_t before int
9747 assignment.
9748
9749 * debug.c (debugobj_print): coerce scm_intprint arg 1 to long, not
9750 int.
9751
9752 * chars.h (SCM_MAKE_CHAR): coerce value to intptr_t.
9753
2830fd91
MD
97542001-09-20 Mikael Djurfeldt <mdj@linnaeus>
9755
9756 * numbers.c (scm_integer_expt): Accept inexact integer in second
9757 argument. (Thanks to Bill Schottstaedt.)
9758
c13f0a90
RB
97592001-09-20 Rob Browning <rlb@defaultvalue.org>
9760
9761 * .cvsignore: add version.h
9762
9763 * versiondat.h.in: removed (obsolete).
9764
9765 * version.h.in: renamed from version.h.
9766 (SCM_GUILE_MAJOR_VERSION): new public macro.
9767 (SCM_GUILE_MINOR_VERSION): new public macro.
9768 (SCM_GUILE_MICRO_VERSION): new public macro.
9769
9770 * version.h: renamed to version.h.in.
9771
9772 * version.c
9773 (scm_major_version): support integer *_VERSION macros.
9774 (scm_minor_version): support integer *_VERSION macros.
9775 (scm_micro_version): support integer *_VERSION macros.
9776 (scm_version): support integer *_VERSION macros.
9777
147c18a0
MD
97782001-09-20 Mikael Djurfeldt <mdj@linnaeus>
9779
9780 * error.c, error.h: Made error keys globally accessible.
9781 Applications might want to test for these or use them in a direct
9782 call to scm_error.
9783
9784 * num2integral.i.c (NUM2INTEGRAL): Report an error when these
9785 routines are passed an inexact. This change in behavior is
9786 motivated by concordance with R5RS: It is more common that a
9787 primitive doesn't want to accept an inexact for an exact.
9788
662c5539
DH
97892001-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
9790
9791 The following patch partially undoes my patch from 2001-06-30,
9792 where I added the function scm_gc_mark_cell_conservatively. The
9793 function is buggy, since it breaks guile during conservative
9794 marking if a pointer on the stack points directly into the list of
9795 free cells on the heap: With conservative cell marking this will
9796 cause the whole free list to be scanned and marked - boom!
9797
9798 * gc.c (allocated_mark, MARK, heap_segment,
9799 scm_gc_mark_cell_conservatively, scm_init_storage), gc.h
cf4ee841 9800 (scm_gc_mark_cell_conservatively): Remove function
662c5539
DH
9801 scm_gc_mark_cell_conservatively and update the corresponding
9802 comments and uses accordingly. Thanks to Christopher Cramer for
9803 the patch. (Minor corrections by me.)
9804
6c1b7628
GH
98052001-09-15 Gary Houston <ghouston@arglist.com>
9806
9807 * root.h (scm_root_state): removed the continuation_stack and
9808 continuation_stack_ptr members, which have no apparent purpose.
9809 (scm_continuation_stack, scm_continuation_stack_ptr): #defines
9810 removed.
662c5539 9811
6c1b7628
GH
9812 * root.c (root_mark), init.c (restart_stack, start_stack), gc
9813 (scm_igc): remove all references to contination_stack and
9814 continuation_stack_ptr, avoiding allocation of a vector and
9815 useless processing during gc.
9816
455c0ac8
DH
98172001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9818
9819 * guardians.c (tconc_t, t_tconc): Renamed tconc_t to t_tconc.
9820
9821 (TCONC_IN): Make sure that the cell word 0 is initialized last.
9822
9823 (guardians_t, t_guardians): Renamed guardians_t to t_guardians.
9824
9825 (GUARDIAN, GUARDIAN_DATA): Renamed GUARDIAN to GUARDIAN_DATA.
9826
9827 (guardian_apply, scm_get_one_zombie, scm_make_guardian,
9828 mark_and_zombify): Prefer !SCM_<foo> over SCM_N<foo>.
9829
22ba637b
DH
98302001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9831
9832 * guardians.c (mark_dependencies_in_tconc,
9833 whine_about_self_centered_zombies, scm_init_guardians): Register
9834 the static global variable `self_centered_zombies' via
9835 scm_gc_register_root, to make some cdr-ing unnecessary.
9836
c3c4d801
DH
98372001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9838
9839 * backtrace.c (display_backtrace_file,
9840 display_backtrace_file_and_line): Use SCM_EQ_P when comparing SCM
9841 values, use SCM_FALSEP when comparing SCM values against #f.
9842 Thanks to Rob Browning for the bug report.
9843
b00418df
DH
98442001-09-12 Martin Baulig <martin@home-of-linux.org>
9845
9846 * strings.[ch] (scm_str2string): New function.
9847
a0d34a0b
MV
98482001-09-06 Marius Vollmer <mvo@zagadka.ping.de>
9849
9850 * gc.c (scm_done_free): Always subtract size from scm_mallocated
9851 when computing nm, even if it's negative.
9852 (scm_must_malloc): Abort on overflow of scm_mtrigger.
9853 (scm_must_realloc): Likewise.
9854
b10586f0
ML
98552001-09-01 Michael Livshin <mlivshin@bigfoot.com>
9856
9857 * numbers.c (scm_sys_check_number_conversions): new function,
9858 defined if Guile is compiled in debugging mode. currently checks
9859 `scm_num2ulong', should check much much more.
9860
9861 * num2integral.i.c (NUM2INTEGRAL): when converting a bignum to
9862 unsigned, ensure that it's positive. thanks to Martin Baulig!
cf4ee841 9863
8c494e99
DH
98642001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
9865
9866 * __scm.h: Added new section about compile time selectable
9867 features.
9868
9869 (long_long, ulong_long, scm_sizet, SCM_WNA, SCM_OUTOFRANGE,
9870 SCM_NALLOC, SCM_HUP_SIGNAL, SCM_INT_SIGNAL, SCM_FPE_SIGNAL,
9871 SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL, SCM_GC_SIGNAL,
9872 SCM_TICK_SIGNAL, SCM_SIG_ORD, SCM_ORD_SIG, SCM_NUM_SIGS):
9873 Removed.
9874
9875 * deprecation.c (scm_include_deprecated_features): Simplified.
9876
9877 * eval.c (EVALCAR, unmemocopy), eval.h (SCM_XEVALCAR): Use
9a5fa6e9 9878 `SCM_IMP' instead of `!SCM_CELLP´.
8c494e99
DH
9879
9880 * eval.c (unmemocopy): Eliminate redundant SCM_CELLP tests.
9881 Extract side-effecting operations from macros.
9882
9883 (scm_init_eval): Don't initialize *top-level-lookup-closure*,
9884 scm_top_level_lookup_closure_var and scm_system_transformer.
9885
9886 * gc.c (CELL_P): New local definition to replace SCM_CELLP.
9887
9888 (heap_segment): Use CELL_P instead of SCM_CELLP.
9889
9890 * init.c (start_stack): Don't initialize
9891 scm_top_level_lookup_closure_var and scm_system_transformer.
9892
9893 * modules.c (scm_set_current_module): Don't access
9894 scm_top_level_lookup_closure_var and scm_system_transformer.
9895
9896 (scm_sym2var): Don't call scm_variable_set_name_hint.
9897
9898 (scm_post_boot_init_modules): Removed deprecated initializations.
9899
9900 * print.c (scm_ipruk): Don't access cell contents of non cells.
9901
9902 * strings.c (scm_string_set_x): All strings are writable.
9903
9904 * strings.h (SCM_STRINGP): Use SCM_TYP7 to determine the string
9905 type. There is only one string type now.
9906
9907 (SCM_STRING_COERCE_0TERMINATION_X): Deprecated.
9908
9909 * tags.h: Remove comments about two different string types.
9910
9911 (SCM_CELLP, SCM_NCELLP): Deprecated.
9912
9913 * variable.c (make_variable): Remove code variant for vcells.
9914
9915 * variable.h (SCM_VARIABLE_REF, SCM_VARIABLE_SET,
9916 SCM_VARIABLE_LOC): Remove code variant for vcells.
9917
9918 * __scm.h, deprecation.[ch]: Renamed SCM_DEBUG_DEPRECATED to
9919 SCM_ENABLE_DEPRECATED with the logic reversed.
9920
9921 * dynl.c (moddata, registered_mods), dynl.[ch]
9922 (scm_register_module_xxx, scm_registered_modules,
9923 scm_clear_registered_modules), error.[ch] (scm_wta), eval.c
9924 (*top-level-lookup-closure*), eval.[ch]
9925 (scm_top_level_lookup_closure_var, scm_system_transformer,
9926 scm_eval_3, scm_eval2), gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR,
9927 SCM_SETAND_CDR, SCM_SETOR_CDR, SCM_FREEP, SCM_NFREEP,
9928 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
9929 SCM_GCCDR), gc.[ch] (scm_remember, scm_protect_object,
9930 scm_unprotect_object), modules.c (root_module_lookup_closure,
9931 scm_sym_app, scm_sym_modules, module_prefix, make_modules_in_var,
9932 beautify_user_module_x_var, try_module_autoload_var,
9933 scm_module_full_name), modules.[ch] (scm_the_root_module,
9934 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
cf4ee841 9935 ports.h (scm_port, scm_ptob_descriptor, scm_port_rw_active),
8c494e99
DH
9936 ports.[ch] (scm_close_all_ports_except), random.h (scm_rstate,
9937 scm_rng, scm_i_rstate), strings.h (SCM_SLOPPY_STRINGP,
9938 SCM_RWSTRINGP, SCM_STRING_UCHARS, SCM_STRING_CHARS), strings.[ch]
9939 (scm_read_only_string_p, scm_makstr, scm_makfromstr,
9940 scm_make_shared_substring), tags.h (scm_tc7_substring,
9941 SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP, scm_tc7_ssymbol,
9942 scm_tc7_msymbol, scm_tcs_symbols), variable.c (sym_huh),
9943 variable.[ch] (scm_variable_set_name_hint, scm_builtin_variable),
9944 variable.h (SCM_VARVCELL, SCM_UDVARIABLEP, SCM_DEFVARIABLEP):
9945 Removed.
9946
9947 * dynl.c (scm_dynamic_link, scm_dynamic_func), error.c
9948 (scm_error_scm), filesys.c (scm_chown, scm_chmod, scm_open_fdes,
9949 scm_stat, scm_link, scm_rename, scm_delete_file, scm_mkdir,
9950 scm_rmdir, scm_opendir, scm_chdir, scm_symlink, scm_readlink,
9951 scm_lstat, scm_copy_file), fports.c (scm_open_file), ioext.c
9952 (scm_fdopen), net_db.c (scm_gethost, scm_getnet, scm_getproto,
9953 scm_getserv), ports.c (scm_truncate_file, scm_sys_make_void_port),
9954 posix.c (scm_getpwuid, scm_getgrgid, scm_execl, scm_execlp,
9955 scm_execle, scm_mkstemp, scm_utime, scm_access, scm_setlocale,
9956 scm_mknod, scm_crypt, scm_chroot, scm_getpass, scm_sethostname),
9957 regex-posix.c (scm_make_regexp, scm_regexp_exec), simpos.c
9958 (scm_system, scm_getenv), socket.c (scm_inet_aton), stime.c
9959 (setzone, scm_strftime, scm_strptime), vports.c
9960 (scm_make_soft_port): Remove calls to
9961 SCM_STRING_COERCE_0TERMINATION_X. Since the substring type is
9962 gone, all strings are 0-terminated anyway.
9963
9964 * dynl.h (LIBGUILE_DYNL_H, SCM_DYNL_H), random.h (RANDOMH,
9965 SCM_RANDOM_H): Renamed the macros that are defined to inhibit
9966 double inclusion of the same headers to the SCM_<filename>_H
9967 format.
9968
9969 * eval.c (SCM_CEVAL), gc.c (MARK, scm_gc_sweep), gh_data.c
9970 (gh_scm2chars), hash.c (scm_hasher), objects.c (scm_class_of),
9971 print.c (scm_iprin1): The type scm_tc7_substring does not exist
9972 any more.
9973
9974 * ports.h (SCM_PORTP, SCM_OPPORTP, SCM_OPINPORTP, SCM_OPOUTPORTP,
9975 SCM_INPUT_PORT_P, SCM_OUTPUT_PORT_P, SCM_OPENP), tags.h
9976 (SCM_TYP16_PREDICATE), variable.h (SCM_VARIABLEP): Prefer
9977 !SCM_<foo> over SCM_N<foo>.
9978
dee01b01
DH
99792001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
9980
9981 * Makefile.am: Remove references to symbols-deprecated.c.
9982
9983 * symbols.c (scm_init_symbols): Don't initialize deprecated
9984 symbol functions.
9985
9986 * symbols-deprecated.c: Removed.
9987
9988 * fluids.[ch] (scm_internal_with_fluids), gsubr.[ch]
9989 (scm_make_gsubr, scm_make_gsubr_with_generic), hooks.[ch]
9990 (scm_create_hook), list.c (list*), list.h (SCM_LIST[0-9],
9991 scm_listify), list.[ch] (scm_sloppy_memq, scm_sloppy_memv,
9992 scm_sloppy_member), load.c (scm_end_of_file_key), load.[ch]
9993 (scm_read_and_eval_x), numbers.[ch] (scm_mkbig, scm_big2inum,
9994 scm_adjbig, scm_normbig, scm_copybig, scm_2ulong2big, scm_dbl2big,
9995 scm_big2dbl), numbers.h (SCM_FIXNUM_BIT), procs.h
9996 (scm_subr_entry, SCM_SUBR_DOC), procs.[ch] (scm_make_subr_opt,
9997 scm_make_subr, scm_make_subr_with_generic), root.c (setjmp_type,
9998 setjmp_type), root.[ch] (scm_call_catching_errors), smob.[ch]
9999 (scm_make_smob_type_mfpe, scm_set_smob_mfpe), strports.[ch]
10000 (scm_strprint_obj, scm_read_0str, scm_eval_0str), symbols.h
10001 (SCM_CHARS, SCM_UCHARS, SCM_SETCHARS, SCM_SLOPPY_SUBSTRP,
10002 SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_LENGTH_MAX, SCM_LENGTH,
10003 SCM_SETLENGTH, SCM_ROSTRINGP, SCM_ROLENGTH, SCM_ROCHARS,
10004 SCM_ROUCHARS, SCM_SUBSTRP, SCM_COERCE_SUBSTR, scm_strhash,
10005 scm_sym2vcell, scm_sym2ovcell_soft, scm_sym2ovcell,
10006 scm_intern_obarray_soft, scm_intern_obarray, scm_intern,
10007 scm_intern0, scm_sysintern, scm_sysintern0,
10008 scm_sysintern0_no_module_lookup, scm_symbol_value0,
10009 scm_string_to_obarray_symbol, scm_intern_symbol,
10010 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
10011 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp,
10012 scm_init_symbols_deprecated), vectors.c (s_vector_set_length_x),
10013 vectors.[ch] (scm_vector_set_length_x): Removed.
10014
10015 * fluids.h (FLUIDSH, SCM_FLUIDS_H), gsubr.c (GSUBRH, SCM_GSUBR_H),
10016 list.h (LISTH, SCM_LIST_H), load.h (LOADH, SCM_LOAD_H), root.h
10017 (ROOTH, SCM_ROOT_H), strports.h (STRPORTSH, SCM_STRPORTS_H):
10018 Renamed the macros that are defined to inhibit double inclusion of
10019 the same headers to the SCM_<filename>_H format.
10020
10021 * procs.h (SCM_CLOSUREP, SCM_PROCEDURE_WITH_SETTER_P), symbols.h
10022 (SCM_SYMBOLP), vectors.h (SCM_VECTORP): Prefer !SCM_<foo> over
10023 SCM_N<foo>.
10024
b29058ff
DH
100252001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10026
10027 * continuations.h (scm_contregs), debug.h (scm_debug_info,
10028 scm_debug_frame, SCM_DSIDEVAL), filesys.h (SCM_OPDIRP), fports.h
10029 (scm_fport), options.h (scm_option), snarf.h (SCM_CONST_LONG,
10030 SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
10031 SCM_GLOBAL_VCELL_INIT), srcprop.h (scm_srcprops,
10032 scm_srcprops_chunk), stacks.h (scm_info_frame, scm_stack), unif.h
10033 (scm_array, scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_HUGE_LENGTH),
10034 validate.h (SCM_FUNC_NAME, SCM_WTA, RETURN_SCM_WTA,
10035 SCM_VALIDATE_NUMBER_COPY, SCM_VALIDATE_NUMBER_DEF_COPY,
10036 SCM_VALIDATE_STRINGORSUBSTR, SCM_VALIDATE_ROSTRING,
10037 SCM_VALIDATE_ROSTRING_COPY, SCM_VALIDATE_NULLORROSTRING_COPY,
10038 SCM_VALIDATE_RWSTRING, SCM_VALIDATE_OPDIR): Removed.
10039
10040 * continuations.h (CONTINUATIONSH, SCM_CONTINUATIONS_H), filesys.h
10041 (FILESYSH, SCM_FILESYS_H), fports.h (FPORTSH, SCM_FPORTS_H),
10042 options.h (OPTIONSH, SCM_OPTIONS_H), regex-posix.h (REGEXPOSIXH,
10043 SCM_REGEX_POSIX_H), snarf.h (LIBGUILE_SNARF_H, SCM_SNARF_H),
10044 srcprop.h (SCM_SOURCE_PROPERTIES_H, SCM_SRCPROP_H), unif.h
10045 (SCM_UNIFORM_VECTORS_H, SCM_UNIF_H), validate.h (SCM_VALIDATE_H__,
10046 SCM_VALIDATE_H): Renamed the macros that are defined to inhibit
10047 double inclusion of the same headers to the SCM_<filename>_H
10048 format.
10049
10050 * debug.h (SCM_RESET_DEBUG_MODE), regex-posix.h (SCM_RGXP),
10051 srcprop.h (SRCBRKP, PROCTRACEP), struct.h (SCM_STRUCTP),
10052 validate.h (SCM_VALIDATE_THUNK, SCM_VALIDATE_ARRAY,
10053 SCM_VALIDATE_VECTOR_OR_DVECTOR, SCM_VALIDATE_VTABLE): Prefer
10054 !SCM_<foo> over SCM_N<foo>.
10055
0527e687
DH
100562001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10057
10058 * _scm.h (_SCMH, SCM__SCM_H), alist.h (ALISTH, SCM_ALIST_H),
10059 arbiters.h (ARBITERSH, SCM_ARBITERS_H), backtrace.h (BACKTRACEH,
10060 SCM_BACKTRACE_H), boolean.h (BOOLEANH, SCM_BOOLEAN_H), chars.h
10061 (SCM_CHARSH, SCM_CHARS_H), coop-defs.h (COOP_DEFSH,
10062 SCM_COOP_DEFS_H), coop-threads.h (COOP_THREADSH,
10063 SCM_COOP_THREADS_H), debug-malloc.h (DEBUGMALLOCH,
10064 SCM_DEBUG_MALLOC_H), dynwind.h (DYNWINDH, SCM_DYNWIND_H),
10065 environments.h (ENVIRONMENTS_H, SCM_ENVIRONMENTS_H), eq.h (EQH,
10066 SCM_EQ_H), evalext.h (EVALEXTH, SCM_EVALEXT_H), extensions.h
10067 (LIBGUILE_EXTENSIONS_H, SCM_EXTENSIONS_H), feature.h (FEATUREH,
10068 SCM_FEATURE_H), gdbint.h (GDBINTH, SCM_GDBINT_H), guardians.h
10069 (SCM_GUARDIANH, SCM_GUARDIANS_H), hash.h (HASHH, SCM_HASH_H),
10070 hashtab.h (HASHTABH, SCM_HASHTAB_H), init.h (INITH, SCM_INIT_H),
10071 ioext.h (IOEXTH, SCM_IOEXT_H), iselect.h (ISELECTH,
10072 SCM_ISELECT_H), keywords.h (KEYWORDSH, SCM_KEYWORDS_H), lang.h
10073 (LANGH, SCM_LANG_H), mallocs.h (MALLOCSH, SCM_MALLOCS_H), net_db.h
10074 (SCM_NETDBH, SCM_NET_DB_H), objprop.h (OBJPROPH, SCM_OBJPROP_H),
10075 posix.h (POSIXH, SCM_POSIX_H), procprop.h (PROCPROPH,
10076 SCM_PROCPROP_H), properties.h (PROPERTIES_H, SCM_PROPERTIES_H),
10077 ramap.h (RAMAPH, SCM_RAMAP_H), rdelim.h (SCM_RDELIM,
10078 SCM_RDELIM_H), read.h (READH, SCM_READ_H), rw.h (SCM_RW,
10079 SCM_RW_H), scmsigs.h (SCMSIGSH, SCM_SCMSIGS_H), script.h (SCRIPTH,
10080 SCM_SCRIPT_H), simpos.h (SIMPOSH, SCM_SIMPOS_H), socket.h
10081 (SCM_SOCKETH, SCM_SOCKET_H), sort.h (SORTH, SCM_SORT_H),
10082 stackchk.h (STACKCHKH, SCM_STACKCHK_H), stime.h (STIMEH,
10083 SCM_STIME_H), strop.h (STROPH, SCM_STROP_H), strorder.h
10084 (STRORDERH, SCM_STRORDER_H), threads.h (THREADSH, SCM_THREADS_H),
10085 throw.h (THROWH, SCM_THROW_H), version.h (VERSIONH,
10086 SCM_VERSION_H), vports.h (VPORTSH, SCM_VPORTS_H): Renamed
10087 the macros that are defined to inhibit double inclusion of the
10088 same headers to the SCM_<filename>_H format.
10089
fada26b2
MV
100902001-08-27 Marius Vollmer <mvo@zagadka.ping.de>
10091
10092 * ports.c, ports.h, fprots.c, gc.c, ioext.c: Replaced
10093 "scm_t_portable" with "scm_port_table" which was an artifact from
10094 the great "scm_*_t -> scm_t_" renaming.
10095
e4d1c1ea
TTN
100962001-08-25 Thien-Thi Nguyen <ttn@revel.glug.org>
10097
10098 * gc_os_dep.c (GC_noop1): Move before `GC_find_limit' where it is
10099 used; nfc. Thanks to Bill Schottstaedt.
10100
10101 * validate.h (SCM_VALIDATE_USHORT_COPY, SCM_VALIDATE_SHORT_COPY,
10102 SCM_VALIDATE_UINT_COPY, SCM_VALIDATE_INT_COPY): New macros.
10103 Thanks to Chris Cramer.
10104
b573e744
MV
101052001-08-25 Marius Vollmer <mvo@zagadka.ping.de>
10106
10107 * Makefile.am (AUTOMAKE_OPTIONS): Change "foreign" to "gnu".
10108
10109 * eval.c (scm_m_atbind): Redesigned to behvae like `let', but with
10110 dynamic scope.
10111 * dynwind.h (scm_swap_bindings): Declare.
10112 * dynwind.c (scm_swap_bindings): Make non-static.
10113
8a3e715b
ML
101142001-08-25 Michael Livshin <mlivshin@bigfoot.com>
10115
10116 * gc.c (scm_gc_sweep): now can sweep unreachable variables (by
10117 doing exactly nothing about them). thanks Neil!
10118
cf504ee0
NJ
101192001-08-18 Neil Jerram <neil@ossau.uklinux.net>
10120
10121 * __scm.h (SCM_ENABLE_VCELLS): Fix spelling mistake in comment.
ec2667f0 10122
43b83b54
TTN
101232001-08-17 Thien-Thi Nguyen <ttn@revel.glug.org>
10124
10125 * gc.c: Fix omission bug: Add `heap_segment' forward decl
10126 (proto) in the case when either `GUILE_DEBUG' or
10127 `GUILE_DEBUG_FREELIST' preprocessor symbols are defined.
10128
10129 (map_free_list): Fix typo: Ref `f' correctly.
10130
10131 Thanks to Chris Cramer.
10132
ab4cd34b
RB
101332001-08-15 Rob Browning <rlb@defaultvalue.org>
10134
10135 * Makefile.am (libguile_la_LDFLAGS): use libtool interface version
10136 variables.
10137 (libpath.h): change libguileversion to libguileinterface.
10138
b754e3d1
MV
101392001-08-07 Marius Vollmer <mvo@zagadka.ping.de>
10140
10141 * Makefile.am (EXTRA_DIST): Distribute ChangeLog-1996-1999 and
10142 ChangeLog-2000. Thanks to Daniel Skarda!
10143
8b1d12c7
ML
101442001-08-07 Michael Livshin <mlivshin@bigfoot.com>
10145
10146 * guile-snarf-docs-texi.in: don't call the tokenizer here, we now
10147 do it from the Makefile.
10148
10149 * Makefile.am: rearrange the snarfing slightly, so that .doc files
10150 are of a reasonable size.
10151
baffb19f
NJ
101522001-08-02 Neil Jerram <neil@ossau.uklinux.net>
10153
10154 * stacks.c (scm_make_stack): Improve docstring by explaining use
10155 of cutting args.
10156
c1151355
MV
101572001-08-01 Marius Vollmer <mvo@zagadka.ping.de>
10158
10159 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
10160 scm_char_whitespace_p, scm_char_upper_case_p,
10161 scm_char_lower_case_p, scm_char_is_both_p): Do not require
10162 characters to fulfill isascii in addition to the primary
10163 predicate.
10164
3c9a524f
DH
101652001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10166
10167 * numbers.c (DIGITS, scm_small_istr2int, scm_istr2int,
10168 scm_istr2flo, scm_istring2number): Removed.
10169
10170 (iflo2str, scm_real_p, scm_integer_p): Use SCM_<foo> instead of
10171 SCM_SLOPPY_<foo>.
10172
10173 (t_exactness, t_radix, DIGIT2UINT, XDIGIT2UINT, mem2uinteger,
10174 mem2decimal_from_point, mem2ureal, mem2complex, scm_i_mem2number):
10175 Added.
10176
10177 (scm_string_to_number): Use new number parser.
10178
10179 (scm_exact_to_inexact): Replace dummy by a GPROC, which also
10180 handles complex numbers.
10181
10182 * numbers.h (NUMBERSH, SCM_NUMBERS_H): Rename <foo>H to
10183 SCM_<foo>_H.
10184
10185 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Prefer !SCM_<pred> over
10186 SCM_N<pred>.
10187
10188 (scm_istr2int, scm_istr2flo, scm_istring2number): Removed.
10189
10190 (scm_i_mem2number): Added.
10191
10192 (scm_exact_to_inexact): Changed signature.
10193
10194 * read.c (scm_lreadr): Perform the shortcut test for '+ and '-
10195 here instead of within scm_i_mem2number. Call scm_i_mem2number
10196 instead of scm_istr2int and scm_istring2number.
10197
01f11e02
DH
101982001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10199
10200 * eval.c (scm_lookupcar, scm_m_body, scm_m_lambda, unmemocopy,
10201 scm_unmemocopy, scm_badargsp, scm_eval_body, CHECK_EQVISH,
10202 SCM_CEVAL, scm_nconc2last, SCM_APPLY, scm_copy_tree): Prefer
10203 !SCM_<pred> over SCM_N<pred>.
10204
10205 (scm_eval_body): Remove side effecting code from macro call.
10206
10207 (SCM_CEVAL, SCM_APPLY): Remove goto statement and redundant
10208 SCM_NIMP test.
10209
6cf69537
DH
102102001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10211
10212 * pairs.h (SCM_VALIDATE_PAIR): Use SCM_CONSP, not SCM_ECONSP.
10213
54866b6c
MV
102142001-07-29 Marius Vollmer <mvo@zagadka.ping.de>
10215
10216 Removed vcell slot from structs.
43b83b54 10217
54866b6c
MV
10218 * struct.h (scm_vtable_index_vcell): Removed. Renumbered
10219 subsequent indices.
10220
10221 * struct.c (scm_struct_vtable_p): Do not check vcell slot for
10222 zero. Use scm_vtable_index_layout instead of "0" when accessing
10223 said slot.
10224 (scm_init_struct): Remove vcell slot layout code from
10225 required_vtable_fields.
10226
10227 * objects.h (scm_si_redefined, scm_si_hashsets): Renumbered.
10228
10229 * goops.c (build_class_class_slots): Removed vcell slot
10230 definition.
10231
10232 * goops.h: Renumbered slot indices. (SCM_CLASS_CLASS_LAYOUT):
10233 Removed vcell slot layout code.
10234 (scm_si_vcell): Removed.
10235
5b54c4da
MV
102362001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
10237
a0f5718e 10238 "Glocs" have been removed.
43b83b54 10239
a0f5718e
MV
10240 * tags.h: Update tag system docs.
10241 (scm_tc3_cons_gloc): Renamed to scm_tc3_struct. Changed all uses.
10242 (scm_tcs_cons_gloc): Renamed to scm_tcs_struct. Changed all uses.
10243 (SCM_ECONSP, SCM_NECONSP): Removed. Changed all uses to SCM_CONSP
10244 or SCM_NCONSP, respectively.
10245
10246 * struct.c, struct.h, srcprop.c, procs.c, procprop.c, print.c,
10247 objects.c. modules.c, goops.c, eval.c, debug.c: Changed all uses
10248 of scm_tc3_cond_gloc and scm_tcs_cons_gloc. See above.
10249
10250 * print.c (scm_iprin1): Remove printing of glocs. Do not try to
10251 tell glocs from structs.
43b83b54 10252
a0f5718e
MV
10253 * gc.c (scm_gc_mark, scm_gc_sweep): Remove handling of glocs.
10254
10255 * eval.c (scm_m_atbind): Make a list of variables, not glocs.
10256 (scm_ceval, scm_deval): For SCM_IM_BIND, fiddle with variables
10257 instead of with glocs.
10258 (EVALCAR): Do not test for glocs.
10259 (scm_lookupcar, scm_lookupcar1): Do not handle glocs in race
10260 condition.
10261 (scm_unmemocar): Do not handle glocs.
10262 (scm_m_atfop): Memoize as a variable, not as a gloc.
10263 (scm_eval_args, scm_deval_args): Do not handle glocs.
10264 (scm_ceval, scm_deval): Likewise.
43b83b54 10265
a0f5718e
MV
10266 * eval.h (SCM_XEVALCAR): Do not test for glocs.
10267 (SCM_GLOC_VAR, SCM_GLOC_VAL, SCM_GLOC_SET_VAL, SCM_GLOC_VAL_LOC):
10268 Removed.
10269
10270 * debug.h, debug.c (scm_make_gloc, scm_gloc_p): Removed.
10271
10272 * dynwind.c (scm_swap_bindings): Likewise.
10273 (scm_dowinds): Updated to recognize lists of variables instead of
10274 lists of glocs.
10275
10276 * __scm.h (SCM_CAUTIOS, SCM_RECKLESS): Update comments.
10277
43b83b54 10278
5b54c4da
MV
10279 * gc_os_dep.c (GC_noop1): Moved into the same #if/#endif context
10280 where it is needed.
43b83b54 10281
3c3db128
GH
102822001-07-25 Gary Houston <ghouston@arglist.com>
10283
10284 * numbers.c (scm_logand, scm_logior, scm_logxor): adjusted the
10285 docstrings to reflect the n-ary implementation.
10286
dd29a169
MV
102872001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
10288
10289 * eval.c (scm_ceval, scm_deval): Use "RETURN" macro when returning
10290 value of a variable, not the plain "return" statement.
10291
f5fe6c2f
MV
102922001-07-25 Marius Vollmer <mvo@zagadka.ping.de>
10293
10294 * eval.c: Allow variables in memoized code (in addition to glocs).
10295 (scm_lookupcar): Handle variables in lost races. Replace symbol
10296 with variable directly, do not make a gloc.
10297 (scm_unmemocar): Rewrite variables using a reverse lookup, just
10298 like glocs.
10299 (scm_ceval, scm_deval): Deal with variables in SCM_IM_SET and in
10300 the main switch.
10301
ee0c7345
MV
103022001-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
10303
6d9ad98a
MV
10304 * variable.c (scm_i_variable_print): Use "value" instead of
10305 "binding" since a binding is the mapping between symbols and
10306 variables, not between variables and their values.
10307
ee0c7345
MV
10308 * tags.h (scm_tc7_variable): New.
10309 * gc.c (scm_gc_mark): Handle scm_tc7_variable objects.
10310 * print.c (scm_iprin1): Likewise.
10311
10312 * variable.h (scm_tc16_variable): Removed.
10313 (SCM_VARIABLEP): Test for new tc7 code.
10314 (scm_i_variable_print): New.
10315 * variable.c (scm_tc16_variable): Removed.
10316 (variable_print): Renamed to scm_i_variable_print and made
10317 non-static.
10318 (variable_equal_p): Removed.
10319 (make_variable): Construct a tc7 object instead of a smob.
10320 (scm_init_variable): Do not register smob.
43b83b54 10321
f3805ebb
MV
103222001-07-22 Marius Vollmer <mvo@zagadka.ping.de>
10323
10324 * tags.h: Include inttypes.h when we have it.
10325
103262001-07-13 Marius Vollmer <mvo@zagadka.ping.de>
10327
10328 * tags.h (SCM_UNBOUND): Make it the 34th isym/iflag, the 33th slot
10329 is taken by the new SCM_IM_CALL_WITH_VALUES.
10330 * print.c (scm_isymnames): Update table accordingly.
43b83b54 10331
6a1677a3
GH
103322001-07-22 Gary Houston <ghouston@arglist.com>
10333
10334 * regex-posix.c (s_scm_regexp_exec): use scm_long2num not
10335 SCM_MAKINUM to convert regoff_t value to SCM.
10336
1bed8c28
GH
103372001-07-21 Gary Houston <ghouston@arglist.com>
10338
10339 * scmsigs.c: include sys/time.h for itimer stuff.
10340
e658215a
RB
103412001-07-19 Rob Browning <rlb@defaultvalue.org>
10342
10343 * gc_os_dep.c (GC_noop1): ifdef out (unused) to quiet warning.
10344
10345 * c-tokenize.lex: add option %nounput to quiet warning.
10346 Add prototype for yylex to quiet warning.
10347
10348 * scmconfig.h.in: add flags for setitimer and getitimer.
10349
10350 * scmsigs.h (scm_init_scmsigs): new prototype.
10351 (scm_init_scmsigs): new prototype.
10352
10353 * scmsigs.c (s_scm_setitimer): new function.
10354 (s_scm_setitimer): new function.
10355
58ade102
MG
103562001-07-18 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10357
10358 * alist.c, arbiters.c, async.h, backtrace.h, boolean.c, chars.c,
10359 chars.h, continuations.h, debug-malloc.h, dynl.c, feature.c,
10360 feature.h, filesys.h, fluids.h, fports.h, gc_os_dep.c,
10361 gdb_interface.h, gh_eval.c, gh_funcs.c, gh_io.c, gh_list.c,
10362 gh_predicates.c, gsubr.c, gsubr.h, guardians.h,
10363 guile-func-name-check.in, guile-snarf-docs-texi.in,
10364 guile-snarf-docs.in, guile-snarf.awk.in, guile-snarf.in,
10365 hashtab.h, iselect.h, keywords.h, lang.c, list.h, load.h,
10366 objprop.c, objprop.h, options.c, options.h, random.h,
10367 regex-posix.h, root.c, root.h, script.c, snarf.h, stackchk.c,
10368 strerror.c, strop.h, strports.h, threads.h, values.c, values.h,
10369 version.c, version.h: Updated copyright notice.
10370
6b80d352
DH
103712001-07-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
10372
10373 * goops.c (sym_layout, sym_vcell, sym_vtable, sym_print,
10374 sym_procedure, sym_setter, sym_redefined, sym_h0, sym_h1, sym_h2,
10375 sym_h3, sym_h4, sym_h5, sym_h6, sym_h7, sym_name,
10376 sym_direct_supers, sym_direct_slots, sym_direct_subclasses,
10377 sym_direct_methods, sym_cpl, sym_default_slot_definition_class,
10378 sym_slots, sym_getters_n_setters, sym_keyword_access, sym_nfields,
10379 sym_environment, scm_sym_change_class): New static variables to
10380 hold predefined symbols.
10381
10382 (build_class_class_slots): Build the list using scm_list_n
10383 instead of cons. Also, slots are already created as lists, thus
10384 making a call to maplist unnecessary.
10385
10386 (scm_class_name, scm_class_direct_supers, scm_class_direct_slots,
10387 scm_class_direct_subclasses, scm_class_direct_methods,
10388 scm_class_precedence_list, scm_class_slots, scm_class_environment,
10389 scm_method_procedure, create_standard_classes, purgatory): Use
10390 predefined symbols.
10391
10392 (build_slots_list, compute_getters_n_setters,
10393 scm_sys_initialize_object, scm_sys_inherit_magic_x,
10394 get_slot_value_using_name, set_slot_value_using_name,
10395 scm_sys_invalidate_method_cache_x, scm_generic_capability_p,
10396 scm_compute_applicable_methods, scm_sys_method_more_specific_p,
10397 make_struct_class): Prefer !SCM_<pred> over SCM_N<pred>.
10398
10399 (scm_sys_prep_layout_x): Minimize variable scopes.
10400
10401 (scm_sys_prep_layout_x, scm_sys_fast_slot_ref,
10402 scm_sys_fast_slot_set_x): Fix signedness.
10403
10404 (go_to_hell, go_to_heaven, purgatory, scm_change_object_class,
10405 lock_cache_mutex, unlock_cache_mutex, call_memoize_method,
10406 scm_memoize_method, scm_wrap_object): Use packing and unpacking
10407 when converting to and from SCM values.
10408
10409 (scm_enable_primitive_generic_x): Add rest argument checking.
10410
10411 (map, filter_cpl, maplist, scm_sys_initialize_object,
10412 scm_sys_prep_layout_x, slot_definition_using_name,
10413 scm_enable_primitive_generic_x, scm_compute_applicable_methods,
10414 call_memoize_method, scm_make, scm_make_class): Prefer explicit
10415 predicates over SCM_N?IMP tests.
10416
10417 (scm_sys_prep_layout_x): Fix typo in error message. Fix type
10418 checking.
10419
10420 (burnin, go_to_hell): Use SCM_STRUCT_DATA instead of the SCM_INST
10421 alias.
10422
63bcad19
DH
104232001-07-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
10424
10425 * fports.c (fport_print): Don't use SCM_C[AD]R for non pairs.
10426
10427 * num2integral.i.c (INTEGRAL2NUM, INTEGRAL2BIG): Fix signedness.
10428
10429 * symbols-deprecated.c (scm_gentemp): Simplify vector test.
10430
10431 * vectors.c (scm_vector_p): Eliminate redundant IMP test.
10432
4d6aae71
ML
104332001-07-12 Michael Livshin <mlivshin@bigfoot.com>
10434
10435 * strings.c (s_scm_string): fix arg position in assert.
10436
4b8ec619
GH
104372001-07-11 Gary Houston <ghouston@arglist.com>
10438
10439 * strports.c (st_write): use memcpy, not strncpy. thanks to
10440 Dale P. Smith.
10441
dbb640bd
TTN
104422001-07-09 Thien-Thi Nguyen <ttn@revel.glug.org>
10443
10444 * alist.c, alloca.c, arbiters.c, async.c, async.h, backtrace.c,
10445 boolean.c, chars.c, continuations.c, coop-defs.h, coop-threads.c,
10446 debug-malloc.h, debug.c, debug.h, dynl.c, dynwind.c, eq.c,
10447 error.c, eval.c, evalext.c, feature.c, feature.h, filesys.c,
10448 filesys.h, fluids.c, fluids.h, fports.c, fports.h, gc.c, gc.h,
10449 gdbint.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
10450 hooks.h, inet_aton.c, init.c, ioext.c, keywords.c, keywords.h,
10451 lang.c, list.c, load.c, macros.c, mallocs.c, memmove.c, modules.c,
10452 net_db.c, numbers.c, numbers.h, objects.c, objprop.c, options.c,
10453 pairs.c, pairs.h, ports.c, ports.h, posix.c, print.c, print.h,
10454 procprop.c, procs.c, procs.h, properties.c, putenv.c, ramap.c,
10455 random.c, random.h, read.c, regex-posix.c, regex-posix.h, root.c,
10456 root.h, scmsigs.c, script.c, simpos.c, smob.c, snarf.h, socket.c,
10457 sort.c, srcprop.c, srcprop.h, stackchk.c, stacks.c, stacks.h,
10458 stime.c, strerror.c, strings.c, strings.h, strop.c, strorder.c,
10459 strports.c, struct.c, struct.h, symbols-deprecated.c, symbols.c,
10460 symbols.h, tags.h, threads.c, threads.h, throw.c, unif.c, unif.h,
10461 variable.c, variable.h, vectors.c, vectors.h, version.c, vports.c,
10462 weaks.c, weaks.h: Remove "face-lift" comment.
10463
fd6c6321
RB
104642001-07-08 Rob Browning <rlb@defaultvalue.org>
10465
10466 * .cvsignore: add stamp-h.in.
10467
f91e4547
MG
104682001-07-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10469
10470 * hooks.c (scm_make_hook, scm_add_hook_x),
10471 (scm_remove_hook_x, scm_reset_hook_x, scm_run_hook): Added return
10472 value info to the docstrings.
10473
7beabedb
MG
104742001-07-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10475
10476 Some more compatibility patches for Windows.
dbb640bd 10477
7beabedb
MG
10478 * posix.c (getlogin): getlogin() implementation for Windows.
10479
10480 * backtrace.c, ioext.c: Include <stdio.h>.
10481
10482 * unif.c, script.c, rw.c, error.c: Include <io.h>, if it does
10483 exist.
10484
10485 * cpp_sig_symbols.in: Added SIGBREAK.
10486
0d0560d0
MV
104872001-07-01 Marius Vollmer <mvo@zagadka.ping.de>
10488
10489 * strports.c (scm_read_0str, scm_eval_0str): Call
10490 scm_c_read_string and scm_c_eval_string respectively, not
10491 themselves. Thanks to Dale P. Smith!
10492
9a97e362
DH
104932001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10494
10495 * unif.c (scm_array_set_x): The variable args does not
10496 necessarily have to be a list. Further, got rid of a redundant
10497 SCM_NIMP test.
10498
592996c9
DH
104992001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10500
10501 * list.c (SCM_I_CONS): Make sure the cell type is initialized
10502 last.
10503
10504 * gc.c (s_scm_map_free_list, scm_igc, scm_gc_sweep,
f91e4547 10505 init_heap_seg): Fixed signedness.
592996c9
DH
10506
10507 (init_heap_seg): Replaced strange for-loop with a while loop.
10508
10509 * weaks.h (WEAKSH, SCM_WEAKS_H): Rename <foo>H to SCM_<foo>_H.
10510
10511 (SCM_WVECTP): Prefer !SCM_<pred> over SCM_N<pred>.
10512
10513 The following patch adds conservative marking for the elements of
10514 free or allocated cells.
10515
10516 * gc.c (allocated_mark, heap_segment): New static functions.
10517
10518 (which_seg): Deleted, since the functionality is now provided by
10519 function heap_segment.
10520
10521 (map_free_list): Use heap_segment instead of which_seg.
10522
10523 (MARK): If cell debugging is disabled, mark free cells
10524 conservatively.
10525
10526 (scm_mark_locations, scm_cellp): Extracted the search for the
10527 heap segment of a SCM value into function heap_segment.
10528
10529 (scm_init_storage): Allocated cells must be marked
10530 conservatively.
10531
10532 * gc.[ch] (scm_gc_mark_cell_conservatively): New function.
10533
10534 The following patch changes the representation of weak vectors to
10535 double cells instead of using an extension of the vector's
10536 allocated memory.
10537
10538 * gc.c (MARK): Use SCM_SET_WVECT_GC_CHAIN instead of assigning to
10539 the result of SCM_WVECT_GC_CHAIN.
10540
10541 (scm_gc_sweep): Weak vectors don't have extra fields any more.
10542
10543 * weaks.c (allocate_weak_vector): New static function. It does
10544 not patch any previously created vector object during the
10545 construction of a weak vector, and thus doesn't need to switch
10546 off interrupts during vector creation.
10547
10548 (scm_make_weak_vector, scm_make_weak_key_hash_table,
10549 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
10550 Use allocate_weak_vector to provide the new weak vector object.
10551
10552 * weaks.h (SCM_WVECT_TYPE, SCM_SET_WVECT_TYPE,
10553 SCM_SET_WVECT_GC_CHAIN): New macros. The weak vector subtype is
10554 now stored in the double cell.
10555
10556 (SCM_IS_WHVEC, SCM_IS_WHVEC_V, SCM_IS_WHVEC_B, SCM_IS_WHVEC_ANY):
10557 Use SCM_WVECT_TYPE.
10558
10559 (SCM_WVECT_GC_CHAIN): The weak objects are now chained together
10560 using an entry of the double cell.
10561
4dadf664
TTN
105622001-06-30 Thien-Thi Nguyen <ttn@revel.glug.org>
10563
10564 * stamp-h.in: bye bye
10565
02202352
MV
105662001-06-30 Marius Vollmer <mvo@zagadka.ping.de>
10567
10568 * gh_eval.c (gh_eval_str): Use scm_c_eval_string instead of
10569 scm_eval_0str.
10570
10571 * load.c, load.h (scm_c_primitive_load,
10572 scm_c_primitive_load_path): New.
10573
10574 * strports.c, strports.h (scm_c_read_string): Renamed from
10575 scm_read_0str. Also, added "const" qualifier to argument.
10576 (scm_c_eval_string): Renamed from scm_eval_0str.
10577 (scm_read_0str, scm_eval_0str): Deprecated.
10578
df1ad0d1
MG
105792001-06-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10580
10581 * fluids.c (scm_c_with_fluid): Use scm_list_1() instead of
10582 SCM_LIST1.
10583
1afff620
KN
105842001-06-28 Keisuke Nishida <kxn30@po.cwru.edu>
10585
10586 * list.h (scm_list_1, scm_list_2, scm_list_3, scm_list_4, scm_list_5,
10587 scm_list_n): New functions.
10588 (SCM_LIST0, SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5,
10589 SCM_LIST6, SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify): Deprecated.
10590 (lots of files): Use the new functions.
4dadf664 10591
1afff620
KN
10592 * goops.c (CALL_GF1, CALL_GF2, CALL_GF3, CALL_GF4): Use scm_call_N.
10593
10594 * strings.c: #include "libguile/deprecation.h".
10595
b858464a
MG
105962001-06-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10597
10598 * read.c (scm_lreadr): When reading a hash token, check for a
10599 user-defined hash procedure first, so that overriding the builtin
10600 hash characters is possible (this was needed for implementing
10601 SRFI-4's read synax `f32(...)').
4dadf664 10602
b858464a
MG
10603 * num2integral.i.c: Use scm_t_signed_bits instead of scm_t_bits,
10604 because the latter is unsigned now and breaks comparisons like
10605 (n < (scm_t_signed_bits)MIN_VALUE).
4dadf664 10606
d95c0b76
NJ
106072001-06-26 Neil Jerram <neil@ossau.uklinux.net>
10608
10609 * eval.h, eval.c (scm_call_4): New function.
10610
10611 * eval.c (SCM_APPLY, SCM_CEVAL, ENTER_APPLY): Call trap handlers
10612 directly rather than dispatching to them via scm_ithrow and a lazy
10613 catch.
4dadf664 10614
d95c0b76
NJ
10615 * eval.c (scm_evaluator_trap_table), eval.h (SCM_ENTER_FRAME_HDLR,
10616 SCM_APPLY_FRAME_HDLR, SCM_EXIT_FRAME_HDLR): Add three new options
10617 for trap handler procedures.
10618
10619 * debug.h (SCM_RESET_DEBUG_MODE): Add checks for trap handler
10620 procedures not being #f.
10621
30e3be5a
ML
106222001-06-27 Michael Livshin <mlivshin@bigfoot.com>
10623
10624 * Makefile.am (c-tokenize.c): add rule to generate it.
10625 (EXTRA_DIST): add c-tokenize.lex, so it gets distributed.
10626
10627 filter-doc-snarfage.c: remove.
10628
82893676
MG
106292001-06-26 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10630
10631 * ports.c (scm_output_port_p): Use result of SCM_COERCE_OUTPORT.
10632
10633 The following set of changes makes compiling Guile under various
10634 Windows compilers easier. Compilation under GNU systems should
10635 not be affected at all.
10636
10637 Thanks to Stefan Jahn for all necessary information, patches and
10638 testing.
4dadf664 10639
82893676
MG
10640 * posix.c: Conditialize getpwent, getgrent, kill, getppid, getuid,
10641 getpgrp, ttyname, primitive-fork and some header inclusion for
10642 Windows.
10643
10644 * random.c: Define M_PI, if not predefined and use __int64 for
10645 LONG64 under Windows.
10646
10647 * scmsigs.c: Emulate some functions (alarm, sleep, kill) under
10648 Windows and conditionalize some signal names.
10649
4dadf664 10650 * socket.c (scm_getsockopt): Added missing comma.
82893676
MG
10651 Include socket library header under Windows.
10652
10653 * stime.c (CLKTCK): Add cast to int, to make it compile under
10654 Windows.
10655
10656 * ports.c (truncate): New function, compiled only under Windows.
10657
10658 * net_db.c: Do not declare errno under Windows.
10659
10660 * iselect.h, inet_aton.c: Include socket library headers under
10661 Windows.
10662
10663 * guile.c (inner_main): Under Windows, initialize socket library
10664 and initialize gdb_interface data structures.
10665
10666 * gdb_interface.h: Under Windows, gdb_interface cannot be
10667 initialized statically. Initialize at runtime instead.
10668
10669 * fports.c (write_all): ssize_t -> size_t.
10670 (fport_print): Conditionalize call to ttyname().
10671 (getflags): New function, compiled only under Windows.
10672
10673 * filesys.c: Conditionalize inclusion of <pwd.h>. Conditionalize
10674 primitives chown, link, fcntl.
10675 (scm_basename, scm_dirname): Under Windows, handle \ as well as /
10676 as path seperator.
10677
10678 * backtrace.c: Include <io.h> under Windows.
10679
10680 * async.h (ASYNCH, SCM_ASYNC_H): Rename <foo>H to SCM_<foo>_H.
10681
10682 * _scm.h: Added preprocessor conditional for __MINGW32__ for errno
10683 declaration.
10684
fdc28395
KN
106852001-06-27 Keisuke Nishida <kxn30@po.cwru.edu>
10686
10687 * eval.c (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
10688 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): New functions.
10689 * eval.h (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
10690 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): Declared.
10691 * async.c (scm_run_asyncs), coop-threads.c (scheme_body_bootstrip,
10692 scheme_handler_bootstrip), debug.c (with_traps_inner), dynwind.c
10693 (scm_dynamic_wind, scm_dowinds), environments.c
10694 (import_environment_conflict), eval.c (scm_macroexp, scm_force,
10695 scm_primitive_eval_x, scm_primitive_eval), fluids.c (apply_thunk),
10696 goops.c (GETVAR, purgatory, make_class_from_template,
10697 scm_ensure_accessor), hashtab.c (scm_ihashx, scm_sloppy_assx,
10698 scm_delx_x, fold_proc), hooks.c (scm_c_run_hook), load.c
10699 (scm_primitive_load), modules.c (scm_resolve_module,
10700 scm_c_define_module, scm_c_use_module, scm_c_export,
10701 module_variable, scm_eval_closure_lookup, scm_sym2var,
10702 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
10703 ports.c (scm_port_for_each), print.c (scm_printer_apply),
10704 properties.c (scm_primitive_property_ref), ramap.c (ramap,
10705 ramap_cxr, rafe, scm_array_index_map_x, read.c (scm_lreadr),
10706 scmsigs.c (sys_deliver_signals), sort.c (applyless), strports.c
10707 (scm_object_to_string, scm_call_with_output_string,
10708 scm_call_with_input_string), throw.c (scm_body_thunk,
10709 scm_handle_by_proc, hbpca_body), unif.c (scm_make_shared_array,
10710 scm_make_shared_array), vports.c (sf_flush, sf_write,
10711 sf_fill_input, sf_close): Use one of the above functions.
10712 * goops.c, hashtab.c, scmsigs.c, sort.c: #include "libguile/root.h".
10713
36284627
DH
107142001-06-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
10715
10716 * filesys.c (scm_close), ports.c (scm_close_port,
10717 scm_port_closed_p), strop.c (scm_string_null_p): Use SCM_BOOL
10718 instead of SCM_NEGATE_BOOL.
10719
10720 * filesys.c (scm_stat): Clean up type dispatch.
10721
10722 * filesys.c (scm_stat), ports.c (scm_input_port_p,
10723 scm_output_port_p): Get rid of redundant IM type check.
10724
10725 * filesys.c (scm_readdir, scm_getcwd, scm_readlink), gh_data.c
10726 (gh_str2scm), load.c (scm_primitive_load, scm_internal_parse_path,
10727 scm_search_path), net_db.c (scm_gethost, scm_getnet, scm_getproto,
10728 scm_return_entry), numbers.c (scm_number_to_string), objects.c
10729 (scm_make_subclass_object), ports.c (scm_port_mode), read.c
10730 (scm_lreadr), simpos.c (scm_getenv), socket.c (scm_inet_ntoa,
10731 scm_addr_vector), stime.c (scm_strftime), strings.c
10732 (scm_makfromstrs, scm_makfrom0str, scm_substring), strings.h
10733 (SCM_STRING_COERCE_0TERMINATION_X), strop.c (string_copy,
10734 scm_string_split), strports.c (scm_strport_to_string), symbols.c
10735 (scm_symbol_to_string), vports.c (sf_write): Use scm_mem2string
10736 instead of scm_makfromstr.
10737
10738 * net_db.c (scm_sethost, scm_setnet, scm_setproto, scm_setserv),
10739 ports.c (scm_close_all_ports_except), read.c (scm_lreadr,
10740 scm_read_hash_extend), stime.c (scm_strftime), strings.c
10741 (scm_string_append, scm_string), strings.h (SCM_STRINGP,
10742 SCM_STRING_COERCE_0TERMINATION_X, SCM_RWSTRINGP), strop.c
10743 (string_capitalize_x): Prefer explicit type check over SCM_N?IMP,
10744 !SCM_<pred> over SCM_N<pred>.
10745
10746 * strings.[ch] (scm_makfromstr): Deprecated.
10747
10748 (scm_mem2string): New function, replaces scm_makfromstr.
10749
10750 * strings.c (scm_substring), strop.c (string_copy,
10751 scm_string_split), strports.c (scm_strport_to_string), symbols.c
10752 (scm_symbol_to_string): Fix gc problem.
10753
10754 * strings.h (STRINGSH, SCM_STRINGS_H): Rename <foo>H to
10755 SCM_<foo>_H.
10756
10757 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Eliminate
10758 warning about comparing signed and unsigned values. This fix is
10759 not optimal, since it won't work reliably if sizeof (c_start) >
10760 sizeof (size_t) or sizeof (c_end) > sizeof (size_t). A better
10761 solution is to define this macro as an inline function, thus
10762 allowing to specifiy the types of c_start and c_end.
10763
13dcb666
DH
107642001-06-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
10765
10766 * debug.h (SCM_DEBUGOBJ_FRAME): Deliver result as a
10767 scm_t_debug_frame*.
10768
10769 * debug.h (DEBUGH, SCM_DEBUG_H), stacks.h (STACKSH, SCM_STACKSH):
10770 Rename <foo>H to SCM_<foo>_H.
10771
10772 * stacks.c (NEXT_FRAME, narrow_stack): Prefer explicit type check
10773 over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
10774
10775 (narrow_stack): Make i unsigned. Don't use side-effecting
10776 operations in conditions.
10777
10778 (narrow_stack, scm_make_stack, scm_stack_id,
10779 scm_last_stack_frame): Get rid of redundant SCM_N?IMP checks.
10780
10781 (scm_make_stack, scm_stack_id, scm_last_stack_frame): Clean up
10782 type dispatch. No need to cast result of SCM_DEBUGOBJ_FRAME any
10783 more.
10784
10785 (scm_stack_ref, scm_frame_previous, scm_frame_next): Fix
10786 signedness.
10787
ea2c3968 10788 (scm_last_stack_frame): Remove bogus `;'.
13dcb666
DH
10789
10790 * stacks.h (SCM_FRAMEP): Fix type check.
10791
ac13d9d2
ML
107922001-06-25 Michael Livshin <mlivshin@bigfoot.com>
10793
ee0c0e03
ML
10794 * Makefile.am (MAINTAINERCLEANFILES): be sure to remove
10795 c-tokenize.c when doing maintainer-clean.
10796
ac13d9d2
ML
10797 * snarf.h (SCM_SNARF_DOCS): change the "grammar" slightly.
10798
10799 * guile-snarf-docs.in, guile-snarf-docs-texi.in: rewrite &
10800 simplify.
10801
10802 * eval.c: all hash signs are in column 0.
10803
10804 * Makefile.am (guile_filter_doc_snarfage): build using
10805 c-tokenize.c, not filter-doc-snarfage.c.
10806 rearrange snarfing dependencies a bit.
10807
10808 * c-tokenize.lex: new file.
10809
16be44e5
MV
108102001-06-25 Marius Vollmer <mvo@zagadka.ping.de>
10811
10812 * srcprop.h, srcprop.c (scm_srcprops_to_plist): Renamed from
10813 scm_t_srcpropso_plist. See the big type renaming.
10814 * coop-defs.h (scm_mutex_trylock, scm_cond_timedwait): Likewise.
10815 Thanks to Seth Alves!
4dadf664 10816
16be44e5
MV
10817 * numbers.c (SIZE_MAX, PTRDIFF_MIN, PTRDIFF_MAX): Only define when
10818 they aren't defined already.
10819
5843e5c9
DH
108202001-06-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
10821
10822 * backtrace.c (display_backtrace_body): Use SCM_VALIDATE_STACK
10823 and SCM_VALIDATE_OPOUTPORT instead of SCM_ASSERT. Fix signedness
10824 problem.
10825
10826 * backtrace.c (display_expression, scm_set_print_params_x,
10827 display_application, display_frame, scm_backtrace), numbers.c
10828 (scm_istring2number), objects.c (scm_class_of,
10829 scm_mcache_lookup_cmethod, scm_mcache_compute_cmethod): Prefer
10830 explicit type check over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
10831
10832 * fluids.c (scm_fluid_ref, scm_fluid_set_x): Fluid numbers are
10833 always positive.
10834
10835 * numbers.c (scm_i_mkbig): Remove unnecessary casts, remove
10836 unnecessary SCM_DEFER_INTS, SCM_ALLOW_INTS.
10837
10838 * objects.c (scm_class_of): Type fix.
10839
10840 (scm_mcache_lookup_cmethod): Improved comment, simplified,
10841 eliminated goto.
10842
10843 * pairs.h (scm_error_pair_access): The function can return if
10844 called recursively.
10845
6b41a313
MG
108462001-06-20 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10847
10848 * init.c (scm_init_guile_1): Removed initialization of tag.c.
10849
10850 * gdbint.c, init.c: Removed inclusion of tag.h.
10851
10852 * tag.h, tag.c: Removed files.
10853
10854 * Makefile.am: Removed tag.{h,c,doc,x} in various places.
10855
fbbdb121
GH
108562001-06-20 Gary Houston <ghouston@arglist.com>
10857
10858 * deprecation.c, extensions.c, rw.c: include string.h.
10859
72c17ed0
GH
108602001-06-19 Gary Houston <ghouston@arglist.com>
10861
10862 * filter-doc-snarfage.c (process): added ungetc in
10863 MULTILINE_COOKIE case since otherwise it fails when there's no
10864 space between the '(' and the quote of the following string
10865 (gcc 3.0).
10866
4ff9f825
MV
108672001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
10868
4927dd28
MV
10869 Throughout: replace "scm_*_t" with "scm_t_*", except "scm_lisp_t".
10870
b629af45
MV
108712001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
10872
10873 * unif.h (SCM_ARRAY_NDIM): Shift then cast so that no sign
0f002b27
MV
10874 extension takes place.
10875 * strings.h (SCM_STRING_LENGTH): Likewise.
10876 (SCM_STRING_MAX_LENGTH): Use unsigned numbers.
4dadf664 10877
4ff9f825
MV
10878 * __scm.h (ptrdiff_t): Typedef to long when configure didn't find
10879 it.
10880
10881 * tags.h: Include <stdint.h> when we have it.
10882 (scm_bits_t): Changed to be a unsigned type. Use uintptr_t when
10883 available. Else use "unsigned long".
10884 (scm_signed_bits_t): New.
10885
10886 * numbers.h (SCM_SRS): Cast shiftee to scm_signed_bits_t.
10887 (SCM_INUM): Cast result to scm_signed_bits_t.
10888
58bee6a8
TTN
108892001-06-13 Thien-Thi Nguyen <ttn@revel.glug.org>
10890
10891 * mkstemp.c: Update path to #include file scmconfig.h.
10892 Thanks to Golubev I. N.
10893
00d8d838
DH
108942001-06-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
10895
10896 * struct.h (SCM_STRUCT_VTABLE_FLAGS): New macro.
10897
ea2c3968 10898 * goops.h (SCM_NUMBER_OF_SLOTS): Removed bogus `\' at the end of
00d8d838
DH
10899 the macro definition.
10900
10901 (SCM_CLASSP, SCM_INSTANCEP, SCM_PUREGENERICP, SCM_ACCESSORP,
10902 SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Use SCM_STRUCT_VTABLE_FLAGS
10903 instead of SCM_INST_TYPE.
10904
10905 (SCM_ACCESSORP, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Make sure
10906 the object is a struct before accessing its struct flags.
10907
10908 (SCM_INST_TYPE, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Deprecated.
10909
495c67e5
GH
109102001-06-10 Gary Houston <ghouston@arglist.com>
10911
10912 * rdelim.c (scm_init_rdelim_builtins): don't try to activate the
10913 (ice-9 rdelim) module in (guile) and (guile-user). it didn't
10914 work reliably anymore. try it from boot-9.scm instead.
10915
6a9003d3
MV
109162001-06-09 Marius Vollmer <mvo@zagadka.ping.de>
10917
10918 * ports.c (scm_lfwrite): Maintain columnd and row count in port.
9a5fa6e9 10919 Thanks to Matthias Köppe!
58bee6a8 10920
47bcd646
ML
109212001-06-08 Michael Livshin <mlivshin@bigfoot.com>
10922
a88ff5b6
ML
10923 * snarf.h, filter-doc-snarfage.c: more changes to cope with
10924 space-happy C preprocessors.
10925
47bcd646 10926 * filter-doc-snarfage.c, guile-snarf.in: try to cope with spaces
9a5fa6e9 10927 inside cookies. thanks to Matthias Köppe!
47bcd646 10928
bab246f3
DH
109292001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
10930
10931 * keywords.c (keyword_print): Don't use SCM_C[AD]R to access
10932 keywords. Fix gc protection.
10933
10934 * objects.c (scm_mcache_lookup_cmethod): Don't use side effecting
10935 operations in macro calls.
10936
10937 * pairs.c (scm_error_pair_access): Avoid recursion.
10938
10939 Thanks to Matthias Koeppe for reporting the bugs that correspond
10940 to the following set of patches.
10941
10942 * unif.c (scm_bit_set_star_x, scm_bit_invert_x), vectors.h
10943 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Obtain the
10944 bitvector base address using SCM_BITVECTOR_BASE.
10945
10946 * unif.h (SCM_BITVECTOR_BASE): Return the base address as an
10947 unsigned long*.
10948
dcb410ec
DH
109492001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
10950
10951 * goops.c (SCM_CLASS_REDEF): Removed.
10952
10953 * vectors.h (VECTORSH, SCM_VECTORS_H): Renamed <foo>H to
10954 SCM_<foo>_H.
10955
10956 Thanks to Matthias Koeppe for reporting the bugs that correspond
10957 to the following set of patches.
10958
10959 * goops.c (scm_sys_prep_layout_x, scm_basic_basic_make_class,
10960 create_basic_classes, scm_sys_fast_slot_set_x, set_slot_value,
10961 scm_sys_allocate_instance, clear_method_cache,
10962 scm_sys_invalidate_method_cache_x, scm_make,
10963 create_standard_classes, scm_make_port_classes, scm_make_class,
10964 scm_add_slot): Use SCM_SET_SLOT to set slot values.
10965
10966 (prep_hashsets): Use SCM_SET_HASHSET to set class hash values.
10967
10968 * goops.h (SCM_SET_SLOT, SCM_SET_HASHSET): New macros.
10969
10970 * ramap.c (BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
10971 UNARY_ELTS_CODE): Remove bogus break statement.
10972
10973 * vectors.h (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR):
10974 Don't access bit vectors elements as SCM objects.
10975
10976 * weaks.c (scm_make_weak_vector, scm_make_weak_key_hash_table,
10977 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
10978 Don't assign to an unpacked value.
10979
e81d98ec
DH
109802001-06-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
10981
10982 * __scm.h (SCM_NORETURN): Moved here from error.h.
10983
10984 (SCM_UNUSED): New macro.
10985
10986 (SCM_DEBUG_PAIR_ACCESSES): New macro.
10987
10988 * backtrace.c (display_error_handler), continuations.c
10989 (continuation_print), debug.c (debugobj_print), dynwind.c
10990 (guards_print), environments.c (observer_print,
10991 core_environments_finalize, leaf_environment_cell,
10992 leaf_environment_print, eval_environment_print,
10993 eval_environment_observer, import_environment_define,
10994 import_environment_undefine, import_environment_print,
10995 import_environment_observer, export_environment_define,
10996 export_environment_undefine, export_environment_print,
10997 export_environment_observer), eval.c (scm_m_quote, scm_m_begin,
10998 scm_m_if, scm_m_set_x, scm_m_and, scm_m_or, scm_m_case,
10999 scm_m_cond, scm_m_lambda, scm_m_letstar, scm_m_do, scm_m_delay,
11000 scm_m_letrec1, scm_m_apply, scm_m_cont, scm_m_nil_cond,
11001 scm_m_nil_ify, scm_m_t_ify, scm_m_0_cond, scm_m_0_ify,
11002 scm_m_1_ify, scm_m_atfop, scm_m_at_call_with_values), evalext.c
11003 (scm_m_generalized_set_x), fluids.c (fluid_print), fports.c
11004 (fport_print), gc.c (gc_start_stats, scm_remember_upto_here_1,
11005 scm_remember_upto_here_2, scm_remember_upto_here, mark_gc_async),
11006 gh_init.c (gh_standard_handler), goops.c (get_slot_value,
11007 set_slot_value, test_slot_existence, scm_change_object_class,
11008 scm_m_atslot_ref, scm_m_atslot_set_x, make_struct_class,
11009 default_setter), guardians.c (guardian_print, guardian_gc_init,
11010 guardian_zombify, whine_about_self_centered_zombies), guile.c
11011 (inner_main), init.c (stream_handler), keywords.c (keyword_print),
11012 mallocs.c (malloc_print), numbers.c (scm_print_real,
11013 scm_print_complex, scm_bigprint), ports.c (flush_port_default,
11014 end_input_default, scm_port_print, fill_input_void_port,
11015 write_void_port), root.c (root_print), smob.c (scm_mark0,
11016 scm_free0, scm_smob_print, scm_smob_apply_1_error,
11017 scm_smob_apply_2_error, scm_smob_apply_3_error, free_print),
11018 stime.c (restorezone), strings.c (scm_makfromstr), struct.c
11019 (scm_struct_free_0, scm_struct_free_standard,
11020 scm_struct_free_entity, scm_struct_gc_init, scm_free_structs),
11021 throw.c (jmpbuffer_print, lazy_catch_print, ss_handler,
11022 scm_handle_by_throw, scm_ithrow), weaks.c
11023 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
11024 scm_scan_weak_vectors), ramap.c (scm_array_fill_int), filesys.c
11025 (scm_dir_print): Mark unused parameters with SCM_UNUSED.
11026
11027 * error.h (SCM_NORETURN): Moved to __scm.h.
11028
11029 * error.h (ERRORH, SCM_ERROR_H), pairs.h (PAIRSH, SCM_PAIRS_H):
11030 Renamed <foo>H to SCM_<foo>_H.
11031
11032 * gc.c (debug_cells_gc_interval): New static variable.
11033
11034 (scm_assert_cell_valid): If selected by the user, perform
11035 additional garbage collections.
11036
11037 (scm_set_debug_cell_accesses_x): Extended to let the user specify
11038 if additional garbage collections are desired.
11039
11040 (mark_gc_async): If additional garbage collections are selected
11041 by the user, don't call the after-gc-hook. Instead require the
11042 user to run the hook manually.
11043
11044 * pairs.c (scm_error_pair_access): New function. Only compiled
11045 if SCM_DEBUG_PAIR_ACCESSES is set to 1.
11046
11047 * pairs.h (SCM_VALIDATE_PAIR): New macro.
11048
11049 (SCM_CAR, SCM_CDR, SCM_SETCAR, SCM_SETCDR): If
11050 SCM_DEBUG_PAIR_ACCESSES is set to 1, make sure that the argument
11051 is a real pair object. (Glocs are also accepted, but that may
11052 change.) If not, abort with an error message.
11053
17fa3fcf
DH
110542001-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
11055
11056 * eval.c (SCM_VALIDATE_NON_EMPTY_COMBINATION): New macro.
11057
11058 (SCM_CEVAL, SCM_APPLY): Replace calls to SCM_EVALIM2 with calls
11059 to SCM_VALIDATE_NON_EMPTY_COMBINATION.
11060
feeedafb
MV
110612001-06-05 Marius Vollmer <mvo@zagadka.ping.de>
11062
11063 * extensions.c (scm_c_register_extension): Allow NULL as library
11064 name.
11065 (load_extension): Ignore NULL library names when comparing.
58bee6a8 11066
feeedafb
MV
11067 * hash.c (scm_hasher): Use SCM_UNPACK in the case labels so that
11068 non-pointers are being compared. Thanks to Alexander Klimov!
11069
4bcdfe46
GH
110702001-06-04 Gary Houston <ghouston@arglist.com>
11071
11072 * rw.c (scm_write_string_partial): new procedure implementing
11073 write-string/partial in (ice-9 rw).
11074 * rw.h: declare scm_write_string_partial.
58bee6a8 11075
f480396b
MV
110762001-06-04 Marius Vollmer <mvo@zagadka.ping.de>
11077
feeedafb
MV
11078 * keywords.c (keyword_print): Substract 1 from length of symbol
11079 name, accounting for the silly dash.
11080
11081 * dynl.c (scm_registered_modules, scm_clear_registered_modules):
11082 Do not emit deprecation warning.
11083
f480396b
MV
11084 Added exception notice to all files.
11085
11086 * dynl.c: Include "deprecation.h".
11087
c794483c
MV
110882001-06-03 Marius Vollmer <mvo@zagadka.ping.de>
11089
11090 * dynl.c (scm_register_module_xxx, scm_registered_modules,
11091 scm_clear_registered_modules): Deprecated.
11092
9454d8d5
RB
110932001-06-02 Rob Browning <rlb@cs.utexas.edu>
11094
11095 * .cvsignore: add guile_filter_doc_snarfage guile-snarf-docs
11096 guile-snarf-docs-texi.
11097
11098 * fports.c: HAVE_ST_BLKSIZE changed to
11099 HAVE_STRUCT_STAT_ST_BLKSIZE.
11100 (scm_fport_buffer_add): HAVE_ST_BLKSIZE changed to
11101 HAVE_STRUCT_STAT_ST_BLKSIZE.
11102
11103 * filesys.c (scm_stat2scm): HAVE_ST_RDEV changed to
11104 HAVE_STRUCT_STAT_ST_RDEV.
11105 (scm_stat2scm): HAVE_ST_BLKSIZE changed to
11106 HAVE_STRUCT_STAT_ST_BLKSIZE.
11107 (scm_stat2scm): HAVE_ST_BLOCKS changed to
11108 HAVE_STRUCT_STAT_ST_BLOCKS.
11109
114f9bab
MV
111102001-06-02 Marius Vollmer <mvo@zagadka.ping.de>
11111
b0c16cd9
MV
11112 * strports.c (scm_eval_string): Use scm_primitive_eval_x instead
11113 of scm_eval_x to allow module changes between the forms in the
11114 string. Set/restore module using scm_c_call_with_current_module.
11115
114f9bab
MV
11116 * mkstemp.c: New file, slightly modified from libiberties
11117 mkstemps.c.
11118
c99f9605
ML
111192001-05-31 Michael Livshin <mlivshin@bigfoot.com>
11120
11121 * guile-snarf-docs.in, guile-snarf-docs-texi.in,
11122 filter-doc-snarfage.c: new files.
11123
11124 * Makefile.am: add stuff to [build,] use and distribute
11125 guile-snarf-docs, guile-snarf-docs-texi, guile_filter_doc_snarfage.
11126
11127 * guile-snarf.in: grok the new snarf output.
11128
11129 * snarf.h: make the output both texttools- and `read'-friendly.
11130
47bcd646
ML
11131 * guile-doc-snarf.in: reimplement in terms of guile-snarf and
11132 guile-snarf-docs. (should also deprecate, I guess. maybe not).
c99f9605 11133
7eb5d7b2
MV
111342001-05-31 Marius Vollmer <mvo@zagadka.ping.de>
11135
11136 * print.c (scm_simple_format): Support "~~" and "~%". Signal
11137 error for unsupported format controls and for superflous
ec2667f0 11138 arguments. Thanks to Daniel Skarda!
7eb5d7b2
MV
11139
11140 * print.h, print.c (scm_print_symbol_name): Factored out of
11141 scm_iprin1.
11142 (scm_iprin1): Call it.
58bee6a8 11143
7eb5d7b2
MV
11144 * keywords.c (keyword_print): Use scm_print_symbol_name so that
11145 weird names are printed correctly.
11146
11147 * print.c (scm_print_symbol_name): Symbols whose name starts with
11148 `#' or `:' or ends with `:' are considered weird.
11149
609c3d30
MG
111502001-05-30 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11151
11152 * numbers.c (scm_difference, scm_divide): Clarified comments for -
11153 and /.
11154
111552001-05-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11156
11157 * debug.h: Removed prototype for scm_eval_string.
11158
8d09eb04
MG
111592001-05-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11160
11161 * symbols.c (scm_gensym): Fix buffer overrun (try `(gensym
58bee6a8 11162 (make-string 2000 #\!))' in an older version).
8d09eb04
MG
11163
11164 Change strncpy to memcpy to allow embedded NUL characters in
11165 symbol prefix.
11166
dd85ce47
ML
111672001-05-28 Michael Livshin <mlivshin@bigfoot.com>
11168
fde50407
ML
11169 * hooks.c (scm_create_hook): deprecated.
11170 (make_hook): deleted.
11171 (scm_make_hook): all the hook creation code is now here.
11172
11173 * gc.c (scm_init_gc): don't call `scm_create_hook'. instead make
11174 a hook, make it permanent, and do a `scm_c_define' on it.
11175
dd85ce47
ML
11176 * strop.c (s_scm_string_capitalize_x): fix docstring quoting.
11177
11178 * socket.c (s_scm_inet_pton): fix docstring quoting.
11179 (s_scm_inet_ntop): ditto.
11180
11181 * num2integral.i.c (INTEGRAL2NUM): cast to fix a warning.
11182
11183 * hashtab.c (scm_internal_hash_fold): fix argument position in
11184 SCM_ASSERT.
11185
11186 * environments.c (s_scm_import_environment_set_imports_x): fix
11187 argument position in SCM_ASSERT.
11188
11189 * debug.c (s_scm_make_gloc): fix SCM packing/unpacking.
11190 (s_scm_make_iloc): ditto.
11191
729dbac3
DH
111922001-05-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
11193
11194 * __scm.h (SCM_DEBUG_TYPING_STRICTNESS): Make 1 the default.
11195
11196 * eval.c (promise_print): Read the promise's value as an object.
11197
11198 (SCM_CEVAL): Don't perform side-effecting operations in macro
11199 parameters.
11200
11201 * eval.h (SCM_EVALIM2): Fix the typing strictness of the
11202 conditional expression.
11203
11204 * gc.c (scm_master_freelist, scm_master_freelist2): Added missing
11205 initializer.
11206
11207 * gh_data.c (gh_set_substr): Removed redundant unsigned >= 0
11208 text, removed redundant computation of effective_length and fixed
11209 the overflow check.
11210
11211 * goops.c (test_slot_existence): Use SCM_EQ_P to compare SCM
11212 values.
11213
11214 (wrap_init): Don't use SCM_C[AD]R for non pairs.
11215
11216 (hell): Make it a scm_bits_t pointer rather than a SCM pointer.
11217
11218 * goops.c (scm_sys_modify_class), strports.c (st_resize_port),
11219 struct.h (SCM_SET_STRUCT_PRINTER): Store unpacked values.
11220
11221 * goops.h (SCM_ACCESSORS_OF, SCM_SLOT): Return a SCM value.
11222
11223 * goops.h (GOOPSH, SCM_GOOPS_H), modules.h (MODULESH,
11224 SCM_MODULES_H), objects.h (OBJECTSH, SCM_OBJECTS_H), struct.h
11225 (STRUCTH, SCM_STRUCT_H), symbols.h (SYMBOLSH, SCM_SYMBOLS_H),
11226 __scm.h (__SCMH, SCM___SCM_H): Change <foo>H to SCM_<foo>_H.
11227
11228 * modules.[ch] (scm_module_tag): Make it a scm_bits_t value.
11229
11230 * objects.h (SCM_SET_CLASS_INSTANCE_SIZE): Fixed typing.
11231
ea2c3968 11232 * ramap.c (ramap_rp): Removed bogus `;'.
729dbac3
DH
11233
11234 * sort.c (scm_restricted_vector_sort_x): Fixed signedness
11235 problem.
11236
11237 * symbols.h (SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS, SCM_SYMBOL_FUNC,
11238 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS):
11239 Read SCM objects rather than scm_bits_t values.
11240
11241 * tags.h (SCM_VOIDP_TEST): Removed.
11242
11243 (SCM_DEBUG_TYPING_STRICTNESS): Now takes values 0, 1, 2. The
11244 value of 2 now corresponds to the former 1, the current 1
11245 corresponds to the former situation that SCM_VOIDP_TEST was
11246 defined.
11247
58bee6a8
TTN
11248 (SCM): Now defined as typedef struct scm_unused_struct * SCM;
11249 If this appears to be not ANSI compliant, we will change it to
729dbac3
DH
11250 typedef struct scm_unused_struct { } * SCM;
11251 Thanks to Han-Wen Nienhuys for the suggestion.
11252
11253 * unif.c (scm_array_set_x): Fix typing problem, and use
11254 SCM_UVECTOR_BASE instead of SCM_VELTS or SCM_CELL_WORD_1 when
11255 dealing with uniform vectors.
11256
6b1b030e
ML
112572001-05-27 Michael Livshin <mlivshin@bigfoot.com>
11258
11259 * gc.c (scm_init_storage): init `scm_gc_registered_roots'.
11260 (scm_igc): mark from them, too (precisely, not conservatively!).
11261
11262 * root.h (scm_gc_registered_roots): new object in
11263 scm_sys_protects.
11264
11265 * hooks.c (scm_create_hook): call `scm_gc_protect_object' instead
11266 `scm_protect_object'. shouldn't call it at all, though, it seems.
11267
11268 * gc.c (scm_[un]protect_object): deprecated.
11269 (scm_gc_[un]protect_object): new names for scm_[un]protect_object.
11270 (scm_gc_[un]register_root[s]): new.
11271
11272 * gc.h: add prototypes for scm_gc_[un]protect_object,
11273 scm_gc_[un]register_root[s].
11274
c014a02e
ML
112752001-05-26 Michael Livshin <mlivshin@bigfoot.com>
11276
11277 revert the controversial part of the 2001-05-24 changes.
11278
0120801d
MV
112792001-05-25 Marius Vollmer <mvo@zagadka.ping.de>
11280
f4e0611e
MV
11281 * modules.c (scm_env_module): Exported to Scheme.
11282
0120801d 11283 * eval.c (scm_debug_opts): New option `show-file-name'.
729dbac3 11284
0120801d 11285 * debug.h (SCM_SHOW_FILE_NAME): New.
729dbac3 11286
0120801d
MV
11287 * backtrace.c: Include "libguile/filesys.h".
11288 (sym_base, display_backtrace_get_file_line,
11289 display_backtrace_file, display_backtrace_file_and_line): New.
11290 (display_frame): Call display_backtrace_file_and_line if that is
11291 requested.
11292 (display_backtrace_body): Call scm_display_backtrace_file if
11293 requested.
11294
11295 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr):
11296 Prototypes removed since there's no definition for these
11297 functions.
11298
880a7d13
MG
112992001-05-24 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11300
11301 * unif.c (scm_make_ra, array_free), unif.h (SCM_ARRAY_DIMS):
11302 Changed use of scm_array->scm_array_t and
11303 scm_array_dim->scm_array_dim_t to enable build with
11304 --disable-deprecated.
11305
1be6b49c
ML
113062001-05-24 Michael Livshin <mlivshin@bigfoot.com>
11307
11308 The purpose of this set of changes is to regularize Guile's usage
11309 of ANSI C integral types, with the following ideas in mind:
11310
d69c867a
ML
11311 - SCM does not nesessarily have to be long.
11312 - long is not nesessarily enough to store pointers.
1be6b49c
ML
11313 - long is not nesessarily the same size as int.
11314
11315 The changes are incomplete and possibly buggy. Please test on
11316 something exotic.
11317
11318 * validate.h
11319 (SCM_NUM2{SIZE,PTRDIFF,SHORT,USHORT,BITS,UBITS,INT,UINT}[_DEF]):
11320 new macros.
11321
11322 * unif.h: type renaming:
11323 scm_array -> scm_array_t
11324 scm_array_dim -> scm_array_dim_t
11325 the old names are deprecated, all in-Guile uses changed.
11326
11327 * tags.h (scm_ubits_t): new typedef, representing unsigned
11328 scm_bits_t.
11329
11330 * stacks.h: type renaming:
11331 scm_info_frame -> scm_info_frame_t
11332 scm_stack -> scm_stack_t
11333 the old names are deprecated, all in-Guile uses changed.
11334
11335 * srcprop.h: type renaming:
11336 scm_srcprops -> scm_srcprops_t
11337 scm_srcprops_chunk -> scm_srcprops_chunk_t
11338 the old names are deprecated, all in-Guile uses changed.
11339
11340 * gsubr.c, procs.c, print.c, ports.c, read.c, rdelim.c, ramap.c,
11341 rw.c, smob.c, sort.c, srcprop.c, stacks.c, strings.c, strop.c,
11342 strorder.c, strports.c, struct.c, symbols.c, unif.c, values.c,
11343 vectors.c, vports.c, weaks.c:
11344 various int/size_t -> size_t/scm_bits_t changes.
11345
11346 * random.h: type renaming:
11347 scm_rstate -> scm_rstate_t
11348 scm_rng -> scm_rng_t
11349 scm_i_rstate -> scm_i_rstate_t
11350 the old names are deprecated, all in-Guile uses changed.
11351
11352 * procs.h: type renaming:
11353 scm_subr_entry -> scm_subr_entry_t
11354 the old name is deprecated, all in-Guile uses changed.
11355
11356 * options.h (scm_option_t.val): unsigned long -> scm_bits_t.
11357 type renaming:
11358 scm_option -> scm_option_t
11359 the old name is deprecated, all in-Guile uses changed.
11360
11361 * objects.c: various long -> scm_bits_t changes.
11362 (scm_i_make_class_object): flags: unsigned long -> scm_ubits_t
11363
11364 * numbers.h (SCM_FIXNUM_BIT): deprecated, renamed to
11365 SCM_I_FIXNUM_BIT.
11366
11367 * num2integral.i.c: new file, multiply included by numbers.c, used
11368 to "templatize" the various integral <-> num conversion routines.
11369
11370 * numbers.c (scm_mkbig, scm_big2num, scm_adjbig, scm_normbig,
11371 scm_copybig, scm_2ulong2big, scm_dbl2big, scm_big2dbl):
11372 deprecated.
11373 (scm_i_mkbig, scm_i_big2inum, scm_i_adjbig, scm_i_normbig,
11374 scm_i_copybig, scm_i_short2big, scm_i_ushort2big, scm_i_int2big,
11375 scm_i_uint2big, scm_i_long2big, scm_i_ulong2big, scm_i_bits2big,
11376 scm_i_ubits2big, scm_i_size2big, scm_i_ptrdiff2big,
11377 scm_i_long_long2big, scm_i_ulong_long2big, scm_i_dbl2big,
11378 scm_i_big2dbl, scm_short2num, scm_ushort2num, scm_int2num,
11379 scm_uint2num, scm_bits2num, scm_ubits2num, scm_size2num,
11380 scm_ptrdiff2num, scm_num2short, scm_num2ushort, scm_num2int,
11381 scm_num2uint, scm_num2bits, scm_num2ubits, scm_num2ptrdiff,
11382 scm_num2size): new functions.
11383
d69c867a 11384 * modules.c (scm_module_reverse_lookup): i, n: int -> scm_bits_t.
1be6b49c
ML
11385
11386 * load.c: change int -> size_t in various places (where the
11387 variable is used to store a string length).
11388 (search-path): call scm_done_free, not scm_done_malloc.
11389
11390 * list.c (scm_ilength): return a scm_bits_t, not long.
11391 some other {int,long} -> scm_bits_t changes.
11392
11393 * hashtab.c: various [u]int -> scm_bits_t changes.
11394 scm_ihashx_closure -> scm_ihashx_closure_t (and made a typedef).
11395 (scm_ihashx): n: uint -> scm_bits_t
11396 use scm_bits2num instead of scm_ulong2num.
11397
11398 * gsubr.c: various int -> scm_bits_t changes.
11399
11400 * goops.[hc]: various {int,long} -> scm_bits_t changes.
11401
d69c867a 11402 * gh_data.c (gh_num2int): no loss of precision any more.
1be6b49c
ML
11403
11404 * gh.h (gh_str2scm): len: int -> size_t
11405 (gh_{get,set}_substr): start: int -> scm_bits_t,
11406 len: int -> size_t
11407 (gh_<num>2scm): n: int -> scm_bits_t
11408 (gh_*vector_length): return scm_[u]size_t, not unsigned long.
11409 (gh_length): return scm_bits_t, not unsigned long.
11410
11411 * gc.[hc]: various small changes relating to many things stopping
11412 being long and starting being scm_[u]bits_t instead.
11413 scm_mallocated should no longer wrap around.
11414
11415 * fports.h: type renaming:
11416 scm_fport -> scm_fport_t
11417 the old name is deprecated, all in-Guile uses changed.
11418
11419 * fports.c (fport_fill_input): count: int -> scm_bits_t
11420 (fport_flush): init_size, remaining, count: int -> scm_bits_t
11421
11422 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr): removed
11423 those prototypes, as the functions they prototype don't exist.
11424
11425 * fports.c (default_buffer_size): int -> size_t
11426 (scm_fport_buffer_add): read_size, write_size: int -> scm_bits_t
11427 default_size: int -> size_t
11428 (scm_setvbuf): csize: int -> scm_bits_t
11429
11430 * fluids.c (n_fluids): int -> scm_bits_t
11431 (grow_fluids): old_length, i: int -> scm_bits_t
11432 (next_fluid_num, scm_fluid_ref, scm_fluid_set_x): n: int ->
11433 scm_bits_t
11434 (scm_c_with_fluids): flen, vlen: int -> scm_bits_t
11435
11436 * filesys.c (s_scm_open_fdes): changed calls to SCM_NUM2LONG to
11437 the new and shiny SCM_NUM2INT.
11438
11439 * extensions.c: extension -> extension_t (and made a typedef).
11440
11441 * eval.h (SCM_IFRAME): cast to scm_bits_t, not int. just so
11442 there are no nasty surprises if/when the various deeply magic tag
11443 bits move somewhere else.
11444
11445 * eval.c: changed the locals used to store results of SCM_IFRAME,
11446 scm_ilength and such to be of type scm_bits_t (and not int/long).
11447 (iqq): depth, edepth: int -> scm_bits_t
11448 (scm_eval_stack): int -> scm_bits_t
11449 (SCM_CEVAL): various vars are not scm_bits_t instead of int.
11450 (check_map_args, scm_map, scm_for_each): len: long -> scm_bits_t
11451 i: int -> scm_bits_t
11452
11453 * environments.c: changed the many calls to scm_ulong2num to
11454 scm_ubits2num.
11455 (import_environment_fold): proc_as_ul: ulong -> scm_ubits_t
11456
11457 * dynwind.c (scm_dowinds): delta: long -> scm_bits_t
11458
11459 * debug.h: type renaming:
11460 scm_debug_info -> scm_debug_info_t
11461 scm_debug_frame -> scm_debug_frame_t
11462 the old names are deprecated, all in-Guile uses changed.
11463 (scm_debug_eframe_size): int -> scm_bits_t
11464
11465 * debug.c (scm_init_debug): use scm_c_define instead of the
11466 deprecated scm_define.
11467
11468 * continuations.h: type renaming:
11469 scm_contregs -> scm_contregs_t
11470 the old name is deprecated, all in-Guile uses changed.
11471 (scm_contregs_t.num_stack_items): size_t -> scm_bits_t
11472 (scm_contregs_t.num_stack_items): ulong -> scm_ubits_t
11473
11474 * continuations.c (scm_make_continuation): change the type of
d69c867a 11475 stack_size from long to scm_bits_t.
1be6b49c
ML
11476
11477 * ports.h: type renaming:
11478 scm_port_rw_active -> scm_port_rw_active_t (and made a typedef)
11479 scm_port -> scm_port_t
11480 scm_ptob_descriptor -> scm_ptob_descriptor_t
11481 the old names are deprecated, all in-Guile uses changed.
11482 (scm_port_t.entry): int -> scm_bits_t.
11483 (scm_port_t.line_number): int -> long.
11484 (scm_port_t.putback_buf_size): int -> size_t.
11485
11486 * __scm.h (long_long, ulong_long): deprecated (they pollute the
d69c867a 11487 global namespace and have little value beside that).
1be6b49c
ML
11488 (SCM_BITS_LENGTH): new, is the bit size of scm_bits_t (i.e. of an
11489 SCM handle).
11490 (ifdef spaghetti): include sys/types.h and sys/stdtypes.h, if they
d69c867a 11491 exist (for size_t & ptrdiff_t).
1be6b49c
ML
11492 (scm_sizet): deprecated.
11493
11494 * Makefile.am (noinst_HEADERS): add num2integral.i.c
11495
a6219f22
MV
114962001-05-23 Marius Vollmer <mvo@zagadka.ping.de>
11497
11498 * snarf.h (SCM_CONST_LONG): Use SCM_VCELL_INIT instead of
11499 SCM_VARIABLE_INIT since that it what it used to be.
11500
11501 * deprecation.c (scm_include_deprecated_features): Make docstring
9a5fa6e9 11502 ANSIsh. Thanks to Matthias Köppe!
a6219f22 11503
311b6a3c
MV
115042001-05-21 Marius Vollmer <mvo@zagadka.ping.de>
11505
9dfc4faa
MV
11506 * symbols.c (scm_mem2symbol): Re-introduce indirect cell. It is
11507 needed for weak-key hashtables.
11508
11509 * procs.c (scm_make_subr_with_generic): Add missing last argument
11510 in call to scm_c_define_gsubr_with_generic. Thanks to Ariel Rios.
11511
11512 * eval.c: Use SCM_EQ_P instead of `==' or `!=' in certain
11513 places. (scm_c_improper_memq): Return 1 instead of SCM_BOOL_T.
311b6a3c
MV
11514
11515 * eval.h (SCM_EVALIM2): Use SCM_EQ_P instead of `=='.
11516
2fc933fe
MV
115172001-05-20 Marius Vollmer <mvo@zagadka.ping.de>
11518
57ae112d
MV
11519 * symbols.c (scm_mem2symbol): Call `scm_must_strndup' instead of
11520 `duplicate_string'. Do not use an indirect cell, store symbol
11521 directly in collision list of hash table.
11522 (duplicate_string): Removed.
58bee6a8 11523
57ae112d
MV
11524 * init.c (scm_init_guile_1): Call scm_init_extensions.
11525
11526 * Makefile.am: Add "extensions.c" and related files in all the
11527 right places.
11528
11529 * extensions.h, extension.c: New files.
11530
11531 * gc.h, gc.c (scm_must_strdup, scm_must_strndup): New.
11532
2fc933fe
MV
11533 * modules.h (scm_system_module_env_p): Move out of deprecated
11534 section.
11535
11536 * rw.h (scm_init_rw): Added prototype.
11537
11538 * gsubr.h, gsubr.c (scm_c_make_gsubr, scm_c_define_gsubr,
11539 scm_c_make_gsubr_with_generic, scm_c_define_gsubr_with_generic):
11540 New functions. They replace scm_make_gsubr and
11541 scm_make_gsubr_with_generic. The `make' variants only create the
11542 gsubr object, while the `define' variants also put it into the
11543 current module. Changed all callers.
11544 (scm_make_gsubr, scm_make_gsubr_with_generic): Deprecated.
11545
11546 * procs.h, procs.c (scm_c_make_subr, scm_c_define_subr,
11547 scm_c_make_subr_with_generic, scm_c_define_subr_with_generic): New
11548 functions. They replace scm_make_subr, scm_make_subr_opt and
11549 scm_make_subr_with_generic. The `make' variants only create the
11550 subr object, while the `define' variants also put it into the
11551 current module. Changed all callers.
11552 (scm_make_subr, scm_make_subr_opt, scm_make_subr_with_generic):
11553 Deprecated.
11554
11555 * eval.c, gc.c, gh_funcs.c, goops.c, macros.c, pairs.c, ramap.c,
11556 rdelim.c, rw.c, scmsigs.c, snarf.h, values.c: Changed according to
11557 the comments above.
58bee6a8 11558
18928596
NJ
115592001-05-19 Neil Jerram <neil@ossau.uklinux.net>
11560
11561 * throw.c (scm_lazy_catch): Slight docstring clarification.
11562
21a13beb
MV
115632001-05-19 Marius Vollmer <mvo@zagadka.ping.de>
11564
e2b6ddc6
MV
11565 * throw.c: Lazy-catch handlers are no longer allowed to return.
11566 Fixed comments throughout.
11567 (scm_ithrow): Signal an error when a lazy-catch handler returns.
11568 Moved actual jump to jmpbuf into if-branch where the jmpbuf is
11569 recognized as such.
11570
21a13beb
MV
11571 * version.c (s_scm_micro_version): Fix typo in FUNC_NAME, it
11572 refered to s_scm_minor_version previously.
11573
11574 * modules.h, modules.c: Moved around a lot of code so that
11575 deprecated features appear at the bottom.
11576 (root_module_lookup_closure, scm_sym_app, scm_sym_modules,
11577 module_prefix, make_modules_in_var, beautify_user_module_x_var,
11578 scm_the_root_module, scm_make_module, scm_ensure_user_module,
11579 scm_load_scheme_module): Deprecated.
11580 (scm_system_module_env_p): Return SCM_BOOL_T directly for
11581 environments corresponding to the root module.
11582 (convert_module_name, scm_c_resolve_module,
11583 scm_c_call_with_current_module, scm_c_define_module,
11584 scm_c_use_module, scm_c_export): New.
11585 (the_root_module): New static variant of scm_the_root_module. Use
11586 it everywhere instead of scm_the_root_module.
58bee6a8 11587
21a13beb
MV
11588 * fluids.h, fluids.c (scm_internal_with_fluids): Deprecated.
11589 (scm_c_with_fluids): Renamed from scm_internal_with_fluids.
11590 (scm_c_with_fluid): New.
11591 (scm_with_fluids): Use scm_c_with_fluids instead of
11592 scm_internal_with_fluids.
58bee6a8 11593
21a13beb
MV
11594 * goops.h, goops.c (scm_init_goops_builtins): Renamed from
11595 `scm_init_goops'. Do not explicitly create/switch modules.
11596 Return SCM_UNSPECIFIED.
11597 (scm_init_goops): Only register `%init-goops-builtins' procedure.
11598 (scm_load_goops): Use scm_c_resolve_module instead of
11599 scm_resolve_module.
58bee6a8 11600
21a13beb
MV
11601 * init.c (scm_init_guile_1): Call `scm_init_goops' instead of
11602 `scm_init_oop_goops_goopscore_module'. Call `scm_init_rdelim' and
11603 `scm_init_rw' prior to loading the startup files.
11604
11605 * rdelim.h, rdelim.c: (scm_init_rdelim_builtins): Renamed from
11606 scm_init_rdelim. Do not explicitly create/switch modules.
11607 Return SCM_UNSPECIFIED.
11608 (scm_init_rdelim): Only register `%init-rdelim-builtins'
11609 procedure.
58bee6a8 11610
21a13beb
MV
11611 * rw.c (scm_init_rw_builtins): Renamed from scm_init_rw. Do not
11612 explicitly create/switch modules. Return SCM_UNSPECIFIED.
11613 (scm_init_rw): Only register `%init-rw-builtins' procedure.
11614
11615 * script.c (scm_shell): Evaluate the compiled switches in the
11616 current module, not in the root module.
11617
116182001-05-18 Marius Vollmer <mvo@zagadka.ping.de>
11619
11620 * fluids.c (scm_c_with_fluids): Rename from
11621 scm_internal_with_fluids.
11622 (scm_internal_with_fluids): Deprecated.
11623 (scm_c_with_fluid): New.
11624
09cb9e73
DH
116252001-05-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
11626
11627 * print.h (PRINTH, SCM_PRINT_H): Renamed PRINTH to SCM_PRINT_H.
11628
11629 (SCM_PORT_WITH_PS_PORT, SCM_PORT_WITH_PS_PS): Only pairs may be
11630 accessed with SCM_C[AD]R.
11631
11632 (SCM_COERCE_OUTPORT): Removed redundant SCM_NIMP test.
11633
c81ea65d
RB
116342001-05-16 Rob Browning <rlb@cs.utexas.edu>
11635
11636 * version.c (s_scm_major_version): doc fixes.
11637 (s_scm_minor_version): doc fixes.
11638 (s_scm_minor_version): new function.
11639
11640 * version.h (scm_init_version): new function.
11641
11642 * versiondat.h.in: add GUILE_MICRO_VERSION.
11643
887dfa7d
DH
116442001-05-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
11645
11646 * deprecation.c (scm_init_deprecation): Renamed
11647 GUILE_WARN_DEPRECATED_DEFAULT to SCM_WARN_DEPRECATED_DEFAULT.
11648
78930a69
MV
116492001-05-16 Marius Vollmer <mvo@zagadka.ping.de>
11650
11651 * Makefile.am (cpp_sig_symbols.c, cpp_err_symbols.c): Make
11652 dependent on cpp_cnvt.awk
11653
39cde5c5
MG
116542001-05-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11655
11656 * script.c (scm_compile_shell_switches): New command line option
11657 `--use-srfi' for loading a list of SRFIs on startup.
11658 (scm_shell_usage): Added `--use-srfi' to help message.
11659
f3f9dcbc
MV
116602001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
11661
78930a69 11662 Merged from mvo-vcell-cleanup-1-branch.
887dfa7d 11663
f3f9dcbc
MV
11664 The concept of vcells has been removed from Guile. With it,
11665 explicit obarrays and associated operations are gone. Use
11666 hashtables instead of obarrays.
887dfa7d 11667
f3f9dcbc
MV
11668 Throughout: use scm_sym2var instead of scm_sym2vcell and treat
11669 result as variable instead of vcell. Glocs no longer point to a
11670 vcell but to a variable. Use scm_c_define instead of
11671 scm_sysintern and treat the result as a variable (which it is),
11672 not a vcell.
887dfa7d 11673
f3f9dcbc
MV
11674 * variable.c, variable.h (SCM_VARVCELL, SCM_UDVARIABLEP,
11675 SCM_DEFVARIABLEP): Deprecated.
11676 (SCM_VARIABLE_REF, SCM_VARIABLE_SET, SCM_VARIABLE_LOC): New.
11677 (variable_print): Do not print name of variable.
11678 (variable_equalp): Compare values, not vcells.
11679 (anonymous_variable_sym): Removed.
11680 (make_vcell_variable): Removed.
11681 (make_variable): New, as replacement.
11682 (scm_make_variable, scm_make_undefined_variable): Do not take name
11683 hint parameter.
11684 (scm_variable_ref): Check for SCM_UNDEFINED and throw "unbound"
11685 error in that case.
11686 (scm_builtin_variable): Deprecated.
11687
11688 * symbols.c, symbols.h (scm_sym2vcell, scm_sym2ovcell_soft,
11689 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
11690 scm_intern, scm_intern0, scm_sysintern0_no_module_lookup,
11691 scm_sysintern, scm_sysintern0, scm_symbol_value0,
11692 scm_string_to_obarray_symbol, scm_intern_symbol,
11693 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned,
11694 scm_symbol_bound_p, scm_symbol_set_x, scm_gentmp, gentmp_counter):
11695 Deprecated and moved to "symbols-deprecated.c".
11696 (copy_and_prune_obarray, scm_builtin_bindings): Removed.
11697 (scm_init_symbols): Call scm_init_symbols_deprecated.
11698 * symbols-deprecated.c: New file.
11699 * Makefile.am: Added symbols-deprecated.c and related files in all
11700 the right places.
887dfa7d 11701
f3f9dcbc
MV
11702 * snarf.h (SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
11703 SCM_GLOBAL_VCELL_INIT): Deprecated.
11704 (SCM_VARIABLE, SCM_GLOBAL_VARIABLE, SCM_VARIABLE_INIT,
11705 SCM_GLOBAL_VARIABLE_INIT): New, as replacement. Changed all uses.
887dfa7d 11706
f3f9dcbc
MV
11707 * print.c (scm_iprin1): Use scm_module_reverse_lookup instead of
11708 SCM_GLOC_SYM.
11709
11710 * evalext.c, filesys.c, fports.c, gdbint.c, gh_data.c, gsubr.c,
11711 hooks.c, load.c, numbers.c, objects.c, ports.c, posix.c, procs.c,
11712 ramap.c, random.c, read.c, regex-posix.c, scmsigs.c, script.c,
11713 socket.c, srcprop.c, stacks.c, stime.c, struct.c, tag.c, throw.c:
11714 Changed according to the `throughout' comments.
11715
11716 * modules.h, modules.c (scm_module_system_booted_p): Changed type
11717 to `int'.
11718 (scm_module_type): Removed.
11719 (the_root_module): Renamed to the_root_module_var. Now points to
11720 a variable instead of a vcell. Updated all uses.
11721 (scm_the_root_module): Return SCM_BOOL_F when module systems
11722 hasn't been booted yet.
11723 (SCM_VALIDATE_STRUCT_TYPE): Removed.
11724 (scm_post_boot_init_modules): Made static.
11725 (scm_set_current_module): Call scm_post_boot_init_modules on first
11726 call.
11727 (make_modules_in, beautify_user_module_x, resolve_module,
11728 try_module_autoload, module_make_local_var_x): Tacked on "_var"
11729 suffix. Now point to variables instead of vcells. Updated all
11730 uses.
11731 (scm_module_lookup_closure): Deal with the module being SCM_BOOL_F
11732 and return SCM_BOOL_F in that case.
11733 (scm_module_transformer): Likewise.
11734 (sym_module, scm_lookup_closure_module, scm_env_module): New.
11735 (SCM_F_EVAL_CLOSURE_INTERFACE, SCM_EVAL_CLOSURE_INTERFACE_P): New.
11736 (scm_eval_closure_lookup): Do not allow new definitions when
11737 `interface' flag is set.
11738 (scm_standard_interface_eval_closure): New.
11739 (scm_pre_modules_obarray, scm_sym2var, scm_module_lookup,
11740 scm_lookup, scm_module_define, scm_define, scm_c_module_lookup,
11741 scm_c_lookup, scm_c_module_define, scm_c_define,
11742 scm_module_reverse_lookup, scm_get_pre_modules_obarray,
11743 scm_modules_prehistory): New.
11744 (scm_post_boot_init_modules): Use scm_c_define and scm_c_lookup
11745 instead of scm_intern0.
887dfa7d 11746
f3f9dcbc
MV
11747 * macros.c (scm_make_synt): Return SCM_UNSPECIFIED instead of the
11748 symbol.
11749
11750 * keywords.c (s_scm_make_keyword_from_dash_symbol): Use a regular
11751 hashtable operations to maintain the keywords, not obarray ones.
11752
11753 * init.c (scm_load_startup_files): Do not call
11754 scm_post_boot_init_modules. This is done by
11755 scm_set_current_module now.
11756 (scm_init_guile_1): Call scm_modules_prehistory. Call
11757 scm_init_variable early on.
11758
11759 * goops.c (s_scm_sys_goops_loaded): Get
11760 var_compute_applicable_methods from scm_sym2var, not from a direct
11761 invocation of scm_goops_lookup_closure.
11762
11763 * gh_funcs.c (gh_define): Return SCM_UNSPECIFIED instead of vcell.
11764
11765 * gc.c: Added simple debugging hack to mark phase of GC: When
11766 activated, do not tail-call scm_gc_mark. This gives nice
11767 backtraces.
11768 (scm_unhash_name): Removed.
11769
11770 * feature.c (features): Renamed to features_var. Now points to a
11771 variable instead of a vcell. Updated all uses.
11772
11773 * eval.h (SCM_TOP_LEVEL_LOOKUP_CLOSURE): Use
11774 `scm_current_module_lookup_closure' which will do the right thing
11775 when the module system hasn't been booted yet.
11776 (SCM_GLOC_SYM): Removed.
11777 (SCM_GLOC_VAR, SCM_GLOC_SET_VAL): New.
11778 (SCM_GLOC_VAL, SCM_GLOC_LOC): Reimplemented in terms of variables.
887dfa7d 11779
f3f9dcbc
MV
11780 * eval.c (scm_lookupcar, scm_lookupcar1): Deal with variables
11781 instead of with vcells. Do not overwrite `var' with the result of
11782 the lookup, use the new `real_var' instead. Remove `var2' in
11783 exchange (which was only used with threads).
11784 (sym_three_question_marks): New.
11785 (scm_unmemocar): Use `scm_module_reverse_lookup' instead of
11786 `SCM_GLOC_SYM'.
11787 (scm_lisp_nil, scm_lisp_t): Directly define as symbols.
11788 (scm_m_atfop): Expect the function definition to be a variable
11789 instead of a vcell.
11790 (scm_macroexp): Do not use `unmemocar', explicitely remember the
11791 symbol instead.
11792 (scm_unmemocopy): Removed thoughts about anti-macro interface.
11793 (scm_eval_args): Use more explicit code in the gloc branch of the
11794 atrocious struct ambiguity test. The optimizer will sort this
11795 out.
11796 (scm_deval_args): Likewise.
11797 (SCM_CEVAL): Likewise. Also, do not use unmemocar, explicitely
11798 remember the symbol instead. Added some comments where
11799 scm_tc3_cons_gloc really exclusively refers to structs.
11800 (scm_init_eval): Use scm_define to initialize "nil" and "t" to
11801 scm_lisp_nil and scm_lisp_t, respectively. Use scm_define instead
11802 of scm_sysintern in general.
11803
11804 * dynwind.c (scm_swap_bindings): Use SCM_GLOC_SET_VAL instead of
11805 explicit magic.
11806
11807 * debug.c (s_scm_make_gloc): Only allow proper variables, no
11808 pairs. Put the variable directly in the gloc.
11809 (s_scm_gloc_p): Use `scm_tc3_cons_gloc' instead of the magic `1'.
11810 (scm_init_debug): Use scm_c_define instead scm_sysintern.
11811
11812 * cpp_cnvt.awk: Emit "scm_c_define" instead of "scm_sysintern".
11813
11814 * backtrace.h, backtrace.c (scm_the_last_stack_fluid): Renamed to
11815 scm_the_last_stack_fluid_var. It now points to a variable instead
11816 of a vcell. Updated all uses.
11817 (scm_has_shown_backtrace_hint_p_var): Now points to a variable
11818 instead of a vcell. Updated all uses.
11819
11820 * _scm.h: Include "variables.h" and "modules.h" since almost
11821 everybody needs them now.
11822
11823 * root.h (scm_symhash, scm_symhash_vars): Removed.
11824 * gc.c (scm_init_storage): Do not initialize them.
887dfa7d 11825
7c33806a
DH
118262001-05-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
11827
11828 * eval.c (scm_init_eval): Initialize scm_undefineds and
58bee6a8 11829 scm_listofnull.
7c33806a
DH
11830
11831 * gc.c (scm_debug_newcell, scm_debug_newcell2): Fixed to behave
11832 like the SCM_NEWCELL macro counterparts.
11833
11834 (scm_init_storage, scm_init_gc): Moved initialization of
11835 scm_tc16_allocated from scm_init_gc to scm_init_storage.
11836
11837 (scm_init_storage): Moved initialization of scm_undefineds and
11838 scm_listofnull to eval.c, initializion of scm_nullstr to
11839 strings.c, initializion of scm_nullvect to vectors.c.
11840
11841 * gc.h (SCM_NEWCELL, SCM_NEWCELL2): Prefer SCM_NULLP over
11842 SCM_IMP, as in scm_debug_newcell and scm_debug_newcell2.
11843
11844 * init.c (scm_init_guile_1): Reordered some initializations and
11845 added dependcy information comments.
11846
11847 * load.c (scm_init_load): Use scm_nullstr.
11848
11849 * strings.c (scm_init_strings): Initialize scm_nullstr.
11850
11851 * vectors.c (scm_init_vectors): Initialize scm_nullvect.
11852
11bbab47
MV
118532001-05-15 Marius Vollmer <mvo@zagadka.ping.de>
11854
11855 * values.c (print_values): Print as a unreadable object, not as
9a5fa6e9 11856 multiple lines. Thanks to Matthias Köppe!
11bbab47 11857
5cd06d5e
DH
118582001-05-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
11859
11860 * deprecation.c: Fixed copyright date.
11861
11862 * deprecation.h (DEPRECATION_H, SCM_DEPRECATION_H): Renamed
11863 DEPRECATION_H to SCM_DEPRECATION_H.
11864
32bac999
TTN
118652001-05-10 Thien-Thi Nguyen <ttn@revel.glug.org>
11866
11867 * guile-doc-snarf.in: Update copyright.
11868 Fix relative path bug. Thanks to Sergey Poznyakoff.
11869
c9dcc5ae
MV
118702001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
11871
11872 * ports.c (scm_port_revealed, scm_set_port_revealed_x): Only
11873 accept open ports. Thanks to Quetzalcoatl Bradley!
11874
7c582ec9
MG
118752001-05-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11876
11877 * procs.c: Increased `scm_subr_table_room' to 800 because Guile now
11878 has 779 primitives on startup.
11879
284ab601
MV
118802001-05-09 Marius Vollmer <mvo@zagadka.ping.de>
11881
11882 * eval.c (scm_i_eval): Copy expression before passing it to
11883 SCM_XEVAL. The copy operation was removed unintendedly during my
11884 change on 2001-03-25.
11885
910d1e40
ML
118862001-05-09 Michael Livshin <mlivshin@bigfoot.com>
11887
9a5fa6e9 11888 from Matthias Köppe (thanks!):
910d1e40
ML
11889
11890 * ports.c (scm_c_read): pointer arithmetic on void pointers isn't
11891 portable.
11892
11893 * deprecation.c (s_scm_include_deprecated_features): ANSI'fied the
11894 docstring.
11895
56e55ac7
DH
118962001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
11897
11898 * gc.c (scm_init_gc): Added FIXME comment.
11899
11900 * hooks.c: Since hooks don't have a name any more, it is not
11901 necessary to include objprop.h.
11902
11903 (hook_print, scm_add_hook_x): Replace SCM_NFALSEP by !SCM_FALSEP.
11904
11905 (symbol_name, scm_make_hook_with_name): Removed.
11906
11907 (scm_create_hook): Don't set the hook's name property.
11908
11909 * hooks.h (HOOKSH, SCM_HOOKS_H): Renamed HOOKSH to SCM_HOOKS_H.
11910
11911 (SCM_HOOK_NAME, scm_make_hook_with_name): Removed.
11912
11913 * init.c (scm_init_guile_1): Hooks don't use objprops any more.
11914
11915 * numbers.c (SCM_FLOBUFLEN, FLOBUFLEN, scm_number_to_string,
11916 scm_print_real, scm_print_complex): Renamed SCM_FLOBUFLEN to
11917 FLOBUFLEN and define it unconditionally.
11918
d204b24c
MV
119192001-05-07 Marius Vollmer <mvo@zagadka.ping.de>
11920
438201b4
MV
11921 * gh_data.c (gh_lookup): Call gh_module_lookup with
11922 `scm_current_module ()', not `#f'.
11923 (gh_module_lookup): Expect a module instead of an obarray as first
11924 argument and do lookup in that module.
56e55ac7 11925
d204b24c
MV
11926 * ramap.c (raeql_1): Do not call scm_uniform_vector_length on
11927 arrays. The length of array is already determined differently and
11928 scm_uniform_vector_length does not work on arrays.
11929
26c1d549
MV
119302001-05-06 Marius Vollmer <mvo@zagadka.ping.de>
11931
fe7c2f88
MV
11932 * snarf.h (SCM_FUNC_CAST_ARBITRARY_ARGS): Use "SCM (*)()" for C++
11933 as well. "SCM (*)(...)" does not work on RedHat 7.1.
11934
26c1d549
MV
11935 * __scm.h (SCM_WTA_DISPATCH_0): Removed ARG and POS parameters,
11936 they are not used. Changed `wrong type' error into `wrong num
11937 args' error. Changed all callers.
56e55ac7 11938
26c1d549
MV
11939 * numbers.c (scm_difference): Call SCM_WTA_DISPATCH_0 when zero
11940 arguments are supplied.
11941
1c938eb8
TTN
119422001-05-05 Thien-Thi Nguyen <ttn@revel.glug.org>
11943
11944 * regex-posix.c (scm_regexp_exec): Expand docstring to briefly
11945 describe `regexp/notbol' and `regexp/noteol' execution flags.
11946
3a6379f7
TTN
11947 * strop.c (scm_substring_move_x): Doc fix; nfc.
11948
c10ecc4c
MV
119492001-05-05 Marius Vollmer <mvo@zagadka.ping.de>
11950
11951 * objects.c, objects.h (scm_valid_object_procedure_p): New.
11952 (scm_set_object_procedure_x): Use it to check argument. Fix
11953 docstring.
11954
11955 * evalext.c (scm_definedp): Fix docstring.
11956
a57a0b1e
GH
119572001-05-05 Gary Houston <ghouston@arglist.com>
11958
11959 * socket.c: use HAVE_IPV6 instead of AF_INET6 to enable IPv6
11960 support.
11961
7a095584
NJ
119622001-05-04 Neil Jerram <neil@ossau.uklinux.net>
11963
11964 * eval.c (scm_promise_p), list.c (scm_append_x, scm_reverse_x),
11965 symbols.c (scm_symbol_to_string), vports.c (scm_make_soft_port):
11966 Change R4RS references to R5RS.
11967
11968 * guile-snarf.awk.in: Fixes so that (i) blank lines in the
11969 docstring source are correctly reproduced in the output (ii)
11970 we don't anymore get occasional trailing quotes. Also reorganized
11971 and commented the code a little.
11972
11973 * scmsigs.c (scm_raise), throw.c (scm_throw): Docstring format
11974 fixes.
11975
dd2a6f3a
MG
119762001-05-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11977
11978 * strop.c (scm_string_split): New procedure.
11979
11980 * strop.h (scm_string_split): Added prototype.
11981
00120130
GH
119822001-05-04 Gary Houston <ghouston@arglist.com>
11983
11984 * socket.c: define uint32_t if netdb.h doesn't. thanks to
11985 Dale P. Smith.
11986
b65e6bfe
MV
119872001-05-02 Marius Vollmer <mvo@zagadka.ping.de>
11988
11989 * rw.c: Include "modules.h" and "strports.h".
11990
11991 * net_db.h (scm_gethost): Added prototype.
11992
11993 * deprecation.h, deprecation.c: New.
11994 * Makefile.am (libguile_la_SOURCES): Added "deprecation.c".
11995 (DOT_X_FILES): Added "deprecation.x".
11996 (modinclude_HEADERS): Added "deprecation.h".
11997
11998 * init.c: Include "deprecation.h".
11999 (scm_init_guile_1): Call scm_init_deprecation.
1c938eb8 12000
b65e6bfe
MV
120012001-05-01 Marius Vollmer <mvo@zagadka.ping.de>
12002
12003 * gh.h (gh_init_guile, gh_make_string, gh_string_length,
12004 gh_string_ref, gh_string_set_x, gh_substring, gh_string_append):
12005 New.
12006
b0e5fd8c
GH
120072001-04-29 Gary Houston <ghouston@arglist.com>
12008
12009 * rw.c: new file, implementing C part of module (ice-9 rw).
12010 (scm_read_string_x_partial): moved from ioext.c
12011 (scm_init_rw): new proc.
12012 * rw.h: new file.
12013 init.c: include rw.h and call scm_init_rw.
12014 Makefile.am: include rw.c and rw.h.
12015
0b2da99c
RB
120162001-04-28 Rob Browning <rlb@cs.utexas.edu>
12017
12018 * numbers.c: enabled local definition of SCM_FLOBUFLEN until we
12019 know what's supposed to happen to it.
12020
12021 * list.h (scm_list_star): deprecation expired - removed.
12022
12023 * numbers.h (scm_dblproc): deprecation expired - removed.
12024 (SCM_UNEGFIXABLE): deprecation expired - removed.
12025 (SCM_FLOBUFLEN): deprecation expired - removed.
12026 (SCM_INEXP): deprecation expired - removed.
12027 (SCM_CPLXP): deprecation expired - removed.
12028 (SCM_REAL): deprecation expired - removed.
12029 (SCM_IMAG): deprecation expired - removed.
12030 (SCM_REALPART): deprecation expired - removed.
12031 (scm_makdbl): deprecation expired - removed.
12032 (SCM_SINGP): deprecation expired - removed.
12033 (SCM_NUM2DBL): deprecation expired - removed.
12034 (SCM_NO_BIGDIG): deprecation expired - removed.
12035
12036 * tags.h (SCM_DOUBLE_CELLP): deprecation expired - removed.
12037 (scm_tc_dblr): deprecation expired - removed.
12038 (scm_tc_dblc): deprecation expired - removed.
12039 (scm_tc16_flo): deprecation expired - removed.
12040 (scm_tc_flo): deprecation expired - removed.
12041
12042 * tag.h (scm_tag): deprecation expired - removed.
12043
12044 * tag.c: (scm_tag): deprecation expired - removed.
12045
12046 * ioext.c: (scm_fseek): deprecation expired - removed.
12047
12048 * ioext.h (scm_fseek): deprecation expired - removed.
12049
12050 * gh_data.c (gh_int2scmb): deprecation expired - removed.
12051
12052 * gh.h (gh_int2scmb): deprecation expired - removed.
12053
e3334972
NJ
120542001-04-28 Neil Jerram <neil@ossau.uklinux.net>
12055
12056 * stacks.c (scm_make_stack): Fix typo in docstring.
12057
a0f979ac
RB
120582001-04-27 Rob Browning <rlb@cs.utexas.edu>
12059
12060 * error.c (scm_sysmissing): deprecation expired - removed.
12061
12062 * error.h (scm_sysmissing): deprecation expired - removed.
12063
12064 * gc.c
12065 (scm_init_gc): gc-thunk deprecation expired - removed.
12066 (scm_gc_vcell): deprecation expired - removed.
12067 (gc_async_thunk): scm_gc_vcell related code removed.
12068
12069 * vectors.h (SCM_NVECTORP): deprecation expired - removed.
12070
12071 * strings.h
12072 (SCM_NSTRINGP): deprecation expired - removed.
12073 (SCM_NRWSTRINGP): deprecation expired - removed.
12074
12075 * continuations.h (SCM_SETJMPBUF): deprecation expired - removed.
12076
12077 * chars.h
12078 (SCM_ICHRP): deprecation expired - removed.
12079 (SCM_ICHR): deprecation expired - removed.
12080 (SCM_MAKICHR): deprecation expired - removed.
12081
12082 * ports.h
12083 (SCM_INPORTP): deprecation expired - removed.
12084 (SCM_OUTPORTP): deprecation expired - removed.
12085
253081cf
MV
120862001-04-25 Marius Vollmer <mvo@zagadka.ping.de>
12087
12088 * modules.c (scm_module_type): New.
12089 (scm_post_boot_init_modules): Initialize from Scheme value.
12090 (the_module, scm_current_module, scm_init_modules): the_module is
12091 now a C only fluid.
12092 (scm_current_module): Export to Scheme.
12093 (scm_set_current_module): Do not call out to Scheme, do all the
12094 work in C. Export procedure to Scheme. Only accept modules, `#f'
12095 is no longer valid as the current module. Only set
12096 scm_top_level_lookup_closure_var and scm_system_transformer when
12097 they are not deprecated.
12098 (scm_module_transformer, scm_current_module_transformer): New.
12099
12100 * modules.h (scm_module_index_transformer, SCM_MODULE_TRANSFORMER,
12101 scm_current_module_transformer, scm_module_transformer): New.
1c938eb8 12102
253081cf
MV
12103 * gh_data.c: Removed FIXME comment about gh_lookup returning
12104 SCM_UNDEFINED. That's the right thing to do.
12105
12106 * eval.h, eval.c (scm_system_transformer): Deprecated by moving it
12107 into the conditionally compiled sections.
12108 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Use
12109 scm_current_module_transformer instead of scm_system_transformer.
12110 * init.c (start_stack): Move initialization of
12111 scm_system_transformer to the deprecated section.
1c938eb8 12112
1f7f9ed4
NJ
121132001-04-22 Neil Jerram <neil@ossau.uklinux.net>
12114
12115 * throw.c (scm_throw): Correct docstring.
12116
66c73b76
GH
121172001-04-22 Gary Houston <ghouston@arglist.com>
12118
eefae538
GH
12119 * socket.c: attempted to improve the docstrings slightly.
12120
66c73b76
GH
12121 * net_db.c: remove bogus "close" declaration.
12122 (inet_aton declaration, scm_inet_aton, scm_inet_ntoa,
12123 scm_inet_netof, scm_lnaof, scm_inet_makeaddr, INADDR_ANY etc.):
12124 moved to socket.c.
12125 * net_db.h: declarations moved too.
12126
12127 * socket.c (scm_htonl, scm_ntohl): use uint32_t instead of unsigned
12128 long.
12129 (ipv6_net_to_num, ipv6_num_to_net): new static procedures.
12130 (VALIDATE_INET6): new macro.
12131 (scm_inet_pton, scm_inet_ntop): new procedures, implementing
12132 inet-pton and inet-ntop.
12133 (scm_fill_sockaddr): use VALIDATE_INET6 and ipv6_num_to_net.
12134 (scm_addr_vector): use ipv6_net_to_num.
1c938eb8 12135
7a7f7c53
DH
121362001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
12137
12138 * eq.c (scm_equal_p), ramap.c (scm_init_ramap): Don't compute the
12139 smob number explicitly. Use SCM_TC2SMOBNUM instead.
12140
12141 * gc.c (MARK, scm_gc_sweep): Only check for illegal heap objects
12142 when compiled in debug mode.
12143
12144 (scm_gc_sweep): Only call smob's free function if it is defined.
12145
12146 * print.c (scm_iprin1): No need to check for validity of smob
12147 type or existence of print function.
12148
12149 * smob.[ch] (scm_smobs): Made into a fixed size global array.
12150 Resizing will not work well with preemptive threading.
12151
12152 * smob.c (scm_smob_print): Don't use SCM_CDR to access smob data.
12153
12154 (scm_make_smob_type): Extracted initialization of smob
12155 descriptors to scm_smob_prehistory. Don't use scm_numsmob outside
12156 of the critical section.
12157
12158 (scm_smob_prehistory): Initialize all smob descriptors. By
12159 default, don't assign a smob free function: Most smob types don't
12160 need one.
12161
12162 * smob.h (SMOBH, SCM_SMOB_H): Renamed SMOBH to SCM_SMOB_H.
12163
e1368a8d
GH
121642001-04-21 Gary Houston <ghouston@arglist.com>
12165
12166 * socket.c (FLIP_NET_HOST_128): new macro.
12167 (scm_fill_sockaddr): use new macro.
12168 (scm_addr_vector): completed IPv6 address support. added const
12169 to the address parameter.
12170
5a525b84
GH
121712001-04-20 Gary Houston <ghouston@arglist.com>
12172
12173 * socket.c (scm_fill_sockaddr): call htons for sin6_port.
12174 Don't assign sin6_scope_id in structure unless HAVE_SIN6_SCOPE_ID
12175 is defined.
12176 (scm_addr_vector): use a switch instead of multiple if statements.
12177 Add support for IPv6 (incomplete) .
e1368a8d 12178 MAX_ADDR_SIZE: increase to size of struct sockaddr_in6 if needed.
5a525b84 12179
1a551638
DH
121802001-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
12181
12182 * struct.c (scm_free_structs): Only pairs may be accessed with
12183 SCM_C[AD]R.
12184
c07b3fef
MD
121852001-04-19 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12186
a9d861e3
MD
12187 * unif.h (SCM_ARRAY_CONTIGUOUS): Reintroduced as deprecated.
12188
c07b3fef
MD
12189 * __scm.h (SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
12190 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Inserted required
12191 parentheses in order to get the correct associativity.
12192
af7546eb
DH
121932001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12194
12195 * unif.c (scm_array_to_list): Added missing handling of arrays of
12196 bytes. Thanks to Masao Uebayashi for the bug report.
12197
4daecfee
DH
121982001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12199
12200 * debug.c (scm_procedure_source): Use SCM_CLOSURE_FORMALS more
12201 consistently.
12202
726d810a
DH
122032001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12204
12205 * procs.h (SCM_CLOSURE_FORMALS): New macro.
12206
12207 * debug.c (scm_procedure_source), eval.c (scm_badformalsp,
12208 SCM_CEVAL, SCM_APPLY), goops.c (get_slot_value, set_slot_value),
1c938eb8 12209 procprop.c (scm_i_procedure_arity), sort.c (closureless): Use
726d810a
DH
12210 SCM_CLOSURE_FORMALS.
12211
12212 * eval.c (scm_badformalsp, SCM_CEVAL), procprop.c
12213 (scm_i_procedure_arity): Prefer stronger predicates like
12214 SCM_NULLP or SCM_FALSEP over SCM_IMP.
12215
12216 * macros.c (macro_print): Extracted macro printing code from
12217 print.c and simplified it.
12218
12219 (scm_macro_type): Use SCM_MACRO_TYPE;
12220
12221 (scm_init_macros): Use macro_print for printing macros.
12222
12223 * print.c (scm_print_opts): Improved option documentation.
12224
12225 (scm_iprin1): Extracted printing of macros to macros.c.
12226 Simplified printing of ordinary closures.
12227
12228 * procs.c (scm_thunk_p): Fixed handling of closures. Thanks to
12229 Martin Grabmueller for the bug report.
12230
e038c042
DH
122312001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12232
12233 This patch eliminates some further applications of SCM_C[AD]R to
12234 non pair cells.
12235
12236 * gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR): Deprecated. These have
12237 never been applied to real pairs.
12238
12239 * srcprop.h (SCM_SOURCE_PROPERTY_FLAG_BREAK): Added.
12240
12241 (SRCPROPBRK): Use SCM_SOURCE_PROPERTY_FLAG_BREAK.
12242
12243 * unif.h (SCM_ARRAY_CONTIGUOUS, SCM_ARRAY_FLAG_CONTIGUOUS,
12244 SCM_ARRAY_CONTP): Renamed SCM_ARRAY_CONTIGUOUS to
12245 SCM_ARRAY_FLAG_CONTIGUOUS and use it.
12246
12247 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
12248 Added.
12249
12250 * srcprop.h (SRCPROPH), unif.h (UNIFH): Renamed to
12251 SCM_SOURCE_PROPERTIES_H and SCM_UNIFORM_VECTORS_H, respectively.
12252
12253 * srcprop.h (SETSRCPROPBRK, CLEARSRCPROPBRK), unif.c
12254 (scm_dimensions_to_uniform_array, scm_ra_set_contp): Don't use
12255 SCM_SET{AND,OR}_CAR.
12256
3453619b
GH
122572001-04-17 Gary Houston <ghouston@arglist.com>
12258
12259 * some initial support for IPv6:
1c938eb8 12260
3453619b
GH
12261 * socket.c (scm_fill_sockaddr): improve the argument validation.
12262 don't allocate memory until all args are checked. instead of
12263 unconditional memset of soka, try setting sin_len to 0 if
12264 SIN_LEN is defined. add support for AF_INET6. define FUNC_NAME.
12265 (scm_socket, scm_connect): extend docstrings for IPv6.
12266 (scm_init_socket): intern AF_INET6 and PF_INET6.
12267
216eedfc
DH
122682001-04-17 Niibe Yutaka <gniibe@m17n.org>
12269
12270 * srcprop.c (scm_make_srcprops): Added SCM_ALLOW_INTS which
12271 matches SCM_DEFER_INTS at the beginning of the function.
12272
12273 * mallocs.c (scm_malloc_obj): Remove un-matched SCM_ALLOW_INTS.
12274
12275 * gc.c (scm_igc): Unconditionally call
12276 SCM_CRITICAL_SECTION_START/END.
12277
12278 * fluids.c (next_fluid_num): Unconditionally call
12279 SCM_CRITICAL_SECTION_START/END.
12280 (s_scm_make_fluid): Remove un-matched SCM_DEFER_INTS.
12281
12282 * coop-defs.h (SCM_THREAD_DEFER, SCM_THREAD_ALLOW,
12283 SCM_THREAD_REDEFER, SCM_THREAD_REALLOW_1, SCM_THREAD_REALLOW_2):
12284 Removed.
12285
12286 * __scm.h (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END):
12287 Defined as nothing for the case of !defined(USE_THREADS).
12288 (SCM_THREAD_DEFER, SCM_THREAD_ALLOW, SCM_THREAD_REDEFER):
12289 Removed.
12290 (<stdio.h>): Include when (SCM_DEBUG_INTERRUPTS == 1).
12291 (SCM_CHECK_NOT_DISABLED, SCM_CHECK_NOT_ENABLED): Print FILE and
12292 LINE.
12293 (SCM_DEFER_INTS, SCM_ALLOW_INTS_ONLY, SCM_ALLOW_INTS,
12294 SCM_REDEFER_INTS, SCM_REALLOW_INTS): Don't use
12295 SCM_THREAD_DEFER/SCM_THREAD_ALLOW. Instead, use
12296 SCM_CRITICAL_SECTION_START/END.
12297 (SCM_REALLOW_INTS: Bug fix. Don't call
12298 SCM_THREAD_SWITCHING_CODE.
12299 (SCM_TICK): Don't use SCM_DEFER_INTS/SCM_ALLOW_INTS. Instead, use
12300 SCM_THREAD_SWITCHING_CODE directly.
12301 (SCM_ENTER_A_SECTION): Unconditionally use
12302 SCM_CRITICAL_SECTION_START/END. (was:
12303 SCM_DEFER_INTS/SCM_ALLOW_INTS when SCM_POSIX_THREADS defined).
12304
123052001-04-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12306
12307 * __scm.h (SCM_CAREFUL_INTS, SCM_DEBUG_INTERRUPTS): Replaced the
12308 macro SCM_CAREFUL_INTS by the macro SCM_DEBUG_INTERRUPTS and
12309 allowed to explicitly set this macro via the CFLAGS variable
12310 during make.
12311
12312 * fluids.c (next_fluid_num), gc.c (scm_igc), coop-defs.h
12313 (SCM_THREAD_CRITICAL_SECTION_START,
12314 SCM_THREAD_CRITICAL_SECTION_END): Renamed
12315 SCM_THREAD_CRITICAL_SECTION_START/END to
12316 SCM_CRITICAL_SECTION_START/END.
12317
f22ed5a0
KN
123182001-04-11 Keisuke Nishida <kxn30@po.cwru.edu>
12319
12320 * debug-malloc.c (grow, scm_debug_malloc_prehistory): Use memset
12321 instead of bzero.
1c938eb8 12322
f22ed5a0 12323 * coop.c, iselect.c (FD_ZERO_N): Unconditionally use memset.
1c938eb8 12324 (MISSING_BZERO_DECL): Remove the declaration.
f22ed5a0
KN
12325
12326 Thanks to NIIBE Yutaka.
12327
508ded1c
MD
123282001-04-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12329
a087ba81
MD
12330 * init.c, goops.c, goops.h: Reverted change of 2001-03-29. (The
12331 goops module should be registered in order to work for an
12332 application which uses libguile statically linked.)
508ded1c 12333
e4b265d8
DH
123342001-04-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
12335
12336 * numbers.[ch] (scm_num2long, scm_num2long_long,
12337 scm_num2ulong_long, scm_num2ulong): Argument position is an
12338 unsigned integer.
12339
12340 * environments.c (eval_environment_folder,
12341 import_environment_folder), gh_data.c (gh_scm2longs,
12342 gh_scm2floats, gh_scm2doubles): Distinguish between 0 and NULL
12343 for integers and pointers, respectively.
12344
12345 * gh_data.c (gh_scm2ulong, gh_scm2long, gh_scm2int), socket.c
12346 (scm_fill_sockaddr), unif.c (scm_array_set_x), validate.h
12347 (SCM_NUM2ULONG, SCM_NUM2LONG, SCM_NUM2LONG_DEF,
12348 SCM_NUM2LONG_LONG): Don't pass argument positions as pointers.
12349
12350 * filesys.c (scm_open_fdes, scm_open), net_db (scm_inet_ntoa,
12351 scm_inet_netof, scm_lnaof, scm_gethost, scm_getproto), posix.c
12352 (scm_utime), ramap.c (scm_array_fill_int), scmsigs.c
12353 (scm_sigaction), socket.c (scm_htonl, scm_ntohl, scm_sendto),
12354 stime.c (scm_localtime, scm_gmtime), struct.c (scm_struct_set_x),
12355 validate.h (SCM_VALIDATE_LONG_COPY): Whitespace fixes.
12356
89d04205
NJ
123572001-04-09 Neil Jerram <neil@ossau.uklinux.net>
12358
12359 * strings.c (scm_read_only_string_p): Update docstring to reflect
12360 current (non-)usage of "read only" strings.
40f83c3e
NJ
12361 (scm_make_shared_substring): Clarify docstring by changing
12362 "semantics" to "arguments".
89d04205 12363
4d66be54
MG
123642001-04-06 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12365
12366 * hooks.c (scm_make_hook, scm_make_hook_with_name),
12367 (scm_hook_p, scm_hook_empty_p, scm_run_hook): Docstring
12368 improvements.
12369
1e6808ea
MG
123702001-04-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12371
12372 The following changes make the documentation more consistent.
1c938eb8 12373
1e6808ea
MG
12374 * rdelim.c (scm_write_line), posix.c (scm_utime), ports.c
12375 (scm_seek), net_db.c (scm_inet_aton, scm_inet_ntoa),
12376 (scm_inet_netof, scm_lnaof, scm_inet_makeaddr), ioext.c
12377 (scm_ftell): Changed @smalllisp ... @end smalllisp to @lisp
12378 ... @end lisp.
12379
12380 * vports.c (scm_make_soft_port), version.c (scm_version), unif.c
12381 (scm_array_dimensions, scm_make_shared_array),
12382 (scm_transpose_array, scm_enclose_array, scm_bit_count_star),
12383 throw.c (scm_catch), struct.c (scm_make_vtable_vtable), strop.c
12384 (scm_string_rindex, scm_string_index, scm_substring_fill_x),
12385 (scm_string_null_p), strings.c (scm_read_only_string_p), root.c
12386 (scm_call_with_dynamic_root), ramap.c (scm_array_index_map_x),
12387 posix.c (scm_mknod), numbers.c (scm_logtest, scm_logbit_p),
12388 macros.c (scm_makmmacro), list.c (scm_append), environments.c
12389 (scm_environment_fold), dynwind.c (s_scm_dynamic_wind): Changed
12390 @example ... @end example to @lisp ... @end lisp.
12391
12392 * weaks.c (scm_weak_vector): Corrected docstring.
12393
12394 * hashtab.c (scm_hashq_ref, scm_hashq_set_x, scm_hashq_remove_x),
12395 (scm_hashv_ref, scm_hashv_set_x, scm_hashv_remove_x),
12396 (scm_hash_ref, scm_hash_set_x, scm_hash_remove_x, scm_hashx_ref),
12397 (scm_hashx_set_x, scm_hashx_get_handle),
12398 (scm_hashx_create_handle_x), regex-posix.c (scm_make_regexp),
12399 (scm_regexp_exec, scm_regexp_p), numbers.c (scm_logtest),
12400 vectors.c (scm_vector_fill_x), strings.c
12401 (scm_make_shared_substring), symbols.c (scm_string_to_symbol),
12402 objprop.c (scm_set_object_properties_x):
12403 (scm_set_object_property_x), throw.c (scm_catch, scm_lazy_catch),
12404 strports.c (scm_call_with_input_string), ports.c
12405 (scm_truncate_file), ioext.c (scm_ftell), ports.c (scm_seek),
12406 list.c (scm_append_x), dynwind.c (scm_dynamic_wind), error.c
12407 (scm_error_scm), vports.c (scm_make_soft_port), weaks.c
12408 (scm_make_weak_vector,scm_weak_vector_p),
12409 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table),
12410 (scm_make_doubly_weak_hash_table, scm_weak_key_hash_table_p),
12411 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
12412 macros.c (scm_macro_type), dynl.c (scm_dynamic_link),
12413 (scm_dynamic_unlink, scm_dynamic_call, scm_dynamic_args_call):
12414 Made parameter names match documentation by renaming parameters
12415 and/or fixing docstrings.
1c938eb8 12416
1e6808ea
MG
12417 * numbers.c (scm_ash): Corrected Texinfo markup.
12418
12419 * strop.c (scm_string_index, scm_string_rindex),
12420 (scm_substring_fill_x, scm_string_null_p): Removed `qdocs'.
12421
12422 * vports.c (scm_make_soft_port), unif.c
12423 (scm_uniform_vector_length, scm_array_p, scm_array_rank),
12424 (scm_dimensions_to_uniform_array, scm_transpose_array),
12425 (scm_array_in_bounds_p, scm_uniform_vector_ref),
12426 (scm_bit_count, scm_bit_position, scm_bit_count_star),
12427 (scm_array_to_list, scm_list_to_uniform_array),
12428 (scm_array_prototype, symbols.c (scm_string_to_symbol), strports.c
12429 (scm_open_input_string, scm_open_output_string),
12430 (scm_get_output_string), strop.c (scm_string_copy),
12431 (scm_string_fill_x), strings.c (scm_string_p, scm_string), stime.c
12432 (scm_get_internal_real_time, scm_times),
12433 (scm_get_internal_run_time, scm_current_time, scm_gettimeofday),
12434 (scm_localtime, scm_gmtime), socket.c (scm_htons, scm_ntohs),
12435 (scm_htonl, scm_ntohl, scm_socket, scm_socketpair),
12436 (scm_getsockopt, scm_getsockname, scm_getpeername, scm_recvfrom),
12437 simpos.c (scm_system), random.c (scm_random_uniform),
12438 (scm_random_normal, scm_random_exp), ramap.c
12439 (scm_array_equal_p), posix.c (scm_pipe, scm_getgroups),
12440 (scm_status_exit_val, scm_status_term_sig, scm_status_stop_sig),
12441 (scm_getppid, scm_getuid, scm_getgid, scm_geteuid, scm_getegid),
12442 (scm_getpgrp, scm_ttyname, scm_ctermid, scm_tcgetpgrp, scm_uname),
12443 (scm_environ, scm_tmpnam, scm_mkstemp, scm_access, scm_getpid),
12444 (scm_setlocale), ports.c (scm_char_ready_p, scm_drain_input),
12445 (scm_pt_size, scm_pt_member, scm_port_revealed, scm_port_mode),
12446 (scm_close_port, scm_input_port_p, scm_output_port_p, scm_port_p),
12447 (scm_port_closed_p, scm_eof_object_p, scm_read_char),
12448 (scm_peek_char), pairs.c (scm_pair_p, scm_cons), numbers.c
12449 (scm_logand, scm_logior, scm_logxor, scm_lognot),
12450 (scm_integer_expt, scm_bit_extract, scm_logcount),
12451 (scm_integer_length, scm_string_to_number, scm_inexact_to_exact),
12452 net_db.c (scm_inet_netof, scm_lnaof), modules.c
12453 (scm_interaction_environment), macros.c (scm_makacro),
12454 (scm_makmacro, scm_makmmacro), keywords.c (scm_keyword_p), ioext.c
12455 (scm_ftell, scm_dup_to_fdes, scm_fileno, scm_isatty_p),
12456 (scm_fdopen, scm_fdes_to_ports), gc.c (scm_gc_stats), fluids.c
12457 (scm_fluid_ref), filesys.c (scm_open_fdes),
12458 (scm_stat, scm_directory_stream_p, scm_getcwd, scm_readlink):
12459 Docstring correction: `Returns' -> `Return'
12460
1c938eb8
TTN
12461 * gc.c (scm_set_debug_cell_accesses_x):
12462 (s_scm_gc_set_debug_check_freelist_x):
1e6808ea
MG
12463 * fluids.c (scm_fluid_p): Added texinfo markup.
12464
12465 * error.c (scm_strerror): Made docstring more precise.
12466
12467 * vectors.c (scm_vector_p, scm_vector, scm_make_vector),
12468 (scm_vector_to_list, _scm_vector_fill_x), symbols.c
12469 (scm_symbol_p, scm_symbol_to_string), strorder.c
12470 (scm_string_equal_p, scm_string_ci_equal_p, scm_string_less_p),
12471 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p),
12472 (scm_string_ci_less_p, scm_string_ci_leq_p, scm_string_ci_gr_p):
12473 (scm_string_ci_geq_p), strop.c (scm_string_copy),
12474 (scm_string_fill_x): Removed `(r5rs)' from docstrings.
12475
9a6976cd
DH
124762001-04-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
12477
12478 * gc.c (MARK): Re-introduce a cheap sanity test for non debug
12479 mode, as suggested by Michael Livshin.
12480
463b2219
ML
124812001-03-31 Michael Livshin <mlivshin@bigfoot.com>
12482
12483 * backtrace.c (display_backtrace_body): since the `print_state'
12484 variable is not used (instead its data field is used directly as
12485 `pstate'), protect it from the hungry compiler optimizations.
12486 thanks to Bill Schottstaedt for the report.
12487
61045190
DH
124882001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
12489
12490 * gc.[ch] (scm_tc16_allocated): New type tag for allocated cells.
12491 It is only defined and used if guile is compiled with
12492 SCM_DEBUG_CELL_ACCESSES set to true. It's purpose is, to never
12493 let cells with a free_cell type tag be visible outside of the
12494 garbage collector when in debug mode.
12495
12496 * gc.c (scm_debug_cell_accesses_p): Set to true as default.
12497
12498 (scm_assert_cell_valid): Use a local static variable to avoid
12499 recursion.
12500
12501 (MARK): Only check for rogue cell pointers in debug mode. Use
12502 scm_cellp for this purpose and place all checks for rogue pointers
12503 into that function. Further, since due to conservative scanning
12504 we may encounter free cells during marking, don't use the standard
12505 cell type accessor macro to determine the cell type.
12506
12507 (scm_cellp): Check if the cell pointer actually points into a
12508 card header.
12509
12510 (scm_init_gc): Initalize scm_tc16_allocated.
12511
12512 * gc.h (GCH): Renamed to SCM_GC_H.
12513
12514 (SCM_VALIDATE_CELL): Enclose the expression in brackets. This
12515 might be unnecessary, but I feel better this way :-)
12516
12517 (SCM_GC_CELL_TYPE): New macro.
12518
12519 (SCM_SETAND_CDR, SCM_SETOR_CDR): Deprecated. These are not used
12520 in guile, and it is unlikely that they will be applied to real
12521 pairs anyway.
12522
12523 (SCM_SET_FREE_CELL_TYPE): Removed. It was not used.
12524
12525 (SCM_GC_SET_ALLOCATED): New macro. Only non-empty if guile is
12526 compiled with SCM_DEBUG_CELL_ACCESSES set to true.
12527
12528 (SCM_NEWCELL, SCM_NEWCELL2): Use of SCM_GC_SET_ALLOCATED will
12529 make sure that in debug mode no free cell will ever be visible
12530 outside of the garbage collector.
12531
85d6df6a
DH
125322001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
12533
12534 * async.c (scm_asyncs_pending): Don't use != to compare SCM
12535 values.
12536
12537 * async.c (scm_system_async), variable.c (scm_make_variable,
12538 scm_make_undefined_variable): Use scm_cons to create a pair.
12539
12540 * debug.c (scm_reverse_lookup): Perform proper type checking.
12541 Remove suspicious use of SCM_SLOPPY_CONSP.
12542
12543 * eq.c (scm_equal_p), tags.h (SCM_ECONSP): Use SCM_CONSP instead
12544 of SCM_SLOPPY_CONSP. A sane compiler should be able to perform
12545 the corresponding optimization.
12546
12547 * eval.c (iqq): Use proper type check.
12548
12549 (scm_m_expand_body): Remove redundant type checks.
12550
12551 (promise_print): Don't access promise cells as pairs.
12552
12553 * eval.c (EVALCAR, iqq, scm_m_expand_body, scm_eval_args,
12554 scm_deval_args SCM_CEVAL), guardians.c (scm_guard), hashtab.c
12555 (scm_internal_hash_fold), print.c (scm_iprlist): Use !SCM_CELLP
12556 for SCM_NCELLP, !SCM_CONSP for SCM_NCONSP, !SCM_IMP for SCM_NIMP,
12557 !SCM_FALSEP for SCM_NFALSEP, !SCM_NULLP for SCM_NNULLP
12558
12559 * eval.c (scm_m_define, scm_macroexp, SCM_CEVAL), print.c
12560 (scm_iprin1): Use new macro predicate and accessors.
12561
12562 * eval.h (scm_tc16_macro): Removed declaration. It is declared
12563 in macros.h.
12564
12565 * eval.h (EVALH), macros.h (MACROSH), ports.h (PORTSH), procs.h
12566 (PROCSH), tags.h (TAGSH), variable.h (VARIABLEH): Renamed to
12567 SCM_EVAL_H, SCM_MACROS_H, SCM_PORTS_H, SCM_PROCS_H, SCM_TAGS_H and
12568 SCM_VARIABLE_H. Even the macros that are used to inhibit
12569 including a header file twice should be in the SCM_ namespace.
12570
12571 * fluids.c (scm_swap_fluids, scm_swap_fluids_reverse),
12572 properties.c (scm_primitive_property_ref,
12573 scm_primitive_property_del_x): Prefer stronger predicates like
12574 SCM_NULLP or SCM_FALSEP over SCM_IMP.
12575
12576 * gc.c (MARK): Use proper macros to access procedure-with-setter
12577 cell elements and closure cell elements.
12578
12579 (gc_sweep_freelist_finish, scm_gc_sweep, init_heap_seg): Don't
12580 access free cells as pairs.
12581
12582 (scm_unprotect_object): scm_hashq_get_handle returns #f if
12583 no hashtab entry is found.
12584
12585 * gc.c (scm_gc_sweep), ports.c (scm_close_port): Use new macro
12586 SCM_CLR_PORT_OPEN_FLAG.
12587
12588 * guardians.c (TCONC_IN), print.c (scm_free_print_state): Don't
12589 use SCM_SET_C[AD]R for uninitialized cells.
12590
12591 * hashtab.c (scm_hash_fn_get_handle): Use SCM_VALIDATE_VECTOR.
12592 If the hashtable has no slots, return #f instead of '(). This
12593 unifies the return value with most assoc-functions.
12594
12595 (scm_hash_fn_ref): Use proper type check.
12596
12597 (scm_hashq_get_handle, scm_hashv_get_handle, scm_hash_get_handle):
12598 Removed references to non-existing functions from documentation.
12599
12600 * keywords.c (scm_keyword_dash_symbol): Use proper macros to
12601 access keyword cell elements.
12602
12603 * macros.h (SCM_MACROP, SCM_MACRO_TYPE, SCM_MACRO_CODE): New
12604 macros.
12605
12606 * ports.h (SCM_CLR_PORT_OPEN_FLAG): New macro.
12607
12608 * print.c (scm_iprlist): Added comment. Improved loop
12609 conditions.
12610
12611 * procs.h (SCM_ENV, SCM_SETENV): Don't access closure cells as
12612 pairs.
12613
12614 * smob.c (scm_markcdr): Don't access smob cells as pairs.
12615
12616 * tags.h (SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP): Deprecated.
12617
12618 * throw.c (ACTIVATEJB, DEACTIVATEJB): Don't access jump buffer
12619 cells as pairs.
12620
12621 * variable.c (variable_print, variable_equalp, scm_variable_ref,
12622 scm_variable_set_x): Use proper macros to access variable cell
12623 elements.
12624
12625 (scm_variable_bound_p): Don't use SCM_NEGATE_BOOL.
12626
12627 * variable.h (SCM_VARVCELL): Don't access variable cells as
12628 pairs.
12629
12630 * vectors.c (scm_vector), weaks.c (scm_weak_vector): Simplified,
12631 added FIXME comment, removed register specifier.
12632
1b27e91a
KN
126332001-03-29 Keisuke Nishida <kxn30@po.cwru.edu>
12634
12635 * goops.c, goops.h (scm_init_oop_goops_goopscore_module): Deprecated.
12636 * init.c (scm_init_guile_1): Don't init goopscore module.
12637
16c634ec
MV
126382001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
12639
12640 * eval.c (SCM_APPLY): Check that arg1 is bound for scm_tc7_cxr.
12641
91344ceb
MG
126422001-03-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12643
12644 * strop.c (scm_string_to_list): Fixed docstring markup.
12645 (scm_string_upcase_x, scm_string_upcase, scm_string_downcase_x),
12646 (scm_string_downcase, scm_string_capitalize_x),
12647 (scm_string_capitalize): Rewrote and corrected docstrings.
12648 (scm_string_ci_to_symbol): Made docstring more explicit.
12649
07576812
MV
126502001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
12651
12652 * values.h (scm_values_vtable, SCM_VALUESP): Moved here so that
12653 eval.c can use it.
12654 (scm_call_with_values): Removed.
12655 * values.c (values_vtable, scm_values_vtable): Added "scm_" prefix
12656 so that it can be exported.
12657 (scm_call_with_values): Removed.
1c938eb8 12658
07576812
MV
12659 * tags.h (SCM_IM_CALL_WITH_VALUES): New isym.
12660 * eval.c: Include "libguile/values.h"
12661 (scm_m_at_call_with_values, scm_sym_at_call_with_values):
12662 New.
12663 (unmemocopy, scm_ceval, scm_deval): Handle new isym.
12664 * eval.h (scm_sym_at_call_with_values, scm_m_at_call_with_values):
12665 New delcarations to support above change.
12666
12667 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Fix syntax
12668 errors with last change.
1c938eb8 12669
07576812
MV
126702001-03-25 Marius Vollmer <mvo@zagadka.ping.de>
12671
12672 * eval.c (scm_primitive_eval_x, scm_primitive_eval, scm_i_eval_x,
12673 scm_i_eval): Moved the application of the system transformer from
12674 scm_i_eval to scm_primitive_eval.
12675
a17bb5fd
NJ
126762001-03-23 Neil Jerram <neil@ossau.uklinux.net>
12677
a6be01a4
NJ
12678 * guile-snarf.awk.in: Substitute "\\" with "\" in .doc output.
12679
a17bb5fd
NJ
12680 * strop.c (scm_string_index): Fix docstring line break
12681 regression.
12682
12683 * list.c (scm_cons_star): Fix docstring typo.
12684
be54b15d
DH
126852001-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
12686
12687 * gc.c (scm_init_storage), gdbint.c (scm_init_gdbint), numbers.c
12688 (big2str), ports.c (scm_drain_input), read.c (scm_read,
12689 scm_grow_tok_buf), strings.c (scm_string, scm_makfromstr,
12690 scm_make_string, scm_string_append), strports.c (st_resize_port,
12691 scm_object_to_string), unif.c (scm_make_uve): Replace calls to
12692 scm_makstr with calls to scm_allocate_string.
12693
12694 * strings.[ch] (scm_allocate_string): New function.
12695
12696 * strings.[ch] (scm_makstr): Deprecated.
12697
789ecc05
GH
126982001-03-18 Gary Houston <ghouston@arglist.com>
12699
6d163216
GH
12700 * posix.c (scm_tmpnam): check that return value from tmpnam is not
12701 NULL. rewrote the docstring.
12702 (scm_mkstemp): new procedure implementing "mkstemp!".
12703 * posix.h: declare scm_mkstemp.
12704
789ecc05
GH
12705 * net_db.c: declare h_errno if configure didn't define HAVE_H_ERRNO.
12706 normally it would be found in netdb.h.
12707
c6c79933
GH
127082001-03-17 Gary Houston <ghouston@arglist.com>
12709
e9e225e5
GH
12710 * sort.c (scm_sort): move sortvec variable to avoid a compiler
12711 warning when HAVE_ARRAYS is not defined. move len too.
12712
12713 * Makefile.am (DOT_X_FILES): remove net_db.x, posix.x, socket.x.
12714 (EXTRA_DOT_X_FILES): let configure set the value.
12715 (DOT_DOC_FILES): remove net_db.doc, posix.doc, socket.doc.
12716
c6c79933
GH
12717 * gc.c (scm_must_malloc): changed the comment explaining when
12718 scm_must variants of malloc/free etc., should be used, based on
12719 explanation from Dirk Herrmann.
12720 * fports.c (scm_fport_buffer_add): use FUNC_NAME instead of a local
12721 string with procedure name. use scm_must_malloc instead of malloc.
12722 (scm_setvbuf, scm_fdes_to_port, fport_close): use scm_must variants
12723 of malloc/free.
12724 * ports.c (scm_add_to_port_table, scm_remove_from_port_table,
12725 scm_ungetc): use scm_must variants of malloc/realloc/free.
12726 (scm_add_to_port_table, scm_ungetc): define FUNC_NAME.
12727
b3fcac34
DH
127282001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12729
12730 * __scm.h (SCM_ASSERT, SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
12731 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Don't call scm_wta, call
12732 scm_wrong_type_arg instead.
12733
12734 (SCM_WNA): Deprecated.
12735
12736 * error.[ch] (scm_wta): Deprecated.
12737
12738 * numbers.c (s_i_log): Minor comment fix.
12739
12740 * read.c (scm_lreadr), unif.c (scm_aind, scm_shap2ra,
12741 scm_make_shared_array, scm_transpose_array, scm_enclose_array,
12742 scm_array_in_bounds_p): Don't use SCM_ASSERT to check for
12743 wrong-num-args or misc errors.
12744
12745 * unif.c (scm_make_shared_array, scm_transpose_array,
12746 scm_enclose_array, scm_array_in_bounds_p, scm_array_set_x):
12747 Validate the rest argument (note: this is only done when guile is
12748 built with SCM_DEBUG_REST_ARGUMENT=1)
12749
12750 (scm_array_in_bounds_p, scm_uniform_vector_ref, scm_array_set_x):
12751 Replace calls to scm_wrong_num_args by SCM_WRONG_NUM_ARGS.
12752
12753 * validate.h (SCM_FUNC_NAME, SCM_VALIDATE_NUMBER_COPY,
12754 SCM_VALIDATE_NUMBER_DEF_COPY): Deprecated.
12755
68baa7e7
DH
127562001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12757
12758 * validate.h (SCM_WRONG_NUM_ARGS): Call scm_error_num_args_subr
12759 instead of scm_wrong_num_args.
12760
12761 * coop-threads.c: Don't include libguile/strings.h. (Was only
12762 needed for former implementation of SCM_WRONG_NUM_ARGS.)
12763
12764 * debug.c (scm_m_start_stack): Don't use SCM_ASSERT to check for
12765 wrong-num-args errors.
12766
9f40cd87
DH
127672001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12768
12769 * error.[ch] (scm_error_num_args_subr): New function.
12770
5352393c
MG
127712001-03-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12772
12773 * list.c (scm_list, scm_cons_star, scm_null_p, scm_list_p),
12774 (scm_length, scm_append, scm_reverse, scm_list_ref),
12775 (scm_memq, scm_memv, scm_member, scm_delv_x, scm_delete_x),
12776 (scm_delq, scm_delv, scm_delete, scm_delq1_x, scm_delv1_x),
12777 (scm_delete1_x), gc.c (scm_map_free_list),
12778 (scm_free_list_length), hash.c (scm_hashq, scm_hashv),
12779 (scm_hash), hashtab.c (scm_hashq_ref, scm_hashq_set_x),
12780 (scm_hashq_remove_x, scm_hashv_ref, scm_hashv_set_x),
12781 (scm_hashv_remove_x, scm_hash_ref, scm_hash_set_x),
12782 (scm_hash_remove_x), ports.c (scm_pt_size, scm_pt_member), print.c
12783 (scm_current_pstate), scmsigs.c (scm_usleep), goops.c
12784 (scm_get_keyword, scm_sys_compute_slots): Added texinfo markup.
12785
12786 * weaks.c (scm_weak_vector_p, scm_weak_key_hash_table_p),
12787 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
12788 rdelim.c (scm_read_delimited_x), strop.c (scm_string_index),
12789 symbols.c (scm_symbol_interned_p), numbers.c
12790 (scm_string_to_number), ports.c (scm_port_p): Corrected texinfo
12791 markup.
12792
a9205f07
KN
127932001-03-16 Keisuke Nishida <kxn30@po.cwru.edu>
12794
12795 * snarf.h (SCM_CONST_LONG): Deprecated.
12796 * tag.c (CONST_INUM): New macro. Use it to define scm_utag_*.
12797
6d583887
MV
127982001-03-15 Marius Vollmer <marius.vollmer@uni-dortmund.de>
12799
12800 * numbers.c (scm_num2ulong): Check that a bignum is positive
12801 before looking at the magnitude. Correctly check for overflow
12802 during conversion.
12803 (scm_num2long_long): Likewise.
12804 (scm_num2ulong_long): New.
12805 (ULONG_LONG_MAX): Define if not already defined.
12806 * numbers.h: (scm_num2ulong_long): New prototype.
1c938eb8 12807
e87a03fc
MG
128082001-03-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12809
12810 * validate.h (SCM_VALIDATE_OPOUTSTRPORT): New macro.
12811
12812 * strports.h (SCM_STRPORTP, SCM_OPSTRPORTP, SCM_OPINSTRPORTP),
12813 (SCM_OPOUTSTRPORTP): New predicate macros.
12814 (scm_open_input_string, scm_open_output_string),
12815 (scm_get_output_string): New prototypes.
1c938eb8 12816
e87a03fc
MG
12817 * strports.c (scm_open_input_string, scm_open_output_string),
12818 (scm_get_output_string): New procedures (SRFI-6 compliant).
12819 Made scm_tc16_strport non-static.
12820
160bb34a
DH
128212001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
12822
12823 * macros.h (SCM_ASSYNT): Removed unused object argument from
12824 signature.
12825
12826 * eval.c (scm_m_body, scm_m_quote, scm_m_begin, scm_m_if,
12827 scm_m_set_x, scm_m_and, scm_m_or, scm_m_case, scm_m_cond,
12828 scm_m_letstar, scm_m_do, scm_m_quasiquote, scm_m_delay,
12829 scm_m_define, scm_m_letrec1, scm_m_letrec, scm_m_let, scm_m_apply,
12830 scm_m_cont, scm_m_nil_cond, scm_m_nil_ify, scm_m_t_ify,
12831 scm_m_0_cond, scm_m_0_ify, scm_m_1_ify, scm_m_atfop, scm_m_atbind,
12832 scm_m_expand_body), evalext.c (scm_m_generalized_set_x,
12833 scm_m_undefine), goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
12834 scm_m_atdispatch): Removed unused object argument from call to
12835 SCM_ASSYNT.
12836
80dee77b
DH
128372001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
12838
12839 * gh.h/gh_data.c (gh_ints2scm): Changed the signature to use a
12840 const int* to reflect that the input array of integers remains
12841 unchanged. Thanks to Brett Viren for the hint.
12842
d3dd80ab
MG
128432001-03-14 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12844
12845 * gh_data.c (gh_scm2chars, gh_scm2shorts, gh_scm2longs),
12846 (gh_scm2floats, gh_scm2doubles): Check for malloc() returning NULL
12847 in various places.
12848 (gh_scm2newstr, gh_symbol2newstr): Change call to
12849 scm_must_malloc() to malloc(), because user-free()able memory is
12850 allocated.
12851
12852 * gc.c: Added declaration of `scm_debug_check_freelist'.
12853
26a3038d
MG
128542001-03-13 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12855
12856 * ports.c (scm_port_mode): Changed `mode' array size to 4.
12857
1f3908c4
KN
128582001-03-12 Keisuke Nishida <kxn30@po.cwru.edu>
12859
12860 * strports.c (scm_object_to_string): New procedure.
12861 (scm_strprint_obj): Deprecated.
12862 * strports.h: Reflect the changes.
12863
e11208ca
DH
128642001-03-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
12865
12866 * goops.h (SCM_VALIDATE_PUREGENERIC): New macro.
12867
12868 * goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
12869 scm_m_atdispatch): Provide definitions for FUNC_NAME. Don't use
12870 SCM_ASSYNT to check for correct argument types. Either use some
12871 SCM_VALIDATE_* macro or an explicit test.
12872
12873 (scm_make_foreign_object): Don't use SCM_ASSERT to check for
12874 misc-errors.
12875
12876 * macros.h (SCM_ASSYNT): On assertion failure, issue a misc-error
12877 instead of calling scm_wta.
12878
67e8151b
MG
128792001-03-12 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12880
12881 * load.c (scm_primitive_load, scm_primitive_load_path),
12882 (scm_sys_search_load_path): Corrected docstrings (file ->
12883 filename).
12884
12885 * eval.c (scm_force): Added texinfo markup to docstring.
12886 (scm_promise_p): Renamed parameter to `obj' to match docstring.
12887
12888 * debug-malloc.c: Reinserted #include <stdio.h>.
12889
e0c08f17
KN
128902001-03-11 Keisuke Nishida <kxn30@po.cwru.edu>
12891
e39c3de4
KN
12892 * list.c (s_scm_reverse_x): Use SCM_VALIDATE_LIST.
12893
e0c08f17
KN
12894 * environments.c, error.c, eval.c, filesys.c, hashtab.c, load.c,
12895 net_db.c, procprop.c, read.c, scmsigs.c, socket.c, struct.c:
12896 Use SCM_LISTn instead of scm_listify.
12897
e6e2e95a
MD
128982001-03-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12899
12900 * _scm.h: Removed #include <errno.h>.
12901
12902 * error.c, net_db.c, putenv.c, stime.c: Removed declaration of
12903 errno variable (can be a macro on some systems, for example when
12904 using linux libc with threads).
12905
12906 * error.c, filesys.c, gc.c, ioext.c, iselect.c, net_db.c, ports.c,
12907 posix.c, print.c, putenv.c, scmsigs.c, script.c, simpos.c, smob.c,
12908 socket.c, srcprop.c, stime.c, strop.c, unif.c, vports.c: Added
12909 #include <errno.h> in these 20 out of 100 files.
1c938eb8 12910
97d0e20b
GH
129112001-03-10 Gary Houston <ghouston@arglist.com>
12912
12913 * socket.c: add a definition of SUN_LEN (from glibc) for when it's
12914 not already defined.
12915
e75341b3
MD
129162001-03-09 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12917
12918 * coop.c: Inserted #include <stdio.h>.
12919
12920 * iselect.c: Reinserted #include <stdio.h>.
12921
74355186
MV
129222001-03-10 Marius Vollmer <mvo@zagadka.ping.de>
12923
12924 * posix.c: Replaced `#define' of __USE_XOPEN right before
12925 including unistd.h with a define of _GNU_SOURCE at the very top of
12926 the file.
12927
783e7774
KN
129282001-03-09 Keisuke Nishida <kxn30@po.cwru.edu>
12929
12930 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
12931 continuations.c, debug-malloc.c, debug.c, dynwind.c, eq.c, eval.c,
12932 feature.c, filesys.h, gc_os_dep.c, gh_data.c, gh_eval.c,
12933 gh_funcs.c, gh_io.c, gh_list.c, gh_predicates.c, hash.c,
12934 hashtab.c, iselect.c, keywords.c, list.c, load.c, mallocs.c,
12935 net_db.c, numbers.c, objprop.c, objprop.h, options.c, pairs.c,
12936 print.c, procprop.c, procs.c, properties.c, ramap.c,
12937 regex-posix.c, root.c, scmsigs.c, simpos.c, socket.c, srcprop.c,
12938 stackchk.c, stacks.c, strings.c, strop.c, strorder.c, struct.c,
12939 symbols.c, tag.c, threads.c, variable.c, vectors.c, weaks.c:
1c938eb8 12940 Remove #include <stdio.h>
783e7774
KN
12941 * gc.c, gdbint.c, root.c, sort.c, unif.c: Add #include <string.h>.
12942
12943 * procs.c (scm_make_subr_opt): Init symcell to avoid warning.
12944
9a677c37
MG
129452001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12946
12947 * posix.c (scm_gethostname): Set initial name length to 256 for
12948 Solaris.
12949
94e6d793
MG
129502001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12951
12952 * posix.h (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
12953 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
12954 (scm_sethostname, scm_gethostname): New prototypes.
12955
12956 * posix.c: Added inclusion of <crypt.h>, <sys/resource.h> and
12957 <sys/file.h>, if present.
12958 (scm_init_posix): [PRIO_PROCESS, PRIO_PGRP, PRIO_USER, LOCK_SH,
12959 LOCK_EX, LOCK_UN, LOCK_NB]: New variables.
12960 (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
12961 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
12962 (scm_sethostname, scm_gethostname): New procedures.
12963
650a1cf9
NJ
129642001-03-08 Neil Jerram <neil@ossau.uklinux.net>
12965
12966 * ports.c (scm_port_column): Docstring fixes: (i) port-line arg is
12967 not optional (ii) "recommend" spelling correction.
12968
9636b49c
MD
129692001-03-08 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12970
5e4a4d09
MD
12971 * ramap.c (racp): Removed optimization which caused array copying
12972 to fail if the two arrays shared storage. Re-inserted the IVDEP
12973 macros removed in the change of 2000-03-09. (Don't really have a
12974 complete grasp of what they are for, but they seem to be necessary
12975 on Crays. This needs testing!) Thanks to Miroslav Silovic.
12976
9636b49c
MD
12977 * hash.c (scm_string_hash): Don't downcase characters.
12978
04a4d666
MD
129792001-03-07 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12980
9636b49c 12981 * symbols.c (scm_symbols_prehistory): Changed symbol hash table
04a4d666
MD
12982 size from 277 --> 1009.
12983
12984 * symbols.c, symbols.h (scm_sys_symbols): New function GUILE_DEBUG
12985 function.
12986
12987 * coop-threads.c: Fixed change of 2001-03-06.
1c938eb8 12988
04a4d666
MD
12989 * validate.h: Code formatting.
12990
66418d34
KN
129912001-03-07 Keisuke Nishida <kxn30@po.cwru.edu>
12992
12993 * Makefile.am (*.x): Add dependency on snarf.h and guile-doc-snarf.in.
12994 (*.doc): Add dependency on guile-snarf.awk.in.
12995
12996 * guile-snarf.awk.in: Neglect spaces at the end of
12997 SCM_SNARF_DOCSTRING_END. Skip lines "# NN ..." in the
12998 middle of docstrings. (To avoid the problem with gcc-2.96.)
12999
2ade72d7
DH
130002001-03-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
13001
13002 * coop-threads.c (scm_call_with_new_thread), load.c
13003 (scm_primitive_load, scm_sys_search_load_path), random.c
13004 (scm_c_default_rstate), struct.c (scm_make_struct_layout,
13005 scm_struct_ref, scm_struct_set_x): Don't use SCM_ASSERT to
13006 (potentially) issue a scm-misc-error or wrong-num-args error
13007 message.
13008
13009 * load.c (scm_search_path): Use SCM_ASSERT_TYPE to give details
13010 about the expected type with the wrong-type-arg error message.
13011
13012 * smob.c (scm_make_smob): Abort on misuse of smob - it indicates
13013 a C level bug that can't be fixed from scheme anyway.
13014
586d7da2
MD
130152001-03-05 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13016
13017 * eval.c (scm_m_letstar): Removed check for duplicate bindings.
13018 Duplicate bindings are OK in a let* since a let* is semantically
13019 equivalent to a nested set of let:s.
13020
1dd05fd8
MG
130212001-03-05 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13022
13023 * print.c (scm_print_options): Fixed texinfo in docstring.
13024
13025 * net_db.c (scm_getserv, scm_getproto, scm_getnet): Return #f if
13026 the underlying functions getservent, getprotoent or getnetent
13027 return NULL instead of signalling an error.
13028
439006bf
GH
130292001-03-04 Gary Houston <ghouston@arglist.com>
13030
13031 * socket.c (scm_fill_sockaddr): don't allow buffer overflows when
13032 taking an unexpectedly large filename for an AF_UNIX socket from
13033 bind/connect/sendto (thanks to Martin Grabmueller).
1c938eb8 13034
439006bf
GH
13035 * socket.c (scm_sock_fd_to_port, SCM_SOCK_FD_TO_PORT): removed the
13036 former and adjusted the latter.
13037 (scm_socket, scm_socketpair): cosmetic changes.
13038 (scm_getsockopt, scm_setsockopt): declare optlen as int, not
13039 size_t as socklen_t substitute. don't restrict args/return values
13040 to INUM: allow full range of int or size_t.
13041 (scm_fill_sockaddr): check arguments before allocating memory, to
13042 avoid leakage. use malloc, not scm_must_malloc.
13043 (scm_connect, scm_bind, scm_sendto): use int, not size_t as socklen_t
13044 substitute. free the sockaddr structure before throwing an error.
13045 (scm_init_add_buffer): procedure removed, together with its static
13046 buffer scm_addr_buffer, which wouldn't be thread safe. instead,
13047 define a macro MAX_ADDR_SIZE and declare the buffer where needed.
13048 (scm_accept, scm_getpeername, scm_getsockname, scm_recvfrom,
13049 scm_sendto): use a local buffer instead of scm_addr_buffer.
13050 adjust for new SCM_SOCK_FD_TO_PORT. use int for address size,
13051 not size_t.
13052 (scm_recvfrom): set addr->sa_family to AF_UNSPEC before the recvfrom
13053 call to detect whether recvfrom could be bothered to set the address.
13054 (scm_init_socket): don't call scm_init_addr_buffer.
13055
276dd677
DH
130562001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
13057
13058 * debug.c (scm_procedure_source, scm_procedure_environment),
13059 print.c (scm_get_print_state), ramap.c (scm_array_fill_int,
13060 scm_array_index_map_x), sort.c (scm_sort_x, scm_sort,
13061 scm_stable_sort_x, scm_stable_sort), stacks.c (scm_make_stack,
13062 scm_last_stack_frame), symbols.c (scm_sym2vcell, scm_sym2ovcell),
13063 unif.c (scm_list_to_uniform_array, scm_uniform_vector_length,
13064 scm_transpose_array, scm_enclose_array, scm_array_in_bounds_p,
13065 scm_uniform_vector_ref, scm_array_set_x, scm_uniform_array_read_x,
13066 scm_uniform_array_write, scm_bit_set_star_x, scm_bit_count_star,
13067 scm_array_to_list, scm_array_prototype), validate.h
13068 (SCM_VALIDATE_NUMBER_COPY): Don't call function scm_wta, call
13069 scm_misc_error or scm_wrong_type_arg instead.
13070
13071 * validate.h (SCM_WTA, RETURN_SCM_WTA): Deprecated.
13072
5e03762c
MD
130732001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13074
13075 * goops.c, goops.h (scm_sys_pre_expand_closure_x): Removed.
13076 (scm_sys_tag_body): Added.
13077
db4b4ca6
DH
130782001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
13079
13080 * continuations.c (continuation_apply), eval.c (scm_m_lambda,
13081 scm_m_letstar, scm_m_letrec1, scm_m_let, SCM_APPLY), eval.h
13082 (SCM_EVALIM2), evalext.c (scm_m_generalized_set_x), gc.c
13083 (get_bvec, MARK), goops.c (scm_primitive_generic_generic),
13084 options.c (scm_options), ports.c (scm_remove_from_port_table),
13085 ramap.c (scm_ramapc), read.c (skip_scsh_block_comment, scm_lreadr,
13086 scm_lreadparen, scm_lreadrecparen), script.c (script_get_octal,
13087 script_get_backslash, script_read_arg), unif.c (scm_cvref): Don't
13088 call function scm_wta, call scm_misc_error or scm_wrong_type_arg
13089 instead.
13090
87e7741d
MD
130912001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13092
13093 * goops.c (scm_sys_pre_expand_closure_x): New procedure.
13094
d19b0aac
MV
130952001-03-04 Marius Vollmer <mvo@zagadka.ping.de>
13096
13097 * eval.c (scm_s_duplicate_bindings): New error message.
13098 (scm_m_letrec1, scm_m_letstar): Check for duplicate bindings.
13099
2fd945df
MV
131002001-03-03 Marius Vollmer <mvo@zagadka.ping.de>
13101
13102 * eval.h (SCM_EVALIM2): New macro. Use it when a
13103 immediate, literal constant should be evaluated.
13104 * eval.c (scm_s_duplicate_formals): New error message string.
13105 (scm_c_improper_memq): New function.
13106 (scm_m_lambda): Check for duplicate arguments.
13107 (scm_ceval, scm_deval): When executing a body: only cons a new
13108 toplevel environment frame when it is different from the
13109 existing one; use EVALCAR instead of SIDEVAL so that we can properly
13110 check for empty combinations; use SCM_EVALIM2 for the same reason
13111 in the non-toplevel loop.
13112 (nontoplevel_cdrxnoap, nontoplevel_cdrxbegin, nontoplevel_begin):
13113 New labels with the meaning of their non-"nontoplevel" partners,
13114 but they are used when it is known that the body is not evaluated at
13115 top-level.
13116 (scm_apply, scm_dapply): use SCM_EVALIM2 to get proper error
13117 reporting for empty combinations.
13118
9e6fc585
KN
131192001-03-02 Keisuke Nishida <kxn30@po.cwru.edu>
13120
13121 * Remove dump facilities.
13122 * dump.c, dump.h: Removed.
13123 * Makefile.am: Remove dump.c, dump.h, dump.x, dump.doc.
13124 * init.c: Remove #include "libguile/dump.h".
13125 (scm_init_guile_1): Remove scm_init_dump.
13126 * smob.h (scm_smob_descriptor): Remove slots: dump, undump.
13127 (scm_set_smob_dump, scm_set_smob_undump): Remove declaration.
13128 * smob.c (scm_make_smob_type): Remove initialization: dump, undump.
13129 (scm_set_smob_dump, scm_set_smob_undump): Removed.
13130
13131 * keywords.c: Remove #include "libguile/dump.h".
13132 (keyword_dump, keyword_undump): Removed.
13133 (scm_init_keywords): Remove scm_set_smob_dump and scm_set_smob_undump.
13134
eae54bf0
MG
131352001-03-02 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13136
13137 * vectors.c (s_scm_vector_p, list->vector, scm_vector)
13138 (scm_vector_ref, scm_vector_set_x, scm_vector_to_list)
13139 (scm_vector_fill_x), strorder.c (scm_string_equal_p)
13140 (scm_string_ci_equal_p, scm_string_less_p, scm_string_leq_p)
13141 (scm_string_gr_p, scm_string_geq_p, scm_string_ci_less_p)
13142 (scm_string_ci_geq_p), symbols.c (scm_symbol_p)
13143 (scm_symbol_to_string, scm_string_to_symbol): Changed use of @t{}
13144 to @code{} as the texinfo manual recommends, converted the
13145 examples to use a @lisp{}-environment.
13146
13147 * strports.c (scm_eval_string): Cleaned up the docstring.
13148
13149 * struct.c (scm_struct_p, scm_struct_vtable_p): Added texinfo
13150 markup.
13151
13152 * numbers.c (scm_exact_p, scm_odd_p, scm_even_p)
13153 (scm_number_to_string, scm_string_to_number, scm_number_p)
13154 (scm_real_p, scm_integer_p, scm_inexact_p, scm_make_rectangular)
13155 (scm_make_polar, scm_inexact_to_exact): Added texinfo markup.
13156 (scm_ash): Added texinfo markup and removed obsolete @refill.
13157 (scm_gr_p): Corrected comment.
13158 (scm_gr_p, scm_leq_p, scm_geq_p): Added texinfo markup to (future
13159 docstring) comments.
13160 (scm_positive_p, scm_less_p, scm_num_eq_p, scm_real_p)
13161 (scm_number_p, scm_negative_p, scm_max, scm_min, scm_sum)
13162 (scm_difference, scm_product, scm_divide, scm_asinh, scm_acosh)
13163 (scm_atanh, scm_truncate, scm_round, scm_exact_to_inexact)
13164 (floor, ceiling, $sqrt, $abs, $exp, $log, $sin, $cos, $tan, $asin)
13165 ($acos, $atan, $sinh, $cosh, $tanh, scm_real_part, scm_imag_part)
13166 (scm_magnitude, scm_angle, scm_abs, scm_quotient, scm_remainder)
13167 (scm_modulo, scm_gcd, scm_lcm): Added (future docstring) comments.
13168
23deee81
DH
131692001-02-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
13170
13171 * __scm.h (SCM_ASSERT_TYPE): Add missing macro parameter.
13172 (Obviously nobody compiles with SCM_RECKLESS defined...)
13173
13174 * validate.h (SCM_ASSERT_RANGE): Use the argument number.
13175
6fe692e9
MD
131762001-02-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13177
13178 * ports.c, ports.h (scm_c_read, scm_c_write): New functions.
13179
13180 * ports.h (SCM_READ_BUFFER_EMPTY_P): New macro.
13181
27c37006
NJ
131822001-02-24 Neil Jerram <neil@ossau.uklinux.net>
13183
13184 * numbers.c (scm_two_doubles, scm_sys_expt, scm_sys_atan2,
13185 scm_make_polar): Rename arguments `z1' and `z2' to `x' and `y',
13186 since use of `z' suggests that the arguments may be complex.
13187
13188 * goops.c (scm_make), numbers.c (scm_sys_expt): Fix docstring
13189 typos.
13190
2069af38
NJ
131912001-02-23 Neil Jerram <neil@ossau.uklinux.net>
13192
13193 * dump.c (scm_binary_write, scm_binary_read), eval.c
13194 (scm_primitive_eval), guardians.c (scm_guardian_destroyed_p,
13195 scm_guardian_greedy_p, scm_make_guardian), fports.c
13196 (scm_file_port_p): Minor docstring fixes.
13197
b42ff180
MV
131982001-02-22 Marius Vollmer <mvo@zagadka.ping.de>
13199
2069af38 13200 * load.c (load): Use scm_primitive_eval_x instead of scm_i_eval_x.
97ea55f8
MV
13201
13202 * goops.c (scm_add_method, DEFVAR): Use scm_eval instead of
13203 scm_i_eval.
13204 (make_class_from_template): Do not bother to set the current
13205 module around the call to DEFVAR, scm_eval takes care of that.
13206 (scm_init_goops): Make scm_module_goops and
13207 scm_goops_lookup_closure permanent objects.
1c938eb8 13208
97ea55f8
MV
13209 * eval.c (scm_ceval, scm_deval): When evaluating expressions on
13210 top level, create a fresh top-level environment for each
13211 expression instead of mutating the exisint frame. This is
13212 important when that frame is closed over.
13213
b42ff180
MV
13214 * numbers.c (s_scm_logior) [SCM_DIGSTOOBIG]: Also use
13215 SCM_DIGSPERLONG instead of DIGSPERLONG.
13216
09f2ab1e
MV
132172001-02-21 Marius Vollmer <mvo@zagadka.ping.de>
13218
13219 * eval.c (scm_ceval, scm_deval): Check for wrong number of args
13220 before applying arrow procedure in `cond' and before applying
13221 receiver procedure in call-with-current-continuation.
13222 (scm_i_eval): Do not invoke scm_copy_tree in argument in SCM_XEVAL
13223 macro. The argument is expanded more than one time.
13224
13225 * numbers.c (scm_logior) [SCM_DIGSTOOBIG]: Correctly use
13226 SCM_BIGDIG instead of BIGDIG. Thanks to Steven G. Johnson!
13227
132282001-02-20 Marius Vollmer <mvo@zagadka.ping.de>
13229
13230 * guile-doc-snarf.in, guile-func-name-check.in: Added copyright
13231 notice and license.
13232
7090240c
MG
132332001-02-17 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13234
13235 * variable.c (scm_make_variable, scm_make_undefined_variable)
13236 (scm_variable_ref, scm_variable_set_x, scm_builtin_variable)
13237 (scm_variable_bound_p), values.c (scm_values)
13238 (scm_call_with_values), unif.c (scm_bit_count)
13239 (scm_bit_set_star_x), symbols.c (scm_gentemp)
13240 (scm_gensym), strings.c (scm_string_p, scm_make_string)
13241 (scm_read_only_string_p, scm_string_length, scm_string_ref)
13242 (scm_string_set_x, scm_substring, scm_string_append), stime.c
13243 (scm_strptime, scm_mktime), random.c (scm_seed_to_random_state)
13244 (scm_copy_random_state, scm_random), print.c (scm_newline)
13245 (scm_write_char, scm_simple_format), debug-malloc.c
13246 (scm_malloc_stats), environments.c (scm_environment_p)
13247 (scm_environment_bound_p, scm_environment_ref)
13248 (scm_environment_fold, scm_environment_define)
13249 (scm_environment_undefine, scm_environment_set_x)
13250 (scm_environment_cell, scm_environment_observe)
13251 (scm_environment_observe_weak, scm_environment_unobserve)
13252 (scm_make_eval_environment, scm_eval_environment_p)
13253 (scm_eval_environment_set_local_x, scm_eval_environment_local)
13254 (scm_eval_environment_imported)
13255 (scm_eval_environment_set_imported_x, scm_make_import_environment)
13256 (scm_import_environment_p, scm_import_environment_imports)
13257 (scm_import_environment_set_imports_x, scm_make_export_environment)
13258 (scm_export_environment_p, scm_export_environment_private)
13259 (scm_export_environment_set_private_x)
13260 (scm_export_environment_signature)
13261 (scm_export_environment_set_signature_x, scm_leaf_environment_p):
13262 Added texinfo markup.
13263
13264 * ports.c (scm_drain_input): Lowercased argument to @var.
13265 (scm_current_input_port, scm_current_output_port): Filled in
13266 missing explanation.
13267 (scm_current_load_port, scm_set_current_output_port)
13268 (scm_set_current_error_port, scm_port_line, scm_set_port_line_x):
13269 Added texinfo markup.
13270
13271 * arbiters.c (scm_make_arbiter, scm_try_arbiter)
13272 (scm_release_arbiter): Added texinfo markup to docstrings.
13273 Changed `Returns' to `Return'.
13274 (arbiter_print): Changed SCM_CDR to SCM_SMOB_DATA.
13275
25703850
NJ
132762001-02-16 Neil Jerram <neil@ossau.uklinux.net>
13277
13278 * guile-snarf.awk.in: Quote any `@'s that occur in Scheme names,
13279 by doubling them to `@@'.
13280
73c0fdce
MG
132812001-02-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13282
13283 * numbers.c (scm_lognot), random.c (scm_random,
13284 scm_random_normal, scm_random_solid_sphere_x,
13285 scm_random_hollow_sphere_x, scm_random_normal_vector_x,
13286 scm_random_exp), dynwind.c
13287 (scm_dynamic_wind): Removed unnecessary "" from docstrings.
1c938eb8 13288
73c0fdce
MG
13289 * goops.c (scm_sys_initialize_object, scm_instance_p,
13290 scm_class_name, scm_class_precedence_list, scm_class_slots,
13291 scm_class_environment, scm_generic_function_name,
13292 scm_generic_function_methods, scm_method_generic_function,
13293 scm_method_specializers, scm_method_procedure, scm_make_unbound,
13294 scm_unbound_p, scm_assert_bound, scm_at_assert_bound_ref,
13295 scm_sys_fast_slot_ref, scm_sys_fast_slot_set_x, scm_slot_ref,
13296 scm_slot_set_x, _scm_slot_bound_p, scm_slots_exists_p,
13297 scm_sys_allocate_instance, scm_make, scm_pure_generic_p,
13298 scm_class_direct_supers, scm_class_direct_slots,
13299 scm_class_direct_subclasses, scm_class_direct_methods,
13300 scm_accessor_method_slot_definition, scm_sys_goops_loaded),
13301 debug.c (scm_with_traps, scm_memoized_p, scm_make_gloc,
13302 scm_gloc_p, scm_make_iloc, scm_iloc_p, scm_memcons,
13303 scm_mem_to_proc, scm_proc_to_mem, scm_unmemoize,
13304 scm_memoized_environment, scm_procedure_name,
13305 scm_procedure_source, scm_procedure_environment, scm_debug_hang),
13306 objects.c
13307 (scm_class_of, scm_entity_p, scm_operator_p,
13308 scm_set_object_procedure_x, scm_object_procedure,
13309 scm_make_class_object), hooks.c (scm_make_hook_with_name,
13310 scm_make_hook, scm_hook_p, scm_hook_empty_p, scm_add_hook_x,
13311 scm_remove_hook_x, scm_reset_hook_x, scm_run_hook,
13312 scm_hook_to_list), lang.c
13313 (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null, scm_nil_eq),
13314 numbers.c (scm_sys_expt, scm_sys_atan2), print.c
13315 (scm_print_options, scm_port_with_print_state,
13316 scm_get_print_state), procs.c (scm_make_cclo, scm_procedure_p,
13317 scm_closure_p, scm_thunk_p, scm_procedure_with_setter_p,
13318 scm_make_procedure_with_setter, scm_procedure), throw.c
13319 (scm_lazy_catch), modules.c (scm_standard_eval_closure), load.c
13320 (scm_parse_path, scm_search_path), stacks.c (scm_make_stack,
13321 scm_stack_ref, scm_stack_length, scm_frame_p,
13322 scm_last_stack_frame, scm_frame_number, scm_frame_source,
13323 scm_frame_procedure, scm_frame_arguments, scm_frame_previous,
13324 scm_frame_next, scm_frame_real_p, scm_frame_procedure_p,
13325 scm_frame_evaluating_args_p, scm_frame_overflow_p), filesys.c
13326 (scm_dirname, scm_basename), dynwind.c
13327 (scm_wind_chain), read.c (scm_read_options, scm_read,
13328 scm_read_hash_extend), gc.c
13329 (scm_unhash_name), eval.c (scm_eval_options_interface,
13330 scm_evaluator_traps, s_scm_nconc2last), backtrace.c
13331 (scm_display_error, scm_set_print_params_x,
13332 scm_display_application, scm_display_backtrace, scm_backtrace),
13333 async.c (scm_async, scm_system_async, scm_async_mark,
13334 scm_system_async_mark, scm_run_asyncs, scm_noop,
13335 scm_set_tick_rate, scm_set_switch_rate, scm_unmask_signals,
13336 scm_mask_signals): Added docstrings.
13337
e228a203
KN
133382001-02-15 Keisuke Nishida <kxn30@po.cwru.edu>
13339
13340 * dump.c (scm_undump): Use SCM_CARLOC/SCM_CDRLOC to obtain the
13341 address of car/cdr. (Thanks to Dirk Herrmann)
13342 Use scm_sizet to obtain the length of strings.
13343 (Thanks to Matthias Koeppe)
13344
1552a59d
MV
133452001-02-15 Marius Vollmer <mvo@zagadka.ping.de>
13346
13347 * symbols.c (scm_mem2symbol): Put a empty statement after the
13348 next_symbol label. This is mandated by ANSI, appearantly.
13349
3178f751
MV
133502001-02-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13351
13352 * gc_os_dep.c: Do not include <linux/version.h>. It makes no
13353 sense to compile for a specific kernel version. Do not include
13354 <asm/signal.h> while defining __KERNEL__. This hack should no
13355 longer be needed and caused problems.
13356
7af4defe
MV
133572001-02-13 Marius Vollmer <mvo@zagadka.ping.de>
13358
13359 * eval.c (scm_ceval, scm_deval): use `SIDEVAL' instead of
13360 SCM_CEVAL when evaluating subforms of `begin' forms. SCM_CEVAL
13361 can not deal with immediates.
13362
5d6bb349
KN
133632001-02-12 Keisuke Nishida <kxn30@po.cwru.edu>
13364
13365 * list.c (scm_list_copy): Validate the first argument.
13366
ec9709f0
MV
133672001-02-11 Marius Vollmer <mvo@zagadka.ping.de>
13368
13369 Fix evaluator so that top-level expressions are correctly
13370 evaluated with respect to the module system.
1c938eb8 13371
ec9709f0
MV
13372 * modules.h. modules.c (scm_current_module_lookup_closure): New
13373 function.
13374
13375 * eval.h (scm_primitive_eval, scm_primitive_eval_x): New
13376 prototypes.
13377 (scm_i_eval, scm_i_eval_x, scm_eval, scm_eval_x): Changed argument
13378 names to better reflect their meaning.
13379
13380 * eval.c (scm_ceval, scm_deval): Recognize when `begin' is being
13381 evaluated at top-level and synronize lookup closure before
13382 executing every subform.
13383 (scm_primitve_eval_x, scm_primitive_eval): New functions.
13384 (scm_eval_x, scm_eval): Reimplement in terms of
13385 scm_primitive_eval_x and scm_primitive_eval, respectively.
1c938eb8 13386
ec9709f0
MV
133872001-02-09 Marius Vollmer <mvo@zagadka.ping.de>
13388
13389 * macros.c (scm_macro_name, scm_macro_transformer): Use
13390 SCM_SMOB_DATA instead of SCM_CDR. Provided by Martin Grabmueller.
13391 Thanks!
13392
42417394
KN
133932001-02-10 Keisuke Nishida <kxn30@po.cwru.edu>
13394
13395 * dump.c (scm_store_bytes): Store data size before data.
13396 (scm_restore_bytes): Restore data size. Takes a pointer to size.
13397 * dump.h (scm_restore_bytes): Updated.
13398
bf942687
KN
133992001-02-09 Keisuke Nishida <kxn30@po.cwru.edu>
13400
13401 * dump.c: Use double cells for update schedule.
13402
1be4270a
KN
134032001-02-08 Keisuke Nishida <kxn30@po.cwru.edu>
13404
13405 * ports.c (scm_unread_char): Take an optional argument.
13406
548728ea
MV
134072001-02-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13408
13409 * modules.h (scm_selected_module, scm_current_module): Renamed
13410 scm_selected_module to scm_current_module to synchronize Scheme
13411 and C names.
13412 (scm_select_module, scm_set_current_module): Likewise. Changed
13413 all uses.
1c938eb8 13414
548728ea
MV
13415 * ports.c (scm_port_for_each): Make a snapshot of the port table
13416 before iterating over it. The table might change while the user
13417 code is running. With the snapshot, the user can depend on the
c5408bc3 13418 fact that each port that existed at the start of the iteration is
548728ea
MV
13419 encountered exactly once. (ice-9 popen) depends on this.
13420
cb0d8be2
DH
134212001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
13422
13423 * strings.h (SCM_STRING_MAX_LENGTH): New macro.
13424
13425 * strings.c (scm_makstr, scm_take_str, scm_make_string): Added
13426 range checking for the size parameter. Thanks to Martin
13427 Grabmueller for the hint.
13428
13429 (scm_makstr): Reordered string initialization to make interrupt
13430 deferring unnecessary.
13431
13432 * vectors.c (scm_make_vector): Fixed range checking.
13433
e382fdbe
DH
134342001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
13435
13436 * vectors.h (SCM_VECTOR_MAX_LENGTH): New macro.
13437
13438 * vectors.c (scm_make_vector, scm_c_make_vector): Improved the
13439 checking of the size parameter for type correctness and valid
13440 range. Thanks to Rob Browning for reporting the problem. Instead
13441 of deferring interrupts, scm_remember_upto_here_1 is used.
13442
bf8f0922
KN
134432001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
13444
13445 * dump.c (scm_store_cell_object, scm_restore_cell_object): Removed.
13446 (scm_dump_cell_update): Removed.
13447 (scm_dump_update): Renamed from scm_dump_object_update.
13448 (scm_restore_string, scm_restore_bytes, scm_restore_word): Takes
13449 a pointer instead of returning a value.
13450 * keywords.c (keyword_undump): Updated.
13451
914cceec
KN
134522001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
13453
13454 * dump.c, dump.h: Modified a lot.
5f17c66f 13455 (SCM_DUMP_COOKIE): Version 0.1
914cceec
KN
13456 (scm_dump_mark): Removed.
13457 (scm_restore_cell_object, scm_store_cell_object): New functions.
13458
13459 * smob.h (scm_smob_descriptor): Removed slots: dump_mark,
13460 dump_dealloc, dump_store, undump_alloc, undump_restore, undump_init.
13461 New slots: dump, undump.
13462 * smob.c (scm_make_smob_type, scm_set_smob_dump, scm_set_smob_undump):
13463 Updated.
13464
13465 * keywords.c (keyword_dump): Renamed from keyword_dealloc.
13466 (keyword_undump): Renamed from keyword_alloc.
13467 (scm_init_keywords): Set keyword_dump and keyword_undump.
13468
ecf470a2
ML
134692001-02-03 Michael Livshin <mlivshin@bigfoot.com>
13470
13471 * gc.c (DOUBLECELL_ALIGNED_P): new macro, a better-named analog of
13472 the deprecated SCM_DOUBLE_CELLP.
13473
13474 * tags.h (SCM_DOUBLE_CELLP): deprecated.
13475
03416a99
KN
134762001-02-02 Keisuke Nishida <kxn30@po.cwru.edu>
13477
13478 * dump.c, dump.h: New files.
13479 * Makefile.am: Added dump.c, dump.h, dump.x, dump.doc.
13480 * init.c: #include "libguile/dump.h".
13481 (scm_init_guile_1): Call scm_init_dump.
13482 * smob.h (scm_smob_descriptor): New slots: dump_mark,
13483 dump_dealloc, dump_store, undump_alloc, undump_restore,
13484 undump_init.
13485 * smob.c (scm_make_smob_type): Init the new slots.
13486 (scm_set_smob_dump, scm_set_smob_undump): New functions.
13487 * smob.h (scm_set_smob_dump, scm_set_smob_undump): Declared.
13488
13489 * keywords.c: #include "libguile/dump.h".
13490 (keyword_dealloc, keyword_alloc): New functions.
13491 (scm_init_keywords): Set smob_dump and smob_undump.
13492
00ffa0e7
KN
134932001-02-01 Keisuke Nishida <kxn30@po.cwru.edu>
13494
13495 * vectors.c (scm_c_make_vector): New function.
13496 * vectors.h (scm_c_make_vector): Declared.
13497 * eval.c (scm_copy_tree), filesys.c (scm_stat2scm), fluids.c
13498 (scm_make_initial_fluids, grow_fluids), gc.c (scm_init_storage),
13499 gh_data.c (gh_ints2scm, gh_doubles2scm): goops.c
13500 (scm_make_method_cache, scm_i_vector2list,
13501 scm_compute_applicable_methods, scm_sys_method_more_specific_p),
13502 init.c (start_stack), net_db.c (scm_gethost, scm_getnet,
13503 scm_getproto, scm_return_entry), posix.c (scm_getgroups,
13504 scm_getpwuid, scm_getgrgid, scm_uname), print.c (make_print_state,
13505 grow_ref_stack), regex-posix.c (scm_regexp_exec), scmsigs.c
13506 (scm_init_scmsigs), socket.c (scm_addr_vector, scm_addr_vector),
13507 stime.c (scm_times, filltime), unif.c (scm_make_uve), vectors.c
13508 (scm_vector, scm_make_vector): Use scm_c_make_vector.
13509
13510 * hashtab.c (scm_c_make_hash_table): New function.
13511 * hashtab.h (scm_c_make_hash_table): Declared.
13512 * environments.c (scm_make_leaf_environment,
13513 scm_make_eval_environment), gc.c (scm_init_storage),
13514 keywords.c (scm_init_keywords), symbols.c (scm_builtin_bindings):
13515 Use scm_c_make_hash_table.
13516
b8446ce8
MD
135172001-01-31 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13518
13519 * unif.c (rapr1): Don't apply scm_uniform_vector_length on arrays.
13520
e3239868
DH
135212001-01-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13522
13523 * struct.c (scm_make_vtable_vtable): Removed unnecessary "" from
13524 end of docstring.
13525
13526 * struct.c (scm_struct_set_x, scm_struct_vtable_tag,
13527 scm_struct_vtable_name, scm_set_struct_vtable_name_x), weaks.c
13528 (scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table,
13529 scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
13530 srcprop.c (scm_source_properties, scm_set_source_properties_x,
13531 scm_source_property, scm_set_source_property_x), sort.c
13532 (scm_sort_list_x, scm_restricted_vector_sort_x, scm_sorted_p,
13533 scm_merge, scm_merge_x, scm_sort_x, scm_sort, scm_stable_sort_x,
13534 scm_stable_sort, scm_sort_list_x, scm_sort_list): Added
13535 docstrings.
13536
41ee56dd
MD
135372001-01-29 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13538
13539 * eval.c (SCM_APPLY): Check that primitives which take 1 arg
13540 really get that arg.
13541
b6311c08
KN
135422001-01-26 Keisuke Nishida <kxn30@po.cwru.edu>
13543
13544 * goops.c (s_scm_get_keyword): Bug fix.
13545
a49af0c0
DH
135462001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
13547
13548 The following patch was sent by Martin Grabmueller. It makes sure
13549 that in case of parameter errors the correct function name is
13550 shown, and that parameter types are only checked once.
13551
13552 * strop.c (string_copy, string_upcase_x, string_downcase_x,
13553 string_capitalize_x): New functions. Each one performs the core
13554 functionality of the corresponding scm_* function.
13555
13556 (scm_string_copy, scm_string_upcase_x, scm_string_upcase,
13557 scm_string_downcase_x, scm_string_downcase,
13558 scm_string_capitalize_x, scm_string_capitalize): Reduced to
13559 parameter checking wrappers of the above functions.
13560
13070bd3
DH
135612001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
13562
13563 * continuations.c, dynl.c, keywords.c, load.c: Include
13564 strings.h. Thanks to Bill Schottstaedt for the bug report.
13565
2f2b390c
DH
135662001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13567
13568 * backtrace.c (display_header): Make sure that line and column
13569 information is shown independent of whether the port the code was
13570 read from had an associated filename. Thanks to Martin
13571 Grabmueller for providing this patch.
13572
efa40607
DH
135732001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13574
13575 * fports.[ch] (scm_file_port_p): New primitive.
13576
a98bddfd
DH
135772001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13578
13579 * tags.h (scm_tc16_fport, scm_tc16_strport, scm_tc16_sfport):
13580 These are now defined in fports.c, strports.c and vports.c.
13581
13582 * fports.[ch] (scm_tc16_fport), strports.c (scm_tc16_strport),
13583 vports.c (scm_tc16_sfport): Made variables (were macros defined in
13584 tags.h).
13585
13586 fports.c (scm_make_fptob), strports.c (scm_make_stptob), vports.c
13587 (scm_make_sfptob): Made static. These return a type code now.
13588
13589 fports.c (scm_init_fports), strports.c (scm_init_strports),
13590 vports.c (scm_init_vports): Create the corresponding port types.
13591
13592 * fports.h (SCM_FPORTP, SCM_OPFPORTP, SCM_OPINFPORTP,
13593 SCM_OPOUTFPORTP): Redefined in terms of scm_tc16_fport.
13594
13595 * init.c (scm_init_guile_1): Make sure strports are initialized
13596 before gdbint.
13597
13598 * ports.[ch] (scm_make_port_type): Changed the return type to
13599 scm_bits_t.
13600
13601 * ports.c (scm_ports_prehistory): Don't create any port types
13602 here.
13603
13604 * posix.c (scm_ttyname): Use SCM_FPORTP instead of comparing
13605 against scm_tc16_fport directly.
13606
0419a528
DH
136072001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13608
13609 * srcprop.c (scm_set_source_property_x): Fix to handle
13610 (set-source-property! <obj> 'copy <datum>) correctly.
13611
6d36532c
GH
136122001-01-24 Gary Houston <ghouston@arglist.com>
13613
13614 * filesys.c (scm_link): docstring fix.
13615 * fports.h (scm_setfileno): obsolete declaration removed.
13616 * posix.c: bogus popen declaration removed.
13617
13618 * rdelim.c: new file, split from ioext.c.
13619 * rdelim.h: new file, split from ioext.h
13620 * Makefile.am: add rdelim.c and related files.
13621 * init.c: call scm_init_rdelim. include rdelim.h.
13622
3ba5a6c2
DH
136232001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
13624
13625 This patch was sent by Martin Grabmueller and makes sure that
13626 parameter errors are reported correctly by the lexicographic
13627 ordering predicates.
13628
13629 * strorder.c (string_less_p, string_ci_less_p): New functions.
13630
13631 (scm_string_less_p, scm_string_ci_less_p): Extracted the core
13632 functionality into string_less_p, string_ci_less_p respectively.
13633 The remaining code is just a wrapper to do the parameter
13634 checking.
13635
13636 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p): Check the
13637 parameters and call string_less_p instead of scm_string_less_p.
13638
13639 (scm_string_ci_leq_p, scm_string_ci_gr_p, scm_string_ci_geq_p):
13640 Check the parameters and call string_less_ci_p instead of
13641 scm_string_ci_less_p.
13642
e40a4095
DH
136432001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
13644
ed6a2db9
DH
13645 This patch modifies scm_display_error to perform parameter
13646 checking. Thanks to Neil Jerram for the bug report.
13647
e40a4095
DH
13648 * backtrace.[ch] (scm_i_display_error): New function.
13649
13650 * backtrace.c (scm_display_error): Added parameter check and
13651 extracted the core functionality into function
13652 scm_i_display_error.
13653
13654 * throw.c (handler_message): Call scm_i_display_error to display
13655 the error message.
13656
f1e06a96
MD
136572001-01-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13658
13659 * eval.c (SCM_APPLY): Added # args check for application of
13660 procedures with arity 3. (Thanks to Anders Holst.)
13661
30ea841d
DH
136622001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
13663
13664 * filesys.h (SCM_DIR_FLAG_OPEN, SCM_DIR_OPEN_P): Added.
13665
13666 (SCM_OPDIRP): Deprecated.
13667
13668 * filesys.c (scm_opendir): Use SCM_DIR_FLAG_OPEN instead of
13669 SCM_OPN.
13670
13671 (scm_readdir, scm_rewinddir): Don't use SCM_VALIDATE_OPDIR.
13672 Instead, give an explicit error message in case the directory is
13673 closed.
13674
13675 (scm_closedir, scm_dir_print): Rewritten to use SCM_DIR_OPEN_P
13676 instead of SCM_OPENP and SCM_CLOSEDP.
13677
13678 * validate.h (SCM_VALIDATE_OPDIR): Deprecated.
13679
312ae976
DH
136802001-01-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
13681
13682 * eval.c (inner_eval, scm_eval): Move all real functionality into
13683 inner_eval. Avoid to copy the expression twice by inlining some
13684 code from scm_i_eval.
13685
4567ed78
DH
136862001-01-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
13687
13688 * eval.c (scm_m_case): The 'else' clause of a 'case' statement
13689 now has to be the last clause, as required by R5RS. Thanks to
13690 Martin Grabmueller for the patch.
13691
10288a09
GH
136922001-01-18 Gary Houston <ghouston@arglist.com>
13693
13694 * ioext.c: further simplify scm_read_string_x_partial by defining
13695 a macro SCM_EBLOCK.
13696
8f379a8f
DH
136972001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
13698
13699 * gh_data.c (gh_ints2scm): Simplified using SCM_FIXABLE.
13700
5c75b29f
DH
137012001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
13702
13703 * __scm.h: Added comment about architecture and compiler
13704 properties that are required by guile.
13705
13706 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
13707 SCM_MOST_NEGATIVE_FIXNUM): Moved to numbers.h.
13708
13709 (SCM_CHAR_BIT, SCM_LONG_BIT): Moved here from numbers.h.
13710
13711 * numbers.h (SCM_CHAR_BIT, SCM_LONG_BIT): Moved to __scm.h.
13712
13713 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
13714 SCM_MOST_NEGATIVE_FIXNUM): Moved here from __scm.h.
13715
ac0c002c
DH
137162001-01-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13717
13718 * __scm.h (SCM_FIXNUM_BIT): Added. The name is chosen in analogy
13719 to the names in limits.h.
13720
13721 * numbers.c (abs_most_negative_fixnum): Added.
13722
13723 (scm_quotient, scm_remainder): Fixed the fixnum-min / (abs
13724 fixnum-min) special case.
13725
13726 (scm_big_and): Fix for negative first parameter.
13727
13728 (scm_bit_extract): Fix for fixnum paramters.
13729 Thanks to Rob Browning for the bug report.
13730
13731 (scm_init_numbers): Initialize abs_most_negative_fixnum.
13732
debe0dc2
DH
137332001-01-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
13734
13735 * symbols.c (scm_symbol_bound_p): Fixed comment.
13736 Thanks to Chris Cramer.
13737
8a39e3fc
DH
137382001-01-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
13739
13740 * smob.[ch] (scm_make_smob_type): Return type is scm_bits_t now.
13741 Thanks to Bill Schottstaedt.
13742
322ec19d
ML
137432001-01-11 Michael Livshin <mlivshin@bigfoot.com>
13744
9a5fa6e9 13745 from Matthias Köppe:
1c938eb8 13746
322ec19d
ML
13747 * objects.h (SCM_SET_ENTITY_SETTER): new macro. SCM_ENTITY_SETTER
13748 casts its result, so doesn't yield an lvalue per ANSI C.
13749
13750 * goops.c (s_scm_sys_set_object_setter_x): use
13751 SCM_SET_ENTITY_SETTER.
13752 (clear_method_cache): use SCM_SET_ENTITY_PROCEDURE.
13753
13754 * gc.h (SCM_GC_SET_CARD_BVEC): new macro. SCM_GC_CARD_BVEC casts
13755 its result, so doesn't yield an lvalue per ANSI C.
13756 (SCM_GC_SET_CARD_FLAGS): ditto for SCM_GC_GET_CARD_FLAGS.
13757 (SCM_GC_CLR_CARD_FLAGS): redefined in terms of
13758 SCM_GC_SET_CARD_FLAGS.
13759 (SCM_GC_SET_CARD_FLAG, SCM_GC_CLR_CARD_FLAGS): ditto.
13760
13761 * gc.c (INIT_CARD): use the explicit setter macro to set the bvec.
13762
60d02d09
GH
137632001-01-08 Gary Houston <ghouston@arglist.com>
13764
13765 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): new macro.
13766 * ioext.c (scm_read_string_x_partial, scm_read_delimited_x),
13767 socket.c (scm_recvfrom): use the new macro, plus minor docstring
13768 changes.
13769 * ioext.c (scm_read_string_x_partial): don't crash if -1 is supplied
13770 for fdes. if current input port is used, check that it's a file
13771 port.
13772
c2da2648
GH
137732001-01-06 Gary Houston <ghouston@arglist.com>
13774
13775 * ioext.c (scm_read_string_x_partial): new procedure, implements
13776 read-string!/partial.
13777 * ports.c (scm_take_from_input_buffers): new procedure used by
13778 scm_read_string_x_partial.
13779 (scm_drain_input): use scm_take_from_input_buffers.
13780
4651d663
MV
137812001-01-06 Marius Vollmer <mvo@zagadka.ping.de>
13782
13783 * validate.h (SCM_VALIDATE_NUMBER): New.
13784
c0a5d888
ML
137852001-01-03 Michael Livshin <mlivshin@bigfoot.com>
13786
13787 * guardians.c (F_GREEDY, F_LISTED, F_DESTROYED, GREEDY_P,
13788 SET_GREEDY, LISTED_P, SET_LISTED, CLR_LISTED, DESTROYED_P,
13789 SET_DESTROYED): new defines/macros.
13790 (GUARDIAN_LIVE, GUARDIAN_ZOMBIES, GUARDIAN_NEXT): deleted.
13791 (add_to_live_list): takes a `guardian_t *' now, not SCM.
13792 (guardian_print): print more info.
13793 (guardian_apply): check if the guardian is destroyed, and throw an
13794 error if so. take one more optional argument `throw_p'.
13795 (scm_guard): depending on the value of `throw_p', return a boolean
13796 result.
13797 (scm_get_one_zombie): remove redundant property test.
13798 (guardian_t): represent the various (currently 3, I hope nothing
13799 more gets added) boolean fields as bit flags.
13800 (scm_guardian_destroyed_p, scm_guardian_greedy_p): new predicates.
13801 (scm_destroy_guardian_x): new procedure.
13802
13803 * guardians.h: added prototypes for `scm_guardian_greedy_p' and
13804 `scm_guardian_destroyed_p'. changed prototype for `scm_guard'.
13805
0c6d2191
GH
138062001-01-01 Gary Houston <ghouston@arglist.com>
13807
13808 * fports.c (fport_write): bugfix: handle short writes for
13809 unbuffered ports too. optimize the buffered case by minimizing
13810 the number of write/flush calls.
13811 (write_all): new helper procedure.
13812
a51fe247 13813The ChangeLog continues in the file: "ChangeLog-2000"
d9f71a07
LC
13814
13815;; Local Variables:
13816;; coding: utf-8
13817;; End: