(scm_i_card_statistics): Record scm_tc7_number types as
[bpt/guile.git] / libguile / ChangeLog
CommitLineData
949ec9f9
KR
12007-08-17 Kevin Ryde <user42@zip.com.au>
2
3 * stime.c: Add #define _REENTRANT, to get gmtime_r() prototype on
4 solaris 2.6. Reported by anirkko.
5
6caac03c
LC
62007-07-29 Ludovic Courtès <ludo@gnu.org>
7
8 * Makefile.am (INCLUDES): Added Gnulib includes.
9 (gnulib_library): New.
10 (libguile_i18n_v_@LIBGUILE_I18N_MAJOR@_la_LIBADD): Added
11 `$(gnulib_library)'.
12 (libguile_la_LIBADD): Likewise.
13
14 * posix.c: Don't define `_GNU_SOURCE' since `gl_EARLY' arranges
15 to define it when available.
16 * srfi-14.c: Likewise.
f7439099
LC
17 * i18n.c: Likewise. Include Gnulib's <alloca.h>
18 * eval.c: Include Gnulib's <alloca.h>.
19 * filesys.c: Likewise.
20 * read.c: Don't include <strings.h> and don't provide an
21 `strncasecmp ()' replacement; use Gnulib's <string.h> and
22 `strncasecmp ()' instead.
6caac03c 23
e08f3f7a
LC
242007-07-25 Ludovic Courtès <ludo@gnu.org>
25
26 * eval.c (macroexp): When `scm_ilength (res) <= 0', return
27 immediately. This used to produce a circular memoized
28 expression, e.g., for `(set (quote x) #t)'.
29
7337d56d
LC
302007-07-22 Ludovic Courtès <ludo@gnu.org>
31
32 Overhauled the reader, making it faster.
33
34 * gdbint.c (tok_buf, tok_buf_mark_p): Removed.
35 (gdb_read): Don't use a token buffer. Use `scm_read ()' instead
36 of `scm_lreadr ()'.
37
38 * read.c: Overhauled. No longer use a token buffer. Use a
39 on-stack C buffer in the common case and use Scheme strings when
40 larger buffers are needed.
41 * read.h (scm_grow_tok_buf, scm_flush_ws, scm_casei_streq,
42 scm_lreadr, scm_lreadrecparen): Removed.
43 (scm_i_input_error): Marked as `SCM_NORETURN'.
44
df449722
LC
452007-07-15 Ludovic Courtès <ludo@gnu.org>
46
47 * script.c (scm_compile_shell_switches): Updated copyright year.
48
b1f57ea4
LC
492007-07-11 Ludovic Courtès <ludo@gnu.org>
50
51 * goops.c (scm_sys_method_more_specific_p): Added docstring.
52 Make sure LEN is greater than or equal to the minimum length of
53 specializers of M1 and M2. This fixes a segfault later on in
54 `more_specificp ()' if TARGS is too small. Reported by Marco
55 Maggi <marco.maggi-ipsu@poste.it>.
56
d3075c52
LC
572007-06-26 Ludovic Courtès <ludo@gnu.org>
58
59 * fluids.c (next_fluid_num): When growing ALLOCATED_FLUIDS, make
60 sure to free the previous array after the new one has been
61 installed. This leak is made visible by running
62 "(define l (map (lambda (i) (make-fluid)) (iota 255)))"
63 from the REPL within Valgrind.
64
7a5fb796
LC
652007-06-12 Ludovic Courtès <ludo@chbouib.org>
66
67 * socket.c (scm_inet_ntop): In the `AF_INET' case, declare `addr4'
68 as an `scm_t_uint32' rather than re-using `addr6'. This fixes a
69 bus error on SPARC (and possibly others) due to unaligned access.
70
a1ef7406
LC
712007-06-07 Ludovic Courtès <ludovic.courtes@laas.fr>
72
73 * posix.c (scm_ttyname): Check whether RESULT is NULL before
74 making a string from it (reported by Dan McMahill). Don't call
75 `scm_from_locale_string ()' before the mutex is released.
76
3dcf3373
LC
772007-05-26 Ludovic Courtès <ludo@chbouib.org>
78
79 * eval.c (scm_m_define): Updated comment. Changed order for value
80 evaluation and `scm_sym2var ()' call, which is perfectly valid per
81 R5RS. This reverts the change dated 2004-04-22 by Dirk Herrmann.
82
608860a5
LC
832007-05-05 Ludovic Courtès <ludo@chbouib.org>
84
85 Implemented lazy duplicate binding handling.
86
87 * modules.c (scm_export): Renamed to...
88 (scm_module_export): This. Now public.
89 (module_variable): Removed.
90 (default_duplicate_binding_procedures_var): New variable.
91 (default_duplicate_binding_handlers, resolve_duplicate_binding,
92 module_imported_variable, scm_module_local_variable,
93 scm_module_variable): New functions.
94 (scm_module_import_interface): Rewritten.
95 (scm_module_reverse_lookup): Exported as a Scheme function.
96 * modules.h (scm_module_index_duplicate_handlers,
97 scm_module_index_import_obarray): New macros.
98 (scm_module_variable, scm_module_local_variable,
99 scm_module_export): New declarations.
100
1911e3da
LC
1012007-04-17 Ludovic Courtès <ludovic.courtes@laas.fr>
102
103 * numbers.c: Commented out trailing `HAVE_COMPLEX_DOUBLE' after
104 `#endif'. Use `#ifndef HAVE_XXX' rather than `#if !HAVE_XXX'.
105
1d8ce4c0
HWN
1062007-04-09 Han-Wen Nienhuys <hanwen@lilypond.org>
107
108 * numbers.c (carg): provide carg, cexp, clog in case they are
109 missing.
110
afb49959
LC
1112007-03-12 Ludovic Courtès <ludovic.courtes@laas.fr>
112
113 * i18n.c (scm_nl_langinfo): `#ifdef'd uses of `GROUPING',
114 `FRAC_DIGITS', etc., which are GNU extensions. Reported by
115 Steven Wu.
116
b3aa4626
KR
1172007-03-08 Kevin Ryde <user42@zip.com.au>
118
119 * struct.c, struct.h (scm_make_vtable): New function, providing
120 `make-vtable'.
121 * stacks.c (scm_init_stacks): Use it.
122
1232007-03-06 Kevin Ryde <user42@zip.com.au>
124
125 * struct.c (scm_make_struct): Check for R,W,O at end of layout when
126 allocating a tail array. If there's no such then those tail fields
127 are uninitialized and garbage SCMs there can cause a segv if printed
128 (after fetching with struct-ref).
129
1302007-02-22 Kevin Ryde <user42@zip.com.au>
131
132 * scmsigs.c (scm_sleep): In docstring, cross refence usleep.
133 (scm_usleep): Update docstring per manual, cross reference sleep.
134
135 * struct.c (scm_make_struct): Move SCM_CRITICAL_SECTION_END up so that
136 scm_struct_init is not within that section. scm_struct_init can
137 thrown an error, which within a critical section results in an
138 abort().
139
03291373
NJ
1402007-02-19 Neil Jerram <neil@ossau.uklinux.net>
141
142 * Makefile.am (noinst_HEADERS): Add private-options.h, so that it
143 is included in the distribution.
652dbce6 144 (noinst_HEADERS): And the same for eval.i.c.
03291373 145
a2f00b9b
LC
1462007-01-31 Ludovic Courtès <ludovic.courtes@laas.fr>
147
148 * i18n.c: Include "libguile/threads.h" and "libguile/posix.h"
149 unconditionally. Include <langinfo.h> and <nl_types.h> when
150 available.
151 (SCM_I18N_STRINGIFY, SCM_LOCALE_CATEGORY_MASK,
152 SCM_LIST_OR_INTEGER_P): New macros.
153 (LC_*_MASK): When `USE_GNU_LOCALE_API' is undefined, define them
154 as powers of two instead of `(1 << LC_*)'.
155 (scm_i_locale_free): New function/macro.
156 (scm_global_locale): New global variable.
157 (smob_locale_free): Use `scm_i_locale_free ()'.
158 (smob_locale_mark): Check whether the SMOB is `%global-locale'.
159 (get_current_locale_settings): Return `EINVAL' instead of `errno'
160 when `setlocale' fails.
161 (restore_locale_settings): Likewise.
162 (install_locale_categories): Likewise.
163 (install_locale): Likewise. Stop the locale stack traversal when
164 all categories have been handled.
165 (get_current_locale, category_to_category_mask,
166 category_list_to_category_mask): New function.
167 (scm_make_locale): Use them. Accept both lists of `LC_*' values
168 and single `LC_*' values as the first argument. Handle the case
169 where BASE_LOCALE is `%global-locale'. When `USE_GNU_LOCALE_API',
170 duplicate C_BASE_LOCALE before using it.
171 (scm_nl_langinfo, define_langinfo_items): New functions.
172 (scm_init_i18n): When `HAVE_NL_LANGINFO', add feature
173 `nl-langinfo' and invoke `define_langinfo_items ()'.
174 * i18n.h (scm_global_locale, scm_nl_langinfo): New declarations.
175 * posix.c: Include <xlocale.h> when available.
176 (scm_i_locale_mutex): Always define it. Statically initialized.
177 (scm_set_locale): Invoke `scm_i_to_lc_category ()' before
178 acquiring the locale mutex.
179 (scm_init_posix): No longer initialize SCM_I_LOCALE_MUTEX here.
180
b3aa4626
KR
1812007-01-27 Kevin Ryde <user42@zip.com.au>
182
183 * ports.c (scm_port_line, scm_set_port_line_x), read.c
184 (scm_i_input_error, scm_lreadr, scm_lreadrecparen): Corrections to
185 port line number type, should be "long" not "int", as per line_number
186 field of scm_t_port. (Makes a difference only on 64-bit systems, and
187 only then for a linenum above 2Gig.)
188
2a8d66b0
HWN
1892007-01-25 Han-Wen Nienhuys <hanwen@lilypond.org>
190
191 * vector.c: remove comment as per kryde's request.
192
b3aa4626
KR
1932007-01-25 Kevin Ryde <user42@zip.com.au>
194
195 * sort.c (scm_stable_sort): Return empty list for input empty list, as
196 done in guile 1.6 and as always done by plain `sort'. Was falling
197 through to SCM_WRONG_TYPE_ARG. Reported by Ales Hvezda.
198
cb90e2cb
HWN
1992007-01-22 Han-Wen Nienhuys <hanwen@lilypond.org>
200
8cb7939c
HWN
201 * vectors.c (s_scm_vector_move_right_x): complain about naming.
202
d00a0704
HWN
203 * srcprop.c: regularize comments.
204
3d178652
HWN
205 * eval.c: remove superfluous ifndef DEVAL.
206
243ebb61
HWN
207 * private-options.h: idem.
208
209 * eval.i.c: copyright nitpicking.
210
0ee05b85
HWN
211 * eval.c: distangle. move duplicate code to eval.i.c and include
212 twice.
213
214 * eval.i.c: new file.
215
22fc179a
HWN
216 * backtrace.c, debug.c, debug.h, deprecation.c, eq.c, eval.c
217 eval.h, gsubr.c, init.c, macros.c, print.c, print.h, read.c,
218 read.h, stacks.c, symbols.c, throw.c: use private-options.h
219
220 * private-options.h: new file: contain hardcoded option
221 definitions.
222
cb90e2cb
HWN
223 * private-gc.h: add FSF header.
224
62560650
HWN
2252007-01-19 Han-Wen Nienhuys <hanwen@lilypond.org>
226
72f19c26
HWN
227 * debug.h (SCM_RESET_DEBUG_MODE): switch to debugging if
228 memoize-symbol is set.
229
230 * eval.h (SCM_MEMOIZE_HDLR): add macros for memoize symbol trap.
231
232 * eval.c (CEVAL): add memoize_symbol trap.
233
03347a97
HWN
234 * options.c (scm_options_try): new function. This allows error
235 reporting before changing options in a critical section.
236
b0763985
HWN
237 * srcprop.c: use double cell for storing source-properties. Put
238 filename in the plist, and share between srcprops if possible.
239 Remove specialized storage.
240
241 * srcprop.h: remove macros without SCM_ prefix from
242 interface. Remove specialized storage/type definitions.
243
62560650
HWN
244 * read.c: idem.
245
246 * print.c: idem.
247
248 * eval.c: terminate option lists with 0.
249
250 * options.c: remove n (for length) from scm_option_X
251 functions. Detect option list length by looking for NULL name.
252
42ddb3cb
LC
2532007-01-19 Ludovic Courtès <ludovic.courtes@laas.fr>
254
255 * struct.c (scm_i_struct_equalp): Skip comparison if both FIELD1
256 is equal to S1 and FIELD2 is equal to S2. This avoids infinite
257 recursion when comparing `s' fields, as the REQUIRED_VTABLE_FIELDS
258 added by `make-vtable-vtable'. Reported by Marco Maggi.
259
937038e8
HWN
2602007-01-18 Han-Wen Nienhuys <hanwen@lilypond.org>
261
262 * throw.c (scm_ithrow): more refined error message: print symbols
263 too.
264
23d72566
KR
2652007-01-16 Kevin Ryde <user42@zip.com.au>
266
267 * feature.c, feature.h (scm_set_program_arguments_scm): New function,
268 implementing `set-program-arguments'.
269
270 * filesys.c (scm_init_filesys): Use scm_from_int rather than
271 scm_from_long for O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_EXCL,
272 O_NOCTTY, O_TRUNC, O_APPEND, O_NONBLOCK, O_NDELAY, O_SYNC and
273 O_LARGEFILE. These are all int not long, per arg to open().
274 (scm_init_filesys): Use scm_from_int rather than scm_from_long for
275 F_DUPFD, F_GETFD, F_SETFD, F_GETFL, F_SETFL, F_GETOWN, F_SETOWN, these
276 are all ints (per command arg to fcntl). Likewise FD_CLOEXEC which is
277 an int arg to fcntl.
278
279 * posix.c (scm_putenv): Correction to "len" variable, was defined only
280 for __MINGW32__ but used under any !HAVE_UNSETENV (such as solaris).
281 Move it to where it's used. Reported by Hugh Sasse.
282
283 * regex-posix.c (scm_regexp_exec): Remove SCM_CRITICAL_SECTION_START
284 and SCM_CRITICAL_SECTION_END, believe not needed. Their placement
285 meant #\nul in the input (detected by scm_to_locale_string) and a bad
286 flags arg (detected by scm_to_int) would throw from a critical
287 section, causing an abort().
288
289 * regex-posix.c (scm_init_regex_posix): Use scm_from_int for
290 REG_BASIC, REG_EXTENDED, REG_ICASE, REG_NEWLINE, REG_NOTBOL,
291 REG_NOTEOL; they're all ints not longs (per args to regcomp and
292 regexec).
293
a2c40dc7
HWN
2942007-01-10 Han-Wen Nienhuys <hanwen@lilypond.org>
295
296 * throw.c (scm_ithrow): print out key symbol and string arguments
297 when error happens inside a critical section, and document why.
298
391f57e6
HWN
2992007-01-06 Han-Wen Nienhuys <hanwen@lilypond.org>
300
301 * read.c (s_scm_read_hash_extend): document #f argument to
302 read-hash-extend.
303
23d72566
KR
3042007-01-04 Kevin Ryde <user42@zip.com.au>
305
306 * deprecated.h (scm_create_hook), version.h.in (scm_major_version,
307 scm_minor_version, scm_micro_version, scm_effective_version,
308 scm_version, scm_init_version): Use SCM_API instead of just extern,
309 for the benefit of mingw. Reported by Cesar Strauss.
310
93632e3c
HWN
3112007-01-03 Han-Wen Nienhuys <hanwen@lilypond.org>
312
313 * gc.c (s_scm_gc_stats): return an entry for total-cells-allocated
314 too.
315 (gc_update_stats): update scm_gc_cells_allocated_acc too.
316
23d72566
KR
3172006-12-27 Kevin Ryde <user42@zip.com.au>
318
319 * threads.c (get_thread_stack_base): In mingw with pthreads we can use
320 the basic scm_get_stack_base. As advised by Nils Durner.
321
322 * threads.c (get_thread_stack_base): Add a version using
323 pthread_get_stackaddr_np (when available), for the benefit of MacOS.
324 As advised by Heikki Lindholm.
325
326 * scmsigs.c (signal_delivery_thread): Restrict scm_i_pthread_sigmask
327 to HAVE_PTHREAD_SIGMASK, it doesn't exist on mingw. Reported by Nils
328 Durner.
329
3302006-12-24 Kevin Ryde <user42@zip.com.au>
331
332 * posix.c (scm_kill): When only raise() is available, throw an ENOSYS
333 error if pid is not our own process, instead of silently doing nothing.
334
335 * print.c (scm_write, scm_display, scm_write_char): Disable port close
336 on EPIPE. This was previously disabled but introduction of HAVE_PIPE
337 check in configure.in unintentionally enabled it. Believe that
338 testing errno after scm_prin1 or scm_putc is bogus, a long ago error
339 can leave errno in that state. popen.test "no duplicates" output test
340 provoked that.
341
e2bf3b19
HWN
3422006-12-23 Han-Wen Nienhuys <hanwen@lilypond.org>
343
344 * numbers.c (scm_i_fraction_reduce): move logic into
345 scm_i_make_ratio(), so fractions are only read.
346 scm_i_fraction_reduce() modifies a fraction when reading it. A
347 race condition might lead to fractions being corrupted by reading
348 them concurrently.
349
350 Also, the REDUCED bit alters the SCM_CELL_TYPE(), making
351 comparisons between reduced and unreduced fractions go wrong.
352
353 * numbers.h: remove SCM_FRACTION_SET_NUMERATOR,
354 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
355 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
356 SCM_FRACTION_REDUCED.
357
23d72566
KR
3582006-12-16 Kevin Ryde <user42@zip.com.au>
359
360 * scmsigs.c (scm_raise): Use raise() rather than kill(), as this is
361 more direct for a procedure called raise.
362 (kill): Remove mingw fake fallback.
363
3642006-12-15 Kevin Ryde <user42@zip.com.au>
365
366 * scmsigs.c: Conditionalize process.h, add io.h believe needed for
367 _pipe on mingw.
368
3692006-12-14 Kevin Ryde <user42@zip.com.au>
370
371 * threads.c (thread_print): Cope with the case where pthread_t is a
372 struct, as found on mingw. Can't just cast to size_t for printing.
373 Reported by Nils Durner.
374
375 * scmsigs.c: Add <fcntl.h> and <process.h> needed by mingw. Copy the
376 fallback pipe() using _pipe() from posix.c. Reported by Nils Durner.
377
3782006-12-13 Kevin Ryde <user42@zip.com.au>
379
380 * eval.c (scm_m_define): Set 'name procedure property on any
381 scm_procedure_p, not just SCM_CLOSUREP. In particular this picks up
382 procedures with setters as used in srfi-17.
383
384 * posix.c (scm_crypt): Check for NULL return from crypt(), which the
385 linux man page says is a possibility.
386
f30e1bdf
LC
3872006-12-12 Ludovic Courtès <ludovic.courtes@laas.fr>
388
389 * libguile/unif.c (read_decimal_integer): Let RESP be SIGN * RES
42ddb3cb 390 instead of RES (reported by Szavai Gyula). This allows the use of
f30e1bdf
LC
391 negative lower bounds.
392 (scm_i_read_array): Make sure LEN is non-negative (reported by
42ddb3cb 393 Szavai Gyula).
f30e1bdf
LC
394
395 (scm_array_in_bounds_p): Iterate over S instead of always
396 comparing indices with the bounds of S[0]. This fixes
397 `array-in-bounds?' for arrays with a rank greater than one and
398 with different lower bounds for each dimension.
399
23d72566
KR
4002006-12-05 Kevin Ryde <user42@zip.com.au>
401
402 * numbers.c (scm_product): For flonum*inum and complex*inum, return
403 exact 0 if inum==0. Already done for inum*flonum and inum*complex,
404 and as per R5RS section "Exactness".
405
4062006-12-03 Kevin Ryde <user42@zip.com.au>
407
408 * Makefile.am (.c.doc): Remove the "test -n" apparently attempting to
409 allow $AWK from the environment to override. It had syntax gremlins,
410 and the presence of a $(AWK) variable set by AC_PROG_AWK in the
411 Makefile stopped it having any effect. Use just $(AWK), which can be
412 overridden with "make AWK=xxx" in the usual way if desired.
413
22be72d3
LC
4142006-11-29 Ludovic Courtès <ludovic.courtes@laas.fr>
415
416 * libguile/vectors.c (scm_vector_to_list): Fixed list
417 construction: elements were not copied when INC is zero (see
418 "shared array" example in `vectors.test'). Reported by
419 Szavai Gyula.
420
b89c4943
LC
4212006-11-18 Ludovic Courtès <ludovic.courtes@laas.fr>
422
423 * Makefile.am (lib_LTLIBRARIES): Added `libguile-i18n-v-XX.la'.
424 (libguile_la_SOURCES): Added `gettext.c', removed `i18n.c'.
425 (libguile_i18n_v_XX_la_SOURCES, libguile_i18n_v_XX_la_CFLAGS,
426 libguile_i18n_v_XX_la_LIBADD, libguile_i18n_v_XX_la_LDFLAGS): New.
427 (DOT_X_FILES): Added `gettext.x'.
428 (DOT_DOC_FILES): Likewise.
429 (EXTRA_libguile_la_SOURCES): Added `locale-categories.h'.
430 (modinclude_HEADERS): Added `gettext.h'.
431 (EXTRA_DIST): Added `libgettext.h'.
432
433 * gettext.h: Renamed to...
434 * libgettext.h: New file.
435
436 * i18n.c: Renamed to...
437 * gettext.c: New file.
438
439 * i18n.h: Renamed to...
440 * gettext.h: New file.
441
442 * i18n.c, i18n.h, locale-categories.h: New files.
443
444 * init.c: Include "libguile/gettext.h" instead of
445 "libguile/i18n.h".
446 (scm_i_init_guile): Invoke `scm_init_gettext ()' instead of
447 `scm_init_i18n ()'.
448
449 * posix.c: Include "libguile/gettext.h" instead of
450 "libguile/i18n.h" Test `HAVE_NEWLOCALE' and `HAVE_STRCOLL_L'.
451 (USE_GNU_LOCALE_API): New macro.
452 (scm_i_locale_mutex): New variable.
453 (scm_setlocale): Lock and unlock it around `setlocale ()' calls.
454
455 * posix.h: Include "libguile/threads.h".
456 (scm_i_locale_mutex): New declaration.
457
f3e3f530
NJ
4582006-11-17 Neil Jerram <neil@ossau.uklinux.net>
459
460 * script.c (scm_shell_usage): Note need for subscription to bug-guile@gnu.org.
461
d9f71a07
LC
4622006-11-08 Ludovic Courtès <ludovic.courtes@laas.fr>
463
464 * libguile/gc-freelist.c (scm_i_adjust_min_yield): Take two
465 "sweep_stats" arguments; use them instead of accessing the global
466 variables `scm_gc_cells_collected' and `scm_gc_cells_collected_1'.
467
468 * libguile/gc-segment.c (scm_i_sweep_some_cards): Reset SWEEP
469 before each iteration of the loop.
470 (scm_i_sweep_some_segments): Reset SWEEP at each iteration.
471 (scm_i_get_new_heap_segment): Take an additional argument
472 SWEEP_STATS. Compute MIN_CELLS as a function of it.
473
474 * libguile/gc.c (scm_gc_cells_collected,
475 scm_gc_cells_collected_1): Removed.
476 (scm_i_gc_sweep_stats, scm_i_gc_sweep_stats_1): New.
477 (scm_gc_cells_marked_acc, scm_gc_cells_swept_acc,
478 scm_gc_time_taken, scm_gc_mark_time_taken, scm_gc_times,
479 scm_gc_cell_yield_percentage, protected_obj_count): Made `static'.
480 (scm_gc_stats): Use `scm_i_gc_sweep_stats' instead of
481 `scm_gc_cells_(collected|swept)'.
482 (gc_update_stats): New.
483 (gc_end_stats): Use `scm_i_gc_sweep_stats' and
484 `scm_i_gc_sweep_stats_1' instead of the former globals.
485 (scm_gc_for_newcell): Invoke `gc_update_stats ()' after each
486 `scm_i_sweep_some_segments' call. This fixes a bug where the GC
487 would keep allocating new segments instead of re-using collected
488 cells (because `scm_gc_cells_collected' would remain zero).
489
490 * libguile/gc.h (scm_gc_cells_swept, scm_gc_cells_collected,
491 scm_gc_cell_yield_percentage): Removed.
492
493 * libguile/private-gc.h (scm_gc_cells_collected_1): Removed.
494 (scm_i_adjust_min_yield): Updated.
495 (scm_i_get_new_heap_segment): Updated.
496
dd18d312
NJ
4972006-11-02 Neil Jerram <neil@ossau.uklinux.net>
498
499 * modules.c: Correct comment saying that low-level environments
500 will be used "in the next release".
501
502 * init.c: Comment out #include of environments.h.
503 (scm_i_init_guile): Comment out scm_environments_prehistory() and
504 scm_init_environments() calls.
505
506 * Makefile.am (libguile_la_SOURCES): Remove environments.c.
507 (DOT_X_FILES): Remove environments.x.
508 (DOT_DOC_FILES): Remove environments.doc.
509 (modinclude_HEADERS): Remove environments.h.
510
9a5fa6e9
NJ
5112006-10-25 Neil Jerram <neil@ossau.uklinux.net>
512
513 IA64 HP-UX GC patch from Hrvoje Nikšić. (Thanks!)
514
515 * threads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp() and
516 scm_ia64_register_backing_store_base() instead of Linux-specific
517 implementations.
518
519 * gc.h (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp):
520 New declarations.
521
522 * gc.c (__libc_ia64_register_backing_store_base): Declaration
523 removed.
524 (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp): New, with
525 implementations for Linux and HP-UX.
526
527 * coop-pthreads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp()
528 and scm_ia64_register_backing_store_base() instead of
529 Linux-specific implementations.
530
531 * continuations.h (__libc_ia64_register_backing_store_base):
532 Declaration removed.
533 (scm_t_contregs): New "fresh" field.
534
535 * continuations.c (ia64_getcontext): Removed.
536 (scm_make_continuation): Use continuation fresh field instead of
537 interpreting getcontext return values (which isn't portable). Use
538 scm_ia64_ar_bsp() and scm_ia64_register_backing_store_base()
539 instead of Linux-specific implementations.
540 (copy_stack_and_call): Use scm_ia64_register_backing_store_base()
541 instead of Linux-specific implementation.
542
543 * _scm.h (__ia64__): Also detect __ia64.
544
8ab3d8a0
KR
5452006-10-03 Kevin Ryde <user42@zip.com.au>
546
547 * eval.c (SCM_APPLY): For scm_tc7_subr_2o, throw wrong-num-args on 0
548 arguments or 3 or more arguments. Previously 0 called proc with
549 SCM_UNDEFINED, and 3 or more silently used just the first 2.
550
5512006-09-28 Kevin Ryde <user42@zip.com.au>
552
553 * fports.c, ports.c (ftruncate): Use "HAVE_CHSIZE && ! HAVE_FTRUNCATE"
554 for chsize fallback, instead of hard-coding mingw. Mingw in fact
555 supplies ftruncate itself these days.
556
557 * ports.c (fcntl.h): Can include this unconditionally, no need for
558 __MINGW32__.
559
560 * ports.c (truncate): Conditionalize on "HAVE_FTRUNCATE && !
561 HAVE_TRUNCATE" so as not to hard-code mingw. Use "const char *" and
562 "off_t" for parameters, per usual definition of this function, rather
563 than "char *" and "int". Use ftruncate instead of chsize. Check for
564 error on final close.
565
5662006-09-27 Kevin Ryde <user42@zip.com.au>
567
568 * numbers.c (scm_log10): Check HAVE_CLOG10, clog10() is not available
569 in mingw.
570
571 * posix.c (scm_execl, scm_execlp, scm_execle): Cast "const char *
572 const *" for mingw to suppress warnings from gcc (which are errors
573 under the configure default -Werror). Reported by Nils Durner.
574
5752006-09-26 Kevin Ryde <user42@zip.com.au>
576
577 * _scm.h (scm_to_off64_t, scm_from_off64_t): New macros.
578 * fports.c (scm_open_file): Use open_or_open64.
579 (fport_seek_or_seek64): New function, adapting fport_seek.
580 * fports.c, fports.h (scm_i_fport_seek, scm_i_fport_truncate): New
581 functions.
582 * ports.c (scm_seek, scm_truncate_file): Use scm_i_fport_seek and
583 scm_i_fport_truncate to allow 64-bit seeks and truncates on fports.
584
585 * ports.c (scm_truncate_file): Update docstring per manual.
586
5872006-09-23 Kevin Ryde <user42@zip.com.au>
588
589 * numbers.c, numbers.h (scm_log, scm_log10, scm_exp, scm_sqrt): New
590 functions.
591
9a5fa6e9 5922006-09-20 Ludovic Courtès <ludovic.courtes@laas.fr>
a17d2654
LC
593
594 * srfi-14.c: Include <config.h>. Define `_GNU_SOURCE'.
595 (make_predset, define_predset, make_strset, define_strset, false,
596 true): Removed.
597 (SCM_CHARSET_UNSET, CSET_BLANK_PRED, CSET_SYMBOL_PRED,
598 CSET_PUNCT_PRED, CSET_LOWER_PRED, CSET_UPPER_PRED,
599 CSET_LETTER_PRED, CSET_DIGIT_PRED, CSET_WHITESPACE_PRED,
600 CSET_CONTROL_PRED, CSET_HEX_DIGIT_PRED, CSET_ASCII_PRED,
601 CSET_LETTER_AND_DIGIT_PRED, CSET_GRAPHIC_PRED, CSET_PRINTING_PRED,
602 CSET_TRUE_PRED, CSET_FALSE_PRED, UPDATE_CSET): New macros.
603 (define_charset, scm_srfi_14_compute_char_sets): New functions.
604 (scm_init_srfi_14): Use `define_charset ()' instead of
605 `define_predset ()' and `define_strset ()'.
606
607 * srfi-14.h (scm_c_init_srfi_14): Removed.
608 (scm_srfi_14_compute_char_sets): New declaration.
609
610 * posix.h: Include "srfi-14.h".
611 (scm_setlocale): Invoke `scm_srfi_14_compute_char_sets ()' after a
612 successful `setlocale ()' call.
613
8ab3d8a0
KR
6142006-09-08 Kevin Ryde <user42@zip.com.au>
615
616 * socket.c (scm_init_socket): Add MSG_DONTWAIT.
617 (scm_recvfrom): Update docstring from manual.
618
418122ce
RB
6192006-08-31 Rob Browning <rlb@defaultvalue.org>
620
621 * ports.c (scm_c_port_for_each): Add a
622 scm_remember_upto_here_1(ports) at the end of the function to fix
623 a GC bug.
624
b5944f66
NJ
6252006-08-28 Neil Jerram <neil@ossau.uklinux.net>
626
627 * backtrace.c (scm_display_backtrace_with_highlights): Minor
628 improvements to docstring.
629 (scm_backtrace_with_highlights): Analogous improvements.
630
8ab3d8a0
KR
6312006-08-12 Kevin Ryde <user42@zip.com.au>
632
633 * gen-scmconfig.h.in (SCM_I_GSC_NEED_BRACES_ON_PTHREAD_ONCE_INIT):
634 New, set from configure.
635 * gen-scmconfig.c (SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT): New output
636 to scmconfig.h.
637 * pthread-threads.h (SCM_I_PTHREAD_ONCE_INIT): Use
638 SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT to cope with Solaris.
639 Reported by Claes Wallin.
640
b0b0deff
NJ
6412006-08-11 Neil Jerram <neil@ossau.uklinux.net>
642
643 * stacks.c (scm_last_stack_frame): Correct docstring (returns a
644 frame, not a stack).
645
8ab3d8a0
KR
6462006-07-25 Kevin Ryde <user42@zip.com.au>
647
648 * threads.c (get_thread_stack_base): Restrict HAVE_PTHREAD_GETATTR_NP
649 on pthreads version, since pthread_getattr_np not available on solaris
650 and macos. Reported by Claes Wallin.
651
6522006-07-24 Kevin Ryde <user42@zip.com.au>
653
654 * filesys.c (dirfd): Test with #ifndef rather than HAVE_DIRFD, since
655 it's a macro on MacOS X. Reported by Claes Wallin.
656
657 * posix.c (sethostname): Give prototype if not HAVE_DECL_SETHOSTNAME,
658 for the benefit of Solaris 10. Reported by Claes Wallin.
659
660 * socket.c (scm_htonl, scm_ntohl): Use scm_to_uint32 rather than
661 NUM2ULONG, to enforce 32-bit range check on systems with 64-bit long.
662
6632006-07-21 Kevin Ryde <user42@zip.com.au>
664
665 * eval.c, filesys.c (alloca): Update <alloca.h> etc blob, per current
666 autoconf recommendation. Should fix Solaris 10 reported by Claes
667 Wallin.
668
669 * threads.c: Include <string.h>, needed for memset() which is used by
670 FD_ZERO() on Solaris 10. Reported by Claes Wallin.
671
b4912378
RB
6722006-07-18 Rob Browning <rlb@defaultvalue.org>
673
674 * continuations.c: Add __attribute__ ((returns_twice)) to the
675 ia64_getcontext prototype so that gcc will make the right
676 arrangements and avoid an illegal instruction during
677 call-with-current-continuation.
678
9a5fa6e9 6792006-07-12 Ludovic Courtès <ludovic.courtes@laas.fr>
eaa94eaa
LC
680
681 * numbers.c (guile_ieee_init): Use regular ANSI C casts rather
682 than C++-style `X_CAST ()'. Patch posted by by Mike Gran.
683
8ab3d8a0
KR
6842006-07-08 Kevin Ryde <user42@zip.com.au>
685
686 * environments.c (core_environments_unobserve): Use if/else rather
687 than ?: for "SET" bits, avoiding complaints from AIX xlc compiler
688 about them not being rvalues. Reported by Mike Gran.
689
690 * Makefile.am (version.h): Don't use $< in an explicit rule, it's not
691 portable and in particular fails on OpenBSD and AIX (see autoconf
692 manual too). Reported by Mike Gran.
693
6942006-06-25 Kevin Ryde <user42@zip.com.au>
695
696 * stime.c (bdtime2c): tm_gmtoff is seconds East, so take negative of
697 tm:gmtoff which is seconds West. Reported by Aaron VanDevender.
698 (bdtime2c): Test HAVE_STRUCT_TM_TM_GMTOFF for tm_gmtoff, rather than
699 HAVE_TM_ZONE.
700 (scm_strptime): Use tm_gmtoff from the strptime result when that field
701 exists, it's set by glibc strptime "%s".
702
9a5fa6e9 7032006-06-13 Ludovic Courtès <ludovic.courtes@laas.fr>
d15ad007
LC
704
705 * eq.c: Include "struct.h", "goops.h" and "objects.h".
706 (scm_equal_p): Invoke `scm_i_struct_equalp ()' on structures that
707 are not GOOPS instances.
708 * struct.c: Include "eq.h".
709 (scm_free_structs): Use `SCM_STRUCT_VTABLE_DATA ()' instead of
710 hand-written code.
711 (scm_i_struct_equalp): New.
712 * struct.h (scm_i_struct_equalp): New declaration.
713
c862d0e0
KR
7142006-06-06 Kevin Ryde <user42@zip.com.au>
715
716 * Makefile.am (BUILT_SOURCES): Remove guile.texi, only used by
717 maintainers (with doc/maint/docstring.el). Fixes parallel "make -j2"
718 reported by Mattias Holm.
b4912378 719
c862d0e0
KR
7202006-06-03 Kevin Ryde <user42@zip.com.au>
721
722 * read.c (s_vector): Conditionalize on SCM_ENABLE_ELISP, to avoid
723 unused variable warning when elisp disabled. Reported by Ryan
724 VanderBijl.
725
726 * throw.c (scm_handle_by_message): Add dummy return value to avoid
727 compiler warning on cygwin. Reported by Ryan VanderBijl.
728
729 * Makefile.am (EXTRA_DOT_X_FILES): Typo in dependency rule, was a
730 duplicate of EXTRA_DOT_DOC_FILES.
731 (DOT_X_FILES, EXTRA_DOT_X_FILES, DOT_DOC_FILES, EXTRA_DOT_DOC_FILES):
732 Add scmconfig.h to dependencies, since these all run cpp. Helps a
733 parallel "make -j2". Reported by Mattias Holm.
734
7352006-05-30 Kevin Ryde <user42@zip.com.au>
736
737 * ports.c, ports.h (scm_set_port_mark, scm_set_port_free,
738 scm_set_port_print, scm_set_port_equalp, scm_set_port_flush,
739 scm_set_port_end_input, scm_set_port_close, scm_set_port_seek,
740 scm_set_port_truncate, scm_set_port_input_waiting): Use scm_t_bits for
741 port type descriptor, same as scm_make_port_type return value.
742
af4f8612
MV
7432006-05-30 Marius Vollmer <mvo@zagadka.de>
744
745 * eq.c (scm_equal_p): Use scm_array_equal_p explicitely when one
746 of the arguments is a array. This allows vectors to be equal to
747 one-dimensional arrays.
748
18bffcd0
MV
7492006-05-29 Marius Vollmer <mvo@zagadka.de>
750
751 * throw.c (scm_ithrow): When looking for the jmpbuf, first test
752 that we have a pair before accessing its cdr. Thanks to Bill
753 Schottstaedt!
754
c862d0e0
KR
7552006-05-28 Kevin Ryde <user42@zip.com.au>
756
757 * eval.c, filesys.c: Add malloc.h to get alloca() on mingw. Reported
758 by "The Senator".
759
7602006-05-27 Marius Vollmer <mvo@zagadka.de>
b0c0a310
MV
761
762 * srfi-4.c, strings.c: Replace SCM_C_INLINE with
763 SCM_C_INLINE_KEYWORD. Thanks to Mark Gran!
764
c862d0e0
KR
7652006-05-26 Kevin Ryde <user42@zip.com.au>
766
767 * fports.c (fport_input_waiting): For ioctl, check HAVE_IOCTL as well
768 as defined(FIONREAD), since mingw has FIONREAD but not ioctl().
769 Reported by "The Senator".
770 For select and ioctl, move fdes into those conditionals, to avoid
771 unused variable warning when neither of those used.
772
7732006-05-23 Kevin Ryde <user42@zip.com.au>
774
775 * fports.c: Remove "fwrite" declaration under "! HAVE_UNISTD_H".
776 It's unused and will be in stdio.h anyway (if it's anywhere).
777
7782006-05-20 Kevin Ryde <user42@zip.com.au>
779
780 * filesys.c (scm_stat2scm): Test #ifdef S_ISLNK directly, rather than
781 HAVE_S_ISLNK from configure (it was only a #ifdef test anyway).
782
783 * posix.c (scm_mknod): Test #ifdef S_IFLNK before using that (for
784 symlink). Probably can't create symlinks with mknod anyway though.
785
786 * inline.h (scm_is_pair): Add a workaround for i386 gcc 2.95 bad code
787 generation.
788
7892006-05-15 Kevin Ryde <user42@zip.com.au>
790
791 * simpos.c, simpos.h (scm_primitive__exit): New function.
792 (scm_primitive_exit): Update docstring, no longer the best exit after
793 a fork.
794
7952006-05-09 Kevin Ryde <user42@zip.com.au>
796
797 * numbers.c (scm_i_divide): For big/big wanting inexact, use mpq_get_d
798 rather than converting to doubles, to avoid inf or nan when the inputs
799 are too big for a double but the quotient does fit. This affects
800 conversions exact->inexact of big fractions.
801
802 * filesys.c (scm_open_fdes): Use open64.
803 (scm_init_filesys): Add O_LARGEFILE.
804
805 * ports.c (scm_seek): Use lseek64.
806 (scm_truncate_file): Use ftruncate64.
807
4a342b19
MV
8082006-05-08 Marius Vollmer <mvo@zagadka.de>
809
810 * private-gc.h (CELL_P): Also check that the potential pointer is
811 correctly aligned for a cell. Thanks to Miroslav Lichvar!
812
c862d0e0
KR
8132006-04-18 Rob Browning <rlb@defaultvalue.org>
814
815 * _scm.h: Add back error if the size of off_t is unknown. The bug
816 was actually in guile-readline's configuration.
817
8182006-04-18 Kevin Ryde <user42@zip.com.au>
819
820 * posix.c (scm_mkstemp): Update docstring from the manual, in
821 particular file mode 0600 is not guaranteed.
822
281ab5e2
KR
8232006-04-17 Kevin Ryde <user42@zip.com.au>
824
825 * _scm.h (scm_to_off_t, scm_from_off_t): No error if unknown off_t
826 size, to help the guile-readline build where off_t is unused.
827
2b829bbb
KR
8282006-04-16 Kevin Ryde <user42@zip.com.au>
829
830 * filesys.c (scm_stat2scm, scm_stat, scm_lstat): Use stat or stat64.
831 (scm_readdir): Use readdir64.
832 (scm_copy_file): Use open64 and fstat64, to cope with >2Gb files.
833 * ports.c (scm_truncate_file): Use truncate64. Correction truncate
834 and ftruncate take off_t not size_t.
835 * _scm.h (stat_or_stat64 etc): Macros for selecting LFS64 when
836 available.
837
8382006-04-06 Kevin Ryde <user42@zip.com.au>
839
840 * fports.c (scm_setvbuf): Fix for not _IOLBF, clear SCM_BUFLINE
9a5fa6e9 841 instead of toggling it. Reported by Ludovic Courtès.
2b829bbb
KR
842
8432006-03-26 Marius Vollmer <mvo@zagadka.de>
844
845 * threads.c (get_thread_stack_base): Use scm_get_stack_base
846 instead of accessing __libc_stack_end directly, and only do this
847 when pthread_attr_getstack is known not to work for the main
848 thread or when not using pthreads at all.
849
850 * gc_os_dep.c (scm_get_stack_base): Abort when the machine type is
851 unknown instead of returning NULL.
852
9a5fa6e9 8532006-03-21 Ludovic Courtès <ludovic.courtes@laas.fr>
2b829bbb
KR
854
855 * numbers.c (scm_i_mem2number): Renamed to
856 scm_c_locale_stringn_to_number.
857 * numbers.c, print.c, read.c: Updated callers.
858 * numbers.h: Update function declaration.
859
8602006-03-11 Neil Jerram <neil@ossau.uklinux.net>
861
862 * unif.c (string_set): Don't return in a void function. (Reported
863 by Mike Gran.)
864
865 * srfi-4.c (scm_uniform_vector_read_x): Declare base as char*
866 rather than void*, so we can do pointer arithmetic on it.
867 (Reported by Mike Gran.)
868 (s_scm_uniform_vector_write): Ditto.
869
8702006-03-10 Neil Jerram <neil@ossau.uklinux.net>
871
872 * unif.c (scm_make_shared_array): Don't use SCM_I_ARRAY_BASE when
873 oldra is not an array. (Reported by Steve Juranich.)
874
875 * threads.c (do_unlock): Renamed from "unlock", which is defined
876 in unistd.h on QNX. (Reported by Matt Kraai.)
877
8782006-03-04 Kevin Ryde <user42@zip.com.au>
879
880 * deprecated.c (scm_i_defer_ints_etc): Show SCM_DEFER_INTS in message,
881 not SCM_CRITICAL_SECTION_START.
882
883 * eval.c, posix.c: Change comments from C++ to C style. Reported by
884 Mike Gran.
885
8862006-02-28 Kevin Ryde <user42@zip.com.au>
887
888 * unif.c (bitvector_set): Use h->writable_elements not h->elements.
889
8902006-02-26 Kevin Ryde <user42@zip.com.au>
891
892 * filesys.c (scm_readdir): Use fpathconf for the dirent size when
893 NAME_MAX is not available, which is so on Solaris 10. Report and help
894 by Bill Schottstaedt.
895
896 * srfi-13.c (MY_VALIDATE_SUBSTRING_SPEC_UCOPY): New macro.
897 (scm_string_compare, scm_string_compare_ci, scm_string_lt,
898 scm_string_gt, scm_string_le, scm_string_ge, scm_string_ci_lt,
899 scm_string_ci_gt, scm_string_ci_le, scm_string_ci_ge): In comparisons
900 use "unsigned char", not signed char. This ensures comparisons are
901 the same as `char<?' etc, and is also the same as guile 1.6 did.
902 Reported by Sven Hartrumpf.
903
4a9f83ff
MD
9042006-02-19 Mikael Djurfeldt <mdj@neurologic.cc>
905
906 * random.c: Test for SCM_HAVE_T_UINT64 instead of
907 SCM_HAVE_T_INT64.
908 (scm_i_uniform32, scm_i_uniform32, scm_i_init_rstate): Use
909 scm_t_uint64 and scm_t_uint32 instead of scm_t_int64 and
910 scm_t_int32.
911
29d8c124 9122006-01-04 Ludovic Courtès <ludovic.courtes@laas.fr>
4c7016dc
HWN
913
914 * gc-segment.c (scm_i_sweep_some_cards): Take a SWEEP_STATS
915 argument. Don't refer to SCM_GC_CELLS_COLLECTED and
916 SCM_CELLS_ALLOCATED. If SEG->FIRST_TIME, let CELLS_COLLECTED as zero.
917 Take into account SEG->SPAN when computing CELLS_SWEPT.
918 (scm_i_sweep_segment): Take one more argument, similarly.
919 (scm_i_sweep_all_segments): Likewise.
920 (scm_i_sweep_some_segments): Likewise.
921 (scm_i_adjust_min_yield): Change the way MIN_CELLS is computed: do not
922 refer to SCM_GC_CELLS_COLLECTED.
923
924 * gc-freelist.c (scm_i_adjust_min_yield): Take one more
925 argument, an `scm_i_sweep_statistics' object.
926 Change the way DELTA is collected: don't take into account
927 SCM_GC_CELLS_COLLECTED_1, only SWEEP_STATS.COLLECTED.
928
929 * gc-malloc.c (scm_realloc): Pass an extra argument
930 to `scm_i_sweep_all_segments ()'.
931
932 * gc.c (gc_start_stats): Updated accordingly.
933 (gc_end_stats): Take an additional SWEEP_STATS argument.
934 Decrement SCM_CELLS_ALLOCATED after calls to `scm_i_sweep_* ()'.
935 (scm_gc_for_newcell): Updated callers of `scm_i_sweep_*'.
936 Decrement SCM_CELLS_ALLOCATED.
937 (scm_i_gc): Likewise.
938
939 * private-gc.h (scm_i_sweep_*): Updated function
940 prototypes accordingly.
941 (scm_t_sweep_statistics): New type.
942 (scm_i_sweep_statistics_init): New macro.
943 (scm_i_sweep_statistics_sum): New macro
944
9a5fa6e9 9452006-02-14 Ludovic Courtès <ludovic.courtes@laas.fr>
2b829bbb
KR
946
947 * strings.c (scm_i_take_stringbufn): Register LEN+1 bytes instead of
948 LEN. Without this, too much collectable memory gets unregistered,
949 which results in an underflow of SCM_MALLOCATED in
950 `decrease_mtrigger()'.
951
952 * gc-malloc.c (decrease_mtrigger): Make sure SIZE is lower than or
953 equal to SCM_MALLOCATED.
954
9552006-02-13 Marius Vollmer <mvo@zagadka.de>
956
957 * eval.c (scm_eval_body): Use scm_i_dynwind_pthread_mutex_lock
958 oinstead of scm_dynwind_pthread_mutex_lock so that it works when
959 configured --without-threads.
960 (SCM_APPLY, CEVAL): Likewise. Thanks to Han-Wen Nienhuys!
961
1aaa1c17
MV
9622006-02-12 Marius Vollmer <mvo@zagadka.de>
963
964 * unif.c (scm_dimensions_to_uniform_array): Use the prototype for
965 filling when the fill parameter is omitted, as documented, but
966 turn #\nul into 0 since s8 arrays (signified by a #\nul prototype)
967 can not store characters.
968
d7c6575f
NJ
9692006-02-09 Neil Jerram <neil@ossau.uklinux.net>
970
971 * socket.c (scm_c_make_socket_address): Pass address_size pointer
972 on to scm_fill_sockaddr call.
973
43e01b1e
NJ
9742006-02-04 Neil Jerram <neil@ossau.uklinux.net>
975
976 * throw.h (scm_c_catch, scm_c_with_throw_handler,
977 scm_catch_with_pre_unwind_handler, scm_with_throw_handler): New.
978
979 * throw.c (SCM_JBPREUNWIND, SCM_SETJBPREUNWIND): New.
980 (struct pre_unwind_data): New, replaces struct lazy_catch.
981 (scm_c_catch): New, replaces scm_internal_catch as the primary
982 catch API for C code; adds pre-unwind handler support.
983 (scm_internal_catch): Now just a wrapper for scm_c_catch, for back
984 compatibility.
985 (tc16_pre_unwind_data, pre_unwind_data_print,
986 make_pre_unwind_data, SCM_PRE_UNWIND_DATA_P): Renamed from
987 "lazy_catch" equivalents.
988 (scm_c_with_throw_handler): New, replaces scm_internal_lazy_catch
989 as the primary C API for a "lazy" catch.
990 (scm_internal_lazy_catch): Now just a wrapper for
991 scm_c_with_throw_handler, for back compatibility.
992 (scm_catch_with_pre_unwind_handler): Renamed from scm_catch; adds
993 pre-unwind handler support.
994 (scm_catch): Now just a wrapper for
995 scm_catch_with_pre_unwind_handler, for back compatibility.
996 (scm_with_throw_handler): New.
997 (scm_lazy_catch): Update comment to say that the handler can
998 return, and what happens if it does.
999 (toggle_pre_unwind_running): New.
1000 (scm_ithrow): When identifying the throw target, take running
1001 flags into account. In general, change naming of things from
1002 "lazy_catch" to "pre_unwind". When throwing to a throw handler,
1003 don't unwind the dynamic context first. Add dynwind framing to
1004 manage the running flag of a throw handler. If a lazy catch or
1005 throw handler returns, rethrow the same exception again. Add
1006 pre-unwind support to the normal catch case (SCM_JMPBUFP).
1007
1008 * root.c (scm_internal_cwdr): Add NULL args to
1009 scm_i_with_continuation_barrier call.
1010
1011 * dynwind.c: Change comment mentioning lazy-catch to mention
1012 pre-unwind data and throw handler also.
1013
1014 * continuations.h (scm_i_with_continuation_barrier): Add
1015 pre-unwind handler args.
1016
1017 * continuations.c (scm_i_with_continuation_barrier): Add
1018 pre-unwind handler args, and pass on to scm_c_catch (changed from
1019 scm_internal_catch).
1020 (c_handler): Remove scm_handle_by_message_noexit call.
1021 (scm_c_with_continuation_barrier): Call
1022 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
1023 as the pre-unwind handler.
1024 (scm_handler): Remove scm_handle_by_message_noexit call.
1025 (s_scm_with_continuation_barrier): Call
1026 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
1027 as the pre-unwind handler.
1028
2b829bbb
KR
10292006-02-04 Kevin Ryde <user42@zip.com.au>
1030
1031 * gc-mark.c (scm_mark_all): Fix c99-isms "loops" and "again" variables.
1032
72098928
KR
10332006-02-03 Kevin Ryde <user42@zip.com.au>
1034
1035 * list.c, list.h (scm_list): Restore this function for use from C.
1036 It's a complete no-op but in theory might used by someone.
1037
aa092c5d
MV
10382006-01-30 Marius Vollmer <mvo@zagadka.de>
1039
1040 * eval.c (scm_eval_body): Lock source_mutex with a dynwind context
1041 so that it gets unlocked in all cases.
1042 (SCM_APPLY, CEVAL): Likewise.
1043
661ae7ab
MV
10442006-01-29 Marius Vollmer <mvo@zagadka.de>
1045
ee51ba31
MV
1046 * ramap.c: (scm_array_map_x): Don't use scm_array_p, use
1047 scm_is_typed_array instead.
1048
661ae7ab
MV
1049 Renamed the "frames" that are related to dynamic-wind to "dynamic
1050 contexts. Renamed all functions from scm_frame_ to scm_dynwind_.
1051 Updated documentation.
1052
99e370f6
MV
1053 Disabled "futures":
1054
1055 * futures.h, futures.c: Wrap whole contents in "#if 0"/"#endif".
1056 * eval.c, init.c: Comment out all 'future' related things.
1057
15ccf10b
MV
10582006-01-28 Marius Vollmer <mvo@zagadka.de>
1059
1060 * inline.h, pairs.c (scm_is_pair): Moved scm_is_pair from pairs.c
1061 to inline.h to make it inline.
1062
9a5fa6e9 10632005-12-19 Ludovic Courtès <ludovic.courtes@laas.fr>
fd0a5bbc
HWN
1064
1065 * strings.c (scm_i_take_stringbufn): New.
1066 (scm_i_c_take_symbol): New.
1067 (scm_take_locale_stringn): Use `scm_i_take_stringbufn ()'.
1068
1069 * strings.h (scm_i_c_take_symbol): New.
1070 (scm_i_take_stringbufn): New.
1071
1072 * symbols.c (lookup_interned_symbol): New function.
1073 (scm_i_c_mem2symbol): New function.
1074 (scm_i_mem2symbol): Use `lookup_symbol ()'.
1075 (scm_from_locale_symbol): Use `scm_i_c_mem2symbol ()'. This avoids
1076 creating a new Scheme string.
1077 (scm_from_locale_symboln): Likewise.
1078 (scm_take_locale_symbol): New.
1079 (scm_take_locale_symboln): New.
1080
1081 * symbols.h (scm_take_locale_symbol): New.
1082 (scm_take_locale_symboln): New.
1083
2ca2ffe6
HWN
10842006-01-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
1085
1086 * gc-card.c ("sweep_card"): don't count scm_tc_free_cell for
1087 free_count.
1088
c255614e
HWN
10892005-11-29 Han-Wen Nienhuys <hanwen@xs4all.nl>
1090
1091 * regex-posix.c (s_scm_regexp_exec): list the offending pattern
1092 upon error
1093
29295b0c
NJ
10942005-12-29 Neil Jerram <neil@ossau.uklinux.net>
1095
9a5fa6e9 1096 * fluids.c (next_fluid_num): [From Ludovic Courtès:] Don't trigger
29295b0c
NJ
1097 the GC when allocated_fluids_len is zero.
1098
2824f4dc
NJ
10992005-12-14 Neil Jerram <neil@ossau.uklinux.net>
1100
ec3a8ace
NJ
1101 * load.c (the_reader, the_reader_fluid_num): New.
1102 (scm_primitive_load): Support custom reader.
1103 (scm_init_load): Init the_reader and the_reader_fluid_num; export
1104 the_reader as `current-reader'.
1105
2824f4dc
NJ
1106 * scmsigs.c (do_read_without_guile): Use the "raw_data" passed in
1107 (rather than an uninitialized pointer on the stack).
1108
d9c36d2a
MV
11092005-12-07 Marius Vollmer <mvo@zagadka.de>
1110
6a88895b
MV
1111 Reported by Bruce Korb:
1112
1113 * init.c (invoke_main_func): Don't call exit here. Throws that
1114 are only caught by scm_with_guile will bypass us and would cause
1115 scm_boot_guile to return erroneously.
1116 (scm_boot_guile): Expect scm_with_guile to return and call exit
1117 here, passing it an appropriate exit code.
1118
1119 From Andy Wingo:
d9c36d2a
MV
1120
1121 * script.c (scm_find_executable): Compile fix -- fgetc returns an
1122 unsigned char cast to an int, or -1 for EOS.
1123
b54df254
MV
11242005-12-06 Marius Vollmer <mvo@zagadka.de>
1125
08f489c9
MV
1126 * srfi-4.h, srfi-4.c, srfi-4.i.c (take_uvec): Make BASE pointer
1127 non-const.
9a5fa6e9 1128 (scm_take_u8vector, etc): Likewise. Thanks to Ludovic Courtès!
08f489c9 1129
b54df254
MV
1130 * threads.h, threads.c (scm_t_guile_ticket, scm_leave_guile,
1131 scm_enter_guile): Removed from public API. See comment at
1132 scm_without_guile for the rationale.
1133
1134 * scmsigs.c (read_without_guile): New.
1135 (signal_delivery_thread): Use it instead of
1136 scm_leave_guile/read/scm_enter_guile.
1137
9d9ce2b5
MV
1138 From Stephen Compall:
1139
1140 * eval.c (scm_m_cond): Recognize SRFI 61 cond syntax.
1141 (CEVAL): Evaluate SRFI 61 cond clauses.
1142
9a5fa6e9 11432005-12-06 Ludovic Courtès <ludovic.courtes@laas.fr>
9fb5c8f9
NJ
1144
1145 * gc-card.c (scm_i_card_statistics): Return if BITVEC is NULL.
1146 This was typically hit when running `gc-live-object-stats' right
1147 after starting Guile.
1148
efeac8ae
KR
11492005-11-30 Kevin Ryde <user42@zip.com.au>
1150
1151 * srfi-13.c (scm_string_append_shared): No copying if just one
1152 non-empty string in args.
1153
606183ba
KR
11542005-11-26 Kevin Ryde <user42@zip.com.au>
1155
1156 * gc-mark.c (scm_mark_all): Change C++ comment to C comment. Reported
9a5fa6e9 1157 by Ludovic Courtès.
606183ba
KR
1158
1159 * list.c (list): Should be "primitive" in SCM_SNARF_DOCS, not
1160 "register".
1161
1162 * random.c (scm_i_copy_rstate, scm_c_make_rstate): Don't test for
1163 scm_malloc returning NULL, it never does that.
1164 * putenv.c (putenv): Likewise.
1165
1166 * socket.c (scm_fill_sockaddr): Remove SCM_C_INLINE_KEYWORD, this is
1167 much too big to want to inline.
1168
9a5fa6e9 11692005-11-17 Ludovic Courtès <ludovic.courtes@laas.fr>
dbb5de29
NJ
1170
1171 * print.c (EXIT_NESTED_DATA): Before popping from the stack, reset
1172 the value at its top. This fixes a reference leak.
1173 (PUSH_REF): Perform `pstate->top++' after calling
1174 `PSTATE_STACK_SET ()' in order to avoid undesired potential side
1175 effects.
1176
9a5fa6e9 11772005-11-12 Ludovic Courtès <ludovic.courtes@laas.fr>
3f98874a
NJ
1178
1179 * gc.c (scm_weak_vectors): Removed.
1180
f07d2b20
KR
11812005-11-12 Kevin Ryde <user42@zip.com.au>
1182
1183 * socket.c (scm_setsockopt): Missing @defvar in docstring. Reported
9a5fa6e9 1184 by Ludovic Courtès.
f07d2b20 1185
bedd3f5f
MV
11862005-11-07 Marius Vollmer <mvo@zagadka.de>
1187
1188 * stime.c (scm_mktime): Use scm_frame_critical_section instead of
1189 SCM_CRITICAL_SECTION_START/END since the code inside the critical
1190 section might exit non-locally.
1191
7c9c0169
NJ
11922005-11-04 Neil Jerram <neil@ossau.uklinux.net>
1193
1194 * eval.c (sym_instead): New symbol.
1195 (ENTER_APPLY): Remove optional use of a continuation when making
1196 trap call.
1197 (scm_debug_opts): Change doc for 'cheap option to make clear that
1198 it is now obsolete.
1199 (CEVAL, SCM_APPLY): Remove optional use of a continuation when
1200 making trap calls, and implement substitution of eval expressions
1201 and return values using the values that the trap call handlers
1202 return.
1203
1204 * debug.h (SCM_CHEAPTRAPS_P): Removed.
1205
9a5fa6e9 12062005-10-27 Ludovic Courtès <ludovic.courtes@laas.fr>
64cdbfc7
KR
1207
1208 * socket.c (scm_fill_sockaddr): No need to check NULL from scm_malloc.
1209 (scm_connect, scm_bind, scm_sendto): Accept sockaddr object.
1210 (scm_addr_vector): Renamed to _scm_from_sockaddr, update usages.
1211 (scm_from_sockaddr, scm_to_sockaddr, scm_make_socket_address,
1212 scm_c_make_socket_address): New functions.
1213 * socket.h: Add prototypes.
1214
fc9f596c
KR
12152005-10-24 Kevin Ryde <user42@zip.com.au>
1216
1217 * socket.c (scm_init_socket): Add IPPROTO_IP, IPPROTO_TCP,
1218 IPPROTO_UDP. Remove SOL_IP, SOL_TCP, SOL_UDP. The former are in
1219 POSIX spec examples, the latter are not available on for instance
1220 NetBSD.
1221
1222 * socket.c (scm_getsockopt, scm_setsockopt): Update docstrings from
1223 posix.texi.
1224
1225 * stime.c (scm_strftime): Update docstring from posix.texi.
1226
0460c6e1
MV
12272005-10-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1228
1229 PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP is not portable enough.
1230
1231 * null-threads.h, pthread-threads.h
1232 (SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER): Removed.
1233 (scm_i_pthread_mutexattr_recursive): New.
1234
1235 * threads.c (scm_i_pthread_mutexattr_recursive): Declare.
1236 (scm_i_critical_section_mutex): Do not initialize statically.
1237 (scm_threads_prehistory): Initialize
1238 scm_i_pthread_mutexattr_recursive and scm_i_critical_section_mutex
1239 here.
1240
1241 * eval.c (source_mutex): Do not initialiaze statically.
1242 (scm_init_eval): Do it here, using
1243 scm_i_pthread_mutexattr_recursive.
1244
7b4a9e52
MV
12452005-09-05 Marius Vollmer <mvo@zagadka.de>
1246
1247 * print.h (SCM_PRINT_KEYWORD_STYLE_I, SCM_PRINT_KEYWORD_STYLE):
1248 New.
1249 (sym_reader): New.
1250 (scm_print_opts): Added "quote-keywordish-symbols" option.
1251 (quote_keywordish_symbol): New, for evaluating the option.
1252 (scm_print_symbol_name): Use it.
1253 (scm_init_print): Initialize new option to sym_reader.
1254
5defc05d
NJ
12552005-08-15 Neil Jerram <neil@ossau.uklinux.net>
1256
1257 * eval.c (eval_letrec_inits): New.
1258 (CEVAL): Eval letrec initializer forms using eval_letrec_inits.
1259
036482e9
MV
12602005-08-12 Marius Vollmer <mvo@zagadka.de>
1261
1262 * numbers.c: Use scm_from_bool instead of SCM_BOOL. Thanks to
1263 Peter Gavin!
1264
5c347f8c
KR
12652005-08-12 Kevin Ryde <user42@zip.com.au>
1266
1267 * srfi-13.c (scm_string_for_each_index): Correction to docstring.
1268
bc721aa2
KR
12692005-08-06 Kevin Ryde <user42@zip.com.au>
1270
1271 * srfi-13.c (scm_string_any, scm_string_every, scm_string_tabulate,
1272 scm_string_trim, scm_string_trim_right, scm_string_trim_both,
1273 scm_string_index, scm_string_index_right, scm_string_skip,
1274 scm_string_skip_right, scm_string_count, scm_string_map,
1275 scm_string_map_x, scm_string_for_each, scm_string_for_each_index,
1276 scm_string_filter, scm_string_delete): Use scm_t_trampoline_1 for
1277 procedures called in loops.
1278
126c81db
KR
12792005-08-02 Kevin Ryde <user42@zip.com.au>
1280
1281 * strports.c (st_flush): Increase buffer by 1.5x when growing, to
1282 avoid lots of copying where previoulsy growing by only 80 bytes at a
1283 time.
1284
7f278dc6
MV
12852005-08-01 Marius Vollmer <mvo@zagadka.de>
1286
1287 * modules.h, modules.c (scm_eval_closure_module): Removed, we
1288 already have scm_lookup_closure_module, which does the same thing.
1289
cb5c4b07
MV
12902005-08-01 Marius Vollmer <mvo@zagadka.de>
1291
1292 New marking algorithm for weak hashtables that fixes the problem
1293 that references from the non-weak value to the associated weak
1294 key (for example) would prevent the entry from ever being dropped.
1295
1296 Guardians have been changed back to their original semantics and
1297 are no longer greedy and no longer drop cycles.
1298
1299 * gc-mark.c (scm_mark_all): Do not rely on hooks to run the weak
1300 hashtable and guardian machinery but call the relevant functions
1301 directly.
1302
1303 * guardians.h, guardians.c, deprecated.h,
1304 deprecated.c (scm_destroy_guardian_x, scm_guardian_greedy_p,
1305 scm_guardian_destroyed_p, scm_guard, scm_get_one_zombie):
1306 Deprecated and moved into deprecated.[ch].
1307
1308 * guardians.h, guardians.c: Mostly rewritten.
1309 (scm_i_init_guardians_for_gc,
1310 scm_i_identify_inaccessible_guardeds,
1311 scm_i_mark_inaccessible_guardeds): New.
930888e8 1312 (scm_make_guardian): Removed greedy_p argument.
cb5c4b07
MV
1313
1314 * weaks.h, weaks.c (SCM_I_WVECT_TYPE, SCM_I_SET_WVECT_TYPE): New.
1315 (SCM_I_WVECT_N_ITEMS, SCM_I_SET_WVECT_N_ITEMS): New.
1316 (SCM_WVECTF_NOSCAN, SCM_WVECT_NOSCAN_P): Removed.
1317 (scm_weaks_prehistory): Removed.
1318 (scm_i_init_weak_vectors_for_gc, scm_i_mark_weak_vector,
1319 scm_i_mark_weak_vectors_non_weaks,
1320 scm_i_remove_weaks_from_weak_vectors, scm_i_remove_weaks): New.
1321 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
1322 scm_scan_weak_vectors): Removed.
1323
1324 * hashtab.h (scm_i_scan_weak_hashtables): New.
1325 * hashtab.c (make_hash_table, scm_i_rehash): Do not use
1326 SCM_WVECTF_NOSCAN.
1327 (hashtable_print): Use SCM_HASHTABLE_N_ITEMS instead of
1328 t->n_items.
1329 (scan_weak_hashtables, scm_i_scan_weak_hashtables): Renamed former
1330 to latter. Do not scan the alists themselves, this is done by the
1331 weak vector code now. Just update the element count.
1332
1333 * vectors.h (SCM_I_WVECT_TYPE, SCM_I_WVECT_EXTRA): Renamed former
1334 to latter. The type is now only part of the cell word.
1335 (SCM_I_SET_WVECT_TYPE, SCM_I_SET_WVECT_EXTRA): Likewise.
1336
1337 * init.c (scm_i_init_guile): Do not call scm_weaks_prehistory.
1338
3e2073bd
MD
13392005-07-18 Mikael Djurfeldt <mdj@d14n36.pdc.kth.se>
1340
1341 Some changes towards making it possible to run Guile on the EM64T
1342 platform.
1343
1344 * gc.c (scm_gc_stats): Bugfix: Measure size of the type we are
1345 mallocating for (unsigned long *bounds).
1346
1347 * hashtab.c (scm_i_rehash): Cast SCM_HASHTABLE_FLAGS (table) to
1348 scm_t_bits before storing them in the type word.
1349
1350 * gc.c (tag_table_to_type_alist): Modified type of c_tag from
1351 scm_t_bits to int.
1352
e8ac8e75
KR
13532005-07-12 Kevin Ryde <user42@zip.com.au>
1354
1355 * eval.c (scm_dbg_make_iloc): Should be SCM_IFRAMEMAX and
1356 SCM_IDISTMAX, and cast uints through scm_t_bits to make gcc happy.
1357 * pairs.c (scm_error_pair_access): Use scm_from_locale_string rather
1358 than scm_makfrom0str.
1359 Reported by Ken Raeburn.
1360
1361 * gc-card.c (scm_dbg_gc_get_bvec): Change return from long* to
1362 scm_t_c_bvec_long*, gcc 4 doesn't like different pointer targets when
1363 returning SCM_GC_CARD_BVEC.
1364
1365 * pairs.c (scm_error_pair_access): Plain ascii ' in error message
1366 rather than latin-1 acute accent, the latter may not print on all
1367 terminals.
1368
1369 * srfi-13.c (scm_string_filter, scm_string_delete): Strip leading and
1370 trailing deletions, so as to return a substring if those are the only
1371 changes.
1372
adc0677d
KR
13732005-07-10 Kevin Ryde <user42@zip.com.au>
1374
1375 * socket.c (scm_inet_pton, scm_inet_ntop): Pointer cast to scm_t_uint8
1376 for scm ipv6 funcs, gcc 4 is picky about char* vs uchar*.
1377 (scm_getsockopt, scm_accept, scm_getsockname, scm_getpeername,
1378 scm_recvfrom) Use socklen_t, gcc 4 is picky about int* vs socklen_t*.
1379
8fecbb19
HWN
13802005-07-01 Han-Wen Nienhuys <hanwen@xs4all.nl>
1381
1382 * gc-card.c (scm_i_card_statistics): init tag.
1383
1384 * gc.c (tag_table_to_type_alist): check type of tag. Should be integer.
1385
fc9c5d06
HWN
13862005-06-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
1387
8fecbb19
HWN
1388 * fports.c (s_scm_open_file): add the b flag for binary to the doc
1389 string.
fc9c5d06 1390
08fce816
KR
13912005-06-25 Kevin Ryde <user42@zip.com.au>
1392
1393 * srfi-13.c (scm_string_filter, scm_string_delete): Partial revert
1394 last change, use plain copy-on-write substrings, the individual
1395 descriptions in the srfi don't mention shared storage (only the
1396 introduction does).
1397
1398 * strings.c (scm_take_locale_stringn): Use realloc to make room for
1399 null-terminator, rather than mallocing a whole new block.
1400 (scm_take_locale_string): Use scm_take_locale_stringn len==-1.
1401
fc4abd0e
MV
14022005-06-12 Marius Vollmer <mvo@zagadka.de>
1403
e3da8a30
MV
1404 * ramap.c (scm_array_index_map_x): First test for real arrays,
1405 then check for generalized vectors. This ensures that the
1406 generalized vector case need only work with zero-origin ranges.
12097c77
MV
1407 (scm_ra_eqp, scm_ra_compare): Use the new array handle functions
1408 to access the target array, making these functions work with all
1409 kinds of arrays, not just bit arrays.
e3da8a30 1410
fc4abd0e
MV
1411 * gh.h, gh_data.c, gh_eval.c, gh_funcs.c, gh_init.c, gh_io.c,
1412 gh_list.c, gh_predicates.c: Deprecated everything.
1413
1414 * environments.c (environment_default_folder,
1415 environment_default_observer): Do not use gh_call3, gh_call1.
1416
e4da0740
HWN
14172005-06-10 Han-Wen Nienhuys <hanwen@xs4all.nl>
1418
1419 * modules.c (s_scm_eval_closure_module): new function. Return the
1420 module inside an eval-closure.
1421
1422 * gc.c (scm_init_storage): make scm_stand_in_procs a weak_key hash
1423 table. This means that procedure properties are GC'd if the
1424 procedure dies.
1425
27667158
KR
14262005-06-11 Kevin Ryde <user42@zip.com.au>
1427
1428 * srfi-13.c (scm_string_filter, scm_string_delete): For char and
1429 charset cases, count chars kept and build a string in a second pass,
1430 rather than using a cons cell for every char kept. Use a shared
1431 substring when nothing removed (such sharing is allowed by the srfi).
1432
8a00ba71
HWN
14332005-06-09 Han-Wen Nienhuys <hanwen@xs4all.nl>
1434
1435 * gc.c (tag_table_to_type_alist): convert tag number to "tag %d"
1436 string, so live object stats can be sorted with string<?.
1437
a677679f
MV
14382005-06-06 Marius Vollmer <mvo@zagadka.de>
1439
2ff668b0
MV
1440 * print.c (iprin1): When writing a string, collect all characters
1441 that can be printed directly into one call to scm_lfwrite.
1442 Previously, every character was output with its own call to
1443 write(2) on unbuffered ports.
1444
589f22f6
MV
1445 * eval.c (scm_eval_options_interface): Use
1446 scm_frame_critical_section instead of SCM_CRITICAL_SECTION_START
1447 and SCM_CRITICAL_SECTION_END.
1448
a677679f
MV
1449 * unif.c (scm_array_in_bounds_p): First test for real arrays, then
1450 check for generalized vectors. This ensures that the generalized
1451 vector case need only work with zero-origin ranges.
1452
f8cda9ee
KR
14532005-06-06 Kevin Ryde <user42@zip.com.au>
1454
1455 * srfi-13.c (scm_string_split): Compare char/char in scan. Mixing an
1456 unsigned int SCM_CHAR and a char string meant an 8-bit char was never
1457 matched.
1458
cdac1be4
MV
14592005-06-05 Marius Vollmer <mvo@zagadka.de>
1460
6642f7ac
MV
1461 * eval.c: Added comment on how to make case 1.1 of
1462 r5rs_pitfall.test succeed.
1463
cdac1be4
MV
1464 From Jan Nieuwenhuizen <janneke@gnu.org>. Thanks!
1465
1466 * hashtab.h: Bugfix: use SCM_API (WAS: extern).
1467
1468 * socket.c: Remove obsolete comment about socklen_t.
1469 (s_scm_setsockopt)[!HAVE_IP_MREQ]: Do not use ip_mreq code.
1470
1471 * numbers.h (isnan)[__MINGW32__]: Remove.
1472
1473 * Makefile.am (gen_scmconfig_SOURCES): Bugfix: Add
1474 DEFAULT_INCLUDES when cross compiling.
1475
1476 * threads.c (ETIMEDOUT, pipe)[__MINGW32__]: Add defines.
1477
a677679f 1478 * stime.c (scm_strftime)[!HAVE_TM_ZONE]: Use
cdac1be4
MV
1479 SCM_SIMPLE_VECTOR_REF instead of SCM_VELTS. (Changed slightly
1480 from Jan's patch.)
1481
9e664475
MV
14822005-05-22 Marius Vollmer <mvo@zagadka.de>
1483
188d0c5e
MV
1484 * unif.c (scm_make_shared_array): Add old base to new base since
1485 scm_array_handle_pos does not include the base.
1486 (scm_aind): Likewise.
1487
9e664475
MV
1488 * ports.c (scm_putc, scm_puts): Assert that the port argument is a
1489 output port.
1490
5a6d139b
NJ
14912005-05-12 Neil Jerram <neil@ossau.uklinux.net>
1492
1493 Mac OS X compile warning fixes, reported by Richard Todd.
1494
1495 * unif.c (scm_i_read_array): Declare rank as ssize_t, to guarantee
1496 that it is signed.
1497
1498 * strports.c (st_resize_port): Add unsigned char cast.
1499 (scm_mkstrport): Make read/write_buf cast unsigned.
1500
1501 * srfi-13.c (string_titlecase_x): Add unsigned char cast.
1502
1503 * rdelim.c (scm_read_line): Initialize slen.
1504
1505 * load.c (scm_search_path): Remove weird >=1, and add
1506 parentheses to clarify conditions.
1507
1508 * hash.c (scm_hasher): Add const unsigned char cast.
1509
1510 * gh_data.c (gh_chars2byvect): Add scm_t_int8 cast.
1511
b01532af
NJ
15122005-05-11 Neil Jerram <neil@ossau.uklinux.net>
1513
9a5fa6e9 1514 Fix C99isms reported by Ludovic Courtès:
b01532af
NJ
1515
1516 * threads.c (s_scm_lock_mutex): Don't declare msg in middle of
1517 code.
1518
1519 * gc.c (s_scm_gc_live_object_stats): Don't declare alist in middle
1520 of code.
1521
1522 * gc-card.c (scm_i_card_statistics): Don't declare tag in middle
1523 of code.
1524 (scm_i_card_statistics): Add block for declarations of tag_as_scm
1525 and current.
1526
229a0710
NJ
15272005-05-10 Neil Jerram <neil@ossau.uklinux.net>
1528
1529 * scmsigs.c (signal_delivery_thread): Return a value, to avoid
1530 compile warning reported by Werner Scheinast.
1531
645dd3fc
HWN
15322005-04-30 Han-Wen Nienhuys <hanwen@xs4all.nl>
1533
80038021
HWN
1534 * list.h: remove scm_list()
1535
645dd3fc
HWN
1536 * fluids.c (DYNAMIC_STATE_NEXT_LOC): new macro for use with
1537 SCM_DEBUG_CELL_ACCESSES
1538 (FLUID_NEXT_LOC): idem.
1539
9a68a4a8
KR
15402005-04-30 Kevin Ryde <user42@zip.com.au>
1541
1542 * numbers.c (scm_divide): Correction to 1/complex and <any>/complex,
1543 need to test abs(re)<abs(im) for choice of cases, otherwise divide by
1544 zero when re==0 and im<0. Reported by Jean Crepeau.
1545
0640cdaa
KR
15462005-04-25 Kevin Ryde <user42@zip.com.au>
1547
1548 * ramap.c (scm_array_map_x): Allow no source args, add num args checks
4d54ee35
KR
1549 to subr_1, subr_2, subr_2o and dsubr cases. No source args only has a
1550 few sensible uses (like filling with a random number generator say),
1551 but has been allowed in the past and so should be kept.
0640cdaa 1552
c0b85e9c
KR
15532005-04-23 Kevin Ryde <user42@zip.com.au>
1554
1555 * hashtab.c (scm_hashx_remove_x): Need to pass "closure" to
1556 scm_hash_fn_remove_x.
1557
1558 * list.c (scm_cons_star): Don't modify the rest list, it belongs to
1559 the caller when cons* is reached through apply.
1560
1561 * list.c (list): Use scm_list_copy, so as to produce a fresh list when
1562 list is called using apply, under the debugging evaluator.
1563 (scm_list): Remove.
1564
c51682b4
KR
1565 * list.c, list.h (scm_make_list): New code, moving make-list from
1566 boot-9.scm.
8cb2eff8 1567
c0575bde
KR
15682005-04-14 Kevin Ryde <user42@zip.com.au>
1569
1570 * numbers.c, numbers.h (scm_oneplus, scm_oneminus): New functions,
1571 converted from scheme code in boot-9.scm.
1572
47a298d9
KR
15732005-04-11 Kevin Ryde <user42@zip.com.au>
1574
1575 * srfi-13.c (scm_string_concatenate, scm_string_concatenate_shared):
1576 Validate list argument, scm_string_append and scm_string_append_shared
1577 don't do that to their rest argument (in a normal build).
1578
8ea3dc2e
MV
15792005-04-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1580
1581 * hashtab.h, hashtab.c (scm_t_hashtable): Removed 'closure' field. The
1582 closure can not be stored since it is no longer valid at GC time.
1583 (make_hash_table): Initialize 'hash_fn' field.
1584 (scm_i_rehash): Only store hash_fn in hash table when closre is
1585 NULL.
1586 (rehash_after_gc): Only call scm_i_rehash when 'hash_fn' is
1587 non-NULL. Always use a NULL closure.
1588 (scm_hash_fn_create_handle_x): Also rehash when table contains too
1589 few entries.
1590
08d2020d
MV
15912005-03-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1592
1593 * hashtab.h, hashtab.c (scm_hash_fx_remove_x): Removed delete_fn
1594 argument; always use scm_delq_x. The delete_fn function works on
1595 the handle, not the key, and it therefore makes no sense to make
1596 it configurable. Changed all callers.
1597 (scm_hashx_remove_x): Likewise. Also, exported to Scheme.
1598 (scm_hash_clear): Accept plain vectors as hashtables.
1599 (scm_delx_x): Removed.
1600
cb975c21
HWN
16012005-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
1602
1603 * inline.h (scm_double_cell): use __asm__ iso. asm, to maintain
1604 compatibility with gcc -std=c99.
1605
4c908f2c
MD
16062005-03-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1607
1608 * async.h (scm_mask_ints): Removed left over reference to
1609 scm_root.
1610
1611 * threads.c: Removed fprintf debug statements.
1612
d193b04b
NJ
16132005-03-24 Neil Jerram <neil@ossau.uklinux.net>
1614
1615 * debug.c (scm_make_memoized): Restore use of SCM_UNPACK.
1616
c29748cd
NJ
16172005-03-23 Neil Jerram <neil@ossau.uklinux.net>
1618
1619 * debug.c (scm_make_memoized): Remove unnecessary critical
1620 section, and simplify by using SCM_RETURN_NEWSMOB.
1621
e654b062
MD
16222005-03-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1623
1624 * strings.h (SCM_STRING_UCHARS): Added missing argument.
1625
4bc6f1c6
KR
16262005-03-18 Kevin Ryde <user42@zip.com.au>
1627
1628 * arbiters.c (FETCH_STORE) [generic C]: Should be
9a5fa6e9 1629 scm_i_scm_pthread_mutex_lock/unlock now. Reported by Ludovic Courtès.
4bc6f1c6 1630
f1531813
KR
16312005-03-13 Kevin Ryde <user42@zip.com.au>
1632
1633 * numbers.c, numbers.h (scm_i_clonebig): Remove static, so can use in
1634 srfi-60.
1635
1636 * numbers.c (scm_logior): Must scm_i_normbig results as per scm_logand,
1637 because OR-ing bits into a negative can reduce the value to an inum.
1638
1639 * numbers.c (scm_num_eq_p): On 64-bit systems, be careful about
1640 casting inum to double since that can lose precision.
1641
a9fae247
MV
16422005-03-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1643
1644 * threads.h, threads.c (scm_i_thread): Added gc_running_p field.
1645 (guilify_self_1): Initialize it.
1646
1647 * gc.h, gc.c (SCM_FREECELL_P): Removed for good.
1648 (scm_block_gc, scm_gc_heap_lock): Removed. Removed all uses.
1649 (scm_gc_running_p): Now a macro that refers to the scm_i_thread
1650 field.
1651 (scm_i_sweep_mutex): Now a non-recursive mutex. GC can not happen
1652 recursively.
1653 (scm_igc, scm_i_gc): Renamed former to latter. Changed all uses.
1654 Do not lock scm_i_sweep_mutex, which is now non-recursive, or set
1655 scm_gc_running_p. Do not run the scm_after_gc_c_hook.
1656 (scm_gc): Lock scm_i_sweep_mutex, set scm_gc_running_p and run the
1657 scm_after_gc_c_hook here.
1658 (scm_gc_for_new_cell): Set scm_gc_running_p here and run the
1659 scm_after_gc_c_hook when a full GC has in fact been performed.
1660 (scm_i_expensive_validation_check): Call scm_gc, not scm_i_gc.
1661
1662 * gc-segment.c (scm_i_get_new_heap_segment): Do not check
1663 scm_gc_heap_lock.
1664
1665 * gc-malloc.c (scm_realloc, increase_mtrigger): Set
1666 scm_gc_running_p while the scm_i_sweep_mutex is locked.
1667
1668 * inline.h (scm_cell, scm_double_cell): Do not check
1669 scm_gc_running_p, allocation during sweeping is OK.
1670
1671 * gdbint.c (SCM_BEGIN_FOREIGN_BLOCK, SCM_END_FOREIGN_BLOCK): Do
1672 not set scm_block_gc.
1673
1674 * init.c (scm_i_init_guile): Do not set scm_block_gc.
1675
1676 * deprecation.c (scm_c_issue_deprecation_warning): Use malloc
1677 instead of scm_malloc. The latter can not be used during GC.
1678
d1c38e11
MV
16792005-03-09 Marius Vollmer <mvo@zagadka.de>
1680
1681 * script.c (scm_compile_shell_switches): Added 2005 to Copyright
1682 years.
1683
99ec43c1
MV
16842005-03-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1685
1686 * gc-card.c (scm_i_sweep_card): Do not increase/decrease
1687 scm_gc_running_p. Sweeping can happen in parallel with
1688 allocation.
1689
1690 * inline.h: Updated comments for current threading implementation.
1691
1692 * threads.h, threads.c (scm_i_frame_single_threaded): Removed.
1693 (scm_i_thread): Removed unused signal_asyncs field.
1694 (threads_mark): Do not mark it.
1695 (guilify_self_1): Do not initialize it. Do initialize
1696 continuation_root field.
1697 (do_thread_exit): Do not remove thread from all_threads list.
1698 (on_thread_exit): Do it here, after leaving guile mode.
1699 (sleep_level): Removed.
1700 (scm_i_thread_put_to_sleep): Leave thread_admin_mutex locked when
1701 returning. Do not support recursive sleeps.
1702 (scm_i_thread_wake_up): Expect thread_admin_mutex to be locked on
1703 entry. Do not support recursive sleeps.
1704
1705 * fluids.c (ensure_state_size, ensure_all_state_sizes,
1706 resize_all_states): Collapsed ensure_state_size and
1707 ensure_all_state_sizes into one function named resize_all_states.
1708 Allocate new vectors outside of single threaded region. Do only
1709 simple things inside that region.
1710 (scm_make_fluid, scm_make_dynamic_state): Lock fluid_admin_mutex
1711 while adding to the global lists.
1712
1713
461f34aa
MV
17142005-03-08 Marius Vollmer <mvo@zagadka.de>
1715
1716 libltdl is no longer distributed. We expect it to be installed
1717 already.
1718
1719 * Makefile.am (INCLUDES): Removed @LTDLINCL@.
1720 (libguile_la_LIBADD): Removed @LIBLTDL@.
1721
4e047c3e
MV
17222005-03-07 Marius Vollmer <mvo@zagadka.de>
1723
1724 * threads.h, async.h, threads.c (SCM_CRITICAL_SECTION_START,
1725 SCM_CRITICAL_SECTION_END): Moved here from threads.h since now
1726 they also block/unblock execution of asyncs and call
1727 scm_async_click which is declared in async.h but threads.h can not
1728 include async.h since async.h already includes threads.h.
1729 (scm_i_critical_section_level): New, for checking mistakes in the
1730 use of the SCM_CRITICAL_SECTION_* macros.
1731 (scm_i_critical_section_mutex): Make it a recursive mutex so that
1732 critical sections can be nested.
1733
1734 * throw.c (scm_ithrow): Abort when scm_i_critical_section_level is
1735 not zero.
1736
1737 * threads.h, threads.c (scm_frame_lock_mutex): New.
1738 (scm_frame_critical_section): Take mutex as argument.
1739 (framed_critical_section_mutex): New, used as default for above.
1740 (scm_init_threads): Initialize it.
1741 (scm_threads_prehistory): Do not initialize thread_admin_mutex and
1742 scm_i_critical_section_mutex; both are initialized statically.
1743
1744 * continuation.c, deprecated.c, goops.c, guardians.c keywords.c,
1745 libguile_la-arrays.loT, objprop.c, ports.c, smob.c, sort.s,
b9d9ad3a
MV
1746 srcprop.c, stime.c, struct.c, throw.c, regex-posix.c: Include
1747 "libguile/async.h" for SCM_CRITICAL_SECTION_START/END.
4e047c3e
MV
1748
1749 * debug.c (scm_debug_options): Replace
1750 SCM_CRITICAL_SECTION_START/END with a frame and
1751 scm_frame_critical_section.
1752
1753 * continuations.c (scm_make_continuation): No longer a critical
1754 section.
1755 (scm_dynthrow): Abort when scm_i_critical_section_level is
1756 not zero.
1757
d0a45bff
MV
17582005-03-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1759
db6673e5
MV
1760 * threads.c (scm_try_mutex): Renamed argument for consistency.
1761
d0a45bff
MV
1762 * root.c (scm_call_with_dynamic_root): New docstring.
1763
1764 * eval.c: Define _GNU_SOURCE.
1765
9de87eea
MV
17662005-03-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1767
1768 Big merge from the mvo-thread-cleanup branch. The main changes
1769 are:
1770
1771 - The dynamic roots functionality has been split into dynamic
1772 states and continuations barriers. Fluids have been
1773 reimplemented and can now be garbage collected.
1774
1775 - Initialization of Guile now works in a multi-thread friendly
1776 manner. Threads can freely enter and leave guile mode.
1777
1778 - Blocking on mutexes or condition variables or while selecting
1779 can now be reliably interrupted via system asyncs.
1780
1781 - The low-level threading interface has been removed.
1782
1783 - Signals are delivered via a pipe to a dedicated 'signal delivery
1784 thread'.
1785
1786 - SCM_DEFER_INTS, SCM_ALLOW_INTS etc have been deprecated.
1787
1788 * throw.c (scm_handle_by_message): Exit only the current thread,
1789 not the whole process.
1790 (scm_handle_by_message_noexit): Exit when catching 'quit.
1791
1792 * scmsigs.c (take_signal, signal_delivery_thread,
1793 start_signal_delivery_thread, ensure_signal_delivery_thread,
1794 install_handler): Reimplemented signal delivery as explained in
1795 the comments.
1796
1797 * pthreads-threads.h (scm_i_pthread_t, scm_i_pthread_self,
1798 scm_i_pthread_create, scm_i_pthread_detach, scm_i_pthread_exit,
1799 scm_i_sched_yield, scm_i_pthread_sigmask,
1800 SCM_I_PTHREAD_MUTEX_INITIALIZER,
1801 SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER, scm_i_pthread_mutex_t ,
1802 scm_i_pthread_mutex_init, scm_i_pthread_mutex_destroy,
1803 scm_i_pthread_mutex_trylock, scm_i_pthread_mutex_lock,
1804 scm_i_pthread_mutex_unlock, SCM_I_PTHREAD_COND_INITIALIZER,
1805 scm_i_pthread_cond_t, scm_i_pthread_cond_init,
1806 scm_i_pthread_cond_destroy, scm_i_pthread_cond_signal,
1807 scm_i_pthread_cond_broadcast, scm_i_pthread_cond_wait,
1808 scm_i_pthread_cond_timedwait, scm_i_pthread_once_t,
1809 SCM_I_PTHREAD_ONCE_INIT, scm_i_pthread_once, scm_i_pthread_key_t ,
1810 scm_i_pthread_key_create, scm_i_pthread_setspecific,
1811 scm_i_pthread_getspecific, scm_i_scm_pthread_mutex_lock,
1812 scm_i_frame_pthread_mutex_lock, scm_i_scm_pthread_cond_wait,
1813 scm_i_scm_pthread_cond_timedwait): Provide the obvious mapping
1814 when using pthreads.
1815 * null-threads.c, null-threads.h: Provide dummy definitions for
1816 the above symbols when not using pthreads.
1817
1818 * modules.h, modules.c (scm_frame_current_module): New.
1819
1820 * load.c (scm_primitive_load): Use scm_i_frame_current_load_port
1821 instead of scm_internal_dynamic_wind.
1822
1823 * init.h, init.c (restart_stack, start_stack): Removed.
1824 (scm_boot_guile, invoke_main_func): Simply use scm_with_guile.
1825 (scm_boot_guile_1): Removed.
1826 (scm_i_init_mutex): New.
1827 (really_cleanup_for_exit, cleanup_for_exit): New.
1828 (scm_init_guile_1, scm_i_init_guile): Renamed former to latter.
1829 Moved around some init funcs. Call
1830 scm_init_threads_default_dynamic_state. Register cleanup_for_exit
1831 with atexit.
1832
1833 * hashtab.c (scm_hash_fn_create_handle_x, scm_hash_fn_remove_x):
1834 Use "!scm_is_eq" instead of "!=".
1835
1836 * ge-scmconfig.c, gen-scmconfig.h.in (SCM_I_GSC_USE_COOP_THREADS,
1837 SCM_USE_COOP_THREADS): Removed.
1838
1839 * gc.c (scm_igc): Take care that scm_gc_running_p is properly
1840 maintained. Unlock scm_i_sweep_mutex before running
1841 scm_after_gc_c_hook.
1842 (scm_permanent_object): Allocate outside of critical section.
1843 (cleanup): Removed.
1844
1845 * fluids.h, fluids.c: Reimplemented completely.
1846 (SCM_FLUID_NUM, SCM_FAST_FLUID_REF,
1847 SCM_FAST_FLUID_SET): Reimplemented as functions.
1848 (scm_is_fluid): New.
1849 (scm_i_make_initial_fluids, scm_i_copy_fluids): Removed.
1850 (scm_make_dynamic_state, scm_dynamic_state_p,
1851 scm_is_dynamic_state, scm_current_dynamic_state,
1852 scm_set_current_dynamic_state, scm_frame_current_dynamic_state,
1853 scm_c_with_dynamic_state, scm_with_dynamic_state,
1854 scm_i_make_initial_dynamic_state, scm_fluids_prehistory): New.
1855
1856 * feature.c (progargs_fluid): New.
1857 (scm_program_arguments, scm_set_program_arguments): Use it instead
1858 of scm_progargs.
1859 (scm_init_feature): Allocate it. Also, only add "threads" feature
1860 when SCM_USE_PTHREAD_THREADS is true.
1861
1862 * eval.c (scm_makprom): Use scm_make_recursive_mutex instead of
1863 scm_make_rec_mutex, with all the consequences.
1864 (scm_eval_x, scm_eval): Use scm_frame_begin etc instead of
1865 scm_internal_dynamic_wind. Handle dynamic states as second
1866 argument.
1867
1868 * threads.h, threads.c (scm_internal_select): Renamed to
1869 scm_std_select and discouraged old name.
1870 (scm_thread_sleep, scm_thread_usleep): Likewise, as scm_std_sleep
1871 and scm_std_usleep.
1872 (scm_tc16_fair_mutex, scm_tc16_fair_condvar, SCM_MUTEXP,
1873 SCM_FAIR_MUTEX_P, SCM_MUTEX_DATA, SCM_CONDVARP,
1874 SCM_FAIR_CONDVAR_P, SCM_CONDVAR_DATA, SCM_THREADP,
1875 SCM_THREAD_DATA): Removed.
1876 (SCM_I_IS_THREAD, SCM_I_THREAD_DATA): New.
1877 (scm_i_thread): New.
1878 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
1879 Use scm_assert_smob_type.
1880 (scm_c_scm2thread, scm_thread_join, scm_thread_detach,
1881 scm_thread_self, scm_thread_yield, scm_mutex_init,
1882 scm_mutex_destroy, scm_mutex_trylock, scm_mutex_unlock,
1883 scm_rec_mutex_init, scm_rec_mutex_destroy, scm_make_rec_mutex,
1884 scm_rec_mutex_free, scm_rec_mutex_lock, scm_rec_mutex_trylock,
1885 scm_cond_init, scm_cond_destroy, scm_cond_wait,
1886 scm_cond_timedwait, scm_cond_signal, scm_cond_broadcast,
1887 scm_key_create, scm_key_delete, scm_setspecific, scm_getspecific,
1888 scm_thread_select): Removed. Replaced with scm_i_pthread
1889 functions as appropriate.
1890 (scm_in_guile, scm_outside_guile): Removed.
1891 (scm_t_guile_ticket, scm_leave_guile, scm_enter_guile): Return and
1892 take a ticket.
1893 (scm_with_guile, scm_without_guile, scm_i_with_guile_and_parent):
1894 New.
1895 (scm_i_frame_single_threaded): New.
1896 (scm_init_threads_default_dynamic_state): New.
1897 (scm_i_create_thread): Removed.
1898 (scm_make_fair_mutex, scm_make_fair_condition_variable): Removed.
1899 (scm_make_recursive_mutex): New.
1900 (scm_frame_critical_section): New.
1901 (SCM_CURRENT_THREAD, SCM_I_CURRENT_THREAD): Renamed former to
1902 latter, changed all uses.
1903 (scm_i_dynwinds, scm_i_setdynwinds, scm_i_last_debug_frame,
1904 scm_i_set_last_debug_frame): New, use them instead of scm_root
1905 stuff.
1906 (SCM_THREAD_LOCAL_DATA, SCM_SET_THREAD_LOCAL_DATA,
1907 scm_i_root_state_key,m scm_i_set_thread_data): Removed.
1908 (scm_pthread_mutex_lock, scm_frame_pthread_mutex_lock,
1909 scm_pthread_cond_wait, scm_pthread_cond_timedwait).
1910 (remqueue): Allow the removal of already removed cells. Indicate
1911 whether a real removal has happened.
1912 (scm_thread): Removed, replaced with scm_i_thread.
1913 (make_thread, init_thread_creatant): Removed.
1914 (cur_thread): Removed.
1915 (block_self, unblock_from_queue): New.
1916 (block, timed_block, unblock): Removed.
1917 (guilify_self_1, guilify_self_2, do_thread_exit,
1918 init_thread_key_once, init_thread_key,
1919 scm_i_init_thread_for_guile, get_thread_stack_base,
1920 scm_init_guile): New initialisation method.
1921 (scm_call_with_new_thread, scm_spawn_thread): Use it to simplify
1922 thread creation.
1923 (fair_mutex, fat_mutex, etc, fair_condvar, fat_condvar): Renamed
1924 "fair" to fat and implemented new semantics, including reliable
1925 interruption.
1926 (all_threads): Now a pointer to a scm_i_thread, not a SCM.
1927 (scm_threads_mark_stacks): Explicitly mark handle.
1928 (scm_std_select): Allow interruption by also selecting on the
1929 sleep_pipe.
1930 (scm_i_thread_put_to_sleep): Handle recursive requests for
1931 single-threadedness.
1932 (scm_threads_prehistory, scm_init_threads): Put current thread
1933 into guile mode via guileify_self_1 and guileify_self_2,
1934 respectively.
1935
1936 * fluid.h (SCM_FLUIDP): Deprecated.
1937
1938 * coop-threads.c: Removed.
1939
1940 * continuations.h, continuations.c (scm_with_continuation_barrier,
1941 scm_c_with_continuation_barrier, scm_i_with_continuation_barrier):
1942 New.
1943
1944 * async.h, async.c (scm_i_setup_sleep, scm_i_reset_sleep): New.
1945 (async_mutex): New.
1946 (scm_async_click): Protected with async_mutex. Do not deal with
1947 signal_asyncs, which are gone. Set cdr of handled async cell to
1948 #f.
1949 (scm_i_queue_async_cell): Protected with async_mutex. Interrupt
1950 current sleep.
1951 (scm_system_async_mark_for_thread): Do not use scm_current_thread
1952 since that might not work during early initialization.
1953
1954 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS, SCM_REDEFER_INTS,
1955 SCM_REALLOW_INTS): Deprecated by moving into deprecated.h and
1956 deprecated.c. Replaced all uses with SCM_CRITICAL_SECTION_START
1957 and SCM_CRITICAL_SECTION_END.
1958 (SCM_ENTER_A_SECTION, SCM_EXIT_A_SECTION): Removed. Replaced with
1959 SCM_CRITICAL_SECTION_START/END.
1960
1961 * Makefile.am (modinclude_HEADER): Removed threads-plugin.h.
1962 (libguile_la_SOURCES): Added null-threads.c
1963 (EXTRA_libguile_la_SOURCES): Removed pthread-threads.c and
1964 threads-plugin.c.
1965 * pthread-threads.c, threads-plugin.c, threads-plugin.h: Removed.
1966
1967 * root.h, root.c (scm_tc16_root, SCM_ROOTP, SCM_ROOT_STATE,
1968 scm_root_state, scm_stack_base, scm_save_regs_gc_mark,
1969 scm_errjmp_bad, scm_rootcont, scm_dynwinds, scm_progargs,
1970 scm_last_debug_frame, scm_exitval, scm_cur_inp, scm_outp,
1971 scm_cur_err, scm_cur_loadp, scm_root, scm_set_root,
1972 scm_make_root): Removed or deprecated. Replaced with references
1973 to the current thread, dynamic state, continuation barrier, or
1974 some fluid, as appropriate.
1975 (root_mark, root_print): Removed.
1976 (scm_internal_cwdr): Reimplemented guts with
1977 scm_frame_current_dynamic_state and
1978 scm_i_with_continuation_barrier.
1979 (scm_dynamic_root): Return current continuation barrier.
1980
1981
ad3d5a65
MV
19822005-02-28 Marius Vollmer <mvo@zagadka.de>
1983
1984 * socket.c (scm_setsockopt): Handle IP_ADD_MEMBERSHIP and
1985 IP_DROP_MEMBERSHIP options. Also, reorganized the code a bit for
1986 cleanliness.
1987 (scm_init_socket): Define IP_ADD_MEMBERSHIP and
1988 IP_DROP_MEMBERSHIP.
1989 Thanks to Greg Troxel!
1990
73a90115
MD
19912005-02-27 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1992
1993 * gh.h: Bugfix: Include <libguile.h> outside of the extern "C"
1994 block.
1995
5d2cb3ab
MV
19962005-02-25 Marius Vollmer <mvo@zagadka.de>
1997
1998 * hashtab.c (scm_i_rehash): Remove elements from old bucket vector
1999 so that no two weak alist vectors share a spine.
2000 (scm_hash_fn_create_handle_x): Deal with a possible rehashing
2001 during GC before inserting the new alist cell.
2002
838c4126
MV
20032005-02-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2004
2005 * hashtab.c (scm_i_rehash): Cope with the case that a GC modifies
2006 the hashtable.
2007 (scm_hash_fn_create_handle_x): Likewise.
2008 * vectors.h (SCM_I_SET_WVECT_TYPE): New, for use in scm_i_rehash.
2009
29fed193
MD
20102005-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2011
2012 * unif.c (prototype_to_type): Bugfix: Don't compare prototype to
2013 the prototypical examples mentioned in the old reference manual.
2014 Instead keep the old semantics of dispatching on type. (Yes, this
2015 is extremely ugly, but the whole point of keeping the deprecated
2016 interface is not to break old code.)
2017
9cc49060
MD
20182005-02-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2019
2020 * deprecated.h (SCM_ARRAY_DIMS): Rename scm_i_attay_dims -->
2021 scm_i_array_dims.
2022
8447f463
KR
20232005-01-28 Kevin Ryde <user42@zip.com.au>
2024
2025 * numbers.c (scm_ash): Rewrite using shifts, much faster than
2026 integer-expt and multiply/divide. Inexacts and fractions no longer
2027 supported (they happened to work before for left shifts, but not
2028 right). Don't really need inexacts and fractions, since ash is
2029 documented as a "bitwise operation", and all the rest of those only
2030 take exact integers.
2031
1367aa5e
HWN
20322005-01-27 Han-Wen Nienhuys <hanwen@xs4all.nl>
2033
856fca7e
HWN
2034 * gc-card.c (scm_i_card_statistics): map structs, closures and
2035 subrs to one tag.
2036
1367aa5e 2037 * gc.c (s_scm_gc_live_object_stats): return alist, not hashtable.
856fca7e 2038 (tag_table_to_type_alist): ignore unknown types.
1367aa5e
HWN
2039
2040 * gc-segment.c (scm_i_all_segments_statistics): new function.
2041 (scm_i_heap_segment_statistics): new function
2042
2043 * gc.c (s_scm_gc_live_object_stats): new GUILE callable: return
2044 statistics on the number of live objects of each type.
2045
2046 * gc-card.c (scm_i_tag_name): new function.
2047 (scm_i_card_statistics): new function.
2048
333db3b8
KR
20492005-01-24 Kevin Ryde <user42@zip.com.au>
2050
2051 * posix.c (scm_setlocale): Force errno=EINVAL for an error, since
2052 POSIX and C99 don't document errno being set. Reported by Bruno
2053 Haible.
2054 (scm_flock): Update docstring from manual.
2055
8447f463
KR
2056 * random.c (scm_i_init_rstate): Compare w to -1 not 0xffffffffUL, now
2057 that it's an scm_t_int32. Otherwise gcc 3.4 says it's always false on
2058 a 64-bit system.
2059
2060 * scmsigs.c (scm_sigaction_for_thread): Use scm_to_long for
2061 sa_handler, needs to be a long on 64-bit systems where int is only 32
2062 bits.
2063
88f59e53
MV
20642005-01-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2065
0eeb2611
MV
2066 * environments.c (obarray_enter, obarray_replace): Call
2067 SCM_HASHTABLE_INCREMENT when adding a new entry.
2068
88f59e53
MV
2069 * objects.c: Include goops.h for the scm_class_of prototype.
2070
2071 * hashtab.c (hashtable_size, HASHTABLE_SIZE_N): Restrict hashtable
2072 sizes to be smaller than the maximum lengths of vectors.
2073
219b2868
MV
20742005-01-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2075
2076 * ports.c, smob.c: Include "libguile/goops.h".
2077
2078 * objects.h, objects.c, goops.c, goops.h (scm_class_boolean,
2079 scm_class_char, scm_class_pair, scm_class_procedure,
2080 scm_class_string, scm_class_symbol,
2081 scm_class_procedure_with_setter, scm_class_primitive_generic,
2082 scm_class_vector, scm_class_null, scm_class_real,
2083 scm_class_complex, scm_class_integer, scm_class_fraction,
2084 scm_class_unknown, scm_port_class, scm_smob_class,
2085 scm_no_applicable_method, scm_class_of): Moved from objects to
2086 goops since they are only useable once goops has been loaded.
2087 (scm_classes_initialized): Removed.
2088 (scm_class_of): Do not check it.
2089 (create_standard_classes): Do not set it.
2090
009c6b9c
MV
20912005-01-17 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2092
50472546
MV
2093 * objects.h, objects.c (scm_classes_initialized): New.
2094 (scm_class_of): Signal error when scm_classes_initialized is zero.
2095 * goops.c (create_standard_classes): Set scm_classes_initialized
2096 to one.
2097
009c6b9c
MV
2098 * random.c (scm_random_solid_sphere_x): Use
2099 scm_c_generalized_vector_length instead of
2100 scm_uniform_vector_length.
2101
7719cbe9
MV
21022005-01-16 Marius Vollmer <mvo@zagadka.de>
2103
2104 * script.c (scm_compile_shell_switches): Removed debugging output.
2105
1ec44fed
KR
21062005-01-15 Kevin Ryde <user42@zip.com.au>
2107
2108 * numbers.c (scm_logtest, scm_logbit_p, scm_integer_expt): Update
2109 docstrings from manual.
2110 * random.c (scm_random_solid_sphere_x): Update docstring from manual.
2111
6e4cd850
MV
21122005-01-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2113
0b5a0521
MV
2114 * random.c: Don't check for definedness of SCM_HAVE_T_INT64, check
2115 its value.
2116
2117 Implement u64 and s64 uniform numeric vectors with bignums when
2118 scm_t_uint64 and scm_t_int64 are not available.
2119
2120 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_take_u64vector,
2121 scm_array_handle_u64_elements,
2122 scm_array_handle_u64_writable_elements, scm_u64vector_elements,
2123 scm_u64vector_writable_elements): Do not define when scm_t_uint64
2124 is not available.
2125 (scm_take_s64vector, scm_array_handle_s64_elements,
2126 scm_array_handle_s64_writable_elements, scm_s64vector_elements,
2127 scm_s64vector_writable_elements): Likewise for scm_t_int64.
2128 (uvec_sizes, uvec_print, uvec_equalp): Use SCM bignums when
2129 scm_t_int64/scm_t_uint64 are not available.
2130 (uvec_mark): New, to mark the bignums.
2131 (alloc_uvec): Initialize bignums.
2132 (uvec_fast_ref): Return bignums directly.
2133 (scm_uint64_min, scm_uint64_max, scm_int64_min, scm_int64_max,
2134 assert_exact_integer): New.
2135 (uvec_fast_set): Use them to validate the bignums.
2136 (scm_init_srfi_4): Set mark function of smob when needed.
2137 Initialize scm_uint64_min, scm_uint64_max, scm_int64_min,
2138 scm_int64_max.
2139
6e4cd850
MV
2140 Recognize 1.4 -e syntax.
2141
2142 * script.c (sym_at, sym_atat, sym_main, all_symbols): New.
2143 (scm_compile_shell_switches): Use them to recognize and convert
2144 1.4 "-e" syntax.
2145
3b698afe
MV
21462005-01-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2147
2148 * deprecated.h, deprecated.c, strings.h, strings.c: Turn all
2149 deprecated features that once were macros but are now functions
2150 back into macros.
2151
d6dc83a9
MV
21522005-01-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2153
49086691
MV
2154 * eval.c, debug.h (SCM_WARN_DEPRECATED): New debug option.
2155 * deprecation.c (scm_issue_deprecation_warning,
2156 scm_c_issue_deprecation_warning_fmt): Use it.
2157 (mode): Removed.
2158 (print_summary): New.
2159 (scm_init_deprecation): Initialize SCM_WARN_DEPRECATED instead of
2160 mode.
2161
d6dc83a9
MV
2162 Deprecated SCM_ARRAY* macros.
2163
2164 * unif.h, unif.c, ramap.c, vectors.c, srfi-4.c, srfi-4.i.c
2165 (SCM_ARRAYP, SCM_I_ARRAYP): Renamed former to latter internal
2166 version. Changed all uses.
2167 (scm_tc16_array, scm_i_tc16_array,
2168 scm_tc16_enclosed_array, scm_i_tc16_enclosed_array,
2169 SCM_ARRAY_FLAG_CONTIGUOUS, SCM_I_ARRAY_FLAG_CONTIGUOUS,
2170 SCM_ENCLOSE_ARRAYP, SCM_I_ENCLOSE_ARRAYP,
2171 SCM_ARRAY_NDIM, SCM_I_ARRAY_NDIM,
2172 SCM_ARRAY_CONTP, SCM_I_ARRAY_CONTP,
2173 SCM_ARRAY_MEM, SCM_I_ARRAY_MEM,
2174 SCM_ARRAY_V, SCM_I_ARRAY_V,
2175 SCM_ARRAY_BASE, SCM_I_ARRAY_BASE,
2176 SCM_ARRAY_DIMS, SCM_I_ARRAY_DIMS,
2177 scm_t_array, scm_i_t_array): Likewise.
2178 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
2179 Moved from unif.h to unif.c.
2180 (scm_c_array_rank): New.
2181 (scm_array_rank): Reimplement using it.
2182
2183 * deprecated.h, deprecated.c (SCM_ARRAYP, SCM_ARRAY_NDIM,
2184 SCM_ARRAY_CONTP, SCM_ARRAY_MEM, SCM_ARRAY_V, SCM_ARRAY_BASE,
2185 SCM_ARRAY_DIMS, scm_t_array): New deprecated versions.
2186
dc91d8de
MV
21872005-01-11 Marius Vollmer <mvo@zagadka.de>
2188
2189 * ramap.c: Replace uses of scm_make_ra with scm_i_make_ra.
2190 (GVREF, GVSET): New abbreviations. Use them everywhere instead of
2191 scm_c_generalized_vector_ref and scm_cvref, and
2192 scm_c_generalized_vector_set_x, respectively.
2193 (RVREF, IVDEP, BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
2194 UNARY_ELTS_CODE, UNARY_PAIR_ELTS_CODE): Removed since unused.
2195
2196 * unif.h, unif.c (indices_to_pos, scm_array_handle_pos): Renamed
2197 former to latter and made public. Changed all uses.
2198 (scm_i_make_ra): Made public, changed tag param to enclosed flag.
2199 (scm_make_ra): Deprecated, changed all uses to scm_i_make_ra.
2200 (scm_i_shap2ra): New internal version of scm_shap2ra.
2201 (scm_shap2ra): Deprecated, changed all uses to scm_i_shap2ra.
2202 (scm_i_ra_set_contp): New internal version of scm_ra_set_contp.
2203 (scm_ra_set_contp): Deprecated, changed all uses to
2204 scm_i_ra_set_contp.
2205 (scm_cvref, scm_aind, scm_raprin1): Deprecated.
2206
66d33784
MV
22072005-01-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2208
b06f099d
MV
2209 * eval.c (scm_eval): Added example to docstring. Thanks to Issac
2210 Trotts!
2211
5d35ad81
MV
2212 * unif.c (scm_list_to_typed_array): Allow the specification of the
2213 upper bound as well. This is needed for empty arrays.
2214 (l2ra): Give needed number of elements in error message.
2215 (scm_i_print_array): Print length information for arrays that need
2216 it.
2217 (scm_i_read_array): Parse it.
2218
66d33784
MV
2219 * deprecated.h, deprecated.c (SCM_CHARS, SCM_UCHARS, SCM_LENGTH,
2220 scm_i_object_chars, scm_i_object_length): Brought back from the
2221 dead.
2222
d7d7d401
MV
22232005-01-10 Marius Vollmer <mvo@zagadka.de>
2224
74c58fce
MV
2225 * ramap.c: Replaced single-index uses of scm_array_set_x with
2226 scm_c_generalized_vector_set_x.
2227
d7d7d401
MV
2228 * unif.c (scm_array_rank, scm_array_dimensions,
2229 scm_shared_array_offset, scm_shared_array_increments,
2230 scm_array_ref, scm_array_set_x): Use scm_t_array_handle operations
2231 to simplify code and make it more general.
2232 (scm_shared_array_root): Work with all kinds of arrays, including
2233 naked vectors.
2234 (indices_to_pos): New.
74c58fce
MV
2235 (scm_make_shared_array): Use it instead of scm_aind; use handle
2236 for oldra.
2237
4475d3fe
KR
22382005-01-10 Kevin Ryde <user42@zip.com.au>
2239
2240 * posix.c (scm_mkstemp): Update docstring from manual.
2241
d3ddc95e
KR
2242 * stime.c (scm_mktime): Missing default errno=EINVAL from prev change.
2243
8c8491f5
MV
22442005-01-09 Marius Vollmer <mvo@zagadka.de>
2245
b89ecc6f
MV
2246 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_i_uniform_vector_ref_proc,
2247 scm_i_uniform_vector_set_proc): New.
2248 (u8ref, u8set, s8ref, s8set, etc): New.
2249 (uvec_reffers, uvec_setters): New.
2250 (uvec_to_list): Use generic scm_array_handle_ref instead of
2251 uvec_fast_ref since scm_array_handle_ref should be faster now.
8cb01d9f
MV
2252 (coerce_to_uvec, scm_c_uniform_vector_ref,
2253 scm_c_uniform_vector_set_x): Likewise.
b89ecc6f
MV
2254
2255 * unif.h, unif.c, inline.h (scm_i_t_array_ref, scm_i_t_array_set):
2256 New.
2257 (scm_t_array_handle): Added ref, set, elements and
2258 writable_elements for fast inline operation of
2259 scm_array_handle_ref and scm_array_handle_set.
2260 (scm_array_handle_ref, scm_array_handle_set): Moved to inline.h
2261 and replaced with inline code that simply calls the ref/set
2262 members of the handle.
2263 (enclosed_ref, vector_ref, string_ref, bitvector_ref, memoize_ref,
2264 enclosed_set, vector_set, string_set, bitvector_set, memoize_set):
2265 New.
2266 (scm_array_handle_get): Initialize ref/set fields to memoize_ref
2267 and memoize_set.
2268 (scm_bitvector_fill_x, scm_bitvector_to_list, scm_bit_count,
2269 scm_bit_position, scm_bit_set_star_x, scm_bit_count_star,
2270 scm_bit_invert_x): Correctly multiply index with increment in the
2271 general case.
2272
8c8491f5
MV
2273 * unif.c (scm_array_handle_set): Correctly execute only one
2274 alternative. D'Oh!
2275 (scm_list_to_typed_array, l2ra): Use scm_t_array_handle to fill
2276 the array; this covers all cases with much simpler code.
2277
2278 * srfi-4.c (scm_uniform_element_size): Deprecated implementation
2279 as well.
2280
cd5d55c7
MV
22812005-01-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2282
2283 * srfi-4.c (uvec_type): New.
2284 (uvec_to_list, uvec_ref, uvec_set_x, scm_c_uniform_vector_ref,
2285 scm_c_uniform_vector_x): Use it to get concrete type.
2286
2287 * unif.h (scm_t_array_dim): Changed type of members to ssize_t, to
2288 fit the docs.
2289
2290 * unif.c (ra2l): Handle zero rank arrays.
2291 (scm_i_print_array): Print zero rank arrays specially.
2292 (tag_to_type): Return #t for an empty tag, not the empty symbol.
2293 (scm_i_read_array): Allow zero rank arrays.
2294
a4aad74e
MV
22952005-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2296
2297 * hashtab.h, hashtab.c (SCM_HASHTAB_BUCKET_LOC): Removed.
2298 (scan_weak_hashtables): Rewrote its use with SCM_HASHTAB_BUCKET
2299 and SCM_SET_HASHTAB_BUCKET.
2300
2301 * print.h, print.c (scm_print_state, SCM_PRINT_STATE_LAYOUT):
2302 Removed ref_stack field.
2303 (PSTATE_STACK_REF, PSTATE_STACK_SET): New, for accessing the stack
2304 of a print state. Use them everywhere instead of ref_stack.
2305
3a40d5e1
MV
2306 * srfi-4.h (scm_uniform_element_size): Deprecated for real.
2307
a4aad74e
MV
2308 * srfi-4.c: Include deprecation.h.
2309
2310 * vectors.h, vectors.c, unif.h, unif.c, deprecated.h,
2311 deprecated.c, eq.c
2312 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Removed.
2313 (scm_vector_elements, scm_vector_writable_elements,
2314 scm_generalized_vector_get_handle): Moved to vectors.[hc] from
2315 unif.[hc].
2316 (SCM_SIMPLE_VECTOR_LOC): Removed.
2317 (SCM_VECTOR_MAX_LENGTH, SCM_VECTOR_LENGTH, SCM_VELTS,
2318 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET,
2319 scm_vector_equal_p): Moved from vectors.[hc] to deprecated.[hc].
2320 (scm_vector_equal_p, scm_i_vector_equal_p): Renamed former to
2321 latter. Changed use in eq.c.
2322
f01fe441
MV
23232005-01-07 Marius Vollmer <mvo@zagadka.de>
2324
2325 Make the uniform vector routines also deal with one dimensional
2326 arrays.
2327
2328 * srfi-4.c (SCM_IS_UVEC): New, use it instead of
2329 SCM_SMOB_PREDICATE in this file.
2330 (is_uvec): Also recognize one-dimensional uniform numeric arrays
2331 of the right type.
2332 (scm_is_uniform_vector): Likewise.
2333 (uvec_fast_ref): Made BASE param const.
2334 (uvec_writable_elements, uvec_elements): New.
2335 (uvec_to_list, uvec_ref, uvec_set_x, uvec_length,
2336 scm_c_uniform_vector_length, scm_c_uniform_vector_ref,
2337 scm_c_uniform_set_x): Use them to also deal with one-dimensional
2338 arrays.
2339 (scm_uniform_vector_ref, scm_uniform_vector_set_x): Deprecate old
2340 argument convention.
2341 (scm_uniform_vector_to_list): Let uvec_to_list do all the
2342 checking.
2343 (scm_uniform_vector_length): Use uvec_length.
2344
2aaf5726
MV
23452005-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2346
2347 * srfi-4.h, srfi-4.c (scm_c_uniform_vector_element_size,
2348 scm_c_uniform_vector_size): Removed.
2349 (scm_array_handle_uniform_element_size): New.
2350
2351
2352 * unif.h (scm_array_handle_ref, scm_array_handle_set): Changed
2353 type of POS parameter to be signed, positions can be negative.
2354 (scm_array_handle_release): New, changed all uses of
2355 scm_t_array_handle to properly call it.
2356 (scm_vector_get_handle, scm_generalized_vector_get_handle):
2357 Renamed former to latter, changed all uses.
2358
34ae52fc
MV
23592005-01-05 Marius Vollmer <mvo@zagadka.de>
2360
2361 Updated bitvector routines to also use scm_t_array_handles.
2362
2363 * unif.h (scm_bitvector_elements,
2364 scm_bitvector_writable_elements): Use a scm_t_array_handle and
2365 deliver offset, length and increment to caller. Changed all uses.
2366 (scm_bitvector_release_elements,
2367 scm_frame_bitvector_release_elements,
2368 scm_bitvector_release_writable_elements,
2369 scm_frame_bitvector_release_writable_elements): Removed.
2370 (scm_array_handle_bit_elements,
2371 scm_array_handle_bit_writable_elements,
2372 scm_array_handle_bit_elements_offset): New.
2373 (scm_make_typed_array): The special value for non-initialized
2374 arrays is now SCM_UNSPECIFIED. The old special value SCM_BOOL_F
2375 was a valid value to fill bitvectors with, so it can't really be
2376 specialed out.
2377
c4cb7628
KR
23782005-01-04 Kevin Ryde <user42@zip.com.au>
2379
2380 * stime.c (scm_strftime): Free t.tm_zone produced by bdtime2c.
2381 Reported by Bill Schottstaedt.
2382
0356881d
MV
23832005-01-02 Marius Vollmer <mvo@zagadka.de>
2384
2385 * sort.c (quicksort): Added INC parameter for non-contigous
2386 vectors.
2387 (quicksort1): New, for contigous vectors. Both functions are
2388 generated from the same code by including "quicksort.i.c".
2389 (scm_restricted_vector_sort_x): Call one of quicksort and
2390 quicksort1, depending on increment of vector.
2391 (scm_sort): Simply call scm_sort_x on a copy of the list or
2392 vector.
2393 (scm_merge_vector_x, scm_merge_vector_step): Changed indices to
2394 size_t, added inc parameter.
2395 (scm_stable_sort_x): Allocate temporary storage as Scheme vector
2396 so that it doesn't leak.
2397 (scm_stable_sort): Simply call scm_stable_sort_x on a copy of the
2398 list or vector.
2399
2400 * ramap.c (scm_array_map_x): Do not try to convert fill value
2401 before filling, any necessary conversion is done while storing.
2402
2403 * gc-card.c (scm_i_sweep_card): Call scm_i_vector_free instead of
2404 doing it inline.
2405
2406 * hashtab.c, hashtab.h (SCM_HASHTABLE_BUCKETS): Removed.
2407 (SCM_HASHTABLE_BUCKET, SCM_HASHTABLE_BUCKET_LOC): New. Replaced
2408 all uses of SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
2409
2410 * tags.h, weaks.c, vports.c, hashtab.c, convert.c, sort.c,
2411 convert.c, convert.h, convert.i.c, deprecated.c, environments.c,
2412 eval.c, filesys.c, fluids.c, gc-mark.c, gh.h, gh_data.c, goops.c,
2413 hash.c, init.c, libguile_la-arrays.loT, modules.c, net_db.c,
2414 objects.c, ports.c, posix.c, print.c, random.c, read.c,
2415 regex-posix.c, scmsigs.c, socket.c, stime.c, symbols.c: Use new
2416 vector elements API or simple vector API, as appropriate. Removed
2417 SCM_HAVE_ARRAYS ifdefery. Replaced all uses of
2418 SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
2419
2420 * srfi-4.h, srfi-4.c,
2421 srfi-4.i.c (scm_array_handle_uniform_elements,
2422 scm_array_handle_uniform_writable_elements,
2423 scm_uniform_vector_elements,
2424 scm_uniform_vector_writable_elements):
2425 (scm_<foo>vector_elements, scm_<foo>vector_writable_elements): Use
2426 scm_t_array_handle, deliver length and increment.
2427 (scm_array_handle_<foo>_elements,
2428 scm_array_handle_<foo>_writable_elements): New.
2429
2430 * gen-scmconfig.h.in (SCM_I_GSC_HAVE_ARRAYS): Removed.
2431 * gen-scmconfig.c: Hard code SCM_HAVE_ARRAYS to "1".
2432
2433 * unif.h, unif.c (scm_t_array_handle, scm_array_get_handle,
2434 scm_array_handle_rank, scm_array_handle_dims, scm_array_handle_ref
2435 scm_array_handle_set, scm_array_handle_elements
2436 scm_array_handle_writable_elements, scm_vector_get_handle): New.
2437 (scm_make_uve, scm_array_prototype, scm_list_to_uniform_array,
2438 scm_dimensions_to_uniform_array): Deprecated for real.
2439 (scm_array_p, scm_i_array_p): Use latter for SCM_DEFINE since
2440 snarfing wont allow a mismatch between C and Scheme arglists.
2441 (scm_make_shared_array, scm_enclose_array): Correctly use
2442 scm_c_generalized_vector_length instead of
2443 scm_uniform_vector_length.
2444
2445 * validate.h (SCM_VALIDATE_VECTOR,
2446 SCM_VALIDATE_VECTOR_OR_DVECTOR): use scm_is_simple_vector instead
2447 of SCM_VECTORP.
2448
2449 * weaks.h, weaks.c: Use new internal weak vector API from
2450 vectors.h.
2451
2452 * Makefile.am (libguile_la_SOURCES, DOT_X_FILES, DOT_DOC_FILES,
2453 EXTRA_libguile_la_SOURCES): Changed ramap.c and unif.c from being
2454 'extra' to being regular sources.
2455 (noinst_HEADERS): Added quicksort.i.c.
2456 * quicksort.i.c: New file.
2457
2458 * vectors.h, vector.c (SCM_VECTORP, SCM_VECTOR_LENGTH, SCM_VELTS,
2459 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET): Deprecated
2460 and reimplemented. Replaced all uses with scm_vector_elements,
2461 scm_vector_writable_elements, or SCM_SIMPLE_VECTOR_*, as
2462 appropriate.
2463 (scm_is_simple_vector, SCM_SIMPLE_VECTOR_LENGTH,
2464 SCM_SIMPLE_VECTOR_REF, SCM_SIMPLE_VECTOR_SET,
2465 SCM_SIMPLE_VECTOR_LOC): New.
2466 (SCM_VECTOR_BASE, SCM_SET_VECTOR_BASE, SCM_VECTOR_MAX_LENGTH,
2467 SCM_MAKE_VECTOR_TAG, SCM_SET_VECTOR_LENGTH,
2468 SCM_VELTS_AS_STACKITEMS, SCM_SETVELTS, SCM_GC_WRITABLE_VELTS):
2469 Removed.
2470 (scm_vector_copy): New.
2471 (scm_vector_elements, scm_vector_writable_elements): Use
2472 scm_t_array_handle, deliver length and increment. Moved to
2473 unif.h. Changed all uses.
2474 (scm_vector_release_elements,
2475 scm_vector_release_writable_elements,
2476 (scm_frame_vector_release_elements,
2477 scm_frame_vector_release_writable_elements): Removed.
2478 (SCM_I_IS_VECTOR, SCM_I_VECTOR_ELTS, SCM_I_VECTOR_WELTS,
2479 SCM_I_VECTOR_LENGTH, scm_i_vector_free): New internal API.
2480 (SCM_I_WVECTP SCM_I_WVECT_LENGTH SCM_I_WVECT_VELTS
2481 SCM_I_WVECT_GC_WVELTS SCM_I_WVECT_TYPE SCM_I_WVECT_GC_CHAIN
2482 SCM_I_SET_WVECT_GC_CHAIN, scm_i_allocate_weak_vector): New, for
2483 weak vectors.
2484
0336d18b
MV
24852004-12-29 Marius Vollmer <mvo@zagadka.de>
2486
2487 No longer use creators to specify the type of an array. Creators
2488 expose the fact that arrays are wrapped around vectors, but that
2489 might change.
2490
2491 * srfi-4.h (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector,
2492 scm_i_proc_make_u16vector, scm_i_proc_make_s16vector,
2493 scm_i_proc_make_u32vector, scm_i_proc_make_s32vector,
2494 scm_i_proc_make_u64vector, scm_i_proc_make_s64vector,
2495 scm_i_proc_make_f32vector, scm_i_proc_make_f64vector,
2496 scm_i_proc_make_c32vector, scm_i_proc_make_c64vector,
2497 uvec_proc_vars): Removed.
2498 (scm_i_generalized_vector_creator): Removed.
2499 (scm_i_generalized_vector_type): New.
2500
2501 * unif.h, unif.c (scm_typed_array_p, scm_make_array,
2502 scm_make_typed_array, scm_array_type, scm_list_to_array,
2503 scm_list_to_typed_array, scm_is_array, scm_is_typed_array): New.
2504 (scm_array_creator): Removed.
2505 (scm_array_p): Deprecated second PROT argument.
2506 (scm_dimensions_to_uniform_array, scm_list_to_uniform_array):
2507 Deprecated, reimplemented in terms of scm_make_typed_array and
2508 scm_list_to_typed_array.
2509 (scm_i_proc_make_vector, scm_i_proc_make_string,
2510 scm_i_proc_make_bitvector): Removed.
2511 (type_creator_table, init_type_creator_table, type_to_creator,
2512 make_typed_vector): New.
2513 (scm_i_convert_old_prototype): Removed.
2514 (prototype_to_type): New.
2515 (scm_make_uve): Deprecated, reimplemented using make_typed_vector.
2516 (scm_array_dimensions): Use scm_list_1 instead of scm_cons for
2517 minor added clarity.
2518 (scm_make_shared_array, scm_ra2contig): Use make_typed_vector
2519 instead of scm_make_uve.
2520 (tag_creator_table, scm_i_tag_to_creator): Removed.
2521 (tag_to_type): New.
2522 (scm_i_read_array): Use scm_list_to_typed_array instead of
2523 scm_list_to_uniform_array.
2524
277e8472
MV
25252004-12-27 Marius Vollmer <mvo@zagadka.de>
2526
32b26202
MV
2527 * unif.h, unif.c (scm_bitvector_elements): Made return value "const".
2528 (scm_bitvector_writable_elements): New.
2529 (scm_bitvector_release, scm_bitvector_release_elements):
2530 Renamed former to latter. Added explicit call to
2531 scm_remember_upto_here_1.
2532 (scm_frame_bitvector_release,
2533 scm_frame_bitvector_release_elements): Renamed former to latter.
2534 (scm_bitvector_release_writable_elements,
2535 scm_bitvector_release_writable_elements): New.
2536 Changed all uses as required by the changes above.
2537
2538 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_uniform_vector_elements,
2539 scm_u8vector_elements, etc): Made return value "const".
2540 (scm_uniform_vector_writable_elements,
2541 scm_u8vector_writable_elements, etc): New.
2542 (scm_uniform_vector_release, scm_uniform_vector_release_elements):
2543 Renamed former to latter. Added explicit call to
2544 scm_remember_upto_here_1.
2545 (scm_frame_uniform_vector_release,
2546 scm_frame_uniform_vector_release_elements): Renamed former to latter.
2547 (scm_uniform_vector_release_writable_elements,
2548 scm_frame_uniform_vector_release_writable_elements): New. Takes
2549 crown of longest identifier yet.
2550 Changed all uses as required by the changes above.
2551
277e8472
MV
2552 * vectors.h, vectors.c (scm_c_vector_set_x): Make return type
2553 void.
2554 (scm_is_vector, scm_vector_p, scm_vector_length,
2555 scm_c_vector_length, scm_vector_ref, scm_c_vector_ref,
2556 scm_vector_set_x, scm_c_vector_set_x, scm_vector_to_list,
2557 scm_vector_move_left_x, scm_vector_move_right_x,
2558 scm_vector_fill_x): handle one-dimensional arrays.
32b26202
MV
2559 (scm_vector_elements, scm_vector_release_elements,
2560 scm_vector_frame_release_elements, scm_vector_writable_elements,
2561 scm_vector_release_writable_elements,
2562 scm_vector_frame_release_writable_elements): New.
2563 (scm_list_to_vector, scm_vector_to_list, scm_vector_fill,
2564 scm_vector_move_left_x, scm_vector_move_right_x): Use them.
277e8472
MV
2565
2566 * ramap.c (scm_ramapc, scm_raeql): Use
2567 scm_c_generalized_vector_length instead of
2568 scm_uniform_vector_length.
2569 (scm_ramap, rafe): Use scm_c_vector_ref instead of SCM_VELTS. use
2570 scm_c_generalized_vector_ref instead of scm_uniform_vector_ref.
2571
49c51610
MV
25722004-12-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2573
2574 * continuations.h, continuations.c (scm_t_contregs): New 'offset'
2575 member for relocating debug frames.
2576 (scm_make_continuation): Set it.
2577
2578 * stacks.c (read_frame, read_frames, scm_make_stack,
2579 scm_last_stack_frame, scm_stack_id): Use the new 'offset' member
2580 of continuations instead of calculating the offset ourselves.
2581 Relocate 'vect' member of scm_t_debug_frame.
2582
3b2ee265
KR
25832004-12-16 Kevin Ryde <user42@zip.com.au>
2584
2585 * ramap.c (scm_array_map_x): Check for at least one source argument.
2586
e120686a
KR
25872004-12-14 Kevin Ryde <user42@zip.com.au>
2588
2589 * srfi-13.c (string-any, string-every): Use a scheme wrapper around
2590 the C code so for the final call to the predicate procedure is a tail
2591 call, per SRFI-13 spec.
2592
680b5237
KR
25932004-12-10 Kevin Ryde <user42@zip.com.au>
2594
2595 * eq.c (scm_eq_p, scm_eqv_p, scm_equal_p): Update docstrings from
2596 recent revision to the reference manual.
2597
2598 * numbers.c (scm_modulo): Amend fixme comment about negative divisor
2599 with "%", C99 says it's well-defined.
2600
2601 * socket.c (scm_from_ipv6): Just use mpz_import. Don't bother trying
2602 to fit scm_from_ulong_long, since that uses mpz_import anyway. Don't
2603 bother trying to fit scm_from_ulong, not really worth the trouble if
2604 addresses are more than 4 bytes usually.
2605
446d320c
KR
26062004-11-30 Kevin Ryde <user42@zip.com.au>
2607
2608 * gc_os_dep.c (NetBSD): Test __m68k__ and __arm__ as well as m68k and
2609 arm32. Reported by Greg Troxel.
2610
f2654760
MV
26112004-11-14 mvo <mvo@zagadka.de>
2612
2613 * unif.c, unif.h (scm_i_cvref): Made non-static for ramap.c.
2614
2615 * Makefile.am (INCLUDES): It is "@LTDLINCL@", not "@LTDLINC@".
2616
d550e35f
MV
26172004-11-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2618
2619 Enclosed arrays are now their own smob. This has been done to
2620 make the code more explicit about them and to prepare for the time
f2654760
MV
2621 when generalized vectors include arbitrary one-dimensional
2622 arrays. (Uptonow, enclosed arrays have been recognized by their
2623 use of an array as their storage 'vector'. When all generalized
2624 vectors are allowed as storage, including one-dimensional arrays,
2625 this will no longer work.)
d550e35f
MV
2626
2627 * unif.h, unif.c: (scm_tc16_enclosed_array, SCM_ENCLOSED_ARRAYP):
2628 New.
2629 (exactly_one_third, singp): Removed.
2630 (scm_array_p, scm_array_dimensions, scm_shared_array_root,
2631 scm_shared_array_offset, scm_shared_array_increments): Handle
2632 enclosed arrays explicitely.
2633 (scm_array_rank): Likewise. Also, do not return zero for
2634 non-arrays, signal an error instead since arrays with rank zero do
2635 exist.
2636 (scm_i_make_ra): New, for specifying the tag of the new array.
2637 (scm_make_enclosed_array): Use it.
2638 (scm_make_ra): Reimplemented in terms of scm_i_make_ra.
2639 (scm_make_shared_array): Use scm_c_generalized_vector_length
2640 instead of scm_uniform_vector_length.
2641 (scm_array_in_bounds_p): Rewritten to be much cleaner.
2642 (scm_i_cvref): New, doing the job of scm_cvref.
2643 (scm_cvref): Use scm_i_cvref.
2644 (scm_array_ref): Do not accept non-arrays when no indices are
2645 given. Use scm_i_cvref to do the actual access.
2646 ("uniform-array-set1"): Do not register.
2647 (scm_array_set_x, scm_uniform_array_read_x,
2648 scm_uniform_array_write): Handle enclosed arrays explicitly.
2649 (ra2l): Use scm_i_cvref instead of scm_uniform_vector_ref to also
2650 handle enclosed arrays.
2651 (scm_array_to_list): Handle enclosed arrays explicitly.
2652 (rapr1): Removed.
2653 (scm_i_print_array_dimension): Use scm_i_cvref to also handle
2654 enclosed arrays.
2655 (scm_i_print_enclosed_array): New.
2656 (tag_proto_table, tag_creator_table): Renamed former to latter.
2657 Added "a" and "b" for strings and bitvectors, resp.
2658 (scm_i_tag_to_prototype, scm_i_tag_to_creator): Renamed former to
2659 latter. Tag "a" is in the table now, no need to handle it as a
2660 legacy tag.
2661 (scm_raprin1): Just call scm_iprin1.
2662 (scm_array_creator, scm_array_prototype): Handle enclosed arrays
2663 explicitly.
2664 (scm_init_unif): Initialize scm_tc16_enclosed_array smob.
2665 Use scm_i_print_array as printer for scm_tc16_array.
2666
2ed34885
MV
26672004-11-10 Marius Vollmer <mvo@zagadka.de>
2668
823086c1
MV
2669 * ramap.c (cind): Changed second arg to be pointer to long instead
2670 of uniform vector.
2671 (scm_ramapc): Allocate index vector with scm_malloc and not as
d550e35f 2672 uniform vector. Wrap it in a frame so that it gets properly freed.
823086c1
MV
2673 (scm_array_index_map_x): Likewise.
2674
2675 * unif.c: Changed all uses of scm_array_prototype to
2676 scm_array_creator. (scm_i_get_old_prototype): Signal error when no
2677 prototype is known.
2678 (scm_uniform_array_read_x, scm_uniform_array_write): Reimplemented
2679 in terms of scm_uniform_vector_read_x and
2680 scm_uniform_vector_write, respectively. Strings and
2681 bitvector support has been dropped.
2682
2ed34885
MV
2683 * srfi-4.h, srfi-4.c: Do not include <libguile.h>, include the
2684 needed files directly. Include config.h, <unistd.h> and <io.h>
2685 when available.
2686 (scm_uniform_vector_read_x, scm_uniform_vector_write): New.
2687
2c72f253
MV
26882004-11-09 Marius Vollmer <mvo@zagadka.de>
2689
2690 * gh_data.c (gh_uniform_vector_length): Properly use
2691 scm_c_uniform_vector_length instead of scm_uniform_vector_length.
2692
3cc0a296
MV
26932004-11-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2694
2695 * srfi-4.h (scm_c_uniform_vector_ref, scm_c_uniform_vector_set_x):
2696 New.
2697 (scm_i_uniform_vector_creator): Removed.
2698 (scm_i_generalized_vector_creator): New.
2699 (scm_uniform_vector_length, scm_uniform_element_size): Do not
2700 handle generalized vectors, only uniform numeric vectors.
2701 (alloc_uvec): Do length check here...
2702 (make_uvec): ...but not here.
2703 (coerce_to_uvec): Use new generalized vector functions to handle
2704 all kinds of vectors in one go.
2705
2706 * tags.h (scm_tc7_bvect): Renamed to scm_tc7_unused7, renaming the
2707 remaining scm_tc7_unused tags to get a neatly ordered list.
2708
2709 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c: Do no
2710 longer handle scm_tc7_bvect bitvectors.
2711
2712 * ramap.c: Use the new generalized vector functions to handle all
2713 vector like things.
2714
2715 * vectors.h, vectors.c (scm_is_vector, scm_c_vector_length,
2716 scm_c_vector_ref, scm_c_vector_set_x, scm_generalized_vector_p,
2717 scm_generalized_vector_length, scm_generalized_vector_ref,
2718 scm_generalized_vector_set_x, scm_generalized_vector_to_list,
2719 scm_is_generalized_vector, scm_c_generalized_vector_length,
2720 scm_c_generalized_vector_ref, scm_c_generalized_vector_set_x):
2721 New.
2722
2723 * unif.h, unif.c (scm_bitvector_p, scm_bitvector,
2724 scm_make_bitvector, scm_bitvector_length, scm_bitvector_ref,
2725 scm_bitvector_set_x, scm_list_to_bitvector, scm_bitvector_to_list,
2726 scm_bitvector_fill_x, scm_is_bitvector, scm_c_make_bitvector,
2727 scm_c_bitvector_length, scm_c_bitvector_ref,
2728 scm_c_bitvector_set_x, scm_bitvector_elements,
2729 scm_bitvector_release, scm_frame_bitvector_release,
2730 scm_tc16_bitvector, bitvector_free, bitvector_print,
2731 bitvector_equalp, count_ones, find_first_one): New.
2732 (scm_bit_count, scm_bit_position, scm_bit_set_star_x,
2733 scm_bit_count_star, scm_bit_invert_x, scm_istr2bve): Rewritten
2734 using the new C API for bitvectors and maybe count_ones or
2735 find_first_one, as appropriate.
2736 (SCM_I_MAX_LENGTH, SCM_BITVECTOR_P, SCM_BITVECTOR_BASE,
2737 SCM_SET_BITVECTOR_BASE, SCM_BITVECTOR_MAX_LENGTH,
2738 SCM_BITVECTOR_LENGTH, SCM_MAKE_BITVECTOR_TAG,
2739 SCM_SET_BITVECTOR_LENGTH): Removed. Replaced all uses with the
2740 new functions from above.
2741 (scm_i_proc_make_vector, scm_i_proc_make_string,
2742 scm_i_proc_make_bitvector): Made non-static for use in
2743 scm_i_generalized_vector_creator.
2744 (scm_make_u1vector): Removed, replaced by scm_make_bitvector.
2745 (scm_make_uve): Validate that the created object is a generalized
2746 vector.
2747 (scm_i_legacy_tag): Removed.
2748 (scm_i_print_array): Do it here.
2749 (scm_raprin1): Only print enclosed arrays.
2750
2751 * Makefile.am (DOT_DOC_FILES): Added srfi-4.doc.
2752
c24d026b
MV
27532004-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2754
1f2328fe
MV
2755 * srfi-4.c (make_uvec): Use SCM_I_SIZE_MAX instead of SIZE_MAX for
2756 added portability.
2757
2758 * chars.c (scm_charnames, scm_charnums): Added "sp" as an alias
2759 for "space". Thanks to Bruce Korb!
2760
c24d026b
MV
2761 * rw.c (scm_read_string_x_partial): Bugfix, apply offset to dest
2762 only after dest has been set. Thanks to Hyper Division!
2763
2764 * gh_data.c (gh_uniform_vector_length): Use
2765 scm_uniform_vector_length instead of SCM_UVECTOR_LENGTH.
2766
d4ea47c8
MV
27672004-11-03 Marius Vollmer <mvo@zagadka.de>
2768
2769 * unif.h (SCM_UVECTOR_BASE, SCM_SET_UVECTOR_BASE,
2770 SCM_UVECTOR_MAXLENGTH, SCM_UVECTOR_LENGTH, SCM_MAKE_UVECTOR_TAG,
2771 SCM_SET_UVECTOR_LENGTH): Removed.
2772
236288e2
MV
27732004-11-02 Marius Vollmer <mvo@zagadka.de>
2774
9a5fa6e9 2775 Mac OS X and OpenBSD compatibility patches from Andreas Vögele.
236288e2
MV
2776 Thanks!
2777
2778 * backtrace.c (scm_display_backtrace_with_highlights): Join the
2779 first and the second line of the SCM_DEFINE macro call, since old
2780 preprocessors cannot handle definitions that are split into two
2781 lines.
2782
2783 * inline.h (scm_cell, scm_double_cell): Don't use C99 variable
2784 declarations.
2785
2786 * pairs.c (scm_i_chase_pairs): Replace scm_t_bits with
2787 scm_t_uint32 to fix the mismatch between the function declaration
2788 and definition.
2789
2790 * sort.c (quicksort): Don't use C99 variable declarations.
2791
2792 * srfi-4.c (uvec_fast_ref): Avoid a compiler warning by returning
2793 SCM_BOOL_F if no type matches.
2794
2795 * threads.c (thread_print): Cast a pointer to size_t when printing
2796 with scm_uintprint.
2797
2798 * unif.c (scm_i_tag_to_prototype): Make sure that "instead" gets
2799 defined.
2800 (scm_array_prototype): Deprecated.
2801
f738b51d
MV
28022004-11-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2803
5d1015ec
MV
2804 * srfi-4.h, srfi-4.c (scm_frame_uniform_vector_release): New.
2805 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use it to get
2806 more efficient access to the u32vector.
2807
034486df
MV
2808 * tags.h (scm_tc7_llvect, scm_tc7_uvect, scm_tc7_fvect,
2809 scm_tc7_dvect, scm_tc7_cvect, scm_tc7_svect, scm_tc7_byvect,
2810 scm_tc7_ivect): Renamed to scm_tc7_unused_1 to scm_tc7_unused_8.
2811
2812 * validate.h (SCM_VALIDATE_VECTOR_OR_DVECTOR): Accept f64vectors
2813 instead of the old-style dvectors.
2814
2815 * gh_data.c: Use new-style uniform arrays in place of old-style
2816 ones.
2817
2818 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c,
2819 ramap.c, unif.c: Do no longer handle old-style uniform vectors.
2820
2821 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use u32vectors
2822 instead of old-sytle uvectors.
2823
2824 * convert.c, convert.i.c: Rewritten completely, using
2825 scm_any_to_u8vector, etc and other new-style uniform vector
2826 functions.
2827
2828 * random.c (scm_random_solid_sphere_x,
2829 scm_random_hollow_sphere_x): Do not validate vector argument, this
2830 is already done elsewhere.
2831
2832 * srfi-4.h, srfi-4.i.c, srfi-4.c (coerce_to_uvec,
2833 scm_any_to_u8vector, etc): New.
2834 (scm_uniform_element_size, scm_uniform_vector_length): Do no
2835 longer handle old-style uniform vectors.
2836
f738b51d
MV
2837 * read.c (scm_lreadr): Bugfix: include the last bit in the
2838 bit vector.
2839
5e9c05a1
MV
28402004-10-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2841
327114a2
MV
2842 * unif.h, unif.c (scm_array_creator): New.
2843 (scm_i_get_old_prototype): New.
2844 (scm_array_prototype): use it to return old-style prototype, never
2845 return creators.
2846 (scm_make_uve): Use scm_call_1 instead of scm_call_2 with a second
2847 arg of SCM_UNDEFINED. The latter is wrong.
2848
5e9c05a1
MV
2849 * unif.h, unif.c (scm_make_u1vector): New, but only temporary.
2850 (make_uve): Removed.
2851 (scm_i_proc_make_vector, scm_i_proc_make_string,
2852 scm_i_proc_make_u1vector): New.
2853 (scm_init_unif): Initialize them.
2854 (scm_i_convert_old_prototype): New.
2855 (scm_make_uve): Use it to get the creator procedure. Removed all
2856 old code that created old-style uniform vectors.
2857 (scm_array_p): Handle generic vectors.
2858 (scm_dimensions_to_uniform_array): Do not fill new array with
2859 prototype when that is a procedure.
2860 (scm_list_to_uniform_array): Also accept a list of lower bounds as
2861 the NDIM argument.
2862 (scm_i_print_array): Print rank for shared or non-zero-origin
2863 vectors.
2864 (tag_proto_table, scm_i_tag_to_prototype, scm_i_read_array): New.
2865 (scm_raprin1): Do not call scm_i_array_print for enclosed arrays,
2866 which I do not understand yet.
2867 (scm_array_prototype): Explicitely handle generic vectors.
327114a2 2868
5e9c05a1
MV
2869 * numbers.c, number.h (scm_i_print_complex, icmplx2str): New.
2870 (iflo2str): Use icmplx2str for complex numbers.
2871
2872 * srfi-4.c, srfi-4.h (scm_i_read_homogenous_vector,
2873 scm_i_uniform_vector_prototype): Removed.
2874 (scm_i_uniform_vector_creator): New.
2875 (SCM_UVEC_C32, scm_c32vector, scm_make_c32vector, etc,
2876 SCM_UVEC_C64, scm_c64vector, scm_make_c64vector, etc): New.
2877 Updated all tables and generic functions to support them.
2878 (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector, etc): New.
2879 (scm_init_srfi_4): Initialize them.
2880
2881 * srfi-4.i.c (scm_take_u8vector, etc): use uvec_sizes instead of
2882 sizeof(CTYPE) as explained in the comment.
2883
2884 * read.c (scm_lreadr): Call scm_i_read_array for all characters
50472546 2885 following '#' that can start an array. Explicitely disambiguate
5e9c05a1
MV
2886 'i' and 'e' between introducing numbers and uniform vectors. Do
2887 not call scm_i_read_homogenous_vector, since that is also handled
2888 by scm_i_read_array now.
2889
f984af07
MV
28902004-10-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2891
2892 First cut at integrating uniform vectors from srfi-4 with the rest
2893 of Guile. This change replaces scm_tc7_byvect with a s8 uniform
2894 vector. The plan is to gradually replace one type after the other
2895 until none is left and then to consider general cleanups and
2896 optimizations.
2897
2898 * srfi-4.h, srfi-4.i.c (scm_u8vector_elements, etc): New.
2899
2900 * srfi-4.h, srfi-4.c (scm_uniform_vector_p,
2901 scm_uniform_vector_ref, scm_uniform_vector_set_x,
2902 scm_uniform_vector_to_list, scm_is_uniform_vector,
2903 scm_c_uniform_vector_lengths, scm_c_uniform_vector_size,
2904 scm_uniform_vector_elements, scm_uniform_vector_element_size,
2905 scm_uniform_vector_release): New.
2906 (scm_i_uniform_vector_prototype, scm_i_uniform_vector_tag): New.
2907 (scm_uniform_element_size, scm_uniform_vector_length): Moved here
2908 from unif.h, unif.c and extended to handle both the old and new
2909 uniform vectors.
2910
2911 * tags.h (scm_tc7_byvect): Commented out.
2912
2913 * unif.h, unif.c (scm_uniform_vector_ref, scm_array_ref): Renamed
2914 the former to the latter.
2915 (scm_uniform_vector_length, scm_uniform_element_size): Moved to
2916 srfi-4.h, srfi-4.c.
2917 (scm_make_uve): Call scm_make_s8vector for #\nul prototype.
2918 (scm_array_p, scm_array_rank, scm_array_dimensions,
2919 scm_transpose_array, scm_enclose_array, scm_array_ref, scm_cvref,
2920 scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
2921 scm_array_to_list, scm_array_prototype): Handle srfi-4 uniform
2922 vectors. Removed code for scm_tc7_byvect.
2923 (scm_dimensions_to_uniform_array): Fill array with 0 when
2924 prototype is #\nul.
2925 (scm_i_print_array_dimension, scm_i_legacy_tag,
2926 scm_i_print_array): New.
2927 (scm_raprin1): Call scm_i_print_array for arrays. Removed code
2928 for scm_tc7_byvect.
2929
2930 * ramap.c (scm_ra_matchp, scm_array_fill_int, racp,
2931 scm_array_index_map_x, raeql_1, scm_array_equal_p): Handle srfi-4
2932 uniform vectors. Removed code for scm_tc7_byvect
2933
2934 * print.c (iprin1): Removed code for scm_tc7_byvect.
2935 * objects.c (scm_class_of): Likewise.
2936 * gc-mark.c (scm_gc_mark_dependencies): Likewise.
2937 * gc-card.c (scm_i_sweep_card): Likewise.
2938 * evalext.c (scm_self_evaluating_p): Likewise.
2939 * eq.c (scm_equal_p): Likewise.
2940
2941 * gh_data.c (gh_chars2byvect): Reimplemented with
2942 scm_make_s8vector.
2943 (gh_scm2chars): Handle s8vectors, removed code for scm_tc7_byvect.
2944
2945 * srfi-4.c (take_uvec): New.
2946 (alloc_uvec): Use it.
2947 * srfi-4.h, srfi-4.i.c (scm_take_u8vector, etc): New.
2948
2949 * random.c (vector_scale, vector_scale_x): Renamed former to the
2950 latter, since it modifies its argument.
2951 (vector_scale_x, vector_sum_squares, scm_random_normal_vector_x):
2952 Do not use scm_universal_vector_length for non-uniform vectors.
2953 Use scm_f64vector_elements to access innards of uniform vectors.
2954
2955 * convert.i.c: Convert srfi-4 style uniform vectors when
2956 requested.
2957 * convert.c (scm_c_scm2chars, scm_c_chars2scm,
2958 scm_c_chars2byvect): Use a s8vector instead of a scm_tc7_byvect.
2959
79d52182
MV
29602004-10-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2961
2962 * numbers.h, numbers.c (scm_i_print_double): New.
2963
2964 * srfi-4.c, srfi-4.h, srfi-4.i.c: New files, initially from
2965 ../srfi/ but heavily modified.
2966 * Makefile.am: Add them in all the right places.
2967 * init.c (scm_init_guile_1): Call scm_init_srfi_4.
2968 * read.c (scm_lreadr): Call scm_i_read_homogenous_vector for '#f',
2969 '#u', and '#s'.
2970
2971 * read.h, read.c (scm_i_input_error): Renamed from scm_input_error
2972 and made non-static. Changed all uses.
2973
6191ccec
MV
29742004-10-22 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2975
e64e80b0
MV
2976 * variable.c, threads.c, struct.c, stackchk.c, smob.c, root.c,
2977 print.c, ports.c, mallocs.c, hooks.c, hashtab.c, fports.c,
2978 guardians.c, filesys.c, coop-pthreads.c, continuations.c: Use
2979 scm_uintprint to print unsigned integers, raw heap words, and
2980 adresses, using a cast to scm_t_bits to turn pointers into
2981 integers.
2982
2983 * unif.c: Include "libguile/print.h".
2984
c90ac3a8
MV
2985 * numbers.h, numbers.c (SCM_T_INTBUFLEN): Increased to cover
2986 scm_t_intmax values.
2987 (scm_uint2str): New, for scm_t_uintmax.
2988 (scm_iint2str): Argument type changed to scm_t_intmax,
2989 reimplemented in terms of scm_uint2str.
2990
2991 * print.c, print.h (scm_uintprint): New, for printing
2992 scm_t_uintmax values.
2993 (scm_intprint): Argument type changed to scm_t_intmax.
2994
77c2594f
MV
2995 * sort.c (quicksort, scm_merge, scm_merge_list_x,
2996 scm_merge_list_step, scm_merge_vector_step): Inserted SCM_TICKs at
2997 strategic places so that the loops can be interrupted.
2998
6191ccec
MV
2999 * Makefile.am (INCLUDES): Use @LTDLINC@ instead of
3000 "-I$(top_srcdir)/libguile-ltdl".
3001 (libguile_la_LIBADD): Use @LIBLTDL@ instead of
3002 "../libguile-ltdl/libguile-ltdl.a".
3003
3004 * guile.c, dynl.c: Switched to using libltdl directly. Replaced
3005 all references to scm_lt_* with just lt_*. Include <ltdl.h>
3006 instead of <libguile-ltdl.h>.
3007
77600f3e
MV
30082004-10-20 Marius Vollmer <mvo@zagadka.de>
3009
3010 * sort.c (quicksort): Copy pivot out of the array while
3011 constructing the partitions; it could get overwritten otherwise.
3012 Because of the ultimate insertion sort, this bug did not cause
3013 quicksort to fail, it just put all the burdon on the insertion
3014 sort and was thus very slow. Thanks to Rolan Orre for reporting
3015 the slowness!
3016
5000379b
MV
30172004-10-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3018
192cd792
MV
3019 * numbers.c (scm_i_range_error): New.
3020 * conv-integer.i.c, conv-uinteger.i.c: Use it instead of
3021 scm_out_of_range.
3022
3023 * sort.c (scm_restricted_vector_sort_x): Validate startpos <=
6191ccec 3024 endpos. State inclusiveness/exclusiveness of bounds in docstring.
192cd792
MV
3025
3026 * unif.c (scm_array_p): When no prototype is given, explicitely
3027 test for allowable types, do not simply return true. Thanks to
3028 Roland Orre for reporting this!
3029
5000379b
MV
3030 * private-gc.h (SCM_DEFAULT_MAX_SEGMENT_SIZE): Increase to 20 Mib.
3031
3032 * gc-segment.c (scm_i_get_new_heap_segment): Limit size of new
3033 segment to scm_max_segment_size.
3034
497eb0b7
HWN
30352004-10-08 Han-Wen Nienhuys <hanwen@xs4all.nl>
3036
1367aa5e
HWN
3037 * gc.c (scm_igc): put scm_gc_running-- before running hooks.
3038
497eb0b7
HWN
3039 * inline.h (scm_double_cell): abort if GC running.
3040 (scm_cell): idem.
3041
aef0bdb4
MV
30422004-10-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3043
3044 * error.c (scm_wrong_type_arg): Do not talk about "argument" for
3045 pos == 0.
3046
3047 Keywords no longer store a 'dash symbol'. Instead, they store a
3048 symbol with their real name.
3049
3050 * keywords.h, keywords.c, deprecated.h, deprecated.c
3051 (SCM_KEYWORDP, SCM_KEYWORDSYM): Deprecated and implemented in
3052 terms of scm_is_keyword and scm_keyword_dash_symbol.
3053
3054 * keywords.h, keywords.c, discouraged.h, discouraged.c
3055 (scm_make_keyword_from_dash_symbol, scm_keyword_dash_symbol,
3056 scm_c_make_keyword): Discouraged.
3057
3058 * keywords.h, keywords.c (scm_symbol_to_keyword,
3059 scm_keyword_to_symbol): Implemented in C.
3060 (scm_is_keyword, scm_from_locale_keyword,
3061 scm_from_locale_keywordn): New.
3062
3063 * goops.c: Replaced SCM_KEYWORDP with scm_is_keyword.
3064
3065 * snarf.h (SCM_KEYWORD, SCM_GLOBAL_KEYWORD): Use
3066 scm_from_locale_keyword instead of scm_c_make_keyword.
3067
3068 * keywords.c (scm_symbol_to_keyword): Use SCM_ASSERT_TYPE for a
3069 better error message.
3070
3071 * deprecated.c: Include discouraged.h and keywords.h.
3072
3073 * read.c (scm_lreadr): Simply do (symbol->keyword (read)) after
3074 reading '#:' or ':'. See NEWS for consequences.
3075
818deb11
MV
30762004-09-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3077
43c25626
MV
3078 * read.c (scm_lreadr): Revert change from 2004-09-22: string
3079 literals are now read-write again (until SCM_STRING_CHARS is
3080 removed).
3081
3082 * strings.c (SCM_STRING_CHARS): Explicitely reject read-only
3083 strings with an error message that blames SCM_STRING_CHARS.
3084
3085 * options.c (change_option_setting): Use scm_car instead of
3086 explicit type check plus SCM_CAR.
3087
3088 * print.h, print.c (SCM_PRINT_HIGHLIGHT_PREFIX,
3089 SCM_PRINT_HIGHLIGHT_SUFFIX): New printer options.
3090 (scm_iprin1): Use them instead of the previoulsy hardcoded
3091 strings.
3092 (scm_init_print): Initialize them.
3093
3094 * backtrace.c (display_frame_expr): Do not remove control
3095 characters from the final string. Print it directly using
3096 scm_display.
3097
818deb11
MV
3098 * ramap.c (scm_array_equal_p): Include scm_tc7_svect in switch.
3099 Thanks to Roland Orre!
3100
d748089e
KR
31012004-09-29 Kevin Ryde <user42@zip.com.au>
3102
3103 * regex-posix.c (scm_regexp_exec): Correction to last change, should
3104 be whole original string in match struct, not offsetted substring.
3105
0ff7e3ff
HWN
31062004-09-24 Han-Wen Nienhuys <hanwen@xs4all.nl>
3107
3108 * gc.c (scm_gc_unprotect_object): abort if called during GC.
3109
ad7de4b8
MV
31102004-09-24 Marius Vollmer <mvo@zagadka.de>
3111
2edf319f
MV
3112 * Makefile.am (EXTRA_DIST): Added gettext.h.
3113
d180337b
MV
3114 * smob.c, smob.h (scm_assert_smob_type): New.
3115
05d7cf89 3116 * Makefile.am (guile_CFLAGS, guile_LDFLAGS, libguile_la_CFLAGS):
ad7de4b8
MV
3117 Include GUILE_CFLAGS.
3118 (libguile_la_LIBADD): Removed THREAD_LIBS_LOCAL, which is unused
3119 now.
3120 (libpath.h): Put GUILE_CFLAGS in the build-info.
3121
c9fedf8a
MV
31222004-09-23 Marius Vollmer <mvo@zagadka.de>
3123
3124 * print.h (scm_print_state): Added highlight_objects.
3125 * print.c (make_print_state, scm_free_print_state): Initialize it
3126 to SCM_EOL.
3127 (scm_iprin1): Wrap output in '{...}' when object is contained in
3128 highlight_objects.
3129
3130 * backtrace.h, backtrace.c (scm_display_backtrace_with_highlights,
3131 scm_backtrace_with_highlights): New. Set highlight_objects of
3132 printstate.
3133
3134 * error.c (scm_error_scm): Document new meaning of data/rest
3135 argument for out-of-range and wrong-type-arg errors.
3136 (scm_out_of_range, scm_out_of_range_pos, scm_wrong_type_arg,
3137 scm_wrong_type_arg_msg): Pass bad_value in rest argument of
3138 exception so that it gets highlighted in the backtrace.
3139 Don't talk about "argument" when not giving a position.
3140
3141 * throw.c (handler_message): The rest argument is the fourth
3142 argument, not everything after the third. Call
3143 scm_display_backtrace_with_highlights, passing the rest argument
3144 when appropriate.
3145
d5ac9b2a
MV
31462004-09-22 Marius Vollmer <mvo@zagadka.de>
3147
3148 From Jan Nieuwenhuizen <janneke@gnu.org> and Bruno Haible
3149 <bruno@clisp.org>:
3150
3151 * i18n.c: Handle --disable-nls (thanks Bruno).
3152
3153 * posix.c (scm_init_posix): Add LC_PAPER, LC_NAME, LC_ADDRESS,
3154 LC_TELEPHONE, LC_MEASUREMENT, LC_IDENTIFICATION.
3155
3156 * i18n.c (scm_i_to_lc_category): New name and export. Support all
3157 LC categories.
05d7cf89 3158 * posix.c (scm_setlocale): Use it.
d5ac9b2a
MV
3159
3160 * i18n.h, i18n.c (scm_textdomain, scm_bindtextdomain,
3161 scm_bind_textdomain_codeset): Make wrappers similar to C function
3162 they wrap.
3163
3164 * i18n.h: New file.
3165 * i18n.c: New file.
3166 * gettext.h: New file, taken from GNU gettext.
3167 * init.c: Include libguile/i18n.h.
3168 (scm_init_guile_1): Add call to scm_init_i18n().
3169 * Makefile.am (libguile_la_SOURCES): Add i18n.c.
3170 (DOT_X_FILES): Add i18n.x.
3171 (DOT_DOC_FILES): Add i18n.doc.
3172 (libguile_la_LDFLAGS): Add @LTLIBINTL@.
3173 (modinclude_HEADERS): Add i18n.h.
3174
d2e53ed6
MV
31752004-09-22 Marius Vollmer <mvo@zagadka.de>
3176
2cdfe016
MV
3177 * gh_list.c: Replaced SCM_CAR, etc with scm_car, etc.
3178
d2e53ed6
MV
3179 * discouraged.h, tags.h (SCM_CONSP, SCM_NCONSP): Moved to
3180 discouraged.h. Replaced all uses with scm_is_pair.
3181 (SCM_I_CONSP): New name for SCM_CONSP.
3182
3183 * pairs.h, pairs.c (scm_is_pair, scm_is_null, scm_car, scm_cdr,
3184 scm_i_chase_pairs, SCM_I_A_PAT, SCM_I_D_PAT, etc, scm_caar,
3185 scm_cadr, etc): New.
3186 (SCM_NULLP, SCM_NNULLP): Moved to discouraged.h. Replaced all
3187 uses with scm_is_null.
5dd82006 3188
d2e53ed6
MV
3189 * eval.c (scm_eval, scm_apply, call_cxr_1): Use scm_i_chase_pairs
3190 instead of explicit code.
5dd82006 3191
5dfdf243
MV
31922004-09-22 Marius Vollmer <mvo@zagadka.de>
3193
b50c53e5
MV
3194 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
3195 Reworded logic a bit so that #f is returned immediately when s1 is
3196 too short to contain s2.
3197
5dfdf243 3198 * regex-posix.c (scm_regexp_exec): Convert string to
05d7cf89 3199 zero-terminated locale string before matching against it.
5dfdf243
MV
3200
3201 * strings.h, strings.c (scm_substring_read_only,
3202 scm_c_substring_read_only, scm_i_substring_read_only): New.
3203 (RO_STRING_TAG, IS_RO_STRING): New.
3204 (scm_i_string_writable_chars): Bail on read-only strings.
3205
3206 * read.c (scm_lreadr): use scm_c_substring_read_only for string
3207 literals, thus making them read-only as specified by R5RS.
3208
22ab5ba3
MV
32092004-09-22 Marius Vollmer <mvo@zagadka.de>
3210
3211 * eq.c (scm_equal_p): Allow smobs with different flags to be equal
3212 by testing for smobs before insisting on equal SCM_CELL_TYPES.
3213
2663421c
MV
32142004-09-21 Marius Vollmer <mvo@zagadka.de>
3215
0d83cb90
MV
3216 * numbers.h, numbers.c: Include <gmp.h> in numbers.h, not in
3217 numbers.c.
3218 (scm_to_mpz, scm_from_mpz): New.
9a5fa6e9 3219 Thanks to Andreas Vögele!
0d83cb90 3220
2663421c
MV
3221 * read.c (skip_scsh_block_comment): Recognize "!#" everywhere, not
3222 just on a line of its own.
3223
3224 * srfi-13.c (scm_string_any, scm_string_every,
3225 scm_string_tabulate, string_upcase_x, string_down_case_x,
3226 string_titlecase_x, string_reverse_x, scm_string_tokenize): Use
3227 size_t instead of int for indices into strings. Make sure that no
9a5fa6e9 3228 over- or underflow occurs. Thanks to Andreas Vögele!
2663421c
MV
3229 (scm_xsubstring, scm_string_xcopy_x): Use ints for 'extended'
3230 indices, which can also be negative.
3231
b00b73f9
MV
32322004-09-20 Marius Vollmer <mvo@zagadka.de>
3233
3234 * gc-mark.c (SCM_MARK_BACKING_STORE): Removed, it was unused.
3235
3236 * threads.c (scm_threads_mark_stacks): Call
3237 SCM_MARK_BACKING_STORE. Also, do not use stack_len local, it was
3238 only used once.
3239
adba74f3
HWN
32402004-09-13 Jan Nieuwenhuizen <janneke@gnu.org>
3241
05d7cf89 3242 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
adba74f3
HWN
3243 Bugfix: when subtracting unsigned values, make sure that result
3244 does not wrap.
3245
f6de32c8
KR
32462004-09-09 Kevin Ryde <user42@zip.com.au>
3247
3248 * filesys.c, stime.c (_POSIX_C_SOURCE): Use this only on hpux, it
3249 causes too many problems elsewhere (glibc, freebsd, mingw). Reported
9a5fa6e9 3250 by Andreas Vögele.
f6de32c8 3251
e548be5f
MV
32522004-09-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3253
eb8d0af1
MV
3254 * Makefile.am (EXTRA_libguile_la_SOURCES): Removed "alloca.c".
3255
e548be5f
MV
3256 * eq.c (real_eqv): Pretend that all NaNs are equal.
3257
3258 * numbers.c (scm_integer_expt): Do not accept inexact integers.
3259
e7acba81
MV
32602004-09-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3261
874fbad1
MV
3262 * srfi-13.c (scm_string_trim_right, scm_string_xcopy_x): Correctly
3263 use size_t for some locals instead of int.
3264
e7acba81
MV
3265 * read.c (scm_flush_ws): Detect "#!"-style comments here.
3266 (scm_lreadr): Abort on seeing "#!", which should no longer happen.
3267 (skip_scsh_block_comment): Use scm_input_error instead of
3268 scm_misc_error in case of EOF.
3269
5de12658
KR
32702004-09-07 Kevin Ryde <user42@zip.com.au>
3271
3272 * numbers.c (scm_integer_expt): Reject exponent +/-inf.
5de12658
KR
3273 Bug report by Bill Schottstaedt.
3274
3275 * ports.c (scm_getc, scm_lfwrite): Recognise \a \b and \r for port
3276 column.
3277 * ports.h (SCM_ZEROCOL, SCM_DECCOL): New macros.
3278
3279 * posix.c (scm_access): Update docstring per manual.
3280
3281 * posix.c (scm_nice): Correction to error detection. Reported by
3282 Matthias Koeppe.
3283
3284 * stime.c (scm_current_time, scm_gettimeofday, scm_strptime): Don't
3285 throw error before unlocking mutex with SCM_ALLOW_INTS.
3286
e227addf
KR
32872004-09-06 Kevin Ryde <user42@zip.com.au>
3288
3289 * stime.h (SCM_TIME_UNITS_PER_SECOND): Use sysconf(_SC_CLK_TCK) when
3290 available. This also gets around CLK_TCK being absent when
3291 _GNU_SOURCE and _POSIX_C_SOURCE are defined in stime.c.
3292
edea856c
SJ
32932004-09-03 Stefan Jahn <stefan@lkcc.org>
3294
3295 * threads.c (scm_threads_mark_stacks): Fixed local variable
3296 definitions.
3297
e7acba81 3298 * strings.c (scm_i_substring_copy, scm_string_append): Fixed
edea856c
SJ
3299 local variable definitions.
3300
3301 * stime.c (_POSIX_C_SOURCE): Do not define this item on
3302 MinGW32 because it conflicts with its pthread headers.
874fbad1
MV
3303 (scm_mktime): Consider the HAVE_STRUCT_TM_TM_ZONE define.
3304 (scm_strftime): Using scm_from_locale_string() instead of
edea856c
SJ
3305 scm_makfrom0str().
3306
874fbad1 3307 * posix.c (scm_putenv): Fixed typo in the !HAVE_UNSETENV
edea856c
SJ
3308 part.
3309
3310 * numbers.c (scm_init_numbers): Removed check_sanity() call
3311 inside GUILE_DEBUG. The function has been removed somewhen...
3312
3313 * filesys.c (_POSIX_C_SOURCE): Do not define this item on
3314 MinGW32 because it conflicts with its pthread headers.
3315
d9eb2d67
MV
33162004-08-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3317
3318 * strings.c (SCM_STRINGP): Accept all strings.
3319 (SCM_STRING_CHARS): Reject shared substrings here.
3320
3321 * script.c (scm_compile_shell_switches): Added 2003 and 2004 to
3322 the Copyright years.
3323
c495c342
KR
33242004-08-27 Kevin Ryde <user42@zip.com.au>
3325
3326 * socket.c (scm_fill_sockaddr): Use HAVE_STRUCT_SOCKADDR_SIN_LEN and
3327 HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN for sockaddr fields, SIN_LEN and
3328 SIN_LEN6 are not defined on all systems. Reported by Michael Tuexen.
3329
57aa5515
MV
33302004-08-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3331
3332 * strings.h, strings.c (scm_i_make_symbol): Added FLAGS parameter.
3333 * symbols.h, symbols.c (SCM_I_F_SYMBOL_UNINTERNED,
3334 scm_i_symbol_is_interned, scm_i_mem2symbol,
3335 scm_i_mem2uninternedsymbol): Use it to store uninternedness flag.
3336
ce25760f
MV
33372004-08-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3338
19ff6ffc
MV
3339 * srfi-13.c: First cut at thread-safeness and proper use of
3340 scm_i_string_chars et al. Copious scm_remember_upto_heres have
3341 been inserted. Made sure that no internal string pointer is used
3342 across a SCM_TICK or a possible GC.
3343
ce25760f
MV
3344 * script.c (scm_compile_shell_switches): Use
3345 scm_from_locale_string instead of scm_makfrom0str.
3346
3347 * srfi-13.c (scm_string_rindex): Export to Scheme, as it has
3348 always been.
3349
c5080b51
MV
33502004-08-25 Marius Vollmer <mvo@zagadka.de>
3351
3352 Moved SRFI-13 and SRFI-14 into the core, taking over the role of
3353 strop.c.
3354
3355 * srfi-13.c, srfi-13.h, srfi-14.c, srfi-14.h: New files.
3356 * strop.h, strop.c: Removed, they are now empty.
3357 * Makefile.am: Updated for new and removed files.
3358
3359 * symbols.h, symbols.c (scm_string_ci_to_symbol): Moved here, next
3360 to scm_string_to_symbol.
3361
3362 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
3363 scm_char_whitespace_p, scm_upper_case_p, scm_lower_case_p,
3364 scm_char_is_both_p): Use scm_char_set_contains_p with the proper
3365 charset instead of libc functions.
3366
3367 * strorder.c (scm_string_equal_p, scm_string_ci_equal_p,
3368 scm_string_less_p, scm_string_leq_p, scm_string_gr_p,
3369 scm_string_geq_p, scm_string_ci_less_p, scm_string_ci_leq_p,
3370 scm_string_ci_gr_p, scm_string_ci_geq_p): Use scm_string_eq, etc
3371 instead of explicit code.
3372
3373 * deprecated.c, load.c, posix.c, unif.c, symbols.c: Include
3374 "srfi-13.h" instead of "strop.h".
3375
3376 * init.c (scm_init_guile_1): Call scm_init_srfi_13 and
3377 scm_init_srfi_14. Do not call scm_init_strop.
3378
4b0d27f2
MV
33792004-08-24 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3380
3381 * numbers.c (scm_inf_p): Synced docstring back from manual.
3382
3ece39d6
MV
33832004-08-22 Marius Vollmer <mvo@zagadka.de>
3384
3385 * strings.c (get_str_buf_start): New helper function.
3386 (scm_i_substring, scm_i_substring_copy, scm_i_substring_shared,
3387 scm_i_string_char, scm_i_string_writable_chars): Use it.
3388 (scm_i_substring_copy): Make START argument optional for C
3389 callers, for upcoming SRFI-13 integration.
3390
33912004-08-21 Marius Vollmer <mvo@zagadka.de>
3392
3393 From Richard Todd, Thanks!
3394
3395 * script.c (scm_compile_shell_switches): added '-L' switch to add
3396 to the %load-path.
3397
5fa0939c
DH
33982004-08-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3399
3400 * eval.c (unmemoize_exprs): When dropping internal body markers
3401 from the output during unmemoization, also drop those that are not
3402 immediately at the beginning of a body.
3403
2146fdeb
MV
34042004-08-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3405
c1f54b3d
MV
3406 * eval.c (scm_lookupcar1): Report "Variable used before given a
3407 value" insetad of an "Unbound" one for variables that are found
3408 but still contain SCM_UNDEFINED.
2146fdeb
MV
3409
3410 * posix.c (scm_mkstemp): Correction to the correction, mkstemp
3411 expects a null-terminated string in the locale encoding, but
3412 scm_i_string_writable_chars doesn't give that. Fixed by letting
3413 mkstemp modify a locale version of the tmpl argument and copying
3414 the result back into tmpl.
3415
3416 * strop.c (scm_substring_move_x): Store into str2, not str1.
3417
d4f76919
KR
34182004-08-20 Kevin Ryde <user42@zip.com.au>
3419
3420 * posix.c (scm_mkstemp): Correction to new locale_string stuff, need
3421 to modify the input string.
3422
b5247a6b
MV
34232004-08-19 Marius Vollmer <mvo@zagadka.de>
3424
3425 * deprecated.c (SCM_SYMBOL_CHARS): Cast away const in return.
3426 (SCM_SYMBOL_LENGTH): It's scm_i_symbol_length, not
3427 scm_c_symbol_length.
3428
f26b9395
MV
34292004-08-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3430
3431 New string implementation, with copy-on-write strings and
3432 mutation-sharing substrings, and a new internal string API.
3433 Symbols can now share memory with strings.
3434
3435 * tags.h (scm_tc7_stringbuf): New tag.
3436
3437 * strings.h, strings.c: (scm_i_string_chars, scm_i_string_length,
3438 scm_i_string_writable_chars, scm_i_string_stop_writing): New, to
3439 replace SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH. Updated all
3440 uses.
3441 (scm_i_make_string, scm_c_make_string): New, to replace
3442 scm_allocate_string. Updated all uses.
3443 (SCM_STRINGP, SCM_STRING_CHARS, SCM_STRING_UCHARS,
3444 SCM_STRING_LENGTH): Deprecated.
3445 (scm_allocate_string, scm_take_str, scm_take0str, scm_mem2string,
3446 scm_str2string, scm_makfrom0str, scm_makfrom0str_opt):
3447 Discouraged. Replaced all uses with scm_from_locale_string or
3448 similar, as appropriate.
3449 (scm_c_string_length, scm_c_string_ref, scm_c_string_set_x,
3450 scm_c_substring, scm_c_substring_shared, scm_c_substring_copy,
3451 scm_substring_shared, scm_substring_copy): New.
3452
3453 * symbols.c, symbols.h (SCM_SYMBOLP, SCM_SYMBOL_FUNC,
3454 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS,
3455 SCM_SYMBOL_HASH, SCM_SYMBOL_INTERNED_P, scm_mem2symbol,
3456 scm_str2symbol, scm_mem2uninterned_symbol): Discouraged.
3457 (SCM_SYMBOL_LENGTH, SCM_SYMBOL_CHARS, scm_c_symbol2str):
3458 Deprecated.
3459 (SCM_MAKE_SYMBOL_TAG, SCM_SET_SYMBOL_LENGTH, SCM_SET_SYMBOL_CHARS,
3460 SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS): Removed.
3461 (scm_is_symbol, scm_from_locale_symbol, scm_from_locale_symboln):
3462 New, to replace scm_str2symbol and scm_mem2symbol, respectively.
3463 Updated all uses.
3464 (scm_gensym): Generate only the number suffix in the buffer, just
3465 string-append the prefix.
3466
3467 * error.c (scm_memory_error): Do not try to throw, just abort.
3468 Throwing will not work anyway.
3469
3470 * gh.h, gh-data.c (gh_set_substr): Made src const.
3471
3472 * ports.c (scm_i_mode_bits_n): New, for counted strings.
3473 (scm_mode_bits): Use it.
3474 (scm_c_port_for_each): Blocking GC does not seem to work, allocate
3475 a vector normally and fill that instead of consing a list with a
3476 blocked GC.
3477
3478 * read.c (scm_i_casei_streq): New, for counted strings.
3479
3480 * threads.c (gc_section_count): Removed, thread-sleeping can not
3481 be nested.
3482 (scm_i_thread_put_to_sleep): Call scm_i_leave_guile before locking
3483 admin mutex so that we can be put to sleep by other threads while
3484 blocking on that mutex. Lock all the heap mutex of all threads,
3485 including ourselves.
3486 (scm_i_thread_wake_up): Unlock all threads, including ourselves,
3487 call scm_i_enter_guile.
3488 (scm_thread_mark_stacks): Expect all threads to be suspended.
3489
3490 * gc.h, gc.c (scm_i_gc_admin_mutex): New, to protect
3491 scm_gc_mallocated, for now.
3492 (scm_init_storage): Initialize it.
3493 * gc-malloc.c (descrease_mtrigger, increase_mtrigger): Use it.
3494
3495 * gc-mark.c (scm_gc_mark_dependencies): Call scm_i_string_mark,
3496 scm_i_stringbuf_mark and scm_i_symbol_mark, as appropriate.
3497 * gc-card.c (scm_i_sweep_card): Call scm_i_string_free,
3498 scm_i_stringbuf_free and scm_i_symbol_free, as appropriate.
3499
cd505b38
MV
3500 * strop.c (scm_string_copy): Use scm_c_substring to get a
3501 copy-on-write string.
3502
8a807b26
KR
35032004-08-18 Kevin Ryde <user42@zip.com.au>
3504
3505 * arbiters.c (FETCH_STORE): New macro.
3506 (SCM_LOCK_VAL, SCM_UNLOCK_VAL): New constants.
3507 (SCM_LOCK_ARB, SCM_UNLOCK_ARB): Remove, effectively absorbed into
3508 scm_try_arbiter and scm_release_arbiter.
3509 (scm_try_arbiter, scm_release_arbiter): Use FETCH_STORE to get xchg
3510 for speed on i386, otherwise using mutex.
3511
3512 * eq.c (scm_equal_p): Remove real==fraction and fraction==real, they
3513 must be #f according to R5RS. (equal? follows eqv?, and for eqv? an
3514 exact and inexact is #f.)
3515
3516 * fports.c (fport_print): Use scm_ttyname instead of ttyname directly,
3517 to get thread safety of scm_ttyname.
3518
3519 * ports.c (ttyname): Remove prototype, unused.
3520
d6cd4c36 3521 * socket.c (scm_init_socket): Add SOCK_SEQPACKET and SOCK_RDM.
1f3cc0d3 3522 Reported by Michael Tuexen.
d6cd4c36 3523
fa0c0a4b
MV
35242004-08-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3525
3526 * load.c (scm_init_load_path): Do not pass NULL to
3527 scm_to_locale_string, which would happen when GUILE_LOAD_PATH is
3528 not set. Thanks to Bill Schottstaedt.
3529
70f7ee41
MV
35302004-08-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3531
3532 * socket.c (scm_inet_aton, scm_inet_pton): Convert SCM strings to
3533 locale strings instead of accessing their internals.
3534 (scm_recv, scm_send, scm_recvfrom, scm_sendto): Use
3535 SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH instead of
3536 SCM_STRING_CHARS and SCM_STRING_LENGTH.
3537
3538 * simpos.c (scm_system): Convert SCM strings to locale strings
3539 instead of accessing their internals.
3540
3541 * script.c (scm_compile_shell_switches): Convert version to locale
3542 string before printing it.
3543
3544 * rdelim.c (scm_read_delimited_x): Avoid
3545 SCM_VALIDATE_SUBSTRING_SPEC_COPY and use scm_from_size_t instead
3546 of scm_from_long for the returned number of read characters.
3547
3548 * ioext.c (scm_fdopen): Use scm_i_fdes_to_port together with
3549 scm_i_mode_bits to avoid accessing internals of SCM string from C.
3550
3551 * filesys.c (STRING_SYSCALL, STRING2_SYSCALL): New helper macros.
3552 Use them instead of SCM_SYSCALL when one or two strings need to be
3553 converted into locale strings.
3554 (my_rename): New, gathers platform dependent code for renaming.
3555 (scm_rename): Use it.
3556 (scm_readlink, scm_copy_file): Convert SCM strings to locale
3557 strings instead of accessing their internals.
3558 (scm_basename, scm_dirname): Use SCM_I_STRING_CHARS and
3559 SCM_I_STRING_LENGTH instead of SCM_STRING_CHARS and
3560 SCM_STRING_LENGTH.
3561
3562 * extensions.c (load_extension): Convert lib and init to locale
3563 strings instead of accessing the internals directly.
3564 (scm_c_load_extension): Use scm_from_locale_string instead of
3565 scm_makfrom0str.
3566
3567 * fports.h, fports.c (scm_i_fdes_to_port): New, like
3568 scm_fdes_to_port, but take mode bits directly instead of as a C
3569 string.
3570 (scm_i_fdes_to_port): Implement using above.
3571 (scm_open_file): Use scm_i_fdes_to_port together with
3572 scm_i_mode_bits to avoid accessing internals of SCM string from C.
3573 * vports.c (scm_make_soft_port): Use scm_i_fdes_to_port together
3574 with scm_i_mode_bits to avoid accessing internals of SCM string
3575 from C.
3576
3577 * ports.h (scm_i_mode_bits): New, same as scm_mode_bits but with a
3578 SCM string as argument.
3579
3580 * ports.c (scm_i_void_port): New, like scm_void_port but take mode
3581 bits directly instead of C string.
3582 (scm_void_port): Implement using above.
3583 (scm_sys_make_void_port): Use scm_i_void_port together with
3584 scm_i_mode_bits to avoid accessing internals of SCM string.
3585
3586 * strings.h, strings.c (scm_i_get_substring_spec): New.
3587
3588 * socket.c, rw.c, deprecated.h, validate.h
3589 (SCM_VALIDATE_STRING_COPY): Deprecated. Replaced all uses with
3590 SCM_VALIDATE_STRING plus SCM_I_STRING_CHARS or
3591 scm_to_locale_string, etc.
3592 (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Deprecated. Replaced as
3593 above, plus scm_i_get_substring_spec.
3594
3595 * regex-posix.c, read.c, random.c, ramap.c, print.c, numbers.c,
3596 hash.c, gc.c, gc-card.c, convert.i.c, backtrace.c, strop.c,
3597 strorder.c, strports.c, struct.c, symbols.c, unif.c, ports.c: Use
3598 SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_STRING_LENGTH
3599 instead of SCM_STRING_CHARS, SCM_STRING_UCHARS, and
3600 SCM_STRING_LENGTH, respectively. Also, replaced scm_return_first
3601 with more explicit scm_remember_upto_here_1, etc, or introduced
3602 them in the first place.
3603
3604 * posix.c (WITH_STRING): New helper macro. Use it where one
3605 locale string is needed for a short piece of code.
3606 (STRING_SYSCALL): New helper macro. Use it instead of SCM_SYSCALL
3607 when one locale string is needed.
3608 (scm_mkstemp): Convert tmpl to a locale string.
3609 (scm_putenv): Rewritten to use only C strings.
3610 (scm_setlocale, scm_crpt): Convert argument strings to locale
3611 strings.
3612
36132004-08-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3614
3615 * load.c (scm_primitive_load_path): Do not check for absolute
3616 filenames when scm_sys_search_load_path returns false, which will
3617 return absolute filenames unchanged.
3618
bb26cc2d
MV
36192004-08-11 Marius Vollmer <mvo@zagadka.de>
3620
3621 * gc.c, procprop.c (scm_init_storage, scm_stand_in_procs,
3622 scm_stand_in_proc): Use a hastable for scm_stand_in_procs instead
3623 of an alist. Thanks to Matthias Koeppe!
3624
02573e4c
MV
36252004-08-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3626
3627 * strings.h, deprecated.h (SCM_STRING_COERCE_0TERMINATION_X):
3628 Moved from string.h to deprecated.h.
3629
3630 * deprecated.c, deprecated.h (SCM_CHARS, SCM_LENGTH): Removed.
3631
f9751e86 3632 * strings.h, strings.c (SCM_MAKE_STRING_TAG): Renamed to
02573e4c
MV
3633 SCM_I_MAKE_STRING_TAG, changed all uses.
3634 (SCM_STRING_CHARS, SCM_STRING_UCHARS, SCM_STRING_LENGTH): Renamed
3635 to SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_LENGTH
3636 respectively. For a short time, the old names are still there as
3637 aliases. Not all uses have been changed yet, but the ones in
3638 strings.c have.
3639 (SCM_STRING_MAX_LEN): Do not hardcode to 24 bits, compute from
3640 SCM_T_BITS_MAX.
3641 (scm_is_string, scm_from_locale_string, scm_from_locale_stringn,
3642 scm_take_locale_string, scm_take_locale_stringn,
3643 scm_to_locale_string, scm_to_locale_stringn,
3644 scm_to_locale_stringbuf): New.
3645 (scm_c_string2str, scm_c_substring2str): Deprecated by moving to
3646 deprecated.[hc]. Implemented in terms of the new functions above.
3647 (scm_take_str, scm_take0str, scm_mem2string, scm_str2string,
3648 scm_makfrom0str): Reimplemented in terms of the new functions from
3649 above. They will be discouraged shortly.
3650 (scm_substring): Do not use scm_mem2string.
3651 (scm_i_allocate_string_pointers, scm_i_free_string_pointers): New,
3652 to replace similar code from posix.c, simpos.c, and dynl.c.
3653 (scm_string_append): Use memcpy instead of explicit loop. Do not
3654 use register keyword. Use plain 'char' instead of 'unsigned
3655 char'.
3656
3657 * strports.c (scm_mkstrport): Use SCM_I_STRING_UCHARS instead of
3658 SCM_STRING_UCHARS. Use SCM_I_STRINGP instead of SCM_STRINGP.
3659
3660 * strop.c (scm_i_index): Replaced SCM_STRINGP, SCM_STRING_CHARS,
3661 and SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
3662 SCM_I_STRING_LENGTH, respectively. Pass string object directly,
3663 not as a pointer. Use scm_remember_upto_here_1 to protect it.
3664
3665 * read.c (scm_input_error): Use a SCM value for 'fn', not a C
3666 string. This avoids a conversion round-trip.
3667
3668 * gh_data.c: Replaced SCM_STRINGP, SCM_STRING_CHARS, and
3669 SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
3670 SCM_I_STRING_LENGTH, respectively.
3671 (gh_scm2newstr): Implement in terms of scm_to_locale_string.
3672
3673 * environments.c: Instead calling scm_puts on the SCM_STRING_CHARS
3674 of a string, call scm_display on the string itself.
3675
3676 * dynwind.c, dynwind.h (scm_frame_free): New.
3677
3678 * stime.c, socket.c, simpos.c, procs.c, posix.c, ports.c,
3679 net_db.c, fports.c, filesys.c, eval.c, deprecation.c, dynl.c:
3680 Replaced uses of SCM_STRING_CHARS with proper uses of
3681 scm_to_locale_string. Replaced SCM_STRINGP with scm_is_string.
3682 Replaced scm_mem2string with scm_from_locale_string.
3683
3684 * simpos.c, posix.c (allocate_string_pointers, environ_list_to_c):
3685 Removed, replaced all uses with scm_i_allocate_string_pointers.
3686
3687 * load.h, load.c (scm_internal_parse_path): Removed.
3688 (scm_parse_path): Use scm_string_split to do the work.
3689 (scm_init_load_path): Use scm_parse_path instead of
3690 scm_internal_parse_path.
3691 (scm_search_path): Rewritten string handling part of the code in
3692 terms of scm_to_locale_stringbuf and so that it is thread safe.
3693
3694 * error.c (scm_error_scm): Throw directly instead of calling
3695 scm_error, this avoids the back and forth conversion of SUBR and
3696 MESSAGE and also plugs a memory leak.
3697 (scm_error): Call scm_error_scm.
3698
3699 * backtrace.c: Replaced SCM_STRINGP with scm_is_string.
3700 (display_header): Print FNAME when it is true, not
3701 merely when it is a string.
3702
3703 * strings.h (SCM_SET_STRING_LENGTH, SCM_SET_STRING_CHARS): Removed
3704 unceremoniously. They were unused by Guile itself, and external
3705 use should stop immediately.
3706
3707
409eb4e5
MV
37082004-08-10 Marius Vollmer <mvo@zagadka.de>
3709
3710 * numbers.h, number.c, deprecated.h, deprecated.c (scm_round,
3711 scm_truncate): Renamed to scm_c_round and scm_c_truncate;
3712 deprecated versions installed in deprecated.h and deprecated.c.
3713 Changed all uses.
3714
a00eaf19
RB
37152004-08-06 Rob Browning <rlb@defaultvalue.org>
3716
3717 * net_db.c (scm_resolv_error): don't cause an exception while
3718 trying to throw an exception -- call scm_misc_error with correct
3719 arguments. The previous arguments needed a format escape that
3720 wasn't in any of the format strings.
3721
bcb88c93
KR
37222004-08-06 Kevin Ryde <user42@zip.com.au>
3723
8f094b97
KR
3724 * ramap.c (scm_array_fill_x): For byvect char fill, force signed char
3725 so as not to depend on signedness of plain char. For byvect range
3726 check, throw out-of-range rather than wrong-type-arg.
3727
bcb88c93
KR
3728 * unif.c (scm_uniform_vector_ref, scm_array_set_x): For byvect, force
3729 signed byte range checks by using scm_to_schar and scm_from_schar,
3730 don't want to depend on signedness of C char.
3731
29e61124
KR
37322004-08-05 Kevin Ryde <user42@zip.com.au>
3733
3734 * arbiters.c (scm_try_arbiter): Use scm_i_misc_mutex instead of
3735 SCM_DEFER_INTS.
3736 (scm_release_arbiter): Use scm_i_misc_mutex so return value can be
3737 guaranteed if multiple threads compete to unlock.
3738 Update docstrings per doc/ref/api-scheduling.texi.
3739
99de794f
KR
3740 * filesys.c (scm_copy_file): Use fstat on the input fd rather than
3741 stat on the filename, to be certain a file rename can't mean we get
3742 info on one filesystem object but open another. This fstat usage is
3743 similar to Emacs copy-file.
3744
29e61124
KR
3745 * posix.c (scm_setgroups): Enhance docstring, per doc/ref/posix.texi.
3746
3747 * simpos.c (scm_system_star): Change scm_from_long to scm_from_int on
3748 SIGINT and SIGQUIT, since those values are ints.
3749
759aa8f9
MV
37502004-08-03 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3751
7241f213
MV
3752 * num2integral.i.c, num2float.i.c: Removed.
3753 * Makefile.am (noinst_HEADERS): Updated.
3754
f9656a9f
MV
3755 * numbers.h. numbers.c (scm_make_ratio): Renamed to
3756 scm_i_make_ratio and made static, replaced uses with scm_divide.
96d8c217
MV
3757 (scm_complex_p): New, export as "complex?" to Scheme.
3758 (scm_number_p): Export as "number?" to Scheme.
3759 (scm_is_complex, scm_is_number): New.
3760 (scm_c_make_rectangular, scm_c_make_polar): New.
3761 (scm_make_rectangular, scm_make_polar): Use above.
3762 (scm_c_real_part, scm_c_imag_part, scm_c_magnitude, scm_c_angle):
3763 New.
3764 (scm_make_complex): Discouraged by moving to discouraged.h and
3765 discouraged.c. Replaced all uses with scm_c_make_rectangular.
3766
759aa8f9
MV
3767 * discouraged.h, discouraged.c, numbers.c, numbers.h
3768 (scm_is_rational): New.
3769 (scm_i_short2big, scm_i_int2big, scm_i_uint2big, scm_i_size2big,
3770 scm_i_ptrdiff2big, scm_i_long_long2big, scm_i_ulong_long2big):
3771 Removed prototypes.
3772 (scm_make_real, scm_num2dbl, scm_float2num, scm_double2num):
3773 Discouraged by moving to discouraged.h and discouraged.c.
3774 Replaced all uses with scm_from_double.
3775 (scm_num2float, scm_num2double): Discouraged by moving prototype
3776 to discouraged.h and rewriting in terms of scm_to_double.
3777 Replaced all uses with scm_to_double.
3778 (scm_to_double): Do not implement in terms of scm_num2dbl, use
3779 explicit code.
3780 (scm_from_double): Do not implement in terms of scm_make_real, use
3781 explicit code.
3782
531bf3e6
MV
37832004-08-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3784
759aa8f9
MV
3785 * init.c (scm_init_guile_1): Call scm_i_init_discouraged.
3786
531bf3e6
MV
3787 * gen-scmconfig.h.in (SCM_I_GSC_ENABLE_DISCOURAGED): New.
3788 * gen-scmconfig.c (SCM_ENABLE_DISCOURAGED): Emit based on above.
3789
3790 * eval.c (SCM_EVALIM, SCM_EVALIM2, SCM_XEVAL, SCM_XEVALCAR):
3791 Renamed to SCM_I_* in order to avoid collisions with the versions
3792 defined in deprecated.h.
3793
3794 * discouraged.h, discouraged.c: New files.
3795
3796 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_EQ_P,
3797 SCM_NEGATE_BOOL, SCM_BOOL, SCM_BOOT_NOT): Promoted from being
3798 deprecated to being discouraged by moving to discouraged.h.
3799
3800 * numbers.h, numbers.c, discouraged.h, discouraged.c
3801 (scm_short2num, scm_ushort2num, scm_int2num, scm_uint2num,
3802 scm_long2num, scm_ulong2num, scm_size2num, scm_ptrdiff2num,
3803 scm_num2short, scm_num2ushort, scm_num2int, scm_num2uint,
3804 scm_num2long, scm_num2ulong, scm_num2size, scm_num2ptrdiff,
3805 scm_long_long2num, scm_ulong_long2num, scm_num2long_long,
3806 scm_num2ulong_long): Discouraged by moving to discouraged.h and
3807 discouraged.c and reimplementing in terms of scm_from_* and
3808 scm_to_*. Changed all uses to the new scm_from_* and scm_to_*
3809 functions.
3810
3811 * numbers.h, numbers.c: Removed GUILE_DEBUG code.
3812 (scm_i_short2big, scm_i_ushort2big, scm_i_int2big, scm_i_uint2big,
3813 scm_i_size2big, scm_i_ptrdiff2big): Removed.
3814 (scm_i_long2big, scm_i_ulong2big): New, explicit definitions.
3815 * conv-integer.i.c, conv-uinteger.i.c: Use them instead of
3816 explicit code.
3817
5ec82e96
KR
38182004-08-02 Kevin Ryde <user42@zip.com.au>
3819
3820 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Add comments about past
3821 and current usage and migration.
3822
58f28989
KR
38232004-07-31 Kevin Ryde <user42@zip.com.au>
3824
3825 * error.c (scm_strerror): Use scm_i_misc_mutex around strerror since
3826 it's not thread safe.
3827 (scm_syserror): Use scm_strerror rather than SCM_I_STRERROR, to take
3828 advantage of this.
3829 * fports.c (scm_open_file): Use scm_strerror likewise.
3830 * filesys.c (scm_stat, scm_lstat): Ditto.
3831
3832 * filesys.c (scm_copy_file): Avoid fd leak when destination file
3833 cannot be opened.
3834
3835 * symbols.c (scm_gensym): Use scm_i_misc_mutex around gensym_counter
3836 update, for thread safety.
3837 (gensym_counter): Move into scm_gensym which is its only user.
3838 (scm_init_symbols): No need to explicitly initialize gensym_counter.
3839
03696aab
MV
38402004-07-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3841
51fdb325
MV
3842 * numbers.h (scm_to_schar, scm_to_uchar, scm_to_char,
3843 scm_to_short, scm_to_ushort, scm_to_int, scm_to_uint, scm_to_long,
3844 scm_to_ulong, scm_to_long_long, scm_to_ulong_long, scm_to_intmax,
3845 scm_to_uintmax, scm_to_size_t, scm_to_ssize_t scm_from_schar,
3846 scm_from_uchar, scm_from_char, scm_from_short, scm_from_ushort,
3847 scm_from_int, scm_from_uint, scm_from_long, scm_from_ulong,
3848 scm_from_long_long, scm_from_ulong_long, scm_from_intmax,
3849 scm_from_uintmax, scm_from_size_t, scm_from_ssize_t): No longer
3850 defined in terms of scm_to_signed_integer, etc, but in terms of
3851 scm_to_int8, etc.
3852
3853 * gen-scmconfig.c (SCM_SIZEOF_INTMAX, SCM_SIZEOF_SIZE_T): New.
3854
03696aab
MV
3855 * gen-scmconfig.h.in: Removed SCM_I_GSC_*_LIMITS macros, they are
3856 no longer used.
3857
3858 * __scm.h (SCM_I_UTYPE_MAX, SCM_I_TYPE_MAX, SCM_I_TYPE_MIN,
3859 SCM_I_SIZE_MAX, SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX): New.
3860
3861 * __scm.h, gen-scmconfig.c (SCM_I_LLONG_MAX, SCM_I_LLONG_MIN,
3862 SCM_I_ULLONG_MAX, SCM_T_INT8_MIN, SCM_T_INT8_MAX, SCM_T_UINT8_MAX,
3863 SCM_T_INT16_MIN, SCM_T_INT16_MAX, SCM_T_UINT16_MAX,
3864 SCM_T_INT32_MIN, SCM_T_INT32_MAX, SCM_T_UINT32_MAX,
3865 SCM_T_INT64_MIN, SCM_T_INT64_MAX, SCM_T_UINT64_MAX,
3866 SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, SCM_T_UINTMAX_MAX): Moved
3867 definition into __scm.h, using new SCM_I_TYPE_MIN, etc.
3868
3869 * conv-integer.i.c, conv-uinteger.i.c: New files, used to generate
3870 the functions below.
3871
3872 * Makefile.am (noinst_HEADERS): Added conv-integer.i.c and
3873 conv-uinteger.i.c.
3874
3875 * numbers.c, numbers.h (scm_to_int8, scm_to_uint8, scm_to_int16,
3876 scm_to_uint16, scm_to_int32, scm_to_uint32, scm_to_int64,
3877 scm_to_uint64, scm_from_int8, scm_from_uint8, scm_from_int16,
3878 scm_from_uint16, scm_from_int32, scm_from_uint32, scm_from_int64,
3879 scm_from_uint64): Turned from macros into proper functions.
3880 (scm_to_signed_integer, scm_to_unsigned_integer,
3881 scm_from_signed_integer, scm_from_unsigned_integer): Generate via
3882 conv-integer.i.c and conv-uinteger.i.c, as well.
3883
3884 * number.h (scm_to_ssize_t, scm_to_size_t): Use the new
3885 SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX, and SCM_I_SIZE_MAX macros for
3886 the limits. Those are always defined.
3887
1f15779e
KR
38882004-07-29 Kevin Ryde <user42@zip.com.au>
3889
3890 * posix.c (scm_ttyname): Use scm_i_misc_mutex for thread safety.
3891
48360eb3
KR
38922004-07-28 Kevin Ryde <user42@zip.com.au>
3893
3894 * posix.c (scm_ctermid): Use an L_ctermid buf on the stack, for thread
3895 safety.
3896
c3f3c841
KR
3897 * unif.c (scm_array_set_x): For svect, use scm_num2short for
3898 consistency with other vector types and to get arg and func name into
3899 error message.
3900
c82f8ed6
MV
39012004-07-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3902
3903 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_BOOL):
3904 Reimplement using scm_is_false, scm_is_true, scm_is_bool, and
3905 scm_from_bool, respectively.
3906 (SCM_NINUMP): Added.
3907
3908 * tags.h, deprecated.h (SCM_EQ_P): Deprecated by moving it into
3909 deprecated.h. Replaced all uses with scm_is_eq.
3910
317b4c4a
KR
39112004-07-24 Kevin Ryde <user42@zip.com.au>
3912
3913 * threads.c, threads.h (scm_i_misc_mutex): New SCM_GLOBAL_MUTEX.
3914 * posix.c (scm_crypt): Use it to protect static data in crypt().
3915
e11e83f3
MV
39162004-07-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3917
3918 * deprecated.h, deprecated.c, numbers.h (SCM_INUMP, SCM_NINUMP,
c82f8ed6 3919 SCM_INUM): Deprecated by renaming them to SCM_I_INUMP,
e11e83f3
MV
3920 SCM_I_NINUMP and SCM_I_INUM, respectively and adding deprecated
3921 versions to deprecated.h and deprecated.c. Changed all uses to
3922 either use the SCM_I_ variants or scm_is_*, scm_to_*, or
3923 scm_from_*, as appropriate.
3924
3925 * dynwind.c (scm_i_dowinds): Removed unused code that would call
3926 the unexisting scm_cross_dynwind_binding_scope for inums on the
3927 windlist.
3928
a55c2b68
MV
39292004-07-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3930
3931 * socket.c (ipv6_net_to_num, scm_from_ipv6): Renamed
e11e83f3 3932 ipv6_net_to_num to scm_from_ipv6, for converting from an IPv6
a55c2b68
MV
3933 byte-wise address to a SCM integer. Changed all uses.
3934 (ipv6_num_to_net, scm_to_ipv6): Renamed ipv6_num_to_net to
3935 scm_to_ipv6 and added type and range checking, for converting from
3936 an IPv& byte-wise address to a SCM integer. Changed all uses.
3937 (bignum_in_ipv6_range_p, VALIDATE_INET6): Removed, their function
3938 is now done by scm_to_ipv6.
3939
3940 * numbers.c (scm_to_signed_integer, scm_to_unsigned_integer): dot
3941 not accept inexact integers.
3942
3943 * validate.h, deprecated.h (SCM_VALIDATE_INUM,
3944 SCM_VALIDATE_INUM_COPY, SCM_VALIDATE_BIGINT,
3945 SCM_VALIDATE_INUM_MIN, SCM_VALIDATE_INUM_MIN_COPY,
3946 SCM_VALIDATE_INUM_MIN_DEF_COPY,SCM_VALIDATE_INUM_DEF,
3947 SCM_VALIDATE_INUM_DEF_COPY, SCM_VALIDATE_INUM_RANGE,
3948 SCM_VALIDATE_INUM_RANGE_COPY): Deprecated because they make the
3949 fixnum/bignum distinction visible. Changed all uses to
3950 scm_to_size_t or similar.
3951
39522004-07-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3953
3954 * cpp_cnvt.awk: Use scm_from_int instead of SCM_MAKINUM.
3955
48a06bd5
KR
39562004-07-10 Kevin Ryde <user42@zip.com.au>
3957
3958 * hash.c (scm_hashq, scm_hashv, scm_hash): Restrict to size>=1 rather
3959 than size>=0, since 0<=hash<size cannot be satisfied for size==0, and
3960 such a size causes divide-by-zeros in scm_hasher.
3961
052fbfd9
KR
3962 * regex-posix.c (scm_make_regexp): Free rx on error, to avoid memory
3963 leak.
3964
43240c9c
MV
39652004-07-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3966
3967 * numbers.c (scm_is_signed_integer, scm_is_unsigned_integer):
3968 Rewritten using the same logic as scm_to_signed_integer and
3969 scm_to_unsigned_integer, respectively, which is better(tm). Also,
3970 use CHAR_BIT instead of hardcoding 8.
3971 (LLONG_MIN, LLONG_MAX, ULLONG_MAX): Removed and used
3972 SCM_I_LLONG_MIN etc. instead.
3973
3974 * numbers.h (SCM_MAKINUM, SCM_I_MAKINUM): Renamed SCM_MAKINUM to
3975 SCM_I_MAKINUM and changed all uses.
3976 * deprecated.h, deprecated.c (SCM_MAKINUM): Newly deprecated.
3977
a3de8e7b
MV
3978 * gen-scmconfig.c (SCM_I_LLONG_MIN, SCM_I_LLONG_MAX,
3979 SCM_I_ULLONG_MAX): Instead of hard-coding the numbers, compute
43240c9c
MV
3980 them by assuming twos-complement.
3981
c9eb03bb
MV
39822004-07-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3983
3984 * gen-scmconfig.h.in: Added all the new SCM_I_GSC_*_LIMITS that
3985 configure now produces.
3986 * gen-scmconfig.c: Use them to output SCM_T_INT8_MIN, etc
3987 definitions, giving the limits of the integer types defined by
3988 Guile. Also, output a hard coded SCM_I_LLONG_MIN, etc since
3989 LLONG_MIN or LONG_LONG_MIN is hard to get at.
3990
3991 * numbers.h (scm_to_short, scm_to_ushort): It's SHRT_MIN, etc, not
3992 SHORT_MIN.
3993 (scm_to_size_t): Use SIZE_MAX instead of cooking our own.
3994 (scm_to_long_long, scm_to_ulong_long, scm_to_int8, scm_to_uint8,
3995 scm_to_int16, scm_to_uint16, scm_to_int32, scm_to_uint32,
3996 scm_to_int64, scm_to_uint64, scm_to_intmax, scm_to_uintmax,
3997 scm_from_long_long, scm_from_ulong_long, scm_from_int8,
3998 scm_from_uint8, scm_from_int16, scm_from_uint16, scm_from_int32,
3999 scm_from_uint32, scm_from_int64, scm_from_uint64, scm_from_intmax,
4000 scm_from_uintmax): New.
4001
7888309b
MV
40022004-07-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4003
4004 * tags.h (scm_is_eq): New.
4005
4006 * deprecated.h, boolean.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOL,
4007 SCM_NEGATE_BOOL, SCM_BOOLP): Deprecated by moving into
4008 "deprecated.h". Replaced all uses with scm_is_false, scm_is_true,
4009 scm_from_bool, and scm_is_bool, respectively.
4010
4011 * boolean.h (scm_is_bool): Fix bug in prototype.
4012 (scm_from_bool): The argument is "x" not "f", stupid.
4013
4014 * boolean.c (scm_is_bool): Fix typo.
4015
4016 * numbers.h, numbers.c (scm_is_integer, scm_is_signed_integer,
4017 scm_is_unsigned_integer, scm_to_signed_integer,
4018 scm_to_unsigned_integer, scm_to_schar, scm_to_uchar, scm_to_char,
4019 scm_to_short, scm_to_ushort, scm_to_long, scm_to_ulong,
4020 scm_to_size_t, scm_to_ssize_t, scm_from_schar, scm_from_uchar,
4021 scm_from_char, scm_from_short, scm_from_ushort, scm_from_int,
4022 scm_from_uint, scm_from_long, scm_from_ulong, scm_from_size_t,
4023 scm_from_ssize_t, scm_is_real, scm_to_double, scm_from_double):
4024 New.
4025
800570a6
MV
40262004-07-05 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4027
4028 * boolean.h, boolean.c (scm_is_true, scm_is_false, scm_from_bool,
4029 scm_to_bool): New.
4030
9fcf3cbb
DH
40312004-06-27 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4032
4033 * backtrace.c (display_expression, display_frame): Call
4034 scm_i_unmemoize_expr for unmemoizing a memoized object holding a
4035 single memoized expression.
4036
4037 * debug.c (memoized_print): Don't try to unmemoize the memoized
4038 object, since we can't know whether it holds a single expression
4039 or a body.
4040
4041 (scm_mem_to_proc): Removed check for lambda expression, since it
4042 was moot anyway. Whoever uses these functions for debugging
4043 purposes should know what they do: Creating invalid memoized code
4044 will cause crashes, independent of whether this check is present
4045 or not.
4046
4047 (scm_proc_to_mem): Take the closure's code as it is and don't
4048 append a SCM_IM_LAMBDA isym. To allow easier debugging, the
4049 memoized code should not be modified.
4050
4051 * debug.[ch] (scm_unmemoize, scm_i_unmemoize_expr): Removed
4052 scm_unmemoize from public use, but made scm_i_unmemoize_expr
4053 available as a guile internal function instead. However,
4054 scm_i_unmemoize_expr will only work on memoized objects that hold
4055 a single memoized expression. It won't work with bodies.
4056
4057 * debug.c (scm_procedure_source), macros.c (macro_print), print.c
4058 (scm_iprin1): Call scm_i_unmemocopy_body for unmemoizing a body,
4059 i. e. a list of expressions.
4060
4061 * eval.c (unmemoize_exprs): Drop internal body markers from the
4062 output during unmemoization.
4063
4064 * eval.[ch] (scm_unmemocopy, scm_i_unmemocopy_expr,
4065 scm_i_unmemocopy_body): Removed scm_unmemocopy from public use,
4066 but made scm_i_unmemocopy_expr and scm_i_unmemocopy_body available
4067 as guile internal functions instead. scm_i_unmemoize_expr will
4068 only work on a single memoized expression, while
4069 scm_i_unmemocopy_body will only work on bodies.
4070
90df793f
DH
40712004-06-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4072
4073 * eval.c (unmemoize_exprs): Handle semi-memoized code.
4074
4075 (scm_cons_source, scm_primitive_eval): Prefer higher level
4076 predicate SCM_FALSEP over SCM_IMP.
4077
8048c00b
RB
40782004-06-15 Rob Browning <rlb@defaultvalue.org>
4079
4080 * script.c (scm_shell_usage): minor phrasing change.
4081
4082 * gc_os_dep.c: update ifdefery for macosx.
4083 (scm_get_stack_base): separate result initialization from
4084 declaration to slience warnings with macosx and hp-ux using gcc
9a5fa6e9 4085 3.3. Thanks to Andreas Vögele.
8048c00b 4086
d93294d4
HWN
40872004-06-13 Han-Wen Nienhuys <hanwen@xs4all.nl>
4088
4089 * eval.c (unmemoize_exprs): use SCM_CONSP for the loop condition.
4090
212e58ed
DH
40912004-06-06 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4092
4093 * list.[ch] (scm_i_finite_list_copy): New internal function to
4094 copy lists that are known to be finite (though not necessarily
4095 proper).
4096
4097 * debug.c (scm_procedure_source): Don't have scm_unmemocopy treat
4098 a closure's argument list like an expression of a body.
4099
4100 * eval.c (unmemoize_expression, unmemoize_exprs, unmemoize_and,
4101 unmemoize_begin, unmemoize_case, unmemoize_cond, unmemoize_delay,
4102 unmemoize_do, unmemoize_if, unmemoize_lambda, unmemoize_let,
4103 unmemoize_letrec, unmemoize_letstar, unmemoize_or,
4104 unmemoize_set_x, unmemoize_apply, unmemoize_atcall_cc,
4105 unmemoize_at_call_with_values, unmemoize_future, sym_atslot_ref,
4106 unmemoize_atslot_ref, sym_atslot_set_x, unmemoize_atslot_set_x,
4107 unmemoize_builtin_macro): New static functions and symbols.
4108
4109 (scm_unmemocopy): Rewritten in terms of the above. scm_unmemocopy
4110 now has a slightly different meaning: The memoized form that is
4111 receives as its argument is now interpreted as a sequence of
4112 expressions from a body.
4113
4114 (unmemocar, scm_unmemocar): Since the whole functionality of
4115 unmemocar and scm_unmemocar is not needed any more, scm_unmemocar
4116 has its old content back and is deprecated, while unmemocar has
4117 been removed.
4118
4119 (SCM_BIT7): Removed.
4120
4121 (CEVAL): For unmemoizing a single expression, call
4122 unmemoize_expression instead of scm_unmemocopy, which now expects
4123 a sequence of body expressions. Eliminated unnecessary empty
4124 environment frame when executing let* forms. Eliminated
4125 unmemoization step from evaluator.
4126
9ccea370
MV
41272004-06-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4128
4129 * eval.c (scm_macroexp, macroexp): Renamed scm_macroexp to
4130 macroexp and made static. Added new version of scm_macroexp that
4131 emits a deprecation warning and then calls macroexp.
4132 (scm_m_undefine): Issue deprecation warning.
4133
57d23e25
DH
41342004-05-30 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4135
4136 * eval.c (lookup_global_symbol, literal_p, try_macro_lookup):
4137 Modified to make set! work on symbols that represent syntactic
4138 keywords.
4139
141521ad
HWN
41402004-05-26 Han-Wen Nienhuys <hanwen@xs4all.nl>
4141
4142 * gc.h (SCM_CELL_OBJECT_LOC): use SCM_GC_CELL_OBJECT to prevent
4143 compound expression as lvalue errors.
4144
7c2f56a4
MV
41452004-05-24 Marius Vollmer <mvo@zagadka.de>
4146
4147 * dynwind.c (winder_mark): Use SCM_PACK to correctly convert the
4148 WINDER_DATA to a SCM.
4149
366ecaec
DH
41502004-05-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4151
4152 * goops.c (compute_getters_n_setters, create_standard_classes,
4153 scm_add_slot): Compute closures by calling scm_i_eval_x on a
4154 lambda expression rather than creating them with scm_closure.
4155
26ecfa39
DH
41562004-05-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4157
4158 * eval.c (s_macro_keyword, scm_m_set_x): Remove checking for
4159 misplaced syntactic keywords. This will not work unless guile's
4160 defmacro feature is deprecated.
4161
4162 (scm_m_case): Fixed a bug that caused the list of labels to grow
4163 with every case form.
4164
f865229a
KR
41652004-05-19 Kevin Ryde <user42@zip.com.au>
4166
4167 * numbers.c (scm_round_number): For inum and big, just return x. For
4168 real, use scm_round for 2^54-1 etc problems covered there.
4169
4170 * numbers.c (trunc): Remove #define to scm_truncate when the C library
4171 doesn't provide trunc. This was for when `truncate' was done as a
4172 scm_tc7_dsubr, no longer required.
4173
4174 * threads.c (scm_threads_mark_stacks) [SCM_STACK_GROWS_UP]: Correction
4175 to stack marking call, two parameters and no cast on t->base.
4176
63947c7a
MV
41772004-05-18 Marius Vollmer <mvo@zagadka.de>
4178
4179 * hashtab.c (rehash_after_gc): Bug fix: properly link the
4180 processed hashtables back into the weak_hashtables list. Thanks
4181 to Bill Schottstaedt!
4182
e7313a9d
DH
41832004-05-16 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4184
4185 * eval.c (unmemoize_quote): New static function.
4186
4187 (scm_m_quote, scm_m_atslot_ref, SCM_CEVAL): Changed the byte code
4188 representation of 'quote' and '@slot-ref' to an improper list.
4189 This reduces execution time, the number of cells used to hold the
4190 memoized code, and thus also reduces garbage collection time.
4191
4192 (scm_unmemocopy): Use unmemoize_quote for quote expressions.
4193
4194 (SCM_CEVAL): Changed macro handling to also work with macros that
4195 return improper lists. Added an assertion, that the code returned
4196 by a macro transformer will not lead to cycles in the memoized
4197 code.
4198
e5156567
DH
41992004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4200
4201 No functional change, just rearrangements of functions within the
4202 file.
4203
4204 * eval.c (scm_ilookup, scm_unbound_variable_key,
4205 error_unbound_variable, scm_lookupcar1, scm_lookupcar): Moved to
4206 the definitions used for execution, since that's where they will
4207 belong to later.
4208
651f07f8
DH
42092004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4210
4211 * numbers.h (SCM_SLOPPY_FRACTIONP): Removed. It was not used
4212 throughout guile, has not been part of an official release yet,
4213 and the concept of sloppy predicates has never been a good idea.
4214
4215 (SCM_FRACTION_NUMERATOR, SCM_FRACTION_DENOMINATOR,
4216 SCM_FRACTION_SET_NUMERATOR, SCM_FRACTION_SET_DENOMINATOR):
4217 Simplified.
4218
770e048f
DH
42192004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4220
4221 * throw.c (SETJBJMPBUF, SCM_SETJBDFRAME): Add cast to scm_t_bits
4222 to make explicit what happens.
4223
2ff08405
DH
42242004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4225
4226 * dynl.c (SET_DYNL_HANDLE): Add cast to scm_t_bits to make
4227 explicit what happens.
4228
4229 * guardians.c (TCONC_IN): Use SCM_SET_CELL_OBJECT_x rather than
4230 SCM_SET_CELL_WORD_x when writing scheme objets to cell elements.
4231
89afb9cd
MV
42322004-05-11 Marius Vollmer <mvo@zagadka.de>
4233
4234 * scmsigs.c (scm_sigaction_for_thread): Validate that the handler
4235 is indeed a procedure when it isn't a number.
4236
3d5ebfa9
MV
42372004-05-10 Marius Vollmer <mvo@zagadka.de>
4238
4239 Convert floating point numbers into strings with an arbitrary
4240 radix. Thanks to Richard Todd!
4241
4242 * numbers.c (FLOBUFLEN): Increase so that radix 2 strings will
4243 fit.
4244 (fx): Removed.
4245 (scm_dblprec, fx_per_radix, init_dblprec, init_fx_radix,
4246 number_chars): New, to support variable radices.
4247 (idbl2str): Use above instead of the old base-10 only tables.
4248 (iflo2str): Pass on new RADIX argument to idbl2str.
4249 (scm_number_to_string): Pass radix to iflo2str.
4250 (scm_print_real, scm_print_complex): Explicitly pass radix 10 to
4251 iflo2str.
4252 (scm_init_numbers): Call init_dblprec and init_fx_radix for all
4253 possible radices.
4254
3ae69bb4
KR
42552004-05-10 Kevin Ryde <user42@zip.com.au>
4256
4257 * numbers.c (scm_logbit_p): Correction to test above the end of an
4258 inum. Reported by Jan Konecny.
4259
27968825
MV
42602004-05-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4261
4262 * gc.h (scm_t_cell): Fields are now of type SCM instead of
4263 scm_t_bits. Updated all users.
4264 (SCM_GC_CARD_SIZE_MASK): Use SCM_GC_SIZEOF_CARD instead of
4265 duplicating the code.
4266 (SCM_CELL_OBJECT_LOC): New.
4267 (SCM_CARLOC, SCM_CDRLOC): Use it instead of SCM_CELL_WORD_LOC.
4268 (SCM_CELL_WORD_LOC): Moved to "deprecated.h".
4269
4270 * smob.h (SCM_SMOB_DATA_2, SCM_SMOB_DATA_3, SCM_SMOB_FLAGS,
4271 SCM_SET_SMOB_DATA_2, SCM_SET_SMOB_DATA_3, SCM_SET_SMOB_FLAGS,
4272 SCM_SMOB_OBJECT, SCM_SMOB_OBJECT_2, SCM_SMOB_OBJECT_3,
4273 SCM_SET_SMOB_OBJECT, SCM_SET_SMOB_OBJECT_2, SCM_SET_SMOB_OBJECT_3,
4274 SCM_SMOB_OBJECT_LOC, SCM_SMOB_OBJECT_2_LOC,
4275 SCM_SMOB_OBJECT_3_LOC): New.
4276 * smob.c (scm_i_set_smob_flags): New function.
4277
4278 * dynl.c, dynwind.c, eval.h, fluids.h, futures.h, hashtab.h,
4279 hooks.h, keywords.h, macros.h, macros.c, mallocs.c, mallocs.h,
4280 random.h, regex-posix.h, root.h, srcprop.h, srcprop.c, threads.h:
4281 Use SCM_SMOB_* instead of SCM_CELL_* as appropriate. Use
4282 SCM_SMOB_FLAGS and SCM_SET_SMOB_FLAGS instead of accessing the
4283 zeroth word directly. Use SCM_SMOB_PREDICATE as appropriate.
4284
4285 * numbers.h (SCM_I_BIG_MPZ): Use SCM_CELL_OBJECT_LOC instead of
4286 taking the address of SCM_CELL_WORD_1, the latter being no longer
4287 an lvalue.
4288
4289 * variable.h (SCM_VARIABLE_LOC): Use SCM_CELL_OBJECT_LOC instead
4290 of casting SCM_CELL_WORD_LOC.
4291
3cf17ef0
KR
42922004-05-02 Kevin Ryde <user42@zip.com.au>
4293
37026925 4294 * eval.c (scm_macroexp): Add prototype, since it's not in eval.h under
9a5fa6e9 4295 --disable-deprecated. Reported by Andreas Vögele.
37026925 4296
3cf17ef0 4297 * filesys.c (_POSIX_C_SOURCE): Define to 199506L to get readdir_r (in
9a5fa6e9 4298 particular on HP-UX). Reported by Andreas Vögele.
3cf17ef0 4299
c5854598
KR
4300 * list.c (varargs.h): Remove, leave just stdarg.h which is all the
4301 code has support for. Fixes building with AIX cc, which is ansi but
4302 doesn't define __STDC__. Reported by Keith Crane.
4303 (var_start): Remove macro, this variation no longer required.
4304 (scm_list_n): Use va_start directly.
4305
f26c1a32
KR
43062004-05-01 Kevin Ryde <user42@zip.com.au>
4307
4308 * continuations.c (scm_dynthrow): Use >= instead of SCM_PTR_GE which
9a5fa6e9 4309 is now gone. Reported by Andreas Vögele.
f26c1a32 4310
dfa6017e
KR
43112004-04-28 Kevin Ryde <user42@zip.com.au>
4312
4313 * backtrace.c (display_frame_expr), numbers.c (XDIGIT2UINT,
4314 mem2uinteger, mem2decimal_from_point, mem2ureal): Cast char to int for
4315 ctype.h tests, to avoid warnings from gcc on HP-UX about char as array
9a5fa6e9 4316 subscript. Reported by Andreas Vögele.
dfa6017e
KR
4317 Also cast through unsigned char to avoid passing negatives to those
4318 macros if input contains 8-bit values.
4319
4320 * num2integral.i.c (NUM2INTEGRAL): Under non-BIGMPZ_FITSP case,
4321 corrections to range check for signed numbers. Remove
4322 scm_remember_upto_here_1(num) from these checks, since num is used
4323 subsequently anyway.
4324
4325 * num2integral.i.c (NUM2INTEGRAL): Test BIGMPZ_FITSP with "!= 0" to
4326 avoid warning from gcc 3.4. Reported by Hyperdivision.
4327
4328 * numbers.c (scm_bit_extract): Use min instead of MIN.
4329 (MIN): Remove, this conflicts with similar macro defined by limits.h
9a5fa6e9 4330 on HP-UX. Reported by Andreas Vögele.
dfa6017e
KR
4331
4332 * stime.c (_POSIX_C_SOURCE): Define to 199506L to get gmtime_r (in
9a5fa6e9 4333 particular on HP-UX). Reported by Andreas Vögele.
dfa6017e 4334
a0d06a00 4335 * threads.c (scm_threads_mark_stacks): Correction sizet -> size_t.
9a5fa6e9 4336 Reported by Andreas Vögele.
a0d06a00 4337
dfa6017e
KR
4338 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 25*sizeof(long),
4339 for the benefit of hpux11 where pthread_mutex_t is 88 bytes. Reported
9a5fa6e9 4340 by Andreas Vögele.
dfa6017e 4341
36245b66
DH
43422004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4343
4344 * eval.c (s_macro_keyword): New static identifier.
4345
4346 (scm_m_define): Change order to first create binding and
4347 evaluating the expression afterwards.
4348
4349 (scm_m_set_x): Memoize complete set! expression. Only leave
4350 symbols if no binding exists at memoization time. Throw error if
4351 assigning to a syntactic keyword.
4352
4353 (lazy_memoize_variable): New function.
4354
4355 (CEVAL): When execution set!, perform lazy memoization if
4356 unmemoized symbol is detected.
4357
4358 * modules.c (module_variable): Return variables with unbound
4359 value.
4360
4361 * tags.h: Fix comment.
4362
4d81111e
KR
43632004-04-25 Kevin Ryde <user42@zip.com.au>
4364
da8bcb2f
KR
4365 * chars.c (scm_char_upcase, scm_char_downcase, scm_c_upcase,
4366 scm_c_downcase): Use ctype.h toupper and tolower. This will be useful
4367 in 8-bit locales, and ensures consistency with char-upper-case? and
4368 char-lower-case? which already use ctype.h.
4369 (scm_c_upcase_table, scm_c_downcase_table, scm_lowers, scm_uppers):
4370 Remove.
4371 * chars.c, chars.h, init.c (scm_tables_prehistory): Remove.
4372
4d81111e
KR
4373 * socket.c (VALIDATE_INET6): Correction to bignum_in_ipv6_range_p
4374 call. Reported by Hyperdivision.
4375
4376 * threads.c (scm_yield): Correction, actually call scm_thread_yield.
4377 Reported by Hyperdivision.
4378
4379 * unif.c (s_scm_make_uve): Remove unused local variable. Reported by
4380 Hyperdivision.
4381
7e6e6b37
DH
43822004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4383
4384 Hide the implementation of ilocs and isyms in eval.c.
4385
4386 * deprecated.h (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4387 SCM_ICDRP), eval.c (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4388 SCM_ICDRP), eval.h (SCM_ICDR, SCM_IFRINC, SCM_IFRAME, SCM_IDIST,
4389 SCM_ICDRP): Deprecated and added to deprecated.h. Moved from
4390 eval.h to eval.c.
4391
4392 * deprecated.c (scm_isymnames), deprecated.h (scm_isymnames,
4393 SCM_ISYMNUM, SCM_ISYMCHARS), eval.c (SCM_ISYMNUM, isymnames,
4394 scm_unmemocopy, CEVAL), print.c (scm_isymnames), tags.h
4395 (SCM_ISYMNUM, scm_isymnames, SCM_ISYMCHARS): Deprecated
4396 scm_isymnames, SCM_ISYMNUM and SCM_ISYMCHARS and added to
4397 deprecated.[hc]. Moved scm_isymnames from print.c to eval.c and
4398 renamed to isymnames. Moved SCM_ISYMNUM from tags.h to eval.c and
4399 renamed to ISYMNUM.
4400
4401 * eval.c (scm_i_print_iloc, scm_i_print_isym), eval.h
4402 (scm_i_print_iloc, scm_i_print_isym), print.c (scm_iprin1):
4403 Extracted printing of ilocs and isyms to guile internal functions
4404 scm_i_print_iloc, scm_i_print_isym of eval.c.
4405
caab294f
KR
44062004-04-22 Kevin Ryde <user42@zip.com.au>
4407
7aaf4758
KR
4408 * numbers.c (scm_bit_extract): Use SCM_SRS for signed right shift.
4409
caab294f
KR
4410 * numbers.c (scm_round): Test for x already an integer, to avoid bad
4411 rounding in x+0.5 when x is a big value already an integer. In
4412 certain hardware rounding cases x+0.5 can give an adjacent integer,
4413 leading to that as the result, when we really just wanted x itself.
4414
b1cb24ff
DH
44152004-04-19 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4416
4417 * eval.c (scm_unmemocopy): Fixed unmemoization of let*.
4418
4419 (deval_args, CEVAL): Minor improvements: Reduced variable scopes,
4420 added const qualifiers, cast intentionally unused expressions to
4421 void for emphasis, improved comment.
4422
5065b40d
DH
44232004-04-18 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4424
4425 * tags.h (scm_tags, scm_tc8_tags, scm_tc9_flag, scm_tc8_flag,
4426 scm_tc8_isym): Renamed scm_tags to scm_tc8_tags. Renamed
4427 scm_tc9_flag to scm_tc8_flag. Introduced new identifier
4428 scm_tc8_isym. Defined tc8-tags relative to scm_tc3_imm24.
4429 Defined the tc8-tag for flags to be 0x04, which will mean that
4430 SCM_BOOL_F will also have the value 0x04 instead of 0x013c. Due
4431 to the reduced number of bits and the simpler bit pattern for
4432 SCM_BOOL_F, certain machines may be able to use more efficient
4433 processor instructions to deal with SCM_BOOL_F.
4434
4435 (SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA): Removed. These have
4436 never been defined in a released version, thus no need to
4437 deprecate them.
4438
4439 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Flags now use tc8
4440 instead of tc9 tags.
4441
4442 (SCM_ISYMP, SCM_MAKISYM, SCM_ISYMNUM): Isyms now use tc8 instead
4443 of tc9 tags.
4444
4445 (SCM_MAKSPCSYM): Removed. It is almost impossible that user code
4446 could have used this definition.
4447
4448 (SCM_IM_AND, SCM_IM_BEGIN, SCM_IM_CASE, SCM_IM_COND, SCM_IM_DO,
4449 SCM_IM_IF, SCM_IM_LAMBDA, SCM_IM_LET, SCM_IM_LETSTAR,
4450 SCM_IM_LETREC, SCM_IM_OR, SCM_IM_QUOTE, SCM_IM_SET_X): Now encoded
4451 as isyms, as special isyms don't exist any more.
4452
9fa6c119
KR
44532004-04-18 Kevin Ryde <user42@zip.com.au>
4454
e08d2eee
KR
4455 * filesys.c (scm_readdir): Use readdir_r when available, for thread
4456 safety.
4457
9fa6c119
KR
4458 * numbers.c (scm_max, scm_min): For big/real, use SCM_SWAP rather than
4459 explicit swapping code.
4460
c9cdd396
KR
44612004-04-15 Kevin Ryde <user42@zip.com.au>
4462
4463 * cpp_sig_symbols.in: Add SIGSYS.
4464
4465 * list.c (scm_append_x): Use iterative style, to avoid non-tail
4466 recursion.
4467
4468 * numbers.c (scm_max, scm_min): For inum/frac, frac/inum, big/frac,
4469 frac/big and frac/frac, use scm_less_p for exact comparison.
4470
83ac9c59
KR
4471 * numbers.c (scm_gcd): For inum/big, use mpz_gcd_ui by sharing code
4472 with big/inum.
4473
84a4be9a
KR
4474 * numbers.c (xisinf): Add a comment about solaris 7 lacking isinf.
4475
84fad130
HWN
44762004-04-06 Han-Wen Nienhuys <hanwen@xs4all.nl>
4477
6b69393d
HWN
4478 * inline.h (scm_cell): use SCM_GC_CELL_WORD for checking tag.
4479
84fad130
HWN
4480 * chars.h (scm_init_chars): change scm_{upcase,downcase} to
4481 scm_c_{up,down}case.
4482 (SCM_MAKE_CHAR): add (unsigned char) cast. This prevents havoc
4483 when hi-bit ASCII is subjected to SCM_MAKE_CHAR().
4484
c3110a30
KR
44852004-04-06 Kevin Ryde <user42@zip.com.au>
4486
0b288f36
KR
4487 * numbers.c (scm_ash): Remove stray "}" in docstring.
4488
ea2508c8
KR
4489 * numbers.c (scm_make_ratio): For inum/bignum integer detection, use
4490 x==SCM_MOST_NEGATIVE_FIXNUM explicitly, for clarity and to avoid
4491 calling mpz_cmp_ui in most cases.
4492
c3110a30
KR
4493 * numbers.c (scm_quotient, scm_remainder): In inum/big, use mpz_cmp_ui
4494 for big == abs(most-negative-fixnum) special case.
4495 (abs_most_negative_fixnum): Remove, no longer used.
4496
4497 * scmsigs.c (scm_sigaction_for_thread): Correction to signum range
4498 test, avoids SCM_VECTOR_REF outside bounds of signal_handlers on
4499 calling (sigaction NSIG).
4500
4501 * simpos.c (scm_system_star): Fix execargv memory leak, merge parent
4502 and fork error cases to do this.
4503
dec40cd2
DH
45042004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4505
4506 * eval.c (CEVAL): Don't distinguish between short and long
4507 instructions when dispatching - just always dispatch on the
4508 instruction code, which is common for short and long instructions.
4509 Further, removed unnecessary goto statements and added comment.
4510
0e7bb795
DH
45112004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4512
4513 * eval.c (scm_unmemocopy): Don't distinguish between short and
4514 long instructions when dispatching - just always dispatch on the
4515 instruction code, which is common for short and long instructions.
4516 Further, removed unnecessary goto statements, fixed indentation
4517 and replaced SCM_IMP predicates by SCM_NULLP.
4518
f9986767
DH
45192004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4520
4521 * eval.c (scm_lookupcar1, CEVAL): Use SCM_ILOCP instead of
4522 comparison with SCM_ILOC00. In CEVAL, eliminate goto-label
4523 'checkmacro'.
4524
fbc42231
KR
45252004-03-31 Kevin Ryde <user42@zip.com.au>
4526
4527 * simpos.c: Include <signal.h> for SIG_IGN and friends.
4528
434f2f7a
DH
45292004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4530
4531 Introduce scm_debug_mode_p as a replacement for scm_debug_mode and
4532 SCM_DEBUGGINGP:
4533
4534 * debug.h (scm_debug_mode_p, scm_debug_mode, SCM_DEBUGGINGP),
4535 eval.c (scm_debug_mode_p): Deprecated scm_debug_mode and
4536 SCM_DEBUGGINGP. Provided scm_debug_mode_p instead, to have one
4537 single interface that also matches the naming conventions.
4538 Probably scm_debug_mode_p should be part of the private interface
4539 anyway.
4540
4541 * debug.h (scm_debug_mode_p), backtrace.c (display_error_body),
4542 eval.c (SCM_APPLY, scm_trampoline_0, scm_trampoline_1,
4543 scm_trampoline_2): Change uses of scm_debug_mode or SCM_DEBUGGINGP
4544 to scm_debug_mode_p.
4545
4546
4547 Deprecate direct access to scm_ceval, scm_deval and scm_ceval_ptr:
4548
4549 * eval.h (scm_ceval, scm_deval, scm_ceval_ptr), debug.h
4550 (scm_ceval_ptr): Deprecated. Moved declaration of scm_ceval_ptr
4551 from debug.h to eval.h.
4552
4553 * debug.h (SCM_RESET_DEBUG_MODE): Don't access scm_ceval_ptr any
4554 more, just leave it with setting scm_debug_mode_p, which is
4555 equivalent for practical purposes.
4556
4557 * deprecated.h (SCM_XEVAL, SCM_XEVALCAR): Call scm_i_eval_x
4558 instead of *scm_ceval_ptr. Leave all evaluating to scm_i_eval_x.
4559
4560 * gdbint.c (gdb_eval): Call scm_i_eval_x instead of scm_ceval.
4561
4562 * eval.c (ceval, deval, scm_ceval, scm_deval): Made scm_ceval
4563 static and renamed it to ceval throughout. Provide a new exported
4564 but deprecated function scm_ceval as a wrapper for backwards
4565 compatibility. The same is done for the deval/scm_deval pair of
4566 functions.
4567
4568 * eval.c (CEVAL, SCM_CEVAL): Renamed SCM_CEVAL to CEVAL
4569 throughout. Defined CEVAL to ceval or deval, based on compilation
4570 phase.
4571
4572 * eval.c (SCM_XEVAL, SCM_XEVALCAR): Dispatch on scm_debug_mode_p
4573 to ceval and deval instead of calling *scm_ceval_ptr.
4574
4575 * eval.c (dispatching_eval): New deprecated static function.
4576
4577 * eval.c (scm_ceval_ptr): Initialized to dispatching_eval in order
4578 to emulate its old behaviour as closely as possible.
4579
4580
4581 Change the evaluator such that only expressions for which pair? is
4582 true are passed to CEVAL, and such that all other expressions are
4583 evaluated outside of CEVAL:
4584
4585 * eval.c (EVAL): New, provided in analogy to EVALCAR. Evaluate an
4586 expression that is assumed to be memoized already. All but
4587 expressions of the form '(<form> <form> ...)' are evaluated inline
4588 without calling an evaluator.
4589
4590 * eval.c (SCM_XEVAL, SCM_XEVALCAR, EVALCAR): Evaluate all but
4591 expressions of the form '(<form> <form> ...)' inline without
4592 calling an evaluator.
4593
4594 * eval.c (scm_i_eval_x, scm_i_eval, scm_ceval, scm_deval): Handle
4595 the special case of unmemoized symbols passed on the top level.
4596
4597 * eval.c (CEVAL): Change calls to CEVAL to EVAL, except where it
4598 is known that the expression passed to CEVAL is of the form
4599 '(<form> <form> ...)'. Remove handling of the tc7-objects, since
4600 now it is known that the input expression of CEVAL is a pair.
4601
46022004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5fb64383
DH
4603
4604 * eval.c (is_self_quoting_p): New static function.
4605
4606 (scm_m_quote): Use is_self_quoting_p.
4607
4608 (copy_tree): Corrected typo in comment.
4609
702551e6
HWN
46102004-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
4611
bfefbf18
HWN
4612 * eval.c (s_scm_copy_tree): idem.
4613
4614 * list.c (s_scm_filter): remove "pointer" from doc string.
4615
702551e6
HWN
4616 * gc.h (SCM_GC_CELL_TYPE): SCM_GC_CELL_TYPE uses SCM_GC_CELL_OBJECT.
4617
4618 * goops.h (SCM_NUMBER_OF_SLOTS): don't SCM_UNPACK the result.
4619
4620 * backtrace.c ("display_backtrace_body"): SCM_PACK before SCM_EQ_P
4621 (display_frame): idem.
4622 (display_backtrace_file_and_line): idem.
4623
4624 * tags.h (SCM_UNPACK): stricter typechecking on SCM_UNPACK
4625 arguments.
4626
3cd23214
KR
46272004-03-26 Kevin Ryde <user42@zip.com.au>
4628
88a7ae1f
KR
4629 * filesys.c (scm_getcwd, scm_readlink): Avoid memory leak on errors.
4630
3cd23214
KR
4631 * numbers.c (scm_modulo): For inum/big and big/big, remove test of
4632 big==0 since that never occurs.
4633
4634 * numbers.c, numbers.h (scm_modulo_expt): Renamed from
4635 scm_modular_expt, matching scheme level name `modulo-expt'.
4636
4637 * numbers.c (scm_modular_expt): Return a negative remainder for a
4638 negative divisor, the same as `modulo' does.
4639
46402004-03-26 Eric Hanchrow <offby1@blarg.net>
4641
4642 * numbers.c, numbers.h (scm_modular_expt): New function.
4643
2926035a
KR
46442004-03-25 Kevin Ryde <user42@zip.com.au>
4645
4646 * numbers.c (scm_min, scm_max): Correction to big/real and real/big,
4647 return inexact as required by r5rs.
4648
62360b89
DH
46492004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4650
4651 * eval.c: Separated some definitions relevant for execution from
4652 the memoization part of the file.
4653
4654 (copy_tree): New static function
4655
4656 (scm_copy_tree): Rewritten to fix two kinds or bugs: First, cyclic
4657 structures are detected now and will lead to an exception instead
4658 of forcing guile to run in an endless loop, using up all the
4659 system's memory. Second, arrays in the cdr of an improper list
4660 are now copied. See the new test cases in eval.test.
4661
46622004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
b28f5b3c
DH
4663
4664 * posix.c (scm_gethostname): Make sure len is initialised before
4665 it is used. Restructured to (hopefully) represent possible
4666 configurations more clearly in the code. Added unwind handler.
4667
3bd3bae8
KR
46682004-03-23 Kevin Ryde <user42@zip.com.au>
4669
4670 * posix.c (scm_gethostname): Use sysconf(_SC_HOST_NAME_MAX) and/or
4671 MAXHOSTNAMELEN when available.
4672
254bf78d
MV
46732004-03-21 Marius Vollmer <mvo@zagadka.de>
4674
4675 * read.c (skip_scsh_block_comment): Also recognize '\r' as a line
4676 terminator. Rewritten the logic as a state machine, I must have
4677 been doing too much VHDL lately...
4678
4679 * eval.c (scm_ceval, scm_deval): Explicitely evaluate ports to
4680 themselves. Thanks to Han-Wen Nienhuys!
4681
4682 * list.c: Changed docstrings so that they no longer talk about
4683 returning 'pointers' to something.
4684
009c34a2
HWN
46852004-03-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
4686
4687 * gc.c: remove set_debug_cell_accesses! when
4688 SCM_DEBUG_CELL_ACCESSES is not defined. Scheme source code should
4689 use (if (defined? 'set-debug-cell-accesses!) .. ) to switch on
4690 debugging conditionally.
4691
54733c95
KR
46922004-03-21 Kevin Ryde <user42@zip.com.au>
4693
4694 * stime.c (scm_gmtime): Use gmtime_r when available, for thread safety.
4695
bbaf8747
KR
46962004-03-20 Kevin Ryde <user42@zip.com.au>
4697
4698 * posix.c (scm_gethostname): Preserve errno across free() call.
4699
726f82e7
HWN
47002004-03-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
4701
4702 * gc-card.c (sweep_card): use SCM_GC_SET_CELL_WORD for setting
4703 free cells.
4704
e1350d6a
KR
47052004-03-14 Kevin Ryde <user42@zip.com.au>
4706
4707 * stime.c: Define _GNU_SOURCE for strptime prototype from glibc.
4708 (strptime): Use HAVE_DECL_STRPTIME for when to give own prototype.
4709
62055253
KR
47102004-03-07 Kevin Ryde <user42@zip.com.au>
4711
4712 * stime.c (scm_gmtime): Return bd_time->tm_zone when available, rather
4713 than "GMT" always.
4714 (filltime): Make zname parameter "const".
4715
92e64b87
MD
47162004-03-03 Mikael Djurfeldt <mdj@chunk.mit.edu>
4717
4718 * threads.c, threads.h (scm_c_scm2thread): New function.
4719
004ad931
KR
47202004-02-29 Kevin Ryde <user42@zip.com.au>
4721
4722 * numbers.c (guile_ieee_init): Use C99 INFINITY and NAN when
4723 available. Test HAVE_DINFINITY and HAVE_DQNAN for those globals, in
4724 particular don't assume "defined (__alpha__) && ! defined (linux)"
4725 means OSF. Remove "SCO" code, which was not really SCO specific and
4726 which John W. Eaton advises should be long past being needed.
4727
4728 * posix.c (scm_execl, scm_execlp, scm_execle): Avoid memory leak under
4729 error throw.
4730
72ea45ac
KR
47312004-02-24 Kevin Ryde <user42@zip.com.au>
4732
4733 * posix.c (scm_cuserid): Use a private result buffer, for thread safe.
4734
2af0602e
KR
47352004-02-22 Kevin Ryde <user42@zip.com.au>
4736
4737 * numbers.c (scm_max, scm_min): For one arg, dispatch to generic for
4738 complex, same as for two args. (Handle only inum, big, real, frac).
4739
b114eafe
KR
47402004-02-21 Kevin Ryde <user42@zip.com.au>
4741
4742 * posix.c (scm_crypt): Use new HAVE_CRYPT.
4743 (<crypt.h>): Remove HAVE_LIBCRYPT condition.
db752bb5 4744 Reported by Andreas Voegele.
b114eafe 4745
1e55d288
NJ
47462004-02-20 Neil Jerram <neil@ossau.uklinux.net>
4747
4748 * list.c (scm_list_n): Add #if SCM_DEBUG_CELL_ACCESSES_P around
4749 validation.
4750
4751 * read.c (scm_lreadparen): Removed.
4752 (scm_lreadparen1): Renamed scm_i_lreadparen.
4753
eb741d98
HWN
47542004-02-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
4755
4756 * list.c (scm_list_n): validate non-immediate arguments;
4757 this will catch forgotten a SCM_UNDEFINED.
4758
4e28ba5e
MV
47592004-02-18 Marius Vollmer <mvo@zagadka.de>
4760
4761 * gc.h (scm_gc_cells_collected): Removed duplicated declaration.
4762 Thanks to Bill Schottstaedt!
4763
4764 * socket.h (scm_gethost): Removed prototype it is already in
4765 "net_db.h". Thanks to Bill Schottstaedt!
4766
ef861ead
KR
47672004-02-18 Kevin Ryde <user42@zip.com.au>
4768
4769 * num2integral.i.c (INTEGRAL2BIG): WORDS_BIGENDIAN not right for word
4770 order parameter to mpz_import, in fact with just one word there's no
4771 order to worry about at all.
4772
4773 * numbers.c (scm_num_eq_p): For real==frac, complex==frac, frac==real
4774 and frac==complex, make an exact comparison rather than converting
4775 with fraction2double.
4776
4777 * posix.c, putenv.c, stime.c (environ): Use _NSGetEnviron in Darwin
4778 shared library, since environ is not directly available there.
4779
4780 * script.c (scm_shell_usage): Print to stdout for --help, per GNU
4781 standard.
4782
4783 * stime.c (scm_localtime, scm_gmtime, scm_mktime): Provide a default
4784 errno EINVAL in case localtime and gmtime don't set it.
4785 (scm_mktime, scm_strptime): Forcibly use errno EINVAL for our
4786 SCM_SYSERROR, since mktime and strptime generally don't set errno.
4787
ae43d08e 47882004-02-16 Kevin Ryde <kevin@swox.se>
292dfa7f 4789
c9ea6462
KR
4790 * gc-malloc.c (scm_done_malloc, scm_done_free): Allow negative sizes,
4791 which were permitted in the past for these.
4792
292dfa7f
KR
4793 * num2float.i.c (NUM2FLOAT): Expand isfinite to !xisinf, as per
4794 previous change to numbers.c.
4795
ae43d08e
KR
4796 * script.c (scm_shell_usage): Print bug-guile email address, as per
4797 GNU standard. Reported by Han-Wen Nienhuys.
4798
711a9fd7
MD
47992004-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
4800
4801 * unif.c (scm_make_uve): Removed local variable and simplified
4802 code in order to avoid compiler used uninitialized warnings.
4803
4804 * hashtab.c, hashtab.h (scm_hash_map_to_list): Renamed from
4805 scm_hash_map.
4806 (scm_hash_fold): Use scm_call_3 directly in the call to
4807 scm_internal_hash_fold instead of going via fold_proc (which is
4808 now removed).
4809 (scm_hash_for_each): Use a trampoline +
4810 scm_internal_hash_for_each_handle.
4811 (scm_internal_hash_for_each_handle, scm_hash_for_each_handle): New
4812 functions.
4813
3da7f6b2
KR
48142004-02-12 Kevin Ryde <user42@zip.com.au>
4815
344a212f
KR
4816 * ports.c (scm_port_line): In docstring, note first line is 0.
4817 (scm_set_port_line_x): In docstring, note first line is 0.
4818 (scm_port_column): In docstring, there's no default to current input
4819 port, and remove shared port-line @defun.
4820 (scm_set_port_column_x): In docstring, there's no default to current
4821 input port, note first column is 0, remove shared set-port-line!
4822 @defun.
4823
3da7f6b2
KR
4824 * ramap.c (scm_array_fill_x): For fvect and dvect, use scm_num2dbl to
4825 convert args the same way that array-set! does.
4826
4827 * unif.c (scm_make_uve, scm_array_p): Allow fraction 1/3 as prototype
4828 for dvect.
4829 (scm_array_p): Add missing "break"s in switch, fix llvect test look
4830 for "l" not "s", fix dvect to be false for singp(prot) since such a
4831 value is for fvect.
4832 (scm_array_prototype): Return 1/3 for dvect, rather than 0.33..33.
88531a74
KR
4833 (exactly_one_third): New variable.
4834 (scm_init_unif): Initialize it.
3da7f6b2 4835
cd21f5eb
NJ
48362004-02-10 Neil Jerram <neil@ossau.uklinux.net>
4837
4838 * read.c (scm_read_opts): Change `escaped-parens' to
4839 `elisp-strings'.
4840
16353acc
NJ
48412004-02-08 Neil Jerram <neil@ossau.uklinux.net>
4842
4843 * read.c (scm_read_opts): New opts `elisp-vectors' and
4844 `escaped-parens'.
4845 (s_vector): New.
4846 (scm_lreadr): Use scm_lreadparen1 instead of scm_lreadparen. Make
4847 handling of elisp vector syntax dependent on SCM_ENABLE_ELISP and
4848 `elisp-vectors' option instead of SCM_ELISP_READ_EXTENSIONS.
4849 Allow "\(" and "\)" in strings when SCM_ENABLE_ELISP defined and
4850 `escaped-parens' option set.
4851 (scm_read_token): If elisp vector syntax active, disallow [ and ]
4852 in tokens.
4853 (scm_lreadparen): Rewrite as interface to scm_lreadparen1.
4854 (scm_lreadparen1): New.
4855
4856 * read.h: Remove conditionally compiled last arg to
4857 scm_lreadparen.
4858 (SCM_ELISP_VECTORS_P, SCM_ESCAPED_PARENS_P): New.
4859
f62b9dff
HWN
48602004-01-23 Han-Wen Nienhuys <hanwen@xs4all.nl>
4861
4862 * eval.c (m_expand_body): remove stray variable new_body.
4863
ef5b6b61
MV
48642004-01-22 Marius Vollmer <mvo@zagadka.de>
4865
4866 * eval.c (m_expand_body): Rewrite the expression in place (by
4867 overwriting FORMS) also when a letrec is constructed, not only
4868 when no definitions are found. Do not return rewritten expression
4869 to emphasize the in-place rewriting. Changed all users.
4870
7eec4c37
HWN
48712004-01-19 Han-Wen Nienhuys <hanwen@xs4all.nl>
4872
4873 * gc.c: add protected_object_count, a number that is dumped from
4874 gc_stats()
4875
25ffbdac
MV
48762004-01-11 Marius Vollmer <mvo@zagadka.de>
4877
4878 * dynwind.h, dynwind.c (scm_frame_unwind,
4879 scm_frame_unwind_handler): Renamed and changed all uses.
4880 (scm_frame_rewind, scm_frame_rewind_handler): Likewise.
4881
08568c95
KR
48822004-01-11 Kevin Ryde <user42@zip.com.au>
4883
4884 * unif.c (scm_bit_count, scm_bit_position, s_scm_bit_set_star_x,
4885 s_scm_bit_count_star, s_scm_bit_invert_x): Clarify docstrings, as per
4886 changes made to scheme-compound.texi.
4887
5565749c
MV
48882004-01-10 Marius Vollmer <mvo@zagadka.de>
4889
25ffbdac
MV
4890 * print.c (scm_print_symbol_name): Handle #{`foo}#, #{,foo}#,
4891 #{.}#, and all numeric strings specially. Thanks to Paul Jarc!
4892
4893 * guile-snarf.in: Use mkdir to create a unique temporary directory
4894 that we can safely use. Thanks to Stefan Nordhausen!
5565749c 4895
fc6bb283
MV
48962004-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4897
7ebccde8
MV
4898 * dynwind.h, dynwind.c (scm_i_dowinds): Removed 'explicit'
4899 argument since it is always zero now. Changed all callers.
4900 Removed code for handling fluids.
96e3b2f8
MV
4901
4902 * fluids.c (scm_c_with_fluids): Use frames instead of adding to
4903 the wind chain explicitely. Use scm_c_with_fluid for the common
4904 case of only one fluid.
4905 (scm_with_fluid): New.
4906 (scm_c_with_fluid): Use frames instead of scm_c_with_fluids.
4907
fc6bb283 4908 * fluids.h, fluids.c (scm_frame_fluid): New.
96e3b2f8
MV
4909 (scm_with_fluid): New.
4910 (scm_i_swap_fluids, scm_i_swap_fluids_reverse): Removed.
fc6bb283
MV
4911
4912 * dynwind.c (scm_frame_end): Do not use scm_i_dowinds. Instead,
4913 do the unwinding directly. It is simple enough.
4914
4915 * dynwind.h, dynwind.c: Did the following renamings:
4916 scm_begin_frame -> scm_frame_begin,
4917 scm_end_frame -> scm_frame_end,
4918 scm_on_unwind -> scm_frame_unwind,
4919 scm_on_rewind -> scm_frame_rewind,
4920 scm_on_unwind_with_scm -> scm_frame_unwind_with_scm,
4921 scm_on_rewind_with_scm -> scm_frame_rewind_with_scm.
4922 Changed all uses.
4923
4924 * aync.h, async.c: Did the follwing renamings:
4925 scm_with_blocked_asyncs -> scm_frame_block_asyncs,
4926 scm_with_unblocked_asyncs -> scm_frame_unblock_asyncs.
4927 Changed all uses.
4928
4929 * ports.h, ports.c: Did the follwing renamings:
4930 scm_with_current_input_port -> scm_frame_current_input_port,
4931 scm_with_current_output_port -> scm_frame_current_output_port,
4932 scm_with_current_error_port -> scm_frame_current_error_port.
4933 Changed all uses.
4934
298ab996
KR
49352004-01-07 Kevin Ryde <user42@zip.com.au>
4936
4937 * numbers.c (s_bignum): Remove, not used since gmp bignums.
4938 Reported by Richard Todd.
4939
ba40113e
KR
4940 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 12*sizeof(long),
4941 for the benefit of powerpc-apple-darwin5.5. Reported by Richard Todd.
4942
298ab996
KR
4943 * unif.c (scm_aind): Test SCM_CONSP rather than !SCM_NULLP while
4944 traversing the args list, fixes segv if an improper list is given.
4945 Reported by Rouben Rostamian.
4946
aacff585
MV
49472004-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4948
4949 * ports.c (swap_ports, scm_with_current_foo_port): Do not allocate
4950 swap_data on stack, use a 'malloc obj'.
4951
4952 * fluids.h, fluids.c (scm_make_initial_fluids, scm_copy_fluids,
4953 scm_swap_fluids, scm_swap_fluids_reverse): Renamed to
4954 scm_i_... since they are internal. Changed all uses.
4955
4956 * dynwind.c (frame_print): Removed, use the default printer.
4957 (WINDER_F_MARK, WINDER_MARK_P, winder_mark): New.
4958 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New. Use above
4959 to protect SCM values.
4960
4961 * dynwind.h (SCM_F_WIND_EXPLICITELY,
4962 SCM_F_WIND_EXPLICITLY): It's "explicitly" not "explicitely", damn.
4963 Changed all uses.
4964 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New.
4965
49c00ecc
MV
49662004-01-05 Marius Vollmer <mvo@zagadka.de>
4967
4968 * ports.h, ports.c (scm_with_current_input_port,
4969 scm_with_current_output_port, scm_with_current_error_port): New.
4970
4971 * async.h, async.c (scm_with_blocked_asyncs,
4972 scm_with_unblocked_asyncs): New.
4973
dab514a8
MV
49742004-01-03 Marius Vollmer <mvo@zagadka.de>
4975
4976 * dynwind.h, scm_dynwind.c (scm_t_frame_flags, scm_t_wind_flags,
4977 scm_begin_frame, scm_end_frame, scm_on_unwind, scm_on_rewind):
4978 New.
4979 (scm_dowinds, scm_i_dowinds): scm_dowinds has been renamed to
4980 scm_i_dowinds and extended to handle frames and to invoke a 'turn'
4981 function when the outermost wind point has been reached. The
4982 latter is used to copy a continuation stack at the right time.
4983 scm_dowinds remains available.
4984 (SCM_GUARDSP, SCM_BEFORE_GUARD, SCM_AFTER_GUARD, SCM_GUARD_DATA,
4985 tc16_guard, guards_print): Removed.
4986 (scm_internal_dynamic_wind): Reimplemented using frames.
4987
4988 * continuations.c (copy_stack): New, do only the stack copying
4989 part of copy_stack_and_call.
4990 (copy_stack_and_call): Copy the stack after unwinding and before
4991 rewinding.
4992 (scm_dynthrow): Do not call scm_dowinds, this is now done by
4993 copy_stack_and_call.
4994
441a25d9
KR
49952004-01-04 Kevin Ryde <user42@zip.com.au>
4996
4997 * numbers.c (scm_less_p): Don't convert frac to float for compares,
dab514a8 4998 can give bad results due to rounding.
441a25d9 4999
e0499207
KR
5000 * stime.c (scm_current_time, scm_gettimeofday): Add a comment about
5001 setzone/restorezone protection for DOS.
5002
89fcf1b4
MV
50032003-12-26 Marius Vollmer <mvo@zagadka.de>
5004
5005 * gen-scmconfig.h.in, gen-scmconfig.c: Arrange for scm_t_intmax
5006 and scm_t_uintmax to be defined in scmconfig.h
5007
caff34d4
KR
50082003-12-03 Kevin Ryde <user42@zip.com.au>
5009
5010 * numbers.c (scm_less_p): Remove spurious xisnan from frac+big case.
5011
5012 * numbers.c (scm_make_ratio): Check for numerator equal to
5013 SCM_MOST_NEGATIVE_FIXNUM and bignum denominator the negative of that,
5014 giving integer -1.
5015
5016 * numbers.c (scm_real_part): Return fraction unchanged rather than
5017 converting to flonum.
5018
2d0b85ac
DH
50192003-11-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
5020
5021 * modules.c (module_variable): Fixed (and thus simplified) the
5022 definition of SCM_BOUND_THING_P to reflect the fact that since
5023 after the 1.4 series of guile, obarrays only hold variable
5024 objects.
5025
2297981d
MV
50262003-11-30 Marius Vollmer <mvo@zagadka.de>
5027
5028 * numbers.c (scm_logand): It's "#b...", not "#\b...".
5029
5030 From Paul Jarc:
5031
5032 * read.c (scm_lreadr): Signal an error for invalid escape
5033 sequences in strings. Code cleanups too.
5034
5035 * print.c (scm_iprin1): use \xNN hexadecimal sequences when
5036 writing control characters in strings.
5037
50382003-11-21 Marius Vollmer <mvo@zagadka.de>
5039
5040 * ports.c (scm_drain_input): Bug fix: only access the port after
5041 checking that it indeed is one.
5042
5c264007
DH
50432003-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
5044
5045 * eval.c (s_bad_define): New static identifier.
5046
5047 (m_body): Fixed comment.
5048
5049 (scm_m_define): Don't generate memoized code for definitions that
5050 are not on the top level. As a consequence, no memoized code at
5051 all is generated for definitions any more: Top level definitions
5052 are executed immediately during memoization and internal
5053 definitions are handled separately in m_expand_body.
5054
5055 (scm_unmemocopy, unmemocopy): Removed code for unmemoizing
5056 definitions. Consequently, there is no unmemoizing code any more
5057 that might modify the environment. Thus, the old scm_unmemocopy
5058 is removed and the old unmemocopy is renamed to scm_unmemocopy.
5059
5060 (SCM_CEVAL): The SCM_IM_DEFINE keyword can no longer occur in
5061 memoized code. Call EVALCAR for continuations. Prefer !SCM_NULLP
5062 over SCM_NIMP in places, where the argument is known to be part of
5063 a proper list.
5064
018d4730
KR
50652003-11-21 Kevin Ryde <user42@zip.com.au>
5066
5067 * numbers.c (scm_abs): Allocate a new real only for negatives, as done
5068 for bignums.
5069
5070 * numbers.c (scm_bit_extract): Use mpz functions, rearrange inum case
5071 to share some shifting.
5072
5073 * numbers.c (scm_integer_expt): Don't mpz_init after scm_i_clonebig or
5074 scm_i_mkbig, since they do so already. Don't mpz_clear a bignum SCM,
5075 since gc does this.
5076
4bca30d8
MV
50772003-11-19 Marius Vollmer <mvo@zagadka.de>
5078
fb16d26e
MV
5079 * numbers.c (scm_make_ratio): Rewritten to have a simpler
5080 structure. Previously, not all cases with a negative denominator
5081 were covered.
5082
4bca30d8
MV
5083 * numbers.c (mem2decimal_from_point): use scm_divide instead of
5084 scm_divide2real when forming the fractional part. This allows
5085 "#e1.2" to yield 6/5.
5086
5087 * numbers.c (scm_i_fraction_equalp): Do not treat the return value
5088 of scm_equal_p as a C boolean, use SCM_FALSEP. Previously, all
5089 fractions were equal to each other regardless of value. Ooops.
5090
5091 * numbers.c (scm_rationalize): Return an inexact result when given
5092 inexact arguments.
5093
5094 * numbers.c (scm_exact_p, scm_inexact_p): Throw error for
5095 non-numbers.
5096
bdf26b60
MV
50972003-11-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5098
5099 Support for exact fractions from Bill Schottstaedt! Thanks!
5100
5101 * print.c (scm_iprin1): Handle fractions.
5102
5103 * objects.h (scm_class_fraction): New.
5104 * objects.c (scm_class_fraction): New.
5105 (scm_class_of): Handle fractions.
5106
5107 * hash.c (scm_hasher): Handle fractions.
5108
5109 * numbers.c: New code for handling fraction all over the place.
5110 (scm_odd_p, scm_even_p): Handle inexact integers.
5111 (scm_rational_p): New function, same as scm_real_p.
5112 (scm_round_number, scm_truncate_number, scm_ceiling, scm_floor):
5113 New exact functions that replace the inexact 'dsubr'
5114 implementations.
5115 (scm_numerator, scm_denominator): New.
5116
5117 * numbers.h (SCM_NUMP): Recognize fractions.
5118 (SCM_FRACTIONP, SCM_SLOPPY_FRACTIONP, SCM_FRACTION_NUMERATOR,
5119 SCM_FRACTION_DENOMINATOR, SCM_FRACTION_SET_NUMERATOR,
5120 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
5121 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
5122 SCM_FRACTION_REDUCED): New.
5123 (scm_floor, scm_ceiling, scm_truncate_number, scm_round_number):
5124 New prototypes.
5125 (scm_make_ratio, scm_rationalize, scm_numerator, scm_denominator,
5126 scm_rational_p): New prototypes.
5127 (scm_i_dbl2num, scm_i_fraction2double, scm_i_fraction_equalp,
5128 scm_i_print_fraction): New prototypes.
5129
5130 * goops.c (create_standard_classes): Create "<fraction>" class.
5131
5132 * gc-mark.c (scm_gc_mark_dependencies): Handle fractions.
5133
5134 * gc-card.c (scm_i_sweep_card): Include scm_tc16_fraction as a
5135 case in the switch, but do nothing for now.
5136
5137 * eval.c (SCM_CEVAL, SCM_APPLY, call_dsubr_1): Convert fractions
5138 to doubles when calling 'dsubr' functions.
5139
5140 * eq.c (scm_eqv_p, scm_equal_p): Handle fractions.
5141
28fda544
RB
51422003-11-18 Rob Browning <rlb@defaultvalue.org>
5143
5144 * gen-scmconfig.c (main): remove public definition of
5145 SCM_SIZEOF___INT64 and SCM_SIZEOF_UNSIGNED___INT64 and add
5146 direct typedef of long_long and ulong_long inside deprecated block
5147 when appropriate.
5148
5149 * deprecated.h: move long_long and ulong_long definitions to
5150 gen-scmconfig.c so that we don't need to add SCM_SIZEOF___INT64
5151 and SCM_SIZEOF_UNSIGNED___INT64 to the public namespace.
5152
b58e7420
MV
51532003-11-17 Marius Vollmer <mvo@zagadka.de>
5154
9a1d7d7c
MV
5155 * hash.c (scm_string_hash): New hashing algorithm that takes the
5156 complete string into account.
5157
b58e7420
MV
5158 * eval.c (scm_m_generalized_set_x): Macroexpand the target when it
5159 is a list. This allows (@ ...) to work with set!.
9a1d7d7c
MV
5160 (scm_m_generalized_set_x): Use ASSERT_SYNTAX_2 instead of
5161 SCM_ASSYNT.
b58e7420
MV
5162
5163 * script.c (scm_compile_shell_switches): Use scm_c_read_string for
5164 the "-e" option instead of scm_str2symbol. This allows things
5165 like (@ ...) to be specified for the entry point.
5166
461bffb1
DH
51672003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5168
5169 * eval.c (scm_m_letstar): Create memoized code in place to
5170 minimize consing.
5171
6f81708a
DH
51722003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5173
5174 * eval.c (s_splicing): Commented and reformulated.
5175
5176 (lookup_global_symbol, lookup_symbol): New static functions.
5177
5178 (s_test, s_bindings, s_duplicate_bindings, s_variable): Removed.
5179
5180 (try_macro_lookup, literal_p): Use lookup_symbol instead of
5181 creating a temporary pair for scm_lookupcar.
5182
5183 (scm_unmemocar, unmemocar): Renamed scm_unmemocar to unmemocar,
5184 created deprecated wrapper function scm_unmemocar.
5185
5186 (SCM_VALIDATE_NON_EMPTY_COMBINATION, scm_sym_else,
5187 scm_sym_unquote, scm_sym_uq_splicing, scm_sym_enter_frame,
5188 scm_sym_apply_frame, scm_sym_exit_frame, scm_sym_trace, f_apply,
5189 undefineds, sym_three_question_marks): Moved around without
5190 modifications.
5191
5192 * eval.c, eval.h (scm_macroexp, scm_unmemocar): Deprecated.
5193
910b5125
DH
51942003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
5195
5196 * eval.c (try_macro_lookup, expand_user_macros, is_system_macro_p,
5197 m_expand_body, scm_m_expand_body): Grouped together with m_body.
5198 No further modifications.
5199
c86c440b
DH
52002003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
5201
5202 * eval.c (s_mixed_body_forms): New static identifier.
5203
5204 (canonicalize_define, scm_m_define): The check for a bad
5205 expression is performed in canonicalize_define now.
5206
5207 (try_macro_lookup, expand_user_macros, is_system_macro_p): New
5208 static helper functions for m_expand_body.
5209
5210 (m_expand_body): Use ASSERT_SYNTAX to signal syntax errors. Only
5211 expand user defined macros. Fixed handling of the definition/
5212 expression boundary. Fixed handling of definitions grouped with
5213 'begin. Use canonicalize_define to expand definitions.
5214
3890131a
MV
52152003-11-13 Marius Vollmer <mvo@zagadka.de>
5216
b58e7420
MV
5217 * read.c (scm_lreadr): detect EOF after backslash, and interpret
5218 \xNN hexadecimal sequences. From Paul Jarc, thanks!
5219
5df36eac
MV
5220 * snarf.h (SCM_SMOB, SCM_GLOBAL_SMOB, SCM_SMOB_MARK,
5221 SCM_GLOBAL_SMOB_MARK, SCM_SMOB_FREE, SCM_GLOBAL_SMOB_FREE,
5222 SCM_SMOB_PRINT, SCM_GLOBAL_SMOB_PRINT, SCM_SMOB_EQUALP,
5223 SCM_GLOBAL_SMOB_EQUALP, SCM_SMOB_APPLY, SCM_GLOBAL_SMOB_APPLY):
5224 New macros from Paul Jarc. Thanks!
5225
3890131a
MV
5226 * gc_os_dep.c (scm_get_stack_base): Provide a definition that
5227 return NULL when the machine type is unknown. Previously,
5228 gc_os_dep.c would refuse to compile.
5229
430b8401
DH
52302003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
5231
5232 * eval.c (scm_m_body, m_body, scm_m_lambda, memoize_named_let,
5233 scm_m_let, scm_m_letrec, m_expand_body): Renamed static function
5234 scm_m_body to m_body.
5235
328dc9a3
DH
52362003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
5237
5238 * eval.c, eval.h (scm_m_expand_body, m_expand_body): Deprecated
5239 public use of scm_m_expand_body in eval.h. In eval.c, renamed
5240 scm_m_expand_body to m_expand_body and made it static. Added
5241 deprecated wrapper scm_m_expand_body.
5242
5243 (scm_eval_body, SCM_CEVAL, SCM_APPLY): Use m_expand_body instead
5244 of scm_m_expand_body.
5245
c2337a61
KR
52462003-11-09 Kevin Ryde <user42@zip.com.au>
5247
5248 * dynl.c (scm_dynamic_unlink): Need scm_list_1 on error message
5249 argument. Reported by Mike Gran.
5250
ced8edb0
DH
52512003-11-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
5252
5253 * eval.c (s_missing_body_expression): New static identifier.
5254
5255 (s_body): Removed.
5256
5257 (scm_m_expand_body): Fixed core dump when passing a body with
5258 defines, but without expressions (see additions to syntax.test).
5259 Use ASSERT_SYNTAX to signal syntax errors.
5260
0f572ba7
DH
52612003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5262
5263 * eval.c (canonicalize_define): New static helper function.
5264
5265 (memoize_define, canonicalize_define): Extract handling of
5266 function currying to canonicalize_define.
5267
2510c810
DH
52682003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5269
5270 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
5271 Make sure that error checking in debug mode is not worse than in
5272 standard mode.
5273
34adf7ea
DH
52742003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5275
5276 * eval.c (scm_m_body, scm_m_lambda): Documentation strings are not
5277 handled in scm_m_body any more, but rather in scm_m_lambda.
5278
5279 (scm_m_body, memoize_named_let, scm_m_let, scm_m_letstar,
5280 scm_m_letrec, scm_m_expand_body): Check for validity is done by
5281 calling functions of scm_m_body.
5282
5283 (scm_m_lambda): Avoid unnecessary consing when creating the
5284 memoized code.
5285
89bff2fc
DH
52862003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5287
5288 * eval.c (s_expression): Added comment.
5289
5290 (s_empty_combination, error_unbound_variable): New static
5291 identifiers.
5292
5293 (SCM_VALIDATE_NON_EMPTY_COMBINATION, SCM_EVALIM2, scm_lookupcar1):
5294 Use ASSERT_SYNTAX, syntax_error or error_unbound_variable to
5295 signal syntax errors.
5296
5297 (SCM_CEVAL): Separated handling of evaluator bytecodes and other
5298 scheme objects.
5299
60a49842
DH
53002003-10-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5301
5302 * eval.c (unmemocar, sym_three_question_marks, scm_unmemocar):
5303 Grouped together with unmemocopy, without modifications.
5304
5305 (build_binding_list, unmemocopy): Renamed names of list arguments
5306 and variables to reflect the actual order of the list elements.
5307
70c1c108
DH
53082003-10-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
5309
5310 * eval.c (s_defun): New static identifier.
5311
5312 (scm_m_nil_cond, scm_m_atfop, scm_m_undefine): Add comments. Use
5313 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
5314 when creating the memoized code.
5315
0ee39677
KR
53162003-10-19 Kevin Ryde <user42@zip.com.au>
5317
5318 * numbers.c (scm_ash): Revise docstring as per recent update to manual.
5319
5320 * numbers.c (scm_i_big2dbl): Rewrite, carefully rounding to "closest"
5321 in accordance with R5RS, which just mpz_get_d doesn't really give.
5322
9a848baf
DH
53232003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5324
5325 * eval.c (s_bad_slot_number): New static identifier.
5326
5327 (scm_m_atslot_ref, scm_m_atslot_set_x): Use ASSERT_SYNTAX to
5328 signal syntax errors. Avoid unnecessary consing when creating the
5329 memoized code.
5330
da48db62
DH
53312003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5332
5333 * eval.c (scm_m_cont, scm_m_at_call_with_values,
5334 scm_m_generalized_set_x): Use ASSERT_SYNTAX to signal syntax
5335 errors. Avoid unnecessary consing when creating the memoized
5336 code.
5337
5338 (scm_m_generalized_set_x): Let scm_m_set_x handle the R5RS
5339 standard case. Make sure line and file information are copied to
5340 every created expression.
5341
82b3e2c6
DH
53422003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5343
5344 * eval.c (scm_m_set_x, scm_m_apply, scm_m_atbind): Use
5345 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
5346 when creating the memoized code.
5347
5348 (scm_m_atbind): Reversed the order, in which the init expressions
5349 are stored and executed. The order of execution is now equal to
5350 the order in which the initializers of the let-forms are executed.
5351 Use check_bindings and transform_bindings.
5352
5353 (SCM_CEVAL): Eliminated SCM_NIMP in favor of more appropriate
5354 !SCM_NULLP. Added some comments.
5355
21628685
DH
53562003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5357
5358 * eval.c: Sorted include files alphabetically.
5359
5360 (scm_m_begin): Added comment.
5361
5362 (scm_m_or): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5363 unnecessary consing when creating the memoized code.
5364
5365 (iqq, scm_m_quasiquote, scm_m_quote): Use ASSERT_SYNTAX to signal
5366 syntax errors. Be more specific about the kind of error that was
5367 detected.
5368
5369 (scm_m_quote, unmemocopy): As an optimization, vector constants
5370 are now inserted unquoted into the memoized code. During
5371 unmemoization the quotes are added again to provide syntactically
5372 correct code.
5373
d6754c23
DH
53742003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5375
5376 * eval.c (scm_m_let, scm_m_letstar, scm_m_letrec,
5377 scm_m_expand_body, check_bindings): Extracted syntax checking of
5378 bindings to new static function check_bindings.
5379
5380 (scm_m_let, memoize_named_let): Extracted handling of named let to
5381 new static function memoize_named_let.
5382
5383 (transform_bindings, scm_m_let, scm_m_letstar, scm_m_letrec): Use
5384 ASSERT_SYNTAX to signal syntax errors. Be more specific about the
5385 kind of error that was detected. Avoid use of SCM_CDRLOC. Avoid
5386 unnecessary consing when creating the memoized code.
5387
03a3e941
DH
53882003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5389
5390 * eval.c (s_bad_formals, s_bad_formal, s_duplicate_formal): New
5391 static identifiers.
5392
5393 (s_clauses, s_formals, s_duplicate_formals): Removed.
5394
5395 (scm_m_lambda): Use ASSERT_SYNTAX to signal syntax errors. Be more
5396 specific about the kind of error that was detected. Prepare for
5397 easier integration of changes for separated memoization.
5398
da48db62 53992003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
4610b011
DH
5400
5401 * eval.c (s_duplicate_binding): New static identifier.
5402
5403 (scm_m_case): Call scm_c_memq instead of implementing it inline.
5404
5405 (scm_m_define): Added comment about how we check for duplicate
5406 formals.
5407
5408 (scm_m_do): Added check for duplicate bindings.
5409
5410 (scm_m_if): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5411 unnecessary consing when creating the memoized code.
5412
5413 (scm_c_improper_memq, c_improper_memq, scm_m_lambda): Renamed
5414 scm_c_improper_memq to c_improper_memq, since it is not exported.
5415
5416 (transform_bindings): Call scm_c_memq rather than
5417 scm_c_improper_memq.
5418
5419 (SCM_CEVAL): Simplified handling of SCM_IM_IF forms.
5420
da48db62 54212003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
a954ce1d
DH
5422
5423 * eval.c (s_bad_bindings, s_bad_binding, s_bad_exit_clause): New
5424 static identifiers.
5425
5426 (scm_m_do): Use ASSERT_SYNTAX to signal syntax errors. Be more
5427 specific about the kind of error that was detected. Avoid use of
5428 SCM_CDRLOC. Avoid unnecessary consing when creating the memoized
5429 code, this way also making sure that file name, line number
5430 information etc. remain available.
5431
da48db62 54322003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
8ae95199
DH
5433
5434 * eval.c (memoize_as_thunk_prototype): New static function.
5435
5436 (scm_m_delay, scm_m_future): Use memoize_as_thunk_prototype.
5437 Avoid unnecessary consing when creating the memoized code.
5438
9b9a35b6
KR
54392003-10-12 Kevin Ryde <user42@zip.com.au>
5440
5441 * list.c (scm_append): Track argument number and use in error.
5442
cc56ba80
DH
54432003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5444
5445 * eval.c (s_missing_expression, s_bad_variable): New static
5446 identifiers.
5447
5448 (scm_m_define): Use ASSERT_SYNTAX to signal syntax errors. Prefer
5449 R5RS terminology for the naming of variables. Be more specific
5450 about the kind of error that was detected. Make sure file name,
5451 line number etc. are added to all freshly created expressions.
5452 Avoid unnecessary consing when creating the memoized code.
5453
609a8b86
DH
54542003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5455
5456 * eval.c (s_extra_expression, s_misplaced_else_clause,
5457 s_bad_cond_clause, s_missing_recipient): New static identifiers.
5458
5459 (s_extra_case_clause): Removed.
5460
5461 (scm_m_case, scm_m_cond): If a clause appears after an else
5462 clause, report a misplaced else clause.
5463
5464 (scm_m_cond): Use ASSERT_SYNTAX to signal syntax errors. Be more
5465 specific about the kind of error that was detected. Handle bound
5466 'else and '=>. Avoid unnecessary consing when creating the
5467 memoized code.
5468
5469 (scm_m_cond, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
5470 the syntactic keyword 'else and SCM_IM_ARROW to memoize the
5471 syntactic keyword '=>.
5472
58a2510b
DH
54732003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5474
5475 * eval.c (scm_m_case): Allow empty lists of case labels.
5476
2a6f7afe
DH
54772003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5478
5479 * tags.h (SCM_IM_ELSE, SCM_IM_ARROW): New memoizer codes.
5480
5481 * print.c (scm_isymnames): Add names for the new memoizer codes.
5482
5483 * eval.c (s_missing_clauses, s_bad_case_clause,
5484 s_extra_case_clause, s_bad_case_labels, s_duplicate_case_label,
5485 literal_p): New static identifiers.
5486
5487 (scm_m_case): Use ASSERT_SYNTAX to signal syntax errors. Be more
5488 specific about the kind of error that was detected. Check for
5489 duplicate case labels. Handle bound 'else. Avoid unnecessary
5490 consing when creating the memoized code.
5491
5492 (scm_m_case, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
5493 the syntactic keyword 'else.
5494
e6729603
DH
54952003-10-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
5496
5497 * eval.c (s_bad_expression, syntax_error_key, syntax_error,
5498 ASSERT_SYNTAX, ASSERT_SYNTAX_2): New static identifiers.
5499
5500 (scm_m_and): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5501 unnecessary consing when creating the memoized code.
5502
9ddeb776
KR
55032003-10-09 Kevin Ryde <user42@zip.com.au>
5504
5505 * numbers.c (scm_inexact_to_exact): Don't depend on what double->long
5506 cast gives for values bigger than a long, or for nan or inf.
5507
df5af69a
DH
55082003-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
5509
5510 * smob.h (scm_make_smob_type): Made the declaration match the
5511 definition.
5512
da0e6c2b
MV
55132003-10-07 Marius Vollmer <mvo@zagadka.de>
5514
5515 * goops.c, objects.h, smob.c, smob.h: Make type names char
5516 const * instead of char *. Thanks to Paul Jarc!
5517
591924eb
KR
55182003-10-02 Kevin Ryde <user42@zip.com.au>
5519
ff6ea7b9 5520 * strports.c (scm_call_with_output_string): scm_get_output_string
591924eb
KR
5521 rather than scm_strport_to_string, so as to guard against the port
5522 having been closed by the called procedure. Reported by Nic Ferrier.
5523
f03314f9
DH
55242003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5525
5526 * numbers.h (SCM_INEXACTP): Removed uses of SCM_TYP16S.
5527
5528 * tags.h, deprecated.h (SCM_TYP16S): Deprecated and moved from
5529 tags.h to deprecated.h.
5530
534c55a9
DH
55312003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5532
5533 This set of patches introduces a new tc7 code scm_tc7_number for
5534 numbers. Bignums, reals and complex numbers are turned from smobs
5535 into subtypes of scm_tc7_number.
5536
5537 * tags.h (scm_tc7_number): New.
5538
5539 * eq.c (scm_equal_p), eval.c (SCM_CEVAL), evalext.c
5540 (scm_self_evaluating_p), gc-card.c (scm_i_sweep_card), gc-mark.c
5541 (scm_gc_mark_dependencies), goops.c (create_smob_classes), hash.c
5542 (scm_hasher), numbers.c, numbers.h (SCM_NUMP), objects.c
5543 (scm_class_of), print.c (scm_iprin1), smob.c
5544 (scm_smob_prehistory): Don't handle bignums, reals and complex
5545 numbers as subtypes of scm_tc7_smob any more.
5546
5547 * numbers.h, tags.h (scm_tc16_big, scm_tc16_real,
5548 scm_tc16_complex): Moved definitions from tags.h to numbers.h.
5549
29c4382a
DH
55502003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5551
5552 * numbers.c (scm_make_complex), gc-card.c (scm_i_sweep_card): Use
5553 sizeof (scm_t_complex) to determine the memory size of the
5554 malloc'd area for complex numbers.
5555
47ae1f0e
DH
55562003-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
5557
5558 * numbers.c (scm_bigequal): Fixed.
5559
859b6b2f
MV
55602003-09-16 Marius Vollmer <mvo@zagadka.de>
5561
5562 * stime.c (scm_current_time): 'time' does not set errno so don't
5563 use SCM_SYSERROR for reporting errors.
5564
e17d318f
DH
55652003-09-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5566
5567 This set of patches eliminates the dependency between the
5568 implementation of evaluator specific memoization codes and special
5569 constants like #f, '() etc. ('flags'), which are not evaluator
5570 specific. The goal is to remove definitions of evaluator
5571 memoization codes completely from the public interface. This will
5572 make it possible to experiment more freely with optimizations of
5573 guile's internal representation of memoized code.
5574
5575 * objects.c (scm_class_of): Eliminate dependency on SCM_ISYMNUM.
5576
5577 * print.c (iflagnames): New array, holding the printed names of
5578 guile's special constants ('flags').
5579
5580 (scm_isymnames): Now holds only the printed names of the
5581 memoization codes.
5582
5583 (scm_iprin1): Separate the handling of memoization codes and
5584 guile's special constants.
5585
5586 * tags.h (scm_tc9_flag, SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA,
5587 SCM_IFLAGNUM): new
5588
5589 (scm_tc8_char, scm_tc8_iloc, SCM_BOOL_F, SCM_BOOL_T,
5590 SCM_UNDEFINED, SCM_EOF_VAL, SCM_EOL, SCM_UNSPECIFIED, SCM_UNBOUND,
5591 SCM_ELISP_NIL, SCM_IM_DISPATCH, SCM_IM_SLOT_REF,
5592 SCM_IM_SLOT_SET_X, SCM_IM_DELAY, SCM_IM_FUTURE,
5593 SCM_IM_CALL_WITH_VALUES, SCM_IM_NIL_COND, SCM_IM_BIND): Changed
5594 values.
5595
5596 (SCM_IFLAGP): SCM_IFLAGP now only tests for flags.
5597
5598 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Generalized to use the
5599 tc9 macros and scm_tc9_flag.
5600
eecac806
MV
56012003-09-15 Marius Vollmer <mvo@zagadka.de>
5602
5603 * posix.c (scm_setgroups): Check that the gid list is not too
5604 long. Thanks to Paul Jarc!
5605
22f2cf2d
DH
56062003-09-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
5607
5608 * tags.h: Reduced the number of short instructions from 14 to 13.
5609 The typecode of the former 14th short instruction is now used to
5610 represent long instructions. Changed some comments to reflect
5611 this fact.
5612
5613 (SCM_MAKISYM): ISYMs get a new tc7 code, namely the one that was
5614 previously used by SCM_IM_DEFINE.
5615
5616 (SCM_IM_DEFINE): Turned into a long instruction.
5617
5618 * eval.c (unmemocopy, SCM_CEVAL): Treat SCM_IM_DEFINE as a long
5619 instruction.
5620
5621 * eval.c (SCM_CEVAL): Since characters and iflags have now a tc7
5622 code that is separate from all instructions, one level of dispatch
5623 for long instructions can be eliminated.
5624
5625 * print.c (scm_isymnames): Removed some commented code.
5626
62f548e1
MV
56272003-09-12 Marius Vollmer <mvo@zagadka.de>
5628
97a61c5f
MV
5629 * __scm.h (SCM_FENCE): Use __memory_barrier with the Intel
5630 compiler on IA64.
5631
50e0ba57
MV
5632 * hashtab.h (scm_tc16_hashtable): Added "extern" declaration.
5633
5634 * modules.c (scm_module_reverse_lookup): Check that the obarray
5635 really is a hashtable and do nothing if not.
5636
62f548e1
MV
5637 * inline.h: Use "extern inline" only with GCC. Use "static
5638 inline" else.
5639
0d5e3480
DH
56402003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5641
5642 * numbers.h (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Removed uses
5643 of SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
5644
5645 * numbers.h, deprecated.h (SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP,
5646 SCM_SLOPPY_COMPLEXP): Deprecated and moved from numbers.h to
5647 deprecated.h.
5648
6b412e91
DH
56492003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5650
5651 * eq.c (scm_eqv_p, scm_equal_p): Removed uses of
5652 SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
5653
5654 * eq.c (scm_eqv_p, scm_equal_p): Reordered comparisons from
5655 0.0==some_expression to some_expression==0.0. The latter is
5656 better readable. The former is preferred by some people, since it
5657 leads to a compiler error when confusing == with =. However, when
5658 using gcc, a warning will be issued if in an if-statement an
5659 assigment appears. Since many Guile developers are using gcc,
5660 such errors will not remain unnoticed anyway. We can therefore
5661 focus on better readability.
5662
7e3b25bf
DH
56632003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5664
5665 * tags.h: Added description of Guile's type system. Removed some
5666 old and misleading comments.
5667
3ea39242
DH
56682003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5669
5670 * unit.c (scm_cvref): Eliminate unnecessary uses of SCM_NIMP,
5671 SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
5672
5d7d39ff
DH
56732003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5674
5675 * numbers.h (SCM_MAKINUM): Define in terms of scm_tc2_int.
5676
5677 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Define in terms of the
5678 respective SLOPPY macro.
5679
baa84a20
DH
56802003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5681
5682 * eq.c (scm_equal_p): Use SCM_TYP7 to check if an object is of
5683 type string, not SCM_TYP7S.
5684
ba15f500
KR
56852003-09-03 Kevin Ryde <user42@zip.com.au>
5686
5687 * numbers.c (scm_lognot): Correction to docstring, ones-complement not
5688 2s-complement.
5689
53bb8782
KR
5690 * stime.c (scm_strptime): Add comment about glibc strptime %s and
5691 current timezone requiring SCM_DEFER_INTS.
5692
defdc4b4
NJ
56932003-08-30 Neil Jerram <neil@ossau.uklinux.net>
5694
5695 * script.c (scm_compile_shell_switches): Make -s switch optional
5696 if file to be loaded does not begin with a `-'. (Thanks to Aaron
5697 VanDevender for the patch!)
5698
0f008a15
KR
56992003-08-30 Kevin Ryde <user42@zip.com.au>
5700
5701 * numbers.c (scm_lognot): Rewrite using ~ and mpz_com, for directness
5702 and to have non-integer types rejected as per other logical funcs.
5703
438a3ba1
KR
57042003-08-28 Kevin Ryde <user42@zip.com.au>
5705
5706 * gc.h (scm_remember_upto_here_1): Revise comments on the asm form.
5707
98dceb37
KR
57082003-08-23 Kevin Ryde <user42@zip.com.au>
5709
5710 * simpos.c (scm_system): Remove SCM_DEFER_INTS, system() should be
5711 thread safe, and could take a long time too.
5712
1fa79a38
KR
57132003-08-22 Kevin Ryde <user42@zip.com.au>
5714
5715 * numbers.c (scm_difference): Correction to bignum - negative inum.
5716
d97f9b42
KR
57172003-08-14 Kevin Ryde <user42@zip.com.au>
5718
5719 * gc.h (scm_remember_upto_here_1, scm_remember_upto_here_2)
5720 [__GNUC__]: Use volatile asm macros rather than a function call.
5721 * gc.c (scm_remember_upto_here_1, scm_remember_upto_here_2): Undefine
5722 macros while defining functions.
5723
5724 * simpos.c (getenv): Use <stdlib.h> for prototype.
5725 (scm_system): In docstring, refer to status:exit-val rather than
5726 "functions above".
5727
b9052fcc
KR
57282003-08-09 Kevin Ryde <user42@zip.com.au>
5729
5730 * srcprop.c (scm_source_properties): Return plist from hash if it's a
5731 list set by source-properties! rather than an SRCPROPS object,
5732
8e5b4b9e
KR
57332003-07-29 Kevin Ryde <user42@zip.com.au>
5734
5735 * properties.c (scm_primitive_property_ref): In docstring, note
5736 parameters to not-found-proc, use hyphens rather than underscores for
5737 that parameter name.
5738 (scm_primitive_property_set_x): In docstring, VAL is the value
5739 parameter not CODE.
5740
20703ac4
MV
57412003-07-27 Marius Vollmer <mvo@zagadka.de>
5742
c6ccee34
MV
5743 * print.c (scm_print_symbol_name): handle more weird characters by
5744 escaping the symbol name properly. Thanks to Paul Jarc!
5745
2f4931bf
MV
5746 * posix.h (scm_setgroups): New prototype.
5747 * posix.c (scm_setgroups): New. Thanks to Paul Jarc!
5748 (scm_getgroups): Handle groups ids that don't fit into a fixnum.
5749 Don't use SCM_WRITABLE_VELTS.
5750
265c456f
MV
5751 * gc.h (SCM_GC_SET_CELL_BVEC): New.
5752 * gc-card.c (scm_i_init_card_freelist): Use it. Thanks to
5753 Matthias Koeppe!
5754
20703ac4
MV
5755 * __scm.h (SCM_C_INLINE_KEYWORD): New.
5756 * numbers.c: Use it in place of SCM_C_INLINE so that the code
5757 compiles when SCM_C_INLINE is undefined.
5758
59c4bb82
DH
57592003-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
5760
5761 * __scm.h: Reformulated the architecture and compiler properties
5762 in terms of properties of scm_t_bits and SCM variables rather than
5763 in terms of c standard types. This is since it is not known which
5764 of the standard types scm_t_bits and SCM variables will be defined
5765 to.
5766
d7850c8d
KR
57672003-07-24 Kevin Ryde <user42@zip.com.au>
5768
5769 * numbers.c (scm_angle): Use scm_flo0 for non-negative inum, bignum
5770 and real.
5771
8a0c514f
KR
57722003-07-18 Kevin Ryde <user42@zip.com.au>
5773
5774 * numbers.c (scm_product): In complex * bignum, correction to
5775 REAL/IMAG fetch, x is the complex, not y.
5776
0aacf84e
MD
57772003-07-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5778
5779 * numbers.c (scm_odd_p, scm_even_p): Bugfix: Treat result of
5780 scm_inf_p test as Scheme values.
5781 (scm_sum): Bugfix: Normalize bignum created from a negative bignum
5782 and a positive inum.
5783 Use GNU indentation style.
5784
192de9a4
DH
57852003-07-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5786
5787 * values.c (scm_values): Build lists of length 1 by using
5788 scm_list_1 instead of using scm_cons.
5789
bbb4438a
KR
57902003-07-10 Kevin Ryde <user42@zip.com.au>
5791
b58c85ce
KR
5792 * deprecation.c (scm_c_issue_deprecation_warning_fmt): Add va_end.
5793 * list.c (scm_list_n): Ditto.
5794
bbb4438a
KR
5795 * gc-malloc.c (scm_gc_realloc): Define "ptr" at start of function.
5796
287f8ad1
KR
57972003-07-08 Matthias Koeppe <mkoeppe@merkur.math.uni-magdeburg.de>
5798
5799 * tags.h (scm_t_bits, scm_t_signed_bits, etc): Avoid solaris empty
5800 defines of INTPTR_MAX and UINTPTR_MAX, combine conditionals for
5801 scm_t_bits and scm_t_signed_bits to avoid any chance of one and not
5802 the other using intptr_t.
5803
005d2366
KR
58042003-07-08 Kevin Ryde <user42@zip.com.au>
5805
0aacf84e 5806 * numbers.c (scm_make_polar): Use sincos, when available.
005d2366
KR
5807 (scm_magnitude): Use hypot.
5808
5809 * ports.c (scm_char_ready_p, scm_peek_char): In docstrings, don't use
5810 @footnote since it doesn't go through to guile-procedures.txt.
5811
5812 * threads.c (scm_call_with_new_thread): In docstring, use "( )"
5813 outside @var to quieten makeinfo, and use @code.
5814
cbfe8e62
HWN
58152003-07-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5816
5817 * gc-malloc.c (decrease_mtrigger): new function
5818 (increase_mtrigger): new function, separate debug registering and
5819 mtrigger administration.
5820 (scm_gc_realloc): bugfix: do mtrigger administration before the
5821 actual realloc, for the realloc might invalidate a GC-d segment of
5822 memory. Thanks to Sam Hocevar for pointing this out.
5823 (scm_gc_realloc): use scm_malloc_reregister instead of
5824 unregistering and registering in sequence.
5825
aeb4c2e1
HWN
58262003-07-03 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5827
5828 * __scm.h (SCM_ASSERT): change "else" expansion to "do { } while (0)"
5829
4c27f8d2
HWN
58302003-07-02 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5831
5832 * __scm.h (SCM_ASRTGO): add "else" to macro expansions with if
5833 clauses.
5834
983e697d
MV
58352003-06-29 Marius Vollmer <mvo@zagadka.de>
5836
5837 * deprecated.h (SCM_OPDIRP, scm_fport, scm_option, scm_srcprops,
5838 scm_srcprops_chunk, scm_info_frame, scm_stack, scm_array,
5839 scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_FUNC_NAME, SCM_WTA,
5840 RETURN_SCM_WTA, SCM_VALIDATE_NUMBER_COPY,
5841 SCM_VALIDATE_NUMBER_DEF_COPY, SCM_VALIDATE_OPDIR): Re-added from
5842 the release_1_6 branch.
5843
78b6566e
SJ
58442003-06-25 Stefan Jahn <stefan@lkcc.org>
5845
5846 * continuations.c: Redeclaration of getcontext() via the
5847 __asm__ ("getcontext") directive.
5848
5849 * continuations.h: Include <ucontext.h> instead of
5850 <sys/ucontext.h>.
5851
1ebb8497
KR
58522003-06-21 Kevin Ryde <user42@zip.com.au>
5853
5854 * numbers.c (_GNU_SOURCE): #define, to get C99 things.
5855 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, $asinh, $acosh,
5856 $atanh, truncate): Use C library asinh, acosh, atanh and trunc, when
5857 available.
5858 (scm_inexact_to_exact): Expand isfinite to its definition !xisinf.
5859 (isfinite): Remove, conflicts with C99 isfinite().
5860
fbf85ba4
MV
58612003-06-19 Marius Vollmer <mvo@zagadka.de>
5862
5863 * deprecated.h, deprecated.c (scm_strhash, scm_sym2ovcell_soft,
5864 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
5865 scm_symbol_value0, scm_string_to_obarray_symbol scm_intern_symbol,
5866 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
5867 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp): Re-added from
5868 the release_1_6 branch.
5869
fcc5d734
SJ
58702003-06-14 Stefan Jahn <stefan@lkcc.org>
5871
5872 * threads.h: Redefined scm_getspecific() and scm_setspecific()
5873 to be functions instead of macros.
5874
5875 * threads.c: Conditionalized inclusion of <sys/time.h> and
5876 <unistd.h>.
5877 (scm_getspecific, scm_setspecific): Made these two function
5878 real part of the API.
5879
5880 * posix.c (s_scm_putenv): Added some code to make a
5881 (putenv "FOO="), i.e. setting an empty string, work also on
5882 Win32 systems. Thanks to Kevin Ryde for the proposal.
5883
c3ae8e07
KR
58842003-06-12 Kevin Ryde <user42@zip.com.au>
5885
75b14838
KR
5886 * posix.c (scm_putenv): Free temporary ptr in mingw unset. Add
5887 freebsd to comment about need to use unsetenv.
c3ae8e07 5888
9d9fa092
MV
58892003-06-02 Marius Vollmer <mvo@zagadka.de>
5890
5891 * ports.c (scm_peek_char): Safe the column of the port around the
5892 getc/ungetc calls. Thanks to Dr. Peter Ivanyi!
5893
f2478375
KR
58942003-06-07 Kevin Ryde <user42@zip.com.au>
5895
5896 * tags.h: Use inttypes.h and stdint.h when available, for INTPTR_MAX
5897 and friends required by scm_t_bits setups.
5898
6375e040
DH
58992003-06-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5900
5901 * tags.h (scm_tc2_int): Added.
5902
5903 * tags.h (scm_tc3_int_1, scm_tc3_int_2): Expressed in terms of
5904 scm_tc2_int.
5905
5906 * tags.h (scm_tcs_cons_imcar, scm_tcs_cons_nimcar, scm_tcs_struct,
5907 scm_tcs_closures): Hard coded values replaced by symbolic ones.
5908
f5c6ec2f
DH
59092003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
5910
5911 * eval.c: Partially undid my patch from 2003-05-31. This patch
5912 caused the segfault referenced in the previous changelog entry.
5913
47dbd81e
DH
59142003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
5915
5916 * tags.h: Fixed comment about the immediate type code layout.
5917
5918 * eval.c: Fixed handling of non-special instructions. Without
5919 this patch, guile will segfault on (#\0) and similar instructions.
5920
3ec52c51
KR
59212003-06-05 Kevin Ryde <user42@zip.com.au>
5922
5923 * numbers.c (scm_max, scm_min): For inum, bignum and real, if other
5924 operand is NaN, then return NaN. Also avoid passing NaN to mpz_cmp_d.
5925
e418bd7c
KR
5926 * read.c (scm_input_error): Pass arg list parameter to scm_error_scm,
5927 rather than SCM_EOL. Needed by "Unknown # object" case in scm_lreadr.
5928
d0624e39
DH
59292003-06-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5930
5931 * __scm.h, gc-card.c (SCM_DEBUG_DEBUGGER_SUPPORT,
5932 SCM_DEBUG_DEBUGGING_SUPPORT): Renamed macro
5933 SCM_DEBUG_DEBUGGER_SUPPORT to SCM_DEBUG_DEBUGGING_SUPPORT and
5934 generalized it to apply not only to C level functions but also to
5935 scheme level functions.
5936
5937 * debug.c, debug.h, eval.c (make-iloc, scm_make_iloc, iloc?,
5938 scm_iloc_p, dbg-make-iloc, scm_dbg_make_iloc, dbg-iloc?,
5939 scm_dbg_iloc_p): Moved functions scm_make_iloc, scm_iloc_p to
5940 eval.c, made them available under SCM_DEBUG_DEBUGGING_SUPPORT == 1
5941 only and renamed them to scm_dbg_make_iloc, scm_dbg_iloc_p,
5942 respectively.
5943
5944 * deprecated.h, eval.c, eval.h (SCM_ILOC00, SCM_IDINC,
5945 SCM_IDSTMSK): Deprecated. The macro definitions are moved from
5946 eval.h into eval.c and a copy is placed into deprecated.h.
5947
5948 * eval.c, eval.h (SCM_MAKE_ILOC): Removed from eval.h and placed
5949 into eval.c. This definition was not part of the API in any
5950 officially released version of guile and thus does not need to go
5951 through a phase of deprecation.
5952
e90c3a89
DH
59532003-06-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5954
d0624e39
DH
5955 * deprecated.c, deprecated.h, eval.c, eval.h (scm_s_expression,
5956 scm_s_test, scm_s_body, scm_s_bindings, scm_s_variable,
5957 scm_s_clauses, scm_s_formals): Deprecated. In eval.c the
e90c3a89
DH
5958 definitions are make static and renamed from scm_s_xxx to s_xxx.
5959 In deprecated.c the original definitions are copied.
5960
d0624e39
DH
5961 * deprecated.h, eval.c, eval (SCM_EVALIM2, SCM_EVALIM, SCM_XEVAL,
5962 SCM_XEVALCAR): Deprecated. The macro definitions are moved from
e90c3a89
DH
5963 eval.h into eval.c and a copy (slightly modified to work in user
5964 code) is placed into deprecated.h.
5965
5966 * eval.c: Use the local static s_xxx definitions instead of the
5967 scm_s_xxx definitions throughout.
5968
14b18ed6
DH
59692003-06-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5970
5971 This set of patches separates the representation of the cxr family
5972 of functions (car, cdr etc.) from the dsubr family of functions
5973 (i. e. functions that take a double precision floating point
5974 argument). Further, the algorithm for handling the cxr function
5975 is improved.
5976
5977 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_1), numbers.c
5978 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, scm_round, floor,
5979 ceil, sqrt, fabs, exp, log, sin, cos, tan, asin, acos, atan, sinh,
5980 cosh, tanh), objects.c (scm_class_of), procprop.c
5981 (scm_i_procedure_arity), ramap.c (scm_array_map_x), tags.h
5982 (scm_tc7_dsubr, scm_tcs_subrs): Introduce scm_tc7_dsubr as new
5983 typecode for the dsubr family of functions.
5984
5985 * ramap.c (ramap_cxr, ramap_dsubr): Renamed ramap_cxr to
5986 ramap_dsubr.
5987
5988 * eval.c (SCM_CEVAL, SCM_APPLY, call_cxr_1), pairs.c
5989 (scm_init_pairs): Make use of the (now usable) second cell element
5990 of a scm_tc7_cxr function to implement the cxr family of functions
5991 more efficiently.
5992
2ca0d207
DH
59932003-05-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
5994
5995 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_0,
5996 scm_trampoline_1, scm_trampoline_2): Postpone error cases to the
5997 end of an if-else-if-sequence of checks.
5998
9a069bdd
DH
59992003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
6000
6001 * eval.c (SCM_CEVAL): Improved readability of call-with-values
6002 execution. Generalize apply_closure to apply_proc and use that
6003 for call-with-values.
6004
e910e9d2
DH
60052003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
6006
6007 * eval.c (SCM_CEVAL): Avoid one level of indirection when applying
6008 a non closure.
6009
1e498fbd
SJ
60102003-05-30 Stefan Jahn <stefan@lkcc.org>
6011
6012 * posix.c (s_scm_putenv): Use the new HAVE_UNSETENV
6013 appropriately for mingw32 hosts.
6014
6015 * numbers.h: Defining copysign(), isnan() and finite() to
6016 be prefixed by a single '_' for mingw32 hosts.
6017
c47e2599
KR
60182003-05-30 Kevin Ryde <user42@zip.com.au>
6019
6020 * numbers.c (z_negative_one): New variable.
6021 (scm_init_numbers): Initialize it.
6022 (scm_logcount): Use it and mpz_hamdist to count zeros for negatives.
6023
2e945bcc
SJ
60242003-05-29 Stefan Jahn <stefan@lkcc.org>
6025
6026 * win32-dirent.c: Use malloc() instead of scm_malloc().
6027
6028 * stime.c (s_scm_strftime): Add a type cast to avoid compiler
6029 warning.
6030
6031 * posix.c (s_scm_putenv): Disable use of unsetenv() for the
6032 mingw32 build.
6033
6034 * modules.c (s_scm_module_import_interface): Renamed local
6035 variable interface to _interface. Seems like 'interface'
6036 is a special compiler directive for the mingw32 compiler.
6037
6038 * mkstemp.c: Provide prototype to avoid compiler warning.
6039
6040 * load.c (s_scm_search_path): Fixed absolute and relative
6041 path detections for native Windows platforms.
6042
6043 * gc.h, threads.h: Export some more symbols using SCM_API (necessary
6044 to build on mingw32).
6045
6046 * gc-freelist.c ("s_scm_map_free_list",
6047 "s_scm_gc_set_debug_check_freelist_x"): Fixed use of FUNC_NAME.
6048
6049 * fports.c (fport_fill_input): Disable use of
6050 fport_wait_for_input() on Win32 platforms.
6051
6052 * filesys.c (s_scm_basename): Fixed __MINGW32__ code.
6053
6054 * Makefile.am: Modified some rules for cross compiling.
6055
ddd8f927
DH
60562003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6057
6058 * eval.c (SCM_CEVAL): In case of an application, all checks for a
6059 proper function object and the correct number of arguments are now
6060 performed in the application part of SCM_CEVAL.
6061
6062 (scm_badformalsp): Removed.
6063
f8ba2197
DH
60642003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6065
6066 * deprecated.c (scm_read_and_eval_x): Fixed C99-ism.
6067
79f55b7c
MD
60682003-05-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6069
a502595f
MD
6070 * num2integral.i.c (NUM2INTEGRAL): Avoid warning about conditional
6071 always being false by inserting preprocessor conditional. (Thanks
6072 to Bruce Korb.)
6073
79f55b7c
MD
6074 * __scm.h (SCM_STACK_PTR): New macro. (Cast argument through
6075 (void *) in order to avoid an aliasing warning; thanks to Bruce
6076 Korb.)
6077
6078 * stackchk.h (SCM_STACK_OVERFLOW_P): Use SCM_STACK_PTR.
6079
6080 * threads.c (suspend, launch_thread, scm_threads_mark_stacks): Use
6081 SCM_STACK_PTR.
6082
6083 * threads.c (scm_threads_mark_stacks): Bugfix: Changed
6084 thread->base --> t->base.
6085
6086 * eval.c (SCM_CEVAL): Don't cast argument of SCM_STACK_OVERFLOW_P.
6087
47dee228
MV
60882003-05-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6089
6090 * deprecated.h, deprecated.c (scm_makstr, scm_makfromstr,
6091 scm_variable_set_name_hint, scm_builtin_variable,
6092 scm_internal_with_fluids, scm_make_gsubr,
6093 scm_make_gsubr_with_generic, scm_create_hook, SCM_LIST0,
6094 SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5, SCM_LIST6,
6095 SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify, scm_sloppy_memq,
85494587
MV
6096 scm_sloppy_memv, scm_sloppy_member, scm_read_and_eval_x,
6097 scm_subr_entry, SCM_SUBR_DOC, scm_make_subr,
6098 scm_make_subr_with_generic, scm_make_subr_opt,
6099 scm_call_catching_errors, scm_make_smob_type_mfpe,
6100 scm_set_smob_mfpe, scm_strprint_obj, scm_read_0str, scm_eval_0str,
6101 SCM_CHARS, SCM_UCHARS, SCM_LENGTH): Re-added from the release_1_6
6102 branch. Some have been slightly rewritten.
6103 (scm_i_object_chars, scm_i_object_length): New, to support
6104 SCM_CHARS, SCM_UCHARS, and SCM_LENTH.
6105
e681d187
DH
61062003-05-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
6107
6108 * eval.c (scm_m_do, unmemocopy, SCM_CEVAL): Reversed order of
6109 names and inits in the memoized code of do.
6110
7e59d9d4
MD
61112003-05-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6112
6113 * c-tokenize.lex (yyget_lineno, yyget_in, yyget_out, yyget_leng,
6114 yyget_text, yyset_lineno, yyset_in, yyset_out, yyget_debug,
6115 yyset_debug, yylex_destroy): Added prototypes (otherwise we'll get
6116 a compilation error if error-on-warning is enabled).
6117
9950a42c
MV
61182003-05-17 Marius Vollmer <mvo@zagadka.de>
6119
6120 * c-tokenize.lex: Gobble up complete lines after a '#'. This
6121 removes preprocessor directives from the snarfage that might
6122 otherwise confuse us. These directives appear when compiling with
6123 "-g3", for example.
6124
0068984b
HWN
61252003-05-16 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6126
26e68795
HWN
6127 * ChangeLog: add my surname
6128
0068984b
HWN
6129 * srcprop.c (scm_finish_srcprop): use
6130 scm_gc_register_collectable_memory()
6131 (scm_make_srcprops): idem.
6132
131805f0
HWN
61332003-05-14 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6134
6135 * gc-malloc.c (scm_gc_register_collectable_memory): avoid
6136 wrap-around for scm_mtrigger
6137 (scm_gc_register_collectable_memory): abort on overflowing
6138 scm_mallocated().
6139
d4611024
KR
61402003-05-13 Kevin Ryde <user42@zip.com.au>
6141
6142 * numbers.c (xmpz_cmp_d): New macro, handling infs if gmp doesn't.
6143 (scm_num_eq_p, scm_less_p, scm_max, scm_min): Use it.
6144
7aaf8dc9
MD
61452003-05-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6146
dfd03fb9
MD
6147 * backtrace.c (scm_display_error_message): Introduced fancy
6148 printing with max level 7 and length 10. (Purpose: avoid printing
6149 gigantic objects in error messages.)
6150
6151 * print.c, print.h (scm_i_port_with_print_state): New function.
6152
6153 * print.c (scm_iprin1, scm_printer_apply,
6154 scm_port_with_print_state): Use scm_i_port_with_print_state.
6155 (scm_simple_format): Modified not to destroy print states.
6156 (print_state_mutex): New mutex.
6157 (scm_make_print_state, scm_free_print_state, scm_prin1):
6158 Lock/unlock print_state_mutex.
6159
7aaf8dc9
MD
6160 * deprecated.h (SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK):
6161 Use current names in definitions.
6162
a4d9ffa1
KR
61632003-05-10 Kevin Ryde <user42@zip.com.au>
6164
6165 * numbers.c (scm_num_eq_p, scm_less_p): Don't pass NaN to mpz_cmp_d.
6166
d25e96a4
KR
6167 * numbers.c (scm_integer_length): On negative bignums, adjust
6168 mpz_sizeinbase to account for it looking at absolute value where we
6169 want ones-complement.
6170
6171 * numbers.c (scm_gcd): In bignum/inum, don't pass yy==0 to mpz_gcd_ui
6172 since we're only using the ulong return value, and x might not fit.
6173
5bf6a6f0
DH
61742003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6175
6176 * eval.c, eval.h, read.c, read.h (scm_sym_dot): Moved from eval to
6177 read. This will allow to make the definition in read.c static.
6178
f58c472a
DH
61792003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6180
6181 * eval.c, eval.h, evalext.c, evalext.h (scm_m_undefine): Moved
6182 from evalext to eval. This will allow to make some of the
6183 definitions in eval.c static.
6184
90382aeb
KR
61852003-05-06 Kevin Ryde <user42@zip.com.au>
6186
6187 * numbers.c (scm_difference): In inum - bignum, handle negative inum.
6188 (scm_logcount): Use mpz_com, not mpz_neg.
6189
3b88ed2a
DH
61902003-05-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6191
6192 The purpose of this patch is to make guile's internal memoizers
6193 distinguishable from memoizing macros created on the scheme level
6194 or from user provided primitive memoizing macros. The reason is,
6195 that the internal memoizers are the only ones that are allowed to
6196 transform their scheme input into memoizer byte code, while all
6197 other memoizing macros may only transform scheme code into new
6198 scheme code.
6199
6200 To achieve this, a new macro type 'builtin-macro!' is introduced.
6201 Currently, 'builtin-macro!'s are handled as memoizing macros, but
6202 this will change when the memoizer and executor are separated.
6203
6204 * macros.[ch] (scm_i_makbimacro): New.
6205
6206 * macros.h (SCM_BUILTIN_MACRO_P): New.
6207
6208 * macros.c (macro_print, scm_macro_type): Support builtin-macro!s.
6209
6210 * eval.c, goops.c: All of guile's primitive memoizing macros are
6211 primitive builtin-macros now.
6212
6213 * eval.c (scm_macroexp, SCM_CEVAL): Make sure the primitive
6214 builtin-macros are handled equally to memoizing macros.
6215
b0780eb1
MV
62162003-05-04 Marius Vollmer <mvo@zagadka.de>
6217
6218 * throw.c (scm_ithrow): Remove "asm volatile" hack. It used to
6219 work around a bug in GCC 2.95.2 but is now a bug in itself.
6220
1cbf4fe9
MV
62212003-05-02 Marius Vollmer <mvo@zagadka.de>
6222
6223 * deprecated.h (scm_rstate, scm_rng, SCM_SLOPPY_CONSP,
6224 SCM_SLOPPY_NCONSP, scm_tc7_ssymbol, scm_tc7_msymbol,
6225 scm_tcs_symbols): New.
6226
1a61d41b
MV
62272003-04-30 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6228
096ecbaf
MV
6229 * deprecated.h, deprecated.c (scm_protect_object,
6230 scm_unprotect_object, SCM_SETAND_CAR, SCM_SETOR_CAR,
6231 SCM_SET_AND_CDR, SCM_SET_OR_CDR, SCM_FREEP, SCM_NFREEP,
6232 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
6233 SCM_GCCDR, scm_remember, scm_the_root_module, scm_make_module,
6234 scm_ensure_user_module, scm_load_scheme_module, scm_port,
6235 scm_ptob_descriptor, scm_port_rw_active,
6236 scm_close_all_ports_except): New.
6237
1a61d41b
MV
6238 * ports.c (scm_c_port_for_each): New function, mostly copied from
6239 scm_port_for_each.
6240 (scm_port_for_each): Reimplemented using scm_c_port_for_each.
6241 * ports.h (scm_c_port_for_each): New prototype.
6242
c8e1d354
MD
62432003-04-28 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6244
6245 * eval.c (scm_m_atdispatch): Removed until actually needed. (This
6246 macro was introduced in anticipation of GOOPS method compilation
6247 code.)
6248
6249 * goops.c: Removed binding of @dispatch.
6250
a4aa2134
DH
62512003-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
6252
6253 * eval.c, goops.c (@dispatch, @slot-ref, @slot-set!): Move the
6254 instructions that bind the macros on the scheme level back to
6255 goops.c in order to make sure again that the bindings go into the
6256 (oop goops) module and are not visible from the outside.
6257
9fbee57e
DH
62582003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6259
6260 * eval.c: Non functional change: Separated R5RS and non-R5RS
6261 macros into different sections of the file and ordered the
6262 memoizers alphabetically.
6263
12841895
DH
62642003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6265
6266 * eval.c (scm_ilookup): Rewritten to improve readability.
6267
6a3f13f0
DH
62682003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6269
6270 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
6271 Partially reverted patch from 2003-04-23 in oder to find a better
6272 compromise between readability and debuggability.
6273
b0c5d67b
DH
62742003-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6275
6276 * eval.c, eval.h, goops.c, goops.h (scm_m_atslot_ref,
6277 scm_m_atslot_set_x, scm_m_atdispatch): Move the declarations and
6278 definitions of the special goops memoizers from goops.[ch] to
6279 eval.[ch]. Hmm... it seems that scm_m_atdispatch is not used
6280 throughout guile.
6281
b9ad392e
MD
62822003-04-24 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6283
6284 * ports.c, ports.h (scm_i_port_table_mutex): New mutex.
6285
6286 * fports.c (scm_evict_ports): Lock/unlock scm_i_port_table_mutex.
6287
6288 * ports.c (scm_close_port, scm_flush_all_ports): Ditto.
6289
6290 * ioext.c (scm_fdes_to_ports): Ditto.
6291
6292 * vports.c (scm_make_soft_port): Changed SCM_DEFER/ALLOW_INTS into
6293 lock/unlock scm_i_port_table_mutex.
6294
6295 * strports.c (scm_mkstrport): Ditto.
6296
6297 * ports.c (scm_void_port, scm_port_for_each): Ditto.
6298
6299 * fports.c (scm_fdes_to_port): Ditto.
6300
d0b07b5d
DH
63012003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6302
6303 This set of patches contains no functional changes, only debatable
6304 minor stylistic ones. Still, in order to prepare a patch between
6305 my local copy and the CVS version, I decided to submit the changes
6306 below. Then, the patch will hopefully only contain relevant
6307 modifications :-)
6308
6309 * eval.c (iqq): Added const specifier.
6310
6311 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
6312 Use NULL instead of 0 to indicate that a pointer is returned.
6313 Removed some misleading 'fall through' comments.
6314
6315 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
6316 Split up long expressions into smaller ones to be more debugging
6317 friendly.
6318
a98e8e98
DH
63192003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6320
6321 * eval.h (SCM_ENTER_FRAME_HDLR, SCM_APPLY_FRAME_HDLR,
6322 SCM_EXIT_FRAME_HDLR): Use SCM_PACK to convert data to a SCM value
6323 rather than casting to SCM.
6324
c178c3a6
DH
63252003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6326
6327 * sort.c, pairs.h: Removed unnecessary includes.
6328
d339981a
DH
63292003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6330
6331 * sort.c: Replaced hand-made trampline code by the new official
6332 mechanism from eval.c. This fixes a segfault in the new test file
6333 sort.test.
6334
6335 (quicksort, compare_function, scm_restricted_vector_sort_x,
6336 scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
6337 scm_merge_list_step, scm_sort_x, scm_sort, scm_merge_vector_x,
6338 scm_merge_vector_step, scm_stable_sort_x, scm_stable_sort,
6339 scm_sort_list_x, scm_sort_list): Use trampoline mechanism from
6340 eval.c.
6341
6342 (subr2less, lsubrless, closureless, applyless, scm_cmp_function,
6343 cmp_fun_t): Removed.
6344
6345 (compare_function): Added.
6346
6347 * sort.c (quicksort, SWAP, stack_node): Replaced pointer
6348 arithmetics with index arithmetics. Changed quicksort to work on
6349 an array of SCM values instead of an array of characters. Avoid
6350 bytewise copying of SCM elements. Avoid allocating memory on the
6351 stack with alloca. Fixed some comments.
6352
821f18a4
DH
63532003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6354
6355 * eval.c (EXTEND_ENV): Eliminated.
6356
6357 (unmemocopy, SCM_CEVAL, SCM_APPLY): Use SCM_EXTEND_ENV instead of
6358 EXTEND_ENV.
6359
94fb5a6e
DH
63602003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6361
6362 * __scm.h (SCM_DEBUG_DEBUGGER_SUPPORT): New compile-time option.
6363
6364 * gc.card.c (scm_gc_marked_p): Fixed compiler warning when
6365 compiling with SCM_DEBUG==1 by moving definition behind prototype.
6366
6367 * gc.card.c (scm_dbg_t_list_cell, scm_dbg_t_double_cell,
6368 scm_dbg_gc_marked_p, scm_dbg_gc_get_card, scm_dbg_gc_get_bvec,
6369 scm_t_list_cell_struct, scm_t_list_cell, scm_t_double_cell,
6370 scm_gc_marked_p, scm_gc_get_card, scm_gc_get_bvec): Fixed
6371 functions such that they check if the object is a non-immediate.
6372 Further, renamed identifiers to use the scm_dbg_ prefix and made
6373 their inclusion into the lib dependent of the
6374 SCM_DEBUG_DEBUGGER_SUPPORT compile time option.
6375
fce0b22d
DH
63762003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6377
6378 * __scm.h: Fixed comment about the SCM_DEBUG_TYPING_STRICTNESS
6379 debug option.
6380
1685446c
DH
63812003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6382
821f18a4 6383 * list.c (scm_ilength, scm_last_pair), unif.c (l2ra): Prefer
1685446c
DH
6384 !SCM_CONSP over SCM_NCONSP. Now, guile itself does not include
6385 any calls to SCM_NCONSP any more.
6386
6387 * unif.c (l2ra): Eliminate redundant check.
6388
9ff1720f
DH
63892003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6390
6391 * list.c (scm_cons_star), ramap.c (scm_ra_sum, scm_ra_product,
6392 scm_array_map_x), unif.c (l2ra): Prefer !SCM_NULLP over
6393 SCM_NNULLP. Now, guile itself does not include any calls to
6394 SCM_NNULLP any more.
6395
05b15362
DH
63962003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6397
6398 * eval.c (unmemocopy, SCM_APPLY, scm_map, scm_for_each,
6399 scm_copy_tree): Place assignment expressions which are part of
6400 other expressions into an expression of their own.
6401
0c88d7df
DH
64022003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6403
6404 * goops.c (TEST_CHANGE_CLASS, scm_sys_initialize_object): Don't
6405 compare SCM values with !=.
6406
5cb22e96
DH
64072003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6408
6409 * eval.c, eval.h, evalext.c, evalext.h (scm_sym_setter,
6410 scm_m_generalized_set_x, scm_init_evalext): Move the declaration
6411 and definition of the memoizer for the generalized set! macro from
6412 evalext.[ch] to eval.[ch]. Use the SCM_SYNTAX snarfer macro to
6413 define the macro object.
6414
6415 * eval.c, eval.h (s_set_x, scm_s_set_x, scm_m_set_x,
6416 scm_m_generalized_set_x): Since now scm_s_set_x is only used in
6417 eval.c, it is made static and renamed to s_set_x.
6418
6419 * evalext.c (scm_defined_p, scm_m_undefine): Prefer !SCM_<foo>
6420 over SCM_N<foo>.
6421
a44a9715
DH
64222003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6423
6424 * eval.c, root.h (scm_undefineds, SCM_NUM_PROTECTS, undefineds,
6425 scm_init_eval): Made scm_undefineds static in eval.c, renamed it
6426 to undefineds and registered the object as a permanent object.
6427
6428 * eval.c, eval.h (scm_f_apply, scm_init_eval): Made scm_f_apply
6429 static in eval.c, renamed it to f_apply and registered the object
6430 as a permanent object.
6431
1b43d24c
DH
64322003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6433
5cb22e96 6434 * eval.c (SCM_BIT7, SCM_BIT8, unmemocopy, SCM_CEVAL): Renamed
1b43d24c
DH
6435 file-local macro SCM_BIT8 to SCM_BIT7, which is more appropriate.
6436
aec16f99
DH
64372003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6438
6439 * numbers.c (scm_logtest): Fixed argument bug in the call to
6440 mpz_and, which showed up when compiling with SCM_DEBUG defined.
6441
f96460ce
DH
64422003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6443
6444 * gc-card.c (scm_i_sweep_card, scm_i_init_card_freelist): Fixed
6445 type errors that showed up when compiling with SCM_DEBUG defined.
6446
d0f6ceb8
DH
64472003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6448
6449 * continuations.c, continuations.h, eval.c, eval.h, extensions.c,
6450 gsubr.c, guile.c, init.c, read.c, root.c, root.h, stackchk.h,
6451 throw.c: Removed uses of DEBUG_EXTENSIONS and DYNAMIC_LINKING to
6452 fix compile errors with --disable-deprecated.
6453
19a7a089
RB
64542003-04-17 Rob Browning <rlb@defaultvalue.org>
6455
6456 * numbers.c (scm_integer_expt): fix case where we were declaring
6457 vars in the middle of a statement block. Thanks to Thamer
6458 Al-Harbash.
6459
47cd67db
MD
64602003-04-17 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6461
0fd7dcd3
MD
6462 * goops.c (TEST_CHANGE_CLASS): Update variable class after class
6463 change.
6464
47cd67db
MD
6465 * eq.c (scm_eqv_p): Turned into a primitive generic.
6466
3b8b889c
RB
64672003-04-16 Rob Browning <rlb@defaultvalue.org>
6468
312006bb
RB
6469 * gc_os_dep.c: Added patch for UnixWare and OpenUNIX support.
6470 Thanks to Boyd Gerber.
6471 Added check for __arm__ in addition to arm for LINUX and copied
6472 __s390__ defines from upstream libgc. Thanks to James Treacy for
6473 reporting the problems.
c7ef2ea1 6474
3b8b889c
RB
6475 * numbers.c (PTRDIFF_MIN): use SCM_CHAR_BIT.
6476
6477 * socket.c: use SCM_CHAR_BIT.
6478
6479 * random.c (scm_c_random_bignum): use SCM_CHAR_BIT.
6480
6481 * num2integral.i.c (NUM2INTEGRAL): use SCM_CHAR_BIT.
6482
43261b39
MD
64832003-04-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6484
6485 * feature.c (scm_init_feature): Always add threads feature.
6486
58241edc
MD
64872003-04-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6488
6489 * goops.c (scm_sys_fast_slot_ref): Use SCM_SLOT instead of
6490 scm_at_assert_bound_ref. (We don't want the unbound check. See
6491 oop/goops/active-slot.scm.)
6492
94e91275
RB
64932003-04-14 Rob Browning <rlb@defaultvalue.org>
6494
6495 * tags.h: scm_t_intptr should have been intptr_t.
6496
3071ea27
RB
64972003-04-13 Rob Browning <rlb@defaultvalue.org>
6498
6499 * __scm.h (SCM_FLUSH_REGISTER_WINDOWS): don't just rely on "sparc"
6500 test. Instead use
6501 #if defined (sparc) || defined (__sparc__) || defined (__sparc)
6502 as gc_os_dep.c suggests is appropriate.
6503
6504 * goops.c (prep_hashsets): make static to match prototype.
6505 (scm_sym_args): SCM_SYMBOL -> SCM_GLOBAL_SYMBOL. Thanks to Albert
6506 Chin.
6507
6508 * c-tokenize.lex: remove trailing comma from enum. Thanks to
6509 Albert Chin.
6510
6511 * gc_os_dep.c: add NetBSD powerpc config info. Thanks to Thomas
6512 Klausner.
6513
21ab2aeb
MD
65142003-04-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6515
6516 * goops.c (scm_sys_prep_layout_x): Instance allocation is now
6517 indicated through extra fields in getters-n-setters.
6518 (scm_add_slot): Adapted to new format of getters_n_setters slot.
6519 (Thanks to Andy Wingo.)
6520
dff96e95
HWN
65212003-02-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6522
6523 * gc-segment.c: add comment
6524
07921c76
RB
65252003-04-07 Rob Browning <rlb@defaultvalue.org>
6526
b5331f10
RB
6527 * debug.h: change "id" arg name to "info_id" to avoid objective-c
6528 clash.
6529
07921c76
RB
6530 * num2integral.i.c (NUM2INTEGRAL): fix bug pointed out by Mikael
6531 and add regression test to standalone/.
6532
65332003-04-06 Rob Browning <rlb@defaultvalue.org>
6534
6535 * strings.c (scm_mem2string): use memcpy rather than by-hand loop.
6536 Thanks to Dale P. Smith.
6537
6538 * random.c: #include gmp.h.
6539 (scm_c_random_bignum): normalize result on return.
6540
6541 * init.c: #include gmp.h.
6542
6543 * numbers.h: remove the gmp.h #include (not needed now).
6544
6545 * posix.h: change occurences of "id" to something else so we don't
6546 cause trouble when included via objective-c (can't hurt, might
6547 help). Still have usage in debug.h, though.
6548
938f6b7c
MD
65492003-04-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6550
372691d8
MD
6551 * random.c (scm_c_random_bignum): Don't generate a random number
6552 equal to m (the second argument of scm_c_random_bignum); only
6553 generate numbers in the range 0 <= r < m.
c5f268f8
MD
6554 (scm_c_default_rstate): Use SCM_VARIABLE_REF to access
6555 scm_var_random_state.
372691d8 6556
938f6b7c
MD
6557 * num2integral.i.c (INTEGRAL2BIG): Put negation of n inside then
6558 clause.
6559
6cdb8c3f
RB
65602003-04-05 Rob Browning <rlb@defaultvalue.org>
6561
938f6b7c 6562 * modules.c (scm_module_import_interface): move declaration of
6cdb8c3f
RB
6563 uses before any code.
6564
15635be5
MD
65652003-04-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6566
1ecfd013
MD
6567 * Makefile.am (scmconfig.h): Look for config.h in top_builddir,
6568 not top_srcdir.
6569
15635be5
MD
6570 * hashtab.c (rehash_after_gc): Clear to_rehash list before
6571 processing it in order to avoid an infinite loop.
6572
6573 * print.c (scm_prin1): Remember old state of pstate->writingp.
6574
73be1d9e
MV
65752003-04-05 Marius Vollmer <mvo@zagadka.de>
6576
6577 * Changed license terms to the plain LGPL thru-out.
6578
ad815c06
RB
65792003-04-04 Rob Browning <rlb@defaultvalue.org>
6580
6581 * socket.c (FLIPCPY_NET_HOST_128): new macro.
6582 (ipv6_net_to_num, ipv6_num_to_net, bignum_in_ipv6_range_p):
6583 rewrite to handle GMP bignums.
6584
6585
6586 * random.c (scm_c_random_bignum): rewrite to handle GMP bignums.
6587
6588 * ports.c (scm_getc): minor tweak.
6589
6590 * numbers.h: remove SCM_BIGDIG conditionals, reorganize, and
6591 rewrite to handle GMP bignums.
6592
6593 * numbers.c: rewrite *many* functions to handle GMP bignums.
6594
6595 * num2integral.i.c (NUM2INTEGRAL, INTEGRAL2NUM, INTEGRAL2BIG):
6596 handle GMP bignums.
6597
6598 * num2float.i.c (NUM2FLOAT): handle GMP bignums.
6599
6600 * init.c (check_config): remove SCM_BIGDIG conditionals.
6601 (scm_init_guile_1): test to make sure mpz_t fits in a double_cell.
6602
6603 * gc-card.c ("sweep_card"): handle new mpz_t bignums.
6604
6605 * eval.c: remove SCM_BIGDIG conditionals.
6606
6607 * eq.c (s_scm_eqv_p): scm_i_bigcomp -> scm_i_bigcmp.
6608
6cdb8c3f
RB
66092003-03-31 Rob Browning <rlb@defaultvalue.org>
6610
6611 * Makefile.am (scmconfig.h): change srcdir to builddir. (Thanks
6612 to Kevin Ryde.)
6613
66142003-03-27 Rob Browning <rlb@defaultvalue.org>
6615
6616 * threads.h: fix various preprocessor usages of new public
6617 symbols to expect 0 or 1 values rather than 1 or undefined.
6618 i.e. change #ifdef to #if, etc.
6619
6620 * threads.c: fix various preprocessor usages of new public
6621 symbols to expect 0 or 1 values rather than 1 or undefined.
6622 i.e. change #ifdef to #if, etc.
6623
6624 * tags.h: fix various preprocessor usages of new public
6625 symbols to expect 0 or 1 values rather than 1 or undefined.
6626 i.e. change #ifdef to #if, etc.
6627
6628 * stacks.c: fix various preprocessor usages of new public
6629 symbols to expect 0 or 1 values rather than 1 or undefined.
6630 i.e. change #ifdef to #if, etc.
6631
6632 * stackchk.h: fix various preprocessor usages of new public
6633 symbols to expect 0 or 1 values rather than 1 or undefined.
6634 i.e. change #ifdef to #if, etc.
6635
6636 * stackchk.c: fix various preprocessor usages of new public
6637 symbols to expect 0 or 1 values rather than 1 or undefined.
6638 i.e. change #ifdef to #if, etc.
6639
6640 * sort.c: fix various preprocessor usages of new public
6641 symbols to expect 0 or 1 values rather than 1 or undefined.
6642 i.e. change #ifdef to #if, etc.
6643
6644 * read.c: fix various preprocessor usages of new public
6645 symbols to expect 0 or 1 values rather than 1 or undefined.
6646 i.e. change #ifdef to #if, etc.
6647
6648 * random.c: fix various preprocessor usages of new public
6649 symbols to expect 0 or 1 values rather than 1 or undefined.
6650 i.e. change #ifdef to #if, etc.
6651
6652 * print.c: fix various preprocessor usages of new public
6653 symbols to expect 0 or 1 values rather than 1 or undefined.
6654 i.e. change #ifdef to #if, etc.
6655
6656 * objects.c: fix various preprocessor usages of new public
6657 symbols to expect 0 or 1 values rather than 1 or undefined.
6658 i.e. change #ifdef to #if, etc.
6659
6660 * numbers.h: fix various preprocessor usages of new public
6661 symbols to expect 0 or 1 values rather than 1 or undefined.
6662 i.e. change #ifdef to #if, etc.
6663
6664 * null-threads.c: fix various preprocessor usages of new public
6665 symbols to expect 0 or 1 values rather than 1 or undefined.
6666 i.e. change #ifdef to #if, etc.
6667
6668 * lang.c: fix various preprocessor usages of new public
6669 symbols to expect 0 or 1 values rather than 1 or undefined.
6670 i.e. change #ifdef to #if, etc.
6671
6672 * lang.h: fix various preprocessor usages of new public
6673 symbols to expect 0 or 1 values rather than 1 or undefined.
6674 i.e. change #ifdef to #if, etc.
6675
6676 * iselect.h: fix various preprocessor usages of new public
6677 symbols to expect 0 or 1 values rather than 1 or undefined.
6678 i.e. change #ifdef to #if, etc.
6679
6680 * init.c: fix various preprocessor usages of new public
6681 symbols to expect 0 or 1 values rather than 1 or undefined.
6682 i.e. change #ifdef to #if, etc.
6683
6684 * gh_data.c: fix various preprocessor usages of new public
6685 symbols to expect 0 or 1 values rather than 1 or undefined.
6686 i.e. change #ifdef to #if, etc.
6687
6688 * gh.h: fix various preprocessor usages of new public
6689 symbols to expect 0 or 1 values rather than 1 or undefined.
6690 i.e. change #ifdef to #if, etc.
6691
6692 * gen-scmconfig.c: change most new public symbols to be defined to
6693 0 or 1 rather than being either 1 or undefined.
6694
6695 * gc_os_dep.c: fix various preprocessor usages of new public
6696 symbols to expect 0 or 1 values rather than 1 or undefined.
6697 i.e. change #ifdef to #if, etc.
6698 (STACK_GROWS_DOWN): define to 0 or 1 rather than 1 or undef.
6699
6700 * gc.h: fix various preprocessor usages of new public
6701 symbols to expect 0 or 1 values rather than 1 or undefined.
6702 i.e. change #ifdef to #if, etc.
6703
6704 * gc-card.c: fix various preprocessor usages of new public
6705 symbols to expect 0 or 1 values rather than 1 or undefined.
6706 i.e. change #ifdef to #if, etc.
6707
6708 * gc-mark.c: fix various preprocessor usages of new public
6709 symbols to expect 0 or 1 values rather than 1 or undefined.
6710 i.e. change #ifdef to #if, etc.
6711
6712 * feature.c: fix various preprocessor usages of new public
6713 symbols to expect 0 or 1 values rather than 1 or undefined.
6714 i.e. change #ifdef to #if, etc.
6715
6716 * evalext.c: fix various preprocessor usages of new public
6717 symbols to expect 0 or 1 values rather than 1 or undefined.
6718 i.e. change #ifdef to #if, etc.
6719
6720 * eval.h: fix various preprocessor usages of new public
6721 symbols to expect 0 or 1 values rather than 1 or undefined.
6722 i.e. change #ifdef to #if, etc.
6723
6724 * eval.c: fix various preprocessor usages of new public
6725 symbols to expect 0 or 1 values rather than 1 or undefined.
6726 i.e. change #ifdef to #if, etc.
6727
6728 * eq.c: fix various preprocessor usages of new public
6729 symbols to expect 0 or 1 values rather than 1 or undefined.
6730 i.e. change #ifdef to #if, etc.
6731
6732 * coop.c: fix various preprocessor usages of new public
6733 symbols to expect 0 or 1 values rather than 1 or undefined.
6734 i.e. change #ifdef to #if, etc.
6735
6736 * coop-threads.c: fix various preprocessor usages of new public
6737 symbols to expect 0 or 1 values rather than 1 or undefined.
6738 i.e. change #ifdef to #if, etc.
6739
6740 * coop-pthreads.c: fix various preprocessor usages of new public
6741 symbols to expect 0 or 1 values rather than 1 or undefined.
6742 i.e. change #ifdef to #if, etc.
6743
6744 * coop-defs.h: fix various preprocessor usages of new public
6745 symbols to expect 0 or 1 values rather than 1 or undefined.
6746 i.e. change #ifdef to #if, etc.
6747
6748 * convert.i.c: fix various preprocessor usages of new public
6749 symbols to expect 0 or 1 values rather than 1 or undefined.
6750 i.e. change #ifdef to #if, etc.
6751
6752 * continuations.c: fix various preprocessor usages of new public
6753 symbols to expect 0 or 1 values rather than 1 or undefined.
6754 i.e. change #ifdef to #if, etc.
6755
6756 * _scm.h: fix various preprocessor usages of new public symbols to
6757 expect 0 or 1 values rather than 1 or undefined. i.e. change
6758 #ifdef to #if, etc.
6759
d11d697a
MV
67602003-03-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6761
9686f86d
MV
6762 * init.c (scm_init_guile_1): Call scm_i_init_deprecated.
6763
6764 * deprecated.c, deprecated.h: New files, to collect deprecated
6765 things in one place.
6766 * Makefile.am: Added them in all the right places.
6767
d11d697a
MV
6768 * Makefile.am (EXTRA_DIST): Added "scmconfig.h.top".
6769 (scmconfig.h): Get "scmconfig.h.top" from $(srcdir) so that VPATH
6770 builds work.
9686f86d
MV
6771 (DOT_X_FILES): Removed "iselect.x".
6772 (DOT_DOC_FILES): Removed "iselect.doc".
d11d697a 6773
e3c0c3b9
RB
67742003-03-25 Rob Browning <rlb@defaultvalue.org>
6775
6776 * win32-socket.h: #include "libguile/__scm.h". Replace usage of
6777 HAVE_WINSOCK2_H with SCM_HAVE_WINSOCK2_H.
6778
6779 * win32-socket.c: #include <config.h> if HAVE_CONFIG_H.
6780
6781 * vports.c: #include <config.h> if HAVE_CONFIG_H.
6782
6783 * unif.c: #include <config.h> if HAVE_CONFIG_H. Replace usage of
6784 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6785
6786 * threads.h: replace usage of struct timespect with
6787 scm_t_timespec. Replace usage of USE_PTHREAD_THREADS with
6788 SCM_USE_PTHREAD_THREADS. Remove typedef for struct timespec in
6789 favor of scm_t_timespec from scmconfig.h.
6790
6791 * threads.c: move libguile/_scm.h include to the top so we pick up
6792 any critical defines like _GNU_SOURCE early. Replace usage of
6793 struct timespect with scm_t_timespec. Replace usage of
6794 STACK_GROWS_UP with SCM_STACK_GROWS_UP. Replace usage of
6795 USE_PTHREAD_THREADS with SCM_USE_PTHREAD_THREADS.
6796
6797 * threads-plugin.h: replace usage of struct timespect with
6798 scm_t_timespec.
6799
6800 * threads-plugin.c: #include <config.h> if HAVE_CONFIG_H. Replace
6801 usage of struct timespect with scm_t_timespec.
6802
6803 * tags.h: move HAVE_STDINT_H handling to scmconfig.h. Move
6804 HAVE_INTTYPES_H handling to scmconfig.h. #include
6805 "libguile/__scm.h". Rework handling for scm_t_bits,
6806 scm_t_signed_bits, SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
6807 SCM_T_SIGNED_BITS_MIN, and SIZEOF_SCM_T_BITS to use scm_t_intptr,
6808 scm_t_uintptr, SCM_SIZEOF_INTPTR_T, and SCM_SIZEOF_UINTPTR_T, and
6809 SCM_SIZEOF_UNSIGNED_LONG. Rename usage of HAVE_ARRAYS to
6810 SCM_HAVE_ARRAYS.
6811
6812 * symbols.c: #include <config.h> if HAVE_CONFIG_H.
6813
6814 * struct.c: #include <config.h> if HAVE_CONFIG_H.
6815
6816 * strports.c: #include <config.h> if HAVE_CONFIG_H.
6817
6818 * strop.c: #include <config.h> if HAVE_CONFIG_H.
6819
6820 * stime.h: move handling of time related headers to scmconfig.h.
6821
6822 * stime.c: #include <config.h> if HAVE_CONFIG_H.
6823
6824 * stacks.c: replace usage of STACK_GROWS_UP with
6825 SCM_STACK_GROWS_UP.
6826
6827 * sort.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
6828 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6829
6830 * socket.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
6831 of uint32 and HAVE_UINT_32 with scm_t_int32.
6832
6833 * smob.c: #include <config.h> if HAVE_CONFIG_H.
6834
6835 * simpos.c: #include <config.h> if HAVE_CONFIG_H.
6836
6837 * script.c: #include <config.h> if HAVE_CONFIG_H.
6838
6839 * scmsigs.c: #include <config.h> if HAVE_CONFIG_H.
6840
6841 * scmconfig.h.top: new file -- preamble for scmconfig.h.
6842
6843 * rw.c: #include <config.h> if HAVE_CONFIG_H.
6844
6845 * regex-posix.c: #include <config.h> if HAVE_CONFIG_H.
6846
6847 * read.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6848
6849 * rdelim.c: #include <config.h> if HAVE_CONFIG_H.
6850
6851 * random.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
6852 of LONG32, LONG64, SIZEOF_LONG, and HAVE_LONG_LONGS with
6853 scm_t_int32, scm_t_int64, and SCM_HAVE_T_INT64. Rename usage of
6854 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6855
6856 * ramap.c: replace usage of HAVE_LONG_LONGS with
6857 "SCM_SIZEOF_LONG_LONG != 0".
6858
6859 * putenv.c: #include <config.h> if HAVE_CONFIG_H. #include
6860 "libguile/scmconfig.h".
6861
6862 * pthread-threads.c: #include <config.h> if HAVE_CONFIG_H.
6863
6864 * print.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6865 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6866
6867 * posix.c: #include <config.h> if HAVE_CONFIG_H.
6868
6869 * ports.c: #include <config.h> if HAVE_CONFIG_H.
6870
6871 * objects.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6872
6873 * numbers.h: replace usage of HAVE_FLOATINGPOINT_H with
6874 SCM_HAVE_FLOATINGPOINT_H. Replace usage of HAVE_IEEEFP_H with
6875 SCM_HAVE_IEEEFP_H. Replace usage of HAVE_NAN_H with
6876 SCM_HAVE_NAN_H. Replace usage of STDC_HEADERS with
6877 SCM_HAVE_STDC_HEADERS. Replace usage of ptrdiff_t with
6878 scm_t_ptrdiff. Replace usage of HAVE_LONG_LONGS with
6879 "SCM_SIZEOF_LONG_LONG != 0".
6880
6881 * numbers.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
6882 of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0". Replace
6883 usage of ptrdiff_t with scm_t_ptrdiff. Replace usage of
6884 SIZEOF_PTRDIFF_T with SCM_SIZEOF_SCM_T_PTRDIFF.
6885
6886 * num2integral.i.c: #include <config.h> if HAVE_CONFIG_H.
6887
6888 * null-threads.h: replace usage of struct timespect with
6889 scm_t_timespec.
6890
6891 * net_db.c: #include <config.h> if HAVE_CONFIG_H.
6892
6893 * mkstemp.c: #include <config.h> if HAVE_CONFIG_H. #include
6894 "libguile/__scm.h". Remove definition of gcc_uint64_t in favor of
6895 scm_t_uint64 and rename usages.
6896
6897 * mallocs.c: #include <config.h> if HAVE_CONFIG_H.
6898
6899 * load.c: #include <config.h> if HAVE_CONFIG_H.
6900
6901 * iselect.h: move handling of time related headers to scmconfig.h.
6902 Rename usage of HAVE_SYS_SELECT_H to SCM_HAVE_SYS_SELECT_H.
6903 Rename usage of HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Rename
6904 usage of USE_COOP_THREADS to SCM_USE_COOP_THREADS.
6905
6906 * iselect.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6907 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
6908 USE_NULL_THREADS to SCM_USE_NULL_THREADS.
6909
6910 * ioext.c: #include <config.h> if HAVE_CONFIG_H.
6911
6912 * inline.h: #include "libguile/__scm.h" at the top. Change code
6913 to use SCM_C_INLINE and SCM_INLINE_C_INCLUDINT_INLINE_H to decide
6914 what to do instead of creating a new public #define. Rename usage
6915 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
6916 USE_NULL_THREADS to SCM_USE_NULL_THREADS. Rename usage of
6917 USE_COPT_THREADS to SCM_USE_COPT_THREADS.
6918
6919 * inline.c: rearrange handling -- now we just #define
6920 SCM_INLINE_C_INCLUDING_INLINE_H to 1 and #include
6921 "libguile/inline.h". scmconfig.h will define SCM_C_INLINE as
6922 appropriate, and we use that in inline.h along with the above
6923 define to determine how to respond.
6924
6925 * init.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
6926 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6927
6928 * guile.c: #include <config.h> if HAVE_CONFIG_H.
6929
6930 * gh_data.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6931 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6932
6933 * gh.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6934
6935 * gen-scmconfig.h.in: new file -- see gen-scmconfig.c for details.
6936
6937 * gen-scmconfig.c: new file -- see comments in file for details.
6938
6939 * gdbinit.c: #include <config.h> if HAVE_CONFIG_H.
6940
6941 * gc_os_dep.c: #include <config.h> if HAVE_CONFIG_H. Replace
6942 usage of STACK_GROWS_UP with SCM_STACK_GROWS_UP.
6943
6944 * gc.h: replace usage of SIZEOF_LONG with
6945 SCM_SIZEOF_UNSIGNED_LONG. Replace usage of USE_PTHREAD_THREADS
6946 with SCM_USE_PTHREAD_THREADS. Remove SCM_SIZEOF_LONG definition
6947 since we handle that in scmconfig.h now.
6948
6949 * gc.c: #include <config.h> if HAVE_CONFIG_H.
6950
6951 * gc-mark.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6952 of HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of
6953 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6954
6955 * gc-malloc.c: #include <config.h> if HAVE_CONFIG_H.
6956
6957 * gc-card.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6958 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6959
6960 * fports.c: #include <config.h> if HAVE_CONFIG_H.
6961
6962 * filesys.c: #include <config.h> if HAVE_CONFIG_H.
6963
6964 * feature.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6965 of USE_NULL_THREADS to SCM_USE_NULL_THREADS.
6966
6967 * extensions.c: #include <config.h> if HAVE_CONFIG_H.
6968
6969 * evalext.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6970 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6971
6972 * eval.c: #include <config.h> if HAVE_CONFIG_H. #include
6973 "libguile/__scm.h" rather than scmconfig.h. Rename usage of
6974 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
6975 with "SCM_SIZEOF_LONG_LONG != 0".
6976
6977 * error.c: #include <config.h> if HAVE_CONFIG_H.
6978
6979 * eq.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
6980 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
6981 with "SCM_SIZEOF_LONG_LONG != 0".
6982
6983 * deprecation.c: #include <config.h> if HAVE_CONFIG_H.
6984
6985 * coop.c: replace usage of struct timespect with scm_t_timespec.
6986 #include <config.h> if HAVE_CONFIG_H.
6987
6988 * coop-threads.c: #include "libguile/_scm.h" early. Replace
6989 usage of struct timespect with scm_t_timespec. Replace usage of
6990 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
6991
6992 * coop-pthreads.c: #include "libguile/_scm.h" early. Replace
6993 usage of struct timespect with scm_t_timespec. Replace usage of
6994 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
6995
6996 * coop-defs.h: move handling of time related headers to
6997 scmconfig.h. Add #include "libguile/__scm.h". Rename usage of
6998 HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Replace usage of struct
6999 timespect with scm_t_timespec.
7000
7001 * convert.i.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7002
7003 * convert.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7004
7005 * convert.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7006 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7007
7008 * continuations.c: move libguile/_scm.h include to the top so we
7009 pick up any critical defines like _GNU_SOURCE early.
7010
7011 * backtrace.c: #include <config.h> if HAVE_CONFIG_H.
7012
7013 * async.c: #include <config.h> if HAVE_CONFIG_H.
7014
7015 * alloca.c: #include <config.h> if HAVE_CONFIG_H.
7016
7017 * _scm.h: #include <config.h> if HAVE_CONFIG_H.
7018 Rename usage of USE_PTHREAD_THREADS to SCM_USE_PTHREAD_THREADS.
7019
7020 * __scm.h: move libguile/scmconfig.h include up to the top, so
7021 we're sure to pick up any critical defines like _GNU_SOURCE early.
7022 #include <limits.h> removed in favor of scmconfig.h inclusion when
7023 appropriate. STDC_HEADERS based inclusion of stdlib.h,
7024 sys/types.h, stddef.h, and sys/stdtypes.h removed in favor of
7025 scmconfig.h inclusion when appropriate. Various Win32 related
7026 definitions removed in favor of scmconfig.h inclusion when
7027 appropriate.
7028 (HAVE_UINTPTR_T): definition removed (see NEWS).
7029 (SIZEOF_PTRDIFF_T): definition removed (see NEWS).
7030 (HAVE_LONG_LONGS): definition removed (see NEWS).
7031 (HAVE_LONG_LONG): definition removed (see NEWS).
7032 (HAVE_PTRDIFF_T): definition removed (see NEWS).
7033
7034 * Makefile.am: scmconfig.h is now generated by building and
7035 running gen-scmconfig.h and capturing its output. gen-scmconfig
7036 uses config.h and the configure.in generated gen-scmconfig.h to
7037 decide what to output. See gen-scmconfig.c for details.
7038 (noinst_PROGRAMS): add gen-scmconfig.
7039 (gen_scmconfig_SOURCES): new variable.
7040 (gen-scmconfig.$(OBJEXT)): new target - be careful to handle
7041 cross-compiling right.
7042 (scmconfig.h): build scmconfig.h from gen-scmconfig's output.
7043 (BUILT_SOURCES): add scmconfig.h.
7044
25e0bf97
MV
70452003-03-19 Marius Vollmer <mvo@zagadka.de>
7046
7047 * gc_os_dep.c: Added defines for sparc-unknown-netbsdelf1.5 from
7048 Adrian Bunk. Thanks!
7049
74b6d6e4
MD
70502003-03-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7051
7052 * goops.c (make_class_from_template): New fourth arg:
7053 applicablep.
7054 (scm_class_extended_generic_with_setter, scm_class_self): Fixed
7055 cpls.
7056
7057 * smob.c (scm_set_smob_apply): Call scm_i_inherit_applicable.
7058
7059 * goops.c, objects.c, objects.h (scm_make_extended_class): New
7060 second arg: applicablep.
7061 (scm_i_inherit_applicable): New function.
7062
7063 * goops.c, goops.h (scm_class_applicable,
7064 scm_class_extended_accessor): New classes.
7065
5c9e7dad
DH
70662003-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
7067
7068 * procs.c (scm_procedure_documentation): Removed redundant
7069 SCM_NIMP test and replaced other calls to SCM_IMP by more explicit
7070 predicates.
7071
f8af5c6d
MD
70722003-03-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7073
c614a00b
MD
7074 * list.c, list.h (scm_filter, scm_filter_x): New functions.
7075
109c2c9f
MD
7076 * modules.c (scm_module_import_interface): New function.
7077
f8af5c6d
MD
7078 * goops.c, goops.h (scm_class_accessor_method): Renamed from
7079 scm_class_accessor.
7080 (scm_class_accessor): New class.
7081
a48d60b1
MD
70822003-03-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7083
7084 * goops.c (scm_primitive_generic_generic): Enable primitive
7085 generic if not enabled.
7086 (scm_sys_goops_loaded): Setup unextended primitive generics.
7087
7088 * goops.c, goops.h (scm_c_extend_primitive_generic): New function.
7089
7090 * snarf.h (SCM_PRIMITIVE_GENERIC, SCM_PRIMITIVE_GENERIC_1): New
7091 snarf macros.
7092
7093 * numbers.c (scm_abs): Use SCM_PRIMITIVE_GENERIC. (This is only a
7094 testing example. All uses of SCM_GPROC should be converted.)
7095
7096 * procprop.c (scm_stand_in_scm_proc): Use scm_assq instead of
7097 scm_assoc.
7098
7099 * eq.c (scm_equal_p): Turned into a primitive generic.
7100
84edc049
RB
71012003-02-27 Rob Browning <rlb@defaultvalue.org>
7102
7103 * Makefile.am (scmconfig.h): new target -- generate file from
7104 ../config.h.
7105 (modinclude_HEADERS): remove version.h.
7106 (nodist_modinclude_HEADERS): add version.h.
7107
ea5c9285
MD
71082003-02-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7109
b4a1358c
MD
7110 This fixes a serious GC bug, introduced during the latest
7111 reorganization of the GC, which disabled freeing of structs and
7112 GOOPS objects:
7113
7114 * struct.c (scm_struct_prehistory): Init scm_i_structs_to_free to
7115 SCM_EOL.
53af8255
MD
7116 (scm_struct_prehistory): Move scm_free_structs to
7117 scm_before_mark_c_hook.
ea5c9285 7118
b4a1358c
MD
7119 * gc-card.c (sweep_card): Check that we haven't swept structs on
7120 this card before. That can happen if scm_i_sweep_all_segments has
7121 been called from some other place than scm_igc.
7122
c35738c1
MD
71232003-02-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7124
231a4ea8
MD
7125 * environments.c (DEFAULT_OBARRAY_SIZE): Changed from 137 to 31
7126 (since hash tables now adapt their size).
7127
7128 * modules.c (scm_modules_prehistory): Changed from 2001 to 1533
7129 (current number of prehistory bindings; hashtable code will select
7130 a prime which is greater than this value).
7131
7132 * symbols.c (scm_symbols_prehistory): Changed from 1009 to 2139
7133 (current number of initial symbols).
7134
7135 * properties.c (scm_init_properties): Don't specify size of
7136 scm_properties_whash.
7137
7138 * objprop.c (scm_init_objprop): Don't specify size of
7139 scm_object_whash.
7140
7141 * keywords.c (scm_init_keywords): Don't specify a hash table size.
7142
c35738c1
MD
7143 * hooks.c (scm_c_hook_add): Fixed bug in append mode.
7144
7145 The following changes introduce the use of resizable hash tables
7146 throughout Guile. It also renames the old *-hash-table* functions
7147 to *-alist-vector* and places them, together with the rest of the
7148 weak vector support, in the module (ice-9 weak-vector). We should
7149 probably introduce a new, better, API for weak references, for
7150 example "weak pairs" a la MIT-Scheme. (In Chez scheme, they even
7151 look like and are used like ordinary pairs.)
7152
7153 * environments.c (obarray_enter, obarray_retrieve, obarray_remove,
7154 leaf_environment_fold, obarray_remove_all): Use hashtable
7155 accessors.
7156
7157 * gc.c (scm_init_storage): Moved hook initialization to
7158 scm_storage_prehistory.
7159 (scm_storage_prehistory): New function.
7160 (scm_igc): Added commentary about placement of
7161 scm_after_sweep_c_hook.
7162
7163 * gc-mark.c (scm_mark_all): Use hashtable accessors.
7164 (scm_gc_mark_dependencies): Use SCM_WVECT_WEAK_KEY_P and
7165 SCM_WVECT_WEAK_VALUE_P.
7166
7167 * hashtab.c, hashtab.h (scm_hash_for_each, scm_hash_map): New
7168 functions.
7169 (scm_vector_to_hash_table, scm_c_make_resizing_hash_table):
7170 Removed.
7171 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table,
7172 scm_make_doubly_weak_hash_table): Moved here from weaks.c.
7173
7174 * init.c (scm_init_guile_1): Removed call to scm_init_weaks; Added
7175 calls to scm_storage_prehistory and scm_hashtab_prehistory.
7176
7177 * modules.c (module-reverse-lookup): Use hashtable accessors.
7178
7179 * symbols.c, symbols.h (scm_i_hash_symbol): New function.
7180
7181 * weaks.c, weaks.h (scm_make_weak_key_alist_vector,
7182 scm_make_weak_value_alist_vector,
7183 scm_make_doubly_weak_alist_vector): New functions.
7184
7185 * weaks.c (scm_init_weaks_builtins): New function.
7186
7187 * weaks.h (SCM_WVECTF_WEAK_KEY, SCM_WVECTF_WEAK_VALUE,
7188 SCM_WVECTF_NOSCAN, SCM_WVECT_WEAK_KEY_P, SCM_WVECT_WEAK_VALUE_P,
7189 SCM_WVECT_NOSCAN_P): New macros.
7190
7191 * weaks.c (scm_scan_weak_vectors): Use SCM_WVECT_WEAK_KEY_P
7192 and SCM_WVECT_WEAK_VALUE_P.
7193
7194 * weaks.c, weaks.h (scm_i_allocate_weak_vector): Renamed from
7195 allocate_weak_vector and exported.
7196
0a4c1355
MD
71972003-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7198
7199 * hashtab.c: Undid thread safety. (We decided that it's better to
7200 let the user explicitly protect the tables (or not) according what
7201 is suitable for the application.)
7202
87ca11ff
MD
72032003-02-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7204
7205 * hashtab.c (scm_hash_fn_remove_x, scm_internal_hash_fold): Made
7206 thread safe and handle resizing tables.
7207 (scm_ihashx, scm_sloppy_assx, scm_delx_x): Removed
7208 SCM_DEFER/ALLOW_INTS.
7209
f59a096e
MD
72102003-02-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7211
7212 * hashtab.c (scm_vector_to_hash_table,
7213 scm_c_make_resizing_hash_table, scm_make_hash_table): New
7214 functions.
7215 (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x): Made thread
7216 safe and handle resizing tables.
7217
7218 * weaks.c (scm_make_weak_key_hash_table,
7219 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
7220 Size argument made optional. Return resizable table if not
7221 specified.
7222
4b612c5b
MD
72232003-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7224
7225 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
7226 Fixed formals tests for closures. (Thanks to Kevin Ryde.)
7227
b3d7f6df
MD
72282003-02-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7229
7230 * debug.c (scm_procedure_source): Handle all objects for which
7231 procedure? is #t. (Thanks to Bill Schottstaedt.)
7232
756414cf
MD
72332003-01-23 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7234
361d631f
MD
7235 * futures.c (mark_futures): Don't need to mark data of recycled
7236 futures.
7237 (scan_futures, cleanup_undead): Be smarter about marking
7238 futures---avoid unnecessary passes through future lists.
7239
756414cf
MD
7240 * futures.h, futures.c: New files; Introduced recycling of
7241 futures. For fine-grained threading this lifts performance to
7242 another level. We can now use parallelization in inner loops of
7243 Guile programs without impossible overhead.
7244
7245 * threads.h, threads.c: Moved futures to their own file.
7246
7247 * Makefile.am (libguile_la_SOURCES): Added futures.c.
7248 (DOT_X_FILES): Added futures.x.
7249 (DOT_DOC_FILES): Added futures.doc.
7250 (modinclude_HEADERS): Added futures.h.
7251
7252 * threads.c, threads.h (scm_i_create_thread): Renamed from
7253 create_thread and made global.
7254
7255 * futures.c (scm_make_future): New procedure.
7256
7257 * eval.c: #include "libguile/futures.h".
7258
7259 * init.c: #include "futures.h"
7260 (scm_init_guile_1): Call scm_init_futures.
7261
7262 * stime.c (SCM_TIME_UNITS_PER_SECOND): Renamed from CLKTCK.
7263
7264 * stime.h (SCM_TIME_UNITS_PER_SECOND): Definition moved here.
7265
7266 * eval.c, eval.h (scm_trampoline_0, scm_i_call_closure_0): New
7267 functions.
7268
7269 * eval.c (scm_trampoline_1): Fixed arguments test for closures.
7270
b4debead
MD
72712003-01-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7272
7273 * threads.c (create_thread): Don't unwind dynwind chain of parent
7274 thread before creation. Just start the new thread with an empty
7275 dynwind chain.
7276
93f26b7b
MD
72772003-01-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7278
7279 * evalext.c, evalext.h (scm_self_evaluating_p): New function.
7280
38d8927c
MD
72812003-01-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7282
41c96c32
MD
7283 * threads.c (scm_timed_wait_condition_variable): Support timed
7284 waiting also for simple condition variables.
7285
38d8927c
MD
7286 * goops.c (TEST_CHANGE_CLASS): Use scm_change_object_class instead
7287 of calling the procedure change-object-class.
7288
9cf5d9b7
MD
72892003-01-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7290
7291 * ramap.c (scm_ramapc): Typo in error message.
7292
bbf8d523
MD
72932003-01-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7294
b46fae00
MD
7295 * goops.c (scm_sys_prep_layout_x): Bugfix: Only create layout for
7296 slots with instance allocation.
7297
bbf8d523
MD
7298 * goops.c, goops.h (scm_class_extended_generic_with_setter): New
7299 class.
7300 (scm_compute_applicable_methods): Use scm_generic_function_methods.
7301
7302 * goops.c (scm_generic_function_methods): Support extended
7303 generic functions.
7304
ebf9b47c
MD
73052002-12-29 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7306
7307 * eval.c (unmemocopy): Bugfix: scm_sym_delay --> scm_sym_future.
2e37d6a2 7308 Thanks to Neil for pointing this out!
ebf9b47c 7309
14a9ba3f
NJ
73102002-12-29 Neil Jerram <neil@ossau.uklinux.net>
7311
7312 * lang.h: Remove declarations matching definitions removed from
7313 lang.c (just below).
7314
c6a040a8
NJ
73152002-12-28 Neil Jerram <neil@ossau.uklinux.net>
7316
6054d805
NJ
7317 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
7318 scm_m_while, scm_nil_eq): Remove definitions that were superfluous
7319 and already commented out.
7320
c6a040a8
NJ
7321 * read.h (scm_lreadparen), read.c (scm_lreadr, scm_read_token,
7322 scm_lreadparen): Support reading vectors with Elisp syntax if
7323 SCM_ELISP_READ_EXTENSIONS is defined. (SCM_ELISP_READ_EXTENSIONS
7324 is not currently defined, and there isn't even a configure switch
7325 to enable it yet.)
7326
3742c12f
MV
73272002-12-26 Marius Vollmer <mvo@zagadka.ping.de>
7328
7329 * Makefile.am (c-tokenize.o): Refer to source via $< so that vpath
7330 builds work.
7331 (EXTRA_DIST): Added version.h.in.
7332
fb50ef08
MD
73332002-12-21 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7334
7335 This change makes it possible for one thread to do lazy sweeping
7336 while other threads are running. Now only the mark phase need to
7337 have all threads asleep. We should look further into this issue.
7338 Presently, I've put the locking of scm_i_sweep_mutex at
7339 "conservative" places due to my current lack of knowledge about
7340 the garbage collector. Please feel free to restrict these regions
7341 further to allow for maximal parallelism!
7342
7343 * gc.c, gc.h (scm_i_sweep_mutex): New mutex.
7344
7345 * gc.c (scm_gc_for_newcell), gc-malloc.c (scm_realloc,
7346 scm_gc_register_collectable_memory): Substitute locking of
7347 scm_i_sweep_mutex for calls to scm_i_thread_put_to_sleep.
7348 (scm_igc): Lock sweep mutex here instead of in callers; Calls to
7349 scm_i_thread_put_to_sleep/scm_i_thread_wake_up used to demarkate
7350 the single-thread section (which now only contains the mark
7351 phase).
7352 (scm_gc): Don't lock sweeo mutex here since scm_igc locks it;
7353 Removed SCM_DEFER/ALLOW_INTS. Simply call scm_igc directly.
7354
7355 * threads.c (gc_section_mutex): Removed.
7356
9ed24633
MD
73572002-12-19 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7358
0d48aca5
MD
7359 * threads.c (create_thread): Clear parent field in root state in
7360 order not to unnecessarily remember dead threads.
7361
9ed24633
MD
7362 * eval.c (call_subr2o_1, call_lsubr2_2): New functions.
7363 (scm_trampoline_1, scm_trampoline_2): Use them.
7364
29717c89
MD
73652002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7366
7367 Partial introduction of real plugin interface.
7368
7369 * Makefile.am (modinclude_HEADERS): Added threads-plugin.h.
7370 (EXTRA_DIST): Added threads-plugin.c.
7371
7372 * threads-plugin.h, threads-plugin.c: New files.
7373
7374 * threads.h: #include "libguile/threads-plugin.h".
7375
7376 * threads.c: #include "libguile/threads-plugin.c".
7377
7378 * pthread-threads.c: Temporarily remove debugging functions.
7379
7380 * threads.c, threads.h (scm_yield): Added back.
7381
e29e0b09
MD
73822002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7383
7384 * threads.c (really_launch): Detach before unlocking
7385 thread_admin_mutex in order not to risk being joined.
7386 (scm_i_thread_put_to_sleep, scm_i_thread_wake_up): Keep
7387 thread_admin_mutex locked during GC.
7388
7389 * pthread-threads.c, pthread-threads.h: Improvements to debugging
7390 functions.
7391
0b6843b1 73922002-12-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
93cd4dcd 7393
6da2dfc4
MD
7394 * pthread-threads.c, pthread-threads.h (SCM_DEBUG_THREADS): Added
7395 support for debugging mutex operations.
7396
1b92fb6b
MD
7397 * threads.c (scm_thread): Removed filed joining_threads.
7398 (thread_print): Print thread number as well as address of thread
7399 structure.
0b6843b1
MD
7400 (scm_join_thread): Bugfix.
7401 (scm_lock_mutex, scm_try_mutex, scm_unlock_mutex,
7402 scm_timed_wait_condition_variable, scm_signal_condition_variable,
7403 scm_broadcast_condition_variable): Use the low-level API.
7404 (scm_all_threads): Return copy of thread list (to prevent
7405 unintended destruction).
7406 (scm_threads_prehistory): Initialize heap_mutex of fake thread.
1b92fb6b 7407
93cd4dcd
MD
7408 * pthread-threads.c, pthread-threads.h, threads.c: Fixes to
7409 pthread "native" recursive mutex support.
7410
2ff4f181
MD
74112002-12-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7412
28d52ebb
MD
7413 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): New definitions.
7414 Simply lock a thread C API recursive mutex.
7415 (SCM_NONREC_CRITICAL_SECTION_START,
7416 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
7417 SCM_REC_CRITICAL_SECTION_END): Removed.
7418
7419 * eval.c: Replaced SOURCE_SECTION_START / SOURCE_SECTION_END with
7420 direct calls to scm_rec_mutex_lock / unlock around the three calls
7421 to scm_m_expand_body.
7422
7423 * eval.c, eval.h (promise_free): New function.
7424 (scm_force): Rewritten; Now thread-safe; Removed
7425 SCM_DEFER/ALLOW_INTS.
7426
7427 * pthread-threads.h: Added partially implemented plugin interface
7428 for recursive mutexes. These are, for now, only intended to be
7429 used internally within the Guile implementation.
7430
7431 * pthread-threads.c: New file.
7432
7433 * threads.c: Conditionally #include "pthread-threads.c".
7434
7435 * eval.c, eval.h (scm_makprom, scm_force): Rewritten to be
7436 thread-safe;
7437
7438 * snarf.h (SCM_MUTEX, SCM_GLOBAL_MUTEX, SCM_REC_MUTEX,
7439 SCM_GLOBAL_REC_MUTEX): New macros.
7440
7441 * eval.c, threads.c, threads.h, snarf.h: Rewrote critical section
7442 macros---use mutexes instead.
7443
7444 * tags.h (SCM_IM_FUTURE): New tag.
7445
7446 * eval.c (scm_m_future): New primitive macro.
7447 (SCM_CEVAL): Support futures.
7448 (unmemocopy): Support unmemoization of futures.
7449
7450 * print.c (scm_isymnames): Name of future isym.
7451
2ff4f181
MD
7452 * version.c: Unmade some changes to my private copy that got
7453 committed by mistake.
7454
392d2833
MD
74552002-12-11 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7456
e200ddee
MD
7457 * gc-malloc.c, gc.h, init.c: Reverted gc-malloc change of
7458 2002-12-10.
7459
392d2833
MD
7460 * gc.c (scm_igc): Don't call scm_i_thread_invalidate_freelists.
7461
7462 * gc.c (scm_gc_sweep): Call it here instead, which is a more
7463 logical place.
7464
7465 * threads.c (create_thread): Remember root object until the handle
7466 of the new thread is on all_threads list.
7467
7468 * root.c (scm_make_root): Moved copying of fluids until after
7469 creation of root handle so that the fluids are GC protected. Also
7470 removed the critical section.
7471
c4c52ebe
MD
74722002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7473
960c408c
MD
7474 * gc-malloc.c, gc.h (scm_gc_malloc_prehistory): New function.
7475
3cdde9d6 7476 * gc-malloc.c (malloc_mutex): New mutex.
960c408c 7477 (scm_gc_malloc_prehistory): Initialize it.
3cdde9d6
MD
7478 (scm_realloc): Serialize call to realloc
7479 (scm_calloc): Same for calloc.
7480 Thanks to Wolfgang Jaehrling!
7481 (Now we have to make sure all calls to malloc/realloc are made
7482 through scm_malloc.)
7483
960c408c
MD
7484 * init.c (scm_init_guile_1): Call scm_gc_malloc_prehistory.
7485
c4c52ebe
MD
7486 * threads.c (really_launch): Release heap (to prevent deadlock).
7487 (create_thread): Release heap before locking thread admin mutex.
7488
b0dc3d71
MD
74892002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7490
7491 * threads.c (scm_i_thread_invalidate_freelists): New
7492 function.
7493
7494 * gc.c (scm_igc): Call scm_i_thread_invalidate_freelists.
7495
7496 * modules.c (scm_export): Inserted a return statement.
7497
06e80f59
HWN
74982002-12-10 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7499
7500 * modules.c (scm_export): new function
7501
7502 * gc-card.c: add a note about malloc()/free() overhead.
7503
a12611c3
MD
75042002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7505
7506 * Makefile.am (c-tokenize.$(OBJEXT)): Don't look for c-tokenize.c
7507 in srcdir.
7508
c7fabadf
MD
75092002-12-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7510
7511 These changes remove scm_ints_disabled (which hasn't has any
7512 effect in Guile for quite some time).
7513
7514 * async.c, error.h (scm_ints_disabled): Removed.
7515
7516 * gc.c (scm_gc_for_newcell), init.c (scm_init_guile_1),
7517 root.c (scm_internal_cwdr), gdbint.c (SCM_BEGIN_FOREIGN_BLOCK,
7518 SCM_END_FOREIGN_BLOCK): Don't touch scm_ints_disabled.
7519 (old_ints): Removed.
7520
7521 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Define as a recursive
7522 critical section.
7523 (SCM_REDEFER_INTS, SCM_ALLOW_INTS): Define as SCM_DEFER_INTS and
7524 SCM_ALLOW_INTS.
7525
9bc4701c
MD
75262002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7527
52340b65
MD
7528 * threads.c (scm_mutex_lock, scm_cond_wait, scm_cond_timedwait):
7529 Removed accidental #if 0 around these functions.
7530
9bc4701c
MD
7531 These changes are the start of support for preemptive
7532 multithreading. Marius and I have agreed that I commit this code
7533 into the repository although it isn't thoroughly tested and surely
7534 introduces many bugs. The bugs should only be exposed when using
7535 threads, though. Signalling and error handling for threads is
7536 very likely broken. Work on making the implementation cleaner and
7537 more efficient is needed.
7538
7539 * __scm.h (SCM_ALLOW_INTS_ONLY): Removed.
7540 (SCM_NONREC_CRITICAL_SECTION_START,
7541 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
7542 SCM_REC_CRITICAL_SECTION_END): New macros.
7543 (SCM_CRITICAL_SECTION_START/END): Defined here.
7544
7545 * eval.c: Insert SOURCE_SECTION_START / SOURCE_SECTION_END around
7546 the three calls to scm_m_expand_body.
7547
7548 * gc.h: #include "libguile/pthread-threads.h";
7549 (SCM_FREELIST_CREATE, SCM_FREELIST_LOC): New macros.
7550
7551 * gc.c (scm_i_freelist, scm_i_freelist2): Defined to be of type
7552 scm_t_key;
7553
7554 * gc.c, gc-freelist.c, inline.h: Use SCM_FREELIST_LOC for freelist
7555 access.
7556
7557 * gc-freelist.c (scm_gc_init_freelist): Create freelist keys.
7558
7559 * gc-freelist.c, threads.c (really_launch): Use
7560 SCM_FREELIST_CREATE.
7561
7562 * gc-malloc.c (scm_realloc, scm_gc_register_collectable_memory):
7563
7564 * gc.c (scm_i_expensive_validation_check, scm_gc,
7565 scm_gc_for_newcell): Put threads to sleep before doing GC-related
7566 heap administration so that those pieces of code are executed
7567 single-threaded. We might consider rewriting these code sections
7568 in terms of a "call_gc_code_singly_threaded" construct instead of
7569 calling the pair of scm_i_thread_put_to_sleep () and
7570 scm_i_thread_wake_up (). Also, we would want to have as many of
7571 these sections eleminated.
7572
7573 * init.c (scm_init_guile_1): Call scm_threads_prehistory.
7574
7575 * inline.h: #include "libguile/threads.h"
7576
7577 * pthread-threads.h: Macros now conform more closely to the
7578 pthreads interface. Some of them now take a second argument.
7579
7580 * threads.c, threads.h: Many changes.
7581
75822002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7583
7584 * Makefile.am (version.h): Changed $^ --> $< in rule for
7585 version.h.
7586
b2cbe8d8
RB
75872002-12-08 Rob Browning <rlb@defaultvalue.org>
7588
7589 * version.h.in (SCM_MICRO_VERSION): use @--@ substitution now.
7590 (SCM_MINOR_VERSION): use @--@ substitution now.
7591 (SCM_MICRO_VERSION): use @--@ substitution now.
7592 (scm_effective_version): new function prototype.
7593
7594 * version.c (scm_effective_version): new function, also add
7595 effective-version.
7596
7597 * Makefile.am (schemelibdir): VERSION -> GUILE_EFFECTIVE_VERSION.
7598 (libpath.h): use GUILE_EFFECTIVE_VERSION to compute
7599 SCM_LIBRARY_DIR.
7600 (version.h): generate this here rather than configure.in. This
7601 approach tracks source edits better (i.e. more immediately).
7602 Might be worth considering for other .in files too.
7603
5441c65c
MV
76042002-12-02 Marius Vollmer <mvo@zagadka.ping.de>
7605
7606 Reorganized thread package selection. A thread package now only
7607 implements a small set of pthread like functions and Guile
7608 implements the rest on top of that. Guile's implementation is
7609 what the "coop-pthreads" package has been previously. Support for
7610 "coop" threads has been removed until I get time to add it again.
7611
7612 * Makefile.am (libguile_la_SOURCES): Removed iselect.c.
7613 (noinst_HEADERS): Removed coop-threads.c, coop-threads.h, coop.c,
7614 null-threads.c, coop-pthreads.c.
7615 (modinclude_HEADERS): Removed coop-defs.h, coop-pthreads.h. Added
7616 pthread-threads.h.
7617
7618 * validate.h (SCM_VALIDATE_THREAD): Moved to threads.h.
7619
7620 * threads.h: Do not include "libguile/coop-defs.h". Include
7621 "libguile/pthread-threads.h" for USE_COPT_THREADS. Removed
7622 (previously deprecated) C level thread API prototypes. They are
7623 now in the thread package specific headers, "null-threads.h" and
7624 "pthread-threads.h".
7625 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
7626 New.
7627 (scm_threads_init): Removed.
7628 (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END,
7629 SCM_THREAD_SWITCHING_CODE, scm_i_switch_counter,
7630 SCM_I_THREAD_SWITCH_COUNT): Define here.
7631 (scm_single_thread_p): Removed.
7632 (scm_call_with_new_thread): Take two args directly instead of list
7633 of two args.
7634 (scm_i_thread_data, scm_i_set_thread_data, SCM_THREAD_LOCAL_DATA,
7635 SCM_SET_THREAD_LOCAL_DATA): Define here.
7636
7637 * threads.c: Merged with "coop-pthreads.c".
7638
7639 * null-threads.h: Implement pthread-like API as a set of macros.
7640
7641 * pthread-threads.h: New, implement pthread-like API by deferring
7642 to pthread itself.
7643
7644 * init.c (scm_init_guile_1): Do not call scm_init_iselect, which
7645 has been lost in the reorganization.
7646
504d99c5
MD
76472002-12-01 Mikael Djurfeldt <mdj@linnaeus>
7648
7649 The following change makes it possible to move procedure
7650 application dispatch outside inner loops. The motivation was
7651 clean implementation of efficient replacements of R5RS primitives
7652 in SRFI-1.
7653
7654 The semantics is clear: scm_trampoline_N returns an optimized
7655 version of scm_call_N (or NULL if the procedure isn't applicable
7656 on N args).
7657
7658 Applying the optimization to map and for-each increases efficiency
7659 noticeably. For example, (map abs ls) is 8 times faster than
7660 before.
7661
7662 * eval.h (scm_t_trampoline_1, scm_t_trampoline_2): New types.
7663
7664 * eval.c, eval.h (scm_trampoline_1, scm_trampoline_2): New functions.
7665
7666 * eval.c (call_subr2_2, call_lsubr_2, call_closure_2): New functions;
7667 (map, for-each): Handle also application on two args as a special
7668 case; Use trampolines.
7669
7670 Other changes:
7671
7672 * sort.c (scm_cmp_function): Choose subr2less for scm_tc7_subr_2o;
7673 (subr2oless): Removed.
7674 (scm_restricted_vector_sort_x): Use scm_return_first to keep the
7675 vector GC protected.
7676
7677 * eval.c (check_map_args): Use scm_out_of_range_pos instead of
7678 scm_out_of_range.
7679
63dd3413
DH
76802002-11-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
7681
7682 * evalext.[ch] (scm_m_undefine, undefine): Deprecated.
7683
4ba5f279
MD
76842002-11-17 Mikael Djurfeldt <mdj@linnaeus>
7685
7686 * debug.c (scm_make_iloc): Added missing "return".
7687
56ae231f
MV
76882002-11-17 Marius Vollmer <mvo@zagadka.ping.de>
7689
7690 * strports.c (scm_eval_string_in_module): Validate second arg to
7691 be a module. Thanks to Arno Peters!
7692
80b28865
DH
76932002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7694
7695 * .cvsignore: remove goops.c
7696
c88b1456
DH
76972002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7698
7699 * modules.c (scm_env_top_level, scm_lookup_closure_module,
7700 module_variable, scm_module_lookup_closure,
7701 scm_module_transformer, scm_sym2var, scm_module_reverse_lookup,
7702 scm_system_module_env_p): Don't compare SCM values with C
7703 operators == or !=. Avoid SCM_IMP predicates. Prefer !SCM_FALSEP
7704 over SCM_NFALSEP.
7705
a8a19efc
DH
77062002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7707
7708 * eval.h (SCM_MAKE_ILOC): New macro.
7709
7710 * debug.c (scm_make_iloc): Use SCM_MAKE_ILOC instead of computing
7711 the iloc bitpattern here.
7712
76734914
MD
77132002-11-14 Mikael Djurfeldt <mdj@linnaeus>
7714
7715 * coop-pthreads.c, coop-pthreads.h: scm_internal_select should be
7716 part of the API, otherwise it's difficult to write Guile
7717 extensions using non-blocking I/O => moved #include
7718 "libguile/iselect.h" from coop-pthreads.c --> coop-pthreads.h.
7719
7720 * coop-pthreads.c (scm_unlock_mutex): Changed s_lock_mutex -->
7721 s_unlock_mutex.
7722
8b5b4a75
MV
77232002-11-10 Marius Vollmer <mvo@zagadka.ping.de>
7724
7725 * __scm.h (USE_THREADS, GUILE_ISELECT): Do not define here. They
7726 are defined in configure.in.
7727
7728 * threads.c: Removed SCM_API from function definitions. SCM_API
7729 is only for declarations.
7730
e5a83084
MD
77312002-11-07 Mikael Djurfeldt <mdj@linnaeus>
7732
9be8bb45
MD
7733 * coop-pthreads.h: Added support for thread specific data to the
7734 generic C API for the coop-pthreads case.
7735
e5a83084
MD
7736 * threads.c, threads.h (scm_cond_init): Undo unintentional API
7737 change.
6c214b62 7738 (scm_cond_broadcast): Added missing function.
e5a83084 7739
7edf178e
MV
77402002-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7741
7742 * coop.c (coop_next_runnable_thread): Removed, wich should have
7743 happened when GUILE_ISELECT was hard-wired.
7744
7f5b1b77
MV
77452002-11-03 Marius Vollmer <mvo@zagadka.ping.de>
7746
7caa1b07
MV
7747 * Makefile.am (libguile_la_SOURCES): Added threads.c
7748 (DOT_DOC_FILES): Added threads.doc.
7749 (DOT_X_FILES): Added threads.x.
7750 (EXTRA_libguile_la_SOURCES): Removed threads.c.
7751 (noinst_HEADERS): Added coop-pthreads.c.
7752 (modinclude_HEADERS): Added coop-pthreads.h.
7753
7754 * __scm.h (USE_THREADS, GUILE_ISELECT): Define when
7755 SCM_DEBUG_DEPRECATED. Removed their use thru-out Guile.
7756
bb11cbf4
MV
7757 * iselect.c: Include "_scm.h" before testing HAVE_UNISTD_H.
7758 Thanks to Bill Schottstaedt!
7759
1d4cbbed
MV
7760 * numbers.c (scm_integer_expt): Make 0^z == 0 for z != 0.
7761
7f5b1b77
MV
7762 * _scm.h (HAVE_RESTARTABLE_SYSCALLS): Do define even when
7763 SCM_COPT_THREADS is defined.
7764 (SCM_SYSCALL): Use EINTR-expection version when SCM_COPT_THREADS
7765 is defined.
7766
7767 * coop-pthreads.c: Some harmless renamings of internal stuff.
7768 (create_thread): New, generalized version of
7769 scm_call_with_new_thread.
7770 (scm_call_with_new_thread): Use it.
7771 (scm_spawn_thread): New, use create_thread.
7772
d52f53b1
MV
77732002-11-02 Marius Vollmer <mvo@zagadka.ping.de>
7774
7775 * coop-pthreads.c, coop-pthreads.h: Redone completely, you might
7776 start testing it now.
7777
7778 * _scm.h: Include <errno.h< so that SCM_SYSCALL is correctly
7779 defined when HAVE_RESTARTABLE_SYSCALLS is not defined.
7780 (HAVE_RESTARTABLE_SYSCALLS): Do not define when USE_COPT_THREADS
7781 is defined.
7782
30f920c3
MV
77832002-10-27 Marius Vollmer <mvo@zagadka.ping.de>
7784
7785 * scmsigs.c (signal_cell_handlers, install_handler_data,
7786 scm_delq_spine_x, really_install_handler, install_handler): New
7787 scheme for triggering signal handlers, to simplify take_signal.
7788 (take_signal): Simplified, to avoid race conditions.
7789 (scm_sigaction_for_thread): Use new Scheme. Validate that thread
7790 hasn't exited yet.
7791
7792 * async.c (scm_async_click): Reset pending_asyncs, handle
7793 signal_asyncs. Don't set cdr of a non-signal async to #f.
7794 (scm_i_queue_async_cell): Do not check cdr of cell for #f, queue
7795 always. Set pending_asyncs.
7796 (scm_system_async_mark_for_thread): Check that thread has not
7797 exited.
7798 (scm_unmask_signals, decrease_block): Call scm_async_click after
7799 block_asyncs becomes zero.
7800
7801 * __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of
7802 active_asyncs.
7803
7804 * root.h (scm_root_state): Added pending_asyncs and signal_asyncs
7805 fields.
7806 * root.c (root_mark): Mark them.
7807 (make_root): Initialize them.
7808
7809 * iselect.c, iselect.h: Replaced GUILE_ISELECT with
7810 USE_COOP_THREADS.
7811 (scm_internal_select): Define one version for USE_COOP_THREADS and
7812 one for USE_NULL_THREADS.
7813 (scm_init_iselect): Likewise.
7814
7815 * inline.h (scm_cell, scm_double_cell): Also allow
7816 USE_COPT_THREADS to not protect the slot initializers.
7817
7818 * init.c (scm_init_guile_1): Call scm_init_thread_procs. This is
7819 because threads need to be initialized before the stack, but
7820 gsubrs such as scm_timed_condition_variable_wait can only be
7821 created later.
7822
7823 * threads.h: Include "coop-pthreads.h" when requested.
7824 (scm_threads_make_mutex, scm_threads_lock_mutex,
7825 scm_threads_unlock_mutex, scm_threads_monitor): Removed, they were
7826 not implemented anyway.
7827 (scm_init_thread_procs, scm_try_mutex,
7828 scm_timed_condition_variable_wait,
7829 scm_broadcast_condition_variable, scm_c_thread_exited_p,
7830 scm_thread_exited_p): New prototypes.
7831 (struct timespec): Define if not already defined.
7832 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
7833 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
7834 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
7835 scm_cond_broadcast, scm_cond_destroy): Declarations moved here and
7836 deprecated.
7837
7838 * threads.c: Include <errno.h>. Include "coop-pthreads.c" when
7839 requested.
7840 (scm_thread_exited_p): New.
7841 (scm_try_mutex, scm_broadcast_condition_variable): Newly
7842 registered procedures.
7843 (scm_wait_condition_variable, scm_timed_wait_condition_variable):
7844 Use the latter as the procedure for "wait-condition-variable",
7845 thus offering a optional timeout parameter to Scheme.
7846 (scm_wait_condition_variable): Implement in terms of
7847 scm_timed_wait_condition_variable.
7848 (scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
7849 scm_mutex_unlock, scm_mutex_destroy, scm_cond_init,
7850 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
7851 scm_cond_broadcast, scm_cond_destroy): Implement in terms of
7852 scm_make_mutex, etc, and deprecate.
7853 (scm_init_threads): Do not create smobs, leave this to
7854 scm_threads_init. Do not include "threads.x" file.
7855 (scm_init_thread_procs): New, include "threads.x" here.
7856
7857 * null-threads.h (scm_null_mutex, scm_null_mutex_init,
7858 scm_null_mutex_lock, scm_null_mutex_unlock,
7859 scm_null_mutex_destroy, scm_null_condvar, scm_null_condvar_init,
7860 scm_null_condvar_wait, scm_null_condvar_signal,
7861 scm_null_condvar_destroy): Removed.
7862 (scm_mutex_init, scm_mutex_lock, scm_mutex_unlock, scm_cond_init,
7863 scm_cond_wait, scm_cond_signal, scm_cond_broadcast,
7864 scm_cond_destory): Do not define, they are now deprecated and
7865 handled by threads.{h,c}.
7866
7867 * null-threads.c (scm_null_mutex, scm_null_cond): Define here.
7868 (scm_threads_init): Create smobs here, using the appropriate
7869 sizes.
7870 (block): Removed, now unused.
7871 (scm_c_thread_exited_p): New.
7872 (scm_null_mutex_init, scm_null_mutex_lock, scm_null_mutex_unlock,
7873 scm_null_mutex_destroy, scm_null_condvar_init,
7874 scm_null_condvar_wait, scm_null_condvar_signal,
7875 scm_null_condvar_destroy): Removed and updated users to do their
7876 task directly.
7877 (scm_try_mutex, timeval_subtract,
7878 scm_timed_wait_condition_variable,
7879 scm_broadcast_condition_variable): New.
7880 (scm_wait_condition_variable): Removed.
7881
7882 * coop-defs.h (coop_m): Added 'level' field.
7883 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
7884 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
7885 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
7886 scm_cond_broadcast, scm_cond_destroy, struct timespec): Do not
7887 define.
7888 (coop_condition_variable_broadcast): New.
7889
7890 * coop-threads.c (scm_threads_init): Create smobs here, using the
7891 appropriate sizes.
7892 (scm_c_thread_exited_p, scm_try_mutex,
7893 scm_timed_wait_condition_variable,
7894 scm_broadcast_condition_variable): New.
7895 (scm_wait_condition_variable): Removed.
7896
7897 * coop.c (coop_new_mutex_init): Initialize level.
7898 (coop_mutex_trylock, coop_mutex_lock, coop_mutex_unlock): maintain
7899 level.
7900 (coop_condition_variable_signal): Renamed to
7901 coop_condition_variable_broadcast and reimplemented in terms of
7902 that. Thus...
7903 (coop_condition_variable_broadcast): New.
7904
7905 * goops.c (hell_mutex): Reimplemented using scm_make_mutex, etc.
7906
7907 * coop-pthreads.h, coop-pthreads.c: New, but unfinished.
7908
087ed40d
MV
79092002-10-21 Marius Vollmer <mvo@zagadka.ping.de>
7910
65a23095
MV
7911 * null-threads.c: Include <time.h>. Also, use <...> for inclusion
7912 of system headers.
7913
087ed40d
MV
7914 * async.c, goops.h, modules.h, validate.h (SCM_MAKE_VALIDATE_MSG):
7915 New. Use it instead of SCM_MAKE_VALIDATE in lots of places to
30f920c3 7916 give better error messages. Thanks to Bill Schottstaedt!
087ed40d 7917
5ec1d2c8
DH
79182002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
7919
7920 * evalext.h, evalext.c (scm_definedp, scm_defined_p): Renamed
7921 scm_definedp to scm_defined_p and deprecated scm_definedp.
7922
100ae50d
DH
79232002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
7924
7925 * async.h, async.c (scm_system_async): Fixed deprecation to work
7926 correctly when deprecated features are excluded.
7927
2794cb50
MV
79282002-10-16 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7929
7930 * async.c (scm_system_async_mark_for_thread): Validate thread
7931 argument.
7932
7933 * coop-threads.c (scm_i_thread_root): Do not validate argument.
7934
7935 * feature.c (scm_init_feature): Don't add 'threads' for
7936 USE_NULL_THREADS.
7937
7938 * inline.h (scm_cell, scm_double_cell): Also allow
7939 USE_NULL_THREADS to not protect the slot initializers.
7940
7941 * scmsigs.c (scm_sigaction_for_thread): It's "USE_THREADS" not
7942 "USE_THREAD".
7943
7944 * Makefile.am (noinst_HEADERS): Added null-threads.c.
7945 (modinclude_HEADERS): Added null-threads.h.
7946
7947 * threads.h: Include null-threads.h when !USE_COOP_THREADS.
7948 * threads.c: Include null-threads.c when !USE_COOP_THREADS.
7949 (scm_init_threads): Use generic type names scm_t_mutex and
7950 scm_t_cond instead of coop_m and coop_c.
7951
7952 * null-threads.c, null-threads.h: New files.
7953
ff810d7a
MV
79542002-10-15 Marius Vollmer <mvo@zagadka.ping.de>
7955
7956 * Makefile.am: Replaced "$<" in non-pattern rules with its value.
7957 This is to support makes that know about "$<" only in pattern
7958 rules, like Sun's make.
7959
a90bdb73
MV
79602002-10-13 Marius Vollmer <mvo@zagadka.ping.de>
7961
7962 * Makefile.am (libpath.h): Fixed typo in top_srcdir_absolute
7963 substitution. Thanks to David Allouche!
7964
e71a8bf2
DH
79652002-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
7966
7967 * evalext.h: Replaced SCM_DEBUG_DEPRECATED with
7968 !SCM_ENABLE_DEPRECATED.
7969
41f77ff5
MV
79702002-10-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7971
504d99c5 7972 * async.c (scm_system_async_mark_for_thread): Only call
41f77ff5
MV
7973 scm_i_thread_root when USE_THREADS is defined. Use scm_root
7974 otherwise.
7975
7976 * scmsigs.c (take_signal): Only call scm_i_thread_root when
7977 USE_THREADS is defined. Use scm_root otherwise.
7978 (scm_sigaction_for_thread): Ignore THREAD argument when
7979 USE_THREADS is not defined. Also, move THREAD argument defaulting
7980 out of HAVE_SIGACTION section, which was a bug.
7981
6d16b125
MV
79822002-10-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7983
7984 * scmsigs.c (scm_sigaction_for_thread): Store original handler in
7985 signal_handlers, not the closure that is used as the async.
7986 The closure is stored in signal_handler_cells, as previously.
7987
acfa1f52
MV
79882002-10-10 Marius Vollmer <mvo@zagadka.ping.de>
7989
7990 * root.h (scm_root_state): Added 'block_async' slot.
7991 (scm_active_asyncs): Removed abbrev.
7992 * root.c (scm_make_root): Initialize 'block_asyncs' slot.
7993
7994 * __scm.h (SCM_ASYNC_TICK): Do without the scm_active_asyncs
7995 abbrev.
7996
7997 * async.h (scm_call_with_blocked_asyncs,
7998 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
7999 scm_c_call_with_unblocked_asyncs): New prototypes.
8000 (scm_mask_signals, scm_unmask_signals): Deprecated.
8001 (scm_mask_ints): Turned into a macro.
8002 * async.c (scm_mask_ints): Removed.
8003 (scm_run_asyncs): Do not set scm_mask_ints while running an async.
8004 this should not be necessary.
8005 (scm_async_click): Test block_asyncs instead of scm_mask_ints.
8006 (scm_mask_signals, scm_unmask_signals): Deprecated. Emit
8007 deprecation warning and check for errornous use. Set block_asyncs
8008 instead of scm_mask_ints.
8009 (increase_block, decrease_block, scm_call_with_blocked_asyncs,
8010 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
8011 scm_c_call_with_unblocked_asyncs): New.
8012
8013 * script.c (scm_compile_shell_switches): Do not set scm_mask_ints.
8014 Asyncs are enabled by default.
8015
34010f56
NJ
80162002-10-09 Neil Jerram <neil@ossau.uklinux.net>
8017
8018 * vports.c (scm_make_soft_port): Allow vector argument to carry a
8019 6th element: an input waiting thunk.
8020 (sf_input_waiting): New.
8021
9310d6f2
MV
80222002-10-05 Marius Vollmer <mvo@zagadka.ping.de>
8023
8024 * root.c (root_mark): Mark active_asyncs slot.
8025
8026 * async.c (scm_async_click): Set the cdr of a executed handler
8027 cell to SCM_BOOL_F, not SCM_EOL.
8028 (scm_i_queue_async_cell): Queue the cell at the end of the list,
8029 and only if the handler procedure is not already present.
8030 (scm_system_async_mark_for_thread): Initialize cdr of handler cell
8031 with SCM_BOOL_F.
8032 * scmsigs.c (scm_sigaction_for_thread): Likewise.
8033
ac48c719
RB
80342002-10-04 Rob Browning <rlb@defaultvalue.org>
8035
1360a142
RB
8036 * guile.c (main): switch to scm_lt_dlset_preloaded_symbols;
8037
8038 * dynl.c (sysdep_dynl_link): switch to scm_lt_dlhandle,
8039 scm_lt_dlopenext, and scm_lt_dlerror.
8040 (sysdep_dynl_unlink): switch to scm_lt_dlhandle, scm_lt_dlclose,
8041 and scm_lt_dlerror.
8042 (sysdep_dynl_func): switch to scm_lt_dlhandle, scm_lt_dlsym,
8043 and scm_lt_dlerror.
8044 (sysdep_dynl_init): switch to scm_lt_dlinit();
8045
8046 * Makefile.am (libguile_la_LIBADD): switch to use
8047 libguile-ltdl.la.
8048
504d99c5 8049 * numbers.c (scm_integer_expt): (expt 0 1) should be 1.
ac48c719 8050
497092c9
MV
80512002-10-04 Marius Vollmer <mvo@zagadka.ping.de>
8052
8053 * scmsigs.h (scm_sigaction_for_thread): New prototype.
8054 * scmsigs.c (got_signal): Removed.
8055 (signal_handler_cells, signal_handler_threads): New.
8056 (take_signal): Queue the cell of the signal for the specified
8057 thread. Reset the signal handler on systems that don't have
8058 sigaction.
8059 (sys_deliver_signals): Removed.
8060 (close_1): New.
8061 (scm_sigaction_for_thread): Renamed from scm_sigaction and
8062 extended to also set the thread of a signal and allocate a cell
8063 for it. Keep the Scheme name "sigaction". Check that signum is
8064 within range. Also, use SCM_VECTOR_REF instead of SCM_VELTS.
8065 (scm_sigaction): Implement in terms of scm_sigaction_for_thread.
8066 (scm_init_scmsigs): Allocate signal_handler_cells and
8067 signal_handler_threads vectors.
8068
8069 * async.c: Removed GUILE_OLD_ASYNC_CLICK code. Reorganized so
8070 that system asnycs and user asyncs are separated. Reimplemented
8071 system asyncs to work per-thread.
8072
8073 * gc.c (scm_init_gc): Do not use scm_system_async.
8074
8075 * async.h (scm_asyncs_pending, scm_set_tick_rate,
8076 scm_set_switch_rate, scm_system_async_mark_from_signal_handler):
8077 Removed prototypes.
8078 (scm_i_queue_async_cell): New.
8079
8080 * __scm.h (scm_asyncs_pending_p): Removed.
8081 (SCM_ASYNC_CLICK): Check scm_active_asyncs instead of
8082 scm_asyncs_pending_p.
8083
8084 * async.h (scm_system_async_mark_for_thread): New prototype.
8085
8086 * __scm.h: Removed GUILE_OLD_ASYNC_CLICK code.
8087
8088 * root.h (scm_root_state): Added new "active_asyncs" slot.
8089 * root.c (scm_make_root): Initialize it to SCM_EOL.
8090
8091 * coop-defs.h (coop_t): Added new "handle" slot.
8092 * coop-threads.c (all_threads, scm_current_thread,
8093 scm_all_threads, scm_i_thread_root): New.
8094 (scm_threads_init): Add main thread to all_threads.
8095 (scheme_launch_thread): Remove thread from all_threads when it
8096 terminates.
8097 (scm_call_with_new_thread): Initialize handle slot of coop_t
8098 structure and add new thread to all_threads.
8099 (scm_spawn_thread): Likewise.
8100
8101 * threads.h (scm_current_thread, scm_all_threads): New prototypes.
8102 * threads.c (scm_current_thread, scm_all_threads): Register as
8103 primitives.
8104
8105 * dynl.c: Use scm_lt_ prefix for libltdl functions.
8106
480fa28d
NJ
81072002-09-29 Neil Jerram <neil@ossau.uklinux.net>
8108
8109 * script.c (scm_compile_shell_switches): Fix bad spelling of
8110 `explicitly' in comment.
8111
81122002-09-28 Neil Jerram <neil@ossau.uklinux.net>
8113
8114 * posix.c (scm_geteuid, scm_getegid, scm_seteuid, scm_setegid):
8115 Refer to provided? in doc string rather than deprecated feature?.
8116
3553e1d1
GH
81172002-09-24 Gary Houston <ghouston@arglist.com>
8118
8119 * inline.h (scm_double_cell): prevent reordering of statements
8120 with any following code (for GCC 3 strict-aliasing).
8121 * numbers.c (scm_make_real), num2float.i.c (FLOAT2NUM): removed
8122 the earlier version of the reordering prevention.
8123
4ad0814a
HWN
81242002-09-19 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8125
8126 * inline.h (scm_double_cell): move SET_GCMARK set out of if body.
8127
e88e4f2e
HWN
81282002-09-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8129
8130 * gc-malloc.c (scm_gc_register_collectable_memory): more overflow
8131 protection.
8132
1e71eafb
HWN
81332002-09-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8134
8135 * inline.h: include stdio.h
8136
8137 * smob.c (free_print): abort if scm_debug_cell_accesses_p is set
8138
61ef9c1f
HWN
81392002-09-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8140
dac04e9f
HWN
8141 * gc-segment.c (scm_i_make_initial_segment): check user settings
8142 for sanity.
8143
8144 * gc-malloc.c (scm_gc_init_malloc): check user settings for
8145 sanity.
dac04e9f
HWN
8146
8147 * gc-freelist.c (scm_init_freelist): check user settings for sanity.
8148
ffd72400
HWN
8149 * struct.h: change scm_structs_to_free to scm_i_structs_to_free
8150
8151 * gc-malloc.c (scm_gc_register_collectable_memory): use floats;
1e71eafb
HWN
8152 these won't ever wrap around with high memory usage. Thanks to
8153 Sven Hartrumpf for finding this.
ffd72400 8154
5bd4a949
HWN
8155 * gc-freelist.c: include <stdio.h>
8156
61ef9c1f
HWN
8157 * gc-malloc.c: add DEBUGINFO for mtrigger GCs.
8158
ffd0ef3b
MV
81592002-09-01 Marius Vollmer <mvo@zagadka.ping.de>
8160
a27e3d14
MV
8161 * vectors.h (SCM_VECTOR_REF): New.
8162
ffd0ef3b
MV
8163 * snarf.h (SCM_DEFINE_PUBLIC): New.
8164
f8a1712b
MV
81652002-08-30 Marius Vollmer <mvo@zagadka.ping.de>
8166
8167 * socket.c (scm_addr_vector): Added size of address to arguments.
8168 Use it to avoid accessing a non-existent path in a sockaddr_un.
8169 Changed all callers.
8170
7200a36b
HWN
81712002-08-29 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8172
1383773b
HWN
8173 * gc.h: remove DOUBLECELL card flags.
8174
8175 * gc-malloc.c (scm_calloc): try to use calloc() before calling
8176 scm_realloc().
8177
8178 * gc-segment.c (scm_i_initialize_heap_segment_data): remove card
8179 init loop; handle this from scm_init_card_freelist()
8180
8181 * gc-card.c (scm_init_card_freelist): init bit vector here.
8182
7200a36b 8183 * numbers.c (scm_make_real): prevent reordering of statements
8fa5786d 8184 num2float.i.c (FLOAT2NUM): idem
7200a36b 8185
9981de3a
HWN
81862002-08-27 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8187
8188 * eval.h: prepend libguile/ to include path
8189
19647556
MV
81902002-08-26 Marius Vollmer <mvo@zagadka.ping.de>
8191
8192 * script.c (scm_compile_shell_switches): Added "2002" to Copyright
9a5fa6e9 8193 years. Thanks to Martin Grabmüller!
19647556 8194
38d1262a
HWN
81952002-08-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8196
8197 * gc-segment.c (scm_i_get_new_heap_segment): use float in stead of
8198 unsigned numbers for computing minimum heap increment. This
8199 prevents weird results when a a negative minimum increment is
8200 computed.
8201
f800ebfb
MV
82022002-08-24 Marius Vollmer <mvo@zagadka.ping.de>
8203
8204 * gc_os_dep.c: When we have __libc_stack_end, use that directly
19647556 8205 instead of the old tricks.
f800ebfb
MV
8206
8207 * guile-snarf.in: Do not expect the input file to be the first
8208 argument after the optional "-o" option, just pass everything to
8209 the pre-processor without extracting the input file name.
8210
4a5309c9
HWN
82112002-08-23 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8212
8213 * gc-segment.c (scm_i_get_new_heap_segment): Oops. We want segment
8214 length *at* least SCM_MIN_HEAP_SEG_SIZE, not at most.
8215
f2893a25
HWN
82162002-08-22 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8217
8218 * gc.h, gc.c: make scm_cells_allocated unsigned again. Thanks to
8219 Bill Schottstaedt for the bug report
8220
483f518b
MV
82212002-08-20 Marius Vollmer <mvo@zagadka.ping.de>
8222
8223 * print.c (scm_iprin1): Print primitives generics always as
8224 "primitive-generic" even when they have no primitive methods yet.
8225
917adc55
GH
82262002-08-17 Gary Houston <ghouston@arglist.com>
8227
8228 * coop.c (coop_create): removed bogus 2nd argument in scm_malloc
8229 call.
8230
67329a9e
HWN
82312002-08-17 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8232
85835e59 8233 * ports.c (scm_add_to_port_table): small bugfix.
67329a9e
HWN
8234
8235 * mallocs.c (scm_malloc_obj): use scm_gc_malloc in stead of
8236 malloc.
8237
8238 * gc-segment.c (scm_i_get_new_heap_segment): remove cluster cruft:
8239 only use SCM_MIN_HEAP_SEG_SIZE.
8240
8241 * ports.c (scm_add_to_port_table): add backwards compatibility
8242 function
8243
8244 * ports.h: use scm_i_ prefix for port table and port table size.
8245
f07c886a
MD
82462002-08-15 Mikael Djurfeldt <mdj@linnaeus>
8247
8248 * vports.c (scm_make_soft_port): Initialize pt variable.
8249
dc61cbc6
MV
82502002-08-13 Marius Vollmer <mvo@zagadka.ping.de>
8251
8252 * strports.h (scm_c_eval_string_in_module,
8253 scm_eval_string_in_module): New prototypes.
8254 * strports.c (scm_eval_string_in_module): New, but use
8255 "eval-string" as the Scheme name and make second parameter
8256 optional.
8257 (scm_eval_string): Implement using scm_eval_string_in_module.
8258 (scm_c_eval_string_in_module): New.
8259 Thanks to Ralf Mattes for the suggestion!
8260
da220f27
HWN
82612002-08-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8262
be3ff021
HWN
8263 * gc-card.c ("sweep_card"): remove SCM_MISC_ERROR messages: print
8264 message and abort.
8265
8266 * gc-mark.c ("scm_gc_mark_dependencies"): idem.
8267
da220f27
HWN
8268 * ports.c ("scm_new_port_table_entry"): return a boxed SCM in
8269 stead of scm_t_port*. The function now takes a tag argument.
8270
eab1b259
HWN
82712002-08-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8272
8273 * gc.h: add scm_debug_cells_gc_interval to public interface
8274
8275 * gc-card.c ("sweep_card"): set scm_gc_running while sweeping.
8276
8277 * gc.c (scm_i_expensive_validation_check): separate expensive
8278 validation checks from cheap ones.
8279
ba1b2226
HWN
82802002-08-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8281
8282 * read.c (scm_input_error): new function: give meaningful error
8283 messages, and throw read-error
8284
8285 * gc-malloc.c (scm_calloc): add scm_calloc.
8286
39e8f371
HWN
82872002-08-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8288
33138b05
HWN
8289 * tags.h: remove GC bits documentation from the tags table.
8290
39e8f371
HWN
8291 * read.c (INPUT_ERROR): Prepare for file:line:column error
8292 messages for errors in scm_lreadr() and friends.
8293
82942002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8295
8296 * gc-malloc.c (scm_malloc): use scm_realloc() (simplifies
8297 implementation).
8298 (scm_gc_calloc): new function
8299
26e68795 83002002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
402788a9 8301
5f16b897
HWN
8302 * ports.c (scm_new_port_table_entry): init port entry to 0
8303 completely.
402788a9
HWN
8304
8305 * ports.c (scm_new_port_table_entry): change function from
8306 scm_add_to_port_table. This prevents cells with null-pointers from
8307 being exposed to GC.
8308
504d99c5 8309 * vports.c (scm_make_soft_port) strports.c (scm_mkstrport),
402788a9 8310 fports.c (scm_fdes_to_port): Use scm_new_port_table_entry().
c8a1bdc4 8311
504d99c5 8312 * gc.c (scm_gc_stats): add cell-yield and malloc-yield statistic
c2cbcc57
HWN
8313 to gc-stats.
8314
c8a1bdc4
HWN
8315 * numbers.c (big2str): return "0" for 0 iso. ""
8316
c2cbcc57
HWN
8317 * gc-segment.c, gc-malloc.c gc-mark.c, gc-freelist.c, gc-card.c,
8318 private-gc.h: new file
c8a1bdc4
HWN
8319
8320 * gc.c: completely revised and cleaned up the GC. It now uses lazy
8321 sweeping. More documentation in workbook/newgc.text
8322
aea06b34
MV
83232002-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8324
8325 * random.c (rstate_free): Return zero.
8326
35060ae9
DH
83272002-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8328
8329 * environments.c (remove_key_from_alist): Removed.
8330
8331 (obarray_remove): Simplified.
8332
6a535440
SJ
83332002-07-24 Stefan Jahn <stefan@lkcc.org>
8334
8335 * continuations.h: ia64: Include <signal.h> before
8336 <sys/ucontext.h>.
8337
bcbd25b7
DH
83382002-07-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
8339
8340 * modules.c (scm_sym2var): Don't compare SCM values with ==.
8341
26e68795 83422002-07-21 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1d1559ce
HWN
8343
8344 * goops.c (scm_compute_applicable_methods): use
8345 scm_remember_upto_here_1 iso scm_remember_upto_here
8346
8347 * macros.c: include deprecation.h
8348
504d99c5 8349 * vectors.c (scm_vector_move_right_x): remove side effect in
1d1559ce 8350 macro arg.
504d99c5 8351 (scm_vector_move_left_x): idem.
1d1559ce
HWN
8352
8353 * net_db.c, posix.c, socket.c: variable naming: change ans to
8354 result.
8355
8356 * sort.c (scm_merge_vector_x): accept vector as argument
8357 iso. SCM*. This is needed for full GC correctness.
8358
8359 * gc.h: undo previous undocumented changes related to #ifdef
8360 GENGC.
8361
26e68795 83622002-07-20 Han-Wen Nienhuys <hanwen@cs.uu.nl>
34d19ef6
HWN
8363
8364 * *.c: add space after commas everywhere.
8365
8366 * *.c: use SCM_VECTOR_SET everywhere, where a vector is written.
8367 Document cases where SCM_WRITABLE_VELTS() is used.
8368
8369 * vectors.h (SCM_VELTS): prepare for write barrier, and let
8370 SCM_VELTS() return a const pointer
8371 (SCM_VECTOR_SET): add macro.
8372
3063e30a
DH
83732002-07-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
8374
8375 * eval.c (SCM_CEVAL), macros.c (macro_print, scm_makmacro,
8376 scm_sym_macro, scm_macro_type), macros.h (scm_makmacro):
8377 Deprecated the special kind of built-in dynamic syntax transformer
8378 that was inaccurately named "macro". Note: The built-in syntax
8379 transformers that are named "mmacro" or "memoizing-macro" still
8380 exist, and it is these which come much closer to what one would
8381 call a macro.
8382
4c5f8e8f
NJ
83832002-07-13 Neil Jerram <neil@ossau.uklinux.net>
8384
8385 * eval.c (unmemocopy): Fix for
8386 1001-local-eval-error-backtrace-segfaults (unmemoization crash
8387 with internal definitions and local-eval).
8388
4f6f9ae3
GH
83892002-07-12 Gary Houston <ghouston@arglist.com>
8390
8391 * dynl.c: Don't define stub procedures if DYNAMIC_LINKING is not
8392 defined. They don't do anything useful, especially since the
8393 only case where DYNAMIC_LINKING is undefined seems to be
8394 when --with-modules=no is given to configure, which is basically
8395 requesting that the "dynamic linking module" be omitted.
8396
8397 * Makefile.am (libguile_la_SOURCES): move dynl.c from
8398 libguile_la_SOURCES to EXTRA_libguile_la_SOURCES.
8399
8400 * extensions.c (load_extension): check DYNAMIC_LINKING for
8401 scm_dynamic_call.
8402 * init.c (scm_init_guile_1): check DYNAMIC_LINKING for
8403 scm_init_dynamic_linking.
8404
c21935e6
MV
84052002-07-10 Marius Vollmer <mvo@zagadka.ping.de>
8406
8407 * guile.c, iselect.h, net_db.c, posix.c, socket.c: No need to
8408 check for Cygwin when including <winsock2.h>, this is already
8409 check for by configure. Thus, revert change from 2002-07-07.
8410
ee95d597
GH
84112002-07-10 Gary Houston <ghouston@arglist.com>
8412
9540b68f 8413 * eq.c: include <string.h>
ee95d597
GH
8414 * dynl.c: docstring editing.
8415
46732b54
GH
84162002-07-09 Gary Houston <ghouston@arglist.com>
8417
8418 * dynl.c (scm_dynamic_call): docstring editing.
8419
c09d12e0
RB
84202002-07-08 Rob Browning <rlb@defaultvalue.org>
8421
8422 * gc_os_dep.c: HURD fixes.
8423
3f6571eb
MV
84242002-07-07 Marius Vollmer <mvo@zagadka.ping.de>
8425
8426 Crosscompiling and Cygwin fixes by Jan Nieuwenhuizen. Thanks!
8427
8428 * Makefile.am: Override default rule for c-tokenize.$(OBJECT);
8429 this should be compiled for BUILD host.
8430 Override default rule for
8431 guile_filter_doc_snarfage$(EEXECT); this should run on BUILD host.
8432 Add missing $(EXEEXT) to guile_filter_doc_snarfage invocation.
8433 (snarf2checkedtexi): Use GUILE_FOR_BUILD instead of preinstguile.
8434
8435 * guile.c, iselect.h, net_db.c, posix.c, socket.c: Do not include
8436 <winsock2.h> on Cygwin even when we have it.
8437
bd987b8e
DH
84382002-07-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
8439
8440 * __scm.h (SCM_CAUTIOUS), eval.c (scm_eval_args, deval_args,
8441 SCM_CEVAL): Removed compile time option SCM_CAUTIOUS to clean up
8442 the code. Full number of arguments checking of closures is
8443 mandatory now. However, the option to disable the checking has
8444 most probably not been used anyway.
8445
8505e285
DH
84462002-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
8447
bd987b8e
DH
8448 * __scm.h (SCM_RECKLESS), backtrace.c (SCM_ASSERT), debug.c
8449 (scm_debug_options), eval.c (scm_lookupcar, scm_lookupcar1,
8450 scm_badargsp, SCM_CEVAL, SCM_APPLY, scm_map, scm_for_each),
8451 feature.c (scm_init_feature), gsubr.c (scm_gsubr_apply), numbers.c
8452 (scm_logand, scm_logior, scm_logxor, scm_i_dbl2big), srcprop.c
8453 (scm_source_properties, scm_set_source_properties_x,
8454 scm_source_property): Removed compile time option SCM_RECKLESS to
8455 clean up the code. Full number of arguments checking of closures
8456 is mandatory now. However, the option to disable the checking has
8457 most probably not been used anyway.
8505e285
DH
8458
8459 * srcprop.c (scm_source_properties, scm_set_source_properties_x,
8460 scm_source_property): Use !SCM_CONSP instead of SCM_NCONSP.
8461
2ee08a28
GH
84622002-06-30 Gary Houston <ghouston@arglist.com>
8463
732b9327
GH
8464 * dynl.c: Removed all SCM_DEFER_INTS/SCM_ALLOW_INTS, which won't
8465 do anything useful. Added a comment about need for a mutex if
8466 pre-emptive threading is supported.
8467
2ee08a28
GH
8468 * posix.c (scm_convert_exec_args), dynl.c
8469 (scm_make_argv_from_stringlist): static procs: 1) renamed both to
8470 allocate_string_pointers. 2) simplified: don't reallocate the
8471 strings, just make an array of pointers 3) avoid memory leaks on
8472 error 4) let the procedure report errors in its own name.
8473 Consequences: 1) the procedures now assume that SCM strings are
8474 nul-terminated, which should always be the case. 2) Since strings
8475 are not reallocated, it's now possible for strings passed to
8476 dynamic-args-call to be mutated.
8477
c136c920
DH
84782002-06-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
8479
8480 * __scm.h, eval.c, eval.h: Removed compile time option
8481 MEMOIZE_LOCALS to clean up the code. Now, caching of local
8482 variable positions during memoization is mandatory. However, the
8483 option to disable the caching has most probably not been used
8484 anyway.
8485
e540802f
MV
84862002-06-18 Marius Vollmer <mvo@zagadka.ping.de>
8487
8488 * print.c (scm_simple_format): Print missing part of format before
8489 ~% control. Thanks to Daniel Skarda!
8490
4c1ffcdd
MV
84912002-06-01 Marius Vollmer <mvo@zagadka.ping.de>
8492
8493 * mkstemp.c: Added exception notice to license statement.
8494
ba1b077b
MV
84952002-05-22 Marius Vollmer <mvo@zagadka.ping.de>
8496
8dc434c7
MV
8497 * numbers.c (mem2ureal): When returning an inexact zero, make sure
8498 it is represented as a floating point value so that we can change
8499 its sign.
8500
ba1b077b
MV
8501 From John W. Eaton <jwe@bevo.che.wisc.edu>
8502
8503 * numbers.c (idbl2str): Don't omit sign when printing negative zero.
8504
74c58131
TTN
85052002-05-14 Thien-Thi Nguyen <ttn@giblet.glug.org>
8506
8507 * gc_os_dep.c: For I386/OPENBSD, allow for `__i386__'
0926d46e 8508 in addition to `i386'. Thanks to Dale P. Smith.
74c58131 8509
8766d4b5
MV
85102002-05-08 Marius Vollmer <mvo@zagadka.ping.de>
8511
8512 * eq.c (real_eqv): New.
8513 (scm_eqv_p): Use it when comparing reals and complexes.
8514
8515 * numbers.c: Include <string.h>, for strncmp.
8516 (mem2complex): Do not create negative NaNs.
8517 (scm_leq_p, scm_geq_p): Explicitely return #f when comparing a
8518 NaN.
8519 (scm_inexact_to_exact): Signal error when converting a NaN.
74c58131 8520
1d8c3cad
MV
85212002-05-06 Marius Vollmer <mvo@zagadka.ping.de>
8522
8523 * posix.c (scm_putenv): Handle removing variables explicitely by
8524 calling unsetenv.
8525
8526 From John W. Eaton.
74c58131 8527
1d8c3cad
MV
8528 * numbers.h: Conditionally include floatingpoint.h, ieeefp.h, and
8529 nan.h. Provide declarations for scm_inf_p, scm_nan_p, scn_inf,
8530 and scm_nan.
8531 * numbers.c: [SCO && ! HAVE_ISNAN] (isnan): New function.
8532 [SCO && ! HAVE_ISINF] (isinf): New function.
8533 (xisinf, xisnan): New functions.
8534 (IS_INF): Delete.
8535 (isfinite): Define in terms of xisinf.
8536 (scm_inf_p, scm_nan_p): New functions.
8537 (guile_Inf, guile_NaN): New file-scope vars.
8538 (guile_ieee_init): New function.
8539 (scm_inf, scm_nan): New functions.
8540 (idbl2str): Handle Inf and NaN. Remove funny label and
8541 corresponding gotos.
8542 (ALLOW_DIVIDE_BY_ZERO): New macro.
8543 (scm_divide): Allow division by zero to occur if
8544 ALLOW_DIVIDE_BY_ZERO is defined.
8545 Handle bignums and ints as special cases.
8546
8547 Additional stuff by me:
8548
8549 numbers.c (mem2ureal): Recognize "inf.0" and "nan.xxx".
8550 (scm_even_p, scm_odd_p): Treat infinity as even and odd.
8551 (iflo2str): Don't output a '+' for negative numbers or for Inf and
8552 NaN. They will provide their own sign.
8553 (scm_divide): Only allow divides by inexact zeros. Dividing by
8554 exact zeros still signals an errors.
74c58131 8555
7a0c65eb
TTN
85562002-04-22 Thien-Thi Nguyen <ttn@giblet.glug.org>
8557
87b72063 8558 * goops.h (scm_slot_exists_p): Rename from scm_slots_exists_p.
7a0c65eb 8559 * goops.c (scm_slot_exists_p): Rename from scm_slots_exists_p.
504d99c5 8560 (scm_slot_exists_p): Rename from scm_slots_exists_p.
7a0c65eb
TTN
8561 Thanks to Andreas Rottmann.
8562
5e423a39
GH
85632002-04-20 Gary Houston <ghouston@arglist.com>
8564
8565 * removal of unused fields in root state (thanks to Christopher
8566 Cramer for pointing out the disuse.)
8567 * root.h (scm_root_state): removed def_inp, def_outp, def_errp.
1841c44a 8568 (scm_def_inp, scm_def_outp, scm_def_errp): removed.
b6287a25 8569
5e423a39
GH
8570 * root.c (root_mark): don't mark them.
8571 (scm_make_root): don't set them to #f.
8572 * init.c (scm_init_standard_ports): don't initialise with the
8573 default ports.
8574
9d2cce76
MV
85752002-04-17 Marius Vollmer <mvo@zagadka.ping.de>
8576
8577 * Makefile.am (EXTRA_DIST): Added cpp_err_symbols.c and
8578 cpp_sig_symbols.c.
8579
85802002-04-16 Marius Vollmer <mvo@zagadka.ping.de>
8581
8582 * guile-snarf.in: Do not clean input file. This would write to
8583 the $(srcdir) during a VPATH build, which is not allowed. It also
8584 isn't needed since it only works when an output filename has been
8585 specified and in that case we don't need to clean the input file
8586 because the output file will already exist.
8587
6f79b6cc
MV
85882002-03-31 Marius Vollmer <mvo@zagadka.ping.de>
8589
8590 * guile-snarf: Install the trap for removing $cleanfile only when
8591 the value of $cleanfile is actually known.
8592
21550b10
RB
85932002-04-10 Rob Browning <rlb@defaultvalue.org>
8594
8595 * .cvsignore: add versiondat.h and *.c.clean.c.
8596
bc76d628
DH
85972002-03-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
8598
8599 * srcprop.[ch] (scm_c_source_property_breakpoint_p): New
8600 function, replaces macro SRCBRKP.
8601
8602 (SRCBRKP): Deprecated.
8603
8604 * eval.c (SCM_CEVAL): Replaced use of SRCBRKP by call to
8605 scm_c_source_property_breakpoint_p. Removed some use of arg1 as
8606 temporary variable.
8607
5132eef0
DH
86082002-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
8609
8610 * debug.h, eval.c: Deprecated CHECK_ENTRY, CHECK_APPLY and
8611 CHECK_EXIT and removed all references to them.
8612
680516ba
DH
86132002-03-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8614
8615 * debug.h (scm_ready_p, debug_print): Removed declarations.
8616
8617 * eval.c (EVALCELLCAR): Removed.
8618
8619 (SCM_CEVAL): Eliminated label loopnoap. Removed side-effecting
8620 operation from condition.
8621
e2bd68e0
MV
86222002-03-24 Marius Vollmer <mvo@zagadka.ping.de>
8623
8624 * guile-snarf.in: When the output filename is "-", write to
8625 stdout. When no "-o" option is given, use "-" as the output
8626 filename (i.e., stdout). Only 'clean' the inputfile or remove the
8627 output file on error when the output file name is not "-". Define
8628 the preprocessor macro SCM_MAGIC_SNARFER while snarfing.
8629
8630 * Makefile.am (.c.x): Pass "-o $@" to guile-snarf.
8631
ab1f1094
DH
86322002-03-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
8633
8634 * eval.c (SCM_CEVAL, SCM_APPLY): Eliminated labels wrongnumargs
8635 and the corresponding goto statements. Removed redundant code.
8636
42030fb2
DH
86372002-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
8638
8639 * eval.c (SCM_CEVAL): Minimized scope of variable arg2.
8640 Eliminated redundant SCM_IMP check. Exlined call to EVALCAR.
8641 Re-enabled handing of rpsubrs and asubrs.
8642
e050d4f8
DH
86432002-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
8644
8645 * eval.c (SIDEVAL): Removed.
8646
8647 (SCM_CEVAL): Minimized scope of variable orig_sym. Eliminated
8648 goto-labels cdrxnoap, cdrxbegin and nontoplevel_cdrxnoap. Changed
8649 argument checking order for set! to locals, variables and symbols.
8650 Improvements to control structure. Removed some uses of arg1 and
8651 arg2 as temporary variables.
8652
a6d344d3
TTN
86532002-03-15 Thien-Thi Nguyen <ttn@giblet.glug.org>
8654
8655 * guile-snarf.in: Remove "--compat=1.4" support.
8656 Add "-d" and "-D" support.
8657
8658 (deprecated_list): New var.
8659 (compat_mode_clean_xxx): Delete.
8660 (grep_deprecated): New func.
8661 ("main"): If "-d" or "-D", call `grep_deprecated'.
8662
3939e9df
NJ
86632002-03-15 Neil Jerram <neil@ossau.uklinux.net>
8664
387d418c
NJ
8665 * hooks.h: Change scm_t_c_hookype_t everywhere to
8666 scm_t_c_hook_type.
8667
bb2c02f2 8668 Docstring fixes:
a6d344d3 8669
bb2c02f2
NJ
8670 * strings.c (scm_string_p): Change unnecessary `iff' to `if'.
8671
8672 * ports.c (scm_sys_make_void_port): Use `@file'.
8673
8674 * numbers.c (scm_number_p, scm_real_p): Use `otherwise' rather
8675 than `else'.
8676
8677 * macros.c (scm_makmacro): Don't say that the form replaces its
8678 source, because it doesn't.
8679 (scm_makmmacro): Clarify difference between this and scm_makmacro.
8680
8681 * backtrace.c (scm_display_error), filesys.c (scm_umask,
8682 scm_select, scm_basename), goops.c (scm_method_generic_function),
8683 numbers.c (scm_integer_length), posix.c (scm_getgroups, scm_execl,
8684 scm_setlocale, scm_flock), socket.c (scm_shutdown): Correct
8685 spelling mistakes.
8686
3939e9df
NJ
8687 * debug.c (scm_debug_options), eval.c
8688 (scm_eval_options_interface), read.c (scm_read_options): Change
8689 incorrect @var in docstring to @code.
8690
3b3cc781
MV
86912002-03-14 Marius Vollmer <mvo@zagadka.ping.de>
8692
500b0d5b
MV
8693 * unif.c (singp): Use SCM_REALP instead of SCM_SLOPPY_REALP.
8694
3b3cc781
MV
8695 * snarf.h (SCM_SNARF_INIT): Add "^:^" after code so that
8696 guile-snarf can remove trailing non-init code.
8697
8698 * guile-snarf.in (modern_snarf): Remove everything following and
8699 including "^:^" from the output.
8700
dff98306
DH
87012002-03-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
8702
8703 * eval.c (SCM_CEVAL), srcprop.h (SRCBRKP): Eliminated union 't'.
8704
8705 * eval.c (SCM_CEVAL): Exlined call to EVALCAR.
8706
2287fb53
TTN
87072002-03-13 Thien-Thi Nguyen <ttn@giblet.glug.org>
8708
8709 * guile-snarf.in: Update copyright.
8710 Rewrite to internalize error handling.
8711 Add "--compat=1.4" handling.
8712 Add commentary.
8713
8714 * Makefile.am (libpath.h): Use @top_srcdir_absolute@.
8715 (snarfcppopts): New var.
8716 (.c.x): Use $(snarfcppopts). Rework guile-snarf usage.
8717 (.c.doc): Use $(snarfcppopts).
8718
822250a4
TTN
8719 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
8720 continuations.c, debug-malloc.c, debug.c, deprecation.c, dynl.c,
8721 dynwind.c, environments.c, eq.c, error.c, eval.c, evalext.c,
8722 extensions.c, feature.c, filesys.c, fluids.c, fports.c, gc.c,
8723 goops.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
8724 ioext.c, iselect.c, keywords.c, lang.c, list.c, load.c, macros.c,
8725 modules.c, net_db.c, numbers.c, objects.c, objprop.c, options.c,
8726 pairs.c, ports.c, posix.c, print.c, procprop.c, procs.c,
8727 properties.c, ramap.c, random.c, rdelim.c, read.c, regex-posix.c,
8728 root.c, rw.c, scmsigs.c, script.c, simpos.c, socket.c, sort.c,
8729 srcprop.c, stackchk.c, stacks.c, stime.c, strings.c, strop.c,
8730 strorder.c, strports.c, struct.c, symbols.c, threads.c, throw.c,
8731 unif.c, values.c, variable.c, vectors.c, version.c, vports.c,
8732 weaks.c: Retire inclusion guard macro SCM_MAGIC_SNARFER.
8733
b7798e10
DH
87342002-03-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
8735
8736 * eval.c (SCM_CEVAL): Got rid of the last reference to t.lloc.
8737 The next step will be to remove the union 't' and simplify the
8738 code of SCM_CEVAL that way.
8739
04a98cff
NJ
87402002-03-12 Neil Jerram <neil@ossau.uklinux.net>
8741
8742 * iselect.c (collisionp, gnfds, greadfds, gwritefds, gexceptfds,
8743 rreadfds, rwritefds, rexceptfds): Made static.
8744
8745 * gc.c (terminating), fports.c (terminating): Renamed
8746 scm_i_terminating.
8747
16d98032
MV
87482002-03-11 Marius Vollmer <mvo@zagadka.ping.de>
8749
5046250e
MV
8750 * numbers.c (scm_divide): Adapt code from libstdc++/f2c to void
8751 potential overflow problems. Thanks to John W Eaton!
8752
8794207d
MV
8753 * strop.c (string_capitalize_x): Treat characters as unsigned so
8754 that 8-bit chars work. Thanks to David Pirotte!
16d98032 8755
1d15ecd3
DH
87562002-03-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
8757
8758 * eval.c (SCM_CEVAL): Cleaned up the handling of 'slot-ref',
8759 'slot-set!' and 'nil-cond'. Removed some uses of t.arg1, arg2 and
8760 proc as temporary variables. Introduced temporary variables with
8761 hopefully descriptive names for clarification. Replaced SCM_N?IMP
8762 by a more explicit predicate in some places.
8763
87642002-03-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
f12745b6
DH
8765
8766 * eval.c (SCM_CEVAL): Cleaned up the handling of #@dispatch.
8767 Added lots of comments regarding the implementation of #@dispatch.
8768 Changed intra-procedure communication to use t.arg1 instead of
8769 arg2. Removed some uses of t.arg1, t.lloc and proc as temporary
8770 variables. Introduced temporary variables with hopefully
8771 descriptive names for clarification. Replaced SCM_N?IMP by a more
8772 explicit predicate in some places. Use SCM_INSTANCE_HASH instead
8773 of computing the expression explicitly. Eliminate now unused
8774 label nontoplevel_cdrxbegin.
8775
8776 * goops.h (SCM_INSTANCE_HASH): New macro.
8777
8778 * objects.h (SCM_CMETHOD_FORMALS, SCM_CMETHOD_BODY): New macros.
8779
1ebf1566
TTN
87802002-03-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
8781
8782 * Makefile.am (bin_SCRIPTS): Revive this decl, w/ initial element
8783 "guile-snarf" moved back from `noinst_SCRIPTS'.
8784
020c890c
NJ
87852002-03-08 Neil Jerram <neil@ossau.uklinux.net>
8786
58d233cc
NJ
8787 * srcprop.c (scm_set_source_property_x): If SRCPROPS obj already
8788 exists when adding a source property other than those that are
8789 handled explicitly, add the new property to the SRCPROPS obj's
8790 plist.
8791
020c890c
NJ
8792 * debug.h (SCM_MAX_FRAME_SIZE): Remove incorrect comment about use
8793 of SCM_MAX_FRAME_SIZE as a bit mask; it isn't used like this.
8794
8795 * eval.c (SCM_CEVAL): Don't store scm_debug_eframe_size in
8796 debug.status. It isn't needed, and it can overflow the bits
8797 reserved for it (which may lead to a segv or a GC abort).
8798
3f04400d
DH
87992002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8800
8801 * eval.c (SCM_CEVAL): Cleaned up the handling of 'apply'. Removed
8802 side-effecting operations from conditions and macro calls.
8803 Replaced SCM_N?IMP by a more explicit predicate in some places.
8804 Minimized the scope of some variables.
8805
97820583
SJ
88062002-03-02 Stefan Jahn <stefan@lkcc.org>
8807
8808 * convert.i.c: Fixed int <-> long conversions which would have
8809 failed if their sizes were different.
8810
38ace99e
DH
88112002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8812
8813 * eval.c (SCM_CEVAL): Cleaned up the handling of 'if', 'let',
8814 'letrec' and 'set*': Removed some uses of t.arg1, t.lloc and proc
8815 as temporary variables. Removed side-effecting operations from
8816 conditions and macro calls. Introduced temporary variables with
8817 hopefully descriptive names for clarification. Replaced SCM_N?IMP
8818 by a more explicit predicate in some places. Removed code that
8819 was conditionally compiled if SICP was defined - which it never
8820 is.
8821
e5cb71a0
DH
88222002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8823
8824 * eval.c (SCM_CEVAL): Cleaned up the handling of 'cons' and 'do':
8825 Removed some uses of t.arg1 and proc as temporary variables.
8826 Removed side-effecting operations from conditions and macro calls.
8827 Introduced temporary variables with hopefully descriptive names
8828 for clarification. Replaced SCM_N?IMP by a more explicit
8829 predicate in some places.
8830
6a0f6ff3
DH
88312002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8832
8833 * eval.c (scm_badargsp, SCM_CEVAL): Replaced SCM_N?IMP by a more
8834 explicit predicate in some places.
8835
8836 (CHECK_EQVISH): Removed.
8837
8838 (SCM_CEVAL): Removed some uses of t.arg1 and proc as temporary
8839 variables. Removed side-effecting operations from conditions and
8840 macro calls. Introduced temporary variables for clarification.
8841 Sorted if-else-if check for the type of the last form in a list by
8842 frequency. Avoided some unnecessary tail-recursion calls.
8843
228a24ef
DH
88442002-03-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
8845
8846 * gc.c (SCM_HEAP_SEG_SIZE, CELL_UP, CELL_DN, NEXT_DATA_CELL,
8847 init_heap_seg, alloc_some_heap), gc.h (struct scm_cell, struct
8848 scm_t_cell, SCM_CELLPTR, SCM_GC_CARD_SIZE,
8849 SCM_GC_IN_CARD_HEADERP), tags.h (SCM_CELLP): Renamed the struct
8850 scm_cell and all its uses to scm_t_cell in accordance to Guile's
8851 naming scheme for types.
8852
8853 * alist.c (scm_acons), convert.i.c (CTYPES2UVECT,
8854 CTYPES2UVECT_OPTIONAL), coop-threads.c (scm_call_with_new_thread,
8855 scm_spawn_thread), debug.c (scm_make_debugobj), environments.c
8856 (scm_make_environment), eval.c (scm_closure), fports.c
8857 (scm_fdes_to_port), gc.c (scm_deprecated_newcell,
8858 scm_deprecated_newcell2), inline.h (scm_alloc_cell, scm_cell),
8859 list.c (SCM_I_CONS), numbers.c (scm_i_mkbig), pairs.c (scm_cons),
8860 ports.c (scm_void_port), procs.c (scm_c_make_subr, scm_makcclo),
8861 smob.c (scm_make_smob), smob.h (SCM_NEWSMOB), strings.c
8862 (scm_take_str, scm_allocate_string), strports.c (scm_mkstrport),
8863 unif.c (scm_make_uve), variable.c (make_variable), vectors.c
8864 (scm_c_make_vector), vports.c (scm_make_soft_port): Renamed
8865 scm_alloc_cell to scm_cell.
8866
8867 * environments.c (core_environments_observe), gc.c
8868 (scm_deprecated_newcell2), goops.c (wrap_init, scm_wrap_object),
8869 inline.h (scm_alloc_double_cell, scm_double_cell), num2float.i.c
8870 (FLOAT2NUM), numbers.c (scm_make_real), procs.c
8871 (scm_make_procedure_with_setter), smob.h (SCM_NEWSMOB2,
8872 SCM_NEWSMOB3), struct.c (scm_make_struct, scm_make_vtable_vtable),
8873 symbols.c (scm_mem2symbol, scm_mem2uninterned_symbol), weaks.c
8874 (allocate_weak_vector): Renamed scm_alloc_double_cell to
8875 scm_double_cell.
8876
edb810bb
SJ
88772002-02-27 Stefan Jahn <stefan@lkcc.org>
8878
8879 * convert.i.c, convert.c: Better range checking.
8880
8881 * inet_aton.c, fports.c: Commented the inclusion of <winsock2.h>.
8882
1ebf1566 8883 * deprecation.c (vsnprintf): Define to `_vsnprintf' for
edb810bb
SJ
8884 Windows (MinGW).
8885
327d4dd3
TTN
88862002-02-26 Thien-Thi Nguyen <ttn@giblet.glug.org>
8887
8888 * Makefile.am: Update path to pre-inst-guile automake frag.
8889
89d7a92c 88902002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
646052c0
DH
8891
8892 * gc.c (scm_gc_sweep): Make it compile even when deprecated
8893 features are excluded.
8894
89d7a92c 88952002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
bac0e232
DH
8896
8897 * num2integral.i.c (NUM2INTEGRAL): Fixed signedness problem.
8898
4f2716b6
GH
88992002-02-25 Gary Houston <ghouston@arglist.com>
8900
8901 * convert.c: include <string.h> for convert_i.c.
8902
46151112
RB
89032002-02-24 Rob Browning <rlb@defaultvalue.org>
8904
8905 * .cvsignore: add stamp-h1.
8906
cd328b4f
NJ
89072002-02-21 Neil Jerram <neil@ossau.uklinux.net>
8908
8909 * unif.c (scm_array_to_list): Correct name, which had been
8910 accidentally changed to scm_t_arrayo_list!
8911
c709de7f
MD
89122002-02-20 Mikael Djurfeldt <mdj@linnaeus>
8913
8914 * gc.c (scm_gc_sweep): Print an error message when aborting due to
8915 underflowing scm_mallocated.
8916
c1965d31
MV
89172002-02-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8918
8919 * gc.h, gc.c (scm_must_malloc, scm_must_realloc, scm_must_strdup,
8920 scm_must_strndup, scm_done_malloc, scm_done_free, scm_must_free):
8921 Reimplemented using the new scm_gc_malloc, etc., functions and
8922 deprecated.
8923
b606945b
TTN
89242002-02-11 Thien-Thi Nguyen <ttn@giblet.glug.org>
8925
8926 * Makefile.am (bin_PROGRAMS): Move `guile_filter_doc_snarfage'
8927 to `noinst_PROGRAMS'.
8928 (bin_SCRIPTS): Move all values to `noinst_SCRIPTS'; delete.
8929 (noinst_PROGRAMS, noinst_SCRIPTS): New.
8930
7c686ba8
MV
89312002-02-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8932
8933 * gc.h, gc.c (scm_gc_sweep): Issue deprecation warning when
8934 non-zero is returned from a port or smob free function.
8935 (scm_malloc, scm_realloc, scm_strndup, scm_strdup,
8936 scm_gc_register_collectable_memory,
8937 scm_gc_unregister_collectable_memory, scm_gc_malloc,
8938 scm_gc_realloc, scm_gc_free, scm_gc_strndup, scm_gc_strdup): New.
8939
8940 * backtrace.c, continuations.c, convert.i.c, coop-threads.c,
8941 debug-malloc.c, dynl.c, environments.c, environments.h,
8942 extensions.c, filesys.c, fports.c, gc.c, gc.h, gh_data.c, goops.c,
8943 guardians.c, hooks.c, init.c, keywords.c, load.c, numbers.c,
8944 ports.c, posix.c, procs.c, rdelim.c, regex-posix.c, root.c,
8945 smob.c, stime.c, strings.c, struct.c, struct.h, symbols.c, unif.c,
8946 vectors.c, weaks.c: Use scm_gc_malloc/scm_malloc and
8947 scm_gc_free/free instead of scm_must_malloc and scm_must_free, as
8948 appropriate. Return zero from smob and port free functions.
8949
8950 * debug-malloc.c (scm_malloc_reregister): Handle "old == NULL".
8951
8952 * deprecation.h, deprecation.c: Reimplemented to allow deprecation
8953 messages while the GC is running.
8954 (scm_c_issue_deprecation_warning_fmt): New.
8955
8956 * fports.c (scm_setvbuf): Reset read buffer to saved values when
8957 it is pointing to the putback buffer.
8958
66adc0a6
TTN
89592002-02-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
8960
8961 * gsubr.c (create_gsubr): On "too many args" error,
8962 also display arg count and name. Thanks to Bill Schottstaedt.
8963
0187b4f4
TTN
89642002-02-05 Thien-Thi Nguyen <ttn@giblet.glug.org>
8965
8966 * Makefile.am: Include $(top_srcdir)/pre-inst-guile.am.
8967
8968 (bin_SCRIPTS): Remove guile-snarf-docs-texi.
8969 (alldotdocfiles, snarf2checkedtexi, dotdoc2texi): New vars.
8970 (guile.texi, guile-procedures.texi): Use $(dotdoc2texi).
8971
8972 * guile-snarf-docs-texi.in: Bye bye.
8973
402e687c
MV
89742002-02-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8975
8976 * symbols.c (scm_make_symbol): Fix typo in docstring.
8977
8978 * symbols.h (scm_mem2uninterned_symbol, scm_symbol_interned_p,
8979 scm_make_symbol): New prototypes.
8980
319b98ed
MV
89812002-02-03 Marius Vollmer <mvo@zagadka.ping.de>
8982
8983 * symbols.h (SCM_SET_SYMBOL_HASH): Removed.
8984 (SCM_SYMBOL_INTERNED_P): New.
8985 * symbols.c (scm_symbol_hash): Use scm_ulong2num instead of
8986 SCM_MAKINUM since hash values can well be bignums.
8987 (scm_mem2symbol): Only use hash values below SCM_T_BITS_MAX/2.
8988 This signals a interned symbol.
8989 (scm_mem2uninterned_symbol, scm_symbol_interned_p,
8990 scm_make_symbol): New.
0187b4f4 8991
319b98ed
MV
8992 * print.c (scm_iprin1): Print uninterned symbols unreadably.
8993
34472dfe
TTN
89942002-02-02 Thien-Thi Nguyen <ttn@giblet.glug.org>
8995
8996 * __scm.h (HAVE_UINTPTR_T): Only define if UINTPTR_T attributes
8997 are defined: UINTPTR_MAX, INTPTR_MAX, INTPTR_MIN.
0187b4f4 8998 Thanks to Dave Love.
34472dfe 8999
1b39c2e3
MV
90002002-01-31 Marius Vollmer <mvo@zagadka.ping.de>
9001
9002 * symbols.c (scm_gensym): Use " g" as default prefix, not "g".
319b98ed 9003 This might help to make unintended clashes less likely.
1b39c2e3
MV
9004 (scm_string_to_symbol): Protect the string until the symbols is
9005 created.
9006
1fa86ca5
SJ
90072002-01-31 Stefan Jahn <stefan@lkcc.org>
9008
9009 * convert.c, convert.h, convert.i.c: New files containing C
34472dfe 9010 array to Scheme conversion helpers meant to be replacement
1fa86ca5
SJ
9011 functions for the deprecated gh interface.
9012
9013 * Makefile.am: Setup rules for new `convert.*' files.
9014
af68e5e5
SJ
90152002-01-28 Stefan Jahn <stefan@lkcc.org>
9016
9017 * symbols.c (scm_c_symbol2str): New function, replacement for
9018 `gh_scm2newsymbol()'.
9019
34472dfe 9020 * strings.c (scm_c_substring2str): New function. Proper
af68e5e5
SJ
9021 replacement for `gh_get_substr()'.
9022
9023 * socket.c: Include `stdint.h' if available for the `uint32_t'
9024 declaration.
9025
504d99c5 9026 * scmsigs.c (scm_sigaction): Initialize `chandler' (inhibits
af68e5e5
SJ
9027 compiler warning).
9028
9029 * backtrace.c: Include `lang.h' for GUILE_DEBUG conditional.
9030
c96d76b8 90312002-01-22 Neil Jerram <neil@ossau.uklinux.net>
34472dfe 9032
c96d76b8 9033 Other changes unrelated to Elisp...
34472dfe 9034
c96d76b8
NJ
9035 * eval.c (scm_m_if): Use s_if rather than repeating string literal
9036 "if".
9037 (comments): Fix a few typos.
9038 (scm_for_each): Add parentheses around oddly unparenthesized
9039 if/while conditions.
9040
9041 * read.c (scm_read_opts): Add full stop at end of doc for
9042 `keywords' option.
9043
9044 * script.c (scm_compile_shell_switches): Use scm_str2symbol
9045 instead of gh_symbol2scm.
9046
9047 * srcprop.h (SRCPROPBRK): Return C type rather than SCM.
9048 (SRCBRKP): Use SRCPROPBRK rather than duplicating its logic.
9049
9050 * srcprop.c (scm_srcprops_to_plist, scm_source_property): Change
9051 SRCPROPBRK (x) to SCM_BOOL (SRCPROPBRK (x)).
9052
9053 First batch of changes for Elisp support...
9054
9055 * alist.c, async.c, boolean.c, dynl.c, eval.c, filesys.c,
9056 fluids.c, list.c, load.c, options.c, posix.c, print.c, sort.c,
9057 throw.c, vectors.c, weaks.c: Add #include for lang.h.
9058
9059 * eval.c, eval.h, init.c, lang.c, lang.h: Use SCM_ENABLE_ELISP to
9060 conditionalize compilation and initialization of Elisp support
9061 function.
34472dfe 9062
c96d76b8
NJ
9063 * alist.c (scm_assq, scm_assv, scm_assoc), async.c
9064 (scm_asyncs_pending, scm_run_asyncs, noop), backtrace.c
9065 (scm_set_print_params_x), dynl.c (scm_make_argv_from_stringlist),
9066 filesys.c (fill_select_type, retrieve_select_type), fluids.c
9067 (scm_swap_fluids, scm_swap_fluids_reverse), list.c (scm_null_p,
9068 scm_ilength, scm_append_x, scm_last_pair, scm_reverse,
9069 scm_reverse_x, scm_list_ref, scm_list_set_x, scm_list_cdr_set_x,
bbd26b5a
NJ
9070 scm_c_memq, scm_memv, scm_member), load.c (scm_search_path),
9071 options.c (change_option_setting, scm_options), posix.c
9072 (environ_list_to_c), print.c (scm_iprlist), throw.c
9073 (scm_exit_status), vectors.c (scm_vector), weaks.c
9074 (scm_weak_vector): Use SCM_NULL_OR_NIL_P instead of SCM_NULLP.
c96d76b8
NJ
9075
9076 * boolean.c (scm_not): Use `SCM_FALSEP || SCM_NILP' instead of
9077 just SCM_FALSEP.
34472dfe 9078
c96d76b8
NJ
9079 * boolean.c (scm_boolean_p): Use `SCM_BOOLP || SCM_NILP' instead
9080 of just SCM_BOOLP.
9081
9082 * eval.c (scm_lisp_nil, scm_lisp_t, s_nil_ify, scm_m_nil_ify,
9083 s_t_ify, scm_m_t_ify, s_0_cond, scm_m_0_cond, s_0_ify,
9084 scm_m_0_ify, s_1_ify, scm_m_1_ify): Removed.
9085 (scm_m_atfop): Support function aliasing. Support both function
9086 args, which need transformation, and macro args, which do not.
9087 Add explanatory comments.
9088 (SCM_CEVAL): In switch cases for SCM_IM_AND, SCM_IM_COND,
9089 SCM_IM_DO, SCM_IM_IF and SCM_IM_OR, add `|| SCM_NILP' to existing
9090 checks for SCM_FALSEP. In switch case for SCM_IM_NIL_COND, use
9091 SCM_NULLP || SCM_NILP instead of checks against (removed)
9092 scm_lisp_nil. Removed switch cases for SCM_IM_NIL_IFY,
9093 SCM_IM_T_IFY, SCM_IM_0_COND, SCM_IM_0_IFY, SCM_IM_1_IFY.
9094
9095 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
9096 scm_m_while, scm_nil_eq): Commented out; I don't think we need
9097 these, but I don't want to remove them yet, just in case.
9098 (scm_init_lang): Define `%nil' variable on Scheme level to hold
9099 Elisp nil value.
9100
9101 * lang.h (SCM_NILP): Test against Elisp nil value instead of
9102 against (removed) scm_lisp_nil.
9103 (SCM_NILNULLP, SCM_NIL2EOL, SCM_EOL2NIL): Commented out.
9104 (SCM_NULL_OR_NIL_P): New.
9105
9106 * list.c (scm_append): Use SCM_VALIDATE_NULL_OR_NIL instead of
9107 SCM_VALIDATE_NULL.
9108
9109 * print.c (scm_isymnames): Fix comment. Remove #@nil-ify,
9110 #@t-ify, #@0-cond, #@0-ify, #@1-ify. Add #nil (for SCM_ELISP_NIL
9111 value).
9112
9113 * sort.c (scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
9114 scm_sort_x, scm_sort, scm_stable_sort_x, scm_stable_sort): Use
9115 SCM_NULL_OR_NIL_P instead of SCM_NULLP. In constructions like `if
9116 (SCM_NULLP (x)) return SCM_EOL;', return x rather than SCM_EOL.
9117
9118 * tags.h (SCM_IM_NIL_IFY, SCM_IM_T_IFY, SCM_IM_0_COND,
9119 SCM_IM_0_IFY, SCM_IM_1_IFY): Removed.
9120 (SCM_IM_BIND, SCM_IM_DELAY, SCM_IM_CALL_WITH_VALUES, SCM_UNBOUND):
9121 Numbering shifted down accordingly.
9122 (SCM_ELISP_NIL): New IFLAG.
9123
9124 * validate.h (SCM_VALIDATE_NULL_OR_NIL): New.
34472dfe 9125
a392ee15
DH
91262002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9127
9128 * eval.c: Removed outdated references to "everr". Improved some
9129 comments.
9130
9131 (scm_deval_args, deval_args): Renamed scm_deval_args to
9132 deval_args, since it is not part of the interface.
9133
9134 (SCM_CEVAL): Added (maybe somewhat verbose) comment. Avoid to
9135 use references to debug.vect[0] before it exists. Add parentheses
9136 to switch statement.
9137
9138 * goops.h: Added local emacs variables.
9139
24933780
DH
91402002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9141
9142 * eval.[ch] (scm_deval_args): Made static.
9143
9144 * srcprop.c (scm_source_property): Remove redundant SCM_IMP
9145 test.
9146
9147 * strings.c (scm_c_string2str): Clarified comment. Replaced
9148 THINKME by FIXME for uniformness. Removed question about whether
9149 arguments need to be protected from garbage collection: Arguments
9150 must be protected as any other variable.
9151
f9450cdb
DH
91522002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9153
9154 * procs.h (SCM_CLOSURE_BODY): New Macro.
9155
9156 * debug.c (scm_procedure_name, scm_procedure_source), eval.c
9157 (SCM_CEVAL, SCM_APPLY), goops.c (scm_sys_initialize_object,
9158 get_slot_value, set_slot_value), procs.c
9159 (scm_procedure_documentation), sort.c (closureless), stacks.c
9160 (get_applybody): Replace SCM_CDR (SCM_CODE (...)) by
9161 SCM_CLOSURE_BODY.
9162
9163 * sort.c (closureless): Prefer !SCM_FOOP over SCM_NFOOP.
9164
5dc64f64
MV
91652001-12-26 Marius Vollmer <mvo@zagadka.ping.de>
9166
9167 * Makefile.am (guile-procedures.txt): When we don't have makeinfo,
9168 use "cp" instead.
9169
197ee3d3
MV
91702001-12-16 Marius Vollmer <mvo@zagadka.ping.de>
9171
9172 * stacks.c, stacks.h (scm_t_stackype): Renamed to scm_stack_type
9173 everywhere.
9174
9175 * continuations.c (scm_make_continuation): Do not retain the
9176 throw_value when the continuation is invoked.
9177
4d4528e7
SJ
91782001-12-08 Stefan Jahn <stefan@lkcc.org>
9179
9180 * strings.c (scm_c_string2str): New function. Converts a
34472dfe 9181 given Scheme string into a C string. Also put in two
4d4528e7
SJ
9182 THINKME's regarding the malloc policy for the missing converter
9183 routines.
9184
98347362
NJ
91852001-12-01 Neil Jerram <neil@ossau.uklinux.net>
9186
9187 * gh_data.c (gh_module_lookup): Use scm_str2symbol rather than
9188 gh_symbol2scm.
9189
1fc8902f
DH
91902001-11-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
9191
9192 * gc.h (SCM_GC_CELL_WORD, SCM_GC_CELL_OBJECT,
9193 SCM_GC_SET_CELL_WORD, SCM_GC_SET_CELL_OBJECT): New macros.
9194
9195 (SCM_GC_CELL_TYPE, SCM_CELL_WORD, SCM_CELL_OBJECT,
9196 SCM_SET_CELL_WORD, SCM_SET_CELL_OBJECT, SCM_FREE_CELL_CDR,
9197 SCM_GC_SET_CELL_OBJECT): Express in terms of SCM_GC_CELL_*
9198 macros.
9199
9200 (SCM_FREE_CELL_P): Express in terms of SCM_GC_CELL_TYPE.
9201
9202 * inline.h (scm_alloc_cell, scm_alloc_double_cell): Use
9203 SCM_GC_CELL_* macros when accessing free cells.
9204
4878beec
MV
92052001-11-25 Marius Vollmer <mvo@zagadka.ping.de>
9206
9207 * vectors.h (SCM_MAKE_VECTOR_TAG): New.
34472dfe 9208 * unif.h (SCM_MAKE_BITVECTOR_TAG, SCM_MAKE_UVECTOR_TAG): New.
4878beec
MV
9209 * symbols.h (SCM_MAKE_SYMBOL_TAG): New.
9210 * strings.h (SCM_MAKE_STRING_TAG): New.
9211 * procs.h (SCM_MAKE_CCLO_TAG): New.
9212 * numbers.h (SCM_MAKE_BIGNUM_TAG): New.
9213
9214 * goops.h: Replaced SCM_DEBUG_DEPRECATED with
9215 !SCM_ENABLE_DEPRECATED.
9216
9217 * async.c, async.h (scm_system_async_mark_from_signal_handler):
9218 New.
9219
9220 * scmsigs.c (scm_take_signal): Removed all code that assumes that
9221 signal handlers are allowed to divert the flow of control. Call
9222 scm_system_async_mark_from_signal_handler instead of
9223 scm_system_async_mark.
9224
9225
9226 Deprecated SCM_NEWCELL and SCM_NEWCELL2. Added scm_alloc_cell and
9227 scm_alloc_double_cell in their place.
34472dfe 9228
4878beec
MV
9229 * gc.h (SCM_GC_SET_ALLOCATED, scm_debug_newcell,
9230 scm_debug_newcell2, scm_tc16_allocated): Removed from header.
9231 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
9232 (SCM_NEWCELL, SCM_NEWCELL2): Implement in terms of
9233 scm_deprecated_newcell and scm_deprecated_newcell2.
9234
9235 gc.c (scm_tc16_allocated): Only define when including deprecated
9236 features.
9237 (scm_debug_newcell, scm_debug_newcell2): Removed.
9238 (scm_init_storage): Do not initialize scm_tc16_allocated.
9239 (scm_init_gc): Do it here.
9240 (allocated_mark): New, from old code.
9241 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
34472dfe 9242
4878beec 9243 * inline.c, inline.h: New files.
34472dfe 9244 * Makefile.am: Added them in all the right places.
4878beec 9245
34472dfe 9246 * _scm.h: Include "libguile/inline.h".
4878beec
MV
9247
9248 * alist.c, coop-threads.c, debug.c, environments.c, eval.c,
9249 fports.c, gh_data.c, goops.c, guardians.c, lang.c, list.c,
9250 num2float.i.c, numbers.c, pairs.c, ports.c, print.c, procs.c,
9251 smob.c, smob.h, strings.c, strports.c, struct.c, symbols.c,
9252 unif.c, variable.c, vectors.c, vports.c, weaks.c: Replaced
9253 SCM_NEWCELL and SCM_NEWCELL2 with scm_alloc_cell and
9254 scm_alloc_double_cell, respectively.
9255
d2bc7fae
MV
92562001-11-23 Marius Vollmer <mvo@zagadka.ping.de>
9257
9258 * modules.c (scm_c_use_module): Adapt to changes to
9259 `process-use-modules'.
9260
5eec27e9
DH
92612001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
9262
9263 * numbers.c (scm_divide): Fix more division by zero errors.
9264
8978878f
GH
92652001-11-21 Gary Houston <ghouston@arglist.com>
9266
9267 * Makefile.am (OMIT_DEPENDENCIES): removed, since it seems to be
9268 obsolete. autogen.sh says:
9269 invalid unused variable name: `OMIT_DEPENDENCIES'
9270
164826d3
DH
92712001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
9272
9273 * numbers.c (scm_divide): Fix (/ 0). Thanks to Keith Wright for
9274 reporting the bug.
9275
84aff7a7
MV
92762001-11-21 Marius Vollmer <mvo@zagadka.ping.de>
9277
9278 * Makefile.am (install-exec-hook): Prepend $(DESTDIR) to filename.
9279 Thanks to Eric Gillespie, Jr!
34472dfe 9280
6063dc1d
SJ
92812001-11-21 Stefan Jahn <stefan@lkcc.org>
9282
34472dfe
TTN
9283 * win32-socket.c (getservent, setservent, endservent,
9284 getprotoent, setprotoent, endprotoent): New functions.
6063dc1d
SJ
9285 Appropriate replacements for M$-Windows.
9286
9287 * numbers.c (SIZE_MAX, PTRDIFF_MAX, PTRDIFF_MIN): Reintroduced
9288 these definitions for GUILE_DEBUG.
9289
9290 * net_db.c: Include "win32-socket.h" if compiling with a native
34472dfe
TTN
9291 M$-Windows compiler. Include some pieces of code (protoent and
9292 servent interface) protected by HAVE_* macros when using a
6063dc1d
SJ
9293 native M$-Windows compiler.
9294
351982f6
MV
92952001-11-20 Marius Vollmer <mvo@zagadka.ping.de>
9296
9297 * modules.c (scm_c_export): Do nothing when the first argument is
9298 already the terminating NULL. Thanks to Han-Wen Nienhuys!
9299
849038b5
TTN
93002001-11-20 Thien-Thi Nguyen <ttn@glug.org>
9301
9302 * Makefile.am (libpath.h): In SCM_BUILD_INFO,
9303 also include `buildstamp'.
9304
5c790b44
RB
93052001-11-18 Rob Browning <rlb@defaultvalue.org>
9306
9307 * version.c
9308 (s_scm_major_version): use SCM_MAJOR_VERSION.
9309 (s_scm_minor_version): use SCM_MINOR_VERSION.
9310 (s_scm_micro_version): use SCM_MICRO_VERSION.
9311 (s_scm_version): use SCM_MAJOR_VERSION, SCM_MINOR_VERSION, and
9312 SCM_MICRO_VERSION.
9313
9314 * version.h.in
9315 (SCM_MAJOR_VERSION): renamed from SCM_GUILE_MAJOR_VERSION.
9316 (SCM_MINOR_VERSION): renamed from SCM_GUILE_MINOR_VERSION.
9317 (SCM_MICRO_VERSION): renamed from SCM_GUILE_MICRO_VERSION.
9318
694a9bb3
NJ
93192001-11-18 Neil Jerram <neil@ossau.uklinux.net>
9320
9321 * vectors.c (scm_vector_move_left_x, scm_vector_move_right_x):
9322 Rewrite docstrings without reference to substring-move-left/right,
9323 since the latter no longer exist.
9324
302c12b4
DH
93252001-11-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
9326
9327 * eval.c: Removed bogus comment about acros.
9328
9329 (scm_unmemocar): Use !SCM_CONSP instead of SCM_IMP.
9330 Minimize scope of local variable. Eliminate dependency on
9331 macro DEBUG_EXTENSIONS.
9332
9333 (s_splicing): New error message string.
9334
9335 (scm_m_body): Issue 'bad body' message rather than 'missing
9336 expression' message.
9337
9338 (scm_m_quote): Eliminate unnecessary copying.
9339
9340 (scm_m_lambda, scm_m_letstar, scm_m_letrec, scm_m_let): Leave the
9341 checking of the body to scm_m_body.
9342
9343 (scm_m_do): Move comment to function header. Rename arg1 to
9344 binding. Made the code a bit easier to read.
9345
9346 (evalcar): Removed.
9347
9348 (iqq): Added a comment. Changed the depth parameter to
9349 unsigned. Use size_t for vector lengths. Make sure vector object
9350 is gc protected as long as its contents are read. Add some syntax
9351 checks. Get rid of unnecessary SCM_IMP test. Clean up the
9352 control structure a bit.
9353
9354 (scm_m_delay): Added comment about the implementation of
9355 scm_m_delay.
9356
9357 (scm_m_define): Add comment about guile's currying define
9358 syntax. Renamed 'proc' to 'name'. Eliminate dependency on macro
9359 DEBUG_EXTENSIONS. Simplified code a bit. Eliminate SICP code.
9360
9361 (scm_m_letrec1): Removed. Part of the functionality is taken
9362 over by the new function 'transform_bindings'.
9363
9364 (transform_bindings): New function. Takes over some of the
9365 functionality of removed function 'scm_m_letrec1', namely to split
9366 a list of bindings into a reversed list of variables and a list of
9367 initializers.
9368
9369 (scm_m_letrec): Call 'transform_bindings'.
9370
9371 (scm_m_let): Minimized scope of local variables. Renamed 'proc'
9372 to 'temp' and 'arg1' to 'binding'. Eliminated redundant SCM_NIMP
9373 test. Use 'transform_bindings'. Fixed scoping error with named
9374 let (Thanks to Aubrey Jaffer for reporting the bug and to Neil
9375 Jerram for suggesting the fix). Cleaned up the control structure
9376 a bit.
9377
9378 (scm_m_expand_body): Use 'transform_bindings'. Eliminated
9379 unnecessary consing. Eliminated unnecessary
9380 SCM_DEFER/ALLOW_INTS.
9381
9382 (SCM_CEVAL): Un-obfuscated some loops.
9383
cecb4a5e
NJ
93842001-11-16 Neil Jerram <neil@ossau.uklinux.net>
9385
8f85c0c6
NJ
9386 * gc.h (scm_unhash_name): Old declaration removed.
9387
9388 * eval.c (s_scm_eval): Change @var{primitive-eval} to
9389 @code{primitive-eval}.
9390
9391 * feature.c, vectors.c, net_db.c, unif.c, weaks.c, struct.c,
9392 version.c, alist.c, ports.c, ramap.c, unif.c, strings.c, list.c:
9393 Change @deffnx lines in docstrings to say {Scheme Procedure}
9394 rather than primitive or procedure.
9395
9396 * posix.c (scm_execl), filesys.c (scm_close), unif.c
9397 (scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
9398 scm_bit_set_star_x, scm_bit_invert_x), ramap.c (scm_array_fill_x,
9399 scm_array_for_each, scm_array_index_map_x), vectors.c (scm_vector,
9400 scm_make_vector, scm_vector_to_list, scm_vector_fill_x), strop.c
9401 (scm_string_split, scm_string_ci_to_symbol), strings.c
9402 (scm_string_p), sort.c (scm_merge), print.c (scm_newline),
9403 macros.c (scm_macro_type), alist.c (scm_acons, scm_assq):
9404 Docstring fixes and improvements reflecting edits that have been
9405 made in the reference manual source.
9406
9407 * objprop.c (scm_object_properties, scm_set_object_properties_x,
9408 scm_object_property, scm_set_object_property_x): Remove invalid
9409 @deffnx lines for corresponding procedure property primitives.
9410
cecb4a5e
NJ
9411 These changes add a @deffnx C function declaration and function
9412 index entries for each Guile primitive to the copy of the doc
9413 snarf output that is used for reference manual synchronization.
9414 Online help is unchanged.
849038b5 9415
cecb4a5e
NJ
9416 * snarf.h (SCM_SNARF_DOCS): Output primitive's C function name.
9417 (SCM_DEFINE, SCM_DEFINE1, SCM_REGISTER_PROC): Supply to C function
9418 name to SCM_SNARF_DOCS.
849038b5 9419
cecb4a5e
NJ
9420 * guile-snarf-docs-texi.in: Pass the shell script's arguments into
9421 snarf-check-and-output-texi.
9422
9423 * Makefile.am (guile-procedures.texi): New rule.
9424 (BUILT_SOURCES, guile.texi, guile-procedures.txt, CLEANFILES):
9425 Changed so that the last stage of doc snarfing is now performed
9426 twice, once to produce guile-procedures.txt for online help, and
9427 once to produce guile.texi for reference manual synchronization.
9428
ddea3325
DH
94292001-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
9430
9431 * eval.c (RETURN): Wrap in do{}while(0) in order to make it
9432 safely usable as a single statement followed by a ';', for example
9433 in an if statement.
9434
9435 (SCM_CEVAL, SCM_APPLY): Clean up code using 'RETURN'.
9436
72dd0a03
NJ
94372001-11-13 Neil Jerram <neil@ossau.uklinux.net>
9438
9439 * random.c (scm_random_solid_sphere_x,
9440 scm_random_hollow_sphere_x): Correct "shere" typos.
9441
9442 * hashtab.c (scm_hash_fold): Add missing apostrophe to docstring.
9443
9444 * version.c (scm_version): Update docstring to include
9445 `micro-version'.
9446
6558eda6
MV
94472001-11-13 Marius Vollmer <mvo@zagadka.ping.de>
9448
409b8588
MV
9449 * modules.c (scm_c_export): Call va_end after collecting the
9450 symbols.
9451
adb8c0f2
MV
9452 * strop.h, strop.c (scm_substring_move_left_x,
9453 scm_substring_move_right_x): Removed.
9454
6558eda6
MV
9455 * __scm.h (HAVE_UINTPTR_T, HAVE_PTRDIFF_T, HAVE_LONG_LONG,
9456 HAVE_LONG_LONGS): Define to "1" when defining them, to mirror what
9457 configure does.
9458
5d8fc640
MV
94592001-11-12 Marius Vollmer <mvo@zagadka.ping.de>
9460
9461 * numbers.c: Document macros to define when including
9462 num2integral.i.c. MAX_VALUE and MIN_VALU are no longer used, we
9463 now rely on SIZEOF_ macros that have been figured out at
9464 configure time.
9465
9466 * num2integral.i.c: Adapt to new interface.
9467 (NUM2INTEGRAL): Test whether a fixnum can be represented in the
9468 target type by casting it and checking whether it is still the
9469 same. Do not try to handle bignums for integral types that are
9470 smaller than fixnums. When handling bignums, collect the
9471 magnituse first into a unsigned type, and correctly check for
9472 overflow.
9473 (INTEGRAL2BIG): Do not use MIN_VALUE explicitely by observing that
9474 only -MIN_VALUE can still be negative of all negative numbers (in
9475 twos-complement).
9476
849038b5 9477 * tags.h (SIZEOF_SCM_T_BITS): Define it appropriately.
5d8fc640
MV
9478
9479 * __scm.h: Define HAVE_UINTPTR_T, HAVE_PTRDIFF_T and
9480 HAVE_LONG_LONG depending on whether their size is non-zero.
9481
d6b8cf11
TTN
94822001-11-11 Thien-Thi Nguyen <ttn@glug.org>
9483
9484 * strop.c (scm_string_null_p): Docfix; nfc.
9485 Thanks to Scott Lenser.
9486
9401323e
NJ
94872001-11-07 Neil Jerram <neil@ossau.uklinux.net>
9488
9489 * extensions.c (scm_load_extension): Canonicalize docstring
9490 whitespace.
9491
9492 * unif.c (scm_uniform_array_write), ports.c
9493 (scm_current_output_port, scm_force_output), dynwind.c
9494 (scm_dynamic_wind), scmsigs.c (scm_setitimer, scm_getitimer),
9495 filesys.c (scm_open, scm_lstat), struct.c
9496 (scm_make_struct_layout), random.c (scm_random,
9497 scm_random_solid_sphere_x, scm_random_hollow_sphere_x, strop.c
9498 (scm_i_index): Remove superfluous whitespace from end of docstring
9499 lines.
9500
9501 * filesys.c (scm_select), guardians.c (scm_guardian_greedy_p),
9502 strings.c (scm_make_string), variable.c (scm_make_variable,
9503 scm_make_undefined_variable, scm_variable_p, scm_variable_set_x,
9504 scm_variable_bound_p), scmsigs.c (scm_setitimer, scm_getitimer),
9505 posix.c (scm_crypt), struct.c (scm_make_vtable_vtable), hashtab.c
9506 (scm_hash_fold), ports.c (scm_port_for_each): Remove superfluous
9507 newline at end of docstrings.
9508
9509 * modules.c (scm_set_current_module): Add missing newline to
9510 docstring.
9511
b4e15479
SJ
95122001-11-07 Stefan Jahn <stefan@lkcc.org>
9513
9514 * win32-socket.[ch]: New files. Defines Winsock-API error codes
9515 and makes them available through Guile. That is because the
9516 Winsock-API does not store its errors in `errno' and thus cannot
9517 return error messages via `strerror (errno)'.
9518
9519 * socket.c (scm_init_socket): Initialize `win32-socket' part
9520 here under M$-Windows.
9521
d6b8cf11 9522 * numbers.h: Added missing declaration of
b4e15479
SJ
9523 `scm_sys_check_number_conversions()'.
9524
9525 * error.c: Local definition of SCM_I_STRERROR and SCM_I_ERRNO
9526 and use in `(strerror)' and `(system-error)'.
9527
d6b8cf11 9528 * Makefile.am (EXTRA_libguile_la_SOURCES): Added
b4e15479
SJ
9529 `win32-socket.[ch]' to extra source and header files.
9530
7ab89df1
MV
95312001-11-06 Marius Vollmer <mvo@zagadka.ping.de>
9532
9533 * script.c (scm_shell_usage, scm_compile_shell_switches): Prepend
9534 a call to turn-on-debugging when --debug has been given instead of
9535 turning it on directly. Also, handle new `--no-debug' option,
9536 which might suppress the call to turn-on-debugging.
9537
0233bfc1
SJ
95382001-11-05 Stefan Jahn <stefan@lkcc.org>
9539
9540 * struct.c (s_scm_struct_vtable_p): Corrected docstring.
9541
8f99e3f3
SJ
95422001-11-04 Stefan Jahn <stefan@lkcc.org>
9543
9544 * Makefile.am (libguile_la_LIBADD): Added $(THREAD_LIBS_LOCAL)
d6b8cf11 9545 here (was at guile_LDADD) which describes the dependency
8f99e3f3
SJ
9546 correctly and allows a clean build on Win32.
9547
d6b8cf11 9548 * __scm.h (SCM_API): Follow-up patch. Renamed __FOO__ macros
8f99e3f3
SJ
9549 into FOO.
9550
9551 * __scm.h: USE_DLL_IMPORT indicates the usage of the DLL
9552 import macros for external libraries (libcrypt, libqthreads,
9553 libreadline and libregex).
9554
9555 * coop-defs.h: Include <winsock2.h> for `struct timeval'.
9556
9557 * posix.c (flock): Added support for flock() in M$-Windows.
9558
9559 * guile.c (SCM_IMPORT): Follow-up patch. Use SCM_IMPORT instead
9560 of __SCM_IMPORT__.
9561
9562 * fports.c (getflags): Differentiate reading and writing pipes
9563 descriptors.
9564
9565 * filesys.c (S_IS*): Redefine all of the S_IS*() macros for
9566 M$-Windows.
9567
9568 * coop.c (coop_condition_variable_timed_wait_mutex): Use
9569 conditionalized error code if `ETIMEDOUT' is not available.
9570 (scm_thread_usleep): Remove bogus declaration of `struct timeval
9571 timeout'.
9572
9573 * numbers.c (PTRDIFF_MIN): Moved this definition where it actually
9574 belongs. That is because NO_PREPRO_MAGIC gets undefined after
9575 each inclusion of `num2integral.i.c'.
9576 (SIZE_MAX): Define NO_PREPRO_MAGIC if SIZE_MAX is undefined.
9577
4e21fa60
MV
95782001-11-03 Marius Vollmer <mvo@zagadka.ping.de>
9579
9580 * eval.c (scm_m_begin): Allow `(begin)`, with no subforms.
9581 (SCM_CEVAL): Evaluate an empty `begin' to SCM_UNSPECIFIED.
9582
08112c95
MD
95832001-11-02 Mikael Djurfeldt <mdj@linnaeus>
9584
7663c008
MD
9585 * print.c (scm_iprin1): Mark print state as revealed when
9586 dispatching to generic write or display.
9587
08112c95
MD
9588 * unif.c (scm_ra2contig): Fixed memory overwrite bug.
9589
f712d833
MV
95902001-11-02 Marius Vollmer <mvo@zagadka.ping.de>
9591
9592 Support for native Win32. Thanks to Stefan Jahn!
d6b8cf11 9593
f712d833
MV
9594 * Makefile.am: Add win32-uname.c, win32-uname.h, win32-dirent.c
9595 and win32-dirent.h to extra source and header files. These
9596 include the uname() and the POSIX dirent interface implementation
9597 for M$-Windows. Put `-no-undefined' into LDFLAGS to support
9598 linkers which do not allow unresolved symbols inside shared
9599 libraries. Corrected `guile_filter_doc_snarfage$(EXEEXT)'
9600 dependency.
9601
d6b8cf11
TTN
9602 * __scm.h: Defined SCM_API. This macro gets prepended to all
9603 function and data definitions which should be exported or imported
f712d833
MV
9604 in the resulting dynamic link library in the Win32 port.
9605
9606 * __scm.h, alist.h, arbiters.h, async.h, backtrace.h, boolean.h,
d6b8cf11 9607 chars.h, continuations.h, coop-defs.h, coop-threads.h,
f712d833
MV
9608 debug-malloc.h, debug.h, deprecation.h, dynl.h, dynwind.h,
9609 environments.h, eq.h, error.h, eval.h, evalext.h, extensions.h,
9610 feature.h, filesys.h, fluids.h, fports.h, gc.h, gdb_interface.h,
9611 gdbint.h, gh.h, goops.h, gsubr.h, guardians.h, hash.h, hashtab.h,
9612 hooks.h, init.h, ioext.h, iselect.h, keywords.h, lang.h, list.h,
d6b8cf11 9613 load.h, macros.h, mallocs.h, modules.h, net_db.h, numbers.h,
f712d833
MV
9614 objects.h, objprop.h, options.h, pairs.h, ports.h, posix.h, print.h,
9615 procprop.h, procs.h, properties.h, ramap.h, random.h, rdelim.h,
9616 read.h, regex-posix.h, root.h, rw.h, scmsigs.h, script.h, simpos.h,
9617 smob.h, socket.h, sort.h, srcprop.h, stackchk.h, stacks.h, stime.h,
9618 strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h,
9619 tags.h, threads.h, throw.h, unif.h, values.h, variable.h, vectors.h,
9620 vports.h, weaks.h:
9621 Prefixed each each exported symbol with SCM_API.
9622
d6b8cf11 9623 * continuations.c: Added comment about the use of the extern
f712d833
MV
9624 declarations of {get,set}context() functions used in the ia64 port.
9625
9626 * continuations.h, gc.c: `__libc_ia64_register_backing_store_base'
9627 is meant to be a `unsigned long *'.
9628
9629 * filesys.c: Include `direct.h' if possible. Use local
9630 `win32-dirent.h' for the native M$-Windows port. Define S_IS*()
9631 macros for M$-Windows. Implementation of `fstat_Win32()' which is
9632 able to differentiate between sockets and other file descriptors.
9633 Use this function as wrapper in `scm_fstat()'. Fixed typo in
9634 `scm_dirname()'.
9635
9636 * fports.c: Include `io.h' is possible. Put `*fp' into referring
9637 statement block in `scm_fport_buffer_add()'.
9638 Some corrections in `getflags()'.
d6b8cf11 9639
f712d833
MV
9640 * gdb_interface.h (GDB_INTERFACE): Also support __CYGWIN__.
9641
9642 * guile.c: Make sure to define __SCM_IMPORT__ for shared library
9643 build on Win32. Disable preloaded symbols on Win2 platforms.
9644
9645 * ioext.c, ports.c: Include `io.h' is possible.
9646
9647 * mkstemp.c: Include `process.h' is possible.
9648
9649 * net_db.c: Disable extern declaration of `h_errno' for __CYGWIN__,
9650 too.
9651 Put `scm_return_entry()' into HAVE_GETSERVENT conditional.
9652
9653 * posix.c: Remove unnecessary dirent includes and defines. Include
9654 local `win32-uname.h' for MinGW. Extern declaration of
9655 `mkstemp()' for systems where it does not exists. Make
9656 `getlogin()' available on M$-Windows.
9657
9658 * scmsigs.c: Made `usleep()' avalable on MinGW.
9659
9660 * stime.c: On M$-Windows `tzname[]' is known to be `_tzname[]'.
9661
9662 * win32-dirent.c: Include "win32-dirent.h", not "dirent.h".
9663
9664 * win32-uname.c: Include "win32-uname.h", not "uname.h".
9665
d245ce23
MD
96662001-10-28 Mikael Djurfeldt <mdj@linnaeus>
9667
9668 * unif.c (scm_uniform_array_read_x, scm_uniform_array_write):
9669 Don't apply scm_uniform_vector_length on arrays.
9670
8ea46249
DH
96712001-10-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
9672
9673 * eval.c (scm_lookupcar, scm_m_letstar, scm_m_do, iqq,
9674 scm_m_define, scm_m_letrec1, scm_m_let, scm_m_expand_body,
9675 scm_macroexp, unmemocopy, scm_eval_args, scm_deval_args,
9676 SCM_CEVAL, scm_map, scm_init_eval): When building lists, prefer
9677 scm_list_<n> over scm_cons[2]?.
9678
9679 (scm_unmemocar, scm_m_cond, scm_m_letstar, scm_m_letrec1,
9680 scm_m_let, scm_m_atbind, unmemocopy, SCM_CEVAL, SCM_APPLY): Use
9681 SCM_C[AD][AD]R instead of explicit form.
9682
9683 (scm_m_set_x, scm_m_cond, scm_m_letstar, scm_m_do): Reordered
9684 comparison parameters.
9685
9686 (scm_m_case, scm_m_cond, scm_m_letstar, scm_m_do, SCM_CEVAL): Use
9687 !SCM_NULLP instead of SCM_NIMP.
9688
9689 (scm_m_case): Don't copy the form. Renamed proc to clause and
9690 minimized its scope. Renamed x to clauses. Removed side
9691 effecting operation from macro call.
9692
9693 (scm_m_cond): Don't copy the form. Renamed arg1 to clause and
9694 minimized its scope. Renamed x to clauses. Minimized the scope
9695 of variable 'len'. Make sure the else clause is treated specially
9696 even in case of '=>' occurences. Don't change the else to #t in
9697 order to be able to distinguish this case in the evaluator. Leave
9698 type checking of the recipient to the evaluator.
9699
9700 (scm_c_improper_memq): Made the comment somewhat clearer.
9701
9702 (scm_m_lambda): Renamed proc to formals. Removed unnecessary
9703 test for SCM_IM_LET at the place of the formal parameters.
9704 Simplified the formal parameter checking.
9705
9706 (scm_m_letstar): Added Comment. Renamed proc to bindings.
9707 Renamed arg1 to binding and minimized its scope. Eliminated
9708 unnecessary consing.
9709
9710 (scm_m_do): Renamed proc to bindings. Minimized the scope of
9711 variable 'len'.
9712
9713 (build_binding_list): New static function.
9714
9715 (unmemocopy): Don't use SCM_TYP7 on pairs (it's unclean).
9716 Further, split up the 'letrec' unmemoizing code to the
9717 corresponding parts for 'do', 'let' and 'letrec', adding comments
9718 to each form. Cleanup the handling of the do form (This removes
9719 some *real* code :-).
9720
9721 (SCM_CEVAL): Removed side effecting operation from macro call.
9722 Handle the 'else clause of the 'cond form specially - the symbol
9723 'else is not replaced with #t any more.
9724
8186c4f5
GH
97252001-10-14 Gary Houston <ghouston@arglist.com>
9726
9727 * version.c (scm_version): use sprintf instead of snprintf,
9728 for portability. thanks to Bill Schottstaedt.
9729
89759084
MD
97302001-10-14 Mikael Djurfeldt <mdj@linnaeus>
9731
9732 * read.c (scm_lreadr): When user-defined hash procedure returns
9733 SCM_UNSPECIFIED: Fall back to standard handling instead of raising
9734 an exception. (This prevents parsing of uniform vectors from
9735 interfering with parsing of numbers.)
9736
9c7ce563
MV
97372001-10-13 Marius Vollmer <mvo@zagadka.ping.de>
9738
9739 * numbers.c: Set NO_PREPRO_MAGIC when defining our version of
9740 PTRDIFF_MIN. Thanks to Ken Raeburn.
9741
97422001-10-07 Marius Vollmer <mvo@zagadka.ping.de>
9743
9744 * Makefile.am (EXTRA_libguile_la_SOURCES): Added "mkstemp.c".
9745
9746 * eval.c (scm_m_atbind): First try to find the variable without
9747 defining it locally; when it has not been found, define it
9748 locally.
9749
9750 * modules.c (module_variable): Pass over variables that exist but
9751 are unbound.
9752
97532001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
9754
9755 * backtrace.c (display_backtrace_file_and_line): Only use
9756 scm_basename when POSIX support is compiled in. Thanks to Chris
9757 Cramer.
9758
1fe5e088
DH
97592001-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9760
9761 * numbers.c (mem2uinteger): Return number read so far when coming
9762 across a hexdigit after having read a # or if not reading a hex
9763 value. This will enable the calling code to correctly handle
9764 forms like 1e2. (The background is, that the exponent markers d,
9765 e and f are also hexdigits.) Thanks to Mikael Djurfeldt for
9766 providing this patch.
9767
9768 (mem2complex): Fix erroneous double-negation. Now, numbers like
9769 1-i will be read correctly.
9770
68665a97
MD
97712001-10-12 Mikael Djurfeldt <mdj@linnaeus>
9772
9773 * debug.c (scm_mem_to_proc): Fixed typo in previous change.
9774
9775 * validate.h (SCM_VALIDATE_DOUBLE_DEF_COPY): New macro.
9776
d5cf5324
DH
97772001-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
9778
9779 * print.c (scm_print_state_vtable, print_state_pool):
9780 Initialize. These variables are now registered as gc roots.
9781
9782 (scm_current_pstate): Update documentation.
9783
9784 (scm_current_pstate, scm_make_print_state, scm_free_print_state,
9785 scm_prin1, scm_init_print): print_state_pool is registered as a
9786 gc root and thus does not need to be protected by a surrounding
9787 pair any more.
9788
9789 (make_print_state): The car of print_state_pool no longer holds
9790 the scm_print_state_vtable.
9791
9792 (scm_current_pstate, scm_make_print_state, print_circref,
9793 scm_iprin1, scm_prin1, scm_iprlist): Prefer !SCM_<foo> over
9794 SCM_N<foo>.
9795
9796 (scm_prin1): When building lists, prefer scm_list_<n> over
9797 scm_cons[2]?.
9798
9799 (scm_iprlist): Removed a redundant SCM_IMP test.
9800
9801 (scm_simple_format): Use SCM_EQ_P to compare SCM values.
9802
37c56aec
DH
98032001-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
9804
9805 * debug.c (scm_make_iloc): Prefer !SCM_<foo> over SCM_N<foo>.
9806
9807 (scm_memcons, scm_mem_to_proc): When building lists, prefer
9808 scm_list_<n> over scm_cons[2]?.
9809
9810 (scm_mem_to_proc): Prefer SCM_CONSP over SCM_NIMP.
9811
9812 (scm_procedure_name): Use SCM_CADR instead of explicit form.
9813
9814 (debugobj_print): Coerce scm_intprint arg 1 to long, not int.
9815 Thanks to Rob Browning for the patch (see log entry 2001-09-21) -
9816 for some reason his patch didn't make it into the cvs.
9817
79d34f68
DH
98182001-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
9819
9820 * numbers.c (mem2decimal_from_point): Cleaned up the parsing a
9821 little bit - should even be somewhat more accurate now.
9822
5e137c65
RB
98232001-10-08 Rob Browning <rlb@defaultvalue.org>
9824
9825 * gc.c: support ia64 register backing store.
9826 (SCM_MARK_BACKING_STORE): new macro.
9827
9828 * continuations.h: support ia64 register backing store.
9829 (struct scm_t_contregs): add ia64 register backing store.
9830
9831 * continuations.c: support ia64 register backing store.
9832 (continuation_mark): mark ia64 register backing store.
9833 (continuation_free): free ia64 register backing store.
9834 (scm_make_continuation): capture ia64 register backing store.
9835 (copy_stack_and_call): copy ia64 register backing store.
9836
ee083ac2
DH
98372001-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
9838
9839 * hashtab.c (scm_hash_fn_create_handle_x): The result of assoc_fn
9840 is known to be #f if no entry is found. Thus, use !SCM_FALSEP
9841 instead of SCM_NIMP to test for that case.
9842
9843 * strings.h (SCM_SET_STRING_LENGTH): Cast the length to
9844 scm_t_bits instead of long.
9845
71dcdbf9
MV
98462001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
9847
9848 * tags.h (SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
9849 SCM_T_SIGNED_BITS_MIN): New.
9850 * numbers.h (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM):
9851 Use them to make these macros computable by the preprocessor.
9852
9853 * num2integral.i.c (INTEGRAL2NUM): Let the preprocessor test
9854 whether the integral type fits in a fixnum, not the compiler.
9855 This removes a spurious compiler warning. Also, honor the
9856 NO_PREPRO_MAGIC flag to suppress any preprocessor tests. This is
9857 needed for `long long's.
9858
9859 * numbers.c: Define NO_PREPRO_MAGOC when including
9860 num2integral.c.i for `long long' and `signed long long'.
9861
152812c0
MD
98622001-10-06 Mikael Djurfeldt <mdj@linnaeus>
9863
9864 These changes fixes a race condition in the Guile coop - pthread
9865 compatibility code.
d6b8cf11 9866
152812c0
MD
9867 * coop.c (mother_awake_p): New variable.
9868 (coop_create): Set mother_awake_p before creating or signalling
9869 mother; wait until mother is going to sleep before returning.
9870 (mother): Reset mother_awake_p before going to sleep.
9871
11d49f54
DH
98722001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
9873
9874 * options.c (protected_objects, scm_init_options): The content of
9875 protected_objects is now protected from garbage collection using
9876 scm_gc_register_root instead of scm_permanent_object.
9877
9878 (get_option_setting): New static function that computes an option
9879 setting as it was formerly done in the function scm_options.
9880
9881 (get_documented_option_setting): New static function that
9882 returns option documentation as it was formerly done in the
9883 function scm_options. Note that documentation C strings are no
9884 longer precomputed into SCM objects. Instead, they are converted
9885 into SCM strings every time get_documented_option_setting is
9886 called.
9887
9888 (change_option_setting): New static functions that modifies the
9889 option setting as it was formerly done in the function
9890 scm_options. The function is now exception safe, i. e. won't
9891 cause a memory leak when interrupted. Further, only non-immediate
9892 option values are added to the protection list.
9893
9894 (scm_options): This function now has only the purpose to dispatch
9895 to to get_option_setting, get_documented_option_setting or
9896 change_option_setting, depending on the arguments given to
9897 scm_options.
9898
9899 (scm_init_opts): Don't convert documentation C strings into SCM
9900 strings. Further, don't protect any object values: They _must_
9901 be immediate values, otherwise there is no guarantee that they
9902 have not been collected before anyway.
9903
9904 * options.[ch] (scm_t_option): Made type unsigned, name into a
9905 constant char* and val into a scm_t_bits type.
9906
9907 (scm_options, scm_init_opts): The number of options is guaranteed
9908 to be larger or equal to zero. Thus, the type is changed to
9909 unsigned.
9910
3dbacabc
DH
99112001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
9912
9913 * num2integral.i.c (NUM2INTEGRAL): Eliminated some warnings about
9914 testing an unsigned value for being >= 0.
9915
14282d0f
DH
99162001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
9917
9918 * numbers.h: Removed old comment about using SCM_CAR to access
9919 non-pair cells.
9920
9921 (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM): Make sure
9922 the return value is signed. Thanks to Brian Crowder for the bug
9923 report.
9924
9925 (SCM_SRS): Avoid unnecessary casting and don't unpack input
9926 values. With this patch, SCM_SRS can be safely used for other
9927 types than scm_t_signed_bits. However, it should still better be
9928 an internal macro and thus be renamed to SCM_I_SRS.
9929
9930 (SCM_MAKINUM, SCM_INUM): Use proper casting.
9931
2dbec7b5
GH
99322001-10-03 Gary Houston <ghouston@arglist.com>
9933
9934 * continuations.h, unif.h: in the descriptions of the bit patterns
9935 of the heap cells, make bit 0 the least significant.
9936
cf4ee841
TTN
99372001-09-25 Thien-Thi Nguyen <ttn@glug.org>
9938
9939 * chars.h (SCM_MAKE_CHAR): Use `scm_t_bits' instead of `intptr_t'.
9940 Thanks to Golubev I. N.
9941
4a151b3d
GH
99422001-09-25 Gary Houston <ghouston@arglist.com>
9943
9944 * ports.c (scm_drain_input): extended the docstring. thanks to
9945 Alex Schroeder and Thien-Thi Nguyen.
9946
581ded70
MD
99472001-09-23 Mikael Djurfeldt <mdj@linnaeus>
9948
9949 * validate.h (SCM_NUM2FLOAT, SCM_NUM2DOUBLE,
9950 SCM_VALIDATE_FLOAT_COPY, SCM_VALIDATE_DOUBLE_COPY): New
9951 macros. (The NUM names might soon change.)
9952
9953 * numbers.h: Added missing declarations.
9954
5437598b
MD
99552001-09-22 Mikael Djurfeldt <mdj@linnaeus>
9956
9957 * Makefile.am: Distribute num2float.i.c.
9958
9959 * num2float.i.c: New file, multiply included by numbers.c, used
9960 to "templatize" the float <-> num conversion routines.
9961
9962 * numbers.c: New functions: scm_num2float, scm_float2num,
9963 scm_num2double, scm_double2num.
9964
0b073f0f
RB
99652001-09-21 Rob Browning <rlb@defaultvalue.org>
9966
9967 * .cvsignore: really add version.h
9968
9969 * strings.h (SCM_SET_STRING_LENGTH): coerce "l" to a long.
9970 Otherwise it fails on the alpha. However, we might rather choose
9971 this size conditionally.
9972
9973 * numbers.c (scm_gcd): change "k" to a long from an int.
9974 Otherwise it fails on the alpha. However, we might rather choose
9975 this size conditionally.
9976
9977 * error.c (scm_wta): coerce char* to intptr_t before int
9978 assignment.
9979
9980 * debug.c (debugobj_print): coerce scm_intprint arg 1 to long, not
9981 int.
9982
9983 * chars.h (SCM_MAKE_CHAR): coerce value to intptr_t.
9984
2830fd91
MD
99852001-09-20 Mikael Djurfeldt <mdj@linnaeus>
9986
9987 * numbers.c (scm_integer_expt): Accept inexact integer in second
9988 argument. (Thanks to Bill Schottstaedt.)
9989
c13f0a90
RB
99902001-09-20 Rob Browning <rlb@defaultvalue.org>
9991
9992 * .cvsignore: add version.h
9993
9994 * versiondat.h.in: removed (obsolete).
9995
9996 * version.h.in: renamed from version.h.
9997 (SCM_GUILE_MAJOR_VERSION): new public macro.
9998 (SCM_GUILE_MINOR_VERSION): new public macro.
9999 (SCM_GUILE_MICRO_VERSION): new public macro.
10000
10001 * version.h: renamed to version.h.in.
10002
10003 * version.c
10004 (scm_major_version): support integer *_VERSION macros.
10005 (scm_minor_version): support integer *_VERSION macros.
10006 (scm_micro_version): support integer *_VERSION macros.
10007 (scm_version): support integer *_VERSION macros.
10008
147c18a0
MD
100092001-09-20 Mikael Djurfeldt <mdj@linnaeus>
10010
10011 * error.c, error.h: Made error keys globally accessible.
10012 Applications might want to test for these or use them in a direct
10013 call to scm_error.
10014
10015 * num2integral.i.c (NUM2INTEGRAL): Report an error when these
10016 routines are passed an inexact. This change in behavior is
10017 motivated by concordance with R5RS: It is more common that a
10018 primitive doesn't want to accept an inexact for an exact.
10019
662c5539
DH
100202001-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
10021
10022 The following patch partially undoes my patch from 2001-06-30,
10023 where I added the function scm_gc_mark_cell_conservatively. The
10024 function is buggy, since it breaks guile during conservative
10025 marking if a pointer on the stack points directly into the list of
10026 free cells on the heap: With conservative cell marking this will
10027 cause the whole free list to be scanned and marked - boom!
10028
10029 * gc.c (allocated_mark, MARK, heap_segment,
10030 scm_gc_mark_cell_conservatively, scm_init_storage), gc.h
cf4ee841 10031 (scm_gc_mark_cell_conservatively): Remove function
662c5539
DH
10032 scm_gc_mark_cell_conservatively and update the corresponding
10033 comments and uses accordingly. Thanks to Christopher Cramer for
10034 the patch. (Minor corrections by me.)
10035
6c1b7628
GH
100362001-09-15 Gary Houston <ghouston@arglist.com>
10037
10038 * root.h (scm_root_state): removed the continuation_stack and
10039 continuation_stack_ptr members, which have no apparent purpose.
10040 (scm_continuation_stack, scm_continuation_stack_ptr): #defines
10041 removed.
662c5539 10042
6c1b7628
GH
10043 * root.c (root_mark), init.c (restart_stack, start_stack), gc
10044 (scm_igc): remove all references to contination_stack and
10045 continuation_stack_ptr, avoiding allocation of a vector and
10046 useless processing during gc.
10047
455c0ac8
DH
100482001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10049
10050 * guardians.c (tconc_t, t_tconc): Renamed tconc_t to t_tconc.
10051
10052 (TCONC_IN): Make sure that the cell word 0 is initialized last.
10053
10054 (guardians_t, t_guardians): Renamed guardians_t to t_guardians.
10055
10056 (GUARDIAN, GUARDIAN_DATA): Renamed GUARDIAN to GUARDIAN_DATA.
10057
10058 (guardian_apply, scm_get_one_zombie, scm_make_guardian,
10059 mark_and_zombify): Prefer !SCM_<foo> over SCM_N<foo>.
10060
22ba637b
DH
100612001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10062
10063 * guardians.c (mark_dependencies_in_tconc,
10064 whine_about_self_centered_zombies, scm_init_guardians): Register
10065 the static global variable `self_centered_zombies' via
10066 scm_gc_register_root, to make some cdr-ing unnecessary.
10067
c3c4d801
DH
100682001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10069
10070 * backtrace.c (display_backtrace_file,
10071 display_backtrace_file_and_line): Use SCM_EQ_P when comparing SCM
10072 values, use SCM_FALSEP when comparing SCM values against #f.
10073 Thanks to Rob Browning for the bug report.
10074
b00418df
DH
100752001-09-12 Martin Baulig <martin@home-of-linux.org>
10076
10077 * strings.[ch] (scm_str2string): New function.
10078
a0d34a0b
MV
100792001-09-06 Marius Vollmer <mvo@zagadka.ping.de>
10080
10081 * gc.c (scm_done_free): Always subtract size from scm_mallocated
10082 when computing nm, even if it's negative.
10083 (scm_must_malloc): Abort on overflow of scm_mtrigger.
10084 (scm_must_realloc): Likewise.
10085
b10586f0
ML
100862001-09-01 Michael Livshin <mlivshin@bigfoot.com>
10087
10088 * numbers.c (scm_sys_check_number_conversions): new function,
10089 defined if Guile is compiled in debugging mode. currently checks
10090 `scm_num2ulong', should check much much more.
10091
10092 * num2integral.i.c (NUM2INTEGRAL): when converting a bignum to
10093 unsigned, ensure that it's positive. thanks to Martin Baulig!
cf4ee841 10094
8c494e99
DH
100952001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10096
10097 * __scm.h: Added new section about compile time selectable
10098 features.
10099
10100 (long_long, ulong_long, scm_sizet, SCM_WNA, SCM_OUTOFRANGE,
10101 SCM_NALLOC, SCM_HUP_SIGNAL, SCM_INT_SIGNAL, SCM_FPE_SIGNAL,
10102 SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL, SCM_GC_SIGNAL,
10103 SCM_TICK_SIGNAL, SCM_SIG_ORD, SCM_ORD_SIG, SCM_NUM_SIGS):
10104 Removed.
10105
10106 * deprecation.c (scm_include_deprecated_features): Simplified.
10107
10108 * eval.c (EVALCAR, unmemocopy), eval.h (SCM_XEVALCAR): Use
9a5fa6e9 10109 `SCM_IMP' instead of `!SCM_CELLP´.
8c494e99
DH
10110
10111 * eval.c (unmemocopy): Eliminate redundant SCM_CELLP tests.
10112 Extract side-effecting operations from macros.
10113
10114 (scm_init_eval): Don't initialize *top-level-lookup-closure*,
10115 scm_top_level_lookup_closure_var and scm_system_transformer.
10116
10117 * gc.c (CELL_P): New local definition to replace SCM_CELLP.
10118
10119 (heap_segment): Use CELL_P instead of SCM_CELLP.
10120
10121 * init.c (start_stack): Don't initialize
10122 scm_top_level_lookup_closure_var and scm_system_transformer.
10123
10124 * modules.c (scm_set_current_module): Don't access
10125 scm_top_level_lookup_closure_var and scm_system_transformer.
10126
10127 (scm_sym2var): Don't call scm_variable_set_name_hint.
10128
10129 (scm_post_boot_init_modules): Removed deprecated initializations.
10130
10131 * print.c (scm_ipruk): Don't access cell contents of non cells.
10132
10133 * strings.c (scm_string_set_x): All strings are writable.
10134
10135 * strings.h (SCM_STRINGP): Use SCM_TYP7 to determine the string
10136 type. There is only one string type now.
10137
10138 (SCM_STRING_COERCE_0TERMINATION_X): Deprecated.
10139
10140 * tags.h: Remove comments about two different string types.
10141
10142 (SCM_CELLP, SCM_NCELLP): Deprecated.
10143
10144 * variable.c (make_variable): Remove code variant for vcells.
10145
10146 * variable.h (SCM_VARIABLE_REF, SCM_VARIABLE_SET,
10147 SCM_VARIABLE_LOC): Remove code variant for vcells.
10148
10149 * __scm.h, deprecation.[ch]: Renamed SCM_DEBUG_DEPRECATED to
10150 SCM_ENABLE_DEPRECATED with the logic reversed.
10151
10152 * dynl.c (moddata, registered_mods), dynl.[ch]
10153 (scm_register_module_xxx, scm_registered_modules,
10154 scm_clear_registered_modules), error.[ch] (scm_wta), eval.c
10155 (*top-level-lookup-closure*), eval.[ch]
10156 (scm_top_level_lookup_closure_var, scm_system_transformer,
10157 scm_eval_3, scm_eval2), gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR,
10158 SCM_SETAND_CDR, SCM_SETOR_CDR, SCM_FREEP, SCM_NFREEP,
10159 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
10160 SCM_GCCDR), gc.[ch] (scm_remember, scm_protect_object,
10161 scm_unprotect_object), modules.c (root_module_lookup_closure,
10162 scm_sym_app, scm_sym_modules, module_prefix, make_modules_in_var,
10163 beautify_user_module_x_var, try_module_autoload_var,
10164 scm_module_full_name), modules.[ch] (scm_the_root_module,
10165 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
cf4ee841 10166 ports.h (scm_port, scm_ptob_descriptor, scm_port_rw_active),
8c494e99
DH
10167 ports.[ch] (scm_close_all_ports_except), random.h (scm_rstate,
10168 scm_rng, scm_i_rstate), strings.h (SCM_SLOPPY_STRINGP,
10169 SCM_RWSTRINGP, SCM_STRING_UCHARS, SCM_STRING_CHARS), strings.[ch]
10170 (scm_read_only_string_p, scm_makstr, scm_makfromstr,
10171 scm_make_shared_substring), tags.h (scm_tc7_substring,
10172 SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP, scm_tc7_ssymbol,
10173 scm_tc7_msymbol, scm_tcs_symbols), variable.c (sym_huh),
10174 variable.[ch] (scm_variable_set_name_hint, scm_builtin_variable),
10175 variable.h (SCM_VARVCELL, SCM_UDVARIABLEP, SCM_DEFVARIABLEP):
10176 Removed.
10177
10178 * dynl.c (scm_dynamic_link, scm_dynamic_func), error.c
10179 (scm_error_scm), filesys.c (scm_chown, scm_chmod, scm_open_fdes,
10180 scm_stat, scm_link, scm_rename, scm_delete_file, scm_mkdir,
10181 scm_rmdir, scm_opendir, scm_chdir, scm_symlink, scm_readlink,
10182 scm_lstat, scm_copy_file), fports.c (scm_open_file), ioext.c
10183 (scm_fdopen), net_db.c (scm_gethost, scm_getnet, scm_getproto,
10184 scm_getserv), ports.c (scm_truncate_file, scm_sys_make_void_port),
10185 posix.c (scm_getpwuid, scm_getgrgid, scm_execl, scm_execlp,
10186 scm_execle, scm_mkstemp, scm_utime, scm_access, scm_setlocale,
10187 scm_mknod, scm_crypt, scm_chroot, scm_getpass, scm_sethostname),
10188 regex-posix.c (scm_make_regexp, scm_regexp_exec), simpos.c
10189 (scm_system, scm_getenv), socket.c (scm_inet_aton), stime.c
10190 (setzone, scm_strftime, scm_strptime), vports.c
10191 (scm_make_soft_port): Remove calls to
10192 SCM_STRING_COERCE_0TERMINATION_X. Since the substring type is
10193 gone, all strings are 0-terminated anyway.
10194
10195 * dynl.h (LIBGUILE_DYNL_H, SCM_DYNL_H), random.h (RANDOMH,
10196 SCM_RANDOM_H): Renamed the macros that are defined to inhibit
10197 double inclusion of the same headers to the SCM_<filename>_H
10198 format.
10199
10200 * eval.c (SCM_CEVAL), gc.c (MARK, scm_gc_sweep), gh_data.c
10201 (gh_scm2chars), hash.c (scm_hasher), objects.c (scm_class_of),
10202 print.c (scm_iprin1): The type scm_tc7_substring does not exist
10203 any more.
10204
10205 * ports.h (SCM_PORTP, SCM_OPPORTP, SCM_OPINPORTP, SCM_OPOUTPORTP,
10206 SCM_INPUT_PORT_P, SCM_OUTPUT_PORT_P, SCM_OPENP), tags.h
10207 (SCM_TYP16_PREDICATE), variable.h (SCM_VARIABLEP): Prefer
10208 !SCM_<foo> over SCM_N<foo>.
10209
dee01b01
DH
102102001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10211
10212 * Makefile.am: Remove references to symbols-deprecated.c.
10213
10214 * symbols.c (scm_init_symbols): Don't initialize deprecated
10215 symbol functions.
10216
10217 * symbols-deprecated.c: Removed.
10218
10219 * fluids.[ch] (scm_internal_with_fluids), gsubr.[ch]
10220 (scm_make_gsubr, scm_make_gsubr_with_generic), hooks.[ch]
10221 (scm_create_hook), list.c (list*), list.h (SCM_LIST[0-9],
10222 scm_listify), list.[ch] (scm_sloppy_memq, scm_sloppy_memv,
10223 scm_sloppy_member), load.c (scm_end_of_file_key), load.[ch]
10224 (scm_read_and_eval_x), numbers.[ch] (scm_mkbig, scm_big2inum,
10225 scm_adjbig, scm_normbig, scm_copybig, scm_2ulong2big, scm_dbl2big,
10226 scm_big2dbl), numbers.h (SCM_FIXNUM_BIT), procs.h
10227 (scm_subr_entry, SCM_SUBR_DOC), procs.[ch] (scm_make_subr_opt,
10228 scm_make_subr, scm_make_subr_with_generic), root.c (setjmp_type,
10229 setjmp_type), root.[ch] (scm_call_catching_errors), smob.[ch]
10230 (scm_make_smob_type_mfpe, scm_set_smob_mfpe), strports.[ch]
10231 (scm_strprint_obj, scm_read_0str, scm_eval_0str), symbols.h
10232 (SCM_CHARS, SCM_UCHARS, SCM_SETCHARS, SCM_SLOPPY_SUBSTRP,
10233 SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_LENGTH_MAX, SCM_LENGTH,
10234 SCM_SETLENGTH, SCM_ROSTRINGP, SCM_ROLENGTH, SCM_ROCHARS,
10235 SCM_ROUCHARS, SCM_SUBSTRP, SCM_COERCE_SUBSTR, scm_strhash,
10236 scm_sym2vcell, scm_sym2ovcell_soft, scm_sym2ovcell,
10237 scm_intern_obarray_soft, scm_intern_obarray, scm_intern,
10238 scm_intern0, scm_sysintern, scm_sysintern0,
10239 scm_sysintern0_no_module_lookup, scm_symbol_value0,
10240 scm_string_to_obarray_symbol, scm_intern_symbol,
10241 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
10242 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp,
10243 scm_init_symbols_deprecated), vectors.c (s_vector_set_length_x),
10244 vectors.[ch] (scm_vector_set_length_x): Removed.
10245
10246 * fluids.h (FLUIDSH, SCM_FLUIDS_H), gsubr.c (GSUBRH, SCM_GSUBR_H),
10247 list.h (LISTH, SCM_LIST_H), load.h (LOADH, SCM_LOAD_H), root.h
10248 (ROOTH, SCM_ROOT_H), strports.h (STRPORTSH, SCM_STRPORTS_H):
10249 Renamed the macros that are defined to inhibit double inclusion of
10250 the same headers to the SCM_<filename>_H format.
10251
10252 * procs.h (SCM_CLOSUREP, SCM_PROCEDURE_WITH_SETTER_P), symbols.h
10253 (SCM_SYMBOLP), vectors.h (SCM_VECTORP): Prefer !SCM_<foo> over
10254 SCM_N<foo>.
10255
b29058ff
DH
102562001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10257
10258 * continuations.h (scm_contregs), debug.h (scm_debug_info,
10259 scm_debug_frame, SCM_DSIDEVAL), filesys.h (SCM_OPDIRP), fports.h
10260 (scm_fport), options.h (scm_option), snarf.h (SCM_CONST_LONG,
10261 SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
10262 SCM_GLOBAL_VCELL_INIT), srcprop.h (scm_srcprops,
10263 scm_srcprops_chunk), stacks.h (scm_info_frame, scm_stack), unif.h
10264 (scm_array, scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_HUGE_LENGTH),
10265 validate.h (SCM_FUNC_NAME, SCM_WTA, RETURN_SCM_WTA,
10266 SCM_VALIDATE_NUMBER_COPY, SCM_VALIDATE_NUMBER_DEF_COPY,
10267 SCM_VALIDATE_STRINGORSUBSTR, SCM_VALIDATE_ROSTRING,
10268 SCM_VALIDATE_ROSTRING_COPY, SCM_VALIDATE_NULLORROSTRING_COPY,
10269 SCM_VALIDATE_RWSTRING, SCM_VALIDATE_OPDIR): Removed.
10270
10271 * continuations.h (CONTINUATIONSH, SCM_CONTINUATIONS_H), filesys.h
10272 (FILESYSH, SCM_FILESYS_H), fports.h (FPORTSH, SCM_FPORTS_H),
10273 options.h (OPTIONSH, SCM_OPTIONS_H), regex-posix.h (REGEXPOSIXH,
10274 SCM_REGEX_POSIX_H), snarf.h (LIBGUILE_SNARF_H, SCM_SNARF_H),
10275 srcprop.h (SCM_SOURCE_PROPERTIES_H, SCM_SRCPROP_H), unif.h
10276 (SCM_UNIFORM_VECTORS_H, SCM_UNIF_H), validate.h (SCM_VALIDATE_H__,
10277 SCM_VALIDATE_H): Renamed the macros that are defined to inhibit
10278 double inclusion of the same headers to the SCM_<filename>_H
10279 format.
10280
10281 * debug.h (SCM_RESET_DEBUG_MODE), regex-posix.h (SCM_RGXP),
10282 srcprop.h (SRCBRKP, PROCTRACEP), struct.h (SCM_STRUCTP),
10283 validate.h (SCM_VALIDATE_THUNK, SCM_VALIDATE_ARRAY,
10284 SCM_VALIDATE_VECTOR_OR_DVECTOR, SCM_VALIDATE_VTABLE): Prefer
10285 !SCM_<foo> over SCM_N<foo>.
10286
0527e687
DH
102872001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10288
10289 * _scm.h (_SCMH, SCM__SCM_H), alist.h (ALISTH, SCM_ALIST_H),
10290 arbiters.h (ARBITERSH, SCM_ARBITERS_H), backtrace.h (BACKTRACEH,
10291 SCM_BACKTRACE_H), boolean.h (BOOLEANH, SCM_BOOLEAN_H), chars.h
10292 (SCM_CHARSH, SCM_CHARS_H), coop-defs.h (COOP_DEFSH,
10293 SCM_COOP_DEFS_H), coop-threads.h (COOP_THREADSH,
10294 SCM_COOP_THREADS_H), debug-malloc.h (DEBUGMALLOCH,
10295 SCM_DEBUG_MALLOC_H), dynwind.h (DYNWINDH, SCM_DYNWIND_H),
10296 environments.h (ENVIRONMENTS_H, SCM_ENVIRONMENTS_H), eq.h (EQH,
10297 SCM_EQ_H), evalext.h (EVALEXTH, SCM_EVALEXT_H), extensions.h
10298 (LIBGUILE_EXTENSIONS_H, SCM_EXTENSIONS_H), feature.h (FEATUREH,
10299 SCM_FEATURE_H), gdbint.h (GDBINTH, SCM_GDBINT_H), guardians.h
10300 (SCM_GUARDIANH, SCM_GUARDIANS_H), hash.h (HASHH, SCM_HASH_H),
10301 hashtab.h (HASHTABH, SCM_HASHTAB_H), init.h (INITH, SCM_INIT_H),
10302 ioext.h (IOEXTH, SCM_IOEXT_H), iselect.h (ISELECTH,
10303 SCM_ISELECT_H), keywords.h (KEYWORDSH, SCM_KEYWORDS_H), lang.h
10304 (LANGH, SCM_LANG_H), mallocs.h (MALLOCSH, SCM_MALLOCS_H), net_db.h
10305 (SCM_NETDBH, SCM_NET_DB_H), objprop.h (OBJPROPH, SCM_OBJPROP_H),
10306 posix.h (POSIXH, SCM_POSIX_H), procprop.h (PROCPROPH,
10307 SCM_PROCPROP_H), properties.h (PROPERTIES_H, SCM_PROPERTIES_H),
10308 ramap.h (RAMAPH, SCM_RAMAP_H), rdelim.h (SCM_RDELIM,
10309 SCM_RDELIM_H), read.h (READH, SCM_READ_H), rw.h (SCM_RW,
10310 SCM_RW_H), scmsigs.h (SCMSIGSH, SCM_SCMSIGS_H), script.h (SCRIPTH,
10311 SCM_SCRIPT_H), simpos.h (SIMPOSH, SCM_SIMPOS_H), socket.h
10312 (SCM_SOCKETH, SCM_SOCKET_H), sort.h (SORTH, SCM_SORT_H),
10313 stackchk.h (STACKCHKH, SCM_STACKCHK_H), stime.h (STIMEH,
10314 SCM_STIME_H), strop.h (STROPH, SCM_STROP_H), strorder.h
10315 (STRORDERH, SCM_STRORDER_H), threads.h (THREADSH, SCM_THREADS_H),
10316 throw.h (THROWH, SCM_THROW_H), version.h (VERSIONH,
10317 SCM_VERSION_H), vports.h (VPORTSH, SCM_VPORTS_H): Renamed
10318 the macros that are defined to inhibit double inclusion of the
10319 same headers to the SCM_<filename>_H format.
10320
fada26b2
MV
103212001-08-27 Marius Vollmer <mvo@zagadka.ping.de>
10322
10323 * ports.c, ports.h, fprots.c, gc.c, ioext.c: Replaced
10324 "scm_t_portable" with "scm_port_table" which was an artifact from
10325 the great "scm_*_t -> scm_t_" renaming.
10326
e4d1c1ea
TTN
103272001-08-25 Thien-Thi Nguyen <ttn@revel.glug.org>
10328
10329 * gc_os_dep.c (GC_noop1): Move before `GC_find_limit' where it is
10330 used; nfc. Thanks to Bill Schottstaedt.
10331
10332 * validate.h (SCM_VALIDATE_USHORT_COPY, SCM_VALIDATE_SHORT_COPY,
10333 SCM_VALIDATE_UINT_COPY, SCM_VALIDATE_INT_COPY): New macros.
10334 Thanks to Chris Cramer.
10335
b573e744
MV
103362001-08-25 Marius Vollmer <mvo@zagadka.ping.de>
10337
10338 * Makefile.am (AUTOMAKE_OPTIONS): Change "foreign" to "gnu".
10339
10340 * eval.c (scm_m_atbind): Redesigned to behvae like `let', but with
10341 dynamic scope.
10342 * dynwind.h (scm_swap_bindings): Declare.
10343 * dynwind.c (scm_swap_bindings): Make non-static.
10344
8a3e715b
ML
103452001-08-25 Michael Livshin <mlivshin@bigfoot.com>
10346
10347 * gc.c (scm_gc_sweep): now can sweep unreachable variables (by
10348 doing exactly nothing about them). thanks Neil!
10349
cf504ee0
NJ
103502001-08-18 Neil Jerram <neil@ossau.uklinux.net>
10351
10352 * __scm.h (SCM_ENABLE_VCELLS): Fix spelling mistake in comment.
ec2667f0 10353
43b83b54
TTN
103542001-08-17 Thien-Thi Nguyen <ttn@revel.glug.org>
10355
10356 * gc.c: Fix omission bug: Add `heap_segment' forward decl
10357 (proto) in the case when either `GUILE_DEBUG' or
10358 `GUILE_DEBUG_FREELIST' preprocessor symbols are defined.
10359
10360 (map_free_list): Fix typo: Ref `f' correctly.
10361
10362 Thanks to Chris Cramer.
10363
ab4cd34b
RB
103642001-08-15 Rob Browning <rlb@defaultvalue.org>
10365
10366 * Makefile.am (libguile_la_LDFLAGS): use libtool interface version
10367 variables.
10368 (libpath.h): change libguileversion to libguileinterface.
10369
b754e3d1
MV
103702001-08-07 Marius Vollmer <mvo@zagadka.ping.de>
10371
10372 * Makefile.am (EXTRA_DIST): Distribute ChangeLog-1996-1999 and
10373 ChangeLog-2000. Thanks to Daniel Skarda!
10374
8b1d12c7
ML
103752001-08-07 Michael Livshin <mlivshin@bigfoot.com>
10376
10377 * guile-snarf-docs-texi.in: don't call the tokenizer here, we now
10378 do it from the Makefile.
10379
10380 * Makefile.am: rearrange the snarfing slightly, so that .doc files
10381 are of a reasonable size.
10382
baffb19f
NJ
103832001-08-02 Neil Jerram <neil@ossau.uklinux.net>
10384
10385 * stacks.c (scm_make_stack): Improve docstring by explaining use
10386 of cutting args.
10387
c1151355
MV
103882001-08-01 Marius Vollmer <mvo@zagadka.ping.de>
10389
10390 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
10391 scm_char_whitespace_p, scm_char_upper_case_p,
10392 scm_char_lower_case_p, scm_char_is_both_p): Do not require
10393 characters to fulfill isascii in addition to the primary
10394 predicate.
10395
3c9a524f
DH
103962001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10397
10398 * numbers.c (DIGITS, scm_small_istr2int, scm_istr2int,
10399 scm_istr2flo, scm_istring2number): Removed.
10400
10401 (iflo2str, scm_real_p, scm_integer_p): Use SCM_<foo> instead of
10402 SCM_SLOPPY_<foo>.
10403
10404 (t_exactness, t_radix, DIGIT2UINT, XDIGIT2UINT, mem2uinteger,
10405 mem2decimal_from_point, mem2ureal, mem2complex, scm_i_mem2number):
10406 Added.
10407
10408 (scm_string_to_number): Use new number parser.
10409
10410 (scm_exact_to_inexact): Replace dummy by a GPROC, which also
10411 handles complex numbers.
10412
10413 * numbers.h (NUMBERSH, SCM_NUMBERS_H): Rename <foo>H to
10414 SCM_<foo>_H.
10415
10416 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Prefer !SCM_<pred> over
10417 SCM_N<pred>.
10418
10419 (scm_istr2int, scm_istr2flo, scm_istring2number): Removed.
10420
10421 (scm_i_mem2number): Added.
10422
10423 (scm_exact_to_inexact): Changed signature.
10424
10425 * read.c (scm_lreadr): Perform the shortcut test for '+ and '-
10426 here instead of within scm_i_mem2number. Call scm_i_mem2number
10427 instead of scm_istr2int and scm_istring2number.
10428
01f11e02
DH
104292001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10430
10431 * eval.c (scm_lookupcar, scm_m_body, scm_m_lambda, unmemocopy,
10432 scm_unmemocopy, scm_badargsp, scm_eval_body, CHECK_EQVISH,
10433 SCM_CEVAL, scm_nconc2last, SCM_APPLY, scm_copy_tree): Prefer
10434 !SCM_<pred> over SCM_N<pred>.
10435
10436 (scm_eval_body): Remove side effecting code from macro call.
10437
10438 (SCM_CEVAL, SCM_APPLY): Remove goto statement and redundant
10439 SCM_NIMP test.
10440
6cf69537
DH
104412001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10442
10443 * pairs.h (SCM_VALIDATE_PAIR): Use SCM_CONSP, not SCM_ECONSP.
10444
54866b6c
MV
104452001-07-29 Marius Vollmer <mvo@zagadka.ping.de>
10446
10447 Removed vcell slot from structs.
43b83b54 10448
54866b6c
MV
10449 * struct.h (scm_vtable_index_vcell): Removed. Renumbered
10450 subsequent indices.
10451
10452 * struct.c (scm_struct_vtable_p): Do not check vcell slot for
10453 zero. Use scm_vtable_index_layout instead of "0" when accessing
10454 said slot.
10455 (scm_init_struct): Remove vcell slot layout code from
10456 required_vtable_fields.
10457
10458 * objects.h (scm_si_redefined, scm_si_hashsets): Renumbered.
10459
10460 * goops.c (build_class_class_slots): Removed vcell slot
10461 definition.
10462
10463 * goops.h: Renumbered slot indices. (SCM_CLASS_CLASS_LAYOUT):
10464 Removed vcell slot layout code.
10465 (scm_si_vcell): Removed.
10466
5b54c4da
MV
104672001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
10468
a0f5718e 10469 "Glocs" have been removed.
43b83b54 10470
a0f5718e
MV
10471 * tags.h: Update tag system docs.
10472 (scm_tc3_cons_gloc): Renamed to scm_tc3_struct. Changed all uses.
10473 (scm_tcs_cons_gloc): Renamed to scm_tcs_struct. Changed all uses.
10474 (SCM_ECONSP, SCM_NECONSP): Removed. Changed all uses to SCM_CONSP
10475 or SCM_NCONSP, respectively.
10476
10477 * struct.c, struct.h, srcprop.c, procs.c, procprop.c, print.c,
10478 objects.c. modules.c, goops.c, eval.c, debug.c: Changed all uses
10479 of scm_tc3_cond_gloc and scm_tcs_cons_gloc. See above.
10480
10481 * print.c (scm_iprin1): Remove printing of glocs. Do not try to
10482 tell glocs from structs.
43b83b54 10483
a0f5718e
MV
10484 * gc.c (scm_gc_mark, scm_gc_sweep): Remove handling of glocs.
10485
10486 * eval.c (scm_m_atbind): Make a list of variables, not glocs.
10487 (scm_ceval, scm_deval): For SCM_IM_BIND, fiddle with variables
10488 instead of with glocs.
10489 (EVALCAR): Do not test for glocs.
10490 (scm_lookupcar, scm_lookupcar1): Do not handle glocs in race
10491 condition.
10492 (scm_unmemocar): Do not handle glocs.
10493 (scm_m_atfop): Memoize as a variable, not as a gloc.
10494 (scm_eval_args, scm_deval_args): Do not handle glocs.
10495 (scm_ceval, scm_deval): Likewise.
43b83b54 10496
a0f5718e
MV
10497 * eval.h (SCM_XEVALCAR): Do not test for glocs.
10498 (SCM_GLOC_VAR, SCM_GLOC_VAL, SCM_GLOC_SET_VAL, SCM_GLOC_VAL_LOC):
10499 Removed.
10500
10501 * debug.h, debug.c (scm_make_gloc, scm_gloc_p): Removed.
10502
10503 * dynwind.c (scm_swap_bindings): Likewise.
10504 (scm_dowinds): Updated to recognize lists of variables instead of
10505 lists of glocs.
10506
10507 * __scm.h (SCM_CAUTIOS, SCM_RECKLESS): Update comments.
10508
43b83b54 10509
5b54c4da
MV
10510 * gc_os_dep.c (GC_noop1): Moved into the same #if/#endif context
10511 where it is needed.
43b83b54 10512
3c3db128
GH
105132001-07-25 Gary Houston <ghouston@arglist.com>
10514
10515 * numbers.c (scm_logand, scm_logior, scm_logxor): adjusted the
10516 docstrings to reflect the n-ary implementation.
10517
dd29a169
MV
105182001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
10519
10520 * eval.c (scm_ceval, scm_deval): Use "RETURN" macro when returning
10521 value of a variable, not the plain "return" statement.
10522
f5fe6c2f
MV
105232001-07-25 Marius Vollmer <mvo@zagadka.ping.de>
10524
10525 * eval.c: Allow variables in memoized code (in addition to glocs).
10526 (scm_lookupcar): Handle variables in lost races. Replace symbol
10527 with variable directly, do not make a gloc.
10528 (scm_unmemocar): Rewrite variables using a reverse lookup, just
10529 like glocs.
10530 (scm_ceval, scm_deval): Deal with variables in SCM_IM_SET and in
10531 the main switch.
10532
ee0c7345
MV
105332001-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
10534
6d9ad98a
MV
10535 * variable.c (scm_i_variable_print): Use "value" instead of
10536 "binding" since a binding is the mapping between symbols and
10537 variables, not between variables and their values.
10538
ee0c7345
MV
10539 * tags.h (scm_tc7_variable): New.
10540 * gc.c (scm_gc_mark): Handle scm_tc7_variable objects.
10541 * print.c (scm_iprin1): Likewise.
10542
10543 * variable.h (scm_tc16_variable): Removed.
10544 (SCM_VARIABLEP): Test for new tc7 code.
10545 (scm_i_variable_print): New.
10546 * variable.c (scm_tc16_variable): Removed.
10547 (variable_print): Renamed to scm_i_variable_print and made
10548 non-static.
10549 (variable_equal_p): Removed.
10550 (make_variable): Construct a tc7 object instead of a smob.
10551 (scm_init_variable): Do not register smob.
43b83b54 10552
f3805ebb
MV
105532001-07-22 Marius Vollmer <mvo@zagadka.ping.de>
10554
10555 * tags.h: Include inttypes.h when we have it.
10556
105572001-07-13 Marius Vollmer <mvo@zagadka.ping.de>
10558
10559 * tags.h (SCM_UNBOUND): Make it the 34th isym/iflag, the 33th slot
10560 is taken by the new SCM_IM_CALL_WITH_VALUES.
10561 * print.c (scm_isymnames): Update table accordingly.
43b83b54 10562
6a1677a3
GH
105632001-07-22 Gary Houston <ghouston@arglist.com>
10564
10565 * regex-posix.c (s_scm_regexp_exec): use scm_long2num not
10566 SCM_MAKINUM to convert regoff_t value to SCM.
10567
1bed8c28
GH
105682001-07-21 Gary Houston <ghouston@arglist.com>
10569
10570 * scmsigs.c: include sys/time.h for itimer stuff.
10571
e658215a
RB
105722001-07-19 Rob Browning <rlb@defaultvalue.org>
10573
10574 * gc_os_dep.c (GC_noop1): ifdef out (unused) to quiet warning.
10575
10576 * c-tokenize.lex: add option %nounput to quiet warning.
10577 Add prototype for yylex to quiet warning.
10578
10579 * scmconfig.h.in: add flags for setitimer and getitimer.
10580
10581 * scmsigs.h (scm_init_scmsigs): new prototype.
10582 (scm_init_scmsigs): new prototype.
10583
10584 * scmsigs.c (s_scm_setitimer): new function.
10585 (s_scm_setitimer): new function.
10586
58ade102
MG
105872001-07-18 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10588
10589 * alist.c, arbiters.c, async.h, backtrace.h, boolean.c, chars.c,
10590 chars.h, continuations.h, debug-malloc.h, dynl.c, feature.c,
10591 feature.h, filesys.h, fluids.h, fports.h, gc_os_dep.c,
10592 gdb_interface.h, gh_eval.c, gh_funcs.c, gh_io.c, gh_list.c,
10593 gh_predicates.c, gsubr.c, gsubr.h, guardians.h,
10594 guile-func-name-check.in, guile-snarf-docs-texi.in,
10595 guile-snarf-docs.in, guile-snarf.awk.in, guile-snarf.in,
10596 hashtab.h, iselect.h, keywords.h, lang.c, list.h, load.h,
10597 objprop.c, objprop.h, options.c, options.h, random.h,
10598 regex-posix.h, root.c, root.h, script.c, snarf.h, stackchk.c,
10599 strerror.c, strop.h, strports.h, threads.h, values.c, values.h,
10600 version.c, version.h: Updated copyright notice.
10601
6b80d352
DH
106022001-07-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
10603
10604 * goops.c (sym_layout, sym_vcell, sym_vtable, sym_print,
10605 sym_procedure, sym_setter, sym_redefined, sym_h0, sym_h1, sym_h2,
10606 sym_h3, sym_h4, sym_h5, sym_h6, sym_h7, sym_name,
10607 sym_direct_supers, sym_direct_slots, sym_direct_subclasses,
10608 sym_direct_methods, sym_cpl, sym_default_slot_definition_class,
10609 sym_slots, sym_getters_n_setters, sym_keyword_access, sym_nfields,
10610 sym_environment, scm_sym_change_class): New static variables to
10611 hold predefined symbols.
10612
10613 (build_class_class_slots): Build the list using scm_list_n
10614 instead of cons. Also, slots are already created as lists, thus
10615 making a call to maplist unnecessary.
10616
10617 (scm_class_name, scm_class_direct_supers, scm_class_direct_slots,
10618 scm_class_direct_subclasses, scm_class_direct_methods,
10619 scm_class_precedence_list, scm_class_slots, scm_class_environment,
10620 scm_method_procedure, create_standard_classes, purgatory): Use
10621 predefined symbols.
10622
10623 (build_slots_list, compute_getters_n_setters,
10624 scm_sys_initialize_object, scm_sys_inherit_magic_x,
10625 get_slot_value_using_name, set_slot_value_using_name,
10626 scm_sys_invalidate_method_cache_x, scm_generic_capability_p,
10627 scm_compute_applicable_methods, scm_sys_method_more_specific_p,
10628 make_struct_class): Prefer !SCM_<pred> over SCM_N<pred>.
10629
10630 (scm_sys_prep_layout_x): Minimize variable scopes.
10631
10632 (scm_sys_prep_layout_x, scm_sys_fast_slot_ref,
10633 scm_sys_fast_slot_set_x): Fix signedness.
10634
10635 (go_to_hell, go_to_heaven, purgatory, scm_change_object_class,
10636 lock_cache_mutex, unlock_cache_mutex, call_memoize_method,
10637 scm_memoize_method, scm_wrap_object): Use packing and unpacking
10638 when converting to and from SCM values.
10639
10640 (scm_enable_primitive_generic_x): Add rest argument checking.
10641
10642 (map, filter_cpl, maplist, scm_sys_initialize_object,
10643 scm_sys_prep_layout_x, slot_definition_using_name,
10644 scm_enable_primitive_generic_x, scm_compute_applicable_methods,
10645 call_memoize_method, scm_make, scm_make_class): Prefer explicit
10646 predicates over SCM_N?IMP tests.
10647
10648 (scm_sys_prep_layout_x): Fix typo in error message. Fix type
10649 checking.
10650
10651 (burnin, go_to_hell): Use SCM_STRUCT_DATA instead of the SCM_INST
10652 alias.
10653
63bcad19
DH
106542001-07-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
10655
10656 * fports.c (fport_print): Don't use SCM_C[AD]R for non pairs.
10657
10658 * num2integral.i.c (INTEGRAL2NUM, INTEGRAL2BIG): Fix signedness.
10659
10660 * symbols-deprecated.c (scm_gentemp): Simplify vector test.
10661
10662 * vectors.c (scm_vector_p): Eliminate redundant IMP test.
10663
4d6aae71
ML
106642001-07-12 Michael Livshin <mlivshin@bigfoot.com>
10665
10666 * strings.c (s_scm_string): fix arg position in assert.
10667
4b8ec619
GH
106682001-07-11 Gary Houston <ghouston@arglist.com>
10669
10670 * strports.c (st_write): use memcpy, not strncpy. thanks to
10671 Dale P. Smith.
10672
dbb640bd
TTN
106732001-07-09 Thien-Thi Nguyen <ttn@revel.glug.org>
10674
10675 * alist.c, alloca.c, arbiters.c, async.c, async.h, backtrace.c,
10676 boolean.c, chars.c, continuations.c, coop-defs.h, coop-threads.c,
10677 debug-malloc.h, debug.c, debug.h, dynl.c, dynwind.c, eq.c,
10678 error.c, eval.c, evalext.c, feature.c, feature.h, filesys.c,
10679 filesys.h, fluids.c, fluids.h, fports.c, fports.h, gc.c, gc.h,
10680 gdbint.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
10681 hooks.h, inet_aton.c, init.c, ioext.c, keywords.c, keywords.h,
10682 lang.c, list.c, load.c, macros.c, mallocs.c, memmove.c, modules.c,
10683 net_db.c, numbers.c, numbers.h, objects.c, objprop.c, options.c,
10684 pairs.c, pairs.h, ports.c, ports.h, posix.c, print.c, print.h,
10685 procprop.c, procs.c, procs.h, properties.c, putenv.c, ramap.c,
10686 random.c, random.h, read.c, regex-posix.c, regex-posix.h, root.c,
10687 root.h, scmsigs.c, script.c, simpos.c, smob.c, snarf.h, socket.c,
10688 sort.c, srcprop.c, srcprop.h, stackchk.c, stacks.c, stacks.h,
10689 stime.c, strerror.c, strings.c, strings.h, strop.c, strorder.c,
10690 strports.c, struct.c, struct.h, symbols-deprecated.c, symbols.c,
10691 symbols.h, tags.h, threads.c, threads.h, throw.c, unif.c, unif.h,
10692 variable.c, variable.h, vectors.c, vectors.h, version.c, vports.c,
10693 weaks.c, weaks.h: Remove "face-lift" comment.
10694
fd6c6321
RB
106952001-07-08 Rob Browning <rlb@defaultvalue.org>
10696
10697 * .cvsignore: add stamp-h.in.
10698
f91e4547
MG
106992001-07-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10700
10701 * hooks.c (scm_make_hook, scm_add_hook_x),
10702 (scm_remove_hook_x, scm_reset_hook_x, scm_run_hook): Added return
10703 value info to the docstrings.
10704
7beabedb
MG
107052001-07-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10706
10707 Some more compatibility patches for Windows.
dbb640bd 10708
7beabedb
MG
10709 * posix.c (getlogin): getlogin() implementation for Windows.
10710
10711 * backtrace.c, ioext.c: Include <stdio.h>.
10712
10713 * unif.c, script.c, rw.c, error.c: Include <io.h>, if it does
10714 exist.
10715
10716 * cpp_sig_symbols.in: Added SIGBREAK.
10717
0d0560d0
MV
107182001-07-01 Marius Vollmer <mvo@zagadka.ping.de>
10719
10720 * strports.c (scm_read_0str, scm_eval_0str): Call
10721 scm_c_read_string and scm_c_eval_string respectively, not
10722 themselves. Thanks to Dale P. Smith!
10723
9a97e362
DH
107242001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10725
10726 * unif.c (scm_array_set_x): The variable args does not
10727 necessarily have to be a list. Further, got rid of a redundant
10728 SCM_NIMP test.
10729
592996c9
DH
107302001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10731
10732 * list.c (SCM_I_CONS): Make sure the cell type is initialized
10733 last.
10734
10735 * gc.c (s_scm_map_free_list, scm_igc, scm_gc_sweep,
f91e4547 10736 init_heap_seg): Fixed signedness.
592996c9
DH
10737
10738 (init_heap_seg): Replaced strange for-loop with a while loop.
10739
10740 * weaks.h (WEAKSH, SCM_WEAKS_H): Rename <foo>H to SCM_<foo>_H.
10741
10742 (SCM_WVECTP): Prefer !SCM_<pred> over SCM_N<pred>.
10743
10744 The following patch adds conservative marking for the elements of
10745 free or allocated cells.
10746
10747 * gc.c (allocated_mark, heap_segment): New static functions.
10748
10749 (which_seg): Deleted, since the functionality is now provided by
10750 function heap_segment.
10751
10752 (map_free_list): Use heap_segment instead of which_seg.
10753
10754 (MARK): If cell debugging is disabled, mark free cells
10755 conservatively.
10756
10757 (scm_mark_locations, scm_cellp): Extracted the search for the
10758 heap segment of a SCM value into function heap_segment.
10759
10760 (scm_init_storage): Allocated cells must be marked
10761 conservatively.
10762
10763 * gc.[ch] (scm_gc_mark_cell_conservatively): New function.
10764
10765 The following patch changes the representation of weak vectors to
10766 double cells instead of using an extension of the vector's
10767 allocated memory.
10768
10769 * gc.c (MARK): Use SCM_SET_WVECT_GC_CHAIN instead of assigning to
10770 the result of SCM_WVECT_GC_CHAIN.
10771
10772 (scm_gc_sweep): Weak vectors don't have extra fields any more.
10773
10774 * weaks.c (allocate_weak_vector): New static function. It does
10775 not patch any previously created vector object during the
10776 construction of a weak vector, and thus doesn't need to switch
10777 off interrupts during vector creation.
10778
10779 (scm_make_weak_vector, scm_make_weak_key_hash_table,
10780 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
10781 Use allocate_weak_vector to provide the new weak vector object.
10782
10783 * weaks.h (SCM_WVECT_TYPE, SCM_SET_WVECT_TYPE,
10784 SCM_SET_WVECT_GC_CHAIN): New macros. The weak vector subtype is
10785 now stored in the double cell.
10786
10787 (SCM_IS_WHVEC, SCM_IS_WHVEC_V, SCM_IS_WHVEC_B, SCM_IS_WHVEC_ANY):
10788 Use SCM_WVECT_TYPE.
10789
10790 (SCM_WVECT_GC_CHAIN): The weak objects are now chained together
10791 using an entry of the double cell.
10792
4dadf664
TTN
107932001-06-30 Thien-Thi Nguyen <ttn@revel.glug.org>
10794
10795 * stamp-h.in: bye bye
10796
02202352
MV
107972001-06-30 Marius Vollmer <mvo@zagadka.ping.de>
10798
10799 * gh_eval.c (gh_eval_str): Use scm_c_eval_string instead of
10800 scm_eval_0str.
10801
10802 * load.c, load.h (scm_c_primitive_load,
10803 scm_c_primitive_load_path): New.
10804
10805 * strports.c, strports.h (scm_c_read_string): Renamed from
10806 scm_read_0str. Also, added "const" qualifier to argument.
10807 (scm_c_eval_string): Renamed from scm_eval_0str.
10808 (scm_read_0str, scm_eval_0str): Deprecated.
10809
df1ad0d1
MG
108102001-06-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10811
10812 * fluids.c (scm_c_with_fluid): Use scm_list_1() instead of
10813 SCM_LIST1.
10814
1afff620
KN
108152001-06-28 Keisuke Nishida <kxn30@po.cwru.edu>
10816
10817 * list.h (scm_list_1, scm_list_2, scm_list_3, scm_list_4, scm_list_5,
10818 scm_list_n): New functions.
10819 (SCM_LIST0, SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5,
10820 SCM_LIST6, SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify): Deprecated.
10821 (lots of files): Use the new functions.
4dadf664 10822
1afff620
KN
10823 * goops.c (CALL_GF1, CALL_GF2, CALL_GF3, CALL_GF4): Use scm_call_N.
10824
10825 * strings.c: #include "libguile/deprecation.h".
10826
b858464a
MG
108272001-06-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10828
10829 * read.c (scm_lreadr): When reading a hash token, check for a
10830 user-defined hash procedure first, so that overriding the builtin
10831 hash characters is possible (this was needed for implementing
10832 SRFI-4's read synax `f32(...)').
4dadf664 10833
b858464a
MG
10834 * num2integral.i.c: Use scm_t_signed_bits instead of scm_t_bits,
10835 because the latter is unsigned now and breaks comparisons like
10836 (n < (scm_t_signed_bits)MIN_VALUE).
4dadf664 10837
d95c0b76
NJ
108382001-06-26 Neil Jerram <neil@ossau.uklinux.net>
10839
10840 * eval.h, eval.c (scm_call_4): New function.
10841
10842 * eval.c (SCM_APPLY, SCM_CEVAL, ENTER_APPLY): Call trap handlers
10843 directly rather than dispatching to them via scm_ithrow and a lazy
10844 catch.
4dadf664 10845
d95c0b76
NJ
10846 * eval.c (scm_evaluator_trap_table), eval.h (SCM_ENTER_FRAME_HDLR,
10847 SCM_APPLY_FRAME_HDLR, SCM_EXIT_FRAME_HDLR): Add three new options
10848 for trap handler procedures.
10849
10850 * debug.h (SCM_RESET_DEBUG_MODE): Add checks for trap handler
10851 procedures not being #f.
10852
30e3be5a
ML
108532001-06-27 Michael Livshin <mlivshin@bigfoot.com>
10854
10855 * Makefile.am (c-tokenize.c): add rule to generate it.
10856 (EXTRA_DIST): add c-tokenize.lex, so it gets distributed.
10857
10858 filter-doc-snarfage.c: remove.
10859
82893676
MG
108602001-06-26 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10861
10862 * ports.c (scm_output_port_p): Use result of SCM_COERCE_OUTPORT.
10863
10864 The following set of changes makes compiling Guile under various
10865 Windows compilers easier. Compilation under GNU systems should
10866 not be affected at all.
10867
10868 Thanks to Stefan Jahn for all necessary information, patches and
10869 testing.
4dadf664 10870
82893676
MG
10871 * posix.c: Conditialize getpwent, getgrent, kill, getppid, getuid,
10872 getpgrp, ttyname, primitive-fork and some header inclusion for
10873 Windows.
10874
10875 * random.c: Define M_PI, if not predefined and use __int64 for
10876 LONG64 under Windows.
10877
10878 * scmsigs.c: Emulate some functions (alarm, sleep, kill) under
10879 Windows and conditionalize some signal names.
10880
4dadf664 10881 * socket.c (scm_getsockopt): Added missing comma.
82893676
MG
10882 Include socket library header under Windows.
10883
10884 * stime.c (CLKTCK): Add cast to int, to make it compile under
10885 Windows.
10886
10887 * ports.c (truncate): New function, compiled only under Windows.
10888
10889 * net_db.c: Do not declare errno under Windows.
10890
10891 * iselect.h, inet_aton.c: Include socket library headers under
10892 Windows.
10893
10894 * guile.c (inner_main): Under Windows, initialize socket library
10895 and initialize gdb_interface data structures.
10896
10897 * gdb_interface.h: Under Windows, gdb_interface cannot be
10898 initialized statically. Initialize at runtime instead.
10899
10900 * fports.c (write_all): ssize_t -> size_t.
10901 (fport_print): Conditionalize call to ttyname().
10902 (getflags): New function, compiled only under Windows.
10903
10904 * filesys.c: Conditionalize inclusion of <pwd.h>. Conditionalize
10905 primitives chown, link, fcntl.
10906 (scm_basename, scm_dirname): Under Windows, handle \ as well as /
10907 as path seperator.
10908
10909 * backtrace.c: Include <io.h> under Windows.
10910
10911 * async.h (ASYNCH, SCM_ASYNC_H): Rename <foo>H to SCM_<foo>_H.
10912
10913 * _scm.h: Added preprocessor conditional for __MINGW32__ for errno
10914 declaration.
10915
fdc28395
KN
109162001-06-27 Keisuke Nishida <kxn30@po.cwru.edu>
10917
10918 * eval.c (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
10919 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): New functions.
10920 * eval.h (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
10921 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): Declared.
10922 * async.c (scm_run_asyncs), coop-threads.c (scheme_body_bootstrip,
10923 scheme_handler_bootstrip), debug.c (with_traps_inner), dynwind.c
10924 (scm_dynamic_wind, scm_dowinds), environments.c
10925 (import_environment_conflict), eval.c (scm_macroexp, scm_force,
10926 scm_primitive_eval_x, scm_primitive_eval), fluids.c (apply_thunk),
10927 goops.c (GETVAR, purgatory, make_class_from_template,
10928 scm_ensure_accessor), hashtab.c (scm_ihashx, scm_sloppy_assx,
10929 scm_delx_x, fold_proc), hooks.c (scm_c_run_hook), load.c
10930 (scm_primitive_load), modules.c (scm_resolve_module,
10931 scm_c_define_module, scm_c_use_module, scm_c_export,
10932 module_variable, scm_eval_closure_lookup, scm_sym2var,
10933 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
10934 ports.c (scm_port_for_each), print.c (scm_printer_apply),
10935 properties.c (scm_primitive_property_ref), ramap.c (ramap,
10936 ramap_cxr, rafe, scm_array_index_map_x, read.c (scm_lreadr),
10937 scmsigs.c (sys_deliver_signals), sort.c (applyless), strports.c
10938 (scm_object_to_string, scm_call_with_output_string,
10939 scm_call_with_input_string), throw.c (scm_body_thunk,
10940 scm_handle_by_proc, hbpca_body), unif.c (scm_make_shared_array,
10941 scm_make_shared_array), vports.c (sf_flush, sf_write,
10942 sf_fill_input, sf_close): Use one of the above functions.
10943 * goops.c, hashtab.c, scmsigs.c, sort.c: #include "libguile/root.h".
10944
36284627
DH
109452001-06-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
10946
10947 * filesys.c (scm_close), ports.c (scm_close_port,
10948 scm_port_closed_p), strop.c (scm_string_null_p): Use SCM_BOOL
10949 instead of SCM_NEGATE_BOOL.
10950
10951 * filesys.c (scm_stat): Clean up type dispatch.
10952
10953 * filesys.c (scm_stat), ports.c (scm_input_port_p,
10954 scm_output_port_p): Get rid of redundant IM type check.
10955
10956 * filesys.c (scm_readdir, scm_getcwd, scm_readlink), gh_data.c
10957 (gh_str2scm), load.c (scm_primitive_load, scm_internal_parse_path,
10958 scm_search_path), net_db.c (scm_gethost, scm_getnet, scm_getproto,
10959 scm_return_entry), numbers.c (scm_number_to_string), objects.c
10960 (scm_make_subclass_object), ports.c (scm_port_mode), read.c
10961 (scm_lreadr), simpos.c (scm_getenv), socket.c (scm_inet_ntoa,
10962 scm_addr_vector), stime.c (scm_strftime), strings.c
10963 (scm_makfromstrs, scm_makfrom0str, scm_substring), strings.h
10964 (SCM_STRING_COERCE_0TERMINATION_X), strop.c (string_copy,
10965 scm_string_split), strports.c (scm_strport_to_string), symbols.c
10966 (scm_symbol_to_string), vports.c (sf_write): Use scm_mem2string
10967 instead of scm_makfromstr.
10968
10969 * net_db.c (scm_sethost, scm_setnet, scm_setproto, scm_setserv),
10970 ports.c (scm_close_all_ports_except), read.c (scm_lreadr,
10971 scm_read_hash_extend), stime.c (scm_strftime), strings.c
10972 (scm_string_append, scm_string), strings.h (SCM_STRINGP,
10973 SCM_STRING_COERCE_0TERMINATION_X, SCM_RWSTRINGP), strop.c
10974 (string_capitalize_x): Prefer explicit type check over SCM_N?IMP,
10975 !SCM_<pred> over SCM_N<pred>.
10976
10977 * strings.[ch] (scm_makfromstr): Deprecated.
10978
10979 (scm_mem2string): New function, replaces scm_makfromstr.
10980
10981 * strings.c (scm_substring), strop.c (string_copy,
10982 scm_string_split), strports.c (scm_strport_to_string), symbols.c
10983 (scm_symbol_to_string): Fix gc problem.
10984
10985 * strings.h (STRINGSH, SCM_STRINGS_H): Rename <foo>H to
10986 SCM_<foo>_H.
10987
10988 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Eliminate
10989 warning about comparing signed and unsigned values. This fix is
10990 not optimal, since it won't work reliably if sizeof (c_start) >
10991 sizeof (size_t) or sizeof (c_end) > sizeof (size_t). A better
10992 solution is to define this macro as an inline function, thus
10993 allowing to specifiy the types of c_start and c_end.
10994
13dcb666
DH
109952001-06-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
10996
10997 * debug.h (SCM_DEBUGOBJ_FRAME): Deliver result as a
10998 scm_t_debug_frame*.
10999
11000 * debug.h (DEBUGH, SCM_DEBUG_H), stacks.h (STACKSH, SCM_STACKSH):
11001 Rename <foo>H to SCM_<foo>_H.
11002
11003 * stacks.c (NEXT_FRAME, narrow_stack): Prefer explicit type check
11004 over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
11005
11006 (narrow_stack): Make i unsigned. Don't use side-effecting
11007 operations in conditions.
11008
11009 (narrow_stack, scm_make_stack, scm_stack_id,
11010 scm_last_stack_frame): Get rid of redundant SCM_N?IMP checks.
11011
11012 (scm_make_stack, scm_stack_id, scm_last_stack_frame): Clean up
11013 type dispatch. No need to cast result of SCM_DEBUGOBJ_FRAME any
11014 more.
11015
11016 (scm_stack_ref, scm_frame_previous, scm_frame_next): Fix
11017 signedness.
11018
ea2c3968 11019 (scm_last_stack_frame): Remove bogus `;'.
13dcb666
DH
11020
11021 * stacks.h (SCM_FRAMEP): Fix type check.
11022
ac13d9d2
ML
110232001-06-25 Michael Livshin <mlivshin@bigfoot.com>
11024
ee0c0e03
ML
11025 * Makefile.am (MAINTAINERCLEANFILES): be sure to remove
11026 c-tokenize.c when doing maintainer-clean.
11027
ac13d9d2
ML
11028 * snarf.h (SCM_SNARF_DOCS): change the "grammar" slightly.
11029
11030 * guile-snarf-docs.in, guile-snarf-docs-texi.in: rewrite &
11031 simplify.
11032
11033 * eval.c: all hash signs are in column 0.
11034
11035 * Makefile.am (guile_filter_doc_snarfage): build using
11036 c-tokenize.c, not filter-doc-snarfage.c.
11037 rearrange snarfing dependencies a bit.
11038
11039 * c-tokenize.lex: new file.
11040
16be44e5
MV
110412001-06-25 Marius Vollmer <mvo@zagadka.ping.de>
11042
11043 * srcprop.h, srcprop.c (scm_srcprops_to_plist): Renamed from
11044 scm_t_srcpropso_plist. See the big type renaming.
11045 * coop-defs.h (scm_mutex_trylock, scm_cond_timedwait): Likewise.
11046 Thanks to Seth Alves!
4dadf664 11047
16be44e5
MV
11048 * numbers.c (SIZE_MAX, PTRDIFF_MIN, PTRDIFF_MAX): Only define when
11049 they aren't defined already.
11050
5843e5c9
DH
110512001-06-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
11052
11053 * backtrace.c (display_backtrace_body): Use SCM_VALIDATE_STACK
11054 and SCM_VALIDATE_OPOUTPORT instead of SCM_ASSERT. Fix signedness
11055 problem.
11056
11057 * backtrace.c (display_expression, scm_set_print_params_x,
11058 display_application, display_frame, scm_backtrace), numbers.c
11059 (scm_istring2number), objects.c (scm_class_of,
11060 scm_mcache_lookup_cmethod, scm_mcache_compute_cmethod): Prefer
11061 explicit type check over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
11062
11063 * fluids.c (scm_fluid_ref, scm_fluid_set_x): Fluid numbers are
11064 always positive.
11065
11066 * numbers.c (scm_i_mkbig): Remove unnecessary casts, remove
11067 unnecessary SCM_DEFER_INTS, SCM_ALLOW_INTS.
11068
11069 * objects.c (scm_class_of): Type fix.
11070
11071 (scm_mcache_lookup_cmethod): Improved comment, simplified,
11072 eliminated goto.
11073
11074 * pairs.h (scm_error_pair_access): The function can return if
11075 called recursively.
11076
6b41a313
MG
110772001-06-20 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11078
11079 * init.c (scm_init_guile_1): Removed initialization of tag.c.
11080
11081 * gdbint.c, init.c: Removed inclusion of tag.h.
11082
11083 * tag.h, tag.c: Removed files.
11084
11085 * Makefile.am: Removed tag.{h,c,doc,x} in various places.
11086
fbbdb121
GH
110872001-06-20 Gary Houston <ghouston@arglist.com>
11088
11089 * deprecation.c, extensions.c, rw.c: include string.h.
11090
72c17ed0
GH
110912001-06-19 Gary Houston <ghouston@arglist.com>
11092
11093 * filter-doc-snarfage.c (process): added ungetc in
11094 MULTILINE_COOKIE case since otherwise it fails when there's no
11095 space between the '(' and the quote of the following string
11096 (gcc 3.0).
11097
4ff9f825
MV
110982001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
11099
4927dd28
MV
11100 Throughout: replace "scm_*_t" with "scm_t_*", except "scm_lisp_t".
11101
b629af45
MV
111022001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
11103
11104 * unif.h (SCM_ARRAY_NDIM): Shift then cast so that no sign
0f002b27
MV
11105 extension takes place.
11106 * strings.h (SCM_STRING_LENGTH): Likewise.
11107 (SCM_STRING_MAX_LENGTH): Use unsigned numbers.
4dadf664 11108
4ff9f825
MV
11109 * __scm.h (ptrdiff_t): Typedef to long when configure didn't find
11110 it.
11111
11112 * tags.h: Include <stdint.h> when we have it.
11113 (scm_bits_t): Changed to be a unsigned type. Use uintptr_t when
11114 available. Else use "unsigned long".
11115 (scm_signed_bits_t): New.
11116
11117 * numbers.h (SCM_SRS): Cast shiftee to scm_signed_bits_t.
11118 (SCM_INUM): Cast result to scm_signed_bits_t.
11119
58bee6a8
TTN
111202001-06-13 Thien-Thi Nguyen <ttn@revel.glug.org>
11121
11122 * mkstemp.c: Update path to #include file scmconfig.h.
11123 Thanks to Golubev I. N.
11124
00d8d838
DH
111252001-06-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
11126
11127 * struct.h (SCM_STRUCT_VTABLE_FLAGS): New macro.
11128
ea2c3968 11129 * goops.h (SCM_NUMBER_OF_SLOTS): Removed bogus `\' at the end of
00d8d838
DH
11130 the macro definition.
11131
11132 (SCM_CLASSP, SCM_INSTANCEP, SCM_PUREGENERICP, SCM_ACCESSORP,
11133 SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Use SCM_STRUCT_VTABLE_FLAGS
11134 instead of SCM_INST_TYPE.
11135
11136 (SCM_ACCESSORP, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Make sure
11137 the object is a struct before accessing its struct flags.
11138
11139 (SCM_INST_TYPE, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Deprecated.
11140
495c67e5
GH
111412001-06-10 Gary Houston <ghouston@arglist.com>
11142
11143 * rdelim.c (scm_init_rdelim_builtins): don't try to activate the
11144 (ice-9 rdelim) module in (guile) and (guile-user). it didn't
11145 work reliably anymore. try it from boot-9.scm instead.
11146
6a9003d3
MV
111472001-06-09 Marius Vollmer <mvo@zagadka.ping.de>
11148
11149 * ports.c (scm_lfwrite): Maintain columnd and row count in port.
9a5fa6e9 11150 Thanks to Matthias Köppe!
58bee6a8 11151
47bcd646
ML
111522001-06-08 Michael Livshin <mlivshin@bigfoot.com>
11153
a88ff5b6
ML
11154 * snarf.h, filter-doc-snarfage.c: more changes to cope with
11155 space-happy C preprocessors.
11156
47bcd646 11157 * filter-doc-snarfage.c, guile-snarf.in: try to cope with spaces
9a5fa6e9 11158 inside cookies. thanks to Matthias Köppe!
47bcd646 11159
bab246f3
DH
111602001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
11161
11162 * keywords.c (keyword_print): Don't use SCM_C[AD]R to access
11163 keywords. Fix gc protection.
11164
11165 * objects.c (scm_mcache_lookup_cmethod): Don't use side effecting
11166 operations in macro calls.
11167
11168 * pairs.c (scm_error_pair_access): Avoid recursion.
11169
11170 Thanks to Matthias Koeppe for reporting the bugs that correspond
11171 to the following set of patches.
11172
11173 * unif.c (scm_bit_set_star_x, scm_bit_invert_x), vectors.h
11174 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Obtain the
11175 bitvector base address using SCM_BITVECTOR_BASE.
11176
11177 * unif.h (SCM_BITVECTOR_BASE): Return the base address as an
11178 unsigned long*.
11179
dcb410ec
DH
111802001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
11181
11182 * goops.c (SCM_CLASS_REDEF): Removed.
11183
11184 * vectors.h (VECTORSH, SCM_VECTORS_H): Renamed <foo>H to
11185 SCM_<foo>_H.
11186
11187 Thanks to Matthias Koeppe for reporting the bugs that correspond
11188 to the following set of patches.
11189
11190 * goops.c (scm_sys_prep_layout_x, scm_basic_basic_make_class,
11191 create_basic_classes, scm_sys_fast_slot_set_x, set_slot_value,
11192 scm_sys_allocate_instance, clear_method_cache,
11193 scm_sys_invalidate_method_cache_x, scm_make,
11194 create_standard_classes, scm_make_port_classes, scm_make_class,
11195 scm_add_slot): Use SCM_SET_SLOT to set slot values.
11196
11197 (prep_hashsets): Use SCM_SET_HASHSET to set class hash values.
11198
11199 * goops.h (SCM_SET_SLOT, SCM_SET_HASHSET): New macros.
11200
11201 * ramap.c (BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
11202 UNARY_ELTS_CODE): Remove bogus break statement.
11203
11204 * vectors.h (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR):
11205 Don't access bit vectors elements as SCM objects.
11206
11207 * weaks.c (scm_make_weak_vector, scm_make_weak_key_hash_table,
11208 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
11209 Don't assign to an unpacked value.
11210
e81d98ec
DH
112112001-06-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
11212
11213 * __scm.h (SCM_NORETURN): Moved here from error.h.
11214
11215 (SCM_UNUSED): New macro.
11216
11217 (SCM_DEBUG_PAIR_ACCESSES): New macro.
11218
11219 * backtrace.c (display_error_handler), continuations.c
11220 (continuation_print), debug.c (debugobj_print), dynwind.c
11221 (guards_print), environments.c (observer_print,
11222 core_environments_finalize, leaf_environment_cell,
11223 leaf_environment_print, eval_environment_print,
11224 eval_environment_observer, import_environment_define,
11225 import_environment_undefine, import_environment_print,
11226 import_environment_observer, export_environment_define,
11227 export_environment_undefine, export_environment_print,
11228 export_environment_observer), eval.c (scm_m_quote, scm_m_begin,
11229 scm_m_if, scm_m_set_x, scm_m_and, scm_m_or, scm_m_case,
11230 scm_m_cond, scm_m_lambda, scm_m_letstar, scm_m_do, scm_m_delay,
11231 scm_m_letrec1, scm_m_apply, scm_m_cont, scm_m_nil_cond,
11232 scm_m_nil_ify, scm_m_t_ify, scm_m_0_cond, scm_m_0_ify,
11233 scm_m_1_ify, scm_m_atfop, scm_m_at_call_with_values), evalext.c
11234 (scm_m_generalized_set_x), fluids.c (fluid_print), fports.c
11235 (fport_print), gc.c (gc_start_stats, scm_remember_upto_here_1,
11236 scm_remember_upto_here_2, scm_remember_upto_here, mark_gc_async),
11237 gh_init.c (gh_standard_handler), goops.c (get_slot_value,
11238 set_slot_value, test_slot_existence, scm_change_object_class,
11239 scm_m_atslot_ref, scm_m_atslot_set_x, make_struct_class,
11240 default_setter), guardians.c (guardian_print, guardian_gc_init,
11241 guardian_zombify, whine_about_self_centered_zombies), guile.c
11242 (inner_main), init.c (stream_handler), keywords.c (keyword_print),
11243 mallocs.c (malloc_print), numbers.c (scm_print_real,
11244 scm_print_complex, scm_bigprint), ports.c (flush_port_default,
11245 end_input_default, scm_port_print, fill_input_void_port,
11246 write_void_port), root.c (root_print), smob.c (scm_mark0,
11247 scm_free0, scm_smob_print, scm_smob_apply_1_error,
11248 scm_smob_apply_2_error, scm_smob_apply_3_error, free_print),
11249 stime.c (restorezone), strings.c (scm_makfromstr), struct.c
11250 (scm_struct_free_0, scm_struct_free_standard,
11251 scm_struct_free_entity, scm_struct_gc_init, scm_free_structs),
11252 throw.c (jmpbuffer_print, lazy_catch_print, ss_handler,
11253 scm_handle_by_throw, scm_ithrow), weaks.c
11254 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
11255 scm_scan_weak_vectors), ramap.c (scm_array_fill_int), filesys.c
11256 (scm_dir_print): Mark unused parameters with SCM_UNUSED.
11257
11258 * error.h (SCM_NORETURN): Moved to __scm.h.
11259
11260 * error.h (ERRORH, SCM_ERROR_H), pairs.h (PAIRSH, SCM_PAIRS_H):
11261 Renamed <foo>H to SCM_<foo>_H.
11262
11263 * gc.c (debug_cells_gc_interval): New static variable.
11264
11265 (scm_assert_cell_valid): If selected by the user, perform
11266 additional garbage collections.
11267
11268 (scm_set_debug_cell_accesses_x): Extended to let the user specify
11269 if additional garbage collections are desired.
11270
11271 (mark_gc_async): If additional garbage collections are selected
11272 by the user, don't call the after-gc-hook. Instead require the
11273 user to run the hook manually.
11274
11275 * pairs.c (scm_error_pair_access): New function. Only compiled
11276 if SCM_DEBUG_PAIR_ACCESSES is set to 1.
11277
11278 * pairs.h (SCM_VALIDATE_PAIR): New macro.
11279
11280 (SCM_CAR, SCM_CDR, SCM_SETCAR, SCM_SETCDR): If
11281 SCM_DEBUG_PAIR_ACCESSES is set to 1, make sure that the argument
11282 is a real pair object. (Glocs are also accepted, but that may
11283 change.) If not, abort with an error message.
11284
17fa3fcf
DH
112852001-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
11286
11287 * eval.c (SCM_VALIDATE_NON_EMPTY_COMBINATION): New macro.
11288
11289 (SCM_CEVAL, SCM_APPLY): Replace calls to SCM_EVALIM2 with calls
11290 to SCM_VALIDATE_NON_EMPTY_COMBINATION.
11291
feeedafb
MV
112922001-06-05 Marius Vollmer <mvo@zagadka.ping.de>
11293
11294 * extensions.c (scm_c_register_extension): Allow NULL as library
11295 name.
11296 (load_extension): Ignore NULL library names when comparing.
58bee6a8 11297
feeedafb
MV
11298 * hash.c (scm_hasher): Use SCM_UNPACK in the case labels so that
11299 non-pointers are being compared. Thanks to Alexander Klimov!
11300
4bcdfe46
GH
113012001-06-04 Gary Houston <ghouston@arglist.com>
11302
11303 * rw.c (scm_write_string_partial): new procedure implementing
11304 write-string/partial in (ice-9 rw).
11305 * rw.h: declare scm_write_string_partial.
58bee6a8 11306
f480396b
MV
113072001-06-04 Marius Vollmer <mvo@zagadka.ping.de>
11308
feeedafb
MV
11309 * keywords.c (keyword_print): Substract 1 from length of symbol
11310 name, accounting for the silly dash.
11311
11312 * dynl.c (scm_registered_modules, scm_clear_registered_modules):
11313 Do not emit deprecation warning.
11314
f480396b
MV
11315 Added exception notice to all files.
11316
11317 * dynl.c: Include "deprecation.h".
11318
c794483c
MV
113192001-06-03 Marius Vollmer <mvo@zagadka.ping.de>
11320
11321 * dynl.c (scm_register_module_xxx, scm_registered_modules,
11322 scm_clear_registered_modules): Deprecated.
11323
9454d8d5
RB
113242001-06-02 Rob Browning <rlb@cs.utexas.edu>
11325
11326 * .cvsignore: add guile_filter_doc_snarfage guile-snarf-docs
11327 guile-snarf-docs-texi.
11328
11329 * fports.c: HAVE_ST_BLKSIZE changed to
11330 HAVE_STRUCT_STAT_ST_BLKSIZE.
11331 (scm_fport_buffer_add): HAVE_ST_BLKSIZE changed to
11332 HAVE_STRUCT_STAT_ST_BLKSIZE.
11333
11334 * filesys.c (scm_stat2scm): HAVE_ST_RDEV changed to
11335 HAVE_STRUCT_STAT_ST_RDEV.
11336 (scm_stat2scm): HAVE_ST_BLKSIZE changed to
11337 HAVE_STRUCT_STAT_ST_BLKSIZE.
11338 (scm_stat2scm): HAVE_ST_BLOCKS changed to
11339 HAVE_STRUCT_STAT_ST_BLOCKS.
11340
114f9bab
MV
113412001-06-02 Marius Vollmer <mvo@zagadka.ping.de>
11342
b0c16cd9
MV
11343 * strports.c (scm_eval_string): Use scm_primitive_eval_x instead
11344 of scm_eval_x to allow module changes between the forms in the
11345 string. Set/restore module using scm_c_call_with_current_module.
11346
114f9bab
MV
11347 * mkstemp.c: New file, slightly modified from libiberties
11348 mkstemps.c.
11349
c99f9605
ML
113502001-05-31 Michael Livshin <mlivshin@bigfoot.com>
11351
11352 * guile-snarf-docs.in, guile-snarf-docs-texi.in,
11353 filter-doc-snarfage.c: new files.
11354
11355 * Makefile.am: add stuff to [build,] use and distribute
11356 guile-snarf-docs, guile-snarf-docs-texi, guile_filter_doc_snarfage.
11357
11358 * guile-snarf.in: grok the new snarf output.
11359
11360 * snarf.h: make the output both texttools- and `read'-friendly.
11361
47bcd646
ML
11362 * guile-doc-snarf.in: reimplement in terms of guile-snarf and
11363 guile-snarf-docs. (should also deprecate, I guess. maybe not).
c99f9605 11364
7eb5d7b2
MV
113652001-05-31 Marius Vollmer <mvo@zagadka.ping.de>
11366
11367 * print.c (scm_simple_format): Support "~~" and "~%". Signal
11368 error for unsupported format controls and for superflous
ec2667f0 11369 arguments. Thanks to Daniel Skarda!
7eb5d7b2
MV
11370
11371 * print.h, print.c (scm_print_symbol_name): Factored out of
11372 scm_iprin1.
11373 (scm_iprin1): Call it.
58bee6a8 11374
7eb5d7b2
MV
11375 * keywords.c (keyword_print): Use scm_print_symbol_name so that
11376 weird names are printed correctly.
11377
11378 * print.c (scm_print_symbol_name): Symbols whose name starts with
11379 `#' or `:' or ends with `:' are considered weird.
11380
609c3d30
MG
113812001-05-30 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11382
11383 * numbers.c (scm_difference, scm_divide): Clarified comments for -
11384 and /.
11385
113862001-05-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11387
11388 * debug.h: Removed prototype for scm_eval_string.
11389
8d09eb04
MG
113902001-05-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11391
11392 * symbols.c (scm_gensym): Fix buffer overrun (try `(gensym
58bee6a8 11393 (make-string 2000 #\!))' in an older version).
8d09eb04
MG
11394
11395 Change strncpy to memcpy to allow embedded NUL characters in
11396 symbol prefix.
11397
dd85ce47
ML
113982001-05-28 Michael Livshin <mlivshin@bigfoot.com>
11399
fde50407
ML
11400 * hooks.c (scm_create_hook): deprecated.
11401 (make_hook): deleted.
11402 (scm_make_hook): all the hook creation code is now here.
11403
11404 * gc.c (scm_init_gc): don't call `scm_create_hook'. instead make
11405 a hook, make it permanent, and do a `scm_c_define' on it.
11406
dd85ce47
ML
11407 * strop.c (s_scm_string_capitalize_x): fix docstring quoting.
11408
11409 * socket.c (s_scm_inet_pton): fix docstring quoting.
11410 (s_scm_inet_ntop): ditto.
11411
11412 * num2integral.i.c (INTEGRAL2NUM): cast to fix a warning.
11413
11414 * hashtab.c (scm_internal_hash_fold): fix argument position in
11415 SCM_ASSERT.
11416
11417 * environments.c (s_scm_import_environment_set_imports_x): fix
11418 argument position in SCM_ASSERT.
11419
11420 * debug.c (s_scm_make_gloc): fix SCM packing/unpacking.
11421 (s_scm_make_iloc): ditto.
11422
729dbac3
DH
114232001-05-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
11424
11425 * __scm.h (SCM_DEBUG_TYPING_STRICTNESS): Make 1 the default.
11426
11427 * eval.c (promise_print): Read the promise's value as an object.
11428
11429 (SCM_CEVAL): Don't perform side-effecting operations in macro
11430 parameters.
11431
11432 * eval.h (SCM_EVALIM2): Fix the typing strictness of the
11433 conditional expression.
11434
11435 * gc.c (scm_master_freelist, scm_master_freelist2): Added missing
11436 initializer.
11437
11438 * gh_data.c (gh_set_substr): Removed redundant unsigned >= 0
11439 text, removed redundant computation of effective_length and fixed
11440 the overflow check.
11441
11442 * goops.c (test_slot_existence): Use SCM_EQ_P to compare SCM
11443 values.
11444
11445 (wrap_init): Don't use SCM_C[AD]R for non pairs.
11446
11447 (hell): Make it a scm_bits_t pointer rather than a SCM pointer.
11448
11449 * goops.c (scm_sys_modify_class), strports.c (st_resize_port),
11450 struct.h (SCM_SET_STRUCT_PRINTER): Store unpacked values.
11451
11452 * goops.h (SCM_ACCESSORS_OF, SCM_SLOT): Return a SCM value.
11453
11454 * goops.h (GOOPSH, SCM_GOOPS_H), modules.h (MODULESH,
11455 SCM_MODULES_H), objects.h (OBJECTSH, SCM_OBJECTS_H), struct.h
11456 (STRUCTH, SCM_STRUCT_H), symbols.h (SYMBOLSH, SCM_SYMBOLS_H),
11457 __scm.h (__SCMH, SCM___SCM_H): Change <foo>H to SCM_<foo>_H.
11458
11459 * modules.[ch] (scm_module_tag): Make it a scm_bits_t value.
11460
11461 * objects.h (SCM_SET_CLASS_INSTANCE_SIZE): Fixed typing.
11462
ea2c3968 11463 * ramap.c (ramap_rp): Removed bogus `;'.
729dbac3
DH
11464
11465 * sort.c (scm_restricted_vector_sort_x): Fixed signedness
11466 problem.
11467
11468 * symbols.h (SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS, SCM_SYMBOL_FUNC,
11469 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS):
11470 Read SCM objects rather than scm_bits_t values.
11471
11472 * tags.h (SCM_VOIDP_TEST): Removed.
11473
11474 (SCM_DEBUG_TYPING_STRICTNESS): Now takes values 0, 1, 2. The
11475 value of 2 now corresponds to the former 1, the current 1
11476 corresponds to the former situation that SCM_VOIDP_TEST was
11477 defined.
11478
58bee6a8
TTN
11479 (SCM): Now defined as typedef struct scm_unused_struct * SCM;
11480 If this appears to be not ANSI compliant, we will change it to
729dbac3
DH
11481 typedef struct scm_unused_struct { } * SCM;
11482 Thanks to Han-Wen Nienhuys for the suggestion.
11483
11484 * unif.c (scm_array_set_x): Fix typing problem, and use
11485 SCM_UVECTOR_BASE instead of SCM_VELTS or SCM_CELL_WORD_1 when
11486 dealing with uniform vectors.
11487
6b1b030e
ML
114882001-05-27 Michael Livshin <mlivshin@bigfoot.com>
11489
11490 * gc.c (scm_init_storage): init `scm_gc_registered_roots'.
11491 (scm_igc): mark from them, too (precisely, not conservatively!).
11492
11493 * root.h (scm_gc_registered_roots): new object in
11494 scm_sys_protects.
11495
11496 * hooks.c (scm_create_hook): call `scm_gc_protect_object' instead
11497 `scm_protect_object'. shouldn't call it at all, though, it seems.
11498
11499 * gc.c (scm_[un]protect_object): deprecated.
11500 (scm_gc_[un]protect_object): new names for scm_[un]protect_object.
11501 (scm_gc_[un]register_root[s]): new.
11502
11503 * gc.h: add prototypes for scm_gc_[un]protect_object,
11504 scm_gc_[un]register_root[s].
11505
c014a02e
ML
115062001-05-26 Michael Livshin <mlivshin@bigfoot.com>
11507
11508 revert the controversial part of the 2001-05-24 changes.
11509
0120801d
MV
115102001-05-25 Marius Vollmer <mvo@zagadka.ping.de>
11511
f4e0611e
MV
11512 * modules.c (scm_env_module): Exported to Scheme.
11513
0120801d 11514 * eval.c (scm_debug_opts): New option `show-file-name'.
729dbac3 11515
0120801d 11516 * debug.h (SCM_SHOW_FILE_NAME): New.
729dbac3 11517
0120801d
MV
11518 * backtrace.c: Include "libguile/filesys.h".
11519 (sym_base, display_backtrace_get_file_line,
11520 display_backtrace_file, display_backtrace_file_and_line): New.
11521 (display_frame): Call display_backtrace_file_and_line if that is
11522 requested.
11523 (display_backtrace_body): Call scm_display_backtrace_file if
11524 requested.
11525
11526 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr):
11527 Prototypes removed since there's no definition for these
11528 functions.
11529
880a7d13
MG
115302001-05-24 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11531
11532 * unif.c (scm_make_ra, array_free), unif.h (SCM_ARRAY_DIMS):
11533 Changed use of scm_array->scm_array_t and
11534 scm_array_dim->scm_array_dim_t to enable build with
11535 --disable-deprecated.
11536
1be6b49c
ML
115372001-05-24 Michael Livshin <mlivshin@bigfoot.com>
11538
11539 The purpose of this set of changes is to regularize Guile's usage
11540 of ANSI C integral types, with the following ideas in mind:
11541
d69c867a
ML
11542 - SCM does not nesessarily have to be long.
11543 - long is not nesessarily enough to store pointers.
1be6b49c
ML
11544 - long is not nesessarily the same size as int.
11545
11546 The changes are incomplete and possibly buggy. Please test on
11547 something exotic.
11548
11549 * validate.h
11550 (SCM_NUM2{SIZE,PTRDIFF,SHORT,USHORT,BITS,UBITS,INT,UINT}[_DEF]):
11551 new macros.
11552
11553 * unif.h: type renaming:
11554 scm_array -> scm_array_t
11555 scm_array_dim -> scm_array_dim_t
11556 the old names are deprecated, all in-Guile uses changed.
11557
11558 * tags.h (scm_ubits_t): new typedef, representing unsigned
11559 scm_bits_t.
11560
11561 * stacks.h: type renaming:
11562 scm_info_frame -> scm_info_frame_t
11563 scm_stack -> scm_stack_t
11564 the old names are deprecated, all in-Guile uses changed.
11565
11566 * srcprop.h: type renaming:
11567 scm_srcprops -> scm_srcprops_t
11568 scm_srcprops_chunk -> scm_srcprops_chunk_t
11569 the old names are deprecated, all in-Guile uses changed.
11570
11571 * gsubr.c, procs.c, print.c, ports.c, read.c, rdelim.c, ramap.c,
11572 rw.c, smob.c, sort.c, srcprop.c, stacks.c, strings.c, strop.c,
11573 strorder.c, strports.c, struct.c, symbols.c, unif.c, values.c,
11574 vectors.c, vports.c, weaks.c:
11575 various int/size_t -> size_t/scm_bits_t changes.
11576
11577 * random.h: type renaming:
11578 scm_rstate -> scm_rstate_t
11579 scm_rng -> scm_rng_t
11580 scm_i_rstate -> scm_i_rstate_t
11581 the old names are deprecated, all in-Guile uses changed.
11582
11583 * procs.h: type renaming:
11584 scm_subr_entry -> scm_subr_entry_t
11585 the old name is deprecated, all in-Guile uses changed.
11586
11587 * options.h (scm_option_t.val): unsigned long -> scm_bits_t.
11588 type renaming:
11589 scm_option -> scm_option_t
11590 the old name is deprecated, all in-Guile uses changed.
11591
11592 * objects.c: various long -> scm_bits_t changes.
11593 (scm_i_make_class_object): flags: unsigned long -> scm_ubits_t
11594
11595 * numbers.h (SCM_FIXNUM_BIT): deprecated, renamed to
11596 SCM_I_FIXNUM_BIT.
11597
11598 * num2integral.i.c: new file, multiply included by numbers.c, used
11599 to "templatize" the various integral <-> num conversion routines.
11600
11601 * numbers.c (scm_mkbig, scm_big2num, scm_adjbig, scm_normbig,
11602 scm_copybig, scm_2ulong2big, scm_dbl2big, scm_big2dbl):
11603 deprecated.
11604 (scm_i_mkbig, scm_i_big2inum, scm_i_adjbig, scm_i_normbig,
11605 scm_i_copybig, scm_i_short2big, scm_i_ushort2big, scm_i_int2big,
11606 scm_i_uint2big, scm_i_long2big, scm_i_ulong2big, scm_i_bits2big,
11607 scm_i_ubits2big, scm_i_size2big, scm_i_ptrdiff2big,
11608 scm_i_long_long2big, scm_i_ulong_long2big, scm_i_dbl2big,
11609 scm_i_big2dbl, scm_short2num, scm_ushort2num, scm_int2num,
11610 scm_uint2num, scm_bits2num, scm_ubits2num, scm_size2num,
11611 scm_ptrdiff2num, scm_num2short, scm_num2ushort, scm_num2int,
11612 scm_num2uint, scm_num2bits, scm_num2ubits, scm_num2ptrdiff,
11613 scm_num2size): new functions.
11614
d69c867a 11615 * modules.c (scm_module_reverse_lookup): i, n: int -> scm_bits_t.
1be6b49c
ML
11616
11617 * load.c: change int -> size_t in various places (where the
11618 variable is used to store a string length).
11619 (search-path): call scm_done_free, not scm_done_malloc.
11620
11621 * list.c (scm_ilength): return a scm_bits_t, not long.
11622 some other {int,long} -> scm_bits_t changes.
11623
11624 * hashtab.c: various [u]int -> scm_bits_t changes.
11625 scm_ihashx_closure -> scm_ihashx_closure_t (and made a typedef).
11626 (scm_ihashx): n: uint -> scm_bits_t
11627 use scm_bits2num instead of scm_ulong2num.
11628
11629 * gsubr.c: various int -> scm_bits_t changes.
11630
11631 * goops.[hc]: various {int,long} -> scm_bits_t changes.
11632
d69c867a 11633 * gh_data.c (gh_num2int): no loss of precision any more.
1be6b49c
ML
11634
11635 * gh.h (gh_str2scm): len: int -> size_t
11636 (gh_{get,set}_substr): start: int -> scm_bits_t,
11637 len: int -> size_t
11638 (gh_<num>2scm): n: int -> scm_bits_t
11639 (gh_*vector_length): return scm_[u]size_t, not unsigned long.
11640 (gh_length): return scm_bits_t, not unsigned long.
11641
11642 * gc.[hc]: various small changes relating to many things stopping
11643 being long and starting being scm_[u]bits_t instead.
11644 scm_mallocated should no longer wrap around.
11645
11646 * fports.h: type renaming:
11647 scm_fport -> scm_fport_t
11648 the old name is deprecated, all in-Guile uses changed.
11649
11650 * fports.c (fport_fill_input): count: int -> scm_bits_t
11651 (fport_flush): init_size, remaining, count: int -> scm_bits_t
11652
11653 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr): removed
11654 those prototypes, as the functions they prototype don't exist.
11655
11656 * fports.c (default_buffer_size): int -> size_t
11657 (scm_fport_buffer_add): read_size, write_size: int -> scm_bits_t
11658 default_size: int -> size_t
11659 (scm_setvbuf): csize: int -> scm_bits_t
11660
11661 * fluids.c (n_fluids): int -> scm_bits_t
11662 (grow_fluids): old_length, i: int -> scm_bits_t
11663 (next_fluid_num, scm_fluid_ref, scm_fluid_set_x): n: int ->
11664 scm_bits_t
11665 (scm_c_with_fluids): flen, vlen: int -> scm_bits_t
11666
11667 * filesys.c (s_scm_open_fdes): changed calls to SCM_NUM2LONG to
11668 the new and shiny SCM_NUM2INT.
11669
11670 * extensions.c: extension -> extension_t (and made a typedef).
11671
11672 * eval.h (SCM_IFRAME): cast to scm_bits_t, not int. just so
11673 there are no nasty surprises if/when the various deeply magic tag
11674 bits move somewhere else.
11675
11676 * eval.c: changed the locals used to store results of SCM_IFRAME,
11677 scm_ilength and such to be of type scm_bits_t (and not int/long).
11678 (iqq): depth, edepth: int -> scm_bits_t
11679 (scm_eval_stack): int -> scm_bits_t
11680 (SCM_CEVAL): various vars are not scm_bits_t instead of int.
11681 (check_map_args, scm_map, scm_for_each): len: long -> scm_bits_t
11682 i: int -> scm_bits_t
11683
11684 * environments.c: changed the many calls to scm_ulong2num to
11685 scm_ubits2num.
11686 (import_environment_fold): proc_as_ul: ulong -> scm_ubits_t
11687
11688 * dynwind.c (scm_dowinds): delta: long -> scm_bits_t
11689
11690 * debug.h: type renaming:
11691 scm_debug_info -> scm_debug_info_t
11692 scm_debug_frame -> scm_debug_frame_t
11693 the old names are deprecated, all in-Guile uses changed.
11694 (scm_debug_eframe_size): int -> scm_bits_t
11695
11696 * debug.c (scm_init_debug): use scm_c_define instead of the
11697 deprecated scm_define.
11698
11699 * continuations.h: type renaming:
11700 scm_contregs -> scm_contregs_t
11701 the old name is deprecated, all in-Guile uses changed.
11702 (scm_contregs_t.num_stack_items): size_t -> scm_bits_t
11703 (scm_contregs_t.num_stack_items): ulong -> scm_ubits_t
11704
11705 * continuations.c (scm_make_continuation): change the type of
d69c867a 11706 stack_size from long to scm_bits_t.
1be6b49c
ML
11707
11708 * ports.h: type renaming:
11709 scm_port_rw_active -> scm_port_rw_active_t (and made a typedef)
11710 scm_port -> scm_port_t
11711 scm_ptob_descriptor -> scm_ptob_descriptor_t
11712 the old names are deprecated, all in-Guile uses changed.
11713 (scm_port_t.entry): int -> scm_bits_t.
11714 (scm_port_t.line_number): int -> long.
11715 (scm_port_t.putback_buf_size): int -> size_t.
11716
11717 * __scm.h (long_long, ulong_long): deprecated (they pollute the
d69c867a 11718 global namespace and have little value beside that).
1be6b49c
ML
11719 (SCM_BITS_LENGTH): new, is the bit size of scm_bits_t (i.e. of an
11720 SCM handle).
11721 (ifdef spaghetti): include sys/types.h and sys/stdtypes.h, if they
d69c867a 11722 exist (for size_t & ptrdiff_t).
1be6b49c
ML
11723 (scm_sizet): deprecated.
11724
11725 * Makefile.am (noinst_HEADERS): add num2integral.i.c
11726
a6219f22
MV
117272001-05-23 Marius Vollmer <mvo@zagadka.ping.de>
11728
11729 * snarf.h (SCM_CONST_LONG): Use SCM_VCELL_INIT instead of
11730 SCM_VARIABLE_INIT since that it what it used to be.
11731
11732 * deprecation.c (scm_include_deprecated_features): Make docstring
9a5fa6e9 11733 ANSIsh. Thanks to Matthias Köppe!
a6219f22 11734
311b6a3c
MV
117352001-05-21 Marius Vollmer <mvo@zagadka.ping.de>
11736
9dfc4faa
MV
11737 * symbols.c (scm_mem2symbol): Re-introduce indirect cell. It is
11738 needed for weak-key hashtables.
11739
11740 * procs.c (scm_make_subr_with_generic): Add missing last argument
11741 in call to scm_c_define_gsubr_with_generic. Thanks to Ariel Rios.
11742
11743 * eval.c: Use SCM_EQ_P instead of `==' or `!=' in certain
11744 places. (scm_c_improper_memq): Return 1 instead of SCM_BOOL_T.
311b6a3c
MV
11745
11746 * eval.h (SCM_EVALIM2): Use SCM_EQ_P instead of `=='.
11747
2fc933fe
MV
117482001-05-20 Marius Vollmer <mvo@zagadka.ping.de>
11749
57ae112d
MV
11750 * symbols.c (scm_mem2symbol): Call `scm_must_strndup' instead of
11751 `duplicate_string'. Do not use an indirect cell, store symbol
11752 directly in collision list of hash table.
11753 (duplicate_string): Removed.
58bee6a8 11754
57ae112d
MV
11755 * init.c (scm_init_guile_1): Call scm_init_extensions.
11756
11757 * Makefile.am: Add "extensions.c" and related files in all the
11758 right places.
11759
11760 * extensions.h, extension.c: New files.
11761
11762 * gc.h, gc.c (scm_must_strdup, scm_must_strndup): New.
11763
2fc933fe
MV
11764 * modules.h (scm_system_module_env_p): Move out of deprecated
11765 section.
11766
11767 * rw.h (scm_init_rw): Added prototype.
11768
11769 * gsubr.h, gsubr.c (scm_c_make_gsubr, scm_c_define_gsubr,
11770 scm_c_make_gsubr_with_generic, scm_c_define_gsubr_with_generic):
11771 New functions. They replace scm_make_gsubr and
11772 scm_make_gsubr_with_generic. The `make' variants only create the
11773 gsubr object, while the `define' variants also put it into the
11774 current module. Changed all callers.
11775 (scm_make_gsubr, scm_make_gsubr_with_generic): Deprecated.
11776
11777 * procs.h, procs.c (scm_c_make_subr, scm_c_define_subr,
11778 scm_c_make_subr_with_generic, scm_c_define_subr_with_generic): New
11779 functions. They replace scm_make_subr, scm_make_subr_opt and
11780 scm_make_subr_with_generic. The `make' variants only create the
11781 subr object, while the `define' variants also put it into the
11782 current module. Changed all callers.
11783 (scm_make_subr, scm_make_subr_opt, scm_make_subr_with_generic):
11784 Deprecated.
11785
11786 * eval.c, gc.c, gh_funcs.c, goops.c, macros.c, pairs.c, ramap.c,
11787 rdelim.c, rw.c, scmsigs.c, snarf.h, values.c: Changed according to
11788 the comments above.
58bee6a8 11789
18928596
NJ
117902001-05-19 Neil Jerram <neil@ossau.uklinux.net>
11791
11792 * throw.c (scm_lazy_catch): Slight docstring clarification.
11793
21a13beb
MV
117942001-05-19 Marius Vollmer <mvo@zagadka.ping.de>
11795
e2b6ddc6
MV
11796 * throw.c: Lazy-catch handlers are no longer allowed to return.
11797 Fixed comments throughout.
11798 (scm_ithrow): Signal an error when a lazy-catch handler returns.
11799 Moved actual jump to jmpbuf into if-branch where the jmpbuf is
11800 recognized as such.
11801
21a13beb
MV
11802 * version.c (s_scm_micro_version): Fix typo in FUNC_NAME, it
11803 refered to s_scm_minor_version previously.
11804
11805 * modules.h, modules.c: Moved around a lot of code so that
11806 deprecated features appear at the bottom.
11807 (root_module_lookup_closure, scm_sym_app, scm_sym_modules,
11808 module_prefix, make_modules_in_var, beautify_user_module_x_var,
11809 scm_the_root_module, scm_make_module, scm_ensure_user_module,
11810 scm_load_scheme_module): Deprecated.
11811 (scm_system_module_env_p): Return SCM_BOOL_T directly for
11812 environments corresponding to the root module.
11813 (convert_module_name, scm_c_resolve_module,
11814 scm_c_call_with_current_module, scm_c_define_module,
11815 scm_c_use_module, scm_c_export): New.
11816 (the_root_module): New static variant of scm_the_root_module. Use
11817 it everywhere instead of scm_the_root_module.
58bee6a8 11818
21a13beb
MV
11819 * fluids.h, fluids.c (scm_internal_with_fluids): Deprecated.
11820 (scm_c_with_fluids): Renamed from scm_internal_with_fluids.
11821 (scm_c_with_fluid): New.
11822 (scm_with_fluids): Use scm_c_with_fluids instead of
11823 scm_internal_with_fluids.
58bee6a8 11824
21a13beb
MV
11825 * goops.h, goops.c (scm_init_goops_builtins): Renamed from
11826 `scm_init_goops'. Do not explicitly create/switch modules.
11827 Return SCM_UNSPECIFIED.
11828 (scm_init_goops): Only register `%init-goops-builtins' procedure.
11829 (scm_load_goops): Use scm_c_resolve_module instead of
11830 scm_resolve_module.
58bee6a8 11831
21a13beb
MV
11832 * init.c (scm_init_guile_1): Call `scm_init_goops' instead of
11833 `scm_init_oop_goops_goopscore_module'. Call `scm_init_rdelim' and
11834 `scm_init_rw' prior to loading the startup files.
11835
11836 * rdelim.h, rdelim.c: (scm_init_rdelim_builtins): Renamed from
11837 scm_init_rdelim. Do not explicitly create/switch modules.
11838 Return SCM_UNSPECIFIED.
11839 (scm_init_rdelim): Only register `%init-rdelim-builtins'
11840 procedure.
58bee6a8 11841
21a13beb
MV
11842 * rw.c (scm_init_rw_builtins): Renamed from scm_init_rw. Do not
11843 explicitly create/switch modules. Return SCM_UNSPECIFIED.
11844 (scm_init_rw): Only register `%init-rw-builtins' procedure.
11845
11846 * script.c (scm_shell): Evaluate the compiled switches in the
11847 current module, not in the root module.
11848
118492001-05-18 Marius Vollmer <mvo@zagadka.ping.de>
11850
11851 * fluids.c (scm_c_with_fluids): Rename from
11852 scm_internal_with_fluids.
11853 (scm_internal_with_fluids): Deprecated.
11854 (scm_c_with_fluid): New.
11855
09cb9e73
DH
118562001-05-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
11857
11858 * print.h (PRINTH, SCM_PRINT_H): Renamed PRINTH to SCM_PRINT_H.
11859
11860 (SCM_PORT_WITH_PS_PORT, SCM_PORT_WITH_PS_PS): Only pairs may be
11861 accessed with SCM_C[AD]R.
11862
11863 (SCM_COERCE_OUTPORT): Removed redundant SCM_NIMP test.
11864
c81ea65d
RB
118652001-05-16 Rob Browning <rlb@cs.utexas.edu>
11866
11867 * version.c (s_scm_major_version): doc fixes.
11868 (s_scm_minor_version): doc fixes.
11869 (s_scm_minor_version): new function.
11870
11871 * version.h (scm_init_version): new function.
11872
11873 * versiondat.h.in: add GUILE_MICRO_VERSION.
11874
887dfa7d
DH
118752001-05-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
11876
11877 * deprecation.c (scm_init_deprecation): Renamed
11878 GUILE_WARN_DEPRECATED_DEFAULT to SCM_WARN_DEPRECATED_DEFAULT.
11879
78930a69
MV
118802001-05-16 Marius Vollmer <mvo@zagadka.ping.de>
11881
11882 * Makefile.am (cpp_sig_symbols.c, cpp_err_symbols.c): Make
11883 dependent on cpp_cnvt.awk
11884
39cde5c5
MG
118852001-05-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11886
11887 * script.c (scm_compile_shell_switches): New command line option
11888 `--use-srfi' for loading a list of SRFIs on startup.
11889 (scm_shell_usage): Added `--use-srfi' to help message.
11890
f3f9dcbc
MV
118912001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
11892
78930a69 11893 Merged from mvo-vcell-cleanup-1-branch.
887dfa7d 11894
f3f9dcbc
MV
11895 The concept of vcells has been removed from Guile. With it,
11896 explicit obarrays and associated operations are gone. Use
11897 hashtables instead of obarrays.
887dfa7d 11898
f3f9dcbc
MV
11899 Throughout: use scm_sym2var instead of scm_sym2vcell and treat
11900 result as variable instead of vcell. Glocs no longer point to a
11901 vcell but to a variable. Use scm_c_define instead of
11902 scm_sysintern and treat the result as a variable (which it is),
11903 not a vcell.
887dfa7d 11904
f3f9dcbc
MV
11905 * variable.c, variable.h (SCM_VARVCELL, SCM_UDVARIABLEP,
11906 SCM_DEFVARIABLEP): Deprecated.
11907 (SCM_VARIABLE_REF, SCM_VARIABLE_SET, SCM_VARIABLE_LOC): New.
11908 (variable_print): Do not print name of variable.
11909 (variable_equalp): Compare values, not vcells.
11910 (anonymous_variable_sym): Removed.
11911 (make_vcell_variable): Removed.
11912 (make_variable): New, as replacement.
11913 (scm_make_variable, scm_make_undefined_variable): Do not take name
11914 hint parameter.
11915 (scm_variable_ref): Check for SCM_UNDEFINED and throw "unbound"
11916 error in that case.
11917 (scm_builtin_variable): Deprecated.
11918
11919 * symbols.c, symbols.h (scm_sym2vcell, scm_sym2ovcell_soft,
11920 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
11921 scm_intern, scm_intern0, scm_sysintern0_no_module_lookup,
11922 scm_sysintern, scm_sysintern0, scm_symbol_value0,
11923 scm_string_to_obarray_symbol, scm_intern_symbol,
11924 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned,
11925 scm_symbol_bound_p, scm_symbol_set_x, scm_gentmp, gentmp_counter):
11926 Deprecated and moved to "symbols-deprecated.c".
11927 (copy_and_prune_obarray, scm_builtin_bindings): Removed.
11928 (scm_init_symbols): Call scm_init_symbols_deprecated.
11929 * symbols-deprecated.c: New file.
11930 * Makefile.am: Added symbols-deprecated.c and related files in all
11931 the right places.
887dfa7d 11932
f3f9dcbc
MV
11933 * snarf.h (SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
11934 SCM_GLOBAL_VCELL_INIT): Deprecated.
11935 (SCM_VARIABLE, SCM_GLOBAL_VARIABLE, SCM_VARIABLE_INIT,
11936 SCM_GLOBAL_VARIABLE_INIT): New, as replacement. Changed all uses.
887dfa7d 11937
f3f9dcbc
MV
11938 * print.c (scm_iprin1): Use scm_module_reverse_lookup instead of
11939 SCM_GLOC_SYM.
11940
11941 * evalext.c, filesys.c, fports.c, gdbint.c, gh_data.c, gsubr.c,
11942 hooks.c, load.c, numbers.c, objects.c, ports.c, posix.c, procs.c,
11943 ramap.c, random.c, read.c, regex-posix.c, scmsigs.c, script.c,
11944 socket.c, srcprop.c, stacks.c, stime.c, struct.c, tag.c, throw.c:
11945 Changed according to the `throughout' comments.
11946
11947 * modules.h, modules.c (scm_module_system_booted_p): Changed type
11948 to `int'.
11949 (scm_module_type): Removed.
11950 (the_root_module): Renamed to the_root_module_var. Now points to
11951 a variable instead of a vcell. Updated all uses.
11952 (scm_the_root_module): Return SCM_BOOL_F when module systems
11953 hasn't been booted yet.
11954 (SCM_VALIDATE_STRUCT_TYPE): Removed.
11955 (scm_post_boot_init_modules): Made static.
11956 (scm_set_current_module): Call scm_post_boot_init_modules on first
11957 call.
11958 (make_modules_in, beautify_user_module_x, resolve_module,
11959 try_module_autoload, module_make_local_var_x): Tacked on "_var"
11960 suffix. Now point to variables instead of vcells. Updated all
11961 uses.
11962 (scm_module_lookup_closure): Deal with the module being SCM_BOOL_F
11963 and return SCM_BOOL_F in that case.
11964 (scm_module_transformer): Likewise.
11965 (sym_module, scm_lookup_closure_module, scm_env_module): New.
11966 (SCM_F_EVAL_CLOSURE_INTERFACE, SCM_EVAL_CLOSURE_INTERFACE_P): New.
11967 (scm_eval_closure_lookup): Do not allow new definitions when
11968 `interface' flag is set.
11969 (scm_standard_interface_eval_closure): New.
11970 (scm_pre_modules_obarray, scm_sym2var, scm_module_lookup,
11971 scm_lookup, scm_module_define, scm_define, scm_c_module_lookup,
11972 scm_c_lookup, scm_c_module_define, scm_c_define,
11973 scm_module_reverse_lookup, scm_get_pre_modules_obarray,
11974 scm_modules_prehistory): New.
11975 (scm_post_boot_init_modules): Use scm_c_define and scm_c_lookup
11976 instead of scm_intern0.
887dfa7d 11977
f3f9dcbc
MV
11978 * macros.c (scm_make_synt): Return SCM_UNSPECIFIED instead of the
11979 symbol.
11980
11981 * keywords.c (s_scm_make_keyword_from_dash_symbol): Use a regular
11982 hashtable operations to maintain the keywords, not obarray ones.
11983
11984 * init.c (scm_load_startup_files): Do not call
11985 scm_post_boot_init_modules. This is done by
11986 scm_set_current_module now.
11987 (scm_init_guile_1): Call scm_modules_prehistory. Call
11988 scm_init_variable early on.
11989
11990 * goops.c (s_scm_sys_goops_loaded): Get
11991 var_compute_applicable_methods from scm_sym2var, not from a direct
11992 invocation of scm_goops_lookup_closure.
11993
11994 * gh_funcs.c (gh_define): Return SCM_UNSPECIFIED instead of vcell.
11995
11996 * gc.c: Added simple debugging hack to mark phase of GC: When
11997 activated, do not tail-call scm_gc_mark. This gives nice
11998 backtraces.
11999 (scm_unhash_name): Removed.
12000
12001 * feature.c (features): Renamed to features_var. Now points to a
12002 variable instead of a vcell. Updated all uses.
12003
12004 * eval.h (SCM_TOP_LEVEL_LOOKUP_CLOSURE): Use
12005 `scm_current_module_lookup_closure' which will do the right thing
12006 when the module system hasn't been booted yet.
12007 (SCM_GLOC_SYM): Removed.
12008 (SCM_GLOC_VAR, SCM_GLOC_SET_VAL): New.
12009 (SCM_GLOC_VAL, SCM_GLOC_LOC): Reimplemented in terms of variables.
887dfa7d 12010
f3f9dcbc
MV
12011 * eval.c (scm_lookupcar, scm_lookupcar1): Deal with variables
12012 instead of with vcells. Do not overwrite `var' with the result of
12013 the lookup, use the new `real_var' instead. Remove `var2' in
12014 exchange (which was only used with threads).
12015 (sym_three_question_marks): New.
12016 (scm_unmemocar): Use `scm_module_reverse_lookup' instead of
12017 `SCM_GLOC_SYM'.
12018 (scm_lisp_nil, scm_lisp_t): Directly define as symbols.
12019 (scm_m_atfop): Expect the function definition to be a variable
12020 instead of a vcell.
12021 (scm_macroexp): Do not use `unmemocar', explicitely remember the
12022 symbol instead.
12023 (scm_unmemocopy): Removed thoughts about anti-macro interface.
12024 (scm_eval_args): Use more explicit code in the gloc branch of the
12025 atrocious struct ambiguity test. The optimizer will sort this
12026 out.
12027 (scm_deval_args): Likewise.
12028 (SCM_CEVAL): Likewise. Also, do not use unmemocar, explicitely
12029 remember the symbol instead. Added some comments where
12030 scm_tc3_cons_gloc really exclusively refers to structs.
12031 (scm_init_eval): Use scm_define to initialize "nil" and "t" to
12032 scm_lisp_nil and scm_lisp_t, respectively. Use scm_define instead
12033 of scm_sysintern in general.
12034
12035 * dynwind.c (scm_swap_bindings): Use SCM_GLOC_SET_VAL instead of
12036 explicit magic.
12037
12038 * debug.c (s_scm_make_gloc): Only allow proper variables, no
12039 pairs. Put the variable directly in the gloc.
12040 (s_scm_gloc_p): Use `scm_tc3_cons_gloc' instead of the magic `1'.
12041 (scm_init_debug): Use scm_c_define instead scm_sysintern.
12042
12043 * cpp_cnvt.awk: Emit "scm_c_define" instead of "scm_sysintern".
12044
12045 * backtrace.h, backtrace.c (scm_the_last_stack_fluid): Renamed to
12046 scm_the_last_stack_fluid_var. It now points to a variable instead
12047 of a vcell. Updated all uses.
12048 (scm_has_shown_backtrace_hint_p_var): Now points to a variable
12049 instead of a vcell. Updated all uses.
12050
12051 * _scm.h: Include "variables.h" and "modules.h" since almost
12052 everybody needs them now.
12053
12054 * root.h (scm_symhash, scm_symhash_vars): Removed.
12055 * gc.c (scm_init_storage): Do not initialize them.
887dfa7d 12056
7c33806a
DH
120572001-05-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
12058
12059 * eval.c (scm_init_eval): Initialize scm_undefineds and
58bee6a8 12060 scm_listofnull.
7c33806a
DH
12061
12062 * gc.c (scm_debug_newcell, scm_debug_newcell2): Fixed to behave
12063 like the SCM_NEWCELL macro counterparts.
12064
12065 (scm_init_storage, scm_init_gc): Moved initialization of
12066 scm_tc16_allocated from scm_init_gc to scm_init_storage.
12067
12068 (scm_init_storage): Moved initialization of scm_undefineds and
12069 scm_listofnull to eval.c, initializion of scm_nullstr to
12070 strings.c, initializion of scm_nullvect to vectors.c.
12071
12072 * gc.h (SCM_NEWCELL, SCM_NEWCELL2): Prefer SCM_NULLP over
12073 SCM_IMP, as in scm_debug_newcell and scm_debug_newcell2.
12074
12075 * init.c (scm_init_guile_1): Reordered some initializations and
12076 added dependcy information comments.
12077
12078 * load.c (scm_init_load): Use scm_nullstr.
12079
12080 * strings.c (scm_init_strings): Initialize scm_nullstr.
12081
12082 * vectors.c (scm_init_vectors): Initialize scm_nullvect.
12083
11bbab47
MV
120842001-05-15 Marius Vollmer <mvo@zagadka.ping.de>
12085
12086 * values.c (print_values): Print as a unreadable object, not as
9a5fa6e9 12087 multiple lines. Thanks to Matthias Köppe!
11bbab47 12088
5cd06d5e
DH
120892001-05-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
12090
12091 * deprecation.c: Fixed copyright date.
12092
12093 * deprecation.h (DEPRECATION_H, SCM_DEPRECATION_H): Renamed
12094 DEPRECATION_H to SCM_DEPRECATION_H.
12095
32bac999
TTN
120962001-05-10 Thien-Thi Nguyen <ttn@revel.glug.org>
12097
12098 * guile-doc-snarf.in: Update copyright.
12099 Fix relative path bug. Thanks to Sergey Poznyakoff.
12100
c9dcc5ae
MV
121012001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
12102
12103 * ports.c (scm_port_revealed, scm_set_port_revealed_x): Only
12104 accept open ports. Thanks to Quetzalcoatl Bradley!
12105
7c582ec9
MG
121062001-05-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12107
12108 * procs.c: Increased `scm_subr_table_room' to 800 because Guile now
12109 has 779 primitives on startup.
12110
284ab601
MV
121112001-05-09 Marius Vollmer <mvo@zagadka.ping.de>
12112
12113 * eval.c (scm_i_eval): Copy expression before passing it to
12114 SCM_XEVAL. The copy operation was removed unintendedly during my
12115 change on 2001-03-25.
12116
910d1e40
ML
121172001-05-09 Michael Livshin <mlivshin@bigfoot.com>
12118
9a5fa6e9 12119 from Matthias Köppe (thanks!):
910d1e40
ML
12120
12121 * ports.c (scm_c_read): pointer arithmetic on void pointers isn't
12122 portable.
12123
12124 * deprecation.c (s_scm_include_deprecated_features): ANSI'fied the
12125 docstring.
12126
56e55ac7
DH
121272001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
12128
12129 * gc.c (scm_init_gc): Added FIXME comment.
12130
12131 * hooks.c: Since hooks don't have a name any more, it is not
12132 necessary to include objprop.h.
12133
12134 (hook_print, scm_add_hook_x): Replace SCM_NFALSEP by !SCM_FALSEP.
12135
12136 (symbol_name, scm_make_hook_with_name): Removed.
12137
12138 (scm_create_hook): Don't set the hook's name property.
12139
12140 * hooks.h (HOOKSH, SCM_HOOKS_H): Renamed HOOKSH to SCM_HOOKS_H.
12141
12142 (SCM_HOOK_NAME, scm_make_hook_with_name): Removed.
12143
12144 * init.c (scm_init_guile_1): Hooks don't use objprops any more.
12145
12146 * numbers.c (SCM_FLOBUFLEN, FLOBUFLEN, scm_number_to_string,
12147 scm_print_real, scm_print_complex): Renamed SCM_FLOBUFLEN to
12148 FLOBUFLEN and define it unconditionally.
12149
d204b24c
MV
121502001-05-07 Marius Vollmer <mvo@zagadka.ping.de>
12151
438201b4
MV
12152 * gh_data.c (gh_lookup): Call gh_module_lookup with
12153 `scm_current_module ()', not `#f'.
12154 (gh_module_lookup): Expect a module instead of an obarray as first
12155 argument and do lookup in that module.
56e55ac7 12156
d204b24c
MV
12157 * ramap.c (raeql_1): Do not call scm_uniform_vector_length on
12158 arrays. The length of array is already determined differently and
12159 scm_uniform_vector_length does not work on arrays.
12160
26c1d549
MV
121612001-05-06 Marius Vollmer <mvo@zagadka.ping.de>
12162
fe7c2f88
MV
12163 * snarf.h (SCM_FUNC_CAST_ARBITRARY_ARGS): Use "SCM (*)()" for C++
12164 as well. "SCM (*)(...)" does not work on RedHat 7.1.
12165
26c1d549
MV
12166 * __scm.h (SCM_WTA_DISPATCH_0): Removed ARG and POS parameters,
12167 they are not used. Changed `wrong type' error into `wrong num
12168 args' error. Changed all callers.
56e55ac7 12169
26c1d549
MV
12170 * numbers.c (scm_difference): Call SCM_WTA_DISPATCH_0 when zero
12171 arguments are supplied.
12172
1c938eb8
TTN
121732001-05-05 Thien-Thi Nguyen <ttn@revel.glug.org>
12174
12175 * regex-posix.c (scm_regexp_exec): Expand docstring to briefly
12176 describe `regexp/notbol' and `regexp/noteol' execution flags.
12177
3a6379f7
TTN
12178 * strop.c (scm_substring_move_x): Doc fix; nfc.
12179
c10ecc4c
MV
121802001-05-05 Marius Vollmer <mvo@zagadka.ping.de>
12181
12182 * objects.c, objects.h (scm_valid_object_procedure_p): New.
12183 (scm_set_object_procedure_x): Use it to check argument. Fix
12184 docstring.
12185
12186 * evalext.c (scm_definedp): Fix docstring.
12187
a57a0b1e
GH
121882001-05-05 Gary Houston <ghouston@arglist.com>
12189
12190 * socket.c: use HAVE_IPV6 instead of AF_INET6 to enable IPv6
12191 support.
12192
7a095584
NJ
121932001-05-04 Neil Jerram <neil@ossau.uklinux.net>
12194
12195 * eval.c (scm_promise_p), list.c (scm_append_x, scm_reverse_x),
12196 symbols.c (scm_symbol_to_string), vports.c (scm_make_soft_port):
12197 Change R4RS references to R5RS.
12198
12199 * guile-snarf.awk.in: Fixes so that (i) blank lines in the
12200 docstring source are correctly reproduced in the output (ii)
12201 we don't anymore get occasional trailing quotes. Also reorganized
12202 and commented the code a little.
12203
12204 * scmsigs.c (scm_raise), throw.c (scm_throw): Docstring format
12205 fixes.
12206
dd2a6f3a
MG
122072001-05-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12208
12209 * strop.c (scm_string_split): New procedure.
12210
12211 * strop.h (scm_string_split): Added prototype.
12212
00120130
GH
122132001-05-04 Gary Houston <ghouston@arglist.com>
12214
12215 * socket.c: define uint32_t if netdb.h doesn't. thanks to
12216 Dale P. Smith.
12217
b65e6bfe
MV
122182001-05-02 Marius Vollmer <mvo@zagadka.ping.de>
12219
12220 * rw.c: Include "modules.h" and "strports.h".
12221
12222 * net_db.h (scm_gethost): Added prototype.
12223
12224 * deprecation.h, deprecation.c: New.
12225 * Makefile.am (libguile_la_SOURCES): Added "deprecation.c".
12226 (DOT_X_FILES): Added "deprecation.x".
12227 (modinclude_HEADERS): Added "deprecation.h".
12228
12229 * init.c: Include "deprecation.h".
12230 (scm_init_guile_1): Call scm_init_deprecation.
1c938eb8 12231
b65e6bfe
MV
122322001-05-01 Marius Vollmer <mvo@zagadka.ping.de>
12233
12234 * gh.h (gh_init_guile, gh_make_string, gh_string_length,
12235 gh_string_ref, gh_string_set_x, gh_substring, gh_string_append):
12236 New.
12237
b0e5fd8c
GH
122382001-04-29 Gary Houston <ghouston@arglist.com>
12239
12240 * rw.c: new file, implementing C part of module (ice-9 rw).
12241 (scm_read_string_x_partial): moved from ioext.c
12242 (scm_init_rw): new proc.
12243 * rw.h: new file.
12244 init.c: include rw.h and call scm_init_rw.
12245 Makefile.am: include rw.c and rw.h.
12246
0b2da99c
RB
122472001-04-28 Rob Browning <rlb@cs.utexas.edu>
12248
12249 * numbers.c: enabled local definition of SCM_FLOBUFLEN until we
12250 know what's supposed to happen to it.
12251
12252 * list.h (scm_list_star): deprecation expired - removed.
12253
12254 * numbers.h (scm_dblproc): deprecation expired - removed.
12255 (SCM_UNEGFIXABLE): deprecation expired - removed.
12256 (SCM_FLOBUFLEN): deprecation expired - removed.
12257 (SCM_INEXP): deprecation expired - removed.
12258 (SCM_CPLXP): deprecation expired - removed.
12259 (SCM_REAL): deprecation expired - removed.
12260 (SCM_IMAG): deprecation expired - removed.
12261 (SCM_REALPART): deprecation expired - removed.
12262 (scm_makdbl): deprecation expired - removed.
12263 (SCM_SINGP): deprecation expired - removed.
12264 (SCM_NUM2DBL): deprecation expired - removed.
12265 (SCM_NO_BIGDIG): deprecation expired - removed.
12266
12267 * tags.h (SCM_DOUBLE_CELLP): deprecation expired - removed.
12268 (scm_tc_dblr): deprecation expired - removed.
12269 (scm_tc_dblc): deprecation expired - removed.
12270 (scm_tc16_flo): deprecation expired - removed.
12271 (scm_tc_flo): deprecation expired - removed.
12272
12273 * tag.h (scm_tag): deprecation expired - removed.
12274
12275 * tag.c: (scm_tag): deprecation expired - removed.
12276
12277 * ioext.c: (scm_fseek): deprecation expired - removed.
12278
12279 * ioext.h (scm_fseek): deprecation expired - removed.
12280
12281 * gh_data.c (gh_int2scmb): deprecation expired - removed.
12282
12283 * gh.h (gh_int2scmb): deprecation expired - removed.
12284
e3334972
NJ
122852001-04-28 Neil Jerram <neil@ossau.uklinux.net>
12286
12287 * stacks.c (scm_make_stack): Fix typo in docstring.
12288
a0f979ac
RB
122892001-04-27 Rob Browning <rlb@cs.utexas.edu>
12290
12291 * error.c (scm_sysmissing): deprecation expired - removed.
12292
12293 * error.h (scm_sysmissing): deprecation expired - removed.
12294
12295 * gc.c
12296 (scm_init_gc): gc-thunk deprecation expired - removed.
12297 (scm_gc_vcell): deprecation expired - removed.
12298 (gc_async_thunk): scm_gc_vcell related code removed.
12299
12300 * vectors.h (SCM_NVECTORP): deprecation expired - removed.
12301
12302 * strings.h
12303 (SCM_NSTRINGP): deprecation expired - removed.
12304 (SCM_NRWSTRINGP): deprecation expired - removed.
12305
12306 * continuations.h (SCM_SETJMPBUF): deprecation expired - removed.
12307
12308 * chars.h
12309 (SCM_ICHRP): deprecation expired - removed.
12310 (SCM_ICHR): deprecation expired - removed.
12311 (SCM_MAKICHR): deprecation expired - removed.
12312
12313 * ports.h
12314 (SCM_INPORTP): deprecation expired - removed.
12315 (SCM_OUTPORTP): deprecation expired - removed.
12316
253081cf
MV
123172001-04-25 Marius Vollmer <mvo@zagadka.ping.de>
12318
12319 * modules.c (scm_module_type): New.
12320 (scm_post_boot_init_modules): Initialize from Scheme value.
12321 (the_module, scm_current_module, scm_init_modules): the_module is
12322 now a C only fluid.
12323 (scm_current_module): Export to Scheme.
12324 (scm_set_current_module): Do not call out to Scheme, do all the
12325 work in C. Export procedure to Scheme. Only accept modules, `#f'
12326 is no longer valid as the current module. Only set
12327 scm_top_level_lookup_closure_var and scm_system_transformer when
12328 they are not deprecated.
12329 (scm_module_transformer, scm_current_module_transformer): New.
12330
12331 * modules.h (scm_module_index_transformer, SCM_MODULE_TRANSFORMER,
12332 scm_current_module_transformer, scm_module_transformer): New.
1c938eb8 12333
253081cf
MV
12334 * gh_data.c: Removed FIXME comment about gh_lookup returning
12335 SCM_UNDEFINED. That's the right thing to do.
12336
12337 * eval.h, eval.c (scm_system_transformer): Deprecated by moving it
12338 into the conditionally compiled sections.
12339 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Use
12340 scm_current_module_transformer instead of scm_system_transformer.
12341 * init.c (start_stack): Move initialization of
12342 scm_system_transformer to the deprecated section.
1c938eb8 12343
1f7f9ed4
NJ
123442001-04-22 Neil Jerram <neil@ossau.uklinux.net>
12345
12346 * throw.c (scm_throw): Correct docstring.
12347
66c73b76
GH
123482001-04-22 Gary Houston <ghouston@arglist.com>
12349
eefae538
GH
12350 * socket.c: attempted to improve the docstrings slightly.
12351
66c73b76
GH
12352 * net_db.c: remove bogus "close" declaration.
12353 (inet_aton declaration, scm_inet_aton, scm_inet_ntoa,
12354 scm_inet_netof, scm_lnaof, scm_inet_makeaddr, INADDR_ANY etc.):
12355 moved to socket.c.
12356 * net_db.h: declarations moved too.
12357
12358 * socket.c (scm_htonl, scm_ntohl): use uint32_t instead of unsigned
12359 long.
12360 (ipv6_net_to_num, ipv6_num_to_net): new static procedures.
12361 (VALIDATE_INET6): new macro.
12362 (scm_inet_pton, scm_inet_ntop): new procedures, implementing
12363 inet-pton and inet-ntop.
12364 (scm_fill_sockaddr): use VALIDATE_INET6 and ipv6_num_to_net.
12365 (scm_addr_vector): use ipv6_net_to_num.
1c938eb8 12366
7a7f7c53
DH
123672001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
12368
12369 * eq.c (scm_equal_p), ramap.c (scm_init_ramap): Don't compute the
12370 smob number explicitly. Use SCM_TC2SMOBNUM instead.
12371
12372 * gc.c (MARK, scm_gc_sweep): Only check for illegal heap objects
12373 when compiled in debug mode.
12374
12375 (scm_gc_sweep): Only call smob's free function if it is defined.
12376
12377 * print.c (scm_iprin1): No need to check for validity of smob
12378 type or existence of print function.
12379
12380 * smob.[ch] (scm_smobs): Made into a fixed size global array.
12381 Resizing will not work well with preemptive threading.
12382
12383 * smob.c (scm_smob_print): Don't use SCM_CDR to access smob data.
12384
12385 (scm_make_smob_type): Extracted initialization of smob
12386 descriptors to scm_smob_prehistory. Don't use scm_numsmob outside
12387 of the critical section.
12388
12389 (scm_smob_prehistory): Initialize all smob descriptors. By
12390 default, don't assign a smob free function: Most smob types don't
12391 need one.
12392
12393 * smob.h (SMOBH, SCM_SMOB_H): Renamed SMOBH to SCM_SMOB_H.
12394
e1368a8d
GH
123952001-04-21 Gary Houston <ghouston@arglist.com>
12396
12397 * socket.c (FLIP_NET_HOST_128): new macro.
12398 (scm_fill_sockaddr): use new macro.
12399 (scm_addr_vector): completed IPv6 address support. added const
12400 to the address parameter.
12401
5a525b84
GH
124022001-04-20 Gary Houston <ghouston@arglist.com>
12403
12404 * socket.c (scm_fill_sockaddr): call htons for sin6_port.
12405 Don't assign sin6_scope_id in structure unless HAVE_SIN6_SCOPE_ID
12406 is defined.
12407 (scm_addr_vector): use a switch instead of multiple if statements.
12408 Add support for IPv6 (incomplete) .
e1368a8d 12409 MAX_ADDR_SIZE: increase to size of struct sockaddr_in6 if needed.
5a525b84 12410
1a551638
DH
124112001-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
12412
12413 * struct.c (scm_free_structs): Only pairs may be accessed with
12414 SCM_C[AD]R.
12415
c07b3fef
MD
124162001-04-19 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12417
a9d861e3
MD
12418 * unif.h (SCM_ARRAY_CONTIGUOUS): Reintroduced as deprecated.
12419
c07b3fef
MD
12420 * __scm.h (SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
12421 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Inserted required
12422 parentheses in order to get the correct associativity.
12423
af7546eb
DH
124242001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12425
12426 * unif.c (scm_array_to_list): Added missing handling of arrays of
12427 bytes. Thanks to Masao Uebayashi for the bug report.
12428
4daecfee
DH
124292001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12430
12431 * debug.c (scm_procedure_source): Use SCM_CLOSURE_FORMALS more
12432 consistently.
12433
726d810a
DH
124342001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12435
12436 * procs.h (SCM_CLOSURE_FORMALS): New macro.
12437
12438 * debug.c (scm_procedure_source), eval.c (scm_badformalsp,
12439 SCM_CEVAL, SCM_APPLY), goops.c (get_slot_value, set_slot_value),
1c938eb8 12440 procprop.c (scm_i_procedure_arity), sort.c (closureless): Use
726d810a
DH
12441 SCM_CLOSURE_FORMALS.
12442
12443 * eval.c (scm_badformalsp, SCM_CEVAL), procprop.c
12444 (scm_i_procedure_arity): Prefer stronger predicates like
12445 SCM_NULLP or SCM_FALSEP over SCM_IMP.
12446
12447 * macros.c (macro_print): Extracted macro printing code from
12448 print.c and simplified it.
12449
12450 (scm_macro_type): Use SCM_MACRO_TYPE;
12451
12452 (scm_init_macros): Use macro_print for printing macros.
12453
12454 * print.c (scm_print_opts): Improved option documentation.
12455
12456 (scm_iprin1): Extracted printing of macros to macros.c.
12457 Simplified printing of ordinary closures.
12458
12459 * procs.c (scm_thunk_p): Fixed handling of closures. Thanks to
12460 Martin Grabmueller for the bug report.
12461
e038c042
DH
124622001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12463
12464 This patch eliminates some further applications of SCM_C[AD]R to
12465 non pair cells.
12466
12467 * gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR): Deprecated. These have
12468 never been applied to real pairs.
12469
12470 * srcprop.h (SCM_SOURCE_PROPERTY_FLAG_BREAK): Added.
12471
12472 (SRCPROPBRK): Use SCM_SOURCE_PROPERTY_FLAG_BREAK.
12473
12474 * unif.h (SCM_ARRAY_CONTIGUOUS, SCM_ARRAY_FLAG_CONTIGUOUS,
12475 SCM_ARRAY_CONTP): Renamed SCM_ARRAY_CONTIGUOUS to
12476 SCM_ARRAY_FLAG_CONTIGUOUS and use it.
12477
12478 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
12479 Added.
12480
12481 * srcprop.h (SRCPROPH), unif.h (UNIFH): Renamed to
12482 SCM_SOURCE_PROPERTIES_H and SCM_UNIFORM_VECTORS_H, respectively.
12483
12484 * srcprop.h (SETSRCPROPBRK, CLEARSRCPROPBRK), unif.c
12485 (scm_dimensions_to_uniform_array, scm_ra_set_contp): Don't use
12486 SCM_SET{AND,OR}_CAR.
12487
3453619b
GH
124882001-04-17 Gary Houston <ghouston@arglist.com>
12489
12490 * some initial support for IPv6:
1c938eb8 12491
3453619b
GH
12492 * socket.c (scm_fill_sockaddr): improve the argument validation.
12493 don't allocate memory until all args are checked. instead of
12494 unconditional memset of soka, try setting sin_len to 0 if
12495 SIN_LEN is defined. add support for AF_INET6. define FUNC_NAME.
12496 (scm_socket, scm_connect): extend docstrings for IPv6.
12497 (scm_init_socket): intern AF_INET6 and PF_INET6.
12498
216eedfc
DH
124992001-04-17 Niibe Yutaka <gniibe@m17n.org>
12500
12501 * srcprop.c (scm_make_srcprops): Added SCM_ALLOW_INTS which
12502 matches SCM_DEFER_INTS at the beginning of the function.
12503
12504 * mallocs.c (scm_malloc_obj): Remove un-matched SCM_ALLOW_INTS.
12505
12506 * gc.c (scm_igc): Unconditionally call
12507 SCM_CRITICAL_SECTION_START/END.
12508
12509 * fluids.c (next_fluid_num): Unconditionally call
12510 SCM_CRITICAL_SECTION_START/END.
12511 (s_scm_make_fluid): Remove un-matched SCM_DEFER_INTS.
12512
12513 * coop-defs.h (SCM_THREAD_DEFER, SCM_THREAD_ALLOW,
12514 SCM_THREAD_REDEFER, SCM_THREAD_REALLOW_1, SCM_THREAD_REALLOW_2):
12515 Removed.
12516
12517 * __scm.h (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END):
12518 Defined as nothing for the case of !defined(USE_THREADS).
12519 (SCM_THREAD_DEFER, SCM_THREAD_ALLOW, SCM_THREAD_REDEFER):
12520 Removed.
12521 (<stdio.h>): Include when (SCM_DEBUG_INTERRUPTS == 1).
12522 (SCM_CHECK_NOT_DISABLED, SCM_CHECK_NOT_ENABLED): Print FILE and
12523 LINE.
12524 (SCM_DEFER_INTS, SCM_ALLOW_INTS_ONLY, SCM_ALLOW_INTS,
12525 SCM_REDEFER_INTS, SCM_REALLOW_INTS): Don't use
12526 SCM_THREAD_DEFER/SCM_THREAD_ALLOW. Instead, use
12527 SCM_CRITICAL_SECTION_START/END.
12528 (SCM_REALLOW_INTS: Bug fix. Don't call
12529 SCM_THREAD_SWITCHING_CODE.
12530 (SCM_TICK): Don't use SCM_DEFER_INTS/SCM_ALLOW_INTS. Instead, use
12531 SCM_THREAD_SWITCHING_CODE directly.
12532 (SCM_ENTER_A_SECTION): Unconditionally use
12533 SCM_CRITICAL_SECTION_START/END. (was:
12534 SCM_DEFER_INTS/SCM_ALLOW_INTS when SCM_POSIX_THREADS defined).
12535
125362001-04-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12537
12538 * __scm.h (SCM_CAREFUL_INTS, SCM_DEBUG_INTERRUPTS): Replaced the
12539 macro SCM_CAREFUL_INTS by the macro SCM_DEBUG_INTERRUPTS and
12540 allowed to explicitly set this macro via the CFLAGS variable
12541 during make.
12542
12543 * fluids.c (next_fluid_num), gc.c (scm_igc), coop-defs.h
12544 (SCM_THREAD_CRITICAL_SECTION_START,
12545 SCM_THREAD_CRITICAL_SECTION_END): Renamed
12546 SCM_THREAD_CRITICAL_SECTION_START/END to
12547 SCM_CRITICAL_SECTION_START/END.
12548
f22ed5a0
KN
125492001-04-11 Keisuke Nishida <kxn30@po.cwru.edu>
12550
12551 * debug-malloc.c (grow, scm_debug_malloc_prehistory): Use memset
12552 instead of bzero.
1c938eb8 12553
f22ed5a0 12554 * coop.c, iselect.c (FD_ZERO_N): Unconditionally use memset.
1c938eb8 12555 (MISSING_BZERO_DECL): Remove the declaration.
f22ed5a0
KN
12556
12557 Thanks to NIIBE Yutaka.
12558
508ded1c
MD
125592001-04-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12560
a087ba81
MD
12561 * init.c, goops.c, goops.h: Reverted change of 2001-03-29. (The
12562 goops module should be registered in order to work for an
12563 application which uses libguile statically linked.)
508ded1c 12564
e4b265d8
DH
125652001-04-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
12566
12567 * numbers.[ch] (scm_num2long, scm_num2long_long,
12568 scm_num2ulong_long, scm_num2ulong): Argument position is an
12569 unsigned integer.
12570
12571 * environments.c (eval_environment_folder,
12572 import_environment_folder), gh_data.c (gh_scm2longs,
12573 gh_scm2floats, gh_scm2doubles): Distinguish between 0 and NULL
12574 for integers and pointers, respectively.
12575
12576 * gh_data.c (gh_scm2ulong, gh_scm2long, gh_scm2int), socket.c
12577 (scm_fill_sockaddr), unif.c (scm_array_set_x), validate.h
12578 (SCM_NUM2ULONG, SCM_NUM2LONG, SCM_NUM2LONG_DEF,
12579 SCM_NUM2LONG_LONG): Don't pass argument positions as pointers.
12580
12581 * filesys.c (scm_open_fdes, scm_open), net_db (scm_inet_ntoa,
12582 scm_inet_netof, scm_lnaof, scm_gethost, scm_getproto), posix.c
12583 (scm_utime), ramap.c (scm_array_fill_int), scmsigs.c
12584 (scm_sigaction), socket.c (scm_htonl, scm_ntohl, scm_sendto),
12585 stime.c (scm_localtime, scm_gmtime), struct.c (scm_struct_set_x),
12586 validate.h (SCM_VALIDATE_LONG_COPY): Whitespace fixes.
12587
89d04205
NJ
125882001-04-09 Neil Jerram <neil@ossau.uklinux.net>
12589
12590 * strings.c (scm_read_only_string_p): Update docstring to reflect
12591 current (non-)usage of "read only" strings.
40f83c3e
NJ
12592 (scm_make_shared_substring): Clarify docstring by changing
12593 "semantics" to "arguments".
89d04205 12594
4d66be54
MG
125952001-04-06 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12596
12597 * hooks.c (scm_make_hook, scm_make_hook_with_name),
12598 (scm_hook_p, scm_hook_empty_p, scm_run_hook): Docstring
12599 improvements.
12600
1e6808ea
MG
126012001-04-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12602
12603 The following changes make the documentation more consistent.
1c938eb8 12604
1e6808ea
MG
12605 * rdelim.c (scm_write_line), posix.c (scm_utime), ports.c
12606 (scm_seek), net_db.c (scm_inet_aton, scm_inet_ntoa),
12607 (scm_inet_netof, scm_lnaof, scm_inet_makeaddr), ioext.c
12608 (scm_ftell): Changed @smalllisp ... @end smalllisp to @lisp
12609 ... @end lisp.
12610
12611 * vports.c (scm_make_soft_port), version.c (scm_version), unif.c
12612 (scm_array_dimensions, scm_make_shared_array),
12613 (scm_transpose_array, scm_enclose_array, scm_bit_count_star),
12614 throw.c (scm_catch), struct.c (scm_make_vtable_vtable), strop.c
12615 (scm_string_rindex, scm_string_index, scm_substring_fill_x),
12616 (scm_string_null_p), strings.c (scm_read_only_string_p), root.c
12617 (scm_call_with_dynamic_root), ramap.c (scm_array_index_map_x),
12618 posix.c (scm_mknod), numbers.c (scm_logtest, scm_logbit_p),
12619 macros.c (scm_makmmacro), list.c (scm_append), environments.c
12620 (scm_environment_fold), dynwind.c (s_scm_dynamic_wind): Changed
12621 @example ... @end example to @lisp ... @end lisp.
12622
12623 * weaks.c (scm_weak_vector): Corrected docstring.
12624
12625 * hashtab.c (scm_hashq_ref, scm_hashq_set_x, scm_hashq_remove_x),
12626 (scm_hashv_ref, scm_hashv_set_x, scm_hashv_remove_x),
12627 (scm_hash_ref, scm_hash_set_x, scm_hash_remove_x, scm_hashx_ref),
12628 (scm_hashx_set_x, scm_hashx_get_handle),
12629 (scm_hashx_create_handle_x), regex-posix.c (scm_make_regexp),
12630 (scm_regexp_exec, scm_regexp_p), numbers.c (scm_logtest),
12631 vectors.c (scm_vector_fill_x), strings.c
12632 (scm_make_shared_substring), symbols.c (scm_string_to_symbol),
12633 objprop.c (scm_set_object_properties_x):
12634 (scm_set_object_property_x), throw.c (scm_catch, scm_lazy_catch),
12635 strports.c (scm_call_with_input_string), ports.c
12636 (scm_truncate_file), ioext.c (scm_ftell), ports.c (scm_seek),
12637 list.c (scm_append_x), dynwind.c (scm_dynamic_wind), error.c
12638 (scm_error_scm), vports.c (scm_make_soft_port), weaks.c
12639 (scm_make_weak_vector,scm_weak_vector_p),
12640 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table),
12641 (scm_make_doubly_weak_hash_table, scm_weak_key_hash_table_p),
12642 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
12643 macros.c (scm_macro_type), dynl.c (scm_dynamic_link),
12644 (scm_dynamic_unlink, scm_dynamic_call, scm_dynamic_args_call):
12645 Made parameter names match documentation by renaming parameters
12646 and/or fixing docstrings.
1c938eb8 12647
1e6808ea
MG
12648 * numbers.c (scm_ash): Corrected Texinfo markup.
12649
12650 * strop.c (scm_string_index, scm_string_rindex),
12651 (scm_substring_fill_x, scm_string_null_p): Removed `qdocs'.
12652
12653 * vports.c (scm_make_soft_port), unif.c
12654 (scm_uniform_vector_length, scm_array_p, scm_array_rank),
12655 (scm_dimensions_to_uniform_array, scm_transpose_array),
12656 (scm_array_in_bounds_p, scm_uniform_vector_ref),
12657 (scm_bit_count, scm_bit_position, scm_bit_count_star),
12658 (scm_array_to_list, scm_list_to_uniform_array),
12659 (scm_array_prototype, symbols.c (scm_string_to_symbol), strports.c
12660 (scm_open_input_string, scm_open_output_string),
12661 (scm_get_output_string), strop.c (scm_string_copy),
12662 (scm_string_fill_x), strings.c (scm_string_p, scm_string), stime.c
12663 (scm_get_internal_real_time, scm_times),
12664 (scm_get_internal_run_time, scm_current_time, scm_gettimeofday),
12665 (scm_localtime, scm_gmtime), socket.c (scm_htons, scm_ntohs),
12666 (scm_htonl, scm_ntohl, scm_socket, scm_socketpair),
12667 (scm_getsockopt, scm_getsockname, scm_getpeername, scm_recvfrom),
12668 simpos.c (scm_system), random.c (scm_random_uniform),
12669 (scm_random_normal, scm_random_exp), ramap.c
12670 (scm_array_equal_p), posix.c (scm_pipe, scm_getgroups),
12671 (scm_status_exit_val, scm_status_term_sig, scm_status_stop_sig),
12672 (scm_getppid, scm_getuid, scm_getgid, scm_geteuid, scm_getegid),
12673 (scm_getpgrp, scm_ttyname, scm_ctermid, scm_tcgetpgrp, scm_uname),
12674 (scm_environ, scm_tmpnam, scm_mkstemp, scm_access, scm_getpid),
12675 (scm_setlocale), ports.c (scm_char_ready_p, scm_drain_input),
12676 (scm_pt_size, scm_pt_member, scm_port_revealed, scm_port_mode),
12677 (scm_close_port, scm_input_port_p, scm_output_port_p, scm_port_p),
12678 (scm_port_closed_p, scm_eof_object_p, scm_read_char),
12679 (scm_peek_char), pairs.c (scm_pair_p, scm_cons), numbers.c
12680 (scm_logand, scm_logior, scm_logxor, scm_lognot),
12681 (scm_integer_expt, scm_bit_extract, scm_logcount),
12682 (scm_integer_length, scm_string_to_number, scm_inexact_to_exact),
12683 net_db.c (scm_inet_netof, scm_lnaof), modules.c
12684 (scm_interaction_environment), macros.c (scm_makacro),
12685 (scm_makmacro, scm_makmmacro), keywords.c (scm_keyword_p), ioext.c
12686 (scm_ftell, scm_dup_to_fdes, scm_fileno, scm_isatty_p),
12687 (scm_fdopen, scm_fdes_to_ports), gc.c (scm_gc_stats), fluids.c
12688 (scm_fluid_ref), filesys.c (scm_open_fdes),
12689 (scm_stat, scm_directory_stream_p, scm_getcwd, scm_readlink):
12690 Docstring correction: `Returns' -> `Return'
12691
1c938eb8
TTN
12692 * gc.c (scm_set_debug_cell_accesses_x):
12693 (s_scm_gc_set_debug_check_freelist_x):
1e6808ea
MG
12694 * fluids.c (scm_fluid_p): Added texinfo markup.
12695
12696 * error.c (scm_strerror): Made docstring more precise.
12697
12698 * vectors.c (scm_vector_p, scm_vector, scm_make_vector),
12699 (scm_vector_to_list, _scm_vector_fill_x), symbols.c
12700 (scm_symbol_p, scm_symbol_to_string), strorder.c
12701 (scm_string_equal_p, scm_string_ci_equal_p, scm_string_less_p),
12702 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p),
12703 (scm_string_ci_less_p, scm_string_ci_leq_p, scm_string_ci_gr_p):
12704 (scm_string_ci_geq_p), strop.c (scm_string_copy),
12705 (scm_string_fill_x): Removed `(r5rs)' from docstrings.
12706
9a6976cd
DH
127072001-04-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
12708
12709 * gc.c (MARK): Re-introduce a cheap sanity test for non debug
12710 mode, as suggested by Michael Livshin.
12711
463b2219
ML
127122001-03-31 Michael Livshin <mlivshin@bigfoot.com>
12713
12714 * backtrace.c (display_backtrace_body): since the `print_state'
12715 variable is not used (instead its data field is used directly as
12716 `pstate'), protect it from the hungry compiler optimizations.
12717 thanks to Bill Schottstaedt for the report.
12718
61045190
DH
127192001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
12720
12721 * gc.[ch] (scm_tc16_allocated): New type tag for allocated cells.
12722 It is only defined and used if guile is compiled with
12723 SCM_DEBUG_CELL_ACCESSES set to true. It's purpose is, to never
12724 let cells with a free_cell type tag be visible outside of the
12725 garbage collector when in debug mode.
12726
12727 * gc.c (scm_debug_cell_accesses_p): Set to true as default.
12728
12729 (scm_assert_cell_valid): Use a local static variable to avoid
12730 recursion.
12731
12732 (MARK): Only check for rogue cell pointers in debug mode. Use
12733 scm_cellp for this purpose and place all checks for rogue pointers
12734 into that function. Further, since due to conservative scanning
12735 we may encounter free cells during marking, don't use the standard
12736 cell type accessor macro to determine the cell type.
12737
12738 (scm_cellp): Check if the cell pointer actually points into a
12739 card header.
12740
12741 (scm_init_gc): Initalize scm_tc16_allocated.
12742
12743 * gc.h (GCH): Renamed to SCM_GC_H.
12744
12745 (SCM_VALIDATE_CELL): Enclose the expression in brackets. This
12746 might be unnecessary, but I feel better this way :-)
12747
12748 (SCM_GC_CELL_TYPE): New macro.
12749
12750 (SCM_SETAND_CDR, SCM_SETOR_CDR): Deprecated. These are not used
12751 in guile, and it is unlikely that they will be applied to real
12752 pairs anyway.
12753
12754 (SCM_SET_FREE_CELL_TYPE): Removed. It was not used.
12755
12756 (SCM_GC_SET_ALLOCATED): New macro. Only non-empty if guile is
12757 compiled with SCM_DEBUG_CELL_ACCESSES set to true.
12758
12759 (SCM_NEWCELL, SCM_NEWCELL2): Use of SCM_GC_SET_ALLOCATED will
12760 make sure that in debug mode no free cell will ever be visible
12761 outside of the garbage collector.
12762
85d6df6a
DH
127632001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
12764
12765 * async.c (scm_asyncs_pending): Don't use != to compare SCM
12766 values.
12767
12768 * async.c (scm_system_async), variable.c (scm_make_variable,
12769 scm_make_undefined_variable): Use scm_cons to create a pair.
12770
12771 * debug.c (scm_reverse_lookup): Perform proper type checking.
12772 Remove suspicious use of SCM_SLOPPY_CONSP.
12773
12774 * eq.c (scm_equal_p), tags.h (SCM_ECONSP): Use SCM_CONSP instead
12775 of SCM_SLOPPY_CONSP. A sane compiler should be able to perform
12776 the corresponding optimization.
12777
12778 * eval.c (iqq): Use proper type check.
12779
12780 (scm_m_expand_body): Remove redundant type checks.
12781
12782 (promise_print): Don't access promise cells as pairs.
12783
12784 * eval.c (EVALCAR, iqq, scm_m_expand_body, scm_eval_args,
12785 scm_deval_args SCM_CEVAL), guardians.c (scm_guard), hashtab.c
12786 (scm_internal_hash_fold), print.c (scm_iprlist): Use !SCM_CELLP
12787 for SCM_NCELLP, !SCM_CONSP for SCM_NCONSP, !SCM_IMP for SCM_NIMP,
12788 !SCM_FALSEP for SCM_NFALSEP, !SCM_NULLP for SCM_NNULLP
12789
12790 * eval.c (scm_m_define, scm_macroexp, SCM_CEVAL), print.c
12791 (scm_iprin1): Use new macro predicate and accessors.
12792
12793 * eval.h (scm_tc16_macro): Removed declaration. It is declared
12794 in macros.h.
12795
12796 * eval.h (EVALH), macros.h (MACROSH), ports.h (PORTSH), procs.h
12797 (PROCSH), tags.h (TAGSH), variable.h (VARIABLEH): Renamed to
12798 SCM_EVAL_H, SCM_MACROS_H, SCM_PORTS_H, SCM_PROCS_H, SCM_TAGS_H and
12799 SCM_VARIABLE_H. Even the macros that are used to inhibit
12800 including a header file twice should be in the SCM_ namespace.
12801
12802 * fluids.c (scm_swap_fluids, scm_swap_fluids_reverse),
12803 properties.c (scm_primitive_property_ref,
12804 scm_primitive_property_del_x): Prefer stronger predicates like
12805 SCM_NULLP or SCM_FALSEP over SCM_IMP.
12806
12807 * gc.c (MARK): Use proper macros to access procedure-with-setter
12808 cell elements and closure cell elements.
12809
12810 (gc_sweep_freelist_finish, scm_gc_sweep, init_heap_seg): Don't
12811 access free cells as pairs.
12812
12813 (scm_unprotect_object): scm_hashq_get_handle returns #f if
12814 no hashtab entry is found.
12815
12816 * gc.c (scm_gc_sweep), ports.c (scm_close_port): Use new macro
12817 SCM_CLR_PORT_OPEN_FLAG.
12818
12819 * guardians.c (TCONC_IN), print.c (scm_free_print_state): Don't
12820 use SCM_SET_C[AD]R for uninitialized cells.
12821
12822 * hashtab.c (scm_hash_fn_get_handle): Use SCM_VALIDATE_VECTOR.
12823 If the hashtable has no slots, return #f instead of '(). This
12824 unifies the return value with most assoc-functions.
12825
12826 (scm_hash_fn_ref): Use proper type check.
12827
12828 (scm_hashq_get_handle, scm_hashv_get_handle, scm_hash_get_handle):
12829 Removed references to non-existing functions from documentation.
12830
12831 * keywords.c (scm_keyword_dash_symbol): Use proper macros to
12832 access keyword cell elements.
12833
12834 * macros.h (SCM_MACROP, SCM_MACRO_TYPE, SCM_MACRO_CODE): New
12835 macros.
12836
12837 * ports.h (SCM_CLR_PORT_OPEN_FLAG): New macro.
12838
12839 * print.c (scm_iprlist): Added comment. Improved loop
12840 conditions.
12841
12842 * procs.h (SCM_ENV, SCM_SETENV): Don't access closure cells as
12843 pairs.
12844
12845 * smob.c (scm_markcdr): Don't access smob cells as pairs.
12846
12847 * tags.h (SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP): Deprecated.
12848
12849 * throw.c (ACTIVATEJB, DEACTIVATEJB): Don't access jump buffer
12850 cells as pairs.
12851
12852 * variable.c (variable_print, variable_equalp, scm_variable_ref,
12853 scm_variable_set_x): Use proper macros to access variable cell
12854 elements.
12855
12856 (scm_variable_bound_p): Don't use SCM_NEGATE_BOOL.
12857
12858 * variable.h (SCM_VARVCELL): Don't access variable cells as
12859 pairs.
12860
12861 * vectors.c (scm_vector), weaks.c (scm_weak_vector): Simplified,
12862 added FIXME comment, removed register specifier.
12863
1b27e91a
KN
128642001-03-29 Keisuke Nishida <kxn30@po.cwru.edu>
12865
12866 * goops.c, goops.h (scm_init_oop_goops_goopscore_module): Deprecated.
12867 * init.c (scm_init_guile_1): Don't init goopscore module.
12868
16c634ec
MV
128692001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
12870
12871 * eval.c (SCM_APPLY): Check that arg1 is bound for scm_tc7_cxr.
12872
91344ceb
MG
128732001-03-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12874
12875 * strop.c (scm_string_to_list): Fixed docstring markup.
12876 (scm_string_upcase_x, scm_string_upcase, scm_string_downcase_x),
12877 (scm_string_downcase, scm_string_capitalize_x),
12878 (scm_string_capitalize): Rewrote and corrected docstrings.
12879 (scm_string_ci_to_symbol): Made docstring more explicit.
12880
07576812
MV
128812001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
12882
12883 * values.h (scm_values_vtable, SCM_VALUESP): Moved here so that
12884 eval.c can use it.
12885 (scm_call_with_values): Removed.
12886 * values.c (values_vtable, scm_values_vtable): Added "scm_" prefix
12887 so that it can be exported.
12888 (scm_call_with_values): Removed.
1c938eb8 12889
07576812
MV
12890 * tags.h (SCM_IM_CALL_WITH_VALUES): New isym.
12891 * eval.c: Include "libguile/values.h"
12892 (scm_m_at_call_with_values, scm_sym_at_call_with_values):
12893 New.
12894 (unmemocopy, scm_ceval, scm_deval): Handle new isym.
12895 * eval.h (scm_sym_at_call_with_values, scm_m_at_call_with_values):
12896 New delcarations to support above change.
12897
12898 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Fix syntax
12899 errors with last change.
1c938eb8 12900
07576812
MV
129012001-03-25 Marius Vollmer <mvo@zagadka.ping.de>
12902
12903 * eval.c (scm_primitive_eval_x, scm_primitive_eval, scm_i_eval_x,
12904 scm_i_eval): Moved the application of the system transformer from
12905 scm_i_eval to scm_primitive_eval.
12906
a17bb5fd
NJ
129072001-03-23 Neil Jerram <neil@ossau.uklinux.net>
12908
a6be01a4
NJ
12909 * guile-snarf.awk.in: Substitute "\\" with "\" in .doc output.
12910
a17bb5fd
NJ
12911 * strop.c (scm_string_index): Fix docstring line break
12912 regression.
12913
12914 * list.c (scm_cons_star): Fix docstring typo.
12915
be54b15d
DH
129162001-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
12917
12918 * gc.c (scm_init_storage), gdbint.c (scm_init_gdbint), numbers.c
12919 (big2str), ports.c (scm_drain_input), read.c (scm_read,
12920 scm_grow_tok_buf), strings.c (scm_string, scm_makfromstr,
12921 scm_make_string, scm_string_append), strports.c (st_resize_port,
12922 scm_object_to_string), unif.c (scm_make_uve): Replace calls to
12923 scm_makstr with calls to scm_allocate_string.
12924
12925 * strings.[ch] (scm_allocate_string): New function.
12926
12927 * strings.[ch] (scm_makstr): Deprecated.
12928
789ecc05
GH
129292001-03-18 Gary Houston <ghouston@arglist.com>
12930
6d163216
GH
12931 * posix.c (scm_tmpnam): check that return value from tmpnam is not
12932 NULL. rewrote the docstring.
12933 (scm_mkstemp): new procedure implementing "mkstemp!".
12934 * posix.h: declare scm_mkstemp.
12935
789ecc05
GH
12936 * net_db.c: declare h_errno if configure didn't define HAVE_H_ERRNO.
12937 normally it would be found in netdb.h.
12938
c6c79933
GH
129392001-03-17 Gary Houston <ghouston@arglist.com>
12940
e9e225e5
GH
12941 * sort.c (scm_sort): move sortvec variable to avoid a compiler
12942 warning when HAVE_ARRAYS is not defined. move len too.
12943
12944 * Makefile.am (DOT_X_FILES): remove net_db.x, posix.x, socket.x.
12945 (EXTRA_DOT_X_FILES): let configure set the value.
12946 (DOT_DOC_FILES): remove net_db.doc, posix.doc, socket.doc.
12947
c6c79933
GH
12948 * gc.c (scm_must_malloc): changed the comment explaining when
12949 scm_must variants of malloc/free etc., should be used, based on
12950 explanation from Dirk Herrmann.
12951 * fports.c (scm_fport_buffer_add): use FUNC_NAME instead of a local
12952 string with procedure name. use scm_must_malloc instead of malloc.
12953 (scm_setvbuf, scm_fdes_to_port, fport_close): use scm_must variants
12954 of malloc/free.
12955 * ports.c (scm_add_to_port_table, scm_remove_from_port_table,
12956 scm_ungetc): use scm_must variants of malloc/realloc/free.
12957 (scm_add_to_port_table, scm_ungetc): define FUNC_NAME.
12958
b3fcac34
DH
129592001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12960
12961 * __scm.h (SCM_ASSERT, SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
12962 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Don't call scm_wta, call
12963 scm_wrong_type_arg instead.
12964
12965 (SCM_WNA): Deprecated.
12966
12967 * error.[ch] (scm_wta): Deprecated.
12968
12969 * numbers.c (s_i_log): Minor comment fix.
12970
12971 * read.c (scm_lreadr), unif.c (scm_aind, scm_shap2ra,
12972 scm_make_shared_array, scm_transpose_array, scm_enclose_array,
12973 scm_array_in_bounds_p): Don't use SCM_ASSERT to check for
12974 wrong-num-args or misc errors.
12975
12976 * unif.c (scm_make_shared_array, scm_transpose_array,
12977 scm_enclose_array, scm_array_in_bounds_p, scm_array_set_x):
12978 Validate the rest argument (note: this is only done when guile is
12979 built with SCM_DEBUG_REST_ARGUMENT=1)
12980
12981 (scm_array_in_bounds_p, scm_uniform_vector_ref, scm_array_set_x):
12982 Replace calls to scm_wrong_num_args by SCM_WRONG_NUM_ARGS.
12983
12984 * validate.h (SCM_FUNC_NAME, SCM_VALIDATE_NUMBER_COPY,
12985 SCM_VALIDATE_NUMBER_DEF_COPY): Deprecated.
12986
68baa7e7
DH
129872001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12988
12989 * validate.h (SCM_WRONG_NUM_ARGS): Call scm_error_num_args_subr
12990 instead of scm_wrong_num_args.
12991
12992 * coop-threads.c: Don't include libguile/strings.h. (Was only
12993 needed for former implementation of SCM_WRONG_NUM_ARGS.)
12994
12995 * debug.c (scm_m_start_stack): Don't use SCM_ASSERT to check for
12996 wrong-num-args errors.
12997
9f40cd87
DH
129982001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12999
13000 * error.[ch] (scm_error_num_args_subr): New function.
13001
5352393c
MG
130022001-03-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13003
13004 * list.c (scm_list, scm_cons_star, scm_null_p, scm_list_p),
13005 (scm_length, scm_append, scm_reverse, scm_list_ref),
13006 (scm_memq, scm_memv, scm_member, scm_delv_x, scm_delete_x),
13007 (scm_delq, scm_delv, scm_delete, scm_delq1_x, scm_delv1_x),
13008 (scm_delete1_x), gc.c (scm_map_free_list),
13009 (scm_free_list_length), hash.c (scm_hashq, scm_hashv),
13010 (scm_hash), hashtab.c (scm_hashq_ref, scm_hashq_set_x),
13011 (scm_hashq_remove_x, scm_hashv_ref, scm_hashv_set_x),
13012 (scm_hashv_remove_x, scm_hash_ref, scm_hash_set_x),
13013 (scm_hash_remove_x), ports.c (scm_pt_size, scm_pt_member), print.c
13014 (scm_current_pstate), scmsigs.c (scm_usleep), goops.c
13015 (scm_get_keyword, scm_sys_compute_slots): Added texinfo markup.
13016
13017 * weaks.c (scm_weak_vector_p, scm_weak_key_hash_table_p),
13018 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
13019 rdelim.c (scm_read_delimited_x), strop.c (scm_string_index),
13020 symbols.c (scm_symbol_interned_p), numbers.c
13021 (scm_string_to_number), ports.c (scm_port_p): Corrected texinfo
13022 markup.
13023
a9205f07
KN
130242001-03-16 Keisuke Nishida <kxn30@po.cwru.edu>
13025
13026 * snarf.h (SCM_CONST_LONG): Deprecated.
13027 * tag.c (CONST_INUM): New macro. Use it to define scm_utag_*.
13028
6d583887
MV
130292001-03-15 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13030
13031 * numbers.c (scm_num2ulong): Check that a bignum is positive
13032 before looking at the magnitude. Correctly check for overflow
13033 during conversion.
13034 (scm_num2long_long): Likewise.
13035 (scm_num2ulong_long): New.
13036 (ULONG_LONG_MAX): Define if not already defined.
13037 * numbers.h: (scm_num2ulong_long): New prototype.
1c938eb8 13038
e87a03fc
MG
130392001-03-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13040
13041 * validate.h (SCM_VALIDATE_OPOUTSTRPORT): New macro.
13042
13043 * strports.h (SCM_STRPORTP, SCM_OPSTRPORTP, SCM_OPINSTRPORTP),
13044 (SCM_OPOUTSTRPORTP): New predicate macros.
13045 (scm_open_input_string, scm_open_output_string),
13046 (scm_get_output_string): New prototypes.
1c938eb8 13047
e87a03fc
MG
13048 * strports.c (scm_open_input_string, scm_open_output_string),
13049 (scm_get_output_string): New procedures (SRFI-6 compliant).
13050 Made scm_tc16_strport non-static.
13051
160bb34a
DH
130522001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
13053
13054 * macros.h (SCM_ASSYNT): Removed unused object argument from
13055 signature.
13056
13057 * eval.c (scm_m_body, scm_m_quote, scm_m_begin, scm_m_if,
13058 scm_m_set_x, scm_m_and, scm_m_or, scm_m_case, scm_m_cond,
13059 scm_m_letstar, scm_m_do, scm_m_quasiquote, scm_m_delay,
13060 scm_m_define, scm_m_letrec1, scm_m_letrec, scm_m_let, scm_m_apply,
13061 scm_m_cont, scm_m_nil_cond, scm_m_nil_ify, scm_m_t_ify,
13062 scm_m_0_cond, scm_m_0_ify, scm_m_1_ify, scm_m_atfop, scm_m_atbind,
13063 scm_m_expand_body), evalext.c (scm_m_generalized_set_x,
13064 scm_m_undefine), goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
13065 scm_m_atdispatch): Removed unused object argument from call to
13066 SCM_ASSYNT.
13067
80dee77b
DH
130682001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
13069
13070 * gh.h/gh_data.c (gh_ints2scm): Changed the signature to use a
13071 const int* to reflect that the input array of integers remains
13072 unchanged. Thanks to Brett Viren for the hint.
13073
d3dd80ab
MG
130742001-03-14 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13075
13076 * gh_data.c (gh_scm2chars, gh_scm2shorts, gh_scm2longs),
13077 (gh_scm2floats, gh_scm2doubles): Check for malloc() returning NULL
13078 in various places.
13079 (gh_scm2newstr, gh_symbol2newstr): Change call to
13080 scm_must_malloc() to malloc(), because user-free()able memory is
13081 allocated.
13082
13083 * gc.c: Added declaration of `scm_debug_check_freelist'.
13084
26a3038d
MG
130852001-03-13 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13086
13087 * ports.c (scm_port_mode): Changed `mode' array size to 4.
13088
1f3908c4
KN
130892001-03-12 Keisuke Nishida <kxn30@po.cwru.edu>
13090
13091 * strports.c (scm_object_to_string): New procedure.
13092 (scm_strprint_obj): Deprecated.
13093 * strports.h: Reflect the changes.
13094
e11208ca
DH
130952001-03-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
13096
13097 * goops.h (SCM_VALIDATE_PUREGENERIC): New macro.
13098
13099 * goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
13100 scm_m_atdispatch): Provide definitions for FUNC_NAME. Don't use
13101 SCM_ASSYNT to check for correct argument types. Either use some
13102 SCM_VALIDATE_* macro or an explicit test.
13103
13104 (scm_make_foreign_object): Don't use SCM_ASSERT to check for
13105 misc-errors.
13106
13107 * macros.h (SCM_ASSYNT): On assertion failure, issue a misc-error
13108 instead of calling scm_wta.
13109
67e8151b
MG
131102001-03-12 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13111
13112 * load.c (scm_primitive_load, scm_primitive_load_path),
13113 (scm_sys_search_load_path): Corrected docstrings (file ->
13114 filename).
13115
13116 * eval.c (scm_force): Added texinfo markup to docstring.
13117 (scm_promise_p): Renamed parameter to `obj' to match docstring.
13118
13119 * debug-malloc.c: Reinserted #include <stdio.h>.
13120
e0c08f17
KN
131212001-03-11 Keisuke Nishida <kxn30@po.cwru.edu>
13122
e39c3de4
KN
13123 * list.c (s_scm_reverse_x): Use SCM_VALIDATE_LIST.
13124
e0c08f17
KN
13125 * environments.c, error.c, eval.c, filesys.c, hashtab.c, load.c,
13126 net_db.c, procprop.c, read.c, scmsigs.c, socket.c, struct.c:
13127 Use SCM_LISTn instead of scm_listify.
13128
e6e2e95a
MD
131292001-03-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13130
13131 * _scm.h: Removed #include <errno.h>.
13132
13133 * error.c, net_db.c, putenv.c, stime.c: Removed declaration of
13134 errno variable (can be a macro on some systems, for example when
13135 using linux libc with threads).
13136
13137 * error.c, filesys.c, gc.c, ioext.c, iselect.c, net_db.c, ports.c,
13138 posix.c, print.c, putenv.c, scmsigs.c, script.c, simpos.c, smob.c,
13139 socket.c, srcprop.c, stime.c, strop.c, unif.c, vports.c: Added
13140 #include <errno.h> in these 20 out of 100 files.
1c938eb8 13141
97d0e20b
GH
131422001-03-10 Gary Houston <ghouston@arglist.com>
13143
13144 * socket.c: add a definition of SUN_LEN (from glibc) for when it's
13145 not already defined.
13146
e75341b3
MD
131472001-03-09 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13148
13149 * coop.c: Inserted #include <stdio.h>.
13150
13151 * iselect.c: Reinserted #include <stdio.h>.
13152
74355186
MV
131532001-03-10 Marius Vollmer <mvo@zagadka.ping.de>
13154
13155 * posix.c: Replaced `#define' of __USE_XOPEN right before
13156 including unistd.h with a define of _GNU_SOURCE at the very top of
13157 the file.
13158
783e7774
KN
131592001-03-09 Keisuke Nishida <kxn30@po.cwru.edu>
13160
13161 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
13162 continuations.c, debug-malloc.c, debug.c, dynwind.c, eq.c, eval.c,
13163 feature.c, filesys.h, gc_os_dep.c, gh_data.c, gh_eval.c,
13164 gh_funcs.c, gh_io.c, gh_list.c, gh_predicates.c, hash.c,
13165 hashtab.c, iselect.c, keywords.c, list.c, load.c, mallocs.c,
13166 net_db.c, numbers.c, objprop.c, objprop.h, options.c, pairs.c,
13167 print.c, procprop.c, procs.c, properties.c, ramap.c,
13168 regex-posix.c, root.c, scmsigs.c, simpos.c, socket.c, srcprop.c,
13169 stackchk.c, stacks.c, strings.c, strop.c, strorder.c, struct.c,
13170 symbols.c, tag.c, threads.c, variable.c, vectors.c, weaks.c:
1c938eb8 13171 Remove #include <stdio.h>
783e7774
KN
13172 * gc.c, gdbint.c, root.c, sort.c, unif.c: Add #include <string.h>.
13173
13174 * procs.c (scm_make_subr_opt): Init symcell to avoid warning.
13175
9a677c37
MG
131762001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13177
13178 * posix.c (scm_gethostname): Set initial name length to 256 for
13179 Solaris.
13180
94e6d793
MG
131812001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13182
13183 * posix.h (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
13184 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
13185 (scm_sethostname, scm_gethostname): New prototypes.
13186
13187 * posix.c: Added inclusion of <crypt.h>, <sys/resource.h> and
13188 <sys/file.h>, if present.
13189 (scm_init_posix): [PRIO_PROCESS, PRIO_PGRP, PRIO_USER, LOCK_SH,
13190 LOCK_EX, LOCK_UN, LOCK_NB]: New variables.
13191 (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
13192 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
13193 (scm_sethostname, scm_gethostname): New procedures.
13194
650a1cf9
NJ
131952001-03-08 Neil Jerram <neil@ossau.uklinux.net>
13196
13197 * ports.c (scm_port_column): Docstring fixes: (i) port-line arg is
13198 not optional (ii) "recommend" spelling correction.
13199
9636b49c
MD
132002001-03-08 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13201
5e4a4d09
MD
13202 * ramap.c (racp): Removed optimization which caused array copying
13203 to fail if the two arrays shared storage. Re-inserted the IVDEP
13204 macros removed in the change of 2000-03-09. (Don't really have a
13205 complete grasp of what they are for, but they seem to be necessary
13206 on Crays. This needs testing!) Thanks to Miroslav Silovic.
13207
9636b49c
MD
13208 * hash.c (scm_string_hash): Don't downcase characters.
13209
04a4d666
MD
132102001-03-07 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13211
9636b49c 13212 * symbols.c (scm_symbols_prehistory): Changed symbol hash table
04a4d666
MD
13213 size from 277 --> 1009.
13214
13215 * symbols.c, symbols.h (scm_sys_symbols): New function GUILE_DEBUG
13216 function.
13217
13218 * coop-threads.c: Fixed change of 2001-03-06.
1c938eb8 13219
04a4d666
MD
13220 * validate.h: Code formatting.
13221
66418d34
KN
132222001-03-07 Keisuke Nishida <kxn30@po.cwru.edu>
13223
13224 * Makefile.am (*.x): Add dependency on snarf.h and guile-doc-snarf.in.
13225 (*.doc): Add dependency on guile-snarf.awk.in.
13226
13227 * guile-snarf.awk.in: Neglect spaces at the end of
13228 SCM_SNARF_DOCSTRING_END. Skip lines "# NN ..." in the
13229 middle of docstrings. (To avoid the problem with gcc-2.96.)
13230
2ade72d7
DH
132312001-03-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
13232
13233 * coop-threads.c (scm_call_with_new_thread), load.c
13234 (scm_primitive_load, scm_sys_search_load_path), random.c
13235 (scm_c_default_rstate), struct.c (scm_make_struct_layout,
13236 scm_struct_ref, scm_struct_set_x): Don't use SCM_ASSERT to
13237 (potentially) issue a scm-misc-error or wrong-num-args error
13238 message.
13239
13240 * load.c (scm_search_path): Use SCM_ASSERT_TYPE to give details
13241 about the expected type with the wrong-type-arg error message.
13242
13243 * smob.c (scm_make_smob): Abort on misuse of smob - it indicates
13244 a C level bug that can't be fixed from scheme anyway.
13245
586d7da2
MD
132462001-03-05 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13247
13248 * eval.c (scm_m_letstar): Removed check for duplicate bindings.
13249 Duplicate bindings are OK in a let* since a let* is semantically
13250 equivalent to a nested set of let:s.
13251
1dd05fd8
MG
132522001-03-05 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13253
13254 * print.c (scm_print_options): Fixed texinfo in docstring.
13255
13256 * net_db.c (scm_getserv, scm_getproto, scm_getnet): Return #f if
13257 the underlying functions getservent, getprotoent or getnetent
13258 return NULL instead of signalling an error.
13259
439006bf
GH
132602001-03-04 Gary Houston <ghouston@arglist.com>
13261
13262 * socket.c (scm_fill_sockaddr): don't allow buffer overflows when
13263 taking an unexpectedly large filename for an AF_UNIX socket from
13264 bind/connect/sendto (thanks to Martin Grabmueller).
1c938eb8 13265
439006bf
GH
13266 * socket.c (scm_sock_fd_to_port, SCM_SOCK_FD_TO_PORT): removed the
13267 former and adjusted the latter.
13268 (scm_socket, scm_socketpair): cosmetic changes.
13269 (scm_getsockopt, scm_setsockopt): declare optlen as int, not
13270 size_t as socklen_t substitute. don't restrict args/return values
13271 to INUM: allow full range of int or size_t.
13272 (scm_fill_sockaddr): check arguments before allocating memory, to
13273 avoid leakage. use malloc, not scm_must_malloc.
13274 (scm_connect, scm_bind, scm_sendto): use int, not size_t as socklen_t
13275 substitute. free the sockaddr structure before throwing an error.
13276 (scm_init_add_buffer): procedure removed, together with its static
13277 buffer scm_addr_buffer, which wouldn't be thread safe. instead,
13278 define a macro MAX_ADDR_SIZE and declare the buffer where needed.
13279 (scm_accept, scm_getpeername, scm_getsockname, scm_recvfrom,
13280 scm_sendto): use a local buffer instead of scm_addr_buffer.
13281 adjust for new SCM_SOCK_FD_TO_PORT. use int for address size,
13282 not size_t.
13283 (scm_recvfrom): set addr->sa_family to AF_UNSPEC before the recvfrom
13284 call to detect whether recvfrom could be bothered to set the address.
13285 (scm_init_socket): don't call scm_init_addr_buffer.
13286
276dd677
DH
132872001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
13288
13289 * debug.c (scm_procedure_source, scm_procedure_environment),
13290 print.c (scm_get_print_state), ramap.c (scm_array_fill_int,
13291 scm_array_index_map_x), sort.c (scm_sort_x, scm_sort,
13292 scm_stable_sort_x, scm_stable_sort), stacks.c (scm_make_stack,
13293 scm_last_stack_frame), symbols.c (scm_sym2vcell, scm_sym2ovcell),
13294 unif.c (scm_list_to_uniform_array, scm_uniform_vector_length,
13295 scm_transpose_array, scm_enclose_array, scm_array_in_bounds_p,
13296 scm_uniform_vector_ref, scm_array_set_x, scm_uniform_array_read_x,
13297 scm_uniform_array_write, scm_bit_set_star_x, scm_bit_count_star,
13298 scm_array_to_list, scm_array_prototype), validate.h
13299 (SCM_VALIDATE_NUMBER_COPY): Don't call function scm_wta, call
13300 scm_misc_error or scm_wrong_type_arg instead.
13301
13302 * validate.h (SCM_WTA, RETURN_SCM_WTA): Deprecated.
13303
5e03762c
MD
133042001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13305
13306 * goops.c, goops.h (scm_sys_pre_expand_closure_x): Removed.
13307 (scm_sys_tag_body): Added.
13308
db4b4ca6
DH
133092001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
13310
13311 * continuations.c (continuation_apply), eval.c (scm_m_lambda,
13312 scm_m_letstar, scm_m_letrec1, scm_m_let, SCM_APPLY), eval.h
13313 (SCM_EVALIM2), evalext.c (scm_m_generalized_set_x), gc.c
13314 (get_bvec, MARK), goops.c (scm_primitive_generic_generic),
13315 options.c (scm_options), ports.c (scm_remove_from_port_table),
13316 ramap.c (scm_ramapc), read.c (skip_scsh_block_comment, scm_lreadr,
13317 scm_lreadparen, scm_lreadrecparen), script.c (script_get_octal,
13318 script_get_backslash, script_read_arg), unif.c (scm_cvref): Don't
13319 call function scm_wta, call scm_misc_error or scm_wrong_type_arg
13320 instead.
13321
87e7741d
MD
133222001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13323
13324 * goops.c (scm_sys_pre_expand_closure_x): New procedure.
13325
d19b0aac
MV
133262001-03-04 Marius Vollmer <mvo@zagadka.ping.de>
13327
13328 * eval.c (scm_s_duplicate_bindings): New error message.
13329 (scm_m_letrec1, scm_m_letstar): Check for duplicate bindings.
13330
2fd945df
MV
133312001-03-03 Marius Vollmer <mvo@zagadka.ping.de>
13332
13333 * eval.h (SCM_EVALIM2): New macro. Use it when a
13334 immediate, literal constant should be evaluated.
13335 * eval.c (scm_s_duplicate_formals): New error message string.
13336 (scm_c_improper_memq): New function.
13337 (scm_m_lambda): Check for duplicate arguments.
13338 (scm_ceval, scm_deval): When executing a body: only cons a new
13339 toplevel environment frame when it is different from the
13340 existing one; use EVALCAR instead of SIDEVAL so that we can properly
13341 check for empty combinations; use SCM_EVALIM2 for the same reason
13342 in the non-toplevel loop.
13343 (nontoplevel_cdrxnoap, nontoplevel_cdrxbegin, nontoplevel_begin):
13344 New labels with the meaning of their non-"nontoplevel" partners,
13345 but they are used when it is known that the body is not evaluated at
13346 top-level.
13347 (scm_apply, scm_dapply): use SCM_EVALIM2 to get proper error
13348 reporting for empty combinations.
13349
9e6fc585
KN
133502001-03-02 Keisuke Nishida <kxn30@po.cwru.edu>
13351
13352 * Remove dump facilities.
13353 * dump.c, dump.h: Removed.
13354 * Makefile.am: Remove dump.c, dump.h, dump.x, dump.doc.
13355 * init.c: Remove #include "libguile/dump.h".
13356 (scm_init_guile_1): Remove scm_init_dump.
13357 * smob.h (scm_smob_descriptor): Remove slots: dump, undump.
13358 (scm_set_smob_dump, scm_set_smob_undump): Remove declaration.
13359 * smob.c (scm_make_smob_type): Remove initialization: dump, undump.
13360 (scm_set_smob_dump, scm_set_smob_undump): Removed.
13361
13362 * keywords.c: Remove #include "libguile/dump.h".
13363 (keyword_dump, keyword_undump): Removed.
13364 (scm_init_keywords): Remove scm_set_smob_dump and scm_set_smob_undump.
13365
eae54bf0
MG
133662001-03-02 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13367
13368 * vectors.c (s_scm_vector_p, list->vector, scm_vector)
13369 (scm_vector_ref, scm_vector_set_x, scm_vector_to_list)
13370 (scm_vector_fill_x), strorder.c (scm_string_equal_p)
13371 (scm_string_ci_equal_p, scm_string_less_p, scm_string_leq_p)
13372 (scm_string_gr_p, scm_string_geq_p, scm_string_ci_less_p)
13373 (scm_string_ci_geq_p), symbols.c (scm_symbol_p)
13374 (scm_symbol_to_string, scm_string_to_symbol): Changed use of @t{}
13375 to @code{} as the texinfo manual recommends, converted the
13376 examples to use a @lisp{}-environment.
13377
13378 * strports.c (scm_eval_string): Cleaned up the docstring.
13379
13380 * struct.c (scm_struct_p, scm_struct_vtable_p): Added texinfo
13381 markup.
13382
13383 * numbers.c (scm_exact_p, scm_odd_p, scm_even_p)
13384 (scm_number_to_string, scm_string_to_number, scm_number_p)
13385 (scm_real_p, scm_integer_p, scm_inexact_p, scm_make_rectangular)
13386 (scm_make_polar, scm_inexact_to_exact): Added texinfo markup.
13387 (scm_ash): Added texinfo markup and removed obsolete @refill.
13388 (scm_gr_p): Corrected comment.
13389 (scm_gr_p, scm_leq_p, scm_geq_p): Added texinfo markup to (future
13390 docstring) comments.
13391 (scm_positive_p, scm_less_p, scm_num_eq_p, scm_real_p)
13392 (scm_number_p, scm_negative_p, scm_max, scm_min, scm_sum)
13393 (scm_difference, scm_product, scm_divide, scm_asinh, scm_acosh)
13394 (scm_atanh, scm_truncate, scm_round, scm_exact_to_inexact)
13395 (floor, ceiling, $sqrt, $abs, $exp, $log, $sin, $cos, $tan, $asin)
13396 ($acos, $atan, $sinh, $cosh, $tanh, scm_real_part, scm_imag_part)
13397 (scm_magnitude, scm_angle, scm_abs, scm_quotient, scm_remainder)
13398 (scm_modulo, scm_gcd, scm_lcm): Added (future docstring) comments.
13399
23deee81
DH
134002001-02-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
13401
13402 * __scm.h (SCM_ASSERT_TYPE): Add missing macro parameter.
13403 (Obviously nobody compiles with SCM_RECKLESS defined...)
13404
13405 * validate.h (SCM_ASSERT_RANGE): Use the argument number.
13406
6fe692e9
MD
134072001-02-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13408
13409 * ports.c, ports.h (scm_c_read, scm_c_write): New functions.
13410
13411 * ports.h (SCM_READ_BUFFER_EMPTY_P): New macro.
13412
27c37006
NJ
134132001-02-24 Neil Jerram <neil@ossau.uklinux.net>
13414
13415 * numbers.c (scm_two_doubles, scm_sys_expt, scm_sys_atan2,
13416 scm_make_polar): Rename arguments `z1' and `z2' to `x' and `y',
13417 since use of `z' suggests that the arguments may be complex.
13418
13419 * goops.c (scm_make), numbers.c (scm_sys_expt): Fix docstring
13420 typos.
13421
2069af38
NJ
134222001-02-23 Neil Jerram <neil@ossau.uklinux.net>
13423
13424 * dump.c (scm_binary_write, scm_binary_read), eval.c
13425 (scm_primitive_eval), guardians.c (scm_guardian_destroyed_p,
13426 scm_guardian_greedy_p, scm_make_guardian), fports.c
13427 (scm_file_port_p): Minor docstring fixes.
13428
b42ff180
MV
134292001-02-22 Marius Vollmer <mvo@zagadka.ping.de>
13430
2069af38 13431 * load.c (load): Use scm_primitive_eval_x instead of scm_i_eval_x.
97ea55f8
MV
13432
13433 * goops.c (scm_add_method, DEFVAR): Use scm_eval instead of
13434 scm_i_eval.
13435 (make_class_from_template): Do not bother to set the current
13436 module around the call to DEFVAR, scm_eval takes care of that.
13437 (scm_init_goops): Make scm_module_goops and
13438 scm_goops_lookup_closure permanent objects.
1c938eb8 13439
97ea55f8
MV
13440 * eval.c (scm_ceval, scm_deval): When evaluating expressions on
13441 top level, create a fresh top-level environment for each
13442 expression instead of mutating the exisint frame. This is
13443 important when that frame is closed over.
13444
b42ff180
MV
13445 * numbers.c (s_scm_logior) [SCM_DIGSTOOBIG]: Also use
13446 SCM_DIGSPERLONG instead of DIGSPERLONG.
13447
09f2ab1e
MV
134482001-02-21 Marius Vollmer <mvo@zagadka.ping.de>
13449
13450 * eval.c (scm_ceval, scm_deval): Check for wrong number of args
13451 before applying arrow procedure in `cond' and before applying
13452 receiver procedure in call-with-current-continuation.
13453 (scm_i_eval): Do not invoke scm_copy_tree in argument in SCM_XEVAL
13454 macro. The argument is expanded more than one time.
13455
13456 * numbers.c (scm_logior) [SCM_DIGSTOOBIG]: Correctly use
13457 SCM_BIGDIG instead of BIGDIG. Thanks to Steven G. Johnson!
13458
134592001-02-20 Marius Vollmer <mvo@zagadka.ping.de>
13460
13461 * guile-doc-snarf.in, guile-func-name-check.in: Added copyright
13462 notice and license.
13463
7090240c
MG
134642001-02-17 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13465
13466 * variable.c (scm_make_variable, scm_make_undefined_variable)
13467 (scm_variable_ref, scm_variable_set_x, scm_builtin_variable)
13468 (scm_variable_bound_p), values.c (scm_values)
13469 (scm_call_with_values), unif.c (scm_bit_count)
13470 (scm_bit_set_star_x), symbols.c (scm_gentemp)
13471 (scm_gensym), strings.c (scm_string_p, scm_make_string)
13472 (scm_read_only_string_p, scm_string_length, scm_string_ref)
13473 (scm_string_set_x, scm_substring, scm_string_append), stime.c
13474 (scm_strptime, scm_mktime), random.c (scm_seed_to_random_state)
13475 (scm_copy_random_state, scm_random), print.c (scm_newline)
13476 (scm_write_char, scm_simple_format), debug-malloc.c
13477 (scm_malloc_stats), environments.c (scm_environment_p)
13478 (scm_environment_bound_p, scm_environment_ref)
13479 (scm_environment_fold, scm_environment_define)
13480 (scm_environment_undefine, scm_environment_set_x)
13481 (scm_environment_cell, scm_environment_observe)
13482 (scm_environment_observe_weak, scm_environment_unobserve)
13483 (scm_make_eval_environment, scm_eval_environment_p)
13484 (scm_eval_environment_set_local_x, scm_eval_environment_local)
13485 (scm_eval_environment_imported)
13486 (scm_eval_environment_set_imported_x, scm_make_import_environment)
13487 (scm_import_environment_p, scm_import_environment_imports)
13488 (scm_import_environment_set_imports_x, scm_make_export_environment)
13489 (scm_export_environment_p, scm_export_environment_private)
13490 (scm_export_environment_set_private_x)
13491 (scm_export_environment_signature)
13492 (scm_export_environment_set_signature_x, scm_leaf_environment_p):
13493 Added texinfo markup.
13494
13495 * ports.c (scm_drain_input): Lowercased argument to @var.
13496 (scm_current_input_port, scm_current_output_port): Filled in
13497 missing explanation.
13498 (scm_current_load_port, scm_set_current_output_port)
13499 (scm_set_current_error_port, scm_port_line, scm_set_port_line_x):
13500 Added texinfo markup.
13501
13502 * arbiters.c (scm_make_arbiter, scm_try_arbiter)
13503 (scm_release_arbiter): Added texinfo markup to docstrings.
13504 Changed `Returns' to `Return'.
13505 (arbiter_print): Changed SCM_CDR to SCM_SMOB_DATA.
13506
25703850
NJ
135072001-02-16 Neil Jerram <neil@ossau.uklinux.net>
13508
13509 * guile-snarf.awk.in: Quote any `@'s that occur in Scheme names,
13510 by doubling them to `@@'.
13511
73c0fdce
MG
135122001-02-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13513
13514 * numbers.c (scm_lognot), random.c (scm_random,
13515 scm_random_normal, scm_random_solid_sphere_x,
13516 scm_random_hollow_sphere_x, scm_random_normal_vector_x,
13517 scm_random_exp), dynwind.c
13518 (scm_dynamic_wind): Removed unnecessary "" from docstrings.
1c938eb8 13519
73c0fdce
MG
13520 * goops.c (scm_sys_initialize_object, scm_instance_p,
13521 scm_class_name, scm_class_precedence_list, scm_class_slots,
13522 scm_class_environment, scm_generic_function_name,
13523 scm_generic_function_methods, scm_method_generic_function,
13524 scm_method_specializers, scm_method_procedure, scm_make_unbound,
13525 scm_unbound_p, scm_assert_bound, scm_at_assert_bound_ref,
13526 scm_sys_fast_slot_ref, scm_sys_fast_slot_set_x, scm_slot_ref,
13527 scm_slot_set_x, _scm_slot_bound_p, scm_slots_exists_p,
13528 scm_sys_allocate_instance, scm_make, scm_pure_generic_p,
13529 scm_class_direct_supers, scm_class_direct_slots,
13530 scm_class_direct_subclasses, scm_class_direct_methods,
13531 scm_accessor_method_slot_definition, scm_sys_goops_loaded),
13532 debug.c (scm_with_traps, scm_memoized_p, scm_make_gloc,
13533 scm_gloc_p, scm_make_iloc, scm_iloc_p, scm_memcons,
13534 scm_mem_to_proc, scm_proc_to_mem, scm_unmemoize,
13535 scm_memoized_environment, scm_procedure_name,
13536 scm_procedure_source, scm_procedure_environment, scm_debug_hang),
13537 objects.c
13538 (scm_class_of, scm_entity_p, scm_operator_p,
13539 scm_set_object_procedure_x, scm_object_procedure,
13540 scm_make_class_object), hooks.c (scm_make_hook_with_name,
13541 scm_make_hook, scm_hook_p, scm_hook_empty_p, scm_add_hook_x,
13542 scm_remove_hook_x, scm_reset_hook_x, scm_run_hook,
13543 scm_hook_to_list), lang.c
13544 (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null, scm_nil_eq),
13545 numbers.c (scm_sys_expt, scm_sys_atan2), print.c
13546 (scm_print_options, scm_port_with_print_state,
13547 scm_get_print_state), procs.c (scm_make_cclo, scm_procedure_p,
13548 scm_closure_p, scm_thunk_p, scm_procedure_with_setter_p,
13549 scm_make_procedure_with_setter, scm_procedure), throw.c
13550 (scm_lazy_catch), modules.c (scm_standard_eval_closure), load.c
13551 (scm_parse_path, scm_search_path), stacks.c (scm_make_stack,
13552 scm_stack_ref, scm_stack_length, scm_frame_p,
13553 scm_last_stack_frame, scm_frame_number, scm_frame_source,
13554 scm_frame_procedure, scm_frame_arguments, scm_frame_previous,
13555 scm_frame_next, scm_frame_real_p, scm_frame_procedure_p,
13556 scm_frame_evaluating_args_p, scm_frame_overflow_p), filesys.c
13557 (scm_dirname, scm_basename), dynwind.c
13558 (scm_wind_chain), read.c (scm_read_options, scm_read,
13559 scm_read_hash_extend), gc.c
13560 (scm_unhash_name), eval.c (scm_eval_options_interface,
13561 scm_evaluator_traps, s_scm_nconc2last), backtrace.c
13562 (scm_display_error, scm_set_print_params_x,
13563 scm_display_application, scm_display_backtrace, scm_backtrace),
13564 async.c (scm_async, scm_system_async, scm_async_mark,
13565 scm_system_async_mark, scm_run_asyncs, scm_noop,
13566 scm_set_tick_rate, scm_set_switch_rate, scm_unmask_signals,
13567 scm_mask_signals): Added docstrings.
13568
e228a203
KN
135692001-02-15 Keisuke Nishida <kxn30@po.cwru.edu>
13570
13571 * dump.c (scm_undump): Use SCM_CARLOC/SCM_CDRLOC to obtain the
13572 address of car/cdr. (Thanks to Dirk Herrmann)
13573 Use scm_sizet to obtain the length of strings.
13574 (Thanks to Matthias Koeppe)
13575
1552a59d
MV
135762001-02-15 Marius Vollmer <mvo@zagadka.ping.de>
13577
13578 * symbols.c (scm_mem2symbol): Put a empty statement after the
13579 next_symbol label. This is mandated by ANSI, appearantly.
13580
3178f751
MV
135812001-02-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13582
13583 * gc_os_dep.c: Do not include <linux/version.h>. It makes no
13584 sense to compile for a specific kernel version. Do not include
13585 <asm/signal.h> while defining __KERNEL__. This hack should no
13586 longer be needed and caused problems.
13587
7af4defe
MV
135882001-02-13 Marius Vollmer <mvo@zagadka.ping.de>
13589
13590 * eval.c (scm_ceval, scm_deval): use `SIDEVAL' instead of
13591 SCM_CEVAL when evaluating subforms of `begin' forms. SCM_CEVAL
13592 can not deal with immediates.
13593
5d6bb349
KN
135942001-02-12 Keisuke Nishida <kxn30@po.cwru.edu>
13595
13596 * list.c (scm_list_copy): Validate the first argument.
13597
ec9709f0
MV
135982001-02-11 Marius Vollmer <mvo@zagadka.ping.de>
13599
13600 Fix evaluator so that top-level expressions are correctly
13601 evaluated with respect to the module system.
1c938eb8 13602
ec9709f0
MV
13603 * modules.h. modules.c (scm_current_module_lookup_closure): New
13604 function.
13605
13606 * eval.h (scm_primitive_eval, scm_primitive_eval_x): New
13607 prototypes.
13608 (scm_i_eval, scm_i_eval_x, scm_eval, scm_eval_x): Changed argument
13609 names to better reflect their meaning.
13610
13611 * eval.c (scm_ceval, scm_deval): Recognize when `begin' is being
13612 evaluated at top-level and synronize lookup closure before
13613 executing every subform.
13614 (scm_primitve_eval_x, scm_primitive_eval): New functions.
13615 (scm_eval_x, scm_eval): Reimplement in terms of
13616 scm_primitive_eval_x and scm_primitive_eval, respectively.
1c938eb8 13617
ec9709f0
MV
136182001-02-09 Marius Vollmer <mvo@zagadka.ping.de>
13619
13620 * macros.c (scm_macro_name, scm_macro_transformer): Use
13621 SCM_SMOB_DATA instead of SCM_CDR. Provided by Martin Grabmueller.
13622 Thanks!
13623
42417394
KN
136242001-02-10 Keisuke Nishida <kxn30@po.cwru.edu>
13625
13626 * dump.c (scm_store_bytes): Store data size before data.
13627 (scm_restore_bytes): Restore data size. Takes a pointer to size.
13628 * dump.h (scm_restore_bytes): Updated.
13629
bf942687
KN
136302001-02-09 Keisuke Nishida <kxn30@po.cwru.edu>
13631
13632 * dump.c: Use double cells for update schedule.
13633
1be4270a
KN
136342001-02-08 Keisuke Nishida <kxn30@po.cwru.edu>
13635
13636 * ports.c (scm_unread_char): Take an optional argument.
13637
548728ea
MV
136382001-02-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13639
13640 * modules.h (scm_selected_module, scm_current_module): Renamed
13641 scm_selected_module to scm_current_module to synchronize Scheme
13642 and C names.
13643 (scm_select_module, scm_set_current_module): Likewise. Changed
13644 all uses.
1c938eb8 13645
548728ea
MV
13646 * ports.c (scm_port_for_each): Make a snapshot of the port table
13647 before iterating over it. The table might change while the user
13648 code is running. With the snapshot, the user can depend on the
c5408bc3 13649 fact that each port that existed at the start of the iteration is
548728ea
MV
13650 encountered exactly once. (ice-9 popen) depends on this.
13651
cb0d8be2
DH
136522001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
13653
13654 * strings.h (SCM_STRING_MAX_LENGTH): New macro.
13655
13656 * strings.c (scm_makstr, scm_take_str, scm_make_string): Added
13657 range checking for the size parameter. Thanks to Martin
13658 Grabmueller for the hint.
13659
13660 (scm_makstr): Reordered string initialization to make interrupt
13661 deferring unnecessary.
13662
13663 * vectors.c (scm_make_vector): Fixed range checking.
13664
e382fdbe
DH
136652001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
13666
13667 * vectors.h (SCM_VECTOR_MAX_LENGTH): New macro.
13668
13669 * vectors.c (scm_make_vector, scm_c_make_vector): Improved the
13670 checking of the size parameter for type correctness and valid
13671 range. Thanks to Rob Browning for reporting the problem. Instead
13672 of deferring interrupts, scm_remember_upto_here_1 is used.
13673
bf8f0922
KN
136742001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
13675
13676 * dump.c (scm_store_cell_object, scm_restore_cell_object): Removed.
13677 (scm_dump_cell_update): Removed.
13678 (scm_dump_update): Renamed from scm_dump_object_update.
13679 (scm_restore_string, scm_restore_bytes, scm_restore_word): Takes
13680 a pointer instead of returning a value.
13681 * keywords.c (keyword_undump): Updated.
13682
914cceec
KN
136832001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
13684
13685 * dump.c, dump.h: Modified a lot.
5f17c66f 13686 (SCM_DUMP_COOKIE): Version 0.1
914cceec
KN
13687 (scm_dump_mark): Removed.
13688 (scm_restore_cell_object, scm_store_cell_object): New functions.
13689
13690 * smob.h (scm_smob_descriptor): Removed slots: dump_mark,
13691 dump_dealloc, dump_store, undump_alloc, undump_restore, undump_init.
13692 New slots: dump, undump.
13693 * smob.c (scm_make_smob_type, scm_set_smob_dump, scm_set_smob_undump):
13694 Updated.
13695
13696 * keywords.c (keyword_dump): Renamed from keyword_dealloc.
13697 (keyword_undump): Renamed from keyword_alloc.
13698 (scm_init_keywords): Set keyword_dump and keyword_undump.
13699
ecf470a2
ML
137002001-02-03 Michael Livshin <mlivshin@bigfoot.com>
13701
13702 * gc.c (DOUBLECELL_ALIGNED_P): new macro, a better-named analog of
13703 the deprecated SCM_DOUBLE_CELLP.
13704
13705 * tags.h (SCM_DOUBLE_CELLP): deprecated.
13706
03416a99
KN
137072001-02-02 Keisuke Nishida <kxn30@po.cwru.edu>
13708
13709 * dump.c, dump.h: New files.
13710 * Makefile.am: Added dump.c, dump.h, dump.x, dump.doc.
13711 * init.c: #include "libguile/dump.h".
13712 (scm_init_guile_1): Call scm_init_dump.
13713 * smob.h (scm_smob_descriptor): New slots: dump_mark,
13714 dump_dealloc, dump_store, undump_alloc, undump_restore,
13715 undump_init.
13716 * smob.c (scm_make_smob_type): Init the new slots.
13717 (scm_set_smob_dump, scm_set_smob_undump): New functions.
13718 * smob.h (scm_set_smob_dump, scm_set_smob_undump): Declared.
13719
13720 * keywords.c: #include "libguile/dump.h".
13721 (keyword_dealloc, keyword_alloc): New functions.
13722 (scm_init_keywords): Set smob_dump and smob_undump.
13723
00ffa0e7
KN
137242001-02-01 Keisuke Nishida <kxn30@po.cwru.edu>
13725
13726 * vectors.c (scm_c_make_vector): New function.
13727 * vectors.h (scm_c_make_vector): Declared.
13728 * eval.c (scm_copy_tree), filesys.c (scm_stat2scm), fluids.c
13729 (scm_make_initial_fluids, grow_fluids), gc.c (scm_init_storage),
13730 gh_data.c (gh_ints2scm, gh_doubles2scm): goops.c
13731 (scm_make_method_cache, scm_i_vector2list,
13732 scm_compute_applicable_methods, scm_sys_method_more_specific_p),
13733 init.c (start_stack), net_db.c (scm_gethost, scm_getnet,
13734 scm_getproto, scm_return_entry), posix.c (scm_getgroups,
13735 scm_getpwuid, scm_getgrgid, scm_uname), print.c (make_print_state,
13736 grow_ref_stack), regex-posix.c (scm_regexp_exec), scmsigs.c
13737 (scm_init_scmsigs), socket.c (scm_addr_vector, scm_addr_vector),
13738 stime.c (scm_times, filltime), unif.c (scm_make_uve), vectors.c
13739 (scm_vector, scm_make_vector): Use scm_c_make_vector.
13740
13741 * hashtab.c (scm_c_make_hash_table): New function.
13742 * hashtab.h (scm_c_make_hash_table): Declared.
13743 * environments.c (scm_make_leaf_environment,
13744 scm_make_eval_environment), gc.c (scm_init_storage),
13745 keywords.c (scm_init_keywords), symbols.c (scm_builtin_bindings):
13746 Use scm_c_make_hash_table.
13747
b8446ce8
MD
137482001-01-31 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13749
13750 * unif.c (rapr1): Don't apply scm_uniform_vector_length on arrays.
13751
e3239868
DH
137522001-01-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13753
13754 * struct.c (scm_make_vtable_vtable): Removed unnecessary "" from
13755 end of docstring.
13756
13757 * struct.c (scm_struct_set_x, scm_struct_vtable_tag,
13758 scm_struct_vtable_name, scm_set_struct_vtable_name_x), weaks.c
13759 (scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table,
13760 scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
13761 srcprop.c (scm_source_properties, scm_set_source_properties_x,
13762 scm_source_property, scm_set_source_property_x), sort.c
13763 (scm_sort_list_x, scm_restricted_vector_sort_x, scm_sorted_p,
13764 scm_merge, scm_merge_x, scm_sort_x, scm_sort, scm_stable_sort_x,
13765 scm_stable_sort, scm_sort_list_x, scm_sort_list): Added
13766 docstrings.
13767
41ee56dd
MD
137682001-01-29 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13769
13770 * eval.c (SCM_APPLY): Check that primitives which take 1 arg
13771 really get that arg.
13772
b6311c08
KN
137732001-01-26 Keisuke Nishida <kxn30@po.cwru.edu>
13774
13775 * goops.c (s_scm_get_keyword): Bug fix.
13776
a49af0c0
DH
137772001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
13778
13779 The following patch was sent by Martin Grabmueller. It makes sure
13780 that in case of parameter errors the correct function name is
13781 shown, and that parameter types are only checked once.
13782
13783 * strop.c (string_copy, string_upcase_x, string_downcase_x,
13784 string_capitalize_x): New functions. Each one performs the core
13785 functionality of the corresponding scm_* function.
13786
13787 (scm_string_copy, scm_string_upcase_x, scm_string_upcase,
13788 scm_string_downcase_x, scm_string_downcase,
13789 scm_string_capitalize_x, scm_string_capitalize): Reduced to
13790 parameter checking wrappers of the above functions.
13791
13070bd3
DH
137922001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
13793
13794 * continuations.c, dynl.c, keywords.c, load.c: Include
13795 strings.h. Thanks to Bill Schottstaedt for the bug report.
13796
2f2b390c
DH
137972001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13798
13799 * backtrace.c (display_header): Make sure that line and column
13800 information is shown independent of whether the port the code was
13801 read from had an associated filename. Thanks to Martin
13802 Grabmueller for providing this patch.
13803
efa40607
DH
138042001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13805
13806 * fports.[ch] (scm_file_port_p): New primitive.
13807
a98bddfd
DH
138082001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13809
13810 * tags.h (scm_tc16_fport, scm_tc16_strport, scm_tc16_sfport):
13811 These are now defined in fports.c, strports.c and vports.c.
13812
13813 * fports.[ch] (scm_tc16_fport), strports.c (scm_tc16_strport),
13814 vports.c (scm_tc16_sfport): Made variables (were macros defined in
13815 tags.h).
13816
13817 fports.c (scm_make_fptob), strports.c (scm_make_stptob), vports.c
13818 (scm_make_sfptob): Made static. These return a type code now.
13819
13820 fports.c (scm_init_fports), strports.c (scm_init_strports),
13821 vports.c (scm_init_vports): Create the corresponding port types.
13822
13823 * fports.h (SCM_FPORTP, SCM_OPFPORTP, SCM_OPINFPORTP,
13824 SCM_OPOUTFPORTP): Redefined in terms of scm_tc16_fport.
13825
13826 * init.c (scm_init_guile_1): Make sure strports are initialized
13827 before gdbint.
13828
13829 * ports.[ch] (scm_make_port_type): Changed the return type to
13830 scm_bits_t.
13831
13832 * ports.c (scm_ports_prehistory): Don't create any port types
13833 here.
13834
13835 * posix.c (scm_ttyname): Use SCM_FPORTP instead of comparing
13836 against scm_tc16_fport directly.
13837
0419a528
DH
138382001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13839
13840 * srcprop.c (scm_set_source_property_x): Fix to handle
13841 (set-source-property! <obj> 'copy <datum>) correctly.
13842
6d36532c
GH
138432001-01-24 Gary Houston <ghouston@arglist.com>
13844
13845 * filesys.c (scm_link): docstring fix.
13846 * fports.h (scm_setfileno): obsolete declaration removed.
13847 * posix.c: bogus popen declaration removed.
13848
13849 * rdelim.c: new file, split from ioext.c.
13850 * rdelim.h: new file, split from ioext.h
13851 * Makefile.am: add rdelim.c and related files.
13852 * init.c: call scm_init_rdelim. include rdelim.h.
13853
3ba5a6c2
DH
138542001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
13855
13856 This patch was sent by Martin Grabmueller and makes sure that
13857 parameter errors are reported correctly by the lexicographic
13858 ordering predicates.
13859
13860 * strorder.c (string_less_p, string_ci_less_p): New functions.
13861
13862 (scm_string_less_p, scm_string_ci_less_p): Extracted the core
13863 functionality into string_less_p, string_ci_less_p respectively.
13864 The remaining code is just a wrapper to do the parameter
13865 checking.
13866
13867 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p): Check the
13868 parameters and call string_less_p instead of scm_string_less_p.
13869
13870 (scm_string_ci_leq_p, scm_string_ci_gr_p, scm_string_ci_geq_p):
13871 Check the parameters and call string_less_ci_p instead of
13872 scm_string_ci_less_p.
13873
e40a4095
DH
138742001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
13875
ed6a2db9
DH
13876 This patch modifies scm_display_error to perform parameter
13877 checking. Thanks to Neil Jerram for the bug report.
13878
e40a4095
DH
13879 * backtrace.[ch] (scm_i_display_error): New function.
13880
13881 * backtrace.c (scm_display_error): Added parameter check and
13882 extracted the core functionality into function
13883 scm_i_display_error.
13884
13885 * throw.c (handler_message): Call scm_i_display_error to display
13886 the error message.
13887
f1e06a96
MD
138882001-01-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13889
13890 * eval.c (SCM_APPLY): Added # args check for application of
13891 procedures with arity 3. (Thanks to Anders Holst.)
13892
30ea841d
DH
138932001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
13894
13895 * filesys.h (SCM_DIR_FLAG_OPEN, SCM_DIR_OPEN_P): Added.
13896
13897 (SCM_OPDIRP): Deprecated.
13898
13899 * filesys.c (scm_opendir): Use SCM_DIR_FLAG_OPEN instead of
13900 SCM_OPN.
13901
13902 (scm_readdir, scm_rewinddir): Don't use SCM_VALIDATE_OPDIR.
13903 Instead, give an explicit error message in case the directory is
13904 closed.
13905
13906 (scm_closedir, scm_dir_print): Rewritten to use SCM_DIR_OPEN_P
13907 instead of SCM_OPENP and SCM_CLOSEDP.
13908
13909 * validate.h (SCM_VALIDATE_OPDIR): Deprecated.
13910
312ae976
DH
139112001-01-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
13912
13913 * eval.c (inner_eval, scm_eval): Move all real functionality into
13914 inner_eval. Avoid to copy the expression twice by inlining some
13915 code from scm_i_eval.
13916
4567ed78
DH
139172001-01-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
13918
13919 * eval.c (scm_m_case): The 'else' clause of a 'case' statement
13920 now has to be the last clause, as required by R5RS. Thanks to
13921 Martin Grabmueller for the patch.
13922
10288a09
GH
139232001-01-18 Gary Houston <ghouston@arglist.com>
13924
13925 * ioext.c: further simplify scm_read_string_x_partial by defining
13926 a macro SCM_EBLOCK.
13927
8f379a8f
DH
139282001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
13929
13930 * gh_data.c (gh_ints2scm): Simplified using SCM_FIXABLE.
13931
5c75b29f
DH
139322001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
13933
13934 * __scm.h: Added comment about architecture and compiler
13935 properties that are required by guile.
13936
13937 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
13938 SCM_MOST_NEGATIVE_FIXNUM): Moved to numbers.h.
13939
13940 (SCM_CHAR_BIT, SCM_LONG_BIT): Moved here from numbers.h.
13941
13942 * numbers.h (SCM_CHAR_BIT, SCM_LONG_BIT): Moved to __scm.h.
13943
13944 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
13945 SCM_MOST_NEGATIVE_FIXNUM): Moved here from __scm.h.
13946
ac0c002c
DH
139472001-01-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13948
13949 * __scm.h (SCM_FIXNUM_BIT): Added. The name is chosen in analogy
13950 to the names in limits.h.
13951
13952 * numbers.c (abs_most_negative_fixnum): Added.
13953
13954 (scm_quotient, scm_remainder): Fixed the fixnum-min / (abs
13955 fixnum-min) special case.
13956
13957 (scm_big_and): Fix for negative first parameter.
13958
13959 (scm_bit_extract): Fix for fixnum paramters.
13960 Thanks to Rob Browning for the bug report.
13961
13962 (scm_init_numbers): Initialize abs_most_negative_fixnum.
13963
debe0dc2
DH
139642001-01-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
13965
13966 * symbols.c (scm_symbol_bound_p): Fixed comment.
13967 Thanks to Chris Cramer.
13968
8a39e3fc
DH
139692001-01-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
13970
13971 * smob.[ch] (scm_make_smob_type): Return type is scm_bits_t now.
13972 Thanks to Bill Schottstaedt.
13973
322ec19d
ML
139742001-01-11 Michael Livshin <mlivshin@bigfoot.com>
13975
9a5fa6e9 13976 from Matthias Köppe:
1c938eb8 13977
322ec19d
ML
13978 * objects.h (SCM_SET_ENTITY_SETTER): new macro. SCM_ENTITY_SETTER
13979 casts its result, so doesn't yield an lvalue per ANSI C.
13980
13981 * goops.c (s_scm_sys_set_object_setter_x): use
13982 SCM_SET_ENTITY_SETTER.
13983 (clear_method_cache): use SCM_SET_ENTITY_PROCEDURE.
13984
13985 * gc.h (SCM_GC_SET_CARD_BVEC): new macro. SCM_GC_CARD_BVEC casts
13986 its result, so doesn't yield an lvalue per ANSI C.
13987 (SCM_GC_SET_CARD_FLAGS): ditto for SCM_GC_GET_CARD_FLAGS.
13988 (SCM_GC_CLR_CARD_FLAGS): redefined in terms of
13989 SCM_GC_SET_CARD_FLAGS.
13990 (SCM_GC_SET_CARD_FLAG, SCM_GC_CLR_CARD_FLAGS): ditto.
13991
13992 * gc.c (INIT_CARD): use the explicit setter macro to set the bvec.
13993
60d02d09
GH
139942001-01-08 Gary Houston <ghouston@arglist.com>
13995
13996 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): new macro.
13997 * ioext.c (scm_read_string_x_partial, scm_read_delimited_x),
13998 socket.c (scm_recvfrom): use the new macro, plus minor docstring
13999 changes.
14000 * ioext.c (scm_read_string_x_partial): don't crash if -1 is supplied
14001 for fdes. if current input port is used, check that it's a file
14002 port.
14003
c2da2648
GH
140042001-01-06 Gary Houston <ghouston@arglist.com>
14005
14006 * ioext.c (scm_read_string_x_partial): new procedure, implements
14007 read-string!/partial.
14008 * ports.c (scm_take_from_input_buffers): new procedure used by
14009 scm_read_string_x_partial.
14010 (scm_drain_input): use scm_take_from_input_buffers.
14011
4651d663
MV
140122001-01-06 Marius Vollmer <mvo@zagadka.ping.de>
14013
14014 * validate.h (SCM_VALIDATE_NUMBER): New.
14015
c0a5d888
ML
140162001-01-03 Michael Livshin <mlivshin@bigfoot.com>
14017
14018 * guardians.c (F_GREEDY, F_LISTED, F_DESTROYED, GREEDY_P,
14019 SET_GREEDY, LISTED_P, SET_LISTED, CLR_LISTED, DESTROYED_P,
14020 SET_DESTROYED): new defines/macros.
14021 (GUARDIAN_LIVE, GUARDIAN_ZOMBIES, GUARDIAN_NEXT): deleted.
14022 (add_to_live_list): takes a `guardian_t *' now, not SCM.
14023 (guardian_print): print more info.
14024 (guardian_apply): check if the guardian is destroyed, and throw an
14025 error if so. take one more optional argument `throw_p'.
14026 (scm_guard): depending on the value of `throw_p', return a boolean
14027 result.
14028 (scm_get_one_zombie): remove redundant property test.
14029 (guardian_t): represent the various (currently 3, I hope nothing
14030 more gets added) boolean fields as bit flags.
14031 (scm_guardian_destroyed_p, scm_guardian_greedy_p): new predicates.
14032 (scm_destroy_guardian_x): new procedure.
14033
14034 * guardians.h: added prototypes for `scm_guardian_greedy_p' and
14035 `scm_guardian_destroyed_p'. changed prototype for `scm_guard'.
14036
0c6d2191
GH
140372001-01-01 Gary Houston <ghouston@arglist.com>
14038
14039 * fports.c (fport_write): bugfix: handle short writes for
14040 unbuffered ports too. optimize the buffered case by minimizing
14041 the number of write/flush calls.
14042 (write_all): new helper procedure.
14043
a51fe247 14044The ChangeLog continues in the file: "ChangeLog-2000"
d9f71a07
LC
14045
14046;; Local Variables:
14047;; coding: utf-8
14048;; End: