replace port table with weak hash table. This simplifies
[bpt/guile.git] / libguile / ChangeLog
CommitLineData
b87e6d04
HWN
12007-08-26 Han-Wen Nienhuys <hanwen@lilypond.org>
2
5dbc6c06
HWN
3 * fports.c gc-card.c gc.c gc.h ioext.c ports.c ports.h weaks.h
4 gc.c: replace port table with weak hash table. This simplifies
5 memory management, and fixes freed cells appearing in
6 port-for-each output.
7
b87e6d04
HWN
8 * init.c (cleanup_for_exit): abort cleanup if init_mutex is still
9 held.
10
2baec6a9
LC
112007-08-23 Ludovic Courtès <ludo@gnu.org>
12
492faee1
LC
13 * read.c (scm_read_quote): Record position and copy source
14 expression when asked to. Reported by Kevin Ryde.
15
2baec6a9
LC
16 * stime.c: Define `_REENTRANT' only if not already defined.
17
1f11c61a
KR
182007-08-21 Kevin Ryde <user42@zip.com.au>
19
20 * gc-card.c (scm_i_card_statistics): Record scm_tc7_number types as
21 tc16 values so big, real, complex and fraction can be distinguished.
22
23 (scm_i_tag_name): Return "number" for scm_tc7_number, not NULL. NULL
24 was making numbers come out as "type 23" in gc-live-object-stats.
25 Fix tests of the tc16 number types, they were checked under
26 scm_tc7_number, but the values went down the tag>=255 smob case.
27 Put smob case under scm_tc7_smob instead of using tag>=255, per
28 recommendation in comments with scm_tc7_smob to use symbolic values.
29 Use SCM_TC2SMOBNUM to extract scm_smobs index, instead of explicit
30 code. Lose some unnecessary "break" statements.
31
32 (scm_i_card_statistics): Use scm_hashq_create_handle_x and modify the
33 element returned, rather than two lookups scm_hashq_ref and
34 scm_hashq_set_x.
35
949ec9f9
KR
362007-08-17 Kevin Ryde <user42@zip.com.au>
37
38 * stime.c: Add #define _REENTRANT, to get gmtime_r() prototype on
39 solaris 2.6. Reported by anirkko.
40
6caac03c
LC
412007-07-29 Ludovic Courtès <ludo@gnu.org>
42
43 * Makefile.am (INCLUDES): Added Gnulib includes.
44 (gnulib_library): New.
45 (libguile_i18n_v_@LIBGUILE_I18N_MAJOR@_la_LIBADD): Added
46 `$(gnulib_library)'.
47 (libguile_la_LIBADD): Likewise.
48
49 * posix.c: Don't define `_GNU_SOURCE' since `gl_EARLY' arranges
50 to define it when available.
51 * srfi-14.c: Likewise.
f7439099
LC
52 * i18n.c: Likewise. Include Gnulib's <alloca.h>
53 * eval.c: Include Gnulib's <alloca.h>.
54 * filesys.c: Likewise.
55 * read.c: Don't include <strings.h> and don't provide an
56 `strncasecmp ()' replacement; use Gnulib's <string.h> and
57 `strncasecmp ()' instead.
6caac03c 58
e08f3f7a
LC
592007-07-25 Ludovic Courtès <ludo@gnu.org>
60
61 * eval.c (macroexp): When `scm_ilength (res) <= 0', return
62 immediately. This used to produce a circular memoized
63 expression, e.g., for `(set (quote x) #t)'.
64
7337d56d
LC
652007-07-22 Ludovic Courtès <ludo@gnu.org>
66
67 Overhauled the reader, making it faster.
68
69 * gdbint.c (tok_buf, tok_buf_mark_p): Removed.
70 (gdb_read): Don't use a token buffer. Use `scm_read ()' instead
71 of `scm_lreadr ()'.
72
73 * read.c: Overhauled. No longer use a token buffer. Use a
74 on-stack C buffer in the common case and use Scheme strings when
75 larger buffers are needed.
76 * read.h (scm_grow_tok_buf, scm_flush_ws, scm_casei_streq,
77 scm_lreadr, scm_lreadrecparen): Removed.
78 (scm_i_input_error): Marked as `SCM_NORETURN'.
79
df449722
LC
802007-07-15 Ludovic Courtès <ludo@gnu.org>
81
82 * script.c (scm_compile_shell_switches): Updated copyright year.
83
b1f57ea4
LC
842007-07-11 Ludovic Courtès <ludo@gnu.org>
85
86 * goops.c (scm_sys_method_more_specific_p): Added docstring.
87 Make sure LEN is greater than or equal to the minimum length of
88 specializers of M1 and M2. This fixes a segfault later on in
89 `more_specificp ()' if TARGS is too small. Reported by Marco
90 Maggi <marco.maggi-ipsu@poste.it>.
91
d3075c52
LC
922007-06-26 Ludovic Courtès <ludo@gnu.org>
93
94 * fluids.c (next_fluid_num): When growing ALLOCATED_FLUIDS, make
95 sure to free the previous array after the new one has been
96 installed. This leak is made visible by running
97 "(define l (map (lambda (i) (make-fluid)) (iota 255)))"
98 from the REPL within Valgrind.
99
7a5fb796
LC
1002007-06-12 Ludovic Courtès <ludo@chbouib.org>
101
102 * socket.c (scm_inet_ntop): In the `AF_INET' case, declare `addr4'
103 as an `scm_t_uint32' rather than re-using `addr6'. This fixes a
104 bus error on SPARC (and possibly others) due to unaligned access.
105
a1ef7406
LC
1062007-06-07 Ludovic Courtès <ludovic.courtes@laas.fr>
107
108 * posix.c (scm_ttyname): Check whether RESULT is NULL before
109 making a string from it (reported by Dan McMahill). Don't call
110 `scm_from_locale_string ()' before the mutex is released.
111
3dcf3373
LC
1122007-05-26 Ludovic Courtès <ludo@chbouib.org>
113
114 * eval.c (scm_m_define): Updated comment. Changed order for value
115 evaluation and `scm_sym2var ()' call, which is perfectly valid per
116 R5RS. This reverts the change dated 2004-04-22 by Dirk Herrmann.
117
608860a5
LC
1182007-05-05 Ludovic Courtès <ludo@chbouib.org>
119
120 Implemented lazy duplicate binding handling.
121
122 * modules.c (scm_export): Renamed to...
123 (scm_module_export): This. Now public.
124 (module_variable): Removed.
125 (default_duplicate_binding_procedures_var): New variable.
126 (default_duplicate_binding_handlers, resolve_duplicate_binding,
127 module_imported_variable, scm_module_local_variable,
128 scm_module_variable): New functions.
129 (scm_module_import_interface): Rewritten.
130 (scm_module_reverse_lookup): Exported as a Scheme function.
131 * modules.h (scm_module_index_duplicate_handlers,
132 scm_module_index_import_obarray): New macros.
133 (scm_module_variable, scm_module_local_variable,
134 scm_module_export): New declarations.
135
1911e3da
LC
1362007-04-17 Ludovic Courtès <ludovic.courtes@laas.fr>
137
138 * numbers.c: Commented out trailing `HAVE_COMPLEX_DOUBLE' after
139 `#endif'. Use `#ifndef HAVE_XXX' rather than `#if !HAVE_XXX'.
140
1d8ce4c0
HWN
1412007-04-09 Han-Wen Nienhuys <hanwen@lilypond.org>
142
143 * numbers.c (carg): provide carg, cexp, clog in case they are
144 missing.
145
afb49959
LC
1462007-03-12 Ludovic Courtès <ludovic.courtes@laas.fr>
147
148 * i18n.c (scm_nl_langinfo): `#ifdef'd uses of `GROUPING',
149 `FRAC_DIGITS', etc., which are GNU extensions. Reported by
150 Steven Wu.
151
b3aa4626
KR
1522007-03-08 Kevin Ryde <user42@zip.com.au>
153
154 * struct.c, struct.h (scm_make_vtable): New function, providing
155 `make-vtable'.
156 * stacks.c (scm_init_stacks): Use it.
157
1582007-03-06 Kevin Ryde <user42@zip.com.au>
159
160 * struct.c (scm_make_struct): Check for R,W,O at end of layout when
161 allocating a tail array. If there's no such then those tail fields
162 are uninitialized and garbage SCMs there can cause a segv if printed
163 (after fetching with struct-ref).
164
1652007-02-22 Kevin Ryde <user42@zip.com.au>
166
167 * scmsigs.c (scm_sleep): In docstring, cross refence usleep.
168 (scm_usleep): Update docstring per manual, cross reference sleep.
169
170 * struct.c (scm_make_struct): Move SCM_CRITICAL_SECTION_END up so that
171 scm_struct_init is not within that section. scm_struct_init can
172 thrown an error, which within a critical section results in an
173 abort().
174
03291373
NJ
1752007-02-19 Neil Jerram <neil@ossau.uklinux.net>
176
177 * Makefile.am (noinst_HEADERS): Add private-options.h, so that it
178 is included in the distribution.
652dbce6 179 (noinst_HEADERS): And the same for eval.i.c.
03291373 180
a2f00b9b
LC
1812007-01-31 Ludovic Courtès <ludovic.courtes@laas.fr>
182
183 * i18n.c: Include "libguile/threads.h" and "libguile/posix.h"
184 unconditionally. Include <langinfo.h> and <nl_types.h> when
185 available.
186 (SCM_I18N_STRINGIFY, SCM_LOCALE_CATEGORY_MASK,
187 SCM_LIST_OR_INTEGER_P): New macros.
188 (LC_*_MASK): When `USE_GNU_LOCALE_API' is undefined, define them
189 as powers of two instead of `(1 << LC_*)'.
190 (scm_i_locale_free): New function/macro.
191 (scm_global_locale): New global variable.
192 (smob_locale_free): Use `scm_i_locale_free ()'.
193 (smob_locale_mark): Check whether the SMOB is `%global-locale'.
194 (get_current_locale_settings): Return `EINVAL' instead of `errno'
195 when `setlocale' fails.
196 (restore_locale_settings): Likewise.
197 (install_locale_categories): Likewise.
198 (install_locale): Likewise. Stop the locale stack traversal when
199 all categories have been handled.
200 (get_current_locale, category_to_category_mask,
201 category_list_to_category_mask): New function.
202 (scm_make_locale): Use them. Accept both lists of `LC_*' values
203 and single `LC_*' values as the first argument. Handle the case
204 where BASE_LOCALE is `%global-locale'. When `USE_GNU_LOCALE_API',
205 duplicate C_BASE_LOCALE before using it.
206 (scm_nl_langinfo, define_langinfo_items): New functions.
207 (scm_init_i18n): When `HAVE_NL_LANGINFO', add feature
208 `nl-langinfo' and invoke `define_langinfo_items ()'.
209 * i18n.h (scm_global_locale, scm_nl_langinfo): New declarations.
210 * posix.c: Include <xlocale.h> when available.
211 (scm_i_locale_mutex): Always define it. Statically initialized.
212 (scm_set_locale): Invoke `scm_i_to_lc_category ()' before
213 acquiring the locale mutex.
214 (scm_init_posix): No longer initialize SCM_I_LOCALE_MUTEX here.
215
b3aa4626
KR
2162007-01-27 Kevin Ryde <user42@zip.com.au>
217
218 * ports.c (scm_port_line, scm_set_port_line_x), read.c
219 (scm_i_input_error, scm_lreadr, scm_lreadrecparen): Corrections to
220 port line number type, should be "long" not "int", as per line_number
221 field of scm_t_port. (Makes a difference only on 64-bit systems, and
222 only then for a linenum above 2Gig.)
223
2a8d66b0
HWN
2242007-01-25 Han-Wen Nienhuys <hanwen@lilypond.org>
225
226 * vector.c: remove comment as per kryde's request.
227
b3aa4626
KR
2282007-01-25 Kevin Ryde <user42@zip.com.au>
229
230 * sort.c (scm_stable_sort): Return empty list for input empty list, as
231 done in guile 1.6 and as always done by plain `sort'. Was falling
232 through to SCM_WRONG_TYPE_ARG. Reported by Ales Hvezda.
233
cb90e2cb
HWN
2342007-01-22 Han-Wen Nienhuys <hanwen@lilypond.org>
235
8cb7939c
HWN
236 * vectors.c (s_scm_vector_move_right_x): complain about naming.
237
d00a0704
HWN
238 * srcprop.c: regularize comments.
239
3d178652
HWN
240 * eval.c: remove superfluous ifndef DEVAL.
241
243ebb61
HWN
242 * private-options.h: idem.
243
244 * eval.i.c: copyright nitpicking.
245
0ee05b85
HWN
246 * eval.c: distangle. move duplicate code to eval.i.c and include
247 twice.
248
249 * eval.i.c: new file.
250
22fc179a
HWN
251 * backtrace.c, debug.c, debug.h, deprecation.c, eq.c, eval.c
252 eval.h, gsubr.c, init.c, macros.c, print.c, print.h, read.c,
253 read.h, stacks.c, symbols.c, throw.c: use private-options.h
254
255 * private-options.h: new file: contain hardcoded option
256 definitions.
257
cb90e2cb
HWN
258 * private-gc.h: add FSF header.
259
62560650
HWN
2602007-01-19 Han-Wen Nienhuys <hanwen@lilypond.org>
261
72f19c26
HWN
262 * debug.h (SCM_RESET_DEBUG_MODE): switch to debugging if
263 memoize-symbol is set.
264
265 * eval.h (SCM_MEMOIZE_HDLR): add macros for memoize symbol trap.
266
267 * eval.c (CEVAL): add memoize_symbol trap.
268
03347a97
HWN
269 * options.c (scm_options_try): new function. This allows error
270 reporting before changing options in a critical section.
271
b0763985
HWN
272 * srcprop.c: use double cell for storing source-properties. Put
273 filename in the plist, and share between srcprops if possible.
274 Remove specialized storage.
275
276 * srcprop.h: remove macros without SCM_ prefix from
277 interface. Remove specialized storage/type definitions.
278
62560650
HWN
279 * read.c: idem.
280
281 * print.c: idem.
282
283 * eval.c: terminate option lists with 0.
284
285 * options.c: remove n (for length) from scm_option_X
286 functions. Detect option list length by looking for NULL name.
287
42ddb3cb
LC
2882007-01-19 Ludovic Courtès <ludovic.courtes@laas.fr>
289
290 * struct.c (scm_i_struct_equalp): Skip comparison if both FIELD1
291 is equal to S1 and FIELD2 is equal to S2. This avoids infinite
292 recursion when comparing `s' fields, as the REQUIRED_VTABLE_FIELDS
293 added by `make-vtable-vtable'. Reported by Marco Maggi.
294
937038e8
HWN
2952007-01-18 Han-Wen Nienhuys <hanwen@lilypond.org>
296
297 * throw.c (scm_ithrow): more refined error message: print symbols
298 too.
299
23d72566
KR
3002007-01-16 Kevin Ryde <user42@zip.com.au>
301
302 * feature.c, feature.h (scm_set_program_arguments_scm): New function,
303 implementing `set-program-arguments'.
304
305 * filesys.c (scm_init_filesys): Use scm_from_int rather than
306 scm_from_long for O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_EXCL,
307 O_NOCTTY, O_TRUNC, O_APPEND, O_NONBLOCK, O_NDELAY, O_SYNC and
308 O_LARGEFILE. These are all int not long, per arg to open().
309 (scm_init_filesys): Use scm_from_int rather than scm_from_long for
310 F_DUPFD, F_GETFD, F_SETFD, F_GETFL, F_SETFL, F_GETOWN, F_SETOWN, these
311 are all ints (per command arg to fcntl). Likewise FD_CLOEXEC which is
312 an int arg to fcntl.
313
314 * posix.c (scm_putenv): Correction to "len" variable, was defined only
315 for __MINGW32__ but used under any !HAVE_UNSETENV (such as solaris).
316 Move it to where it's used. Reported by Hugh Sasse.
317
318 * regex-posix.c (scm_regexp_exec): Remove SCM_CRITICAL_SECTION_START
319 and SCM_CRITICAL_SECTION_END, believe not needed. Their placement
320 meant #\nul in the input (detected by scm_to_locale_string) and a bad
321 flags arg (detected by scm_to_int) would throw from a critical
322 section, causing an abort().
323
324 * regex-posix.c (scm_init_regex_posix): Use scm_from_int for
325 REG_BASIC, REG_EXTENDED, REG_ICASE, REG_NEWLINE, REG_NOTBOL,
326 REG_NOTEOL; they're all ints not longs (per args to regcomp and
327 regexec).
328
a2c40dc7
HWN
3292007-01-10 Han-Wen Nienhuys <hanwen@lilypond.org>
330
331 * throw.c (scm_ithrow): print out key symbol and string arguments
332 when error happens inside a critical section, and document why.
333
391f57e6
HWN
3342007-01-06 Han-Wen Nienhuys <hanwen@lilypond.org>
335
336 * read.c (s_scm_read_hash_extend): document #f argument to
337 read-hash-extend.
338
23d72566
KR
3392007-01-04 Kevin Ryde <user42@zip.com.au>
340
341 * deprecated.h (scm_create_hook), version.h.in (scm_major_version,
342 scm_minor_version, scm_micro_version, scm_effective_version,
343 scm_version, scm_init_version): Use SCM_API instead of just extern,
344 for the benefit of mingw. Reported by Cesar Strauss.
345
93632e3c
HWN
3462007-01-03 Han-Wen Nienhuys <hanwen@lilypond.org>
347
348 * gc.c (s_scm_gc_stats): return an entry for total-cells-allocated
349 too.
350 (gc_update_stats): update scm_gc_cells_allocated_acc too.
351
23d72566
KR
3522006-12-27 Kevin Ryde <user42@zip.com.au>
353
354 * threads.c (get_thread_stack_base): In mingw with pthreads we can use
355 the basic scm_get_stack_base. As advised by Nils Durner.
356
357 * threads.c (get_thread_stack_base): Add a version using
358 pthread_get_stackaddr_np (when available), for the benefit of MacOS.
359 As advised by Heikki Lindholm.
360
361 * scmsigs.c (signal_delivery_thread): Restrict scm_i_pthread_sigmask
362 to HAVE_PTHREAD_SIGMASK, it doesn't exist on mingw. Reported by Nils
363 Durner.
364
3652006-12-24 Kevin Ryde <user42@zip.com.au>
366
367 * posix.c (scm_kill): When only raise() is available, throw an ENOSYS
368 error if pid is not our own process, instead of silently doing nothing.
369
370 * print.c (scm_write, scm_display, scm_write_char): Disable port close
371 on EPIPE. This was previously disabled but introduction of HAVE_PIPE
372 check in configure.in unintentionally enabled it. Believe that
373 testing errno after scm_prin1 or scm_putc is bogus, a long ago error
374 can leave errno in that state. popen.test "no duplicates" output test
375 provoked that.
376
e2bf3b19
HWN
3772006-12-23 Han-Wen Nienhuys <hanwen@lilypond.org>
378
379 * numbers.c (scm_i_fraction_reduce): move logic into
380 scm_i_make_ratio(), so fractions are only read.
381 scm_i_fraction_reduce() modifies a fraction when reading it. A
382 race condition might lead to fractions being corrupted by reading
383 them concurrently.
384
385 Also, the REDUCED bit alters the SCM_CELL_TYPE(), making
386 comparisons between reduced and unreduced fractions go wrong.
387
388 * numbers.h: remove SCM_FRACTION_SET_NUMERATOR,
389 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
390 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
391 SCM_FRACTION_REDUCED.
392
23d72566
KR
3932006-12-16 Kevin Ryde <user42@zip.com.au>
394
395 * scmsigs.c (scm_raise): Use raise() rather than kill(), as this is
396 more direct for a procedure called raise.
397 (kill): Remove mingw fake fallback.
398
3992006-12-15 Kevin Ryde <user42@zip.com.au>
400
401 * scmsigs.c: Conditionalize process.h, add io.h believe needed for
402 _pipe on mingw.
403
4042006-12-14 Kevin Ryde <user42@zip.com.au>
405
406 * threads.c (thread_print): Cope with the case where pthread_t is a
407 struct, as found on mingw. Can't just cast to size_t for printing.
408 Reported by Nils Durner.
409
410 * scmsigs.c: Add <fcntl.h> and <process.h> needed by mingw. Copy the
411 fallback pipe() using _pipe() from posix.c. Reported by Nils Durner.
412
4132006-12-13 Kevin Ryde <user42@zip.com.au>
414
415 * eval.c (scm_m_define): Set 'name procedure property on any
416 scm_procedure_p, not just SCM_CLOSUREP. In particular this picks up
417 procedures with setters as used in srfi-17.
418
419 * posix.c (scm_crypt): Check for NULL return from crypt(), which the
420 linux man page says is a possibility.
421
f30e1bdf
LC
4222006-12-12 Ludovic Courtès <ludovic.courtes@laas.fr>
423
424 * libguile/unif.c (read_decimal_integer): Let RESP be SIGN * RES
42ddb3cb 425 instead of RES (reported by Szavai Gyula). This allows the use of
f30e1bdf
LC
426 negative lower bounds.
427 (scm_i_read_array): Make sure LEN is non-negative (reported by
42ddb3cb 428 Szavai Gyula).
f30e1bdf
LC
429
430 (scm_array_in_bounds_p): Iterate over S instead of always
431 comparing indices with the bounds of S[0]. This fixes
432 `array-in-bounds?' for arrays with a rank greater than one and
433 with different lower bounds for each dimension.
434
23d72566
KR
4352006-12-05 Kevin Ryde <user42@zip.com.au>
436
437 * numbers.c (scm_product): For flonum*inum and complex*inum, return
438 exact 0 if inum==0. Already done for inum*flonum and inum*complex,
439 and as per R5RS section "Exactness".
440
4412006-12-03 Kevin Ryde <user42@zip.com.au>
442
443 * Makefile.am (.c.doc): Remove the "test -n" apparently attempting to
444 allow $AWK from the environment to override. It had syntax gremlins,
445 and the presence of a $(AWK) variable set by AC_PROG_AWK in the
446 Makefile stopped it having any effect. Use just $(AWK), which can be
447 overridden with "make AWK=xxx" in the usual way if desired.
448
22be72d3
LC
4492006-11-29 Ludovic Courtès <ludovic.courtes@laas.fr>
450
451 * libguile/vectors.c (scm_vector_to_list): Fixed list
452 construction: elements were not copied when INC is zero (see
453 "shared array" example in `vectors.test'). Reported by
454 Szavai Gyula.
455
b89c4943
LC
4562006-11-18 Ludovic Courtès <ludovic.courtes@laas.fr>
457
458 * Makefile.am (lib_LTLIBRARIES): Added `libguile-i18n-v-XX.la'.
459 (libguile_la_SOURCES): Added `gettext.c', removed `i18n.c'.
460 (libguile_i18n_v_XX_la_SOURCES, libguile_i18n_v_XX_la_CFLAGS,
461 libguile_i18n_v_XX_la_LIBADD, libguile_i18n_v_XX_la_LDFLAGS): New.
462 (DOT_X_FILES): Added `gettext.x'.
463 (DOT_DOC_FILES): Likewise.
464 (EXTRA_libguile_la_SOURCES): Added `locale-categories.h'.
465 (modinclude_HEADERS): Added `gettext.h'.
466 (EXTRA_DIST): Added `libgettext.h'.
467
468 * gettext.h: Renamed to...
469 * libgettext.h: New file.
470
471 * i18n.c: Renamed to...
472 * gettext.c: New file.
473
474 * i18n.h: Renamed to...
475 * gettext.h: New file.
476
477 * i18n.c, i18n.h, locale-categories.h: New files.
478
479 * init.c: Include "libguile/gettext.h" instead of
480 "libguile/i18n.h".
481 (scm_i_init_guile): Invoke `scm_init_gettext ()' instead of
482 `scm_init_i18n ()'.
483
484 * posix.c: Include "libguile/gettext.h" instead of
485 "libguile/i18n.h" Test `HAVE_NEWLOCALE' and `HAVE_STRCOLL_L'.
486 (USE_GNU_LOCALE_API): New macro.
487 (scm_i_locale_mutex): New variable.
488 (scm_setlocale): Lock and unlock it around `setlocale ()' calls.
489
490 * posix.h: Include "libguile/threads.h".
491 (scm_i_locale_mutex): New declaration.
492
f3e3f530
NJ
4932006-11-17 Neil Jerram <neil@ossau.uklinux.net>
494
495 * script.c (scm_shell_usage): Note need for subscription to bug-guile@gnu.org.
496
d9f71a07
LC
4972006-11-08 Ludovic Courtès <ludovic.courtes@laas.fr>
498
499 * libguile/gc-freelist.c (scm_i_adjust_min_yield): Take two
500 "sweep_stats" arguments; use them instead of accessing the global
501 variables `scm_gc_cells_collected' and `scm_gc_cells_collected_1'.
502
503 * libguile/gc-segment.c (scm_i_sweep_some_cards): Reset SWEEP
504 before each iteration of the loop.
505 (scm_i_sweep_some_segments): Reset SWEEP at each iteration.
506 (scm_i_get_new_heap_segment): Take an additional argument
507 SWEEP_STATS. Compute MIN_CELLS as a function of it.
508
509 * libguile/gc.c (scm_gc_cells_collected,
510 scm_gc_cells_collected_1): Removed.
511 (scm_i_gc_sweep_stats, scm_i_gc_sweep_stats_1): New.
512 (scm_gc_cells_marked_acc, scm_gc_cells_swept_acc,
513 scm_gc_time_taken, scm_gc_mark_time_taken, scm_gc_times,
514 scm_gc_cell_yield_percentage, protected_obj_count): Made `static'.
515 (scm_gc_stats): Use `scm_i_gc_sweep_stats' instead of
516 `scm_gc_cells_(collected|swept)'.
517 (gc_update_stats): New.
518 (gc_end_stats): Use `scm_i_gc_sweep_stats' and
519 `scm_i_gc_sweep_stats_1' instead of the former globals.
520 (scm_gc_for_newcell): Invoke `gc_update_stats ()' after each
521 `scm_i_sweep_some_segments' call. This fixes a bug where the GC
522 would keep allocating new segments instead of re-using collected
523 cells (because `scm_gc_cells_collected' would remain zero).
524
525 * libguile/gc.h (scm_gc_cells_swept, scm_gc_cells_collected,
526 scm_gc_cell_yield_percentage): Removed.
527
528 * libguile/private-gc.h (scm_gc_cells_collected_1): Removed.
529 (scm_i_adjust_min_yield): Updated.
530 (scm_i_get_new_heap_segment): Updated.
531
dd18d312
NJ
5322006-11-02 Neil Jerram <neil@ossau.uklinux.net>
533
534 * modules.c: Correct comment saying that low-level environments
535 will be used "in the next release".
536
537 * init.c: Comment out #include of environments.h.
538 (scm_i_init_guile): Comment out scm_environments_prehistory() and
539 scm_init_environments() calls.
540
541 * Makefile.am (libguile_la_SOURCES): Remove environments.c.
542 (DOT_X_FILES): Remove environments.x.
543 (DOT_DOC_FILES): Remove environments.doc.
544 (modinclude_HEADERS): Remove environments.h.
545
9a5fa6e9
NJ
5462006-10-25 Neil Jerram <neil@ossau.uklinux.net>
547
548 IA64 HP-UX GC patch from Hrvoje Nikšić. (Thanks!)
549
550 * threads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp() and
551 scm_ia64_register_backing_store_base() instead of Linux-specific
552 implementations.
553
554 * gc.h (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp):
555 New declarations.
556
557 * gc.c (__libc_ia64_register_backing_store_base): Declaration
558 removed.
559 (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp): New, with
560 implementations for Linux and HP-UX.
561
562 * coop-pthreads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp()
563 and scm_ia64_register_backing_store_base() instead of
564 Linux-specific implementations.
565
566 * continuations.h (__libc_ia64_register_backing_store_base):
567 Declaration removed.
568 (scm_t_contregs): New "fresh" field.
569
570 * continuations.c (ia64_getcontext): Removed.
571 (scm_make_continuation): Use continuation fresh field instead of
572 interpreting getcontext return values (which isn't portable). Use
573 scm_ia64_ar_bsp() and scm_ia64_register_backing_store_base()
574 instead of Linux-specific implementations.
575 (copy_stack_and_call): Use scm_ia64_register_backing_store_base()
576 instead of Linux-specific implementation.
577
578 * _scm.h (__ia64__): Also detect __ia64.
579
8ab3d8a0
KR
5802006-10-03 Kevin Ryde <user42@zip.com.au>
581
582 * eval.c (SCM_APPLY): For scm_tc7_subr_2o, throw wrong-num-args on 0
583 arguments or 3 or more arguments. Previously 0 called proc with
584 SCM_UNDEFINED, and 3 or more silently used just the first 2.
585
5862006-09-28 Kevin Ryde <user42@zip.com.au>
587
588 * fports.c, ports.c (ftruncate): Use "HAVE_CHSIZE && ! HAVE_FTRUNCATE"
589 for chsize fallback, instead of hard-coding mingw. Mingw in fact
590 supplies ftruncate itself these days.
591
592 * ports.c (fcntl.h): Can include this unconditionally, no need for
593 __MINGW32__.
594
595 * ports.c (truncate): Conditionalize on "HAVE_FTRUNCATE && !
596 HAVE_TRUNCATE" so as not to hard-code mingw. Use "const char *" and
597 "off_t" for parameters, per usual definition of this function, rather
598 than "char *" and "int". Use ftruncate instead of chsize. Check for
599 error on final close.
600
6012006-09-27 Kevin Ryde <user42@zip.com.au>
602
603 * numbers.c (scm_log10): Check HAVE_CLOG10, clog10() is not available
604 in mingw.
605
606 * posix.c (scm_execl, scm_execlp, scm_execle): Cast "const char *
607 const *" for mingw to suppress warnings from gcc (which are errors
608 under the configure default -Werror). Reported by Nils Durner.
609
6102006-09-26 Kevin Ryde <user42@zip.com.au>
611
612 * _scm.h (scm_to_off64_t, scm_from_off64_t): New macros.
613 * fports.c (scm_open_file): Use open_or_open64.
614 (fport_seek_or_seek64): New function, adapting fport_seek.
615 * fports.c, fports.h (scm_i_fport_seek, scm_i_fport_truncate): New
616 functions.
617 * ports.c (scm_seek, scm_truncate_file): Use scm_i_fport_seek and
618 scm_i_fport_truncate to allow 64-bit seeks and truncates on fports.
619
620 * ports.c (scm_truncate_file): Update docstring per manual.
621
6222006-09-23 Kevin Ryde <user42@zip.com.au>
623
624 * numbers.c, numbers.h (scm_log, scm_log10, scm_exp, scm_sqrt): New
625 functions.
626
9a5fa6e9 6272006-09-20 Ludovic Courtès <ludovic.courtes@laas.fr>
a17d2654
LC
628
629 * srfi-14.c: Include <config.h>. Define `_GNU_SOURCE'.
630 (make_predset, define_predset, make_strset, define_strset, false,
631 true): Removed.
632 (SCM_CHARSET_UNSET, CSET_BLANK_PRED, CSET_SYMBOL_PRED,
633 CSET_PUNCT_PRED, CSET_LOWER_PRED, CSET_UPPER_PRED,
634 CSET_LETTER_PRED, CSET_DIGIT_PRED, CSET_WHITESPACE_PRED,
635 CSET_CONTROL_PRED, CSET_HEX_DIGIT_PRED, CSET_ASCII_PRED,
636 CSET_LETTER_AND_DIGIT_PRED, CSET_GRAPHIC_PRED, CSET_PRINTING_PRED,
637 CSET_TRUE_PRED, CSET_FALSE_PRED, UPDATE_CSET): New macros.
638 (define_charset, scm_srfi_14_compute_char_sets): New functions.
639 (scm_init_srfi_14): Use `define_charset ()' instead of
640 `define_predset ()' and `define_strset ()'.
641
642 * srfi-14.h (scm_c_init_srfi_14): Removed.
643 (scm_srfi_14_compute_char_sets): New declaration.
644
645 * posix.h: Include "srfi-14.h".
646 (scm_setlocale): Invoke `scm_srfi_14_compute_char_sets ()' after a
647 successful `setlocale ()' call.
648
8ab3d8a0
KR
6492006-09-08 Kevin Ryde <user42@zip.com.au>
650
651 * socket.c (scm_init_socket): Add MSG_DONTWAIT.
652 (scm_recvfrom): Update docstring from manual.
653
418122ce
RB
6542006-08-31 Rob Browning <rlb@defaultvalue.org>
655
656 * ports.c (scm_c_port_for_each): Add a
657 scm_remember_upto_here_1(ports) at the end of the function to fix
658 a GC bug.
659
b5944f66
NJ
6602006-08-28 Neil Jerram <neil@ossau.uklinux.net>
661
662 * backtrace.c (scm_display_backtrace_with_highlights): Minor
663 improvements to docstring.
664 (scm_backtrace_with_highlights): Analogous improvements.
665
8ab3d8a0
KR
6662006-08-12 Kevin Ryde <user42@zip.com.au>
667
668 * gen-scmconfig.h.in (SCM_I_GSC_NEED_BRACES_ON_PTHREAD_ONCE_INIT):
669 New, set from configure.
670 * gen-scmconfig.c (SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT): New output
671 to scmconfig.h.
672 * pthread-threads.h (SCM_I_PTHREAD_ONCE_INIT): Use
673 SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT to cope with Solaris.
674 Reported by Claes Wallin.
675
b0b0deff
NJ
6762006-08-11 Neil Jerram <neil@ossau.uklinux.net>
677
678 * stacks.c (scm_last_stack_frame): Correct docstring (returns a
679 frame, not a stack).
680
8ab3d8a0
KR
6812006-07-25 Kevin Ryde <user42@zip.com.au>
682
683 * threads.c (get_thread_stack_base): Restrict HAVE_PTHREAD_GETATTR_NP
684 on pthreads version, since pthread_getattr_np not available on solaris
685 and macos. Reported by Claes Wallin.
686
6872006-07-24 Kevin Ryde <user42@zip.com.au>
688
689 * filesys.c (dirfd): Test with #ifndef rather than HAVE_DIRFD, since
690 it's a macro on MacOS X. Reported by Claes Wallin.
691
692 * posix.c (sethostname): Give prototype if not HAVE_DECL_SETHOSTNAME,
693 for the benefit of Solaris 10. Reported by Claes Wallin.
694
695 * socket.c (scm_htonl, scm_ntohl): Use scm_to_uint32 rather than
696 NUM2ULONG, to enforce 32-bit range check on systems with 64-bit long.
697
6982006-07-21 Kevin Ryde <user42@zip.com.au>
699
700 * eval.c, filesys.c (alloca): Update <alloca.h> etc blob, per current
701 autoconf recommendation. Should fix Solaris 10 reported by Claes
702 Wallin.
703
704 * threads.c: Include <string.h>, needed for memset() which is used by
705 FD_ZERO() on Solaris 10. Reported by Claes Wallin.
706
b4912378
RB
7072006-07-18 Rob Browning <rlb@defaultvalue.org>
708
709 * continuations.c: Add __attribute__ ((returns_twice)) to the
710 ia64_getcontext prototype so that gcc will make the right
711 arrangements and avoid an illegal instruction during
712 call-with-current-continuation.
713
9a5fa6e9 7142006-07-12 Ludovic Courtès <ludovic.courtes@laas.fr>
eaa94eaa
LC
715
716 * numbers.c (guile_ieee_init): Use regular ANSI C casts rather
717 than C++-style `X_CAST ()'. Patch posted by by Mike Gran.
718
8ab3d8a0
KR
7192006-07-08 Kevin Ryde <user42@zip.com.au>
720
721 * environments.c (core_environments_unobserve): Use if/else rather
722 than ?: for "SET" bits, avoiding complaints from AIX xlc compiler
723 about them not being rvalues. Reported by Mike Gran.
724
725 * Makefile.am (version.h): Don't use $< in an explicit rule, it's not
726 portable and in particular fails on OpenBSD and AIX (see autoconf
727 manual too). Reported by Mike Gran.
728
7292006-06-25 Kevin Ryde <user42@zip.com.au>
730
731 * stime.c (bdtime2c): tm_gmtoff is seconds East, so take negative of
732 tm:gmtoff which is seconds West. Reported by Aaron VanDevender.
733 (bdtime2c): Test HAVE_STRUCT_TM_TM_GMTOFF for tm_gmtoff, rather than
734 HAVE_TM_ZONE.
735 (scm_strptime): Use tm_gmtoff from the strptime result when that field
736 exists, it's set by glibc strptime "%s".
737
9a5fa6e9 7382006-06-13 Ludovic Courtès <ludovic.courtes@laas.fr>
d15ad007
LC
739
740 * eq.c: Include "struct.h", "goops.h" and "objects.h".
741 (scm_equal_p): Invoke `scm_i_struct_equalp ()' on structures that
742 are not GOOPS instances.
743 * struct.c: Include "eq.h".
744 (scm_free_structs): Use `SCM_STRUCT_VTABLE_DATA ()' instead of
745 hand-written code.
746 (scm_i_struct_equalp): New.
747 * struct.h (scm_i_struct_equalp): New declaration.
748
c862d0e0
KR
7492006-06-06 Kevin Ryde <user42@zip.com.au>
750
751 * Makefile.am (BUILT_SOURCES): Remove guile.texi, only used by
752 maintainers (with doc/maint/docstring.el). Fixes parallel "make -j2"
753 reported by Mattias Holm.
b4912378 754
c862d0e0
KR
7552006-06-03 Kevin Ryde <user42@zip.com.au>
756
757 * read.c (s_vector): Conditionalize on SCM_ENABLE_ELISP, to avoid
758 unused variable warning when elisp disabled. Reported by Ryan
759 VanderBijl.
760
761 * throw.c (scm_handle_by_message): Add dummy return value to avoid
762 compiler warning on cygwin. Reported by Ryan VanderBijl.
763
764 * Makefile.am (EXTRA_DOT_X_FILES): Typo in dependency rule, was a
765 duplicate of EXTRA_DOT_DOC_FILES.
766 (DOT_X_FILES, EXTRA_DOT_X_FILES, DOT_DOC_FILES, EXTRA_DOT_DOC_FILES):
767 Add scmconfig.h to dependencies, since these all run cpp. Helps a
768 parallel "make -j2". Reported by Mattias Holm.
769
7702006-05-30 Kevin Ryde <user42@zip.com.au>
771
772 * ports.c, ports.h (scm_set_port_mark, scm_set_port_free,
773 scm_set_port_print, scm_set_port_equalp, scm_set_port_flush,
774 scm_set_port_end_input, scm_set_port_close, scm_set_port_seek,
775 scm_set_port_truncate, scm_set_port_input_waiting): Use scm_t_bits for
776 port type descriptor, same as scm_make_port_type return value.
777
af4f8612
MV
7782006-05-30 Marius Vollmer <mvo@zagadka.de>
779
780 * eq.c (scm_equal_p): Use scm_array_equal_p explicitely when one
781 of the arguments is a array. This allows vectors to be equal to
782 one-dimensional arrays.
783
18bffcd0
MV
7842006-05-29 Marius Vollmer <mvo@zagadka.de>
785
786 * throw.c (scm_ithrow): When looking for the jmpbuf, first test
787 that we have a pair before accessing its cdr. Thanks to Bill
788 Schottstaedt!
789
c862d0e0
KR
7902006-05-28 Kevin Ryde <user42@zip.com.au>
791
792 * eval.c, filesys.c: Add malloc.h to get alloca() on mingw. Reported
793 by "The Senator".
794
7952006-05-27 Marius Vollmer <mvo@zagadka.de>
b0c0a310
MV
796
797 * srfi-4.c, strings.c: Replace SCM_C_INLINE with
798 SCM_C_INLINE_KEYWORD. Thanks to Mark Gran!
799
c862d0e0
KR
8002006-05-26 Kevin Ryde <user42@zip.com.au>
801
802 * fports.c (fport_input_waiting): For ioctl, check HAVE_IOCTL as well
803 as defined(FIONREAD), since mingw has FIONREAD but not ioctl().
804 Reported by "The Senator".
805 For select and ioctl, move fdes into those conditionals, to avoid
806 unused variable warning when neither of those used.
807
8082006-05-23 Kevin Ryde <user42@zip.com.au>
809
810 * fports.c: Remove "fwrite" declaration under "! HAVE_UNISTD_H".
811 It's unused and will be in stdio.h anyway (if it's anywhere).
812
8132006-05-20 Kevin Ryde <user42@zip.com.au>
814
815 * filesys.c (scm_stat2scm): Test #ifdef S_ISLNK directly, rather than
816 HAVE_S_ISLNK from configure (it was only a #ifdef test anyway).
817
818 * posix.c (scm_mknod): Test #ifdef S_IFLNK before using that (for
819 symlink). Probably can't create symlinks with mknod anyway though.
820
821 * inline.h (scm_is_pair): Add a workaround for i386 gcc 2.95 bad code
822 generation.
823
8242006-05-15 Kevin Ryde <user42@zip.com.au>
825
826 * simpos.c, simpos.h (scm_primitive__exit): New function.
827 (scm_primitive_exit): Update docstring, no longer the best exit after
828 a fork.
829
8302006-05-09 Kevin Ryde <user42@zip.com.au>
831
832 * numbers.c (scm_i_divide): For big/big wanting inexact, use mpq_get_d
833 rather than converting to doubles, to avoid inf or nan when the inputs
834 are too big for a double but the quotient does fit. This affects
835 conversions exact->inexact of big fractions.
836
837 * filesys.c (scm_open_fdes): Use open64.
838 (scm_init_filesys): Add O_LARGEFILE.
839
840 * ports.c (scm_seek): Use lseek64.
841 (scm_truncate_file): Use ftruncate64.
842
4a342b19
MV
8432006-05-08 Marius Vollmer <mvo@zagadka.de>
844
845 * private-gc.h (CELL_P): Also check that the potential pointer is
846 correctly aligned for a cell. Thanks to Miroslav Lichvar!
847
c862d0e0
KR
8482006-04-18 Rob Browning <rlb@defaultvalue.org>
849
850 * _scm.h: Add back error if the size of off_t is unknown. The bug
851 was actually in guile-readline's configuration.
852
8532006-04-18 Kevin Ryde <user42@zip.com.au>
854
855 * posix.c (scm_mkstemp): Update docstring from the manual, in
856 particular file mode 0600 is not guaranteed.
857
281ab5e2
KR
8582006-04-17 Kevin Ryde <user42@zip.com.au>
859
860 * _scm.h (scm_to_off_t, scm_from_off_t): No error if unknown off_t
861 size, to help the guile-readline build where off_t is unused.
862
2b829bbb
KR
8632006-04-16 Kevin Ryde <user42@zip.com.au>
864
865 * filesys.c (scm_stat2scm, scm_stat, scm_lstat): Use stat or stat64.
866 (scm_readdir): Use readdir64.
867 (scm_copy_file): Use open64 and fstat64, to cope with >2Gb files.
868 * ports.c (scm_truncate_file): Use truncate64. Correction truncate
869 and ftruncate take off_t not size_t.
870 * _scm.h (stat_or_stat64 etc): Macros for selecting LFS64 when
871 available.
872
8732006-04-06 Kevin Ryde <user42@zip.com.au>
874
875 * fports.c (scm_setvbuf): Fix for not _IOLBF, clear SCM_BUFLINE
9a5fa6e9 876 instead of toggling it. Reported by Ludovic Courtès.
2b829bbb
KR
877
8782006-03-26 Marius Vollmer <mvo@zagadka.de>
879
880 * threads.c (get_thread_stack_base): Use scm_get_stack_base
881 instead of accessing __libc_stack_end directly, and only do this
882 when pthread_attr_getstack is known not to work for the main
883 thread or when not using pthreads at all.
884
885 * gc_os_dep.c (scm_get_stack_base): Abort when the machine type is
886 unknown instead of returning NULL.
887
9a5fa6e9 8882006-03-21 Ludovic Courtès <ludovic.courtes@laas.fr>
2b829bbb
KR
889
890 * numbers.c (scm_i_mem2number): Renamed to
891 scm_c_locale_stringn_to_number.
892 * numbers.c, print.c, read.c: Updated callers.
893 * numbers.h: Update function declaration.
894
8952006-03-11 Neil Jerram <neil@ossau.uklinux.net>
896
897 * unif.c (string_set): Don't return in a void function. (Reported
898 by Mike Gran.)
899
900 * srfi-4.c (scm_uniform_vector_read_x): Declare base as char*
901 rather than void*, so we can do pointer arithmetic on it.
902 (Reported by Mike Gran.)
903 (s_scm_uniform_vector_write): Ditto.
904
9052006-03-10 Neil Jerram <neil@ossau.uklinux.net>
906
907 * unif.c (scm_make_shared_array): Don't use SCM_I_ARRAY_BASE when
908 oldra is not an array. (Reported by Steve Juranich.)
909
910 * threads.c (do_unlock): Renamed from "unlock", which is defined
911 in unistd.h on QNX. (Reported by Matt Kraai.)
912
9132006-03-04 Kevin Ryde <user42@zip.com.au>
914
915 * deprecated.c (scm_i_defer_ints_etc): Show SCM_DEFER_INTS in message,
916 not SCM_CRITICAL_SECTION_START.
917
918 * eval.c, posix.c: Change comments from C++ to C style. Reported by
919 Mike Gran.
920
9212006-02-28 Kevin Ryde <user42@zip.com.au>
922
923 * unif.c (bitvector_set): Use h->writable_elements not h->elements.
924
9252006-02-26 Kevin Ryde <user42@zip.com.au>
926
927 * filesys.c (scm_readdir): Use fpathconf for the dirent size when
928 NAME_MAX is not available, which is so on Solaris 10. Report and help
929 by Bill Schottstaedt.
930
931 * srfi-13.c (MY_VALIDATE_SUBSTRING_SPEC_UCOPY): New macro.
932 (scm_string_compare, scm_string_compare_ci, scm_string_lt,
933 scm_string_gt, scm_string_le, scm_string_ge, scm_string_ci_lt,
934 scm_string_ci_gt, scm_string_ci_le, scm_string_ci_ge): In comparisons
935 use "unsigned char", not signed char. This ensures comparisons are
936 the same as `char<?' etc, and is also the same as guile 1.6 did.
937 Reported by Sven Hartrumpf.
938
4a9f83ff
MD
9392006-02-19 Mikael Djurfeldt <mdj@neurologic.cc>
940
941 * random.c: Test for SCM_HAVE_T_UINT64 instead of
942 SCM_HAVE_T_INT64.
943 (scm_i_uniform32, scm_i_uniform32, scm_i_init_rstate): Use
944 scm_t_uint64 and scm_t_uint32 instead of scm_t_int64 and
945 scm_t_int32.
946
29d8c124 9472006-01-04 Ludovic Courtès <ludovic.courtes@laas.fr>
4c7016dc
HWN
948
949 * gc-segment.c (scm_i_sweep_some_cards): Take a SWEEP_STATS
950 argument. Don't refer to SCM_GC_CELLS_COLLECTED and
951 SCM_CELLS_ALLOCATED. If SEG->FIRST_TIME, let CELLS_COLLECTED as zero.
952 Take into account SEG->SPAN when computing CELLS_SWEPT.
953 (scm_i_sweep_segment): Take one more argument, similarly.
954 (scm_i_sweep_all_segments): Likewise.
955 (scm_i_sweep_some_segments): Likewise.
956 (scm_i_adjust_min_yield): Change the way MIN_CELLS is computed: do not
957 refer to SCM_GC_CELLS_COLLECTED.
958
959 * gc-freelist.c (scm_i_adjust_min_yield): Take one more
960 argument, an `scm_i_sweep_statistics' object.
961 Change the way DELTA is collected: don't take into account
962 SCM_GC_CELLS_COLLECTED_1, only SWEEP_STATS.COLLECTED.
963
964 * gc-malloc.c (scm_realloc): Pass an extra argument
965 to `scm_i_sweep_all_segments ()'.
966
967 * gc.c (gc_start_stats): Updated accordingly.
968 (gc_end_stats): Take an additional SWEEP_STATS argument.
969 Decrement SCM_CELLS_ALLOCATED after calls to `scm_i_sweep_* ()'.
970 (scm_gc_for_newcell): Updated callers of `scm_i_sweep_*'.
971 Decrement SCM_CELLS_ALLOCATED.
972 (scm_i_gc): Likewise.
973
974 * private-gc.h (scm_i_sweep_*): Updated function
975 prototypes accordingly.
976 (scm_t_sweep_statistics): New type.
977 (scm_i_sweep_statistics_init): New macro.
978 (scm_i_sweep_statistics_sum): New macro
979
9a5fa6e9 9802006-02-14 Ludovic Courtès <ludovic.courtes@laas.fr>
2b829bbb
KR
981
982 * strings.c (scm_i_take_stringbufn): Register LEN+1 bytes instead of
983 LEN. Without this, too much collectable memory gets unregistered,
984 which results in an underflow of SCM_MALLOCATED in
985 `decrease_mtrigger()'.
986
987 * gc-malloc.c (decrease_mtrigger): Make sure SIZE is lower than or
988 equal to SCM_MALLOCATED.
989
9902006-02-13 Marius Vollmer <mvo@zagadka.de>
991
992 * eval.c (scm_eval_body): Use scm_i_dynwind_pthread_mutex_lock
993 oinstead of scm_dynwind_pthread_mutex_lock so that it works when
994 configured --without-threads.
995 (SCM_APPLY, CEVAL): Likewise. Thanks to Han-Wen Nienhuys!
996
1aaa1c17
MV
9972006-02-12 Marius Vollmer <mvo@zagadka.de>
998
999 * unif.c (scm_dimensions_to_uniform_array): Use the prototype for
1000 filling when the fill parameter is omitted, as documented, but
1001 turn #\nul into 0 since s8 arrays (signified by a #\nul prototype)
1002 can not store characters.
1003
d7c6575f
NJ
10042006-02-09 Neil Jerram <neil@ossau.uklinux.net>
1005
1006 * socket.c (scm_c_make_socket_address): Pass address_size pointer
1007 on to scm_fill_sockaddr call.
1008
43e01b1e
NJ
10092006-02-04 Neil Jerram <neil@ossau.uklinux.net>
1010
1011 * throw.h (scm_c_catch, scm_c_with_throw_handler,
1012 scm_catch_with_pre_unwind_handler, scm_with_throw_handler): New.
1013
1014 * throw.c (SCM_JBPREUNWIND, SCM_SETJBPREUNWIND): New.
1015 (struct pre_unwind_data): New, replaces struct lazy_catch.
1016 (scm_c_catch): New, replaces scm_internal_catch as the primary
1017 catch API for C code; adds pre-unwind handler support.
1018 (scm_internal_catch): Now just a wrapper for scm_c_catch, for back
1019 compatibility.
1020 (tc16_pre_unwind_data, pre_unwind_data_print,
1021 make_pre_unwind_data, SCM_PRE_UNWIND_DATA_P): Renamed from
1022 "lazy_catch" equivalents.
1023 (scm_c_with_throw_handler): New, replaces scm_internal_lazy_catch
1024 as the primary C API for a "lazy" catch.
1025 (scm_internal_lazy_catch): Now just a wrapper for
1026 scm_c_with_throw_handler, for back compatibility.
1027 (scm_catch_with_pre_unwind_handler): Renamed from scm_catch; adds
1028 pre-unwind handler support.
1029 (scm_catch): Now just a wrapper for
1030 scm_catch_with_pre_unwind_handler, for back compatibility.
1031 (scm_with_throw_handler): New.
1032 (scm_lazy_catch): Update comment to say that the handler can
1033 return, and what happens if it does.
1034 (toggle_pre_unwind_running): New.
1035 (scm_ithrow): When identifying the throw target, take running
1036 flags into account. In general, change naming of things from
1037 "lazy_catch" to "pre_unwind". When throwing to a throw handler,
1038 don't unwind the dynamic context first. Add dynwind framing to
1039 manage the running flag of a throw handler. If a lazy catch or
1040 throw handler returns, rethrow the same exception again. Add
1041 pre-unwind support to the normal catch case (SCM_JMPBUFP).
1042
1043 * root.c (scm_internal_cwdr): Add NULL args to
1044 scm_i_with_continuation_barrier call.
1045
1046 * dynwind.c: Change comment mentioning lazy-catch to mention
1047 pre-unwind data and throw handler also.
1048
1049 * continuations.h (scm_i_with_continuation_barrier): Add
1050 pre-unwind handler args.
1051
1052 * continuations.c (scm_i_with_continuation_barrier): Add
1053 pre-unwind handler args, and pass on to scm_c_catch (changed from
1054 scm_internal_catch).
1055 (c_handler): Remove scm_handle_by_message_noexit call.
1056 (scm_c_with_continuation_barrier): Call
1057 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
1058 as the pre-unwind handler.
1059 (scm_handler): Remove scm_handle_by_message_noexit call.
1060 (s_scm_with_continuation_barrier): Call
1061 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
1062 as the pre-unwind handler.
1063
2b829bbb
KR
10642006-02-04 Kevin Ryde <user42@zip.com.au>
1065
1066 * gc-mark.c (scm_mark_all): Fix c99-isms "loops" and "again" variables.
1067
72098928
KR
10682006-02-03 Kevin Ryde <user42@zip.com.au>
1069
1070 * list.c, list.h (scm_list): Restore this function for use from C.
1071 It's a complete no-op but in theory might used by someone.
1072
aa092c5d
MV
10732006-01-30 Marius Vollmer <mvo@zagadka.de>
1074
1075 * eval.c (scm_eval_body): Lock source_mutex with a dynwind context
1076 so that it gets unlocked in all cases.
1077 (SCM_APPLY, CEVAL): Likewise.
1078
661ae7ab
MV
10792006-01-29 Marius Vollmer <mvo@zagadka.de>
1080
ee51ba31
MV
1081 * ramap.c: (scm_array_map_x): Don't use scm_array_p, use
1082 scm_is_typed_array instead.
1083
661ae7ab
MV
1084 Renamed the "frames" that are related to dynamic-wind to "dynamic
1085 contexts. Renamed all functions from scm_frame_ to scm_dynwind_.
1086 Updated documentation.
1087
99e370f6
MV
1088 Disabled "futures":
1089
1090 * futures.h, futures.c: Wrap whole contents in "#if 0"/"#endif".
1091 * eval.c, init.c: Comment out all 'future' related things.
1092
15ccf10b
MV
10932006-01-28 Marius Vollmer <mvo@zagadka.de>
1094
1095 * inline.h, pairs.c (scm_is_pair): Moved scm_is_pair from pairs.c
1096 to inline.h to make it inline.
1097
9a5fa6e9 10982005-12-19 Ludovic Courtès <ludovic.courtes@laas.fr>
fd0a5bbc
HWN
1099
1100 * strings.c (scm_i_take_stringbufn): New.
1101 (scm_i_c_take_symbol): New.
1102 (scm_take_locale_stringn): Use `scm_i_take_stringbufn ()'.
1103
1104 * strings.h (scm_i_c_take_symbol): New.
1105 (scm_i_take_stringbufn): New.
1106
1107 * symbols.c (lookup_interned_symbol): New function.
1108 (scm_i_c_mem2symbol): New function.
1109 (scm_i_mem2symbol): Use `lookup_symbol ()'.
1110 (scm_from_locale_symbol): Use `scm_i_c_mem2symbol ()'. This avoids
1111 creating a new Scheme string.
1112 (scm_from_locale_symboln): Likewise.
1113 (scm_take_locale_symbol): New.
1114 (scm_take_locale_symboln): New.
1115
1116 * symbols.h (scm_take_locale_symbol): New.
1117 (scm_take_locale_symboln): New.
1118
2ca2ffe6
HWN
11192006-01-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
1120
1121 * gc-card.c ("sweep_card"): don't count scm_tc_free_cell for
1122 free_count.
1123
c255614e
HWN
11242005-11-29 Han-Wen Nienhuys <hanwen@xs4all.nl>
1125
1126 * regex-posix.c (s_scm_regexp_exec): list the offending pattern
1127 upon error
1128
29295b0c
NJ
11292005-12-29 Neil Jerram <neil@ossau.uklinux.net>
1130
9a5fa6e9 1131 * fluids.c (next_fluid_num): [From Ludovic Courtès:] Don't trigger
29295b0c
NJ
1132 the GC when allocated_fluids_len is zero.
1133
2824f4dc
NJ
11342005-12-14 Neil Jerram <neil@ossau.uklinux.net>
1135
ec3a8ace
NJ
1136 * load.c (the_reader, the_reader_fluid_num): New.
1137 (scm_primitive_load): Support custom reader.
1138 (scm_init_load): Init the_reader and the_reader_fluid_num; export
1139 the_reader as `current-reader'.
1140
2824f4dc
NJ
1141 * scmsigs.c (do_read_without_guile): Use the "raw_data" passed in
1142 (rather than an uninitialized pointer on the stack).
1143
d9c36d2a
MV
11442005-12-07 Marius Vollmer <mvo@zagadka.de>
1145
6a88895b
MV
1146 Reported by Bruce Korb:
1147
1148 * init.c (invoke_main_func): Don't call exit here. Throws that
1149 are only caught by scm_with_guile will bypass us and would cause
1150 scm_boot_guile to return erroneously.
1151 (scm_boot_guile): Expect scm_with_guile to return and call exit
1152 here, passing it an appropriate exit code.
1153
1154 From Andy Wingo:
d9c36d2a
MV
1155
1156 * script.c (scm_find_executable): Compile fix -- fgetc returns an
1157 unsigned char cast to an int, or -1 for EOS.
1158
b54df254
MV
11592005-12-06 Marius Vollmer <mvo@zagadka.de>
1160
08f489c9
MV
1161 * srfi-4.h, srfi-4.c, srfi-4.i.c (take_uvec): Make BASE pointer
1162 non-const.
9a5fa6e9 1163 (scm_take_u8vector, etc): Likewise. Thanks to Ludovic Courtès!
08f489c9 1164
b54df254
MV
1165 * threads.h, threads.c (scm_t_guile_ticket, scm_leave_guile,
1166 scm_enter_guile): Removed from public API. See comment at
1167 scm_without_guile for the rationale.
1168
1169 * scmsigs.c (read_without_guile): New.
1170 (signal_delivery_thread): Use it instead of
1171 scm_leave_guile/read/scm_enter_guile.
1172
9d9ce2b5
MV
1173 From Stephen Compall:
1174
1175 * eval.c (scm_m_cond): Recognize SRFI 61 cond syntax.
1176 (CEVAL): Evaluate SRFI 61 cond clauses.
1177
9a5fa6e9 11782005-12-06 Ludovic Courtès <ludovic.courtes@laas.fr>
9fb5c8f9
NJ
1179
1180 * gc-card.c (scm_i_card_statistics): Return if BITVEC is NULL.
1181 This was typically hit when running `gc-live-object-stats' right
1182 after starting Guile.
1183
efeac8ae
KR
11842005-11-30 Kevin Ryde <user42@zip.com.au>
1185
1186 * srfi-13.c (scm_string_append_shared): No copying if just one
1187 non-empty string in args.
1188
606183ba
KR
11892005-11-26 Kevin Ryde <user42@zip.com.au>
1190
1191 * gc-mark.c (scm_mark_all): Change C++ comment to C comment. Reported
9a5fa6e9 1192 by Ludovic Courtès.
606183ba
KR
1193
1194 * list.c (list): Should be "primitive" in SCM_SNARF_DOCS, not
1195 "register".
1196
1197 * random.c (scm_i_copy_rstate, scm_c_make_rstate): Don't test for
1198 scm_malloc returning NULL, it never does that.
1199 * putenv.c (putenv): Likewise.
1200
1201 * socket.c (scm_fill_sockaddr): Remove SCM_C_INLINE_KEYWORD, this is
1202 much too big to want to inline.
1203
9a5fa6e9 12042005-11-17 Ludovic Courtès <ludovic.courtes@laas.fr>
dbb5de29
NJ
1205
1206 * print.c (EXIT_NESTED_DATA): Before popping from the stack, reset
1207 the value at its top. This fixes a reference leak.
1208 (PUSH_REF): Perform `pstate->top++' after calling
1209 `PSTATE_STACK_SET ()' in order to avoid undesired potential side
1210 effects.
1211
9a5fa6e9 12122005-11-12 Ludovic Courtès <ludovic.courtes@laas.fr>
3f98874a
NJ
1213
1214 * gc.c (scm_weak_vectors): Removed.
1215
f07d2b20
KR
12162005-11-12 Kevin Ryde <user42@zip.com.au>
1217
1218 * socket.c (scm_setsockopt): Missing @defvar in docstring. Reported
9a5fa6e9 1219 by Ludovic Courtès.
f07d2b20 1220
bedd3f5f
MV
12212005-11-07 Marius Vollmer <mvo@zagadka.de>
1222
1223 * stime.c (scm_mktime): Use scm_frame_critical_section instead of
1224 SCM_CRITICAL_SECTION_START/END since the code inside the critical
1225 section might exit non-locally.
1226
7c9c0169
NJ
12272005-11-04 Neil Jerram <neil@ossau.uklinux.net>
1228
1229 * eval.c (sym_instead): New symbol.
1230 (ENTER_APPLY): Remove optional use of a continuation when making
1231 trap call.
1232 (scm_debug_opts): Change doc for 'cheap option to make clear that
1233 it is now obsolete.
1234 (CEVAL, SCM_APPLY): Remove optional use of a continuation when
1235 making trap calls, and implement substitution of eval expressions
1236 and return values using the values that the trap call handlers
1237 return.
1238
1239 * debug.h (SCM_CHEAPTRAPS_P): Removed.
1240
9a5fa6e9 12412005-10-27 Ludovic Courtès <ludovic.courtes@laas.fr>
64cdbfc7
KR
1242
1243 * socket.c (scm_fill_sockaddr): No need to check NULL from scm_malloc.
1244 (scm_connect, scm_bind, scm_sendto): Accept sockaddr object.
1245 (scm_addr_vector): Renamed to _scm_from_sockaddr, update usages.
1246 (scm_from_sockaddr, scm_to_sockaddr, scm_make_socket_address,
1247 scm_c_make_socket_address): New functions.
1248 * socket.h: Add prototypes.
1249
fc9f596c
KR
12502005-10-24 Kevin Ryde <user42@zip.com.au>
1251
1252 * socket.c (scm_init_socket): Add IPPROTO_IP, IPPROTO_TCP,
1253 IPPROTO_UDP. Remove SOL_IP, SOL_TCP, SOL_UDP. The former are in
1254 POSIX spec examples, the latter are not available on for instance
1255 NetBSD.
1256
1257 * socket.c (scm_getsockopt, scm_setsockopt): Update docstrings from
1258 posix.texi.
1259
1260 * stime.c (scm_strftime): Update docstring from posix.texi.
1261
0460c6e1
MV
12622005-10-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1263
1264 PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP is not portable enough.
1265
1266 * null-threads.h, pthread-threads.h
1267 (SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER): Removed.
1268 (scm_i_pthread_mutexattr_recursive): New.
1269
1270 * threads.c (scm_i_pthread_mutexattr_recursive): Declare.
1271 (scm_i_critical_section_mutex): Do not initialize statically.
1272 (scm_threads_prehistory): Initialize
1273 scm_i_pthread_mutexattr_recursive and scm_i_critical_section_mutex
1274 here.
1275
1276 * eval.c (source_mutex): Do not initialiaze statically.
1277 (scm_init_eval): Do it here, using
1278 scm_i_pthread_mutexattr_recursive.
1279
7b4a9e52
MV
12802005-09-05 Marius Vollmer <mvo@zagadka.de>
1281
1282 * print.h (SCM_PRINT_KEYWORD_STYLE_I, SCM_PRINT_KEYWORD_STYLE):
1283 New.
1284 (sym_reader): New.
1285 (scm_print_opts): Added "quote-keywordish-symbols" option.
1286 (quote_keywordish_symbol): New, for evaluating the option.
1287 (scm_print_symbol_name): Use it.
1288 (scm_init_print): Initialize new option to sym_reader.
1289
5defc05d
NJ
12902005-08-15 Neil Jerram <neil@ossau.uklinux.net>
1291
1292 * eval.c (eval_letrec_inits): New.
1293 (CEVAL): Eval letrec initializer forms using eval_letrec_inits.
1294
036482e9
MV
12952005-08-12 Marius Vollmer <mvo@zagadka.de>
1296
1297 * numbers.c: Use scm_from_bool instead of SCM_BOOL. Thanks to
1298 Peter Gavin!
1299
5c347f8c
KR
13002005-08-12 Kevin Ryde <user42@zip.com.au>
1301
1302 * srfi-13.c (scm_string_for_each_index): Correction to docstring.
1303
bc721aa2
KR
13042005-08-06 Kevin Ryde <user42@zip.com.au>
1305
1306 * srfi-13.c (scm_string_any, scm_string_every, scm_string_tabulate,
1307 scm_string_trim, scm_string_trim_right, scm_string_trim_both,
1308 scm_string_index, scm_string_index_right, scm_string_skip,
1309 scm_string_skip_right, scm_string_count, scm_string_map,
1310 scm_string_map_x, scm_string_for_each, scm_string_for_each_index,
1311 scm_string_filter, scm_string_delete): Use scm_t_trampoline_1 for
1312 procedures called in loops.
1313
126c81db
KR
13142005-08-02 Kevin Ryde <user42@zip.com.au>
1315
1316 * strports.c (st_flush): Increase buffer by 1.5x when growing, to
1317 avoid lots of copying where previoulsy growing by only 80 bytes at a
1318 time.
1319
7f278dc6
MV
13202005-08-01 Marius Vollmer <mvo@zagadka.de>
1321
1322 * modules.h, modules.c (scm_eval_closure_module): Removed, we
1323 already have scm_lookup_closure_module, which does the same thing.
1324
cb5c4b07
MV
13252005-08-01 Marius Vollmer <mvo@zagadka.de>
1326
1327 New marking algorithm for weak hashtables that fixes the problem
1328 that references from the non-weak value to the associated weak
1329 key (for example) would prevent the entry from ever being dropped.
1330
1331 Guardians have been changed back to their original semantics and
1332 are no longer greedy and no longer drop cycles.
1333
1334 * gc-mark.c (scm_mark_all): Do not rely on hooks to run the weak
1335 hashtable and guardian machinery but call the relevant functions
1336 directly.
1337
1338 * guardians.h, guardians.c, deprecated.h,
1339 deprecated.c (scm_destroy_guardian_x, scm_guardian_greedy_p,
1340 scm_guardian_destroyed_p, scm_guard, scm_get_one_zombie):
1341 Deprecated and moved into deprecated.[ch].
1342
1343 * guardians.h, guardians.c: Mostly rewritten.
1344 (scm_i_init_guardians_for_gc,
1345 scm_i_identify_inaccessible_guardeds,
1346 scm_i_mark_inaccessible_guardeds): New.
930888e8 1347 (scm_make_guardian): Removed greedy_p argument.
cb5c4b07
MV
1348
1349 * weaks.h, weaks.c (SCM_I_WVECT_TYPE, SCM_I_SET_WVECT_TYPE): New.
1350 (SCM_I_WVECT_N_ITEMS, SCM_I_SET_WVECT_N_ITEMS): New.
1351 (SCM_WVECTF_NOSCAN, SCM_WVECT_NOSCAN_P): Removed.
1352 (scm_weaks_prehistory): Removed.
1353 (scm_i_init_weak_vectors_for_gc, scm_i_mark_weak_vector,
1354 scm_i_mark_weak_vectors_non_weaks,
1355 scm_i_remove_weaks_from_weak_vectors, scm_i_remove_weaks): New.
1356 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
1357 scm_scan_weak_vectors): Removed.
1358
1359 * hashtab.h (scm_i_scan_weak_hashtables): New.
1360 * hashtab.c (make_hash_table, scm_i_rehash): Do not use
1361 SCM_WVECTF_NOSCAN.
1362 (hashtable_print): Use SCM_HASHTABLE_N_ITEMS instead of
1363 t->n_items.
1364 (scan_weak_hashtables, scm_i_scan_weak_hashtables): Renamed former
1365 to latter. Do not scan the alists themselves, this is done by the
1366 weak vector code now. Just update the element count.
1367
1368 * vectors.h (SCM_I_WVECT_TYPE, SCM_I_WVECT_EXTRA): Renamed former
1369 to latter. The type is now only part of the cell word.
1370 (SCM_I_SET_WVECT_TYPE, SCM_I_SET_WVECT_EXTRA): Likewise.
1371
1372 * init.c (scm_i_init_guile): Do not call scm_weaks_prehistory.
1373
3e2073bd
MD
13742005-07-18 Mikael Djurfeldt <mdj@d14n36.pdc.kth.se>
1375
1376 Some changes towards making it possible to run Guile on the EM64T
1377 platform.
1378
1379 * gc.c (scm_gc_stats): Bugfix: Measure size of the type we are
1380 mallocating for (unsigned long *bounds).
1381
1382 * hashtab.c (scm_i_rehash): Cast SCM_HASHTABLE_FLAGS (table) to
1383 scm_t_bits before storing them in the type word.
1384
1385 * gc.c (tag_table_to_type_alist): Modified type of c_tag from
1386 scm_t_bits to int.
1387
e8ac8e75
KR
13882005-07-12 Kevin Ryde <user42@zip.com.au>
1389
1390 * eval.c (scm_dbg_make_iloc): Should be SCM_IFRAMEMAX and
1391 SCM_IDISTMAX, and cast uints through scm_t_bits to make gcc happy.
1392 * pairs.c (scm_error_pair_access): Use scm_from_locale_string rather
1393 than scm_makfrom0str.
1394 Reported by Ken Raeburn.
1395
1396 * gc-card.c (scm_dbg_gc_get_bvec): Change return from long* to
1397 scm_t_c_bvec_long*, gcc 4 doesn't like different pointer targets when
1398 returning SCM_GC_CARD_BVEC.
1399
1400 * pairs.c (scm_error_pair_access): Plain ascii ' in error message
1401 rather than latin-1 acute accent, the latter may not print on all
1402 terminals.
1403
1404 * srfi-13.c (scm_string_filter, scm_string_delete): Strip leading and
1405 trailing deletions, so as to return a substring if those are the only
1406 changes.
1407
adc0677d
KR
14082005-07-10 Kevin Ryde <user42@zip.com.au>
1409
1410 * socket.c (scm_inet_pton, scm_inet_ntop): Pointer cast to scm_t_uint8
1411 for scm ipv6 funcs, gcc 4 is picky about char* vs uchar*.
1412 (scm_getsockopt, scm_accept, scm_getsockname, scm_getpeername,
1413 scm_recvfrom) Use socklen_t, gcc 4 is picky about int* vs socklen_t*.
1414
8fecbb19
HWN
14152005-07-01 Han-Wen Nienhuys <hanwen@xs4all.nl>
1416
1417 * gc-card.c (scm_i_card_statistics): init tag.
1418
1419 * gc.c (tag_table_to_type_alist): check type of tag. Should be integer.
1420
fc9c5d06
HWN
14212005-06-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
1422
8fecbb19
HWN
1423 * fports.c (s_scm_open_file): add the b flag for binary to the doc
1424 string.
fc9c5d06 1425
08fce816
KR
14262005-06-25 Kevin Ryde <user42@zip.com.au>
1427
1428 * srfi-13.c (scm_string_filter, scm_string_delete): Partial revert
1429 last change, use plain copy-on-write substrings, the individual
1430 descriptions in the srfi don't mention shared storage (only the
1431 introduction does).
1432
1433 * strings.c (scm_take_locale_stringn): Use realloc to make room for
1434 null-terminator, rather than mallocing a whole new block.
1435 (scm_take_locale_string): Use scm_take_locale_stringn len==-1.
1436
fc4abd0e
MV
14372005-06-12 Marius Vollmer <mvo@zagadka.de>
1438
e3da8a30
MV
1439 * ramap.c (scm_array_index_map_x): First test for real arrays,
1440 then check for generalized vectors. This ensures that the
1441 generalized vector case need only work with zero-origin ranges.
12097c77
MV
1442 (scm_ra_eqp, scm_ra_compare): Use the new array handle functions
1443 to access the target array, making these functions work with all
1444 kinds of arrays, not just bit arrays.
e3da8a30 1445
fc4abd0e
MV
1446 * gh.h, gh_data.c, gh_eval.c, gh_funcs.c, gh_init.c, gh_io.c,
1447 gh_list.c, gh_predicates.c: Deprecated everything.
1448
1449 * environments.c (environment_default_folder,
1450 environment_default_observer): Do not use gh_call3, gh_call1.
1451
e4da0740
HWN
14522005-06-10 Han-Wen Nienhuys <hanwen@xs4all.nl>
1453
1454 * modules.c (s_scm_eval_closure_module): new function. Return the
1455 module inside an eval-closure.
1456
1457 * gc.c (scm_init_storage): make scm_stand_in_procs a weak_key hash
1458 table. This means that procedure properties are GC'd if the
1459 procedure dies.
1460
27667158
KR
14612005-06-11 Kevin Ryde <user42@zip.com.au>
1462
1463 * srfi-13.c (scm_string_filter, scm_string_delete): For char and
1464 charset cases, count chars kept and build a string in a second pass,
1465 rather than using a cons cell for every char kept. Use a shared
1466 substring when nothing removed (such sharing is allowed by the srfi).
1467
8a00ba71
HWN
14682005-06-09 Han-Wen Nienhuys <hanwen@xs4all.nl>
1469
1470 * gc.c (tag_table_to_type_alist): convert tag number to "tag %d"
1471 string, so live object stats can be sorted with string<?.
1472
a677679f
MV
14732005-06-06 Marius Vollmer <mvo@zagadka.de>
1474
2ff668b0
MV
1475 * print.c (iprin1): When writing a string, collect all characters
1476 that can be printed directly into one call to scm_lfwrite.
1477 Previously, every character was output with its own call to
1478 write(2) on unbuffered ports.
1479
589f22f6
MV
1480 * eval.c (scm_eval_options_interface): Use
1481 scm_frame_critical_section instead of SCM_CRITICAL_SECTION_START
1482 and SCM_CRITICAL_SECTION_END.
1483
a677679f
MV
1484 * unif.c (scm_array_in_bounds_p): First test for real arrays, then
1485 check for generalized vectors. This ensures that the generalized
1486 vector case need only work with zero-origin ranges.
1487
f8cda9ee
KR
14882005-06-06 Kevin Ryde <user42@zip.com.au>
1489
1490 * srfi-13.c (scm_string_split): Compare char/char in scan. Mixing an
1491 unsigned int SCM_CHAR and a char string meant an 8-bit char was never
1492 matched.
1493
cdac1be4
MV
14942005-06-05 Marius Vollmer <mvo@zagadka.de>
1495
6642f7ac
MV
1496 * eval.c: Added comment on how to make case 1.1 of
1497 r5rs_pitfall.test succeed.
1498
cdac1be4
MV
1499 From Jan Nieuwenhuizen <janneke@gnu.org>. Thanks!
1500
1501 * hashtab.h: Bugfix: use SCM_API (WAS: extern).
1502
1503 * socket.c: Remove obsolete comment about socklen_t.
1504 (s_scm_setsockopt)[!HAVE_IP_MREQ]: Do not use ip_mreq code.
1505
1506 * numbers.h (isnan)[__MINGW32__]: Remove.
1507
1508 * Makefile.am (gen_scmconfig_SOURCES): Bugfix: Add
1509 DEFAULT_INCLUDES when cross compiling.
1510
1511 * threads.c (ETIMEDOUT, pipe)[__MINGW32__]: Add defines.
1512
a677679f 1513 * stime.c (scm_strftime)[!HAVE_TM_ZONE]: Use
cdac1be4
MV
1514 SCM_SIMPLE_VECTOR_REF instead of SCM_VELTS. (Changed slightly
1515 from Jan's patch.)
1516
9e664475
MV
15172005-05-22 Marius Vollmer <mvo@zagadka.de>
1518
188d0c5e
MV
1519 * unif.c (scm_make_shared_array): Add old base to new base since
1520 scm_array_handle_pos does not include the base.
1521 (scm_aind): Likewise.
1522
9e664475
MV
1523 * ports.c (scm_putc, scm_puts): Assert that the port argument is a
1524 output port.
1525
5a6d139b
NJ
15262005-05-12 Neil Jerram <neil@ossau.uklinux.net>
1527
1528 Mac OS X compile warning fixes, reported by Richard Todd.
1529
1530 * unif.c (scm_i_read_array): Declare rank as ssize_t, to guarantee
1531 that it is signed.
1532
1533 * strports.c (st_resize_port): Add unsigned char cast.
1534 (scm_mkstrport): Make read/write_buf cast unsigned.
1535
1536 * srfi-13.c (string_titlecase_x): Add unsigned char cast.
1537
1538 * rdelim.c (scm_read_line): Initialize slen.
1539
1540 * load.c (scm_search_path): Remove weird >=1, and add
1541 parentheses to clarify conditions.
1542
1543 * hash.c (scm_hasher): Add const unsigned char cast.
1544
1545 * gh_data.c (gh_chars2byvect): Add scm_t_int8 cast.
1546
b01532af
NJ
15472005-05-11 Neil Jerram <neil@ossau.uklinux.net>
1548
9a5fa6e9 1549 Fix C99isms reported by Ludovic Courtès:
b01532af
NJ
1550
1551 * threads.c (s_scm_lock_mutex): Don't declare msg in middle of
1552 code.
1553
1554 * gc.c (s_scm_gc_live_object_stats): Don't declare alist in middle
1555 of code.
1556
1557 * gc-card.c (scm_i_card_statistics): Don't declare tag in middle
1558 of code.
1559 (scm_i_card_statistics): Add block for declarations of tag_as_scm
1560 and current.
1561
229a0710
NJ
15622005-05-10 Neil Jerram <neil@ossau.uklinux.net>
1563
1564 * scmsigs.c (signal_delivery_thread): Return a value, to avoid
1565 compile warning reported by Werner Scheinast.
1566
645dd3fc
HWN
15672005-04-30 Han-Wen Nienhuys <hanwen@xs4all.nl>
1568
80038021
HWN
1569 * list.h: remove scm_list()
1570
645dd3fc
HWN
1571 * fluids.c (DYNAMIC_STATE_NEXT_LOC): new macro for use with
1572 SCM_DEBUG_CELL_ACCESSES
1573 (FLUID_NEXT_LOC): idem.
1574
9a68a4a8
KR
15752005-04-30 Kevin Ryde <user42@zip.com.au>
1576
1577 * numbers.c (scm_divide): Correction to 1/complex and <any>/complex,
1578 need to test abs(re)<abs(im) for choice of cases, otherwise divide by
1579 zero when re==0 and im<0. Reported by Jean Crepeau.
1580
0640cdaa
KR
15812005-04-25 Kevin Ryde <user42@zip.com.au>
1582
1583 * ramap.c (scm_array_map_x): Allow no source args, add num args checks
4d54ee35
KR
1584 to subr_1, subr_2, subr_2o and dsubr cases. No source args only has a
1585 few sensible uses (like filling with a random number generator say),
1586 but has been allowed in the past and so should be kept.
0640cdaa 1587
c0b85e9c
KR
15882005-04-23 Kevin Ryde <user42@zip.com.au>
1589
1590 * hashtab.c (scm_hashx_remove_x): Need to pass "closure" to
1591 scm_hash_fn_remove_x.
1592
1593 * list.c (scm_cons_star): Don't modify the rest list, it belongs to
1594 the caller when cons* is reached through apply.
1595
1596 * list.c (list): Use scm_list_copy, so as to produce a fresh list when
1597 list is called using apply, under the debugging evaluator.
1598 (scm_list): Remove.
1599
c51682b4
KR
1600 * list.c, list.h (scm_make_list): New code, moving make-list from
1601 boot-9.scm.
8cb2eff8 1602
c0575bde
KR
16032005-04-14 Kevin Ryde <user42@zip.com.au>
1604
1605 * numbers.c, numbers.h (scm_oneplus, scm_oneminus): New functions,
1606 converted from scheme code in boot-9.scm.
1607
47a298d9
KR
16082005-04-11 Kevin Ryde <user42@zip.com.au>
1609
1610 * srfi-13.c (scm_string_concatenate, scm_string_concatenate_shared):
1611 Validate list argument, scm_string_append and scm_string_append_shared
1612 don't do that to their rest argument (in a normal build).
1613
8ea3dc2e
MV
16142005-04-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1615
1616 * hashtab.h, hashtab.c (scm_t_hashtable): Removed 'closure' field. The
1617 closure can not be stored since it is no longer valid at GC time.
1618 (make_hash_table): Initialize 'hash_fn' field.
1619 (scm_i_rehash): Only store hash_fn in hash table when closre is
1620 NULL.
1621 (rehash_after_gc): Only call scm_i_rehash when 'hash_fn' is
1622 non-NULL. Always use a NULL closure.
1623 (scm_hash_fn_create_handle_x): Also rehash when table contains too
1624 few entries.
1625
08d2020d
MV
16262005-03-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1627
1628 * hashtab.h, hashtab.c (scm_hash_fx_remove_x): Removed delete_fn
1629 argument; always use scm_delq_x. The delete_fn function works on
1630 the handle, not the key, and it therefore makes no sense to make
1631 it configurable. Changed all callers.
1632 (scm_hashx_remove_x): Likewise. Also, exported to Scheme.
1633 (scm_hash_clear): Accept plain vectors as hashtables.
1634 (scm_delx_x): Removed.
1635
cb975c21
HWN
16362005-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
1637
1638 * inline.h (scm_double_cell): use __asm__ iso. asm, to maintain
1639 compatibility with gcc -std=c99.
1640
4c908f2c
MD
16412005-03-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1642
1643 * async.h (scm_mask_ints): Removed left over reference to
1644 scm_root.
1645
1646 * threads.c: Removed fprintf debug statements.
1647
d193b04b
NJ
16482005-03-24 Neil Jerram <neil@ossau.uklinux.net>
1649
1650 * debug.c (scm_make_memoized): Restore use of SCM_UNPACK.
1651
c29748cd
NJ
16522005-03-23 Neil Jerram <neil@ossau.uklinux.net>
1653
1654 * debug.c (scm_make_memoized): Remove unnecessary critical
1655 section, and simplify by using SCM_RETURN_NEWSMOB.
1656
e654b062
MD
16572005-03-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1658
1659 * strings.h (SCM_STRING_UCHARS): Added missing argument.
1660
4bc6f1c6
KR
16612005-03-18 Kevin Ryde <user42@zip.com.au>
1662
1663 * arbiters.c (FETCH_STORE) [generic C]: Should be
9a5fa6e9 1664 scm_i_scm_pthread_mutex_lock/unlock now. Reported by Ludovic Courtès.
4bc6f1c6 1665
f1531813
KR
16662005-03-13 Kevin Ryde <user42@zip.com.au>
1667
1668 * numbers.c, numbers.h (scm_i_clonebig): Remove static, so can use in
1669 srfi-60.
1670
1671 * numbers.c (scm_logior): Must scm_i_normbig results as per scm_logand,
1672 because OR-ing bits into a negative can reduce the value to an inum.
1673
1674 * numbers.c (scm_num_eq_p): On 64-bit systems, be careful about
1675 casting inum to double since that can lose precision.
1676
a9fae247
MV
16772005-03-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1678
1679 * threads.h, threads.c (scm_i_thread): Added gc_running_p field.
1680 (guilify_self_1): Initialize it.
1681
1682 * gc.h, gc.c (SCM_FREECELL_P): Removed for good.
1683 (scm_block_gc, scm_gc_heap_lock): Removed. Removed all uses.
1684 (scm_gc_running_p): Now a macro that refers to the scm_i_thread
1685 field.
1686 (scm_i_sweep_mutex): Now a non-recursive mutex. GC can not happen
1687 recursively.
1688 (scm_igc, scm_i_gc): Renamed former to latter. Changed all uses.
1689 Do not lock scm_i_sweep_mutex, which is now non-recursive, or set
1690 scm_gc_running_p. Do not run the scm_after_gc_c_hook.
1691 (scm_gc): Lock scm_i_sweep_mutex, set scm_gc_running_p and run the
1692 scm_after_gc_c_hook here.
1693 (scm_gc_for_new_cell): Set scm_gc_running_p here and run the
1694 scm_after_gc_c_hook when a full GC has in fact been performed.
1695 (scm_i_expensive_validation_check): Call scm_gc, not scm_i_gc.
1696
1697 * gc-segment.c (scm_i_get_new_heap_segment): Do not check
1698 scm_gc_heap_lock.
1699
1700 * gc-malloc.c (scm_realloc, increase_mtrigger): Set
1701 scm_gc_running_p while the scm_i_sweep_mutex is locked.
1702
1703 * inline.h (scm_cell, scm_double_cell): Do not check
1704 scm_gc_running_p, allocation during sweeping is OK.
1705
1706 * gdbint.c (SCM_BEGIN_FOREIGN_BLOCK, SCM_END_FOREIGN_BLOCK): Do
1707 not set scm_block_gc.
1708
1709 * init.c (scm_i_init_guile): Do not set scm_block_gc.
1710
1711 * deprecation.c (scm_c_issue_deprecation_warning): Use malloc
1712 instead of scm_malloc. The latter can not be used during GC.
1713
d1c38e11
MV
17142005-03-09 Marius Vollmer <mvo@zagadka.de>
1715
1716 * script.c (scm_compile_shell_switches): Added 2005 to Copyright
1717 years.
1718
99ec43c1
MV
17192005-03-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1720
1721 * gc-card.c (scm_i_sweep_card): Do not increase/decrease
1722 scm_gc_running_p. Sweeping can happen in parallel with
1723 allocation.
1724
1725 * inline.h: Updated comments for current threading implementation.
1726
1727 * threads.h, threads.c (scm_i_frame_single_threaded): Removed.
1728 (scm_i_thread): Removed unused signal_asyncs field.
1729 (threads_mark): Do not mark it.
1730 (guilify_self_1): Do not initialize it. Do initialize
1731 continuation_root field.
1732 (do_thread_exit): Do not remove thread from all_threads list.
1733 (on_thread_exit): Do it here, after leaving guile mode.
1734 (sleep_level): Removed.
1735 (scm_i_thread_put_to_sleep): Leave thread_admin_mutex locked when
1736 returning. Do not support recursive sleeps.
1737 (scm_i_thread_wake_up): Expect thread_admin_mutex to be locked on
1738 entry. Do not support recursive sleeps.
1739
1740 * fluids.c (ensure_state_size, ensure_all_state_sizes,
1741 resize_all_states): Collapsed ensure_state_size and
1742 ensure_all_state_sizes into one function named resize_all_states.
1743 Allocate new vectors outside of single threaded region. Do only
1744 simple things inside that region.
1745 (scm_make_fluid, scm_make_dynamic_state): Lock fluid_admin_mutex
1746 while adding to the global lists.
1747
1748
461f34aa
MV
17492005-03-08 Marius Vollmer <mvo@zagadka.de>
1750
1751 libltdl is no longer distributed. We expect it to be installed
1752 already.
1753
1754 * Makefile.am (INCLUDES): Removed @LTDLINCL@.
1755 (libguile_la_LIBADD): Removed @LIBLTDL@.
1756
4e047c3e
MV
17572005-03-07 Marius Vollmer <mvo@zagadka.de>
1758
1759 * threads.h, async.h, threads.c (SCM_CRITICAL_SECTION_START,
1760 SCM_CRITICAL_SECTION_END): Moved here from threads.h since now
1761 they also block/unblock execution of asyncs and call
1762 scm_async_click which is declared in async.h but threads.h can not
1763 include async.h since async.h already includes threads.h.
1764 (scm_i_critical_section_level): New, for checking mistakes in the
1765 use of the SCM_CRITICAL_SECTION_* macros.
1766 (scm_i_critical_section_mutex): Make it a recursive mutex so that
1767 critical sections can be nested.
1768
1769 * throw.c (scm_ithrow): Abort when scm_i_critical_section_level is
1770 not zero.
1771
1772 * threads.h, threads.c (scm_frame_lock_mutex): New.
1773 (scm_frame_critical_section): Take mutex as argument.
1774 (framed_critical_section_mutex): New, used as default for above.
1775 (scm_init_threads): Initialize it.
1776 (scm_threads_prehistory): Do not initialize thread_admin_mutex and
1777 scm_i_critical_section_mutex; both are initialized statically.
1778
1779 * continuation.c, deprecated.c, goops.c, guardians.c keywords.c,
1780 libguile_la-arrays.loT, objprop.c, ports.c, smob.c, sort.s,
b9d9ad3a
MV
1781 srcprop.c, stime.c, struct.c, throw.c, regex-posix.c: Include
1782 "libguile/async.h" for SCM_CRITICAL_SECTION_START/END.
4e047c3e
MV
1783
1784 * debug.c (scm_debug_options): Replace
1785 SCM_CRITICAL_SECTION_START/END with a frame and
1786 scm_frame_critical_section.
1787
1788 * continuations.c (scm_make_continuation): No longer a critical
1789 section.
1790 (scm_dynthrow): Abort when scm_i_critical_section_level is
1791 not zero.
1792
d0a45bff
MV
17932005-03-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1794
db6673e5
MV
1795 * threads.c (scm_try_mutex): Renamed argument for consistency.
1796
d0a45bff
MV
1797 * root.c (scm_call_with_dynamic_root): New docstring.
1798
1799 * eval.c: Define _GNU_SOURCE.
1800
9de87eea
MV
18012005-03-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1802
1803 Big merge from the mvo-thread-cleanup branch. The main changes
1804 are:
1805
1806 - The dynamic roots functionality has been split into dynamic
1807 states and continuations barriers. Fluids have been
1808 reimplemented and can now be garbage collected.
1809
1810 - Initialization of Guile now works in a multi-thread friendly
1811 manner. Threads can freely enter and leave guile mode.
1812
1813 - Blocking on mutexes or condition variables or while selecting
1814 can now be reliably interrupted via system asyncs.
1815
1816 - The low-level threading interface has been removed.
1817
1818 - Signals are delivered via a pipe to a dedicated 'signal delivery
1819 thread'.
1820
1821 - SCM_DEFER_INTS, SCM_ALLOW_INTS etc have been deprecated.
1822
1823 * throw.c (scm_handle_by_message): Exit only the current thread,
1824 not the whole process.
1825 (scm_handle_by_message_noexit): Exit when catching 'quit.
1826
1827 * scmsigs.c (take_signal, signal_delivery_thread,
1828 start_signal_delivery_thread, ensure_signal_delivery_thread,
1829 install_handler): Reimplemented signal delivery as explained in
1830 the comments.
1831
1832 * pthreads-threads.h (scm_i_pthread_t, scm_i_pthread_self,
1833 scm_i_pthread_create, scm_i_pthread_detach, scm_i_pthread_exit,
1834 scm_i_sched_yield, scm_i_pthread_sigmask,
1835 SCM_I_PTHREAD_MUTEX_INITIALIZER,
1836 SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER, scm_i_pthread_mutex_t ,
1837 scm_i_pthread_mutex_init, scm_i_pthread_mutex_destroy,
1838 scm_i_pthread_mutex_trylock, scm_i_pthread_mutex_lock,
1839 scm_i_pthread_mutex_unlock, SCM_I_PTHREAD_COND_INITIALIZER,
1840 scm_i_pthread_cond_t, scm_i_pthread_cond_init,
1841 scm_i_pthread_cond_destroy, scm_i_pthread_cond_signal,
1842 scm_i_pthread_cond_broadcast, scm_i_pthread_cond_wait,
1843 scm_i_pthread_cond_timedwait, scm_i_pthread_once_t,
1844 SCM_I_PTHREAD_ONCE_INIT, scm_i_pthread_once, scm_i_pthread_key_t ,
1845 scm_i_pthread_key_create, scm_i_pthread_setspecific,
1846 scm_i_pthread_getspecific, scm_i_scm_pthread_mutex_lock,
1847 scm_i_frame_pthread_mutex_lock, scm_i_scm_pthread_cond_wait,
1848 scm_i_scm_pthread_cond_timedwait): Provide the obvious mapping
1849 when using pthreads.
1850 * null-threads.c, null-threads.h: Provide dummy definitions for
1851 the above symbols when not using pthreads.
1852
1853 * modules.h, modules.c (scm_frame_current_module): New.
1854
1855 * load.c (scm_primitive_load): Use scm_i_frame_current_load_port
1856 instead of scm_internal_dynamic_wind.
1857
1858 * init.h, init.c (restart_stack, start_stack): Removed.
1859 (scm_boot_guile, invoke_main_func): Simply use scm_with_guile.
1860 (scm_boot_guile_1): Removed.
1861 (scm_i_init_mutex): New.
1862 (really_cleanup_for_exit, cleanup_for_exit): New.
1863 (scm_init_guile_1, scm_i_init_guile): Renamed former to latter.
1864 Moved around some init funcs. Call
1865 scm_init_threads_default_dynamic_state. Register cleanup_for_exit
1866 with atexit.
1867
1868 * hashtab.c (scm_hash_fn_create_handle_x, scm_hash_fn_remove_x):
1869 Use "!scm_is_eq" instead of "!=".
1870
1871 * ge-scmconfig.c, gen-scmconfig.h.in (SCM_I_GSC_USE_COOP_THREADS,
1872 SCM_USE_COOP_THREADS): Removed.
1873
1874 * gc.c (scm_igc): Take care that scm_gc_running_p is properly
1875 maintained. Unlock scm_i_sweep_mutex before running
1876 scm_after_gc_c_hook.
1877 (scm_permanent_object): Allocate outside of critical section.
1878 (cleanup): Removed.
1879
1880 * fluids.h, fluids.c: Reimplemented completely.
1881 (SCM_FLUID_NUM, SCM_FAST_FLUID_REF,
1882 SCM_FAST_FLUID_SET): Reimplemented as functions.
1883 (scm_is_fluid): New.
1884 (scm_i_make_initial_fluids, scm_i_copy_fluids): Removed.
1885 (scm_make_dynamic_state, scm_dynamic_state_p,
1886 scm_is_dynamic_state, scm_current_dynamic_state,
1887 scm_set_current_dynamic_state, scm_frame_current_dynamic_state,
1888 scm_c_with_dynamic_state, scm_with_dynamic_state,
1889 scm_i_make_initial_dynamic_state, scm_fluids_prehistory): New.
1890
1891 * feature.c (progargs_fluid): New.
1892 (scm_program_arguments, scm_set_program_arguments): Use it instead
1893 of scm_progargs.
1894 (scm_init_feature): Allocate it. Also, only add "threads" feature
1895 when SCM_USE_PTHREAD_THREADS is true.
1896
1897 * eval.c (scm_makprom): Use scm_make_recursive_mutex instead of
1898 scm_make_rec_mutex, with all the consequences.
1899 (scm_eval_x, scm_eval): Use scm_frame_begin etc instead of
1900 scm_internal_dynamic_wind. Handle dynamic states as second
1901 argument.
1902
1903 * threads.h, threads.c (scm_internal_select): Renamed to
1904 scm_std_select and discouraged old name.
1905 (scm_thread_sleep, scm_thread_usleep): Likewise, as scm_std_sleep
1906 and scm_std_usleep.
1907 (scm_tc16_fair_mutex, scm_tc16_fair_condvar, SCM_MUTEXP,
1908 SCM_FAIR_MUTEX_P, SCM_MUTEX_DATA, SCM_CONDVARP,
1909 SCM_FAIR_CONDVAR_P, SCM_CONDVAR_DATA, SCM_THREADP,
1910 SCM_THREAD_DATA): Removed.
1911 (SCM_I_IS_THREAD, SCM_I_THREAD_DATA): New.
1912 (scm_i_thread): New.
1913 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
1914 Use scm_assert_smob_type.
1915 (scm_c_scm2thread, scm_thread_join, scm_thread_detach,
1916 scm_thread_self, scm_thread_yield, scm_mutex_init,
1917 scm_mutex_destroy, scm_mutex_trylock, scm_mutex_unlock,
1918 scm_rec_mutex_init, scm_rec_mutex_destroy, scm_make_rec_mutex,
1919 scm_rec_mutex_free, scm_rec_mutex_lock, scm_rec_mutex_trylock,
1920 scm_cond_init, scm_cond_destroy, scm_cond_wait,
1921 scm_cond_timedwait, scm_cond_signal, scm_cond_broadcast,
1922 scm_key_create, scm_key_delete, scm_setspecific, scm_getspecific,
1923 scm_thread_select): Removed. Replaced with scm_i_pthread
1924 functions as appropriate.
1925 (scm_in_guile, scm_outside_guile): Removed.
1926 (scm_t_guile_ticket, scm_leave_guile, scm_enter_guile): Return and
1927 take a ticket.
1928 (scm_with_guile, scm_without_guile, scm_i_with_guile_and_parent):
1929 New.
1930 (scm_i_frame_single_threaded): New.
1931 (scm_init_threads_default_dynamic_state): New.
1932 (scm_i_create_thread): Removed.
1933 (scm_make_fair_mutex, scm_make_fair_condition_variable): Removed.
1934 (scm_make_recursive_mutex): New.
1935 (scm_frame_critical_section): New.
1936 (SCM_CURRENT_THREAD, SCM_I_CURRENT_THREAD): Renamed former to
1937 latter, changed all uses.
1938 (scm_i_dynwinds, scm_i_setdynwinds, scm_i_last_debug_frame,
1939 scm_i_set_last_debug_frame): New, use them instead of scm_root
1940 stuff.
1941 (SCM_THREAD_LOCAL_DATA, SCM_SET_THREAD_LOCAL_DATA,
1942 scm_i_root_state_key,m scm_i_set_thread_data): Removed.
1943 (scm_pthread_mutex_lock, scm_frame_pthread_mutex_lock,
1944 scm_pthread_cond_wait, scm_pthread_cond_timedwait).
1945 (remqueue): Allow the removal of already removed cells. Indicate
1946 whether a real removal has happened.
1947 (scm_thread): Removed, replaced with scm_i_thread.
1948 (make_thread, init_thread_creatant): Removed.
1949 (cur_thread): Removed.
1950 (block_self, unblock_from_queue): New.
1951 (block, timed_block, unblock): Removed.
1952 (guilify_self_1, guilify_self_2, do_thread_exit,
1953 init_thread_key_once, init_thread_key,
1954 scm_i_init_thread_for_guile, get_thread_stack_base,
1955 scm_init_guile): New initialisation method.
1956 (scm_call_with_new_thread, scm_spawn_thread): Use it to simplify
1957 thread creation.
1958 (fair_mutex, fat_mutex, etc, fair_condvar, fat_condvar): Renamed
1959 "fair" to fat and implemented new semantics, including reliable
1960 interruption.
1961 (all_threads): Now a pointer to a scm_i_thread, not a SCM.
1962 (scm_threads_mark_stacks): Explicitly mark handle.
1963 (scm_std_select): Allow interruption by also selecting on the
1964 sleep_pipe.
1965 (scm_i_thread_put_to_sleep): Handle recursive requests for
1966 single-threadedness.
1967 (scm_threads_prehistory, scm_init_threads): Put current thread
1968 into guile mode via guileify_self_1 and guileify_self_2,
1969 respectively.
1970
1971 * fluid.h (SCM_FLUIDP): Deprecated.
1972
1973 * coop-threads.c: Removed.
1974
1975 * continuations.h, continuations.c (scm_with_continuation_barrier,
1976 scm_c_with_continuation_barrier, scm_i_with_continuation_barrier):
1977 New.
1978
1979 * async.h, async.c (scm_i_setup_sleep, scm_i_reset_sleep): New.
1980 (async_mutex): New.
1981 (scm_async_click): Protected with async_mutex. Do not deal with
1982 signal_asyncs, which are gone. Set cdr of handled async cell to
1983 #f.
1984 (scm_i_queue_async_cell): Protected with async_mutex. Interrupt
1985 current sleep.
1986 (scm_system_async_mark_for_thread): Do not use scm_current_thread
1987 since that might not work during early initialization.
1988
1989 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS, SCM_REDEFER_INTS,
1990 SCM_REALLOW_INTS): Deprecated by moving into deprecated.h and
1991 deprecated.c. Replaced all uses with SCM_CRITICAL_SECTION_START
1992 and SCM_CRITICAL_SECTION_END.
1993 (SCM_ENTER_A_SECTION, SCM_EXIT_A_SECTION): Removed. Replaced with
1994 SCM_CRITICAL_SECTION_START/END.
1995
1996 * Makefile.am (modinclude_HEADER): Removed threads-plugin.h.
1997 (libguile_la_SOURCES): Added null-threads.c
1998 (EXTRA_libguile_la_SOURCES): Removed pthread-threads.c and
1999 threads-plugin.c.
2000 * pthread-threads.c, threads-plugin.c, threads-plugin.h: Removed.
2001
2002 * root.h, root.c (scm_tc16_root, SCM_ROOTP, SCM_ROOT_STATE,
2003 scm_root_state, scm_stack_base, scm_save_regs_gc_mark,
2004 scm_errjmp_bad, scm_rootcont, scm_dynwinds, scm_progargs,
2005 scm_last_debug_frame, scm_exitval, scm_cur_inp, scm_outp,
2006 scm_cur_err, scm_cur_loadp, scm_root, scm_set_root,
2007 scm_make_root): Removed or deprecated. Replaced with references
2008 to the current thread, dynamic state, continuation barrier, or
2009 some fluid, as appropriate.
2010 (root_mark, root_print): Removed.
2011 (scm_internal_cwdr): Reimplemented guts with
2012 scm_frame_current_dynamic_state and
2013 scm_i_with_continuation_barrier.
2014 (scm_dynamic_root): Return current continuation barrier.
2015
2016
ad3d5a65
MV
20172005-02-28 Marius Vollmer <mvo@zagadka.de>
2018
2019 * socket.c (scm_setsockopt): Handle IP_ADD_MEMBERSHIP and
2020 IP_DROP_MEMBERSHIP options. Also, reorganized the code a bit for
2021 cleanliness.
2022 (scm_init_socket): Define IP_ADD_MEMBERSHIP and
2023 IP_DROP_MEMBERSHIP.
2024 Thanks to Greg Troxel!
2025
73a90115
MD
20262005-02-27 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2027
2028 * gh.h: Bugfix: Include <libguile.h> outside of the extern "C"
2029 block.
2030
5d2cb3ab
MV
20312005-02-25 Marius Vollmer <mvo@zagadka.de>
2032
2033 * hashtab.c (scm_i_rehash): Remove elements from old bucket vector
2034 so that no two weak alist vectors share a spine.
2035 (scm_hash_fn_create_handle_x): Deal with a possible rehashing
2036 during GC before inserting the new alist cell.
2037
838c4126
MV
20382005-02-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2039
2040 * hashtab.c (scm_i_rehash): Cope with the case that a GC modifies
2041 the hashtable.
2042 (scm_hash_fn_create_handle_x): Likewise.
2043 * vectors.h (SCM_I_SET_WVECT_TYPE): New, for use in scm_i_rehash.
2044
29fed193
MD
20452005-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2046
2047 * unif.c (prototype_to_type): Bugfix: Don't compare prototype to
2048 the prototypical examples mentioned in the old reference manual.
2049 Instead keep the old semantics of dispatching on type. (Yes, this
2050 is extremely ugly, but the whole point of keeping the deprecated
2051 interface is not to break old code.)
2052
9cc49060
MD
20532005-02-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2054
2055 * deprecated.h (SCM_ARRAY_DIMS): Rename scm_i_attay_dims -->
2056 scm_i_array_dims.
2057
8447f463
KR
20582005-01-28 Kevin Ryde <user42@zip.com.au>
2059
2060 * numbers.c (scm_ash): Rewrite using shifts, much faster than
2061 integer-expt and multiply/divide. Inexacts and fractions no longer
2062 supported (they happened to work before for left shifts, but not
2063 right). Don't really need inexacts and fractions, since ash is
2064 documented as a "bitwise operation", and all the rest of those only
2065 take exact integers.
2066
1367aa5e
HWN
20672005-01-27 Han-Wen Nienhuys <hanwen@xs4all.nl>
2068
856fca7e
HWN
2069 * gc-card.c (scm_i_card_statistics): map structs, closures and
2070 subrs to one tag.
2071
1367aa5e 2072 * gc.c (s_scm_gc_live_object_stats): return alist, not hashtable.
856fca7e 2073 (tag_table_to_type_alist): ignore unknown types.
1367aa5e
HWN
2074
2075 * gc-segment.c (scm_i_all_segments_statistics): new function.
2076 (scm_i_heap_segment_statistics): new function
2077
2078 * gc.c (s_scm_gc_live_object_stats): new GUILE callable: return
2079 statistics on the number of live objects of each type.
2080
2081 * gc-card.c (scm_i_tag_name): new function.
2082 (scm_i_card_statistics): new function.
2083
333db3b8
KR
20842005-01-24 Kevin Ryde <user42@zip.com.au>
2085
2086 * posix.c (scm_setlocale): Force errno=EINVAL for an error, since
2087 POSIX and C99 don't document errno being set. Reported by Bruno
2088 Haible.
2089 (scm_flock): Update docstring from manual.
2090
8447f463
KR
2091 * random.c (scm_i_init_rstate): Compare w to -1 not 0xffffffffUL, now
2092 that it's an scm_t_int32. Otherwise gcc 3.4 says it's always false on
2093 a 64-bit system.
2094
2095 * scmsigs.c (scm_sigaction_for_thread): Use scm_to_long for
2096 sa_handler, needs to be a long on 64-bit systems where int is only 32
2097 bits.
2098
88f59e53
MV
20992005-01-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2100
0eeb2611
MV
2101 * environments.c (obarray_enter, obarray_replace): Call
2102 SCM_HASHTABLE_INCREMENT when adding a new entry.
2103
88f59e53
MV
2104 * objects.c: Include goops.h for the scm_class_of prototype.
2105
2106 * hashtab.c (hashtable_size, HASHTABLE_SIZE_N): Restrict hashtable
2107 sizes to be smaller than the maximum lengths of vectors.
2108
219b2868
MV
21092005-01-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2110
2111 * ports.c, smob.c: Include "libguile/goops.h".
2112
2113 * objects.h, objects.c, goops.c, goops.h (scm_class_boolean,
2114 scm_class_char, scm_class_pair, scm_class_procedure,
2115 scm_class_string, scm_class_symbol,
2116 scm_class_procedure_with_setter, scm_class_primitive_generic,
2117 scm_class_vector, scm_class_null, scm_class_real,
2118 scm_class_complex, scm_class_integer, scm_class_fraction,
2119 scm_class_unknown, scm_port_class, scm_smob_class,
2120 scm_no_applicable_method, scm_class_of): Moved from objects to
2121 goops since they are only useable once goops has been loaded.
2122 (scm_classes_initialized): Removed.
2123 (scm_class_of): Do not check it.
2124 (create_standard_classes): Do not set it.
2125
009c6b9c
MV
21262005-01-17 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2127
50472546
MV
2128 * objects.h, objects.c (scm_classes_initialized): New.
2129 (scm_class_of): Signal error when scm_classes_initialized is zero.
2130 * goops.c (create_standard_classes): Set scm_classes_initialized
2131 to one.
2132
009c6b9c
MV
2133 * random.c (scm_random_solid_sphere_x): Use
2134 scm_c_generalized_vector_length instead of
2135 scm_uniform_vector_length.
2136
7719cbe9
MV
21372005-01-16 Marius Vollmer <mvo@zagadka.de>
2138
2139 * script.c (scm_compile_shell_switches): Removed debugging output.
2140
1ec44fed
KR
21412005-01-15 Kevin Ryde <user42@zip.com.au>
2142
2143 * numbers.c (scm_logtest, scm_logbit_p, scm_integer_expt): Update
2144 docstrings from manual.
2145 * random.c (scm_random_solid_sphere_x): Update docstring from manual.
2146
6e4cd850
MV
21472005-01-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2148
0b5a0521
MV
2149 * random.c: Don't check for definedness of SCM_HAVE_T_INT64, check
2150 its value.
2151
2152 Implement u64 and s64 uniform numeric vectors with bignums when
2153 scm_t_uint64 and scm_t_int64 are not available.
2154
2155 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_take_u64vector,
2156 scm_array_handle_u64_elements,
2157 scm_array_handle_u64_writable_elements, scm_u64vector_elements,
2158 scm_u64vector_writable_elements): Do not define when scm_t_uint64
2159 is not available.
2160 (scm_take_s64vector, scm_array_handle_s64_elements,
2161 scm_array_handle_s64_writable_elements, scm_s64vector_elements,
2162 scm_s64vector_writable_elements): Likewise for scm_t_int64.
2163 (uvec_sizes, uvec_print, uvec_equalp): Use SCM bignums when
2164 scm_t_int64/scm_t_uint64 are not available.
2165 (uvec_mark): New, to mark the bignums.
2166 (alloc_uvec): Initialize bignums.
2167 (uvec_fast_ref): Return bignums directly.
2168 (scm_uint64_min, scm_uint64_max, scm_int64_min, scm_int64_max,
2169 assert_exact_integer): New.
2170 (uvec_fast_set): Use them to validate the bignums.
2171 (scm_init_srfi_4): Set mark function of smob when needed.
2172 Initialize scm_uint64_min, scm_uint64_max, scm_int64_min,
2173 scm_int64_max.
2174
6e4cd850
MV
2175 Recognize 1.4 -e syntax.
2176
2177 * script.c (sym_at, sym_atat, sym_main, all_symbols): New.
2178 (scm_compile_shell_switches): Use them to recognize and convert
2179 1.4 "-e" syntax.
2180
3b698afe
MV
21812005-01-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2182
2183 * deprecated.h, deprecated.c, strings.h, strings.c: Turn all
2184 deprecated features that once were macros but are now functions
2185 back into macros.
2186
d6dc83a9
MV
21872005-01-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2188
49086691
MV
2189 * eval.c, debug.h (SCM_WARN_DEPRECATED): New debug option.
2190 * deprecation.c (scm_issue_deprecation_warning,
2191 scm_c_issue_deprecation_warning_fmt): Use it.
2192 (mode): Removed.
2193 (print_summary): New.
2194 (scm_init_deprecation): Initialize SCM_WARN_DEPRECATED instead of
2195 mode.
2196
d6dc83a9
MV
2197 Deprecated SCM_ARRAY* macros.
2198
2199 * unif.h, unif.c, ramap.c, vectors.c, srfi-4.c, srfi-4.i.c
2200 (SCM_ARRAYP, SCM_I_ARRAYP): Renamed former to latter internal
2201 version. Changed all uses.
2202 (scm_tc16_array, scm_i_tc16_array,
2203 scm_tc16_enclosed_array, scm_i_tc16_enclosed_array,
2204 SCM_ARRAY_FLAG_CONTIGUOUS, SCM_I_ARRAY_FLAG_CONTIGUOUS,
2205 SCM_ENCLOSE_ARRAYP, SCM_I_ENCLOSE_ARRAYP,
2206 SCM_ARRAY_NDIM, SCM_I_ARRAY_NDIM,
2207 SCM_ARRAY_CONTP, SCM_I_ARRAY_CONTP,
2208 SCM_ARRAY_MEM, SCM_I_ARRAY_MEM,
2209 SCM_ARRAY_V, SCM_I_ARRAY_V,
2210 SCM_ARRAY_BASE, SCM_I_ARRAY_BASE,
2211 SCM_ARRAY_DIMS, SCM_I_ARRAY_DIMS,
2212 scm_t_array, scm_i_t_array): Likewise.
2213 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
2214 Moved from unif.h to unif.c.
2215 (scm_c_array_rank): New.
2216 (scm_array_rank): Reimplement using it.
2217
2218 * deprecated.h, deprecated.c (SCM_ARRAYP, SCM_ARRAY_NDIM,
2219 SCM_ARRAY_CONTP, SCM_ARRAY_MEM, SCM_ARRAY_V, SCM_ARRAY_BASE,
2220 SCM_ARRAY_DIMS, scm_t_array): New deprecated versions.
2221
dc91d8de
MV
22222005-01-11 Marius Vollmer <mvo@zagadka.de>
2223
2224 * ramap.c: Replace uses of scm_make_ra with scm_i_make_ra.
2225 (GVREF, GVSET): New abbreviations. Use them everywhere instead of
2226 scm_c_generalized_vector_ref and scm_cvref, and
2227 scm_c_generalized_vector_set_x, respectively.
2228 (RVREF, IVDEP, BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
2229 UNARY_ELTS_CODE, UNARY_PAIR_ELTS_CODE): Removed since unused.
2230
2231 * unif.h, unif.c (indices_to_pos, scm_array_handle_pos): Renamed
2232 former to latter and made public. Changed all uses.
2233 (scm_i_make_ra): Made public, changed tag param to enclosed flag.
2234 (scm_make_ra): Deprecated, changed all uses to scm_i_make_ra.
2235 (scm_i_shap2ra): New internal version of scm_shap2ra.
2236 (scm_shap2ra): Deprecated, changed all uses to scm_i_shap2ra.
2237 (scm_i_ra_set_contp): New internal version of scm_ra_set_contp.
2238 (scm_ra_set_contp): Deprecated, changed all uses to
2239 scm_i_ra_set_contp.
2240 (scm_cvref, scm_aind, scm_raprin1): Deprecated.
2241
66d33784
MV
22422005-01-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2243
b06f099d
MV
2244 * eval.c (scm_eval): Added example to docstring. Thanks to Issac
2245 Trotts!
2246
5d35ad81
MV
2247 * unif.c (scm_list_to_typed_array): Allow the specification of the
2248 upper bound as well. This is needed for empty arrays.
2249 (l2ra): Give needed number of elements in error message.
2250 (scm_i_print_array): Print length information for arrays that need
2251 it.
2252 (scm_i_read_array): Parse it.
2253
66d33784
MV
2254 * deprecated.h, deprecated.c (SCM_CHARS, SCM_UCHARS, SCM_LENGTH,
2255 scm_i_object_chars, scm_i_object_length): Brought back from the
2256 dead.
2257
d7d7d401
MV
22582005-01-10 Marius Vollmer <mvo@zagadka.de>
2259
74c58fce
MV
2260 * ramap.c: Replaced single-index uses of scm_array_set_x with
2261 scm_c_generalized_vector_set_x.
2262
d7d7d401
MV
2263 * unif.c (scm_array_rank, scm_array_dimensions,
2264 scm_shared_array_offset, scm_shared_array_increments,
2265 scm_array_ref, scm_array_set_x): Use scm_t_array_handle operations
2266 to simplify code and make it more general.
2267 (scm_shared_array_root): Work with all kinds of arrays, including
2268 naked vectors.
2269 (indices_to_pos): New.
74c58fce
MV
2270 (scm_make_shared_array): Use it instead of scm_aind; use handle
2271 for oldra.
2272
4475d3fe
KR
22732005-01-10 Kevin Ryde <user42@zip.com.au>
2274
2275 * posix.c (scm_mkstemp): Update docstring from manual.
2276
d3ddc95e
KR
2277 * stime.c (scm_mktime): Missing default errno=EINVAL from prev change.
2278
8c8491f5
MV
22792005-01-09 Marius Vollmer <mvo@zagadka.de>
2280
b89ecc6f
MV
2281 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_i_uniform_vector_ref_proc,
2282 scm_i_uniform_vector_set_proc): New.
2283 (u8ref, u8set, s8ref, s8set, etc): New.
2284 (uvec_reffers, uvec_setters): New.
2285 (uvec_to_list): Use generic scm_array_handle_ref instead of
2286 uvec_fast_ref since scm_array_handle_ref should be faster now.
8cb01d9f
MV
2287 (coerce_to_uvec, scm_c_uniform_vector_ref,
2288 scm_c_uniform_vector_set_x): Likewise.
b89ecc6f
MV
2289
2290 * unif.h, unif.c, inline.h (scm_i_t_array_ref, scm_i_t_array_set):
2291 New.
2292 (scm_t_array_handle): Added ref, set, elements and
2293 writable_elements for fast inline operation of
2294 scm_array_handle_ref and scm_array_handle_set.
2295 (scm_array_handle_ref, scm_array_handle_set): Moved to inline.h
2296 and replaced with inline code that simply calls the ref/set
2297 members of the handle.
2298 (enclosed_ref, vector_ref, string_ref, bitvector_ref, memoize_ref,
2299 enclosed_set, vector_set, string_set, bitvector_set, memoize_set):
2300 New.
2301 (scm_array_handle_get): Initialize ref/set fields to memoize_ref
2302 and memoize_set.
2303 (scm_bitvector_fill_x, scm_bitvector_to_list, scm_bit_count,
2304 scm_bit_position, scm_bit_set_star_x, scm_bit_count_star,
2305 scm_bit_invert_x): Correctly multiply index with increment in the
2306 general case.
2307
8c8491f5
MV
2308 * unif.c (scm_array_handle_set): Correctly execute only one
2309 alternative. D'Oh!
2310 (scm_list_to_typed_array, l2ra): Use scm_t_array_handle to fill
2311 the array; this covers all cases with much simpler code.
2312
2313 * srfi-4.c (scm_uniform_element_size): Deprecated implementation
2314 as well.
2315
cd5d55c7
MV
23162005-01-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2317
2318 * srfi-4.c (uvec_type): New.
2319 (uvec_to_list, uvec_ref, uvec_set_x, scm_c_uniform_vector_ref,
2320 scm_c_uniform_vector_x): Use it to get concrete type.
2321
2322 * unif.h (scm_t_array_dim): Changed type of members to ssize_t, to
2323 fit the docs.
2324
2325 * unif.c (ra2l): Handle zero rank arrays.
2326 (scm_i_print_array): Print zero rank arrays specially.
2327 (tag_to_type): Return #t for an empty tag, not the empty symbol.
2328 (scm_i_read_array): Allow zero rank arrays.
2329
a4aad74e
MV
23302005-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2331
2332 * hashtab.h, hashtab.c (SCM_HASHTAB_BUCKET_LOC): Removed.
2333 (scan_weak_hashtables): Rewrote its use with SCM_HASHTAB_BUCKET
2334 and SCM_SET_HASHTAB_BUCKET.
2335
2336 * print.h, print.c (scm_print_state, SCM_PRINT_STATE_LAYOUT):
2337 Removed ref_stack field.
2338 (PSTATE_STACK_REF, PSTATE_STACK_SET): New, for accessing the stack
2339 of a print state. Use them everywhere instead of ref_stack.
2340
3a40d5e1
MV
2341 * srfi-4.h (scm_uniform_element_size): Deprecated for real.
2342
a4aad74e
MV
2343 * srfi-4.c: Include deprecation.h.
2344
2345 * vectors.h, vectors.c, unif.h, unif.c, deprecated.h,
2346 deprecated.c, eq.c
2347 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Removed.
2348 (scm_vector_elements, scm_vector_writable_elements,
2349 scm_generalized_vector_get_handle): Moved to vectors.[hc] from
2350 unif.[hc].
2351 (SCM_SIMPLE_VECTOR_LOC): Removed.
2352 (SCM_VECTOR_MAX_LENGTH, SCM_VECTOR_LENGTH, SCM_VELTS,
2353 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET,
2354 scm_vector_equal_p): Moved from vectors.[hc] to deprecated.[hc].
2355 (scm_vector_equal_p, scm_i_vector_equal_p): Renamed former to
2356 latter. Changed use in eq.c.
2357
f01fe441
MV
23582005-01-07 Marius Vollmer <mvo@zagadka.de>
2359
2360 Make the uniform vector routines also deal with one dimensional
2361 arrays.
2362
2363 * srfi-4.c (SCM_IS_UVEC): New, use it instead of
2364 SCM_SMOB_PREDICATE in this file.
2365 (is_uvec): Also recognize one-dimensional uniform numeric arrays
2366 of the right type.
2367 (scm_is_uniform_vector): Likewise.
2368 (uvec_fast_ref): Made BASE param const.
2369 (uvec_writable_elements, uvec_elements): New.
2370 (uvec_to_list, uvec_ref, uvec_set_x, uvec_length,
2371 scm_c_uniform_vector_length, scm_c_uniform_vector_ref,
2372 scm_c_uniform_set_x): Use them to also deal with one-dimensional
2373 arrays.
2374 (scm_uniform_vector_ref, scm_uniform_vector_set_x): Deprecate old
2375 argument convention.
2376 (scm_uniform_vector_to_list): Let uvec_to_list do all the
2377 checking.
2378 (scm_uniform_vector_length): Use uvec_length.
2379
2aaf5726
MV
23802005-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2381
2382 * srfi-4.h, srfi-4.c (scm_c_uniform_vector_element_size,
2383 scm_c_uniform_vector_size): Removed.
2384 (scm_array_handle_uniform_element_size): New.
2385
2386
2387 * unif.h (scm_array_handle_ref, scm_array_handle_set): Changed
2388 type of POS parameter to be signed, positions can be negative.
2389 (scm_array_handle_release): New, changed all uses of
2390 scm_t_array_handle to properly call it.
2391 (scm_vector_get_handle, scm_generalized_vector_get_handle):
2392 Renamed former to latter, changed all uses.
2393
34ae52fc
MV
23942005-01-05 Marius Vollmer <mvo@zagadka.de>
2395
2396 Updated bitvector routines to also use scm_t_array_handles.
2397
2398 * unif.h (scm_bitvector_elements,
2399 scm_bitvector_writable_elements): Use a scm_t_array_handle and
2400 deliver offset, length and increment to caller. Changed all uses.
2401 (scm_bitvector_release_elements,
2402 scm_frame_bitvector_release_elements,
2403 scm_bitvector_release_writable_elements,
2404 scm_frame_bitvector_release_writable_elements): Removed.
2405 (scm_array_handle_bit_elements,
2406 scm_array_handle_bit_writable_elements,
2407 scm_array_handle_bit_elements_offset): New.
2408 (scm_make_typed_array): The special value for non-initialized
2409 arrays is now SCM_UNSPECIFIED. The old special value SCM_BOOL_F
2410 was a valid value to fill bitvectors with, so it can't really be
2411 specialed out.
2412
c4cb7628
KR
24132005-01-04 Kevin Ryde <user42@zip.com.au>
2414
2415 * stime.c (scm_strftime): Free t.tm_zone produced by bdtime2c.
2416 Reported by Bill Schottstaedt.
2417
0356881d
MV
24182005-01-02 Marius Vollmer <mvo@zagadka.de>
2419
2420 * sort.c (quicksort): Added INC parameter for non-contigous
2421 vectors.
2422 (quicksort1): New, for contigous vectors. Both functions are
2423 generated from the same code by including "quicksort.i.c".
2424 (scm_restricted_vector_sort_x): Call one of quicksort and
2425 quicksort1, depending on increment of vector.
2426 (scm_sort): Simply call scm_sort_x on a copy of the list or
2427 vector.
2428 (scm_merge_vector_x, scm_merge_vector_step): Changed indices to
2429 size_t, added inc parameter.
2430 (scm_stable_sort_x): Allocate temporary storage as Scheme vector
2431 so that it doesn't leak.
2432 (scm_stable_sort): Simply call scm_stable_sort_x on a copy of the
2433 list or vector.
2434
2435 * ramap.c (scm_array_map_x): Do not try to convert fill value
2436 before filling, any necessary conversion is done while storing.
2437
2438 * gc-card.c (scm_i_sweep_card): Call scm_i_vector_free instead of
2439 doing it inline.
2440
2441 * hashtab.c, hashtab.h (SCM_HASHTABLE_BUCKETS): Removed.
2442 (SCM_HASHTABLE_BUCKET, SCM_HASHTABLE_BUCKET_LOC): New. Replaced
2443 all uses of SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
2444
2445 * tags.h, weaks.c, vports.c, hashtab.c, convert.c, sort.c,
2446 convert.c, convert.h, convert.i.c, deprecated.c, environments.c,
2447 eval.c, filesys.c, fluids.c, gc-mark.c, gh.h, gh_data.c, goops.c,
2448 hash.c, init.c, libguile_la-arrays.loT, modules.c, net_db.c,
2449 objects.c, ports.c, posix.c, print.c, random.c, read.c,
2450 regex-posix.c, scmsigs.c, socket.c, stime.c, symbols.c: Use new
2451 vector elements API or simple vector API, as appropriate. Removed
2452 SCM_HAVE_ARRAYS ifdefery. Replaced all uses of
2453 SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
2454
2455 * srfi-4.h, srfi-4.c,
2456 srfi-4.i.c (scm_array_handle_uniform_elements,
2457 scm_array_handle_uniform_writable_elements,
2458 scm_uniform_vector_elements,
2459 scm_uniform_vector_writable_elements):
2460 (scm_<foo>vector_elements, scm_<foo>vector_writable_elements): Use
2461 scm_t_array_handle, deliver length and increment.
2462 (scm_array_handle_<foo>_elements,
2463 scm_array_handle_<foo>_writable_elements): New.
2464
2465 * gen-scmconfig.h.in (SCM_I_GSC_HAVE_ARRAYS): Removed.
2466 * gen-scmconfig.c: Hard code SCM_HAVE_ARRAYS to "1".
2467
2468 * unif.h, unif.c (scm_t_array_handle, scm_array_get_handle,
2469 scm_array_handle_rank, scm_array_handle_dims, scm_array_handle_ref
2470 scm_array_handle_set, scm_array_handle_elements
2471 scm_array_handle_writable_elements, scm_vector_get_handle): New.
2472 (scm_make_uve, scm_array_prototype, scm_list_to_uniform_array,
2473 scm_dimensions_to_uniform_array): Deprecated for real.
2474 (scm_array_p, scm_i_array_p): Use latter for SCM_DEFINE since
2475 snarfing wont allow a mismatch between C and Scheme arglists.
2476 (scm_make_shared_array, scm_enclose_array): Correctly use
2477 scm_c_generalized_vector_length instead of
2478 scm_uniform_vector_length.
2479
2480 * validate.h (SCM_VALIDATE_VECTOR,
2481 SCM_VALIDATE_VECTOR_OR_DVECTOR): use scm_is_simple_vector instead
2482 of SCM_VECTORP.
2483
2484 * weaks.h, weaks.c: Use new internal weak vector API from
2485 vectors.h.
2486
2487 * Makefile.am (libguile_la_SOURCES, DOT_X_FILES, DOT_DOC_FILES,
2488 EXTRA_libguile_la_SOURCES): Changed ramap.c and unif.c from being
2489 'extra' to being regular sources.
2490 (noinst_HEADERS): Added quicksort.i.c.
2491 * quicksort.i.c: New file.
2492
2493 * vectors.h, vector.c (SCM_VECTORP, SCM_VECTOR_LENGTH, SCM_VELTS,
2494 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET): Deprecated
2495 and reimplemented. Replaced all uses with scm_vector_elements,
2496 scm_vector_writable_elements, or SCM_SIMPLE_VECTOR_*, as
2497 appropriate.
2498 (scm_is_simple_vector, SCM_SIMPLE_VECTOR_LENGTH,
2499 SCM_SIMPLE_VECTOR_REF, SCM_SIMPLE_VECTOR_SET,
2500 SCM_SIMPLE_VECTOR_LOC): New.
2501 (SCM_VECTOR_BASE, SCM_SET_VECTOR_BASE, SCM_VECTOR_MAX_LENGTH,
2502 SCM_MAKE_VECTOR_TAG, SCM_SET_VECTOR_LENGTH,
2503 SCM_VELTS_AS_STACKITEMS, SCM_SETVELTS, SCM_GC_WRITABLE_VELTS):
2504 Removed.
2505 (scm_vector_copy): New.
2506 (scm_vector_elements, scm_vector_writable_elements): Use
2507 scm_t_array_handle, deliver length and increment. Moved to
2508 unif.h. Changed all uses.
2509 (scm_vector_release_elements,
2510 scm_vector_release_writable_elements,
2511 (scm_frame_vector_release_elements,
2512 scm_frame_vector_release_writable_elements): Removed.
2513 (SCM_I_IS_VECTOR, SCM_I_VECTOR_ELTS, SCM_I_VECTOR_WELTS,
2514 SCM_I_VECTOR_LENGTH, scm_i_vector_free): New internal API.
2515 (SCM_I_WVECTP SCM_I_WVECT_LENGTH SCM_I_WVECT_VELTS
2516 SCM_I_WVECT_GC_WVELTS SCM_I_WVECT_TYPE SCM_I_WVECT_GC_CHAIN
2517 SCM_I_SET_WVECT_GC_CHAIN, scm_i_allocate_weak_vector): New, for
2518 weak vectors.
2519
0336d18b
MV
25202004-12-29 Marius Vollmer <mvo@zagadka.de>
2521
2522 No longer use creators to specify the type of an array. Creators
2523 expose the fact that arrays are wrapped around vectors, but that
2524 might change.
2525
2526 * srfi-4.h (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector,
2527 scm_i_proc_make_u16vector, scm_i_proc_make_s16vector,
2528 scm_i_proc_make_u32vector, scm_i_proc_make_s32vector,
2529 scm_i_proc_make_u64vector, scm_i_proc_make_s64vector,
2530 scm_i_proc_make_f32vector, scm_i_proc_make_f64vector,
2531 scm_i_proc_make_c32vector, scm_i_proc_make_c64vector,
2532 uvec_proc_vars): Removed.
2533 (scm_i_generalized_vector_creator): Removed.
2534 (scm_i_generalized_vector_type): New.
2535
2536 * unif.h, unif.c (scm_typed_array_p, scm_make_array,
2537 scm_make_typed_array, scm_array_type, scm_list_to_array,
2538 scm_list_to_typed_array, scm_is_array, scm_is_typed_array): New.
2539 (scm_array_creator): Removed.
2540 (scm_array_p): Deprecated second PROT argument.
2541 (scm_dimensions_to_uniform_array, scm_list_to_uniform_array):
2542 Deprecated, reimplemented in terms of scm_make_typed_array and
2543 scm_list_to_typed_array.
2544 (scm_i_proc_make_vector, scm_i_proc_make_string,
2545 scm_i_proc_make_bitvector): Removed.
2546 (type_creator_table, init_type_creator_table, type_to_creator,
2547 make_typed_vector): New.
2548 (scm_i_convert_old_prototype): Removed.
2549 (prototype_to_type): New.
2550 (scm_make_uve): Deprecated, reimplemented using make_typed_vector.
2551 (scm_array_dimensions): Use scm_list_1 instead of scm_cons for
2552 minor added clarity.
2553 (scm_make_shared_array, scm_ra2contig): Use make_typed_vector
2554 instead of scm_make_uve.
2555 (tag_creator_table, scm_i_tag_to_creator): Removed.
2556 (tag_to_type): New.
2557 (scm_i_read_array): Use scm_list_to_typed_array instead of
2558 scm_list_to_uniform_array.
2559
277e8472
MV
25602004-12-27 Marius Vollmer <mvo@zagadka.de>
2561
32b26202
MV
2562 * unif.h, unif.c (scm_bitvector_elements): Made return value "const".
2563 (scm_bitvector_writable_elements): New.
2564 (scm_bitvector_release, scm_bitvector_release_elements):
2565 Renamed former to latter. Added explicit call to
2566 scm_remember_upto_here_1.
2567 (scm_frame_bitvector_release,
2568 scm_frame_bitvector_release_elements): Renamed former to latter.
2569 (scm_bitvector_release_writable_elements,
2570 scm_bitvector_release_writable_elements): New.
2571 Changed all uses as required by the changes above.
2572
2573 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_uniform_vector_elements,
2574 scm_u8vector_elements, etc): Made return value "const".
2575 (scm_uniform_vector_writable_elements,
2576 scm_u8vector_writable_elements, etc): New.
2577 (scm_uniform_vector_release, scm_uniform_vector_release_elements):
2578 Renamed former to latter. Added explicit call to
2579 scm_remember_upto_here_1.
2580 (scm_frame_uniform_vector_release,
2581 scm_frame_uniform_vector_release_elements): Renamed former to latter.
2582 (scm_uniform_vector_release_writable_elements,
2583 scm_frame_uniform_vector_release_writable_elements): New. Takes
2584 crown of longest identifier yet.
2585 Changed all uses as required by the changes above.
2586
277e8472
MV
2587 * vectors.h, vectors.c (scm_c_vector_set_x): Make return type
2588 void.
2589 (scm_is_vector, scm_vector_p, scm_vector_length,
2590 scm_c_vector_length, scm_vector_ref, scm_c_vector_ref,
2591 scm_vector_set_x, scm_c_vector_set_x, scm_vector_to_list,
2592 scm_vector_move_left_x, scm_vector_move_right_x,
2593 scm_vector_fill_x): handle one-dimensional arrays.
32b26202
MV
2594 (scm_vector_elements, scm_vector_release_elements,
2595 scm_vector_frame_release_elements, scm_vector_writable_elements,
2596 scm_vector_release_writable_elements,
2597 scm_vector_frame_release_writable_elements): New.
2598 (scm_list_to_vector, scm_vector_to_list, scm_vector_fill,
2599 scm_vector_move_left_x, scm_vector_move_right_x): Use them.
277e8472
MV
2600
2601 * ramap.c (scm_ramapc, scm_raeql): Use
2602 scm_c_generalized_vector_length instead of
2603 scm_uniform_vector_length.
2604 (scm_ramap, rafe): Use scm_c_vector_ref instead of SCM_VELTS. use
2605 scm_c_generalized_vector_ref instead of scm_uniform_vector_ref.
2606
49c51610
MV
26072004-12-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2608
2609 * continuations.h, continuations.c (scm_t_contregs): New 'offset'
2610 member for relocating debug frames.
2611 (scm_make_continuation): Set it.
2612
2613 * stacks.c (read_frame, read_frames, scm_make_stack,
2614 scm_last_stack_frame, scm_stack_id): Use the new 'offset' member
2615 of continuations instead of calculating the offset ourselves.
2616 Relocate 'vect' member of scm_t_debug_frame.
2617
3b2ee265
KR
26182004-12-16 Kevin Ryde <user42@zip.com.au>
2619
2620 * ramap.c (scm_array_map_x): Check for at least one source argument.
2621
e120686a
KR
26222004-12-14 Kevin Ryde <user42@zip.com.au>
2623
2624 * srfi-13.c (string-any, string-every): Use a scheme wrapper around
2625 the C code so for the final call to the predicate procedure is a tail
2626 call, per SRFI-13 spec.
2627
680b5237
KR
26282004-12-10 Kevin Ryde <user42@zip.com.au>
2629
2630 * eq.c (scm_eq_p, scm_eqv_p, scm_equal_p): Update docstrings from
2631 recent revision to the reference manual.
2632
2633 * numbers.c (scm_modulo): Amend fixme comment about negative divisor
2634 with "%", C99 says it's well-defined.
2635
2636 * socket.c (scm_from_ipv6): Just use mpz_import. Don't bother trying
2637 to fit scm_from_ulong_long, since that uses mpz_import anyway. Don't
2638 bother trying to fit scm_from_ulong, not really worth the trouble if
2639 addresses are more than 4 bytes usually.
2640
446d320c
KR
26412004-11-30 Kevin Ryde <user42@zip.com.au>
2642
2643 * gc_os_dep.c (NetBSD): Test __m68k__ and __arm__ as well as m68k and
2644 arm32. Reported by Greg Troxel.
2645
f2654760
MV
26462004-11-14 mvo <mvo@zagadka.de>
2647
2648 * unif.c, unif.h (scm_i_cvref): Made non-static for ramap.c.
2649
2650 * Makefile.am (INCLUDES): It is "@LTDLINCL@", not "@LTDLINC@".
2651
d550e35f
MV
26522004-11-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2653
2654 Enclosed arrays are now their own smob. This has been done to
2655 make the code more explicit about them and to prepare for the time
f2654760
MV
2656 when generalized vectors include arbitrary one-dimensional
2657 arrays. (Uptonow, enclosed arrays have been recognized by their
2658 use of an array as their storage 'vector'. When all generalized
2659 vectors are allowed as storage, including one-dimensional arrays,
2660 this will no longer work.)
d550e35f
MV
2661
2662 * unif.h, unif.c: (scm_tc16_enclosed_array, SCM_ENCLOSED_ARRAYP):
2663 New.
2664 (exactly_one_third, singp): Removed.
2665 (scm_array_p, scm_array_dimensions, scm_shared_array_root,
2666 scm_shared_array_offset, scm_shared_array_increments): Handle
2667 enclosed arrays explicitely.
2668 (scm_array_rank): Likewise. Also, do not return zero for
2669 non-arrays, signal an error instead since arrays with rank zero do
2670 exist.
2671 (scm_i_make_ra): New, for specifying the tag of the new array.
2672 (scm_make_enclosed_array): Use it.
2673 (scm_make_ra): Reimplemented in terms of scm_i_make_ra.
2674 (scm_make_shared_array): Use scm_c_generalized_vector_length
2675 instead of scm_uniform_vector_length.
2676 (scm_array_in_bounds_p): Rewritten to be much cleaner.
2677 (scm_i_cvref): New, doing the job of scm_cvref.
2678 (scm_cvref): Use scm_i_cvref.
2679 (scm_array_ref): Do not accept non-arrays when no indices are
2680 given. Use scm_i_cvref to do the actual access.
2681 ("uniform-array-set1"): Do not register.
2682 (scm_array_set_x, scm_uniform_array_read_x,
2683 scm_uniform_array_write): Handle enclosed arrays explicitly.
2684 (ra2l): Use scm_i_cvref instead of scm_uniform_vector_ref to also
2685 handle enclosed arrays.
2686 (scm_array_to_list): Handle enclosed arrays explicitly.
2687 (rapr1): Removed.
2688 (scm_i_print_array_dimension): Use scm_i_cvref to also handle
2689 enclosed arrays.
2690 (scm_i_print_enclosed_array): New.
2691 (tag_proto_table, tag_creator_table): Renamed former to latter.
2692 Added "a" and "b" for strings and bitvectors, resp.
2693 (scm_i_tag_to_prototype, scm_i_tag_to_creator): Renamed former to
2694 latter. Tag "a" is in the table now, no need to handle it as a
2695 legacy tag.
2696 (scm_raprin1): Just call scm_iprin1.
2697 (scm_array_creator, scm_array_prototype): Handle enclosed arrays
2698 explicitly.
2699 (scm_init_unif): Initialize scm_tc16_enclosed_array smob.
2700 Use scm_i_print_array as printer for scm_tc16_array.
2701
2ed34885
MV
27022004-11-10 Marius Vollmer <mvo@zagadka.de>
2703
823086c1
MV
2704 * ramap.c (cind): Changed second arg to be pointer to long instead
2705 of uniform vector.
2706 (scm_ramapc): Allocate index vector with scm_malloc and not as
d550e35f 2707 uniform vector. Wrap it in a frame so that it gets properly freed.
823086c1
MV
2708 (scm_array_index_map_x): Likewise.
2709
2710 * unif.c: Changed all uses of scm_array_prototype to
2711 scm_array_creator. (scm_i_get_old_prototype): Signal error when no
2712 prototype is known.
2713 (scm_uniform_array_read_x, scm_uniform_array_write): Reimplemented
2714 in terms of scm_uniform_vector_read_x and
2715 scm_uniform_vector_write, respectively. Strings and
2716 bitvector support has been dropped.
2717
2ed34885
MV
2718 * srfi-4.h, srfi-4.c: Do not include <libguile.h>, include the
2719 needed files directly. Include config.h, <unistd.h> and <io.h>
2720 when available.
2721 (scm_uniform_vector_read_x, scm_uniform_vector_write): New.
2722
2c72f253
MV
27232004-11-09 Marius Vollmer <mvo@zagadka.de>
2724
2725 * gh_data.c (gh_uniform_vector_length): Properly use
2726 scm_c_uniform_vector_length instead of scm_uniform_vector_length.
2727
3cc0a296
MV
27282004-11-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2729
2730 * srfi-4.h (scm_c_uniform_vector_ref, scm_c_uniform_vector_set_x):
2731 New.
2732 (scm_i_uniform_vector_creator): Removed.
2733 (scm_i_generalized_vector_creator): New.
2734 (scm_uniform_vector_length, scm_uniform_element_size): Do not
2735 handle generalized vectors, only uniform numeric vectors.
2736 (alloc_uvec): Do length check here...
2737 (make_uvec): ...but not here.
2738 (coerce_to_uvec): Use new generalized vector functions to handle
2739 all kinds of vectors in one go.
2740
2741 * tags.h (scm_tc7_bvect): Renamed to scm_tc7_unused7, renaming the
2742 remaining scm_tc7_unused tags to get a neatly ordered list.
2743
2744 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c: Do no
2745 longer handle scm_tc7_bvect bitvectors.
2746
2747 * ramap.c: Use the new generalized vector functions to handle all
2748 vector like things.
2749
2750 * vectors.h, vectors.c (scm_is_vector, scm_c_vector_length,
2751 scm_c_vector_ref, scm_c_vector_set_x, scm_generalized_vector_p,
2752 scm_generalized_vector_length, scm_generalized_vector_ref,
2753 scm_generalized_vector_set_x, scm_generalized_vector_to_list,
2754 scm_is_generalized_vector, scm_c_generalized_vector_length,
2755 scm_c_generalized_vector_ref, scm_c_generalized_vector_set_x):
2756 New.
2757
2758 * unif.h, unif.c (scm_bitvector_p, scm_bitvector,
2759 scm_make_bitvector, scm_bitvector_length, scm_bitvector_ref,
2760 scm_bitvector_set_x, scm_list_to_bitvector, scm_bitvector_to_list,
2761 scm_bitvector_fill_x, scm_is_bitvector, scm_c_make_bitvector,
2762 scm_c_bitvector_length, scm_c_bitvector_ref,
2763 scm_c_bitvector_set_x, scm_bitvector_elements,
2764 scm_bitvector_release, scm_frame_bitvector_release,
2765 scm_tc16_bitvector, bitvector_free, bitvector_print,
2766 bitvector_equalp, count_ones, find_first_one): New.
2767 (scm_bit_count, scm_bit_position, scm_bit_set_star_x,
2768 scm_bit_count_star, scm_bit_invert_x, scm_istr2bve): Rewritten
2769 using the new C API for bitvectors and maybe count_ones or
2770 find_first_one, as appropriate.
2771 (SCM_I_MAX_LENGTH, SCM_BITVECTOR_P, SCM_BITVECTOR_BASE,
2772 SCM_SET_BITVECTOR_BASE, SCM_BITVECTOR_MAX_LENGTH,
2773 SCM_BITVECTOR_LENGTH, SCM_MAKE_BITVECTOR_TAG,
2774 SCM_SET_BITVECTOR_LENGTH): Removed. Replaced all uses with the
2775 new functions from above.
2776 (scm_i_proc_make_vector, scm_i_proc_make_string,
2777 scm_i_proc_make_bitvector): Made non-static for use in
2778 scm_i_generalized_vector_creator.
2779 (scm_make_u1vector): Removed, replaced by scm_make_bitvector.
2780 (scm_make_uve): Validate that the created object is a generalized
2781 vector.
2782 (scm_i_legacy_tag): Removed.
2783 (scm_i_print_array): Do it here.
2784 (scm_raprin1): Only print enclosed arrays.
2785
2786 * Makefile.am (DOT_DOC_FILES): Added srfi-4.doc.
2787
c24d026b
MV
27882004-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2789
1f2328fe
MV
2790 * srfi-4.c (make_uvec): Use SCM_I_SIZE_MAX instead of SIZE_MAX for
2791 added portability.
2792
2793 * chars.c (scm_charnames, scm_charnums): Added "sp" as an alias
2794 for "space". Thanks to Bruce Korb!
2795
c24d026b
MV
2796 * rw.c (scm_read_string_x_partial): Bugfix, apply offset to dest
2797 only after dest has been set. Thanks to Hyper Division!
2798
2799 * gh_data.c (gh_uniform_vector_length): Use
2800 scm_uniform_vector_length instead of SCM_UVECTOR_LENGTH.
2801
d4ea47c8
MV
28022004-11-03 Marius Vollmer <mvo@zagadka.de>
2803
2804 * unif.h (SCM_UVECTOR_BASE, SCM_SET_UVECTOR_BASE,
2805 SCM_UVECTOR_MAXLENGTH, SCM_UVECTOR_LENGTH, SCM_MAKE_UVECTOR_TAG,
2806 SCM_SET_UVECTOR_LENGTH): Removed.
2807
236288e2
MV
28082004-11-02 Marius Vollmer <mvo@zagadka.de>
2809
9a5fa6e9 2810 Mac OS X and OpenBSD compatibility patches from Andreas Vögele.
236288e2
MV
2811 Thanks!
2812
2813 * backtrace.c (scm_display_backtrace_with_highlights): Join the
2814 first and the second line of the SCM_DEFINE macro call, since old
2815 preprocessors cannot handle definitions that are split into two
2816 lines.
2817
2818 * inline.h (scm_cell, scm_double_cell): Don't use C99 variable
2819 declarations.
2820
2821 * pairs.c (scm_i_chase_pairs): Replace scm_t_bits with
2822 scm_t_uint32 to fix the mismatch between the function declaration
2823 and definition.
2824
2825 * sort.c (quicksort): Don't use C99 variable declarations.
2826
2827 * srfi-4.c (uvec_fast_ref): Avoid a compiler warning by returning
2828 SCM_BOOL_F if no type matches.
2829
2830 * threads.c (thread_print): Cast a pointer to size_t when printing
2831 with scm_uintprint.
2832
2833 * unif.c (scm_i_tag_to_prototype): Make sure that "instead" gets
2834 defined.
2835 (scm_array_prototype): Deprecated.
2836
f738b51d
MV
28372004-11-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2838
5d1015ec
MV
2839 * srfi-4.h, srfi-4.c (scm_frame_uniform_vector_release): New.
2840 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use it to get
2841 more efficient access to the u32vector.
2842
034486df
MV
2843 * tags.h (scm_tc7_llvect, scm_tc7_uvect, scm_tc7_fvect,
2844 scm_tc7_dvect, scm_tc7_cvect, scm_tc7_svect, scm_tc7_byvect,
2845 scm_tc7_ivect): Renamed to scm_tc7_unused_1 to scm_tc7_unused_8.
2846
2847 * validate.h (SCM_VALIDATE_VECTOR_OR_DVECTOR): Accept f64vectors
2848 instead of the old-style dvectors.
2849
2850 * gh_data.c: Use new-style uniform arrays in place of old-style
2851 ones.
2852
2853 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c,
2854 ramap.c, unif.c: Do no longer handle old-style uniform vectors.
2855
2856 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use u32vectors
2857 instead of old-sytle uvectors.
2858
2859 * convert.c, convert.i.c: Rewritten completely, using
2860 scm_any_to_u8vector, etc and other new-style uniform vector
2861 functions.
2862
2863 * random.c (scm_random_solid_sphere_x,
2864 scm_random_hollow_sphere_x): Do not validate vector argument, this
2865 is already done elsewhere.
2866
2867 * srfi-4.h, srfi-4.i.c, srfi-4.c (coerce_to_uvec,
2868 scm_any_to_u8vector, etc): New.
2869 (scm_uniform_element_size, scm_uniform_vector_length): Do no
2870 longer handle old-style uniform vectors.
2871
f738b51d
MV
2872 * read.c (scm_lreadr): Bugfix: include the last bit in the
2873 bit vector.
2874
5e9c05a1
MV
28752004-10-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2876
327114a2
MV
2877 * unif.h, unif.c (scm_array_creator): New.
2878 (scm_i_get_old_prototype): New.
2879 (scm_array_prototype): use it to return old-style prototype, never
2880 return creators.
2881 (scm_make_uve): Use scm_call_1 instead of scm_call_2 with a second
2882 arg of SCM_UNDEFINED. The latter is wrong.
2883
5e9c05a1
MV
2884 * unif.h, unif.c (scm_make_u1vector): New, but only temporary.
2885 (make_uve): Removed.
2886 (scm_i_proc_make_vector, scm_i_proc_make_string,
2887 scm_i_proc_make_u1vector): New.
2888 (scm_init_unif): Initialize them.
2889 (scm_i_convert_old_prototype): New.
2890 (scm_make_uve): Use it to get the creator procedure. Removed all
2891 old code that created old-style uniform vectors.
2892 (scm_array_p): Handle generic vectors.
2893 (scm_dimensions_to_uniform_array): Do not fill new array with
2894 prototype when that is a procedure.
2895 (scm_list_to_uniform_array): Also accept a list of lower bounds as
2896 the NDIM argument.
2897 (scm_i_print_array): Print rank for shared or non-zero-origin
2898 vectors.
2899 (tag_proto_table, scm_i_tag_to_prototype, scm_i_read_array): New.
2900 (scm_raprin1): Do not call scm_i_array_print for enclosed arrays,
2901 which I do not understand yet.
2902 (scm_array_prototype): Explicitely handle generic vectors.
327114a2 2903
5e9c05a1
MV
2904 * numbers.c, number.h (scm_i_print_complex, icmplx2str): New.
2905 (iflo2str): Use icmplx2str for complex numbers.
2906
2907 * srfi-4.c, srfi-4.h (scm_i_read_homogenous_vector,
2908 scm_i_uniform_vector_prototype): Removed.
2909 (scm_i_uniform_vector_creator): New.
2910 (SCM_UVEC_C32, scm_c32vector, scm_make_c32vector, etc,
2911 SCM_UVEC_C64, scm_c64vector, scm_make_c64vector, etc): New.
2912 Updated all tables and generic functions to support them.
2913 (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector, etc): New.
2914 (scm_init_srfi_4): Initialize them.
2915
2916 * srfi-4.i.c (scm_take_u8vector, etc): use uvec_sizes instead of
2917 sizeof(CTYPE) as explained in the comment.
2918
2919 * read.c (scm_lreadr): Call scm_i_read_array for all characters
50472546 2920 following '#' that can start an array. Explicitely disambiguate
5e9c05a1
MV
2921 'i' and 'e' between introducing numbers and uniform vectors. Do
2922 not call scm_i_read_homogenous_vector, since that is also handled
2923 by scm_i_read_array now.
2924
f984af07
MV
29252004-10-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2926
2927 First cut at integrating uniform vectors from srfi-4 with the rest
2928 of Guile. This change replaces scm_tc7_byvect with a s8 uniform
2929 vector. The plan is to gradually replace one type after the other
2930 until none is left and then to consider general cleanups and
2931 optimizations.
2932
2933 * srfi-4.h, srfi-4.i.c (scm_u8vector_elements, etc): New.
2934
2935 * srfi-4.h, srfi-4.c (scm_uniform_vector_p,
2936 scm_uniform_vector_ref, scm_uniform_vector_set_x,
2937 scm_uniform_vector_to_list, scm_is_uniform_vector,
2938 scm_c_uniform_vector_lengths, scm_c_uniform_vector_size,
2939 scm_uniform_vector_elements, scm_uniform_vector_element_size,
2940 scm_uniform_vector_release): New.
2941 (scm_i_uniform_vector_prototype, scm_i_uniform_vector_tag): New.
2942 (scm_uniform_element_size, scm_uniform_vector_length): Moved here
2943 from unif.h, unif.c and extended to handle both the old and new
2944 uniform vectors.
2945
2946 * tags.h (scm_tc7_byvect): Commented out.
2947
2948 * unif.h, unif.c (scm_uniform_vector_ref, scm_array_ref): Renamed
2949 the former to the latter.
2950 (scm_uniform_vector_length, scm_uniform_element_size): Moved to
2951 srfi-4.h, srfi-4.c.
2952 (scm_make_uve): Call scm_make_s8vector for #\nul prototype.
2953 (scm_array_p, scm_array_rank, scm_array_dimensions,
2954 scm_transpose_array, scm_enclose_array, scm_array_ref, scm_cvref,
2955 scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
2956 scm_array_to_list, scm_array_prototype): Handle srfi-4 uniform
2957 vectors. Removed code for scm_tc7_byvect.
2958 (scm_dimensions_to_uniform_array): Fill array with 0 when
2959 prototype is #\nul.
2960 (scm_i_print_array_dimension, scm_i_legacy_tag,
2961 scm_i_print_array): New.
2962 (scm_raprin1): Call scm_i_print_array for arrays. Removed code
2963 for scm_tc7_byvect.
2964
2965 * ramap.c (scm_ra_matchp, scm_array_fill_int, racp,
2966 scm_array_index_map_x, raeql_1, scm_array_equal_p): Handle srfi-4
2967 uniform vectors. Removed code for scm_tc7_byvect
2968
2969 * print.c (iprin1): Removed code for scm_tc7_byvect.
2970 * objects.c (scm_class_of): Likewise.
2971 * gc-mark.c (scm_gc_mark_dependencies): Likewise.
2972 * gc-card.c (scm_i_sweep_card): Likewise.
2973 * evalext.c (scm_self_evaluating_p): Likewise.
2974 * eq.c (scm_equal_p): Likewise.
2975
2976 * gh_data.c (gh_chars2byvect): Reimplemented with
2977 scm_make_s8vector.
2978 (gh_scm2chars): Handle s8vectors, removed code for scm_tc7_byvect.
2979
2980 * srfi-4.c (take_uvec): New.
2981 (alloc_uvec): Use it.
2982 * srfi-4.h, srfi-4.i.c (scm_take_u8vector, etc): New.
2983
2984 * random.c (vector_scale, vector_scale_x): Renamed former to the
2985 latter, since it modifies its argument.
2986 (vector_scale_x, vector_sum_squares, scm_random_normal_vector_x):
2987 Do not use scm_universal_vector_length for non-uniform vectors.
2988 Use scm_f64vector_elements to access innards of uniform vectors.
2989
2990 * convert.i.c: Convert srfi-4 style uniform vectors when
2991 requested.
2992 * convert.c (scm_c_scm2chars, scm_c_chars2scm,
2993 scm_c_chars2byvect): Use a s8vector instead of a scm_tc7_byvect.
2994
79d52182
MV
29952004-10-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2996
2997 * numbers.h, numbers.c (scm_i_print_double): New.
2998
2999 * srfi-4.c, srfi-4.h, srfi-4.i.c: New files, initially from
3000 ../srfi/ but heavily modified.
3001 * Makefile.am: Add them in all the right places.
3002 * init.c (scm_init_guile_1): Call scm_init_srfi_4.
3003 * read.c (scm_lreadr): Call scm_i_read_homogenous_vector for '#f',
3004 '#u', and '#s'.
3005
3006 * read.h, read.c (scm_i_input_error): Renamed from scm_input_error
3007 and made non-static. Changed all uses.
3008
6191ccec
MV
30092004-10-22 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3010
e64e80b0
MV
3011 * variable.c, threads.c, struct.c, stackchk.c, smob.c, root.c,
3012 print.c, ports.c, mallocs.c, hooks.c, hashtab.c, fports.c,
3013 guardians.c, filesys.c, coop-pthreads.c, continuations.c: Use
3014 scm_uintprint to print unsigned integers, raw heap words, and
3015 adresses, using a cast to scm_t_bits to turn pointers into
3016 integers.
3017
3018 * unif.c: Include "libguile/print.h".
3019
c90ac3a8
MV
3020 * numbers.h, numbers.c (SCM_T_INTBUFLEN): Increased to cover
3021 scm_t_intmax values.
3022 (scm_uint2str): New, for scm_t_uintmax.
3023 (scm_iint2str): Argument type changed to scm_t_intmax,
3024 reimplemented in terms of scm_uint2str.
3025
3026 * print.c, print.h (scm_uintprint): New, for printing
3027 scm_t_uintmax values.
3028 (scm_intprint): Argument type changed to scm_t_intmax.
3029
77c2594f
MV
3030 * sort.c (quicksort, scm_merge, scm_merge_list_x,
3031 scm_merge_list_step, scm_merge_vector_step): Inserted SCM_TICKs at
3032 strategic places so that the loops can be interrupted.
3033
6191ccec
MV
3034 * Makefile.am (INCLUDES): Use @LTDLINC@ instead of
3035 "-I$(top_srcdir)/libguile-ltdl".
3036 (libguile_la_LIBADD): Use @LIBLTDL@ instead of
3037 "../libguile-ltdl/libguile-ltdl.a".
3038
3039 * guile.c, dynl.c: Switched to using libltdl directly. Replaced
3040 all references to scm_lt_* with just lt_*. Include <ltdl.h>
3041 instead of <libguile-ltdl.h>.
3042
77600f3e
MV
30432004-10-20 Marius Vollmer <mvo@zagadka.de>
3044
3045 * sort.c (quicksort): Copy pivot out of the array while
3046 constructing the partitions; it could get overwritten otherwise.
3047 Because of the ultimate insertion sort, this bug did not cause
3048 quicksort to fail, it just put all the burdon on the insertion
3049 sort and was thus very slow. Thanks to Rolan Orre for reporting
3050 the slowness!
3051
5000379b
MV
30522004-10-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3053
192cd792
MV
3054 * numbers.c (scm_i_range_error): New.
3055 * conv-integer.i.c, conv-uinteger.i.c: Use it instead of
3056 scm_out_of_range.
3057
3058 * sort.c (scm_restricted_vector_sort_x): Validate startpos <=
6191ccec 3059 endpos. State inclusiveness/exclusiveness of bounds in docstring.
192cd792
MV
3060
3061 * unif.c (scm_array_p): When no prototype is given, explicitely
3062 test for allowable types, do not simply return true. Thanks to
3063 Roland Orre for reporting this!
3064
5000379b
MV
3065 * private-gc.h (SCM_DEFAULT_MAX_SEGMENT_SIZE): Increase to 20 Mib.
3066
3067 * gc-segment.c (scm_i_get_new_heap_segment): Limit size of new
3068 segment to scm_max_segment_size.
3069
497eb0b7
HWN
30702004-10-08 Han-Wen Nienhuys <hanwen@xs4all.nl>
3071
1367aa5e
HWN
3072 * gc.c (scm_igc): put scm_gc_running-- before running hooks.
3073
497eb0b7
HWN
3074 * inline.h (scm_double_cell): abort if GC running.
3075 (scm_cell): idem.
3076
aef0bdb4
MV
30772004-10-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3078
3079 * error.c (scm_wrong_type_arg): Do not talk about "argument" for
3080 pos == 0.
3081
3082 Keywords no longer store a 'dash symbol'. Instead, they store a
3083 symbol with their real name.
3084
3085 * keywords.h, keywords.c, deprecated.h, deprecated.c
3086 (SCM_KEYWORDP, SCM_KEYWORDSYM): Deprecated and implemented in
3087 terms of scm_is_keyword and scm_keyword_dash_symbol.
3088
3089 * keywords.h, keywords.c, discouraged.h, discouraged.c
3090 (scm_make_keyword_from_dash_symbol, scm_keyword_dash_symbol,
3091 scm_c_make_keyword): Discouraged.
3092
3093 * keywords.h, keywords.c (scm_symbol_to_keyword,
3094 scm_keyword_to_symbol): Implemented in C.
3095 (scm_is_keyword, scm_from_locale_keyword,
3096 scm_from_locale_keywordn): New.
3097
3098 * goops.c: Replaced SCM_KEYWORDP with scm_is_keyword.
3099
3100 * snarf.h (SCM_KEYWORD, SCM_GLOBAL_KEYWORD): Use
3101 scm_from_locale_keyword instead of scm_c_make_keyword.
3102
3103 * keywords.c (scm_symbol_to_keyword): Use SCM_ASSERT_TYPE for a
3104 better error message.
3105
3106 * deprecated.c: Include discouraged.h and keywords.h.
3107
3108 * read.c (scm_lreadr): Simply do (symbol->keyword (read)) after
3109 reading '#:' or ':'. See NEWS for consequences.
3110
818deb11
MV
31112004-09-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3112
43c25626
MV
3113 * read.c (scm_lreadr): Revert change from 2004-09-22: string
3114 literals are now read-write again (until SCM_STRING_CHARS is
3115 removed).
3116
3117 * strings.c (SCM_STRING_CHARS): Explicitely reject read-only
3118 strings with an error message that blames SCM_STRING_CHARS.
3119
3120 * options.c (change_option_setting): Use scm_car instead of
3121 explicit type check plus SCM_CAR.
3122
3123 * print.h, print.c (SCM_PRINT_HIGHLIGHT_PREFIX,
3124 SCM_PRINT_HIGHLIGHT_SUFFIX): New printer options.
3125 (scm_iprin1): Use them instead of the previoulsy hardcoded
3126 strings.
3127 (scm_init_print): Initialize them.
3128
3129 * backtrace.c (display_frame_expr): Do not remove control
3130 characters from the final string. Print it directly using
3131 scm_display.
3132
818deb11
MV
3133 * ramap.c (scm_array_equal_p): Include scm_tc7_svect in switch.
3134 Thanks to Roland Orre!
3135
d748089e
KR
31362004-09-29 Kevin Ryde <user42@zip.com.au>
3137
3138 * regex-posix.c (scm_regexp_exec): Correction to last change, should
3139 be whole original string in match struct, not offsetted substring.
3140
0ff7e3ff
HWN
31412004-09-24 Han-Wen Nienhuys <hanwen@xs4all.nl>
3142
3143 * gc.c (scm_gc_unprotect_object): abort if called during GC.
3144
ad7de4b8
MV
31452004-09-24 Marius Vollmer <mvo@zagadka.de>
3146
2edf319f
MV
3147 * Makefile.am (EXTRA_DIST): Added gettext.h.
3148
d180337b
MV
3149 * smob.c, smob.h (scm_assert_smob_type): New.
3150
05d7cf89 3151 * Makefile.am (guile_CFLAGS, guile_LDFLAGS, libguile_la_CFLAGS):
ad7de4b8
MV
3152 Include GUILE_CFLAGS.
3153 (libguile_la_LIBADD): Removed THREAD_LIBS_LOCAL, which is unused
3154 now.
3155 (libpath.h): Put GUILE_CFLAGS in the build-info.
3156
c9fedf8a
MV
31572004-09-23 Marius Vollmer <mvo@zagadka.de>
3158
3159 * print.h (scm_print_state): Added highlight_objects.
3160 * print.c (make_print_state, scm_free_print_state): Initialize it
3161 to SCM_EOL.
3162 (scm_iprin1): Wrap output in '{...}' when object is contained in
3163 highlight_objects.
3164
3165 * backtrace.h, backtrace.c (scm_display_backtrace_with_highlights,
3166 scm_backtrace_with_highlights): New. Set highlight_objects of
3167 printstate.
3168
3169 * error.c (scm_error_scm): Document new meaning of data/rest
3170 argument for out-of-range and wrong-type-arg errors.
3171 (scm_out_of_range, scm_out_of_range_pos, scm_wrong_type_arg,
3172 scm_wrong_type_arg_msg): Pass bad_value in rest argument of
3173 exception so that it gets highlighted in the backtrace.
3174 Don't talk about "argument" when not giving a position.
3175
3176 * throw.c (handler_message): The rest argument is the fourth
3177 argument, not everything after the third. Call
3178 scm_display_backtrace_with_highlights, passing the rest argument
3179 when appropriate.
3180
d5ac9b2a
MV
31812004-09-22 Marius Vollmer <mvo@zagadka.de>
3182
3183 From Jan Nieuwenhuizen <janneke@gnu.org> and Bruno Haible
3184 <bruno@clisp.org>:
3185
3186 * i18n.c: Handle --disable-nls (thanks Bruno).
3187
3188 * posix.c (scm_init_posix): Add LC_PAPER, LC_NAME, LC_ADDRESS,
3189 LC_TELEPHONE, LC_MEASUREMENT, LC_IDENTIFICATION.
3190
3191 * i18n.c (scm_i_to_lc_category): New name and export. Support all
3192 LC categories.
05d7cf89 3193 * posix.c (scm_setlocale): Use it.
d5ac9b2a
MV
3194
3195 * i18n.h, i18n.c (scm_textdomain, scm_bindtextdomain,
3196 scm_bind_textdomain_codeset): Make wrappers similar to C function
3197 they wrap.
3198
3199 * i18n.h: New file.
3200 * i18n.c: New file.
3201 * gettext.h: New file, taken from GNU gettext.
3202 * init.c: Include libguile/i18n.h.
3203 (scm_init_guile_1): Add call to scm_init_i18n().
3204 * Makefile.am (libguile_la_SOURCES): Add i18n.c.
3205 (DOT_X_FILES): Add i18n.x.
3206 (DOT_DOC_FILES): Add i18n.doc.
3207 (libguile_la_LDFLAGS): Add @LTLIBINTL@.
3208 (modinclude_HEADERS): Add i18n.h.
3209
d2e53ed6
MV
32102004-09-22 Marius Vollmer <mvo@zagadka.de>
3211
2cdfe016
MV
3212 * gh_list.c: Replaced SCM_CAR, etc with scm_car, etc.
3213
d2e53ed6
MV
3214 * discouraged.h, tags.h (SCM_CONSP, SCM_NCONSP): Moved to
3215 discouraged.h. Replaced all uses with scm_is_pair.
3216 (SCM_I_CONSP): New name for SCM_CONSP.
3217
3218 * pairs.h, pairs.c (scm_is_pair, scm_is_null, scm_car, scm_cdr,
3219 scm_i_chase_pairs, SCM_I_A_PAT, SCM_I_D_PAT, etc, scm_caar,
3220 scm_cadr, etc): New.
3221 (SCM_NULLP, SCM_NNULLP): Moved to discouraged.h. Replaced all
3222 uses with scm_is_null.
5dd82006 3223
d2e53ed6
MV
3224 * eval.c (scm_eval, scm_apply, call_cxr_1): Use scm_i_chase_pairs
3225 instead of explicit code.
5dd82006 3226
5dfdf243
MV
32272004-09-22 Marius Vollmer <mvo@zagadka.de>
3228
b50c53e5
MV
3229 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
3230 Reworded logic a bit so that #f is returned immediately when s1 is
3231 too short to contain s2.
3232
5dfdf243 3233 * regex-posix.c (scm_regexp_exec): Convert string to
05d7cf89 3234 zero-terminated locale string before matching against it.
5dfdf243
MV
3235
3236 * strings.h, strings.c (scm_substring_read_only,
3237 scm_c_substring_read_only, scm_i_substring_read_only): New.
3238 (RO_STRING_TAG, IS_RO_STRING): New.
3239 (scm_i_string_writable_chars): Bail on read-only strings.
3240
3241 * read.c (scm_lreadr): use scm_c_substring_read_only for string
3242 literals, thus making them read-only as specified by R5RS.
3243
22ab5ba3
MV
32442004-09-22 Marius Vollmer <mvo@zagadka.de>
3245
3246 * eq.c (scm_equal_p): Allow smobs with different flags to be equal
3247 by testing for smobs before insisting on equal SCM_CELL_TYPES.
3248
2663421c
MV
32492004-09-21 Marius Vollmer <mvo@zagadka.de>
3250
0d83cb90
MV
3251 * numbers.h, numbers.c: Include <gmp.h> in numbers.h, not in
3252 numbers.c.
3253 (scm_to_mpz, scm_from_mpz): New.
9a5fa6e9 3254 Thanks to Andreas Vögele!
0d83cb90 3255
2663421c
MV
3256 * read.c (skip_scsh_block_comment): Recognize "!#" everywhere, not
3257 just on a line of its own.
3258
3259 * srfi-13.c (scm_string_any, scm_string_every,
3260 scm_string_tabulate, string_upcase_x, string_down_case_x,
3261 string_titlecase_x, string_reverse_x, scm_string_tokenize): Use
3262 size_t instead of int for indices into strings. Make sure that no
9a5fa6e9 3263 over- or underflow occurs. Thanks to Andreas Vögele!
2663421c
MV
3264 (scm_xsubstring, scm_string_xcopy_x): Use ints for 'extended'
3265 indices, which can also be negative.
3266
b00b73f9
MV
32672004-09-20 Marius Vollmer <mvo@zagadka.de>
3268
3269 * gc-mark.c (SCM_MARK_BACKING_STORE): Removed, it was unused.
3270
3271 * threads.c (scm_threads_mark_stacks): Call
3272 SCM_MARK_BACKING_STORE. Also, do not use stack_len local, it was
3273 only used once.
3274
adba74f3
HWN
32752004-09-13 Jan Nieuwenhuizen <janneke@gnu.org>
3276
05d7cf89 3277 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
adba74f3
HWN
3278 Bugfix: when subtracting unsigned values, make sure that result
3279 does not wrap.
3280
f6de32c8
KR
32812004-09-09 Kevin Ryde <user42@zip.com.au>
3282
3283 * filesys.c, stime.c (_POSIX_C_SOURCE): Use this only on hpux, it
3284 causes too many problems elsewhere (glibc, freebsd, mingw). Reported
9a5fa6e9 3285 by Andreas Vögele.
f6de32c8 3286
e548be5f
MV
32872004-09-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3288
eb8d0af1
MV
3289 * Makefile.am (EXTRA_libguile_la_SOURCES): Removed "alloca.c".
3290
e548be5f
MV
3291 * eq.c (real_eqv): Pretend that all NaNs are equal.
3292
3293 * numbers.c (scm_integer_expt): Do not accept inexact integers.
3294
e7acba81
MV
32952004-09-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3296
874fbad1
MV
3297 * srfi-13.c (scm_string_trim_right, scm_string_xcopy_x): Correctly
3298 use size_t for some locals instead of int.
3299
e7acba81
MV
3300 * read.c (scm_flush_ws): Detect "#!"-style comments here.
3301 (scm_lreadr): Abort on seeing "#!", which should no longer happen.
3302 (skip_scsh_block_comment): Use scm_input_error instead of
3303 scm_misc_error in case of EOF.
3304
5de12658
KR
33052004-09-07 Kevin Ryde <user42@zip.com.au>
3306
3307 * numbers.c (scm_integer_expt): Reject exponent +/-inf.
5de12658
KR
3308 Bug report by Bill Schottstaedt.
3309
3310 * ports.c (scm_getc, scm_lfwrite): Recognise \a \b and \r for port
3311 column.
3312 * ports.h (SCM_ZEROCOL, SCM_DECCOL): New macros.
3313
3314 * posix.c (scm_access): Update docstring per manual.
3315
3316 * posix.c (scm_nice): Correction to error detection. Reported by
3317 Matthias Koeppe.
3318
3319 * stime.c (scm_current_time, scm_gettimeofday, scm_strptime): Don't
3320 throw error before unlocking mutex with SCM_ALLOW_INTS.
3321
e227addf
KR
33222004-09-06 Kevin Ryde <user42@zip.com.au>
3323
3324 * stime.h (SCM_TIME_UNITS_PER_SECOND): Use sysconf(_SC_CLK_TCK) when
3325 available. This also gets around CLK_TCK being absent when
3326 _GNU_SOURCE and _POSIX_C_SOURCE are defined in stime.c.
3327
edea856c
SJ
33282004-09-03 Stefan Jahn <stefan@lkcc.org>
3329
3330 * threads.c (scm_threads_mark_stacks): Fixed local variable
3331 definitions.
3332
e7acba81 3333 * strings.c (scm_i_substring_copy, scm_string_append): Fixed
edea856c
SJ
3334 local variable definitions.
3335
3336 * stime.c (_POSIX_C_SOURCE): Do not define this item on
3337 MinGW32 because it conflicts with its pthread headers.
874fbad1
MV
3338 (scm_mktime): Consider the HAVE_STRUCT_TM_TM_ZONE define.
3339 (scm_strftime): Using scm_from_locale_string() instead of
edea856c
SJ
3340 scm_makfrom0str().
3341
874fbad1 3342 * posix.c (scm_putenv): Fixed typo in the !HAVE_UNSETENV
edea856c
SJ
3343 part.
3344
3345 * numbers.c (scm_init_numbers): Removed check_sanity() call
3346 inside GUILE_DEBUG. The function has been removed somewhen...
3347
3348 * filesys.c (_POSIX_C_SOURCE): Do not define this item on
3349 MinGW32 because it conflicts with its pthread headers.
3350
d9eb2d67
MV
33512004-08-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3352
3353 * strings.c (SCM_STRINGP): Accept all strings.
3354 (SCM_STRING_CHARS): Reject shared substrings here.
3355
3356 * script.c (scm_compile_shell_switches): Added 2003 and 2004 to
3357 the Copyright years.
3358
c495c342
KR
33592004-08-27 Kevin Ryde <user42@zip.com.au>
3360
3361 * socket.c (scm_fill_sockaddr): Use HAVE_STRUCT_SOCKADDR_SIN_LEN and
3362 HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN for sockaddr fields, SIN_LEN and
3363 SIN_LEN6 are not defined on all systems. Reported by Michael Tuexen.
3364
57aa5515
MV
33652004-08-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3366
3367 * strings.h, strings.c (scm_i_make_symbol): Added FLAGS parameter.
3368 * symbols.h, symbols.c (SCM_I_F_SYMBOL_UNINTERNED,
3369 scm_i_symbol_is_interned, scm_i_mem2symbol,
3370 scm_i_mem2uninternedsymbol): Use it to store uninternedness flag.
3371
ce25760f
MV
33722004-08-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3373
19ff6ffc
MV
3374 * srfi-13.c: First cut at thread-safeness and proper use of
3375 scm_i_string_chars et al. Copious scm_remember_upto_heres have
3376 been inserted. Made sure that no internal string pointer is used
3377 across a SCM_TICK or a possible GC.
3378
ce25760f
MV
3379 * script.c (scm_compile_shell_switches): Use
3380 scm_from_locale_string instead of scm_makfrom0str.
3381
3382 * srfi-13.c (scm_string_rindex): Export to Scheme, as it has
3383 always been.
3384
c5080b51
MV
33852004-08-25 Marius Vollmer <mvo@zagadka.de>
3386
3387 Moved SRFI-13 and SRFI-14 into the core, taking over the role of
3388 strop.c.
3389
3390 * srfi-13.c, srfi-13.h, srfi-14.c, srfi-14.h: New files.
3391 * strop.h, strop.c: Removed, they are now empty.
3392 * Makefile.am: Updated for new and removed files.
3393
3394 * symbols.h, symbols.c (scm_string_ci_to_symbol): Moved here, next
3395 to scm_string_to_symbol.
3396
3397 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
3398 scm_char_whitespace_p, scm_upper_case_p, scm_lower_case_p,
3399 scm_char_is_both_p): Use scm_char_set_contains_p with the proper
3400 charset instead of libc functions.
3401
3402 * strorder.c (scm_string_equal_p, scm_string_ci_equal_p,
3403 scm_string_less_p, scm_string_leq_p, scm_string_gr_p,
3404 scm_string_geq_p, scm_string_ci_less_p, scm_string_ci_leq_p,
3405 scm_string_ci_gr_p, scm_string_ci_geq_p): Use scm_string_eq, etc
3406 instead of explicit code.
3407
3408 * deprecated.c, load.c, posix.c, unif.c, symbols.c: Include
3409 "srfi-13.h" instead of "strop.h".
3410
3411 * init.c (scm_init_guile_1): Call scm_init_srfi_13 and
3412 scm_init_srfi_14. Do not call scm_init_strop.
3413
4b0d27f2
MV
34142004-08-24 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3415
3416 * numbers.c (scm_inf_p): Synced docstring back from manual.
3417
3ece39d6
MV
34182004-08-22 Marius Vollmer <mvo@zagadka.de>
3419
3420 * strings.c (get_str_buf_start): New helper function.
3421 (scm_i_substring, scm_i_substring_copy, scm_i_substring_shared,
3422 scm_i_string_char, scm_i_string_writable_chars): Use it.
3423 (scm_i_substring_copy): Make START argument optional for C
3424 callers, for upcoming SRFI-13 integration.
3425
34262004-08-21 Marius Vollmer <mvo@zagadka.de>
3427
3428 From Richard Todd, Thanks!
3429
3430 * script.c (scm_compile_shell_switches): added '-L' switch to add
3431 to the %load-path.
3432
5fa0939c
DH
34332004-08-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3434
3435 * eval.c (unmemoize_exprs): When dropping internal body markers
3436 from the output during unmemoization, also drop those that are not
3437 immediately at the beginning of a body.
3438
2146fdeb
MV
34392004-08-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3440
c1f54b3d
MV
3441 * eval.c (scm_lookupcar1): Report "Variable used before given a
3442 value" insetad of an "Unbound" one for variables that are found
3443 but still contain SCM_UNDEFINED.
2146fdeb
MV
3444
3445 * posix.c (scm_mkstemp): Correction to the correction, mkstemp
3446 expects a null-terminated string in the locale encoding, but
3447 scm_i_string_writable_chars doesn't give that. Fixed by letting
3448 mkstemp modify a locale version of the tmpl argument and copying
3449 the result back into tmpl.
3450
3451 * strop.c (scm_substring_move_x): Store into str2, not str1.
3452
d4f76919
KR
34532004-08-20 Kevin Ryde <user42@zip.com.au>
3454
3455 * posix.c (scm_mkstemp): Correction to new locale_string stuff, need
3456 to modify the input string.
3457
b5247a6b
MV
34582004-08-19 Marius Vollmer <mvo@zagadka.de>
3459
3460 * deprecated.c (SCM_SYMBOL_CHARS): Cast away const in return.
3461 (SCM_SYMBOL_LENGTH): It's scm_i_symbol_length, not
3462 scm_c_symbol_length.
3463
f26b9395
MV
34642004-08-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3465
3466 New string implementation, with copy-on-write strings and
3467 mutation-sharing substrings, and a new internal string API.
3468 Symbols can now share memory with strings.
3469
3470 * tags.h (scm_tc7_stringbuf): New tag.
3471
3472 * strings.h, strings.c: (scm_i_string_chars, scm_i_string_length,
3473 scm_i_string_writable_chars, scm_i_string_stop_writing): New, to
3474 replace SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH. Updated all
3475 uses.
3476 (scm_i_make_string, scm_c_make_string): New, to replace
3477 scm_allocate_string. Updated all uses.
3478 (SCM_STRINGP, SCM_STRING_CHARS, SCM_STRING_UCHARS,
3479 SCM_STRING_LENGTH): Deprecated.
3480 (scm_allocate_string, scm_take_str, scm_take0str, scm_mem2string,
3481 scm_str2string, scm_makfrom0str, scm_makfrom0str_opt):
3482 Discouraged. Replaced all uses with scm_from_locale_string or
3483 similar, as appropriate.
3484 (scm_c_string_length, scm_c_string_ref, scm_c_string_set_x,
3485 scm_c_substring, scm_c_substring_shared, scm_c_substring_copy,
3486 scm_substring_shared, scm_substring_copy): New.
3487
3488 * symbols.c, symbols.h (SCM_SYMBOLP, SCM_SYMBOL_FUNC,
3489 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS,
3490 SCM_SYMBOL_HASH, SCM_SYMBOL_INTERNED_P, scm_mem2symbol,
3491 scm_str2symbol, scm_mem2uninterned_symbol): Discouraged.
3492 (SCM_SYMBOL_LENGTH, SCM_SYMBOL_CHARS, scm_c_symbol2str):
3493 Deprecated.
3494 (SCM_MAKE_SYMBOL_TAG, SCM_SET_SYMBOL_LENGTH, SCM_SET_SYMBOL_CHARS,
3495 SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS): Removed.
3496 (scm_is_symbol, scm_from_locale_symbol, scm_from_locale_symboln):
3497 New, to replace scm_str2symbol and scm_mem2symbol, respectively.
3498 Updated all uses.
3499 (scm_gensym): Generate only the number suffix in the buffer, just
3500 string-append the prefix.
3501
3502 * error.c (scm_memory_error): Do not try to throw, just abort.
3503 Throwing will not work anyway.
3504
3505 * gh.h, gh-data.c (gh_set_substr): Made src const.
3506
3507 * ports.c (scm_i_mode_bits_n): New, for counted strings.
3508 (scm_mode_bits): Use it.
3509 (scm_c_port_for_each): Blocking GC does not seem to work, allocate
3510 a vector normally and fill that instead of consing a list with a
3511 blocked GC.
3512
3513 * read.c (scm_i_casei_streq): New, for counted strings.
3514
3515 * threads.c (gc_section_count): Removed, thread-sleeping can not
3516 be nested.
3517 (scm_i_thread_put_to_sleep): Call scm_i_leave_guile before locking
3518 admin mutex so that we can be put to sleep by other threads while
3519 blocking on that mutex. Lock all the heap mutex of all threads,
3520 including ourselves.
3521 (scm_i_thread_wake_up): Unlock all threads, including ourselves,
3522 call scm_i_enter_guile.
3523 (scm_thread_mark_stacks): Expect all threads to be suspended.
3524
3525 * gc.h, gc.c (scm_i_gc_admin_mutex): New, to protect
3526 scm_gc_mallocated, for now.
3527 (scm_init_storage): Initialize it.
3528 * gc-malloc.c (descrease_mtrigger, increase_mtrigger): Use it.
3529
3530 * gc-mark.c (scm_gc_mark_dependencies): Call scm_i_string_mark,
3531 scm_i_stringbuf_mark and scm_i_symbol_mark, as appropriate.
3532 * gc-card.c (scm_i_sweep_card): Call scm_i_string_free,
3533 scm_i_stringbuf_free and scm_i_symbol_free, as appropriate.
3534
cd505b38
MV
3535 * strop.c (scm_string_copy): Use scm_c_substring to get a
3536 copy-on-write string.
3537
8a807b26
KR
35382004-08-18 Kevin Ryde <user42@zip.com.au>
3539
3540 * arbiters.c (FETCH_STORE): New macro.
3541 (SCM_LOCK_VAL, SCM_UNLOCK_VAL): New constants.
3542 (SCM_LOCK_ARB, SCM_UNLOCK_ARB): Remove, effectively absorbed into
3543 scm_try_arbiter and scm_release_arbiter.
3544 (scm_try_arbiter, scm_release_arbiter): Use FETCH_STORE to get xchg
3545 for speed on i386, otherwise using mutex.
3546
3547 * eq.c (scm_equal_p): Remove real==fraction and fraction==real, they
3548 must be #f according to R5RS. (equal? follows eqv?, and for eqv? an
3549 exact and inexact is #f.)
3550
3551 * fports.c (fport_print): Use scm_ttyname instead of ttyname directly,
3552 to get thread safety of scm_ttyname.
3553
3554 * ports.c (ttyname): Remove prototype, unused.
3555
d6cd4c36 3556 * socket.c (scm_init_socket): Add SOCK_SEQPACKET and SOCK_RDM.
1f3cc0d3 3557 Reported by Michael Tuexen.
d6cd4c36 3558
fa0c0a4b
MV
35592004-08-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3560
3561 * load.c (scm_init_load_path): Do not pass NULL to
3562 scm_to_locale_string, which would happen when GUILE_LOAD_PATH is
3563 not set. Thanks to Bill Schottstaedt.
3564
70f7ee41
MV
35652004-08-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3566
3567 * socket.c (scm_inet_aton, scm_inet_pton): Convert SCM strings to
3568 locale strings instead of accessing their internals.
3569 (scm_recv, scm_send, scm_recvfrom, scm_sendto): Use
3570 SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH instead of
3571 SCM_STRING_CHARS and SCM_STRING_LENGTH.
3572
3573 * simpos.c (scm_system): Convert SCM strings to locale strings
3574 instead of accessing their internals.
3575
3576 * script.c (scm_compile_shell_switches): Convert version to locale
3577 string before printing it.
3578
3579 * rdelim.c (scm_read_delimited_x): Avoid
3580 SCM_VALIDATE_SUBSTRING_SPEC_COPY and use scm_from_size_t instead
3581 of scm_from_long for the returned number of read characters.
3582
3583 * ioext.c (scm_fdopen): Use scm_i_fdes_to_port together with
3584 scm_i_mode_bits to avoid accessing internals of SCM string from C.
3585
3586 * filesys.c (STRING_SYSCALL, STRING2_SYSCALL): New helper macros.
3587 Use them instead of SCM_SYSCALL when one or two strings need to be
3588 converted into locale strings.
3589 (my_rename): New, gathers platform dependent code for renaming.
3590 (scm_rename): Use it.
3591 (scm_readlink, scm_copy_file): Convert SCM strings to locale
3592 strings instead of accessing their internals.
3593 (scm_basename, scm_dirname): Use SCM_I_STRING_CHARS and
3594 SCM_I_STRING_LENGTH instead of SCM_STRING_CHARS and
3595 SCM_STRING_LENGTH.
3596
3597 * extensions.c (load_extension): Convert lib and init to locale
3598 strings instead of accessing the internals directly.
3599 (scm_c_load_extension): Use scm_from_locale_string instead of
3600 scm_makfrom0str.
3601
3602 * fports.h, fports.c (scm_i_fdes_to_port): New, like
3603 scm_fdes_to_port, but take mode bits directly instead of as a C
3604 string.
3605 (scm_i_fdes_to_port): Implement using above.
3606 (scm_open_file): Use scm_i_fdes_to_port together with
3607 scm_i_mode_bits to avoid accessing internals of SCM string from C.
3608 * vports.c (scm_make_soft_port): Use scm_i_fdes_to_port together
3609 with scm_i_mode_bits to avoid accessing internals of SCM string
3610 from C.
3611
3612 * ports.h (scm_i_mode_bits): New, same as scm_mode_bits but with a
3613 SCM string as argument.
3614
3615 * ports.c (scm_i_void_port): New, like scm_void_port but take mode
3616 bits directly instead of C string.
3617 (scm_void_port): Implement using above.
3618 (scm_sys_make_void_port): Use scm_i_void_port together with
3619 scm_i_mode_bits to avoid accessing internals of SCM string.
3620
3621 * strings.h, strings.c (scm_i_get_substring_spec): New.
3622
3623 * socket.c, rw.c, deprecated.h, validate.h
3624 (SCM_VALIDATE_STRING_COPY): Deprecated. Replaced all uses with
3625 SCM_VALIDATE_STRING plus SCM_I_STRING_CHARS or
3626 scm_to_locale_string, etc.
3627 (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Deprecated. Replaced as
3628 above, plus scm_i_get_substring_spec.
3629
3630 * regex-posix.c, read.c, random.c, ramap.c, print.c, numbers.c,
3631 hash.c, gc.c, gc-card.c, convert.i.c, backtrace.c, strop.c,
3632 strorder.c, strports.c, struct.c, symbols.c, unif.c, ports.c: Use
3633 SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_STRING_LENGTH
3634 instead of SCM_STRING_CHARS, SCM_STRING_UCHARS, and
3635 SCM_STRING_LENGTH, respectively. Also, replaced scm_return_first
3636 with more explicit scm_remember_upto_here_1, etc, or introduced
3637 them in the first place.
3638
3639 * posix.c (WITH_STRING): New helper macro. Use it where one
3640 locale string is needed for a short piece of code.
3641 (STRING_SYSCALL): New helper macro. Use it instead of SCM_SYSCALL
3642 when one locale string is needed.
3643 (scm_mkstemp): Convert tmpl to a locale string.
3644 (scm_putenv): Rewritten to use only C strings.
3645 (scm_setlocale, scm_crpt): Convert argument strings to locale
3646 strings.
3647
36482004-08-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3649
3650 * load.c (scm_primitive_load_path): Do not check for absolute
3651 filenames when scm_sys_search_load_path returns false, which will
3652 return absolute filenames unchanged.
3653
bb26cc2d
MV
36542004-08-11 Marius Vollmer <mvo@zagadka.de>
3655
3656 * gc.c, procprop.c (scm_init_storage, scm_stand_in_procs,
3657 scm_stand_in_proc): Use a hastable for scm_stand_in_procs instead
3658 of an alist. Thanks to Matthias Koeppe!
3659
02573e4c
MV
36602004-08-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3661
3662 * strings.h, deprecated.h (SCM_STRING_COERCE_0TERMINATION_X):
3663 Moved from string.h to deprecated.h.
3664
3665 * deprecated.c, deprecated.h (SCM_CHARS, SCM_LENGTH): Removed.
3666
f9751e86 3667 * strings.h, strings.c (SCM_MAKE_STRING_TAG): Renamed to
02573e4c
MV
3668 SCM_I_MAKE_STRING_TAG, changed all uses.
3669 (SCM_STRING_CHARS, SCM_STRING_UCHARS, SCM_STRING_LENGTH): Renamed
3670 to SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_LENGTH
3671 respectively. For a short time, the old names are still there as
3672 aliases. Not all uses have been changed yet, but the ones in
3673 strings.c have.
3674 (SCM_STRING_MAX_LEN): Do not hardcode to 24 bits, compute from
3675 SCM_T_BITS_MAX.
3676 (scm_is_string, scm_from_locale_string, scm_from_locale_stringn,
3677 scm_take_locale_string, scm_take_locale_stringn,
3678 scm_to_locale_string, scm_to_locale_stringn,
3679 scm_to_locale_stringbuf): New.
3680 (scm_c_string2str, scm_c_substring2str): Deprecated by moving to
3681 deprecated.[hc]. Implemented in terms of the new functions above.
3682 (scm_take_str, scm_take0str, scm_mem2string, scm_str2string,
3683 scm_makfrom0str): Reimplemented in terms of the new functions from
3684 above. They will be discouraged shortly.
3685 (scm_substring): Do not use scm_mem2string.
3686 (scm_i_allocate_string_pointers, scm_i_free_string_pointers): New,
3687 to replace similar code from posix.c, simpos.c, and dynl.c.
3688 (scm_string_append): Use memcpy instead of explicit loop. Do not
3689 use register keyword. Use plain 'char' instead of 'unsigned
3690 char'.
3691
3692 * strports.c (scm_mkstrport): Use SCM_I_STRING_UCHARS instead of
3693 SCM_STRING_UCHARS. Use SCM_I_STRINGP instead of SCM_STRINGP.
3694
3695 * strop.c (scm_i_index): Replaced SCM_STRINGP, SCM_STRING_CHARS,
3696 and SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
3697 SCM_I_STRING_LENGTH, respectively. Pass string object directly,
3698 not as a pointer. Use scm_remember_upto_here_1 to protect it.
3699
3700 * read.c (scm_input_error): Use a SCM value for 'fn', not a C
3701 string. This avoids a conversion round-trip.
3702
3703 * gh_data.c: Replaced SCM_STRINGP, SCM_STRING_CHARS, and
3704 SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
3705 SCM_I_STRING_LENGTH, respectively.
3706 (gh_scm2newstr): Implement in terms of scm_to_locale_string.
3707
3708 * environments.c: Instead calling scm_puts on the SCM_STRING_CHARS
3709 of a string, call scm_display on the string itself.
3710
3711 * dynwind.c, dynwind.h (scm_frame_free): New.
3712
3713 * stime.c, socket.c, simpos.c, procs.c, posix.c, ports.c,
3714 net_db.c, fports.c, filesys.c, eval.c, deprecation.c, dynl.c:
3715 Replaced uses of SCM_STRING_CHARS with proper uses of
3716 scm_to_locale_string. Replaced SCM_STRINGP with scm_is_string.
3717 Replaced scm_mem2string with scm_from_locale_string.
3718
3719 * simpos.c, posix.c (allocate_string_pointers, environ_list_to_c):
3720 Removed, replaced all uses with scm_i_allocate_string_pointers.
3721
3722 * load.h, load.c (scm_internal_parse_path): Removed.
3723 (scm_parse_path): Use scm_string_split to do the work.
3724 (scm_init_load_path): Use scm_parse_path instead of
3725 scm_internal_parse_path.
3726 (scm_search_path): Rewritten string handling part of the code in
3727 terms of scm_to_locale_stringbuf and so that it is thread safe.
3728
3729 * error.c (scm_error_scm): Throw directly instead of calling
3730 scm_error, this avoids the back and forth conversion of SUBR and
3731 MESSAGE and also plugs a memory leak.
3732 (scm_error): Call scm_error_scm.
3733
3734 * backtrace.c: Replaced SCM_STRINGP with scm_is_string.
3735 (display_header): Print FNAME when it is true, not
3736 merely when it is a string.
3737
3738 * strings.h (SCM_SET_STRING_LENGTH, SCM_SET_STRING_CHARS): Removed
3739 unceremoniously. They were unused by Guile itself, and external
3740 use should stop immediately.
3741
3742
409eb4e5
MV
37432004-08-10 Marius Vollmer <mvo@zagadka.de>
3744
3745 * numbers.h, number.c, deprecated.h, deprecated.c (scm_round,
3746 scm_truncate): Renamed to scm_c_round and scm_c_truncate;
3747 deprecated versions installed in deprecated.h and deprecated.c.
3748 Changed all uses.
3749
a00eaf19
RB
37502004-08-06 Rob Browning <rlb@defaultvalue.org>
3751
3752 * net_db.c (scm_resolv_error): don't cause an exception while
3753 trying to throw an exception -- call scm_misc_error with correct
3754 arguments. The previous arguments needed a format escape that
3755 wasn't in any of the format strings.
3756
bcb88c93
KR
37572004-08-06 Kevin Ryde <user42@zip.com.au>
3758
8f094b97
KR
3759 * ramap.c (scm_array_fill_x): For byvect char fill, force signed char
3760 so as not to depend on signedness of plain char. For byvect range
3761 check, throw out-of-range rather than wrong-type-arg.
3762
bcb88c93
KR
3763 * unif.c (scm_uniform_vector_ref, scm_array_set_x): For byvect, force
3764 signed byte range checks by using scm_to_schar and scm_from_schar,
3765 don't want to depend on signedness of C char.
3766
29e61124
KR
37672004-08-05 Kevin Ryde <user42@zip.com.au>
3768
3769 * arbiters.c (scm_try_arbiter): Use scm_i_misc_mutex instead of
3770 SCM_DEFER_INTS.
3771 (scm_release_arbiter): Use scm_i_misc_mutex so return value can be
3772 guaranteed if multiple threads compete to unlock.
3773 Update docstrings per doc/ref/api-scheduling.texi.
3774
99de794f
KR
3775 * filesys.c (scm_copy_file): Use fstat on the input fd rather than
3776 stat on the filename, to be certain a file rename can't mean we get
3777 info on one filesystem object but open another. This fstat usage is
3778 similar to Emacs copy-file.
3779
29e61124
KR
3780 * posix.c (scm_setgroups): Enhance docstring, per doc/ref/posix.texi.
3781
3782 * simpos.c (scm_system_star): Change scm_from_long to scm_from_int on
3783 SIGINT and SIGQUIT, since those values are ints.
3784
759aa8f9
MV
37852004-08-03 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3786
7241f213
MV
3787 * num2integral.i.c, num2float.i.c: Removed.
3788 * Makefile.am (noinst_HEADERS): Updated.
3789
f9656a9f
MV
3790 * numbers.h. numbers.c (scm_make_ratio): Renamed to
3791 scm_i_make_ratio and made static, replaced uses with scm_divide.
96d8c217
MV
3792 (scm_complex_p): New, export as "complex?" to Scheme.
3793 (scm_number_p): Export as "number?" to Scheme.
3794 (scm_is_complex, scm_is_number): New.
3795 (scm_c_make_rectangular, scm_c_make_polar): New.
3796 (scm_make_rectangular, scm_make_polar): Use above.
3797 (scm_c_real_part, scm_c_imag_part, scm_c_magnitude, scm_c_angle):
3798 New.
3799 (scm_make_complex): Discouraged by moving to discouraged.h and
3800 discouraged.c. Replaced all uses with scm_c_make_rectangular.
3801
759aa8f9
MV
3802 * discouraged.h, discouraged.c, numbers.c, numbers.h
3803 (scm_is_rational): New.
3804 (scm_i_short2big, scm_i_int2big, scm_i_uint2big, scm_i_size2big,
3805 scm_i_ptrdiff2big, scm_i_long_long2big, scm_i_ulong_long2big):
3806 Removed prototypes.
3807 (scm_make_real, scm_num2dbl, scm_float2num, scm_double2num):
3808 Discouraged by moving to discouraged.h and discouraged.c.
3809 Replaced all uses with scm_from_double.
3810 (scm_num2float, scm_num2double): Discouraged by moving prototype
3811 to discouraged.h and rewriting in terms of scm_to_double.
3812 Replaced all uses with scm_to_double.
3813 (scm_to_double): Do not implement in terms of scm_num2dbl, use
3814 explicit code.
3815 (scm_from_double): Do not implement in terms of scm_make_real, use
3816 explicit code.
3817
531bf3e6
MV
38182004-08-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3819
759aa8f9
MV
3820 * init.c (scm_init_guile_1): Call scm_i_init_discouraged.
3821
531bf3e6
MV
3822 * gen-scmconfig.h.in (SCM_I_GSC_ENABLE_DISCOURAGED): New.
3823 * gen-scmconfig.c (SCM_ENABLE_DISCOURAGED): Emit based on above.
3824
3825 * eval.c (SCM_EVALIM, SCM_EVALIM2, SCM_XEVAL, SCM_XEVALCAR):
3826 Renamed to SCM_I_* in order to avoid collisions with the versions
3827 defined in deprecated.h.
3828
3829 * discouraged.h, discouraged.c: New files.
3830
3831 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_EQ_P,
3832 SCM_NEGATE_BOOL, SCM_BOOL, SCM_BOOT_NOT): Promoted from being
3833 deprecated to being discouraged by moving to discouraged.h.
3834
3835 * numbers.h, numbers.c, discouraged.h, discouraged.c
3836 (scm_short2num, scm_ushort2num, scm_int2num, scm_uint2num,
3837 scm_long2num, scm_ulong2num, scm_size2num, scm_ptrdiff2num,
3838 scm_num2short, scm_num2ushort, scm_num2int, scm_num2uint,
3839 scm_num2long, scm_num2ulong, scm_num2size, scm_num2ptrdiff,
3840 scm_long_long2num, scm_ulong_long2num, scm_num2long_long,
3841 scm_num2ulong_long): Discouraged by moving to discouraged.h and
3842 discouraged.c and reimplementing in terms of scm_from_* and
3843 scm_to_*. Changed all uses to the new scm_from_* and scm_to_*
3844 functions.
3845
3846 * numbers.h, numbers.c: Removed GUILE_DEBUG code.
3847 (scm_i_short2big, scm_i_ushort2big, scm_i_int2big, scm_i_uint2big,
3848 scm_i_size2big, scm_i_ptrdiff2big): Removed.
3849 (scm_i_long2big, scm_i_ulong2big): New, explicit definitions.
3850 * conv-integer.i.c, conv-uinteger.i.c: Use them instead of
3851 explicit code.
3852
5ec82e96
KR
38532004-08-02 Kevin Ryde <user42@zip.com.au>
3854
3855 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Add comments about past
3856 and current usage and migration.
3857
58f28989
KR
38582004-07-31 Kevin Ryde <user42@zip.com.au>
3859
3860 * error.c (scm_strerror): Use scm_i_misc_mutex around strerror since
3861 it's not thread safe.
3862 (scm_syserror): Use scm_strerror rather than SCM_I_STRERROR, to take
3863 advantage of this.
3864 * fports.c (scm_open_file): Use scm_strerror likewise.
3865 * filesys.c (scm_stat, scm_lstat): Ditto.
3866
3867 * filesys.c (scm_copy_file): Avoid fd leak when destination file
3868 cannot be opened.
3869
3870 * symbols.c (scm_gensym): Use scm_i_misc_mutex around gensym_counter
3871 update, for thread safety.
3872 (gensym_counter): Move into scm_gensym which is its only user.
3873 (scm_init_symbols): No need to explicitly initialize gensym_counter.
3874
03696aab
MV
38752004-07-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3876
51fdb325
MV
3877 * numbers.h (scm_to_schar, scm_to_uchar, scm_to_char,
3878 scm_to_short, scm_to_ushort, scm_to_int, scm_to_uint, scm_to_long,
3879 scm_to_ulong, scm_to_long_long, scm_to_ulong_long, scm_to_intmax,
3880 scm_to_uintmax, scm_to_size_t, scm_to_ssize_t scm_from_schar,
3881 scm_from_uchar, scm_from_char, scm_from_short, scm_from_ushort,
3882 scm_from_int, scm_from_uint, scm_from_long, scm_from_ulong,
3883 scm_from_long_long, scm_from_ulong_long, scm_from_intmax,
3884 scm_from_uintmax, scm_from_size_t, scm_from_ssize_t): No longer
3885 defined in terms of scm_to_signed_integer, etc, but in terms of
3886 scm_to_int8, etc.
3887
3888 * gen-scmconfig.c (SCM_SIZEOF_INTMAX, SCM_SIZEOF_SIZE_T): New.
3889
03696aab
MV
3890 * gen-scmconfig.h.in: Removed SCM_I_GSC_*_LIMITS macros, they are
3891 no longer used.
3892
3893 * __scm.h (SCM_I_UTYPE_MAX, SCM_I_TYPE_MAX, SCM_I_TYPE_MIN,
3894 SCM_I_SIZE_MAX, SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX): New.
3895
3896 * __scm.h, gen-scmconfig.c (SCM_I_LLONG_MAX, SCM_I_LLONG_MIN,
3897 SCM_I_ULLONG_MAX, SCM_T_INT8_MIN, SCM_T_INT8_MAX, SCM_T_UINT8_MAX,
3898 SCM_T_INT16_MIN, SCM_T_INT16_MAX, SCM_T_UINT16_MAX,
3899 SCM_T_INT32_MIN, SCM_T_INT32_MAX, SCM_T_UINT32_MAX,
3900 SCM_T_INT64_MIN, SCM_T_INT64_MAX, SCM_T_UINT64_MAX,
3901 SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, SCM_T_UINTMAX_MAX): Moved
3902 definition into __scm.h, using new SCM_I_TYPE_MIN, etc.
3903
3904 * conv-integer.i.c, conv-uinteger.i.c: New files, used to generate
3905 the functions below.
3906
3907 * Makefile.am (noinst_HEADERS): Added conv-integer.i.c and
3908 conv-uinteger.i.c.
3909
3910 * numbers.c, numbers.h (scm_to_int8, scm_to_uint8, scm_to_int16,
3911 scm_to_uint16, scm_to_int32, scm_to_uint32, scm_to_int64,
3912 scm_to_uint64, scm_from_int8, scm_from_uint8, scm_from_int16,
3913 scm_from_uint16, scm_from_int32, scm_from_uint32, scm_from_int64,
3914 scm_from_uint64): Turned from macros into proper functions.
3915 (scm_to_signed_integer, scm_to_unsigned_integer,
3916 scm_from_signed_integer, scm_from_unsigned_integer): Generate via
3917 conv-integer.i.c and conv-uinteger.i.c, as well.
3918
3919 * number.h (scm_to_ssize_t, scm_to_size_t): Use the new
3920 SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX, and SCM_I_SIZE_MAX macros for
3921 the limits. Those are always defined.
3922
1f15779e
KR
39232004-07-29 Kevin Ryde <user42@zip.com.au>
3924
3925 * posix.c (scm_ttyname): Use scm_i_misc_mutex for thread safety.
3926
48360eb3
KR
39272004-07-28 Kevin Ryde <user42@zip.com.au>
3928
3929 * posix.c (scm_ctermid): Use an L_ctermid buf on the stack, for thread
3930 safety.
3931
c3f3c841
KR
3932 * unif.c (scm_array_set_x): For svect, use scm_num2short for
3933 consistency with other vector types and to get arg and func name into
3934 error message.
3935
c82f8ed6
MV
39362004-07-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3937
3938 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_BOOL):
3939 Reimplement using scm_is_false, scm_is_true, scm_is_bool, and
3940 scm_from_bool, respectively.
3941 (SCM_NINUMP): Added.
3942
3943 * tags.h, deprecated.h (SCM_EQ_P): Deprecated by moving it into
3944 deprecated.h. Replaced all uses with scm_is_eq.
3945
317b4c4a
KR
39462004-07-24 Kevin Ryde <user42@zip.com.au>
3947
3948 * threads.c, threads.h (scm_i_misc_mutex): New SCM_GLOBAL_MUTEX.
3949 * posix.c (scm_crypt): Use it to protect static data in crypt().
3950
e11e83f3
MV
39512004-07-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3952
3953 * deprecated.h, deprecated.c, numbers.h (SCM_INUMP, SCM_NINUMP,
c82f8ed6 3954 SCM_INUM): Deprecated by renaming them to SCM_I_INUMP,
e11e83f3
MV
3955 SCM_I_NINUMP and SCM_I_INUM, respectively and adding deprecated
3956 versions to deprecated.h and deprecated.c. Changed all uses to
3957 either use the SCM_I_ variants or scm_is_*, scm_to_*, or
3958 scm_from_*, as appropriate.
3959
3960 * dynwind.c (scm_i_dowinds): Removed unused code that would call
3961 the unexisting scm_cross_dynwind_binding_scope for inums on the
3962 windlist.
3963
a55c2b68
MV
39642004-07-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3965
3966 * socket.c (ipv6_net_to_num, scm_from_ipv6): Renamed
e11e83f3 3967 ipv6_net_to_num to scm_from_ipv6, for converting from an IPv6
a55c2b68
MV
3968 byte-wise address to a SCM integer. Changed all uses.
3969 (ipv6_num_to_net, scm_to_ipv6): Renamed ipv6_num_to_net to
3970 scm_to_ipv6 and added type and range checking, for converting from
3971 an IPv& byte-wise address to a SCM integer. Changed all uses.
3972 (bignum_in_ipv6_range_p, VALIDATE_INET6): Removed, their function
3973 is now done by scm_to_ipv6.
3974
3975 * numbers.c (scm_to_signed_integer, scm_to_unsigned_integer): dot
3976 not accept inexact integers.
3977
3978 * validate.h, deprecated.h (SCM_VALIDATE_INUM,
3979 SCM_VALIDATE_INUM_COPY, SCM_VALIDATE_BIGINT,
3980 SCM_VALIDATE_INUM_MIN, SCM_VALIDATE_INUM_MIN_COPY,
3981 SCM_VALIDATE_INUM_MIN_DEF_COPY,SCM_VALIDATE_INUM_DEF,
3982 SCM_VALIDATE_INUM_DEF_COPY, SCM_VALIDATE_INUM_RANGE,
3983 SCM_VALIDATE_INUM_RANGE_COPY): Deprecated because they make the
3984 fixnum/bignum distinction visible. Changed all uses to
3985 scm_to_size_t or similar.
3986
39872004-07-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3988
3989 * cpp_cnvt.awk: Use scm_from_int instead of SCM_MAKINUM.
3990
48a06bd5
KR
39912004-07-10 Kevin Ryde <user42@zip.com.au>
3992
3993 * hash.c (scm_hashq, scm_hashv, scm_hash): Restrict to size>=1 rather
3994 than size>=0, since 0<=hash<size cannot be satisfied for size==0, and
3995 such a size causes divide-by-zeros in scm_hasher.
3996
052fbfd9
KR
3997 * regex-posix.c (scm_make_regexp): Free rx on error, to avoid memory
3998 leak.
3999
43240c9c
MV
40002004-07-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4001
4002 * numbers.c (scm_is_signed_integer, scm_is_unsigned_integer):
4003 Rewritten using the same logic as scm_to_signed_integer and
4004 scm_to_unsigned_integer, respectively, which is better(tm). Also,
4005 use CHAR_BIT instead of hardcoding 8.
4006 (LLONG_MIN, LLONG_MAX, ULLONG_MAX): Removed and used
4007 SCM_I_LLONG_MIN etc. instead.
4008
4009 * numbers.h (SCM_MAKINUM, SCM_I_MAKINUM): Renamed SCM_MAKINUM to
4010 SCM_I_MAKINUM and changed all uses.
4011 * deprecated.h, deprecated.c (SCM_MAKINUM): Newly deprecated.
4012
a3de8e7b
MV
4013 * gen-scmconfig.c (SCM_I_LLONG_MIN, SCM_I_LLONG_MAX,
4014 SCM_I_ULLONG_MAX): Instead of hard-coding the numbers, compute
43240c9c
MV
4015 them by assuming twos-complement.
4016
c9eb03bb
MV
40172004-07-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4018
4019 * gen-scmconfig.h.in: Added all the new SCM_I_GSC_*_LIMITS that
4020 configure now produces.
4021 * gen-scmconfig.c: Use them to output SCM_T_INT8_MIN, etc
4022 definitions, giving the limits of the integer types defined by
4023 Guile. Also, output a hard coded SCM_I_LLONG_MIN, etc since
4024 LLONG_MIN or LONG_LONG_MIN is hard to get at.
4025
4026 * numbers.h (scm_to_short, scm_to_ushort): It's SHRT_MIN, etc, not
4027 SHORT_MIN.
4028 (scm_to_size_t): Use SIZE_MAX instead of cooking our own.
4029 (scm_to_long_long, scm_to_ulong_long, scm_to_int8, scm_to_uint8,
4030 scm_to_int16, scm_to_uint16, scm_to_int32, scm_to_uint32,
4031 scm_to_int64, scm_to_uint64, scm_to_intmax, scm_to_uintmax,
4032 scm_from_long_long, scm_from_ulong_long, scm_from_int8,
4033 scm_from_uint8, scm_from_int16, scm_from_uint16, scm_from_int32,
4034 scm_from_uint32, scm_from_int64, scm_from_uint64, scm_from_intmax,
4035 scm_from_uintmax): New.
4036
7888309b
MV
40372004-07-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4038
4039 * tags.h (scm_is_eq): New.
4040
4041 * deprecated.h, boolean.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOL,
4042 SCM_NEGATE_BOOL, SCM_BOOLP): Deprecated by moving into
4043 "deprecated.h". Replaced all uses with scm_is_false, scm_is_true,
4044 scm_from_bool, and scm_is_bool, respectively.
4045
4046 * boolean.h (scm_is_bool): Fix bug in prototype.
4047 (scm_from_bool): The argument is "x" not "f", stupid.
4048
4049 * boolean.c (scm_is_bool): Fix typo.
4050
4051 * numbers.h, numbers.c (scm_is_integer, scm_is_signed_integer,
4052 scm_is_unsigned_integer, scm_to_signed_integer,
4053 scm_to_unsigned_integer, scm_to_schar, scm_to_uchar, scm_to_char,
4054 scm_to_short, scm_to_ushort, scm_to_long, scm_to_ulong,
4055 scm_to_size_t, scm_to_ssize_t, scm_from_schar, scm_from_uchar,
4056 scm_from_char, scm_from_short, scm_from_ushort, scm_from_int,
4057 scm_from_uint, scm_from_long, scm_from_ulong, scm_from_size_t,
4058 scm_from_ssize_t, scm_is_real, scm_to_double, scm_from_double):
4059 New.
4060
800570a6
MV
40612004-07-05 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4062
4063 * boolean.h, boolean.c (scm_is_true, scm_is_false, scm_from_bool,
4064 scm_to_bool): New.
4065
9fcf3cbb
DH
40662004-06-27 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4067
4068 * backtrace.c (display_expression, display_frame): Call
4069 scm_i_unmemoize_expr for unmemoizing a memoized object holding a
4070 single memoized expression.
4071
4072 * debug.c (memoized_print): Don't try to unmemoize the memoized
4073 object, since we can't know whether it holds a single expression
4074 or a body.
4075
4076 (scm_mem_to_proc): Removed check for lambda expression, since it
4077 was moot anyway. Whoever uses these functions for debugging
4078 purposes should know what they do: Creating invalid memoized code
4079 will cause crashes, independent of whether this check is present
4080 or not.
4081
4082 (scm_proc_to_mem): Take the closure's code as it is and don't
4083 append a SCM_IM_LAMBDA isym. To allow easier debugging, the
4084 memoized code should not be modified.
4085
4086 * debug.[ch] (scm_unmemoize, scm_i_unmemoize_expr): Removed
4087 scm_unmemoize from public use, but made scm_i_unmemoize_expr
4088 available as a guile internal function instead. However,
4089 scm_i_unmemoize_expr will only work on memoized objects that hold
4090 a single memoized expression. It won't work with bodies.
4091
4092 * debug.c (scm_procedure_source), macros.c (macro_print), print.c
4093 (scm_iprin1): Call scm_i_unmemocopy_body for unmemoizing a body,
4094 i. e. a list of expressions.
4095
4096 * eval.c (unmemoize_exprs): Drop internal body markers from the
4097 output during unmemoization.
4098
4099 * eval.[ch] (scm_unmemocopy, scm_i_unmemocopy_expr,
4100 scm_i_unmemocopy_body): Removed scm_unmemocopy from public use,
4101 but made scm_i_unmemocopy_expr and scm_i_unmemocopy_body available
4102 as guile internal functions instead. scm_i_unmemoize_expr will
4103 only work on a single memoized expression, while
4104 scm_i_unmemocopy_body will only work on bodies.
4105
90df793f
DH
41062004-06-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4107
4108 * eval.c (unmemoize_exprs): Handle semi-memoized code.
4109
4110 (scm_cons_source, scm_primitive_eval): Prefer higher level
4111 predicate SCM_FALSEP over SCM_IMP.
4112
8048c00b
RB
41132004-06-15 Rob Browning <rlb@defaultvalue.org>
4114
4115 * script.c (scm_shell_usage): minor phrasing change.
4116
4117 * gc_os_dep.c: update ifdefery for macosx.
4118 (scm_get_stack_base): separate result initialization from
4119 declaration to slience warnings with macosx and hp-ux using gcc
9a5fa6e9 4120 3.3. Thanks to Andreas Vögele.
8048c00b 4121
d93294d4
HWN
41222004-06-13 Han-Wen Nienhuys <hanwen@xs4all.nl>
4123
4124 * eval.c (unmemoize_exprs): use SCM_CONSP for the loop condition.
4125
212e58ed
DH
41262004-06-06 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4127
4128 * list.[ch] (scm_i_finite_list_copy): New internal function to
4129 copy lists that are known to be finite (though not necessarily
4130 proper).
4131
4132 * debug.c (scm_procedure_source): Don't have scm_unmemocopy treat
4133 a closure's argument list like an expression of a body.
4134
4135 * eval.c (unmemoize_expression, unmemoize_exprs, unmemoize_and,
4136 unmemoize_begin, unmemoize_case, unmemoize_cond, unmemoize_delay,
4137 unmemoize_do, unmemoize_if, unmemoize_lambda, unmemoize_let,
4138 unmemoize_letrec, unmemoize_letstar, unmemoize_or,
4139 unmemoize_set_x, unmemoize_apply, unmemoize_atcall_cc,
4140 unmemoize_at_call_with_values, unmemoize_future, sym_atslot_ref,
4141 unmemoize_atslot_ref, sym_atslot_set_x, unmemoize_atslot_set_x,
4142 unmemoize_builtin_macro): New static functions and symbols.
4143
4144 (scm_unmemocopy): Rewritten in terms of the above. scm_unmemocopy
4145 now has a slightly different meaning: The memoized form that is
4146 receives as its argument is now interpreted as a sequence of
4147 expressions from a body.
4148
4149 (unmemocar, scm_unmemocar): Since the whole functionality of
4150 unmemocar and scm_unmemocar is not needed any more, scm_unmemocar
4151 has its old content back and is deprecated, while unmemocar has
4152 been removed.
4153
4154 (SCM_BIT7): Removed.
4155
4156 (CEVAL): For unmemoizing a single expression, call
4157 unmemoize_expression instead of scm_unmemocopy, which now expects
4158 a sequence of body expressions. Eliminated unnecessary empty
4159 environment frame when executing let* forms. Eliminated
4160 unmemoization step from evaluator.
4161
9ccea370
MV
41622004-06-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4163
4164 * eval.c (scm_macroexp, macroexp): Renamed scm_macroexp to
4165 macroexp and made static. Added new version of scm_macroexp that
4166 emits a deprecation warning and then calls macroexp.
4167 (scm_m_undefine): Issue deprecation warning.
4168
57d23e25
DH
41692004-05-30 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4170
4171 * eval.c (lookup_global_symbol, literal_p, try_macro_lookup):
4172 Modified to make set! work on symbols that represent syntactic
4173 keywords.
4174
141521ad
HWN
41752004-05-26 Han-Wen Nienhuys <hanwen@xs4all.nl>
4176
4177 * gc.h (SCM_CELL_OBJECT_LOC): use SCM_GC_CELL_OBJECT to prevent
4178 compound expression as lvalue errors.
4179
7c2f56a4
MV
41802004-05-24 Marius Vollmer <mvo@zagadka.de>
4181
4182 * dynwind.c (winder_mark): Use SCM_PACK to correctly convert the
4183 WINDER_DATA to a SCM.
4184
366ecaec
DH
41852004-05-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4186
4187 * goops.c (compute_getters_n_setters, create_standard_classes,
4188 scm_add_slot): Compute closures by calling scm_i_eval_x on a
4189 lambda expression rather than creating them with scm_closure.
4190
26ecfa39
DH
41912004-05-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4192
4193 * eval.c (s_macro_keyword, scm_m_set_x): Remove checking for
4194 misplaced syntactic keywords. This will not work unless guile's
4195 defmacro feature is deprecated.
4196
4197 (scm_m_case): Fixed a bug that caused the list of labels to grow
4198 with every case form.
4199
f865229a
KR
42002004-05-19 Kevin Ryde <user42@zip.com.au>
4201
4202 * numbers.c (scm_round_number): For inum and big, just return x. For
4203 real, use scm_round for 2^54-1 etc problems covered there.
4204
4205 * numbers.c (trunc): Remove #define to scm_truncate when the C library
4206 doesn't provide trunc. This was for when `truncate' was done as a
4207 scm_tc7_dsubr, no longer required.
4208
4209 * threads.c (scm_threads_mark_stacks) [SCM_STACK_GROWS_UP]: Correction
4210 to stack marking call, two parameters and no cast on t->base.
4211
63947c7a
MV
42122004-05-18 Marius Vollmer <mvo@zagadka.de>
4213
4214 * hashtab.c (rehash_after_gc): Bug fix: properly link the
4215 processed hashtables back into the weak_hashtables list. Thanks
4216 to Bill Schottstaedt!
4217
e7313a9d
DH
42182004-05-16 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4219
4220 * eval.c (unmemoize_quote): New static function.
4221
4222 (scm_m_quote, scm_m_atslot_ref, SCM_CEVAL): Changed the byte code
4223 representation of 'quote' and '@slot-ref' to an improper list.
4224 This reduces execution time, the number of cells used to hold the
4225 memoized code, and thus also reduces garbage collection time.
4226
4227 (scm_unmemocopy): Use unmemoize_quote for quote expressions.
4228
4229 (SCM_CEVAL): Changed macro handling to also work with macros that
4230 return improper lists. Added an assertion, that the code returned
4231 by a macro transformer will not lead to cycles in the memoized
4232 code.
4233
e5156567
DH
42342004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4235
4236 No functional change, just rearrangements of functions within the
4237 file.
4238
4239 * eval.c (scm_ilookup, scm_unbound_variable_key,
4240 error_unbound_variable, scm_lookupcar1, scm_lookupcar): Moved to
4241 the definitions used for execution, since that's where they will
4242 belong to later.
4243
651f07f8
DH
42442004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4245
4246 * numbers.h (SCM_SLOPPY_FRACTIONP): Removed. It was not used
4247 throughout guile, has not been part of an official release yet,
4248 and the concept of sloppy predicates has never been a good idea.
4249
4250 (SCM_FRACTION_NUMERATOR, SCM_FRACTION_DENOMINATOR,
4251 SCM_FRACTION_SET_NUMERATOR, SCM_FRACTION_SET_DENOMINATOR):
4252 Simplified.
4253
770e048f
DH
42542004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4255
4256 * throw.c (SETJBJMPBUF, SCM_SETJBDFRAME): Add cast to scm_t_bits
4257 to make explicit what happens.
4258
2ff08405
DH
42592004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4260
4261 * dynl.c (SET_DYNL_HANDLE): Add cast to scm_t_bits to make
4262 explicit what happens.
4263
4264 * guardians.c (TCONC_IN): Use SCM_SET_CELL_OBJECT_x rather than
4265 SCM_SET_CELL_WORD_x when writing scheme objets to cell elements.
4266
89afb9cd
MV
42672004-05-11 Marius Vollmer <mvo@zagadka.de>
4268
4269 * scmsigs.c (scm_sigaction_for_thread): Validate that the handler
4270 is indeed a procedure when it isn't a number.
4271
3d5ebfa9
MV
42722004-05-10 Marius Vollmer <mvo@zagadka.de>
4273
4274 Convert floating point numbers into strings with an arbitrary
4275 radix. Thanks to Richard Todd!
4276
4277 * numbers.c (FLOBUFLEN): Increase so that radix 2 strings will
4278 fit.
4279 (fx): Removed.
4280 (scm_dblprec, fx_per_radix, init_dblprec, init_fx_radix,
4281 number_chars): New, to support variable radices.
4282 (idbl2str): Use above instead of the old base-10 only tables.
4283 (iflo2str): Pass on new RADIX argument to idbl2str.
4284 (scm_number_to_string): Pass radix to iflo2str.
4285 (scm_print_real, scm_print_complex): Explicitly pass radix 10 to
4286 iflo2str.
4287 (scm_init_numbers): Call init_dblprec and init_fx_radix for all
4288 possible radices.
4289
3ae69bb4
KR
42902004-05-10 Kevin Ryde <user42@zip.com.au>
4291
4292 * numbers.c (scm_logbit_p): Correction to test above the end of an
4293 inum. Reported by Jan Konecny.
4294
27968825
MV
42952004-05-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4296
4297 * gc.h (scm_t_cell): Fields are now of type SCM instead of
4298 scm_t_bits. Updated all users.
4299 (SCM_GC_CARD_SIZE_MASK): Use SCM_GC_SIZEOF_CARD instead of
4300 duplicating the code.
4301 (SCM_CELL_OBJECT_LOC): New.
4302 (SCM_CARLOC, SCM_CDRLOC): Use it instead of SCM_CELL_WORD_LOC.
4303 (SCM_CELL_WORD_LOC): Moved to "deprecated.h".
4304
4305 * smob.h (SCM_SMOB_DATA_2, SCM_SMOB_DATA_3, SCM_SMOB_FLAGS,
4306 SCM_SET_SMOB_DATA_2, SCM_SET_SMOB_DATA_3, SCM_SET_SMOB_FLAGS,
4307 SCM_SMOB_OBJECT, SCM_SMOB_OBJECT_2, SCM_SMOB_OBJECT_3,
4308 SCM_SET_SMOB_OBJECT, SCM_SET_SMOB_OBJECT_2, SCM_SET_SMOB_OBJECT_3,
4309 SCM_SMOB_OBJECT_LOC, SCM_SMOB_OBJECT_2_LOC,
4310 SCM_SMOB_OBJECT_3_LOC): New.
4311 * smob.c (scm_i_set_smob_flags): New function.
4312
4313 * dynl.c, dynwind.c, eval.h, fluids.h, futures.h, hashtab.h,
4314 hooks.h, keywords.h, macros.h, macros.c, mallocs.c, mallocs.h,
4315 random.h, regex-posix.h, root.h, srcprop.h, srcprop.c, threads.h:
4316 Use SCM_SMOB_* instead of SCM_CELL_* as appropriate. Use
4317 SCM_SMOB_FLAGS and SCM_SET_SMOB_FLAGS instead of accessing the
4318 zeroth word directly. Use SCM_SMOB_PREDICATE as appropriate.
4319
4320 * numbers.h (SCM_I_BIG_MPZ): Use SCM_CELL_OBJECT_LOC instead of
4321 taking the address of SCM_CELL_WORD_1, the latter being no longer
4322 an lvalue.
4323
4324 * variable.h (SCM_VARIABLE_LOC): Use SCM_CELL_OBJECT_LOC instead
4325 of casting SCM_CELL_WORD_LOC.
4326
3cf17ef0
KR
43272004-05-02 Kevin Ryde <user42@zip.com.au>
4328
37026925 4329 * eval.c (scm_macroexp): Add prototype, since it's not in eval.h under
9a5fa6e9 4330 --disable-deprecated. Reported by Andreas Vögele.
37026925 4331
3cf17ef0 4332 * filesys.c (_POSIX_C_SOURCE): Define to 199506L to get readdir_r (in
9a5fa6e9 4333 particular on HP-UX). Reported by Andreas Vögele.
3cf17ef0 4334
c5854598
KR
4335 * list.c (varargs.h): Remove, leave just stdarg.h which is all the
4336 code has support for. Fixes building with AIX cc, which is ansi but
4337 doesn't define __STDC__. Reported by Keith Crane.
4338 (var_start): Remove macro, this variation no longer required.
4339 (scm_list_n): Use va_start directly.
4340
f26c1a32
KR
43412004-05-01 Kevin Ryde <user42@zip.com.au>
4342
4343 * continuations.c (scm_dynthrow): Use >= instead of SCM_PTR_GE which
9a5fa6e9 4344 is now gone. Reported by Andreas Vögele.
f26c1a32 4345
dfa6017e
KR
43462004-04-28 Kevin Ryde <user42@zip.com.au>
4347
4348 * backtrace.c (display_frame_expr), numbers.c (XDIGIT2UINT,
4349 mem2uinteger, mem2decimal_from_point, mem2ureal): Cast char to int for
4350 ctype.h tests, to avoid warnings from gcc on HP-UX about char as array
9a5fa6e9 4351 subscript. Reported by Andreas Vögele.
dfa6017e
KR
4352 Also cast through unsigned char to avoid passing negatives to those
4353 macros if input contains 8-bit values.
4354
4355 * num2integral.i.c (NUM2INTEGRAL): Under non-BIGMPZ_FITSP case,
4356 corrections to range check for signed numbers. Remove
4357 scm_remember_upto_here_1(num) from these checks, since num is used
4358 subsequently anyway.
4359
4360 * num2integral.i.c (NUM2INTEGRAL): Test BIGMPZ_FITSP with "!= 0" to
4361 avoid warning from gcc 3.4. Reported by Hyperdivision.
4362
4363 * numbers.c (scm_bit_extract): Use min instead of MIN.
4364 (MIN): Remove, this conflicts with similar macro defined by limits.h
9a5fa6e9 4365 on HP-UX. Reported by Andreas Vögele.
dfa6017e
KR
4366
4367 * stime.c (_POSIX_C_SOURCE): Define to 199506L to get gmtime_r (in
9a5fa6e9 4368 particular on HP-UX). Reported by Andreas Vögele.
dfa6017e 4369
a0d06a00 4370 * threads.c (scm_threads_mark_stacks): Correction sizet -> size_t.
9a5fa6e9 4371 Reported by Andreas Vögele.
a0d06a00 4372
dfa6017e
KR
4373 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 25*sizeof(long),
4374 for the benefit of hpux11 where pthread_mutex_t is 88 bytes. Reported
9a5fa6e9 4375 by Andreas Vögele.
dfa6017e 4376
36245b66
DH
43772004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4378
4379 * eval.c (s_macro_keyword): New static identifier.
4380
4381 (scm_m_define): Change order to first create binding and
4382 evaluating the expression afterwards.
4383
4384 (scm_m_set_x): Memoize complete set! expression. Only leave
4385 symbols if no binding exists at memoization time. Throw error if
4386 assigning to a syntactic keyword.
4387
4388 (lazy_memoize_variable): New function.
4389
4390 (CEVAL): When execution set!, perform lazy memoization if
4391 unmemoized symbol is detected.
4392
4393 * modules.c (module_variable): Return variables with unbound
4394 value.
4395
4396 * tags.h: Fix comment.
4397
4d81111e
KR
43982004-04-25 Kevin Ryde <user42@zip.com.au>
4399
da8bcb2f
KR
4400 * chars.c (scm_char_upcase, scm_char_downcase, scm_c_upcase,
4401 scm_c_downcase): Use ctype.h toupper and tolower. This will be useful
4402 in 8-bit locales, and ensures consistency with char-upper-case? and
4403 char-lower-case? which already use ctype.h.
4404 (scm_c_upcase_table, scm_c_downcase_table, scm_lowers, scm_uppers):
4405 Remove.
4406 * chars.c, chars.h, init.c (scm_tables_prehistory): Remove.
4407
4d81111e
KR
4408 * socket.c (VALIDATE_INET6): Correction to bignum_in_ipv6_range_p
4409 call. Reported by Hyperdivision.
4410
4411 * threads.c (scm_yield): Correction, actually call scm_thread_yield.
4412 Reported by Hyperdivision.
4413
4414 * unif.c (s_scm_make_uve): Remove unused local variable. Reported by
4415 Hyperdivision.
4416
7e6e6b37
DH
44172004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4418
4419 Hide the implementation of ilocs and isyms in eval.c.
4420
4421 * deprecated.h (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4422 SCM_ICDRP), eval.c (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4423 SCM_ICDRP), eval.h (SCM_ICDR, SCM_IFRINC, SCM_IFRAME, SCM_IDIST,
4424 SCM_ICDRP): Deprecated and added to deprecated.h. Moved from
4425 eval.h to eval.c.
4426
4427 * deprecated.c (scm_isymnames), deprecated.h (scm_isymnames,
4428 SCM_ISYMNUM, SCM_ISYMCHARS), eval.c (SCM_ISYMNUM, isymnames,
4429 scm_unmemocopy, CEVAL), print.c (scm_isymnames), tags.h
4430 (SCM_ISYMNUM, scm_isymnames, SCM_ISYMCHARS): Deprecated
4431 scm_isymnames, SCM_ISYMNUM and SCM_ISYMCHARS and added to
4432 deprecated.[hc]. Moved scm_isymnames from print.c to eval.c and
4433 renamed to isymnames. Moved SCM_ISYMNUM from tags.h to eval.c and
4434 renamed to ISYMNUM.
4435
4436 * eval.c (scm_i_print_iloc, scm_i_print_isym), eval.h
4437 (scm_i_print_iloc, scm_i_print_isym), print.c (scm_iprin1):
4438 Extracted printing of ilocs and isyms to guile internal functions
4439 scm_i_print_iloc, scm_i_print_isym of eval.c.
4440
caab294f
KR
44412004-04-22 Kevin Ryde <user42@zip.com.au>
4442
7aaf4758
KR
4443 * numbers.c (scm_bit_extract): Use SCM_SRS for signed right shift.
4444
caab294f
KR
4445 * numbers.c (scm_round): Test for x already an integer, to avoid bad
4446 rounding in x+0.5 when x is a big value already an integer. In
4447 certain hardware rounding cases x+0.5 can give an adjacent integer,
4448 leading to that as the result, when we really just wanted x itself.
4449
b1cb24ff
DH
44502004-04-19 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4451
4452 * eval.c (scm_unmemocopy): Fixed unmemoization of let*.
4453
4454 (deval_args, CEVAL): Minor improvements: Reduced variable scopes,
4455 added const qualifiers, cast intentionally unused expressions to
4456 void for emphasis, improved comment.
4457
5065b40d
DH
44582004-04-18 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4459
4460 * tags.h (scm_tags, scm_tc8_tags, scm_tc9_flag, scm_tc8_flag,
4461 scm_tc8_isym): Renamed scm_tags to scm_tc8_tags. Renamed
4462 scm_tc9_flag to scm_tc8_flag. Introduced new identifier
4463 scm_tc8_isym. Defined tc8-tags relative to scm_tc3_imm24.
4464 Defined the tc8-tag for flags to be 0x04, which will mean that
4465 SCM_BOOL_F will also have the value 0x04 instead of 0x013c. Due
4466 to the reduced number of bits and the simpler bit pattern for
4467 SCM_BOOL_F, certain machines may be able to use more efficient
4468 processor instructions to deal with SCM_BOOL_F.
4469
4470 (SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA): Removed. These have
4471 never been defined in a released version, thus no need to
4472 deprecate them.
4473
4474 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Flags now use tc8
4475 instead of tc9 tags.
4476
4477 (SCM_ISYMP, SCM_MAKISYM, SCM_ISYMNUM): Isyms now use tc8 instead
4478 of tc9 tags.
4479
4480 (SCM_MAKSPCSYM): Removed. It is almost impossible that user code
4481 could have used this definition.
4482
4483 (SCM_IM_AND, SCM_IM_BEGIN, SCM_IM_CASE, SCM_IM_COND, SCM_IM_DO,
4484 SCM_IM_IF, SCM_IM_LAMBDA, SCM_IM_LET, SCM_IM_LETSTAR,
4485 SCM_IM_LETREC, SCM_IM_OR, SCM_IM_QUOTE, SCM_IM_SET_X): Now encoded
4486 as isyms, as special isyms don't exist any more.
4487
9fa6c119
KR
44882004-04-18 Kevin Ryde <user42@zip.com.au>
4489
e08d2eee
KR
4490 * filesys.c (scm_readdir): Use readdir_r when available, for thread
4491 safety.
4492
9fa6c119
KR
4493 * numbers.c (scm_max, scm_min): For big/real, use SCM_SWAP rather than
4494 explicit swapping code.
4495
c9cdd396
KR
44962004-04-15 Kevin Ryde <user42@zip.com.au>
4497
4498 * cpp_sig_symbols.in: Add SIGSYS.
4499
4500 * list.c (scm_append_x): Use iterative style, to avoid non-tail
4501 recursion.
4502
4503 * numbers.c (scm_max, scm_min): For inum/frac, frac/inum, big/frac,
4504 frac/big and frac/frac, use scm_less_p for exact comparison.
4505
83ac9c59
KR
4506 * numbers.c (scm_gcd): For inum/big, use mpz_gcd_ui by sharing code
4507 with big/inum.
4508
84a4be9a
KR
4509 * numbers.c (xisinf): Add a comment about solaris 7 lacking isinf.
4510
84fad130
HWN
45112004-04-06 Han-Wen Nienhuys <hanwen@xs4all.nl>
4512
6b69393d
HWN
4513 * inline.h (scm_cell): use SCM_GC_CELL_WORD for checking tag.
4514
84fad130
HWN
4515 * chars.h (scm_init_chars): change scm_{upcase,downcase} to
4516 scm_c_{up,down}case.
4517 (SCM_MAKE_CHAR): add (unsigned char) cast. This prevents havoc
4518 when hi-bit ASCII is subjected to SCM_MAKE_CHAR().
4519
c3110a30
KR
45202004-04-06 Kevin Ryde <user42@zip.com.au>
4521
0b288f36
KR
4522 * numbers.c (scm_ash): Remove stray "}" in docstring.
4523
ea2508c8
KR
4524 * numbers.c (scm_make_ratio): For inum/bignum integer detection, use
4525 x==SCM_MOST_NEGATIVE_FIXNUM explicitly, for clarity and to avoid
4526 calling mpz_cmp_ui in most cases.
4527
c3110a30
KR
4528 * numbers.c (scm_quotient, scm_remainder): In inum/big, use mpz_cmp_ui
4529 for big == abs(most-negative-fixnum) special case.
4530 (abs_most_negative_fixnum): Remove, no longer used.
4531
4532 * scmsigs.c (scm_sigaction_for_thread): Correction to signum range
4533 test, avoids SCM_VECTOR_REF outside bounds of signal_handlers on
4534 calling (sigaction NSIG).
4535
4536 * simpos.c (scm_system_star): Fix execargv memory leak, merge parent
4537 and fork error cases to do this.
4538
dec40cd2
DH
45392004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4540
4541 * eval.c (CEVAL): Don't distinguish between short and long
4542 instructions when dispatching - just always dispatch on the
4543 instruction code, which is common for short and long instructions.
4544 Further, removed unnecessary goto statements and added comment.
4545
0e7bb795
DH
45462004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4547
4548 * eval.c (scm_unmemocopy): Don't distinguish between short and
4549 long instructions when dispatching - just always dispatch on the
4550 instruction code, which is common for short and long instructions.
4551 Further, removed unnecessary goto statements, fixed indentation
4552 and replaced SCM_IMP predicates by SCM_NULLP.
4553
f9986767
DH
45542004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4555
4556 * eval.c (scm_lookupcar1, CEVAL): Use SCM_ILOCP instead of
4557 comparison with SCM_ILOC00. In CEVAL, eliminate goto-label
4558 'checkmacro'.
4559
fbc42231
KR
45602004-03-31 Kevin Ryde <user42@zip.com.au>
4561
4562 * simpos.c: Include <signal.h> for SIG_IGN and friends.
4563
434f2f7a
DH
45642004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4565
4566 Introduce scm_debug_mode_p as a replacement for scm_debug_mode and
4567 SCM_DEBUGGINGP:
4568
4569 * debug.h (scm_debug_mode_p, scm_debug_mode, SCM_DEBUGGINGP),
4570 eval.c (scm_debug_mode_p): Deprecated scm_debug_mode and
4571 SCM_DEBUGGINGP. Provided scm_debug_mode_p instead, to have one
4572 single interface that also matches the naming conventions.
4573 Probably scm_debug_mode_p should be part of the private interface
4574 anyway.
4575
4576 * debug.h (scm_debug_mode_p), backtrace.c (display_error_body),
4577 eval.c (SCM_APPLY, scm_trampoline_0, scm_trampoline_1,
4578 scm_trampoline_2): Change uses of scm_debug_mode or SCM_DEBUGGINGP
4579 to scm_debug_mode_p.
4580
4581
4582 Deprecate direct access to scm_ceval, scm_deval and scm_ceval_ptr:
4583
4584 * eval.h (scm_ceval, scm_deval, scm_ceval_ptr), debug.h
4585 (scm_ceval_ptr): Deprecated. Moved declaration of scm_ceval_ptr
4586 from debug.h to eval.h.
4587
4588 * debug.h (SCM_RESET_DEBUG_MODE): Don't access scm_ceval_ptr any
4589 more, just leave it with setting scm_debug_mode_p, which is
4590 equivalent for practical purposes.
4591
4592 * deprecated.h (SCM_XEVAL, SCM_XEVALCAR): Call scm_i_eval_x
4593 instead of *scm_ceval_ptr. Leave all evaluating to scm_i_eval_x.
4594
4595 * gdbint.c (gdb_eval): Call scm_i_eval_x instead of scm_ceval.
4596
4597 * eval.c (ceval, deval, scm_ceval, scm_deval): Made scm_ceval
4598 static and renamed it to ceval throughout. Provide a new exported
4599 but deprecated function scm_ceval as a wrapper for backwards
4600 compatibility. The same is done for the deval/scm_deval pair of
4601 functions.
4602
4603 * eval.c (CEVAL, SCM_CEVAL): Renamed SCM_CEVAL to CEVAL
4604 throughout. Defined CEVAL to ceval or deval, based on compilation
4605 phase.
4606
4607 * eval.c (SCM_XEVAL, SCM_XEVALCAR): Dispatch on scm_debug_mode_p
4608 to ceval and deval instead of calling *scm_ceval_ptr.
4609
4610 * eval.c (dispatching_eval): New deprecated static function.
4611
4612 * eval.c (scm_ceval_ptr): Initialized to dispatching_eval in order
4613 to emulate its old behaviour as closely as possible.
4614
4615
4616 Change the evaluator such that only expressions for which pair? is
4617 true are passed to CEVAL, and such that all other expressions are
4618 evaluated outside of CEVAL:
4619
4620 * eval.c (EVAL): New, provided in analogy to EVALCAR. Evaluate an
4621 expression that is assumed to be memoized already. All but
4622 expressions of the form '(<form> <form> ...)' are evaluated inline
4623 without calling an evaluator.
4624
4625 * eval.c (SCM_XEVAL, SCM_XEVALCAR, EVALCAR): Evaluate all but
4626 expressions of the form '(<form> <form> ...)' inline without
4627 calling an evaluator.
4628
4629 * eval.c (scm_i_eval_x, scm_i_eval, scm_ceval, scm_deval): Handle
4630 the special case of unmemoized symbols passed on the top level.
4631
4632 * eval.c (CEVAL): Change calls to CEVAL to EVAL, except where it
4633 is known that the expression passed to CEVAL is of the form
4634 '(<form> <form> ...)'. Remove handling of the tc7-objects, since
4635 now it is known that the input expression of CEVAL is a pair.
4636
46372004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5fb64383
DH
4638
4639 * eval.c (is_self_quoting_p): New static function.
4640
4641 (scm_m_quote): Use is_self_quoting_p.
4642
4643 (copy_tree): Corrected typo in comment.
4644
702551e6
HWN
46452004-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
4646
bfefbf18
HWN
4647 * eval.c (s_scm_copy_tree): idem.
4648
4649 * list.c (s_scm_filter): remove "pointer" from doc string.
4650
702551e6
HWN
4651 * gc.h (SCM_GC_CELL_TYPE): SCM_GC_CELL_TYPE uses SCM_GC_CELL_OBJECT.
4652
4653 * goops.h (SCM_NUMBER_OF_SLOTS): don't SCM_UNPACK the result.
4654
4655 * backtrace.c ("display_backtrace_body"): SCM_PACK before SCM_EQ_P
4656 (display_frame): idem.
4657 (display_backtrace_file_and_line): idem.
4658
4659 * tags.h (SCM_UNPACK): stricter typechecking on SCM_UNPACK
4660 arguments.
4661
3cd23214
KR
46622004-03-26 Kevin Ryde <user42@zip.com.au>
4663
88a7ae1f
KR
4664 * filesys.c (scm_getcwd, scm_readlink): Avoid memory leak on errors.
4665
3cd23214
KR
4666 * numbers.c (scm_modulo): For inum/big and big/big, remove test of
4667 big==0 since that never occurs.
4668
4669 * numbers.c, numbers.h (scm_modulo_expt): Renamed from
4670 scm_modular_expt, matching scheme level name `modulo-expt'.
4671
4672 * numbers.c (scm_modular_expt): Return a negative remainder for a
4673 negative divisor, the same as `modulo' does.
4674
46752004-03-26 Eric Hanchrow <offby1@blarg.net>
4676
4677 * numbers.c, numbers.h (scm_modular_expt): New function.
4678
2926035a
KR
46792004-03-25 Kevin Ryde <user42@zip.com.au>
4680
4681 * numbers.c (scm_min, scm_max): Correction to big/real and real/big,
4682 return inexact as required by r5rs.
4683
62360b89
DH
46842004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4685
4686 * eval.c: Separated some definitions relevant for execution from
4687 the memoization part of the file.
4688
4689 (copy_tree): New static function
4690
4691 (scm_copy_tree): Rewritten to fix two kinds or bugs: First, cyclic
4692 structures are detected now and will lead to an exception instead
4693 of forcing guile to run in an endless loop, using up all the
4694 system's memory. Second, arrays in the cdr of an improper list
4695 are now copied. See the new test cases in eval.test.
4696
46972004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
b28f5b3c
DH
4698
4699 * posix.c (scm_gethostname): Make sure len is initialised before
4700 it is used. Restructured to (hopefully) represent possible
4701 configurations more clearly in the code. Added unwind handler.
4702
3bd3bae8
KR
47032004-03-23 Kevin Ryde <user42@zip.com.au>
4704
4705 * posix.c (scm_gethostname): Use sysconf(_SC_HOST_NAME_MAX) and/or
4706 MAXHOSTNAMELEN when available.
4707
254bf78d
MV
47082004-03-21 Marius Vollmer <mvo@zagadka.de>
4709
4710 * read.c (skip_scsh_block_comment): Also recognize '\r' as a line
4711 terminator. Rewritten the logic as a state machine, I must have
4712 been doing too much VHDL lately...
4713
4714 * eval.c (scm_ceval, scm_deval): Explicitely evaluate ports to
4715 themselves. Thanks to Han-Wen Nienhuys!
4716
4717 * list.c: Changed docstrings so that they no longer talk about
4718 returning 'pointers' to something.
4719
009c34a2
HWN
47202004-03-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
4721
4722 * gc.c: remove set_debug_cell_accesses! when
4723 SCM_DEBUG_CELL_ACCESSES is not defined. Scheme source code should
4724 use (if (defined? 'set-debug-cell-accesses!) .. ) to switch on
4725 debugging conditionally.
4726
54733c95
KR
47272004-03-21 Kevin Ryde <user42@zip.com.au>
4728
4729 * stime.c (scm_gmtime): Use gmtime_r when available, for thread safety.
4730
bbaf8747
KR
47312004-03-20 Kevin Ryde <user42@zip.com.au>
4732
4733 * posix.c (scm_gethostname): Preserve errno across free() call.
4734
726f82e7
HWN
47352004-03-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
4736
4737 * gc-card.c (sweep_card): use SCM_GC_SET_CELL_WORD for setting
4738 free cells.
4739
e1350d6a
KR
47402004-03-14 Kevin Ryde <user42@zip.com.au>
4741
4742 * stime.c: Define _GNU_SOURCE for strptime prototype from glibc.
4743 (strptime): Use HAVE_DECL_STRPTIME for when to give own prototype.
4744
62055253
KR
47452004-03-07 Kevin Ryde <user42@zip.com.au>
4746
4747 * stime.c (scm_gmtime): Return bd_time->tm_zone when available, rather
4748 than "GMT" always.
4749 (filltime): Make zname parameter "const".
4750
92e64b87
MD
47512004-03-03 Mikael Djurfeldt <mdj@chunk.mit.edu>
4752
4753 * threads.c, threads.h (scm_c_scm2thread): New function.
4754
004ad931
KR
47552004-02-29 Kevin Ryde <user42@zip.com.au>
4756
4757 * numbers.c (guile_ieee_init): Use C99 INFINITY and NAN when
4758 available. Test HAVE_DINFINITY and HAVE_DQNAN for those globals, in
4759 particular don't assume "defined (__alpha__) && ! defined (linux)"
4760 means OSF. Remove "SCO" code, which was not really SCO specific and
4761 which John W. Eaton advises should be long past being needed.
4762
4763 * posix.c (scm_execl, scm_execlp, scm_execle): Avoid memory leak under
4764 error throw.
4765
72ea45ac
KR
47662004-02-24 Kevin Ryde <user42@zip.com.au>
4767
4768 * posix.c (scm_cuserid): Use a private result buffer, for thread safe.
4769
2af0602e
KR
47702004-02-22 Kevin Ryde <user42@zip.com.au>
4771
4772 * numbers.c (scm_max, scm_min): For one arg, dispatch to generic for
4773 complex, same as for two args. (Handle only inum, big, real, frac).
4774
b114eafe
KR
47752004-02-21 Kevin Ryde <user42@zip.com.au>
4776
4777 * posix.c (scm_crypt): Use new HAVE_CRYPT.
4778 (<crypt.h>): Remove HAVE_LIBCRYPT condition.
db752bb5 4779 Reported by Andreas Voegele.
b114eafe 4780
1e55d288
NJ
47812004-02-20 Neil Jerram <neil@ossau.uklinux.net>
4782
4783 * list.c (scm_list_n): Add #if SCM_DEBUG_CELL_ACCESSES_P around
4784 validation.
4785
4786 * read.c (scm_lreadparen): Removed.
4787 (scm_lreadparen1): Renamed scm_i_lreadparen.
4788
eb741d98
HWN
47892004-02-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
4790
4791 * list.c (scm_list_n): validate non-immediate arguments;
4792 this will catch forgotten a SCM_UNDEFINED.
4793
4e28ba5e
MV
47942004-02-18 Marius Vollmer <mvo@zagadka.de>
4795
4796 * gc.h (scm_gc_cells_collected): Removed duplicated declaration.
4797 Thanks to Bill Schottstaedt!
4798
4799 * socket.h (scm_gethost): Removed prototype it is already in
4800 "net_db.h". Thanks to Bill Schottstaedt!
4801
ef861ead
KR
48022004-02-18 Kevin Ryde <user42@zip.com.au>
4803
4804 * num2integral.i.c (INTEGRAL2BIG): WORDS_BIGENDIAN not right for word
4805 order parameter to mpz_import, in fact with just one word there's no
4806 order to worry about at all.
4807
4808 * numbers.c (scm_num_eq_p): For real==frac, complex==frac, frac==real
4809 and frac==complex, make an exact comparison rather than converting
4810 with fraction2double.
4811
4812 * posix.c, putenv.c, stime.c (environ): Use _NSGetEnviron in Darwin
4813 shared library, since environ is not directly available there.
4814
4815 * script.c (scm_shell_usage): Print to stdout for --help, per GNU
4816 standard.
4817
4818 * stime.c (scm_localtime, scm_gmtime, scm_mktime): Provide a default
4819 errno EINVAL in case localtime and gmtime don't set it.
4820 (scm_mktime, scm_strptime): Forcibly use errno EINVAL for our
4821 SCM_SYSERROR, since mktime and strptime generally don't set errno.
4822
ae43d08e 48232004-02-16 Kevin Ryde <kevin@swox.se>
292dfa7f 4824
c9ea6462
KR
4825 * gc-malloc.c (scm_done_malloc, scm_done_free): Allow negative sizes,
4826 which were permitted in the past for these.
4827
292dfa7f
KR
4828 * num2float.i.c (NUM2FLOAT): Expand isfinite to !xisinf, as per
4829 previous change to numbers.c.
4830
ae43d08e
KR
4831 * script.c (scm_shell_usage): Print bug-guile email address, as per
4832 GNU standard. Reported by Han-Wen Nienhuys.
4833
711a9fd7
MD
48342004-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
4835
4836 * unif.c (scm_make_uve): Removed local variable and simplified
4837 code in order to avoid compiler used uninitialized warnings.
4838
4839 * hashtab.c, hashtab.h (scm_hash_map_to_list): Renamed from
4840 scm_hash_map.
4841 (scm_hash_fold): Use scm_call_3 directly in the call to
4842 scm_internal_hash_fold instead of going via fold_proc (which is
4843 now removed).
4844 (scm_hash_for_each): Use a trampoline +
4845 scm_internal_hash_for_each_handle.
4846 (scm_internal_hash_for_each_handle, scm_hash_for_each_handle): New
4847 functions.
4848
3da7f6b2
KR
48492004-02-12 Kevin Ryde <user42@zip.com.au>
4850
344a212f
KR
4851 * ports.c (scm_port_line): In docstring, note first line is 0.
4852 (scm_set_port_line_x): In docstring, note first line is 0.
4853 (scm_port_column): In docstring, there's no default to current input
4854 port, and remove shared port-line @defun.
4855 (scm_set_port_column_x): In docstring, there's no default to current
4856 input port, note first column is 0, remove shared set-port-line!
4857 @defun.
4858
3da7f6b2
KR
4859 * ramap.c (scm_array_fill_x): For fvect and dvect, use scm_num2dbl to
4860 convert args the same way that array-set! does.
4861
4862 * unif.c (scm_make_uve, scm_array_p): Allow fraction 1/3 as prototype
4863 for dvect.
4864 (scm_array_p): Add missing "break"s in switch, fix llvect test look
4865 for "l" not "s", fix dvect to be false for singp(prot) since such a
4866 value is for fvect.
4867 (scm_array_prototype): Return 1/3 for dvect, rather than 0.33..33.
88531a74
KR
4868 (exactly_one_third): New variable.
4869 (scm_init_unif): Initialize it.
3da7f6b2 4870
cd21f5eb
NJ
48712004-02-10 Neil Jerram <neil@ossau.uklinux.net>
4872
4873 * read.c (scm_read_opts): Change `escaped-parens' to
4874 `elisp-strings'.
4875
16353acc
NJ
48762004-02-08 Neil Jerram <neil@ossau.uklinux.net>
4877
4878 * read.c (scm_read_opts): New opts `elisp-vectors' and
4879 `escaped-parens'.
4880 (s_vector): New.
4881 (scm_lreadr): Use scm_lreadparen1 instead of scm_lreadparen. Make
4882 handling of elisp vector syntax dependent on SCM_ENABLE_ELISP and
4883 `elisp-vectors' option instead of SCM_ELISP_READ_EXTENSIONS.
4884 Allow "\(" and "\)" in strings when SCM_ENABLE_ELISP defined and
4885 `escaped-parens' option set.
4886 (scm_read_token): If elisp vector syntax active, disallow [ and ]
4887 in tokens.
4888 (scm_lreadparen): Rewrite as interface to scm_lreadparen1.
4889 (scm_lreadparen1): New.
4890
4891 * read.h: Remove conditionally compiled last arg to
4892 scm_lreadparen.
4893 (SCM_ELISP_VECTORS_P, SCM_ESCAPED_PARENS_P): New.
4894
f62b9dff
HWN
48952004-01-23 Han-Wen Nienhuys <hanwen@xs4all.nl>
4896
4897 * eval.c (m_expand_body): remove stray variable new_body.
4898
ef5b6b61
MV
48992004-01-22 Marius Vollmer <mvo@zagadka.de>
4900
4901 * eval.c (m_expand_body): Rewrite the expression in place (by
4902 overwriting FORMS) also when a letrec is constructed, not only
4903 when no definitions are found. Do not return rewritten expression
4904 to emphasize the in-place rewriting. Changed all users.
4905
7eec4c37
HWN
49062004-01-19 Han-Wen Nienhuys <hanwen@xs4all.nl>
4907
4908 * gc.c: add protected_object_count, a number that is dumped from
4909 gc_stats()
4910
25ffbdac
MV
49112004-01-11 Marius Vollmer <mvo@zagadka.de>
4912
4913 * dynwind.h, dynwind.c (scm_frame_unwind,
4914 scm_frame_unwind_handler): Renamed and changed all uses.
4915 (scm_frame_rewind, scm_frame_rewind_handler): Likewise.
4916
08568c95
KR
49172004-01-11 Kevin Ryde <user42@zip.com.au>
4918
4919 * unif.c (scm_bit_count, scm_bit_position, s_scm_bit_set_star_x,
4920 s_scm_bit_count_star, s_scm_bit_invert_x): Clarify docstrings, as per
4921 changes made to scheme-compound.texi.
4922
5565749c
MV
49232004-01-10 Marius Vollmer <mvo@zagadka.de>
4924
25ffbdac
MV
4925 * print.c (scm_print_symbol_name): Handle #{`foo}#, #{,foo}#,
4926 #{.}#, and all numeric strings specially. Thanks to Paul Jarc!
4927
4928 * guile-snarf.in: Use mkdir to create a unique temporary directory
4929 that we can safely use. Thanks to Stefan Nordhausen!
5565749c 4930
fc6bb283
MV
49312004-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4932
7ebccde8
MV
4933 * dynwind.h, dynwind.c (scm_i_dowinds): Removed 'explicit'
4934 argument since it is always zero now. Changed all callers.
4935 Removed code for handling fluids.
96e3b2f8
MV
4936
4937 * fluids.c (scm_c_with_fluids): Use frames instead of adding to
4938 the wind chain explicitely. Use scm_c_with_fluid for the common
4939 case of only one fluid.
4940 (scm_with_fluid): New.
4941 (scm_c_with_fluid): Use frames instead of scm_c_with_fluids.
4942
fc6bb283 4943 * fluids.h, fluids.c (scm_frame_fluid): New.
96e3b2f8
MV
4944 (scm_with_fluid): New.
4945 (scm_i_swap_fluids, scm_i_swap_fluids_reverse): Removed.
fc6bb283
MV
4946
4947 * dynwind.c (scm_frame_end): Do not use scm_i_dowinds. Instead,
4948 do the unwinding directly. It is simple enough.
4949
4950 * dynwind.h, dynwind.c: Did the following renamings:
4951 scm_begin_frame -> scm_frame_begin,
4952 scm_end_frame -> scm_frame_end,
4953 scm_on_unwind -> scm_frame_unwind,
4954 scm_on_rewind -> scm_frame_rewind,
4955 scm_on_unwind_with_scm -> scm_frame_unwind_with_scm,
4956 scm_on_rewind_with_scm -> scm_frame_rewind_with_scm.
4957 Changed all uses.
4958
4959 * aync.h, async.c: Did the follwing renamings:
4960 scm_with_blocked_asyncs -> scm_frame_block_asyncs,
4961 scm_with_unblocked_asyncs -> scm_frame_unblock_asyncs.
4962 Changed all uses.
4963
4964 * ports.h, ports.c: Did the follwing renamings:
4965 scm_with_current_input_port -> scm_frame_current_input_port,
4966 scm_with_current_output_port -> scm_frame_current_output_port,
4967 scm_with_current_error_port -> scm_frame_current_error_port.
4968 Changed all uses.
4969
298ab996
KR
49702004-01-07 Kevin Ryde <user42@zip.com.au>
4971
4972 * numbers.c (s_bignum): Remove, not used since gmp bignums.
4973 Reported by Richard Todd.
4974
ba40113e
KR
4975 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 12*sizeof(long),
4976 for the benefit of powerpc-apple-darwin5.5. Reported by Richard Todd.
4977
298ab996
KR
4978 * unif.c (scm_aind): Test SCM_CONSP rather than !SCM_NULLP while
4979 traversing the args list, fixes segv if an improper list is given.
4980 Reported by Rouben Rostamian.
4981
aacff585
MV
49822004-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4983
4984 * ports.c (swap_ports, scm_with_current_foo_port): Do not allocate
4985 swap_data on stack, use a 'malloc obj'.
4986
4987 * fluids.h, fluids.c (scm_make_initial_fluids, scm_copy_fluids,
4988 scm_swap_fluids, scm_swap_fluids_reverse): Renamed to
4989 scm_i_... since they are internal. Changed all uses.
4990
4991 * dynwind.c (frame_print): Removed, use the default printer.
4992 (WINDER_F_MARK, WINDER_MARK_P, winder_mark): New.
4993 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New. Use above
4994 to protect SCM values.
4995
4996 * dynwind.h (SCM_F_WIND_EXPLICITELY,
4997 SCM_F_WIND_EXPLICITLY): It's "explicitly" not "explicitely", damn.
4998 Changed all uses.
4999 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New.
5000
49c00ecc
MV
50012004-01-05 Marius Vollmer <mvo@zagadka.de>
5002
5003 * ports.h, ports.c (scm_with_current_input_port,
5004 scm_with_current_output_port, scm_with_current_error_port): New.
5005
5006 * async.h, async.c (scm_with_blocked_asyncs,
5007 scm_with_unblocked_asyncs): New.
5008
dab514a8
MV
50092004-01-03 Marius Vollmer <mvo@zagadka.de>
5010
5011 * dynwind.h, scm_dynwind.c (scm_t_frame_flags, scm_t_wind_flags,
5012 scm_begin_frame, scm_end_frame, scm_on_unwind, scm_on_rewind):
5013 New.
5014 (scm_dowinds, scm_i_dowinds): scm_dowinds has been renamed to
5015 scm_i_dowinds and extended to handle frames and to invoke a 'turn'
5016 function when the outermost wind point has been reached. The
5017 latter is used to copy a continuation stack at the right time.
5018 scm_dowinds remains available.
5019 (SCM_GUARDSP, SCM_BEFORE_GUARD, SCM_AFTER_GUARD, SCM_GUARD_DATA,
5020 tc16_guard, guards_print): Removed.
5021 (scm_internal_dynamic_wind): Reimplemented using frames.
5022
5023 * continuations.c (copy_stack): New, do only the stack copying
5024 part of copy_stack_and_call.
5025 (copy_stack_and_call): Copy the stack after unwinding and before
5026 rewinding.
5027 (scm_dynthrow): Do not call scm_dowinds, this is now done by
5028 copy_stack_and_call.
5029
441a25d9
KR
50302004-01-04 Kevin Ryde <user42@zip.com.au>
5031
5032 * numbers.c (scm_less_p): Don't convert frac to float for compares,
dab514a8 5033 can give bad results due to rounding.
441a25d9 5034
e0499207
KR
5035 * stime.c (scm_current_time, scm_gettimeofday): Add a comment about
5036 setzone/restorezone protection for DOS.
5037
89fcf1b4
MV
50382003-12-26 Marius Vollmer <mvo@zagadka.de>
5039
5040 * gen-scmconfig.h.in, gen-scmconfig.c: Arrange for scm_t_intmax
5041 and scm_t_uintmax to be defined in scmconfig.h
5042
caff34d4
KR
50432003-12-03 Kevin Ryde <user42@zip.com.au>
5044
5045 * numbers.c (scm_less_p): Remove spurious xisnan from frac+big case.
5046
5047 * numbers.c (scm_make_ratio): Check for numerator equal to
5048 SCM_MOST_NEGATIVE_FIXNUM and bignum denominator the negative of that,
5049 giving integer -1.
5050
5051 * numbers.c (scm_real_part): Return fraction unchanged rather than
5052 converting to flonum.
5053
2d0b85ac
DH
50542003-11-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
5055
5056 * modules.c (module_variable): Fixed (and thus simplified) the
5057 definition of SCM_BOUND_THING_P to reflect the fact that since
5058 after the 1.4 series of guile, obarrays only hold variable
5059 objects.
5060
2297981d
MV
50612003-11-30 Marius Vollmer <mvo@zagadka.de>
5062
5063 * numbers.c (scm_logand): It's "#b...", not "#\b...".
5064
5065 From Paul Jarc:
5066
5067 * read.c (scm_lreadr): Signal an error for invalid escape
5068 sequences in strings. Code cleanups too.
5069
5070 * print.c (scm_iprin1): use \xNN hexadecimal sequences when
5071 writing control characters in strings.
5072
50732003-11-21 Marius Vollmer <mvo@zagadka.de>
5074
5075 * ports.c (scm_drain_input): Bug fix: only access the port after
5076 checking that it indeed is one.
5077
5c264007
DH
50782003-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
5079
5080 * eval.c (s_bad_define): New static identifier.
5081
5082 (m_body): Fixed comment.
5083
5084 (scm_m_define): Don't generate memoized code for definitions that
5085 are not on the top level. As a consequence, no memoized code at
5086 all is generated for definitions any more: Top level definitions
5087 are executed immediately during memoization and internal
5088 definitions are handled separately in m_expand_body.
5089
5090 (scm_unmemocopy, unmemocopy): Removed code for unmemoizing
5091 definitions. Consequently, there is no unmemoizing code any more
5092 that might modify the environment. Thus, the old scm_unmemocopy
5093 is removed and the old unmemocopy is renamed to scm_unmemocopy.
5094
5095 (SCM_CEVAL): The SCM_IM_DEFINE keyword can no longer occur in
5096 memoized code. Call EVALCAR for continuations. Prefer !SCM_NULLP
5097 over SCM_NIMP in places, where the argument is known to be part of
5098 a proper list.
5099
018d4730
KR
51002003-11-21 Kevin Ryde <user42@zip.com.au>
5101
5102 * numbers.c (scm_abs): Allocate a new real only for negatives, as done
5103 for bignums.
5104
5105 * numbers.c (scm_bit_extract): Use mpz functions, rearrange inum case
5106 to share some shifting.
5107
5108 * numbers.c (scm_integer_expt): Don't mpz_init after scm_i_clonebig or
5109 scm_i_mkbig, since they do so already. Don't mpz_clear a bignum SCM,
5110 since gc does this.
5111
4bca30d8
MV
51122003-11-19 Marius Vollmer <mvo@zagadka.de>
5113
fb16d26e
MV
5114 * numbers.c (scm_make_ratio): Rewritten to have a simpler
5115 structure. Previously, not all cases with a negative denominator
5116 were covered.
5117
4bca30d8
MV
5118 * numbers.c (mem2decimal_from_point): use scm_divide instead of
5119 scm_divide2real when forming the fractional part. This allows
5120 "#e1.2" to yield 6/5.
5121
5122 * numbers.c (scm_i_fraction_equalp): Do not treat the return value
5123 of scm_equal_p as a C boolean, use SCM_FALSEP. Previously, all
5124 fractions were equal to each other regardless of value. Ooops.
5125
5126 * numbers.c (scm_rationalize): Return an inexact result when given
5127 inexact arguments.
5128
5129 * numbers.c (scm_exact_p, scm_inexact_p): Throw error for
5130 non-numbers.
5131
bdf26b60
MV
51322003-11-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5133
5134 Support for exact fractions from Bill Schottstaedt! Thanks!
5135
5136 * print.c (scm_iprin1): Handle fractions.
5137
5138 * objects.h (scm_class_fraction): New.
5139 * objects.c (scm_class_fraction): New.
5140 (scm_class_of): Handle fractions.
5141
5142 * hash.c (scm_hasher): Handle fractions.
5143
5144 * numbers.c: New code for handling fraction all over the place.
5145 (scm_odd_p, scm_even_p): Handle inexact integers.
5146 (scm_rational_p): New function, same as scm_real_p.
5147 (scm_round_number, scm_truncate_number, scm_ceiling, scm_floor):
5148 New exact functions that replace the inexact 'dsubr'
5149 implementations.
5150 (scm_numerator, scm_denominator): New.
5151
5152 * numbers.h (SCM_NUMP): Recognize fractions.
5153 (SCM_FRACTIONP, SCM_SLOPPY_FRACTIONP, SCM_FRACTION_NUMERATOR,
5154 SCM_FRACTION_DENOMINATOR, SCM_FRACTION_SET_NUMERATOR,
5155 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
5156 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
5157 SCM_FRACTION_REDUCED): New.
5158 (scm_floor, scm_ceiling, scm_truncate_number, scm_round_number):
5159 New prototypes.
5160 (scm_make_ratio, scm_rationalize, scm_numerator, scm_denominator,
5161 scm_rational_p): New prototypes.
5162 (scm_i_dbl2num, scm_i_fraction2double, scm_i_fraction_equalp,
5163 scm_i_print_fraction): New prototypes.
5164
5165 * goops.c (create_standard_classes): Create "<fraction>" class.
5166
5167 * gc-mark.c (scm_gc_mark_dependencies): Handle fractions.
5168
5169 * gc-card.c (scm_i_sweep_card): Include scm_tc16_fraction as a
5170 case in the switch, but do nothing for now.
5171
5172 * eval.c (SCM_CEVAL, SCM_APPLY, call_dsubr_1): Convert fractions
5173 to doubles when calling 'dsubr' functions.
5174
5175 * eq.c (scm_eqv_p, scm_equal_p): Handle fractions.
5176
28fda544
RB
51772003-11-18 Rob Browning <rlb@defaultvalue.org>
5178
5179 * gen-scmconfig.c (main): remove public definition of
5180 SCM_SIZEOF___INT64 and SCM_SIZEOF_UNSIGNED___INT64 and add
5181 direct typedef of long_long and ulong_long inside deprecated block
5182 when appropriate.
5183
5184 * deprecated.h: move long_long and ulong_long definitions to
5185 gen-scmconfig.c so that we don't need to add SCM_SIZEOF___INT64
5186 and SCM_SIZEOF_UNSIGNED___INT64 to the public namespace.
5187
b58e7420
MV
51882003-11-17 Marius Vollmer <mvo@zagadka.de>
5189
9a1d7d7c
MV
5190 * hash.c (scm_string_hash): New hashing algorithm that takes the
5191 complete string into account.
5192
b58e7420
MV
5193 * eval.c (scm_m_generalized_set_x): Macroexpand the target when it
5194 is a list. This allows (@ ...) to work with set!.
9a1d7d7c
MV
5195 (scm_m_generalized_set_x): Use ASSERT_SYNTAX_2 instead of
5196 SCM_ASSYNT.
b58e7420
MV
5197
5198 * script.c (scm_compile_shell_switches): Use scm_c_read_string for
5199 the "-e" option instead of scm_str2symbol. This allows things
5200 like (@ ...) to be specified for the entry point.
5201
461bffb1
DH
52022003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5203
5204 * eval.c (scm_m_letstar): Create memoized code in place to
5205 minimize consing.
5206
6f81708a
DH
52072003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5208
5209 * eval.c (s_splicing): Commented and reformulated.
5210
5211 (lookup_global_symbol, lookup_symbol): New static functions.
5212
5213 (s_test, s_bindings, s_duplicate_bindings, s_variable): Removed.
5214
5215 (try_macro_lookup, literal_p): Use lookup_symbol instead of
5216 creating a temporary pair for scm_lookupcar.
5217
5218 (scm_unmemocar, unmemocar): Renamed scm_unmemocar to unmemocar,
5219 created deprecated wrapper function scm_unmemocar.
5220
5221 (SCM_VALIDATE_NON_EMPTY_COMBINATION, scm_sym_else,
5222 scm_sym_unquote, scm_sym_uq_splicing, scm_sym_enter_frame,
5223 scm_sym_apply_frame, scm_sym_exit_frame, scm_sym_trace, f_apply,
5224 undefineds, sym_three_question_marks): Moved around without
5225 modifications.
5226
5227 * eval.c, eval.h (scm_macroexp, scm_unmemocar): Deprecated.
5228
910b5125
DH
52292003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
5230
5231 * eval.c (try_macro_lookup, expand_user_macros, is_system_macro_p,
5232 m_expand_body, scm_m_expand_body): Grouped together with m_body.
5233 No further modifications.
5234
c86c440b
DH
52352003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
5236
5237 * eval.c (s_mixed_body_forms): New static identifier.
5238
5239 (canonicalize_define, scm_m_define): The check for a bad
5240 expression is performed in canonicalize_define now.
5241
5242 (try_macro_lookup, expand_user_macros, is_system_macro_p): New
5243 static helper functions for m_expand_body.
5244
5245 (m_expand_body): Use ASSERT_SYNTAX to signal syntax errors. Only
5246 expand user defined macros. Fixed handling of the definition/
5247 expression boundary. Fixed handling of definitions grouped with
5248 'begin. Use canonicalize_define to expand definitions.
5249
3890131a
MV
52502003-11-13 Marius Vollmer <mvo@zagadka.de>
5251
b58e7420
MV
5252 * read.c (scm_lreadr): detect EOF after backslash, and interpret
5253 \xNN hexadecimal sequences. From Paul Jarc, thanks!
5254
5df36eac
MV
5255 * snarf.h (SCM_SMOB, SCM_GLOBAL_SMOB, SCM_SMOB_MARK,
5256 SCM_GLOBAL_SMOB_MARK, SCM_SMOB_FREE, SCM_GLOBAL_SMOB_FREE,
5257 SCM_SMOB_PRINT, SCM_GLOBAL_SMOB_PRINT, SCM_SMOB_EQUALP,
5258 SCM_GLOBAL_SMOB_EQUALP, SCM_SMOB_APPLY, SCM_GLOBAL_SMOB_APPLY):
5259 New macros from Paul Jarc. Thanks!
5260
3890131a
MV
5261 * gc_os_dep.c (scm_get_stack_base): Provide a definition that
5262 return NULL when the machine type is unknown. Previously,
5263 gc_os_dep.c would refuse to compile.
5264
430b8401
DH
52652003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
5266
5267 * eval.c (scm_m_body, m_body, scm_m_lambda, memoize_named_let,
5268 scm_m_let, scm_m_letrec, m_expand_body): Renamed static function
5269 scm_m_body to m_body.
5270
328dc9a3
DH
52712003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
5272
5273 * eval.c, eval.h (scm_m_expand_body, m_expand_body): Deprecated
5274 public use of scm_m_expand_body in eval.h. In eval.c, renamed
5275 scm_m_expand_body to m_expand_body and made it static. Added
5276 deprecated wrapper scm_m_expand_body.
5277
5278 (scm_eval_body, SCM_CEVAL, SCM_APPLY): Use m_expand_body instead
5279 of scm_m_expand_body.
5280
c2337a61
KR
52812003-11-09 Kevin Ryde <user42@zip.com.au>
5282
5283 * dynl.c (scm_dynamic_unlink): Need scm_list_1 on error message
5284 argument. Reported by Mike Gran.
5285
ced8edb0
DH
52862003-11-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
5287
5288 * eval.c (s_missing_body_expression): New static identifier.
5289
5290 (s_body): Removed.
5291
5292 (scm_m_expand_body): Fixed core dump when passing a body with
5293 defines, but without expressions (see additions to syntax.test).
5294 Use ASSERT_SYNTAX to signal syntax errors.
5295
0f572ba7
DH
52962003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5297
5298 * eval.c (canonicalize_define): New static helper function.
5299
5300 (memoize_define, canonicalize_define): Extract handling of
5301 function currying to canonicalize_define.
5302
2510c810
DH
53032003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5304
5305 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
5306 Make sure that error checking in debug mode is not worse than in
5307 standard mode.
5308
34adf7ea
DH
53092003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5310
5311 * eval.c (scm_m_body, scm_m_lambda): Documentation strings are not
5312 handled in scm_m_body any more, but rather in scm_m_lambda.
5313
5314 (scm_m_body, memoize_named_let, scm_m_let, scm_m_letstar,
5315 scm_m_letrec, scm_m_expand_body): Check for validity is done by
5316 calling functions of scm_m_body.
5317
5318 (scm_m_lambda): Avoid unnecessary consing when creating the
5319 memoized code.
5320
89bff2fc
DH
53212003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5322
5323 * eval.c (s_expression): Added comment.
5324
5325 (s_empty_combination, error_unbound_variable): New static
5326 identifiers.
5327
5328 (SCM_VALIDATE_NON_EMPTY_COMBINATION, SCM_EVALIM2, scm_lookupcar1):
5329 Use ASSERT_SYNTAX, syntax_error or error_unbound_variable to
5330 signal syntax errors.
5331
5332 (SCM_CEVAL): Separated handling of evaluator bytecodes and other
5333 scheme objects.
5334
60a49842
DH
53352003-10-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5336
5337 * eval.c (unmemocar, sym_three_question_marks, scm_unmemocar):
5338 Grouped together with unmemocopy, without modifications.
5339
5340 (build_binding_list, unmemocopy): Renamed names of list arguments
5341 and variables to reflect the actual order of the list elements.
5342
70c1c108
DH
53432003-10-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
5344
5345 * eval.c (s_defun): New static identifier.
5346
5347 (scm_m_nil_cond, scm_m_atfop, scm_m_undefine): Add comments. Use
5348 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
5349 when creating the memoized code.
5350
0ee39677
KR
53512003-10-19 Kevin Ryde <user42@zip.com.au>
5352
5353 * numbers.c (scm_ash): Revise docstring as per recent update to manual.
5354
5355 * numbers.c (scm_i_big2dbl): Rewrite, carefully rounding to "closest"
5356 in accordance with R5RS, which just mpz_get_d doesn't really give.
5357
9a848baf
DH
53582003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5359
5360 * eval.c (s_bad_slot_number): New static identifier.
5361
5362 (scm_m_atslot_ref, scm_m_atslot_set_x): Use ASSERT_SYNTAX to
5363 signal syntax errors. Avoid unnecessary consing when creating the
5364 memoized code.
5365
da48db62
DH
53662003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5367
5368 * eval.c (scm_m_cont, scm_m_at_call_with_values,
5369 scm_m_generalized_set_x): Use ASSERT_SYNTAX to signal syntax
5370 errors. Avoid unnecessary consing when creating the memoized
5371 code.
5372
5373 (scm_m_generalized_set_x): Let scm_m_set_x handle the R5RS
5374 standard case. Make sure line and file information are copied to
5375 every created expression.
5376
82b3e2c6
DH
53772003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5378
5379 * eval.c (scm_m_set_x, scm_m_apply, scm_m_atbind): Use
5380 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
5381 when creating the memoized code.
5382
5383 (scm_m_atbind): Reversed the order, in which the init expressions
5384 are stored and executed. The order of execution is now equal to
5385 the order in which the initializers of the let-forms are executed.
5386 Use check_bindings and transform_bindings.
5387
5388 (SCM_CEVAL): Eliminated SCM_NIMP in favor of more appropriate
5389 !SCM_NULLP. Added some comments.
5390
21628685
DH
53912003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5392
5393 * eval.c: Sorted include files alphabetically.
5394
5395 (scm_m_begin): Added comment.
5396
5397 (scm_m_or): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5398 unnecessary consing when creating the memoized code.
5399
5400 (iqq, scm_m_quasiquote, scm_m_quote): Use ASSERT_SYNTAX to signal
5401 syntax errors. Be more specific about the kind of error that was
5402 detected.
5403
5404 (scm_m_quote, unmemocopy): As an optimization, vector constants
5405 are now inserted unquoted into the memoized code. During
5406 unmemoization the quotes are added again to provide syntactically
5407 correct code.
5408
d6754c23
DH
54092003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5410
5411 * eval.c (scm_m_let, scm_m_letstar, scm_m_letrec,
5412 scm_m_expand_body, check_bindings): Extracted syntax checking of
5413 bindings to new static function check_bindings.
5414
5415 (scm_m_let, memoize_named_let): Extracted handling of named let to
5416 new static function memoize_named_let.
5417
5418 (transform_bindings, scm_m_let, scm_m_letstar, scm_m_letrec): Use
5419 ASSERT_SYNTAX to signal syntax errors. Be more specific about the
5420 kind of error that was detected. Avoid use of SCM_CDRLOC. Avoid
5421 unnecessary consing when creating the memoized code.
5422
03a3e941
DH
54232003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5424
5425 * eval.c (s_bad_formals, s_bad_formal, s_duplicate_formal): New
5426 static identifiers.
5427
5428 (s_clauses, s_formals, s_duplicate_formals): Removed.
5429
5430 (scm_m_lambda): Use ASSERT_SYNTAX to signal syntax errors. Be more
5431 specific about the kind of error that was detected. Prepare for
5432 easier integration of changes for separated memoization.
5433
da48db62 54342003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
4610b011
DH
5435
5436 * eval.c (s_duplicate_binding): New static identifier.
5437
5438 (scm_m_case): Call scm_c_memq instead of implementing it inline.
5439
5440 (scm_m_define): Added comment about how we check for duplicate
5441 formals.
5442
5443 (scm_m_do): Added check for duplicate bindings.
5444
5445 (scm_m_if): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5446 unnecessary consing when creating the memoized code.
5447
5448 (scm_c_improper_memq, c_improper_memq, scm_m_lambda): Renamed
5449 scm_c_improper_memq to c_improper_memq, since it is not exported.
5450
5451 (transform_bindings): Call scm_c_memq rather than
5452 scm_c_improper_memq.
5453
5454 (SCM_CEVAL): Simplified handling of SCM_IM_IF forms.
5455
da48db62 54562003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
a954ce1d
DH
5457
5458 * eval.c (s_bad_bindings, s_bad_binding, s_bad_exit_clause): New
5459 static identifiers.
5460
5461 (scm_m_do): Use ASSERT_SYNTAX to signal syntax errors. Be more
5462 specific about the kind of error that was detected. Avoid use of
5463 SCM_CDRLOC. Avoid unnecessary consing when creating the memoized
5464 code, this way also making sure that file name, line number
5465 information etc. remain available.
5466
da48db62 54672003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
8ae95199
DH
5468
5469 * eval.c (memoize_as_thunk_prototype): New static function.
5470
5471 (scm_m_delay, scm_m_future): Use memoize_as_thunk_prototype.
5472 Avoid unnecessary consing when creating the memoized code.
5473
9b9a35b6
KR
54742003-10-12 Kevin Ryde <user42@zip.com.au>
5475
5476 * list.c (scm_append): Track argument number and use in error.
5477
cc56ba80
DH
54782003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5479
5480 * eval.c (s_missing_expression, s_bad_variable): New static
5481 identifiers.
5482
5483 (scm_m_define): Use ASSERT_SYNTAX to signal syntax errors. Prefer
5484 R5RS terminology for the naming of variables. Be more specific
5485 about the kind of error that was detected. Make sure file name,
5486 line number etc. are added to all freshly created expressions.
5487 Avoid unnecessary consing when creating the memoized code.
5488
609a8b86
DH
54892003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5490
5491 * eval.c (s_extra_expression, s_misplaced_else_clause,
5492 s_bad_cond_clause, s_missing_recipient): New static identifiers.
5493
5494 (s_extra_case_clause): Removed.
5495
5496 (scm_m_case, scm_m_cond): If a clause appears after an else
5497 clause, report a misplaced else clause.
5498
5499 (scm_m_cond): Use ASSERT_SYNTAX to signal syntax errors. Be more
5500 specific about the kind of error that was detected. Handle bound
5501 'else and '=>. Avoid unnecessary consing when creating the
5502 memoized code.
5503
5504 (scm_m_cond, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
5505 the syntactic keyword 'else and SCM_IM_ARROW to memoize the
5506 syntactic keyword '=>.
5507
58a2510b
DH
55082003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5509
5510 * eval.c (scm_m_case): Allow empty lists of case labels.
5511
2a6f7afe
DH
55122003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5513
5514 * tags.h (SCM_IM_ELSE, SCM_IM_ARROW): New memoizer codes.
5515
5516 * print.c (scm_isymnames): Add names for the new memoizer codes.
5517
5518 * eval.c (s_missing_clauses, s_bad_case_clause,
5519 s_extra_case_clause, s_bad_case_labels, s_duplicate_case_label,
5520 literal_p): New static identifiers.
5521
5522 (scm_m_case): Use ASSERT_SYNTAX to signal syntax errors. Be more
5523 specific about the kind of error that was detected. Check for
5524 duplicate case labels. Handle bound 'else. Avoid unnecessary
5525 consing when creating the memoized code.
5526
5527 (scm_m_case, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
5528 the syntactic keyword 'else.
5529
e6729603
DH
55302003-10-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
5531
5532 * eval.c (s_bad_expression, syntax_error_key, syntax_error,
5533 ASSERT_SYNTAX, ASSERT_SYNTAX_2): New static identifiers.
5534
5535 (scm_m_and): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5536 unnecessary consing when creating the memoized code.
5537
9ddeb776
KR
55382003-10-09 Kevin Ryde <user42@zip.com.au>
5539
5540 * numbers.c (scm_inexact_to_exact): Don't depend on what double->long
5541 cast gives for values bigger than a long, or for nan or inf.
5542
df5af69a
DH
55432003-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
5544
5545 * smob.h (scm_make_smob_type): Made the declaration match the
5546 definition.
5547
da0e6c2b
MV
55482003-10-07 Marius Vollmer <mvo@zagadka.de>
5549
5550 * goops.c, objects.h, smob.c, smob.h: Make type names char
5551 const * instead of char *. Thanks to Paul Jarc!
5552
591924eb
KR
55532003-10-02 Kevin Ryde <user42@zip.com.au>
5554
ff6ea7b9 5555 * strports.c (scm_call_with_output_string): scm_get_output_string
591924eb
KR
5556 rather than scm_strport_to_string, so as to guard against the port
5557 having been closed by the called procedure. Reported by Nic Ferrier.
5558
f03314f9
DH
55592003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5560
5561 * numbers.h (SCM_INEXACTP): Removed uses of SCM_TYP16S.
5562
5563 * tags.h, deprecated.h (SCM_TYP16S): Deprecated and moved from
5564 tags.h to deprecated.h.
5565
534c55a9
DH
55662003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5567
5568 This set of patches introduces a new tc7 code scm_tc7_number for
5569 numbers. Bignums, reals and complex numbers are turned from smobs
5570 into subtypes of scm_tc7_number.
5571
5572 * tags.h (scm_tc7_number): New.
5573
5574 * eq.c (scm_equal_p), eval.c (SCM_CEVAL), evalext.c
5575 (scm_self_evaluating_p), gc-card.c (scm_i_sweep_card), gc-mark.c
5576 (scm_gc_mark_dependencies), goops.c (create_smob_classes), hash.c
5577 (scm_hasher), numbers.c, numbers.h (SCM_NUMP), objects.c
5578 (scm_class_of), print.c (scm_iprin1), smob.c
5579 (scm_smob_prehistory): Don't handle bignums, reals and complex
5580 numbers as subtypes of scm_tc7_smob any more.
5581
5582 * numbers.h, tags.h (scm_tc16_big, scm_tc16_real,
5583 scm_tc16_complex): Moved definitions from tags.h to numbers.h.
5584
29c4382a
DH
55852003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5586
5587 * numbers.c (scm_make_complex), gc-card.c (scm_i_sweep_card): Use
5588 sizeof (scm_t_complex) to determine the memory size of the
5589 malloc'd area for complex numbers.
5590
47ae1f0e
DH
55912003-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
5592
5593 * numbers.c (scm_bigequal): Fixed.
5594
859b6b2f
MV
55952003-09-16 Marius Vollmer <mvo@zagadka.de>
5596
5597 * stime.c (scm_current_time): 'time' does not set errno so don't
5598 use SCM_SYSERROR for reporting errors.
5599
e17d318f
DH
56002003-09-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5601
5602 This set of patches eliminates the dependency between the
5603 implementation of evaluator specific memoization codes and special
5604 constants like #f, '() etc. ('flags'), which are not evaluator
5605 specific. The goal is to remove definitions of evaluator
5606 memoization codes completely from the public interface. This will
5607 make it possible to experiment more freely with optimizations of
5608 guile's internal representation of memoized code.
5609
5610 * objects.c (scm_class_of): Eliminate dependency on SCM_ISYMNUM.
5611
5612 * print.c (iflagnames): New array, holding the printed names of
5613 guile's special constants ('flags').
5614
5615 (scm_isymnames): Now holds only the printed names of the
5616 memoization codes.
5617
5618 (scm_iprin1): Separate the handling of memoization codes and
5619 guile's special constants.
5620
5621 * tags.h (scm_tc9_flag, SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA,
5622 SCM_IFLAGNUM): new
5623
5624 (scm_tc8_char, scm_tc8_iloc, SCM_BOOL_F, SCM_BOOL_T,
5625 SCM_UNDEFINED, SCM_EOF_VAL, SCM_EOL, SCM_UNSPECIFIED, SCM_UNBOUND,
5626 SCM_ELISP_NIL, SCM_IM_DISPATCH, SCM_IM_SLOT_REF,
5627 SCM_IM_SLOT_SET_X, SCM_IM_DELAY, SCM_IM_FUTURE,
5628 SCM_IM_CALL_WITH_VALUES, SCM_IM_NIL_COND, SCM_IM_BIND): Changed
5629 values.
5630
5631 (SCM_IFLAGP): SCM_IFLAGP now only tests for flags.
5632
5633 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Generalized to use the
5634 tc9 macros and scm_tc9_flag.
5635
eecac806
MV
56362003-09-15 Marius Vollmer <mvo@zagadka.de>
5637
5638 * posix.c (scm_setgroups): Check that the gid list is not too
5639 long. Thanks to Paul Jarc!
5640
22f2cf2d
DH
56412003-09-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
5642
5643 * tags.h: Reduced the number of short instructions from 14 to 13.
5644 The typecode of the former 14th short instruction is now used to
5645 represent long instructions. Changed some comments to reflect
5646 this fact.
5647
5648 (SCM_MAKISYM): ISYMs get a new tc7 code, namely the one that was
5649 previously used by SCM_IM_DEFINE.
5650
5651 (SCM_IM_DEFINE): Turned into a long instruction.
5652
5653 * eval.c (unmemocopy, SCM_CEVAL): Treat SCM_IM_DEFINE as a long
5654 instruction.
5655
5656 * eval.c (SCM_CEVAL): Since characters and iflags have now a tc7
5657 code that is separate from all instructions, one level of dispatch
5658 for long instructions can be eliminated.
5659
5660 * print.c (scm_isymnames): Removed some commented code.
5661
62f548e1
MV
56622003-09-12 Marius Vollmer <mvo@zagadka.de>
5663
97a61c5f
MV
5664 * __scm.h (SCM_FENCE): Use __memory_barrier with the Intel
5665 compiler on IA64.
5666
50e0ba57
MV
5667 * hashtab.h (scm_tc16_hashtable): Added "extern" declaration.
5668
5669 * modules.c (scm_module_reverse_lookup): Check that the obarray
5670 really is a hashtable and do nothing if not.
5671
62f548e1
MV
5672 * inline.h: Use "extern inline" only with GCC. Use "static
5673 inline" else.
5674
0d5e3480
DH
56752003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5676
5677 * numbers.h (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Removed uses
5678 of SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
5679
5680 * numbers.h, deprecated.h (SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP,
5681 SCM_SLOPPY_COMPLEXP): Deprecated and moved from numbers.h to
5682 deprecated.h.
5683
6b412e91
DH
56842003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5685
5686 * eq.c (scm_eqv_p, scm_equal_p): Removed uses of
5687 SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
5688
5689 * eq.c (scm_eqv_p, scm_equal_p): Reordered comparisons from
5690 0.0==some_expression to some_expression==0.0. The latter is
5691 better readable. The former is preferred by some people, since it
5692 leads to a compiler error when confusing == with =. However, when
5693 using gcc, a warning will be issued if in an if-statement an
5694 assigment appears. Since many Guile developers are using gcc,
5695 such errors will not remain unnoticed anyway. We can therefore
5696 focus on better readability.
5697
7e3b25bf
DH
56982003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5699
5700 * tags.h: Added description of Guile's type system. Removed some
5701 old and misleading comments.
5702
3ea39242
DH
57032003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5704
5705 * unit.c (scm_cvref): Eliminate unnecessary uses of SCM_NIMP,
5706 SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
5707
5d7d39ff
DH
57082003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5709
5710 * numbers.h (SCM_MAKINUM): Define in terms of scm_tc2_int.
5711
5712 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Define in terms of the
5713 respective SLOPPY macro.
5714
baa84a20
DH
57152003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5716
5717 * eq.c (scm_equal_p): Use SCM_TYP7 to check if an object is of
5718 type string, not SCM_TYP7S.
5719
ba15f500
KR
57202003-09-03 Kevin Ryde <user42@zip.com.au>
5721
5722 * numbers.c (scm_lognot): Correction to docstring, ones-complement not
5723 2s-complement.
5724
53bb8782
KR
5725 * stime.c (scm_strptime): Add comment about glibc strptime %s and
5726 current timezone requiring SCM_DEFER_INTS.
5727
defdc4b4
NJ
57282003-08-30 Neil Jerram <neil@ossau.uklinux.net>
5729
5730 * script.c (scm_compile_shell_switches): Make -s switch optional
5731 if file to be loaded does not begin with a `-'. (Thanks to Aaron
5732 VanDevender for the patch!)
5733
0f008a15
KR
57342003-08-30 Kevin Ryde <user42@zip.com.au>
5735
5736 * numbers.c (scm_lognot): Rewrite using ~ and mpz_com, for directness
5737 and to have non-integer types rejected as per other logical funcs.
5738
438a3ba1
KR
57392003-08-28 Kevin Ryde <user42@zip.com.au>
5740
5741 * gc.h (scm_remember_upto_here_1): Revise comments on the asm form.
5742
98dceb37
KR
57432003-08-23 Kevin Ryde <user42@zip.com.au>
5744
5745 * simpos.c (scm_system): Remove SCM_DEFER_INTS, system() should be
5746 thread safe, and could take a long time too.
5747
1fa79a38
KR
57482003-08-22 Kevin Ryde <user42@zip.com.au>
5749
5750 * numbers.c (scm_difference): Correction to bignum - negative inum.
5751
d97f9b42
KR
57522003-08-14 Kevin Ryde <user42@zip.com.au>
5753
5754 * gc.h (scm_remember_upto_here_1, scm_remember_upto_here_2)
5755 [__GNUC__]: Use volatile asm macros rather than a function call.
5756 * gc.c (scm_remember_upto_here_1, scm_remember_upto_here_2): Undefine
5757 macros while defining functions.
5758
5759 * simpos.c (getenv): Use <stdlib.h> for prototype.
5760 (scm_system): In docstring, refer to status:exit-val rather than
5761 "functions above".
5762
b9052fcc
KR
57632003-08-09 Kevin Ryde <user42@zip.com.au>
5764
5765 * srcprop.c (scm_source_properties): Return plist from hash if it's a
5766 list set by source-properties! rather than an SRCPROPS object,
5767
8e5b4b9e
KR
57682003-07-29 Kevin Ryde <user42@zip.com.au>
5769
5770 * properties.c (scm_primitive_property_ref): In docstring, note
5771 parameters to not-found-proc, use hyphens rather than underscores for
5772 that parameter name.
5773 (scm_primitive_property_set_x): In docstring, VAL is the value
5774 parameter not CODE.
5775
20703ac4
MV
57762003-07-27 Marius Vollmer <mvo@zagadka.de>
5777
c6ccee34
MV
5778 * print.c (scm_print_symbol_name): handle more weird characters by
5779 escaping the symbol name properly. Thanks to Paul Jarc!
5780
2f4931bf
MV
5781 * posix.h (scm_setgroups): New prototype.
5782 * posix.c (scm_setgroups): New. Thanks to Paul Jarc!
5783 (scm_getgroups): Handle groups ids that don't fit into a fixnum.
5784 Don't use SCM_WRITABLE_VELTS.
5785
265c456f
MV
5786 * gc.h (SCM_GC_SET_CELL_BVEC): New.
5787 * gc-card.c (scm_i_init_card_freelist): Use it. Thanks to
5788 Matthias Koeppe!
5789
20703ac4
MV
5790 * __scm.h (SCM_C_INLINE_KEYWORD): New.
5791 * numbers.c: Use it in place of SCM_C_INLINE so that the code
5792 compiles when SCM_C_INLINE is undefined.
5793
59c4bb82
DH
57942003-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
5795
5796 * __scm.h: Reformulated the architecture and compiler properties
5797 in terms of properties of scm_t_bits and SCM variables rather than
5798 in terms of c standard types. This is since it is not known which
5799 of the standard types scm_t_bits and SCM variables will be defined
5800 to.
5801
d7850c8d
KR
58022003-07-24 Kevin Ryde <user42@zip.com.au>
5803
5804 * numbers.c (scm_angle): Use scm_flo0 for non-negative inum, bignum
5805 and real.
5806
8a0c514f
KR
58072003-07-18 Kevin Ryde <user42@zip.com.au>
5808
5809 * numbers.c (scm_product): In complex * bignum, correction to
5810 REAL/IMAG fetch, x is the complex, not y.
5811
0aacf84e
MD
58122003-07-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5813
5814 * numbers.c (scm_odd_p, scm_even_p): Bugfix: Treat result of
5815 scm_inf_p test as Scheme values.
5816 (scm_sum): Bugfix: Normalize bignum created from a negative bignum
5817 and a positive inum.
5818 Use GNU indentation style.
5819
192de9a4
DH
58202003-07-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5821
5822 * values.c (scm_values): Build lists of length 1 by using
5823 scm_list_1 instead of using scm_cons.
5824
bbb4438a
KR
58252003-07-10 Kevin Ryde <user42@zip.com.au>
5826
b58c85ce
KR
5827 * deprecation.c (scm_c_issue_deprecation_warning_fmt): Add va_end.
5828 * list.c (scm_list_n): Ditto.
5829
bbb4438a
KR
5830 * gc-malloc.c (scm_gc_realloc): Define "ptr" at start of function.
5831
287f8ad1
KR
58322003-07-08 Matthias Koeppe <mkoeppe@merkur.math.uni-magdeburg.de>
5833
5834 * tags.h (scm_t_bits, scm_t_signed_bits, etc): Avoid solaris empty
5835 defines of INTPTR_MAX and UINTPTR_MAX, combine conditionals for
5836 scm_t_bits and scm_t_signed_bits to avoid any chance of one and not
5837 the other using intptr_t.
5838
005d2366
KR
58392003-07-08 Kevin Ryde <user42@zip.com.au>
5840
0aacf84e 5841 * numbers.c (scm_make_polar): Use sincos, when available.
005d2366
KR
5842 (scm_magnitude): Use hypot.
5843
5844 * ports.c (scm_char_ready_p, scm_peek_char): In docstrings, don't use
5845 @footnote since it doesn't go through to guile-procedures.txt.
5846
5847 * threads.c (scm_call_with_new_thread): In docstring, use "( )"
5848 outside @var to quieten makeinfo, and use @code.
5849
cbfe8e62
HWN
58502003-07-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5851
5852 * gc-malloc.c (decrease_mtrigger): new function
5853 (increase_mtrigger): new function, separate debug registering and
5854 mtrigger administration.
5855 (scm_gc_realloc): bugfix: do mtrigger administration before the
5856 actual realloc, for the realloc might invalidate a GC-d segment of
5857 memory. Thanks to Sam Hocevar for pointing this out.
5858 (scm_gc_realloc): use scm_malloc_reregister instead of
5859 unregistering and registering in sequence.
5860
aeb4c2e1
HWN
58612003-07-03 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5862
5863 * __scm.h (SCM_ASSERT): change "else" expansion to "do { } while (0)"
5864
4c27f8d2
HWN
58652003-07-02 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5866
5867 * __scm.h (SCM_ASRTGO): add "else" to macro expansions with if
5868 clauses.
5869
983e697d
MV
58702003-06-29 Marius Vollmer <mvo@zagadka.de>
5871
5872 * deprecated.h (SCM_OPDIRP, scm_fport, scm_option, scm_srcprops,
5873 scm_srcprops_chunk, scm_info_frame, scm_stack, scm_array,
5874 scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_FUNC_NAME, SCM_WTA,
5875 RETURN_SCM_WTA, SCM_VALIDATE_NUMBER_COPY,
5876 SCM_VALIDATE_NUMBER_DEF_COPY, SCM_VALIDATE_OPDIR): Re-added from
5877 the release_1_6 branch.
5878
78b6566e
SJ
58792003-06-25 Stefan Jahn <stefan@lkcc.org>
5880
5881 * continuations.c: Redeclaration of getcontext() via the
5882 __asm__ ("getcontext") directive.
5883
5884 * continuations.h: Include <ucontext.h> instead of
5885 <sys/ucontext.h>.
5886
1ebb8497
KR
58872003-06-21 Kevin Ryde <user42@zip.com.au>
5888
5889 * numbers.c (_GNU_SOURCE): #define, to get C99 things.
5890 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, $asinh, $acosh,
5891 $atanh, truncate): Use C library asinh, acosh, atanh and trunc, when
5892 available.
5893 (scm_inexact_to_exact): Expand isfinite to its definition !xisinf.
5894 (isfinite): Remove, conflicts with C99 isfinite().
5895
fbf85ba4
MV
58962003-06-19 Marius Vollmer <mvo@zagadka.de>
5897
5898 * deprecated.h, deprecated.c (scm_strhash, scm_sym2ovcell_soft,
5899 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
5900 scm_symbol_value0, scm_string_to_obarray_symbol scm_intern_symbol,
5901 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
5902 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp): Re-added from
5903 the release_1_6 branch.
5904
fcc5d734
SJ
59052003-06-14 Stefan Jahn <stefan@lkcc.org>
5906
5907 * threads.h: Redefined scm_getspecific() and scm_setspecific()
5908 to be functions instead of macros.
5909
5910 * threads.c: Conditionalized inclusion of <sys/time.h> and
5911 <unistd.h>.
5912 (scm_getspecific, scm_setspecific): Made these two function
5913 real part of the API.
5914
5915 * posix.c (s_scm_putenv): Added some code to make a
5916 (putenv "FOO="), i.e. setting an empty string, work also on
5917 Win32 systems. Thanks to Kevin Ryde for the proposal.
5918
c3ae8e07
KR
59192003-06-12 Kevin Ryde <user42@zip.com.au>
5920
75b14838
KR
5921 * posix.c (scm_putenv): Free temporary ptr in mingw unset. Add
5922 freebsd to comment about need to use unsetenv.
c3ae8e07 5923
9d9fa092
MV
59242003-06-02 Marius Vollmer <mvo@zagadka.de>
5925
5926 * ports.c (scm_peek_char): Safe the column of the port around the
5927 getc/ungetc calls. Thanks to Dr. Peter Ivanyi!
5928
f2478375
KR
59292003-06-07 Kevin Ryde <user42@zip.com.au>
5930
5931 * tags.h: Use inttypes.h and stdint.h when available, for INTPTR_MAX
5932 and friends required by scm_t_bits setups.
5933
6375e040
DH
59342003-06-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5935
5936 * tags.h (scm_tc2_int): Added.
5937
5938 * tags.h (scm_tc3_int_1, scm_tc3_int_2): Expressed in terms of
5939 scm_tc2_int.
5940
5941 * tags.h (scm_tcs_cons_imcar, scm_tcs_cons_nimcar, scm_tcs_struct,
5942 scm_tcs_closures): Hard coded values replaced by symbolic ones.
5943
f5c6ec2f
DH
59442003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
5945
5946 * eval.c: Partially undid my patch from 2003-05-31. This patch
5947 caused the segfault referenced in the previous changelog entry.
5948
47dbd81e
DH
59492003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
5950
5951 * tags.h: Fixed comment about the immediate type code layout.
5952
5953 * eval.c: Fixed handling of non-special instructions. Without
5954 this patch, guile will segfault on (#\0) and similar instructions.
5955
3ec52c51
KR
59562003-06-05 Kevin Ryde <user42@zip.com.au>
5957
5958 * numbers.c (scm_max, scm_min): For inum, bignum and real, if other
5959 operand is NaN, then return NaN. Also avoid passing NaN to mpz_cmp_d.
5960
e418bd7c
KR
5961 * read.c (scm_input_error): Pass arg list parameter to scm_error_scm,
5962 rather than SCM_EOL. Needed by "Unknown # object" case in scm_lreadr.
5963
d0624e39
DH
59642003-06-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5965
5966 * __scm.h, gc-card.c (SCM_DEBUG_DEBUGGER_SUPPORT,
5967 SCM_DEBUG_DEBUGGING_SUPPORT): Renamed macro
5968 SCM_DEBUG_DEBUGGER_SUPPORT to SCM_DEBUG_DEBUGGING_SUPPORT and
5969 generalized it to apply not only to C level functions but also to
5970 scheme level functions.
5971
5972 * debug.c, debug.h, eval.c (make-iloc, scm_make_iloc, iloc?,
5973 scm_iloc_p, dbg-make-iloc, scm_dbg_make_iloc, dbg-iloc?,
5974 scm_dbg_iloc_p): Moved functions scm_make_iloc, scm_iloc_p to
5975 eval.c, made them available under SCM_DEBUG_DEBUGGING_SUPPORT == 1
5976 only and renamed them to scm_dbg_make_iloc, scm_dbg_iloc_p,
5977 respectively.
5978
5979 * deprecated.h, eval.c, eval.h (SCM_ILOC00, SCM_IDINC,
5980 SCM_IDSTMSK): Deprecated. The macro definitions are moved from
5981 eval.h into eval.c and a copy is placed into deprecated.h.
5982
5983 * eval.c, eval.h (SCM_MAKE_ILOC): Removed from eval.h and placed
5984 into eval.c. This definition was not part of the API in any
5985 officially released version of guile and thus does not need to go
5986 through a phase of deprecation.
5987
e90c3a89
DH
59882003-06-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5989
d0624e39
DH
5990 * deprecated.c, deprecated.h, eval.c, eval.h (scm_s_expression,
5991 scm_s_test, scm_s_body, scm_s_bindings, scm_s_variable,
5992 scm_s_clauses, scm_s_formals): Deprecated. In eval.c the
e90c3a89
DH
5993 definitions are make static and renamed from scm_s_xxx to s_xxx.
5994 In deprecated.c the original definitions are copied.
5995
d0624e39
DH
5996 * deprecated.h, eval.c, eval (SCM_EVALIM2, SCM_EVALIM, SCM_XEVAL,
5997 SCM_XEVALCAR): Deprecated. The macro definitions are moved from
e90c3a89
DH
5998 eval.h into eval.c and a copy (slightly modified to work in user
5999 code) is placed into deprecated.h.
6000
6001 * eval.c: Use the local static s_xxx definitions instead of the
6002 scm_s_xxx definitions throughout.
6003
14b18ed6
DH
60042003-06-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
6005
6006 This set of patches separates the representation of the cxr family
6007 of functions (car, cdr etc.) from the dsubr family of functions
6008 (i. e. functions that take a double precision floating point
6009 argument). Further, the algorithm for handling the cxr function
6010 is improved.
6011
6012 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_1), numbers.c
6013 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, scm_round, floor,
6014 ceil, sqrt, fabs, exp, log, sin, cos, tan, asin, acos, atan, sinh,
6015 cosh, tanh), objects.c (scm_class_of), procprop.c
6016 (scm_i_procedure_arity), ramap.c (scm_array_map_x), tags.h
6017 (scm_tc7_dsubr, scm_tcs_subrs): Introduce scm_tc7_dsubr as new
6018 typecode for the dsubr family of functions.
6019
6020 * ramap.c (ramap_cxr, ramap_dsubr): Renamed ramap_cxr to
6021 ramap_dsubr.
6022
6023 * eval.c (SCM_CEVAL, SCM_APPLY, call_cxr_1), pairs.c
6024 (scm_init_pairs): Make use of the (now usable) second cell element
6025 of a scm_tc7_cxr function to implement the cxr family of functions
6026 more efficiently.
6027
2ca0d207
DH
60282003-05-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
6029
6030 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_0,
6031 scm_trampoline_1, scm_trampoline_2): Postpone error cases to the
6032 end of an if-else-if-sequence of checks.
6033
9a069bdd
DH
60342003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
6035
6036 * eval.c (SCM_CEVAL): Improved readability of call-with-values
6037 execution. Generalize apply_closure to apply_proc and use that
6038 for call-with-values.
6039
e910e9d2
DH
60402003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
6041
6042 * eval.c (SCM_CEVAL): Avoid one level of indirection when applying
6043 a non closure.
6044
1e498fbd
SJ
60452003-05-30 Stefan Jahn <stefan@lkcc.org>
6046
6047 * posix.c (s_scm_putenv): Use the new HAVE_UNSETENV
6048 appropriately for mingw32 hosts.
6049
6050 * numbers.h: Defining copysign(), isnan() and finite() to
6051 be prefixed by a single '_' for mingw32 hosts.
6052
c47e2599
KR
60532003-05-30 Kevin Ryde <user42@zip.com.au>
6054
6055 * numbers.c (z_negative_one): New variable.
6056 (scm_init_numbers): Initialize it.
6057 (scm_logcount): Use it and mpz_hamdist to count zeros for negatives.
6058
2e945bcc
SJ
60592003-05-29 Stefan Jahn <stefan@lkcc.org>
6060
6061 * win32-dirent.c: Use malloc() instead of scm_malloc().
6062
6063 * stime.c (s_scm_strftime): Add a type cast to avoid compiler
6064 warning.
6065
6066 * posix.c (s_scm_putenv): Disable use of unsetenv() for the
6067 mingw32 build.
6068
6069 * modules.c (s_scm_module_import_interface): Renamed local
6070 variable interface to _interface. Seems like 'interface'
6071 is a special compiler directive for the mingw32 compiler.
6072
6073 * mkstemp.c: Provide prototype to avoid compiler warning.
6074
6075 * load.c (s_scm_search_path): Fixed absolute and relative
6076 path detections for native Windows platforms.
6077
6078 * gc.h, threads.h: Export some more symbols using SCM_API (necessary
6079 to build on mingw32).
6080
6081 * gc-freelist.c ("s_scm_map_free_list",
6082 "s_scm_gc_set_debug_check_freelist_x"): Fixed use of FUNC_NAME.
6083
6084 * fports.c (fport_fill_input): Disable use of
6085 fport_wait_for_input() on Win32 platforms.
6086
6087 * filesys.c (s_scm_basename): Fixed __MINGW32__ code.
6088
6089 * Makefile.am: Modified some rules for cross compiling.
6090
ddd8f927
DH
60912003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6092
6093 * eval.c (SCM_CEVAL): In case of an application, all checks for a
6094 proper function object and the correct number of arguments are now
6095 performed in the application part of SCM_CEVAL.
6096
6097 (scm_badformalsp): Removed.
6098
f8ba2197
DH
60992003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6100
6101 * deprecated.c (scm_read_and_eval_x): Fixed C99-ism.
6102
79f55b7c
MD
61032003-05-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6104
a502595f
MD
6105 * num2integral.i.c (NUM2INTEGRAL): Avoid warning about conditional
6106 always being false by inserting preprocessor conditional. (Thanks
6107 to Bruce Korb.)
6108
79f55b7c
MD
6109 * __scm.h (SCM_STACK_PTR): New macro. (Cast argument through
6110 (void *) in order to avoid an aliasing warning; thanks to Bruce
6111 Korb.)
6112
6113 * stackchk.h (SCM_STACK_OVERFLOW_P): Use SCM_STACK_PTR.
6114
6115 * threads.c (suspend, launch_thread, scm_threads_mark_stacks): Use
6116 SCM_STACK_PTR.
6117
6118 * threads.c (scm_threads_mark_stacks): Bugfix: Changed
6119 thread->base --> t->base.
6120
6121 * eval.c (SCM_CEVAL): Don't cast argument of SCM_STACK_OVERFLOW_P.
6122
47dee228
MV
61232003-05-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6124
6125 * deprecated.h, deprecated.c (scm_makstr, scm_makfromstr,
6126 scm_variable_set_name_hint, scm_builtin_variable,
6127 scm_internal_with_fluids, scm_make_gsubr,
6128 scm_make_gsubr_with_generic, scm_create_hook, SCM_LIST0,
6129 SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5, SCM_LIST6,
6130 SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify, scm_sloppy_memq,
85494587
MV
6131 scm_sloppy_memv, scm_sloppy_member, scm_read_and_eval_x,
6132 scm_subr_entry, SCM_SUBR_DOC, scm_make_subr,
6133 scm_make_subr_with_generic, scm_make_subr_opt,
6134 scm_call_catching_errors, scm_make_smob_type_mfpe,
6135 scm_set_smob_mfpe, scm_strprint_obj, scm_read_0str, scm_eval_0str,
6136 SCM_CHARS, SCM_UCHARS, SCM_LENGTH): Re-added from the release_1_6
6137 branch. Some have been slightly rewritten.
6138 (scm_i_object_chars, scm_i_object_length): New, to support
6139 SCM_CHARS, SCM_UCHARS, and SCM_LENTH.
6140
e681d187
DH
61412003-05-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
6142
6143 * eval.c (scm_m_do, unmemocopy, SCM_CEVAL): Reversed order of
6144 names and inits in the memoized code of do.
6145
7e59d9d4
MD
61462003-05-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6147
6148 * c-tokenize.lex (yyget_lineno, yyget_in, yyget_out, yyget_leng,
6149 yyget_text, yyset_lineno, yyset_in, yyset_out, yyget_debug,
6150 yyset_debug, yylex_destroy): Added prototypes (otherwise we'll get
6151 a compilation error if error-on-warning is enabled).
6152
9950a42c
MV
61532003-05-17 Marius Vollmer <mvo@zagadka.de>
6154
6155 * c-tokenize.lex: Gobble up complete lines after a '#'. This
6156 removes preprocessor directives from the snarfage that might
6157 otherwise confuse us. These directives appear when compiling with
6158 "-g3", for example.
6159
0068984b
HWN
61602003-05-16 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6161
26e68795
HWN
6162 * ChangeLog: add my surname
6163
0068984b
HWN
6164 * srcprop.c (scm_finish_srcprop): use
6165 scm_gc_register_collectable_memory()
6166 (scm_make_srcprops): idem.
6167
131805f0
HWN
61682003-05-14 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6169
6170 * gc-malloc.c (scm_gc_register_collectable_memory): avoid
6171 wrap-around for scm_mtrigger
6172 (scm_gc_register_collectable_memory): abort on overflowing
6173 scm_mallocated().
6174
d4611024
KR
61752003-05-13 Kevin Ryde <user42@zip.com.au>
6176
6177 * numbers.c (xmpz_cmp_d): New macro, handling infs if gmp doesn't.
6178 (scm_num_eq_p, scm_less_p, scm_max, scm_min): Use it.
6179
7aaf8dc9
MD
61802003-05-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6181
dfd03fb9
MD
6182 * backtrace.c (scm_display_error_message): Introduced fancy
6183 printing with max level 7 and length 10. (Purpose: avoid printing
6184 gigantic objects in error messages.)
6185
6186 * print.c, print.h (scm_i_port_with_print_state): New function.
6187
6188 * print.c (scm_iprin1, scm_printer_apply,
6189 scm_port_with_print_state): Use scm_i_port_with_print_state.
6190 (scm_simple_format): Modified not to destroy print states.
6191 (print_state_mutex): New mutex.
6192 (scm_make_print_state, scm_free_print_state, scm_prin1):
6193 Lock/unlock print_state_mutex.
6194
7aaf8dc9
MD
6195 * deprecated.h (SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK):
6196 Use current names in definitions.
6197
a4d9ffa1
KR
61982003-05-10 Kevin Ryde <user42@zip.com.au>
6199
6200 * numbers.c (scm_num_eq_p, scm_less_p): Don't pass NaN to mpz_cmp_d.
6201
d25e96a4
KR
6202 * numbers.c (scm_integer_length): On negative bignums, adjust
6203 mpz_sizeinbase to account for it looking at absolute value where we
6204 want ones-complement.
6205
6206 * numbers.c (scm_gcd): In bignum/inum, don't pass yy==0 to mpz_gcd_ui
6207 since we're only using the ulong return value, and x might not fit.
6208
5bf6a6f0
DH
62092003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6210
6211 * eval.c, eval.h, read.c, read.h (scm_sym_dot): Moved from eval to
6212 read. This will allow to make the definition in read.c static.
6213
f58c472a
DH
62142003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6215
6216 * eval.c, eval.h, evalext.c, evalext.h (scm_m_undefine): Moved
6217 from evalext to eval. This will allow to make some of the
6218 definitions in eval.c static.
6219
90382aeb
KR
62202003-05-06 Kevin Ryde <user42@zip.com.au>
6221
6222 * numbers.c (scm_difference): In inum - bignum, handle negative inum.
6223 (scm_logcount): Use mpz_com, not mpz_neg.
6224
3b88ed2a
DH
62252003-05-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6226
6227 The purpose of this patch is to make guile's internal memoizers
6228 distinguishable from memoizing macros created on the scheme level
6229 or from user provided primitive memoizing macros. The reason is,
6230 that the internal memoizers are the only ones that are allowed to
6231 transform their scheme input into memoizer byte code, while all
6232 other memoizing macros may only transform scheme code into new
6233 scheme code.
6234
6235 To achieve this, a new macro type 'builtin-macro!' is introduced.
6236 Currently, 'builtin-macro!'s are handled as memoizing macros, but
6237 this will change when the memoizer and executor are separated.
6238
6239 * macros.[ch] (scm_i_makbimacro): New.
6240
6241 * macros.h (SCM_BUILTIN_MACRO_P): New.
6242
6243 * macros.c (macro_print, scm_macro_type): Support builtin-macro!s.
6244
6245 * eval.c, goops.c: All of guile's primitive memoizing macros are
6246 primitive builtin-macros now.
6247
6248 * eval.c (scm_macroexp, SCM_CEVAL): Make sure the primitive
6249 builtin-macros are handled equally to memoizing macros.
6250
b0780eb1
MV
62512003-05-04 Marius Vollmer <mvo@zagadka.de>
6252
6253 * throw.c (scm_ithrow): Remove "asm volatile" hack. It used to
6254 work around a bug in GCC 2.95.2 but is now a bug in itself.
6255
1cbf4fe9
MV
62562003-05-02 Marius Vollmer <mvo@zagadka.de>
6257
6258 * deprecated.h (scm_rstate, scm_rng, SCM_SLOPPY_CONSP,
6259 SCM_SLOPPY_NCONSP, scm_tc7_ssymbol, scm_tc7_msymbol,
6260 scm_tcs_symbols): New.
6261
1a61d41b
MV
62622003-04-30 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6263
096ecbaf
MV
6264 * deprecated.h, deprecated.c (scm_protect_object,
6265 scm_unprotect_object, SCM_SETAND_CAR, SCM_SETOR_CAR,
6266 SCM_SET_AND_CDR, SCM_SET_OR_CDR, SCM_FREEP, SCM_NFREEP,
6267 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
6268 SCM_GCCDR, scm_remember, scm_the_root_module, scm_make_module,
6269 scm_ensure_user_module, scm_load_scheme_module, scm_port,
6270 scm_ptob_descriptor, scm_port_rw_active,
6271 scm_close_all_ports_except): New.
6272
1a61d41b
MV
6273 * ports.c (scm_c_port_for_each): New function, mostly copied from
6274 scm_port_for_each.
6275 (scm_port_for_each): Reimplemented using scm_c_port_for_each.
6276 * ports.h (scm_c_port_for_each): New prototype.
6277
c8e1d354
MD
62782003-04-28 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6279
6280 * eval.c (scm_m_atdispatch): Removed until actually needed. (This
6281 macro was introduced in anticipation of GOOPS method compilation
6282 code.)
6283
6284 * goops.c: Removed binding of @dispatch.
6285
a4aa2134
DH
62862003-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
6287
6288 * eval.c, goops.c (@dispatch, @slot-ref, @slot-set!): Move the
6289 instructions that bind the macros on the scheme level back to
6290 goops.c in order to make sure again that the bindings go into the
6291 (oop goops) module and are not visible from the outside.
6292
9fbee57e
DH
62932003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6294
6295 * eval.c: Non functional change: Separated R5RS and non-R5RS
6296 macros into different sections of the file and ordered the
6297 memoizers alphabetically.
6298
12841895
DH
62992003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6300
6301 * eval.c (scm_ilookup): Rewritten to improve readability.
6302
6a3f13f0
DH
63032003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6304
6305 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
6306 Partially reverted patch from 2003-04-23 in oder to find a better
6307 compromise between readability and debuggability.
6308
b0c5d67b
DH
63092003-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6310
6311 * eval.c, eval.h, goops.c, goops.h (scm_m_atslot_ref,
6312 scm_m_atslot_set_x, scm_m_atdispatch): Move the declarations and
6313 definitions of the special goops memoizers from goops.[ch] to
6314 eval.[ch]. Hmm... it seems that scm_m_atdispatch is not used
6315 throughout guile.
6316
b9ad392e
MD
63172003-04-24 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6318
6319 * ports.c, ports.h (scm_i_port_table_mutex): New mutex.
6320
6321 * fports.c (scm_evict_ports): Lock/unlock scm_i_port_table_mutex.
6322
6323 * ports.c (scm_close_port, scm_flush_all_ports): Ditto.
6324
6325 * ioext.c (scm_fdes_to_ports): Ditto.
6326
6327 * vports.c (scm_make_soft_port): Changed SCM_DEFER/ALLOW_INTS into
6328 lock/unlock scm_i_port_table_mutex.
6329
6330 * strports.c (scm_mkstrport): Ditto.
6331
6332 * ports.c (scm_void_port, scm_port_for_each): Ditto.
6333
6334 * fports.c (scm_fdes_to_port): Ditto.
6335
d0b07b5d
DH
63362003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6337
6338 This set of patches contains no functional changes, only debatable
6339 minor stylistic ones. Still, in order to prepare a patch between
6340 my local copy and the CVS version, I decided to submit the changes
6341 below. Then, the patch will hopefully only contain relevant
6342 modifications :-)
6343
6344 * eval.c (iqq): Added const specifier.
6345
6346 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
6347 Use NULL instead of 0 to indicate that a pointer is returned.
6348 Removed some misleading 'fall through' comments.
6349
6350 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
6351 Split up long expressions into smaller ones to be more debugging
6352 friendly.
6353
a98e8e98
DH
63542003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6355
6356 * eval.h (SCM_ENTER_FRAME_HDLR, SCM_APPLY_FRAME_HDLR,
6357 SCM_EXIT_FRAME_HDLR): Use SCM_PACK to convert data to a SCM value
6358 rather than casting to SCM.
6359
c178c3a6
DH
63602003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6361
6362 * sort.c, pairs.h: Removed unnecessary includes.
6363
d339981a
DH
63642003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6365
6366 * sort.c: Replaced hand-made trampline code by the new official
6367 mechanism from eval.c. This fixes a segfault in the new test file
6368 sort.test.
6369
6370 (quicksort, compare_function, scm_restricted_vector_sort_x,
6371 scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
6372 scm_merge_list_step, scm_sort_x, scm_sort, scm_merge_vector_x,
6373 scm_merge_vector_step, scm_stable_sort_x, scm_stable_sort,
6374 scm_sort_list_x, scm_sort_list): Use trampoline mechanism from
6375 eval.c.
6376
6377 (subr2less, lsubrless, closureless, applyless, scm_cmp_function,
6378 cmp_fun_t): Removed.
6379
6380 (compare_function): Added.
6381
6382 * sort.c (quicksort, SWAP, stack_node): Replaced pointer
6383 arithmetics with index arithmetics. Changed quicksort to work on
6384 an array of SCM values instead of an array of characters. Avoid
6385 bytewise copying of SCM elements. Avoid allocating memory on the
6386 stack with alloca. Fixed some comments.
6387
821f18a4
DH
63882003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6389
6390 * eval.c (EXTEND_ENV): Eliminated.
6391
6392 (unmemocopy, SCM_CEVAL, SCM_APPLY): Use SCM_EXTEND_ENV instead of
6393 EXTEND_ENV.
6394
94fb5a6e
DH
63952003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6396
6397 * __scm.h (SCM_DEBUG_DEBUGGER_SUPPORT): New compile-time option.
6398
6399 * gc.card.c (scm_gc_marked_p): Fixed compiler warning when
6400 compiling with SCM_DEBUG==1 by moving definition behind prototype.
6401
6402 * gc.card.c (scm_dbg_t_list_cell, scm_dbg_t_double_cell,
6403 scm_dbg_gc_marked_p, scm_dbg_gc_get_card, scm_dbg_gc_get_bvec,
6404 scm_t_list_cell_struct, scm_t_list_cell, scm_t_double_cell,
6405 scm_gc_marked_p, scm_gc_get_card, scm_gc_get_bvec): Fixed
6406 functions such that they check if the object is a non-immediate.
6407 Further, renamed identifiers to use the scm_dbg_ prefix and made
6408 their inclusion into the lib dependent of the
6409 SCM_DEBUG_DEBUGGER_SUPPORT compile time option.
6410
fce0b22d
DH
64112003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6412
6413 * __scm.h: Fixed comment about the SCM_DEBUG_TYPING_STRICTNESS
6414 debug option.
6415
1685446c
DH
64162003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6417
821f18a4 6418 * list.c (scm_ilength, scm_last_pair), unif.c (l2ra): Prefer
1685446c
DH
6419 !SCM_CONSP over SCM_NCONSP. Now, guile itself does not include
6420 any calls to SCM_NCONSP any more.
6421
6422 * unif.c (l2ra): Eliminate redundant check.
6423
9ff1720f
DH
64242003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6425
6426 * list.c (scm_cons_star), ramap.c (scm_ra_sum, scm_ra_product,
6427 scm_array_map_x), unif.c (l2ra): Prefer !SCM_NULLP over
6428 SCM_NNULLP. Now, guile itself does not include any calls to
6429 SCM_NNULLP any more.
6430
05b15362
DH
64312003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6432
6433 * eval.c (unmemocopy, SCM_APPLY, scm_map, scm_for_each,
6434 scm_copy_tree): Place assignment expressions which are part of
6435 other expressions into an expression of their own.
6436
0c88d7df
DH
64372003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6438
6439 * goops.c (TEST_CHANGE_CLASS, scm_sys_initialize_object): Don't
6440 compare SCM values with !=.
6441
5cb22e96
DH
64422003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6443
6444 * eval.c, eval.h, evalext.c, evalext.h (scm_sym_setter,
6445 scm_m_generalized_set_x, scm_init_evalext): Move the declaration
6446 and definition of the memoizer for the generalized set! macro from
6447 evalext.[ch] to eval.[ch]. Use the SCM_SYNTAX snarfer macro to
6448 define the macro object.
6449
6450 * eval.c, eval.h (s_set_x, scm_s_set_x, scm_m_set_x,
6451 scm_m_generalized_set_x): Since now scm_s_set_x is only used in
6452 eval.c, it is made static and renamed to s_set_x.
6453
6454 * evalext.c (scm_defined_p, scm_m_undefine): Prefer !SCM_<foo>
6455 over SCM_N<foo>.
6456
a44a9715
DH
64572003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6458
6459 * eval.c, root.h (scm_undefineds, SCM_NUM_PROTECTS, undefineds,
6460 scm_init_eval): Made scm_undefineds static in eval.c, renamed it
6461 to undefineds and registered the object as a permanent object.
6462
6463 * eval.c, eval.h (scm_f_apply, scm_init_eval): Made scm_f_apply
6464 static in eval.c, renamed it to f_apply and registered the object
6465 as a permanent object.
6466
1b43d24c
DH
64672003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6468
5cb22e96 6469 * eval.c (SCM_BIT7, SCM_BIT8, unmemocopy, SCM_CEVAL): Renamed
1b43d24c
DH
6470 file-local macro SCM_BIT8 to SCM_BIT7, which is more appropriate.
6471
aec16f99
DH
64722003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6473
6474 * numbers.c (scm_logtest): Fixed argument bug in the call to
6475 mpz_and, which showed up when compiling with SCM_DEBUG defined.
6476
f96460ce
DH
64772003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6478
6479 * gc-card.c (scm_i_sweep_card, scm_i_init_card_freelist): Fixed
6480 type errors that showed up when compiling with SCM_DEBUG defined.
6481
d0f6ceb8
DH
64822003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6483
6484 * continuations.c, continuations.h, eval.c, eval.h, extensions.c,
6485 gsubr.c, guile.c, init.c, read.c, root.c, root.h, stackchk.h,
6486 throw.c: Removed uses of DEBUG_EXTENSIONS and DYNAMIC_LINKING to
6487 fix compile errors with --disable-deprecated.
6488
19a7a089
RB
64892003-04-17 Rob Browning <rlb@defaultvalue.org>
6490
6491 * numbers.c (scm_integer_expt): fix case where we were declaring
6492 vars in the middle of a statement block. Thanks to Thamer
6493 Al-Harbash.
6494
47cd67db
MD
64952003-04-17 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6496
0fd7dcd3
MD
6497 * goops.c (TEST_CHANGE_CLASS): Update variable class after class
6498 change.
6499
47cd67db
MD
6500 * eq.c (scm_eqv_p): Turned into a primitive generic.
6501
3b8b889c
RB
65022003-04-16 Rob Browning <rlb@defaultvalue.org>
6503
312006bb
RB
6504 * gc_os_dep.c: Added patch for UnixWare and OpenUNIX support.
6505 Thanks to Boyd Gerber.
6506 Added check for __arm__ in addition to arm for LINUX and copied
6507 __s390__ defines from upstream libgc. Thanks to James Treacy for
6508 reporting the problems.
c7ef2ea1 6509
3b8b889c
RB
6510 * numbers.c (PTRDIFF_MIN): use SCM_CHAR_BIT.
6511
6512 * socket.c: use SCM_CHAR_BIT.
6513
6514 * random.c (scm_c_random_bignum): use SCM_CHAR_BIT.
6515
6516 * num2integral.i.c (NUM2INTEGRAL): use SCM_CHAR_BIT.
6517
43261b39
MD
65182003-04-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6519
6520 * feature.c (scm_init_feature): Always add threads feature.
6521
58241edc
MD
65222003-04-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6523
6524 * goops.c (scm_sys_fast_slot_ref): Use SCM_SLOT instead of
6525 scm_at_assert_bound_ref. (We don't want the unbound check. See
6526 oop/goops/active-slot.scm.)
6527
94e91275
RB
65282003-04-14 Rob Browning <rlb@defaultvalue.org>
6529
6530 * tags.h: scm_t_intptr should have been intptr_t.
6531
3071ea27
RB
65322003-04-13 Rob Browning <rlb@defaultvalue.org>
6533
6534 * __scm.h (SCM_FLUSH_REGISTER_WINDOWS): don't just rely on "sparc"
6535 test. Instead use
6536 #if defined (sparc) || defined (__sparc__) || defined (__sparc)
6537 as gc_os_dep.c suggests is appropriate.
6538
6539 * goops.c (prep_hashsets): make static to match prototype.
6540 (scm_sym_args): SCM_SYMBOL -> SCM_GLOBAL_SYMBOL. Thanks to Albert
6541 Chin.
6542
6543 * c-tokenize.lex: remove trailing comma from enum. Thanks to
6544 Albert Chin.
6545
6546 * gc_os_dep.c: add NetBSD powerpc config info. Thanks to Thomas
6547 Klausner.
6548
21ab2aeb
MD
65492003-04-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6550
6551 * goops.c (scm_sys_prep_layout_x): Instance allocation is now
6552 indicated through extra fields in getters-n-setters.
6553 (scm_add_slot): Adapted to new format of getters_n_setters slot.
6554 (Thanks to Andy Wingo.)
6555
dff96e95
HWN
65562003-02-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6557
6558 * gc-segment.c: add comment
6559
07921c76
RB
65602003-04-07 Rob Browning <rlb@defaultvalue.org>
6561
b5331f10
RB
6562 * debug.h: change "id" arg name to "info_id" to avoid objective-c
6563 clash.
6564
07921c76
RB
6565 * num2integral.i.c (NUM2INTEGRAL): fix bug pointed out by Mikael
6566 and add regression test to standalone/.
6567
65682003-04-06 Rob Browning <rlb@defaultvalue.org>
6569
6570 * strings.c (scm_mem2string): use memcpy rather than by-hand loop.
6571 Thanks to Dale P. Smith.
6572
6573 * random.c: #include gmp.h.
6574 (scm_c_random_bignum): normalize result on return.
6575
6576 * init.c: #include gmp.h.
6577
6578 * numbers.h: remove the gmp.h #include (not needed now).
6579
6580 * posix.h: change occurences of "id" to something else so we don't
6581 cause trouble when included via objective-c (can't hurt, might
6582 help). Still have usage in debug.h, though.
6583
938f6b7c
MD
65842003-04-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6585
372691d8
MD
6586 * random.c (scm_c_random_bignum): Don't generate a random number
6587 equal to m (the second argument of scm_c_random_bignum); only
6588 generate numbers in the range 0 <= r < m.
c5f268f8
MD
6589 (scm_c_default_rstate): Use SCM_VARIABLE_REF to access
6590 scm_var_random_state.
372691d8 6591
938f6b7c
MD
6592 * num2integral.i.c (INTEGRAL2BIG): Put negation of n inside then
6593 clause.
6594
6cdb8c3f
RB
65952003-04-05 Rob Browning <rlb@defaultvalue.org>
6596
938f6b7c 6597 * modules.c (scm_module_import_interface): move declaration of
6cdb8c3f
RB
6598 uses before any code.
6599
15635be5
MD
66002003-04-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6601
1ecfd013
MD
6602 * Makefile.am (scmconfig.h): Look for config.h in top_builddir,
6603 not top_srcdir.
6604
15635be5
MD
6605 * hashtab.c (rehash_after_gc): Clear to_rehash list before
6606 processing it in order to avoid an infinite loop.
6607
6608 * print.c (scm_prin1): Remember old state of pstate->writingp.
6609
73be1d9e
MV
66102003-04-05 Marius Vollmer <mvo@zagadka.de>
6611
6612 * Changed license terms to the plain LGPL thru-out.
6613
ad815c06
RB
66142003-04-04 Rob Browning <rlb@defaultvalue.org>
6615
6616 * socket.c (FLIPCPY_NET_HOST_128): new macro.
6617 (ipv6_net_to_num, ipv6_num_to_net, bignum_in_ipv6_range_p):
6618 rewrite to handle GMP bignums.
6619
6620
6621 * random.c (scm_c_random_bignum): rewrite to handle GMP bignums.
6622
6623 * ports.c (scm_getc): minor tweak.
6624
6625 * numbers.h: remove SCM_BIGDIG conditionals, reorganize, and
6626 rewrite to handle GMP bignums.
6627
6628 * numbers.c: rewrite *many* functions to handle GMP bignums.
6629
6630 * num2integral.i.c (NUM2INTEGRAL, INTEGRAL2NUM, INTEGRAL2BIG):
6631 handle GMP bignums.
6632
6633 * num2float.i.c (NUM2FLOAT): handle GMP bignums.
6634
6635 * init.c (check_config): remove SCM_BIGDIG conditionals.
6636 (scm_init_guile_1): test to make sure mpz_t fits in a double_cell.
6637
6638 * gc-card.c ("sweep_card"): handle new mpz_t bignums.
6639
6640 * eval.c: remove SCM_BIGDIG conditionals.
6641
6642 * eq.c (s_scm_eqv_p): scm_i_bigcomp -> scm_i_bigcmp.
6643
6cdb8c3f
RB
66442003-03-31 Rob Browning <rlb@defaultvalue.org>
6645
6646 * Makefile.am (scmconfig.h): change srcdir to builddir. (Thanks
6647 to Kevin Ryde.)
6648
66492003-03-27 Rob Browning <rlb@defaultvalue.org>
6650
6651 * threads.h: fix various preprocessor usages of new public
6652 symbols to expect 0 or 1 values rather than 1 or undefined.
6653 i.e. change #ifdef to #if, etc.
6654
6655 * threads.c: fix various preprocessor usages of new public
6656 symbols to expect 0 or 1 values rather than 1 or undefined.
6657 i.e. change #ifdef to #if, etc.
6658
6659 * tags.h: fix various preprocessor usages of new public
6660 symbols to expect 0 or 1 values rather than 1 or undefined.
6661 i.e. change #ifdef to #if, etc.
6662
6663 * stacks.c: fix various preprocessor usages of new public
6664 symbols to expect 0 or 1 values rather than 1 or undefined.
6665 i.e. change #ifdef to #if, etc.
6666
6667 * stackchk.h: fix various preprocessor usages of new public
6668 symbols to expect 0 or 1 values rather than 1 or undefined.
6669 i.e. change #ifdef to #if, etc.
6670
6671 * stackchk.c: fix various preprocessor usages of new public
6672 symbols to expect 0 or 1 values rather than 1 or undefined.
6673 i.e. change #ifdef to #if, etc.
6674
6675 * sort.c: fix various preprocessor usages of new public
6676 symbols to expect 0 or 1 values rather than 1 or undefined.
6677 i.e. change #ifdef to #if, etc.
6678
6679 * read.c: fix various preprocessor usages of new public
6680 symbols to expect 0 or 1 values rather than 1 or undefined.
6681 i.e. change #ifdef to #if, etc.
6682
6683 * random.c: fix various preprocessor usages of new public
6684 symbols to expect 0 or 1 values rather than 1 or undefined.
6685 i.e. change #ifdef to #if, etc.
6686
6687 * print.c: fix various preprocessor usages of new public
6688 symbols to expect 0 or 1 values rather than 1 or undefined.
6689 i.e. change #ifdef to #if, etc.
6690
6691 * objects.c: fix various preprocessor usages of new public
6692 symbols to expect 0 or 1 values rather than 1 or undefined.
6693 i.e. change #ifdef to #if, etc.
6694
6695 * numbers.h: 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
6699 * null-threads.c: fix various preprocessor usages of new public
6700 symbols to expect 0 or 1 values rather than 1 or undefined.
6701 i.e. change #ifdef to #if, etc.
6702
6703 * lang.c: fix various preprocessor usages of new public
6704 symbols to expect 0 or 1 values rather than 1 or undefined.
6705 i.e. change #ifdef to #if, etc.
6706
6707 * lang.h: fix various preprocessor usages of new public
6708 symbols to expect 0 or 1 values rather than 1 or undefined.
6709 i.e. change #ifdef to #if, etc.
6710
6711 * iselect.h: fix various preprocessor usages of new public
6712 symbols to expect 0 or 1 values rather than 1 or undefined.
6713 i.e. change #ifdef to #if, etc.
6714
6715 * init.c: fix various preprocessor usages of new public
6716 symbols to expect 0 or 1 values rather than 1 or undefined.
6717 i.e. change #ifdef to #if, etc.
6718
6719 * gh_data.c: fix various preprocessor usages of new public
6720 symbols to expect 0 or 1 values rather than 1 or undefined.
6721 i.e. change #ifdef to #if, etc.
6722
6723 * gh.h: fix various preprocessor usages of new public
6724 symbols to expect 0 or 1 values rather than 1 or undefined.
6725 i.e. change #ifdef to #if, etc.
6726
6727 * gen-scmconfig.c: change most new public symbols to be defined to
6728 0 or 1 rather than being either 1 or undefined.
6729
6730 * gc_os_dep.c: fix various preprocessor usages of new public
6731 symbols to expect 0 or 1 values rather than 1 or undefined.
6732 i.e. change #ifdef to #if, etc.
6733 (STACK_GROWS_DOWN): define to 0 or 1 rather than 1 or undef.
6734
6735 * gc.h: fix various preprocessor usages of new public
6736 symbols to expect 0 or 1 values rather than 1 or undefined.
6737 i.e. change #ifdef to #if, etc.
6738
6739 * gc-card.c: fix various preprocessor usages of new public
6740 symbols to expect 0 or 1 values rather than 1 or undefined.
6741 i.e. change #ifdef to #if, etc.
6742
6743 * gc-mark.c: fix various preprocessor usages of new public
6744 symbols to expect 0 or 1 values rather than 1 or undefined.
6745 i.e. change #ifdef to #if, etc.
6746
6747 * feature.c: fix various preprocessor usages of new public
6748 symbols to expect 0 or 1 values rather than 1 or undefined.
6749 i.e. change #ifdef to #if, etc.
6750
6751 * evalext.c: fix various preprocessor usages of new public
6752 symbols to expect 0 or 1 values rather than 1 or undefined.
6753 i.e. change #ifdef to #if, etc.
6754
6755 * eval.h: fix various preprocessor usages of new public
6756 symbols to expect 0 or 1 values rather than 1 or undefined.
6757 i.e. change #ifdef to #if, etc.
6758
6759 * eval.c: fix various preprocessor usages of new public
6760 symbols to expect 0 or 1 values rather than 1 or undefined.
6761 i.e. change #ifdef to #if, etc.
6762
6763 * eq.c: fix various preprocessor usages of new public
6764 symbols to expect 0 or 1 values rather than 1 or undefined.
6765 i.e. change #ifdef to #if, etc.
6766
6767 * coop.c: fix various preprocessor usages of new public
6768 symbols to expect 0 or 1 values rather than 1 or undefined.
6769 i.e. change #ifdef to #if, etc.
6770
6771 * coop-threads.c: fix various preprocessor usages of new public
6772 symbols to expect 0 or 1 values rather than 1 or undefined.
6773 i.e. change #ifdef to #if, etc.
6774
6775 * coop-pthreads.c: fix various preprocessor usages of new public
6776 symbols to expect 0 or 1 values rather than 1 or undefined.
6777 i.e. change #ifdef to #if, etc.
6778
6779 * coop-defs.h: fix various preprocessor usages of new public
6780 symbols to expect 0 or 1 values rather than 1 or undefined.
6781 i.e. change #ifdef to #if, etc.
6782
6783 * convert.i.c: fix various preprocessor usages of new public
6784 symbols to expect 0 or 1 values rather than 1 or undefined.
6785 i.e. change #ifdef to #if, etc.
6786
6787 * continuations.c: fix various preprocessor usages of new public
6788 symbols to expect 0 or 1 values rather than 1 or undefined.
6789 i.e. change #ifdef to #if, etc.
6790
6791 * _scm.h: fix various preprocessor usages of new public symbols to
6792 expect 0 or 1 values rather than 1 or undefined. i.e. change
6793 #ifdef to #if, etc.
6794
d11d697a
MV
67952003-03-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6796
9686f86d
MV
6797 * init.c (scm_init_guile_1): Call scm_i_init_deprecated.
6798
6799 * deprecated.c, deprecated.h: New files, to collect deprecated
6800 things in one place.
6801 * Makefile.am: Added them in all the right places.
6802
d11d697a
MV
6803 * Makefile.am (EXTRA_DIST): Added "scmconfig.h.top".
6804 (scmconfig.h): Get "scmconfig.h.top" from $(srcdir) so that VPATH
6805 builds work.
9686f86d
MV
6806 (DOT_X_FILES): Removed "iselect.x".
6807 (DOT_DOC_FILES): Removed "iselect.doc".
d11d697a 6808
e3c0c3b9
RB
68092003-03-25 Rob Browning <rlb@defaultvalue.org>
6810
6811 * win32-socket.h: #include "libguile/__scm.h". Replace usage of
6812 HAVE_WINSOCK2_H with SCM_HAVE_WINSOCK2_H.
6813
6814 * win32-socket.c: #include <config.h> if HAVE_CONFIG_H.
6815
6816 * vports.c: #include <config.h> if HAVE_CONFIG_H.
6817
6818 * unif.c: #include <config.h> if HAVE_CONFIG_H. Replace usage of
6819 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6820
6821 * threads.h: replace usage of struct timespect with
6822 scm_t_timespec. Replace usage of USE_PTHREAD_THREADS with
6823 SCM_USE_PTHREAD_THREADS. Remove typedef for struct timespec in
6824 favor of scm_t_timespec from scmconfig.h.
6825
6826 * threads.c: move libguile/_scm.h include to the top so we pick up
6827 any critical defines like _GNU_SOURCE early. Replace usage of
6828 struct timespect with scm_t_timespec. Replace usage of
6829 STACK_GROWS_UP with SCM_STACK_GROWS_UP. Replace usage of
6830 USE_PTHREAD_THREADS with SCM_USE_PTHREAD_THREADS.
6831
6832 * threads-plugin.h: replace usage of struct timespect with
6833 scm_t_timespec.
6834
6835 * threads-plugin.c: #include <config.h> if HAVE_CONFIG_H. Replace
6836 usage of struct timespect with scm_t_timespec.
6837
6838 * tags.h: move HAVE_STDINT_H handling to scmconfig.h. Move
6839 HAVE_INTTYPES_H handling to scmconfig.h. #include
6840 "libguile/__scm.h". Rework handling for scm_t_bits,
6841 scm_t_signed_bits, SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
6842 SCM_T_SIGNED_BITS_MIN, and SIZEOF_SCM_T_BITS to use scm_t_intptr,
6843 scm_t_uintptr, SCM_SIZEOF_INTPTR_T, and SCM_SIZEOF_UINTPTR_T, and
6844 SCM_SIZEOF_UNSIGNED_LONG. Rename usage of HAVE_ARRAYS to
6845 SCM_HAVE_ARRAYS.
6846
6847 * symbols.c: #include <config.h> if HAVE_CONFIG_H.
6848
6849 * struct.c: #include <config.h> if HAVE_CONFIG_H.
6850
6851 * strports.c: #include <config.h> if HAVE_CONFIG_H.
6852
6853 * strop.c: #include <config.h> if HAVE_CONFIG_H.
6854
6855 * stime.h: move handling of time related headers to scmconfig.h.
6856
6857 * stime.c: #include <config.h> if HAVE_CONFIG_H.
6858
6859 * stacks.c: replace usage of STACK_GROWS_UP with
6860 SCM_STACK_GROWS_UP.
6861
6862 * sort.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
6863 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6864
6865 * socket.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
6866 of uint32 and HAVE_UINT_32 with scm_t_int32.
6867
6868 * smob.c: #include <config.h> if HAVE_CONFIG_H.
6869
6870 * simpos.c: #include <config.h> if HAVE_CONFIG_H.
6871
6872 * script.c: #include <config.h> if HAVE_CONFIG_H.
6873
6874 * scmsigs.c: #include <config.h> if HAVE_CONFIG_H.
6875
6876 * scmconfig.h.top: new file -- preamble for scmconfig.h.
6877
6878 * rw.c: #include <config.h> if HAVE_CONFIG_H.
6879
6880 * regex-posix.c: #include <config.h> if HAVE_CONFIG_H.
6881
6882 * read.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6883
6884 * rdelim.c: #include <config.h> if HAVE_CONFIG_H.
6885
6886 * random.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
6887 of LONG32, LONG64, SIZEOF_LONG, and HAVE_LONG_LONGS with
6888 scm_t_int32, scm_t_int64, and SCM_HAVE_T_INT64. Rename usage of
6889 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6890
6891 * ramap.c: replace usage of HAVE_LONG_LONGS with
6892 "SCM_SIZEOF_LONG_LONG != 0".
6893
6894 * putenv.c: #include <config.h> if HAVE_CONFIG_H. #include
6895 "libguile/scmconfig.h".
6896
6897 * pthread-threads.c: #include <config.h> if HAVE_CONFIG_H.
6898
6899 * print.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6900 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6901
6902 * posix.c: #include <config.h> if HAVE_CONFIG_H.
6903
6904 * ports.c: #include <config.h> if HAVE_CONFIG_H.
6905
6906 * objects.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6907
6908 * numbers.h: replace usage of HAVE_FLOATINGPOINT_H with
6909 SCM_HAVE_FLOATINGPOINT_H. Replace usage of HAVE_IEEEFP_H with
6910 SCM_HAVE_IEEEFP_H. Replace usage of HAVE_NAN_H with
6911 SCM_HAVE_NAN_H. Replace usage of STDC_HEADERS with
6912 SCM_HAVE_STDC_HEADERS. Replace usage of ptrdiff_t with
6913 scm_t_ptrdiff. Replace usage of HAVE_LONG_LONGS with
6914 "SCM_SIZEOF_LONG_LONG != 0".
6915
6916 * numbers.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
6917 of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0". Replace
6918 usage of ptrdiff_t with scm_t_ptrdiff. Replace usage of
6919 SIZEOF_PTRDIFF_T with SCM_SIZEOF_SCM_T_PTRDIFF.
6920
6921 * num2integral.i.c: #include <config.h> if HAVE_CONFIG_H.
6922
6923 * null-threads.h: replace usage of struct timespect with
6924 scm_t_timespec.
6925
6926 * net_db.c: #include <config.h> if HAVE_CONFIG_H.
6927
6928 * mkstemp.c: #include <config.h> if HAVE_CONFIG_H. #include
6929 "libguile/__scm.h". Remove definition of gcc_uint64_t in favor of
6930 scm_t_uint64 and rename usages.
6931
6932 * mallocs.c: #include <config.h> if HAVE_CONFIG_H.
6933
6934 * load.c: #include <config.h> if HAVE_CONFIG_H.
6935
6936 * iselect.h: move handling of time related headers to scmconfig.h.
6937 Rename usage of HAVE_SYS_SELECT_H to SCM_HAVE_SYS_SELECT_H.
6938 Rename usage of HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Rename
6939 usage of USE_COOP_THREADS to SCM_USE_COOP_THREADS.
6940
6941 * iselect.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6942 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
6943 USE_NULL_THREADS to SCM_USE_NULL_THREADS.
6944
6945 * ioext.c: #include <config.h> if HAVE_CONFIG_H.
6946
6947 * inline.h: #include "libguile/__scm.h" at the top. Change code
6948 to use SCM_C_INLINE and SCM_INLINE_C_INCLUDINT_INLINE_H to decide
6949 what to do instead of creating a new public #define. Rename usage
6950 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
6951 USE_NULL_THREADS to SCM_USE_NULL_THREADS. Rename usage of
6952 USE_COPT_THREADS to SCM_USE_COPT_THREADS.
6953
6954 * inline.c: rearrange handling -- now we just #define
6955 SCM_INLINE_C_INCLUDING_INLINE_H to 1 and #include
6956 "libguile/inline.h". scmconfig.h will define SCM_C_INLINE as
6957 appropriate, and we use that in inline.h along with the above
6958 define to determine how to respond.
6959
6960 * init.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
6961 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6962
6963 * guile.c: #include <config.h> if HAVE_CONFIG_H.
6964
6965 * gh_data.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6966 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6967
6968 * gh.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6969
6970 * gen-scmconfig.h.in: new file -- see gen-scmconfig.c for details.
6971
6972 * gen-scmconfig.c: new file -- see comments in file for details.
6973
6974 * gdbinit.c: #include <config.h> if HAVE_CONFIG_H.
6975
6976 * gc_os_dep.c: #include <config.h> if HAVE_CONFIG_H. Replace
6977 usage of STACK_GROWS_UP with SCM_STACK_GROWS_UP.
6978
6979 * gc.h: replace usage of SIZEOF_LONG with
6980 SCM_SIZEOF_UNSIGNED_LONG. Replace usage of USE_PTHREAD_THREADS
6981 with SCM_USE_PTHREAD_THREADS. Remove SCM_SIZEOF_LONG definition
6982 since we handle that in scmconfig.h now.
6983
6984 * gc.c: #include <config.h> if HAVE_CONFIG_H.
6985
6986 * gc-mark.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6987 of HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of
6988 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6989
6990 * gc-malloc.c: #include <config.h> if HAVE_CONFIG_H.
6991
6992 * gc-card.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6993 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6994
6995 * fports.c: #include <config.h> if HAVE_CONFIG_H.
6996
6997 * filesys.c: #include <config.h> if HAVE_CONFIG_H.
6998
6999 * feature.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7000 of USE_NULL_THREADS to SCM_USE_NULL_THREADS.
7001
7002 * extensions.c: #include <config.h> if HAVE_CONFIG_H.
7003
7004 * evalext.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7005 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7006
7007 * eval.c: #include <config.h> if HAVE_CONFIG_H. #include
7008 "libguile/__scm.h" rather than scmconfig.h. Rename usage of
7009 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
7010 with "SCM_SIZEOF_LONG_LONG != 0".
7011
7012 * error.c: #include <config.h> if HAVE_CONFIG_H.
7013
7014 * eq.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
7015 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
7016 with "SCM_SIZEOF_LONG_LONG != 0".
7017
7018 * deprecation.c: #include <config.h> if HAVE_CONFIG_H.
7019
7020 * coop.c: replace usage of struct timespect with scm_t_timespec.
7021 #include <config.h> if HAVE_CONFIG_H.
7022
7023 * coop-threads.c: #include "libguile/_scm.h" early. Replace
7024 usage of struct timespect with scm_t_timespec. Replace usage of
7025 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7026
7027 * coop-pthreads.c: #include "libguile/_scm.h" early. Replace
7028 usage of struct timespect with scm_t_timespec. Replace usage of
7029 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7030
7031 * coop-defs.h: move handling of time related headers to
7032 scmconfig.h. Add #include "libguile/__scm.h". Rename usage of
7033 HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Replace usage of struct
7034 timespect with scm_t_timespec.
7035
7036 * convert.i.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7037
7038 * convert.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7039
7040 * convert.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7041 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7042
7043 * continuations.c: move libguile/_scm.h include to the top so we
7044 pick up any critical defines like _GNU_SOURCE early.
7045
7046 * backtrace.c: #include <config.h> if HAVE_CONFIG_H.
7047
7048 * async.c: #include <config.h> if HAVE_CONFIG_H.
7049
7050 * alloca.c: #include <config.h> if HAVE_CONFIG_H.
7051
7052 * _scm.h: #include <config.h> if HAVE_CONFIG_H.
7053 Rename usage of USE_PTHREAD_THREADS to SCM_USE_PTHREAD_THREADS.
7054
7055 * __scm.h: move libguile/scmconfig.h include up to the top, so
7056 we're sure to pick up any critical defines like _GNU_SOURCE early.
7057 #include <limits.h> removed in favor of scmconfig.h inclusion when
7058 appropriate. STDC_HEADERS based inclusion of stdlib.h,
7059 sys/types.h, stddef.h, and sys/stdtypes.h removed in favor of
7060 scmconfig.h inclusion when appropriate. Various Win32 related
7061 definitions removed in favor of scmconfig.h inclusion when
7062 appropriate.
7063 (HAVE_UINTPTR_T): definition removed (see NEWS).
7064 (SIZEOF_PTRDIFF_T): definition removed (see NEWS).
7065 (HAVE_LONG_LONGS): definition removed (see NEWS).
7066 (HAVE_LONG_LONG): definition removed (see NEWS).
7067 (HAVE_PTRDIFF_T): definition removed (see NEWS).
7068
7069 * Makefile.am: scmconfig.h is now generated by building and
7070 running gen-scmconfig.h and capturing its output. gen-scmconfig
7071 uses config.h and the configure.in generated gen-scmconfig.h to
7072 decide what to output. See gen-scmconfig.c for details.
7073 (noinst_PROGRAMS): add gen-scmconfig.
7074 (gen_scmconfig_SOURCES): new variable.
7075 (gen-scmconfig.$(OBJEXT)): new target - be careful to handle
7076 cross-compiling right.
7077 (scmconfig.h): build scmconfig.h from gen-scmconfig's output.
7078 (BUILT_SOURCES): add scmconfig.h.
7079
25e0bf97
MV
70802003-03-19 Marius Vollmer <mvo@zagadka.de>
7081
7082 * gc_os_dep.c: Added defines for sparc-unknown-netbsdelf1.5 from
7083 Adrian Bunk. Thanks!
7084
74b6d6e4
MD
70852003-03-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7086
7087 * goops.c (make_class_from_template): New fourth arg:
7088 applicablep.
7089 (scm_class_extended_generic_with_setter, scm_class_self): Fixed
7090 cpls.
7091
7092 * smob.c (scm_set_smob_apply): Call scm_i_inherit_applicable.
7093
7094 * goops.c, objects.c, objects.h (scm_make_extended_class): New
7095 second arg: applicablep.
7096 (scm_i_inherit_applicable): New function.
7097
7098 * goops.c, goops.h (scm_class_applicable,
7099 scm_class_extended_accessor): New classes.
7100
5c9e7dad
DH
71012003-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
7102
7103 * procs.c (scm_procedure_documentation): Removed redundant
7104 SCM_NIMP test and replaced other calls to SCM_IMP by more explicit
7105 predicates.
7106
f8af5c6d
MD
71072003-03-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7108
c614a00b
MD
7109 * list.c, list.h (scm_filter, scm_filter_x): New functions.
7110
109c2c9f
MD
7111 * modules.c (scm_module_import_interface): New function.
7112
f8af5c6d
MD
7113 * goops.c, goops.h (scm_class_accessor_method): Renamed from
7114 scm_class_accessor.
7115 (scm_class_accessor): New class.
7116
a48d60b1
MD
71172003-03-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7118
7119 * goops.c (scm_primitive_generic_generic): Enable primitive
7120 generic if not enabled.
7121 (scm_sys_goops_loaded): Setup unextended primitive generics.
7122
7123 * goops.c, goops.h (scm_c_extend_primitive_generic): New function.
7124
7125 * snarf.h (SCM_PRIMITIVE_GENERIC, SCM_PRIMITIVE_GENERIC_1): New
7126 snarf macros.
7127
7128 * numbers.c (scm_abs): Use SCM_PRIMITIVE_GENERIC. (This is only a
7129 testing example. All uses of SCM_GPROC should be converted.)
7130
7131 * procprop.c (scm_stand_in_scm_proc): Use scm_assq instead of
7132 scm_assoc.
7133
7134 * eq.c (scm_equal_p): Turned into a primitive generic.
7135
84edc049
RB
71362003-02-27 Rob Browning <rlb@defaultvalue.org>
7137
7138 * Makefile.am (scmconfig.h): new target -- generate file from
7139 ../config.h.
7140 (modinclude_HEADERS): remove version.h.
7141 (nodist_modinclude_HEADERS): add version.h.
7142
ea5c9285
MD
71432003-02-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7144
b4a1358c
MD
7145 This fixes a serious GC bug, introduced during the latest
7146 reorganization of the GC, which disabled freeing of structs and
7147 GOOPS objects:
7148
7149 * struct.c (scm_struct_prehistory): Init scm_i_structs_to_free to
7150 SCM_EOL.
53af8255
MD
7151 (scm_struct_prehistory): Move scm_free_structs to
7152 scm_before_mark_c_hook.
ea5c9285 7153
b4a1358c
MD
7154 * gc-card.c (sweep_card): Check that we haven't swept structs on
7155 this card before. That can happen if scm_i_sweep_all_segments has
7156 been called from some other place than scm_igc.
7157
c35738c1
MD
71582003-02-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7159
231a4ea8
MD
7160 * environments.c (DEFAULT_OBARRAY_SIZE): Changed from 137 to 31
7161 (since hash tables now adapt their size).
7162
7163 * modules.c (scm_modules_prehistory): Changed from 2001 to 1533
7164 (current number of prehistory bindings; hashtable code will select
7165 a prime which is greater than this value).
7166
7167 * symbols.c (scm_symbols_prehistory): Changed from 1009 to 2139
7168 (current number of initial symbols).
7169
7170 * properties.c (scm_init_properties): Don't specify size of
7171 scm_properties_whash.
7172
7173 * objprop.c (scm_init_objprop): Don't specify size of
7174 scm_object_whash.
7175
7176 * keywords.c (scm_init_keywords): Don't specify a hash table size.
7177
c35738c1
MD
7178 * hooks.c (scm_c_hook_add): Fixed bug in append mode.
7179
7180 The following changes introduce the use of resizable hash tables
7181 throughout Guile. It also renames the old *-hash-table* functions
7182 to *-alist-vector* and places them, together with the rest of the
7183 weak vector support, in the module (ice-9 weak-vector). We should
7184 probably introduce a new, better, API for weak references, for
7185 example "weak pairs" a la MIT-Scheme. (In Chez scheme, they even
7186 look like and are used like ordinary pairs.)
7187
7188 * environments.c (obarray_enter, obarray_retrieve, obarray_remove,
7189 leaf_environment_fold, obarray_remove_all): Use hashtable
7190 accessors.
7191
7192 * gc.c (scm_init_storage): Moved hook initialization to
7193 scm_storage_prehistory.
7194 (scm_storage_prehistory): New function.
7195 (scm_igc): Added commentary about placement of
7196 scm_after_sweep_c_hook.
7197
7198 * gc-mark.c (scm_mark_all): Use hashtable accessors.
7199 (scm_gc_mark_dependencies): Use SCM_WVECT_WEAK_KEY_P and
7200 SCM_WVECT_WEAK_VALUE_P.
7201
7202 * hashtab.c, hashtab.h (scm_hash_for_each, scm_hash_map): New
7203 functions.
7204 (scm_vector_to_hash_table, scm_c_make_resizing_hash_table):
7205 Removed.
7206 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table,
7207 scm_make_doubly_weak_hash_table): Moved here from weaks.c.
7208
7209 * init.c (scm_init_guile_1): Removed call to scm_init_weaks; Added
7210 calls to scm_storage_prehistory and scm_hashtab_prehistory.
7211
7212 * modules.c (module-reverse-lookup): Use hashtable accessors.
7213
7214 * symbols.c, symbols.h (scm_i_hash_symbol): New function.
7215
7216 * weaks.c, weaks.h (scm_make_weak_key_alist_vector,
7217 scm_make_weak_value_alist_vector,
7218 scm_make_doubly_weak_alist_vector): New functions.
7219
7220 * weaks.c (scm_init_weaks_builtins): New function.
7221
7222 * weaks.h (SCM_WVECTF_WEAK_KEY, SCM_WVECTF_WEAK_VALUE,
7223 SCM_WVECTF_NOSCAN, SCM_WVECT_WEAK_KEY_P, SCM_WVECT_WEAK_VALUE_P,
7224 SCM_WVECT_NOSCAN_P): New macros.
7225
7226 * weaks.c (scm_scan_weak_vectors): Use SCM_WVECT_WEAK_KEY_P
7227 and SCM_WVECT_WEAK_VALUE_P.
7228
7229 * weaks.c, weaks.h (scm_i_allocate_weak_vector): Renamed from
7230 allocate_weak_vector and exported.
7231
0a4c1355
MD
72322003-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7233
7234 * hashtab.c: Undid thread safety. (We decided that it's better to
7235 let the user explicitly protect the tables (or not) according what
7236 is suitable for the application.)
7237
87ca11ff
MD
72382003-02-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7239
7240 * hashtab.c (scm_hash_fn_remove_x, scm_internal_hash_fold): Made
7241 thread safe and handle resizing tables.
7242 (scm_ihashx, scm_sloppy_assx, scm_delx_x): Removed
7243 SCM_DEFER/ALLOW_INTS.
7244
f59a096e
MD
72452003-02-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7246
7247 * hashtab.c (scm_vector_to_hash_table,
7248 scm_c_make_resizing_hash_table, scm_make_hash_table): New
7249 functions.
7250 (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x): Made thread
7251 safe and handle resizing tables.
7252
7253 * weaks.c (scm_make_weak_key_hash_table,
7254 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
7255 Size argument made optional. Return resizable table if not
7256 specified.
7257
4b612c5b
MD
72582003-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7259
7260 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
7261 Fixed formals tests for closures. (Thanks to Kevin Ryde.)
7262
b3d7f6df
MD
72632003-02-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7264
7265 * debug.c (scm_procedure_source): Handle all objects for which
7266 procedure? is #t. (Thanks to Bill Schottstaedt.)
7267
756414cf
MD
72682003-01-23 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7269
361d631f
MD
7270 * futures.c (mark_futures): Don't need to mark data of recycled
7271 futures.
7272 (scan_futures, cleanup_undead): Be smarter about marking
7273 futures---avoid unnecessary passes through future lists.
7274
756414cf
MD
7275 * futures.h, futures.c: New files; Introduced recycling of
7276 futures. For fine-grained threading this lifts performance to
7277 another level. We can now use parallelization in inner loops of
7278 Guile programs without impossible overhead.
7279
7280 * threads.h, threads.c: Moved futures to their own file.
7281
7282 * Makefile.am (libguile_la_SOURCES): Added futures.c.
7283 (DOT_X_FILES): Added futures.x.
7284 (DOT_DOC_FILES): Added futures.doc.
7285 (modinclude_HEADERS): Added futures.h.
7286
7287 * threads.c, threads.h (scm_i_create_thread): Renamed from
7288 create_thread and made global.
7289
7290 * futures.c (scm_make_future): New procedure.
7291
7292 * eval.c: #include "libguile/futures.h".
7293
7294 * init.c: #include "futures.h"
7295 (scm_init_guile_1): Call scm_init_futures.
7296
7297 * stime.c (SCM_TIME_UNITS_PER_SECOND): Renamed from CLKTCK.
7298
7299 * stime.h (SCM_TIME_UNITS_PER_SECOND): Definition moved here.
7300
7301 * eval.c, eval.h (scm_trampoline_0, scm_i_call_closure_0): New
7302 functions.
7303
7304 * eval.c (scm_trampoline_1): Fixed arguments test for closures.
7305
b4debead
MD
73062003-01-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7307
7308 * threads.c (create_thread): Don't unwind dynwind chain of parent
7309 thread before creation. Just start the new thread with an empty
7310 dynwind chain.
7311
93f26b7b
MD
73122003-01-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7313
7314 * evalext.c, evalext.h (scm_self_evaluating_p): New function.
7315
38d8927c
MD
73162003-01-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7317
41c96c32
MD
7318 * threads.c (scm_timed_wait_condition_variable): Support timed
7319 waiting also for simple condition variables.
7320
38d8927c
MD
7321 * goops.c (TEST_CHANGE_CLASS): Use scm_change_object_class instead
7322 of calling the procedure change-object-class.
7323
9cf5d9b7
MD
73242003-01-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7325
7326 * ramap.c (scm_ramapc): Typo in error message.
7327
bbf8d523
MD
73282003-01-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7329
b46fae00
MD
7330 * goops.c (scm_sys_prep_layout_x): Bugfix: Only create layout for
7331 slots with instance allocation.
7332
bbf8d523
MD
7333 * goops.c, goops.h (scm_class_extended_generic_with_setter): New
7334 class.
7335 (scm_compute_applicable_methods): Use scm_generic_function_methods.
7336
7337 * goops.c (scm_generic_function_methods): Support extended
7338 generic functions.
7339
ebf9b47c
MD
73402002-12-29 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7341
7342 * eval.c (unmemocopy): Bugfix: scm_sym_delay --> scm_sym_future.
2e37d6a2 7343 Thanks to Neil for pointing this out!
ebf9b47c 7344
14a9ba3f
NJ
73452002-12-29 Neil Jerram <neil@ossau.uklinux.net>
7346
7347 * lang.h: Remove declarations matching definitions removed from
7348 lang.c (just below).
7349
c6a040a8
NJ
73502002-12-28 Neil Jerram <neil@ossau.uklinux.net>
7351
6054d805
NJ
7352 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
7353 scm_m_while, scm_nil_eq): Remove definitions that were superfluous
7354 and already commented out.
7355
c6a040a8
NJ
7356 * read.h (scm_lreadparen), read.c (scm_lreadr, scm_read_token,
7357 scm_lreadparen): Support reading vectors with Elisp syntax if
7358 SCM_ELISP_READ_EXTENSIONS is defined. (SCM_ELISP_READ_EXTENSIONS
7359 is not currently defined, and there isn't even a configure switch
7360 to enable it yet.)
7361
3742c12f
MV
73622002-12-26 Marius Vollmer <mvo@zagadka.ping.de>
7363
7364 * Makefile.am (c-tokenize.o): Refer to source via $< so that vpath
7365 builds work.
7366 (EXTRA_DIST): Added version.h.in.
7367
fb50ef08
MD
73682002-12-21 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7369
7370 This change makes it possible for one thread to do lazy sweeping
7371 while other threads are running. Now only the mark phase need to
7372 have all threads asleep. We should look further into this issue.
7373 Presently, I've put the locking of scm_i_sweep_mutex at
7374 "conservative" places due to my current lack of knowledge about
7375 the garbage collector. Please feel free to restrict these regions
7376 further to allow for maximal parallelism!
7377
7378 * gc.c, gc.h (scm_i_sweep_mutex): New mutex.
7379
7380 * gc.c (scm_gc_for_newcell), gc-malloc.c (scm_realloc,
7381 scm_gc_register_collectable_memory): Substitute locking of
7382 scm_i_sweep_mutex for calls to scm_i_thread_put_to_sleep.
7383 (scm_igc): Lock sweep mutex here instead of in callers; Calls to
7384 scm_i_thread_put_to_sleep/scm_i_thread_wake_up used to demarkate
7385 the single-thread section (which now only contains the mark
7386 phase).
7387 (scm_gc): Don't lock sweeo mutex here since scm_igc locks it;
7388 Removed SCM_DEFER/ALLOW_INTS. Simply call scm_igc directly.
7389
7390 * threads.c (gc_section_mutex): Removed.
7391
9ed24633
MD
73922002-12-19 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7393
0d48aca5
MD
7394 * threads.c (create_thread): Clear parent field in root state in
7395 order not to unnecessarily remember dead threads.
7396
9ed24633
MD
7397 * eval.c (call_subr2o_1, call_lsubr2_2): New functions.
7398 (scm_trampoline_1, scm_trampoline_2): Use them.
7399
29717c89
MD
74002002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7401
7402 Partial introduction of real plugin interface.
7403
7404 * Makefile.am (modinclude_HEADERS): Added threads-plugin.h.
7405 (EXTRA_DIST): Added threads-plugin.c.
7406
7407 * threads-plugin.h, threads-plugin.c: New files.
7408
7409 * threads.h: #include "libguile/threads-plugin.h".
7410
7411 * threads.c: #include "libguile/threads-plugin.c".
7412
7413 * pthread-threads.c: Temporarily remove debugging functions.
7414
7415 * threads.c, threads.h (scm_yield): Added back.
7416
e29e0b09
MD
74172002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7418
7419 * threads.c (really_launch): Detach before unlocking
7420 thread_admin_mutex in order not to risk being joined.
7421 (scm_i_thread_put_to_sleep, scm_i_thread_wake_up): Keep
7422 thread_admin_mutex locked during GC.
7423
7424 * pthread-threads.c, pthread-threads.h: Improvements to debugging
7425 functions.
7426
0b6843b1 74272002-12-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
93cd4dcd 7428
6da2dfc4
MD
7429 * pthread-threads.c, pthread-threads.h (SCM_DEBUG_THREADS): Added
7430 support for debugging mutex operations.
7431
1b92fb6b
MD
7432 * threads.c (scm_thread): Removed filed joining_threads.
7433 (thread_print): Print thread number as well as address of thread
7434 structure.
0b6843b1
MD
7435 (scm_join_thread): Bugfix.
7436 (scm_lock_mutex, scm_try_mutex, scm_unlock_mutex,
7437 scm_timed_wait_condition_variable, scm_signal_condition_variable,
7438 scm_broadcast_condition_variable): Use the low-level API.
7439 (scm_all_threads): Return copy of thread list (to prevent
7440 unintended destruction).
7441 (scm_threads_prehistory): Initialize heap_mutex of fake thread.
1b92fb6b 7442
93cd4dcd
MD
7443 * pthread-threads.c, pthread-threads.h, threads.c: Fixes to
7444 pthread "native" recursive mutex support.
7445
2ff4f181
MD
74462002-12-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7447
28d52ebb
MD
7448 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): New definitions.
7449 Simply lock a thread C API recursive mutex.
7450 (SCM_NONREC_CRITICAL_SECTION_START,
7451 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
7452 SCM_REC_CRITICAL_SECTION_END): Removed.
7453
7454 * eval.c: Replaced SOURCE_SECTION_START / SOURCE_SECTION_END with
7455 direct calls to scm_rec_mutex_lock / unlock around the three calls
7456 to scm_m_expand_body.
7457
7458 * eval.c, eval.h (promise_free): New function.
7459 (scm_force): Rewritten; Now thread-safe; Removed
7460 SCM_DEFER/ALLOW_INTS.
7461
7462 * pthread-threads.h: Added partially implemented plugin interface
7463 for recursive mutexes. These are, for now, only intended to be
7464 used internally within the Guile implementation.
7465
7466 * pthread-threads.c: New file.
7467
7468 * threads.c: Conditionally #include "pthread-threads.c".
7469
7470 * eval.c, eval.h (scm_makprom, scm_force): Rewritten to be
7471 thread-safe;
7472
7473 * snarf.h (SCM_MUTEX, SCM_GLOBAL_MUTEX, SCM_REC_MUTEX,
7474 SCM_GLOBAL_REC_MUTEX): New macros.
7475
7476 * eval.c, threads.c, threads.h, snarf.h: Rewrote critical section
7477 macros---use mutexes instead.
7478
7479 * tags.h (SCM_IM_FUTURE): New tag.
7480
7481 * eval.c (scm_m_future): New primitive macro.
7482 (SCM_CEVAL): Support futures.
7483 (unmemocopy): Support unmemoization of futures.
7484
7485 * print.c (scm_isymnames): Name of future isym.
7486
2ff4f181
MD
7487 * version.c: Unmade some changes to my private copy that got
7488 committed by mistake.
7489
392d2833
MD
74902002-12-11 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7491
e200ddee
MD
7492 * gc-malloc.c, gc.h, init.c: Reverted gc-malloc change of
7493 2002-12-10.
7494
392d2833
MD
7495 * gc.c (scm_igc): Don't call scm_i_thread_invalidate_freelists.
7496
7497 * gc.c (scm_gc_sweep): Call it here instead, which is a more
7498 logical place.
7499
7500 * threads.c (create_thread): Remember root object until the handle
7501 of the new thread is on all_threads list.
7502
7503 * root.c (scm_make_root): Moved copying of fluids until after
7504 creation of root handle so that the fluids are GC protected. Also
7505 removed the critical section.
7506
c4c52ebe
MD
75072002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7508
960c408c
MD
7509 * gc-malloc.c, gc.h (scm_gc_malloc_prehistory): New function.
7510
3cdde9d6 7511 * gc-malloc.c (malloc_mutex): New mutex.
960c408c 7512 (scm_gc_malloc_prehistory): Initialize it.
3cdde9d6
MD
7513 (scm_realloc): Serialize call to realloc
7514 (scm_calloc): Same for calloc.
7515 Thanks to Wolfgang Jaehrling!
7516 (Now we have to make sure all calls to malloc/realloc are made
7517 through scm_malloc.)
7518
960c408c
MD
7519 * init.c (scm_init_guile_1): Call scm_gc_malloc_prehistory.
7520
c4c52ebe
MD
7521 * threads.c (really_launch): Release heap (to prevent deadlock).
7522 (create_thread): Release heap before locking thread admin mutex.
7523
b0dc3d71
MD
75242002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7525
7526 * threads.c (scm_i_thread_invalidate_freelists): New
7527 function.
7528
7529 * gc.c (scm_igc): Call scm_i_thread_invalidate_freelists.
7530
7531 * modules.c (scm_export): Inserted a return statement.
7532
06e80f59
HWN
75332002-12-10 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7534
7535 * modules.c (scm_export): new function
7536
7537 * gc-card.c: add a note about malloc()/free() overhead.
7538
a12611c3
MD
75392002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7540
7541 * Makefile.am (c-tokenize.$(OBJEXT)): Don't look for c-tokenize.c
7542 in srcdir.
7543
c7fabadf
MD
75442002-12-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7545
7546 These changes remove scm_ints_disabled (which hasn't has any
7547 effect in Guile for quite some time).
7548
7549 * async.c, error.h (scm_ints_disabled): Removed.
7550
7551 * gc.c (scm_gc_for_newcell), init.c (scm_init_guile_1),
7552 root.c (scm_internal_cwdr), gdbint.c (SCM_BEGIN_FOREIGN_BLOCK,
7553 SCM_END_FOREIGN_BLOCK): Don't touch scm_ints_disabled.
7554 (old_ints): Removed.
7555
7556 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Define as a recursive
7557 critical section.
7558 (SCM_REDEFER_INTS, SCM_ALLOW_INTS): Define as SCM_DEFER_INTS and
7559 SCM_ALLOW_INTS.
7560
9bc4701c
MD
75612002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7562
52340b65
MD
7563 * threads.c (scm_mutex_lock, scm_cond_wait, scm_cond_timedwait):
7564 Removed accidental #if 0 around these functions.
7565
9bc4701c
MD
7566 These changes are the start of support for preemptive
7567 multithreading. Marius and I have agreed that I commit this code
7568 into the repository although it isn't thoroughly tested and surely
7569 introduces many bugs. The bugs should only be exposed when using
7570 threads, though. Signalling and error handling for threads is
7571 very likely broken. Work on making the implementation cleaner and
7572 more efficient is needed.
7573
7574 * __scm.h (SCM_ALLOW_INTS_ONLY): Removed.
7575 (SCM_NONREC_CRITICAL_SECTION_START,
7576 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
7577 SCM_REC_CRITICAL_SECTION_END): New macros.
7578 (SCM_CRITICAL_SECTION_START/END): Defined here.
7579
7580 * eval.c: Insert SOURCE_SECTION_START / SOURCE_SECTION_END around
7581 the three calls to scm_m_expand_body.
7582
7583 * gc.h: #include "libguile/pthread-threads.h";
7584 (SCM_FREELIST_CREATE, SCM_FREELIST_LOC): New macros.
7585
7586 * gc.c (scm_i_freelist, scm_i_freelist2): Defined to be of type
7587 scm_t_key;
7588
7589 * gc.c, gc-freelist.c, inline.h: Use SCM_FREELIST_LOC for freelist
7590 access.
7591
7592 * gc-freelist.c (scm_gc_init_freelist): Create freelist keys.
7593
7594 * gc-freelist.c, threads.c (really_launch): Use
7595 SCM_FREELIST_CREATE.
7596
7597 * gc-malloc.c (scm_realloc, scm_gc_register_collectable_memory):
7598
7599 * gc.c (scm_i_expensive_validation_check, scm_gc,
7600 scm_gc_for_newcell): Put threads to sleep before doing GC-related
7601 heap administration so that those pieces of code are executed
7602 single-threaded. We might consider rewriting these code sections
7603 in terms of a "call_gc_code_singly_threaded" construct instead of
7604 calling the pair of scm_i_thread_put_to_sleep () and
7605 scm_i_thread_wake_up (). Also, we would want to have as many of
7606 these sections eleminated.
7607
7608 * init.c (scm_init_guile_1): Call scm_threads_prehistory.
7609
7610 * inline.h: #include "libguile/threads.h"
7611
7612 * pthread-threads.h: Macros now conform more closely to the
7613 pthreads interface. Some of them now take a second argument.
7614
7615 * threads.c, threads.h: Many changes.
7616
76172002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7618
7619 * Makefile.am (version.h): Changed $^ --> $< in rule for
7620 version.h.
7621
b2cbe8d8
RB
76222002-12-08 Rob Browning <rlb@defaultvalue.org>
7623
7624 * version.h.in (SCM_MICRO_VERSION): use @--@ substitution now.
7625 (SCM_MINOR_VERSION): use @--@ substitution now.
7626 (SCM_MICRO_VERSION): use @--@ substitution now.
7627 (scm_effective_version): new function prototype.
7628
7629 * version.c (scm_effective_version): new function, also add
7630 effective-version.
7631
7632 * Makefile.am (schemelibdir): VERSION -> GUILE_EFFECTIVE_VERSION.
7633 (libpath.h): use GUILE_EFFECTIVE_VERSION to compute
7634 SCM_LIBRARY_DIR.
7635 (version.h): generate this here rather than configure.in. This
7636 approach tracks source edits better (i.e. more immediately).
7637 Might be worth considering for other .in files too.
7638
5441c65c
MV
76392002-12-02 Marius Vollmer <mvo@zagadka.ping.de>
7640
7641 Reorganized thread package selection. A thread package now only
7642 implements a small set of pthread like functions and Guile
7643 implements the rest on top of that. Guile's implementation is
7644 what the "coop-pthreads" package has been previously. Support for
7645 "coop" threads has been removed until I get time to add it again.
7646
7647 * Makefile.am (libguile_la_SOURCES): Removed iselect.c.
7648 (noinst_HEADERS): Removed coop-threads.c, coop-threads.h, coop.c,
7649 null-threads.c, coop-pthreads.c.
7650 (modinclude_HEADERS): Removed coop-defs.h, coop-pthreads.h. Added
7651 pthread-threads.h.
7652
7653 * validate.h (SCM_VALIDATE_THREAD): Moved to threads.h.
7654
7655 * threads.h: Do not include "libguile/coop-defs.h". Include
7656 "libguile/pthread-threads.h" for USE_COPT_THREADS. Removed
7657 (previously deprecated) C level thread API prototypes. They are
7658 now in the thread package specific headers, "null-threads.h" and
7659 "pthread-threads.h".
7660 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
7661 New.
7662 (scm_threads_init): Removed.
7663 (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END,
7664 SCM_THREAD_SWITCHING_CODE, scm_i_switch_counter,
7665 SCM_I_THREAD_SWITCH_COUNT): Define here.
7666 (scm_single_thread_p): Removed.
7667 (scm_call_with_new_thread): Take two args directly instead of list
7668 of two args.
7669 (scm_i_thread_data, scm_i_set_thread_data, SCM_THREAD_LOCAL_DATA,
7670 SCM_SET_THREAD_LOCAL_DATA): Define here.
7671
7672 * threads.c: Merged with "coop-pthreads.c".
7673
7674 * null-threads.h: Implement pthread-like API as a set of macros.
7675
7676 * pthread-threads.h: New, implement pthread-like API by deferring
7677 to pthread itself.
7678
7679 * init.c (scm_init_guile_1): Do not call scm_init_iselect, which
7680 has been lost in the reorganization.
7681
504d99c5
MD
76822002-12-01 Mikael Djurfeldt <mdj@linnaeus>
7683
7684 The following change makes it possible to move procedure
7685 application dispatch outside inner loops. The motivation was
7686 clean implementation of efficient replacements of R5RS primitives
7687 in SRFI-1.
7688
7689 The semantics is clear: scm_trampoline_N returns an optimized
7690 version of scm_call_N (or NULL if the procedure isn't applicable
7691 on N args).
7692
7693 Applying the optimization to map and for-each increases efficiency
7694 noticeably. For example, (map abs ls) is 8 times faster than
7695 before.
7696
7697 * eval.h (scm_t_trampoline_1, scm_t_trampoline_2): New types.
7698
7699 * eval.c, eval.h (scm_trampoline_1, scm_trampoline_2): New functions.
7700
7701 * eval.c (call_subr2_2, call_lsubr_2, call_closure_2): New functions;
7702 (map, for-each): Handle also application on two args as a special
7703 case; Use trampolines.
7704
7705 Other changes:
7706
7707 * sort.c (scm_cmp_function): Choose subr2less for scm_tc7_subr_2o;
7708 (subr2oless): Removed.
7709 (scm_restricted_vector_sort_x): Use scm_return_first to keep the
7710 vector GC protected.
7711
7712 * eval.c (check_map_args): Use scm_out_of_range_pos instead of
7713 scm_out_of_range.
7714
63dd3413
DH
77152002-11-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
7716
7717 * evalext.[ch] (scm_m_undefine, undefine): Deprecated.
7718
4ba5f279
MD
77192002-11-17 Mikael Djurfeldt <mdj@linnaeus>
7720
7721 * debug.c (scm_make_iloc): Added missing "return".
7722
56ae231f
MV
77232002-11-17 Marius Vollmer <mvo@zagadka.ping.de>
7724
7725 * strports.c (scm_eval_string_in_module): Validate second arg to
7726 be a module. Thanks to Arno Peters!
7727
80b28865
DH
77282002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7729
7730 * .cvsignore: remove goops.c
7731
c88b1456
DH
77322002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7733
7734 * modules.c (scm_env_top_level, scm_lookup_closure_module,
7735 module_variable, scm_module_lookup_closure,
7736 scm_module_transformer, scm_sym2var, scm_module_reverse_lookup,
7737 scm_system_module_env_p): Don't compare SCM values with C
7738 operators == or !=. Avoid SCM_IMP predicates. Prefer !SCM_FALSEP
7739 over SCM_NFALSEP.
7740
a8a19efc
DH
77412002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7742
7743 * eval.h (SCM_MAKE_ILOC): New macro.
7744
7745 * debug.c (scm_make_iloc): Use SCM_MAKE_ILOC instead of computing
7746 the iloc bitpattern here.
7747
76734914
MD
77482002-11-14 Mikael Djurfeldt <mdj@linnaeus>
7749
7750 * coop-pthreads.c, coop-pthreads.h: scm_internal_select should be
7751 part of the API, otherwise it's difficult to write Guile
7752 extensions using non-blocking I/O => moved #include
7753 "libguile/iselect.h" from coop-pthreads.c --> coop-pthreads.h.
7754
7755 * coop-pthreads.c (scm_unlock_mutex): Changed s_lock_mutex -->
7756 s_unlock_mutex.
7757
8b5b4a75
MV
77582002-11-10 Marius Vollmer <mvo@zagadka.ping.de>
7759
7760 * __scm.h (USE_THREADS, GUILE_ISELECT): Do not define here. They
7761 are defined in configure.in.
7762
7763 * threads.c: Removed SCM_API from function definitions. SCM_API
7764 is only for declarations.
7765
e5a83084
MD
77662002-11-07 Mikael Djurfeldt <mdj@linnaeus>
7767
9be8bb45
MD
7768 * coop-pthreads.h: Added support for thread specific data to the
7769 generic C API for the coop-pthreads case.
7770
e5a83084
MD
7771 * threads.c, threads.h (scm_cond_init): Undo unintentional API
7772 change.
6c214b62 7773 (scm_cond_broadcast): Added missing function.
e5a83084 7774
7edf178e
MV
77752002-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7776
7777 * coop.c (coop_next_runnable_thread): Removed, wich should have
7778 happened when GUILE_ISELECT was hard-wired.
7779
7f5b1b77
MV
77802002-11-03 Marius Vollmer <mvo@zagadka.ping.de>
7781
7caa1b07
MV
7782 * Makefile.am (libguile_la_SOURCES): Added threads.c
7783 (DOT_DOC_FILES): Added threads.doc.
7784 (DOT_X_FILES): Added threads.x.
7785 (EXTRA_libguile_la_SOURCES): Removed threads.c.
7786 (noinst_HEADERS): Added coop-pthreads.c.
7787 (modinclude_HEADERS): Added coop-pthreads.h.
7788
7789 * __scm.h (USE_THREADS, GUILE_ISELECT): Define when
7790 SCM_DEBUG_DEPRECATED. Removed their use thru-out Guile.
7791
bb11cbf4
MV
7792 * iselect.c: Include "_scm.h" before testing HAVE_UNISTD_H.
7793 Thanks to Bill Schottstaedt!
7794
1d4cbbed
MV
7795 * numbers.c (scm_integer_expt): Make 0^z == 0 for z != 0.
7796
7f5b1b77
MV
7797 * _scm.h (HAVE_RESTARTABLE_SYSCALLS): Do define even when
7798 SCM_COPT_THREADS is defined.
7799 (SCM_SYSCALL): Use EINTR-expection version when SCM_COPT_THREADS
7800 is defined.
7801
7802 * coop-pthreads.c: Some harmless renamings of internal stuff.
7803 (create_thread): New, generalized version of
7804 scm_call_with_new_thread.
7805 (scm_call_with_new_thread): Use it.
7806 (scm_spawn_thread): New, use create_thread.
7807
d52f53b1
MV
78082002-11-02 Marius Vollmer <mvo@zagadka.ping.de>
7809
7810 * coop-pthreads.c, coop-pthreads.h: Redone completely, you might
7811 start testing it now.
7812
7813 * _scm.h: Include <errno.h< so that SCM_SYSCALL is correctly
7814 defined when HAVE_RESTARTABLE_SYSCALLS is not defined.
7815 (HAVE_RESTARTABLE_SYSCALLS): Do not define when USE_COPT_THREADS
7816 is defined.
7817
30f920c3
MV
78182002-10-27 Marius Vollmer <mvo@zagadka.ping.de>
7819
7820 * scmsigs.c (signal_cell_handlers, install_handler_data,
7821 scm_delq_spine_x, really_install_handler, install_handler): New
7822 scheme for triggering signal handlers, to simplify take_signal.
7823 (take_signal): Simplified, to avoid race conditions.
7824 (scm_sigaction_for_thread): Use new Scheme. Validate that thread
7825 hasn't exited yet.
7826
7827 * async.c (scm_async_click): Reset pending_asyncs, handle
7828 signal_asyncs. Don't set cdr of a non-signal async to #f.
7829 (scm_i_queue_async_cell): Do not check cdr of cell for #f, queue
7830 always. Set pending_asyncs.
7831 (scm_system_async_mark_for_thread): Check that thread has not
7832 exited.
7833 (scm_unmask_signals, decrease_block): Call scm_async_click after
7834 block_asyncs becomes zero.
7835
7836 * __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of
7837 active_asyncs.
7838
7839 * root.h (scm_root_state): Added pending_asyncs and signal_asyncs
7840 fields.
7841 * root.c (root_mark): Mark them.
7842 (make_root): Initialize them.
7843
7844 * iselect.c, iselect.h: Replaced GUILE_ISELECT with
7845 USE_COOP_THREADS.
7846 (scm_internal_select): Define one version for USE_COOP_THREADS and
7847 one for USE_NULL_THREADS.
7848 (scm_init_iselect): Likewise.
7849
7850 * inline.h (scm_cell, scm_double_cell): Also allow
7851 USE_COPT_THREADS to not protect the slot initializers.
7852
7853 * init.c (scm_init_guile_1): Call scm_init_thread_procs. This is
7854 because threads need to be initialized before the stack, but
7855 gsubrs such as scm_timed_condition_variable_wait can only be
7856 created later.
7857
7858 * threads.h: Include "coop-pthreads.h" when requested.
7859 (scm_threads_make_mutex, scm_threads_lock_mutex,
7860 scm_threads_unlock_mutex, scm_threads_monitor): Removed, they were
7861 not implemented anyway.
7862 (scm_init_thread_procs, scm_try_mutex,
7863 scm_timed_condition_variable_wait,
7864 scm_broadcast_condition_variable, scm_c_thread_exited_p,
7865 scm_thread_exited_p): New prototypes.
7866 (struct timespec): Define if not already defined.
7867 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
7868 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
7869 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
7870 scm_cond_broadcast, scm_cond_destroy): Declarations moved here and
7871 deprecated.
7872
7873 * threads.c: Include <errno.h>. Include "coop-pthreads.c" when
7874 requested.
7875 (scm_thread_exited_p): New.
7876 (scm_try_mutex, scm_broadcast_condition_variable): Newly
7877 registered procedures.
7878 (scm_wait_condition_variable, scm_timed_wait_condition_variable):
7879 Use the latter as the procedure for "wait-condition-variable",
7880 thus offering a optional timeout parameter to Scheme.
7881 (scm_wait_condition_variable): Implement in terms of
7882 scm_timed_wait_condition_variable.
7883 (scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
7884 scm_mutex_unlock, scm_mutex_destroy, scm_cond_init,
7885 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
7886 scm_cond_broadcast, scm_cond_destroy): Implement in terms of
7887 scm_make_mutex, etc, and deprecate.
7888 (scm_init_threads): Do not create smobs, leave this to
7889 scm_threads_init. Do not include "threads.x" file.
7890 (scm_init_thread_procs): New, include "threads.x" here.
7891
7892 * null-threads.h (scm_null_mutex, scm_null_mutex_init,
7893 scm_null_mutex_lock, scm_null_mutex_unlock,
7894 scm_null_mutex_destroy, scm_null_condvar, scm_null_condvar_init,
7895 scm_null_condvar_wait, scm_null_condvar_signal,
7896 scm_null_condvar_destroy): Removed.
7897 (scm_mutex_init, scm_mutex_lock, scm_mutex_unlock, scm_cond_init,
7898 scm_cond_wait, scm_cond_signal, scm_cond_broadcast,
7899 scm_cond_destory): Do not define, they are now deprecated and
7900 handled by threads.{h,c}.
7901
7902 * null-threads.c (scm_null_mutex, scm_null_cond): Define here.
7903 (scm_threads_init): Create smobs here, using the appropriate
7904 sizes.
7905 (block): Removed, now unused.
7906 (scm_c_thread_exited_p): New.
7907 (scm_null_mutex_init, scm_null_mutex_lock, scm_null_mutex_unlock,
7908 scm_null_mutex_destroy, scm_null_condvar_init,
7909 scm_null_condvar_wait, scm_null_condvar_signal,
7910 scm_null_condvar_destroy): Removed and updated users to do their
7911 task directly.
7912 (scm_try_mutex, timeval_subtract,
7913 scm_timed_wait_condition_variable,
7914 scm_broadcast_condition_variable): New.
7915 (scm_wait_condition_variable): Removed.
7916
7917 * coop-defs.h (coop_m): Added 'level' field.
7918 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
7919 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
7920 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
7921 scm_cond_broadcast, scm_cond_destroy, struct timespec): Do not
7922 define.
7923 (coop_condition_variable_broadcast): New.
7924
7925 * coop-threads.c (scm_threads_init): Create smobs here, using the
7926 appropriate sizes.
7927 (scm_c_thread_exited_p, scm_try_mutex,
7928 scm_timed_wait_condition_variable,
7929 scm_broadcast_condition_variable): New.
7930 (scm_wait_condition_variable): Removed.
7931
7932 * coop.c (coop_new_mutex_init): Initialize level.
7933 (coop_mutex_trylock, coop_mutex_lock, coop_mutex_unlock): maintain
7934 level.
7935 (coop_condition_variable_signal): Renamed to
7936 coop_condition_variable_broadcast and reimplemented in terms of
7937 that. Thus...
7938 (coop_condition_variable_broadcast): New.
7939
7940 * goops.c (hell_mutex): Reimplemented using scm_make_mutex, etc.
7941
7942 * coop-pthreads.h, coop-pthreads.c: New, but unfinished.
7943
087ed40d
MV
79442002-10-21 Marius Vollmer <mvo@zagadka.ping.de>
7945
65a23095
MV
7946 * null-threads.c: Include <time.h>. Also, use <...> for inclusion
7947 of system headers.
7948
087ed40d
MV
7949 * async.c, goops.h, modules.h, validate.h (SCM_MAKE_VALIDATE_MSG):
7950 New. Use it instead of SCM_MAKE_VALIDATE in lots of places to
30f920c3 7951 give better error messages. Thanks to Bill Schottstaedt!
087ed40d 7952
5ec1d2c8
DH
79532002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
7954
7955 * evalext.h, evalext.c (scm_definedp, scm_defined_p): Renamed
7956 scm_definedp to scm_defined_p and deprecated scm_definedp.
7957
100ae50d
DH
79582002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
7959
7960 * async.h, async.c (scm_system_async): Fixed deprecation to work
7961 correctly when deprecated features are excluded.
7962
2794cb50
MV
79632002-10-16 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7964
7965 * async.c (scm_system_async_mark_for_thread): Validate thread
7966 argument.
7967
7968 * coop-threads.c (scm_i_thread_root): Do not validate argument.
7969
7970 * feature.c (scm_init_feature): Don't add 'threads' for
7971 USE_NULL_THREADS.
7972
7973 * inline.h (scm_cell, scm_double_cell): Also allow
7974 USE_NULL_THREADS to not protect the slot initializers.
7975
7976 * scmsigs.c (scm_sigaction_for_thread): It's "USE_THREADS" not
7977 "USE_THREAD".
7978
7979 * Makefile.am (noinst_HEADERS): Added null-threads.c.
7980 (modinclude_HEADERS): Added null-threads.h.
7981
7982 * threads.h: Include null-threads.h when !USE_COOP_THREADS.
7983 * threads.c: Include null-threads.c when !USE_COOP_THREADS.
7984 (scm_init_threads): Use generic type names scm_t_mutex and
7985 scm_t_cond instead of coop_m and coop_c.
7986
7987 * null-threads.c, null-threads.h: New files.
7988
ff810d7a
MV
79892002-10-15 Marius Vollmer <mvo@zagadka.ping.de>
7990
7991 * Makefile.am: Replaced "$<" in non-pattern rules with its value.
7992 This is to support makes that know about "$<" only in pattern
7993 rules, like Sun's make.
7994
a90bdb73
MV
79952002-10-13 Marius Vollmer <mvo@zagadka.ping.de>
7996
7997 * Makefile.am (libpath.h): Fixed typo in top_srcdir_absolute
7998 substitution. Thanks to David Allouche!
7999
e71a8bf2
DH
80002002-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
8001
8002 * evalext.h: Replaced SCM_DEBUG_DEPRECATED with
8003 !SCM_ENABLE_DEPRECATED.
8004
41f77ff5
MV
80052002-10-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8006
504d99c5 8007 * async.c (scm_system_async_mark_for_thread): Only call
41f77ff5
MV
8008 scm_i_thread_root when USE_THREADS is defined. Use scm_root
8009 otherwise.
8010
8011 * scmsigs.c (take_signal): Only call scm_i_thread_root when
8012 USE_THREADS is defined. Use scm_root otherwise.
8013 (scm_sigaction_for_thread): Ignore THREAD argument when
8014 USE_THREADS is not defined. Also, move THREAD argument defaulting
8015 out of HAVE_SIGACTION section, which was a bug.
8016
6d16b125
MV
80172002-10-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8018
8019 * scmsigs.c (scm_sigaction_for_thread): Store original handler in
8020 signal_handlers, not the closure that is used as the async.
8021 The closure is stored in signal_handler_cells, as previously.
8022
acfa1f52
MV
80232002-10-10 Marius Vollmer <mvo@zagadka.ping.de>
8024
8025 * root.h (scm_root_state): Added 'block_async' slot.
8026 (scm_active_asyncs): Removed abbrev.
8027 * root.c (scm_make_root): Initialize 'block_asyncs' slot.
8028
8029 * __scm.h (SCM_ASYNC_TICK): Do without the scm_active_asyncs
8030 abbrev.
8031
8032 * async.h (scm_call_with_blocked_asyncs,
8033 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
8034 scm_c_call_with_unblocked_asyncs): New prototypes.
8035 (scm_mask_signals, scm_unmask_signals): Deprecated.
8036 (scm_mask_ints): Turned into a macro.
8037 * async.c (scm_mask_ints): Removed.
8038 (scm_run_asyncs): Do not set scm_mask_ints while running an async.
8039 this should not be necessary.
8040 (scm_async_click): Test block_asyncs instead of scm_mask_ints.
8041 (scm_mask_signals, scm_unmask_signals): Deprecated. Emit
8042 deprecation warning and check for errornous use. Set block_asyncs
8043 instead of scm_mask_ints.
8044 (increase_block, decrease_block, scm_call_with_blocked_asyncs,
8045 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
8046 scm_c_call_with_unblocked_asyncs): New.
8047
8048 * script.c (scm_compile_shell_switches): Do not set scm_mask_ints.
8049 Asyncs are enabled by default.
8050
34010f56
NJ
80512002-10-09 Neil Jerram <neil@ossau.uklinux.net>
8052
8053 * vports.c (scm_make_soft_port): Allow vector argument to carry a
8054 6th element: an input waiting thunk.
8055 (sf_input_waiting): New.
8056
9310d6f2
MV
80572002-10-05 Marius Vollmer <mvo@zagadka.ping.de>
8058
8059 * root.c (root_mark): Mark active_asyncs slot.
8060
8061 * async.c (scm_async_click): Set the cdr of a executed handler
8062 cell to SCM_BOOL_F, not SCM_EOL.
8063 (scm_i_queue_async_cell): Queue the cell at the end of the list,
8064 and only if the handler procedure is not already present.
8065 (scm_system_async_mark_for_thread): Initialize cdr of handler cell
8066 with SCM_BOOL_F.
8067 * scmsigs.c (scm_sigaction_for_thread): Likewise.
8068
ac48c719
RB
80692002-10-04 Rob Browning <rlb@defaultvalue.org>
8070
1360a142
RB
8071 * guile.c (main): switch to scm_lt_dlset_preloaded_symbols;
8072
8073 * dynl.c (sysdep_dynl_link): switch to scm_lt_dlhandle,
8074 scm_lt_dlopenext, and scm_lt_dlerror.
8075 (sysdep_dynl_unlink): switch to scm_lt_dlhandle, scm_lt_dlclose,
8076 and scm_lt_dlerror.
8077 (sysdep_dynl_func): switch to scm_lt_dlhandle, scm_lt_dlsym,
8078 and scm_lt_dlerror.
8079 (sysdep_dynl_init): switch to scm_lt_dlinit();
8080
8081 * Makefile.am (libguile_la_LIBADD): switch to use
8082 libguile-ltdl.la.
8083
504d99c5 8084 * numbers.c (scm_integer_expt): (expt 0 1) should be 1.
ac48c719 8085
497092c9
MV
80862002-10-04 Marius Vollmer <mvo@zagadka.ping.de>
8087
8088 * scmsigs.h (scm_sigaction_for_thread): New prototype.
8089 * scmsigs.c (got_signal): Removed.
8090 (signal_handler_cells, signal_handler_threads): New.
8091 (take_signal): Queue the cell of the signal for the specified
8092 thread. Reset the signal handler on systems that don't have
8093 sigaction.
8094 (sys_deliver_signals): Removed.
8095 (close_1): New.
8096 (scm_sigaction_for_thread): Renamed from scm_sigaction and
8097 extended to also set the thread of a signal and allocate a cell
8098 for it. Keep the Scheme name "sigaction". Check that signum is
8099 within range. Also, use SCM_VECTOR_REF instead of SCM_VELTS.
8100 (scm_sigaction): Implement in terms of scm_sigaction_for_thread.
8101 (scm_init_scmsigs): Allocate signal_handler_cells and
8102 signal_handler_threads vectors.
8103
8104 * async.c: Removed GUILE_OLD_ASYNC_CLICK code. Reorganized so
8105 that system asnycs and user asyncs are separated. Reimplemented
8106 system asyncs to work per-thread.
8107
8108 * gc.c (scm_init_gc): Do not use scm_system_async.
8109
8110 * async.h (scm_asyncs_pending, scm_set_tick_rate,
8111 scm_set_switch_rate, scm_system_async_mark_from_signal_handler):
8112 Removed prototypes.
8113 (scm_i_queue_async_cell): New.
8114
8115 * __scm.h (scm_asyncs_pending_p): Removed.
8116 (SCM_ASYNC_CLICK): Check scm_active_asyncs instead of
8117 scm_asyncs_pending_p.
8118
8119 * async.h (scm_system_async_mark_for_thread): New prototype.
8120
8121 * __scm.h: Removed GUILE_OLD_ASYNC_CLICK code.
8122
8123 * root.h (scm_root_state): Added new "active_asyncs" slot.
8124 * root.c (scm_make_root): Initialize it to SCM_EOL.
8125
8126 * coop-defs.h (coop_t): Added new "handle" slot.
8127 * coop-threads.c (all_threads, scm_current_thread,
8128 scm_all_threads, scm_i_thread_root): New.
8129 (scm_threads_init): Add main thread to all_threads.
8130 (scheme_launch_thread): Remove thread from all_threads when it
8131 terminates.
8132 (scm_call_with_new_thread): Initialize handle slot of coop_t
8133 structure and add new thread to all_threads.
8134 (scm_spawn_thread): Likewise.
8135
8136 * threads.h (scm_current_thread, scm_all_threads): New prototypes.
8137 * threads.c (scm_current_thread, scm_all_threads): Register as
8138 primitives.
8139
8140 * dynl.c: Use scm_lt_ prefix for libltdl functions.
8141
480fa28d
NJ
81422002-09-29 Neil Jerram <neil@ossau.uklinux.net>
8143
8144 * script.c (scm_compile_shell_switches): Fix bad spelling of
8145 `explicitly' in comment.
8146
81472002-09-28 Neil Jerram <neil@ossau.uklinux.net>
8148
8149 * posix.c (scm_geteuid, scm_getegid, scm_seteuid, scm_setegid):
8150 Refer to provided? in doc string rather than deprecated feature?.
8151
3553e1d1
GH
81522002-09-24 Gary Houston <ghouston@arglist.com>
8153
8154 * inline.h (scm_double_cell): prevent reordering of statements
8155 with any following code (for GCC 3 strict-aliasing).
8156 * numbers.c (scm_make_real), num2float.i.c (FLOAT2NUM): removed
8157 the earlier version of the reordering prevention.
8158
4ad0814a
HWN
81592002-09-19 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8160
8161 * inline.h (scm_double_cell): move SET_GCMARK set out of if body.
8162
e88e4f2e
HWN
81632002-09-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8164
8165 * gc-malloc.c (scm_gc_register_collectable_memory): more overflow
8166 protection.
8167
1e71eafb
HWN
81682002-09-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8169
8170 * inline.h: include stdio.h
8171
8172 * smob.c (free_print): abort if scm_debug_cell_accesses_p is set
8173
61ef9c1f
HWN
81742002-09-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8175
dac04e9f
HWN
8176 * gc-segment.c (scm_i_make_initial_segment): check user settings
8177 for sanity.
8178
8179 * gc-malloc.c (scm_gc_init_malloc): check user settings for
8180 sanity.
dac04e9f
HWN
8181
8182 * gc-freelist.c (scm_init_freelist): check user settings for sanity.
8183
ffd72400
HWN
8184 * struct.h: change scm_structs_to_free to scm_i_structs_to_free
8185
8186 * gc-malloc.c (scm_gc_register_collectable_memory): use floats;
1e71eafb
HWN
8187 these won't ever wrap around with high memory usage. Thanks to
8188 Sven Hartrumpf for finding this.
ffd72400 8189
5bd4a949
HWN
8190 * gc-freelist.c: include <stdio.h>
8191
61ef9c1f
HWN
8192 * gc-malloc.c: add DEBUGINFO for mtrigger GCs.
8193
ffd0ef3b
MV
81942002-09-01 Marius Vollmer <mvo@zagadka.ping.de>
8195
a27e3d14
MV
8196 * vectors.h (SCM_VECTOR_REF): New.
8197
ffd0ef3b
MV
8198 * snarf.h (SCM_DEFINE_PUBLIC): New.
8199
f8a1712b
MV
82002002-08-30 Marius Vollmer <mvo@zagadka.ping.de>
8201
8202 * socket.c (scm_addr_vector): Added size of address to arguments.
8203 Use it to avoid accessing a non-existent path in a sockaddr_un.
8204 Changed all callers.
8205
7200a36b
HWN
82062002-08-29 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8207
1383773b
HWN
8208 * gc.h: remove DOUBLECELL card flags.
8209
8210 * gc-malloc.c (scm_calloc): try to use calloc() before calling
8211 scm_realloc().
8212
8213 * gc-segment.c (scm_i_initialize_heap_segment_data): remove card
8214 init loop; handle this from scm_init_card_freelist()
8215
8216 * gc-card.c (scm_init_card_freelist): init bit vector here.
8217
7200a36b 8218 * numbers.c (scm_make_real): prevent reordering of statements
8fa5786d 8219 num2float.i.c (FLOAT2NUM): idem
7200a36b 8220
9981de3a
HWN
82212002-08-27 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8222
8223 * eval.h: prepend libguile/ to include path
8224
19647556
MV
82252002-08-26 Marius Vollmer <mvo@zagadka.ping.de>
8226
8227 * script.c (scm_compile_shell_switches): Added "2002" to Copyright
9a5fa6e9 8228 years. Thanks to Martin Grabmüller!
19647556 8229
38d1262a
HWN
82302002-08-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8231
8232 * gc-segment.c (scm_i_get_new_heap_segment): use float in stead of
8233 unsigned numbers for computing minimum heap increment. This
8234 prevents weird results when a a negative minimum increment is
8235 computed.
8236
f800ebfb
MV
82372002-08-24 Marius Vollmer <mvo@zagadka.ping.de>
8238
8239 * gc_os_dep.c: When we have __libc_stack_end, use that directly
19647556 8240 instead of the old tricks.
f800ebfb
MV
8241
8242 * guile-snarf.in: Do not expect the input file to be the first
8243 argument after the optional "-o" option, just pass everything to
8244 the pre-processor without extracting the input file name.
8245
4a5309c9
HWN
82462002-08-23 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8247
8248 * gc-segment.c (scm_i_get_new_heap_segment): Oops. We want segment
8249 length *at* least SCM_MIN_HEAP_SEG_SIZE, not at most.
8250
f2893a25
HWN
82512002-08-22 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8252
8253 * gc.h, gc.c: make scm_cells_allocated unsigned again. Thanks to
8254 Bill Schottstaedt for the bug report
8255
483f518b
MV
82562002-08-20 Marius Vollmer <mvo@zagadka.ping.de>
8257
8258 * print.c (scm_iprin1): Print primitives generics always as
8259 "primitive-generic" even when they have no primitive methods yet.
8260
917adc55
GH
82612002-08-17 Gary Houston <ghouston@arglist.com>
8262
8263 * coop.c (coop_create): removed bogus 2nd argument in scm_malloc
8264 call.
8265
67329a9e
HWN
82662002-08-17 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8267
85835e59 8268 * ports.c (scm_add_to_port_table): small bugfix.
67329a9e
HWN
8269
8270 * mallocs.c (scm_malloc_obj): use scm_gc_malloc in stead of
8271 malloc.
8272
8273 * gc-segment.c (scm_i_get_new_heap_segment): remove cluster cruft:
8274 only use SCM_MIN_HEAP_SEG_SIZE.
8275
8276 * ports.c (scm_add_to_port_table): add backwards compatibility
8277 function
8278
8279 * ports.h: use scm_i_ prefix for port table and port table size.
8280
f07c886a
MD
82812002-08-15 Mikael Djurfeldt <mdj@linnaeus>
8282
8283 * vports.c (scm_make_soft_port): Initialize pt variable.
8284
dc61cbc6
MV
82852002-08-13 Marius Vollmer <mvo@zagadka.ping.de>
8286
8287 * strports.h (scm_c_eval_string_in_module,
8288 scm_eval_string_in_module): New prototypes.
8289 * strports.c (scm_eval_string_in_module): New, but use
8290 "eval-string" as the Scheme name and make second parameter
8291 optional.
8292 (scm_eval_string): Implement using scm_eval_string_in_module.
8293 (scm_c_eval_string_in_module): New.
8294 Thanks to Ralf Mattes for the suggestion!
8295
da220f27
HWN
82962002-08-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8297
be3ff021
HWN
8298 * gc-card.c ("sweep_card"): remove SCM_MISC_ERROR messages: print
8299 message and abort.
8300
8301 * gc-mark.c ("scm_gc_mark_dependencies"): idem.
8302
da220f27
HWN
8303 * ports.c ("scm_new_port_table_entry"): return a boxed SCM in
8304 stead of scm_t_port*. The function now takes a tag argument.
8305
eab1b259
HWN
83062002-08-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8307
8308 * gc.h: add scm_debug_cells_gc_interval to public interface
8309
8310 * gc-card.c ("sweep_card"): set scm_gc_running while sweeping.
8311
8312 * gc.c (scm_i_expensive_validation_check): separate expensive
8313 validation checks from cheap ones.
8314
ba1b2226
HWN
83152002-08-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8316
8317 * read.c (scm_input_error): new function: give meaningful error
8318 messages, and throw read-error
8319
8320 * gc-malloc.c (scm_calloc): add scm_calloc.
8321
39e8f371
HWN
83222002-08-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8323
33138b05
HWN
8324 * tags.h: remove GC bits documentation from the tags table.
8325
39e8f371
HWN
8326 * read.c (INPUT_ERROR): Prepare for file:line:column error
8327 messages for errors in scm_lreadr() and friends.
8328
83292002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8330
8331 * gc-malloc.c (scm_malloc): use scm_realloc() (simplifies
8332 implementation).
8333 (scm_gc_calloc): new function
8334
26e68795 83352002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
402788a9 8336
5f16b897
HWN
8337 * ports.c (scm_new_port_table_entry): init port entry to 0
8338 completely.
402788a9
HWN
8339
8340 * ports.c (scm_new_port_table_entry): change function from
8341 scm_add_to_port_table. This prevents cells with null-pointers from
8342 being exposed to GC.
8343
504d99c5 8344 * vports.c (scm_make_soft_port) strports.c (scm_mkstrport),
402788a9 8345 fports.c (scm_fdes_to_port): Use scm_new_port_table_entry().
c8a1bdc4 8346
504d99c5 8347 * gc.c (scm_gc_stats): add cell-yield and malloc-yield statistic
c2cbcc57
HWN
8348 to gc-stats.
8349
c8a1bdc4
HWN
8350 * numbers.c (big2str): return "0" for 0 iso. ""
8351
c2cbcc57
HWN
8352 * gc-segment.c, gc-malloc.c gc-mark.c, gc-freelist.c, gc-card.c,
8353 private-gc.h: new file
c8a1bdc4
HWN
8354
8355 * gc.c: completely revised and cleaned up the GC. It now uses lazy
8356 sweeping. More documentation in workbook/newgc.text
8357
aea06b34
MV
83582002-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8359
8360 * random.c (rstate_free): Return zero.
8361
35060ae9
DH
83622002-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8363
8364 * environments.c (remove_key_from_alist): Removed.
8365
8366 (obarray_remove): Simplified.
8367
6a535440
SJ
83682002-07-24 Stefan Jahn <stefan@lkcc.org>
8369
8370 * continuations.h: ia64: Include <signal.h> before
8371 <sys/ucontext.h>.
8372
bcbd25b7
DH
83732002-07-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
8374
8375 * modules.c (scm_sym2var): Don't compare SCM values with ==.
8376
26e68795 83772002-07-21 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1d1559ce
HWN
8378
8379 * goops.c (scm_compute_applicable_methods): use
8380 scm_remember_upto_here_1 iso scm_remember_upto_here
8381
8382 * macros.c: include deprecation.h
8383
504d99c5 8384 * vectors.c (scm_vector_move_right_x): remove side effect in
1d1559ce 8385 macro arg.
504d99c5 8386 (scm_vector_move_left_x): idem.
1d1559ce
HWN
8387
8388 * net_db.c, posix.c, socket.c: variable naming: change ans to
8389 result.
8390
8391 * sort.c (scm_merge_vector_x): accept vector as argument
8392 iso. SCM*. This is needed for full GC correctness.
8393
8394 * gc.h: undo previous undocumented changes related to #ifdef
8395 GENGC.
8396
26e68795 83972002-07-20 Han-Wen Nienhuys <hanwen@cs.uu.nl>
34d19ef6
HWN
8398
8399 * *.c: add space after commas everywhere.
8400
8401 * *.c: use SCM_VECTOR_SET everywhere, where a vector is written.
8402 Document cases where SCM_WRITABLE_VELTS() is used.
8403
8404 * vectors.h (SCM_VELTS): prepare for write barrier, and let
8405 SCM_VELTS() return a const pointer
8406 (SCM_VECTOR_SET): add macro.
8407
3063e30a
DH
84082002-07-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
8409
8410 * eval.c (SCM_CEVAL), macros.c (macro_print, scm_makmacro,
8411 scm_sym_macro, scm_macro_type), macros.h (scm_makmacro):
8412 Deprecated the special kind of built-in dynamic syntax transformer
8413 that was inaccurately named "macro". Note: The built-in syntax
8414 transformers that are named "mmacro" or "memoizing-macro" still
8415 exist, and it is these which come much closer to what one would
8416 call a macro.
8417
4c5f8e8f
NJ
84182002-07-13 Neil Jerram <neil@ossau.uklinux.net>
8419
8420 * eval.c (unmemocopy): Fix for
8421 1001-local-eval-error-backtrace-segfaults (unmemoization crash
8422 with internal definitions and local-eval).
8423
4f6f9ae3
GH
84242002-07-12 Gary Houston <ghouston@arglist.com>
8425
8426 * dynl.c: Don't define stub procedures if DYNAMIC_LINKING is not
8427 defined. They don't do anything useful, especially since the
8428 only case where DYNAMIC_LINKING is undefined seems to be
8429 when --with-modules=no is given to configure, which is basically
8430 requesting that the "dynamic linking module" be omitted.
8431
8432 * Makefile.am (libguile_la_SOURCES): move dynl.c from
8433 libguile_la_SOURCES to EXTRA_libguile_la_SOURCES.
8434
8435 * extensions.c (load_extension): check DYNAMIC_LINKING for
8436 scm_dynamic_call.
8437 * init.c (scm_init_guile_1): check DYNAMIC_LINKING for
8438 scm_init_dynamic_linking.
8439
c21935e6
MV
84402002-07-10 Marius Vollmer <mvo@zagadka.ping.de>
8441
8442 * guile.c, iselect.h, net_db.c, posix.c, socket.c: No need to
8443 check for Cygwin when including <winsock2.h>, this is already
8444 check for by configure. Thus, revert change from 2002-07-07.
8445
ee95d597
GH
84462002-07-10 Gary Houston <ghouston@arglist.com>
8447
9540b68f 8448 * eq.c: include <string.h>
ee95d597
GH
8449 * dynl.c: docstring editing.
8450
46732b54
GH
84512002-07-09 Gary Houston <ghouston@arglist.com>
8452
8453 * dynl.c (scm_dynamic_call): docstring editing.
8454
c09d12e0
RB
84552002-07-08 Rob Browning <rlb@defaultvalue.org>
8456
8457 * gc_os_dep.c: HURD fixes.
8458
3f6571eb
MV
84592002-07-07 Marius Vollmer <mvo@zagadka.ping.de>
8460
8461 Crosscompiling and Cygwin fixes by Jan Nieuwenhuizen. Thanks!
8462
8463 * Makefile.am: Override default rule for c-tokenize.$(OBJECT);
8464 this should be compiled for BUILD host.
8465 Override default rule for
8466 guile_filter_doc_snarfage$(EEXECT); this should run on BUILD host.
8467 Add missing $(EXEEXT) to guile_filter_doc_snarfage invocation.
8468 (snarf2checkedtexi): Use GUILE_FOR_BUILD instead of preinstguile.
8469
8470 * guile.c, iselect.h, net_db.c, posix.c, socket.c: Do not include
8471 <winsock2.h> on Cygwin even when we have it.
8472
bd987b8e
DH
84732002-07-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
8474
8475 * __scm.h (SCM_CAUTIOUS), eval.c (scm_eval_args, deval_args,
8476 SCM_CEVAL): Removed compile time option SCM_CAUTIOUS to clean up
8477 the code. Full number of arguments checking of closures is
8478 mandatory now. However, the option to disable the checking has
8479 most probably not been used anyway.
8480
8505e285
DH
84812002-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
8482
bd987b8e
DH
8483 * __scm.h (SCM_RECKLESS), backtrace.c (SCM_ASSERT), debug.c
8484 (scm_debug_options), eval.c (scm_lookupcar, scm_lookupcar1,
8485 scm_badargsp, SCM_CEVAL, SCM_APPLY, scm_map, scm_for_each),
8486 feature.c (scm_init_feature), gsubr.c (scm_gsubr_apply), numbers.c
8487 (scm_logand, scm_logior, scm_logxor, scm_i_dbl2big), srcprop.c
8488 (scm_source_properties, scm_set_source_properties_x,
8489 scm_source_property): Removed compile time option SCM_RECKLESS to
8490 clean up the code. Full number of arguments checking of closures
8491 is mandatory now. However, the option to disable the checking has
8492 most probably not been used anyway.
8505e285
DH
8493
8494 * srcprop.c (scm_source_properties, scm_set_source_properties_x,
8495 scm_source_property): Use !SCM_CONSP instead of SCM_NCONSP.
8496
2ee08a28
GH
84972002-06-30 Gary Houston <ghouston@arglist.com>
8498
732b9327
GH
8499 * dynl.c: Removed all SCM_DEFER_INTS/SCM_ALLOW_INTS, which won't
8500 do anything useful. Added a comment about need for a mutex if
8501 pre-emptive threading is supported.
8502
2ee08a28
GH
8503 * posix.c (scm_convert_exec_args), dynl.c
8504 (scm_make_argv_from_stringlist): static procs: 1) renamed both to
8505 allocate_string_pointers. 2) simplified: don't reallocate the
8506 strings, just make an array of pointers 3) avoid memory leaks on
8507 error 4) let the procedure report errors in its own name.
8508 Consequences: 1) the procedures now assume that SCM strings are
8509 nul-terminated, which should always be the case. 2) Since strings
8510 are not reallocated, it's now possible for strings passed to
8511 dynamic-args-call to be mutated.
8512
c136c920
DH
85132002-06-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
8514
8515 * __scm.h, eval.c, eval.h: Removed compile time option
8516 MEMOIZE_LOCALS to clean up the code. Now, caching of local
8517 variable positions during memoization is mandatory. However, the
8518 option to disable the caching has most probably not been used
8519 anyway.
8520
e540802f
MV
85212002-06-18 Marius Vollmer <mvo@zagadka.ping.de>
8522
8523 * print.c (scm_simple_format): Print missing part of format before
8524 ~% control. Thanks to Daniel Skarda!
8525
4c1ffcdd
MV
85262002-06-01 Marius Vollmer <mvo@zagadka.ping.de>
8527
8528 * mkstemp.c: Added exception notice to license statement.
8529
ba1b077b
MV
85302002-05-22 Marius Vollmer <mvo@zagadka.ping.de>
8531
8dc434c7
MV
8532 * numbers.c (mem2ureal): When returning an inexact zero, make sure
8533 it is represented as a floating point value so that we can change
8534 its sign.
8535
ba1b077b
MV
8536 From John W. Eaton <jwe@bevo.che.wisc.edu>
8537
8538 * numbers.c (idbl2str): Don't omit sign when printing negative zero.
8539
74c58131
TTN
85402002-05-14 Thien-Thi Nguyen <ttn@giblet.glug.org>
8541
8542 * gc_os_dep.c: For I386/OPENBSD, allow for `__i386__'
0926d46e 8543 in addition to `i386'. Thanks to Dale P. Smith.
74c58131 8544
8766d4b5
MV
85452002-05-08 Marius Vollmer <mvo@zagadka.ping.de>
8546
8547 * eq.c (real_eqv): New.
8548 (scm_eqv_p): Use it when comparing reals and complexes.
8549
8550 * numbers.c: Include <string.h>, for strncmp.
8551 (mem2complex): Do not create negative NaNs.
8552 (scm_leq_p, scm_geq_p): Explicitely return #f when comparing a
8553 NaN.
8554 (scm_inexact_to_exact): Signal error when converting a NaN.
74c58131 8555
1d8c3cad
MV
85562002-05-06 Marius Vollmer <mvo@zagadka.ping.de>
8557
8558 * posix.c (scm_putenv): Handle removing variables explicitely by
8559 calling unsetenv.
8560
8561 From John W. Eaton.
74c58131 8562
1d8c3cad
MV
8563 * numbers.h: Conditionally include floatingpoint.h, ieeefp.h, and
8564 nan.h. Provide declarations for scm_inf_p, scm_nan_p, scn_inf,
8565 and scm_nan.
8566 * numbers.c: [SCO && ! HAVE_ISNAN] (isnan): New function.
8567 [SCO && ! HAVE_ISINF] (isinf): New function.
8568 (xisinf, xisnan): New functions.
8569 (IS_INF): Delete.
8570 (isfinite): Define in terms of xisinf.
8571 (scm_inf_p, scm_nan_p): New functions.
8572 (guile_Inf, guile_NaN): New file-scope vars.
8573 (guile_ieee_init): New function.
8574 (scm_inf, scm_nan): New functions.
8575 (idbl2str): Handle Inf and NaN. Remove funny label and
8576 corresponding gotos.
8577 (ALLOW_DIVIDE_BY_ZERO): New macro.
8578 (scm_divide): Allow division by zero to occur if
8579 ALLOW_DIVIDE_BY_ZERO is defined.
8580 Handle bignums and ints as special cases.
8581
8582 Additional stuff by me:
8583
8584 numbers.c (mem2ureal): Recognize "inf.0" and "nan.xxx".
8585 (scm_even_p, scm_odd_p): Treat infinity as even and odd.
8586 (iflo2str): Don't output a '+' for negative numbers or for Inf and
8587 NaN. They will provide their own sign.
8588 (scm_divide): Only allow divides by inexact zeros. Dividing by
8589 exact zeros still signals an errors.
74c58131 8590
7a0c65eb
TTN
85912002-04-22 Thien-Thi Nguyen <ttn@giblet.glug.org>
8592
87b72063 8593 * goops.h (scm_slot_exists_p): Rename from scm_slots_exists_p.
7a0c65eb 8594 * goops.c (scm_slot_exists_p): Rename from scm_slots_exists_p.
504d99c5 8595 (scm_slot_exists_p): Rename from scm_slots_exists_p.
7a0c65eb
TTN
8596 Thanks to Andreas Rottmann.
8597
5e423a39
GH
85982002-04-20 Gary Houston <ghouston@arglist.com>
8599
8600 * removal of unused fields in root state (thanks to Christopher
8601 Cramer for pointing out the disuse.)
8602 * root.h (scm_root_state): removed def_inp, def_outp, def_errp.
1841c44a 8603 (scm_def_inp, scm_def_outp, scm_def_errp): removed.
b6287a25 8604
5e423a39
GH
8605 * root.c (root_mark): don't mark them.
8606 (scm_make_root): don't set them to #f.
8607 * init.c (scm_init_standard_ports): don't initialise with the
8608 default ports.
8609
9d2cce76
MV
86102002-04-17 Marius Vollmer <mvo@zagadka.ping.de>
8611
8612 * Makefile.am (EXTRA_DIST): Added cpp_err_symbols.c and
8613 cpp_sig_symbols.c.
8614
86152002-04-16 Marius Vollmer <mvo@zagadka.ping.de>
8616
8617 * guile-snarf.in: Do not clean input file. This would write to
8618 the $(srcdir) during a VPATH build, which is not allowed. It also
8619 isn't needed since it only works when an output filename has been
8620 specified and in that case we don't need to clean the input file
8621 because the output file will already exist.
8622
6f79b6cc
MV
86232002-03-31 Marius Vollmer <mvo@zagadka.ping.de>
8624
8625 * guile-snarf: Install the trap for removing $cleanfile only when
8626 the value of $cleanfile is actually known.
8627
21550b10
RB
86282002-04-10 Rob Browning <rlb@defaultvalue.org>
8629
8630 * .cvsignore: add versiondat.h and *.c.clean.c.
8631
bc76d628
DH
86322002-03-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
8633
8634 * srcprop.[ch] (scm_c_source_property_breakpoint_p): New
8635 function, replaces macro SRCBRKP.
8636
8637 (SRCBRKP): Deprecated.
8638
8639 * eval.c (SCM_CEVAL): Replaced use of SRCBRKP by call to
8640 scm_c_source_property_breakpoint_p. Removed some use of arg1 as
8641 temporary variable.
8642
5132eef0
DH
86432002-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
8644
8645 * debug.h, eval.c: Deprecated CHECK_ENTRY, CHECK_APPLY and
8646 CHECK_EXIT and removed all references to them.
8647
680516ba
DH
86482002-03-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8649
8650 * debug.h (scm_ready_p, debug_print): Removed declarations.
8651
8652 * eval.c (EVALCELLCAR): Removed.
8653
8654 (SCM_CEVAL): Eliminated label loopnoap. Removed side-effecting
8655 operation from condition.
8656
e2bd68e0
MV
86572002-03-24 Marius Vollmer <mvo@zagadka.ping.de>
8658
8659 * guile-snarf.in: When the output filename is "-", write to
8660 stdout. When no "-o" option is given, use "-" as the output
8661 filename (i.e., stdout). Only 'clean' the inputfile or remove the
8662 output file on error when the output file name is not "-". Define
8663 the preprocessor macro SCM_MAGIC_SNARFER while snarfing.
8664
8665 * Makefile.am (.c.x): Pass "-o $@" to guile-snarf.
8666
ab1f1094
DH
86672002-03-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
8668
8669 * eval.c (SCM_CEVAL, SCM_APPLY): Eliminated labels wrongnumargs
8670 and the corresponding goto statements. Removed redundant code.
8671
42030fb2
DH
86722002-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
8673
8674 * eval.c (SCM_CEVAL): Minimized scope of variable arg2.
8675 Eliminated redundant SCM_IMP check. Exlined call to EVALCAR.
8676 Re-enabled handing of rpsubrs and asubrs.
8677
e050d4f8
DH
86782002-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
8679
8680 * eval.c (SIDEVAL): Removed.
8681
8682 (SCM_CEVAL): Minimized scope of variable orig_sym. Eliminated
8683 goto-labels cdrxnoap, cdrxbegin and nontoplevel_cdrxnoap. Changed
8684 argument checking order for set! to locals, variables and symbols.
8685 Improvements to control structure. Removed some uses of arg1 and
8686 arg2 as temporary variables.
8687
a6d344d3
TTN
86882002-03-15 Thien-Thi Nguyen <ttn@giblet.glug.org>
8689
8690 * guile-snarf.in: Remove "--compat=1.4" support.
8691 Add "-d" and "-D" support.
8692
8693 (deprecated_list): New var.
8694 (compat_mode_clean_xxx): Delete.
8695 (grep_deprecated): New func.
8696 ("main"): If "-d" or "-D", call `grep_deprecated'.
8697
3939e9df
NJ
86982002-03-15 Neil Jerram <neil@ossau.uklinux.net>
8699
387d418c
NJ
8700 * hooks.h: Change scm_t_c_hookype_t everywhere to
8701 scm_t_c_hook_type.
8702
bb2c02f2 8703 Docstring fixes:
a6d344d3 8704
bb2c02f2
NJ
8705 * strings.c (scm_string_p): Change unnecessary `iff' to `if'.
8706
8707 * ports.c (scm_sys_make_void_port): Use `@file'.
8708
8709 * numbers.c (scm_number_p, scm_real_p): Use `otherwise' rather
8710 than `else'.
8711
8712 * macros.c (scm_makmacro): Don't say that the form replaces its
8713 source, because it doesn't.
8714 (scm_makmmacro): Clarify difference between this and scm_makmacro.
8715
8716 * backtrace.c (scm_display_error), filesys.c (scm_umask,
8717 scm_select, scm_basename), goops.c (scm_method_generic_function),
8718 numbers.c (scm_integer_length), posix.c (scm_getgroups, scm_execl,
8719 scm_setlocale, scm_flock), socket.c (scm_shutdown): Correct
8720 spelling mistakes.
8721
3939e9df
NJ
8722 * debug.c (scm_debug_options), eval.c
8723 (scm_eval_options_interface), read.c (scm_read_options): Change
8724 incorrect @var in docstring to @code.
8725
3b3cc781
MV
87262002-03-14 Marius Vollmer <mvo@zagadka.ping.de>
8727
500b0d5b
MV
8728 * unif.c (singp): Use SCM_REALP instead of SCM_SLOPPY_REALP.
8729
3b3cc781
MV
8730 * snarf.h (SCM_SNARF_INIT): Add "^:^" after code so that
8731 guile-snarf can remove trailing non-init code.
8732
8733 * guile-snarf.in (modern_snarf): Remove everything following and
8734 including "^:^" from the output.
8735
dff98306
DH
87362002-03-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
8737
8738 * eval.c (SCM_CEVAL), srcprop.h (SRCBRKP): Eliminated union 't'.
8739
8740 * eval.c (SCM_CEVAL): Exlined call to EVALCAR.
8741
2287fb53
TTN
87422002-03-13 Thien-Thi Nguyen <ttn@giblet.glug.org>
8743
8744 * guile-snarf.in: Update copyright.
8745 Rewrite to internalize error handling.
8746 Add "--compat=1.4" handling.
8747 Add commentary.
8748
8749 * Makefile.am (libpath.h): Use @top_srcdir_absolute@.
8750 (snarfcppopts): New var.
8751 (.c.x): Use $(snarfcppopts). Rework guile-snarf usage.
8752 (.c.doc): Use $(snarfcppopts).
8753
822250a4
TTN
8754 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
8755 continuations.c, debug-malloc.c, debug.c, deprecation.c, dynl.c,
8756 dynwind.c, environments.c, eq.c, error.c, eval.c, evalext.c,
8757 extensions.c, feature.c, filesys.c, fluids.c, fports.c, gc.c,
8758 goops.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
8759 ioext.c, iselect.c, keywords.c, lang.c, list.c, load.c, macros.c,
8760 modules.c, net_db.c, numbers.c, objects.c, objprop.c, options.c,
8761 pairs.c, ports.c, posix.c, print.c, procprop.c, procs.c,
8762 properties.c, ramap.c, random.c, rdelim.c, read.c, regex-posix.c,
8763 root.c, rw.c, scmsigs.c, script.c, simpos.c, socket.c, sort.c,
8764 srcprop.c, stackchk.c, stacks.c, stime.c, strings.c, strop.c,
8765 strorder.c, strports.c, struct.c, symbols.c, threads.c, throw.c,
8766 unif.c, values.c, variable.c, vectors.c, version.c, vports.c,
8767 weaks.c: Retire inclusion guard macro SCM_MAGIC_SNARFER.
8768
b7798e10
DH
87692002-03-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
8770
8771 * eval.c (SCM_CEVAL): Got rid of the last reference to t.lloc.
8772 The next step will be to remove the union 't' and simplify the
8773 code of SCM_CEVAL that way.
8774
04a98cff
NJ
87752002-03-12 Neil Jerram <neil@ossau.uklinux.net>
8776
8777 * iselect.c (collisionp, gnfds, greadfds, gwritefds, gexceptfds,
8778 rreadfds, rwritefds, rexceptfds): Made static.
8779
8780 * gc.c (terminating), fports.c (terminating): Renamed
8781 scm_i_terminating.
8782
16d98032
MV
87832002-03-11 Marius Vollmer <mvo@zagadka.ping.de>
8784
5046250e
MV
8785 * numbers.c (scm_divide): Adapt code from libstdc++/f2c to void
8786 potential overflow problems. Thanks to John W Eaton!
8787
8794207d
MV
8788 * strop.c (string_capitalize_x): Treat characters as unsigned so
8789 that 8-bit chars work. Thanks to David Pirotte!
16d98032 8790
1d15ecd3
DH
87912002-03-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
8792
8793 * eval.c (SCM_CEVAL): Cleaned up the handling of 'slot-ref',
8794 'slot-set!' and 'nil-cond'. Removed some uses of t.arg1, arg2 and
8795 proc as temporary variables. Introduced temporary variables with
8796 hopefully descriptive names for clarification. Replaced SCM_N?IMP
8797 by a more explicit predicate in some places.
8798
87992002-03-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
f12745b6
DH
8800
8801 * eval.c (SCM_CEVAL): Cleaned up the handling of #@dispatch.
8802 Added lots of comments regarding the implementation of #@dispatch.
8803 Changed intra-procedure communication to use t.arg1 instead of
8804 arg2. Removed some uses of t.arg1, t.lloc and proc as temporary
8805 variables. Introduced temporary variables with hopefully
8806 descriptive names for clarification. Replaced SCM_N?IMP by a more
8807 explicit predicate in some places. Use SCM_INSTANCE_HASH instead
8808 of computing the expression explicitly. Eliminate now unused
8809 label nontoplevel_cdrxbegin.
8810
8811 * goops.h (SCM_INSTANCE_HASH): New macro.
8812
8813 * objects.h (SCM_CMETHOD_FORMALS, SCM_CMETHOD_BODY): New macros.
8814
1ebf1566
TTN
88152002-03-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
8816
8817 * Makefile.am (bin_SCRIPTS): Revive this decl, w/ initial element
8818 "guile-snarf" moved back from `noinst_SCRIPTS'.
8819
020c890c
NJ
88202002-03-08 Neil Jerram <neil@ossau.uklinux.net>
8821
58d233cc
NJ
8822 * srcprop.c (scm_set_source_property_x): If SRCPROPS obj already
8823 exists when adding a source property other than those that are
8824 handled explicitly, add the new property to the SRCPROPS obj's
8825 plist.
8826
020c890c
NJ
8827 * debug.h (SCM_MAX_FRAME_SIZE): Remove incorrect comment about use
8828 of SCM_MAX_FRAME_SIZE as a bit mask; it isn't used like this.
8829
8830 * eval.c (SCM_CEVAL): Don't store scm_debug_eframe_size in
8831 debug.status. It isn't needed, and it can overflow the bits
8832 reserved for it (which may lead to a segv or a GC abort).
8833
3f04400d
DH
88342002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8835
8836 * eval.c (SCM_CEVAL): Cleaned up the handling of 'apply'. Removed
8837 side-effecting operations from conditions and macro calls.
8838 Replaced SCM_N?IMP by a more explicit predicate in some places.
8839 Minimized the scope of some variables.
8840
97820583
SJ
88412002-03-02 Stefan Jahn <stefan@lkcc.org>
8842
8843 * convert.i.c: Fixed int <-> long conversions which would have
8844 failed if their sizes were different.
8845
38ace99e
DH
88462002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8847
8848 * eval.c (SCM_CEVAL): Cleaned up the handling of 'if', 'let',
8849 'letrec' and 'set*': Removed some uses of t.arg1, t.lloc and proc
8850 as temporary variables. Removed side-effecting operations from
8851 conditions and macro calls. Introduced temporary variables with
8852 hopefully descriptive names for clarification. Replaced SCM_N?IMP
8853 by a more explicit predicate in some places. Removed code that
8854 was conditionally compiled if SICP was defined - which it never
8855 is.
8856
e5cb71a0
DH
88572002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8858
8859 * eval.c (SCM_CEVAL): Cleaned up the handling of 'cons' and 'do':
8860 Removed some uses of t.arg1 and proc as temporary variables.
8861 Removed side-effecting operations from conditions and macro calls.
8862 Introduced temporary variables with hopefully descriptive names
8863 for clarification. Replaced SCM_N?IMP by a more explicit
8864 predicate in some places.
8865
6a0f6ff3
DH
88662002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8867
8868 * eval.c (scm_badargsp, SCM_CEVAL): Replaced SCM_N?IMP by a more
8869 explicit predicate in some places.
8870
8871 (CHECK_EQVISH): Removed.
8872
8873 (SCM_CEVAL): Removed some uses of t.arg1 and proc as temporary
8874 variables. Removed side-effecting operations from conditions and
8875 macro calls. Introduced temporary variables for clarification.
8876 Sorted if-else-if check for the type of the last form in a list by
8877 frequency. Avoided some unnecessary tail-recursion calls.
8878
228a24ef
DH
88792002-03-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
8880
8881 * gc.c (SCM_HEAP_SEG_SIZE, CELL_UP, CELL_DN, NEXT_DATA_CELL,
8882 init_heap_seg, alloc_some_heap), gc.h (struct scm_cell, struct
8883 scm_t_cell, SCM_CELLPTR, SCM_GC_CARD_SIZE,
8884 SCM_GC_IN_CARD_HEADERP), tags.h (SCM_CELLP): Renamed the struct
8885 scm_cell and all its uses to scm_t_cell in accordance to Guile's
8886 naming scheme for types.
8887
8888 * alist.c (scm_acons), convert.i.c (CTYPES2UVECT,
8889 CTYPES2UVECT_OPTIONAL), coop-threads.c (scm_call_with_new_thread,
8890 scm_spawn_thread), debug.c (scm_make_debugobj), environments.c
8891 (scm_make_environment), eval.c (scm_closure), fports.c
8892 (scm_fdes_to_port), gc.c (scm_deprecated_newcell,
8893 scm_deprecated_newcell2), inline.h (scm_alloc_cell, scm_cell),
8894 list.c (SCM_I_CONS), numbers.c (scm_i_mkbig), pairs.c (scm_cons),
8895 ports.c (scm_void_port), procs.c (scm_c_make_subr, scm_makcclo),
8896 smob.c (scm_make_smob), smob.h (SCM_NEWSMOB), strings.c
8897 (scm_take_str, scm_allocate_string), strports.c (scm_mkstrport),
8898 unif.c (scm_make_uve), variable.c (make_variable), vectors.c
8899 (scm_c_make_vector), vports.c (scm_make_soft_port): Renamed
8900 scm_alloc_cell to scm_cell.
8901
8902 * environments.c (core_environments_observe), gc.c
8903 (scm_deprecated_newcell2), goops.c (wrap_init, scm_wrap_object),
8904 inline.h (scm_alloc_double_cell, scm_double_cell), num2float.i.c
8905 (FLOAT2NUM), numbers.c (scm_make_real), procs.c
8906 (scm_make_procedure_with_setter), smob.h (SCM_NEWSMOB2,
8907 SCM_NEWSMOB3), struct.c (scm_make_struct, scm_make_vtable_vtable),
8908 symbols.c (scm_mem2symbol, scm_mem2uninterned_symbol), weaks.c
8909 (allocate_weak_vector): Renamed scm_alloc_double_cell to
8910 scm_double_cell.
8911
edb810bb
SJ
89122002-02-27 Stefan Jahn <stefan@lkcc.org>
8913
8914 * convert.i.c, convert.c: Better range checking.
8915
8916 * inet_aton.c, fports.c: Commented the inclusion of <winsock2.h>.
8917
1ebf1566 8918 * deprecation.c (vsnprintf): Define to `_vsnprintf' for
edb810bb
SJ
8919 Windows (MinGW).
8920
327d4dd3
TTN
89212002-02-26 Thien-Thi Nguyen <ttn@giblet.glug.org>
8922
8923 * Makefile.am: Update path to pre-inst-guile automake frag.
8924
89d7a92c 89252002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
646052c0
DH
8926
8927 * gc.c (scm_gc_sweep): Make it compile even when deprecated
8928 features are excluded.
8929
89d7a92c 89302002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
bac0e232
DH
8931
8932 * num2integral.i.c (NUM2INTEGRAL): Fixed signedness problem.
8933
4f2716b6
GH
89342002-02-25 Gary Houston <ghouston@arglist.com>
8935
8936 * convert.c: include <string.h> for convert_i.c.
8937
46151112
RB
89382002-02-24 Rob Browning <rlb@defaultvalue.org>
8939
8940 * .cvsignore: add stamp-h1.
8941
cd328b4f
NJ
89422002-02-21 Neil Jerram <neil@ossau.uklinux.net>
8943
8944 * unif.c (scm_array_to_list): Correct name, which had been
8945 accidentally changed to scm_t_arrayo_list!
8946
c709de7f
MD
89472002-02-20 Mikael Djurfeldt <mdj@linnaeus>
8948
8949 * gc.c (scm_gc_sweep): Print an error message when aborting due to
8950 underflowing scm_mallocated.
8951
c1965d31
MV
89522002-02-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8953
8954 * gc.h, gc.c (scm_must_malloc, scm_must_realloc, scm_must_strdup,
8955 scm_must_strndup, scm_done_malloc, scm_done_free, scm_must_free):
8956 Reimplemented using the new scm_gc_malloc, etc., functions and
8957 deprecated.
8958
b606945b
TTN
89592002-02-11 Thien-Thi Nguyen <ttn@giblet.glug.org>
8960
8961 * Makefile.am (bin_PROGRAMS): Move `guile_filter_doc_snarfage'
8962 to `noinst_PROGRAMS'.
8963 (bin_SCRIPTS): Move all values to `noinst_SCRIPTS'; delete.
8964 (noinst_PROGRAMS, noinst_SCRIPTS): New.
8965
7c686ba8
MV
89662002-02-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8967
8968 * gc.h, gc.c (scm_gc_sweep): Issue deprecation warning when
8969 non-zero is returned from a port or smob free function.
8970 (scm_malloc, scm_realloc, scm_strndup, scm_strdup,
8971 scm_gc_register_collectable_memory,
8972 scm_gc_unregister_collectable_memory, scm_gc_malloc,
8973 scm_gc_realloc, scm_gc_free, scm_gc_strndup, scm_gc_strdup): New.
8974
8975 * backtrace.c, continuations.c, convert.i.c, coop-threads.c,
8976 debug-malloc.c, dynl.c, environments.c, environments.h,
8977 extensions.c, filesys.c, fports.c, gc.c, gc.h, gh_data.c, goops.c,
8978 guardians.c, hooks.c, init.c, keywords.c, load.c, numbers.c,
8979 ports.c, posix.c, procs.c, rdelim.c, regex-posix.c, root.c,
8980 smob.c, stime.c, strings.c, struct.c, struct.h, symbols.c, unif.c,
8981 vectors.c, weaks.c: Use scm_gc_malloc/scm_malloc and
8982 scm_gc_free/free instead of scm_must_malloc and scm_must_free, as
8983 appropriate. Return zero from smob and port free functions.
8984
8985 * debug-malloc.c (scm_malloc_reregister): Handle "old == NULL".
8986
8987 * deprecation.h, deprecation.c: Reimplemented to allow deprecation
8988 messages while the GC is running.
8989 (scm_c_issue_deprecation_warning_fmt): New.
8990
8991 * fports.c (scm_setvbuf): Reset read buffer to saved values when
8992 it is pointing to the putback buffer.
8993
66adc0a6
TTN
89942002-02-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
8995
8996 * gsubr.c (create_gsubr): On "too many args" error,
8997 also display arg count and name. Thanks to Bill Schottstaedt.
8998
0187b4f4
TTN
89992002-02-05 Thien-Thi Nguyen <ttn@giblet.glug.org>
9000
9001 * Makefile.am: Include $(top_srcdir)/pre-inst-guile.am.
9002
9003 (bin_SCRIPTS): Remove guile-snarf-docs-texi.
9004 (alldotdocfiles, snarf2checkedtexi, dotdoc2texi): New vars.
9005 (guile.texi, guile-procedures.texi): Use $(dotdoc2texi).
9006
9007 * guile-snarf-docs-texi.in: Bye bye.
9008
402e687c
MV
90092002-02-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9010
9011 * symbols.c (scm_make_symbol): Fix typo in docstring.
9012
9013 * symbols.h (scm_mem2uninterned_symbol, scm_symbol_interned_p,
9014 scm_make_symbol): New prototypes.
9015
319b98ed
MV
90162002-02-03 Marius Vollmer <mvo@zagadka.ping.de>
9017
9018 * symbols.h (SCM_SET_SYMBOL_HASH): Removed.
9019 (SCM_SYMBOL_INTERNED_P): New.
9020 * symbols.c (scm_symbol_hash): Use scm_ulong2num instead of
9021 SCM_MAKINUM since hash values can well be bignums.
9022 (scm_mem2symbol): Only use hash values below SCM_T_BITS_MAX/2.
9023 This signals a interned symbol.
9024 (scm_mem2uninterned_symbol, scm_symbol_interned_p,
9025 scm_make_symbol): New.
0187b4f4 9026
319b98ed
MV
9027 * print.c (scm_iprin1): Print uninterned symbols unreadably.
9028
34472dfe
TTN
90292002-02-02 Thien-Thi Nguyen <ttn@giblet.glug.org>
9030
9031 * __scm.h (HAVE_UINTPTR_T): Only define if UINTPTR_T attributes
9032 are defined: UINTPTR_MAX, INTPTR_MAX, INTPTR_MIN.
0187b4f4 9033 Thanks to Dave Love.
34472dfe 9034
1b39c2e3
MV
90352002-01-31 Marius Vollmer <mvo@zagadka.ping.de>
9036
9037 * symbols.c (scm_gensym): Use " g" as default prefix, not "g".
319b98ed 9038 This might help to make unintended clashes less likely.
1b39c2e3
MV
9039 (scm_string_to_symbol): Protect the string until the symbols is
9040 created.
9041
1fa86ca5
SJ
90422002-01-31 Stefan Jahn <stefan@lkcc.org>
9043
9044 * convert.c, convert.h, convert.i.c: New files containing C
34472dfe 9045 array to Scheme conversion helpers meant to be replacement
1fa86ca5
SJ
9046 functions for the deprecated gh interface.
9047
9048 * Makefile.am: Setup rules for new `convert.*' files.
9049
af68e5e5
SJ
90502002-01-28 Stefan Jahn <stefan@lkcc.org>
9051
9052 * symbols.c (scm_c_symbol2str): New function, replacement for
9053 `gh_scm2newsymbol()'.
9054
34472dfe 9055 * strings.c (scm_c_substring2str): New function. Proper
af68e5e5
SJ
9056 replacement for `gh_get_substr()'.
9057
9058 * socket.c: Include `stdint.h' if available for the `uint32_t'
9059 declaration.
9060
504d99c5 9061 * scmsigs.c (scm_sigaction): Initialize `chandler' (inhibits
af68e5e5
SJ
9062 compiler warning).
9063
9064 * backtrace.c: Include `lang.h' for GUILE_DEBUG conditional.
9065
c96d76b8 90662002-01-22 Neil Jerram <neil@ossau.uklinux.net>
34472dfe 9067
c96d76b8 9068 Other changes unrelated to Elisp...
34472dfe 9069
c96d76b8
NJ
9070 * eval.c (scm_m_if): Use s_if rather than repeating string literal
9071 "if".
9072 (comments): Fix a few typos.
9073 (scm_for_each): Add parentheses around oddly unparenthesized
9074 if/while conditions.
9075
9076 * read.c (scm_read_opts): Add full stop at end of doc for
9077 `keywords' option.
9078
9079 * script.c (scm_compile_shell_switches): Use scm_str2symbol
9080 instead of gh_symbol2scm.
9081
9082 * srcprop.h (SRCPROPBRK): Return C type rather than SCM.
9083 (SRCBRKP): Use SRCPROPBRK rather than duplicating its logic.
9084
9085 * srcprop.c (scm_srcprops_to_plist, scm_source_property): Change
9086 SRCPROPBRK (x) to SCM_BOOL (SRCPROPBRK (x)).
9087
9088 First batch of changes for Elisp support...
9089
9090 * alist.c, async.c, boolean.c, dynl.c, eval.c, filesys.c,
9091 fluids.c, list.c, load.c, options.c, posix.c, print.c, sort.c,
9092 throw.c, vectors.c, weaks.c: Add #include for lang.h.
9093
9094 * eval.c, eval.h, init.c, lang.c, lang.h: Use SCM_ENABLE_ELISP to
9095 conditionalize compilation and initialization of Elisp support
9096 function.
34472dfe 9097
c96d76b8
NJ
9098 * alist.c (scm_assq, scm_assv, scm_assoc), async.c
9099 (scm_asyncs_pending, scm_run_asyncs, noop), backtrace.c
9100 (scm_set_print_params_x), dynl.c (scm_make_argv_from_stringlist),
9101 filesys.c (fill_select_type, retrieve_select_type), fluids.c
9102 (scm_swap_fluids, scm_swap_fluids_reverse), list.c (scm_null_p,
9103 scm_ilength, scm_append_x, scm_last_pair, scm_reverse,
9104 scm_reverse_x, scm_list_ref, scm_list_set_x, scm_list_cdr_set_x,
bbd26b5a
NJ
9105 scm_c_memq, scm_memv, scm_member), load.c (scm_search_path),
9106 options.c (change_option_setting, scm_options), posix.c
9107 (environ_list_to_c), print.c (scm_iprlist), throw.c
9108 (scm_exit_status), vectors.c (scm_vector), weaks.c
9109 (scm_weak_vector): Use SCM_NULL_OR_NIL_P instead of SCM_NULLP.
c96d76b8
NJ
9110
9111 * boolean.c (scm_not): Use `SCM_FALSEP || SCM_NILP' instead of
9112 just SCM_FALSEP.
34472dfe 9113
c96d76b8
NJ
9114 * boolean.c (scm_boolean_p): Use `SCM_BOOLP || SCM_NILP' instead
9115 of just SCM_BOOLP.
9116
9117 * eval.c (scm_lisp_nil, scm_lisp_t, s_nil_ify, scm_m_nil_ify,
9118 s_t_ify, scm_m_t_ify, s_0_cond, scm_m_0_cond, s_0_ify,
9119 scm_m_0_ify, s_1_ify, scm_m_1_ify): Removed.
9120 (scm_m_atfop): Support function aliasing. Support both function
9121 args, which need transformation, and macro args, which do not.
9122 Add explanatory comments.
9123 (SCM_CEVAL): In switch cases for SCM_IM_AND, SCM_IM_COND,
9124 SCM_IM_DO, SCM_IM_IF and SCM_IM_OR, add `|| SCM_NILP' to existing
9125 checks for SCM_FALSEP. In switch case for SCM_IM_NIL_COND, use
9126 SCM_NULLP || SCM_NILP instead of checks against (removed)
9127 scm_lisp_nil. Removed switch cases for SCM_IM_NIL_IFY,
9128 SCM_IM_T_IFY, SCM_IM_0_COND, SCM_IM_0_IFY, SCM_IM_1_IFY.
9129
9130 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
9131 scm_m_while, scm_nil_eq): Commented out; I don't think we need
9132 these, but I don't want to remove them yet, just in case.
9133 (scm_init_lang): Define `%nil' variable on Scheme level to hold
9134 Elisp nil value.
9135
9136 * lang.h (SCM_NILP): Test against Elisp nil value instead of
9137 against (removed) scm_lisp_nil.
9138 (SCM_NILNULLP, SCM_NIL2EOL, SCM_EOL2NIL): Commented out.
9139 (SCM_NULL_OR_NIL_P): New.
9140
9141 * list.c (scm_append): Use SCM_VALIDATE_NULL_OR_NIL instead of
9142 SCM_VALIDATE_NULL.
9143
9144 * print.c (scm_isymnames): Fix comment. Remove #@nil-ify,
9145 #@t-ify, #@0-cond, #@0-ify, #@1-ify. Add #nil (for SCM_ELISP_NIL
9146 value).
9147
9148 * sort.c (scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
9149 scm_sort_x, scm_sort, scm_stable_sort_x, scm_stable_sort): Use
9150 SCM_NULL_OR_NIL_P instead of SCM_NULLP. In constructions like `if
9151 (SCM_NULLP (x)) return SCM_EOL;', return x rather than SCM_EOL.
9152
9153 * tags.h (SCM_IM_NIL_IFY, SCM_IM_T_IFY, SCM_IM_0_COND,
9154 SCM_IM_0_IFY, SCM_IM_1_IFY): Removed.
9155 (SCM_IM_BIND, SCM_IM_DELAY, SCM_IM_CALL_WITH_VALUES, SCM_UNBOUND):
9156 Numbering shifted down accordingly.
9157 (SCM_ELISP_NIL): New IFLAG.
9158
9159 * validate.h (SCM_VALIDATE_NULL_OR_NIL): New.
34472dfe 9160
a392ee15
DH
91612002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9162
9163 * eval.c: Removed outdated references to "everr". Improved some
9164 comments.
9165
9166 (scm_deval_args, deval_args): Renamed scm_deval_args to
9167 deval_args, since it is not part of the interface.
9168
9169 (SCM_CEVAL): Added (maybe somewhat verbose) comment. Avoid to
9170 use references to debug.vect[0] before it exists. Add parentheses
9171 to switch statement.
9172
9173 * goops.h: Added local emacs variables.
9174
24933780
DH
91752002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9176
9177 * eval.[ch] (scm_deval_args): Made static.
9178
9179 * srcprop.c (scm_source_property): Remove redundant SCM_IMP
9180 test.
9181
9182 * strings.c (scm_c_string2str): Clarified comment. Replaced
9183 THINKME by FIXME for uniformness. Removed question about whether
9184 arguments need to be protected from garbage collection: Arguments
9185 must be protected as any other variable.
9186
f9450cdb
DH
91872002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9188
9189 * procs.h (SCM_CLOSURE_BODY): New Macro.
9190
9191 * debug.c (scm_procedure_name, scm_procedure_source), eval.c
9192 (SCM_CEVAL, SCM_APPLY), goops.c (scm_sys_initialize_object,
9193 get_slot_value, set_slot_value), procs.c
9194 (scm_procedure_documentation), sort.c (closureless), stacks.c
9195 (get_applybody): Replace SCM_CDR (SCM_CODE (...)) by
9196 SCM_CLOSURE_BODY.
9197
9198 * sort.c (closureless): Prefer !SCM_FOOP over SCM_NFOOP.
9199
5dc64f64
MV
92002001-12-26 Marius Vollmer <mvo@zagadka.ping.de>
9201
9202 * Makefile.am (guile-procedures.txt): When we don't have makeinfo,
9203 use "cp" instead.
9204
197ee3d3
MV
92052001-12-16 Marius Vollmer <mvo@zagadka.ping.de>
9206
9207 * stacks.c, stacks.h (scm_t_stackype): Renamed to scm_stack_type
9208 everywhere.
9209
9210 * continuations.c (scm_make_continuation): Do not retain the
9211 throw_value when the continuation is invoked.
9212
4d4528e7
SJ
92132001-12-08 Stefan Jahn <stefan@lkcc.org>
9214
9215 * strings.c (scm_c_string2str): New function. Converts a
34472dfe 9216 given Scheme string into a C string. Also put in two
4d4528e7
SJ
9217 THINKME's regarding the malloc policy for the missing converter
9218 routines.
9219
98347362
NJ
92202001-12-01 Neil Jerram <neil@ossau.uklinux.net>
9221
9222 * gh_data.c (gh_module_lookup): Use scm_str2symbol rather than
9223 gh_symbol2scm.
9224
1fc8902f
DH
92252001-11-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
9226
9227 * gc.h (SCM_GC_CELL_WORD, SCM_GC_CELL_OBJECT,
9228 SCM_GC_SET_CELL_WORD, SCM_GC_SET_CELL_OBJECT): New macros.
9229
9230 (SCM_GC_CELL_TYPE, SCM_CELL_WORD, SCM_CELL_OBJECT,
9231 SCM_SET_CELL_WORD, SCM_SET_CELL_OBJECT, SCM_FREE_CELL_CDR,
9232 SCM_GC_SET_CELL_OBJECT): Express in terms of SCM_GC_CELL_*
9233 macros.
9234
9235 (SCM_FREE_CELL_P): Express in terms of SCM_GC_CELL_TYPE.
9236
9237 * inline.h (scm_alloc_cell, scm_alloc_double_cell): Use
9238 SCM_GC_CELL_* macros when accessing free cells.
9239
4878beec
MV
92402001-11-25 Marius Vollmer <mvo@zagadka.ping.de>
9241
9242 * vectors.h (SCM_MAKE_VECTOR_TAG): New.
34472dfe 9243 * unif.h (SCM_MAKE_BITVECTOR_TAG, SCM_MAKE_UVECTOR_TAG): New.
4878beec
MV
9244 * symbols.h (SCM_MAKE_SYMBOL_TAG): New.
9245 * strings.h (SCM_MAKE_STRING_TAG): New.
9246 * procs.h (SCM_MAKE_CCLO_TAG): New.
9247 * numbers.h (SCM_MAKE_BIGNUM_TAG): New.
9248
9249 * goops.h: Replaced SCM_DEBUG_DEPRECATED with
9250 !SCM_ENABLE_DEPRECATED.
9251
9252 * async.c, async.h (scm_system_async_mark_from_signal_handler):
9253 New.
9254
9255 * scmsigs.c (scm_take_signal): Removed all code that assumes that
9256 signal handlers are allowed to divert the flow of control. Call
9257 scm_system_async_mark_from_signal_handler instead of
9258 scm_system_async_mark.
9259
9260
9261 Deprecated SCM_NEWCELL and SCM_NEWCELL2. Added scm_alloc_cell and
9262 scm_alloc_double_cell in their place.
34472dfe 9263
4878beec
MV
9264 * gc.h (SCM_GC_SET_ALLOCATED, scm_debug_newcell,
9265 scm_debug_newcell2, scm_tc16_allocated): Removed from header.
9266 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
9267 (SCM_NEWCELL, SCM_NEWCELL2): Implement in terms of
9268 scm_deprecated_newcell and scm_deprecated_newcell2.
9269
9270 gc.c (scm_tc16_allocated): Only define when including deprecated
9271 features.
9272 (scm_debug_newcell, scm_debug_newcell2): Removed.
9273 (scm_init_storage): Do not initialize scm_tc16_allocated.
9274 (scm_init_gc): Do it here.
9275 (allocated_mark): New, from old code.
9276 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
34472dfe 9277
4878beec 9278 * inline.c, inline.h: New files.
34472dfe 9279 * Makefile.am: Added them in all the right places.
4878beec 9280
34472dfe 9281 * _scm.h: Include "libguile/inline.h".
4878beec
MV
9282
9283 * alist.c, coop-threads.c, debug.c, environments.c, eval.c,
9284 fports.c, gh_data.c, goops.c, guardians.c, lang.c, list.c,
9285 num2float.i.c, numbers.c, pairs.c, ports.c, print.c, procs.c,
9286 smob.c, smob.h, strings.c, strports.c, struct.c, symbols.c,
9287 unif.c, variable.c, vectors.c, vports.c, weaks.c: Replaced
9288 SCM_NEWCELL and SCM_NEWCELL2 with scm_alloc_cell and
9289 scm_alloc_double_cell, respectively.
9290
d2bc7fae
MV
92912001-11-23 Marius Vollmer <mvo@zagadka.ping.de>
9292
9293 * modules.c (scm_c_use_module): Adapt to changes to
9294 `process-use-modules'.
9295
5eec27e9
DH
92962001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
9297
9298 * numbers.c (scm_divide): Fix more division by zero errors.
9299
8978878f
GH
93002001-11-21 Gary Houston <ghouston@arglist.com>
9301
9302 * Makefile.am (OMIT_DEPENDENCIES): removed, since it seems to be
9303 obsolete. autogen.sh says:
9304 invalid unused variable name: `OMIT_DEPENDENCIES'
9305
164826d3
DH
93062001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
9307
9308 * numbers.c (scm_divide): Fix (/ 0). Thanks to Keith Wright for
9309 reporting the bug.
9310
84aff7a7
MV
93112001-11-21 Marius Vollmer <mvo@zagadka.ping.de>
9312
9313 * Makefile.am (install-exec-hook): Prepend $(DESTDIR) to filename.
9314 Thanks to Eric Gillespie, Jr!
34472dfe 9315
6063dc1d
SJ
93162001-11-21 Stefan Jahn <stefan@lkcc.org>
9317
34472dfe
TTN
9318 * win32-socket.c (getservent, setservent, endservent,
9319 getprotoent, setprotoent, endprotoent): New functions.
6063dc1d
SJ
9320 Appropriate replacements for M$-Windows.
9321
9322 * numbers.c (SIZE_MAX, PTRDIFF_MAX, PTRDIFF_MIN): Reintroduced
9323 these definitions for GUILE_DEBUG.
9324
9325 * net_db.c: Include "win32-socket.h" if compiling with a native
34472dfe
TTN
9326 M$-Windows compiler. Include some pieces of code (protoent and
9327 servent interface) protected by HAVE_* macros when using a
6063dc1d
SJ
9328 native M$-Windows compiler.
9329
351982f6
MV
93302001-11-20 Marius Vollmer <mvo@zagadka.ping.de>
9331
9332 * modules.c (scm_c_export): Do nothing when the first argument is
9333 already the terminating NULL. Thanks to Han-Wen Nienhuys!
9334
849038b5
TTN
93352001-11-20 Thien-Thi Nguyen <ttn@glug.org>
9336
9337 * Makefile.am (libpath.h): In SCM_BUILD_INFO,
9338 also include `buildstamp'.
9339
5c790b44
RB
93402001-11-18 Rob Browning <rlb@defaultvalue.org>
9341
9342 * version.c
9343 (s_scm_major_version): use SCM_MAJOR_VERSION.
9344 (s_scm_minor_version): use SCM_MINOR_VERSION.
9345 (s_scm_micro_version): use SCM_MICRO_VERSION.
9346 (s_scm_version): use SCM_MAJOR_VERSION, SCM_MINOR_VERSION, and
9347 SCM_MICRO_VERSION.
9348
9349 * version.h.in
9350 (SCM_MAJOR_VERSION): renamed from SCM_GUILE_MAJOR_VERSION.
9351 (SCM_MINOR_VERSION): renamed from SCM_GUILE_MINOR_VERSION.
9352 (SCM_MICRO_VERSION): renamed from SCM_GUILE_MICRO_VERSION.
9353
694a9bb3
NJ
93542001-11-18 Neil Jerram <neil@ossau.uklinux.net>
9355
9356 * vectors.c (scm_vector_move_left_x, scm_vector_move_right_x):
9357 Rewrite docstrings without reference to substring-move-left/right,
9358 since the latter no longer exist.
9359
302c12b4
DH
93602001-11-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
9361
9362 * eval.c: Removed bogus comment about acros.
9363
9364 (scm_unmemocar): Use !SCM_CONSP instead of SCM_IMP.
9365 Minimize scope of local variable. Eliminate dependency on
9366 macro DEBUG_EXTENSIONS.
9367
9368 (s_splicing): New error message string.
9369
9370 (scm_m_body): Issue 'bad body' message rather than 'missing
9371 expression' message.
9372
9373 (scm_m_quote): Eliminate unnecessary copying.
9374
9375 (scm_m_lambda, scm_m_letstar, scm_m_letrec, scm_m_let): Leave the
9376 checking of the body to scm_m_body.
9377
9378 (scm_m_do): Move comment to function header. Rename arg1 to
9379 binding. Made the code a bit easier to read.
9380
9381 (evalcar): Removed.
9382
9383 (iqq): Added a comment. Changed the depth parameter to
9384 unsigned. Use size_t for vector lengths. Make sure vector object
9385 is gc protected as long as its contents are read. Add some syntax
9386 checks. Get rid of unnecessary SCM_IMP test. Clean up the
9387 control structure a bit.
9388
9389 (scm_m_delay): Added comment about the implementation of
9390 scm_m_delay.
9391
9392 (scm_m_define): Add comment about guile's currying define
9393 syntax. Renamed 'proc' to 'name'. Eliminate dependency on macro
9394 DEBUG_EXTENSIONS. Simplified code a bit. Eliminate SICP code.
9395
9396 (scm_m_letrec1): Removed. Part of the functionality is taken
9397 over by the new function 'transform_bindings'.
9398
9399 (transform_bindings): New function. Takes over some of the
9400 functionality of removed function 'scm_m_letrec1', namely to split
9401 a list of bindings into a reversed list of variables and a list of
9402 initializers.
9403
9404 (scm_m_letrec): Call 'transform_bindings'.
9405
9406 (scm_m_let): Minimized scope of local variables. Renamed 'proc'
9407 to 'temp' and 'arg1' to 'binding'. Eliminated redundant SCM_NIMP
9408 test. Use 'transform_bindings'. Fixed scoping error with named
9409 let (Thanks to Aubrey Jaffer for reporting the bug and to Neil
9410 Jerram for suggesting the fix). Cleaned up the control structure
9411 a bit.
9412
9413 (scm_m_expand_body): Use 'transform_bindings'. Eliminated
9414 unnecessary consing. Eliminated unnecessary
9415 SCM_DEFER/ALLOW_INTS.
9416
9417 (SCM_CEVAL): Un-obfuscated some loops.
9418
cecb4a5e
NJ
94192001-11-16 Neil Jerram <neil@ossau.uklinux.net>
9420
8f85c0c6
NJ
9421 * gc.h (scm_unhash_name): Old declaration removed.
9422
9423 * eval.c (s_scm_eval): Change @var{primitive-eval} to
9424 @code{primitive-eval}.
9425
9426 * feature.c, vectors.c, net_db.c, unif.c, weaks.c, struct.c,
9427 version.c, alist.c, ports.c, ramap.c, unif.c, strings.c, list.c:
9428 Change @deffnx lines in docstrings to say {Scheme Procedure}
9429 rather than primitive or procedure.
9430
9431 * posix.c (scm_execl), filesys.c (scm_close), unif.c
9432 (scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
9433 scm_bit_set_star_x, scm_bit_invert_x), ramap.c (scm_array_fill_x,
9434 scm_array_for_each, scm_array_index_map_x), vectors.c (scm_vector,
9435 scm_make_vector, scm_vector_to_list, scm_vector_fill_x), strop.c
9436 (scm_string_split, scm_string_ci_to_symbol), strings.c
9437 (scm_string_p), sort.c (scm_merge), print.c (scm_newline),
9438 macros.c (scm_macro_type), alist.c (scm_acons, scm_assq):
9439 Docstring fixes and improvements reflecting edits that have been
9440 made in the reference manual source.
9441
9442 * objprop.c (scm_object_properties, scm_set_object_properties_x,
9443 scm_object_property, scm_set_object_property_x): Remove invalid
9444 @deffnx lines for corresponding procedure property primitives.
9445
cecb4a5e
NJ
9446 These changes add a @deffnx C function declaration and function
9447 index entries for each Guile primitive to the copy of the doc
9448 snarf output that is used for reference manual synchronization.
9449 Online help is unchanged.
849038b5 9450
cecb4a5e
NJ
9451 * snarf.h (SCM_SNARF_DOCS): Output primitive's C function name.
9452 (SCM_DEFINE, SCM_DEFINE1, SCM_REGISTER_PROC): Supply to C function
9453 name to SCM_SNARF_DOCS.
849038b5 9454
cecb4a5e
NJ
9455 * guile-snarf-docs-texi.in: Pass the shell script's arguments into
9456 snarf-check-and-output-texi.
9457
9458 * Makefile.am (guile-procedures.texi): New rule.
9459 (BUILT_SOURCES, guile.texi, guile-procedures.txt, CLEANFILES):
9460 Changed so that the last stage of doc snarfing is now performed
9461 twice, once to produce guile-procedures.txt for online help, and
9462 once to produce guile.texi for reference manual synchronization.
9463
ddea3325
DH
94642001-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
9465
9466 * eval.c (RETURN): Wrap in do{}while(0) in order to make it
9467 safely usable as a single statement followed by a ';', for example
9468 in an if statement.
9469
9470 (SCM_CEVAL, SCM_APPLY): Clean up code using 'RETURN'.
9471
72dd0a03
NJ
94722001-11-13 Neil Jerram <neil@ossau.uklinux.net>
9473
9474 * random.c (scm_random_solid_sphere_x,
9475 scm_random_hollow_sphere_x): Correct "shere" typos.
9476
9477 * hashtab.c (scm_hash_fold): Add missing apostrophe to docstring.
9478
9479 * version.c (scm_version): Update docstring to include
9480 `micro-version'.
9481
6558eda6
MV
94822001-11-13 Marius Vollmer <mvo@zagadka.ping.de>
9483
409b8588
MV
9484 * modules.c (scm_c_export): Call va_end after collecting the
9485 symbols.
9486
adb8c0f2
MV
9487 * strop.h, strop.c (scm_substring_move_left_x,
9488 scm_substring_move_right_x): Removed.
9489
6558eda6
MV
9490 * __scm.h (HAVE_UINTPTR_T, HAVE_PTRDIFF_T, HAVE_LONG_LONG,
9491 HAVE_LONG_LONGS): Define to "1" when defining them, to mirror what
9492 configure does.
9493
5d8fc640
MV
94942001-11-12 Marius Vollmer <mvo@zagadka.ping.de>
9495
9496 * numbers.c: Document macros to define when including
9497 num2integral.i.c. MAX_VALUE and MIN_VALU are no longer used, we
9498 now rely on SIZEOF_ macros that have been figured out at
9499 configure time.
9500
9501 * num2integral.i.c: Adapt to new interface.
9502 (NUM2INTEGRAL): Test whether a fixnum can be represented in the
9503 target type by casting it and checking whether it is still the
9504 same. Do not try to handle bignums for integral types that are
9505 smaller than fixnums. When handling bignums, collect the
9506 magnituse first into a unsigned type, and correctly check for
9507 overflow.
9508 (INTEGRAL2BIG): Do not use MIN_VALUE explicitely by observing that
9509 only -MIN_VALUE can still be negative of all negative numbers (in
9510 twos-complement).
9511
849038b5 9512 * tags.h (SIZEOF_SCM_T_BITS): Define it appropriately.
5d8fc640
MV
9513
9514 * __scm.h: Define HAVE_UINTPTR_T, HAVE_PTRDIFF_T and
9515 HAVE_LONG_LONG depending on whether their size is non-zero.
9516
d6b8cf11
TTN
95172001-11-11 Thien-Thi Nguyen <ttn@glug.org>
9518
9519 * strop.c (scm_string_null_p): Docfix; nfc.
9520 Thanks to Scott Lenser.
9521
9401323e
NJ
95222001-11-07 Neil Jerram <neil@ossau.uklinux.net>
9523
9524 * extensions.c (scm_load_extension): Canonicalize docstring
9525 whitespace.
9526
9527 * unif.c (scm_uniform_array_write), ports.c
9528 (scm_current_output_port, scm_force_output), dynwind.c
9529 (scm_dynamic_wind), scmsigs.c (scm_setitimer, scm_getitimer),
9530 filesys.c (scm_open, scm_lstat), struct.c
9531 (scm_make_struct_layout), random.c (scm_random,
9532 scm_random_solid_sphere_x, scm_random_hollow_sphere_x, strop.c
9533 (scm_i_index): Remove superfluous whitespace from end of docstring
9534 lines.
9535
9536 * filesys.c (scm_select), guardians.c (scm_guardian_greedy_p),
9537 strings.c (scm_make_string), variable.c (scm_make_variable,
9538 scm_make_undefined_variable, scm_variable_p, scm_variable_set_x,
9539 scm_variable_bound_p), scmsigs.c (scm_setitimer, scm_getitimer),
9540 posix.c (scm_crypt), struct.c (scm_make_vtable_vtable), hashtab.c
9541 (scm_hash_fold), ports.c (scm_port_for_each): Remove superfluous
9542 newline at end of docstrings.
9543
9544 * modules.c (scm_set_current_module): Add missing newline to
9545 docstring.
9546
b4e15479
SJ
95472001-11-07 Stefan Jahn <stefan@lkcc.org>
9548
9549 * win32-socket.[ch]: New files. Defines Winsock-API error codes
9550 and makes them available through Guile. That is because the
9551 Winsock-API does not store its errors in `errno' and thus cannot
9552 return error messages via `strerror (errno)'.
9553
9554 * socket.c (scm_init_socket): Initialize `win32-socket' part
9555 here under M$-Windows.
9556
d6b8cf11 9557 * numbers.h: Added missing declaration of
b4e15479
SJ
9558 `scm_sys_check_number_conversions()'.
9559
9560 * error.c: Local definition of SCM_I_STRERROR and SCM_I_ERRNO
9561 and use in `(strerror)' and `(system-error)'.
9562
d6b8cf11 9563 * Makefile.am (EXTRA_libguile_la_SOURCES): Added
b4e15479
SJ
9564 `win32-socket.[ch]' to extra source and header files.
9565
7ab89df1
MV
95662001-11-06 Marius Vollmer <mvo@zagadka.ping.de>
9567
9568 * script.c (scm_shell_usage, scm_compile_shell_switches): Prepend
9569 a call to turn-on-debugging when --debug has been given instead of
9570 turning it on directly. Also, handle new `--no-debug' option,
9571 which might suppress the call to turn-on-debugging.
9572
0233bfc1
SJ
95732001-11-05 Stefan Jahn <stefan@lkcc.org>
9574
9575 * struct.c (s_scm_struct_vtable_p): Corrected docstring.
9576
8f99e3f3
SJ
95772001-11-04 Stefan Jahn <stefan@lkcc.org>
9578
9579 * Makefile.am (libguile_la_LIBADD): Added $(THREAD_LIBS_LOCAL)
d6b8cf11 9580 here (was at guile_LDADD) which describes the dependency
8f99e3f3
SJ
9581 correctly and allows a clean build on Win32.
9582
d6b8cf11 9583 * __scm.h (SCM_API): Follow-up patch. Renamed __FOO__ macros
8f99e3f3
SJ
9584 into FOO.
9585
9586 * __scm.h: USE_DLL_IMPORT indicates the usage of the DLL
9587 import macros for external libraries (libcrypt, libqthreads,
9588 libreadline and libregex).
9589
9590 * coop-defs.h: Include <winsock2.h> for `struct timeval'.
9591
9592 * posix.c (flock): Added support for flock() in M$-Windows.
9593
9594 * guile.c (SCM_IMPORT): Follow-up patch. Use SCM_IMPORT instead
9595 of __SCM_IMPORT__.
9596
9597 * fports.c (getflags): Differentiate reading and writing pipes
9598 descriptors.
9599
9600 * filesys.c (S_IS*): Redefine all of the S_IS*() macros for
9601 M$-Windows.
9602
9603 * coop.c (coop_condition_variable_timed_wait_mutex): Use
9604 conditionalized error code if `ETIMEDOUT' is not available.
9605 (scm_thread_usleep): Remove bogus declaration of `struct timeval
9606 timeout'.
9607
9608 * numbers.c (PTRDIFF_MIN): Moved this definition where it actually
9609 belongs. That is because NO_PREPRO_MAGIC gets undefined after
9610 each inclusion of `num2integral.i.c'.
9611 (SIZE_MAX): Define NO_PREPRO_MAGIC if SIZE_MAX is undefined.
9612
4e21fa60
MV
96132001-11-03 Marius Vollmer <mvo@zagadka.ping.de>
9614
9615 * eval.c (scm_m_begin): Allow `(begin)`, with no subforms.
9616 (SCM_CEVAL): Evaluate an empty `begin' to SCM_UNSPECIFIED.
9617
08112c95
MD
96182001-11-02 Mikael Djurfeldt <mdj@linnaeus>
9619
7663c008
MD
9620 * print.c (scm_iprin1): Mark print state as revealed when
9621 dispatching to generic write or display.
9622
08112c95
MD
9623 * unif.c (scm_ra2contig): Fixed memory overwrite bug.
9624
f712d833
MV
96252001-11-02 Marius Vollmer <mvo@zagadka.ping.de>
9626
9627 Support for native Win32. Thanks to Stefan Jahn!
d6b8cf11 9628
f712d833
MV
9629 * Makefile.am: Add win32-uname.c, win32-uname.h, win32-dirent.c
9630 and win32-dirent.h to extra source and header files. These
9631 include the uname() and the POSIX dirent interface implementation
9632 for M$-Windows. Put `-no-undefined' into LDFLAGS to support
9633 linkers which do not allow unresolved symbols inside shared
9634 libraries. Corrected `guile_filter_doc_snarfage$(EXEEXT)'
9635 dependency.
9636
d6b8cf11
TTN
9637 * __scm.h: Defined SCM_API. This macro gets prepended to all
9638 function and data definitions which should be exported or imported
f712d833
MV
9639 in the resulting dynamic link library in the Win32 port.
9640
9641 * __scm.h, alist.h, arbiters.h, async.h, backtrace.h, boolean.h,
d6b8cf11 9642 chars.h, continuations.h, coop-defs.h, coop-threads.h,
f712d833
MV
9643 debug-malloc.h, debug.h, deprecation.h, dynl.h, dynwind.h,
9644 environments.h, eq.h, error.h, eval.h, evalext.h, extensions.h,
9645 feature.h, filesys.h, fluids.h, fports.h, gc.h, gdb_interface.h,
9646 gdbint.h, gh.h, goops.h, gsubr.h, guardians.h, hash.h, hashtab.h,
9647 hooks.h, init.h, ioext.h, iselect.h, keywords.h, lang.h, list.h,
d6b8cf11 9648 load.h, macros.h, mallocs.h, modules.h, net_db.h, numbers.h,
f712d833
MV
9649 objects.h, objprop.h, options.h, pairs.h, ports.h, posix.h, print.h,
9650 procprop.h, procs.h, properties.h, ramap.h, random.h, rdelim.h,
9651 read.h, regex-posix.h, root.h, rw.h, scmsigs.h, script.h, simpos.h,
9652 smob.h, socket.h, sort.h, srcprop.h, stackchk.h, stacks.h, stime.h,
9653 strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h,
9654 tags.h, threads.h, throw.h, unif.h, values.h, variable.h, vectors.h,
9655 vports.h, weaks.h:
9656 Prefixed each each exported symbol with SCM_API.
9657
d6b8cf11 9658 * continuations.c: Added comment about the use of the extern
f712d833
MV
9659 declarations of {get,set}context() functions used in the ia64 port.
9660
9661 * continuations.h, gc.c: `__libc_ia64_register_backing_store_base'
9662 is meant to be a `unsigned long *'.
9663
9664 * filesys.c: Include `direct.h' if possible. Use local
9665 `win32-dirent.h' for the native M$-Windows port. Define S_IS*()
9666 macros for M$-Windows. Implementation of `fstat_Win32()' which is
9667 able to differentiate between sockets and other file descriptors.
9668 Use this function as wrapper in `scm_fstat()'. Fixed typo in
9669 `scm_dirname()'.
9670
9671 * fports.c: Include `io.h' is possible. Put `*fp' into referring
9672 statement block in `scm_fport_buffer_add()'.
9673 Some corrections in `getflags()'.
d6b8cf11 9674
f712d833
MV
9675 * gdb_interface.h (GDB_INTERFACE): Also support __CYGWIN__.
9676
9677 * guile.c: Make sure to define __SCM_IMPORT__ for shared library
9678 build on Win32. Disable preloaded symbols on Win2 platforms.
9679
9680 * ioext.c, ports.c: Include `io.h' is possible.
9681
9682 * mkstemp.c: Include `process.h' is possible.
9683
9684 * net_db.c: Disable extern declaration of `h_errno' for __CYGWIN__,
9685 too.
9686 Put `scm_return_entry()' into HAVE_GETSERVENT conditional.
9687
9688 * posix.c: Remove unnecessary dirent includes and defines. Include
9689 local `win32-uname.h' for MinGW. Extern declaration of
9690 `mkstemp()' for systems where it does not exists. Make
9691 `getlogin()' available on M$-Windows.
9692
9693 * scmsigs.c: Made `usleep()' avalable on MinGW.
9694
9695 * stime.c: On M$-Windows `tzname[]' is known to be `_tzname[]'.
9696
9697 * win32-dirent.c: Include "win32-dirent.h", not "dirent.h".
9698
9699 * win32-uname.c: Include "win32-uname.h", not "uname.h".
9700
d245ce23
MD
97012001-10-28 Mikael Djurfeldt <mdj@linnaeus>
9702
9703 * unif.c (scm_uniform_array_read_x, scm_uniform_array_write):
9704 Don't apply scm_uniform_vector_length on arrays.
9705
8ea46249
DH
97062001-10-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
9707
9708 * eval.c (scm_lookupcar, scm_m_letstar, scm_m_do, iqq,
9709 scm_m_define, scm_m_letrec1, scm_m_let, scm_m_expand_body,
9710 scm_macroexp, unmemocopy, scm_eval_args, scm_deval_args,
9711 SCM_CEVAL, scm_map, scm_init_eval): When building lists, prefer
9712 scm_list_<n> over scm_cons[2]?.
9713
9714 (scm_unmemocar, scm_m_cond, scm_m_letstar, scm_m_letrec1,
9715 scm_m_let, scm_m_atbind, unmemocopy, SCM_CEVAL, SCM_APPLY): Use
9716 SCM_C[AD][AD]R instead of explicit form.
9717
9718 (scm_m_set_x, scm_m_cond, scm_m_letstar, scm_m_do): Reordered
9719 comparison parameters.
9720
9721 (scm_m_case, scm_m_cond, scm_m_letstar, scm_m_do, SCM_CEVAL): Use
9722 !SCM_NULLP instead of SCM_NIMP.
9723
9724 (scm_m_case): Don't copy the form. Renamed proc to clause and
9725 minimized its scope. Renamed x to clauses. Removed side
9726 effecting operation from macro call.
9727
9728 (scm_m_cond): Don't copy the form. Renamed arg1 to clause and
9729 minimized its scope. Renamed x to clauses. Minimized the scope
9730 of variable 'len'. Make sure the else clause is treated specially
9731 even in case of '=>' occurences. Don't change the else to #t in
9732 order to be able to distinguish this case in the evaluator. Leave
9733 type checking of the recipient to the evaluator.
9734
9735 (scm_c_improper_memq): Made the comment somewhat clearer.
9736
9737 (scm_m_lambda): Renamed proc to formals. Removed unnecessary
9738 test for SCM_IM_LET at the place of the formal parameters.
9739 Simplified the formal parameter checking.
9740
9741 (scm_m_letstar): Added Comment. Renamed proc to bindings.
9742 Renamed arg1 to binding and minimized its scope. Eliminated
9743 unnecessary consing.
9744
9745 (scm_m_do): Renamed proc to bindings. Minimized the scope of
9746 variable 'len'.
9747
9748 (build_binding_list): New static function.
9749
9750 (unmemocopy): Don't use SCM_TYP7 on pairs (it's unclean).
9751 Further, split up the 'letrec' unmemoizing code to the
9752 corresponding parts for 'do', 'let' and 'letrec', adding comments
9753 to each form. Cleanup the handling of the do form (This removes
9754 some *real* code :-).
9755
9756 (SCM_CEVAL): Removed side effecting operation from macro call.
9757 Handle the 'else clause of the 'cond form specially - the symbol
9758 'else is not replaced with #t any more.
9759
8186c4f5
GH
97602001-10-14 Gary Houston <ghouston@arglist.com>
9761
9762 * version.c (scm_version): use sprintf instead of snprintf,
9763 for portability. thanks to Bill Schottstaedt.
9764
89759084
MD
97652001-10-14 Mikael Djurfeldt <mdj@linnaeus>
9766
9767 * read.c (scm_lreadr): When user-defined hash procedure returns
9768 SCM_UNSPECIFIED: Fall back to standard handling instead of raising
9769 an exception. (This prevents parsing of uniform vectors from
9770 interfering with parsing of numbers.)
9771
9c7ce563
MV
97722001-10-13 Marius Vollmer <mvo@zagadka.ping.de>
9773
9774 * numbers.c: Set NO_PREPRO_MAGIC when defining our version of
9775 PTRDIFF_MIN. Thanks to Ken Raeburn.
9776
97772001-10-07 Marius Vollmer <mvo@zagadka.ping.de>
9778
9779 * Makefile.am (EXTRA_libguile_la_SOURCES): Added "mkstemp.c".
9780
9781 * eval.c (scm_m_atbind): First try to find the variable without
9782 defining it locally; when it has not been found, define it
9783 locally.
9784
9785 * modules.c (module_variable): Pass over variables that exist but
9786 are unbound.
9787
97882001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
9789
9790 * backtrace.c (display_backtrace_file_and_line): Only use
9791 scm_basename when POSIX support is compiled in. Thanks to Chris
9792 Cramer.
9793
1fe5e088
DH
97942001-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9795
9796 * numbers.c (mem2uinteger): Return number read so far when coming
9797 across a hexdigit after having read a # or if not reading a hex
9798 value. This will enable the calling code to correctly handle
9799 forms like 1e2. (The background is, that the exponent markers d,
9800 e and f are also hexdigits.) Thanks to Mikael Djurfeldt for
9801 providing this patch.
9802
9803 (mem2complex): Fix erroneous double-negation. Now, numbers like
9804 1-i will be read correctly.
9805
68665a97
MD
98062001-10-12 Mikael Djurfeldt <mdj@linnaeus>
9807
9808 * debug.c (scm_mem_to_proc): Fixed typo in previous change.
9809
9810 * validate.h (SCM_VALIDATE_DOUBLE_DEF_COPY): New macro.
9811
d5cf5324
DH
98122001-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
9813
9814 * print.c (scm_print_state_vtable, print_state_pool):
9815 Initialize. These variables are now registered as gc roots.
9816
9817 (scm_current_pstate): Update documentation.
9818
9819 (scm_current_pstate, scm_make_print_state, scm_free_print_state,
9820 scm_prin1, scm_init_print): print_state_pool is registered as a
9821 gc root and thus does not need to be protected by a surrounding
9822 pair any more.
9823
9824 (make_print_state): The car of print_state_pool no longer holds
9825 the scm_print_state_vtable.
9826
9827 (scm_current_pstate, scm_make_print_state, print_circref,
9828 scm_iprin1, scm_prin1, scm_iprlist): Prefer !SCM_<foo> over
9829 SCM_N<foo>.
9830
9831 (scm_prin1): When building lists, prefer scm_list_<n> over
9832 scm_cons[2]?.
9833
9834 (scm_iprlist): Removed a redundant SCM_IMP test.
9835
9836 (scm_simple_format): Use SCM_EQ_P to compare SCM values.
9837
37c56aec
DH
98382001-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
9839
9840 * debug.c (scm_make_iloc): Prefer !SCM_<foo> over SCM_N<foo>.
9841
9842 (scm_memcons, scm_mem_to_proc): When building lists, prefer
9843 scm_list_<n> over scm_cons[2]?.
9844
9845 (scm_mem_to_proc): Prefer SCM_CONSP over SCM_NIMP.
9846
9847 (scm_procedure_name): Use SCM_CADR instead of explicit form.
9848
9849 (debugobj_print): Coerce scm_intprint arg 1 to long, not int.
9850 Thanks to Rob Browning for the patch (see log entry 2001-09-21) -
9851 for some reason his patch didn't make it into the cvs.
9852
79d34f68
DH
98532001-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
9854
9855 * numbers.c (mem2decimal_from_point): Cleaned up the parsing a
9856 little bit - should even be somewhat more accurate now.
9857
5e137c65
RB
98582001-10-08 Rob Browning <rlb@defaultvalue.org>
9859
9860 * gc.c: support ia64 register backing store.
9861 (SCM_MARK_BACKING_STORE): new macro.
9862
9863 * continuations.h: support ia64 register backing store.
9864 (struct scm_t_contregs): add ia64 register backing store.
9865
9866 * continuations.c: support ia64 register backing store.
9867 (continuation_mark): mark ia64 register backing store.
9868 (continuation_free): free ia64 register backing store.
9869 (scm_make_continuation): capture ia64 register backing store.
9870 (copy_stack_and_call): copy ia64 register backing store.
9871
ee083ac2
DH
98722001-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
9873
9874 * hashtab.c (scm_hash_fn_create_handle_x): The result of assoc_fn
9875 is known to be #f if no entry is found. Thus, use !SCM_FALSEP
9876 instead of SCM_NIMP to test for that case.
9877
9878 * strings.h (SCM_SET_STRING_LENGTH): Cast the length to
9879 scm_t_bits instead of long.
9880
71dcdbf9
MV
98812001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
9882
9883 * tags.h (SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
9884 SCM_T_SIGNED_BITS_MIN): New.
9885 * numbers.h (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM):
9886 Use them to make these macros computable by the preprocessor.
9887
9888 * num2integral.i.c (INTEGRAL2NUM): Let the preprocessor test
9889 whether the integral type fits in a fixnum, not the compiler.
9890 This removes a spurious compiler warning. Also, honor the
9891 NO_PREPRO_MAGIC flag to suppress any preprocessor tests. This is
9892 needed for `long long's.
9893
9894 * numbers.c: Define NO_PREPRO_MAGOC when including
9895 num2integral.c.i for `long long' and `signed long long'.
9896
152812c0
MD
98972001-10-06 Mikael Djurfeldt <mdj@linnaeus>
9898
9899 These changes fixes a race condition in the Guile coop - pthread
9900 compatibility code.
d6b8cf11 9901
152812c0
MD
9902 * coop.c (mother_awake_p): New variable.
9903 (coop_create): Set mother_awake_p before creating or signalling
9904 mother; wait until mother is going to sleep before returning.
9905 (mother): Reset mother_awake_p before going to sleep.
9906
11d49f54
DH
99072001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
9908
9909 * options.c (protected_objects, scm_init_options): The content of
9910 protected_objects is now protected from garbage collection using
9911 scm_gc_register_root instead of scm_permanent_object.
9912
9913 (get_option_setting): New static function that computes an option
9914 setting as it was formerly done in the function scm_options.
9915
9916 (get_documented_option_setting): New static function that
9917 returns option documentation as it was formerly done in the
9918 function scm_options. Note that documentation C strings are no
9919 longer precomputed into SCM objects. Instead, they are converted
9920 into SCM strings every time get_documented_option_setting is
9921 called.
9922
9923 (change_option_setting): New static functions that modifies the
9924 option setting as it was formerly done in the function
9925 scm_options. The function is now exception safe, i. e. won't
9926 cause a memory leak when interrupted. Further, only non-immediate
9927 option values are added to the protection list.
9928
9929 (scm_options): This function now has only the purpose to dispatch
9930 to to get_option_setting, get_documented_option_setting or
9931 change_option_setting, depending on the arguments given to
9932 scm_options.
9933
9934 (scm_init_opts): Don't convert documentation C strings into SCM
9935 strings. Further, don't protect any object values: They _must_
9936 be immediate values, otherwise there is no guarantee that they
9937 have not been collected before anyway.
9938
9939 * options.[ch] (scm_t_option): Made type unsigned, name into a
9940 constant char* and val into a scm_t_bits type.
9941
9942 (scm_options, scm_init_opts): The number of options is guaranteed
9943 to be larger or equal to zero. Thus, the type is changed to
9944 unsigned.
9945
3dbacabc
DH
99462001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
9947
9948 * num2integral.i.c (NUM2INTEGRAL): Eliminated some warnings about
9949 testing an unsigned value for being >= 0.
9950
14282d0f
DH
99512001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
9952
9953 * numbers.h: Removed old comment about using SCM_CAR to access
9954 non-pair cells.
9955
9956 (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM): Make sure
9957 the return value is signed. Thanks to Brian Crowder for the bug
9958 report.
9959
9960 (SCM_SRS): Avoid unnecessary casting and don't unpack input
9961 values. With this patch, SCM_SRS can be safely used for other
9962 types than scm_t_signed_bits. However, it should still better be
9963 an internal macro and thus be renamed to SCM_I_SRS.
9964
9965 (SCM_MAKINUM, SCM_INUM): Use proper casting.
9966
2dbec7b5
GH
99672001-10-03 Gary Houston <ghouston@arglist.com>
9968
9969 * continuations.h, unif.h: in the descriptions of the bit patterns
9970 of the heap cells, make bit 0 the least significant.
9971
cf4ee841
TTN
99722001-09-25 Thien-Thi Nguyen <ttn@glug.org>
9973
9974 * chars.h (SCM_MAKE_CHAR): Use `scm_t_bits' instead of `intptr_t'.
9975 Thanks to Golubev I. N.
9976
4a151b3d
GH
99772001-09-25 Gary Houston <ghouston@arglist.com>
9978
9979 * ports.c (scm_drain_input): extended the docstring. thanks to
9980 Alex Schroeder and Thien-Thi Nguyen.
9981
581ded70
MD
99822001-09-23 Mikael Djurfeldt <mdj@linnaeus>
9983
9984 * validate.h (SCM_NUM2FLOAT, SCM_NUM2DOUBLE,
9985 SCM_VALIDATE_FLOAT_COPY, SCM_VALIDATE_DOUBLE_COPY): New
9986 macros. (The NUM names might soon change.)
9987
9988 * numbers.h: Added missing declarations.
9989
5437598b
MD
99902001-09-22 Mikael Djurfeldt <mdj@linnaeus>
9991
9992 * Makefile.am: Distribute num2float.i.c.
9993
9994 * num2float.i.c: New file, multiply included by numbers.c, used
9995 to "templatize" the float <-> num conversion routines.
9996
9997 * numbers.c: New functions: scm_num2float, scm_float2num,
9998 scm_num2double, scm_double2num.
9999
0b073f0f
RB
100002001-09-21 Rob Browning <rlb@defaultvalue.org>
10001
10002 * .cvsignore: really add version.h
10003
10004 * strings.h (SCM_SET_STRING_LENGTH): coerce "l" to a long.
10005 Otherwise it fails on the alpha. However, we might rather choose
10006 this size conditionally.
10007
10008 * numbers.c (scm_gcd): change "k" to a long from an int.
10009 Otherwise it fails on the alpha. However, we might rather choose
10010 this size conditionally.
10011
10012 * error.c (scm_wta): coerce char* to intptr_t before int
10013 assignment.
10014
10015 * debug.c (debugobj_print): coerce scm_intprint arg 1 to long, not
10016 int.
10017
10018 * chars.h (SCM_MAKE_CHAR): coerce value to intptr_t.
10019
2830fd91
MD
100202001-09-20 Mikael Djurfeldt <mdj@linnaeus>
10021
10022 * numbers.c (scm_integer_expt): Accept inexact integer in second
10023 argument. (Thanks to Bill Schottstaedt.)
10024
c13f0a90
RB
100252001-09-20 Rob Browning <rlb@defaultvalue.org>
10026
10027 * .cvsignore: add version.h
10028
10029 * versiondat.h.in: removed (obsolete).
10030
10031 * version.h.in: renamed from version.h.
10032 (SCM_GUILE_MAJOR_VERSION): new public macro.
10033 (SCM_GUILE_MINOR_VERSION): new public macro.
10034 (SCM_GUILE_MICRO_VERSION): new public macro.
10035
10036 * version.h: renamed to version.h.in.
10037
10038 * version.c
10039 (scm_major_version): support integer *_VERSION macros.
10040 (scm_minor_version): support integer *_VERSION macros.
10041 (scm_micro_version): support integer *_VERSION macros.
10042 (scm_version): support integer *_VERSION macros.
10043
147c18a0
MD
100442001-09-20 Mikael Djurfeldt <mdj@linnaeus>
10045
10046 * error.c, error.h: Made error keys globally accessible.
10047 Applications might want to test for these or use them in a direct
10048 call to scm_error.
10049
10050 * num2integral.i.c (NUM2INTEGRAL): Report an error when these
10051 routines are passed an inexact. This change in behavior is
10052 motivated by concordance with R5RS: It is more common that a
10053 primitive doesn't want to accept an inexact for an exact.
10054
662c5539
DH
100552001-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
10056
10057 The following patch partially undoes my patch from 2001-06-30,
10058 where I added the function scm_gc_mark_cell_conservatively. The
10059 function is buggy, since it breaks guile during conservative
10060 marking if a pointer on the stack points directly into the list of
10061 free cells on the heap: With conservative cell marking this will
10062 cause the whole free list to be scanned and marked - boom!
10063
10064 * gc.c (allocated_mark, MARK, heap_segment,
10065 scm_gc_mark_cell_conservatively, scm_init_storage), gc.h
cf4ee841 10066 (scm_gc_mark_cell_conservatively): Remove function
662c5539
DH
10067 scm_gc_mark_cell_conservatively and update the corresponding
10068 comments and uses accordingly. Thanks to Christopher Cramer for
10069 the patch. (Minor corrections by me.)
10070
6c1b7628
GH
100712001-09-15 Gary Houston <ghouston@arglist.com>
10072
10073 * root.h (scm_root_state): removed the continuation_stack and
10074 continuation_stack_ptr members, which have no apparent purpose.
10075 (scm_continuation_stack, scm_continuation_stack_ptr): #defines
10076 removed.
662c5539 10077
6c1b7628
GH
10078 * root.c (root_mark), init.c (restart_stack, start_stack), gc
10079 (scm_igc): remove all references to contination_stack and
10080 continuation_stack_ptr, avoiding allocation of a vector and
10081 useless processing during gc.
10082
455c0ac8
DH
100832001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10084
10085 * guardians.c (tconc_t, t_tconc): Renamed tconc_t to t_tconc.
10086
10087 (TCONC_IN): Make sure that the cell word 0 is initialized last.
10088
10089 (guardians_t, t_guardians): Renamed guardians_t to t_guardians.
10090
10091 (GUARDIAN, GUARDIAN_DATA): Renamed GUARDIAN to GUARDIAN_DATA.
10092
10093 (guardian_apply, scm_get_one_zombie, scm_make_guardian,
10094 mark_and_zombify): Prefer !SCM_<foo> over SCM_N<foo>.
10095
22ba637b
DH
100962001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10097
10098 * guardians.c (mark_dependencies_in_tconc,
10099 whine_about_self_centered_zombies, scm_init_guardians): Register
10100 the static global variable `self_centered_zombies' via
10101 scm_gc_register_root, to make some cdr-ing unnecessary.
10102
c3c4d801
DH
101032001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10104
10105 * backtrace.c (display_backtrace_file,
10106 display_backtrace_file_and_line): Use SCM_EQ_P when comparing SCM
10107 values, use SCM_FALSEP when comparing SCM values against #f.
10108 Thanks to Rob Browning for the bug report.
10109
b00418df
DH
101102001-09-12 Martin Baulig <martin@home-of-linux.org>
10111
10112 * strings.[ch] (scm_str2string): New function.
10113
a0d34a0b
MV
101142001-09-06 Marius Vollmer <mvo@zagadka.ping.de>
10115
10116 * gc.c (scm_done_free): Always subtract size from scm_mallocated
10117 when computing nm, even if it's negative.
10118 (scm_must_malloc): Abort on overflow of scm_mtrigger.
10119 (scm_must_realloc): Likewise.
10120
b10586f0
ML
101212001-09-01 Michael Livshin <mlivshin@bigfoot.com>
10122
10123 * numbers.c (scm_sys_check_number_conversions): new function,
10124 defined if Guile is compiled in debugging mode. currently checks
10125 `scm_num2ulong', should check much much more.
10126
10127 * num2integral.i.c (NUM2INTEGRAL): when converting a bignum to
10128 unsigned, ensure that it's positive. thanks to Martin Baulig!
cf4ee841 10129
8c494e99
DH
101302001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10131
10132 * __scm.h: Added new section about compile time selectable
10133 features.
10134
10135 (long_long, ulong_long, scm_sizet, SCM_WNA, SCM_OUTOFRANGE,
10136 SCM_NALLOC, SCM_HUP_SIGNAL, SCM_INT_SIGNAL, SCM_FPE_SIGNAL,
10137 SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL, SCM_GC_SIGNAL,
10138 SCM_TICK_SIGNAL, SCM_SIG_ORD, SCM_ORD_SIG, SCM_NUM_SIGS):
10139 Removed.
10140
10141 * deprecation.c (scm_include_deprecated_features): Simplified.
10142
10143 * eval.c (EVALCAR, unmemocopy), eval.h (SCM_XEVALCAR): Use
9a5fa6e9 10144 `SCM_IMP' instead of `!SCM_CELLP´.
8c494e99
DH
10145
10146 * eval.c (unmemocopy): Eliminate redundant SCM_CELLP tests.
10147 Extract side-effecting operations from macros.
10148
10149 (scm_init_eval): Don't initialize *top-level-lookup-closure*,
10150 scm_top_level_lookup_closure_var and scm_system_transformer.
10151
10152 * gc.c (CELL_P): New local definition to replace SCM_CELLP.
10153
10154 (heap_segment): Use CELL_P instead of SCM_CELLP.
10155
10156 * init.c (start_stack): Don't initialize
10157 scm_top_level_lookup_closure_var and scm_system_transformer.
10158
10159 * modules.c (scm_set_current_module): Don't access
10160 scm_top_level_lookup_closure_var and scm_system_transformer.
10161
10162 (scm_sym2var): Don't call scm_variable_set_name_hint.
10163
10164 (scm_post_boot_init_modules): Removed deprecated initializations.
10165
10166 * print.c (scm_ipruk): Don't access cell contents of non cells.
10167
10168 * strings.c (scm_string_set_x): All strings are writable.
10169
10170 * strings.h (SCM_STRINGP): Use SCM_TYP7 to determine the string
10171 type. There is only one string type now.
10172
10173 (SCM_STRING_COERCE_0TERMINATION_X): Deprecated.
10174
10175 * tags.h: Remove comments about two different string types.
10176
10177 (SCM_CELLP, SCM_NCELLP): Deprecated.
10178
10179 * variable.c (make_variable): Remove code variant for vcells.
10180
10181 * variable.h (SCM_VARIABLE_REF, SCM_VARIABLE_SET,
10182 SCM_VARIABLE_LOC): Remove code variant for vcells.
10183
10184 * __scm.h, deprecation.[ch]: Renamed SCM_DEBUG_DEPRECATED to
10185 SCM_ENABLE_DEPRECATED with the logic reversed.
10186
10187 * dynl.c (moddata, registered_mods), dynl.[ch]
10188 (scm_register_module_xxx, scm_registered_modules,
10189 scm_clear_registered_modules), error.[ch] (scm_wta), eval.c
10190 (*top-level-lookup-closure*), eval.[ch]
10191 (scm_top_level_lookup_closure_var, scm_system_transformer,
10192 scm_eval_3, scm_eval2), gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR,
10193 SCM_SETAND_CDR, SCM_SETOR_CDR, SCM_FREEP, SCM_NFREEP,
10194 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
10195 SCM_GCCDR), gc.[ch] (scm_remember, scm_protect_object,
10196 scm_unprotect_object), modules.c (root_module_lookup_closure,
10197 scm_sym_app, scm_sym_modules, module_prefix, make_modules_in_var,
10198 beautify_user_module_x_var, try_module_autoload_var,
10199 scm_module_full_name), modules.[ch] (scm_the_root_module,
10200 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
cf4ee841 10201 ports.h (scm_port, scm_ptob_descriptor, scm_port_rw_active),
8c494e99
DH
10202 ports.[ch] (scm_close_all_ports_except), random.h (scm_rstate,
10203 scm_rng, scm_i_rstate), strings.h (SCM_SLOPPY_STRINGP,
10204 SCM_RWSTRINGP, SCM_STRING_UCHARS, SCM_STRING_CHARS), strings.[ch]
10205 (scm_read_only_string_p, scm_makstr, scm_makfromstr,
10206 scm_make_shared_substring), tags.h (scm_tc7_substring,
10207 SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP, scm_tc7_ssymbol,
10208 scm_tc7_msymbol, scm_tcs_symbols), variable.c (sym_huh),
10209 variable.[ch] (scm_variable_set_name_hint, scm_builtin_variable),
10210 variable.h (SCM_VARVCELL, SCM_UDVARIABLEP, SCM_DEFVARIABLEP):
10211 Removed.
10212
10213 * dynl.c (scm_dynamic_link, scm_dynamic_func), error.c
10214 (scm_error_scm), filesys.c (scm_chown, scm_chmod, scm_open_fdes,
10215 scm_stat, scm_link, scm_rename, scm_delete_file, scm_mkdir,
10216 scm_rmdir, scm_opendir, scm_chdir, scm_symlink, scm_readlink,
10217 scm_lstat, scm_copy_file), fports.c (scm_open_file), ioext.c
10218 (scm_fdopen), net_db.c (scm_gethost, scm_getnet, scm_getproto,
10219 scm_getserv), ports.c (scm_truncate_file, scm_sys_make_void_port),
10220 posix.c (scm_getpwuid, scm_getgrgid, scm_execl, scm_execlp,
10221 scm_execle, scm_mkstemp, scm_utime, scm_access, scm_setlocale,
10222 scm_mknod, scm_crypt, scm_chroot, scm_getpass, scm_sethostname),
10223 regex-posix.c (scm_make_regexp, scm_regexp_exec), simpos.c
10224 (scm_system, scm_getenv), socket.c (scm_inet_aton), stime.c
10225 (setzone, scm_strftime, scm_strptime), vports.c
10226 (scm_make_soft_port): Remove calls to
10227 SCM_STRING_COERCE_0TERMINATION_X. Since the substring type is
10228 gone, all strings are 0-terminated anyway.
10229
10230 * dynl.h (LIBGUILE_DYNL_H, SCM_DYNL_H), random.h (RANDOMH,
10231 SCM_RANDOM_H): Renamed the macros that are defined to inhibit
10232 double inclusion of the same headers to the SCM_<filename>_H
10233 format.
10234
10235 * eval.c (SCM_CEVAL), gc.c (MARK, scm_gc_sweep), gh_data.c
10236 (gh_scm2chars), hash.c (scm_hasher), objects.c (scm_class_of),
10237 print.c (scm_iprin1): The type scm_tc7_substring does not exist
10238 any more.
10239
10240 * ports.h (SCM_PORTP, SCM_OPPORTP, SCM_OPINPORTP, SCM_OPOUTPORTP,
10241 SCM_INPUT_PORT_P, SCM_OUTPUT_PORT_P, SCM_OPENP), tags.h
10242 (SCM_TYP16_PREDICATE), variable.h (SCM_VARIABLEP): Prefer
10243 !SCM_<foo> over SCM_N<foo>.
10244
dee01b01
DH
102452001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10246
10247 * Makefile.am: Remove references to symbols-deprecated.c.
10248
10249 * symbols.c (scm_init_symbols): Don't initialize deprecated
10250 symbol functions.
10251
10252 * symbols-deprecated.c: Removed.
10253
10254 * fluids.[ch] (scm_internal_with_fluids), gsubr.[ch]
10255 (scm_make_gsubr, scm_make_gsubr_with_generic), hooks.[ch]
10256 (scm_create_hook), list.c (list*), list.h (SCM_LIST[0-9],
10257 scm_listify), list.[ch] (scm_sloppy_memq, scm_sloppy_memv,
10258 scm_sloppy_member), load.c (scm_end_of_file_key), load.[ch]
10259 (scm_read_and_eval_x), numbers.[ch] (scm_mkbig, scm_big2inum,
10260 scm_adjbig, scm_normbig, scm_copybig, scm_2ulong2big, scm_dbl2big,
10261 scm_big2dbl), numbers.h (SCM_FIXNUM_BIT), procs.h
10262 (scm_subr_entry, SCM_SUBR_DOC), procs.[ch] (scm_make_subr_opt,
10263 scm_make_subr, scm_make_subr_with_generic), root.c (setjmp_type,
10264 setjmp_type), root.[ch] (scm_call_catching_errors), smob.[ch]
10265 (scm_make_smob_type_mfpe, scm_set_smob_mfpe), strports.[ch]
10266 (scm_strprint_obj, scm_read_0str, scm_eval_0str), symbols.h
10267 (SCM_CHARS, SCM_UCHARS, SCM_SETCHARS, SCM_SLOPPY_SUBSTRP,
10268 SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_LENGTH_MAX, SCM_LENGTH,
10269 SCM_SETLENGTH, SCM_ROSTRINGP, SCM_ROLENGTH, SCM_ROCHARS,
10270 SCM_ROUCHARS, SCM_SUBSTRP, SCM_COERCE_SUBSTR, scm_strhash,
10271 scm_sym2vcell, scm_sym2ovcell_soft, scm_sym2ovcell,
10272 scm_intern_obarray_soft, scm_intern_obarray, scm_intern,
10273 scm_intern0, scm_sysintern, scm_sysintern0,
10274 scm_sysintern0_no_module_lookup, scm_symbol_value0,
10275 scm_string_to_obarray_symbol, scm_intern_symbol,
10276 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
10277 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp,
10278 scm_init_symbols_deprecated), vectors.c (s_vector_set_length_x),
10279 vectors.[ch] (scm_vector_set_length_x): Removed.
10280
10281 * fluids.h (FLUIDSH, SCM_FLUIDS_H), gsubr.c (GSUBRH, SCM_GSUBR_H),
10282 list.h (LISTH, SCM_LIST_H), load.h (LOADH, SCM_LOAD_H), root.h
10283 (ROOTH, SCM_ROOT_H), strports.h (STRPORTSH, SCM_STRPORTS_H):
10284 Renamed the macros that are defined to inhibit double inclusion of
10285 the same headers to the SCM_<filename>_H format.
10286
10287 * procs.h (SCM_CLOSUREP, SCM_PROCEDURE_WITH_SETTER_P), symbols.h
10288 (SCM_SYMBOLP), vectors.h (SCM_VECTORP): Prefer !SCM_<foo> over
10289 SCM_N<foo>.
10290
b29058ff
DH
102912001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10292
10293 * continuations.h (scm_contregs), debug.h (scm_debug_info,
10294 scm_debug_frame, SCM_DSIDEVAL), filesys.h (SCM_OPDIRP), fports.h
10295 (scm_fport), options.h (scm_option), snarf.h (SCM_CONST_LONG,
10296 SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
10297 SCM_GLOBAL_VCELL_INIT), srcprop.h (scm_srcprops,
10298 scm_srcprops_chunk), stacks.h (scm_info_frame, scm_stack), unif.h
10299 (scm_array, scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_HUGE_LENGTH),
10300 validate.h (SCM_FUNC_NAME, SCM_WTA, RETURN_SCM_WTA,
10301 SCM_VALIDATE_NUMBER_COPY, SCM_VALIDATE_NUMBER_DEF_COPY,
10302 SCM_VALIDATE_STRINGORSUBSTR, SCM_VALIDATE_ROSTRING,
10303 SCM_VALIDATE_ROSTRING_COPY, SCM_VALIDATE_NULLORROSTRING_COPY,
10304 SCM_VALIDATE_RWSTRING, SCM_VALIDATE_OPDIR): Removed.
10305
10306 * continuations.h (CONTINUATIONSH, SCM_CONTINUATIONS_H), filesys.h
10307 (FILESYSH, SCM_FILESYS_H), fports.h (FPORTSH, SCM_FPORTS_H),
10308 options.h (OPTIONSH, SCM_OPTIONS_H), regex-posix.h (REGEXPOSIXH,
10309 SCM_REGEX_POSIX_H), snarf.h (LIBGUILE_SNARF_H, SCM_SNARF_H),
10310 srcprop.h (SCM_SOURCE_PROPERTIES_H, SCM_SRCPROP_H), unif.h
10311 (SCM_UNIFORM_VECTORS_H, SCM_UNIF_H), validate.h (SCM_VALIDATE_H__,
10312 SCM_VALIDATE_H): Renamed the macros that are defined to inhibit
10313 double inclusion of the same headers to the SCM_<filename>_H
10314 format.
10315
10316 * debug.h (SCM_RESET_DEBUG_MODE), regex-posix.h (SCM_RGXP),
10317 srcprop.h (SRCBRKP, PROCTRACEP), struct.h (SCM_STRUCTP),
10318 validate.h (SCM_VALIDATE_THUNK, SCM_VALIDATE_ARRAY,
10319 SCM_VALIDATE_VECTOR_OR_DVECTOR, SCM_VALIDATE_VTABLE): Prefer
10320 !SCM_<foo> over SCM_N<foo>.
10321
0527e687
DH
103222001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10323
10324 * _scm.h (_SCMH, SCM__SCM_H), alist.h (ALISTH, SCM_ALIST_H),
10325 arbiters.h (ARBITERSH, SCM_ARBITERS_H), backtrace.h (BACKTRACEH,
10326 SCM_BACKTRACE_H), boolean.h (BOOLEANH, SCM_BOOLEAN_H), chars.h
10327 (SCM_CHARSH, SCM_CHARS_H), coop-defs.h (COOP_DEFSH,
10328 SCM_COOP_DEFS_H), coop-threads.h (COOP_THREADSH,
10329 SCM_COOP_THREADS_H), debug-malloc.h (DEBUGMALLOCH,
10330 SCM_DEBUG_MALLOC_H), dynwind.h (DYNWINDH, SCM_DYNWIND_H),
10331 environments.h (ENVIRONMENTS_H, SCM_ENVIRONMENTS_H), eq.h (EQH,
10332 SCM_EQ_H), evalext.h (EVALEXTH, SCM_EVALEXT_H), extensions.h
10333 (LIBGUILE_EXTENSIONS_H, SCM_EXTENSIONS_H), feature.h (FEATUREH,
10334 SCM_FEATURE_H), gdbint.h (GDBINTH, SCM_GDBINT_H), guardians.h
10335 (SCM_GUARDIANH, SCM_GUARDIANS_H), hash.h (HASHH, SCM_HASH_H),
10336 hashtab.h (HASHTABH, SCM_HASHTAB_H), init.h (INITH, SCM_INIT_H),
10337 ioext.h (IOEXTH, SCM_IOEXT_H), iselect.h (ISELECTH,
10338 SCM_ISELECT_H), keywords.h (KEYWORDSH, SCM_KEYWORDS_H), lang.h
10339 (LANGH, SCM_LANG_H), mallocs.h (MALLOCSH, SCM_MALLOCS_H), net_db.h
10340 (SCM_NETDBH, SCM_NET_DB_H), objprop.h (OBJPROPH, SCM_OBJPROP_H),
10341 posix.h (POSIXH, SCM_POSIX_H), procprop.h (PROCPROPH,
10342 SCM_PROCPROP_H), properties.h (PROPERTIES_H, SCM_PROPERTIES_H),
10343 ramap.h (RAMAPH, SCM_RAMAP_H), rdelim.h (SCM_RDELIM,
10344 SCM_RDELIM_H), read.h (READH, SCM_READ_H), rw.h (SCM_RW,
10345 SCM_RW_H), scmsigs.h (SCMSIGSH, SCM_SCMSIGS_H), script.h (SCRIPTH,
10346 SCM_SCRIPT_H), simpos.h (SIMPOSH, SCM_SIMPOS_H), socket.h
10347 (SCM_SOCKETH, SCM_SOCKET_H), sort.h (SORTH, SCM_SORT_H),
10348 stackchk.h (STACKCHKH, SCM_STACKCHK_H), stime.h (STIMEH,
10349 SCM_STIME_H), strop.h (STROPH, SCM_STROP_H), strorder.h
10350 (STRORDERH, SCM_STRORDER_H), threads.h (THREADSH, SCM_THREADS_H),
10351 throw.h (THROWH, SCM_THROW_H), version.h (VERSIONH,
10352 SCM_VERSION_H), vports.h (VPORTSH, SCM_VPORTS_H): Renamed
10353 the macros that are defined to inhibit double inclusion of the
10354 same headers to the SCM_<filename>_H format.
10355
fada26b2
MV
103562001-08-27 Marius Vollmer <mvo@zagadka.ping.de>
10357
10358 * ports.c, ports.h, fprots.c, gc.c, ioext.c: Replaced
10359 "scm_t_portable" with "scm_port_table" which was an artifact from
10360 the great "scm_*_t -> scm_t_" renaming.
10361
e4d1c1ea
TTN
103622001-08-25 Thien-Thi Nguyen <ttn@revel.glug.org>
10363
10364 * gc_os_dep.c (GC_noop1): Move before `GC_find_limit' where it is
10365 used; nfc. Thanks to Bill Schottstaedt.
10366
10367 * validate.h (SCM_VALIDATE_USHORT_COPY, SCM_VALIDATE_SHORT_COPY,
10368 SCM_VALIDATE_UINT_COPY, SCM_VALIDATE_INT_COPY): New macros.
10369 Thanks to Chris Cramer.
10370
b573e744
MV
103712001-08-25 Marius Vollmer <mvo@zagadka.ping.de>
10372
10373 * Makefile.am (AUTOMAKE_OPTIONS): Change "foreign" to "gnu".
10374
10375 * eval.c (scm_m_atbind): Redesigned to behvae like `let', but with
10376 dynamic scope.
10377 * dynwind.h (scm_swap_bindings): Declare.
10378 * dynwind.c (scm_swap_bindings): Make non-static.
10379
8a3e715b
ML
103802001-08-25 Michael Livshin <mlivshin@bigfoot.com>
10381
10382 * gc.c (scm_gc_sweep): now can sweep unreachable variables (by
10383 doing exactly nothing about them). thanks Neil!
10384
cf504ee0
NJ
103852001-08-18 Neil Jerram <neil@ossau.uklinux.net>
10386
10387 * __scm.h (SCM_ENABLE_VCELLS): Fix spelling mistake in comment.
ec2667f0 10388
43b83b54
TTN
103892001-08-17 Thien-Thi Nguyen <ttn@revel.glug.org>
10390
10391 * gc.c: Fix omission bug: Add `heap_segment' forward decl
10392 (proto) in the case when either `GUILE_DEBUG' or
10393 `GUILE_DEBUG_FREELIST' preprocessor symbols are defined.
10394
10395 (map_free_list): Fix typo: Ref `f' correctly.
10396
10397 Thanks to Chris Cramer.
10398
ab4cd34b
RB
103992001-08-15 Rob Browning <rlb@defaultvalue.org>
10400
10401 * Makefile.am (libguile_la_LDFLAGS): use libtool interface version
10402 variables.
10403 (libpath.h): change libguileversion to libguileinterface.
10404
b754e3d1
MV
104052001-08-07 Marius Vollmer <mvo@zagadka.ping.de>
10406
10407 * Makefile.am (EXTRA_DIST): Distribute ChangeLog-1996-1999 and
10408 ChangeLog-2000. Thanks to Daniel Skarda!
10409
8b1d12c7
ML
104102001-08-07 Michael Livshin <mlivshin@bigfoot.com>
10411
10412 * guile-snarf-docs-texi.in: don't call the tokenizer here, we now
10413 do it from the Makefile.
10414
10415 * Makefile.am: rearrange the snarfing slightly, so that .doc files
10416 are of a reasonable size.
10417
baffb19f
NJ
104182001-08-02 Neil Jerram <neil@ossau.uklinux.net>
10419
10420 * stacks.c (scm_make_stack): Improve docstring by explaining use
10421 of cutting args.
10422
c1151355
MV
104232001-08-01 Marius Vollmer <mvo@zagadka.ping.de>
10424
10425 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
10426 scm_char_whitespace_p, scm_char_upper_case_p,
10427 scm_char_lower_case_p, scm_char_is_both_p): Do not require
10428 characters to fulfill isascii in addition to the primary
10429 predicate.
10430
3c9a524f
DH
104312001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10432
10433 * numbers.c (DIGITS, scm_small_istr2int, scm_istr2int,
10434 scm_istr2flo, scm_istring2number): Removed.
10435
10436 (iflo2str, scm_real_p, scm_integer_p): Use SCM_<foo> instead of
10437 SCM_SLOPPY_<foo>.
10438
10439 (t_exactness, t_radix, DIGIT2UINT, XDIGIT2UINT, mem2uinteger,
10440 mem2decimal_from_point, mem2ureal, mem2complex, scm_i_mem2number):
10441 Added.
10442
10443 (scm_string_to_number): Use new number parser.
10444
10445 (scm_exact_to_inexact): Replace dummy by a GPROC, which also
10446 handles complex numbers.
10447
10448 * numbers.h (NUMBERSH, SCM_NUMBERS_H): Rename <foo>H to
10449 SCM_<foo>_H.
10450
10451 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Prefer !SCM_<pred> over
10452 SCM_N<pred>.
10453
10454 (scm_istr2int, scm_istr2flo, scm_istring2number): Removed.
10455
10456 (scm_i_mem2number): Added.
10457
10458 (scm_exact_to_inexact): Changed signature.
10459
10460 * read.c (scm_lreadr): Perform the shortcut test for '+ and '-
10461 here instead of within scm_i_mem2number. Call scm_i_mem2number
10462 instead of scm_istr2int and scm_istring2number.
10463
01f11e02
DH
104642001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10465
10466 * eval.c (scm_lookupcar, scm_m_body, scm_m_lambda, unmemocopy,
10467 scm_unmemocopy, scm_badargsp, scm_eval_body, CHECK_EQVISH,
10468 SCM_CEVAL, scm_nconc2last, SCM_APPLY, scm_copy_tree): Prefer
10469 !SCM_<pred> over SCM_N<pred>.
10470
10471 (scm_eval_body): Remove side effecting code from macro call.
10472
10473 (SCM_CEVAL, SCM_APPLY): Remove goto statement and redundant
10474 SCM_NIMP test.
10475
6cf69537
DH
104762001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10477
10478 * pairs.h (SCM_VALIDATE_PAIR): Use SCM_CONSP, not SCM_ECONSP.
10479
54866b6c
MV
104802001-07-29 Marius Vollmer <mvo@zagadka.ping.de>
10481
10482 Removed vcell slot from structs.
43b83b54 10483
54866b6c
MV
10484 * struct.h (scm_vtable_index_vcell): Removed. Renumbered
10485 subsequent indices.
10486
10487 * struct.c (scm_struct_vtable_p): Do not check vcell slot for
10488 zero. Use scm_vtable_index_layout instead of "0" when accessing
10489 said slot.
10490 (scm_init_struct): Remove vcell slot layout code from
10491 required_vtable_fields.
10492
10493 * objects.h (scm_si_redefined, scm_si_hashsets): Renumbered.
10494
10495 * goops.c (build_class_class_slots): Removed vcell slot
10496 definition.
10497
10498 * goops.h: Renumbered slot indices. (SCM_CLASS_CLASS_LAYOUT):
10499 Removed vcell slot layout code.
10500 (scm_si_vcell): Removed.
10501
5b54c4da
MV
105022001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
10503
a0f5718e 10504 "Glocs" have been removed.
43b83b54 10505
a0f5718e
MV
10506 * tags.h: Update tag system docs.
10507 (scm_tc3_cons_gloc): Renamed to scm_tc3_struct. Changed all uses.
10508 (scm_tcs_cons_gloc): Renamed to scm_tcs_struct. Changed all uses.
10509 (SCM_ECONSP, SCM_NECONSP): Removed. Changed all uses to SCM_CONSP
10510 or SCM_NCONSP, respectively.
10511
10512 * struct.c, struct.h, srcprop.c, procs.c, procprop.c, print.c,
10513 objects.c. modules.c, goops.c, eval.c, debug.c: Changed all uses
10514 of scm_tc3_cond_gloc and scm_tcs_cons_gloc. See above.
10515
10516 * print.c (scm_iprin1): Remove printing of glocs. Do not try to
10517 tell glocs from structs.
43b83b54 10518
a0f5718e
MV
10519 * gc.c (scm_gc_mark, scm_gc_sweep): Remove handling of glocs.
10520
10521 * eval.c (scm_m_atbind): Make a list of variables, not glocs.
10522 (scm_ceval, scm_deval): For SCM_IM_BIND, fiddle with variables
10523 instead of with glocs.
10524 (EVALCAR): Do not test for glocs.
10525 (scm_lookupcar, scm_lookupcar1): Do not handle glocs in race
10526 condition.
10527 (scm_unmemocar): Do not handle glocs.
10528 (scm_m_atfop): Memoize as a variable, not as a gloc.
10529 (scm_eval_args, scm_deval_args): Do not handle glocs.
10530 (scm_ceval, scm_deval): Likewise.
43b83b54 10531
a0f5718e
MV
10532 * eval.h (SCM_XEVALCAR): Do not test for glocs.
10533 (SCM_GLOC_VAR, SCM_GLOC_VAL, SCM_GLOC_SET_VAL, SCM_GLOC_VAL_LOC):
10534 Removed.
10535
10536 * debug.h, debug.c (scm_make_gloc, scm_gloc_p): Removed.
10537
10538 * dynwind.c (scm_swap_bindings): Likewise.
10539 (scm_dowinds): Updated to recognize lists of variables instead of
10540 lists of glocs.
10541
10542 * __scm.h (SCM_CAUTIOS, SCM_RECKLESS): Update comments.
10543
43b83b54 10544
5b54c4da
MV
10545 * gc_os_dep.c (GC_noop1): Moved into the same #if/#endif context
10546 where it is needed.
43b83b54 10547
3c3db128
GH
105482001-07-25 Gary Houston <ghouston@arglist.com>
10549
10550 * numbers.c (scm_logand, scm_logior, scm_logxor): adjusted the
10551 docstrings to reflect the n-ary implementation.
10552
dd29a169
MV
105532001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
10554
10555 * eval.c (scm_ceval, scm_deval): Use "RETURN" macro when returning
10556 value of a variable, not the plain "return" statement.
10557
f5fe6c2f
MV
105582001-07-25 Marius Vollmer <mvo@zagadka.ping.de>
10559
10560 * eval.c: Allow variables in memoized code (in addition to glocs).
10561 (scm_lookupcar): Handle variables in lost races. Replace symbol
10562 with variable directly, do not make a gloc.
10563 (scm_unmemocar): Rewrite variables using a reverse lookup, just
10564 like glocs.
10565 (scm_ceval, scm_deval): Deal with variables in SCM_IM_SET and in
10566 the main switch.
10567
ee0c7345
MV
105682001-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
10569
6d9ad98a
MV
10570 * variable.c (scm_i_variable_print): Use "value" instead of
10571 "binding" since a binding is the mapping between symbols and
10572 variables, not between variables and their values.
10573
ee0c7345
MV
10574 * tags.h (scm_tc7_variable): New.
10575 * gc.c (scm_gc_mark): Handle scm_tc7_variable objects.
10576 * print.c (scm_iprin1): Likewise.
10577
10578 * variable.h (scm_tc16_variable): Removed.
10579 (SCM_VARIABLEP): Test for new tc7 code.
10580 (scm_i_variable_print): New.
10581 * variable.c (scm_tc16_variable): Removed.
10582 (variable_print): Renamed to scm_i_variable_print and made
10583 non-static.
10584 (variable_equal_p): Removed.
10585 (make_variable): Construct a tc7 object instead of a smob.
10586 (scm_init_variable): Do not register smob.
43b83b54 10587
f3805ebb
MV
105882001-07-22 Marius Vollmer <mvo@zagadka.ping.de>
10589
10590 * tags.h: Include inttypes.h when we have it.
10591
105922001-07-13 Marius Vollmer <mvo@zagadka.ping.de>
10593
10594 * tags.h (SCM_UNBOUND): Make it the 34th isym/iflag, the 33th slot
10595 is taken by the new SCM_IM_CALL_WITH_VALUES.
10596 * print.c (scm_isymnames): Update table accordingly.
43b83b54 10597
6a1677a3
GH
105982001-07-22 Gary Houston <ghouston@arglist.com>
10599
10600 * regex-posix.c (s_scm_regexp_exec): use scm_long2num not
10601 SCM_MAKINUM to convert regoff_t value to SCM.
10602
1bed8c28
GH
106032001-07-21 Gary Houston <ghouston@arglist.com>
10604
10605 * scmsigs.c: include sys/time.h for itimer stuff.
10606
e658215a
RB
106072001-07-19 Rob Browning <rlb@defaultvalue.org>
10608
10609 * gc_os_dep.c (GC_noop1): ifdef out (unused) to quiet warning.
10610
10611 * c-tokenize.lex: add option %nounput to quiet warning.
10612 Add prototype for yylex to quiet warning.
10613
10614 * scmconfig.h.in: add flags for setitimer and getitimer.
10615
10616 * scmsigs.h (scm_init_scmsigs): new prototype.
10617 (scm_init_scmsigs): new prototype.
10618
10619 * scmsigs.c (s_scm_setitimer): new function.
10620 (s_scm_setitimer): new function.
10621
58ade102
MG
106222001-07-18 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10623
10624 * alist.c, arbiters.c, async.h, backtrace.h, boolean.c, chars.c,
10625 chars.h, continuations.h, debug-malloc.h, dynl.c, feature.c,
10626 feature.h, filesys.h, fluids.h, fports.h, gc_os_dep.c,
10627 gdb_interface.h, gh_eval.c, gh_funcs.c, gh_io.c, gh_list.c,
10628 gh_predicates.c, gsubr.c, gsubr.h, guardians.h,
10629 guile-func-name-check.in, guile-snarf-docs-texi.in,
10630 guile-snarf-docs.in, guile-snarf.awk.in, guile-snarf.in,
10631 hashtab.h, iselect.h, keywords.h, lang.c, list.h, load.h,
10632 objprop.c, objprop.h, options.c, options.h, random.h,
10633 regex-posix.h, root.c, root.h, script.c, snarf.h, stackchk.c,
10634 strerror.c, strop.h, strports.h, threads.h, values.c, values.h,
10635 version.c, version.h: Updated copyright notice.
10636
6b80d352
DH
106372001-07-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
10638
10639 * goops.c (sym_layout, sym_vcell, sym_vtable, sym_print,
10640 sym_procedure, sym_setter, sym_redefined, sym_h0, sym_h1, sym_h2,
10641 sym_h3, sym_h4, sym_h5, sym_h6, sym_h7, sym_name,
10642 sym_direct_supers, sym_direct_slots, sym_direct_subclasses,
10643 sym_direct_methods, sym_cpl, sym_default_slot_definition_class,
10644 sym_slots, sym_getters_n_setters, sym_keyword_access, sym_nfields,
10645 sym_environment, scm_sym_change_class): New static variables to
10646 hold predefined symbols.
10647
10648 (build_class_class_slots): Build the list using scm_list_n
10649 instead of cons. Also, slots are already created as lists, thus
10650 making a call to maplist unnecessary.
10651
10652 (scm_class_name, scm_class_direct_supers, scm_class_direct_slots,
10653 scm_class_direct_subclasses, scm_class_direct_methods,
10654 scm_class_precedence_list, scm_class_slots, scm_class_environment,
10655 scm_method_procedure, create_standard_classes, purgatory): Use
10656 predefined symbols.
10657
10658 (build_slots_list, compute_getters_n_setters,
10659 scm_sys_initialize_object, scm_sys_inherit_magic_x,
10660 get_slot_value_using_name, set_slot_value_using_name,
10661 scm_sys_invalidate_method_cache_x, scm_generic_capability_p,
10662 scm_compute_applicable_methods, scm_sys_method_more_specific_p,
10663 make_struct_class): Prefer !SCM_<pred> over SCM_N<pred>.
10664
10665 (scm_sys_prep_layout_x): Minimize variable scopes.
10666
10667 (scm_sys_prep_layout_x, scm_sys_fast_slot_ref,
10668 scm_sys_fast_slot_set_x): Fix signedness.
10669
10670 (go_to_hell, go_to_heaven, purgatory, scm_change_object_class,
10671 lock_cache_mutex, unlock_cache_mutex, call_memoize_method,
10672 scm_memoize_method, scm_wrap_object): Use packing and unpacking
10673 when converting to and from SCM values.
10674
10675 (scm_enable_primitive_generic_x): Add rest argument checking.
10676
10677 (map, filter_cpl, maplist, scm_sys_initialize_object,
10678 scm_sys_prep_layout_x, slot_definition_using_name,
10679 scm_enable_primitive_generic_x, scm_compute_applicable_methods,
10680 call_memoize_method, scm_make, scm_make_class): Prefer explicit
10681 predicates over SCM_N?IMP tests.
10682
10683 (scm_sys_prep_layout_x): Fix typo in error message. Fix type
10684 checking.
10685
10686 (burnin, go_to_hell): Use SCM_STRUCT_DATA instead of the SCM_INST
10687 alias.
10688
63bcad19
DH
106892001-07-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
10690
10691 * fports.c (fport_print): Don't use SCM_C[AD]R for non pairs.
10692
10693 * num2integral.i.c (INTEGRAL2NUM, INTEGRAL2BIG): Fix signedness.
10694
10695 * symbols-deprecated.c (scm_gentemp): Simplify vector test.
10696
10697 * vectors.c (scm_vector_p): Eliminate redundant IMP test.
10698
4d6aae71
ML
106992001-07-12 Michael Livshin <mlivshin@bigfoot.com>
10700
10701 * strings.c (s_scm_string): fix arg position in assert.
10702
4b8ec619
GH
107032001-07-11 Gary Houston <ghouston@arglist.com>
10704
10705 * strports.c (st_write): use memcpy, not strncpy. thanks to
10706 Dale P. Smith.
10707
dbb640bd
TTN
107082001-07-09 Thien-Thi Nguyen <ttn@revel.glug.org>
10709
10710 * alist.c, alloca.c, arbiters.c, async.c, async.h, backtrace.c,
10711 boolean.c, chars.c, continuations.c, coop-defs.h, coop-threads.c,
10712 debug-malloc.h, debug.c, debug.h, dynl.c, dynwind.c, eq.c,
10713 error.c, eval.c, evalext.c, feature.c, feature.h, filesys.c,
10714 filesys.h, fluids.c, fluids.h, fports.c, fports.h, gc.c, gc.h,
10715 gdbint.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
10716 hooks.h, inet_aton.c, init.c, ioext.c, keywords.c, keywords.h,
10717 lang.c, list.c, load.c, macros.c, mallocs.c, memmove.c, modules.c,
10718 net_db.c, numbers.c, numbers.h, objects.c, objprop.c, options.c,
10719 pairs.c, pairs.h, ports.c, ports.h, posix.c, print.c, print.h,
10720 procprop.c, procs.c, procs.h, properties.c, putenv.c, ramap.c,
10721 random.c, random.h, read.c, regex-posix.c, regex-posix.h, root.c,
10722 root.h, scmsigs.c, script.c, simpos.c, smob.c, snarf.h, socket.c,
10723 sort.c, srcprop.c, srcprop.h, stackchk.c, stacks.c, stacks.h,
10724 stime.c, strerror.c, strings.c, strings.h, strop.c, strorder.c,
10725 strports.c, struct.c, struct.h, symbols-deprecated.c, symbols.c,
10726 symbols.h, tags.h, threads.c, threads.h, throw.c, unif.c, unif.h,
10727 variable.c, variable.h, vectors.c, vectors.h, version.c, vports.c,
10728 weaks.c, weaks.h: Remove "face-lift" comment.
10729
fd6c6321
RB
107302001-07-08 Rob Browning <rlb@defaultvalue.org>
10731
10732 * .cvsignore: add stamp-h.in.
10733
f91e4547
MG
107342001-07-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10735
10736 * hooks.c (scm_make_hook, scm_add_hook_x),
10737 (scm_remove_hook_x, scm_reset_hook_x, scm_run_hook): Added return
10738 value info to the docstrings.
10739
7beabedb
MG
107402001-07-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10741
10742 Some more compatibility patches for Windows.
dbb640bd 10743
7beabedb
MG
10744 * posix.c (getlogin): getlogin() implementation for Windows.
10745
10746 * backtrace.c, ioext.c: Include <stdio.h>.
10747
10748 * unif.c, script.c, rw.c, error.c: Include <io.h>, if it does
10749 exist.
10750
10751 * cpp_sig_symbols.in: Added SIGBREAK.
10752
0d0560d0
MV
107532001-07-01 Marius Vollmer <mvo@zagadka.ping.de>
10754
10755 * strports.c (scm_read_0str, scm_eval_0str): Call
10756 scm_c_read_string and scm_c_eval_string respectively, not
10757 themselves. Thanks to Dale P. Smith!
10758
9a97e362
DH
107592001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10760
10761 * unif.c (scm_array_set_x): The variable args does not
10762 necessarily have to be a list. Further, got rid of a redundant
10763 SCM_NIMP test.
10764
592996c9
DH
107652001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10766
10767 * list.c (SCM_I_CONS): Make sure the cell type is initialized
10768 last.
10769
10770 * gc.c (s_scm_map_free_list, scm_igc, scm_gc_sweep,
f91e4547 10771 init_heap_seg): Fixed signedness.
592996c9
DH
10772
10773 (init_heap_seg): Replaced strange for-loop with a while loop.
10774
10775 * weaks.h (WEAKSH, SCM_WEAKS_H): Rename <foo>H to SCM_<foo>_H.
10776
10777 (SCM_WVECTP): Prefer !SCM_<pred> over SCM_N<pred>.
10778
10779 The following patch adds conservative marking for the elements of
10780 free or allocated cells.
10781
10782 * gc.c (allocated_mark, heap_segment): New static functions.
10783
10784 (which_seg): Deleted, since the functionality is now provided by
10785 function heap_segment.
10786
10787 (map_free_list): Use heap_segment instead of which_seg.
10788
10789 (MARK): If cell debugging is disabled, mark free cells
10790 conservatively.
10791
10792 (scm_mark_locations, scm_cellp): Extracted the search for the
10793 heap segment of a SCM value into function heap_segment.
10794
10795 (scm_init_storage): Allocated cells must be marked
10796 conservatively.
10797
10798 * gc.[ch] (scm_gc_mark_cell_conservatively): New function.
10799
10800 The following patch changes the representation of weak vectors to
10801 double cells instead of using an extension of the vector's
10802 allocated memory.
10803
10804 * gc.c (MARK): Use SCM_SET_WVECT_GC_CHAIN instead of assigning to
10805 the result of SCM_WVECT_GC_CHAIN.
10806
10807 (scm_gc_sweep): Weak vectors don't have extra fields any more.
10808
10809 * weaks.c (allocate_weak_vector): New static function. It does
10810 not patch any previously created vector object during the
10811 construction of a weak vector, and thus doesn't need to switch
10812 off interrupts during vector creation.
10813
10814 (scm_make_weak_vector, scm_make_weak_key_hash_table,
10815 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
10816 Use allocate_weak_vector to provide the new weak vector object.
10817
10818 * weaks.h (SCM_WVECT_TYPE, SCM_SET_WVECT_TYPE,
10819 SCM_SET_WVECT_GC_CHAIN): New macros. The weak vector subtype is
10820 now stored in the double cell.
10821
10822 (SCM_IS_WHVEC, SCM_IS_WHVEC_V, SCM_IS_WHVEC_B, SCM_IS_WHVEC_ANY):
10823 Use SCM_WVECT_TYPE.
10824
10825 (SCM_WVECT_GC_CHAIN): The weak objects are now chained together
10826 using an entry of the double cell.
10827
4dadf664
TTN
108282001-06-30 Thien-Thi Nguyen <ttn@revel.glug.org>
10829
10830 * stamp-h.in: bye bye
10831
02202352
MV
108322001-06-30 Marius Vollmer <mvo@zagadka.ping.de>
10833
10834 * gh_eval.c (gh_eval_str): Use scm_c_eval_string instead of
10835 scm_eval_0str.
10836
10837 * load.c, load.h (scm_c_primitive_load,
10838 scm_c_primitive_load_path): New.
10839
10840 * strports.c, strports.h (scm_c_read_string): Renamed from
10841 scm_read_0str. Also, added "const" qualifier to argument.
10842 (scm_c_eval_string): Renamed from scm_eval_0str.
10843 (scm_read_0str, scm_eval_0str): Deprecated.
10844
df1ad0d1
MG
108452001-06-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10846
10847 * fluids.c (scm_c_with_fluid): Use scm_list_1() instead of
10848 SCM_LIST1.
10849
1afff620
KN
108502001-06-28 Keisuke Nishida <kxn30@po.cwru.edu>
10851
10852 * list.h (scm_list_1, scm_list_2, scm_list_3, scm_list_4, scm_list_5,
10853 scm_list_n): New functions.
10854 (SCM_LIST0, SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5,
10855 SCM_LIST6, SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify): Deprecated.
10856 (lots of files): Use the new functions.
4dadf664 10857
1afff620
KN
10858 * goops.c (CALL_GF1, CALL_GF2, CALL_GF3, CALL_GF4): Use scm_call_N.
10859
10860 * strings.c: #include "libguile/deprecation.h".
10861
b858464a
MG
108622001-06-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10863
10864 * read.c (scm_lreadr): When reading a hash token, check for a
10865 user-defined hash procedure first, so that overriding the builtin
10866 hash characters is possible (this was needed for implementing
10867 SRFI-4's read synax `f32(...)').
4dadf664 10868
b858464a
MG
10869 * num2integral.i.c: Use scm_t_signed_bits instead of scm_t_bits,
10870 because the latter is unsigned now and breaks comparisons like
10871 (n < (scm_t_signed_bits)MIN_VALUE).
4dadf664 10872
d95c0b76
NJ
108732001-06-26 Neil Jerram <neil@ossau.uklinux.net>
10874
10875 * eval.h, eval.c (scm_call_4): New function.
10876
10877 * eval.c (SCM_APPLY, SCM_CEVAL, ENTER_APPLY): Call trap handlers
10878 directly rather than dispatching to them via scm_ithrow and a lazy
10879 catch.
4dadf664 10880
d95c0b76
NJ
10881 * eval.c (scm_evaluator_trap_table), eval.h (SCM_ENTER_FRAME_HDLR,
10882 SCM_APPLY_FRAME_HDLR, SCM_EXIT_FRAME_HDLR): Add three new options
10883 for trap handler procedures.
10884
10885 * debug.h (SCM_RESET_DEBUG_MODE): Add checks for trap handler
10886 procedures not being #f.
10887
30e3be5a
ML
108882001-06-27 Michael Livshin <mlivshin@bigfoot.com>
10889
10890 * Makefile.am (c-tokenize.c): add rule to generate it.
10891 (EXTRA_DIST): add c-tokenize.lex, so it gets distributed.
10892
10893 filter-doc-snarfage.c: remove.
10894
82893676
MG
108952001-06-26 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10896
10897 * ports.c (scm_output_port_p): Use result of SCM_COERCE_OUTPORT.
10898
10899 The following set of changes makes compiling Guile under various
10900 Windows compilers easier. Compilation under GNU systems should
10901 not be affected at all.
10902
10903 Thanks to Stefan Jahn for all necessary information, patches and
10904 testing.
4dadf664 10905
82893676
MG
10906 * posix.c: Conditialize getpwent, getgrent, kill, getppid, getuid,
10907 getpgrp, ttyname, primitive-fork and some header inclusion for
10908 Windows.
10909
10910 * random.c: Define M_PI, if not predefined and use __int64 for
10911 LONG64 under Windows.
10912
10913 * scmsigs.c: Emulate some functions (alarm, sleep, kill) under
10914 Windows and conditionalize some signal names.
10915
4dadf664 10916 * socket.c (scm_getsockopt): Added missing comma.
82893676
MG
10917 Include socket library header under Windows.
10918
10919 * stime.c (CLKTCK): Add cast to int, to make it compile under
10920 Windows.
10921
10922 * ports.c (truncate): New function, compiled only under Windows.
10923
10924 * net_db.c: Do not declare errno under Windows.
10925
10926 * iselect.h, inet_aton.c: Include socket library headers under
10927 Windows.
10928
10929 * guile.c (inner_main): Under Windows, initialize socket library
10930 and initialize gdb_interface data structures.
10931
10932 * gdb_interface.h: Under Windows, gdb_interface cannot be
10933 initialized statically. Initialize at runtime instead.
10934
10935 * fports.c (write_all): ssize_t -> size_t.
10936 (fport_print): Conditionalize call to ttyname().
10937 (getflags): New function, compiled only under Windows.
10938
10939 * filesys.c: Conditionalize inclusion of <pwd.h>. Conditionalize
10940 primitives chown, link, fcntl.
10941 (scm_basename, scm_dirname): Under Windows, handle \ as well as /
10942 as path seperator.
10943
10944 * backtrace.c: Include <io.h> under Windows.
10945
10946 * async.h (ASYNCH, SCM_ASYNC_H): Rename <foo>H to SCM_<foo>_H.
10947
10948 * _scm.h: Added preprocessor conditional for __MINGW32__ for errno
10949 declaration.
10950
fdc28395
KN
109512001-06-27 Keisuke Nishida <kxn30@po.cwru.edu>
10952
10953 * eval.c (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
10954 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): New functions.
10955 * eval.h (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
10956 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): Declared.
10957 * async.c (scm_run_asyncs), coop-threads.c (scheme_body_bootstrip,
10958 scheme_handler_bootstrip), debug.c (with_traps_inner), dynwind.c
10959 (scm_dynamic_wind, scm_dowinds), environments.c
10960 (import_environment_conflict), eval.c (scm_macroexp, scm_force,
10961 scm_primitive_eval_x, scm_primitive_eval), fluids.c (apply_thunk),
10962 goops.c (GETVAR, purgatory, make_class_from_template,
10963 scm_ensure_accessor), hashtab.c (scm_ihashx, scm_sloppy_assx,
10964 scm_delx_x, fold_proc), hooks.c (scm_c_run_hook), load.c
10965 (scm_primitive_load), modules.c (scm_resolve_module,
10966 scm_c_define_module, scm_c_use_module, scm_c_export,
10967 module_variable, scm_eval_closure_lookup, scm_sym2var,
10968 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
10969 ports.c (scm_port_for_each), print.c (scm_printer_apply),
10970 properties.c (scm_primitive_property_ref), ramap.c (ramap,
10971 ramap_cxr, rafe, scm_array_index_map_x, read.c (scm_lreadr),
10972 scmsigs.c (sys_deliver_signals), sort.c (applyless), strports.c
10973 (scm_object_to_string, scm_call_with_output_string,
10974 scm_call_with_input_string), throw.c (scm_body_thunk,
10975 scm_handle_by_proc, hbpca_body), unif.c (scm_make_shared_array,
10976 scm_make_shared_array), vports.c (sf_flush, sf_write,
10977 sf_fill_input, sf_close): Use one of the above functions.
10978 * goops.c, hashtab.c, scmsigs.c, sort.c: #include "libguile/root.h".
10979
36284627
DH
109802001-06-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
10981
10982 * filesys.c (scm_close), ports.c (scm_close_port,
10983 scm_port_closed_p), strop.c (scm_string_null_p): Use SCM_BOOL
10984 instead of SCM_NEGATE_BOOL.
10985
10986 * filesys.c (scm_stat): Clean up type dispatch.
10987
10988 * filesys.c (scm_stat), ports.c (scm_input_port_p,
10989 scm_output_port_p): Get rid of redundant IM type check.
10990
10991 * filesys.c (scm_readdir, scm_getcwd, scm_readlink), gh_data.c
10992 (gh_str2scm), load.c (scm_primitive_load, scm_internal_parse_path,
10993 scm_search_path), net_db.c (scm_gethost, scm_getnet, scm_getproto,
10994 scm_return_entry), numbers.c (scm_number_to_string), objects.c
10995 (scm_make_subclass_object), ports.c (scm_port_mode), read.c
10996 (scm_lreadr), simpos.c (scm_getenv), socket.c (scm_inet_ntoa,
10997 scm_addr_vector), stime.c (scm_strftime), strings.c
10998 (scm_makfromstrs, scm_makfrom0str, scm_substring), strings.h
10999 (SCM_STRING_COERCE_0TERMINATION_X), strop.c (string_copy,
11000 scm_string_split), strports.c (scm_strport_to_string), symbols.c
11001 (scm_symbol_to_string), vports.c (sf_write): Use scm_mem2string
11002 instead of scm_makfromstr.
11003
11004 * net_db.c (scm_sethost, scm_setnet, scm_setproto, scm_setserv),
11005 ports.c (scm_close_all_ports_except), read.c (scm_lreadr,
11006 scm_read_hash_extend), stime.c (scm_strftime), strings.c
11007 (scm_string_append, scm_string), strings.h (SCM_STRINGP,
11008 SCM_STRING_COERCE_0TERMINATION_X, SCM_RWSTRINGP), strop.c
11009 (string_capitalize_x): Prefer explicit type check over SCM_N?IMP,
11010 !SCM_<pred> over SCM_N<pred>.
11011
11012 * strings.[ch] (scm_makfromstr): Deprecated.
11013
11014 (scm_mem2string): New function, replaces scm_makfromstr.
11015
11016 * strings.c (scm_substring), strop.c (string_copy,
11017 scm_string_split), strports.c (scm_strport_to_string), symbols.c
11018 (scm_symbol_to_string): Fix gc problem.
11019
11020 * strings.h (STRINGSH, SCM_STRINGS_H): Rename <foo>H to
11021 SCM_<foo>_H.
11022
11023 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Eliminate
11024 warning about comparing signed and unsigned values. This fix is
11025 not optimal, since it won't work reliably if sizeof (c_start) >
11026 sizeof (size_t) or sizeof (c_end) > sizeof (size_t). A better
11027 solution is to define this macro as an inline function, thus
11028 allowing to specifiy the types of c_start and c_end.
11029
13dcb666
DH
110302001-06-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
11031
11032 * debug.h (SCM_DEBUGOBJ_FRAME): Deliver result as a
11033 scm_t_debug_frame*.
11034
11035 * debug.h (DEBUGH, SCM_DEBUG_H), stacks.h (STACKSH, SCM_STACKSH):
11036 Rename <foo>H to SCM_<foo>_H.
11037
11038 * stacks.c (NEXT_FRAME, narrow_stack): Prefer explicit type check
11039 over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
11040
11041 (narrow_stack): Make i unsigned. Don't use side-effecting
11042 operations in conditions.
11043
11044 (narrow_stack, scm_make_stack, scm_stack_id,
11045 scm_last_stack_frame): Get rid of redundant SCM_N?IMP checks.
11046
11047 (scm_make_stack, scm_stack_id, scm_last_stack_frame): Clean up
11048 type dispatch. No need to cast result of SCM_DEBUGOBJ_FRAME any
11049 more.
11050
11051 (scm_stack_ref, scm_frame_previous, scm_frame_next): Fix
11052 signedness.
11053
ea2c3968 11054 (scm_last_stack_frame): Remove bogus `;'.
13dcb666
DH
11055
11056 * stacks.h (SCM_FRAMEP): Fix type check.
11057
ac13d9d2
ML
110582001-06-25 Michael Livshin <mlivshin@bigfoot.com>
11059
ee0c0e03
ML
11060 * Makefile.am (MAINTAINERCLEANFILES): be sure to remove
11061 c-tokenize.c when doing maintainer-clean.
11062
ac13d9d2
ML
11063 * snarf.h (SCM_SNARF_DOCS): change the "grammar" slightly.
11064
11065 * guile-snarf-docs.in, guile-snarf-docs-texi.in: rewrite &
11066 simplify.
11067
11068 * eval.c: all hash signs are in column 0.
11069
11070 * Makefile.am (guile_filter_doc_snarfage): build using
11071 c-tokenize.c, not filter-doc-snarfage.c.
11072 rearrange snarfing dependencies a bit.
11073
11074 * c-tokenize.lex: new file.
11075
16be44e5
MV
110762001-06-25 Marius Vollmer <mvo@zagadka.ping.de>
11077
11078 * srcprop.h, srcprop.c (scm_srcprops_to_plist): Renamed from
11079 scm_t_srcpropso_plist. See the big type renaming.
11080 * coop-defs.h (scm_mutex_trylock, scm_cond_timedwait): Likewise.
11081 Thanks to Seth Alves!
4dadf664 11082
16be44e5
MV
11083 * numbers.c (SIZE_MAX, PTRDIFF_MIN, PTRDIFF_MAX): Only define when
11084 they aren't defined already.
11085
5843e5c9
DH
110862001-06-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
11087
11088 * backtrace.c (display_backtrace_body): Use SCM_VALIDATE_STACK
11089 and SCM_VALIDATE_OPOUTPORT instead of SCM_ASSERT. Fix signedness
11090 problem.
11091
11092 * backtrace.c (display_expression, scm_set_print_params_x,
11093 display_application, display_frame, scm_backtrace), numbers.c
11094 (scm_istring2number), objects.c (scm_class_of,
11095 scm_mcache_lookup_cmethod, scm_mcache_compute_cmethod): Prefer
11096 explicit type check over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
11097
11098 * fluids.c (scm_fluid_ref, scm_fluid_set_x): Fluid numbers are
11099 always positive.
11100
11101 * numbers.c (scm_i_mkbig): Remove unnecessary casts, remove
11102 unnecessary SCM_DEFER_INTS, SCM_ALLOW_INTS.
11103
11104 * objects.c (scm_class_of): Type fix.
11105
11106 (scm_mcache_lookup_cmethod): Improved comment, simplified,
11107 eliminated goto.
11108
11109 * pairs.h (scm_error_pair_access): The function can return if
11110 called recursively.
11111
6b41a313
MG
111122001-06-20 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11113
11114 * init.c (scm_init_guile_1): Removed initialization of tag.c.
11115
11116 * gdbint.c, init.c: Removed inclusion of tag.h.
11117
11118 * tag.h, tag.c: Removed files.
11119
11120 * Makefile.am: Removed tag.{h,c,doc,x} in various places.
11121
fbbdb121
GH
111222001-06-20 Gary Houston <ghouston@arglist.com>
11123
11124 * deprecation.c, extensions.c, rw.c: include string.h.
11125
72c17ed0
GH
111262001-06-19 Gary Houston <ghouston@arglist.com>
11127
11128 * filter-doc-snarfage.c (process): added ungetc in
11129 MULTILINE_COOKIE case since otherwise it fails when there's no
11130 space between the '(' and the quote of the following string
11131 (gcc 3.0).
11132
4ff9f825
MV
111332001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
11134
4927dd28
MV
11135 Throughout: replace "scm_*_t" with "scm_t_*", except "scm_lisp_t".
11136
b629af45
MV
111372001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
11138
11139 * unif.h (SCM_ARRAY_NDIM): Shift then cast so that no sign
0f002b27
MV
11140 extension takes place.
11141 * strings.h (SCM_STRING_LENGTH): Likewise.
11142 (SCM_STRING_MAX_LENGTH): Use unsigned numbers.
4dadf664 11143
4ff9f825
MV
11144 * __scm.h (ptrdiff_t): Typedef to long when configure didn't find
11145 it.
11146
11147 * tags.h: Include <stdint.h> when we have it.
11148 (scm_bits_t): Changed to be a unsigned type. Use uintptr_t when
11149 available. Else use "unsigned long".
11150 (scm_signed_bits_t): New.
11151
11152 * numbers.h (SCM_SRS): Cast shiftee to scm_signed_bits_t.
11153 (SCM_INUM): Cast result to scm_signed_bits_t.
11154
58bee6a8
TTN
111552001-06-13 Thien-Thi Nguyen <ttn@revel.glug.org>
11156
11157 * mkstemp.c: Update path to #include file scmconfig.h.
11158 Thanks to Golubev I. N.
11159
00d8d838
DH
111602001-06-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
11161
11162 * struct.h (SCM_STRUCT_VTABLE_FLAGS): New macro.
11163
ea2c3968 11164 * goops.h (SCM_NUMBER_OF_SLOTS): Removed bogus `\' at the end of
00d8d838
DH
11165 the macro definition.
11166
11167 (SCM_CLASSP, SCM_INSTANCEP, SCM_PUREGENERICP, SCM_ACCESSORP,
11168 SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Use SCM_STRUCT_VTABLE_FLAGS
11169 instead of SCM_INST_TYPE.
11170
11171 (SCM_ACCESSORP, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Make sure
11172 the object is a struct before accessing its struct flags.
11173
11174 (SCM_INST_TYPE, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Deprecated.
11175
495c67e5
GH
111762001-06-10 Gary Houston <ghouston@arglist.com>
11177
11178 * rdelim.c (scm_init_rdelim_builtins): don't try to activate the
11179 (ice-9 rdelim) module in (guile) and (guile-user). it didn't
11180 work reliably anymore. try it from boot-9.scm instead.
11181
6a9003d3
MV
111822001-06-09 Marius Vollmer <mvo@zagadka.ping.de>
11183
11184 * ports.c (scm_lfwrite): Maintain columnd and row count in port.
9a5fa6e9 11185 Thanks to Matthias Köppe!
58bee6a8 11186
47bcd646
ML
111872001-06-08 Michael Livshin <mlivshin@bigfoot.com>
11188
a88ff5b6
ML
11189 * snarf.h, filter-doc-snarfage.c: more changes to cope with
11190 space-happy C preprocessors.
11191
47bcd646 11192 * filter-doc-snarfage.c, guile-snarf.in: try to cope with spaces
9a5fa6e9 11193 inside cookies. thanks to Matthias Köppe!
47bcd646 11194
bab246f3
DH
111952001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
11196
11197 * keywords.c (keyword_print): Don't use SCM_C[AD]R to access
11198 keywords. Fix gc protection.
11199
11200 * objects.c (scm_mcache_lookup_cmethod): Don't use side effecting
11201 operations in macro calls.
11202
11203 * pairs.c (scm_error_pair_access): Avoid recursion.
11204
11205 Thanks to Matthias Koeppe for reporting the bugs that correspond
11206 to the following set of patches.
11207
11208 * unif.c (scm_bit_set_star_x, scm_bit_invert_x), vectors.h
11209 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Obtain the
11210 bitvector base address using SCM_BITVECTOR_BASE.
11211
11212 * unif.h (SCM_BITVECTOR_BASE): Return the base address as an
11213 unsigned long*.
11214
dcb410ec
DH
112152001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
11216
11217 * goops.c (SCM_CLASS_REDEF): Removed.
11218
11219 * vectors.h (VECTORSH, SCM_VECTORS_H): Renamed <foo>H to
11220 SCM_<foo>_H.
11221
11222 Thanks to Matthias Koeppe for reporting the bugs that correspond
11223 to the following set of patches.
11224
11225 * goops.c (scm_sys_prep_layout_x, scm_basic_basic_make_class,
11226 create_basic_classes, scm_sys_fast_slot_set_x, set_slot_value,
11227 scm_sys_allocate_instance, clear_method_cache,
11228 scm_sys_invalidate_method_cache_x, scm_make,
11229 create_standard_classes, scm_make_port_classes, scm_make_class,
11230 scm_add_slot): Use SCM_SET_SLOT to set slot values.
11231
11232 (prep_hashsets): Use SCM_SET_HASHSET to set class hash values.
11233
11234 * goops.h (SCM_SET_SLOT, SCM_SET_HASHSET): New macros.
11235
11236 * ramap.c (BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
11237 UNARY_ELTS_CODE): Remove bogus break statement.
11238
11239 * vectors.h (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR):
11240 Don't access bit vectors elements as SCM objects.
11241
11242 * weaks.c (scm_make_weak_vector, scm_make_weak_key_hash_table,
11243 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
11244 Don't assign to an unpacked value.
11245
e81d98ec
DH
112462001-06-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
11247
11248 * __scm.h (SCM_NORETURN): Moved here from error.h.
11249
11250 (SCM_UNUSED): New macro.
11251
11252 (SCM_DEBUG_PAIR_ACCESSES): New macro.
11253
11254 * backtrace.c (display_error_handler), continuations.c
11255 (continuation_print), debug.c (debugobj_print), dynwind.c
11256 (guards_print), environments.c (observer_print,
11257 core_environments_finalize, leaf_environment_cell,
11258 leaf_environment_print, eval_environment_print,
11259 eval_environment_observer, import_environment_define,
11260 import_environment_undefine, import_environment_print,
11261 import_environment_observer, export_environment_define,
11262 export_environment_undefine, export_environment_print,
11263 export_environment_observer), eval.c (scm_m_quote, scm_m_begin,
11264 scm_m_if, scm_m_set_x, scm_m_and, scm_m_or, scm_m_case,
11265 scm_m_cond, scm_m_lambda, scm_m_letstar, scm_m_do, scm_m_delay,
11266 scm_m_letrec1, scm_m_apply, scm_m_cont, scm_m_nil_cond,
11267 scm_m_nil_ify, scm_m_t_ify, scm_m_0_cond, scm_m_0_ify,
11268 scm_m_1_ify, scm_m_atfop, scm_m_at_call_with_values), evalext.c
11269 (scm_m_generalized_set_x), fluids.c (fluid_print), fports.c
11270 (fport_print), gc.c (gc_start_stats, scm_remember_upto_here_1,
11271 scm_remember_upto_here_2, scm_remember_upto_here, mark_gc_async),
11272 gh_init.c (gh_standard_handler), goops.c (get_slot_value,
11273 set_slot_value, test_slot_existence, scm_change_object_class,
11274 scm_m_atslot_ref, scm_m_atslot_set_x, make_struct_class,
11275 default_setter), guardians.c (guardian_print, guardian_gc_init,
11276 guardian_zombify, whine_about_self_centered_zombies), guile.c
11277 (inner_main), init.c (stream_handler), keywords.c (keyword_print),
11278 mallocs.c (malloc_print), numbers.c (scm_print_real,
11279 scm_print_complex, scm_bigprint), ports.c (flush_port_default,
11280 end_input_default, scm_port_print, fill_input_void_port,
11281 write_void_port), root.c (root_print), smob.c (scm_mark0,
11282 scm_free0, scm_smob_print, scm_smob_apply_1_error,
11283 scm_smob_apply_2_error, scm_smob_apply_3_error, free_print),
11284 stime.c (restorezone), strings.c (scm_makfromstr), struct.c
11285 (scm_struct_free_0, scm_struct_free_standard,
11286 scm_struct_free_entity, scm_struct_gc_init, scm_free_structs),
11287 throw.c (jmpbuffer_print, lazy_catch_print, ss_handler,
11288 scm_handle_by_throw, scm_ithrow), weaks.c
11289 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
11290 scm_scan_weak_vectors), ramap.c (scm_array_fill_int), filesys.c
11291 (scm_dir_print): Mark unused parameters with SCM_UNUSED.
11292
11293 * error.h (SCM_NORETURN): Moved to __scm.h.
11294
11295 * error.h (ERRORH, SCM_ERROR_H), pairs.h (PAIRSH, SCM_PAIRS_H):
11296 Renamed <foo>H to SCM_<foo>_H.
11297
11298 * gc.c (debug_cells_gc_interval): New static variable.
11299
11300 (scm_assert_cell_valid): If selected by the user, perform
11301 additional garbage collections.
11302
11303 (scm_set_debug_cell_accesses_x): Extended to let the user specify
11304 if additional garbage collections are desired.
11305
11306 (mark_gc_async): If additional garbage collections are selected
11307 by the user, don't call the after-gc-hook. Instead require the
11308 user to run the hook manually.
11309
11310 * pairs.c (scm_error_pair_access): New function. Only compiled
11311 if SCM_DEBUG_PAIR_ACCESSES is set to 1.
11312
11313 * pairs.h (SCM_VALIDATE_PAIR): New macro.
11314
11315 (SCM_CAR, SCM_CDR, SCM_SETCAR, SCM_SETCDR): If
11316 SCM_DEBUG_PAIR_ACCESSES is set to 1, make sure that the argument
11317 is a real pair object. (Glocs are also accepted, but that may
11318 change.) If not, abort with an error message.
11319
17fa3fcf
DH
113202001-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
11321
11322 * eval.c (SCM_VALIDATE_NON_EMPTY_COMBINATION): New macro.
11323
11324 (SCM_CEVAL, SCM_APPLY): Replace calls to SCM_EVALIM2 with calls
11325 to SCM_VALIDATE_NON_EMPTY_COMBINATION.
11326
feeedafb
MV
113272001-06-05 Marius Vollmer <mvo@zagadka.ping.de>
11328
11329 * extensions.c (scm_c_register_extension): Allow NULL as library
11330 name.
11331 (load_extension): Ignore NULL library names when comparing.
58bee6a8 11332
feeedafb
MV
11333 * hash.c (scm_hasher): Use SCM_UNPACK in the case labels so that
11334 non-pointers are being compared. Thanks to Alexander Klimov!
11335
4bcdfe46
GH
113362001-06-04 Gary Houston <ghouston@arglist.com>
11337
11338 * rw.c (scm_write_string_partial): new procedure implementing
11339 write-string/partial in (ice-9 rw).
11340 * rw.h: declare scm_write_string_partial.
58bee6a8 11341
f480396b
MV
113422001-06-04 Marius Vollmer <mvo@zagadka.ping.de>
11343
feeedafb
MV
11344 * keywords.c (keyword_print): Substract 1 from length of symbol
11345 name, accounting for the silly dash.
11346
11347 * dynl.c (scm_registered_modules, scm_clear_registered_modules):
11348 Do not emit deprecation warning.
11349
f480396b
MV
11350 Added exception notice to all files.
11351
11352 * dynl.c: Include "deprecation.h".
11353
c794483c
MV
113542001-06-03 Marius Vollmer <mvo@zagadka.ping.de>
11355
11356 * dynl.c (scm_register_module_xxx, scm_registered_modules,
11357 scm_clear_registered_modules): Deprecated.
11358
9454d8d5
RB
113592001-06-02 Rob Browning <rlb@cs.utexas.edu>
11360
11361 * .cvsignore: add guile_filter_doc_snarfage guile-snarf-docs
11362 guile-snarf-docs-texi.
11363
11364 * fports.c: HAVE_ST_BLKSIZE changed to
11365 HAVE_STRUCT_STAT_ST_BLKSIZE.
11366 (scm_fport_buffer_add): HAVE_ST_BLKSIZE changed to
11367 HAVE_STRUCT_STAT_ST_BLKSIZE.
11368
11369 * filesys.c (scm_stat2scm): HAVE_ST_RDEV changed to
11370 HAVE_STRUCT_STAT_ST_RDEV.
11371 (scm_stat2scm): HAVE_ST_BLKSIZE changed to
11372 HAVE_STRUCT_STAT_ST_BLKSIZE.
11373 (scm_stat2scm): HAVE_ST_BLOCKS changed to
11374 HAVE_STRUCT_STAT_ST_BLOCKS.
11375
114f9bab
MV
113762001-06-02 Marius Vollmer <mvo@zagadka.ping.de>
11377
b0c16cd9
MV
11378 * strports.c (scm_eval_string): Use scm_primitive_eval_x instead
11379 of scm_eval_x to allow module changes between the forms in the
11380 string. Set/restore module using scm_c_call_with_current_module.
11381
114f9bab
MV
11382 * mkstemp.c: New file, slightly modified from libiberties
11383 mkstemps.c.
11384
c99f9605
ML
113852001-05-31 Michael Livshin <mlivshin@bigfoot.com>
11386
11387 * guile-snarf-docs.in, guile-snarf-docs-texi.in,
11388 filter-doc-snarfage.c: new files.
11389
11390 * Makefile.am: add stuff to [build,] use and distribute
11391 guile-snarf-docs, guile-snarf-docs-texi, guile_filter_doc_snarfage.
11392
11393 * guile-snarf.in: grok the new snarf output.
11394
11395 * snarf.h: make the output both texttools- and `read'-friendly.
11396
47bcd646
ML
11397 * guile-doc-snarf.in: reimplement in terms of guile-snarf and
11398 guile-snarf-docs. (should also deprecate, I guess. maybe not).
c99f9605 11399
7eb5d7b2
MV
114002001-05-31 Marius Vollmer <mvo@zagadka.ping.de>
11401
11402 * print.c (scm_simple_format): Support "~~" and "~%". Signal
11403 error for unsupported format controls and for superflous
ec2667f0 11404 arguments. Thanks to Daniel Skarda!
7eb5d7b2
MV
11405
11406 * print.h, print.c (scm_print_symbol_name): Factored out of
11407 scm_iprin1.
11408 (scm_iprin1): Call it.
58bee6a8 11409
7eb5d7b2
MV
11410 * keywords.c (keyword_print): Use scm_print_symbol_name so that
11411 weird names are printed correctly.
11412
11413 * print.c (scm_print_symbol_name): Symbols whose name starts with
11414 `#' or `:' or ends with `:' are considered weird.
11415
609c3d30
MG
114162001-05-30 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11417
11418 * numbers.c (scm_difference, scm_divide): Clarified comments for -
11419 and /.
11420
114212001-05-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11422
11423 * debug.h: Removed prototype for scm_eval_string.
11424
8d09eb04
MG
114252001-05-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11426
11427 * symbols.c (scm_gensym): Fix buffer overrun (try `(gensym
58bee6a8 11428 (make-string 2000 #\!))' in an older version).
8d09eb04
MG
11429
11430 Change strncpy to memcpy to allow embedded NUL characters in
11431 symbol prefix.
11432
dd85ce47
ML
114332001-05-28 Michael Livshin <mlivshin@bigfoot.com>
11434
fde50407
ML
11435 * hooks.c (scm_create_hook): deprecated.
11436 (make_hook): deleted.
11437 (scm_make_hook): all the hook creation code is now here.
11438
11439 * gc.c (scm_init_gc): don't call `scm_create_hook'. instead make
11440 a hook, make it permanent, and do a `scm_c_define' on it.
11441
dd85ce47
ML
11442 * strop.c (s_scm_string_capitalize_x): fix docstring quoting.
11443
11444 * socket.c (s_scm_inet_pton): fix docstring quoting.
11445 (s_scm_inet_ntop): ditto.
11446
11447 * num2integral.i.c (INTEGRAL2NUM): cast to fix a warning.
11448
11449 * hashtab.c (scm_internal_hash_fold): fix argument position in
11450 SCM_ASSERT.
11451
11452 * environments.c (s_scm_import_environment_set_imports_x): fix
11453 argument position in SCM_ASSERT.
11454
11455 * debug.c (s_scm_make_gloc): fix SCM packing/unpacking.
11456 (s_scm_make_iloc): ditto.
11457
729dbac3
DH
114582001-05-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
11459
11460 * __scm.h (SCM_DEBUG_TYPING_STRICTNESS): Make 1 the default.
11461
11462 * eval.c (promise_print): Read the promise's value as an object.
11463
11464 (SCM_CEVAL): Don't perform side-effecting operations in macro
11465 parameters.
11466
11467 * eval.h (SCM_EVALIM2): Fix the typing strictness of the
11468 conditional expression.
11469
11470 * gc.c (scm_master_freelist, scm_master_freelist2): Added missing
11471 initializer.
11472
11473 * gh_data.c (gh_set_substr): Removed redundant unsigned >= 0
11474 text, removed redundant computation of effective_length and fixed
11475 the overflow check.
11476
11477 * goops.c (test_slot_existence): Use SCM_EQ_P to compare SCM
11478 values.
11479
11480 (wrap_init): Don't use SCM_C[AD]R for non pairs.
11481
11482 (hell): Make it a scm_bits_t pointer rather than a SCM pointer.
11483
11484 * goops.c (scm_sys_modify_class), strports.c (st_resize_port),
11485 struct.h (SCM_SET_STRUCT_PRINTER): Store unpacked values.
11486
11487 * goops.h (SCM_ACCESSORS_OF, SCM_SLOT): Return a SCM value.
11488
11489 * goops.h (GOOPSH, SCM_GOOPS_H), modules.h (MODULESH,
11490 SCM_MODULES_H), objects.h (OBJECTSH, SCM_OBJECTS_H), struct.h
11491 (STRUCTH, SCM_STRUCT_H), symbols.h (SYMBOLSH, SCM_SYMBOLS_H),
11492 __scm.h (__SCMH, SCM___SCM_H): Change <foo>H to SCM_<foo>_H.
11493
11494 * modules.[ch] (scm_module_tag): Make it a scm_bits_t value.
11495
11496 * objects.h (SCM_SET_CLASS_INSTANCE_SIZE): Fixed typing.
11497
ea2c3968 11498 * ramap.c (ramap_rp): Removed bogus `;'.
729dbac3
DH
11499
11500 * sort.c (scm_restricted_vector_sort_x): Fixed signedness
11501 problem.
11502
11503 * symbols.h (SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS, SCM_SYMBOL_FUNC,
11504 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS):
11505 Read SCM objects rather than scm_bits_t values.
11506
11507 * tags.h (SCM_VOIDP_TEST): Removed.
11508
11509 (SCM_DEBUG_TYPING_STRICTNESS): Now takes values 0, 1, 2. The
11510 value of 2 now corresponds to the former 1, the current 1
11511 corresponds to the former situation that SCM_VOIDP_TEST was
11512 defined.
11513
58bee6a8
TTN
11514 (SCM): Now defined as typedef struct scm_unused_struct * SCM;
11515 If this appears to be not ANSI compliant, we will change it to
729dbac3
DH
11516 typedef struct scm_unused_struct { } * SCM;
11517 Thanks to Han-Wen Nienhuys for the suggestion.
11518
11519 * unif.c (scm_array_set_x): Fix typing problem, and use
11520 SCM_UVECTOR_BASE instead of SCM_VELTS or SCM_CELL_WORD_1 when
11521 dealing with uniform vectors.
11522
6b1b030e
ML
115232001-05-27 Michael Livshin <mlivshin@bigfoot.com>
11524
11525 * gc.c (scm_init_storage): init `scm_gc_registered_roots'.
11526 (scm_igc): mark from them, too (precisely, not conservatively!).
11527
11528 * root.h (scm_gc_registered_roots): new object in
11529 scm_sys_protects.
11530
11531 * hooks.c (scm_create_hook): call `scm_gc_protect_object' instead
11532 `scm_protect_object'. shouldn't call it at all, though, it seems.
11533
11534 * gc.c (scm_[un]protect_object): deprecated.
11535 (scm_gc_[un]protect_object): new names for scm_[un]protect_object.
11536 (scm_gc_[un]register_root[s]): new.
11537
11538 * gc.h: add prototypes for scm_gc_[un]protect_object,
11539 scm_gc_[un]register_root[s].
11540
c014a02e
ML
115412001-05-26 Michael Livshin <mlivshin@bigfoot.com>
11542
11543 revert the controversial part of the 2001-05-24 changes.
11544
0120801d
MV
115452001-05-25 Marius Vollmer <mvo@zagadka.ping.de>
11546
f4e0611e
MV
11547 * modules.c (scm_env_module): Exported to Scheme.
11548
0120801d 11549 * eval.c (scm_debug_opts): New option `show-file-name'.
729dbac3 11550
0120801d 11551 * debug.h (SCM_SHOW_FILE_NAME): New.
729dbac3 11552
0120801d
MV
11553 * backtrace.c: Include "libguile/filesys.h".
11554 (sym_base, display_backtrace_get_file_line,
11555 display_backtrace_file, display_backtrace_file_and_line): New.
11556 (display_frame): Call display_backtrace_file_and_line if that is
11557 requested.
11558 (display_backtrace_body): Call scm_display_backtrace_file if
11559 requested.
11560
11561 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr):
11562 Prototypes removed since there's no definition for these
11563 functions.
11564
880a7d13
MG
115652001-05-24 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11566
11567 * unif.c (scm_make_ra, array_free), unif.h (SCM_ARRAY_DIMS):
11568 Changed use of scm_array->scm_array_t and
11569 scm_array_dim->scm_array_dim_t to enable build with
11570 --disable-deprecated.
11571
1be6b49c
ML
115722001-05-24 Michael Livshin <mlivshin@bigfoot.com>
11573
11574 The purpose of this set of changes is to regularize Guile's usage
11575 of ANSI C integral types, with the following ideas in mind:
11576
d69c867a
ML
11577 - SCM does not nesessarily have to be long.
11578 - long is not nesessarily enough to store pointers.
1be6b49c
ML
11579 - long is not nesessarily the same size as int.
11580
11581 The changes are incomplete and possibly buggy. Please test on
11582 something exotic.
11583
11584 * validate.h
11585 (SCM_NUM2{SIZE,PTRDIFF,SHORT,USHORT,BITS,UBITS,INT,UINT}[_DEF]):
11586 new macros.
11587
11588 * unif.h: type renaming:
11589 scm_array -> scm_array_t
11590 scm_array_dim -> scm_array_dim_t
11591 the old names are deprecated, all in-Guile uses changed.
11592
11593 * tags.h (scm_ubits_t): new typedef, representing unsigned
11594 scm_bits_t.
11595
11596 * stacks.h: type renaming:
11597 scm_info_frame -> scm_info_frame_t
11598 scm_stack -> scm_stack_t
11599 the old names are deprecated, all in-Guile uses changed.
11600
11601 * srcprop.h: type renaming:
11602 scm_srcprops -> scm_srcprops_t
11603 scm_srcprops_chunk -> scm_srcprops_chunk_t
11604 the old names are deprecated, all in-Guile uses changed.
11605
11606 * gsubr.c, procs.c, print.c, ports.c, read.c, rdelim.c, ramap.c,
11607 rw.c, smob.c, sort.c, srcprop.c, stacks.c, strings.c, strop.c,
11608 strorder.c, strports.c, struct.c, symbols.c, unif.c, values.c,
11609 vectors.c, vports.c, weaks.c:
11610 various int/size_t -> size_t/scm_bits_t changes.
11611
11612 * random.h: type renaming:
11613 scm_rstate -> scm_rstate_t
11614 scm_rng -> scm_rng_t
11615 scm_i_rstate -> scm_i_rstate_t
11616 the old names are deprecated, all in-Guile uses changed.
11617
11618 * procs.h: type renaming:
11619 scm_subr_entry -> scm_subr_entry_t
11620 the old name is deprecated, all in-Guile uses changed.
11621
11622 * options.h (scm_option_t.val): unsigned long -> scm_bits_t.
11623 type renaming:
11624 scm_option -> scm_option_t
11625 the old name is deprecated, all in-Guile uses changed.
11626
11627 * objects.c: various long -> scm_bits_t changes.
11628 (scm_i_make_class_object): flags: unsigned long -> scm_ubits_t
11629
11630 * numbers.h (SCM_FIXNUM_BIT): deprecated, renamed to
11631 SCM_I_FIXNUM_BIT.
11632
11633 * num2integral.i.c: new file, multiply included by numbers.c, used
11634 to "templatize" the various integral <-> num conversion routines.
11635
11636 * numbers.c (scm_mkbig, scm_big2num, scm_adjbig, scm_normbig,
11637 scm_copybig, scm_2ulong2big, scm_dbl2big, scm_big2dbl):
11638 deprecated.
11639 (scm_i_mkbig, scm_i_big2inum, scm_i_adjbig, scm_i_normbig,
11640 scm_i_copybig, scm_i_short2big, scm_i_ushort2big, scm_i_int2big,
11641 scm_i_uint2big, scm_i_long2big, scm_i_ulong2big, scm_i_bits2big,
11642 scm_i_ubits2big, scm_i_size2big, scm_i_ptrdiff2big,
11643 scm_i_long_long2big, scm_i_ulong_long2big, scm_i_dbl2big,
11644 scm_i_big2dbl, scm_short2num, scm_ushort2num, scm_int2num,
11645 scm_uint2num, scm_bits2num, scm_ubits2num, scm_size2num,
11646 scm_ptrdiff2num, scm_num2short, scm_num2ushort, scm_num2int,
11647 scm_num2uint, scm_num2bits, scm_num2ubits, scm_num2ptrdiff,
11648 scm_num2size): new functions.
11649
d69c867a 11650 * modules.c (scm_module_reverse_lookup): i, n: int -> scm_bits_t.
1be6b49c
ML
11651
11652 * load.c: change int -> size_t in various places (where the
11653 variable is used to store a string length).
11654 (search-path): call scm_done_free, not scm_done_malloc.
11655
11656 * list.c (scm_ilength): return a scm_bits_t, not long.
11657 some other {int,long} -> scm_bits_t changes.
11658
11659 * hashtab.c: various [u]int -> scm_bits_t changes.
11660 scm_ihashx_closure -> scm_ihashx_closure_t (and made a typedef).
11661 (scm_ihashx): n: uint -> scm_bits_t
11662 use scm_bits2num instead of scm_ulong2num.
11663
11664 * gsubr.c: various int -> scm_bits_t changes.
11665
11666 * goops.[hc]: various {int,long} -> scm_bits_t changes.
11667
d69c867a 11668 * gh_data.c (gh_num2int): no loss of precision any more.
1be6b49c
ML
11669
11670 * gh.h (gh_str2scm): len: int -> size_t
11671 (gh_{get,set}_substr): start: int -> scm_bits_t,
11672 len: int -> size_t
11673 (gh_<num>2scm): n: int -> scm_bits_t
11674 (gh_*vector_length): return scm_[u]size_t, not unsigned long.
11675 (gh_length): return scm_bits_t, not unsigned long.
11676
11677 * gc.[hc]: various small changes relating to many things stopping
11678 being long and starting being scm_[u]bits_t instead.
11679 scm_mallocated should no longer wrap around.
11680
11681 * fports.h: type renaming:
11682 scm_fport -> scm_fport_t
11683 the old name is deprecated, all in-Guile uses changed.
11684
11685 * fports.c (fport_fill_input): count: int -> scm_bits_t
11686 (fport_flush): init_size, remaining, count: int -> scm_bits_t
11687
11688 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr): removed
11689 those prototypes, as the functions they prototype don't exist.
11690
11691 * fports.c (default_buffer_size): int -> size_t
11692 (scm_fport_buffer_add): read_size, write_size: int -> scm_bits_t
11693 default_size: int -> size_t
11694 (scm_setvbuf): csize: int -> scm_bits_t
11695
11696 * fluids.c (n_fluids): int -> scm_bits_t
11697 (grow_fluids): old_length, i: int -> scm_bits_t
11698 (next_fluid_num, scm_fluid_ref, scm_fluid_set_x): n: int ->
11699 scm_bits_t
11700 (scm_c_with_fluids): flen, vlen: int -> scm_bits_t
11701
11702 * filesys.c (s_scm_open_fdes): changed calls to SCM_NUM2LONG to
11703 the new and shiny SCM_NUM2INT.
11704
11705 * extensions.c: extension -> extension_t (and made a typedef).
11706
11707 * eval.h (SCM_IFRAME): cast to scm_bits_t, not int. just so
11708 there are no nasty surprises if/when the various deeply magic tag
11709 bits move somewhere else.
11710
11711 * eval.c: changed the locals used to store results of SCM_IFRAME,
11712 scm_ilength and such to be of type scm_bits_t (and not int/long).
11713 (iqq): depth, edepth: int -> scm_bits_t
11714 (scm_eval_stack): int -> scm_bits_t
11715 (SCM_CEVAL): various vars are not scm_bits_t instead of int.
11716 (check_map_args, scm_map, scm_for_each): len: long -> scm_bits_t
11717 i: int -> scm_bits_t
11718
11719 * environments.c: changed the many calls to scm_ulong2num to
11720 scm_ubits2num.
11721 (import_environment_fold): proc_as_ul: ulong -> scm_ubits_t
11722
11723 * dynwind.c (scm_dowinds): delta: long -> scm_bits_t
11724
11725 * debug.h: type renaming:
11726 scm_debug_info -> scm_debug_info_t
11727 scm_debug_frame -> scm_debug_frame_t
11728 the old names are deprecated, all in-Guile uses changed.
11729 (scm_debug_eframe_size): int -> scm_bits_t
11730
11731 * debug.c (scm_init_debug): use scm_c_define instead of the
11732 deprecated scm_define.
11733
11734 * continuations.h: type renaming:
11735 scm_contregs -> scm_contregs_t
11736 the old name is deprecated, all in-Guile uses changed.
11737 (scm_contregs_t.num_stack_items): size_t -> scm_bits_t
11738 (scm_contregs_t.num_stack_items): ulong -> scm_ubits_t
11739
11740 * continuations.c (scm_make_continuation): change the type of
d69c867a 11741 stack_size from long to scm_bits_t.
1be6b49c
ML
11742
11743 * ports.h: type renaming:
11744 scm_port_rw_active -> scm_port_rw_active_t (and made a typedef)
11745 scm_port -> scm_port_t
11746 scm_ptob_descriptor -> scm_ptob_descriptor_t
11747 the old names are deprecated, all in-Guile uses changed.
11748 (scm_port_t.entry): int -> scm_bits_t.
11749 (scm_port_t.line_number): int -> long.
11750 (scm_port_t.putback_buf_size): int -> size_t.
11751
11752 * __scm.h (long_long, ulong_long): deprecated (they pollute the
d69c867a 11753 global namespace and have little value beside that).
1be6b49c
ML
11754 (SCM_BITS_LENGTH): new, is the bit size of scm_bits_t (i.e. of an
11755 SCM handle).
11756 (ifdef spaghetti): include sys/types.h and sys/stdtypes.h, if they
d69c867a 11757 exist (for size_t & ptrdiff_t).
1be6b49c
ML
11758 (scm_sizet): deprecated.
11759
11760 * Makefile.am (noinst_HEADERS): add num2integral.i.c
11761
a6219f22
MV
117622001-05-23 Marius Vollmer <mvo@zagadka.ping.de>
11763
11764 * snarf.h (SCM_CONST_LONG): Use SCM_VCELL_INIT instead of
11765 SCM_VARIABLE_INIT since that it what it used to be.
11766
11767 * deprecation.c (scm_include_deprecated_features): Make docstring
9a5fa6e9 11768 ANSIsh. Thanks to Matthias Köppe!
a6219f22 11769
311b6a3c
MV
117702001-05-21 Marius Vollmer <mvo@zagadka.ping.de>
11771
9dfc4faa
MV
11772 * symbols.c (scm_mem2symbol): Re-introduce indirect cell. It is
11773 needed for weak-key hashtables.
11774
11775 * procs.c (scm_make_subr_with_generic): Add missing last argument
11776 in call to scm_c_define_gsubr_with_generic. Thanks to Ariel Rios.
11777
11778 * eval.c: Use SCM_EQ_P instead of `==' or `!=' in certain
11779 places. (scm_c_improper_memq): Return 1 instead of SCM_BOOL_T.
311b6a3c
MV
11780
11781 * eval.h (SCM_EVALIM2): Use SCM_EQ_P instead of `=='.
11782
2fc933fe
MV
117832001-05-20 Marius Vollmer <mvo@zagadka.ping.de>
11784
57ae112d
MV
11785 * symbols.c (scm_mem2symbol): Call `scm_must_strndup' instead of
11786 `duplicate_string'. Do not use an indirect cell, store symbol
11787 directly in collision list of hash table.
11788 (duplicate_string): Removed.
58bee6a8 11789
57ae112d
MV
11790 * init.c (scm_init_guile_1): Call scm_init_extensions.
11791
11792 * Makefile.am: Add "extensions.c" and related files in all the
11793 right places.
11794
11795 * extensions.h, extension.c: New files.
11796
11797 * gc.h, gc.c (scm_must_strdup, scm_must_strndup): New.
11798
2fc933fe
MV
11799 * modules.h (scm_system_module_env_p): Move out of deprecated
11800 section.
11801
11802 * rw.h (scm_init_rw): Added prototype.
11803
11804 * gsubr.h, gsubr.c (scm_c_make_gsubr, scm_c_define_gsubr,
11805 scm_c_make_gsubr_with_generic, scm_c_define_gsubr_with_generic):
11806 New functions. They replace scm_make_gsubr and
11807 scm_make_gsubr_with_generic. The `make' variants only create the
11808 gsubr object, while the `define' variants also put it into the
11809 current module. Changed all callers.
11810 (scm_make_gsubr, scm_make_gsubr_with_generic): Deprecated.
11811
11812 * procs.h, procs.c (scm_c_make_subr, scm_c_define_subr,
11813 scm_c_make_subr_with_generic, scm_c_define_subr_with_generic): New
11814 functions. They replace scm_make_subr, scm_make_subr_opt and
11815 scm_make_subr_with_generic. The `make' variants only create the
11816 subr object, while the `define' variants also put it into the
11817 current module. Changed all callers.
11818 (scm_make_subr, scm_make_subr_opt, scm_make_subr_with_generic):
11819 Deprecated.
11820
11821 * eval.c, gc.c, gh_funcs.c, goops.c, macros.c, pairs.c, ramap.c,
11822 rdelim.c, rw.c, scmsigs.c, snarf.h, values.c: Changed according to
11823 the comments above.
58bee6a8 11824
18928596
NJ
118252001-05-19 Neil Jerram <neil@ossau.uklinux.net>
11826
11827 * throw.c (scm_lazy_catch): Slight docstring clarification.
11828
21a13beb
MV
118292001-05-19 Marius Vollmer <mvo@zagadka.ping.de>
11830
e2b6ddc6
MV
11831 * throw.c: Lazy-catch handlers are no longer allowed to return.
11832 Fixed comments throughout.
11833 (scm_ithrow): Signal an error when a lazy-catch handler returns.
11834 Moved actual jump to jmpbuf into if-branch where the jmpbuf is
11835 recognized as such.
11836
21a13beb
MV
11837 * version.c (s_scm_micro_version): Fix typo in FUNC_NAME, it
11838 refered to s_scm_minor_version previously.
11839
11840 * modules.h, modules.c: Moved around a lot of code so that
11841 deprecated features appear at the bottom.
11842 (root_module_lookup_closure, scm_sym_app, scm_sym_modules,
11843 module_prefix, make_modules_in_var, beautify_user_module_x_var,
11844 scm_the_root_module, scm_make_module, scm_ensure_user_module,
11845 scm_load_scheme_module): Deprecated.
11846 (scm_system_module_env_p): Return SCM_BOOL_T directly for
11847 environments corresponding to the root module.
11848 (convert_module_name, scm_c_resolve_module,
11849 scm_c_call_with_current_module, scm_c_define_module,
11850 scm_c_use_module, scm_c_export): New.
11851 (the_root_module): New static variant of scm_the_root_module. Use
11852 it everywhere instead of scm_the_root_module.
58bee6a8 11853
21a13beb
MV
11854 * fluids.h, fluids.c (scm_internal_with_fluids): Deprecated.
11855 (scm_c_with_fluids): Renamed from scm_internal_with_fluids.
11856 (scm_c_with_fluid): New.
11857 (scm_with_fluids): Use scm_c_with_fluids instead of
11858 scm_internal_with_fluids.
58bee6a8 11859
21a13beb
MV
11860 * goops.h, goops.c (scm_init_goops_builtins): Renamed from
11861 `scm_init_goops'. Do not explicitly create/switch modules.
11862 Return SCM_UNSPECIFIED.
11863 (scm_init_goops): Only register `%init-goops-builtins' procedure.
11864 (scm_load_goops): Use scm_c_resolve_module instead of
11865 scm_resolve_module.
58bee6a8 11866
21a13beb
MV
11867 * init.c (scm_init_guile_1): Call `scm_init_goops' instead of
11868 `scm_init_oop_goops_goopscore_module'. Call `scm_init_rdelim' and
11869 `scm_init_rw' prior to loading the startup files.
11870
11871 * rdelim.h, rdelim.c: (scm_init_rdelim_builtins): Renamed from
11872 scm_init_rdelim. Do not explicitly create/switch modules.
11873 Return SCM_UNSPECIFIED.
11874 (scm_init_rdelim): Only register `%init-rdelim-builtins'
11875 procedure.
58bee6a8 11876
21a13beb
MV
11877 * rw.c (scm_init_rw_builtins): Renamed from scm_init_rw. Do not
11878 explicitly create/switch modules. Return SCM_UNSPECIFIED.
11879 (scm_init_rw): Only register `%init-rw-builtins' procedure.
11880
11881 * script.c (scm_shell): Evaluate the compiled switches in the
11882 current module, not in the root module.
11883
118842001-05-18 Marius Vollmer <mvo@zagadka.ping.de>
11885
11886 * fluids.c (scm_c_with_fluids): Rename from
11887 scm_internal_with_fluids.
11888 (scm_internal_with_fluids): Deprecated.
11889 (scm_c_with_fluid): New.
11890
09cb9e73
DH
118912001-05-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
11892
11893 * print.h (PRINTH, SCM_PRINT_H): Renamed PRINTH to SCM_PRINT_H.
11894
11895 (SCM_PORT_WITH_PS_PORT, SCM_PORT_WITH_PS_PS): Only pairs may be
11896 accessed with SCM_C[AD]R.
11897
11898 (SCM_COERCE_OUTPORT): Removed redundant SCM_NIMP test.
11899
c81ea65d
RB
119002001-05-16 Rob Browning <rlb@cs.utexas.edu>
11901
11902 * version.c (s_scm_major_version): doc fixes.
11903 (s_scm_minor_version): doc fixes.
11904 (s_scm_minor_version): new function.
11905
11906 * version.h (scm_init_version): new function.
11907
11908 * versiondat.h.in: add GUILE_MICRO_VERSION.
11909
887dfa7d
DH
119102001-05-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
11911
11912 * deprecation.c (scm_init_deprecation): Renamed
11913 GUILE_WARN_DEPRECATED_DEFAULT to SCM_WARN_DEPRECATED_DEFAULT.
11914
78930a69
MV
119152001-05-16 Marius Vollmer <mvo@zagadka.ping.de>
11916
11917 * Makefile.am (cpp_sig_symbols.c, cpp_err_symbols.c): Make
11918 dependent on cpp_cnvt.awk
11919
39cde5c5
MG
119202001-05-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11921
11922 * script.c (scm_compile_shell_switches): New command line option
11923 `--use-srfi' for loading a list of SRFIs on startup.
11924 (scm_shell_usage): Added `--use-srfi' to help message.
11925
f3f9dcbc
MV
119262001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
11927
78930a69 11928 Merged from mvo-vcell-cleanup-1-branch.
887dfa7d 11929
f3f9dcbc
MV
11930 The concept of vcells has been removed from Guile. With it,
11931 explicit obarrays and associated operations are gone. Use
11932 hashtables instead of obarrays.
887dfa7d 11933
f3f9dcbc
MV
11934 Throughout: use scm_sym2var instead of scm_sym2vcell and treat
11935 result as variable instead of vcell. Glocs no longer point to a
11936 vcell but to a variable. Use scm_c_define instead of
11937 scm_sysintern and treat the result as a variable (which it is),
11938 not a vcell.
887dfa7d 11939
f3f9dcbc
MV
11940 * variable.c, variable.h (SCM_VARVCELL, SCM_UDVARIABLEP,
11941 SCM_DEFVARIABLEP): Deprecated.
11942 (SCM_VARIABLE_REF, SCM_VARIABLE_SET, SCM_VARIABLE_LOC): New.
11943 (variable_print): Do not print name of variable.
11944 (variable_equalp): Compare values, not vcells.
11945 (anonymous_variable_sym): Removed.
11946 (make_vcell_variable): Removed.
11947 (make_variable): New, as replacement.
11948 (scm_make_variable, scm_make_undefined_variable): Do not take name
11949 hint parameter.
11950 (scm_variable_ref): Check for SCM_UNDEFINED and throw "unbound"
11951 error in that case.
11952 (scm_builtin_variable): Deprecated.
11953
11954 * symbols.c, symbols.h (scm_sym2vcell, scm_sym2ovcell_soft,
11955 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
11956 scm_intern, scm_intern0, scm_sysintern0_no_module_lookup,
11957 scm_sysintern, scm_sysintern0, scm_symbol_value0,
11958 scm_string_to_obarray_symbol, scm_intern_symbol,
11959 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned,
11960 scm_symbol_bound_p, scm_symbol_set_x, scm_gentmp, gentmp_counter):
11961 Deprecated and moved to "symbols-deprecated.c".
11962 (copy_and_prune_obarray, scm_builtin_bindings): Removed.
11963 (scm_init_symbols): Call scm_init_symbols_deprecated.
11964 * symbols-deprecated.c: New file.
11965 * Makefile.am: Added symbols-deprecated.c and related files in all
11966 the right places.
887dfa7d 11967
f3f9dcbc
MV
11968 * snarf.h (SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
11969 SCM_GLOBAL_VCELL_INIT): Deprecated.
11970 (SCM_VARIABLE, SCM_GLOBAL_VARIABLE, SCM_VARIABLE_INIT,
11971 SCM_GLOBAL_VARIABLE_INIT): New, as replacement. Changed all uses.
887dfa7d 11972
f3f9dcbc
MV
11973 * print.c (scm_iprin1): Use scm_module_reverse_lookup instead of
11974 SCM_GLOC_SYM.
11975
11976 * evalext.c, filesys.c, fports.c, gdbint.c, gh_data.c, gsubr.c,
11977 hooks.c, load.c, numbers.c, objects.c, ports.c, posix.c, procs.c,
11978 ramap.c, random.c, read.c, regex-posix.c, scmsigs.c, script.c,
11979 socket.c, srcprop.c, stacks.c, stime.c, struct.c, tag.c, throw.c:
11980 Changed according to the `throughout' comments.
11981
11982 * modules.h, modules.c (scm_module_system_booted_p): Changed type
11983 to `int'.
11984 (scm_module_type): Removed.
11985 (the_root_module): Renamed to the_root_module_var. Now points to
11986 a variable instead of a vcell. Updated all uses.
11987 (scm_the_root_module): Return SCM_BOOL_F when module systems
11988 hasn't been booted yet.
11989 (SCM_VALIDATE_STRUCT_TYPE): Removed.
11990 (scm_post_boot_init_modules): Made static.
11991 (scm_set_current_module): Call scm_post_boot_init_modules on first
11992 call.
11993 (make_modules_in, beautify_user_module_x, resolve_module,
11994 try_module_autoload, module_make_local_var_x): Tacked on "_var"
11995 suffix. Now point to variables instead of vcells. Updated all
11996 uses.
11997 (scm_module_lookup_closure): Deal with the module being SCM_BOOL_F
11998 and return SCM_BOOL_F in that case.
11999 (scm_module_transformer): Likewise.
12000 (sym_module, scm_lookup_closure_module, scm_env_module): New.
12001 (SCM_F_EVAL_CLOSURE_INTERFACE, SCM_EVAL_CLOSURE_INTERFACE_P): New.
12002 (scm_eval_closure_lookup): Do not allow new definitions when
12003 `interface' flag is set.
12004 (scm_standard_interface_eval_closure): New.
12005 (scm_pre_modules_obarray, scm_sym2var, scm_module_lookup,
12006 scm_lookup, scm_module_define, scm_define, scm_c_module_lookup,
12007 scm_c_lookup, scm_c_module_define, scm_c_define,
12008 scm_module_reverse_lookup, scm_get_pre_modules_obarray,
12009 scm_modules_prehistory): New.
12010 (scm_post_boot_init_modules): Use scm_c_define and scm_c_lookup
12011 instead of scm_intern0.
887dfa7d 12012
f3f9dcbc
MV
12013 * macros.c (scm_make_synt): Return SCM_UNSPECIFIED instead of the
12014 symbol.
12015
12016 * keywords.c (s_scm_make_keyword_from_dash_symbol): Use a regular
12017 hashtable operations to maintain the keywords, not obarray ones.
12018
12019 * init.c (scm_load_startup_files): Do not call
12020 scm_post_boot_init_modules. This is done by
12021 scm_set_current_module now.
12022 (scm_init_guile_1): Call scm_modules_prehistory. Call
12023 scm_init_variable early on.
12024
12025 * goops.c (s_scm_sys_goops_loaded): Get
12026 var_compute_applicable_methods from scm_sym2var, not from a direct
12027 invocation of scm_goops_lookup_closure.
12028
12029 * gh_funcs.c (gh_define): Return SCM_UNSPECIFIED instead of vcell.
12030
12031 * gc.c: Added simple debugging hack to mark phase of GC: When
12032 activated, do not tail-call scm_gc_mark. This gives nice
12033 backtraces.
12034 (scm_unhash_name): Removed.
12035
12036 * feature.c (features): Renamed to features_var. Now points to a
12037 variable instead of a vcell. Updated all uses.
12038
12039 * eval.h (SCM_TOP_LEVEL_LOOKUP_CLOSURE): Use
12040 `scm_current_module_lookup_closure' which will do the right thing
12041 when the module system hasn't been booted yet.
12042 (SCM_GLOC_SYM): Removed.
12043 (SCM_GLOC_VAR, SCM_GLOC_SET_VAL): New.
12044 (SCM_GLOC_VAL, SCM_GLOC_LOC): Reimplemented in terms of variables.
887dfa7d 12045
f3f9dcbc
MV
12046 * eval.c (scm_lookupcar, scm_lookupcar1): Deal with variables
12047 instead of with vcells. Do not overwrite `var' with the result of
12048 the lookup, use the new `real_var' instead. Remove `var2' in
12049 exchange (which was only used with threads).
12050 (sym_three_question_marks): New.
12051 (scm_unmemocar): Use `scm_module_reverse_lookup' instead of
12052 `SCM_GLOC_SYM'.
12053 (scm_lisp_nil, scm_lisp_t): Directly define as symbols.
12054 (scm_m_atfop): Expect the function definition to be a variable
12055 instead of a vcell.
12056 (scm_macroexp): Do not use `unmemocar', explicitely remember the
12057 symbol instead.
12058 (scm_unmemocopy): Removed thoughts about anti-macro interface.
12059 (scm_eval_args): Use more explicit code in the gloc branch of the
12060 atrocious struct ambiguity test. The optimizer will sort this
12061 out.
12062 (scm_deval_args): Likewise.
12063 (SCM_CEVAL): Likewise. Also, do not use unmemocar, explicitely
12064 remember the symbol instead. Added some comments where
12065 scm_tc3_cons_gloc really exclusively refers to structs.
12066 (scm_init_eval): Use scm_define to initialize "nil" and "t" to
12067 scm_lisp_nil and scm_lisp_t, respectively. Use scm_define instead
12068 of scm_sysintern in general.
12069
12070 * dynwind.c (scm_swap_bindings): Use SCM_GLOC_SET_VAL instead of
12071 explicit magic.
12072
12073 * debug.c (s_scm_make_gloc): Only allow proper variables, no
12074 pairs. Put the variable directly in the gloc.
12075 (s_scm_gloc_p): Use `scm_tc3_cons_gloc' instead of the magic `1'.
12076 (scm_init_debug): Use scm_c_define instead scm_sysintern.
12077
12078 * cpp_cnvt.awk: Emit "scm_c_define" instead of "scm_sysintern".
12079
12080 * backtrace.h, backtrace.c (scm_the_last_stack_fluid): Renamed to
12081 scm_the_last_stack_fluid_var. It now points to a variable instead
12082 of a vcell. Updated all uses.
12083 (scm_has_shown_backtrace_hint_p_var): Now points to a variable
12084 instead of a vcell. Updated all uses.
12085
12086 * _scm.h: Include "variables.h" and "modules.h" since almost
12087 everybody needs them now.
12088
12089 * root.h (scm_symhash, scm_symhash_vars): Removed.
12090 * gc.c (scm_init_storage): Do not initialize them.
887dfa7d 12091
7c33806a
DH
120922001-05-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
12093
12094 * eval.c (scm_init_eval): Initialize scm_undefineds and
58bee6a8 12095 scm_listofnull.
7c33806a
DH
12096
12097 * gc.c (scm_debug_newcell, scm_debug_newcell2): Fixed to behave
12098 like the SCM_NEWCELL macro counterparts.
12099
12100 (scm_init_storage, scm_init_gc): Moved initialization of
12101 scm_tc16_allocated from scm_init_gc to scm_init_storage.
12102
12103 (scm_init_storage): Moved initialization of scm_undefineds and
12104 scm_listofnull to eval.c, initializion of scm_nullstr to
12105 strings.c, initializion of scm_nullvect to vectors.c.
12106
12107 * gc.h (SCM_NEWCELL, SCM_NEWCELL2): Prefer SCM_NULLP over
12108 SCM_IMP, as in scm_debug_newcell and scm_debug_newcell2.
12109
12110 * init.c (scm_init_guile_1): Reordered some initializations and
12111 added dependcy information comments.
12112
12113 * load.c (scm_init_load): Use scm_nullstr.
12114
12115 * strings.c (scm_init_strings): Initialize scm_nullstr.
12116
12117 * vectors.c (scm_init_vectors): Initialize scm_nullvect.
12118
11bbab47
MV
121192001-05-15 Marius Vollmer <mvo@zagadka.ping.de>
12120
12121 * values.c (print_values): Print as a unreadable object, not as
9a5fa6e9 12122 multiple lines. Thanks to Matthias Köppe!
11bbab47 12123
5cd06d5e
DH
121242001-05-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
12125
12126 * deprecation.c: Fixed copyright date.
12127
12128 * deprecation.h (DEPRECATION_H, SCM_DEPRECATION_H): Renamed
12129 DEPRECATION_H to SCM_DEPRECATION_H.
12130
32bac999
TTN
121312001-05-10 Thien-Thi Nguyen <ttn@revel.glug.org>
12132
12133 * guile-doc-snarf.in: Update copyright.
12134 Fix relative path bug. Thanks to Sergey Poznyakoff.
12135
c9dcc5ae
MV
121362001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
12137
12138 * ports.c (scm_port_revealed, scm_set_port_revealed_x): Only
12139 accept open ports. Thanks to Quetzalcoatl Bradley!
12140
7c582ec9
MG
121412001-05-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12142
12143 * procs.c: Increased `scm_subr_table_room' to 800 because Guile now
12144 has 779 primitives on startup.
12145
284ab601
MV
121462001-05-09 Marius Vollmer <mvo@zagadka.ping.de>
12147
12148 * eval.c (scm_i_eval): Copy expression before passing it to
12149 SCM_XEVAL. The copy operation was removed unintendedly during my
12150 change on 2001-03-25.
12151
910d1e40
ML
121522001-05-09 Michael Livshin <mlivshin@bigfoot.com>
12153
9a5fa6e9 12154 from Matthias Köppe (thanks!):
910d1e40
ML
12155
12156 * ports.c (scm_c_read): pointer arithmetic on void pointers isn't
12157 portable.
12158
12159 * deprecation.c (s_scm_include_deprecated_features): ANSI'fied the
12160 docstring.
12161
56e55ac7
DH
121622001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
12163
12164 * gc.c (scm_init_gc): Added FIXME comment.
12165
12166 * hooks.c: Since hooks don't have a name any more, it is not
12167 necessary to include objprop.h.
12168
12169 (hook_print, scm_add_hook_x): Replace SCM_NFALSEP by !SCM_FALSEP.
12170
12171 (symbol_name, scm_make_hook_with_name): Removed.
12172
12173 (scm_create_hook): Don't set the hook's name property.
12174
12175 * hooks.h (HOOKSH, SCM_HOOKS_H): Renamed HOOKSH to SCM_HOOKS_H.
12176
12177 (SCM_HOOK_NAME, scm_make_hook_with_name): Removed.
12178
12179 * init.c (scm_init_guile_1): Hooks don't use objprops any more.
12180
12181 * numbers.c (SCM_FLOBUFLEN, FLOBUFLEN, scm_number_to_string,
12182 scm_print_real, scm_print_complex): Renamed SCM_FLOBUFLEN to
12183 FLOBUFLEN and define it unconditionally.
12184
d204b24c
MV
121852001-05-07 Marius Vollmer <mvo@zagadka.ping.de>
12186
438201b4
MV
12187 * gh_data.c (gh_lookup): Call gh_module_lookup with
12188 `scm_current_module ()', not `#f'.
12189 (gh_module_lookup): Expect a module instead of an obarray as first
12190 argument and do lookup in that module.
56e55ac7 12191
d204b24c
MV
12192 * ramap.c (raeql_1): Do not call scm_uniform_vector_length on
12193 arrays. The length of array is already determined differently and
12194 scm_uniform_vector_length does not work on arrays.
12195
26c1d549
MV
121962001-05-06 Marius Vollmer <mvo@zagadka.ping.de>
12197
fe7c2f88
MV
12198 * snarf.h (SCM_FUNC_CAST_ARBITRARY_ARGS): Use "SCM (*)()" for C++
12199 as well. "SCM (*)(...)" does not work on RedHat 7.1.
12200
26c1d549
MV
12201 * __scm.h (SCM_WTA_DISPATCH_0): Removed ARG and POS parameters,
12202 they are not used. Changed `wrong type' error into `wrong num
12203 args' error. Changed all callers.
56e55ac7 12204
26c1d549
MV
12205 * numbers.c (scm_difference): Call SCM_WTA_DISPATCH_0 when zero
12206 arguments are supplied.
12207
1c938eb8
TTN
122082001-05-05 Thien-Thi Nguyen <ttn@revel.glug.org>
12209
12210 * regex-posix.c (scm_regexp_exec): Expand docstring to briefly
12211 describe `regexp/notbol' and `regexp/noteol' execution flags.
12212
3a6379f7
TTN
12213 * strop.c (scm_substring_move_x): Doc fix; nfc.
12214
c10ecc4c
MV
122152001-05-05 Marius Vollmer <mvo@zagadka.ping.de>
12216
12217 * objects.c, objects.h (scm_valid_object_procedure_p): New.
12218 (scm_set_object_procedure_x): Use it to check argument. Fix
12219 docstring.
12220
12221 * evalext.c (scm_definedp): Fix docstring.
12222
a57a0b1e
GH
122232001-05-05 Gary Houston <ghouston@arglist.com>
12224
12225 * socket.c: use HAVE_IPV6 instead of AF_INET6 to enable IPv6
12226 support.
12227
7a095584
NJ
122282001-05-04 Neil Jerram <neil@ossau.uklinux.net>
12229
12230 * eval.c (scm_promise_p), list.c (scm_append_x, scm_reverse_x),
12231 symbols.c (scm_symbol_to_string), vports.c (scm_make_soft_port):
12232 Change R4RS references to R5RS.
12233
12234 * guile-snarf.awk.in: Fixes so that (i) blank lines in the
12235 docstring source are correctly reproduced in the output (ii)
12236 we don't anymore get occasional trailing quotes. Also reorganized
12237 and commented the code a little.
12238
12239 * scmsigs.c (scm_raise), throw.c (scm_throw): Docstring format
12240 fixes.
12241
dd2a6f3a
MG
122422001-05-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12243
12244 * strop.c (scm_string_split): New procedure.
12245
12246 * strop.h (scm_string_split): Added prototype.
12247
00120130
GH
122482001-05-04 Gary Houston <ghouston@arglist.com>
12249
12250 * socket.c: define uint32_t if netdb.h doesn't. thanks to
12251 Dale P. Smith.
12252
b65e6bfe
MV
122532001-05-02 Marius Vollmer <mvo@zagadka.ping.de>
12254
12255 * rw.c: Include "modules.h" and "strports.h".
12256
12257 * net_db.h (scm_gethost): Added prototype.
12258
12259 * deprecation.h, deprecation.c: New.
12260 * Makefile.am (libguile_la_SOURCES): Added "deprecation.c".
12261 (DOT_X_FILES): Added "deprecation.x".
12262 (modinclude_HEADERS): Added "deprecation.h".
12263
12264 * init.c: Include "deprecation.h".
12265 (scm_init_guile_1): Call scm_init_deprecation.
1c938eb8 12266
b65e6bfe
MV
122672001-05-01 Marius Vollmer <mvo@zagadka.ping.de>
12268
12269 * gh.h (gh_init_guile, gh_make_string, gh_string_length,
12270 gh_string_ref, gh_string_set_x, gh_substring, gh_string_append):
12271 New.
12272
b0e5fd8c
GH
122732001-04-29 Gary Houston <ghouston@arglist.com>
12274
12275 * rw.c: new file, implementing C part of module (ice-9 rw).
12276 (scm_read_string_x_partial): moved from ioext.c
12277 (scm_init_rw): new proc.
12278 * rw.h: new file.
12279 init.c: include rw.h and call scm_init_rw.
12280 Makefile.am: include rw.c and rw.h.
12281
0b2da99c
RB
122822001-04-28 Rob Browning <rlb@cs.utexas.edu>
12283
12284 * numbers.c: enabled local definition of SCM_FLOBUFLEN until we
12285 know what's supposed to happen to it.
12286
12287 * list.h (scm_list_star): deprecation expired - removed.
12288
12289 * numbers.h (scm_dblproc): deprecation expired - removed.
12290 (SCM_UNEGFIXABLE): deprecation expired - removed.
12291 (SCM_FLOBUFLEN): deprecation expired - removed.
12292 (SCM_INEXP): deprecation expired - removed.
12293 (SCM_CPLXP): deprecation expired - removed.
12294 (SCM_REAL): deprecation expired - removed.
12295 (SCM_IMAG): deprecation expired - removed.
12296 (SCM_REALPART): deprecation expired - removed.
12297 (scm_makdbl): deprecation expired - removed.
12298 (SCM_SINGP): deprecation expired - removed.
12299 (SCM_NUM2DBL): deprecation expired - removed.
12300 (SCM_NO_BIGDIG): deprecation expired - removed.
12301
12302 * tags.h (SCM_DOUBLE_CELLP): deprecation expired - removed.
12303 (scm_tc_dblr): deprecation expired - removed.
12304 (scm_tc_dblc): deprecation expired - removed.
12305 (scm_tc16_flo): deprecation expired - removed.
12306 (scm_tc_flo): deprecation expired - removed.
12307
12308 * tag.h (scm_tag): deprecation expired - removed.
12309
12310 * tag.c: (scm_tag): deprecation expired - removed.
12311
12312 * ioext.c: (scm_fseek): deprecation expired - removed.
12313
12314 * ioext.h (scm_fseek): deprecation expired - removed.
12315
12316 * gh_data.c (gh_int2scmb): deprecation expired - removed.
12317
12318 * gh.h (gh_int2scmb): deprecation expired - removed.
12319
e3334972
NJ
123202001-04-28 Neil Jerram <neil@ossau.uklinux.net>
12321
12322 * stacks.c (scm_make_stack): Fix typo in docstring.
12323
a0f979ac
RB
123242001-04-27 Rob Browning <rlb@cs.utexas.edu>
12325
12326 * error.c (scm_sysmissing): deprecation expired - removed.
12327
12328 * error.h (scm_sysmissing): deprecation expired - removed.
12329
12330 * gc.c
12331 (scm_init_gc): gc-thunk deprecation expired - removed.
12332 (scm_gc_vcell): deprecation expired - removed.
12333 (gc_async_thunk): scm_gc_vcell related code removed.
12334
12335 * vectors.h (SCM_NVECTORP): deprecation expired - removed.
12336
12337 * strings.h
12338 (SCM_NSTRINGP): deprecation expired - removed.
12339 (SCM_NRWSTRINGP): deprecation expired - removed.
12340
12341 * continuations.h (SCM_SETJMPBUF): deprecation expired - removed.
12342
12343 * chars.h
12344 (SCM_ICHRP): deprecation expired - removed.
12345 (SCM_ICHR): deprecation expired - removed.
12346 (SCM_MAKICHR): deprecation expired - removed.
12347
12348 * ports.h
12349 (SCM_INPORTP): deprecation expired - removed.
12350 (SCM_OUTPORTP): deprecation expired - removed.
12351
253081cf
MV
123522001-04-25 Marius Vollmer <mvo@zagadka.ping.de>
12353
12354 * modules.c (scm_module_type): New.
12355 (scm_post_boot_init_modules): Initialize from Scheme value.
12356 (the_module, scm_current_module, scm_init_modules): the_module is
12357 now a C only fluid.
12358 (scm_current_module): Export to Scheme.
12359 (scm_set_current_module): Do not call out to Scheme, do all the
12360 work in C. Export procedure to Scheme. Only accept modules, `#f'
12361 is no longer valid as the current module. Only set
12362 scm_top_level_lookup_closure_var and scm_system_transformer when
12363 they are not deprecated.
12364 (scm_module_transformer, scm_current_module_transformer): New.
12365
12366 * modules.h (scm_module_index_transformer, SCM_MODULE_TRANSFORMER,
12367 scm_current_module_transformer, scm_module_transformer): New.
1c938eb8 12368
253081cf
MV
12369 * gh_data.c: Removed FIXME comment about gh_lookup returning
12370 SCM_UNDEFINED. That's the right thing to do.
12371
12372 * eval.h, eval.c (scm_system_transformer): Deprecated by moving it
12373 into the conditionally compiled sections.
12374 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Use
12375 scm_current_module_transformer instead of scm_system_transformer.
12376 * init.c (start_stack): Move initialization of
12377 scm_system_transformer to the deprecated section.
1c938eb8 12378
1f7f9ed4
NJ
123792001-04-22 Neil Jerram <neil@ossau.uklinux.net>
12380
12381 * throw.c (scm_throw): Correct docstring.
12382
66c73b76
GH
123832001-04-22 Gary Houston <ghouston@arglist.com>
12384
eefae538
GH
12385 * socket.c: attempted to improve the docstrings slightly.
12386
66c73b76
GH
12387 * net_db.c: remove bogus "close" declaration.
12388 (inet_aton declaration, scm_inet_aton, scm_inet_ntoa,
12389 scm_inet_netof, scm_lnaof, scm_inet_makeaddr, INADDR_ANY etc.):
12390 moved to socket.c.
12391 * net_db.h: declarations moved too.
12392
12393 * socket.c (scm_htonl, scm_ntohl): use uint32_t instead of unsigned
12394 long.
12395 (ipv6_net_to_num, ipv6_num_to_net): new static procedures.
12396 (VALIDATE_INET6): new macro.
12397 (scm_inet_pton, scm_inet_ntop): new procedures, implementing
12398 inet-pton and inet-ntop.
12399 (scm_fill_sockaddr): use VALIDATE_INET6 and ipv6_num_to_net.
12400 (scm_addr_vector): use ipv6_net_to_num.
1c938eb8 12401
7a7f7c53
DH
124022001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
12403
12404 * eq.c (scm_equal_p), ramap.c (scm_init_ramap): Don't compute the
12405 smob number explicitly. Use SCM_TC2SMOBNUM instead.
12406
12407 * gc.c (MARK, scm_gc_sweep): Only check for illegal heap objects
12408 when compiled in debug mode.
12409
12410 (scm_gc_sweep): Only call smob's free function if it is defined.
12411
12412 * print.c (scm_iprin1): No need to check for validity of smob
12413 type or existence of print function.
12414
12415 * smob.[ch] (scm_smobs): Made into a fixed size global array.
12416 Resizing will not work well with preemptive threading.
12417
12418 * smob.c (scm_smob_print): Don't use SCM_CDR to access smob data.
12419
12420 (scm_make_smob_type): Extracted initialization of smob
12421 descriptors to scm_smob_prehistory. Don't use scm_numsmob outside
12422 of the critical section.
12423
12424 (scm_smob_prehistory): Initialize all smob descriptors. By
12425 default, don't assign a smob free function: Most smob types don't
12426 need one.
12427
12428 * smob.h (SMOBH, SCM_SMOB_H): Renamed SMOBH to SCM_SMOB_H.
12429
e1368a8d
GH
124302001-04-21 Gary Houston <ghouston@arglist.com>
12431
12432 * socket.c (FLIP_NET_HOST_128): new macro.
12433 (scm_fill_sockaddr): use new macro.
12434 (scm_addr_vector): completed IPv6 address support. added const
12435 to the address parameter.
12436
5a525b84
GH
124372001-04-20 Gary Houston <ghouston@arglist.com>
12438
12439 * socket.c (scm_fill_sockaddr): call htons for sin6_port.
12440 Don't assign sin6_scope_id in structure unless HAVE_SIN6_SCOPE_ID
12441 is defined.
12442 (scm_addr_vector): use a switch instead of multiple if statements.
12443 Add support for IPv6 (incomplete) .
e1368a8d 12444 MAX_ADDR_SIZE: increase to size of struct sockaddr_in6 if needed.
5a525b84 12445
1a551638
DH
124462001-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
12447
12448 * struct.c (scm_free_structs): Only pairs may be accessed with
12449 SCM_C[AD]R.
12450
c07b3fef
MD
124512001-04-19 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12452
a9d861e3
MD
12453 * unif.h (SCM_ARRAY_CONTIGUOUS): Reintroduced as deprecated.
12454
c07b3fef
MD
12455 * __scm.h (SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
12456 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Inserted required
12457 parentheses in order to get the correct associativity.
12458
af7546eb
DH
124592001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12460
12461 * unif.c (scm_array_to_list): Added missing handling of arrays of
12462 bytes. Thanks to Masao Uebayashi for the bug report.
12463
4daecfee
DH
124642001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12465
12466 * debug.c (scm_procedure_source): Use SCM_CLOSURE_FORMALS more
12467 consistently.
12468
726d810a
DH
124692001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12470
12471 * procs.h (SCM_CLOSURE_FORMALS): New macro.
12472
12473 * debug.c (scm_procedure_source), eval.c (scm_badformalsp,
12474 SCM_CEVAL, SCM_APPLY), goops.c (get_slot_value, set_slot_value),
1c938eb8 12475 procprop.c (scm_i_procedure_arity), sort.c (closureless): Use
726d810a
DH
12476 SCM_CLOSURE_FORMALS.
12477
12478 * eval.c (scm_badformalsp, SCM_CEVAL), procprop.c
12479 (scm_i_procedure_arity): Prefer stronger predicates like
12480 SCM_NULLP or SCM_FALSEP over SCM_IMP.
12481
12482 * macros.c (macro_print): Extracted macro printing code from
12483 print.c and simplified it.
12484
12485 (scm_macro_type): Use SCM_MACRO_TYPE;
12486
12487 (scm_init_macros): Use macro_print for printing macros.
12488
12489 * print.c (scm_print_opts): Improved option documentation.
12490
12491 (scm_iprin1): Extracted printing of macros to macros.c.
12492 Simplified printing of ordinary closures.
12493
12494 * procs.c (scm_thunk_p): Fixed handling of closures. Thanks to
12495 Martin Grabmueller for the bug report.
12496
e038c042
DH
124972001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12498
12499 This patch eliminates some further applications of SCM_C[AD]R to
12500 non pair cells.
12501
12502 * gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR): Deprecated. These have
12503 never been applied to real pairs.
12504
12505 * srcprop.h (SCM_SOURCE_PROPERTY_FLAG_BREAK): Added.
12506
12507 (SRCPROPBRK): Use SCM_SOURCE_PROPERTY_FLAG_BREAK.
12508
12509 * unif.h (SCM_ARRAY_CONTIGUOUS, SCM_ARRAY_FLAG_CONTIGUOUS,
12510 SCM_ARRAY_CONTP): Renamed SCM_ARRAY_CONTIGUOUS to
12511 SCM_ARRAY_FLAG_CONTIGUOUS and use it.
12512
12513 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
12514 Added.
12515
12516 * srcprop.h (SRCPROPH), unif.h (UNIFH): Renamed to
12517 SCM_SOURCE_PROPERTIES_H and SCM_UNIFORM_VECTORS_H, respectively.
12518
12519 * srcprop.h (SETSRCPROPBRK, CLEARSRCPROPBRK), unif.c
12520 (scm_dimensions_to_uniform_array, scm_ra_set_contp): Don't use
12521 SCM_SET{AND,OR}_CAR.
12522
3453619b
GH
125232001-04-17 Gary Houston <ghouston@arglist.com>
12524
12525 * some initial support for IPv6:
1c938eb8 12526
3453619b
GH
12527 * socket.c (scm_fill_sockaddr): improve the argument validation.
12528 don't allocate memory until all args are checked. instead of
12529 unconditional memset of soka, try setting sin_len to 0 if
12530 SIN_LEN is defined. add support for AF_INET6. define FUNC_NAME.
12531 (scm_socket, scm_connect): extend docstrings for IPv6.
12532 (scm_init_socket): intern AF_INET6 and PF_INET6.
12533
216eedfc
DH
125342001-04-17 Niibe Yutaka <gniibe@m17n.org>
12535
12536 * srcprop.c (scm_make_srcprops): Added SCM_ALLOW_INTS which
12537 matches SCM_DEFER_INTS at the beginning of the function.
12538
12539 * mallocs.c (scm_malloc_obj): Remove un-matched SCM_ALLOW_INTS.
12540
12541 * gc.c (scm_igc): Unconditionally call
12542 SCM_CRITICAL_SECTION_START/END.
12543
12544 * fluids.c (next_fluid_num): Unconditionally call
12545 SCM_CRITICAL_SECTION_START/END.
12546 (s_scm_make_fluid): Remove un-matched SCM_DEFER_INTS.
12547
12548 * coop-defs.h (SCM_THREAD_DEFER, SCM_THREAD_ALLOW,
12549 SCM_THREAD_REDEFER, SCM_THREAD_REALLOW_1, SCM_THREAD_REALLOW_2):
12550 Removed.
12551
12552 * __scm.h (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END):
12553 Defined as nothing for the case of !defined(USE_THREADS).
12554 (SCM_THREAD_DEFER, SCM_THREAD_ALLOW, SCM_THREAD_REDEFER):
12555 Removed.
12556 (<stdio.h>): Include when (SCM_DEBUG_INTERRUPTS == 1).
12557 (SCM_CHECK_NOT_DISABLED, SCM_CHECK_NOT_ENABLED): Print FILE and
12558 LINE.
12559 (SCM_DEFER_INTS, SCM_ALLOW_INTS_ONLY, SCM_ALLOW_INTS,
12560 SCM_REDEFER_INTS, SCM_REALLOW_INTS): Don't use
12561 SCM_THREAD_DEFER/SCM_THREAD_ALLOW. Instead, use
12562 SCM_CRITICAL_SECTION_START/END.
12563 (SCM_REALLOW_INTS: Bug fix. Don't call
12564 SCM_THREAD_SWITCHING_CODE.
12565 (SCM_TICK): Don't use SCM_DEFER_INTS/SCM_ALLOW_INTS. Instead, use
12566 SCM_THREAD_SWITCHING_CODE directly.
12567 (SCM_ENTER_A_SECTION): Unconditionally use
12568 SCM_CRITICAL_SECTION_START/END. (was:
12569 SCM_DEFER_INTS/SCM_ALLOW_INTS when SCM_POSIX_THREADS defined).
12570
125712001-04-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12572
12573 * __scm.h (SCM_CAREFUL_INTS, SCM_DEBUG_INTERRUPTS): Replaced the
12574 macro SCM_CAREFUL_INTS by the macro SCM_DEBUG_INTERRUPTS and
12575 allowed to explicitly set this macro via the CFLAGS variable
12576 during make.
12577
12578 * fluids.c (next_fluid_num), gc.c (scm_igc), coop-defs.h
12579 (SCM_THREAD_CRITICAL_SECTION_START,
12580 SCM_THREAD_CRITICAL_SECTION_END): Renamed
12581 SCM_THREAD_CRITICAL_SECTION_START/END to
12582 SCM_CRITICAL_SECTION_START/END.
12583
f22ed5a0
KN
125842001-04-11 Keisuke Nishida <kxn30@po.cwru.edu>
12585
12586 * debug-malloc.c (grow, scm_debug_malloc_prehistory): Use memset
12587 instead of bzero.
1c938eb8 12588
f22ed5a0 12589 * coop.c, iselect.c (FD_ZERO_N): Unconditionally use memset.
1c938eb8 12590 (MISSING_BZERO_DECL): Remove the declaration.
f22ed5a0
KN
12591
12592 Thanks to NIIBE Yutaka.
12593
508ded1c
MD
125942001-04-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12595
a087ba81
MD
12596 * init.c, goops.c, goops.h: Reverted change of 2001-03-29. (The
12597 goops module should be registered in order to work for an
12598 application which uses libguile statically linked.)
508ded1c 12599
e4b265d8
DH
126002001-04-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
12601
12602 * numbers.[ch] (scm_num2long, scm_num2long_long,
12603 scm_num2ulong_long, scm_num2ulong): Argument position is an
12604 unsigned integer.
12605
12606 * environments.c (eval_environment_folder,
12607 import_environment_folder), gh_data.c (gh_scm2longs,
12608 gh_scm2floats, gh_scm2doubles): Distinguish between 0 and NULL
12609 for integers and pointers, respectively.
12610
12611 * gh_data.c (gh_scm2ulong, gh_scm2long, gh_scm2int), socket.c
12612 (scm_fill_sockaddr), unif.c (scm_array_set_x), validate.h
12613 (SCM_NUM2ULONG, SCM_NUM2LONG, SCM_NUM2LONG_DEF,
12614 SCM_NUM2LONG_LONG): Don't pass argument positions as pointers.
12615
12616 * filesys.c (scm_open_fdes, scm_open), net_db (scm_inet_ntoa,
12617 scm_inet_netof, scm_lnaof, scm_gethost, scm_getproto), posix.c
12618 (scm_utime), ramap.c (scm_array_fill_int), scmsigs.c
12619 (scm_sigaction), socket.c (scm_htonl, scm_ntohl, scm_sendto),
12620 stime.c (scm_localtime, scm_gmtime), struct.c (scm_struct_set_x),
12621 validate.h (SCM_VALIDATE_LONG_COPY): Whitespace fixes.
12622
89d04205
NJ
126232001-04-09 Neil Jerram <neil@ossau.uklinux.net>
12624
12625 * strings.c (scm_read_only_string_p): Update docstring to reflect
12626 current (non-)usage of "read only" strings.
40f83c3e
NJ
12627 (scm_make_shared_substring): Clarify docstring by changing
12628 "semantics" to "arguments".
89d04205 12629
4d66be54
MG
126302001-04-06 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12631
12632 * hooks.c (scm_make_hook, scm_make_hook_with_name),
12633 (scm_hook_p, scm_hook_empty_p, scm_run_hook): Docstring
12634 improvements.
12635
1e6808ea
MG
126362001-04-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12637
12638 The following changes make the documentation more consistent.
1c938eb8 12639
1e6808ea
MG
12640 * rdelim.c (scm_write_line), posix.c (scm_utime), ports.c
12641 (scm_seek), net_db.c (scm_inet_aton, scm_inet_ntoa),
12642 (scm_inet_netof, scm_lnaof, scm_inet_makeaddr), ioext.c
12643 (scm_ftell): Changed @smalllisp ... @end smalllisp to @lisp
12644 ... @end lisp.
12645
12646 * vports.c (scm_make_soft_port), version.c (scm_version), unif.c
12647 (scm_array_dimensions, scm_make_shared_array),
12648 (scm_transpose_array, scm_enclose_array, scm_bit_count_star),
12649 throw.c (scm_catch), struct.c (scm_make_vtable_vtable), strop.c
12650 (scm_string_rindex, scm_string_index, scm_substring_fill_x),
12651 (scm_string_null_p), strings.c (scm_read_only_string_p), root.c
12652 (scm_call_with_dynamic_root), ramap.c (scm_array_index_map_x),
12653 posix.c (scm_mknod), numbers.c (scm_logtest, scm_logbit_p),
12654 macros.c (scm_makmmacro), list.c (scm_append), environments.c
12655 (scm_environment_fold), dynwind.c (s_scm_dynamic_wind): Changed
12656 @example ... @end example to @lisp ... @end lisp.
12657
12658 * weaks.c (scm_weak_vector): Corrected docstring.
12659
12660 * hashtab.c (scm_hashq_ref, scm_hashq_set_x, scm_hashq_remove_x),
12661 (scm_hashv_ref, scm_hashv_set_x, scm_hashv_remove_x),
12662 (scm_hash_ref, scm_hash_set_x, scm_hash_remove_x, scm_hashx_ref),
12663 (scm_hashx_set_x, scm_hashx_get_handle),
12664 (scm_hashx_create_handle_x), regex-posix.c (scm_make_regexp),
12665 (scm_regexp_exec, scm_regexp_p), numbers.c (scm_logtest),
12666 vectors.c (scm_vector_fill_x), strings.c
12667 (scm_make_shared_substring), symbols.c (scm_string_to_symbol),
12668 objprop.c (scm_set_object_properties_x):
12669 (scm_set_object_property_x), throw.c (scm_catch, scm_lazy_catch),
12670 strports.c (scm_call_with_input_string), ports.c
12671 (scm_truncate_file), ioext.c (scm_ftell), ports.c (scm_seek),
12672 list.c (scm_append_x), dynwind.c (scm_dynamic_wind), error.c
12673 (scm_error_scm), vports.c (scm_make_soft_port), weaks.c
12674 (scm_make_weak_vector,scm_weak_vector_p),
12675 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table),
12676 (scm_make_doubly_weak_hash_table, scm_weak_key_hash_table_p),
12677 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
12678 macros.c (scm_macro_type), dynl.c (scm_dynamic_link),
12679 (scm_dynamic_unlink, scm_dynamic_call, scm_dynamic_args_call):
12680 Made parameter names match documentation by renaming parameters
12681 and/or fixing docstrings.
1c938eb8 12682
1e6808ea
MG
12683 * numbers.c (scm_ash): Corrected Texinfo markup.
12684
12685 * strop.c (scm_string_index, scm_string_rindex),
12686 (scm_substring_fill_x, scm_string_null_p): Removed `qdocs'.
12687
12688 * vports.c (scm_make_soft_port), unif.c
12689 (scm_uniform_vector_length, scm_array_p, scm_array_rank),
12690 (scm_dimensions_to_uniform_array, scm_transpose_array),
12691 (scm_array_in_bounds_p, scm_uniform_vector_ref),
12692 (scm_bit_count, scm_bit_position, scm_bit_count_star),
12693 (scm_array_to_list, scm_list_to_uniform_array),
12694 (scm_array_prototype, symbols.c (scm_string_to_symbol), strports.c
12695 (scm_open_input_string, scm_open_output_string),
12696 (scm_get_output_string), strop.c (scm_string_copy),
12697 (scm_string_fill_x), strings.c (scm_string_p, scm_string), stime.c
12698 (scm_get_internal_real_time, scm_times),
12699 (scm_get_internal_run_time, scm_current_time, scm_gettimeofday),
12700 (scm_localtime, scm_gmtime), socket.c (scm_htons, scm_ntohs),
12701 (scm_htonl, scm_ntohl, scm_socket, scm_socketpair),
12702 (scm_getsockopt, scm_getsockname, scm_getpeername, scm_recvfrom),
12703 simpos.c (scm_system), random.c (scm_random_uniform),
12704 (scm_random_normal, scm_random_exp), ramap.c
12705 (scm_array_equal_p), posix.c (scm_pipe, scm_getgroups),
12706 (scm_status_exit_val, scm_status_term_sig, scm_status_stop_sig),
12707 (scm_getppid, scm_getuid, scm_getgid, scm_geteuid, scm_getegid),
12708 (scm_getpgrp, scm_ttyname, scm_ctermid, scm_tcgetpgrp, scm_uname),
12709 (scm_environ, scm_tmpnam, scm_mkstemp, scm_access, scm_getpid),
12710 (scm_setlocale), ports.c (scm_char_ready_p, scm_drain_input),
12711 (scm_pt_size, scm_pt_member, scm_port_revealed, scm_port_mode),
12712 (scm_close_port, scm_input_port_p, scm_output_port_p, scm_port_p),
12713 (scm_port_closed_p, scm_eof_object_p, scm_read_char),
12714 (scm_peek_char), pairs.c (scm_pair_p, scm_cons), numbers.c
12715 (scm_logand, scm_logior, scm_logxor, scm_lognot),
12716 (scm_integer_expt, scm_bit_extract, scm_logcount),
12717 (scm_integer_length, scm_string_to_number, scm_inexact_to_exact),
12718 net_db.c (scm_inet_netof, scm_lnaof), modules.c
12719 (scm_interaction_environment), macros.c (scm_makacro),
12720 (scm_makmacro, scm_makmmacro), keywords.c (scm_keyword_p), ioext.c
12721 (scm_ftell, scm_dup_to_fdes, scm_fileno, scm_isatty_p),
12722 (scm_fdopen, scm_fdes_to_ports), gc.c (scm_gc_stats), fluids.c
12723 (scm_fluid_ref), filesys.c (scm_open_fdes),
12724 (scm_stat, scm_directory_stream_p, scm_getcwd, scm_readlink):
12725 Docstring correction: `Returns' -> `Return'
12726
1c938eb8
TTN
12727 * gc.c (scm_set_debug_cell_accesses_x):
12728 (s_scm_gc_set_debug_check_freelist_x):
1e6808ea
MG
12729 * fluids.c (scm_fluid_p): Added texinfo markup.
12730
12731 * error.c (scm_strerror): Made docstring more precise.
12732
12733 * vectors.c (scm_vector_p, scm_vector, scm_make_vector),
12734 (scm_vector_to_list, _scm_vector_fill_x), symbols.c
12735 (scm_symbol_p, scm_symbol_to_string), strorder.c
12736 (scm_string_equal_p, scm_string_ci_equal_p, scm_string_less_p),
12737 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p),
12738 (scm_string_ci_less_p, scm_string_ci_leq_p, scm_string_ci_gr_p):
12739 (scm_string_ci_geq_p), strop.c (scm_string_copy),
12740 (scm_string_fill_x): Removed `(r5rs)' from docstrings.
12741
9a6976cd
DH
127422001-04-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
12743
12744 * gc.c (MARK): Re-introduce a cheap sanity test for non debug
12745 mode, as suggested by Michael Livshin.
12746
463b2219
ML
127472001-03-31 Michael Livshin <mlivshin@bigfoot.com>
12748
12749 * backtrace.c (display_backtrace_body): since the `print_state'
12750 variable is not used (instead its data field is used directly as
12751 `pstate'), protect it from the hungry compiler optimizations.
12752 thanks to Bill Schottstaedt for the report.
12753
61045190
DH
127542001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
12755
12756 * gc.[ch] (scm_tc16_allocated): New type tag for allocated cells.
12757 It is only defined and used if guile is compiled with
12758 SCM_DEBUG_CELL_ACCESSES set to true. It's purpose is, to never
12759 let cells with a free_cell type tag be visible outside of the
12760 garbage collector when in debug mode.
12761
12762 * gc.c (scm_debug_cell_accesses_p): Set to true as default.
12763
12764 (scm_assert_cell_valid): Use a local static variable to avoid
12765 recursion.
12766
12767 (MARK): Only check for rogue cell pointers in debug mode. Use
12768 scm_cellp for this purpose and place all checks for rogue pointers
12769 into that function. Further, since due to conservative scanning
12770 we may encounter free cells during marking, don't use the standard
12771 cell type accessor macro to determine the cell type.
12772
12773 (scm_cellp): Check if the cell pointer actually points into a
12774 card header.
12775
12776 (scm_init_gc): Initalize scm_tc16_allocated.
12777
12778 * gc.h (GCH): Renamed to SCM_GC_H.
12779
12780 (SCM_VALIDATE_CELL): Enclose the expression in brackets. This
12781 might be unnecessary, but I feel better this way :-)
12782
12783 (SCM_GC_CELL_TYPE): New macro.
12784
12785 (SCM_SETAND_CDR, SCM_SETOR_CDR): Deprecated. These are not used
12786 in guile, and it is unlikely that they will be applied to real
12787 pairs anyway.
12788
12789 (SCM_SET_FREE_CELL_TYPE): Removed. It was not used.
12790
12791 (SCM_GC_SET_ALLOCATED): New macro. Only non-empty if guile is
12792 compiled with SCM_DEBUG_CELL_ACCESSES set to true.
12793
12794 (SCM_NEWCELL, SCM_NEWCELL2): Use of SCM_GC_SET_ALLOCATED will
12795 make sure that in debug mode no free cell will ever be visible
12796 outside of the garbage collector.
12797
85d6df6a
DH
127982001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
12799
12800 * async.c (scm_asyncs_pending): Don't use != to compare SCM
12801 values.
12802
12803 * async.c (scm_system_async), variable.c (scm_make_variable,
12804 scm_make_undefined_variable): Use scm_cons to create a pair.
12805
12806 * debug.c (scm_reverse_lookup): Perform proper type checking.
12807 Remove suspicious use of SCM_SLOPPY_CONSP.
12808
12809 * eq.c (scm_equal_p), tags.h (SCM_ECONSP): Use SCM_CONSP instead
12810 of SCM_SLOPPY_CONSP. A sane compiler should be able to perform
12811 the corresponding optimization.
12812
12813 * eval.c (iqq): Use proper type check.
12814
12815 (scm_m_expand_body): Remove redundant type checks.
12816
12817 (promise_print): Don't access promise cells as pairs.
12818
12819 * eval.c (EVALCAR, iqq, scm_m_expand_body, scm_eval_args,
12820 scm_deval_args SCM_CEVAL), guardians.c (scm_guard), hashtab.c
12821 (scm_internal_hash_fold), print.c (scm_iprlist): Use !SCM_CELLP
12822 for SCM_NCELLP, !SCM_CONSP for SCM_NCONSP, !SCM_IMP for SCM_NIMP,
12823 !SCM_FALSEP for SCM_NFALSEP, !SCM_NULLP for SCM_NNULLP
12824
12825 * eval.c (scm_m_define, scm_macroexp, SCM_CEVAL), print.c
12826 (scm_iprin1): Use new macro predicate and accessors.
12827
12828 * eval.h (scm_tc16_macro): Removed declaration. It is declared
12829 in macros.h.
12830
12831 * eval.h (EVALH), macros.h (MACROSH), ports.h (PORTSH), procs.h
12832 (PROCSH), tags.h (TAGSH), variable.h (VARIABLEH): Renamed to
12833 SCM_EVAL_H, SCM_MACROS_H, SCM_PORTS_H, SCM_PROCS_H, SCM_TAGS_H and
12834 SCM_VARIABLE_H. Even the macros that are used to inhibit
12835 including a header file twice should be in the SCM_ namespace.
12836
12837 * fluids.c (scm_swap_fluids, scm_swap_fluids_reverse),
12838 properties.c (scm_primitive_property_ref,
12839 scm_primitive_property_del_x): Prefer stronger predicates like
12840 SCM_NULLP or SCM_FALSEP over SCM_IMP.
12841
12842 * gc.c (MARK): Use proper macros to access procedure-with-setter
12843 cell elements and closure cell elements.
12844
12845 (gc_sweep_freelist_finish, scm_gc_sweep, init_heap_seg): Don't
12846 access free cells as pairs.
12847
12848 (scm_unprotect_object): scm_hashq_get_handle returns #f if
12849 no hashtab entry is found.
12850
12851 * gc.c (scm_gc_sweep), ports.c (scm_close_port): Use new macro
12852 SCM_CLR_PORT_OPEN_FLAG.
12853
12854 * guardians.c (TCONC_IN), print.c (scm_free_print_state): Don't
12855 use SCM_SET_C[AD]R for uninitialized cells.
12856
12857 * hashtab.c (scm_hash_fn_get_handle): Use SCM_VALIDATE_VECTOR.
12858 If the hashtable has no slots, return #f instead of '(). This
12859 unifies the return value with most assoc-functions.
12860
12861 (scm_hash_fn_ref): Use proper type check.
12862
12863 (scm_hashq_get_handle, scm_hashv_get_handle, scm_hash_get_handle):
12864 Removed references to non-existing functions from documentation.
12865
12866 * keywords.c (scm_keyword_dash_symbol): Use proper macros to
12867 access keyword cell elements.
12868
12869 * macros.h (SCM_MACROP, SCM_MACRO_TYPE, SCM_MACRO_CODE): New
12870 macros.
12871
12872 * ports.h (SCM_CLR_PORT_OPEN_FLAG): New macro.
12873
12874 * print.c (scm_iprlist): Added comment. Improved loop
12875 conditions.
12876
12877 * procs.h (SCM_ENV, SCM_SETENV): Don't access closure cells as
12878 pairs.
12879
12880 * smob.c (scm_markcdr): Don't access smob cells as pairs.
12881
12882 * tags.h (SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP): Deprecated.
12883
12884 * throw.c (ACTIVATEJB, DEACTIVATEJB): Don't access jump buffer
12885 cells as pairs.
12886
12887 * variable.c (variable_print, variable_equalp, scm_variable_ref,
12888 scm_variable_set_x): Use proper macros to access variable cell
12889 elements.
12890
12891 (scm_variable_bound_p): Don't use SCM_NEGATE_BOOL.
12892
12893 * variable.h (SCM_VARVCELL): Don't access variable cells as
12894 pairs.
12895
12896 * vectors.c (scm_vector), weaks.c (scm_weak_vector): Simplified,
12897 added FIXME comment, removed register specifier.
12898
1b27e91a
KN
128992001-03-29 Keisuke Nishida <kxn30@po.cwru.edu>
12900
12901 * goops.c, goops.h (scm_init_oop_goops_goopscore_module): Deprecated.
12902 * init.c (scm_init_guile_1): Don't init goopscore module.
12903
16c634ec
MV
129042001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
12905
12906 * eval.c (SCM_APPLY): Check that arg1 is bound for scm_tc7_cxr.
12907
91344ceb
MG
129082001-03-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12909
12910 * strop.c (scm_string_to_list): Fixed docstring markup.
12911 (scm_string_upcase_x, scm_string_upcase, scm_string_downcase_x),
12912 (scm_string_downcase, scm_string_capitalize_x),
12913 (scm_string_capitalize): Rewrote and corrected docstrings.
12914 (scm_string_ci_to_symbol): Made docstring more explicit.
12915
07576812
MV
129162001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
12917
12918 * values.h (scm_values_vtable, SCM_VALUESP): Moved here so that
12919 eval.c can use it.
12920 (scm_call_with_values): Removed.
12921 * values.c (values_vtable, scm_values_vtable): Added "scm_" prefix
12922 so that it can be exported.
12923 (scm_call_with_values): Removed.
1c938eb8 12924
07576812
MV
12925 * tags.h (SCM_IM_CALL_WITH_VALUES): New isym.
12926 * eval.c: Include "libguile/values.h"
12927 (scm_m_at_call_with_values, scm_sym_at_call_with_values):
12928 New.
12929 (unmemocopy, scm_ceval, scm_deval): Handle new isym.
12930 * eval.h (scm_sym_at_call_with_values, scm_m_at_call_with_values):
12931 New delcarations to support above change.
12932
12933 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Fix syntax
12934 errors with last change.
1c938eb8 12935
07576812
MV
129362001-03-25 Marius Vollmer <mvo@zagadka.ping.de>
12937
12938 * eval.c (scm_primitive_eval_x, scm_primitive_eval, scm_i_eval_x,
12939 scm_i_eval): Moved the application of the system transformer from
12940 scm_i_eval to scm_primitive_eval.
12941
a17bb5fd
NJ
129422001-03-23 Neil Jerram <neil@ossau.uklinux.net>
12943
a6be01a4
NJ
12944 * guile-snarf.awk.in: Substitute "\\" with "\" in .doc output.
12945
a17bb5fd
NJ
12946 * strop.c (scm_string_index): Fix docstring line break
12947 regression.
12948
12949 * list.c (scm_cons_star): Fix docstring typo.
12950
be54b15d
DH
129512001-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
12952
12953 * gc.c (scm_init_storage), gdbint.c (scm_init_gdbint), numbers.c
12954 (big2str), ports.c (scm_drain_input), read.c (scm_read,
12955 scm_grow_tok_buf), strings.c (scm_string, scm_makfromstr,
12956 scm_make_string, scm_string_append), strports.c (st_resize_port,
12957 scm_object_to_string), unif.c (scm_make_uve): Replace calls to
12958 scm_makstr with calls to scm_allocate_string.
12959
12960 * strings.[ch] (scm_allocate_string): New function.
12961
12962 * strings.[ch] (scm_makstr): Deprecated.
12963
789ecc05
GH
129642001-03-18 Gary Houston <ghouston@arglist.com>
12965
6d163216
GH
12966 * posix.c (scm_tmpnam): check that return value from tmpnam is not
12967 NULL. rewrote the docstring.
12968 (scm_mkstemp): new procedure implementing "mkstemp!".
12969 * posix.h: declare scm_mkstemp.
12970
789ecc05
GH
12971 * net_db.c: declare h_errno if configure didn't define HAVE_H_ERRNO.
12972 normally it would be found in netdb.h.
12973
c6c79933
GH
129742001-03-17 Gary Houston <ghouston@arglist.com>
12975
e9e225e5
GH
12976 * sort.c (scm_sort): move sortvec variable to avoid a compiler
12977 warning when HAVE_ARRAYS is not defined. move len too.
12978
12979 * Makefile.am (DOT_X_FILES): remove net_db.x, posix.x, socket.x.
12980 (EXTRA_DOT_X_FILES): let configure set the value.
12981 (DOT_DOC_FILES): remove net_db.doc, posix.doc, socket.doc.
12982
c6c79933
GH
12983 * gc.c (scm_must_malloc): changed the comment explaining when
12984 scm_must variants of malloc/free etc., should be used, based on
12985 explanation from Dirk Herrmann.
12986 * fports.c (scm_fport_buffer_add): use FUNC_NAME instead of a local
12987 string with procedure name. use scm_must_malloc instead of malloc.
12988 (scm_setvbuf, scm_fdes_to_port, fport_close): use scm_must variants
12989 of malloc/free.
12990 * ports.c (scm_add_to_port_table, scm_remove_from_port_table,
12991 scm_ungetc): use scm_must variants of malloc/realloc/free.
12992 (scm_add_to_port_table, scm_ungetc): define FUNC_NAME.
12993
b3fcac34
DH
129942001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12995
12996 * __scm.h (SCM_ASSERT, SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
12997 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Don't call scm_wta, call
12998 scm_wrong_type_arg instead.
12999
13000 (SCM_WNA): Deprecated.
13001
13002 * error.[ch] (scm_wta): Deprecated.
13003
13004 * numbers.c (s_i_log): Minor comment fix.
13005
13006 * read.c (scm_lreadr), unif.c (scm_aind, scm_shap2ra,
13007 scm_make_shared_array, scm_transpose_array, scm_enclose_array,
13008 scm_array_in_bounds_p): Don't use SCM_ASSERT to check for
13009 wrong-num-args or misc errors.
13010
13011 * unif.c (scm_make_shared_array, scm_transpose_array,
13012 scm_enclose_array, scm_array_in_bounds_p, scm_array_set_x):
13013 Validate the rest argument (note: this is only done when guile is
13014 built with SCM_DEBUG_REST_ARGUMENT=1)
13015
13016 (scm_array_in_bounds_p, scm_uniform_vector_ref, scm_array_set_x):
13017 Replace calls to scm_wrong_num_args by SCM_WRONG_NUM_ARGS.
13018
13019 * validate.h (SCM_FUNC_NAME, SCM_VALIDATE_NUMBER_COPY,
13020 SCM_VALIDATE_NUMBER_DEF_COPY): Deprecated.
13021
68baa7e7
DH
130222001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13023
13024 * validate.h (SCM_WRONG_NUM_ARGS): Call scm_error_num_args_subr
13025 instead of scm_wrong_num_args.
13026
13027 * coop-threads.c: Don't include libguile/strings.h. (Was only
13028 needed for former implementation of SCM_WRONG_NUM_ARGS.)
13029
13030 * debug.c (scm_m_start_stack): Don't use SCM_ASSERT to check for
13031 wrong-num-args errors.
13032
9f40cd87
DH
130332001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13034
13035 * error.[ch] (scm_error_num_args_subr): New function.
13036
5352393c
MG
130372001-03-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13038
13039 * list.c (scm_list, scm_cons_star, scm_null_p, scm_list_p),
13040 (scm_length, scm_append, scm_reverse, scm_list_ref),
13041 (scm_memq, scm_memv, scm_member, scm_delv_x, scm_delete_x),
13042 (scm_delq, scm_delv, scm_delete, scm_delq1_x, scm_delv1_x),
13043 (scm_delete1_x), gc.c (scm_map_free_list),
13044 (scm_free_list_length), hash.c (scm_hashq, scm_hashv),
13045 (scm_hash), hashtab.c (scm_hashq_ref, scm_hashq_set_x),
13046 (scm_hashq_remove_x, scm_hashv_ref, scm_hashv_set_x),
13047 (scm_hashv_remove_x, scm_hash_ref, scm_hash_set_x),
13048 (scm_hash_remove_x), ports.c (scm_pt_size, scm_pt_member), print.c
13049 (scm_current_pstate), scmsigs.c (scm_usleep), goops.c
13050 (scm_get_keyword, scm_sys_compute_slots): Added texinfo markup.
13051
13052 * weaks.c (scm_weak_vector_p, scm_weak_key_hash_table_p),
13053 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
13054 rdelim.c (scm_read_delimited_x), strop.c (scm_string_index),
13055 symbols.c (scm_symbol_interned_p), numbers.c
13056 (scm_string_to_number), ports.c (scm_port_p): Corrected texinfo
13057 markup.
13058
a9205f07
KN
130592001-03-16 Keisuke Nishida <kxn30@po.cwru.edu>
13060
13061 * snarf.h (SCM_CONST_LONG): Deprecated.
13062 * tag.c (CONST_INUM): New macro. Use it to define scm_utag_*.
13063
6d583887
MV
130642001-03-15 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13065
13066 * numbers.c (scm_num2ulong): Check that a bignum is positive
13067 before looking at the magnitude. Correctly check for overflow
13068 during conversion.
13069 (scm_num2long_long): Likewise.
13070 (scm_num2ulong_long): New.
13071 (ULONG_LONG_MAX): Define if not already defined.
13072 * numbers.h: (scm_num2ulong_long): New prototype.
1c938eb8 13073
e87a03fc
MG
130742001-03-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13075
13076 * validate.h (SCM_VALIDATE_OPOUTSTRPORT): New macro.
13077
13078 * strports.h (SCM_STRPORTP, SCM_OPSTRPORTP, SCM_OPINSTRPORTP),
13079 (SCM_OPOUTSTRPORTP): New predicate macros.
13080 (scm_open_input_string, scm_open_output_string),
13081 (scm_get_output_string): New prototypes.
1c938eb8 13082
e87a03fc
MG
13083 * strports.c (scm_open_input_string, scm_open_output_string),
13084 (scm_get_output_string): New procedures (SRFI-6 compliant).
13085 Made scm_tc16_strport non-static.
13086
160bb34a
DH
130872001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
13088
13089 * macros.h (SCM_ASSYNT): Removed unused object argument from
13090 signature.
13091
13092 * eval.c (scm_m_body, scm_m_quote, scm_m_begin, scm_m_if,
13093 scm_m_set_x, scm_m_and, scm_m_or, scm_m_case, scm_m_cond,
13094 scm_m_letstar, scm_m_do, scm_m_quasiquote, scm_m_delay,
13095 scm_m_define, scm_m_letrec1, scm_m_letrec, scm_m_let, scm_m_apply,
13096 scm_m_cont, scm_m_nil_cond, scm_m_nil_ify, scm_m_t_ify,
13097 scm_m_0_cond, scm_m_0_ify, scm_m_1_ify, scm_m_atfop, scm_m_atbind,
13098 scm_m_expand_body), evalext.c (scm_m_generalized_set_x,
13099 scm_m_undefine), goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
13100 scm_m_atdispatch): Removed unused object argument from call to
13101 SCM_ASSYNT.
13102
80dee77b
DH
131032001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
13104
13105 * gh.h/gh_data.c (gh_ints2scm): Changed the signature to use a
13106 const int* to reflect that the input array of integers remains
13107 unchanged. Thanks to Brett Viren for the hint.
13108
d3dd80ab
MG
131092001-03-14 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13110
13111 * gh_data.c (gh_scm2chars, gh_scm2shorts, gh_scm2longs),
13112 (gh_scm2floats, gh_scm2doubles): Check for malloc() returning NULL
13113 in various places.
13114 (gh_scm2newstr, gh_symbol2newstr): Change call to
13115 scm_must_malloc() to malloc(), because user-free()able memory is
13116 allocated.
13117
13118 * gc.c: Added declaration of `scm_debug_check_freelist'.
13119
26a3038d
MG
131202001-03-13 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13121
13122 * ports.c (scm_port_mode): Changed `mode' array size to 4.
13123
1f3908c4
KN
131242001-03-12 Keisuke Nishida <kxn30@po.cwru.edu>
13125
13126 * strports.c (scm_object_to_string): New procedure.
13127 (scm_strprint_obj): Deprecated.
13128 * strports.h: Reflect the changes.
13129
e11208ca
DH
131302001-03-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
13131
13132 * goops.h (SCM_VALIDATE_PUREGENERIC): New macro.
13133
13134 * goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
13135 scm_m_atdispatch): Provide definitions for FUNC_NAME. Don't use
13136 SCM_ASSYNT to check for correct argument types. Either use some
13137 SCM_VALIDATE_* macro or an explicit test.
13138
13139 (scm_make_foreign_object): Don't use SCM_ASSERT to check for
13140 misc-errors.
13141
13142 * macros.h (SCM_ASSYNT): On assertion failure, issue a misc-error
13143 instead of calling scm_wta.
13144
67e8151b
MG
131452001-03-12 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13146
13147 * load.c (scm_primitive_load, scm_primitive_load_path),
13148 (scm_sys_search_load_path): Corrected docstrings (file ->
13149 filename).
13150
13151 * eval.c (scm_force): Added texinfo markup to docstring.
13152 (scm_promise_p): Renamed parameter to `obj' to match docstring.
13153
13154 * debug-malloc.c: Reinserted #include <stdio.h>.
13155
e0c08f17
KN
131562001-03-11 Keisuke Nishida <kxn30@po.cwru.edu>
13157
e39c3de4
KN
13158 * list.c (s_scm_reverse_x): Use SCM_VALIDATE_LIST.
13159
e0c08f17
KN
13160 * environments.c, error.c, eval.c, filesys.c, hashtab.c, load.c,
13161 net_db.c, procprop.c, read.c, scmsigs.c, socket.c, struct.c:
13162 Use SCM_LISTn instead of scm_listify.
13163
e6e2e95a
MD
131642001-03-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13165
13166 * _scm.h: Removed #include <errno.h>.
13167
13168 * error.c, net_db.c, putenv.c, stime.c: Removed declaration of
13169 errno variable (can be a macro on some systems, for example when
13170 using linux libc with threads).
13171
13172 * error.c, filesys.c, gc.c, ioext.c, iselect.c, net_db.c, ports.c,
13173 posix.c, print.c, putenv.c, scmsigs.c, script.c, simpos.c, smob.c,
13174 socket.c, srcprop.c, stime.c, strop.c, unif.c, vports.c: Added
13175 #include <errno.h> in these 20 out of 100 files.
1c938eb8 13176
97d0e20b
GH
131772001-03-10 Gary Houston <ghouston@arglist.com>
13178
13179 * socket.c: add a definition of SUN_LEN (from glibc) for when it's
13180 not already defined.
13181
e75341b3
MD
131822001-03-09 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13183
13184 * coop.c: Inserted #include <stdio.h>.
13185
13186 * iselect.c: Reinserted #include <stdio.h>.
13187
74355186
MV
131882001-03-10 Marius Vollmer <mvo@zagadka.ping.de>
13189
13190 * posix.c: Replaced `#define' of __USE_XOPEN right before
13191 including unistd.h with a define of _GNU_SOURCE at the very top of
13192 the file.
13193
783e7774
KN
131942001-03-09 Keisuke Nishida <kxn30@po.cwru.edu>
13195
13196 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
13197 continuations.c, debug-malloc.c, debug.c, dynwind.c, eq.c, eval.c,
13198 feature.c, filesys.h, gc_os_dep.c, gh_data.c, gh_eval.c,
13199 gh_funcs.c, gh_io.c, gh_list.c, gh_predicates.c, hash.c,
13200 hashtab.c, iselect.c, keywords.c, list.c, load.c, mallocs.c,
13201 net_db.c, numbers.c, objprop.c, objprop.h, options.c, pairs.c,
13202 print.c, procprop.c, procs.c, properties.c, ramap.c,
13203 regex-posix.c, root.c, scmsigs.c, simpos.c, socket.c, srcprop.c,
13204 stackchk.c, stacks.c, strings.c, strop.c, strorder.c, struct.c,
13205 symbols.c, tag.c, threads.c, variable.c, vectors.c, weaks.c:
1c938eb8 13206 Remove #include <stdio.h>
783e7774
KN
13207 * gc.c, gdbint.c, root.c, sort.c, unif.c: Add #include <string.h>.
13208
13209 * procs.c (scm_make_subr_opt): Init symcell to avoid warning.
13210
9a677c37
MG
132112001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13212
13213 * posix.c (scm_gethostname): Set initial name length to 256 for
13214 Solaris.
13215
94e6d793
MG
132162001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13217
13218 * posix.h (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
13219 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
13220 (scm_sethostname, scm_gethostname): New prototypes.
13221
13222 * posix.c: Added inclusion of <crypt.h>, <sys/resource.h> and
13223 <sys/file.h>, if present.
13224 (scm_init_posix): [PRIO_PROCESS, PRIO_PGRP, PRIO_USER, LOCK_SH,
13225 LOCK_EX, LOCK_UN, LOCK_NB]: New variables.
13226 (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
13227 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
13228 (scm_sethostname, scm_gethostname): New procedures.
13229
650a1cf9
NJ
132302001-03-08 Neil Jerram <neil@ossau.uklinux.net>
13231
13232 * ports.c (scm_port_column): Docstring fixes: (i) port-line arg is
13233 not optional (ii) "recommend" spelling correction.
13234
9636b49c
MD
132352001-03-08 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13236
5e4a4d09
MD
13237 * ramap.c (racp): Removed optimization which caused array copying
13238 to fail if the two arrays shared storage. Re-inserted the IVDEP
13239 macros removed in the change of 2000-03-09. (Don't really have a
13240 complete grasp of what they are for, but they seem to be necessary
13241 on Crays. This needs testing!) Thanks to Miroslav Silovic.
13242
9636b49c
MD
13243 * hash.c (scm_string_hash): Don't downcase characters.
13244
04a4d666
MD
132452001-03-07 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13246
9636b49c 13247 * symbols.c (scm_symbols_prehistory): Changed symbol hash table
04a4d666
MD
13248 size from 277 --> 1009.
13249
13250 * symbols.c, symbols.h (scm_sys_symbols): New function GUILE_DEBUG
13251 function.
13252
13253 * coop-threads.c: Fixed change of 2001-03-06.
1c938eb8 13254
04a4d666
MD
13255 * validate.h: Code formatting.
13256
66418d34
KN
132572001-03-07 Keisuke Nishida <kxn30@po.cwru.edu>
13258
13259 * Makefile.am (*.x): Add dependency on snarf.h and guile-doc-snarf.in.
13260 (*.doc): Add dependency on guile-snarf.awk.in.
13261
13262 * guile-snarf.awk.in: Neglect spaces at the end of
13263 SCM_SNARF_DOCSTRING_END. Skip lines "# NN ..." in the
13264 middle of docstrings. (To avoid the problem with gcc-2.96.)
13265
2ade72d7
DH
132662001-03-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
13267
13268 * coop-threads.c (scm_call_with_new_thread), load.c
13269 (scm_primitive_load, scm_sys_search_load_path), random.c
13270 (scm_c_default_rstate), struct.c (scm_make_struct_layout,
13271 scm_struct_ref, scm_struct_set_x): Don't use SCM_ASSERT to
13272 (potentially) issue a scm-misc-error or wrong-num-args error
13273 message.
13274
13275 * load.c (scm_search_path): Use SCM_ASSERT_TYPE to give details
13276 about the expected type with the wrong-type-arg error message.
13277
13278 * smob.c (scm_make_smob): Abort on misuse of smob - it indicates
13279 a C level bug that can't be fixed from scheme anyway.
13280
586d7da2
MD
132812001-03-05 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13282
13283 * eval.c (scm_m_letstar): Removed check for duplicate bindings.
13284 Duplicate bindings are OK in a let* since a let* is semantically
13285 equivalent to a nested set of let:s.
13286
1dd05fd8
MG
132872001-03-05 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13288
13289 * print.c (scm_print_options): Fixed texinfo in docstring.
13290
13291 * net_db.c (scm_getserv, scm_getproto, scm_getnet): Return #f if
13292 the underlying functions getservent, getprotoent or getnetent
13293 return NULL instead of signalling an error.
13294
439006bf
GH
132952001-03-04 Gary Houston <ghouston@arglist.com>
13296
13297 * socket.c (scm_fill_sockaddr): don't allow buffer overflows when
13298 taking an unexpectedly large filename for an AF_UNIX socket from
13299 bind/connect/sendto (thanks to Martin Grabmueller).
1c938eb8 13300
439006bf
GH
13301 * socket.c (scm_sock_fd_to_port, SCM_SOCK_FD_TO_PORT): removed the
13302 former and adjusted the latter.
13303 (scm_socket, scm_socketpair): cosmetic changes.
13304 (scm_getsockopt, scm_setsockopt): declare optlen as int, not
13305 size_t as socklen_t substitute. don't restrict args/return values
13306 to INUM: allow full range of int or size_t.
13307 (scm_fill_sockaddr): check arguments before allocating memory, to
13308 avoid leakage. use malloc, not scm_must_malloc.
13309 (scm_connect, scm_bind, scm_sendto): use int, not size_t as socklen_t
13310 substitute. free the sockaddr structure before throwing an error.
13311 (scm_init_add_buffer): procedure removed, together with its static
13312 buffer scm_addr_buffer, which wouldn't be thread safe. instead,
13313 define a macro MAX_ADDR_SIZE and declare the buffer where needed.
13314 (scm_accept, scm_getpeername, scm_getsockname, scm_recvfrom,
13315 scm_sendto): use a local buffer instead of scm_addr_buffer.
13316 adjust for new SCM_SOCK_FD_TO_PORT. use int for address size,
13317 not size_t.
13318 (scm_recvfrom): set addr->sa_family to AF_UNSPEC before the recvfrom
13319 call to detect whether recvfrom could be bothered to set the address.
13320 (scm_init_socket): don't call scm_init_addr_buffer.
13321
276dd677
DH
133222001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
13323
13324 * debug.c (scm_procedure_source, scm_procedure_environment),
13325 print.c (scm_get_print_state), ramap.c (scm_array_fill_int,
13326 scm_array_index_map_x), sort.c (scm_sort_x, scm_sort,
13327 scm_stable_sort_x, scm_stable_sort), stacks.c (scm_make_stack,
13328 scm_last_stack_frame), symbols.c (scm_sym2vcell, scm_sym2ovcell),
13329 unif.c (scm_list_to_uniform_array, scm_uniform_vector_length,
13330 scm_transpose_array, scm_enclose_array, scm_array_in_bounds_p,
13331 scm_uniform_vector_ref, scm_array_set_x, scm_uniform_array_read_x,
13332 scm_uniform_array_write, scm_bit_set_star_x, scm_bit_count_star,
13333 scm_array_to_list, scm_array_prototype), validate.h
13334 (SCM_VALIDATE_NUMBER_COPY): Don't call function scm_wta, call
13335 scm_misc_error or scm_wrong_type_arg instead.
13336
13337 * validate.h (SCM_WTA, RETURN_SCM_WTA): Deprecated.
13338
5e03762c
MD
133392001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13340
13341 * goops.c, goops.h (scm_sys_pre_expand_closure_x): Removed.
13342 (scm_sys_tag_body): Added.
13343
db4b4ca6
DH
133442001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
13345
13346 * continuations.c (continuation_apply), eval.c (scm_m_lambda,
13347 scm_m_letstar, scm_m_letrec1, scm_m_let, SCM_APPLY), eval.h
13348 (SCM_EVALIM2), evalext.c (scm_m_generalized_set_x), gc.c
13349 (get_bvec, MARK), goops.c (scm_primitive_generic_generic),
13350 options.c (scm_options), ports.c (scm_remove_from_port_table),
13351 ramap.c (scm_ramapc), read.c (skip_scsh_block_comment, scm_lreadr,
13352 scm_lreadparen, scm_lreadrecparen), script.c (script_get_octal,
13353 script_get_backslash, script_read_arg), unif.c (scm_cvref): Don't
13354 call function scm_wta, call scm_misc_error or scm_wrong_type_arg
13355 instead.
13356
87e7741d
MD
133572001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13358
13359 * goops.c (scm_sys_pre_expand_closure_x): New procedure.
13360
d19b0aac
MV
133612001-03-04 Marius Vollmer <mvo@zagadka.ping.de>
13362
13363 * eval.c (scm_s_duplicate_bindings): New error message.
13364 (scm_m_letrec1, scm_m_letstar): Check for duplicate bindings.
13365
2fd945df
MV
133662001-03-03 Marius Vollmer <mvo@zagadka.ping.de>
13367
13368 * eval.h (SCM_EVALIM2): New macro. Use it when a
13369 immediate, literal constant should be evaluated.
13370 * eval.c (scm_s_duplicate_formals): New error message string.
13371 (scm_c_improper_memq): New function.
13372 (scm_m_lambda): Check for duplicate arguments.
13373 (scm_ceval, scm_deval): When executing a body: only cons a new
13374 toplevel environment frame when it is different from the
13375 existing one; use EVALCAR instead of SIDEVAL so that we can properly
13376 check for empty combinations; use SCM_EVALIM2 for the same reason
13377 in the non-toplevel loop.
13378 (nontoplevel_cdrxnoap, nontoplevel_cdrxbegin, nontoplevel_begin):
13379 New labels with the meaning of their non-"nontoplevel" partners,
13380 but they are used when it is known that the body is not evaluated at
13381 top-level.
13382 (scm_apply, scm_dapply): use SCM_EVALIM2 to get proper error
13383 reporting for empty combinations.
13384
9e6fc585
KN
133852001-03-02 Keisuke Nishida <kxn30@po.cwru.edu>
13386
13387 * Remove dump facilities.
13388 * dump.c, dump.h: Removed.
13389 * Makefile.am: Remove dump.c, dump.h, dump.x, dump.doc.
13390 * init.c: Remove #include "libguile/dump.h".
13391 (scm_init_guile_1): Remove scm_init_dump.
13392 * smob.h (scm_smob_descriptor): Remove slots: dump, undump.
13393 (scm_set_smob_dump, scm_set_smob_undump): Remove declaration.
13394 * smob.c (scm_make_smob_type): Remove initialization: dump, undump.
13395 (scm_set_smob_dump, scm_set_smob_undump): Removed.
13396
13397 * keywords.c: Remove #include "libguile/dump.h".
13398 (keyword_dump, keyword_undump): Removed.
13399 (scm_init_keywords): Remove scm_set_smob_dump and scm_set_smob_undump.
13400
eae54bf0
MG
134012001-03-02 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13402
13403 * vectors.c (s_scm_vector_p, list->vector, scm_vector)
13404 (scm_vector_ref, scm_vector_set_x, scm_vector_to_list)
13405 (scm_vector_fill_x), strorder.c (scm_string_equal_p)
13406 (scm_string_ci_equal_p, scm_string_less_p, scm_string_leq_p)
13407 (scm_string_gr_p, scm_string_geq_p, scm_string_ci_less_p)
13408 (scm_string_ci_geq_p), symbols.c (scm_symbol_p)
13409 (scm_symbol_to_string, scm_string_to_symbol): Changed use of @t{}
13410 to @code{} as the texinfo manual recommends, converted the
13411 examples to use a @lisp{}-environment.
13412
13413 * strports.c (scm_eval_string): Cleaned up the docstring.
13414
13415 * struct.c (scm_struct_p, scm_struct_vtable_p): Added texinfo
13416 markup.
13417
13418 * numbers.c (scm_exact_p, scm_odd_p, scm_even_p)
13419 (scm_number_to_string, scm_string_to_number, scm_number_p)
13420 (scm_real_p, scm_integer_p, scm_inexact_p, scm_make_rectangular)
13421 (scm_make_polar, scm_inexact_to_exact): Added texinfo markup.
13422 (scm_ash): Added texinfo markup and removed obsolete @refill.
13423 (scm_gr_p): Corrected comment.
13424 (scm_gr_p, scm_leq_p, scm_geq_p): Added texinfo markup to (future
13425 docstring) comments.
13426 (scm_positive_p, scm_less_p, scm_num_eq_p, scm_real_p)
13427 (scm_number_p, scm_negative_p, scm_max, scm_min, scm_sum)
13428 (scm_difference, scm_product, scm_divide, scm_asinh, scm_acosh)
13429 (scm_atanh, scm_truncate, scm_round, scm_exact_to_inexact)
13430 (floor, ceiling, $sqrt, $abs, $exp, $log, $sin, $cos, $tan, $asin)
13431 ($acos, $atan, $sinh, $cosh, $tanh, scm_real_part, scm_imag_part)
13432 (scm_magnitude, scm_angle, scm_abs, scm_quotient, scm_remainder)
13433 (scm_modulo, scm_gcd, scm_lcm): Added (future docstring) comments.
13434
23deee81
DH
134352001-02-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
13436
13437 * __scm.h (SCM_ASSERT_TYPE): Add missing macro parameter.
13438 (Obviously nobody compiles with SCM_RECKLESS defined...)
13439
13440 * validate.h (SCM_ASSERT_RANGE): Use the argument number.
13441
6fe692e9
MD
134422001-02-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13443
13444 * ports.c, ports.h (scm_c_read, scm_c_write): New functions.
13445
13446 * ports.h (SCM_READ_BUFFER_EMPTY_P): New macro.
13447
27c37006
NJ
134482001-02-24 Neil Jerram <neil@ossau.uklinux.net>
13449
13450 * numbers.c (scm_two_doubles, scm_sys_expt, scm_sys_atan2,
13451 scm_make_polar): Rename arguments `z1' and `z2' to `x' and `y',
13452 since use of `z' suggests that the arguments may be complex.
13453
13454 * goops.c (scm_make), numbers.c (scm_sys_expt): Fix docstring
13455 typos.
13456
2069af38
NJ
134572001-02-23 Neil Jerram <neil@ossau.uklinux.net>
13458
13459 * dump.c (scm_binary_write, scm_binary_read), eval.c
13460 (scm_primitive_eval), guardians.c (scm_guardian_destroyed_p,
13461 scm_guardian_greedy_p, scm_make_guardian), fports.c
13462 (scm_file_port_p): Minor docstring fixes.
13463
b42ff180
MV
134642001-02-22 Marius Vollmer <mvo@zagadka.ping.de>
13465
2069af38 13466 * load.c (load): Use scm_primitive_eval_x instead of scm_i_eval_x.
97ea55f8
MV
13467
13468 * goops.c (scm_add_method, DEFVAR): Use scm_eval instead of
13469 scm_i_eval.
13470 (make_class_from_template): Do not bother to set the current
13471 module around the call to DEFVAR, scm_eval takes care of that.
13472 (scm_init_goops): Make scm_module_goops and
13473 scm_goops_lookup_closure permanent objects.
1c938eb8 13474
97ea55f8
MV
13475 * eval.c (scm_ceval, scm_deval): When evaluating expressions on
13476 top level, create a fresh top-level environment for each
13477 expression instead of mutating the exisint frame. This is
13478 important when that frame is closed over.
13479
b42ff180
MV
13480 * numbers.c (s_scm_logior) [SCM_DIGSTOOBIG]: Also use
13481 SCM_DIGSPERLONG instead of DIGSPERLONG.
13482
09f2ab1e
MV
134832001-02-21 Marius Vollmer <mvo@zagadka.ping.de>
13484
13485 * eval.c (scm_ceval, scm_deval): Check for wrong number of args
13486 before applying arrow procedure in `cond' and before applying
13487 receiver procedure in call-with-current-continuation.
13488 (scm_i_eval): Do not invoke scm_copy_tree in argument in SCM_XEVAL
13489 macro. The argument is expanded more than one time.
13490
13491 * numbers.c (scm_logior) [SCM_DIGSTOOBIG]: Correctly use
13492 SCM_BIGDIG instead of BIGDIG. Thanks to Steven G. Johnson!
13493
134942001-02-20 Marius Vollmer <mvo@zagadka.ping.de>
13495
13496 * guile-doc-snarf.in, guile-func-name-check.in: Added copyright
13497 notice and license.
13498
7090240c
MG
134992001-02-17 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13500
13501 * variable.c (scm_make_variable, scm_make_undefined_variable)
13502 (scm_variable_ref, scm_variable_set_x, scm_builtin_variable)
13503 (scm_variable_bound_p), values.c (scm_values)
13504 (scm_call_with_values), unif.c (scm_bit_count)
13505 (scm_bit_set_star_x), symbols.c (scm_gentemp)
13506 (scm_gensym), strings.c (scm_string_p, scm_make_string)
13507 (scm_read_only_string_p, scm_string_length, scm_string_ref)
13508 (scm_string_set_x, scm_substring, scm_string_append), stime.c
13509 (scm_strptime, scm_mktime), random.c (scm_seed_to_random_state)
13510 (scm_copy_random_state, scm_random), print.c (scm_newline)
13511 (scm_write_char, scm_simple_format), debug-malloc.c
13512 (scm_malloc_stats), environments.c (scm_environment_p)
13513 (scm_environment_bound_p, scm_environment_ref)
13514 (scm_environment_fold, scm_environment_define)
13515 (scm_environment_undefine, scm_environment_set_x)
13516 (scm_environment_cell, scm_environment_observe)
13517 (scm_environment_observe_weak, scm_environment_unobserve)
13518 (scm_make_eval_environment, scm_eval_environment_p)
13519 (scm_eval_environment_set_local_x, scm_eval_environment_local)
13520 (scm_eval_environment_imported)
13521 (scm_eval_environment_set_imported_x, scm_make_import_environment)
13522 (scm_import_environment_p, scm_import_environment_imports)
13523 (scm_import_environment_set_imports_x, scm_make_export_environment)
13524 (scm_export_environment_p, scm_export_environment_private)
13525 (scm_export_environment_set_private_x)
13526 (scm_export_environment_signature)
13527 (scm_export_environment_set_signature_x, scm_leaf_environment_p):
13528 Added texinfo markup.
13529
13530 * ports.c (scm_drain_input): Lowercased argument to @var.
13531 (scm_current_input_port, scm_current_output_port): Filled in
13532 missing explanation.
13533 (scm_current_load_port, scm_set_current_output_port)
13534 (scm_set_current_error_port, scm_port_line, scm_set_port_line_x):
13535 Added texinfo markup.
13536
13537 * arbiters.c (scm_make_arbiter, scm_try_arbiter)
13538 (scm_release_arbiter): Added texinfo markup to docstrings.
13539 Changed `Returns' to `Return'.
13540 (arbiter_print): Changed SCM_CDR to SCM_SMOB_DATA.
13541
25703850
NJ
135422001-02-16 Neil Jerram <neil@ossau.uklinux.net>
13543
13544 * guile-snarf.awk.in: Quote any `@'s that occur in Scheme names,
13545 by doubling them to `@@'.
13546
73c0fdce
MG
135472001-02-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13548
13549 * numbers.c (scm_lognot), random.c (scm_random,
13550 scm_random_normal, scm_random_solid_sphere_x,
13551 scm_random_hollow_sphere_x, scm_random_normal_vector_x,
13552 scm_random_exp), dynwind.c
13553 (scm_dynamic_wind): Removed unnecessary "" from docstrings.
1c938eb8 13554
73c0fdce
MG
13555 * goops.c (scm_sys_initialize_object, scm_instance_p,
13556 scm_class_name, scm_class_precedence_list, scm_class_slots,
13557 scm_class_environment, scm_generic_function_name,
13558 scm_generic_function_methods, scm_method_generic_function,
13559 scm_method_specializers, scm_method_procedure, scm_make_unbound,
13560 scm_unbound_p, scm_assert_bound, scm_at_assert_bound_ref,
13561 scm_sys_fast_slot_ref, scm_sys_fast_slot_set_x, scm_slot_ref,
13562 scm_slot_set_x, _scm_slot_bound_p, scm_slots_exists_p,
13563 scm_sys_allocate_instance, scm_make, scm_pure_generic_p,
13564 scm_class_direct_supers, scm_class_direct_slots,
13565 scm_class_direct_subclasses, scm_class_direct_methods,
13566 scm_accessor_method_slot_definition, scm_sys_goops_loaded),
13567 debug.c (scm_with_traps, scm_memoized_p, scm_make_gloc,
13568 scm_gloc_p, scm_make_iloc, scm_iloc_p, scm_memcons,
13569 scm_mem_to_proc, scm_proc_to_mem, scm_unmemoize,
13570 scm_memoized_environment, scm_procedure_name,
13571 scm_procedure_source, scm_procedure_environment, scm_debug_hang),
13572 objects.c
13573 (scm_class_of, scm_entity_p, scm_operator_p,
13574 scm_set_object_procedure_x, scm_object_procedure,
13575 scm_make_class_object), hooks.c (scm_make_hook_with_name,
13576 scm_make_hook, scm_hook_p, scm_hook_empty_p, scm_add_hook_x,
13577 scm_remove_hook_x, scm_reset_hook_x, scm_run_hook,
13578 scm_hook_to_list), lang.c
13579 (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null, scm_nil_eq),
13580 numbers.c (scm_sys_expt, scm_sys_atan2), print.c
13581 (scm_print_options, scm_port_with_print_state,
13582 scm_get_print_state), procs.c (scm_make_cclo, scm_procedure_p,
13583 scm_closure_p, scm_thunk_p, scm_procedure_with_setter_p,
13584 scm_make_procedure_with_setter, scm_procedure), throw.c
13585 (scm_lazy_catch), modules.c (scm_standard_eval_closure), load.c
13586 (scm_parse_path, scm_search_path), stacks.c (scm_make_stack,
13587 scm_stack_ref, scm_stack_length, scm_frame_p,
13588 scm_last_stack_frame, scm_frame_number, scm_frame_source,
13589 scm_frame_procedure, scm_frame_arguments, scm_frame_previous,
13590 scm_frame_next, scm_frame_real_p, scm_frame_procedure_p,
13591 scm_frame_evaluating_args_p, scm_frame_overflow_p), filesys.c
13592 (scm_dirname, scm_basename), dynwind.c
13593 (scm_wind_chain), read.c (scm_read_options, scm_read,
13594 scm_read_hash_extend), gc.c
13595 (scm_unhash_name), eval.c (scm_eval_options_interface,
13596 scm_evaluator_traps, s_scm_nconc2last), backtrace.c
13597 (scm_display_error, scm_set_print_params_x,
13598 scm_display_application, scm_display_backtrace, scm_backtrace),
13599 async.c (scm_async, scm_system_async, scm_async_mark,
13600 scm_system_async_mark, scm_run_asyncs, scm_noop,
13601 scm_set_tick_rate, scm_set_switch_rate, scm_unmask_signals,
13602 scm_mask_signals): Added docstrings.
13603
e228a203
KN
136042001-02-15 Keisuke Nishida <kxn30@po.cwru.edu>
13605
13606 * dump.c (scm_undump): Use SCM_CARLOC/SCM_CDRLOC to obtain the
13607 address of car/cdr. (Thanks to Dirk Herrmann)
13608 Use scm_sizet to obtain the length of strings.
13609 (Thanks to Matthias Koeppe)
13610
1552a59d
MV
136112001-02-15 Marius Vollmer <mvo@zagadka.ping.de>
13612
13613 * symbols.c (scm_mem2symbol): Put a empty statement after the
13614 next_symbol label. This is mandated by ANSI, appearantly.
13615
3178f751
MV
136162001-02-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13617
13618 * gc_os_dep.c: Do not include <linux/version.h>. It makes no
13619 sense to compile for a specific kernel version. Do not include
13620 <asm/signal.h> while defining __KERNEL__. This hack should no
13621 longer be needed and caused problems.
13622
7af4defe
MV
136232001-02-13 Marius Vollmer <mvo@zagadka.ping.de>
13624
13625 * eval.c (scm_ceval, scm_deval): use `SIDEVAL' instead of
13626 SCM_CEVAL when evaluating subforms of `begin' forms. SCM_CEVAL
13627 can not deal with immediates.
13628
5d6bb349
KN
136292001-02-12 Keisuke Nishida <kxn30@po.cwru.edu>
13630
13631 * list.c (scm_list_copy): Validate the first argument.
13632
ec9709f0
MV
136332001-02-11 Marius Vollmer <mvo@zagadka.ping.de>
13634
13635 Fix evaluator so that top-level expressions are correctly
13636 evaluated with respect to the module system.
1c938eb8 13637
ec9709f0
MV
13638 * modules.h. modules.c (scm_current_module_lookup_closure): New
13639 function.
13640
13641 * eval.h (scm_primitive_eval, scm_primitive_eval_x): New
13642 prototypes.
13643 (scm_i_eval, scm_i_eval_x, scm_eval, scm_eval_x): Changed argument
13644 names to better reflect their meaning.
13645
13646 * eval.c (scm_ceval, scm_deval): Recognize when `begin' is being
13647 evaluated at top-level and synronize lookup closure before
13648 executing every subform.
13649 (scm_primitve_eval_x, scm_primitive_eval): New functions.
13650 (scm_eval_x, scm_eval): Reimplement in terms of
13651 scm_primitive_eval_x and scm_primitive_eval, respectively.
1c938eb8 13652
ec9709f0
MV
136532001-02-09 Marius Vollmer <mvo@zagadka.ping.de>
13654
13655 * macros.c (scm_macro_name, scm_macro_transformer): Use
13656 SCM_SMOB_DATA instead of SCM_CDR. Provided by Martin Grabmueller.
13657 Thanks!
13658
42417394
KN
136592001-02-10 Keisuke Nishida <kxn30@po.cwru.edu>
13660
13661 * dump.c (scm_store_bytes): Store data size before data.
13662 (scm_restore_bytes): Restore data size. Takes a pointer to size.
13663 * dump.h (scm_restore_bytes): Updated.
13664
bf942687
KN
136652001-02-09 Keisuke Nishida <kxn30@po.cwru.edu>
13666
13667 * dump.c: Use double cells for update schedule.
13668
1be4270a
KN
136692001-02-08 Keisuke Nishida <kxn30@po.cwru.edu>
13670
13671 * ports.c (scm_unread_char): Take an optional argument.
13672
548728ea
MV
136732001-02-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13674
13675 * modules.h (scm_selected_module, scm_current_module): Renamed
13676 scm_selected_module to scm_current_module to synchronize Scheme
13677 and C names.
13678 (scm_select_module, scm_set_current_module): Likewise. Changed
13679 all uses.
1c938eb8 13680
548728ea
MV
13681 * ports.c (scm_port_for_each): Make a snapshot of the port table
13682 before iterating over it. The table might change while the user
13683 code is running. With the snapshot, the user can depend on the
c5408bc3 13684 fact that each port that existed at the start of the iteration is
548728ea
MV
13685 encountered exactly once. (ice-9 popen) depends on this.
13686
cb0d8be2
DH
136872001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
13688
13689 * strings.h (SCM_STRING_MAX_LENGTH): New macro.
13690
13691 * strings.c (scm_makstr, scm_take_str, scm_make_string): Added
13692 range checking for the size parameter. Thanks to Martin
13693 Grabmueller for the hint.
13694
13695 (scm_makstr): Reordered string initialization to make interrupt
13696 deferring unnecessary.
13697
13698 * vectors.c (scm_make_vector): Fixed range checking.
13699
e382fdbe
DH
137002001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
13701
13702 * vectors.h (SCM_VECTOR_MAX_LENGTH): New macro.
13703
13704 * vectors.c (scm_make_vector, scm_c_make_vector): Improved the
13705 checking of the size parameter for type correctness and valid
13706 range. Thanks to Rob Browning for reporting the problem. Instead
13707 of deferring interrupts, scm_remember_upto_here_1 is used.
13708
bf8f0922
KN
137092001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
13710
13711 * dump.c (scm_store_cell_object, scm_restore_cell_object): Removed.
13712 (scm_dump_cell_update): Removed.
13713 (scm_dump_update): Renamed from scm_dump_object_update.
13714 (scm_restore_string, scm_restore_bytes, scm_restore_word): Takes
13715 a pointer instead of returning a value.
13716 * keywords.c (keyword_undump): Updated.
13717
914cceec
KN
137182001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
13719
13720 * dump.c, dump.h: Modified a lot.
5f17c66f 13721 (SCM_DUMP_COOKIE): Version 0.1
914cceec
KN
13722 (scm_dump_mark): Removed.
13723 (scm_restore_cell_object, scm_store_cell_object): New functions.
13724
13725 * smob.h (scm_smob_descriptor): Removed slots: dump_mark,
13726 dump_dealloc, dump_store, undump_alloc, undump_restore, undump_init.
13727 New slots: dump, undump.
13728 * smob.c (scm_make_smob_type, scm_set_smob_dump, scm_set_smob_undump):
13729 Updated.
13730
13731 * keywords.c (keyword_dump): Renamed from keyword_dealloc.
13732 (keyword_undump): Renamed from keyword_alloc.
13733 (scm_init_keywords): Set keyword_dump and keyword_undump.
13734
ecf470a2
ML
137352001-02-03 Michael Livshin <mlivshin@bigfoot.com>
13736
13737 * gc.c (DOUBLECELL_ALIGNED_P): new macro, a better-named analog of
13738 the deprecated SCM_DOUBLE_CELLP.
13739
13740 * tags.h (SCM_DOUBLE_CELLP): deprecated.
13741
03416a99
KN
137422001-02-02 Keisuke Nishida <kxn30@po.cwru.edu>
13743
13744 * dump.c, dump.h: New files.
13745 * Makefile.am: Added dump.c, dump.h, dump.x, dump.doc.
13746 * init.c: #include "libguile/dump.h".
13747 (scm_init_guile_1): Call scm_init_dump.
13748 * smob.h (scm_smob_descriptor): New slots: dump_mark,
13749 dump_dealloc, dump_store, undump_alloc, undump_restore,
13750 undump_init.
13751 * smob.c (scm_make_smob_type): Init the new slots.
13752 (scm_set_smob_dump, scm_set_smob_undump): New functions.
13753 * smob.h (scm_set_smob_dump, scm_set_smob_undump): Declared.
13754
13755 * keywords.c: #include "libguile/dump.h".
13756 (keyword_dealloc, keyword_alloc): New functions.
13757 (scm_init_keywords): Set smob_dump and smob_undump.
13758
00ffa0e7
KN
137592001-02-01 Keisuke Nishida <kxn30@po.cwru.edu>
13760
13761 * vectors.c (scm_c_make_vector): New function.
13762 * vectors.h (scm_c_make_vector): Declared.
13763 * eval.c (scm_copy_tree), filesys.c (scm_stat2scm), fluids.c
13764 (scm_make_initial_fluids, grow_fluids), gc.c (scm_init_storage),
13765 gh_data.c (gh_ints2scm, gh_doubles2scm): goops.c
13766 (scm_make_method_cache, scm_i_vector2list,
13767 scm_compute_applicable_methods, scm_sys_method_more_specific_p),
13768 init.c (start_stack), net_db.c (scm_gethost, scm_getnet,
13769 scm_getproto, scm_return_entry), posix.c (scm_getgroups,
13770 scm_getpwuid, scm_getgrgid, scm_uname), print.c (make_print_state,
13771 grow_ref_stack), regex-posix.c (scm_regexp_exec), scmsigs.c
13772 (scm_init_scmsigs), socket.c (scm_addr_vector, scm_addr_vector),
13773 stime.c (scm_times, filltime), unif.c (scm_make_uve), vectors.c
13774 (scm_vector, scm_make_vector): Use scm_c_make_vector.
13775
13776 * hashtab.c (scm_c_make_hash_table): New function.
13777 * hashtab.h (scm_c_make_hash_table): Declared.
13778 * environments.c (scm_make_leaf_environment,
13779 scm_make_eval_environment), gc.c (scm_init_storage),
13780 keywords.c (scm_init_keywords), symbols.c (scm_builtin_bindings):
13781 Use scm_c_make_hash_table.
13782
b8446ce8
MD
137832001-01-31 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13784
13785 * unif.c (rapr1): Don't apply scm_uniform_vector_length on arrays.
13786
e3239868
DH
137872001-01-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13788
13789 * struct.c (scm_make_vtable_vtable): Removed unnecessary "" from
13790 end of docstring.
13791
13792 * struct.c (scm_struct_set_x, scm_struct_vtable_tag,
13793 scm_struct_vtable_name, scm_set_struct_vtable_name_x), weaks.c
13794 (scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table,
13795 scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
13796 srcprop.c (scm_source_properties, scm_set_source_properties_x,
13797 scm_source_property, scm_set_source_property_x), sort.c
13798 (scm_sort_list_x, scm_restricted_vector_sort_x, scm_sorted_p,
13799 scm_merge, scm_merge_x, scm_sort_x, scm_sort, scm_stable_sort_x,
13800 scm_stable_sort, scm_sort_list_x, scm_sort_list): Added
13801 docstrings.
13802
41ee56dd
MD
138032001-01-29 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13804
13805 * eval.c (SCM_APPLY): Check that primitives which take 1 arg
13806 really get that arg.
13807
b6311c08
KN
138082001-01-26 Keisuke Nishida <kxn30@po.cwru.edu>
13809
13810 * goops.c (s_scm_get_keyword): Bug fix.
13811
a49af0c0
DH
138122001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
13813
13814 The following patch was sent by Martin Grabmueller. It makes sure
13815 that in case of parameter errors the correct function name is
13816 shown, and that parameter types are only checked once.
13817
13818 * strop.c (string_copy, string_upcase_x, string_downcase_x,
13819 string_capitalize_x): New functions. Each one performs the core
13820 functionality of the corresponding scm_* function.
13821
13822 (scm_string_copy, scm_string_upcase_x, scm_string_upcase,
13823 scm_string_downcase_x, scm_string_downcase,
13824 scm_string_capitalize_x, scm_string_capitalize): Reduced to
13825 parameter checking wrappers of the above functions.
13826
13070bd3
DH
138272001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
13828
13829 * continuations.c, dynl.c, keywords.c, load.c: Include
13830 strings.h. Thanks to Bill Schottstaedt for the bug report.
13831
2f2b390c
DH
138322001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13833
13834 * backtrace.c (display_header): Make sure that line and column
13835 information is shown independent of whether the port the code was
13836 read from had an associated filename. Thanks to Martin
13837 Grabmueller for providing this patch.
13838
efa40607
DH
138392001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13840
13841 * fports.[ch] (scm_file_port_p): New primitive.
13842
a98bddfd
DH
138432001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13844
13845 * tags.h (scm_tc16_fport, scm_tc16_strport, scm_tc16_sfport):
13846 These are now defined in fports.c, strports.c and vports.c.
13847
13848 * fports.[ch] (scm_tc16_fport), strports.c (scm_tc16_strport),
13849 vports.c (scm_tc16_sfport): Made variables (were macros defined in
13850 tags.h).
13851
13852 fports.c (scm_make_fptob), strports.c (scm_make_stptob), vports.c
13853 (scm_make_sfptob): Made static. These return a type code now.
13854
13855 fports.c (scm_init_fports), strports.c (scm_init_strports),
13856 vports.c (scm_init_vports): Create the corresponding port types.
13857
13858 * fports.h (SCM_FPORTP, SCM_OPFPORTP, SCM_OPINFPORTP,
13859 SCM_OPOUTFPORTP): Redefined in terms of scm_tc16_fport.
13860
13861 * init.c (scm_init_guile_1): Make sure strports are initialized
13862 before gdbint.
13863
13864 * ports.[ch] (scm_make_port_type): Changed the return type to
13865 scm_bits_t.
13866
13867 * ports.c (scm_ports_prehistory): Don't create any port types
13868 here.
13869
13870 * posix.c (scm_ttyname): Use SCM_FPORTP instead of comparing
13871 against scm_tc16_fport directly.
13872
0419a528
DH
138732001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13874
13875 * srcprop.c (scm_set_source_property_x): Fix to handle
13876 (set-source-property! <obj> 'copy <datum>) correctly.
13877
6d36532c
GH
138782001-01-24 Gary Houston <ghouston@arglist.com>
13879
13880 * filesys.c (scm_link): docstring fix.
13881 * fports.h (scm_setfileno): obsolete declaration removed.
13882 * posix.c: bogus popen declaration removed.
13883
13884 * rdelim.c: new file, split from ioext.c.
13885 * rdelim.h: new file, split from ioext.h
13886 * Makefile.am: add rdelim.c and related files.
13887 * init.c: call scm_init_rdelim. include rdelim.h.
13888
3ba5a6c2
DH
138892001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
13890
13891 This patch was sent by Martin Grabmueller and makes sure that
13892 parameter errors are reported correctly by the lexicographic
13893 ordering predicates.
13894
13895 * strorder.c (string_less_p, string_ci_less_p): New functions.
13896
13897 (scm_string_less_p, scm_string_ci_less_p): Extracted the core
13898 functionality into string_less_p, string_ci_less_p respectively.
13899 The remaining code is just a wrapper to do the parameter
13900 checking.
13901
13902 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p): Check the
13903 parameters and call string_less_p instead of scm_string_less_p.
13904
13905 (scm_string_ci_leq_p, scm_string_ci_gr_p, scm_string_ci_geq_p):
13906 Check the parameters and call string_less_ci_p instead of
13907 scm_string_ci_less_p.
13908
e40a4095
DH
139092001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
13910
ed6a2db9
DH
13911 This patch modifies scm_display_error to perform parameter
13912 checking. Thanks to Neil Jerram for the bug report.
13913
e40a4095
DH
13914 * backtrace.[ch] (scm_i_display_error): New function.
13915
13916 * backtrace.c (scm_display_error): Added parameter check and
13917 extracted the core functionality into function
13918 scm_i_display_error.
13919
13920 * throw.c (handler_message): Call scm_i_display_error to display
13921 the error message.
13922
f1e06a96
MD
139232001-01-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13924
13925 * eval.c (SCM_APPLY): Added # args check for application of
13926 procedures with arity 3. (Thanks to Anders Holst.)
13927
30ea841d
DH
139282001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
13929
13930 * filesys.h (SCM_DIR_FLAG_OPEN, SCM_DIR_OPEN_P): Added.
13931
13932 (SCM_OPDIRP): Deprecated.
13933
13934 * filesys.c (scm_opendir): Use SCM_DIR_FLAG_OPEN instead of
13935 SCM_OPN.
13936
13937 (scm_readdir, scm_rewinddir): Don't use SCM_VALIDATE_OPDIR.
13938 Instead, give an explicit error message in case the directory is
13939 closed.
13940
13941 (scm_closedir, scm_dir_print): Rewritten to use SCM_DIR_OPEN_P
13942 instead of SCM_OPENP and SCM_CLOSEDP.
13943
13944 * validate.h (SCM_VALIDATE_OPDIR): Deprecated.
13945
312ae976
DH
139462001-01-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
13947
13948 * eval.c (inner_eval, scm_eval): Move all real functionality into
13949 inner_eval. Avoid to copy the expression twice by inlining some
13950 code from scm_i_eval.
13951
4567ed78
DH
139522001-01-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
13953
13954 * eval.c (scm_m_case): The 'else' clause of a 'case' statement
13955 now has to be the last clause, as required by R5RS. Thanks to
13956 Martin Grabmueller for the patch.
13957
10288a09
GH
139582001-01-18 Gary Houston <ghouston@arglist.com>
13959
13960 * ioext.c: further simplify scm_read_string_x_partial by defining
13961 a macro SCM_EBLOCK.
13962
8f379a8f
DH
139632001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
13964
13965 * gh_data.c (gh_ints2scm): Simplified using SCM_FIXABLE.
13966
5c75b29f
DH
139672001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
13968
13969 * __scm.h: Added comment about architecture and compiler
13970 properties that are required by guile.
13971
13972 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
13973 SCM_MOST_NEGATIVE_FIXNUM): Moved to numbers.h.
13974
13975 (SCM_CHAR_BIT, SCM_LONG_BIT): Moved here from numbers.h.
13976
13977 * numbers.h (SCM_CHAR_BIT, SCM_LONG_BIT): Moved to __scm.h.
13978
13979 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
13980 SCM_MOST_NEGATIVE_FIXNUM): Moved here from __scm.h.
13981
ac0c002c
DH
139822001-01-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13983
13984 * __scm.h (SCM_FIXNUM_BIT): Added. The name is chosen in analogy
13985 to the names in limits.h.
13986
13987 * numbers.c (abs_most_negative_fixnum): Added.
13988
13989 (scm_quotient, scm_remainder): Fixed the fixnum-min / (abs
13990 fixnum-min) special case.
13991
13992 (scm_big_and): Fix for negative first parameter.
13993
13994 (scm_bit_extract): Fix for fixnum paramters.
13995 Thanks to Rob Browning for the bug report.
13996
13997 (scm_init_numbers): Initialize abs_most_negative_fixnum.
13998
debe0dc2
DH
139992001-01-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
14000
14001 * symbols.c (scm_symbol_bound_p): Fixed comment.
14002 Thanks to Chris Cramer.
14003
8a39e3fc
DH
140042001-01-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
14005
14006 * smob.[ch] (scm_make_smob_type): Return type is scm_bits_t now.
14007 Thanks to Bill Schottstaedt.
14008
322ec19d
ML
140092001-01-11 Michael Livshin <mlivshin@bigfoot.com>
14010
9a5fa6e9 14011 from Matthias Köppe:
1c938eb8 14012
322ec19d
ML
14013 * objects.h (SCM_SET_ENTITY_SETTER): new macro. SCM_ENTITY_SETTER
14014 casts its result, so doesn't yield an lvalue per ANSI C.
14015
14016 * goops.c (s_scm_sys_set_object_setter_x): use
14017 SCM_SET_ENTITY_SETTER.
14018 (clear_method_cache): use SCM_SET_ENTITY_PROCEDURE.
14019
14020 * gc.h (SCM_GC_SET_CARD_BVEC): new macro. SCM_GC_CARD_BVEC casts
14021 its result, so doesn't yield an lvalue per ANSI C.
14022 (SCM_GC_SET_CARD_FLAGS): ditto for SCM_GC_GET_CARD_FLAGS.
14023 (SCM_GC_CLR_CARD_FLAGS): redefined in terms of
14024 SCM_GC_SET_CARD_FLAGS.
14025 (SCM_GC_SET_CARD_FLAG, SCM_GC_CLR_CARD_FLAGS): ditto.
14026
14027 * gc.c (INIT_CARD): use the explicit setter macro to set the bvec.
14028
60d02d09
GH
140292001-01-08 Gary Houston <ghouston@arglist.com>
14030
14031 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): new macro.
14032 * ioext.c (scm_read_string_x_partial, scm_read_delimited_x),
14033 socket.c (scm_recvfrom): use the new macro, plus minor docstring
14034 changes.
14035 * ioext.c (scm_read_string_x_partial): don't crash if -1 is supplied
14036 for fdes. if current input port is used, check that it's a file
14037 port.
14038
c2da2648
GH
140392001-01-06 Gary Houston <ghouston@arglist.com>
14040
14041 * ioext.c (scm_read_string_x_partial): new procedure, implements
14042 read-string!/partial.
14043 * ports.c (scm_take_from_input_buffers): new procedure used by
14044 scm_read_string_x_partial.
14045 (scm_drain_input): use scm_take_from_input_buffers.
14046
4651d663
MV
140472001-01-06 Marius Vollmer <mvo@zagadka.ping.de>
14048
14049 * validate.h (SCM_VALIDATE_NUMBER): New.
14050
c0a5d888
ML
140512001-01-03 Michael Livshin <mlivshin@bigfoot.com>
14052
14053 * guardians.c (F_GREEDY, F_LISTED, F_DESTROYED, GREEDY_P,
14054 SET_GREEDY, LISTED_P, SET_LISTED, CLR_LISTED, DESTROYED_P,
14055 SET_DESTROYED): new defines/macros.
14056 (GUARDIAN_LIVE, GUARDIAN_ZOMBIES, GUARDIAN_NEXT): deleted.
14057 (add_to_live_list): takes a `guardian_t *' now, not SCM.
14058 (guardian_print): print more info.
14059 (guardian_apply): check if the guardian is destroyed, and throw an
14060 error if so. take one more optional argument `throw_p'.
14061 (scm_guard): depending on the value of `throw_p', return a boolean
14062 result.
14063 (scm_get_one_zombie): remove redundant property test.
14064 (guardian_t): represent the various (currently 3, I hope nothing
14065 more gets added) boolean fields as bit flags.
14066 (scm_guardian_destroyed_p, scm_guardian_greedy_p): new predicates.
14067 (scm_destroy_guardian_x): new procedure.
14068
14069 * guardians.h: added prototypes for `scm_guardian_greedy_p' and
14070 `scm_guardian_destroyed_p'. changed prototype for `scm_guard'.
14071
0c6d2191
GH
140722001-01-01 Gary Houston <ghouston@arglist.com>
14073
14074 * fports.c (fport_write): bugfix: handle short writes for
14075 unbuffered ports too. optimize the buffered case by minimizing
14076 the number of write/flush calls.
14077 (write_all): new helper procedure.
14078
a51fe247 14079The ChangeLog continues in the file: "ChangeLog-2000"
d9f71a07
LC
14080
14081;; Local Variables:
14082;; coding: utf-8
14083;; End: