* srfi-39.scm: Update copyright statement to LGPL.
[bpt/guile.git] / libguile / ChangeLog
CommitLineData
d3cf93bc
NJ
12008-01-22 Neil Jerram <neil@ossau.uklinux.net>
2
3 * __scm.h, _scm.h, weaks.c: Update copyright statement to LGPL.
4
15bd90ea
NJ
52008-01-18 Neil Jerram <neil@ossau.uklinux.net>
6
7 * hashtab.c (scm_hash_fn_create_handle_x): If supplied assoc_fn
8 returns neither a pair nor #f, signal a wrong-type-arg error.
9 (Thanks to Gregory Marton for reporting this.)
10
5c004b6d
NJ
112007-12-29 Neil Jerram <neil@ossau.uklinux.net>
12
13 * gc.c (mark_gc_async): Change "func_data" to "fn_data", to avoid
14 clash with AIX header file.
15 * hooks.c (scm_c_hook_add, scm_c_hook_remove): Same again.
16 * hooks.h (scm_t_c_hook_function, scm_c_hook_add,
17 scm_c_hook_remove): Same again.
18
9cc37597
LC
192007-12-08 Ludovic Courtès <ludo@gnu.org>
20
21 * __scm.h (SCM_EXPECT, SCM_LIKELY, SCM_UNLIKELY): New macros.
22 (SCM_ASSERT, SCM_ASSERT_TYPE, SCM_ASRTGO, SCM_GASSERT0,
23 SCM_GASSERT1, SCM_GASSERT2, SCM_GASSERTn): Use them.
24 * eval.c (ASSERT_SYNTAX, ASSERT_SYNTAX_2): Likewise.
25 * eval.i.c (CEVAL): Use branch prediction hints for syntax
26 errors, wrong number of arguments and similar.
27 * numbers.c (scm_sum): Use `SCM_LIKELY' for the sum of two
28 immediate numbers.
29 (scm_difference, scm_product, scm_i_divide): Likewise.
30 * validate.h (SCM_ASSERT_RANGE): Use `SCM_UNLIKELY'.
31
7d1fc872
LC
322007-12-04 Ludovic Courtès <ludo@gnu.org>
33
693758d5
LC
34 * ports.c (scm_c_read): Validate PORT as an open input port.
35 (scm_c_write): Validate PORT as an open output port.
36
7d1fc872
LC
37 * socket.c (scm_accept): Leave guile mode using
38 `scm_std_select ()' before calling `accept(2)'. Reported by
39 dskr <dskr@mac.com>.
40
ee834df4
LC
412007-10-27 Ludovic Courtès <ludo@gnu.org>
42
43 * fports.c (scm_i_evict_port): Expect a port, rather than a pair
44 containing the port. Fixes a bug in the new port table (2007-08-26).
45 (scm_evict_ports): Use `scm_c_port_for_each ()'.
46
acbfb594
NJ
472007-10-21 Neil Jerram <neil@ossau.uklinux.net>
48
49 * eval.c (unmemoize_delay): Extend the environment before
50 unmemoizing the promise thunk. This fixes a segmentation fault
51 reported by Frank Schwidom.
52
2e77f720
LC
532007-10-20 Julian Graham <joolean@gmail.com>
54
55 Add support for thread cancellation and user-defined thread
56 cleanup handlers. Small rework by Ludovic Courtès.
57
58 * null-threads.h (scm_i_pthread_cancel,
59 scm_i_pthread_cleanup_push, scm_i_pthread_cleanup_pop): New.
60 * pthread-threads.h (scm_i_pthread_cancel,
61 scm_i_pthread_cleanup_push, scm_i_pthread_cleanup_pop): New.
62 * scmsigs.c (scm_i_signal_delivery_thread,
63 signal_delivery_thread_mutex): New.
64 (signal_delivery_thread): Leave when `read_without_guile ()'
65 returns zero.
66 (start_signal_delivery_thread): Acquire SIGNAL_DELIVERY_THREAD
67 before spawning the thread. Initialize
68 SCM_I_SIGNAL_DELIVERY_THREAD.
69 (ensure_signal_delivery_thread): Renamed to...
70 (scm_i_ensure_signal_delivery_thread): this.
71 (scm_i_close_signal_pipe): New.
72 * scmsigs.h: Updated.
73 * threads.c (thread_mark): Mark `t->cleanup_handler'.
74 (guilify_self_1): Initialize `t->cleanup_handler' and
75 `t->canceled'.
76 (do_thread_exit): Invoke `t->cleanup_handler'.
77 (on_thread_exit): Call `scm_i_ensure_signal_delivery_thread ()'.
78 Call `scm_i_close_signal_pipe ()' when the next-to-last thread
79 vanishes.
80 (scm_leave_guile_cleanup): New.
81 (scm_i_with_guile_and_parent): Use `scm_i_pthread_cleanup_push ()'
82 and `scm_leave_guile_cleanup ()' to leave guile mode, rather
83 than call `scm_leave_guile ()' after FUNC.
84 (scm_cancel_thread, scm_set_thread_cleanup_x,
85 scm_threads_cleanup): New.
86 (scm_all_threads): Remove SCM_I_SIGNAL_DELIVERY_THREAD from the
87 returned list.
88 * threads.h (scm_i_thread)[cleanup_handler, canceled]: New
89 fields.
90 Add declarations of new functions.
91
d41668fa
LC
922007-10-17 Ludovic Courtès <ludo@gnu.org>
93
94 * read.c (CHAR_IS_BLANK_): Add `\r' (ASCII 0x0d). This fixes a
95 regression compared to 1.8.2. Reported by Puneet
96 <schemer@gmail.com>.
97
66302618
LC
982007-10-10 Ludovic Courtès <ludo@gnu.org>
99
100 * pthread-threads.h (SCM_I_PTHREAD_MUTEX_INITIALIZER): Check
101 `SCM_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER'.
102 * gen-scmconfig.h.in
103 (SCM_I_GSC_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER): New.
104 * gen-scmconfig.c (main): Define
105 `SCM_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER'.
106
1445e449
LC
1072007-10-04 Ludovic Courtès <ludo@gnu.org>
108
109 * i18n.c (scm_make_locale)[!USE_GNU_LOCALE_API]: Don't call
110 `leave_locale_section ()' on failure of
111 `enter_locale_section ()' since the mutex is not held and locale
112 settings are unchanged.
113 (scm_nl_langinfo)[!USE_GNU_LOCALE_API]: Use
114 `restore_locale_settings ()' instead of `leave_locale_section ()'
115 since the mutex is not held.
116
29776e85
LC
1172007-10-02 Ludovic Courtès <ludo@gnu.org>
118
119 * threads.c (on_thread_exit): Don't call `scm_leave_guile ()'
120 since we're already in non-guile mode. Reported by Greg Toxel
121 for NetBSD.
122
61d3568b
LC
1232007-10-01 Ludovic Courtès <ludo@gnu.org>
124
125 * ports.c (flush_output_port): Expect directly a port instead of
126 a pair. Fixes a bug in the new port table (2007-08-26).
127
68eccd8b
KR
1282007-09-11 Kevin Ryde <user42@zip.com.au>
129
130 * posix.c (scm_putenv): Confine the putenv("NAME=") bit to mingw, use
131 putenv("NAME") as the fallback everywhere else. In particular this is
132 needed for solaris 9. Reported by Frank Storbeck.
133
454866e0
LC
1342007-09-03 Ludovic Courtès <ludo@gnu.org>
135
136 * read.c (flush_ws): Handle SCSH block comments.
137
f43f3620
LC
1382007-09-03 Ludovic Courtès <ludo@gnu.org>
139
140 Fix alignment issues which showed up at least on SPARC.
141
142 * socket.c (scm_t_max_sockaddr, scm_t_getsockopt_result): New.
143 (scm_inet_pton): Change DST to `scm_t_uint32' for correct
144 alignment.
145 (scm_getsockopt): Change OPTVAL to `scm_t_getsockopt_result' for
146 correct alignment.
147 (_scm_from_sockaddr): Change ADDRESS to `scm_t_max_sockaddr *'.
148 (scm_from_sockaddr): Cast ADDRESS to `scm_t_max_sockaddr *'.
149 (MAX_SIZE_UN, MAX_SIZE_IN6): Removed.
150 (scm_accept, scm_getsockname, scm_getpeername, scm_recvfrom):
151 Use `scm_t_max_sockaddr' instead of "char max_addr[MAX_ADDR_SIZE]".
152
8d4d5dfc
KR
1532007-09-03 Kevin Ryde <user42@zip.com.au>
154
155 * numbers.c (scm_log): Test HAVE_CLOG as well as HAVE_COMPLEX_DOUBLE
156 before using clog(). It's possible for gcc to provide the "complex
157 double" type, but for the system not to have the complex funcs.
158 (scm_exp): Ditto HAVE_CEXP for cexp().
159 (clog, cexp, carg): Remove fallback definitions. These only
160 duplicated the code within scm_log and scm_exp, and the latter have to
161 exist for the case when there's no "complex double". So better just
162 fix up the conditionals selecting between the complex funcs and plain
163 doubles than worry about fallbacks.
164
1ac5fb45
LC
1652007-09-02 Ludovic Courtès <ludo@gnu.org>
166
167 * socket.c (scm_make_socket_address): Free C_ADDRESS after use.
168 This fixes a memory leak.
169
b87e6d04
HWN
1702007-08-26 Han-Wen Nienhuys <hanwen@lilypond.org>
171
5dbc6c06
HWN
172 * fports.c gc-card.c gc.c gc.h ioext.c ports.c ports.h weaks.h
173 gc.c: replace port table with weak hash table. This simplifies
174 memory management, and fixes freed cells appearing in
175 port-for-each output.
176
b87e6d04
HWN
177 * init.c (cleanup_for_exit): abort cleanup if init_mutex is still
178 held.
179
2baec6a9
LC
1802007-08-23 Ludovic Courtès <ludo@gnu.org>
181
492faee1 182 * read.c (scm_read_quote): Record position and copy source
8d4d5dfc 183 expression when asked to. Reported by Kevin.
492faee1 184
2baec6a9
LC
185 * stime.c: Define `_REENTRANT' only if not already defined.
186
1f11c61a
KR
1872007-08-21 Kevin Ryde <user42@zip.com.au>
188
189 * gc-card.c (scm_i_card_statistics): Record scm_tc7_number types as
190 tc16 values so big, real, complex and fraction can be distinguished.
191
192 (scm_i_tag_name): Return "number" for scm_tc7_number, not NULL. NULL
193 was making numbers come out as "type 23" in gc-live-object-stats.
194 Fix tests of the tc16 number types, they were checked under
195 scm_tc7_number, but the values went down the tag>=255 smob case.
196 Put smob case under scm_tc7_smob instead of using tag>=255, per
197 recommendation in comments with scm_tc7_smob to use symbolic values.
198 Use SCM_TC2SMOBNUM to extract scm_smobs index, instead of explicit
199 code. Lose some unnecessary "break" statements.
200
201 (scm_i_card_statistics): Use scm_hashq_create_handle_x and modify the
202 element returned, rather than two lookups scm_hashq_ref and
203 scm_hashq_set_x.
204
949ec9f9
KR
2052007-08-17 Kevin Ryde <user42@zip.com.au>
206
207 * stime.c: Add #define _REENTRANT, to get gmtime_r() prototype on
208 solaris 2.6. Reported by anirkko.
209
6caac03c
LC
2102007-07-29 Ludovic Courtès <ludo@gnu.org>
211
212 * Makefile.am (INCLUDES): Added Gnulib includes.
213 (gnulib_library): New.
214 (libguile_i18n_v_@LIBGUILE_I18N_MAJOR@_la_LIBADD): Added
215 `$(gnulib_library)'.
216 (libguile_la_LIBADD): Likewise.
217
218 * posix.c: Don't define `_GNU_SOURCE' since `gl_EARLY' arranges
219 to define it when available.
220 * srfi-14.c: Likewise.
f7439099
LC
221 * i18n.c: Likewise. Include Gnulib's <alloca.h>
222 * eval.c: Include Gnulib's <alloca.h>.
223 * filesys.c: Likewise.
224 * read.c: Don't include <strings.h> and don't provide an
225 `strncasecmp ()' replacement; use Gnulib's <string.h> and
226 `strncasecmp ()' instead.
6caac03c 227
e08f3f7a
LC
2282007-07-25 Ludovic Courtès <ludo@gnu.org>
229
230 * eval.c (macroexp): When `scm_ilength (res) <= 0', return
231 immediately. This used to produce a circular memoized
232 expression, e.g., for `(set (quote x) #t)'.
233
7337d56d
LC
2342007-07-22 Ludovic Courtès <ludo@gnu.org>
235
236 Overhauled the reader, making it faster.
237
238 * gdbint.c (tok_buf, tok_buf_mark_p): Removed.
239 (gdb_read): Don't use a token buffer. Use `scm_read ()' instead
240 of `scm_lreadr ()'.
241
242 * read.c: Overhauled. No longer use a token buffer. Use a
243 on-stack C buffer in the common case and use Scheme strings when
244 larger buffers are needed.
245 * read.h (scm_grow_tok_buf, scm_flush_ws, scm_casei_streq,
246 scm_lreadr, scm_lreadrecparen): Removed.
247 (scm_i_input_error): Marked as `SCM_NORETURN'.
248
df449722
LC
2492007-07-15 Ludovic Courtès <ludo@gnu.org>
250
251 * script.c (scm_compile_shell_switches): Updated copyright year.
252
b1f57ea4
LC
2532007-07-11 Ludovic Courtès <ludo@gnu.org>
254
255 * goops.c (scm_sys_method_more_specific_p): Added docstring.
256 Make sure LEN is greater than or equal to the minimum length of
257 specializers of M1 and M2. This fixes a segfault later on in
258 `more_specificp ()' if TARGS is too small. Reported by Marco
259 Maggi <marco.maggi-ipsu@poste.it>.
260
d3075c52
LC
2612007-06-26 Ludovic Courtès <ludo@gnu.org>
262
263 * fluids.c (next_fluid_num): When growing ALLOCATED_FLUIDS, make
264 sure to free the previous array after the new one has been
265 installed. This leak is made visible by running
266 "(define l (map (lambda (i) (make-fluid)) (iota 255)))"
267 from the REPL within Valgrind.
268
7a5fb796
LC
2692007-06-12 Ludovic Courtès <ludo@chbouib.org>
270
271 * socket.c (scm_inet_ntop): In the `AF_INET' case, declare `addr4'
272 as an `scm_t_uint32' rather than re-using `addr6'. This fixes a
273 bus error on SPARC (and possibly others) due to unaligned access.
274
a1ef7406
LC
2752007-06-07 Ludovic Courtès <ludovic.courtes@laas.fr>
276
277 * posix.c (scm_ttyname): Check whether RESULT is NULL before
278 making a string from it (reported by Dan McMahill). Don't call
279 `scm_from_locale_string ()' before the mutex is released.
280
3dcf3373
LC
2812007-05-26 Ludovic Courtès <ludo@chbouib.org>
282
283 * eval.c (scm_m_define): Updated comment. Changed order for value
284 evaluation and `scm_sym2var ()' call, which is perfectly valid per
285 R5RS. This reverts the change dated 2004-04-22 by Dirk Herrmann.
286
608860a5
LC
2872007-05-05 Ludovic Courtès <ludo@chbouib.org>
288
289 Implemented lazy duplicate binding handling.
290
291 * modules.c (scm_export): Renamed to...
292 (scm_module_export): This. Now public.
293 (module_variable): Removed.
294 (default_duplicate_binding_procedures_var): New variable.
295 (default_duplicate_binding_handlers, resolve_duplicate_binding,
296 module_imported_variable, scm_module_local_variable,
297 scm_module_variable): New functions.
298 (scm_module_import_interface): Rewritten.
299 (scm_module_reverse_lookup): Exported as a Scheme function.
300 * modules.h (scm_module_index_duplicate_handlers,
301 scm_module_index_import_obarray): New macros.
302 (scm_module_variable, scm_module_local_variable,
303 scm_module_export): New declarations.
304
1911e3da
LC
3052007-04-17 Ludovic Courtès <ludovic.courtes@laas.fr>
306
307 * numbers.c: Commented out trailing `HAVE_COMPLEX_DOUBLE' after
308 `#endif'. Use `#ifndef HAVE_XXX' rather than `#if !HAVE_XXX'.
309
1d8ce4c0
HWN
3102007-04-09 Han-Wen Nienhuys <hanwen@lilypond.org>
311
312 * numbers.c (carg): provide carg, cexp, clog in case they are
313 missing.
314
afb49959
LC
3152007-03-12 Ludovic Courtès <ludovic.courtes@laas.fr>
316
317 * i18n.c (scm_nl_langinfo): `#ifdef'd uses of `GROUPING',
318 `FRAC_DIGITS', etc., which are GNU extensions. Reported by
319 Steven Wu.
320
b3aa4626
KR
3212007-03-08 Kevin Ryde <user42@zip.com.au>
322
323 * struct.c, struct.h (scm_make_vtable): New function, providing
324 `make-vtable'.
325 * stacks.c (scm_init_stacks): Use it.
326
3272007-03-06 Kevin Ryde <user42@zip.com.au>
328
329 * struct.c (scm_make_struct): Check for R,W,O at end of layout when
330 allocating a tail array. If there's no such then those tail fields
331 are uninitialized and garbage SCMs there can cause a segv if printed
332 (after fetching with struct-ref).
333
3342007-02-22 Kevin Ryde <user42@zip.com.au>
335
336 * scmsigs.c (scm_sleep): In docstring, cross refence usleep.
337 (scm_usleep): Update docstring per manual, cross reference sleep.
338
339 * struct.c (scm_make_struct): Move SCM_CRITICAL_SECTION_END up so that
340 scm_struct_init is not within that section. scm_struct_init can
341 thrown an error, which within a critical section results in an
342 abort().
343
03291373
NJ
3442007-02-19 Neil Jerram <neil@ossau.uklinux.net>
345
346 * Makefile.am (noinst_HEADERS): Add private-options.h, so that it
347 is included in the distribution.
652dbce6 348 (noinst_HEADERS): And the same for eval.i.c.
03291373 349
a2f00b9b
LC
3502007-01-31 Ludovic Courtès <ludovic.courtes@laas.fr>
351
352 * i18n.c: Include "libguile/threads.h" and "libguile/posix.h"
353 unconditionally. Include <langinfo.h> and <nl_types.h> when
354 available.
355 (SCM_I18N_STRINGIFY, SCM_LOCALE_CATEGORY_MASK,
356 SCM_LIST_OR_INTEGER_P): New macros.
357 (LC_*_MASK): When `USE_GNU_LOCALE_API' is undefined, define them
358 as powers of two instead of `(1 << LC_*)'.
359 (scm_i_locale_free): New function/macro.
360 (scm_global_locale): New global variable.
361 (smob_locale_free): Use `scm_i_locale_free ()'.
362 (smob_locale_mark): Check whether the SMOB is `%global-locale'.
363 (get_current_locale_settings): Return `EINVAL' instead of `errno'
364 when `setlocale' fails.
365 (restore_locale_settings): Likewise.
366 (install_locale_categories): Likewise.
367 (install_locale): Likewise. Stop the locale stack traversal when
368 all categories have been handled.
369 (get_current_locale, category_to_category_mask,
370 category_list_to_category_mask): New function.
371 (scm_make_locale): Use them. Accept both lists of `LC_*' values
372 and single `LC_*' values as the first argument. Handle the case
373 where BASE_LOCALE is `%global-locale'. When `USE_GNU_LOCALE_API',
374 duplicate C_BASE_LOCALE before using it.
375 (scm_nl_langinfo, define_langinfo_items): New functions.
376 (scm_init_i18n): When `HAVE_NL_LANGINFO', add feature
377 `nl-langinfo' and invoke `define_langinfo_items ()'.
378 * i18n.h (scm_global_locale, scm_nl_langinfo): New declarations.
379 * posix.c: Include <xlocale.h> when available.
380 (scm_i_locale_mutex): Always define it. Statically initialized.
381 (scm_set_locale): Invoke `scm_i_to_lc_category ()' before
382 acquiring the locale mutex.
383 (scm_init_posix): No longer initialize SCM_I_LOCALE_MUTEX here.
384
b3aa4626
KR
3852007-01-27 Kevin Ryde <user42@zip.com.au>
386
387 * ports.c (scm_port_line, scm_set_port_line_x), read.c
388 (scm_i_input_error, scm_lreadr, scm_lreadrecparen): Corrections to
389 port line number type, should be "long" not "int", as per line_number
390 field of scm_t_port. (Makes a difference only on 64-bit systems, and
391 only then for a linenum above 2Gig.)
392
2a8d66b0
HWN
3932007-01-25 Han-Wen Nienhuys <hanwen@lilypond.org>
394
395 * vector.c: remove comment as per kryde's request.
396
b3aa4626
KR
3972007-01-25 Kevin Ryde <user42@zip.com.au>
398
399 * sort.c (scm_stable_sort): Return empty list for input empty list, as
400 done in guile 1.6 and as always done by plain `sort'. Was falling
401 through to SCM_WRONG_TYPE_ARG. Reported by Ales Hvezda.
402
cb90e2cb
HWN
4032007-01-22 Han-Wen Nienhuys <hanwen@lilypond.org>
404
8cb7939c
HWN
405 * vectors.c (s_scm_vector_move_right_x): complain about naming.
406
d00a0704
HWN
407 * srcprop.c: regularize comments.
408
3d178652
HWN
409 * eval.c: remove superfluous ifndef DEVAL.
410
243ebb61
HWN
411 * private-options.h: idem.
412
413 * eval.i.c: copyright nitpicking.
414
0ee05b85
HWN
415 * eval.c: distangle. move duplicate code to eval.i.c and include
416 twice.
417
418 * eval.i.c: new file.
419
22fc179a
HWN
420 * backtrace.c, debug.c, debug.h, deprecation.c, eq.c, eval.c
421 eval.h, gsubr.c, init.c, macros.c, print.c, print.h, read.c,
422 read.h, stacks.c, symbols.c, throw.c: use private-options.h
423
424 * private-options.h: new file: contain hardcoded option
425 definitions.
426
cb90e2cb
HWN
427 * private-gc.h: add FSF header.
428
62560650
HWN
4292007-01-19 Han-Wen Nienhuys <hanwen@lilypond.org>
430
72f19c26
HWN
431 * debug.h (SCM_RESET_DEBUG_MODE): switch to debugging if
432 memoize-symbol is set.
433
434 * eval.h (SCM_MEMOIZE_HDLR): add macros for memoize symbol trap.
435
436 * eval.c (CEVAL): add memoize_symbol trap.
437
03347a97
HWN
438 * options.c (scm_options_try): new function. This allows error
439 reporting before changing options in a critical section.
440
b0763985
HWN
441 * srcprop.c: use double cell for storing source-properties. Put
442 filename in the plist, and share between srcprops if possible.
443 Remove specialized storage.
444
445 * srcprop.h: remove macros without SCM_ prefix from
446 interface. Remove specialized storage/type definitions.
447
62560650
HWN
448 * read.c: idem.
449
450 * print.c: idem.
451
452 * eval.c: terminate option lists with 0.
453
454 * options.c: remove n (for length) from scm_option_X
455 functions. Detect option list length by looking for NULL name.
456
42ddb3cb
LC
4572007-01-19 Ludovic Courtès <ludovic.courtes@laas.fr>
458
459 * struct.c (scm_i_struct_equalp): Skip comparison if both FIELD1
460 is equal to S1 and FIELD2 is equal to S2. This avoids infinite
461 recursion when comparing `s' fields, as the REQUIRED_VTABLE_FIELDS
462 added by `make-vtable-vtable'. Reported by Marco Maggi.
463
937038e8
HWN
4642007-01-18 Han-Wen Nienhuys <hanwen@lilypond.org>
465
466 * throw.c (scm_ithrow): more refined error message: print symbols
467 too.
468
23d72566
KR
4692007-01-16 Kevin Ryde <user42@zip.com.au>
470
471 * feature.c, feature.h (scm_set_program_arguments_scm): New function,
472 implementing `set-program-arguments'.
473
474 * filesys.c (scm_init_filesys): Use scm_from_int rather than
475 scm_from_long for O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_EXCL,
476 O_NOCTTY, O_TRUNC, O_APPEND, O_NONBLOCK, O_NDELAY, O_SYNC and
477 O_LARGEFILE. These are all int not long, per arg to open().
478 (scm_init_filesys): Use scm_from_int rather than scm_from_long for
479 F_DUPFD, F_GETFD, F_SETFD, F_GETFL, F_SETFL, F_GETOWN, F_SETOWN, these
480 are all ints (per command arg to fcntl). Likewise FD_CLOEXEC which is
481 an int arg to fcntl.
482
483 * posix.c (scm_putenv): Correction to "len" variable, was defined only
484 for __MINGW32__ but used under any !HAVE_UNSETENV (such as solaris).
485 Move it to where it's used. Reported by Hugh Sasse.
486
487 * regex-posix.c (scm_regexp_exec): Remove SCM_CRITICAL_SECTION_START
488 and SCM_CRITICAL_SECTION_END, believe not needed. Their placement
489 meant #\nul in the input (detected by scm_to_locale_string) and a bad
490 flags arg (detected by scm_to_int) would throw from a critical
491 section, causing an abort().
492
493 * regex-posix.c (scm_init_regex_posix): Use scm_from_int for
494 REG_BASIC, REG_EXTENDED, REG_ICASE, REG_NEWLINE, REG_NOTBOL,
495 REG_NOTEOL; they're all ints not longs (per args to regcomp and
496 regexec).
497
a2c40dc7
HWN
4982007-01-10 Han-Wen Nienhuys <hanwen@lilypond.org>
499
500 * throw.c (scm_ithrow): print out key symbol and string arguments
501 when error happens inside a critical section, and document why.
502
391f57e6
HWN
5032007-01-06 Han-Wen Nienhuys <hanwen@lilypond.org>
504
505 * read.c (s_scm_read_hash_extend): document #f argument to
506 read-hash-extend.
507
23d72566
KR
5082007-01-04 Kevin Ryde <user42@zip.com.au>
509
510 * deprecated.h (scm_create_hook), version.h.in (scm_major_version,
511 scm_minor_version, scm_micro_version, scm_effective_version,
512 scm_version, scm_init_version): Use SCM_API instead of just extern,
513 for the benefit of mingw. Reported by Cesar Strauss.
514
93632e3c
HWN
5152007-01-03 Han-Wen Nienhuys <hanwen@lilypond.org>
516
517 * gc.c (s_scm_gc_stats): return an entry for total-cells-allocated
518 too.
519 (gc_update_stats): update scm_gc_cells_allocated_acc too.
520
23d72566
KR
5212006-12-27 Kevin Ryde <user42@zip.com.au>
522
523 * threads.c (get_thread_stack_base): In mingw with pthreads we can use
524 the basic scm_get_stack_base. As advised by Nils Durner.
525
526 * threads.c (get_thread_stack_base): Add a version using
527 pthread_get_stackaddr_np (when available), for the benefit of MacOS.
528 As advised by Heikki Lindholm.
529
530 * scmsigs.c (signal_delivery_thread): Restrict scm_i_pthread_sigmask
531 to HAVE_PTHREAD_SIGMASK, it doesn't exist on mingw. Reported by Nils
532 Durner.
533
5342006-12-24 Kevin Ryde <user42@zip.com.au>
535
536 * posix.c (scm_kill): When only raise() is available, throw an ENOSYS
537 error if pid is not our own process, instead of silently doing nothing.
538
539 * print.c (scm_write, scm_display, scm_write_char): Disable port close
540 on EPIPE. This was previously disabled but introduction of HAVE_PIPE
541 check in configure.in unintentionally enabled it. Believe that
542 testing errno after scm_prin1 or scm_putc is bogus, a long ago error
543 can leave errno in that state. popen.test "no duplicates" output test
544 provoked that.
545
e2bf3b19
HWN
5462006-12-23 Han-Wen Nienhuys <hanwen@lilypond.org>
547
548 * numbers.c (scm_i_fraction_reduce): move logic into
549 scm_i_make_ratio(), so fractions are only read.
550 scm_i_fraction_reduce() modifies a fraction when reading it. A
551 race condition might lead to fractions being corrupted by reading
552 them concurrently.
553
554 Also, the REDUCED bit alters the SCM_CELL_TYPE(), making
555 comparisons between reduced and unreduced fractions go wrong.
556
557 * numbers.h: remove SCM_FRACTION_SET_NUMERATOR,
558 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
559 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
560 SCM_FRACTION_REDUCED.
561
23d72566
KR
5622006-12-16 Kevin Ryde <user42@zip.com.au>
563
564 * scmsigs.c (scm_raise): Use raise() rather than kill(), as this is
565 more direct for a procedure called raise.
566 (kill): Remove mingw fake fallback.
567
5682006-12-15 Kevin Ryde <user42@zip.com.au>
569
570 * scmsigs.c: Conditionalize process.h, add io.h believe needed for
571 _pipe on mingw.
572
5732006-12-14 Kevin Ryde <user42@zip.com.au>
574
575 * threads.c (thread_print): Cope with the case where pthread_t is a
576 struct, as found on mingw. Can't just cast to size_t for printing.
577 Reported by Nils Durner.
578
579 * scmsigs.c: Add <fcntl.h> and <process.h> needed by mingw. Copy the
580 fallback pipe() using _pipe() from posix.c. Reported by Nils Durner.
581
5822006-12-13 Kevin Ryde <user42@zip.com.au>
583
584 * eval.c (scm_m_define): Set 'name procedure property on any
585 scm_procedure_p, not just SCM_CLOSUREP. In particular this picks up
586 procedures with setters as used in srfi-17.
587
588 * posix.c (scm_crypt): Check for NULL return from crypt(), which the
589 linux man page says is a possibility.
590
f30e1bdf
LC
5912006-12-12 Ludovic Courtès <ludovic.courtes@laas.fr>
592
593 * libguile/unif.c (read_decimal_integer): Let RESP be SIGN * RES
42ddb3cb 594 instead of RES (reported by Szavai Gyula). This allows the use of
f30e1bdf
LC
595 negative lower bounds.
596 (scm_i_read_array): Make sure LEN is non-negative (reported by
42ddb3cb 597 Szavai Gyula).
f30e1bdf
LC
598
599 (scm_array_in_bounds_p): Iterate over S instead of always
600 comparing indices with the bounds of S[0]. This fixes
601 `array-in-bounds?' for arrays with a rank greater than one and
602 with different lower bounds for each dimension.
603
23d72566
KR
6042006-12-05 Kevin Ryde <user42@zip.com.au>
605
606 * numbers.c (scm_product): For flonum*inum and complex*inum, return
607 exact 0 if inum==0. Already done for inum*flonum and inum*complex,
608 and as per R5RS section "Exactness".
609
6102006-12-03 Kevin Ryde <user42@zip.com.au>
611
612 * Makefile.am (.c.doc): Remove the "test -n" apparently attempting to
613 allow $AWK from the environment to override. It had syntax gremlins,
614 and the presence of a $(AWK) variable set by AC_PROG_AWK in the
615 Makefile stopped it having any effect. Use just $(AWK), which can be
616 overridden with "make AWK=xxx" in the usual way if desired.
617
22be72d3
LC
6182006-11-29 Ludovic Courtès <ludovic.courtes@laas.fr>
619
620 * libguile/vectors.c (scm_vector_to_list): Fixed list
621 construction: elements were not copied when INC is zero (see
622 "shared array" example in `vectors.test'). Reported by
623 Szavai Gyula.
624
b89c4943
LC
6252006-11-18 Ludovic Courtès <ludovic.courtes@laas.fr>
626
627 * Makefile.am (lib_LTLIBRARIES): Added `libguile-i18n-v-XX.la'.
628 (libguile_la_SOURCES): Added `gettext.c', removed `i18n.c'.
629 (libguile_i18n_v_XX_la_SOURCES, libguile_i18n_v_XX_la_CFLAGS,
630 libguile_i18n_v_XX_la_LIBADD, libguile_i18n_v_XX_la_LDFLAGS): New.
631 (DOT_X_FILES): Added `gettext.x'.
632 (DOT_DOC_FILES): Likewise.
633 (EXTRA_libguile_la_SOURCES): Added `locale-categories.h'.
634 (modinclude_HEADERS): Added `gettext.h'.
635 (EXTRA_DIST): Added `libgettext.h'.
636
637 * gettext.h: Renamed to...
638 * libgettext.h: New file.
639
640 * i18n.c: Renamed to...
641 * gettext.c: New file.
642
643 * i18n.h: Renamed to...
644 * gettext.h: New file.
645
646 * i18n.c, i18n.h, locale-categories.h: New files.
647
648 * init.c: Include "libguile/gettext.h" instead of
649 "libguile/i18n.h".
650 (scm_i_init_guile): Invoke `scm_init_gettext ()' instead of
651 `scm_init_i18n ()'.
652
653 * posix.c: Include "libguile/gettext.h" instead of
654 "libguile/i18n.h" Test `HAVE_NEWLOCALE' and `HAVE_STRCOLL_L'.
655 (USE_GNU_LOCALE_API): New macro.
656 (scm_i_locale_mutex): New variable.
657 (scm_setlocale): Lock and unlock it around `setlocale ()' calls.
658
659 * posix.h: Include "libguile/threads.h".
660 (scm_i_locale_mutex): New declaration.
661
f3e3f530
NJ
6622006-11-17 Neil Jerram <neil@ossau.uklinux.net>
663
664 * script.c (scm_shell_usage): Note need for subscription to bug-guile@gnu.org.
665
d9f71a07
LC
6662006-11-08 Ludovic Courtès <ludovic.courtes@laas.fr>
667
668 * libguile/gc-freelist.c (scm_i_adjust_min_yield): Take two
669 "sweep_stats" arguments; use them instead of accessing the global
670 variables `scm_gc_cells_collected' and `scm_gc_cells_collected_1'.
671
672 * libguile/gc-segment.c (scm_i_sweep_some_cards): Reset SWEEP
673 before each iteration of the loop.
674 (scm_i_sweep_some_segments): Reset SWEEP at each iteration.
675 (scm_i_get_new_heap_segment): Take an additional argument
676 SWEEP_STATS. Compute MIN_CELLS as a function of it.
677
678 * libguile/gc.c (scm_gc_cells_collected,
679 scm_gc_cells_collected_1): Removed.
680 (scm_i_gc_sweep_stats, scm_i_gc_sweep_stats_1): New.
681 (scm_gc_cells_marked_acc, scm_gc_cells_swept_acc,
682 scm_gc_time_taken, scm_gc_mark_time_taken, scm_gc_times,
683 scm_gc_cell_yield_percentage, protected_obj_count): Made `static'.
684 (scm_gc_stats): Use `scm_i_gc_sweep_stats' instead of
685 `scm_gc_cells_(collected|swept)'.
686 (gc_update_stats): New.
687 (gc_end_stats): Use `scm_i_gc_sweep_stats' and
688 `scm_i_gc_sweep_stats_1' instead of the former globals.
689 (scm_gc_for_newcell): Invoke `gc_update_stats ()' after each
690 `scm_i_sweep_some_segments' call. This fixes a bug where the GC
691 would keep allocating new segments instead of re-using collected
692 cells (because `scm_gc_cells_collected' would remain zero).
693
694 * libguile/gc.h (scm_gc_cells_swept, scm_gc_cells_collected,
695 scm_gc_cell_yield_percentage): Removed.
696
697 * libguile/private-gc.h (scm_gc_cells_collected_1): Removed.
698 (scm_i_adjust_min_yield): Updated.
699 (scm_i_get_new_heap_segment): Updated.
700
dd18d312
NJ
7012006-11-02 Neil Jerram <neil@ossau.uklinux.net>
702
703 * modules.c: Correct comment saying that low-level environments
704 will be used "in the next release".
705
706 * init.c: Comment out #include of environments.h.
707 (scm_i_init_guile): Comment out scm_environments_prehistory() and
708 scm_init_environments() calls.
709
710 * Makefile.am (libguile_la_SOURCES): Remove environments.c.
711 (DOT_X_FILES): Remove environments.x.
712 (DOT_DOC_FILES): Remove environments.doc.
713 (modinclude_HEADERS): Remove environments.h.
714
9a5fa6e9
NJ
7152006-10-25 Neil Jerram <neil@ossau.uklinux.net>
716
717 IA64 HP-UX GC patch from Hrvoje Nikšić. (Thanks!)
718
719 * threads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp() and
720 scm_ia64_register_backing_store_base() instead of Linux-specific
721 implementations.
722
723 * gc.h (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp):
724 New declarations.
725
726 * gc.c (__libc_ia64_register_backing_store_base): Declaration
727 removed.
728 (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp): New, with
729 implementations for Linux and HP-UX.
730
731 * coop-pthreads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp()
732 and scm_ia64_register_backing_store_base() instead of
733 Linux-specific implementations.
734
735 * continuations.h (__libc_ia64_register_backing_store_base):
736 Declaration removed.
737 (scm_t_contregs): New "fresh" field.
738
739 * continuations.c (ia64_getcontext): Removed.
740 (scm_make_continuation): Use continuation fresh field instead of
741 interpreting getcontext return values (which isn't portable). Use
742 scm_ia64_ar_bsp() and scm_ia64_register_backing_store_base()
743 instead of Linux-specific implementations.
744 (copy_stack_and_call): Use scm_ia64_register_backing_store_base()
745 instead of Linux-specific implementation.
746
747 * _scm.h (__ia64__): Also detect __ia64.
748
8ab3d8a0
KR
7492006-10-03 Kevin Ryde <user42@zip.com.au>
750
751 * eval.c (SCM_APPLY): For scm_tc7_subr_2o, throw wrong-num-args on 0
752 arguments or 3 or more arguments. Previously 0 called proc with
753 SCM_UNDEFINED, and 3 or more silently used just the first 2.
754
7552006-09-28 Kevin Ryde <user42@zip.com.au>
756
757 * fports.c, ports.c (ftruncate): Use "HAVE_CHSIZE && ! HAVE_FTRUNCATE"
758 for chsize fallback, instead of hard-coding mingw. Mingw in fact
759 supplies ftruncate itself these days.
760
761 * ports.c (fcntl.h): Can include this unconditionally, no need for
762 __MINGW32__.
763
764 * ports.c (truncate): Conditionalize on "HAVE_FTRUNCATE && !
765 HAVE_TRUNCATE" so as not to hard-code mingw. Use "const char *" and
766 "off_t" for parameters, per usual definition of this function, rather
767 than "char *" and "int". Use ftruncate instead of chsize. Check for
768 error on final close.
769
7702006-09-27 Kevin Ryde <user42@zip.com.au>
771
772 * numbers.c (scm_log10): Check HAVE_CLOG10, clog10() is not available
773 in mingw.
774
775 * posix.c (scm_execl, scm_execlp, scm_execle): Cast "const char *
776 const *" for mingw to suppress warnings from gcc (which are errors
777 under the configure default -Werror). Reported by Nils Durner.
778
7792006-09-26 Kevin Ryde <user42@zip.com.au>
780
781 * _scm.h (scm_to_off64_t, scm_from_off64_t): New macros.
782 * fports.c (scm_open_file): Use open_or_open64.
783 (fport_seek_or_seek64): New function, adapting fport_seek.
784 * fports.c, fports.h (scm_i_fport_seek, scm_i_fport_truncate): New
785 functions.
786 * ports.c (scm_seek, scm_truncate_file): Use scm_i_fport_seek and
787 scm_i_fport_truncate to allow 64-bit seeks and truncates on fports.
788
789 * ports.c (scm_truncate_file): Update docstring per manual.
790
7912006-09-23 Kevin Ryde <user42@zip.com.au>
792
793 * numbers.c, numbers.h (scm_log, scm_log10, scm_exp, scm_sqrt): New
794 functions.
795
9a5fa6e9 7962006-09-20 Ludovic Courtès <ludovic.courtes@laas.fr>
a17d2654
LC
797
798 * srfi-14.c: Include <config.h>. Define `_GNU_SOURCE'.
799 (make_predset, define_predset, make_strset, define_strset, false,
800 true): Removed.
801 (SCM_CHARSET_UNSET, CSET_BLANK_PRED, CSET_SYMBOL_PRED,
802 CSET_PUNCT_PRED, CSET_LOWER_PRED, CSET_UPPER_PRED,
803 CSET_LETTER_PRED, CSET_DIGIT_PRED, CSET_WHITESPACE_PRED,
804 CSET_CONTROL_PRED, CSET_HEX_DIGIT_PRED, CSET_ASCII_PRED,
805 CSET_LETTER_AND_DIGIT_PRED, CSET_GRAPHIC_PRED, CSET_PRINTING_PRED,
806 CSET_TRUE_PRED, CSET_FALSE_PRED, UPDATE_CSET): New macros.
807 (define_charset, scm_srfi_14_compute_char_sets): New functions.
808 (scm_init_srfi_14): Use `define_charset ()' instead of
809 `define_predset ()' and `define_strset ()'.
810
811 * srfi-14.h (scm_c_init_srfi_14): Removed.
812 (scm_srfi_14_compute_char_sets): New declaration.
813
814 * posix.h: Include "srfi-14.h".
815 (scm_setlocale): Invoke `scm_srfi_14_compute_char_sets ()' after a
816 successful `setlocale ()' call.
817
8ab3d8a0
KR
8182006-09-08 Kevin Ryde <user42@zip.com.au>
819
820 * socket.c (scm_init_socket): Add MSG_DONTWAIT.
821 (scm_recvfrom): Update docstring from manual.
822
418122ce
RB
8232006-08-31 Rob Browning <rlb@defaultvalue.org>
824
825 * ports.c (scm_c_port_for_each): Add a
826 scm_remember_upto_here_1(ports) at the end of the function to fix
827 a GC bug.
828
b5944f66
NJ
8292006-08-28 Neil Jerram <neil@ossau.uklinux.net>
830
831 * backtrace.c (scm_display_backtrace_with_highlights): Minor
832 improvements to docstring.
833 (scm_backtrace_with_highlights): Analogous improvements.
834
8ab3d8a0
KR
8352006-08-12 Kevin Ryde <user42@zip.com.au>
836
837 * gen-scmconfig.h.in (SCM_I_GSC_NEED_BRACES_ON_PTHREAD_ONCE_INIT):
838 New, set from configure.
839 * gen-scmconfig.c (SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT): New output
840 to scmconfig.h.
841 * pthread-threads.h (SCM_I_PTHREAD_ONCE_INIT): Use
842 SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT to cope with Solaris.
843 Reported by Claes Wallin.
844
b0b0deff
NJ
8452006-08-11 Neil Jerram <neil@ossau.uklinux.net>
846
847 * stacks.c (scm_last_stack_frame): Correct docstring (returns a
848 frame, not a stack).
849
8ab3d8a0
KR
8502006-07-25 Kevin Ryde <user42@zip.com.au>
851
852 * threads.c (get_thread_stack_base): Restrict HAVE_PTHREAD_GETATTR_NP
853 on pthreads version, since pthread_getattr_np not available on solaris
854 and macos. Reported by Claes Wallin.
855
8562006-07-24 Kevin Ryde <user42@zip.com.au>
857
858 * filesys.c (dirfd): Test with #ifndef rather than HAVE_DIRFD, since
859 it's a macro on MacOS X. Reported by Claes Wallin.
860
861 * posix.c (sethostname): Give prototype if not HAVE_DECL_SETHOSTNAME,
862 for the benefit of Solaris 10. Reported by Claes Wallin.
863
864 * socket.c (scm_htonl, scm_ntohl): Use scm_to_uint32 rather than
865 NUM2ULONG, to enforce 32-bit range check on systems with 64-bit long.
866
8672006-07-21 Kevin Ryde <user42@zip.com.au>
868
869 * eval.c, filesys.c (alloca): Update <alloca.h> etc blob, per current
870 autoconf recommendation. Should fix Solaris 10 reported by Claes
871 Wallin.
872
873 * threads.c: Include <string.h>, needed for memset() which is used by
874 FD_ZERO() on Solaris 10. Reported by Claes Wallin.
875
b4912378
RB
8762006-07-18 Rob Browning <rlb@defaultvalue.org>
877
878 * continuations.c: Add __attribute__ ((returns_twice)) to the
879 ia64_getcontext prototype so that gcc will make the right
880 arrangements and avoid an illegal instruction during
881 call-with-current-continuation.
882
9a5fa6e9 8832006-07-12 Ludovic Courtès <ludovic.courtes@laas.fr>
eaa94eaa
LC
884
885 * numbers.c (guile_ieee_init): Use regular ANSI C casts rather
886 than C++-style `X_CAST ()'. Patch posted by by Mike Gran.
887
8ab3d8a0
KR
8882006-07-08 Kevin Ryde <user42@zip.com.au>
889
890 * environments.c (core_environments_unobserve): Use if/else rather
891 than ?: for "SET" bits, avoiding complaints from AIX xlc compiler
892 about them not being rvalues. Reported by Mike Gran.
893
894 * Makefile.am (version.h): Don't use $< in an explicit rule, it's not
895 portable and in particular fails on OpenBSD and AIX (see autoconf
896 manual too). Reported by Mike Gran.
897
8982006-06-25 Kevin Ryde <user42@zip.com.au>
899
900 * stime.c (bdtime2c): tm_gmtoff is seconds East, so take negative of
901 tm:gmtoff which is seconds West. Reported by Aaron VanDevender.
902 (bdtime2c): Test HAVE_STRUCT_TM_TM_GMTOFF for tm_gmtoff, rather than
903 HAVE_TM_ZONE.
904 (scm_strptime): Use tm_gmtoff from the strptime result when that field
905 exists, it's set by glibc strptime "%s".
906
9a5fa6e9 9072006-06-13 Ludovic Courtès <ludovic.courtes@laas.fr>
d15ad007
LC
908
909 * eq.c: Include "struct.h", "goops.h" and "objects.h".
910 (scm_equal_p): Invoke `scm_i_struct_equalp ()' on structures that
911 are not GOOPS instances.
912 * struct.c: Include "eq.h".
913 (scm_free_structs): Use `SCM_STRUCT_VTABLE_DATA ()' instead of
914 hand-written code.
915 (scm_i_struct_equalp): New.
916 * struct.h (scm_i_struct_equalp): New declaration.
917
c862d0e0
KR
9182006-06-06 Kevin Ryde <user42@zip.com.au>
919
920 * Makefile.am (BUILT_SOURCES): Remove guile.texi, only used by
921 maintainers (with doc/maint/docstring.el). Fixes parallel "make -j2"
922 reported by Mattias Holm.
b4912378 923
c862d0e0
KR
9242006-06-03 Kevin Ryde <user42@zip.com.au>
925
926 * read.c (s_vector): Conditionalize on SCM_ENABLE_ELISP, to avoid
927 unused variable warning when elisp disabled. Reported by Ryan
928 VanderBijl.
929
930 * throw.c (scm_handle_by_message): Add dummy return value to avoid
931 compiler warning on cygwin. Reported by Ryan VanderBijl.
932
933 * Makefile.am (EXTRA_DOT_X_FILES): Typo in dependency rule, was a
934 duplicate of EXTRA_DOT_DOC_FILES.
935 (DOT_X_FILES, EXTRA_DOT_X_FILES, DOT_DOC_FILES, EXTRA_DOT_DOC_FILES):
936 Add scmconfig.h to dependencies, since these all run cpp. Helps a
937 parallel "make -j2". Reported by Mattias Holm.
938
9392006-05-30 Kevin Ryde <user42@zip.com.au>
940
941 * ports.c, ports.h (scm_set_port_mark, scm_set_port_free,
942 scm_set_port_print, scm_set_port_equalp, scm_set_port_flush,
943 scm_set_port_end_input, scm_set_port_close, scm_set_port_seek,
944 scm_set_port_truncate, scm_set_port_input_waiting): Use scm_t_bits for
945 port type descriptor, same as scm_make_port_type return value.
946
af4f8612
MV
9472006-05-30 Marius Vollmer <mvo@zagadka.de>
948
949 * eq.c (scm_equal_p): Use scm_array_equal_p explicitely when one
950 of the arguments is a array. This allows vectors to be equal to
951 one-dimensional arrays.
952
18bffcd0
MV
9532006-05-29 Marius Vollmer <mvo@zagadka.de>
954
955 * throw.c (scm_ithrow): When looking for the jmpbuf, first test
956 that we have a pair before accessing its cdr. Thanks to Bill
957 Schottstaedt!
958
c862d0e0
KR
9592006-05-28 Kevin Ryde <user42@zip.com.au>
960
961 * eval.c, filesys.c: Add malloc.h to get alloca() on mingw. Reported
962 by "The Senator".
963
9642006-05-27 Marius Vollmer <mvo@zagadka.de>
b0c0a310
MV
965
966 * srfi-4.c, strings.c: Replace SCM_C_INLINE with
967 SCM_C_INLINE_KEYWORD. Thanks to Mark Gran!
968
c862d0e0
KR
9692006-05-26 Kevin Ryde <user42@zip.com.au>
970
971 * fports.c (fport_input_waiting): For ioctl, check HAVE_IOCTL as well
972 as defined(FIONREAD), since mingw has FIONREAD but not ioctl().
973 Reported by "The Senator".
974 For select and ioctl, move fdes into those conditionals, to avoid
975 unused variable warning when neither of those used.
976
9772006-05-23 Kevin Ryde <user42@zip.com.au>
978
979 * fports.c: Remove "fwrite" declaration under "! HAVE_UNISTD_H".
980 It's unused and will be in stdio.h anyway (if it's anywhere).
981
9822006-05-20 Kevin Ryde <user42@zip.com.au>
983
984 * filesys.c (scm_stat2scm): Test #ifdef S_ISLNK directly, rather than
985 HAVE_S_ISLNK from configure (it was only a #ifdef test anyway).
986
987 * posix.c (scm_mknod): Test #ifdef S_IFLNK before using that (for
988 symlink). Probably can't create symlinks with mknod anyway though.
989
990 * inline.h (scm_is_pair): Add a workaround for i386 gcc 2.95 bad code
991 generation.
992
9932006-05-15 Kevin Ryde <user42@zip.com.au>
994
995 * simpos.c, simpos.h (scm_primitive__exit): New function.
996 (scm_primitive_exit): Update docstring, no longer the best exit after
997 a fork.
998
9992006-05-09 Kevin Ryde <user42@zip.com.au>
1000
1001 * numbers.c (scm_i_divide): For big/big wanting inexact, use mpq_get_d
1002 rather than converting to doubles, to avoid inf or nan when the inputs
1003 are too big for a double but the quotient does fit. This affects
1004 conversions exact->inexact of big fractions.
1005
1006 * filesys.c (scm_open_fdes): Use open64.
1007 (scm_init_filesys): Add O_LARGEFILE.
1008
1009 * ports.c (scm_seek): Use lseek64.
1010 (scm_truncate_file): Use ftruncate64.
1011
4a342b19
MV
10122006-05-08 Marius Vollmer <mvo@zagadka.de>
1013
1014 * private-gc.h (CELL_P): Also check that the potential pointer is
1015 correctly aligned for a cell. Thanks to Miroslav Lichvar!
1016
c862d0e0
KR
10172006-04-18 Rob Browning <rlb@defaultvalue.org>
1018
1019 * _scm.h: Add back error if the size of off_t is unknown. The bug
1020 was actually in guile-readline's configuration.
1021
10222006-04-18 Kevin Ryde <user42@zip.com.au>
1023
1024 * posix.c (scm_mkstemp): Update docstring from the manual, in
1025 particular file mode 0600 is not guaranteed.
1026
281ab5e2
KR
10272006-04-17 Kevin Ryde <user42@zip.com.au>
1028
1029 * _scm.h (scm_to_off_t, scm_from_off_t): No error if unknown off_t
1030 size, to help the guile-readline build where off_t is unused.
1031
2b829bbb
KR
10322006-04-16 Kevin Ryde <user42@zip.com.au>
1033
1034 * filesys.c (scm_stat2scm, scm_stat, scm_lstat): Use stat or stat64.
1035 (scm_readdir): Use readdir64.
1036 (scm_copy_file): Use open64 and fstat64, to cope with >2Gb files.
1037 * ports.c (scm_truncate_file): Use truncate64. Correction truncate
1038 and ftruncate take off_t not size_t.
1039 * _scm.h (stat_or_stat64 etc): Macros for selecting LFS64 when
1040 available.
1041
10422006-04-06 Kevin Ryde <user42@zip.com.au>
1043
1044 * fports.c (scm_setvbuf): Fix for not _IOLBF, clear SCM_BUFLINE
9a5fa6e9 1045 instead of toggling it. Reported by Ludovic Courtès.
2b829bbb
KR
1046
10472006-03-26 Marius Vollmer <mvo@zagadka.de>
1048
1049 * threads.c (get_thread_stack_base): Use scm_get_stack_base
1050 instead of accessing __libc_stack_end directly, and only do this
1051 when pthread_attr_getstack is known not to work for the main
1052 thread or when not using pthreads at all.
1053
1054 * gc_os_dep.c (scm_get_stack_base): Abort when the machine type is
1055 unknown instead of returning NULL.
1056
9a5fa6e9 10572006-03-21 Ludovic Courtès <ludovic.courtes@laas.fr>
2b829bbb
KR
1058
1059 * numbers.c (scm_i_mem2number): Renamed to
1060 scm_c_locale_stringn_to_number.
1061 * numbers.c, print.c, read.c: Updated callers.
1062 * numbers.h: Update function declaration.
1063
10642006-03-11 Neil Jerram <neil@ossau.uklinux.net>
1065
1066 * unif.c (string_set): Don't return in a void function. (Reported
1067 by Mike Gran.)
1068
1069 * srfi-4.c (scm_uniform_vector_read_x): Declare base as char*
1070 rather than void*, so we can do pointer arithmetic on it.
1071 (Reported by Mike Gran.)
1072 (s_scm_uniform_vector_write): Ditto.
1073
10742006-03-10 Neil Jerram <neil@ossau.uklinux.net>
1075
1076 * unif.c (scm_make_shared_array): Don't use SCM_I_ARRAY_BASE when
1077 oldra is not an array. (Reported by Steve Juranich.)
1078
1079 * threads.c (do_unlock): Renamed from "unlock", which is defined
1080 in unistd.h on QNX. (Reported by Matt Kraai.)
1081
10822006-03-04 Kevin Ryde <user42@zip.com.au>
1083
1084 * deprecated.c (scm_i_defer_ints_etc): Show SCM_DEFER_INTS in message,
1085 not SCM_CRITICAL_SECTION_START.
1086
1087 * eval.c, posix.c: Change comments from C++ to C style. Reported by
1088 Mike Gran.
1089
10902006-02-28 Kevin Ryde <user42@zip.com.au>
1091
1092 * unif.c (bitvector_set): Use h->writable_elements not h->elements.
1093
10942006-02-26 Kevin Ryde <user42@zip.com.au>
1095
1096 * filesys.c (scm_readdir): Use fpathconf for the dirent size when
1097 NAME_MAX is not available, which is so on Solaris 10. Report and help
1098 by Bill Schottstaedt.
1099
1100 * srfi-13.c (MY_VALIDATE_SUBSTRING_SPEC_UCOPY): New macro.
1101 (scm_string_compare, scm_string_compare_ci, scm_string_lt,
1102 scm_string_gt, scm_string_le, scm_string_ge, scm_string_ci_lt,
1103 scm_string_ci_gt, scm_string_ci_le, scm_string_ci_ge): In comparisons
1104 use "unsigned char", not signed char. This ensures comparisons are
1105 the same as `char<?' etc, and is also the same as guile 1.6 did.
1106 Reported by Sven Hartrumpf.
1107
4a9f83ff
MD
11082006-02-19 Mikael Djurfeldt <mdj@neurologic.cc>
1109
1110 * random.c: Test for SCM_HAVE_T_UINT64 instead of
1111 SCM_HAVE_T_INT64.
1112 (scm_i_uniform32, scm_i_uniform32, scm_i_init_rstate): Use
1113 scm_t_uint64 and scm_t_uint32 instead of scm_t_int64 and
1114 scm_t_int32.
1115
29d8c124 11162006-01-04 Ludovic Courtès <ludovic.courtes@laas.fr>
4c7016dc
HWN
1117
1118 * gc-segment.c (scm_i_sweep_some_cards): Take a SWEEP_STATS
1119 argument. Don't refer to SCM_GC_CELLS_COLLECTED and
1120 SCM_CELLS_ALLOCATED. If SEG->FIRST_TIME, let CELLS_COLLECTED as zero.
1121 Take into account SEG->SPAN when computing CELLS_SWEPT.
1122 (scm_i_sweep_segment): Take one more argument, similarly.
1123 (scm_i_sweep_all_segments): Likewise.
1124 (scm_i_sweep_some_segments): Likewise.
1125 (scm_i_adjust_min_yield): Change the way MIN_CELLS is computed: do not
1126 refer to SCM_GC_CELLS_COLLECTED.
1127
1128 * gc-freelist.c (scm_i_adjust_min_yield): Take one more
1129 argument, an `scm_i_sweep_statistics' object.
1130 Change the way DELTA is collected: don't take into account
1131 SCM_GC_CELLS_COLLECTED_1, only SWEEP_STATS.COLLECTED.
1132
1133 * gc-malloc.c (scm_realloc): Pass an extra argument
1134 to `scm_i_sweep_all_segments ()'.
1135
1136 * gc.c (gc_start_stats): Updated accordingly.
1137 (gc_end_stats): Take an additional SWEEP_STATS argument.
1138 Decrement SCM_CELLS_ALLOCATED after calls to `scm_i_sweep_* ()'.
1139 (scm_gc_for_newcell): Updated callers of `scm_i_sweep_*'.
1140 Decrement SCM_CELLS_ALLOCATED.
1141 (scm_i_gc): Likewise.
1142
1143 * private-gc.h (scm_i_sweep_*): Updated function
1144 prototypes accordingly.
1145 (scm_t_sweep_statistics): New type.
1146 (scm_i_sweep_statistics_init): New macro.
1147 (scm_i_sweep_statistics_sum): New macro
1148
9a5fa6e9 11492006-02-14 Ludovic Courtès <ludovic.courtes@laas.fr>
2b829bbb
KR
1150
1151 * strings.c (scm_i_take_stringbufn): Register LEN+1 bytes instead of
1152 LEN. Without this, too much collectable memory gets unregistered,
1153 which results in an underflow of SCM_MALLOCATED in
1154 `decrease_mtrigger()'.
1155
1156 * gc-malloc.c (decrease_mtrigger): Make sure SIZE is lower than or
1157 equal to SCM_MALLOCATED.
1158
11592006-02-13 Marius Vollmer <mvo@zagadka.de>
1160
1161 * eval.c (scm_eval_body): Use scm_i_dynwind_pthread_mutex_lock
1162 oinstead of scm_dynwind_pthread_mutex_lock so that it works when
1163 configured --without-threads.
1164 (SCM_APPLY, CEVAL): Likewise. Thanks to Han-Wen Nienhuys!
1165
1aaa1c17
MV
11662006-02-12 Marius Vollmer <mvo@zagadka.de>
1167
1168 * unif.c (scm_dimensions_to_uniform_array): Use the prototype for
1169 filling when the fill parameter is omitted, as documented, but
1170 turn #\nul into 0 since s8 arrays (signified by a #\nul prototype)
1171 can not store characters.
1172
d7c6575f
NJ
11732006-02-09 Neil Jerram <neil@ossau.uklinux.net>
1174
1175 * socket.c (scm_c_make_socket_address): Pass address_size pointer
1176 on to scm_fill_sockaddr call.
1177
43e01b1e
NJ
11782006-02-04 Neil Jerram <neil@ossau.uklinux.net>
1179
1180 * throw.h (scm_c_catch, scm_c_with_throw_handler,
1181 scm_catch_with_pre_unwind_handler, scm_with_throw_handler): New.
1182
1183 * throw.c (SCM_JBPREUNWIND, SCM_SETJBPREUNWIND): New.
1184 (struct pre_unwind_data): New, replaces struct lazy_catch.
1185 (scm_c_catch): New, replaces scm_internal_catch as the primary
1186 catch API for C code; adds pre-unwind handler support.
1187 (scm_internal_catch): Now just a wrapper for scm_c_catch, for back
1188 compatibility.
1189 (tc16_pre_unwind_data, pre_unwind_data_print,
1190 make_pre_unwind_data, SCM_PRE_UNWIND_DATA_P): Renamed from
1191 "lazy_catch" equivalents.
1192 (scm_c_with_throw_handler): New, replaces scm_internal_lazy_catch
1193 as the primary C API for a "lazy" catch.
1194 (scm_internal_lazy_catch): Now just a wrapper for
1195 scm_c_with_throw_handler, for back compatibility.
1196 (scm_catch_with_pre_unwind_handler): Renamed from scm_catch; adds
1197 pre-unwind handler support.
1198 (scm_catch): Now just a wrapper for
1199 scm_catch_with_pre_unwind_handler, for back compatibility.
1200 (scm_with_throw_handler): New.
1201 (scm_lazy_catch): Update comment to say that the handler can
1202 return, and what happens if it does.
1203 (toggle_pre_unwind_running): New.
1204 (scm_ithrow): When identifying the throw target, take running
1205 flags into account. In general, change naming of things from
1206 "lazy_catch" to "pre_unwind". When throwing to a throw handler,
1207 don't unwind the dynamic context first. Add dynwind framing to
1208 manage the running flag of a throw handler. If a lazy catch or
1209 throw handler returns, rethrow the same exception again. Add
1210 pre-unwind support to the normal catch case (SCM_JMPBUFP).
1211
1212 * root.c (scm_internal_cwdr): Add NULL args to
1213 scm_i_with_continuation_barrier call.
1214
1215 * dynwind.c: Change comment mentioning lazy-catch to mention
1216 pre-unwind data and throw handler also.
1217
1218 * continuations.h (scm_i_with_continuation_barrier): Add
1219 pre-unwind handler args.
1220
1221 * continuations.c (scm_i_with_continuation_barrier): Add
1222 pre-unwind handler args, and pass on to scm_c_catch (changed from
1223 scm_internal_catch).
1224 (c_handler): Remove scm_handle_by_message_noexit call.
1225 (scm_c_with_continuation_barrier): Call
1226 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
1227 as the pre-unwind handler.
1228 (scm_handler): Remove scm_handle_by_message_noexit call.
1229 (s_scm_with_continuation_barrier): Call
1230 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
1231 as the pre-unwind handler.
1232
2b829bbb
KR
12332006-02-04 Kevin Ryde <user42@zip.com.au>
1234
1235 * gc-mark.c (scm_mark_all): Fix c99-isms "loops" and "again" variables.
1236
72098928
KR
12372006-02-03 Kevin Ryde <user42@zip.com.au>
1238
1239 * list.c, list.h (scm_list): Restore this function for use from C.
1240 It's a complete no-op but in theory might used by someone.
1241
aa092c5d
MV
12422006-01-30 Marius Vollmer <mvo@zagadka.de>
1243
1244 * eval.c (scm_eval_body): Lock source_mutex with a dynwind context
1245 so that it gets unlocked in all cases.
1246 (SCM_APPLY, CEVAL): Likewise.
1247
661ae7ab
MV
12482006-01-29 Marius Vollmer <mvo@zagadka.de>
1249
ee51ba31
MV
1250 * ramap.c: (scm_array_map_x): Don't use scm_array_p, use
1251 scm_is_typed_array instead.
1252
661ae7ab
MV
1253 Renamed the "frames" that are related to dynamic-wind to "dynamic
1254 contexts. Renamed all functions from scm_frame_ to scm_dynwind_.
1255 Updated documentation.
1256
99e370f6
MV
1257 Disabled "futures":
1258
1259 * futures.h, futures.c: Wrap whole contents in "#if 0"/"#endif".
1260 * eval.c, init.c: Comment out all 'future' related things.
1261
15ccf10b
MV
12622006-01-28 Marius Vollmer <mvo@zagadka.de>
1263
1264 * inline.h, pairs.c (scm_is_pair): Moved scm_is_pair from pairs.c
1265 to inline.h to make it inline.
1266
9a5fa6e9 12672005-12-19 Ludovic Courtès <ludovic.courtes@laas.fr>
fd0a5bbc
HWN
1268
1269 * strings.c (scm_i_take_stringbufn): New.
1270 (scm_i_c_take_symbol): New.
1271 (scm_take_locale_stringn): Use `scm_i_take_stringbufn ()'.
1272
1273 * strings.h (scm_i_c_take_symbol): New.
1274 (scm_i_take_stringbufn): New.
1275
1276 * symbols.c (lookup_interned_symbol): New function.
1277 (scm_i_c_mem2symbol): New function.
1278 (scm_i_mem2symbol): Use `lookup_symbol ()'.
1279 (scm_from_locale_symbol): Use `scm_i_c_mem2symbol ()'. This avoids
1280 creating a new Scheme string.
1281 (scm_from_locale_symboln): Likewise.
1282 (scm_take_locale_symbol): New.
1283 (scm_take_locale_symboln): New.
1284
1285 * symbols.h (scm_take_locale_symbol): New.
1286 (scm_take_locale_symboln): New.
1287
2ca2ffe6
HWN
12882006-01-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
1289
1290 * gc-card.c ("sweep_card"): don't count scm_tc_free_cell for
1291 free_count.
1292
c255614e
HWN
12932005-11-29 Han-Wen Nienhuys <hanwen@xs4all.nl>
1294
1295 * regex-posix.c (s_scm_regexp_exec): list the offending pattern
1296 upon error
1297
29295b0c
NJ
12982005-12-29 Neil Jerram <neil@ossau.uklinux.net>
1299
9a5fa6e9 1300 * fluids.c (next_fluid_num): [From Ludovic Courtès:] Don't trigger
29295b0c
NJ
1301 the GC when allocated_fluids_len is zero.
1302
2824f4dc
NJ
13032005-12-14 Neil Jerram <neil@ossau.uklinux.net>
1304
ec3a8ace
NJ
1305 * load.c (the_reader, the_reader_fluid_num): New.
1306 (scm_primitive_load): Support custom reader.
1307 (scm_init_load): Init the_reader and the_reader_fluid_num; export
1308 the_reader as `current-reader'.
1309
2824f4dc
NJ
1310 * scmsigs.c (do_read_without_guile): Use the "raw_data" passed in
1311 (rather than an uninitialized pointer on the stack).
1312
d9c36d2a
MV
13132005-12-07 Marius Vollmer <mvo@zagadka.de>
1314
6a88895b
MV
1315 Reported by Bruce Korb:
1316
1317 * init.c (invoke_main_func): Don't call exit here. Throws that
1318 are only caught by scm_with_guile will bypass us and would cause
1319 scm_boot_guile to return erroneously.
1320 (scm_boot_guile): Expect scm_with_guile to return and call exit
1321 here, passing it an appropriate exit code.
1322
1323 From Andy Wingo:
d9c36d2a
MV
1324
1325 * script.c (scm_find_executable): Compile fix -- fgetc returns an
1326 unsigned char cast to an int, or -1 for EOS.
1327
b54df254
MV
13282005-12-06 Marius Vollmer <mvo@zagadka.de>
1329
08f489c9
MV
1330 * srfi-4.h, srfi-4.c, srfi-4.i.c (take_uvec): Make BASE pointer
1331 non-const.
9a5fa6e9 1332 (scm_take_u8vector, etc): Likewise. Thanks to Ludovic Courtès!
08f489c9 1333
b54df254
MV
1334 * threads.h, threads.c (scm_t_guile_ticket, scm_leave_guile,
1335 scm_enter_guile): Removed from public API. See comment at
1336 scm_without_guile for the rationale.
1337
1338 * scmsigs.c (read_without_guile): New.
1339 (signal_delivery_thread): Use it instead of
1340 scm_leave_guile/read/scm_enter_guile.
1341
9d9ce2b5
MV
1342 From Stephen Compall:
1343
1344 * eval.c (scm_m_cond): Recognize SRFI 61 cond syntax.
1345 (CEVAL): Evaluate SRFI 61 cond clauses.
1346
9a5fa6e9 13472005-12-06 Ludovic Courtès <ludovic.courtes@laas.fr>
9fb5c8f9
NJ
1348
1349 * gc-card.c (scm_i_card_statistics): Return if BITVEC is NULL.
1350 This was typically hit when running `gc-live-object-stats' right
1351 after starting Guile.
1352
efeac8ae
KR
13532005-11-30 Kevin Ryde <user42@zip.com.au>
1354
1355 * srfi-13.c (scm_string_append_shared): No copying if just one
1356 non-empty string in args.
1357
606183ba
KR
13582005-11-26 Kevin Ryde <user42@zip.com.au>
1359
1360 * gc-mark.c (scm_mark_all): Change C++ comment to C comment. Reported
9a5fa6e9 1361 by Ludovic Courtès.
606183ba
KR
1362
1363 * list.c (list): Should be "primitive" in SCM_SNARF_DOCS, not
1364 "register".
1365
1366 * random.c (scm_i_copy_rstate, scm_c_make_rstate): Don't test for
1367 scm_malloc returning NULL, it never does that.
1368 * putenv.c (putenv): Likewise.
1369
1370 * socket.c (scm_fill_sockaddr): Remove SCM_C_INLINE_KEYWORD, this is
1371 much too big to want to inline.
1372
9a5fa6e9 13732005-11-17 Ludovic Courtès <ludovic.courtes@laas.fr>
dbb5de29
NJ
1374
1375 * print.c (EXIT_NESTED_DATA): Before popping from the stack, reset
1376 the value at its top. This fixes a reference leak.
1377 (PUSH_REF): Perform `pstate->top++' after calling
1378 `PSTATE_STACK_SET ()' in order to avoid undesired potential side
1379 effects.
1380
9a5fa6e9 13812005-11-12 Ludovic Courtès <ludovic.courtes@laas.fr>
3f98874a
NJ
1382
1383 * gc.c (scm_weak_vectors): Removed.
1384
f07d2b20
KR
13852005-11-12 Kevin Ryde <user42@zip.com.au>
1386
1387 * socket.c (scm_setsockopt): Missing @defvar in docstring. Reported
9a5fa6e9 1388 by Ludovic Courtès.
f07d2b20 1389
bedd3f5f
MV
13902005-11-07 Marius Vollmer <mvo@zagadka.de>
1391
1392 * stime.c (scm_mktime): Use scm_frame_critical_section instead of
1393 SCM_CRITICAL_SECTION_START/END since the code inside the critical
1394 section might exit non-locally.
1395
7c9c0169
NJ
13962005-11-04 Neil Jerram <neil@ossau.uklinux.net>
1397
1398 * eval.c (sym_instead): New symbol.
1399 (ENTER_APPLY): Remove optional use of a continuation when making
1400 trap call.
1401 (scm_debug_opts): Change doc for 'cheap option to make clear that
1402 it is now obsolete.
1403 (CEVAL, SCM_APPLY): Remove optional use of a continuation when
1404 making trap calls, and implement substitution of eval expressions
1405 and return values using the values that the trap call handlers
1406 return.
1407
1408 * debug.h (SCM_CHEAPTRAPS_P): Removed.
1409
9a5fa6e9 14102005-10-27 Ludovic Courtès <ludovic.courtes@laas.fr>
64cdbfc7
KR
1411
1412 * socket.c (scm_fill_sockaddr): No need to check NULL from scm_malloc.
1413 (scm_connect, scm_bind, scm_sendto): Accept sockaddr object.
1414 (scm_addr_vector): Renamed to _scm_from_sockaddr, update usages.
1415 (scm_from_sockaddr, scm_to_sockaddr, scm_make_socket_address,
1416 scm_c_make_socket_address): New functions.
1417 * socket.h: Add prototypes.
1418
fc9f596c
KR
14192005-10-24 Kevin Ryde <user42@zip.com.au>
1420
1421 * socket.c (scm_init_socket): Add IPPROTO_IP, IPPROTO_TCP,
1422 IPPROTO_UDP. Remove SOL_IP, SOL_TCP, SOL_UDP. The former are in
1423 POSIX spec examples, the latter are not available on for instance
1424 NetBSD.
1425
1426 * socket.c (scm_getsockopt, scm_setsockopt): Update docstrings from
1427 posix.texi.
1428
1429 * stime.c (scm_strftime): Update docstring from posix.texi.
1430
0460c6e1
MV
14312005-10-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1432
1433 PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP is not portable enough.
1434
1435 * null-threads.h, pthread-threads.h
1436 (SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER): Removed.
1437 (scm_i_pthread_mutexattr_recursive): New.
1438
1439 * threads.c (scm_i_pthread_mutexattr_recursive): Declare.
1440 (scm_i_critical_section_mutex): Do not initialize statically.
1441 (scm_threads_prehistory): Initialize
1442 scm_i_pthread_mutexattr_recursive and scm_i_critical_section_mutex
1443 here.
1444
1445 * eval.c (source_mutex): Do not initialiaze statically.
1446 (scm_init_eval): Do it here, using
1447 scm_i_pthread_mutexattr_recursive.
1448
7b4a9e52
MV
14492005-09-05 Marius Vollmer <mvo@zagadka.de>
1450
1451 * print.h (SCM_PRINT_KEYWORD_STYLE_I, SCM_PRINT_KEYWORD_STYLE):
1452 New.
1453 (sym_reader): New.
1454 (scm_print_opts): Added "quote-keywordish-symbols" option.
1455 (quote_keywordish_symbol): New, for evaluating the option.
1456 (scm_print_symbol_name): Use it.
1457 (scm_init_print): Initialize new option to sym_reader.
1458
5defc05d
NJ
14592005-08-15 Neil Jerram <neil@ossau.uklinux.net>
1460
1461 * eval.c (eval_letrec_inits): New.
1462 (CEVAL): Eval letrec initializer forms using eval_letrec_inits.
1463
036482e9
MV
14642005-08-12 Marius Vollmer <mvo@zagadka.de>
1465
1466 * numbers.c: Use scm_from_bool instead of SCM_BOOL. Thanks to
1467 Peter Gavin!
1468
5c347f8c
KR
14692005-08-12 Kevin Ryde <user42@zip.com.au>
1470
1471 * srfi-13.c (scm_string_for_each_index): Correction to docstring.
1472
bc721aa2
KR
14732005-08-06 Kevin Ryde <user42@zip.com.au>
1474
1475 * srfi-13.c (scm_string_any, scm_string_every, scm_string_tabulate,
1476 scm_string_trim, scm_string_trim_right, scm_string_trim_both,
1477 scm_string_index, scm_string_index_right, scm_string_skip,
1478 scm_string_skip_right, scm_string_count, scm_string_map,
1479 scm_string_map_x, scm_string_for_each, scm_string_for_each_index,
1480 scm_string_filter, scm_string_delete): Use scm_t_trampoline_1 for
1481 procedures called in loops.
1482
126c81db
KR
14832005-08-02 Kevin Ryde <user42@zip.com.au>
1484
1485 * strports.c (st_flush): Increase buffer by 1.5x when growing, to
1486 avoid lots of copying where previoulsy growing by only 80 bytes at a
1487 time.
1488
7f278dc6
MV
14892005-08-01 Marius Vollmer <mvo@zagadka.de>
1490
1491 * modules.h, modules.c (scm_eval_closure_module): Removed, we
1492 already have scm_lookup_closure_module, which does the same thing.
1493
cb5c4b07
MV
14942005-08-01 Marius Vollmer <mvo@zagadka.de>
1495
1496 New marking algorithm for weak hashtables that fixes the problem
1497 that references from the non-weak value to the associated weak
1498 key (for example) would prevent the entry from ever being dropped.
1499
1500 Guardians have been changed back to their original semantics and
1501 are no longer greedy and no longer drop cycles.
1502
1503 * gc-mark.c (scm_mark_all): Do not rely on hooks to run the weak
1504 hashtable and guardian machinery but call the relevant functions
1505 directly.
1506
1507 * guardians.h, guardians.c, deprecated.h,
1508 deprecated.c (scm_destroy_guardian_x, scm_guardian_greedy_p,
1509 scm_guardian_destroyed_p, scm_guard, scm_get_one_zombie):
1510 Deprecated and moved into deprecated.[ch].
1511
1512 * guardians.h, guardians.c: Mostly rewritten.
1513 (scm_i_init_guardians_for_gc,
1514 scm_i_identify_inaccessible_guardeds,
1515 scm_i_mark_inaccessible_guardeds): New.
930888e8 1516 (scm_make_guardian): Removed greedy_p argument.
cb5c4b07
MV
1517
1518 * weaks.h, weaks.c (SCM_I_WVECT_TYPE, SCM_I_SET_WVECT_TYPE): New.
1519 (SCM_I_WVECT_N_ITEMS, SCM_I_SET_WVECT_N_ITEMS): New.
1520 (SCM_WVECTF_NOSCAN, SCM_WVECT_NOSCAN_P): Removed.
1521 (scm_weaks_prehistory): Removed.
1522 (scm_i_init_weak_vectors_for_gc, scm_i_mark_weak_vector,
1523 scm_i_mark_weak_vectors_non_weaks,
1524 scm_i_remove_weaks_from_weak_vectors, scm_i_remove_weaks): New.
1525 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
1526 scm_scan_weak_vectors): Removed.
1527
1528 * hashtab.h (scm_i_scan_weak_hashtables): New.
1529 * hashtab.c (make_hash_table, scm_i_rehash): Do not use
1530 SCM_WVECTF_NOSCAN.
1531 (hashtable_print): Use SCM_HASHTABLE_N_ITEMS instead of
1532 t->n_items.
1533 (scan_weak_hashtables, scm_i_scan_weak_hashtables): Renamed former
1534 to latter. Do not scan the alists themselves, this is done by the
1535 weak vector code now. Just update the element count.
1536
1537 * vectors.h (SCM_I_WVECT_TYPE, SCM_I_WVECT_EXTRA): Renamed former
1538 to latter. The type is now only part of the cell word.
1539 (SCM_I_SET_WVECT_TYPE, SCM_I_SET_WVECT_EXTRA): Likewise.
1540
1541 * init.c (scm_i_init_guile): Do not call scm_weaks_prehistory.
1542
3e2073bd
MD
15432005-07-18 Mikael Djurfeldt <mdj@d14n36.pdc.kth.se>
1544
1545 Some changes towards making it possible to run Guile on the EM64T
1546 platform.
1547
1548 * gc.c (scm_gc_stats): Bugfix: Measure size of the type we are
1549 mallocating for (unsigned long *bounds).
1550
1551 * hashtab.c (scm_i_rehash): Cast SCM_HASHTABLE_FLAGS (table) to
1552 scm_t_bits before storing them in the type word.
1553
1554 * gc.c (tag_table_to_type_alist): Modified type of c_tag from
1555 scm_t_bits to int.
1556
e8ac8e75
KR
15572005-07-12 Kevin Ryde <user42@zip.com.au>
1558
1559 * eval.c (scm_dbg_make_iloc): Should be SCM_IFRAMEMAX and
1560 SCM_IDISTMAX, and cast uints through scm_t_bits to make gcc happy.
1561 * pairs.c (scm_error_pair_access): Use scm_from_locale_string rather
1562 than scm_makfrom0str.
1563 Reported by Ken Raeburn.
1564
1565 * gc-card.c (scm_dbg_gc_get_bvec): Change return from long* to
1566 scm_t_c_bvec_long*, gcc 4 doesn't like different pointer targets when
1567 returning SCM_GC_CARD_BVEC.
1568
1569 * pairs.c (scm_error_pair_access): Plain ascii ' in error message
1570 rather than latin-1 acute accent, the latter may not print on all
1571 terminals.
1572
1573 * srfi-13.c (scm_string_filter, scm_string_delete): Strip leading and
1574 trailing deletions, so as to return a substring if those are the only
1575 changes.
1576
adc0677d
KR
15772005-07-10 Kevin Ryde <user42@zip.com.au>
1578
1579 * socket.c (scm_inet_pton, scm_inet_ntop): Pointer cast to scm_t_uint8
1580 for scm ipv6 funcs, gcc 4 is picky about char* vs uchar*.
1581 (scm_getsockopt, scm_accept, scm_getsockname, scm_getpeername,
1582 scm_recvfrom) Use socklen_t, gcc 4 is picky about int* vs socklen_t*.
1583
8fecbb19
HWN
15842005-07-01 Han-Wen Nienhuys <hanwen@xs4all.nl>
1585
1586 * gc-card.c (scm_i_card_statistics): init tag.
1587
1588 * gc.c (tag_table_to_type_alist): check type of tag. Should be integer.
1589
fc9c5d06
HWN
15902005-06-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
1591
8fecbb19
HWN
1592 * fports.c (s_scm_open_file): add the b flag for binary to the doc
1593 string.
fc9c5d06 1594
08fce816
KR
15952005-06-25 Kevin Ryde <user42@zip.com.au>
1596
1597 * srfi-13.c (scm_string_filter, scm_string_delete): Partial revert
1598 last change, use plain copy-on-write substrings, the individual
1599 descriptions in the srfi don't mention shared storage (only the
1600 introduction does).
1601
1602 * strings.c (scm_take_locale_stringn): Use realloc to make room for
1603 null-terminator, rather than mallocing a whole new block.
1604 (scm_take_locale_string): Use scm_take_locale_stringn len==-1.
1605
fc4abd0e
MV
16062005-06-12 Marius Vollmer <mvo@zagadka.de>
1607
e3da8a30
MV
1608 * ramap.c (scm_array_index_map_x): First test for real arrays,
1609 then check for generalized vectors. This ensures that the
1610 generalized vector case need only work with zero-origin ranges.
12097c77
MV
1611 (scm_ra_eqp, scm_ra_compare): Use the new array handle functions
1612 to access the target array, making these functions work with all
1613 kinds of arrays, not just bit arrays.
e3da8a30 1614
fc4abd0e
MV
1615 * gh.h, gh_data.c, gh_eval.c, gh_funcs.c, gh_init.c, gh_io.c,
1616 gh_list.c, gh_predicates.c: Deprecated everything.
1617
1618 * environments.c (environment_default_folder,
1619 environment_default_observer): Do not use gh_call3, gh_call1.
1620
e4da0740
HWN
16212005-06-10 Han-Wen Nienhuys <hanwen@xs4all.nl>
1622
1623 * modules.c (s_scm_eval_closure_module): new function. Return the
1624 module inside an eval-closure.
1625
1626 * gc.c (scm_init_storage): make scm_stand_in_procs a weak_key hash
1627 table. This means that procedure properties are GC'd if the
1628 procedure dies.
1629
27667158
KR
16302005-06-11 Kevin Ryde <user42@zip.com.au>
1631
1632 * srfi-13.c (scm_string_filter, scm_string_delete): For char and
1633 charset cases, count chars kept and build a string in a second pass,
1634 rather than using a cons cell for every char kept. Use a shared
1635 substring when nothing removed (such sharing is allowed by the srfi).
1636
8a00ba71
HWN
16372005-06-09 Han-Wen Nienhuys <hanwen@xs4all.nl>
1638
1639 * gc.c (tag_table_to_type_alist): convert tag number to "tag %d"
1640 string, so live object stats can be sorted with string<?.
1641
a677679f
MV
16422005-06-06 Marius Vollmer <mvo@zagadka.de>
1643
2ff668b0
MV
1644 * print.c (iprin1): When writing a string, collect all characters
1645 that can be printed directly into one call to scm_lfwrite.
1646 Previously, every character was output with its own call to
1647 write(2) on unbuffered ports.
1648
589f22f6
MV
1649 * eval.c (scm_eval_options_interface): Use
1650 scm_frame_critical_section instead of SCM_CRITICAL_SECTION_START
1651 and SCM_CRITICAL_SECTION_END.
1652
a677679f
MV
1653 * unif.c (scm_array_in_bounds_p): First test for real arrays, then
1654 check for generalized vectors. This ensures that the generalized
1655 vector case need only work with zero-origin ranges.
1656
f8cda9ee
KR
16572005-06-06 Kevin Ryde <user42@zip.com.au>
1658
1659 * srfi-13.c (scm_string_split): Compare char/char in scan. Mixing an
1660 unsigned int SCM_CHAR and a char string meant an 8-bit char was never
1661 matched.
1662
cdac1be4
MV
16632005-06-05 Marius Vollmer <mvo@zagadka.de>
1664
6642f7ac
MV
1665 * eval.c: Added comment on how to make case 1.1 of
1666 r5rs_pitfall.test succeed.
1667
cdac1be4
MV
1668 From Jan Nieuwenhuizen <janneke@gnu.org>. Thanks!
1669
1670 * hashtab.h: Bugfix: use SCM_API (WAS: extern).
1671
1672 * socket.c: Remove obsolete comment about socklen_t.
1673 (s_scm_setsockopt)[!HAVE_IP_MREQ]: Do not use ip_mreq code.
1674
1675 * numbers.h (isnan)[__MINGW32__]: Remove.
1676
1677 * Makefile.am (gen_scmconfig_SOURCES): Bugfix: Add
1678 DEFAULT_INCLUDES when cross compiling.
1679
1680 * threads.c (ETIMEDOUT, pipe)[__MINGW32__]: Add defines.
1681
a677679f 1682 * stime.c (scm_strftime)[!HAVE_TM_ZONE]: Use
cdac1be4
MV
1683 SCM_SIMPLE_VECTOR_REF instead of SCM_VELTS. (Changed slightly
1684 from Jan's patch.)
1685
9e664475
MV
16862005-05-22 Marius Vollmer <mvo@zagadka.de>
1687
188d0c5e
MV
1688 * unif.c (scm_make_shared_array): Add old base to new base since
1689 scm_array_handle_pos does not include the base.
1690 (scm_aind): Likewise.
1691
9e664475
MV
1692 * ports.c (scm_putc, scm_puts): Assert that the port argument is a
1693 output port.
1694
5a6d139b
NJ
16952005-05-12 Neil Jerram <neil@ossau.uklinux.net>
1696
1697 Mac OS X compile warning fixes, reported by Richard Todd.
1698
1699 * unif.c (scm_i_read_array): Declare rank as ssize_t, to guarantee
1700 that it is signed.
1701
1702 * strports.c (st_resize_port): Add unsigned char cast.
1703 (scm_mkstrport): Make read/write_buf cast unsigned.
1704
1705 * srfi-13.c (string_titlecase_x): Add unsigned char cast.
1706
1707 * rdelim.c (scm_read_line): Initialize slen.
1708
1709 * load.c (scm_search_path): Remove weird >=1, and add
1710 parentheses to clarify conditions.
1711
1712 * hash.c (scm_hasher): Add const unsigned char cast.
1713
1714 * gh_data.c (gh_chars2byvect): Add scm_t_int8 cast.
1715
b01532af
NJ
17162005-05-11 Neil Jerram <neil@ossau.uklinux.net>
1717
9a5fa6e9 1718 Fix C99isms reported by Ludovic Courtès:
b01532af
NJ
1719
1720 * threads.c (s_scm_lock_mutex): Don't declare msg in middle of
1721 code.
1722
1723 * gc.c (s_scm_gc_live_object_stats): Don't declare alist in middle
1724 of code.
1725
1726 * gc-card.c (scm_i_card_statistics): Don't declare tag in middle
1727 of code.
1728 (scm_i_card_statistics): Add block for declarations of tag_as_scm
1729 and current.
1730
229a0710
NJ
17312005-05-10 Neil Jerram <neil@ossau.uklinux.net>
1732
1733 * scmsigs.c (signal_delivery_thread): Return a value, to avoid
1734 compile warning reported by Werner Scheinast.
1735
645dd3fc
HWN
17362005-04-30 Han-Wen Nienhuys <hanwen@xs4all.nl>
1737
80038021
HWN
1738 * list.h: remove scm_list()
1739
645dd3fc
HWN
1740 * fluids.c (DYNAMIC_STATE_NEXT_LOC): new macro for use with
1741 SCM_DEBUG_CELL_ACCESSES
1742 (FLUID_NEXT_LOC): idem.
1743
9a68a4a8
KR
17442005-04-30 Kevin Ryde <user42@zip.com.au>
1745
1746 * numbers.c (scm_divide): Correction to 1/complex and <any>/complex,
1747 need to test abs(re)<abs(im) for choice of cases, otherwise divide by
1748 zero when re==0 and im<0. Reported by Jean Crepeau.
1749
0640cdaa
KR
17502005-04-25 Kevin Ryde <user42@zip.com.au>
1751
1752 * ramap.c (scm_array_map_x): Allow no source args, add num args checks
4d54ee35
KR
1753 to subr_1, subr_2, subr_2o and dsubr cases. No source args only has a
1754 few sensible uses (like filling with a random number generator say),
1755 but has been allowed in the past and so should be kept.
0640cdaa 1756
c0b85e9c
KR
17572005-04-23 Kevin Ryde <user42@zip.com.au>
1758
1759 * hashtab.c (scm_hashx_remove_x): Need to pass "closure" to
1760 scm_hash_fn_remove_x.
1761
1762 * list.c (scm_cons_star): Don't modify the rest list, it belongs to
1763 the caller when cons* is reached through apply.
1764
1765 * list.c (list): Use scm_list_copy, so as to produce a fresh list when
1766 list is called using apply, under the debugging evaluator.
1767 (scm_list): Remove.
1768
c51682b4
KR
1769 * list.c, list.h (scm_make_list): New code, moving make-list from
1770 boot-9.scm.
8cb2eff8 1771
c0575bde
KR
17722005-04-14 Kevin Ryde <user42@zip.com.au>
1773
1774 * numbers.c, numbers.h (scm_oneplus, scm_oneminus): New functions,
1775 converted from scheme code in boot-9.scm.
1776
47a298d9
KR
17772005-04-11 Kevin Ryde <user42@zip.com.au>
1778
1779 * srfi-13.c (scm_string_concatenate, scm_string_concatenate_shared):
1780 Validate list argument, scm_string_append and scm_string_append_shared
1781 don't do that to their rest argument (in a normal build).
1782
8ea3dc2e
MV
17832005-04-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1784
1785 * hashtab.h, hashtab.c (scm_t_hashtable): Removed 'closure' field. The
1786 closure can not be stored since it is no longer valid at GC time.
1787 (make_hash_table): Initialize 'hash_fn' field.
1788 (scm_i_rehash): Only store hash_fn in hash table when closre is
1789 NULL.
1790 (rehash_after_gc): Only call scm_i_rehash when 'hash_fn' is
1791 non-NULL. Always use a NULL closure.
1792 (scm_hash_fn_create_handle_x): Also rehash when table contains too
1793 few entries.
1794
08d2020d
MV
17952005-03-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1796
1797 * hashtab.h, hashtab.c (scm_hash_fx_remove_x): Removed delete_fn
1798 argument; always use scm_delq_x. The delete_fn function works on
1799 the handle, not the key, and it therefore makes no sense to make
1800 it configurable. Changed all callers.
1801 (scm_hashx_remove_x): Likewise. Also, exported to Scheme.
1802 (scm_hash_clear): Accept plain vectors as hashtables.
1803 (scm_delx_x): Removed.
1804
cb975c21
HWN
18052005-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
1806
1807 * inline.h (scm_double_cell): use __asm__ iso. asm, to maintain
1808 compatibility with gcc -std=c99.
1809
4c908f2c
MD
18102005-03-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1811
1812 * async.h (scm_mask_ints): Removed left over reference to
1813 scm_root.
1814
1815 * threads.c: Removed fprintf debug statements.
1816
d193b04b
NJ
18172005-03-24 Neil Jerram <neil@ossau.uklinux.net>
1818
1819 * debug.c (scm_make_memoized): Restore use of SCM_UNPACK.
1820
c29748cd
NJ
18212005-03-23 Neil Jerram <neil@ossau.uklinux.net>
1822
1823 * debug.c (scm_make_memoized): Remove unnecessary critical
1824 section, and simplify by using SCM_RETURN_NEWSMOB.
1825
e654b062
MD
18262005-03-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1827
1828 * strings.h (SCM_STRING_UCHARS): Added missing argument.
1829
4bc6f1c6
KR
18302005-03-18 Kevin Ryde <user42@zip.com.au>
1831
1832 * arbiters.c (FETCH_STORE) [generic C]: Should be
9a5fa6e9 1833 scm_i_scm_pthread_mutex_lock/unlock now. Reported by Ludovic Courtès.
4bc6f1c6 1834
f1531813
KR
18352005-03-13 Kevin Ryde <user42@zip.com.au>
1836
1837 * numbers.c, numbers.h (scm_i_clonebig): Remove static, so can use in
1838 srfi-60.
1839
1840 * numbers.c (scm_logior): Must scm_i_normbig results as per scm_logand,
1841 because OR-ing bits into a negative can reduce the value to an inum.
1842
1843 * numbers.c (scm_num_eq_p): On 64-bit systems, be careful about
1844 casting inum to double since that can lose precision.
1845
a9fae247
MV
18462005-03-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1847
1848 * threads.h, threads.c (scm_i_thread): Added gc_running_p field.
1849 (guilify_self_1): Initialize it.
1850
1851 * gc.h, gc.c (SCM_FREECELL_P): Removed for good.
1852 (scm_block_gc, scm_gc_heap_lock): Removed. Removed all uses.
1853 (scm_gc_running_p): Now a macro that refers to the scm_i_thread
1854 field.
1855 (scm_i_sweep_mutex): Now a non-recursive mutex. GC can not happen
1856 recursively.
1857 (scm_igc, scm_i_gc): Renamed former to latter. Changed all uses.
1858 Do not lock scm_i_sweep_mutex, which is now non-recursive, or set
1859 scm_gc_running_p. Do not run the scm_after_gc_c_hook.
1860 (scm_gc): Lock scm_i_sweep_mutex, set scm_gc_running_p and run the
1861 scm_after_gc_c_hook here.
1862 (scm_gc_for_new_cell): Set scm_gc_running_p here and run the
1863 scm_after_gc_c_hook when a full GC has in fact been performed.
1864 (scm_i_expensive_validation_check): Call scm_gc, not scm_i_gc.
1865
1866 * gc-segment.c (scm_i_get_new_heap_segment): Do not check
1867 scm_gc_heap_lock.
1868
1869 * gc-malloc.c (scm_realloc, increase_mtrigger): Set
1870 scm_gc_running_p while the scm_i_sweep_mutex is locked.
1871
1872 * inline.h (scm_cell, scm_double_cell): Do not check
1873 scm_gc_running_p, allocation during sweeping is OK.
1874
1875 * gdbint.c (SCM_BEGIN_FOREIGN_BLOCK, SCM_END_FOREIGN_BLOCK): Do
1876 not set scm_block_gc.
1877
1878 * init.c (scm_i_init_guile): Do not set scm_block_gc.
1879
1880 * deprecation.c (scm_c_issue_deprecation_warning): Use malloc
1881 instead of scm_malloc. The latter can not be used during GC.
1882
d1c38e11
MV
18832005-03-09 Marius Vollmer <mvo@zagadka.de>
1884
1885 * script.c (scm_compile_shell_switches): Added 2005 to Copyright
1886 years.
1887
99ec43c1
MV
18882005-03-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1889
1890 * gc-card.c (scm_i_sweep_card): Do not increase/decrease
1891 scm_gc_running_p. Sweeping can happen in parallel with
1892 allocation.
1893
1894 * inline.h: Updated comments for current threading implementation.
1895
1896 * threads.h, threads.c (scm_i_frame_single_threaded): Removed.
1897 (scm_i_thread): Removed unused signal_asyncs field.
1898 (threads_mark): Do not mark it.
1899 (guilify_self_1): Do not initialize it. Do initialize
1900 continuation_root field.
1901 (do_thread_exit): Do not remove thread from all_threads list.
1902 (on_thread_exit): Do it here, after leaving guile mode.
1903 (sleep_level): Removed.
1904 (scm_i_thread_put_to_sleep): Leave thread_admin_mutex locked when
1905 returning. Do not support recursive sleeps.
1906 (scm_i_thread_wake_up): Expect thread_admin_mutex to be locked on
1907 entry. Do not support recursive sleeps.
1908
1909 * fluids.c (ensure_state_size, ensure_all_state_sizes,
1910 resize_all_states): Collapsed ensure_state_size and
1911 ensure_all_state_sizes into one function named resize_all_states.
1912 Allocate new vectors outside of single threaded region. Do only
1913 simple things inside that region.
1914 (scm_make_fluid, scm_make_dynamic_state): Lock fluid_admin_mutex
1915 while adding to the global lists.
1916
1917
461f34aa
MV
19182005-03-08 Marius Vollmer <mvo@zagadka.de>
1919
1920 libltdl is no longer distributed. We expect it to be installed
1921 already.
1922
1923 * Makefile.am (INCLUDES): Removed @LTDLINCL@.
1924 (libguile_la_LIBADD): Removed @LIBLTDL@.
1925
4e047c3e
MV
19262005-03-07 Marius Vollmer <mvo@zagadka.de>
1927
1928 * threads.h, async.h, threads.c (SCM_CRITICAL_SECTION_START,
1929 SCM_CRITICAL_SECTION_END): Moved here from threads.h since now
1930 they also block/unblock execution of asyncs and call
1931 scm_async_click which is declared in async.h but threads.h can not
1932 include async.h since async.h already includes threads.h.
1933 (scm_i_critical_section_level): New, for checking mistakes in the
1934 use of the SCM_CRITICAL_SECTION_* macros.
1935 (scm_i_critical_section_mutex): Make it a recursive mutex so that
1936 critical sections can be nested.
1937
1938 * throw.c (scm_ithrow): Abort when scm_i_critical_section_level is
1939 not zero.
1940
1941 * threads.h, threads.c (scm_frame_lock_mutex): New.
1942 (scm_frame_critical_section): Take mutex as argument.
1943 (framed_critical_section_mutex): New, used as default for above.
1944 (scm_init_threads): Initialize it.
1945 (scm_threads_prehistory): Do not initialize thread_admin_mutex and
1946 scm_i_critical_section_mutex; both are initialized statically.
1947
1948 * continuation.c, deprecated.c, goops.c, guardians.c keywords.c,
1949 libguile_la-arrays.loT, objprop.c, ports.c, smob.c, sort.s,
b9d9ad3a
MV
1950 srcprop.c, stime.c, struct.c, throw.c, regex-posix.c: Include
1951 "libguile/async.h" for SCM_CRITICAL_SECTION_START/END.
4e047c3e
MV
1952
1953 * debug.c (scm_debug_options): Replace
1954 SCM_CRITICAL_SECTION_START/END with a frame and
1955 scm_frame_critical_section.
1956
1957 * continuations.c (scm_make_continuation): No longer a critical
1958 section.
1959 (scm_dynthrow): Abort when scm_i_critical_section_level is
1960 not zero.
1961
d0a45bff
MV
19622005-03-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1963
db6673e5
MV
1964 * threads.c (scm_try_mutex): Renamed argument for consistency.
1965
d0a45bff
MV
1966 * root.c (scm_call_with_dynamic_root): New docstring.
1967
1968 * eval.c: Define _GNU_SOURCE.
1969
9de87eea
MV
19702005-03-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1971
1972 Big merge from the mvo-thread-cleanup branch. The main changes
1973 are:
1974
1975 - The dynamic roots functionality has been split into dynamic
1976 states and continuations barriers. Fluids have been
1977 reimplemented and can now be garbage collected.
1978
1979 - Initialization of Guile now works in a multi-thread friendly
1980 manner. Threads can freely enter and leave guile mode.
1981
1982 - Blocking on mutexes or condition variables or while selecting
1983 can now be reliably interrupted via system asyncs.
1984
1985 - The low-level threading interface has been removed.
1986
1987 - Signals are delivered via a pipe to a dedicated 'signal delivery
1988 thread'.
1989
1990 - SCM_DEFER_INTS, SCM_ALLOW_INTS etc have been deprecated.
1991
1992 * throw.c (scm_handle_by_message): Exit only the current thread,
1993 not the whole process.
1994 (scm_handle_by_message_noexit): Exit when catching 'quit.
1995
1996 * scmsigs.c (take_signal, signal_delivery_thread,
1997 start_signal_delivery_thread, ensure_signal_delivery_thread,
1998 install_handler): Reimplemented signal delivery as explained in
1999 the comments.
2000
2001 * pthreads-threads.h (scm_i_pthread_t, scm_i_pthread_self,
2002 scm_i_pthread_create, scm_i_pthread_detach, scm_i_pthread_exit,
2003 scm_i_sched_yield, scm_i_pthread_sigmask,
2004 SCM_I_PTHREAD_MUTEX_INITIALIZER,
2005 SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER, scm_i_pthread_mutex_t ,
2006 scm_i_pthread_mutex_init, scm_i_pthread_mutex_destroy,
2007 scm_i_pthread_mutex_trylock, scm_i_pthread_mutex_lock,
2008 scm_i_pthread_mutex_unlock, SCM_I_PTHREAD_COND_INITIALIZER,
2009 scm_i_pthread_cond_t, scm_i_pthread_cond_init,
2010 scm_i_pthread_cond_destroy, scm_i_pthread_cond_signal,
2011 scm_i_pthread_cond_broadcast, scm_i_pthread_cond_wait,
2012 scm_i_pthread_cond_timedwait, scm_i_pthread_once_t,
2013 SCM_I_PTHREAD_ONCE_INIT, scm_i_pthread_once, scm_i_pthread_key_t ,
2014 scm_i_pthread_key_create, scm_i_pthread_setspecific,
2015 scm_i_pthread_getspecific, scm_i_scm_pthread_mutex_lock,
2016 scm_i_frame_pthread_mutex_lock, scm_i_scm_pthread_cond_wait,
2017 scm_i_scm_pthread_cond_timedwait): Provide the obvious mapping
2018 when using pthreads.
2019 * null-threads.c, null-threads.h: Provide dummy definitions for
2020 the above symbols when not using pthreads.
2021
2022 * modules.h, modules.c (scm_frame_current_module): New.
2023
2024 * load.c (scm_primitive_load): Use scm_i_frame_current_load_port
2025 instead of scm_internal_dynamic_wind.
2026
2027 * init.h, init.c (restart_stack, start_stack): Removed.
2028 (scm_boot_guile, invoke_main_func): Simply use scm_with_guile.
2029 (scm_boot_guile_1): Removed.
2030 (scm_i_init_mutex): New.
2031 (really_cleanup_for_exit, cleanup_for_exit): New.
2032 (scm_init_guile_1, scm_i_init_guile): Renamed former to latter.
2033 Moved around some init funcs. Call
2034 scm_init_threads_default_dynamic_state. Register cleanup_for_exit
2035 with atexit.
2036
2037 * hashtab.c (scm_hash_fn_create_handle_x, scm_hash_fn_remove_x):
2038 Use "!scm_is_eq" instead of "!=".
2039
2040 * ge-scmconfig.c, gen-scmconfig.h.in (SCM_I_GSC_USE_COOP_THREADS,
2041 SCM_USE_COOP_THREADS): Removed.
2042
2043 * gc.c (scm_igc): Take care that scm_gc_running_p is properly
2044 maintained. Unlock scm_i_sweep_mutex before running
2045 scm_after_gc_c_hook.
2046 (scm_permanent_object): Allocate outside of critical section.
2047 (cleanup): Removed.
2048
2049 * fluids.h, fluids.c: Reimplemented completely.
2050 (SCM_FLUID_NUM, SCM_FAST_FLUID_REF,
2051 SCM_FAST_FLUID_SET): Reimplemented as functions.
2052 (scm_is_fluid): New.
2053 (scm_i_make_initial_fluids, scm_i_copy_fluids): Removed.
2054 (scm_make_dynamic_state, scm_dynamic_state_p,
2055 scm_is_dynamic_state, scm_current_dynamic_state,
2056 scm_set_current_dynamic_state, scm_frame_current_dynamic_state,
2057 scm_c_with_dynamic_state, scm_with_dynamic_state,
2058 scm_i_make_initial_dynamic_state, scm_fluids_prehistory): New.
2059
2060 * feature.c (progargs_fluid): New.
2061 (scm_program_arguments, scm_set_program_arguments): Use it instead
2062 of scm_progargs.
2063 (scm_init_feature): Allocate it. Also, only add "threads" feature
2064 when SCM_USE_PTHREAD_THREADS is true.
2065
2066 * eval.c (scm_makprom): Use scm_make_recursive_mutex instead of
2067 scm_make_rec_mutex, with all the consequences.
2068 (scm_eval_x, scm_eval): Use scm_frame_begin etc instead of
2069 scm_internal_dynamic_wind. Handle dynamic states as second
2070 argument.
2071
2072 * threads.h, threads.c (scm_internal_select): Renamed to
2073 scm_std_select and discouraged old name.
2074 (scm_thread_sleep, scm_thread_usleep): Likewise, as scm_std_sleep
2075 and scm_std_usleep.
2076 (scm_tc16_fair_mutex, scm_tc16_fair_condvar, SCM_MUTEXP,
2077 SCM_FAIR_MUTEX_P, SCM_MUTEX_DATA, SCM_CONDVARP,
2078 SCM_FAIR_CONDVAR_P, SCM_CONDVAR_DATA, SCM_THREADP,
2079 SCM_THREAD_DATA): Removed.
2080 (SCM_I_IS_THREAD, SCM_I_THREAD_DATA): New.
2081 (scm_i_thread): New.
2082 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
2083 Use scm_assert_smob_type.
2084 (scm_c_scm2thread, scm_thread_join, scm_thread_detach,
2085 scm_thread_self, scm_thread_yield, scm_mutex_init,
2086 scm_mutex_destroy, scm_mutex_trylock, scm_mutex_unlock,
2087 scm_rec_mutex_init, scm_rec_mutex_destroy, scm_make_rec_mutex,
2088 scm_rec_mutex_free, scm_rec_mutex_lock, scm_rec_mutex_trylock,
2089 scm_cond_init, scm_cond_destroy, scm_cond_wait,
2090 scm_cond_timedwait, scm_cond_signal, scm_cond_broadcast,
2091 scm_key_create, scm_key_delete, scm_setspecific, scm_getspecific,
2092 scm_thread_select): Removed. Replaced with scm_i_pthread
2093 functions as appropriate.
2094 (scm_in_guile, scm_outside_guile): Removed.
2095 (scm_t_guile_ticket, scm_leave_guile, scm_enter_guile): Return and
2096 take a ticket.
2097 (scm_with_guile, scm_without_guile, scm_i_with_guile_and_parent):
2098 New.
2099 (scm_i_frame_single_threaded): New.
2100 (scm_init_threads_default_dynamic_state): New.
2101 (scm_i_create_thread): Removed.
2102 (scm_make_fair_mutex, scm_make_fair_condition_variable): Removed.
2103 (scm_make_recursive_mutex): New.
2104 (scm_frame_critical_section): New.
2105 (SCM_CURRENT_THREAD, SCM_I_CURRENT_THREAD): Renamed former to
2106 latter, changed all uses.
2107 (scm_i_dynwinds, scm_i_setdynwinds, scm_i_last_debug_frame,
2108 scm_i_set_last_debug_frame): New, use them instead of scm_root
2109 stuff.
2110 (SCM_THREAD_LOCAL_DATA, SCM_SET_THREAD_LOCAL_DATA,
2111 scm_i_root_state_key,m scm_i_set_thread_data): Removed.
2112 (scm_pthread_mutex_lock, scm_frame_pthread_mutex_lock,
2113 scm_pthread_cond_wait, scm_pthread_cond_timedwait).
2114 (remqueue): Allow the removal of already removed cells. Indicate
2115 whether a real removal has happened.
2116 (scm_thread): Removed, replaced with scm_i_thread.
2117 (make_thread, init_thread_creatant): Removed.
2118 (cur_thread): Removed.
2119 (block_self, unblock_from_queue): New.
2120 (block, timed_block, unblock): Removed.
2121 (guilify_self_1, guilify_self_2, do_thread_exit,
2122 init_thread_key_once, init_thread_key,
2123 scm_i_init_thread_for_guile, get_thread_stack_base,
2124 scm_init_guile): New initialisation method.
2125 (scm_call_with_new_thread, scm_spawn_thread): Use it to simplify
2126 thread creation.
2127 (fair_mutex, fat_mutex, etc, fair_condvar, fat_condvar): Renamed
2128 "fair" to fat and implemented new semantics, including reliable
2129 interruption.
2130 (all_threads): Now a pointer to a scm_i_thread, not a SCM.
2131 (scm_threads_mark_stacks): Explicitly mark handle.
2132 (scm_std_select): Allow interruption by also selecting on the
2133 sleep_pipe.
2134 (scm_i_thread_put_to_sleep): Handle recursive requests for
2135 single-threadedness.
2136 (scm_threads_prehistory, scm_init_threads): Put current thread
2137 into guile mode via guileify_self_1 and guileify_self_2,
2138 respectively.
2139
2140 * fluid.h (SCM_FLUIDP): Deprecated.
2141
2142 * coop-threads.c: Removed.
2143
2144 * continuations.h, continuations.c (scm_with_continuation_barrier,
2145 scm_c_with_continuation_barrier, scm_i_with_continuation_barrier):
2146 New.
2147
2148 * async.h, async.c (scm_i_setup_sleep, scm_i_reset_sleep): New.
2149 (async_mutex): New.
2150 (scm_async_click): Protected with async_mutex. Do not deal with
2151 signal_asyncs, which are gone. Set cdr of handled async cell to
2152 #f.
2153 (scm_i_queue_async_cell): Protected with async_mutex. Interrupt
2154 current sleep.
2155 (scm_system_async_mark_for_thread): Do not use scm_current_thread
2156 since that might not work during early initialization.
2157
2158 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS, SCM_REDEFER_INTS,
2159 SCM_REALLOW_INTS): Deprecated by moving into deprecated.h and
2160 deprecated.c. Replaced all uses with SCM_CRITICAL_SECTION_START
2161 and SCM_CRITICAL_SECTION_END.
2162 (SCM_ENTER_A_SECTION, SCM_EXIT_A_SECTION): Removed. Replaced with
2163 SCM_CRITICAL_SECTION_START/END.
2164
2165 * Makefile.am (modinclude_HEADER): Removed threads-plugin.h.
2166 (libguile_la_SOURCES): Added null-threads.c
2167 (EXTRA_libguile_la_SOURCES): Removed pthread-threads.c and
2168 threads-plugin.c.
2169 * pthread-threads.c, threads-plugin.c, threads-plugin.h: Removed.
2170
2171 * root.h, root.c (scm_tc16_root, SCM_ROOTP, SCM_ROOT_STATE,
2172 scm_root_state, scm_stack_base, scm_save_regs_gc_mark,
2173 scm_errjmp_bad, scm_rootcont, scm_dynwinds, scm_progargs,
2174 scm_last_debug_frame, scm_exitval, scm_cur_inp, scm_outp,
2175 scm_cur_err, scm_cur_loadp, scm_root, scm_set_root,
2176 scm_make_root): Removed or deprecated. Replaced with references
2177 to the current thread, dynamic state, continuation barrier, or
2178 some fluid, as appropriate.
2179 (root_mark, root_print): Removed.
2180 (scm_internal_cwdr): Reimplemented guts with
2181 scm_frame_current_dynamic_state and
2182 scm_i_with_continuation_barrier.
2183 (scm_dynamic_root): Return current continuation barrier.
2184
2185
ad3d5a65
MV
21862005-02-28 Marius Vollmer <mvo@zagadka.de>
2187
2188 * socket.c (scm_setsockopt): Handle IP_ADD_MEMBERSHIP and
2189 IP_DROP_MEMBERSHIP options. Also, reorganized the code a bit for
2190 cleanliness.
2191 (scm_init_socket): Define IP_ADD_MEMBERSHIP and
2192 IP_DROP_MEMBERSHIP.
2193 Thanks to Greg Troxel!
2194
73a90115
MD
21952005-02-27 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2196
2197 * gh.h: Bugfix: Include <libguile.h> outside of the extern "C"
2198 block.
2199
5d2cb3ab
MV
22002005-02-25 Marius Vollmer <mvo@zagadka.de>
2201
2202 * hashtab.c (scm_i_rehash): Remove elements from old bucket vector
2203 so that no two weak alist vectors share a spine.
2204 (scm_hash_fn_create_handle_x): Deal with a possible rehashing
2205 during GC before inserting the new alist cell.
2206
838c4126
MV
22072005-02-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2208
2209 * hashtab.c (scm_i_rehash): Cope with the case that a GC modifies
2210 the hashtable.
2211 (scm_hash_fn_create_handle_x): Likewise.
2212 * vectors.h (SCM_I_SET_WVECT_TYPE): New, for use in scm_i_rehash.
2213
29fed193
MD
22142005-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2215
2216 * unif.c (prototype_to_type): Bugfix: Don't compare prototype to
2217 the prototypical examples mentioned in the old reference manual.
2218 Instead keep the old semantics of dispatching on type. (Yes, this
2219 is extremely ugly, but the whole point of keeping the deprecated
2220 interface is not to break old code.)
2221
9cc49060
MD
22222005-02-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2223
2224 * deprecated.h (SCM_ARRAY_DIMS): Rename scm_i_attay_dims -->
2225 scm_i_array_dims.
2226
8447f463
KR
22272005-01-28 Kevin Ryde <user42@zip.com.au>
2228
2229 * numbers.c (scm_ash): Rewrite using shifts, much faster than
2230 integer-expt and multiply/divide. Inexacts and fractions no longer
2231 supported (they happened to work before for left shifts, but not
2232 right). Don't really need inexacts and fractions, since ash is
2233 documented as a "bitwise operation", and all the rest of those only
2234 take exact integers.
2235
1367aa5e
HWN
22362005-01-27 Han-Wen Nienhuys <hanwen@xs4all.nl>
2237
856fca7e
HWN
2238 * gc-card.c (scm_i_card_statistics): map structs, closures and
2239 subrs to one tag.
2240
1367aa5e 2241 * gc.c (s_scm_gc_live_object_stats): return alist, not hashtable.
856fca7e 2242 (tag_table_to_type_alist): ignore unknown types.
1367aa5e
HWN
2243
2244 * gc-segment.c (scm_i_all_segments_statistics): new function.
2245 (scm_i_heap_segment_statistics): new function
2246
2247 * gc.c (s_scm_gc_live_object_stats): new GUILE callable: return
2248 statistics on the number of live objects of each type.
2249
2250 * gc-card.c (scm_i_tag_name): new function.
2251 (scm_i_card_statistics): new function.
2252
333db3b8
KR
22532005-01-24 Kevin Ryde <user42@zip.com.au>
2254
2255 * posix.c (scm_setlocale): Force errno=EINVAL for an error, since
2256 POSIX and C99 don't document errno being set. Reported by Bruno
2257 Haible.
2258 (scm_flock): Update docstring from manual.
2259
8447f463
KR
2260 * random.c (scm_i_init_rstate): Compare w to -1 not 0xffffffffUL, now
2261 that it's an scm_t_int32. Otherwise gcc 3.4 says it's always false on
2262 a 64-bit system.
2263
2264 * scmsigs.c (scm_sigaction_for_thread): Use scm_to_long for
2265 sa_handler, needs to be a long on 64-bit systems where int is only 32
2266 bits.
2267
88f59e53
MV
22682005-01-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2269
0eeb2611
MV
2270 * environments.c (obarray_enter, obarray_replace): Call
2271 SCM_HASHTABLE_INCREMENT when adding a new entry.
2272
88f59e53
MV
2273 * objects.c: Include goops.h for the scm_class_of prototype.
2274
2275 * hashtab.c (hashtable_size, HASHTABLE_SIZE_N): Restrict hashtable
2276 sizes to be smaller than the maximum lengths of vectors.
2277
219b2868
MV
22782005-01-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2279
2280 * ports.c, smob.c: Include "libguile/goops.h".
2281
2282 * objects.h, objects.c, goops.c, goops.h (scm_class_boolean,
2283 scm_class_char, scm_class_pair, scm_class_procedure,
2284 scm_class_string, scm_class_symbol,
2285 scm_class_procedure_with_setter, scm_class_primitive_generic,
2286 scm_class_vector, scm_class_null, scm_class_real,
2287 scm_class_complex, scm_class_integer, scm_class_fraction,
2288 scm_class_unknown, scm_port_class, scm_smob_class,
2289 scm_no_applicable_method, scm_class_of): Moved from objects to
2290 goops since they are only useable once goops has been loaded.
2291 (scm_classes_initialized): Removed.
2292 (scm_class_of): Do not check it.
2293 (create_standard_classes): Do not set it.
2294
009c6b9c
MV
22952005-01-17 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2296
50472546
MV
2297 * objects.h, objects.c (scm_classes_initialized): New.
2298 (scm_class_of): Signal error when scm_classes_initialized is zero.
2299 * goops.c (create_standard_classes): Set scm_classes_initialized
2300 to one.
2301
009c6b9c
MV
2302 * random.c (scm_random_solid_sphere_x): Use
2303 scm_c_generalized_vector_length instead of
2304 scm_uniform_vector_length.
2305
7719cbe9
MV
23062005-01-16 Marius Vollmer <mvo@zagadka.de>
2307
2308 * script.c (scm_compile_shell_switches): Removed debugging output.
2309
1ec44fed
KR
23102005-01-15 Kevin Ryde <user42@zip.com.au>
2311
2312 * numbers.c (scm_logtest, scm_logbit_p, scm_integer_expt): Update
2313 docstrings from manual.
2314 * random.c (scm_random_solid_sphere_x): Update docstring from manual.
2315
6e4cd850
MV
23162005-01-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2317
0b5a0521
MV
2318 * random.c: Don't check for definedness of SCM_HAVE_T_INT64, check
2319 its value.
2320
2321 Implement u64 and s64 uniform numeric vectors with bignums when
2322 scm_t_uint64 and scm_t_int64 are not available.
2323
2324 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_take_u64vector,
2325 scm_array_handle_u64_elements,
2326 scm_array_handle_u64_writable_elements, scm_u64vector_elements,
2327 scm_u64vector_writable_elements): Do not define when scm_t_uint64
2328 is not available.
2329 (scm_take_s64vector, scm_array_handle_s64_elements,
2330 scm_array_handle_s64_writable_elements, scm_s64vector_elements,
2331 scm_s64vector_writable_elements): Likewise for scm_t_int64.
2332 (uvec_sizes, uvec_print, uvec_equalp): Use SCM bignums when
2333 scm_t_int64/scm_t_uint64 are not available.
2334 (uvec_mark): New, to mark the bignums.
2335 (alloc_uvec): Initialize bignums.
2336 (uvec_fast_ref): Return bignums directly.
2337 (scm_uint64_min, scm_uint64_max, scm_int64_min, scm_int64_max,
2338 assert_exact_integer): New.
2339 (uvec_fast_set): Use them to validate the bignums.
2340 (scm_init_srfi_4): Set mark function of smob when needed.
2341 Initialize scm_uint64_min, scm_uint64_max, scm_int64_min,
2342 scm_int64_max.
2343
6e4cd850
MV
2344 Recognize 1.4 -e syntax.
2345
2346 * script.c (sym_at, sym_atat, sym_main, all_symbols): New.
2347 (scm_compile_shell_switches): Use them to recognize and convert
2348 1.4 "-e" syntax.
2349
3b698afe
MV
23502005-01-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2351
2352 * deprecated.h, deprecated.c, strings.h, strings.c: Turn all
2353 deprecated features that once were macros but are now functions
2354 back into macros.
2355
d6dc83a9
MV
23562005-01-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2357
49086691
MV
2358 * eval.c, debug.h (SCM_WARN_DEPRECATED): New debug option.
2359 * deprecation.c (scm_issue_deprecation_warning,
2360 scm_c_issue_deprecation_warning_fmt): Use it.
2361 (mode): Removed.
2362 (print_summary): New.
2363 (scm_init_deprecation): Initialize SCM_WARN_DEPRECATED instead of
2364 mode.
2365
d6dc83a9
MV
2366 Deprecated SCM_ARRAY* macros.
2367
2368 * unif.h, unif.c, ramap.c, vectors.c, srfi-4.c, srfi-4.i.c
2369 (SCM_ARRAYP, SCM_I_ARRAYP): Renamed former to latter internal
2370 version. Changed all uses.
2371 (scm_tc16_array, scm_i_tc16_array,
2372 scm_tc16_enclosed_array, scm_i_tc16_enclosed_array,
2373 SCM_ARRAY_FLAG_CONTIGUOUS, SCM_I_ARRAY_FLAG_CONTIGUOUS,
2374 SCM_ENCLOSE_ARRAYP, SCM_I_ENCLOSE_ARRAYP,
2375 SCM_ARRAY_NDIM, SCM_I_ARRAY_NDIM,
2376 SCM_ARRAY_CONTP, SCM_I_ARRAY_CONTP,
2377 SCM_ARRAY_MEM, SCM_I_ARRAY_MEM,
2378 SCM_ARRAY_V, SCM_I_ARRAY_V,
2379 SCM_ARRAY_BASE, SCM_I_ARRAY_BASE,
2380 SCM_ARRAY_DIMS, SCM_I_ARRAY_DIMS,
2381 scm_t_array, scm_i_t_array): Likewise.
2382 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
2383 Moved from unif.h to unif.c.
2384 (scm_c_array_rank): New.
2385 (scm_array_rank): Reimplement using it.
2386
2387 * deprecated.h, deprecated.c (SCM_ARRAYP, SCM_ARRAY_NDIM,
2388 SCM_ARRAY_CONTP, SCM_ARRAY_MEM, SCM_ARRAY_V, SCM_ARRAY_BASE,
2389 SCM_ARRAY_DIMS, scm_t_array): New deprecated versions.
2390
dc91d8de
MV
23912005-01-11 Marius Vollmer <mvo@zagadka.de>
2392
2393 * ramap.c: Replace uses of scm_make_ra with scm_i_make_ra.
2394 (GVREF, GVSET): New abbreviations. Use them everywhere instead of
2395 scm_c_generalized_vector_ref and scm_cvref, and
2396 scm_c_generalized_vector_set_x, respectively.
2397 (RVREF, IVDEP, BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
2398 UNARY_ELTS_CODE, UNARY_PAIR_ELTS_CODE): Removed since unused.
2399
2400 * unif.h, unif.c (indices_to_pos, scm_array_handle_pos): Renamed
2401 former to latter and made public. Changed all uses.
2402 (scm_i_make_ra): Made public, changed tag param to enclosed flag.
2403 (scm_make_ra): Deprecated, changed all uses to scm_i_make_ra.
2404 (scm_i_shap2ra): New internal version of scm_shap2ra.
2405 (scm_shap2ra): Deprecated, changed all uses to scm_i_shap2ra.
2406 (scm_i_ra_set_contp): New internal version of scm_ra_set_contp.
2407 (scm_ra_set_contp): Deprecated, changed all uses to
2408 scm_i_ra_set_contp.
2409 (scm_cvref, scm_aind, scm_raprin1): Deprecated.
2410
66d33784
MV
24112005-01-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2412
b06f099d
MV
2413 * eval.c (scm_eval): Added example to docstring. Thanks to Issac
2414 Trotts!
2415
5d35ad81
MV
2416 * unif.c (scm_list_to_typed_array): Allow the specification of the
2417 upper bound as well. This is needed for empty arrays.
2418 (l2ra): Give needed number of elements in error message.
2419 (scm_i_print_array): Print length information for arrays that need
2420 it.
2421 (scm_i_read_array): Parse it.
2422
66d33784
MV
2423 * deprecated.h, deprecated.c (SCM_CHARS, SCM_UCHARS, SCM_LENGTH,
2424 scm_i_object_chars, scm_i_object_length): Brought back from the
2425 dead.
2426
d7d7d401
MV
24272005-01-10 Marius Vollmer <mvo@zagadka.de>
2428
74c58fce
MV
2429 * ramap.c: Replaced single-index uses of scm_array_set_x with
2430 scm_c_generalized_vector_set_x.
2431
d7d7d401
MV
2432 * unif.c (scm_array_rank, scm_array_dimensions,
2433 scm_shared_array_offset, scm_shared_array_increments,
2434 scm_array_ref, scm_array_set_x): Use scm_t_array_handle operations
2435 to simplify code and make it more general.
2436 (scm_shared_array_root): Work with all kinds of arrays, including
2437 naked vectors.
2438 (indices_to_pos): New.
74c58fce
MV
2439 (scm_make_shared_array): Use it instead of scm_aind; use handle
2440 for oldra.
2441
4475d3fe
KR
24422005-01-10 Kevin Ryde <user42@zip.com.au>
2443
2444 * posix.c (scm_mkstemp): Update docstring from manual.
2445
d3ddc95e
KR
2446 * stime.c (scm_mktime): Missing default errno=EINVAL from prev change.
2447
8c8491f5
MV
24482005-01-09 Marius Vollmer <mvo@zagadka.de>
2449
b89ecc6f
MV
2450 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_i_uniform_vector_ref_proc,
2451 scm_i_uniform_vector_set_proc): New.
2452 (u8ref, u8set, s8ref, s8set, etc): New.
2453 (uvec_reffers, uvec_setters): New.
2454 (uvec_to_list): Use generic scm_array_handle_ref instead of
2455 uvec_fast_ref since scm_array_handle_ref should be faster now.
8cb01d9f
MV
2456 (coerce_to_uvec, scm_c_uniform_vector_ref,
2457 scm_c_uniform_vector_set_x): Likewise.
b89ecc6f
MV
2458
2459 * unif.h, unif.c, inline.h (scm_i_t_array_ref, scm_i_t_array_set):
2460 New.
2461 (scm_t_array_handle): Added ref, set, elements and
2462 writable_elements for fast inline operation of
2463 scm_array_handle_ref and scm_array_handle_set.
2464 (scm_array_handle_ref, scm_array_handle_set): Moved to inline.h
2465 and replaced with inline code that simply calls the ref/set
2466 members of the handle.
2467 (enclosed_ref, vector_ref, string_ref, bitvector_ref, memoize_ref,
2468 enclosed_set, vector_set, string_set, bitvector_set, memoize_set):
2469 New.
2470 (scm_array_handle_get): Initialize ref/set fields to memoize_ref
2471 and memoize_set.
2472 (scm_bitvector_fill_x, scm_bitvector_to_list, scm_bit_count,
2473 scm_bit_position, scm_bit_set_star_x, scm_bit_count_star,
2474 scm_bit_invert_x): Correctly multiply index with increment in the
2475 general case.
2476
8c8491f5
MV
2477 * unif.c (scm_array_handle_set): Correctly execute only one
2478 alternative. D'Oh!
2479 (scm_list_to_typed_array, l2ra): Use scm_t_array_handle to fill
2480 the array; this covers all cases with much simpler code.
2481
2482 * srfi-4.c (scm_uniform_element_size): Deprecated implementation
2483 as well.
2484
cd5d55c7
MV
24852005-01-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2486
2487 * srfi-4.c (uvec_type): New.
2488 (uvec_to_list, uvec_ref, uvec_set_x, scm_c_uniform_vector_ref,
2489 scm_c_uniform_vector_x): Use it to get concrete type.
2490
2491 * unif.h (scm_t_array_dim): Changed type of members to ssize_t, to
2492 fit the docs.
2493
2494 * unif.c (ra2l): Handle zero rank arrays.
2495 (scm_i_print_array): Print zero rank arrays specially.
2496 (tag_to_type): Return #t for an empty tag, not the empty symbol.
2497 (scm_i_read_array): Allow zero rank arrays.
2498
a4aad74e
MV
24992005-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2500
2501 * hashtab.h, hashtab.c (SCM_HASHTAB_BUCKET_LOC): Removed.
2502 (scan_weak_hashtables): Rewrote its use with SCM_HASHTAB_BUCKET
2503 and SCM_SET_HASHTAB_BUCKET.
2504
2505 * print.h, print.c (scm_print_state, SCM_PRINT_STATE_LAYOUT):
2506 Removed ref_stack field.
2507 (PSTATE_STACK_REF, PSTATE_STACK_SET): New, for accessing the stack
2508 of a print state. Use them everywhere instead of ref_stack.
2509
3a40d5e1
MV
2510 * srfi-4.h (scm_uniform_element_size): Deprecated for real.
2511
a4aad74e
MV
2512 * srfi-4.c: Include deprecation.h.
2513
2514 * vectors.h, vectors.c, unif.h, unif.c, deprecated.h,
2515 deprecated.c, eq.c
2516 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Removed.
2517 (scm_vector_elements, scm_vector_writable_elements,
2518 scm_generalized_vector_get_handle): Moved to vectors.[hc] from
2519 unif.[hc].
2520 (SCM_SIMPLE_VECTOR_LOC): Removed.
2521 (SCM_VECTOR_MAX_LENGTH, SCM_VECTOR_LENGTH, SCM_VELTS,
2522 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET,
2523 scm_vector_equal_p): Moved from vectors.[hc] to deprecated.[hc].
2524 (scm_vector_equal_p, scm_i_vector_equal_p): Renamed former to
2525 latter. Changed use in eq.c.
2526
f01fe441
MV
25272005-01-07 Marius Vollmer <mvo@zagadka.de>
2528
2529 Make the uniform vector routines also deal with one dimensional
2530 arrays.
2531
2532 * srfi-4.c (SCM_IS_UVEC): New, use it instead of
2533 SCM_SMOB_PREDICATE in this file.
2534 (is_uvec): Also recognize one-dimensional uniform numeric arrays
2535 of the right type.
2536 (scm_is_uniform_vector): Likewise.
2537 (uvec_fast_ref): Made BASE param const.
2538 (uvec_writable_elements, uvec_elements): New.
2539 (uvec_to_list, uvec_ref, uvec_set_x, uvec_length,
2540 scm_c_uniform_vector_length, scm_c_uniform_vector_ref,
2541 scm_c_uniform_set_x): Use them to also deal with one-dimensional
2542 arrays.
2543 (scm_uniform_vector_ref, scm_uniform_vector_set_x): Deprecate old
2544 argument convention.
2545 (scm_uniform_vector_to_list): Let uvec_to_list do all the
2546 checking.
2547 (scm_uniform_vector_length): Use uvec_length.
2548
2aaf5726
MV
25492005-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2550
2551 * srfi-4.h, srfi-4.c (scm_c_uniform_vector_element_size,
2552 scm_c_uniform_vector_size): Removed.
2553 (scm_array_handle_uniform_element_size): New.
2554
2555
2556 * unif.h (scm_array_handle_ref, scm_array_handle_set): Changed
2557 type of POS parameter to be signed, positions can be negative.
2558 (scm_array_handle_release): New, changed all uses of
2559 scm_t_array_handle to properly call it.
2560 (scm_vector_get_handle, scm_generalized_vector_get_handle):
2561 Renamed former to latter, changed all uses.
2562
34ae52fc
MV
25632005-01-05 Marius Vollmer <mvo@zagadka.de>
2564
2565 Updated bitvector routines to also use scm_t_array_handles.
2566
2567 * unif.h (scm_bitvector_elements,
2568 scm_bitvector_writable_elements): Use a scm_t_array_handle and
2569 deliver offset, length and increment to caller. Changed all uses.
2570 (scm_bitvector_release_elements,
2571 scm_frame_bitvector_release_elements,
2572 scm_bitvector_release_writable_elements,
2573 scm_frame_bitvector_release_writable_elements): Removed.
2574 (scm_array_handle_bit_elements,
2575 scm_array_handle_bit_writable_elements,
2576 scm_array_handle_bit_elements_offset): New.
2577 (scm_make_typed_array): The special value for non-initialized
2578 arrays is now SCM_UNSPECIFIED. The old special value SCM_BOOL_F
2579 was a valid value to fill bitvectors with, so it can't really be
2580 specialed out.
2581
c4cb7628
KR
25822005-01-04 Kevin Ryde <user42@zip.com.au>
2583
2584 * stime.c (scm_strftime): Free t.tm_zone produced by bdtime2c.
2585 Reported by Bill Schottstaedt.
2586
0356881d
MV
25872005-01-02 Marius Vollmer <mvo@zagadka.de>
2588
2589 * sort.c (quicksort): Added INC parameter for non-contigous
2590 vectors.
2591 (quicksort1): New, for contigous vectors. Both functions are
2592 generated from the same code by including "quicksort.i.c".
2593 (scm_restricted_vector_sort_x): Call one of quicksort and
2594 quicksort1, depending on increment of vector.
2595 (scm_sort): Simply call scm_sort_x on a copy of the list or
2596 vector.
2597 (scm_merge_vector_x, scm_merge_vector_step): Changed indices to
2598 size_t, added inc parameter.
2599 (scm_stable_sort_x): Allocate temporary storage as Scheme vector
2600 so that it doesn't leak.
2601 (scm_stable_sort): Simply call scm_stable_sort_x on a copy of the
2602 list or vector.
2603
2604 * ramap.c (scm_array_map_x): Do not try to convert fill value
2605 before filling, any necessary conversion is done while storing.
2606
2607 * gc-card.c (scm_i_sweep_card): Call scm_i_vector_free instead of
2608 doing it inline.
2609
2610 * hashtab.c, hashtab.h (SCM_HASHTABLE_BUCKETS): Removed.
2611 (SCM_HASHTABLE_BUCKET, SCM_HASHTABLE_BUCKET_LOC): New. Replaced
2612 all uses of SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
2613
2614 * tags.h, weaks.c, vports.c, hashtab.c, convert.c, sort.c,
2615 convert.c, convert.h, convert.i.c, deprecated.c, environments.c,
2616 eval.c, filesys.c, fluids.c, gc-mark.c, gh.h, gh_data.c, goops.c,
2617 hash.c, init.c, libguile_la-arrays.loT, modules.c, net_db.c,
2618 objects.c, ports.c, posix.c, print.c, random.c, read.c,
2619 regex-posix.c, scmsigs.c, socket.c, stime.c, symbols.c: Use new
2620 vector elements API or simple vector API, as appropriate. Removed
2621 SCM_HAVE_ARRAYS ifdefery. Replaced all uses of
2622 SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
2623
2624 * srfi-4.h, srfi-4.c,
2625 srfi-4.i.c (scm_array_handle_uniform_elements,
2626 scm_array_handle_uniform_writable_elements,
2627 scm_uniform_vector_elements,
2628 scm_uniform_vector_writable_elements):
2629 (scm_<foo>vector_elements, scm_<foo>vector_writable_elements): Use
2630 scm_t_array_handle, deliver length and increment.
2631 (scm_array_handle_<foo>_elements,
2632 scm_array_handle_<foo>_writable_elements): New.
2633
2634 * gen-scmconfig.h.in (SCM_I_GSC_HAVE_ARRAYS): Removed.
2635 * gen-scmconfig.c: Hard code SCM_HAVE_ARRAYS to "1".
2636
2637 * unif.h, unif.c (scm_t_array_handle, scm_array_get_handle,
2638 scm_array_handle_rank, scm_array_handle_dims, scm_array_handle_ref
2639 scm_array_handle_set, scm_array_handle_elements
2640 scm_array_handle_writable_elements, scm_vector_get_handle): New.
2641 (scm_make_uve, scm_array_prototype, scm_list_to_uniform_array,
2642 scm_dimensions_to_uniform_array): Deprecated for real.
2643 (scm_array_p, scm_i_array_p): Use latter for SCM_DEFINE since
2644 snarfing wont allow a mismatch between C and Scheme arglists.
2645 (scm_make_shared_array, scm_enclose_array): Correctly use
2646 scm_c_generalized_vector_length instead of
2647 scm_uniform_vector_length.
2648
2649 * validate.h (SCM_VALIDATE_VECTOR,
2650 SCM_VALIDATE_VECTOR_OR_DVECTOR): use scm_is_simple_vector instead
2651 of SCM_VECTORP.
2652
2653 * weaks.h, weaks.c: Use new internal weak vector API from
2654 vectors.h.
2655
2656 * Makefile.am (libguile_la_SOURCES, DOT_X_FILES, DOT_DOC_FILES,
2657 EXTRA_libguile_la_SOURCES): Changed ramap.c and unif.c from being
2658 'extra' to being regular sources.
2659 (noinst_HEADERS): Added quicksort.i.c.
2660 * quicksort.i.c: New file.
2661
2662 * vectors.h, vector.c (SCM_VECTORP, SCM_VECTOR_LENGTH, SCM_VELTS,
2663 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET): Deprecated
2664 and reimplemented. Replaced all uses with scm_vector_elements,
2665 scm_vector_writable_elements, or SCM_SIMPLE_VECTOR_*, as
2666 appropriate.
2667 (scm_is_simple_vector, SCM_SIMPLE_VECTOR_LENGTH,
2668 SCM_SIMPLE_VECTOR_REF, SCM_SIMPLE_VECTOR_SET,
2669 SCM_SIMPLE_VECTOR_LOC): New.
2670 (SCM_VECTOR_BASE, SCM_SET_VECTOR_BASE, SCM_VECTOR_MAX_LENGTH,
2671 SCM_MAKE_VECTOR_TAG, SCM_SET_VECTOR_LENGTH,
2672 SCM_VELTS_AS_STACKITEMS, SCM_SETVELTS, SCM_GC_WRITABLE_VELTS):
2673 Removed.
2674 (scm_vector_copy): New.
2675 (scm_vector_elements, scm_vector_writable_elements): Use
2676 scm_t_array_handle, deliver length and increment. Moved to
2677 unif.h. Changed all uses.
2678 (scm_vector_release_elements,
2679 scm_vector_release_writable_elements,
2680 (scm_frame_vector_release_elements,
2681 scm_frame_vector_release_writable_elements): Removed.
2682 (SCM_I_IS_VECTOR, SCM_I_VECTOR_ELTS, SCM_I_VECTOR_WELTS,
2683 SCM_I_VECTOR_LENGTH, scm_i_vector_free): New internal API.
2684 (SCM_I_WVECTP SCM_I_WVECT_LENGTH SCM_I_WVECT_VELTS
2685 SCM_I_WVECT_GC_WVELTS SCM_I_WVECT_TYPE SCM_I_WVECT_GC_CHAIN
2686 SCM_I_SET_WVECT_GC_CHAIN, scm_i_allocate_weak_vector): New, for
2687 weak vectors.
2688
0336d18b
MV
26892004-12-29 Marius Vollmer <mvo@zagadka.de>
2690
2691 No longer use creators to specify the type of an array. Creators
2692 expose the fact that arrays are wrapped around vectors, but that
2693 might change.
2694
2695 * srfi-4.h (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector,
2696 scm_i_proc_make_u16vector, scm_i_proc_make_s16vector,
2697 scm_i_proc_make_u32vector, scm_i_proc_make_s32vector,
2698 scm_i_proc_make_u64vector, scm_i_proc_make_s64vector,
2699 scm_i_proc_make_f32vector, scm_i_proc_make_f64vector,
2700 scm_i_proc_make_c32vector, scm_i_proc_make_c64vector,
2701 uvec_proc_vars): Removed.
2702 (scm_i_generalized_vector_creator): Removed.
2703 (scm_i_generalized_vector_type): New.
2704
2705 * unif.h, unif.c (scm_typed_array_p, scm_make_array,
2706 scm_make_typed_array, scm_array_type, scm_list_to_array,
2707 scm_list_to_typed_array, scm_is_array, scm_is_typed_array): New.
2708 (scm_array_creator): Removed.
2709 (scm_array_p): Deprecated second PROT argument.
2710 (scm_dimensions_to_uniform_array, scm_list_to_uniform_array):
2711 Deprecated, reimplemented in terms of scm_make_typed_array and
2712 scm_list_to_typed_array.
2713 (scm_i_proc_make_vector, scm_i_proc_make_string,
2714 scm_i_proc_make_bitvector): Removed.
2715 (type_creator_table, init_type_creator_table, type_to_creator,
2716 make_typed_vector): New.
2717 (scm_i_convert_old_prototype): Removed.
2718 (prototype_to_type): New.
2719 (scm_make_uve): Deprecated, reimplemented using make_typed_vector.
2720 (scm_array_dimensions): Use scm_list_1 instead of scm_cons for
2721 minor added clarity.
2722 (scm_make_shared_array, scm_ra2contig): Use make_typed_vector
2723 instead of scm_make_uve.
2724 (tag_creator_table, scm_i_tag_to_creator): Removed.
2725 (tag_to_type): New.
2726 (scm_i_read_array): Use scm_list_to_typed_array instead of
2727 scm_list_to_uniform_array.
2728
277e8472
MV
27292004-12-27 Marius Vollmer <mvo@zagadka.de>
2730
32b26202
MV
2731 * unif.h, unif.c (scm_bitvector_elements): Made return value "const".
2732 (scm_bitvector_writable_elements): New.
2733 (scm_bitvector_release, scm_bitvector_release_elements):
2734 Renamed former to latter. Added explicit call to
2735 scm_remember_upto_here_1.
2736 (scm_frame_bitvector_release,
2737 scm_frame_bitvector_release_elements): Renamed former to latter.
2738 (scm_bitvector_release_writable_elements,
2739 scm_bitvector_release_writable_elements): New.
2740 Changed all uses as required by the changes above.
2741
2742 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_uniform_vector_elements,
2743 scm_u8vector_elements, etc): Made return value "const".
2744 (scm_uniform_vector_writable_elements,
2745 scm_u8vector_writable_elements, etc): New.
2746 (scm_uniform_vector_release, scm_uniform_vector_release_elements):
2747 Renamed former to latter. Added explicit call to
2748 scm_remember_upto_here_1.
2749 (scm_frame_uniform_vector_release,
2750 scm_frame_uniform_vector_release_elements): Renamed former to latter.
2751 (scm_uniform_vector_release_writable_elements,
2752 scm_frame_uniform_vector_release_writable_elements): New. Takes
2753 crown of longest identifier yet.
2754 Changed all uses as required by the changes above.
2755
277e8472
MV
2756 * vectors.h, vectors.c (scm_c_vector_set_x): Make return type
2757 void.
2758 (scm_is_vector, scm_vector_p, scm_vector_length,
2759 scm_c_vector_length, scm_vector_ref, scm_c_vector_ref,
2760 scm_vector_set_x, scm_c_vector_set_x, scm_vector_to_list,
2761 scm_vector_move_left_x, scm_vector_move_right_x,
2762 scm_vector_fill_x): handle one-dimensional arrays.
32b26202
MV
2763 (scm_vector_elements, scm_vector_release_elements,
2764 scm_vector_frame_release_elements, scm_vector_writable_elements,
2765 scm_vector_release_writable_elements,
2766 scm_vector_frame_release_writable_elements): New.
2767 (scm_list_to_vector, scm_vector_to_list, scm_vector_fill,
2768 scm_vector_move_left_x, scm_vector_move_right_x): Use them.
277e8472
MV
2769
2770 * ramap.c (scm_ramapc, scm_raeql): Use
2771 scm_c_generalized_vector_length instead of
2772 scm_uniform_vector_length.
2773 (scm_ramap, rafe): Use scm_c_vector_ref instead of SCM_VELTS. use
2774 scm_c_generalized_vector_ref instead of scm_uniform_vector_ref.
2775
49c51610
MV
27762004-12-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2777
2778 * continuations.h, continuations.c (scm_t_contregs): New 'offset'
2779 member for relocating debug frames.
2780 (scm_make_continuation): Set it.
2781
2782 * stacks.c (read_frame, read_frames, scm_make_stack,
2783 scm_last_stack_frame, scm_stack_id): Use the new 'offset' member
2784 of continuations instead of calculating the offset ourselves.
2785 Relocate 'vect' member of scm_t_debug_frame.
2786
3b2ee265
KR
27872004-12-16 Kevin Ryde <user42@zip.com.au>
2788
2789 * ramap.c (scm_array_map_x): Check for at least one source argument.
2790
e120686a
KR
27912004-12-14 Kevin Ryde <user42@zip.com.au>
2792
2793 * srfi-13.c (string-any, string-every): Use a scheme wrapper around
2794 the C code so for the final call to the predicate procedure is a tail
2795 call, per SRFI-13 spec.
2796
680b5237
KR
27972004-12-10 Kevin Ryde <user42@zip.com.au>
2798
2799 * eq.c (scm_eq_p, scm_eqv_p, scm_equal_p): Update docstrings from
2800 recent revision to the reference manual.
2801
2802 * numbers.c (scm_modulo): Amend fixme comment about negative divisor
2803 with "%", C99 says it's well-defined.
2804
2805 * socket.c (scm_from_ipv6): Just use mpz_import. Don't bother trying
2806 to fit scm_from_ulong_long, since that uses mpz_import anyway. Don't
2807 bother trying to fit scm_from_ulong, not really worth the trouble if
2808 addresses are more than 4 bytes usually.
2809
446d320c
KR
28102004-11-30 Kevin Ryde <user42@zip.com.au>
2811
2812 * gc_os_dep.c (NetBSD): Test __m68k__ and __arm__ as well as m68k and
2813 arm32. Reported by Greg Troxel.
2814
f2654760
MV
28152004-11-14 mvo <mvo@zagadka.de>
2816
2817 * unif.c, unif.h (scm_i_cvref): Made non-static for ramap.c.
2818
2819 * Makefile.am (INCLUDES): It is "@LTDLINCL@", not "@LTDLINC@".
2820
d550e35f
MV
28212004-11-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2822
2823 Enclosed arrays are now their own smob. This has been done to
2824 make the code more explicit about them and to prepare for the time
f2654760
MV
2825 when generalized vectors include arbitrary one-dimensional
2826 arrays. (Uptonow, enclosed arrays have been recognized by their
2827 use of an array as their storage 'vector'. When all generalized
2828 vectors are allowed as storage, including one-dimensional arrays,
2829 this will no longer work.)
d550e35f
MV
2830
2831 * unif.h, unif.c: (scm_tc16_enclosed_array, SCM_ENCLOSED_ARRAYP):
2832 New.
2833 (exactly_one_third, singp): Removed.
2834 (scm_array_p, scm_array_dimensions, scm_shared_array_root,
2835 scm_shared_array_offset, scm_shared_array_increments): Handle
2836 enclosed arrays explicitely.
2837 (scm_array_rank): Likewise. Also, do not return zero for
2838 non-arrays, signal an error instead since arrays with rank zero do
2839 exist.
2840 (scm_i_make_ra): New, for specifying the tag of the new array.
2841 (scm_make_enclosed_array): Use it.
2842 (scm_make_ra): Reimplemented in terms of scm_i_make_ra.
2843 (scm_make_shared_array): Use scm_c_generalized_vector_length
2844 instead of scm_uniform_vector_length.
2845 (scm_array_in_bounds_p): Rewritten to be much cleaner.
2846 (scm_i_cvref): New, doing the job of scm_cvref.
2847 (scm_cvref): Use scm_i_cvref.
2848 (scm_array_ref): Do not accept non-arrays when no indices are
2849 given. Use scm_i_cvref to do the actual access.
2850 ("uniform-array-set1"): Do not register.
2851 (scm_array_set_x, scm_uniform_array_read_x,
2852 scm_uniform_array_write): Handle enclosed arrays explicitly.
2853 (ra2l): Use scm_i_cvref instead of scm_uniform_vector_ref to also
2854 handle enclosed arrays.
2855 (scm_array_to_list): Handle enclosed arrays explicitly.
2856 (rapr1): Removed.
2857 (scm_i_print_array_dimension): Use scm_i_cvref to also handle
2858 enclosed arrays.
2859 (scm_i_print_enclosed_array): New.
2860 (tag_proto_table, tag_creator_table): Renamed former to latter.
2861 Added "a" and "b" for strings and bitvectors, resp.
2862 (scm_i_tag_to_prototype, scm_i_tag_to_creator): Renamed former to
2863 latter. Tag "a" is in the table now, no need to handle it as a
2864 legacy tag.
2865 (scm_raprin1): Just call scm_iprin1.
2866 (scm_array_creator, scm_array_prototype): Handle enclosed arrays
2867 explicitly.
2868 (scm_init_unif): Initialize scm_tc16_enclosed_array smob.
2869 Use scm_i_print_array as printer for scm_tc16_array.
2870
2ed34885
MV
28712004-11-10 Marius Vollmer <mvo@zagadka.de>
2872
823086c1
MV
2873 * ramap.c (cind): Changed second arg to be pointer to long instead
2874 of uniform vector.
2875 (scm_ramapc): Allocate index vector with scm_malloc and not as
d550e35f 2876 uniform vector. Wrap it in a frame so that it gets properly freed.
823086c1
MV
2877 (scm_array_index_map_x): Likewise.
2878
2879 * unif.c: Changed all uses of scm_array_prototype to
2880 scm_array_creator. (scm_i_get_old_prototype): Signal error when no
2881 prototype is known.
2882 (scm_uniform_array_read_x, scm_uniform_array_write): Reimplemented
2883 in terms of scm_uniform_vector_read_x and
2884 scm_uniform_vector_write, respectively. Strings and
2885 bitvector support has been dropped.
2886
2ed34885
MV
2887 * srfi-4.h, srfi-4.c: Do not include <libguile.h>, include the
2888 needed files directly. Include config.h, <unistd.h> and <io.h>
2889 when available.
2890 (scm_uniform_vector_read_x, scm_uniform_vector_write): New.
2891
2c72f253
MV
28922004-11-09 Marius Vollmer <mvo@zagadka.de>
2893
2894 * gh_data.c (gh_uniform_vector_length): Properly use
2895 scm_c_uniform_vector_length instead of scm_uniform_vector_length.
2896
3cc0a296
MV
28972004-11-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2898
2899 * srfi-4.h (scm_c_uniform_vector_ref, scm_c_uniform_vector_set_x):
2900 New.
2901 (scm_i_uniform_vector_creator): Removed.
2902 (scm_i_generalized_vector_creator): New.
2903 (scm_uniform_vector_length, scm_uniform_element_size): Do not
2904 handle generalized vectors, only uniform numeric vectors.
2905 (alloc_uvec): Do length check here...
2906 (make_uvec): ...but not here.
2907 (coerce_to_uvec): Use new generalized vector functions to handle
2908 all kinds of vectors in one go.
2909
2910 * tags.h (scm_tc7_bvect): Renamed to scm_tc7_unused7, renaming the
2911 remaining scm_tc7_unused tags to get a neatly ordered list.
2912
2913 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c: Do no
2914 longer handle scm_tc7_bvect bitvectors.
2915
2916 * ramap.c: Use the new generalized vector functions to handle all
2917 vector like things.
2918
2919 * vectors.h, vectors.c (scm_is_vector, scm_c_vector_length,
2920 scm_c_vector_ref, scm_c_vector_set_x, scm_generalized_vector_p,
2921 scm_generalized_vector_length, scm_generalized_vector_ref,
2922 scm_generalized_vector_set_x, scm_generalized_vector_to_list,
2923 scm_is_generalized_vector, scm_c_generalized_vector_length,
2924 scm_c_generalized_vector_ref, scm_c_generalized_vector_set_x):
2925 New.
2926
2927 * unif.h, unif.c (scm_bitvector_p, scm_bitvector,
2928 scm_make_bitvector, scm_bitvector_length, scm_bitvector_ref,
2929 scm_bitvector_set_x, scm_list_to_bitvector, scm_bitvector_to_list,
2930 scm_bitvector_fill_x, scm_is_bitvector, scm_c_make_bitvector,
2931 scm_c_bitvector_length, scm_c_bitvector_ref,
2932 scm_c_bitvector_set_x, scm_bitvector_elements,
2933 scm_bitvector_release, scm_frame_bitvector_release,
2934 scm_tc16_bitvector, bitvector_free, bitvector_print,
2935 bitvector_equalp, count_ones, find_first_one): New.
2936 (scm_bit_count, scm_bit_position, scm_bit_set_star_x,
2937 scm_bit_count_star, scm_bit_invert_x, scm_istr2bve): Rewritten
2938 using the new C API for bitvectors and maybe count_ones or
2939 find_first_one, as appropriate.
2940 (SCM_I_MAX_LENGTH, SCM_BITVECTOR_P, SCM_BITVECTOR_BASE,
2941 SCM_SET_BITVECTOR_BASE, SCM_BITVECTOR_MAX_LENGTH,
2942 SCM_BITVECTOR_LENGTH, SCM_MAKE_BITVECTOR_TAG,
2943 SCM_SET_BITVECTOR_LENGTH): Removed. Replaced all uses with the
2944 new functions from above.
2945 (scm_i_proc_make_vector, scm_i_proc_make_string,
2946 scm_i_proc_make_bitvector): Made non-static for use in
2947 scm_i_generalized_vector_creator.
2948 (scm_make_u1vector): Removed, replaced by scm_make_bitvector.
2949 (scm_make_uve): Validate that the created object is a generalized
2950 vector.
2951 (scm_i_legacy_tag): Removed.
2952 (scm_i_print_array): Do it here.
2953 (scm_raprin1): Only print enclosed arrays.
2954
2955 * Makefile.am (DOT_DOC_FILES): Added srfi-4.doc.
2956
c24d026b
MV
29572004-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2958
1f2328fe
MV
2959 * srfi-4.c (make_uvec): Use SCM_I_SIZE_MAX instead of SIZE_MAX for
2960 added portability.
2961
2962 * chars.c (scm_charnames, scm_charnums): Added "sp" as an alias
2963 for "space". Thanks to Bruce Korb!
2964
c24d026b
MV
2965 * rw.c (scm_read_string_x_partial): Bugfix, apply offset to dest
2966 only after dest has been set. Thanks to Hyper Division!
2967
2968 * gh_data.c (gh_uniform_vector_length): Use
2969 scm_uniform_vector_length instead of SCM_UVECTOR_LENGTH.
2970
d4ea47c8
MV
29712004-11-03 Marius Vollmer <mvo@zagadka.de>
2972
2973 * unif.h (SCM_UVECTOR_BASE, SCM_SET_UVECTOR_BASE,
2974 SCM_UVECTOR_MAXLENGTH, SCM_UVECTOR_LENGTH, SCM_MAKE_UVECTOR_TAG,
2975 SCM_SET_UVECTOR_LENGTH): Removed.
2976
236288e2
MV
29772004-11-02 Marius Vollmer <mvo@zagadka.de>
2978
9a5fa6e9 2979 Mac OS X and OpenBSD compatibility patches from Andreas Vögele.
236288e2
MV
2980 Thanks!
2981
2982 * backtrace.c (scm_display_backtrace_with_highlights): Join the
2983 first and the second line of the SCM_DEFINE macro call, since old
2984 preprocessors cannot handle definitions that are split into two
2985 lines.
2986
2987 * inline.h (scm_cell, scm_double_cell): Don't use C99 variable
2988 declarations.
2989
2990 * pairs.c (scm_i_chase_pairs): Replace scm_t_bits with
2991 scm_t_uint32 to fix the mismatch between the function declaration
2992 and definition.
2993
2994 * sort.c (quicksort): Don't use C99 variable declarations.
2995
2996 * srfi-4.c (uvec_fast_ref): Avoid a compiler warning by returning
2997 SCM_BOOL_F if no type matches.
2998
2999 * threads.c (thread_print): Cast a pointer to size_t when printing
3000 with scm_uintprint.
3001
3002 * unif.c (scm_i_tag_to_prototype): Make sure that "instead" gets
3003 defined.
3004 (scm_array_prototype): Deprecated.
3005
f738b51d
MV
30062004-11-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3007
5d1015ec
MV
3008 * srfi-4.h, srfi-4.c (scm_frame_uniform_vector_release): New.
3009 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use it to get
3010 more efficient access to the u32vector.
3011
034486df
MV
3012 * tags.h (scm_tc7_llvect, scm_tc7_uvect, scm_tc7_fvect,
3013 scm_tc7_dvect, scm_tc7_cvect, scm_tc7_svect, scm_tc7_byvect,
3014 scm_tc7_ivect): Renamed to scm_tc7_unused_1 to scm_tc7_unused_8.
3015
3016 * validate.h (SCM_VALIDATE_VECTOR_OR_DVECTOR): Accept f64vectors
3017 instead of the old-style dvectors.
3018
3019 * gh_data.c: Use new-style uniform arrays in place of old-style
3020 ones.
3021
3022 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c,
3023 ramap.c, unif.c: Do no longer handle old-style uniform vectors.
3024
3025 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use u32vectors
3026 instead of old-sytle uvectors.
3027
3028 * convert.c, convert.i.c: Rewritten completely, using
3029 scm_any_to_u8vector, etc and other new-style uniform vector
3030 functions.
3031
3032 * random.c (scm_random_solid_sphere_x,
3033 scm_random_hollow_sphere_x): Do not validate vector argument, this
3034 is already done elsewhere.
3035
3036 * srfi-4.h, srfi-4.i.c, srfi-4.c (coerce_to_uvec,
3037 scm_any_to_u8vector, etc): New.
3038 (scm_uniform_element_size, scm_uniform_vector_length): Do no
3039 longer handle old-style uniform vectors.
3040
f738b51d
MV
3041 * read.c (scm_lreadr): Bugfix: include the last bit in the
3042 bit vector.
3043
5e9c05a1
MV
30442004-10-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3045
327114a2
MV
3046 * unif.h, unif.c (scm_array_creator): New.
3047 (scm_i_get_old_prototype): New.
3048 (scm_array_prototype): use it to return old-style prototype, never
3049 return creators.
3050 (scm_make_uve): Use scm_call_1 instead of scm_call_2 with a second
3051 arg of SCM_UNDEFINED. The latter is wrong.
3052
5e9c05a1
MV
3053 * unif.h, unif.c (scm_make_u1vector): New, but only temporary.
3054 (make_uve): Removed.
3055 (scm_i_proc_make_vector, scm_i_proc_make_string,
3056 scm_i_proc_make_u1vector): New.
3057 (scm_init_unif): Initialize them.
3058 (scm_i_convert_old_prototype): New.
3059 (scm_make_uve): Use it to get the creator procedure. Removed all
3060 old code that created old-style uniform vectors.
3061 (scm_array_p): Handle generic vectors.
3062 (scm_dimensions_to_uniform_array): Do not fill new array with
3063 prototype when that is a procedure.
3064 (scm_list_to_uniform_array): Also accept a list of lower bounds as
3065 the NDIM argument.
3066 (scm_i_print_array): Print rank for shared or non-zero-origin
3067 vectors.
3068 (tag_proto_table, scm_i_tag_to_prototype, scm_i_read_array): New.
3069 (scm_raprin1): Do not call scm_i_array_print for enclosed arrays,
3070 which I do not understand yet.
3071 (scm_array_prototype): Explicitely handle generic vectors.
327114a2 3072
5e9c05a1
MV
3073 * numbers.c, number.h (scm_i_print_complex, icmplx2str): New.
3074 (iflo2str): Use icmplx2str for complex numbers.
3075
3076 * srfi-4.c, srfi-4.h (scm_i_read_homogenous_vector,
3077 scm_i_uniform_vector_prototype): Removed.
3078 (scm_i_uniform_vector_creator): New.
3079 (SCM_UVEC_C32, scm_c32vector, scm_make_c32vector, etc,
3080 SCM_UVEC_C64, scm_c64vector, scm_make_c64vector, etc): New.
3081 Updated all tables and generic functions to support them.
3082 (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector, etc): New.
3083 (scm_init_srfi_4): Initialize them.
3084
3085 * srfi-4.i.c (scm_take_u8vector, etc): use uvec_sizes instead of
3086 sizeof(CTYPE) as explained in the comment.
3087
3088 * read.c (scm_lreadr): Call scm_i_read_array for all characters
50472546 3089 following '#' that can start an array. Explicitely disambiguate
5e9c05a1
MV
3090 'i' and 'e' between introducing numbers and uniform vectors. Do
3091 not call scm_i_read_homogenous_vector, since that is also handled
3092 by scm_i_read_array now.
3093
f984af07
MV
30942004-10-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3095
3096 First cut at integrating uniform vectors from srfi-4 with the rest
3097 of Guile. This change replaces scm_tc7_byvect with a s8 uniform
3098 vector. The plan is to gradually replace one type after the other
3099 until none is left and then to consider general cleanups and
3100 optimizations.
3101
3102 * srfi-4.h, srfi-4.i.c (scm_u8vector_elements, etc): New.
3103
3104 * srfi-4.h, srfi-4.c (scm_uniform_vector_p,
3105 scm_uniform_vector_ref, scm_uniform_vector_set_x,
3106 scm_uniform_vector_to_list, scm_is_uniform_vector,
3107 scm_c_uniform_vector_lengths, scm_c_uniform_vector_size,
3108 scm_uniform_vector_elements, scm_uniform_vector_element_size,
3109 scm_uniform_vector_release): New.
3110 (scm_i_uniform_vector_prototype, scm_i_uniform_vector_tag): New.
3111 (scm_uniform_element_size, scm_uniform_vector_length): Moved here
3112 from unif.h, unif.c and extended to handle both the old and new
3113 uniform vectors.
3114
3115 * tags.h (scm_tc7_byvect): Commented out.
3116
3117 * unif.h, unif.c (scm_uniform_vector_ref, scm_array_ref): Renamed
3118 the former to the latter.
3119 (scm_uniform_vector_length, scm_uniform_element_size): Moved to
3120 srfi-4.h, srfi-4.c.
3121 (scm_make_uve): Call scm_make_s8vector for #\nul prototype.
3122 (scm_array_p, scm_array_rank, scm_array_dimensions,
3123 scm_transpose_array, scm_enclose_array, scm_array_ref, scm_cvref,
3124 scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
3125 scm_array_to_list, scm_array_prototype): Handle srfi-4 uniform
3126 vectors. Removed code for scm_tc7_byvect.
3127 (scm_dimensions_to_uniform_array): Fill array with 0 when
3128 prototype is #\nul.
3129 (scm_i_print_array_dimension, scm_i_legacy_tag,
3130 scm_i_print_array): New.
3131 (scm_raprin1): Call scm_i_print_array for arrays. Removed code
3132 for scm_tc7_byvect.
3133
3134 * ramap.c (scm_ra_matchp, scm_array_fill_int, racp,
3135 scm_array_index_map_x, raeql_1, scm_array_equal_p): Handle srfi-4
3136 uniform vectors. Removed code for scm_tc7_byvect
3137
3138 * print.c (iprin1): Removed code for scm_tc7_byvect.
3139 * objects.c (scm_class_of): Likewise.
3140 * gc-mark.c (scm_gc_mark_dependencies): Likewise.
3141 * gc-card.c (scm_i_sweep_card): Likewise.
3142 * evalext.c (scm_self_evaluating_p): Likewise.
3143 * eq.c (scm_equal_p): Likewise.
3144
3145 * gh_data.c (gh_chars2byvect): Reimplemented with
3146 scm_make_s8vector.
3147 (gh_scm2chars): Handle s8vectors, removed code for scm_tc7_byvect.
3148
3149 * srfi-4.c (take_uvec): New.
3150 (alloc_uvec): Use it.
3151 * srfi-4.h, srfi-4.i.c (scm_take_u8vector, etc): New.
3152
3153 * random.c (vector_scale, vector_scale_x): Renamed former to the
3154 latter, since it modifies its argument.
3155 (vector_scale_x, vector_sum_squares, scm_random_normal_vector_x):
3156 Do not use scm_universal_vector_length for non-uniform vectors.
3157 Use scm_f64vector_elements to access innards of uniform vectors.
3158
3159 * convert.i.c: Convert srfi-4 style uniform vectors when
3160 requested.
3161 * convert.c (scm_c_scm2chars, scm_c_chars2scm,
3162 scm_c_chars2byvect): Use a s8vector instead of a scm_tc7_byvect.
3163
79d52182
MV
31642004-10-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3165
3166 * numbers.h, numbers.c (scm_i_print_double): New.
3167
3168 * srfi-4.c, srfi-4.h, srfi-4.i.c: New files, initially from
3169 ../srfi/ but heavily modified.
3170 * Makefile.am: Add them in all the right places.
3171 * init.c (scm_init_guile_1): Call scm_init_srfi_4.
3172 * read.c (scm_lreadr): Call scm_i_read_homogenous_vector for '#f',
3173 '#u', and '#s'.
3174
3175 * read.h, read.c (scm_i_input_error): Renamed from scm_input_error
3176 and made non-static. Changed all uses.
3177
6191ccec
MV
31782004-10-22 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3179
e64e80b0
MV
3180 * variable.c, threads.c, struct.c, stackchk.c, smob.c, root.c,
3181 print.c, ports.c, mallocs.c, hooks.c, hashtab.c, fports.c,
3182 guardians.c, filesys.c, coop-pthreads.c, continuations.c: Use
3183 scm_uintprint to print unsigned integers, raw heap words, and
3184 adresses, using a cast to scm_t_bits to turn pointers into
3185 integers.
3186
3187 * unif.c: Include "libguile/print.h".
3188
c90ac3a8
MV
3189 * numbers.h, numbers.c (SCM_T_INTBUFLEN): Increased to cover
3190 scm_t_intmax values.
3191 (scm_uint2str): New, for scm_t_uintmax.
3192 (scm_iint2str): Argument type changed to scm_t_intmax,
3193 reimplemented in terms of scm_uint2str.
3194
3195 * print.c, print.h (scm_uintprint): New, for printing
3196 scm_t_uintmax values.
3197 (scm_intprint): Argument type changed to scm_t_intmax.
3198
77c2594f
MV
3199 * sort.c (quicksort, scm_merge, scm_merge_list_x,
3200 scm_merge_list_step, scm_merge_vector_step): Inserted SCM_TICKs at
3201 strategic places so that the loops can be interrupted.
3202
6191ccec
MV
3203 * Makefile.am (INCLUDES): Use @LTDLINC@ instead of
3204 "-I$(top_srcdir)/libguile-ltdl".
3205 (libguile_la_LIBADD): Use @LIBLTDL@ instead of
3206 "../libguile-ltdl/libguile-ltdl.a".
3207
3208 * guile.c, dynl.c: Switched to using libltdl directly. Replaced
3209 all references to scm_lt_* with just lt_*. Include <ltdl.h>
3210 instead of <libguile-ltdl.h>.
3211
77600f3e
MV
32122004-10-20 Marius Vollmer <mvo@zagadka.de>
3213
3214 * sort.c (quicksort): Copy pivot out of the array while
3215 constructing the partitions; it could get overwritten otherwise.
3216 Because of the ultimate insertion sort, this bug did not cause
3217 quicksort to fail, it just put all the burdon on the insertion
3218 sort and was thus very slow. Thanks to Rolan Orre for reporting
3219 the slowness!
3220
5000379b
MV
32212004-10-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3222
192cd792
MV
3223 * numbers.c (scm_i_range_error): New.
3224 * conv-integer.i.c, conv-uinteger.i.c: Use it instead of
3225 scm_out_of_range.
3226
3227 * sort.c (scm_restricted_vector_sort_x): Validate startpos <=
6191ccec 3228 endpos. State inclusiveness/exclusiveness of bounds in docstring.
192cd792
MV
3229
3230 * unif.c (scm_array_p): When no prototype is given, explicitely
3231 test for allowable types, do not simply return true. Thanks to
3232 Roland Orre for reporting this!
3233
5000379b
MV
3234 * private-gc.h (SCM_DEFAULT_MAX_SEGMENT_SIZE): Increase to 20 Mib.
3235
3236 * gc-segment.c (scm_i_get_new_heap_segment): Limit size of new
3237 segment to scm_max_segment_size.
3238
497eb0b7
HWN
32392004-10-08 Han-Wen Nienhuys <hanwen@xs4all.nl>
3240
1367aa5e
HWN
3241 * gc.c (scm_igc): put scm_gc_running-- before running hooks.
3242
497eb0b7
HWN
3243 * inline.h (scm_double_cell): abort if GC running.
3244 (scm_cell): idem.
3245
aef0bdb4
MV
32462004-10-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3247
3248 * error.c (scm_wrong_type_arg): Do not talk about "argument" for
3249 pos == 0.
3250
3251 Keywords no longer store a 'dash symbol'. Instead, they store a
3252 symbol with their real name.
3253
3254 * keywords.h, keywords.c, deprecated.h, deprecated.c
3255 (SCM_KEYWORDP, SCM_KEYWORDSYM): Deprecated and implemented in
3256 terms of scm_is_keyword and scm_keyword_dash_symbol.
3257
3258 * keywords.h, keywords.c, discouraged.h, discouraged.c
3259 (scm_make_keyword_from_dash_symbol, scm_keyword_dash_symbol,
3260 scm_c_make_keyword): Discouraged.
3261
3262 * keywords.h, keywords.c (scm_symbol_to_keyword,
3263 scm_keyword_to_symbol): Implemented in C.
3264 (scm_is_keyword, scm_from_locale_keyword,
3265 scm_from_locale_keywordn): New.
3266
3267 * goops.c: Replaced SCM_KEYWORDP with scm_is_keyword.
3268
3269 * snarf.h (SCM_KEYWORD, SCM_GLOBAL_KEYWORD): Use
3270 scm_from_locale_keyword instead of scm_c_make_keyword.
3271
3272 * keywords.c (scm_symbol_to_keyword): Use SCM_ASSERT_TYPE for a
3273 better error message.
3274
3275 * deprecated.c: Include discouraged.h and keywords.h.
3276
3277 * read.c (scm_lreadr): Simply do (symbol->keyword (read)) after
3278 reading '#:' or ':'. See NEWS for consequences.
3279
818deb11
MV
32802004-09-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3281
43c25626
MV
3282 * read.c (scm_lreadr): Revert change from 2004-09-22: string
3283 literals are now read-write again (until SCM_STRING_CHARS is
3284 removed).
3285
3286 * strings.c (SCM_STRING_CHARS): Explicitely reject read-only
3287 strings with an error message that blames SCM_STRING_CHARS.
3288
3289 * options.c (change_option_setting): Use scm_car instead of
3290 explicit type check plus SCM_CAR.
3291
3292 * print.h, print.c (SCM_PRINT_HIGHLIGHT_PREFIX,
3293 SCM_PRINT_HIGHLIGHT_SUFFIX): New printer options.
3294 (scm_iprin1): Use them instead of the previoulsy hardcoded
3295 strings.
3296 (scm_init_print): Initialize them.
3297
3298 * backtrace.c (display_frame_expr): Do not remove control
3299 characters from the final string. Print it directly using
3300 scm_display.
3301
818deb11
MV
3302 * ramap.c (scm_array_equal_p): Include scm_tc7_svect in switch.
3303 Thanks to Roland Orre!
3304
d748089e
KR
33052004-09-29 Kevin Ryde <user42@zip.com.au>
3306
3307 * regex-posix.c (scm_regexp_exec): Correction to last change, should
3308 be whole original string in match struct, not offsetted substring.
3309
0ff7e3ff
HWN
33102004-09-24 Han-Wen Nienhuys <hanwen@xs4all.nl>
3311
3312 * gc.c (scm_gc_unprotect_object): abort if called during GC.
3313
ad7de4b8
MV
33142004-09-24 Marius Vollmer <mvo@zagadka.de>
3315
2edf319f
MV
3316 * Makefile.am (EXTRA_DIST): Added gettext.h.
3317
d180337b
MV
3318 * smob.c, smob.h (scm_assert_smob_type): New.
3319
05d7cf89 3320 * Makefile.am (guile_CFLAGS, guile_LDFLAGS, libguile_la_CFLAGS):
ad7de4b8
MV
3321 Include GUILE_CFLAGS.
3322 (libguile_la_LIBADD): Removed THREAD_LIBS_LOCAL, which is unused
3323 now.
3324 (libpath.h): Put GUILE_CFLAGS in the build-info.
3325
c9fedf8a
MV
33262004-09-23 Marius Vollmer <mvo@zagadka.de>
3327
3328 * print.h (scm_print_state): Added highlight_objects.
3329 * print.c (make_print_state, scm_free_print_state): Initialize it
3330 to SCM_EOL.
3331 (scm_iprin1): Wrap output in '{...}' when object is contained in
3332 highlight_objects.
3333
3334 * backtrace.h, backtrace.c (scm_display_backtrace_with_highlights,
3335 scm_backtrace_with_highlights): New. Set highlight_objects of
3336 printstate.
3337
3338 * error.c (scm_error_scm): Document new meaning of data/rest
3339 argument for out-of-range and wrong-type-arg errors.
3340 (scm_out_of_range, scm_out_of_range_pos, scm_wrong_type_arg,
3341 scm_wrong_type_arg_msg): Pass bad_value in rest argument of
3342 exception so that it gets highlighted in the backtrace.
3343 Don't talk about "argument" when not giving a position.
3344
3345 * throw.c (handler_message): The rest argument is the fourth
3346 argument, not everything after the third. Call
3347 scm_display_backtrace_with_highlights, passing the rest argument
3348 when appropriate.
3349
d5ac9b2a
MV
33502004-09-22 Marius Vollmer <mvo@zagadka.de>
3351
3352 From Jan Nieuwenhuizen <janneke@gnu.org> and Bruno Haible
3353 <bruno@clisp.org>:
3354
3355 * i18n.c: Handle --disable-nls (thanks Bruno).
3356
3357 * posix.c (scm_init_posix): Add LC_PAPER, LC_NAME, LC_ADDRESS,
3358 LC_TELEPHONE, LC_MEASUREMENT, LC_IDENTIFICATION.
3359
3360 * i18n.c (scm_i_to_lc_category): New name and export. Support all
3361 LC categories.
05d7cf89 3362 * posix.c (scm_setlocale): Use it.
d5ac9b2a
MV
3363
3364 * i18n.h, i18n.c (scm_textdomain, scm_bindtextdomain,
3365 scm_bind_textdomain_codeset): Make wrappers similar to C function
3366 they wrap.
3367
3368 * i18n.h: New file.
3369 * i18n.c: New file.
3370 * gettext.h: New file, taken from GNU gettext.
3371 * init.c: Include libguile/i18n.h.
3372 (scm_init_guile_1): Add call to scm_init_i18n().
3373 * Makefile.am (libguile_la_SOURCES): Add i18n.c.
3374 (DOT_X_FILES): Add i18n.x.
3375 (DOT_DOC_FILES): Add i18n.doc.
3376 (libguile_la_LDFLAGS): Add @LTLIBINTL@.
3377 (modinclude_HEADERS): Add i18n.h.
3378
d2e53ed6
MV
33792004-09-22 Marius Vollmer <mvo@zagadka.de>
3380
2cdfe016
MV
3381 * gh_list.c: Replaced SCM_CAR, etc with scm_car, etc.
3382
d2e53ed6
MV
3383 * discouraged.h, tags.h (SCM_CONSP, SCM_NCONSP): Moved to
3384 discouraged.h. Replaced all uses with scm_is_pair.
3385 (SCM_I_CONSP): New name for SCM_CONSP.
3386
3387 * pairs.h, pairs.c (scm_is_pair, scm_is_null, scm_car, scm_cdr,
3388 scm_i_chase_pairs, SCM_I_A_PAT, SCM_I_D_PAT, etc, scm_caar,
3389 scm_cadr, etc): New.
3390 (SCM_NULLP, SCM_NNULLP): Moved to discouraged.h. Replaced all
3391 uses with scm_is_null.
5dd82006 3392
d2e53ed6
MV
3393 * eval.c (scm_eval, scm_apply, call_cxr_1): Use scm_i_chase_pairs
3394 instead of explicit code.
5dd82006 3395
5dfdf243
MV
33962004-09-22 Marius Vollmer <mvo@zagadka.de>
3397
b50c53e5
MV
3398 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
3399 Reworded logic a bit so that #f is returned immediately when s1 is
3400 too short to contain s2.
3401
5dfdf243 3402 * regex-posix.c (scm_regexp_exec): Convert string to
05d7cf89 3403 zero-terminated locale string before matching against it.
5dfdf243
MV
3404
3405 * strings.h, strings.c (scm_substring_read_only,
3406 scm_c_substring_read_only, scm_i_substring_read_only): New.
3407 (RO_STRING_TAG, IS_RO_STRING): New.
3408 (scm_i_string_writable_chars): Bail on read-only strings.
3409
3410 * read.c (scm_lreadr): use scm_c_substring_read_only for string
3411 literals, thus making them read-only as specified by R5RS.
3412
22ab5ba3
MV
34132004-09-22 Marius Vollmer <mvo@zagadka.de>
3414
3415 * eq.c (scm_equal_p): Allow smobs with different flags to be equal
3416 by testing for smobs before insisting on equal SCM_CELL_TYPES.
3417
2663421c
MV
34182004-09-21 Marius Vollmer <mvo@zagadka.de>
3419
0d83cb90
MV
3420 * numbers.h, numbers.c: Include <gmp.h> in numbers.h, not in
3421 numbers.c.
3422 (scm_to_mpz, scm_from_mpz): New.
9a5fa6e9 3423 Thanks to Andreas Vögele!
0d83cb90 3424
2663421c
MV
3425 * read.c (skip_scsh_block_comment): Recognize "!#" everywhere, not
3426 just on a line of its own.
3427
3428 * srfi-13.c (scm_string_any, scm_string_every,
3429 scm_string_tabulate, string_upcase_x, string_down_case_x,
3430 string_titlecase_x, string_reverse_x, scm_string_tokenize): Use
3431 size_t instead of int for indices into strings. Make sure that no
9a5fa6e9 3432 over- or underflow occurs. Thanks to Andreas Vögele!
2663421c
MV
3433 (scm_xsubstring, scm_string_xcopy_x): Use ints for 'extended'
3434 indices, which can also be negative.
3435
b00b73f9
MV
34362004-09-20 Marius Vollmer <mvo@zagadka.de>
3437
3438 * gc-mark.c (SCM_MARK_BACKING_STORE): Removed, it was unused.
3439
3440 * threads.c (scm_threads_mark_stacks): Call
3441 SCM_MARK_BACKING_STORE. Also, do not use stack_len local, it was
3442 only used once.
3443
adba74f3
HWN
34442004-09-13 Jan Nieuwenhuizen <janneke@gnu.org>
3445
05d7cf89 3446 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
adba74f3
HWN
3447 Bugfix: when subtracting unsigned values, make sure that result
3448 does not wrap.
3449
f6de32c8
KR
34502004-09-09 Kevin Ryde <user42@zip.com.au>
3451
3452 * filesys.c, stime.c (_POSIX_C_SOURCE): Use this only on hpux, it
3453 causes too many problems elsewhere (glibc, freebsd, mingw). Reported
9a5fa6e9 3454 by Andreas Vögele.
f6de32c8 3455
e548be5f
MV
34562004-09-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3457
eb8d0af1
MV
3458 * Makefile.am (EXTRA_libguile_la_SOURCES): Removed "alloca.c".
3459
e548be5f
MV
3460 * eq.c (real_eqv): Pretend that all NaNs are equal.
3461
3462 * numbers.c (scm_integer_expt): Do not accept inexact integers.
3463
e7acba81
MV
34642004-09-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3465
874fbad1
MV
3466 * srfi-13.c (scm_string_trim_right, scm_string_xcopy_x): Correctly
3467 use size_t for some locals instead of int.
3468
e7acba81
MV
3469 * read.c (scm_flush_ws): Detect "#!"-style comments here.
3470 (scm_lreadr): Abort on seeing "#!", which should no longer happen.
3471 (skip_scsh_block_comment): Use scm_input_error instead of
3472 scm_misc_error in case of EOF.
3473
5de12658
KR
34742004-09-07 Kevin Ryde <user42@zip.com.au>
3475
3476 * numbers.c (scm_integer_expt): Reject exponent +/-inf.
5de12658
KR
3477 Bug report by Bill Schottstaedt.
3478
3479 * ports.c (scm_getc, scm_lfwrite): Recognise \a \b and \r for port
3480 column.
3481 * ports.h (SCM_ZEROCOL, SCM_DECCOL): New macros.
3482
3483 * posix.c (scm_access): Update docstring per manual.
3484
3485 * posix.c (scm_nice): Correction to error detection. Reported by
3486 Matthias Koeppe.
3487
3488 * stime.c (scm_current_time, scm_gettimeofday, scm_strptime): Don't
3489 throw error before unlocking mutex with SCM_ALLOW_INTS.
3490
e227addf
KR
34912004-09-06 Kevin Ryde <user42@zip.com.au>
3492
3493 * stime.h (SCM_TIME_UNITS_PER_SECOND): Use sysconf(_SC_CLK_TCK) when
3494 available. This also gets around CLK_TCK being absent when
3495 _GNU_SOURCE and _POSIX_C_SOURCE are defined in stime.c.
3496
edea856c
SJ
34972004-09-03 Stefan Jahn <stefan@lkcc.org>
3498
3499 * threads.c (scm_threads_mark_stacks): Fixed local variable
3500 definitions.
3501
e7acba81 3502 * strings.c (scm_i_substring_copy, scm_string_append): Fixed
edea856c
SJ
3503 local variable definitions.
3504
3505 * stime.c (_POSIX_C_SOURCE): Do not define this item on
3506 MinGW32 because it conflicts with its pthread headers.
874fbad1
MV
3507 (scm_mktime): Consider the HAVE_STRUCT_TM_TM_ZONE define.
3508 (scm_strftime): Using scm_from_locale_string() instead of
edea856c
SJ
3509 scm_makfrom0str().
3510
874fbad1 3511 * posix.c (scm_putenv): Fixed typo in the !HAVE_UNSETENV
edea856c
SJ
3512 part.
3513
3514 * numbers.c (scm_init_numbers): Removed check_sanity() call
3515 inside GUILE_DEBUG. The function has been removed somewhen...
3516
3517 * filesys.c (_POSIX_C_SOURCE): Do not define this item on
3518 MinGW32 because it conflicts with its pthread headers.
3519
d9eb2d67
MV
35202004-08-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3521
3522 * strings.c (SCM_STRINGP): Accept all strings.
3523 (SCM_STRING_CHARS): Reject shared substrings here.
3524
3525 * script.c (scm_compile_shell_switches): Added 2003 and 2004 to
3526 the Copyright years.
3527
c495c342
KR
35282004-08-27 Kevin Ryde <user42@zip.com.au>
3529
3530 * socket.c (scm_fill_sockaddr): Use HAVE_STRUCT_SOCKADDR_SIN_LEN and
3531 HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN for sockaddr fields, SIN_LEN and
3532 SIN_LEN6 are not defined on all systems. Reported by Michael Tuexen.
3533
57aa5515
MV
35342004-08-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3535
3536 * strings.h, strings.c (scm_i_make_symbol): Added FLAGS parameter.
3537 * symbols.h, symbols.c (SCM_I_F_SYMBOL_UNINTERNED,
3538 scm_i_symbol_is_interned, scm_i_mem2symbol,
3539 scm_i_mem2uninternedsymbol): Use it to store uninternedness flag.
3540
ce25760f
MV
35412004-08-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3542
19ff6ffc
MV
3543 * srfi-13.c: First cut at thread-safeness and proper use of
3544 scm_i_string_chars et al. Copious scm_remember_upto_heres have
3545 been inserted. Made sure that no internal string pointer is used
3546 across a SCM_TICK or a possible GC.
3547
ce25760f
MV
3548 * script.c (scm_compile_shell_switches): Use
3549 scm_from_locale_string instead of scm_makfrom0str.
3550
3551 * srfi-13.c (scm_string_rindex): Export to Scheme, as it has
3552 always been.
3553
c5080b51
MV
35542004-08-25 Marius Vollmer <mvo@zagadka.de>
3555
3556 Moved SRFI-13 and SRFI-14 into the core, taking over the role of
3557 strop.c.
3558
3559 * srfi-13.c, srfi-13.h, srfi-14.c, srfi-14.h: New files.
3560 * strop.h, strop.c: Removed, they are now empty.
3561 * Makefile.am: Updated for new and removed files.
3562
3563 * symbols.h, symbols.c (scm_string_ci_to_symbol): Moved here, next
3564 to scm_string_to_symbol.
3565
3566 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
3567 scm_char_whitespace_p, scm_upper_case_p, scm_lower_case_p,
3568 scm_char_is_both_p): Use scm_char_set_contains_p with the proper
3569 charset instead of libc functions.
3570
3571 * strorder.c (scm_string_equal_p, scm_string_ci_equal_p,
3572 scm_string_less_p, scm_string_leq_p, scm_string_gr_p,
3573 scm_string_geq_p, scm_string_ci_less_p, scm_string_ci_leq_p,
3574 scm_string_ci_gr_p, scm_string_ci_geq_p): Use scm_string_eq, etc
3575 instead of explicit code.
3576
3577 * deprecated.c, load.c, posix.c, unif.c, symbols.c: Include
3578 "srfi-13.h" instead of "strop.h".
3579
3580 * init.c (scm_init_guile_1): Call scm_init_srfi_13 and
3581 scm_init_srfi_14. Do not call scm_init_strop.
3582
4b0d27f2
MV
35832004-08-24 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3584
3585 * numbers.c (scm_inf_p): Synced docstring back from manual.
3586
3ece39d6
MV
35872004-08-22 Marius Vollmer <mvo@zagadka.de>
3588
3589 * strings.c (get_str_buf_start): New helper function.
3590 (scm_i_substring, scm_i_substring_copy, scm_i_substring_shared,
3591 scm_i_string_char, scm_i_string_writable_chars): Use it.
3592 (scm_i_substring_copy): Make START argument optional for C
3593 callers, for upcoming SRFI-13 integration.
3594
35952004-08-21 Marius Vollmer <mvo@zagadka.de>
3596
3597 From Richard Todd, Thanks!
3598
3599 * script.c (scm_compile_shell_switches): added '-L' switch to add
3600 to the %load-path.
3601
5fa0939c
DH
36022004-08-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3603
3604 * eval.c (unmemoize_exprs): When dropping internal body markers
3605 from the output during unmemoization, also drop those that are not
3606 immediately at the beginning of a body.
3607
2146fdeb
MV
36082004-08-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3609
c1f54b3d
MV
3610 * eval.c (scm_lookupcar1): Report "Variable used before given a
3611 value" insetad of an "Unbound" one for variables that are found
3612 but still contain SCM_UNDEFINED.
2146fdeb
MV
3613
3614 * posix.c (scm_mkstemp): Correction to the correction, mkstemp
3615 expects a null-terminated string in the locale encoding, but
3616 scm_i_string_writable_chars doesn't give that. Fixed by letting
3617 mkstemp modify a locale version of the tmpl argument and copying
3618 the result back into tmpl.
3619
3620 * strop.c (scm_substring_move_x): Store into str2, not str1.
3621
d4f76919
KR
36222004-08-20 Kevin Ryde <user42@zip.com.au>
3623
3624 * posix.c (scm_mkstemp): Correction to new locale_string stuff, need
3625 to modify the input string.
3626
b5247a6b
MV
36272004-08-19 Marius Vollmer <mvo@zagadka.de>
3628
3629 * deprecated.c (SCM_SYMBOL_CHARS): Cast away const in return.
3630 (SCM_SYMBOL_LENGTH): It's scm_i_symbol_length, not
3631 scm_c_symbol_length.
3632
f26b9395
MV
36332004-08-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3634
3635 New string implementation, with copy-on-write strings and
3636 mutation-sharing substrings, and a new internal string API.
3637 Symbols can now share memory with strings.
3638
3639 * tags.h (scm_tc7_stringbuf): New tag.
3640
3641 * strings.h, strings.c: (scm_i_string_chars, scm_i_string_length,
3642 scm_i_string_writable_chars, scm_i_string_stop_writing): New, to
3643 replace SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH. Updated all
3644 uses.
3645 (scm_i_make_string, scm_c_make_string): New, to replace
3646 scm_allocate_string. Updated all uses.
3647 (SCM_STRINGP, SCM_STRING_CHARS, SCM_STRING_UCHARS,
3648 SCM_STRING_LENGTH): Deprecated.
3649 (scm_allocate_string, scm_take_str, scm_take0str, scm_mem2string,
3650 scm_str2string, scm_makfrom0str, scm_makfrom0str_opt):
3651 Discouraged. Replaced all uses with scm_from_locale_string or
3652 similar, as appropriate.
3653 (scm_c_string_length, scm_c_string_ref, scm_c_string_set_x,
3654 scm_c_substring, scm_c_substring_shared, scm_c_substring_copy,
3655 scm_substring_shared, scm_substring_copy): New.
3656
3657 * symbols.c, symbols.h (SCM_SYMBOLP, SCM_SYMBOL_FUNC,
3658 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS,
3659 SCM_SYMBOL_HASH, SCM_SYMBOL_INTERNED_P, scm_mem2symbol,
3660 scm_str2symbol, scm_mem2uninterned_symbol): Discouraged.
3661 (SCM_SYMBOL_LENGTH, SCM_SYMBOL_CHARS, scm_c_symbol2str):
3662 Deprecated.
3663 (SCM_MAKE_SYMBOL_TAG, SCM_SET_SYMBOL_LENGTH, SCM_SET_SYMBOL_CHARS,
3664 SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS): Removed.
3665 (scm_is_symbol, scm_from_locale_symbol, scm_from_locale_symboln):
3666 New, to replace scm_str2symbol and scm_mem2symbol, respectively.
3667 Updated all uses.
3668 (scm_gensym): Generate only the number suffix in the buffer, just
3669 string-append the prefix.
3670
3671 * error.c (scm_memory_error): Do not try to throw, just abort.
3672 Throwing will not work anyway.
3673
3674 * gh.h, gh-data.c (gh_set_substr): Made src const.
3675
3676 * ports.c (scm_i_mode_bits_n): New, for counted strings.
3677 (scm_mode_bits): Use it.
3678 (scm_c_port_for_each): Blocking GC does not seem to work, allocate
3679 a vector normally and fill that instead of consing a list with a
3680 blocked GC.
3681
3682 * read.c (scm_i_casei_streq): New, for counted strings.
3683
3684 * threads.c (gc_section_count): Removed, thread-sleeping can not
3685 be nested.
3686 (scm_i_thread_put_to_sleep): Call scm_i_leave_guile before locking
3687 admin mutex so that we can be put to sleep by other threads while
3688 blocking on that mutex. Lock all the heap mutex of all threads,
3689 including ourselves.
3690 (scm_i_thread_wake_up): Unlock all threads, including ourselves,
3691 call scm_i_enter_guile.
3692 (scm_thread_mark_stacks): Expect all threads to be suspended.
3693
3694 * gc.h, gc.c (scm_i_gc_admin_mutex): New, to protect
3695 scm_gc_mallocated, for now.
3696 (scm_init_storage): Initialize it.
3697 * gc-malloc.c (descrease_mtrigger, increase_mtrigger): Use it.
3698
3699 * gc-mark.c (scm_gc_mark_dependencies): Call scm_i_string_mark,
3700 scm_i_stringbuf_mark and scm_i_symbol_mark, as appropriate.
3701 * gc-card.c (scm_i_sweep_card): Call scm_i_string_free,
3702 scm_i_stringbuf_free and scm_i_symbol_free, as appropriate.
3703
cd505b38
MV
3704 * strop.c (scm_string_copy): Use scm_c_substring to get a
3705 copy-on-write string.
3706
8a807b26
KR
37072004-08-18 Kevin Ryde <user42@zip.com.au>
3708
3709 * arbiters.c (FETCH_STORE): New macro.
3710 (SCM_LOCK_VAL, SCM_UNLOCK_VAL): New constants.
3711 (SCM_LOCK_ARB, SCM_UNLOCK_ARB): Remove, effectively absorbed into
3712 scm_try_arbiter and scm_release_arbiter.
3713 (scm_try_arbiter, scm_release_arbiter): Use FETCH_STORE to get xchg
3714 for speed on i386, otherwise using mutex.
3715
3716 * eq.c (scm_equal_p): Remove real==fraction and fraction==real, they
3717 must be #f according to R5RS. (equal? follows eqv?, and for eqv? an
3718 exact and inexact is #f.)
3719
3720 * fports.c (fport_print): Use scm_ttyname instead of ttyname directly,
3721 to get thread safety of scm_ttyname.
3722
3723 * ports.c (ttyname): Remove prototype, unused.
3724
d6cd4c36 3725 * socket.c (scm_init_socket): Add SOCK_SEQPACKET and SOCK_RDM.
1f3cc0d3 3726 Reported by Michael Tuexen.
d6cd4c36 3727
fa0c0a4b
MV
37282004-08-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3729
3730 * load.c (scm_init_load_path): Do not pass NULL to
3731 scm_to_locale_string, which would happen when GUILE_LOAD_PATH is
3732 not set. Thanks to Bill Schottstaedt.
3733
70f7ee41
MV
37342004-08-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3735
3736 * socket.c (scm_inet_aton, scm_inet_pton): Convert SCM strings to
3737 locale strings instead of accessing their internals.
3738 (scm_recv, scm_send, scm_recvfrom, scm_sendto): Use
3739 SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH instead of
3740 SCM_STRING_CHARS and SCM_STRING_LENGTH.
3741
3742 * simpos.c (scm_system): Convert SCM strings to locale strings
3743 instead of accessing their internals.
3744
3745 * script.c (scm_compile_shell_switches): Convert version to locale
3746 string before printing it.
3747
3748 * rdelim.c (scm_read_delimited_x): Avoid
3749 SCM_VALIDATE_SUBSTRING_SPEC_COPY and use scm_from_size_t instead
3750 of scm_from_long for the returned number of read characters.
3751
3752 * ioext.c (scm_fdopen): Use scm_i_fdes_to_port together with
3753 scm_i_mode_bits to avoid accessing internals of SCM string from C.
3754
3755 * filesys.c (STRING_SYSCALL, STRING2_SYSCALL): New helper macros.
3756 Use them instead of SCM_SYSCALL when one or two strings need to be
3757 converted into locale strings.
3758 (my_rename): New, gathers platform dependent code for renaming.
3759 (scm_rename): Use it.
3760 (scm_readlink, scm_copy_file): Convert SCM strings to locale
3761 strings instead of accessing their internals.
3762 (scm_basename, scm_dirname): Use SCM_I_STRING_CHARS and
3763 SCM_I_STRING_LENGTH instead of SCM_STRING_CHARS and
3764 SCM_STRING_LENGTH.
3765
3766 * extensions.c (load_extension): Convert lib and init to locale
3767 strings instead of accessing the internals directly.
3768 (scm_c_load_extension): Use scm_from_locale_string instead of
3769 scm_makfrom0str.
3770
3771 * fports.h, fports.c (scm_i_fdes_to_port): New, like
3772 scm_fdes_to_port, but take mode bits directly instead of as a C
3773 string.
3774 (scm_i_fdes_to_port): Implement using above.
3775 (scm_open_file): Use scm_i_fdes_to_port together with
3776 scm_i_mode_bits to avoid accessing internals of SCM string from C.
3777 * vports.c (scm_make_soft_port): Use scm_i_fdes_to_port together
3778 with scm_i_mode_bits to avoid accessing internals of SCM string
3779 from C.
3780
3781 * ports.h (scm_i_mode_bits): New, same as scm_mode_bits but with a
3782 SCM string as argument.
3783
3784 * ports.c (scm_i_void_port): New, like scm_void_port but take mode
3785 bits directly instead of C string.
3786 (scm_void_port): Implement using above.
3787 (scm_sys_make_void_port): Use scm_i_void_port together with
3788 scm_i_mode_bits to avoid accessing internals of SCM string.
3789
3790 * strings.h, strings.c (scm_i_get_substring_spec): New.
3791
3792 * socket.c, rw.c, deprecated.h, validate.h
3793 (SCM_VALIDATE_STRING_COPY): Deprecated. Replaced all uses with
3794 SCM_VALIDATE_STRING plus SCM_I_STRING_CHARS or
3795 scm_to_locale_string, etc.
3796 (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Deprecated. Replaced as
3797 above, plus scm_i_get_substring_spec.
3798
3799 * regex-posix.c, read.c, random.c, ramap.c, print.c, numbers.c,
3800 hash.c, gc.c, gc-card.c, convert.i.c, backtrace.c, strop.c,
3801 strorder.c, strports.c, struct.c, symbols.c, unif.c, ports.c: Use
3802 SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_STRING_LENGTH
3803 instead of SCM_STRING_CHARS, SCM_STRING_UCHARS, and
3804 SCM_STRING_LENGTH, respectively. Also, replaced scm_return_first
3805 with more explicit scm_remember_upto_here_1, etc, or introduced
3806 them in the first place.
3807
3808 * posix.c (WITH_STRING): New helper macro. Use it where one
3809 locale string is needed for a short piece of code.
3810 (STRING_SYSCALL): New helper macro. Use it instead of SCM_SYSCALL
3811 when one locale string is needed.
3812 (scm_mkstemp): Convert tmpl to a locale string.
3813 (scm_putenv): Rewritten to use only C strings.
3814 (scm_setlocale, scm_crpt): Convert argument strings to locale
3815 strings.
3816
38172004-08-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3818
3819 * load.c (scm_primitive_load_path): Do not check for absolute
3820 filenames when scm_sys_search_load_path returns false, which will
3821 return absolute filenames unchanged.
3822
bb26cc2d
MV
38232004-08-11 Marius Vollmer <mvo@zagadka.de>
3824
3825 * gc.c, procprop.c (scm_init_storage, scm_stand_in_procs,
3826 scm_stand_in_proc): Use a hastable for scm_stand_in_procs instead
3827 of an alist. Thanks to Matthias Koeppe!
3828
02573e4c
MV
38292004-08-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3830
3831 * strings.h, deprecated.h (SCM_STRING_COERCE_0TERMINATION_X):
3832 Moved from string.h to deprecated.h.
3833
3834 * deprecated.c, deprecated.h (SCM_CHARS, SCM_LENGTH): Removed.
3835
f9751e86 3836 * strings.h, strings.c (SCM_MAKE_STRING_TAG): Renamed to
02573e4c
MV
3837 SCM_I_MAKE_STRING_TAG, changed all uses.
3838 (SCM_STRING_CHARS, SCM_STRING_UCHARS, SCM_STRING_LENGTH): Renamed
3839 to SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_LENGTH
3840 respectively. For a short time, the old names are still there as
3841 aliases. Not all uses have been changed yet, but the ones in
3842 strings.c have.
3843 (SCM_STRING_MAX_LEN): Do not hardcode to 24 bits, compute from
3844 SCM_T_BITS_MAX.
3845 (scm_is_string, scm_from_locale_string, scm_from_locale_stringn,
3846 scm_take_locale_string, scm_take_locale_stringn,
3847 scm_to_locale_string, scm_to_locale_stringn,
3848 scm_to_locale_stringbuf): New.
3849 (scm_c_string2str, scm_c_substring2str): Deprecated by moving to
3850 deprecated.[hc]. Implemented in terms of the new functions above.
3851 (scm_take_str, scm_take0str, scm_mem2string, scm_str2string,
3852 scm_makfrom0str): Reimplemented in terms of the new functions from
3853 above. They will be discouraged shortly.
3854 (scm_substring): Do not use scm_mem2string.
3855 (scm_i_allocate_string_pointers, scm_i_free_string_pointers): New,
3856 to replace similar code from posix.c, simpos.c, and dynl.c.
3857 (scm_string_append): Use memcpy instead of explicit loop. Do not
3858 use register keyword. Use plain 'char' instead of 'unsigned
3859 char'.
3860
3861 * strports.c (scm_mkstrport): Use SCM_I_STRING_UCHARS instead of
3862 SCM_STRING_UCHARS. Use SCM_I_STRINGP instead of SCM_STRINGP.
3863
3864 * strop.c (scm_i_index): Replaced SCM_STRINGP, SCM_STRING_CHARS,
3865 and SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
3866 SCM_I_STRING_LENGTH, respectively. Pass string object directly,
3867 not as a pointer. Use scm_remember_upto_here_1 to protect it.
3868
3869 * read.c (scm_input_error): Use a SCM value for 'fn', not a C
3870 string. This avoids a conversion round-trip.
3871
3872 * gh_data.c: Replaced SCM_STRINGP, SCM_STRING_CHARS, and
3873 SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
3874 SCM_I_STRING_LENGTH, respectively.
3875 (gh_scm2newstr): Implement in terms of scm_to_locale_string.
3876
3877 * environments.c: Instead calling scm_puts on the SCM_STRING_CHARS
3878 of a string, call scm_display on the string itself.
3879
3880 * dynwind.c, dynwind.h (scm_frame_free): New.
3881
3882 * stime.c, socket.c, simpos.c, procs.c, posix.c, ports.c,
3883 net_db.c, fports.c, filesys.c, eval.c, deprecation.c, dynl.c:
3884 Replaced uses of SCM_STRING_CHARS with proper uses of
3885 scm_to_locale_string. Replaced SCM_STRINGP with scm_is_string.
3886 Replaced scm_mem2string with scm_from_locale_string.
3887
3888 * simpos.c, posix.c (allocate_string_pointers, environ_list_to_c):
3889 Removed, replaced all uses with scm_i_allocate_string_pointers.
3890
3891 * load.h, load.c (scm_internal_parse_path): Removed.
3892 (scm_parse_path): Use scm_string_split to do the work.
3893 (scm_init_load_path): Use scm_parse_path instead of
3894 scm_internal_parse_path.
3895 (scm_search_path): Rewritten string handling part of the code in
3896 terms of scm_to_locale_stringbuf and so that it is thread safe.
3897
3898 * error.c (scm_error_scm): Throw directly instead of calling
3899 scm_error, this avoids the back and forth conversion of SUBR and
3900 MESSAGE and also plugs a memory leak.
3901 (scm_error): Call scm_error_scm.
3902
3903 * backtrace.c: Replaced SCM_STRINGP with scm_is_string.
3904 (display_header): Print FNAME when it is true, not
3905 merely when it is a string.
3906
3907 * strings.h (SCM_SET_STRING_LENGTH, SCM_SET_STRING_CHARS): Removed
3908 unceremoniously. They were unused by Guile itself, and external
3909 use should stop immediately.
3910
3911
409eb4e5
MV
39122004-08-10 Marius Vollmer <mvo@zagadka.de>
3913
3914 * numbers.h, number.c, deprecated.h, deprecated.c (scm_round,
3915 scm_truncate): Renamed to scm_c_round and scm_c_truncate;
3916 deprecated versions installed in deprecated.h and deprecated.c.
3917 Changed all uses.
3918
a00eaf19
RB
39192004-08-06 Rob Browning <rlb@defaultvalue.org>
3920
3921 * net_db.c (scm_resolv_error): don't cause an exception while
3922 trying to throw an exception -- call scm_misc_error with correct
3923 arguments. The previous arguments needed a format escape that
3924 wasn't in any of the format strings.
3925
bcb88c93
KR
39262004-08-06 Kevin Ryde <user42@zip.com.au>
3927
8f094b97
KR
3928 * ramap.c (scm_array_fill_x): For byvect char fill, force signed char
3929 so as not to depend on signedness of plain char. For byvect range
3930 check, throw out-of-range rather than wrong-type-arg.
3931
bcb88c93
KR
3932 * unif.c (scm_uniform_vector_ref, scm_array_set_x): For byvect, force
3933 signed byte range checks by using scm_to_schar and scm_from_schar,
3934 don't want to depend on signedness of C char.
3935
29e61124
KR
39362004-08-05 Kevin Ryde <user42@zip.com.au>
3937
3938 * arbiters.c (scm_try_arbiter): Use scm_i_misc_mutex instead of
3939 SCM_DEFER_INTS.
3940 (scm_release_arbiter): Use scm_i_misc_mutex so return value can be
3941 guaranteed if multiple threads compete to unlock.
3942 Update docstrings per doc/ref/api-scheduling.texi.
3943
99de794f
KR
3944 * filesys.c (scm_copy_file): Use fstat on the input fd rather than
3945 stat on the filename, to be certain a file rename can't mean we get
3946 info on one filesystem object but open another. This fstat usage is
3947 similar to Emacs copy-file.
3948
29e61124
KR
3949 * posix.c (scm_setgroups): Enhance docstring, per doc/ref/posix.texi.
3950
3951 * simpos.c (scm_system_star): Change scm_from_long to scm_from_int on
3952 SIGINT and SIGQUIT, since those values are ints.
3953
759aa8f9
MV
39542004-08-03 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3955
7241f213
MV
3956 * num2integral.i.c, num2float.i.c: Removed.
3957 * Makefile.am (noinst_HEADERS): Updated.
3958
f9656a9f
MV
3959 * numbers.h. numbers.c (scm_make_ratio): Renamed to
3960 scm_i_make_ratio and made static, replaced uses with scm_divide.
96d8c217
MV
3961 (scm_complex_p): New, export as "complex?" to Scheme.
3962 (scm_number_p): Export as "number?" to Scheme.
3963 (scm_is_complex, scm_is_number): New.
3964 (scm_c_make_rectangular, scm_c_make_polar): New.
3965 (scm_make_rectangular, scm_make_polar): Use above.
3966 (scm_c_real_part, scm_c_imag_part, scm_c_magnitude, scm_c_angle):
3967 New.
3968 (scm_make_complex): Discouraged by moving to discouraged.h and
3969 discouraged.c. Replaced all uses with scm_c_make_rectangular.
3970
759aa8f9
MV
3971 * discouraged.h, discouraged.c, numbers.c, numbers.h
3972 (scm_is_rational): New.
3973 (scm_i_short2big, scm_i_int2big, scm_i_uint2big, scm_i_size2big,
3974 scm_i_ptrdiff2big, scm_i_long_long2big, scm_i_ulong_long2big):
3975 Removed prototypes.
3976 (scm_make_real, scm_num2dbl, scm_float2num, scm_double2num):
3977 Discouraged by moving to discouraged.h and discouraged.c.
3978 Replaced all uses with scm_from_double.
3979 (scm_num2float, scm_num2double): Discouraged by moving prototype
3980 to discouraged.h and rewriting in terms of scm_to_double.
3981 Replaced all uses with scm_to_double.
3982 (scm_to_double): Do not implement in terms of scm_num2dbl, use
3983 explicit code.
3984 (scm_from_double): Do not implement in terms of scm_make_real, use
3985 explicit code.
3986
531bf3e6
MV
39872004-08-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3988
759aa8f9
MV
3989 * init.c (scm_init_guile_1): Call scm_i_init_discouraged.
3990
531bf3e6
MV
3991 * gen-scmconfig.h.in (SCM_I_GSC_ENABLE_DISCOURAGED): New.
3992 * gen-scmconfig.c (SCM_ENABLE_DISCOURAGED): Emit based on above.
3993
3994 * eval.c (SCM_EVALIM, SCM_EVALIM2, SCM_XEVAL, SCM_XEVALCAR):
3995 Renamed to SCM_I_* in order to avoid collisions with the versions
3996 defined in deprecated.h.
3997
3998 * discouraged.h, discouraged.c: New files.
3999
4000 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_EQ_P,
4001 SCM_NEGATE_BOOL, SCM_BOOL, SCM_BOOT_NOT): Promoted from being
4002 deprecated to being discouraged by moving to discouraged.h.
4003
4004 * numbers.h, numbers.c, discouraged.h, discouraged.c
4005 (scm_short2num, scm_ushort2num, scm_int2num, scm_uint2num,
4006 scm_long2num, scm_ulong2num, scm_size2num, scm_ptrdiff2num,
4007 scm_num2short, scm_num2ushort, scm_num2int, scm_num2uint,
4008 scm_num2long, scm_num2ulong, scm_num2size, scm_num2ptrdiff,
4009 scm_long_long2num, scm_ulong_long2num, scm_num2long_long,
4010 scm_num2ulong_long): Discouraged by moving to discouraged.h and
4011 discouraged.c and reimplementing in terms of scm_from_* and
4012 scm_to_*. Changed all uses to the new scm_from_* and scm_to_*
4013 functions.
4014
4015 * numbers.h, numbers.c: Removed GUILE_DEBUG code.
4016 (scm_i_short2big, scm_i_ushort2big, scm_i_int2big, scm_i_uint2big,
4017 scm_i_size2big, scm_i_ptrdiff2big): Removed.
4018 (scm_i_long2big, scm_i_ulong2big): New, explicit definitions.
4019 * conv-integer.i.c, conv-uinteger.i.c: Use them instead of
4020 explicit code.
4021
5ec82e96
KR
40222004-08-02 Kevin Ryde <user42@zip.com.au>
4023
4024 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Add comments about past
4025 and current usage and migration.
4026
58f28989
KR
40272004-07-31 Kevin Ryde <user42@zip.com.au>
4028
4029 * error.c (scm_strerror): Use scm_i_misc_mutex around strerror since
4030 it's not thread safe.
4031 (scm_syserror): Use scm_strerror rather than SCM_I_STRERROR, to take
4032 advantage of this.
4033 * fports.c (scm_open_file): Use scm_strerror likewise.
4034 * filesys.c (scm_stat, scm_lstat): Ditto.
4035
4036 * filesys.c (scm_copy_file): Avoid fd leak when destination file
4037 cannot be opened.
4038
4039 * symbols.c (scm_gensym): Use scm_i_misc_mutex around gensym_counter
4040 update, for thread safety.
4041 (gensym_counter): Move into scm_gensym which is its only user.
4042 (scm_init_symbols): No need to explicitly initialize gensym_counter.
4043
03696aab
MV
40442004-07-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4045
51fdb325
MV
4046 * numbers.h (scm_to_schar, scm_to_uchar, scm_to_char,
4047 scm_to_short, scm_to_ushort, scm_to_int, scm_to_uint, scm_to_long,
4048 scm_to_ulong, scm_to_long_long, scm_to_ulong_long, scm_to_intmax,
4049 scm_to_uintmax, scm_to_size_t, scm_to_ssize_t scm_from_schar,
4050 scm_from_uchar, scm_from_char, scm_from_short, scm_from_ushort,
4051 scm_from_int, scm_from_uint, scm_from_long, scm_from_ulong,
4052 scm_from_long_long, scm_from_ulong_long, scm_from_intmax,
4053 scm_from_uintmax, scm_from_size_t, scm_from_ssize_t): No longer
4054 defined in terms of scm_to_signed_integer, etc, but in terms of
4055 scm_to_int8, etc.
4056
4057 * gen-scmconfig.c (SCM_SIZEOF_INTMAX, SCM_SIZEOF_SIZE_T): New.
4058
03696aab
MV
4059 * gen-scmconfig.h.in: Removed SCM_I_GSC_*_LIMITS macros, they are
4060 no longer used.
4061
4062 * __scm.h (SCM_I_UTYPE_MAX, SCM_I_TYPE_MAX, SCM_I_TYPE_MIN,
4063 SCM_I_SIZE_MAX, SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX): New.
4064
4065 * __scm.h, gen-scmconfig.c (SCM_I_LLONG_MAX, SCM_I_LLONG_MIN,
4066 SCM_I_ULLONG_MAX, SCM_T_INT8_MIN, SCM_T_INT8_MAX, SCM_T_UINT8_MAX,
4067 SCM_T_INT16_MIN, SCM_T_INT16_MAX, SCM_T_UINT16_MAX,
4068 SCM_T_INT32_MIN, SCM_T_INT32_MAX, SCM_T_UINT32_MAX,
4069 SCM_T_INT64_MIN, SCM_T_INT64_MAX, SCM_T_UINT64_MAX,
4070 SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, SCM_T_UINTMAX_MAX): Moved
4071 definition into __scm.h, using new SCM_I_TYPE_MIN, etc.
4072
4073 * conv-integer.i.c, conv-uinteger.i.c: New files, used to generate
4074 the functions below.
4075
4076 * Makefile.am (noinst_HEADERS): Added conv-integer.i.c and
4077 conv-uinteger.i.c.
4078
4079 * numbers.c, numbers.h (scm_to_int8, scm_to_uint8, scm_to_int16,
4080 scm_to_uint16, scm_to_int32, scm_to_uint32, scm_to_int64,
4081 scm_to_uint64, scm_from_int8, scm_from_uint8, scm_from_int16,
4082 scm_from_uint16, scm_from_int32, scm_from_uint32, scm_from_int64,
4083 scm_from_uint64): Turned from macros into proper functions.
4084 (scm_to_signed_integer, scm_to_unsigned_integer,
4085 scm_from_signed_integer, scm_from_unsigned_integer): Generate via
4086 conv-integer.i.c and conv-uinteger.i.c, as well.
4087
4088 * number.h (scm_to_ssize_t, scm_to_size_t): Use the new
4089 SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX, and SCM_I_SIZE_MAX macros for
4090 the limits. Those are always defined.
4091
1f15779e
KR
40922004-07-29 Kevin Ryde <user42@zip.com.au>
4093
4094 * posix.c (scm_ttyname): Use scm_i_misc_mutex for thread safety.
4095
48360eb3
KR
40962004-07-28 Kevin Ryde <user42@zip.com.au>
4097
4098 * posix.c (scm_ctermid): Use an L_ctermid buf on the stack, for thread
4099 safety.
4100
c3f3c841
KR
4101 * unif.c (scm_array_set_x): For svect, use scm_num2short for
4102 consistency with other vector types and to get arg and func name into
4103 error message.
4104
c82f8ed6
MV
41052004-07-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4106
4107 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_BOOL):
4108 Reimplement using scm_is_false, scm_is_true, scm_is_bool, and
4109 scm_from_bool, respectively.
4110 (SCM_NINUMP): Added.
4111
4112 * tags.h, deprecated.h (SCM_EQ_P): Deprecated by moving it into
4113 deprecated.h. Replaced all uses with scm_is_eq.
4114
317b4c4a
KR
41152004-07-24 Kevin Ryde <user42@zip.com.au>
4116
4117 * threads.c, threads.h (scm_i_misc_mutex): New SCM_GLOBAL_MUTEX.
4118 * posix.c (scm_crypt): Use it to protect static data in crypt().
4119
e11e83f3
MV
41202004-07-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4121
4122 * deprecated.h, deprecated.c, numbers.h (SCM_INUMP, SCM_NINUMP,
c82f8ed6 4123 SCM_INUM): Deprecated by renaming them to SCM_I_INUMP,
e11e83f3
MV
4124 SCM_I_NINUMP and SCM_I_INUM, respectively and adding deprecated
4125 versions to deprecated.h and deprecated.c. Changed all uses to
4126 either use the SCM_I_ variants or scm_is_*, scm_to_*, or
4127 scm_from_*, as appropriate.
4128
4129 * dynwind.c (scm_i_dowinds): Removed unused code that would call
4130 the unexisting scm_cross_dynwind_binding_scope for inums on the
4131 windlist.
4132
a55c2b68
MV
41332004-07-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4134
4135 * socket.c (ipv6_net_to_num, scm_from_ipv6): Renamed
e11e83f3 4136 ipv6_net_to_num to scm_from_ipv6, for converting from an IPv6
a55c2b68
MV
4137 byte-wise address to a SCM integer. Changed all uses.
4138 (ipv6_num_to_net, scm_to_ipv6): Renamed ipv6_num_to_net to
4139 scm_to_ipv6 and added type and range checking, for converting from
4140 an IPv& byte-wise address to a SCM integer. Changed all uses.
4141 (bignum_in_ipv6_range_p, VALIDATE_INET6): Removed, their function
4142 is now done by scm_to_ipv6.
4143
4144 * numbers.c (scm_to_signed_integer, scm_to_unsigned_integer): dot
4145 not accept inexact integers.
4146
4147 * validate.h, deprecated.h (SCM_VALIDATE_INUM,
4148 SCM_VALIDATE_INUM_COPY, SCM_VALIDATE_BIGINT,
4149 SCM_VALIDATE_INUM_MIN, SCM_VALIDATE_INUM_MIN_COPY,
4150 SCM_VALIDATE_INUM_MIN_DEF_COPY,SCM_VALIDATE_INUM_DEF,
4151 SCM_VALIDATE_INUM_DEF_COPY, SCM_VALIDATE_INUM_RANGE,
4152 SCM_VALIDATE_INUM_RANGE_COPY): Deprecated because they make the
4153 fixnum/bignum distinction visible. Changed all uses to
4154 scm_to_size_t or similar.
4155
41562004-07-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4157
4158 * cpp_cnvt.awk: Use scm_from_int instead of SCM_MAKINUM.
4159
48a06bd5
KR
41602004-07-10 Kevin Ryde <user42@zip.com.au>
4161
4162 * hash.c (scm_hashq, scm_hashv, scm_hash): Restrict to size>=1 rather
4163 than size>=0, since 0<=hash<size cannot be satisfied for size==0, and
4164 such a size causes divide-by-zeros in scm_hasher.
4165
052fbfd9
KR
4166 * regex-posix.c (scm_make_regexp): Free rx on error, to avoid memory
4167 leak.
4168
43240c9c
MV
41692004-07-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4170
4171 * numbers.c (scm_is_signed_integer, scm_is_unsigned_integer):
4172 Rewritten using the same logic as scm_to_signed_integer and
4173 scm_to_unsigned_integer, respectively, which is better(tm). Also,
4174 use CHAR_BIT instead of hardcoding 8.
4175 (LLONG_MIN, LLONG_MAX, ULLONG_MAX): Removed and used
4176 SCM_I_LLONG_MIN etc. instead.
4177
4178 * numbers.h (SCM_MAKINUM, SCM_I_MAKINUM): Renamed SCM_MAKINUM to
4179 SCM_I_MAKINUM and changed all uses.
4180 * deprecated.h, deprecated.c (SCM_MAKINUM): Newly deprecated.
4181
a3de8e7b
MV
4182 * gen-scmconfig.c (SCM_I_LLONG_MIN, SCM_I_LLONG_MAX,
4183 SCM_I_ULLONG_MAX): Instead of hard-coding the numbers, compute
43240c9c
MV
4184 them by assuming twos-complement.
4185
c9eb03bb
MV
41862004-07-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4187
4188 * gen-scmconfig.h.in: Added all the new SCM_I_GSC_*_LIMITS that
4189 configure now produces.
4190 * gen-scmconfig.c: Use them to output SCM_T_INT8_MIN, etc
4191 definitions, giving the limits of the integer types defined by
4192 Guile. Also, output a hard coded SCM_I_LLONG_MIN, etc since
4193 LLONG_MIN or LONG_LONG_MIN is hard to get at.
4194
4195 * numbers.h (scm_to_short, scm_to_ushort): It's SHRT_MIN, etc, not
4196 SHORT_MIN.
4197 (scm_to_size_t): Use SIZE_MAX instead of cooking our own.
4198 (scm_to_long_long, scm_to_ulong_long, scm_to_int8, scm_to_uint8,
4199 scm_to_int16, scm_to_uint16, scm_to_int32, scm_to_uint32,
4200 scm_to_int64, scm_to_uint64, scm_to_intmax, scm_to_uintmax,
4201 scm_from_long_long, scm_from_ulong_long, scm_from_int8,
4202 scm_from_uint8, scm_from_int16, scm_from_uint16, scm_from_int32,
4203 scm_from_uint32, scm_from_int64, scm_from_uint64, scm_from_intmax,
4204 scm_from_uintmax): New.
4205
7888309b
MV
42062004-07-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4207
4208 * tags.h (scm_is_eq): New.
4209
4210 * deprecated.h, boolean.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOL,
4211 SCM_NEGATE_BOOL, SCM_BOOLP): Deprecated by moving into
4212 "deprecated.h". Replaced all uses with scm_is_false, scm_is_true,
4213 scm_from_bool, and scm_is_bool, respectively.
4214
4215 * boolean.h (scm_is_bool): Fix bug in prototype.
4216 (scm_from_bool): The argument is "x" not "f", stupid.
4217
4218 * boolean.c (scm_is_bool): Fix typo.
4219
4220 * numbers.h, numbers.c (scm_is_integer, scm_is_signed_integer,
4221 scm_is_unsigned_integer, scm_to_signed_integer,
4222 scm_to_unsigned_integer, scm_to_schar, scm_to_uchar, scm_to_char,
4223 scm_to_short, scm_to_ushort, scm_to_long, scm_to_ulong,
4224 scm_to_size_t, scm_to_ssize_t, scm_from_schar, scm_from_uchar,
4225 scm_from_char, scm_from_short, scm_from_ushort, scm_from_int,
4226 scm_from_uint, scm_from_long, scm_from_ulong, scm_from_size_t,
4227 scm_from_ssize_t, scm_is_real, scm_to_double, scm_from_double):
4228 New.
4229
800570a6
MV
42302004-07-05 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4231
4232 * boolean.h, boolean.c (scm_is_true, scm_is_false, scm_from_bool,
4233 scm_to_bool): New.
4234
9fcf3cbb
DH
42352004-06-27 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4236
4237 * backtrace.c (display_expression, display_frame): Call
4238 scm_i_unmemoize_expr for unmemoizing a memoized object holding a
4239 single memoized expression.
4240
4241 * debug.c (memoized_print): Don't try to unmemoize the memoized
4242 object, since we can't know whether it holds a single expression
4243 or a body.
4244
4245 (scm_mem_to_proc): Removed check for lambda expression, since it
4246 was moot anyway. Whoever uses these functions for debugging
4247 purposes should know what they do: Creating invalid memoized code
4248 will cause crashes, independent of whether this check is present
4249 or not.
4250
4251 (scm_proc_to_mem): Take the closure's code as it is and don't
4252 append a SCM_IM_LAMBDA isym. To allow easier debugging, the
4253 memoized code should not be modified.
4254
4255 * debug.[ch] (scm_unmemoize, scm_i_unmemoize_expr): Removed
4256 scm_unmemoize from public use, but made scm_i_unmemoize_expr
4257 available as a guile internal function instead. However,
4258 scm_i_unmemoize_expr will only work on memoized objects that hold
4259 a single memoized expression. It won't work with bodies.
4260
4261 * debug.c (scm_procedure_source), macros.c (macro_print), print.c
4262 (scm_iprin1): Call scm_i_unmemocopy_body for unmemoizing a body,
4263 i. e. a list of expressions.
4264
4265 * eval.c (unmemoize_exprs): Drop internal body markers from the
4266 output during unmemoization.
4267
4268 * eval.[ch] (scm_unmemocopy, scm_i_unmemocopy_expr,
4269 scm_i_unmemocopy_body): Removed scm_unmemocopy from public use,
4270 but made scm_i_unmemocopy_expr and scm_i_unmemocopy_body available
4271 as guile internal functions instead. scm_i_unmemoize_expr will
4272 only work on a single memoized expression, while
4273 scm_i_unmemocopy_body will only work on bodies.
4274
90df793f
DH
42752004-06-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4276
4277 * eval.c (unmemoize_exprs): Handle semi-memoized code.
4278
4279 (scm_cons_source, scm_primitive_eval): Prefer higher level
4280 predicate SCM_FALSEP over SCM_IMP.
4281
8048c00b
RB
42822004-06-15 Rob Browning <rlb@defaultvalue.org>
4283
4284 * script.c (scm_shell_usage): minor phrasing change.
4285
4286 * gc_os_dep.c: update ifdefery for macosx.
4287 (scm_get_stack_base): separate result initialization from
4288 declaration to slience warnings with macosx and hp-ux using gcc
9a5fa6e9 4289 3.3. Thanks to Andreas Vögele.
8048c00b 4290
d93294d4
HWN
42912004-06-13 Han-Wen Nienhuys <hanwen@xs4all.nl>
4292
4293 * eval.c (unmemoize_exprs): use SCM_CONSP for the loop condition.
4294
212e58ed
DH
42952004-06-06 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4296
4297 * list.[ch] (scm_i_finite_list_copy): New internal function to
4298 copy lists that are known to be finite (though not necessarily
4299 proper).
4300
4301 * debug.c (scm_procedure_source): Don't have scm_unmemocopy treat
4302 a closure's argument list like an expression of a body.
4303
4304 * eval.c (unmemoize_expression, unmemoize_exprs, unmemoize_and,
4305 unmemoize_begin, unmemoize_case, unmemoize_cond, unmemoize_delay,
4306 unmemoize_do, unmemoize_if, unmemoize_lambda, unmemoize_let,
4307 unmemoize_letrec, unmemoize_letstar, unmemoize_or,
4308 unmemoize_set_x, unmemoize_apply, unmemoize_atcall_cc,
4309 unmemoize_at_call_with_values, unmemoize_future, sym_atslot_ref,
4310 unmemoize_atslot_ref, sym_atslot_set_x, unmemoize_atslot_set_x,
4311 unmemoize_builtin_macro): New static functions and symbols.
4312
4313 (scm_unmemocopy): Rewritten in terms of the above. scm_unmemocopy
4314 now has a slightly different meaning: The memoized form that is
4315 receives as its argument is now interpreted as a sequence of
4316 expressions from a body.
4317
4318 (unmemocar, scm_unmemocar): Since the whole functionality of
4319 unmemocar and scm_unmemocar is not needed any more, scm_unmemocar
4320 has its old content back and is deprecated, while unmemocar has
4321 been removed.
4322
4323 (SCM_BIT7): Removed.
4324
4325 (CEVAL): For unmemoizing a single expression, call
4326 unmemoize_expression instead of scm_unmemocopy, which now expects
4327 a sequence of body expressions. Eliminated unnecessary empty
4328 environment frame when executing let* forms. Eliminated
4329 unmemoization step from evaluator.
4330
9ccea370
MV
43312004-06-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4332
4333 * eval.c (scm_macroexp, macroexp): Renamed scm_macroexp to
4334 macroexp and made static. Added new version of scm_macroexp that
4335 emits a deprecation warning and then calls macroexp.
4336 (scm_m_undefine): Issue deprecation warning.
4337
57d23e25
DH
43382004-05-30 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4339
4340 * eval.c (lookup_global_symbol, literal_p, try_macro_lookup):
4341 Modified to make set! work on symbols that represent syntactic
4342 keywords.
4343
141521ad
HWN
43442004-05-26 Han-Wen Nienhuys <hanwen@xs4all.nl>
4345
4346 * gc.h (SCM_CELL_OBJECT_LOC): use SCM_GC_CELL_OBJECT to prevent
4347 compound expression as lvalue errors.
4348
7c2f56a4
MV
43492004-05-24 Marius Vollmer <mvo@zagadka.de>
4350
4351 * dynwind.c (winder_mark): Use SCM_PACK to correctly convert the
4352 WINDER_DATA to a SCM.
4353
366ecaec
DH
43542004-05-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4355
4356 * goops.c (compute_getters_n_setters, create_standard_classes,
4357 scm_add_slot): Compute closures by calling scm_i_eval_x on a
4358 lambda expression rather than creating them with scm_closure.
4359
26ecfa39
DH
43602004-05-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4361
4362 * eval.c (s_macro_keyword, scm_m_set_x): Remove checking for
4363 misplaced syntactic keywords. This will not work unless guile's
4364 defmacro feature is deprecated.
4365
4366 (scm_m_case): Fixed a bug that caused the list of labels to grow
4367 with every case form.
4368
f865229a
KR
43692004-05-19 Kevin Ryde <user42@zip.com.au>
4370
4371 * numbers.c (scm_round_number): For inum and big, just return x. For
4372 real, use scm_round for 2^54-1 etc problems covered there.
4373
4374 * numbers.c (trunc): Remove #define to scm_truncate when the C library
4375 doesn't provide trunc. This was for when `truncate' was done as a
4376 scm_tc7_dsubr, no longer required.
4377
4378 * threads.c (scm_threads_mark_stacks) [SCM_STACK_GROWS_UP]: Correction
4379 to stack marking call, two parameters and no cast on t->base.
4380
63947c7a
MV
43812004-05-18 Marius Vollmer <mvo@zagadka.de>
4382
4383 * hashtab.c (rehash_after_gc): Bug fix: properly link the
4384 processed hashtables back into the weak_hashtables list. Thanks
4385 to Bill Schottstaedt!
4386
e7313a9d
DH
43872004-05-16 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4388
4389 * eval.c (unmemoize_quote): New static function.
4390
4391 (scm_m_quote, scm_m_atslot_ref, SCM_CEVAL): Changed the byte code
4392 representation of 'quote' and '@slot-ref' to an improper list.
4393 This reduces execution time, the number of cells used to hold the
4394 memoized code, and thus also reduces garbage collection time.
4395
4396 (scm_unmemocopy): Use unmemoize_quote for quote expressions.
4397
4398 (SCM_CEVAL): Changed macro handling to also work with macros that
4399 return improper lists. Added an assertion, that the code returned
4400 by a macro transformer will not lead to cycles in the memoized
4401 code.
4402
e5156567
DH
44032004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4404
4405 No functional change, just rearrangements of functions within the
4406 file.
4407
4408 * eval.c (scm_ilookup, scm_unbound_variable_key,
4409 error_unbound_variable, scm_lookupcar1, scm_lookupcar): Moved to
4410 the definitions used for execution, since that's where they will
4411 belong to later.
4412
651f07f8
DH
44132004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4414
4415 * numbers.h (SCM_SLOPPY_FRACTIONP): Removed. It was not used
4416 throughout guile, has not been part of an official release yet,
4417 and the concept of sloppy predicates has never been a good idea.
4418
4419 (SCM_FRACTION_NUMERATOR, SCM_FRACTION_DENOMINATOR,
4420 SCM_FRACTION_SET_NUMERATOR, SCM_FRACTION_SET_DENOMINATOR):
4421 Simplified.
4422
770e048f
DH
44232004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4424
4425 * throw.c (SETJBJMPBUF, SCM_SETJBDFRAME): Add cast to scm_t_bits
4426 to make explicit what happens.
4427
2ff08405
DH
44282004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4429
4430 * dynl.c (SET_DYNL_HANDLE): Add cast to scm_t_bits to make
4431 explicit what happens.
4432
4433 * guardians.c (TCONC_IN): Use SCM_SET_CELL_OBJECT_x rather than
4434 SCM_SET_CELL_WORD_x when writing scheme objets to cell elements.
4435
89afb9cd
MV
44362004-05-11 Marius Vollmer <mvo@zagadka.de>
4437
4438 * scmsigs.c (scm_sigaction_for_thread): Validate that the handler
4439 is indeed a procedure when it isn't a number.
4440
3d5ebfa9
MV
44412004-05-10 Marius Vollmer <mvo@zagadka.de>
4442
4443 Convert floating point numbers into strings with an arbitrary
4444 radix. Thanks to Richard Todd!
4445
4446 * numbers.c (FLOBUFLEN): Increase so that radix 2 strings will
4447 fit.
4448 (fx): Removed.
4449 (scm_dblprec, fx_per_radix, init_dblprec, init_fx_radix,
4450 number_chars): New, to support variable radices.
4451 (idbl2str): Use above instead of the old base-10 only tables.
4452 (iflo2str): Pass on new RADIX argument to idbl2str.
4453 (scm_number_to_string): Pass radix to iflo2str.
4454 (scm_print_real, scm_print_complex): Explicitly pass radix 10 to
4455 iflo2str.
4456 (scm_init_numbers): Call init_dblprec and init_fx_radix for all
4457 possible radices.
4458
3ae69bb4
KR
44592004-05-10 Kevin Ryde <user42@zip.com.au>
4460
4461 * numbers.c (scm_logbit_p): Correction to test above the end of an
4462 inum. Reported by Jan Konecny.
4463
27968825
MV
44642004-05-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4465
4466 * gc.h (scm_t_cell): Fields are now of type SCM instead of
4467 scm_t_bits. Updated all users.
4468 (SCM_GC_CARD_SIZE_MASK): Use SCM_GC_SIZEOF_CARD instead of
4469 duplicating the code.
4470 (SCM_CELL_OBJECT_LOC): New.
4471 (SCM_CARLOC, SCM_CDRLOC): Use it instead of SCM_CELL_WORD_LOC.
4472 (SCM_CELL_WORD_LOC): Moved to "deprecated.h".
4473
4474 * smob.h (SCM_SMOB_DATA_2, SCM_SMOB_DATA_3, SCM_SMOB_FLAGS,
4475 SCM_SET_SMOB_DATA_2, SCM_SET_SMOB_DATA_3, SCM_SET_SMOB_FLAGS,
4476 SCM_SMOB_OBJECT, SCM_SMOB_OBJECT_2, SCM_SMOB_OBJECT_3,
4477 SCM_SET_SMOB_OBJECT, SCM_SET_SMOB_OBJECT_2, SCM_SET_SMOB_OBJECT_3,
4478 SCM_SMOB_OBJECT_LOC, SCM_SMOB_OBJECT_2_LOC,
4479 SCM_SMOB_OBJECT_3_LOC): New.
4480 * smob.c (scm_i_set_smob_flags): New function.
4481
4482 * dynl.c, dynwind.c, eval.h, fluids.h, futures.h, hashtab.h,
4483 hooks.h, keywords.h, macros.h, macros.c, mallocs.c, mallocs.h,
4484 random.h, regex-posix.h, root.h, srcprop.h, srcprop.c, threads.h:
4485 Use SCM_SMOB_* instead of SCM_CELL_* as appropriate. Use
4486 SCM_SMOB_FLAGS and SCM_SET_SMOB_FLAGS instead of accessing the
4487 zeroth word directly. Use SCM_SMOB_PREDICATE as appropriate.
4488
4489 * numbers.h (SCM_I_BIG_MPZ): Use SCM_CELL_OBJECT_LOC instead of
4490 taking the address of SCM_CELL_WORD_1, the latter being no longer
4491 an lvalue.
4492
4493 * variable.h (SCM_VARIABLE_LOC): Use SCM_CELL_OBJECT_LOC instead
4494 of casting SCM_CELL_WORD_LOC.
4495
3cf17ef0
KR
44962004-05-02 Kevin Ryde <user42@zip.com.au>
4497
37026925 4498 * eval.c (scm_macroexp): Add prototype, since it's not in eval.h under
9a5fa6e9 4499 --disable-deprecated. Reported by Andreas Vögele.
37026925 4500
3cf17ef0 4501 * filesys.c (_POSIX_C_SOURCE): Define to 199506L to get readdir_r (in
9a5fa6e9 4502 particular on HP-UX). Reported by Andreas Vögele.
3cf17ef0 4503
c5854598
KR
4504 * list.c (varargs.h): Remove, leave just stdarg.h which is all the
4505 code has support for. Fixes building with AIX cc, which is ansi but
4506 doesn't define __STDC__. Reported by Keith Crane.
4507 (var_start): Remove macro, this variation no longer required.
4508 (scm_list_n): Use va_start directly.
4509
f26c1a32
KR
45102004-05-01 Kevin Ryde <user42@zip.com.au>
4511
4512 * continuations.c (scm_dynthrow): Use >= instead of SCM_PTR_GE which
9a5fa6e9 4513 is now gone. Reported by Andreas Vögele.
f26c1a32 4514
dfa6017e
KR
45152004-04-28 Kevin Ryde <user42@zip.com.au>
4516
4517 * backtrace.c (display_frame_expr), numbers.c (XDIGIT2UINT,
4518 mem2uinteger, mem2decimal_from_point, mem2ureal): Cast char to int for
4519 ctype.h tests, to avoid warnings from gcc on HP-UX about char as array
9a5fa6e9 4520 subscript. Reported by Andreas Vögele.
dfa6017e
KR
4521 Also cast through unsigned char to avoid passing negatives to those
4522 macros if input contains 8-bit values.
4523
4524 * num2integral.i.c (NUM2INTEGRAL): Under non-BIGMPZ_FITSP case,
4525 corrections to range check for signed numbers. Remove
4526 scm_remember_upto_here_1(num) from these checks, since num is used
4527 subsequently anyway.
4528
4529 * num2integral.i.c (NUM2INTEGRAL): Test BIGMPZ_FITSP with "!= 0" to
4530 avoid warning from gcc 3.4. Reported by Hyperdivision.
4531
4532 * numbers.c (scm_bit_extract): Use min instead of MIN.
4533 (MIN): Remove, this conflicts with similar macro defined by limits.h
9a5fa6e9 4534 on HP-UX. Reported by Andreas Vögele.
dfa6017e
KR
4535
4536 * stime.c (_POSIX_C_SOURCE): Define to 199506L to get gmtime_r (in
9a5fa6e9 4537 particular on HP-UX). Reported by Andreas Vögele.
dfa6017e 4538
a0d06a00 4539 * threads.c (scm_threads_mark_stacks): Correction sizet -> size_t.
9a5fa6e9 4540 Reported by Andreas Vögele.
a0d06a00 4541
dfa6017e
KR
4542 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 25*sizeof(long),
4543 for the benefit of hpux11 where pthread_mutex_t is 88 bytes. Reported
9a5fa6e9 4544 by Andreas Vögele.
dfa6017e 4545
36245b66
DH
45462004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4547
4548 * eval.c (s_macro_keyword): New static identifier.
4549
4550 (scm_m_define): Change order to first create binding and
4551 evaluating the expression afterwards.
4552
4553 (scm_m_set_x): Memoize complete set! expression. Only leave
4554 symbols if no binding exists at memoization time. Throw error if
4555 assigning to a syntactic keyword.
4556
4557 (lazy_memoize_variable): New function.
4558
4559 (CEVAL): When execution set!, perform lazy memoization if
4560 unmemoized symbol is detected.
4561
4562 * modules.c (module_variable): Return variables with unbound
4563 value.
4564
4565 * tags.h: Fix comment.
4566
4d81111e
KR
45672004-04-25 Kevin Ryde <user42@zip.com.au>
4568
da8bcb2f
KR
4569 * chars.c (scm_char_upcase, scm_char_downcase, scm_c_upcase,
4570 scm_c_downcase): Use ctype.h toupper and tolower. This will be useful
4571 in 8-bit locales, and ensures consistency with char-upper-case? and
4572 char-lower-case? which already use ctype.h.
4573 (scm_c_upcase_table, scm_c_downcase_table, scm_lowers, scm_uppers):
4574 Remove.
4575 * chars.c, chars.h, init.c (scm_tables_prehistory): Remove.
4576
4d81111e
KR
4577 * socket.c (VALIDATE_INET6): Correction to bignum_in_ipv6_range_p
4578 call. Reported by Hyperdivision.
4579
4580 * threads.c (scm_yield): Correction, actually call scm_thread_yield.
4581 Reported by Hyperdivision.
4582
4583 * unif.c (s_scm_make_uve): Remove unused local variable. Reported by
4584 Hyperdivision.
4585
7e6e6b37
DH
45862004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4587
4588 Hide the implementation of ilocs and isyms in eval.c.
4589
4590 * deprecated.h (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4591 SCM_ICDRP), eval.c (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4592 SCM_ICDRP), eval.h (SCM_ICDR, SCM_IFRINC, SCM_IFRAME, SCM_IDIST,
4593 SCM_ICDRP): Deprecated and added to deprecated.h. Moved from
4594 eval.h to eval.c.
4595
4596 * deprecated.c (scm_isymnames), deprecated.h (scm_isymnames,
4597 SCM_ISYMNUM, SCM_ISYMCHARS), eval.c (SCM_ISYMNUM, isymnames,
4598 scm_unmemocopy, CEVAL), print.c (scm_isymnames), tags.h
4599 (SCM_ISYMNUM, scm_isymnames, SCM_ISYMCHARS): Deprecated
4600 scm_isymnames, SCM_ISYMNUM and SCM_ISYMCHARS and added to
4601 deprecated.[hc]. Moved scm_isymnames from print.c to eval.c and
4602 renamed to isymnames. Moved SCM_ISYMNUM from tags.h to eval.c and
4603 renamed to ISYMNUM.
4604
4605 * eval.c (scm_i_print_iloc, scm_i_print_isym), eval.h
4606 (scm_i_print_iloc, scm_i_print_isym), print.c (scm_iprin1):
4607 Extracted printing of ilocs and isyms to guile internal functions
4608 scm_i_print_iloc, scm_i_print_isym of eval.c.
4609
caab294f
KR
46102004-04-22 Kevin Ryde <user42@zip.com.au>
4611
7aaf4758
KR
4612 * numbers.c (scm_bit_extract): Use SCM_SRS for signed right shift.
4613
caab294f
KR
4614 * numbers.c (scm_round): Test for x already an integer, to avoid bad
4615 rounding in x+0.5 when x is a big value already an integer. In
4616 certain hardware rounding cases x+0.5 can give an adjacent integer,
4617 leading to that as the result, when we really just wanted x itself.
4618
b1cb24ff
DH
46192004-04-19 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4620
4621 * eval.c (scm_unmemocopy): Fixed unmemoization of let*.
4622
4623 (deval_args, CEVAL): Minor improvements: Reduced variable scopes,
4624 added const qualifiers, cast intentionally unused expressions to
4625 void for emphasis, improved comment.
4626
5065b40d
DH
46272004-04-18 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4628
4629 * tags.h (scm_tags, scm_tc8_tags, scm_tc9_flag, scm_tc8_flag,
4630 scm_tc8_isym): Renamed scm_tags to scm_tc8_tags. Renamed
4631 scm_tc9_flag to scm_tc8_flag. Introduced new identifier
4632 scm_tc8_isym. Defined tc8-tags relative to scm_tc3_imm24.
4633 Defined the tc8-tag for flags to be 0x04, which will mean that
4634 SCM_BOOL_F will also have the value 0x04 instead of 0x013c. Due
4635 to the reduced number of bits and the simpler bit pattern for
4636 SCM_BOOL_F, certain machines may be able to use more efficient
4637 processor instructions to deal with SCM_BOOL_F.
4638
4639 (SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA): Removed. These have
4640 never been defined in a released version, thus no need to
4641 deprecate them.
4642
4643 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Flags now use tc8
4644 instead of tc9 tags.
4645
4646 (SCM_ISYMP, SCM_MAKISYM, SCM_ISYMNUM): Isyms now use tc8 instead
4647 of tc9 tags.
4648
4649 (SCM_MAKSPCSYM): Removed. It is almost impossible that user code
4650 could have used this definition.
4651
4652 (SCM_IM_AND, SCM_IM_BEGIN, SCM_IM_CASE, SCM_IM_COND, SCM_IM_DO,
4653 SCM_IM_IF, SCM_IM_LAMBDA, SCM_IM_LET, SCM_IM_LETSTAR,
4654 SCM_IM_LETREC, SCM_IM_OR, SCM_IM_QUOTE, SCM_IM_SET_X): Now encoded
4655 as isyms, as special isyms don't exist any more.
4656
9fa6c119
KR
46572004-04-18 Kevin Ryde <user42@zip.com.au>
4658
e08d2eee
KR
4659 * filesys.c (scm_readdir): Use readdir_r when available, for thread
4660 safety.
4661
9fa6c119
KR
4662 * numbers.c (scm_max, scm_min): For big/real, use SCM_SWAP rather than
4663 explicit swapping code.
4664
c9cdd396
KR
46652004-04-15 Kevin Ryde <user42@zip.com.au>
4666
4667 * cpp_sig_symbols.in: Add SIGSYS.
4668
4669 * list.c (scm_append_x): Use iterative style, to avoid non-tail
4670 recursion.
4671
4672 * numbers.c (scm_max, scm_min): For inum/frac, frac/inum, big/frac,
4673 frac/big and frac/frac, use scm_less_p for exact comparison.
4674
83ac9c59
KR
4675 * numbers.c (scm_gcd): For inum/big, use mpz_gcd_ui by sharing code
4676 with big/inum.
4677
84a4be9a
KR
4678 * numbers.c (xisinf): Add a comment about solaris 7 lacking isinf.
4679
84fad130
HWN
46802004-04-06 Han-Wen Nienhuys <hanwen@xs4all.nl>
4681
6b69393d
HWN
4682 * inline.h (scm_cell): use SCM_GC_CELL_WORD for checking tag.
4683
84fad130
HWN
4684 * chars.h (scm_init_chars): change scm_{upcase,downcase} to
4685 scm_c_{up,down}case.
4686 (SCM_MAKE_CHAR): add (unsigned char) cast. This prevents havoc
4687 when hi-bit ASCII is subjected to SCM_MAKE_CHAR().
4688
c3110a30
KR
46892004-04-06 Kevin Ryde <user42@zip.com.au>
4690
0b288f36
KR
4691 * numbers.c (scm_ash): Remove stray "}" in docstring.
4692
ea2508c8
KR
4693 * numbers.c (scm_make_ratio): For inum/bignum integer detection, use
4694 x==SCM_MOST_NEGATIVE_FIXNUM explicitly, for clarity and to avoid
4695 calling mpz_cmp_ui in most cases.
4696
c3110a30
KR
4697 * numbers.c (scm_quotient, scm_remainder): In inum/big, use mpz_cmp_ui
4698 for big == abs(most-negative-fixnum) special case.
4699 (abs_most_negative_fixnum): Remove, no longer used.
4700
4701 * scmsigs.c (scm_sigaction_for_thread): Correction to signum range
4702 test, avoids SCM_VECTOR_REF outside bounds of signal_handlers on
4703 calling (sigaction NSIG).
4704
4705 * simpos.c (scm_system_star): Fix execargv memory leak, merge parent
4706 and fork error cases to do this.
4707
dec40cd2
DH
47082004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4709
4710 * eval.c (CEVAL): Don't distinguish between short and long
4711 instructions when dispatching - just always dispatch on the
4712 instruction code, which is common for short and long instructions.
4713 Further, removed unnecessary goto statements and added comment.
4714
0e7bb795
DH
47152004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4716
4717 * eval.c (scm_unmemocopy): Don't distinguish between short and
4718 long instructions when dispatching - just always dispatch on the
4719 instruction code, which is common for short and long instructions.
4720 Further, removed unnecessary goto statements, fixed indentation
4721 and replaced SCM_IMP predicates by SCM_NULLP.
4722
f9986767
DH
47232004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4724
4725 * eval.c (scm_lookupcar1, CEVAL): Use SCM_ILOCP instead of
4726 comparison with SCM_ILOC00. In CEVAL, eliminate goto-label
4727 'checkmacro'.
4728
fbc42231
KR
47292004-03-31 Kevin Ryde <user42@zip.com.au>
4730
4731 * simpos.c: Include <signal.h> for SIG_IGN and friends.
4732
434f2f7a
DH
47332004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4734
4735 Introduce scm_debug_mode_p as a replacement for scm_debug_mode and
4736 SCM_DEBUGGINGP:
4737
4738 * debug.h (scm_debug_mode_p, scm_debug_mode, SCM_DEBUGGINGP),
4739 eval.c (scm_debug_mode_p): Deprecated scm_debug_mode and
4740 SCM_DEBUGGINGP. Provided scm_debug_mode_p instead, to have one
4741 single interface that also matches the naming conventions.
4742 Probably scm_debug_mode_p should be part of the private interface
4743 anyway.
4744
4745 * debug.h (scm_debug_mode_p), backtrace.c (display_error_body),
4746 eval.c (SCM_APPLY, scm_trampoline_0, scm_trampoline_1,
4747 scm_trampoline_2): Change uses of scm_debug_mode or SCM_DEBUGGINGP
4748 to scm_debug_mode_p.
4749
4750
4751 Deprecate direct access to scm_ceval, scm_deval and scm_ceval_ptr:
4752
4753 * eval.h (scm_ceval, scm_deval, scm_ceval_ptr), debug.h
4754 (scm_ceval_ptr): Deprecated. Moved declaration of scm_ceval_ptr
4755 from debug.h to eval.h.
4756
4757 * debug.h (SCM_RESET_DEBUG_MODE): Don't access scm_ceval_ptr any
4758 more, just leave it with setting scm_debug_mode_p, which is
4759 equivalent for practical purposes.
4760
4761 * deprecated.h (SCM_XEVAL, SCM_XEVALCAR): Call scm_i_eval_x
4762 instead of *scm_ceval_ptr. Leave all evaluating to scm_i_eval_x.
4763
4764 * gdbint.c (gdb_eval): Call scm_i_eval_x instead of scm_ceval.
4765
4766 * eval.c (ceval, deval, scm_ceval, scm_deval): Made scm_ceval
4767 static and renamed it to ceval throughout. Provide a new exported
4768 but deprecated function scm_ceval as a wrapper for backwards
4769 compatibility. The same is done for the deval/scm_deval pair of
4770 functions.
4771
4772 * eval.c (CEVAL, SCM_CEVAL): Renamed SCM_CEVAL to CEVAL
4773 throughout. Defined CEVAL to ceval or deval, based on compilation
4774 phase.
4775
4776 * eval.c (SCM_XEVAL, SCM_XEVALCAR): Dispatch on scm_debug_mode_p
4777 to ceval and deval instead of calling *scm_ceval_ptr.
4778
4779 * eval.c (dispatching_eval): New deprecated static function.
4780
4781 * eval.c (scm_ceval_ptr): Initialized to dispatching_eval in order
4782 to emulate its old behaviour as closely as possible.
4783
4784
4785 Change the evaluator such that only expressions for which pair? is
4786 true are passed to CEVAL, and such that all other expressions are
4787 evaluated outside of CEVAL:
4788
4789 * eval.c (EVAL): New, provided in analogy to EVALCAR. Evaluate an
4790 expression that is assumed to be memoized already. All but
4791 expressions of the form '(<form> <form> ...)' are evaluated inline
4792 without calling an evaluator.
4793
4794 * eval.c (SCM_XEVAL, SCM_XEVALCAR, EVALCAR): Evaluate all but
4795 expressions of the form '(<form> <form> ...)' inline without
4796 calling an evaluator.
4797
4798 * eval.c (scm_i_eval_x, scm_i_eval, scm_ceval, scm_deval): Handle
4799 the special case of unmemoized symbols passed on the top level.
4800
4801 * eval.c (CEVAL): Change calls to CEVAL to EVAL, except where it
4802 is known that the expression passed to CEVAL is of the form
4803 '(<form> <form> ...)'. Remove handling of the tc7-objects, since
4804 now it is known that the input expression of CEVAL is a pair.
4805
48062004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5fb64383
DH
4807
4808 * eval.c (is_self_quoting_p): New static function.
4809
4810 (scm_m_quote): Use is_self_quoting_p.
4811
4812 (copy_tree): Corrected typo in comment.
4813
702551e6
HWN
48142004-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
4815
bfefbf18
HWN
4816 * eval.c (s_scm_copy_tree): idem.
4817
4818 * list.c (s_scm_filter): remove "pointer" from doc string.
4819
702551e6
HWN
4820 * gc.h (SCM_GC_CELL_TYPE): SCM_GC_CELL_TYPE uses SCM_GC_CELL_OBJECT.
4821
4822 * goops.h (SCM_NUMBER_OF_SLOTS): don't SCM_UNPACK the result.
4823
4824 * backtrace.c ("display_backtrace_body"): SCM_PACK before SCM_EQ_P
4825 (display_frame): idem.
4826 (display_backtrace_file_and_line): idem.
4827
4828 * tags.h (SCM_UNPACK): stricter typechecking on SCM_UNPACK
4829 arguments.
4830
3cd23214
KR
48312004-03-26 Kevin Ryde <user42@zip.com.au>
4832
88a7ae1f
KR
4833 * filesys.c (scm_getcwd, scm_readlink): Avoid memory leak on errors.
4834
3cd23214
KR
4835 * numbers.c (scm_modulo): For inum/big and big/big, remove test of
4836 big==0 since that never occurs.
4837
4838 * numbers.c, numbers.h (scm_modulo_expt): Renamed from
4839 scm_modular_expt, matching scheme level name `modulo-expt'.
4840
4841 * numbers.c (scm_modular_expt): Return a negative remainder for a
4842 negative divisor, the same as `modulo' does.
4843
48442004-03-26 Eric Hanchrow <offby1@blarg.net>
4845
4846 * numbers.c, numbers.h (scm_modular_expt): New function.
4847
2926035a
KR
48482004-03-25 Kevin Ryde <user42@zip.com.au>
4849
4850 * numbers.c (scm_min, scm_max): Correction to big/real and real/big,
4851 return inexact as required by r5rs.
4852
62360b89
DH
48532004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4854
4855 * eval.c: Separated some definitions relevant for execution from
4856 the memoization part of the file.
4857
4858 (copy_tree): New static function
4859
4860 (scm_copy_tree): Rewritten to fix two kinds or bugs: First, cyclic
4861 structures are detected now and will lead to an exception instead
4862 of forcing guile to run in an endless loop, using up all the
4863 system's memory. Second, arrays in the cdr of an improper list
4864 are now copied. See the new test cases in eval.test.
4865
48662004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
b28f5b3c
DH
4867
4868 * posix.c (scm_gethostname): Make sure len is initialised before
4869 it is used. Restructured to (hopefully) represent possible
4870 configurations more clearly in the code. Added unwind handler.
4871
3bd3bae8
KR
48722004-03-23 Kevin Ryde <user42@zip.com.au>
4873
4874 * posix.c (scm_gethostname): Use sysconf(_SC_HOST_NAME_MAX) and/or
4875 MAXHOSTNAMELEN when available.
4876
254bf78d
MV
48772004-03-21 Marius Vollmer <mvo@zagadka.de>
4878
4879 * read.c (skip_scsh_block_comment): Also recognize '\r' as a line
4880 terminator. Rewritten the logic as a state machine, I must have
4881 been doing too much VHDL lately...
4882
4883 * eval.c (scm_ceval, scm_deval): Explicitely evaluate ports to
4884 themselves. Thanks to Han-Wen Nienhuys!
4885
4886 * list.c: Changed docstrings so that they no longer talk about
4887 returning 'pointers' to something.
4888
009c34a2
HWN
48892004-03-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
4890
4891 * gc.c: remove set_debug_cell_accesses! when
4892 SCM_DEBUG_CELL_ACCESSES is not defined. Scheme source code should
4893 use (if (defined? 'set-debug-cell-accesses!) .. ) to switch on
4894 debugging conditionally.
4895
54733c95
KR
48962004-03-21 Kevin Ryde <user42@zip.com.au>
4897
4898 * stime.c (scm_gmtime): Use gmtime_r when available, for thread safety.
4899
bbaf8747
KR
49002004-03-20 Kevin Ryde <user42@zip.com.au>
4901
4902 * posix.c (scm_gethostname): Preserve errno across free() call.
4903
726f82e7
HWN
49042004-03-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
4905
4906 * gc-card.c (sweep_card): use SCM_GC_SET_CELL_WORD for setting
4907 free cells.
4908
e1350d6a
KR
49092004-03-14 Kevin Ryde <user42@zip.com.au>
4910
4911 * stime.c: Define _GNU_SOURCE for strptime prototype from glibc.
4912 (strptime): Use HAVE_DECL_STRPTIME for when to give own prototype.
4913
62055253
KR
49142004-03-07 Kevin Ryde <user42@zip.com.au>
4915
4916 * stime.c (scm_gmtime): Return bd_time->tm_zone when available, rather
4917 than "GMT" always.
4918 (filltime): Make zname parameter "const".
4919
92e64b87
MD
49202004-03-03 Mikael Djurfeldt <mdj@chunk.mit.edu>
4921
4922 * threads.c, threads.h (scm_c_scm2thread): New function.
4923
004ad931
KR
49242004-02-29 Kevin Ryde <user42@zip.com.au>
4925
4926 * numbers.c (guile_ieee_init): Use C99 INFINITY and NAN when
4927 available. Test HAVE_DINFINITY and HAVE_DQNAN for those globals, in
4928 particular don't assume "defined (__alpha__) && ! defined (linux)"
4929 means OSF. Remove "SCO" code, which was not really SCO specific and
4930 which John W. Eaton advises should be long past being needed.
4931
4932 * posix.c (scm_execl, scm_execlp, scm_execle): Avoid memory leak under
4933 error throw.
4934
72ea45ac
KR
49352004-02-24 Kevin Ryde <user42@zip.com.au>
4936
4937 * posix.c (scm_cuserid): Use a private result buffer, for thread safe.
4938
2af0602e
KR
49392004-02-22 Kevin Ryde <user42@zip.com.au>
4940
4941 * numbers.c (scm_max, scm_min): For one arg, dispatch to generic for
4942 complex, same as for two args. (Handle only inum, big, real, frac).
4943
b114eafe
KR
49442004-02-21 Kevin Ryde <user42@zip.com.au>
4945
4946 * posix.c (scm_crypt): Use new HAVE_CRYPT.
4947 (<crypt.h>): Remove HAVE_LIBCRYPT condition.
db752bb5 4948 Reported by Andreas Voegele.
b114eafe 4949
1e55d288
NJ
49502004-02-20 Neil Jerram <neil@ossau.uklinux.net>
4951
4952 * list.c (scm_list_n): Add #if SCM_DEBUG_CELL_ACCESSES_P around
4953 validation.
4954
4955 * read.c (scm_lreadparen): Removed.
4956 (scm_lreadparen1): Renamed scm_i_lreadparen.
4957
eb741d98
HWN
49582004-02-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
4959
4960 * list.c (scm_list_n): validate non-immediate arguments;
4961 this will catch forgotten a SCM_UNDEFINED.
4962
4e28ba5e
MV
49632004-02-18 Marius Vollmer <mvo@zagadka.de>
4964
4965 * gc.h (scm_gc_cells_collected): Removed duplicated declaration.
4966 Thanks to Bill Schottstaedt!
4967
4968 * socket.h (scm_gethost): Removed prototype it is already in
4969 "net_db.h". Thanks to Bill Schottstaedt!
4970
ef861ead
KR
49712004-02-18 Kevin Ryde <user42@zip.com.au>
4972
4973 * num2integral.i.c (INTEGRAL2BIG): WORDS_BIGENDIAN not right for word
4974 order parameter to mpz_import, in fact with just one word there's no
4975 order to worry about at all.
4976
4977 * numbers.c (scm_num_eq_p): For real==frac, complex==frac, frac==real
4978 and frac==complex, make an exact comparison rather than converting
4979 with fraction2double.
4980
4981 * posix.c, putenv.c, stime.c (environ): Use _NSGetEnviron in Darwin
4982 shared library, since environ is not directly available there.
4983
4984 * script.c (scm_shell_usage): Print to stdout for --help, per GNU
4985 standard.
4986
4987 * stime.c (scm_localtime, scm_gmtime, scm_mktime): Provide a default
4988 errno EINVAL in case localtime and gmtime don't set it.
4989 (scm_mktime, scm_strptime): Forcibly use errno EINVAL for our
4990 SCM_SYSERROR, since mktime and strptime generally don't set errno.
4991
ae43d08e 49922004-02-16 Kevin Ryde <kevin@swox.se>
292dfa7f 4993
c9ea6462
KR
4994 * gc-malloc.c (scm_done_malloc, scm_done_free): Allow negative sizes,
4995 which were permitted in the past for these.
4996
292dfa7f
KR
4997 * num2float.i.c (NUM2FLOAT): Expand isfinite to !xisinf, as per
4998 previous change to numbers.c.
4999
ae43d08e
KR
5000 * script.c (scm_shell_usage): Print bug-guile email address, as per
5001 GNU standard. Reported by Han-Wen Nienhuys.
5002
711a9fd7
MD
50032004-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5004
5005 * unif.c (scm_make_uve): Removed local variable and simplified
5006 code in order to avoid compiler used uninitialized warnings.
5007
5008 * hashtab.c, hashtab.h (scm_hash_map_to_list): Renamed from
5009 scm_hash_map.
5010 (scm_hash_fold): Use scm_call_3 directly in the call to
5011 scm_internal_hash_fold instead of going via fold_proc (which is
5012 now removed).
5013 (scm_hash_for_each): Use a trampoline +
5014 scm_internal_hash_for_each_handle.
5015 (scm_internal_hash_for_each_handle, scm_hash_for_each_handle): New
5016 functions.
5017
3da7f6b2
KR
50182004-02-12 Kevin Ryde <user42@zip.com.au>
5019
344a212f
KR
5020 * ports.c (scm_port_line): In docstring, note first line is 0.
5021 (scm_set_port_line_x): In docstring, note first line is 0.
5022 (scm_port_column): In docstring, there's no default to current input
5023 port, and remove shared port-line @defun.
5024 (scm_set_port_column_x): In docstring, there's no default to current
5025 input port, note first column is 0, remove shared set-port-line!
5026 @defun.
5027
3da7f6b2
KR
5028 * ramap.c (scm_array_fill_x): For fvect and dvect, use scm_num2dbl to
5029 convert args the same way that array-set! does.
5030
5031 * unif.c (scm_make_uve, scm_array_p): Allow fraction 1/3 as prototype
5032 for dvect.
5033 (scm_array_p): Add missing "break"s in switch, fix llvect test look
5034 for "l" not "s", fix dvect to be false for singp(prot) since such a
5035 value is for fvect.
5036 (scm_array_prototype): Return 1/3 for dvect, rather than 0.33..33.
88531a74
KR
5037 (exactly_one_third): New variable.
5038 (scm_init_unif): Initialize it.
3da7f6b2 5039
cd21f5eb
NJ
50402004-02-10 Neil Jerram <neil@ossau.uklinux.net>
5041
5042 * read.c (scm_read_opts): Change `escaped-parens' to
5043 `elisp-strings'.
5044
16353acc
NJ
50452004-02-08 Neil Jerram <neil@ossau.uklinux.net>
5046
5047 * read.c (scm_read_opts): New opts `elisp-vectors' and
5048 `escaped-parens'.
5049 (s_vector): New.
5050 (scm_lreadr): Use scm_lreadparen1 instead of scm_lreadparen. Make
5051 handling of elisp vector syntax dependent on SCM_ENABLE_ELISP and
5052 `elisp-vectors' option instead of SCM_ELISP_READ_EXTENSIONS.
5053 Allow "\(" and "\)" in strings when SCM_ENABLE_ELISP defined and
5054 `escaped-parens' option set.
5055 (scm_read_token): If elisp vector syntax active, disallow [ and ]
5056 in tokens.
5057 (scm_lreadparen): Rewrite as interface to scm_lreadparen1.
5058 (scm_lreadparen1): New.
5059
5060 * read.h: Remove conditionally compiled last arg to
5061 scm_lreadparen.
5062 (SCM_ELISP_VECTORS_P, SCM_ESCAPED_PARENS_P): New.
5063
f62b9dff
HWN
50642004-01-23 Han-Wen Nienhuys <hanwen@xs4all.nl>
5065
5066 * eval.c (m_expand_body): remove stray variable new_body.
5067
ef5b6b61
MV
50682004-01-22 Marius Vollmer <mvo@zagadka.de>
5069
5070 * eval.c (m_expand_body): Rewrite the expression in place (by
5071 overwriting FORMS) also when a letrec is constructed, not only
5072 when no definitions are found. Do not return rewritten expression
5073 to emphasize the in-place rewriting. Changed all users.
5074
7eec4c37
HWN
50752004-01-19 Han-Wen Nienhuys <hanwen@xs4all.nl>
5076
5077 * gc.c: add protected_object_count, a number that is dumped from
5078 gc_stats()
5079
25ffbdac
MV
50802004-01-11 Marius Vollmer <mvo@zagadka.de>
5081
5082 * dynwind.h, dynwind.c (scm_frame_unwind,
5083 scm_frame_unwind_handler): Renamed and changed all uses.
5084 (scm_frame_rewind, scm_frame_rewind_handler): Likewise.
5085
08568c95
KR
50862004-01-11 Kevin Ryde <user42@zip.com.au>
5087
5088 * unif.c (scm_bit_count, scm_bit_position, s_scm_bit_set_star_x,
5089 s_scm_bit_count_star, s_scm_bit_invert_x): Clarify docstrings, as per
5090 changes made to scheme-compound.texi.
5091
5565749c
MV
50922004-01-10 Marius Vollmer <mvo@zagadka.de>
5093
25ffbdac
MV
5094 * print.c (scm_print_symbol_name): Handle #{`foo}#, #{,foo}#,
5095 #{.}#, and all numeric strings specially. Thanks to Paul Jarc!
5096
5097 * guile-snarf.in: Use mkdir to create a unique temporary directory
5098 that we can safely use. Thanks to Stefan Nordhausen!
5565749c 5099
fc6bb283
MV
51002004-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5101
7ebccde8
MV
5102 * dynwind.h, dynwind.c (scm_i_dowinds): Removed 'explicit'
5103 argument since it is always zero now. Changed all callers.
5104 Removed code for handling fluids.
96e3b2f8
MV
5105
5106 * fluids.c (scm_c_with_fluids): Use frames instead of adding to
5107 the wind chain explicitely. Use scm_c_with_fluid for the common
5108 case of only one fluid.
5109 (scm_with_fluid): New.
5110 (scm_c_with_fluid): Use frames instead of scm_c_with_fluids.
5111
fc6bb283 5112 * fluids.h, fluids.c (scm_frame_fluid): New.
96e3b2f8
MV
5113 (scm_with_fluid): New.
5114 (scm_i_swap_fluids, scm_i_swap_fluids_reverse): Removed.
fc6bb283
MV
5115
5116 * dynwind.c (scm_frame_end): Do not use scm_i_dowinds. Instead,
5117 do the unwinding directly. It is simple enough.
5118
5119 * dynwind.h, dynwind.c: Did the following renamings:
5120 scm_begin_frame -> scm_frame_begin,
5121 scm_end_frame -> scm_frame_end,
5122 scm_on_unwind -> scm_frame_unwind,
5123 scm_on_rewind -> scm_frame_rewind,
5124 scm_on_unwind_with_scm -> scm_frame_unwind_with_scm,
5125 scm_on_rewind_with_scm -> scm_frame_rewind_with_scm.
5126 Changed all uses.
5127
5128 * aync.h, async.c: Did the follwing renamings:
5129 scm_with_blocked_asyncs -> scm_frame_block_asyncs,
5130 scm_with_unblocked_asyncs -> scm_frame_unblock_asyncs.
5131 Changed all uses.
5132
5133 * ports.h, ports.c: Did the follwing renamings:
5134 scm_with_current_input_port -> scm_frame_current_input_port,
5135 scm_with_current_output_port -> scm_frame_current_output_port,
5136 scm_with_current_error_port -> scm_frame_current_error_port.
5137 Changed all uses.
5138
298ab996
KR
51392004-01-07 Kevin Ryde <user42@zip.com.au>
5140
5141 * numbers.c (s_bignum): Remove, not used since gmp bignums.
5142 Reported by Richard Todd.
5143
ba40113e
KR
5144 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 12*sizeof(long),
5145 for the benefit of powerpc-apple-darwin5.5. Reported by Richard Todd.
5146
298ab996
KR
5147 * unif.c (scm_aind): Test SCM_CONSP rather than !SCM_NULLP while
5148 traversing the args list, fixes segv if an improper list is given.
5149 Reported by Rouben Rostamian.
5150
aacff585
MV
51512004-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5152
5153 * ports.c (swap_ports, scm_with_current_foo_port): Do not allocate
5154 swap_data on stack, use a 'malloc obj'.
5155
5156 * fluids.h, fluids.c (scm_make_initial_fluids, scm_copy_fluids,
5157 scm_swap_fluids, scm_swap_fluids_reverse): Renamed to
5158 scm_i_... since they are internal. Changed all uses.
5159
5160 * dynwind.c (frame_print): Removed, use the default printer.
5161 (WINDER_F_MARK, WINDER_MARK_P, winder_mark): New.
5162 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New. Use above
5163 to protect SCM values.
5164
5165 * dynwind.h (SCM_F_WIND_EXPLICITELY,
5166 SCM_F_WIND_EXPLICITLY): It's "explicitly" not "explicitely", damn.
5167 Changed all uses.
5168 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New.
5169
49c00ecc
MV
51702004-01-05 Marius Vollmer <mvo@zagadka.de>
5171
5172 * ports.h, ports.c (scm_with_current_input_port,
5173 scm_with_current_output_port, scm_with_current_error_port): New.
5174
5175 * async.h, async.c (scm_with_blocked_asyncs,
5176 scm_with_unblocked_asyncs): New.
5177
dab514a8
MV
51782004-01-03 Marius Vollmer <mvo@zagadka.de>
5179
5180 * dynwind.h, scm_dynwind.c (scm_t_frame_flags, scm_t_wind_flags,
5181 scm_begin_frame, scm_end_frame, scm_on_unwind, scm_on_rewind):
5182 New.
5183 (scm_dowinds, scm_i_dowinds): scm_dowinds has been renamed to
5184 scm_i_dowinds and extended to handle frames and to invoke a 'turn'
5185 function when the outermost wind point has been reached. The
5186 latter is used to copy a continuation stack at the right time.
5187 scm_dowinds remains available.
5188 (SCM_GUARDSP, SCM_BEFORE_GUARD, SCM_AFTER_GUARD, SCM_GUARD_DATA,
5189 tc16_guard, guards_print): Removed.
5190 (scm_internal_dynamic_wind): Reimplemented using frames.
5191
5192 * continuations.c (copy_stack): New, do only the stack copying
5193 part of copy_stack_and_call.
5194 (copy_stack_and_call): Copy the stack after unwinding and before
5195 rewinding.
5196 (scm_dynthrow): Do not call scm_dowinds, this is now done by
5197 copy_stack_and_call.
5198
441a25d9
KR
51992004-01-04 Kevin Ryde <user42@zip.com.au>
5200
5201 * numbers.c (scm_less_p): Don't convert frac to float for compares,
dab514a8 5202 can give bad results due to rounding.
441a25d9 5203
e0499207
KR
5204 * stime.c (scm_current_time, scm_gettimeofday): Add a comment about
5205 setzone/restorezone protection for DOS.
5206
89fcf1b4
MV
52072003-12-26 Marius Vollmer <mvo@zagadka.de>
5208
5209 * gen-scmconfig.h.in, gen-scmconfig.c: Arrange for scm_t_intmax
5210 and scm_t_uintmax to be defined in scmconfig.h
5211
caff34d4
KR
52122003-12-03 Kevin Ryde <user42@zip.com.au>
5213
5214 * numbers.c (scm_less_p): Remove spurious xisnan from frac+big case.
5215
5216 * numbers.c (scm_make_ratio): Check for numerator equal to
5217 SCM_MOST_NEGATIVE_FIXNUM and bignum denominator the negative of that,
5218 giving integer -1.
5219
5220 * numbers.c (scm_real_part): Return fraction unchanged rather than
5221 converting to flonum.
5222
2d0b85ac
DH
52232003-11-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
5224
5225 * modules.c (module_variable): Fixed (and thus simplified) the
5226 definition of SCM_BOUND_THING_P to reflect the fact that since
5227 after the 1.4 series of guile, obarrays only hold variable
5228 objects.
5229
2297981d
MV
52302003-11-30 Marius Vollmer <mvo@zagadka.de>
5231
5232 * numbers.c (scm_logand): It's "#b...", not "#\b...".
5233
5234 From Paul Jarc:
5235
5236 * read.c (scm_lreadr): Signal an error for invalid escape
5237 sequences in strings. Code cleanups too.
5238
5239 * print.c (scm_iprin1): use \xNN hexadecimal sequences when
5240 writing control characters in strings.
5241
52422003-11-21 Marius Vollmer <mvo@zagadka.de>
5243
5244 * ports.c (scm_drain_input): Bug fix: only access the port after
5245 checking that it indeed is one.
5246
5c264007
DH
52472003-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
5248
5249 * eval.c (s_bad_define): New static identifier.
5250
5251 (m_body): Fixed comment.
5252
5253 (scm_m_define): Don't generate memoized code for definitions that
5254 are not on the top level. As a consequence, no memoized code at
5255 all is generated for definitions any more: Top level definitions
5256 are executed immediately during memoization and internal
5257 definitions are handled separately in m_expand_body.
5258
5259 (scm_unmemocopy, unmemocopy): Removed code for unmemoizing
5260 definitions. Consequently, there is no unmemoizing code any more
5261 that might modify the environment. Thus, the old scm_unmemocopy
5262 is removed and the old unmemocopy is renamed to scm_unmemocopy.
5263
5264 (SCM_CEVAL): The SCM_IM_DEFINE keyword can no longer occur in
5265 memoized code. Call EVALCAR for continuations. Prefer !SCM_NULLP
5266 over SCM_NIMP in places, where the argument is known to be part of
5267 a proper list.
5268
018d4730
KR
52692003-11-21 Kevin Ryde <user42@zip.com.au>
5270
5271 * numbers.c (scm_abs): Allocate a new real only for negatives, as done
5272 for bignums.
5273
5274 * numbers.c (scm_bit_extract): Use mpz functions, rearrange inum case
5275 to share some shifting.
5276
5277 * numbers.c (scm_integer_expt): Don't mpz_init after scm_i_clonebig or
5278 scm_i_mkbig, since they do so already. Don't mpz_clear a bignum SCM,
5279 since gc does this.
5280
4bca30d8
MV
52812003-11-19 Marius Vollmer <mvo@zagadka.de>
5282
fb16d26e
MV
5283 * numbers.c (scm_make_ratio): Rewritten to have a simpler
5284 structure. Previously, not all cases with a negative denominator
5285 were covered.
5286
4bca30d8
MV
5287 * numbers.c (mem2decimal_from_point): use scm_divide instead of
5288 scm_divide2real when forming the fractional part. This allows
5289 "#e1.2" to yield 6/5.
5290
5291 * numbers.c (scm_i_fraction_equalp): Do not treat the return value
5292 of scm_equal_p as a C boolean, use SCM_FALSEP. Previously, all
5293 fractions were equal to each other regardless of value. Ooops.
5294
5295 * numbers.c (scm_rationalize): Return an inexact result when given
5296 inexact arguments.
5297
5298 * numbers.c (scm_exact_p, scm_inexact_p): Throw error for
5299 non-numbers.
5300
bdf26b60
MV
53012003-11-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5302
5303 Support for exact fractions from Bill Schottstaedt! Thanks!
5304
5305 * print.c (scm_iprin1): Handle fractions.
5306
5307 * objects.h (scm_class_fraction): New.
5308 * objects.c (scm_class_fraction): New.
5309 (scm_class_of): Handle fractions.
5310
5311 * hash.c (scm_hasher): Handle fractions.
5312
5313 * numbers.c: New code for handling fraction all over the place.
5314 (scm_odd_p, scm_even_p): Handle inexact integers.
5315 (scm_rational_p): New function, same as scm_real_p.
5316 (scm_round_number, scm_truncate_number, scm_ceiling, scm_floor):
5317 New exact functions that replace the inexact 'dsubr'
5318 implementations.
5319 (scm_numerator, scm_denominator): New.
5320
5321 * numbers.h (SCM_NUMP): Recognize fractions.
5322 (SCM_FRACTIONP, SCM_SLOPPY_FRACTIONP, SCM_FRACTION_NUMERATOR,
5323 SCM_FRACTION_DENOMINATOR, SCM_FRACTION_SET_NUMERATOR,
5324 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
5325 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
5326 SCM_FRACTION_REDUCED): New.
5327 (scm_floor, scm_ceiling, scm_truncate_number, scm_round_number):
5328 New prototypes.
5329 (scm_make_ratio, scm_rationalize, scm_numerator, scm_denominator,
5330 scm_rational_p): New prototypes.
5331 (scm_i_dbl2num, scm_i_fraction2double, scm_i_fraction_equalp,
5332 scm_i_print_fraction): New prototypes.
5333
5334 * goops.c (create_standard_classes): Create "<fraction>" class.
5335
5336 * gc-mark.c (scm_gc_mark_dependencies): Handle fractions.
5337
5338 * gc-card.c (scm_i_sweep_card): Include scm_tc16_fraction as a
5339 case in the switch, but do nothing for now.
5340
5341 * eval.c (SCM_CEVAL, SCM_APPLY, call_dsubr_1): Convert fractions
5342 to doubles when calling 'dsubr' functions.
5343
5344 * eq.c (scm_eqv_p, scm_equal_p): Handle fractions.
5345
28fda544
RB
53462003-11-18 Rob Browning <rlb@defaultvalue.org>
5347
5348 * gen-scmconfig.c (main): remove public definition of
5349 SCM_SIZEOF___INT64 and SCM_SIZEOF_UNSIGNED___INT64 and add
5350 direct typedef of long_long and ulong_long inside deprecated block
5351 when appropriate.
5352
5353 * deprecated.h: move long_long and ulong_long definitions to
5354 gen-scmconfig.c so that we don't need to add SCM_SIZEOF___INT64
5355 and SCM_SIZEOF_UNSIGNED___INT64 to the public namespace.
5356
b58e7420
MV
53572003-11-17 Marius Vollmer <mvo@zagadka.de>
5358
9a1d7d7c
MV
5359 * hash.c (scm_string_hash): New hashing algorithm that takes the
5360 complete string into account.
5361
b58e7420
MV
5362 * eval.c (scm_m_generalized_set_x): Macroexpand the target when it
5363 is a list. This allows (@ ...) to work with set!.
9a1d7d7c
MV
5364 (scm_m_generalized_set_x): Use ASSERT_SYNTAX_2 instead of
5365 SCM_ASSYNT.
b58e7420
MV
5366
5367 * script.c (scm_compile_shell_switches): Use scm_c_read_string for
5368 the "-e" option instead of scm_str2symbol. This allows things
5369 like (@ ...) to be specified for the entry point.
5370
461bffb1
DH
53712003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5372
5373 * eval.c (scm_m_letstar): Create memoized code in place to
5374 minimize consing.
5375
6f81708a
DH
53762003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5377
5378 * eval.c (s_splicing): Commented and reformulated.
5379
5380 (lookup_global_symbol, lookup_symbol): New static functions.
5381
5382 (s_test, s_bindings, s_duplicate_bindings, s_variable): Removed.
5383
5384 (try_macro_lookup, literal_p): Use lookup_symbol instead of
5385 creating a temporary pair for scm_lookupcar.
5386
5387 (scm_unmemocar, unmemocar): Renamed scm_unmemocar to unmemocar,
5388 created deprecated wrapper function scm_unmemocar.
5389
5390 (SCM_VALIDATE_NON_EMPTY_COMBINATION, scm_sym_else,
5391 scm_sym_unquote, scm_sym_uq_splicing, scm_sym_enter_frame,
5392 scm_sym_apply_frame, scm_sym_exit_frame, scm_sym_trace, f_apply,
5393 undefineds, sym_three_question_marks): Moved around without
5394 modifications.
5395
5396 * eval.c, eval.h (scm_macroexp, scm_unmemocar): Deprecated.
5397
910b5125
DH
53982003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
5399
5400 * eval.c (try_macro_lookup, expand_user_macros, is_system_macro_p,
5401 m_expand_body, scm_m_expand_body): Grouped together with m_body.
5402 No further modifications.
5403
c86c440b
DH
54042003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
5405
5406 * eval.c (s_mixed_body_forms): New static identifier.
5407
5408 (canonicalize_define, scm_m_define): The check for a bad
5409 expression is performed in canonicalize_define now.
5410
5411 (try_macro_lookup, expand_user_macros, is_system_macro_p): New
5412 static helper functions for m_expand_body.
5413
5414 (m_expand_body): Use ASSERT_SYNTAX to signal syntax errors. Only
5415 expand user defined macros. Fixed handling of the definition/
5416 expression boundary. Fixed handling of definitions grouped with
5417 'begin. Use canonicalize_define to expand definitions.
5418
3890131a
MV
54192003-11-13 Marius Vollmer <mvo@zagadka.de>
5420
b58e7420
MV
5421 * read.c (scm_lreadr): detect EOF after backslash, and interpret
5422 \xNN hexadecimal sequences. From Paul Jarc, thanks!
5423
5df36eac
MV
5424 * snarf.h (SCM_SMOB, SCM_GLOBAL_SMOB, SCM_SMOB_MARK,
5425 SCM_GLOBAL_SMOB_MARK, SCM_SMOB_FREE, SCM_GLOBAL_SMOB_FREE,
5426 SCM_SMOB_PRINT, SCM_GLOBAL_SMOB_PRINT, SCM_SMOB_EQUALP,
5427 SCM_GLOBAL_SMOB_EQUALP, SCM_SMOB_APPLY, SCM_GLOBAL_SMOB_APPLY):
5428 New macros from Paul Jarc. Thanks!
5429
3890131a
MV
5430 * gc_os_dep.c (scm_get_stack_base): Provide a definition that
5431 return NULL when the machine type is unknown. Previously,
5432 gc_os_dep.c would refuse to compile.
5433
430b8401
DH
54342003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
5435
5436 * eval.c (scm_m_body, m_body, scm_m_lambda, memoize_named_let,
5437 scm_m_let, scm_m_letrec, m_expand_body): Renamed static function
5438 scm_m_body to m_body.
5439
328dc9a3
DH
54402003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
5441
5442 * eval.c, eval.h (scm_m_expand_body, m_expand_body): Deprecated
5443 public use of scm_m_expand_body in eval.h. In eval.c, renamed
5444 scm_m_expand_body to m_expand_body and made it static. Added
5445 deprecated wrapper scm_m_expand_body.
5446
5447 (scm_eval_body, SCM_CEVAL, SCM_APPLY): Use m_expand_body instead
5448 of scm_m_expand_body.
5449
c2337a61
KR
54502003-11-09 Kevin Ryde <user42@zip.com.au>
5451
5452 * dynl.c (scm_dynamic_unlink): Need scm_list_1 on error message
5453 argument. Reported by Mike Gran.
5454
ced8edb0
DH
54552003-11-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
5456
5457 * eval.c (s_missing_body_expression): New static identifier.
5458
5459 (s_body): Removed.
5460
5461 (scm_m_expand_body): Fixed core dump when passing a body with
5462 defines, but without expressions (see additions to syntax.test).
5463 Use ASSERT_SYNTAX to signal syntax errors.
5464
0f572ba7
DH
54652003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5466
5467 * eval.c (canonicalize_define): New static helper function.
5468
5469 (memoize_define, canonicalize_define): Extract handling of
5470 function currying to canonicalize_define.
5471
2510c810
DH
54722003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5473
5474 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
5475 Make sure that error checking in debug mode is not worse than in
5476 standard mode.
5477
34adf7ea
DH
54782003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5479
5480 * eval.c (scm_m_body, scm_m_lambda): Documentation strings are not
5481 handled in scm_m_body any more, but rather in scm_m_lambda.
5482
5483 (scm_m_body, memoize_named_let, scm_m_let, scm_m_letstar,
5484 scm_m_letrec, scm_m_expand_body): Check for validity is done by
5485 calling functions of scm_m_body.
5486
5487 (scm_m_lambda): Avoid unnecessary consing when creating the
5488 memoized code.
5489
89bff2fc
DH
54902003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5491
5492 * eval.c (s_expression): Added comment.
5493
5494 (s_empty_combination, error_unbound_variable): New static
5495 identifiers.
5496
5497 (SCM_VALIDATE_NON_EMPTY_COMBINATION, SCM_EVALIM2, scm_lookupcar1):
5498 Use ASSERT_SYNTAX, syntax_error or error_unbound_variable to
5499 signal syntax errors.
5500
5501 (SCM_CEVAL): Separated handling of evaluator bytecodes and other
5502 scheme objects.
5503
60a49842
DH
55042003-10-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5505
5506 * eval.c (unmemocar, sym_three_question_marks, scm_unmemocar):
5507 Grouped together with unmemocopy, without modifications.
5508
5509 (build_binding_list, unmemocopy): Renamed names of list arguments
5510 and variables to reflect the actual order of the list elements.
5511
70c1c108
DH
55122003-10-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
5513
5514 * eval.c (s_defun): New static identifier.
5515
5516 (scm_m_nil_cond, scm_m_atfop, scm_m_undefine): Add comments. Use
5517 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
5518 when creating the memoized code.
5519
0ee39677
KR
55202003-10-19 Kevin Ryde <user42@zip.com.au>
5521
5522 * numbers.c (scm_ash): Revise docstring as per recent update to manual.
5523
5524 * numbers.c (scm_i_big2dbl): Rewrite, carefully rounding to "closest"
5525 in accordance with R5RS, which just mpz_get_d doesn't really give.
5526
9a848baf
DH
55272003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5528
5529 * eval.c (s_bad_slot_number): New static identifier.
5530
5531 (scm_m_atslot_ref, scm_m_atslot_set_x): Use ASSERT_SYNTAX to
5532 signal syntax errors. Avoid unnecessary consing when creating the
5533 memoized code.
5534
da48db62
DH
55352003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5536
5537 * eval.c (scm_m_cont, scm_m_at_call_with_values,
5538 scm_m_generalized_set_x): Use ASSERT_SYNTAX to signal syntax
5539 errors. Avoid unnecessary consing when creating the memoized
5540 code.
5541
5542 (scm_m_generalized_set_x): Let scm_m_set_x handle the R5RS
5543 standard case. Make sure line and file information are copied to
5544 every created expression.
5545
82b3e2c6
DH
55462003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5547
5548 * eval.c (scm_m_set_x, scm_m_apply, scm_m_atbind): Use
5549 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
5550 when creating the memoized code.
5551
5552 (scm_m_atbind): Reversed the order, in which the init expressions
5553 are stored and executed. The order of execution is now equal to
5554 the order in which the initializers of the let-forms are executed.
5555 Use check_bindings and transform_bindings.
5556
5557 (SCM_CEVAL): Eliminated SCM_NIMP in favor of more appropriate
5558 !SCM_NULLP. Added some comments.
5559
21628685
DH
55602003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5561
5562 * eval.c: Sorted include files alphabetically.
5563
5564 (scm_m_begin): Added comment.
5565
5566 (scm_m_or): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5567 unnecessary consing when creating the memoized code.
5568
5569 (iqq, scm_m_quasiquote, scm_m_quote): Use ASSERT_SYNTAX to signal
5570 syntax errors. Be more specific about the kind of error that was
5571 detected.
5572
5573 (scm_m_quote, unmemocopy): As an optimization, vector constants
5574 are now inserted unquoted into the memoized code. During
5575 unmemoization the quotes are added again to provide syntactically
5576 correct code.
5577
d6754c23
DH
55782003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5579
5580 * eval.c (scm_m_let, scm_m_letstar, scm_m_letrec,
5581 scm_m_expand_body, check_bindings): Extracted syntax checking of
5582 bindings to new static function check_bindings.
5583
5584 (scm_m_let, memoize_named_let): Extracted handling of named let to
5585 new static function memoize_named_let.
5586
5587 (transform_bindings, scm_m_let, scm_m_letstar, scm_m_letrec): Use
5588 ASSERT_SYNTAX to signal syntax errors. Be more specific about the
5589 kind of error that was detected. Avoid use of SCM_CDRLOC. Avoid
5590 unnecessary consing when creating the memoized code.
5591
03a3e941
DH
55922003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5593
5594 * eval.c (s_bad_formals, s_bad_formal, s_duplicate_formal): New
5595 static identifiers.
5596
5597 (s_clauses, s_formals, s_duplicate_formals): Removed.
5598
5599 (scm_m_lambda): Use ASSERT_SYNTAX to signal syntax errors. Be more
5600 specific about the kind of error that was detected. Prepare for
5601 easier integration of changes for separated memoization.
5602
da48db62 56032003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
4610b011
DH
5604
5605 * eval.c (s_duplicate_binding): New static identifier.
5606
5607 (scm_m_case): Call scm_c_memq instead of implementing it inline.
5608
5609 (scm_m_define): Added comment about how we check for duplicate
5610 formals.
5611
5612 (scm_m_do): Added check for duplicate bindings.
5613
5614 (scm_m_if): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5615 unnecessary consing when creating the memoized code.
5616
5617 (scm_c_improper_memq, c_improper_memq, scm_m_lambda): Renamed
5618 scm_c_improper_memq to c_improper_memq, since it is not exported.
5619
5620 (transform_bindings): Call scm_c_memq rather than
5621 scm_c_improper_memq.
5622
5623 (SCM_CEVAL): Simplified handling of SCM_IM_IF forms.
5624
da48db62 56252003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
a954ce1d
DH
5626
5627 * eval.c (s_bad_bindings, s_bad_binding, s_bad_exit_clause): New
5628 static identifiers.
5629
5630 (scm_m_do): Use ASSERT_SYNTAX to signal syntax errors. Be more
5631 specific about the kind of error that was detected. Avoid use of
5632 SCM_CDRLOC. Avoid unnecessary consing when creating the memoized
5633 code, this way also making sure that file name, line number
5634 information etc. remain available.
5635
da48db62 56362003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
8ae95199
DH
5637
5638 * eval.c (memoize_as_thunk_prototype): New static function.
5639
5640 (scm_m_delay, scm_m_future): Use memoize_as_thunk_prototype.
5641 Avoid unnecessary consing when creating the memoized code.
5642
9b9a35b6
KR
56432003-10-12 Kevin Ryde <user42@zip.com.au>
5644
5645 * list.c (scm_append): Track argument number and use in error.
5646
cc56ba80
DH
56472003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5648
5649 * eval.c (s_missing_expression, s_bad_variable): New static
5650 identifiers.
5651
5652 (scm_m_define): Use ASSERT_SYNTAX to signal syntax errors. Prefer
5653 R5RS terminology for the naming of variables. Be more specific
5654 about the kind of error that was detected. Make sure file name,
5655 line number etc. are added to all freshly created expressions.
5656 Avoid unnecessary consing when creating the memoized code.
5657
609a8b86
DH
56582003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5659
5660 * eval.c (s_extra_expression, s_misplaced_else_clause,
5661 s_bad_cond_clause, s_missing_recipient): New static identifiers.
5662
5663 (s_extra_case_clause): Removed.
5664
5665 (scm_m_case, scm_m_cond): If a clause appears after an else
5666 clause, report a misplaced else clause.
5667
5668 (scm_m_cond): Use ASSERT_SYNTAX to signal syntax errors. Be more
5669 specific about the kind of error that was detected. Handle bound
5670 'else and '=>. Avoid unnecessary consing when creating the
5671 memoized code.
5672
5673 (scm_m_cond, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
5674 the syntactic keyword 'else and SCM_IM_ARROW to memoize the
5675 syntactic keyword '=>.
5676
58a2510b
DH
56772003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5678
5679 * eval.c (scm_m_case): Allow empty lists of case labels.
5680
2a6f7afe
DH
56812003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5682
5683 * tags.h (SCM_IM_ELSE, SCM_IM_ARROW): New memoizer codes.
5684
5685 * print.c (scm_isymnames): Add names for the new memoizer codes.
5686
5687 * eval.c (s_missing_clauses, s_bad_case_clause,
5688 s_extra_case_clause, s_bad_case_labels, s_duplicate_case_label,
5689 literal_p): New static identifiers.
5690
5691 (scm_m_case): Use ASSERT_SYNTAX to signal syntax errors. Be more
5692 specific about the kind of error that was detected. Check for
5693 duplicate case labels. Handle bound 'else. Avoid unnecessary
5694 consing when creating the memoized code.
5695
5696 (scm_m_case, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
5697 the syntactic keyword 'else.
5698
e6729603
DH
56992003-10-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
5700
5701 * eval.c (s_bad_expression, syntax_error_key, syntax_error,
5702 ASSERT_SYNTAX, ASSERT_SYNTAX_2): New static identifiers.
5703
5704 (scm_m_and): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5705 unnecessary consing when creating the memoized code.
5706
9ddeb776
KR
57072003-10-09 Kevin Ryde <user42@zip.com.au>
5708
5709 * numbers.c (scm_inexact_to_exact): Don't depend on what double->long
5710 cast gives for values bigger than a long, or for nan or inf.
5711
df5af69a
DH
57122003-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
5713
5714 * smob.h (scm_make_smob_type): Made the declaration match the
5715 definition.
5716
da0e6c2b
MV
57172003-10-07 Marius Vollmer <mvo@zagadka.de>
5718
5719 * goops.c, objects.h, smob.c, smob.h: Make type names char
5720 const * instead of char *. Thanks to Paul Jarc!
5721
591924eb
KR
57222003-10-02 Kevin Ryde <user42@zip.com.au>
5723
ff6ea7b9 5724 * strports.c (scm_call_with_output_string): scm_get_output_string
591924eb
KR
5725 rather than scm_strport_to_string, so as to guard against the port
5726 having been closed by the called procedure. Reported by Nic Ferrier.
5727
f03314f9
DH
57282003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5729
5730 * numbers.h (SCM_INEXACTP): Removed uses of SCM_TYP16S.
5731
5732 * tags.h, deprecated.h (SCM_TYP16S): Deprecated and moved from
5733 tags.h to deprecated.h.
5734
534c55a9
DH
57352003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5736
5737 This set of patches introduces a new tc7 code scm_tc7_number for
5738 numbers. Bignums, reals and complex numbers are turned from smobs
5739 into subtypes of scm_tc7_number.
5740
5741 * tags.h (scm_tc7_number): New.
5742
5743 * eq.c (scm_equal_p), eval.c (SCM_CEVAL), evalext.c
5744 (scm_self_evaluating_p), gc-card.c (scm_i_sweep_card), gc-mark.c
5745 (scm_gc_mark_dependencies), goops.c (create_smob_classes), hash.c
5746 (scm_hasher), numbers.c, numbers.h (SCM_NUMP), objects.c
5747 (scm_class_of), print.c (scm_iprin1), smob.c
5748 (scm_smob_prehistory): Don't handle bignums, reals and complex
5749 numbers as subtypes of scm_tc7_smob any more.
5750
5751 * numbers.h, tags.h (scm_tc16_big, scm_tc16_real,
5752 scm_tc16_complex): Moved definitions from tags.h to numbers.h.
5753
29c4382a
DH
57542003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5755
5756 * numbers.c (scm_make_complex), gc-card.c (scm_i_sweep_card): Use
5757 sizeof (scm_t_complex) to determine the memory size of the
5758 malloc'd area for complex numbers.
5759
47ae1f0e
DH
57602003-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
5761
5762 * numbers.c (scm_bigequal): Fixed.
5763
859b6b2f
MV
57642003-09-16 Marius Vollmer <mvo@zagadka.de>
5765
5766 * stime.c (scm_current_time): 'time' does not set errno so don't
5767 use SCM_SYSERROR for reporting errors.
5768
e17d318f
DH
57692003-09-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5770
5771 This set of patches eliminates the dependency between the
5772 implementation of evaluator specific memoization codes and special
5773 constants like #f, '() etc. ('flags'), which are not evaluator
5774 specific. The goal is to remove definitions of evaluator
5775 memoization codes completely from the public interface. This will
5776 make it possible to experiment more freely with optimizations of
5777 guile's internal representation of memoized code.
5778
5779 * objects.c (scm_class_of): Eliminate dependency on SCM_ISYMNUM.
5780
5781 * print.c (iflagnames): New array, holding the printed names of
5782 guile's special constants ('flags').
5783
5784 (scm_isymnames): Now holds only the printed names of the
5785 memoization codes.
5786
5787 (scm_iprin1): Separate the handling of memoization codes and
5788 guile's special constants.
5789
5790 * tags.h (scm_tc9_flag, SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA,
5791 SCM_IFLAGNUM): new
5792
5793 (scm_tc8_char, scm_tc8_iloc, SCM_BOOL_F, SCM_BOOL_T,
5794 SCM_UNDEFINED, SCM_EOF_VAL, SCM_EOL, SCM_UNSPECIFIED, SCM_UNBOUND,
5795 SCM_ELISP_NIL, SCM_IM_DISPATCH, SCM_IM_SLOT_REF,
5796 SCM_IM_SLOT_SET_X, SCM_IM_DELAY, SCM_IM_FUTURE,
5797 SCM_IM_CALL_WITH_VALUES, SCM_IM_NIL_COND, SCM_IM_BIND): Changed
5798 values.
5799
5800 (SCM_IFLAGP): SCM_IFLAGP now only tests for flags.
5801
5802 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Generalized to use the
5803 tc9 macros and scm_tc9_flag.
5804
eecac806
MV
58052003-09-15 Marius Vollmer <mvo@zagadka.de>
5806
5807 * posix.c (scm_setgroups): Check that the gid list is not too
5808 long. Thanks to Paul Jarc!
5809
22f2cf2d
DH
58102003-09-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
5811
5812 * tags.h: Reduced the number of short instructions from 14 to 13.
5813 The typecode of the former 14th short instruction is now used to
5814 represent long instructions. Changed some comments to reflect
5815 this fact.
5816
5817 (SCM_MAKISYM): ISYMs get a new tc7 code, namely the one that was
5818 previously used by SCM_IM_DEFINE.
5819
5820 (SCM_IM_DEFINE): Turned into a long instruction.
5821
5822 * eval.c (unmemocopy, SCM_CEVAL): Treat SCM_IM_DEFINE as a long
5823 instruction.
5824
5825 * eval.c (SCM_CEVAL): Since characters and iflags have now a tc7
5826 code that is separate from all instructions, one level of dispatch
5827 for long instructions can be eliminated.
5828
5829 * print.c (scm_isymnames): Removed some commented code.
5830
62f548e1
MV
58312003-09-12 Marius Vollmer <mvo@zagadka.de>
5832
97a61c5f
MV
5833 * __scm.h (SCM_FENCE): Use __memory_barrier with the Intel
5834 compiler on IA64.
5835
50e0ba57
MV
5836 * hashtab.h (scm_tc16_hashtable): Added "extern" declaration.
5837
5838 * modules.c (scm_module_reverse_lookup): Check that the obarray
5839 really is a hashtable and do nothing if not.
5840
62f548e1
MV
5841 * inline.h: Use "extern inline" only with GCC. Use "static
5842 inline" else.
5843
0d5e3480
DH
58442003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5845
5846 * numbers.h (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Removed uses
5847 of SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
5848
5849 * numbers.h, deprecated.h (SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP,
5850 SCM_SLOPPY_COMPLEXP): Deprecated and moved from numbers.h to
5851 deprecated.h.
5852
6b412e91
DH
58532003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5854
5855 * eq.c (scm_eqv_p, scm_equal_p): Removed uses of
5856 SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
5857
5858 * eq.c (scm_eqv_p, scm_equal_p): Reordered comparisons from
5859 0.0==some_expression to some_expression==0.0. The latter is
5860 better readable. The former is preferred by some people, since it
5861 leads to a compiler error when confusing == with =. However, when
5862 using gcc, a warning will be issued if in an if-statement an
5863 assigment appears. Since many Guile developers are using gcc,
5864 such errors will not remain unnoticed anyway. We can therefore
5865 focus on better readability.
5866
7e3b25bf
DH
58672003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5868
5869 * tags.h: Added description of Guile's type system. Removed some
5870 old and misleading comments.
5871
3ea39242
DH
58722003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5873
5874 * unit.c (scm_cvref): Eliminate unnecessary uses of SCM_NIMP,
5875 SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
5876
5d7d39ff
DH
58772003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5878
5879 * numbers.h (SCM_MAKINUM): Define in terms of scm_tc2_int.
5880
5881 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Define in terms of the
5882 respective SLOPPY macro.
5883
baa84a20
DH
58842003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5885
5886 * eq.c (scm_equal_p): Use SCM_TYP7 to check if an object is of
5887 type string, not SCM_TYP7S.
5888
ba15f500
KR
58892003-09-03 Kevin Ryde <user42@zip.com.au>
5890
5891 * numbers.c (scm_lognot): Correction to docstring, ones-complement not
5892 2s-complement.
5893
53bb8782
KR
5894 * stime.c (scm_strptime): Add comment about glibc strptime %s and
5895 current timezone requiring SCM_DEFER_INTS.
5896
defdc4b4
NJ
58972003-08-30 Neil Jerram <neil@ossau.uklinux.net>
5898
5899 * script.c (scm_compile_shell_switches): Make -s switch optional
5900 if file to be loaded does not begin with a `-'. (Thanks to Aaron
5901 VanDevender for the patch!)
5902
0f008a15
KR
59032003-08-30 Kevin Ryde <user42@zip.com.au>
5904
5905 * numbers.c (scm_lognot): Rewrite using ~ and mpz_com, for directness
5906 and to have non-integer types rejected as per other logical funcs.
5907
438a3ba1
KR
59082003-08-28 Kevin Ryde <user42@zip.com.au>
5909
5910 * gc.h (scm_remember_upto_here_1): Revise comments on the asm form.
5911
98dceb37
KR
59122003-08-23 Kevin Ryde <user42@zip.com.au>
5913
5914 * simpos.c (scm_system): Remove SCM_DEFER_INTS, system() should be
5915 thread safe, and could take a long time too.
5916
1fa79a38
KR
59172003-08-22 Kevin Ryde <user42@zip.com.au>
5918
5919 * numbers.c (scm_difference): Correction to bignum - negative inum.
5920
d97f9b42
KR
59212003-08-14 Kevin Ryde <user42@zip.com.au>
5922
5923 * gc.h (scm_remember_upto_here_1, scm_remember_upto_here_2)
5924 [__GNUC__]: Use volatile asm macros rather than a function call.
5925 * gc.c (scm_remember_upto_here_1, scm_remember_upto_here_2): Undefine
5926 macros while defining functions.
5927
5928 * simpos.c (getenv): Use <stdlib.h> for prototype.
5929 (scm_system): In docstring, refer to status:exit-val rather than
5930 "functions above".
5931
b9052fcc
KR
59322003-08-09 Kevin Ryde <user42@zip.com.au>
5933
5934 * srcprop.c (scm_source_properties): Return plist from hash if it's a
5935 list set by source-properties! rather than an SRCPROPS object,
5936
8e5b4b9e
KR
59372003-07-29 Kevin Ryde <user42@zip.com.au>
5938
5939 * properties.c (scm_primitive_property_ref): In docstring, note
5940 parameters to not-found-proc, use hyphens rather than underscores for
5941 that parameter name.
5942 (scm_primitive_property_set_x): In docstring, VAL is the value
5943 parameter not CODE.
5944
20703ac4
MV
59452003-07-27 Marius Vollmer <mvo@zagadka.de>
5946
c6ccee34
MV
5947 * print.c (scm_print_symbol_name): handle more weird characters by
5948 escaping the symbol name properly. Thanks to Paul Jarc!
5949
2f4931bf
MV
5950 * posix.h (scm_setgroups): New prototype.
5951 * posix.c (scm_setgroups): New. Thanks to Paul Jarc!
5952 (scm_getgroups): Handle groups ids that don't fit into a fixnum.
5953 Don't use SCM_WRITABLE_VELTS.
5954
265c456f
MV
5955 * gc.h (SCM_GC_SET_CELL_BVEC): New.
5956 * gc-card.c (scm_i_init_card_freelist): Use it. Thanks to
5957 Matthias Koeppe!
5958
20703ac4
MV
5959 * __scm.h (SCM_C_INLINE_KEYWORD): New.
5960 * numbers.c: Use it in place of SCM_C_INLINE so that the code
5961 compiles when SCM_C_INLINE is undefined.
5962
59c4bb82
DH
59632003-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
5964
5965 * __scm.h: Reformulated the architecture and compiler properties
5966 in terms of properties of scm_t_bits and SCM variables rather than
5967 in terms of c standard types. This is since it is not known which
5968 of the standard types scm_t_bits and SCM variables will be defined
5969 to.
5970
d7850c8d
KR
59712003-07-24 Kevin Ryde <user42@zip.com.au>
5972
5973 * numbers.c (scm_angle): Use scm_flo0 for non-negative inum, bignum
5974 and real.
5975
8a0c514f
KR
59762003-07-18 Kevin Ryde <user42@zip.com.au>
5977
5978 * numbers.c (scm_product): In complex * bignum, correction to
5979 REAL/IMAG fetch, x is the complex, not y.
5980
0aacf84e
MD
59812003-07-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5982
5983 * numbers.c (scm_odd_p, scm_even_p): Bugfix: Treat result of
5984 scm_inf_p test as Scheme values.
5985 (scm_sum): Bugfix: Normalize bignum created from a negative bignum
5986 and a positive inum.
5987 Use GNU indentation style.
5988
192de9a4
DH
59892003-07-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5990
5991 * values.c (scm_values): Build lists of length 1 by using
5992 scm_list_1 instead of using scm_cons.
5993
bbb4438a
KR
59942003-07-10 Kevin Ryde <user42@zip.com.au>
5995
b58c85ce
KR
5996 * deprecation.c (scm_c_issue_deprecation_warning_fmt): Add va_end.
5997 * list.c (scm_list_n): Ditto.
5998
bbb4438a
KR
5999 * gc-malloc.c (scm_gc_realloc): Define "ptr" at start of function.
6000
287f8ad1
KR
60012003-07-08 Matthias Koeppe <mkoeppe@merkur.math.uni-magdeburg.de>
6002
6003 * tags.h (scm_t_bits, scm_t_signed_bits, etc): Avoid solaris empty
6004 defines of INTPTR_MAX and UINTPTR_MAX, combine conditionals for
6005 scm_t_bits and scm_t_signed_bits to avoid any chance of one and not
6006 the other using intptr_t.
6007
005d2366
KR
60082003-07-08 Kevin Ryde <user42@zip.com.au>
6009
0aacf84e 6010 * numbers.c (scm_make_polar): Use sincos, when available.
005d2366
KR
6011 (scm_magnitude): Use hypot.
6012
6013 * ports.c (scm_char_ready_p, scm_peek_char): In docstrings, don't use
6014 @footnote since it doesn't go through to guile-procedures.txt.
6015
6016 * threads.c (scm_call_with_new_thread): In docstring, use "( )"
6017 outside @var to quieten makeinfo, and use @code.
6018
cbfe8e62
HWN
60192003-07-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6020
6021 * gc-malloc.c (decrease_mtrigger): new function
6022 (increase_mtrigger): new function, separate debug registering and
6023 mtrigger administration.
6024 (scm_gc_realloc): bugfix: do mtrigger administration before the
6025 actual realloc, for the realloc might invalidate a GC-d segment of
6026 memory. Thanks to Sam Hocevar for pointing this out.
6027 (scm_gc_realloc): use scm_malloc_reregister instead of
6028 unregistering and registering in sequence.
6029
aeb4c2e1
HWN
60302003-07-03 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6031
6032 * __scm.h (SCM_ASSERT): change "else" expansion to "do { } while (0)"
6033
4c27f8d2
HWN
60342003-07-02 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6035
6036 * __scm.h (SCM_ASRTGO): add "else" to macro expansions with if
6037 clauses.
6038
983e697d
MV
60392003-06-29 Marius Vollmer <mvo@zagadka.de>
6040
6041 * deprecated.h (SCM_OPDIRP, scm_fport, scm_option, scm_srcprops,
6042 scm_srcprops_chunk, scm_info_frame, scm_stack, scm_array,
6043 scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_FUNC_NAME, SCM_WTA,
6044 RETURN_SCM_WTA, SCM_VALIDATE_NUMBER_COPY,
6045 SCM_VALIDATE_NUMBER_DEF_COPY, SCM_VALIDATE_OPDIR): Re-added from
6046 the release_1_6 branch.
6047
78b6566e
SJ
60482003-06-25 Stefan Jahn <stefan@lkcc.org>
6049
6050 * continuations.c: Redeclaration of getcontext() via the
6051 __asm__ ("getcontext") directive.
6052
6053 * continuations.h: Include <ucontext.h> instead of
6054 <sys/ucontext.h>.
6055
1ebb8497
KR
60562003-06-21 Kevin Ryde <user42@zip.com.au>
6057
6058 * numbers.c (_GNU_SOURCE): #define, to get C99 things.
6059 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, $asinh, $acosh,
6060 $atanh, truncate): Use C library asinh, acosh, atanh and trunc, when
6061 available.
6062 (scm_inexact_to_exact): Expand isfinite to its definition !xisinf.
6063 (isfinite): Remove, conflicts with C99 isfinite().
6064
fbf85ba4
MV
60652003-06-19 Marius Vollmer <mvo@zagadka.de>
6066
6067 * deprecated.h, deprecated.c (scm_strhash, scm_sym2ovcell_soft,
6068 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
6069 scm_symbol_value0, scm_string_to_obarray_symbol scm_intern_symbol,
6070 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
6071 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp): Re-added from
6072 the release_1_6 branch.
6073
fcc5d734
SJ
60742003-06-14 Stefan Jahn <stefan@lkcc.org>
6075
6076 * threads.h: Redefined scm_getspecific() and scm_setspecific()
6077 to be functions instead of macros.
6078
6079 * threads.c: Conditionalized inclusion of <sys/time.h> and
6080 <unistd.h>.
6081 (scm_getspecific, scm_setspecific): Made these two function
6082 real part of the API.
6083
6084 * posix.c (s_scm_putenv): Added some code to make a
6085 (putenv "FOO="), i.e. setting an empty string, work also on
6086 Win32 systems. Thanks to Kevin Ryde for the proposal.
6087
c3ae8e07
KR
60882003-06-12 Kevin Ryde <user42@zip.com.au>
6089
75b14838
KR
6090 * posix.c (scm_putenv): Free temporary ptr in mingw unset. Add
6091 freebsd to comment about need to use unsetenv.
c3ae8e07 6092
9d9fa092
MV
60932003-06-02 Marius Vollmer <mvo@zagadka.de>
6094
6095 * ports.c (scm_peek_char): Safe the column of the port around the
6096 getc/ungetc calls. Thanks to Dr. Peter Ivanyi!
6097
f2478375
KR
60982003-06-07 Kevin Ryde <user42@zip.com.au>
6099
6100 * tags.h: Use inttypes.h and stdint.h when available, for INTPTR_MAX
6101 and friends required by scm_t_bits setups.
6102
6375e040
DH
61032003-06-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6104
6105 * tags.h (scm_tc2_int): Added.
6106
6107 * tags.h (scm_tc3_int_1, scm_tc3_int_2): Expressed in terms of
6108 scm_tc2_int.
6109
6110 * tags.h (scm_tcs_cons_imcar, scm_tcs_cons_nimcar, scm_tcs_struct,
6111 scm_tcs_closures): Hard coded values replaced by symbolic ones.
6112
f5c6ec2f
DH
61132003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
6114
6115 * eval.c: Partially undid my patch from 2003-05-31. This patch
6116 caused the segfault referenced in the previous changelog entry.
6117
47dbd81e
DH
61182003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
6119
6120 * tags.h: Fixed comment about the immediate type code layout.
6121
6122 * eval.c: Fixed handling of non-special instructions. Without
6123 this patch, guile will segfault on (#\0) and similar instructions.
6124
3ec52c51
KR
61252003-06-05 Kevin Ryde <user42@zip.com.au>
6126
6127 * numbers.c (scm_max, scm_min): For inum, bignum and real, if other
6128 operand is NaN, then return NaN. Also avoid passing NaN to mpz_cmp_d.
6129
e418bd7c
KR
6130 * read.c (scm_input_error): Pass arg list parameter to scm_error_scm,
6131 rather than SCM_EOL. Needed by "Unknown # object" case in scm_lreadr.
6132
d0624e39
DH
61332003-06-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6134
6135 * __scm.h, gc-card.c (SCM_DEBUG_DEBUGGER_SUPPORT,
6136 SCM_DEBUG_DEBUGGING_SUPPORT): Renamed macro
6137 SCM_DEBUG_DEBUGGER_SUPPORT to SCM_DEBUG_DEBUGGING_SUPPORT and
6138 generalized it to apply not only to C level functions but also to
6139 scheme level functions.
6140
6141 * debug.c, debug.h, eval.c (make-iloc, scm_make_iloc, iloc?,
6142 scm_iloc_p, dbg-make-iloc, scm_dbg_make_iloc, dbg-iloc?,
6143 scm_dbg_iloc_p): Moved functions scm_make_iloc, scm_iloc_p to
6144 eval.c, made them available under SCM_DEBUG_DEBUGGING_SUPPORT == 1
6145 only and renamed them to scm_dbg_make_iloc, scm_dbg_iloc_p,
6146 respectively.
6147
6148 * deprecated.h, eval.c, eval.h (SCM_ILOC00, SCM_IDINC,
6149 SCM_IDSTMSK): Deprecated. The macro definitions are moved from
6150 eval.h into eval.c and a copy is placed into deprecated.h.
6151
6152 * eval.c, eval.h (SCM_MAKE_ILOC): Removed from eval.h and placed
6153 into eval.c. This definition was not part of the API in any
6154 officially released version of guile and thus does not need to go
6155 through a phase of deprecation.
6156
e90c3a89
DH
61572003-06-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
6158
d0624e39
DH
6159 * deprecated.c, deprecated.h, eval.c, eval.h (scm_s_expression,
6160 scm_s_test, scm_s_body, scm_s_bindings, scm_s_variable,
6161 scm_s_clauses, scm_s_formals): Deprecated. In eval.c the
e90c3a89
DH
6162 definitions are make static and renamed from scm_s_xxx to s_xxx.
6163 In deprecated.c the original definitions are copied.
6164
d0624e39
DH
6165 * deprecated.h, eval.c, eval (SCM_EVALIM2, SCM_EVALIM, SCM_XEVAL,
6166 SCM_XEVALCAR): Deprecated. The macro definitions are moved from
e90c3a89
DH
6167 eval.h into eval.c and a copy (slightly modified to work in user
6168 code) is placed into deprecated.h.
6169
6170 * eval.c: Use the local static s_xxx definitions instead of the
6171 scm_s_xxx definitions throughout.
6172
14b18ed6
DH
61732003-06-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
6174
6175 This set of patches separates the representation of the cxr family
6176 of functions (car, cdr etc.) from the dsubr family of functions
6177 (i. e. functions that take a double precision floating point
6178 argument). Further, the algorithm for handling the cxr function
6179 is improved.
6180
6181 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_1), numbers.c
6182 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, scm_round, floor,
6183 ceil, sqrt, fabs, exp, log, sin, cos, tan, asin, acos, atan, sinh,
6184 cosh, tanh), objects.c (scm_class_of), procprop.c
6185 (scm_i_procedure_arity), ramap.c (scm_array_map_x), tags.h
6186 (scm_tc7_dsubr, scm_tcs_subrs): Introduce scm_tc7_dsubr as new
6187 typecode for the dsubr family of functions.
6188
6189 * ramap.c (ramap_cxr, ramap_dsubr): Renamed ramap_cxr to
6190 ramap_dsubr.
6191
6192 * eval.c (SCM_CEVAL, SCM_APPLY, call_cxr_1), pairs.c
6193 (scm_init_pairs): Make use of the (now usable) second cell element
6194 of a scm_tc7_cxr function to implement the cxr family of functions
6195 more efficiently.
6196
2ca0d207
DH
61972003-05-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
6198
6199 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_0,
6200 scm_trampoline_1, scm_trampoline_2): Postpone error cases to the
6201 end of an if-else-if-sequence of checks.
6202
9a069bdd
DH
62032003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
6204
6205 * eval.c (SCM_CEVAL): Improved readability of call-with-values
6206 execution. Generalize apply_closure to apply_proc and use that
6207 for call-with-values.
6208
e910e9d2
DH
62092003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
6210
6211 * eval.c (SCM_CEVAL): Avoid one level of indirection when applying
6212 a non closure.
6213
1e498fbd
SJ
62142003-05-30 Stefan Jahn <stefan@lkcc.org>
6215
6216 * posix.c (s_scm_putenv): Use the new HAVE_UNSETENV
6217 appropriately for mingw32 hosts.
6218
6219 * numbers.h: Defining copysign(), isnan() and finite() to
6220 be prefixed by a single '_' for mingw32 hosts.
6221
c47e2599
KR
62222003-05-30 Kevin Ryde <user42@zip.com.au>
6223
6224 * numbers.c (z_negative_one): New variable.
6225 (scm_init_numbers): Initialize it.
6226 (scm_logcount): Use it and mpz_hamdist to count zeros for negatives.
6227
2e945bcc
SJ
62282003-05-29 Stefan Jahn <stefan@lkcc.org>
6229
6230 * win32-dirent.c: Use malloc() instead of scm_malloc().
6231
6232 * stime.c (s_scm_strftime): Add a type cast to avoid compiler
6233 warning.
6234
6235 * posix.c (s_scm_putenv): Disable use of unsetenv() for the
6236 mingw32 build.
6237
6238 * modules.c (s_scm_module_import_interface): Renamed local
6239 variable interface to _interface. Seems like 'interface'
6240 is a special compiler directive for the mingw32 compiler.
6241
6242 * mkstemp.c: Provide prototype to avoid compiler warning.
6243
6244 * load.c (s_scm_search_path): Fixed absolute and relative
6245 path detections for native Windows platforms.
6246
6247 * gc.h, threads.h: Export some more symbols using SCM_API (necessary
6248 to build on mingw32).
6249
6250 * gc-freelist.c ("s_scm_map_free_list",
6251 "s_scm_gc_set_debug_check_freelist_x"): Fixed use of FUNC_NAME.
6252
6253 * fports.c (fport_fill_input): Disable use of
6254 fport_wait_for_input() on Win32 platforms.
6255
6256 * filesys.c (s_scm_basename): Fixed __MINGW32__ code.
6257
6258 * Makefile.am: Modified some rules for cross compiling.
6259
ddd8f927
DH
62602003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6261
6262 * eval.c (SCM_CEVAL): In case of an application, all checks for a
6263 proper function object and the correct number of arguments are now
6264 performed in the application part of SCM_CEVAL.
6265
6266 (scm_badformalsp): Removed.
6267
f8ba2197
DH
62682003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6269
6270 * deprecated.c (scm_read_and_eval_x): Fixed C99-ism.
6271
79f55b7c
MD
62722003-05-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6273
a502595f
MD
6274 * num2integral.i.c (NUM2INTEGRAL): Avoid warning about conditional
6275 always being false by inserting preprocessor conditional. (Thanks
6276 to Bruce Korb.)
6277
79f55b7c
MD
6278 * __scm.h (SCM_STACK_PTR): New macro. (Cast argument through
6279 (void *) in order to avoid an aliasing warning; thanks to Bruce
6280 Korb.)
6281
6282 * stackchk.h (SCM_STACK_OVERFLOW_P): Use SCM_STACK_PTR.
6283
6284 * threads.c (suspend, launch_thread, scm_threads_mark_stacks): Use
6285 SCM_STACK_PTR.
6286
6287 * threads.c (scm_threads_mark_stacks): Bugfix: Changed
6288 thread->base --> t->base.
6289
6290 * eval.c (SCM_CEVAL): Don't cast argument of SCM_STACK_OVERFLOW_P.
6291
47dee228
MV
62922003-05-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6293
6294 * deprecated.h, deprecated.c (scm_makstr, scm_makfromstr,
6295 scm_variable_set_name_hint, scm_builtin_variable,
6296 scm_internal_with_fluids, scm_make_gsubr,
6297 scm_make_gsubr_with_generic, scm_create_hook, SCM_LIST0,
6298 SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5, SCM_LIST6,
6299 SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify, scm_sloppy_memq,
85494587
MV
6300 scm_sloppy_memv, scm_sloppy_member, scm_read_and_eval_x,
6301 scm_subr_entry, SCM_SUBR_DOC, scm_make_subr,
6302 scm_make_subr_with_generic, scm_make_subr_opt,
6303 scm_call_catching_errors, scm_make_smob_type_mfpe,
6304 scm_set_smob_mfpe, scm_strprint_obj, scm_read_0str, scm_eval_0str,
6305 SCM_CHARS, SCM_UCHARS, SCM_LENGTH): Re-added from the release_1_6
6306 branch. Some have been slightly rewritten.
6307 (scm_i_object_chars, scm_i_object_length): New, to support
6308 SCM_CHARS, SCM_UCHARS, and SCM_LENTH.
6309
e681d187
DH
63102003-05-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
6311
6312 * eval.c (scm_m_do, unmemocopy, SCM_CEVAL): Reversed order of
6313 names and inits in the memoized code of do.
6314
7e59d9d4
MD
63152003-05-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6316
6317 * c-tokenize.lex (yyget_lineno, yyget_in, yyget_out, yyget_leng,
6318 yyget_text, yyset_lineno, yyset_in, yyset_out, yyget_debug,
6319 yyset_debug, yylex_destroy): Added prototypes (otherwise we'll get
6320 a compilation error if error-on-warning is enabled).
6321
9950a42c
MV
63222003-05-17 Marius Vollmer <mvo@zagadka.de>
6323
6324 * c-tokenize.lex: Gobble up complete lines after a '#'. This
6325 removes preprocessor directives from the snarfage that might
6326 otherwise confuse us. These directives appear when compiling with
6327 "-g3", for example.
6328
0068984b
HWN
63292003-05-16 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6330
26e68795
HWN
6331 * ChangeLog: add my surname
6332
0068984b
HWN
6333 * srcprop.c (scm_finish_srcprop): use
6334 scm_gc_register_collectable_memory()
6335 (scm_make_srcprops): idem.
6336
131805f0
HWN
63372003-05-14 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6338
6339 * gc-malloc.c (scm_gc_register_collectable_memory): avoid
6340 wrap-around for scm_mtrigger
6341 (scm_gc_register_collectable_memory): abort on overflowing
6342 scm_mallocated().
6343
d4611024
KR
63442003-05-13 Kevin Ryde <user42@zip.com.au>
6345
6346 * numbers.c (xmpz_cmp_d): New macro, handling infs if gmp doesn't.
6347 (scm_num_eq_p, scm_less_p, scm_max, scm_min): Use it.
6348
7aaf8dc9
MD
63492003-05-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6350
dfd03fb9
MD
6351 * backtrace.c (scm_display_error_message): Introduced fancy
6352 printing with max level 7 and length 10. (Purpose: avoid printing
6353 gigantic objects in error messages.)
6354
6355 * print.c, print.h (scm_i_port_with_print_state): New function.
6356
6357 * print.c (scm_iprin1, scm_printer_apply,
6358 scm_port_with_print_state): Use scm_i_port_with_print_state.
6359 (scm_simple_format): Modified not to destroy print states.
6360 (print_state_mutex): New mutex.
6361 (scm_make_print_state, scm_free_print_state, scm_prin1):
6362 Lock/unlock print_state_mutex.
6363
7aaf8dc9
MD
6364 * deprecated.h (SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK):
6365 Use current names in definitions.
6366
a4d9ffa1
KR
63672003-05-10 Kevin Ryde <user42@zip.com.au>
6368
6369 * numbers.c (scm_num_eq_p, scm_less_p): Don't pass NaN to mpz_cmp_d.
6370
d25e96a4
KR
6371 * numbers.c (scm_integer_length): On negative bignums, adjust
6372 mpz_sizeinbase to account for it looking at absolute value where we
6373 want ones-complement.
6374
6375 * numbers.c (scm_gcd): In bignum/inum, don't pass yy==0 to mpz_gcd_ui
6376 since we're only using the ulong return value, and x might not fit.
6377
5bf6a6f0
DH
63782003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6379
6380 * eval.c, eval.h, read.c, read.h (scm_sym_dot): Moved from eval to
6381 read. This will allow to make the definition in read.c static.
6382
f58c472a
DH
63832003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6384
6385 * eval.c, eval.h, evalext.c, evalext.h (scm_m_undefine): Moved
6386 from evalext to eval. This will allow to make some of the
6387 definitions in eval.c static.
6388
90382aeb
KR
63892003-05-06 Kevin Ryde <user42@zip.com.au>
6390
6391 * numbers.c (scm_difference): In inum - bignum, handle negative inum.
6392 (scm_logcount): Use mpz_com, not mpz_neg.
6393
3b88ed2a
DH
63942003-05-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6395
6396 The purpose of this patch is to make guile's internal memoizers
6397 distinguishable from memoizing macros created on the scheme level
6398 or from user provided primitive memoizing macros. The reason is,
6399 that the internal memoizers are the only ones that are allowed to
6400 transform their scheme input into memoizer byte code, while all
6401 other memoizing macros may only transform scheme code into new
6402 scheme code.
6403
6404 To achieve this, a new macro type 'builtin-macro!' is introduced.
6405 Currently, 'builtin-macro!'s are handled as memoizing macros, but
6406 this will change when the memoizer and executor are separated.
6407
6408 * macros.[ch] (scm_i_makbimacro): New.
6409
6410 * macros.h (SCM_BUILTIN_MACRO_P): New.
6411
6412 * macros.c (macro_print, scm_macro_type): Support builtin-macro!s.
6413
6414 * eval.c, goops.c: All of guile's primitive memoizing macros are
6415 primitive builtin-macros now.
6416
6417 * eval.c (scm_macroexp, SCM_CEVAL): Make sure the primitive
6418 builtin-macros are handled equally to memoizing macros.
6419
b0780eb1
MV
64202003-05-04 Marius Vollmer <mvo@zagadka.de>
6421
6422 * throw.c (scm_ithrow): Remove "asm volatile" hack. It used to
6423 work around a bug in GCC 2.95.2 but is now a bug in itself.
6424
1cbf4fe9
MV
64252003-05-02 Marius Vollmer <mvo@zagadka.de>
6426
6427 * deprecated.h (scm_rstate, scm_rng, SCM_SLOPPY_CONSP,
6428 SCM_SLOPPY_NCONSP, scm_tc7_ssymbol, scm_tc7_msymbol,
6429 scm_tcs_symbols): New.
6430
1a61d41b
MV
64312003-04-30 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6432
096ecbaf
MV
6433 * deprecated.h, deprecated.c (scm_protect_object,
6434 scm_unprotect_object, SCM_SETAND_CAR, SCM_SETOR_CAR,
6435 SCM_SET_AND_CDR, SCM_SET_OR_CDR, SCM_FREEP, SCM_NFREEP,
6436 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
6437 SCM_GCCDR, scm_remember, scm_the_root_module, scm_make_module,
6438 scm_ensure_user_module, scm_load_scheme_module, scm_port,
6439 scm_ptob_descriptor, scm_port_rw_active,
6440 scm_close_all_ports_except): New.
6441
1a61d41b
MV
6442 * ports.c (scm_c_port_for_each): New function, mostly copied from
6443 scm_port_for_each.
6444 (scm_port_for_each): Reimplemented using scm_c_port_for_each.
6445 * ports.h (scm_c_port_for_each): New prototype.
6446
c8e1d354
MD
64472003-04-28 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6448
6449 * eval.c (scm_m_atdispatch): Removed until actually needed. (This
6450 macro was introduced in anticipation of GOOPS method compilation
6451 code.)
6452
6453 * goops.c: Removed binding of @dispatch.
6454
a4aa2134
DH
64552003-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
6456
6457 * eval.c, goops.c (@dispatch, @slot-ref, @slot-set!): Move the
6458 instructions that bind the macros on the scheme level back to
6459 goops.c in order to make sure again that the bindings go into the
6460 (oop goops) module and are not visible from the outside.
6461
9fbee57e
DH
64622003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6463
6464 * eval.c: Non functional change: Separated R5RS and non-R5RS
6465 macros into different sections of the file and ordered the
6466 memoizers alphabetically.
6467
12841895
DH
64682003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6469
6470 * eval.c (scm_ilookup): Rewritten to improve readability.
6471
6a3f13f0
DH
64722003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6473
6474 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
6475 Partially reverted patch from 2003-04-23 in oder to find a better
6476 compromise between readability and debuggability.
6477
b0c5d67b
DH
64782003-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6479
6480 * eval.c, eval.h, goops.c, goops.h (scm_m_atslot_ref,
6481 scm_m_atslot_set_x, scm_m_atdispatch): Move the declarations and
6482 definitions of the special goops memoizers from goops.[ch] to
6483 eval.[ch]. Hmm... it seems that scm_m_atdispatch is not used
6484 throughout guile.
6485
b9ad392e
MD
64862003-04-24 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6487
6488 * ports.c, ports.h (scm_i_port_table_mutex): New mutex.
6489
6490 * fports.c (scm_evict_ports): Lock/unlock scm_i_port_table_mutex.
6491
6492 * ports.c (scm_close_port, scm_flush_all_ports): Ditto.
6493
6494 * ioext.c (scm_fdes_to_ports): Ditto.
6495
6496 * vports.c (scm_make_soft_port): Changed SCM_DEFER/ALLOW_INTS into
6497 lock/unlock scm_i_port_table_mutex.
6498
6499 * strports.c (scm_mkstrport): Ditto.
6500
6501 * ports.c (scm_void_port, scm_port_for_each): Ditto.
6502
6503 * fports.c (scm_fdes_to_port): Ditto.
6504
d0b07b5d
DH
65052003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6506
6507 This set of patches contains no functional changes, only debatable
6508 minor stylistic ones. Still, in order to prepare a patch between
6509 my local copy and the CVS version, I decided to submit the changes
6510 below. Then, the patch will hopefully only contain relevant
6511 modifications :-)
6512
6513 * eval.c (iqq): Added const specifier.
6514
6515 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
6516 Use NULL instead of 0 to indicate that a pointer is returned.
6517 Removed some misleading 'fall through' comments.
6518
6519 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
6520 Split up long expressions into smaller ones to be more debugging
6521 friendly.
6522
a98e8e98
DH
65232003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6524
6525 * eval.h (SCM_ENTER_FRAME_HDLR, SCM_APPLY_FRAME_HDLR,
6526 SCM_EXIT_FRAME_HDLR): Use SCM_PACK to convert data to a SCM value
6527 rather than casting to SCM.
6528
c178c3a6
DH
65292003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6530
6531 * sort.c, pairs.h: Removed unnecessary includes.
6532
d339981a
DH
65332003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6534
6535 * sort.c: Replaced hand-made trampline code by the new official
6536 mechanism from eval.c. This fixes a segfault in the new test file
6537 sort.test.
6538
6539 (quicksort, compare_function, scm_restricted_vector_sort_x,
6540 scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
6541 scm_merge_list_step, scm_sort_x, scm_sort, scm_merge_vector_x,
6542 scm_merge_vector_step, scm_stable_sort_x, scm_stable_sort,
6543 scm_sort_list_x, scm_sort_list): Use trampoline mechanism from
6544 eval.c.
6545
6546 (subr2less, lsubrless, closureless, applyless, scm_cmp_function,
6547 cmp_fun_t): Removed.
6548
6549 (compare_function): Added.
6550
6551 * sort.c (quicksort, SWAP, stack_node): Replaced pointer
6552 arithmetics with index arithmetics. Changed quicksort to work on
6553 an array of SCM values instead of an array of characters. Avoid
6554 bytewise copying of SCM elements. Avoid allocating memory on the
6555 stack with alloca. Fixed some comments.
6556
821f18a4
DH
65572003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6558
6559 * eval.c (EXTEND_ENV): Eliminated.
6560
6561 (unmemocopy, SCM_CEVAL, SCM_APPLY): Use SCM_EXTEND_ENV instead of
6562 EXTEND_ENV.
6563
94fb5a6e
DH
65642003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6565
6566 * __scm.h (SCM_DEBUG_DEBUGGER_SUPPORT): New compile-time option.
6567
6568 * gc.card.c (scm_gc_marked_p): Fixed compiler warning when
6569 compiling with SCM_DEBUG==1 by moving definition behind prototype.
6570
6571 * gc.card.c (scm_dbg_t_list_cell, scm_dbg_t_double_cell,
6572 scm_dbg_gc_marked_p, scm_dbg_gc_get_card, scm_dbg_gc_get_bvec,
6573 scm_t_list_cell_struct, scm_t_list_cell, scm_t_double_cell,
6574 scm_gc_marked_p, scm_gc_get_card, scm_gc_get_bvec): Fixed
6575 functions such that they check if the object is a non-immediate.
6576 Further, renamed identifiers to use the scm_dbg_ prefix and made
6577 their inclusion into the lib dependent of the
6578 SCM_DEBUG_DEBUGGER_SUPPORT compile time option.
6579
fce0b22d
DH
65802003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6581
6582 * __scm.h: Fixed comment about the SCM_DEBUG_TYPING_STRICTNESS
6583 debug option.
6584
1685446c
DH
65852003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6586
821f18a4 6587 * list.c (scm_ilength, scm_last_pair), unif.c (l2ra): Prefer
1685446c
DH
6588 !SCM_CONSP over SCM_NCONSP. Now, guile itself does not include
6589 any calls to SCM_NCONSP any more.
6590
6591 * unif.c (l2ra): Eliminate redundant check.
6592
9ff1720f
DH
65932003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6594
6595 * list.c (scm_cons_star), ramap.c (scm_ra_sum, scm_ra_product,
6596 scm_array_map_x), unif.c (l2ra): Prefer !SCM_NULLP over
6597 SCM_NNULLP. Now, guile itself does not include any calls to
6598 SCM_NNULLP any more.
6599
05b15362
DH
66002003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6601
6602 * eval.c (unmemocopy, SCM_APPLY, scm_map, scm_for_each,
6603 scm_copy_tree): Place assignment expressions which are part of
6604 other expressions into an expression of their own.
6605
0c88d7df
DH
66062003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6607
6608 * goops.c (TEST_CHANGE_CLASS, scm_sys_initialize_object): Don't
6609 compare SCM values with !=.
6610
5cb22e96
DH
66112003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6612
6613 * eval.c, eval.h, evalext.c, evalext.h (scm_sym_setter,
6614 scm_m_generalized_set_x, scm_init_evalext): Move the declaration
6615 and definition of the memoizer for the generalized set! macro from
6616 evalext.[ch] to eval.[ch]. Use the SCM_SYNTAX snarfer macro to
6617 define the macro object.
6618
6619 * eval.c, eval.h (s_set_x, scm_s_set_x, scm_m_set_x,
6620 scm_m_generalized_set_x): Since now scm_s_set_x is only used in
6621 eval.c, it is made static and renamed to s_set_x.
6622
6623 * evalext.c (scm_defined_p, scm_m_undefine): Prefer !SCM_<foo>
6624 over SCM_N<foo>.
6625
a44a9715
DH
66262003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6627
6628 * eval.c, root.h (scm_undefineds, SCM_NUM_PROTECTS, undefineds,
6629 scm_init_eval): Made scm_undefineds static in eval.c, renamed it
6630 to undefineds and registered the object as a permanent object.
6631
6632 * eval.c, eval.h (scm_f_apply, scm_init_eval): Made scm_f_apply
6633 static in eval.c, renamed it to f_apply and registered the object
6634 as a permanent object.
6635
1b43d24c
DH
66362003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6637
5cb22e96 6638 * eval.c (SCM_BIT7, SCM_BIT8, unmemocopy, SCM_CEVAL): Renamed
1b43d24c
DH
6639 file-local macro SCM_BIT8 to SCM_BIT7, which is more appropriate.
6640
aec16f99
DH
66412003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6642
6643 * numbers.c (scm_logtest): Fixed argument bug in the call to
6644 mpz_and, which showed up when compiling with SCM_DEBUG defined.
6645
f96460ce
DH
66462003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6647
6648 * gc-card.c (scm_i_sweep_card, scm_i_init_card_freelist): Fixed
6649 type errors that showed up when compiling with SCM_DEBUG defined.
6650
d0f6ceb8
DH
66512003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6652
6653 * continuations.c, continuations.h, eval.c, eval.h, extensions.c,
6654 gsubr.c, guile.c, init.c, read.c, root.c, root.h, stackchk.h,
6655 throw.c: Removed uses of DEBUG_EXTENSIONS and DYNAMIC_LINKING to
6656 fix compile errors with --disable-deprecated.
6657
19a7a089
RB
66582003-04-17 Rob Browning <rlb@defaultvalue.org>
6659
6660 * numbers.c (scm_integer_expt): fix case where we were declaring
6661 vars in the middle of a statement block. Thanks to Thamer
6662 Al-Harbash.
6663
47cd67db
MD
66642003-04-17 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6665
0fd7dcd3
MD
6666 * goops.c (TEST_CHANGE_CLASS): Update variable class after class
6667 change.
6668
47cd67db
MD
6669 * eq.c (scm_eqv_p): Turned into a primitive generic.
6670
3b8b889c
RB
66712003-04-16 Rob Browning <rlb@defaultvalue.org>
6672
312006bb
RB
6673 * gc_os_dep.c: Added patch for UnixWare and OpenUNIX support.
6674 Thanks to Boyd Gerber.
6675 Added check for __arm__ in addition to arm for LINUX and copied
6676 __s390__ defines from upstream libgc. Thanks to James Treacy for
6677 reporting the problems.
c7ef2ea1 6678
3b8b889c
RB
6679 * numbers.c (PTRDIFF_MIN): use SCM_CHAR_BIT.
6680
6681 * socket.c: use SCM_CHAR_BIT.
6682
6683 * random.c (scm_c_random_bignum): use SCM_CHAR_BIT.
6684
6685 * num2integral.i.c (NUM2INTEGRAL): use SCM_CHAR_BIT.
6686
43261b39
MD
66872003-04-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6688
6689 * feature.c (scm_init_feature): Always add threads feature.
6690
58241edc
MD
66912003-04-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6692
6693 * goops.c (scm_sys_fast_slot_ref): Use SCM_SLOT instead of
6694 scm_at_assert_bound_ref. (We don't want the unbound check. See
6695 oop/goops/active-slot.scm.)
6696
94e91275
RB
66972003-04-14 Rob Browning <rlb@defaultvalue.org>
6698
6699 * tags.h: scm_t_intptr should have been intptr_t.
6700
3071ea27
RB
67012003-04-13 Rob Browning <rlb@defaultvalue.org>
6702
6703 * __scm.h (SCM_FLUSH_REGISTER_WINDOWS): don't just rely on "sparc"
6704 test. Instead use
6705 #if defined (sparc) || defined (__sparc__) || defined (__sparc)
6706 as gc_os_dep.c suggests is appropriate.
6707
6708 * goops.c (prep_hashsets): make static to match prototype.
6709 (scm_sym_args): SCM_SYMBOL -> SCM_GLOBAL_SYMBOL. Thanks to Albert
6710 Chin.
6711
6712 * c-tokenize.lex: remove trailing comma from enum. Thanks to
6713 Albert Chin.
6714
6715 * gc_os_dep.c: add NetBSD powerpc config info. Thanks to Thomas
6716 Klausner.
6717
21ab2aeb
MD
67182003-04-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6719
6720 * goops.c (scm_sys_prep_layout_x): Instance allocation is now
6721 indicated through extra fields in getters-n-setters.
6722 (scm_add_slot): Adapted to new format of getters_n_setters slot.
6723 (Thanks to Andy Wingo.)
6724
dff96e95
HWN
67252003-02-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6726
6727 * gc-segment.c: add comment
6728
07921c76
RB
67292003-04-07 Rob Browning <rlb@defaultvalue.org>
6730
b5331f10
RB
6731 * debug.h: change "id" arg name to "info_id" to avoid objective-c
6732 clash.
6733
07921c76
RB
6734 * num2integral.i.c (NUM2INTEGRAL): fix bug pointed out by Mikael
6735 and add regression test to standalone/.
6736
67372003-04-06 Rob Browning <rlb@defaultvalue.org>
6738
6739 * strings.c (scm_mem2string): use memcpy rather than by-hand loop.
6740 Thanks to Dale P. Smith.
6741
6742 * random.c: #include gmp.h.
6743 (scm_c_random_bignum): normalize result on return.
6744
6745 * init.c: #include gmp.h.
6746
6747 * numbers.h: remove the gmp.h #include (not needed now).
6748
6749 * posix.h: change occurences of "id" to something else so we don't
6750 cause trouble when included via objective-c (can't hurt, might
6751 help). Still have usage in debug.h, though.
6752
938f6b7c
MD
67532003-04-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6754
372691d8
MD
6755 * random.c (scm_c_random_bignum): Don't generate a random number
6756 equal to m (the second argument of scm_c_random_bignum); only
6757 generate numbers in the range 0 <= r < m.
c5f268f8
MD
6758 (scm_c_default_rstate): Use SCM_VARIABLE_REF to access
6759 scm_var_random_state.
372691d8 6760
938f6b7c
MD
6761 * num2integral.i.c (INTEGRAL2BIG): Put negation of n inside then
6762 clause.
6763
6cdb8c3f
RB
67642003-04-05 Rob Browning <rlb@defaultvalue.org>
6765
938f6b7c 6766 * modules.c (scm_module_import_interface): move declaration of
6cdb8c3f
RB
6767 uses before any code.
6768
15635be5
MD
67692003-04-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6770
1ecfd013
MD
6771 * Makefile.am (scmconfig.h): Look for config.h in top_builddir,
6772 not top_srcdir.
6773
15635be5
MD
6774 * hashtab.c (rehash_after_gc): Clear to_rehash list before
6775 processing it in order to avoid an infinite loop.
6776
6777 * print.c (scm_prin1): Remember old state of pstate->writingp.
6778
73be1d9e
MV
67792003-04-05 Marius Vollmer <mvo@zagadka.de>
6780
6781 * Changed license terms to the plain LGPL thru-out.
6782
ad815c06
RB
67832003-04-04 Rob Browning <rlb@defaultvalue.org>
6784
6785 * socket.c (FLIPCPY_NET_HOST_128): new macro.
6786 (ipv6_net_to_num, ipv6_num_to_net, bignum_in_ipv6_range_p):
6787 rewrite to handle GMP bignums.
6788
6789
6790 * random.c (scm_c_random_bignum): rewrite to handle GMP bignums.
6791
6792 * ports.c (scm_getc): minor tweak.
6793
6794 * numbers.h: remove SCM_BIGDIG conditionals, reorganize, and
6795 rewrite to handle GMP bignums.
6796
6797 * numbers.c: rewrite *many* functions to handle GMP bignums.
6798
6799 * num2integral.i.c (NUM2INTEGRAL, INTEGRAL2NUM, INTEGRAL2BIG):
6800 handle GMP bignums.
6801
6802 * num2float.i.c (NUM2FLOAT): handle GMP bignums.
6803
6804 * init.c (check_config): remove SCM_BIGDIG conditionals.
6805 (scm_init_guile_1): test to make sure mpz_t fits in a double_cell.
6806
6807 * gc-card.c ("sweep_card"): handle new mpz_t bignums.
6808
6809 * eval.c: remove SCM_BIGDIG conditionals.
6810
6811 * eq.c (s_scm_eqv_p): scm_i_bigcomp -> scm_i_bigcmp.
6812
6cdb8c3f
RB
68132003-03-31 Rob Browning <rlb@defaultvalue.org>
6814
6815 * Makefile.am (scmconfig.h): change srcdir to builddir. (Thanks
6816 to Kevin Ryde.)
6817
68182003-03-27 Rob Browning <rlb@defaultvalue.org>
6819
6820 * threads.h: fix various preprocessor usages of new public
6821 symbols to expect 0 or 1 values rather than 1 or undefined.
6822 i.e. change #ifdef to #if, etc.
6823
6824 * threads.c: fix various preprocessor usages of new public
6825 symbols to expect 0 or 1 values rather than 1 or undefined.
6826 i.e. change #ifdef to #if, etc.
6827
6828 * tags.h: fix various preprocessor usages of new public
6829 symbols to expect 0 or 1 values rather than 1 or undefined.
6830 i.e. change #ifdef to #if, etc.
6831
6832 * stacks.c: fix various preprocessor usages of new public
6833 symbols to expect 0 or 1 values rather than 1 or undefined.
6834 i.e. change #ifdef to #if, etc.
6835
6836 * stackchk.h: fix various preprocessor usages of new public
6837 symbols to expect 0 or 1 values rather than 1 or undefined.
6838 i.e. change #ifdef to #if, etc.
6839
6840 * stackchk.c: fix various preprocessor usages of new public
6841 symbols to expect 0 or 1 values rather than 1 or undefined.
6842 i.e. change #ifdef to #if, etc.
6843
6844 * sort.c: fix various preprocessor usages of new public
6845 symbols to expect 0 or 1 values rather than 1 or undefined.
6846 i.e. change #ifdef to #if, etc.
6847
6848 * read.c: fix various preprocessor usages of new public
6849 symbols to expect 0 or 1 values rather than 1 or undefined.
6850 i.e. change #ifdef to #if, etc.
6851
6852 * random.c: fix various preprocessor usages of new public
6853 symbols to expect 0 or 1 values rather than 1 or undefined.
6854 i.e. change #ifdef to #if, etc.
6855
6856 * print.c: fix various preprocessor usages of new public
6857 symbols to expect 0 or 1 values rather than 1 or undefined.
6858 i.e. change #ifdef to #if, etc.
6859
6860 * objects.c: fix various preprocessor usages of new public
6861 symbols to expect 0 or 1 values rather than 1 or undefined.
6862 i.e. change #ifdef to #if, etc.
6863
6864 * numbers.h: fix various preprocessor usages of new public
6865 symbols to expect 0 or 1 values rather than 1 or undefined.
6866 i.e. change #ifdef to #if, etc.
6867
6868 * null-threads.c: fix various preprocessor usages of new public
6869 symbols to expect 0 or 1 values rather than 1 or undefined.
6870 i.e. change #ifdef to #if, etc.
6871
6872 * lang.c: fix various preprocessor usages of new public
6873 symbols to expect 0 or 1 values rather than 1 or undefined.
6874 i.e. change #ifdef to #if, etc.
6875
6876 * lang.h: fix various preprocessor usages of new public
6877 symbols to expect 0 or 1 values rather than 1 or undefined.
6878 i.e. change #ifdef to #if, etc.
6879
6880 * iselect.h: fix various preprocessor usages of new public
6881 symbols to expect 0 or 1 values rather than 1 or undefined.
6882 i.e. change #ifdef to #if, etc.
6883
6884 * init.c: fix various preprocessor usages of new public
6885 symbols to expect 0 or 1 values rather than 1 or undefined.
6886 i.e. change #ifdef to #if, etc.
6887
6888 * gh_data.c: fix various preprocessor usages of new public
6889 symbols to expect 0 or 1 values rather than 1 or undefined.
6890 i.e. change #ifdef to #if, etc.
6891
6892 * gh.h: fix various preprocessor usages of new public
6893 symbols to expect 0 or 1 values rather than 1 or undefined.
6894 i.e. change #ifdef to #if, etc.
6895
6896 * gen-scmconfig.c: change most new public symbols to be defined to
6897 0 or 1 rather than being either 1 or undefined.
6898
6899 * gc_os_dep.c: fix various preprocessor usages of new public
6900 symbols to expect 0 or 1 values rather than 1 or undefined.
6901 i.e. change #ifdef to #if, etc.
6902 (STACK_GROWS_DOWN): define to 0 or 1 rather than 1 or undef.
6903
6904 * gc.h: fix various preprocessor usages of new public
6905 symbols to expect 0 or 1 values rather than 1 or undefined.
6906 i.e. change #ifdef to #if, etc.
6907
6908 * gc-card.c: fix various preprocessor usages of new public
6909 symbols to expect 0 or 1 values rather than 1 or undefined.
6910 i.e. change #ifdef to #if, etc.
6911
6912 * gc-mark.c: fix various preprocessor usages of new public
6913 symbols to expect 0 or 1 values rather than 1 or undefined.
6914 i.e. change #ifdef to #if, etc.
6915
6916 * feature.c: fix various preprocessor usages of new public
6917 symbols to expect 0 or 1 values rather than 1 or undefined.
6918 i.e. change #ifdef to #if, etc.
6919
6920 * evalext.c: fix various preprocessor usages of new public
6921 symbols to expect 0 or 1 values rather than 1 or undefined.
6922 i.e. change #ifdef to #if, etc.
6923
6924 * eval.h: fix various preprocessor usages of new public
6925 symbols to expect 0 or 1 values rather than 1 or undefined.
6926 i.e. change #ifdef to #if, etc.
6927
6928 * eval.c: fix various preprocessor usages of new public
6929 symbols to expect 0 or 1 values rather than 1 or undefined.
6930 i.e. change #ifdef to #if, etc.
6931
6932 * eq.c: fix various preprocessor usages of new public
6933 symbols to expect 0 or 1 values rather than 1 or undefined.
6934 i.e. change #ifdef to #if, etc.
6935
6936 * coop.c: fix various preprocessor usages of new public
6937 symbols to expect 0 or 1 values rather than 1 or undefined.
6938 i.e. change #ifdef to #if, etc.
6939
6940 * coop-threads.c: fix various preprocessor usages of new public
6941 symbols to expect 0 or 1 values rather than 1 or undefined.
6942 i.e. change #ifdef to #if, etc.
6943
6944 * coop-pthreads.c: fix various preprocessor usages of new public
6945 symbols to expect 0 or 1 values rather than 1 or undefined.
6946 i.e. change #ifdef to #if, etc.
6947
6948 * coop-defs.h: fix various preprocessor usages of new public
6949 symbols to expect 0 or 1 values rather than 1 or undefined.
6950 i.e. change #ifdef to #if, etc.
6951
6952 * convert.i.c: fix various preprocessor usages of new public
6953 symbols to expect 0 or 1 values rather than 1 or undefined.
6954 i.e. change #ifdef to #if, etc.
6955
6956 * continuations.c: fix various preprocessor usages of new public
6957 symbols to expect 0 or 1 values rather than 1 or undefined.
6958 i.e. change #ifdef to #if, etc.
6959
6960 * _scm.h: fix various preprocessor usages of new public symbols to
6961 expect 0 or 1 values rather than 1 or undefined. i.e. change
6962 #ifdef to #if, etc.
6963
d11d697a
MV
69642003-03-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6965
9686f86d
MV
6966 * init.c (scm_init_guile_1): Call scm_i_init_deprecated.
6967
6968 * deprecated.c, deprecated.h: New files, to collect deprecated
6969 things in one place.
6970 * Makefile.am: Added them in all the right places.
6971
d11d697a
MV
6972 * Makefile.am (EXTRA_DIST): Added "scmconfig.h.top".
6973 (scmconfig.h): Get "scmconfig.h.top" from $(srcdir) so that VPATH
6974 builds work.
9686f86d
MV
6975 (DOT_X_FILES): Removed "iselect.x".
6976 (DOT_DOC_FILES): Removed "iselect.doc".
d11d697a 6977
e3c0c3b9
RB
69782003-03-25 Rob Browning <rlb@defaultvalue.org>
6979
6980 * win32-socket.h: #include "libguile/__scm.h". Replace usage of
6981 HAVE_WINSOCK2_H with SCM_HAVE_WINSOCK2_H.
6982
6983 * win32-socket.c: #include <config.h> if HAVE_CONFIG_H.
6984
6985 * vports.c: #include <config.h> if HAVE_CONFIG_H.
6986
6987 * unif.c: #include <config.h> if HAVE_CONFIG_H. Replace usage of
6988 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6989
6990 * threads.h: replace usage of struct timespect with
6991 scm_t_timespec. Replace usage of USE_PTHREAD_THREADS with
6992 SCM_USE_PTHREAD_THREADS. Remove typedef for struct timespec in
6993 favor of scm_t_timespec from scmconfig.h.
6994
6995 * threads.c: move libguile/_scm.h include to the top so we pick up
6996 any critical defines like _GNU_SOURCE early. Replace usage of
6997 struct timespect with scm_t_timespec. Replace usage of
6998 STACK_GROWS_UP with SCM_STACK_GROWS_UP. Replace usage of
6999 USE_PTHREAD_THREADS with SCM_USE_PTHREAD_THREADS.
7000
7001 * threads-plugin.h: replace usage of struct timespect with
7002 scm_t_timespec.
7003
7004 * threads-plugin.c: #include <config.h> if HAVE_CONFIG_H. Replace
7005 usage of struct timespect with scm_t_timespec.
7006
7007 * tags.h: move HAVE_STDINT_H handling to scmconfig.h. Move
7008 HAVE_INTTYPES_H handling to scmconfig.h. #include
7009 "libguile/__scm.h". Rework handling for scm_t_bits,
7010 scm_t_signed_bits, SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
7011 SCM_T_SIGNED_BITS_MIN, and SIZEOF_SCM_T_BITS to use scm_t_intptr,
7012 scm_t_uintptr, SCM_SIZEOF_INTPTR_T, and SCM_SIZEOF_UINTPTR_T, and
7013 SCM_SIZEOF_UNSIGNED_LONG. Rename usage of HAVE_ARRAYS to
7014 SCM_HAVE_ARRAYS.
7015
7016 * symbols.c: #include <config.h> if HAVE_CONFIG_H.
7017
7018 * struct.c: #include <config.h> if HAVE_CONFIG_H.
7019
7020 * strports.c: #include <config.h> if HAVE_CONFIG_H.
7021
7022 * strop.c: #include <config.h> if HAVE_CONFIG_H.
7023
7024 * stime.h: move handling of time related headers to scmconfig.h.
7025
7026 * stime.c: #include <config.h> if HAVE_CONFIG_H.
7027
7028 * stacks.c: replace usage of STACK_GROWS_UP with
7029 SCM_STACK_GROWS_UP.
7030
7031 * sort.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
7032 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7033
7034 * socket.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
7035 of uint32 and HAVE_UINT_32 with scm_t_int32.
7036
7037 * smob.c: #include <config.h> if HAVE_CONFIG_H.
7038
7039 * simpos.c: #include <config.h> if HAVE_CONFIG_H.
7040
7041 * script.c: #include <config.h> if HAVE_CONFIG_H.
7042
7043 * scmsigs.c: #include <config.h> if HAVE_CONFIG_H.
7044
7045 * scmconfig.h.top: new file -- preamble for scmconfig.h.
7046
7047 * rw.c: #include <config.h> if HAVE_CONFIG_H.
7048
7049 * regex-posix.c: #include <config.h> if HAVE_CONFIG_H.
7050
7051 * read.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7052
7053 * rdelim.c: #include <config.h> if HAVE_CONFIG_H.
7054
7055 * random.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
7056 of LONG32, LONG64, SIZEOF_LONG, and HAVE_LONG_LONGS with
7057 scm_t_int32, scm_t_int64, and SCM_HAVE_T_INT64. Rename usage of
7058 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7059
7060 * ramap.c: replace usage of HAVE_LONG_LONGS with
7061 "SCM_SIZEOF_LONG_LONG != 0".
7062
7063 * putenv.c: #include <config.h> if HAVE_CONFIG_H. #include
7064 "libguile/scmconfig.h".
7065
7066 * pthread-threads.c: #include <config.h> if HAVE_CONFIG_H.
7067
7068 * print.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7069 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7070
7071 * posix.c: #include <config.h> if HAVE_CONFIG_H.
7072
7073 * ports.c: #include <config.h> if HAVE_CONFIG_H.
7074
7075 * objects.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7076
7077 * numbers.h: replace usage of HAVE_FLOATINGPOINT_H with
7078 SCM_HAVE_FLOATINGPOINT_H. Replace usage of HAVE_IEEEFP_H with
7079 SCM_HAVE_IEEEFP_H. Replace usage of HAVE_NAN_H with
7080 SCM_HAVE_NAN_H. Replace usage of STDC_HEADERS with
7081 SCM_HAVE_STDC_HEADERS. Replace usage of ptrdiff_t with
7082 scm_t_ptrdiff. Replace usage of HAVE_LONG_LONGS with
7083 "SCM_SIZEOF_LONG_LONG != 0".
7084
7085 * numbers.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
7086 of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0". Replace
7087 usage of ptrdiff_t with scm_t_ptrdiff. Replace usage of
7088 SIZEOF_PTRDIFF_T with SCM_SIZEOF_SCM_T_PTRDIFF.
7089
7090 * num2integral.i.c: #include <config.h> if HAVE_CONFIG_H.
7091
7092 * null-threads.h: replace usage of struct timespect with
7093 scm_t_timespec.
7094
7095 * net_db.c: #include <config.h> if HAVE_CONFIG_H.
7096
7097 * mkstemp.c: #include <config.h> if HAVE_CONFIG_H. #include
7098 "libguile/__scm.h". Remove definition of gcc_uint64_t in favor of
7099 scm_t_uint64 and rename usages.
7100
7101 * mallocs.c: #include <config.h> if HAVE_CONFIG_H.
7102
7103 * load.c: #include <config.h> if HAVE_CONFIG_H.
7104
7105 * iselect.h: move handling of time related headers to scmconfig.h.
7106 Rename usage of HAVE_SYS_SELECT_H to SCM_HAVE_SYS_SELECT_H.
7107 Rename usage of HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Rename
7108 usage of USE_COOP_THREADS to SCM_USE_COOP_THREADS.
7109
7110 * iselect.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7111 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
7112 USE_NULL_THREADS to SCM_USE_NULL_THREADS.
7113
7114 * ioext.c: #include <config.h> if HAVE_CONFIG_H.
7115
7116 * inline.h: #include "libguile/__scm.h" at the top. Change code
7117 to use SCM_C_INLINE and SCM_INLINE_C_INCLUDINT_INLINE_H to decide
7118 what to do instead of creating a new public #define. Rename usage
7119 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
7120 USE_NULL_THREADS to SCM_USE_NULL_THREADS. Rename usage of
7121 USE_COPT_THREADS to SCM_USE_COPT_THREADS.
7122
7123 * inline.c: rearrange handling -- now we just #define
7124 SCM_INLINE_C_INCLUDING_INLINE_H to 1 and #include
7125 "libguile/inline.h". scmconfig.h will define SCM_C_INLINE as
7126 appropriate, and we use that in inline.h along with the above
7127 define to determine how to respond.
7128
7129 * init.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
7130 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7131
7132 * guile.c: #include <config.h> if HAVE_CONFIG_H.
7133
7134 * gh_data.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7135 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7136
7137 * gh.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7138
7139 * gen-scmconfig.h.in: new file -- see gen-scmconfig.c for details.
7140
7141 * gen-scmconfig.c: new file -- see comments in file for details.
7142
7143 * gdbinit.c: #include <config.h> if HAVE_CONFIG_H.
7144
7145 * gc_os_dep.c: #include <config.h> if HAVE_CONFIG_H. Replace
7146 usage of STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7147
7148 * gc.h: replace usage of SIZEOF_LONG with
7149 SCM_SIZEOF_UNSIGNED_LONG. Replace usage of USE_PTHREAD_THREADS
7150 with SCM_USE_PTHREAD_THREADS. Remove SCM_SIZEOF_LONG definition
7151 since we handle that in scmconfig.h now.
7152
7153 * gc.c: #include <config.h> if HAVE_CONFIG_H.
7154
7155 * gc-mark.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7156 of HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of
7157 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7158
7159 * gc-malloc.c: #include <config.h> if HAVE_CONFIG_H.
7160
7161 * gc-card.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7162 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7163
7164 * fports.c: #include <config.h> if HAVE_CONFIG_H.
7165
7166 * filesys.c: #include <config.h> if HAVE_CONFIG_H.
7167
7168 * feature.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7169 of USE_NULL_THREADS to SCM_USE_NULL_THREADS.
7170
7171 * extensions.c: #include <config.h> if HAVE_CONFIG_H.
7172
7173 * evalext.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7174 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7175
7176 * eval.c: #include <config.h> if HAVE_CONFIG_H. #include
7177 "libguile/__scm.h" rather than scmconfig.h. Rename usage of
7178 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
7179 with "SCM_SIZEOF_LONG_LONG != 0".
7180
7181 * error.c: #include <config.h> if HAVE_CONFIG_H.
7182
7183 * eq.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
7184 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
7185 with "SCM_SIZEOF_LONG_LONG != 0".
7186
7187 * deprecation.c: #include <config.h> if HAVE_CONFIG_H.
7188
7189 * coop.c: replace usage of struct timespect with scm_t_timespec.
7190 #include <config.h> if HAVE_CONFIG_H.
7191
7192 * coop-threads.c: #include "libguile/_scm.h" early. Replace
7193 usage of struct timespect with scm_t_timespec. Replace usage of
7194 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7195
7196 * coop-pthreads.c: #include "libguile/_scm.h" early. Replace
7197 usage of struct timespect with scm_t_timespec. Replace usage of
7198 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7199
7200 * coop-defs.h: move handling of time related headers to
7201 scmconfig.h. Add #include "libguile/__scm.h". Rename usage of
7202 HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Replace usage of struct
7203 timespect with scm_t_timespec.
7204
7205 * convert.i.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7206
7207 * convert.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7208
7209 * convert.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7210 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7211
7212 * continuations.c: move libguile/_scm.h include to the top so we
7213 pick up any critical defines like _GNU_SOURCE early.
7214
7215 * backtrace.c: #include <config.h> if HAVE_CONFIG_H.
7216
7217 * async.c: #include <config.h> if HAVE_CONFIG_H.
7218
7219 * alloca.c: #include <config.h> if HAVE_CONFIG_H.
7220
7221 * _scm.h: #include <config.h> if HAVE_CONFIG_H.
7222 Rename usage of USE_PTHREAD_THREADS to SCM_USE_PTHREAD_THREADS.
7223
7224 * __scm.h: move libguile/scmconfig.h include up to the top, so
7225 we're sure to pick up any critical defines like _GNU_SOURCE early.
7226 #include <limits.h> removed in favor of scmconfig.h inclusion when
7227 appropriate. STDC_HEADERS based inclusion of stdlib.h,
7228 sys/types.h, stddef.h, and sys/stdtypes.h removed in favor of
7229 scmconfig.h inclusion when appropriate. Various Win32 related
7230 definitions removed in favor of scmconfig.h inclusion when
7231 appropriate.
7232 (HAVE_UINTPTR_T): definition removed (see NEWS).
7233 (SIZEOF_PTRDIFF_T): definition removed (see NEWS).
7234 (HAVE_LONG_LONGS): definition removed (see NEWS).
7235 (HAVE_LONG_LONG): definition removed (see NEWS).
7236 (HAVE_PTRDIFF_T): definition removed (see NEWS).
7237
7238 * Makefile.am: scmconfig.h is now generated by building and
7239 running gen-scmconfig.h and capturing its output. gen-scmconfig
7240 uses config.h and the configure.in generated gen-scmconfig.h to
7241 decide what to output. See gen-scmconfig.c for details.
7242 (noinst_PROGRAMS): add gen-scmconfig.
7243 (gen_scmconfig_SOURCES): new variable.
7244 (gen-scmconfig.$(OBJEXT)): new target - be careful to handle
7245 cross-compiling right.
7246 (scmconfig.h): build scmconfig.h from gen-scmconfig's output.
7247 (BUILT_SOURCES): add scmconfig.h.
7248
25e0bf97
MV
72492003-03-19 Marius Vollmer <mvo@zagadka.de>
7250
7251 * gc_os_dep.c: Added defines for sparc-unknown-netbsdelf1.5 from
7252 Adrian Bunk. Thanks!
7253
74b6d6e4
MD
72542003-03-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7255
7256 * goops.c (make_class_from_template): New fourth arg:
7257 applicablep.
7258 (scm_class_extended_generic_with_setter, scm_class_self): Fixed
7259 cpls.
7260
7261 * smob.c (scm_set_smob_apply): Call scm_i_inherit_applicable.
7262
7263 * goops.c, objects.c, objects.h (scm_make_extended_class): New
7264 second arg: applicablep.
7265 (scm_i_inherit_applicable): New function.
7266
7267 * goops.c, goops.h (scm_class_applicable,
7268 scm_class_extended_accessor): New classes.
7269
5c9e7dad
DH
72702003-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
7271
7272 * procs.c (scm_procedure_documentation): Removed redundant
7273 SCM_NIMP test and replaced other calls to SCM_IMP by more explicit
7274 predicates.
7275
f8af5c6d
MD
72762003-03-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7277
c614a00b
MD
7278 * list.c, list.h (scm_filter, scm_filter_x): New functions.
7279
109c2c9f
MD
7280 * modules.c (scm_module_import_interface): New function.
7281
f8af5c6d
MD
7282 * goops.c, goops.h (scm_class_accessor_method): Renamed from
7283 scm_class_accessor.
7284 (scm_class_accessor): New class.
7285
a48d60b1
MD
72862003-03-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7287
7288 * goops.c (scm_primitive_generic_generic): Enable primitive
7289 generic if not enabled.
7290 (scm_sys_goops_loaded): Setup unextended primitive generics.
7291
7292 * goops.c, goops.h (scm_c_extend_primitive_generic): New function.
7293
7294 * snarf.h (SCM_PRIMITIVE_GENERIC, SCM_PRIMITIVE_GENERIC_1): New
7295 snarf macros.
7296
7297 * numbers.c (scm_abs): Use SCM_PRIMITIVE_GENERIC. (This is only a
7298 testing example. All uses of SCM_GPROC should be converted.)
7299
7300 * procprop.c (scm_stand_in_scm_proc): Use scm_assq instead of
7301 scm_assoc.
7302
7303 * eq.c (scm_equal_p): Turned into a primitive generic.
7304
84edc049
RB
73052003-02-27 Rob Browning <rlb@defaultvalue.org>
7306
7307 * Makefile.am (scmconfig.h): new target -- generate file from
7308 ../config.h.
7309 (modinclude_HEADERS): remove version.h.
7310 (nodist_modinclude_HEADERS): add version.h.
7311
ea5c9285
MD
73122003-02-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7313
b4a1358c
MD
7314 This fixes a serious GC bug, introduced during the latest
7315 reorganization of the GC, which disabled freeing of structs and
7316 GOOPS objects:
7317
7318 * struct.c (scm_struct_prehistory): Init scm_i_structs_to_free to
7319 SCM_EOL.
53af8255
MD
7320 (scm_struct_prehistory): Move scm_free_structs to
7321 scm_before_mark_c_hook.
ea5c9285 7322
b4a1358c
MD
7323 * gc-card.c (sweep_card): Check that we haven't swept structs on
7324 this card before. That can happen if scm_i_sweep_all_segments has
7325 been called from some other place than scm_igc.
7326
c35738c1
MD
73272003-02-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7328
231a4ea8
MD
7329 * environments.c (DEFAULT_OBARRAY_SIZE): Changed from 137 to 31
7330 (since hash tables now adapt their size).
7331
7332 * modules.c (scm_modules_prehistory): Changed from 2001 to 1533
7333 (current number of prehistory bindings; hashtable code will select
7334 a prime which is greater than this value).
7335
7336 * symbols.c (scm_symbols_prehistory): Changed from 1009 to 2139
7337 (current number of initial symbols).
7338
7339 * properties.c (scm_init_properties): Don't specify size of
7340 scm_properties_whash.
7341
7342 * objprop.c (scm_init_objprop): Don't specify size of
7343 scm_object_whash.
7344
7345 * keywords.c (scm_init_keywords): Don't specify a hash table size.
7346
c35738c1
MD
7347 * hooks.c (scm_c_hook_add): Fixed bug in append mode.
7348
7349 The following changes introduce the use of resizable hash tables
7350 throughout Guile. It also renames the old *-hash-table* functions
7351 to *-alist-vector* and places them, together with the rest of the
7352 weak vector support, in the module (ice-9 weak-vector). We should
7353 probably introduce a new, better, API for weak references, for
7354 example "weak pairs" a la MIT-Scheme. (In Chez scheme, they even
7355 look like and are used like ordinary pairs.)
7356
7357 * environments.c (obarray_enter, obarray_retrieve, obarray_remove,
7358 leaf_environment_fold, obarray_remove_all): Use hashtable
7359 accessors.
7360
7361 * gc.c (scm_init_storage): Moved hook initialization to
7362 scm_storage_prehistory.
7363 (scm_storage_prehistory): New function.
7364 (scm_igc): Added commentary about placement of
7365 scm_after_sweep_c_hook.
7366
7367 * gc-mark.c (scm_mark_all): Use hashtable accessors.
7368 (scm_gc_mark_dependencies): Use SCM_WVECT_WEAK_KEY_P and
7369 SCM_WVECT_WEAK_VALUE_P.
7370
7371 * hashtab.c, hashtab.h (scm_hash_for_each, scm_hash_map): New
7372 functions.
7373 (scm_vector_to_hash_table, scm_c_make_resizing_hash_table):
7374 Removed.
7375 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table,
7376 scm_make_doubly_weak_hash_table): Moved here from weaks.c.
7377
7378 * init.c (scm_init_guile_1): Removed call to scm_init_weaks; Added
7379 calls to scm_storage_prehistory and scm_hashtab_prehistory.
7380
7381 * modules.c (module-reverse-lookup): Use hashtable accessors.
7382
7383 * symbols.c, symbols.h (scm_i_hash_symbol): New function.
7384
7385 * weaks.c, weaks.h (scm_make_weak_key_alist_vector,
7386 scm_make_weak_value_alist_vector,
7387 scm_make_doubly_weak_alist_vector): New functions.
7388
7389 * weaks.c (scm_init_weaks_builtins): New function.
7390
7391 * weaks.h (SCM_WVECTF_WEAK_KEY, SCM_WVECTF_WEAK_VALUE,
7392 SCM_WVECTF_NOSCAN, SCM_WVECT_WEAK_KEY_P, SCM_WVECT_WEAK_VALUE_P,
7393 SCM_WVECT_NOSCAN_P): New macros.
7394
7395 * weaks.c (scm_scan_weak_vectors): Use SCM_WVECT_WEAK_KEY_P
7396 and SCM_WVECT_WEAK_VALUE_P.
7397
7398 * weaks.c, weaks.h (scm_i_allocate_weak_vector): Renamed from
7399 allocate_weak_vector and exported.
7400
0a4c1355
MD
74012003-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7402
7403 * hashtab.c: Undid thread safety. (We decided that it's better to
7404 let the user explicitly protect the tables (or not) according what
7405 is suitable for the application.)
7406
87ca11ff
MD
74072003-02-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7408
7409 * hashtab.c (scm_hash_fn_remove_x, scm_internal_hash_fold): Made
7410 thread safe and handle resizing tables.
7411 (scm_ihashx, scm_sloppy_assx, scm_delx_x): Removed
7412 SCM_DEFER/ALLOW_INTS.
7413
f59a096e
MD
74142003-02-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7415
7416 * hashtab.c (scm_vector_to_hash_table,
7417 scm_c_make_resizing_hash_table, scm_make_hash_table): New
7418 functions.
7419 (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x): Made thread
7420 safe and handle resizing tables.
7421
7422 * weaks.c (scm_make_weak_key_hash_table,
7423 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
7424 Size argument made optional. Return resizable table if not
7425 specified.
7426
4b612c5b
MD
74272003-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7428
7429 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
7430 Fixed formals tests for closures. (Thanks to Kevin Ryde.)
7431
b3d7f6df
MD
74322003-02-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7433
7434 * debug.c (scm_procedure_source): Handle all objects for which
7435 procedure? is #t. (Thanks to Bill Schottstaedt.)
7436
756414cf
MD
74372003-01-23 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7438
361d631f
MD
7439 * futures.c (mark_futures): Don't need to mark data of recycled
7440 futures.
7441 (scan_futures, cleanup_undead): Be smarter about marking
7442 futures---avoid unnecessary passes through future lists.
7443
756414cf
MD
7444 * futures.h, futures.c: New files; Introduced recycling of
7445 futures. For fine-grained threading this lifts performance to
7446 another level. We can now use parallelization in inner loops of
7447 Guile programs without impossible overhead.
7448
7449 * threads.h, threads.c: Moved futures to their own file.
7450
7451 * Makefile.am (libguile_la_SOURCES): Added futures.c.
7452 (DOT_X_FILES): Added futures.x.
7453 (DOT_DOC_FILES): Added futures.doc.
7454 (modinclude_HEADERS): Added futures.h.
7455
7456 * threads.c, threads.h (scm_i_create_thread): Renamed from
7457 create_thread and made global.
7458
7459 * futures.c (scm_make_future): New procedure.
7460
7461 * eval.c: #include "libguile/futures.h".
7462
7463 * init.c: #include "futures.h"
7464 (scm_init_guile_1): Call scm_init_futures.
7465
7466 * stime.c (SCM_TIME_UNITS_PER_SECOND): Renamed from CLKTCK.
7467
7468 * stime.h (SCM_TIME_UNITS_PER_SECOND): Definition moved here.
7469
7470 * eval.c, eval.h (scm_trampoline_0, scm_i_call_closure_0): New
7471 functions.
7472
7473 * eval.c (scm_trampoline_1): Fixed arguments test for closures.
7474
b4debead
MD
74752003-01-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7476
7477 * threads.c (create_thread): Don't unwind dynwind chain of parent
7478 thread before creation. Just start the new thread with an empty
7479 dynwind chain.
7480
93f26b7b
MD
74812003-01-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7482
7483 * evalext.c, evalext.h (scm_self_evaluating_p): New function.
7484
38d8927c
MD
74852003-01-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7486
41c96c32
MD
7487 * threads.c (scm_timed_wait_condition_variable): Support timed
7488 waiting also for simple condition variables.
7489
38d8927c
MD
7490 * goops.c (TEST_CHANGE_CLASS): Use scm_change_object_class instead
7491 of calling the procedure change-object-class.
7492
9cf5d9b7
MD
74932003-01-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7494
7495 * ramap.c (scm_ramapc): Typo in error message.
7496
bbf8d523
MD
74972003-01-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7498
b46fae00
MD
7499 * goops.c (scm_sys_prep_layout_x): Bugfix: Only create layout for
7500 slots with instance allocation.
7501
bbf8d523
MD
7502 * goops.c, goops.h (scm_class_extended_generic_with_setter): New
7503 class.
7504 (scm_compute_applicable_methods): Use scm_generic_function_methods.
7505
7506 * goops.c (scm_generic_function_methods): Support extended
7507 generic functions.
7508
ebf9b47c
MD
75092002-12-29 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7510
7511 * eval.c (unmemocopy): Bugfix: scm_sym_delay --> scm_sym_future.
2e37d6a2 7512 Thanks to Neil for pointing this out!
ebf9b47c 7513
14a9ba3f
NJ
75142002-12-29 Neil Jerram <neil@ossau.uklinux.net>
7515
7516 * lang.h: Remove declarations matching definitions removed from
7517 lang.c (just below).
7518
c6a040a8
NJ
75192002-12-28 Neil Jerram <neil@ossau.uklinux.net>
7520
6054d805
NJ
7521 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
7522 scm_m_while, scm_nil_eq): Remove definitions that were superfluous
7523 and already commented out.
7524
c6a040a8
NJ
7525 * read.h (scm_lreadparen), read.c (scm_lreadr, scm_read_token,
7526 scm_lreadparen): Support reading vectors with Elisp syntax if
7527 SCM_ELISP_READ_EXTENSIONS is defined. (SCM_ELISP_READ_EXTENSIONS
7528 is not currently defined, and there isn't even a configure switch
7529 to enable it yet.)
7530
3742c12f
MV
75312002-12-26 Marius Vollmer <mvo@zagadka.ping.de>
7532
7533 * Makefile.am (c-tokenize.o): Refer to source via $< so that vpath
7534 builds work.
7535 (EXTRA_DIST): Added version.h.in.
7536
fb50ef08
MD
75372002-12-21 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7538
7539 This change makes it possible for one thread to do lazy sweeping
7540 while other threads are running. Now only the mark phase need to
7541 have all threads asleep. We should look further into this issue.
7542 Presently, I've put the locking of scm_i_sweep_mutex at
7543 "conservative" places due to my current lack of knowledge about
7544 the garbage collector. Please feel free to restrict these regions
7545 further to allow for maximal parallelism!
7546
7547 * gc.c, gc.h (scm_i_sweep_mutex): New mutex.
7548
7549 * gc.c (scm_gc_for_newcell), gc-malloc.c (scm_realloc,
7550 scm_gc_register_collectable_memory): Substitute locking of
7551 scm_i_sweep_mutex for calls to scm_i_thread_put_to_sleep.
7552 (scm_igc): Lock sweep mutex here instead of in callers; Calls to
7553 scm_i_thread_put_to_sleep/scm_i_thread_wake_up used to demarkate
7554 the single-thread section (which now only contains the mark
7555 phase).
7556 (scm_gc): Don't lock sweeo mutex here since scm_igc locks it;
7557 Removed SCM_DEFER/ALLOW_INTS. Simply call scm_igc directly.
7558
7559 * threads.c (gc_section_mutex): Removed.
7560
9ed24633
MD
75612002-12-19 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7562
0d48aca5
MD
7563 * threads.c (create_thread): Clear parent field in root state in
7564 order not to unnecessarily remember dead threads.
7565
9ed24633
MD
7566 * eval.c (call_subr2o_1, call_lsubr2_2): New functions.
7567 (scm_trampoline_1, scm_trampoline_2): Use them.
7568
29717c89
MD
75692002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7570
7571 Partial introduction of real plugin interface.
7572
7573 * Makefile.am (modinclude_HEADERS): Added threads-plugin.h.
7574 (EXTRA_DIST): Added threads-plugin.c.
7575
7576 * threads-plugin.h, threads-plugin.c: New files.
7577
7578 * threads.h: #include "libguile/threads-plugin.h".
7579
7580 * threads.c: #include "libguile/threads-plugin.c".
7581
7582 * pthread-threads.c: Temporarily remove debugging functions.
7583
7584 * threads.c, threads.h (scm_yield): Added back.
7585
e29e0b09
MD
75862002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7587
7588 * threads.c (really_launch): Detach before unlocking
7589 thread_admin_mutex in order not to risk being joined.
7590 (scm_i_thread_put_to_sleep, scm_i_thread_wake_up): Keep
7591 thread_admin_mutex locked during GC.
7592
7593 * pthread-threads.c, pthread-threads.h: Improvements to debugging
7594 functions.
7595
0b6843b1 75962002-12-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
93cd4dcd 7597
6da2dfc4
MD
7598 * pthread-threads.c, pthread-threads.h (SCM_DEBUG_THREADS): Added
7599 support for debugging mutex operations.
7600
1b92fb6b
MD
7601 * threads.c (scm_thread): Removed filed joining_threads.
7602 (thread_print): Print thread number as well as address of thread
7603 structure.
0b6843b1
MD
7604 (scm_join_thread): Bugfix.
7605 (scm_lock_mutex, scm_try_mutex, scm_unlock_mutex,
7606 scm_timed_wait_condition_variable, scm_signal_condition_variable,
7607 scm_broadcast_condition_variable): Use the low-level API.
7608 (scm_all_threads): Return copy of thread list (to prevent
7609 unintended destruction).
7610 (scm_threads_prehistory): Initialize heap_mutex of fake thread.
1b92fb6b 7611
93cd4dcd
MD
7612 * pthread-threads.c, pthread-threads.h, threads.c: Fixes to
7613 pthread "native" recursive mutex support.
7614
2ff4f181
MD
76152002-12-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7616
28d52ebb
MD
7617 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): New definitions.
7618 Simply lock a thread C API recursive mutex.
7619 (SCM_NONREC_CRITICAL_SECTION_START,
7620 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
7621 SCM_REC_CRITICAL_SECTION_END): Removed.
7622
7623 * eval.c: Replaced SOURCE_SECTION_START / SOURCE_SECTION_END with
7624 direct calls to scm_rec_mutex_lock / unlock around the three calls
7625 to scm_m_expand_body.
7626
7627 * eval.c, eval.h (promise_free): New function.
7628 (scm_force): Rewritten; Now thread-safe; Removed
7629 SCM_DEFER/ALLOW_INTS.
7630
7631 * pthread-threads.h: Added partially implemented plugin interface
7632 for recursive mutexes. These are, for now, only intended to be
7633 used internally within the Guile implementation.
7634
7635 * pthread-threads.c: New file.
7636
7637 * threads.c: Conditionally #include "pthread-threads.c".
7638
7639 * eval.c, eval.h (scm_makprom, scm_force): Rewritten to be
7640 thread-safe;
7641
7642 * snarf.h (SCM_MUTEX, SCM_GLOBAL_MUTEX, SCM_REC_MUTEX,
7643 SCM_GLOBAL_REC_MUTEX): New macros.
7644
7645 * eval.c, threads.c, threads.h, snarf.h: Rewrote critical section
7646 macros---use mutexes instead.
7647
7648 * tags.h (SCM_IM_FUTURE): New tag.
7649
7650 * eval.c (scm_m_future): New primitive macro.
7651 (SCM_CEVAL): Support futures.
7652 (unmemocopy): Support unmemoization of futures.
7653
7654 * print.c (scm_isymnames): Name of future isym.
7655
2ff4f181
MD
7656 * version.c: Unmade some changes to my private copy that got
7657 committed by mistake.
7658
392d2833
MD
76592002-12-11 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7660
e200ddee
MD
7661 * gc-malloc.c, gc.h, init.c: Reverted gc-malloc change of
7662 2002-12-10.
7663
392d2833
MD
7664 * gc.c (scm_igc): Don't call scm_i_thread_invalidate_freelists.
7665
7666 * gc.c (scm_gc_sweep): Call it here instead, which is a more
7667 logical place.
7668
7669 * threads.c (create_thread): Remember root object until the handle
7670 of the new thread is on all_threads list.
7671
7672 * root.c (scm_make_root): Moved copying of fluids until after
7673 creation of root handle so that the fluids are GC protected. Also
7674 removed the critical section.
7675
c4c52ebe
MD
76762002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7677
960c408c
MD
7678 * gc-malloc.c, gc.h (scm_gc_malloc_prehistory): New function.
7679
3cdde9d6 7680 * gc-malloc.c (malloc_mutex): New mutex.
960c408c 7681 (scm_gc_malloc_prehistory): Initialize it.
3cdde9d6
MD
7682 (scm_realloc): Serialize call to realloc
7683 (scm_calloc): Same for calloc.
7684 Thanks to Wolfgang Jaehrling!
7685 (Now we have to make sure all calls to malloc/realloc are made
7686 through scm_malloc.)
7687
960c408c
MD
7688 * init.c (scm_init_guile_1): Call scm_gc_malloc_prehistory.
7689
c4c52ebe
MD
7690 * threads.c (really_launch): Release heap (to prevent deadlock).
7691 (create_thread): Release heap before locking thread admin mutex.
7692
b0dc3d71
MD
76932002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7694
7695 * threads.c (scm_i_thread_invalidate_freelists): New
7696 function.
7697
7698 * gc.c (scm_igc): Call scm_i_thread_invalidate_freelists.
7699
7700 * modules.c (scm_export): Inserted a return statement.
7701
06e80f59
HWN
77022002-12-10 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7703
7704 * modules.c (scm_export): new function
7705
7706 * gc-card.c: add a note about malloc()/free() overhead.
7707
a12611c3
MD
77082002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7709
7710 * Makefile.am (c-tokenize.$(OBJEXT)): Don't look for c-tokenize.c
7711 in srcdir.
7712
c7fabadf
MD
77132002-12-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7714
7715 These changes remove scm_ints_disabled (which hasn't has any
7716 effect in Guile for quite some time).
7717
7718 * async.c, error.h (scm_ints_disabled): Removed.
7719
7720 * gc.c (scm_gc_for_newcell), init.c (scm_init_guile_1),
7721 root.c (scm_internal_cwdr), gdbint.c (SCM_BEGIN_FOREIGN_BLOCK,
7722 SCM_END_FOREIGN_BLOCK): Don't touch scm_ints_disabled.
7723 (old_ints): Removed.
7724
7725 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Define as a recursive
7726 critical section.
7727 (SCM_REDEFER_INTS, SCM_ALLOW_INTS): Define as SCM_DEFER_INTS and
7728 SCM_ALLOW_INTS.
7729
9bc4701c
MD
77302002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7731
52340b65
MD
7732 * threads.c (scm_mutex_lock, scm_cond_wait, scm_cond_timedwait):
7733 Removed accidental #if 0 around these functions.
7734
9bc4701c
MD
7735 These changes are the start of support for preemptive
7736 multithreading. Marius and I have agreed that I commit this code
7737 into the repository although it isn't thoroughly tested and surely
7738 introduces many bugs. The bugs should only be exposed when using
7739 threads, though. Signalling and error handling for threads is
7740 very likely broken. Work on making the implementation cleaner and
7741 more efficient is needed.
7742
7743 * __scm.h (SCM_ALLOW_INTS_ONLY): Removed.
7744 (SCM_NONREC_CRITICAL_SECTION_START,
7745 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
7746 SCM_REC_CRITICAL_SECTION_END): New macros.
7747 (SCM_CRITICAL_SECTION_START/END): Defined here.
7748
7749 * eval.c: Insert SOURCE_SECTION_START / SOURCE_SECTION_END around
7750 the three calls to scm_m_expand_body.
7751
7752 * gc.h: #include "libguile/pthread-threads.h";
7753 (SCM_FREELIST_CREATE, SCM_FREELIST_LOC): New macros.
7754
7755 * gc.c (scm_i_freelist, scm_i_freelist2): Defined to be of type
7756 scm_t_key;
7757
7758 * gc.c, gc-freelist.c, inline.h: Use SCM_FREELIST_LOC for freelist
7759 access.
7760
7761 * gc-freelist.c (scm_gc_init_freelist): Create freelist keys.
7762
7763 * gc-freelist.c, threads.c (really_launch): Use
7764 SCM_FREELIST_CREATE.
7765
7766 * gc-malloc.c (scm_realloc, scm_gc_register_collectable_memory):
7767
7768 * gc.c (scm_i_expensive_validation_check, scm_gc,
7769 scm_gc_for_newcell): Put threads to sleep before doing GC-related
7770 heap administration so that those pieces of code are executed
7771 single-threaded. We might consider rewriting these code sections
7772 in terms of a "call_gc_code_singly_threaded" construct instead of
7773 calling the pair of scm_i_thread_put_to_sleep () and
7774 scm_i_thread_wake_up (). Also, we would want to have as many of
7775 these sections eleminated.
7776
7777 * init.c (scm_init_guile_1): Call scm_threads_prehistory.
7778
7779 * inline.h: #include "libguile/threads.h"
7780
7781 * pthread-threads.h: Macros now conform more closely to the
7782 pthreads interface. Some of them now take a second argument.
7783
7784 * threads.c, threads.h: Many changes.
7785
77862002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7787
7788 * Makefile.am (version.h): Changed $^ --> $< in rule for
7789 version.h.
7790
b2cbe8d8
RB
77912002-12-08 Rob Browning <rlb@defaultvalue.org>
7792
7793 * version.h.in (SCM_MICRO_VERSION): use @--@ substitution now.
7794 (SCM_MINOR_VERSION): use @--@ substitution now.
7795 (SCM_MICRO_VERSION): use @--@ substitution now.
7796 (scm_effective_version): new function prototype.
7797
7798 * version.c (scm_effective_version): new function, also add
7799 effective-version.
7800
7801 * Makefile.am (schemelibdir): VERSION -> GUILE_EFFECTIVE_VERSION.
7802 (libpath.h): use GUILE_EFFECTIVE_VERSION to compute
7803 SCM_LIBRARY_DIR.
7804 (version.h): generate this here rather than configure.in. This
7805 approach tracks source edits better (i.e. more immediately).
7806 Might be worth considering for other .in files too.
7807
5441c65c
MV
78082002-12-02 Marius Vollmer <mvo@zagadka.ping.de>
7809
7810 Reorganized thread package selection. A thread package now only
7811 implements a small set of pthread like functions and Guile
7812 implements the rest on top of that. Guile's implementation is
7813 what the "coop-pthreads" package has been previously. Support for
7814 "coop" threads has been removed until I get time to add it again.
7815
7816 * Makefile.am (libguile_la_SOURCES): Removed iselect.c.
7817 (noinst_HEADERS): Removed coop-threads.c, coop-threads.h, coop.c,
7818 null-threads.c, coop-pthreads.c.
7819 (modinclude_HEADERS): Removed coop-defs.h, coop-pthreads.h. Added
7820 pthread-threads.h.
7821
7822 * validate.h (SCM_VALIDATE_THREAD): Moved to threads.h.
7823
7824 * threads.h: Do not include "libguile/coop-defs.h". Include
7825 "libguile/pthread-threads.h" for USE_COPT_THREADS. Removed
7826 (previously deprecated) C level thread API prototypes. They are
7827 now in the thread package specific headers, "null-threads.h" and
7828 "pthread-threads.h".
7829 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
7830 New.
7831 (scm_threads_init): Removed.
7832 (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END,
7833 SCM_THREAD_SWITCHING_CODE, scm_i_switch_counter,
7834 SCM_I_THREAD_SWITCH_COUNT): Define here.
7835 (scm_single_thread_p): Removed.
7836 (scm_call_with_new_thread): Take two args directly instead of list
7837 of two args.
7838 (scm_i_thread_data, scm_i_set_thread_data, SCM_THREAD_LOCAL_DATA,
7839 SCM_SET_THREAD_LOCAL_DATA): Define here.
7840
7841 * threads.c: Merged with "coop-pthreads.c".
7842
7843 * null-threads.h: Implement pthread-like API as a set of macros.
7844
7845 * pthread-threads.h: New, implement pthread-like API by deferring
7846 to pthread itself.
7847
7848 * init.c (scm_init_guile_1): Do not call scm_init_iselect, which
7849 has been lost in the reorganization.
7850
504d99c5
MD
78512002-12-01 Mikael Djurfeldt <mdj@linnaeus>
7852
7853 The following change makes it possible to move procedure
7854 application dispatch outside inner loops. The motivation was
7855 clean implementation of efficient replacements of R5RS primitives
7856 in SRFI-1.
7857
7858 The semantics is clear: scm_trampoline_N returns an optimized
7859 version of scm_call_N (or NULL if the procedure isn't applicable
7860 on N args).
7861
7862 Applying the optimization to map and for-each increases efficiency
7863 noticeably. For example, (map abs ls) is 8 times faster than
7864 before.
7865
7866 * eval.h (scm_t_trampoline_1, scm_t_trampoline_2): New types.
7867
7868 * eval.c, eval.h (scm_trampoline_1, scm_trampoline_2): New functions.
7869
7870 * eval.c (call_subr2_2, call_lsubr_2, call_closure_2): New functions;
7871 (map, for-each): Handle also application on two args as a special
7872 case; Use trampolines.
7873
7874 Other changes:
7875
7876 * sort.c (scm_cmp_function): Choose subr2less for scm_tc7_subr_2o;
7877 (subr2oless): Removed.
7878 (scm_restricted_vector_sort_x): Use scm_return_first to keep the
7879 vector GC protected.
7880
7881 * eval.c (check_map_args): Use scm_out_of_range_pos instead of
7882 scm_out_of_range.
7883
63dd3413
DH
78842002-11-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
7885
7886 * evalext.[ch] (scm_m_undefine, undefine): Deprecated.
7887
4ba5f279
MD
78882002-11-17 Mikael Djurfeldt <mdj@linnaeus>
7889
7890 * debug.c (scm_make_iloc): Added missing "return".
7891
56ae231f
MV
78922002-11-17 Marius Vollmer <mvo@zagadka.ping.de>
7893
7894 * strports.c (scm_eval_string_in_module): Validate second arg to
7895 be a module. Thanks to Arno Peters!
7896
80b28865
DH
78972002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7898
7899 * .cvsignore: remove goops.c
7900
c88b1456
DH
79012002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7902
7903 * modules.c (scm_env_top_level, scm_lookup_closure_module,
7904 module_variable, scm_module_lookup_closure,
7905 scm_module_transformer, scm_sym2var, scm_module_reverse_lookup,
7906 scm_system_module_env_p): Don't compare SCM values with C
7907 operators == or !=. Avoid SCM_IMP predicates. Prefer !SCM_FALSEP
7908 over SCM_NFALSEP.
7909
a8a19efc
DH
79102002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7911
7912 * eval.h (SCM_MAKE_ILOC): New macro.
7913
7914 * debug.c (scm_make_iloc): Use SCM_MAKE_ILOC instead of computing
7915 the iloc bitpattern here.
7916
76734914
MD
79172002-11-14 Mikael Djurfeldt <mdj@linnaeus>
7918
7919 * coop-pthreads.c, coop-pthreads.h: scm_internal_select should be
7920 part of the API, otherwise it's difficult to write Guile
7921 extensions using non-blocking I/O => moved #include
7922 "libguile/iselect.h" from coop-pthreads.c --> coop-pthreads.h.
7923
7924 * coop-pthreads.c (scm_unlock_mutex): Changed s_lock_mutex -->
7925 s_unlock_mutex.
7926
8b5b4a75
MV
79272002-11-10 Marius Vollmer <mvo@zagadka.ping.de>
7928
7929 * __scm.h (USE_THREADS, GUILE_ISELECT): Do not define here. They
7930 are defined in configure.in.
7931
7932 * threads.c: Removed SCM_API from function definitions. SCM_API
7933 is only for declarations.
7934
e5a83084
MD
79352002-11-07 Mikael Djurfeldt <mdj@linnaeus>
7936
9be8bb45
MD
7937 * coop-pthreads.h: Added support for thread specific data to the
7938 generic C API for the coop-pthreads case.
7939
e5a83084
MD
7940 * threads.c, threads.h (scm_cond_init): Undo unintentional API
7941 change.
6c214b62 7942 (scm_cond_broadcast): Added missing function.
e5a83084 7943
7edf178e
MV
79442002-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7945
7946 * coop.c (coop_next_runnable_thread): Removed, wich should have
7947 happened when GUILE_ISELECT was hard-wired.
7948
7f5b1b77
MV
79492002-11-03 Marius Vollmer <mvo@zagadka.ping.de>
7950
7caa1b07
MV
7951 * Makefile.am (libguile_la_SOURCES): Added threads.c
7952 (DOT_DOC_FILES): Added threads.doc.
7953 (DOT_X_FILES): Added threads.x.
7954 (EXTRA_libguile_la_SOURCES): Removed threads.c.
7955 (noinst_HEADERS): Added coop-pthreads.c.
7956 (modinclude_HEADERS): Added coop-pthreads.h.
7957
7958 * __scm.h (USE_THREADS, GUILE_ISELECT): Define when
7959 SCM_DEBUG_DEPRECATED. Removed their use thru-out Guile.
7960
bb11cbf4
MV
7961 * iselect.c: Include "_scm.h" before testing HAVE_UNISTD_H.
7962 Thanks to Bill Schottstaedt!
7963
1d4cbbed
MV
7964 * numbers.c (scm_integer_expt): Make 0^z == 0 for z != 0.
7965
7f5b1b77
MV
7966 * _scm.h (HAVE_RESTARTABLE_SYSCALLS): Do define even when
7967 SCM_COPT_THREADS is defined.
7968 (SCM_SYSCALL): Use EINTR-expection version when SCM_COPT_THREADS
7969 is defined.
7970
7971 * coop-pthreads.c: Some harmless renamings of internal stuff.
7972 (create_thread): New, generalized version of
7973 scm_call_with_new_thread.
7974 (scm_call_with_new_thread): Use it.
7975 (scm_spawn_thread): New, use create_thread.
7976
d52f53b1
MV
79772002-11-02 Marius Vollmer <mvo@zagadka.ping.de>
7978
7979 * coop-pthreads.c, coop-pthreads.h: Redone completely, you might
7980 start testing it now.
7981
7982 * _scm.h: Include <errno.h< so that SCM_SYSCALL is correctly
7983 defined when HAVE_RESTARTABLE_SYSCALLS is not defined.
7984 (HAVE_RESTARTABLE_SYSCALLS): Do not define when USE_COPT_THREADS
7985 is defined.
7986
30f920c3
MV
79872002-10-27 Marius Vollmer <mvo@zagadka.ping.de>
7988
7989 * scmsigs.c (signal_cell_handlers, install_handler_data,
7990 scm_delq_spine_x, really_install_handler, install_handler): New
7991 scheme for triggering signal handlers, to simplify take_signal.
7992 (take_signal): Simplified, to avoid race conditions.
7993 (scm_sigaction_for_thread): Use new Scheme. Validate that thread
7994 hasn't exited yet.
7995
7996 * async.c (scm_async_click): Reset pending_asyncs, handle
7997 signal_asyncs. Don't set cdr of a non-signal async to #f.
7998 (scm_i_queue_async_cell): Do not check cdr of cell for #f, queue
7999 always. Set pending_asyncs.
8000 (scm_system_async_mark_for_thread): Check that thread has not
8001 exited.
8002 (scm_unmask_signals, decrease_block): Call scm_async_click after
8003 block_asyncs becomes zero.
8004
8005 * __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of
8006 active_asyncs.
8007
8008 * root.h (scm_root_state): Added pending_asyncs and signal_asyncs
8009 fields.
8010 * root.c (root_mark): Mark them.
8011 (make_root): Initialize them.
8012
8013 * iselect.c, iselect.h: Replaced GUILE_ISELECT with
8014 USE_COOP_THREADS.
8015 (scm_internal_select): Define one version for USE_COOP_THREADS and
8016 one for USE_NULL_THREADS.
8017 (scm_init_iselect): Likewise.
8018
8019 * inline.h (scm_cell, scm_double_cell): Also allow
8020 USE_COPT_THREADS to not protect the slot initializers.
8021
8022 * init.c (scm_init_guile_1): Call scm_init_thread_procs. This is
8023 because threads need to be initialized before the stack, but
8024 gsubrs such as scm_timed_condition_variable_wait can only be
8025 created later.
8026
8027 * threads.h: Include "coop-pthreads.h" when requested.
8028 (scm_threads_make_mutex, scm_threads_lock_mutex,
8029 scm_threads_unlock_mutex, scm_threads_monitor): Removed, they were
8030 not implemented anyway.
8031 (scm_init_thread_procs, scm_try_mutex,
8032 scm_timed_condition_variable_wait,
8033 scm_broadcast_condition_variable, scm_c_thread_exited_p,
8034 scm_thread_exited_p): New prototypes.
8035 (struct timespec): Define if not already defined.
8036 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
8037 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
8038 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
8039 scm_cond_broadcast, scm_cond_destroy): Declarations moved here and
8040 deprecated.
8041
8042 * threads.c: Include <errno.h>. Include "coop-pthreads.c" when
8043 requested.
8044 (scm_thread_exited_p): New.
8045 (scm_try_mutex, scm_broadcast_condition_variable): Newly
8046 registered procedures.
8047 (scm_wait_condition_variable, scm_timed_wait_condition_variable):
8048 Use the latter as the procedure for "wait-condition-variable",
8049 thus offering a optional timeout parameter to Scheme.
8050 (scm_wait_condition_variable): Implement in terms of
8051 scm_timed_wait_condition_variable.
8052 (scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
8053 scm_mutex_unlock, scm_mutex_destroy, scm_cond_init,
8054 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
8055 scm_cond_broadcast, scm_cond_destroy): Implement in terms of
8056 scm_make_mutex, etc, and deprecate.
8057 (scm_init_threads): Do not create smobs, leave this to
8058 scm_threads_init. Do not include "threads.x" file.
8059 (scm_init_thread_procs): New, include "threads.x" here.
8060
8061 * null-threads.h (scm_null_mutex, scm_null_mutex_init,
8062 scm_null_mutex_lock, scm_null_mutex_unlock,
8063 scm_null_mutex_destroy, scm_null_condvar, scm_null_condvar_init,
8064 scm_null_condvar_wait, scm_null_condvar_signal,
8065 scm_null_condvar_destroy): Removed.
8066 (scm_mutex_init, scm_mutex_lock, scm_mutex_unlock, scm_cond_init,
8067 scm_cond_wait, scm_cond_signal, scm_cond_broadcast,
8068 scm_cond_destory): Do not define, they are now deprecated and
8069 handled by threads.{h,c}.
8070
8071 * null-threads.c (scm_null_mutex, scm_null_cond): Define here.
8072 (scm_threads_init): Create smobs here, using the appropriate
8073 sizes.
8074 (block): Removed, now unused.
8075 (scm_c_thread_exited_p): New.
8076 (scm_null_mutex_init, scm_null_mutex_lock, scm_null_mutex_unlock,
8077 scm_null_mutex_destroy, scm_null_condvar_init,
8078 scm_null_condvar_wait, scm_null_condvar_signal,
8079 scm_null_condvar_destroy): Removed and updated users to do their
8080 task directly.
8081 (scm_try_mutex, timeval_subtract,
8082 scm_timed_wait_condition_variable,
8083 scm_broadcast_condition_variable): New.
8084 (scm_wait_condition_variable): Removed.
8085
8086 * coop-defs.h (coop_m): Added 'level' field.
8087 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
8088 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
8089 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
8090 scm_cond_broadcast, scm_cond_destroy, struct timespec): Do not
8091 define.
8092 (coop_condition_variable_broadcast): New.
8093
8094 * coop-threads.c (scm_threads_init): Create smobs here, using the
8095 appropriate sizes.
8096 (scm_c_thread_exited_p, scm_try_mutex,
8097 scm_timed_wait_condition_variable,
8098 scm_broadcast_condition_variable): New.
8099 (scm_wait_condition_variable): Removed.
8100
8101 * coop.c (coop_new_mutex_init): Initialize level.
8102 (coop_mutex_trylock, coop_mutex_lock, coop_mutex_unlock): maintain
8103 level.
8104 (coop_condition_variable_signal): Renamed to
8105 coop_condition_variable_broadcast and reimplemented in terms of
8106 that. Thus...
8107 (coop_condition_variable_broadcast): New.
8108
8109 * goops.c (hell_mutex): Reimplemented using scm_make_mutex, etc.
8110
8111 * coop-pthreads.h, coop-pthreads.c: New, but unfinished.
8112
087ed40d
MV
81132002-10-21 Marius Vollmer <mvo@zagadka.ping.de>
8114
65a23095
MV
8115 * null-threads.c: Include <time.h>. Also, use <...> for inclusion
8116 of system headers.
8117
087ed40d
MV
8118 * async.c, goops.h, modules.h, validate.h (SCM_MAKE_VALIDATE_MSG):
8119 New. Use it instead of SCM_MAKE_VALIDATE in lots of places to
30f920c3 8120 give better error messages. Thanks to Bill Schottstaedt!
087ed40d 8121
5ec1d2c8
DH
81222002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
8123
8124 * evalext.h, evalext.c (scm_definedp, scm_defined_p): Renamed
8125 scm_definedp to scm_defined_p and deprecated scm_definedp.
8126
100ae50d
DH
81272002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
8128
8129 * async.h, async.c (scm_system_async): Fixed deprecation to work
8130 correctly when deprecated features are excluded.
8131
2794cb50
MV
81322002-10-16 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8133
8134 * async.c (scm_system_async_mark_for_thread): Validate thread
8135 argument.
8136
8137 * coop-threads.c (scm_i_thread_root): Do not validate argument.
8138
8139 * feature.c (scm_init_feature): Don't add 'threads' for
8140 USE_NULL_THREADS.
8141
8142 * inline.h (scm_cell, scm_double_cell): Also allow
8143 USE_NULL_THREADS to not protect the slot initializers.
8144
8145 * scmsigs.c (scm_sigaction_for_thread): It's "USE_THREADS" not
8146 "USE_THREAD".
8147
8148 * Makefile.am (noinst_HEADERS): Added null-threads.c.
8149 (modinclude_HEADERS): Added null-threads.h.
8150
8151 * threads.h: Include null-threads.h when !USE_COOP_THREADS.
8152 * threads.c: Include null-threads.c when !USE_COOP_THREADS.
8153 (scm_init_threads): Use generic type names scm_t_mutex and
8154 scm_t_cond instead of coop_m and coop_c.
8155
8156 * null-threads.c, null-threads.h: New files.
8157
ff810d7a
MV
81582002-10-15 Marius Vollmer <mvo@zagadka.ping.de>
8159
8160 * Makefile.am: Replaced "$<" in non-pattern rules with its value.
8161 This is to support makes that know about "$<" only in pattern
8162 rules, like Sun's make.
8163
a90bdb73
MV
81642002-10-13 Marius Vollmer <mvo@zagadka.ping.de>
8165
8166 * Makefile.am (libpath.h): Fixed typo in top_srcdir_absolute
8167 substitution. Thanks to David Allouche!
8168
e71a8bf2
DH
81692002-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
8170
8171 * evalext.h: Replaced SCM_DEBUG_DEPRECATED with
8172 !SCM_ENABLE_DEPRECATED.
8173
41f77ff5
MV
81742002-10-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8175
504d99c5 8176 * async.c (scm_system_async_mark_for_thread): Only call
41f77ff5
MV
8177 scm_i_thread_root when USE_THREADS is defined. Use scm_root
8178 otherwise.
8179
8180 * scmsigs.c (take_signal): Only call scm_i_thread_root when
8181 USE_THREADS is defined. Use scm_root otherwise.
8182 (scm_sigaction_for_thread): Ignore THREAD argument when
8183 USE_THREADS is not defined. Also, move THREAD argument defaulting
8184 out of HAVE_SIGACTION section, which was a bug.
8185
6d16b125
MV
81862002-10-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8187
8188 * scmsigs.c (scm_sigaction_for_thread): Store original handler in
8189 signal_handlers, not the closure that is used as the async.
8190 The closure is stored in signal_handler_cells, as previously.
8191
acfa1f52
MV
81922002-10-10 Marius Vollmer <mvo@zagadka.ping.de>
8193
8194 * root.h (scm_root_state): Added 'block_async' slot.
8195 (scm_active_asyncs): Removed abbrev.
8196 * root.c (scm_make_root): Initialize 'block_asyncs' slot.
8197
8198 * __scm.h (SCM_ASYNC_TICK): Do without the scm_active_asyncs
8199 abbrev.
8200
8201 * async.h (scm_call_with_blocked_asyncs,
8202 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
8203 scm_c_call_with_unblocked_asyncs): New prototypes.
8204 (scm_mask_signals, scm_unmask_signals): Deprecated.
8205 (scm_mask_ints): Turned into a macro.
8206 * async.c (scm_mask_ints): Removed.
8207 (scm_run_asyncs): Do not set scm_mask_ints while running an async.
8208 this should not be necessary.
8209 (scm_async_click): Test block_asyncs instead of scm_mask_ints.
8210 (scm_mask_signals, scm_unmask_signals): Deprecated. Emit
8211 deprecation warning and check for errornous use. Set block_asyncs
8212 instead of scm_mask_ints.
8213 (increase_block, decrease_block, scm_call_with_blocked_asyncs,
8214 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
8215 scm_c_call_with_unblocked_asyncs): New.
8216
8217 * script.c (scm_compile_shell_switches): Do not set scm_mask_ints.
8218 Asyncs are enabled by default.
8219
34010f56
NJ
82202002-10-09 Neil Jerram <neil@ossau.uklinux.net>
8221
8222 * vports.c (scm_make_soft_port): Allow vector argument to carry a
8223 6th element: an input waiting thunk.
8224 (sf_input_waiting): New.
8225
9310d6f2
MV
82262002-10-05 Marius Vollmer <mvo@zagadka.ping.de>
8227
8228 * root.c (root_mark): Mark active_asyncs slot.
8229
8230 * async.c (scm_async_click): Set the cdr of a executed handler
8231 cell to SCM_BOOL_F, not SCM_EOL.
8232 (scm_i_queue_async_cell): Queue the cell at the end of the list,
8233 and only if the handler procedure is not already present.
8234 (scm_system_async_mark_for_thread): Initialize cdr of handler cell
8235 with SCM_BOOL_F.
8236 * scmsigs.c (scm_sigaction_for_thread): Likewise.
8237
ac48c719
RB
82382002-10-04 Rob Browning <rlb@defaultvalue.org>
8239
1360a142
RB
8240 * guile.c (main): switch to scm_lt_dlset_preloaded_symbols;
8241
8242 * dynl.c (sysdep_dynl_link): switch to scm_lt_dlhandle,
8243 scm_lt_dlopenext, and scm_lt_dlerror.
8244 (sysdep_dynl_unlink): switch to scm_lt_dlhandle, scm_lt_dlclose,
8245 and scm_lt_dlerror.
8246 (sysdep_dynl_func): switch to scm_lt_dlhandle, scm_lt_dlsym,
8247 and scm_lt_dlerror.
8248 (sysdep_dynl_init): switch to scm_lt_dlinit();
8249
8250 * Makefile.am (libguile_la_LIBADD): switch to use
8251 libguile-ltdl.la.
8252
504d99c5 8253 * numbers.c (scm_integer_expt): (expt 0 1) should be 1.
ac48c719 8254
497092c9
MV
82552002-10-04 Marius Vollmer <mvo@zagadka.ping.de>
8256
8257 * scmsigs.h (scm_sigaction_for_thread): New prototype.
8258 * scmsigs.c (got_signal): Removed.
8259 (signal_handler_cells, signal_handler_threads): New.
8260 (take_signal): Queue the cell of the signal for the specified
8261 thread. Reset the signal handler on systems that don't have
8262 sigaction.
8263 (sys_deliver_signals): Removed.
8264 (close_1): New.
8265 (scm_sigaction_for_thread): Renamed from scm_sigaction and
8266 extended to also set the thread of a signal and allocate a cell
8267 for it. Keep the Scheme name "sigaction". Check that signum is
8268 within range. Also, use SCM_VECTOR_REF instead of SCM_VELTS.
8269 (scm_sigaction): Implement in terms of scm_sigaction_for_thread.
8270 (scm_init_scmsigs): Allocate signal_handler_cells and
8271 signal_handler_threads vectors.
8272
8273 * async.c: Removed GUILE_OLD_ASYNC_CLICK code. Reorganized so
8274 that system asnycs and user asyncs are separated. Reimplemented
8275 system asyncs to work per-thread.
8276
8277 * gc.c (scm_init_gc): Do not use scm_system_async.
8278
8279 * async.h (scm_asyncs_pending, scm_set_tick_rate,
8280 scm_set_switch_rate, scm_system_async_mark_from_signal_handler):
8281 Removed prototypes.
8282 (scm_i_queue_async_cell): New.
8283
8284 * __scm.h (scm_asyncs_pending_p): Removed.
8285 (SCM_ASYNC_CLICK): Check scm_active_asyncs instead of
8286 scm_asyncs_pending_p.
8287
8288 * async.h (scm_system_async_mark_for_thread): New prototype.
8289
8290 * __scm.h: Removed GUILE_OLD_ASYNC_CLICK code.
8291
8292 * root.h (scm_root_state): Added new "active_asyncs" slot.
8293 * root.c (scm_make_root): Initialize it to SCM_EOL.
8294
8295 * coop-defs.h (coop_t): Added new "handle" slot.
8296 * coop-threads.c (all_threads, scm_current_thread,
8297 scm_all_threads, scm_i_thread_root): New.
8298 (scm_threads_init): Add main thread to all_threads.
8299 (scheme_launch_thread): Remove thread from all_threads when it
8300 terminates.
8301 (scm_call_with_new_thread): Initialize handle slot of coop_t
8302 structure and add new thread to all_threads.
8303 (scm_spawn_thread): Likewise.
8304
8305 * threads.h (scm_current_thread, scm_all_threads): New prototypes.
8306 * threads.c (scm_current_thread, scm_all_threads): Register as
8307 primitives.
8308
8309 * dynl.c: Use scm_lt_ prefix for libltdl functions.
8310
480fa28d
NJ
83112002-09-29 Neil Jerram <neil@ossau.uklinux.net>
8312
8313 * script.c (scm_compile_shell_switches): Fix bad spelling of
8314 `explicitly' in comment.
8315
83162002-09-28 Neil Jerram <neil@ossau.uklinux.net>
8317
8318 * posix.c (scm_geteuid, scm_getegid, scm_seteuid, scm_setegid):
8319 Refer to provided? in doc string rather than deprecated feature?.
8320
3553e1d1
GH
83212002-09-24 Gary Houston <ghouston@arglist.com>
8322
8323 * inline.h (scm_double_cell): prevent reordering of statements
8324 with any following code (for GCC 3 strict-aliasing).
8325 * numbers.c (scm_make_real), num2float.i.c (FLOAT2NUM): removed
8326 the earlier version of the reordering prevention.
8327
4ad0814a
HWN
83282002-09-19 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8329
8330 * inline.h (scm_double_cell): move SET_GCMARK set out of if body.
8331
e88e4f2e
HWN
83322002-09-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8333
8334 * gc-malloc.c (scm_gc_register_collectable_memory): more overflow
8335 protection.
8336
1e71eafb
HWN
83372002-09-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8338
8339 * inline.h: include stdio.h
8340
8341 * smob.c (free_print): abort if scm_debug_cell_accesses_p is set
8342
61ef9c1f
HWN
83432002-09-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8344
dac04e9f
HWN
8345 * gc-segment.c (scm_i_make_initial_segment): check user settings
8346 for sanity.
8347
8348 * gc-malloc.c (scm_gc_init_malloc): check user settings for
8349 sanity.
dac04e9f
HWN
8350
8351 * gc-freelist.c (scm_init_freelist): check user settings for sanity.
8352
ffd72400
HWN
8353 * struct.h: change scm_structs_to_free to scm_i_structs_to_free
8354
8355 * gc-malloc.c (scm_gc_register_collectable_memory): use floats;
1e71eafb
HWN
8356 these won't ever wrap around with high memory usage. Thanks to
8357 Sven Hartrumpf for finding this.
ffd72400 8358
5bd4a949
HWN
8359 * gc-freelist.c: include <stdio.h>
8360
61ef9c1f
HWN
8361 * gc-malloc.c: add DEBUGINFO for mtrigger GCs.
8362
ffd0ef3b
MV
83632002-09-01 Marius Vollmer <mvo@zagadka.ping.de>
8364
a27e3d14
MV
8365 * vectors.h (SCM_VECTOR_REF): New.
8366
ffd0ef3b
MV
8367 * snarf.h (SCM_DEFINE_PUBLIC): New.
8368
f8a1712b
MV
83692002-08-30 Marius Vollmer <mvo@zagadka.ping.de>
8370
8371 * socket.c (scm_addr_vector): Added size of address to arguments.
8372 Use it to avoid accessing a non-existent path in a sockaddr_un.
8373 Changed all callers.
8374
7200a36b
HWN
83752002-08-29 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8376
1383773b
HWN
8377 * gc.h: remove DOUBLECELL card flags.
8378
8379 * gc-malloc.c (scm_calloc): try to use calloc() before calling
8380 scm_realloc().
8381
8382 * gc-segment.c (scm_i_initialize_heap_segment_data): remove card
8383 init loop; handle this from scm_init_card_freelist()
8384
8385 * gc-card.c (scm_init_card_freelist): init bit vector here.
8386
7200a36b 8387 * numbers.c (scm_make_real): prevent reordering of statements
8fa5786d 8388 num2float.i.c (FLOAT2NUM): idem
7200a36b 8389
9981de3a
HWN
83902002-08-27 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8391
8392 * eval.h: prepend libguile/ to include path
8393
19647556
MV
83942002-08-26 Marius Vollmer <mvo@zagadka.ping.de>
8395
8396 * script.c (scm_compile_shell_switches): Added "2002" to Copyright
9a5fa6e9 8397 years. Thanks to Martin Grabmüller!
19647556 8398
38d1262a
HWN
83992002-08-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8400
8401 * gc-segment.c (scm_i_get_new_heap_segment): use float in stead of
8402 unsigned numbers for computing minimum heap increment. This
8403 prevents weird results when a a negative minimum increment is
8404 computed.
8405
f800ebfb
MV
84062002-08-24 Marius Vollmer <mvo@zagadka.ping.de>
8407
8408 * gc_os_dep.c: When we have __libc_stack_end, use that directly
19647556 8409 instead of the old tricks.
f800ebfb
MV
8410
8411 * guile-snarf.in: Do not expect the input file to be the first
8412 argument after the optional "-o" option, just pass everything to
8413 the pre-processor without extracting the input file name.
8414
4a5309c9
HWN
84152002-08-23 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8416
8417 * gc-segment.c (scm_i_get_new_heap_segment): Oops. We want segment
8418 length *at* least SCM_MIN_HEAP_SEG_SIZE, not at most.
8419
f2893a25
HWN
84202002-08-22 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8421
8422 * gc.h, gc.c: make scm_cells_allocated unsigned again. Thanks to
8423 Bill Schottstaedt for the bug report
8424
483f518b
MV
84252002-08-20 Marius Vollmer <mvo@zagadka.ping.de>
8426
8427 * print.c (scm_iprin1): Print primitives generics always as
8428 "primitive-generic" even when they have no primitive methods yet.
8429
917adc55
GH
84302002-08-17 Gary Houston <ghouston@arglist.com>
8431
8432 * coop.c (coop_create): removed bogus 2nd argument in scm_malloc
8433 call.
8434
67329a9e
HWN
84352002-08-17 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8436
85835e59 8437 * ports.c (scm_add_to_port_table): small bugfix.
67329a9e
HWN
8438
8439 * mallocs.c (scm_malloc_obj): use scm_gc_malloc in stead of
8440 malloc.
8441
8442 * gc-segment.c (scm_i_get_new_heap_segment): remove cluster cruft:
8443 only use SCM_MIN_HEAP_SEG_SIZE.
8444
8445 * ports.c (scm_add_to_port_table): add backwards compatibility
8446 function
8447
8448 * ports.h: use scm_i_ prefix for port table and port table size.
8449
f07c886a
MD
84502002-08-15 Mikael Djurfeldt <mdj@linnaeus>
8451
8452 * vports.c (scm_make_soft_port): Initialize pt variable.
8453
dc61cbc6
MV
84542002-08-13 Marius Vollmer <mvo@zagadka.ping.de>
8455
8456 * strports.h (scm_c_eval_string_in_module,
8457 scm_eval_string_in_module): New prototypes.
8458 * strports.c (scm_eval_string_in_module): New, but use
8459 "eval-string" as the Scheme name and make second parameter
8460 optional.
8461 (scm_eval_string): Implement using scm_eval_string_in_module.
8462 (scm_c_eval_string_in_module): New.
8463 Thanks to Ralf Mattes for the suggestion!
8464
da220f27
HWN
84652002-08-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8466
be3ff021
HWN
8467 * gc-card.c ("sweep_card"): remove SCM_MISC_ERROR messages: print
8468 message and abort.
8469
8470 * gc-mark.c ("scm_gc_mark_dependencies"): idem.
8471
da220f27
HWN
8472 * ports.c ("scm_new_port_table_entry"): return a boxed SCM in
8473 stead of scm_t_port*. The function now takes a tag argument.
8474
eab1b259
HWN
84752002-08-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8476
8477 * gc.h: add scm_debug_cells_gc_interval to public interface
8478
8479 * gc-card.c ("sweep_card"): set scm_gc_running while sweeping.
8480
8481 * gc.c (scm_i_expensive_validation_check): separate expensive
8482 validation checks from cheap ones.
8483
ba1b2226
HWN
84842002-08-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8485
8486 * read.c (scm_input_error): new function: give meaningful error
8487 messages, and throw read-error
8488
8489 * gc-malloc.c (scm_calloc): add scm_calloc.
8490
39e8f371
HWN
84912002-08-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8492
33138b05
HWN
8493 * tags.h: remove GC bits documentation from the tags table.
8494
39e8f371
HWN
8495 * read.c (INPUT_ERROR): Prepare for file:line:column error
8496 messages for errors in scm_lreadr() and friends.
8497
84982002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8499
8500 * gc-malloc.c (scm_malloc): use scm_realloc() (simplifies
8501 implementation).
8502 (scm_gc_calloc): new function
8503
26e68795 85042002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
402788a9 8505
5f16b897
HWN
8506 * ports.c (scm_new_port_table_entry): init port entry to 0
8507 completely.
402788a9
HWN
8508
8509 * ports.c (scm_new_port_table_entry): change function from
8510 scm_add_to_port_table. This prevents cells with null-pointers from
8511 being exposed to GC.
8512
504d99c5 8513 * vports.c (scm_make_soft_port) strports.c (scm_mkstrport),
402788a9 8514 fports.c (scm_fdes_to_port): Use scm_new_port_table_entry().
c8a1bdc4 8515
504d99c5 8516 * gc.c (scm_gc_stats): add cell-yield and malloc-yield statistic
c2cbcc57
HWN
8517 to gc-stats.
8518
c8a1bdc4
HWN
8519 * numbers.c (big2str): return "0" for 0 iso. ""
8520
c2cbcc57
HWN
8521 * gc-segment.c, gc-malloc.c gc-mark.c, gc-freelist.c, gc-card.c,
8522 private-gc.h: new file
c8a1bdc4
HWN
8523
8524 * gc.c: completely revised and cleaned up the GC. It now uses lazy
8525 sweeping. More documentation in workbook/newgc.text
8526
aea06b34
MV
85272002-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8528
8529 * random.c (rstate_free): Return zero.
8530
35060ae9
DH
85312002-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8532
8533 * environments.c (remove_key_from_alist): Removed.
8534
8535 (obarray_remove): Simplified.
8536
6a535440
SJ
85372002-07-24 Stefan Jahn <stefan@lkcc.org>
8538
8539 * continuations.h: ia64: Include <signal.h> before
8540 <sys/ucontext.h>.
8541
bcbd25b7
DH
85422002-07-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
8543
8544 * modules.c (scm_sym2var): Don't compare SCM values with ==.
8545
26e68795 85462002-07-21 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1d1559ce
HWN
8547
8548 * goops.c (scm_compute_applicable_methods): use
8549 scm_remember_upto_here_1 iso scm_remember_upto_here
8550
8551 * macros.c: include deprecation.h
8552
504d99c5 8553 * vectors.c (scm_vector_move_right_x): remove side effect in
1d1559ce 8554 macro arg.
504d99c5 8555 (scm_vector_move_left_x): idem.
1d1559ce
HWN
8556
8557 * net_db.c, posix.c, socket.c: variable naming: change ans to
8558 result.
8559
8560 * sort.c (scm_merge_vector_x): accept vector as argument
8561 iso. SCM*. This is needed for full GC correctness.
8562
8563 * gc.h: undo previous undocumented changes related to #ifdef
8564 GENGC.
8565
26e68795 85662002-07-20 Han-Wen Nienhuys <hanwen@cs.uu.nl>
34d19ef6
HWN
8567
8568 * *.c: add space after commas everywhere.
8569
8570 * *.c: use SCM_VECTOR_SET everywhere, where a vector is written.
8571 Document cases where SCM_WRITABLE_VELTS() is used.
8572
8573 * vectors.h (SCM_VELTS): prepare for write barrier, and let
8574 SCM_VELTS() return a const pointer
8575 (SCM_VECTOR_SET): add macro.
8576
3063e30a
DH
85772002-07-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
8578
8579 * eval.c (SCM_CEVAL), macros.c (macro_print, scm_makmacro,
8580 scm_sym_macro, scm_macro_type), macros.h (scm_makmacro):
8581 Deprecated the special kind of built-in dynamic syntax transformer
8582 that was inaccurately named "macro". Note: The built-in syntax
8583 transformers that are named "mmacro" or "memoizing-macro" still
8584 exist, and it is these which come much closer to what one would
8585 call a macro.
8586
4c5f8e8f
NJ
85872002-07-13 Neil Jerram <neil@ossau.uklinux.net>
8588
8589 * eval.c (unmemocopy): Fix for
8590 1001-local-eval-error-backtrace-segfaults (unmemoization crash
8591 with internal definitions and local-eval).
8592
4f6f9ae3
GH
85932002-07-12 Gary Houston <ghouston@arglist.com>
8594
8595 * dynl.c: Don't define stub procedures if DYNAMIC_LINKING is not
8596 defined. They don't do anything useful, especially since the
8597 only case where DYNAMIC_LINKING is undefined seems to be
8598 when --with-modules=no is given to configure, which is basically
8599 requesting that the "dynamic linking module" be omitted.
8600
8601 * Makefile.am (libguile_la_SOURCES): move dynl.c from
8602 libguile_la_SOURCES to EXTRA_libguile_la_SOURCES.
8603
8604 * extensions.c (load_extension): check DYNAMIC_LINKING for
8605 scm_dynamic_call.
8606 * init.c (scm_init_guile_1): check DYNAMIC_LINKING for
8607 scm_init_dynamic_linking.
8608
c21935e6
MV
86092002-07-10 Marius Vollmer <mvo@zagadka.ping.de>
8610
8611 * guile.c, iselect.h, net_db.c, posix.c, socket.c: No need to
8612 check for Cygwin when including <winsock2.h>, this is already
8613 check for by configure. Thus, revert change from 2002-07-07.
8614
ee95d597
GH
86152002-07-10 Gary Houston <ghouston@arglist.com>
8616
9540b68f 8617 * eq.c: include <string.h>
ee95d597
GH
8618 * dynl.c: docstring editing.
8619
46732b54
GH
86202002-07-09 Gary Houston <ghouston@arglist.com>
8621
8622 * dynl.c (scm_dynamic_call): docstring editing.
8623
c09d12e0
RB
86242002-07-08 Rob Browning <rlb@defaultvalue.org>
8625
8626 * gc_os_dep.c: HURD fixes.
8627
3f6571eb
MV
86282002-07-07 Marius Vollmer <mvo@zagadka.ping.de>
8629
8630 Crosscompiling and Cygwin fixes by Jan Nieuwenhuizen. Thanks!
8631
8632 * Makefile.am: Override default rule for c-tokenize.$(OBJECT);
8633 this should be compiled for BUILD host.
8634 Override default rule for
8635 guile_filter_doc_snarfage$(EEXECT); this should run on BUILD host.
8636 Add missing $(EXEEXT) to guile_filter_doc_snarfage invocation.
8637 (snarf2checkedtexi): Use GUILE_FOR_BUILD instead of preinstguile.
8638
8639 * guile.c, iselect.h, net_db.c, posix.c, socket.c: Do not include
8640 <winsock2.h> on Cygwin even when we have it.
8641
bd987b8e
DH
86422002-07-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
8643
8644 * __scm.h (SCM_CAUTIOUS), eval.c (scm_eval_args, deval_args,
8645 SCM_CEVAL): Removed compile time option SCM_CAUTIOUS to clean up
8646 the code. Full number of arguments checking of closures is
8647 mandatory now. However, the option to disable the checking has
8648 most probably not been used anyway.
8649
8505e285
DH
86502002-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
8651
bd987b8e
DH
8652 * __scm.h (SCM_RECKLESS), backtrace.c (SCM_ASSERT), debug.c
8653 (scm_debug_options), eval.c (scm_lookupcar, scm_lookupcar1,
8654 scm_badargsp, SCM_CEVAL, SCM_APPLY, scm_map, scm_for_each),
8655 feature.c (scm_init_feature), gsubr.c (scm_gsubr_apply), numbers.c
8656 (scm_logand, scm_logior, scm_logxor, scm_i_dbl2big), srcprop.c
8657 (scm_source_properties, scm_set_source_properties_x,
8658 scm_source_property): Removed compile time option SCM_RECKLESS to
8659 clean up the code. Full number of arguments checking of closures
8660 is mandatory now. However, the option to disable the checking has
8661 most probably not been used anyway.
8505e285
DH
8662
8663 * srcprop.c (scm_source_properties, scm_set_source_properties_x,
8664 scm_source_property): Use !SCM_CONSP instead of SCM_NCONSP.
8665
2ee08a28
GH
86662002-06-30 Gary Houston <ghouston@arglist.com>
8667
732b9327
GH
8668 * dynl.c: Removed all SCM_DEFER_INTS/SCM_ALLOW_INTS, which won't
8669 do anything useful. Added a comment about need for a mutex if
8670 pre-emptive threading is supported.
8671
2ee08a28
GH
8672 * posix.c (scm_convert_exec_args), dynl.c
8673 (scm_make_argv_from_stringlist): static procs: 1) renamed both to
8674 allocate_string_pointers. 2) simplified: don't reallocate the
8675 strings, just make an array of pointers 3) avoid memory leaks on
8676 error 4) let the procedure report errors in its own name.
8677 Consequences: 1) the procedures now assume that SCM strings are
8678 nul-terminated, which should always be the case. 2) Since strings
8679 are not reallocated, it's now possible for strings passed to
8680 dynamic-args-call to be mutated.
8681
c136c920
DH
86822002-06-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
8683
8684 * __scm.h, eval.c, eval.h: Removed compile time option
8685 MEMOIZE_LOCALS to clean up the code. Now, caching of local
8686 variable positions during memoization is mandatory. However, the
8687 option to disable the caching has most probably not been used
8688 anyway.
8689
e540802f
MV
86902002-06-18 Marius Vollmer <mvo@zagadka.ping.de>
8691
8692 * print.c (scm_simple_format): Print missing part of format before
8693 ~% control. Thanks to Daniel Skarda!
8694
4c1ffcdd
MV
86952002-06-01 Marius Vollmer <mvo@zagadka.ping.de>
8696
8697 * mkstemp.c: Added exception notice to license statement.
8698
ba1b077b
MV
86992002-05-22 Marius Vollmer <mvo@zagadka.ping.de>
8700
8dc434c7
MV
8701 * numbers.c (mem2ureal): When returning an inexact zero, make sure
8702 it is represented as a floating point value so that we can change
8703 its sign.
8704
ba1b077b
MV
8705 From John W. Eaton <jwe@bevo.che.wisc.edu>
8706
8707 * numbers.c (idbl2str): Don't omit sign when printing negative zero.
8708
74c58131
TTN
87092002-05-14 Thien-Thi Nguyen <ttn@giblet.glug.org>
8710
8711 * gc_os_dep.c: For I386/OPENBSD, allow for `__i386__'
0926d46e 8712 in addition to `i386'. Thanks to Dale P. Smith.
74c58131 8713
8766d4b5
MV
87142002-05-08 Marius Vollmer <mvo@zagadka.ping.de>
8715
8716 * eq.c (real_eqv): New.
8717 (scm_eqv_p): Use it when comparing reals and complexes.
8718
8719 * numbers.c: Include <string.h>, for strncmp.
8720 (mem2complex): Do not create negative NaNs.
8721 (scm_leq_p, scm_geq_p): Explicitely return #f when comparing a
8722 NaN.
8723 (scm_inexact_to_exact): Signal error when converting a NaN.
74c58131 8724
1d8c3cad
MV
87252002-05-06 Marius Vollmer <mvo@zagadka.ping.de>
8726
8727 * posix.c (scm_putenv): Handle removing variables explicitely by
8728 calling unsetenv.
8729
8730 From John W. Eaton.
74c58131 8731
1d8c3cad
MV
8732 * numbers.h: Conditionally include floatingpoint.h, ieeefp.h, and
8733 nan.h. Provide declarations for scm_inf_p, scm_nan_p, scn_inf,
8734 and scm_nan.
8735 * numbers.c: [SCO && ! HAVE_ISNAN] (isnan): New function.
8736 [SCO && ! HAVE_ISINF] (isinf): New function.
8737 (xisinf, xisnan): New functions.
8738 (IS_INF): Delete.
8739 (isfinite): Define in terms of xisinf.
8740 (scm_inf_p, scm_nan_p): New functions.
8741 (guile_Inf, guile_NaN): New file-scope vars.
8742 (guile_ieee_init): New function.
8743 (scm_inf, scm_nan): New functions.
8744 (idbl2str): Handle Inf and NaN. Remove funny label and
8745 corresponding gotos.
8746 (ALLOW_DIVIDE_BY_ZERO): New macro.
8747 (scm_divide): Allow division by zero to occur if
8748 ALLOW_DIVIDE_BY_ZERO is defined.
8749 Handle bignums and ints as special cases.
8750
8751 Additional stuff by me:
8752
8753 numbers.c (mem2ureal): Recognize "inf.0" and "nan.xxx".
8754 (scm_even_p, scm_odd_p): Treat infinity as even and odd.
8755 (iflo2str): Don't output a '+' for negative numbers or for Inf and
8756 NaN. They will provide their own sign.
8757 (scm_divide): Only allow divides by inexact zeros. Dividing by
8758 exact zeros still signals an errors.
74c58131 8759
7a0c65eb
TTN
87602002-04-22 Thien-Thi Nguyen <ttn@giblet.glug.org>
8761
87b72063 8762 * goops.h (scm_slot_exists_p): Rename from scm_slots_exists_p.
7a0c65eb 8763 * goops.c (scm_slot_exists_p): Rename from scm_slots_exists_p.
504d99c5 8764 (scm_slot_exists_p): Rename from scm_slots_exists_p.
7a0c65eb
TTN
8765 Thanks to Andreas Rottmann.
8766
5e423a39
GH
87672002-04-20 Gary Houston <ghouston@arglist.com>
8768
8769 * removal of unused fields in root state (thanks to Christopher
8770 Cramer for pointing out the disuse.)
8771 * root.h (scm_root_state): removed def_inp, def_outp, def_errp.
1841c44a 8772 (scm_def_inp, scm_def_outp, scm_def_errp): removed.
b6287a25 8773
5e423a39
GH
8774 * root.c (root_mark): don't mark them.
8775 (scm_make_root): don't set them to #f.
8776 * init.c (scm_init_standard_ports): don't initialise with the
8777 default ports.
8778
9d2cce76
MV
87792002-04-17 Marius Vollmer <mvo@zagadka.ping.de>
8780
8781 * Makefile.am (EXTRA_DIST): Added cpp_err_symbols.c and
8782 cpp_sig_symbols.c.
8783
87842002-04-16 Marius Vollmer <mvo@zagadka.ping.de>
8785
8786 * guile-snarf.in: Do not clean input file. This would write to
8787 the $(srcdir) during a VPATH build, which is not allowed. It also
8788 isn't needed since it only works when an output filename has been
8789 specified and in that case we don't need to clean the input file
8790 because the output file will already exist.
8791
6f79b6cc
MV
87922002-03-31 Marius Vollmer <mvo@zagadka.ping.de>
8793
8794 * guile-snarf: Install the trap for removing $cleanfile only when
8795 the value of $cleanfile is actually known.
8796
21550b10
RB
87972002-04-10 Rob Browning <rlb@defaultvalue.org>
8798
8799 * .cvsignore: add versiondat.h and *.c.clean.c.
8800
bc76d628
DH
88012002-03-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
8802
8803 * srcprop.[ch] (scm_c_source_property_breakpoint_p): New
8804 function, replaces macro SRCBRKP.
8805
8806 (SRCBRKP): Deprecated.
8807
8808 * eval.c (SCM_CEVAL): Replaced use of SRCBRKP by call to
8809 scm_c_source_property_breakpoint_p. Removed some use of arg1 as
8810 temporary variable.
8811
5132eef0
DH
88122002-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
8813
8814 * debug.h, eval.c: Deprecated CHECK_ENTRY, CHECK_APPLY and
8815 CHECK_EXIT and removed all references to them.
8816
680516ba
DH
88172002-03-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8818
8819 * debug.h (scm_ready_p, debug_print): Removed declarations.
8820
8821 * eval.c (EVALCELLCAR): Removed.
8822
8823 (SCM_CEVAL): Eliminated label loopnoap. Removed side-effecting
8824 operation from condition.
8825
e2bd68e0
MV
88262002-03-24 Marius Vollmer <mvo@zagadka.ping.de>
8827
8828 * guile-snarf.in: When the output filename is "-", write to
8829 stdout. When no "-o" option is given, use "-" as the output
8830 filename (i.e., stdout). Only 'clean' the inputfile or remove the
8831 output file on error when the output file name is not "-". Define
8832 the preprocessor macro SCM_MAGIC_SNARFER while snarfing.
8833
8834 * Makefile.am (.c.x): Pass "-o $@" to guile-snarf.
8835
ab1f1094
DH
88362002-03-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
8837
8838 * eval.c (SCM_CEVAL, SCM_APPLY): Eliminated labels wrongnumargs
8839 and the corresponding goto statements. Removed redundant code.
8840
42030fb2
DH
88412002-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
8842
8843 * eval.c (SCM_CEVAL): Minimized scope of variable arg2.
8844 Eliminated redundant SCM_IMP check. Exlined call to EVALCAR.
8845 Re-enabled handing of rpsubrs and asubrs.
8846
e050d4f8
DH
88472002-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
8848
8849 * eval.c (SIDEVAL): Removed.
8850
8851 (SCM_CEVAL): Minimized scope of variable orig_sym. Eliminated
8852 goto-labels cdrxnoap, cdrxbegin and nontoplevel_cdrxnoap. Changed
8853 argument checking order for set! to locals, variables and symbols.
8854 Improvements to control structure. Removed some uses of arg1 and
8855 arg2 as temporary variables.
8856
a6d344d3
TTN
88572002-03-15 Thien-Thi Nguyen <ttn@giblet.glug.org>
8858
8859 * guile-snarf.in: Remove "--compat=1.4" support.
8860 Add "-d" and "-D" support.
8861
8862 (deprecated_list): New var.
8863 (compat_mode_clean_xxx): Delete.
8864 (grep_deprecated): New func.
8865 ("main"): If "-d" or "-D", call `grep_deprecated'.
8866
3939e9df
NJ
88672002-03-15 Neil Jerram <neil@ossau.uklinux.net>
8868
387d418c
NJ
8869 * hooks.h: Change scm_t_c_hookype_t everywhere to
8870 scm_t_c_hook_type.
8871
bb2c02f2 8872 Docstring fixes:
a6d344d3 8873
bb2c02f2
NJ
8874 * strings.c (scm_string_p): Change unnecessary `iff' to `if'.
8875
8876 * ports.c (scm_sys_make_void_port): Use `@file'.
8877
8878 * numbers.c (scm_number_p, scm_real_p): Use `otherwise' rather
8879 than `else'.
8880
8881 * macros.c (scm_makmacro): Don't say that the form replaces its
8882 source, because it doesn't.
8883 (scm_makmmacro): Clarify difference between this and scm_makmacro.
8884
8885 * backtrace.c (scm_display_error), filesys.c (scm_umask,
8886 scm_select, scm_basename), goops.c (scm_method_generic_function),
8887 numbers.c (scm_integer_length), posix.c (scm_getgroups, scm_execl,
8888 scm_setlocale, scm_flock), socket.c (scm_shutdown): Correct
8889 spelling mistakes.
8890
3939e9df
NJ
8891 * debug.c (scm_debug_options), eval.c
8892 (scm_eval_options_interface), read.c (scm_read_options): Change
8893 incorrect @var in docstring to @code.
8894
3b3cc781
MV
88952002-03-14 Marius Vollmer <mvo@zagadka.ping.de>
8896
500b0d5b
MV
8897 * unif.c (singp): Use SCM_REALP instead of SCM_SLOPPY_REALP.
8898
3b3cc781
MV
8899 * snarf.h (SCM_SNARF_INIT): Add "^:^" after code so that
8900 guile-snarf can remove trailing non-init code.
8901
8902 * guile-snarf.in (modern_snarf): Remove everything following and
8903 including "^:^" from the output.
8904
dff98306
DH
89052002-03-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
8906
8907 * eval.c (SCM_CEVAL), srcprop.h (SRCBRKP): Eliminated union 't'.
8908
8909 * eval.c (SCM_CEVAL): Exlined call to EVALCAR.
8910
2287fb53
TTN
89112002-03-13 Thien-Thi Nguyen <ttn@giblet.glug.org>
8912
8913 * guile-snarf.in: Update copyright.
8914 Rewrite to internalize error handling.
8915 Add "--compat=1.4" handling.
8916 Add commentary.
8917
8918 * Makefile.am (libpath.h): Use @top_srcdir_absolute@.
8919 (snarfcppopts): New var.
8920 (.c.x): Use $(snarfcppopts). Rework guile-snarf usage.
8921 (.c.doc): Use $(snarfcppopts).
8922
822250a4
TTN
8923 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
8924 continuations.c, debug-malloc.c, debug.c, deprecation.c, dynl.c,
8925 dynwind.c, environments.c, eq.c, error.c, eval.c, evalext.c,
8926 extensions.c, feature.c, filesys.c, fluids.c, fports.c, gc.c,
8927 goops.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
8928 ioext.c, iselect.c, keywords.c, lang.c, list.c, load.c, macros.c,
8929 modules.c, net_db.c, numbers.c, objects.c, objprop.c, options.c,
8930 pairs.c, ports.c, posix.c, print.c, procprop.c, procs.c,
8931 properties.c, ramap.c, random.c, rdelim.c, read.c, regex-posix.c,
8932 root.c, rw.c, scmsigs.c, script.c, simpos.c, socket.c, sort.c,
8933 srcprop.c, stackchk.c, stacks.c, stime.c, strings.c, strop.c,
8934 strorder.c, strports.c, struct.c, symbols.c, threads.c, throw.c,
8935 unif.c, values.c, variable.c, vectors.c, version.c, vports.c,
8936 weaks.c: Retire inclusion guard macro SCM_MAGIC_SNARFER.
8937
b7798e10
DH
89382002-03-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
8939
8940 * eval.c (SCM_CEVAL): Got rid of the last reference to t.lloc.
8941 The next step will be to remove the union 't' and simplify the
8942 code of SCM_CEVAL that way.
8943
04a98cff
NJ
89442002-03-12 Neil Jerram <neil@ossau.uklinux.net>
8945
8946 * iselect.c (collisionp, gnfds, greadfds, gwritefds, gexceptfds,
8947 rreadfds, rwritefds, rexceptfds): Made static.
8948
8949 * gc.c (terminating), fports.c (terminating): Renamed
8950 scm_i_terminating.
8951
16d98032
MV
89522002-03-11 Marius Vollmer <mvo@zagadka.ping.de>
8953
5046250e
MV
8954 * numbers.c (scm_divide): Adapt code from libstdc++/f2c to void
8955 potential overflow problems. Thanks to John W Eaton!
8956
8794207d
MV
8957 * strop.c (string_capitalize_x): Treat characters as unsigned so
8958 that 8-bit chars work. Thanks to David Pirotte!
16d98032 8959
1d15ecd3
DH
89602002-03-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
8961
8962 * eval.c (SCM_CEVAL): Cleaned up the handling of 'slot-ref',
8963 'slot-set!' and 'nil-cond'. Removed some uses of t.arg1, arg2 and
8964 proc as temporary variables. Introduced temporary variables with
8965 hopefully descriptive names for clarification. Replaced SCM_N?IMP
8966 by a more explicit predicate in some places.
8967
89682002-03-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
f12745b6
DH
8969
8970 * eval.c (SCM_CEVAL): Cleaned up the handling of #@dispatch.
8971 Added lots of comments regarding the implementation of #@dispatch.
8972 Changed intra-procedure communication to use t.arg1 instead of
8973 arg2. Removed some uses of t.arg1, t.lloc and proc as temporary
8974 variables. Introduced temporary variables with hopefully
8975 descriptive names for clarification. Replaced SCM_N?IMP by a more
8976 explicit predicate in some places. Use SCM_INSTANCE_HASH instead
8977 of computing the expression explicitly. Eliminate now unused
8978 label nontoplevel_cdrxbegin.
8979
8980 * goops.h (SCM_INSTANCE_HASH): New macro.
8981
8982 * objects.h (SCM_CMETHOD_FORMALS, SCM_CMETHOD_BODY): New macros.
8983
1ebf1566
TTN
89842002-03-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
8985
8986 * Makefile.am (bin_SCRIPTS): Revive this decl, w/ initial element
8987 "guile-snarf" moved back from `noinst_SCRIPTS'.
8988
020c890c
NJ
89892002-03-08 Neil Jerram <neil@ossau.uklinux.net>
8990
58d233cc
NJ
8991 * srcprop.c (scm_set_source_property_x): If SRCPROPS obj already
8992 exists when adding a source property other than those that are
8993 handled explicitly, add the new property to the SRCPROPS obj's
8994 plist.
8995
020c890c
NJ
8996 * debug.h (SCM_MAX_FRAME_SIZE): Remove incorrect comment about use
8997 of SCM_MAX_FRAME_SIZE as a bit mask; it isn't used like this.
8998
8999 * eval.c (SCM_CEVAL): Don't store scm_debug_eframe_size in
9000 debug.status. It isn't needed, and it can overflow the bits
9001 reserved for it (which may lead to a segv or a GC abort).
9002
3f04400d
DH
90032002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9004
9005 * eval.c (SCM_CEVAL): Cleaned up the handling of 'apply'. Removed
9006 side-effecting operations from conditions and macro calls.
9007 Replaced SCM_N?IMP by a more explicit predicate in some places.
9008 Minimized the scope of some variables.
9009
97820583
SJ
90102002-03-02 Stefan Jahn <stefan@lkcc.org>
9011
9012 * convert.i.c: Fixed int <-> long conversions which would have
9013 failed if their sizes were different.
9014
38ace99e
DH
90152002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9016
9017 * eval.c (SCM_CEVAL): Cleaned up the handling of 'if', 'let',
9018 'letrec' and 'set*': Removed some uses of t.arg1, t.lloc and proc
9019 as temporary variables. Removed side-effecting operations from
9020 conditions and macro calls. Introduced temporary variables with
9021 hopefully descriptive names for clarification. Replaced SCM_N?IMP
9022 by a more explicit predicate in some places. Removed code that
9023 was conditionally compiled if SICP was defined - which it never
9024 is.
9025
e5cb71a0
DH
90262002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9027
9028 * eval.c (SCM_CEVAL): Cleaned up the handling of 'cons' and 'do':
9029 Removed some uses of t.arg1 and proc as temporary variables.
9030 Removed side-effecting operations from conditions and macro calls.
9031 Introduced temporary variables with hopefully descriptive names
9032 for clarification. Replaced SCM_N?IMP by a more explicit
9033 predicate in some places.
9034
6a0f6ff3
DH
90352002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9036
9037 * eval.c (scm_badargsp, SCM_CEVAL): Replaced SCM_N?IMP by a more
9038 explicit predicate in some places.
9039
9040 (CHECK_EQVISH): Removed.
9041
9042 (SCM_CEVAL): Removed some uses of t.arg1 and proc as temporary
9043 variables. Removed side-effecting operations from conditions and
9044 macro calls. Introduced temporary variables for clarification.
9045 Sorted if-else-if check for the type of the last form in a list by
9046 frequency. Avoided some unnecessary tail-recursion calls.
9047
228a24ef
DH
90482002-03-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
9049
9050 * gc.c (SCM_HEAP_SEG_SIZE, CELL_UP, CELL_DN, NEXT_DATA_CELL,
9051 init_heap_seg, alloc_some_heap), gc.h (struct scm_cell, struct
9052 scm_t_cell, SCM_CELLPTR, SCM_GC_CARD_SIZE,
9053 SCM_GC_IN_CARD_HEADERP), tags.h (SCM_CELLP): Renamed the struct
9054 scm_cell and all its uses to scm_t_cell in accordance to Guile's
9055 naming scheme for types.
9056
9057 * alist.c (scm_acons), convert.i.c (CTYPES2UVECT,
9058 CTYPES2UVECT_OPTIONAL), coop-threads.c (scm_call_with_new_thread,
9059 scm_spawn_thread), debug.c (scm_make_debugobj), environments.c
9060 (scm_make_environment), eval.c (scm_closure), fports.c
9061 (scm_fdes_to_port), gc.c (scm_deprecated_newcell,
9062 scm_deprecated_newcell2), inline.h (scm_alloc_cell, scm_cell),
9063 list.c (SCM_I_CONS), numbers.c (scm_i_mkbig), pairs.c (scm_cons),
9064 ports.c (scm_void_port), procs.c (scm_c_make_subr, scm_makcclo),
9065 smob.c (scm_make_smob), smob.h (SCM_NEWSMOB), strings.c
9066 (scm_take_str, scm_allocate_string), strports.c (scm_mkstrport),
9067 unif.c (scm_make_uve), variable.c (make_variable), vectors.c
9068 (scm_c_make_vector), vports.c (scm_make_soft_port): Renamed
9069 scm_alloc_cell to scm_cell.
9070
9071 * environments.c (core_environments_observe), gc.c
9072 (scm_deprecated_newcell2), goops.c (wrap_init, scm_wrap_object),
9073 inline.h (scm_alloc_double_cell, scm_double_cell), num2float.i.c
9074 (FLOAT2NUM), numbers.c (scm_make_real), procs.c
9075 (scm_make_procedure_with_setter), smob.h (SCM_NEWSMOB2,
9076 SCM_NEWSMOB3), struct.c (scm_make_struct, scm_make_vtable_vtable),
9077 symbols.c (scm_mem2symbol, scm_mem2uninterned_symbol), weaks.c
9078 (allocate_weak_vector): Renamed scm_alloc_double_cell to
9079 scm_double_cell.
9080
edb810bb
SJ
90812002-02-27 Stefan Jahn <stefan@lkcc.org>
9082
9083 * convert.i.c, convert.c: Better range checking.
9084
9085 * inet_aton.c, fports.c: Commented the inclusion of <winsock2.h>.
9086
1ebf1566 9087 * deprecation.c (vsnprintf): Define to `_vsnprintf' for
edb810bb
SJ
9088 Windows (MinGW).
9089
327d4dd3
TTN
90902002-02-26 Thien-Thi Nguyen <ttn@giblet.glug.org>
9091
9092 * Makefile.am: Update path to pre-inst-guile automake frag.
9093
89d7a92c 90942002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
646052c0
DH
9095
9096 * gc.c (scm_gc_sweep): Make it compile even when deprecated
9097 features are excluded.
9098
89d7a92c 90992002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
bac0e232
DH
9100
9101 * num2integral.i.c (NUM2INTEGRAL): Fixed signedness problem.
9102
4f2716b6
GH
91032002-02-25 Gary Houston <ghouston@arglist.com>
9104
9105 * convert.c: include <string.h> for convert_i.c.
9106
46151112
RB
91072002-02-24 Rob Browning <rlb@defaultvalue.org>
9108
9109 * .cvsignore: add stamp-h1.
9110
cd328b4f
NJ
91112002-02-21 Neil Jerram <neil@ossau.uklinux.net>
9112
9113 * unif.c (scm_array_to_list): Correct name, which had been
9114 accidentally changed to scm_t_arrayo_list!
9115
c709de7f
MD
91162002-02-20 Mikael Djurfeldt <mdj@linnaeus>
9117
9118 * gc.c (scm_gc_sweep): Print an error message when aborting due to
9119 underflowing scm_mallocated.
9120
c1965d31
MV
91212002-02-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9122
9123 * gc.h, gc.c (scm_must_malloc, scm_must_realloc, scm_must_strdup,
9124 scm_must_strndup, scm_done_malloc, scm_done_free, scm_must_free):
9125 Reimplemented using the new scm_gc_malloc, etc., functions and
9126 deprecated.
9127
b606945b
TTN
91282002-02-11 Thien-Thi Nguyen <ttn@giblet.glug.org>
9129
9130 * Makefile.am (bin_PROGRAMS): Move `guile_filter_doc_snarfage'
9131 to `noinst_PROGRAMS'.
9132 (bin_SCRIPTS): Move all values to `noinst_SCRIPTS'; delete.
9133 (noinst_PROGRAMS, noinst_SCRIPTS): New.
9134
7c686ba8
MV
91352002-02-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9136
9137 * gc.h, gc.c (scm_gc_sweep): Issue deprecation warning when
9138 non-zero is returned from a port or smob free function.
9139 (scm_malloc, scm_realloc, scm_strndup, scm_strdup,
9140 scm_gc_register_collectable_memory,
9141 scm_gc_unregister_collectable_memory, scm_gc_malloc,
9142 scm_gc_realloc, scm_gc_free, scm_gc_strndup, scm_gc_strdup): New.
9143
9144 * backtrace.c, continuations.c, convert.i.c, coop-threads.c,
9145 debug-malloc.c, dynl.c, environments.c, environments.h,
9146 extensions.c, filesys.c, fports.c, gc.c, gc.h, gh_data.c, goops.c,
9147 guardians.c, hooks.c, init.c, keywords.c, load.c, numbers.c,
9148 ports.c, posix.c, procs.c, rdelim.c, regex-posix.c, root.c,
9149 smob.c, stime.c, strings.c, struct.c, struct.h, symbols.c, unif.c,
9150 vectors.c, weaks.c: Use scm_gc_malloc/scm_malloc and
9151 scm_gc_free/free instead of scm_must_malloc and scm_must_free, as
9152 appropriate. Return zero from smob and port free functions.
9153
9154 * debug-malloc.c (scm_malloc_reregister): Handle "old == NULL".
9155
9156 * deprecation.h, deprecation.c: Reimplemented to allow deprecation
9157 messages while the GC is running.
9158 (scm_c_issue_deprecation_warning_fmt): New.
9159
9160 * fports.c (scm_setvbuf): Reset read buffer to saved values when
9161 it is pointing to the putback buffer.
9162
66adc0a6
TTN
91632002-02-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
9164
9165 * gsubr.c (create_gsubr): On "too many args" error,
9166 also display arg count and name. Thanks to Bill Schottstaedt.
9167
0187b4f4
TTN
91682002-02-05 Thien-Thi Nguyen <ttn@giblet.glug.org>
9169
9170 * Makefile.am: Include $(top_srcdir)/pre-inst-guile.am.
9171
9172 (bin_SCRIPTS): Remove guile-snarf-docs-texi.
9173 (alldotdocfiles, snarf2checkedtexi, dotdoc2texi): New vars.
9174 (guile.texi, guile-procedures.texi): Use $(dotdoc2texi).
9175
9176 * guile-snarf-docs-texi.in: Bye bye.
9177
402e687c
MV
91782002-02-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9179
9180 * symbols.c (scm_make_symbol): Fix typo in docstring.
9181
9182 * symbols.h (scm_mem2uninterned_symbol, scm_symbol_interned_p,
9183 scm_make_symbol): New prototypes.
9184
319b98ed
MV
91852002-02-03 Marius Vollmer <mvo@zagadka.ping.de>
9186
9187 * symbols.h (SCM_SET_SYMBOL_HASH): Removed.
9188 (SCM_SYMBOL_INTERNED_P): New.
9189 * symbols.c (scm_symbol_hash): Use scm_ulong2num instead of
9190 SCM_MAKINUM since hash values can well be bignums.
9191 (scm_mem2symbol): Only use hash values below SCM_T_BITS_MAX/2.
9192 This signals a interned symbol.
9193 (scm_mem2uninterned_symbol, scm_symbol_interned_p,
9194 scm_make_symbol): New.
0187b4f4 9195
319b98ed
MV
9196 * print.c (scm_iprin1): Print uninterned symbols unreadably.
9197
34472dfe
TTN
91982002-02-02 Thien-Thi Nguyen <ttn@giblet.glug.org>
9199
9200 * __scm.h (HAVE_UINTPTR_T): Only define if UINTPTR_T attributes
9201 are defined: UINTPTR_MAX, INTPTR_MAX, INTPTR_MIN.
0187b4f4 9202 Thanks to Dave Love.
34472dfe 9203
1b39c2e3
MV
92042002-01-31 Marius Vollmer <mvo@zagadka.ping.de>
9205
9206 * symbols.c (scm_gensym): Use " g" as default prefix, not "g".
319b98ed 9207 This might help to make unintended clashes less likely.
1b39c2e3
MV
9208 (scm_string_to_symbol): Protect the string until the symbols is
9209 created.
9210
1fa86ca5
SJ
92112002-01-31 Stefan Jahn <stefan@lkcc.org>
9212
9213 * convert.c, convert.h, convert.i.c: New files containing C
34472dfe 9214 array to Scheme conversion helpers meant to be replacement
1fa86ca5
SJ
9215 functions for the deprecated gh interface.
9216
9217 * Makefile.am: Setup rules for new `convert.*' files.
9218
af68e5e5
SJ
92192002-01-28 Stefan Jahn <stefan@lkcc.org>
9220
9221 * symbols.c (scm_c_symbol2str): New function, replacement for
9222 `gh_scm2newsymbol()'.
9223
34472dfe 9224 * strings.c (scm_c_substring2str): New function. Proper
af68e5e5
SJ
9225 replacement for `gh_get_substr()'.
9226
9227 * socket.c: Include `stdint.h' if available for the `uint32_t'
9228 declaration.
9229
504d99c5 9230 * scmsigs.c (scm_sigaction): Initialize `chandler' (inhibits
af68e5e5
SJ
9231 compiler warning).
9232
9233 * backtrace.c: Include `lang.h' for GUILE_DEBUG conditional.
9234
c96d76b8 92352002-01-22 Neil Jerram <neil@ossau.uklinux.net>
34472dfe 9236
c96d76b8 9237 Other changes unrelated to Elisp...
34472dfe 9238
c96d76b8
NJ
9239 * eval.c (scm_m_if): Use s_if rather than repeating string literal
9240 "if".
9241 (comments): Fix a few typos.
9242 (scm_for_each): Add parentheses around oddly unparenthesized
9243 if/while conditions.
9244
9245 * read.c (scm_read_opts): Add full stop at end of doc for
9246 `keywords' option.
9247
9248 * script.c (scm_compile_shell_switches): Use scm_str2symbol
9249 instead of gh_symbol2scm.
9250
9251 * srcprop.h (SRCPROPBRK): Return C type rather than SCM.
9252 (SRCBRKP): Use SRCPROPBRK rather than duplicating its logic.
9253
9254 * srcprop.c (scm_srcprops_to_plist, scm_source_property): Change
9255 SRCPROPBRK (x) to SCM_BOOL (SRCPROPBRK (x)).
9256
9257 First batch of changes for Elisp support...
9258
9259 * alist.c, async.c, boolean.c, dynl.c, eval.c, filesys.c,
9260 fluids.c, list.c, load.c, options.c, posix.c, print.c, sort.c,
9261 throw.c, vectors.c, weaks.c: Add #include for lang.h.
9262
9263 * eval.c, eval.h, init.c, lang.c, lang.h: Use SCM_ENABLE_ELISP to
9264 conditionalize compilation and initialization of Elisp support
9265 function.
34472dfe 9266
c96d76b8
NJ
9267 * alist.c (scm_assq, scm_assv, scm_assoc), async.c
9268 (scm_asyncs_pending, scm_run_asyncs, noop), backtrace.c
9269 (scm_set_print_params_x), dynl.c (scm_make_argv_from_stringlist),
9270 filesys.c (fill_select_type, retrieve_select_type), fluids.c
9271 (scm_swap_fluids, scm_swap_fluids_reverse), list.c (scm_null_p,
9272 scm_ilength, scm_append_x, scm_last_pair, scm_reverse,
9273 scm_reverse_x, scm_list_ref, scm_list_set_x, scm_list_cdr_set_x,
bbd26b5a
NJ
9274 scm_c_memq, scm_memv, scm_member), load.c (scm_search_path),
9275 options.c (change_option_setting, scm_options), posix.c
9276 (environ_list_to_c), print.c (scm_iprlist), throw.c
9277 (scm_exit_status), vectors.c (scm_vector), weaks.c
9278 (scm_weak_vector): Use SCM_NULL_OR_NIL_P instead of SCM_NULLP.
c96d76b8
NJ
9279
9280 * boolean.c (scm_not): Use `SCM_FALSEP || SCM_NILP' instead of
9281 just SCM_FALSEP.
34472dfe 9282
c96d76b8
NJ
9283 * boolean.c (scm_boolean_p): Use `SCM_BOOLP || SCM_NILP' instead
9284 of just SCM_BOOLP.
9285
9286 * eval.c (scm_lisp_nil, scm_lisp_t, s_nil_ify, scm_m_nil_ify,
9287 s_t_ify, scm_m_t_ify, s_0_cond, scm_m_0_cond, s_0_ify,
9288 scm_m_0_ify, s_1_ify, scm_m_1_ify): Removed.
9289 (scm_m_atfop): Support function aliasing. Support both function
9290 args, which need transformation, and macro args, which do not.
9291 Add explanatory comments.
9292 (SCM_CEVAL): In switch cases for SCM_IM_AND, SCM_IM_COND,
9293 SCM_IM_DO, SCM_IM_IF and SCM_IM_OR, add `|| SCM_NILP' to existing
9294 checks for SCM_FALSEP. In switch case for SCM_IM_NIL_COND, use
9295 SCM_NULLP || SCM_NILP instead of checks against (removed)
9296 scm_lisp_nil. Removed switch cases for SCM_IM_NIL_IFY,
9297 SCM_IM_T_IFY, SCM_IM_0_COND, SCM_IM_0_IFY, SCM_IM_1_IFY.
9298
9299 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
9300 scm_m_while, scm_nil_eq): Commented out; I don't think we need
9301 these, but I don't want to remove them yet, just in case.
9302 (scm_init_lang): Define `%nil' variable on Scheme level to hold
9303 Elisp nil value.
9304
9305 * lang.h (SCM_NILP): Test against Elisp nil value instead of
9306 against (removed) scm_lisp_nil.
9307 (SCM_NILNULLP, SCM_NIL2EOL, SCM_EOL2NIL): Commented out.
9308 (SCM_NULL_OR_NIL_P): New.
9309
9310 * list.c (scm_append): Use SCM_VALIDATE_NULL_OR_NIL instead of
9311 SCM_VALIDATE_NULL.
9312
9313 * print.c (scm_isymnames): Fix comment. Remove #@nil-ify,
9314 #@t-ify, #@0-cond, #@0-ify, #@1-ify. Add #nil (for SCM_ELISP_NIL
9315 value).
9316
9317 * sort.c (scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
9318 scm_sort_x, scm_sort, scm_stable_sort_x, scm_stable_sort): Use
9319 SCM_NULL_OR_NIL_P instead of SCM_NULLP. In constructions like `if
9320 (SCM_NULLP (x)) return SCM_EOL;', return x rather than SCM_EOL.
9321
9322 * tags.h (SCM_IM_NIL_IFY, SCM_IM_T_IFY, SCM_IM_0_COND,
9323 SCM_IM_0_IFY, SCM_IM_1_IFY): Removed.
9324 (SCM_IM_BIND, SCM_IM_DELAY, SCM_IM_CALL_WITH_VALUES, SCM_UNBOUND):
9325 Numbering shifted down accordingly.
9326 (SCM_ELISP_NIL): New IFLAG.
9327
9328 * validate.h (SCM_VALIDATE_NULL_OR_NIL): New.
34472dfe 9329
a392ee15
DH
93302002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9331
9332 * eval.c: Removed outdated references to "everr". Improved some
9333 comments.
9334
9335 (scm_deval_args, deval_args): Renamed scm_deval_args to
9336 deval_args, since it is not part of the interface.
9337
9338 (SCM_CEVAL): Added (maybe somewhat verbose) comment. Avoid to
9339 use references to debug.vect[0] before it exists. Add parentheses
9340 to switch statement.
9341
9342 * goops.h: Added local emacs variables.
9343
24933780
DH
93442002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9345
9346 * eval.[ch] (scm_deval_args): Made static.
9347
9348 * srcprop.c (scm_source_property): Remove redundant SCM_IMP
9349 test.
9350
9351 * strings.c (scm_c_string2str): Clarified comment. Replaced
9352 THINKME by FIXME for uniformness. Removed question about whether
9353 arguments need to be protected from garbage collection: Arguments
9354 must be protected as any other variable.
9355
f9450cdb
DH
93562002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9357
9358 * procs.h (SCM_CLOSURE_BODY): New Macro.
9359
9360 * debug.c (scm_procedure_name, scm_procedure_source), eval.c
9361 (SCM_CEVAL, SCM_APPLY), goops.c (scm_sys_initialize_object,
9362 get_slot_value, set_slot_value), procs.c
9363 (scm_procedure_documentation), sort.c (closureless), stacks.c
9364 (get_applybody): Replace SCM_CDR (SCM_CODE (...)) by
9365 SCM_CLOSURE_BODY.
9366
9367 * sort.c (closureless): Prefer !SCM_FOOP over SCM_NFOOP.
9368
5dc64f64
MV
93692001-12-26 Marius Vollmer <mvo@zagadka.ping.de>
9370
9371 * Makefile.am (guile-procedures.txt): When we don't have makeinfo,
9372 use "cp" instead.
9373
197ee3d3
MV
93742001-12-16 Marius Vollmer <mvo@zagadka.ping.de>
9375
9376 * stacks.c, stacks.h (scm_t_stackype): Renamed to scm_stack_type
9377 everywhere.
9378
9379 * continuations.c (scm_make_continuation): Do not retain the
9380 throw_value when the continuation is invoked.
9381
4d4528e7
SJ
93822001-12-08 Stefan Jahn <stefan@lkcc.org>
9383
9384 * strings.c (scm_c_string2str): New function. Converts a
34472dfe 9385 given Scheme string into a C string. Also put in two
4d4528e7
SJ
9386 THINKME's regarding the malloc policy for the missing converter
9387 routines.
9388
98347362
NJ
93892001-12-01 Neil Jerram <neil@ossau.uklinux.net>
9390
9391 * gh_data.c (gh_module_lookup): Use scm_str2symbol rather than
9392 gh_symbol2scm.
9393
1fc8902f
DH
93942001-11-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
9395
9396 * gc.h (SCM_GC_CELL_WORD, SCM_GC_CELL_OBJECT,
9397 SCM_GC_SET_CELL_WORD, SCM_GC_SET_CELL_OBJECT): New macros.
9398
9399 (SCM_GC_CELL_TYPE, SCM_CELL_WORD, SCM_CELL_OBJECT,
9400 SCM_SET_CELL_WORD, SCM_SET_CELL_OBJECT, SCM_FREE_CELL_CDR,
9401 SCM_GC_SET_CELL_OBJECT): Express in terms of SCM_GC_CELL_*
9402 macros.
9403
9404 (SCM_FREE_CELL_P): Express in terms of SCM_GC_CELL_TYPE.
9405
9406 * inline.h (scm_alloc_cell, scm_alloc_double_cell): Use
9407 SCM_GC_CELL_* macros when accessing free cells.
9408
4878beec
MV
94092001-11-25 Marius Vollmer <mvo@zagadka.ping.de>
9410
9411 * vectors.h (SCM_MAKE_VECTOR_TAG): New.
34472dfe 9412 * unif.h (SCM_MAKE_BITVECTOR_TAG, SCM_MAKE_UVECTOR_TAG): New.
4878beec
MV
9413 * symbols.h (SCM_MAKE_SYMBOL_TAG): New.
9414 * strings.h (SCM_MAKE_STRING_TAG): New.
9415 * procs.h (SCM_MAKE_CCLO_TAG): New.
9416 * numbers.h (SCM_MAKE_BIGNUM_TAG): New.
9417
9418 * goops.h: Replaced SCM_DEBUG_DEPRECATED with
9419 !SCM_ENABLE_DEPRECATED.
9420
9421 * async.c, async.h (scm_system_async_mark_from_signal_handler):
9422 New.
9423
9424 * scmsigs.c (scm_take_signal): Removed all code that assumes that
9425 signal handlers are allowed to divert the flow of control. Call
9426 scm_system_async_mark_from_signal_handler instead of
9427 scm_system_async_mark.
9428
9429
9430 Deprecated SCM_NEWCELL and SCM_NEWCELL2. Added scm_alloc_cell and
9431 scm_alloc_double_cell in their place.
34472dfe 9432
4878beec
MV
9433 * gc.h (SCM_GC_SET_ALLOCATED, scm_debug_newcell,
9434 scm_debug_newcell2, scm_tc16_allocated): Removed from header.
9435 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
9436 (SCM_NEWCELL, SCM_NEWCELL2): Implement in terms of
9437 scm_deprecated_newcell and scm_deprecated_newcell2.
9438
9439 gc.c (scm_tc16_allocated): Only define when including deprecated
9440 features.
9441 (scm_debug_newcell, scm_debug_newcell2): Removed.
9442 (scm_init_storage): Do not initialize scm_tc16_allocated.
9443 (scm_init_gc): Do it here.
9444 (allocated_mark): New, from old code.
9445 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
34472dfe 9446
4878beec 9447 * inline.c, inline.h: New files.
34472dfe 9448 * Makefile.am: Added them in all the right places.
4878beec 9449
34472dfe 9450 * _scm.h: Include "libguile/inline.h".
4878beec
MV
9451
9452 * alist.c, coop-threads.c, debug.c, environments.c, eval.c,
9453 fports.c, gh_data.c, goops.c, guardians.c, lang.c, list.c,
9454 num2float.i.c, numbers.c, pairs.c, ports.c, print.c, procs.c,
9455 smob.c, smob.h, strings.c, strports.c, struct.c, symbols.c,
9456 unif.c, variable.c, vectors.c, vports.c, weaks.c: Replaced
9457 SCM_NEWCELL and SCM_NEWCELL2 with scm_alloc_cell and
9458 scm_alloc_double_cell, respectively.
9459
d2bc7fae
MV
94602001-11-23 Marius Vollmer <mvo@zagadka.ping.de>
9461
9462 * modules.c (scm_c_use_module): Adapt to changes to
9463 `process-use-modules'.
9464
5eec27e9
DH
94652001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
9466
9467 * numbers.c (scm_divide): Fix more division by zero errors.
9468
8978878f
GH
94692001-11-21 Gary Houston <ghouston@arglist.com>
9470
9471 * Makefile.am (OMIT_DEPENDENCIES): removed, since it seems to be
9472 obsolete. autogen.sh says:
9473 invalid unused variable name: `OMIT_DEPENDENCIES'
9474
164826d3
DH
94752001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
9476
9477 * numbers.c (scm_divide): Fix (/ 0). Thanks to Keith Wright for
9478 reporting the bug.
9479
84aff7a7
MV
94802001-11-21 Marius Vollmer <mvo@zagadka.ping.de>
9481
9482 * Makefile.am (install-exec-hook): Prepend $(DESTDIR) to filename.
9483 Thanks to Eric Gillespie, Jr!
34472dfe 9484
6063dc1d
SJ
94852001-11-21 Stefan Jahn <stefan@lkcc.org>
9486
34472dfe
TTN
9487 * win32-socket.c (getservent, setservent, endservent,
9488 getprotoent, setprotoent, endprotoent): New functions.
6063dc1d
SJ
9489 Appropriate replacements for M$-Windows.
9490
9491 * numbers.c (SIZE_MAX, PTRDIFF_MAX, PTRDIFF_MIN): Reintroduced
9492 these definitions for GUILE_DEBUG.
9493
9494 * net_db.c: Include "win32-socket.h" if compiling with a native
34472dfe
TTN
9495 M$-Windows compiler. Include some pieces of code (protoent and
9496 servent interface) protected by HAVE_* macros when using a
6063dc1d
SJ
9497 native M$-Windows compiler.
9498
351982f6
MV
94992001-11-20 Marius Vollmer <mvo@zagadka.ping.de>
9500
9501 * modules.c (scm_c_export): Do nothing when the first argument is
9502 already the terminating NULL. Thanks to Han-Wen Nienhuys!
9503
849038b5
TTN
95042001-11-20 Thien-Thi Nguyen <ttn@glug.org>
9505
9506 * Makefile.am (libpath.h): In SCM_BUILD_INFO,
9507 also include `buildstamp'.
9508
5c790b44
RB
95092001-11-18 Rob Browning <rlb@defaultvalue.org>
9510
9511 * version.c
9512 (s_scm_major_version): use SCM_MAJOR_VERSION.
9513 (s_scm_minor_version): use SCM_MINOR_VERSION.
9514 (s_scm_micro_version): use SCM_MICRO_VERSION.
9515 (s_scm_version): use SCM_MAJOR_VERSION, SCM_MINOR_VERSION, and
9516 SCM_MICRO_VERSION.
9517
9518 * version.h.in
9519 (SCM_MAJOR_VERSION): renamed from SCM_GUILE_MAJOR_VERSION.
9520 (SCM_MINOR_VERSION): renamed from SCM_GUILE_MINOR_VERSION.
9521 (SCM_MICRO_VERSION): renamed from SCM_GUILE_MICRO_VERSION.
9522
694a9bb3
NJ
95232001-11-18 Neil Jerram <neil@ossau.uklinux.net>
9524
9525 * vectors.c (scm_vector_move_left_x, scm_vector_move_right_x):
9526 Rewrite docstrings without reference to substring-move-left/right,
9527 since the latter no longer exist.
9528
302c12b4
DH
95292001-11-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
9530
9531 * eval.c: Removed bogus comment about acros.
9532
9533 (scm_unmemocar): Use !SCM_CONSP instead of SCM_IMP.
9534 Minimize scope of local variable. Eliminate dependency on
9535 macro DEBUG_EXTENSIONS.
9536
9537 (s_splicing): New error message string.
9538
9539 (scm_m_body): Issue 'bad body' message rather than 'missing
9540 expression' message.
9541
9542 (scm_m_quote): Eliminate unnecessary copying.
9543
9544 (scm_m_lambda, scm_m_letstar, scm_m_letrec, scm_m_let): Leave the
9545 checking of the body to scm_m_body.
9546
9547 (scm_m_do): Move comment to function header. Rename arg1 to
9548 binding. Made the code a bit easier to read.
9549
9550 (evalcar): Removed.
9551
9552 (iqq): Added a comment. Changed the depth parameter to
9553 unsigned. Use size_t for vector lengths. Make sure vector object
9554 is gc protected as long as its contents are read. Add some syntax
9555 checks. Get rid of unnecessary SCM_IMP test. Clean up the
9556 control structure a bit.
9557
9558 (scm_m_delay): Added comment about the implementation of
9559 scm_m_delay.
9560
9561 (scm_m_define): Add comment about guile's currying define
9562 syntax. Renamed 'proc' to 'name'. Eliminate dependency on macro
9563 DEBUG_EXTENSIONS. Simplified code a bit. Eliminate SICP code.
9564
9565 (scm_m_letrec1): Removed. Part of the functionality is taken
9566 over by the new function 'transform_bindings'.
9567
9568 (transform_bindings): New function. Takes over some of the
9569 functionality of removed function 'scm_m_letrec1', namely to split
9570 a list of bindings into a reversed list of variables and a list of
9571 initializers.
9572
9573 (scm_m_letrec): Call 'transform_bindings'.
9574
9575 (scm_m_let): Minimized scope of local variables. Renamed 'proc'
9576 to 'temp' and 'arg1' to 'binding'. Eliminated redundant SCM_NIMP
9577 test. Use 'transform_bindings'. Fixed scoping error with named
9578 let (Thanks to Aubrey Jaffer for reporting the bug and to Neil
9579 Jerram for suggesting the fix). Cleaned up the control structure
9580 a bit.
9581
9582 (scm_m_expand_body): Use 'transform_bindings'. Eliminated
9583 unnecessary consing. Eliminated unnecessary
9584 SCM_DEFER/ALLOW_INTS.
9585
9586 (SCM_CEVAL): Un-obfuscated some loops.
9587
cecb4a5e
NJ
95882001-11-16 Neil Jerram <neil@ossau.uklinux.net>
9589
8f85c0c6
NJ
9590 * gc.h (scm_unhash_name): Old declaration removed.
9591
9592 * eval.c (s_scm_eval): Change @var{primitive-eval} to
9593 @code{primitive-eval}.
9594
9595 * feature.c, vectors.c, net_db.c, unif.c, weaks.c, struct.c,
9596 version.c, alist.c, ports.c, ramap.c, unif.c, strings.c, list.c:
9597 Change @deffnx lines in docstrings to say {Scheme Procedure}
9598 rather than primitive or procedure.
9599
9600 * posix.c (scm_execl), filesys.c (scm_close), unif.c
9601 (scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
9602 scm_bit_set_star_x, scm_bit_invert_x), ramap.c (scm_array_fill_x,
9603 scm_array_for_each, scm_array_index_map_x), vectors.c (scm_vector,
9604 scm_make_vector, scm_vector_to_list, scm_vector_fill_x), strop.c
9605 (scm_string_split, scm_string_ci_to_symbol), strings.c
9606 (scm_string_p), sort.c (scm_merge), print.c (scm_newline),
9607 macros.c (scm_macro_type), alist.c (scm_acons, scm_assq):
9608 Docstring fixes and improvements reflecting edits that have been
9609 made in the reference manual source.
9610
9611 * objprop.c (scm_object_properties, scm_set_object_properties_x,
9612 scm_object_property, scm_set_object_property_x): Remove invalid
9613 @deffnx lines for corresponding procedure property primitives.
9614
cecb4a5e
NJ
9615 These changes add a @deffnx C function declaration and function
9616 index entries for each Guile primitive to the copy of the doc
9617 snarf output that is used for reference manual synchronization.
9618 Online help is unchanged.
849038b5 9619
cecb4a5e
NJ
9620 * snarf.h (SCM_SNARF_DOCS): Output primitive's C function name.
9621 (SCM_DEFINE, SCM_DEFINE1, SCM_REGISTER_PROC): Supply to C function
9622 name to SCM_SNARF_DOCS.
849038b5 9623
cecb4a5e
NJ
9624 * guile-snarf-docs-texi.in: Pass the shell script's arguments into
9625 snarf-check-and-output-texi.
9626
9627 * Makefile.am (guile-procedures.texi): New rule.
9628 (BUILT_SOURCES, guile.texi, guile-procedures.txt, CLEANFILES):
9629 Changed so that the last stage of doc snarfing is now performed
9630 twice, once to produce guile-procedures.txt for online help, and
9631 once to produce guile.texi for reference manual synchronization.
9632
ddea3325
DH
96332001-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
9634
9635 * eval.c (RETURN): Wrap in do{}while(0) in order to make it
9636 safely usable as a single statement followed by a ';', for example
9637 in an if statement.
9638
9639 (SCM_CEVAL, SCM_APPLY): Clean up code using 'RETURN'.
9640
72dd0a03
NJ
96412001-11-13 Neil Jerram <neil@ossau.uklinux.net>
9642
9643 * random.c (scm_random_solid_sphere_x,
9644 scm_random_hollow_sphere_x): Correct "shere" typos.
9645
9646 * hashtab.c (scm_hash_fold): Add missing apostrophe to docstring.
9647
9648 * version.c (scm_version): Update docstring to include
9649 `micro-version'.
9650
6558eda6
MV
96512001-11-13 Marius Vollmer <mvo@zagadka.ping.de>
9652
409b8588
MV
9653 * modules.c (scm_c_export): Call va_end after collecting the
9654 symbols.
9655
adb8c0f2
MV
9656 * strop.h, strop.c (scm_substring_move_left_x,
9657 scm_substring_move_right_x): Removed.
9658
6558eda6
MV
9659 * __scm.h (HAVE_UINTPTR_T, HAVE_PTRDIFF_T, HAVE_LONG_LONG,
9660 HAVE_LONG_LONGS): Define to "1" when defining them, to mirror what
9661 configure does.
9662
5d8fc640
MV
96632001-11-12 Marius Vollmer <mvo@zagadka.ping.de>
9664
9665 * numbers.c: Document macros to define when including
9666 num2integral.i.c. MAX_VALUE and MIN_VALU are no longer used, we
9667 now rely on SIZEOF_ macros that have been figured out at
9668 configure time.
9669
9670 * num2integral.i.c: Adapt to new interface.
9671 (NUM2INTEGRAL): Test whether a fixnum can be represented in the
9672 target type by casting it and checking whether it is still the
9673 same. Do not try to handle bignums for integral types that are
9674 smaller than fixnums. When handling bignums, collect the
9675 magnituse first into a unsigned type, and correctly check for
9676 overflow.
9677 (INTEGRAL2BIG): Do not use MIN_VALUE explicitely by observing that
9678 only -MIN_VALUE can still be negative of all negative numbers (in
9679 twos-complement).
9680
849038b5 9681 * tags.h (SIZEOF_SCM_T_BITS): Define it appropriately.
5d8fc640
MV
9682
9683 * __scm.h: Define HAVE_UINTPTR_T, HAVE_PTRDIFF_T and
9684 HAVE_LONG_LONG depending on whether their size is non-zero.
9685
d6b8cf11
TTN
96862001-11-11 Thien-Thi Nguyen <ttn@glug.org>
9687
9688 * strop.c (scm_string_null_p): Docfix; nfc.
9689 Thanks to Scott Lenser.
9690
9401323e
NJ
96912001-11-07 Neil Jerram <neil@ossau.uklinux.net>
9692
9693 * extensions.c (scm_load_extension): Canonicalize docstring
9694 whitespace.
9695
9696 * unif.c (scm_uniform_array_write), ports.c
9697 (scm_current_output_port, scm_force_output), dynwind.c
9698 (scm_dynamic_wind), scmsigs.c (scm_setitimer, scm_getitimer),
9699 filesys.c (scm_open, scm_lstat), struct.c
9700 (scm_make_struct_layout), random.c (scm_random,
9701 scm_random_solid_sphere_x, scm_random_hollow_sphere_x, strop.c
9702 (scm_i_index): Remove superfluous whitespace from end of docstring
9703 lines.
9704
9705 * filesys.c (scm_select), guardians.c (scm_guardian_greedy_p),
9706 strings.c (scm_make_string), variable.c (scm_make_variable,
9707 scm_make_undefined_variable, scm_variable_p, scm_variable_set_x,
9708 scm_variable_bound_p), scmsigs.c (scm_setitimer, scm_getitimer),
9709 posix.c (scm_crypt), struct.c (scm_make_vtable_vtable), hashtab.c
9710 (scm_hash_fold), ports.c (scm_port_for_each): Remove superfluous
9711 newline at end of docstrings.
9712
9713 * modules.c (scm_set_current_module): Add missing newline to
9714 docstring.
9715
b4e15479
SJ
97162001-11-07 Stefan Jahn <stefan@lkcc.org>
9717
9718 * win32-socket.[ch]: New files. Defines Winsock-API error codes
9719 and makes them available through Guile. That is because the
9720 Winsock-API does not store its errors in `errno' and thus cannot
9721 return error messages via `strerror (errno)'.
9722
9723 * socket.c (scm_init_socket): Initialize `win32-socket' part
9724 here under M$-Windows.
9725
d6b8cf11 9726 * numbers.h: Added missing declaration of
b4e15479
SJ
9727 `scm_sys_check_number_conversions()'.
9728
9729 * error.c: Local definition of SCM_I_STRERROR and SCM_I_ERRNO
9730 and use in `(strerror)' and `(system-error)'.
9731
d6b8cf11 9732 * Makefile.am (EXTRA_libguile_la_SOURCES): Added
b4e15479
SJ
9733 `win32-socket.[ch]' to extra source and header files.
9734
7ab89df1
MV
97352001-11-06 Marius Vollmer <mvo@zagadka.ping.de>
9736
9737 * script.c (scm_shell_usage, scm_compile_shell_switches): Prepend
9738 a call to turn-on-debugging when --debug has been given instead of
9739 turning it on directly. Also, handle new `--no-debug' option,
9740 which might suppress the call to turn-on-debugging.
9741
0233bfc1
SJ
97422001-11-05 Stefan Jahn <stefan@lkcc.org>
9743
9744 * struct.c (s_scm_struct_vtable_p): Corrected docstring.
9745
8f99e3f3
SJ
97462001-11-04 Stefan Jahn <stefan@lkcc.org>
9747
9748 * Makefile.am (libguile_la_LIBADD): Added $(THREAD_LIBS_LOCAL)
d6b8cf11 9749 here (was at guile_LDADD) which describes the dependency
8f99e3f3
SJ
9750 correctly and allows a clean build on Win32.
9751
d6b8cf11 9752 * __scm.h (SCM_API): Follow-up patch. Renamed __FOO__ macros
8f99e3f3
SJ
9753 into FOO.
9754
9755 * __scm.h: USE_DLL_IMPORT indicates the usage of the DLL
9756 import macros for external libraries (libcrypt, libqthreads,
9757 libreadline and libregex).
9758
9759 * coop-defs.h: Include <winsock2.h> for `struct timeval'.
9760
9761 * posix.c (flock): Added support for flock() in M$-Windows.
9762
9763 * guile.c (SCM_IMPORT): Follow-up patch. Use SCM_IMPORT instead
9764 of __SCM_IMPORT__.
9765
9766 * fports.c (getflags): Differentiate reading and writing pipes
9767 descriptors.
9768
9769 * filesys.c (S_IS*): Redefine all of the S_IS*() macros for
9770 M$-Windows.
9771
9772 * coop.c (coop_condition_variable_timed_wait_mutex): Use
9773 conditionalized error code if `ETIMEDOUT' is not available.
9774 (scm_thread_usleep): Remove bogus declaration of `struct timeval
9775 timeout'.
9776
9777 * numbers.c (PTRDIFF_MIN): Moved this definition where it actually
9778 belongs. That is because NO_PREPRO_MAGIC gets undefined after
9779 each inclusion of `num2integral.i.c'.
9780 (SIZE_MAX): Define NO_PREPRO_MAGIC if SIZE_MAX is undefined.
9781
4e21fa60
MV
97822001-11-03 Marius Vollmer <mvo@zagadka.ping.de>
9783
9784 * eval.c (scm_m_begin): Allow `(begin)`, with no subforms.
9785 (SCM_CEVAL): Evaluate an empty `begin' to SCM_UNSPECIFIED.
9786
08112c95
MD
97872001-11-02 Mikael Djurfeldt <mdj@linnaeus>
9788
7663c008
MD
9789 * print.c (scm_iprin1): Mark print state as revealed when
9790 dispatching to generic write or display.
9791
08112c95
MD
9792 * unif.c (scm_ra2contig): Fixed memory overwrite bug.
9793
f712d833
MV
97942001-11-02 Marius Vollmer <mvo@zagadka.ping.de>
9795
9796 Support for native Win32. Thanks to Stefan Jahn!
d6b8cf11 9797
f712d833
MV
9798 * Makefile.am: Add win32-uname.c, win32-uname.h, win32-dirent.c
9799 and win32-dirent.h to extra source and header files. These
9800 include the uname() and the POSIX dirent interface implementation
9801 for M$-Windows. Put `-no-undefined' into LDFLAGS to support
9802 linkers which do not allow unresolved symbols inside shared
9803 libraries. Corrected `guile_filter_doc_snarfage$(EXEEXT)'
9804 dependency.
9805
d6b8cf11
TTN
9806 * __scm.h: Defined SCM_API. This macro gets prepended to all
9807 function and data definitions which should be exported or imported
f712d833
MV
9808 in the resulting dynamic link library in the Win32 port.
9809
9810 * __scm.h, alist.h, arbiters.h, async.h, backtrace.h, boolean.h,
d6b8cf11 9811 chars.h, continuations.h, coop-defs.h, coop-threads.h,
f712d833
MV
9812 debug-malloc.h, debug.h, deprecation.h, dynl.h, dynwind.h,
9813 environments.h, eq.h, error.h, eval.h, evalext.h, extensions.h,
9814 feature.h, filesys.h, fluids.h, fports.h, gc.h, gdb_interface.h,
9815 gdbint.h, gh.h, goops.h, gsubr.h, guardians.h, hash.h, hashtab.h,
9816 hooks.h, init.h, ioext.h, iselect.h, keywords.h, lang.h, list.h,
d6b8cf11 9817 load.h, macros.h, mallocs.h, modules.h, net_db.h, numbers.h,
f712d833
MV
9818 objects.h, objprop.h, options.h, pairs.h, ports.h, posix.h, print.h,
9819 procprop.h, procs.h, properties.h, ramap.h, random.h, rdelim.h,
9820 read.h, regex-posix.h, root.h, rw.h, scmsigs.h, script.h, simpos.h,
9821 smob.h, socket.h, sort.h, srcprop.h, stackchk.h, stacks.h, stime.h,
9822 strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h,
9823 tags.h, threads.h, throw.h, unif.h, values.h, variable.h, vectors.h,
9824 vports.h, weaks.h:
9825 Prefixed each each exported symbol with SCM_API.
9826
d6b8cf11 9827 * continuations.c: Added comment about the use of the extern
f712d833
MV
9828 declarations of {get,set}context() functions used in the ia64 port.
9829
9830 * continuations.h, gc.c: `__libc_ia64_register_backing_store_base'
9831 is meant to be a `unsigned long *'.
9832
9833 * filesys.c: Include `direct.h' if possible. Use local
9834 `win32-dirent.h' for the native M$-Windows port. Define S_IS*()
9835 macros for M$-Windows. Implementation of `fstat_Win32()' which is
9836 able to differentiate between sockets and other file descriptors.
9837 Use this function as wrapper in `scm_fstat()'. Fixed typo in
9838 `scm_dirname()'.
9839
9840 * fports.c: Include `io.h' is possible. Put `*fp' into referring
9841 statement block in `scm_fport_buffer_add()'.
9842 Some corrections in `getflags()'.
d6b8cf11 9843
f712d833
MV
9844 * gdb_interface.h (GDB_INTERFACE): Also support __CYGWIN__.
9845
9846 * guile.c: Make sure to define __SCM_IMPORT__ for shared library
9847 build on Win32. Disable preloaded symbols on Win2 platforms.
9848
9849 * ioext.c, ports.c: Include `io.h' is possible.
9850
9851 * mkstemp.c: Include `process.h' is possible.
9852
9853 * net_db.c: Disable extern declaration of `h_errno' for __CYGWIN__,
9854 too.
9855 Put `scm_return_entry()' into HAVE_GETSERVENT conditional.
9856
9857 * posix.c: Remove unnecessary dirent includes and defines. Include
9858 local `win32-uname.h' for MinGW. Extern declaration of
9859 `mkstemp()' for systems where it does not exists. Make
9860 `getlogin()' available on M$-Windows.
9861
9862 * scmsigs.c: Made `usleep()' avalable on MinGW.
9863
9864 * stime.c: On M$-Windows `tzname[]' is known to be `_tzname[]'.
9865
9866 * win32-dirent.c: Include "win32-dirent.h", not "dirent.h".
9867
9868 * win32-uname.c: Include "win32-uname.h", not "uname.h".
9869
d245ce23
MD
98702001-10-28 Mikael Djurfeldt <mdj@linnaeus>
9871
9872 * unif.c (scm_uniform_array_read_x, scm_uniform_array_write):
9873 Don't apply scm_uniform_vector_length on arrays.
9874
8ea46249
DH
98752001-10-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
9876
9877 * eval.c (scm_lookupcar, scm_m_letstar, scm_m_do, iqq,
9878 scm_m_define, scm_m_letrec1, scm_m_let, scm_m_expand_body,
9879 scm_macroexp, unmemocopy, scm_eval_args, scm_deval_args,
9880 SCM_CEVAL, scm_map, scm_init_eval): When building lists, prefer
9881 scm_list_<n> over scm_cons[2]?.
9882
9883 (scm_unmemocar, scm_m_cond, scm_m_letstar, scm_m_letrec1,
9884 scm_m_let, scm_m_atbind, unmemocopy, SCM_CEVAL, SCM_APPLY): Use
9885 SCM_C[AD][AD]R instead of explicit form.
9886
9887 (scm_m_set_x, scm_m_cond, scm_m_letstar, scm_m_do): Reordered
9888 comparison parameters.
9889
9890 (scm_m_case, scm_m_cond, scm_m_letstar, scm_m_do, SCM_CEVAL): Use
9891 !SCM_NULLP instead of SCM_NIMP.
9892
9893 (scm_m_case): Don't copy the form. Renamed proc to clause and
9894 minimized its scope. Renamed x to clauses. Removed side
9895 effecting operation from macro call.
9896
9897 (scm_m_cond): Don't copy the form. Renamed arg1 to clause and
9898 minimized its scope. Renamed x to clauses. Minimized the scope
9899 of variable 'len'. Make sure the else clause is treated specially
9900 even in case of '=>' occurences. Don't change the else to #t in
9901 order to be able to distinguish this case in the evaluator. Leave
9902 type checking of the recipient to the evaluator.
9903
9904 (scm_c_improper_memq): Made the comment somewhat clearer.
9905
9906 (scm_m_lambda): Renamed proc to formals. Removed unnecessary
9907 test for SCM_IM_LET at the place of the formal parameters.
9908 Simplified the formal parameter checking.
9909
9910 (scm_m_letstar): Added Comment. Renamed proc to bindings.
9911 Renamed arg1 to binding and minimized its scope. Eliminated
9912 unnecessary consing.
9913
9914 (scm_m_do): Renamed proc to bindings. Minimized the scope of
9915 variable 'len'.
9916
9917 (build_binding_list): New static function.
9918
9919 (unmemocopy): Don't use SCM_TYP7 on pairs (it's unclean).
9920 Further, split up the 'letrec' unmemoizing code to the
9921 corresponding parts for 'do', 'let' and 'letrec', adding comments
9922 to each form. Cleanup the handling of the do form (This removes
9923 some *real* code :-).
9924
9925 (SCM_CEVAL): Removed side effecting operation from macro call.
9926 Handle the 'else clause of the 'cond form specially - the symbol
9927 'else is not replaced with #t any more.
9928
8186c4f5
GH
99292001-10-14 Gary Houston <ghouston@arglist.com>
9930
9931 * version.c (scm_version): use sprintf instead of snprintf,
9932 for portability. thanks to Bill Schottstaedt.
9933
89759084
MD
99342001-10-14 Mikael Djurfeldt <mdj@linnaeus>
9935
9936 * read.c (scm_lreadr): When user-defined hash procedure returns
9937 SCM_UNSPECIFIED: Fall back to standard handling instead of raising
9938 an exception. (This prevents parsing of uniform vectors from
9939 interfering with parsing of numbers.)
9940
9c7ce563
MV
99412001-10-13 Marius Vollmer <mvo@zagadka.ping.de>
9942
9943 * numbers.c: Set NO_PREPRO_MAGIC when defining our version of
9944 PTRDIFF_MIN. Thanks to Ken Raeburn.
9945
99462001-10-07 Marius Vollmer <mvo@zagadka.ping.de>
9947
9948 * Makefile.am (EXTRA_libguile_la_SOURCES): Added "mkstemp.c".
9949
9950 * eval.c (scm_m_atbind): First try to find the variable without
9951 defining it locally; when it has not been found, define it
9952 locally.
9953
9954 * modules.c (module_variable): Pass over variables that exist but
9955 are unbound.
9956
99572001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
9958
9959 * backtrace.c (display_backtrace_file_and_line): Only use
9960 scm_basename when POSIX support is compiled in. Thanks to Chris
9961 Cramer.
9962
1fe5e088
DH
99632001-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9964
9965 * numbers.c (mem2uinteger): Return number read so far when coming
9966 across a hexdigit after having read a # or if not reading a hex
9967 value. This will enable the calling code to correctly handle
9968 forms like 1e2. (The background is, that the exponent markers d,
9969 e and f are also hexdigits.) Thanks to Mikael Djurfeldt for
9970 providing this patch.
9971
9972 (mem2complex): Fix erroneous double-negation. Now, numbers like
9973 1-i will be read correctly.
9974
68665a97
MD
99752001-10-12 Mikael Djurfeldt <mdj@linnaeus>
9976
9977 * debug.c (scm_mem_to_proc): Fixed typo in previous change.
9978
9979 * validate.h (SCM_VALIDATE_DOUBLE_DEF_COPY): New macro.
9980
d5cf5324
DH
99812001-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
9982
9983 * print.c (scm_print_state_vtable, print_state_pool):
9984 Initialize. These variables are now registered as gc roots.
9985
9986 (scm_current_pstate): Update documentation.
9987
9988 (scm_current_pstate, scm_make_print_state, scm_free_print_state,
9989 scm_prin1, scm_init_print): print_state_pool is registered as a
9990 gc root and thus does not need to be protected by a surrounding
9991 pair any more.
9992
9993 (make_print_state): The car of print_state_pool no longer holds
9994 the scm_print_state_vtable.
9995
9996 (scm_current_pstate, scm_make_print_state, print_circref,
9997 scm_iprin1, scm_prin1, scm_iprlist): Prefer !SCM_<foo> over
9998 SCM_N<foo>.
9999
10000 (scm_prin1): When building lists, prefer scm_list_<n> over
10001 scm_cons[2]?.
10002
10003 (scm_iprlist): Removed a redundant SCM_IMP test.
10004
10005 (scm_simple_format): Use SCM_EQ_P to compare SCM values.
10006
37c56aec
DH
100072001-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
10008
10009 * debug.c (scm_make_iloc): Prefer !SCM_<foo> over SCM_N<foo>.
10010
10011 (scm_memcons, scm_mem_to_proc): When building lists, prefer
10012 scm_list_<n> over scm_cons[2]?.
10013
10014 (scm_mem_to_proc): Prefer SCM_CONSP over SCM_NIMP.
10015
10016 (scm_procedure_name): Use SCM_CADR instead of explicit form.
10017
10018 (debugobj_print): Coerce scm_intprint arg 1 to long, not int.
10019 Thanks to Rob Browning for the patch (see log entry 2001-09-21) -
10020 for some reason his patch didn't make it into the cvs.
10021
79d34f68
DH
100222001-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
10023
10024 * numbers.c (mem2decimal_from_point): Cleaned up the parsing a
10025 little bit - should even be somewhat more accurate now.
10026
5e137c65
RB
100272001-10-08 Rob Browning <rlb@defaultvalue.org>
10028
10029 * gc.c: support ia64 register backing store.
10030 (SCM_MARK_BACKING_STORE): new macro.
10031
10032 * continuations.h: support ia64 register backing store.
10033 (struct scm_t_contregs): add ia64 register backing store.
10034
10035 * continuations.c: support ia64 register backing store.
10036 (continuation_mark): mark ia64 register backing store.
10037 (continuation_free): free ia64 register backing store.
10038 (scm_make_continuation): capture ia64 register backing store.
10039 (copy_stack_and_call): copy ia64 register backing store.
10040
ee083ac2
DH
100412001-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
10042
10043 * hashtab.c (scm_hash_fn_create_handle_x): The result of assoc_fn
10044 is known to be #f if no entry is found. Thus, use !SCM_FALSEP
10045 instead of SCM_NIMP to test for that case.
10046
10047 * strings.h (SCM_SET_STRING_LENGTH): Cast the length to
10048 scm_t_bits instead of long.
10049
71dcdbf9
MV
100502001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
10051
10052 * tags.h (SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
10053 SCM_T_SIGNED_BITS_MIN): New.
10054 * numbers.h (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM):
10055 Use them to make these macros computable by the preprocessor.
10056
10057 * num2integral.i.c (INTEGRAL2NUM): Let the preprocessor test
10058 whether the integral type fits in a fixnum, not the compiler.
10059 This removes a spurious compiler warning. Also, honor the
10060 NO_PREPRO_MAGIC flag to suppress any preprocessor tests. This is
10061 needed for `long long's.
10062
10063 * numbers.c: Define NO_PREPRO_MAGOC when including
10064 num2integral.c.i for `long long' and `signed long long'.
10065
152812c0
MD
100662001-10-06 Mikael Djurfeldt <mdj@linnaeus>
10067
10068 These changes fixes a race condition in the Guile coop - pthread
10069 compatibility code.
d6b8cf11 10070
152812c0
MD
10071 * coop.c (mother_awake_p): New variable.
10072 (coop_create): Set mother_awake_p before creating or signalling
10073 mother; wait until mother is going to sleep before returning.
10074 (mother): Reset mother_awake_p before going to sleep.
10075
11d49f54
DH
100762001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10077
10078 * options.c (protected_objects, scm_init_options): The content of
10079 protected_objects is now protected from garbage collection using
10080 scm_gc_register_root instead of scm_permanent_object.
10081
10082 (get_option_setting): New static function that computes an option
10083 setting as it was formerly done in the function scm_options.
10084
10085 (get_documented_option_setting): New static function that
10086 returns option documentation as it was formerly done in the
10087 function scm_options. Note that documentation C strings are no
10088 longer precomputed into SCM objects. Instead, they are converted
10089 into SCM strings every time get_documented_option_setting is
10090 called.
10091
10092 (change_option_setting): New static functions that modifies the
10093 option setting as it was formerly done in the function
10094 scm_options. The function is now exception safe, i. e. won't
10095 cause a memory leak when interrupted. Further, only non-immediate
10096 option values are added to the protection list.
10097
10098 (scm_options): This function now has only the purpose to dispatch
10099 to to get_option_setting, get_documented_option_setting or
10100 change_option_setting, depending on the arguments given to
10101 scm_options.
10102
10103 (scm_init_opts): Don't convert documentation C strings into SCM
10104 strings. Further, don't protect any object values: They _must_
10105 be immediate values, otherwise there is no guarantee that they
10106 have not been collected before anyway.
10107
10108 * options.[ch] (scm_t_option): Made type unsigned, name into a
10109 constant char* and val into a scm_t_bits type.
10110
10111 (scm_options, scm_init_opts): The number of options is guaranteed
10112 to be larger or equal to zero. Thus, the type is changed to
10113 unsigned.
10114
3dbacabc
DH
101152001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10116
10117 * num2integral.i.c (NUM2INTEGRAL): Eliminated some warnings about
10118 testing an unsigned value for being >= 0.
10119
14282d0f
DH
101202001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10121
10122 * numbers.h: Removed old comment about using SCM_CAR to access
10123 non-pair cells.
10124
10125 (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM): Make sure
10126 the return value is signed. Thanks to Brian Crowder for the bug
10127 report.
10128
10129 (SCM_SRS): Avoid unnecessary casting and don't unpack input
10130 values. With this patch, SCM_SRS can be safely used for other
10131 types than scm_t_signed_bits. However, it should still better be
10132 an internal macro and thus be renamed to SCM_I_SRS.
10133
10134 (SCM_MAKINUM, SCM_INUM): Use proper casting.
10135
2dbec7b5
GH
101362001-10-03 Gary Houston <ghouston@arglist.com>
10137
10138 * continuations.h, unif.h: in the descriptions of the bit patterns
10139 of the heap cells, make bit 0 the least significant.
10140
cf4ee841
TTN
101412001-09-25 Thien-Thi Nguyen <ttn@glug.org>
10142
10143 * chars.h (SCM_MAKE_CHAR): Use `scm_t_bits' instead of `intptr_t'.
10144 Thanks to Golubev I. N.
10145
4a151b3d
GH
101462001-09-25 Gary Houston <ghouston@arglist.com>
10147
10148 * ports.c (scm_drain_input): extended the docstring. thanks to
10149 Alex Schroeder and Thien-Thi Nguyen.
10150
581ded70
MD
101512001-09-23 Mikael Djurfeldt <mdj@linnaeus>
10152
10153 * validate.h (SCM_NUM2FLOAT, SCM_NUM2DOUBLE,
10154 SCM_VALIDATE_FLOAT_COPY, SCM_VALIDATE_DOUBLE_COPY): New
10155 macros. (The NUM names might soon change.)
10156
10157 * numbers.h: Added missing declarations.
10158
5437598b
MD
101592001-09-22 Mikael Djurfeldt <mdj@linnaeus>
10160
10161 * Makefile.am: Distribute num2float.i.c.
10162
10163 * num2float.i.c: New file, multiply included by numbers.c, used
10164 to "templatize" the float <-> num conversion routines.
10165
10166 * numbers.c: New functions: scm_num2float, scm_float2num,
10167 scm_num2double, scm_double2num.
10168
0b073f0f
RB
101692001-09-21 Rob Browning <rlb@defaultvalue.org>
10170
10171 * .cvsignore: really add version.h
10172
10173 * strings.h (SCM_SET_STRING_LENGTH): coerce "l" to a long.
10174 Otherwise it fails on the alpha. However, we might rather choose
10175 this size conditionally.
10176
10177 * numbers.c (scm_gcd): change "k" to a long from an int.
10178 Otherwise it fails on the alpha. However, we might rather choose
10179 this size conditionally.
10180
10181 * error.c (scm_wta): coerce char* to intptr_t before int
10182 assignment.
10183
10184 * debug.c (debugobj_print): coerce scm_intprint arg 1 to long, not
10185 int.
10186
10187 * chars.h (SCM_MAKE_CHAR): coerce value to intptr_t.
10188
2830fd91
MD
101892001-09-20 Mikael Djurfeldt <mdj@linnaeus>
10190
10191 * numbers.c (scm_integer_expt): Accept inexact integer in second
10192 argument. (Thanks to Bill Schottstaedt.)
10193
c13f0a90
RB
101942001-09-20 Rob Browning <rlb@defaultvalue.org>
10195
10196 * .cvsignore: add version.h
10197
10198 * versiondat.h.in: removed (obsolete).
10199
10200 * version.h.in: renamed from version.h.
10201 (SCM_GUILE_MAJOR_VERSION): new public macro.
10202 (SCM_GUILE_MINOR_VERSION): new public macro.
10203 (SCM_GUILE_MICRO_VERSION): new public macro.
10204
10205 * version.h: renamed to version.h.in.
10206
10207 * version.c
10208 (scm_major_version): support integer *_VERSION macros.
10209 (scm_minor_version): support integer *_VERSION macros.
10210 (scm_micro_version): support integer *_VERSION macros.
10211 (scm_version): support integer *_VERSION macros.
10212
147c18a0
MD
102132001-09-20 Mikael Djurfeldt <mdj@linnaeus>
10214
10215 * error.c, error.h: Made error keys globally accessible.
10216 Applications might want to test for these or use them in a direct
10217 call to scm_error.
10218
10219 * num2integral.i.c (NUM2INTEGRAL): Report an error when these
10220 routines are passed an inexact. This change in behavior is
10221 motivated by concordance with R5RS: It is more common that a
10222 primitive doesn't want to accept an inexact for an exact.
10223
662c5539
DH
102242001-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
10225
10226 The following patch partially undoes my patch from 2001-06-30,
10227 where I added the function scm_gc_mark_cell_conservatively. The
10228 function is buggy, since it breaks guile during conservative
10229 marking if a pointer on the stack points directly into the list of
10230 free cells on the heap: With conservative cell marking this will
10231 cause the whole free list to be scanned and marked - boom!
10232
10233 * gc.c (allocated_mark, MARK, heap_segment,
10234 scm_gc_mark_cell_conservatively, scm_init_storage), gc.h
cf4ee841 10235 (scm_gc_mark_cell_conservatively): Remove function
662c5539
DH
10236 scm_gc_mark_cell_conservatively and update the corresponding
10237 comments and uses accordingly. Thanks to Christopher Cramer for
10238 the patch. (Minor corrections by me.)
10239
6c1b7628
GH
102402001-09-15 Gary Houston <ghouston@arglist.com>
10241
10242 * root.h (scm_root_state): removed the continuation_stack and
10243 continuation_stack_ptr members, which have no apparent purpose.
10244 (scm_continuation_stack, scm_continuation_stack_ptr): #defines
10245 removed.
662c5539 10246
6c1b7628
GH
10247 * root.c (root_mark), init.c (restart_stack, start_stack), gc
10248 (scm_igc): remove all references to contination_stack and
10249 continuation_stack_ptr, avoiding allocation of a vector and
10250 useless processing during gc.
10251
455c0ac8
DH
102522001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10253
10254 * guardians.c (tconc_t, t_tconc): Renamed tconc_t to t_tconc.
10255
10256 (TCONC_IN): Make sure that the cell word 0 is initialized last.
10257
10258 (guardians_t, t_guardians): Renamed guardians_t to t_guardians.
10259
10260 (GUARDIAN, GUARDIAN_DATA): Renamed GUARDIAN to GUARDIAN_DATA.
10261
10262 (guardian_apply, scm_get_one_zombie, scm_make_guardian,
10263 mark_and_zombify): Prefer !SCM_<foo> over SCM_N<foo>.
10264
22ba637b
DH
102652001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10266
10267 * guardians.c (mark_dependencies_in_tconc,
10268 whine_about_self_centered_zombies, scm_init_guardians): Register
10269 the static global variable `self_centered_zombies' via
10270 scm_gc_register_root, to make some cdr-ing unnecessary.
10271
c3c4d801
DH
102722001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10273
10274 * backtrace.c (display_backtrace_file,
10275 display_backtrace_file_and_line): Use SCM_EQ_P when comparing SCM
10276 values, use SCM_FALSEP when comparing SCM values against #f.
10277 Thanks to Rob Browning for the bug report.
10278
b00418df
DH
102792001-09-12 Martin Baulig <martin@home-of-linux.org>
10280
10281 * strings.[ch] (scm_str2string): New function.
10282
a0d34a0b
MV
102832001-09-06 Marius Vollmer <mvo@zagadka.ping.de>
10284
10285 * gc.c (scm_done_free): Always subtract size from scm_mallocated
10286 when computing nm, even if it's negative.
10287 (scm_must_malloc): Abort on overflow of scm_mtrigger.
10288 (scm_must_realloc): Likewise.
10289
b10586f0
ML
102902001-09-01 Michael Livshin <mlivshin@bigfoot.com>
10291
10292 * numbers.c (scm_sys_check_number_conversions): new function,
10293 defined if Guile is compiled in debugging mode. currently checks
10294 `scm_num2ulong', should check much much more.
10295
10296 * num2integral.i.c (NUM2INTEGRAL): when converting a bignum to
10297 unsigned, ensure that it's positive. thanks to Martin Baulig!
cf4ee841 10298
8c494e99
DH
102992001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10300
10301 * __scm.h: Added new section about compile time selectable
10302 features.
10303
10304 (long_long, ulong_long, scm_sizet, SCM_WNA, SCM_OUTOFRANGE,
10305 SCM_NALLOC, SCM_HUP_SIGNAL, SCM_INT_SIGNAL, SCM_FPE_SIGNAL,
10306 SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL, SCM_GC_SIGNAL,
10307 SCM_TICK_SIGNAL, SCM_SIG_ORD, SCM_ORD_SIG, SCM_NUM_SIGS):
10308 Removed.
10309
10310 * deprecation.c (scm_include_deprecated_features): Simplified.
10311
10312 * eval.c (EVALCAR, unmemocopy), eval.h (SCM_XEVALCAR): Use
9a5fa6e9 10313 `SCM_IMP' instead of `!SCM_CELLP´.
8c494e99
DH
10314
10315 * eval.c (unmemocopy): Eliminate redundant SCM_CELLP tests.
10316 Extract side-effecting operations from macros.
10317
10318 (scm_init_eval): Don't initialize *top-level-lookup-closure*,
10319 scm_top_level_lookup_closure_var and scm_system_transformer.
10320
10321 * gc.c (CELL_P): New local definition to replace SCM_CELLP.
10322
10323 (heap_segment): Use CELL_P instead of SCM_CELLP.
10324
10325 * init.c (start_stack): Don't initialize
10326 scm_top_level_lookup_closure_var and scm_system_transformer.
10327
10328 * modules.c (scm_set_current_module): Don't access
10329 scm_top_level_lookup_closure_var and scm_system_transformer.
10330
10331 (scm_sym2var): Don't call scm_variable_set_name_hint.
10332
10333 (scm_post_boot_init_modules): Removed deprecated initializations.
10334
10335 * print.c (scm_ipruk): Don't access cell contents of non cells.
10336
10337 * strings.c (scm_string_set_x): All strings are writable.
10338
10339 * strings.h (SCM_STRINGP): Use SCM_TYP7 to determine the string
10340 type. There is only one string type now.
10341
10342 (SCM_STRING_COERCE_0TERMINATION_X): Deprecated.
10343
10344 * tags.h: Remove comments about two different string types.
10345
10346 (SCM_CELLP, SCM_NCELLP): Deprecated.
10347
10348 * variable.c (make_variable): Remove code variant for vcells.
10349
10350 * variable.h (SCM_VARIABLE_REF, SCM_VARIABLE_SET,
10351 SCM_VARIABLE_LOC): Remove code variant for vcells.
10352
10353 * __scm.h, deprecation.[ch]: Renamed SCM_DEBUG_DEPRECATED to
10354 SCM_ENABLE_DEPRECATED with the logic reversed.
10355
10356 * dynl.c (moddata, registered_mods), dynl.[ch]
10357 (scm_register_module_xxx, scm_registered_modules,
10358 scm_clear_registered_modules), error.[ch] (scm_wta), eval.c
10359 (*top-level-lookup-closure*), eval.[ch]
10360 (scm_top_level_lookup_closure_var, scm_system_transformer,
10361 scm_eval_3, scm_eval2), gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR,
10362 SCM_SETAND_CDR, SCM_SETOR_CDR, SCM_FREEP, SCM_NFREEP,
10363 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
10364 SCM_GCCDR), gc.[ch] (scm_remember, scm_protect_object,
10365 scm_unprotect_object), modules.c (root_module_lookup_closure,
10366 scm_sym_app, scm_sym_modules, module_prefix, make_modules_in_var,
10367 beautify_user_module_x_var, try_module_autoload_var,
10368 scm_module_full_name), modules.[ch] (scm_the_root_module,
10369 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
cf4ee841 10370 ports.h (scm_port, scm_ptob_descriptor, scm_port_rw_active),
8c494e99
DH
10371 ports.[ch] (scm_close_all_ports_except), random.h (scm_rstate,
10372 scm_rng, scm_i_rstate), strings.h (SCM_SLOPPY_STRINGP,
10373 SCM_RWSTRINGP, SCM_STRING_UCHARS, SCM_STRING_CHARS), strings.[ch]
10374 (scm_read_only_string_p, scm_makstr, scm_makfromstr,
10375 scm_make_shared_substring), tags.h (scm_tc7_substring,
10376 SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP, scm_tc7_ssymbol,
10377 scm_tc7_msymbol, scm_tcs_symbols), variable.c (sym_huh),
10378 variable.[ch] (scm_variable_set_name_hint, scm_builtin_variable),
10379 variable.h (SCM_VARVCELL, SCM_UDVARIABLEP, SCM_DEFVARIABLEP):
10380 Removed.
10381
10382 * dynl.c (scm_dynamic_link, scm_dynamic_func), error.c
10383 (scm_error_scm), filesys.c (scm_chown, scm_chmod, scm_open_fdes,
10384 scm_stat, scm_link, scm_rename, scm_delete_file, scm_mkdir,
10385 scm_rmdir, scm_opendir, scm_chdir, scm_symlink, scm_readlink,
10386 scm_lstat, scm_copy_file), fports.c (scm_open_file), ioext.c
10387 (scm_fdopen), net_db.c (scm_gethost, scm_getnet, scm_getproto,
10388 scm_getserv), ports.c (scm_truncate_file, scm_sys_make_void_port),
10389 posix.c (scm_getpwuid, scm_getgrgid, scm_execl, scm_execlp,
10390 scm_execle, scm_mkstemp, scm_utime, scm_access, scm_setlocale,
10391 scm_mknod, scm_crypt, scm_chroot, scm_getpass, scm_sethostname),
10392 regex-posix.c (scm_make_regexp, scm_regexp_exec), simpos.c
10393 (scm_system, scm_getenv), socket.c (scm_inet_aton), stime.c
10394 (setzone, scm_strftime, scm_strptime), vports.c
10395 (scm_make_soft_port): Remove calls to
10396 SCM_STRING_COERCE_0TERMINATION_X. Since the substring type is
10397 gone, all strings are 0-terminated anyway.
10398
10399 * dynl.h (LIBGUILE_DYNL_H, SCM_DYNL_H), random.h (RANDOMH,
10400 SCM_RANDOM_H): Renamed the macros that are defined to inhibit
10401 double inclusion of the same headers to the SCM_<filename>_H
10402 format.
10403
10404 * eval.c (SCM_CEVAL), gc.c (MARK, scm_gc_sweep), gh_data.c
10405 (gh_scm2chars), hash.c (scm_hasher), objects.c (scm_class_of),
10406 print.c (scm_iprin1): The type scm_tc7_substring does not exist
10407 any more.
10408
10409 * ports.h (SCM_PORTP, SCM_OPPORTP, SCM_OPINPORTP, SCM_OPOUTPORTP,
10410 SCM_INPUT_PORT_P, SCM_OUTPUT_PORT_P, SCM_OPENP), tags.h
10411 (SCM_TYP16_PREDICATE), variable.h (SCM_VARIABLEP): Prefer
10412 !SCM_<foo> over SCM_N<foo>.
10413
dee01b01
DH
104142001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10415
10416 * Makefile.am: Remove references to symbols-deprecated.c.
10417
10418 * symbols.c (scm_init_symbols): Don't initialize deprecated
10419 symbol functions.
10420
10421 * symbols-deprecated.c: Removed.
10422
10423 * fluids.[ch] (scm_internal_with_fluids), gsubr.[ch]
10424 (scm_make_gsubr, scm_make_gsubr_with_generic), hooks.[ch]
10425 (scm_create_hook), list.c (list*), list.h (SCM_LIST[0-9],
10426 scm_listify), list.[ch] (scm_sloppy_memq, scm_sloppy_memv,
10427 scm_sloppy_member), load.c (scm_end_of_file_key), load.[ch]
10428 (scm_read_and_eval_x), numbers.[ch] (scm_mkbig, scm_big2inum,
10429 scm_adjbig, scm_normbig, scm_copybig, scm_2ulong2big, scm_dbl2big,
10430 scm_big2dbl), numbers.h (SCM_FIXNUM_BIT), procs.h
10431 (scm_subr_entry, SCM_SUBR_DOC), procs.[ch] (scm_make_subr_opt,
10432 scm_make_subr, scm_make_subr_with_generic), root.c (setjmp_type,
10433 setjmp_type), root.[ch] (scm_call_catching_errors), smob.[ch]
10434 (scm_make_smob_type_mfpe, scm_set_smob_mfpe), strports.[ch]
10435 (scm_strprint_obj, scm_read_0str, scm_eval_0str), symbols.h
10436 (SCM_CHARS, SCM_UCHARS, SCM_SETCHARS, SCM_SLOPPY_SUBSTRP,
10437 SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_LENGTH_MAX, SCM_LENGTH,
10438 SCM_SETLENGTH, SCM_ROSTRINGP, SCM_ROLENGTH, SCM_ROCHARS,
10439 SCM_ROUCHARS, SCM_SUBSTRP, SCM_COERCE_SUBSTR, scm_strhash,
10440 scm_sym2vcell, scm_sym2ovcell_soft, scm_sym2ovcell,
10441 scm_intern_obarray_soft, scm_intern_obarray, scm_intern,
10442 scm_intern0, scm_sysintern, scm_sysintern0,
10443 scm_sysintern0_no_module_lookup, scm_symbol_value0,
10444 scm_string_to_obarray_symbol, scm_intern_symbol,
10445 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
10446 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp,
10447 scm_init_symbols_deprecated), vectors.c (s_vector_set_length_x),
10448 vectors.[ch] (scm_vector_set_length_x): Removed.
10449
10450 * fluids.h (FLUIDSH, SCM_FLUIDS_H), gsubr.c (GSUBRH, SCM_GSUBR_H),
10451 list.h (LISTH, SCM_LIST_H), load.h (LOADH, SCM_LOAD_H), root.h
10452 (ROOTH, SCM_ROOT_H), strports.h (STRPORTSH, SCM_STRPORTS_H):
10453 Renamed the macros that are defined to inhibit double inclusion of
10454 the same headers to the SCM_<filename>_H format.
10455
10456 * procs.h (SCM_CLOSUREP, SCM_PROCEDURE_WITH_SETTER_P), symbols.h
10457 (SCM_SYMBOLP), vectors.h (SCM_VECTORP): Prefer !SCM_<foo> over
10458 SCM_N<foo>.
10459
b29058ff
DH
104602001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10461
10462 * continuations.h (scm_contregs), debug.h (scm_debug_info,
10463 scm_debug_frame, SCM_DSIDEVAL), filesys.h (SCM_OPDIRP), fports.h
10464 (scm_fport), options.h (scm_option), snarf.h (SCM_CONST_LONG,
10465 SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
10466 SCM_GLOBAL_VCELL_INIT), srcprop.h (scm_srcprops,
10467 scm_srcprops_chunk), stacks.h (scm_info_frame, scm_stack), unif.h
10468 (scm_array, scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_HUGE_LENGTH),
10469 validate.h (SCM_FUNC_NAME, SCM_WTA, RETURN_SCM_WTA,
10470 SCM_VALIDATE_NUMBER_COPY, SCM_VALIDATE_NUMBER_DEF_COPY,
10471 SCM_VALIDATE_STRINGORSUBSTR, SCM_VALIDATE_ROSTRING,
10472 SCM_VALIDATE_ROSTRING_COPY, SCM_VALIDATE_NULLORROSTRING_COPY,
10473 SCM_VALIDATE_RWSTRING, SCM_VALIDATE_OPDIR): Removed.
10474
10475 * continuations.h (CONTINUATIONSH, SCM_CONTINUATIONS_H), filesys.h
10476 (FILESYSH, SCM_FILESYS_H), fports.h (FPORTSH, SCM_FPORTS_H),
10477 options.h (OPTIONSH, SCM_OPTIONS_H), regex-posix.h (REGEXPOSIXH,
10478 SCM_REGEX_POSIX_H), snarf.h (LIBGUILE_SNARF_H, SCM_SNARF_H),
10479 srcprop.h (SCM_SOURCE_PROPERTIES_H, SCM_SRCPROP_H), unif.h
10480 (SCM_UNIFORM_VECTORS_H, SCM_UNIF_H), validate.h (SCM_VALIDATE_H__,
10481 SCM_VALIDATE_H): Renamed the macros that are defined to inhibit
10482 double inclusion of the same headers to the SCM_<filename>_H
10483 format.
10484
10485 * debug.h (SCM_RESET_DEBUG_MODE), regex-posix.h (SCM_RGXP),
10486 srcprop.h (SRCBRKP, PROCTRACEP), struct.h (SCM_STRUCTP),
10487 validate.h (SCM_VALIDATE_THUNK, SCM_VALIDATE_ARRAY,
10488 SCM_VALIDATE_VECTOR_OR_DVECTOR, SCM_VALIDATE_VTABLE): Prefer
10489 !SCM_<foo> over SCM_N<foo>.
10490
0527e687
DH
104912001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10492
10493 * _scm.h (_SCMH, SCM__SCM_H), alist.h (ALISTH, SCM_ALIST_H),
10494 arbiters.h (ARBITERSH, SCM_ARBITERS_H), backtrace.h (BACKTRACEH,
10495 SCM_BACKTRACE_H), boolean.h (BOOLEANH, SCM_BOOLEAN_H), chars.h
10496 (SCM_CHARSH, SCM_CHARS_H), coop-defs.h (COOP_DEFSH,
10497 SCM_COOP_DEFS_H), coop-threads.h (COOP_THREADSH,
10498 SCM_COOP_THREADS_H), debug-malloc.h (DEBUGMALLOCH,
10499 SCM_DEBUG_MALLOC_H), dynwind.h (DYNWINDH, SCM_DYNWIND_H),
10500 environments.h (ENVIRONMENTS_H, SCM_ENVIRONMENTS_H), eq.h (EQH,
10501 SCM_EQ_H), evalext.h (EVALEXTH, SCM_EVALEXT_H), extensions.h
10502 (LIBGUILE_EXTENSIONS_H, SCM_EXTENSIONS_H), feature.h (FEATUREH,
10503 SCM_FEATURE_H), gdbint.h (GDBINTH, SCM_GDBINT_H), guardians.h
10504 (SCM_GUARDIANH, SCM_GUARDIANS_H), hash.h (HASHH, SCM_HASH_H),
10505 hashtab.h (HASHTABH, SCM_HASHTAB_H), init.h (INITH, SCM_INIT_H),
10506 ioext.h (IOEXTH, SCM_IOEXT_H), iselect.h (ISELECTH,
10507 SCM_ISELECT_H), keywords.h (KEYWORDSH, SCM_KEYWORDS_H), lang.h
10508 (LANGH, SCM_LANG_H), mallocs.h (MALLOCSH, SCM_MALLOCS_H), net_db.h
10509 (SCM_NETDBH, SCM_NET_DB_H), objprop.h (OBJPROPH, SCM_OBJPROP_H),
10510 posix.h (POSIXH, SCM_POSIX_H), procprop.h (PROCPROPH,
10511 SCM_PROCPROP_H), properties.h (PROPERTIES_H, SCM_PROPERTIES_H),
10512 ramap.h (RAMAPH, SCM_RAMAP_H), rdelim.h (SCM_RDELIM,
10513 SCM_RDELIM_H), read.h (READH, SCM_READ_H), rw.h (SCM_RW,
10514 SCM_RW_H), scmsigs.h (SCMSIGSH, SCM_SCMSIGS_H), script.h (SCRIPTH,
10515 SCM_SCRIPT_H), simpos.h (SIMPOSH, SCM_SIMPOS_H), socket.h
10516 (SCM_SOCKETH, SCM_SOCKET_H), sort.h (SORTH, SCM_SORT_H),
10517 stackchk.h (STACKCHKH, SCM_STACKCHK_H), stime.h (STIMEH,
10518 SCM_STIME_H), strop.h (STROPH, SCM_STROP_H), strorder.h
10519 (STRORDERH, SCM_STRORDER_H), threads.h (THREADSH, SCM_THREADS_H),
10520 throw.h (THROWH, SCM_THROW_H), version.h (VERSIONH,
10521 SCM_VERSION_H), vports.h (VPORTSH, SCM_VPORTS_H): Renamed
10522 the macros that are defined to inhibit double inclusion of the
10523 same headers to the SCM_<filename>_H format.
10524
fada26b2
MV
105252001-08-27 Marius Vollmer <mvo@zagadka.ping.de>
10526
10527 * ports.c, ports.h, fprots.c, gc.c, ioext.c: Replaced
10528 "scm_t_portable" with "scm_port_table" which was an artifact from
10529 the great "scm_*_t -> scm_t_" renaming.
10530
e4d1c1ea
TTN
105312001-08-25 Thien-Thi Nguyen <ttn@revel.glug.org>
10532
10533 * gc_os_dep.c (GC_noop1): Move before `GC_find_limit' where it is
10534 used; nfc. Thanks to Bill Schottstaedt.
10535
10536 * validate.h (SCM_VALIDATE_USHORT_COPY, SCM_VALIDATE_SHORT_COPY,
10537 SCM_VALIDATE_UINT_COPY, SCM_VALIDATE_INT_COPY): New macros.
10538 Thanks to Chris Cramer.
10539
b573e744
MV
105402001-08-25 Marius Vollmer <mvo@zagadka.ping.de>
10541
10542 * Makefile.am (AUTOMAKE_OPTIONS): Change "foreign" to "gnu".
10543
10544 * eval.c (scm_m_atbind): Redesigned to behvae like `let', but with
10545 dynamic scope.
10546 * dynwind.h (scm_swap_bindings): Declare.
10547 * dynwind.c (scm_swap_bindings): Make non-static.
10548
8a3e715b
ML
105492001-08-25 Michael Livshin <mlivshin@bigfoot.com>
10550
10551 * gc.c (scm_gc_sweep): now can sweep unreachable variables (by
10552 doing exactly nothing about them). thanks Neil!
10553
cf504ee0
NJ
105542001-08-18 Neil Jerram <neil@ossau.uklinux.net>
10555
10556 * __scm.h (SCM_ENABLE_VCELLS): Fix spelling mistake in comment.
ec2667f0 10557
43b83b54
TTN
105582001-08-17 Thien-Thi Nguyen <ttn@revel.glug.org>
10559
10560 * gc.c: Fix omission bug: Add `heap_segment' forward decl
10561 (proto) in the case when either `GUILE_DEBUG' or
10562 `GUILE_DEBUG_FREELIST' preprocessor symbols are defined.
10563
10564 (map_free_list): Fix typo: Ref `f' correctly.
10565
10566 Thanks to Chris Cramer.
10567
ab4cd34b
RB
105682001-08-15 Rob Browning <rlb@defaultvalue.org>
10569
10570 * Makefile.am (libguile_la_LDFLAGS): use libtool interface version
10571 variables.
10572 (libpath.h): change libguileversion to libguileinterface.
10573
b754e3d1
MV
105742001-08-07 Marius Vollmer <mvo@zagadka.ping.de>
10575
10576 * Makefile.am (EXTRA_DIST): Distribute ChangeLog-1996-1999 and
10577 ChangeLog-2000. Thanks to Daniel Skarda!
10578
8b1d12c7
ML
105792001-08-07 Michael Livshin <mlivshin@bigfoot.com>
10580
10581 * guile-snarf-docs-texi.in: don't call the tokenizer here, we now
10582 do it from the Makefile.
10583
10584 * Makefile.am: rearrange the snarfing slightly, so that .doc files
10585 are of a reasonable size.
10586
baffb19f
NJ
105872001-08-02 Neil Jerram <neil@ossau.uklinux.net>
10588
10589 * stacks.c (scm_make_stack): Improve docstring by explaining use
10590 of cutting args.
10591
c1151355
MV
105922001-08-01 Marius Vollmer <mvo@zagadka.ping.de>
10593
10594 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
10595 scm_char_whitespace_p, scm_char_upper_case_p,
10596 scm_char_lower_case_p, scm_char_is_both_p): Do not require
10597 characters to fulfill isascii in addition to the primary
10598 predicate.
10599
3c9a524f
DH
106002001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10601
10602 * numbers.c (DIGITS, scm_small_istr2int, scm_istr2int,
10603 scm_istr2flo, scm_istring2number): Removed.
10604
10605 (iflo2str, scm_real_p, scm_integer_p): Use SCM_<foo> instead of
10606 SCM_SLOPPY_<foo>.
10607
10608 (t_exactness, t_radix, DIGIT2UINT, XDIGIT2UINT, mem2uinteger,
10609 mem2decimal_from_point, mem2ureal, mem2complex, scm_i_mem2number):
10610 Added.
10611
10612 (scm_string_to_number): Use new number parser.
10613
10614 (scm_exact_to_inexact): Replace dummy by a GPROC, which also
10615 handles complex numbers.
10616
10617 * numbers.h (NUMBERSH, SCM_NUMBERS_H): Rename <foo>H to
10618 SCM_<foo>_H.
10619
10620 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Prefer !SCM_<pred> over
10621 SCM_N<pred>.
10622
10623 (scm_istr2int, scm_istr2flo, scm_istring2number): Removed.
10624
10625 (scm_i_mem2number): Added.
10626
10627 (scm_exact_to_inexact): Changed signature.
10628
10629 * read.c (scm_lreadr): Perform the shortcut test for '+ and '-
10630 here instead of within scm_i_mem2number. Call scm_i_mem2number
10631 instead of scm_istr2int and scm_istring2number.
10632
01f11e02
DH
106332001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10634
10635 * eval.c (scm_lookupcar, scm_m_body, scm_m_lambda, unmemocopy,
10636 scm_unmemocopy, scm_badargsp, scm_eval_body, CHECK_EQVISH,
10637 SCM_CEVAL, scm_nconc2last, SCM_APPLY, scm_copy_tree): Prefer
10638 !SCM_<pred> over SCM_N<pred>.
10639
10640 (scm_eval_body): Remove side effecting code from macro call.
10641
10642 (SCM_CEVAL, SCM_APPLY): Remove goto statement and redundant
10643 SCM_NIMP test.
10644
6cf69537
DH
106452001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10646
10647 * pairs.h (SCM_VALIDATE_PAIR): Use SCM_CONSP, not SCM_ECONSP.
10648
54866b6c
MV
106492001-07-29 Marius Vollmer <mvo@zagadka.ping.de>
10650
10651 Removed vcell slot from structs.
43b83b54 10652
54866b6c
MV
10653 * struct.h (scm_vtable_index_vcell): Removed. Renumbered
10654 subsequent indices.
10655
10656 * struct.c (scm_struct_vtable_p): Do not check vcell slot for
10657 zero. Use scm_vtable_index_layout instead of "0" when accessing
10658 said slot.
10659 (scm_init_struct): Remove vcell slot layout code from
10660 required_vtable_fields.
10661
10662 * objects.h (scm_si_redefined, scm_si_hashsets): Renumbered.
10663
10664 * goops.c (build_class_class_slots): Removed vcell slot
10665 definition.
10666
10667 * goops.h: Renumbered slot indices. (SCM_CLASS_CLASS_LAYOUT):
10668 Removed vcell slot layout code.
10669 (scm_si_vcell): Removed.
10670
5b54c4da
MV
106712001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
10672
a0f5718e 10673 "Glocs" have been removed.
43b83b54 10674
a0f5718e
MV
10675 * tags.h: Update tag system docs.
10676 (scm_tc3_cons_gloc): Renamed to scm_tc3_struct. Changed all uses.
10677 (scm_tcs_cons_gloc): Renamed to scm_tcs_struct. Changed all uses.
10678 (SCM_ECONSP, SCM_NECONSP): Removed. Changed all uses to SCM_CONSP
10679 or SCM_NCONSP, respectively.
10680
10681 * struct.c, struct.h, srcprop.c, procs.c, procprop.c, print.c,
10682 objects.c. modules.c, goops.c, eval.c, debug.c: Changed all uses
10683 of scm_tc3_cond_gloc and scm_tcs_cons_gloc. See above.
10684
10685 * print.c (scm_iprin1): Remove printing of glocs. Do not try to
10686 tell glocs from structs.
43b83b54 10687
a0f5718e
MV
10688 * gc.c (scm_gc_mark, scm_gc_sweep): Remove handling of glocs.
10689
10690 * eval.c (scm_m_atbind): Make a list of variables, not glocs.
10691 (scm_ceval, scm_deval): For SCM_IM_BIND, fiddle with variables
10692 instead of with glocs.
10693 (EVALCAR): Do not test for glocs.
10694 (scm_lookupcar, scm_lookupcar1): Do not handle glocs in race
10695 condition.
10696 (scm_unmemocar): Do not handle glocs.
10697 (scm_m_atfop): Memoize as a variable, not as a gloc.
10698 (scm_eval_args, scm_deval_args): Do not handle glocs.
10699 (scm_ceval, scm_deval): Likewise.
43b83b54 10700
a0f5718e
MV
10701 * eval.h (SCM_XEVALCAR): Do not test for glocs.
10702 (SCM_GLOC_VAR, SCM_GLOC_VAL, SCM_GLOC_SET_VAL, SCM_GLOC_VAL_LOC):
10703 Removed.
10704
10705 * debug.h, debug.c (scm_make_gloc, scm_gloc_p): Removed.
10706
10707 * dynwind.c (scm_swap_bindings): Likewise.
10708 (scm_dowinds): Updated to recognize lists of variables instead of
10709 lists of glocs.
10710
10711 * __scm.h (SCM_CAUTIOS, SCM_RECKLESS): Update comments.
10712
43b83b54 10713
5b54c4da
MV
10714 * gc_os_dep.c (GC_noop1): Moved into the same #if/#endif context
10715 where it is needed.
43b83b54 10716
3c3db128
GH
107172001-07-25 Gary Houston <ghouston@arglist.com>
10718
10719 * numbers.c (scm_logand, scm_logior, scm_logxor): adjusted the
10720 docstrings to reflect the n-ary implementation.
10721
dd29a169
MV
107222001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
10723
10724 * eval.c (scm_ceval, scm_deval): Use "RETURN" macro when returning
10725 value of a variable, not the plain "return" statement.
10726
f5fe6c2f
MV
107272001-07-25 Marius Vollmer <mvo@zagadka.ping.de>
10728
10729 * eval.c: Allow variables in memoized code (in addition to glocs).
10730 (scm_lookupcar): Handle variables in lost races. Replace symbol
10731 with variable directly, do not make a gloc.
10732 (scm_unmemocar): Rewrite variables using a reverse lookup, just
10733 like glocs.
10734 (scm_ceval, scm_deval): Deal with variables in SCM_IM_SET and in
10735 the main switch.
10736
ee0c7345
MV
107372001-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
10738
6d9ad98a
MV
10739 * variable.c (scm_i_variable_print): Use "value" instead of
10740 "binding" since a binding is the mapping between symbols and
10741 variables, not between variables and their values.
10742
ee0c7345
MV
10743 * tags.h (scm_tc7_variable): New.
10744 * gc.c (scm_gc_mark): Handle scm_tc7_variable objects.
10745 * print.c (scm_iprin1): Likewise.
10746
10747 * variable.h (scm_tc16_variable): Removed.
10748 (SCM_VARIABLEP): Test for new tc7 code.
10749 (scm_i_variable_print): New.
10750 * variable.c (scm_tc16_variable): Removed.
10751 (variable_print): Renamed to scm_i_variable_print and made
10752 non-static.
10753 (variable_equal_p): Removed.
10754 (make_variable): Construct a tc7 object instead of a smob.
10755 (scm_init_variable): Do not register smob.
43b83b54 10756
f3805ebb
MV
107572001-07-22 Marius Vollmer <mvo@zagadka.ping.de>
10758
10759 * tags.h: Include inttypes.h when we have it.
10760
107612001-07-13 Marius Vollmer <mvo@zagadka.ping.de>
10762
10763 * tags.h (SCM_UNBOUND): Make it the 34th isym/iflag, the 33th slot
10764 is taken by the new SCM_IM_CALL_WITH_VALUES.
10765 * print.c (scm_isymnames): Update table accordingly.
43b83b54 10766
6a1677a3
GH
107672001-07-22 Gary Houston <ghouston@arglist.com>
10768
10769 * regex-posix.c (s_scm_regexp_exec): use scm_long2num not
10770 SCM_MAKINUM to convert regoff_t value to SCM.
10771
1bed8c28
GH
107722001-07-21 Gary Houston <ghouston@arglist.com>
10773
10774 * scmsigs.c: include sys/time.h for itimer stuff.
10775
e658215a
RB
107762001-07-19 Rob Browning <rlb@defaultvalue.org>
10777
10778 * gc_os_dep.c (GC_noop1): ifdef out (unused) to quiet warning.
10779
10780 * c-tokenize.lex: add option %nounput to quiet warning.
10781 Add prototype for yylex to quiet warning.
10782
10783 * scmconfig.h.in: add flags for setitimer and getitimer.
10784
10785 * scmsigs.h (scm_init_scmsigs): new prototype.
10786 (scm_init_scmsigs): new prototype.
10787
10788 * scmsigs.c (s_scm_setitimer): new function.
10789 (s_scm_setitimer): new function.
10790
58ade102
MG
107912001-07-18 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10792
10793 * alist.c, arbiters.c, async.h, backtrace.h, boolean.c, chars.c,
10794 chars.h, continuations.h, debug-malloc.h, dynl.c, feature.c,
10795 feature.h, filesys.h, fluids.h, fports.h, gc_os_dep.c,
10796 gdb_interface.h, gh_eval.c, gh_funcs.c, gh_io.c, gh_list.c,
10797 gh_predicates.c, gsubr.c, gsubr.h, guardians.h,
10798 guile-func-name-check.in, guile-snarf-docs-texi.in,
10799 guile-snarf-docs.in, guile-snarf.awk.in, guile-snarf.in,
10800 hashtab.h, iselect.h, keywords.h, lang.c, list.h, load.h,
10801 objprop.c, objprop.h, options.c, options.h, random.h,
10802 regex-posix.h, root.c, root.h, script.c, snarf.h, stackchk.c,
10803 strerror.c, strop.h, strports.h, threads.h, values.c, values.h,
10804 version.c, version.h: Updated copyright notice.
10805
6b80d352
DH
108062001-07-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
10807
10808 * goops.c (sym_layout, sym_vcell, sym_vtable, sym_print,
10809 sym_procedure, sym_setter, sym_redefined, sym_h0, sym_h1, sym_h2,
10810 sym_h3, sym_h4, sym_h5, sym_h6, sym_h7, sym_name,
10811 sym_direct_supers, sym_direct_slots, sym_direct_subclasses,
10812 sym_direct_methods, sym_cpl, sym_default_slot_definition_class,
10813 sym_slots, sym_getters_n_setters, sym_keyword_access, sym_nfields,
10814 sym_environment, scm_sym_change_class): New static variables to
10815 hold predefined symbols.
10816
10817 (build_class_class_slots): Build the list using scm_list_n
10818 instead of cons. Also, slots are already created as lists, thus
10819 making a call to maplist unnecessary.
10820
10821 (scm_class_name, scm_class_direct_supers, scm_class_direct_slots,
10822 scm_class_direct_subclasses, scm_class_direct_methods,
10823 scm_class_precedence_list, scm_class_slots, scm_class_environment,
10824 scm_method_procedure, create_standard_classes, purgatory): Use
10825 predefined symbols.
10826
10827 (build_slots_list, compute_getters_n_setters,
10828 scm_sys_initialize_object, scm_sys_inherit_magic_x,
10829 get_slot_value_using_name, set_slot_value_using_name,
10830 scm_sys_invalidate_method_cache_x, scm_generic_capability_p,
10831 scm_compute_applicable_methods, scm_sys_method_more_specific_p,
10832 make_struct_class): Prefer !SCM_<pred> over SCM_N<pred>.
10833
10834 (scm_sys_prep_layout_x): Minimize variable scopes.
10835
10836 (scm_sys_prep_layout_x, scm_sys_fast_slot_ref,
10837 scm_sys_fast_slot_set_x): Fix signedness.
10838
10839 (go_to_hell, go_to_heaven, purgatory, scm_change_object_class,
10840 lock_cache_mutex, unlock_cache_mutex, call_memoize_method,
10841 scm_memoize_method, scm_wrap_object): Use packing and unpacking
10842 when converting to and from SCM values.
10843
10844 (scm_enable_primitive_generic_x): Add rest argument checking.
10845
10846 (map, filter_cpl, maplist, scm_sys_initialize_object,
10847 scm_sys_prep_layout_x, slot_definition_using_name,
10848 scm_enable_primitive_generic_x, scm_compute_applicable_methods,
10849 call_memoize_method, scm_make, scm_make_class): Prefer explicit
10850 predicates over SCM_N?IMP tests.
10851
10852 (scm_sys_prep_layout_x): Fix typo in error message. Fix type
10853 checking.
10854
10855 (burnin, go_to_hell): Use SCM_STRUCT_DATA instead of the SCM_INST
10856 alias.
10857
63bcad19
DH
108582001-07-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
10859
10860 * fports.c (fport_print): Don't use SCM_C[AD]R for non pairs.
10861
10862 * num2integral.i.c (INTEGRAL2NUM, INTEGRAL2BIG): Fix signedness.
10863
10864 * symbols-deprecated.c (scm_gentemp): Simplify vector test.
10865
10866 * vectors.c (scm_vector_p): Eliminate redundant IMP test.
10867
4d6aae71
ML
108682001-07-12 Michael Livshin <mlivshin@bigfoot.com>
10869
10870 * strings.c (s_scm_string): fix arg position in assert.
10871
4b8ec619
GH
108722001-07-11 Gary Houston <ghouston@arglist.com>
10873
10874 * strports.c (st_write): use memcpy, not strncpy. thanks to
10875 Dale P. Smith.
10876
dbb640bd
TTN
108772001-07-09 Thien-Thi Nguyen <ttn@revel.glug.org>
10878
10879 * alist.c, alloca.c, arbiters.c, async.c, async.h, backtrace.c,
10880 boolean.c, chars.c, continuations.c, coop-defs.h, coop-threads.c,
10881 debug-malloc.h, debug.c, debug.h, dynl.c, dynwind.c, eq.c,
10882 error.c, eval.c, evalext.c, feature.c, feature.h, filesys.c,
10883 filesys.h, fluids.c, fluids.h, fports.c, fports.h, gc.c, gc.h,
10884 gdbint.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
10885 hooks.h, inet_aton.c, init.c, ioext.c, keywords.c, keywords.h,
10886 lang.c, list.c, load.c, macros.c, mallocs.c, memmove.c, modules.c,
10887 net_db.c, numbers.c, numbers.h, objects.c, objprop.c, options.c,
10888 pairs.c, pairs.h, ports.c, ports.h, posix.c, print.c, print.h,
10889 procprop.c, procs.c, procs.h, properties.c, putenv.c, ramap.c,
10890 random.c, random.h, read.c, regex-posix.c, regex-posix.h, root.c,
10891 root.h, scmsigs.c, script.c, simpos.c, smob.c, snarf.h, socket.c,
10892 sort.c, srcprop.c, srcprop.h, stackchk.c, stacks.c, stacks.h,
10893 stime.c, strerror.c, strings.c, strings.h, strop.c, strorder.c,
10894 strports.c, struct.c, struct.h, symbols-deprecated.c, symbols.c,
10895 symbols.h, tags.h, threads.c, threads.h, throw.c, unif.c, unif.h,
10896 variable.c, variable.h, vectors.c, vectors.h, version.c, vports.c,
10897 weaks.c, weaks.h: Remove "face-lift" comment.
10898
fd6c6321
RB
108992001-07-08 Rob Browning <rlb@defaultvalue.org>
10900
10901 * .cvsignore: add stamp-h.in.
10902
f91e4547
MG
109032001-07-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10904
10905 * hooks.c (scm_make_hook, scm_add_hook_x),
10906 (scm_remove_hook_x, scm_reset_hook_x, scm_run_hook): Added return
10907 value info to the docstrings.
10908
7beabedb
MG
109092001-07-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10910
10911 Some more compatibility patches for Windows.
dbb640bd 10912
7beabedb
MG
10913 * posix.c (getlogin): getlogin() implementation for Windows.
10914
10915 * backtrace.c, ioext.c: Include <stdio.h>.
10916
10917 * unif.c, script.c, rw.c, error.c: Include <io.h>, if it does
10918 exist.
10919
10920 * cpp_sig_symbols.in: Added SIGBREAK.
10921
0d0560d0
MV
109222001-07-01 Marius Vollmer <mvo@zagadka.ping.de>
10923
10924 * strports.c (scm_read_0str, scm_eval_0str): Call
10925 scm_c_read_string and scm_c_eval_string respectively, not
10926 themselves. Thanks to Dale P. Smith!
10927
9a97e362
DH
109282001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10929
10930 * unif.c (scm_array_set_x): The variable args does not
10931 necessarily have to be a list. Further, got rid of a redundant
10932 SCM_NIMP test.
10933
592996c9
DH
109342001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10935
10936 * list.c (SCM_I_CONS): Make sure the cell type is initialized
10937 last.
10938
10939 * gc.c (s_scm_map_free_list, scm_igc, scm_gc_sweep,
f91e4547 10940 init_heap_seg): Fixed signedness.
592996c9
DH
10941
10942 (init_heap_seg): Replaced strange for-loop with a while loop.
10943
10944 * weaks.h (WEAKSH, SCM_WEAKS_H): Rename <foo>H to SCM_<foo>_H.
10945
10946 (SCM_WVECTP): Prefer !SCM_<pred> over SCM_N<pred>.
10947
10948 The following patch adds conservative marking for the elements of
10949 free or allocated cells.
10950
10951 * gc.c (allocated_mark, heap_segment): New static functions.
10952
10953 (which_seg): Deleted, since the functionality is now provided by
10954 function heap_segment.
10955
10956 (map_free_list): Use heap_segment instead of which_seg.
10957
10958 (MARK): If cell debugging is disabled, mark free cells
10959 conservatively.
10960
10961 (scm_mark_locations, scm_cellp): Extracted the search for the
10962 heap segment of a SCM value into function heap_segment.
10963
10964 (scm_init_storage): Allocated cells must be marked
10965 conservatively.
10966
10967 * gc.[ch] (scm_gc_mark_cell_conservatively): New function.
10968
10969 The following patch changes the representation of weak vectors to
10970 double cells instead of using an extension of the vector's
10971 allocated memory.
10972
10973 * gc.c (MARK): Use SCM_SET_WVECT_GC_CHAIN instead of assigning to
10974 the result of SCM_WVECT_GC_CHAIN.
10975
10976 (scm_gc_sweep): Weak vectors don't have extra fields any more.
10977
10978 * weaks.c (allocate_weak_vector): New static function. It does
10979 not patch any previously created vector object during the
10980 construction of a weak vector, and thus doesn't need to switch
10981 off interrupts during vector creation.
10982
10983 (scm_make_weak_vector, scm_make_weak_key_hash_table,
10984 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
10985 Use allocate_weak_vector to provide the new weak vector object.
10986
10987 * weaks.h (SCM_WVECT_TYPE, SCM_SET_WVECT_TYPE,
10988 SCM_SET_WVECT_GC_CHAIN): New macros. The weak vector subtype is
10989 now stored in the double cell.
10990
10991 (SCM_IS_WHVEC, SCM_IS_WHVEC_V, SCM_IS_WHVEC_B, SCM_IS_WHVEC_ANY):
10992 Use SCM_WVECT_TYPE.
10993
10994 (SCM_WVECT_GC_CHAIN): The weak objects are now chained together
10995 using an entry of the double cell.
10996
4dadf664
TTN
109972001-06-30 Thien-Thi Nguyen <ttn@revel.glug.org>
10998
10999 * stamp-h.in: bye bye
11000
02202352
MV
110012001-06-30 Marius Vollmer <mvo@zagadka.ping.de>
11002
11003 * gh_eval.c (gh_eval_str): Use scm_c_eval_string instead of
11004 scm_eval_0str.
11005
11006 * load.c, load.h (scm_c_primitive_load,
11007 scm_c_primitive_load_path): New.
11008
11009 * strports.c, strports.h (scm_c_read_string): Renamed from
11010 scm_read_0str. Also, added "const" qualifier to argument.
11011 (scm_c_eval_string): Renamed from scm_eval_0str.
11012 (scm_read_0str, scm_eval_0str): Deprecated.
11013
df1ad0d1
MG
110142001-06-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11015
11016 * fluids.c (scm_c_with_fluid): Use scm_list_1() instead of
11017 SCM_LIST1.
11018
1afff620
KN
110192001-06-28 Keisuke Nishida <kxn30@po.cwru.edu>
11020
11021 * list.h (scm_list_1, scm_list_2, scm_list_3, scm_list_4, scm_list_5,
11022 scm_list_n): New functions.
11023 (SCM_LIST0, SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5,
11024 SCM_LIST6, SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify): Deprecated.
11025 (lots of files): Use the new functions.
4dadf664 11026
1afff620
KN
11027 * goops.c (CALL_GF1, CALL_GF2, CALL_GF3, CALL_GF4): Use scm_call_N.
11028
11029 * strings.c: #include "libguile/deprecation.h".
11030
b858464a
MG
110312001-06-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11032
11033 * read.c (scm_lreadr): When reading a hash token, check for a
11034 user-defined hash procedure first, so that overriding the builtin
11035 hash characters is possible (this was needed for implementing
11036 SRFI-4's read synax `f32(...)').
4dadf664 11037
b858464a
MG
11038 * num2integral.i.c: Use scm_t_signed_bits instead of scm_t_bits,
11039 because the latter is unsigned now and breaks comparisons like
11040 (n < (scm_t_signed_bits)MIN_VALUE).
4dadf664 11041
d95c0b76
NJ
110422001-06-26 Neil Jerram <neil@ossau.uklinux.net>
11043
11044 * eval.h, eval.c (scm_call_4): New function.
11045
11046 * eval.c (SCM_APPLY, SCM_CEVAL, ENTER_APPLY): Call trap handlers
11047 directly rather than dispatching to them via scm_ithrow and a lazy
11048 catch.
4dadf664 11049
d95c0b76
NJ
11050 * eval.c (scm_evaluator_trap_table), eval.h (SCM_ENTER_FRAME_HDLR,
11051 SCM_APPLY_FRAME_HDLR, SCM_EXIT_FRAME_HDLR): Add three new options
11052 for trap handler procedures.
11053
11054 * debug.h (SCM_RESET_DEBUG_MODE): Add checks for trap handler
11055 procedures not being #f.
11056
30e3be5a
ML
110572001-06-27 Michael Livshin <mlivshin@bigfoot.com>
11058
11059 * Makefile.am (c-tokenize.c): add rule to generate it.
11060 (EXTRA_DIST): add c-tokenize.lex, so it gets distributed.
11061
11062 filter-doc-snarfage.c: remove.
11063
82893676
MG
110642001-06-26 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11065
11066 * ports.c (scm_output_port_p): Use result of SCM_COERCE_OUTPORT.
11067
11068 The following set of changes makes compiling Guile under various
11069 Windows compilers easier. Compilation under GNU systems should
11070 not be affected at all.
11071
11072 Thanks to Stefan Jahn for all necessary information, patches and
11073 testing.
4dadf664 11074
82893676
MG
11075 * posix.c: Conditialize getpwent, getgrent, kill, getppid, getuid,
11076 getpgrp, ttyname, primitive-fork and some header inclusion for
11077 Windows.
11078
11079 * random.c: Define M_PI, if not predefined and use __int64 for
11080 LONG64 under Windows.
11081
11082 * scmsigs.c: Emulate some functions (alarm, sleep, kill) under
11083 Windows and conditionalize some signal names.
11084
4dadf664 11085 * socket.c (scm_getsockopt): Added missing comma.
82893676
MG
11086 Include socket library header under Windows.
11087
11088 * stime.c (CLKTCK): Add cast to int, to make it compile under
11089 Windows.
11090
11091 * ports.c (truncate): New function, compiled only under Windows.
11092
11093 * net_db.c: Do not declare errno under Windows.
11094
11095 * iselect.h, inet_aton.c: Include socket library headers under
11096 Windows.
11097
11098 * guile.c (inner_main): Under Windows, initialize socket library
11099 and initialize gdb_interface data structures.
11100
11101 * gdb_interface.h: Under Windows, gdb_interface cannot be
11102 initialized statically. Initialize at runtime instead.
11103
11104 * fports.c (write_all): ssize_t -> size_t.
11105 (fport_print): Conditionalize call to ttyname().
11106 (getflags): New function, compiled only under Windows.
11107
11108 * filesys.c: Conditionalize inclusion of <pwd.h>. Conditionalize
11109 primitives chown, link, fcntl.
11110 (scm_basename, scm_dirname): Under Windows, handle \ as well as /
11111 as path seperator.
11112
11113 * backtrace.c: Include <io.h> under Windows.
11114
11115 * async.h (ASYNCH, SCM_ASYNC_H): Rename <foo>H to SCM_<foo>_H.
11116
11117 * _scm.h: Added preprocessor conditional for __MINGW32__ for errno
11118 declaration.
11119
fdc28395
KN
111202001-06-27 Keisuke Nishida <kxn30@po.cwru.edu>
11121
11122 * eval.c (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
11123 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): New functions.
11124 * eval.h (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
11125 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): Declared.
11126 * async.c (scm_run_asyncs), coop-threads.c (scheme_body_bootstrip,
11127 scheme_handler_bootstrip), debug.c (with_traps_inner), dynwind.c
11128 (scm_dynamic_wind, scm_dowinds), environments.c
11129 (import_environment_conflict), eval.c (scm_macroexp, scm_force,
11130 scm_primitive_eval_x, scm_primitive_eval), fluids.c (apply_thunk),
11131 goops.c (GETVAR, purgatory, make_class_from_template,
11132 scm_ensure_accessor), hashtab.c (scm_ihashx, scm_sloppy_assx,
11133 scm_delx_x, fold_proc), hooks.c (scm_c_run_hook), load.c
11134 (scm_primitive_load), modules.c (scm_resolve_module,
11135 scm_c_define_module, scm_c_use_module, scm_c_export,
11136 module_variable, scm_eval_closure_lookup, scm_sym2var,
11137 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
11138 ports.c (scm_port_for_each), print.c (scm_printer_apply),
11139 properties.c (scm_primitive_property_ref), ramap.c (ramap,
11140 ramap_cxr, rafe, scm_array_index_map_x, read.c (scm_lreadr),
11141 scmsigs.c (sys_deliver_signals), sort.c (applyless), strports.c
11142 (scm_object_to_string, scm_call_with_output_string,
11143 scm_call_with_input_string), throw.c (scm_body_thunk,
11144 scm_handle_by_proc, hbpca_body), unif.c (scm_make_shared_array,
11145 scm_make_shared_array), vports.c (sf_flush, sf_write,
11146 sf_fill_input, sf_close): Use one of the above functions.
11147 * goops.c, hashtab.c, scmsigs.c, sort.c: #include "libguile/root.h".
11148
36284627
DH
111492001-06-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
11150
11151 * filesys.c (scm_close), ports.c (scm_close_port,
11152 scm_port_closed_p), strop.c (scm_string_null_p): Use SCM_BOOL
11153 instead of SCM_NEGATE_BOOL.
11154
11155 * filesys.c (scm_stat): Clean up type dispatch.
11156
11157 * filesys.c (scm_stat), ports.c (scm_input_port_p,
11158 scm_output_port_p): Get rid of redundant IM type check.
11159
11160 * filesys.c (scm_readdir, scm_getcwd, scm_readlink), gh_data.c
11161 (gh_str2scm), load.c (scm_primitive_load, scm_internal_parse_path,
11162 scm_search_path), net_db.c (scm_gethost, scm_getnet, scm_getproto,
11163 scm_return_entry), numbers.c (scm_number_to_string), objects.c
11164 (scm_make_subclass_object), ports.c (scm_port_mode), read.c
11165 (scm_lreadr), simpos.c (scm_getenv), socket.c (scm_inet_ntoa,
11166 scm_addr_vector), stime.c (scm_strftime), strings.c
11167 (scm_makfromstrs, scm_makfrom0str, scm_substring), strings.h
11168 (SCM_STRING_COERCE_0TERMINATION_X), strop.c (string_copy,
11169 scm_string_split), strports.c (scm_strport_to_string), symbols.c
11170 (scm_symbol_to_string), vports.c (sf_write): Use scm_mem2string
11171 instead of scm_makfromstr.
11172
11173 * net_db.c (scm_sethost, scm_setnet, scm_setproto, scm_setserv),
11174 ports.c (scm_close_all_ports_except), read.c (scm_lreadr,
11175 scm_read_hash_extend), stime.c (scm_strftime), strings.c
11176 (scm_string_append, scm_string), strings.h (SCM_STRINGP,
11177 SCM_STRING_COERCE_0TERMINATION_X, SCM_RWSTRINGP), strop.c
11178 (string_capitalize_x): Prefer explicit type check over SCM_N?IMP,
11179 !SCM_<pred> over SCM_N<pred>.
11180
11181 * strings.[ch] (scm_makfromstr): Deprecated.
11182
11183 (scm_mem2string): New function, replaces scm_makfromstr.
11184
11185 * strings.c (scm_substring), strop.c (string_copy,
11186 scm_string_split), strports.c (scm_strport_to_string), symbols.c
11187 (scm_symbol_to_string): Fix gc problem.
11188
11189 * strings.h (STRINGSH, SCM_STRINGS_H): Rename <foo>H to
11190 SCM_<foo>_H.
11191
11192 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Eliminate
11193 warning about comparing signed and unsigned values. This fix is
11194 not optimal, since it won't work reliably if sizeof (c_start) >
11195 sizeof (size_t) or sizeof (c_end) > sizeof (size_t). A better
11196 solution is to define this macro as an inline function, thus
11197 allowing to specifiy the types of c_start and c_end.
11198
13dcb666
DH
111992001-06-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
11200
11201 * debug.h (SCM_DEBUGOBJ_FRAME): Deliver result as a
11202 scm_t_debug_frame*.
11203
11204 * debug.h (DEBUGH, SCM_DEBUG_H), stacks.h (STACKSH, SCM_STACKSH):
11205 Rename <foo>H to SCM_<foo>_H.
11206
11207 * stacks.c (NEXT_FRAME, narrow_stack): Prefer explicit type check
11208 over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
11209
11210 (narrow_stack): Make i unsigned. Don't use side-effecting
11211 operations in conditions.
11212
11213 (narrow_stack, scm_make_stack, scm_stack_id,
11214 scm_last_stack_frame): Get rid of redundant SCM_N?IMP checks.
11215
11216 (scm_make_stack, scm_stack_id, scm_last_stack_frame): Clean up
11217 type dispatch. No need to cast result of SCM_DEBUGOBJ_FRAME any
11218 more.
11219
11220 (scm_stack_ref, scm_frame_previous, scm_frame_next): Fix
11221 signedness.
11222
ea2c3968 11223 (scm_last_stack_frame): Remove bogus `;'.
13dcb666
DH
11224
11225 * stacks.h (SCM_FRAMEP): Fix type check.
11226
ac13d9d2
ML
112272001-06-25 Michael Livshin <mlivshin@bigfoot.com>
11228
ee0c0e03
ML
11229 * Makefile.am (MAINTAINERCLEANFILES): be sure to remove
11230 c-tokenize.c when doing maintainer-clean.
11231
ac13d9d2
ML
11232 * snarf.h (SCM_SNARF_DOCS): change the "grammar" slightly.
11233
11234 * guile-snarf-docs.in, guile-snarf-docs-texi.in: rewrite &
11235 simplify.
11236
11237 * eval.c: all hash signs are in column 0.
11238
11239 * Makefile.am (guile_filter_doc_snarfage): build using
11240 c-tokenize.c, not filter-doc-snarfage.c.
11241 rearrange snarfing dependencies a bit.
11242
11243 * c-tokenize.lex: new file.
11244
16be44e5
MV
112452001-06-25 Marius Vollmer <mvo@zagadka.ping.de>
11246
11247 * srcprop.h, srcprop.c (scm_srcprops_to_plist): Renamed from
11248 scm_t_srcpropso_plist. See the big type renaming.
11249 * coop-defs.h (scm_mutex_trylock, scm_cond_timedwait): Likewise.
11250 Thanks to Seth Alves!
4dadf664 11251
16be44e5
MV
11252 * numbers.c (SIZE_MAX, PTRDIFF_MIN, PTRDIFF_MAX): Only define when
11253 they aren't defined already.
11254
5843e5c9
DH
112552001-06-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
11256
11257 * backtrace.c (display_backtrace_body): Use SCM_VALIDATE_STACK
11258 and SCM_VALIDATE_OPOUTPORT instead of SCM_ASSERT. Fix signedness
11259 problem.
11260
11261 * backtrace.c (display_expression, scm_set_print_params_x,
11262 display_application, display_frame, scm_backtrace), numbers.c
11263 (scm_istring2number), objects.c (scm_class_of,
11264 scm_mcache_lookup_cmethod, scm_mcache_compute_cmethod): Prefer
11265 explicit type check over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
11266
11267 * fluids.c (scm_fluid_ref, scm_fluid_set_x): Fluid numbers are
11268 always positive.
11269
11270 * numbers.c (scm_i_mkbig): Remove unnecessary casts, remove
11271 unnecessary SCM_DEFER_INTS, SCM_ALLOW_INTS.
11272
11273 * objects.c (scm_class_of): Type fix.
11274
11275 (scm_mcache_lookup_cmethod): Improved comment, simplified,
11276 eliminated goto.
11277
11278 * pairs.h (scm_error_pair_access): The function can return if
11279 called recursively.
11280
6b41a313
MG
112812001-06-20 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11282
11283 * init.c (scm_init_guile_1): Removed initialization of tag.c.
11284
11285 * gdbint.c, init.c: Removed inclusion of tag.h.
11286
11287 * tag.h, tag.c: Removed files.
11288
11289 * Makefile.am: Removed tag.{h,c,doc,x} in various places.
11290
fbbdb121
GH
112912001-06-20 Gary Houston <ghouston@arglist.com>
11292
11293 * deprecation.c, extensions.c, rw.c: include string.h.
11294
72c17ed0
GH
112952001-06-19 Gary Houston <ghouston@arglist.com>
11296
11297 * filter-doc-snarfage.c (process): added ungetc in
11298 MULTILINE_COOKIE case since otherwise it fails when there's no
11299 space between the '(' and the quote of the following string
11300 (gcc 3.0).
11301
4ff9f825
MV
113022001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
11303
4927dd28
MV
11304 Throughout: replace "scm_*_t" with "scm_t_*", except "scm_lisp_t".
11305
b629af45
MV
113062001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
11307
11308 * unif.h (SCM_ARRAY_NDIM): Shift then cast so that no sign
0f002b27
MV
11309 extension takes place.
11310 * strings.h (SCM_STRING_LENGTH): Likewise.
11311 (SCM_STRING_MAX_LENGTH): Use unsigned numbers.
4dadf664 11312
4ff9f825
MV
11313 * __scm.h (ptrdiff_t): Typedef to long when configure didn't find
11314 it.
11315
11316 * tags.h: Include <stdint.h> when we have it.
11317 (scm_bits_t): Changed to be a unsigned type. Use uintptr_t when
11318 available. Else use "unsigned long".
11319 (scm_signed_bits_t): New.
11320
11321 * numbers.h (SCM_SRS): Cast shiftee to scm_signed_bits_t.
11322 (SCM_INUM): Cast result to scm_signed_bits_t.
11323
58bee6a8
TTN
113242001-06-13 Thien-Thi Nguyen <ttn@revel.glug.org>
11325
11326 * mkstemp.c: Update path to #include file scmconfig.h.
11327 Thanks to Golubev I. N.
11328
00d8d838
DH
113292001-06-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
11330
11331 * struct.h (SCM_STRUCT_VTABLE_FLAGS): New macro.
11332
ea2c3968 11333 * goops.h (SCM_NUMBER_OF_SLOTS): Removed bogus `\' at the end of
00d8d838
DH
11334 the macro definition.
11335
11336 (SCM_CLASSP, SCM_INSTANCEP, SCM_PUREGENERICP, SCM_ACCESSORP,
11337 SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Use SCM_STRUCT_VTABLE_FLAGS
11338 instead of SCM_INST_TYPE.
11339
11340 (SCM_ACCESSORP, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Make sure
11341 the object is a struct before accessing its struct flags.
11342
11343 (SCM_INST_TYPE, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Deprecated.
11344
495c67e5
GH
113452001-06-10 Gary Houston <ghouston@arglist.com>
11346
11347 * rdelim.c (scm_init_rdelim_builtins): don't try to activate the
11348 (ice-9 rdelim) module in (guile) and (guile-user). it didn't
11349 work reliably anymore. try it from boot-9.scm instead.
11350
6a9003d3
MV
113512001-06-09 Marius Vollmer <mvo@zagadka.ping.de>
11352
11353 * ports.c (scm_lfwrite): Maintain columnd and row count in port.
9a5fa6e9 11354 Thanks to Matthias Köppe!
58bee6a8 11355
47bcd646
ML
113562001-06-08 Michael Livshin <mlivshin@bigfoot.com>
11357
a88ff5b6
ML
11358 * snarf.h, filter-doc-snarfage.c: more changes to cope with
11359 space-happy C preprocessors.
11360
47bcd646 11361 * filter-doc-snarfage.c, guile-snarf.in: try to cope with spaces
9a5fa6e9 11362 inside cookies. thanks to Matthias Köppe!
47bcd646 11363
bab246f3
DH
113642001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
11365
11366 * keywords.c (keyword_print): Don't use SCM_C[AD]R to access
11367 keywords. Fix gc protection.
11368
11369 * objects.c (scm_mcache_lookup_cmethod): Don't use side effecting
11370 operations in macro calls.
11371
11372 * pairs.c (scm_error_pair_access): Avoid recursion.
11373
11374 Thanks to Matthias Koeppe for reporting the bugs that correspond
11375 to the following set of patches.
11376
11377 * unif.c (scm_bit_set_star_x, scm_bit_invert_x), vectors.h
11378 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Obtain the
11379 bitvector base address using SCM_BITVECTOR_BASE.
11380
11381 * unif.h (SCM_BITVECTOR_BASE): Return the base address as an
11382 unsigned long*.
11383
dcb410ec
DH
113842001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
11385
11386 * goops.c (SCM_CLASS_REDEF): Removed.
11387
11388 * vectors.h (VECTORSH, SCM_VECTORS_H): Renamed <foo>H to
11389 SCM_<foo>_H.
11390
11391 Thanks to Matthias Koeppe for reporting the bugs that correspond
11392 to the following set of patches.
11393
11394 * goops.c (scm_sys_prep_layout_x, scm_basic_basic_make_class,
11395 create_basic_classes, scm_sys_fast_slot_set_x, set_slot_value,
11396 scm_sys_allocate_instance, clear_method_cache,
11397 scm_sys_invalidate_method_cache_x, scm_make,
11398 create_standard_classes, scm_make_port_classes, scm_make_class,
11399 scm_add_slot): Use SCM_SET_SLOT to set slot values.
11400
11401 (prep_hashsets): Use SCM_SET_HASHSET to set class hash values.
11402
11403 * goops.h (SCM_SET_SLOT, SCM_SET_HASHSET): New macros.
11404
11405 * ramap.c (BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
11406 UNARY_ELTS_CODE): Remove bogus break statement.
11407
11408 * vectors.h (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR):
11409 Don't access bit vectors elements as SCM objects.
11410
11411 * weaks.c (scm_make_weak_vector, scm_make_weak_key_hash_table,
11412 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
11413 Don't assign to an unpacked value.
11414
e81d98ec
DH
114152001-06-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
11416
11417 * __scm.h (SCM_NORETURN): Moved here from error.h.
11418
11419 (SCM_UNUSED): New macro.
11420
11421 (SCM_DEBUG_PAIR_ACCESSES): New macro.
11422
11423 * backtrace.c (display_error_handler), continuations.c
11424 (continuation_print), debug.c (debugobj_print), dynwind.c
11425 (guards_print), environments.c (observer_print,
11426 core_environments_finalize, leaf_environment_cell,
11427 leaf_environment_print, eval_environment_print,
11428 eval_environment_observer, import_environment_define,
11429 import_environment_undefine, import_environment_print,
11430 import_environment_observer, export_environment_define,
11431 export_environment_undefine, export_environment_print,
11432 export_environment_observer), eval.c (scm_m_quote, scm_m_begin,
11433 scm_m_if, scm_m_set_x, scm_m_and, scm_m_or, scm_m_case,
11434 scm_m_cond, scm_m_lambda, scm_m_letstar, scm_m_do, scm_m_delay,
11435 scm_m_letrec1, scm_m_apply, scm_m_cont, scm_m_nil_cond,
11436 scm_m_nil_ify, scm_m_t_ify, scm_m_0_cond, scm_m_0_ify,
11437 scm_m_1_ify, scm_m_atfop, scm_m_at_call_with_values), evalext.c
11438 (scm_m_generalized_set_x), fluids.c (fluid_print), fports.c
11439 (fport_print), gc.c (gc_start_stats, scm_remember_upto_here_1,
11440 scm_remember_upto_here_2, scm_remember_upto_here, mark_gc_async),
11441 gh_init.c (gh_standard_handler), goops.c (get_slot_value,
11442 set_slot_value, test_slot_existence, scm_change_object_class,
11443 scm_m_atslot_ref, scm_m_atslot_set_x, make_struct_class,
11444 default_setter), guardians.c (guardian_print, guardian_gc_init,
11445 guardian_zombify, whine_about_self_centered_zombies), guile.c
11446 (inner_main), init.c (stream_handler), keywords.c (keyword_print),
11447 mallocs.c (malloc_print), numbers.c (scm_print_real,
11448 scm_print_complex, scm_bigprint), ports.c (flush_port_default,
11449 end_input_default, scm_port_print, fill_input_void_port,
11450 write_void_port), root.c (root_print), smob.c (scm_mark0,
11451 scm_free0, scm_smob_print, scm_smob_apply_1_error,
11452 scm_smob_apply_2_error, scm_smob_apply_3_error, free_print),
11453 stime.c (restorezone), strings.c (scm_makfromstr), struct.c
11454 (scm_struct_free_0, scm_struct_free_standard,
11455 scm_struct_free_entity, scm_struct_gc_init, scm_free_structs),
11456 throw.c (jmpbuffer_print, lazy_catch_print, ss_handler,
11457 scm_handle_by_throw, scm_ithrow), weaks.c
11458 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
11459 scm_scan_weak_vectors), ramap.c (scm_array_fill_int), filesys.c
11460 (scm_dir_print): Mark unused parameters with SCM_UNUSED.
11461
11462 * error.h (SCM_NORETURN): Moved to __scm.h.
11463
11464 * error.h (ERRORH, SCM_ERROR_H), pairs.h (PAIRSH, SCM_PAIRS_H):
11465 Renamed <foo>H to SCM_<foo>_H.
11466
11467 * gc.c (debug_cells_gc_interval): New static variable.
11468
11469 (scm_assert_cell_valid): If selected by the user, perform
11470 additional garbage collections.
11471
11472 (scm_set_debug_cell_accesses_x): Extended to let the user specify
11473 if additional garbage collections are desired.
11474
11475 (mark_gc_async): If additional garbage collections are selected
11476 by the user, don't call the after-gc-hook. Instead require the
11477 user to run the hook manually.
11478
11479 * pairs.c (scm_error_pair_access): New function. Only compiled
11480 if SCM_DEBUG_PAIR_ACCESSES is set to 1.
11481
11482 * pairs.h (SCM_VALIDATE_PAIR): New macro.
11483
11484 (SCM_CAR, SCM_CDR, SCM_SETCAR, SCM_SETCDR): If
11485 SCM_DEBUG_PAIR_ACCESSES is set to 1, make sure that the argument
11486 is a real pair object. (Glocs are also accepted, but that may
11487 change.) If not, abort with an error message.
11488
17fa3fcf
DH
114892001-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
11490
11491 * eval.c (SCM_VALIDATE_NON_EMPTY_COMBINATION): New macro.
11492
11493 (SCM_CEVAL, SCM_APPLY): Replace calls to SCM_EVALIM2 with calls
11494 to SCM_VALIDATE_NON_EMPTY_COMBINATION.
11495
feeedafb
MV
114962001-06-05 Marius Vollmer <mvo@zagadka.ping.de>
11497
11498 * extensions.c (scm_c_register_extension): Allow NULL as library
11499 name.
11500 (load_extension): Ignore NULL library names when comparing.
58bee6a8 11501
feeedafb
MV
11502 * hash.c (scm_hasher): Use SCM_UNPACK in the case labels so that
11503 non-pointers are being compared. Thanks to Alexander Klimov!
11504
4bcdfe46
GH
115052001-06-04 Gary Houston <ghouston@arglist.com>
11506
11507 * rw.c (scm_write_string_partial): new procedure implementing
11508 write-string/partial in (ice-9 rw).
11509 * rw.h: declare scm_write_string_partial.
58bee6a8 11510
f480396b
MV
115112001-06-04 Marius Vollmer <mvo@zagadka.ping.de>
11512
feeedafb
MV
11513 * keywords.c (keyword_print): Substract 1 from length of symbol
11514 name, accounting for the silly dash.
11515
11516 * dynl.c (scm_registered_modules, scm_clear_registered_modules):
11517 Do not emit deprecation warning.
11518
f480396b
MV
11519 Added exception notice to all files.
11520
11521 * dynl.c: Include "deprecation.h".
11522
c794483c
MV
115232001-06-03 Marius Vollmer <mvo@zagadka.ping.de>
11524
11525 * dynl.c (scm_register_module_xxx, scm_registered_modules,
11526 scm_clear_registered_modules): Deprecated.
11527
9454d8d5
RB
115282001-06-02 Rob Browning <rlb@cs.utexas.edu>
11529
11530 * .cvsignore: add guile_filter_doc_snarfage guile-snarf-docs
11531 guile-snarf-docs-texi.
11532
11533 * fports.c: HAVE_ST_BLKSIZE changed to
11534 HAVE_STRUCT_STAT_ST_BLKSIZE.
11535 (scm_fport_buffer_add): HAVE_ST_BLKSIZE changed to
11536 HAVE_STRUCT_STAT_ST_BLKSIZE.
11537
11538 * filesys.c (scm_stat2scm): HAVE_ST_RDEV changed to
11539 HAVE_STRUCT_STAT_ST_RDEV.
11540 (scm_stat2scm): HAVE_ST_BLKSIZE changed to
11541 HAVE_STRUCT_STAT_ST_BLKSIZE.
11542 (scm_stat2scm): HAVE_ST_BLOCKS changed to
11543 HAVE_STRUCT_STAT_ST_BLOCKS.
11544
114f9bab
MV
115452001-06-02 Marius Vollmer <mvo@zagadka.ping.de>
11546
b0c16cd9
MV
11547 * strports.c (scm_eval_string): Use scm_primitive_eval_x instead
11548 of scm_eval_x to allow module changes between the forms in the
11549 string. Set/restore module using scm_c_call_with_current_module.
11550
114f9bab
MV
11551 * mkstemp.c: New file, slightly modified from libiberties
11552 mkstemps.c.
11553
c99f9605
ML
115542001-05-31 Michael Livshin <mlivshin@bigfoot.com>
11555
11556 * guile-snarf-docs.in, guile-snarf-docs-texi.in,
11557 filter-doc-snarfage.c: new files.
11558
11559 * Makefile.am: add stuff to [build,] use and distribute
11560 guile-snarf-docs, guile-snarf-docs-texi, guile_filter_doc_snarfage.
11561
11562 * guile-snarf.in: grok the new snarf output.
11563
11564 * snarf.h: make the output both texttools- and `read'-friendly.
11565
47bcd646
ML
11566 * guile-doc-snarf.in: reimplement in terms of guile-snarf and
11567 guile-snarf-docs. (should also deprecate, I guess. maybe not).
c99f9605 11568
7eb5d7b2
MV
115692001-05-31 Marius Vollmer <mvo@zagadka.ping.de>
11570
11571 * print.c (scm_simple_format): Support "~~" and "~%". Signal
11572 error for unsupported format controls and for superflous
ec2667f0 11573 arguments. Thanks to Daniel Skarda!
7eb5d7b2
MV
11574
11575 * print.h, print.c (scm_print_symbol_name): Factored out of
11576 scm_iprin1.
11577 (scm_iprin1): Call it.
58bee6a8 11578
7eb5d7b2
MV
11579 * keywords.c (keyword_print): Use scm_print_symbol_name so that
11580 weird names are printed correctly.
11581
11582 * print.c (scm_print_symbol_name): Symbols whose name starts with
11583 `#' or `:' or ends with `:' are considered weird.
11584
609c3d30
MG
115852001-05-30 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11586
11587 * numbers.c (scm_difference, scm_divide): Clarified comments for -
11588 and /.
11589
115902001-05-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11591
11592 * debug.h: Removed prototype for scm_eval_string.
11593
8d09eb04
MG
115942001-05-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11595
11596 * symbols.c (scm_gensym): Fix buffer overrun (try `(gensym
58bee6a8 11597 (make-string 2000 #\!))' in an older version).
8d09eb04
MG
11598
11599 Change strncpy to memcpy to allow embedded NUL characters in
11600 symbol prefix.
11601
dd85ce47
ML
116022001-05-28 Michael Livshin <mlivshin@bigfoot.com>
11603
fde50407
ML
11604 * hooks.c (scm_create_hook): deprecated.
11605 (make_hook): deleted.
11606 (scm_make_hook): all the hook creation code is now here.
11607
11608 * gc.c (scm_init_gc): don't call `scm_create_hook'. instead make
11609 a hook, make it permanent, and do a `scm_c_define' on it.
11610
dd85ce47
ML
11611 * strop.c (s_scm_string_capitalize_x): fix docstring quoting.
11612
11613 * socket.c (s_scm_inet_pton): fix docstring quoting.
11614 (s_scm_inet_ntop): ditto.
11615
11616 * num2integral.i.c (INTEGRAL2NUM): cast to fix a warning.
11617
11618 * hashtab.c (scm_internal_hash_fold): fix argument position in
11619 SCM_ASSERT.
11620
11621 * environments.c (s_scm_import_environment_set_imports_x): fix
11622 argument position in SCM_ASSERT.
11623
11624 * debug.c (s_scm_make_gloc): fix SCM packing/unpacking.
11625 (s_scm_make_iloc): ditto.
11626
729dbac3
DH
116272001-05-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
11628
11629 * __scm.h (SCM_DEBUG_TYPING_STRICTNESS): Make 1 the default.
11630
11631 * eval.c (promise_print): Read the promise's value as an object.
11632
11633 (SCM_CEVAL): Don't perform side-effecting operations in macro
11634 parameters.
11635
11636 * eval.h (SCM_EVALIM2): Fix the typing strictness of the
11637 conditional expression.
11638
11639 * gc.c (scm_master_freelist, scm_master_freelist2): Added missing
11640 initializer.
11641
11642 * gh_data.c (gh_set_substr): Removed redundant unsigned >= 0
11643 text, removed redundant computation of effective_length and fixed
11644 the overflow check.
11645
11646 * goops.c (test_slot_existence): Use SCM_EQ_P to compare SCM
11647 values.
11648
11649 (wrap_init): Don't use SCM_C[AD]R for non pairs.
11650
11651 (hell): Make it a scm_bits_t pointer rather than a SCM pointer.
11652
11653 * goops.c (scm_sys_modify_class), strports.c (st_resize_port),
11654 struct.h (SCM_SET_STRUCT_PRINTER): Store unpacked values.
11655
11656 * goops.h (SCM_ACCESSORS_OF, SCM_SLOT): Return a SCM value.
11657
11658 * goops.h (GOOPSH, SCM_GOOPS_H), modules.h (MODULESH,
11659 SCM_MODULES_H), objects.h (OBJECTSH, SCM_OBJECTS_H), struct.h
11660 (STRUCTH, SCM_STRUCT_H), symbols.h (SYMBOLSH, SCM_SYMBOLS_H),
11661 __scm.h (__SCMH, SCM___SCM_H): Change <foo>H to SCM_<foo>_H.
11662
11663 * modules.[ch] (scm_module_tag): Make it a scm_bits_t value.
11664
11665 * objects.h (SCM_SET_CLASS_INSTANCE_SIZE): Fixed typing.
11666
ea2c3968 11667 * ramap.c (ramap_rp): Removed bogus `;'.
729dbac3
DH
11668
11669 * sort.c (scm_restricted_vector_sort_x): Fixed signedness
11670 problem.
11671
11672 * symbols.h (SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS, SCM_SYMBOL_FUNC,
11673 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS):
11674 Read SCM objects rather than scm_bits_t values.
11675
11676 * tags.h (SCM_VOIDP_TEST): Removed.
11677
11678 (SCM_DEBUG_TYPING_STRICTNESS): Now takes values 0, 1, 2. The
11679 value of 2 now corresponds to the former 1, the current 1
11680 corresponds to the former situation that SCM_VOIDP_TEST was
11681 defined.
11682
58bee6a8
TTN
11683 (SCM): Now defined as typedef struct scm_unused_struct * SCM;
11684 If this appears to be not ANSI compliant, we will change it to
729dbac3
DH
11685 typedef struct scm_unused_struct { } * SCM;
11686 Thanks to Han-Wen Nienhuys for the suggestion.
11687
11688 * unif.c (scm_array_set_x): Fix typing problem, and use
11689 SCM_UVECTOR_BASE instead of SCM_VELTS or SCM_CELL_WORD_1 when
11690 dealing with uniform vectors.
11691
6b1b030e
ML
116922001-05-27 Michael Livshin <mlivshin@bigfoot.com>
11693
11694 * gc.c (scm_init_storage): init `scm_gc_registered_roots'.
11695 (scm_igc): mark from them, too (precisely, not conservatively!).
11696
11697 * root.h (scm_gc_registered_roots): new object in
11698 scm_sys_protects.
11699
11700 * hooks.c (scm_create_hook): call `scm_gc_protect_object' instead
11701 `scm_protect_object'. shouldn't call it at all, though, it seems.
11702
11703 * gc.c (scm_[un]protect_object): deprecated.
11704 (scm_gc_[un]protect_object): new names for scm_[un]protect_object.
11705 (scm_gc_[un]register_root[s]): new.
11706
11707 * gc.h: add prototypes for scm_gc_[un]protect_object,
11708 scm_gc_[un]register_root[s].
11709
c014a02e
ML
117102001-05-26 Michael Livshin <mlivshin@bigfoot.com>
11711
11712 revert the controversial part of the 2001-05-24 changes.
11713
0120801d
MV
117142001-05-25 Marius Vollmer <mvo@zagadka.ping.de>
11715
f4e0611e
MV
11716 * modules.c (scm_env_module): Exported to Scheme.
11717
0120801d 11718 * eval.c (scm_debug_opts): New option `show-file-name'.
729dbac3 11719
0120801d 11720 * debug.h (SCM_SHOW_FILE_NAME): New.
729dbac3 11721
0120801d
MV
11722 * backtrace.c: Include "libguile/filesys.h".
11723 (sym_base, display_backtrace_get_file_line,
11724 display_backtrace_file, display_backtrace_file_and_line): New.
11725 (display_frame): Call display_backtrace_file_and_line if that is
11726 requested.
11727 (display_backtrace_body): Call scm_display_backtrace_file if
11728 requested.
11729
11730 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr):
11731 Prototypes removed since there's no definition for these
11732 functions.
11733
880a7d13
MG
117342001-05-24 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11735
11736 * unif.c (scm_make_ra, array_free), unif.h (SCM_ARRAY_DIMS):
11737 Changed use of scm_array->scm_array_t and
11738 scm_array_dim->scm_array_dim_t to enable build with
11739 --disable-deprecated.
11740
1be6b49c
ML
117412001-05-24 Michael Livshin <mlivshin@bigfoot.com>
11742
11743 The purpose of this set of changes is to regularize Guile's usage
11744 of ANSI C integral types, with the following ideas in mind:
11745
d69c867a
ML
11746 - SCM does not nesessarily have to be long.
11747 - long is not nesessarily enough to store pointers.
1be6b49c
ML
11748 - long is not nesessarily the same size as int.
11749
11750 The changes are incomplete and possibly buggy. Please test on
11751 something exotic.
11752
11753 * validate.h
11754 (SCM_NUM2{SIZE,PTRDIFF,SHORT,USHORT,BITS,UBITS,INT,UINT}[_DEF]):
11755 new macros.
11756
11757 * unif.h: type renaming:
11758 scm_array -> scm_array_t
11759 scm_array_dim -> scm_array_dim_t
11760 the old names are deprecated, all in-Guile uses changed.
11761
11762 * tags.h (scm_ubits_t): new typedef, representing unsigned
11763 scm_bits_t.
11764
11765 * stacks.h: type renaming:
11766 scm_info_frame -> scm_info_frame_t
11767 scm_stack -> scm_stack_t
11768 the old names are deprecated, all in-Guile uses changed.
11769
11770 * srcprop.h: type renaming:
11771 scm_srcprops -> scm_srcprops_t
11772 scm_srcprops_chunk -> scm_srcprops_chunk_t
11773 the old names are deprecated, all in-Guile uses changed.
11774
11775 * gsubr.c, procs.c, print.c, ports.c, read.c, rdelim.c, ramap.c,
11776 rw.c, smob.c, sort.c, srcprop.c, stacks.c, strings.c, strop.c,
11777 strorder.c, strports.c, struct.c, symbols.c, unif.c, values.c,
11778 vectors.c, vports.c, weaks.c:
11779 various int/size_t -> size_t/scm_bits_t changes.
11780
11781 * random.h: type renaming:
11782 scm_rstate -> scm_rstate_t
11783 scm_rng -> scm_rng_t
11784 scm_i_rstate -> scm_i_rstate_t
11785 the old names are deprecated, all in-Guile uses changed.
11786
11787 * procs.h: type renaming:
11788 scm_subr_entry -> scm_subr_entry_t
11789 the old name is deprecated, all in-Guile uses changed.
11790
11791 * options.h (scm_option_t.val): unsigned long -> scm_bits_t.
11792 type renaming:
11793 scm_option -> scm_option_t
11794 the old name is deprecated, all in-Guile uses changed.
11795
11796 * objects.c: various long -> scm_bits_t changes.
11797 (scm_i_make_class_object): flags: unsigned long -> scm_ubits_t
11798
11799 * numbers.h (SCM_FIXNUM_BIT): deprecated, renamed to
11800 SCM_I_FIXNUM_BIT.
11801
11802 * num2integral.i.c: new file, multiply included by numbers.c, used
11803 to "templatize" the various integral <-> num conversion routines.
11804
11805 * numbers.c (scm_mkbig, scm_big2num, scm_adjbig, scm_normbig,
11806 scm_copybig, scm_2ulong2big, scm_dbl2big, scm_big2dbl):
11807 deprecated.
11808 (scm_i_mkbig, scm_i_big2inum, scm_i_adjbig, scm_i_normbig,
11809 scm_i_copybig, scm_i_short2big, scm_i_ushort2big, scm_i_int2big,
11810 scm_i_uint2big, scm_i_long2big, scm_i_ulong2big, scm_i_bits2big,
11811 scm_i_ubits2big, scm_i_size2big, scm_i_ptrdiff2big,
11812 scm_i_long_long2big, scm_i_ulong_long2big, scm_i_dbl2big,
11813 scm_i_big2dbl, scm_short2num, scm_ushort2num, scm_int2num,
11814 scm_uint2num, scm_bits2num, scm_ubits2num, scm_size2num,
11815 scm_ptrdiff2num, scm_num2short, scm_num2ushort, scm_num2int,
11816 scm_num2uint, scm_num2bits, scm_num2ubits, scm_num2ptrdiff,
11817 scm_num2size): new functions.
11818
d69c867a 11819 * modules.c (scm_module_reverse_lookup): i, n: int -> scm_bits_t.
1be6b49c
ML
11820
11821 * load.c: change int -> size_t in various places (where the
11822 variable is used to store a string length).
11823 (search-path): call scm_done_free, not scm_done_malloc.
11824
11825 * list.c (scm_ilength): return a scm_bits_t, not long.
11826 some other {int,long} -> scm_bits_t changes.
11827
11828 * hashtab.c: various [u]int -> scm_bits_t changes.
11829 scm_ihashx_closure -> scm_ihashx_closure_t (and made a typedef).
11830 (scm_ihashx): n: uint -> scm_bits_t
11831 use scm_bits2num instead of scm_ulong2num.
11832
11833 * gsubr.c: various int -> scm_bits_t changes.
11834
11835 * goops.[hc]: various {int,long} -> scm_bits_t changes.
11836
d69c867a 11837 * gh_data.c (gh_num2int): no loss of precision any more.
1be6b49c
ML
11838
11839 * gh.h (gh_str2scm): len: int -> size_t
11840 (gh_{get,set}_substr): start: int -> scm_bits_t,
11841 len: int -> size_t
11842 (gh_<num>2scm): n: int -> scm_bits_t
11843 (gh_*vector_length): return scm_[u]size_t, not unsigned long.
11844 (gh_length): return scm_bits_t, not unsigned long.
11845
11846 * gc.[hc]: various small changes relating to many things stopping
11847 being long and starting being scm_[u]bits_t instead.
11848 scm_mallocated should no longer wrap around.
11849
11850 * fports.h: type renaming:
11851 scm_fport -> scm_fport_t
11852 the old name is deprecated, all in-Guile uses changed.
11853
11854 * fports.c (fport_fill_input): count: int -> scm_bits_t
11855 (fport_flush): init_size, remaining, count: int -> scm_bits_t
11856
11857 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr): removed
11858 those prototypes, as the functions they prototype don't exist.
11859
11860 * fports.c (default_buffer_size): int -> size_t
11861 (scm_fport_buffer_add): read_size, write_size: int -> scm_bits_t
11862 default_size: int -> size_t
11863 (scm_setvbuf): csize: int -> scm_bits_t
11864
11865 * fluids.c (n_fluids): int -> scm_bits_t
11866 (grow_fluids): old_length, i: int -> scm_bits_t
11867 (next_fluid_num, scm_fluid_ref, scm_fluid_set_x): n: int ->
11868 scm_bits_t
11869 (scm_c_with_fluids): flen, vlen: int -> scm_bits_t
11870
11871 * filesys.c (s_scm_open_fdes): changed calls to SCM_NUM2LONG to
11872 the new and shiny SCM_NUM2INT.
11873
11874 * extensions.c: extension -> extension_t (and made a typedef).
11875
11876 * eval.h (SCM_IFRAME): cast to scm_bits_t, not int. just so
11877 there are no nasty surprises if/when the various deeply magic tag
11878 bits move somewhere else.
11879
11880 * eval.c: changed the locals used to store results of SCM_IFRAME,
11881 scm_ilength and such to be of type scm_bits_t (and not int/long).
11882 (iqq): depth, edepth: int -> scm_bits_t
11883 (scm_eval_stack): int -> scm_bits_t
11884 (SCM_CEVAL): various vars are not scm_bits_t instead of int.
11885 (check_map_args, scm_map, scm_for_each): len: long -> scm_bits_t
11886 i: int -> scm_bits_t
11887
11888 * environments.c: changed the many calls to scm_ulong2num to
11889 scm_ubits2num.
11890 (import_environment_fold): proc_as_ul: ulong -> scm_ubits_t
11891
11892 * dynwind.c (scm_dowinds): delta: long -> scm_bits_t
11893
11894 * debug.h: type renaming:
11895 scm_debug_info -> scm_debug_info_t
11896 scm_debug_frame -> scm_debug_frame_t
11897 the old names are deprecated, all in-Guile uses changed.
11898 (scm_debug_eframe_size): int -> scm_bits_t
11899
11900 * debug.c (scm_init_debug): use scm_c_define instead of the
11901 deprecated scm_define.
11902
11903 * continuations.h: type renaming:
11904 scm_contregs -> scm_contregs_t
11905 the old name is deprecated, all in-Guile uses changed.
11906 (scm_contregs_t.num_stack_items): size_t -> scm_bits_t
11907 (scm_contregs_t.num_stack_items): ulong -> scm_ubits_t
11908
11909 * continuations.c (scm_make_continuation): change the type of
d69c867a 11910 stack_size from long to scm_bits_t.
1be6b49c
ML
11911
11912 * ports.h: type renaming:
11913 scm_port_rw_active -> scm_port_rw_active_t (and made a typedef)
11914 scm_port -> scm_port_t
11915 scm_ptob_descriptor -> scm_ptob_descriptor_t
11916 the old names are deprecated, all in-Guile uses changed.
11917 (scm_port_t.entry): int -> scm_bits_t.
11918 (scm_port_t.line_number): int -> long.
11919 (scm_port_t.putback_buf_size): int -> size_t.
11920
11921 * __scm.h (long_long, ulong_long): deprecated (they pollute the
d69c867a 11922 global namespace and have little value beside that).
1be6b49c
ML
11923 (SCM_BITS_LENGTH): new, is the bit size of scm_bits_t (i.e. of an
11924 SCM handle).
11925 (ifdef spaghetti): include sys/types.h and sys/stdtypes.h, if they
d69c867a 11926 exist (for size_t & ptrdiff_t).
1be6b49c
ML
11927 (scm_sizet): deprecated.
11928
11929 * Makefile.am (noinst_HEADERS): add num2integral.i.c
11930
a6219f22
MV
119312001-05-23 Marius Vollmer <mvo@zagadka.ping.de>
11932
11933 * snarf.h (SCM_CONST_LONG): Use SCM_VCELL_INIT instead of
11934 SCM_VARIABLE_INIT since that it what it used to be.
11935
11936 * deprecation.c (scm_include_deprecated_features): Make docstring
9a5fa6e9 11937 ANSIsh. Thanks to Matthias Köppe!
a6219f22 11938
311b6a3c
MV
119392001-05-21 Marius Vollmer <mvo@zagadka.ping.de>
11940
9dfc4faa
MV
11941 * symbols.c (scm_mem2symbol): Re-introduce indirect cell. It is
11942 needed for weak-key hashtables.
11943
11944 * procs.c (scm_make_subr_with_generic): Add missing last argument
11945 in call to scm_c_define_gsubr_with_generic. Thanks to Ariel Rios.
11946
11947 * eval.c: Use SCM_EQ_P instead of `==' or `!=' in certain
11948 places. (scm_c_improper_memq): Return 1 instead of SCM_BOOL_T.
311b6a3c
MV
11949
11950 * eval.h (SCM_EVALIM2): Use SCM_EQ_P instead of `=='.
11951
2fc933fe
MV
119522001-05-20 Marius Vollmer <mvo@zagadka.ping.de>
11953
57ae112d
MV
11954 * symbols.c (scm_mem2symbol): Call `scm_must_strndup' instead of
11955 `duplicate_string'. Do not use an indirect cell, store symbol
11956 directly in collision list of hash table.
11957 (duplicate_string): Removed.
58bee6a8 11958
57ae112d
MV
11959 * init.c (scm_init_guile_1): Call scm_init_extensions.
11960
11961 * Makefile.am: Add "extensions.c" and related files in all the
11962 right places.
11963
11964 * extensions.h, extension.c: New files.
11965
11966 * gc.h, gc.c (scm_must_strdup, scm_must_strndup): New.
11967
2fc933fe
MV
11968 * modules.h (scm_system_module_env_p): Move out of deprecated
11969 section.
11970
11971 * rw.h (scm_init_rw): Added prototype.
11972
11973 * gsubr.h, gsubr.c (scm_c_make_gsubr, scm_c_define_gsubr,
11974 scm_c_make_gsubr_with_generic, scm_c_define_gsubr_with_generic):
11975 New functions. They replace scm_make_gsubr and
11976 scm_make_gsubr_with_generic. The `make' variants only create the
11977 gsubr object, while the `define' variants also put it into the
11978 current module. Changed all callers.
11979 (scm_make_gsubr, scm_make_gsubr_with_generic): Deprecated.
11980
11981 * procs.h, procs.c (scm_c_make_subr, scm_c_define_subr,
11982 scm_c_make_subr_with_generic, scm_c_define_subr_with_generic): New
11983 functions. They replace scm_make_subr, scm_make_subr_opt and
11984 scm_make_subr_with_generic. The `make' variants only create the
11985 subr object, while the `define' variants also put it into the
11986 current module. Changed all callers.
11987 (scm_make_subr, scm_make_subr_opt, scm_make_subr_with_generic):
11988 Deprecated.
11989
11990 * eval.c, gc.c, gh_funcs.c, goops.c, macros.c, pairs.c, ramap.c,
11991 rdelim.c, rw.c, scmsigs.c, snarf.h, values.c: Changed according to
11992 the comments above.
58bee6a8 11993
18928596
NJ
119942001-05-19 Neil Jerram <neil@ossau.uklinux.net>
11995
11996 * throw.c (scm_lazy_catch): Slight docstring clarification.
11997
21a13beb
MV
119982001-05-19 Marius Vollmer <mvo@zagadka.ping.de>
11999
e2b6ddc6
MV
12000 * throw.c: Lazy-catch handlers are no longer allowed to return.
12001 Fixed comments throughout.
12002 (scm_ithrow): Signal an error when a lazy-catch handler returns.
12003 Moved actual jump to jmpbuf into if-branch where the jmpbuf is
12004 recognized as such.
12005
21a13beb
MV
12006 * version.c (s_scm_micro_version): Fix typo in FUNC_NAME, it
12007 refered to s_scm_minor_version previously.
12008
12009 * modules.h, modules.c: Moved around a lot of code so that
12010 deprecated features appear at the bottom.
12011 (root_module_lookup_closure, scm_sym_app, scm_sym_modules,
12012 module_prefix, make_modules_in_var, beautify_user_module_x_var,
12013 scm_the_root_module, scm_make_module, scm_ensure_user_module,
12014 scm_load_scheme_module): Deprecated.
12015 (scm_system_module_env_p): Return SCM_BOOL_T directly for
12016 environments corresponding to the root module.
12017 (convert_module_name, scm_c_resolve_module,
12018 scm_c_call_with_current_module, scm_c_define_module,
12019 scm_c_use_module, scm_c_export): New.
12020 (the_root_module): New static variant of scm_the_root_module. Use
12021 it everywhere instead of scm_the_root_module.
58bee6a8 12022
21a13beb
MV
12023 * fluids.h, fluids.c (scm_internal_with_fluids): Deprecated.
12024 (scm_c_with_fluids): Renamed from scm_internal_with_fluids.
12025 (scm_c_with_fluid): New.
12026 (scm_with_fluids): Use scm_c_with_fluids instead of
12027 scm_internal_with_fluids.
58bee6a8 12028
21a13beb
MV
12029 * goops.h, goops.c (scm_init_goops_builtins): Renamed from
12030 `scm_init_goops'. Do not explicitly create/switch modules.
12031 Return SCM_UNSPECIFIED.
12032 (scm_init_goops): Only register `%init-goops-builtins' procedure.
12033 (scm_load_goops): Use scm_c_resolve_module instead of
12034 scm_resolve_module.
58bee6a8 12035
21a13beb
MV
12036 * init.c (scm_init_guile_1): Call `scm_init_goops' instead of
12037 `scm_init_oop_goops_goopscore_module'. Call `scm_init_rdelim' and
12038 `scm_init_rw' prior to loading the startup files.
12039
12040 * rdelim.h, rdelim.c: (scm_init_rdelim_builtins): Renamed from
12041 scm_init_rdelim. Do not explicitly create/switch modules.
12042 Return SCM_UNSPECIFIED.
12043 (scm_init_rdelim): Only register `%init-rdelim-builtins'
12044 procedure.
58bee6a8 12045
21a13beb
MV
12046 * rw.c (scm_init_rw_builtins): Renamed from scm_init_rw. Do not
12047 explicitly create/switch modules. Return SCM_UNSPECIFIED.
12048 (scm_init_rw): Only register `%init-rw-builtins' procedure.
12049
12050 * script.c (scm_shell): Evaluate the compiled switches in the
12051 current module, not in the root module.
12052
120532001-05-18 Marius Vollmer <mvo@zagadka.ping.de>
12054
12055 * fluids.c (scm_c_with_fluids): Rename from
12056 scm_internal_with_fluids.
12057 (scm_internal_with_fluids): Deprecated.
12058 (scm_c_with_fluid): New.
12059
09cb9e73
DH
120602001-05-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12061
12062 * print.h (PRINTH, SCM_PRINT_H): Renamed PRINTH to SCM_PRINT_H.
12063
12064 (SCM_PORT_WITH_PS_PORT, SCM_PORT_WITH_PS_PS): Only pairs may be
12065 accessed with SCM_C[AD]R.
12066
12067 (SCM_COERCE_OUTPORT): Removed redundant SCM_NIMP test.
12068
c81ea65d
RB
120692001-05-16 Rob Browning <rlb@cs.utexas.edu>
12070
12071 * version.c (s_scm_major_version): doc fixes.
12072 (s_scm_minor_version): doc fixes.
12073 (s_scm_minor_version): new function.
12074
12075 * version.h (scm_init_version): new function.
12076
12077 * versiondat.h.in: add GUILE_MICRO_VERSION.
12078
887dfa7d
DH
120792001-05-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
12080
12081 * deprecation.c (scm_init_deprecation): Renamed
12082 GUILE_WARN_DEPRECATED_DEFAULT to SCM_WARN_DEPRECATED_DEFAULT.
12083
78930a69
MV
120842001-05-16 Marius Vollmer <mvo@zagadka.ping.de>
12085
12086 * Makefile.am (cpp_sig_symbols.c, cpp_err_symbols.c): Make
12087 dependent on cpp_cnvt.awk
12088
39cde5c5
MG
120892001-05-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12090
12091 * script.c (scm_compile_shell_switches): New command line option
12092 `--use-srfi' for loading a list of SRFIs on startup.
12093 (scm_shell_usage): Added `--use-srfi' to help message.
12094
f3f9dcbc
MV
120952001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
12096
78930a69 12097 Merged from mvo-vcell-cleanup-1-branch.
887dfa7d 12098
f3f9dcbc
MV
12099 The concept of vcells has been removed from Guile. With it,
12100 explicit obarrays and associated operations are gone. Use
12101 hashtables instead of obarrays.
887dfa7d 12102
f3f9dcbc
MV
12103 Throughout: use scm_sym2var instead of scm_sym2vcell and treat
12104 result as variable instead of vcell. Glocs no longer point to a
12105 vcell but to a variable. Use scm_c_define instead of
12106 scm_sysintern and treat the result as a variable (which it is),
12107 not a vcell.
887dfa7d 12108
f3f9dcbc
MV
12109 * variable.c, variable.h (SCM_VARVCELL, SCM_UDVARIABLEP,
12110 SCM_DEFVARIABLEP): Deprecated.
12111 (SCM_VARIABLE_REF, SCM_VARIABLE_SET, SCM_VARIABLE_LOC): New.
12112 (variable_print): Do not print name of variable.
12113 (variable_equalp): Compare values, not vcells.
12114 (anonymous_variable_sym): Removed.
12115 (make_vcell_variable): Removed.
12116 (make_variable): New, as replacement.
12117 (scm_make_variable, scm_make_undefined_variable): Do not take name
12118 hint parameter.
12119 (scm_variable_ref): Check for SCM_UNDEFINED and throw "unbound"
12120 error in that case.
12121 (scm_builtin_variable): Deprecated.
12122
12123 * symbols.c, symbols.h (scm_sym2vcell, scm_sym2ovcell_soft,
12124 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
12125 scm_intern, scm_intern0, scm_sysintern0_no_module_lookup,
12126 scm_sysintern, scm_sysintern0, scm_symbol_value0,
12127 scm_string_to_obarray_symbol, scm_intern_symbol,
12128 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned,
12129 scm_symbol_bound_p, scm_symbol_set_x, scm_gentmp, gentmp_counter):
12130 Deprecated and moved to "symbols-deprecated.c".
12131 (copy_and_prune_obarray, scm_builtin_bindings): Removed.
12132 (scm_init_symbols): Call scm_init_symbols_deprecated.
12133 * symbols-deprecated.c: New file.
12134 * Makefile.am: Added symbols-deprecated.c and related files in all
12135 the right places.
887dfa7d 12136
f3f9dcbc
MV
12137 * snarf.h (SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
12138 SCM_GLOBAL_VCELL_INIT): Deprecated.
12139 (SCM_VARIABLE, SCM_GLOBAL_VARIABLE, SCM_VARIABLE_INIT,
12140 SCM_GLOBAL_VARIABLE_INIT): New, as replacement. Changed all uses.
887dfa7d 12141
f3f9dcbc
MV
12142 * print.c (scm_iprin1): Use scm_module_reverse_lookup instead of
12143 SCM_GLOC_SYM.
12144
12145 * evalext.c, filesys.c, fports.c, gdbint.c, gh_data.c, gsubr.c,
12146 hooks.c, load.c, numbers.c, objects.c, ports.c, posix.c, procs.c,
12147 ramap.c, random.c, read.c, regex-posix.c, scmsigs.c, script.c,
12148 socket.c, srcprop.c, stacks.c, stime.c, struct.c, tag.c, throw.c:
12149 Changed according to the `throughout' comments.
12150
12151 * modules.h, modules.c (scm_module_system_booted_p): Changed type
12152 to `int'.
12153 (scm_module_type): Removed.
12154 (the_root_module): Renamed to the_root_module_var. Now points to
12155 a variable instead of a vcell. Updated all uses.
12156 (scm_the_root_module): Return SCM_BOOL_F when module systems
12157 hasn't been booted yet.
12158 (SCM_VALIDATE_STRUCT_TYPE): Removed.
12159 (scm_post_boot_init_modules): Made static.
12160 (scm_set_current_module): Call scm_post_boot_init_modules on first
12161 call.
12162 (make_modules_in, beautify_user_module_x, resolve_module,
12163 try_module_autoload, module_make_local_var_x): Tacked on "_var"
12164 suffix. Now point to variables instead of vcells. Updated all
12165 uses.
12166 (scm_module_lookup_closure): Deal with the module being SCM_BOOL_F
12167 and return SCM_BOOL_F in that case.
12168 (scm_module_transformer): Likewise.
12169 (sym_module, scm_lookup_closure_module, scm_env_module): New.
12170 (SCM_F_EVAL_CLOSURE_INTERFACE, SCM_EVAL_CLOSURE_INTERFACE_P): New.
12171 (scm_eval_closure_lookup): Do not allow new definitions when
12172 `interface' flag is set.
12173 (scm_standard_interface_eval_closure): New.
12174 (scm_pre_modules_obarray, scm_sym2var, scm_module_lookup,
12175 scm_lookup, scm_module_define, scm_define, scm_c_module_lookup,
12176 scm_c_lookup, scm_c_module_define, scm_c_define,
12177 scm_module_reverse_lookup, scm_get_pre_modules_obarray,
12178 scm_modules_prehistory): New.
12179 (scm_post_boot_init_modules): Use scm_c_define and scm_c_lookup
12180 instead of scm_intern0.
887dfa7d 12181
f3f9dcbc
MV
12182 * macros.c (scm_make_synt): Return SCM_UNSPECIFIED instead of the
12183 symbol.
12184
12185 * keywords.c (s_scm_make_keyword_from_dash_symbol): Use a regular
12186 hashtable operations to maintain the keywords, not obarray ones.
12187
12188 * init.c (scm_load_startup_files): Do not call
12189 scm_post_boot_init_modules. This is done by
12190 scm_set_current_module now.
12191 (scm_init_guile_1): Call scm_modules_prehistory. Call
12192 scm_init_variable early on.
12193
12194 * goops.c (s_scm_sys_goops_loaded): Get
12195 var_compute_applicable_methods from scm_sym2var, not from a direct
12196 invocation of scm_goops_lookup_closure.
12197
12198 * gh_funcs.c (gh_define): Return SCM_UNSPECIFIED instead of vcell.
12199
12200 * gc.c: Added simple debugging hack to mark phase of GC: When
12201 activated, do not tail-call scm_gc_mark. This gives nice
12202 backtraces.
12203 (scm_unhash_name): Removed.
12204
12205 * feature.c (features): Renamed to features_var. Now points to a
12206 variable instead of a vcell. Updated all uses.
12207
12208 * eval.h (SCM_TOP_LEVEL_LOOKUP_CLOSURE): Use
12209 `scm_current_module_lookup_closure' which will do the right thing
12210 when the module system hasn't been booted yet.
12211 (SCM_GLOC_SYM): Removed.
12212 (SCM_GLOC_VAR, SCM_GLOC_SET_VAL): New.
12213 (SCM_GLOC_VAL, SCM_GLOC_LOC): Reimplemented in terms of variables.
887dfa7d 12214
f3f9dcbc
MV
12215 * eval.c (scm_lookupcar, scm_lookupcar1): Deal with variables
12216 instead of with vcells. Do not overwrite `var' with the result of
12217 the lookup, use the new `real_var' instead. Remove `var2' in
12218 exchange (which was only used with threads).
12219 (sym_three_question_marks): New.
12220 (scm_unmemocar): Use `scm_module_reverse_lookup' instead of
12221 `SCM_GLOC_SYM'.
12222 (scm_lisp_nil, scm_lisp_t): Directly define as symbols.
12223 (scm_m_atfop): Expect the function definition to be a variable
12224 instead of a vcell.
12225 (scm_macroexp): Do not use `unmemocar', explicitely remember the
12226 symbol instead.
12227 (scm_unmemocopy): Removed thoughts about anti-macro interface.
12228 (scm_eval_args): Use more explicit code in the gloc branch of the
12229 atrocious struct ambiguity test. The optimizer will sort this
12230 out.
12231 (scm_deval_args): Likewise.
12232 (SCM_CEVAL): Likewise. Also, do not use unmemocar, explicitely
12233 remember the symbol instead. Added some comments where
12234 scm_tc3_cons_gloc really exclusively refers to structs.
12235 (scm_init_eval): Use scm_define to initialize "nil" and "t" to
12236 scm_lisp_nil and scm_lisp_t, respectively. Use scm_define instead
12237 of scm_sysintern in general.
12238
12239 * dynwind.c (scm_swap_bindings): Use SCM_GLOC_SET_VAL instead of
12240 explicit magic.
12241
12242 * debug.c (s_scm_make_gloc): Only allow proper variables, no
12243 pairs. Put the variable directly in the gloc.
12244 (s_scm_gloc_p): Use `scm_tc3_cons_gloc' instead of the magic `1'.
12245 (scm_init_debug): Use scm_c_define instead scm_sysintern.
12246
12247 * cpp_cnvt.awk: Emit "scm_c_define" instead of "scm_sysintern".
12248
12249 * backtrace.h, backtrace.c (scm_the_last_stack_fluid): Renamed to
12250 scm_the_last_stack_fluid_var. It now points to a variable instead
12251 of a vcell. Updated all uses.
12252 (scm_has_shown_backtrace_hint_p_var): Now points to a variable
12253 instead of a vcell. Updated all uses.
12254
12255 * _scm.h: Include "variables.h" and "modules.h" since almost
12256 everybody needs them now.
12257
12258 * root.h (scm_symhash, scm_symhash_vars): Removed.
12259 * gc.c (scm_init_storage): Do not initialize them.
887dfa7d 12260
7c33806a
DH
122612001-05-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
12262
12263 * eval.c (scm_init_eval): Initialize scm_undefineds and
58bee6a8 12264 scm_listofnull.
7c33806a
DH
12265
12266 * gc.c (scm_debug_newcell, scm_debug_newcell2): Fixed to behave
12267 like the SCM_NEWCELL macro counterparts.
12268
12269 (scm_init_storage, scm_init_gc): Moved initialization of
12270 scm_tc16_allocated from scm_init_gc to scm_init_storage.
12271
12272 (scm_init_storage): Moved initialization of scm_undefineds and
12273 scm_listofnull to eval.c, initializion of scm_nullstr to
12274 strings.c, initializion of scm_nullvect to vectors.c.
12275
12276 * gc.h (SCM_NEWCELL, SCM_NEWCELL2): Prefer SCM_NULLP over
12277 SCM_IMP, as in scm_debug_newcell and scm_debug_newcell2.
12278
12279 * init.c (scm_init_guile_1): Reordered some initializations and
12280 added dependcy information comments.
12281
12282 * load.c (scm_init_load): Use scm_nullstr.
12283
12284 * strings.c (scm_init_strings): Initialize scm_nullstr.
12285
12286 * vectors.c (scm_init_vectors): Initialize scm_nullvect.
12287
11bbab47
MV
122882001-05-15 Marius Vollmer <mvo@zagadka.ping.de>
12289
12290 * values.c (print_values): Print as a unreadable object, not as
9a5fa6e9 12291 multiple lines. Thanks to Matthias Köppe!
11bbab47 12292
5cd06d5e
DH
122932001-05-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
12294
12295 * deprecation.c: Fixed copyright date.
12296
12297 * deprecation.h (DEPRECATION_H, SCM_DEPRECATION_H): Renamed
12298 DEPRECATION_H to SCM_DEPRECATION_H.
12299
32bac999
TTN
123002001-05-10 Thien-Thi Nguyen <ttn@revel.glug.org>
12301
12302 * guile-doc-snarf.in: Update copyright.
12303 Fix relative path bug. Thanks to Sergey Poznyakoff.
12304
c9dcc5ae
MV
123052001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
12306
12307 * ports.c (scm_port_revealed, scm_set_port_revealed_x): Only
12308 accept open ports. Thanks to Quetzalcoatl Bradley!
12309
7c582ec9
MG
123102001-05-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12311
12312 * procs.c: Increased `scm_subr_table_room' to 800 because Guile now
12313 has 779 primitives on startup.
12314
284ab601
MV
123152001-05-09 Marius Vollmer <mvo@zagadka.ping.de>
12316
12317 * eval.c (scm_i_eval): Copy expression before passing it to
12318 SCM_XEVAL. The copy operation was removed unintendedly during my
12319 change on 2001-03-25.
12320
910d1e40
ML
123212001-05-09 Michael Livshin <mlivshin@bigfoot.com>
12322
9a5fa6e9 12323 from Matthias Köppe (thanks!):
910d1e40
ML
12324
12325 * ports.c (scm_c_read): pointer arithmetic on void pointers isn't
12326 portable.
12327
12328 * deprecation.c (s_scm_include_deprecated_features): ANSI'fied the
12329 docstring.
12330
56e55ac7
DH
123312001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
12332
12333 * gc.c (scm_init_gc): Added FIXME comment.
12334
12335 * hooks.c: Since hooks don't have a name any more, it is not
12336 necessary to include objprop.h.
12337
12338 (hook_print, scm_add_hook_x): Replace SCM_NFALSEP by !SCM_FALSEP.
12339
12340 (symbol_name, scm_make_hook_with_name): Removed.
12341
12342 (scm_create_hook): Don't set the hook's name property.
12343
12344 * hooks.h (HOOKSH, SCM_HOOKS_H): Renamed HOOKSH to SCM_HOOKS_H.
12345
12346 (SCM_HOOK_NAME, scm_make_hook_with_name): Removed.
12347
12348 * init.c (scm_init_guile_1): Hooks don't use objprops any more.
12349
12350 * numbers.c (SCM_FLOBUFLEN, FLOBUFLEN, scm_number_to_string,
12351 scm_print_real, scm_print_complex): Renamed SCM_FLOBUFLEN to
12352 FLOBUFLEN and define it unconditionally.
12353
d204b24c
MV
123542001-05-07 Marius Vollmer <mvo@zagadka.ping.de>
12355
438201b4
MV
12356 * gh_data.c (gh_lookup): Call gh_module_lookup with
12357 `scm_current_module ()', not `#f'.
12358 (gh_module_lookup): Expect a module instead of an obarray as first
12359 argument and do lookup in that module.
56e55ac7 12360
d204b24c
MV
12361 * ramap.c (raeql_1): Do not call scm_uniform_vector_length on
12362 arrays. The length of array is already determined differently and
12363 scm_uniform_vector_length does not work on arrays.
12364
26c1d549
MV
123652001-05-06 Marius Vollmer <mvo@zagadka.ping.de>
12366
fe7c2f88
MV
12367 * snarf.h (SCM_FUNC_CAST_ARBITRARY_ARGS): Use "SCM (*)()" for C++
12368 as well. "SCM (*)(...)" does not work on RedHat 7.1.
12369
26c1d549
MV
12370 * __scm.h (SCM_WTA_DISPATCH_0): Removed ARG and POS parameters,
12371 they are not used. Changed `wrong type' error into `wrong num
12372 args' error. Changed all callers.
56e55ac7 12373
26c1d549
MV
12374 * numbers.c (scm_difference): Call SCM_WTA_DISPATCH_0 when zero
12375 arguments are supplied.
12376
1c938eb8
TTN
123772001-05-05 Thien-Thi Nguyen <ttn@revel.glug.org>
12378
12379 * regex-posix.c (scm_regexp_exec): Expand docstring to briefly
12380 describe `regexp/notbol' and `regexp/noteol' execution flags.
12381
3a6379f7
TTN
12382 * strop.c (scm_substring_move_x): Doc fix; nfc.
12383
c10ecc4c
MV
123842001-05-05 Marius Vollmer <mvo@zagadka.ping.de>
12385
12386 * objects.c, objects.h (scm_valid_object_procedure_p): New.
12387 (scm_set_object_procedure_x): Use it to check argument. Fix
12388 docstring.
12389
12390 * evalext.c (scm_definedp): Fix docstring.
12391
a57a0b1e
GH
123922001-05-05 Gary Houston <ghouston@arglist.com>
12393
12394 * socket.c: use HAVE_IPV6 instead of AF_INET6 to enable IPv6
12395 support.
12396
7a095584
NJ
123972001-05-04 Neil Jerram <neil@ossau.uklinux.net>
12398
12399 * eval.c (scm_promise_p), list.c (scm_append_x, scm_reverse_x),
12400 symbols.c (scm_symbol_to_string), vports.c (scm_make_soft_port):
12401 Change R4RS references to R5RS.
12402
12403 * guile-snarf.awk.in: Fixes so that (i) blank lines in the
12404 docstring source are correctly reproduced in the output (ii)
12405 we don't anymore get occasional trailing quotes. Also reorganized
12406 and commented the code a little.
12407
12408 * scmsigs.c (scm_raise), throw.c (scm_throw): Docstring format
12409 fixes.
12410
dd2a6f3a
MG
124112001-05-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12412
12413 * strop.c (scm_string_split): New procedure.
12414
12415 * strop.h (scm_string_split): Added prototype.
12416
00120130
GH
124172001-05-04 Gary Houston <ghouston@arglist.com>
12418
12419 * socket.c: define uint32_t if netdb.h doesn't. thanks to
12420 Dale P. Smith.
12421
b65e6bfe
MV
124222001-05-02 Marius Vollmer <mvo@zagadka.ping.de>
12423
12424 * rw.c: Include "modules.h" and "strports.h".
12425
12426 * net_db.h (scm_gethost): Added prototype.
12427
12428 * deprecation.h, deprecation.c: New.
12429 * Makefile.am (libguile_la_SOURCES): Added "deprecation.c".
12430 (DOT_X_FILES): Added "deprecation.x".
12431 (modinclude_HEADERS): Added "deprecation.h".
12432
12433 * init.c: Include "deprecation.h".
12434 (scm_init_guile_1): Call scm_init_deprecation.
1c938eb8 12435
b65e6bfe
MV
124362001-05-01 Marius Vollmer <mvo@zagadka.ping.de>
12437
12438 * gh.h (gh_init_guile, gh_make_string, gh_string_length,
12439 gh_string_ref, gh_string_set_x, gh_substring, gh_string_append):
12440 New.
12441
b0e5fd8c
GH
124422001-04-29 Gary Houston <ghouston@arglist.com>
12443
12444 * rw.c: new file, implementing C part of module (ice-9 rw).
12445 (scm_read_string_x_partial): moved from ioext.c
12446 (scm_init_rw): new proc.
12447 * rw.h: new file.
12448 init.c: include rw.h and call scm_init_rw.
12449 Makefile.am: include rw.c and rw.h.
12450
0b2da99c
RB
124512001-04-28 Rob Browning <rlb@cs.utexas.edu>
12452
12453 * numbers.c: enabled local definition of SCM_FLOBUFLEN until we
12454 know what's supposed to happen to it.
12455
12456 * list.h (scm_list_star): deprecation expired - removed.
12457
12458 * numbers.h (scm_dblproc): deprecation expired - removed.
12459 (SCM_UNEGFIXABLE): deprecation expired - removed.
12460 (SCM_FLOBUFLEN): deprecation expired - removed.
12461 (SCM_INEXP): deprecation expired - removed.
12462 (SCM_CPLXP): deprecation expired - removed.
12463 (SCM_REAL): deprecation expired - removed.
12464 (SCM_IMAG): deprecation expired - removed.
12465 (SCM_REALPART): deprecation expired - removed.
12466 (scm_makdbl): deprecation expired - removed.
12467 (SCM_SINGP): deprecation expired - removed.
12468 (SCM_NUM2DBL): deprecation expired - removed.
12469 (SCM_NO_BIGDIG): deprecation expired - removed.
12470
12471 * tags.h (SCM_DOUBLE_CELLP): deprecation expired - removed.
12472 (scm_tc_dblr): deprecation expired - removed.
12473 (scm_tc_dblc): deprecation expired - removed.
12474 (scm_tc16_flo): deprecation expired - removed.
12475 (scm_tc_flo): deprecation expired - removed.
12476
12477 * tag.h (scm_tag): deprecation expired - removed.
12478
12479 * tag.c: (scm_tag): deprecation expired - removed.
12480
12481 * ioext.c: (scm_fseek): deprecation expired - removed.
12482
12483 * ioext.h (scm_fseek): deprecation expired - removed.
12484
12485 * gh_data.c (gh_int2scmb): deprecation expired - removed.
12486
12487 * gh.h (gh_int2scmb): deprecation expired - removed.
12488
e3334972
NJ
124892001-04-28 Neil Jerram <neil@ossau.uklinux.net>
12490
12491 * stacks.c (scm_make_stack): Fix typo in docstring.
12492
a0f979ac
RB
124932001-04-27 Rob Browning <rlb@cs.utexas.edu>
12494
12495 * error.c (scm_sysmissing): deprecation expired - removed.
12496
12497 * error.h (scm_sysmissing): deprecation expired - removed.
12498
12499 * gc.c
12500 (scm_init_gc): gc-thunk deprecation expired - removed.
12501 (scm_gc_vcell): deprecation expired - removed.
12502 (gc_async_thunk): scm_gc_vcell related code removed.
12503
12504 * vectors.h (SCM_NVECTORP): deprecation expired - removed.
12505
12506 * strings.h
12507 (SCM_NSTRINGP): deprecation expired - removed.
12508 (SCM_NRWSTRINGP): deprecation expired - removed.
12509
12510 * continuations.h (SCM_SETJMPBUF): deprecation expired - removed.
12511
12512 * chars.h
12513 (SCM_ICHRP): deprecation expired - removed.
12514 (SCM_ICHR): deprecation expired - removed.
12515 (SCM_MAKICHR): deprecation expired - removed.
12516
12517 * ports.h
12518 (SCM_INPORTP): deprecation expired - removed.
12519 (SCM_OUTPORTP): deprecation expired - removed.
12520
253081cf
MV
125212001-04-25 Marius Vollmer <mvo@zagadka.ping.de>
12522
12523 * modules.c (scm_module_type): New.
12524 (scm_post_boot_init_modules): Initialize from Scheme value.
12525 (the_module, scm_current_module, scm_init_modules): the_module is
12526 now a C only fluid.
12527 (scm_current_module): Export to Scheme.
12528 (scm_set_current_module): Do not call out to Scheme, do all the
12529 work in C. Export procedure to Scheme. Only accept modules, `#f'
12530 is no longer valid as the current module. Only set
12531 scm_top_level_lookup_closure_var and scm_system_transformer when
12532 they are not deprecated.
12533 (scm_module_transformer, scm_current_module_transformer): New.
12534
12535 * modules.h (scm_module_index_transformer, SCM_MODULE_TRANSFORMER,
12536 scm_current_module_transformer, scm_module_transformer): New.
1c938eb8 12537
253081cf
MV
12538 * gh_data.c: Removed FIXME comment about gh_lookup returning
12539 SCM_UNDEFINED. That's the right thing to do.
12540
12541 * eval.h, eval.c (scm_system_transformer): Deprecated by moving it
12542 into the conditionally compiled sections.
12543 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Use
12544 scm_current_module_transformer instead of scm_system_transformer.
12545 * init.c (start_stack): Move initialization of
12546 scm_system_transformer to the deprecated section.
1c938eb8 12547
1f7f9ed4
NJ
125482001-04-22 Neil Jerram <neil@ossau.uklinux.net>
12549
12550 * throw.c (scm_throw): Correct docstring.
12551
66c73b76
GH
125522001-04-22 Gary Houston <ghouston@arglist.com>
12553
eefae538
GH
12554 * socket.c: attempted to improve the docstrings slightly.
12555
66c73b76
GH
12556 * net_db.c: remove bogus "close" declaration.
12557 (inet_aton declaration, scm_inet_aton, scm_inet_ntoa,
12558 scm_inet_netof, scm_lnaof, scm_inet_makeaddr, INADDR_ANY etc.):
12559 moved to socket.c.
12560 * net_db.h: declarations moved too.
12561
12562 * socket.c (scm_htonl, scm_ntohl): use uint32_t instead of unsigned
12563 long.
12564 (ipv6_net_to_num, ipv6_num_to_net): new static procedures.
12565 (VALIDATE_INET6): new macro.
12566 (scm_inet_pton, scm_inet_ntop): new procedures, implementing
12567 inet-pton and inet-ntop.
12568 (scm_fill_sockaddr): use VALIDATE_INET6 and ipv6_num_to_net.
12569 (scm_addr_vector): use ipv6_net_to_num.
1c938eb8 12570
7a7f7c53
DH
125712001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
12572
12573 * eq.c (scm_equal_p), ramap.c (scm_init_ramap): Don't compute the
12574 smob number explicitly. Use SCM_TC2SMOBNUM instead.
12575
12576 * gc.c (MARK, scm_gc_sweep): Only check for illegal heap objects
12577 when compiled in debug mode.
12578
12579 (scm_gc_sweep): Only call smob's free function if it is defined.
12580
12581 * print.c (scm_iprin1): No need to check for validity of smob
12582 type or existence of print function.
12583
12584 * smob.[ch] (scm_smobs): Made into a fixed size global array.
12585 Resizing will not work well with preemptive threading.
12586
12587 * smob.c (scm_smob_print): Don't use SCM_CDR to access smob data.
12588
12589 (scm_make_smob_type): Extracted initialization of smob
12590 descriptors to scm_smob_prehistory. Don't use scm_numsmob outside
12591 of the critical section.
12592
12593 (scm_smob_prehistory): Initialize all smob descriptors. By
12594 default, don't assign a smob free function: Most smob types don't
12595 need one.
12596
12597 * smob.h (SMOBH, SCM_SMOB_H): Renamed SMOBH to SCM_SMOB_H.
12598
e1368a8d
GH
125992001-04-21 Gary Houston <ghouston@arglist.com>
12600
12601 * socket.c (FLIP_NET_HOST_128): new macro.
12602 (scm_fill_sockaddr): use new macro.
12603 (scm_addr_vector): completed IPv6 address support. added const
12604 to the address parameter.
12605
5a525b84
GH
126062001-04-20 Gary Houston <ghouston@arglist.com>
12607
12608 * socket.c (scm_fill_sockaddr): call htons for sin6_port.
12609 Don't assign sin6_scope_id in structure unless HAVE_SIN6_SCOPE_ID
12610 is defined.
12611 (scm_addr_vector): use a switch instead of multiple if statements.
12612 Add support for IPv6 (incomplete) .
e1368a8d 12613 MAX_ADDR_SIZE: increase to size of struct sockaddr_in6 if needed.
5a525b84 12614
1a551638
DH
126152001-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
12616
12617 * struct.c (scm_free_structs): Only pairs may be accessed with
12618 SCM_C[AD]R.
12619
c07b3fef
MD
126202001-04-19 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12621
a9d861e3
MD
12622 * unif.h (SCM_ARRAY_CONTIGUOUS): Reintroduced as deprecated.
12623
c07b3fef
MD
12624 * __scm.h (SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
12625 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Inserted required
12626 parentheses in order to get the correct associativity.
12627
af7546eb
DH
126282001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12629
12630 * unif.c (scm_array_to_list): Added missing handling of arrays of
12631 bytes. Thanks to Masao Uebayashi for the bug report.
12632
4daecfee
DH
126332001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12634
12635 * debug.c (scm_procedure_source): Use SCM_CLOSURE_FORMALS more
12636 consistently.
12637
726d810a
DH
126382001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12639
12640 * procs.h (SCM_CLOSURE_FORMALS): New macro.
12641
12642 * debug.c (scm_procedure_source), eval.c (scm_badformalsp,
12643 SCM_CEVAL, SCM_APPLY), goops.c (get_slot_value, set_slot_value),
1c938eb8 12644 procprop.c (scm_i_procedure_arity), sort.c (closureless): Use
726d810a
DH
12645 SCM_CLOSURE_FORMALS.
12646
12647 * eval.c (scm_badformalsp, SCM_CEVAL), procprop.c
12648 (scm_i_procedure_arity): Prefer stronger predicates like
12649 SCM_NULLP or SCM_FALSEP over SCM_IMP.
12650
12651 * macros.c (macro_print): Extracted macro printing code from
12652 print.c and simplified it.
12653
12654 (scm_macro_type): Use SCM_MACRO_TYPE;
12655
12656 (scm_init_macros): Use macro_print for printing macros.
12657
12658 * print.c (scm_print_opts): Improved option documentation.
12659
12660 (scm_iprin1): Extracted printing of macros to macros.c.
12661 Simplified printing of ordinary closures.
12662
12663 * procs.c (scm_thunk_p): Fixed handling of closures. Thanks to
12664 Martin Grabmueller for the bug report.
12665
e038c042
DH
126662001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12667
12668 This patch eliminates some further applications of SCM_C[AD]R to
12669 non pair cells.
12670
12671 * gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR): Deprecated. These have
12672 never been applied to real pairs.
12673
12674 * srcprop.h (SCM_SOURCE_PROPERTY_FLAG_BREAK): Added.
12675
12676 (SRCPROPBRK): Use SCM_SOURCE_PROPERTY_FLAG_BREAK.
12677
12678 * unif.h (SCM_ARRAY_CONTIGUOUS, SCM_ARRAY_FLAG_CONTIGUOUS,
12679 SCM_ARRAY_CONTP): Renamed SCM_ARRAY_CONTIGUOUS to
12680 SCM_ARRAY_FLAG_CONTIGUOUS and use it.
12681
12682 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
12683 Added.
12684
12685 * srcprop.h (SRCPROPH), unif.h (UNIFH): Renamed to
12686 SCM_SOURCE_PROPERTIES_H and SCM_UNIFORM_VECTORS_H, respectively.
12687
12688 * srcprop.h (SETSRCPROPBRK, CLEARSRCPROPBRK), unif.c
12689 (scm_dimensions_to_uniform_array, scm_ra_set_contp): Don't use
12690 SCM_SET{AND,OR}_CAR.
12691
3453619b
GH
126922001-04-17 Gary Houston <ghouston@arglist.com>
12693
12694 * some initial support for IPv6:
1c938eb8 12695
3453619b
GH
12696 * socket.c (scm_fill_sockaddr): improve the argument validation.
12697 don't allocate memory until all args are checked. instead of
12698 unconditional memset of soka, try setting sin_len to 0 if
12699 SIN_LEN is defined. add support for AF_INET6. define FUNC_NAME.
12700 (scm_socket, scm_connect): extend docstrings for IPv6.
12701 (scm_init_socket): intern AF_INET6 and PF_INET6.
12702
216eedfc
DH
127032001-04-17 Niibe Yutaka <gniibe@m17n.org>
12704
12705 * srcprop.c (scm_make_srcprops): Added SCM_ALLOW_INTS which
12706 matches SCM_DEFER_INTS at the beginning of the function.
12707
12708 * mallocs.c (scm_malloc_obj): Remove un-matched SCM_ALLOW_INTS.
12709
12710 * gc.c (scm_igc): Unconditionally call
12711 SCM_CRITICAL_SECTION_START/END.
12712
12713 * fluids.c (next_fluid_num): Unconditionally call
12714 SCM_CRITICAL_SECTION_START/END.
12715 (s_scm_make_fluid): Remove un-matched SCM_DEFER_INTS.
12716
12717 * coop-defs.h (SCM_THREAD_DEFER, SCM_THREAD_ALLOW,
12718 SCM_THREAD_REDEFER, SCM_THREAD_REALLOW_1, SCM_THREAD_REALLOW_2):
12719 Removed.
12720
12721 * __scm.h (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END):
12722 Defined as nothing for the case of !defined(USE_THREADS).
12723 (SCM_THREAD_DEFER, SCM_THREAD_ALLOW, SCM_THREAD_REDEFER):
12724 Removed.
12725 (<stdio.h>): Include when (SCM_DEBUG_INTERRUPTS == 1).
12726 (SCM_CHECK_NOT_DISABLED, SCM_CHECK_NOT_ENABLED): Print FILE and
12727 LINE.
12728 (SCM_DEFER_INTS, SCM_ALLOW_INTS_ONLY, SCM_ALLOW_INTS,
12729 SCM_REDEFER_INTS, SCM_REALLOW_INTS): Don't use
12730 SCM_THREAD_DEFER/SCM_THREAD_ALLOW. Instead, use
12731 SCM_CRITICAL_SECTION_START/END.
12732 (SCM_REALLOW_INTS: Bug fix. Don't call
12733 SCM_THREAD_SWITCHING_CODE.
12734 (SCM_TICK): Don't use SCM_DEFER_INTS/SCM_ALLOW_INTS. Instead, use
12735 SCM_THREAD_SWITCHING_CODE directly.
12736 (SCM_ENTER_A_SECTION): Unconditionally use
12737 SCM_CRITICAL_SECTION_START/END. (was:
12738 SCM_DEFER_INTS/SCM_ALLOW_INTS when SCM_POSIX_THREADS defined).
12739
127402001-04-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12741
12742 * __scm.h (SCM_CAREFUL_INTS, SCM_DEBUG_INTERRUPTS): Replaced the
12743 macro SCM_CAREFUL_INTS by the macro SCM_DEBUG_INTERRUPTS and
12744 allowed to explicitly set this macro via the CFLAGS variable
12745 during make.
12746
12747 * fluids.c (next_fluid_num), gc.c (scm_igc), coop-defs.h
12748 (SCM_THREAD_CRITICAL_SECTION_START,
12749 SCM_THREAD_CRITICAL_SECTION_END): Renamed
12750 SCM_THREAD_CRITICAL_SECTION_START/END to
12751 SCM_CRITICAL_SECTION_START/END.
12752
f22ed5a0
KN
127532001-04-11 Keisuke Nishida <kxn30@po.cwru.edu>
12754
12755 * debug-malloc.c (grow, scm_debug_malloc_prehistory): Use memset
12756 instead of bzero.
1c938eb8 12757
f22ed5a0 12758 * coop.c, iselect.c (FD_ZERO_N): Unconditionally use memset.
1c938eb8 12759 (MISSING_BZERO_DECL): Remove the declaration.
f22ed5a0
KN
12760
12761 Thanks to NIIBE Yutaka.
12762
508ded1c
MD
127632001-04-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12764
a087ba81
MD
12765 * init.c, goops.c, goops.h: Reverted change of 2001-03-29. (The
12766 goops module should be registered in order to work for an
12767 application which uses libguile statically linked.)
508ded1c 12768
e4b265d8
DH
127692001-04-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
12770
12771 * numbers.[ch] (scm_num2long, scm_num2long_long,
12772 scm_num2ulong_long, scm_num2ulong): Argument position is an
12773 unsigned integer.
12774
12775 * environments.c (eval_environment_folder,
12776 import_environment_folder), gh_data.c (gh_scm2longs,
12777 gh_scm2floats, gh_scm2doubles): Distinguish between 0 and NULL
12778 for integers and pointers, respectively.
12779
12780 * gh_data.c (gh_scm2ulong, gh_scm2long, gh_scm2int), socket.c
12781 (scm_fill_sockaddr), unif.c (scm_array_set_x), validate.h
12782 (SCM_NUM2ULONG, SCM_NUM2LONG, SCM_NUM2LONG_DEF,
12783 SCM_NUM2LONG_LONG): Don't pass argument positions as pointers.
12784
12785 * filesys.c (scm_open_fdes, scm_open), net_db (scm_inet_ntoa,
12786 scm_inet_netof, scm_lnaof, scm_gethost, scm_getproto), posix.c
12787 (scm_utime), ramap.c (scm_array_fill_int), scmsigs.c
12788 (scm_sigaction), socket.c (scm_htonl, scm_ntohl, scm_sendto),
12789 stime.c (scm_localtime, scm_gmtime), struct.c (scm_struct_set_x),
12790 validate.h (SCM_VALIDATE_LONG_COPY): Whitespace fixes.
12791
89d04205
NJ
127922001-04-09 Neil Jerram <neil@ossau.uklinux.net>
12793
12794 * strings.c (scm_read_only_string_p): Update docstring to reflect
12795 current (non-)usage of "read only" strings.
40f83c3e
NJ
12796 (scm_make_shared_substring): Clarify docstring by changing
12797 "semantics" to "arguments".
89d04205 12798
4d66be54
MG
127992001-04-06 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12800
12801 * hooks.c (scm_make_hook, scm_make_hook_with_name),
12802 (scm_hook_p, scm_hook_empty_p, scm_run_hook): Docstring
12803 improvements.
12804
1e6808ea
MG
128052001-04-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12806
12807 The following changes make the documentation more consistent.
1c938eb8 12808
1e6808ea
MG
12809 * rdelim.c (scm_write_line), posix.c (scm_utime), ports.c
12810 (scm_seek), net_db.c (scm_inet_aton, scm_inet_ntoa),
12811 (scm_inet_netof, scm_lnaof, scm_inet_makeaddr), ioext.c
12812 (scm_ftell): Changed @smalllisp ... @end smalllisp to @lisp
12813 ... @end lisp.
12814
12815 * vports.c (scm_make_soft_port), version.c (scm_version), unif.c
12816 (scm_array_dimensions, scm_make_shared_array),
12817 (scm_transpose_array, scm_enclose_array, scm_bit_count_star),
12818 throw.c (scm_catch), struct.c (scm_make_vtable_vtable), strop.c
12819 (scm_string_rindex, scm_string_index, scm_substring_fill_x),
12820 (scm_string_null_p), strings.c (scm_read_only_string_p), root.c
12821 (scm_call_with_dynamic_root), ramap.c (scm_array_index_map_x),
12822 posix.c (scm_mknod), numbers.c (scm_logtest, scm_logbit_p),
12823 macros.c (scm_makmmacro), list.c (scm_append), environments.c
12824 (scm_environment_fold), dynwind.c (s_scm_dynamic_wind): Changed
12825 @example ... @end example to @lisp ... @end lisp.
12826
12827 * weaks.c (scm_weak_vector): Corrected docstring.
12828
12829 * hashtab.c (scm_hashq_ref, scm_hashq_set_x, scm_hashq_remove_x),
12830 (scm_hashv_ref, scm_hashv_set_x, scm_hashv_remove_x),
12831 (scm_hash_ref, scm_hash_set_x, scm_hash_remove_x, scm_hashx_ref),
12832 (scm_hashx_set_x, scm_hashx_get_handle),
12833 (scm_hashx_create_handle_x), regex-posix.c (scm_make_regexp),
12834 (scm_regexp_exec, scm_regexp_p), numbers.c (scm_logtest),
12835 vectors.c (scm_vector_fill_x), strings.c
12836 (scm_make_shared_substring), symbols.c (scm_string_to_symbol),
12837 objprop.c (scm_set_object_properties_x):
12838 (scm_set_object_property_x), throw.c (scm_catch, scm_lazy_catch),
12839 strports.c (scm_call_with_input_string), ports.c
12840 (scm_truncate_file), ioext.c (scm_ftell), ports.c (scm_seek),
12841 list.c (scm_append_x), dynwind.c (scm_dynamic_wind), error.c
12842 (scm_error_scm), vports.c (scm_make_soft_port), weaks.c
12843 (scm_make_weak_vector,scm_weak_vector_p),
12844 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table),
12845 (scm_make_doubly_weak_hash_table, scm_weak_key_hash_table_p),
12846 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
12847 macros.c (scm_macro_type), dynl.c (scm_dynamic_link),
12848 (scm_dynamic_unlink, scm_dynamic_call, scm_dynamic_args_call):
12849 Made parameter names match documentation by renaming parameters
12850 and/or fixing docstrings.
1c938eb8 12851
1e6808ea
MG
12852 * numbers.c (scm_ash): Corrected Texinfo markup.
12853
12854 * strop.c (scm_string_index, scm_string_rindex),
12855 (scm_substring_fill_x, scm_string_null_p): Removed `qdocs'.
12856
12857 * vports.c (scm_make_soft_port), unif.c
12858 (scm_uniform_vector_length, scm_array_p, scm_array_rank),
12859 (scm_dimensions_to_uniform_array, scm_transpose_array),
12860 (scm_array_in_bounds_p, scm_uniform_vector_ref),
12861 (scm_bit_count, scm_bit_position, scm_bit_count_star),
12862 (scm_array_to_list, scm_list_to_uniform_array),
12863 (scm_array_prototype, symbols.c (scm_string_to_symbol), strports.c
12864 (scm_open_input_string, scm_open_output_string),
12865 (scm_get_output_string), strop.c (scm_string_copy),
12866 (scm_string_fill_x), strings.c (scm_string_p, scm_string), stime.c
12867 (scm_get_internal_real_time, scm_times),
12868 (scm_get_internal_run_time, scm_current_time, scm_gettimeofday),
12869 (scm_localtime, scm_gmtime), socket.c (scm_htons, scm_ntohs),
12870 (scm_htonl, scm_ntohl, scm_socket, scm_socketpair),
12871 (scm_getsockopt, scm_getsockname, scm_getpeername, scm_recvfrom),
12872 simpos.c (scm_system), random.c (scm_random_uniform),
12873 (scm_random_normal, scm_random_exp), ramap.c
12874 (scm_array_equal_p), posix.c (scm_pipe, scm_getgroups),
12875 (scm_status_exit_val, scm_status_term_sig, scm_status_stop_sig),
12876 (scm_getppid, scm_getuid, scm_getgid, scm_geteuid, scm_getegid),
12877 (scm_getpgrp, scm_ttyname, scm_ctermid, scm_tcgetpgrp, scm_uname),
12878 (scm_environ, scm_tmpnam, scm_mkstemp, scm_access, scm_getpid),
12879 (scm_setlocale), ports.c (scm_char_ready_p, scm_drain_input),
12880 (scm_pt_size, scm_pt_member, scm_port_revealed, scm_port_mode),
12881 (scm_close_port, scm_input_port_p, scm_output_port_p, scm_port_p),
12882 (scm_port_closed_p, scm_eof_object_p, scm_read_char),
12883 (scm_peek_char), pairs.c (scm_pair_p, scm_cons), numbers.c
12884 (scm_logand, scm_logior, scm_logxor, scm_lognot),
12885 (scm_integer_expt, scm_bit_extract, scm_logcount),
12886 (scm_integer_length, scm_string_to_number, scm_inexact_to_exact),
12887 net_db.c (scm_inet_netof, scm_lnaof), modules.c
12888 (scm_interaction_environment), macros.c (scm_makacro),
12889 (scm_makmacro, scm_makmmacro), keywords.c (scm_keyword_p), ioext.c
12890 (scm_ftell, scm_dup_to_fdes, scm_fileno, scm_isatty_p),
12891 (scm_fdopen, scm_fdes_to_ports), gc.c (scm_gc_stats), fluids.c
12892 (scm_fluid_ref), filesys.c (scm_open_fdes),
12893 (scm_stat, scm_directory_stream_p, scm_getcwd, scm_readlink):
12894 Docstring correction: `Returns' -> `Return'
12895
1c938eb8
TTN
12896 * gc.c (scm_set_debug_cell_accesses_x):
12897 (s_scm_gc_set_debug_check_freelist_x):
1e6808ea
MG
12898 * fluids.c (scm_fluid_p): Added texinfo markup.
12899
12900 * error.c (scm_strerror): Made docstring more precise.
12901
12902 * vectors.c (scm_vector_p, scm_vector, scm_make_vector),
12903 (scm_vector_to_list, _scm_vector_fill_x), symbols.c
12904 (scm_symbol_p, scm_symbol_to_string), strorder.c
12905 (scm_string_equal_p, scm_string_ci_equal_p, scm_string_less_p),
12906 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p),
12907 (scm_string_ci_less_p, scm_string_ci_leq_p, scm_string_ci_gr_p):
12908 (scm_string_ci_geq_p), strop.c (scm_string_copy),
12909 (scm_string_fill_x): Removed `(r5rs)' from docstrings.
12910
9a6976cd
DH
129112001-04-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
12912
12913 * gc.c (MARK): Re-introduce a cheap sanity test for non debug
12914 mode, as suggested by Michael Livshin.
12915
463b2219
ML
129162001-03-31 Michael Livshin <mlivshin@bigfoot.com>
12917
12918 * backtrace.c (display_backtrace_body): since the `print_state'
12919 variable is not used (instead its data field is used directly as
12920 `pstate'), protect it from the hungry compiler optimizations.
12921 thanks to Bill Schottstaedt for the report.
12922
61045190
DH
129232001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
12924
12925 * gc.[ch] (scm_tc16_allocated): New type tag for allocated cells.
12926 It is only defined and used if guile is compiled with
12927 SCM_DEBUG_CELL_ACCESSES set to true. It's purpose is, to never
12928 let cells with a free_cell type tag be visible outside of the
12929 garbage collector when in debug mode.
12930
12931 * gc.c (scm_debug_cell_accesses_p): Set to true as default.
12932
12933 (scm_assert_cell_valid): Use a local static variable to avoid
12934 recursion.
12935
12936 (MARK): Only check for rogue cell pointers in debug mode. Use
12937 scm_cellp for this purpose and place all checks for rogue pointers
12938 into that function. Further, since due to conservative scanning
12939 we may encounter free cells during marking, don't use the standard
12940 cell type accessor macro to determine the cell type.
12941
12942 (scm_cellp): Check if the cell pointer actually points into a
12943 card header.
12944
12945 (scm_init_gc): Initalize scm_tc16_allocated.
12946
12947 * gc.h (GCH): Renamed to SCM_GC_H.
12948
12949 (SCM_VALIDATE_CELL): Enclose the expression in brackets. This
12950 might be unnecessary, but I feel better this way :-)
12951
12952 (SCM_GC_CELL_TYPE): New macro.
12953
12954 (SCM_SETAND_CDR, SCM_SETOR_CDR): Deprecated. These are not used
12955 in guile, and it is unlikely that they will be applied to real
12956 pairs anyway.
12957
12958 (SCM_SET_FREE_CELL_TYPE): Removed. It was not used.
12959
12960 (SCM_GC_SET_ALLOCATED): New macro. Only non-empty if guile is
12961 compiled with SCM_DEBUG_CELL_ACCESSES set to true.
12962
12963 (SCM_NEWCELL, SCM_NEWCELL2): Use of SCM_GC_SET_ALLOCATED will
12964 make sure that in debug mode no free cell will ever be visible
12965 outside of the garbage collector.
12966
85d6df6a
DH
129672001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
12968
12969 * async.c (scm_asyncs_pending): Don't use != to compare SCM
12970 values.
12971
12972 * async.c (scm_system_async), variable.c (scm_make_variable,
12973 scm_make_undefined_variable): Use scm_cons to create a pair.
12974
12975 * debug.c (scm_reverse_lookup): Perform proper type checking.
12976 Remove suspicious use of SCM_SLOPPY_CONSP.
12977
12978 * eq.c (scm_equal_p), tags.h (SCM_ECONSP): Use SCM_CONSP instead
12979 of SCM_SLOPPY_CONSP. A sane compiler should be able to perform
12980 the corresponding optimization.
12981
12982 * eval.c (iqq): Use proper type check.
12983
12984 (scm_m_expand_body): Remove redundant type checks.
12985
12986 (promise_print): Don't access promise cells as pairs.
12987
12988 * eval.c (EVALCAR, iqq, scm_m_expand_body, scm_eval_args,
12989 scm_deval_args SCM_CEVAL), guardians.c (scm_guard), hashtab.c
12990 (scm_internal_hash_fold), print.c (scm_iprlist): Use !SCM_CELLP
12991 for SCM_NCELLP, !SCM_CONSP for SCM_NCONSP, !SCM_IMP for SCM_NIMP,
12992 !SCM_FALSEP for SCM_NFALSEP, !SCM_NULLP for SCM_NNULLP
12993
12994 * eval.c (scm_m_define, scm_macroexp, SCM_CEVAL), print.c
12995 (scm_iprin1): Use new macro predicate and accessors.
12996
12997 * eval.h (scm_tc16_macro): Removed declaration. It is declared
12998 in macros.h.
12999
13000 * eval.h (EVALH), macros.h (MACROSH), ports.h (PORTSH), procs.h
13001 (PROCSH), tags.h (TAGSH), variable.h (VARIABLEH): Renamed to
13002 SCM_EVAL_H, SCM_MACROS_H, SCM_PORTS_H, SCM_PROCS_H, SCM_TAGS_H and
13003 SCM_VARIABLE_H. Even the macros that are used to inhibit
13004 including a header file twice should be in the SCM_ namespace.
13005
13006 * fluids.c (scm_swap_fluids, scm_swap_fluids_reverse),
13007 properties.c (scm_primitive_property_ref,
13008 scm_primitive_property_del_x): Prefer stronger predicates like
13009 SCM_NULLP or SCM_FALSEP over SCM_IMP.
13010
13011 * gc.c (MARK): Use proper macros to access procedure-with-setter
13012 cell elements and closure cell elements.
13013
13014 (gc_sweep_freelist_finish, scm_gc_sweep, init_heap_seg): Don't
13015 access free cells as pairs.
13016
13017 (scm_unprotect_object): scm_hashq_get_handle returns #f if
13018 no hashtab entry is found.
13019
13020 * gc.c (scm_gc_sweep), ports.c (scm_close_port): Use new macro
13021 SCM_CLR_PORT_OPEN_FLAG.
13022
13023 * guardians.c (TCONC_IN), print.c (scm_free_print_state): Don't
13024 use SCM_SET_C[AD]R for uninitialized cells.
13025
13026 * hashtab.c (scm_hash_fn_get_handle): Use SCM_VALIDATE_VECTOR.
13027 If the hashtable has no slots, return #f instead of '(). This
13028 unifies the return value with most assoc-functions.
13029
13030 (scm_hash_fn_ref): Use proper type check.
13031
13032 (scm_hashq_get_handle, scm_hashv_get_handle, scm_hash_get_handle):
13033 Removed references to non-existing functions from documentation.
13034
13035 * keywords.c (scm_keyword_dash_symbol): Use proper macros to
13036 access keyword cell elements.
13037
13038 * macros.h (SCM_MACROP, SCM_MACRO_TYPE, SCM_MACRO_CODE): New
13039 macros.
13040
13041 * ports.h (SCM_CLR_PORT_OPEN_FLAG): New macro.
13042
13043 * print.c (scm_iprlist): Added comment. Improved loop
13044 conditions.
13045
13046 * procs.h (SCM_ENV, SCM_SETENV): Don't access closure cells as
13047 pairs.
13048
13049 * smob.c (scm_markcdr): Don't access smob cells as pairs.
13050
13051 * tags.h (SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP): Deprecated.
13052
13053 * throw.c (ACTIVATEJB, DEACTIVATEJB): Don't access jump buffer
13054 cells as pairs.
13055
13056 * variable.c (variable_print, variable_equalp, scm_variable_ref,
13057 scm_variable_set_x): Use proper macros to access variable cell
13058 elements.
13059
13060 (scm_variable_bound_p): Don't use SCM_NEGATE_BOOL.
13061
13062 * variable.h (SCM_VARVCELL): Don't access variable cells as
13063 pairs.
13064
13065 * vectors.c (scm_vector), weaks.c (scm_weak_vector): Simplified,
13066 added FIXME comment, removed register specifier.
13067
1b27e91a
KN
130682001-03-29 Keisuke Nishida <kxn30@po.cwru.edu>
13069
13070 * goops.c, goops.h (scm_init_oop_goops_goopscore_module): Deprecated.
13071 * init.c (scm_init_guile_1): Don't init goopscore module.
13072
16c634ec
MV
130732001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
13074
13075 * eval.c (SCM_APPLY): Check that arg1 is bound for scm_tc7_cxr.
13076
91344ceb
MG
130772001-03-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13078
13079 * strop.c (scm_string_to_list): Fixed docstring markup.
13080 (scm_string_upcase_x, scm_string_upcase, scm_string_downcase_x),
13081 (scm_string_downcase, scm_string_capitalize_x),
13082 (scm_string_capitalize): Rewrote and corrected docstrings.
13083 (scm_string_ci_to_symbol): Made docstring more explicit.
13084
07576812
MV
130852001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
13086
13087 * values.h (scm_values_vtable, SCM_VALUESP): Moved here so that
13088 eval.c can use it.
13089 (scm_call_with_values): Removed.
13090 * values.c (values_vtable, scm_values_vtable): Added "scm_" prefix
13091 so that it can be exported.
13092 (scm_call_with_values): Removed.
1c938eb8 13093
07576812
MV
13094 * tags.h (SCM_IM_CALL_WITH_VALUES): New isym.
13095 * eval.c: Include "libguile/values.h"
13096 (scm_m_at_call_with_values, scm_sym_at_call_with_values):
13097 New.
13098 (unmemocopy, scm_ceval, scm_deval): Handle new isym.
13099 * eval.h (scm_sym_at_call_with_values, scm_m_at_call_with_values):
13100 New delcarations to support above change.
13101
13102 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Fix syntax
13103 errors with last change.
1c938eb8 13104
07576812
MV
131052001-03-25 Marius Vollmer <mvo@zagadka.ping.de>
13106
13107 * eval.c (scm_primitive_eval_x, scm_primitive_eval, scm_i_eval_x,
13108 scm_i_eval): Moved the application of the system transformer from
13109 scm_i_eval to scm_primitive_eval.
13110
a17bb5fd
NJ
131112001-03-23 Neil Jerram <neil@ossau.uklinux.net>
13112
a6be01a4
NJ
13113 * guile-snarf.awk.in: Substitute "\\" with "\" in .doc output.
13114
a17bb5fd
NJ
13115 * strop.c (scm_string_index): Fix docstring line break
13116 regression.
13117
13118 * list.c (scm_cons_star): Fix docstring typo.
13119
be54b15d
DH
131202001-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
13121
13122 * gc.c (scm_init_storage), gdbint.c (scm_init_gdbint), numbers.c
13123 (big2str), ports.c (scm_drain_input), read.c (scm_read,
13124 scm_grow_tok_buf), strings.c (scm_string, scm_makfromstr,
13125 scm_make_string, scm_string_append), strports.c (st_resize_port,
13126 scm_object_to_string), unif.c (scm_make_uve): Replace calls to
13127 scm_makstr with calls to scm_allocate_string.
13128
13129 * strings.[ch] (scm_allocate_string): New function.
13130
13131 * strings.[ch] (scm_makstr): Deprecated.
13132
789ecc05
GH
131332001-03-18 Gary Houston <ghouston@arglist.com>
13134
6d163216
GH
13135 * posix.c (scm_tmpnam): check that return value from tmpnam is not
13136 NULL. rewrote the docstring.
13137 (scm_mkstemp): new procedure implementing "mkstemp!".
13138 * posix.h: declare scm_mkstemp.
13139
789ecc05
GH
13140 * net_db.c: declare h_errno if configure didn't define HAVE_H_ERRNO.
13141 normally it would be found in netdb.h.
13142
c6c79933
GH
131432001-03-17 Gary Houston <ghouston@arglist.com>
13144
e9e225e5
GH
13145 * sort.c (scm_sort): move sortvec variable to avoid a compiler
13146 warning when HAVE_ARRAYS is not defined. move len too.
13147
13148 * Makefile.am (DOT_X_FILES): remove net_db.x, posix.x, socket.x.
13149 (EXTRA_DOT_X_FILES): let configure set the value.
13150 (DOT_DOC_FILES): remove net_db.doc, posix.doc, socket.doc.
13151
c6c79933
GH
13152 * gc.c (scm_must_malloc): changed the comment explaining when
13153 scm_must variants of malloc/free etc., should be used, based on
13154 explanation from Dirk Herrmann.
13155 * fports.c (scm_fport_buffer_add): use FUNC_NAME instead of a local
13156 string with procedure name. use scm_must_malloc instead of malloc.
13157 (scm_setvbuf, scm_fdes_to_port, fport_close): use scm_must variants
13158 of malloc/free.
13159 * ports.c (scm_add_to_port_table, scm_remove_from_port_table,
13160 scm_ungetc): use scm_must variants of malloc/realloc/free.
13161 (scm_add_to_port_table, scm_ungetc): define FUNC_NAME.
13162
b3fcac34
DH
131632001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13164
13165 * __scm.h (SCM_ASSERT, SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
13166 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Don't call scm_wta, call
13167 scm_wrong_type_arg instead.
13168
13169 (SCM_WNA): Deprecated.
13170
13171 * error.[ch] (scm_wta): Deprecated.
13172
13173 * numbers.c (s_i_log): Minor comment fix.
13174
13175 * read.c (scm_lreadr), unif.c (scm_aind, scm_shap2ra,
13176 scm_make_shared_array, scm_transpose_array, scm_enclose_array,
13177 scm_array_in_bounds_p): Don't use SCM_ASSERT to check for
13178 wrong-num-args or misc errors.
13179
13180 * unif.c (scm_make_shared_array, scm_transpose_array,
13181 scm_enclose_array, scm_array_in_bounds_p, scm_array_set_x):
13182 Validate the rest argument (note: this is only done when guile is
13183 built with SCM_DEBUG_REST_ARGUMENT=1)
13184
13185 (scm_array_in_bounds_p, scm_uniform_vector_ref, scm_array_set_x):
13186 Replace calls to scm_wrong_num_args by SCM_WRONG_NUM_ARGS.
13187
13188 * validate.h (SCM_FUNC_NAME, SCM_VALIDATE_NUMBER_COPY,
13189 SCM_VALIDATE_NUMBER_DEF_COPY): Deprecated.
13190
68baa7e7
DH
131912001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13192
13193 * validate.h (SCM_WRONG_NUM_ARGS): Call scm_error_num_args_subr
13194 instead of scm_wrong_num_args.
13195
13196 * coop-threads.c: Don't include libguile/strings.h. (Was only
13197 needed for former implementation of SCM_WRONG_NUM_ARGS.)
13198
13199 * debug.c (scm_m_start_stack): Don't use SCM_ASSERT to check for
13200 wrong-num-args errors.
13201
9f40cd87
DH
132022001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13203
13204 * error.[ch] (scm_error_num_args_subr): New function.
13205
5352393c
MG
132062001-03-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13207
13208 * list.c (scm_list, scm_cons_star, scm_null_p, scm_list_p),
13209 (scm_length, scm_append, scm_reverse, scm_list_ref),
13210 (scm_memq, scm_memv, scm_member, scm_delv_x, scm_delete_x),
13211 (scm_delq, scm_delv, scm_delete, scm_delq1_x, scm_delv1_x),
13212 (scm_delete1_x), gc.c (scm_map_free_list),
13213 (scm_free_list_length), hash.c (scm_hashq, scm_hashv),
13214 (scm_hash), hashtab.c (scm_hashq_ref, scm_hashq_set_x),
13215 (scm_hashq_remove_x, scm_hashv_ref, scm_hashv_set_x),
13216 (scm_hashv_remove_x, scm_hash_ref, scm_hash_set_x),
13217 (scm_hash_remove_x), ports.c (scm_pt_size, scm_pt_member), print.c
13218 (scm_current_pstate), scmsigs.c (scm_usleep), goops.c
13219 (scm_get_keyword, scm_sys_compute_slots): Added texinfo markup.
13220
13221 * weaks.c (scm_weak_vector_p, scm_weak_key_hash_table_p),
13222 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
13223 rdelim.c (scm_read_delimited_x), strop.c (scm_string_index),
13224 symbols.c (scm_symbol_interned_p), numbers.c
13225 (scm_string_to_number), ports.c (scm_port_p): Corrected texinfo
13226 markup.
13227
a9205f07
KN
132282001-03-16 Keisuke Nishida <kxn30@po.cwru.edu>
13229
13230 * snarf.h (SCM_CONST_LONG): Deprecated.
13231 * tag.c (CONST_INUM): New macro. Use it to define scm_utag_*.
13232
6d583887
MV
132332001-03-15 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13234
13235 * numbers.c (scm_num2ulong): Check that a bignum is positive
13236 before looking at the magnitude. Correctly check for overflow
13237 during conversion.
13238 (scm_num2long_long): Likewise.
13239 (scm_num2ulong_long): New.
13240 (ULONG_LONG_MAX): Define if not already defined.
13241 * numbers.h: (scm_num2ulong_long): New prototype.
1c938eb8 13242
e87a03fc
MG
132432001-03-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13244
13245 * validate.h (SCM_VALIDATE_OPOUTSTRPORT): New macro.
13246
13247 * strports.h (SCM_STRPORTP, SCM_OPSTRPORTP, SCM_OPINSTRPORTP),
13248 (SCM_OPOUTSTRPORTP): New predicate macros.
13249 (scm_open_input_string, scm_open_output_string),
13250 (scm_get_output_string): New prototypes.
1c938eb8 13251
e87a03fc
MG
13252 * strports.c (scm_open_input_string, scm_open_output_string),
13253 (scm_get_output_string): New procedures (SRFI-6 compliant).
13254 Made scm_tc16_strport non-static.
13255
160bb34a
DH
132562001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
13257
13258 * macros.h (SCM_ASSYNT): Removed unused object argument from
13259 signature.
13260
13261 * eval.c (scm_m_body, scm_m_quote, scm_m_begin, scm_m_if,
13262 scm_m_set_x, scm_m_and, scm_m_or, scm_m_case, scm_m_cond,
13263 scm_m_letstar, scm_m_do, scm_m_quasiquote, scm_m_delay,
13264 scm_m_define, scm_m_letrec1, scm_m_letrec, scm_m_let, scm_m_apply,
13265 scm_m_cont, scm_m_nil_cond, scm_m_nil_ify, scm_m_t_ify,
13266 scm_m_0_cond, scm_m_0_ify, scm_m_1_ify, scm_m_atfop, scm_m_atbind,
13267 scm_m_expand_body), evalext.c (scm_m_generalized_set_x,
13268 scm_m_undefine), goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
13269 scm_m_atdispatch): Removed unused object argument from call to
13270 SCM_ASSYNT.
13271
80dee77b
DH
132722001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
13273
13274 * gh.h/gh_data.c (gh_ints2scm): Changed the signature to use a
13275 const int* to reflect that the input array of integers remains
13276 unchanged. Thanks to Brett Viren for the hint.
13277
d3dd80ab
MG
132782001-03-14 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13279
13280 * gh_data.c (gh_scm2chars, gh_scm2shorts, gh_scm2longs),
13281 (gh_scm2floats, gh_scm2doubles): Check for malloc() returning NULL
13282 in various places.
13283 (gh_scm2newstr, gh_symbol2newstr): Change call to
13284 scm_must_malloc() to malloc(), because user-free()able memory is
13285 allocated.
13286
13287 * gc.c: Added declaration of `scm_debug_check_freelist'.
13288
26a3038d
MG
132892001-03-13 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13290
13291 * ports.c (scm_port_mode): Changed `mode' array size to 4.
13292
1f3908c4
KN
132932001-03-12 Keisuke Nishida <kxn30@po.cwru.edu>
13294
13295 * strports.c (scm_object_to_string): New procedure.
13296 (scm_strprint_obj): Deprecated.
13297 * strports.h: Reflect the changes.
13298
e11208ca
DH
132992001-03-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
13300
13301 * goops.h (SCM_VALIDATE_PUREGENERIC): New macro.
13302
13303 * goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
13304 scm_m_atdispatch): Provide definitions for FUNC_NAME. Don't use
13305 SCM_ASSYNT to check for correct argument types. Either use some
13306 SCM_VALIDATE_* macro or an explicit test.
13307
13308 (scm_make_foreign_object): Don't use SCM_ASSERT to check for
13309 misc-errors.
13310
13311 * macros.h (SCM_ASSYNT): On assertion failure, issue a misc-error
13312 instead of calling scm_wta.
13313
67e8151b
MG
133142001-03-12 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13315
13316 * load.c (scm_primitive_load, scm_primitive_load_path),
13317 (scm_sys_search_load_path): Corrected docstrings (file ->
13318 filename).
13319
13320 * eval.c (scm_force): Added texinfo markup to docstring.
13321 (scm_promise_p): Renamed parameter to `obj' to match docstring.
13322
13323 * debug-malloc.c: Reinserted #include <stdio.h>.
13324
e0c08f17
KN
133252001-03-11 Keisuke Nishida <kxn30@po.cwru.edu>
13326
e39c3de4
KN
13327 * list.c (s_scm_reverse_x): Use SCM_VALIDATE_LIST.
13328
e0c08f17
KN
13329 * environments.c, error.c, eval.c, filesys.c, hashtab.c, load.c,
13330 net_db.c, procprop.c, read.c, scmsigs.c, socket.c, struct.c:
13331 Use SCM_LISTn instead of scm_listify.
13332
e6e2e95a
MD
133332001-03-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13334
13335 * _scm.h: Removed #include <errno.h>.
13336
13337 * error.c, net_db.c, putenv.c, stime.c: Removed declaration of
13338 errno variable (can be a macro on some systems, for example when
13339 using linux libc with threads).
13340
13341 * error.c, filesys.c, gc.c, ioext.c, iselect.c, net_db.c, ports.c,
13342 posix.c, print.c, putenv.c, scmsigs.c, script.c, simpos.c, smob.c,
13343 socket.c, srcprop.c, stime.c, strop.c, unif.c, vports.c: Added
13344 #include <errno.h> in these 20 out of 100 files.
1c938eb8 13345
97d0e20b
GH
133462001-03-10 Gary Houston <ghouston@arglist.com>
13347
13348 * socket.c: add a definition of SUN_LEN (from glibc) for when it's
13349 not already defined.
13350
e75341b3
MD
133512001-03-09 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13352
13353 * coop.c: Inserted #include <stdio.h>.
13354
13355 * iselect.c: Reinserted #include <stdio.h>.
13356
74355186
MV
133572001-03-10 Marius Vollmer <mvo@zagadka.ping.de>
13358
13359 * posix.c: Replaced `#define' of __USE_XOPEN right before
13360 including unistd.h with a define of _GNU_SOURCE at the very top of
13361 the file.
13362
783e7774
KN
133632001-03-09 Keisuke Nishida <kxn30@po.cwru.edu>
13364
13365 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
13366 continuations.c, debug-malloc.c, debug.c, dynwind.c, eq.c, eval.c,
13367 feature.c, filesys.h, gc_os_dep.c, gh_data.c, gh_eval.c,
13368 gh_funcs.c, gh_io.c, gh_list.c, gh_predicates.c, hash.c,
13369 hashtab.c, iselect.c, keywords.c, list.c, load.c, mallocs.c,
13370 net_db.c, numbers.c, objprop.c, objprop.h, options.c, pairs.c,
13371 print.c, procprop.c, procs.c, properties.c, ramap.c,
13372 regex-posix.c, root.c, scmsigs.c, simpos.c, socket.c, srcprop.c,
13373 stackchk.c, stacks.c, strings.c, strop.c, strorder.c, struct.c,
13374 symbols.c, tag.c, threads.c, variable.c, vectors.c, weaks.c:
1c938eb8 13375 Remove #include <stdio.h>
783e7774
KN
13376 * gc.c, gdbint.c, root.c, sort.c, unif.c: Add #include <string.h>.
13377
13378 * procs.c (scm_make_subr_opt): Init symcell to avoid warning.
13379
9a677c37
MG
133802001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13381
13382 * posix.c (scm_gethostname): Set initial name length to 256 for
13383 Solaris.
13384
94e6d793
MG
133852001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13386
13387 * posix.h (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
13388 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
13389 (scm_sethostname, scm_gethostname): New prototypes.
13390
13391 * posix.c: Added inclusion of <crypt.h>, <sys/resource.h> and
13392 <sys/file.h>, if present.
13393 (scm_init_posix): [PRIO_PROCESS, PRIO_PGRP, PRIO_USER, LOCK_SH,
13394 LOCK_EX, LOCK_UN, LOCK_NB]: New variables.
13395 (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
13396 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
13397 (scm_sethostname, scm_gethostname): New procedures.
13398
650a1cf9
NJ
133992001-03-08 Neil Jerram <neil@ossau.uklinux.net>
13400
13401 * ports.c (scm_port_column): Docstring fixes: (i) port-line arg is
13402 not optional (ii) "recommend" spelling correction.
13403
9636b49c
MD
134042001-03-08 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13405
5e4a4d09
MD
13406 * ramap.c (racp): Removed optimization which caused array copying
13407 to fail if the two arrays shared storage. Re-inserted the IVDEP
13408 macros removed in the change of 2000-03-09. (Don't really have a
13409 complete grasp of what they are for, but they seem to be necessary
13410 on Crays. This needs testing!) Thanks to Miroslav Silovic.
13411
9636b49c
MD
13412 * hash.c (scm_string_hash): Don't downcase characters.
13413
04a4d666
MD
134142001-03-07 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13415
9636b49c 13416 * symbols.c (scm_symbols_prehistory): Changed symbol hash table
04a4d666
MD
13417 size from 277 --> 1009.
13418
13419 * symbols.c, symbols.h (scm_sys_symbols): New function GUILE_DEBUG
13420 function.
13421
13422 * coop-threads.c: Fixed change of 2001-03-06.
1c938eb8 13423
04a4d666
MD
13424 * validate.h: Code formatting.
13425
66418d34
KN
134262001-03-07 Keisuke Nishida <kxn30@po.cwru.edu>
13427
13428 * Makefile.am (*.x): Add dependency on snarf.h and guile-doc-snarf.in.
13429 (*.doc): Add dependency on guile-snarf.awk.in.
13430
13431 * guile-snarf.awk.in: Neglect spaces at the end of
13432 SCM_SNARF_DOCSTRING_END. Skip lines "# NN ..." in the
13433 middle of docstrings. (To avoid the problem with gcc-2.96.)
13434
2ade72d7
DH
134352001-03-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
13436
13437 * coop-threads.c (scm_call_with_new_thread), load.c
13438 (scm_primitive_load, scm_sys_search_load_path), random.c
13439 (scm_c_default_rstate), struct.c (scm_make_struct_layout,
13440 scm_struct_ref, scm_struct_set_x): Don't use SCM_ASSERT to
13441 (potentially) issue a scm-misc-error or wrong-num-args error
13442 message.
13443
13444 * load.c (scm_search_path): Use SCM_ASSERT_TYPE to give details
13445 about the expected type with the wrong-type-arg error message.
13446
13447 * smob.c (scm_make_smob): Abort on misuse of smob - it indicates
13448 a C level bug that can't be fixed from scheme anyway.
13449
586d7da2
MD
134502001-03-05 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13451
13452 * eval.c (scm_m_letstar): Removed check for duplicate bindings.
13453 Duplicate bindings are OK in a let* since a let* is semantically
13454 equivalent to a nested set of let:s.
13455
1dd05fd8
MG
134562001-03-05 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13457
13458 * print.c (scm_print_options): Fixed texinfo in docstring.
13459
13460 * net_db.c (scm_getserv, scm_getproto, scm_getnet): Return #f if
13461 the underlying functions getservent, getprotoent or getnetent
13462 return NULL instead of signalling an error.
13463
439006bf
GH
134642001-03-04 Gary Houston <ghouston@arglist.com>
13465
13466 * socket.c (scm_fill_sockaddr): don't allow buffer overflows when
13467 taking an unexpectedly large filename for an AF_UNIX socket from
13468 bind/connect/sendto (thanks to Martin Grabmueller).
1c938eb8 13469
439006bf
GH
13470 * socket.c (scm_sock_fd_to_port, SCM_SOCK_FD_TO_PORT): removed the
13471 former and adjusted the latter.
13472 (scm_socket, scm_socketpair): cosmetic changes.
13473 (scm_getsockopt, scm_setsockopt): declare optlen as int, not
13474 size_t as socklen_t substitute. don't restrict args/return values
13475 to INUM: allow full range of int or size_t.
13476 (scm_fill_sockaddr): check arguments before allocating memory, to
13477 avoid leakage. use malloc, not scm_must_malloc.
13478 (scm_connect, scm_bind, scm_sendto): use int, not size_t as socklen_t
13479 substitute. free the sockaddr structure before throwing an error.
13480 (scm_init_add_buffer): procedure removed, together with its static
13481 buffer scm_addr_buffer, which wouldn't be thread safe. instead,
13482 define a macro MAX_ADDR_SIZE and declare the buffer where needed.
13483 (scm_accept, scm_getpeername, scm_getsockname, scm_recvfrom,
13484 scm_sendto): use a local buffer instead of scm_addr_buffer.
13485 adjust for new SCM_SOCK_FD_TO_PORT. use int for address size,
13486 not size_t.
13487 (scm_recvfrom): set addr->sa_family to AF_UNSPEC before the recvfrom
13488 call to detect whether recvfrom could be bothered to set the address.
13489 (scm_init_socket): don't call scm_init_addr_buffer.
13490
276dd677
DH
134912001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
13492
13493 * debug.c (scm_procedure_source, scm_procedure_environment),
13494 print.c (scm_get_print_state), ramap.c (scm_array_fill_int,
13495 scm_array_index_map_x), sort.c (scm_sort_x, scm_sort,
13496 scm_stable_sort_x, scm_stable_sort), stacks.c (scm_make_stack,
13497 scm_last_stack_frame), symbols.c (scm_sym2vcell, scm_sym2ovcell),
13498 unif.c (scm_list_to_uniform_array, scm_uniform_vector_length,
13499 scm_transpose_array, scm_enclose_array, scm_array_in_bounds_p,
13500 scm_uniform_vector_ref, scm_array_set_x, scm_uniform_array_read_x,
13501 scm_uniform_array_write, scm_bit_set_star_x, scm_bit_count_star,
13502 scm_array_to_list, scm_array_prototype), validate.h
13503 (SCM_VALIDATE_NUMBER_COPY): Don't call function scm_wta, call
13504 scm_misc_error or scm_wrong_type_arg instead.
13505
13506 * validate.h (SCM_WTA, RETURN_SCM_WTA): Deprecated.
13507
5e03762c
MD
135082001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13509
13510 * goops.c, goops.h (scm_sys_pre_expand_closure_x): Removed.
13511 (scm_sys_tag_body): Added.
13512
db4b4ca6
DH
135132001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
13514
13515 * continuations.c (continuation_apply), eval.c (scm_m_lambda,
13516 scm_m_letstar, scm_m_letrec1, scm_m_let, SCM_APPLY), eval.h
13517 (SCM_EVALIM2), evalext.c (scm_m_generalized_set_x), gc.c
13518 (get_bvec, MARK), goops.c (scm_primitive_generic_generic),
13519 options.c (scm_options), ports.c (scm_remove_from_port_table),
13520 ramap.c (scm_ramapc), read.c (skip_scsh_block_comment, scm_lreadr,
13521 scm_lreadparen, scm_lreadrecparen), script.c (script_get_octal,
13522 script_get_backslash, script_read_arg), unif.c (scm_cvref): Don't
13523 call function scm_wta, call scm_misc_error or scm_wrong_type_arg
13524 instead.
13525
87e7741d
MD
135262001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13527
13528 * goops.c (scm_sys_pre_expand_closure_x): New procedure.
13529
d19b0aac
MV
135302001-03-04 Marius Vollmer <mvo@zagadka.ping.de>
13531
13532 * eval.c (scm_s_duplicate_bindings): New error message.
13533 (scm_m_letrec1, scm_m_letstar): Check for duplicate bindings.
13534
2fd945df
MV
135352001-03-03 Marius Vollmer <mvo@zagadka.ping.de>
13536
13537 * eval.h (SCM_EVALIM2): New macro. Use it when a
13538 immediate, literal constant should be evaluated.
13539 * eval.c (scm_s_duplicate_formals): New error message string.
13540 (scm_c_improper_memq): New function.
13541 (scm_m_lambda): Check for duplicate arguments.
13542 (scm_ceval, scm_deval): When executing a body: only cons a new
13543 toplevel environment frame when it is different from the
13544 existing one; use EVALCAR instead of SIDEVAL so that we can properly
13545 check for empty combinations; use SCM_EVALIM2 for the same reason
13546 in the non-toplevel loop.
13547 (nontoplevel_cdrxnoap, nontoplevel_cdrxbegin, nontoplevel_begin):
13548 New labels with the meaning of their non-"nontoplevel" partners,
13549 but they are used when it is known that the body is not evaluated at
13550 top-level.
13551 (scm_apply, scm_dapply): use SCM_EVALIM2 to get proper error
13552 reporting for empty combinations.
13553
9e6fc585
KN
135542001-03-02 Keisuke Nishida <kxn30@po.cwru.edu>
13555
13556 * Remove dump facilities.
13557 * dump.c, dump.h: Removed.
13558 * Makefile.am: Remove dump.c, dump.h, dump.x, dump.doc.
13559 * init.c: Remove #include "libguile/dump.h".
13560 (scm_init_guile_1): Remove scm_init_dump.
13561 * smob.h (scm_smob_descriptor): Remove slots: dump, undump.
13562 (scm_set_smob_dump, scm_set_smob_undump): Remove declaration.
13563 * smob.c (scm_make_smob_type): Remove initialization: dump, undump.
13564 (scm_set_smob_dump, scm_set_smob_undump): Removed.
13565
13566 * keywords.c: Remove #include "libguile/dump.h".
13567 (keyword_dump, keyword_undump): Removed.
13568 (scm_init_keywords): Remove scm_set_smob_dump and scm_set_smob_undump.
13569
eae54bf0
MG
135702001-03-02 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13571
13572 * vectors.c (s_scm_vector_p, list->vector, scm_vector)
13573 (scm_vector_ref, scm_vector_set_x, scm_vector_to_list)
13574 (scm_vector_fill_x), strorder.c (scm_string_equal_p)
13575 (scm_string_ci_equal_p, scm_string_less_p, scm_string_leq_p)
13576 (scm_string_gr_p, scm_string_geq_p, scm_string_ci_less_p)
13577 (scm_string_ci_geq_p), symbols.c (scm_symbol_p)
13578 (scm_symbol_to_string, scm_string_to_symbol): Changed use of @t{}
13579 to @code{} as the texinfo manual recommends, converted the
13580 examples to use a @lisp{}-environment.
13581
13582 * strports.c (scm_eval_string): Cleaned up the docstring.
13583
13584 * struct.c (scm_struct_p, scm_struct_vtable_p): Added texinfo
13585 markup.
13586
13587 * numbers.c (scm_exact_p, scm_odd_p, scm_even_p)
13588 (scm_number_to_string, scm_string_to_number, scm_number_p)
13589 (scm_real_p, scm_integer_p, scm_inexact_p, scm_make_rectangular)
13590 (scm_make_polar, scm_inexact_to_exact): Added texinfo markup.
13591 (scm_ash): Added texinfo markup and removed obsolete @refill.
13592 (scm_gr_p): Corrected comment.
13593 (scm_gr_p, scm_leq_p, scm_geq_p): Added texinfo markup to (future
13594 docstring) comments.
13595 (scm_positive_p, scm_less_p, scm_num_eq_p, scm_real_p)
13596 (scm_number_p, scm_negative_p, scm_max, scm_min, scm_sum)
13597 (scm_difference, scm_product, scm_divide, scm_asinh, scm_acosh)
13598 (scm_atanh, scm_truncate, scm_round, scm_exact_to_inexact)
13599 (floor, ceiling, $sqrt, $abs, $exp, $log, $sin, $cos, $tan, $asin)
13600 ($acos, $atan, $sinh, $cosh, $tanh, scm_real_part, scm_imag_part)
13601 (scm_magnitude, scm_angle, scm_abs, scm_quotient, scm_remainder)
13602 (scm_modulo, scm_gcd, scm_lcm): Added (future docstring) comments.
13603
23deee81
DH
136042001-02-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
13605
13606 * __scm.h (SCM_ASSERT_TYPE): Add missing macro parameter.
13607 (Obviously nobody compiles with SCM_RECKLESS defined...)
13608
13609 * validate.h (SCM_ASSERT_RANGE): Use the argument number.
13610
6fe692e9
MD
136112001-02-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13612
13613 * ports.c, ports.h (scm_c_read, scm_c_write): New functions.
13614
13615 * ports.h (SCM_READ_BUFFER_EMPTY_P): New macro.
13616
27c37006
NJ
136172001-02-24 Neil Jerram <neil@ossau.uklinux.net>
13618
13619 * numbers.c (scm_two_doubles, scm_sys_expt, scm_sys_atan2,
13620 scm_make_polar): Rename arguments `z1' and `z2' to `x' and `y',
13621 since use of `z' suggests that the arguments may be complex.
13622
13623 * goops.c (scm_make), numbers.c (scm_sys_expt): Fix docstring
13624 typos.
13625
2069af38
NJ
136262001-02-23 Neil Jerram <neil@ossau.uklinux.net>
13627
13628 * dump.c (scm_binary_write, scm_binary_read), eval.c
13629 (scm_primitive_eval), guardians.c (scm_guardian_destroyed_p,
13630 scm_guardian_greedy_p, scm_make_guardian), fports.c
13631 (scm_file_port_p): Minor docstring fixes.
13632
b42ff180
MV
136332001-02-22 Marius Vollmer <mvo@zagadka.ping.de>
13634
2069af38 13635 * load.c (load): Use scm_primitive_eval_x instead of scm_i_eval_x.
97ea55f8
MV
13636
13637 * goops.c (scm_add_method, DEFVAR): Use scm_eval instead of
13638 scm_i_eval.
13639 (make_class_from_template): Do not bother to set the current
13640 module around the call to DEFVAR, scm_eval takes care of that.
13641 (scm_init_goops): Make scm_module_goops and
13642 scm_goops_lookup_closure permanent objects.
1c938eb8 13643
97ea55f8
MV
13644 * eval.c (scm_ceval, scm_deval): When evaluating expressions on
13645 top level, create a fresh top-level environment for each
13646 expression instead of mutating the exisint frame. This is
13647 important when that frame is closed over.
13648
b42ff180
MV
13649 * numbers.c (s_scm_logior) [SCM_DIGSTOOBIG]: Also use
13650 SCM_DIGSPERLONG instead of DIGSPERLONG.
13651
09f2ab1e
MV
136522001-02-21 Marius Vollmer <mvo@zagadka.ping.de>
13653
13654 * eval.c (scm_ceval, scm_deval): Check for wrong number of args
13655 before applying arrow procedure in `cond' and before applying
13656 receiver procedure in call-with-current-continuation.
13657 (scm_i_eval): Do not invoke scm_copy_tree in argument in SCM_XEVAL
13658 macro. The argument is expanded more than one time.
13659
13660 * numbers.c (scm_logior) [SCM_DIGSTOOBIG]: Correctly use
13661 SCM_BIGDIG instead of BIGDIG. Thanks to Steven G. Johnson!
13662
136632001-02-20 Marius Vollmer <mvo@zagadka.ping.de>
13664
13665 * guile-doc-snarf.in, guile-func-name-check.in: Added copyright
13666 notice and license.
13667
7090240c
MG
136682001-02-17 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13669
13670 * variable.c (scm_make_variable, scm_make_undefined_variable)
13671 (scm_variable_ref, scm_variable_set_x, scm_builtin_variable)
13672 (scm_variable_bound_p), values.c (scm_values)
13673 (scm_call_with_values), unif.c (scm_bit_count)
13674 (scm_bit_set_star_x), symbols.c (scm_gentemp)
13675 (scm_gensym), strings.c (scm_string_p, scm_make_string)
13676 (scm_read_only_string_p, scm_string_length, scm_string_ref)
13677 (scm_string_set_x, scm_substring, scm_string_append), stime.c
13678 (scm_strptime, scm_mktime), random.c (scm_seed_to_random_state)
13679 (scm_copy_random_state, scm_random), print.c (scm_newline)
13680 (scm_write_char, scm_simple_format), debug-malloc.c
13681 (scm_malloc_stats), environments.c (scm_environment_p)
13682 (scm_environment_bound_p, scm_environment_ref)
13683 (scm_environment_fold, scm_environment_define)
13684 (scm_environment_undefine, scm_environment_set_x)
13685 (scm_environment_cell, scm_environment_observe)
13686 (scm_environment_observe_weak, scm_environment_unobserve)
13687 (scm_make_eval_environment, scm_eval_environment_p)
13688 (scm_eval_environment_set_local_x, scm_eval_environment_local)
13689 (scm_eval_environment_imported)
13690 (scm_eval_environment_set_imported_x, scm_make_import_environment)
13691 (scm_import_environment_p, scm_import_environment_imports)
13692 (scm_import_environment_set_imports_x, scm_make_export_environment)
13693 (scm_export_environment_p, scm_export_environment_private)
13694 (scm_export_environment_set_private_x)
13695 (scm_export_environment_signature)
13696 (scm_export_environment_set_signature_x, scm_leaf_environment_p):
13697 Added texinfo markup.
13698
13699 * ports.c (scm_drain_input): Lowercased argument to @var.
13700 (scm_current_input_port, scm_current_output_port): Filled in
13701 missing explanation.
13702 (scm_current_load_port, scm_set_current_output_port)
13703 (scm_set_current_error_port, scm_port_line, scm_set_port_line_x):
13704 Added texinfo markup.
13705
13706 * arbiters.c (scm_make_arbiter, scm_try_arbiter)
13707 (scm_release_arbiter): Added texinfo markup to docstrings.
13708 Changed `Returns' to `Return'.
13709 (arbiter_print): Changed SCM_CDR to SCM_SMOB_DATA.
13710
25703850
NJ
137112001-02-16 Neil Jerram <neil@ossau.uklinux.net>
13712
13713 * guile-snarf.awk.in: Quote any `@'s that occur in Scheme names,
13714 by doubling them to `@@'.
13715
73c0fdce
MG
137162001-02-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13717
13718 * numbers.c (scm_lognot), random.c (scm_random,
13719 scm_random_normal, scm_random_solid_sphere_x,
13720 scm_random_hollow_sphere_x, scm_random_normal_vector_x,
13721 scm_random_exp), dynwind.c
13722 (scm_dynamic_wind): Removed unnecessary "" from docstrings.
1c938eb8 13723
73c0fdce
MG
13724 * goops.c (scm_sys_initialize_object, scm_instance_p,
13725 scm_class_name, scm_class_precedence_list, scm_class_slots,
13726 scm_class_environment, scm_generic_function_name,
13727 scm_generic_function_methods, scm_method_generic_function,
13728 scm_method_specializers, scm_method_procedure, scm_make_unbound,
13729 scm_unbound_p, scm_assert_bound, scm_at_assert_bound_ref,
13730 scm_sys_fast_slot_ref, scm_sys_fast_slot_set_x, scm_slot_ref,
13731 scm_slot_set_x, _scm_slot_bound_p, scm_slots_exists_p,
13732 scm_sys_allocate_instance, scm_make, scm_pure_generic_p,
13733 scm_class_direct_supers, scm_class_direct_slots,
13734 scm_class_direct_subclasses, scm_class_direct_methods,
13735 scm_accessor_method_slot_definition, scm_sys_goops_loaded),
13736 debug.c (scm_with_traps, scm_memoized_p, scm_make_gloc,
13737 scm_gloc_p, scm_make_iloc, scm_iloc_p, scm_memcons,
13738 scm_mem_to_proc, scm_proc_to_mem, scm_unmemoize,
13739 scm_memoized_environment, scm_procedure_name,
13740 scm_procedure_source, scm_procedure_environment, scm_debug_hang),
13741 objects.c
13742 (scm_class_of, scm_entity_p, scm_operator_p,
13743 scm_set_object_procedure_x, scm_object_procedure,
13744 scm_make_class_object), hooks.c (scm_make_hook_with_name,
13745 scm_make_hook, scm_hook_p, scm_hook_empty_p, scm_add_hook_x,
13746 scm_remove_hook_x, scm_reset_hook_x, scm_run_hook,
13747 scm_hook_to_list), lang.c
13748 (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null, scm_nil_eq),
13749 numbers.c (scm_sys_expt, scm_sys_atan2), print.c
13750 (scm_print_options, scm_port_with_print_state,
13751 scm_get_print_state), procs.c (scm_make_cclo, scm_procedure_p,
13752 scm_closure_p, scm_thunk_p, scm_procedure_with_setter_p,
13753 scm_make_procedure_with_setter, scm_procedure), throw.c
13754 (scm_lazy_catch), modules.c (scm_standard_eval_closure), load.c
13755 (scm_parse_path, scm_search_path), stacks.c (scm_make_stack,
13756 scm_stack_ref, scm_stack_length, scm_frame_p,
13757 scm_last_stack_frame, scm_frame_number, scm_frame_source,
13758 scm_frame_procedure, scm_frame_arguments, scm_frame_previous,
13759 scm_frame_next, scm_frame_real_p, scm_frame_procedure_p,
13760 scm_frame_evaluating_args_p, scm_frame_overflow_p), filesys.c
13761 (scm_dirname, scm_basename), dynwind.c
13762 (scm_wind_chain), read.c (scm_read_options, scm_read,
13763 scm_read_hash_extend), gc.c
13764 (scm_unhash_name), eval.c (scm_eval_options_interface,
13765 scm_evaluator_traps, s_scm_nconc2last), backtrace.c
13766 (scm_display_error, scm_set_print_params_x,
13767 scm_display_application, scm_display_backtrace, scm_backtrace),
13768 async.c (scm_async, scm_system_async, scm_async_mark,
13769 scm_system_async_mark, scm_run_asyncs, scm_noop,
13770 scm_set_tick_rate, scm_set_switch_rate, scm_unmask_signals,
13771 scm_mask_signals): Added docstrings.
13772
e228a203
KN
137732001-02-15 Keisuke Nishida <kxn30@po.cwru.edu>
13774
13775 * dump.c (scm_undump): Use SCM_CARLOC/SCM_CDRLOC to obtain the
13776 address of car/cdr. (Thanks to Dirk Herrmann)
13777 Use scm_sizet to obtain the length of strings.
13778 (Thanks to Matthias Koeppe)
13779
1552a59d
MV
137802001-02-15 Marius Vollmer <mvo@zagadka.ping.de>
13781
13782 * symbols.c (scm_mem2symbol): Put a empty statement after the
13783 next_symbol label. This is mandated by ANSI, appearantly.
13784
3178f751
MV
137852001-02-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13786
13787 * gc_os_dep.c: Do not include <linux/version.h>. It makes no
13788 sense to compile for a specific kernel version. Do not include
13789 <asm/signal.h> while defining __KERNEL__. This hack should no
13790 longer be needed and caused problems.
13791
7af4defe
MV
137922001-02-13 Marius Vollmer <mvo@zagadka.ping.de>
13793
13794 * eval.c (scm_ceval, scm_deval): use `SIDEVAL' instead of
13795 SCM_CEVAL when evaluating subforms of `begin' forms. SCM_CEVAL
13796 can not deal with immediates.
13797
5d6bb349
KN
137982001-02-12 Keisuke Nishida <kxn30@po.cwru.edu>
13799
13800 * list.c (scm_list_copy): Validate the first argument.
13801
ec9709f0
MV
138022001-02-11 Marius Vollmer <mvo@zagadka.ping.de>
13803
13804 Fix evaluator so that top-level expressions are correctly
13805 evaluated with respect to the module system.
1c938eb8 13806
ec9709f0
MV
13807 * modules.h. modules.c (scm_current_module_lookup_closure): New
13808 function.
13809
13810 * eval.h (scm_primitive_eval, scm_primitive_eval_x): New
13811 prototypes.
13812 (scm_i_eval, scm_i_eval_x, scm_eval, scm_eval_x): Changed argument
13813 names to better reflect their meaning.
13814
13815 * eval.c (scm_ceval, scm_deval): Recognize when `begin' is being
13816 evaluated at top-level and synronize lookup closure before
13817 executing every subform.
13818 (scm_primitve_eval_x, scm_primitive_eval): New functions.
13819 (scm_eval_x, scm_eval): Reimplement in terms of
13820 scm_primitive_eval_x and scm_primitive_eval, respectively.
1c938eb8 13821
ec9709f0
MV
138222001-02-09 Marius Vollmer <mvo@zagadka.ping.de>
13823
13824 * macros.c (scm_macro_name, scm_macro_transformer): Use
13825 SCM_SMOB_DATA instead of SCM_CDR. Provided by Martin Grabmueller.
13826 Thanks!
13827
42417394
KN
138282001-02-10 Keisuke Nishida <kxn30@po.cwru.edu>
13829
13830 * dump.c (scm_store_bytes): Store data size before data.
13831 (scm_restore_bytes): Restore data size. Takes a pointer to size.
13832 * dump.h (scm_restore_bytes): Updated.
13833
bf942687
KN
138342001-02-09 Keisuke Nishida <kxn30@po.cwru.edu>
13835
13836 * dump.c: Use double cells for update schedule.
13837
1be4270a
KN
138382001-02-08 Keisuke Nishida <kxn30@po.cwru.edu>
13839
13840 * ports.c (scm_unread_char): Take an optional argument.
13841
548728ea
MV
138422001-02-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13843
13844 * modules.h (scm_selected_module, scm_current_module): Renamed
13845 scm_selected_module to scm_current_module to synchronize Scheme
13846 and C names.
13847 (scm_select_module, scm_set_current_module): Likewise. Changed
13848 all uses.
1c938eb8 13849
548728ea
MV
13850 * ports.c (scm_port_for_each): Make a snapshot of the port table
13851 before iterating over it. The table might change while the user
13852 code is running. With the snapshot, the user can depend on the
c5408bc3 13853 fact that each port that existed at the start of the iteration is
548728ea
MV
13854 encountered exactly once. (ice-9 popen) depends on this.
13855
cb0d8be2
DH
138562001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
13857
13858 * strings.h (SCM_STRING_MAX_LENGTH): New macro.
13859
13860 * strings.c (scm_makstr, scm_take_str, scm_make_string): Added
13861 range checking for the size parameter. Thanks to Martin
13862 Grabmueller for the hint.
13863
13864 (scm_makstr): Reordered string initialization to make interrupt
13865 deferring unnecessary.
13866
13867 * vectors.c (scm_make_vector): Fixed range checking.
13868
e382fdbe
DH
138692001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
13870
13871 * vectors.h (SCM_VECTOR_MAX_LENGTH): New macro.
13872
13873 * vectors.c (scm_make_vector, scm_c_make_vector): Improved the
13874 checking of the size parameter for type correctness and valid
13875 range. Thanks to Rob Browning for reporting the problem. Instead
13876 of deferring interrupts, scm_remember_upto_here_1 is used.
13877
bf8f0922
KN
138782001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
13879
13880 * dump.c (scm_store_cell_object, scm_restore_cell_object): Removed.
13881 (scm_dump_cell_update): Removed.
13882 (scm_dump_update): Renamed from scm_dump_object_update.
13883 (scm_restore_string, scm_restore_bytes, scm_restore_word): Takes
13884 a pointer instead of returning a value.
13885 * keywords.c (keyword_undump): Updated.
13886
914cceec
KN
138872001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
13888
13889 * dump.c, dump.h: Modified a lot.
5f17c66f 13890 (SCM_DUMP_COOKIE): Version 0.1
914cceec
KN
13891 (scm_dump_mark): Removed.
13892 (scm_restore_cell_object, scm_store_cell_object): New functions.
13893
13894 * smob.h (scm_smob_descriptor): Removed slots: dump_mark,
13895 dump_dealloc, dump_store, undump_alloc, undump_restore, undump_init.
13896 New slots: dump, undump.
13897 * smob.c (scm_make_smob_type, scm_set_smob_dump, scm_set_smob_undump):
13898 Updated.
13899
13900 * keywords.c (keyword_dump): Renamed from keyword_dealloc.
13901 (keyword_undump): Renamed from keyword_alloc.
13902 (scm_init_keywords): Set keyword_dump and keyword_undump.
13903
ecf470a2
ML
139042001-02-03 Michael Livshin <mlivshin@bigfoot.com>
13905
13906 * gc.c (DOUBLECELL_ALIGNED_P): new macro, a better-named analog of
13907 the deprecated SCM_DOUBLE_CELLP.
13908
13909 * tags.h (SCM_DOUBLE_CELLP): deprecated.
13910
03416a99
KN
139112001-02-02 Keisuke Nishida <kxn30@po.cwru.edu>
13912
13913 * dump.c, dump.h: New files.
13914 * Makefile.am: Added dump.c, dump.h, dump.x, dump.doc.
13915 * init.c: #include "libguile/dump.h".
13916 (scm_init_guile_1): Call scm_init_dump.
13917 * smob.h (scm_smob_descriptor): New slots: dump_mark,
13918 dump_dealloc, dump_store, undump_alloc, undump_restore,
13919 undump_init.
13920 * smob.c (scm_make_smob_type): Init the new slots.
13921 (scm_set_smob_dump, scm_set_smob_undump): New functions.
13922 * smob.h (scm_set_smob_dump, scm_set_smob_undump): Declared.
13923
13924 * keywords.c: #include "libguile/dump.h".
13925 (keyword_dealloc, keyword_alloc): New functions.
13926 (scm_init_keywords): Set smob_dump and smob_undump.
13927
00ffa0e7
KN
139282001-02-01 Keisuke Nishida <kxn30@po.cwru.edu>
13929
13930 * vectors.c (scm_c_make_vector): New function.
13931 * vectors.h (scm_c_make_vector): Declared.
13932 * eval.c (scm_copy_tree), filesys.c (scm_stat2scm), fluids.c
13933 (scm_make_initial_fluids, grow_fluids), gc.c (scm_init_storage),
13934 gh_data.c (gh_ints2scm, gh_doubles2scm): goops.c
13935 (scm_make_method_cache, scm_i_vector2list,
13936 scm_compute_applicable_methods, scm_sys_method_more_specific_p),
13937 init.c (start_stack), net_db.c (scm_gethost, scm_getnet,
13938 scm_getproto, scm_return_entry), posix.c (scm_getgroups,
13939 scm_getpwuid, scm_getgrgid, scm_uname), print.c (make_print_state,
13940 grow_ref_stack), regex-posix.c (scm_regexp_exec), scmsigs.c
13941 (scm_init_scmsigs), socket.c (scm_addr_vector, scm_addr_vector),
13942 stime.c (scm_times, filltime), unif.c (scm_make_uve), vectors.c
13943 (scm_vector, scm_make_vector): Use scm_c_make_vector.
13944
13945 * hashtab.c (scm_c_make_hash_table): New function.
13946 * hashtab.h (scm_c_make_hash_table): Declared.
13947 * environments.c (scm_make_leaf_environment,
13948 scm_make_eval_environment), gc.c (scm_init_storage),
13949 keywords.c (scm_init_keywords), symbols.c (scm_builtin_bindings):
13950 Use scm_c_make_hash_table.
13951
b8446ce8
MD
139522001-01-31 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13953
13954 * unif.c (rapr1): Don't apply scm_uniform_vector_length on arrays.
13955
e3239868
DH
139562001-01-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13957
13958 * struct.c (scm_make_vtable_vtable): Removed unnecessary "" from
13959 end of docstring.
13960
13961 * struct.c (scm_struct_set_x, scm_struct_vtable_tag,
13962 scm_struct_vtable_name, scm_set_struct_vtable_name_x), weaks.c
13963 (scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table,
13964 scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
13965 srcprop.c (scm_source_properties, scm_set_source_properties_x,
13966 scm_source_property, scm_set_source_property_x), sort.c
13967 (scm_sort_list_x, scm_restricted_vector_sort_x, scm_sorted_p,
13968 scm_merge, scm_merge_x, scm_sort_x, scm_sort, scm_stable_sort_x,
13969 scm_stable_sort, scm_sort_list_x, scm_sort_list): Added
13970 docstrings.
13971
41ee56dd
MD
139722001-01-29 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13973
13974 * eval.c (SCM_APPLY): Check that primitives which take 1 arg
13975 really get that arg.
13976
b6311c08
KN
139772001-01-26 Keisuke Nishida <kxn30@po.cwru.edu>
13978
13979 * goops.c (s_scm_get_keyword): Bug fix.
13980
a49af0c0
DH
139812001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
13982
13983 The following patch was sent by Martin Grabmueller. It makes sure
13984 that in case of parameter errors the correct function name is
13985 shown, and that parameter types are only checked once.
13986
13987 * strop.c (string_copy, string_upcase_x, string_downcase_x,
13988 string_capitalize_x): New functions. Each one performs the core
13989 functionality of the corresponding scm_* function.
13990
13991 (scm_string_copy, scm_string_upcase_x, scm_string_upcase,
13992 scm_string_downcase_x, scm_string_downcase,
13993 scm_string_capitalize_x, scm_string_capitalize): Reduced to
13994 parameter checking wrappers of the above functions.
13995
13070bd3
DH
139962001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
13997
13998 * continuations.c, dynl.c, keywords.c, load.c: Include
13999 strings.h. Thanks to Bill Schottstaedt for the bug report.
14000
2f2b390c
DH
140012001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14002
14003 * backtrace.c (display_header): Make sure that line and column
14004 information is shown independent of whether the port the code was
14005 read from had an associated filename. Thanks to Martin
14006 Grabmueller for providing this patch.
14007
efa40607
DH
140082001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14009
14010 * fports.[ch] (scm_file_port_p): New primitive.
14011
a98bddfd
DH
140122001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14013
14014 * tags.h (scm_tc16_fport, scm_tc16_strport, scm_tc16_sfport):
14015 These are now defined in fports.c, strports.c and vports.c.
14016
14017 * fports.[ch] (scm_tc16_fport), strports.c (scm_tc16_strport),
14018 vports.c (scm_tc16_sfport): Made variables (were macros defined in
14019 tags.h).
14020
14021 fports.c (scm_make_fptob), strports.c (scm_make_stptob), vports.c
14022 (scm_make_sfptob): Made static. These return a type code now.
14023
14024 fports.c (scm_init_fports), strports.c (scm_init_strports),
14025 vports.c (scm_init_vports): Create the corresponding port types.
14026
14027 * fports.h (SCM_FPORTP, SCM_OPFPORTP, SCM_OPINFPORTP,
14028 SCM_OPOUTFPORTP): Redefined in terms of scm_tc16_fport.
14029
14030 * init.c (scm_init_guile_1): Make sure strports are initialized
14031 before gdbint.
14032
14033 * ports.[ch] (scm_make_port_type): Changed the return type to
14034 scm_bits_t.
14035
14036 * ports.c (scm_ports_prehistory): Don't create any port types
14037 here.
14038
14039 * posix.c (scm_ttyname): Use SCM_FPORTP instead of comparing
14040 against scm_tc16_fport directly.
14041
0419a528
DH
140422001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14043
14044 * srcprop.c (scm_set_source_property_x): Fix to handle
14045 (set-source-property! <obj> 'copy <datum>) correctly.
14046
6d36532c
GH
140472001-01-24 Gary Houston <ghouston@arglist.com>
14048
14049 * filesys.c (scm_link): docstring fix.
14050 * fports.h (scm_setfileno): obsolete declaration removed.
14051 * posix.c: bogus popen declaration removed.
14052
14053 * rdelim.c: new file, split from ioext.c.
14054 * rdelim.h: new file, split from ioext.h
14055 * Makefile.am: add rdelim.c and related files.
14056 * init.c: call scm_init_rdelim. include rdelim.h.
14057
3ba5a6c2
DH
140582001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
14059
14060 This patch was sent by Martin Grabmueller and makes sure that
14061 parameter errors are reported correctly by the lexicographic
14062 ordering predicates.
14063
14064 * strorder.c (string_less_p, string_ci_less_p): New functions.
14065
14066 (scm_string_less_p, scm_string_ci_less_p): Extracted the core
14067 functionality into string_less_p, string_ci_less_p respectively.
14068 The remaining code is just a wrapper to do the parameter
14069 checking.
14070
14071 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p): Check the
14072 parameters and call string_less_p instead of scm_string_less_p.
14073
14074 (scm_string_ci_leq_p, scm_string_ci_gr_p, scm_string_ci_geq_p):
14075 Check the parameters and call string_less_ci_p instead of
14076 scm_string_ci_less_p.
14077
e40a4095
DH
140782001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
14079
ed6a2db9
DH
14080 This patch modifies scm_display_error to perform parameter
14081 checking. Thanks to Neil Jerram for the bug report.
14082
e40a4095
DH
14083 * backtrace.[ch] (scm_i_display_error): New function.
14084
14085 * backtrace.c (scm_display_error): Added parameter check and
14086 extracted the core functionality into function
14087 scm_i_display_error.
14088
14089 * throw.c (handler_message): Call scm_i_display_error to display
14090 the error message.
14091
f1e06a96
MD
140922001-01-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
14093
14094 * eval.c (SCM_APPLY): Added # args check for application of
14095 procedures with arity 3. (Thanks to Anders Holst.)
14096
30ea841d
DH
140972001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
14098
14099 * filesys.h (SCM_DIR_FLAG_OPEN, SCM_DIR_OPEN_P): Added.
14100
14101 (SCM_OPDIRP): Deprecated.
14102
14103 * filesys.c (scm_opendir): Use SCM_DIR_FLAG_OPEN instead of
14104 SCM_OPN.
14105
14106 (scm_readdir, scm_rewinddir): Don't use SCM_VALIDATE_OPDIR.
14107 Instead, give an explicit error message in case the directory is
14108 closed.
14109
14110 (scm_closedir, scm_dir_print): Rewritten to use SCM_DIR_OPEN_P
14111 instead of SCM_OPENP and SCM_CLOSEDP.
14112
14113 * validate.h (SCM_VALIDATE_OPDIR): Deprecated.
14114
312ae976
DH
141152001-01-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
14116
14117 * eval.c (inner_eval, scm_eval): Move all real functionality into
14118 inner_eval. Avoid to copy the expression twice by inlining some
14119 code from scm_i_eval.
14120
4567ed78
DH
141212001-01-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
14122
14123 * eval.c (scm_m_case): The 'else' clause of a 'case' statement
14124 now has to be the last clause, as required by R5RS. Thanks to
14125 Martin Grabmueller for the patch.
14126
10288a09
GH
141272001-01-18 Gary Houston <ghouston@arglist.com>
14128
14129 * ioext.c: further simplify scm_read_string_x_partial by defining
14130 a macro SCM_EBLOCK.
14131
8f379a8f
DH
141322001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
14133
14134 * gh_data.c (gh_ints2scm): Simplified using SCM_FIXABLE.
14135
5c75b29f
DH
141362001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
14137
14138 * __scm.h: Added comment about architecture and compiler
14139 properties that are required by guile.
14140
14141 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
14142 SCM_MOST_NEGATIVE_FIXNUM): Moved to numbers.h.
14143
14144 (SCM_CHAR_BIT, SCM_LONG_BIT): Moved here from numbers.h.
14145
14146 * numbers.h (SCM_CHAR_BIT, SCM_LONG_BIT): Moved to __scm.h.
14147
14148 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
14149 SCM_MOST_NEGATIVE_FIXNUM): Moved here from __scm.h.
14150
ac0c002c
DH
141512001-01-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
14152
14153 * __scm.h (SCM_FIXNUM_BIT): Added. The name is chosen in analogy
14154 to the names in limits.h.
14155
14156 * numbers.c (abs_most_negative_fixnum): Added.
14157
14158 (scm_quotient, scm_remainder): Fixed the fixnum-min / (abs
14159 fixnum-min) special case.
14160
14161 (scm_big_and): Fix for negative first parameter.
14162
14163 (scm_bit_extract): Fix for fixnum paramters.
14164 Thanks to Rob Browning for the bug report.
14165
14166 (scm_init_numbers): Initialize abs_most_negative_fixnum.
14167
debe0dc2
DH
141682001-01-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
14169
14170 * symbols.c (scm_symbol_bound_p): Fixed comment.
14171 Thanks to Chris Cramer.
14172
8a39e3fc
DH
141732001-01-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
14174
14175 * smob.[ch] (scm_make_smob_type): Return type is scm_bits_t now.
14176 Thanks to Bill Schottstaedt.
14177
322ec19d
ML
141782001-01-11 Michael Livshin <mlivshin@bigfoot.com>
14179
9a5fa6e9 14180 from Matthias Köppe:
1c938eb8 14181
322ec19d
ML
14182 * objects.h (SCM_SET_ENTITY_SETTER): new macro. SCM_ENTITY_SETTER
14183 casts its result, so doesn't yield an lvalue per ANSI C.
14184
14185 * goops.c (s_scm_sys_set_object_setter_x): use
14186 SCM_SET_ENTITY_SETTER.
14187 (clear_method_cache): use SCM_SET_ENTITY_PROCEDURE.
14188
14189 * gc.h (SCM_GC_SET_CARD_BVEC): new macro. SCM_GC_CARD_BVEC casts
14190 its result, so doesn't yield an lvalue per ANSI C.
14191 (SCM_GC_SET_CARD_FLAGS): ditto for SCM_GC_GET_CARD_FLAGS.
14192 (SCM_GC_CLR_CARD_FLAGS): redefined in terms of
14193 SCM_GC_SET_CARD_FLAGS.
14194 (SCM_GC_SET_CARD_FLAG, SCM_GC_CLR_CARD_FLAGS): ditto.
14195
14196 * gc.c (INIT_CARD): use the explicit setter macro to set the bvec.
14197
60d02d09
GH
141982001-01-08 Gary Houston <ghouston@arglist.com>
14199
14200 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): new macro.
14201 * ioext.c (scm_read_string_x_partial, scm_read_delimited_x),
14202 socket.c (scm_recvfrom): use the new macro, plus minor docstring
14203 changes.
14204 * ioext.c (scm_read_string_x_partial): don't crash if -1 is supplied
14205 for fdes. if current input port is used, check that it's a file
14206 port.
14207
c2da2648
GH
142082001-01-06 Gary Houston <ghouston@arglist.com>
14209
14210 * ioext.c (scm_read_string_x_partial): new procedure, implements
14211 read-string!/partial.
14212 * ports.c (scm_take_from_input_buffers): new procedure used by
14213 scm_read_string_x_partial.
14214 (scm_drain_input): use scm_take_from_input_buffers.
14215
4651d663
MV
142162001-01-06 Marius Vollmer <mvo@zagadka.ping.de>
14217
14218 * validate.h (SCM_VALIDATE_NUMBER): New.
14219
c0a5d888
ML
142202001-01-03 Michael Livshin <mlivshin@bigfoot.com>
14221
14222 * guardians.c (F_GREEDY, F_LISTED, F_DESTROYED, GREEDY_P,
14223 SET_GREEDY, LISTED_P, SET_LISTED, CLR_LISTED, DESTROYED_P,
14224 SET_DESTROYED): new defines/macros.
14225 (GUARDIAN_LIVE, GUARDIAN_ZOMBIES, GUARDIAN_NEXT): deleted.
14226 (add_to_live_list): takes a `guardian_t *' now, not SCM.
14227 (guardian_print): print more info.
14228 (guardian_apply): check if the guardian is destroyed, and throw an
14229 error if so. take one more optional argument `throw_p'.
14230 (scm_guard): depending on the value of `throw_p', return a boolean
14231 result.
14232 (scm_get_one_zombie): remove redundant property test.
14233 (guardian_t): represent the various (currently 3, I hope nothing
14234 more gets added) boolean fields as bit flags.
14235 (scm_guardian_destroyed_p, scm_guardian_greedy_p): new predicates.
14236 (scm_destroy_guardian_x): new procedure.
14237
14238 * guardians.h: added prototypes for `scm_guardian_greedy_p' and
14239 `scm_guardian_destroyed_p'. changed prototype for `scm_guard'.
14240
0c6d2191
GH
142412001-01-01 Gary Houston <ghouston@arglist.com>
14242
14243 * fports.c (fport_write): bugfix: handle short writes for
14244 unbuffered ports too. optimize the buffered case by minimizing
14245 the number of write/flush calls.
14246 (write_all): new helper procedure.
14247
a51fe247 14248The ChangeLog continues in the file: "ChangeLog-2000"
d9f71a07
LC
14249
14250;; Local Variables:
14251;; coding: utf-8
14252;; End: