Release stuff: missing NEWS and 2007/2008 copyrights.
[bpt/guile.git] / libguile / ChangeLog
CommitLineData
5b5179f8
LC
12008-02-12 Ludovic Courtès <ludo@gnu.org>
2
3 * guile-snarf.in (tempdir): Honor `$TMPDIR'.
4
4b26c03e
NJ
52008-02-11 Neil Jerram <neil@ossau.uklinux.net>
6
7 * numbers.c (SCM_COMPLEX_VALUE): Use GUILE_I instead of _Complex_I
8 directly, and only if GUILE_I was defined by the configure step.
9 (scm_log, scm_log10, scm_exp, scm_sqrt): Use SCM_COMPLEX_VALUE
10 code only if SCM_COMPLEX_VALUE is defined.
11
7f74cf9a
LC
122008-02-07 Ludovic Courtès <ludo@gnu.org>
13
14 Fix bug #21378.
15 Thanks to David Diffenbaugh <davediff@nbcs.rutgers.edu>.
16
17 * read.c (scm_read_quote): Don't use `__FUNCTION__' since it is
18 not supported by Sun CC on Solaris 9.
19 (scm_read_keyword): Likewise.
20 * strings.c (scm_take_locale_stringn): Remove
21 `SCM_C_INLINE_KEYWORD' to allow compilation with Sun CC.
22
86a597f8
NJ
232008-02-07 Julian Graham <joolean@gmail.com>
24
25 * threads.c (do_thread_exit, scm_cancel_thread,
26 scm_set_thread_cleanup_x, scm_thread_cleanup): Lock on thread-specific
27 admin mutex instead of `thread_admin_mutex'.
28 * threads.h (scm_i_thread)[admin_mutex]: New field.
29 * throw.c (make_jmpbuf): Don't enter critical section during thread
30 spawn -- there is a possibility of deadlock if other threads are
31 exiting.
32
4a19ed04
NJ
332008-02-06 Neil Jerram <neil@ossau.uklinux.net>
34
35 * gc-malloc.c (scm_gc_malloc): Return NULL if requested size is 0.
36 (scm_gc_free): Don't call `free' if mem is NULL.
37
189171c5
LC
382008-02-06 Ludovic Courtès <ludo@gnu.org>
39
40 * numbers.c (scm_i_mkbig, scm_i_long2big, scm_i_ulong2big,
41 scm_i_clonebig, scm_i_bigcmp, scm_i_dbl2big, scm_i_dbl2num,
42 scm_i_normbig): Remove `SCM_C_INLINE_KEYWORD' since these are
43 declared as `extern' in `numbers.h'. This precluded compilation
44 on Solaris 9 with Sun CC (reported by David Halik
45 <dhalik@nbcs.rutgers.edu>).
46
d05bcb2e
NJ
472008-02-05 Neil Jerram <neil@ossau.uklinux.net>
48
49 * fports.c (fport_seek): Make dependent on GUILE_USE_64_CALLS.
50
51 * _scm.h: Make definition of CHOOSE_LARGEFILE depend on
52 GUILE_USE_64_CALLS.
53
3ac8359a
NJ
542008-02-01 Neil Jerram <neil@ossau.uklinux.net>
55
56 * modules.c (the_root_module): Moved before scm_current_module.
57 (scm_current_module): Return the root module if `the-module' fluid
58 gives #f.
59
d3cf93bc
NJ
602008-01-22 Neil Jerram <neil@ossau.uklinux.net>
61
7df13834
NJ
62 * COPYING: Removed.
63
d3cf93bc
NJ
64 * __scm.h, _scm.h, weaks.c: Update copyright statement to LGPL.
65
15bd90ea
NJ
662008-01-18 Neil Jerram <neil@ossau.uklinux.net>
67
68 * hashtab.c (scm_hash_fn_create_handle_x): If supplied assoc_fn
69 returns neither a pair nor #f, signal a wrong-type-arg error.
70 (Thanks to Gregory Marton for reporting this.)
71
5c004b6d
NJ
722007-12-29 Neil Jerram <neil@ossau.uklinux.net>
73
74 * gc.c (mark_gc_async): Change "func_data" to "fn_data", to avoid
75 clash with AIX header file.
76 * hooks.c (scm_c_hook_add, scm_c_hook_remove): Same again.
77 * hooks.h (scm_t_c_hook_function, scm_c_hook_add,
78 scm_c_hook_remove): Same again.
79
9cc37597
LC
802007-12-08 Ludovic Courtès <ludo@gnu.org>
81
82 * __scm.h (SCM_EXPECT, SCM_LIKELY, SCM_UNLIKELY): New macros.
83 (SCM_ASSERT, SCM_ASSERT_TYPE, SCM_ASRTGO, SCM_GASSERT0,
84 SCM_GASSERT1, SCM_GASSERT2, SCM_GASSERTn): Use them.
85 * eval.c (ASSERT_SYNTAX, ASSERT_SYNTAX_2): Likewise.
86 * eval.i.c (CEVAL): Use branch prediction hints for syntax
87 errors, wrong number of arguments and similar.
88 * numbers.c (scm_sum): Use `SCM_LIKELY' for the sum of two
89 immediate numbers.
90 (scm_difference, scm_product, scm_i_divide): Likewise.
91 * validate.h (SCM_ASSERT_RANGE): Use `SCM_UNLIKELY'.
92
7d1fc872
LC
932007-12-04 Ludovic Courtès <ludo@gnu.org>
94
693758d5
LC
95 * ports.c (scm_c_read): Validate PORT as an open input port.
96 (scm_c_write): Validate PORT as an open output port.
97
7d1fc872
LC
98 * socket.c (scm_accept): Leave guile mode using
99 `scm_std_select ()' before calling `accept(2)'. Reported by
100 dskr <dskr@mac.com>.
101
ee834df4
LC
1022007-10-27 Ludovic Courtès <ludo@gnu.org>
103
104 * fports.c (scm_i_evict_port): Expect a port, rather than a pair
105 containing the port. Fixes a bug in the new port table (2007-08-26).
106 (scm_evict_ports): Use `scm_c_port_for_each ()'.
107
acbfb594
NJ
1082007-10-21 Neil Jerram <neil@ossau.uklinux.net>
109
110 * eval.c (unmemoize_delay): Extend the environment before
111 unmemoizing the promise thunk. This fixes a segmentation fault
112 reported by Frank Schwidom.
113
2e77f720
LC
1142007-10-20 Julian Graham <joolean@gmail.com>
115
116 Add support for thread cancellation and user-defined thread
117 cleanup handlers. Small rework by Ludovic Courtès.
118
119 * null-threads.h (scm_i_pthread_cancel,
120 scm_i_pthread_cleanup_push, scm_i_pthread_cleanup_pop): New.
121 * pthread-threads.h (scm_i_pthread_cancel,
122 scm_i_pthread_cleanup_push, scm_i_pthread_cleanup_pop): New.
123 * scmsigs.c (scm_i_signal_delivery_thread,
124 signal_delivery_thread_mutex): New.
125 (signal_delivery_thread): Leave when `read_without_guile ()'
126 returns zero.
127 (start_signal_delivery_thread): Acquire SIGNAL_DELIVERY_THREAD
128 before spawning the thread. Initialize
129 SCM_I_SIGNAL_DELIVERY_THREAD.
130 (ensure_signal_delivery_thread): Renamed to...
131 (scm_i_ensure_signal_delivery_thread): this.
132 (scm_i_close_signal_pipe): New.
133 * scmsigs.h: Updated.
134 * threads.c (thread_mark): Mark `t->cleanup_handler'.
135 (guilify_self_1): Initialize `t->cleanup_handler' and
136 `t->canceled'.
137 (do_thread_exit): Invoke `t->cleanup_handler'.
138 (on_thread_exit): Call `scm_i_ensure_signal_delivery_thread ()'.
139 Call `scm_i_close_signal_pipe ()' when the next-to-last thread
140 vanishes.
141 (scm_leave_guile_cleanup): New.
142 (scm_i_with_guile_and_parent): Use `scm_i_pthread_cleanup_push ()'
143 and `scm_leave_guile_cleanup ()' to leave guile mode, rather
144 than call `scm_leave_guile ()' after FUNC.
145 (scm_cancel_thread, scm_set_thread_cleanup_x,
146 scm_threads_cleanup): New.
147 (scm_all_threads): Remove SCM_I_SIGNAL_DELIVERY_THREAD from the
148 returned list.
149 * threads.h (scm_i_thread)[cleanup_handler, canceled]: New
150 fields.
151 Add declarations of new functions.
152
d41668fa
LC
1532007-10-17 Ludovic Courtès <ludo@gnu.org>
154
155 * read.c (CHAR_IS_BLANK_): Add `\r' (ASCII 0x0d). This fixes a
156 regression compared to 1.8.2. Reported by Puneet
157 <schemer@gmail.com>.
158
66302618
LC
1592007-10-10 Ludovic Courtès <ludo@gnu.org>
160
161 * pthread-threads.h (SCM_I_PTHREAD_MUTEX_INITIALIZER): Check
162 `SCM_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER'.
163 * gen-scmconfig.h.in
164 (SCM_I_GSC_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER): New.
165 * gen-scmconfig.c (main): Define
166 `SCM_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER'.
167
1445e449
LC
1682007-10-04 Ludovic Courtès <ludo@gnu.org>
169
170 * i18n.c (scm_make_locale)[!USE_GNU_LOCALE_API]: Don't call
171 `leave_locale_section ()' on failure of
172 `enter_locale_section ()' since the mutex is not held and locale
173 settings are unchanged.
174 (scm_nl_langinfo)[!USE_GNU_LOCALE_API]: Use
175 `restore_locale_settings ()' instead of `leave_locale_section ()'
176 since the mutex is not held.
177
29776e85
LC
1782007-10-02 Ludovic Courtès <ludo@gnu.org>
179
180 * threads.c (on_thread_exit): Don't call `scm_leave_guile ()'
181 since we're already in non-guile mode. Reported by Greg Toxel
182 for NetBSD.
183
61d3568b
LC
1842007-10-01 Ludovic Courtès <ludo@gnu.org>
185
186 * ports.c (flush_output_port): Expect directly a port instead of
187 a pair. Fixes a bug in the new port table (2007-08-26).
188
68eccd8b
KR
1892007-09-11 Kevin Ryde <user42@zip.com.au>
190
191 * posix.c (scm_putenv): Confine the putenv("NAME=") bit to mingw, use
192 putenv("NAME") as the fallback everywhere else. In particular this is
193 needed for solaris 9. Reported by Frank Storbeck.
194
454866e0
LC
1952007-09-03 Ludovic Courtès <ludo@gnu.org>
196
197 * read.c (flush_ws): Handle SCSH block comments.
198
f43f3620
LC
1992007-09-03 Ludovic Courtès <ludo@gnu.org>
200
201 Fix alignment issues which showed up at least on SPARC.
202
203 * socket.c (scm_t_max_sockaddr, scm_t_getsockopt_result): New.
204 (scm_inet_pton): Change DST to `scm_t_uint32' for correct
205 alignment.
206 (scm_getsockopt): Change OPTVAL to `scm_t_getsockopt_result' for
207 correct alignment.
208 (_scm_from_sockaddr): Change ADDRESS to `scm_t_max_sockaddr *'.
209 (scm_from_sockaddr): Cast ADDRESS to `scm_t_max_sockaddr *'.
210 (MAX_SIZE_UN, MAX_SIZE_IN6): Removed.
211 (scm_accept, scm_getsockname, scm_getpeername, scm_recvfrom):
212 Use `scm_t_max_sockaddr' instead of "char max_addr[MAX_ADDR_SIZE]".
213
8d4d5dfc
KR
2142007-09-03 Kevin Ryde <user42@zip.com.au>
215
216 * numbers.c (scm_log): Test HAVE_CLOG as well as HAVE_COMPLEX_DOUBLE
217 before using clog(). It's possible for gcc to provide the "complex
218 double" type, but for the system not to have the complex funcs.
219 (scm_exp): Ditto HAVE_CEXP for cexp().
220 (clog, cexp, carg): Remove fallback definitions. These only
221 duplicated the code within scm_log and scm_exp, and the latter have to
222 exist for the case when there's no "complex double". So better just
223 fix up the conditionals selecting between the complex funcs and plain
224 doubles than worry about fallbacks.
225
1ac5fb45
LC
2262007-09-02 Ludovic Courtès <ludo@gnu.org>
227
228 * socket.c (scm_make_socket_address): Free C_ADDRESS after use.
229 This fixes a memory leak.
230
b87e6d04
HWN
2312007-08-26 Han-Wen Nienhuys <hanwen@lilypond.org>
232
5dbc6c06
HWN
233 * fports.c gc-card.c gc.c gc.h ioext.c ports.c ports.h weaks.h
234 gc.c: replace port table with weak hash table. This simplifies
235 memory management, and fixes freed cells appearing in
236 port-for-each output.
237
b87e6d04
HWN
238 * init.c (cleanup_for_exit): abort cleanup if init_mutex is still
239 held.
240
2baec6a9
LC
2412007-08-23 Ludovic Courtès <ludo@gnu.org>
242
492faee1 243 * read.c (scm_read_quote): Record position and copy source
8d4d5dfc 244 expression when asked to. Reported by Kevin.
492faee1 245
2baec6a9
LC
246 * stime.c: Define `_REENTRANT' only if not already defined.
247
1f11c61a
KR
2482007-08-21 Kevin Ryde <user42@zip.com.au>
249
250 * gc-card.c (scm_i_card_statistics): Record scm_tc7_number types as
251 tc16 values so big, real, complex and fraction can be distinguished.
252
253 (scm_i_tag_name): Return "number" for scm_tc7_number, not NULL. NULL
254 was making numbers come out as "type 23" in gc-live-object-stats.
255 Fix tests of the tc16 number types, they were checked under
256 scm_tc7_number, but the values went down the tag>=255 smob case.
257 Put smob case under scm_tc7_smob instead of using tag>=255, per
258 recommendation in comments with scm_tc7_smob to use symbolic values.
259 Use SCM_TC2SMOBNUM to extract scm_smobs index, instead of explicit
260 code. Lose some unnecessary "break" statements.
261
262 (scm_i_card_statistics): Use scm_hashq_create_handle_x and modify the
263 element returned, rather than two lookups scm_hashq_ref and
264 scm_hashq_set_x.
265
949ec9f9
KR
2662007-08-17 Kevin Ryde <user42@zip.com.au>
267
268 * stime.c: Add #define _REENTRANT, to get gmtime_r() prototype on
269 solaris 2.6. Reported by anirkko.
270
6caac03c
LC
2712007-07-29 Ludovic Courtès <ludo@gnu.org>
272
273 * Makefile.am (INCLUDES): Added Gnulib includes.
274 (gnulib_library): New.
275 (libguile_i18n_v_@LIBGUILE_I18N_MAJOR@_la_LIBADD): Added
276 `$(gnulib_library)'.
277 (libguile_la_LIBADD): Likewise.
278
279 * posix.c: Don't define `_GNU_SOURCE' since `gl_EARLY' arranges
280 to define it when available.
281 * srfi-14.c: Likewise.
f7439099
LC
282 * i18n.c: Likewise. Include Gnulib's <alloca.h>
283 * eval.c: Include Gnulib's <alloca.h>.
284 * filesys.c: Likewise.
285 * read.c: Don't include <strings.h> and don't provide an
286 `strncasecmp ()' replacement; use Gnulib's <string.h> and
287 `strncasecmp ()' instead.
6caac03c 288
e08f3f7a
LC
2892007-07-25 Ludovic Courtès <ludo@gnu.org>
290
291 * eval.c (macroexp): When `scm_ilength (res) <= 0', return
292 immediately. This used to produce a circular memoized
293 expression, e.g., for `(set (quote x) #t)'.
294
7337d56d
LC
2952007-07-22 Ludovic Courtès <ludo@gnu.org>
296
297 Overhauled the reader, making it faster.
298
299 * gdbint.c (tok_buf, tok_buf_mark_p): Removed.
300 (gdb_read): Don't use a token buffer. Use `scm_read ()' instead
301 of `scm_lreadr ()'.
302
303 * read.c: Overhauled. No longer use a token buffer. Use a
304 on-stack C buffer in the common case and use Scheme strings when
305 larger buffers are needed.
306 * read.h (scm_grow_tok_buf, scm_flush_ws, scm_casei_streq,
307 scm_lreadr, scm_lreadrecparen): Removed.
308 (scm_i_input_error): Marked as `SCM_NORETURN'.
309
df449722
LC
3102007-07-15 Ludovic Courtès <ludo@gnu.org>
311
312 * script.c (scm_compile_shell_switches): Updated copyright year.
313
b1f57ea4
LC
3142007-07-11 Ludovic Courtès <ludo@gnu.org>
315
316 * goops.c (scm_sys_method_more_specific_p): Added docstring.
317 Make sure LEN is greater than or equal to the minimum length of
318 specializers of M1 and M2. This fixes a segfault later on in
319 `more_specificp ()' if TARGS is too small. Reported by Marco
320 Maggi <marco.maggi-ipsu@poste.it>.
321
d3075c52
LC
3222007-06-26 Ludovic Courtès <ludo@gnu.org>
323
324 * fluids.c (next_fluid_num): When growing ALLOCATED_FLUIDS, make
325 sure to free the previous array after the new one has been
326 installed. This leak is made visible by running
327 "(define l (map (lambda (i) (make-fluid)) (iota 255)))"
328 from the REPL within Valgrind.
329
7a5fb796
LC
3302007-06-12 Ludovic Courtès <ludo@chbouib.org>
331
332 * socket.c (scm_inet_ntop): In the `AF_INET' case, declare `addr4'
333 as an `scm_t_uint32' rather than re-using `addr6'. This fixes a
334 bus error on SPARC (and possibly others) due to unaligned access.
335
a1ef7406
LC
3362007-06-07 Ludovic Courtès <ludovic.courtes@laas.fr>
337
338 * posix.c (scm_ttyname): Check whether RESULT is NULL before
339 making a string from it (reported by Dan McMahill). Don't call
340 `scm_from_locale_string ()' before the mutex is released.
341
3dcf3373
LC
3422007-05-26 Ludovic Courtès <ludo@chbouib.org>
343
344 * eval.c (scm_m_define): Updated comment. Changed order for value
345 evaluation and `scm_sym2var ()' call, which is perfectly valid per
346 R5RS. This reverts the change dated 2004-04-22 by Dirk Herrmann.
347
608860a5
LC
3482007-05-05 Ludovic Courtès <ludo@chbouib.org>
349
350 Implemented lazy duplicate binding handling.
351
352 * modules.c (scm_export): Renamed to...
353 (scm_module_export): This. Now public.
354 (module_variable): Removed.
355 (default_duplicate_binding_procedures_var): New variable.
356 (default_duplicate_binding_handlers, resolve_duplicate_binding,
357 module_imported_variable, scm_module_local_variable,
358 scm_module_variable): New functions.
359 (scm_module_import_interface): Rewritten.
360 (scm_module_reverse_lookup): Exported as a Scheme function.
361 * modules.h (scm_module_index_duplicate_handlers,
362 scm_module_index_import_obarray): New macros.
363 (scm_module_variable, scm_module_local_variable,
364 scm_module_export): New declarations.
365
1911e3da
LC
3662007-04-17 Ludovic Courtès <ludovic.courtes@laas.fr>
367
368 * numbers.c: Commented out trailing `HAVE_COMPLEX_DOUBLE' after
369 `#endif'. Use `#ifndef HAVE_XXX' rather than `#if !HAVE_XXX'.
370
1d8ce4c0
HWN
3712007-04-09 Han-Wen Nienhuys <hanwen@lilypond.org>
372
373 * numbers.c (carg): provide carg, cexp, clog in case they are
374 missing.
375
afb49959
LC
3762007-03-12 Ludovic Courtès <ludovic.courtes@laas.fr>
377
378 * i18n.c (scm_nl_langinfo): `#ifdef'd uses of `GROUPING',
379 `FRAC_DIGITS', etc., which are GNU extensions. Reported by
380 Steven Wu.
381
b3aa4626
KR
3822007-03-08 Kevin Ryde <user42@zip.com.au>
383
384 * struct.c, struct.h (scm_make_vtable): New function, providing
385 `make-vtable'.
386 * stacks.c (scm_init_stacks): Use it.
387
3882007-03-06 Kevin Ryde <user42@zip.com.au>
389
390 * struct.c (scm_make_struct): Check for R,W,O at end of layout when
391 allocating a tail array. If there's no such then those tail fields
392 are uninitialized and garbage SCMs there can cause a segv if printed
393 (after fetching with struct-ref).
394
3952007-02-22 Kevin Ryde <user42@zip.com.au>
396
397 * scmsigs.c (scm_sleep): In docstring, cross refence usleep.
398 (scm_usleep): Update docstring per manual, cross reference sleep.
399
400 * struct.c (scm_make_struct): Move SCM_CRITICAL_SECTION_END up so that
401 scm_struct_init is not within that section. scm_struct_init can
402 thrown an error, which within a critical section results in an
403 abort().
404
03291373
NJ
4052007-02-19 Neil Jerram <neil@ossau.uklinux.net>
406
407 * Makefile.am (noinst_HEADERS): Add private-options.h, so that it
408 is included in the distribution.
652dbce6 409 (noinst_HEADERS): And the same for eval.i.c.
03291373 410
a2f00b9b
LC
4112007-01-31 Ludovic Courtès <ludovic.courtes@laas.fr>
412
413 * i18n.c: Include "libguile/threads.h" and "libguile/posix.h"
414 unconditionally. Include <langinfo.h> and <nl_types.h> when
415 available.
416 (SCM_I18N_STRINGIFY, SCM_LOCALE_CATEGORY_MASK,
417 SCM_LIST_OR_INTEGER_P): New macros.
418 (LC_*_MASK): When `USE_GNU_LOCALE_API' is undefined, define them
419 as powers of two instead of `(1 << LC_*)'.
420 (scm_i_locale_free): New function/macro.
421 (scm_global_locale): New global variable.
422 (smob_locale_free): Use `scm_i_locale_free ()'.
423 (smob_locale_mark): Check whether the SMOB is `%global-locale'.
424 (get_current_locale_settings): Return `EINVAL' instead of `errno'
425 when `setlocale' fails.
426 (restore_locale_settings): Likewise.
427 (install_locale_categories): Likewise.
428 (install_locale): Likewise. Stop the locale stack traversal when
429 all categories have been handled.
430 (get_current_locale, category_to_category_mask,
431 category_list_to_category_mask): New function.
432 (scm_make_locale): Use them. Accept both lists of `LC_*' values
433 and single `LC_*' values as the first argument. Handle the case
434 where BASE_LOCALE is `%global-locale'. When `USE_GNU_LOCALE_API',
435 duplicate C_BASE_LOCALE before using it.
436 (scm_nl_langinfo, define_langinfo_items): New functions.
437 (scm_init_i18n): When `HAVE_NL_LANGINFO', add feature
438 `nl-langinfo' and invoke `define_langinfo_items ()'.
439 * i18n.h (scm_global_locale, scm_nl_langinfo): New declarations.
440 * posix.c: Include <xlocale.h> when available.
441 (scm_i_locale_mutex): Always define it. Statically initialized.
442 (scm_set_locale): Invoke `scm_i_to_lc_category ()' before
443 acquiring the locale mutex.
444 (scm_init_posix): No longer initialize SCM_I_LOCALE_MUTEX here.
445
b3aa4626
KR
4462007-01-27 Kevin Ryde <user42@zip.com.au>
447
448 * ports.c (scm_port_line, scm_set_port_line_x), read.c
449 (scm_i_input_error, scm_lreadr, scm_lreadrecparen): Corrections to
450 port line number type, should be "long" not "int", as per line_number
451 field of scm_t_port. (Makes a difference only on 64-bit systems, and
452 only then for a linenum above 2Gig.)
453
2a8d66b0
HWN
4542007-01-25 Han-Wen Nienhuys <hanwen@lilypond.org>
455
456 * vector.c: remove comment as per kryde's request.
457
b3aa4626
KR
4582007-01-25 Kevin Ryde <user42@zip.com.au>
459
460 * sort.c (scm_stable_sort): Return empty list for input empty list, as
461 done in guile 1.6 and as always done by plain `sort'. Was falling
462 through to SCM_WRONG_TYPE_ARG. Reported by Ales Hvezda.
463
cb90e2cb
HWN
4642007-01-22 Han-Wen Nienhuys <hanwen@lilypond.org>
465
8cb7939c
HWN
466 * vectors.c (s_scm_vector_move_right_x): complain about naming.
467
d00a0704
HWN
468 * srcprop.c: regularize comments.
469
3d178652
HWN
470 * eval.c: remove superfluous ifndef DEVAL.
471
243ebb61
HWN
472 * private-options.h: idem.
473
474 * eval.i.c: copyright nitpicking.
475
0ee05b85
HWN
476 * eval.c: distangle. move duplicate code to eval.i.c and include
477 twice.
478
479 * eval.i.c: new file.
480
22fc179a
HWN
481 * backtrace.c, debug.c, debug.h, deprecation.c, eq.c, eval.c
482 eval.h, gsubr.c, init.c, macros.c, print.c, print.h, read.c,
483 read.h, stacks.c, symbols.c, throw.c: use private-options.h
484
485 * private-options.h: new file: contain hardcoded option
486 definitions.
487
cb90e2cb
HWN
488 * private-gc.h: add FSF header.
489
62560650
HWN
4902007-01-19 Han-Wen Nienhuys <hanwen@lilypond.org>
491
72f19c26
HWN
492 * debug.h (SCM_RESET_DEBUG_MODE): switch to debugging if
493 memoize-symbol is set.
494
495 * eval.h (SCM_MEMOIZE_HDLR): add macros for memoize symbol trap.
496
497 * eval.c (CEVAL): add memoize_symbol trap.
498
03347a97
HWN
499 * options.c (scm_options_try): new function. This allows error
500 reporting before changing options in a critical section.
501
b0763985
HWN
502 * srcprop.c: use double cell for storing source-properties. Put
503 filename in the plist, and share between srcprops if possible.
504 Remove specialized storage.
505
506 * srcprop.h: remove macros without SCM_ prefix from
507 interface. Remove specialized storage/type definitions.
508
62560650
HWN
509 * read.c: idem.
510
511 * print.c: idem.
512
513 * eval.c: terminate option lists with 0.
514
515 * options.c: remove n (for length) from scm_option_X
516 functions. Detect option list length by looking for NULL name.
517
42ddb3cb
LC
5182007-01-19 Ludovic Courtès <ludovic.courtes@laas.fr>
519
520 * struct.c (scm_i_struct_equalp): Skip comparison if both FIELD1
521 is equal to S1 and FIELD2 is equal to S2. This avoids infinite
522 recursion when comparing `s' fields, as the REQUIRED_VTABLE_FIELDS
523 added by `make-vtable-vtable'. Reported by Marco Maggi.
524
937038e8
HWN
5252007-01-18 Han-Wen Nienhuys <hanwen@lilypond.org>
526
527 * throw.c (scm_ithrow): more refined error message: print symbols
528 too.
529
23d72566
KR
5302007-01-16 Kevin Ryde <user42@zip.com.au>
531
532 * feature.c, feature.h (scm_set_program_arguments_scm): New function,
533 implementing `set-program-arguments'.
534
535 * filesys.c (scm_init_filesys): Use scm_from_int rather than
536 scm_from_long for O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_EXCL,
537 O_NOCTTY, O_TRUNC, O_APPEND, O_NONBLOCK, O_NDELAY, O_SYNC and
538 O_LARGEFILE. These are all int not long, per arg to open().
539 (scm_init_filesys): Use scm_from_int rather than scm_from_long for
540 F_DUPFD, F_GETFD, F_SETFD, F_GETFL, F_SETFL, F_GETOWN, F_SETOWN, these
541 are all ints (per command arg to fcntl). Likewise FD_CLOEXEC which is
542 an int arg to fcntl.
543
544 * posix.c (scm_putenv): Correction to "len" variable, was defined only
545 for __MINGW32__ but used under any !HAVE_UNSETENV (such as solaris).
546 Move it to where it's used. Reported by Hugh Sasse.
547
548 * regex-posix.c (scm_regexp_exec): Remove SCM_CRITICAL_SECTION_START
549 and SCM_CRITICAL_SECTION_END, believe not needed. Their placement
550 meant #\nul in the input (detected by scm_to_locale_string) and a bad
551 flags arg (detected by scm_to_int) would throw from a critical
552 section, causing an abort().
553
554 * regex-posix.c (scm_init_regex_posix): Use scm_from_int for
555 REG_BASIC, REG_EXTENDED, REG_ICASE, REG_NEWLINE, REG_NOTBOL,
556 REG_NOTEOL; they're all ints not longs (per args to regcomp and
557 regexec).
558
a2c40dc7
HWN
5592007-01-10 Han-Wen Nienhuys <hanwen@lilypond.org>
560
561 * throw.c (scm_ithrow): print out key symbol and string arguments
562 when error happens inside a critical section, and document why.
563
391f57e6
HWN
5642007-01-06 Han-Wen Nienhuys <hanwen@lilypond.org>
565
566 * read.c (s_scm_read_hash_extend): document #f argument to
567 read-hash-extend.
568
23d72566
KR
5692007-01-04 Kevin Ryde <user42@zip.com.au>
570
571 * deprecated.h (scm_create_hook), version.h.in (scm_major_version,
572 scm_minor_version, scm_micro_version, scm_effective_version,
573 scm_version, scm_init_version): Use SCM_API instead of just extern,
574 for the benefit of mingw. Reported by Cesar Strauss.
575
93632e3c
HWN
5762007-01-03 Han-Wen Nienhuys <hanwen@lilypond.org>
577
578 * gc.c (s_scm_gc_stats): return an entry for total-cells-allocated
579 too.
580 (gc_update_stats): update scm_gc_cells_allocated_acc too.
581
23d72566
KR
5822006-12-27 Kevin Ryde <user42@zip.com.au>
583
584 * threads.c (get_thread_stack_base): In mingw with pthreads we can use
585 the basic scm_get_stack_base. As advised by Nils Durner.
586
587 * threads.c (get_thread_stack_base): Add a version using
588 pthread_get_stackaddr_np (when available), for the benefit of MacOS.
589 As advised by Heikki Lindholm.
590
591 * scmsigs.c (signal_delivery_thread): Restrict scm_i_pthread_sigmask
592 to HAVE_PTHREAD_SIGMASK, it doesn't exist on mingw. Reported by Nils
593 Durner.
594
5952006-12-24 Kevin Ryde <user42@zip.com.au>
596
597 * posix.c (scm_kill): When only raise() is available, throw an ENOSYS
598 error if pid is not our own process, instead of silently doing nothing.
599
600 * print.c (scm_write, scm_display, scm_write_char): Disable port close
601 on EPIPE. This was previously disabled but introduction of HAVE_PIPE
602 check in configure.in unintentionally enabled it. Believe that
603 testing errno after scm_prin1 or scm_putc is bogus, a long ago error
604 can leave errno in that state. popen.test "no duplicates" output test
605 provoked that.
606
e2bf3b19
HWN
6072006-12-23 Han-Wen Nienhuys <hanwen@lilypond.org>
608
609 * numbers.c (scm_i_fraction_reduce): move logic into
610 scm_i_make_ratio(), so fractions are only read.
611 scm_i_fraction_reduce() modifies a fraction when reading it. A
612 race condition might lead to fractions being corrupted by reading
613 them concurrently.
614
615 Also, the REDUCED bit alters the SCM_CELL_TYPE(), making
616 comparisons between reduced and unreduced fractions go wrong.
617
618 * numbers.h: remove SCM_FRACTION_SET_NUMERATOR,
619 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
620 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
621 SCM_FRACTION_REDUCED.
622
23d72566
KR
6232006-12-16 Kevin Ryde <user42@zip.com.au>
624
625 * scmsigs.c (scm_raise): Use raise() rather than kill(), as this is
626 more direct for a procedure called raise.
627 (kill): Remove mingw fake fallback.
628
6292006-12-15 Kevin Ryde <user42@zip.com.au>
630
631 * scmsigs.c: Conditionalize process.h, add io.h believe needed for
632 _pipe on mingw.
633
6342006-12-14 Kevin Ryde <user42@zip.com.au>
635
636 * threads.c (thread_print): Cope with the case where pthread_t is a
637 struct, as found on mingw. Can't just cast to size_t for printing.
638 Reported by Nils Durner.
639
640 * scmsigs.c: Add <fcntl.h> and <process.h> needed by mingw. Copy the
641 fallback pipe() using _pipe() from posix.c. Reported by Nils Durner.
642
6432006-12-13 Kevin Ryde <user42@zip.com.au>
644
645 * eval.c (scm_m_define): Set 'name procedure property on any
646 scm_procedure_p, not just SCM_CLOSUREP. In particular this picks up
647 procedures with setters as used in srfi-17.
648
649 * posix.c (scm_crypt): Check for NULL return from crypt(), which the
650 linux man page says is a possibility.
651
f30e1bdf
LC
6522006-12-12 Ludovic Courtès <ludovic.courtes@laas.fr>
653
654 * libguile/unif.c (read_decimal_integer): Let RESP be SIGN * RES
42ddb3cb 655 instead of RES (reported by Szavai Gyula). This allows the use of
f30e1bdf
LC
656 negative lower bounds.
657 (scm_i_read_array): Make sure LEN is non-negative (reported by
42ddb3cb 658 Szavai Gyula).
f30e1bdf
LC
659
660 (scm_array_in_bounds_p): Iterate over S instead of always
661 comparing indices with the bounds of S[0]. This fixes
662 `array-in-bounds?' for arrays with a rank greater than one and
663 with different lower bounds for each dimension.
664
23d72566
KR
6652006-12-05 Kevin Ryde <user42@zip.com.au>
666
667 * numbers.c (scm_product): For flonum*inum and complex*inum, return
668 exact 0 if inum==0. Already done for inum*flonum and inum*complex,
669 and as per R5RS section "Exactness".
670
6712006-12-03 Kevin Ryde <user42@zip.com.au>
672
673 * Makefile.am (.c.doc): Remove the "test -n" apparently attempting to
674 allow $AWK from the environment to override. It had syntax gremlins,
675 and the presence of a $(AWK) variable set by AC_PROG_AWK in the
676 Makefile stopped it having any effect. Use just $(AWK), which can be
677 overridden with "make AWK=xxx" in the usual way if desired.
678
22be72d3
LC
6792006-11-29 Ludovic Courtès <ludovic.courtes@laas.fr>
680
681 * libguile/vectors.c (scm_vector_to_list): Fixed list
682 construction: elements were not copied when INC is zero (see
683 "shared array" example in `vectors.test'). Reported by
684 Szavai Gyula.
685
b89c4943
LC
6862006-11-18 Ludovic Courtès <ludovic.courtes@laas.fr>
687
688 * Makefile.am (lib_LTLIBRARIES): Added `libguile-i18n-v-XX.la'.
689 (libguile_la_SOURCES): Added `gettext.c', removed `i18n.c'.
690 (libguile_i18n_v_XX_la_SOURCES, libguile_i18n_v_XX_la_CFLAGS,
691 libguile_i18n_v_XX_la_LIBADD, libguile_i18n_v_XX_la_LDFLAGS): New.
692 (DOT_X_FILES): Added `gettext.x'.
693 (DOT_DOC_FILES): Likewise.
694 (EXTRA_libguile_la_SOURCES): Added `locale-categories.h'.
695 (modinclude_HEADERS): Added `gettext.h'.
696 (EXTRA_DIST): Added `libgettext.h'.
697
698 * gettext.h: Renamed to...
699 * libgettext.h: New file.
700
701 * i18n.c: Renamed to...
702 * gettext.c: New file.
703
704 * i18n.h: Renamed to...
705 * gettext.h: New file.
706
707 * i18n.c, i18n.h, locale-categories.h: New files.
708
709 * init.c: Include "libguile/gettext.h" instead of
710 "libguile/i18n.h".
711 (scm_i_init_guile): Invoke `scm_init_gettext ()' instead of
712 `scm_init_i18n ()'.
713
714 * posix.c: Include "libguile/gettext.h" instead of
715 "libguile/i18n.h" Test `HAVE_NEWLOCALE' and `HAVE_STRCOLL_L'.
716 (USE_GNU_LOCALE_API): New macro.
717 (scm_i_locale_mutex): New variable.
718 (scm_setlocale): Lock and unlock it around `setlocale ()' calls.
719
720 * posix.h: Include "libguile/threads.h".
721 (scm_i_locale_mutex): New declaration.
722
f3e3f530
NJ
7232006-11-17 Neil Jerram <neil@ossau.uklinux.net>
724
725 * script.c (scm_shell_usage): Note need for subscription to bug-guile@gnu.org.
726
d9f71a07
LC
7272006-11-08 Ludovic Courtès <ludovic.courtes@laas.fr>
728
729 * libguile/gc-freelist.c (scm_i_adjust_min_yield): Take two
730 "sweep_stats" arguments; use them instead of accessing the global
731 variables `scm_gc_cells_collected' and `scm_gc_cells_collected_1'.
732
733 * libguile/gc-segment.c (scm_i_sweep_some_cards): Reset SWEEP
734 before each iteration of the loop.
735 (scm_i_sweep_some_segments): Reset SWEEP at each iteration.
736 (scm_i_get_new_heap_segment): Take an additional argument
737 SWEEP_STATS. Compute MIN_CELLS as a function of it.
738
739 * libguile/gc.c (scm_gc_cells_collected,
740 scm_gc_cells_collected_1): Removed.
741 (scm_i_gc_sweep_stats, scm_i_gc_sweep_stats_1): New.
742 (scm_gc_cells_marked_acc, scm_gc_cells_swept_acc,
743 scm_gc_time_taken, scm_gc_mark_time_taken, scm_gc_times,
744 scm_gc_cell_yield_percentage, protected_obj_count): Made `static'.
745 (scm_gc_stats): Use `scm_i_gc_sweep_stats' instead of
746 `scm_gc_cells_(collected|swept)'.
747 (gc_update_stats): New.
748 (gc_end_stats): Use `scm_i_gc_sweep_stats' and
749 `scm_i_gc_sweep_stats_1' instead of the former globals.
750 (scm_gc_for_newcell): Invoke `gc_update_stats ()' after each
751 `scm_i_sweep_some_segments' call. This fixes a bug where the GC
752 would keep allocating new segments instead of re-using collected
753 cells (because `scm_gc_cells_collected' would remain zero).
754
755 * libguile/gc.h (scm_gc_cells_swept, scm_gc_cells_collected,
756 scm_gc_cell_yield_percentage): Removed.
757
758 * libguile/private-gc.h (scm_gc_cells_collected_1): Removed.
759 (scm_i_adjust_min_yield): Updated.
760 (scm_i_get_new_heap_segment): Updated.
761
dd18d312
NJ
7622006-11-02 Neil Jerram <neil@ossau.uklinux.net>
763
764 * modules.c: Correct comment saying that low-level environments
765 will be used "in the next release".
766
767 * init.c: Comment out #include of environments.h.
768 (scm_i_init_guile): Comment out scm_environments_prehistory() and
769 scm_init_environments() calls.
770
771 * Makefile.am (libguile_la_SOURCES): Remove environments.c.
772 (DOT_X_FILES): Remove environments.x.
773 (DOT_DOC_FILES): Remove environments.doc.
774 (modinclude_HEADERS): Remove environments.h.
775
9a5fa6e9
NJ
7762006-10-25 Neil Jerram <neil@ossau.uklinux.net>
777
778 IA64 HP-UX GC patch from Hrvoje Nikšić. (Thanks!)
779
780 * threads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp() and
781 scm_ia64_register_backing_store_base() instead of Linux-specific
782 implementations.
783
784 * gc.h (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp):
785 New declarations.
786
787 * gc.c (__libc_ia64_register_backing_store_base): Declaration
788 removed.
789 (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp): New, with
790 implementations for Linux and HP-UX.
791
792 * coop-pthreads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp()
793 and scm_ia64_register_backing_store_base() instead of
794 Linux-specific implementations.
795
796 * continuations.h (__libc_ia64_register_backing_store_base):
797 Declaration removed.
798 (scm_t_contregs): New "fresh" field.
799
800 * continuations.c (ia64_getcontext): Removed.
801 (scm_make_continuation): Use continuation fresh field instead of
802 interpreting getcontext return values (which isn't portable). Use
803 scm_ia64_ar_bsp() and scm_ia64_register_backing_store_base()
804 instead of Linux-specific implementations.
805 (copy_stack_and_call): Use scm_ia64_register_backing_store_base()
806 instead of Linux-specific implementation.
807
808 * _scm.h (__ia64__): Also detect __ia64.
809
8ab3d8a0
KR
8102006-10-03 Kevin Ryde <user42@zip.com.au>
811
812 * eval.c (SCM_APPLY): For scm_tc7_subr_2o, throw wrong-num-args on 0
813 arguments or 3 or more arguments. Previously 0 called proc with
814 SCM_UNDEFINED, and 3 or more silently used just the first 2.
815
8162006-09-28 Kevin Ryde <user42@zip.com.au>
817
818 * fports.c, ports.c (ftruncate): Use "HAVE_CHSIZE && ! HAVE_FTRUNCATE"
819 for chsize fallback, instead of hard-coding mingw. Mingw in fact
820 supplies ftruncate itself these days.
821
822 * ports.c (fcntl.h): Can include this unconditionally, no need for
823 __MINGW32__.
824
825 * ports.c (truncate): Conditionalize on "HAVE_FTRUNCATE && !
826 HAVE_TRUNCATE" so as not to hard-code mingw. Use "const char *" and
827 "off_t" for parameters, per usual definition of this function, rather
828 than "char *" and "int". Use ftruncate instead of chsize. Check for
829 error on final close.
830
8312006-09-27 Kevin Ryde <user42@zip.com.au>
832
833 * numbers.c (scm_log10): Check HAVE_CLOG10, clog10() is not available
834 in mingw.
835
836 * posix.c (scm_execl, scm_execlp, scm_execle): Cast "const char *
837 const *" for mingw to suppress warnings from gcc (which are errors
838 under the configure default -Werror). Reported by Nils Durner.
839
8402006-09-26 Kevin Ryde <user42@zip.com.au>
841
842 * _scm.h (scm_to_off64_t, scm_from_off64_t): New macros.
843 * fports.c (scm_open_file): Use open_or_open64.
844 (fport_seek_or_seek64): New function, adapting fport_seek.
845 * fports.c, fports.h (scm_i_fport_seek, scm_i_fport_truncate): New
846 functions.
847 * ports.c (scm_seek, scm_truncate_file): Use scm_i_fport_seek and
848 scm_i_fport_truncate to allow 64-bit seeks and truncates on fports.
849
850 * ports.c (scm_truncate_file): Update docstring per manual.
851
8522006-09-23 Kevin Ryde <user42@zip.com.au>
853
854 * numbers.c, numbers.h (scm_log, scm_log10, scm_exp, scm_sqrt): New
855 functions.
856
9a5fa6e9 8572006-09-20 Ludovic Courtès <ludovic.courtes@laas.fr>
a17d2654
LC
858
859 * srfi-14.c: Include <config.h>. Define `_GNU_SOURCE'.
860 (make_predset, define_predset, make_strset, define_strset, false,
861 true): Removed.
862 (SCM_CHARSET_UNSET, CSET_BLANK_PRED, CSET_SYMBOL_PRED,
863 CSET_PUNCT_PRED, CSET_LOWER_PRED, CSET_UPPER_PRED,
864 CSET_LETTER_PRED, CSET_DIGIT_PRED, CSET_WHITESPACE_PRED,
865 CSET_CONTROL_PRED, CSET_HEX_DIGIT_PRED, CSET_ASCII_PRED,
866 CSET_LETTER_AND_DIGIT_PRED, CSET_GRAPHIC_PRED, CSET_PRINTING_PRED,
867 CSET_TRUE_PRED, CSET_FALSE_PRED, UPDATE_CSET): New macros.
868 (define_charset, scm_srfi_14_compute_char_sets): New functions.
869 (scm_init_srfi_14): Use `define_charset ()' instead of
870 `define_predset ()' and `define_strset ()'.
871
872 * srfi-14.h (scm_c_init_srfi_14): Removed.
873 (scm_srfi_14_compute_char_sets): New declaration.
874
875 * posix.h: Include "srfi-14.h".
876 (scm_setlocale): Invoke `scm_srfi_14_compute_char_sets ()' after a
877 successful `setlocale ()' call.
878
8ab3d8a0
KR
8792006-09-08 Kevin Ryde <user42@zip.com.au>
880
881 * socket.c (scm_init_socket): Add MSG_DONTWAIT.
882 (scm_recvfrom): Update docstring from manual.
883
418122ce
RB
8842006-08-31 Rob Browning <rlb@defaultvalue.org>
885
886 * ports.c (scm_c_port_for_each): Add a
887 scm_remember_upto_here_1(ports) at the end of the function to fix
888 a GC bug.
889
b5944f66
NJ
8902006-08-28 Neil Jerram <neil@ossau.uklinux.net>
891
892 * backtrace.c (scm_display_backtrace_with_highlights): Minor
893 improvements to docstring.
894 (scm_backtrace_with_highlights): Analogous improvements.
895
8ab3d8a0
KR
8962006-08-12 Kevin Ryde <user42@zip.com.au>
897
898 * gen-scmconfig.h.in (SCM_I_GSC_NEED_BRACES_ON_PTHREAD_ONCE_INIT):
899 New, set from configure.
900 * gen-scmconfig.c (SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT): New output
901 to scmconfig.h.
902 * pthread-threads.h (SCM_I_PTHREAD_ONCE_INIT): Use
903 SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT to cope with Solaris.
904 Reported by Claes Wallin.
905
b0b0deff
NJ
9062006-08-11 Neil Jerram <neil@ossau.uklinux.net>
907
908 * stacks.c (scm_last_stack_frame): Correct docstring (returns a
909 frame, not a stack).
910
8ab3d8a0
KR
9112006-07-25 Kevin Ryde <user42@zip.com.au>
912
913 * threads.c (get_thread_stack_base): Restrict HAVE_PTHREAD_GETATTR_NP
914 on pthreads version, since pthread_getattr_np not available on solaris
915 and macos. Reported by Claes Wallin.
916
9172006-07-24 Kevin Ryde <user42@zip.com.au>
918
919 * filesys.c (dirfd): Test with #ifndef rather than HAVE_DIRFD, since
920 it's a macro on MacOS X. Reported by Claes Wallin.
921
922 * posix.c (sethostname): Give prototype if not HAVE_DECL_SETHOSTNAME,
923 for the benefit of Solaris 10. Reported by Claes Wallin.
924
925 * socket.c (scm_htonl, scm_ntohl): Use scm_to_uint32 rather than
926 NUM2ULONG, to enforce 32-bit range check on systems with 64-bit long.
927
9282006-07-21 Kevin Ryde <user42@zip.com.au>
929
930 * eval.c, filesys.c (alloca): Update <alloca.h> etc blob, per current
931 autoconf recommendation. Should fix Solaris 10 reported by Claes
932 Wallin.
933
934 * threads.c: Include <string.h>, needed for memset() which is used by
935 FD_ZERO() on Solaris 10. Reported by Claes Wallin.
936
b4912378
RB
9372006-07-18 Rob Browning <rlb@defaultvalue.org>
938
939 * continuations.c: Add __attribute__ ((returns_twice)) to the
940 ia64_getcontext prototype so that gcc will make the right
941 arrangements and avoid an illegal instruction during
942 call-with-current-continuation.
943
9a5fa6e9 9442006-07-12 Ludovic Courtès <ludovic.courtes@laas.fr>
eaa94eaa
LC
945
946 * numbers.c (guile_ieee_init): Use regular ANSI C casts rather
947 than C++-style `X_CAST ()'. Patch posted by by Mike Gran.
948
8ab3d8a0
KR
9492006-07-08 Kevin Ryde <user42@zip.com.au>
950
951 * environments.c (core_environments_unobserve): Use if/else rather
952 than ?: for "SET" bits, avoiding complaints from AIX xlc compiler
953 about them not being rvalues. Reported by Mike Gran.
954
955 * Makefile.am (version.h): Don't use $< in an explicit rule, it's not
956 portable and in particular fails on OpenBSD and AIX (see autoconf
957 manual too). Reported by Mike Gran.
958
9592006-06-25 Kevin Ryde <user42@zip.com.au>
960
961 * stime.c (bdtime2c): tm_gmtoff is seconds East, so take negative of
962 tm:gmtoff which is seconds West. Reported by Aaron VanDevender.
963 (bdtime2c): Test HAVE_STRUCT_TM_TM_GMTOFF for tm_gmtoff, rather than
964 HAVE_TM_ZONE.
965 (scm_strptime): Use tm_gmtoff from the strptime result when that field
966 exists, it's set by glibc strptime "%s".
967
9a5fa6e9 9682006-06-13 Ludovic Courtès <ludovic.courtes@laas.fr>
d15ad007
LC
969
970 * eq.c: Include "struct.h", "goops.h" and "objects.h".
971 (scm_equal_p): Invoke `scm_i_struct_equalp ()' on structures that
972 are not GOOPS instances.
973 * struct.c: Include "eq.h".
974 (scm_free_structs): Use `SCM_STRUCT_VTABLE_DATA ()' instead of
975 hand-written code.
976 (scm_i_struct_equalp): New.
977 * struct.h (scm_i_struct_equalp): New declaration.
978
c862d0e0
KR
9792006-06-06 Kevin Ryde <user42@zip.com.au>
980
981 * Makefile.am (BUILT_SOURCES): Remove guile.texi, only used by
982 maintainers (with doc/maint/docstring.el). Fixes parallel "make -j2"
983 reported by Mattias Holm.
b4912378 984
c862d0e0
KR
9852006-06-03 Kevin Ryde <user42@zip.com.au>
986
987 * read.c (s_vector): Conditionalize on SCM_ENABLE_ELISP, to avoid
988 unused variable warning when elisp disabled. Reported by Ryan
989 VanderBijl.
990
991 * throw.c (scm_handle_by_message): Add dummy return value to avoid
992 compiler warning on cygwin. Reported by Ryan VanderBijl.
993
994 * Makefile.am (EXTRA_DOT_X_FILES): Typo in dependency rule, was a
995 duplicate of EXTRA_DOT_DOC_FILES.
996 (DOT_X_FILES, EXTRA_DOT_X_FILES, DOT_DOC_FILES, EXTRA_DOT_DOC_FILES):
997 Add scmconfig.h to dependencies, since these all run cpp. Helps a
998 parallel "make -j2". Reported by Mattias Holm.
999
10002006-05-30 Kevin Ryde <user42@zip.com.au>
1001
1002 * ports.c, ports.h (scm_set_port_mark, scm_set_port_free,
1003 scm_set_port_print, scm_set_port_equalp, scm_set_port_flush,
1004 scm_set_port_end_input, scm_set_port_close, scm_set_port_seek,
1005 scm_set_port_truncate, scm_set_port_input_waiting): Use scm_t_bits for
1006 port type descriptor, same as scm_make_port_type return value.
1007
af4f8612
MV
10082006-05-30 Marius Vollmer <mvo@zagadka.de>
1009
1010 * eq.c (scm_equal_p): Use scm_array_equal_p explicitely when one
1011 of the arguments is a array. This allows vectors to be equal to
1012 one-dimensional arrays.
1013
18bffcd0
MV
10142006-05-29 Marius Vollmer <mvo@zagadka.de>
1015
1016 * throw.c (scm_ithrow): When looking for the jmpbuf, first test
1017 that we have a pair before accessing its cdr. Thanks to Bill
1018 Schottstaedt!
1019
c862d0e0
KR
10202006-05-28 Kevin Ryde <user42@zip.com.au>
1021
1022 * eval.c, filesys.c: Add malloc.h to get alloca() on mingw. Reported
1023 by "The Senator".
1024
10252006-05-27 Marius Vollmer <mvo@zagadka.de>
b0c0a310
MV
1026
1027 * srfi-4.c, strings.c: Replace SCM_C_INLINE with
1028 SCM_C_INLINE_KEYWORD. Thanks to Mark Gran!
1029
c862d0e0
KR
10302006-05-26 Kevin Ryde <user42@zip.com.au>
1031
1032 * fports.c (fport_input_waiting): For ioctl, check HAVE_IOCTL as well
1033 as defined(FIONREAD), since mingw has FIONREAD but not ioctl().
1034 Reported by "The Senator".
1035 For select and ioctl, move fdes into those conditionals, to avoid
1036 unused variable warning when neither of those used.
1037
10382006-05-23 Kevin Ryde <user42@zip.com.au>
1039
1040 * fports.c: Remove "fwrite" declaration under "! HAVE_UNISTD_H".
1041 It's unused and will be in stdio.h anyway (if it's anywhere).
1042
10432006-05-20 Kevin Ryde <user42@zip.com.au>
1044
1045 * filesys.c (scm_stat2scm): Test #ifdef S_ISLNK directly, rather than
1046 HAVE_S_ISLNK from configure (it was only a #ifdef test anyway).
1047
1048 * posix.c (scm_mknod): Test #ifdef S_IFLNK before using that (for
1049 symlink). Probably can't create symlinks with mknod anyway though.
1050
1051 * inline.h (scm_is_pair): Add a workaround for i386 gcc 2.95 bad code
1052 generation.
1053
10542006-05-15 Kevin Ryde <user42@zip.com.au>
1055
1056 * simpos.c, simpos.h (scm_primitive__exit): New function.
1057 (scm_primitive_exit): Update docstring, no longer the best exit after
1058 a fork.
1059
10602006-05-09 Kevin Ryde <user42@zip.com.au>
1061
1062 * numbers.c (scm_i_divide): For big/big wanting inexact, use mpq_get_d
1063 rather than converting to doubles, to avoid inf or nan when the inputs
1064 are too big for a double but the quotient does fit. This affects
1065 conversions exact->inexact of big fractions.
1066
1067 * filesys.c (scm_open_fdes): Use open64.
1068 (scm_init_filesys): Add O_LARGEFILE.
1069
1070 * ports.c (scm_seek): Use lseek64.
1071 (scm_truncate_file): Use ftruncate64.
1072
4a342b19
MV
10732006-05-08 Marius Vollmer <mvo@zagadka.de>
1074
1075 * private-gc.h (CELL_P): Also check that the potential pointer is
1076 correctly aligned for a cell. Thanks to Miroslav Lichvar!
1077
c862d0e0
KR
10782006-04-18 Rob Browning <rlb@defaultvalue.org>
1079
1080 * _scm.h: Add back error if the size of off_t is unknown. The bug
1081 was actually in guile-readline's configuration.
1082
10832006-04-18 Kevin Ryde <user42@zip.com.au>
1084
1085 * posix.c (scm_mkstemp): Update docstring from the manual, in
1086 particular file mode 0600 is not guaranteed.
1087
281ab5e2
KR
10882006-04-17 Kevin Ryde <user42@zip.com.au>
1089
1090 * _scm.h (scm_to_off_t, scm_from_off_t): No error if unknown off_t
1091 size, to help the guile-readline build where off_t is unused.
1092
2b829bbb
KR
10932006-04-16 Kevin Ryde <user42@zip.com.au>
1094
1095 * filesys.c (scm_stat2scm, scm_stat, scm_lstat): Use stat or stat64.
1096 (scm_readdir): Use readdir64.
1097 (scm_copy_file): Use open64 and fstat64, to cope with >2Gb files.
1098 * ports.c (scm_truncate_file): Use truncate64. Correction truncate
1099 and ftruncate take off_t not size_t.
1100 * _scm.h (stat_or_stat64 etc): Macros for selecting LFS64 when
1101 available.
1102
11032006-04-06 Kevin Ryde <user42@zip.com.au>
1104
1105 * fports.c (scm_setvbuf): Fix for not _IOLBF, clear SCM_BUFLINE
9a5fa6e9 1106 instead of toggling it. Reported by Ludovic Courtès.
2b829bbb
KR
1107
11082006-03-26 Marius Vollmer <mvo@zagadka.de>
1109
1110 * threads.c (get_thread_stack_base): Use scm_get_stack_base
1111 instead of accessing __libc_stack_end directly, and only do this
1112 when pthread_attr_getstack is known not to work for the main
1113 thread or when not using pthreads at all.
1114
1115 * gc_os_dep.c (scm_get_stack_base): Abort when the machine type is
1116 unknown instead of returning NULL.
1117
9a5fa6e9 11182006-03-21 Ludovic Courtès <ludovic.courtes@laas.fr>
2b829bbb
KR
1119
1120 * numbers.c (scm_i_mem2number): Renamed to
1121 scm_c_locale_stringn_to_number.
1122 * numbers.c, print.c, read.c: Updated callers.
1123 * numbers.h: Update function declaration.
1124
11252006-03-11 Neil Jerram <neil@ossau.uklinux.net>
1126
1127 * unif.c (string_set): Don't return in a void function. (Reported
1128 by Mike Gran.)
1129
1130 * srfi-4.c (scm_uniform_vector_read_x): Declare base as char*
1131 rather than void*, so we can do pointer arithmetic on it.
1132 (Reported by Mike Gran.)
1133 (s_scm_uniform_vector_write): Ditto.
1134
11352006-03-10 Neil Jerram <neil@ossau.uklinux.net>
1136
1137 * unif.c (scm_make_shared_array): Don't use SCM_I_ARRAY_BASE when
1138 oldra is not an array. (Reported by Steve Juranich.)
1139
1140 * threads.c (do_unlock): Renamed from "unlock", which is defined
1141 in unistd.h on QNX. (Reported by Matt Kraai.)
1142
11432006-03-04 Kevin Ryde <user42@zip.com.au>
1144
1145 * deprecated.c (scm_i_defer_ints_etc): Show SCM_DEFER_INTS in message,
1146 not SCM_CRITICAL_SECTION_START.
1147
1148 * eval.c, posix.c: Change comments from C++ to C style. Reported by
1149 Mike Gran.
1150
11512006-02-28 Kevin Ryde <user42@zip.com.au>
1152
1153 * unif.c (bitvector_set): Use h->writable_elements not h->elements.
1154
11552006-02-26 Kevin Ryde <user42@zip.com.au>
1156
1157 * filesys.c (scm_readdir): Use fpathconf for the dirent size when
1158 NAME_MAX is not available, which is so on Solaris 10. Report and help
1159 by Bill Schottstaedt.
1160
1161 * srfi-13.c (MY_VALIDATE_SUBSTRING_SPEC_UCOPY): New macro.
1162 (scm_string_compare, scm_string_compare_ci, scm_string_lt,
1163 scm_string_gt, scm_string_le, scm_string_ge, scm_string_ci_lt,
1164 scm_string_ci_gt, scm_string_ci_le, scm_string_ci_ge): In comparisons
1165 use "unsigned char", not signed char. This ensures comparisons are
1166 the same as `char<?' etc, and is also the same as guile 1.6 did.
1167 Reported by Sven Hartrumpf.
1168
4a9f83ff
MD
11692006-02-19 Mikael Djurfeldt <mdj@neurologic.cc>
1170
1171 * random.c: Test for SCM_HAVE_T_UINT64 instead of
1172 SCM_HAVE_T_INT64.
1173 (scm_i_uniform32, scm_i_uniform32, scm_i_init_rstate): Use
1174 scm_t_uint64 and scm_t_uint32 instead of scm_t_int64 and
1175 scm_t_int32.
1176
29d8c124 11772006-01-04 Ludovic Courtès <ludovic.courtes@laas.fr>
4c7016dc
HWN
1178
1179 * gc-segment.c (scm_i_sweep_some_cards): Take a SWEEP_STATS
1180 argument. Don't refer to SCM_GC_CELLS_COLLECTED and
1181 SCM_CELLS_ALLOCATED. If SEG->FIRST_TIME, let CELLS_COLLECTED as zero.
1182 Take into account SEG->SPAN when computing CELLS_SWEPT.
1183 (scm_i_sweep_segment): Take one more argument, similarly.
1184 (scm_i_sweep_all_segments): Likewise.
1185 (scm_i_sweep_some_segments): Likewise.
1186 (scm_i_adjust_min_yield): Change the way MIN_CELLS is computed: do not
1187 refer to SCM_GC_CELLS_COLLECTED.
1188
1189 * gc-freelist.c (scm_i_adjust_min_yield): Take one more
1190 argument, an `scm_i_sweep_statistics' object.
1191 Change the way DELTA is collected: don't take into account
1192 SCM_GC_CELLS_COLLECTED_1, only SWEEP_STATS.COLLECTED.
1193
1194 * gc-malloc.c (scm_realloc): Pass an extra argument
1195 to `scm_i_sweep_all_segments ()'.
1196
1197 * gc.c (gc_start_stats): Updated accordingly.
1198 (gc_end_stats): Take an additional SWEEP_STATS argument.
1199 Decrement SCM_CELLS_ALLOCATED after calls to `scm_i_sweep_* ()'.
1200 (scm_gc_for_newcell): Updated callers of `scm_i_sweep_*'.
1201 Decrement SCM_CELLS_ALLOCATED.
1202 (scm_i_gc): Likewise.
1203
1204 * private-gc.h (scm_i_sweep_*): Updated function
1205 prototypes accordingly.
1206 (scm_t_sweep_statistics): New type.
1207 (scm_i_sweep_statistics_init): New macro.
1208 (scm_i_sweep_statistics_sum): New macro
1209
9a5fa6e9 12102006-02-14 Ludovic Courtès <ludovic.courtes@laas.fr>
2b829bbb
KR
1211
1212 * strings.c (scm_i_take_stringbufn): Register LEN+1 bytes instead of
1213 LEN. Without this, too much collectable memory gets unregistered,
1214 which results in an underflow of SCM_MALLOCATED in
1215 `decrease_mtrigger()'.
1216
1217 * gc-malloc.c (decrease_mtrigger): Make sure SIZE is lower than or
1218 equal to SCM_MALLOCATED.
1219
12202006-02-13 Marius Vollmer <mvo@zagadka.de>
1221
1222 * eval.c (scm_eval_body): Use scm_i_dynwind_pthread_mutex_lock
1223 oinstead of scm_dynwind_pthread_mutex_lock so that it works when
1224 configured --without-threads.
1225 (SCM_APPLY, CEVAL): Likewise. Thanks to Han-Wen Nienhuys!
1226
1aaa1c17
MV
12272006-02-12 Marius Vollmer <mvo@zagadka.de>
1228
1229 * unif.c (scm_dimensions_to_uniform_array): Use the prototype for
1230 filling when the fill parameter is omitted, as documented, but
1231 turn #\nul into 0 since s8 arrays (signified by a #\nul prototype)
1232 can not store characters.
1233
d7c6575f
NJ
12342006-02-09 Neil Jerram <neil@ossau.uklinux.net>
1235
1236 * socket.c (scm_c_make_socket_address): Pass address_size pointer
1237 on to scm_fill_sockaddr call.
1238
43e01b1e
NJ
12392006-02-04 Neil Jerram <neil@ossau.uklinux.net>
1240
1241 * throw.h (scm_c_catch, scm_c_with_throw_handler,
1242 scm_catch_with_pre_unwind_handler, scm_with_throw_handler): New.
1243
1244 * throw.c (SCM_JBPREUNWIND, SCM_SETJBPREUNWIND): New.
1245 (struct pre_unwind_data): New, replaces struct lazy_catch.
1246 (scm_c_catch): New, replaces scm_internal_catch as the primary
1247 catch API for C code; adds pre-unwind handler support.
1248 (scm_internal_catch): Now just a wrapper for scm_c_catch, for back
1249 compatibility.
1250 (tc16_pre_unwind_data, pre_unwind_data_print,
1251 make_pre_unwind_data, SCM_PRE_UNWIND_DATA_P): Renamed from
1252 "lazy_catch" equivalents.
1253 (scm_c_with_throw_handler): New, replaces scm_internal_lazy_catch
1254 as the primary C API for a "lazy" catch.
1255 (scm_internal_lazy_catch): Now just a wrapper for
1256 scm_c_with_throw_handler, for back compatibility.
1257 (scm_catch_with_pre_unwind_handler): Renamed from scm_catch; adds
1258 pre-unwind handler support.
1259 (scm_catch): Now just a wrapper for
1260 scm_catch_with_pre_unwind_handler, for back compatibility.
1261 (scm_with_throw_handler): New.
1262 (scm_lazy_catch): Update comment to say that the handler can
1263 return, and what happens if it does.
1264 (toggle_pre_unwind_running): New.
1265 (scm_ithrow): When identifying the throw target, take running
1266 flags into account. In general, change naming of things from
1267 "lazy_catch" to "pre_unwind". When throwing to a throw handler,
1268 don't unwind the dynamic context first. Add dynwind framing to
1269 manage the running flag of a throw handler. If a lazy catch or
1270 throw handler returns, rethrow the same exception again. Add
1271 pre-unwind support to the normal catch case (SCM_JMPBUFP).
1272
1273 * root.c (scm_internal_cwdr): Add NULL args to
1274 scm_i_with_continuation_barrier call.
1275
1276 * dynwind.c: Change comment mentioning lazy-catch to mention
1277 pre-unwind data and throw handler also.
1278
1279 * continuations.h (scm_i_with_continuation_barrier): Add
1280 pre-unwind handler args.
1281
1282 * continuations.c (scm_i_with_continuation_barrier): Add
1283 pre-unwind handler args, and pass on to scm_c_catch (changed from
1284 scm_internal_catch).
1285 (c_handler): Remove scm_handle_by_message_noexit call.
1286 (scm_c_with_continuation_barrier): Call
1287 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
1288 as the pre-unwind handler.
1289 (scm_handler): Remove scm_handle_by_message_noexit call.
1290 (s_scm_with_continuation_barrier): Call
1291 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
1292 as the pre-unwind handler.
1293
2b829bbb
KR
12942006-02-04 Kevin Ryde <user42@zip.com.au>
1295
1296 * gc-mark.c (scm_mark_all): Fix c99-isms "loops" and "again" variables.
1297
72098928
KR
12982006-02-03 Kevin Ryde <user42@zip.com.au>
1299
1300 * list.c, list.h (scm_list): Restore this function for use from C.
1301 It's a complete no-op but in theory might used by someone.
1302
aa092c5d
MV
13032006-01-30 Marius Vollmer <mvo@zagadka.de>
1304
1305 * eval.c (scm_eval_body): Lock source_mutex with a dynwind context
1306 so that it gets unlocked in all cases.
1307 (SCM_APPLY, CEVAL): Likewise.
1308
661ae7ab
MV
13092006-01-29 Marius Vollmer <mvo@zagadka.de>
1310
ee51ba31
MV
1311 * ramap.c: (scm_array_map_x): Don't use scm_array_p, use
1312 scm_is_typed_array instead.
1313
661ae7ab
MV
1314 Renamed the "frames" that are related to dynamic-wind to "dynamic
1315 contexts. Renamed all functions from scm_frame_ to scm_dynwind_.
1316 Updated documentation.
1317
99e370f6
MV
1318 Disabled "futures":
1319
1320 * futures.h, futures.c: Wrap whole contents in "#if 0"/"#endif".
1321 * eval.c, init.c: Comment out all 'future' related things.
1322
15ccf10b
MV
13232006-01-28 Marius Vollmer <mvo@zagadka.de>
1324
1325 * inline.h, pairs.c (scm_is_pair): Moved scm_is_pair from pairs.c
1326 to inline.h to make it inline.
1327
9a5fa6e9 13282005-12-19 Ludovic Courtès <ludovic.courtes@laas.fr>
fd0a5bbc
HWN
1329
1330 * strings.c (scm_i_take_stringbufn): New.
1331 (scm_i_c_take_symbol): New.
1332 (scm_take_locale_stringn): Use `scm_i_take_stringbufn ()'.
1333
1334 * strings.h (scm_i_c_take_symbol): New.
1335 (scm_i_take_stringbufn): New.
1336
1337 * symbols.c (lookup_interned_symbol): New function.
1338 (scm_i_c_mem2symbol): New function.
1339 (scm_i_mem2symbol): Use `lookup_symbol ()'.
1340 (scm_from_locale_symbol): Use `scm_i_c_mem2symbol ()'. This avoids
1341 creating a new Scheme string.
1342 (scm_from_locale_symboln): Likewise.
1343 (scm_take_locale_symbol): New.
1344 (scm_take_locale_symboln): New.
1345
1346 * symbols.h (scm_take_locale_symbol): New.
1347 (scm_take_locale_symboln): New.
1348
2ca2ffe6
HWN
13492006-01-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
1350
1351 * gc-card.c ("sweep_card"): don't count scm_tc_free_cell for
1352 free_count.
1353
c255614e
HWN
13542005-11-29 Han-Wen Nienhuys <hanwen@xs4all.nl>
1355
1356 * regex-posix.c (s_scm_regexp_exec): list the offending pattern
1357 upon error
1358
29295b0c
NJ
13592005-12-29 Neil Jerram <neil@ossau.uklinux.net>
1360
9a5fa6e9 1361 * fluids.c (next_fluid_num): [From Ludovic Courtès:] Don't trigger
29295b0c
NJ
1362 the GC when allocated_fluids_len is zero.
1363
2824f4dc
NJ
13642005-12-14 Neil Jerram <neil@ossau.uklinux.net>
1365
ec3a8ace
NJ
1366 * load.c (the_reader, the_reader_fluid_num): New.
1367 (scm_primitive_load): Support custom reader.
1368 (scm_init_load): Init the_reader and the_reader_fluid_num; export
1369 the_reader as `current-reader'.
1370
2824f4dc
NJ
1371 * scmsigs.c (do_read_without_guile): Use the "raw_data" passed in
1372 (rather than an uninitialized pointer on the stack).
1373
d9c36d2a
MV
13742005-12-07 Marius Vollmer <mvo@zagadka.de>
1375
6a88895b
MV
1376 Reported by Bruce Korb:
1377
1378 * init.c (invoke_main_func): Don't call exit here. Throws that
1379 are only caught by scm_with_guile will bypass us and would cause
1380 scm_boot_guile to return erroneously.
1381 (scm_boot_guile): Expect scm_with_guile to return and call exit
1382 here, passing it an appropriate exit code.
1383
1384 From Andy Wingo:
d9c36d2a
MV
1385
1386 * script.c (scm_find_executable): Compile fix -- fgetc returns an
1387 unsigned char cast to an int, or -1 for EOS.
1388
b54df254
MV
13892005-12-06 Marius Vollmer <mvo@zagadka.de>
1390
08f489c9
MV
1391 * srfi-4.h, srfi-4.c, srfi-4.i.c (take_uvec): Make BASE pointer
1392 non-const.
9a5fa6e9 1393 (scm_take_u8vector, etc): Likewise. Thanks to Ludovic Courtès!
08f489c9 1394
b54df254
MV
1395 * threads.h, threads.c (scm_t_guile_ticket, scm_leave_guile,
1396 scm_enter_guile): Removed from public API. See comment at
1397 scm_without_guile for the rationale.
1398
1399 * scmsigs.c (read_without_guile): New.
1400 (signal_delivery_thread): Use it instead of
1401 scm_leave_guile/read/scm_enter_guile.
1402
9d9ce2b5
MV
1403 From Stephen Compall:
1404
1405 * eval.c (scm_m_cond): Recognize SRFI 61 cond syntax.
1406 (CEVAL): Evaluate SRFI 61 cond clauses.
1407
9a5fa6e9 14082005-12-06 Ludovic Courtès <ludovic.courtes@laas.fr>
9fb5c8f9
NJ
1409
1410 * gc-card.c (scm_i_card_statistics): Return if BITVEC is NULL.
1411 This was typically hit when running `gc-live-object-stats' right
1412 after starting Guile.
1413
efeac8ae
KR
14142005-11-30 Kevin Ryde <user42@zip.com.au>
1415
1416 * srfi-13.c (scm_string_append_shared): No copying if just one
1417 non-empty string in args.
1418
606183ba
KR
14192005-11-26 Kevin Ryde <user42@zip.com.au>
1420
1421 * gc-mark.c (scm_mark_all): Change C++ comment to C comment. Reported
9a5fa6e9 1422 by Ludovic Courtès.
606183ba
KR
1423
1424 * list.c (list): Should be "primitive" in SCM_SNARF_DOCS, not
1425 "register".
1426
1427 * random.c (scm_i_copy_rstate, scm_c_make_rstate): Don't test for
1428 scm_malloc returning NULL, it never does that.
1429 * putenv.c (putenv): Likewise.
1430
1431 * socket.c (scm_fill_sockaddr): Remove SCM_C_INLINE_KEYWORD, this is
1432 much too big to want to inline.
1433
9a5fa6e9 14342005-11-17 Ludovic Courtès <ludovic.courtes@laas.fr>
dbb5de29
NJ
1435
1436 * print.c (EXIT_NESTED_DATA): Before popping from the stack, reset
1437 the value at its top. This fixes a reference leak.
1438 (PUSH_REF): Perform `pstate->top++' after calling
1439 `PSTATE_STACK_SET ()' in order to avoid undesired potential side
1440 effects.
1441
9a5fa6e9 14422005-11-12 Ludovic Courtès <ludovic.courtes@laas.fr>
3f98874a
NJ
1443
1444 * gc.c (scm_weak_vectors): Removed.
1445
f07d2b20
KR
14462005-11-12 Kevin Ryde <user42@zip.com.au>
1447
1448 * socket.c (scm_setsockopt): Missing @defvar in docstring. Reported
9a5fa6e9 1449 by Ludovic Courtès.
f07d2b20 1450
bedd3f5f
MV
14512005-11-07 Marius Vollmer <mvo@zagadka.de>
1452
1453 * stime.c (scm_mktime): Use scm_frame_critical_section instead of
1454 SCM_CRITICAL_SECTION_START/END since the code inside the critical
1455 section might exit non-locally.
1456
7c9c0169
NJ
14572005-11-04 Neil Jerram <neil@ossau.uklinux.net>
1458
1459 * eval.c (sym_instead): New symbol.
1460 (ENTER_APPLY): Remove optional use of a continuation when making
1461 trap call.
1462 (scm_debug_opts): Change doc for 'cheap option to make clear that
1463 it is now obsolete.
1464 (CEVAL, SCM_APPLY): Remove optional use of a continuation when
1465 making trap calls, and implement substitution of eval expressions
1466 and return values using the values that the trap call handlers
1467 return.
1468
1469 * debug.h (SCM_CHEAPTRAPS_P): Removed.
1470
9a5fa6e9 14712005-10-27 Ludovic Courtès <ludovic.courtes@laas.fr>
64cdbfc7
KR
1472
1473 * socket.c (scm_fill_sockaddr): No need to check NULL from scm_malloc.
1474 (scm_connect, scm_bind, scm_sendto): Accept sockaddr object.
1475 (scm_addr_vector): Renamed to _scm_from_sockaddr, update usages.
1476 (scm_from_sockaddr, scm_to_sockaddr, scm_make_socket_address,
1477 scm_c_make_socket_address): New functions.
1478 * socket.h: Add prototypes.
1479
fc9f596c
KR
14802005-10-24 Kevin Ryde <user42@zip.com.au>
1481
1482 * socket.c (scm_init_socket): Add IPPROTO_IP, IPPROTO_TCP,
1483 IPPROTO_UDP. Remove SOL_IP, SOL_TCP, SOL_UDP. The former are in
1484 POSIX spec examples, the latter are not available on for instance
1485 NetBSD.
1486
1487 * socket.c (scm_getsockopt, scm_setsockopt): Update docstrings from
1488 posix.texi.
1489
1490 * stime.c (scm_strftime): Update docstring from posix.texi.
1491
0460c6e1
MV
14922005-10-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1493
1494 PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP is not portable enough.
1495
1496 * null-threads.h, pthread-threads.h
1497 (SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER): Removed.
1498 (scm_i_pthread_mutexattr_recursive): New.
1499
1500 * threads.c (scm_i_pthread_mutexattr_recursive): Declare.
1501 (scm_i_critical_section_mutex): Do not initialize statically.
1502 (scm_threads_prehistory): Initialize
1503 scm_i_pthread_mutexattr_recursive and scm_i_critical_section_mutex
1504 here.
1505
1506 * eval.c (source_mutex): Do not initialiaze statically.
1507 (scm_init_eval): Do it here, using
1508 scm_i_pthread_mutexattr_recursive.
1509
7b4a9e52
MV
15102005-09-05 Marius Vollmer <mvo@zagadka.de>
1511
1512 * print.h (SCM_PRINT_KEYWORD_STYLE_I, SCM_PRINT_KEYWORD_STYLE):
1513 New.
1514 (sym_reader): New.
1515 (scm_print_opts): Added "quote-keywordish-symbols" option.
1516 (quote_keywordish_symbol): New, for evaluating the option.
1517 (scm_print_symbol_name): Use it.
1518 (scm_init_print): Initialize new option to sym_reader.
1519
5defc05d
NJ
15202005-08-15 Neil Jerram <neil@ossau.uklinux.net>
1521
1522 * eval.c (eval_letrec_inits): New.
1523 (CEVAL): Eval letrec initializer forms using eval_letrec_inits.
1524
036482e9
MV
15252005-08-12 Marius Vollmer <mvo@zagadka.de>
1526
1527 * numbers.c: Use scm_from_bool instead of SCM_BOOL. Thanks to
1528 Peter Gavin!
1529
5c347f8c
KR
15302005-08-12 Kevin Ryde <user42@zip.com.au>
1531
1532 * srfi-13.c (scm_string_for_each_index): Correction to docstring.
1533
bc721aa2
KR
15342005-08-06 Kevin Ryde <user42@zip.com.au>
1535
1536 * srfi-13.c (scm_string_any, scm_string_every, scm_string_tabulate,
1537 scm_string_trim, scm_string_trim_right, scm_string_trim_both,
1538 scm_string_index, scm_string_index_right, scm_string_skip,
1539 scm_string_skip_right, scm_string_count, scm_string_map,
1540 scm_string_map_x, scm_string_for_each, scm_string_for_each_index,
1541 scm_string_filter, scm_string_delete): Use scm_t_trampoline_1 for
1542 procedures called in loops.
1543
126c81db
KR
15442005-08-02 Kevin Ryde <user42@zip.com.au>
1545
1546 * strports.c (st_flush): Increase buffer by 1.5x when growing, to
1547 avoid lots of copying where previoulsy growing by only 80 bytes at a
1548 time.
1549
7f278dc6
MV
15502005-08-01 Marius Vollmer <mvo@zagadka.de>
1551
1552 * modules.h, modules.c (scm_eval_closure_module): Removed, we
1553 already have scm_lookup_closure_module, which does the same thing.
1554
cb5c4b07
MV
15552005-08-01 Marius Vollmer <mvo@zagadka.de>
1556
1557 New marking algorithm for weak hashtables that fixes the problem
1558 that references from the non-weak value to the associated weak
1559 key (for example) would prevent the entry from ever being dropped.
1560
1561 Guardians have been changed back to their original semantics and
1562 are no longer greedy and no longer drop cycles.
1563
1564 * gc-mark.c (scm_mark_all): Do not rely on hooks to run the weak
1565 hashtable and guardian machinery but call the relevant functions
1566 directly.
1567
1568 * guardians.h, guardians.c, deprecated.h,
1569 deprecated.c (scm_destroy_guardian_x, scm_guardian_greedy_p,
1570 scm_guardian_destroyed_p, scm_guard, scm_get_one_zombie):
1571 Deprecated and moved into deprecated.[ch].
1572
1573 * guardians.h, guardians.c: Mostly rewritten.
1574 (scm_i_init_guardians_for_gc,
1575 scm_i_identify_inaccessible_guardeds,
1576 scm_i_mark_inaccessible_guardeds): New.
930888e8 1577 (scm_make_guardian): Removed greedy_p argument.
cb5c4b07
MV
1578
1579 * weaks.h, weaks.c (SCM_I_WVECT_TYPE, SCM_I_SET_WVECT_TYPE): New.
1580 (SCM_I_WVECT_N_ITEMS, SCM_I_SET_WVECT_N_ITEMS): New.
1581 (SCM_WVECTF_NOSCAN, SCM_WVECT_NOSCAN_P): Removed.
1582 (scm_weaks_prehistory): Removed.
1583 (scm_i_init_weak_vectors_for_gc, scm_i_mark_weak_vector,
1584 scm_i_mark_weak_vectors_non_weaks,
1585 scm_i_remove_weaks_from_weak_vectors, scm_i_remove_weaks): New.
1586 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
1587 scm_scan_weak_vectors): Removed.
1588
1589 * hashtab.h (scm_i_scan_weak_hashtables): New.
1590 * hashtab.c (make_hash_table, scm_i_rehash): Do not use
1591 SCM_WVECTF_NOSCAN.
1592 (hashtable_print): Use SCM_HASHTABLE_N_ITEMS instead of
1593 t->n_items.
1594 (scan_weak_hashtables, scm_i_scan_weak_hashtables): Renamed former
1595 to latter. Do not scan the alists themselves, this is done by the
1596 weak vector code now. Just update the element count.
1597
1598 * vectors.h (SCM_I_WVECT_TYPE, SCM_I_WVECT_EXTRA): Renamed former
1599 to latter. The type is now only part of the cell word.
1600 (SCM_I_SET_WVECT_TYPE, SCM_I_SET_WVECT_EXTRA): Likewise.
1601
1602 * init.c (scm_i_init_guile): Do not call scm_weaks_prehistory.
1603
3e2073bd
MD
16042005-07-18 Mikael Djurfeldt <mdj@d14n36.pdc.kth.se>
1605
1606 Some changes towards making it possible to run Guile on the EM64T
1607 platform.
1608
1609 * gc.c (scm_gc_stats): Bugfix: Measure size of the type we are
1610 mallocating for (unsigned long *bounds).
1611
1612 * hashtab.c (scm_i_rehash): Cast SCM_HASHTABLE_FLAGS (table) to
1613 scm_t_bits before storing them in the type word.
1614
1615 * gc.c (tag_table_to_type_alist): Modified type of c_tag from
1616 scm_t_bits to int.
1617
e8ac8e75
KR
16182005-07-12 Kevin Ryde <user42@zip.com.au>
1619
1620 * eval.c (scm_dbg_make_iloc): Should be SCM_IFRAMEMAX and
1621 SCM_IDISTMAX, and cast uints through scm_t_bits to make gcc happy.
1622 * pairs.c (scm_error_pair_access): Use scm_from_locale_string rather
1623 than scm_makfrom0str.
1624 Reported by Ken Raeburn.
1625
1626 * gc-card.c (scm_dbg_gc_get_bvec): Change return from long* to
1627 scm_t_c_bvec_long*, gcc 4 doesn't like different pointer targets when
1628 returning SCM_GC_CARD_BVEC.
1629
1630 * pairs.c (scm_error_pair_access): Plain ascii ' in error message
1631 rather than latin-1 acute accent, the latter may not print on all
1632 terminals.
1633
1634 * srfi-13.c (scm_string_filter, scm_string_delete): Strip leading and
1635 trailing deletions, so as to return a substring if those are the only
1636 changes.
1637
adc0677d
KR
16382005-07-10 Kevin Ryde <user42@zip.com.au>
1639
1640 * socket.c (scm_inet_pton, scm_inet_ntop): Pointer cast to scm_t_uint8
1641 for scm ipv6 funcs, gcc 4 is picky about char* vs uchar*.
1642 (scm_getsockopt, scm_accept, scm_getsockname, scm_getpeername,
1643 scm_recvfrom) Use socklen_t, gcc 4 is picky about int* vs socklen_t*.
1644
8fecbb19
HWN
16452005-07-01 Han-Wen Nienhuys <hanwen@xs4all.nl>
1646
1647 * gc-card.c (scm_i_card_statistics): init tag.
1648
1649 * gc.c (tag_table_to_type_alist): check type of tag. Should be integer.
1650
fc9c5d06
HWN
16512005-06-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
1652
8fecbb19
HWN
1653 * fports.c (s_scm_open_file): add the b flag for binary to the doc
1654 string.
fc9c5d06 1655
08fce816
KR
16562005-06-25 Kevin Ryde <user42@zip.com.au>
1657
1658 * srfi-13.c (scm_string_filter, scm_string_delete): Partial revert
1659 last change, use plain copy-on-write substrings, the individual
1660 descriptions in the srfi don't mention shared storage (only the
1661 introduction does).
1662
1663 * strings.c (scm_take_locale_stringn): Use realloc to make room for
1664 null-terminator, rather than mallocing a whole new block.
1665 (scm_take_locale_string): Use scm_take_locale_stringn len==-1.
1666
fc4abd0e
MV
16672005-06-12 Marius Vollmer <mvo@zagadka.de>
1668
e3da8a30
MV
1669 * ramap.c (scm_array_index_map_x): First test for real arrays,
1670 then check for generalized vectors. This ensures that the
1671 generalized vector case need only work with zero-origin ranges.
12097c77
MV
1672 (scm_ra_eqp, scm_ra_compare): Use the new array handle functions
1673 to access the target array, making these functions work with all
1674 kinds of arrays, not just bit arrays.
e3da8a30 1675
fc4abd0e
MV
1676 * gh.h, gh_data.c, gh_eval.c, gh_funcs.c, gh_init.c, gh_io.c,
1677 gh_list.c, gh_predicates.c: Deprecated everything.
1678
1679 * environments.c (environment_default_folder,
1680 environment_default_observer): Do not use gh_call3, gh_call1.
1681
e4da0740
HWN
16822005-06-10 Han-Wen Nienhuys <hanwen@xs4all.nl>
1683
1684 * modules.c (s_scm_eval_closure_module): new function. Return the
1685 module inside an eval-closure.
1686
1687 * gc.c (scm_init_storage): make scm_stand_in_procs a weak_key hash
1688 table. This means that procedure properties are GC'd if the
1689 procedure dies.
1690
27667158
KR
16912005-06-11 Kevin Ryde <user42@zip.com.au>
1692
1693 * srfi-13.c (scm_string_filter, scm_string_delete): For char and
1694 charset cases, count chars kept and build a string in a second pass,
1695 rather than using a cons cell for every char kept. Use a shared
1696 substring when nothing removed (such sharing is allowed by the srfi).
1697
8a00ba71
HWN
16982005-06-09 Han-Wen Nienhuys <hanwen@xs4all.nl>
1699
1700 * gc.c (tag_table_to_type_alist): convert tag number to "tag %d"
1701 string, so live object stats can be sorted with string<?.
1702
a677679f
MV
17032005-06-06 Marius Vollmer <mvo@zagadka.de>
1704
2ff668b0
MV
1705 * print.c (iprin1): When writing a string, collect all characters
1706 that can be printed directly into one call to scm_lfwrite.
1707 Previously, every character was output with its own call to
1708 write(2) on unbuffered ports.
1709
589f22f6
MV
1710 * eval.c (scm_eval_options_interface): Use
1711 scm_frame_critical_section instead of SCM_CRITICAL_SECTION_START
1712 and SCM_CRITICAL_SECTION_END.
1713
a677679f
MV
1714 * unif.c (scm_array_in_bounds_p): First test for real arrays, then
1715 check for generalized vectors. This ensures that the generalized
1716 vector case need only work with zero-origin ranges.
1717
f8cda9ee
KR
17182005-06-06 Kevin Ryde <user42@zip.com.au>
1719
1720 * srfi-13.c (scm_string_split): Compare char/char in scan. Mixing an
1721 unsigned int SCM_CHAR and a char string meant an 8-bit char was never
1722 matched.
1723
cdac1be4
MV
17242005-06-05 Marius Vollmer <mvo@zagadka.de>
1725
6642f7ac
MV
1726 * eval.c: Added comment on how to make case 1.1 of
1727 r5rs_pitfall.test succeed.
1728
cdac1be4
MV
1729 From Jan Nieuwenhuizen <janneke@gnu.org>. Thanks!
1730
1731 * hashtab.h: Bugfix: use SCM_API (WAS: extern).
1732
1733 * socket.c: Remove obsolete comment about socklen_t.
1734 (s_scm_setsockopt)[!HAVE_IP_MREQ]: Do not use ip_mreq code.
1735
1736 * numbers.h (isnan)[__MINGW32__]: Remove.
1737
1738 * Makefile.am (gen_scmconfig_SOURCES): Bugfix: Add
1739 DEFAULT_INCLUDES when cross compiling.
1740
1741 * threads.c (ETIMEDOUT, pipe)[__MINGW32__]: Add defines.
1742
a677679f 1743 * stime.c (scm_strftime)[!HAVE_TM_ZONE]: Use
cdac1be4
MV
1744 SCM_SIMPLE_VECTOR_REF instead of SCM_VELTS. (Changed slightly
1745 from Jan's patch.)
1746
9e664475
MV
17472005-05-22 Marius Vollmer <mvo@zagadka.de>
1748
188d0c5e
MV
1749 * unif.c (scm_make_shared_array): Add old base to new base since
1750 scm_array_handle_pos does not include the base.
1751 (scm_aind): Likewise.
1752
9e664475
MV
1753 * ports.c (scm_putc, scm_puts): Assert that the port argument is a
1754 output port.
1755
5a6d139b
NJ
17562005-05-12 Neil Jerram <neil@ossau.uklinux.net>
1757
1758 Mac OS X compile warning fixes, reported by Richard Todd.
1759
1760 * unif.c (scm_i_read_array): Declare rank as ssize_t, to guarantee
1761 that it is signed.
1762
1763 * strports.c (st_resize_port): Add unsigned char cast.
1764 (scm_mkstrport): Make read/write_buf cast unsigned.
1765
1766 * srfi-13.c (string_titlecase_x): Add unsigned char cast.
1767
1768 * rdelim.c (scm_read_line): Initialize slen.
1769
1770 * load.c (scm_search_path): Remove weird >=1, and add
1771 parentheses to clarify conditions.
1772
1773 * hash.c (scm_hasher): Add const unsigned char cast.
1774
1775 * gh_data.c (gh_chars2byvect): Add scm_t_int8 cast.
1776
b01532af
NJ
17772005-05-11 Neil Jerram <neil@ossau.uklinux.net>
1778
9a5fa6e9 1779 Fix C99isms reported by Ludovic Courtès:
b01532af
NJ
1780
1781 * threads.c (s_scm_lock_mutex): Don't declare msg in middle of
1782 code.
1783
1784 * gc.c (s_scm_gc_live_object_stats): Don't declare alist in middle
1785 of code.
1786
1787 * gc-card.c (scm_i_card_statistics): Don't declare tag in middle
1788 of code.
1789 (scm_i_card_statistics): Add block for declarations of tag_as_scm
1790 and current.
1791
229a0710
NJ
17922005-05-10 Neil Jerram <neil@ossau.uklinux.net>
1793
1794 * scmsigs.c (signal_delivery_thread): Return a value, to avoid
1795 compile warning reported by Werner Scheinast.
1796
645dd3fc
HWN
17972005-04-30 Han-Wen Nienhuys <hanwen@xs4all.nl>
1798
80038021
HWN
1799 * list.h: remove scm_list()
1800
645dd3fc
HWN
1801 * fluids.c (DYNAMIC_STATE_NEXT_LOC): new macro for use with
1802 SCM_DEBUG_CELL_ACCESSES
1803 (FLUID_NEXT_LOC): idem.
1804
9a68a4a8
KR
18052005-04-30 Kevin Ryde <user42@zip.com.au>
1806
1807 * numbers.c (scm_divide): Correction to 1/complex and <any>/complex,
1808 need to test abs(re)<abs(im) for choice of cases, otherwise divide by
1809 zero when re==0 and im<0. Reported by Jean Crepeau.
1810
0640cdaa
KR
18112005-04-25 Kevin Ryde <user42@zip.com.au>
1812
1813 * ramap.c (scm_array_map_x): Allow no source args, add num args checks
4d54ee35
KR
1814 to subr_1, subr_2, subr_2o and dsubr cases. No source args only has a
1815 few sensible uses (like filling with a random number generator say),
1816 but has been allowed in the past and so should be kept.
0640cdaa 1817
c0b85e9c
KR
18182005-04-23 Kevin Ryde <user42@zip.com.au>
1819
1820 * hashtab.c (scm_hashx_remove_x): Need to pass "closure" to
1821 scm_hash_fn_remove_x.
1822
1823 * list.c (scm_cons_star): Don't modify the rest list, it belongs to
1824 the caller when cons* is reached through apply.
1825
1826 * list.c (list): Use scm_list_copy, so as to produce a fresh list when
1827 list is called using apply, under the debugging evaluator.
1828 (scm_list): Remove.
1829
c51682b4
KR
1830 * list.c, list.h (scm_make_list): New code, moving make-list from
1831 boot-9.scm.
8cb2eff8 1832
c0575bde
KR
18332005-04-14 Kevin Ryde <user42@zip.com.au>
1834
1835 * numbers.c, numbers.h (scm_oneplus, scm_oneminus): New functions,
1836 converted from scheme code in boot-9.scm.
1837
47a298d9
KR
18382005-04-11 Kevin Ryde <user42@zip.com.au>
1839
1840 * srfi-13.c (scm_string_concatenate, scm_string_concatenate_shared):
1841 Validate list argument, scm_string_append and scm_string_append_shared
1842 don't do that to their rest argument (in a normal build).
1843
8ea3dc2e
MV
18442005-04-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1845
1846 * hashtab.h, hashtab.c (scm_t_hashtable): Removed 'closure' field. The
1847 closure can not be stored since it is no longer valid at GC time.
1848 (make_hash_table): Initialize 'hash_fn' field.
1849 (scm_i_rehash): Only store hash_fn in hash table when closre is
1850 NULL.
1851 (rehash_after_gc): Only call scm_i_rehash when 'hash_fn' is
1852 non-NULL. Always use a NULL closure.
1853 (scm_hash_fn_create_handle_x): Also rehash when table contains too
1854 few entries.
1855
08d2020d
MV
18562005-03-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1857
1858 * hashtab.h, hashtab.c (scm_hash_fx_remove_x): Removed delete_fn
1859 argument; always use scm_delq_x. The delete_fn function works on
1860 the handle, not the key, and it therefore makes no sense to make
1861 it configurable. Changed all callers.
1862 (scm_hashx_remove_x): Likewise. Also, exported to Scheme.
1863 (scm_hash_clear): Accept plain vectors as hashtables.
1864 (scm_delx_x): Removed.
1865
cb975c21
HWN
18662005-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
1867
1868 * inline.h (scm_double_cell): use __asm__ iso. asm, to maintain
1869 compatibility with gcc -std=c99.
1870
4c908f2c
MD
18712005-03-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1872
1873 * async.h (scm_mask_ints): Removed left over reference to
1874 scm_root.
1875
1876 * threads.c: Removed fprintf debug statements.
1877
d193b04b
NJ
18782005-03-24 Neil Jerram <neil@ossau.uklinux.net>
1879
1880 * debug.c (scm_make_memoized): Restore use of SCM_UNPACK.
1881
c29748cd
NJ
18822005-03-23 Neil Jerram <neil@ossau.uklinux.net>
1883
1884 * debug.c (scm_make_memoized): Remove unnecessary critical
1885 section, and simplify by using SCM_RETURN_NEWSMOB.
1886
e654b062
MD
18872005-03-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1888
1889 * strings.h (SCM_STRING_UCHARS): Added missing argument.
1890
4bc6f1c6
KR
18912005-03-18 Kevin Ryde <user42@zip.com.au>
1892
1893 * arbiters.c (FETCH_STORE) [generic C]: Should be
9a5fa6e9 1894 scm_i_scm_pthread_mutex_lock/unlock now. Reported by Ludovic Courtès.
4bc6f1c6 1895
f1531813
KR
18962005-03-13 Kevin Ryde <user42@zip.com.au>
1897
1898 * numbers.c, numbers.h (scm_i_clonebig): Remove static, so can use in
1899 srfi-60.
1900
1901 * numbers.c (scm_logior): Must scm_i_normbig results as per scm_logand,
1902 because OR-ing bits into a negative can reduce the value to an inum.
1903
1904 * numbers.c (scm_num_eq_p): On 64-bit systems, be careful about
1905 casting inum to double since that can lose precision.
1906
a9fae247
MV
19072005-03-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1908
1909 * threads.h, threads.c (scm_i_thread): Added gc_running_p field.
1910 (guilify_self_1): Initialize it.
1911
1912 * gc.h, gc.c (SCM_FREECELL_P): Removed for good.
1913 (scm_block_gc, scm_gc_heap_lock): Removed. Removed all uses.
1914 (scm_gc_running_p): Now a macro that refers to the scm_i_thread
1915 field.
1916 (scm_i_sweep_mutex): Now a non-recursive mutex. GC can not happen
1917 recursively.
1918 (scm_igc, scm_i_gc): Renamed former to latter. Changed all uses.
1919 Do not lock scm_i_sweep_mutex, which is now non-recursive, or set
1920 scm_gc_running_p. Do not run the scm_after_gc_c_hook.
1921 (scm_gc): Lock scm_i_sweep_mutex, set scm_gc_running_p and run the
1922 scm_after_gc_c_hook here.
1923 (scm_gc_for_new_cell): Set scm_gc_running_p here and run the
1924 scm_after_gc_c_hook when a full GC has in fact been performed.
1925 (scm_i_expensive_validation_check): Call scm_gc, not scm_i_gc.
1926
1927 * gc-segment.c (scm_i_get_new_heap_segment): Do not check
1928 scm_gc_heap_lock.
1929
1930 * gc-malloc.c (scm_realloc, increase_mtrigger): Set
1931 scm_gc_running_p while the scm_i_sweep_mutex is locked.
1932
1933 * inline.h (scm_cell, scm_double_cell): Do not check
1934 scm_gc_running_p, allocation during sweeping is OK.
1935
1936 * gdbint.c (SCM_BEGIN_FOREIGN_BLOCK, SCM_END_FOREIGN_BLOCK): Do
1937 not set scm_block_gc.
1938
1939 * init.c (scm_i_init_guile): Do not set scm_block_gc.
1940
1941 * deprecation.c (scm_c_issue_deprecation_warning): Use malloc
1942 instead of scm_malloc. The latter can not be used during GC.
1943
d1c38e11
MV
19442005-03-09 Marius Vollmer <mvo@zagadka.de>
1945
1946 * script.c (scm_compile_shell_switches): Added 2005 to Copyright
1947 years.
1948
99ec43c1
MV
19492005-03-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1950
1951 * gc-card.c (scm_i_sweep_card): Do not increase/decrease
1952 scm_gc_running_p. Sweeping can happen in parallel with
1953 allocation.
1954
1955 * inline.h: Updated comments for current threading implementation.
1956
1957 * threads.h, threads.c (scm_i_frame_single_threaded): Removed.
1958 (scm_i_thread): Removed unused signal_asyncs field.
1959 (threads_mark): Do not mark it.
1960 (guilify_self_1): Do not initialize it. Do initialize
1961 continuation_root field.
1962 (do_thread_exit): Do not remove thread from all_threads list.
1963 (on_thread_exit): Do it here, after leaving guile mode.
1964 (sleep_level): Removed.
1965 (scm_i_thread_put_to_sleep): Leave thread_admin_mutex locked when
1966 returning. Do not support recursive sleeps.
1967 (scm_i_thread_wake_up): Expect thread_admin_mutex to be locked on
1968 entry. Do not support recursive sleeps.
1969
1970 * fluids.c (ensure_state_size, ensure_all_state_sizes,
1971 resize_all_states): Collapsed ensure_state_size and
1972 ensure_all_state_sizes into one function named resize_all_states.
1973 Allocate new vectors outside of single threaded region. Do only
1974 simple things inside that region.
1975 (scm_make_fluid, scm_make_dynamic_state): Lock fluid_admin_mutex
1976 while adding to the global lists.
1977
1978
461f34aa
MV
19792005-03-08 Marius Vollmer <mvo@zagadka.de>
1980
1981 libltdl is no longer distributed. We expect it to be installed
1982 already.
1983
1984 * Makefile.am (INCLUDES): Removed @LTDLINCL@.
1985 (libguile_la_LIBADD): Removed @LIBLTDL@.
1986
4e047c3e
MV
19872005-03-07 Marius Vollmer <mvo@zagadka.de>
1988
1989 * threads.h, async.h, threads.c (SCM_CRITICAL_SECTION_START,
1990 SCM_CRITICAL_SECTION_END): Moved here from threads.h since now
1991 they also block/unblock execution of asyncs and call
1992 scm_async_click which is declared in async.h but threads.h can not
1993 include async.h since async.h already includes threads.h.
1994 (scm_i_critical_section_level): New, for checking mistakes in the
1995 use of the SCM_CRITICAL_SECTION_* macros.
1996 (scm_i_critical_section_mutex): Make it a recursive mutex so that
1997 critical sections can be nested.
1998
1999 * throw.c (scm_ithrow): Abort when scm_i_critical_section_level is
2000 not zero.
2001
2002 * threads.h, threads.c (scm_frame_lock_mutex): New.
2003 (scm_frame_critical_section): Take mutex as argument.
2004 (framed_critical_section_mutex): New, used as default for above.
2005 (scm_init_threads): Initialize it.
2006 (scm_threads_prehistory): Do not initialize thread_admin_mutex and
2007 scm_i_critical_section_mutex; both are initialized statically.
2008
2009 * continuation.c, deprecated.c, goops.c, guardians.c keywords.c,
2010 libguile_la-arrays.loT, objprop.c, ports.c, smob.c, sort.s,
b9d9ad3a
MV
2011 srcprop.c, stime.c, struct.c, throw.c, regex-posix.c: Include
2012 "libguile/async.h" for SCM_CRITICAL_SECTION_START/END.
4e047c3e
MV
2013
2014 * debug.c (scm_debug_options): Replace
2015 SCM_CRITICAL_SECTION_START/END with a frame and
2016 scm_frame_critical_section.
2017
2018 * continuations.c (scm_make_continuation): No longer a critical
2019 section.
2020 (scm_dynthrow): Abort when scm_i_critical_section_level is
2021 not zero.
2022
d0a45bff
MV
20232005-03-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2024
db6673e5
MV
2025 * threads.c (scm_try_mutex): Renamed argument for consistency.
2026
d0a45bff
MV
2027 * root.c (scm_call_with_dynamic_root): New docstring.
2028
2029 * eval.c: Define _GNU_SOURCE.
2030
9de87eea
MV
20312005-03-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2032
2033 Big merge from the mvo-thread-cleanup branch. The main changes
2034 are:
2035
2036 - The dynamic roots functionality has been split into dynamic
2037 states and continuations barriers. Fluids have been
2038 reimplemented and can now be garbage collected.
2039
2040 - Initialization of Guile now works in a multi-thread friendly
2041 manner. Threads can freely enter and leave guile mode.
2042
2043 - Blocking on mutexes or condition variables or while selecting
2044 can now be reliably interrupted via system asyncs.
2045
2046 - The low-level threading interface has been removed.
2047
2048 - Signals are delivered via a pipe to a dedicated 'signal delivery
2049 thread'.
2050
2051 - SCM_DEFER_INTS, SCM_ALLOW_INTS etc have been deprecated.
2052
2053 * throw.c (scm_handle_by_message): Exit only the current thread,
2054 not the whole process.
2055 (scm_handle_by_message_noexit): Exit when catching 'quit.
2056
2057 * scmsigs.c (take_signal, signal_delivery_thread,
2058 start_signal_delivery_thread, ensure_signal_delivery_thread,
2059 install_handler): Reimplemented signal delivery as explained in
2060 the comments.
2061
2062 * pthreads-threads.h (scm_i_pthread_t, scm_i_pthread_self,
2063 scm_i_pthread_create, scm_i_pthread_detach, scm_i_pthread_exit,
2064 scm_i_sched_yield, scm_i_pthread_sigmask,
2065 SCM_I_PTHREAD_MUTEX_INITIALIZER,
2066 SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER, scm_i_pthread_mutex_t ,
2067 scm_i_pthread_mutex_init, scm_i_pthread_mutex_destroy,
2068 scm_i_pthread_mutex_trylock, scm_i_pthread_mutex_lock,
2069 scm_i_pthread_mutex_unlock, SCM_I_PTHREAD_COND_INITIALIZER,
2070 scm_i_pthread_cond_t, scm_i_pthread_cond_init,
2071 scm_i_pthread_cond_destroy, scm_i_pthread_cond_signal,
2072 scm_i_pthread_cond_broadcast, scm_i_pthread_cond_wait,
2073 scm_i_pthread_cond_timedwait, scm_i_pthread_once_t,
2074 SCM_I_PTHREAD_ONCE_INIT, scm_i_pthread_once, scm_i_pthread_key_t ,
2075 scm_i_pthread_key_create, scm_i_pthread_setspecific,
2076 scm_i_pthread_getspecific, scm_i_scm_pthread_mutex_lock,
2077 scm_i_frame_pthread_mutex_lock, scm_i_scm_pthread_cond_wait,
2078 scm_i_scm_pthread_cond_timedwait): Provide the obvious mapping
2079 when using pthreads.
2080 * null-threads.c, null-threads.h: Provide dummy definitions for
2081 the above symbols when not using pthreads.
2082
2083 * modules.h, modules.c (scm_frame_current_module): New.
2084
2085 * load.c (scm_primitive_load): Use scm_i_frame_current_load_port
2086 instead of scm_internal_dynamic_wind.
2087
2088 * init.h, init.c (restart_stack, start_stack): Removed.
2089 (scm_boot_guile, invoke_main_func): Simply use scm_with_guile.
2090 (scm_boot_guile_1): Removed.
2091 (scm_i_init_mutex): New.
2092 (really_cleanup_for_exit, cleanup_for_exit): New.
2093 (scm_init_guile_1, scm_i_init_guile): Renamed former to latter.
2094 Moved around some init funcs. Call
2095 scm_init_threads_default_dynamic_state. Register cleanup_for_exit
2096 with atexit.
2097
2098 * hashtab.c (scm_hash_fn_create_handle_x, scm_hash_fn_remove_x):
2099 Use "!scm_is_eq" instead of "!=".
2100
2101 * ge-scmconfig.c, gen-scmconfig.h.in (SCM_I_GSC_USE_COOP_THREADS,
2102 SCM_USE_COOP_THREADS): Removed.
2103
2104 * gc.c (scm_igc): Take care that scm_gc_running_p is properly
2105 maintained. Unlock scm_i_sweep_mutex before running
2106 scm_after_gc_c_hook.
2107 (scm_permanent_object): Allocate outside of critical section.
2108 (cleanup): Removed.
2109
2110 * fluids.h, fluids.c: Reimplemented completely.
2111 (SCM_FLUID_NUM, SCM_FAST_FLUID_REF,
2112 SCM_FAST_FLUID_SET): Reimplemented as functions.
2113 (scm_is_fluid): New.
2114 (scm_i_make_initial_fluids, scm_i_copy_fluids): Removed.
2115 (scm_make_dynamic_state, scm_dynamic_state_p,
2116 scm_is_dynamic_state, scm_current_dynamic_state,
2117 scm_set_current_dynamic_state, scm_frame_current_dynamic_state,
2118 scm_c_with_dynamic_state, scm_with_dynamic_state,
2119 scm_i_make_initial_dynamic_state, scm_fluids_prehistory): New.
2120
2121 * feature.c (progargs_fluid): New.
2122 (scm_program_arguments, scm_set_program_arguments): Use it instead
2123 of scm_progargs.
2124 (scm_init_feature): Allocate it. Also, only add "threads" feature
2125 when SCM_USE_PTHREAD_THREADS is true.
2126
2127 * eval.c (scm_makprom): Use scm_make_recursive_mutex instead of
2128 scm_make_rec_mutex, with all the consequences.
2129 (scm_eval_x, scm_eval): Use scm_frame_begin etc instead of
2130 scm_internal_dynamic_wind. Handle dynamic states as second
2131 argument.
2132
2133 * threads.h, threads.c (scm_internal_select): Renamed to
2134 scm_std_select and discouraged old name.
2135 (scm_thread_sleep, scm_thread_usleep): Likewise, as scm_std_sleep
2136 and scm_std_usleep.
2137 (scm_tc16_fair_mutex, scm_tc16_fair_condvar, SCM_MUTEXP,
2138 SCM_FAIR_MUTEX_P, SCM_MUTEX_DATA, SCM_CONDVARP,
2139 SCM_FAIR_CONDVAR_P, SCM_CONDVAR_DATA, SCM_THREADP,
2140 SCM_THREAD_DATA): Removed.
2141 (SCM_I_IS_THREAD, SCM_I_THREAD_DATA): New.
2142 (scm_i_thread): New.
2143 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
2144 Use scm_assert_smob_type.
2145 (scm_c_scm2thread, scm_thread_join, scm_thread_detach,
2146 scm_thread_self, scm_thread_yield, scm_mutex_init,
2147 scm_mutex_destroy, scm_mutex_trylock, scm_mutex_unlock,
2148 scm_rec_mutex_init, scm_rec_mutex_destroy, scm_make_rec_mutex,
2149 scm_rec_mutex_free, scm_rec_mutex_lock, scm_rec_mutex_trylock,
2150 scm_cond_init, scm_cond_destroy, scm_cond_wait,
2151 scm_cond_timedwait, scm_cond_signal, scm_cond_broadcast,
2152 scm_key_create, scm_key_delete, scm_setspecific, scm_getspecific,
2153 scm_thread_select): Removed. Replaced with scm_i_pthread
2154 functions as appropriate.
2155 (scm_in_guile, scm_outside_guile): Removed.
2156 (scm_t_guile_ticket, scm_leave_guile, scm_enter_guile): Return and
2157 take a ticket.
2158 (scm_with_guile, scm_without_guile, scm_i_with_guile_and_parent):
2159 New.
2160 (scm_i_frame_single_threaded): New.
2161 (scm_init_threads_default_dynamic_state): New.
2162 (scm_i_create_thread): Removed.
2163 (scm_make_fair_mutex, scm_make_fair_condition_variable): Removed.
2164 (scm_make_recursive_mutex): New.
2165 (scm_frame_critical_section): New.
2166 (SCM_CURRENT_THREAD, SCM_I_CURRENT_THREAD): Renamed former to
2167 latter, changed all uses.
2168 (scm_i_dynwinds, scm_i_setdynwinds, scm_i_last_debug_frame,
2169 scm_i_set_last_debug_frame): New, use them instead of scm_root
2170 stuff.
2171 (SCM_THREAD_LOCAL_DATA, SCM_SET_THREAD_LOCAL_DATA,
2172 scm_i_root_state_key,m scm_i_set_thread_data): Removed.
2173 (scm_pthread_mutex_lock, scm_frame_pthread_mutex_lock,
2174 scm_pthread_cond_wait, scm_pthread_cond_timedwait).
2175 (remqueue): Allow the removal of already removed cells. Indicate
2176 whether a real removal has happened.
2177 (scm_thread): Removed, replaced with scm_i_thread.
2178 (make_thread, init_thread_creatant): Removed.
2179 (cur_thread): Removed.
2180 (block_self, unblock_from_queue): New.
2181 (block, timed_block, unblock): Removed.
2182 (guilify_self_1, guilify_self_2, do_thread_exit,
2183 init_thread_key_once, init_thread_key,
2184 scm_i_init_thread_for_guile, get_thread_stack_base,
2185 scm_init_guile): New initialisation method.
2186 (scm_call_with_new_thread, scm_spawn_thread): Use it to simplify
2187 thread creation.
2188 (fair_mutex, fat_mutex, etc, fair_condvar, fat_condvar): Renamed
2189 "fair" to fat and implemented new semantics, including reliable
2190 interruption.
2191 (all_threads): Now a pointer to a scm_i_thread, not a SCM.
2192 (scm_threads_mark_stacks): Explicitly mark handle.
2193 (scm_std_select): Allow interruption by also selecting on the
2194 sleep_pipe.
2195 (scm_i_thread_put_to_sleep): Handle recursive requests for
2196 single-threadedness.
2197 (scm_threads_prehistory, scm_init_threads): Put current thread
2198 into guile mode via guileify_self_1 and guileify_self_2,
2199 respectively.
2200
2201 * fluid.h (SCM_FLUIDP): Deprecated.
2202
2203 * coop-threads.c: Removed.
2204
2205 * continuations.h, continuations.c (scm_with_continuation_barrier,
2206 scm_c_with_continuation_barrier, scm_i_with_continuation_barrier):
2207 New.
2208
2209 * async.h, async.c (scm_i_setup_sleep, scm_i_reset_sleep): New.
2210 (async_mutex): New.
2211 (scm_async_click): Protected with async_mutex. Do not deal with
2212 signal_asyncs, which are gone. Set cdr of handled async cell to
2213 #f.
2214 (scm_i_queue_async_cell): Protected with async_mutex. Interrupt
2215 current sleep.
2216 (scm_system_async_mark_for_thread): Do not use scm_current_thread
2217 since that might not work during early initialization.
2218
2219 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS, SCM_REDEFER_INTS,
2220 SCM_REALLOW_INTS): Deprecated by moving into deprecated.h and
2221 deprecated.c. Replaced all uses with SCM_CRITICAL_SECTION_START
2222 and SCM_CRITICAL_SECTION_END.
2223 (SCM_ENTER_A_SECTION, SCM_EXIT_A_SECTION): Removed. Replaced with
2224 SCM_CRITICAL_SECTION_START/END.
2225
2226 * Makefile.am (modinclude_HEADER): Removed threads-plugin.h.
2227 (libguile_la_SOURCES): Added null-threads.c
2228 (EXTRA_libguile_la_SOURCES): Removed pthread-threads.c and
2229 threads-plugin.c.
2230 * pthread-threads.c, threads-plugin.c, threads-plugin.h: Removed.
2231
2232 * root.h, root.c (scm_tc16_root, SCM_ROOTP, SCM_ROOT_STATE,
2233 scm_root_state, scm_stack_base, scm_save_regs_gc_mark,
2234 scm_errjmp_bad, scm_rootcont, scm_dynwinds, scm_progargs,
2235 scm_last_debug_frame, scm_exitval, scm_cur_inp, scm_outp,
2236 scm_cur_err, scm_cur_loadp, scm_root, scm_set_root,
2237 scm_make_root): Removed or deprecated. Replaced with references
2238 to the current thread, dynamic state, continuation barrier, or
2239 some fluid, as appropriate.
2240 (root_mark, root_print): Removed.
2241 (scm_internal_cwdr): Reimplemented guts with
2242 scm_frame_current_dynamic_state and
2243 scm_i_with_continuation_barrier.
2244 (scm_dynamic_root): Return current continuation barrier.
2245
2246
ad3d5a65
MV
22472005-02-28 Marius Vollmer <mvo@zagadka.de>
2248
2249 * socket.c (scm_setsockopt): Handle IP_ADD_MEMBERSHIP and
2250 IP_DROP_MEMBERSHIP options. Also, reorganized the code a bit for
2251 cleanliness.
2252 (scm_init_socket): Define IP_ADD_MEMBERSHIP and
2253 IP_DROP_MEMBERSHIP.
2254 Thanks to Greg Troxel!
2255
73a90115
MD
22562005-02-27 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2257
2258 * gh.h: Bugfix: Include <libguile.h> outside of the extern "C"
2259 block.
2260
5d2cb3ab
MV
22612005-02-25 Marius Vollmer <mvo@zagadka.de>
2262
2263 * hashtab.c (scm_i_rehash): Remove elements from old bucket vector
2264 so that no two weak alist vectors share a spine.
2265 (scm_hash_fn_create_handle_x): Deal with a possible rehashing
2266 during GC before inserting the new alist cell.
2267
838c4126
MV
22682005-02-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2269
2270 * hashtab.c (scm_i_rehash): Cope with the case that a GC modifies
2271 the hashtable.
2272 (scm_hash_fn_create_handle_x): Likewise.
2273 * vectors.h (SCM_I_SET_WVECT_TYPE): New, for use in scm_i_rehash.
2274
29fed193
MD
22752005-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2276
2277 * unif.c (prototype_to_type): Bugfix: Don't compare prototype to
2278 the prototypical examples mentioned in the old reference manual.
2279 Instead keep the old semantics of dispatching on type. (Yes, this
2280 is extremely ugly, but the whole point of keeping the deprecated
2281 interface is not to break old code.)
2282
9cc49060
MD
22832005-02-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2284
2285 * deprecated.h (SCM_ARRAY_DIMS): Rename scm_i_attay_dims -->
2286 scm_i_array_dims.
2287
8447f463
KR
22882005-01-28 Kevin Ryde <user42@zip.com.au>
2289
2290 * numbers.c (scm_ash): Rewrite using shifts, much faster than
2291 integer-expt and multiply/divide. Inexacts and fractions no longer
2292 supported (they happened to work before for left shifts, but not
2293 right). Don't really need inexacts and fractions, since ash is
2294 documented as a "bitwise operation", and all the rest of those only
2295 take exact integers.
2296
1367aa5e
HWN
22972005-01-27 Han-Wen Nienhuys <hanwen@xs4all.nl>
2298
856fca7e
HWN
2299 * gc-card.c (scm_i_card_statistics): map structs, closures and
2300 subrs to one tag.
2301
1367aa5e 2302 * gc.c (s_scm_gc_live_object_stats): return alist, not hashtable.
856fca7e 2303 (tag_table_to_type_alist): ignore unknown types.
1367aa5e
HWN
2304
2305 * gc-segment.c (scm_i_all_segments_statistics): new function.
2306 (scm_i_heap_segment_statistics): new function
2307
2308 * gc.c (s_scm_gc_live_object_stats): new GUILE callable: return
2309 statistics on the number of live objects of each type.
2310
2311 * gc-card.c (scm_i_tag_name): new function.
2312 (scm_i_card_statistics): new function.
2313
333db3b8
KR
23142005-01-24 Kevin Ryde <user42@zip.com.au>
2315
2316 * posix.c (scm_setlocale): Force errno=EINVAL for an error, since
2317 POSIX and C99 don't document errno being set. Reported by Bruno
2318 Haible.
2319 (scm_flock): Update docstring from manual.
2320
8447f463
KR
2321 * random.c (scm_i_init_rstate): Compare w to -1 not 0xffffffffUL, now
2322 that it's an scm_t_int32. Otherwise gcc 3.4 says it's always false on
2323 a 64-bit system.
2324
2325 * scmsigs.c (scm_sigaction_for_thread): Use scm_to_long for
2326 sa_handler, needs to be a long on 64-bit systems where int is only 32
2327 bits.
2328
88f59e53
MV
23292005-01-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2330
0eeb2611
MV
2331 * environments.c (obarray_enter, obarray_replace): Call
2332 SCM_HASHTABLE_INCREMENT when adding a new entry.
2333
88f59e53
MV
2334 * objects.c: Include goops.h for the scm_class_of prototype.
2335
2336 * hashtab.c (hashtable_size, HASHTABLE_SIZE_N): Restrict hashtable
2337 sizes to be smaller than the maximum lengths of vectors.
2338
219b2868
MV
23392005-01-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2340
2341 * ports.c, smob.c: Include "libguile/goops.h".
2342
2343 * objects.h, objects.c, goops.c, goops.h (scm_class_boolean,
2344 scm_class_char, scm_class_pair, scm_class_procedure,
2345 scm_class_string, scm_class_symbol,
2346 scm_class_procedure_with_setter, scm_class_primitive_generic,
2347 scm_class_vector, scm_class_null, scm_class_real,
2348 scm_class_complex, scm_class_integer, scm_class_fraction,
2349 scm_class_unknown, scm_port_class, scm_smob_class,
2350 scm_no_applicable_method, scm_class_of): Moved from objects to
2351 goops since they are only useable once goops has been loaded.
2352 (scm_classes_initialized): Removed.
2353 (scm_class_of): Do not check it.
2354 (create_standard_classes): Do not set it.
2355
009c6b9c
MV
23562005-01-17 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2357
50472546
MV
2358 * objects.h, objects.c (scm_classes_initialized): New.
2359 (scm_class_of): Signal error when scm_classes_initialized is zero.
2360 * goops.c (create_standard_classes): Set scm_classes_initialized
2361 to one.
2362
009c6b9c
MV
2363 * random.c (scm_random_solid_sphere_x): Use
2364 scm_c_generalized_vector_length instead of
2365 scm_uniform_vector_length.
2366
7719cbe9
MV
23672005-01-16 Marius Vollmer <mvo@zagadka.de>
2368
2369 * script.c (scm_compile_shell_switches): Removed debugging output.
2370
1ec44fed
KR
23712005-01-15 Kevin Ryde <user42@zip.com.au>
2372
2373 * numbers.c (scm_logtest, scm_logbit_p, scm_integer_expt): Update
2374 docstrings from manual.
2375 * random.c (scm_random_solid_sphere_x): Update docstring from manual.
2376
6e4cd850
MV
23772005-01-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2378
0b5a0521
MV
2379 * random.c: Don't check for definedness of SCM_HAVE_T_INT64, check
2380 its value.
2381
2382 Implement u64 and s64 uniform numeric vectors with bignums when
2383 scm_t_uint64 and scm_t_int64 are not available.
2384
2385 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_take_u64vector,
2386 scm_array_handle_u64_elements,
2387 scm_array_handle_u64_writable_elements, scm_u64vector_elements,
2388 scm_u64vector_writable_elements): Do not define when scm_t_uint64
2389 is not available.
2390 (scm_take_s64vector, scm_array_handle_s64_elements,
2391 scm_array_handle_s64_writable_elements, scm_s64vector_elements,
2392 scm_s64vector_writable_elements): Likewise for scm_t_int64.
2393 (uvec_sizes, uvec_print, uvec_equalp): Use SCM bignums when
2394 scm_t_int64/scm_t_uint64 are not available.
2395 (uvec_mark): New, to mark the bignums.
2396 (alloc_uvec): Initialize bignums.
2397 (uvec_fast_ref): Return bignums directly.
2398 (scm_uint64_min, scm_uint64_max, scm_int64_min, scm_int64_max,
2399 assert_exact_integer): New.
2400 (uvec_fast_set): Use them to validate the bignums.
2401 (scm_init_srfi_4): Set mark function of smob when needed.
2402 Initialize scm_uint64_min, scm_uint64_max, scm_int64_min,
2403 scm_int64_max.
2404
6e4cd850
MV
2405 Recognize 1.4 -e syntax.
2406
2407 * script.c (sym_at, sym_atat, sym_main, all_symbols): New.
2408 (scm_compile_shell_switches): Use them to recognize and convert
2409 1.4 "-e" syntax.
2410
3b698afe
MV
24112005-01-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2412
2413 * deprecated.h, deprecated.c, strings.h, strings.c: Turn all
2414 deprecated features that once were macros but are now functions
2415 back into macros.
2416
d6dc83a9
MV
24172005-01-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2418
49086691
MV
2419 * eval.c, debug.h (SCM_WARN_DEPRECATED): New debug option.
2420 * deprecation.c (scm_issue_deprecation_warning,
2421 scm_c_issue_deprecation_warning_fmt): Use it.
2422 (mode): Removed.
2423 (print_summary): New.
2424 (scm_init_deprecation): Initialize SCM_WARN_DEPRECATED instead of
2425 mode.
2426
d6dc83a9
MV
2427 Deprecated SCM_ARRAY* macros.
2428
2429 * unif.h, unif.c, ramap.c, vectors.c, srfi-4.c, srfi-4.i.c
2430 (SCM_ARRAYP, SCM_I_ARRAYP): Renamed former to latter internal
2431 version. Changed all uses.
2432 (scm_tc16_array, scm_i_tc16_array,
2433 scm_tc16_enclosed_array, scm_i_tc16_enclosed_array,
2434 SCM_ARRAY_FLAG_CONTIGUOUS, SCM_I_ARRAY_FLAG_CONTIGUOUS,
2435 SCM_ENCLOSE_ARRAYP, SCM_I_ENCLOSE_ARRAYP,
2436 SCM_ARRAY_NDIM, SCM_I_ARRAY_NDIM,
2437 SCM_ARRAY_CONTP, SCM_I_ARRAY_CONTP,
2438 SCM_ARRAY_MEM, SCM_I_ARRAY_MEM,
2439 SCM_ARRAY_V, SCM_I_ARRAY_V,
2440 SCM_ARRAY_BASE, SCM_I_ARRAY_BASE,
2441 SCM_ARRAY_DIMS, SCM_I_ARRAY_DIMS,
2442 scm_t_array, scm_i_t_array): Likewise.
2443 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
2444 Moved from unif.h to unif.c.
2445 (scm_c_array_rank): New.
2446 (scm_array_rank): Reimplement using it.
2447
2448 * deprecated.h, deprecated.c (SCM_ARRAYP, SCM_ARRAY_NDIM,
2449 SCM_ARRAY_CONTP, SCM_ARRAY_MEM, SCM_ARRAY_V, SCM_ARRAY_BASE,
2450 SCM_ARRAY_DIMS, scm_t_array): New deprecated versions.
2451
dc91d8de
MV
24522005-01-11 Marius Vollmer <mvo@zagadka.de>
2453
2454 * ramap.c: Replace uses of scm_make_ra with scm_i_make_ra.
2455 (GVREF, GVSET): New abbreviations. Use them everywhere instead of
2456 scm_c_generalized_vector_ref and scm_cvref, and
2457 scm_c_generalized_vector_set_x, respectively.
2458 (RVREF, IVDEP, BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
2459 UNARY_ELTS_CODE, UNARY_PAIR_ELTS_CODE): Removed since unused.
2460
2461 * unif.h, unif.c (indices_to_pos, scm_array_handle_pos): Renamed
2462 former to latter and made public. Changed all uses.
2463 (scm_i_make_ra): Made public, changed tag param to enclosed flag.
2464 (scm_make_ra): Deprecated, changed all uses to scm_i_make_ra.
2465 (scm_i_shap2ra): New internal version of scm_shap2ra.
2466 (scm_shap2ra): Deprecated, changed all uses to scm_i_shap2ra.
2467 (scm_i_ra_set_contp): New internal version of scm_ra_set_contp.
2468 (scm_ra_set_contp): Deprecated, changed all uses to
2469 scm_i_ra_set_contp.
2470 (scm_cvref, scm_aind, scm_raprin1): Deprecated.
2471
66d33784
MV
24722005-01-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2473
b06f099d
MV
2474 * eval.c (scm_eval): Added example to docstring. Thanks to Issac
2475 Trotts!
2476
5d35ad81
MV
2477 * unif.c (scm_list_to_typed_array): Allow the specification of the
2478 upper bound as well. This is needed for empty arrays.
2479 (l2ra): Give needed number of elements in error message.
2480 (scm_i_print_array): Print length information for arrays that need
2481 it.
2482 (scm_i_read_array): Parse it.
2483
66d33784
MV
2484 * deprecated.h, deprecated.c (SCM_CHARS, SCM_UCHARS, SCM_LENGTH,
2485 scm_i_object_chars, scm_i_object_length): Brought back from the
2486 dead.
2487
d7d7d401
MV
24882005-01-10 Marius Vollmer <mvo@zagadka.de>
2489
74c58fce
MV
2490 * ramap.c: Replaced single-index uses of scm_array_set_x with
2491 scm_c_generalized_vector_set_x.
2492
d7d7d401
MV
2493 * unif.c (scm_array_rank, scm_array_dimensions,
2494 scm_shared_array_offset, scm_shared_array_increments,
2495 scm_array_ref, scm_array_set_x): Use scm_t_array_handle operations
2496 to simplify code and make it more general.
2497 (scm_shared_array_root): Work with all kinds of arrays, including
2498 naked vectors.
2499 (indices_to_pos): New.
74c58fce
MV
2500 (scm_make_shared_array): Use it instead of scm_aind; use handle
2501 for oldra.
2502
4475d3fe
KR
25032005-01-10 Kevin Ryde <user42@zip.com.au>
2504
2505 * posix.c (scm_mkstemp): Update docstring from manual.
2506
d3ddc95e
KR
2507 * stime.c (scm_mktime): Missing default errno=EINVAL from prev change.
2508
8c8491f5
MV
25092005-01-09 Marius Vollmer <mvo@zagadka.de>
2510
b89ecc6f
MV
2511 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_i_uniform_vector_ref_proc,
2512 scm_i_uniform_vector_set_proc): New.
2513 (u8ref, u8set, s8ref, s8set, etc): New.
2514 (uvec_reffers, uvec_setters): New.
2515 (uvec_to_list): Use generic scm_array_handle_ref instead of
2516 uvec_fast_ref since scm_array_handle_ref should be faster now.
8cb01d9f
MV
2517 (coerce_to_uvec, scm_c_uniform_vector_ref,
2518 scm_c_uniform_vector_set_x): Likewise.
b89ecc6f
MV
2519
2520 * unif.h, unif.c, inline.h (scm_i_t_array_ref, scm_i_t_array_set):
2521 New.
2522 (scm_t_array_handle): Added ref, set, elements and
2523 writable_elements for fast inline operation of
2524 scm_array_handle_ref and scm_array_handle_set.
2525 (scm_array_handle_ref, scm_array_handle_set): Moved to inline.h
2526 and replaced with inline code that simply calls the ref/set
2527 members of the handle.
2528 (enclosed_ref, vector_ref, string_ref, bitvector_ref, memoize_ref,
2529 enclosed_set, vector_set, string_set, bitvector_set, memoize_set):
2530 New.
2531 (scm_array_handle_get): Initialize ref/set fields to memoize_ref
2532 and memoize_set.
2533 (scm_bitvector_fill_x, scm_bitvector_to_list, scm_bit_count,
2534 scm_bit_position, scm_bit_set_star_x, scm_bit_count_star,
2535 scm_bit_invert_x): Correctly multiply index with increment in the
2536 general case.
2537
8c8491f5
MV
2538 * unif.c (scm_array_handle_set): Correctly execute only one
2539 alternative. D'Oh!
2540 (scm_list_to_typed_array, l2ra): Use scm_t_array_handle to fill
2541 the array; this covers all cases with much simpler code.
2542
2543 * srfi-4.c (scm_uniform_element_size): Deprecated implementation
2544 as well.
2545
cd5d55c7
MV
25462005-01-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2547
2548 * srfi-4.c (uvec_type): New.
2549 (uvec_to_list, uvec_ref, uvec_set_x, scm_c_uniform_vector_ref,
2550 scm_c_uniform_vector_x): Use it to get concrete type.
2551
2552 * unif.h (scm_t_array_dim): Changed type of members to ssize_t, to
2553 fit the docs.
2554
2555 * unif.c (ra2l): Handle zero rank arrays.
2556 (scm_i_print_array): Print zero rank arrays specially.
2557 (tag_to_type): Return #t for an empty tag, not the empty symbol.
2558 (scm_i_read_array): Allow zero rank arrays.
2559
a4aad74e
MV
25602005-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2561
2562 * hashtab.h, hashtab.c (SCM_HASHTAB_BUCKET_LOC): Removed.
2563 (scan_weak_hashtables): Rewrote its use with SCM_HASHTAB_BUCKET
2564 and SCM_SET_HASHTAB_BUCKET.
2565
2566 * print.h, print.c (scm_print_state, SCM_PRINT_STATE_LAYOUT):
2567 Removed ref_stack field.
2568 (PSTATE_STACK_REF, PSTATE_STACK_SET): New, for accessing the stack
2569 of a print state. Use them everywhere instead of ref_stack.
2570
3a40d5e1
MV
2571 * srfi-4.h (scm_uniform_element_size): Deprecated for real.
2572
a4aad74e
MV
2573 * srfi-4.c: Include deprecation.h.
2574
2575 * vectors.h, vectors.c, unif.h, unif.c, deprecated.h,
2576 deprecated.c, eq.c
2577 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Removed.
2578 (scm_vector_elements, scm_vector_writable_elements,
2579 scm_generalized_vector_get_handle): Moved to vectors.[hc] from
2580 unif.[hc].
2581 (SCM_SIMPLE_VECTOR_LOC): Removed.
2582 (SCM_VECTOR_MAX_LENGTH, SCM_VECTOR_LENGTH, SCM_VELTS,
2583 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET,
2584 scm_vector_equal_p): Moved from vectors.[hc] to deprecated.[hc].
2585 (scm_vector_equal_p, scm_i_vector_equal_p): Renamed former to
2586 latter. Changed use in eq.c.
2587
f01fe441
MV
25882005-01-07 Marius Vollmer <mvo@zagadka.de>
2589
2590 Make the uniform vector routines also deal with one dimensional
2591 arrays.
2592
2593 * srfi-4.c (SCM_IS_UVEC): New, use it instead of
2594 SCM_SMOB_PREDICATE in this file.
2595 (is_uvec): Also recognize one-dimensional uniform numeric arrays
2596 of the right type.
2597 (scm_is_uniform_vector): Likewise.
2598 (uvec_fast_ref): Made BASE param const.
2599 (uvec_writable_elements, uvec_elements): New.
2600 (uvec_to_list, uvec_ref, uvec_set_x, uvec_length,
2601 scm_c_uniform_vector_length, scm_c_uniform_vector_ref,
2602 scm_c_uniform_set_x): Use them to also deal with one-dimensional
2603 arrays.
2604 (scm_uniform_vector_ref, scm_uniform_vector_set_x): Deprecate old
2605 argument convention.
2606 (scm_uniform_vector_to_list): Let uvec_to_list do all the
2607 checking.
2608 (scm_uniform_vector_length): Use uvec_length.
2609
2aaf5726
MV
26102005-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2611
2612 * srfi-4.h, srfi-4.c (scm_c_uniform_vector_element_size,
2613 scm_c_uniform_vector_size): Removed.
2614 (scm_array_handle_uniform_element_size): New.
2615
2616
2617 * unif.h (scm_array_handle_ref, scm_array_handle_set): Changed
2618 type of POS parameter to be signed, positions can be negative.
2619 (scm_array_handle_release): New, changed all uses of
2620 scm_t_array_handle to properly call it.
2621 (scm_vector_get_handle, scm_generalized_vector_get_handle):
2622 Renamed former to latter, changed all uses.
2623
34ae52fc
MV
26242005-01-05 Marius Vollmer <mvo@zagadka.de>
2625
2626 Updated bitvector routines to also use scm_t_array_handles.
2627
2628 * unif.h (scm_bitvector_elements,
2629 scm_bitvector_writable_elements): Use a scm_t_array_handle and
2630 deliver offset, length and increment to caller. Changed all uses.
2631 (scm_bitvector_release_elements,
2632 scm_frame_bitvector_release_elements,
2633 scm_bitvector_release_writable_elements,
2634 scm_frame_bitvector_release_writable_elements): Removed.
2635 (scm_array_handle_bit_elements,
2636 scm_array_handle_bit_writable_elements,
2637 scm_array_handle_bit_elements_offset): New.
2638 (scm_make_typed_array): The special value for non-initialized
2639 arrays is now SCM_UNSPECIFIED. The old special value SCM_BOOL_F
2640 was a valid value to fill bitvectors with, so it can't really be
2641 specialed out.
2642
c4cb7628
KR
26432005-01-04 Kevin Ryde <user42@zip.com.au>
2644
2645 * stime.c (scm_strftime): Free t.tm_zone produced by bdtime2c.
2646 Reported by Bill Schottstaedt.
2647
0356881d
MV
26482005-01-02 Marius Vollmer <mvo@zagadka.de>
2649
2650 * sort.c (quicksort): Added INC parameter for non-contigous
2651 vectors.
2652 (quicksort1): New, for contigous vectors. Both functions are
2653 generated from the same code by including "quicksort.i.c".
2654 (scm_restricted_vector_sort_x): Call one of quicksort and
2655 quicksort1, depending on increment of vector.
2656 (scm_sort): Simply call scm_sort_x on a copy of the list or
2657 vector.
2658 (scm_merge_vector_x, scm_merge_vector_step): Changed indices to
2659 size_t, added inc parameter.
2660 (scm_stable_sort_x): Allocate temporary storage as Scheme vector
2661 so that it doesn't leak.
2662 (scm_stable_sort): Simply call scm_stable_sort_x on a copy of the
2663 list or vector.
2664
2665 * ramap.c (scm_array_map_x): Do not try to convert fill value
2666 before filling, any necessary conversion is done while storing.
2667
2668 * gc-card.c (scm_i_sweep_card): Call scm_i_vector_free instead of
2669 doing it inline.
2670
2671 * hashtab.c, hashtab.h (SCM_HASHTABLE_BUCKETS): Removed.
2672 (SCM_HASHTABLE_BUCKET, SCM_HASHTABLE_BUCKET_LOC): New. Replaced
2673 all uses of SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
2674
2675 * tags.h, weaks.c, vports.c, hashtab.c, convert.c, sort.c,
2676 convert.c, convert.h, convert.i.c, deprecated.c, environments.c,
2677 eval.c, filesys.c, fluids.c, gc-mark.c, gh.h, gh_data.c, goops.c,
2678 hash.c, init.c, libguile_la-arrays.loT, modules.c, net_db.c,
2679 objects.c, ports.c, posix.c, print.c, random.c, read.c,
2680 regex-posix.c, scmsigs.c, socket.c, stime.c, symbols.c: Use new
2681 vector elements API or simple vector API, as appropriate. Removed
2682 SCM_HAVE_ARRAYS ifdefery. Replaced all uses of
2683 SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
2684
2685 * srfi-4.h, srfi-4.c,
2686 srfi-4.i.c (scm_array_handle_uniform_elements,
2687 scm_array_handle_uniform_writable_elements,
2688 scm_uniform_vector_elements,
2689 scm_uniform_vector_writable_elements):
2690 (scm_<foo>vector_elements, scm_<foo>vector_writable_elements): Use
2691 scm_t_array_handle, deliver length and increment.
2692 (scm_array_handle_<foo>_elements,
2693 scm_array_handle_<foo>_writable_elements): New.
2694
2695 * gen-scmconfig.h.in (SCM_I_GSC_HAVE_ARRAYS): Removed.
2696 * gen-scmconfig.c: Hard code SCM_HAVE_ARRAYS to "1".
2697
2698 * unif.h, unif.c (scm_t_array_handle, scm_array_get_handle,
2699 scm_array_handle_rank, scm_array_handle_dims, scm_array_handle_ref
2700 scm_array_handle_set, scm_array_handle_elements
2701 scm_array_handle_writable_elements, scm_vector_get_handle): New.
2702 (scm_make_uve, scm_array_prototype, scm_list_to_uniform_array,
2703 scm_dimensions_to_uniform_array): Deprecated for real.
2704 (scm_array_p, scm_i_array_p): Use latter for SCM_DEFINE since
2705 snarfing wont allow a mismatch between C and Scheme arglists.
2706 (scm_make_shared_array, scm_enclose_array): Correctly use
2707 scm_c_generalized_vector_length instead of
2708 scm_uniform_vector_length.
2709
2710 * validate.h (SCM_VALIDATE_VECTOR,
2711 SCM_VALIDATE_VECTOR_OR_DVECTOR): use scm_is_simple_vector instead
2712 of SCM_VECTORP.
2713
2714 * weaks.h, weaks.c: Use new internal weak vector API from
2715 vectors.h.
2716
2717 * Makefile.am (libguile_la_SOURCES, DOT_X_FILES, DOT_DOC_FILES,
2718 EXTRA_libguile_la_SOURCES): Changed ramap.c and unif.c from being
2719 'extra' to being regular sources.
2720 (noinst_HEADERS): Added quicksort.i.c.
2721 * quicksort.i.c: New file.
2722
2723 * vectors.h, vector.c (SCM_VECTORP, SCM_VECTOR_LENGTH, SCM_VELTS,
2724 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET): Deprecated
2725 and reimplemented. Replaced all uses with scm_vector_elements,
2726 scm_vector_writable_elements, or SCM_SIMPLE_VECTOR_*, as
2727 appropriate.
2728 (scm_is_simple_vector, SCM_SIMPLE_VECTOR_LENGTH,
2729 SCM_SIMPLE_VECTOR_REF, SCM_SIMPLE_VECTOR_SET,
2730 SCM_SIMPLE_VECTOR_LOC): New.
2731 (SCM_VECTOR_BASE, SCM_SET_VECTOR_BASE, SCM_VECTOR_MAX_LENGTH,
2732 SCM_MAKE_VECTOR_TAG, SCM_SET_VECTOR_LENGTH,
2733 SCM_VELTS_AS_STACKITEMS, SCM_SETVELTS, SCM_GC_WRITABLE_VELTS):
2734 Removed.
2735 (scm_vector_copy): New.
2736 (scm_vector_elements, scm_vector_writable_elements): Use
2737 scm_t_array_handle, deliver length and increment. Moved to
2738 unif.h. Changed all uses.
2739 (scm_vector_release_elements,
2740 scm_vector_release_writable_elements,
2741 (scm_frame_vector_release_elements,
2742 scm_frame_vector_release_writable_elements): Removed.
2743 (SCM_I_IS_VECTOR, SCM_I_VECTOR_ELTS, SCM_I_VECTOR_WELTS,
2744 SCM_I_VECTOR_LENGTH, scm_i_vector_free): New internal API.
2745 (SCM_I_WVECTP SCM_I_WVECT_LENGTH SCM_I_WVECT_VELTS
2746 SCM_I_WVECT_GC_WVELTS SCM_I_WVECT_TYPE SCM_I_WVECT_GC_CHAIN
2747 SCM_I_SET_WVECT_GC_CHAIN, scm_i_allocate_weak_vector): New, for
2748 weak vectors.
2749
0336d18b
MV
27502004-12-29 Marius Vollmer <mvo@zagadka.de>
2751
2752 No longer use creators to specify the type of an array. Creators
2753 expose the fact that arrays are wrapped around vectors, but that
2754 might change.
2755
2756 * srfi-4.h (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector,
2757 scm_i_proc_make_u16vector, scm_i_proc_make_s16vector,
2758 scm_i_proc_make_u32vector, scm_i_proc_make_s32vector,
2759 scm_i_proc_make_u64vector, scm_i_proc_make_s64vector,
2760 scm_i_proc_make_f32vector, scm_i_proc_make_f64vector,
2761 scm_i_proc_make_c32vector, scm_i_proc_make_c64vector,
2762 uvec_proc_vars): Removed.
2763 (scm_i_generalized_vector_creator): Removed.
2764 (scm_i_generalized_vector_type): New.
2765
2766 * unif.h, unif.c (scm_typed_array_p, scm_make_array,
2767 scm_make_typed_array, scm_array_type, scm_list_to_array,
2768 scm_list_to_typed_array, scm_is_array, scm_is_typed_array): New.
2769 (scm_array_creator): Removed.
2770 (scm_array_p): Deprecated second PROT argument.
2771 (scm_dimensions_to_uniform_array, scm_list_to_uniform_array):
2772 Deprecated, reimplemented in terms of scm_make_typed_array and
2773 scm_list_to_typed_array.
2774 (scm_i_proc_make_vector, scm_i_proc_make_string,
2775 scm_i_proc_make_bitvector): Removed.
2776 (type_creator_table, init_type_creator_table, type_to_creator,
2777 make_typed_vector): New.
2778 (scm_i_convert_old_prototype): Removed.
2779 (prototype_to_type): New.
2780 (scm_make_uve): Deprecated, reimplemented using make_typed_vector.
2781 (scm_array_dimensions): Use scm_list_1 instead of scm_cons for
2782 minor added clarity.
2783 (scm_make_shared_array, scm_ra2contig): Use make_typed_vector
2784 instead of scm_make_uve.
2785 (tag_creator_table, scm_i_tag_to_creator): Removed.
2786 (tag_to_type): New.
2787 (scm_i_read_array): Use scm_list_to_typed_array instead of
2788 scm_list_to_uniform_array.
2789
277e8472
MV
27902004-12-27 Marius Vollmer <mvo@zagadka.de>
2791
32b26202
MV
2792 * unif.h, unif.c (scm_bitvector_elements): Made return value "const".
2793 (scm_bitvector_writable_elements): New.
2794 (scm_bitvector_release, scm_bitvector_release_elements):
2795 Renamed former to latter. Added explicit call to
2796 scm_remember_upto_here_1.
2797 (scm_frame_bitvector_release,
2798 scm_frame_bitvector_release_elements): Renamed former to latter.
2799 (scm_bitvector_release_writable_elements,
2800 scm_bitvector_release_writable_elements): New.
2801 Changed all uses as required by the changes above.
2802
2803 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_uniform_vector_elements,
2804 scm_u8vector_elements, etc): Made return value "const".
2805 (scm_uniform_vector_writable_elements,
2806 scm_u8vector_writable_elements, etc): New.
2807 (scm_uniform_vector_release, scm_uniform_vector_release_elements):
2808 Renamed former to latter. Added explicit call to
2809 scm_remember_upto_here_1.
2810 (scm_frame_uniform_vector_release,
2811 scm_frame_uniform_vector_release_elements): Renamed former to latter.
2812 (scm_uniform_vector_release_writable_elements,
2813 scm_frame_uniform_vector_release_writable_elements): New. Takes
2814 crown of longest identifier yet.
2815 Changed all uses as required by the changes above.
2816
277e8472
MV
2817 * vectors.h, vectors.c (scm_c_vector_set_x): Make return type
2818 void.
2819 (scm_is_vector, scm_vector_p, scm_vector_length,
2820 scm_c_vector_length, scm_vector_ref, scm_c_vector_ref,
2821 scm_vector_set_x, scm_c_vector_set_x, scm_vector_to_list,
2822 scm_vector_move_left_x, scm_vector_move_right_x,
2823 scm_vector_fill_x): handle one-dimensional arrays.
32b26202
MV
2824 (scm_vector_elements, scm_vector_release_elements,
2825 scm_vector_frame_release_elements, scm_vector_writable_elements,
2826 scm_vector_release_writable_elements,
2827 scm_vector_frame_release_writable_elements): New.
2828 (scm_list_to_vector, scm_vector_to_list, scm_vector_fill,
2829 scm_vector_move_left_x, scm_vector_move_right_x): Use them.
277e8472
MV
2830
2831 * ramap.c (scm_ramapc, scm_raeql): Use
2832 scm_c_generalized_vector_length instead of
2833 scm_uniform_vector_length.
2834 (scm_ramap, rafe): Use scm_c_vector_ref instead of SCM_VELTS. use
2835 scm_c_generalized_vector_ref instead of scm_uniform_vector_ref.
2836
49c51610
MV
28372004-12-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2838
2839 * continuations.h, continuations.c (scm_t_contregs): New 'offset'
2840 member for relocating debug frames.
2841 (scm_make_continuation): Set it.
2842
2843 * stacks.c (read_frame, read_frames, scm_make_stack,
2844 scm_last_stack_frame, scm_stack_id): Use the new 'offset' member
2845 of continuations instead of calculating the offset ourselves.
2846 Relocate 'vect' member of scm_t_debug_frame.
2847
3b2ee265
KR
28482004-12-16 Kevin Ryde <user42@zip.com.au>
2849
2850 * ramap.c (scm_array_map_x): Check for at least one source argument.
2851
e120686a
KR
28522004-12-14 Kevin Ryde <user42@zip.com.au>
2853
2854 * srfi-13.c (string-any, string-every): Use a scheme wrapper around
2855 the C code so for the final call to the predicate procedure is a tail
2856 call, per SRFI-13 spec.
2857
680b5237
KR
28582004-12-10 Kevin Ryde <user42@zip.com.au>
2859
2860 * eq.c (scm_eq_p, scm_eqv_p, scm_equal_p): Update docstrings from
2861 recent revision to the reference manual.
2862
2863 * numbers.c (scm_modulo): Amend fixme comment about negative divisor
2864 with "%", C99 says it's well-defined.
2865
2866 * socket.c (scm_from_ipv6): Just use mpz_import. Don't bother trying
2867 to fit scm_from_ulong_long, since that uses mpz_import anyway. Don't
2868 bother trying to fit scm_from_ulong, not really worth the trouble if
2869 addresses are more than 4 bytes usually.
2870
446d320c
KR
28712004-11-30 Kevin Ryde <user42@zip.com.au>
2872
2873 * gc_os_dep.c (NetBSD): Test __m68k__ and __arm__ as well as m68k and
2874 arm32. Reported by Greg Troxel.
2875
f2654760
MV
28762004-11-14 mvo <mvo@zagadka.de>
2877
2878 * unif.c, unif.h (scm_i_cvref): Made non-static for ramap.c.
2879
2880 * Makefile.am (INCLUDES): It is "@LTDLINCL@", not "@LTDLINC@".
2881
d550e35f
MV
28822004-11-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2883
2884 Enclosed arrays are now their own smob. This has been done to
2885 make the code more explicit about them and to prepare for the time
f2654760
MV
2886 when generalized vectors include arbitrary one-dimensional
2887 arrays. (Uptonow, enclosed arrays have been recognized by their
2888 use of an array as their storage 'vector'. When all generalized
2889 vectors are allowed as storage, including one-dimensional arrays,
2890 this will no longer work.)
d550e35f
MV
2891
2892 * unif.h, unif.c: (scm_tc16_enclosed_array, SCM_ENCLOSED_ARRAYP):
2893 New.
2894 (exactly_one_third, singp): Removed.
2895 (scm_array_p, scm_array_dimensions, scm_shared_array_root,
2896 scm_shared_array_offset, scm_shared_array_increments): Handle
2897 enclosed arrays explicitely.
2898 (scm_array_rank): Likewise. Also, do not return zero for
2899 non-arrays, signal an error instead since arrays with rank zero do
2900 exist.
2901 (scm_i_make_ra): New, for specifying the tag of the new array.
2902 (scm_make_enclosed_array): Use it.
2903 (scm_make_ra): Reimplemented in terms of scm_i_make_ra.
2904 (scm_make_shared_array): Use scm_c_generalized_vector_length
2905 instead of scm_uniform_vector_length.
2906 (scm_array_in_bounds_p): Rewritten to be much cleaner.
2907 (scm_i_cvref): New, doing the job of scm_cvref.
2908 (scm_cvref): Use scm_i_cvref.
2909 (scm_array_ref): Do not accept non-arrays when no indices are
2910 given. Use scm_i_cvref to do the actual access.
2911 ("uniform-array-set1"): Do not register.
2912 (scm_array_set_x, scm_uniform_array_read_x,
2913 scm_uniform_array_write): Handle enclosed arrays explicitly.
2914 (ra2l): Use scm_i_cvref instead of scm_uniform_vector_ref to also
2915 handle enclosed arrays.
2916 (scm_array_to_list): Handle enclosed arrays explicitly.
2917 (rapr1): Removed.
2918 (scm_i_print_array_dimension): Use scm_i_cvref to also handle
2919 enclosed arrays.
2920 (scm_i_print_enclosed_array): New.
2921 (tag_proto_table, tag_creator_table): Renamed former to latter.
2922 Added "a" and "b" for strings and bitvectors, resp.
2923 (scm_i_tag_to_prototype, scm_i_tag_to_creator): Renamed former to
2924 latter. Tag "a" is in the table now, no need to handle it as a
2925 legacy tag.
2926 (scm_raprin1): Just call scm_iprin1.
2927 (scm_array_creator, scm_array_prototype): Handle enclosed arrays
2928 explicitly.
2929 (scm_init_unif): Initialize scm_tc16_enclosed_array smob.
2930 Use scm_i_print_array as printer for scm_tc16_array.
2931
2ed34885
MV
29322004-11-10 Marius Vollmer <mvo@zagadka.de>
2933
823086c1
MV
2934 * ramap.c (cind): Changed second arg to be pointer to long instead
2935 of uniform vector.
2936 (scm_ramapc): Allocate index vector with scm_malloc and not as
d550e35f 2937 uniform vector. Wrap it in a frame so that it gets properly freed.
823086c1
MV
2938 (scm_array_index_map_x): Likewise.
2939
2940 * unif.c: Changed all uses of scm_array_prototype to
2941 scm_array_creator. (scm_i_get_old_prototype): Signal error when no
2942 prototype is known.
2943 (scm_uniform_array_read_x, scm_uniform_array_write): Reimplemented
2944 in terms of scm_uniform_vector_read_x and
2945 scm_uniform_vector_write, respectively. Strings and
2946 bitvector support has been dropped.
2947
2ed34885
MV
2948 * srfi-4.h, srfi-4.c: Do not include <libguile.h>, include the
2949 needed files directly. Include config.h, <unistd.h> and <io.h>
2950 when available.
2951 (scm_uniform_vector_read_x, scm_uniform_vector_write): New.
2952
2c72f253
MV
29532004-11-09 Marius Vollmer <mvo@zagadka.de>
2954
2955 * gh_data.c (gh_uniform_vector_length): Properly use
2956 scm_c_uniform_vector_length instead of scm_uniform_vector_length.
2957
3cc0a296
MV
29582004-11-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2959
2960 * srfi-4.h (scm_c_uniform_vector_ref, scm_c_uniform_vector_set_x):
2961 New.
2962 (scm_i_uniform_vector_creator): Removed.
2963 (scm_i_generalized_vector_creator): New.
2964 (scm_uniform_vector_length, scm_uniform_element_size): Do not
2965 handle generalized vectors, only uniform numeric vectors.
2966 (alloc_uvec): Do length check here...
2967 (make_uvec): ...but not here.
2968 (coerce_to_uvec): Use new generalized vector functions to handle
2969 all kinds of vectors in one go.
2970
2971 * tags.h (scm_tc7_bvect): Renamed to scm_tc7_unused7, renaming the
2972 remaining scm_tc7_unused tags to get a neatly ordered list.
2973
2974 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c: Do no
2975 longer handle scm_tc7_bvect bitvectors.
2976
2977 * ramap.c: Use the new generalized vector functions to handle all
2978 vector like things.
2979
2980 * vectors.h, vectors.c (scm_is_vector, scm_c_vector_length,
2981 scm_c_vector_ref, scm_c_vector_set_x, scm_generalized_vector_p,
2982 scm_generalized_vector_length, scm_generalized_vector_ref,
2983 scm_generalized_vector_set_x, scm_generalized_vector_to_list,
2984 scm_is_generalized_vector, scm_c_generalized_vector_length,
2985 scm_c_generalized_vector_ref, scm_c_generalized_vector_set_x):
2986 New.
2987
2988 * unif.h, unif.c (scm_bitvector_p, scm_bitvector,
2989 scm_make_bitvector, scm_bitvector_length, scm_bitvector_ref,
2990 scm_bitvector_set_x, scm_list_to_bitvector, scm_bitvector_to_list,
2991 scm_bitvector_fill_x, scm_is_bitvector, scm_c_make_bitvector,
2992 scm_c_bitvector_length, scm_c_bitvector_ref,
2993 scm_c_bitvector_set_x, scm_bitvector_elements,
2994 scm_bitvector_release, scm_frame_bitvector_release,
2995 scm_tc16_bitvector, bitvector_free, bitvector_print,
2996 bitvector_equalp, count_ones, find_first_one): New.
2997 (scm_bit_count, scm_bit_position, scm_bit_set_star_x,
2998 scm_bit_count_star, scm_bit_invert_x, scm_istr2bve): Rewritten
2999 using the new C API for bitvectors and maybe count_ones or
3000 find_first_one, as appropriate.
3001 (SCM_I_MAX_LENGTH, SCM_BITVECTOR_P, SCM_BITVECTOR_BASE,
3002 SCM_SET_BITVECTOR_BASE, SCM_BITVECTOR_MAX_LENGTH,
3003 SCM_BITVECTOR_LENGTH, SCM_MAKE_BITVECTOR_TAG,
3004 SCM_SET_BITVECTOR_LENGTH): Removed. Replaced all uses with the
3005 new functions from above.
3006 (scm_i_proc_make_vector, scm_i_proc_make_string,
3007 scm_i_proc_make_bitvector): Made non-static for use in
3008 scm_i_generalized_vector_creator.
3009 (scm_make_u1vector): Removed, replaced by scm_make_bitvector.
3010 (scm_make_uve): Validate that the created object is a generalized
3011 vector.
3012 (scm_i_legacy_tag): Removed.
3013 (scm_i_print_array): Do it here.
3014 (scm_raprin1): Only print enclosed arrays.
3015
3016 * Makefile.am (DOT_DOC_FILES): Added srfi-4.doc.
3017
c24d026b
MV
30182004-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3019
1f2328fe
MV
3020 * srfi-4.c (make_uvec): Use SCM_I_SIZE_MAX instead of SIZE_MAX for
3021 added portability.
3022
3023 * chars.c (scm_charnames, scm_charnums): Added "sp" as an alias
3024 for "space". Thanks to Bruce Korb!
3025
c24d026b
MV
3026 * rw.c (scm_read_string_x_partial): Bugfix, apply offset to dest
3027 only after dest has been set. Thanks to Hyper Division!
3028
3029 * gh_data.c (gh_uniform_vector_length): Use
3030 scm_uniform_vector_length instead of SCM_UVECTOR_LENGTH.
3031
d4ea47c8
MV
30322004-11-03 Marius Vollmer <mvo@zagadka.de>
3033
3034 * unif.h (SCM_UVECTOR_BASE, SCM_SET_UVECTOR_BASE,
3035 SCM_UVECTOR_MAXLENGTH, SCM_UVECTOR_LENGTH, SCM_MAKE_UVECTOR_TAG,
3036 SCM_SET_UVECTOR_LENGTH): Removed.
3037
236288e2
MV
30382004-11-02 Marius Vollmer <mvo@zagadka.de>
3039
9a5fa6e9 3040 Mac OS X and OpenBSD compatibility patches from Andreas Vögele.
236288e2
MV
3041 Thanks!
3042
3043 * backtrace.c (scm_display_backtrace_with_highlights): Join the
3044 first and the second line of the SCM_DEFINE macro call, since old
3045 preprocessors cannot handle definitions that are split into two
3046 lines.
3047
3048 * inline.h (scm_cell, scm_double_cell): Don't use C99 variable
3049 declarations.
3050
3051 * pairs.c (scm_i_chase_pairs): Replace scm_t_bits with
3052 scm_t_uint32 to fix the mismatch between the function declaration
3053 and definition.
3054
3055 * sort.c (quicksort): Don't use C99 variable declarations.
3056
3057 * srfi-4.c (uvec_fast_ref): Avoid a compiler warning by returning
3058 SCM_BOOL_F if no type matches.
3059
3060 * threads.c (thread_print): Cast a pointer to size_t when printing
3061 with scm_uintprint.
3062
3063 * unif.c (scm_i_tag_to_prototype): Make sure that "instead" gets
3064 defined.
3065 (scm_array_prototype): Deprecated.
3066
f738b51d
MV
30672004-11-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3068
5d1015ec
MV
3069 * srfi-4.h, srfi-4.c (scm_frame_uniform_vector_release): New.
3070 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use it to get
3071 more efficient access to the u32vector.
3072
034486df
MV
3073 * tags.h (scm_tc7_llvect, scm_tc7_uvect, scm_tc7_fvect,
3074 scm_tc7_dvect, scm_tc7_cvect, scm_tc7_svect, scm_tc7_byvect,
3075 scm_tc7_ivect): Renamed to scm_tc7_unused_1 to scm_tc7_unused_8.
3076
3077 * validate.h (SCM_VALIDATE_VECTOR_OR_DVECTOR): Accept f64vectors
3078 instead of the old-style dvectors.
3079
3080 * gh_data.c: Use new-style uniform arrays in place of old-style
3081 ones.
3082
3083 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c,
3084 ramap.c, unif.c: Do no longer handle old-style uniform vectors.
3085
3086 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use u32vectors
3087 instead of old-sytle uvectors.
3088
3089 * convert.c, convert.i.c: Rewritten completely, using
3090 scm_any_to_u8vector, etc and other new-style uniform vector
3091 functions.
3092
3093 * random.c (scm_random_solid_sphere_x,
3094 scm_random_hollow_sphere_x): Do not validate vector argument, this
3095 is already done elsewhere.
3096
3097 * srfi-4.h, srfi-4.i.c, srfi-4.c (coerce_to_uvec,
3098 scm_any_to_u8vector, etc): New.
3099 (scm_uniform_element_size, scm_uniform_vector_length): Do no
3100 longer handle old-style uniform vectors.
3101
f738b51d
MV
3102 * read.c (scm_lreadr): Bugfix: include the last bit in the
3103 bit vector.
3104
5e9c05a1
MV
31052004-10-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3106
327114a2
MV
3107 * unif.h, unif.c (scm_array_creator): New.
3108 (scm_i_get_old_prototype): New.
3109 (scm_array_prototype): use it to return old-style prototype, never
3110 return creators.
3111 (scm_make_uve): Use scm_call_1 instead of scm_call_2 with a second
3112 arg of SCM_UNDEFINED. The latter is wrong.
3113
5e9c05a1
MV
3114 * unif.h, unif.c (scm_make_u1vector): New, but only temporary.
3115 (make_uve): Removed.
3116 (scm_i_proc_make_vector, scm_i_proc_make_string,
3117 scm_i_proc_make_u1vector): New.
3118 (scm_init_unif): Initialize them.
3119 (scm_i_convert_old_prototype): New.
3120 (scm_make_uve): Use it to get the creator procedure. Removed all
3121 old code that created old-style uniform vectors.
3122 (scm_array_p): Handle generic vectors.
3123 (scm_dimensions_to_uniform_array): Do not fill new array with
3124 prototype when that is a procedure.
3125 (scm_list_to_uniform_array): Also accept a list of lower bounds as
3126 the NDIM argument.
3127 (scm_i_print_array): Print rank for shared or non-zero-origin
3128 vectors.
3129 (tag_proto_table, scm_i_tag_to_prototype, scm_i_read_array): New.
3130 (scm_raprin1): Do not call scm_i_array_print for enclosed arrays,
3131 which I do not understand yet.
3132 (scm_array_prototype): Explicitely handle generic vectors.
327114a2 3133
5e9c05a1
MV
3134 * numbers.c, number.h (scm_i_print_complex, icmplx2str): New.
3135 (iflo2str): Use icmplx2str for complex numbers.
3136
3137 * srfi-4.c, srfi-4.h (scm_i_read_homogenous_vector,
3138 scm_i_uniform_vector_prototype): Removed.
3139 (scm_i_uniform_vector_creator): New.
3140 (SCM_UVEC_C32, scm_c32vector, scm_make_c32vector, etc,
3141 SCM_UVEC_C64, scm_c64vector, scm_make_c64vector, etc): New.
3142 Updated all tables and generic functions to support them.
3143 (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector, etc): New.
3144 (scm_init_srfi_4): Initialize them.
3145
3146 * srfi-4.i.c (scm_take_u8vector, etc): use uvec_sizes instead of
3147 sizeof(CTYPE) as explained in the comment.
3148
3149 * read.c (scm_lreadr): Call scm_i_read_array for all characters
50472546 3150 following '#' that can start an array. Explicitely disambiguate
5e9c05a1
MV
3151 'i' and 'e' between introducing numbers and uniform vectors. Do
3152 not call scm_i_read_homogenous_vector, since that is also handled
3153 by scm_i_read_array now.
3154
f984af07
MV
31552004-10-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3156
3157 First cut at integrating uniform vectors from srfi-4 with the rest
3158 of Guile. This change replaces scm_tc7_byvect with a s8 uniform
3159 vector. The plan is to gradually replace one type after the other
3160 until none is left and then to consider general cleanups and
3161 optimizations.
3162
3163 * srfi-4.h, srfi-4.i.c (scm_u8vector_elements, etc): New.
3164
3165 * srfi-4.h, srfi-4.c (scm_uniform_vector_p,
3166 scm_uniform_vector_ref, scm_uniform_vector_set_x,
3167 scm_uniform_vector_to_list, scm_is_uniform_vector,
3168 scm_c_uniform_vector_lengths, scm_c_uniform_vector_size,
3169 scm_uniform_vector_elements, scm_uniform_vector_element_size,
3170 scm_uniform_vector_release): New.
3171 (scm_i_uniform_vector_prototype, scm_i_uniform_vector_tag): New.
3172 (scm_uniform_element_size, scm_uniform_vector_length): Moved here
3173 from unif.h, unif.c and extended to handle both the old and new
3174 uniform vectors.
3175
3176 * tags.h (scm_tc7_byvect): Commented out.
3177
3178 * unif.h, unif.c (scm_uniform_vector_ref, scm_array_ref): Renamed
3179 the former to the latter.
3180 (scm_uniform_vector_length, scm_uniform_element_size): Moved to
3181 srfi-4.h, srfi-4.c.
3182 (scm_make_uve): Call scm_make_s8vector for #\nul prototype.
3183 (scm_array_p, scm_array_rank, scm_array_dimensions,
3184 scm_transpose_array, scm_enclose_array, scm_array_ref, scm_cvref,
3185 scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
3186 scm_array_to_list, scm_array_prototype): Handle srfi-4 uniform
3187 vectors. Removed code for scm_tc7_byvect.
3188 (scm_dimensions_to_uniform_array): Fill array with 0 when
3189 prototype is #\nul.
3190 (scm_i_print_array_dimension, scm_i_legacy_tag,
3191 scm_i_print_array): New.
3192 (scm_raprin1): Call scm_i_print_array for arrays. Removed code
3193 for scm_tc7_byvect.
3194
3195 * ramap.c (scm_ra_matchp, scm_array_fill_int, racp,
3196 scm_array_index_map_x, raeql_1, scm_array_equal_p): Handle srfi-4
3197 uniform vectors. Removed code for scm_tc7_byvect
3198
3199 * print.c (iprin1): Removed code for scm_tc7_byvect.
3200 * objects.c (scm_class_of): Likewise.
3201 * gc-mark.c (scm_gc_mark_dependencies): Likewise.
3202 * gc-card.c (scm_i_sweep_card): Likewise.
3203 * evalext.c (scm_self_evaluating_p): Likewise.
3204 * eq.c (scm_equal_p): Likewise.
3205
3206 * gh_data.c (gh_chars2byvect): Reimplemented with
3207 scm_make_s8vector.
3208 (gh_scm2chars): Handle s8vectors, removed code for scm_tc7_byvect.
3209
3210 * srfi-4.c (take_uvec): New.
3211 (alloc_uvec): Use it.
3212 * srfi-4.h, srfi-4.i.c (scm_take_u8vector, etc): New.
3213
3214 * random.c (vector_scale, vector_scale_x): Renamed former to the
3215 latter, since it modifies its argument.
3216 (vector_scale_x, vector_sum_squares, scm_random_normal_vector_x):
3217 Do not use scm_universal_vector_length for non-uniform vectors.
3218 Use scm_f64vector_elements to access innards of uniform vectors.
3219
3220 * convert.i.c: Convert srfi-4 style uniform vectors when
3221 requested.
3222 * convert.c (scm_c_scm2chars, scm_c_chars2scm,
3223 scm_c_chars2byvect): Use a s8vector instead of a scm_tc7_byvect.
3224
79d52182
MV
32252004-10-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3226
3227 * numbers.h, numbers.c (scm_i_print_double): New.
3228
3229 * srfi-4.c, srfi-4.h, srfi-4.i.c: New files, initially from
3230 ../srfi/ but heavily modified.
3231 * Makefile.am: Add them in all the right places.
3232 * init.c (scm_init_guile_1): Call scm_init_srfi_4.
3233 * read.c (scm_lreadr): Call scm_i_read_homogenous_vector for '#f',
3234 '#u', and '#s'.
3235
3236 * read.h, read.c (scm_i_input_error): Renamed from scm_input_error
3237 and made non-static. Changed all uses.
3238
6191ccec
MV
32392004-10-22 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3240
e64e80b0
MV
3241 * variable.c, threads.c, struct.c, stackchk.c, smob.c, root.c,
3242 print.c, ports.c, mallocs.c, hooks.c, hashtab.c, fports.c,
3243 guardians.c, filesys.c, coop-pthreads.c, continuations.c: Use
3244 scm_uintprint to print unsigned integers, raw heap words, and
3245 adresses, using a cast to scm_t_bits to turn pointers into
3246 integers.
3247
3248 * unif.c: Include "libguile/print.h".
3249
c90ac3a8
MV
3250 * numbers.h, numbers.c (SCM_T_INTBUFLEN): Increased to cover
3251 scm_t_intmax values.
3252 (scm_uint2str): New, for scm_t_uintmax.
3253 (scm_iint2str): Argument type changed to scm_t_intmax,
3254 reimplemented in terms of scm_uint2str.
3255
3256 * print.c, print.h (scm_uintprint): New, for printing
3257 scm_t_uintmax values.
3258 (scm_intprint): Argument type changed to scm_t_intmax.
3259
77c2594f
MV
3260 * sort.c (quicksort, scm_merge, scm_merge_list_x,
3261 scm_merge_list_step, scm_merge_vector_step): Inserted SCM_TICKs at
3262 strategic places so that the loops can be interrupted.
3263
6191ccec
MV
3264 * Makefile.am (INCLUDES): Use @LTDLINC@ instead of
3265 "-I$(top_srcdir)/libguile-ltdl".
3266 (libguile_la_LIBADD): Use @LIBLTDL@ instead of
3267 "../libguile-ltdl/libguile-ltdl.a".
3268
3269 * guile.c, dynl.c: Switched to using libltdl directly. Replaced
3270 all references to scm_lt_* with just lt_*. Include <ltdl.h>
3271 instead of <libguile-ltdl.h>.
3272
77600f3e
MV
32732004-10-20 Marius Vollmer <mvo@zagadka.de>
3274
3275 * sort.c (quicksort): Copy pivot out of the array while
3276 constructing the partitions; it could get overwritten otherwise.
3277 Because of the ultimate insertion sort, this bug did not cause
3278 quicksort to fail, it just put all the burdon on the insertion
3279 sort and was thus very slow. Thanks to Rolan Orre for reporting
3280 the slowness!
3281
5000379b
MV
32822004-10-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3283
192cd792
MV
3284 * numbers.c (scm_i_range_error): New.
3285 * conv-integer.i.c, conv-uinteger.i.c: Use it instead of
3286 scm_out_of_range.
3287
3288 * sort.c (scm_restricted_vector_sort_x): Validate startpos <=
6191ccec 3289 endpos. State inclusiveness/exclusiveness of bounds in docstring.
192cd792
MV
3290
3291 * unif.c (scm_array_p): When no prototype is given, explicitely
3292 test for allowable types, do not simply return true. Thanks to
3293 Roland Orre for reporting this!
3294
5000379b
MV
3295 * private-gc.h (SCM_DEFAULT_MAX_SEGMENT_SIZE): Increase to 20 Mib.
3296
3297 * gc-segment.c (scm_i_get_new_heap_segment): Limit size of new
3298 segment to scm_max_segment_size.
3299
497eb0b7
HWN
33002004-10-08 Han-Wen Nienhuys <hanwen@xs4all.nl>
3301
1367aa5e
HWN
3302 * gc.c (scm_igc): put scm_gc_running-- before running hooks.
3303
497eb0b7
HWN
3304 * inline.h (scm_double_cell): abort if GC running.
3305 (scm_cell): idem.
3306
aef0bdb4
MV
33072004-10-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3308
3309 * error.c (scm_wrong_type_arg): Do not talk about "argument" for
3310 pos == 0.
3311
3312 Keywords no longer store a 'dash symbol'. Instead, they store a
3313 symbol with their real name.
3314
3315 * keywords.h, keywords.c, deprecated.h, deprecated.c
3316 (SCM_KEYWORDP, SCM_KEYWORDSYM): Deprecated and implemented in
3317 terms of scm_is_keyword and scm_keyword_dash_symbol.
3318
3319 * keywords.h, keywords.c, discouraged.h, discouraged.c
3320 (scm_make_keyword_from_dash_symbol, scm_keyword_dash_symbol,
3321 scm_c_make_keyword): Discouraged.
3322
3323 * keywords.h, keywords.c (scm_symbol_to_keyword,
3324 scm_keyword_to_symbol): Implemented in C.
3325 (scm_is_keyword, scm_from_locale_keyword,
3326 scm_from_locale_keywordn): New.
3327
3328 * goops.c: Replaced SCM_KEYWORDP with scm_is_keyword.
3329
3330 * snarf.h (SCM_KEYWORD, SCM_GLOBAL_KEYWORD): Use
3331 scm_from_locale_keyword instead of scm_c_make_keyword.
3332
3333 * keywords.c (scm_symbol_to_keyword): Use SCM_ASSERT_TYPE for a
3334 better error message.
3335
3336 * deprecated.c: Include discouraged.h and keywords.h.
3337
3338 * read.c (scm_lreadr): Simply do (symbol->keyword (read)) after
3339 reading '#:' or ':'. See NEWS for consequences.
3340
818deb11
MV
33412004-09-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3342
43c25626
MV
3343 * read.c (scm_lreadr): Revert change from 2004-09-22: string
3344 literals are now read-write again (until SCM_STRING_CHARS is
3345 removed).
3346
3347 * strings.c (SCM_STRING_CHARS): Explicitely reject read-only
3348 strings with an error message that blames SCM_STRING_CHARS.
3349
3350 * options.c (change_option_setting): Use scm_car instead of
3351 explicit type check plus SCM_CAR.
3352
3353 * print.h, print.c (SCM_PRINT_HIGHLIGHT_PREFIX,
3354 SCM_PRINT_HIGHLIGHT_SUFFIX): New printer options.
3355 (scm_iprin1): Use them instead of the previoulsy hardcoded
3356 strings.
3357 (scm_init_print): Initialize them.
3358
3359 * backtrace.c (display_frame_expr): Do not remove control
3360 characters from the final string. Print it directly using
3361 scm_display.
3362
818deb11
MV
3363 * ramap.c (scm_array_equal_p): Include scm_tc7_svect in switch.
3364 Thanks to Roland Orre!
3365
d748089e
KR
33662004-09-29 Kevin Ryde <user42@zip.com.au>
3367
3368 * regex-posix.c (scm_regexp_exec): Correction to last change, should
3369 be whole original string in match struct, not offsetted substring.
3370
0ff7e3ff
HWN
33712004-09-24 Han-Wen Nienhuys <hanwen@xs4all.nl>
3372
3373 * gc.c (scm_gc_unprotect_object): abort if called during GC.
3374
ad7de4b8
MV
33752004-09-24 Marius Vollmer <mvo@zagadka.de>
3376
2edf319f
MV
3377 * Makefile.am (EXTRA_DIST): Added gettext.h.
3378
d180337b
MV
3379 * smob.c, smob.h (scm_assert_smob_type): New.
3380
05d7cf89 3381 * Makefile.am (guile_CFLAGS, guile_LDFLAGS, libguile_la_CFLAGS):
ad7de4b8
MV
3382 Include GUILE_CFLAGS.
3383 (libguile_la_LIBADD): Removed THREAD_LIBS_LOCAL, which is unused
3384 now.
3385 (libpath.h): Put GUILE_CFLAGS in the build-info.
3386
c9fedf8a
MV
33872004-09-23 Marius Vollmer <mvo@zagadka.de>
3388
3389 * print.h (scm_print_state): Added highlight_objects.
3390 * print.c (make_print_state, scm_free_print_state): Initialize it
3391 to SCM_EOL.
3392 (scm_iprin1): Wrap output in '{...}' when object is contained in
3393 highlight_objects.
3394
3395 * backtrace.h, backtrace.c (scm_display_backtrace_with_highlights,
3396 scm_backtrace_with_highlights): New. Set highlight_objects of
3397 printstate.
3398
3399 * error.c (scm_error_scm): Document new meaning of data/rest
3400 argument for out-of-range and wrong-type-arg errors.
3401 (scm_out_of_range, scm_out_of_range_pos, scm_wrong_type_arg,
3402 scm_wrong_type_arg_msg): Pass bad_value in rest argument of
3403 exception so that it gets highlighted in the backtrace.
3404 Don't talk about "argument" when not giving a position.
3405
3406 * throw.c (handler_message): The rest argument is the fourth
3407 argument, not everything after the third. Call
3408 scm_display_backtrace_with_highlights, passing the rest argument
3409 when appropriate.
3410
d5ac9b2a
MV
34112004-09-22 Marius Vollmer <mvo@zagadka.de>
3412
3413 From Jan Nieuwenhuizen <janneke@gnu.org> and Bruno Haible
3414 <bruno@clisp.org>:
3415
3416 * i18n.c: Handle --disable-nls (thanks Bruno).
3417
3418 * posix.c (scm_init_posix): Add LC_PAPER, LC_NAME, LC_ADDRESS,
3419 LC_TELEPHONE, LC_MEASUREMENT, LC_IDENTIFICATION.
3420
3421 * i18n.c (scm_i_to_lc_category): New name and export. Support all
3422 LC categories.
05d7cf89 3423 * posix.c (scm_setlocale): Use it.
d5ac9b2a
MV
3424
3425 * i18n.h, i18n.c (scm_textdomain, scm_bindtextdomain,
3426 scm_bind_textdomain_codeset): Make wrappers similar to C function
3427 they wrap.
3428
3429 * i18n.h: New file.
3430 * i18n.c: New file.
3431 * gettext.h: New file, taken from GNU gettext.
3432 * init.c: Include libguile/i18n.h.
3433 (scm_init_guile_1): Add call to scm_init_i18n().
3434 * Makefile.am (libguile_la_SOURCES): Add i18n.c.
3435 (DOT_X_FILES): Add i18n.x.
3436 (DOT_DOC_FILES): Add i18n.doc.
3437 (libguile_la_LDFLAGS): Add @LTLIBINTL@.
3438 (modinclude_HEADERS): Add i18n.h.
3439
d2e53ed6
MV
34402004-09-22 Marius Vollmer <mvo@zagadka.de>
3441
2cdfe016
MV
3442 * gh_list.c: Replaced SCM_CAR, etc with scm_car, etc.
3443
d2e53ed6
MV
3444 * discouraged.h, tags.h (SCM_CONSP, SCM_NCONSP): Moved to
3445 discouraged.h. Replaced all uses with scm_is_pair.
3446 (SCM_I_CONSP): New name for SCM_CONSP.
3447
3448 * pairs.h, pairs.c (scm_is_pair, scm_is_null, scm_car, scm_cdr,
3449 scm_i_chase_pairs, SCM_I_A_PAT, SCM_I_D_PAT, etc, scm_caar,
3450 scm_cadr, etc): New.
3451 (SCM_NULLP, SCM_NNULLP): Moved to discouraged.h. Replaced all
3452 uses with scm_is_null.
5dd82006 3453
d2e53ed6
MV
3454 * eval.c (scm_eval, scm_apply, call_cxr_1): Use scm_i_chase_pairs
3455 instead of explicit code.
5dd82006 3456
5dfdf243
MV
34572004-09-22 Marius Vollmer <mvo@zagadka.de>
3458
b50c53e5
MV
3459 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
3460 Reworded logic a bit so that #f is returned immediately when s1 is
3461 too short to contain s2.
3462
5dfdf243 3463 * regex-posix.c (scm_regexp_exec): Convert string to
05d7cf89 3464 zero-terminated locale string before matching against it.
5dfdf243
MV
3465
3466 * strings.h, strings.c (scm_substring_read_only,
3467 scm_c_substring_read_only, scm_i_substring_read_only): New.
3468 (RO_STRING_TAG, IS_RO_STRING): New.
3469 (scm_i_string_writable_chars): Bail on read-only strings.
3470
3471 * read.c (scm_lreadr): use scm_c_substring_read_only for string
3472 literals, thus making them read-only as specified by R5RS.
3473
22ab5ba3
MV
34742004-09-22 Marius Vollmer <mvo@zagadka.de>
3475
3476 * eq.c (scm_equal_p): Allow smobs with different flags to be equal
3477 by testing for smobs before insisting on equal SCM_CELL_TYPES.
3478
2663421c
MV
34792004-09-21 Marius Vollmer <mvo@zagadka.de>
3480
0d83cb90
MV
3481 * numbers.h, numbers.c: Include <gmp.h> in numbers.h, not in
3482 numbers.c.
3483 (scm_to_mpz, scm_from_mpz): New.
9a5fa6e9 3484 Thanks to Andreas Vögele!
0d83cb90 3485
2663421c
MV
3486 * read.c (skip_scsh_block_comment): Recognize "!#" everywhere, not
3487 just on a line of its own.
3488
3489 * srfi-13.c (scm_string_any, scm_string_every,
3490 scm_string_tabulate, string_upcase_x, string_down_case_x,
3491 string_titlecase_x, string_reverse_x, scm_string_tokenize): Use
3492 size_t instead of int for indices into strings. Make sure that no
9a5fa6e9 3493 over- or underflow occurs. Thanks to Andreas Vögele!
2663421c
MV
3494 (scm_xsubstring, scm_string_xcopy_x): Use ints for 'extended'
3495 indices, which can also be negative.
3496
b00b73f9
MV
34972004-09-20 Marius Vollmer <mvo@zagadka.de>
3498
3499 * gc-mark.c (SCM_MARK_BACKING_STORE): Removed, it was unused.
3500
3501 * threads.c (scm_threads_mark_stacks): Call
3502 SCM_MARK_BACKING_STORE. Also, do not use stack_len local, it was
3503 only used once.
3504
adba74f3
HWN
35052004-09-13 Jan Nieuwenhuizen <janneke@gnu.org>
3506
05d7cf89 3507 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
adba74f3
HWN
3508 Bugfix: when subtracting unsigned values, make sure that result
3509 does not wrap.
3510
f6de32c8
KR
35112004-09-09 Kevin Ryde <user42@zip.com.au>
3512
3513 * filesys.c, stime.c (_POSIX_C_SOURCE): Use this only on hpux, it
3514 causes too many problems elsewhere (glibc, freebsd, mingw). Reported
9a5fa6e9 3515 by Andreas Vögele.
f6de32c8 3516
e548be5f
MV
35172004-09-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3518
eb8d0af1
MV
3519 * Makefile.am (EXTRA_libguile_la_SOURCES): Removed "alloca.c".
3520
e548be5f
MV
3521 * eq.c (real_eqv): Pretend that all NaNs are equal.
3522
3523 * numbers.c (scm_integer_expt): Do not accept inexact integers.
3524
e7acba81
MV
35252004-09-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3526
874fbad1
MV
3527 * srfi-13.c (scm_string_trim_right, scm_string_xcopy_x): Correctly
3528 use size_t for some locals instead of int.
3529
e7acba81
MV
3530 * read.c (scm_flush_ws): Detect "#!"-style comments here.
3531 (scm_lreadr): Abort on seeing "#!", which should no longer happen.
3532 (skip_scsh_block_comment): Use scm_input_error instead of
3533 scm_misc_error in case of EOF.
3534
5de12658
KR
35352004-09-07 Kevin Ryde <user42@zip.com.au>
3536
3537 * numbers.c (scm_integer_expt): Reject exponent +/-inf.
5de12658
KR
3538 Bug report by Bill Schottstaedt.
3539
3540 * ports.c (scm_getc, scm_lfwrite): Recognise \a \b and \r for port
3541 column.
3542 * ports.h (SCM_ZEROCOL, SCM_DECCOL): New macros.
3543
3544 * posix.c (scm_access): Update docstring per manual.
3545
3546 * posix.c (scm_nice): Correction to error detection. Reported by
3547 Matthias Koeppe.
3548
3549 * stime.c (scm_current_time, scm_gettimeofday, scm_strptime): Don't
3550 throw error before unlocking mutex with SCM_ALLOW_INTS.
3551
e227addf
KR
35522004-09-06 Kevin Ryde <user42@zip.com.au>
3553
3554 * stime.h (SCM_TIME_UNITS_PER_SECOND): Use sysconf(_SC_CLK_TCK) when
3555 available. This also gets around CLK_TCK being absent when
3556 _GNU_SOURCE and _POSIX_C_SOURCE are defined in stime.c.
3557
edea856c
SJ
35582004-09-03 Stefan Jahn <stefan@lkcc.org>
3559
3560 * threads.c (scm_threads_mark_stacks): Fixed local variable
3561 definitions.
3562
e7acba81 3563 * strings.c (scm_i_substring_copy, scm_string_append): Fixed
edea856c
SJ
3564 local variable definitions.
3565
3566 * stime.c (_POSIX_C_SOURCE): Do not define this item on
3567 MinGW32 because it conflicts with its pthread headers.
874fbad1
MV
3568 (scm_mktime): Consider the HAVE_STRUCT_TM_TM_ZONE define.
3569 (scm_strftime): Using scm_from_locale_string() instead of
edea856c
SJ
3570 scm_makfrom0str().
3571
874fbad1 3572 * posix.c (scm_putenv): Fixed typo in the !HAVE_UNSETENV
edea856c
SJ
3573 part.
3574
3575 * numbers.c (scm_init_numbers): Removed check_sanity() call
3576 inside GUILE_DEBUG. The function has been removed somewhen...
3577
3578 * filesys.c (_POSIX_C_SOURCE): Do not define this item on
3579 MinGW32 because it conflicts with its pthread headers.
3580
d9eb2d67
MV
35812004-08-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3582
3583 * strings.c (SCM_STRINGP): Accept all strings.
3584 (SCM_STRING_CHARS): Reject shared substrings here.
3585
3586 * script.c (scm_compile_shell_switches): Added 2003 and 2004 to
3587 the Copyright years.
3588
c495c342
KR
35892004-08-27 Kevin Ryde <user42@zip.com.au>
3590
3591 * socket.c (scm_fill_sockaddr): Use HAVE_STRUCT_SOCKADDR_SIN_LEN and
3592 HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN for sockaddr fields, SIN_LEN and
3593 SIN_LEN6 are not defined on all systems. Reported by Michael Tuexen.
3594
57aa5515
MV
35952004-08-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3596
3597 * strings.h, strings.c (scm_i_make_symbol): Added FLAGS parameter.
3598 * symbols.h, symbols.c (SCM_I_F_SYMBOL_UNINTERNED,
3599 scm_i_symbol_is_interned, scm_i_mem2symbol,
3600 scm_i_mem2uninternedsymbol): Use it to store uninternedness flag.
3601
ce25760f
MV
36022004-08-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3603
19ff6ffc
MV
3604 * srfi-13.c: First cut at thread-safeness and proper use of
3605 scm_i_string_chars et al. Copious scm_remember_upto_heres have
3606 been inserted. Made sure that no internal string pointer is used
3607 across a SCM_TICK or a possible GC.
3608
ce25760f
MV
3609 * script.c (scm_compile_shell_switches): Use
3610 scm_from_locale_string instead of scm_makfrom0str.
3611
3612 * srfi-13.c (scm_string_rindex): Export to Scheme, as it has
3613 always been.
3614
c5080b51
MV
36152004-08-25 Marius Vollmer <mvo@zagadka.de>
3616
3617 Moved SRFI-13 and SRFI-14 into the core, taking over the role of
3618 strop.c.
3619
3620 * srfi-13.c, srfi-13.h, srfi-14.c, srfi-14.h: New files.
3621 * strop.h, strop.c: Removed, they are now empty.
3622 * Makefile.am: Updated for new and removed files.
3623
3624 * symbols.h, symbols.c (scm_string_ci_to_symbol): Moved here, next
3625 to scm_string_to_symbol.
3626
3627 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
3628 scm_char_whitespace_p, scm_upper_case_p, scm_lower_case_p,
3629 scm_char_is_both_p): Use scm_char_set_contains_p with the proper
3630 charset instead of libc functions.
3631
3632 * strorder.c (scm_string_equal_p, scm_string_ci_equal_p,
3633 scm_string_less_p, scm_string_leq_p, scm_string_gr_p,
3634 scm_string_geq_p, scm_string_ci_less_p, scm_string_ci_leq_p,
3635 scm_string_ci_gr_p, scm_string_ci_geq_p): Use scm_string_eq, etc
3636 instead of explicit code.
3637
3638 * deprecated.c, load.c, posix.c, unif.c, symbols.c: Include
3639 "srfi-13.h" instead of "strop.h".
3640
3641 * init.c (scm_init_guile_1): Call scm_init_srfi_13 and
3642 scm_init_srfi_14. Do not call scm_init_strop.
3643
4b0d27f2
MV
36442004-08-24 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3645
3646 * numbers.c (scm_inf_p): Synced docstring back from manual.
3647
3ece39d6
MV
36482004-08-22 Marius Vollmer <mvo@zagadka.de>
3649
3650 * strings.c (get_str_buf_start): New helper function.
3651 (scm_i_substring, scm_i_substring_copy, scm_i_substring_shared,
3652 scm_i_string_char, scm_i_string_writable_chars): Use it.
3653 (scm_i_substring_copy): Make START argument optional for C
3654 callers, for upcoming SRFI-13 integration.
3655
36562004-08-21 Marius Vollmer <mvo@zagadka.de>
3657
3658 From Richard Todd, Thanks!
3659
3660 * script.c (scm_compile_shell_switches): added '-L' switch to add
3661 to the %load-path.
3662
5fa0939c
DH
36632004-08-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3664
3665 * eval.c (unmemoize_exprs): When dropping internal body markers
3666 from the output during unmemoization, also drop those that are not
3667 immediately at the beginning of a body.
3668
2146fdeb
MV
36692004-08-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3670
c1f54b3d
MV
3671 * eval.c (scm_lookupcar1): Report "Variable used before given a
3672 value" insetad of an "Unbound" one for variables that are found
3673 but still contain SCM_UNDEFINED.
2146fdeb
MV
3674
3675 * posix.c (scm_mkstemp): Correction to the correction, mkstemp
3676 expects a null-terminated string in the locale encoding, but
3677 scm_i_string_writable_chars doesn't give that. Fixed by letting
3678 mkstemp modify a locale version of the tmpl argument and copying
3679 the result back into tmpl.
3680
3681 * strop.c (scm_substring_move_x): Store into str2, not str1.
3682
d4f76919
KR
36832004-08-20 Kevin Ryde <user42@zip.com.au>
3684
3685 * posix.c (scm_mkstemp): Correction to new locale_string stuff, need
3686 to modify the input string.
3687
b5247a6b
MV
36882004-08-19 Marius Vollmer <mvo@zagadka.de>
3689
3690 * deprecated.c (SCM_SYMBOL_CHARS): Cast away const in return.
3691 (SCM_SYMBOL_LENGTH): It's scm_i_symbol_length, not
3692 scm_c_symbol_length.
3693
f26b9395
MV
36942004-08-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3695
3696 New string implementation, with copy-on-write strings and
3697 mutation-sharing substrings, and a new internal string API.
3698 Symbols can now share memory with strings.
3699
3700 * tags.h (scm_tc7_stringbuf): New tag.
3701
3702 * strings.h, strings.c: (scm_i_string_chars, scm_i_string_length,
3703 scm_i_string_writable_chars, scm_i_string_stop_writing): New, to
3704 replace SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH. Updated all
3705 uses.
3706 (scm_i_make_string, scm_c_make_string): New, to replace
3707 scm_allocate_string. Updated all uses.
3708 (SCM_STRINGP, SCM_STRING_CHARS, SCM_STRING_UCHARS,
3709 SCM_STRING_LENGTH): Deprecated.
3710 (scm_allocate_string, scm_take_str, scm_take0str, scm_mem2string,
3711 scm_str2string, scm_makfrom0str, scm_makfrom0str_opt):
3712 Discouraged. Replaced all uses with scm_from_locale_string or
3713 similar, as appropriate.
3714 (scm_c_string_length, scm_c_string_ref, scm_c_string_set_x,
3715 scm_c_substring, scm_c_substring_shared, scm_c_substring_copy,
3716 scm_substring_shared, scm_substring_copy): New.
3717
3718 * symbols.c, symbols.h (SCM_SYMBOLP, SCM_SYMBOL_FUNC,
3719 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS,
3720 SCM_SYMBOL_HASH, SCM_SYMBOL_INTERNED_P, scm_mem2symbol,
3721 scm_str2symbol, scm_mem2uninterned_symbol): Discouraged.
3722 (SCM_SYMBOL_LENGTH, SCM_SYMBOL_CHARS, scm_c_symbol2str):
3723 Deprecated.
3724 (SCM_MAKE_SYMBOL_TAG, SCM_SET_SYMBOL_LENGTH, SCM_SET_SYMBOL_CHARS,
3725 SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS): Removed.
3726 (scm_is_symbol, scm_from_locale_symbol, scm_from_locale_symboln):
3727 New, to replace scm_str2symbol and scm_mem2symbol, respectively.
3728 Updated all uses.
3729 (scm_gensym): Generate only the number suffix in the buffer, just
3730 string-append the prefix.
3731
3732 * error.c (scm_memory_error): Do not try to throw, just abort.
3733 Throwing will not work anyway.
3734
3735 * gh.h, gh-data.c (gh_set_substr): Made src const.
3736
3737 * ports.c (scm_i_mode_bits_n): New, for counted strings.
3738 (scm_mode_bits): Use it.
3739 (scm_c_port_for_each): Blocking GC does not seem to work, allocate
3740 a vector normally and fill that instead of consing a list with a
3741 blocked GC.
3742
3743 * read.c (scm_i_casei_streq): New, for counted strings.
3744
3745 * threads.c (gc_section_count): Removed, thread-sleeping can not
3746 be nested.
3747 (scm_i_thread_put_to_sleep): Call scm_i_leave_guile before locking
3748 admin mutex so that we can be put to sleep by other threads while
3749 blocking on that mutex. Lock all the heap mutex of all threads,
3750 including ourselves.
3751 (scm_i_thread_wake_up): Unlock all threads, including ourselves,
3752 call scm_i_enter_guile.
3753 (scm_thread_mark_stacks): Expect all threads to be suspended.
3754
3755 * gc.h, gc.c (scm_i_gc_admin_mutex): New, to protect
3756 scm_gc_mallocated, for now.
3757 (scm_init_storage): Initialize it.
3758 * gc-malloc.c (descrease_mtrigger, increase_mtrigger): Use it.
3759
3760 * gc-mark.c (scm_gc_mark_dependencies): Call scm_i_string_mark,
3761 scm_i_stringbuf_mark and scm_i_symbol_mark, as appropriate.
3762 * gc-card.c (scm_i_sweep_card): Call scm_i_string_free,
3763 scm_i_stringbuf_free and scm_i_symbol_free, as appropriate.
3764
cd505b38
MV
3765 * strop.c (scm_string_copy): Use scm_c_substring to get a
3766 copy-on-write string.
3767
8a807b26
KR
37682004-08-18 Kevin Ryde <user42@zip.com.au>
3769
3770 * arbiters.c (FETCH_STORE): New macro.
3771 (SCM_LOCK_VAL, SCM_UNLOCK_VAL): New constants.
3772 (SCM_LOCK_ARB, SCM_UNLOCK_ARB): Remove, effectively absorbed into
3773 scm_try_arbiter and scm_release_arbiter.
3774 (scm_try_arbiter, scm_release_arbiter): Use FETCH_STORE to get xchg
3775 for speed on i386, otherwise using mutex.
3776
3777 * eq.c (scm_equal_p): Remove real==fraction and fraction==real, they
3778 must be #f according to R5RS. (equal? follows eqv?, and for eqv? an
3779 exact and inexact is #f.)
3780
3781 * fports.c (fport_print): Use scm_ttyname instead of ttyname directly,
3782 to get thread safety of scm_ttyname.
3783
3784 * ports.c (ttyname): Remove prototype, unused.
3785
d6cd4c36 3786 * socket.c (scm_init_socket): Add SOCK_SEQPACKET and SOCK_RDM.
1f3cc0d3 3787 Reported by Michael Tuexen.
d6cd4c36 3788
fa0c0a4b
MV
37892004-08-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3790
3791 * load.c (scm_init_load_path): Do not pass NULL to
3792 scm_to_locale_string, which would happen when GUILE_LOAD_PATH is
3793 not set. Thanks to Bill Schottstaedt.
3794
70f7ee41
MV
37952004-08-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3796
3797 * socket.c (scm_inet_aton, scm_inet_pton): Convert SCM strings to
3798 locale strings instead of accessing their internals.
3799 (scm_recv, scm_send, scm_recvfrom, scm_sendto): Use
3800 SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH instead of
3801 SCM_STRING_CHARS and SCM_STRING_LENGTH.
3802
3803 * simpos.c (scm_system): Convert SCM strings to locale strings
3804 instead of accessing their internals.
3805
3806 * script.c (scm_compile_shell_switches): Convert version to locale
3807 string before printing it.
3808
3809 * rdelim.c (scm_read_delimited_x): Avoid
3810 SCM_VALIDATE_SUBSTRING_SPEC_COPY and use scm_from_size_t instead
3811 of scm_from_long for the returned number of read characters.
3812
3813 * ioext.c (scm_fdopen): Use scm_i_fdes_to_port together with
3814 scm_i_mode_bits to avoid accessing internals of SCM string from C.
3815
3816 * filesys.c (STRING_SYSCALL, STRING2_SYSCALL): New helper macros.
3817 Use them instead of SCM_SYSCALL when one or two strings need to be
3818 converted into locale strings.
3819 (my_rename): New, gathers platform dependent code for renaming.
3820 (scm_rename): Use it.
3821 (scm_readlink, scm_copy_file): Convert SCM strings to locale
3822 strings instead of accessing their internals.
3823 (scm_basename, scm_dirname): Use SCM_I_STRING_CHARS and
3824 SCM_I_STRING_LENGTH instead of SCM_STRING_CHARS and
3825 SCM_STRING_LENGTH.
3826
3827 * extensions.c (load_extension): Convert lib and init to locale
3828 strings instead of accessing the internals directly.
3829 (scm_c_load_extension): Use scm_from_locale_string instead of
3830 scm_makfrom0str.
3831
3832 * fports.h, fports.c (scm_i_fdes_to_port): New, like
3833 scm_fdes_to_port, but take mode bits directly instead of as a C
3834 string.
3835 (scm_i_fdes_to_port): Implement using above.
3836 (scm_open_file): Use scm_i_fdes_to_port together with
3837 scm_i_mode_bits to avoid accessing internals of SCM string from C.
3838 * vports.c (scm_make_soft_port): Use scm_i_fdes_to_port together
3839 with scm_i_mode_bits to avoid accessing internals of SCM string
3840 from C.
3841
3842 * ports.h (scm_i_mode_bits): New, same as scm_mode_bits but with a
3843 SCM string as argument.
3844
3845 * ports.c (scm_i_void_port): New, like scm_void_port but take mode
3846 bits directly instead of C string.
3847 (scm_void_port): Implement using above.
3848 (scm_sys_make_void_port): Use scm_i_void_port together with
3849 scm_i_mode_bits to avoid accessing internals of SCM string.
3850
3851 * strings.h, strings.c (scm_i_get_substring_spec): New.
3852
3853 * socket.c, rw.c, deprecated.h, validate.h
3854 (SCM_VALIDATE_STRING_COPY): Deprecated. Replaced all uses with
3855 SCM_VALIDATE_STRING plus SCM_I_STRING_CHARS or
3856 scm_to_locale_string, etc.
3857 (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Deprecated. Replaced as
3858 above, plus scm_i_get_substring_spec.
3859
3860 * regex-posix.c, read.c, random.c, ramap.c, print.c, numbers.c,
3861 hash.c, gc.c, gc-card.c, convert.i.c, backtrace.c, strop.c,
3862 strorder.c, strports.c, struct.c, symbols.c, unif.c, ports.c: Use
3863 SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_STRING_LENGTH
3864 instead of SCM_STRING_CHARS, SCM_STRING_UCHARS, and
3865 SCM_STRING_LENGTH, respectively. Also, replaced scm_return_first
3866 with more explicit scm_remember_upto_here_1, etc, or introduced
3867 them in the first place.
3868
3869 * posix.c (WITH_STRING): New helper macro. Use it where one
3870 locale string is needed for a short piece of code.
3871 (STRING_SYSCALL): New helper macro. Use it instead of SCM_SYSCALL
3872 when one locale string is needed.
3873 (scm_mkstemp): Convert tmpl to a locale string.
3874 (scm_putenv): Rewritten to use only C strings.
3875 (scm_setlocale, scm_crpt): Convert argument strings to locale
3876 strings.
3877
38782004-08-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3879
3880 * load.c (scm_primitive_load_path): Do not check for absolute
3881 filenames when scm_sys_search_load_path returns false, which will
3882 return absolute filenames unchanged.
3883
bb26cc2d
MV
38842004-08-11 Marius Vollmer <mvo@zagadka.de>
3885
3886 * gc.c, procprop.c (scm_init_storage, scm_stand_in_procs,
3887 scm_stand_in_proc): Use a hastable for scm_stand_in_procs instead
3888 of an alist. Thanks to Matthias Koeppe!
3889
02573e4c
MV
38902004-08-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3891
3892 * strings.h, deprecated.h (SCM_STRING_COERCE_0TERMINATION_X):
3893 Moved from string.h to deprecated.h.
3894
3895 * deprecated.c, deprecated.h (SCM_CHARS, SCM_LENGTH): Removed.
3896
f9751e86 3897 * strings.h, strings.c (SCM_MAKE_STRING_TAG): Renamed to
02573e4c
MV
3898 SCM_I_MAKE_STRING_TAG, changed all uses.
3899 (SCM_STRING_CHARS, SCM_STRING_UCHARS, SCM_STRING_LENGTH): Renamed
3900 to SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_LENGTH
3901 respectively. For a short time, the old names are still there as
3902 aliases. Not all uses have been changed yet, but the ones in
3903 strings.c have.
3904 (SCM_STRING_MAX_LEN): Do not hardcode to 24 bits, compute from
3905 SCM_T_BITS_MAX.
3906 (scm_is_string, scm_from_locale_string, scm_from_locale_stringn,
3907 scm_take_locale_string, scm_take_locale_stringn,
3908 scm_to_locale_string, scm_to_locale_stringn,
3909 scm_to_locale_stringbuf): New.
3910 (scm_c_string2str, scm_c_substring2str): Deprecated by moving to
3911 deprecated.[hc]. Implemented in terms of the new functions above.
3912 (scm_take_str, scm_take0str, scm_mem2string, scm_str2string,
3913 scm_makfrom0str): Reimplemented in terms of the new functions from
3914 above. They will be discouraged shortly.
3915 (scm_substring): Do not use scm_mem2string.
3916 (scm_i_allocate_string_pointers, scm_i_free_string_pointers): New,
3917 to replace similar code from posix.c, simpos.c, and dynl.c.
3918 (scm_string_append): Use memcpy instead of explicit loop. Do not
3919 use register keyword. Use plain 'char' instead of 'unsigned
3920 char'.
3921
3922 * strports.c (scm_mkstrport): Use SCM_I_STRING_UCHARS instead of
3923 SCM_STRING_UCHARS. Use SCM_I_STRINGP instead of SCM_STRINGP.
3924
3925 * strop.c (scm_i_index): Replaced SCM_STRINGP, SCM_STRING_CHARS,
3926 and SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
3927 SCM_I_STRING_LENGTH, respectively. Pass string object directly,
3928 not as a pointer. Use scm_remember_upto_here_1 to protect it.
3929
3930 * read.c (scm_input_error): Use a SCM value for 'fn', not a C
3931 string. This avoids a conversion round-trip.
3932
3933 * gh_data.c: Replaced SCM_STRINGP, SCM_STRING_CHARS, and
3934 SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
3935 SCM_I_STRING_LENGTH, respectively.
3936 (gh_scm2newstr): Implement in terms of scm_to_locale_string.
3937
3938 * environments.c: Instead calling scm_puts on the SCM_STRING_CHARS
3939 of a string, call scm_display on the string itself.
3940
3941 * dynwind.c, dynwind.h (scm_frame_free): New.
3942
3943 * stime.c, socket.c, simpos.c, procs.c, posix.c, ports.c,
3944 net_db.c, fports.c, filesys.c, eval.c, deprecation.c, dynl.c:
3945 Replaced uses of SCM_STRING_CHARS with proper uses of
3946 scm_to_locale_string. Replaced SCM_STRINGP with scm_is_string.
3947 Replaced scm_mem2string with scm_from_locale_string.
3948
3949 * simpos.c, posix.c (allocate_string_pointers, environ_list_to_c):
3950 Removed, replaced all uses with scm_i_allocate_string_pointers.
3951
3952 * load.h, load.c (scm_internal_parse_path): Removed.
3953 (scm_parse_path): Use scm_string_split to do the work.
3954 (scm_init_load_path): Use scm_parse_path instead of
3955 scm_internal_parse_path.
3956 (scm_search_path): Rewritten string handling part of the code in
3957 terms of scm_to_locale_stringbuf and so that it is thread safe.
3958
3959 * error.c (scm_error_scm): Throw directly instead of calling
3960 scm_error, this avoids the back and forth conversion of SUBR and
3961 MESSAGE and also plugs a memory leak.
3962 (scm_error): Call scm_error_scm.
3963
3964 * backtrace.c: Replaced SCM_STRINGP with scm_is_string.
3965 (display_header): Print FNAME when it is true, not
3966 merely when it is a string.
3967
3968 * strings.h (SCM_SET_STRING_LENGTH, SCM_SET_STRING_CHARS): Removed
3969 unceremoniously. They were unused by Guile itself, and external
3970 use should stop immediately.
3971
3972
409eb4e5
MV
39732004-08-10 Marius Vollmer <mvo@zagadka.de>
3974
3975 * numbers.h, number.c, deprecated.h, deprecated.c (scm_round,
3976 scm_truncate): Renamed to scm_c_round and scm_c_truncate;
3977 deprecated versions installed in deprecated.h and deprecated.c.
3978 Changed all uses.
3979
a00eaf19
RB
39802004-08-06 Rob Browning <rlb@defaultvalue.org>
3981
3982 * net_db.c (scm_resolv_error): don't cause an exception while
3983 trying to throw an exception -- call scm_misc_error with correct
3984 arguments. The previous arguments needed a format escape that
3985 wasn't in any of the format strings.
3986
bcb88c93
KR
39872004-08-06 Kevin Ryde <user42@zip.com.au>
3988
8f094b97
KR
3989 * ramap.c (scm_array_fill_x): For byvect char fill, force signed char
3990 so as not to depend on signedness of plain char. For byvect range
3991 check, throw out-of-range rather than wrong-type-arg.
3992
bcb88c93
KR
3993 * unif.c (scm_uniform_vector_ref, scm_array_set_x): For byvect, force
3994 signed byte range checks by using scm_to_schar and scm_from_schar,
3995 don't want to depend on signedness of C char.
3996
29e61124
KR
39972004-08-05 Kevin Ryde <user42@zip.com.au>
3998
3999 * arbiters.c (scm_try_arbiter): Use scm_i_misc_mutex instead of
4000 SCM_DEFER_INTS.
4001 (scm_release_arbiter): Use scm_i_misc_mutex so return value can be
4002 guaranteed if multiple threads compete to unlock.
4003 Update docstrings per doc/ref/api-scheduling.texi.
4004
99de794f
KR
4005 * filesys.c (scm_copy_file): Use fstat on the input fd rather than
4006 stat on the filename, to be certain a file rename can't mean we get
4007 info on one filesystem object but open another. This fstat usage is
4008 similar to Emacs copy-file.
4009
29e61124
KR
4010 * posix.c (scm_setgroups): Enhance docstring, per doc/ref/posix.texi.
4011
4012 * simpos.c (scm_system_star): Change scm_from_long to scm_from_int on
4013 SIGINT and SIGQUIT, since those values are ints.
4014
759aa8f9
MV
40152004-08-03 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4016
7241f213
MV
4017 * num2integral.i.c, num2float.i.c: Removed.
4018 * Makefile.am (noinst_HEADERS): Updated.
4019
f9656a9f
MV
4020 * numbers.h. numbers.c (scm_make_ratio): Renamed to
4021 scm_i_make_ratio and made static, replaced uses with scm_divide.
96d8c217
MV
4022 (scm_complex_p): New, export as "complex?" to Scheme.
4023 (scm_number_p): Export as "number?" to Scheme.
4024 (scm_is_complex, scm_is_number): New.
4025 (scm_c_make_rectangular, scm_c_make_polar): New.
4026 (scm_make_rectangular, scm_make_polar): Use above.
4027 (scm_c_real_part, scm_c_imag_part, scm_c_magnitude, scm_c_angle):
4028 New.
4029 (scm_make_complex): Discouraged by moving to discouraged.h and
4030 discouraged.c. Replaced all uses with scm_c_make_rectangular.
4031
759aa8f9
MV
4032 * discouraged.h, discouraged.c, numbers.c, numbers.h
4033 (scm_is_rational): New.
4034 (scm_i_short2big, scm_i_int2big, scm_i_uint2big, scm_i_size2big,
4035 scm_i_ptrdiff2big, scm_i_long_long2big, scm_i_ulong_long2big):
4036 Removed prototypes.
4037 (scm_make_real, scm_num2dbl, scm_float2num, scm_double2num):
4038 Discouraged by moving to discouraged.h and discouraged.c.
4039 Replaced all uses with scm_from_double.
4040 (scm_num2float, scm_num2double): Discouraged by moving prototype
4041 to discouraged.h and rewriting in terms of scm_to_double.
4042 Replaced all uses with scm_to_double.
4043 (scm_to_double): Do not implement in terms of scm_num2dbl, use
4044 explicit code.
4045 (scm_from_double): Do not implement in terms of scm_make_real, use
4046 explicit code.
4047
531bf3e6
MV
40482004-08-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4049
759aa8f9
MV
4050 * init.c (scm_init_guile_1): Call scm_i_init_discouraged.
4051
531bf3e6
MV
4052 * gen-scmconfig.h.in (SCM_I_GSC_ENABLE_DISCOURAGED): New.
4053 * gen-scmconfig.c (SCM_ENABLE_DISCOURAGED): Emit based on above.
4054
4055 * eval.c (SCM_EVALIM, SCM_EVALIM2, SCM_XEVAL, SCM_XEVALCAR):
4056 Renamed to SCM_I_* in order to avoid collisions with the versions
4057 defined in deprecated.h.
4058
4059 * discouraged.h, discouraged.c: New files.
4060
4061 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_EQ_P,
4062 SCM_NEGATE_BOOL, SCM_BOOL, SCM_BOOT_NOT): Promoted from being
4063 deprecated to being discouraged by moving to discouraged.h.
4064
4065 * numbers.h, numbers.c, discouraged.h, discouraged.c
4066 (scm_short2num, scm_ushort2num, scm_int2num, scm_uint2num,
4067 scm_long2num, scm_ulong2num, scm_size2num, scm_ptrdiff2num,
4068 scm_num2short, scm_num2ushort, scm_num2int, scm_num2uint,
4069 scm_num2long, scm_num2ulong, scm_num2size, scm_num2ptrdiff,
4070 scm_long_long2num, scm_ulong_long2num, scm_num2long_long,
4071 scm_num2ulong_long): Discouraged by moving to discouraged.h and
4072 discouraged.c and reimplementing in terms of scm_from_* and
4073 scm_to_*. Changed all uses to the new scm_from_* and scm_to_*
4074 functions.
4075
4076 * numbers.h, numbers.c: Removed GUILE_DEBUG code.
4077 (scm_i_short2big, scm_i_ushort2big, scm_i_int2big, scm_i_uint2big,
4078 scm_i_size2big, scm_i_ptrdiff2big): Removed.
4079 (scm_i_long2big, scm_i_ulong2big): New, explicit definitions.
4080 * conv-integer.i.c, conv-uinteger.i.c: Use them instead of
4081 explicit code.
4082
5ec82e96
KR
40832004-08-02 Kevin Ryde <user42@zip.com.au>
4084
4085 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Add comments about past
4086 and current usage and migration.
4087
58f28989
KR
40882004-07-31 Kevin Ryde <user42@zip.com.au>
4089
4090 * error.c (scm_strerror): Use scm_i_misc_mutex around strerror since
4091 it's not thread safe.
4092 (scm_syserror): Use scm_strerror rather than SCM_I_STRERROR, to take
4093 advantage of this.
4094 * fports.c (scm_open_file): Use scm_strerror likewise.
4095 * filesys.c (scm_stat, scm_lstat): Ditto.
4096
4097 * filesys.c (scm_copy_file): Avoid fd leak when destination file
4098 cannot be opened.
4099
4100 * symbols.c (scm_gensym): Use scm_i_misc_mutex around gensym_counter
4101 update, for thread safety.
4102 (gensym_counter): Move into scm_gensym which is its only user.
4103 (scm_init_symbols): No need to explicitly initialize gensym_counter.
4104
03696aab
MV
41052004-07-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4106
51fdb325
MV
4107 * numbers.h (scm_to_schar, scm_to_uchar, scm_to_char,
4108 scm_to_short, scm_to_ushort, scm_to_int, scm_to_uint, scm_to_long,
4109 scm_to_ulong, scm_to_long_long, scm_to_ulong_long, scm_to_intmax,
4110 scm_to_uintmax, scm_to_size_t, scm_to_ssize_t scm_from_schar,
4111 scm_from_uchar, scm_from_char, scm_from_short, scm_from_ushort,
4112 scm_from_int, scm_from_uint, scm_from_long, scm_from_ulong,
4113 scm_from_long_long, scm_from_ulong_long, scm_from_intmax,
4114 scm_from_uintmax, scm_from_size_t, scm_from_ssize_t): No longer
4115 defined in terms of scm_to_signed_integer, etc, but in terms of
4116 scm_to_int8, etc.
4117
4118 * gen-scmconfig.c (SCM_SIZEOF_INTMAX, SCM_SIZEOF_SIZE_T): New.
4119
03696aab
MV
4120 * gen-scmconfig.h.in: Removed SCM_I_GSC_*_LIMITS macros, they are
4121 no longer used.
4122
4123 * __scm.h (SCM_I_UTYPE_MAX, SCM_I_TYPE_MAX, SCM_I_TYPE_MIN,
4124 SCM_I_SIZE_MAX, SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX): New.
4125
4126 * __scm.h, gen-scmconfig.c (SCM_I_LLONG_MAX, SCM_I_LLONG_MIN,
4127 SCM_I_ULLONG_MAX, SCM_T_INT8_MIN, SCM_T_INT8_MAX, SCM_T_UINT8_MAX,
4128 SCM_T_INT16_MIN, SCM_T_INT16_MAX, SCM_T_UINT16_MAX,
4129 SCM_T_INT32_MIN, SCM_T_INT32_MAX, SCM_T_UINT32_MAX,
4130 SCM_T_INT64_MIN, SCM_T_INT64_MAX, SCM_T_UINT64_MAX,
4131 SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, SCM_T_UINTMAX_MAX): Moved
4132 definition into __scm.h, using new SCM_I_TYPE_MIN, etc.
4133
4134 * conv-integer.i.c, conv-uinteger.i.c: New files, used to generate
4135 the functions below.
4136
4137 * Makefile.am (noinst_HEADERS): Added conv-integer.i.c and
4138 conv-uinteger.i.c.
4139
4140 * numbers.c, numbers.h (scm_to_int8, scm_to_uint8, scm_to_int16,
4141 scm_to_uint16, scm_to_int32, scm_to_uint32, scm_to_int64,
4142 scm_to_uint64, scm_from_int8, scm_from_uint8, scm_from_int16,
4143 scm_from_uint16, scm_from_int32, scm_from_uint32, scm_from_int64,
4144 scm_from_uint64): Turned from macros into proper functions.
4145 (scm_to_signed_integer, scm_to_unsigned_integer,
4146 scm_from_signed_integer, scm_from_unsigned_integer): Generate via
4147 conv-integer.i.c and conv-uinteger.i.c, as well.
4148
4149 * number.h (scm_to_ssize_t, scm_to_size_t): Use the new
4150 SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX, and SCM_I_SIZE_MAX macros for
4151 the limits. Those are always defined.
4152
1f15779e
KR
41532004-07-29 Kevin Ryde <user42@zip.com.au>
4154
4155 * posix.c (scm_ttyname): Use scm_i_misc_mutex for thread safety.
4156
48360eb3
KR
41572004-07-28 Kevin Ryde <user42@zip.com.au>
4158
4159 * posix.c (scm_ctermid): Use an L_ctermid buf on the stack, for thread
4160 safety.
4161
c3f3c841
KR
4162 * unif.c (scm_array_set_x): For svect, use scm_num2short for
4163 consistency with other vector types and to get arg and func name into
4164 error message.
4165
c82f8ed6
MV
41662004-07-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4167
4168 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_BOOL):
4169 Reimplement using scm_is_false, scm_is_true, scm_is_bool, and
4170 scm_from_bool, respectively.
4171 (SCM_NINUMP): Added.
4172
4173 * tags.h, deprecated.h (SCM_EQ_P): Deprecated by moving it into
4174 deprecated.h. Replaced all uses with scm_is_eq.
4175
317b4c4a
KR
41762004-07-24 Kevin Ryde <user42@zip.com.au>
4177
4178 * threads.c, threads.h (scm_i_misc_mutex): New SCM_GLOBAL_MUTEX.
4179 * posix.c (scm_crypt): Use it to protect static data in crypt().
4180
e11e83f3
MV
41812004-07-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4182
4183 * deprecated.h, deprecated.c, numbers.h (SCM_INUMP, SCM_NINUMP,
c82f8ed6 4184 SCM_INUM): Deprecated by renaming them to SCM_I_INUMP,
e11e83f3
MV
4185 SCM_I_NINUMP and SCM_I_INUM, respectively and adding deprecated
4186 versions to deprecated.h and deprecated.c. Changed all uses to
4187 either use the SCM_I_ variants or scm_is_*, scm_to_*, or
4188 scm_from_*, as appropriate.
4189
4190 * dynwind.c (scm_i_dowinds): Removed unused code that would call
4191 the unexisting scm_cross_dynwind_binding_scope for inums on the
4192 windlist.
4193
a55c2b68
MV
41942004-07-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4195
4196 * socket.c (ipv6_net_to_num, scm_from_ipv6): Renamed
e11e83f3 4197 ipv6_net_to_num to scm_from_ipv6, for converting from an IPv6
a55c2b68
MV
4198 byte-wise address to a SCM integer. Changed all uses.
4199 (ipv6_num_to_net, scm_to_ipv6): Renamed ipv6_num_to_net to
4200 scm_to_ipv6 and added type and range checking, for converting from
4201 an IPv& byte-wise address to a SCM integer. Changed all uses.
4202 (bignum_in_ipv6_range_p, VALIDATE_INET6): Removed, their function
4203 is now done by scm_to_ipv6.
4204
4205 * numbers.c (scm_to_signed_integer, scm_to_unsigned_integer): dot
4206 not accept inexact integers.
4207
4208 * validate.h, deprecated.h (SCM_VALIDATE_INUM,
4209 SCM_VALIDATE_INUM_COPY, SCM_VALIDATE_BIGINT,
4210 SCM_VALIDATE_INUM_MIN, SCM_VALIDATE_INUM_MIN_COPY,
4211 SCM_VALIDATE_INUM_MIN_DEF_COPY,SCM_VALIDATE_INUM_DEF,
4212 SCM_VALIDATE_INUM_DEF_COPY, SCM_VALIDATE_INUM_RANGE,
4213 SCM_VALIDATE_INUM_RANGE_COPY): Deprecated because they make the
4214 fixnum/bignum distinction visible. Changed all uses to
4215 scm_to_size_t or similar.
4216
42172004-07-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4218
4219 * cpp_cnvt.awk: Use scm_from_int instead of SCM_MAKINUM.
4220
48a06bd5
KR
42212004-07-10 Kevin Ryde <user42@zip.com.au>
4222
4223 * hash.c (scm_hashq, scm_hashv, scm_hash): Restrict to size>=1 rather
4224 than size>=0, since 0<=hash<size cannot be satisfied for size==0, and
4225 such a size causes divide-by-zeros in scm_hasher.
4226
052fbfd9
KR
4227 * regex-posix.c (scm_make_regexp): Free rx on error, to avoid memory
4228 leak.
4229
43240c9c
MV
42302004-07-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4231
4232 * numbers.c (scm_is_signed_integer, scm_is_unsigned_integer):
4233 Rewritten using the same logic as scm_to_signed_integer and
4234 scm_to_unsigned_integer, respectively, which is better(tm). Also,
4235 use CHAR_BIT instead of hardcoding 8.
4236 (LLONG_MIN, LLONG_MAX, ULLONG_MAX): Removed and used
4237 SCM_I_LLONG_MIN etc. instead.
4238
4239 * numbers.h (SCM_MAKINUM, SCM_I_MAKINUM): Renamed SCM_MAKINUM to
4240 SCM_I_MAKINUM and changed all uses.
4241 * deprecated.h, deprecated.c (SCM_MAKINUM): Newly deprecated.
4242
a3de8e7b
MV
4243 * gen-scmconfig.c (SCM_I_LLONG_MIN, SCM_I_LLONG_MAX,
4244 SCM_I_ULLONG_MAX): Instead of hard-coding the numbers, compute
43240c9c
MV
4245 them by assuming twos-complement.
4246
c9eb03bb
MV
42472004-07-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4248
4249 * gen-scmconfig.h.in: Added all the new SCM_I_GSC_*_LIMITS that
4250 configure now produces.
4251 * gen-scmconfig.c: Use them to output SCM_T_INT8_MIN, etc
4252 definitions, giving the limits of the integer types defined by
4253 Guile. Also, output a hard coded SCM_I_LLONG_MIN, etc since
4254 LLONG_MIN or LONG_LONG_MIN is hard to get at.
4255
4256 * numbers.h (scm_to_short, scm_to_ushort): It's SHRT_MIN, etc, not
4257 SHORT_MIN.
4258 (scm_to_size_t): Use SIZE_MAX instead of cooking our own.
4259 (scm_to_long_long, scm_to_ulong_long, scm_to_int8, scm_to_uint8,
4260 scm_to_int16, scm_to_uint16, scm_to_int32, scm_to_uint32,
4261 scm_to_int64, scm_to_uint64, scm_to_intmax, scm_to_uintmax,
4262 scm_from_long_long, scm_from_ulong_long, scm_from_int8,
4263 scm_from_uint8, scm_from_int16, scm_from_uint16, scm_from_int32,
4264 scm_from_uint32, scm_from_int64, scm_from_uint64, scm_from_intmax,
4265 scm_from_uintmax): New.
4266
7888309b
MV
42672004-07-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4268
4269 * tags.h (scm_is_eq): New.
4270
4271 * deprecated.h, boolean.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOL,
4272 SCM_NEGATE_BOOL, SCM_BOOLP): Deprecated by moving into
4273 "deprecated.h". Replaced all uses with scm_is_false, scm_is_true,
4274 scm_from_bool, and scm_is_bool, respectively.
4275
4276 * boolean.h (scm_is_bool): Fix bug in prototype.
4277 (scm_from_bool): The argument is "x" not "f", stupid.
4278
4279 * boolean.c (scm_is_bool): Fix typo.
4280
4281 * numbers.h, numbers.c (scm_is_integer, scm_is_signed_integer,
4282 scm_is_unsigned_integer, scm_to_signed_integer,
4283 scm_to_unsigned_integer, scm_to_schar, scm_to_uchar, scm_to_char,
4284 scm_to_short, scm_to_ushort, scm_to_long, scm_to_ulong,
4285 scm_to_size_t, scm_to_ssize_t, scm_from_schar, scm_from_uchar,
4286 scm_from_char, scm_from_short, scm_from_ushort, scm_from_int,
4287 scm_from_uint, scm_from_long, scm_from_ulong, scm_from_size_t,
4288 scm_from_ssize_t, scm_is_real, scm_to_double, scm_from_double):
4289 New.
4290
800570a6
MV
42912004-07-05 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4292
4293 * boolean.h, boolean.c (scm_is_true, scm_is_false, scm_from_bool,
4294 scm_to_bool): New.
4295
9fcf3cbb
DH
42962004-06-27 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4297
4298 * backtrace.c (display_expression, display_frame): Call
4299 scm_i_unmemoize_expr for unmemoizing a memoized object holding a
4300 single memoized expression.
4301
4302 * debug.c (memoized_print): Don't try to unmemoize the memoized
4303 object, since we can't know whether it holds a single expression
4304 or a body.
4305
4306 (scm_mem_to_proc): Removed check for lambda expression, since it
4307 was moot anyway. Whoever uses these functions for debugging
4308 purposes should know what they do: Creating invalid memoized code
4309 will cause crashes, independent of whether this check is present
4310 or not.
4311
4312 (scm_proc_to_mem): Take the closure's code as it is and don't
4313 append a SCM_IM_LAMBDA isym. To allow easier debugging, the
4314 memoized code should not be modified.
4315
4316 * debug.[ch] (scm_unmemoize, scm_i_unmemoize_expr): Removed
4317 scm_unmemoize from public use, but made scm_i_unmemoize_expr
4318 available as a guile internal function instead. However,
4319 scm_i_unmemoize_expr will only work on memoized objects that hold
4320 a single memoized expression. It won't work with bodies.
4321
4322 * debug.c (scm_procedure_source), macros.c (macro_print), print.c
4323 (scm_iprin1): Call scm_i_unmemocopy_body for unmemoizing a body,
4324 i. e. a list of expressions.
4325
4326 * eval.c (unmemoize_exprs): Drop internal body markers from the
4327 output during unmemoization.
4328
4329 * eval.[ch] (scm_unmemocopy, scm_i_unmemocopy_expr,
4330 scm_i_unmemocopy_body): Removed scm_unmemocopy from public use,
4331 but made scm_i_unmemocopy_expr and scm_i_unmemocopy_body available
4332 as guile internal functions instead. scm_i_unmemoize_expr will
4333 only work on a single memoized expression, while
4334 scm_i_unmemocopy_body will only work on bodies.
4335
90df793f
DH
43362004-06-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4337
4338 * eval.c (unmemoize_exprs): Handle semi-memoized code.
4339
4340 (scm_cons_source, scm_primitive_eval): Prefer higher level
4341 predicate SCM_FALSEP over SCM_IMP.
4342
8048c00b
RB
43432004-06-15 Rob Browning <rlb@defaultvalue.org>
4344
4345 * script.c (scm_shell_usage): minor phrasing change.
4346
4347 * gc_os_dep.c: update ifdefery for macosx.
4348 (scm_get_stack_base): separate result initialization from
4349 declaration to slience warnings with macosx and hp-ux using gcc
9a5fa6e9 4350 3.3. Thanks to Andreas Vögele.
8048c00b 4351
d93294d4
HWN
43522004-06-13 Han-Wen Nienhuys <hanwen@xs4all.nl>
4353
4354 * eval.c (unmemoize_exprs): use SCM_CONSP for the loop condition.
4355
212e58ed
DH
43562004-06-06 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4357
4358 * list.[ch] (scm_i_finite_list_copy): New internal function to
4359 copy lists that are known to be finite (though not necessarily
4360 proper).
4361
4362 * debug.c (scm_procedure_source): Don't have scm_unmemocopy treat
4363 a closure's argument list like an expression of a body.
4364
4365 * eval.c (unmemoize_expression, unmemoize_exprs, unmemoize_and,
4366 unmemoize_begin, unmemoize_case, unmemoize_cond, unmemoize_delay,
4367 unmemoize_do, unmemoize_if, unmemoize_lambda, unmemoize_let,
4368 unmemoize_letrec, unmemoize_letstar, unmemoize_or,
4369 unmemoize_set_x, unmemoize_apply, unmemoize_atcall_cc,
4370 unmemoize_at_call_with_values, unmemoize_future, sym_atslot_ref,
4371 unmemoize_atslot_ref, sym_atslot_set_x, unmemoize_atslot_set_x,
4372 unmemoize_builtin_macro): New static functions and symbols.
4373
4374 (scm_unmemocopy): Rewritten in terms of the above. scm_unmemocopy
4375 now has a slightly different meaning: The memoized form that is
4376 receives as its argument is now interpreted as a sequence of
4377 expressions from a body.
4378
4379 (unmemocar, scm_unmemocar): Since the whole functionality of
4380 unmemocar and scm_unmemocar is not needed any more, scm_unmemocar
4381 has its old content back and is deprecated, while unmemocar has
4382 been removed.
4383
4384 (SCM_BIT7): Removed.
4385
4386 (CEVAL): For unmemoizing a single expression, call
4387 unmemoize_expression instead of scm_unmemocopy, which now expects
4388 a sequence of body expressions. Eliminated unnecessary empty
4389 environment frame when executing let* forms. Eliminated
4390 unmemoization step from evaluator.
4391
9ccea370
MV
43922004-06-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4393
4394 * eval.c (scm_macroexp, macroexp): Renamed scm_macroexp to
4395 macroexp and made static. Added new version of scm_macroexp that
4396 emits a deprecation warning and then calls macroexp.
4397 (scm_m_undefine): Issue deprecation warning.
4398
57d23e25
DH
43992004-05-30 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4400
4401 * eval.c (lookup_global_symbol, literal_p, try_macro_lookup):
4402 Modified to make set! work on symbols that represent syntactic
4403 keywords.
4404
141521ad
HWN
44052004-05-26 Han-Wen Nienhuys <hanwen@xs4all.nl>
4406
4407 * gc.h (SCM_CELL_OBJECT_LOC): use SCM_GC_CELL_OBJECT to prevent
4408 compound expression as lvalue errors.
4409
7c2f56a4
MV
44102004-05-24 Marius Vollmer <mvo@zagadka.de>
4411
4412 * dynwind.c (winder_mark): Use SCM_PACK to correctly convert the
4413 WINDER_DATA to a SCM.
4414
366ecaec
DH
44152004-05-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4416
4417 * goops.c (compute_getters_n_setters, create_standard_classes,
4418 scm_add_slot): Compute closures by calling scm_i_eval_x on a
4419 lambda expression rather than creating them with scm_closure.
4420
26ecfa39
DH
44212004-05-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4422
4423 * eval.c (s_macro_keyword, scm_m_set_x): Remove checking for
4424 misplaced syntactic keywords. This will not work unless guile's
4425 defmacro feature is deprecated.
4426
4427 (scm_m_case): Fixed a bug that caused the list of labels to grow
4428 with every case form.
4429
f865229a
KR
44302004-05-19 Kevin Ryde <user42@zip.com.au>
4431
4432 * numbers.c (scm_round_number): For inum and big, just return x. For
4433 real, use scm_round for 2^54-1 etc problems covered there.
4434
4435 * numbers.c (trunc): Remove #define to scm_truncate when the C library
4436 doesn't provide trunc. This was for when `truncate' was done as a
4437 scm_tc7_dsubr, no longer required.
4438
4439 * threads.c (scm_threads_mark_stacks) [SCM_STACK_GROWS_UP]: Correction
4440 to stack marking call, two parameters and no cast on t->base.
4441
63947c7a
MV
44422004-05-18 Marius Vollmer <mvo@zagadka.de>
4443
4444 * hashtab.c (rehash_after_gc): Bug fix: properly link the
4445 processed hashtables back into the weak_hashtables list. Thanks
4446 to Bill Schottstaedt!
4447
e7313a9d
DH
44482004-05-16 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4449
4450 * eval.c (unmemoize_quote): New static function.
4451
4452 (scm_m_quote, scm_m_atslot_ref, SCM_CEVAL): Changed the byte code
4453 representation of 'quote' and '@slot-ref' to an improper list.
4454 This reduces execution time, the number of cells used to hold the
4455 memoized code, and thus also reduces garbage collection time.
4456
4457 (scm_unmemocopy): Use unmemoize_quote for quote expressions.
4458
4459 (SCM_CEVAL): Changed macro handling to also work with macros that
4460 return improper lists. Added an assertion, that the code returned
4461 by a macro transformer will not lead to cycles in the memoized
4462 code.
4463
e5156567
DH
44642004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4465
4466 No functional change, just rearrangements of functions within the
4467 file.
4468
4469 * eval.c (scm_ilookup, scm_unbound_variable_key,
4470 error_unbound_variable, scm_lookupcar1, scm_lookupcar): Moved to
4471 the definitions used for execution, since that's where they will
4472 belong to later.
4473
651f07f8
DH
44742004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4475
4476 * numbers.h (SCM_SLOPPY_FRACTIONP): Removed. It was not used
4477 throughout guile, has not been part of an official release yet,
4478 and the concept of sloppy predicates has never been a good idea.
4479
4480 (SCM_FRACTION_NUMERATOR, SCM_FRACTION_DENOMINATOR,
4481 SCM_FRACTION_SET_NUMERATOR, SCM_FRACTION_SET_DENOMINATOR):
4482 Simplified.
4483
770e048f
DH
44842004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4485
4486 * throw.c (SETJBJMPBUF, SCM_SETJBDFRAME): Add cast to scm_t_bits
4487 to make explicit what happens.
4488
2ff08405
DH
44892004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4490
4491 * dynl.c (SET_DYNL_HANDLE): Add cast to scm_t_bits to make
4492 explicit what happens.
4493
4494 * guardians.c (TCONC_IN): Use SCM_SET_CELL_OBJECT_x rather than
4495 SCM_SET_CELL_WORD_x when writing scheme objets to cell elements.
4496
89afb9cd
MV
44972004-05-11 Marius Vollmer <mvo@zagadka.de>
4498
4499 * scmsigs.c (scm_sigaction_for_thread): Validate that the handler
4500 is indeed a procedure when it isn't a number.
4501
3d5ebfa9
MV
45022004-05-10 Marius Vollmer <mvo@zagadka.de>
4503
4504 Convert floating point numbers into strings with an arbitrary
4505 radix. Thanks to Richard Todd!
4506
4507 * numbers.c (FLOBUFLEN): Increase so that radix 2 strings will
4508 fit.
4509 (fx): Removed.
4510 (scm_dblprec, fx_per_radix, init_dblprec, init_fx_radix,
4511 number_chars): New, to support variable radices.
4512 (idbl2str): Use above instead of the old base-10 only tables.
4513 (iflo2str): Pass on new RADIX argument to idbl2str.
4514 (scm_number_to_string): Pass radix to iflo2str.
4515 (scm_print_real, scm_print_complex): Explicitly pass radix 10 to
4516 iflo2str.
4517 (scm_init_numbers): Call init_dblprec and init_fx_radix for all
4518 possible radices.
4519
3ae69bb4
KR
45202004-05-10 Kevin Ryde <user42@zip.com.au>
4521
4522 * numbers.c (scm_logbit_p): Correction to test above the end of an
4523 inum. Reported by Jan Konecny.
4524
27968825
MV
45252004-05-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4526
4527 * gc.h (scm_t_cell): Fields are now of type SCM instead of
4528 scm_t_bits. Updated all users.
4529 (SCM_GC_CARD_SIZE_MASK): Use SCM_GC_SIZEOF_CARD instead of
4530 duplicating the code.
4531 (SCM_CELL_OBJECT_LOC): New.
4532 (SCM_CARLOC, SCM_CDRLOC): Use it instead of SCM_CELL_WORD_LOC.
4533 (SCM_CELL_WORD_LOC): Moved to "deprecated.h".
4534
4535 * smob.h (SCM_SMOB_DATA_2, SCM_SMOB_DATA_3, SCM_SMOB_FLAGS,
4536 SCM_SET_SMOB_DATA_2, SCM_SET_SMOB_DATA_3, SCM_SET_SMOB_FLAGS,
4537 SCM_SMOB_OBJECT, SCM_SMOB_OBJECT_2, SCM_SMOB_OBJECT_3,
4538 SCM_SET_SMOB_OBJECT, SCM_SET_SMOB_OBJECT_2, SCM_SET_SMOB_OBJECT_3,
4539 SCM_SMOB_OBJECT_LOC, SCM_SMOB_OBJECT_2_LOC,
4540 SCM_SMOB_OBJECT_3_LOC): New.
4541 * smob.c (scm_i_set_smob_flags): New function.
4542
4543 * dynl.c, dynwind.c, eval.h, fluids.h, futures.h, hashtab.h,
4544 hooks.h, keywords.h, macros.h, macros.c, mallocs.c, mallocs.h,
4545 random.h, regex-posix.h, root.h, srcprop.h, srcprop.c, threads.h:
4546 Use SCM_SMOB_* instead of SCM_CELL_* as appropriate. Use
4547 SCM_SMOB_FLAGS and SCM_SET_SMOB_FLAGS instead of accessing the
4548 zeroth word directly. Use SCM_SMOB_PREDICATE as appropriate.
4549
4550 * numbers.h (SCM_I_BIG_MPZ): Use SCM_CELL_OBJECT_LOC instead of
4551 taking the address of SCM_CELL_WORD_1, the latter being no longer
4552 an lvalue.
4553
4554 * variable.h (SCM_VARIABLE_LOC): Use SCM_CELL_OBJECT_LOC instead
4555 of casting SCM_CELL_WORD_LOC.
4556
3cf17ef0
KR
45572004-05-02 Kevin Ryde <user42@zip.com.au>
4558
37026925 4559 * eval.c (scm_macroexp): Add prototype, since it's not in eval.h under
9a5fa6e9 4560 --disable-deprecated. Reported by Andreas Vögele.
37026925 4561
3cf17ef0 4562 * filesys.c (_POSIX_C_SOURCE): Define to 199506L to get readdir_r (in
9a5fa6e9 4563 particular on HP-UX). Reported by Andreas Vögele.
3cf17ef0 4564
c5854598
KR
4565 * list.c (varargs.h): Remove, leave just stdarg.h which is all the
4566 code has support for. Fixes building with AIX cc, which is ansi but
4567 doesn't define __STDC__. Reported by Keith Crane.
4568 (var_start): Remove macro, this variation no longer required.
4569 (scm_list_n): Use va_start directly.
4570
f26c1a32
KR
45712004-05-01 Kevin Ryde <user42@zip.com.au>
4572
4573 * continuations.c (scm_dynthrow): Use >= instead of SCM_PTR_GE which
9a5fa6e9 4574 is now gone. Reported by Andreas Vögele.
f26c1a32 4575
dfa6017e
KR
45762004-04-28 Kevin Ryde <user42@zip.com.au>
4577
4578 * backtrace.c (display_frame_expr), numbers.c (XDIGIT2UINT,
4579 mem2uinteger, mem2decimal_from_point, mem2ureal): Cast char to int for
4580 ctype.h tests, to avoid warnings from gcc on HP-UX about char as array
9a5fa6e9 4581 subscript. Reported by Andreas Vögele.
dfa6017e
KR
4582 Also cast through unsigned char to avoid passing negatives to those
4583 macros if input contains 8-bit values.
4584
4585 * num2integral.i.c (NUM2INTEGRAL): Under non-BIGMPZ_FITSP case,
4586 corrections to range check for signed numbers. Remove
4587 scm_remember_upto_here_1(num) from these checks, since num is used
4588 subsequently anyway.
4589
4590 * num2integral.i.c (NUM2INTEGRAL): Test BIGMPZ_FITSP with "!= 0" to
4591 avoid warning from gcc 3.4. Reported by Hyperdivision.
4592
4593 * numbers.c (scm_bit_extract): Use min instead of MIN.
4594 (MIN): Remove, this conflicts with similar macro defined by limits.h
9a5fa6e9 4595 on HP-UX. Reported by Andreas Vögele.
dfa6017e
KR
4596
4597 * stime.c (_POSIX_C_SOURCE): Define to 199506L to get gmtime_r (in
9a5fa6e9 4598 particular on HP-UX). Reported by Andreas Vögele.
dfa6017e 4599
a0d06a00 4600 * threads.c (scm_threads_mark_stacks): Correction sizet -> size_t.
9a5fa6e9 4601 Reported by Andreas Vögele.
a0d06a00 4602
dfa6017e
KR
4603 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 25*sizeof(long),
4604 for the benefit of hpux11 where pthread_mutex_t is 88 bytes. Reported
9a5fa6e9 4605 by Andreas Vögele.
dfa6017e 4606
36245b66
DH
46072004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4608
4609 * eval.c (s_macro_keyword): New static identifier.
4610
4611 (scm_m_define): Change order to first create binding and
4612 evaluating the expression afterwards.
4613
4614 (scm_m_set_x): Memoize complete set! expression. Only leave
4615 symbols if no binding exists at memoization time. Throw error if
4616 assigning to a syntactic keyword.
4617
4618 (lazy_memoize_variable): New function.
4619
4620 (CEVAL): When execution set!, perform lazy memoization if
4621 unmemoized symbol is detected.
4622
4623 * modules.c (module_variable): Return variables with unbound
4624 value.
4625
4626 * tags.h: Fix comment.
4627
4d81111e
KR
46282004-04-25 Kevin Ryde <user42@zip.com.au>
4629
da8bcb2f
KR
4630 * chars.c (scm_char_upcase, scm_char_downcase, scm_c_upcase,
4631 scm_c_downcase): Use ctype.h toupper and tolower. This will be useful
4632 in 8-bit locales, and ensures consistency with char-upper-case? and
4633 char-lower-case? which already use ctype.h.
4634 (scm_c_upcase_table, scm_c_downcase_table, scm_lowers, scm_uppers):
4635 Remove.
4636 * chars.c, chars.h, init.c (scm_tables_prehistory): Remove.
4637
4d81111e
KR
4638 * socket.c (VALIDATE_INET6): Correction to bignum_in_ipv6_range_p
4639 call. Reported by Hyperdivision.
4640
4641 * threads.c (scm_yield): Correction, actually call scm_thread_yield.
4642 Reported by Hyperdivision.
4643
4644 * unif.c (s_scm_make_uve): Remove unused local variable. Reported by
4645 Hyperdivision.
4646
7e6e6b37
DH
46472004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4648
4649 Hide the implementation of ilocs and isyms in eval.c.
4650
4651 * deprecated.h (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4652 SCM_ICDRP), eval.c (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4653 SCM_ICDRP), eval.h (SCM_ICDR, SCM_IFRINC, SCM_IFRAME, SCM_IDIST,
4654 SCM_ICDRP): Deprecated and added to deprecated.h. Moved from
4655 eval.h to eval.c.
4656
4657 * deprecated.c (scm_isymnames), deprecated.h (scm_isymnames,
4658 SCM_ISYMNUM, SCM_ISYMCHARS), eval.c (SCM_ISYMNUM, isymnames,
4659 scm_unmemocopy, CEVAL), print.c (scm_isymnames), tags.h
4660 (SCM_ISYMNUM, scm_isymnames, SCM_ISYMCHARS): Deprecated
4661 scm_isymnames, SCM_ISYMNUM and SCM_ISYMCHARS and added to
4662 deprecated.[hc]. Moved scm_isymnames from print.c to eval.c and
4663 renamed to isymnames. Moved SCM_ISYMNUM from tags.h to eval.c and
4664 renamed to ISYMNUM.
4665
4666 * eval.c (scm_i_print_iloc, scm_i_print_isym), eval.h
4667 (scm_i_print_iloc, scm_i_print_isym), print.c (scm_iprin1):
4668 Extracted printing of ilocs and isyms to guile internal functions
4669 scm_i_print_iloc, scm_i_print_isym of eval.c.
4670
caab294f
KR
46712004-04-22 Kevin Ryde <user42@zip.com.au>
4672
7aaf4758
KR
4673 * numbers.c (scm_bit_extract): Use SCM_SRS for signed right shift.
4674
caab294f
KR
4675 * numbers.c (scm_round): Test for x already an integer, to avoid bad
4676 rounding in x+0.5 when x is a big value already an integer. In
4677 certain hardware rounding cases x+0.5 can give an adjacent integer,
4678 leading to that as the result, when we really just wanted x itself.
4679
b1cb24ff
DH
46802004-04-19 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4681
4682 * eval.c (scm_unmemocopy): Fixed unmemoization of let*.
4683
4684 (deval_args, CEVAL): Minor improvements: Reduced variable scopes,
4685 added const qualifiers, cast intentionally unused expressions to
4686 void for emphasis, improved comment.
4687
5065b40d
DH
46882004-04-18 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4689
4690 * tags.h (scm_tags, scm_tc8_tags, scm_tc9_flag, scm_tc8_flag,
4691 scm_tc8_isym): Renamed scm_tags to scm_tc8_tags. Renamed
4692 scm_tc9_flag to scm_tc8_flag. Introduced new identifier
4693 scm_tc8_isym. Defined tc8-tags relative to scm_tc3_imm24.
4694 Defined the tc8-tag for flags to be 0x04, which will mean that
4695 SCM_BOOL_F will also have the value 0x04 instead of 0x013c. Due
4696 to the reduced number of bits and the simpler bit pattern for
4697 SCM_BOOL_F, certain machines may be able to use more efficient
4698 processor instructions to deal with SCM_BOOL_F.
4699
4700 (SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA): Removed. These have
4701 never been defined in a released version, thus no need to
4702 deprecate them.
4703
4704 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Flags now use tc8
4705 instead of tc9 tags.
4706
4707 (SCM_ISYMP, SCM_MAKISYM, SCM_ISYMNUM): Isyms now use tc8 instead
4708 of tc9 tags.
4709
4710 (SCM_MAKSPCSYM): Removed. It is almost impossible that user code
4711 could have used this definition.
4712
4713 (SCM_IM_AND, SCM_IM_BEGIN, SCM_IM_CASE, SCM_IM_COND, SCM_IM_DO,
4714 SCM_IM_IF, SCM_IM_LAMBDA, SCM_IM_LET, SCM_IM_LETSTAR,
4715 SCM_IM_LETREC, SCM_IM_OR, SCM_IM_QUOTE, SCM_IM_SET_X): Now encoded
4716 as isyms, as special isyms don't exist any more.
4717
9fa6c119
KR
47182004-04-18 Kevin Ryde <user42@zip.com.au>
4719
e08d2eee
KR
4720 * filesys.c (scm_readdir): Use readdir_r when available, for thread
4721 safety.
4722
9fa6c119
KR
4723 * numbers.c (scm_max, scm_min): For big/real, use SCM_SWAP rather than
4724 explicit swapping code.
4725
c9cdd396
KR
47262004-04-15 Kevin Ryde <user42@zip.com.au>
4727
4728 * cpp_sig_symbols.in: Add SIGSYS.
4729
4730 * list.c (scm_append_x): Use iterative style, to avoid non-tail
4731 recursion.
4732
4733 * numbers.c (scm_max, scm_min): For inum/frac, frac/inum, big/frac,
4734 frac/big and frac/frac, use scm_less_p for exact comparison.
4735
83ac9c59
KR
4736 * numbers.c (scm_gcd): For inum/big, use mpz_gcd_ui by sharing code
4737 with big/inum.
4738
84a4be9a
KR
4739 * numbers.c (xisinf): Add a comment about solaris 7 lacking isinf.
4740
84fad130
HWN
47412004-04-06 Han-Wen Nienhuys <hanwen@xs4all.nl>
4742
6b69393d
HWN
4743 * inline.h (scm_cell): use SCM_GC_CELL_WORD for checking tag.
4744
84fad130
HWN
4745 * chars.h (scm_init_chars): change scm_{upcase,downcase} to
4746 scm_c_{up,down}case.
4747 (SCM_MAKE_CHAR): add (unsigned char) cast. This prevents havoc
4748 when hi-bit ASCII is subjected to SCM_MAKE_CHAR().
4749
c3110a30
KR
47502004-04-06 Kevin Ryde <user42@zip.com.au>
4751
0b288f36
KR
4752 * numbers.c (scm_ash): Remove stray "}" in docstring.
4753
ea2508c8
KR
4754 * numbers.c (scm_make_ratio): For inum/bignum integer detection, use
4755 x==SCM_MOST_NEGATIVE_FIXNUM explicitly, for clarity and to avoid
4756 calling mpz_cmp_ui in most cases.
4757
c3110a30
KR
4758 * numbers.c (scm_quotient, scm_remainder): In inum/big, use mpz_cmp_ui
4759 for big == abs(most-negative-fixnum) special case.
4760 (abs_most_negative_fixnum): Remove, no longer used.
4761
4762 * scmsigs.c (scm_sigaction_for_thread): Correction to signum range
4763 test, avoids SCM_VECTOR_REF outside bounds of signal_handlers on
4764 calling (sigaction NSIG).
4765
4766 * simpos.c (scm_system_star): Fix execargv memory leak, merge parent
4767 and fork error cases to do this.
4768
dec40cd2
DH
47692004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4770
4771 * eval.c (CEVAL): Don't distinguish between short and long
4772 instructions when dispatching - just always dispatch on the
4773 instruction code, which is common for short and long instructions.
4774 Further, removed unnecessary goto statements and added comment.
4775
0e7bb795
DH
47762004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4777
4778 * eval.c (scm_unmemocopy): Don't distinguish between short and
4779 long instructions when dispatching - just always dispatch on the
4780 instruction code, which is common for short and long instructions.
4781 Further, removed unnecessary goto statements, fixed indentation
4782 and replaced SCM_IMP predicates by SCM_NULLP.
4783
f9986767
DH
47842004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4785
4786 * eval.c (scm_lookupcar1, CEVAL): Use SCM_ILOCP instead of
4787 comparison with SCM_ILOC00. In CEVAL, eliminate goto-label
4788 'checkmacro'.
4789
fbc42231
KR
47902004-03-31 Kevin Ryde <user42@zip.com.au>
4791
4792 * simpos.c: Include <signal.h> for SIG_IGN and friends.
4793
434f2f7a
DH
47942004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4795
4796 Introduce scm_debug_mode_p as a replacement for scm_debug_mode and
4797 SCM_DEBUGGINGP:
4798
4799 * debug.h (scm_debug_mode_p, scm_debug_mode, SCM_DEBUGGINGP),
4800 eval.c (scm_debug_mode_p): Deprecated scm_debug_mode and
4801 SCM_DEBUGGINGP. Provided scm_debug_mode_p instead, to have one
4802 single interface that also matches the naming conventions.
4803 Probably scm_debug_mode_p should be part of the private interface
4804 anyway.
4805
4806 * debug.h (scm_debug_mode_p), backtrace.c (display_error_body),
4807 eval.c (SCM_APPLY, scm_trampoline_0, scm_trampoline_1,
4808 scm_trampoline_2): Change uses of scm_debug_mode or SCM_DEBUGGINGP
4809 to scm_debug_mode_p.
4810
4811
4812 Deprecate direct access to scm_ceval, scm_deval and scm_ceval_ptr:
4813
4814 * eval.h (scm_ceval, scm_deval, scm_ceval_ptr), debug.h
4815 (scm_ceval_ptr): Deprecated. Moved declaration of scm_ceval_ptr
4816 from debug.h to eval.h.
4817
4818 * debug.h (SCM_RESET_DEBUG_MODE): Don't access scm_ceval_ptr any
4819 more, just leave it with setting scm_debug_mode_p, which is
4820 equivalent for practical purposes.
4821
4822 * deprecated.h (SCM_XEVAL, SCM_XEVALCAR): Call scm_i_eval_x
4823 instead of *scm_ceval_ptr. Leave all evaluating to scm_i_eval_x.
4824
4825 * gdbint.c (gdb_eval): Call scm_i_eval_x instead of scm_ceval.
4826
4827 * eval.c (ceval, deval, scm_ceval, scm_deval): Made scm_ceval
4828 static and renamed it to ceval throughout. Provide a new exported
4829 but deprecated function scm_ceval as a wrapper for backwards
4830 compatibility. The same is done for the deval/scm_deval pair of
4831 functions.
4832
4833 * eval.c (CEVAL, SCM_CEVAL): Renamed SCM_CEVAL to CEVAL
4834 throughout. Defined CEVAL to ceval or deval, based on compilation
4835 phase.
4836
4837 * eval.c (SCM_XEVAL, SCM_XEVALCAR): Dispatch on scm_debug_mode_p
4838 to ceval and deval instead of calling *scm_ceval_ptr.
4839
4840 * eval.c (dispatching_eval): New deprecated static function.
4841
4842 * eval.c (scm_ceval_ptr): Initialized to dispatching_eval in order
4843 to emulate its old behaviour as closely as possible.
4844
4845
4846 Change the evaluator such that only expressions for which pair? is
4847 true are passed to CEVAL, and such that all other expressions are
4848 evaluated outside of CEVAL:
4849
4850 * eval.c (EVAL): New, provided in analogy to EVALCAR. Evaluate an
4851 expression that is assumed to be memoized already. All but
4852 expressions of the form '(<form> <form> ...)' are evaluated inline
4853 without calling an evaluator.
4854
4855 * eval.c (SCM_XEVAL, SCM_XEVALCAR, EVALCAR): Evaluate all but
4856 expressions of the form '(<form> <form> ...)' inline without
4857 calling an evaluator.
4858
4859 * eval.c (scm_i_eval_x, scm_i_eval, scm_ceval, scm_deval): Handle
4860 the special case of unmemoized symbols passed on the top level.
4861
4862 * eval.c (CEVAL): Change calls to CEVAL to EVAL, except where it
4863 is known that the expression passed to CEVAL is of the form
4864 '(<form> <form> ...)'. Remove handling of the tc7-objects, since
4865 now it is known that the input expression of CEVAL is a pair.
4866
48672004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5fb64383
DH
4868
4869 * eval.c (is_self_quoting_p): New static function.
4870
4871 (scm_m_quote): Use is_self_quoting_p.
4872
4873 (copy_tree): Corrected typo in comment.
4874
702551e6
HWN
48752004-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
4876
bfefbf18
HWN
4877 * eval.c (s_scm_copy_tree): idem.
4878
4879 * list.c (s_scm_filter): remove "pointer" from doc string.
4880
702551e6
HWN
4881 * gc.h (SCM_GC_CELL_TYPE): SCM_GC_CELL_TYPE uses SCM_GC_CELL_OBJECT.
4882
4883 * goops.h (SCM_NUMBER_OF_SLOTS): don't SCM_UNPACK the result.
4884
4885 * backtrace.c ("display_backtrace_body"): SCM_PACK before SCM_EQ_P
4886 (display_frame): idem.
4887 (display_backtrace_file_and_line): idem.
4888
4889 * tags.h (SCM_UNPACK): stricter typechecking on SCM_UNPACK
4890 arguments.
4891
3cd23214
KR
48922004-03-26 Kevin Ryde <user42@zip.com.au>
4893
88a7ae1f
KR
4894 * filesys.c (scm_getcwd, scm_readlink): Avoid memory leak on errors.
4895
3cd23214
KR
4896 * numbers.c (scm_modulo): For inum/big and big/big, remove test of
4897 big==0 since that never occurs.
4898
4899 * numbers.c, numbers.h (scm_modulo_expt): Renamed from
4900 scm_modular_expt, matching scheme level name `modulo-expt'.
4901
4902 * numbers.c (scm_modular_expt): Return a negative remainder for a
4903 negative divisor, the same as `modulo' does.
4904
49052004-03-26 Eric Hanchrow <offby1@blarg.net>
4906
4907 * numbers.c, numbers.h (scm_modular_expt): New function.
4908
2926035a
KR
49092004-03-25 Kevin Ryde <user42@zip.com.au>
4910
4911 * numbers.c (scm_min, scm_max): Correction to big/real and real/big,
4912 return inexact as required by r5rs.
4913
62360b89
DH
49142004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4915
4916 * eval.c: Separated some definitions relevant for execution from
4917 the memoization part of the file.
4918
4919 (copy_tree): New static function
4920
4921 (scm_copy_tree): Rewritten to fix two kinds or bugs: First, cyclic
4922 structures are detected now and will lead to an exception instead
4923 of forcing guile to run in an endless loop, using up all the
4924 system's memory. Second, arrays in the cdr of an improper list
4925 are now copied. See the new test cases in eval.test.
4926
49272004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
b28f5b3c
DH
4928
4929 * posix.c (scm_gethostname): Make sure len is initialised before
4930 it is used. Restructured to (hopefully) represent possible
4931 configurations more clearly in the code. Added unwind handler.
4932
3bd3bae8
KR
49332004-03-23 Kevin Ryde <user42@zip.com.au>
4934
4935 * posix.c (scm_gethostname): Use sysconf(_SC_HOST_NAME_MAX) and/or
4936 MAXHOSTNAMELEN when available.
4937
254bf78d
MV
49382004-03-21 Marius Vollmer <mvo@zagadka.de>
4939
4940 * read.c (skip_scsh_block_comment): Also recognize '\r' as a line
4941 terminator. Rewritten the logic as a state machine, I must have
4942 been doing too much VHDL lately...
4943
4944 * eval.c (scm_ceval, scm_deval): Explicitely evaluate ports to
4945 themselves. Thanks to Han-Wen Nienhuys!
4946
4947 * list.c: Changed docstrings so that they no longer talk about
4948 returning 'pointers' to something.
4949
009c34a2
HWN
49502004-03-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
4951
4952 * gc.c: remove set_debug_cell_accesses! when
4953 SCM_DEBUG_CELL_ACCESSES is not defined. Scheme source code should
4954 use (if (defined? 'set-debug-cell-accesses!) .. ) to switch on
4955 debugging conditionally.
4956
54733c95
KR
49572004-03-21 Kevin Ryde <user42@zip.com.au>
4958
4959 * stime.c (scm_gmtime): Use gmtime_r when available, for thread safety.
4960
bbaf8747
KR
49612004-03-20 Kevin Ryde <user42@zip.com.au>
4962
4963 * posix.c (scm_gethostname): Preserve errno across free() call.
4964
726f82e7
HWN
49652004-03-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
4966
4967 * gc-card.c (sweep_card): use SCM_GC_SET_CELL_WORD for setting
4968 free cells.
4969
e1350d6a
KR
49702004-03-14 Kevin Ryde <user42@zip.com.au>
4971
4972 * stime.c: Define _GNU_SOURCE for strptime prototype from glibc.
4973 (strptime): Use HAVE_DECL_STRPTIME for when to give own prototype.
4974
62055253
KR
49752004-03-07 Kevin Ryde <user42@zip.com.au>
4976
4977 * stime.c (scm_gmtime): Return bd_time->tm_zone when available, rather
4978 than "GMT" always.
4979 (filltime): Make zname parameter "const".
4980
92e64b87
MD
49812004-03-03 Mikael Djurfeldt <mdj@chunk.mit.edu>
4982
4983 * threads.c, threads.h (scm_c_scm2thread): New function.
4984
004ad931
KR
49852004-02-29 Kevin Ryde <user42@zip.com.au>
4986
4987 * numbers.c (guile_ieee_init): Use C99 INFINITY and NAN when
4988 available. Test HAVE_DINFINITY and HAVE_DQNAN for those globals, in
4989 particular don't assume "defined (__alpha__) && ! defined (linux)"
4990 means OSF. Remove "SCO" code, which was not really SCO specific and
4991 which John W. Eaton advises should be long past being needed.
4992
4993 * posix.c (scm_execl, scm_execlp, scm_execle): Avoid memory leak under
4994 error throw.
4995
72ea45ac
KR
49962004-02-24 Kevin Ryde <user42@zip.com.au>
4997
4998 * posix.c (scm_cuserid): Use a private result buffer, for thread safe.
4999
2af0602e
KR
50002004-02-22 Kevin Ryde <user42@zip.com.au>
5001
5002 * numbers.c (scm_max, scm_min): For one arg, dispatch to generic for
5003 complex, same as for two args. (Handle only inum, big, real, frac).
5004
b114eafe
KR
50052004-02-21 Kevin Ryde <user42@zip.com.au>
5006
5007 * posix.c (scm_crypt): Use new HAVE_CRYPT.
5008 (<crypt.h>): Remove HAVE_LIBCRYPT condition.
db752bb5 5009 Reported by Andreas Voegele.
b114eafe 5010
1e55d288
NJ
50112004-02-20 Neil Jerram <neil@ossau.uklinux.net>
5012
5013 * list.c (scm_list_n): Add #if SCM_DEBUG_CELL_ACCESSES_P around
5014 validation.
5015
5016 * read.c (scm_lreadparen): Removed.
5017 (scm_lreadparen1): Renamed scm_i_lreadparen.
5018
eb741d98
HWN
50192004-02-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
5020
5021 * list.c (scm_list_n): validate non-immediate arguments;
5022 this will catch forgotten a SCM_UNDEFINED.
5023
4e28ba5e
MV
50242004-02-18 Marius Vollmer <mvo@zagadka.de>
5025
5026 * gc.h (scm_gc_cells_collected): Removed duplicated declaration.
5027 Thanks to Bill Schottstaedt!
5028
5029 * socket.h (scm_gethost): Removed prototype it is already in
5030 "net_db.h". Thanks to Bill Schottstaedt!
5031
ef861ead
KR
50322004-02-18 Kevin Ryde <user42@zip.com.au>
5033
5034 * num2integral.i.c (INTEGRAL2BIG): WORDS_BIGENDIAN not right for word
5035 order parameter to mpz_import, in fact with just one word there's no
5036 order to worry about at all.
5037
5038 * numbers.c (scm_num_eq_p): For real==frac, complex==frac, frac==real
5039 and frac==complex, make an exact comparison rather than converting
5040 with fraction2double.
5041
5042 * posix.c, putenv.c, stime.c (environ): Use _NSGetEnviron in Darwin
5043 shared library, since environ is not directly available there.
5044
5045 * script.c (scm_shell_usage): Print to stdout for --help, per GNU
5046 standard.
5047
5048 * stime.c (scm_localtime, scm_gmtime, scm_mktime): Provide a default
5049 errno EINVAL in case localtime and gmtime don't set it.
5050 (scm_mktime, scm_strptime): Forcibly use errno EINVAL for our
5051 SCM_SYSERROR, since mktime and strptime generally don't set errno.
5052
ae43d08e 50532004-02-16 Kevin Ryde <kevin@swox.se>
292dfa7f 5054
c9ea6462
KR
5055 * gc-malloc.c (scm_done_malloc, scm_done_free): Allow negative sizes,
5056 which were permitted in the past for these.
5057
292dfa7f
KR
5058 * num2float.i.c (NUM2FLOAT): Expand isfinite to !xisinf, as per
5059 previous change to numbers.c.
5060
ae43d08e
KR
5061 * script.c (scm_shell_usage): Print bug-guile email address, as per
5062 GNU standard. Reported by Han-Wen Nienhuys.
5063
711a9fd7
MD
50642004-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5065
5066 * unif.c (scm_make_uve): Removed local variable and simplified
5067 code in order to avoid compiler used uninitialized warnings.
5068
5069 * hashtab.c, hashtab.h (scm_hash_map_to_list): Renamed from
5070 scm_hash_map.
5071 (scm_hash_fold): Use scm_call_3 directly in the call to
5072 scm_internal_hash_fold instead of going via fold_proc (which is
5073 now removed).
5074 (scm_hash_for_each): Use a trampoline +
5075 scm_internal_hash_for_each_handle.
5076 (scm_internal_hash_for_each_handle, scm_hash_for_each_handle): New
5077 functions.
5078
3da7f6b2
KR
50792004-02-12 Kevin Ryde <user42@zip.com.au>
5080
344a212f
KR
5081 * ports.c (scm_port_line): In docstring, note first line is 0.
5082 (scm_set_port_line_x): In docstring, note first line is 0.
5083 (scm_port_column): In docstring, there's no default to current input
5084 port, and remove shared port-line @defun.
5085 (scm_set_port_column_x): In docstring, there's no default to current
5086 input port, note first column is 0, remove shared set-port-line!
5087 @defun.
5088
3da7f6b2
KR
5089 * ramap.c (scm_array_fill_x): For fvect and dvect, use scm_num2dbl to
5090 convert args the same way that array-set! does.
5091
5092 * unif.c (scm_make_uve, scm_array_p): Allow fraction 1/3 as prototype
5093 for dvect.
5094 (scm_array_p): Add missing "break"s in switch, fix llvect test look
5095 for "l" not "s", fix dvect to be false for singp(prot) since such a
5096 value is for fvect.
5097 (scm_array_prototype): Return 1/3 for dvect, rather than 0.33..33.
88531a74
KR
5098 (exactly_one_third): New variable.
5099 (scm_init_unif): Initialize it.
3da7f6b2 5100
cd21f5eb
NJ
51012004-02-10 Neil Jerram <neil@ossau.uklinux.net>
5102
5103 * read.c (scm_read_opts): Change `escaped-parens' to
5104 `elisp-strings'.
5105
16353acc
NJ
51062004-02-08 Neil Jerram <neil@ossau.uklinux.net>
5107
5108 * read.c (scm_read_opts): New opts `elisp-vectors' and
5109 `escaped-parens'.
5110 (s_vector): New.
5111 (scm_lreadr): Use scm_lreadparen1 instead of scm_lreadparen. Make
5112 handling of elisp vector syntax dependent on SCM_ENABLE_ELISP and
5113 `elisp-vectors' option instead of SCM_ELISP_READ_EXTENSIONS.
5114 Allow "\(" and "\)" in strings when SCM_ENABLE_ELISP defined and
5115 `escaped-parens' option set.
5116 (scm_read_token): If elisp vector syntax active, disallow [ and ]
5117 in tokens.
5118 (scm_lreadparen): Rewrite as interface to scm_lreadparen1.
5119 (scm_lreadparen1): New.
5120
5121 * read.h: Remove conditionally compiled last arg to
5122 scm_lreadparen.
5123 (SCM_ELISP_VECTORS_P, SCM_ESCAPED_PARENS_P): New.
5124
f62b9dff
HWN
51252004-01-23 Han-Wen Nienhuys <hanwen@xs4all.nl>
5126
5127 * eval.c (m_expand_body): remove stray variable new_body.
5128
ef5b6b61
MV
51292004-01-22 Marius Vollmer <mvo@zagadka.de>
5130
5131 * eval.c (m_expand_body): Rewrite the expression in place (by
5132 overwriting FORMS) also when a letrec is constructed, not only
5133 when no definitions are found. Do not return rewritten expression
5134 to emphasize the in-place rewriting. Changed all users.
5135
7eec4c37
HWN
51362004-01-19 Han-Wen Nienhuys <hanwen@xs4all.nl>
5137
5138 * gc.c: add protected_object_count, a number that is dumped from
5139 gc_stats()
5140
25ffbdac
MV
51412004-01-11 Marius Vollmer <mvo@zagadka.de>
5142
5143 * dynwind.h, dynwind.c (scm_frame_unwind,
5144 scm_frame_unwind_handler): Renamed and changed all uses.
5145 (scm_frame_rewind, scm_frame_rewind_handler): Likewise.
5146
08568c95
KR
51472004-01-11 Kevin Ryde <user42@zip.com.au>
5148
5149 * unif.c (scm_bit_count, scm_bit_position, s_scm_bit_set_star_x,
5150 s_scm_bit_count_star, s_scm_bit_invert_x): Clarify docstrings, as per
5151 changes made to scheme-compound.texi.
5152
5565749c
MV
51532004-01-10 Marius Vollmer <mvo@zagadka.de>
5154
25ffbdac
MV
5155 * print.c (scm_print_symbol_name): Handle #{`foo}#, #{,foo}#,
5156 #{.}#, and all numeric strings specially. Thanks to Paul Jarc!
5157
5158 * guile-snarf.in: Use mkdir to create a unique temporary directory
5159 that we can safely use. Thanks to Stefan Nordhausen!
5565749c 5160
fc6bb283
MV
51612004-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5162
7ebccde8
MV
5163 * dynwind.h, dynwind.c (scm_i_dowinds): Removed 'explicit'
5164 argument since it is always zero now. Changed all callers.
5165 Removed code for handling fluids.
96e3b2f8
MV
5166
5167 * fluids.c (scm_c_with_fluids): Use frames instead of adding to
5168 the wind chain explicitely. Use scm_c_with_fluid for the common
5169 case of only one fluid.
5170 (scm_with_fluid): New.
5171 (scm_c_with_fluid): Use frames instead of scm_c_with_fluids.
5172
fc6bb283 5173 * fluids.h, fluids.c (scm_frame_fluid): New.
96e3b2f8
MV
5174 (scm_with_fluid): New.
5175 (scm_i_swap_fluids, scm_i_swap_fluids_reverse): Removed.
fc6bb283
MV
5176
5177 * dynwind.c (scm_frame_end): Do not use scm_i_dowinds. Instead,
5178 do the unwinding directly. It is simple enough.
5179
5180 * dynwind.h, dynwind.c: Did the following renamings:
5181 scm_begin_frame -> scm_frame_begin,
5182 scm_end_frame -> scm_frame_end,
5183 scm_on_unwind -> scm_frame_unwind,
5184 scm_on_rewind -> scm_frame_rewind,
5185 scm_on_unwind_with_scm -> scm_frame_unwind_with_scm,
5186 scm_on_rewind_with_scm -> scm_frame_rewind_with_scm.
5187 Changed all uses.
5188
5189 * aync.h, async.c: Did the follwing renamings:
5190 scm_with_blocked_asyncs -> scm_frame_block_asyncs,
5191 scm_with_unblocked_asyncs -> scm_frame_unblock_asyncs.
5192 Changed all uses.
5193
5194 * ports.h, ports.c: Did the follwing renamings:
5195 scm_with_current_input_port -> scm_frame_current_input_port,
5196 scm_with_current_output_port -> scm_frame_current_output_port,
5197 scm_with_current_error_port -> scm_frame_current_error_port.
5198 Changed all uses.
5199
298ab996
KR
52002004-01-07 Kevin Ryde <user42@zip.com.au>
5201
5202 * numbers.c (s_bignum): Remove, not used since gmp bignums.
5203 Reported by Richard Todd.
5204
ba40113e
KR
5205 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 12*sizeof(long),
5206 for the benefit of powerpc-apple-darwin5.5. Reported by Richard Todd.
5207
298ab996
KR
5208 * unif.c (scm_aind): Test SCM_CONSP rather than !SCM_NULLP while
5209 traversing the args list, fixes segv if an improper list is given.
5210 Reported by Rouben Rostamian.
5211
aacff585
MV
52122004-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5213
5214 * ports.c (swap_ports, scm_with_current_foo_port): Do not allocate
5215 swap_data on stack, use a 'malloc obj'.
5216
5217 * fluids.h, fluids.c (scm_make_initial_fluids, scm_copy_fluids,
5218 scm_swap_fluids, scm_swap_fluids_reverse): Renamed to
5219 scm_i_... since they are internal. Changed all uses.
5220
5221 * dynwind.c (frame_print): Removed, use the default printer.
5222 (WINDER_F_MARK, WINDER_MARK_P, winder_mark): New.
5223 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New. Use above
5224 to protect SCM values.
5225
5226 * dynwind.h (SCM_F_WIND_EXPLICITELY,
5227 SCM_F_WIND_EXPLICITLY): It's "explicitly" not "explicitely", damn.
5228 Changed all uses.
5229 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New.
5230
49c00ecc
MV
52312004-01-05 Marius Vollmer <mvo@zagadka.de>
5232
5233 * ports.h, ports.c (scm_with_current_input_port,
5234 scm_with_current_output_port, scm_with_current_error_port): New.
5235
5236 * async.h, async.c (scm_with_blocked_asyncs,
5237 scm_with_unblocked_asyncs): New.
5238
dab514a8
MV
52392004-01-03 Marius Vollmer <mvo@zagadka.de>
5240
5241 * dynwind.h, scm_dynwind.c (scm_t_frame_flags, scm_t_wind_flags,
5242 scm_begin_frame, scm_end_frame, scm_on_unwind, scm_on_rewind):
5243 New.
5244 (scm_dowinds, scm_i_dowinds): scm_dowinds has been renamed to
5245 scm_i_dowinds and extended to handle frames and to invoke a 'turn'
5246 function when the outermost wind point has been reached. The
5247 latter is used to copy a continuation stack at the right time.
5248 scm_dowinds remains available.
5249 (SCM_GUARDSP, SCM_BEFORE_GUARD, SCM_AFTER_GUARD, SCM_GUARD_DATA,
5250 tc16_guard, guards_print): Removed.
5251 (scm_internal_dynamic_wind): Reimplemented using frames.
5252
5253 * continuations.c (copy_stack): New, do only the stack copying
5254 part of copy_stack_and_call.
5255 (copy_stack_and_call): Copy the stack after unwinding and before
5256 rewinding.
5257 (scm_dynthrow): Do not call scm_dowinds, this is now done by
5258 copy_stack_and_call.
5259
441a25d9
KR
52602004-01-04 Kevin Ryde <user42@zip.com.au>
5261
5262 * numbers.c (scm_less_p): Don't convert frac to float for compares,
dab514a8 5263 can give bad results due to rounding.
441a25d9 5264
e0499207
KR
5265 * stime.c (scm_current_time, scm_gettimeofday): Add a comment about
5266 setzone/restorezone protection for DOS.
5267
89fcf1b4
MV
52682003-12-26 Marius Vollmer <mvo@zagadka.de>
5269
5270 * gen-scmconfig.h.in, gen-scmconfig.c: Arrange for scm_t_intmax
5271 and scm_t_uintmax to be defined in scmconfig.h
5272
caff34d4
KR
52732003-12-03 Kevin Ryde <user42@zip.com.au>
5274
5275 * numbers.c (scm_less_p): Remove spurious xisnan from frac+big case.
5276
5277 * numbers.c (scm_make_ratio): Check for numerator equal to
5278 SCM_MOST_NEGATIVE_FIXNUM and bignum denominator the negative of that,
5279 giving integer -1.
5280
5281 * numbers.c (scm_real_part): Return fraction unchanged rather than
5282 converting to flonum.
5283
2d0b85ac
DH
52842003-11-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
5285
5286 * modules.c (module_variable): Fixed (and thus simplified) the
5287 definition of SCM_BOUND_THING_P to reflect the fact that since
5288 after the 1.4 series of guile, obarrays only hold variable
5289 objects.
5290
2297981d
MV
52912003-11-30 Marius Vollmer <mvo@zagadka.de>
5292
5293 * numbers.c (scm_logand): It's "#b...", not "#\b...".
5294
5295 From Paul Jarc:
5296
5297 * read.c (scm_lreadr): Signal an error for invalid escape
5298 sequences in strings. Code cleanups too.
5299
5300 * print.c (scm_iprin1): use \xNN hexadecimal sequences when
5301 writing control characters in strings.
5302
53032003-11-21 Marius Vollmer <mvo@zagadka.de>
5304
5305 * ports.c (scm_drain_input): Bug fix: only access the port after
5306 checking that it indeed is one.
5307
5c264007
DH
53082003-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
5309
5310 * eval.c (s_bad_define): New static identifier.
5311
5312 (m_body): Fixed comment.
5313
5314 (scm_m_define): Don't generate memoized code for definitions that
5315 are not on the top level. As a consequence, no memoized code at
5316 all is generated for definitions any more: Top level definitions
5317 are executed immediately during memoization and internal
5318 definitions are handled separately in m_expand_body.
5319
5320 (scm_unmemocopy, unmemocopy): Removed code for unmemoizing
5321 definitions. Consequently, there is no unmemoizing code any more
5322 that might modify the environment. Thus, the old scm_unmemocopy
5323 is removed and the old unmemocopy is renamed to scm_unmemocopy.
5324
5325 (SCM_CEVAL): The SCM_IM_DEFINE keyword can no longer occur in
5326 memoized code. Call EVALCAR for continuations. Prefer !SCM_NULLP
5327 over SCM_NIMP in places, where the argument is known to be part of
5328 a proper list.
5329
018d4730
KR
53302003-11-21 Kevin Ryde <user42@zip.com.au>
5331
5332 * numbers.c (scm_abs): Allocate a new real only for negatives, as done
5333 for bignums.
5334
5335 * numbers.c (scm_bit_extract): Use mpz functions, rearrange inum case
5336 to share some shifting.
5337
5338 * numbers.c (scm_integer_expt): Don't mpz_init after scm_i_clonebig or
5339 scm_i_mkbig, since they do so already. Don't mpz_clear a bignum SCM,
5340 since gc does this.
5341
4bca30d8
MV
53422003-11-19 Marius Vollmer <mvo@zagadka.de>
5343
fb16d26e
MV
5344 * numbers.c (scm_make_ratio): Rewritten to have a simpler
5345 structure. Previously, not all cases with a negative denominator
5346 were covered.
5347
4bca30d8
MV
5348 * numbers.c (mem2decimal_from_point): use scm_divide instead of
5349 scm_divide2real when forming the fractional part. This allows
5350 "#e1.2" to yield 6/5.
5351
5352 * numbers.c (scm_i_fraction_equalp): Do not treat the return value
5353 of scm_equal_p as a C boolean, use SCM_FALSEP. Previously, all
5354 fractions were equal to each other regardless of value. Ooops.
5355
5356 * numbers.c (scm_rationalize): Return an inexact result when given
5357 inexact arguments.
5358
5359 * numbers.c (scm_exact_p, scm_inexact_p): Throw error for
5360 non-numbers.
5361
bdf26b60
MV
53622003-11-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5363
5364 Support for exact fractions from Bill Schottstaedt! Thanks!
5365
5366 * print.c (scm_iprin1): Handle fractions.
5367
5368 * objects.h (scm_class_fraction): New.
5369 * objects.c (scm_class_fraction): New.
5370 (scm_class_of): Handle fractions.
5371
5372 * hash.c (scm_hasher): Handle fractions.
5373
5374 * numbers.c: New code for handling fraction all over the place.
5375 (scm_odd_p, scm_even_p): Handle inexact integers.
5376 (scm_rational_p): New function, same as scm_real_p.
5377 (scm_round_number, scm_truncate_number, scm_ceiling, scm_floor):
5378 New exact functions that replace the inexact 'dsubr'
5379 implementations.
5380 (scm_numerator, scm_denominator): New.
5381
5382 * numbers.h (SCM_NUMP): Recognize fractions.
5383 (SCM_FRACTIONP, SCM_SLOPPY_FRACTIONP, SCM_FRACTION_NUMERATOR,
5384 SCM_FRACTION_DENOMINATOR, SCM_FRACTION_SET_NUMERATOR,
5385 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
5386 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
5387 SCM_FRACTION_REDUCED): New.
5388 (scm_floor, scm_ceiling, scm_truncate_number, scm_round_number):
5389 New prototypes.
5390 (scm_make_ratio, scm_rationalize, scm_numerator, scm_denominator,
5391 scm_rational_p): New prototypes.
5392 (scm_i_dbl2num, scm_i_fraction2double, scm_i_fraction_equalp,
5393 scm_i_print_fraction): New prototypes.
5394
5395 * goops.c (create_standard_classes): Create "<fraction>" class.
5396
5397 * gc-mark.c (scm_gc_mark_dependencies): Handle fractions.
5398
5399 * gc-card.c (scm_i_sweep_card): Include scm_tc16_fraction as a
5400 case in the switch, but do nothing for now.
5401
5402 * eval.c (SCM_CEVAL, SCM_APPLY, call_dsubr_1): Convert fractions
5403 to doubles when calling 'dsubr' functions.
5404
5405 * eq.c (scm_eqv_p, scm_equal_p): Handle fractions.
5406
28fda544
RB
54072003-11-18 Rob Browning <rlb@defaultvalue.org>
5408
5409 * gen-scmconfig.c (main): remove public definition of
5410 SCM_SIZEOF___INT64 and SCM_SIZEOF_UNSIGNED___INT64 and add
5411 direct typedef of long_long and ulong_long inside deprecated block
5412 when appropriate.
5413
5414 * deprecated.h: move long_long and ulong_long definitions to
5415 gen-scmconfig.c so that we don't need to add SCM_SIZEOF___INT64
5416 and SCM_SIZEOF_UNSIGNED___INT64 to the public namespace.
5417
b58e7420
MV
54182003-11-17 Marius Vollmer <mvo@zagadka.de>
5419
9a1d7d7c
MV
5420 * hash.c (scm_string_hash): New hashing algorithm that takes the
5421 complete string into account.
5422
b58e7420
MV
5423 * eval.c (scm_m_generalized_set_x): Macroexpand the target when it
5424 is a list. This allows (@ ...) to work with set!.
9a1d7d7c
MV
5425 (scm_m_generalized_set_x): Use ASSERT_SYNTAX_2 instead of
5426 SCM_ASSYNT.
b58e7420
MV
5427
5428 * script.c (scm_compile_shell_switches): Use scm_c_read_string for
5429 the "-e" option instead of scm_str2symbol. This allows things
5430 like (@ ...) to be specified for the entry point.
5431
461bffb1
DH
54322003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5433
5434 * eval.c (scm_m_letstar): Create memoized code in place to
5435 minimize consing.
5436
6f81708a
DH
54372003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5438
5439 * eval.c (s_splicing): Commented and reformulated.
5440
5441 (lookup_global_symbol, lookup_symbol): New static functions.
5442
5443 (s_test, s_bindings, s_duplicate_bindings, s_variable): Removed.
5444
5445 (try_macro_lookup, literal_p): Use lookup_symbol instead of
5446 creating a temporary pair for scm_lookupcar.
5447
5448 (scm_unmemocar, unmemocar): Renamed scm_unmemocar to unmemocar,
5449 created deprecated wrapper function scm_unmemocar.
5450
5451 (SCM_VALIDATE_NON_EMPTY_COMBINATION, scm_sym_else,
5452 scm_sym_unquote, scm_sym_uq_splicing, scm_sym_enter_frame,
5453 scm_sym_apply_frame, scm_sym_exit_frame, scm_sym_trace, f_apply,
5454 undefineds, sym_three_question_marks): Moved around without
5455 modifications.
5456
5457 * eval.c, eval.h (scm_macroexp, scm_unmemocar): Deprecated.
5458
910b5125
DH
54592003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
5460
5461 * eval.c (try_macro_lookup, expand_user_macros, is_system_macro_p,
5462 m_expand_body, scm_m_expand_body): Grouped together with m_body.
5463 No further modifications.
5464
c86c440b
DH
54652003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
5466
5467 * eval.c (s_mixed_body_forms): New static identifier.
5468
5469 (canonicalize_define, scm_m_define): The check for a bad
5470 expression is performed in canonicalize_define now.
5471
5472 (try_macro_lookup, expand_user_macros, is_system_macro_p): New
5473 static helper functions for m_expand_body.
5474
5475 (m_expand_body): Use ASSERT_SYNTAX to signal syntax errors. Only
5476 expand user defined macros. Fixed handling of the definition/
5477 expression boundary. Fixed handling of definitions grouped with
5478 'begin. Use canonicalize_define to expand definitions.
5479
3890131a
MV
54802003-11-13 Marius Vollmer <mvo@zagadka.de>
5481
b58e7420
MV
5482 * read.c (scm_lreadr): detect EOF after backslash, and interpret
5483 \xNN hexadecimal sequences. From Paul Jarc, thanks!
5484
5df36eac
MV
5485 * snarf.h (SCM_SMOB, SCM_GLOBAL_SMOB, SCM_SMOB_MARK,
5486 SCM_GLOBAL_SMOB_MARK, SCM_SMOB_FREE, SCM_GLOBAL_SMOB_FREE,
5487 SCM_SMOB_PRINT, SCM_GLOBAL_SMOB_PRINT, SCM_SMOB_EQUALP,
5488 SCM_GLOBAL_SMOB_EQUALP, SCM_SMOB_APPLY, SCM_GLOBAL_SMOB_APPLY):
5489 New macros from Paul Jarc. Thanks!
5490
3890131a
MV
5491 * gc_os_dep.c (scm_get_stack_base): Provide a definition that
5492 return NULL when the machine type is unknown. Previously,
5493 gc_os_dep.c would refuse to compile.
5494
430b8401
DH
54952003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
5496
5497 * eval.c (scm_m_body, m_body, scm_m_lambda, memoize_named_let,
5498 scm_m_let, scm_m_letrec, m_expand_body): Renamed static function
5499 scm_m_body to m_body.
5500
328dc9a3
DH
55012003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
5502
5503 * eval.c, eval.h (scm_m_expand_body, m_expand_body): Deprecated
5504 public use of scm_m_expand_body in eval.h. In eval.c, renamed
5505 scm_m_expand_body to m_expand_body and made it static. Added
5506 deprecated wrapper scm_m_expand_body.
5507
5508 (scm_eval_body, SCM_CEVAL, SCM_APPLY): Use m_expand_body instead
5509 of scm_m_expand_body.
5510
c2337a61
KR
55112003-11-09 Kevin Ryde <user42@zip.com.au>
5512
5513 * dynl.c (scm_dynamic_unlink): Need scm_list_1 on error message
5514 argument. Reported by Mike Gran.
5515
ced8edb0
DH
55162003-11-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
5517
5518 * eval.c (s_missing_body_expression): New static identifier.
5519
5520 (s_body): Removed.
5521
5522 (scm_m_expand_body): Fixed core dump when passing a body with
5523 defines, but without expressions (see additions to syntax.test).
5524 Use ASSERT_SYNTAX to signal syntax errors.
5525
0f572ba7
DH
55262003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5527
5528 * eval.c (canonicalize_define): New static helper function.
5529
5530 (memoize_define, canonicalize_define): Extract handling of
5531 function currying to canonicalize_define.
5532
2510c810
DH
55332003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5534
5535 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
5536 Make sure that error checking in debug mode is not worse than in
5537 standard mode.
5538
34adf7ea
DH
55392003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5540
5541 * eval.c (scm_m_body, scm_m_lambda): Documentation strings are not
5542 handled in scm_m_body any more, but rather in scm_m_lambda.
5543
5544 (scm_m_body, memoize_named_let, scm_m_let, scm_m_letstar,
5545 scm_m_letrec, scm_m_expand_body): Check for validity is done by
5546 calling functions of scm_m_body.
5547
5548 (scm_m_lambda): Avoid unnecessary consing when creating the
5549 memoized code.
5550
89bff2fc
DH
55512003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5552
5553 * eval.c (s_expression): Added comment.
5554
5555 (s_empty_combination, error_unbound_variable): New static
5556 identifiers.
5557
5558 (SCM_VALIDATE_NON_EMPTY_COMBINATION, SCM_EVALIM2, scm_lookupcar1):
5559 Use ASSERT_SYNTAX, syntax_error or error_unbound_variable to
5560 signal syntax errors.
5561
5562 (SCM_CEVAL): Separated handling of evaluator bytecodes and other
5563 scheme objects.
5564
60a49842
DH
55652003-10-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5566
5567 * eval.c (unmemocar, sym_three_question_marks, scm_unmemocar):
5568 Grouped together with unmemocopy, without modifications.
5569
5570 (build_binding_list, unmemocopy): Renamed names of list arguments
5571 and variables to reflect the actual order of the list elements.
5572
70c1c108
DH
55732003-10-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
5574
5575 * eval.c (s_defun): New static identifier.
5576
5577 (scm_m_nil_cond, scm_m_atfop, scm_m_undefine): Add comments. Use
5578 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
5579 when creating the memoized code.
5580
0ee39677
KR
55812003-10-19 Kevin Ryde <user42@zip.com.au>
5582
5583 * numbers.c (scm_ash): Revise docstring as per recent update to manual.
5584
5585 * numbers.c (scm_i_big2dbl): Rewrite, carefully rounding to "closest"
5586 in accordance with R5RS, which just mpz_get_d doesn't really give.
5587
9a848baf
DH
55882003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5589
5590 * eval.c (s_bad_slot_number): New static identifier.
5591
5592 (scm_m_atslot_ref, scm_m_atslot_set_x): Use ASSERT_SYNTAX to
5593 signal syntax errors. Avoid unnecessary consing when creating the
5594 memoized code.
5595
da48db62
DH
55962003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5597
5598 * eval.c (scm_m_cont, scm_m_at_call_with_values,
5599 scm_m_generalized_set_x): Use ASSERT_SYNTAX to signal syntax
5600 errors. Avoid unnecessary consing when creating the memoized
5601 code.
5602
5603 (scm_m_generalized_set_x): Let scm_m_set_x handle the R5RS
5604 standard case. Make sure line and file information are copied to
5605 every created expression.
5606
82b3e2c6
DH
56072003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5608
5609 * eval.c (scm_m_set_x, scm_m_apply, scm_m_atbind): Use
5610 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
5611 when creating the memoized code.
5612
5613 (scm_m_atbind): Reversed the order, in which the init expressions
5614 are stored and executed. The order of execution is now equal to
5615 the order in which the initializers of the let-forms are executed.
5616 Use check_bindings and transform_bindings.
5617
5618 (SCM_CEVAL): Eliminated SCM_NIMP in favor of more appropriate
5619 !SCM_NULLP. Added some comments.
5620
21628685
DH
56212003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5622
5623 * eval.c: Sorted include files alphabetically.
5624
5625 (scm_m_begin): Added comment.
5626
5627 (scm_m_or): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5628 unnecessary consing when creating the memoized code.
5629
5630 (iqq, scm_m_quasiquote, scm_m_quote): Use ASSERT_SYNTAX to signal
5631 syntax errors. Be more specific about the kind of error that was
5632 detected.
5633
5634 (scm_m_quote, unmemocopy): As an optimization, vector constants
5635 are now inserted unquoted into the memoized code. During
5636 unmemoization the quotes are added again to provide syntactically
5637 correct code.
5638
d6754c23
DH
56392003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5640
5641 * eval.c (scm_m_let, scm_m_letstar, scm_m_letrec,
5642 scm_m_expand_body, check_bindings): Extracted syntax checking of
5643 bindings to new static function check_bindings.
5644
5645 (scm_m_let, memoize_named_let): Extracted handling of named let to
5646 new static function memoize_named_let.
5647
5648 (transform_bindings, scm_m_let, scm_m_letstar, scm_m_letrec): Use
5649 ASSERT_SYNTAX to signal syntax errors. Be more specific about the
5650 kind of error that was detected. Avoid use of SCM_CDRLOC. Avoid
5651 unnecessary consing when creating the memoized code.
5652
03a3e941
DH
56532003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5654
5655 * eval.c (s_bad_formals, s_bad_formal, s_duplicate_formal): New
5656 static identifiers.
5657
5658 (s_clauses, s_formals, s_duplicate_formals): Removed.
5659
5660 (scm_m_lambda): Use ASSERT_SYNTAX to signal syntax errors. Be more
5661 specific about the kind of error that was detected. Prepare for
5662 easier integration of changes for separated memoization.
5663
da48db62 56642003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
4610b011
DH
5665
5666 * eval.c (s_duplicate_binding): New static identifier.
5667
5668 (scm_m_case): Call scm_c_memq instead of implementing it inline.
5669
5670 (scm_m_define): Added comment about how we check for duplicate
5671 formals.
5672
5673 (scm_m_do): Added check for duplicate bindings.
5674
5675 (scm_m_if): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5676 unnecessary consing when creating the memoized code.
5677
5678 (scm_c_improper_memq, c_improper_memq, scm_m_lambda): Renamed
5679 scm_c_improper_memq to c_improper_memq, since it is not exported.
5680
5681 (transform_bindings): Call scm_c_memq rather than
5682 scm_c_improper_memq.
5683
5684 (SCM_CEVAL): Simplified handling of SCM_IM_IF forms.
5685
da48db62 56862003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
a954ce1d
DH
5687
5688 * eval.c (s_bad_bindings, s_bad_binding, s_bad_exit_clause): New
5689 static identifiers.
5690
5691 (scm_m_do): Use ASSERT_SYNTAX to signal syntax errors. Be more
5692 specific about the kind of error that was detected. Avoid use of
5693 SCM_CDRLOC. Avoid unnecessary consing when creating the memoized
5694 code, this way also making sure that file name, line number
5695 information etc. remain available.
5696
da48db62 56972003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
8ae95199
DH
5698
5699 * eval.c (memoize_as_thunk_prototype): New static function.
5700
5701 (scm_m_delay, scm_m_future): Use memoize_as_thunk_prototype.
5702 Avoid unnecessary consing when creating the memoized code.
5703
9b9a35b6
KR
57042003-10-12 Kevin Ryde <user42@zip.com.au>
5705
5706 * list.c (scm_append): Track argument number and use in error.
5707
cc56ba80
DH
57082003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5709
5710 * eval.c (s_missing_expression, s_bad_variable): New static
5711 identifiers.
5712
5713 (scm_m_define): Use ASSERT_SYNTAX to signal syntax errors. Prefer
5714 R5RS terminology for the naming of variables. Be more specific
5715 about the kind of error that was detected. Make sure file name,
5716 line number etc. are added to all freshly created expressions.
5717 Avoid unnecessary consing when creating the memoized code.
5718
609a8b86
DH
57192003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5720
5721 * eval.c (s_extra_expression, s_misplaced_else_clause,
5722 s_bad_cond_clause, s_missing_recipient): New static identifiers.
5723
5724 (s_extra_case_clause): Removed.
5725
5726 (scm_m_case, scm_m_cond): If a clause appears after an else
5727 clause, report a misplaced else clause.
5728
5729 (scm_m_cond): Use ASSERT_SYNTAX to signal syntax errors. Be more
5730 specific about the kind of error that was detected. Handle bound
5731 'else and '=>. Avoid unnecessary consing when creating the
5732 memoized code.
5733
5734 (scm_m_cond, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
5735 the syntactic keyword 'else and SCM_IM_ARROW to memoize the
5736 syntactic keyword '=>.
5737
58a2510b
DH
57382003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5739
5740 * eval.c (scm_m_case): Allow empty lists of case labels.
5741
2a6f7afe
DH
57422003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5743
5744 * tags.h (SCM_IM_ELSE, SCM_IM_ARROW): New memoizer codes.
5745
5746 * print.c (scm_isymnames): Add names for the new memoizer codes.
5747
5748 * eval.c (s_missing_clauses, s_bad_case_clause,
5749 s_extra_case_clause, s_bad_case_labels, s_duplicate_case_label,
5750 literal_p): New static identifiers.
5751
5752 (scm_m_case): Use ASSERT_SYNTAX to signal syntax errors. Be more
5753 specific about the kind of error that was detected. Check for
5754 duplicate case labels. Handle bound 'else. Avoid unnecessary
5755 consing when creating the memoized code.
5756
5757 (scm_m_case, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
5758 the syntactic keyword 'else.
5759
e6729603
DH
57602003-10-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
5761
5762 * eval.c (s_bad_expression, syntax_error_key, syntax_error,
5763 ASSERT_SYNTAX, ASSERT_SYNTAX_2): New static identifiers.
5764
5765 (scm_m_and): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5766 unnecessary consing when creating the memoized code.
5767
9ddeb776
KR
57682003-10-09 Kevin Ryde <user42@zip.com.au>
5769
5770 * numbers.c (scm_inexact_to_exact): Don't depend on what double->long
5771 cast gives for values bigger than a long, or for nan or inf.
5772
df5af69a
DH
57732003-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
5774
5775 * smob.h (scm_make_smob_type): Made the declaration match the
5776 definition.
5777
da0e6c2b
MV
57782003-10-07 Marius Vollmer <mvo@zagadka.de>
5779
5780 * goops.c, objects.h, smob.c, smob.h: Make type names char
5781 const * instead of char *. Thanks to Paul Jarc!
5782
591924eb
KR
57832003-10-02 Kevin Ryde <user42@zip.com.au>
5784
ff6ea7b9 5785 * strports.c (scm_call_with_output_string): scm_get_output_string
591924eb
KR
5786 rather than scm_strport_to_string, so as to guard against the port
5787 having been closed by the called procedure. Reported by Nic Ferrier.
5788
f03314f9
DH
57892003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5790
5791 * numbers.h (SCM_INEXACTP): Removed uses of SCM_TYP16S.
5792
5793 * tags.h, deprecated.h (SCM_TYP16S): Deprecated and moved from
5794 tags.h to deprecated.h.
5795
534c55a9
DH
57962003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5797
5798 This set of patches introduces a new tc7 code scm_tc7_number for
5799 numbers. Bignums, reals and complex numbers are turned from smobs
5800 into subtypes of scm_tc7_number.
5801
5802 * tags.h (scm_tc7_number): New.
5803
5804 * eq.c (scm_equal_p), eval.c (SCM_CEVAL), evalext.c
5805 (scm_self_evaluating_p), gc-card.c (scm_i_sweep_card), gc-mark.c
5806 (scm_gc_mark_dependencies), goops.c (create_smob_classes), hash.c
5807 (scm_hasher), numbers.c, numbers.h (SCM_NUMP), objects.c
5808 (scm_class_of), print.c (scm_iprin1), smob.c
5809 (scm_smob_prehistory): Don't handle bignums, reals and complex
5810 numbers as subtypes of scm_tc7_smob any more.
5811
5812 * numbers.h, tags.h (scm_tc16_big, scm_tc16_real,
5813 scm_tc16_complex): Moved definitions from tags.h to numbers.h.
5814
29c4382a
DH
58152003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5816
5817 * numbers.c (scm_make_complex), gc-card.c (scm_i_sweep_card): Use
5818 sizeof (scm_t_complex) to determine the memory size of the
5819 malloc'd area for complex numbers.
5820
47ae1f0e
DH
58212003-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
5822
5823 * numbers.c (scm_bigequal): Fixed.
5824
859b6b2f
MV
58252003-09-16 Marius Vollmer <mvo@zagadka.de>
5826
5827 * stime.c (scm_current_time): 'time' does not set errno so don't
5828 use SCM_SYSERROR for reporting errors.
5829
e17d318f
DH
58302003-09-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5831
5832 This set of patches eliminates the dependency between the
5833 implementation of evaluator specific memoization codes and special
5834 constants like #f, '() etc. ('flags'), which are not evaluator
5835 specific. The goal is to remove definitions of evaluator
5836 memoization codes completely from the public interface. This will
5837 make it possible to experiment more freely with optimizations of
5838 guile's internal representation of memoized code.
5839
5840 * objects.c (scm_class_of): Eliminate dependency on SCM_ISYMNUM.
5841
5842 * print.c (iflagnames): New array, holding the printed names of
5843 guile's special constants ('flags').
5844
5845 (scm_isymnames): Now holds only the printed names of the
5846 memoization codes.
5847
5848 (scm_iprin1): Separate the handling of memoization codes and
5849 guile's special constants.
5850
5851 * tags.h (scm_tc9_flag, SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA,
5852 SCM_IFLAGNUM): new
5853
5854 (scm_tc8_char, scm_tc8_iloc, SCM_BOOL_F, SCM_BOOL_T,
5855 SCM_UNDEFINED, SCM_EOF_VAL, SCM_EOL, SCM_UNSPECIFIED, SCM_UNBOUND,
5856 SCM_ELISP_NIL, SCM_IM_DISPATCH, SCM_IM_SLOT_REF,
5857 SCM_IM_SLOT_SET_X, SCM_IM_DELAY, SCM_IM_FUTURE,
5858 SCM_IM_CALL_WITH_VALUES, SCM_IM_NIL_COND, SCM_IM_BIND): Changed
5859 values.
5860
5861 (SCM_IFLAGP): SCM_IFLAGP now only tests for flags.
5862
5863 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Generalized to use the
5864 tc9 macros and scm_tc9_flag.
5865
eecac806
MV
58662003-09-15 Marius Vollmer <mvo@zagadka.de>
5867
5868 * posix.c (scm_setgroups): Check that the gid list is not too
5869 long. Thanks to Paul Jarc!
5870
22f2cf2d
DH
58712003-09-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
5872
5873 * tags.h: Reduced the number of short instructions from 14 to 13.
5874 The typecode of the former 14th short instruction is now used to
5875 represent long instructions. Changed some comments to reflect
5876 this fact.
5877
5878 (SCM_MAKISYM): ISYMs get a new tc7 code, namely the one that was
5879 previously used by SCM_IM_DEFINE.
5880
5881 (SCM_IM_DEFINE): Turned into a long instruction.
5882
5883 * eval.c (unmemocopy, SCM_CEVAL): Treat SCM_IM_DEFINE as a long
5884 instruction.
5885
5886 * eval.c (SCM_CEVAL): Since characters and iflags have now a tc7
5887 code that is separate from all instructions, one level of dispatch
5888 for long instructions can be eliminated.
5889
5890 * print.c (scm_isymnames): Removed some commented code.
5891
62f548e1
MV
58922003-09-12 Marius Vollmer <mvo@zagadka.de>
5893
97a61c5f
MV
5894 * __scm.h (SCM_FENCE): Use __memory_barrier with the Intel
5895 compiler on IA64.
5896
50e0ba57
MV
5897 * hashtab.h (scm_tc16_hashtable): Added "extern" declaration.
5898
5899 * modules.c (scm_module_reverse_lookup): Check that the obarray
5900 really is a hashtable and do nothing if not.
5901
62f548e1
MV
5902 * inline.h: Use "extern inline" only with GCC. Use "static
5903 inline" else.
5904
0d5e3480
DH
59052003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5906
5907 * numbers.h (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Removed uses
5908 of SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
5909
5910 * numbers.h, deprecated.h (SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP,
5911 SCM_SLOPPY_COMPLEXP): Deprecated and moved from numbers.h to
5912 deprecated.h.
5913
6b412e91
DH
59142003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5915
5916 * eq.c (scm_eqv_p, scm_equal_p): Removed uses of
5917 SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
5918
5919 * eq.c (scm_eqv_p, scm_equal_p): Reordered comparisons from
5920 0.0==some_expression to some_expression==0.0. The latter is
5921 better readable. The former is preferred by some people, since it
5922 leads to a compiler error when confusing == with =. However, when
5923 using gcc, a warning will be issued if in an if-statement an
5924 assigment appears. Since many Guile developers are using gcc,
5925 such errors will not remain unnoticed anyway. We can therefore
5926 focus on better readability.
5927
7e3b25bf
DH
59282003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5929
5930 * tags.h: Added description of Guile's type system. Removed some
5931 old and misleading comments.
5932
3ea39242
DH
59332003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5934
5935 * unit.c (scm_cvref): Eliminate unnecessary uses of SCM_NIMP,
5936 SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
5937
5d7d39ff
DH
59382003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5939
5940 * numbers.h (SCM_MAKINUM): Define in terms of scm_tc2_int.
5941
5942 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Define in terms of the
5943 respective SLOPPY macro.
5944
baa84a20
DH
59452003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5946
5947 * eq.c (scm_equal_p): Use SCM_TYP7 to check if an object is of
5948 type string, not SCM_TYP7S.
5949
ba15f500
KR
59502003-09-03 Kevin Ryde <user42@zip.com.au>
5951
5952 * numbers.c (scm_lognot): Correction to docstring, ones-complement not
5953 2s-complement.
5954
53bb8782
KR
5955 * stime.c (scm_strptime): Add comment about glibc strptime %s and
5956 current timezone requiring SCM_DEFER_INTS.
5957
defdc4b4
NJ
59582003-08-30 Neil Jerram <neil@ossau.uklinux.net>
5959
5960 * script.c (scm_compile_shell_switches): Make -s switch optional
5961 if file to be loaded does not begin with a `-'. (Thanks to Aaron
5962 VanDevender for the patch!)
5963
0f008a15
KR
59642003-08-30 Kevin Ryde <user42@zip.com.au>
5965
5966 * numbers.c (scm_lognot): Rewrite using ~ and mpz_com, for directness
5967 and to have non-integer types rejected as per other logical funcs.
5968
438a3ba1
KR
59692003-08-28 Kevin Ryde <user42@zip.com.au>
5970
5971 * gc.h (scm_remember_upto_here_1): Revise comments on the asm form.
5972
98dceb37
KR
59732003-08-23 Kevin Ryde <user42@zip.com.au>
5974
5975 * simpos.c (scm_system): Remove SCM_DEFER_INTS, system() should be
5976 thread safe, and could take a long time too.
5977
1fa79a38
KR
59782003-08-22 Kevin Ryde <user42@zip.com.au>
5979
5980 * numbers.c (scm_difference): Correction to bignum - negative inum.
5981
d97f9b42
KR
59822003-08-14 Kevin Ryde <user42@zip.com.au>
5983
5984 * gc.h (scm_remember_upto_here_1, scm_remember_upto_here_2)
5985 [__GNUC__]: Use volatile asm macros rather than a function call.
5986 * gc.c (scm_remember_upto_here_1, scm_remember_upto_here_2): Undefine
5987 macros while defining functions.
5988
5989 * simpos.c (getenv): Use <stdlib.h> for prototype.
5990 (scm_system): In docstring, refer to status:exit-val rather than
5991 "functions above".
5992
b9052fcc
KR
59932003-08-09 Kevin Ryde <user42@zip.com.au>
5994
5995 * srcprop.c (scm_source_properties): Return plist from hash if it's a
5996 list set by source-properties! rather than an SRCPROPS object,
5997
8e5b4b9e
KR
59982003-07-29 Kevin Ryde <user42@zip.com.au>
5999
6000 * properties.c (scm_primitive_property_ref): In docstring, note
6001 parameters to not-found-proc, use hyphens rather than underscores for
6002 that parameter name.
6003 (scm_primitive_property_set_x): In docstring, VAL is the value
6004 parameter not CODE.
6005
20703ac4
MV
60062003-07-27 Marius Vollmer <mvo@zagadka.de>
6007
c6ccee34
MV
6008 * print.c (scm_print_symbol_name): handle more weird characters by
6009 escaping the symbol name properly. Thanks to Paul Jarc!
6010
2f4931bf
MV
6011 * posix.h (scm_setgroups): New prototype.
6012 * posix.c (scm_setgroups): New. Thanks to Paul Jarc!
6013 (scm_getgroups): Handle groups ids that don't fit into a fixnum.
6014 Don't use SCM_WRITABLE_VELTS.
6015
265c456f
MV
6016 * gc.h (SCM_GC_SET_CELL_BVEC): New.
6017 * gc-card.c (scm_i_init_card_freelist): Use it. Thanks to
6018 Matthias Koeppe!
6019
20703ac4
MV
6020 * __scm.h (SCM_C_INLINE_KEYWORD): New.
6021 * numbers.c: Use it in place of SCM_C_INLINE so that the code
6022 compiles when SCM_C_INLINE is undefined.
6023
59c4bb82
DH
60242003-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
6025
6026 * __scm.h: Reformulated the architecture and compiler properties
6027 in terms of properties of scm_t_bits and SCM variables rather than
6028 in terms of c standard types. This is since it is not known which
6029 of the standard types scm_t_bits and SCM variables will be defined
6030 to.
6031
d7850c8d
KR
60322003-07-24 Kevin Ryde <user42@zip.com.au>
6033
6034 * numbers.c (scm_angle): Use scm_flo0 for non-negative inum, bignum
6035 and real.
6036
8a0c514f
KR
60372003-07-18 Kevin Ryde <user42@zip.com.au>
6038
6039 * numbers.c (scm_product): In complex * bignum, correction to
6040 REAL/IMAG fetch, x is the complex, not y.
6041
0aacf84e
MD
60422003-07-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6043
6044 * numbers.c (scm_odd_p, scm_even_p): Bugfix: Treat result of
6045 scm_inf_p test as Scheme values.
6046 (scm_sum): Bugfix: Normalize bignum created from a negative bignum
6047 and a positive inum.
6048 Use GNU indentation style.
6049
192de9a4
DH
60502003-07-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
6051
6052 * values.c (scm_values): Build lists of length 1 by using
6053 scm_list_1 instead of using scm_cons.
6054
bbb4438a
KR
60552003-07-10 Kevin Ryde <user42@zip.com.au>
6056
b58c85ce
KR
6057 * deprecation.c (scm_c_issue_deprecation_warning_fmt): Add va_end.
6058 * list.c (scm_list_n): Ditto.
6059
bbb4438a
KR
6060 * gc-malloc.c (scm_gc_realloc): Define "ptr" at start of function.
6061
287f8ad1
KR
60622003-07-08 Matthias Koeppe <mkoeppe@merkur.math.uni-magdeburg.de>
6063
6064 * tags.h (scm_t_bits, scm_t_signed_bits, etc): Avoid solaris empty
6065 defines of INTPTR_MAX and UINTPTR_MAX, combine conditionals for
6066 scm_t_bits and scm_t_signed_bits to avoid any chance of one and not
6067 the other using intptr_t.
6068
005d2366
KR
60692003-07-08 Kevin Ryde <user42@zip.com.au>
6070
0aacf84e 6071 * numbers.c (scm_make_polar): Use sincos, when available.
005d2366
KR
6072 (scm_magnitude): Use hypot.
6073
6074 * ports.c (scm_char_ready_p, scm_peek_char): In docstrings, don't use
6075 @footnote since it doesn't go through to guile-procedures.txt.
6076
6077 * threads.c (scm_call_with_new_thread): In docstring, use "( )"
6078 outside @var to quieten makeinfo, and use @code.
6079
cbfe8e62
HWN
60802003-07-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6081
6082 * gc-malloc.c (decrease_mtrigger): new function
6083 (increase_mtrigger): new function, separate debug registering and
6084 mtrigger administration.
6085 (scm_gc_realloc): bugfix: do mtrigger administration before the
6086 actual realloc, for the realloc might invalidate a GC-d segment of
6087 memory. Thanks to Sam Hocevar for pointing this out.
6088 (scm_gc_realloc): use scm_malloc_reregister instead of
6089 unregistering and registering in sequence.
6090
aeb4c2e1
HWN
60912003-07-03 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6092
6093 * __scm.h (SCM_ASSERT): change "else" expansion to "do { } while (0)"
6094
4c27f8d2
HWN
60952003-07-02 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6096
6097 * __scm.h (SCM_ASRTGO): add "else" to macro expansions with if
6098 clauses.
6099
983e697d
MV
61002003-06-29 Marius Vollmer <mvo@zagadka.de>
6101
6102 * deprecated.h (SCM_OPDIRP, scm_fport, scm_option, scm_srcprops,
6103 scm_srcprops_chunk, scm_info_frame, scm_stack, scm_array,
6104 scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_FUNC_NAME, SCM_WTA,
6105 RETURN_SCM_WTA, SCM_VALIDATE_NUMBER_COPY,
6106 SCM_VALIDATE_NUMBER_DEF_COPY, SCM_VALIDATE_OPDIR): Re-added from
6107 the release_1_6 branch.
6108
78b6566e
SJ
61092003-06-25 Stefan Jahn <stefan@lkcc.org>
6110
6111 * continuations.c: Redeclaration of getcontext() via the
6112 __asm__ ("getcontext") directive.
6113
6114 * continuations.h: Include <ucontext.h> instead of
6115 <sys/ucontext.h>.
6116
1ebb8497
KR
61172003-06-21 Kevin Ryde <user42@zip.com.au>
6118
6119 * numbers.c (_GNU_SOURCE): #define, to get C99 things.
6120 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, $asinh, $acosh,
6121 $atanh, truncate): Use C library asinh, acosh, atanh and trunc, when
6122 available.
6123 (scm_inexact_to_exact): Expand isfinite to its definition !xisinf.
6124 (isfinite): Remove, conflicts with C99 isfinite().
6125
fbf85ba4
MV
61262003-06-19 Marius Vollmer <mvo@zagadka.de>
6127
6128 * deprecated.h, deprecated.c (scm_strhash, scm_sym2ovcell_soft,
6129 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
6130 scm_symbol_value0, scm_string_to_obarray_symbol scm_intern_symbol,
6131 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
6132 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp): Re-added from
6133 the release_1_6 branch.
6134
fcc5d734
SJ
61352003-06-14 Stefan Jahn <stefan@lkcc.org>
6136
6137 * threads.h: Redefined scm_getspecific() and scm_setspecific()
6138 to be functions instead of macros.
6139
6140 * threads.c: Conditionalized inclusion of <sys/time.h> and
6141 <unistd.h>.
6142 (scm_getspecific, scm_setspecific): Made these two function
6143 real part of the API.
6144
6145 * posix.c (s_scm_putenv): Added some code to make a
6146 (putenv "FOO="), i.e. setting an empty string, work also on
6147 Win32 systems. Thanks to Kevin Ryde for the proposal.
6148
c3ae8e07
KR
61492003-06-12 Kevin Ryde <user42@zip.com.au>
6150
75b14838
KR
6151 * posix.c (scm_putenv): Free temporary ptr in mingw unset. Add
6152 freebsd to comment about need to use unsetenv.
c3ae8e07 6153
9d9fa092
MV
61542003-06-02 Marius Vollmer <mvo@zagadka.de>
6155
6156 * ports.c (scm_peek_char): Safe the column of the port around the
6157 getc/ungetc calls. Thanks to Dr. Peter Ivanyi!
6158
f2478375
KR
61592003-06-07 Kevin Ryde <user42@zip.com.au>
6160
6161 * tags.h: Use inttypes.h and stdint.h when available, for INTPTR_MAX
6162 and friends required by scm_t_bits setups.
6163
6375e040
DH
61642003-06-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6165
6166 * tags.h (scm_tc2_int): Added.
6167
6168 * tags.h (scm_tc3_int_1, scm_tc3_int_2): Expressed in terms of
6169 scm_tc2_int.
6170
6171 * tags.h (scm_tcs_cons_imcar, scm_tcs_cons_nimcar, scm_tcs_struct,
6172 scm_tcs_closures): Hard coded values replaced by symbolic ones.
6173
f5c6ec2f
DH
61742003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
6175
6176 * eval.c: Partially undid my patch from 2003-05-31. This patch
6177 caused the segfault referenced in the previous changelog entry.
6178
47dbd81e
DH
61792003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
6180
6181 * tags.h: Fixed comment about the immediate type code layout.
6182
6183 * eval.c: Fixed handling of non-special instructions. Without
6184 this patch, guile will segfault on (#\0) and similar instructions.
6185
3ec52c51
KR
61862003-06-05 Kevin Ryde <user42@zip.com.au>
6187
6188 * numbers.c (scm_max, scm_min): For inum, bignum and real, if other
6189 operand is NaN, then return NaN. Also avoid passing NaN to mpz_cmp_d.
6190
e418bd7c
KR
6191 * read.c (scm_input_error): Pass arg list parameter to scm_error_scm,
6192 rather than SCM_EOL. Needed by "Unknown # object" case in scm_lreadr.
6193
d0624e39
DH
61942003-06-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6195
6196 * __scm.h, gc-card.c (SCM_DEBUG_DEBUGGER_SUPPORT,
6197 SCM_DEBUG_DEBUGGING_SUPPORT): Renamed macro
6198 SCM_DEBUG_DEBUGGER_SUPPORT to SCM_DEBUG_DEBUGGING_SUPPORT and
6199 generalized it to apply not only to C level functions but also to
6200 scheme level functions.
6201
6202 * debug.c, debug.h, eval.c (make-iloc, scm_make_iloc, iloc?,
6203 scm_iloc_p, dbg-make-iloc, scm_dbg_make_iloc, dbg-iloc?,
6204 scm_dbg_iloc_p): Moved functions scm_make_iloc, scm_iloc_p to
6205 eval.c, made them available under SCM_DEBUG_DEBUGGING_SUPPORT == 1
6206 only and renamed them to scm_dbg_make_iloc, scm_dbg_iloc_p,
6207 respectively.
6208
6209 * deprecated.h, eval.c, eval.h (SCM_ILOC00, SCM_IDINC,
6210 SCM_IDSTMSK): Deprecated. The macro definitions are moved from
6211 eval.h into eval.c and a copy is placed into deprecated.h.
6212
6213 * eval.c, eval.h (SCM_MAKE_ILOC): Removed from eval.h and placed
6214 into eval.c. This definition was not part of the API in any
6215 officially released version of guile and thus does not need to go
6216 through a phase of deprecation.
6217
e90c3a89
DH
62182003-06-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
6219
d0624e39
DH
6220 * deprecated.c, deprecated.h, eval.c, eval.h (scm_s_expression,
6221 scm_s_test, scm_s_body, scm_s_bindings, scm_s_variable,
6222 scm_s_clauses, scm_s_formals): Deprecated. In eval.c the
e90c3a89
DH
6223 definitions are make static and renamed from scm_s_xxx to s_xxx.
6224 In deprecated.c the original definitions are copied.
6225
d0624e39
DH
6226 * deprecated.h, eval.c, eval (SCM_EVALIM2, SCM_EVALIM, SCM_XEVAL,
6227 SCM_XEVALCAR): Deprecated. The macro definitions are moved from
e90c3a89
DH
6228 eval.h into eval.c and a copy (slightly modified to work in user
6229 code) is placed into deprecated.h.
6230
6231 * eval.c: Use the local static s_xxx definitions instead of the
6232 scm_s_xxx definitions throughout.
6233
14b18ed6
DH
62342003-06-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
6235
6236 This set of patches separates the representation of the cxr family
6237 of functions (car, cdr etc.) from the dsubr family of functions
6238 (i. e. functions that take a double precision floating point
6239 argument). Further, the algorithm for handling the cxr function
6240 is improved.
6241
6242 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_1), numbers.c
6243 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, scm_round, floor,
6244 ceil, sqrt, fabs, exp, log, sin, cos, tan, asin, acos, atan, sinh,
6245 cosh, tanh), objects.c (scm_class_of), procprop.c
6246 (scm_i_procedure_arity), ramap.c (scm_array_map_x), tags.h
6247 (scm_tc7_dsubr, scm_tcs_subrs): Introduce scm_tc7_dsubr as new
6248 typecode for the dsubr family of functions.
6249
6250 * ramap.c (ramap_cxr, ramap_dsubr): Renamed ramap_cxr to
6251 ramap_dsubr.
6252
6253 * eval.c (SCM_CEVAL, SCM_APPLY, call_cxr_1), pairs.c
6254 (scm_init_pairs): Make use of the (now usable) second cell element
6255 of a scm_tc7_cxr function to implement the cxr family of functions
6256 more efficiently.
6257
2ca0d207
DH
62582003-05-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
6259
6260 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_0,
6261 scm_trampoline_1, scm_trampoline_2): Postpone error cases to the
6262 end of an if-else-if-sequence of checks.
6263
9a069bdd
DH
62642003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
6265
6266 * eval.c (SCM_CEVAL): Improved readability of call-with-values
6267 execution. Generalize apply_closure to apply_proc and use that
6268 for call-with-values.
6269
e910e9d2
DH
62702003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
6271
6272 * eval.c (SCM_CEVAL): Avoid one level of indirection when applying
6273 a non closure.
6274
1e498fbd
SJ
62752003-05-30 Stefan Jahn <stefan@lkcc.org>
6276
6277 * posix.c (s_scm_putenv): Use the new HAVE_UNSETENV
6278 appropriately for mingw32 hosts.
6279
6280 * numbers.h: Defining copysign(), isnan() and finite() to
6281 be prefixed by a single '_' for mingw32 hosts.
6282
c47e2599
KR
62832003-05-30 Kevin Ryde <user42@zip.com.au>
6284
6285 * numbers.c (z_negative_one): New variable.
6286 (scm_init_numbers): Initialize it.
6287 (scm_logcount): Use it and mpz_hamdist to count zeros for negatives.
6288
2e945bcc
SJ
62892003-05-29 Stefan Jahn <stefan@lkcc.org>
6290
6291 * win32-dirent.c: Use malloc() instead of scm_malloc().
6292
6293 * stime.c (s_scm_strftime): Add a type cast to avoid compiler
6294 warning.
6295
6296 * posix.c (s_scm_putenv): Disable use of unsetenv() for the
6297 mingw32 build.
6298
6299 * modules.c (s_scm_module_import_interface): Renamed local
6300 variable interface to _interface. Seems like 'interface'
6301 is a special compiler directive for the mingw32 compiler.
6302
6303 * mkstemp.c: Provide prototype to avoid compiler warning.
6304
6305 * load.c (s_scm_search_path): Fixed absolute and relative
6306 path detections for native Windows platforms.
6307
6308 * gc.h, threads.h: Export some more symbols using SCM_API (necessary
6309 to build on mingw32).
6310
6311 * gc-freelist.c ("s_scm_map_free_list",
6312 "s_scm_gc_set_debug_check_freelist_x"): Fixed use of FUNC_NAME.
6313
6314 * fports.c (fport_fill_input): Disable use of
6315 fport_wait_for_input() on Win32 platforms.
6316
6317 * filesys.c (s_scm_basename): Fixed __MINGW32__ code.
6318
6319 * Makefile.am: Modified some rules for cross compiling.
6320
ddd8f927
DH
63212003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6322
6323 * eval.c (SCM_CEVAL): In case of an application, all checks for a
6324 proper function object and the correct number of arguments are now
6325 performed in the application part of SCM_CEVAL.
6326
6327 (scm_badformalsp): Removed.
6328
f8ba2197
DH
63292003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6330
6331 * deprecated.c (scm_read_and_eval_x): Fixed C99-ism.
6332
79f55b7c
MD
63332003-05-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6334
a502595f
MD
6335 * num2integral.i.c (NUM2INTEGRAL): Avoid warning about conditional
6336 always being false by inserting preprocessor conditional. (Thanks
6337 to Bruce Korb.)
6338
79f55b7c
MD
6339 * __scm.h (SCM_STACK_PTR): New macro. (Cast argument through
6340 (void *) in order to avoid an aliasing warning; thanks to Bruce
6341 Korb.)
6342
6343 * stackchk.h (SCM_STACK_OVERFLOW_P): Use SCM_STACK_PTR.
6344
6345 * threads.c (suspend, launch_thread, scm_threads_mark_stacks): Use
6346 SCM_STACK_PTR.
6347
6348 * threads.c (scm_threads_mark_stacks): Bugfix: Changed
6349 thread->base --> t->base.
6350
6351 * eval.c (SCM_CEVAL): Don't cast argument of SCM_STACK_OVERFLOW_P.
6352
47dee228
MV
63532003-05-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6354
6355 * deprecated.h, deprecated.c (scm_makstr, scm_makfromstr,
6356 scm_variable_set_name_hint, scm_builtin_variable,
6357 scm_internal_with_fluids, scm_make_gsubr,
6358 scm_make_gsubr_with_generic, scm_create_hook, SCM_LIST0,
6359 SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5, SCM_LIST6,
6360 SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify, scm_sloppy_memq,
85494587
MV
6361 scm_sloppy_memv, scm_sloppy_member, scm_read_and_eval_x,
6362 scm_subr_entry, SCM_SUBR_DOC, scm_make_subr,
6363 scm_make_subr_with_generic, scm_make_subr_opt,
6364 scm_call_catching_errors, scm_make_smob_type_mfpe,
6365 scm_set_smob_mfpe, scm_strprint_obj, scm_read_0str, scm_eval_0str,
6366 SCM_CHARS, SCM_UCHARS, SCM_LENGTH): Re-added from the release_1_6
6367 branch. Some have been slightly rewritten.
6368 (scm_i_object_chars, scm_i_object_length): New, to support
6369 SCM_CHARS, SCM_UCHARS, and SCM_LENTH.
6370
e681d187
DH
63712003-05-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
6372
6373 * eval.c (scm_m_do, unmemocopy, SCM_CEVAL): Reversed order of
6374 names and inits in the memoized code of do.
6375
7e59d9d4
MD
63762003-05-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6377
6378 * c-tokenize.lex (yyget_lineno, yyget_in, yyget_out, yyget_leng,
6379 yyget_text, yyset_lineno, yyset_in, yyset_out, yyget_debug,
6380 yyset_debug, yylex_destroy): Added prototypes (otherwise we'll get
6381 a compilation error if error-on-warning is enabled).
6382
9950a42c
MV
63832003-05-17 Marius Vollmer <mvo@zagadka.de>
6384
6385 * c-tokenize.lex: Gobble up complete lines after a '#'. This
6386 removes preprocessor directives from the snarfage that might
6387 otherwise confuse us. These directives appear when compiling with
6388 "-g3", for example.
6389
0068984b
HWN
63902003-05-16 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6391
26e68795
HWN
6392 * ChangeLog: add my surname
6393
0068984b
HWN
6394 * srcprop.c (scm_finish_srcprop): use
6395 scm_gc_register_collectable_memory()
6396 (scm_make_srcprops): idem.
6397
131805f0
HWN
63982003-05-14 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6399
6400 * gc-malloc.c (scm_gc_register_collectable_memory): avoid
6401 wrap-around for scm_mtrigger
6402 (scm_gc_register_collectable_memory): abort on overflowing
6403 scm_mallocated().
6404
d4611024
KR
64052003-05-13 Kevin Ryde <user42@zip.com.au>
6406
6407 * numbers.c (xmpz_cmp_d): New macro, handling infs if gmp doesn't.
6408 (scm_num_eq_p, scm_less_p, scm_max, scm_min): Use it.
6409
7aaf8dc9
MD
64102003-05-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6411
dfd03fb9
MD
6412 * backtrace.c (scm_display_error_message): Introduced fancy
6413 printing with max level 7 and length 10. (Purpose: avoid printing
6414 gigantic objects in error messages.)
6415
6416 * print.c, print.h (scm_i_port_with_print_state): New function.
6417
6418 * print.c (scm_iprin1, scm_printer_apply,
6419 scm_port_with_print_state): Use scm_i_port_with_print_state.
6420 (scm_simple_format): Modified not to destroy print states.
6421 (print_state_mutex): New mutex.
6422 (scm_make_print_state, scm_free_print_state, scm_prin1):
6423 Lock/unlock print_state_mutex.
6424
7aaf8dc9
MD
6425 * deprecated.h (SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK):
6426 Use current names in definitions.
6427
a4d9ffa1
KR
64282003-05-10 Kevin Ryde <user42@zip.com.au>
6429
6430 * numbers.c (scm_num_eq_p, scm_less_p): Don't pass NaN to mpz_cmp_d.
6431
d25e96a4
KR
6432 * numbers.c (scm_integer_length): On negative bignums, adjust
6433 mpz_sizeinbase to account for it looking at absolute value where we
6434 want ones-complement.
6435
6436 * numbers.c (scm_gcd): In bignum/inum, don't pass yy==0 to mpz_gcd_ui
6437 since we're only using the ulong return value, and x might not fit.
6438
5bf6a6f0
DH
64392003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6440
6441 * eval.c, eval.h, read.c, read.h (scm_sym_dot): Moved from eval to
6442 read. This will allow to make the definition in read.c static.
6443
f58c472a
DH
64442003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6445
6446 * eval.c, eval.h, evalext.c, evalext.h (scm_m_undefine): Moved
6447 from evalext to eval. This will allow to make some of the
6448 definitions in eval.c static.
6449
90382aeb
KR
64502003-05-06 Kevin Ryde <user42@zip.com.au>
6451
6452 * numbers.c (scm_difference): In inum - bignum, handle negative inum.
6453 (scm_logcount): Use mpz_com, not mpz_neg.
6454
3b88ed2a
DH
64552003-05-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6456
6457 The purpose of this patch is to make guile's internal memoizers
6458 distinguishable from memoizing macros created on the scheme level
6459 or from user provided primitive memoizing macros. The reason is,
6460 that the internal memoizers are the only ones that are allowed to
6461 transform their scheme input into memoizer byte code, while all
6462 other memoizing macros may only transform scheme code into new
6463 scheme code.
6464
6465 To achieve this, a new macro type 'builtin-macro!' is introduced.
6466 Currently, 'builtin-macro!'s are handled as memoizing macros, but
6467 this will change when the memoizer and executor are separated.
6468
6469 * macros.[ch] (scm_i_makbimacro): New.
6470
6471 * macros.h (SCM_BUILTIN_MACRO_P): New.
6472
6473 * macros.c (macro_print, scm_macro_type): Support builtin-macro!s.
6474
6475 * eval.c, goops.c: All of guile's primitive memoizing macros are
6476 primitive builtin-macros now.
6477
6478 * eval.c (scm_macroexp, SCM_CEVAL): Make sure the primitive
6479 builtin-macros are handled equally to memoizing macros.
6480
b0780eb1
MV
64812003-05-04 Marius Vollmer <mvo@zagadka.de>
6482
6483 * throw.c (scm_ithrow): Remove "asm volatile" hack. It used to
6484 work around a bug in GCC 2.95.2 but is now a bug in itself.
6485
1cbf4fe9
MV
64862003-05-02 Marius Vollmer <mvo@zagadka.de>
6487
6488 * deprecated.h (scm_rstate, scm_rng, SCM_SLOPPY_CONSP,
6489 SCM_SLOPPY_NCONSP, scm_tc7_ssymbol, scm_tc7_msymbol,
6490 scm_tcs_symbols): New.
6491
1a61d41b
MV
64922003-04-30 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6493
096ecbaf
MV
6494 * deprecated.h, deprecated.c (scm_protect_object,
6495 scm_unprotect_object, SCM_SETAND_CAR, SCM_SETOR_CAR,
6496 SCM_SET_AND_CDR, SCM_SET_OR_CDR, SCM_FREEP, SCM_NFREEP,
6497 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
6498 SCM_GCCDR, scm_remember, scm_the_root_module, scm_make_module,
6499 scm_ensure_user_module, scm_load_scheme_module, scm_port,
6500 scm_ptob_descriptor, scm_port_rw_active,
6501 scm_close_all_ports_except): New.
6502
1a61d41b
MV
6503 * ports.c (scm_c_port_for_each): New function, mostly copied from
6504 scm_port_for_each.
6505 (scm_port_for_each): Reimplemented using scm_c_port_for_each.
6506 * ports.h (scm_c_port_for_each): New prototype.
6507
c8e1d354
MD
65082003-04-28 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6509
6510 * eval.c (scm_m_atdispatch): Removed until actually needed. (This
6511 macro was introduced in anticipation of GOOPS method compilation
6512 code.)
6513
6514 * goops.c: Removed binding of @dispatch.
6515
a4aa2134
DH
65162003-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
6517
6518 * eval.c, goops.c (@dispatch, @slot-ref, @slot-set!): Move the
6519 instructions that bind the macros on the scheme level back to
6520 goops.c in order to make sure again that the bindings go into the
6521 (oop goops) module and are not visible from the outside.
6522
9fbee57e
DH
65232003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6524
6525 * eval.c: Non functional change: Separated R5RS and non-R5RS
6526 macros into different sections of the file and ordered the
6527 memoizers alphabetically.
6528
12841895
DH
65292003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6530
6531 * eval.c (scm_ilookup): Rewritten to improve readability.
6532
6a3f13f0
DH
65332003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6534
6535 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
6536 Partially reverted patch from 2003-04-23 in oder to find a better
6537 compromise between readability and debuggability.
6538
b0c5d67b
DH
65392003-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6540
6541 * eval.c, eval.h, goops.c, goops.h (scm_m_atslot_ref,
6542 scm_m_atslot_set_x, scm_m_atdispatch): Move the declarations and
6543 definitions of the special goops memoizers from goops.[ch] to
6544 eval.[ch]. Hmm... it seems that scm_m_atdispatch is not used
6545 throughout guile.
6546
b9ad392e
MD
65472003-04-24 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6548
6549 * ports.c, ports.h (scm_i_port_table_mutex): New mutex.
6550
6551 * fports.c (scm_evict_ports): Lock/unlock scm_i_port_table_mutex.
6552
6553 * ports.c (scm_close_port, scm_flush_all_ports): Ditto.
6554
6555 * ioext.c (scm_fdes_to_ports): Ditto.
6556
6557 * vports.c (scm_make_soft_port): Changed SCM_DEFER/ALLOW_INTS into
6558 lock/unlock scm_i_port_table_mutex.
6559
6560 * strports.c (scm_mkstrport): Ditto.
6561
6562 * ports.c (scm_void_port, scm_port_for_each): Ditto.
6563
6564 * fports.c (scm_fdes_to_port): Ditto.
6565
d0b07b5d
DH
65662003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6567
6568 This set of patches contains no functional changes, only debatable
6569 minor stylistic ones. Still, in order to prepare a patch between
6570 my local copy and the CVS version, I decided to submit the changes
6571 below. Then, the patch will hopefully only contain relevant
6572 modifications :-)
6573
6574 * eval.c (iqq): Added const specifier.
6575
6576 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
6577 Use NULL instead of 0 to indicate that a pointer is returned.
6578 Removed some misleading 'fall through' comments.
6579
6580 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
6581 Split up long expressions into smaller ones to be more debugging
6582 friendly.
6583
a98e8e98
DH
65842003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6585
6586 * eval.h (SCM_ENTER_FRAME_HDLR, SCM_APPLY_FRAME_HDLR,
6587 SCM_EXIT_FRAME_HDLR): Use SCM_PACK to convert data to a SCM value
6588 rather than casting to SCM.
6589
c178c3a6
DH
65902003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6591
6592 * sort.c, pairs.h: Removed unnecessary includes.
6593
d339981a
DH
65942003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6595
6596 * sort.c: Replaced hand-made trampline code by the new official
6597 mechanism from eval.c. This fixes a segfault in the new test file
6598 sort.test.
6599
6600 (quicksort, compare_function, scm_restricted_vector_sort_x,
6601 scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
6602 scm_merge_list_step, scm_sort_x, scm_sort, scm_merge_vector_x,
6603 scm_merge_vector_step, scm_stable_sort_x, scm_stable_sort,
6604 scm_sort_list_x, scm_sort_list): Use trampoline mechanism from
6605 eval.c.
6606
6607 (subr2less, lsubrless, closureless, applyless, scm_cmp_function,
6608 cmp_fun_t): Removed.
6609
6610 (compare_function): Added.
6611
6612 * sort.c (quicksort, SWAP, stack_node): Replaced pointer
6613 arithmetics with index arithmetics. Changed quicksort to work on
6614 an array of SCM values instead of an array of characters. Avoid
6615 bytewise copying of SCM elements. Avoid allocating memory on the
6616 stack with alloca. Fixed some comments.
6617
821f18a4
DH
66182003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6619
6620 * eval.c (EXTEND_ENV): Eliminated.
6621
6622 (unmemocopy, SCM_CEVAL, SCM_APPLY): Use SCM_EXTEND_ENV instead of
6623 EXTEND_ENV.
6624
94fb5a6e
DH
66252003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6626
6627 * __scm.h (SCM_DEBUG_DEBUGGER_SUPPORT): New compile-time option.
6628
6629 * gc.card.c (scm_gc_marked_p): Fixed compiler warning when
6630 compiling with SCM_DEBUG==1 by moving definition behind prototype.
6631
6632 * gc.card.c (scm_dbg_t_list_cell, scm_dbg_t_double_cell,
6633 scm_dbg_gc_marked_p, scm_dbg_gc_get_card, scm_dbg_gc_get_bvec,
6634 scm_t_list_cell_struct, scm_t_list_cell, scm_t_double_cell,
6635 scm_gc_marked_p, scm_gc_get_card, scm_gc_get_bvec): Fixed
6636 functions such that they check if the object is a non-immediate.
6637 Further, renamed identifiers to use the scm_dbg_ prefix and made
6638 their inclusion into the lib dependent of the
6639 SCM_DEBUG_DEBUGGER_SUPPORT compile time option.
6640
fce0b22d
DH
66412003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6642
6643 * __scm.h: Fixed comment about the SCM_DEBUG_TYPING_STRICTNESS
6644 debug option.
6645
1685446c
DH
66462003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6647
821f18a4 6648 * list.c (scm_ilength, scm_last_pair), unif.c (l2ra): Prefer
1685446c
DH
6649 !SCM_CONSP over SCM_NCONSP. Now, guile itself does not include
6650 any calls to SCM_NCONSP any more.
6651
6652 * unif.c (l2ra): Eliminate redundant check.
6653
9ff1720f
DH
66542003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6655
6656 * list.c (scm_cons_star), ramap.c (scm_ra_sum, scm_ra_product,
6657 scm_array_map_x), unif.c (l2ra): Prefer !SCM_NULLP over
6658 SCM_NNULLP. Now, guile itself does not include any calls to
6659 SCM_NNULLP any more.
6660
05b15362
DH
66612003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6662
6663 * eval.c (unmemocopy, SCM_APPLY, scm_map, scm_for_each,
6664 scm_copy_tree): Place assignment expressions which are part of
6665 other expressions into an expression of their own.
6666
0c88d7df
DH
66672003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6668
6669 * goops.c (TEST_CHANGE_CLASS, scm_sys_initialize_object): Don't
6670 compare SCM values with !=.
6671
5cb22e96
DH
66722003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6673
6674 * eval.c, eval.h, evalext.c, evalext.h (scm_sym_setter,
6675 scm_m_generalized_set_x, scm_init_evalext): Move the declaration
6676 and definition of the memoizer for the generalized set! macro from
6677 evalext.[ch] to eval.[ch]. Use the SCM_SYNTAX snarfer macro to
6678 define the macro object.
6679
6680 * eval.c, eval.h (s_set_x, scm_s_set_x, scm_m_set_x,
6681 scm_m_generalized_set_x): Since now scm_s_set_x is only used in
6682 eval.c, it is made static and renamed to s_set_x.
6683
6684 * evalext.c (scm_defined_p, scm_m_undefine): Prefer !SCM_<foo>
6685 over SCM_N<foo>.
6686
a44a9715
DH
66872003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6688
6689 * eval.c, root.h (scm_undefineds, SCM_NUM_PROTECTS, undefineds,
6690 scm_init_eval): Made scm_undefineds static in eval.c, renamed it
6691 to undefineds and registered the object as a permanent object.
6692
6693 * eval.c, eval.h (scm_f_apply, scm_init_eval): Made scm_f_apply
6694 static in eval.c, renamed it to f_apply and registered the object
6695 as a permanent object.
6696
1b43d24c
DH
66972003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6698
5cb22e96 6699 * eval.c (SCM_BIT7, SCM_BIT8, unmemocopy, SCM_CEVAL): Renamed
1b43d24c
DH
6700 file-local macro SCM_BIT8 to SCM_BIT7, which is more appropriate.
6701
aec16f99
DH
67022003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6703
6704 * numbers.c (scm_logtest): Fixed argument bug in the call to
6705 mpz_and, which showed up when compiling with SCM_DEBUG defined.
6706
f96460ce
DH
67072003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6708
6709 * gc-card.c (scm_i_sweep_card, scm_i_init_card_freelist): Fixed
6710 type errors that showed up when compiling with SCM_DEBUG defined.
6711
d0f6ceb8
DH
67122003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6713
6714 * continuations.c, continuations.h, eval.c, eval.h, extensions.c,
6715 gsubr.c, guile.c, init.c, read.c, root.c, root.h, stackchk.h,
6716 throw.c: Removed uses of DEBUG_EXTENSIONS and DYNAMIC_LINKING to
6717 fix compile errors with --disable-deprecated.
6718
19a7a089
RB
67192003-04-17 Rob Browning <rlb@defaultvalue.org>
6720
6721 * numbers.c (scm_integer_expt): fix case where we were declaring
6722 vars in the middle of a statement block. Thanks to Thamer
6723 Al-Harbash.
6724
47cd67db
MD
67252003-04-17 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6726
0fd7dcd3
MD
6727 * goops.c (TEST_CHANGE_CLASS): Update variable class after class
6728 change.
6729
47cd67db
MD
6730 * eq.c (scm_eqv_p): Turned into a primitive generic.
6731
3b8b889c
RB
67322003-04-16 Rob Browning <rlb@defaultvalue.org>
6733
312006bb
RB
6734 * gc_os_dep.c: Added patch for UnixWare and OpenUNIX support.
6735 Thanks to Boyd Gerber.
6736 Added check for __arm__ in addition to arm for LINUX and copied
6737 __s390__ defines from upstream libgc. Thanks to James Treacy for
6738 reporting the problems.
c7ef2ea1 6739
3b8b889c
RB
6740 * numbers.c (PTRDIFF_MIN): use SCM_CHAR_BIT.
6741
6742 * socket.c: use SCM_CHAR_BIT.
6743
6744 * random.c (scm_c_random_bignum): use SCM_CHAR_BIT.
6745
6746 * num2integral.i.c (NUM2INTEGRAL): use SCM_CHAR_BIT.
6747
43261b39
MD
67482003-04-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6749
6750 * feature.c (scm_init_feature): Always add threads feature.
6751
58241edc
MD
67522003-04-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6753
6754 * goops.c (scm_sys_fast_slot_ref): Use SCM_SLOT instead of
6755 scm_at_assert_bound_ref. (We don't want the unbound check. See
6756 oop/goops/active-slot.scm.)
6757
94e91275
RB
67582003-04-14 Rob Browning <rlb@defaultvalue.org>
6759
6760 * tags.h: scm_t_intptr should have been intptr_t.
6761
3071ea27
RB
67622003-04-13 Rob Browning <rlb@defaultvalue.org>
6763
6764 * __scm.h (SCM_FLUSH_REGISTER_WINDOWS): don't just rely on "sparc"
6765 test. Instead use
6766 #if defined (sparc) || defined (__sparc__) || defined (__sparc)
6767 as gc_os_dep.c suggests is appropriate.
6768
6769 * goops.c (prep_hashsets): make static to match prototype.
6770 (scm_sym_args): SCM_SYMBOL -> SCM_GLOBAL_SYMBOL. Thanks to Albert
6771 Chin.
6772
6773 * c-tokenize.lex: remove trailing comma from enum. Thanks to
6774 Albert Chin.
6775
6776 * gc_os_dep.c: add NetBSD powerpc config info. Thanks to Thomas
6777 Klausner.
6778
21ab2aeb
MD
67792003-04-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6780
6781 * goops.c (scm_sys_prep_layout_x): Instance allocation is now
6782 indicated through extra fields in getters-n-setters.
6783 (scm_add_slot): Adapted to new format of getters_n_setters slot.
6784 (Thanks to Andy Wingo.)
6785
dff96e95
HWN
67862003-02-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6787
6788 * gc-segment.c: add comment
6789
07921c76
RB
67902003-04-07 Rob Browning <rlb@defaultvalue.org>
6791
b5331f10
RB
6792 * debug.h: change "id" arg name to "info_id" to avoid objective-c
6793 clash.
6794
07921c76
RB
6795 * num2integral.i.c (NUM2INTEGRAL): fix bug pointed out by Mikael
6796 and add regression test to standalone/.
6797
67982003-04-06 Rob Browning <rlb@defaultvalue.org>
6799
6800 * strings.c (scm_mem2string): use memcpy rather than by-hand loop.
6801 Thanks to Dale P. Smith.
6802
6803 * random.c: #include gmp.h.
6804 (scm_c_random_bignum): normalize result on return.
6805
6806 * init.c: #include gmp.h.
6807
6808 * numbers.h: remove the gmp.h #include (not needed now).
6809
6810 * posix.h: change occurences of "id" to something else so we don't
6811 cause trouble when included via objective-c (can't hurt, might
6812 help). Still have usage in debug.h, though.
6813
938f6b7c
MD
68142003-04-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6815
372691d8
MD
6816 * random.c (scm_c_random_bignum): Don't generate a random number
6817 equal to m (the second argument of scm_c_random_bignum); only
6818 generate numbers in the range 0 <= r < m.
c5f268f8
MD
6819 (scm_c_default_rstate): Use SCM_VARIABLE_REF to access
6820 scm_var_random_state.
372691d8 6821
938f6b7c
MD
6822 * num2integral.i.c (INTEGRAL2BIG): Put negation of n inside then
6823 clause.
6824
6cdb8c3f
RB
68252003-04-05 Rob Browning <rlb@defaultvalue.org>
6826
938f6b7c 6827 * modules.c (scm_module_import_interface): move declaration of
6cdb8c3f
RB
6828 uses before any code.
6829
15635be5
MD
68302003-04-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6831
1ecfd013
MD
6832 * Makefile.am (scmconfig.h): Look for config.h in top_builddir,
6833 not top_srcdir.
6834
15635be5
MD
6835 * hashtab.c (rehash_after_gc): Clear to_rehash list before
6836 processing it in order to avoid an infinite loop.
6837
6838 * print.c (scm_prin1): Remember old state of pstate->writingp.
6839
73be1d9e
MV
68402003-04-05 Marius Vollmer <mvo@zagadka.de>
6841
6842 * Changed license terms to the plain LGPL thru-out.
6843
ad815c06
RB
68442003-04-04 Rob Browning <rlb@defaultvalue.org>
6845
6846 * socket.c (FLIPCPY_NET_HOST_128): new macro.
6847 (ipv6_net_to_num, ipv6_num_to_net, bignum_in_ipv6_range_p):
6848 rewrite to handle GMP bignums.
6849
6850
6851 * random.c (scm_c_random_bignum): rewrite to handle GMP bignums.
6852
6853 * ports.c (scm_getc): minor tweak.
6854
6855 * numbers.h: remove SCM_BIGDIG conditionals, reorganize, and
6856 rewrite to handle GMP bignums.
6857
6858 * numbers.c: rewrite *many* functions to handle GMP bignums.
6859
6860 * num2integral.i.c (NUM2INTEGRAL, INTEGRAL2NUM, INTEGRAL2BIG):
6861 handle GMP bignums.
6862
6863 * num2float.i.c (NUM2FLOAT): handle GMP bignums.
6864
6865 * init.c (check_config): remove SCM_BIGDIG conditionals.
6866 (scm_init_guile_1): test to make sure mpz_t fits in a double_cell.
6867
6868 * gc-card.c ("sweep_card"): handle new mpz_t bignums.
6869
6870 * eval.c: remove SCM_BIGDIG conditionals.
6871
6872 * eq.c (s_scm_eqv_p): scm_i_bigcomp -> scm_i_bigcmp.
6873
6cdb8c3f
RB
68742003-03-31 Rob Browning <rlb@defaultvalue.org>
6875
6876 * Makefile.am (scmconfig.h): change srcdir to builddir. (Thanks
6877 to Kevin Ryde.)
6878
68792003-03-27 Rob Browning <rlb@defaultvalue.org>
6880
6881 * threads.h: fix various preprocessor usages of new public
6882 symbols to expect 0 or 1 values rather than 1 or undefined.
6883 i.e. change #ifdef to #if, etc.
6884
6885 * threads.c: fix various preprocessor usages of new public
6886 symbols to expect 0 or 1 values rather than 1 or undefined.
6887 i.e. change #ifdef to #if, etc.
6888
6889 * tags.h: fix various preprocessor usages of new public
6890 symbols to expect 0 or 1 values rather than 1 or undefined.
6891 i.e. change #ifdef to #if, etc.
6892
6893 * stacks.c: fix various preprocessor usages of new public
6894 symbols to expect 0 or 1 values rather than 1 or undefined.
6895 i.e. change #ifdef to #if, etc.
6896
6897 * stackchk.h: fix various preprocessor usages of new public
6898 symbols to expect 0 or 1 values rather than 1 or undefined.
6899 i.e. change #ifdef to #if, etc.
6900
6901 * stackchk.c: fix various preprocessor usages of new public
6902 symbols to expect 0 or 1 values rather than 1 or undefined.
6903 i.e. change #ifdef to #if, etc.
6904
6905 * sort.c: fix various preprocessor usages of new public
6906 symbols to expect 0 or 1 values rather than 1 or undefined.
6907 i.e. change #ifdef to #if, etc.
6908
6909 * read.c: fix various preprocessor usages of new public
6910 symbols to expect 0 or 1 values rather than 1 or undefined.
6911 i.e. change #ifdef to #if, etc.
6912
6913 * random.c: fix various preprocessor usages of new public
6914 symbols to expect 0 or 1 values rather than 1 or undefined.
6915 i.e. change #ifdef to #if, etc.
6916
6917 * print.c: fix various preprocessor usages of new public
6918 symbols to expect 0 or 1 values rather than 1 or undefined.
6919 i.e. change #ifdef to #if, etc.
6920
6921 * objects.c: fix various preprocessor usages of new public
6922 symbols to expect 0 or 1 values rather than 1 or undefined.
6923 i.e. change #ifdef to #if, etc.
6924
6925 * numbers.h: fix various preprocessor usages of new public
6926 symbols to expect 0 or 1 values rather than 1 or undefined.
6927 i.e. change #ifdef to #if, etc.
6928
6929 * null-threads.c: fix various preprocessor usages of new public
6930 symbols to expect 0 or 1 values rather than 1 or undefined.
6931 i.e. change #ifdef to #if, etc.
6932
6933 * lang.c: fix various preprocessor usages of new public
6934 symbols to expect 0 or 1 values rather than 1 or undefined.
6935 i.e. change #ifdef to #if, etc.
6936
6937 * lang.h: fix various preprocessor usages of new public
6938 symbols to expect 0 or 1 values rather than 1 or undefined.
6939 i.e. change #ifdef to #if, etc.
6940
6941 * iselect.h: fix various preprocessor usages of new public
6942 symbols to expect 0 or 1 values rather than 1 or undefined.
6943 i.e. change #ifdef to #if, etc.
6944
6945 * init.c: fix various preprocessor usages of new public
6946 symbols to expect 0 or 1 values rather than 1 or undefined.
6947 i.e. change #ifdef to #if, etc.
6948
6949 * gh_data.c: fix various preprocessor usages of new public
6950 symbols to expect 0 or 1 values rather than 1 or undefined.
6951 i.e. change #ifdef to #if, etc.
6952
6953 * gh.h: fix various preprocessor usages of new public
6954 symbols to expect 0 or 1 values rather than 1 or undefined.
6955 i.e. change #ifdef to #if, etc.
6956
6957 * gen-scmconfig.c: change most new public symbols to be defined to
6958 0 or 1 rather than being either 1 or undefined.
6959
6960 * gc_os_dep.c: fix various preprocessor usages of new public
6961 symbols to expect 0 or 1 values rather than 1 or undefined.
6962 i.e. change #ifdef to #if, etc.
6963 (STACK_GROWS_DOWN): define to 0 or 1 rather than 1 or undef.
6964
6965 * gc.h: fix various preprocessor usages of new public
6966 symbols to expect 0 or 1 values rather than 1 or undefined.
6967 i.e. change #ifdef to #if, etc.
6968
6969 * gc-card.c: fix various preprocessor usages of new public
6970 symbols to expect 0 or 1 values rather than 1 or undefined.
6971 i.e. change #ifdef to #if, etc.
6972
6973 * gc-mark.c: fix various preprocessor usages of new public
6974 symbols to expect 0 or 1 values rather than 1 or undefined.
6975 i.e. change #ifdef to #if, etc.
6976
6977 * feature.c: fix various preprocessor usages of new public
6978 symbols to expect 0 or 1 values rather than 1 or undefined.
6979 i.e. change #ifdef to #if, etc.
6980
6981 * evalext.c: fix various preprocessor usages of new public
6982 symbols to expect 0 or 1 values rather than 1 or undefined.
6983 i.e. change #ifdef to #if, etc.
6984
6985 * eval.h: fix various preprocessor usages of new public
6986 symbols to expect 0 or 1 values rather than 1 or undefined.
6987 i.e. change #ifdef to #if, etc.
6988
6989 * eval.c: fix various preprocessor usages of new public
6990 symbols to expect 0 or 1 values rather than 1 or undefined.
6991 i.e. change #ifdef to #if, etc.
6992
6993 * eq.c: fix various preprocessor usages of new public
6994 symbols to expect 0 or 1 values rather than 1 or undefined.
6995 i.e. change #ifdef to #if, etc.
6996
6997 * coop.c: fix various preprocessor usages of new public
6998 symbols to expect 0 or 1 values rather than 1 or undefined.
6999 i.e. change #ifdef to #if, etc.
7000
7001 * coop-threads.c: fix various preprocessor usages of new public
7002 symbols to expect 0 or 1 values rather than 1 or undefined.
7003 i.e. change #ifdef to #if, etc.
7004
7005 * coop-pthreads.c: fix various preprocessor usages of new public
7006 symbols to expect 0 or 1 values rather than 1 or undefined.
7007 i.e. change #ifdef to #if, etc.
7008
7009 * coop-defs.h: fix various preprocessor usages of new public
7010 symbols to expect 0 or 1 values rather than 1 or undefined.
7011 i.e. change #ifdef to #if, etc.
7012
7013 * convert.i.c: fix various preprocessor usages of new public
7014 symbols to expect 0 or 1 values rather than 1 or undefined.
7015 i.e. change #ifdef to #if, etc.
7016
7017 * continuations.c: fix various preprocessor usages of new public
7018 symbols to expect 0 or 1 values rather than 1 or undefined.
7019 i.e. change #ifdef to #if, etc.
7020
7021 * _scm.h: fix various preprocessor usages of new public symbols to
7022 expect 0 or 1 values rather than 1 or undefined. i.e. change
7023 #ifdef to #if, etc.
7024
d11d697a
MV
70252003-03-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7026
9686f86d
MV
7027 * init.c (scm_init_guile_1): Call scm_i_init_deprecated.
7028
7029 * deprecated.c, deprecated.h: New files, to collect deprecated
7030 things in one place.
7031 * Makefile.am: Added them in all the right places.
7032
d11d697a
MV
7033 * Makefile.am (EXTRA_DIST): Added "scmconfig.h.top".
7034 (scmconfig.h): Get "scmconfig.h.top" from $(srcdir) so that VPATH
7035 builds work.
9686f86d
MV
7036 (DOT_X_FILES): Removed "iselect.x".
7037 (DOT_DOC_FILES): Removed "iselect.doc".
d11d697a 7038
e3c0c3b9
RB
70392003-03-25 Rob Browning <rlb@defaultvalue.org>
7040
7041 * win32-socket.h: #include "libguile/__scm.h". Replace usage of
7042 HAVE_WINSOCK2_H with SCM_HAVE_WINSOCK2_H.
7043
7044 * win32-socket.c: #include <config.h> if HAVE_CONFIG_H.
7045
7046 * vports.c: #include <config.h> if HAVE_CONFIG_H.
7047
7048 * unif.c: #include <config.h> if HAVE_CONFIG_H. Replace usage of
7049 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7050
7051 * threads.h: replace usage of struct timespect with
7052 scm_t_timespec. Replace usage of USE_PTHREAD_THREADS with
7053 SCM_USE_PTHREAD_THREADS. Remove typedef for struct timespec in
7054 favor of scm_t_timespec from scmconfig.h.
7055
7056 * threads.c: move libguile/_scm.h include to the top so we pick up
7057 any critical defines like _GNU_SOURCE early. Replace usage of
7058 struct timespect with scm_t_timespec. Replace usage of
7059 STACK_GROWS_UP with SCM_STACK_GROWS_UP. Replace usage of
7060 USE_PTHREAD_THREADS with SCM_USE_PTHREAD_THREADS.
7061
7062 * threads-plugin.h: replace usage of struct timespect with
7063 scm_t_timespec.
7064
7065 * threads-plugin.c: #include <config.h> if HAVE_CONFIG_H. Replace
7066 usage of struct timespect with scm_t_timespec.
7067
7068 * tags.h: move HAVE_STDINT_H handling to scmconfig.h. Move
7069 HAVE_INTTYPES_H handling to scmconfig.h. #include
7070 "libguile/__scm.h". Rework handling for scm_t_bits,
7071 scm_t_signed_bits, SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
7072 SCM_T_SIGNED_BITS_MIN, and SIZEOF_SCM_T_BITS to use scm_t_intptr,
7073 scm_t_uintptr, SCM_SIZEOF_INTPTR_T, and SCM_SIZEOF_UINTPTR_T, and
7074 SCM_SIZEOF_UNSIGNED_LONG. Rename usage of HAVE_ARRAYS to
7075 SCM_HAVE_ARRAYS.
7076
7077 * symbols.c: #include <config.h> if HAVE_CONFIG_H.
7078
7079 * struct.c: #include <config.h> if HAVE_CONFIG_H.
7080
7081 * strports.c: #include <config.h> if HAVE_CONFIG_H.
7082
7083 * strop.c: #include <config.h> if HAVE_CONFIG_H.
7084
7085 * stime.h: move handling of time related headers to scmconfig.h.
7086
7087 * stime.c: #include <config.h> if HAVE_CONFIG_H.
7088
7089 * stacks.c: replace usage of STACK_GROWS_UP with
7090 SCM_STACK_GROWS_UP.
7091
7092 * sort.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
7093 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7094
7095 * socket.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
7096 of uint32 and HAVE_UINT_32 with scm_t_int32.
7097
7098 * smob.c: #include <config.h> if HAVE_CONFIG_H.
7099
7100 * simpos.c: #include <config.h> if HAVE_CONFIG_H.
7101
7102 * script.c: #include <config.h> if HAVE_CONFIG_H.
7103
7104 * scmsigs.c: #include <config.h> if HAVE_CONFIG_H.
7105
7106 * scmconfig.h.top: new file -- preamble for scmconfig.h.
7107
7108 * rw.c: #include <config.h> if HAVE_CONFIG_H.
7109
7110 * regex-posix.c: #include <config.h> if HAVE_CONFIG_H.
7111
7112 * read.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7113
7114 * rdelim.c: #include <config.h> if HAVE_CONFIG_H.
7115
7116 * random.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
7117 of LONG32, LONG64, SIZEOF_LONG, and HAVE_LONG_LONGS with
7118 scm_t_int32, scm_t_int64, and SCM_HAVE_T_INT64. Rename usage of
7119 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7120
7121 * ramap.c: replace usage of HAVE_LONG_LONGS with
7122 "SCM_SIZEOF_LONG_LONG != 0".
7123
7124 * putenv.c: #include <config.h> if HAVE_CONFIG_H. #include
7125 "libguile/scmconfig.h".
7126
7127 * pthread-threads.c: #include <config.h> if HAVE_CONFIG_H.
7128
7129 * print.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7130 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7131
7132 * posix.c: #include <config.h> if HAVE_CONFIG_H.
7133
7134 * ports.c: #include <config.h> if HAVE_CONFIG_H.
7135
7136 * objects.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7137
7138 * numbers.h: replace usage of HAVE_FLOATINGPOINT_H with
7139 SCM_HAVE_FLOATINGPOINT_H. Replace usage of HAVE_IEEEFP_H with
7140 SCM_HAVE_IEEEFP_H. Replace usage of HAVE_NAN_H with
7141 SCM_HAVE_NAN_H. Replace usage of STDC_HEADERS with
7142 SCM_HAVE_STDC_HEADERS. Replace usage of ptrdiff_t with
7143 scm_t_ptrdiff. Replace usage of HAVE_LONG_LONGS with
7144 "SCM_SIZEOF_LONG_LONG != 0".
7145
7146 * numbers.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
7147 of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0". Replace
7148 usage of ptrdiff_t with scm_t_ptrdiff. Replace usage of
7149 SIZEOF_PTRDIFF_T with SCM_SIZEOF_SCM_T_PTRDIFF.
7150
7151 * num2integral.i.c: #include <config.h> if HAVE_CONFIG_H.
7152
7153 * null-threads.h: replace usage of struct timespect with
7154 scm_t_timespec.
7155
7156 * net_db.c: #include <config.h> if HAVE_CONFIG_H.
7157
7158 * mkstemp.c: #include <config.h> if HAVE_CONFIG_H. #include
7159 "libguile/__scm.h". Remove definition of gcc_uint64_t in favor of
7160 scm_t_uint64 and rename usages.
7161
7162 * mallocs.c: #include <config.h> if HAVE_CONFIG_H.
7163
7164 * load.c: #include <config.h> if HAVE_CONFIG_H.
7165
7166 * iselect.h: move handling of time related headers to scmconfig.h.
7167 Rename usage of HAVE_SYS_SELECT_H to SCM_HAVE_SYS_SELECT_H.
7168 Rename usage of HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Rename
7169 usage of USE_COOP_THREADS to SCM_USE_COOP_THREADS.
7170
7171 * iselect.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7172 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
7173 USE_NULL_THREADS to SCM_USE_NULL_THREADS.
7174
7175 * ioext.c: #include <config.h> if HAVE_CONFIG_H.
7176
7177 * inline.h: #include "libguile/__scm.h" at the top. Change code
7178 to use SCM_C_INLINE and SCM_INLINE_C_INCLUDINT_INLINE_H to decide
7179 what to do instead of creating a new public #define. Rename usage
7180 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
7181 USE_NULL_THREADS to SCM_USE_NULL_THREADS. Rename usage of
7182 USE_COPT_THREADS to SCM_USE_COPT_THREADS.
7183
7184 * inline.c: rearrange handling -- now we just #define
7185 SCM_INLINE_C_INCLUDING_INLINE_H to 1 and #include
7186 "libguile/inline.h". scmconfig.h will define SCM_C_INLINE as
7187 appropriate, and we use that in inline.h along with the above
7188 define to determine how to respond.
7189
7190 * init.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
7191 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7192
7193 * guile.c: #include <config.h> if HAVE_CONFIG_H.
7194
7195 * gh_data.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7196 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7197
7198 * gh.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7199
7200 * gen-scmconfig.h.in: new file -- see gen-scmconfig.c for details.
7201
7202 * gen-scmconfig.c: new file -- see comments in file for details.
7203
7204 * gdbinit.c: #include <config.h> if HAVE_CONFIG_H.
7205
7206 * gc_os_dep.c: #include <config.h> if HAVE_CONFIG_H. Replace
7207 usage of STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7208
7209 * gc.h: replace usage of SIZEOF_LONG with
7210 SCM_SIZEOF_UNSIGNED_LONG. Replace usage of USE_PTHREAD_THREADS
7211 with SCM_USE_PTHREAD_THREADS. Remove SCM_SIZEOF_LONG definition
7212 since we handle that in scmconfig.h now.
7213
7214 * gc.c: #include <config.h> if HAVE_CONFIG_H.
7215
7216 * gc-mark.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7217 of HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of
7218 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7219
7220 * gc-malloc.c: #include <config.h> if HAVE_CONFIG_H.
7221
7222 * gc-card.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7223 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7224
7225 * fports.c: #include <config.h> if HAVE_CONFIG_H.
7226
7227 * filesys.c: #include <config.h> if HAVE_CONFIG_H.
7228
7229 * feature.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7230 of USE_NULL_THREADS to SCM_USE_NULL_THREADS.
7231
7232 * extensions.c: #include <config.h> if HAVE_CONFIG_H.
7233
7234 * evalext.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7235 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7236
7237 * eval.c: #include <config.h> if HAVE_CONFIG_H. #include
7238 "libguile/__scm.h" rather than scmconfig.h. Rename usage of
7239 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
7240 with "SCM_SIZEOF_LONG_LONG != 0".
7241
7242 * error.c: #include <config.h> if HAVE_CONFIG_H.
7243
7244 * eq.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
7245 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
7246 with "SCM_SIZEOF_LONG_LONG != 0".
7247
7248 * deprecation.c: #include <config.h> if HAVE_CONFIG_H.
7249
7250 * coop.c: replace usage of struct timespect with scm_t_timespec.
7251 #include <config.h> if HAVE_CONFIG_H.
7252
7253 * coop-threads.c: #include "libguile/_scm.h" early. Replace
7254 usage of struct timespect with scm_t_timespec. Replace usage of
7255 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7256
7257 * coop-pthreads.c: #include "libguile/_scm.h" early. Replace
7258 usage of struct timespect with scm_t_timespec. Replace usage of
7259 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7260
7261 * coop-defs.h: move handling of time related headers to
7262 scmconfig.h. Add #include "libguile/__scm.h". Rename usage of
7263 HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Replace usage of struct
7264 timespect with scm_t_timespec.
7265
7266 * convert.i.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7267
7268 * convert.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7269
7270 * convert.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7271 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7272
7273 * continuations.c: move libguile/_scm.h include to the top so we
7274 pick up any critical defines like _GNU_SOURCE early.
7275
7276 * backtrace.c: #include <config.h> if HAVE_CONFIG_H.
7277
7278 * async.c: #include <config.h> if HAVE_CONFIG_H.
7279
7280 * alloca.c: #include <config.h> if HAVE_CONFIG_H.
7281
7282 * _scm.h: #include <config.h> if HAVE_CONFIG_H.
7283 Rename usage of USE_PTHREAD_THREADS to SCM_USE_PTHREAD_THREADS.
7284
7285 * __scm.h: move libguile/scmconfig.h include up to the top, so
7286 we're sure to pick up any critical defines like _GNU_SOURCE early.
7287 #include <limits.h> removed in favor of scmconfig.h inclusion when
7288 appropriate. STDC_HEADERS based inclusion of stdlib.h,
7289 sys/types.h, stddef.h, and sys/stdtypes.h removed in favor of
7290 scmconfig.h inclusion when appropriate. Various Win32 related
7291 definitions removed in favor of scmconfig.h inclusion when
7292 appropriate.
7293 (HAVE_UINTPTR_T): definition removed (see NEWS).
7294 (SIZEOF_PTRDIFF_T): definition removed (see NEWS).
7295 (HAVE_LONG_LONGS): definition removed (see NEWS).
7296 (HAVE_LONG_LONG): definition removed (see NEWS).
7297 (HAVE_PTRDIFF_T): definition removed (see NEWS).
7298
7299 * Makefile.am: scmconfig.h is now generated by building and
7300 running gen-scmconfig.h and capturing its output. gen-scmconfig
7301 uses config.h and the configure.in generated gen-scmconfig.h to
7302 decide what to output. See gen-scmconfig.c for details.
7303 (noinst_PROGRAMS): add gen-scmconfig.
7304 (gen_scmconfig_SOURCES): new variable.
7305 (gen-scmconfig.$(OBJEXT)): new target - be careful to handle
7306 cross-compiling right.
7307 (scmconfig.h): build scmconfig.h from gen-scmconfig's output.
7308 (BUILT_SOURCES): add scmconfig.h.
7309
25e0bf97
MV
73102003-03-19 Marius Vollmer <mvo@zagadka.de>
7311
7312 * gc_os_dep.c: Added defines for sparc-unknown-netbsdelf1.5 from
7313 Adrian Bunk. Thanks!
7314
74b6d6e4
MD
73152003-03-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7316
7317 * goops.c (make_class_from_template): New fourth arg:
7318 applicablep.
7319 (scm_class_extended_generic_with_setter, scm_class_self): Fixed
7320 cpls.
7321
7322 * smob.c (scm_set_smob_apply): Call scm_i_inherit_applicable.
7323
7324 * goops.c, objects.c, objects.h (scm_make_extended_class): New
7325 second arg: applicablep.
7326 (scm_i_inherit_applicable): New function.
7327
7328 * goops.c, goops.h (scm_class_applicable,
7329 scm_class_extended_accessor): New classes.
7330
5c9e7dad
DH
73312003-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
7332
7333 * procs.c (scm_procedure_documentation): Removed redundant
7334 SCM_NIMP test and replaced other calls to SCM_IMP by more explicit
7335 predicates.
7336
f8af5c6d
MD
73372003-03-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7338
c614a00b
MD
7339 * list.c, list.h (scm_filter, scm_filter_x): New functions.
7340
109c2c9f
MD
7341 * modules.c (scm_module_import_interface): New function.
7342
f8af5c6d
MD
7343 * goops.c, goops.h (scm_class_accessor_method): Renamed from
7344 scm_class_accessor.
7345 (scm_class_accessor): New class.
7346
a48d60b1
MD
73472003-03-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7348
7349 * goops.c (scm_primitive_generic_generic): Enable primitive
7350 generic if not enabled.
7351 (scm_sys_goops_loaded): Setup unextended primitive generics.
7352
7353 * goops.c, goops.h (scm_c_extend_primitive_generic): New function.
7354
7355 * snarf.h (SCM_PRIMITIVE_GENERIC, SCM_PRIMITIVE_GENERIC_1): New
7356 snarf macros.
7357
7358 * numbers.c (scm_abs): Use SCM_PRIMITIVE_GENERIC. (This is only a
7359 testing example. All uses of SCM_GPROC should be converted.)
7360
7361 * procprop.c (scm_stand_in_scm_proc): Use scm_assq instead of
7362 scm_assoc.
7363
7364 * eq.c (scm_equal_p): Turned into a primitive generic.
7365
84edc049
RB
73662003-02-27 Rob Browning <rlb@defaultvalue.org>
7367
7368 * Makefile.am (scmconfig.h): new target -- generate file from
7369 ../config.h.
7370 (modinclude_HEADERS): remove version.h.
7371 (nodist_modinclude_HEADERS): add version.h.
7372
ea5c9285
MD
73732003-02-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7374
b4a1358c
MD
7375 This fixes a serious GC bug, introduced during the latest
7376 reorganization of the GC, which disabled freeing of structs and
7377 GOOPS objects:
7378
7379 * struct.c (scm_struct_prehistory): Init scm_i_structs_to_free to
7380 SCM_EOL.
53af8255
MD
7381 (scm_struct_prehistory): Move scm_free_structs to
7382 scm_before_mark_c_hook.
ea5c9285 7383
b4a1358c
MD
7384 * gc-card.c (sweep_card): Check that we haven't swept structs on
7385 this card before. That can happen if scm_i_sweep_all_segments has
7386 been called from some other place than scm_igc.
7387
c35738c1
MD
73882003-02-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7389
231a4ea8
MD
7390 * environments.c (DEFAULT_OBARRAY_SIZE): Changed from 137 to 31
7391 (since hash tables now adapt their size).
7392
7393 * modules.c (scm_modules_prehistory): Changed from 2001 to 1533
7394 (current number of prehistory bindings; hashtable code will select
7395 a prime which is greater than this value).
7396
7397 * symbols.c (scm_symbols_prehistory): Changed from 1009 to 2139
7398 (current number of initial symbols).
7399
7400 * properties.c (scm_init_properties): Don't specify size of
7401 scm_properties_whash.
7402
7403 * objprop.c (scm_init_objprop): Don't specify size of
7404 scm_object_whash.
7405
7406 * keywords.c (scm_init_keywords): Don't specify a hash table size.
7407
c35738c1
MD
7408 * hooks.c (scm_c_hook_add): Fixed bug in append mode.
7409
7410 The following changes introduce the use of resizable hash tables
7411 throughout Guile. It also renames the old *-hash-table* functions
7412 to *-alist-vector* and places them, together with the rest of the
7413 weak vector support, in the module (ice-9 weak-vector). We should
7414 probably introduce a new, better, API for weak references, for
7415 example "weak pairs" a la MIT-Scheme. (In Chez scheme, they even
7416 look like and are used like ordinary pairs.)
7417
7418 * environments.c (obarray_enter, obarray_retrieve, obarray_remove,
7419 leaf_environment_fold, obarray_remove_all): Use hashtable
7420 accessors.
7421
7422 * gc.c (scm_init_storage): Moved hook initialization to
7423 scm_storage_prehistory.
7424 (scm_storage_prehistory): New function.
7425 (scm_igc): Added commentary about placement of
7426 scm_after_sweep_c_hook.
7427
7428 * gc-mark.c (scm_mark_all): Use hashtable accessors.
7429 (scm_gc_mark_dependencies): Use SCM_WVECT_WEAK_KEY_P and
7430 SCM_WVECT_WEAK_VALUE_P.
7431
7432 * hashtab.c, hashtab.h (scm_hash_for_each, scm_hash_map): New
7433 functions.
7434 (scm_vector_to_hash_table, scm_c_make_resizing_hash_table):
7435 Removed.
7436 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table,
7437 scm_make_doubly_weak_hash_table): Moved here from weaks.c.
7438
7439 * init.c (scm_init_guile_1): Removed call to scm_init_weaks; Added
7440 calls to scm_storage_prehistory and scm_hashtab_prehistory.
7441
7442 * modules.c (module-reverse-lookup): Use hashtable accessors.
7443
7444 * symbols.c, symbols.h (scm_i_hash_symbol): New function.
7445
7446 * weaks.c, weaks.h (scm_make_weak_key_alist_vector,
7447 scm_make_weak_value_alist_vector,
7448 scm_make_doubly_weak_alist_vector): New functions.
7449
7450 * weaks.c (scm_init_weaks_builtins): New function.
7451
7452 * weaks.h (SCM_WVECTF_WEAK_KEY, SCM_WVECTF_WEAK_VALUE,
7453 SCM_WVECTF_NOSCAN, SCM_WVECT_WEAK_KEY_P, SCM_WVECT_WEAK_VALUE_P,
7454 SCM_WVECT_NOSCAN_P): New macros.
7455
7456 * weaks.c (scm_scan_weak_vectors): Use SCM_WVECT_WEAK_KEY_P
7457 and SCM_WVECT_WEAK_VALUE_P.
7458
7459 * weaks.c, weaks.h (scm_i_allocate_weak_vector): Renamed from
7460 allocate_weak_vector and exported.
7461
0a4c1355
MD
74622003-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7463
7464 * hashtab.c: Undid thread safety. (We decided that it's better to
7465 let the user explicitly protect the tables (or not) according what
7466 is suitable for the application.)
7467
87ca11ff
MD
74682003-02-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7469
7470 * hashtab.c (scm_hash_fn_remove_x, scm_internal_hash_fold): Made
7471 thread safe and handle resizing tables.
7472 (scm_ihashx, scm_sloppy_assx, scm_delx_x): Removed
7473 SCM_DEFER/ALLOW_INTS.
7474
f59a096e
MD
74752003-02-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7476
7477 * hashtab.c (scm_vector_to_hash_table,
7478 scm_c_make_resizing_hash_table, scm_make_hash_table): New
7479 functions.
7480 (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x): Made thread
7481 safe and handle resizing tables.
7482
7483 * weaks.c (scm_make_weak_key_hash_table,
7484 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
7485 Size argument made optional. Return resizable table if not
7486 specified.
7487
4b612c5b
MD
74882003-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7489
7490 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
7491 Fixed formals tests for closures. (Thanks to Kevin Ryde.)
7492
b3d7f6df
MD
74932003-02-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7494
7495 * debug.c (scm_procedure_source): Handle all objects for which
7496 procedure? is #t. (Thanks to Bill Schottstaedt.)
7497
756414cf
MD
74982003-01-23 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7499
361d631f
MD
7500 * futures.c (mark_futures): Don't need to mark data of recycled
7501 futures.
7502 (scan_futures, cleanup_undead): Be smarter about marking
7503 futures---avoid unnecessary passes through future lists.
7504
756414cf
MD
7505 * futures.h, futures.c: New files; Introduced recycling of
7506 futures. For fine-grained threading this lifts performance to
7507 another level. We can now use parallelization in inner loops of
7508 Guile programs without impossible overhead.
7509
7510 * threads.h, threads.c: Moved futures to their own file.
7511
7512 * Makefile.am (libguile_la_SOURCES): Added futures.c.
7513 (DOT_X_FILES): Added futures.x.
7514 (DOT_DOC_FILES): Added futures.doc.
7515 (modinclude_HEADERS): Added futures.h.
7516
7517 * threads.c, threads.h (scm_i_create_thread): Renamed from
7518 create_thread and made global.
7519
7520 * futures.c (scm_make_future): New procedure.
7521
7522 * eval.c: #include "libguile/futures.h".
7523
7524 * init.c: #include "futures.h"
7525 (scm_init_guile_1): Call scm_init_futures.
7526
7527 * stime.c (SCM_TIME_UNITS_PER_SECOND): Renamed from CLKTCK.
7528
7529 * stime.h (SCM_TIME_UNITS_PER_SECOND): Definition moved here.
7530
7531 * eval.c, eval.h (scm_trampoline_0, scm_i_call_closure_0): New
7532 functions.
7533
7534 * eval.c (scm_trampoline_1): Fixed arguments test for closures.
7535
b4debead
MD
75362003-01-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7537
7538 * threads.c (create_thread): Don't unwind dynwind chain of parent
7539 thread before creation. Just start the new thread with an empty
7540 dynwind chain.
7541
93f26b7b
MD
75422003-01-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7543
7544 * evalext.c, evalext.h (scm_self_evaluating_p): New function.
7545
38d8927c
MD
75462003-01-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7547
41c96c32
MD
7548 * threads.c (scm_timed_wait_condition_variable): Support timed
7549 waiting also for simple condition variables.
7550
38d8927c
MD
7551 * goops.c (TEST_CHANGE_CLASS): Use scm_change_object_class instead
7552 of calling the procedure change-object-class.
7553
9cf5d9b7
MD
75542003-01-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7555
7556 * ramap.c (scm_ramapc): Typo in error message.
7557
bbf8d523
MD
75582003-01-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7559
b46fae00
MD
7560 * goops.c (scm_sys_prep_layout_x): Bugfix: Only create layout for
7561 slots with instance allocation.
7562
bbf8d523
MD
7563 * goops.c, goops.h (scm_class_extended_generic_with_setter): New
7564 class.
7565 (scm_compute_applicable_methods): Use scm_generic_function_methods.
7566
7567 * goops.c (scm_generic_function_methods): Support extended
7568 generic functions.
7569
ebf9b47c
MD
75702002-12-29 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7571
7572 * eval.c (unmemocopy): Bugfix: scm_sym_delay --> scm_sym_future.
2e37d6a2 7573 Thanks to Neil for pointing this out!
ebf9b47c 7574
14a9ba3f
NJ
75752002-12-29 Neil Jerram <neil@ossau.uklinux.net>
7576
7577 * lang.h: Remove declarations matching definitions removed from
7578 lang.c (just below).
7579
c6a040a8
NJ
75802002-12-28 Neil Jerram <neil@ossau.uklinux.net>
7581
6054d805
NJ
7582 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
7583 scm_m_while, scm_nil_eq): Remove definitions that were superfluous
7584 and already commented out.
7585
c6a040a8
NJ
7586 * read.h (scm_lreadparen), read.c (scm_lreadr, scm_read_token,
7587 scm_lreadparen): Support reading vectors with Elisp syntax if
7588 SCM_ELISP_READ_EXTENSIONS is defined. (SCM_ELISP_READ_EXTENSIONS
7589 is not currently defined, and there isn't even a configure switch
7590 to enable it yet.)
7591
3742c12f
MV
75922002-12-26 Marius Vollmer <mvo@zagadka.ping.de>
7593
7594 * Makefile.am (c-tokenize.o): Refer to source via $< so that vpath
7595 builds work.
7596 (EXTRA_DIST): Added version.h.in.
7597
fb50ef08
MD
75982002-12-21 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7599
7600 This change makes it possible for one thread to do lazy sweeping
7601 while other threads are running. Now only the mark phase need to
7602 have all threads asleep. We should look further into this issue.
7603 Presently, I've put the locking of scm_i_sweep_mutex at
7604 "conservative" places due to my current lack of knowledge about
7605 the garbage collector. Please feel free to restrict these regions
7606 further to allow for maximal parallelism!
7607
7608 * gc.c, gc.h (scm_i_sweep_mutex): New mutex.
7609
7610 * gc.c (scm_gc_for_newcell), gc-malloc.c (scm_realloc,
7611 scm_gc_register_collectable_memory): Substitute locking of
7612 scm_i_sweep_mutex for calls to scm_i_thread_put_to_sleep.
7613 (scm_igc): Lock sweep mutex here instead of in callers; Calls to
7614 scm_i_thread_put_to_sleep/scm_i_thread_wake_up used to demarkate
7615 the single-thread section (which now only contains the mark
7616 phase).
7617 (scm_gc): Don't lock sweeo mutex here since scm_igc locks it;
7618 Removed SCM_DEFER/ALLOW_INTS. Simply call scm_igc directly.
7619
7620 * threads.c (gc_section_mutex): Removed.
7621
9ed24633
MD
76222002-12-19 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7623
0d48aca5
MD
7624 * threads.c (create_thread): Clear parent field in root state in
7625 order not to unnecessarily remember dead threads.
7626
9ed24633
MD
7627 * eval.c (call_subr2o_1, call_lsubr2_2): New functions.
7628 (scm_trampoline_1, scm_trampoline_2): Use them.
7629
29717c89
MD
76302002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7631
7632 Partial introduction of real plugin interface.
7633
7634 * Makefile.am (modinclude_HEADERS): Added threads-plugin.h.
7635 (EXTRA_DIST): Added threads-plugin.c.
7636
7637 * threads-plugin.h, threads-plugin.c: New files.
7638
7639 * threads.h: #include "libguile/threads-plugin.h".
7640
7641 * threads.c: #include "libguile/threads-plugin.c".
7642
7643 * pthread-threads.c: Temporarily remove debugging functions.
7644
7645 * threads.c, threads.h (scm_yield): Added back.
7646
e29e0b09
MD
76472002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7648
7649 * threads.c (really_launch): Detach before unlocking
7650 thread_admin_mutex in order not to risk being joined.
7651 (scm_i_thread_put_to_sleep, scm_i_thread_wake_up): Keep
7652 thread_admin_mutex locked during GC.
7653
7654 * pthread-threads.c, pthread-threads.h: Improvements to debugging
7655 functions.
7656
0b6843b1 76572002-12-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
93cd4dcd 7658
6da2dfc4
MD
7659 * pthread-threads.c, pthread-threads.h (SCM_DEBUG_THREADS): Added
7660 support for debugging mutex operations.
7661
1b92fb6b
MD
7662 * threads.c (scm_thread): Removed filed joining_threads.
7663 (thread_print): Print thread number as well as address of thread
7664 structure.
0b6843b1
MD
7665 (scm_join_thread): Bugfix.
7666 (scm_lock_mutex, scm_try_mutex, scm_unlock_mutex,
7667 scm_timed_wait_condition_variable, scm_signal_condition_variable,
7668 scm_broadcast_condition_variable): Use the low-level API.
7669 (scm_all_threads): Return copy of thread list (to prevent
7670 unintended destruction).
7671 (scm_threads_prehistory): Initialize heap_mutex of fake thread.
1b92fb6b 7672
93cd4dcd
MD
7673 * pthread-threads.c, pthread-threads.h, threads.c: Fixes to
7674 pthread "native" recursive mutex support.
7675
2ff4f181
MD
76762002-12-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7677
28d52ebb
MD
7678 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): New definitions.
7679 Simply lock a thread C API recursive mutex.
7680 (SCM_NONREC_CRITICAL_SECTION_START,
7681 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
7682 SCM_REC_CRITICAL_SECTION_END): Removed.
7683
7684 * eval.c: Replaced SOURCE_SECTION_START / SOURCE_SECTION_END with
7685 direct calls to scm_rec_mutex_lock / unlock around the three calls
7686 to scm_m_expand_body.
7687
7688 * eval.c, eval.h (promise_free): New function.
7689 (scm_force): Rewritten; Now thread-safe; Removed
7690 SCM_DEFER/ALLOW_INTS.
7691
7692 * pthread-threads.h: Added partially implemented plugin interface
7693 for recursive mutexes. These are, for now, only intended to be
7694 used internally within the Guile implementation.
7695
7696 * pthread-threads.c: New file.
7697
7698 * threads.c: Conditionally #include "pthread-threads.c".
7699
7700 * eval.c, eval.h (scm_makprom, scm_force): Rewritten to be
7701 thread-safe;
7702
7703 * snarf.h (SCM_MUTEX, SCM_GLOBAL_MUTEX, SCM_REC_MUTEX,
7704 SCM_GLOBAL_REC_MUTEX): New macros.
7705
7706 * eval.c, threads.c, threads.h, snarf.h: Rewrote critical section
7707 macros---use mutexes instead.
7708
7709 * tags.h (SCM_IM_FUTURE): New tag.
7710
7711 * eval.c (scm_m_future): New primitive macro.
7712 (SCM_CEVAL): Support futures.
7713 (unmemocopy): Support unmemoization of futures.
7714
7715 * print.c (scm_isymnames): Name of future isym.
7716
2ff4f181
MD
7717 * version.c: Unmade some changes to my private copy that got
7718 committed by mistake.
7719
392d2833
MD
77202002-12-11 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7721
e200ddee
MD
7722 * gc-malloc.c, gc.h, init.c: Reverted gc-malloc change of
7723 2002-12-10.
7724
392d2833
MD
7725 * gc.c (scm_igc): Don't call scm_i_thread_invalidate_freelists.
7726
7727 * gc.c (scm_gc_sweep): Call it here instead, which is a more
7728 logical place.
7729
7730 * threads.c (create_thread): Remember root object until the handle
7731 of the new thread is on all_threads list.
7732
7733 * root.c (scm_make_root): Moved copying of fluids until after
7734 creation of root handle so that the fluids are GC protected. Also
7735 removed the critical section.
7736
c4c52ebe
MD
77372002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7738
960c408c
MD
7739 * gc-malloc.c, gc.h (scm_gc_malloc_prehistory): New function.
7740
3cdde9d6 7741 * gc-malloc.c (malloc_mutex): New mutex.
960c408c 7742 (scm_gc_malloc_prehistory): Initialize it.
3cdde9d6
MD
7743 (scm_realloc): Serialize call to realloc
7744 (scm_calloc): Same for calloc.
7745 Thanks to Wolfgang Jaehrling!
7746 (Now we have to make sure all calls to malloc/realloc are made
7747 through scm_malloc.)
7748
960c408c
MD
7749 * init.c (scm_init_guile_1): Call scm_gc_malloc_prehistory.
7750
c4c52ebe
MD
7751 * threads.c (really_launch): Release heap (to prevent deadlock).
7752 (create_thread): Release heap before locking thread admin mutex.
7753
b0dc3d71
MD
77542002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7755
7756 * threads.c (scm_i_thread_invalidate_freelists): New
7757 function.
7758
7759 * gc.c (scm_igc): Call scm_i_thread_invalidate_freelists.
7760
7761 * modules.c (scm_export): Inserted a return statement.
7762
06e80f59
HWN
77632002-12-10 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7764
7765 * modules.c (scm_export): new function
7766
7767 * gc-card.c: add a note about malloc()/free() overhead.
7768
a12611c3
MD
77692002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7770
7771 * Makefile.am (c-tokenize.$(OBJEXT)): Don't look for c-tokenize.c
7772 in srcdir.
7773
c7fabadf
MD
77742002-12-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7775
7776 These changes remove scm_ints_disabled (which hasn't has any
7777 effect in Guile for quite some time).
7778
7779 * async.c, error.h (scm_ints_disabled): Removed.
7780
7781 * gc.c (scm_gc_for_newcell), init.c (scm_init_guile_1),
7782 root.c (scm_internal_cwdr), gdbint.c (SCM_BEGIN_FOREIGN_BLOCK,
7783 SCM_END_FOREIGN_BLOCK): Don't touch scm_ints_disabled.
7784 (old_ints): Removed.
7785
7786 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Define as a recursive
7787 critical section.
7788 (SCM_REDEFER_INTS, SCM_ALLOW_INTS): Define as SCM_DEFER_INTS and
7789 SCM_ALLOW_INTS.
7790
9bc4701c
MD
77912002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7792
52340b65
MD
7793 * threads.c (scm_mutex_lock, scm_cond_wait, scm_cond_timedwait):
7794 Removed accidental #if 0 around these functions.
7795
9bc4701c
MD
7796 These changes are the start of support for preemptive
7797 multithreading. Marius and I have agreed that I commit this code
7798 into the repository although it isn't thoroughly tested and surely
7799 introduces many bugs. The bugs should only be exposed when using
7800 threads, though. Signalling and error handling for threads is
7801 very likely broken. Work on making the implementation cleaner and
7802 more efficient is needed.
7803
7804 * __scm.h (SCM_ALLOW_INTS_ONLY): Removed.
7805 (SCM_NONREC_CRITICAL_SECTION_START,
7806 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
7807 SCM_REC_CRITICAL_SECTION_END): New macros.
7808 (SCM_CRITICAL_SECTION_START/END): Defined here.
7809
7810 * eval.c: Insert SOURCE_SECTION_START / SOURCE_SECTION_END around
7811 the three calls to scm_m_expand_body.
7812
7813 * gc.h: #include "libguile/pthread-threads.h";
7814 (SCM_FREELIST_CREATE, SCM_FREELIST_LOC): New macros.
7815
7816 * gc.c (scm_i_freelist, scm_i_freelist2): Defined to be of type
7817 scm_t_key;
7818
7819 * gc.c, gc-freelist.c, inline.h: Use SCM_FREELIST_LOC for freelist
7820 access.
7821
7822 * gc-freelist.c (scm_gc_init_freelist): Create freelist keys.
7823
7824 * gc-freelist.c, threads.c (really_launch): Use
7825 SCM_FREELIST_CREATE.
7826
7827 * gc-malloc.c (scm_realloc, scm_gc_register_collectable_memory):
7828
7829 * gc.c (scm_i_expensive_validation_check, scm_gc,
7830 scm_gc_for_newcell): Put threads to sleep before doing GC-related
7831 heap administration so that those pieces of code are executed
7832 single-threaded. We might consider rewriting these code sections
7833 in terms of a "call_gc_code_singly_threaded" construct instead of
7834 calling the pair of scm_i_thread_put_to_sleep () and
7835 scm_i_thread_wake_up (). Also, we would want to have as many of
7836 these sections eleminated.
7837
7838 * init.c (scm_init_guile_1): Call scm_threads_prehistory.
7839
7840 * inline.h: #include "libguile/threads.h"
7841
7842 * pthread-threads.h: Macros now conform more closely to the
7843 pthreads interface. Some of them now take a second argument.
7844
7845 * threads.c, threads.h: Many changes.
7846
78472002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7848
7849 * Makefile.am (version.h): Changed $^ --> $< in rule for
7850 version.h.
7851
b2cbe8d8
RB
78522002-12-08 Rob Browning <rlb@defaultvalue.org>
7853
7854 * version.h.in (SCM_MICRO_VERSION): use @--@ substitution now.
7855 (SCM_MINOR_VERSION): use @--@ substitution now.
7856 (SCM_MICRO_VERSION): use @--@ substitution now.
7857 (scm_effective_version): new function prototype.
7858
7859 * version.c (scm_effective_version): new function, also add
7860 effective-version.
7861
7862 * Makefile.am (schemelibdir): VERSION -> GUILE_EFFECTIVE_VERSION.
7863 (libpath.h): use GUILE_EFFECTIVE_VERSION to compute
7864 SCM_LIBRARY_DIR.
7865 (version.h): generate this here rather than configure.in. This
7866 approach tracks source edits better (i.e. more immediately).
7867 Might be worth considering for other .in files too.
7868
5441c65c
MV
78692002-12-02 Marius Vollmer <mvo@zagadka.ping.de>
7870
7871 Reorganized thread package selection. A thread package now only
7872 implements a small set of pthread like functions and Guile
7873 implements the rest on top of that. Guile's implementation is
7874 what the "coop-pthreads" package has been previously. Support for
7875 "coop" threads has been removed until I get time to add it again.
7876
7877 * Makefile.am (libguile_la_SOURCES): Removed iselect.c.
7878 (noinst_HEADERS): Removed coop-threads.c, coop-threads.h, coop.c,
7879 null-threads.c, coop-pthreads.c.
7880 (modinclude_HEADERS): Removed coop-defs.h, coop-pthreads.h. Added
7881 pthread-threads.h.
7882
7883 * validate.h (SCM_VALIDATE_THREAD): Moved to threads.h.
7884
7885 * threads.h: Do not include "libguile/coop-defs.h". Include
7886 "libguile/pthread-threads.h" for USE_COPT_THREADS. Removed
7887 (previously deprecated) C level thread API prototypes. They are
7888 now in the thread package specific headers, "null-threads.h" and
7889 "pthread-threads.h".
7890 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
7891 New.
7892 (scm_threads_init): Removed.
7893 (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END,
7894 SCM_THREAD_SWITCHING_CODE, scm_i_switch_counter,
7895 SCM_I_THREAD_SWITCH_COUNT): Define here.
7896 (scm_single_thread_p): Removed.
7897 (scm_call_with_new_thread): Take two args directly instead of list
7898 of two args.
7899 (scm_i_thread_data, scm_i_set_thread_data, SCM_THREAD_LOCAL_DATA,
7900 SCM_SET_THREAD_LOCAL_DATA): Define here.
7901
7902 * threads.c: Merged with "coop-pthreads.c".
7903
7904 * null-threads.h: Implement pthread-like API as a set of macros.
7905
7906 * pthread-threads.h: New, implement pthread-like API by deferring
7907 to pthread itself.
7908
7909 * init.c (scm_init_guile_1): Do not call scm_init_iselect, which
7910 has been lost in the reorganization.
7911
504d99c5
MD
79122002-12-01 Mikael Djurfeldt <mdj@linnaeus>
7913
7914 The following change makes it possible to move procedure
7915 application dispatch outside inner loops. The motivation was
7916 clean implementation of efficient replacements of R5RS primitives
7917 in SRFI-1.
7918
7919 The semantics is clear: scm_trampoline_N returns an optimized
7920 version of scm_call_N (or NULL if the procedure isn't applicable
7921 on N args).
7922
7923 Applying the optimization to map and for-each increases efficiency
7924 noticeably. For example, (map abs ls) is 8 times faster than
7925 before.
7926
7927 * eval.h (scm_t_trampoline_1, scm_t_trampoline_2): New types.
7928
7929 * eval.c, eval.h (scm_trampoline_1, scm_trampoline_2): New functions.
7930
7931 * eval.c (call_subr2_2, call_lsubr_2, call_closure_2): New functions;
7932 (map, for-each): Handle also application on two args as a special
7933 case; Use trampolines.
7934
7935 Other changes:
7936
7937 * sort.c (scm_cmp_function): Choose subr2less for scm_tc7_subr_2o;
7938 (subr2oless): Removed.
7939 (scm_restricted_vector_sort_x): Use scm_return_first to keep the
7940 vector GC protected.
7941
7942 * eval.c (check_map_args): Use scm_out_of_range_pos instead of
7943 scm_out_of_range.
7944
63dd3413
DH
79452002-11-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
7946
7947 * evalext.[ch] (scm_m_undefine, undefine): Deprecated.
7948
4ba5f279
MD
79492002-11-17 Mikael Djurfeldt <mdj@linnaeus>
7950
7951 * debug.c (scm_make_iloc): Added missing "return".
7952
56ae231f
MV
79532002-11-17 Marius Vollmer <mvo@zagadka.ping.de>
7954
7955 * strports.c (scm_eval_string_in_module): Validate second arg to
7956 be a module. Thanks to Arno Peters!
7957
80b28865
DH
79582002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7959
7960 * .cvsignore: remove goops.c
7961
c88b1456
DH
79622002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7963
7964 * modules.c (scm_env_top_level, scm_lookup_closure_module,
7965 module_variable, scm_module_lookup_closure,
7966 scm_module_transformer, scm_sym2var, scm_module_reverse_lookup,
7967 scm_system_module_env_p): Don't compare SCM values with C
7968 operators == or !=. Avoid SCM_IMP predicates. Prefer !SCM_FALSEP
7969 over SCM_NFALSEP.
7970
a8a19efc
DH
79712002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7972
7973 * eval.h (SCM_MAKE_ILOC): New macro.
7974
7975 * debug.c (scm_make_iloc): Use SCM_MAKE_ILOC instead of computing
7976 the iloc bitpattern here.
7977
76734914
MD
79782002-11-14 Mikael Djurfeldt <mdj@linnaeus>
7979
7980 * coop-pthreads.c, coop-pthreads.h: scm_internal_select should be
7981 part of the API, otherwise it's difficult to write Guile
7982 extensions using non-blocking I/O => moved #include
7983 "libguile/iselect.h" from coop-pthreads.c --> coop-pthreads.h.
7984
7985 * coop-pthreads.c (scm_unlock_mutex): Changed s_lock_mutex -->
7986 s_unlock_mutex.
7987
8b5b4a75
MV
79882002-11-10 Marius Vollmer <mvo@zagadka.ping.de>
7989
7990 * __scm.h (USE_THREADS, GUILE_ISELECT): Do not define here. They
7991 are defined in configure.in.
7992
7993 * threads.c: Removed SCM_API from function definitions. SCM_API
7994 is only for declarations.
7995
e5a83084
MD
79962002-11-07 Mikael Djurfeldt <mdj@linnaeus>
7997
9be8bb45
MD
7998 * coop-pthreads.h: Added support for thread specific data to the
7999 generic C API for the coop-pthreads case.
8000
e5a83084
MD
8001 * threads.c, threads.h (scm_cond_init): Undo unintentional API
8002 change.
6c214b62 8003 (scm_cond_broadcast): Added missing function.
e5a83084 8004
7edf178e
MV
80052002-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8006
8007 * coop.c (coop_next_runnable_thread): Removed, wich should have
8008 happened when GUILE_ISELECT was hard-wired.
8009
7f5b1b77
MV
80102002-11-03 Marius Vollmer <mvo@zagadka.ping.de>
8011
7caa1b07
MV
8012 * Makefile.am (libguile_la_SOURCES): Added threads.c
8013 (DOT_DOC_FILES): Added threads.doc.
8014 (DOT_X_FILES): Added threads.x.
8015 (EXTRA_libguile_la_SOURCES): Removed threads.c.
8016 (noinst_HEADERS): Added coop-pthreads.c.
8017 (modinclude_HEADERS): Added coop-pthreads.h.
8018
8019 * __scm.h (USE_THREADS, GUILE_ISELECT): Define when
8020 SCM_DEBUG_DEPRECATED. Removed their use thru-out Guile.
8021
bb11cbf4
MV
8022 * iselect.c: Include "_scm.h" before testing HAVE_UNISTD_H.
8023 Thanks to Bill Schottstaedt!
8024
1d4cbbed
MV
8025 * numbers.c (scm_integer_expt): Make 0^z == 0 for z != 0.
8026
7f5b1b77
MV
8027 * _scm.h (HAVE_RESTARTABLE_SYSCALLS): Do define even when
8028 SCM_COPT_THREADS is defined.
8029 (SCM_SYSCALL): Use EINTR-expection version when SCM_COPT_THREADS
8030 is defined.
8031
8032 * coop-pthreads.c: Some harmless renamings of internal stuff.
8033 (create_thread): New, generalized version of
8034 scm_call_with_new_thread.
8035 (scm_call_with_new_thread): Use it.
8036 (scm_spawn_thread): New, use create_thread.
8037
d52f53b1
MV
80382002-11-02 Marius Vollmer <mvo@zagadka.ping.de>
8039
8040 * coop-pthreads.c, coop-pthreads.h: Redone completely, you might
8041 start testing it now.
8042
8043 * _scm.h: Include <errno.h< so that SCM_SYSCALL is correctly
8044 defined when HAVE_RESTARTABLE_SYSCALLS is not defined.
8045 (HAVE_RESTARTABLE_SYSCALLS): Do not define when USE_COPT_THREADS
8046 is defined.
8047
30f920c3
MV
80482002-10-27 Marius Vollmer <mvo@zagadka.ping.de>
8049
8050 * scmsigs.c (signal_cell_handlers, install_handler_data,
8051 scm_delq_spine_x, really_install_handler, install_handler): New
8052 scheme for triggering signal handlers, to simplify take_signal.
8053 (take_signal): Simplified, to avoid race conditions.
8054 (scm_sigaction_for_thread): Use new Scheme. Validate that thread
8055 hasn't exited yet.
8056
8057 * async.c (scm_async_click): Reset pending_asyncs, handle
8058 signal_asyncs. Don't set cdr of a non-signal async to #f.
8059 (scm_i_queue_async_cell): Do not check cdr of cell for #f, queue
8060 always. Set pending_asyncs.
8061 (scm_system_async_mark_for_thread): Check that thread has not
8062 exited.
8063 (scm_unmask_signals, decrease_block): Call scm_async_click after
8064 block_asyncs becomes zero.
8065
8066 * __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of
8067 active_asyncs.
8068
8069 * root.h (scm_root_state): Added pending_asyncs and signal_asyncs
8070 fields.
8071 * root.c (root_mark): Mark them.
8072 (make_root): Initialize them.
8073
8074 * iselect.c, iselect.h: Replaced GUILE_ISELECT with
8075 USE_COOP_THREADS.
8076 (scm_internal_select): Define one version for USE_COOP_THREADS and
8077 one for USE_NULL_THREADS.
8078 (scm_init_iselect): Likewise.
8079
8080 * inline.h (scm_cell, scm_double_cell): Also allow
8081 USE_COPT_THREADS to not protect the slot initializers.
8082
8083 * init.c (scm_init_guile_1): Call scm_init_thread_procs. This is
8084 because threads need to be initialized before the stack, but
8085 gsubrs such as scm_timed_condition_variable_wait can only be
8086 created later.
8087
8088 * threads.h: Include "coop-pthreads.h" when requested.
8089 (scm_threads_make_mutex, scm_threads_lock_mutex,
8090 scm_threads_unlock_mutex, scm_threads_monitor): Removed, they were
8091 not implemented anyway.
8092 (scm_init_thread_procs, scm_try_mutex,
8093 scm_timed_condition_variable_wait,
8094 scm_broadcast_condition_variable, scm_c_thread_exited_p,
8095 scm_thread_exited_p): New prototypes.
8096 (struct timespec): Define if not already defined.
8097 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
8098 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
8099 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
8100 scm_cond_broadcast, scm_cond_destroy): Declarations moved here and
8101 deprecated.
8102
8103 * threads.c: Include <errno.h>. Include "coop-pthreads.c" when
8104 requested.
8105 (scm_thread_exited_p): New.
8106 (scm_try_mutex, scm_broadcast_condition_variable): Newly
8107 registered procedures.
8108 (scm_wait_condition_variable, scm_timed_wait_condition_variable):
8109 Use the latter as the procedure for "wait-condition-variable",
8110 thus offering a optional timeout parameter to Scheme.
8111 (scm_wait_condition_variable): Implement in terms of
8112 scm_timed_wait_condition_variable.
8113 (scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
8114 scm_mutex_unlock, scm_mutex_destroy, scm_cond_init,
8115 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
8116 scm_cond_broadcast, scm_cond_destroy): Implement in terms of
8117 scm_make_mutex, etc, and deprecate.
8118 (scm_init_threads): Do not create smobs, leave this to
8119 scm_threads_init. Do not include "threads.x" file.
8120 (scm_init_thread_procs): New, include "threads.x" here.
8121
8122 * null-threads.h (scm_null_mutex, scm_null_mutex_init,
8123 scm_null_mutex_lock, scm_null_mutex_unlock,
8124 scm_null_mutex_destroy, scm_null_condvar, scm_null_condvar_init,
8125 scm_null_condvar_wait, scm_null_condvar_signal,
8126 scm_null_condvar_destroy): Removed.
8127 (scm_mutex_init, scm_mutex_lock, scm_mutex_unlock, scm_cond_init,
8128 scm_cond_wait, scm_cond_signal, scm_cond_broadcast,
8129 scm_cond_destory): Do not define, they are now deprecated and
8130 handled by threads.{h,c}.
8131
8132 * null-threads.c (scm_null_mutex, scm_null_cond): Define here.
8133 (scm_threads_init): Create smobs here, using the appropriate
8134 sizes.
8135 (block): Removed, now unused.
8136 (scm_c_thread_exited_p): New.
8137 (scm_null_mutex_init, scm_null_mutex_lock, scm_null_mutex_unlock,
8138 scm_null_mutex_destroy, scm_null_condvar_init,
8139 scm_null_condvar_wait, scm_null_condvar_signal,
8140 scm_null_condvar_destroy): Removed and updated users to do their
8141 task directly.
8142 (scm_try_mutex, timeval_subtract,
8143 scm_timed_wait_condition_variable,
8144 scm_broadcast_condition_variable): New.
8145 (scm_wait_condition_variable): Removed.
8146
8147 * coop-defs.h (coop_m): Added 'level' field.
8148 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
8149 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
8150 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
8151 scm_cond_broadcast, scm_cond_destroy, struct timespec): Do not
8152 define.
8153 (coop_condition_variable_broadcast): New.
8154
8155 * coop-threads.c (scm_threads_init): Create smobs here, using the
8156 appropriate sizes.
8157 (scm_c_thread_exited_p, scm_try_mutex,
8158 scm_timed_wait_condition_variable,
8159 scm_broadcast_condition_variable): New.
8160 (scm_wait_condition_variable): Removed.
8161
8162 * coop.c (coop_new_mutex_init): Initialize level.
8163 (coop_mutex_trylock, coop_mutex_lock, coop_mutex_unlock): maintain
8164 level.
8165 (coop_condition_variable_signal): Renamed to
8166 coop_condition_variable_broadcast and reimplemented in terms of
8167 that. Thus...
8168 (coop_condition_variable_broadcast): New.
8169
8170 * goops.c (hell_mutex): Reimplemented using scm_make_mutex, etc.
8171
8172 * coop-pthreads.h, coop-pthreads.c: New, but unfinished.
8173
087ed40d
MV
81742002-10-21 Marius Vollmer <mvo@zagadka.ping.de>
8175
65a23095
MV
8176 * null-threads.c: Include <time.h>. Also, use <...> for inclusion
8177 of system headers.
8178
087ed40d
MV
8179 * async.c, goops.h, modules.h, validate.h (SCM_MAKE_VALIDATE_MSG):
8180 New. Use it instead of SCM_MAKE_VALIDATE in lots of places to
30f920c3 8181 give better error messages. Thanks to Bill Schottstaedt!
087ed40d 8182
5ec1d2c8
DH
81832002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
8184
8185 * evalext.h, evalext.c (scm_definedp, scm_defined_p): Renamed
8186 scm_definedp to scm_defined_p and deprecated scm_definedp.
8187
100ae50d
DH
81882002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
8189
8190 * async.h, async.c (scm_system_async): Fixed deprecation to work
8191 correctly when deprecated features are excluded.
8192
2794cb50
MV
81932002-10-16 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8194
8195 * async.c (scm_system_async_mark_for_thread): Validate thread
8196 argument.
8197
8198 * coop-threads.c (scm_i_thread_root): Do not validate argument.
8199
8200 * feature.c (scm_init_feature): Don't add 'threads' for
8201 USE_NULL_THREADS.
8202
8203 * inline.h (scm_cell, scm_double_cell): Also allow
8204 USE_NULL_THREADS to not protect the slot initializers.
8205
8206 * scmsigs.c (scm_sigaction_for_thread): It's "USE_THREADS" not
8207 "USE_THREAD".
8208
8209 * Makefile.am (noinst_HEADERS): Added null-threads.c.
8210 (modinclude_HEADERS): Added null-threads.h.
8211
8212 * threads.h: Include null-threads.h when !USE_COOP_THREADS.
8213 * threads.c: Include null-threads.c when !USE_COOP_THREADS.
8214 (scm_init_threads): Use generic type names scm_t_mutex and
8215 scm_t_cond instead of coop_m and coop_c.
8216
8217 * null-threads.c, null-threads.h: New files.
8218
ff810d7a
MV
82192002-10-15 Marius Vollmer <mvo@zagadka.ping.de>
8220
8221 * Makefile.am: Replaced "$<" in non-pattern rules with its value.
8222 This is to support makes that know about "$<" only in pattern
8223 rules, like Sun's make.
8224
a90bdb73
MV
82252002-10-13 Marius Vollmer <mvo@zagadka.ping.de>
8226
8227 * Makefile.am (libpath.h): Fixed typo in top_srcdir_absolute
8228 substitution. Thanks to David Allouche!
8229
e71a8bf2
DH
82302002-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
8231
8232 * evalext.h: Replaced SCM_DEBUG_DEPRECATED with
8233 !SCM_ENABLE_DEPRECATED.
8234
41f77ff5
MV
82352002-10-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8236
504d99c5 8237 * async.c (scm_system_async_mark_for_thread): Only call
41f77ff5
MV
8238 scm_i_thread_root when USE_THREADS is defined. Use scm_root
8239 otherwise.
8240
8241 * scmsigs.c (take_signal): Only call scm_i_thread_root when
8242 USE_THREADS is defined. Use scm_root otherwise.
8243 (scm_sigaction_for_thread): Ignore THREAD argument when
8244 USE_THREADS is not defined. Also, move THREAD argument defaulting
8245 out of HAVE_SIGACTION section, which was a bug.
8246
6d16b125
MV
82472002-10-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8248
8249 * scmsigs.c (scm_sigaction_for_thread): Store original handler in
8250 signal_handlers, not the closure that is used as the async.
8251 The closure is stored in signal_handler_cells, as previously.
8252
acfa1f52
MV
82532002-10-10 Marius Vollmer <mvo@zagadka.ping.de>
8254
8255 * root.h (scm_root_state): Added 'block_async' slot.
8256 (scm_active_asyncs): Removed abbrev.
8257 * root.c (scm_make_root): Initialize 'block_asyncs' slot.
8258
8259 * __scm.h (SCM_ASYNC_TICK): Do without the scm_active_asyncs
8260 abbrev.
8261
8262 * async.h (scm_call_with_blocked_asyncs,
8263 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
8264 scm_c_call_with_unblocked_asyncs): New prototypes.
8265 (scm_mask_signals, scm_unmask_signals): Deprecated.
8266 (scm_mask_ints): Turned into a macro.
8267 * async.c (scm_mask_ints): Removed.
8268 (scm_run_asyncs): Do not set scm_mask_ints while running an async.
8269 this should not be necessary.
8270 (scm_async_click): Test block_asyncs instead of scm_mask_ints.
8271 (scm_mask_signals, scm_unmask_signals): Deprecated. Emit
8272 deprecation warning and check for errornous use. Set block_asyncs
8273 instead of scm_mask_ints.
8274 (increase_block, decrease_block, scm_call_with_blocked_asyncs,
8275 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
8276 scm_c_call_with_unblocked_asyncs): New.
8277
8278 * script.c (scm_compile_shell_switches): Do not set scm_mask_ints.
8279 Asyncs are enabled by default.
8280
34010f56
NJ
82812002-10-09 Neil Jerram <neil@ossau.uklinux.net>
8282
8283 * vports.c (scm_make_soft_port): Allow vector argument to carry a
8284 6th element: an input waiting thunk.
8285 (sf_input_waiting): New.
8286
9310d6f2
MV
82872002-10-05 Marius Vollmer <mvo@zagadka.ping.de>
8288
8289 * root.c (root_mark): Mark active_asyncs slot.
8290
8291 * async.c (scm_async_click): Set the cdr of a executed handler
8292 cell to SCM_BOOL_F, not SCM_EOL.
8293 (scm_i_queue_async_cell): Queue the cell at the end of the list,
8294 and only if the handler procedure is not already present.
8295 (scm_system_async_mark_for_thread): Initialize cdr of handler cell
8296 with SCM_BOOL_F.
8297 * scmsigs.c (scm_sigaction_for_thread): Likewise.
8298
ac48c719
RB
82992002-10-04 Rob Browning <rlb@defaultvalue.org>
8300
1360a142
RB
8301 * guile.c (main): switch to scm_lt_dlset_preloaded_symbols;
8302
8303 * dynl.c (sysdep_dynl_link): switch to scm_lt_dlhandle,
8304 scm_lt_dlopenext, and scm_lt_dlerror.
8305 (sysdep_dynl_unlink): switch to scm_lt_dlhandle, scm_lt_dlclose,
8306 and scm_lt_dlerror.
8307 (sysdep_dynl_func): switch to scm_lt_dlhandle, scm_lt_dlsym,
8308 and scm_lt_dlerror.
8309 (sysdep_dynl_init): switch to scm_lt_dlinit();
8310
8311 * Makefile.am (libguile_la_LIBADD): switch to use
8312 libguile-ltdl.la.
8313
504d99c5 8314 * numbers.c (scm_integer_expt): (expt 0 1) should be 1.
ac48c719 8315
497092c9
MV
83162002-10-04 Marius Vollmer <mvo@zagadka.ping.de>
8317
8318 * scmsigs.h (scm_sigaction_for_thread): New prototype.
8319 * scmsigs.c (got_signal): Removed.
8320 (signal_handler_cells, signal_handler_threads): New.
8321 (take_signal): Queue the cell of the signal for the specified
8322 thread. Reset the signal handler on systems that don't have
8323 sigaction.
8324 (sys_deliver_signals): Removed.
8325 (close_1): New.
8326 (scm_sigaction_for_thread): Renamed from scm_sigaction and
8327 extended to also set the thread of a signal and allocate a cell
8328 for it. Keep the Scheme name "sigaction". Check that signum is
8329 within range. Also, use SCM_VECTOR_REF instead of SCM_VELTS.
8330 (scm_sigaction): Implement in terms of scm_sigaction_for_thread.
8331 (scm_init_scmsigs): Allocate signal_handler_cells and
8332 signal_handler_threads vectors.
8333
8334 * async.c: Removed GUILE_OLD_ASYNC_CLICK code. Reorganized so
8335 that system asnycs and user asyncs are separated. Reimplemented
8336 system asyncs to work per-thread.
8337
8338 * gc.c (scm_init_gc): Do not use scm_system_async.
8339
8340 * async.h (scm_asyncs_pending, scm_set_tick_rate,
8341 scm_set_switch_rate, scm_system_async_mark_from_signal_handler):
8342 Removed prototypes.
8343 (scm_i_queue_async_cell): New.
8344
8345 * __scm.h (scm_asyncs_pending_p): Removed.
8346 (SCM_ASYNC_CLICK): Check scm_active_asyncs instead of
8347 scm_asyncs_pending_p.
8348
8349 * async.h (scm_system_async_mark_for_thread): New prototype.
8350
8351 * __scm.h: Removed GUILE_OLD_ASYNC_CLICK code.
8352
8353 * root.h (scm_root_state): Added new "active_asyncs" slot.
8354 * root.c (scm_make_root): Initialize it to SCM_EOL.
8355
8356 * coop-defs.h (coop_t): Added new "handle" slot.
8357 * coop-threads.c (all_threads, scm_current_thread,
8358 scm_all_threads, scm_i_thread_root): New.
8359 (scm_threads_init): Add main thread to all_threads.
8360 (scheme_launch_thread): Remove thread from all_threads when it
8361 terminates.
8362 (scm_call_with_new_thread): Initialize handle slot of coop_t
8363 structure and add new thread to all_threads.
8364 (scm_spawn_thread): Likewise.
8365
8366 * threads.h (scm_current_thread, scm_all_threads): New prototypes.
8367 * threads.c (scm_current_thread, scm_all_threads): Register as
8368 primitives.
8369
8370 * dynl.c: Use scm_lt_ prefix for libltdl functions.
8371
480fa28d
NJ
83722002-09-29 Neil Jerram <neil@ossau.uklinux.net>
8373
8374 * script.c (scm_compile_shell_switches): Fix bad spelling of
8375 `explicitly' in comment.
8376
83772002-09-28 Neil Jerram <neil@ossau.uklinux.net>
8378
8379 * posix.c (scm_geteuid, scm_getegid, scm_seteuid, scm_setegid):
8380 Refer to provided? in doc string rather than deprecated feature?.
8381
3553e1d1
GH
83822002-09-24 Gary Houston <ghouston@arglist.com>
8383
8384 * inline.h (scm_double_cell): prevent reordering of statements
8385 with any following code (for GCC 3 strict-aliasing).
8386 * numbers.c (scm_make_real), num2float.i.c (FLOAT2NUM): removed
8387 the earlier version of the reordering prevention.
8388
4ad0814a
HWN
83892002-09-19 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8390
8391 * inline.h (scm_double_cell): move SET_GCMARK set out of if body.
8392
e88e4f2e
HWN
83932002-09-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8394
8395 * gc-malloc.c (scm_gc_register_collectable_memory): more overflow
8396 protection.
8397
1e71eafb
HWN
83982002-09-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8399
8400 * inline.h: include stdio.h
8401
8402 * smob.c (free_print): abort if scm_debug_cell_accesses_p is set
8403
61ef9c1f
HWN
84042002-09-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8405
dac04e9f
HWN
8406 * gc-segment.c (scm_i_make_initial_segment): check user settings
8407 for sanity.
8408
8409 * gc-malloc.c (scm_gc_init_malloc): check user settings for
8410 sanity.
dac04e9f
HWN
8411
8412 * gc-freelist.c (scm_init_freelist): check user settings for sanity.
8413
ffd72400
HWN
8414 * struct.h: change scm_structs_to_free to scm_i_structs_to_free
8415
8416 * gc-malloc.c (scm_gc_register_collectable_memory): use floats;
1e71eafb
HWN
8417 these won't ever wrap around with high memory usage. Thanks to
8418 Sven Hartrumpf for finding this.
ffd72400 8419
5bd4a949
HWN
8420 * gc-freelist.c: include <stdio.h>
8421
61ef9c1f
HWN
8422 * gc-malloc.c: add DEBUGINFO for mtrigger GCs.
8423
ffd0ef3b
MV
84242002-09-01 Marius Vollmer <mvo@zagadka.ping.de>
8425
a27e3d14
MV
8426 * vectors.h (SCM_VECTOR_REF): New.
8427
ffd0ef3b
MV
8428 * snarf.h (SCM_DEFINE_PUBLIC): New.
8429
f8a1712b
MV
84302002-08-30 Marius Vollmer <mvo@zagadka.ping.de>
8431
8432 * socket.c (scm_addr_vector): Added size of address to arguments.
8433 Use it to avoid accessing a non-existent path in a sockaddr_un.
8434 Changed all callers.
8435
7200a36b
HWN
84362002-08-29 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8437
1383773b
HWN
8438 * gc.h: remove DOUBLECELL card flags.
8439
8440 * gc-malloc.c (scm_calloc): try to use calloc() before calling
8441 scm_realloc().
8442
8443 * gc-segment.c (scm_i_initialize_heap_segment_data): remove card
8444 init loop; handle this from scm_init_card_freelist()
8445
8446 * gc-card.c (scm_init_card_freelist): init bit vector here.
8447
7200a36b 8448 * numbers.c (scm_make_real): prevent reordering of statements
8fa5786d 8449 num2float.i.c (FLOAT2NUM): idem
7200a36b 8450
9981de3a
HWN
84512002-08-27 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8452
8453 * eval.h: prepend libguile/ to include path
8454
19647556
MV
84552002-08-26 Marius Vollmer <mvo@zagadka.ping.de>
8456
8457 * script.c (scm_compile_shell_switches): Added "2002" to Copyright
9a5fa6e9 8458 years. Thanks to Martin Grabmüller!
19647556 8459
38d1262a
HWN
84602002-08-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8461
8462 * gc-segment.c (scm_i_get_new_heap_segment): use float in stead of
8463 unsigned numbers for computing minimum heap increment. This
8464 prevents weird results when a a negative minimum increment is
8465 computed.
8466
f800ebfb
MV
84672002-08-24 Marius Vollmer <mvo@zagadka.ping.de>
8468
8469 * gc_os_dep.c: When we have __libc_stack_end, use that directly
19647556 8470 instead of the old tricks.
f800ebfb
MV
8471
8472 * guile-snarf.in: Do not expect the input file to be the first
8473 argument after the optional "-o" option, just pass everything to
8474 the pre-processor without extracting the input file name.
8475
4a5309c9
HWN
84762002-08-23 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8477
8478 * gc-segment.c (scm_i_get_new_heap_segment): Oops. We want segment
8479 length *at* least SCM_MIN_HEAP_SEG_SIZE, not at most.
8480
f2893a25
HWN
84812002-08-22 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8482
8483 * gc.h, gc.c: make scm_cells_allocated unsigned again. Thanks to
8484 Bill Schottstaedt for the bug report
8485
483f518b
MV
84862002-08-20 Marius Vollmer <mvo@zagadka.ping.de>
8487
8488 * print.c (scm_iprin1): Print primitives generics always as
8489 "primitive-generic" even when they have no primitive methods yet.
8490
917adc55
GH
84912002-08-17 Gary Houston <ghouston@arglist.com>
8492
8493 * coop.c (coop_create): removed bogus 2nd argument in scm_malloc
8494 call.
8495
67329a9e
HWN
84962002-08-17 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8497
85835e59 8498 * ports.c (scm_add_to_port_table): small bugfix.
67329a9e
HWN
8499
8500 * mallocs.c (scm_malloc_obj): use scm_gc_malloc in stead of
8501 malloc.
8502
8503 * gc-segment.c (scm_i_get_new_heap_segment): remove cluster cruft:
8504 only use SCM_MIN_HEAP_SEG_SIZE.
8505
8506 * ports.c (scm_add_to_port_table): add backwards compatibility
8507 function
8508
8509 * ports.h: use scm_i_ prefix for port table and port table size.
8510
f07c886a
MD
85112002-08-15 Mikael Djurfeldt <mdj@linnaeus>
8512
8513 * vports.c (scm_make_soft_port): Initialize pt variable.
8514
dc61cbc6
MV
85152002-08-13 Marius Vollmer <mvo@zagadka.ping.de>
8516
8517 * strports.h (scm_c_eval_string_in_module,
8518 scm_eval_string_in_module): New prototypes.
8519 * strports.c (scm_eval_string_in_module): New, but use
8520 "eval-string" as the Scheme name and make second parameter
8521 optional.
8522 (scm_eval_string): Implement using scm_eval_string_in_module.
8523 (scm_c_eval_string_in_module): New.
8524 Thanks to Ralf Mattes for the suggestion!
8525
da220f27
HWN
85262002-08-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8527
be3ff021
HWN
8528 * gc-card.c ("sweep_card"): remove SCM_MISC_ERROR messages: print
8529 message and abort.
8530
8531 * gc-mark.c ("scm_gc_mark_dependencies"): idem.
8532
da220f27
HWN
8533 * ports.c ("scm_new_port_table_entry"): return a boxed SCM in
8534 stead of scm_t_port*. The function now takes a tag argument.
8535
eab1b259
HWN
85362002-08-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8537
8538 * gc.h: add scm_debug_cells_gc_interval to public interface
8539
8540 * gc-card.c ("sweep_card"): set scm_gc_running while sweeping.
8541
8542 * gc.c (scm_i_expensive_validation_check): separate expensive
8543 validation checks from cheap ones.
8544
ba1b2226
HWN
85452002-08-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8546
8547 * read.c (scm_input_error): new function: give meaningful error
8548 messages, and throw read-error
8549
8550 * gc-malloc.c (scm_calloc): add scm_calloc.
8551
39e8f371
HWN
85522002-08-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8553
33138b05
HWN
8554 * tags.h: remove GC bits documentation from the tags table.
8555
39e8f371
HWN
8556 * read.c (INPUT_ERROR): Prepare for file:line:column error
8557 messages for errors in scm_lreadr() and friends.
8558
85592002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8560
8561 * gc-malloc.c (scm_malloc): use scm_realloc() (simplifies
8562 implementation).
8563 (scm_gc_calloc): new function
8564
26e68795 85652002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
402788a9 8566
5f16b897
HWN
8567 * ports.c (scm_new_port_table_entry): init port entry to 0
8568 completely.
402788a9
HWN
8569
8570 * ports.c (scm_new_port_table_entry): change function from
8571 scm_add_to_port_table. This prevents cells with null-pointers from
8572 being exposed to GC.
8573
504d99c5 8574 * vports.c (scm_make_soft_port) strports.c (scm_mkstrport),
402788a9 8575 fports.c (scm_fdes_to_port): Use scm_new_port_table_entry().
c8a1bdc4 8576
504d99c5 8577 * gc.c (scm_gc_stats): add cell-yield and malloc-yield statistic
c2cbcc57
HWN
8578 to gc-stats.
8579
c8a1bdc4
HWN
8580 * numbers.c (big2str): return "0" for 0 iso. ""
8581
c2cbcc57
HWN
8582 * gc-segment.c, gc-malloc.c gc-mark.c, gc-freelist.c, gc-card.c,
8583 private-gc.h: new file
c8a1bdc4
HWN
8584
8585 * gc.c: completely revised and cleaned up the GC. It now uses lazy
8586 sweeping. More documentation in workbook/newgc.text
8587
aea06b34
MV
85882002-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8589
8590 * random.c (rstate_free): Return zero.
8591
35060ae9
DH
85922002-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8593
8594 * environments.c (remove_key_from_alist): Removed.
8595
8596 (obarray_remove): Simplified.
8597
6a535440
SJ
85982002-07-24 Stefan Jahn <stefan@lkcc.org>
8599
8600 * continuations.h: ia64: Include <signal.h> before
8601 <sys/ucontext.h>.
8602
bcbd25b7
DH
86032002-07-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
8604
8605 * modules.c (scm_sym2var): Don't compare SCM values with ==.
8606
26e68795 86072002-07-21 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1d1559ce
HWN
8608
8609 * goops.c (scm_compute_applicable_methods): use
8610 scm_remember_upto_here_1 iso scm_remember_upto_here
8611
8612 * macros.c: include deprecation.h
8613
504d99c5 8614 * vectors.c (scm_vector_move_right_x): remove side effect in
1d1559ce 8615 macro arg.
504d99c5 8616 (scm_vector_move_left_x): idem.
1d1559ce
HWN
8617
8618 * net_db.c, posix.c, socket.c: variable naming: change ans to
8619 result.
8620
8621 * sort.c (scm_merge_vector_x): accept vector as argument
8622 iso. SCM*. This is needed for full GC correctness.
8623
8624 * gc.h: undo previous undocumented changes related to #ifdef
8625 GENGC.
8626
26e68795 86272002-07-20 Han-Wen Nienhuys <hanwen@cs.uu.nl>
34d19ef6
HWN
8628
8629 * *.c: add space after commas everywhere.
8630
8631 * *.c: use SCM_VECTOR_SET everywhere, where a vector is written.
8632 Document cases where SCM_WRITABLE_VELTS() is used.
8633
8634 * vectors.h (SCM_VELTS): prepare for write barrier, and let
8635 SCM_VELTS() return a const pointer
8636 (SCM_VECTOR_SET): add macro.
8637
3063e30a
DH
86382002-07-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
8639
8640 * eval.c (SCM_CEVAL), macros.c (macro_print, scm_makmacro,
8641 scm_sym_macro, scm_macro_type), macros.h (scm_makmacro):
8642 Deprecated the special kind of built-in dynamic syntax transformer
8643 that was inaccurately named "macro". Note: The built-in syntax
8644 transformers that are named "mmacro" or "memoizing-macro" still
8645 exist, and it is these which come much closer to what one would
8646 call a macro.
8647
4c5f8e8f
NJ
86482002-07-13 Neil Jerram <neil@ossau.uklinux.net>
8649
8650 * eval.c (unmemocopy): Fix for
8651 1001-local-eval-error-backtrace-segfaults (unmemoization crash
8652 with internal definitions and local-eval).
8653
4f6f9ae3
GH
86542002-07-12 Gary Houston <ghouston@arglist.com>
8655
8656 * dynl.c: Don't define stub procedures if DYNAMIC_LINKING is not
8657 defined. They don't do anything useful, especially since the
8658 only case where DYNAMIC_LINKING is undefined seems to be
8659 when --with-modules=no is given to configure, which is basically
8660 requesting that the "dynamic linking module" be omitted.
8661
8662 * Makefile.am (libguile_la_SOURCES): move dynl.c from
8663 libguile_la_SOURCES to EXTRA_libguile_la_SOURCES.
8664
8665 * extensions.c (load_extension): check DYNAMIC_LINKING for
8666 scm_dynamic_call.
8667 * init.c (scm_init_guile_1): check DYNAMIC_LINKING for
8668 scm_init_dynamic_linking.
8669
c21935e6
MV
86702002-07-10 Marius Vollmer <mvo@zagadka.ping.de>
8671
8672 * guile.c, iselect.h, net_db.c, posix.c, socket.c: No need to
8673 check for Cygwin when including <winsock2.h>, this is already
8674 check for by configure. Thus, revert change from 2002-07-07.
8675
ee95d597
GH
86762002-07-10 Gary Houston <ghouston@arglist.com>
8677
9540b68f 8678 * eq.c: include <string.h>
ee95d597
GH
8679 * dynl.c: docstring editing.
8680
46732b54
GH
86812002-07-09 Gary Houston <ghouston@arglist.com>
8682
8683 * dynl.c (scm_dynamic_call): docstring editing.
8684
c09d12e0
RB
86852002-07-08 Rob Browning <rlb@defaultvalue.org>
8686
8687 * gc_os_dep.c: HURD fixes.
8688
3f6571eb
MV
86892002-07-07 Marius Vollmer <mvo@zagadka.ping.de>
8690
8691 Crosscompiling and Cygwin fixes by Jan Nieuwenhuizen. Thanks!
8692
8693 * Makefile.am: Override default rule for c-tokenize.$(OBJECT);
8694 this should be compiled for BUILD host.
8695 Override default rule for
8696 guile_filter_doc_snarfage$(EEXECT); this should run on BUILD host.
8697 Add missing $(EXEEXT) to guile_filter_doc_snarfage invocation.
8698 (snarf2checkedtexi): Use GUILE_FOR_BUILD instead of preinstguile.
8699
8700 * guile.c, iselect.h, net_db.c, posix.c, socket.c: Do not include
8701 <winsock2.h> on Cygwin even when we have it.
8702
bd987b8e
DH
87032002-07-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
8704
8705 * __scm.h (SCM_CAUTIOUS), eval.c (scm_eval_args, deval_args,
8706 SCM_CEVAL): Removed compile time option SCM_CAUTIOUS to clean up
8707 the code. Full number of arguments checking of closures is
8708 mandatory now. However, the option to disable the checking has
8709 most probably not been used anyway.
8710
8505e285
DH
87112002-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
8712
bd987b8e
DH
8713 * __scm.h (SCM_RECKLESS), backtrace.c (SCM_ASSERT), debug.c
8714 (scm_debug_options), eval.c (scm_lookupcar, scm_lookupcar1,
8715 scm_badargsp, SCM_CEVAL, SCM_APPLY, scm_map, scm_for_each),
8716 feature.c (scm_init_feature), gsubr.c (scm_gsubr_apply), numbers.c
8717 (scm_logand, scm_logior, scm_logxor, scm_i_dbl2big), srcprop.c
8718 (scm_source_properties, scm_set_source_properties_x,
8719 scm_source_property): Removed compile time option SCM_RECKLESS to
8720 clean up the code. Full number of arguments checking of closures
8721 is mandatory now. However, the option to disable the checking has
8722 most probably not been used anyway.
8505e285
DH
8723
8724 * srcprop.c (scm_source_properties, scm_set_source_properties_x,
8725 scm_source_property): Use !SCM_CONSP instead of SCM_NCONSP.
8726
2ee08a28
GH
87272002-06-30 Gary Houston <ghouston@arglist.com>
8728
732b9327
GH
8729 * dynl.c: Removed all SCM_DEFER_INTS/SCM_ALLOW_INTS, which won't
8730 do anything useful. Added a comment about need for a mutex if
8731 pre-emptive threading is supported.
8732
2ee08a28
GH
8733 * posix.c (scm_convert_exec_args), dynl.c
8734 (scm_make_argv_from_stringlist): static procs: 1) renamed both to
8735 allocate_string_pointers. 2) simplified: don't reallocate the
8736 strings, just make an array of pointers 3) avoid memory leaks on
8737 error 4) let the procedure report errors in its own name.
8738 Consequences: 1) the procedures now assume that SCM strings are
8739 nul-terminated, which should always be the case. 2) Since strings
8740 are not reallocated, it's now possible for strings passed to
8741 dynamic-args-call to be mutated.
8742
c136c920
DH
87432002-06-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
8744
8745 * __scm.h, eval.c, eval.h: Removed compile time option
8746 MEMOIZE_LOCALS to clean up the code. Now, caching of local
8747 variable positions during memoization is mandatory. However, the
8748 option to disable the caching has most probably not been used
8749 anyway.
8750
e540802f
MV
87512002-06-18 Marius Vollmer <mvo@zagadka.ping.de>
8752
8753 * print.c (scm_simple_format): Print missing part of format before
8754 ~% control. Thanks to Daniel Skarda!
8755
4c1ffcdd
MV
87562002-06-01 Marius Vollmer <mvo@zagadka.ping.de>
8757
8758 * mkstemp.c: Added exception notice to license statement.
8759
ba1b077b
MV
87602002-05-22 Marius Vollmer <mvo@zagadka.ping.de>
8761
8dc434c7
MV
8762 * numbers.c (mem2ureal): When returning an inexact zero, make sure
8763 it is represented as a floating point value so that we can change
8764 its sign.
8765
ba1b077b
MV
8766 From John W. Eaton <jwe@bevo.che.wisc.edu>
8767
8768 * numbers.c (idbl2str): Don't omit sign when printing negative zero.
8769
74c58131
TTN
87702002-05-14 Thien-Thi Nguyen <ttn@giblet.glug.org>
8771
8772 * gc_os_dep.c: For I386/OPENBSD, allow for `__i386__'
0926d46e 8773 in addition to `i386'. Thanks to Dale P. Smith.
74c58131 8774
8766d4b5
MV
87752002-05-08 Marius Vollmer <mvo@zagadka.ping.de>
8776
8777 * eq.c (real_eqv): New.
8778 (scm_eqv_p): Use it when comparing reals and complexes.
8779
8780 * numbers.c: Include <string.h>, for strncmp.
8781 (mem2complex): Do not create negative NaNs.
8782 (scm_leq_p, scm_geq_p): Explicitely return #f when comparing a
8783 NaN.
8784 (scm_inexact_to_exact): Signal error when converting a NaN.
74c58131 8785
1d8c3cad
MV
87862002-05-06 Marius Vollmer <mvo@zagadka.ping.de>
8787
8788 * posix.c (scm_putenv): Handle removing variables explicitely by
8789 calling unsetenv.
8790
8791 From John W. Eaton.
74c58131 8792
1d8c3cad
MV
8793 * numbers.h: Conditionally include floatingpoint.h, ieeefp.h, and
8794 nan.h. Provide declarations for scm_inf_p, scm_nan_p, scn_inf,
8795 and scm_nan.
8796 * numbers.c: [SCO && ! HAVE_ISNAN] (isnan): New function.
8797 [SCO && ! HAVE_ISINF] (isinf): New function.
8798 (xisinf, xisnan): New functions.
8799 (IS_INF): Delete.
8800 (isfinite): Define in terms of xisinf.
8801 (scm_inf_p, scm_nan_p): New functions.
8802 (guile_Inf, guile_NaN): New file-scope vars.
8803 (guile_ieee_init): New function.
8804 (scm_inf, scm_nan): New functions.
8805 (idbl2str): Handle Inf and NaN. Remove funny label and
8806 corresponding gotos.
8807 (ALLOW_DIVIDE_BY_ZERO): New macro.
8808 (scm_divide): Allow division by zero to occur if
8809 ALLOW_DIVIDE_BY_ZERO is defined.
8810 Handle bignums and ints as special cases.
8811
8812 Additional stuff by me:
8813
8814 numbers.c (mem2ureal): Recognize "inf.0" and "nan.xxx".
8815 (scm_even_p, scm_odd_p): Treat infinity as even and odd.
8816 (iflo2str): Don't output a '+' for negative numbers or for Inf and
8817 NaN. They will provide their own sign.
8818 (scm_divide): Only allow divides by inexact zeros. Dividing by
8819 exact zeros still signals an errors.
74c58131 8820
7a0c65eb
TTN
88212002-04-22 Thien-Thi Nguyen <ttn@giblet.glug.org>
8822
87b72063 8823 * goops.h (scm_slot_exists_p): Rename from scm_slots_exists_p.
7a0c65eb 8824 * goops.c (scm_slot_exists_p): Rename from scm_slots_exists_p.
504d99c5 8825 (scm_slot_exists_p): Rename from scm_slots_exists_p.
7a0c65eb
TTN
8826 Thanks to Andreas Rottmann.
8827
5e423a39
GH
88282002-04-20 Gary Houston <ghouston@arglist.com>
8829
8830 * removal of unused fields in root state (thanks to Christopher
8831 Cramer for pointing out the disuse.)
8832 * root.h (scm_root_state): removed def_inp, def_outp, def_errp.
1841c44a 8833 (scm_def_inp, scm_def_outp, scm_def_errp): removed.
b6287a25 8834
5e423a39
GH
8835 * root.c (root_mark): don't mark them.
8836 (scm_make_root): don't set them to #f.
8837 * init.c (scm_init_standard_ports): don't initialise with the
8838 default ports.
8839
9d2cce76
MV
88402002-04-17 Marius Vollmer <mvo@zagadka.ping.de>
8841
8842 * Makefile.am (EXTRA_DIST): Added cpp_err_symbols.c and
8843 cpp_sig_symbols.c.
8844
88452002-04-16 Marius Vollmer <mvo@zagadka.ping.de>
8846
8847 * guile-snarf.in: Do not clean input file. This would write to
8848 the $(srcdir) during a VPATH build, which is not allowed. It also
8849 isn't needed since it only works when an output filename has been
8850 specified and in that case we don't need to clean the input file
8851 because the output file will already exist.
8852
6f79b6cc
MV
88532002-03-31 Marius Vollmer <mvo@zagadka.ping.de>
8854
8855 * guile-snarf: Install the trap for removing $cleanfile only when
8856 the value of $cleanfile is actually known.
8857
21550b10
RB
88582002-04-10 Rob Browning <rlb@defaultvalue.org>
8859
8860 * .cvsignore: add versiondat.h and *.c.clean.c.
8861
bc76d628
DH
88622002-03-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
8863
8864 * srcprop.[ch] (scm_c_source_property_breakpoint_p): New
8865 function, replaces macro SRCBRKP.
8866
8867 (SRCBRKP): Deprecated.
8868
8869 * eval.c (SCM_CEVAL): Replaced use of SRCBRKP by call to
8870 scm_c_source_property_breakpoint_p. Removed some use of arg1 as
8871 temporary variable.
8872
5132eef0
DH
88732002-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
8874
8875 * debug.h, eval.c: Deprecated CHECK_ENTRY, CHECK_APPLY and
8876 CHECK_EXIT and removed all references to them.
8877
680516ba
DH
88782002-03-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8879
8880 * debug.h (scm_ready_p, debug_print): Removed declarations.
8881
8882 * eval.c (EVALCELLCAR): Removed.
8883
8884 (SCM_CEVAL): Eliminated label loopnoap. Removed side-effecting
8885 operation from condition.
8886
e2bd68e0
MV
88872002-03-24 Marius Vollmer <mvo@zagadka.ping.de>
8888
8889 * guile-snarf.in: When the output filename is "-", write to
8890 stdout. When no "-o" option is given, use "-" as the output
8891 filename (i.e., stdout). Only 'clean' the inputfile or remove the
8892 output file on error when the output file name is not "-". Define
8893 the preprocessor macro SCM_MAGIC_SNARFER while snarfing.
8894
8895 * Makefile.am (.c.x): Pass "-o $@" to guile-snarf.
8896
ab1f1094
DH
88972002-03-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
8898
8899 * eval.c (SCM_CEVAL, SCM_APPLY): Eliminated labels wrongnumargs
8900 and the corresponding goto statements. Removed redundant code.
8901
42030fb2
DH
89022002-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
8903
8904 * eval.c (SCM_CEVAL): Minimized scope of variable arg2.
8905 Eliminated redundant SCM_IMP check. Exlined call to EVALCAR.
8906 Re-enabled handing of rpsubrs and asubrs.
8907
e050d4f8
DH
89082002-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
8909
8910 * eval.c (SIDEVAL): Removed.
8911
8912 (SCM_CEVAL): Minimized scope of variable orig_sym. Eliminated
8913 goto-labels cdrxnoap, cdrxbegin and nontoplevel_cdrxnoap. Changed
8914 argument checking order for set! to locals, variables and symbols.
8915 Improvements to control structure. Removed some uses of arg1 and
8916 arg2 as temporary variables.
8917
a6d344d3
TTN
89182002-03-15 Thien-Thi Nguyen <ttn@giblet.glug.org>
8919
8920 * guile-snarf.in: Remove "--compat=1.4" support.
8921 Add "-d" and "-D" support.
8922
8923 (deprecated_list): New var.
8924 (compat_mode_clean_xxx): Delete.
8925 (grep_deprecated): New func.
8926 ("main"): If "-d" or "-D", call `grep_deprecated'.
8927
3939e9df
NJ
89282002-03-15 Neil Jerram <neil@ossau.uklinux.net>
8929
387d418c
NJ
8930 * hooks.h: Change scm_t_c_hookype_t everywhere to
8931 scm_t_c_hook_type.
8932
bb2c02f2 8933 Docstring fixes:
a6d344d3 8934
bb2c02f2
NJ
8935 * strings.c (scm_string_p): Change unnecessary `iff' to `if'.
8936
8937 * ports.c (scm_sys_make_void_port): Use `@file'.
8938
8939 * numbers.c (scm_number_p, scm_real_p): Use `otherwise' rather
8940 than `else'.
8941
8942 * macros.c (scm_makmacro): Don't say that the form replaces its
8943 source, because it doesn't.
8944 (scm_makmmacro): Clarify difference between this and scm_makmacro.
8945
8946 * backtrace.c (scm_display_error), filesys.c (scm_umask,
8947 scm_select, scm_basename), goops.c (scm_method_generic_function),
8948 numbers.c (scm_integer_length), posix.c (scm_getgroups, scm_execl,
8949 scm_setlocale, scm_flock), socket.c (scm_shutdown): Correct
8950 spelling mistakes.
8951
3939e9df
NJ
8952 * debug.c (scm_debug_options), eval.c
8953 (scm_eval_options_interface), read.c (scm_read_options): Change
8954 incorrect @var in docstring to @code.
8955
3b3cc781
MV
89562002-03-14 Marius Vollmer <mvo@zagadka.ping.de>
8957
500b0d5b
MV
8958 * unif.c (singp): Use SCM_REALP instead of SCM_SLOPPY_REALP.
8959
3b3cc781
MV
8960 * snarf.h (SCM_SNARF_INIT): Add "^:^" after code so that
8961 guile-snarf can remove trailing non-init code.
8962
8963 * guile-snarf.in (modern_snarf): Remove everything following and
8964 including "^:^" from the output.
8965
dff98306
DH
89662002-03-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
8967
8968 * eval.c (SCM_CEVAL), srcprop.h (SRCBRKP): Eliminated union 't'.
8969
8970 * eval.c (SCM_CEVAL): Exlined call to EVALCAR.
8971
2287fb53
TTN
89722002-03-13 Thien-Thi Nguyen <ttn@giblet.glug.org>
8973
8974 * guile-snarf.in: Update copyright.
8975 Rewrite to internalize error handling.
8976 Add "--compat=1.4" handling.
8977 Add commentary.
8978
8979 * Makefile.am (libpath.h): Use @top_srcdir_absolute@.
8980 (snarfcppopts): New var.
8981 (.c.x): Use $(snarfcppopts). Rework guile-snarf usage.
8982 (.c.doc): Use $(snarfcppopts).
8983
822250a4
TTN
8984 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
8985 continuations.c, debug-malloc.c, debug.c, deprecation.c, dynl.c,
8986 dynwind.c, environments.c, eq.c, error.c, eval.c, evalext.c,
8987 extensions.c, feature.c, filesys.c, fluids.c, fports.c, gc.c,
8988 goops.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
8989 ioext.c, iselect.c, keywords.c, lang.c, list.c, load.c, macros.c,
8990 modules.c, net_db.c, numbers.c, objects.c, objprop.c, options.c,
8991 pairs.c, ports.c, posix.c, print.c, procprop.c, procs.c,
8992 properties.c, ramap.c, random.c, rdelim.c, read.c, regex-posix.c,
8993 root.c, rw.c, scmsigs.c, script.c, simpos.c, socket.c, sort.c,
8994 srcprop.c, stackchk.c, stacks.c, stime.c, strings.c, strop.c,
8995 strorder.c, strports.c, struct.c, symbols.c, threads.c, throw.c,
8996 unif.c, values.c, variable.c, vectors.c, version.c, vports.c,
8997 weaks.c: Retire inclusion guard macro SCM_MAGIC_SNARFER.
8998
b7798e10
DH
89992002-03-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9000
9001 * eval.c (SCM_CEVAL): Got rid of the last reference to t.lloc.
9002 The next step will be to remove the union 't' and simplify the
9003 code of SCM_CEVAL that way.
9004
04a98cff
NJ
90052002-03-12 Neil Jerram <neil@ossau.uklinux.net>
9006
9007 * iselect.c (collisionp, gnfds, greadfds, gwritefds, gexceptfds,
9008 rreadfds, rwritefds, rexceptfds): Made static.
9009
9010 * gc.c (terminating), fports.c (terminating): Renamed
9011 scm_i_terminating.
9012
16d98032
MV
90132002-03-11 Marius Vollmer <mvo@zagadka.ping.de>
9014
5046250e
MV
9015 * numbers.c (scm_divide): Adapt code from libstdc++/f2c to void
9016 potential overflow problems. Thanks to John W Eaton!
9017
8794207d
MV
9018 * strop.c (string_capitalize_x): Treat characters as unsigned so
9019 that 8-bit chars work. Thanks to David Pirotte!
16d98032 9020
1d15ecd3
DH
90212002-03-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9022
9023 * eval.c (SCM_CEVAL): Cleaned up the handling of 'slot-ref',
9024 'slot-set!' and 'nil-cond'. Removed some uses of t.arg1, arg2 and
9025 proc as temporary variables. Introduced temporary variables with
9026 hopefully descriptive names for clarification. Replaced SCM_N?IMP
9027 by a more explicit predicate in some places.
9028
90292002-03-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
f12745b6
DH
9030
9031 * eval.c (SCM_CEVAL): Cleaned up the handling of #@dispatch.
9032 Added lots of comments regarding the implementation of #@dispatch.
9033 Changed intra-procedure communication to use t.arg1 instead of
9034 arg2. Removed some uses of t.arg1, t.lloc and proc as temporary
9035 variables. Introduced temporary variables with hopefully
9036 descriptive names for clarification. Replaced SCM_N?IMP by a more
9037 explicit predicate in some places. Use SCM_INSTANCE_HASH instead
9038 of computing the expression explicitly. Eliminate now unused
9039 label nontoplevel_cdrxbegin.
9040
9041 * goops.h (SCM_INSTANCE_HASH): New macro.
9042
9043 * objects.h (SCM_CMETHOD_FORMALS, SCM_CMETHOD_BODY): New macros.
9044
1ebf1566
TTN
90452002-03-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
9046
9047 * Makefile.am (bin_SCRIPTS): Revive this decl, w/ initial element
9048 "guile-snarf" moved back from `noinst_SCRIPTS'.
9049
020c890c
NJ
90502002-03-08 Neil Jerram <neil@ossau.uklinux.net>
9051
58d233cc
NJ
9052 * srcprop.c (scm_set_source_property_x): If SRCPROPS obj already
9053 exists when adding a source property other than those that are
9054 handled explicitly, add the new property to the SRCPROPS obj's
9055 plist.
9056
020c890c
NJ
9057 * debug.h (SCM_MAX_FRAME_SIZE): Remove incorrect comment about use
9058 of SCM_MAX_FRAME_SIZE as a bit mask; it isn't used like this.
9059
9060 * eval.c (SCM_CEVAL): Don't store scm_debug_eframe_size in
9061 debug.status. It isn't needed, and it can overflow the bits
9062 reserved for it (which may lead to a segv or a GC abort).
9063
3f04400d
DH
90642002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9065
9066 * eval.c (SCM_CEVAL): Cleaned up the handling of 'apply'. Removed
9067 side-effecting operations from conditions and macro calls.
9068 Replaced SCM_N?IMP by a more explicit predicate in some places.
9069 Minimized the scope of some variables.
9070
97820583
SJ
90712002-03-02 Stefan Jahn <stefan@lkcc.org>
9072
9073 * convert.i.c: Fixed int <-> long conversions which would have
9074 failed if their sizes were different.
9075
38ace99e
DH
90762002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9077
9078 * eval.c (SCM_CEVAL): Cleaned up the handling of 'if', 'let',
9079 'letrec' and 'set*': Removed some uses of t.arg1, t.lloc and proc
9080 as temporary variables. Removed side-effecting operations from
9081 conditions and macro calls. Introduced temporary variables with
9082 hopefully descriptive names for clarification. Replaced SCM_N?IMP
9083 by a more explicit predicate in some places. Removed code that
9084 was conditionally compiled if SICP was defined - which it never
9085 is.
9086
e5cb71a0
DH
90872002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9088
9089 * eval.c (SCM_CEVAL): Cleaned up the handling of 'cons' and 'do':
9090 Removed some uses of t.arg1 and proc as temporary variables.
9091 Removed side-effecting operations from conditions and macro calls.
9092 Introduced temporary variables with hopefully descriptive names
9093 for clarification. Replaced SCM_N?IMP by a more explicit
9094 predicate in some places.
9095
6a0f6ff3
DH
90962002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9097
9098 * eval.c (scm_badargsp, SCM_CEVAL): Replaced SCM_N?IMP by a more
9099 explicit predicate in some places.
9100
9101 (CHECK_EQVISH): Removed.
9102
9103 (SCM_CEVAL): Removed some uses of t.arg1 and proc as temporary
9104 variables. Removed side-effecting operations from conditions and
9105 macro calls. Introduced temporary variables for clarification.
9106 Sorted if-else-if check for the type of the last form in a list by
9107 frequency. Avoided some unnecessary tail-recursion calls.
9108
228a24ef
DH
91092002-03-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
9110
9111 * gc.c (SCM_HEAP_SEG_SIZE, CELL_UP, CELL_DN, NEXT_DATA_CELL,
9112 init_heap_seg, alloc_some_heap), gc.h (struct scm_cell, struct
9113 scm_t_cell, SCM_CELLPTR, SCM_GC_CARD_SIZE,
9114 SCM_GC_IN_CARD_HEADERP), tags.h (SCM_CELLP): Renamed the struct
9115 scm_cell and all its uses to scm_t_cell in accordance to Guile's
9116 naming scheme for types.
9117
9118 * alist.c (scm_acons), convert.i.c (CTYPES2UVECT,
9119 CTYPES2UVECT_OPTIONAL), coop-threads.c (scm_call_with_new_thread,
9120 scm_spawn_thread), debug.c (scm_make_debugobj), environments.c
9121 (scm_make_environment), eval.c (scm_closure), fports.c
9122 (scm_fdes_to_port), gc.c (scm_deprecated_newcell,
9123 scm_deprecated_newcell2), inline.h (scm_alloc_cell, scm_cell),
9124 list.c (SCM_I_CONS), numbers.c (scm_i_mkbig), pairs.c (scm_cons),
9125 ports.c (scm_void_port), procs.c (scm_c_make_subr, scm_makcclo),
9126 smob.c (scm_make_smob), smob.h (SCM_NEWSMOB), strings.c
9127 (scm_take_str, scm_allocate_string), strports.c (scm_mkstrport),
9128 unif.c (scm_make_uve), variable.c (make_variable), vectors.c
9129 (scm_c_make_vector), vports.c (scm_make_soft_port): Renamed
9130 scm_alloc_cell to scm_cell.
9131
9132 * environments.c (core_environments_observe), gc.c
9133 (scm_deprecated_newcell2), goops.c (wrap_init, scm_wrap_object),
9134 inline.h (scm_alloc_double_cell, scm_double_cell), num2float.i.c
9135 (FLOAT2NUM), numbers.c (scm_make_real), procs.c
9136 (scm_make_procedure_with_setter), smob.h (SCM_NEWSMOB2,
9137 SCM_NEWSMOB3), struct.c (scm_make_struct, scm_make_vtable_vtable),
9138 symbols.c (scm_mem2symbol, scm_mem2uninterned_symbol), weaks.c
9139 (allocate_weak_vector): Renamed scm_alloc_double_cell to
9140 scm_double_cell.
9141
edb810bb
SJ
91422002-02-27 Stefan Jahn <stefan@lkcc.org>
9143
9144 * convert.i.c, convert.c: Better range checking.
9145
9146 * inet_aton.c, fports.c: Commented the inclusion of <winsock2.h>.
9147
1ebf1566 9148 * deprecation.c (vsnprintf): Define to `_vsnprintf' for
edb810bb
SJ
9149 Windows (MinGW).
9150
327d4dd3
TTN
91512002-02-26 Thien-Thi Nguyen <ttn@giblet.glug.org>
9152
9153 * Makefile.am: Update path to pre-inst-guile automake frag.
9154
89d7a92c 91552002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
646052c0
DH
9156
9157 * gc.c (scm_gc_sweep): Make it compile even when deprecated
9158 features are excluded.
9159
89d7a92c 91602002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
bac0e232
DH
9161
9162 * num2integral.i.c (NUM2INTEGRAL): Fixed signedness problem.
9163
4f2716b6
GH
91642002-02-25 Gary Houston <ghouston@arglist.com>
9165
9166 * convert.c: include <string.h> for convert_i.c.
9167
46151112
RB
91682002-02-24 Rob Browning <rlb@defaultvalue.org>
9169
9170 * .cvsignore: add stamp-h1.
9171
cd328b4f
NJ
91722002-02-21 Neil Jerram <neil@ossau.uklinux.net>
9173
9174 * unif.c (scm_array_to_list): Correct name, which had been
9175 accidentally changed to scm_t_arrayo_list!
9176
c709de7f
MD
91772002-02-20 Mikael Djurfeldt <mdj@linnaeus>
9178
9179 * gc.c (scm_gc_sweep): Print an error message when aborting due to
9180 underflowing scm_mallocated.
9181
c1965d31
MV
91822002-02-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9183
9184 * gc.h, gc.c (scm_must_malloc, scm_must_realloc, scm_must_strdup,
9185 scm_must_strndup, scm_done_malloc, scm_done_free, scm_must_free):
9186 Reimplemented using the new scm_gc_malloc, etc., functions and
9187 deprecated.
9188
b606945b
TTN
91892002-02-11 Thien-Thi Nguyen <ttn@giblet.glug.org>
9190
9191 * Makefile.am (bin_PROGRAMS): Move `guile_filter_doc_snarfage'
9192 to `noinst_PROGRAMS'.
9193 (bin_SCRIPTS): Move all values to `noinst_SCRIPTS'; delete.
9194 (noinst_PROGRAMS, noinst_SCRIPTS): New.
9195
7c686ba8
MV
91962002-02-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9197
9198 * gc.h, gc.c (scm_gc_sweep): Issue deprecation warning when
9199 non-zero is returned from a port or smob free function.
9200 (scm_malloc, scm_realloc, scm_strndup, scm_strdup,
9201 scm_gc_register_collectable_memory,
9202 scm_gc_unregister_collectable_memory, scm_gc_malloc,
9203 scm_gc_realloc, scm_gc_free, scm_gc_strndup, scm_gc_strdup): New.
9204
9205 * backtrace.c, continuations.c, convert.i.c, coop-threads.c,
9206 debug-malloc.c, dynl.c, environments.c, environments.h,
9207 extensions.c, filesys.c, fports.c, gc.c, gc.h, gh_data.c, goops.c,
9208 guardians.c, hooks.c, init.c, keywords.c, load.c, numbers.c,
9209 ports.c, posix.c, procs.c, rdelim.c, regex-posix.c, root.c,
9210 smob.c, stime.c, strings.c, struct.c, struct.h, symbols.c, unif.c,
9211 vectors.c, weaks.c: Use scm_gc_malloc/scm_malloc and
9212 scm_gc_free/free instead of scm_must_malloc and scm_must_free, as
9213 appropriate. Return zero from smob and port free functions.
9214
9215 * debug-malloc.c (scm_malloc_reregister): Handle "old == NULL".
9216
9217 * deprecation.h, deprecation.c: Reimplemented to allow deprecation
9218 messages while the GC is running.
9219 (scm_c_issue_deprecation_warning_fmt): New.
9220
9221 * fports.c (scm_setvbuf): Reset read buffer to saved values when
9222 it is pointing to the putback buffer.
9223
66adc0a6
TTN
92242002-02-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
9225
9226 * gsubr.c (create_gsubr): On "too many args" error,
9227 also display arg count and name. Thanks to Bill Schottstaedt.
9228
0187b4f4
TTN
92292002-02-05 Thien-Thi Nguyen <ttn@giblet.glug.org>
9230
9231 * Makefile.am: Include $(top_srcdir)/pre-inst-guile.am.
9232
9233 (bin_SCRIPTS): Remove guile-snarf-docs-texi.
9234 (alldotdocfiles, snarf2checkedtexi, dotdoc2texi): New vars.
9235 (guile.texi, guile-procedures.texi): Use $(dotdoc2texi).
9236
9237 * guile-snarf-docs-texi.in: Bye bye.
9238
402e687c
MV
92392002-02-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9240
9241 * symbols.c (scm_make_symbol): Fix typo in docstring.
9242
9243 * symbols.h (scm_mem2uninterned_symbol, scm_symbol_interned_p,
9244 scm_make_symbol): New prototypes.
9245
319b98ed
MV
92462002-02-03 Marius Vollmer <mvo@zagadka.ping.de>
9247
9248 * symbols.h (SCM_SET_SYMBOL_HASH): Removed.
9249 (SCM_SYMBOL_INTERNED_P): New.
9250 * symbols.c (scm_symbol_hash): Use scm_ulong2num instead of
9251 SCM_MAKINUM since hash values can well be bignums.
9252 (scm_mem2symbol): Only use hash values below SCM_T_BITS_MAX/2.
9253 This signals a interned symbol.
9254 (scm_mem2uninterned_symbol, scm_symbol_interned_p,
9255 scm_make_symbol): New.
0187b4f4 9256
319b98ed
MV
9257 * print.c (scm_iprin1): Print uninterned symbols unreadably.
9258
34472dfe
TTN
92592002-02-02 Thien-Thi Nguyen <ttn@giblet.glug.org>
9260
9261 * __scm.h (HAVE_UINTPTR_T): Only define if UINTPTR_T attributes
9262 are defined: UINTPTR_MAX, INTPTR_MAX, INTPTR_MIN.
0187b4f4 9263 Thanks to Dave Love.
34472dfe 9264
1b39c2e3
MV
92652002-01-31 Marius Vollmer <mvo@zagadka.ping.de>
9266
9267 * symbols.c (scm_gensym): Use " g" as default prefix, not "g".
319b98ed 9268 This might help to make unintended clashes less likely.
1b39c2e3
MV
9269 (scm_string_to_symbol): Protect the string until the symbols is
9270 created.
9271
1fa86ca5
SJ
92722002-01-31 Stefan Jahn <stefan@lkcc.org>
9273
9274 * convert.c, convert.h, convert.i.c: New files containing C
34472dfe 9275 array to Scheme conversion helpers meant to be replacement
1fa86ca5
SJ
9276 functions for the deprecated gh interface.
9277
9278 * Makefile.am: Setup rules for new `convert.*' files.
9279
af68e5e5
SJ
92802002-01-28 Stefan Jahn <stefan@lkcc.org>
9281
9282 * symbols.c (scm_c_symbol2str): New function, replacement for
9283 `gh_scm2newsymbol()'.
9284
34472dfe 9285 * strings.c (scm_c_substring2str): New function. Proper
af68e5e5
SJ
9286 replacement for `gh_get_substr()'.
9287
9288 * socket.c: Include `stdint.h' if available for the `uint32_t'
9289 declaration.
9290
504d99c5 9291 * scmsigs.c (scm_sigaction): Initialize `chandler' (inhibits
af68e5e5
SJ
9292 compiler warning).
9293
9294 * backtrace.c: Include `lang.h' for GUILE_DEBUG conditional.
9295
c96d76b8 92962002-01-22 Neil Jerram <neil@ossau.uklinux.net>
34472dfe 9297
c96d76b8 9298 Other changes unrelated to Elisp...
34472dfe 9299
c96d76b8
NJ
9300 * eval.c (scm_m_if): Use s_if rather than repeating string literal
9301 "if".
9302 (comments): Fix a few typos.
9303 (scm_for_each): Add parentheses around oddly unparenthesized
9304 if/while conditions.
9305
9306 * read.c (scm_read_opts): Add full stop at end of doc for
9307 `keywords' option.
9308
9309 * script.c (scm_compile_shell_switches): Use scm_str2symbol
9310 instead of gh_symbol2scm.
9311
9312 * srcprop.h (SRCPROPBRK): Return C type rather than SCM.
9313 (SRCBRKP): Use SRCPROPBRK rather than duplicating its logic.
9314
9315 * srcprop.c (scm_srcprops_to_plist, scm_source_property): Change
9316 SRCPROPBRK (x) to SCM_BOOL (SRCPROPBRK (x)).
9317
9318 First batch of changes for Elisp support...
9319
9320 * alist.c, async.c, boolean.c, dynl.c, eval.c, filesys.c,
9321 fluids.c, list.c, load.c, options.c, posix.c, print.c, sort.c,
9322 throw.c, vectors.c, weaks.c: Add #include for lang.h.
9323
9324 * eval.c, eval.h, init.c, lang.c, lang.h: Use SCM_ENABLE_ELISP to
9325 conditionalize compilation and initialization of Elisp support
9326 function.
34472dfe 9327
c96d76b8
NJ
9328 * alist.c (scm_assq, scm_assv, scm_assoc), async.c
9329 (scm_asyncs_pending, scm_run_asyncs, noop), backtrace.c
9330 (scm_set_print_params_x), dynl.c (scm_make_argv_from_stringlist),
9331 filesys.c (fill_select_type, retrieve_select_type), fluids.c
9332 (scm_swap_fluids, scm_swap_fluids_reverse), list.c (scm_null_p,
9333 scm_ilength, scm_append_x, scm_last_pair, scm_reverse,
9334 scm_reverse_x, scm_list_ref, scm_list_set_x, scm_list_cdr_set_x,
bbd26b5a
NJ
9335 scm_c_memq, scm_memv, scm_member), load.c (scm_search_path),
9336 options.c (change_option_setting, scm_options), posix.c
9337 (environ_list_to_c), print.c (scm_iprlist), throw.c
9338 (scm_exit_status), vectors.c (scm_vector), weaks.c
9339 (scm_weak_vector): Use SCM_NULL_OR_NIL_P instead of SCM_NULLP.
c96d76b8
NJ
9340
9341 * boolean.c (scm_not): Use `SCM_FALSEP || SCM_NILP' instead of
9342 just SCM_FALSEP.
34472dfe 9343
c96d76b8
NJ
9344 * boolean.c (scm_boolean_p): Use `SCM_BOOLP || SCM_NILP' instead
9345 of just SCM_BOOLP.
9346
9347 * eval.c (scm_lisp_nil, scm_lisp_t, s_nil_ify, scm_m_nil_ify,
9348 s_t_ify, scm_m_t_ify, s_0_cond, scm_m_0_cond, s_0_ify,
9349 scm_m_0_ify, s_1_ify, scm_m_1_ify): Removed.
9350 (scm_m_atfop): Support function aliasing. Support both function
9351 args, which need transformation, and macro args, which do not.
9352 Add explanatory comments.
9353 (SCM_CEVAL): In switch cases for SCM_IM_AND, SCM_IM_COND,
9354 SCM_IM_DO, SCM_IM_IF and SCM_IM_OR, add `|| SCM_NILP' to existing
9355 checks for SCM_FALSEP. In switch case for SCM_IM_NIL_COND, use
9356 SCM_NULLP || SCM_NILP instead of checks against (removed)
9357 scm_lisp_nil. Removed switch cases for SCM_IM_NIL_IFY,
9358 SCM_IM_T_IFY, SCM_IM_0_COND, SCM_IM_0_IFY, SCM_IM_1_IFY.
9359
9360 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
9361 scm_m_while, scm_nil_eq): Commented out; I don't think we need
9362 these, but I don't want to remove them yet, just in case.
9363 (scm_init_lang): Define `%nil' variable on Scheme level to hold
9364 Elisp nil value.
9365
9366 * lang.h (SCM_NILP): Test against Elisp nil value instead of
9367 against (removed) scm_lisp_nil.
9368 (SCM_NILNULLP, SCM_NIL2EOL, SCM_EOL2NIL): Commented out.
9369 (SCM_NULL_OR_NIL_P): New.
9370
9371 * list.c (scm_append): Use SCM_VALIDATE_NULL_OR_NIL instead of
9372 SCM_VALIDATE_NULL.
9373
9374 * print.c (scm_isymnames): Fix comment. Remove #@nil-ify,
9375 #@t-ify, #@0-cond, #@0-ify, #@1-ify. Add #nil (for SCM_ELISP_NIL
9376 value).
9377
9378 * sort.c (scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
9379 scm_sort_x, scm_sort, scm_stable_sort_x, scm_stable_sort): Use
9380 SCM_NULL_OR_NIL_P instead of SCM_NULLP. In constructions like `if
9381 (SCM_NULLP (x)) return SCM_EOL;', return x rather than SCM_EOL.
9382
9383 * tags.h (SCM_IM_NIL_IFY, SCM_IM_T_IFY, SCM_IM_0_COND,
9384 SCM_IM_0_IFY, SCM_IM_1_IFY): Removed.
9385 (SCM_IM_BIND, SCM_IM_DELAY, SCM_IM_CALL_WITH_VALUES, SCM_UNBOUND):
9386 Numbering shifted down accordingly.
9387 (SCM_ELISP_NIL): New IFLAG.
9388
9389 * validate.h (SCM_VALIDATE_NULL_OR_NIL): New.
34472dfe 9390
a392ee15
DH
93912002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9392
9393 * eval.c: Removed outdated references to "everr". Improved some
9394 comments.
9395
9396 (scm_deval_args, deval_args): Renamed scm_deval_args to
9397 deval_args, since it is not part of the interface.
9398
9399 (SCM_CEVAL): Added (maybe somewhat verbose) comment. Avoid to
9400 use references to debug.vect[0] before it exists. Add parentheses
9401 to switch statement.
9402
9403 * goops.h: Added local emacs variables.
9404
24933780
DH
94052002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9406
9407 * eval.[ch] (scm_deval_args): Made static.
9408
9409 * srcprop.c (scm_source_property): Remove redundant SCM_IMP
9410 test.
9411
9412 * strings.c (scm_c_string2str): Clarified comment. Replaced
9413 THINKME by FIXME for uniformness. Removed question about whether
9414 arguments need to be protected from garbage collection: Arguments
9415 must be protected as any other variable.
9416
f9450cdb
DH
94172002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9418
9419 * procs.h (SCM_CLOSURE_BODY): New Macro.
9420
9421 * debug.c (scm_procedure_name, scm_procedure_source), eval.c
9422 (SCM_CEVAL, SCM_APPLY), goops.c (scm_sys_initialize_object,
9423 get_slot_value, set_slot_value), procs.c
9424 (scm_procedure_documentation), sort.c (closureless), stacks.c
9425 (get_applybody): Replace SCM_CDR (SCM_CODE (...)) by
9426 SCM_CLOSURE_BODY.
9427
9428 * sort.c (closureless): Prefer !SCM_FOOP over SCM_NFOOP.
9429
5dc64f64
MV
94302001-12-26 Marius Vollmer <mvo@zagadka.ping.de>
9431
9432 * Makefile.am (guile-procedures.txt): When we don't have makeinfo,
9433 use "cp" instead.
9434
197ee3d3
MV
94352001-12-16 Marius Vollmer <mvo@zagadka.ping.de>
9436
9437 * stacks.c, stacks.h (scm_t_stackype): Renamed to scm_stack_type
9438 everywhere.
9439
9440 * continuations.c (scm_make_continuation): Do not retain the
9441 throw_value when the continuation is invoked.
9442
4d4528e7
SJ
94432001-12-08 Stefan Jahn <stefan@lkcc.org>
9444
9445 * strings.c (scm_c_string2str): New function. Converts a
34472dfe 9446 given Scheme string into a C string. Also put in two
4d4528e7
SJ
9447 THINKME's regarding the malloc policy for the missing converter
9448 routines.
9449
98347362
NJ
94502001-12-01 Neil Jerram <neil@ossau.uklinux.net>
9451
9452 * gh_data.c (gh_module_lookup): Use scm_str2symbol rather than
9453 gh_symbol2scm.
9454
1fc8902f
DH
94552001-11-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
9456
9457 * gc.h (SCM_GC_CELL_WORD, SCM_GC_CELL_OBJECT,
9458 SCM_GC_SET_CELL_WORD, SCM_GC_SET_CELL_OBJECT): New macros.
9459
9460 (SCM_GC_CELL_TYPE, SCM_CELL_WORD, SCM_CELL_OBJECT,
9461 SCM_SET_CELL_WORD, SCM_SET_CELL_OBJECT, SCM_FREE_CELL_CDR,
9462 SCM_GC_SET_CELL_OBJECT): Express in terms of SCM_GC_CELL_*
9463 macros.
9464
9465 (SCM_FREE_CELL_P): Express in terms of SCM_GC_CELL_TYPE.
9466
9467 * inline.h (scm_alloc_cell, scm_alloc_double_cell): Use
9468 SCM_GC_CELL_* macros when accessing free cells.
9469
4878beec
MV
94702001-11-25 Marius Vollmer <mvo@zagadka.ping.de>
9471
9472 * vectors.h (SCM_MAKE_VECTOR_TAG): New.
34472dfe 9473 * unif.h (SCM_MAKE_BITVECTOR_TAG, SCM_MAKE_UVECTOR_TAG): New.
4878beec
MV
9474 * symbols.h (SCM_MAKE_SYMBOL_TAG): New.
9475 * strings.h (SCM_MAKE_STRING_TAG): New.
9476 * procs.h (SCM_MAKE_CCLO_TAG): New.
9477 * numbers.h (SCM_MAKE_BIGNUM_TAG): New.
9478
9479 * goops.h: Replaced SCM_DEBUG_DEPRECATED with
9480 !SCM_ENABLE_DEPRECATED.
9481
9482 * async.c, async.h (scm_system_async_mark_from_signal_handler):
9483 New.
9484
9485 * scmsigs.c (scm_take_signal): Removed all code that assumes that
9486 signal handlers are allowed to divert the flow of control. Call
9487 scm_system_async_mark_from_signal_handler instead of
9488 scm_system_async_mark.
9489
9490
9491 Deprecated SCM_NEWCELL and SCM_NEWCELL2. Added scm_alloc_cell and
9492 scm_alloc_double_cell in their place.
34472dfe 9493
4878beec
MV
9494 * gc.h (SCM_GC_SET_ALLOCATED, scm_debug_newcell,
9495 scm_debug_newcell2, scm_tc16_allocated): Removed from header.
9496 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
9497 (SCM_NEWCELL, SCM_NEWCELL2): Implement in terms of
9498 scm_deprecated_newcell and scm_deprecated_newcell2.
9499
9500 gc.c (scm_tc16_allocated): Only define when including deprecated
9501 features.
9502 (scm_debug_newcell, scm_debug_newcell2): Removed.
9503 (scm_init_storage): Do not initialize scm_tc16_allocated.
9504 (scm_init_gc): Do it here.
9505 (allocated_mark): New, from old code.
9506 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
34472dfe 9507
4878beec 9508 * inline.c, inline.h: New files.
34472dfe 9509 * Makefile.am: Added them in all the right places.
4878beec 9510
34472dfe 9511 * _scm.h: Include "libguile/inline.h".
4878beec
MV
9512
9513 * alist.c, coop-threads.c, debug.c, environments.c, eval.c,
9514 fports.c, gh_data.c, goops.c, guardians.c, lang.c, list.c,
9515 num2float.i.c, numbers.c, pairs.c, ports.c, print.c, procs.c,
9516 smob.c, smob.h, strings.c, strports.c, struct.c, symbols.c,
9517 unif.c, variable.c, vectors.c, vports.c, weaks.c: Replaced
9518 SCM_NEWCELL and SCM_NEWCELL2 with scm_alloc_cell and
9519 scm_alloc_double_cell, respectively.
9520
d2bc7fae
MV
95212001-11-23 Marius Vollmer <mvo@zagadka.ping.de>
9522
9523 * modules.c (scm_c_use_module): Adapt to changes to
9524 `process-use-modules'.
9525
5eec27e9
DH
95262001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
9527
9528 * numbers.c (scm_divide): Fix more division by zero errors.
9529
8978878f
GH
95302001-11-21 Gary Houston <ghouston@arglist.com>
9531
9532 * Makefile.am (OMIT_DEPENDENCIES): removed, since it seems to be
9533 obsolete. autogen.sh says:
9534 invalid unused variable name: `OMIT_DEPENDENCIES'
9535
164826d3
DH
95362001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
9537
9538 * numbers.c (scm_divide): Fix (/ 0). Thanks to Keith Wright for
9539 reporting the bug.
9540
84aff7a7
MV
95412001-11-21 Marius Vollmer <mvo@zagadka.ping.de>
9542
9543 * Makefile.am (install-exec-hook): Prepend $(DESTDIR) to filename.
9544 Thanks to Eric Gillespie, Jr!
34472dfe 9545
6063dc1d
SJ
95462001-11-21 Stefan Jahn <stefan@lkcc.org>
9547
34472dfe
TTN
9548 * win32-socket.c (getservent, setservent, endservent,
9549 getprotoent, setprotoent, endprotoent): New functions.
6063dc1d
SJ
9550 Appropriate replacements for M$-Windows.
9551
9552 * numbers.c (SIZE_MAX, PTRDIFF_MAX, PTRDIFF_MIN): Reintroduced
9553 these definitions for GUILE_DEBUG.
9554
9555 * net_db.c: Include "win32-socket.h" if compiling with a native
34472dfe
TTN
9556 M$-Windows compiler. Include some pieces of code (protoent and
9557 servent interface) protected by HAVE_* macros when using a
6063dc1d
SJ
9558 native M$-Windows compiler.
9559
351982f6
MV
95602001-11-20 Marius Vollmer <mvo@zagadka.ping.de>
9561
9562 * modules.c (scm_c_export): Do nothing when the first argument is
9563 already the terminating NULL. Thanks to Han-Wen Nienhuys!
9564
849038b5
TTN
95652001-11-20 Thien-Thi Nguyen <ttn@glug.org>
9566
9567 * Makefile.am (libpath.h): In SCM_BUILD_INFO,
9568 also include `buildstamp'.
9569
5c790b44
RB
95702001-11-18 Rob Browning <rlb@defaultvalue.org>
9571
9572 * version.c
9573 (s_scm_major_version): use SCM_MAJOR_VERSION.
9574 (s_scm_minor_version): use SCM_MINOR_VERSION.
9575 (s_scm_micro_version): use SCM_MICRO_VERSION.
9576 (s_scm_version): use SCM_MAJOR_VERSION, SCM_MINOR_VERSION, and
9577 SCM_MICRO_VERSION.
9578
9579 * version.h.in
9580 (SCM_MAJOR_VERSION): renamed from SCM_GUILE_MAJOR_VERSION.
9581 (SCM_MINOR_VERSION): renamed from SCM_GUILE_MINOR_VERSION.
9582 (SCM_MICRO_VERSION): renamed from SCM_GUILE_MICRO_VERSION.
9583
694a9bb3
NJ
95842001-11-18 Neil Jerram <neil@ossau.uklinux.net>
9585
9586 * vectors.c (scm_vector_move_left_x, scm_vector_move_right_x):
9587 Rewrite docstrings without reference to substring-move-left/right,
9588 since the latter no longer exist.
9589
302c12b4
DH
95902001-11-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
9591
9592 * eval.c: Removed bogus comment about acros.
9593
9594 (scm_unmemocar): Use !SCM_CONSP instead of SCM_IMP.
9595 Minimize scope of local variable. Eliminate dependency on
9596 macro DEBUG_EXTENSIONS.
9597
9598 (s_splicing): New error message string.
9599
9600 (scm_m_body): Issue 'bad body' message rather than 'missing
9601 expression' message.
9602
9603 (scm_m_quote): Eliminate unnecessary copying.
9604
9605 (scm_m_lambda, scm_m_letstar, scm_m_letrec, scm_m_let): Leave the
9606 checking of the body to scm_m_body.
9607
9608 (scm_m_do): Move comment to function header. Rename arg1 to
9609 binding. Made the code a bit easier to read.
9610
9611 (evalcar): Removed.
9612
9613 (iqq): Added a comment. Changed the depth parameter to
9614 unsigned. Use size_t for vector lengths. Make sure vector object
9615 is gc protected as long as its contents are read. Add some syntax
9616 checks. Get rid of unnecessary SCM_IMP test. Clean up the
9617 control structure a bit.
9618
9619 (scm_m_delay): Added comment about the implementation of
9620 scm_m_delay.
9621
9622 (scm_m_define): Add comment about guile's currying define
9623 syntax. Renamed 'proc' to 'name'. Eliminate dependency on macro
9624 DEBUG_EXTENSIONS. Simplified code a bit. Eliminate SICP code.
9625
9626 (scm_m_letrec1): Removed. Part of the functionality is taken
9627 over by the new function 'transform_bindings'.
9628
9629 (transform_bindings): New function. Takes over some of the
9630 functionality of removed function 'scm_m_letrec1', namely to split
9631 a list of bindings into a reversed list of variables and a list of
9632 initializers.
9633
9634 (scm_m_letrec): Call 'transform_bindings'.
9635
9636 (scm_m_let): Minimized scope of local variables. Renamed 'proc'
9637 to 'temp' and 'arg1' to 'binding'. Eliminated redundant SCM_NIMP
9638 test. Use 'transform_bindings'. Fixed scoping error with named
9639 let (Thanks to Aubrey Jaffer for reporting the bug and to Neil
9640 Jerram for suggesting the fix). Cleaned up the control structure
9641 a bit.
9642
9643 (scm_m_expand_body): Use 'transform_bindings'. Eliminated
9644 unnecessary consing. Eliminated unnecessary
9645 SCM_DEFER/ALLOW_INTS.
9646
9647 (SCM_CEVAL): Un-obfuscated some loops.
9648
cecb4a5e
NJ
96492001-11-16 Neil Jerram <neil@ossau.uklinux.net>
9650
8f85c0c6
NJ
9651 * gc.h (scm_unhash_name): Old declaration removed.
9652
9653 * eval.c (s_scm_eval): Change @var{primitive-eval} to
9654 @code{primitive-eval}.
9655
9656 * feature.c, vectors.c, net_db.c, unif.c, weaks.c, struct.c,
9657 version.c, alist.c, ports.c, ramap.c, unif.c, strings.c, list.c:
9658 Change @deffnx lines in docstrings to say {Scheme Procedure}
9659 rather than primitive or procedure.
9660
9661 * posix.c (scm_execl), filesys.c (scm_close), unif.c
9662 (scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
9663 scm_bit_set_star_x, scm_bit_invert_x), ramap.c (scm_array_fill_x,
9664 scm_array_for_each, scm_array_index_map_x), vectors.c (scm_vector,
9665 scm_make_vector, scm_vector_to_list, scm_vector_fill_x), strop.c
9666 (scm_string_split, scm_string_ci_to_symbol), strings.c
9667 (scm_string_p), sort.c (scm_merge), print.c (scm_newline),
9668 macros.c (scm_macro_type), alist.c (scm_acons, scm_assq):
9669 Docstring fixes and improvements reflecting edits that have been
9670 made in the reference manual source.
9671
9672 * objprop.c (scm_object_properties, scm_set_object_properties_x,
9673 scm_object_property, scm_set_object_property_x): Remove invalid
9674 @deffnx lines for corresponding procedure property primitives.
9675
cecb4a5e
NJ
9676 These changes add a @deffnx C function declaration and function
9677 index entries for each Guile primitive to the copy of the doc
9678 snarf output that is used for reference manual synchronization.
9679 Online help is unchanged.
849038b5 9680
cecb4a5e
NJ
9681 * snarf.h (SCM_SNARF_DOCS): Output primitive's C function name.
9682 (SCM_DEFINE, SCM_DEFINE1, SCM_REGISTER_PROC): Supply to C function
9683 name to SCM_SNARF_DOCS.
849038b5 9684
cecb4a5e
NJ
9685 * guile-snarf-docs-texi.in: Pass the shell script's arguments into
9686 snarf-check-and-output-texi.
9687
9688 * Makefile.am (guile-procedures.texi): New rule.
9689 (BUILT_SOURCES, guile.texi, guile-procedures.txt, CLEANFILES):
9690 Changed so that the last stage of doc snarfing is now performed
9691 twice, once to produce guile-procedures.txt for online help, and
9692 once to produce guile.texi for reference manual synchronization.
9693
ddea3325
DH
96942001-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
9695
9696 * eval.c (RETURN): Wrap in do{}while(0) in order to make it
9697 safely usable as a single statement followed by a ';', for example
9698 in an if statement.
9699
9700 (SCM_CEVAL, SCM_APPLY): Clean up code using 'RETURN'.
9701
72dd0a03
NJ
97022001-11-13 Neil Jerram <neil@ossau.uklinux.net>
9703
9704 * random.c (scm_random_solid_sphere_x,
9705 scm_random_hollow_sphere_x): Correct "shere" typos.
9706
9707 * hashtab.c (scm_hash_fold): Add missing apostrophe to docstring.
9708
9709 * version.c (scm_version): Update docstring to include
9710 `micro-version'.
9711
6558eda6
MV
97122001-11-13 Marius Vollmer <mvo@zagadka.ping.de>
9713
409b8588
MV
9714 * modules.c (scm_c_export): Call va_end after collecting the
9715 symbols.
9716
adb8c0f2
MV
9717 * strop.h, strop.c (scm_substring_move_left_x,
9718 scm_substring_move_right_x): Removed.
9719
6558eda6
MV
9720 * __scm.h (HAVE_UINTPTR_T, HAVE_PTRDIFF_T, HAVE_LONG_LONG,
9721 HAVE_LONG_LONGS): Define to "1" when defining them, to mirror what
9722 configure does.
9723
5d8fc640
MV
97242001-11-12 Marius Vollmer <mvo@zagadka.ping.de>
9725
9726 * numbers.c: Document macros to define when including
9727 num2integral.i.c. MAX_VALUE and MIN_VALU are no longer used, we
9728 now rely on SIZEOF_ macros that have been figured out at
9729 configure time.
9730
9731 * num2integral.i.c: Adapt to new interface.
9732 (NUM2INTEGRAL): Test whether a fixnum can be represented in the
9733 target type by casting it and checking whether it is still the
9734 same. Do not try to handle bignums for integral types that are
9735 smaller than fixnums. When handling bignums, collect the
9736 magnituse first into a unsigned type, and correctly check for
9737 overflow.
9738 (INTEGRAL2BIG): Do not use MIN_VALUE explicitely by observing that
9739 only -MIN_VALUE can still be negative of all negative numbers (in
9740 twos-complement).
9741
849038b5 9742 * tags.h (SIZEOF_SCM_T_BITS): Define it appropriately.
5d8fc640
MV
9743
9744 * __scm.h: Define HAVE_UINTPTR_T, HAVE_PTRDIFF_T and
9745 HAVE_LONG_LONG depending on whether their size is non-zero.
9746
d6b8cf11
TTN
97472001-11-11 Thien-Thi Nguyen <ttn@glug.org>
9748
9749 * strop.c (scm_string_null_p): Docfix; nfc.
9750 Thanks to Scott Lenser.
9751
9401323e
NJ
97522001-11-07 Neil Jerram <neil@ossau.uklinux.net>
9753
9754 * extensions.c (scm_load_extension): Canonicalize docstring
9755 whitespace.
9756
9757 * unif.c (scm_uniform_array_write), ports.c
9758 (scm_current_output_port, scm_force_output), dynwind.c
9759 (scm_dynamic_wind), scmsigs.c (scm_setitimer, scm_getitimer),
9760 filesys.c (scm_open, scm_lstat), struct.c
9761 (scm_make_struct_layout), random.c (scm_random,
9762 scm_random_solid_sphere_x, scm_random_hollow_sphere_x, strop.c
9763 (scm_i_index): Remove superfluous whitespace from end of docstring
9764 lines.
9765
9766 * filesys.c (scm_select), guardians.c (scm_guardian_greedy_p),
9767 strings.c (scm_make_string), variable.c (scm_make_variable,
9768 scm_make_undefined_variable, scm_variable_p, scm_variable_set_x,
9769 scm_variable_bound_p), scmsigs.c (scm_setitimer, scm_getitimer),
9770 posix.c (scm_crypt), struct.c (scm_make_vtable_vtable), hashtab.c
9771 (scm_hash_fold), ports.c (scm_port_for_each): Remove superfluous
9772 newline at end of docstrings.
9773
9774 * modules.c (scm_set_current_module): Add missing newline to
9775 docstring.
9776
b4e15479
SJ
97772001-11-07 Stefan Jahn <stefan@lkcc.org>
9778
9779 * win32-socket.[ch]: New files. Defines Winsock-API error codes
9780 and makes them available through Guile. That is because the
9781 Winsock-API does not store its errors in `errno' and thus cannot
9782 return error messages via `strerror (errno)'.
9783
9784 * socket.c (scm_init_socket): Initialize `win32-socket' part
9785 here under M$-Windows.
9786
d6b8cf11 9787 * numbers.h: Added missing declaration of
b4e15479
SJ
9788 `scm_sys_check_number_conversions()'.
9789
9790 * error.c: Local definition of SCM_I_STRERROR and SCM_I_ERRNO
9791 and use in `(strerror)' and `(system-error)'.
9792
d6b8cf11 9793 * Makefile.am (EXTRA_libguile_la_SOURCES): Added
b4e15479
SJ
9794 `win32-socket.[ch]' to extra source and header files.
9795
7ab89df1
MV
97962001-11-06 Marius Vollmer <mvo@zagadka.ping.de>
9797
9798 * script.c (scm_shell_usage, scm_compile_shell_switches): Prepend
9799 a call to turn-on-debugging when --debug has been given instead of
9800 turning it on directly. Also, handle new `--no-debug' option,
9801 which might suppress the call to turn-on-debugging.
9802
0233bfc1
SJ
98032001-11-05 Stefan Jahn <stefan@lkcc.org>
9804
9805 * struct.c (s_scm_struct_vtable_p): Corrected docstring.
9806
8f99e3f3
SJ
98072001-11-04 Stefan Jahn <stefan@lkcc.org>
9808
9809 * Makefile.am (libguile_la_LIBADD): Added $(THREAD_LIBS_LOCAL)
d6b8cf11 9810 here (was at guile_LDADD) which describes the dependency
8f99e3f3
SJ
9811 correctly and allows a clean build on Win32.
9812
d6b8cf11 9813 * __scm.h (SCM_API): Follow-up patch. Renamed __FOO__ macros
8f99e3f3
SJ
9814 into FOO.
9815
9816 * __scm.h: USE_DLL_IMPORT indicates the usage of the DLL
9817 import macros for external libraries (libcrypt, libqthreads,
9818 libreadline and libregex).
9819
9820 * coop-defs.h: Include <winsock2.h> for `struct timeval'.
9821
9822 * posix.c (flock): Added support for flock() in M$-Windows.
9823
9824 * guile.c (SCM_IMPORT): Follow-up patch. Use SCM_IMPORT instead
9825 of __SCM_IMPORT__.
9826
9827 * fports.c (getflags): Differentiate reading and writing pipes
9828 descriptors.
9829
9830 * filesys.c (S_IS*): Redefine all of the S_IS*() macros for
9831 M$-Windows.
9832
9833 * coop.c (coop_condition_variable_timed_wait_mutex): Use
9834 conditionalized error code if `ETIMEDOUT' is not available.
9835 (scm_thread_usleep): Remove bogus declaration of `struct timeval
9836 timeout'.
9837
9838 * numbers.c (PTRDIFF_MIN): Moved this definition where it actually
9839 belongs. That is because NO_PREPRO_MAGIC gets undefined after
9840 each inclusion of `num2integral.i.c'.
9841 (SIZE_MAX): Define NO_PREPRO_MAGIC if SIZE_MAX is undefined.
9842
4e21fa60
MV
98432001-11-03 Marius Vollmer <mvo@zagadka.ping.de>
9844
9845 * eval.c (scm_m_begin): Allow `(begin)`, with no subforms.
9846 (SCM_CEVAL): Evaluate an empty `begin' to SCM_UNSPECIFIED.
9847
08112c95
MD
98482001-11-02 Mikael Djurfeldt <mdj@linnaeus>
9849
7663c008
MD
9850 * print.c (scm_iprin1): Mark print state as revealed when
9851 dispatching to generic write or display.
9852
08112c95
MD
9853 * unif.c (scm_ra2contig): Fixed memory overwrite bug.
9854
f712d833
MV
98552001-11-02 Marius Vollmer <mvo@zagadka.ping.de>
9856
9857 Support for native Win32. Thanks to Stefan Jahn!
d6b8cf11 9858
f712d833
MV
9859 * Makefile.am: Add win32-uname.c, win32-uname.h, win32-dirent.c
9860 and win32-dirent.h to extra source and header files. These
9861 include the uname() and the POSIX dirent interface implementation
9862 for M$-Windows. Put `-no-undefined' into LDFLAGS to support
9863 linkers which do not allow unresolved symbols inside shared
9864 libraries. Corrected `guile_filter_doc_snarfage$(EXEEXT)'
9865 dependency.
9866
d6b8cf11
TTN
9867 * __scm.h: Defined SCM_API. This macro gets prepended to all
9868 function and data definitions which should be exported or imported
f712d833
MV
9869 in the resulting dynamic link library in the Win32 port.
9870
9871 * __scm.h, alist.h, arbiters.h, async.h, backtrace.h, boolean.h,
d6b8cf11 9872 chars.h, continuations.h, coop-defs.h, coop-threads.h,
f712d833
MV
9873 debug-malloc.h, debug.h, deprecation.h, dynl.h, dynwind.h,
9874 environments.h, eq.h, error.h, eval.h, evalext.h, extensions.h,
9875 feature.h, filesys.h, fluids.h, fports.h, gc.h, gdb_interface.h,
9876 gdbint.h, gh.h, goops.h, gsubr.h, guardians.h, hash.h, hashtab.h,
9877 hooks.h, init.h, ioext.h, iselect.h, keywords.h, lang.h, list.h,
d6b8cf11 9878 load.h, macros.h, mallocs.h, modules.h, net_db.h, numbers.h,
f712d833
MV
9879 objects.h, objprop.h, options.h, pairs.h, ports.h, posix.h, print.h,
9880 procprop.h, procs.h, properties.h, ramap.h, random.h, rdelim.h,
9881 read.h, regex-posix.h, root.h, rw.h, scmsigs.h, script.h, simpos.h,
9882 smob.h, socket.h, sort.h, srcprop.h, stackchk.h, stacks.h, stime.h,
9883 strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h,
9884 tags.h, threads.h, throw.h, unif.h, values.h, variable.h, vectors.h,
9885 vports.h, weaks.h:
9886 Prefixed each each exported symbol with SCM_API.
9887
d6b8cf11 9888 * continuations.c: Added comment about the use of the extern
f712d833
MV
9889 declarations of {get,set}context() functions used in the ia64 port.
9890
9891 * continuations.h, gc.c: `__libc_ia64_register_backing_store_base'
9892 is meant to be a `unsigned long *'.
9893
9894 * filesys.c: Include `direct.h' if possible. Use local
9895 `win32-dirent.h' for the native M$-Windows port. Define S_IS*()
9896 macros for M$-Windows. Implementation of `fstat_Win32()' which is
9897 able to differentiate between sockets and other file descriptors.
9898 Use this function as wrapper in `scm_fstat()'. Fixed typo in
9899 `scm_dirname()'.
9900
9901 * fports.c: Include `io.h' is possible. Put `*fp' into referring
9902 statement block in `scm_fport_buffer_add()'.
9903 Some corrections in `getflags()'.
d6b8cf11 9904
f712d833
MV
9905 * gdb_interface.h (GDB_INTERFACE): Also support __CYGWIN__.
9906
9907 * guile.c: Make sure to define __SCM_IMPORT__ for shared library
9908 build on Win32. Disable preloaded symbols on Win2 platforms.
9909
9910 * ioext.c, ports.c: Include `io.h' is possible.
9911
9912 * mkstemp.c: Include `process.h' is possible.
9913
9914 * net_db.c: Disable extern declaration of `h_errno' for __CYGWIN__,
9915 too.
9916 Put `scm_return_entry()' into HAVE_GETSERVENT conditional.
9917
9918 * posix.c: Remove unnecessary dirent includes and defines. Include
9919 local `win32-uname.h' for MinGW. Extern declaration of
9920 `mkstemp()' for systems where it does not exists. Make
9921 `getlogin()' available on M$-Windows.
9922
9923 * scmsigs.c: Made `usleep()' avalable on MinGW.
9924
9925 * stime.c: On M$-Windows `tzname[]' is known to be `_tzname[]'.
9926
9927 * win32-dirent.c: Include "win32-dirent.h", not "dirent.h".
9928
9929 * win32-uname.c: Include "win32-uname.h", not "uname.h".
9930
d245ce23
MD
99312001-10-28 Mikael Djurfeldt <mdj@linnaeus>
9932
9933 * unif.c (scm_uniform_array_read_x, scm_uniform_array_write):
9934 Don't apply scm_uniform_vector_length on arrays.
9935
8ea46249
DH
99362001-10-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
9937
9938 * eval.c (scm_lookupcar, scm_m_letstar, scm_m_do, iqq,
9939 scm_m_define, scm_m_letrec1, scm_m_let, scm_m_expand_body,
9940 scm_macroexp, unmemocopy, scm_eval_args, scm_deval_args,
9941 SCM_CEVAL, scm_map, scm_init_eval): When building lists, prefer
9942 scm_list_<n> over scm_cons[2]?.
9943
9944 (scm_unmemocar, scm_m_cond, scm_m_letstar, scm_m_letrec1,
9945 scm_m_let, scm_m_atbind, unmemocopy, SCM_CEVAL, SCM_APPLY): Use
9946 SCM_C[AD][AD]R instead of explicit form.
9947
9948 (scm_m_set_x, scm_m_cond, scm_m_letstar, scm_m_do): Reordered
9949 comparison parameters.
9950
9951 (scm_m_case, scm_m_cond, scm_m_letstar, scm_m_do, SCM_CEVAL): Use
9952 !SCM_NULLP instead of SCM_NIMP.
9953
9954 (scm_m_case): Don't copy the form. Renamed proc to clause and
9955 minimized its scope. Renamed x to clauses. Removed side
9956 effecting operation from macro call.
9957
9958 (scm_m_cond): Don't copy the form. Renamed arg1 to clause and
9959 minimized its scope. Renamed x to clauses. Minimized the scope
9960 of variable 'len'. Make sure the else clause is treated specially
9961 even in case of '=>' occurences. Don't change the else to #t in
9962 order to be able to distinguish this case in the evaluator. Leave
9963 type checking of the recipient to the evaluator.
9964
9965 (scm_c_improper_memq): Made the comment somewhat clearer.
9966
9967 (scm_m_lambda): Renamed proc to formals. Removed unnecessary
9968 test for SCM_IM_LET at the place of the formal parameters.
9969 Simplified the formal parameter checking.
9970
9971 (scm_m_letstar): Added Comment. Renamed proc to bindings.
9972 Renamed arg1 to binding and minimized its scope. Eliminated
9973 unnecessary consing.
9974
9975 (scm_m_do): Renamed proc to bindings. Minimized the scope of
9976 variable 'len'.
9977
9978 (build_binding_list): New static function.
9979
9980 (unmemocopy): Don't use SCM_TYP7 on pairs (it's unclean).
9981 Further, split up the 'letrec' unmemoizing code to the
9982 corresponding parts for 'do', 'let' and 'letrec', adding comments
9983 to each form. Cleanup the handling of the do form (This removes
9984 some *real* code :-).
9985
9986 (SCM_CEVAL): Removed side effecting operation from macro call.
9987 Handle the 'else clause of the 'cond form specially - the symbol
9988 'else is not replaced with #t any more.
9989
8186c4f5
GH
99902001-10-14 Gary Houston <ghouston@arglist.com>
9991
9992 * version.c (scm_version): use sprintf instead of snprintf,
9993 for portability. thanks to Bill Schottstaedt.
9994
89759084
MD
99952001-10-14 Mikael Djurfeldt <mdj@linnaeus>
9996
9997 * read.c (scm_lreadr): When user-defined hash procedure returns
9998 SCM_UNSPECIFIED: Fall back to standard handling instead of raising
9999 an exception. (This prevents parsing of uniform vectors from
10000 interfering with parsing of numbers.)
10001
9c7ce563
MV
100022001-10-13 Marius Vollmer <mvo@zagadka.ping.de>
10003
10004 * numbers.c: Set NO_PREPRO_MAGIC when defining our version of
10005 PTRDIFF_MIN. Thanks to Ken Raeburn.
10006
100072001-10-07 Marius Vollmer <mvo@zagadka.ping.de>
10008
10009 * Makefile.am (EXTRA_libguile_la_SOURCES): Added "mkstemp.c".
10010
10011 * eval.c (scm_m_atbind): First try to find the variable without
10012 defining it locally; when it has not been found, define it
10013 locally.
10014
10015 * modules.c (module_variable): Pass over variables that exist but
10016 are unbound.
10017
100182001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
10019
10020 * backtrace.c (display_backtrace_file_and_line): Only use
10021 scm_basename when POSIX support is compiled in. Thanks to Chris
10022 Cramer.
10023
1fe5e088
DH
100242001-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10025
10026 * numbers.c (mem2uinteger): Return number read so far when coming
10027 across a hexdigit after having read a # or if not reading a hex
10028 value. This will enable the calling code to correctly handle
10029 forms like 1e2. (The background is, that the exponent markers d,
10030 e and f are also hexdigits.) Thanks to Mikael Djurfeldt for
10031 providing this patch.
10032
10033 (mem2complex): Fix erroneous double-negation. Now, numbers like
10034 1-i will be read correctly.
10035
68665a97
MD
100362001-10-12 Mikael Djurfeldt <mdj@linnaeus>
10037
10038 * debug.c (scm_mem_to_proc): Fixed typo in previous change.
10039
10040 * validate.h (SCM_VALIDATE_DOUBLE_DEF_COPY): New macro.
10041
d5cf5324
DH
100422001-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
10043
10044 * print.c (scm_print_state_vtable, print_state_pool):
10045 Initialize. These variables are now registered as gc roots.
10046
10047 (scm_current_pstate): Update documentation.
10048
10049 (scm_current_pstate, scm_make_print_state, scm_free_print_state,
10050 scm_prin1, scm_init_print): print_state_pool is registered as a
10051 gc root and thus does not need to be protected by a surrounding
10052 pair any more.
10053
10054 (make_print_state): The car of print_state_pool no longer holds
10055 the scm_print_state_vtable.
10056
10057 (scm_current_pstate, scm_make_print_state, print_circref,
10058 scm_iprin1, scm_prin1, scm_iprlist): Prefer !SCM_<foo> over
10059 SCM_N<foo>.
10060
10061 (scm_prin1): When building lists, prefer scm_list_<n> over
10062 scm_cons[2]?.
10063
10064 (scm_iprlist): Removed a redundant SCM_IMP test.
10065
10066 (scm_simple_format): Use SCM_EQ_P to compare SCM values.
10067
37c56aec
DH
100682001-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
10069
10070 * debug.c (scm_make_iloc): Prefer !SCM_<foo> over SCM_N<foo>.
10071
10072 (scm_memcons, scm_mem_to_proc): When building lists, prefer
10073 scm_list_<n> over scm_cons[2]?.
10074
10075 (scm_mem_to_proc): Prefer SCM_CONSP over SCM_NIMP.
10076
10077 (scm_procedure_name): Use SCM_CADR instead of explicit form.
10078
10079 (debugobj_print): Coerce scm_intprint arg 1 to long, not int.
10080 Thanks to Rob Browning for the patch (see log entry 2001-09-21) -
10081 for some reason his patch didn't make it into the cvs.
10082
79d34f68
DH
100832001-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
10084
10085 * numbers.c (mem2decimal_from_point): Cleaned up the parsing a
10086 little bit - should even be somewhat more accurate now.
10087
5e137c65
RB
100882001-10-08 Rob Browning <rlb@defaultvalue.org>
10089
10090 * gc.c: support ia64 register backing store.
10091 (SCM_MARK_BACKING_STORE): new macro.
10092
10093 * continuations.h: support ia64 register backing store.
10094 (struct scm_t_contregs): add ia64 register backing store.
10095
10096 * continuations.c: support ia64 register backing store.
10097 (continuation_mark): mark ia64 register backing store.
10098 (continuation_free): free ia64 register backing store.
10099 (scm_make_continuation): capture ia64 register backing store.
10100 (copy_stack_and_call): copy ia64 register backing store.
10101
ee083ac2
DH
101022001-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
10103
10104 * hashtab.c (scm_hash_fn_create_handle_x): The result of assoc_fn
10105 is known to be #f if no entry is found. Thus, use !SCM_FALSEP
10106 instead of SCM_NIMP to test for that case.
10107
10108 * strings.h (SCM_SET_STRING_LENGTH): Cast the length to
10109 scm_t_bits instead of long.
10110
71dcdbf9
MV
101112001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
10112
10113 * tags.h (SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
10114 SCM_T_SIGNED_BITS_MIN): New.
10115 * numbers.h (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM):
10116 Use them to make these macros computable by the preprocessor.
10117
10118 * num2integral.i.c (INTEGRAL2NUM): Let the preprocessor test
10119 whether the integral type fits in a fixnum, not the compiler.
10120 This removes a spurious compiler warning. Also, honor the
10121 NO_PREPRO_MAGIC flag to suppress any preprocessor tests. This is
10122 needed for `long long's.
10123
10124 * numbers.c: Define NO_PREPRO_MAGOC when including
10125 num2integral.c.i for `long long' and `signed long long'.
10126
152812c0
MD
101272001-10-06 Mikael Djurfeldt <mdj@linnaeus>
10128
10129 These changes fixes a race condition in the Guile coop - pthread
10130 compatibility code.
d6b8cf11 10131
152812c0
MD
10132 * coop.c (mother_awake_p): New variable.
10133 (coop_create): Set mother_awake_p before creating or signalling
10134 mother; wait until mother is going to sleep before returning.
10135 (mother): Reset mother_awake_p before going to sleep.
10136
11d49f54
DH
101372001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10138
10139 * options.c (protected_objects, scm_init_options): The content of
10140 protected_objects is now protected from garbage collection using
10141 scm_gc_register_root instead of scm_permanent_object.
10142
10143 (get_option_setting): New static function that computes an option
10144 setting as it was formerly done in the function scm_options.
10145
10146 (get_documented_option_setting): New static function that
10147 returns option documentation as it was formerly done in the
10148 function scm_options. Note that documentation C strings are no
10149 longer precomputed into SCM objects. Instead, they are converted
10150 into SCM strings every time get_documented_option_setting is
10151 called.
10152
10153 (change_option_setting): New static functions that modifies the
10154 option setting as it was formerly done in the function
10155 scm_options. The function is now exception safe, i. e. won't
10156 cause a memory leak when interrupted. Further, only non-immediate
10157 option values are added to the protection list.
10158
10159 (scm_options): This function now has only the purpose to dispatch
10160 to to get_option_setting, get_documented_option_setting or
10161 change_option_setting, depending on the arguments given to
10162 scm_options.
10163
10164 (scm_init_opts): Don't convert documentation C strings into SCM
10165 strings. Further, don't protect any object values: They _must_
10166 be immediate values, otherwise there is no guarantee that they
10167 have not been collected before anyway.
10168
10169 * options.[ch] (scm_t_option): Made type unsigned, name into a
10170 constant char* and val into a scm_t_bits type.
10171
10172 (scm_options, scm_init_opts): The number of options is guaranteed
10173 to be larger or equal to zero. Thus, the type is changed to
10174 unsigned.
10175
3dbacabc
DH
101762001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10177
10178 * num2integral.i.c (NUM2INTEGRAL): Eliminated some warnings about
10179 testing an unsigned value for being >= 0.
10180
14282d0f
DH
101812001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10182
10183 * numbers.h: Removed old comment about using SCM_CAR to access
10184 non-pair cells.
10185
10186 (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM): Make sure
10187 the return value is signed. Thanks to Brian Crowder for the bug
10188 report.
10189
10190 (SCM_SRS): Avoid unnecessary casting and don't unpack input
10191 values. With this patch, SCM_SRS can be safely used for other
10192 types than scm_t_signed_bits. However, it should still better be
10193 an internal macro and thus be renamed to SCM_I_SRS.
10194
10195 (SCM_MAKINUM, SCM_INUM): Use proper casting.
10196
2dbec7b5
GH
101972001-10-03 Gary Houston <ghouston@arglist.com>
10198
10199 * continuations.h, unif.h: in the descriptions of the bit patterns
10200 of the heap cells, make bit 0 the least significant.
10201
cf4ee841
TTN
102022001-09-25 Thien-Thi Nguyen <ttn@glug.org>
10203
10204 * chars.h (SCM_MAKE_CHAR): Use `scm_t_bits' instead of `intptr_t'.
10205 Thanks to Golubev I. N.
10206
4a151b3d
GH
102072001-09-25 Gary Houston <ghouston@arglist.com>
10208
10209 * ports.c (scm_drain_input): extended the docstring. thanks to
10210 Alex Schroeder and Thien-Thi Nguyen.
10211
581ded70
MD
102122001-09-23 Mikael Djurfeldt <mdj@linnaeus>
10213
10214 * validate.h (SCM_NUM2FLOAT, SCM_NUM2DOUBLE,
10215 SCM_VALIDATE_FLOAT_COPY, SCM_VALIDATE_DOUBLE_COPY): New
10216 macros. (The NUM names might soon change.)
10217
10218 * numbers.h: Added missing declarations.
10219
5437598b
MD
102202001-09-22 Mikael Djurfeldt <mdj@linnaeus>
10221
10222 * Makefile.am: Distribute num2float.i.c.
10223
10224 * num2float.i.c: New file, multiply included by numbers.c, used
10225 to "templatize" the float <-> num conversion routines.
10226
10227 * numbers.c: New functions: scm_num2float, scm_float2num,
10228 scm_num2double, scm_double2num.
10229
0b073f0f
RB
102302001-09-21 Rob Browning <rlb@defaultvalue.org>
10231
10232 * .cvsignore: really add version.h
10233
10234 * strings.h (SCM_SET_STRING_LENGTH): coerce "l" to a long.
10235 Otherwise it fails on the alpha. However, we might rather choose
10236 this size conditionally.
10237
10238 * numbers.c (scm_gcd): change "k" to a long from an int.
10239 Otherwise it fails on the alpha. However, we might rather choose
10240 this size conditionally.
10241
10242 * error.c (scm_wta): coerce char* to intptr_t before int
10243 assignment.
10244
10245 * debug.c (debugobj_print): coerce scm_intprint arg 1 to long, not
10246 int.
10247
10248 * chars.h (SCM_MAKE_CHAR): coerce value to intptr_t.
10249
2830fd91
MD
102502001-09-20 Mikael Djurfeldt <mdj@linnaeus>
10251
10252 * numbers.c (scm_integer_expt): Accept inexact integer in second
10253 argument. (Thanks to Bill Schottstaedt.)
10254
c13f0a90
RB
102552001-09-20 Rob Browning <rlb@defaultvalue.org>
10256
10257 * .cvsignore: add version.h
10258
10259 * versiondat.h.in: removed (obsolete).
10260
10261 * version.h.in: renamed from version.h.
10262 (SCM_GUILE_MAJOR_VERSION): new public macro.
10263 (SCM_GUILE_MINOR_VERSION): new public macro.
10264 (SCM_GUILE_MICRO_VERSION): new public macro.
10265
10266 * version.h: renamed to version.h.in.
10267
10268 * version.c
10269 (scm_major_version): support integer *_VERSION macros.
10270 (scm_minor_version): support integer *_VERSION macros.
10271 (scm_micro_version): support integer *_VERSION macros.
10272 (scm_version): support integer *_VERSION macros.
10273
147c18a0
MD
102742001-09-20 Mikael Djurfeldt <mdj@linnaeus>
10275
10276 * error.c, error.h: Made error keys globally accessible.
10277 Applications might want to test for these or use them in a direct
10278 call to scm_error.
10279
10280 * num2integral.i.c (NUM2INTEGRAL): Report an error when these
10281 routines are passed an inexact. This change in behavior is
10282 motivated by concordance with R5RS: It is more common that a
10283 primitive doesn't want to accept an inexact for an exact.
10284
662c5539
DH
102852001-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
10286
10287 The following patch partially undoes my patch from 2001-06-30,
10288 where I added the function scm_gc_mark_cell_conservatively. The
10289 function is buggy, since it breaks guile during conservative
10290 marking if a pointer on the stack points directly into the list of
10291 free cells on the heap: With conservative cell marking this will
10292 cause the whole free list to be scanned and marked - boom!
10293
10294 * gc.c (allocated_mark, MARK, heap_segment,
10295 scm_gc_mark_cell_conservatively, scm_init_storage), gc.h
cf4ee841 10296 (scm_gc_mark_cell_conservatively): Remove function
662c5539
DH
10297 scm_gc_mark_cell_conservatively and update the corresponding
10298 comments and uses accordingly. Thanks to Christopher Cramer for
10299 the patch. (Minor corrections by me.)
10300
6c1b7628
GH
103012001-09-15 Gary Houston <ghouston@arglist.com>
10302
10303 * root.h (scm_root_state): removed the continuation_stack and
10304 continuation_stack_ptr members, which have no apparent purpose.
10305 (scm_continuation_stack, scm_continuation_stack_ptr): #defines
10306 removed.
662c5539 10307
6c1b7628
GH
10308 * root.c (root_mark), init.c (restart_stack, start_stack), gc
10309 (scm_igc): remove all references to contination_stack and
10310 continuation_stack_ptr, avoiding allocation of a vector and
10311 useless processing during gc.
10312
455c0ac8
DH
103132001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10314
10315 * guardians.c (tconc_t, t_tconc): Renamed tconc_t to t_tconc.
10316
10317 (TCONC_IN): Make sure that the cell word 0 is initialized last.
10318
10319 (guardians_t, t_guardians): Renamed guardians_t to t_guardians.
10320
10321 (GUARDIAN, GUARDIAN_DATA): Renamed GUARDIAN to GUARDIAN_DATA.
10322
10323 (guardian_apply, scm_get_one_zombie, scm_make_guardian,
10324 mark_and_zombify): Prefer !SCM_<foo> over SCM_N<foo>.
10325
22ba637b
DH
103262001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10327
10328 * guardians.c (mark_dependencies_in_tconc,
10329 whine_about_self_centered_zombies, scm_init_guardians): Register
10330 the static global variable `self_centered_zombies' via
10331 scm_gc_register_root, to make some cdr-ing unnecessary.
10332
c3c4d801
DH
103332001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10334
10335 * backtrace.c (display_backtrace_file,
10336 display_backtrace_file_and_line): Use SCM_EQ_P when comparing SCM
10337 values, use SCM_FALSEP when comparing SCM values against #f.
10338 Thanks to Rob Browning for the bug report.
10339
b00418df
DH
103402001-09-12 Martin Baulig <martin@home-of-linux.org>
10341
10342 * strings.[ch] (scm_str2string): New function.
10343
a0d34a0b
MV
103442001-09-06 Marius Vollmer <mvo@zagadka.ping.de>
10345
10346 * gc.c (scm_done_free): Always subtract size from scm_mallocated
10347 when computing nm, even if it's negative.
10348 (scm_must_malloc): Abort on overflow of scm_mtrigger.
10349 (scm_must_realloc): Likewise.
10350
b10586f0
ML
103512001-09-01 Michael Livshin <mlivshin@bigfoot.com>
10352
10353 * numbers.c (scm_sys_check_number_conversions): new function,
10354 defined if Guile is compiled in debugging mode. currently checks
10355 `scm_num2ulong', should check much much more.
10356
10357 * num2integral.i.c (NUM2INTEGRAL): when converting a bignum to
10358 unsigned, ensure that it's positive. thanks to Martin Baulig!
cf4ee841 10359
8c494e99
DH
103602001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10361
10362 * __scm.h: Added new section about compile time selectable
10363 features.
10364
10365 (long_long, ulong_long, scm_sizet, SCM_WNA, SCM_OUTOFRANGE,
10366 SCM_NALLOC, SCM_HUP_SIGNAL, SCM_INT_SIGNAL, SCM_FPE_SIGNAL,
10367 SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL, SCM_GC_SIGNAL,
10368 SCM_TICK_SIGNAL, SCM_SIG_ORD, SCM_ORD_SIG, SCM_NUM_SIGS):
10369 Removed.
10370
10371 * deprecation.c (scm_include_deprecated_features): Simplified.
10372
10373 * eval.c (EVALCAR, unmemocopy), eval.h (SCM_XEVALCAR): Use
9a5fa6e9 10374 `SCM_IMP' instead of `!SCM_CELLP´.
8c494e99
DH
10375
10376 * eval.c (unmemocopy): Eliminate redundant SCM_CELLP tests.
10377 Extract side-effecting operations from macros.
10378
10379 (scm_init_eval): Don't initialize *top-level-lookup-closure*,
10380 scm_top_level_lookup_closure_var and scm_system_transformer.
10381
10382 * gc.c (CELL_P): New local definition to replace SCM_CELLP.
10383
10384 (heap_segment): Use CELL_P instead of SCM_CELLP.
10385
10386 * init.c (start_stack): Don't initialize
10387 scm_top_level_lookup_closure_var and scm_system_transformer.
10388
10389 * modules.c (scm_set_current_module): Don't access
10390 scm_top_level_lookup_closure_var and scm_system_transformer.
10391
10392 (scm_sym2var): Don't call scm_variable_set_name_hint.
10393
10394 (scm_post_boot_init_modules): Removed deprecated initializations.
10395
10396 * print.c (scm_ipruk): Don't access cell contents of non cells.
10397
10398 * strings.c (scm_string_set_x): All strings are writable.
10399
10400 * strings.h (SCM_STRINGP): Use SCM_TYP7 to determine the string
10401 type. There is only one string type now.
10402
10403 (SCM_STRING_COERCE_0TERMINATION_X): Deprecated.
10404
10405 * tags.h: Remove comments about two different string types.
10406
10407 (SCM_CELLP, SCM_NCELLP): Deprecated.
10408
10409 * variable.c (make_variable): Remove code variant for vcells.
10410
10411 * variable.h (SCM_VARIABLE_REF, SCM_VARIABLE_SET,
10412 SCM_VARIABLE_LOC): Remove code variant for vcells.
10413
10414 * __scm.h, deprecation.[ch]: Renamed SCM_DEBUG_DEPRECATED to
10415 SCM_ENABLE_DEPRECATED with the logic reversed.
10416
10417 * dynl.c (moddata, registered_mods), dynl.[ch]
10418 (scm_register_module_xxx, scm_registered_modules,
10419 scm_clear_registered_modules), error.[ch] (scm_wta), eval.c
10420 (*top-level-lookup-closure*), eval.[ch]
10421 (scm_top_level_lookup_closure_var, scm_system_transformer,
10422 scm_eval_3, scm_eval2), gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR,
10423 SCM_SETAND_CDR, SCM_SETOR_CDR, SCM_FREEP, SCM_NFREEP,
10424 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
10425 SCM_GCCDR), gc.[ch] (scm_remember, scm_protect_object,
10426 scm_unprotect_object), modules.c (root_module_lookup_closure,
10427 scm_sym_app, scm_sym_modules, module_prefix, make_modules_in_var,
10428 beautify_user_module_x_var, try_module_autoload_var,
10429 scm_module_full_name), modules.[ch] (scm_the_root_module,
10430 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
cf4ee841 10431 ports.h (scm_port, scm_ptob_descriptor, scm_port_rw_active),
8c494e99
DH
10432 ports.[ch] (scm_close_all_ports_except), random.h (scm_rstate,
10433 scm_rng, scm_i_rstate), strings.h (SCM_SLOPPY_STRINGP,
10434 SCM_RWSTRINGP, SCM_STRING_UCHARS, SCM_STRING_CHARS), strings.[ch]
10435 (scm_read_only_string_p, scm_makstr, scm_makfromstr,
10436 scm_make_shared_substring), tags.h (scm_tc7_substring,
10437 SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP, scm_tc7_ssymbol,
10438 scm_tc7_msymbol, scm_tcs_symbols), variable.c (sym_huh),
10439 variable.[ch] (scm_variable_set_name_hint, scm_builtin_variable),
10440 variable.h (SCM_VARVCELL, SCM_UDVARIABLEP, SCM_DEFVARIABLEP):
10441 Removed.
10442
10443 * dynl.c (scm_dynamic_link, scm_dynamic_func), error.c
10444 (scm_error_scm), filesys.c (scm_chown, scm_chmod, scm_open_fdes,
10445 scm_stat, scm_link, scm_rename, scm_delete_file, scm_mkdir,
10446 scm_rmdir, scm_opendir, scm_chdir, scm_symlink, scm_readlink,
10447 scm_lstat, scm_copy_file), fports.c (scm_open_file), ioext.c
10448 (scm_fdopen), net_db.c (scm_gethost, scm_getnet, scm_getproto,
10449 scm_getserv), ports.c (scm_truncate_file, scm_sys_make_void_port),
10450 posix.c (scm_getpwuid, scm_getgrgid, scm_execl, scm_execlp,
10451 scm_execle, scm_mkstemp, scm_utime, scm_access, scm_setlocale,
10452 scm_mknod, scm_crypt, scm_chroot, scm_getpass, scm_sethostname),
10453 regex-posix.c (scm_make_regexp, scm_regexp_exec), simpos.c
10454 (scm_system, scm_getenv), socket.c (scm_inet_aton), stime.c
10455 (setzone, scm_strftime, scm_strptime), vports.c
10456 (scm_make_soft_port): Remove calls to
10457 SCM_STRING_COERCE_0TERMINATION_X. Since the substring type is
10458 gone, all strings are 0-terminated anyway.
10459
10460 * dynl.h (LIBGUILE_DYNL_H, SCM_DYNL_H), random.h (RANDOMH,
10461 SCM_RANDOM_H): Renamed the macros that are defined to inhibit
10462 double inclusion of the same headers to the SCM_<filename>_H
10463 format.
10464
10465 * eval.c (SCM_CEVAL), gc.c (MARK, scm_gc_sweep), gh_data.c
10466 (gh_scm2chars), hash.c (scm_hasher), objects.c (scm_class_of),
10467 print.c (scm_iprin1): The type scm_tc7_substring does not exist
10468 any more.
10469
10470 * ports.h (SCM_PORTP, SCM_OPPORTP, SCM_OPINPORTP, SCM_OPOUTPORTP,
10471 SCM_INPUT_PORT_P, SCM_OUTPUT_PORT_P, SCM_OPENP), tags.h
10472 (SCM_TYP16_PREDICATE), variable.h (SCM_VARIABLEP): Prefer
10473 !SCM_<foo> over SCM_N<foo>.
10474
dee01b01
DH
104752001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10476
10477 * Makefile.am: Remove references to symbols-deprecated.c.
10478
10479 * symbols.c (scm_init_symbols): Don't initialize deprecated
10480 symbol functions.
10481
10482 * symbols-deprecated.c: Removed.
10483
10484 * fluids.[ch] (scm_internal_with_fluids), gsubr.[ch]
10485 (scm_make_gsubr, scm_make_gsubr_with_generic), hooks.[ch]
10486 (scm_create_hook), list.c (list*), list.h (SCM_LIST[0-9],
10487 scm_listify), list.[ch] (scm_sloppy_memq, scm_sloppy_memv,
10488 scm_sloppy_member), load.c (scm_end_of_file_key), load.[ch]
10489 (scm_read_and_eval_x), numbers.[ch] (scm_mkbig, scm_big2inum,
10490 scm_adjbig, scm_normbig, scm_copybig, scm_2ulong2big, scm_dbl2big,
10491 scm_big2dbl), numbers.h (SCM_FIXNUM_BIT), procs.h
10492 (scm_subr_entry, SCM_SUBR_DOC), procs.[ch] (scm_make_subr_opt,
10493 scm_make_subr, scm_make_subr_with_generic), root.c (setjmp_type,
10494 setjmp_type), root.[ch] (scm_call_catching_errors), smob.[ch]
10495 (scm_make_smob_type_mfpe, scm_set_smob_mfpe), strports.[ch]
10496 (scm_strprint_obj, scm_read_0str, scm_eval_0str), symbols.h
10497 (SCM_CHARS, SCM_UCHARS, SCM_SETCHARS, SCM_SLOPPY_SUBSTRP,
10498 SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_LENGTH_MAX, SCM_LENGTH,
10499 SCM_SETLENGTH, SCM_ROSTRINGP, SCM_ROLENGTH, SCM_ROCHARS,
10500 SCM_ROUCHARS, SCM_SUBSTRP, SCM_COERCE_SUBSTR, scm_strhash,
10501 scm_sym2vcell, scm_sym2ovcell_soft, scm_sym2ovcell,
10502 scm_intern_obarray_soft, scm_intern_obarray, scm_intern,
10503 scm_intern0, scm_sysintern, scm_sysintern0,
10504 scm_sysintern0_no_module_lookup, scm_symbol_value0,
10505 scm_string_to_obarray_symbol, scm_intern_symbol,
10506 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
10507 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp,
10508 scm_init_symbols_deprecated), vectors.c (s_vector_set_length_x),
10509 vectors.[ch] (scm_vector_set_length_x): Removed.
10510
10511 * fluids.h (FLUIDSH, SCM_FLUIDS_H), gsubr.c (GSUBRH, SCM_GSUBR_H),
10512 list.h (LISTH, SCM_LIST_H), load.h (LOADH, SCM_LOAD_H), root.h
10513 (ROOTH, SCM_ROOT_H), strports.h (STRPORTSH, SCM_STRPORTS_H):
10514 Renamed the macros that are defined to inhibit double inclusion of
10515 the same headers to the SCM_<filename>_H format.
10516
10517 * procs.h (SCM_CLOSUREP, SCM_PROCEDURE_WITH_SETTER_P), symbols.h
10518 (SCM_SYMBOLP), vectors.h (SCM_VECTORP): Prefer !SCM_<foo> over
10519 SCM_N<foo>.
10520
b29058ff
DH
105212001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10522
10523 * continuations.h (scm_contregs), debug.h (scm_debug_info,
10524 scm_debug_frame, SCM_DSIDEVAL), filesys.h (SCM_OPDIRP), fports.h
10525 (scm_fport), options.h (scm_option), snarf.h (SCM_CONST_LONG,
10526 SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
10527 SCM_GLOBAL_VCELL_INIT), srcprop.h (scm_srcprops,
10528 scm_srcprops_chunk), stacks.h (scm_info_frame, scm_stack), unif.h
10529 (scm_array, scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_HUGE_LENGTH),
10530 validate.h (SCM_FUNC_NAME, SCM_WTA, RETURN_SCM_WTA,
10531 SCM_VALIDATE_NUMBER_COPY, SCM_VALIDATE_NUMBER_DEF_COPY,
10532 SCM_VALIDATE_STRINGORSUBSTR, SCM_VALIDATE_ROSTRING,
10533 SCM_VALIDATE_ROSTRING_COPY, SCM_VALIDATE_NULLORROSTRING_COPY,
10534 SCM_VALIDATE_RWSTRING, SCM_VALIDATE_OPDIR): Removed.
10535
10536 * continuations.h (CONTINUATIONSH, SCM_CONTINUATIONS_H), filesys.h
10537 (FILESYSH, SCM_FILESYS_H), fports.h (FPORTSH, SCM_FPORTS_H),
10538 options.h (OPTIONSH, SCM_OPTIONS_H), regex-posix.h (REGEXPOSIXH,
10539 SCM_REGEX_POSIX_H), snarf.h (LIBGUILE_SNARF_H, SCM_SNARF_H),
10540 srcprop.h (SCM_SOURCE_PROPERTIES_H, SCM_SRCPROP_H), unif.h
10541 (SCM_UNIFORM_VECTORS_H, SCM_UNIF_H), validate.h (SCM_VALIDATE_H__,
10542 SCM_VALIDATE_H): Renamed the macros that are defined to inhibit
10543 double inclusion of the same headers to the SCM_<filename>_H
10544 format.
10545
10546 * debug.h (SCM_RESET_DEBUG_MODE), regex-posix.h (SCM_RGXP),
10547 srcprop.h (SRCBRKP, PROCTRACEP), struct.h (SCM_STRUCTP),
10548 validate.h (SCM_VALIDATE_THUNK, SCM_VALIDATE_ARRAY,
10549 SCM_VALIDATE_VECTOR_OR_DVECTOR, SCM_VALIDATE_VTABLE): Prefer
10550 !SCM_<foo> over SCM_N<foo>.
10551
0527e687
DH
105522001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10553
10554 * _scm.h (_SCMH, SCM__SCM_H), alist.h (ALISTH, SCM_ALIST_H),
10555 arbiters.h (ARBITERSH, SCM_ARBITERS_H), backtrace.h (BACKTRACEH,
10556 SCM_BACKTRACE_H), boolean.h (BOOLEANH, SCM_BOOLEAN_H), chars.h
10557 (SCM_CHARSH, SCM_CHARS_H), coop-defs.h (COOP_DEFSH,
10558 SCM_COOP_DEFS_H), coop-threads.h (COOP_THREADSH,
10559 SCM_COOP_THREADS_H), debug-malloc.h (DEBUGMALLOCH,
10560 SCM_DEBUG_MALLOC_H), dynwind.h (DYNWINDH, SCM_DYNWIND_H),
10561 environments.h (ENVIRONMENTS_H, SCM_ENVIRONMENTS_H), eq.h (EQH,
10562 SCM_EQ_H), evalext.h (EVALEXTH, SCM_EVALEXT_H), extensions.h
10563 (LIBGUILE_EXTENSIONS_H, SCM_EXTENSIONS_H), feature.h (FEATUREH,
10564 SCM_FEATURE_H), gdbint.h (GDBINTH, SCM_GDBINT_H), guardians.h
10565 (SCM_GUARDIANH, SCM_GUARDIANS_H), hash.h (HASHH, SCM_HASH_H),
10566 hashtab.h (HASHTABH, SCM_HASHTAB_H), init.h (INITH, SCM_INIT_H),
10567 ioext.h (IOEXTH, SCM_IOEXT_H), iselect.h (ISELECTH,
10568 SCM_ISELECT_H), keywords.h (KEYWORDSH, SCM_KEYWORDS_H), lang.h
10569 (LANGH, SCM_LANG_H), mallocs.h (MALLOCSH, SCM_MALLOCS_H), net_db.h
10570 (SCM_NETDBH, SCM_NET_DB_H), objprop.h (OBJPROPH, SCM_OBJPROP_H),
10571 posix.h (POSIXH, SCM_POSIX_H), procprop.h (PROCPROPH,
10572 SCM_PROCPROP_H), properties.h (PROPERTIES_H, SCM_PROPERTIES_H),
10573 ramap.h (RAMAPH, SCM_RAMAP_H), rdelim.h (SCM_RDELIM,
10574 SCM_RDELIM_H), read.h (READH, SCM_READ_H), rw.h (SCM_RW,
10575 SCM_RW_H), scmsigs.h (SCMSIGSH, SCM_SCMSIGS_H), script.h (SCRIPTH,
10576 SCM_SCRIPT_H), simpos.h (SIMPOSH, SCM_SIMPOS_H), socket.h
10577 (SCM_SOCKETH, SCM_SOCKET_H), sort.h (SORTH, SCM_SORT_H),
10578 stackchk.h (STACKCHKH, SCM_STACKCHK_H), stime.h (STIMEH,
10579 SCM_STIME_H), strop.h (STROPH, SCM_STROP_H), strorder.h
10580 (STRORDERH, SCM_STRORDER_H), threads.h (THREADSH, SCM_THREADS_H),
10581 throw.h (THROWH, SCM_THROW_H), version.h (VERSIONH,
10582 SCM_VERSION_H), vports.h (VPORTSH, SCM_VPORTS_H): Renamed
10583 the macros that are defined to inhibit double inclusion of the
10584 same headers to the SCM_<filename>_H format.
10585
fada26b2
MV
105862001-08-27 Marius Vollmer <mvo@zagadka.ping.de>
10587
10588 * ports.c, ports.h, fprots.c, gc.c, ioext.c: Replaced
10589 "scm_t_portable" with "scm_port_table" which was an artifact from
10590 the great "scm_*_t -> scm_t_" renaming.
10591
e4d1c1ea
TTN
105922001-08-25 Thien-Thi Nguyen <ttn@revel.glug.org>
10593
10594 * gc_os_dep.c (GC_noop1): Move before `GC_find_limit' where it is
10595 used; nfc. Thanks to Bill Schottstaedt.
10596
10597 * validate.h (SCM_VALIDATE_USHORT_COPY, SCM_VALIDATE_SHORT_COPY,
10598 SCM_VALIDATE_UINT_COPY, SCM_VALIDATE_INT_COPY): New macros.
10599 Thanks to Chris Cramer.
10600
b573e744
MV
106012001-08-25 Marius Vollmer <mvo@zagadka.ping.de>
10602
10603 * Makefile.am (AUTOMAKE_OPTIONS): Change "foreign" to "gnu".
10604
10605 * eval.c (scm_m_atbind): Redesigned to behvae like `let', but with
10606 dynamic scope.
10607 * dynwind.h (scm_swap_bindings): Declare.
10608 * dynwind.c (scm_swap_bindings): Make non-static.
10609
8a3e715b
ML
106102001-08-25 Michael Livshin <mlivshin@bigfoot.com>
10611
10612 * gc.c (scm_gc_sweep): now can sweep unreachable variables (by
10613 doing exactly nothing about them). thanks Neil!
10614
cf504ee0
NJ
106152001-08-18 Neil Jerram <neil@ossau.uklinux.net>
10616
10617 * __scm.h (SCM_ENABLE_VCELLS): Fix spelling mistake in comment.
ec2667f0 10618
43b83b54
TTN
106192001-08-17 Thien-Thi Nguyen <ttn@revel.glug.org>
10620
10621 * gc.c: Fix omission bug: Add `heap_segment' forward decl
10622 (proto) in the case when either `GUILE_DEBUG' or
10623 `GUILE_DEBUG_FREELIST' preprocessor symbols are defined.
10624
10625 (map_free_list): Fix typo: Ref `f' correctly.
10626
10627 Thanks to Chris Cramer.
10628
ab4cd34b
RB
106292001-08-15 Rob Browning <rlb@defaultvalue.org>
10630
10631 * Makefile.am (libguile_la_LDFLAGS): use libtool interface version
10632 variables.
10633 (libpath.h): change libguileversion to libguileinterface.
10634
b754e3d1
MV
106352001-08-07 Marius Vollmer <mvo@zagadka.ping.de>
10636
10637 * Makefile.am (EXTRA_DIST): Distribute ChangeLog-1996-1999 and
10638 ChangeLog-2000. Thanks to Daniel Skarda!
10639
8b1d12c7
ML
106402001-08-07 Michael Livshin <mlivshin@bigfoot.com>
10641
10642 * guile-snarf-docs-texi.in: don't call the tokenizer here, we now
10643 do it from the Makefile.
10644
10645 * Makefile.am: rearrange the snarfing slightly, so that .doc files
10646 are of a reasonable size.
10647
baffb19f
NJ
106482001-08-02 Neil Jerram <neil@ossau.uklinux.net>
10649
10650 * stacks.c (scm_make_stack): Improve docstring by explaining use
10651 of cutting args.
10652
c1151355
MV
106532001-08-01 Marius Vollmer <mvo@zagadka.ping.de>
10654
10655 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
10656 scm_char_whitespace_p, scm_char_upper_case_p,
10657 scm_char_lower_case_p, scm_char_is_both_p): Do not require
10658 characters to fulfill isascii in addition to the primary
10659 predicate.
10660
3c9a524f
DH
106612001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10662
10663 * numbers.c (DIGITS, scm_small_istr2int, scm_istr2int,
10664 scm_istr2flo, scm_istring2number): Removed.
10665
10666 (iflo2str, scm_real_p, scm_integer_p): Use SCM_<foo> instead of
10667 SCM_SLOPPY_<foo>.
10668
10669 (t_exactness, t_radix, DIGIT2UINT, XDIGIT2UINT, mem2uinteger,
10670 mem2decimal_from_point, mem2ureal, mem2complex, scm_i_mem2number):
10671 Added.
10672
10673 (scm_string_to_number): Use new number parser.
10674
10675 (scm_exact_to_inexact): Replace dummy by a GPROC, which also
10676 handles complex numbers.
10677
10678 * numbers.h (NUMBERSH, SCM_NUMBERS_H): Rename <foo>H to
10679 SCM_<foo>_H.
10680
10681 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Prefer !SCM_<pred> over
10682 SCM_N<pred>.
10683
10684 (scm_istr2int, scm_istr2flo, scm_istring2number): Removed.
10685
10686 (scm_i_mem2number): Added.
10687
10688 (scm_exact_to_inexact): Changed signature.
10689
10690 * read.c (scm_lreadr): Perform the shortcut test for '+ and '-
10691 here instead of within scm_i_mem2number. Call scm_i_mem2number
10692 instead of scm_istr2int and scm_istring2number.
10693
01f11e02
DH
106942001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10695
10696 * eval.c (scm_lookupcar, scm_m_body, scm_m_lambda, unmemocopy,
10697 scm_unmemocopy, scm_badargsp, scm_eval_body, CHECK_EQVISH,
10698 SCM_CEVAL, scm_nconc2last, SCM_APPLY, scm_copy_tree): Prefer
10699 !SCM_<pred> over SCM_N<pred>.
10700
10701 (scm_eval_body): Remove side effecting code from macro call.
10702
10703 (SCM_CEVAL, SCM_APPLY): Remove goto statement and redundant
10704 SCM_NIMP test.
10705
6cf69537
DH
107062001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10707
10708 * pairs.h (SCM_VALIDATE_PAIR): Use SCM_CONSP, not SCM_ECONSP.
10709
54866b6c
MV
107102001-07-29 Marius Vollmer <mvo@zagadka.ping.de>
10711
10712 Removed vcell slot from structs.
43b83b54 10713
54866b6c
MV
10714 * struct.h (scm_vtable_index_vcell): Removed. Renumbered
10715 subsequent indices.
10716
10717 * struct.c (scm_struct_vtable_p): Do not check vcell slot for
10718 zero. Use scm_vtable_index_layout instead of "0" when accessing
10719 said slot.
10720 (scm_init_struct): Remove vcell slot layout code from
10721 required_vtable_fields.
10722
10723 * objects.h (scm_si_redefined, scm_si_hashsets): Renumbered.
10724
10725 * goops.c (build_class_class_slots): Removed vcell slot
10726 definition.
10727
10728 * goops.h: Renumbered slot indices. (SCM_CLASS_CLASS_LAYOUT):
10729 Removed vcell slot layout code.
10730 (scm_si_vcell): Removed.
10731
5b54c4da
MV
107322001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
10733
a0f5718e 10734 "Glocs" have been removed.
43b83b54 10735
a0f5718e
MV
10736 * tags.h: Update tag system docs.
10737 (scm_tc3_cons_gloc): Renamed to scm_tc3_struct. Changed all uses.
10738 (scm_tcs_cons_gloc): Renamed to scm_tcs_struct. Changed all uses.
10739 (SCM_ECONSP, SCM_NECONSP): Removed. Changed all uses to SCM_CONSP
10740 or SCM_NCONSP, respectively.
10741
10742 * struct.c, struct.h, srcprop.c, procs.c, procprop.c, print.c,
10743 objects.c. modules.c, goops.c, eval.c, debug.c: Changed all uses
10744 of scm_tc3_cond_gloc and scm_tcs_cons_gloc. See above.
10745
10746 * print.c (scm_iprin1): Remove printing of glocs. Do not try to
10747 tell glocs from structs.
43b83b54 10748
a0f5718e
MV
10749 * gc.c (scm_gc_mark, scm_gc_sweep): Remove handling of glocs.
10750
10751 * eval.c (scm_m_atbind): Make a list of variables, not glocs.
10752 (scm_ceval, scm_deval): For SCM_IM_BIND, fiddle with variables
10753 instead of with glocs.
10754 (EVALCAR): Do not test for glocs.
10755 (scm_lookupcar, scm_lookupcar1): Do not handle glocs in race
10756 condition.
10757 (scm_unmemocar): Do not handle glocs.
10758 (scm_m_atfop): Memoize as a variable, not as a gloc.
10759 (scm_eval_args, scm_deval_args): Do not handle glocs.
10760 (scm_ceval, scm_deval): Likewise.
43b83b54 10761
a0f5718e
MV
10762 * eval.h (SCM_XEVALCAR): Do not test for glocs.
10763 (SCM_GLOC_VAR, SCM_GLOC_VAL, SCM_GLOC_SET_VAL, SCM_GLOC_VAL_LOC):
10764 Removed.
10765
10766 * debug.h, debug.c (scm_make_gloc, scm_gloc_p): Removed.
10767
10768 * dynwind.c (scm_swap_bindings): Likewise.
10769 (scm_dowinds): Updated to recognize lists of variables instead of
10770 lists of glocs.
10771
10772 * __scm.h (SCM_CAUTIOS, SCM_RECKLESS): Update comments.
10773
43b83b54 10774
5b54c4da
MV
10775 * gc_os_dep.c (GC_noop1): Moved into the same #if/#endif context
10776 where it is needed.
43b83b54 10777
3c3db128
GH
107782001-07-25 Gary Houston <ghouston@arglist.com>
10779
10780 * numbers.c (scm_logand, scm_logior, scm_logxor): adjusted the
10781 docstrings to reflect the n-ary implementation.
10782
dd29a169
MV
107832001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
10784
10785 * eval.c (scm_ceval, scm_deval): Use "RETURN" macro when returning
10786 value of a variable, not the plain "return" statement.
10787
f5fe6c2f
MV
107882001-07-25 Marius Vollmer <mvo@zagadka.ping.de>
10789
10790 * eval.c: Allow variables in memoized code (in addition to glocs).
10791 (scm_lookupcar): Handle variables in lost races. Replace symbol
10792 with variable directly, do not make a gloc.
10793 (scm_unmemocar): Rewrite variables using a reverse lookup, just
10794 like glocs.
10795 (scm_ceval, scm_deval): Deal with variables in SCM_IM_SET and in
10796 the main switch.
10797
ee0c7345
MV
107982001-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
10799
6d9ad98a
MV
10800 * variable.c (scm_i_variable_print): Use "value" instead of
10801 "binding" since a binding is the mapping between symbols and
10802 variables, not between variables and their values.
10803
ee0c7345
MV
10804 * tags.h (scm_tc7_variable): New.
10805 * gc.c (scm_gc_mark): Handle scm_tc7_variable objects.
10806 * print.c (scm_iprin1): Likewise.
10807
10808 * variable.h (scm_tc16_variable): Removed.
10809 (SCM_VARIABLEP): Test for new tc7 code.
10810 (scm_i_variable_print): New.
10811 * variable.c (scm_tc16_variable): Removed.
10812 (variable_print): Renamed to scm_i_variable_print and made
10813 non-static.
10814 (variable_equal_p): Removed.
10815 (make_variable): Construct a tc7 object instead of a smob.
10816 (scm_init_variable): Do not register smob.
43b83b54 10817
f3805ebb
MV
108182001-07-22 Marius Vollmer <mvo@zagadka.ping.de>
10819
10820 * tags.h: Include inttypes.h when we have it.
10821
108222001-07-13 Marius Vollmer <mvo@zagadka.ping.de>
10823
10824 * tags.h (SCM_UNBOUND): Make it the 34th isym/iflag, the 33th slot
10825 is taken by the new SCM_IM_CALL_WITH_VALUES.
10826 * print.c (scm_isymnames): Update table accordingly.
43b83b54 10827
6a1677a3
GH
108282001-07-22 Gary Houston <ghouston@arglist.com>
10829
10830 * regex-posix.c (s_scm_regexp_exec): use scm_long2num not
10831 SCM_MAKINUM to convert regoff_t value to SCM.
10832
1bed8c28
GH
108332001-07-21 Gary Houston <ghouston@arglist.com>
10834
10835 * scmsigs.c: include sys/time.h for itimer stuff.
10836
e658215a
RB
108372001-07-19 Rob Browning <rlb@defaultvalue.org>
10838
10839 * gc_os_dep.c (GC_noop1): ifdef out (unused) to quiet warning.
10840
10841 * c-tokenize.lex: add option %nounput to quiet warning.
10842 Add prototype for yylex to quiet warning.
10843
10844 * scmconfig.h.in: add flags for setitimer and getitimer.
10845
10846 * scmsigs.h (scm_init_scmsigs): new prototype.
10847 (scm_init_scmsigs): new prototype.
10848
10849 * scmsigs.c (s_scm_setitimer): new function.
10850 (s_scm_setitimer): new function.
10851
58ade102
MG
108522001-07-18 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10853
10854 * alist.c, arbiters.c, async.h, backtrace.h, boolean.c, chars.c,
10855 chars.h, continuations.h, debug-malloc.h, dynl.c, feature.c,
10856 feature.h, filesys.h, fluids.h, fports.h, gc_os_dep.c,
10857 gdb_interface.h, gh_eval.c, gh_funcs.c, gh_io.c, gh_list.c,
10858 gh_predicates.c, gsubr.c, gsubr.h, guardians.h,
10859 guile-func-name-check.in, guile-snarf-docs-texi.in,
10860 guile-snarf-docs.in, guile-snarf.awk.in, guile-snarf.in,
10861 hashtab.h, iselect.h, keywords.h, lang.c, list.h, load.h,
10862 objprop.c, objprop.h, options.c, options.h, random.h,
10863 regex-posix.h, root.c, root.h, script.c, snarf.h, stackchk.c,
10864 strerror.c, strop.h, strports.h, threads.h, values.c, values.h,
10865 version.c, version.h: Updated copyright notice.
10866
6b80d352
DH
108672001-07-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
10868
10869 * goops.c (sym_layout, sym_vcell, sym_vtable, sym_print,
10870 sym_procedure, sym_setter, sym_redefined, sym_h0, sym_h1, sym_h2,
10871 sym_h3, sym_h4, sym_h5, sym_h6, sym_h7, sym_name,
10872 sym_direct_supers, sym_direct_slots, sym_direct_subclasses,
10873 sym_direct_methods, sym_cpl, sym_default_slot_definition_class,
10874 sym_slots, sym_getters_n_setters, sym_keyword_access, sym_nfields,
10875 sym_environment, scm_sym_change_class): New static variables to
10876 hold predefined symbols.
10877
10878 (build_class_class_slots): Build the list using scm_list_n
10879 instead of cons. Also, slots are already created as lists, thus
10880 making a call to maplist unnecessary.
10881
10882 (scm_class_name, scm_class_direct_supers, scm_class_direct_slots,
10883 scm_class_direct_subclasses, scm_class_direct_methods,
10884 scm_class_precedence_list, scm_class_slots, scm_class_environment,
10885 scm_method_procedure, create_standard_classes, purgatory): Use
10886 predefined symbols.
10887
10888 (build_slots_list, compute_getters_n_setters,
10889 scm_sys_initialize_object, scm_sys_inherit_magic_x,
10890 get_slot_value_using_name, set_slot_value_using_name,
10891 scm_sys_invalidate_method_cache_x, scm_generic_capability_p,
10892 scm_compute_applicable_methods, scm_sys_method_more_specific_p,
10893 make_struct_class): Prefer !SCM_<pred> over SCM_N<pred>.
10894
10895 (scm_sys_prep_layout_x): Minimize variable scopes.
10896
10897 (scm_sys_prep_layout_x, scm_sys_fast_slot_ref,
10898 scm_sys_fast_slot_set_x): Fix signedness.
10899
10900 (go_to_hell, go_to_heaven, purgatory, scm_change_object_class,
10901 lock_cache_mutex, unlock_cache_mutex, call_memoize_method,
10902 scm_memoize_method, scm_wrap_object): Use packing and unpacking
10903 when converting to and from SCM values.
10904
10905 (scm_enable_primitive_generic_x): Add rest argument checking.
10906
10907 (map, filter_cpl, maplist, scm_sys_initialize_object,
10908 scm_sys_prep_layout_x, slot_definition_using_name,
10909 scm_enable_primitive_generic_x, scm_compute_applicable_methods,
10910 call_memoize_method, scm_make, scm_make_class): Prefer explicit
10911 predicates over SCM_N?IMP tests.
10912
10913 (scm_sys_prep_layout_x): Fix typo in error message. Fix type
10914 checking.
10915
10916 (burnin, go_to_hell): Use SCM_STRUCT_DATA instead of the SCM_INST
10917 alias.
10918
63bcad19
DH
109192001-07-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
10920
10921 * fports.c (fport_print): Don't use SCM_C[AD]R for non pairs.
10922
10923 * num2integral.i.c (INTEGRAL2NUM, INTEGRAL2BIG): Fix signedness.
10924
10925 * symbols-deprecated.c (scm_gentemp): Simplify vector test.
10926
10927 * vectors.c (scm_vector_p): Eliminate redundant IMP test.
10928
4d6aae71
ML
109292001-07-12 Michael Livshin <mlivshin@bigfoot.com>
10930
10931 * strings.c (s_scm_string): fix arg position in assert.
10932
4b8ec619
GH
109332001-07-11 Gary Houston <ghouston@arglist.com>
10934
10935 * strports.c (st_write): use memcpy, not strncpy. thanks to
10936 Dale P. Smith.
10937
dbb640bd
TTN
109382001-07-09 Thien-Thi Nguyen <ttn@revel.glug.org>
10939
10940 * alist.c, alloca.c, arbiters.c, async.c, async.h, backtrace.c,
10941 boolean.c, chars.c, continuations.c, coop-defs.h, coop-threads.c,
10942 debug-malloc.h, debug.c, debug.h, dynl.c, dynwind.c, eq.c,
10943 error.c, eval.c, evalext.c, feature.c, feature.h, filesys.c,
10944 filesys.h, fluids.c, fluids.h, fports.c, fports.h, gc.c, gc.h,
10945 gdbint.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
10946 hooks.h, inet_aton.c, init.c, ioext.c, keywords.c, keywords.h,
10947 lang.c, list.c, load.c, macros.c, mallocs.c, memmove.c, modules.c,
10948 net_db.c, numbers.c, numbers.h, objects.c, objprop.c, options.c,
10949 pairs.c, pairs.h, ports.c, ports.h, posix.c, print.c, print.h,
10950 procprop.c, procs.c, procs.h, properties.c, putenv.c, ramap.c,
10951 random.c, random.h, read.c, regex-posix.c, regex-posix.h, root.c,
10952 root.h, scmsigs.c, script.c, simpos.c, smob.c, snarf.h, socket.c,
10953 sort.c, srcprop.c, srcprop.h, stackchk.c, stacks.c, stacks.h,
10954 stime.c, strerror.c, strings.c, strings.h, strop.c, strorder.c,
10955 strports.c, struct.c, struct.h, symbols-deprecated.c, symbols.c,
10956 symbols.h, tags.h, threads.c, threads.h, throw.c, unif.c, unif.h,
10957 variable.c, variable.h, vectors.c, vectors.h, version.c, vports.c,
10958 weaks.c, weaks.h: Remove "face-lift" comment.
10959
fd6c6321
RB
109602001-07-08 Rob Browning <rlb@defaultvalue.org>
10961
10962 * .cvsignore: add stamp-h.in.
10963
f91e4547
MG
109642001-07-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10965
10966 * hooks.c (scm_make_hook, scm_add_hook_x),
10967 (scm_remove_hook_x, scm_reset_hook_x, scm_run_hook): Added return
10968 value info to the docstrings.
10969
7beabedb
MG
109702001-07-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10971
10972 Some more compatibility patches for Windows.
dbb640bd 10973
7beabedb
MG
10974 * posix.c (getlogin): getlogin() implementation for Windows.
10975
10976 * backtrace.c, ioext.c: Include <stdio.h>.
10977
10978 * unif.c, script.c, rw.c, error.c: Include <io.h>, if it does
10979 exist.
10980
10981 * cpp_sig_symbols.in: Added SIGBREAK.
10982
0d0560d0
MV
109832001-07-01 Marius Vollmer <mvo@zagadka.ping.de>
10984
10985 * strports.c (scm_read_0str, scm_eval_0str): Call
10986 scm_c_read_string and scm_c_eval_string respectively, not
10987 themselves. Thanks to Dale P. Smith!
10988
9a97e362
DH
109892001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10990
10991 * unif.c (scm_array_set_x): The variable args does not
10992 necessarily have to be a list. Further, got rid of a redundant
10993 SCM_NIMP test.
10994
592996c9
DH
109952001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10996
10997 * list.c (SCM_I_CONS): Make sure the cell type is initialized
10998 last.
10999
11000 * gc.c (s_scm_map_free_list, scm_igc, scm_gc_sweep,
f91e4547 11001 init_heap_seg): Fixed signedness.
592996c9
DH
11002
11003 (init_heap_seg): Replaced strange for-loop with a while loop.
11004
11005 * weaks.h (WEAKSH, SCM_WEAKS_H): Rename <foo>H to SCM_<foo>_H.
11006
11007 (SCM_WVECTP): Prefer !SCM_<pred> over SCM_N<pred>.
11008
11009 The following patch adds conservative marking for the elements of
11010 free or allocated cells.
11011
11012 * gc.c (allocated_mark, heap_segment): New static functions.
11013
11014 (which_seg): Deleted, since the functionality is now provided by
11015 function heap_segment.
11016
11017 (map_free_list): Use heap_segment instead of which_seg.
11018
11019 (MARK): If cell debugging is disabled, mark free cells
11020 conservatively.
11021
11022 (scm_mark_locations, scm_cellp): Extracted the search for the
11023 heap segment of a SCM value into function heap_segment.
11024
11025 (scm_init_storage): Allocated cells must be marked
11026 conservatively.
11027
11028 * gc.[ch] (scm_gc_mark_cell_conservatively): New function.
11029
11030 The following patch changes the representation of weak vectors to
11031 double cells instead of using an extension of the vector's
11032 allocated memory.
11033
11034 * gc.c (MARK): Use SCM_SET_WVECT_GC_CHAIN instead of assigning to
11035 the result of SCM_WVECT_GC_CHAIN.
11036
11037 (scm_gc_sweep): Weak vectors don't have extra fields any more.
11038
11039 * weaks.c (allocate_weak_vector): New static function. It does
11040 not patch any previously created vector object during the
11041 construction of a weak vector, and thus doesn't need to switch
11042 off interrupts during vector creation.
11043
11044 (scm_make_weak_vector, scm_make_weak_key_hash_table,
11045 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
11046 Use allocate_weak_vector to provide the new weak vector object.
11047
11048 * weaks.h (SCM_WVECT_TYPE, SCM_SET_WVECT_TYPE,
11049 SCM_SET_WVECT_GC_CHAIN): New macros. The weak vector subtype is
11050 now stored in the double cell.
11051
11052 (SCM_IS_WHVEC, SCM_IS_WHVEC_V, SCM_IS_WHVEC_B, SCM_IS_WHVEC_ANY):
11053 Use SCM_WVECT_TYPE.
11054
11055 (SCM_WVECT_GC_CHAIN): The weak objects are now chained together
11056 using an entry of the double cell.
11057
4dadf664
TTN
110582001-06-30 Thien-Thi Nguyen <ttn@revel.glug.org>
11059
11060 * stamp-h.in: bye bye
11061
02202352
MV
110622001-06-30 Marius Vollmer <mvo@zagadka.ping.de>
11063
11064 * gh_eval.c (gh_eval_str): Use scm_c_eval_string instead of
11065 scm_eval_0str.
11066
11067 * load.c, load.h (scm_c_primitive_load,
11068 scm_c_primitive_load_path): New.
11069
11070 * strports.c, strports.h (scm_c_read_string): Renamed from
11071 scm_read_0str. Also, added "const" qualifier to argument.
11072 (scm_c_eval_string): Renamed from scm_eval_0str.
11073 (scm_read_0str, scm_eval_0str): Deprecated.
11074
df1ad0d1
MG
110752001-06-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11076
11077 * fluids.c (scm_c_with_fluid): Use scm_list_1() instead of
11078 SCM_LIST1.
11079
1afff620
KN
110802001-06-28 Keisuke Nishida <kxn30@po.cwru.edu>
11081
11082 * list.h (scm_list_1, scm_list_2, scm_list_3, scm_list_4, scm_list_5,
11083 scm_list_n): New functions.
11084 (SCM_LIST0, SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5,
11085 SCM_LIST6, SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify): Deprecated.
11086 (lots of files): Use the new functions.
4dadf664 11087
1afff620
KN
11088 * goops.c (CALL_GF1, CALL_GF2, CALL_GF3, CALL_GF4): Use scm_call_N.
11089
11090 * strings.c: #include "libguile/deprecation.h".
11091
b858464a
MG
110922001-06-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11093
11094 * read.c (scm_lreadr): When reading a hash token, check for a
11095 user-defined hash procedure first, so that overriding the builtin
11096 hash characters is possible (this was needed for implementing
11097 SRFI-4's read synax `f32(...)').
4dadf664 11098
b858464a
MG
11099 * num2integral.i.c: Use scm_t_signed_bits instead of scm_t_bits,
11100 because the latter is unsigned now and breaks comparisons like
11101 (n < (scm_t_signed_bits)MIN_VALUE).
4dadf664 11102
d95c0b76
NJ
111032001-06-26 Neil Jerram <neil@ossau.uklinux.net>
11104
11105 * eval.h, eval.c (scm_call_4): New function.
11106
11107 * eval.c (SCM_APPLY, SCM_CEVAL, ENTER_APPLY): Call trap handlers
11108 directly rather than dispatching to them via scm_ithrow and a lazy
11109 catch.
4dadf664 11110
d95c0b76
NJ
11111 * eval.c (scm_evaluator_trap_table), eval.h (SCM_ENTER_FRAME_HDLR,
11112 SCM_APPLY_FRAME_HDLR, SCM_EXIT_FRAME_HDLR): Add three new options
11113 for trap handler procedures.
11114
11115 * debug.h (SCM_RESET_DEBUG_MODE): Add checks for trap handler
11116 procedures not being #f.
11117
30e3be5a
ML
111182001-06-27 Michael Livshin <mlivshin@bigfoot.com>
11119
11120 * Makefile.am (c-tokenize.c): add rule to generate it.
11121 (EXTRA_DIST): add c-tokenize.lex, so it gets distributed.
11122
11123 filter-doc-snarfage.c: remove.
11124
82893676
MG
111252001-06-26 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11126
11127 * ports.c (scm_output_port_p): Use result of SCM_COERCE_OUTPORT.
11128
11129 The following set of changes makes compiling Guile under various
11130 Windows compilers easier. Compilation under GNU systems should
11131 not be affected at all.
11132
11133 Thanks to Stefan Jahn for all necessary information, patches and
11134 testing.
4dadf664 11135
82893676
MG
11136 * posix.c: Conditialize getpwent, getgrent, kill, getppid, getuid,
11137 getpgrp, ttyname, primitive-fork and some header inclusion for
11138 Windows.
11139
11140 * random.c: Define M_PI, if not predefined and use __int64 for
11141 LONG64 under Windows.
11142
11143 * scmsigs.c: Emulate some functions (alarm, sleep, kill) under
11144 Windows and conditionalize some signal names.
11145
4dadf664 11146 * socket.c (scm_getsockopt): Added missing comma.
82893676
MG
11147 Include socket library header under Windows.
11148
11149 * stime.c (CLKTCK): Add cast to int, to make it compile under
11150 Windows.
11151
11152 * ports.c (truncate): New function, compiled only under Windows.
11153
11154 * net_db.c: Do not declare errno under Windows.
11155
11156 * iselect.h, inet_aton.c: Include socket library headers under
11157 Windows.
11158
11159 * guile.c (inner_main): Under Windows, initialize socket library
11160 and initialize gdb_interface data structures.
11161
11162 * gdb_interface.h: Under Windows, gdb_interface cannot be
11163 initialized statically. Initialize at runtime instead.
11164
11165 * fports.c (write_all): ssize_t -> size_t.
11166 (fport_print): Conditionalize call to ttyname().
11167 (getflags): New function, compiled only under Windows.
11168
11169 * filesys.c: Conditionalize inclusion of <pwd.h>. Conditionalize
11170 primitives chown, link, fcntl.
11171 (scm_basename, scm_dirname): Under Windows, handle \ as well as /
11172 as path seperator.
11173
11174 * backtrace.c: Include <io.h> under Windows.
11175
11176 * async.h (ASYNCH, SCM_ASYNC_H): Rename <foo>H to SCM_<foo>_H.
11177
11178 * _scm.h: Added preprocessor conditional for __MINGW32__ for errno
11179 declaration.
11180
fdc28395
KN
111812001-06-27 Keisuke Nishida <kxn30@po.cwru.edu>
11182
11183 * eval.c (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
11184 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): New functions.
11185 * eval.h (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
11186 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): Declared.
11187 * async.c (scm_run_asyncs), coop-threads.c (scheme_body_bootstrip,
11188 scheme_handler_bootstrip), debug.c (with_traps_inner), dynwind.c
11189 (scm_dynamic_wind, scm_dowinds), environments.c
11190 (import_environment_conflict), eval.c (scm_macroexp, scm_force,
11191 scm_primitive_eval_x, scm_primitive_eval), fluids.c (apply_thunk),
11192 goops.c (GETVAR, purgatory, make_class_from_template,
11193 scm_ensure_accessor), hashtab.c (scm_ihashx, scm_sloppy_assx,
11194 scm_delx_x, fold_proc), hooks.c (scm_c_run_hook), load.c
11195 (scm_primitive_load), modules.c (scm_resolve_module,
11196 scm_c_define_module, scm_c_use_module, scm_c_export,
11197 module_variable, scm_eval_closure_lookup, scm_sym2var,
11198 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
11199 ports.c (scm_port_for_each), print.c (scm_printer_apply),
11200 properties.c (scm_primitive_property_ref), ramap.c (ramap,
11201 ramap_cxr, rafe, scm_array_index_map_x, read.c (scm_lreadr),
11202 scmsigs.c (sys_deliver_signals), sort.c (applyless), strports.c
11203 (scm_object_to_string, scm_call_with_output_string,
11204 scm_call_with_input_string), throw.c (scm_body_thunk,
11205 scm_handle_by_proc, hbpca_body), unif.c (scm_make_shared_array,
11206 scm_make_shared_array), vports.c (sf_flush, sf_write,
11207 sf_fill_input, sf_close): Use one of the above functions.
11208 * goops.c, hashtab.c, scmsigs.c, sort.c: #include "libguile/root.h".
11209
36284627
DH
112102001-06-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
11211
11212 * filesys.c (scm_close), ports.c (scm_close_port,
11213 scm_port_closed_p), strop.c (scm_string_null_p): Use SCM_BOOL
11214 instead of SCM_NEGATE_BOOL.
11215
11216 * filesys.c (scm_stat): Clean up type dispatch.
11217
11218 * filesys.c (scm_stat), ports.c (scm_input_port_p,
11219 scm_output_port_p): Get rid of redundant IM type check.
11220
11221 * filesys.c (scm_readdir, scm_getcwd, scm_readlink), gh_data.c
11222 (gh_str2scm), load.c (scm_primitive_load, scm_internal_parse_path,
11223 scm_search_path), net_db.c (scm_gethost, scm_getnet, scm_getproto,
11224 scm_return_entry), numbers.c (scm_number_to_string), objects.c
11225 (scm_make_subclass_object), ports.c (scm_port_mode), read.c
11226 (scm_lreadr), simpos.c (scm_getenv), socket.c (scm_inet_ntoa,
11227 scm_addr_vector), stime.c (scm_strftime), strings.c
11228 (scm_makfromstrs, scm_makfrom0str, scm_substring), strings.h
11229 (SCM_STRING_COERCE_0TERMINATION_X), strop.c (string_copy,
11230 scm_string_split), strports.c (scm_strport_to_string), symbols.c
11231 (scm_symbol_to_string), vports.c (sf_write): Use scm_mem2string
11232 instead of scm_makfromstr.
11233
11234 * net_db.c (scm_sethost, scm_setnet, scm_setproto, scm_setserv),
11235 ports.c (scm_close_all_ports_except), read.c (scm_lreadr,
11236 scm_read_hash_extend), stime.c (scm_strftime), strings.c
11237 (scm_string_append, scm_string), strings.h (SCM_STRINGP,
11238 SCM_STRING_COERCE_0TERMINATION_X, SCM_RWSTRINGP), strop.c
11239 (string_capitalize_x): Prefer explicit type check over SCM_N?IMP,
11240 !SCM_<pred> over SCM_N<pred>.
11241
11242 * strings.[ch] (scm_makfromstr): Deprecated.
11243
11244 (scm_mem2string): New function, replaces scm_makfromstr.
11245
11246 * strings.c (scm_substring), strop.c (string_copy,
11247 scm_string_split), strports.c (scm_strport_to_string), symbols.c
11248 (scm_symbol_to_string): Fix gc problem.
11249
11250 * strings.h (STRINGSH, SCM_STRINGS_H): Rename <foo>H to
11251 SCM_<foo>_H.
11252
11253 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Eliminate
11254 warning about comparing signed and unsigned values. This fix is
11255 not optimal, since it won't work reliably if sizeof (c_start) >
11256 sizeof (size_t) or sizeof (c_end) > sizeof (size_t). A better
11257 solution is to define this macro as an inline function, thus
11258 allowing to specifiy the types of c_start and c_end.
11259
13dcb666
DH
112602001-06-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
11261
11262 * debug.h (SCM_DEBUGOBJ_FRAME): Deliver result as a
11263 scm_t_debug_frame*.
11264
11265 * debug.h (DEBUGH, SCM_DEBUG_H), stacks.h (STACKSH, SCM_STACKSH):
11266 Rename <foo>H to SCM_<foo>_H.
11267
11268 * stacks.c (NEXT_FRAME, narrow_stack): Prefer explicit type check
11269 over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
11270
11271 (narrow_stack): Make i unsigned. Don't use side-effecting
11272 operations in conditions.
11273
11274 (narrow_stack, scm_make_stack, scm_stack_id,
11275 scm_last_stack_frame): Get rid of redundant SCM_N?IMP checks.
11276
11277 (scm_make_stack, scm_stack_id, scm_last_stack_frame): Clean up
11278 type dispatch. No need to cast result of SCM_DEBUGOBJ_FRAME any
11279 more.
11280
11281 (scm_stack_ref, scm_frame_previous, scm_frame_next): Fix
11282 signedness.
11283
ea2c3968 11284 (scm_last_stack_frame): Remove bogus `;'.
13dcb666
DH
11285
11286 * stacks.h (SCM_FRAMEP): Fix type check.
11287
ac13d9d2
ML
112882001-06-25 Michael Livshin <mlivshin@bigfoot.com>
11289
ee0c0e03
ML
11290 * Makefile.am (MAINTAINERCLEANFILES): be sure to remove
11291 c-tokenize.c when doing maintainer-clean.
11292
ac13d9d2
ML
11293 * snarf.h (SCM_SNARF_DOCS): change the "grammar" slightly.
11294
11295 * guile-snarf-docs.in, guile-snarf-docs-texi.in: rewrite &
11296 simplify.
11297
11298 * eval.c: all hash signs are in column 0.
11299
11300 * Makefile.am (guile_filter_doc_snarfage): build using
11301 c-tokenize.c, not filter-doc-snarfage.c.
11302 rearrange snarfing dependencies a bit.
11303
11304 * c-tokenize.lex: new file.
11305
16be44e5
MV
113062001-06-25 Marius Vollmer <mvo@zagadka.ping.de>
11307
11308 * srcprop.h, srcprop.c (scm_srcprops_to_plist): Renamed from
11309 scm_t_srcpropso_plist. See the big type renaming.
11310 * coop-defs.h (scm_mutex_trylock, scm_cond_timedwait): Likewise.
11311 Thanks to Seth Alves!
4dadf664 11312
16be44e5
MV
11313 * numbers.c (SIZE_MAX, PTRDIFF_MIN, PTRDIFF_MAX): Only define when
11314 they aren't defined already.
11315
5843e5c9
DH
113162001-06-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
11317
11318 * backtrace.c (display_backtrace_body): Use SCM_VALIDATE_STACK
11319 and SCM_VALIDATE_OPOUTPORT instead of SCM_ASSERT. Fix signedness
11320 problem.
11321
11322 * backtrace.c (display_expression, scm_set_print_params_x,
11323 display_application, display_frame, scm_backtrace), numbers.c
11324 (scm_istring2number), objects.c (scm_class_of,
11325 scm_mcache_lookup_cmethod, scm_mcache_compute_cmethod): Prefer
11326 explicit type check over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
11327
11328 * fluids.c (scm_fluid_ref, scm_fluid_set_x): Fluid numbers are
11329 always positive.
11330
11331 * numbers.c (scm_i_mkbig): Remove unnecessary casts, remove
11332 unnecessary SCM_DEFER_INTS, SCM_ALLOW_INTS.
11333
11334 * objects.c (scm_class_of): Type fix.
11335
11336 (scm_mcache_lookup_cmethod): Improved comment, simplified,
11337 eliminated goto.
11338
11339 * pairs.h (scm_error_pair_access): The function can return if
11340 called recursively.
11341
6b41a313
MG
113422001-06-20 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11343
11344 * init.c (scm_init_guile_1): Removed initialization of tag.c.
11345
11346 * gdbint.c, init.c: Removed inclusion of tag.h.
11347
11348 * tag.h, tag.c: Removed files.
11349
11350 * Makefile.am: Removed tag.{h,c,doc,x} in various places.
11351
fbbdb121
GH
113522001-06-20 Gary Houston <ghouston@arglist.com>
11353
11354 * deprecation.c, extensions.c, rw.c: include string.h.
11355
72c17ed0
GH
113562001-06-19 Gary Houston <ghouston@arglist.com>
11357
11358 * filter-doc-snarfage.c (process): added ungetc in
11359 MULTILINE_COOKIE case since otherwise it fails when there's no
11360 space between the '(' and the quote of the following string
11361 (gcc 3.0).
11362
4ff9f825
MV
113632001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
11364
4927dd28
MV
11365 Throughout: replace "scm_*_t" with "scm_t_*", except "scm_lisp_t".
11366
b629af45
MV
113672001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
11368
11369 * unif.h (SCM_ARRAY_NDIM): Shift then cast so that no sign
0f002b27
MV
11370 extension takes place.
11371 * strings.h (SCM_STRING_LENGTH): Likewise.
11372 (SCM_STRING_MAX_LENGTH): Use unsigned numbers.
4dadf664 11373
4ff9f825
MV
11374 * __scm.h (ptrdiff_t): Typedef to long when configure didn't find
11375 it.
11376
11377 * tags.h: Include <stdint.h> when we have it.
11378 (scm_bits_t): Changed to be a unsigned type. Use uintptr_t when
11379 available. Else use "unsigned long".
11380 (scm_signed_bits_t): New.
11381
11382 * numbers.h (SCM_SRS): Cast shiftee to scm_signed_bits_t.
11383 (SCM_INUM): Cast result to scm_signed_bits_t.
11384
58bee6a8
TTN
113852001-06-13 Thien-Thi Nguyen <ttn@revel.glug.org>
11386
11387 * mkstemp.c: Update path to #include file scmconfig.h.
11388 Thanks to Golubev I. N.
11389
00d8d838
DH
113902001-06-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
11391
11392 * struct.h (SCM_STRUCT_VTABLE_FLAGS): New macro.
11393
ea2c3968 11394 * goops.h (SCM_NUMBER_OF_SLOTS): Removed bogus `\' at the end of
00d8d838
DH
11395 the macro definition.
11396
11397 (SCM_CLASSP, SCM_INSTANCEP, SCM_PUREGENERICP, SCM_ACCESSORP,
11398 SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Use SCM_STRUCT_VTABLE_FLAGS
11399 instead of SCM_INST_TYPE.
11400
11401 (SCM_ACCESSORP, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Make sure
11402 the object is a struct before accessing its struct flags.
11403
11404 (SCM_INST_TYPE, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Deprecated.
11405
495c67e5
GH
114062001-06-10 Gary Houston <ghouston@arglist.com>
11407
11408 * rdelim.c (scm_init_rdelim_builtins): don't try to activate the
11409 (ice-9 rdelim) module in (guile) and (guile-user). it didn't
11410 work reliably anymore. try it from boot-9.scm instead.
11411
6a9003d3
MV
114122001-06-09 Marius Vollmer <mvo@zagadka.ping.de>
11413
11414 * ports.c (scm_lfwrite): Maintain columnd and row count in port.
9a5fa6e9 11415 Thanks to Matthias Köppe!
58bee6a8 11416
47bcd646
ML
114172001-06-08 Michael Livshin <mlivshin@bigfoot.com>
11418
a88ff5b6
ML
11419 * snarf.h, filter-doc-snarfage.c: more changes to cope with
11420 space-happy C preprocessors.
11421
47bcd646 11422 * filter-doc-snarfage.c, guile-snarf.in: try to cope with spaces
9a5fa6e9 11423 inside cookies. thanks to Matthias Köppe!
47bcd646 11424
bab246f3
DH
114252001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
11426
11427 * keywords.c (keyword_print): Don't use SCM_C[AD]R to access
11428 keywords. Fix gc protection.
11429
11430 * objects.c (scm_mcache_lookup_cmethod): Don't use side effecting
11431 operations in macro calls.
11432
11433 * pairs.c (scm_error_pair_access): Avoid recursion.
11434
11435 Thanks to Matthias Koeppe for reporting the bugs that correspond
11436 to the following set of patches.
11437
11438 * unif.c (scm_bit_set_star_x, scm_bit_invert_x), vectors.h
11439 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Obtain the
11440 bitvector base address using SCM_BITVECTOR_BASE.
11441
11442 * unif.h (SCM_BITVECTOR_BASE): Return the base address as an
11443 unsigned long*.
11444
dcb410ec
DH
114452001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
11446
11447 * goops.c (SCM_CLASS_REDEF): Removed.
11448
11449 * vectors.h (VECTORSH, SCM_VECTORS_H): Renamed <foo>H to
11450 SCM_<foo>_H.
11451
11452 Thanks to Matthias Koeppe for reporting the bugs that correspond
11453 to the following set of patches.
11454
11455 * goops.c (scm_sys_prep_layout_x, scm_basic_basic_make_class,
11456 create_basic_classes, scm_sys_fast_slot_set_x, set_slot_value,
11457 scm_sys_allocate_instance, clear_method_cache,
11458 scm_sys_invalidate_method_cache_x, scm_make,
11459 create_standard_classes, scm_make_port_classes, scm_make_class,
11460 scm_add_slot): Use SCM_SET_SLOT to set slot values.
11461
11462 (prep_hashsets): Use SCM_SET_HASHSET to set class hash values.
11463
11464 * goops.h (SCM_SET_SLOT, SCM_SET_HASHSET): New macros.
11465
11466 * ramap.c (BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
11467 UNARY_ELTS_CODE): Remove bogus break statement.
11468
11469 * vectors.h (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR):
11470 Don't access bit vectors elements as SCM objects.
11471
11472 * weaks.c (scm_make_weak_vector, scm_make_weak_key_hash_table,
11473 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
11474 Don't assign to an unpacked value.
11475
e81d98ec
DH
114762001-06-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
11477
11478 * __scm.h (SCM_NORETURN): Moved here from error.h.
11479
11480 (SCM_UNUSED): New macro.
11481
11482 (SCM_DEBUG_PAIR_ACCESSES): New macro.
11483
11484 * backtrace.c (display_error_handler), continuations.c
11485 (continuation_print), debug.c (debugobj_print), dynwind.c
11486 (guards_print), environments.c (observer_print,
11487 core_environments_finalize, leaf_environment_cell,
11488 leaf_environment_print, eval_environment_print,
11489 eval_environment_observer, import_environment_define,
11490 import_environment_undefine, import_environment_print,
11491 import_environment_observer, export_environment_define,
11492 export_environment_undefine, export_environment_print,
11493 export_environment_observer), eval.c (scm_m_quote, scm_m_begin,
11494 scm_m_if, scm_m_set_x, scm_m_and, scm_m_or, scm_m_case,
11495 scm_m_cond, scm_m_lambda, scm_m_letstar, scm_m_do, scm_m_delay,
11496 scm_m_letrec1, scm_m_apply, scm_m_cont, scm_m_nil_cond,
11497 scm_m_nil_ify, scm_m_t_ify, scm_m_0_cond, scm_m_0_ify,
11498 scm_m_1_ify, scm_m_atfop, scm_m_at_call_with_values), evalext.c
11499 (scm_m_generalized_set_x), fluids.c (fluid_print), fports.c
11500 (fport_print), gc.c (gc_start_stats, scm_remember_upto_here_1,
11501 scm_remember_upto_here_2, scm_remember_upto_here, mark_gc_async),
11502 gh_init.c (gh_standard_handler), goops.c (get_slot_value,
11503 set_slot_value, test_slot_existence, scm_change_object_class,
11504 scm_m_atslot_ref, scm_m_atslot_set_x, make_struct_class,
11505 default_setter), guardians.c (guardian_print, guardian_gc_init,
11506 guardian_zombify, whine_about_self_centered_zombies), guile.c
11507 (inner_main), init.c (stream_handler), keywords.c (keyword_print),
11508 mallocs.c (malloc_print), numbers.c (scm_print_real,
11509 scm_print_complex, scm_bigprint), ports.c (flush_port_default,
11510 end_input_default, scm_port_print, fill_input_void_port,
11511 write_void_port), root.c (root_print), smob.c (scm_mark0,
11512 scm_free0, scm_smob_print, scm_smob_apply_1_error,
11513 scm_smob_apply_2_error, scm_smob_apply_3_error, free_print),
11514 stime.c (restorezone), strings.c (scm_makfromstr), struct.c
11515 (scm_struct_free_0, scm_struct_free_standard,
11516 scm_struct_free_entity, scm_struct_gc_init, scm_free_structs),
11517 throw.c (jmpbuffer_print, lazy_catch_print, ss_handler,
11518 scm_handle_by_throw, scm_ithrow), weaks.c
11519 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
11520 scm_scan_weak_vectors), ramap.c (scm_array_fill_int), filesys.c
11521 (scm_dir_print): Mark unused parameters with SCM_UNUSED.
11522
11523 * error.h (SCM_NORETURN): Moved to __scm.h.
11524
11525 * error.h (ERRORH, SCM_ERROR_H), pairs.h (PAIRSH, SCM_PAIRS_H):
11526 Renamed <foo>H to SCM_<foo>_H.
11527
11528 * gc.c (debug_cells_gc_interval): New static variable.
11529
11530 (scm_assert_cell_valid): If selected by the user, perform
11531 additional garbage collections.
11532
11533 (scm_set_debug_cell_accesses_x): Extended to let the user specify
11534 if additional garbage collections are desired.
11535
11536 (mark_gc_async): If additional garbage collections are selected
11537 by the user, don't call the after-gc-hook. Instead require the
11538 user to run the hook manually.
11539
11540 * pairs.c (scm_error_pair_access): New function. Only compiled
11541 if SCM_DEBUG_PAIR_ACCESSES is set to 1.
11542
11543 * pairs.h (SCM_VALIDATE_PAIR): New macro.
11544
11545 (SCM_CAR, SCM_CDR, SCM_SETCAR, SCM_SETCDR): If
11546 SCM_DEBUG_PAIR_ACCESSES is set to 1, make sure that the argument
11547 is a real pair object. (Glocs are also accepted, but that may
11548 change.) If not, abort with an error message.
11549
17fa3fcf
DH
115502001-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
11551
11552 * eval.c (SCM_VALIDATE_NON_EMPTY_COMBINATION): New macro.
11553
11554 (SCM_CEVAL, SCM_APPLY): Replace calls to SCM_EVALIM2 with calls
11555 to SCM_VALIDATE_NON_EMPTY_COMBINATION.
11556
feeedafb
MV
115572001-06-05 Marius Vollmer <mvo@zagadka.ping.de>
11558
11559 * extensions.c (scm_c_register_extension): Allow NULL as library
11560 name.
11561 (load_extension): Ignore NULL library names when comparing.
58bee6a8 11562
feeedafb
MV
11563 * hash.c (scm_hasher): Use SCM_UNPACK in the case labels so that
11564 non-pointers are being compared. Thanks to Alexander Klimov!
11565
4bcdfe46
GH
115662001-06-04 Gary Houston <ghouston@arglist.com>
11567
11568 * rw.c (scm_write_string_partial): new procedure implementing
11569 write-string/partial in (ice-9 rw).
11570 * rw.h: declare scm_write_string_partial.
58bee6a8 11571
f480396b
MV
115722001-06-04 Marius Vollmer <mvo@zagadka.ping.de>
11573
feeedafb
MV
11574 * keywords.c (keyword_print): Substract 1 from length of symbol
11575 name, accounting for the silly dash.
11576
11577 * dynl.c (scm_registered_modules, scm_clear_registered_modules):
11578 Do not emit deprecation warning.
11579
f480396b
MV
11580 Added exception notice to all files.
11581
11582 * dynl.c: Include "deprecation.h".
11583
c794483c
MV
115842001-06-03 Marius Vollmer <mvo@zagadka.ping.de>
11585
11586 * dynl.c (scm_register_module_xxx, scm_registered_modules,
11587 scm_clear_registered_modules): Deprecated.
11588
9454d8d5
RB
115892001-06-02 Rob Browning <rlb@cs.utexas.edu>
11590
11591 * .cvsignore: add guile_filter_doc_snarfage guile-snarf-docs
11592 guile-snarf-docs-texi.
11593
11594 * fports.c: HAVE_ST_BLKSIZE changed to
11595 HAVE_STRUCT_STAT_ST_BLKSIZE.
11596 (scm_fport_buffer_add): HAVE_ST_BLKSIZE changed to
11597 HAVE_STRUCT_STAT_ST_BLKSIZE.
11598
11599 * filesys.c (scm_stat2scm): HAVE_ST_RDEV changed to
11600 HAVE_STRUCT_STAT_ST_RDEV.
11601 (scm_stat2scm): HAVE_ST_BLKSIZE changed to
11602 HAVE_STRUCT_STAT_ST_BLKSIZE.
11603 (scm_stat2scm): HAVE_ST_BLOCKS changed to
11604 HAVE_STRUCT_STAT_ST_BLOCKS.
11605
114f9bab
MV
116062001-06-02 Marius Vollmer <mvo@zagadka.ping.de>
11607
b0c16cd9
MV
11608 * strports.c (scm_eval_string): Use scm_primitive_eval_x instead
11609 of scm_eval_x to allow module changes between the forms in the
11610 string. Set/restore module using scm_c_call_with_current_module.
11611
114f9bab
MV
11612 * mkstemp.c: New file, slightly modified from libiberties
11613 mkstemps.c.
11614
c99f9605
ML
116152001-05-31 Michael Livshin <mlivshin@bigfoot.com>
11616
11617 * guile-snarf-docs.in, guile-snarf-docs-texi.in,
11618 filter-doc-snarfage.c: new files.
11619
11620 * Makefile.am: add stuff to [build,] use and distribute
11621 guile-snarf-docs, guile-snarf-docs-texi, guile_filter_doc_snarfage.
11622
11623 * guile-snarf.in: grok the new snarf output.
11624
11625 * snarf.h: make the output both texttools- and `read'-friendly.
11626
47bcd646
ML
11627 * guile-doc-snarf.in: reimplement in terms of guile-snarf and
11628 guile-snarf-docs. (should also deprecate, I guess. maybe not).
c99f9605 11629
7eb5d7b2
MV
116302001-05-31 Marius Vollmer <mvo@zagadka.ping.de>
11631
11632 * print.c (scm_simple_format): Support "~~" and "~%". Signal
11633 error for unsupported format controls and for superflous
ec2667f0 11634 arguments. Thanks to Daniel Skarda!
7eb5d7b2
MV
11635
11636 * print.h, print.c (scm_print_symbol_name): Factored out of
11637 scm_iprin1.
11638 (scm_iprin1): Call it.
58bee6a8 11639
7eb5d7b2
MV
11640 * keywords.c (keyword_print): Use scm_print_symbol_name so that
11641 weird names are printed correctly.
11642
11643 * print.c (scm_print_symbol_name): Symbols whose name starts with
11644 `#' or `:' or ends with `:' are considered weird.
11645
609c3d30
MG
116462001-05-30 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11647
11648 * numbers.c (scm_difference, scm_divide): Clarified comments for -
11649 and /.
11650
116512001-05-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11652
11653 * debug.h: Removed prototype for scm_eval_string.
11654
8d09eb04
MG
116552001-05-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11656
11657 * symbols.c (scm_gensym): Fix buffer overrun (try `(gensym
58bee6a8 11658 (make-string 2000 #\!))' in an older version).
8d09eb04
MG
11659
11660 Change strncpy to memcpy to allow embedded NUL characters in
11661 symbol prefix.
11662
dd85ce47
ML
116632001-05-28 Michael Livshin <mlivshin@bigfoot.com>
11664
fde50407
ML
11665 * hooks.c (scm_create_hook): deprecated.
11666 (make_hook): deleted.
11667 (scm_make_hook): all the hook creation code is now here.
11668
11669 * gc.c (scm_init_gc): don't call `scm_create_hook'. instead make
11670 a hook, make it permanent, and do a `scm_c_define' on it.
11671
dd85ce47
ML
11672 * strop.c (s_scm_string_capitalize_x): fix docstring quoting.
11673
11674 * socket.c (s_scm_inet_pton): fix docstring quoting.
11675 (s_scm_inet_ntop): ditto.
11676
11677 * num2integral.i.c (INTEGRAL2NUM): cast to fix a warning.
11678
11679 * hashtab.c (scm_internal_hash_fold): fix argument position in
11680 SCM_ASSERT.
11681
11682 * environments.c (s_scm_import_environment_set_imports_x): fix
11683 argument position in SCM_ASSERT.
11684
11685 * debug.c (s_scm_make_gloc): fix SCM packing/unpacking.
11686 (s_scm_make_iloc): ditto.
11687
729dbac3
DH
116882001-05-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
11689
11690 * __scm.h (SCM_DEBUG_TYPING_STRICTNESS): Make 1 the default.
11691
11692 * eval.c (promise_print): Read the promise's value as an object.
11693
11694 (SCM_CEVAL): Don't perform side-effecting operations in macro
11695 parameters.
11696
11697 * eval.h (SCM_EVALIM2): Fix the typing strictness of the
11698 conditional expression.
11699
11700 * gc.c (scm_master_freelist, scm_master_freelist2): Added missing
11701 initializer.
11702
11703 * gh_data.c (gh_set_substr): Removed redundant unsigned >= 0
11704 text, removed redundant computation of effective_length and fixed
11705 the overflow check.
11706
11707 * goops.c (test_slot_existence): Use SCM_EQ_P to compare SCM
11708 values.
11709
11710 (wrap_init): Don't use SCM_C[AD]R for non pairs.
11711
11712 (hell): Make it a scm_bits_t pointer rather than a SCM pointer.
11713
11714 * goops.c (scm_sys_modify_class), strports.c (st_resize_port),
11715 struct.h (SCM_SET_STRUCT_PRINTER): Store unpacked values.
11716
11717 * goops.h (SCM_ACCESSORS_OF, SCM_SLOT): Return a SCM value.
11718
11719 * goops.h (GOOPSH, SCM_GOOPS_H), modules.h (MODULESH,
11720 SCM_MODULES_H), objects.h (OBJECTSH, SCM_OBJECTS_H), struct.h
11721 (STRUCTH, SCM_STRUCT_H), symbols.h (SYMBOLSH, SCM_SYMBOLS_H),
11722 __scm.h (__SCMH, SCM___SCM_H): Change <foo>H to SCM_<foo>_H.
11723
11724 * modules.[ch] (scm_module_tag): Make it a scm_bits_t value.
11725
11726 * objects.h (SCM_SET_CLASS_INSTANCE_SIZE): Fixed typing.
11727
ea2c3968 11728 * ramap.c (ramap_rp): Removed bogus `;'.
729dbac3
DH
11729
11730 * sort.c (scm_restricted_vector_sort_x): Fixed signedness
11731 problem.
11732
11733 * symbols.h (SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS, SCM_SYMBOL_FUNC,
11734 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS):
11735 Read SCM objects rather than scm_bits_t values.
11736
11737 * tags.h (SCM_VOIDP_TEST): Removed.
11738
11739 (SCM_DEBUG_TYPING_STRICTNESS): Now takes values 0, 1, 2. The
11740 value of 2 now corresponds to the former 1, the current 1
11741 corresponds to the former situation that SCM_VOIDP_TEST was
11742 defined.
11743
58bee6a8
TTN
11744 (SCM): Now defined as typedef struct scm_unused_struct * SCM;
11745 If this appears to be not ANSI compliant, we will change it to
729dbac3
DH
11746 typedef struct scm_unused_struct { } * SCM;
11747 Thanks to Han-Wen Nienhuys for the suggestion.
11748
11749 * unif.c (scm_array_set_x): Fix typing problem, and use
11750 SCM_UVECTOR_BASE instead of SCM_VELTS or SCM_CELL_WORD_1 when
11751 dealing with uniform vectors.
11752
6b1b030e
ML
117532001-05-27 Michael Livshin <mlivshin@bigfoot.com>
11754
11755 * gc.c (scm_init_storage): init `scm_gc_registered_roots'.
11756 (scm_igc): mark from them, too (precisely, not conservatively!).
11757
11758 * root.h (scm_gc_registered_roots): new object in
11759 scm_sys_protects.
11760
11761 * hooks.c (scm_create_hook): call `scm_gc_protect_object' instead
11762 `scm_protect_object'. shouldn't call it at all, though, it seems.
11763
11764 * gc.c (scm_[un]protect_object): deprecated.
11765 (scm_gc_[un]protect_object): new names for scm_[un]protect_object.
11766 (scm_gc_[un]register_root[s]): new.
11767
11768 * gc.h: add prototypes for scm_gc_[un]protect_object,
11769 scm_gc_[un]register_root[s].
11770
c014a02e
ML
117712001-05-26 Michael Livshin <mlivshin@bigfoot.com>
11772
11773 revert the controversial part of the 2001-05-24 changes.
11774
0120801d
MV
117752001-05-25 Marius Vollmer <mvo@zagadka.ping.de>
11776
f4e0611e
MV
11777 * modules.c (scm_env_module): Exported to Scheme.
11778
0120801d 11779 * eval.c (scm_debug_opts): New option `show-file-name'.
729dbac3 11780
0120801d 11781 * debug.h (SCM_SHOW_FILE_NAME): New.
729dbac3 11782
0120801d
MV
11783 * backtrace.c: Include "libguile/filesys.h".
11784 (sym_base, display_backtrace_get_file_line,
11785 display_backtrace_file, display_backtrace_file_and_line): New.
11786 (display_frame): Call display_backtrace_file_and_line if that is
11787 requested.
11788 (display_backtrace_body): Call scm_display_backtrace_file if
11789 requested.
11790
11791 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr):
11792 Prototypes removed since there's no definition for these
11793 functions.
11794
880a7d13
MG
117952001-05-24 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11796
11797 * unif.c (scm_make_ra, array_free), unif.h (SCM_ARRAY_DIMS):
11798 Changed use of scm_array->scm_array_t and
11799 scm_array_dim->scm_array_dim_t to enable build with
11800 --disable-deprecated.
11801
1be6b49c
ML
118022001-05-24 Michael Livshin <mlivshin@bigfoot.com>
11803
11804 The purpose of this set of changes is to regularize Guile's usage
11805 of ANSI C integral types, with the following ideas in mind:
11806
d69c867a
ML
11807 - SCM does not nesessarily have to be long.
11808 - long is not nesessarily enough to store pointers.
1be6b49c
ML
11809 - long is not nesessarily the same size as int.
11810
11811 The changes are incomplete and possibly buggy. Please test on
11812 something exotic.
11813
11814 * validate.h
11815 (SCM_NUM2{SIZE,PTRDIFF,SHORT,USHORT,BITS,UBITS,INT,UINT}[_DEF]):
11816 new macros.
11817
11818 * unif.h: type renaming:
11819 scm_array -> scm_array_t
11820 scm_array_dim -> scm_array_dim_t
11821 the old names are deprecated, all in-Guile uses changed.
11822
11823 * tags.h (scm_ubits_t): new typedef, representing unsigned
11824 scm_bits_t.
11825
11826 * stacks.h: type renaming:
11827 scm_info_frame -> scm_info_frame_t
11828 scm_stack -> scm_stack_t
11829 the old names are deprecated, all in-Guile uses changed.
11830
11831 * srcprop.h: type renaming:
11832 scm_srcprops -> scm_srcprops_t
11833 scm_srcprops_chunk -> scm_srcprops_chunk_t
11834 the old names are deprecated, all in-Guile uses changed.
11835
11836 * gsubr.c, procs.c, print.c, ports.c, read.c, rdelim.c, ramap.c,
11837 rw.c, smob.c, sort.c, srcprop.c, stacks.c, strings.c, strop.c,
11838 strorder.c, strports.c, struct.c, symbols.c, unif.c, values.c,
11839 vectors.c, vports.c, weaks.c:
11840 various int/size_t -> size_t/scm_bits_t changes.
11841
11842 * random.h: type renaming:
11843 scm_rstate -> scm_rstate_t
11844 scm_rng -> scm_rng_t
11845 scm_i_rstate -> scm_i_rstate_t
11846 the old names are deprecated, all in-Guile uses changed.
11847
11848 * procs.h: type renaming:
11849 scm_subr_entry -> scm_subr_entry_t
11850 the old name is deprecated, all in-Guile uses changed.
11851
11852 * options.h (scm_option_t.val): unsigned long -> scm_bits_t.
11853 type renaming:
11854 scm_option -> scm_option_t
11855 the old name is deprecated, all in-Guile uses changed.
11856
11857 * objects.c: various long -> scm_bits_t changes.
11858 (scm_i_make_class_object): flags: unsigned long -> scm_ubits_t
11859
11860 * numbers.h (SCM_FIXNUM_BIT): deprecated, renamed to
11861 SCM_I_FIXNUM_BIT.
11862
11863 * num2integral.i.c: new file, multiply included by numbers.c, used
11864 to "templatize" the various integral <-> num conversion routines.
11865
11866 * numbers.c (scm_mkbig, scm_big2num, scm_adjbig, scm_normbig,
11867 scm_copybig, scm_2ulong2big, scm_dbl2big, scm_big2dbl):
11868 deprecated.
11869 (scm_i_mkbig, scm_i_big2inum, scm_i_adjbig, scm_i_normbig,
11870 scm_i_copybig, scm_i_short2big, scm_i_ushort2big, scm_i_int2big,
11871 scm_i_uint2big, scm_i_long2big, scm_i_ulong2big, scm_i_bits2big,
11872 scm_i_ubits2big, scm_i_size2big, scm_i_ptrdiff2big,
11873 scm_i_long_long2big, scm_i_ulong_long2big, scm_i_dbl2big,
11874 scm_i_big2dbl, scm_short2num, scm_ushort2num, scm_int2num,
11875 scm_uint2num, scm_bits2num, scm_ubits2num, scm_size2num,
11876 scm_ptrdiff2num, scm_num2short, scm_num2ushort, scm_num2int,
11877 scm_num2uint, scm_num2bits, scm_num2ubits, scm_num2ptrdiff,
11878 scm_num2size): new functions.
11879
d69c867a 11880 * modules.c (scm_module_reverse_lookup): i, n: int -> scm_bits_t.
1be6b49c
ML
11881
11882 * load.c: change int -> size_t in various places (where the
11883 variable is used to store a string length).
11884 (search-path): call scm_done_free, not scm_done_malloc.
11885
11886 * list.c (scm_ilength): return a scm_bits_t, not long.
11887 some other {int,long} -> scm_bits_t changes.
11888
11889 * hashtab.c: various [u]int -> scm_bits_t changes.
11890 scm_ihashx_closure -> scm_ihashx_closure_t (and made a typedef).
11891 (scm_ihashx): n: uint -> scm_bits_t
11892 use scm_bits2num instead of scm_ulong2num.
11893
11894 * gsubr.c: various int -> scm_bits_t changes.
11895
11896 * goops.[hc]: various {int,long} -> scm_bits_t changes.
11897
d69c867a 11898 * gh_data.c (gh_num2int): no loss of precision any more.
1be6b49c
ML
11899
11900 * gh.h (gh_str2scm): len: int -> size_t
11901 (gh_{get,set}_substr): start: int -> scm_bits_t,
11902 len: int -> size_t
11903 (gh_<num>2scm): n: int -> scm_bits_t
11904 (gh_*vector_length): return scm_[u]size_t, not unsigned long.
11905 (gh_length): return scm_bits_t, not unsigned long.
11906
11907 * gc.[hc]: various small changes relating to many things stopping
11908 being long and starting being scm_[u]bits_t instead.
11909 scm_mallocated should no longer wrap around.
11910
11911 * fports.h: type renaming:
11912 scm_fport -> scm_fport_t
11913 the old name is deprecated, all in-Guile uses changed.
11914
11915 * fports.c (fport_fill_input): count: int -> scm_bits_t
11916 (fport_flush): init_size, remaining, count: int -> scm_bits_t
11917
11918 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr): removed
11919 those prototypes, as the functions they prototype don't exist.
11920
11921 * fports.c (default_buffer_size): int -> size_t
11922 (scm_fport_buffer_add): read_size, write_size: int -> scm_bits_t
11923 default_size: int -> size_t
11924 (scm_setvbuf): csize: int -> scm_bits_t
11925
11926 * fluids.c (n_fluids): int -> scm_bits_t
11927 (grow_fluids): old_length, i: int -> scm_bits_t
11928 (next_fluid_num, scm_fluid_ref, scm_fluid_set_x): n: int ->
11929 scm_bits_t
11930 (scm_c_with_fluids): flen, vlen: int -> scm_bits_t
11931
11932 * filesys.c (s_scm_open_fdes): changed calls to SCM_NUM2LONG to
11933 the new and shiny SCM_NUM2INT.
11934
11935 * extensions.c: extension -> extension_t (and made a typedef).
11936
11937 * eval.h (SCM_IFRAME): cast to scm_bits_t, not int. just so
11938 there are no nasty surprises if/when the various deeply magic tag
11939 bits move somewhere else.
11940
11941 * eval.c: changed the locals used to store results of SCM_IFRAME,
11942 scm_ilength and such to be of type scm_bits_t (and not int/long).
11943 (iqq): depth, edepth: int -> scm_bits_t
11944 (scm_eval_stack): int -> scm_bits_t
11945 (SCM_CEVAL): various vars are not scm_bits_t instead of int.
11946 (check_map_args, scm_map, scm_for_each): len: long -> scm_bits_t
11947 i: int -> scm_bits_t
11948
11949 * environments.c: changed the many calls to scm_ulong2num to
11950 scm_ubits2num.
11951 (import_environment_fold): proc_as_ul: ulong -> scm_ubits_t
11952
11953 * dynwind.c (scm_dowinds): delta: long -> scm_bits_t
11954
11955 * debug.h: type renaming:
11956 scm_debug_info -> scm_debug_info_t
11957 scm_debug_frame -> scm_debug_frame_t
11958 the old names are deprecated, all in-Guile uses changed.
11959 (scm_debug_eframe_size): int -> scm_bits_t
11960
11961 * debug.c (scm_init_debug): use scm_c_define instead of the
11962 deprecated scm_define.
11963
11964 * continuations.h: type renaming:
11965 scm_contregs -> scm_contregs_t
11966 the old name is deprecated, all in-Guile uses changed.
11967 (scm_contregs_t.num_stack_items): size_t -> scm_bits_t
11968 (scm_contregs_t.num_stack_items): ulong -> scm_ubits_t
11969
11970 * continuations.c (scm_make_continuation): change the type of
d69c867a 11971 stack_size from long to scm_bits_t.
1be6b49c
ML
11972
11973 * ports.h: type renaming:
11974 scm_port_rw_active -> scm_port_rw_active_t (and made a typedef)
11975 scm_port -> scm_port_t
11976 scm_ptob_descriptor -> scm_ptob_descriptor_t
11977 the old names are deprecated, all in-Guile uses changed.
11978 (scm_port_t.entry): int -> scm_bits_t.
11979 (scm_port_t.line_number): int -> long.
11980 (scm_port_t.putback_buf_size): int -> size_t.
11981
11982 * __scm.h (long_long, ulong_long): deprecated (they pollute the
d69c867a 11983 global namespace and have little value beside that).
1be6b49c
ML
11984 (SCM_BITS_LENGTH): new, is the bit size of scm_bits_t (i.e. of an
11985 SCM handle).
11986 (ifdef spaghetti): include sys/types.h and sys/stdtypes.h, if they
d69c867a 11987 exist (for size_t & ptrdiff_t).
1be6b49c
ML
11988 (scm_sizet): deprecated.
11989
11990 * Makefile.am (noinst_HEADERS): add num2integral.i.c
11991
a6219f22
MV
119922001-05-23 Marius Vollmer <mvo@zagadka.ping.de>
11993
11994 * snarf.h (SCM_CONST_LONG): Use SCM_VCELL_INIT instead of
11995 SCM_VARIABLE_INIT since that it what it used to be.
11996
11997 * deprecation.c (scm_include_deprecated_features): Make docstring
9a5fa6e9 11998 ANSIsh. Thanks to Matthias Köppe!
a6219f22 11999
311b6a3c
MV
120002001-05-21 Marius Vollmer <mvo@zagadka.ping.de>
12001
9dfc4faa
MV
12002 * symbols.c (scm_mem2symbol): Re-introduce indirect cell. It is
12003 needed for weak-key hashtables.
12004
12005 * procs.c (scm_make_subr_with_generic): Add missing last argument
12006 in call to scm_c_define_gsubr_with_generic. Thanks to Ariel Rios.
12007
12008 * eval.c: Use SCM_EQ_P instead of `==' or `!=' in certain
12009 places. (scm_c_improper_memq): Return 1 instead of SCM_BOOL_T.
311b6a3c
MV
12010
12011 * eval.h (SCM_EVALIM2): Use SCM_EQ_P instead of `=='.
12012
2fc933fe
MV
120132001-05-20 Marius Vollmer <mvo@zagadka.ping.de>
12014
57ae112d
MV
12015 * symbols.c (scm_mem2symbol): Call `scm_must_strndup' instead of
12016 `duplicate_string'. Do not use an indirect cell, store symbol
12017 directly in collision list of hash table.
12018 (duplicate_string): Removed.
58bee6a8 12019
57ae112d
MV
12020 * init.c (scm_init_guile_1): Call scm_init_extensions.
12021
12022 * Makefile.am: Add "extensions.c" and related files in all the
12023 right places.
12024
12025 * extensions.h, extension.c: New files.
12026
12027 * gc.h, gc.c (scm_must_strdup, scm_must_strndup): New.
12028
2fc933fe
MV
12029 * modules.h (scm_system_module_env_p): Move out of deprecated
12030 section.
12031
12032 * rw.h (scm_init_rw): Added prototype.
12033
12034 * gsubr.h, gsubr.c (scm_c_make_gsubr, scm_c_define_gsubr,
12035 scm_c_make_gsubr_with_generic, scm_c_define_gsubr_with_generic):
12036 New functions. They replace scm_make_gsubr and
12037 scm_make_gsubr_with_generic. The `make' variants only create the
12038 gsubr object, while the `define' variants also put it into the
12039 current module. Changed all callers.
12040 (scm_make_gsubr, scm_make_gsubr_with_generic): Deprecated.
12041
12042 * procs.h, procs.c (scm_c_make_subr, scm_c_define_subr,
12043 scm_c_make_subr_with_generic, scm_c_define_subr_with_generic): New
12044 functions. They replace scm_make_subr, scm_make_subr_opt and
12045 scm_make_subr_with_generic. The `make' variants only create the
12046 subr object, while the `define' variants also put it into the
12047 current module. Changed all callers.
12048 (scm_make_subr, scm_make_subr_opt, scm_make_subr_with_generic):
12049 Deprecated.
12050
12051 * eval.c, gc.c, gh_funcs.c, goops.c, macros.c, pairs.c, ramap.c,
12052 rdelim.c, rw.c, scmsigs.c, snarf.h, values.c: Changed according to
12053 the comments above.
58bee6a8 12054
18928596
NJ
120552001-05-19 Neil Jerram <neil@ossau.uklinux.net>
12056
12057 * throw.c (scm_lazy_catch): Slight docstring clarification.
12058
21a13beb
MV
120592001-05-19 Marius Vollmer <mvo@zagadka.ping.de>
12060
e2b6ddc6
MV
12061 * throw.c: Lazy-catch handlers are no longer allowed to return.
12062 Fixed comments throughout.
12063 (scm_ithrow): Signal an error when a lazy-catch handler returns.
12064 Moved actual jump to jmpbuf into if-branch where the jmpbuf is
12065 recognized as such.
12066
21a13beb
MV
12067 * version.c (s_scm_micro_version): Fix typo in FUNC_NAME, it
12068 refered to s_scm_minor_version previously.
12069
12070 * modules.h, modules.c: Moved around a lot of code so that
12071 deprecated features appear at the bottom.
12072 (root_module_lookup_closure, scm_sym_app, scm_sym_modules,
12073 module_prefix, make_modules_in_var, beautify_user_module_x_var,
12074 scm_the_root_module, scm_make_module, scm_ensure_user_module,
12075 scm_load_scheme_module): Deprecated.
12076 (scm_system_module_env_p): Return SCM_BOOL_T directly for
12077 environments corresponding to the root module.
12078 (convert_module_name, scm_c_resolve_module,
12079 scm_c_call_with_current_module, scm_c_define_module,
12080 scm_c_use_module, scm_c_export): New.
12081 (the_root_module): New static variant of scm_the_root_module. Use
12082 it everywhere instead of scm_the_root_module.
58bee6a8 12083
21a13beb
MV
12084 * fluids.h, fluids.c (scm_internal_with_fluids): Deprecated.
12085 (scm_c_with_fluids): Renamed from scm_internal_with_fluids.
12086 (scm_c_with_fluid): New.
12087 (scm_with_fluids): Use scm_c_with_fluids instead of
12088 scm_internal_with_fluids.
58bee6a8 12089
21a13beb
MV
12090 * goops.h, goops.c (scm_init_goops_builtins): Renamed from
12091 `scm_init_goops'. Do not explicitly create/switch modules.
12092 Return SCM_UNSPECIFIED.
12093 (scm_init_goops): Only register `%init-goops-builtins' procedure.
12094 (scm_load_goops): Use scm_c_resolve_module instead of
12095 scm_resolve_module.
58bee6a8 12096
21a13beb
MV
12097 * init.c (scm_init_guile_1): Call `scm_init_goops' instead of
12098 `scm_init_oop_goops_goopscore_module'. Call `scm_init_rdelim' and
12099 `scm_init_rw' prior to loading the startup files.
12100
12101 * rdelim.h, rdelim.c: (scm_init_rdelim_builtins): Renamed from
12102 scm_init_rdelim. Do not explicitly create/switch modules.
12103 Return SCM_UNSPECIFIED.
12104 (scm_init_rdelim): Only register `%init-rdelim-builtins'
12105 procedure.
58bee6a8 12106
21a13beb
MV
12107 * rw.c (scm_init_rw_builtins): Renamed from scm_init_rw. Do not
12108 explicitly create/switch modules. Return SCM_UNSPECIFIED.
12109 (scm_init_rw): Only register `%init-rw-builtins' procedure.
12110
12111 * script.c (scm_shell): Evaluate the compiled switches in the
12112 current module, not in the root module.
12113
121142001-05-18 Marius Vollmer <mvo@zagadka.ping.de>
12115
12116 * fluids.c (scm_c_with_fluids): Rename from
12117 scm_internal_with_fluids.
12118 (scm_internal_with_fluids): Deprecated.
12119 (scm_c_with_fluid): New.
12120
09cb9e73
DH
121212001-05-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12122
12123 * print.h (PRINTH, SCM_PRINT_H): Renamed PRINTH to SCM_PRINT_H.
12124
12125 (SCM_PORT_WITH_PS_PORT, SCM_PORT_WITH_PS_PS): Only pairs may be
12126 accessed with SCM_C[AD]R.
12127
12128 (SCM_COERCE_OUTPORT): Removed redundant SCM_NIMP test.
12129
c81ea65d
RB
121302001-05-16 Rob Browning <rlb@cs.utexas.edu>
12131
12132 * version.c (s_scm_major_version): doc fixes.
12133 (s_scm_minor_version): doc fixes.
12134 (s_scm_minor_version): new function.
12135
12136 * version.h (scm_init_version): new function.
12137
12138 * versiondat.h.in: add GUILE_MICRO_VERSION.
12139
887dfa7d
DH
121402001-05-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
12141
12142 * deprecation.c (scm_init_deprecation): Renamed
12143 GUILE_WARN_DEPRECATED_DEFAULT to SCM_WARN_DEPRECATED_DEFAULT.
12144
78930a69
MV
121452001-05-16 Marius Vollmer <mvo@zagadka.ping.de>
12146
12147 * Makefile.am (cpp_sig_symbols.c, cpp_err_symbols.c): Make
12148 dependent on cpp_cnvt.awk
12149
39cde5c5
MG
121502001-05-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12151
12152 * script.c (scm_compile_shell_switches): New command line option
12153 `--use-srfi' for loading a list of SRFIs on startup.
12154 (scm_shell_usage): Added `--use-srfi' to help message.
12155
f3f9dcbc
MV
121562001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
12157
78930a69 12158 Merged from mvo-vcell-cleanup-1-branch.
887dfa7d 12159
f3f9dcbc
MV
12160 The concept of vcells has been removed from Guile. With it,
12161 explicit obarrays and associated operations are gone. Use
12162 hashtables instead of obarrays.
887dfa7d 12163
f3f9dcbc
MV
12164 Throughout: use scm_sym2var instead of scm_sym2vcell and treat
12165 result as variable instead of vcell. Glocs no longer point to a
12166 vcell but to a variable. Use scm_c_define instead of
12167 scm_sysintern and treat the result as a variable (which it is),
12168 not a vcell.
887dfa7d 12169
f3f9dcbc
MV
12170 * variable.c, variable.h (SCM_VARVCELL, SCM_UDVARIABLEP,
12171 SCM_DEFVARIABLEP): Deprecated.
12172 (SCM_VARIABLE_REF, SCM_VARIABLE_SET, SCM_VARIABLE_LOC): New.
12173 (variable_print): Do not print name of variable.
12174 (variable_equalp): Compare values, not vcells.
12175 (anonymous_variable_sym): Removed.
12176 (make_vcell_variable): Removed.
12177 (make_variable): New, as replacement.
12178 (scm_make_variable, scm_make_undefined_variable): Do not take name
12179 hint parameter.
12180 (scm_variable_ref): Check for SCM_UNDEFINED and throw "unbound"
12181 error in that case.
12182 (scm_builtin_variable): Deprecated.
12183
12184 * symbols.c, symbols.h (scm_sym2vcell, scm_sym2ovcell_soft,
12185 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
12186 scm_intern, scm_intern0, scm_sysintern0_no_module_lookup,
12187 scm_sysintern, scm_sysintern0, scm_symbol_value0,
12188 scm_string_to_obarray_symbol, scm_intern_symbol,
12189 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned,
12190 scm_symbol_bound_p, scm_symbol_set_x, scm_gentmp, gentmp_counter):
12191 Deprecated and moved to "symbols-deprecated.c".
12192 (copy_and_prune_obarray, scm_builtin_bindings): Removed.
12193 (scm_init_symbols): Call scm_init_symbols_deprecated.
12194 * symbols-deprecated.c: New file.
12195 * Makefile.am: Added symbols-deprecated.c and related files in all
12196 the right places.
887dfa7d 12197
f3f9dcbc
MV
12198 * snarf.h (SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
12199 SCM_GLOBAL_VCELL_INIT): Deprecated.
12200 (SCM_VARIABLE, SCM_GLOBAL_VARIABLE, SCM_VARIABLE_INIT,
12201 SCM_GLOBAL_VARIABLE_INIT): New, as replacement. Changed all uses.
887dfa7d 12202
f3f9dcbc
MV
12203 * print.c (scm_iprin1): Use scm_module_reverse_lookup instead of
12204 SCM_GLOC_SYM.
12205
12206 * evalext.c, filesys.c, fports.c, gdbint.c, gh_data.c, gsubr.c,
12207 hooks.c, load.c, numbers.c, objects.c, ports.c, posix.c, procs.c,
12208 ramap.c, random.c, read.c, regex-posix.c, scmsigs.c, script.c,
12209 socket.c, srcprop.c, stacks.c, stime.c, struct.c, tag.c, throw.c:
12210 Changed according to the `throughout' comments.
12211
12212 * modules.h, modules.c (scm_module_system_booted_p): Changed type
12213 to `int'.
12214 (scm_module_type): Removed.
12215 (the_root_module): Renamed to the_root_module_var. Now points to
12216 a variable instead of a vcell. Updated all uses.
12217 (scm_the_root_module): Return SCM_BOOL_F when module systems
12218 hasn't been booted yet.
12219 (SCM_VALIDATE_STRUCT_TYPE): Removed.
12220 (scm_post_boot_init_modules): Made static.
12221 (scm_set_current_module): Call scm_post_boot_init_modules on first
12222 call.
12223 (make_modules_in, beautify_user_module_x, resolve_module,
12224 try_module_autoload, module_make_local_var_x): Tacked on "_var"
12225 suffix. Now point to variables instead of vcells. Updated all
12226 uses.
12227 (scm_module_lookup_closure): Deal with the module being SCM_BOOL_F
12228 and return SCM_BOOL_F in that case.
12229 (scm_module_transformer): Likewise.
12230 (sym_module, scm_lookup_closure_module, scm_env_module): New.
12231 (SCM_F_EVAL_CLOSURE_INTERFACE, SCM_EVAL_CLOSURE_INTERFACE_P): New.
12232 (scm_eval_closure_lookup): Do not allow new definitions when
12233 `interface' flag is set.
12234 (scm_standard_interface_eval_closure): New.
12235 (scm_pre_modules_obarray, scm_sym2var, scm_module_lookup,
12236 scm_lookup, scm_module_define, scm_define, scm_c_module_lookup,
12237 scm_c_lookup, scm_c_module_define, scm_c_define,
12238 scm_module_reverse_lookup, scm_get_pre_modules_obarray,
12239 scm_modules_prehistory): New.
12240 (scm_post_boot_init_modules): Use scm_c_define and scm_c_lookup
12241 instead of scm_intern0.
887dfa7d 12242
f3f9dcbc
MV
12243 * macros.c (scm_make_synt): Return SCM_UNSPECIFIED instead of the
12244 symbol.
12245
12246 * keywords.c (s_scm_make_keyword_from_dash_symbol): Use a regular
12247 hashtable operations to maintain the keywords, not obarray ones.
12248
12249 * init.c (scm_load_startup_files): Do not call
12250 scm_post_boot_init_modules. This is done by
12251 scm_set_current_module now.
12252 (scm_init_guile_1): Call scm_modules_prehistory. Call
12253 scm_init_variable early on.
12254
12255 * goops.c (s_scm_sys_goops_loaded): Get
12256 var_compute_applicable_methods from scm_sym2var, not from a direct
12257 invocation of scm_goops_lookup_closure.
12258
12259 * gh_funcs.c (gh_define): Return SCM_UNSPECIFIED instead of vcell.
12260
12261 * gc.c: Added simple debugging hack to mark phase of GC: When
12262 activated, do not tail-call scm_gc_mark. This gives nice
12263 backtraces.
12264 (scm_unhash_name): Removed.
12265
12266 * feature.c (features): Renamed to features_var. Now points to a
12267 variable instead of a vcell. Updated all uses.
12268
12269 * eval.h (SCM_TOP_LEVEL_LOOKUP_CLOSURE): Use
12270 `scm_current_module_lookup_closure' which will do the right thing
12271 when the module system hasn't been booted yet.
12272 (SCM_GLOC_SYM): Removed.
12273 (SCM_GLOC_VAR, SCM_GLOC_SET_VAL): New.
12274 (SCM_GLOC_VAL, SCM_GLOC_LOC): Reimplemented in terms of variables.
887dfa7d 12275
f3f9dcbc
MV
12276 * eval.c (scm_lookupcar, scm_lookupcar1): Deal with variables
12277 instead of with vcells. Do not overwrite `var' with the result of
12278 the lookup, use the new `real_var' instead. Remove `var2' in
12279 exchange (which was only used with threads).
12280 (sym_three_question_marks): New.
12281 (scm_unmemocar): Use `scm_module_reverse_lookup' instead of
12282 `SCM_GLOC_SYM'.
12283 (scm_lisp_nil, scm_lisp_t): Directly define as symbols.
12284 (scm_m_atfop): Expect the function definition to be a variable
12285 instead of a vcell.
12286 (scm_macroexp): Do not use `unmemocar', explicitely remember the
12287 symbol instead.
12288 (scm_unmemocopy): Removed thoughts about anti-macro interface.
12289 (scm_eval_args): Use more explicit code in the gloc branch of the
12290 atrocious struct ambiguity test. The optimizer will sort this
12291 out.
12292 (scm_deval_args): Likewise.
12293 (SCM_CEVAL): Likewise. Also, do not use unmemocar, explicitely
12294 remember the symbol instead. Added some comments where
12295 scm_tc3_cons_gloc really exclusively refers to structs.
12296 (scm_init_eval): Use scm_define to initialize "nil" and "t" to
12297 scm_lisp_nil and scm_lisp_t, respectively. Use scm_define instead
12298 of scm_sysintern in general.
12299
12300 * dynwind.c (scm_swap_bindings): Use SCM_GLOC_SET_VAL instead of
12301 explicit magic.
12302
12303 * debug.c (s_scm_make_gloc): Only allow proper variables, no
12304 pairs. Put the variable directly in the gloc.
12305 (s_scm_gloc_p): Use `scm_tc3_cons_gloc' instead of the magic `1'.
12306 (scm_init_debug): Use scm_c_define instead scm_sysintern.
12307
12308 * cpp_cnvt.awk: Emit "scm_c_define" instead of "scm_sysintern".
12309
12310 * backtrace.h, backtrace.c (scm_the_last_stack_fluid): Renamed to
12311 scm_the_last_stack_fluid_var. It now points to a variable instead
12312 of a vcell. Updated all uses.
12313 (scm_has_shown_backtrace_hint_p_var): Now points to a variable
12314 instead of a vcell. Updated all uses.
12315
12316 * _scm.h: Include "variables.h" and "modules.h" since almost
12317 everybody needs them now.
12318
12319 * root.h (scm_symhash, scm_symhash_vars): Removed.
12320 * gc.c (scm_init_storage): Do not initialize them.
887dfa7d 12321
7c33806a
DH
123222001-05-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
12323
12324 * eval.c (scm_init_eval): Initialize scm_undefineds and
58bee6a8 12325 scm_listofnull.
7c33806a
DH
12326
12327 * gc.c (scm_debug_newcell, scm_debug_newcell2): Fixed to behave
12328 like the SCM_NEWCELL macro counterparts.
12329
12330 (scm_init_storage, scm_init_gc): Moved initialization of
12331 scm_tc16_allocated from scm_init_gc to scm_init_storage.
12332
12333 (scm_init_storage): Moved initialization of scm_undefineds and
12334 scm_listofnull to eval.c, initializion of scm_nullstr to
12335 strings.c, initializion of scm_nullvect to vectors.c.
12336
12337 * gc.h (SCM_NEWCELL, SCM_NEWCELL2): Prefer SCM_NULLP over
12338 SCM_IMP, as in scm_debug_newcell and scm_debug_newcell2.
12339
12340 * init.c (scm_init_guile_1): Reordered some initializations and
12341 added dependcy information comments.
12342
12343 * load.c (scm_init_load): Use scm_nullstr.
12344
12345 * strings.c (scm_init_strings): Initialize scm_nullstr.
12346
12347 * vectors.c (scm_init_vectors): Initialize scm_nullvect.
12348
11bbab47
MV
123492001-05-15 Marius Vollmer <mvo@zagadka.ping.de>
12350
12351 * values.c (print_values): Print as a unreadable object, not as
9a5fa6e9 12352 multiple lines. Thanks to Matthias Köppe!
11bbab47 12353
5cd06d5e
DH
123542001-05-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
12355
12356 * deprecation.c: Fixed copyright date.
12357
12358 * deprecation.h (DEPRECATION_H, SCM_DEPRECATION_H): Renamed
12359 DEPRECATION_H to SCM_DEPRECATION_H.
12360
32bac999
TTN
123612001-05-10 Thien-Thi Nguyen <ttn@revel.glug.org>
12362
12363 * guile-doc-snarf.in: Update copyright.
12364 Fix relative path bug. Thanks to Sergey Poznyakoff.
12365
c9dcc5ae
MV
123662001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
12367
12368 * ports.c (scm_port_revealed, scm_set_port_revealed_x): Only
12369 accept open ports. Thanks to Quetzalcoatl Bradley!
12370
7c582ec9
MG
123712001-05-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12372
12373 * procs.c: Increased `scm_subr_table_room' to 800 because Guile now
12374 has 779 primitives on startup.
12375
284ab601
MV
123762001-05-09 Marius Vollmer <mvo@zagadka.ping.de>
12377
12378 * eval.c (scm_i_eval): Copy expression before passing it to
12379 SCM_XEVAL. The copy operation was removed unintendedly during my
12380 change on 2001-03-25.
12381
910d1e40
ML
123822001-05-09 Michael Livshin <mlivshin@bigfoot.com>
12383
9a5fa6e9 12384 from Matthias Köppe (thanks!):
910d1e40
ML
12385
12386 * ports.c (scm_c_read): pointer arithmetic on void pointers isn't
12387 portable.
12388
12389 * deprecation.c (s_scm_include_deprecated_features): ANSI'fied the
12390 docstring.
12391
56e55ac7
DH
123922001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
12393
12394 * gc.c (scm_init_gc): Added FIXME comment.
12395
12396 * hooks.c: Since hooks don't have a name any more, it is not
12397 necessary to include objprop.h.
12398
12399 (hook_print, scm_add_hook_x): Replace SCM_NFALSEP by !SCM_FALSEP.
12400
12401 (symbol_name, scm_make_hook_with_name): Removed.
12402
12403 (scm_create_hook): Don't set the hook's name property.
12404
12405 * hooks.h (HOOKSH, SCM_HOOKS_H): Renamed HOOKSH to SCM_HOOKS_H.
12406
12407 (SCM_HOOK_NAME, scm_make_hook_with_name): Removed.
12408
12409 * init.c (scm_init_guile_1): Hooks don't use objprops any more.
12410
12411 * numbers.c (SCM_FLOBUFLEN, FLOBUFLEN, scm_number_to_string,
12412 scm_print_real, scm_print_complex): Renamed SCM_FLOBUFLEN to
12413 FLOBUFLEN and define it unconditionally.
12414
d204b24c
MV
124152001-05-07 Marius Vollmer <mvo@zagadka.ping.de>
12416
438201b4
MV
12417 * gh_data.c (gh_lookup): Call gh_module_lookup with
12418 `scm_current_module ()', not `#f'.
12419 (gh_module_lookup): Expect a module instead of an obarray as first
12420 argument and do lookup in that module.
56e55ac7 12421
d204b24c
MV
12422 * ramap.c (raeql_1): Do not call scm_uniform_vector_length on
12423 arrays. The length of array is already determined differently and
12424 scm_uniform_vector_length does not work on arrays.
12425
26c1d549
MV
124262001-05-06 Marius Vollmer <mvo@zagadka.ping.de>
12427
fe7c2f88
MV
12428 * snarf.h (SCM_FUNC_CAST_ARBITRARY_ARGS): Use "SCM (*)()" for C++
12429 as well. "SCM (*)(...)" does not work on RedHat 7.1.
12430
26c1d549
MV
12431 * __scm.h (SCM_WTA_DISPATCH_0): Removed ARG and POS parameters,
12432 they are not used. Changed `wrong type' error into `wrong num
12433 args' error. Changed all callers.
56e55ac7 12434
26c1d549
MV
12435 * numbers.c (scm_difference): Call SCM_WTA_DISPATCH_0 when zero
12436 arguments are supplied.
12437
1c938eb8
TTN
124382001-05-05 Thien-Thi Nguyen <ttn@revel.glug.org>
12439
12440 * regex-posix.c (scm_regexp_exec): Expand docstring to briefly
12441 describe `regexp/notbol' and `regexp/noteol' execution flags.
12442
3a6379f7
TTN
12443 * strop.c (scm_substring_move_x): Doc fix; nfc.
12444
c10ecc4c
MV
124452001-05-05 Marius Vollmer <mvo@zagadka.ping.de>
12446
12447 * objects.c, objects.h (scm_valid_object_procedure_p): New.
12448 (scm_set_object_procedure_x): Use it to check argument. Fix
12449 docstring.
12450
12451 * evalext.c (scm_definedp): Fix docstring.
12452
a57a0b1e
GH
124532001-05-05 Gary Houston <ghouston@arglist.com>
12454
12455 * socket.c: use HAVE_IPV6 instead of AF_INET6 to enable IPv6
12456 support.
12457
7a095584
NJ
124582001-05-04 Neil Jerram <neil@ossau.uklinux.net>
12459
12460 * eval.c (scm_promise_p), list.c (scm_append_x, scm_reverse_x),
12461 symbols.c (scm_symbol_to_string), vports.c (scm_make_soft_port):
12462 Change R4RS references to R5RS.
12463
12464 * guile-snarf.awk.in: Fixes so that (i) blank lines in the
12465 docstring source are correctly reproduced in the output (ii)
12466 we don't anymore get occasional trailing quotes. Also reorganized
12467 and commented the code a little.
12468
12469 * scmsigs.c (scm_raise), throw.c (scm_throw): Docstring format
12470 fixes.
12471
dd2a6f3a
MG
124722001-05-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12473
12474 * strop.c (scm_string_split): New procedure.
12475
12476 * strop.h (scm_string_split): Added prototype.
12477
00120130
GH
124782001-05-04 Gary Houston <ghouston@arglist.com>
12479
12480 * socket.c: define uint32_t if netdb.h doesn't. thanks to
12481 Dale P. Smith.
12482
b65e6bfe
MV
124832001-05-02 Marius Vollmer <mvo@zagadka.ping.de>
12484
12485 * rw.c: Include "modules.h" and "strports.h".
12486
12487 * net_db.h (scm_gethost): Added prototype.
12488
12489 * deprecation.h, deprecation.c: New.
12490 * Makefile.am (libguile_la_SOURCES): Added "deprecation.c".
12491 (DOT_X_FILES): Added "deprecation.x".
12492 (modinclude_HEADERS): Added "deprecation.h".
12493
12494 * init.c: Include "deprecation.h".
12495 (scm_init_guile_1): Call scm_init_deprecation.
1c938eb8 12496
b65e6bfe
MV
124972001-05-01 Marius Vollmer <mvo@zagadka.ping.de>
12498
12499 * gh.h (gh_init_guile, gh_make_string, gh_string_length,
12500 gh_string_ref, gh_string_set_x, gh_substring, gh_string_append):
12501 New.
12502
b0e5fd8c
GH
125032001-04-29 Gary Houston <ghouston@arglist.com>
12504
12505 * rw.c: new file, implementing C part of module (ice-9 rw).
12506 (scm_read_string_x_partial): moved from ioext.c
12507 (scm_init_rw): new proc.
12508 * rw.h: new file.
12509 init.c: include rw.h and call scm_init_rw.
12510 Makefile.am: include rw.c and rw.h.
12511
0b2da99c
RB
125122001-04-28 Rob Browning <rlb@cs.utexas.edu>
12513
12514 * numbers.c: enabled local definition of SCM_FLOBUFLEN until we
12515 know what's supposed to happen to it.
12516
12517 * list.h (scm_list_star): deprecation expired - removed.
12518
12519 * numbers.h (scm_dblproc): deprecation expired - removed.
12520 (SCM_UNEGFIXABLE): deprecation expired - removed.
12521 (SCM_FLOBUFLEN): deprecation expired - removed.
12522 (SCM_INEXP): deprecation expired - removed.
12523 (SCM_CPLXP): deprecation expired - removed.
12524 (SCM_REAL): deprecation expired - removed.
12525 (SCM_IMAG): deprecation expired - removed.
12526 (SCM_REALPART): deprecation expired - removed.
12527 (scm_makdbl): deprecation expired - removed.
12528 (SCM_SINGP): deprecation expired - removed.
12529 (SCM_NUM2DBL): deprecation expired - removed.
12530 (SCM_NO_BIGDIG): deprecation expired - removed.
12531
12532 * tags.h (SCM_DOUBLE_CELLP): deprecation expired - removed.
12533 (scm_tc_dblr): deprecation expired - removed.
12534 (scm_tc_dblc): deprecation expired - removed.
12535 (scm_tc16_flo): deprecation expired - removed.
12536 (scm_tc_flo): deprecation expired - removed.
12537
12538 * tag.h (scm_tag): deprecation expired - removed.
12539
12540 * tag.c: (scm_tag): deprecation expired - removed.
12541
12542 * ioext.c: (scm_fseek): deprecation expired - removed.
12543
12544 * ioext.h (scm_fseek): deprecation expired - removed.
12545
12546 * gh_data.c (gh_int2scmb): deprecation expired - removed.
12547
12548 * gh.h (gh_int2scmb): deprecation expired - removed.
12549
e3334972
NJ
125502001-04-28 Neil Jerram <neil@ossau.uklinux.net>
12551
12552 * stacks.c (scm_make_stack): Fix typo in docstring.
12553
a0f979ac
RB
125542001-04-27 Rob Browning <rlb@cs.utexas.edu>
12555
12556 * error.c (scm_sysmissing): deprecation expired - removed.
12557
12558 * error.h (scm_sysmissing): deprecation expired - removed.
12559
12560 * gc.c
12561 (scm_init_gc): gc-thunk deprecation expired - removed.
12562 (scm_gc_vcell): deprecation expired - removed.
12563 (gc_async_thunk): scm_gc_vcell related code removed.
12564
12565 * vectors.h (SCM_NVECTORP): deprecation expired - removed.
12566
12567 * strings.h
12568 (SCM_NSTRINGP): deprecation expired - removed.
12569 (SCM_NRWSTRINGP): deprecation expired - removed.
12570
12571 * continuations.h (SCM_SETJMPBUF): deprecation expired - removed.
12572
12573 * chars.h
12574 (SCM_ICHRP): deprecation expired - removed.
12575 (SCM_ICHR): deprecation expired - removed.
12576 (SCM_MAKICHR): deprecation expired - removed.
12577
12578 * ports.h
12579 (SCM_INPORTP): deprecation expired - removed.
12580 (SCM_OUTPORTP): deprecation expired - removed.
12581
253081cf
MV
125822001-04-25 Marius Vollmer <mvo@zagadka.ping.de>
12583
12584 * modules.c (scm_module_type): New.
12585 (scm_post_boot_init_modules): Initialize from Scheme value.
12586 (the_module, scm_current_module, scm_init_modules): the_module is
12587 now a C only fluid.
12588 (scm_current_module): Export to Scheme.
12589 (scm_set_current_module): Do not call out to Scheme, do all the
12590 work in C. Export procedure to Scheme. Only accept modules, `#f'
12591 is no longer valid as the current module. Only set
12592 scm_top_level_lookup_closure_var and scm_system_transformer when
12593 they are not deprecated.
12594 (scm_module_transformer, scm_current_module_transformer): New.
12595
12596 * modules.h (scm_module_index_transformer, SCM_MODULE_TRANSFORMER,
12597 scm_current_module_transformer, scm_module_transformer): New.
1c938eb8 12598
253081cf
MV
12599 * gh_data.c: Removed FIXME comment about gh_lookup returning
12600 SCM_UNDEFINED. That's the right thing to do.
12601
12602 * eval.h, eval.c (scm_system_transformer): Deprecated by moving it
12603 into the conditionally compiled sections.
12604 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Use
12605 scm_current_module_transformer instead of scm_system_transformer.
12606 * init.c (start_stack): Move initialization of
12607 scm_system_transformer to the deprecated section.
1c938eb8 12608
1f7f9ed4
NJ
126092001-04-22 Neil Jerram <neil@ossau.uklinux.net>
12610
12611 * throw.c (scm_throw): Correct docstring.
12612
66c73b76
GH
126132001-04-22 Gary Houston <ghouston@arglist.com>
12614
eefae538
GH
12615 * socket.c: attempted to improve the docstrings slightly.
12616
66c73b76
GH
12617 * net_db.c: remove bogus "close" declaration.
12618 (inet_aton declaration, scm_inet_aton, scm_inet_ntoa,
12619 scm_inet_netof, scm_lnaof, scm_inet_makeaddr, INADDR_ANY etc.):
12620 moved to socket.c.
12621 * net_db.h: declarations moved too.
12622
12623 * socket.c (scm_htonl, scm_ntohl): use uint32_t instead of unsigned
12624 long.
12625 (ipv6_net_to_num, ipv6_num_to_net): new static procedures.
12626 (VALIDATE_INET6): new macro.
12627 (scm_inet_pton, scm_inet_ntop): new procedures, implementing
12628 inet-pton and inet-ntop.
12629 (scm_fill_sockaddr): use VALIDATE_INET6 and ipv6_num_to_net.
12630 (scm_addr_vector): use ipv6_net_to_num.
1c938eb8 12631
7a7f7c53
DH
126322001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
12633
12634 * eq.c (scm_equal_p), ramap.c (scm_init_ramap): Don't compute the
12635 smob number explicitly. Use SCM_TC2SMOBNUM instead.
12636
12637 * gc.c (MARK, scm_gc_sweep): Only check for illegal heap objects
12638 when compiled in debug mode.
12639
12640 (scm_gc_sweep): Only call smob's free function if it is defined.
12641
12642 * print.c (scm_iprin1): No need to check for validity of smob
12643 type or existence of print function.
12644
12645 * smob.[ch] (scm_smobs): Made into a fixed size global array.
12646 Resizing will not work well with preemptive threading.
12647
12648 * smob.c (scm_smob_print): Don't use SCM_CDR to access smob data.
12649
12650 (scm_make_smob_type): Extracted initialization of smob
12651 descriptors to scm_smob_prehistory. Don't use scm_numsmob outside
12652 of the critical section.
12653
12654 (scm_smob_prehistory): Initialize all smob descriptors. By
12655 default, don't assign a smob free function: Most smob types don't
12656 need one.
12657
12658 * smob.h (SMOBH, SCM_SMOB_H): Renamed SMOBH to SCM_SMOB_H.
12659
e1368a8d
GH
126602001-04-21 Gary Houston <ghouston@arglist.com>
12661
12662 * socket.c (FLIP_NET_HOST_128): new macro.
12663 (scm_fill_sockaddr): use new macro.
12664 (scm_addr_vector): completed IPv6 address support. added const
12665 to the address parameter.
12666
5a525b84
GH
126672001-04-20 Gary Houston <ghouston@arglist.com>
12668
12669 * socket.c (scm_fill_sockaddr): call htons for sin6_port.
12670 Don't assign sin6_scope_id in structure unless HAVE_SIN6_SCOPE_ID
12671 is defined.
12672 (scm_addr_vector): use a switch instead of multiple if statements.
12673 Add support for IPv6 (incomplete) .
e1368a8d 12674 MAX_ADDR_SIZE: increase to size of struct sockaddr_in6 if needed.
5a525b84 12675
1a551638
DH
126762001-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
12677
12678 * struct.c (scm_free_structs): Only pairs may be accessed with
12679 SCM_C[AD]R.
12680
c07b3fef
MD
126812001-04-19 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12682
a9d861e3
MD
12683 * unif.h (SCM_ARRAY_CONTIGUOUS): Reintroduced as deprecated.
12684
c07b3fef
MD
12685 * __scm.h (SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
12686 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Inserted required
12687 parentheses in order to get the correct associativity.
12688
af7546eb
DH
126892001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12690
12691 * unif.c (scm_array_to_list): Added missing handling of arrays of
12692 bytes. Thanks to Masao Uebayashi for the bug report.
12693
4daecfee
DH
126942001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12695
12696 * debug.c (scm_procedure_source): Use SCM_CLOSURE_FORMALS more
12697 consistently.
12698
726d810a
DH
126992001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12700
12701 * procs.h (SCM_CLOSURE_FORMALS): New macro.
12702
12703 * debug.c (scm_procedure_source), eval.c (scm_badformalsp,
12704 SCM_CEVAL, SCM_APPLY), goops.c (get_slot_value, set_slot_value),
1c938eb8 12705 procprop.c (scm_i_procedure_arity), sort.c (closureless): Use
726d810a
DH
12706 SCM_CLOSURE_FORMALS.
12707
12708 * eval.c (scm_badformalsp, SCM_CEVAL), procprop.c
12709 (scm_i_procedure_arity): Prefer stronger predicates like
12710 SCM_NULLP or SCM_FALSEP over SCM_IMP.
12711
12712 * macros.c (macro_print): Extracted macro printing code from
12713 print.c and simplified it.
12714
12715 (scm_macro_type): Use SCM_MACRO_TYPE;
12716
12717 (scm_init_macros): Use macro_print for printing macros.
12718
12719 * print.c (scm_print_opts): Improved option documentation.
12720
12721 (scm_iprin1): Extracted printing of macros to macros.c.
12722 Simplified printing of ordinary closures.
12723
12724 * procs.c (scm_thunk_p): Fixed handling of closures. Thanks to
12725 Martin Grabmueller for the bug report.
12726
e038c042
DH
127272001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12728
12729 This patch eliminates some further applications of SCM_C[AD]R to
12730 non pair cells.
12731
12732 * gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR): Deprecated. These have
12733 never been applied to real pairs.
12734
12735 * srcprop.h (SCM_SOURCE_PROPERTY_FLAG_BREAK): Added.
12736
12737 (SRCPROPBRK): Use SCM_SOURCE_PROPERTY_FLAG_BREAK.
12738
12739 * unif.h (SCM_ARRAY_CONTIGUOUS, SCM_ARRAY_FLAG_CONTIGUOUS,
12740 SCM_ARRAY_CONTP): Renamed SCM_ARRAY_CONTIGUOUS to
12741 SCM_ARRAY_FLAG_CONTIGUOUS and use it.
12742
12743 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
12744 Added.
12745
12746 * srcprop.h (SRCPROPH), unif.h (UNIFH): Renamed to
12747 SCM_SOURCE_PROPERTIES_H and SCM_UNIFORM_VECTORS_H, respectively.
12748
12749 * srcprop.h (SETSRCPROPBRK, CLEARSRCPROPBRK), unif.c
12750 (scm_dimensions_to_uniform_array, scm_ra_set_contp): Don't use
12751 SCM_SET{AND,OR}_CAR.
12752
3453619b
GH
127532001-04-17 Gary Houston <ghouston@arglist.com>
12754
12755 * some initial support for IPv6:
1c938eb8 12756
3453619b
GH
12757 * socket.c (scm_fill_sockaddr): improve the argument validation.
12758 don't allocate memory until all args are checked. instead of
12759 unconditional memset of soka, try setting sin_len to 0 if
12760 SIN_LEN is defined. add support for AF_INET6. define FUNC_NAME.
12761 (scm_socket, scm_connect): extend docstrings for IPv6.
12762 (scm_init_socket): intern AF_INET6 and PF_INET6.
12763
216eedfc
DH
127642001-04-17 Niibe Yutaka <gniibe@m17n.org>
12765
12766 * srcprop.c (scm_make_srcprops): Added SCM_ALLOW_INTS which
12767 matches SCM_DEFER_INTS at the beginning of the function.
12768
12769 * mallocs.c (scm_malloc_obj): Remove un-matched SCM_ALLOW_INTS.
12770
12771 * gc.c (scm_igc): Unconditionally call
12772 SCM_CRITICAL_SECTION_START/END.
12773
12774 * fluids.c (next_fluid_num): Unconditionally call
12775 SCM_CRITICAL_SECTION_START/END.
12776 (s_scm_make_fluid): Remove un-matched SCM_DEFER_INTS.
12777
12778 * coop-defs.h (SCM_THREAD_DEFER, SCM_THREAD_ALLOW,
12779 SCM_THREAD_REDEFER, SCM_THREAD_REALLOW_1, SCM_THREAD_REALLOW_2):
12780 Removed.
12781
12782 * __scm.h (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END):
12783 Defined as nothing for the case of !defined(USE_THREADS).
12784 (SCM_THREAD_DEFER, SCM_THREAD_ALLOW, SCM_THREAD_REDEFER):
12785 Removed.
12786 (<stdio.h>): Include when (SCM_DEBUG_INTERRUPTS == 1).
12787 (SCM_CHECK_NOT_DISABLED, SCM_CHECK_NOT_ENABLED): Print FILE and
12788 LINE.
12789 (SCM_DEFER_INTS, SCM_ALLOW_INTS_ONLY, SCM_ALLOW_INTS,
12790 SCM_REDEFER_INTS, SCM_REALLOW_INTS): Don't use
12791 SCM_THREAD_DEFER/SCM_THREAD_ALLOW. Instead, use
12792 SCM_CRITICAL_SECTION_START/END.
12793 (SCM_REALLOW_INTS: Bug fix. Don't call
12794 SCM_THREAD_SWITCHING_CODE.
12795 (SCM_TICK): Don't use SCM_DEFER_INTS/SCM_ALLOW_INTS. Instead, use
12796 SCM_THREAD_SWITCHING_CODE directly.
12797 (SCM_ENTER_A_SECTION): Unconditionally use
12798 SCM_CRITICAL_SECTION_START/END. (was:
12799 SCM_DEFER_INTS/SCM_ALLOW_INTS when SCM_POSIX_THREADS defined).
12800
128012001-04-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12802
12803 * __scm.h (SCM_CAREFUL_INTS, SCM_DEBUG_INTERRUPTS): Replaced the
12804 macro SCM_CAREFUL_INTS by the macro SCM_DEBUG_INTERRUPTS and
12805 allowed to explicitly set this macro via the CFLAGS variable
12806 during make.
12807
12808 * fluids.c (next_fluid_num), gc.c (scm_igc), coop-defs.h
12809 (SCM_THREAD_CRITICAL_SECTION_START,
12810 SCM_THREAD_CRITICAL_SECTION_END): Renamed
12811 SCM_THREAD_CRITICAL_SECTION_START/END to
12812 SCM_CRITICAL_SECTION_START/END.
12813
f22ed5a0
KN
128142001-04-11 Keisuke Nishida <kxn30@po.cwru.edu>
12815
12816 * debug-malloc.c (grow, scm_debug_malloc_prehistory): Use memset
12817 instead of bzero.
1c938eb8 12818
f22ed5a0 12819 * coop.c, iselect.c (FD_ZERO_N): Unconditionally use memset.
1c938eb8 12820 (MISSING_BZERO_DECL): Remove the declaration.
f22ed5a0
KN
12821
12822 Thanks to NIIBE Yutaka.
12823
508ded1c
MD
128242001-04-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12825
a087ba81
MD
12826 * init.c, goops.c, goops.h: Reverted change of 2001-03-29. (The
12827 goops module should be registered in order to work for an
12828 application which uses libguile statically linked.)
508ded1c 12829
e4b265d8
DH
128302001-04-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
12831
12832 * numbers.[ch] (scm_num2long, scm_num2long_long,
12833 scm_num2ulong_long, scm_num2ulong): Argument position is an
12834 unsigned integer.
12835
12836 * environments.c (eval_environment_folder,
12837 import_environment_folder), gh_data.c (gh_scm2longs,
12838 gh_scm2floats, gh_scm2doubles): Distinguish between 0 and NULL
12839 for integers and pointers, respectively.
12840
12841 * gh_data.c (gh_scm2ulong, gh_scm2long, gh_scm2int), socket.c
12842 (scm_fill_sockaddr), unif.c (scm_array_set_x), validate.h
12843 (SCM_NUM2ULONG, SCM_NUM2LONG, SCM_NUM2LONG_DEF,
12844 SCM_NUM2LONG_LONG): Don't pass argument positions as pointers.
12845
12846 * filesys.c (scm_open_fdes, scm_open), net_db (scm_inet_ntoa,
12847 scm_inet_netof, scm_lnaof, scm_gethost, scm_getproto), posix.c
12848 (scm_utime), ramap.c (scm_array_fill_int), scmsigs.c
12849 (scm_sigaction), socket.c (scm_htonl, scm_ntohl, scm_sendto),
12850 stime.c (scm_localtime, scm_gmtime), struct.c (scm_struct_set_x),
12851 validate.h (SCM_VALIDATE_LONG_COPY): Whitespace fixes.
12852
89d04205
NJ
128532001-04-09 Neil Jerram <neil@ossau.uklinux.net>
12854
12855 * strings.c (scm_read_only_string_p): Update docstring to reflect
12856 current (non-)usage of "read only" strings.
40f83c3e
NJ
12857 (scm_make_shared_substring): Clarify docstring by changing
12858 "semantics" to "arguments".
89d04205 12859
4d66be54
MG
128602001-04-06 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12861
12862 * hooks.c (scm_make_hook, scm_make_hook_with_name),
12863 (scm_hook_p, scm_hook_empty_p, scm_run_hook): Docstring
12864 improvements.
12865
1e6808ea
MG
128662001-04-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12867
12868 The following changes make the documentation more consistent.
1c938eb8 12869
1e6808ea
MG
12870 * rdelim.c (scm_write_line), posix.c (scm_utime), ports.c
12871 (scm_seek), net_db.c (scm_inet_aton, scm_inet_ntoa),
12872 (scm_inet_netof, scm_lnaof, scm_inet_makeaddr), ioext.c
12873 (scm_ftell): Changed @smalllisp ... @end smalllisp to @lisp
12874 ... @end lisp.
12875
12876 * vports.c (scm_make_soft_port), version.c (scm_version), unif.c
12877 (scm_array_dimensions, scm_make_shared_array),
12878 (scm_transpose_array, scm_enclose_array, scm_bit_count_star),
12879 throw.c (scm_catch), struct.c (scm_make_vtable_vtable), strop.c
12880 (scm_string_rindex, scm_string_index, scm_substring_fill_x),
12881 (scm_string_null_p), strings.c (scm_read_only_string_p), root.c
12882 (scm_call_with_dynamic_root), ramap.c (scm_array_index_map_x),
12883 posix.c (scm_mknod), numbers.c (scm_logtest, scm_logbit_p),
12884 macros.c (scm_makmmacro), list.c (scm_append), environments.c
12885 (scm_environment_fold), dynwind.c (s_scm_dynamic_wind): Changed
12886 @example ... @end example to @lisp ... @end lisp.
12887
12888 * weaks.c (scm_weak_vector): Corrected docstring.
12889
12890 * hashtab.c (scm_hashq_ref, scm_hashq_set_x, scm_hashq_remove_x),
12891 (scm_hashv_ref, scm_hashv_set_x, scm_hashv_remove_x),
12892 (scm_hash_ref, scm_hash_set_x, scm_hash_remove_x, scm_hashx_ref),
12893 (scm_hashx_set_x, scm_hashx_get_handle),
12894 (scm_hashx_create_handle_x), regex-posix.c (scm_make_regexp),
12895 (scm_regexp_exec, scm_regexp_p), numbers.c (scm_logtest),
12896 vectors.c (scm_vector_fill_x), strings.c
12897 (scm_make_shared_substring), symbols.c (scm_string_to_symbol),
12898 objprop.c (scm_set_object_properties_x):
12899 (scm_set_object_property_x), throw.c (scm_catch, scm_lazy_catch),
12900 strports.c (scm_call_with_input_string), ports.c
12901 (scm_truncate_file), ioext.c (scm_ftell), ports.c (scm_seek),
12902 list.c (scm_append_x), dynwind.c (scm_dynamic_wind), error.c
12903 (scm_error_scm), vports.c (scm_make_soft_port), weaks.c
12904 (scm_make_weak_vector,scm_weak_vector_p),
12905 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table),
12906 (scm_make_doubly_weak_hash_table, scm_weak_key_hash_table_p),
12907 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
12908 macros.c (scm_macro_type), dynl.c (scm_dynamic_link),
12909 (scm_dynamic_unlink, scm_dynamic_call, scm_dynamic_args_call):
12910 Made parameter names match documentation by renaming parameters
12911 and/or fixing docstrings.
1c938eb8 12912
1e6808ea
MG
12913 * numbers.c (scm_ash): Corrected Texinfo markup.
12914
12915 * strop.c (scm_string_index, scm_string_rindex),
12916 (scm_substring_fill_x, scm_string_null_p): Removed `qdocs'.
12917
12918 * vports.c (scm_make_soft_port), unif.c
12919 (scm_uniform_vector_length, scm_array_p, scm_array_rank),
12920 (scm_dimensions_to_uniform_array, scm_transpose_array),
12921 (scm_array_in_bounds_p, scm_uniform_vector_ref),
12922 (scm_bit_count, scm_bit_position, scm_bit_count_star),
12923 (scm_array_to_list, scm_list_to_uniform_array),
12924 (scm_array_prototype, symbols.c (scm_string_to_symbol), strports.c
12925 (scm_open_input_string, scm_open_output_string),
12926 (scm_get_output_string), strop.c (scm_string_copy),
12927 (scm_string_fill_x), strings.c (scm_string_p, scm_string), stime.c
12928 (scm_get_internal_real_time, scm_times),
12929 (scm_get_internal_run_time, scm_current_time, scm_gettimeofday),
12930 (scm_localtime, scm_gmtime), socket.c (scm_htons, scm_ntohs),
12931 (scm_htonl, scm_ntohl, scm_socket, scm_socketpair),
12932 (scm_getsockopt, scm_getsockname, scm_getpeername, scm_recvfrom),
12933 simpos.c (scm_system), random.c (scm_random_uniform),
12934 (scm_random_normal, scm_random_exp), ramap.c
12935 (scm_array_equal_p), posix.c (scm_pipe, scm_getgroups),
12936 (scm_status_exit_val, scm_status_term_sig, scm_status_stop_sig),
12937 (scm_getppid, scm_getuid, scm_getgid, scm_geteuid, scm_getegid),
12938 (scm_getpgrp, scm_ttyname, scm_ctermid, scm_tcgetpgrp, scm_uname),
12939 (scm_environ, scm_tmpnam, scm_mkstemp, scm_access, scm_getpid),
12940 (scm_setlocale), ports.c (scm_char_ready_p, scm_drain_input),
12941 (scm_pt_size, scm_pt_member, scm_port_revealed, scm_port_mode),
12942 (scm_close_port, scm_input_port_p, scm_output_port_p, scm_port_p),
12943 (scm_port_closed_p, scm_eof_object_p, scm_read_char),
12944 (scm_peek_char), pairs.c (scm_pair_p, scm_cons), numbers.c
12945 (scm_logand, scm_logior, scm_logxor, scm_lognot),
12946 (scm_integer_expt, scm_bit_extract, scm_logcount),
12947 (scm_integer_length, scm_string_to_number, scm_inexact_to_exact),
12948 net_db.c (scm_inet_netof, scm_lnaof), modules.c
12949 (scm_interaction_environment), macros.c (scm_makacro),
12950 (scm_makmacro, scm_makmmacro), keywords.c (scm_keyword_p), ioext.c
12951 (scm_ftell, scm_dup_to_fdes, scm_fileno, scm_isatty_p),
12952 (scm_fdopen, scm_fdes_to_ports), gc.c (scm_gc_stats), fluids.c
12953 (scm_fluid_ref), filesys.c (scm_open_fdes),
12954 (scm_stat, scm_directory_stream_p, scm_getcwd, scm_readlink):
12955 Docstring correction: `Returns' -> `Return'
12956
1c938eb8
TTN
12957 * gc.c (scm_set_debug_cell_accesses_x):
12958 (s_scm_gc_set_debug_check_freelist_x):
1e6808ea
MG
12959 * fluids.c (scm_fluid_p): Added texinfo markup.
12960
12961 * error.c (scm_strerror): Made docstring more precise.
12962
12963 * vectors.c (scm_vector_p, scm_vector, scm_make_vector),
12964 (scm_vector_to_list, _scm_vector_fill_x), symbols.c
12965 (scm_symbol_p, scm_symbol_to_string), strorder.c
12966 (scm_string_equal_p, scm_string_ci_equal_p, scm_string_less_p),
12967 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p),
12968 (scm_string_ci_less_p, scm_string_ci_leq_p, scm_string_ci_gr_p):
12969 (scm_string_ci_geq_p), strop.c (scm_string_copy),
12970 (scm_string_fill_x): Removed `(r5rs)' from docstrings.
12971
9a6976cd
DH
129722001-04-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
12973
12974 * gc.c (MARK): Re-introduce a cheap sanity test for non debug
12975 mode, as suggested by Michael Livshin.
12976
463b2219
ML
129772001-03-31 Michael Livshin <mlivshin@bigfoot.com>
12978
12979 * backtrace.c (display_backtrace_body): since the `print_state'
12980 variable is not used (instead its data field is used directly as
12981 `pstate'), protect it from the hungry compiler optimizations.
12982 thanks to Bill Schottstaedt for the report.
12983
61045190
DH
129842001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
12985
12986 * gc.[ch] (scm_tc16_allocated): New type tag for allocated cells.
12987 It is only defined and used if guile is compiled with
12988 SCM_DEBUG_CELL_ACCESSES set to true. It's purpose is, to never
12989 let cells with a free_cell type tag be visible outside of the
12990 garbage collector when in debug mode.
12991
12992 * gc.c (scm_debug_cell_accesses_p): Set to true as default.
12993
12994 (scm_assert_cell_valid): Use a local static variable to avoid
12995 recursion.
12996
12997 (MARK): Only check for rogue cell pointers in debug mode. Use
12998 scm_cellp for this purpose and place all checks for rogue pointers
12999 into that function. Further, since due to conservative scanning
13000 we may encounter free cells during marking, don't use the standard
13001 cell type accessor macro to determine the cell type.
13002
13003 (scm_cellp): Check if the cell pointer actually points into a
13004 card header.
13005
13006 (scm_init_gc): Initalize scm_tc16_allocated.
13007
13008 * gc.h (GCH): Renamed to SCM_GC_H.
13009
13010 (SCM_VALIDATE_CELL): Enclose the expression in brackets. This
13011 might be unnecessary, but I feel better this way :-)
13012
13013 (SCM_GC_CELL_TYPE): New macro.
13014
13015 (SCM_SETAND_CDR, SCM_SETOR_CDR): Deprecated. These are not used
13016 in guile, and it is unlikely that they will be applied to real
13017 pairs anyway.
13018
13019 (SCM_SET_FREE_CELL_TYPE): Removed. It was not used.
13020
13021 (SCM_GC_SET_ALLOCATED): New macro. Only non-empty if guile is
13022 compiled with SCM_DEBUG_CELL_ACCESSES set to true.
13023
13024 (SCM_NEWCELL, SCM_NEWCELL2): Use of SCM_GC_SET_ALLOCATED will
13025 make sure that in debug mode no free cell will ever be visible
13026 outside of the garbage collector.
13027
85d6df6a
DH
130282001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
13029
13030 * async.c (scm_asyncs_pending): Don't use != to compare SCM
13031 values.
13032
13033 * async.c (scm_system_async), variable.c (scm_make_variable,
13034 scm_make_undefined_variable): Use scm_cons to create a pair.
13035
13036 * debug.c (scm_reverse_lookup): Perform proper type checking.
13037 Remove suspicious use of SCM_SLOPPY_CONSP.
13038
13039 * eq.c (scm_equal_p), tags.h (SCM_ECONSP): Use SCM_CONSP instead
13040 of SCM_SLOPPY_CONSP. A sane compiler should be able to perform
13041 the corresponding optimization.
13042
13043 * eval.c (iqq): Use proper type check.
13044
13045 (scm_m_expand_body): Remove redundant type checks.
13046
13047 (promise_print): Don't access promise cells as pairs.
13048
13049 * eval.c (EVALCAR, iqq, scm_m_expand_body, scm_eval_args,
13050 scm_deval_args SCM_CEVAL), guardians.c (scm_guard), hashtab.c
13051 (scm_internal_hash_fold), print.c (scm_iprlist): Use !SCM_CELLP
13052 for SCM_NCELLP, !SCM_CONSP for SCM_NCONSP, !SCM_IMP for SCM_NIMP,
13053 !SCM_FALSEP for SCM_NFALSEP, !SCM_NULLP for SCM_NNULLP
13054
13055 * eval.c (scm_m_define, scm_macroexp, SCM_CEVAL), print.c
13056 (scm_iprin1): Use new macro predicate and accessors.
13057
13058 * eval.h (scm_tc16_macro): Removed declaration. It is declared
13059 in macros.h.
13060
13061 * eval.h (EVALH), macros.h (MACROSH), ports.h (PORTSH), procs.h
13062 (PROCSH), tags.h (TAGSH), variable.h (VARIABLEH): Renamed to
13063 SCM_EVAL_H, SCM_MACROS_H, SCM_PORTS_H, SCM_PROCS_H, SCM_TAGS_H and
13064 SCM_VARIABLE_H. Even the macros that are used to inhibit
13065 including a header file twice should be in the SCM_ namespace.
13066
13067 * fluids.c (scm_swap_fluids, scm_swap_fluids_reverse),
13068 properties.c (scm_primitive_property_ref,
13069 scm_primitive_property_del_x): Prefer stronger predicates like
13070 SCM_NULLP or SCM_FALSEP over SCM_IMP.
13071
13072 * gc.c (MARK): Use proper macros to access procedure-with-setter
13073 cell elements and closure cell elements.
13074
13075 (gc_sweep_freelist_finish, scm_gc_sweep, init_heap_seg): Don't
13076 access free cells as pairs.
13077
13078 (scm_unprotect_object): scm_hashq_get_handle returns #f if
13079 no hashtab entry is found.
13080
13081 * gc.c (scm_gc_sweep), ports.c (scm_close_port): Use new macro
13082 SCM_CLR_PORT_OPEN_FLAG.
13083
13084 * guardians.c (TCONC_IN), print.c (scm_free_print_state): Don't
13085 use SCM_SET_C[AD]R for uninitialized cells.
13086
13087 * hashtab.c (scm_hash_fn_get_handle): Use SCM_VALIDATE_VECTOR.
13088 If the hashtable has no slots, return #f instead of '(). This
13089 unifies the return value with most assoc-functions.
13090
13091 (scm_hash_fn_ref): Use proper type check.
13092
13093 (scm_hashq_get_handle, scm_hashv_get_handle, scm_hash_get_handle):
13094 Removed references to non-existing functions from documentation.
13095
13096 * keywords.c (scm_keyword_dash_symbol): Use proper macros to
13097 access keyword cell elements.
13098
13099 * macros.h (SCM_MACROP, SCM_MACRO_TYPE, SCM_MACRO_CODE): New
13100 macros.
13101
13102 * ports.h (SCM_CLR_PORT_OPEN_FLAG): New macro.
13103
13104 * print.c (scm_iprlist): Added comment. Improved loop
13105 conditions.
13106
13107 * procs.h (SCM_ENV, SCM_SETENV): Don't access closure cells as
13108 pairs.
13109
13110 * smob.c (scm_markcdr): Don't access smob cells as pairs.
13111
13112 * tags.h (SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP): Deprecated.
13113
13114 * throw.c (ACTIVATEJB, DEACTIVATEJB): Don't access jump buffer
13115 cells as pairs.
13116
13117 * variable.c (variable_print, variable_equalp, scm_variable_ref,
13118 scm_variable_set_x): Use proper macros to access variable cell
13119 elements.
13120
13121 (scm_variable_bound_p): Don't use SCM_NEGATE_BOOL.
13122
13123 * variable.h (SCM_VARVCELL): Don't access variable cells as
13124 pairs.
13125
13126 * vectors.c (scm_vector), weaks.c (scm_weak_vector): Simplified,
13127 added FIXME comment, removed register specifier.
13128
1b27e91a
KN
131292001-03-29 Keisuke Nishida <kxn30@po.cwru.edu>
13130
13131 * goops.c, goops.h (scm_init_oop_goops_goopscore_module): Deprecated.
13132 * init.c (scm_init_guile_1): Don't init goopscore module.
13133
16c634ec
MV
131342001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
13135
13136 * eval.c (SCM_APPLY): Check that arg1 is bound for scm_tc7_cxr.
13137
91344ceb
MG
131382001-03-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13139
13140 * strop.c (scm_string_to_list): Fixed docstring markup.
13141 (scm_string_upcase_x, scm_string_upcase, scm_string_downcase_x),
13142 (scm_string_downcase, scm_string_capitalize_x),
13143 (scm_string_capitalize): Rewrote and corrected docstrings.
13144 (scm_string_ci_to_symbol): Made docstring more explicit.
13145
07576812
MV
131462001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
13147
13148 * values.h (scm_values_vtable, SCM_VALUESP): Moved here so that
13149 eval.c can use it.
13150 (scm_call_with_values): Removed.
13151 * values.c (values_vtable, scm_values_vtable): Added "scm_" prefix
13152 so that it can be exported.
13153 (scm_call_with_values): Removed.
1c938eb8 13154
07576812
MV
13155 * tags.h (SCM_IM_CALL_WITH_VALUES): New isym.
13156 * eval.c: Include "libguile/values.h"
13157 (scm_m_at_call_with_values, scm_sym_at_call_with_values):
13158 New.
13159 (unmemocopy, scm_ceval, scm_deval): Handle new isym.
13160 * eval.h (scm_sym_at_call_with_values, scm_m_at_call_with_values):
13161 New delcarations to support above change.
13162
13163 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Fix syntax
13164 errors with last change.
1c938eb8 13165
07576812
MV
131662001-03-25 Marius Vollmer <mvo@zagadka.ping.de>
13167
13168 * eval.c (scm_primitive_eval_x, scm_primitive_eval, scm_i_eval_x,
13169 scm_i_eval): Moved the application of the system transformer from
13170 scm_i_eval to scm_primitive_eval.
13171
a17bb5fd
NJ
131722001-03-23 Neil Jerram <neil@ossau.uklinux.net>
13173
a6be01a4
NJ
13174 * guile-snarf.awk.in: Substitute "\\" with "\" in .doc output.
13175
a17bb5fd
NJ
13176 * strop.c (scm_string_index): Fix docstring line break
13177 regression.
13178
13179 * list.c (scm_cons_star): Fix docstring typo.
13180
be54b15d
DH
131812001-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
13182
13183 * gc.c (scm_init_storage), gdbint.c (scm_init_gdbint), numbers.c
13184 (big2str), ports.c (scm_drain_input), read.c (scm_read,
13185 scm_grow_tok_buf), strings.c (scm_string, scm_makfromstr,
13186 scm_make_string, scm_string_append), strports.c (st_resize_port,
13187 scm_object_to_string), unif.c (scm_make_uve): Replace calls to
13188 scm_makstr with calls to scm_allocate_string.
13189
13190 * strings.[ch] (scm_allocate_string): New function.
13191
13192 * strings.[ch] (scm_makstr): Deprecated.
13193
789ecc05
GH
131942001-03-18 Gary Houston <ghouston@arglist.com>
13195
6d163216
GH
13196 * posix.c (scm_tmpnam): check that return value from tmpnam is not
13197 NULL. rewrote the docstring.
13198 (scm_mkstemp): new procedure implementing "mkstemp!".
13199 * posix.h: declare scm_mkstemp.
13200
789ecc05
GH
13201 * net_db.c: declare h_errno if configure didn't define HAVE_H_ERRNO.
13202 normally it would be found in netdb.h.
13203
c6c79933
GH
132042001-03-17 Gary Houston <ghouston@arglist.com>
13205
e9e225e5
GH
13206 * sort.c (scm_sort): move sortvec variable to avoid a compiler
13207 warning when HAVE_ARRAYS is not defined. move len too.
13208
13209 * Makefile.am (DOT_X_FILES): remove net_db.x, posix.x, socket.x.
13210 (EXTRA_DOT_X_FILES): let configure set the value.
13211 (DOT_DOC_FILES): remove net_db.doc, posix.doc, socket.doc.
13212
c6c79933
GH
13213 * gc.c (scm_must_malloc): changed the comment explaining when
13214 scm_must variants of malloc/free etc., should be used, based on
13215 explanation from Dirk Herrmann.
13216 * fports.c (scm_fport_buffer_add): use FUNC_NAME instead of a local
13217 string with procedure name. use scm_must_malloc instead of malloc.
13218 (scm_setvbuf, scm_fdes_to_port, fport_close): use scm_must variants
13219 of malloc/free.
13220 * ports.c (scm_add_to_port_table, scm_remove_from_port_table,
13221 scm_ungetc): use scm_must variants of malloc/realloc/free.
13222 (scm_add_to_port_table, scm_ungetc): define FUNC_NAME.
13223
b3fcac34
DH
132242001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13225
13226 * __scm.h (SCM_ASSERT, SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
13227 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Don't call scm_wta, call
13228 scm_wrong_type_arg instead.
13229
13230 (SCM_WNA): Deprecated.
13231
13232 * error.[ch] (scm_wta): Deprecated.
13233
13234 * numbers.c (s_i_log): Minor comment fix.
13235
13236 * read.c (scm_lreadr), unif.c (scm_aind, scm_shap2ra,
13237 scm_make_shared_array, scm_transpose_array, scm_enclose_array,
13238 scm_array_in_bounds_p): Don't use SCM_ASSERT to check for
13239 wrong-num-args or misc errors.
13240
13241 * unif.c (scm_make_shared_array, scm_transpose_array,
13242 scm_enclose_array, scm_array_in_bounds_p, scm_array_set_x):
13243 Validate the rest argument (note: this is only done when guile is
13244 built with SCM_DEBUG_REST_ARGUMENT=1)
13245
13246 (scm_array_in_bounds_p, scm_uniform_vector_ref, scm_array_set_x):
13247 Replace calls to scm_wrong_num_args by SCM_WRONG_NUM_ARGS.
13248
13249 * validate.h (SCM_FUNC_NAME, SCM_VALIDATE_NUMBER_COPY,
13250 SCM_VALIDATE_NUMBER_DEF_COPY): Deprecated.
13251
68baa7e7
DH
132522001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13253
13254 * validate.h (SCM_WRONG_NUM_ARGS): Call scm_error_num_args_subr
13255 instead of scm_wrong_num_args.
13256
13257 * coop-threads.c: Don't include libguile/strings.h. (Was only
13258 needed for former implementation of SCM_WRONG_NUM_ARGS.)
13259
13260 * debug.c (scm_m_start_stack): Don't use SCM_ASSERT to check for
13261 wrong-num-args errors.
13262
9f40cd87
DH
132632001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13264
13265 * error.[ch] (scm_error_num_args_subr): New function.
13266
5352393c
MG
132672001-03-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13268
13269 * list.c (scm_list, scm_cons_star, scm_null_p, scm_list_p),
13270 (scm_length, scm_append, scm_reverse, scm_list_ref),
13271 (scm_memq, scm_memv, scm_member, scm_delv_x, scm_delete_x),
13272 (scm_delq, scm_delv, scm_delete, scm_delq1_x, scm_delv1_x),
13273 (scm_delete1_x), gc.c (scm_map_free_list),
13274 (scm_free_list_length), hash.c (scm_hashq, scm_hashv),
13275 (scm_hash), hashtab.c (scm_hashq_ref, scm_hashq_set_x),
13276 (scm_hashq_remove_x, scm_hashv_ref, scm_hashv_set_x),
13277 (scm_hashv_remove_x, scm_hash_ref, scm_hash_set_x),
13278 (scm_hash_remove_x), ports.c (scm_pt_size, scm_pt_member), print.c
13279 (scm_current_pstate), scmsigs.c (scm_usleep), goops.c
13280 (scm_get_keyword, scm_sys_compute_slots): Added texinfo markup.
13281
13282 * weaks.c (scm_weak_vector_p, scm_weak_key_hash_table_p),
13283 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
13284 rdelim.c (scm_read_delimited_x), strop.c (scm_string_index),
13285 symbols.c (scm_symbol_interned_p), numbers.c
13286 (scm_string_to_number), ports.c (scm_port_p): Corrected texinfo
13287 markup.
13288
a9205f07
KN
132892001-03-16 Keisuke Nishida <kxn30@po.cwru.edu>
13290
13291 * snarf.h (SCM_CONST_LONG): Deprecated.
13292 * tag.c (CONST_INUM): New macro. Use it to define scm_utag_*.
13293
6d583887
MV
132942001-03-15 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13295
13296 * numbers.c (scm_num2ulong): Check that a bignum is positive
13297 before looking at the magnitude. Correctly check for overflow
13298 during conversion.
13299 (scm_num2long_long): Likewise.
13300 (scm_num2ulong_long): New.
13301 (ULONG_LONG_MAX): Define if not already defined.
13302 * numbers.h: (scm_num2ulong_long): New prototype.
1c938eb8 13303
e87a03fc
MG
133042001-03-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13305
13306 * validate.h (SCM_VALIDATE_OPOUTSTRPORT): New macro.
13307
13308 * strports.h (SCM_STRPORTP, SCM_OPSTRPORTP, SCM_OPINSTRPORTP),
13309 (SCM_OPOUTSTRPORTP): New predicate macros.
13310 (scm_open_input_string, scm_open_output_string),
13311 (scm_get_output_string): New prototypes.
1c938eb8 13312
e87a03fc
MG
13313 * strports.c (scm_open_input_string, scm_open_output_string),
13314 (scm_get_output_string): New procedures (SRFI-6 compliant).
13315 Made scm_tc16_strport non-static.
13316
160bb34a
DH
133172001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
13318
13319 * macros.h (SCM_ASSYNT): Removed unused object argument from
13320 signature.
13321
13322 * eval.c (scm_m_body, scm_m_quote, scm_m_begin, scm_m_if,
13323 scm_m_set_x, scm_m_and, scm_m_or, scm_m_case, scm_m_cond,
13324 scm_m_letstar, scm_m_do, scm_m_quasiquote, scm_m_delay,
13325 scm_m_define, scm_m_letrec1, scm_m_letrec, scm_m_let, scm_m_apply,
13326 scm_m_cont, scm_m_nil_cond, scm_m_nil_ify, scm_m_t_ify,
13327 scm_m_0_cond, scm_m_0_ify, scm_m_1_ify, scm_m_atfop, scm_m_atbind,
13328 scm_m_expand_body), evalext.c (scm_m_generalized_set_x,
13329 scm_m_undefine), goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
13330 scm_m_atdispatch): Removed unused object argument from call to
13331 SCM_ASSYNT.
13332
80dee77b
DH
133332001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
13334
13335 * gh.h/gh_data.c (gh_ints2scm): Changed the signature to use a
13336 const int* to reflect that the input array of integers remains
13337 unchanged. Thanks to Brett Viren for the hint.
13338
d3dd80ab
MG
133392001-03-14 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13340
13341 * gh_data.c (gh_scm2chars, gh_scm2shorts, gh_scm2longs),
13342 (gh_scm2floats, gh_scm2doubles): Check for malloc() returning NULL
13343 in various places.
13344 (gh_scm2newstr, gh_symbol2newstr): Change call to
13345 scm_must_malloc() to malloc(), because user-free()able memory is
13346 allocated.
13347
13348 * gc.c: Added declaration of `scm_debug_check_freelist'.
13349
26a3038d
MG
133502001-03-13 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13351
13352 * ports.c (scm_port_mode): Changed `mode' array size to 4.
13353
1f3908c4
KN
133542001-03-12 Keisuke Nishida <kxn30@po.cwru.edu>
13355
13356 * strports.c (scm_object_to_string): New procedure.
13357 (scm_strprint_obj): Deprecated.
13358 * strports.h: Reflect the changes.
13359
e11208ca
DH
133602001-03-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
13361
13362 * goops.h (SCM_VALIDATE_PUREGENERIC): New macro.
13363
13364 * goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
13365 scm_m_atdispatch): Provide definitions for FUNC_NAME. Don't use
13366 SCM_ASSYNT to check for correct argument types. Either use some
13367 SCM_VALIDATE_* macro or an explicit test.
13368
13369 (scm_make_foreign_object): Don't use SCM_ASSERT to check for
13370 misc-errors.
13371
13372 * macros.h (SCM_ASSYNT): On assertion failure, issue a misc-error
13373 instead of calling scm_wta.
13374
67e8151b
MG
133752001-03-12 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13376
13377 * load.c (scm_primitive_load, scm_primitive_load_path),
13378 (scm_sys_search_load_path): Corrected docstrings (file ->
13379 filename).
13380
13381 * eval.c (scm_force): Added texinfo markup to docstring.
13382 (scm_promise_p): Renamed parameter to `obj' to match docstring.
13383
13384 * debug-malloc.c: Reinserted #include <stdio.h>.
13385
e0c08f17
KN
133862001-03-11 Keisuke Nishida <kxn30@po.cwru.edu>
13387
e39c3de4
KN
13388 * list.c (s_scm_reverse_x): Use SCM_VALIDATE_LIST.
13389
e0c08f17
KN
13390 * environments.c, error.c, eval.c, filesys.c, hashtab.c, load.c,
13391 net_db.c, procprop.c, read.c, scmsigs.c, socket.c, struct.c:
13392 Use SCM_LISTn instead of scm_listify.
13393
e6e2e95a
MD
133942001-03-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13395
13396 * _scm.h: Removed #include <errno.h>.
13397
13398 * error.c, net_db.c, putenv.c, stime.c: Removed declaration of
13399 errno variable (can be a macro on some systems, for example when
13400 using linux libc with threads).
13401
13402 * error.c, filesys.c, gc.c, ioext.c, iselect.c, net_db.c, ports.c,
13403 posix.c, print.c, putenv.c, scmsigs.c, script.c, simpos.c, smob.c,
13404 socket.c, srcprop.c, stime.c, strop.c, unif.c, vports.c: Added
13405 #include <errno.h> in these 20 out of 100 files.
1c938eb8 13406
97d0e20b
GH
134072001-03-10 Gary Houston <ghouston@arglist.com>
13408
13409 * socket.c: add a definition of SUN_LEN (from glibc) for when it's
13410 not already defined.
13411
e75341b3
MD
134122001-03-09 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13413
13414 * coop.c: Inserted #include <stdio.h>.
13415
13416 * iselect.c: Reinserted #include <stdio.h>.
13417
74355186
MV
134182001-03-10 Marius Vollmer <mvo@zagadka.ping.de>
13419
13420 * posix.c: Replaced `#define' of __USE_XOPEN right before
13421 including unistd.h with a define of _GNU_SOURCE at the very top of
13422 the file.
13423
783e7774
KN
134242001-03-09 Keisuke Nishida <kxn30@po.cwru.edu>
13425
13426 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
13427 continuations.c, debug-malloc.c, debug.c, dynwind.c, eq.c, eval.c,
13428 feature.c, filesys.h, gc_os_dep.c, gh_data.c, gh_eval.c,
13429 gh_funcs.c, gh_io.c, gh_list.c, gh_predicates.c, hash.c,
13430 hashtab.c, iselect.c, keywords.c, list.c, load.c, mallocs.c,
13431 net_db.c, numbers.c, objprop.c, objprop.h, options.c, pairs.c,
13432 print.c, procprop.c, procs.c, properties.c, ramap.c,
13433 regex-posix.c, root.c, scmsigs.c, simpos.c, socket.c, srcprop.c,
13434 stackchk.c, stacks.c, strings.c, strop.c, strorder.c, struct.c,
13435 symbols.c, tag.c, threads.c, variable.c, vectors.c, weaks.c:
1c938eb8 13436 Remove #include <stdio.h>
783e7774
KN
13437 * gc.c, gdbint.c, root.c, sort.c, unif.c: Add #include <string.h>.
13438
13439 * procs.c (scm_make_subr_opt): Init symcell to avoid warning.
13440
9a677c37
MG
134412001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13442
13443 * posix.c (scm_gethostname): Set initial name length to 256 for
13444 Solaris.
13445
94e6d793
MG
134462001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13447
13448 * posix.h (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
13449 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
13450 (scm_sethostname, scm_gethostname): New prototypes.
13451
13452 * posix.c: Added inclusion of <crypt.h>, <sys/resource.h> and
13453 <sys/file.h>, if present.
13454 (scm_init_posix): [PRIO_PROCESS, PRIO_PGRP, PRIO_USER, LOCK_SH,
13455 LOCK_EX, LOCK_UN, LOCK_NB]: New variables.
13456 (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
13457 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
13458 (scm_sethostname, scm_gethostname): New procedures.
13459
650a1cf9
NJ
134602001-03-08 Neil Jerram <neil@ossau.uklinux.net>
13461
13462 * ports.c (scm_port_column): Docstring fixes: (i) port-line arg is
13463 not optional (ii) "recommend" spelling correction.
13464
9636b49c
MD
134652001-03-08 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13466
5e4a4d09
MD
13467 * ramap.c (racp): Removed optimization which caused array copying
13468 to fail if the two arrays shared storage. Re-inserted the IVDEP
13469 macros removed in the change of 2000-03-09. (Don't really have a
13470 complete grasp of what they are for, but they seem to be necessary
13471 on Crays. This needs testing!) Thanks to Miroslav Silovic.
13472
9636b49c
MD
13473 * hash.c (scm_string_hash): Don't downcase characters.
13474
04a4d666
MD
134752001-03-07 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13476
9636b49c 13477 * symbols.c (scm_symbols_prehistory): Changed symbol hash table
04a4d666
MD
13478 size from 277 --> 1009.
13479
13480 * symbols.c, symbols.h (scm_sys_symbols): New function GUILE_DEBUG
13481 function.
13482
13483 * coop-threads.c: Fixed change of 2001-03-06.
1c938eb8 13484
04a4d666
MD
13485 * validate.h: Code formatting.
13486
66418d34
KN
134872001-03-07 Keisuke Nishida <kxn30@po.cwru.edu>
13488
13489 * Makefile.am (*.x): Add dependency on snarf.h and guile-doc-snarf.in.
13490 (*.doc): Add dependency on guile-snarf.awk.in.
13491
13492 * guile-snarf.awk.in: Neglect spaces at the end of
13493 SCM_SNARF_DOCSTRING_END. Skip lines "# NN ..." in the
13494 middle of docstrings. (To avoid the problem with gcc-2.96.)
13495
2ade72d7
DH
134962001-03-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
13497
13498 * coop-threads.c (scm_call_with_new_thread), load.c
13499 (scm_primitive_load, scm_sys_search_load_path), random.c
13500 (scm_c_default_rstate), struct.c (scm_make_struct_layout,
13501 scm_struct_ref, scm_struct_set_x): Don't use SCM_ASSERT to
13502 (potentially) issue a scm-misc-error or wrong-num-args error
13503 message.
13504
13505 * load.c (scm_search_path): Use SCM_ASSERT_TYPE to give details
13506 about the expected type with the wrong-type-arg error message.
13507
13508 * smob.c (scm_make_smob): Abort on misuse of smob - it indicates
13509 a C level bug that can't be fixed from scheme anyway.
13510
586d7da2
MD
135112001-03-05 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13512
13513 * eval.c (scm_m_letstar): Removed check for duplicate bindings.
13514 Duplicate bindings are OK in a let* since a let* is semantically
13515 equivalent to a nested set of let:s.
13516
1dd05fd8
MG
135172001-03-05 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13518
13519 * print.c (scm_print_options): Fixed texinfo in docstring.
13520
13521 * net_db.c (scm_getserv, scm_getproto, scm_getnet): Return #f if
13522 the underlying functions getservent, getprotoent or getnetent
13523 return NULL instead of signalling an error.
13524
439006bf
GH
135252001-03-04 Gary Houston <ghouston@arglist.com>
13526
13527 * socket.c (scm_fill_sockaddr): don't allow buffer overflows when
13528 taking an unexpectedly large filename for an AF_UNIX socket from
13529 bind/connect/sendto (thanks to Martin Grabmueller).
1c938eb8 13530
439006bf
GH
13531 * socket.c (scm_sock_fd_to_port, SCM_SOCK_FD_TO_PORT): removed the
13532 former and adjusted the latter.
13533 (scm_socket, scm_socketpair): cosmetic changes.
13534 (scm_getsockopt, scm_setsockopt): declare optlen as int, not
13535 size_t as socklen_t substitute. don't restrict args/return values
13536 to INUM: allow full range of int or size_t.
13537 (scm_fill_sockaddr): check arguments before allocating memory, to
13538 avoid leakage. use malloc, not scm_must_malloc.
13539 (scm_connect, scm_bind, scm_sendto): use int, not size_t as socklen_t
13540 substitute. free the sockaddr structure before throwing an error.
13541 (scm_init_add_buffer): procedure removed, together with its static
13542 buffer scm_addr_buffer, which wouldn't be thread safe. instead,
13543 define a macro MAX_ADDR_SIZE and declare the buffer where needed.
13544 (scm_accept, scm_getpeername, scm_getsockname, scm_recvfrom,
13545 scm_sendto): use a local buffer instead of scm_addr_buffer.
13546 adjust for new SCM_SOCK_FD_TO_PORT. use int for address size,
13547 not size_t.
13548 (scm_recvfrom): set addr->sa_family to AF_UNSPEC before the recvfrom
13549 call to detect whether recvfrom could be bothered to set the address.
13550 (scm_init_socket): don't call scm_init_addr_buffer.
13551
276dd677
DH
135522001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
13553
13554 * debug.c (scm_procedure_source, scm_procedure_environment),
13555 print.c (scm_get_print_state), ramap.c (scm_array_fill_int,
13556 scm_array_index_map_x), sort.c (scm_sort_x, scm_sort,
13557 scm_stable_sort_x, scm_stable_sort), stacks.c (scm_make_stack,
13558 scm_last_stack_frame), symbols.c (scm_sym2vcell, scm_sym2ovcell),
13559 unif.c (scm_list_to_uniform_array, scm_uniform_vector_length,
13560 scm_transpose_array, scm_enclose_array, scm_array_in_bounds_p,
13561 scm_uniform_vector_ref, scm_array_set_x, scm_uniform_array_read_x,
13562 scm_uniform_array_write, scm_bit_set_star_x, scm_bit_count_star,
13563 scm_array_to_list, scm_array_prototype), validate.h
13564 (SCM_VALIDATE_NUMBER_COPY): Don't call function scm_wta, call
13565 scm_misc_error or scm_wrong_type_arg instead.
13566
13567 * validate.h (SCM_WTA, RETURN_SCM_WTA): Deprecated.
13568
5e03762c
MD
135692001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13570
13571 * goops.c, goops.h (scm_sys_pre_expand_closure_x): Removed.
13572 (scm_sys_tag_body): Added.
13573
db4b4ca6
DH
135742001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
13575
13576 * continuations.c (continuation_apply), eval.c (scm_m_lambda,
13577 scm_m_letstar, scm_m_letrec1, scm_m_let, SCM_APPLY), eval.h
13578 (SCM_EVALIM2), evalext.c (scm_m_generalized_set_x), gc.c
13579 (get_bvec, MARK), goops.c (scm_primitive_generic_generic),
13580 options.c (scm_options), ports.c (scm_remove_from_port_table),
13581 ramap.c (scm_ramapc), read.c (skip_scsh_block_comment, scm_lreadr,
13582 scm_lreadparen, scm_lreadrecparen), script.c (script_get_octal,
13583 script_get_backslash, script_read_arg), unif.c (scm_cvref): Don't
13584 call function scm_wta, call scm_misc_error or scm_wrong_type_arg
13585 instead.
13586
87e7741d
MD
135872001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13588
13589 * goops.c (scm_sys_pre_expand_closure_x): New procedure.
13590
d19b0aac
MV
135912001-03-04 Marius Vollmer <mvo@zagadka.ping.de>
13592
13593 * eval.c (scm_s_duplicate_bindings): New error message.
13594 (scm_m_letrec1, scm_m_letstar): Check for duplicate bindings.
13595
2fd945df
MV
135962001-03-03 Marius Vollmer <mvo@zagadka.ping.de>
13597
13598 * eval.h (SCM_EVALIM2): New macro. Use it when a
13599 immediate, literal constant should be evaluated.
13600 * eval.c (scm_s_duplicate_formals): New error message string.
13601 (scm_c_improper_memq): New function.
13602 (scm_m_lambda): Check for duplicate arguments.
13603 (scm_ceval, scm_deval): When executing a body: only cons a new
13604 toplevel environment frame when it is different from the
13605 existing one; use EVALCAR instead of SIDEVAL so that we can properly
13606 check for empty combinations; use SCM_EVALIM2 for the same reason
13607 in the non-toplevel loop.
13608 (nontoplevel_cdrxnoap, nontoplevel_cdrxbegin, nontoplevel_begin):
13609 New labels with the meaning of their non-"nontoplevel" partners,
13610 but they are used when it is known that the body is not evaluated at
13611 top-level.
13612 (scm_apply, scm_dapply): use SCM_EVALIM2 to get proper error
13613 reporting for empty combinations.
13614
9e6fc585
KN
136152001-03-02 Keisuke Nishida <kxn30@po.cwru.edu>
13616
13617 * Remove dump facilities.
13618 * dump.c, dump.h: Removed.
13619 * Makefile.am: Remove dump.c, dump.h, dump.x, dump.doc.
13620 * init.c: Remove #include "libguile/dump.h".
13621 (scm_init_guile_1): Remove scm_init_dump.
13622 * smob.h (scm_smob_descriptor): Remove slots: dump, undump.
13623 (scm_set_smob_dump, scm_set_smob_undump): Remove declaration.
13624 * smob.c (scm_make_smob_type): Remove initialization: dump, undump.
13625 (scm_set_smob_dump, scm_set_smob_undump): Removed.
13626
13627 * keywords.c: Remove #include "libguile/dump.h".
13628 (keyword_dump, keyword_undump): Removed.
13629 (scm_init_keywords): Remove scm_set_smob_dump and scm_set_smob_undump.
13630
eae54bf0
MG
136312001-03-02 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13632
13633 * vectors.c (s_scm_vector_p, list->vector, scm_vector)
13634 (scm_vector_ref, scm_vector_set_x, scm_vector_to_list)
13635 (scm_vector_fill_x), strorder.c (scm_string_equal_p)
13636 (scm_string_ci_equal_p, scm_string_less_p, scm_string_leq_p)
13637 (scm_string_gr_p, scm_string_geq_p, scm_string_ci_less_p)
13638 (scm_string_ci_geq_p), symbols.c (scm_symbol_p)
13639 (scm_symbol_to_string, scm_string_to_symbol): Changed use of @t{}
13640 to @code{} as the texinfo manual recommends, converted the
13641 examples to use a @lisp{}-environment.
13642
13643 * strports.c (scm_eval_string): Cleaned up the docstring.
13644
13645 * struct.c (scm_struct_p, scm_struct_vtable_p): Added texinfo
13646 markup.
13647
13648 * numbers.c (scm_exact_p, scm_odd_p, scm_even_p)
13649 (scm_number_to_string, scm_string_to_number, scm_number_p)
13650 (scm_real_p, scm_integer_p, scm_inexact_p, scm_make_rectangular)
13651 (scm_make_polar, scm_inexact_to_exact): Added texinfo markup.
13652 (scm_ash): Added texinfo markup and removed obsolete @refill.
13653 (scm_gr_p): Corrected comment.
13654 (scm_gr_p, scm_leq_p, scm_geq_p): Added texinfo markup to (future
13655 docstring) comments.
13656 (scm_positive_p, scm_less_p, scm_num_eq_p, scm_real_p)
13657 (scm_number_p, scm_negative_p, scm_max, scm_min, scm_sum)
13658 (scm_difference, scm_product, scm_divide, scm_asinh, scm_acosh)
13659 (scm_atanh, scm_truncate, scm_round, scm_exact_to_inexact)
13660 (floor, ceiling, $sqrt, $abs, $exp, $log, $sin, $cos, $tan, $asin)
13661 ($acos, $atan, $sinh, $cosh, $tanh, scm_real_part, scm_imag_part)
13662 (scm_magnitude, scm_angle, scm_abs, scm_quotient, scm_remainder)
13663 (scm_modulo, scm_gcd, scm_lcm): Added (future docstring) comments.
13664
23deee81
DH
136652001-02-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
13666
13667 * __scm.h (SCM_ASSERT_TYPE): Add missing macro parameter.
13668 (Obviously nobody compiles with SCM_RECKLESS defined...)
13669
13670 * validate.h (SCM_ASSERT_RANGE): Use the argument number.
13671
6fe692e9
MD
136722001-02-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13673
13674 * ports.c, ports.h (scm_c_read, scm_c_write): New functions.
13675
13676 * ports.h (SCM_READ_BUFFER_EMPTY_P): New macro.
13677
27c37006
NJ
136782001-02-24 Neil Jerram <neil@ossau.uklinux.net>
13679
13680 * numbers.c (scm_two_doubles, scm_sys_expt, scm_sys_atan2,
13681 scm_make_polar): Rename arguments `z1' and `z2' to `x' and `y',
13682 since use of `z' suggests that the arguments may be complex.
13683
13684 * goops.c (scm_make), numbers.c (scm_sys_expt): Fix docstring
13685 typos.
13686
2069af38
NJ
136872001-02-23 Neil Jerram <neil@ossau.uklinux.net>
13688
13689 * dump.c (scm_binary_write, scm_binary_read), eval.c
13690 (scm_primitive_eval), guardians.c (scm_guardian_destroyed_p,
13691 scm_guardian_greedy_p, scm_make_guardian), fports.c
13692 (scm_file_port_p): Minor docstring fixes.
13693
b42ff180
MV
136942001-02-22 Marius Vollmer <mvo@zagadka.ping.de>
13695
2069af38 13696 * load.c (load): Use scm_primitive_eval_x instead of scm_i_eval_x.
97ea55f8
MV
13697
13698 * goops.c (scm_add_method, DEFVAR): Use scm_eval instead of
13699 scm_i_eval.
13700 (make_class_from_template): Do not bother to set the current
13701 module around the call to DEFVAR, scm_eval takes care of that.
13702 (scm_init_goops): Make scm_module_goops and
13703 scm_goops_lookup_closure permanent objects.
1c938eb8 13704
97ea55f8
MV
13705 * eval.c (scm_ceval, scm_deval): When evaluating expressions on
13706 top level, create a fresh top-level environment for each
13707 expression instead of mutating the exisint frame. This is
13708 important when that frame is closed over.
13709
b42ff180
MV
13710 * numbers.c (s_scm_logior) [SCM_DIGSTOOBIG]: Also use
13711 SCM_DIGSPERLONG instead of DIGSPERLONG.
13712
09f2ab1e
MV
137132001-02-21 Marius Vollmer <mvo@zagadka.ping.de>
13714
13715 * eval.c (scm_ceval, scm_deval): Check for wrong number of args
13716 before applying arrow procedure in `cond' and before applying
13717 receiver procedure in call-with-current-continuation.
13718 (scm_i_eval): Do not invoke scm_copy_tree in argument in SCM_XEVAL
13719 macro. The argument is expanded more than one time.
13720
13721 * numbers.c (scm_logior) [SCM_DIGSTOOBIG]: Correctly use
13722 SCM_BIGDIG instead of BIGDIG. Thanks to Steven G. Johnson!
13723
137242001-02-20 Marius Vollmer <mvo@zagadka.ping.de>
13725
13726 * guile-doc-snarf.in, guile-func-name-check.in: Added copyright
13727 notice and license.
13728
7090240c
MG
137292001-02-17 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13730
13731 * variable.c (scm_make_variable, scm_make_undefined_variable)
13732 (scm_variable_ref, scm_variable_set_x, scm_builtin_variable)
13733 (scm_variable_bound_p), values.c (scm_values)
13734 (scm_call_with_values), unif.c (scm_bit_count)
13735 (scm_bit_set_star_x), symbols.c (scm_gentemp)
13736 (scm_gensym), strings.c (scm_string_p, scm_make_string)
13737 (scm_read_only_string_p, scm_string_length, scm_string_ref)
13738 (scm_string_set_x, scm_substring, scm_string_append), stime.c
13739 (scm_strptime, scm_mktime), random.c (scm_seed_to_random_state)
13740 (scm_copy_random_state, scm_random), print.c (scm_newline)
13741 (scm_write_char, scm_simple_format), debug-malloc.c
13742 (scm_malloc_stats), environments.c (scm_environment_p)
13743 (scm_environment_bound_p, scm_environment_ref)
13744 (scm_environment_fold, scm_environment_define)
13745 (scm_environment_undefine, scm_environment_set_x)
13746 (scm_environment_cell, scm_environment_observe)
13747 (scm_environment_observe_weak, scm_environment_unobserve)
13748 (scm_make_eval_environment, scm_eval_environment_p)
13749 (scm_eval_environment_set_local_x, scm_eval_environment_local)
13750 (scm_eval_environment_imported)
13751 (scm_eval_environment_set_imported_x, scm_make_import_environment)
13752 (scm_import_environment_p, scm_import_environment_imports)
13753 (scm_import_environment_set_imports_x, scm_make_export_environment)
13754 (scm_export_environment_p, scm_export_environment_private)
13755 (scm_export_environment_set_private_x)
13756 (scm_export_environment_signature)
13757 (scm_export_environment_set_signature_x, scm_leaf_environment_p):
13758 Added texinfo markup.
13759
13760 * ports.c (scm_drain_input): Lowercased argument to @var.
13761 (scm_current_input_port, scm_current_output_port): Filled in
13762 missing explanation.
13763 (scm_current_load_port, scm_set_current_output_port)
13764 (scm_set_current_error_port, scm_port_line, scm_set_port_line_x):
13765 Added texinfo markup.
13766
13767 * arbiters.c (scm_make_arbiter, scm_try_arbiter)
13768 (scm_release_arbiter): Added texinfo markup to docstrings.
13769 Changed `Returns' to `Return'.
13770 (arbiter_print): Changed SCM_CDR to SCM_SMOB_DATA.
13771
25703850
NJ
137722001-02-16 Neil Jerram <neil@ossau.uklinux.net>
13773
13774 * guile-snarf.awk.in: Quote any `@'s that occur in Scheme names,
13775 by doubling them to `@@'.
13776
73c0fdce
MG
137772001-02-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13778
13779 * numbers.c (scm_lognot), random.c (scm_random,
13780 scm_random_normal, scm_random_solid_sphere_x,
13781 scm_random_hollow_sphere_x, scm_random_normal_vector_x,
13782 scm_random_exp), dynwind.c
13783 (scm_dynamic_wind): Removed unnecessary "" from docstrings.
1c938eb8 13784
73c0fdce
MG
13785 * goops.c (scm_sys_initialize_object, scm_instance_p,
13786 scm_class_name, scm_class_precedence_list, scm_class_slots,
13787 scm_class_environment, scm_generic_function_name,
13788 scm_generic_function_methods, scm_method_generic_function,
13789 scm_method_specializers, scm_method_procedure, scm_make_unbound,
13790 scm_unbound_p, scm_assert_bound, scm_at_assert_bound_ref,
13791 scm_sys_fast_slot_ref, scm_sys_fast_slot_set_x, scm_slot_ref,
13792 scm_slot_set_x, _scm_slot_bound_p, scm_slots_exists_p,
13793 scm_sys_allocate_instance, scm_make, scm_pure_generic_p,
13794 scm_class_direct_supers, scm_class_direct_slots,
13795 scm_class_direct_subclasses, scm_class_direct_methods,
13796 scm_accessor_method_slot_definition, scm_sys_goops_loaded),
13797 debug.c (scm_with_traps, scm_memoized_p, scm_make_gloc,
13798 scm_gloc_p, scm_make_iloc, scm_iloc_p, scm_memcons,
13799 scm_mem_to_proc, scm_proc_to_mem, scm_unmemoize,
13800 scm_memoized_environment, scm_procedure_name,
13801 scm_procedure_source, scm_procedure_environment, scm_debug_hang),
13802 objects.c
13803 (scm_class_of, scm_entity_p, scm_operator_p,
13804 scm_set_object_procedure_x, scm_object_procedure,
13805 scm_make_class_object), hooks.c (scm_make_hook_with_name,
13806 scm_make_hook, scm_hook_p, scm_hook_empty_p, scm_add_hook_x,
13807 scm_remove_hook_x, scm_reset_hook_x, scm_run_hook,
13808 scm_hook_to_list), lang.c
13809 (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null, scm_nil_eq),
13810 numbers.c (scm_sys_expt, scm_sys_atan2), print.c
13811 (scm_print_options, scm_port_with_print_state,
13812 scm_get_print_state), procs.c (scm_make_cclo, scm_procedure_p,
13813 scm_closure_p, scm_thunk_p, scm_procedure_with_setter_p,
13814 scm_make_procedure_with_setter, scm_procedure), throw.c
13815 (scm_lazy_catch), modules.c (scm_standard_eval_closure), load.c
13816 (scm_parse_path, scm_search_path), stacks.c (scm_make_stack,
13817 scm_stack_ref, scm_stack_length, scm_frame_p,
13818 scm_last_stack_frame, scm_frame_number, scm_frame_source,
13819 scm_frame_procedure, scm_frame_arguments, scm_frame_previous,
13820 scm_frame_next, scm_frame_real_p, scm_frame_procedure_p,
13821 scm_frame_evaluating_args_p, scm_frame_overflow_p), filesys.c
13822 (scm_dirname, scm_basename), dynwind.c
13823 (scm_wind_chain), read.c (scm_read_options, scm_read,
13824 scm_read_hash_extend), gc.c
13825 (scm_unhash_name), eval.c (scm_eval_options_interface,
13826 scm_evaluator_traps, s_scm_nconc2last), backtrace.c
13827 (scm_display_error, scm_set_print_params_x,
13828 scm_display_application, scm_display_backtrace, scm_backtrace),
13829 async.c (scm_async, scm_system_async, scm_async_mark,
13830 scm_system_async_mark, scm_run_asyncs, scm_noop,
13831 scm_set_tick_rate, scm_set_switch_rate, scm_unmask_signals,
13832 scm_mask_signals): Added docstrings.
13833
e228a203
KN
138342001-02-15 Keisuke Nishida <kxn30@po.cwru.edu>
13835
13836 * dump.c (scm_undump): Use SCM_CARLOC/SCM_CDRLOC to obtain the
13837 address of car/cdr. (Thanks to Dirk Herrmann)
13838 Use scm_sizet to obtain the length of strings.
13839 (Thanks to Matthias Koeppe)
13840
1552a59d
MV
138412001-02-15 Marius Vollmer <mvo@zagadka.ping.de>
13842
13843 * symbols.c (scm_mem2symbol): Put a empty statement after the
13844 next_symbol label. This is mandated by ANSI, appearantly.
13845
3178f751
MV
138462001-02-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13847
13848 * gc_os_dep.c: Do not include <linux/version.h>. It makes no
13849 sense to compile for a specific kernel version. Do not include
13850 <asm/signal.h> while defining __KERNEL__. This hack should no
13851 longer be needed and caused problems.
13852
7af4defe
MV
138532001-02-13 Marius Vollmer <mvo@zagadka.ping.de>
13854
13855 * eval.c (scm_ceval, scm_deval): use `SIDEVAL' instead of
13856 SCM_CEVAL when evaluating subforms of `begin' forms. SCM_CEVAL
13857 can not deal with immediates.
13858
5d6bb349
KN
138592001-02-12 Keisuke Nishida <kxn30@po.cwru.edu>
13860
13861 * list.c (scm_list_copy): Validate the first argument.
13862
ec9709f0
MV
138632001-02-11 Marius Vollmer <mvo@zagadka.ping.de>
13864
13865 Fix evaluator so that top-level expressions are correctly
13866 evaluated with respect to the module system.
1c938eb8 13867
ec9709f0
MV
13868 * modules.h. modules.c (scm_current_module_lookup_closure): New
13869 function.
13870
13871 * eval.h (scm_primitive_eval, scm_primitive_eval_x): New
13872 prototypes.
13873 (scm_i_eval, scm_i_eval_x, scm_eval, scm_eval_x): Changed argument
13874 names to better reflect their meaning.
13875
13876 * eval.c (scm_ceval, scm_deval): Recognize when `begin' is being
13877 evaluated at top-level and synronize lookup closure before
13878 executing every subform.
13879 (scm_primitve_eval_x, scm_primitive_eval): New functions.
13880 (scm_eval_x, scm_eval): Reimplement in terms of
13881 scm_primitive_eval_x and scm_primitive_eval, respectively.
1c938eb8 13882
ec9709f0
MV
138832001-02-09 Marius Vollmer <mvo@zagadka.ping.de>
13884
13885 * macros.c (scm_macro_name, scm_macro_transformer): Use
13886 SCM_SMOB_DATA instead of SCM_CDR. Provided by Martin Grabmueller.
13887 Thanks!
13888
42417394
KN
138892001-02-10 Keisuke Nishida <kxn30@po.cwru.edu>
13890
13891 * dump.c (scm_store_bytes): Store data size before data.
13892 (scm_restore_bytes): Restore data size. Takes a pointer to size.
13893 * dump.h (scm_restore_bytes): Updated.
13894
bf942687
KN
138952001-02-09 Keisuke Nishida <kxn30@po.cwru.edu>
13896
13897 * dump.c: Use double cells for update schedule.
13898
1be4270a
KN
138992001-02-08 Keisuke Nishida <kxn30@po.cwru.edu>
13900
13901 * ports.c (scm_unread_char): Take an optional argument.
13902
548728ea
MV
139032001-02-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13904
13905 * modules.h (scm_selected_module, scm_current_module): Renamed
13906 scm_selected_module to scm_current_module to synchronize Scheme
13907 and C names.
13908 (scm_select_module, scm_set_current_module): Likewise. Changed
13909 all uses.
1c938eb8 13910
548728ea
MV
13911 * ports.c (scm_port_for_each): Make a snapshot of the port table
13912 before iterating over it. The table might change while the user
13913 code is running. With the snapshot, the user can depend on the
c5408bc3 13914 fact that each port that existed at the start of the iteration is
548728ea
MV
13915 encountered exactly once. (ice-9 popen) depends on this.
13916
cb0d8be2
DH
139172001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
13918
13919 * strings.h (SCM_STRING_MAX_LENGTH): New macro.
13920
13921 * strings.c (scm_makstr, scm_take_str, scm_make_string): Added
13922 range checking for the size parameter. Thanks to Martin
13923 Grabmueller for the hint.
13924
13925 (scm_makstr): Reordered string initialization to make interrupt
13926 deferring unnecessary.
13927
13928 * vectors.c (scm_make_vector): Fixed range checking.
13929
e382fdbe
DH
139302001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
13931
13932 * vectors.h (SCM_VECTOR_MAX_LENGTH): New macro.
13933
13934 * vectors.c (scm_make_vector, scm_c_make_vector): Improved the
13935 checking of the size parameter for type correctness and valid
13936 range. Thanks to Rob Browning for reporting the problem. Instead
13937 of deferring interrupts, scm_remember_upto_here_1 is used.
13938
bf8f0922
KN
139392001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
13940
13941 * dump.c (scm_store_cell_object, scm_restore_cell_object): Removed.
13942 (scm_dump_cell_update): Removed.
13943 (scm_dump_update): Renamed from scm_dump_object_update.
13944 (scm_restore_string, scm_restore_bytes, scm_restore_word): Takes
13945 a pointer instead of returning a value.
13946 * keywords.c (keyword_undump): Updated.
13947
914cceec
KN
139482001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
13949
13950 * dump.c, dump.h: Modified a lot.
5f17c66f 13951 (SCM_DUMP_COOKIE): Version 0.1
914cceec
KN
13952 (scm_dump_mark): Removed.
13953 (scm_restore_cell_object, scm_store_cell_object): New functions.
13954
13955 * smob.h (scm_smob_descriptor): Removed slots: dump_mark,
13956 dump_dealloc, dump_store, undump_alloc, undump_restore, undump_init.
13957 New slots: dump, undump.
13958 * smob.c (scm_make_smob_type, scm_set_smob_dump, scm_set_smob_undump):
13959 Updated.
13960
13961 * keywords.c (keyword_dump): Renamed from keyword_dealloc.
13962 (keyword_undump): Renamed from keyword_alloc.
13963 (scm_init_keywords): Set keyword_dump and keyword_undump.
13964
ecf470a2
ML
139652001-02-03 Michael Livshin <mlivshin@bigfoot.com>
13966
13967 * gc.c (DOUBLECELL_ALIGNED_P): new macro, a better-named analog of
13968 the deprecated SCM_DOUBLE_CELLP.
13969
13970 * tags.h (SCM_DOUBLE_CELLP): deprecated.
13971
03416a99
KN
139722001-02-02 Keisuke Nishida <kxn30@po.cwru.edu>
13973
13974 * dump.c, dump.h: New files.
13975 * Makefile.am: Added dump.c, dump.h, dump.x, dump.doc.
13976 * init.c: #include "libguile/dump.h".
13977 (scm_init_guile_1): Call scm_init_dump.
13978 * smob.h (scm_smob_descriptor): New slots: dump_mark,
13979 dump_dealloc, dump_store, undump_alloc, undump_restore,
13980 undump_init.
13981 * smob.c (scm_make_smob_type): Init the new slots.
13982 (scm_set_smob_dump, scm_set_smob_undump): New functions.
13983 * smob.h (scm_set_smob_dump, scm_set_smob_undump): Declared.
13984
13985 * keywords.c: #include "libguile/dump.h".
13986 (keyword_dealloc, keyword_alloc): New functions.
13987 (scm_init_keywords): Set smob_dump and smob_undump.
13988
00ffa0e7
KN
139892001-02-01 Keisuke Nishida <kxn30@po.cwru.edu>
13990
13991 * vectors.c (scm_c_make_vector): New function.
13992 * vectors.h (scm_c_make_vector): Declared.
13993 * eval.c (scm_copy_tree), filesys.c (scm_stat2scm), fluids.c
13994 (scm_make_initial_fluids, grow_fluids), gc.c (scm_init_storage),
13995 gh_data.c (gh_ints2scm, gh_doubles2scm): goops.c
13996 (scm_make_method_cache, scm_i_vector2list,
13997 scm_compute_applicable_methods, scm_sys_method_more_specific_p),
13998 init.c (start_stack), net_db.c (scm_gethost, scm_getnet,
13999 scm_getproto, scm_return_entry), posix.c (scm_getgroups,
14000 scm_getpwuid, scm_getgrgid, scm_uname), print.c (make_print_state,
14001 grow_ref_stack), regex-posix.c (scm_regexp_exec), scmsigs.c
14002 (scm_init_scmsigs), socket.c (scm_addr_vector, scm_addr_vector),
14003 stime.c (scm_times, filltime), unif.c (scm_make_uve), vectors.c
14004 (scm_vector, scm_make_vector): Use scm_c_make_vector.
14005
14006 * hashtab.c (scm_c_make_hash_table): New function.
14007 * hashtab.h (scm_c_make_hash_table): Declared.
14008 * environments.c (scm_make_leaf_environment,
14009 scm_make_eval_environment), gc.c (scm_init_storage),
14010 keywords.c (scm_init_keywords), symbols.c (scm_builtin_bindings):
14011 Use scm_c_make_hash_table.
14012
b8446ce8
MD
140132001-01-31 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
14014
14015 * unif.c (rapr1): Don't apply scm_uniform_vector_length on arrays.
14016
e3239868
DH
140172001-01-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
14018
14019 * struct.c (scm_make_vtable_vtable): Removed unnecessary "" from
14020 end of docstring.
14021
14022 * struct.c (scm_struct_set_x, scm_struct_vtable_tag,
14023 scm_struct_vtable_name, scm_set_struct_vtable_name_x), weaks.c
14024 (scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table,
14025 scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
14026 srcprop.c (scm_source_properties, scm_set_source_properties_x,
14027 scm_source_property, scm_set_source_property_x), sort.c
14028 (scm_sort_list_x, scm_restricted_vector_sort_x, scm_sorted_p,
14029 scm_merge, scm_merge_x, scm_sort_x, scm_sort, scm_stable_sort_x,
14030 scm_stable_sort, scm_sort_list_x, scm_sort_list): Added
14031 docstrings.
14032
41ee56dd
MD
140332001-01-29 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
14034
14035 * eval.c (SCM_APPLY): Check that primitives which take 1 arg
14036 really get that arg.
14037
b6311c08
KN
140382001-01-26 Keisuke Nishida <kxn30@po.cwru.edu>
14039
14040 * goops.c (s_scm_get_keyword): Bug fix.
14041
a49af0c0
DH
140422001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
14043
14044 The following patch was sent by Martin Grabmueller. It makes sure
14045 that in case of parameter errors the correct function name is
14046 shown, and that parameter types are only checked once.
14047
14048 * strop.c (string_copy, string_upcase_x, string_downcase_x,
14049 string_capitalize_x): New functions. Each one performs the core
14050 functionality of the corresponding scm_* function.
14051
14052 (scm_string_copy, scm_string_upcase_x, scm_string_upcase,
14053 scm_string_downcase_x, scm_string_downcase,
14054 scm_string_capitalize_x, scm_string_capitalize): Reduced to
14055 parameter checking wrappers of the above functions.
14056
13070bd3
DH
140572001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
14058
14059 * continuations.c, dynl.c, keywords.c, load.c: Include
14060 strings.h. Thanks to Bill Schottstaedt for the bug report.
14061
2f2b390c
DH
140622001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14063
14064 * backtrace.c (display_header): Make sure that line and column
14065 information is shown independent of whether the port the code was
14066 read from had an associated filename. Thanks to Martin
14067 Grabmueller for providing this patch.
14068
efa40607
DH
140692001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14070
14071 * fports.[ch] (scm_file_port_p): New primitive.
14072
a98bddfd
DH
140732001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14074
14075 * tags.h (scm_tc16_fport, scm_tc16_strport, scm_tc16_sfport):
14076 These are now defined in fports.c, strports.c and vports.c.
14077
14078 * fports.[ch] (scm_tc16_fport), strports.c (scm_tc16_strport),
14079 vports.c (scm_tc16_sfport): Made variables (were macros defined in
14080 tags.h).
14081
14082 fports.c (scm_make_fptob), strports.c (scm_make_stptob), vports.c
14083 (scm_make_sfptob): Made static. These return a type code now.
14084
14085 fports.c (scm_init_fports), strports.c (scm_init_strports),
14086 vports.c (scm_init_vports): Create the corresponding port types.
14087
14088 * fports.h (SCM_FPORTP, SCM_OPFPORTP, SCM_OPINFPORTP,
14089 SCM_OPOUTFPORTP): Redefined in terms of scm_tc16_fport.
14090
14091 * init.c (scm_init_guile_1): Make sure strports are initialized
14092 before gdbint.
14093
14094 * ports.[ch] (scm_make_port_type): Changed the return type to
14095 scm_bits_t.
14096
14097 * ports.c (scm_ports_prehistory): Don't create any port types
14098 here.
14099
14100 * posix.c (scm_ttyname): Use SCM_FPORTP instead of comparing
14101 against scm_tc16_fport directly.
14102
0419a528
DH
141032001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14104
14105 * srcprop.c (scm_set_source_property_x): Fix to handle
14106 (set-source-property! <obj> 'copy <datum>) correctly.
14107
6d36532c
GH
141082001-01-24 Gary Houston <ghouston@arglist.com>
14109
14110 * filesys.c (scm_link): docstring fix.
14111 * fports.h (scm_setfileno): obsolete declaration removed.
14112 * posix.c: bogus popen declaration removed.
14113
14114 * rdelim.c: new file, split from ioext.c.
14115 * rdelim.h: new file, split from ioext.h
14116 * Makefile.am: add rdelim.c and related files.
14117 * init.c: call scm_init_rdelim. include rdelim.h.
14118
3ba5a6c2
DH
141192001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
14120
14121 This patch was sent by Martin Grabmueller and makes sure that
14122 parameter errors are reported correctly by the lexicographic
14123 ordering predicates.
14124
14125 * strorder.c (string_less_p, string_ci_less_p): New functions.
14126
14127 (scm_string_less_p, scm_string_ci_less_p): Extracted the core
14128 functionality into string_less_p, string_ci_less_p respectively.
14129 The remaining code is just a wrapper to do the parameter
14130 checking.
14131
14132 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p): Check the
14133 parameters and call string_less_p instead of scm_string_less_p.
14134
14135 (scm_string_ci_leq_p, scm_string_ci_gr_p, scm_string_ci_geq_p):
14136 Check the parameters and call string_less_ci_p instead of
14137 scm_string_ci_less_p.
14138
e40a4095
DH
141392001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
14140
ed6a2db9
DH
14141 This patch modifies scm_display_error to perform parameter
14142 checking. Thanks to Neil Jerram for the bug report.
14143
e40a4095
DH
14144 * backtrace.[ch] (scm_i_display_error): New function.
14145
14146 * backtrace.c (scm_display_error): Added parameter check and
14147 extracted the core functionality into function
14148 scm_i_display_error.
14149
14150 * throw.c (handler_message): Call scm_i_display_error to display
14151 the error message.
14152
f1e06a96
MD
141532001-01-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
14154
14155 * eval.c (SCM_APPLY): Added # args check for application of
14156 procedures with arity 3. (Thanks to Anders Holst.)
14157
30ea841d
DH
141582001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
14159
14160 * filesys.h (SCM_DIR_FLAG_OPEN, SCM_DIR_OPEN_P): Added.
14161
14162 (SCM_OPDIRP): Deprecated.
14163
14164 * filesys.c (scm_opendir): Use SCM_DIR_FLAG_OPEN instead of
14165 SCM_OPN.
14166
14167 (scm_readdir, scm_rewinddir): Don't use SCM_VALIDATE_OPDIR.
14168 Instead, give an explicit error message in case the directory is
14169 closed.
14170
14171 (scm_closedir, scm_dir_print): Rewritten to use SCM_DIR_OPEN_P
14172 instead of SCM_OPENP and SCM_CLOSEDP.
14173
14174 * validate.h (SCM_VALIDATE_OPDIR): Deprecated.
14175
312ae976
DH
141762001-01-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
14177
14178 * eval.c (inner_eval, scm_eval): Move all real functionality into
14179 inner_eval. Avoid to copy the expression twice by inlining some
14180 code from scm_i_eval.
14181
4567ed78
DH
141822001-01-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
14183
14184 * eval.c (scm_m_case): The 'else' clause of a 'case' statement
14185 now has to be the last clause, as required by R5RS. Thanks to
14186 Martin Grabmueller for the patch.
14187
10288a09
GH
141882001-01-18 Gary Houston <ghouston@arglist.com>
14189
14190 * ioext.c: further simplify scm_read_string_x_partial by defining
14191 a macro SCM_EBLOCK.
14192
8f379a8f
DH
141932001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
14194
14195 * gh_data.c (gh_ints2scm): Simplified using SCM_FIXABLE.
14196
5c75b29f
DH
141972001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
14198
14199 * __scm.h: Added comment about architecture and compiler
14200 properties that are required by guile.
14201
14202 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
14203 SCM_MOST_NEGATIVE_FIXNUM): Moved to numbers.h.
14204
14205 (SCM_CHAR_BIT, SCM_LONG_BIT): Moved here from numbers.h.
14206
14207 * numbers.h (SCM_CHAR_BIT, SCM_LONG_BIT): Moved to __scm.h.
14208
14209 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
14210 SCM_MOST_NEGATIVE_FIXNUM): Moved here from __scm.h.
14211
ac0c002c
DH
142122001-01-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
14213
14214 * __scm.h (SCM_FIXNUM_BIT): Added. The name is chosen in analogy
14215 to the names in limits.h.
14216
14217 * numbers.c (abs_most_negative_fixnum): Added.
14218
14219 (scm_quotient, scm_remainder): Fixed the fixnum-min / (abs
14220 fixnum-min) special case.
14221
14222 (scm_big_and): Fix for negative first parameter.
14223
14224 (scm_bit_extract): Fix for fixnum paramters.
14225 Thanks to Rob Browning for the bug report.
14226
14227 (scm_init_numbers): Initialize abs_most_negative_fixnum.
14228
debe0dc2
DH
142292001-01-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
14230
14231 * symbols.c (scm_symbol_bound_p): Fixed comment.
14232 Thanks to Chris Cramer.
14233
8a39e3fc
DH
142342001-01-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
14235
14236 * smob.[ch] (scm_make_smob_type): Return type is scm_bits_t now.
14237 Thanks to Bill Schottstaedt.
14238
322ec19d
ML
142392001-01-11 Michael Livshin <mlivshin@bigfoot.com>
14240
9a5fa6e9 14241 from Matthias Köppe:
1c938eb8 14242
322ec19d
ML
14243 * objects.h (SCM_SET_ENTITY_SETTER): new macro. SCM_ENTITY_SETTER
14244 casts its result, so doesn't yield an lvalue per ANSI C.
14245
14246 * goops.c (s_scm_sys_set_object_setter_x): use
14247 SCM_SET_ENTITY_SETTER.
14248 (clear_method_cache): use SCM_SET_ENTITY_PROCEDURE.
14249
14250 * gc.h (SCM_GC_SET_CARD_BVEC): new macro. SCM_GC_CARD_BVEC casts
14251 its result, so doesn't yield an lvalue per ANSI C.
14252 (SCM_GC_SET_CARD_FLAGS): ditto for SCM_GC_GET_CARD_FLAGS.
14253 (SCM_GC_CLR_CARD_FLAGS): redefined in terms of
14254 SCM_GC_SET_CARD_FLAGS.
14255 (SCM_GC_SET_CARD_FLAG, SCM_GC_CLR_CARD_FLAGS): ditto.
14256
14257 * gc.c (INIT_CARD): use the explicit setter macro to set the bvec.
14258
60d02d09
GH
142592001-01-08 Gary Houston <ghouston@arglist.com>
14260
14261 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): new macro.
14262 * ioext.c (scm_read_string_x_partial, scm_read_delimited_x),
14263 socket.c (scm_recvfrom): use the new macro, plus minor docstring
14264 changes.
14265 * ioext.c (scm_read_string_x_partial): don't crash if -1 is supplied
14266 for fdes. if current input port is used, check that it's a file
14267 port.
14268
c2da2648
GH
142692001-01-06 Gary Houston <ghouston@arglist.com>
14270
14271 * ioext.c (scm_read_string_x_partial): new procedure, implements
14272 read-string!/partial.
14273 * ports.c (scm_take_from_input_buffers): new procedure used by
14274 scm_read_string_x_partial.
14275 (scm_drain_input): use scm_take_from_input_buffers.
14276
4651d663
MV
142772001-01-06 Marius Vollmer <mvo@zagadka.ping.de>
14278
14279 * validate.h (SCM_VALIDATE_NUMBER): New.
14280
c0a5d888
ML
142812001-01-03 Michael Livshin <mlivshin@bigfoot.com>
14282
14283 * guardians.c (F_GREEDY, F_LISTED, F_DESTROYED, GREEDY_P,
14284 SET_GREEDY, LISTED_P, SET_LISTED, CLR_LISTED, DESTROYED_P,
14285 SET_DESTROYED): new defines/macros.
14286 (GUARDIAN_LIVE, GUARDIAN_ZOMBIES, GUARDIAN_NEXT): deleted.
14287 (add_to_live_list): takes a `guardian_t *' now, not SCM.
14288 (guardian_print): print more info.
14289 (guardian_apply): check if the guardian is destroyed, and throw an
14290 error if so. take one more optional argument `throw_p'.
14291 (scm_guard): depending on the value of `throw_p', return a boolean
14292 result.
14293 (scm_get_one_zombie): remove redundant property test.
14294 (guardian_t): represent the various (currently 3, I hope nothing
14295 more gets added) boolean fields as bit flags.
14296 (scm_guardian_destroyed_p, scm_guardian_greedy_p): new predicates.
14297 (scm_destroy_guardian_x): new procedure.
14298
14299 * guardians.h: added prototypes for `scm_guardian_greedy_p' and
14300 `scm_guardian_destroyed_p'. changed prototype for `scm_guard'.
14301
0c6d2191
GH
143022001-01-01 Gary Houston <ghouston@arglist.com>
14303
14304 * fports.c (fport_write): bugfix: handle short writes for
14305 unbuffered ports too. optimize the buffered case by minimizing
14306 the number of write/flush calls.
14307 (write_all): new helper procedure.
14308
a51fe247 14309The ChangeLog continues in the file: "ChangeLog-2000"
d9f71a07
LC
14310
14311;; Local Variables:
14312;; coding: utf-8
14313;; End: